]> www.fi.muni.cz Git - evince.git/commitdiff
Synched with Xpdf 1.01
authorMartin Kretzschmar <mkretzschmar@src.gnome.org>
Wed, 18 Sep 2002 22:20:42 +0000 (22:20 +0000)
committerMartin Kretzschmar <mkretzschmar@src.gnome.org>
Wed, 18 Sep 2002 22:20:42 +0000 (22:20 +0000)
123 files changed:
pdf/goo/GHash.cc [new file with mode: 0644]
pdf/goo/GHash.h [new file with mode: 0644]
pdf/goo/GList.cc [new file with mode: 0644]
pdf/goo/GList.h [new file with mode: 0644]
pdf/goo/GString.cc
pdf/goo/GString.h
pdf/goo/Makefile.am
pdf/goo/gfile.cc
pdf/goo/gfile.h
pdf/goo/gmem.c
pdf/goo/gmem.h
pdf/goo/gmempp.cc
pdf/goo/gtypes.h
pdf/goo/parseargs.c
pdf/goo/parseargs.h
pdf/goo/vms_make.com
pdf/xpdf/Annot.cc [moved from pdf/xpdf/FormWidget.cc with 54% similarity]
pdf/xpdf/Annot.h [moved from pdf/xpdf/FormWidget.h with 55% similarity]
pdf/xpdf/Array.cc
pdf/xpdf/Array.h
pdf/xpdf/BuiltinFont.cc [new file with mode: 0644]
pdf/xpdf/BuiltinFont.h [new file with mode: 0644]
pdf/xpdf/BuiltinFontTables.cc [new file with mode: 0644]
pdf/xpdf/BuiltinFontTables.h [new file with mode: 0644]
pdf/xpdf/CMap.cc [new file with mode: 0644]
pdf/xpdf/CMap.h [new file with mode: 0644]
pdf/xpdf/CNS13CMapInfo.h [deleted file]
pdf/xpdf/Catalog.cc
pdf/xpdf/Catalog.h
pdf/xpdf/ChangeLog
pdf/xpdf/CharCodeToUnicode.cc [new file with mode: 0644]
pdf/xpdf/CharCodeToUnicode.h [new file with mode: 0644]
pdf/xpdf/CharTypes.h [new file with mode: 0644]
pdf/xpdf/CompactFontTables.h [moved from pdf/xpdf/CompactFontInfo.h with 99% similarity]
pdf/xpdf/Decrypt.cc
pdf/xpdf/Decrypt.h
pdf/xpdf/Dict.cc
pdf/xpdf/Dict.h
pdf/xpdf/DisplayFontTable.h [new file with mode: 0644]
pdf/xpdf/Error.cc
pdf/xpdf/Error.h
pdf/xpdf/ErrorCodes.h [new file with mode: 0644]
pdf/xpdf/FTFont.cc [new file with mode: 0644]
pdf/xpdf/FTFont.h [new file with mode: 0644]
pdf/xpdf/FontEncoding.cc [deleted file]
pdf/xpdf/FontEncoding.h [deleted file]
pdf/xpdf/FontEncodingTables.cc [new file with mode: 0644]
pdf/xpdf/FontEncodingTables.h [new file with mode: 0644]
pdf/xpdf/FontFile.cc
pdf/xpdf/FontFile.h
pdf/xpdf/FontInfo.h [deleted file]
pdf/xpdf/Function.cc [new file with mode: 0644]
pdf/xpdf/Function.h [new file with mode: 0644]
pdf/xpdf/GB12CMapInfo.h [deleted file]
pdf/xpdf/Gfx.cc
pdf/xpdf/Gfx.h
pdf/xpdf/GfxFont.cc
pdf/xpdf/GfxFont.h
pdf/xpdf/GfxState.cc
pdf/xpdf/GfxState.h
pdf/xpdf/GlobalParams.cc [new file with mode: 0644]
pdf/xpdf/GlobalParams.h [new file with mode: 0644]
pdf/xpdf/ImageOutputDev.cc
pdf/xpdf/ImageOutputDev.h
pdf/xpdf/LTKOutputDev.cc
pdf/xpdf/LTKOutputDev.h
pdf/xpdf/Lexer.cc
pdf/xpdf/Lexer.h
pdf/xpdf/Link.cc
pdf/xpdf/Link.h
pdf/xpdf/Makefile.am
pdf/xpdf/NameToCharCode.cc [new file with mode: 0644]
pdf/xpdf/NameToCharCode.h [new file with mode: 0644]
pdf/xpdf/NameToUnicodeTable.h [new file with mode: 0644]
pdf/xpdf/Object.cc
pdf/xpdf/Object.h
pdf/xpdf/OutputDev.cc
pdf/xpdf/OutputDev.h
pdf/xpdf/PBMOutputDev.cc
pdf/xpdf/PBMOutputDev.h
pdf/xpdf/PDFDoc.cc
pdf/xpdf/PDFDoc.h
pdf/xpdf/PSOutputDev.cc
pdf/xpdf/PSOutputDev.h
pdf/xpdf/PSTokenizer.cc [new file with mode: 0644]
pdf/xpdf/PSTokenizer.h [new file with mode: 0644]
pdf/xpdf/Page.cc
pdf/xpdf/Page.h
pdf/xpdf/Parser.cc
pdf/xpdf/Parser.h
pdf/xpdf/SFont.cc
pdf/xpdf/SFont.h
pdf/xpdf/Stream-CCITT.h
pdf/xpdf/Stream.cc
pdf/xpdf/Stream.h
pdf/xpdf/T1Font.cc
pdf/xpdf/T1Font.h
pdf/xpdf/TTFont.cc
pdf/xpdf/TTFont.h
pdf/xpdf/TextOutputDev.cc
pdf/xpdf/TextOutputDev.h
pdf/xpdf/UTF8.h [new file with mode: 0644]
pdf/xpdf/UnicodeMap.cc [new file with mode: 0644]
pdf/xpdf/UnicodeMap.h [new file with mode: 0644]
pdf/xpdf/UnicodeMapTables.h [new file with mode: 0644]
pdf/xpdf/XOutputDev.cc
pdf/xpdf/XOutputDev.h
pdf/xpdf/XRef.cc
pdf/xpdf/XRef.h
pdf/xpdf/gpdf.cc
pdf/xpdf/pdffonts.cc [new file with mode: 0644]
pdf/xpdf/pdfimages.cc
pdf/xpdf/pdfinfo.cc
pdf/xpdf/pdftopbm.cc
pdf/xpdf/pdftops.cc
pdf/xpdf/pdftotext.cc
pdf/xpdf/vms_make.com
pdf/xpdf/xpdf-flip.ltk
pdf/xpdf/xpdf-ltk.h
pdf/xpdf/xpdf-top.ltk
pdf/xpdf/xpdf.cc
pdf/xpdf/xpdf.ltk
pdf/xpdf/xpdfconfig.h

diff --git a/pdf/goo/GHash.cc b/pdf/goo/GHash.cc
new file mode 100644 (file)
index 0000000..dc09f71
--- /dev/null
@@ -0,0 +1,240 @@
+//========================================================================
+//
+// GHash.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include "gmem.h"
+#include "GString.h"
+#include "GHash.h"
+
+//------------------------------------------------------------------------
+
+struct GHashBucket {
+  GString *key;
+  void *val;
+  GHashBucket *next;
+};
+
+struct GHashIter {
+  int h;
+  GHashBucket *p;
+};
+
+//------------------------------------------------------------------------
+
+GHash::GHash(GBool deleteKeysA) {
+  int h;
+
+  deleteKeys = deleteKeysA;
+  size = 7;
+  tab = (GHashBucket **)gmalloc(size * sizeof(GHashBucket *));
+  for (h = 0; h < size; ++h) {
+    tab[h] = NULL;
+  }
+  len = 0;
+}
+
+GHash::~GHash() {
+  GHashBucket *p;
+  int h;
+
+  for (h = 0; h < size; ++h) {
+    while (tab[h]) {
+      p = tab[h];
+      tab[h] = p->next;
+      if (deleteKeys) {
+       delete p->key;
+      }
+      delete p;
+    }
+  }
+  gfree(tab);
+}
+
+void GHash::add(GString *key, void *val) {
+  GHashBucket **oldTab;
+  GHashBucket *p;
+  int oldSize, i, h;
+
+  // expand the table if necessary
+  if (len >= size) {
+    oldSize = size;
+    oldTab = tab;
+    size = 2*size + 1;
+    tab = (GHashBucket **)gmalloc(size * sizeof(GHashBucket *));
+    for (h = 0; h < size; ++h) {
+      tab[h] = NULL;
+    }
+    for (i = 0; i < oldSize; ++i) {
+      while (oldTab[i]) {
+       p = oldTab[i];
+       oldTab[i] = oldTab[i]->next;
+       h = hash(p->key);
+       p->next = tab[h];
+       tab[h] = p;
+      }
+    }
+    gfree(oldTab);
+  }
+
+  // add the new symbol
+  p = new GHashBucket;
+  p->key = key;
+  p->val = val;
+  h = hash(key);
+  p->next = tab[h];
+  tab[h] = p;
+  ++len;
+}
+
+void *GHash::lookup(GString *key) {
+  GHashBucket *p;
+  int h;
+
+  if (!(p = find(key, &h))) {
+    return NULL;
+  }
+  return p->val;
+}
+
+void *GHash::lookup(char *key) {
+  GHashBucket *p;
+  int h;
+
+  if (!(p = find(key, &h))) {
+    return NULL;
+  }
+  return p->val;
+}
+
+void *GHash::remove(GString *key) {
+  GHashBucket *p;
+  GHashBucket **q;
+  void *val;
+  int h;
+
+  if (!(p = find(key, &h))) {
+    return NULL;
+  }
+  q = &tab[h];
+  while (*q != p) {
+    q = &((*q)->next);
+  }
+  *q = p->next;
+  if (deleteKeys) {
+    delete p->key;
+  }
+  val = p->val;
+  delete p;
+  --len;
+  return val;
+}
+
+void *GHash::remove(char *key) {
+  GHashBucket *p;
+  GHashBucket **q;
+  void *val;
+  int h;
+
+  if (!(p = find(key, &h))) {
+    return NULL;
+  }
+  q = &tab[h];
+  while (*q != p) {
+    q = &((*q)->next);
+  }
+  *q = p->next;
+  if (deleteKeys) {
+    delete p->key;
+  }
+  val = p->val;
+  delete p;
+  --len;
+  return val;
+}
+
+void GHash::startIter(GHashIter **iter) {
+  *iter = new GHashIter;
+  (*iter)->h = -1;
+  (*iter)->p = NULL;
+}
+
+GBool GHash::getNext(GHashIter **iter, GString **key, void **val) {
+  if (!*iter) {
+    return gFalse;
+  }
+  if ((*iter)->p) {
+    (*iter)->p = (*iter)->p->next;
+  }
+  while (!(*iter)->p) {
+    if (++(*iter)->h == size) {
+      delete *iter;
+      *iter = NULL;
+      return gFalse;
+    }
+    (*iter)->p = tab[(*iter)->h];
+  }
+  *key = (*iter)->p->key;
+  *val = (*iter)->p->val;
+  return gTrue;
+}
+
+void GHash::killIter(GHashIter **iter) {
+  delete *iter;
+  *iter = NULL;
+}
+
+GHashBucket *GHash::find(GString *key, int *h) {
+  GHashBucket *p;
+
+  *h = hash(key);
+  for (p = tab[*h]; p; p = p->next) {
+    if (!p->key->cmp(key)) {
+      return p;
+    }
+  }
+  return NULL;
+}
+
+GHashBucket *GHash::find(char *key, int *h) {
+  GHashBucket *p;
+
+  *h = hash(key);
+  for (p = tab[*h]; p; p = p->next) {
+    if (!p->key->cmp(key)) {
+      return p;
+    }
+  }
+  return NULL;
+}
+
+int GHash::hash(GString *key) {
+  char *p;
+  unsigned int h;
+  int i;
+
+  h = 0;
+  for (p = key->getCString(), i = 0; i < key->getLength(); ++p, ++i) {
+    h = 17 * h + (int)(*p & 0xff);
+  }
+  return (int)(h % size);
+}
+
+int GHash::hash(char *key) {
+  char *p;
+  unsigned int h;
+
+  h = 0;
+  for (p = key; *p; ++p) {
+    h = 17 * h + (int)(*p & 0xff);
+  }
+  return (int)(h % size);
+}
diff --git a/pdf/goo/GHash.h b/pdf/goo/GHash.h
new file mode 100644 (file)
index 0000000..91d9700
--- /dev/null
@@ -0,0 +1,67 @@
+//========================================================================
+//
+// GHash.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef GHASH_H
+#define GHASH_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+
+class GString;
+struct GHashBucket;
+struct GHashIter;
+
+//------------------------------------------------------------------------
+
+class GHash {
+public:
+
+  GHash(GBool deleteKeysA = gFalse);
+  ~GHash();
+  void add(GString *key, void *val);
+  void *lookup(GString *key);
+  void *lookup(char *key);
+  void *remove(GString *key);
+  void *remove(char *key);
+  int getLength() { return len; }
+  void startIter(GHashIter **iter);
+  GBool getNext(GHashIter **iter, GString **key, void **val);
+  void killIter(GHashIter **iter);
+
+private:
+
+  GHashBucket *find(GString *key, int *h);
+  GHashBucket *find(char *key, int *h);
+  int hash(GString *key);
+  int hash(char *key);
+
+  GBool deleteKeys;            // set if key strings should be deleted
+  int size;                    // number of buckets
+  int len;                     // number of entries
+  GHashBucket **tab;
+};
+
+#define deleteGHash(hash, T)                       \
+  do {                                             \
+    GHash *_hash = (hash);                         \
+    {                                              \
+      GHashIter *_iter;                            \
+      GString *_key;                               \
+      void *_p;                                    \
+      _hash->startIter(&_iter);                    \
+      while (_hash->getNext(&_iter, &_key, &_p)) { \
+        delete (T*)_p;                             \
+      }                                            \
+      delete _hash;                                \
+    }                                              \
+  } while(0)
+
+#endif
diff --git a/pdf/goo/GList.cc b/pdf/goo/GList.cc
new file mode 100644 (file)
index 0000000..f52bc26
--- /dev/null
@@ -0,0 +1,91 @@
+//========================================================================
+//
+// GList.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <string.h>
+#include "gmem.h"
+#include "GList.h"
+
+//------------------------------------------------------------------------
+// GList
+//------------------------------------------------------------------------
+
+GList::GList() {
+  size = 8;
+  data = (void **)gmalloc(size * sizeof(void*));
+  length = 0;
+  inc = 0;
+}
+
+GList::GList(int sizeA) {
+  size = sizeA;
+  data = (void **)gmalloc(size * sizeof(void*));
+  length = 0;
+  inc = 0;
+}
+
+GList::~GList() {
+  gfree(data);
+}
+
+void GList::append(void *p) {
+  if (length >= size) {
+    expand();
+  }
+  data[length++] = p;
+}
+
+void GList::append(GList *list) {
+  int i;
+
+  while (length + list->length > size) {
+    expand();
+  }
+  for (i = 0; i < list->length; ++i) {
+    data[length++] = list->data[i];
+  }
+}
+
+void GList::insert(int i, void *p) {
+  if (length >= size) {
+    expand();
+  }
+  if (i < length) {
+    memmove(data+i+1, data+i, (length - i) * sizeof(void *));
+  }
+  data[i] = p;
+  ++length;
+}
+
+void *GList::del(int i) {
+  void *p;
+
+  p = data[i];
+  if (i < length - 1) {
+    memmove(data+i, data+i+1, (length - i - 1) * sizeof(void *));
+  }
+  --length;
+  if (size - length >= ((inc > 0) ? inc : size/2)) {
+    shrink();
+  }
+  return p;
+}
+
+void GList::expand() {
+  size += (inc > 0) ? inc : size;
+  data = (void **)grealloc(data, size * sizeof(void*));
+}
+
+void GList::shrink() {
+  size -= (inc > 0) ? inc : size/2;
+  data = (void **)grealloc(data, size * sizeof(void*));
+}
diff --git a/pdf/goo/GList.h b/pdf/goo/GList.h
new file mode 100644 (file)
index 0000000..0ef4fd7
--- /dev/null
@@ -0,0 +1,89 @@
+//========================================================================
+//
+// GList.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef GLIST_H
+#define GLIST_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+
+//------------------------------------------------------------------------
+// GList
+//------------------------------------------------------------------------
+
+class GList {
+public:
+
+  // Create an empty list.
+  GList();
+
+  // Create an empty list with space for <size1> elements.
+  GList(int sizeA);
+
+  // Destructor - does not free pointed-to objects.
+  ~GList();
+
+  //----- general
+
+  // Get the number of elements.
+  int getLength() { return length; }
+
+  //----- ordered list support
+
+  // Return the <i>th element.
+  // Assumes 0 <= i < length.
+  void *get(int i) { return data[i]; }
+
+  // Append an element to the end of the list.
+  void append(void *p);
+
+  // Append another list to the end of this one.
+  void append(GList *list);
+
+  // Insert an element at index <i>.
+  // Assumes 0 <= i <= length.
+  void insert(int i, void *p);
+
+  // Deletes and returns the element at index <i>.
+  // Assumes 0 <= i < length.
+  void *del(int i);
+
+  //----- control
+
+  // Set allocation increment to <inc>.  If inc > 0, that many
+  // elements will be allocated every time the list is expanded.
+  // If inc <= 0, the list will be doubled in size.
+  void setAllocIncr(int incA) { inc = incA; }
+
+private:
+
+  void expand();
+  void shrink();
+
+  void **data;                 // the list elements
+  int size;                    // size of data array
+  int length;                  // number of elements on list
+  int inc;                     // allocation increment
+};
+
+#define deleteGList(list, T)                        \
+  do {                                              \
+    GList *_list = (list);                          \
+    {                                               \
+      int _i;                                       \
+      for (_i = 0; _i < _list->getLength(); ++_i) { \
+        delete (T*)_list->get(_i);                  \
+      }                                             \
+      delete _list;                                 \
+    }                                               \
+  } while (0)
+
+#endif
index 7b8f271840752d8252cfcd355faccc7028881b25..3bf626aa41e99321d12da3c07b13e11b35daad7e 100644 (file)
@@ -4,7 +4,7 @@
 //
 // Simple variable-length string type.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -12,6 +12,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <string.h>
@@ -45,18 +46,25 @@ GString::GString() {
   s[0] = '\0';
 }
 
-GString::GString(const char *s1) {
-  int n = strlen(s1);
+GString::GString(const char *sA) {
+  int n = strlen(sA);
 
   s = NULL;
   resize(length = n);
-  memcpy(s, s1, n + 1);
+  memcpy(s, sA, n + 1);
 }
 
-GString::GString(const char *s1, int length1) {
+GString::GString(const char *sA, int lengthA) {
   s = NULL;
-  resize(length = length1);
-  memcpy(s, s1, length * sizeof(char));
+  resize(length = lengthA);
+  memcpy(s, sA, length * sizeof(char));
+  s[length] = '\0';
+}
+
+GString::GString(GString *str, int idx, int lengthA) {
+  s = NULL;
+  resize(length = lengthA);
+  memcpy(s, str->getCString() + idx, length);
   s[length] = '\0';
 }
 
@@ -137,10 +145,10 @@ GString *GString::append(const char *str) {
   return this;
 }
 
-GString *GString::append(const char *str, int length1) {
-  resize(length + length1);
-  memcpy(s + length, str, length1);
-  length += length1;
+GString *GString::append(const char *str, int lengthA) {
+  resize(length + lengthA);
+  memcpy(s + length, str, lengthA);
+  length += lengthA;
   s[length] = '\0';
   return this;
 }
@@ -180,14 +188,14 @@ GString *GString::insert(int i, const char *str) {
   return this;
 }
 
-GString *GString::insert(int i, const char *str, int length1) {
+GString *GString::insert(int i, const char *str, int lengthA) {
   int j;
 
-  resize(length + length1);
+  resize(length + lengthA);
   for (j = length; j >= i; --j)
-    s[j+length1] = s[j];
-  memcpy(s+i, str, length1);
-  length += length1;
+    s[j+lengthA] = s[j];
+  memcpy(s+i, str, lengthA);
+  length += lengthA;
   return this;
 }
 
index 4c3b95f347f5898674ba94b81296354ba7a96a2e..93796cb7901a9a15720943105d044874f546390c 100644 (file)
@@ -4,7 +4,7 @@
 //
 // Simple variable-length string type.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -24,11 +24,14 @@ public:
   GString();
 
   // Create a string from a C string.
-  GString(const char *s1);
+  GString(const char *sA);
 
-  // Create a string from <length1> chars at <s1>.  This string
+  // Create a string from <lengthA> chars at <sA>.  This string
   // can contain null characters.
-  GString (const char *s1, int length1);
+  GString(const char *sA, int lengthA);
+
+  // Create a string from <lengthA> chars at <idx> in <str>.
+  GString(GString *str, int idx, int lengthA);
 
   // Copy a string.
   GString(GString *str);
@@ -62,13 +65,13 @@ public:
   GString *append(char c);
   GString *append(GString *str);
   GString *append(const char *str);
-  GString *append(const char *str, int length1);
+  GString *append(const char *str, int lengthA);
 
   // Insert a character or string.
   GString *insert(int i, char c);
   GString *insert(int i, GString *str);
   GString *insert(int i, const char *str);
-  GString *insert(int i, const char *str, int length1);
+  GString *insert(int i, const char *str, int lengthA);
 
   // Delete a character or range of characters.
   GString *del(int i, int n = 1);
@@ -81,8 +84,8 @@ public:
   // These functions assume the strings do not contain null characters.
   int cmp(GString *str) { return strcmp(s, str->getCString()); }
   int cmpN(GString *str, int n) { return strncmp(s, str->getCString(), n); }
-  int cmp(const char *s1) { return strcmp(s, s1); }
-  int cmpN(const char *s1, int n) { return strncmp(s, s1, n); }
+  int cmp(const char *sA) { return strcmp(s, sA); }
+  int cmpN(const char *sA, int n) { return strncmp(s, sA, n); }
 
 private:
 
index a80aaef8a8b7ba5cd996f3a79f8270d0962d9164..ef84b8aef67e75e36a62c0df48a9b08be9a2c258 100644 (file)
@@ -1,6 +1,8 @@
 lib_LIBRARIES = libgoo.a
 
 libgoo_a_SOURCES =     \
+       GHash.cc        \
+       GList.cc        \
        GString.cc      \
        gmempp.cc       \
        gfile.cc        \
@@ -11,7 +13,7 @@ libgoo_a_SOURCES =    \
        gmem.h          \
        gtypes.h        \
        parseargs.h
-       
+
 EXTRA_DIST =           \
        vms_dirent.h    \
        vms_sys_dirent.h\
index 25fa1c9a57d402738eef3f15faba644ff74f1812..d6d2363e5134249d106ae815b8ebbaee477e30ac 100644 (file)
@@ -4,15 +4,18 @@
 //
 // Miscellaneous file and directory name manipulation.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
-extern "C" {
+#include <aconf.h>
+
 #ifdef WIN32
+   extern "C" {
 #  ifndef _MSC_VER
 #    include <kpathsea/win32lib.h>
 #  endif
+   }
 #else // !WIN32
 #  if defined(MACOS)
 #    include <sys/stat.h>
@@ -30,7 +33,6 @@ extern "C" {
 #    include <unixlib.h>
 #  endif
 #endif // WIN32
-}
 #include "GString.h"
 #include "gfile.h"
 
@@ -442,7 +444,26 @@ time_t getModTime(char *fileName) {
 }
 
 GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
-#if defined(VMS) || defined(__EMX__) || defined(WIN32) || defined(ACORN) || defined(MACOS)
+#if defined(WIN32)
+  //---------- Win32 ----------
+  char *s;
+  char buf[_MAX_PATH];
+  char *fp;
+
+  if (!(s = _tempnam(getenv("TEMP"), NULL))) {
+    return gFalse;
+  }
+  *name = new GString(s);
+  free(s);
+  if (ext) {
+    (*name)->append(ext);
+  }
+  if (!(*f = fopen((*name)->getCString(), mode))) {
+    delete (*name);
+    return gFalse;
+  }
+  return gTrue;
+#elif defined(VMS) || defined(__EMX__) || defined(ACORN) || defined(MACOS)
   //---------- non-Unix ----------
   char *s;
 
@@ -464,20 +485,26 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
   return gTrue;
 #else
   //---------- Unix ----------
-  char *s, *p;
+  char *s;
   int fd;
 
   if (ext) {
+#if HAVE_MKSTEMPS
+    if ((s = getenv("TMPDIR"))) {
+      *name = new GString(s);
+    } else {
+      *name = new GString("/tmp");
+    }
+    (*name)->append("/XXXXXX")->append(ext);
+    fd = mkstemps((*name)->getCString(), strlen(ext));
+#else
     if (!(s = tmpnam(NULL))) {
       return gFalse;
     }
     *name = new GString(s);
-    s = (*name)->getCString();
-    if ((p = strrchr(s, '.'))) {
-      (*name)->del(p - s, (*name)->getLength() - (p - s));
-    }
     (*name)->append(ext);
     fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600);
+#endif
   } else {
 #if HAVE_MKSTEMP
     if ((s = getenv("TMPDIR"))) {
@@ -503,11 +530,48 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
 #endif
 }
 
+GBool executeCommand(char *cmd) {
+#ifdef VMS
+  return system(cmd) ? gTrue : gFalse;
+#else
+  return system(cmd) ? gFalse : gTrue;
+#endif
+}
+
+char *getLine(char *buf, int size, FILE *f) {
+  int c, i;
+
+  i = 0;
+  while (i < size - 1) {
+    if ((c = fgetc(f)) == EOF) {
+      break;
+    }
+    buf[i++] = (char)c;
+    if (c == '\x0a') {
+      break;
+    }
+    if (c == '\x0d') {
+      c = fgetc(f);
+      if (c == '\x0a' && i < size - 1) {
+       buf[i++] = (char)c;
+      } else if (c != EOF) {
+       ungetc(c, f);
+      }
+      break;
+    }
+  }
+  buf[i] = '\0';
+  if (i == 0) {
+    return NULL;
+  }
+  return buf;
+}
+
 //------------------------------------------------------------------------
 // GDir and GDirEntry
 //------------------------------------------------------------------------
 
-GDirEntry::GDirEntry(char *dirPath, char *name1, GBool doStat) {
+GDirEntry::GDirEntry(char *dirPath, char *nameA, GBool doStat) {
 #ifdef VMS
   char *p;
 #elif defined(WIN32)
@@ -519,17 +583,17 @@ GDirEntry::GDirEntry(char *dirPath, char *name1, GBool doStat) {
   GString *s;
 #endif
 
-  name = new GString(name1);
+  name = new GString(nameA);
   dir = gFalse;
   if (doStat) {
 #ifdef VMS
-    if (!strcmp(name1, "-") ||
-       ((p = strrchr(name1, '.')) && !strncmp(p, ".DIR;", 5)))
+    if (!strcmp(nameA, "-") ||
+       ((p = strrchr(nameA, '.')) && !strncmp(p, ".DIR;", 5)))
       dir = gTrue;
 #elif defined(ACORN)
 #else
     s = new GString(dirPath);
-    appendToPath(s, name1);
+    appendToPath(s, nameA);
 #ifdef WIN32
     fa = GetFileAttributes(s->getCString());
     dir = (fa != 0xFFFFFFFF && (fa & FILE_ATTRIBUTE_DIRECTORY));
@@ -546,9 +610,9 @@ GDirEntry::~GDirEntry() {
   delete name;
 }
 
-GDir::GDir(char *name, GBool doStat1) {
+GDir::GDir(char *name, GBool doStatA) {
   path = new GString(name);
-  doStat = doStat1;
+  doStat = doStatA;
 #if defined(WIN32)
   GString *tmp;
 
index 38b99985eab75ee18f9e8a64606498a01dcfaf00..193209cc99c1bd0fd6c82c0ca64603c3f7243528 100644 (file)
@@ -4,7 +4,7 @@
 //
 // Miscellaneous file and directory name manipulation.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -73,11 +73,11 @@ extern GBool isAbsolutePath(char *path);
 
 // Make this path absolute by prepending current directory (if path is
 // relative) or prepending user's directory (if path starts with '~').
-GString *makePathAbsolute(GString *path);
+extern GString *makePathAbsolute(GString *path);
 
 // Get the modification time for <fileName>.  Returns 0 if there is an
 // error.
-time_t getModTime(char *fileName);
+extern time_t getModTime(char *fileName);
 
 // Create a temporary file and open it for writing.  If <ext> is not
 // NULL, it will be used as the file name extension.  Returns both the
@@ -85,7 +85,14 @@ time_t getModTime(char *fileName);
 // should be done to the returned file pointer; the file may be
 // reopened later for reading, but not for writing.  The <mode> string
 // should be "w" or "wb".  Returns true on success.
-GBool openTempFile(GString **name, FILE **f, char *mode, char *ext);
+extern GBool openTempFile(GString **name, FILE **f, char *mode, char *ext);
+
+// Execute <command>.  Returns true on success.
+extern GBool executeCommand(char *cmd);
+
+// Just like fgets, but handles Unix, Mac, and/or DOS end-of-line
+// conventions.
+extern char *getLine(char *buf, int size, FILE *f);
 
 //------------------------------------------------------------------------
 // GDir and GDirEntry
@@ -94,7 +101,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext);
 class GDirEntry {
 public:
 
-  GDirEntry(char *dirPath, char *name1, GBool doStat);
+  GDirEntry(char *dirPath, char *nameA, GBool doStat);
   ~GDirEntry();
   GString *getName() { return name; }
   GBool isDir() { return dir; }
@@ -108,7 +115,7 @@ private:
 class GDir {
 public:
 
-  GDir(char *name, GBool doStat1 = gTrue);
+  GDir(char *name, GBool doStatA = gTrue);
   ~GDir();
   GDirEntry *getNextEntry();
   void rewind();
index cac386bc8aab161c555d87dfacd523efe6e7e92f..27ebb2b6ec9e0d6774b4c6854602e6bc611e9851 100644 (file)
@@ -3,9 +3,10 @@
  *
  * Memory routines with out-of-memory checking.
  *
- * Copyright 1996 Derek B. Noonburg
+ * Copyright 1996-2002 Glyph & Cog, LLC
  */
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -24,9 +25,9 @@ typedef struct _GMemHdr {
 #define gMemTrlSize (sizeof(long))
 
 #if gmemTrlSize==8
-#define gMemDeadVal 0xdeadbeefdeadbeef
+#define gMemDeadVal 0xdeadbeefdeadbeefUL
 #else
-#define gMemDeadVal 0xdeadbeef
+#define gMemDeadVal 0xdeadbeefUL
 #endif
 
 /* round data size so trailer will be aligned */
@@ -59,7 +60,7 @@ void *gmalloc(int size) {
   GMemHdr *hdr;
   void *data;
   int lst;
-  long *trl, *p;
+  unsigned long *trl, *p;
 
   if (size == 0)
     return NULL;
@@ -70,14 +71,14 @@ void *gmalloc(int size) {
   }
   hdr = (GMemHdr *)mem;
   data = (void *)(mem + gMemHdrSize);
-  trl = (long *)(mem + gMemHdrSize + size1);
+  trl = (unsigned long *)(mem + gMemHdrSize + size1);
   hdr->size = size;
   hdr->index = gMemIndex++;
   lst = ((int)hdr >> gMemListShift) & gMemListMask;
   hdr->next = gMemList[lst];
   gMemList[lst] = hdr;
   ++gMemAlloc;
-  for (p = (long *)data; p <= trl; ++p)
+  for (p = (unsigned long *)data; p <= trl; ++p)
     *p = gMemDeadVal;
   return data;
 #else
@@ -140,7 +141,7 @@ void gfree(void *p) {
   GMemHdr *hdr;
   GMemHdr *prevHdr, *q;
   int lst;
-  long *trl, *clr;
+  unsigned long *trl, *clr;
 
   if (p) {
     hdr = (GMemHdr *)((char *)p - gMemHdrSize);
@@ -156,12 +157,12 @@ void gfree(void *p) {
        gMemList[lst] = hdr->next;
       --gMemAlloc;
       size = gMemDataSize(hdr->size);
-      trl = (long *)((char *)hdr + gMemHdrSize + size);
+      trl = (unsigned long *)((char *)hdr + gMemHdrSize + size);
       if (*trl != gMemDeadVal) {
        fprintf(stderr, "Overwrite past end of block %d at address %p\n",
                hdr->index, p);
       }
-      for (clr = (long *)hdr; clr <= trl; ++clr)
+      for (clr = (unsigned long *)hdr; clr <= trl; ++clr)
        *clr = gMemDeadVal;
       free(hdr);
     } else {
index 7ab5ddbeb873b0321cd9f1a3ec0e0098243fb621..93ccb94be13605304df354e37366c0708b4b58eb 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Memory routines with out-of-memory checking.
  *
- * Copyright 1996 Derek B. Noonburg
+ * Copyright 1996-2002 Glyph & Cog, LLC
  */
 
 #ifndef GMEM_H
index 6eb64948da6e29040d326f9d55cfa5c97cbcfe67..ed94f7a1d16163b41173d700c2a38b058860a6e6 100644 (file)
@@ -4,10 +4,11 @@
 //
 // Use gmalloc/gfree for C++ new/delete operators.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include "gmem.h"
 
 #ifdef DEBUG_MEM
index 6593267414401e2275708f51b4f5cb229ad51fd3..1879b88b73c5faa86d047b076f336ed6151cf002 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Some useful simple types.
  *
- * Copyright 1996 Derek B. Noonburg
+ * Copyright 1996-2002 Glyph & Cog, LLC
  */
 
 #ifndef GTYPES_H
index ceba887796cef30f99b41e025613882e986ffbfe..ad8460ae89385453b795c32998ab203ae922caa1 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Command line argument parser.
  *
- * Copyright 1996 Derek B. Noonburg
+ * Copyright 1996-2002 Glyph & Cog, LLC
  */
 
 #include <stdio.h>
index e0aa2be33d7cfbe7865e73c06e695da539da6572..2cc2df7dca5bff2be198f62cbb750e581a87a51e 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Command line argument parser.
  *
- * Copyright 1996 Derek B. Noonburg
+ * Copyright 1996-2002 Glyph & Cog, LLC
  */
 
 #ifndef PARSEARGS_H
index 454c1ffce559d3de9104869e20593fd634db4d04..e57c9602c1e0b25670eca0fedcf9139ce0581ce5 100644 (file)
@@ -4,11 +4,11 @@ $! Goo library compile script for VMS.
 $!
 $! Written by Patrick Moreau, Martin P.J. Zinser.
 $!
-$! Copyright 1996 Derek B. Noonburg
+$! Copyright 1996-2002 Glyph & Cog, LLC
 $!
 $!========================================================================
 $!
-$ GOO_CXXOBJS = "GString.obj,gmempp.obj,gfile.obj"
+$ GOO_CXXOBJS = "GString.obj,gmempp.obj,gfile.obj,ghash.obj,glist.obj"
 $ GOO_CCOBJS  = "gmem.obj,parseargs.obj,vms_directory.obj,vms_unix_times.obj"
 $!
 $ if f$extract(1,3,f$getsyi("Version")) .lts. "7.0"
similarity index 54%
rename from pdf/xpdf/FormWidget.cc
rename to pdf/xpdf/Annot.cc
index 76428d05e6da8e325c1cea32124d0215cae76df0..b9c606f4d47c305aee429846167dbee438073daf 100644 (file)
@@ -1,8 +1,8 @@
 //========================================================================
 //
-// FormWidget.cc
+// Annot.cc
 //
-// Copyright 2000 Derek B. Noonburg
+// Copyright 2000-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include "gmem.h"
 #include "Object.h"
 #include "Gfx.h"
-#include "FormWidget.h"
+#include "Annot.h"
 
 //------------------------------------------------------------------------
-// FormWidget
+// Annot
 //------------------------------------------------------------------------
 
-FormWidget::FormWidget(Dict *dict) {
-  Object obj1, obj2;
+Annot::Annot(XRef *xrefA, Dict *dict) {
+  Object apObj, asObj, obj1, obj2;
   double t;
 
   ok = gFalse;
-
-  if (dict->lookup("AP", &obj1)->isDict()) {
-    obj1.dictLookupNF("N", &obj2);
-    //~ this doesn't handle appearances with multiple states --
-    //~ need to look at AS key to get state and then get the
-    //~ corresponding entry from the N dict
-    if (obj2.isRef()) {
-      obj2.copy(&appearance);
-      ok = gTrue;
+  xref = xrefA;
+
+  if (dict->lookup("AP", &apObj)->isDict()) {
+    if (dict->lookup("AS", &asObj)->isName()) {
+      if (apObj.dictLookup("N", &obj1)->isDict()) {
+       if (obj1.dictLookupNF(asObj.getName(), &obj2)->isRef()) {
+         obj2.copy(&appearance);
+         ok = gTrue;
+       }
+       obj2.free();
+      }
+      obj1.free();
+    } else {
+      if (apObj.dictLookupNF("N", &obj1)->isRef()) {
+       obj1.copy(&appearance);
+       ok = gTrue;
+      }
+      obj1.free();
     }
-    obj2.free();
+    asObj.free();
   }
-  obj1.free();
+  apObj.free();
 
   if (dict->lookup("Rect", &obj1)->isArray() &&
       obj1.arrayGetLength() == 4) {
@@ -67,49 +77,48 @@ FormWidget::FormWidget(Dict *dict) {
   obj1.free();
 }
 
-FormWidget::~FormWidget() {
+Annot::~Annot() {
   appearance.free();
 }
 
-void FormWidget::draw(Gfx *gfx) {
+void Annot::draw(Gfx *gfx) {
   Object obj;
 
-  if (appearance.fetch(&obj)->isStream()) {
-    gfx->doWidgetForm(&obj, xMin, yMin, xMax, yMax);
+  if (appearance.fetch(xref, &obj)->isStream()) {
+    gfx->doAnnot(&obj, xMin, yMin, xMax, yMax);
   }
   obj.free();
 }
 
 //------------------------------------------------------------------------
-// FormWidgets
+// Annots
 //------------------------------------------------------------------------
 
-FormWidgets::FormWidgets(Object *annots) {
-  FormWidget *widget;
+Annots::Annots(XRef *xref, Object *annotsObj) {
+  Annot *annot;
   Object obj1, obj2;
   int size;
   int i;
 
-  widgets = NULL;
+  annots = NULL;
   size = 0;
-  nWidgets = 0;
+  nAnnots = 0;
 
-  if (annots->isArray()) {
-    for (i = 0; i < annots->arrayGetLength(); ++i) {
-      if (annots->arrayGet(i, &obj1)->isDict()) {
+  if (annotsObj->isArray()) {
+    for (i = 0; i < annotsObj->arrayGetLength(); ++i) {
+      if (annotsObj->arrayGet(i, &obj1)->isDict()) {
        obj1.dictLookup("Subtype", &obj2);
        if (obj2.isName("Widget") ||
            obj2.isName("Stamp")) {
-         widget = new FormWidget(obj1.getDict());
-         if (widget->isOk()) {
-           if (nWidgets >= size) {
+         annot = new Annot(xref, obj1.getDict());
+         if (annot->isOk()) {
+           if (nAnnots >= size) {
              size += 16;
-             widgets = (FormWidget **)grealloc(widgets,
-                                               size * sizeof(FormWidget *));
+             annots = (Annot **)grealloc(annots, size * sizeof(Annot *));
            }
-           widgets[nWidgets++] = widget;
+           annots[nAnnots++] = annot;
          } else {
-           delete widget;
+           delete annot;
          }
        }
        obj2.free();
@@ -119,11 +128,11 @@ FormWidgets::FormWidgets(Object *annots) {
   }
 }
 
-FormWidgets::~FormWidgets() {
+Annots::~Annots() {
   int i;
 
-  for (i = 0; i < nWidgets; ++i) {
-    delete widgets[i];
+  for (i = 0; i < nAnnots; ++i) {
+    delete annots[i];
   }
-  gfree(widgets);
+  gfree(annots);
 }
similarity index 55%
rename from pdf/xpdf/FormWidget.h
rename to pdf/xpdf/Annot.h
index d746083bf40e0e00e4e189be62d556ada3868937..4113a0bd59609fb1c6751ce15ebaf4657bdcfbd5 100644 (file)
@@ -1,65 +1,67 @@
 //========================================================================
 //
-// FormWidget.h
+// Annot.h
 //
-// Copyright 2000 Derek B. Noonburg
+// Copyright 2000-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
-#ifndef FORMWIDGET_H
-#define FORMWIDGET_H
+#ifndef ANNOT_H
+#define ANNOT_H
 
 #ifdef __GNUC__
 #pragma interface
 #endif
 
+class XRef;
 class Gfx;
 
 //------------------------------------------------------------------------
-// FormWidget
+// Annot
 //------------------------------------------------------------------------
 
-class FormWidget {
+class Annot {
 public:
 
-  FormWidget(Dict *dict);
-  ~FormWidget();
+  Annot(XRef *xrefA, Dict *dict);
+  ~Annot();
   GBool isOk() { return ok; }
 
   void draw(Gfx *gfx);
 
   // Get appearance object.
-  Object *getAppearance(Object *obj) { return appearance.fetch(obj); }
+  Object *getAppearance(Object *obj) { return appearance.fetch(xref, obj); }
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   Object appearance;           // a reference to the Form XObject stream
                                //   for the normal appearance
-  double xMin, yMin,           // widget rectangle
+  double xMin, yMin,           // annotation rectangle
          xMax, yMax;
   GBool ok;
 };
 
 //------------------------------------------------------------------------
-// FormWidgets
+// Annots
 //------------------------------------------------------------------------
 
-class FormWidgets {
+class Annots {
 public:
 
-  // Extract widgets from array of annotations.
-  FormWidgets(Object *annots);
+  // Extract non-link annotations from array of annotations.
+  Annots(XRef *xref, Object *annotsObj);
 
-  ~FormWidgets();
+  ~Annots();
 
-  // Iterate through list of widgets.
-  int getNumWidgets() { return nWidgets; }
-  FormWidget *getWidget(int i) { return widgets[i]; }
+  // Iterate through list of annotations.
+  int getNumAnnots() { return nAnnots; }
+  Annot *getAnnot(int i) { return annots[i]; }
 
 private:
 
-  FormWidget **widgets;
-  int nWidgets;
+  Annot **annots;
+  int nAnnots;
 };
 
 #endif
index 9681b6854cc981797ce7ab91ecb0b047c0244b71..fbdde49da9089e6d8181d87cf46f1d0138fa7167 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Array.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include "gmem.h"
 #include "Object.h"
@@ -19,7 +20,8 @@
 // Array
 //------------------------------------------------------------------------
 
-Array::Array() {
+Array::Array(XRef *xrefA) {
+  xref = xrefA;
   elems = NULL;
   size = length = 0;
   ref = 1;
@@ -43,7 +45,7 @@ void Array::add(Object *elem) {
 }
 
 Object *Array::get(int i, Object *obj) {
-  return elems[i].fetch(obj);
+  return elems[i].fetch(xref, obj);
 }
 
 Object *Array::getNF(int i, Object *obj) {
index ecf2eea6fdeca7120c8223da3bc5bd0ae422c16c..a118f6852b01c9cb048fdbcc1dd06e32e2b94ec5 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Array.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -15,6 +15,8 @@
 
 #include "Object.h"
 
+class XRef;
+
 //------------------------------------------------------------------------
 // Array
 //------------------------------------------------------------------------
@@ -23,7 +25,7 @@ class Array {
 public:
 
   // Constructor.
-  Array();
+  Array(XRef *xrefA);
 
   // Destructor.
   ~Array();
@@ -44,6 +46,7 @@ public:
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   Object *elems;               // array of elements
   int size;                    // size of <elems> array
   int length;                  // number of elements in array
diff --git a/pdf/xpdf/BuiltinFont.cc b/pdf/xpdf/BuiltinFont.cc
new file mode 100644 (file)
index 0000000..1b07064
--- /dev/null
@@ -0,0 +1,64 @@
+//========================================================================
+//
+// BuiltinFont.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <stdlib.h>
+#include <string.h>
+#include "gmem.h"
+#include "FontEncodingTables.h"
+#include "BuiltinFont.h"
+
+//------------------------------------------------------------------------
+
+BuiltinFontWidths::BuiltinFontWidths(BuiltinFontWidth *widths, int sizeA) {
+  int i, h;
+
+  size = sizeA;
+  tab = (BuiltinFontWidth **)gmalloc(size * sizeof(BuiltinFontWidth *));
+  for (i = 0; i < size; ++i) {
+    tab[i] = NULL;
+  }
+  for (i = 0; i < sizeA; ++i) {
+    h = hash(widths[i].name);
+    widths[i].next = tab[h];
+    tab[h] = &widths[i];
+  }
+}
+
+BuiltinFontWidths::~BuiltinFontWidths() {
+  gfree(tab);
+}
+
+GBool BuiltinFontWidths::getWidth(char *name, Gushort *width) {
+  int h;
+  BuiltinFontWidth *p;
+
+  h = hash(name);
+  for (p = tab[h]; p; p = p->next) {
+    if (!strcmp(p->name, name)) {
+      *width = p->width;
+      return gTrue;
+    }
+  }
+  return gFalse;
+}
+
+int BuiltinFontWidths::hash(char *name) {
+  char *p;
+  unsigned int h;
+
+  h = 0;
+  for (p = name; *p; ++p) {
+    h = 17 * h + (int)(*p & 0xff);
+  }
+  return (int)(h % size);
+}
diff --git a/pdf/xpdf/BuiltinFont.h b/pdf/xpdf/BuiltinFont.h
new file mode 100644 (file)
index 0000000..a795311
--- /dev/null
@@ -0,0 +1,55 @@
+//========================================================================
+//
+// BuiltinFont.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef BUILTINFONT_H
+#define BUILTINFONT_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+
+struct BuiltinFont;
+class BuiltinFontWidths;
+
+//------------------------------------------------------------------------
+
+struct BuiltinFont {
+  char *name;
+  char **defaultBaseEnc;
+  short ascent;
+  short descent;
+  short bbox[4];
+  BuiltinFontWidths *widths;
+};
+
+//------------------------------------------------------------------------
+
+struct BuiltinFontWidth {
+  char *name;
+  Gushort width;
+  BuiltinFontWidth *next;
+};
+
+class BuiltinFontWidths {
+public:
+
+  BuiltinFontWidths(BuiltinFontWidth *widths, int sizeA);
+  ~BuiltinFontWidths();
+  GBool getWidth(char *name, Gushort *width);
+
+private:
+
+  int hash(char *name);
+
+  BuiltinFontWidth **tab;
+  int size;
+};
+
+#endif
diff --git a/pdf/xpdf/BuiltinFontTables.cc b/pdf/xpdf/BuiltinFontTables.cc
new file mode 100644 (file)
index 0000000..845abcd
--- /dev/null
@@ -0,0 +1,3366 @@
+//========================================================================
+//
+// BuiltinFontTables.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#include <aconf.h>
+#include <stdlib.h>
+#include "FontEncodingTables.h"
+#include "BuiltinFontTables.h"
+
+static BuiltinFontWidth courierWidthsTab[] = {
+  { "Ntilde",                            600, NULL },
+  { "comma",                             600, NULL },
+  { "cedilla",                           600, NULL },
+  { "plusminus",                         600, NULL },
+  { "arrowup",                           600, NULL },
+  { "circumflex",                        600, NULL },
+  { "dotaccent",                         600, NULL },
+  { "LL",                                600, NULL },
+  { "asciitilde",                        600, NULL },
+  { "colon",                             600, NULL },
+  { "onehalf",                           600, NULL },
+  { "dollar",                            600, NULL },
+  { "ntilde",                            600, NULL },
+  { "left",                              600, NULL },
+  { "minus",                             600, NULL },
+  { "yen",                               600, NULL },
+  { "space",                             600, NULL },
+  { "questiondown",                      600, NULL },
+  { "emdash",                            600, NULL },
+  { "Agrave",                            600, NULL },
+  { "three",                             600, NULL },
+  { "numbersign",                        600, NULL },
+  { "A",                                 600, NULL },
+  { "B",                                 600, NULL },
+  { "C",                                 600, NULL },
+  { "D",                                 600, NULL },
+  { "E",                                 600, NULL },
+  { "onequarter",                        600, NULL },
+  { "F",                                 600, NULL },
+  { "G",                                 600, NULL },
+  { "H",                                 600, NULL },
+  { "I",                                 600, NULL },
+  { "J",                                 600, NULL },
+  { "K",                                 600, NULL },
+  { "L",                                 600, NULL },
+  { "backslash",                         600, NULL },
+  { "periodcentered",                    600, NULL },
+  { "M",                                 600, NULL },
+  { "N",                                 600, NULL },
+  { "O",                                 600, NULL },
+  { "P",                                 600, NULL },
+  { "Q",                                 600, NULL },
+  { "R",                                 600, NULL },
+  { "Aacute",                            600, NULL },
+  { "caron",                             600, NULL },
+  { "S",                                 600, NULL },
+  { "T",                                 600, NULL },
+  { "U",                                 600, NULL },
+  { "agrave",                            600, NULL },
+  { "V",                                 600, NULL },
+  { "tab",                               600, NULL },
+  { "W",                                 600, NULL },
+  { "ll",                                600, NULL },
+  { "equal",                             600, NULL },
+  { "question",                          600, NULL },
+  { "X",                                 600, NULL },
+  { "Y",                                 600, NULL },
+  { "Z",                                 600, NULL },
+  { "four",                              600, NULL },
+  { "a",                                 600, NULL },
+  { "b",                                 600, NULL },
+  { "c",                                 600, NULL },
+  { "d",                                 600, NULL },
+  { "e",                                 600, NULL },
+  { "f",                                 600, NULL },
+  { "g",                                 600, NULL },
+  { "bullet",                            600, NULL },
+  { "h",                                 600, NULL },
+  { "i",                                 600, NULL },
+  { "Oslash",                            600, NULL },
+  { "dagger",                            600, NULL },
+  { "j",                                 600, NULL },
+  { "k",                                 600, NULL },
+  { "l",                                 600, NULL },
+  { "m",                                 600, NULL },
+  { "n",                                 600, NULL },
+  { "o",                                 600, NULL },
+  { "ordfeminine",                       600, NULL },
+  { "ring",                              600, NULL },
+  { "p",                                 600, NULL },
+  { "q",                                 600, NULL },
+  { "r",                                 600, NULL },
+  { "twosuperior",                       600, NULL },
+  { "largebullet",                       600, NULL },
+  { "aacute",                            600, NULL },
+  { "s",                                 600, NULL },
+  { "OE",                                600, NULL },
+  { "t",                                 600, NULL },
+  { "divide",                            600, NULL },
+  { "u",                                 600, NULL },
+  { "v",                                 600, NULL },
+  { "w",                                 600, NULL },
+  { "x",                                 600, NULL },
+  { "y",                                 600, NULL },
+  { "z",                                 600, NULL },
+  { "hungarumlaut",                      600, NULL },
+  { "quotedbl",                          600, NULL },
+  { "mu",                                600, NULL },
+  { "Scaron",                            600, NULL },
+  { "Lslash",                            600, NULL },
+  { "semicolon",                         600, NULL },
+  { "oslash",                            600, NULL },
+  { "parenright",                        600, NULL },
+  { "Ecircumflex",                       600, NULL },
+  { "trademark",                         600, NULL },
+  { "daggerdbl",                         600, NULL },
+  { "macron",                            600, NULL },
+  { "Otilde",                            600, NULL },
+  { "ellipsis",                          600, NULL },
+  { "scaron",                            600, NULL },
+  { "AE",                                600, NULL },
+  { "Ucircumflex",                       600, NULL },
+  { "lslash",                            600, NULL },
+  { "lira",                              600, NULL },
+  { "quotedblleft",                      600, NULL },
+  { "hyphen",                            600, NULL },
+  { "guilsinglright",                    600, NULL },
+  { "quotesingle",                       600, NULL },
+  { "eight",                             600, NULL },
+  { "exclamdown",                        600, NULL },
+  { "endash",                            600, NULL },
+  { "oe",                                600, NULL },
+  { "ecircumflex",                       600, NULL },
+  { "copyright",                         600, NULL },
+  { "Adieresis",                         600, NULL },
+  { "Egrave",                            600, NULL },
+  { "slash",                             600, NULL },
+  { "Edieresis",                         600, NULL },
+  { "otilde",                            600, NULL },
+  { "Idieresis",                         600, NULL },
+  { "parenleft",                         600, NULL },
+  { "one",                               600, NULL },
+  { "ucircumflex",                       600, NULL },
+  { "Odieresis",                         600, NULL },
+  { "bracketleft",                       600, NULL },
+  { "Ugrave",                            600, NULL },
+  { "quoteright",                        600, NULL },
+  { "Udieresis",                         600, NULL },
+  { "perthousand",                       600, NULL },
+  { "Ydieresis",                         600, NULL },
+  { "Eacute",                            600, NULL },
+  { "adieresis",                         600, NULL },
+  { "egrave",                            600, NULL },
+  { "edieresis",                         600, NULL },
+  { "idieresis",                         600, NULL },
+  { "Eth",                               600, NULL },
+  { "ae",                                600, NULL },
+  { "asterisk",                          600, NULL },
+  { "odieresis",                         600, NULL },
+  { "Uacute",                            600, NULL },
+  { "ugrave",                            600, NULL },
+  { "five",                              600, NULL },
+  { "nine",                              600, NULL },
+  { "udieresis",                         600, NULL },
+  { "Zcaron",                            600, NULL },
+  { "threequarters",                     600, NULL },
+  { "guillemotright",                    600, NULL },
+  { "ydieresis",                         600, NULL },
+  { "Ccedilla",                          600, NULL },
+  { "tilde",                             600, NULL },
+  { "at",                                600, NULL },
+  { "eacute",                            600, NULL },
+  { "Gcaron",                            600, NULL },
+  { "underscore",                        600, NULL },
+  { "zero",                              600, NULL },
+  { "multiply",                          600, NULL },
+  { "Scedilla",                          600, NULL },
+  { "eth",                               600, NULL },
+  { "Ograve",                            600, NULL },
+  { "uacute",                            600, NULL },
+  { "braceleft",                         600, NULL },
+  { "Thorn",                             600, NULL },
+  { "zcaron",                            600, NULL },
+  { "ccedilla",                          600, NULL },
+  { "gcaron",                            600, NULL },
+  { "Oacute",                            600, NULL },
+  { "Ocircumflex",                       600, NULL },
+  { "scedilla",                          600, NULL },
+  { "ogonek",                            600, NULL },
+  { "arrowdown",                         600, NULL },
+  { "ograve",                            600, NULL },
+  { "thorn",                             600, NULL },
+  { "degree",                            600, NULL },
+  { "registered",                        600, NULL },
+  { "percent",                           600, NULL },
+  { "Aring",                             600, NULL },
+  { "six",                               600, NULL },
+  { "paragraph",                         600, NULL },
+  { "two",                               600, NULL },
+  { "Igrave",                            600, NULL },
+  { "oacute",                            600, NULL },
+  { "ocircumflex",                       600, NULL },
+  { "asciicircum",                       600, NULL },
+  { "aring",                             600, NULL },
+  { "square",                            600, NULL },
+  { "grave",                             600, NULL },
+  { "bracketright",                      600, NULL },
+  { "ampersand",                         600, NULL },
+  { "Iacute",                            600, NULL },
+  { "igrave",                            600, NULL },
+  { "return",                            600, NULL },
+  { "plus",                              600, NULL },
+  { "quotesinglbase",                    600, NULL },
+  { "Yacute",                            600, NULL },
+  { "threesuperior",                     600, NULL },
+  { "acute",                             600, NULL },
+  { "notegraphic",                       600, NULL },
+  { "section",                           600, NULL },
+  { "arrowleft",                         600, NULL },
+  { "dieresis",                          600, NULL },
+  { "quotedblbase",                      600, NULL },
+  { "iacute",                            600, NULL },
+  { "up",                                600, NULL },
+  { "florin",                            600, NULL },
+  { "yacute",                            600, NULL },
+  { "fi",                                600, NULL },
+  { "fl",                                600, NULL },
+  { "Acircumflex",                       600, NULL },
+  { "Icircumflex",                       600, NULL },
+  { "guillemotleft",                     600, NULL },
+  { "germandbls",                        600, NULL },
+  { "seven",                             600, NULL },
+  { "indent",                            600, NULL },
+  { "prescription",                      600, NULL },
+  { "dectab",                            600, NULL },
+  { "ordmasculine",                      600, NULL },
+  { "dotlessi",                          600, NULL },
+  { "sterling",                          600, NULL },
+  { "IJ",                                600, NULL },
+  { "acircumflex",                       600, NULL },
+  { "overscore",                         600, NULL },
+  { "braceright",                        600, NULL },
+  { "icircumflex",                       600, NULL },
+  { "graybox",                           600, NULL },
+  { "quotedblright",                     600, NULL },
+  { "center",                            600, NULL },
+  { "stop",                              600, NULL },
+  { "cent",                              600, NULL },
+  { "currency",                          600, NULL },
+  { "logicalnot",                        600, NULL },
+  { "Idot",                              600, NULL },
+  { "merge",                             600, NULL },
+  { "Atilde",                            600, NULL },
+  { "breve",                             600, NULL },
+  { "bar",                               600, NULL },
+  { "fraction",                          600, NULL },
+  { "less",                              600, NULL },
+  { "down",                              600, NULL },
+  { "guilsinglleft",                     600, NULL },
+  { "exclam",                            600, NULL },
+  { "period",                            600, NULL },
+  { "arrowright",                        600, NULL },
+  { "format",                            600, NULL },
+  { "greater",                           600, NULL },
+  { "atilde",                            600, NULL },
+  { "ij",                                600, NULL },
+  { "brokenbar",                         600, NULL },
+  { "arrowboth",                         600, NULL },
+  { "quoteleft",                         600, NULL },
+  { "onesuperior",                       600, NULL }
+};
+
+static BuiltinFontWidth courierBoldWidthsTab[] = {
+  { "Ntilde",                            600, NULL },
+  { "comma",                             600, NULL },
+  { "cedilla",                           600, NULL },
+  { "plusminus",                         600, NULL },
+  { "arrowup",                           600, NULL },
+  { "circumflex",                        600, NULL },
+  { "dotaccent",                         600, NULL },
+  { "LL",                                600, NULL },
+  { "asciitilde",                        600, NULL },
+  { "colon",                             600, NULL },
+  { "onehalf",                           600, NULL },
+  { "dollar",                            600, NULL },
+  { "ntilde",                            600, NULL },
+  { "left",                              600, NULL },
+  { "minus",                             600, NULL },
+  { "yen",                               600, NULL },
+  { "space",                             600, NULL },
+  { "questiondown",                      600, NULL },
+  { "emdash",                            600, NULL },
+  { "Agrave",                            600, NULL },
+  { "three",                             600, NULL },
+  { "numbersign",                        600, NULL },
+  { "A",                                 600, NULL },
+  { "B",                                 600, NULL },
+  { "C",                                 600, NULL },
+  { "D",                                 600, NULL },
+  { "E",                                 600, NULL },
+  { "onequarter",                        600, NULL },
+  { "F",                                 600, NULL },
+  { "G",                                 600, NULL },
+  { "H",                                 600, NULL },
+  { "I",                                 600, NULL },
+  { "J",                                 600, NULL },
+  { "K",                                 600, NULL },
+  { "backslash",                         600, NULL },
+  { "L",                                 600, NULL },
+  { "periodcentered",                    600, NULL },
+  { "M",                                 600, NULL },
+  { "N",                                 600, NULL },
+  { "O",                                 600, NULL },
+  { "P",                                 600, NULL },
+  { "Q",                                 600, NULL },
+  { "R",                                 600, NULL },
+  { "Aacute",                            600, NULL },
+  { "caron",                             600, NULL },
+  { "S",                                 600, NULL },
+  { "T",                                 600, NULL },
+  { "U",                                 600, NULL },
+  { "agrave",                            600, NULL },
+  { "V",                                 600, NULL },
+  { "tab",                               600, NULL },
+  { "W",                                 600, NULL },
+  { "ll",                                600, NULL },
+  { "X",                                 600, NULL },
+  { "question",                          600, NULL },
+  { "equal",                             600, NULL },
+  { "Y",                                 600, NULL },
+  { "Z",                                 600, NULL },
+  { "four",                              600, NULL },
+  { "a",                                 600, NULL },
+  { "b",                                 600, NULL },
+  { "c",                                 600, NULL },
+  { "d",                                 600, NULL },
+  { "e",                                 600, NULL },
+  { "f",                                 600, NULL },
+  { "g",                                 600, NULL },
+  { "bullet",                            600, NULL },
+  { "h",                                 600, NULL },
+  { "i",                                 600, NULL },
+  { "Oslash",                            600, NULL },
+  { "dagger",                            600, NULL },
+  { "j",                                 600, NULL },
+  { "k",                                 600, NULL },
+  { "l",                                 600, NULL },
+  { "m",                                 600, NULL },
+  { "n",                                 600, NULL },
+  { "o",                                 600, NULL },
+  { "ordfeminine",                       600, NULL },
+  { "ring",                              600, NULL },
+  { "p",                                 600, NULL },
+  { "q",                                 600, NULL },
+  { "r",                                 600, NULL },
+  { "twosuperior",                       600, NULL },
+  { "largebullet",                       600, NULL },
+  { "aacute",                            600, NULL },
+  { "s",                                 600, NULL },
+  { "OE",                                600, NULL },
+  { "t",                                 600, NULL },
+  { "divide",                            600, NULL },
+  { "u",                                 600, NULL },
+  { "v",                                 600, NULL },
+  { "w",                                 600, NULL },
+  { "x",                                 600, NULL },
+  { "y",                                 600, NULL },
+  { "z",                                 600, NULL },
+  { "hungarumlaut",                      600, NULL },
+  { "quotedbl",                          600, NULL },
+  { "mu",                                600, NULL },
+  { "Scaron",                            600, NULL },
+  { "Lslash",                            600, NULL },
+  { "semicolon",                         600, NULL },
+  { "oslash",                            600, NULL },
+  { "parenright",                        600, NULL },
+  { "Ecircumflex",                       600, NULL },
+  { "trademark",                         600, NULL },
+  { "daggerdbl",                         600, NULL },
+  { "macron",                            600, NULL },
+  { "Otilde",                            600, NULL },
+  { "ellipsis",                          600, NULL },
+  { "scaron",                            600, NULL },
+  { "AE",                                600, NULL },
+  { "Ucircumflex",                       600, NULL },
+  { "lslash",                            600, NULL },
+  { "lira",                              600, NULL },
+  { "quotedblleft",                      600, NULL },
+  { "guilsinglright",                    600, NULL },
+  { "hyphen",                            600, NULL },
+  { "quotesingle",                       600, NULL },
+  { "eight",                             600, NULL },
+  { "exclamdown",                        600, NULL },
+  { "endash",                            600, NULL },
+  { "oe",                                600, NULL },
+  { "ecircumflex",                       600, NULL },
+  { "copyright",                         600, NULL },
+  { "Adieresis",                         600, NULL },
+  { "Egrave",                            600, NULL },
+  { "slash",                             600, NULL },
+  { "Edieresis",                         600, NULL },
+  { "otilde",                            600, NULL },
+  { "Idieresis",                         600, NULL },
+  { "parenleft",                         600, NULL },
+  { "one",                               600, NULL },
+  { "ucircumflex",                       600, NULL },
+  { "Odieresis",                         600, NULL },
+  { "bracketleft",                       600, NULL },
+  { "Ugrave",                            600, NULL },
+  { "quoteright",                        600, NULL },
+  { "Udieresis",                         600, NULL },
+  { "perthousand",                       600, NULL },
+  { "Ydieresis",                         600, NULL },
+  { "Eacute",                            600, NULL },
+  { "adieresis",                         600, NULL },
+  { "egrave",                            600, NULL },
+  { "edieresis",                         600, NULL },
+  { "idieresis",                         600, NULL },
+  { "Eth",                               600, NULL },
+  { "ae",                                600, NULL },
+  { "asterisk",                          600, NULL },
+  { "odieresis",                         600, NULL },
+  { "Uacute",                            600, NULL },
+  { "ugrave",                            600, NULL },
+  { "nine",                              600, NULL },
+  { "five",                              600, NULL },
+  { "udieresis",                         600, NULL },
+  { "Zcaron",                            600, NULL },
+  { "threequarters",                     600, NULL },
+  { "guillemotright",                    600, NULL },
+  { "ydieresis",                         600, NULL },
+  { "Ccedilla",                          600, NULL },
+  { "tilde",                             600, NULL },
+  { "at",                                600, NULL },
+  { "eacute",                            600, NULL },
+  { "Gcaron",                            600, NULL },
+  { "underscore",                        600, NULL },
+  { "multiply",                          600, NULL },
+  { "zero",                              600, NULL },
+  { "eth",                               600, NULL },
+  { "Scedilla",                          600, NULL },
+  { "Ograve",                            600, NULL },
+  { "uacute",                            600, NULL },
+  { "braceleft",                         600, NULL },
+  { "Thorn",                             600, NULL },
+  { "zcaron",                            600, NULL },
+  { "ccedilla",                          600, NULL },
+  { "gcaron",                            600, NULL },
+  { "scedilla",                          600, NULL },
+  { "Ocircumflex",                       600, NULL },
+  { "Oacute",                            600, NULL },
+  { "arrowdown",                         600, NULL },
+  { "ogonek",                            600, NULL },
+  { "ograve",                            600, NULL },
+  { "thorn",                             600, NULL },
+  { "degree",                            600, NULL },
+  { "registered",                        600, NULL },
+  { "Aring",                             600, NULL },
+  { "percent",                           600, NULL },
+  { "six",                               600, NULL },
+  { "paragraph",                         600, NULL },
+  { "two",                               600, NULL },
+  { "Igrave",                            600, NULL },
+  { "ocircumflex",                       600, NULL },
+  { "oacute",                            600, NULL },
+  { "asciicircum",                       600, NULL },
+  { "square",                            600, NULL },
+  { "aring",                             600, NULL },
+  { "grave",                             600, NULL },
+  { "bracketright",                      600, NULL },
+  { "Iacute",                            600, NULL },
+  { "ampersand",                         600, NULL },
+  { "igrave",                            600, NULL },
+  { "return",                            600, NULL },
+  { "plus",                              600, NULL },
+  { "quotesinglbase",                    600, NULL },
+  { "Yacute",                            600, NULL },
+  { "threesuperior",                     600, NULL },
+  { "acute",                             600, NULL },
+  { "notegraphic",                       600, NULL },
+  { "section",                           600, NULL },
+  { "arrowleft",                         600, NULL },
+  { "dieresis",                          600, NULL },
+  { "iacute",                            600, NULL },
+  { "quotedblbase",                      600, NULL },
+  { "up",                                600, NULL },
+  { "florin",                            600, NULL },
+  { "yacute",                            600, NULL },
+  { "fi",                                600, NULL },
+  { "fl",                                600, NULL },
+  { "Acircumflex",                       600, NULL },
+  { "Icircumflex",                       600, NULL },
+  { "guillemotleft",                     600, NULL },
+  { "germandbls",                        600, NULL },
+  { "seven",                             600, NULL },
+  { "prescription",                      600, NULL },
+  { "indent",                            600, NULL },
+  { "dectab",                            600, NULL },
+  { "ordmasculine",                      600, NULL },
+  { "dotlessi",                          600, NULL },
+  { "sterling",                          600, NULL },
+  { "acircumflex",                       600, NULL },
+  { "IJ",                                600, NULL },
+  { "overscore",                         600, NULL },
+  { "icircumflex",                       600, NULL },
+  { "braceright",                        600, NULL },
+  { "graybox",                           600, NULL },
+  { "quotedblright",                     600, NULL },
+  { "center",                            600, NULL },
+  { "stop",                              600, NULL },
+  { "cent",                              600, NULL },
+  { "currency",                          600, NULL },
+  { "logicalnot",                        600, NULL },
+  { "merge",                             600, NULL },
+  { "Idot",                              600, NULL },
+  { "Atilde",                            600, NULL },
+  { "breve",                             600, NULL },
+  { "bar",                               600, NULL },
+  { "fraction",                          600, NULL },
+  { "less",                              600, NULL },
+  { "down",                              600, NULL },
+  { "guilsinglleft",                     600, NULL },
+  { "exclam",                            600, NULL },
+  { "period",                            600, NULL },
+  { "format",                            600, NULL },
+  { "arrowright",                        600, NULL },
+  { "greater",                           600, NULL },
+  { "ij",                                600, NULL },
+  { "atilde",                            600, NULL },
+  { "brokenbar",                         600, NULL },
+  { "arrowboth",                         600, NULL },
+  { "quoteleft",                         600, NULL },
+  { "onesuperior",                       600, NULL }
+};
+
+static BuiltinFontWidth courierBoldObliqueWidthsTab[] = {
+  { "Ntilde",                            600, NULL },
+  { "comma",                             600, NULL },
+  { "cedilla",                           600, NULL },
+  { "plusminus",                         600, NULL },
+  { "arrowup",                           600, NULL },
+  { "circumflex",                        600, NULL },
+  { "dotaccent",                         600, NULL },
+  { "LL",                                600, NULL },
+  { "asciitilde",                        600, NULL },
+  { "colon",                             600, NULL },
+  { "onehalf",                           600, NULL },
+  { "dollar",                            600, NULL },
+  { "ntilde",                            600, NULL },
+  { "left",                              600, NULL },
+  { "minus",                             600, NULL },
+  { "yen",                               600, NULL },
+  { "space",                             600, NULL },
+  { "questiondown",                      600, NULL },
+  { "emdash",                            600, NULL },
+  { "Agrave",                            600, NULL },
+  { "three",                             600, NULL },
+  { "numbersign",                        600, NULL },
+  { "A",                                 600, NULL },
+  { "B",                                 600, NULL },
+  { "C",                                 600, NULL },
+  { "D",                                 600, NULL },
+  { "E",                                 600, NULL },
+  { "onequarter",                        600, NULL },
+  { "F",                                 600, NULL },
+  { "G",                                 600, NULL },
+  { "H",                                 600, NULL },
+  { "I",                                 600, NULL },
+  { "J",                                 600, NULL },
+  { "K",                                 600, NULL },
+  { "backslash",                         600, NULL },
+  { "L",                                 600, NULL },
+  { "periodcentered",                    600, NULL },
+  { "M",                                 600, NULL },
+  { "N",                                 600, NULL },
+  { "O",                                 600, NULL },
+  { "P",                                 600, NULL },
+  { "Q",                                 600, NULL },
+  { "R",                                 600, NULL },
+  { "Aacute",                            600, NULL },
+  { "caron",                             600, NULL },
+  { "S",                                 600, NULL },
+  { "T",                                 600, NULL },
+  { "U",                                 600, NULL },
+  { "agrave",                            600, NULL },
+  { "V",                                 600, NULL },
+  { "tab",                               600, NULL },
+  { "W",                                 600, NULL },
+  { "ll",                                600, NULL },
+  { "X",                                 600, NULL },
+  { "question",                          600, NULL },
+  { "equal",                             600, NULL },
+  { "Y",                                 600, NULL },
+  { "Z",                                 600, NULL },
+  { "four",                              600, NULL },
+  { "a",                                 600, NULL },
+  { "b",                                 600, NULL },
+  { "c",                                 600, NULL },
+  { "d",                                 600, NULL },
+  { "e",                                 600, NULL },
+  { "f",                                 600, NULL },
+  { "g",                                 600, NULL },
+  { "bullet",                            600, NULL },
+  { "h",                                 600, NULL },
+  { "i",                                 600, NULL },
+  { "Oslash",                            600, NULL },
+  { "dagger",                            600, NULL },
+  { "j",                                 600, NULL },
+  { "k",                                 600, NULL },
+  { "l",                                 600, NULL },
+  { "m",                                 600, NULL },
+  { "n",                                 600, NULL },
+  { "o",                                 600, NULL },
+  { "ordfeminine",                       600, NULL },
+  { "ring",                              600, NULL },
+  { "p",                                 600, NULL },
+  { "q",                                 600, NULL },
+  { "r",                                 600, NULL },
+  { "twosuperior",                       600, NULL },
+  { "largebullet",                       600, NULL },
+  { "aacute",                            600, NULL },
+  { "s",                                 600, NULL },
+  { "OE",                                600, NULL },
+  { "t",                                 600, NULL },
+  { "divide",                            600, NULL },
+  { "u",                                 600, NULL },
+  { "v",                                 600, NULL },
+  { "w",                                 600, NULL },
+  { "x",                                 600, NULL },
+  { "y",                                 600, NULL },
+  { "z",                                 600, NULL },
+  { "hungarumlaut",                      600, NULL },
+  { "quotedbl",                          600, NULL },
+  { "mu",                                600, NULL },
+  { "Scaron",                            600, NULL },
+  { "Lslash",                            600, NULL },
+  { "semicolon",                         600, NULL },
+  { "oslash",                            600, NULL },
+  { "parenright",                        600, NULL },
+  { "Ecircumflex",                       600, NULL },
+  { "trademark",                         600, NULL },
+  { "daggerdbl",                         600, NULL },
+  { "macron",                            600, NULL },
+  { "Otilde",                            600, NULL },
+  { "ellipsis",                          600, NULL },
+  { "scaron",                            600, NULL },
+  { "AE",                                600, NULL },
+  { "Ucircumflex",                       600, NULL },
+  { "lslash",                            600, NULL },
+  { "lira",                              600, NULL },
+  { "quotedblleft",                      600, NULL },
+  { "guilsinglright",                    600, NULL },
+  { "hyphen",                            600, NULL },
+  { "quotesingle",                       600, NULL },
+  { "eight",                             600, NULL },
+  { "exclamdown",                        600, NULL },
+  { "endash",                            600, NULL },
+  { "oe",                                600, NULL },
+  { "ecircumflex",                       600, NULL },
+  { "copyright",                         600, NULL },
+  { "Adieresis",                         600, NULL },
+  { "Egrave",                            600, NULL },
+  { "slash",                             600, NULL },
+  { "Edieresis",                         600, NULL },
+  { "otilde",                            600, NULL },
+  { "Idieresis",                         600, NULL },
+  { "parenleft",                         600, NULL },
+  { "one",                               600, NULL },
+  { "ucircumflex",                       600, NULL },
+  { "Odieresis",                         600, NULL },
+  { "bracketleft",                       600, NULL },
+  { "Ugrave",                            600, NULL },
+  { "quoteright",                        600, NULL },
+  { "Udieresis",                         600, NULL },
+  { "perthousand",                       600, NULL },
+  { "Ydieresis",                         600, NULL },
+  { "Eacute",                            600, NULL },
+  { "adieresis",                         600, NULL },
+  { "egrave",                            600, NULL },
+  { "edieresis",                         600, NULL },
+  { "idieresis",                         600, NULL },
+  { "Eth",                               600, NULL },
+  { "ae",                                600, NULL },
+  { "asterisk",                          600, NULL },
+  { "odieresis",                         600, NULL },
+  { "Uacute",                            600, NULL },
+  { "ugrave",                            600, NULL },
+  { "nine",                              600, NULL },
+  { "five",                              600, NULL },
+  { "udieresis",                         600, NULL },
+  { "Zcaron",                            600, NULL },
+  { "threequarters",                     600, NULL },
+  { "guillemotright",                    600, NULL },
+  { "ydieresis",                         600, NULL },
+  { "Ccedilla",                          600, NULL },
+  { "tilde",                             600, NULL },
+  { "at",                                600, NULL },
+  { "eacute",                            600, NULL },
+  { "Gcaron",                            600, NULL },
+  { "underscore",                        600, NULL },
+  { "multiply",                          600, NULL },
+  { "zero",                              600, NULL },
+  { "eth",                               600, NULL },
+  { "Scedilla",                          600, NULL },
+  { "Ograve",                            600, NULL },
+  { "uacute",                            600, NULL },
+  { "braceleft",                         600, NULL },
+  { "Thorn",                             600, NULL },
+  { "zcaron",                            600, NULL },
+  { "ccedilla",                          600, NULL },
+  { "gcaron",                            600, NULL },
+  { "scedilla",                          600, NULL },
+  { "Ocircumflex",                       600, NULL },
+  { "Oacute",                            600, NULL },
+  { "arrowdown",                         600, NULL },
+  { "ogonek",                            600, NULL },
+  { "ograve",                            600, NULL },
+  { "thorn",                             600, NULL },
+  { "degree",                            600, NULL },
+  { "registered",                        600, NULL },
+  { "Aring",                             600, NULL },
+  { "percent",                           600, NULL },
+  { "six",                               600, NULL },
+  { "paragraph",                         600, NULL },
+  { "two",                               600, NULL },
+  { "Igrave",                            600, NULL },
+  { "ocircumflex",                       600, NULL },
+  { "oacute",                            600, NULL },
+  { "asciicircum",                       600, NULL },
+  { "square",                            600, NULL },
+  { "aring",                             600, NULL },
+  { "grave",                             600, NULL },
+  { "bracketright",                      600, NULL },
+  { "Iacute",                            600, NULL },
+  { "ampersand",                         600, NULL },
+  { "igrave",                            600, NULL },
+  { "return",                            600, NULL },
+  { "plus",                              600, NULL },
+  { "quotesinglbase",                    600, NULL },
+  { "Yacute",                            600, NULL },
+  { "threesuperior",                     600, NULL },
+  { "acute",                             600, NULL },
+  { "notegraphic",                       600, NULL },
+  { "section",                           600, NULL },
+  { "arrowleft",                         600, NULL },
+  { "dieresis",                          600, NULL },
+  { "iacute",                            600, NULL },
+  { "quotedblbase",                      600, NULL },
+  { "up",                                600, NULL },
+  { "florin",                            600, NULL },
+  { "yacute",                            600, NULL },
+  { "fi",                                600, NULL },
+  { "fl",                                600, NULL },
+  { "Acircumflex",                       600, NULL },
+  { "Icircumflex",                       600, NULL },
+  { "guillemotleft",                     600, NULL },
+  { "germandbls",                        600, NULL },
+  { "seven",                             600, NULL },
+  { "prescription",                      600, NULL },
+  { "indent",                            600, NULL },
+  { "dectab",                            600, NULL },
+  { "ordmasculine",                      600, NULL },
+  { "dotlessi",                          600, NULL },
+  { "sterling",                          600, NULL },
+  { "acircumflex",                       600, NULL },
+  { "IJ",                                600, NULL },
+  { "overscore",                         600, NULL },
+  { "icircumflex",                       600, NULL },
+  { "braceright",                        600, NULL },
+  { "graybox",                           600, NULL },
+  { "quotedblright",                     600, NULL },
+  { "center",                            600, NULL },
+  { "stop",                              600, NULL },
+  { "cent",                              600, NULL },
+  { "currency",                          600, NULL },
+  { "logicalnot",                        600, NULL },
+  { "merge",                             600, NULL },
+  { "Idot",                              600, NULL },
+  { "Atilde",                            600, NULL },
+  { "breve",                             600, NULL },
+  { "bar",                               600, NULL },
+  { "fraction",                          600, NULL },
+  { "less",                              600, NULL },
+  { "down",                              600, NULL },
+  { "guilsinglleft",                     600, NULL },
+  { "exclam",                            600, NULL },
+  { "period",                            600, NULL },
+  { "format",                            600, NULL },
+  { "arrowright",                        600, NULL },
+  { "greater",                           600, NULL },
+  { "ij",                                600, NULL },
+  { "atilde",                            600, NULL },
+  { "brokenbar",                         600, NULL },
+  { "arrowboth",                         600, NULL },
+  { "quoteleft",                         600, NULL },
+  { "onesuperior",                       600, NULL }
+};
+
+static BuiltinFontWidth courierObliqueWidthsTab[] = {
+  { "Ntilde",                            600, NULL },
+  { "comma",                             600, NULL },
+  { "cedilla",                           600, NULL },
+  { "plusminus",                         600, NULL },
+  { "arrowup",                           600, NULL },
+  { "circumflex",                        600, NULL },
+  { "dotaccent",                         600, NULL },
+  { "LL",                                600, NULL },
+  { "asciitilde",                        600, NULL },
+  { "colon",                             600, NULL },
+  { "onehalf",                           600, NULL },
+  { "dollar",                            600, NULL },
+  { "ntilde",                            600, NULL },
+  { "left",                              600, NULL },
+  { "minus",                             600, NULL },
+  { "yen",                               600, NULL },
+  { "space",                             600, NULL },
+  { "questiondown",                      600, NULL },
+  { "emdash",                            600, NULL },
+  { "Agrave",                            600, NULL },
+  { "three",                             600, NULL },
+  { "numbersign",                        600, NULL },
+  { "A",                                 600, NULL },
+  { "B",                                 600, NULL },
+  { "C",                                 600, NULL },
+  { "D",                                 600, NULL },
+  { "E",                                 600, NULL },
+  { "onequarter",                        600, NULL },
+  { "F",                                 600, NULL },
+  { "G",                                 600, NULL },
+  { "H",                                 600, NULL },
+  { "I",                                 600, NULL },
+  { "J",                                 600, NULL },
+  { "K",                                 600, NULL },
+  { "backslash",                         600, NULL },
+  { "L",                                 600, NULL },
+  { "periodcentered",                    600, NULL },
+  { "M",                                 600, NULL },
+  { "N",                                 600, NULL },
+  { "O",                                 600, NULL },
+  { "P",                                 600, NULL },
+  { "Q",                                 600, NULL },
+  { "R",                                 600, NULL },
+  { "Aacute",                            600, NULL },
+  { "caron",                             600, NULL },
+  { "S",                                 600, NULL },
+  { "T",                                 600, NULL },
+  { "U",                                 600, NULL },
+  { "agrave",                            600, NULL },
+  { "V",                                 600, NULL },
+  { "tab",                               600, NULL },
+  { "W",                                 600, NULL },
+  { "ll",                                600, NULL },
+  { "X",                                 600, NULL },
+  { "question",                          600, NULL },
+  { "equal",                             600, NULL },
+  { "Y",                                 600, NULL },
+  { "Z",                                 600, NULL },
+  { "four",                              600, NULL },
+  { "a",                                 600, NULL },
+  { "b",                                 600, NULL },
+  { "c",                                 600, NULL },
+  { "d",                                 600, NULL },
+  { "e",                                 600, NULL },
+  { "f",                                 600, NULL },
+  { "g",                                 600, NULL },
+  { "bullet",                            600, NULL },
+  { "h",                                 600, NULL },
+  { "i",                                 600, NULL },
+  { "Oslash",                            600, NULL },
+  { "dagger",                            600, NULL },
+  { "j",                                 600, NULL },
+  { "k",                                 600, NULL },
+  { "l",                                 600, NULL },
+  { "m",                                 600, NULL },
+  { "n",                                 600, NULL },
+  { "o",                                 600, NULL },
+  { "ordfeminine",                       600, NULL },
+  { "ring",                              600, NULL },
+  { "p",                                 600, NULL },
+  { "q",                                 600, NULL },
+  { "r",                                 600, NULL },
+  { "twosuperior",                       600, NULL },
+  { "largebullet",                       600, NULL },
+  { "aacute",                            600, NULL },
+  { "s",                                 600, NULL },
+  { "OE",                                600, NULL },
+  { "t",                                 600, NULL },
+  { "divide",                            600, NULL },
+  { "u",                                 600, NULL },
+  { "v",                                 600, NULL },
+  { "w",                                 600, NULL },
+  { "x",                                 600, NULL },
+  { "y",                                 600, NULL },
+  { "z",                                 600, NULL },
+  { "hungarumlaut",                      600, NULL },
+  { "quotedbl",                          600, NULL },
+  { "mu",                                600, NULL },
+  { "Scaron",                            600, NULL },
+  { "Lslash",                            600, NULL },
+  { "semicolon",                         600, NULL },
+  { "oslash",                            600, NULL },
+  { "parenright",                        600, NULL },
+  { "Ecircumflex",                       600, NULL },
+  { "trademark",                         600, NULL },
+  { "daggerdbl",                         600, NULL },
+  { "macron",                            600, NULL },
+  { "Otilde",                            600, NULL },
+  { "ellipsis",                          600, NULL },
+  { "scaron",                            600, NULL },
+  { "AE",                                600, NULL },
+  { "Ucircumflex",                       600, NULL },
+  { "lslash",                            600, NULL },
+  { "lira",                              600, NULL },
+  { "quotedblleft",                      600, NULL },
+  { "guilsinglright",                    600, NULL },
+  { "hyphen",                            600, NULL },
+  { "quotesingle",                       600, NULL },
+  { "eight",                             600, NULL },
+  { "exclamdown",                        600, NULL },
+  { "endash",                            600, NULL },
+  { "oe",                                600, NULL },
+  { "ecircumflex",                       600, NULL },
+  { "copyright",                         600, NULL },
+  { "Adieresis",                         600, NULL },
+  { "Egrave",                            600, NULL },
+  { "slash",                             600, NULL },
+  { "Edieresis",                         600, NULL },
+  { "otilde",                            600, NULL },
+  { "Idieresis",                         600, NULL },
+  { "parenleft",                         600, NULL },
+  { "one",                               600, NULL },
+  { "ucircumflex",                       600, NULL },
+  { "Odieresis",                         600, NULL },
+  { "bracketleft",                       600, NULL },
+  { "Ugrave",                            600, NULL },
+  { "quoteright",                        600, NULL },
+  { "Udieresis",                         600, NULL },
+  { "perthousand",                       600, NULL },
+  { "Ydieresis",                         600, NULL },
+  { "Eacute",                            600, NULL },
+  { "adieresis",                         600, NULL },
+  { "egrave",                            600, NULL },
+  { "edieresis",                         600, NULL },
+  { "idieresis",                         600, NULL },
+  { "Eth",                               600, NULL },
+  { "ae",                                600, NULL },
+  { "asterisk",                          600, NULL },
+  { "odieresis",                         600, NULL },
+  { "Uacute",                            600, NULL },
+  { "ugrave",                            600, NULL },
+  { "nine",                              600, NULL },
+  { "five",                              600, NULL },
+  { "udieresis",                         600, NULL },
+  { "Zcaron",                            600, NULL },
+  { "threequarters",                     600, NULL },
+  { "guillemotright",                    600, NULL },
+  { "ydieresis",                         600, NULL },
+  { "Ccedilla",                          600, NULL },
+  { "tilde",                             600, NULL },
+  { "at",                                600, NULL },
+  { "eacute",                            600, NULL },
+  { "Gcaron",                            600, NULL },
+  { "underscore",                        600, NULL },
+  { "multiply",                          600, NULL },
+  { "zero",                              600, NULL },
+  { "eth",                               600, NULL },
+  { "Scedilla",                          600, NULL },
+  { "Ograve",                            600, NULL },
+  { "uacute",                            600, NULL },
+  { "braceleft",                         600, NULL },
+  { "Thorn",                             600, NULL },
+  { "zcaron",                            600, NULL },
+  { "ccedilla",                          600, NULL },
+  { "gcaron",                            600, NULL },
+  { "scedilla",                          600, NULL },
+  { "Ocircumflex",                       600, NULL },
+  { "Oacute",                            600, NULL },
+  { "arrowdown",                         600, NULL },
+  { "ogonek",                            600, NULL },
+  { "ograve",                            600, NULL },
+  { "thorn",                             600, NULL },
+  { "degree",                            600, NULL },
+  { "registered",                        600, NULL },
+  { "Aring",                             600, NULL },
+  { "percent",                           600, NULL },
+  { "six",                               600, NULL },
+  { "paragraph",                         600, NULL },
+  { "two",                               600, NULL },
+  { "Igrave",                            600, NULL },
+  { "ocircumflex",                       600, NULL },
+  { "oacute",                            600, NULL },
+  { "asciicircum",                       600, NULL },
+  { "square",                            600, NULL },
+  { "aring",                             600, NULL },
+  { "grave",                             600, NULL },
+  { "bracketright",                      600, NULL },
+  { "Iacute",                            600, NULL },
+  { "ampersand",                         600, NULL },
+  { "igrave",                            600, NULL },
+  { "return",                            600, NULL },
+  { "plus",                              600, NULL },
+  { "quotesinglbase",                    600, NULL },
+  { "Yacute",                            600, NULL },
+  { "threesuperior",                     600, NULL },
+  { "acute",                             600, NULL },
+  { "notegraphic",                       600, NULL },
+  { "section",                           600, NULL },
+  { "arrowleft",                         600, NULL },
+  { "dieresis",                          600, NULL },
+  { "iacute",                            600, NULL },
+  { "quotedblbase",                      600, NULL },
+  { "up",                                600, NULL },
+  { "florin",                            600, NULL },
+  { "yacute",                            600, NULL },
+  { "fi",                                600, NULL },
+  { "fl",                                600, NULL },
+  { "Acircumflex",                       600, NULL },
+  { "Icircumflex",                       600, NULL },
+  { "guillemotleft",                     600, NULL },
+  { "germandbls",                        600, NULL },
+  { "seven",                             600, NULL },
+  { "prescription",                      600, NULL },
+  { "indent",                            600, NULL },
+  { "dectab",                            600, NULL },
+  { "ordmasculine",                      600, NULL },
+  { "dotlessi",                          600, NULL },
+  { "sterling",                          600, NULL },
+  { "acircumflex",                       600, NULL },
+  { "IJ",                                600, NULL },
+  { "overscore",                         600, NULL },
+  { "icircumflex",                       600, NULL },
+  { "braceright",                        600, NULL },
+  { "graybox",                           600, NULL },
+  { "quotedblright",                     600, NULL },
+  { "center",                            600, NULL },
+  { "stop",                              600, NULL },
+  { "cent",                              600, NULL },
+  { "currency",                          600, NULL },
+  { "logicalnot",                        600, NULL },
+  { "merge",                             600, NULL },
+  { "Idot",                              600, NULL },
+  { "Atilde",                            600, NULL },
+  { "breve",                             600, NULL },
+  { "bar",                               600, NULL },
+  { "fraction",                          600, NULL },
+  { "less",                              600, NULL },
+  { "down",                              600, NULL },
+  { "guilsinglleft",                     600, NULL },
+  { "exclam",                            600, NULL },
+  { "period",                            600, NULL },
+  { "format",                            600, NULL },
+  { "arrowright",                        600, NULL },
+  { "greater",                           600, NULL },
+  { "ij",                                600, NULL },
+  { "atilde",                            600, NULL },
+  { "brokenbar",                         600, NULL },
+  { "arrowboth",                         600, NULL },
+  { "quoteleft",                         600, NULL },
+  { "onesuperior",                       600, NULL }
+};
+
+static BuiltinFontWidth helveticaWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             278, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         584, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        584, NULL },
+  { "colon",                             278, NULL },
+  { "onehalf",                           834, NULL },
+  { "dollar",                            556, NULL },
+  { "ntilde",                            556, NULL },
+  { "minus",                             584, NULL },
+  { "yen",                               556, NULL },
+  { "space",                             278, NULL },
+  { "questiondown",                      611, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            667, NULL },
+  { "three",                             556, NULL },
+  { "numbersign",                        556, NULL },
+  { "A",                                 667, NULL },
+  { "B",                                 667, NULL },
+  { "C",                                 722, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 667, NULL },
+  { "onequarter",                        834, NULL },
+  { "F",                                 611, NULL },
+  { "G",                                 778, NULL },
+  { "H",                                 722, NULL },
+  { "I",                                 278, NULL },
+  { "J",                                 500, NULL },
+  { "K",                                 667, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 556, NULL },
+  { "periodcentered",                    278, NULL },
+  { "M",                                 833, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 778, NULL },
+  { "P",                                 667, NULL },
+  { "Q",                                 778, NULL },
+  { "R",                                 722, NULL },
+  { "Aacute",                            667, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 667, NULL },
+  { "T",                                 611, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            556, NULL },
+  { "V",                                 667, NULL },
+  { "W",                                 944, NULL },
+  { "X",                                 667, NULL },
+  { "question",                          556, NULL },
+  { "equal",                             584, NULL },
+  { "Y",                                 667, NULL },
+  { "Z",                                 611, NULL },
+  { "four",                              556, NULL },
+  { "a",                                 556, NULL },
+  { "b",                                 556, NULL },
+  { "c",                                 500, NULL },
+  { "d",                                 556, NULL },
+  { "e",                                 556, NULL },
+  { "f",                                 278, NULL },
+  { "g",                                 556, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 556, NULL },
+  { "i",                                 222, NULL },
+  { "Oslash",                            778, NULL },
+  { "dagger",                            556, NULL },
+  { "j",                                 222, NULL },
+  { "k",                                 500, NULL },
+  { "l",                                 222, NULL },
+  { "m",                                 833, NULL },
+  { "n",                                 556, NULL },
+  { "o",                                 556, NULL },
+  { "ordfeminine",                       370, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 556, NULL },
+  { "q",                                 556, NULL },
+  { "r",                                 333, NULL },
+  { "twosuperior",                       333, NULL },
+  { "aacute",                            556, NULL },
+  { "s",                                 500, NULL },
+  { "OE",                               1000, NULL },
+  { "t",                                 278, NULL },
+  { "divide",                            584, NULL },
+  { "u",                                 556, NULL },
+  { "v",                                 500, NULL },
+  { "w",                                 722, NULL },
+  { "x",                                 500, NULL },
+  { "y",                                 500, NULL },
+  { "z",                                 500, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          355, NULL },
+  { "mu",                                556, NULL },
+  { "Scaron",                            667, NULL },
+  { "Lslash",                            556, NULL },
+  { "semicolon",                         278, NULL },
+  { "oslash",                            611, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       667, NULL },
+  { "trademark",                        1000, NULL },
+  { "daggerdbl",                         556, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            778, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            500, NULL },
+  { "AE",                               1000, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            222, NULL },
+  { "quotedblleft",                      333, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       191, NULL },
+  { "eight",                             556, NULL },
+  { "exclamdown",                        333, NULL },
+  { "endash",                            556, NULL },
+  { "oe",                                944, NULL },
+  { "ecircumflex",                       556, NULL },
+  { "copyright",                         737, NULL },
+  { "Adieresis",                         667, NULL },
+  { "Egrave",                            667, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         667, NULL },
+  { "otilde",                            556, NULL },
+  { "Idieresis",                         278, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               556, NULL },
+  { "ucircumflex",                       556, NULL },
+  { "Odieresis",                         778, NULL },
+  { "bracketleft",                       278, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        222, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         667, NULL },
+  { "Eacute",                            667, NULL },
+  { "adieresis",                         556, NULL },
+  { "egrave",                            556, NULL },
+  { "edieresis",                         556, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                889, NULL },
+  { "asterisk",                          389, NULL },
+  { "odieresis",                         556, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            556, NULL },
+  { "nine",                              556, NULL },
+  { "five",                              556, NULL },
+  { "udieresis",                         556, NULL },
+  { "Zcaron",                            611, NULL },
+  { "threequarters",                     834, NULL },
+  { "guillemotright",                    556, NULL },
+  { "ydieresis",                         500, NULL },
+  { "Ccedilla",                          722, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                               1015, NULL },
+  { "eacute",                            556, NULL },
+  { "underscore",                        556, NULL },
+  { "multiply",                          584, NULL },
+  { "zero",                              556, NULL },
+  { "eth",                               556, NULL },
+  { "Ograve",                            778, NULL },
+  { "uacute",                            556, NULL },
+  { "braceleft",                         334, NULL },
+  { "Thorn",                             667, NULL },
+  { "zcaron",                            500, NULL },
+  { "ccedilla",                          500, NULL },
+  { "Ocircumflex",                       778, NULL },
+  { "Oacute",                            778, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            556, NULL },
+  { "thorn",                             556, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        737, NULL },
+  { "Aring",                             667, NULL },
+  { "percent",                           889, NULL },
+  { "six",                               556, NULL },
+  { "paragraph",                         537, NULL },
+  { "two",                               556, NULL },
+  { "Igrave",                            278, NULL },
+  { "ocircumflex",                       556, NULL },
+  { "oacute",                            556, NULL },
+  { "asciicircum",                       469, NULL },
+  { "aring",                             556, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      278, NULL },
+  { "Iacute",                            278, NULL },
+  { "ampersand",                         667, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              584, NULL },
+  { "quotesinglbase",                    222, NULL },
+  { "Yacute",                            667, NULL },
+  { "threesuperior",                     333, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           556, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      333, NULL },
+  { "florin",                            556, NULL },
+  { "yacute",                            500, NULL },
+  { "fi",                                500, NULL },
+  { "fl",                                500, NULL },
+  { "Acircumflex",                       667, NULL },
+  { "Icircumflex",                       278, NULL },
+  { "guillemotleft",                     556, NULL },
+  { "germandbls",                        611, NULL },
+  { "seven",                             556, NULL },
+  { "ordmasculine",                      365, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          556, NULL },
+  { "acircumflex",                       556, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        334, NULL },
+  { "quotedblright",                     333, NULL },
+  { "cent",                              556, NULL },
+  { "currency",                          556, NULL },
+  { "logicalnot",                        584, NULL },
+  { "Atilde",                            667, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               260, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              584, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            278, NULL },
+  { "period",                            278, NULL },
+  { "greater",                           584, NULL },
+  { "atilde",                            556, NULL },
+  { "brokenbar",                         260, NULL },
+  { "quoteleft",                         222, NULL },
+  { "onesuperior",                       333, NULL }
+};
+
+static BuiltinFontWidth helveticaBoldWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             278, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         584, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        584, NULL },
+  { "colon",                             333, NULL },
+  { "onehalf",                           834, NULL },
+  { "dollar",                            556, NULL },
+  { "ntilde",                            611, NULL },
+  { "minus",                             584, NULL },
+  { "yen",                               556, NULL },
+  { "space",                             278, NULL },
+  { "questiondown",                      611, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            722, NULL },
+  { "three",                             556, NULL },
+  { "numbersign",                        556, NULL },
+  { "A",                                 722, NULL },
+  { "B",                                 722, NULL },
+  { "C",                                 722, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 667, NULL },
+  { "onequarter",                        834, NULL },
+  { "F",                                 611, NULL },
+  { "G",                                 778, NULL },
+  { "H",                                 722, NULL },
+  { "I",                                 278, NULL },
+  { "J",                                 556, NULL },
+  { "K",                                 722, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 611, NULL },
+  { "periodcentered",                    278, NULL },
+  { "M",                                 833, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 778, NULL },
+  { "P",                                 667, NULL },
+  { "Q",                                 778, NULL },
+  { "R",                                 722, NULL },
+  { "Aacute",                            722, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 667, NULL },
+  { "T",                                 611, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            556, NULL },
+  { "V",                                 667, NULL },
+  { "W",                                 944, NULL },
+  { "X",                                 667, NULL },
+  { "question",                          611, NULL },
+  { "equal",                             584, NULL },
+  { "Y",                                 667, NULL },
+  { "Z",                                 611, NULL },
+  { "four",                              556, NULL },
+  { "a",                                 556, NULL },
+  { "b",                                 611, NULL },
+  { "c",                                 556, NULL },
+  { "d",                                 611, NULL },
+  { "e",                                 556, NULL },
+  { "f",                                 333, NULL },
+  { "g",                                 611, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 611, NULL },
+  { "i",                                 278, NULL },
+  { "Oslash",                            778, NULL },
+  { "dagger",                            556, NULL },
+  { "j",                                 278, NULL },
+  { "k",                                 556, NULL },
+  { "l",                                 278, NULL },
+  { "m",                                 889, NULL },
+  { "n",                                 611, NULL },
+  { "o",                                 611, NULL },
+  { "ordfeminine",                       370, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 611, NULL },
+  { "q",                                 611, NULL },
+  { "r",                                 389, NULL },
+  { "twosuperior",                       333, NULL },
+  { "aacute",                            556, NULL },
+  { "s",                                 556, NULL },
+  { "OE",                               1000, NULL },
+  { "t",                                 333, NULL },
+  { "divide",                            584, NULL },
+  { "u",                                 611, NULL },
+  { "v",                                 556, NULL },
+  { "w",                                 778, NULL },
+  { "x",                                 556, NULL },
+  { "y",                                 556, NULL },
+  { "z",                                 500, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          474, NULL },
+  { "mu",                                611, NULL },
+  { "Scaron",                            667, NULL },
+  { "Lslash",                            611, NULL },
+  { "semicolon",                         333, NULL },
+  { "oslash",                            611, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       667, NULL },
+  { "trademark",                        1000, NULL },
+  { "daggerdbl",                         556, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            778, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            556, NULL },
+  { "AE",                               1000, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            278, NULL },
+  { "quotedblleft",                      500, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       238, NULL },
+  { "eight",                             556, NULL },
+  { "exclamdown",                        333, NULL },
+  { "endash",                            556, NULL },
+  { "oe",                                944, NULL },
+  { "ecircumflex",                       556, NULL },
+  { "copyright",                         737, NULL },
+  { "Adieresis",                         722, NULL },
+  { "Egrave",                            667, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         667, NULL },
+  { "otilde",                            611, NULL },
+  { "Idieresis",                         278, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               556, NULL },
+  { "ucircumflex",                       611, NULL },
+  { "Odieresis",                         778, NULL },
+  { "bracketleft",                       333, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        278, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         667, NULL },
+  { "Eacute",                            667, NULL },
+  { "adieresis",                         556, NULL },
+  { "egrave",                            556, NULL },
+  { "edieresis",                         556, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                889, NULL },
+  { "asterisk",                          389, NULL },
+  { "odieresis",                         611, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            611, NULL },
+  { "nine",                              556, NULL },
+  { "five",                              556, NULL },
+  { "udieresis",                         611, NULL },
+  { "Zcaron",                            611, NULL },
+  { "threequarters",                     834, NULL },
+  { "guillemotright",                    556, NULL },
+  { "ydieresis",                         556, NULL },
+  { "Ccedilla",                          722, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                                975, NULL },
+  { "eacute",                            556, NULL },
+  { "underscore",                        556, NULL },
+  { "multiply",                          584, NULL },
+  { "zero",                              556, NULL },
+  { "eth",                               611, NULL },
+  { "Ograve",                            778, NULL },
+  { "uacute",                            611, NULL },
+  { "braceleft",                         389, NULL },
+  { "Thorn",                             667, NULL },
+  { "zcaron",                            500, NULL },
+  { "ccedilla",                          556, NULL },
+  { "Ocircumflex",                       778, NULL },
+  { "Oacute",                            778, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            611, NULL },
+  { "thorn",                             611, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        737, NULL },
+  { "Aring",                             722, NULL },
+  { "percent",                           889, NULL },
+  { "six",                               556, NULL },
+  { "paragraph",                         556, NULL },
+  { "two",                               556, NULL },
+  { "Igrave",                            278, NULL },
+  { "ocircumflex",                       611, NULL },
+  { "oacute",                            611, NULL },
+  { "asciicircum",                       584, NULL },
+  { "aring",                             556, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      333, NULL },
+  { "Iacute",                            278, NULL },
+  { "ampersand",                         722, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              584, NULL },
+  { "quotesinglbase",                    278, NULL },
+  { "Yacute",                            667, NULL },
+  { "threesuperior",                     333, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           556, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      500, NULL },
+  { "florin",                            556, NULL },
+  { "yacute",                            556, NULL },
+  { "fi",                                611, NULL },
+  { "fl",                                611, NULL },
+  { "Acircumflex",                       722, NULL },
+  { "Icircumflex",                       278, NULL },
+  { "guillemotleft",                     556, NULL },
+  { "germandbls",                        611, NULL },
+  { "seven",                             556, NULL },
+  { "ordmasculine",                      365, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          556, NULL },
+  { "acircumflex",                       556, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        389, NULL },
+  { "quotedblright",                     500, NULL },
+  { "cent",                              556, NULL },
+  { "currency",                          556, NULL },
+  { "logicalnot",                        584, NULL },
+  { "Atilde",                            722, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               280, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              584, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            333, NULL },
+  { "period",                            278, NULL },
+  { "greater",                           584, NULL },
+  { "atilde",                            556, NULL },
+  { "brokenbar",                         280, NULL },
+  { "quoteleft",                         278, NULL },
+  { "onesuperior",                       333, NULL }
+};
+
+static BuiltinFontWidth helveticaBoldObliqueWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             278, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         584, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        584, NULL },
+  { "colon",                             333, NULL },
+  { "onehalf",                           834, NULL },
+  { "dollar",                            556, NULL },
+  { "ntilde",                            611, NULL },
+  { "minus",                             584, NULL },
+  { "yen",                               556, NULL },
+  { "space",                             278, NULL },
+  { "questiondown",                      611, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            722, NULL },
+  { "three",                             556, NULL },
+  { "numbersign",                        556, NULL },
+  { "A",                                 722, NULL },
+  { "B",                                 722, NULL },
+  { "C",                                 722, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 667, NULL },
+  { "onequarter",                        834, NULL },
+  { "F",                                 611, NULL },
+  { "G",                                 778, NULL },
+  { "H",                                 722, NULL },
+  { "I",                                 278, NULL },
+  { "J",                                 556, NULL },
+  { "K",                                 722, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 611, NULL },
+  { "periodcentered",                    278, NULL },
+  { "M",                                 833, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 778, NULL },
+  { "P",                                 667, NULL },
+  { "Q",                                 778, NULL },
+  { "R",                                 722, NULL },
+  { "Aacute",                            722, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 667, NULL },
+  { "T",                                 611, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            556, NULL },
+  { "V",                                 667, NULL },
+  { "W",                                 944, NULL },
+  { "X",                                 667, NULL },
+  { "question",                          611, NULL },
+  { "equal",                             584, NULL },
+  { "Y",                                 667, NULL },
+  { "Z",                                 611, NULL },
+  { "four",                              556, NULL },
+  { "a",                                 556, NULL },
+  { "b",                                 611, NULL },
+  { "c",                                 556, NULL },
+  { "d",                                 611, NULL },
+  { "e",                                 556, NULL },
+  { "f",                                 333, NULL },
+  { "g",                                 611, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 611, NULL },
+  { "i",                                 278, NULL },
+  { "Oslash",                            778, NULL },
+  { "dagger",                            556, NULL },
+  { "j",                                 278, NULL },
+  { "k",                                 556, NULL },
+  { "l",                                 278, NULL },
+  { "m",                                 889, NULL },
+  { "n",                                 611, NULL },
+  { "o",                                 611, NULL },
+  { "ordfeminine",                       370, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 611, NULL },
+  { "q",                                 611, NULL },
+  { "r",                                 389, NULL },
+  { "twosuperior",                       333, NULL },
+  { "aacute",                            556, NULL },
+  { "s",                                 556, NULL },
+  { "OE",                               1000, NULL },
+  { "t",                                 333, NULL },
+  { "divide",                            584, NULL },
+  { "u",                                 611, NULL },
+  { "v",                                 556, NULL },
+  { "w",                                 778, NULL },
+  { "x",                                 556, NULL },
+  { "y",                                 556, NULL },
+  { "z",                                 500, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          474, NULL },
+  { "mu",                                611, NULL },
+  { "Scaron",                            667, NULL },
+  { "Lslash",                            611, NULL },
+  { "semicolon",                         333, NULL },
+  { "oslash",                            611, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       667, NULL },
+  { "trademark",                        1000, NULL },
+  { "daggerdbl",                         556, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            778, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            556, NULL },
+  { "AE",                               1000, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            278, NULL },
+  { "quotedblleft",                      500, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       238, NULL },
+  { "eight",                             556, NULL },
+  { "exclamdown",                        333, NULL },
+  { "endash",                            556, NULL },
+  { "oe",                                944, NULL },
+  { "ecircumflex",                       556, NULL },
+  { "copyright",                         737, NULL },
+  { "Adieresis",                         722, NULL },
+  { "Egrave",                            667, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         667, NULL },
+  { "otilde",                            611, NULL },
+  { "Idieresis",                         278, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               556, NULL },
+  { "ucircumflex",                       611, NULL },
+  { "Odieresis",                         778, NULL },
+  { "bracketleft",                       333, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        278, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         667, NULL },
+  { "Eacute",                            667, NULL },
+  { "adieresis",                         556, NULL },
+  { "egrave",                            556, NULL },
+  { "edieresis",                         556, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                889, NULL },
+  { "asterisk",                          389, NULL },
+  { "odieresis",                         611, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            611, NULL },
+  { "nine",                              556, NULL },
+  { "five",                              556, NULL },
+  { "udieresis",                         611, NULL },
+  { "Zcaron",                            611, NULL },
+  { "threequarters",                     834, NULL },
+  { "guillemotright",                    556, NULL },
+  { "ydieresis",                         556, NULL },
+  { "Ccedilla",                          722, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                                975, NULL },
+  { "eacute",                            556, NULL },
+  { "underscore",                        556, NULL },
+  { "multiply",                          584, NULL },
+  { "zero",                              556, NULL },
+  { "eth",                               611, NULL },
+  { "Ograve",                            778, NULL },
+  { "uacute",                            611, NULL },
+  { "braceleft",                         389, NULL },
+  { "Thorn",                             667, NULL },
+  { "zcaron",                            500, NULL },
+  { "ccedilla",                          556, NULL },
+  { "Ocircumflex",                       778, NULL },
+  { "Oacute",                            778, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            611, NULL },
+  { "thorn",                             611, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        737, NULL },
+  { "Aring",                             722, NULL },
+  { "percent",                           889, NULL },
+  { "six",                               556, NULL },
+  { "paragraph",                         556, NULL },
+  { "two",                               556, NULL },
+  { "Igrave",                            278, NULL },
+  { "ocircumflex",                       611, NULL },
+  { "oacute",                            611, NULL },
+  { "asciicircum",                       584, NULL },
+  { "aring",                             556, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      333, NULL },
+  { "Iacute",                            278, NULL },
+  { "ampersand",                         722, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              584, NULL },
+  { "quotesinglbase",                    278, NULL },
+  { "Yacute",                            667, NULL },
+  { "threesuperior",                     333, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           556, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      500, NULL },
+  { "florin",                            556, NULL },
+  { "yacute",                            556, NULL },
+  { "fi",                                611, NULL },
+  { "fl",                                611, NULL },
+  { "Acircumflex",                       722, NULL },
+  { "Icircumflex",                       278, NULL },
+  { "guillemotleft",                     556, NULL },
+  { "germandbls",                        611, NULL },
+  { "seven",                             556, NULL },
+  { "ordmasculine",                      365, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          556, NULL },
+  { "acircumflex",                       556, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        389, NULL },
+  { "quotedblright",                     500, NULL },
+  { "cent",                              556, NULL },
+  { "currency",                          556, NULL },
+  { "logicalnot",                        584, NULL },
+  { "Atilde",                            722, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               280, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              584, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            333, NULL },
+  { "period",                            278, NULL },
+  { "greater",                           584, NULL },
+  { "atilde",                            556, NULL },
+  { "brokenbar",                         280, NULL },
+  { "quoteleft",                         278, NULL },
+  { "onesuperior",                       333, NULL }
+};
+
+static BuiltinFontWidth helveticaObliqueWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             278, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         584, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        584, NULL },
+  { "colon",                             278, NULL },
+  { "onehalf",                           834, NULL },
+  { "dollar",                            556, NULL },
+  { "ntilde",                            556, NULL },
+  { "minus",                             584, NULL },
+  { "yen",                               556, NULL },
+  { "space",                             278, NULL },
+  { "questiondown",                      611, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            667, NULL },
+  { "three",                             556, NULL },
+  { "numbersign",                        556, NULL },
+  { "A",                                 667, NULL },
+  { "B",                                 667, NULL },
+  { "C",                                 722, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 667, NULL },
+  { "onequarter",                        834, NULL },
+  { "F",                                 611, NULL },
+  { "G",                                 778, NULL },
+  { "H",                                 722, NULL },
+  { "I",                                 278, NULL },
+  { "J",                                 500, NULL },
+  { "K",                                 667, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 556, NULL },
+  { "periodcentered",                    278, NULL },
+  { "M",                                 833, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 778, NULL },
+  { "P",                                 667, NULL },
+  { "Q",                                 778, NULL },
+  { "R",                                 722, NULL },
+  { "Aacute",                            667, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 667, NULL },
+  { "T",                                 611, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            556, NULL },
+  { "V",                                 667, NULL },
+  { "W",                                 944, NULL },
+  { "X",                                 667, NULL },
+  { "question",                          556, NULL },
+  { "equal",                             584, NULL },
+  { "Y",                                 667, NULL },
+  { "Z",                                 611, NULL },
+  { "four",                              556, NULL },
+  { "a",                                 556, NULL },
+  { "b",                                 556, NULL },
+  { "c",                                 500, NULL },
+  { "d",                                 556, NULL },
+  { "e",                                 556, NULL },
+  { "f",                                 278, NULL },
+  { "g",                                 556, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 556, NULL },
+  { "i",                                 222, NULL },
+  { "Oslash",                            778, NULL },
+  { "dagger",                            556, NULL },
+  { "j",                                 222, NULL },
+  { "k",                                 500, NULL },
+  { "l",                                 222, NULL },
+  { "m",                                 833, NULL },
+  { "n",                                 556, NULL },
+  { "o",                                 556, NULL },
+  { "ordfeminine",                       370, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 556, NULL },
+  { "q",                                 556, NULL },
+  { "r",                                 333, NULL },
+  { "twosuperior",                       333, NULL },
+  { "aacute",                            556, NULL },
+  { "s",                                 500, NULL },
+  { "OE",                               1000, NULL },
+  { "t",                                 278, NULL },
+  { "divide",                            584, NULL },
+  { "u",                                 556, NULL },
+  { "v",                                 500, NULL },
+  { "w",                                 722, NULL },
+  { "x",                                 500, NULL },
+  { "y",                                 500, NULL },
+  { "z",                                 500, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          355, NULL },
+  { "mu",                                556, NULL },
+  { "Scaron",                            667, NULL },
+  { "Lslash",                            556, NULL },
+  { "semicolon",                         278, NULL },
+  { "oslash",                            611, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       667, NULL },
+  { "trademark",                        1000, NULL },
+  { "daggerdbl",                         556, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            778, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            500, NULL },
+  { "AE",                               1000, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            222, NULL },
+  { "quotedblleft",                      333, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       191, NULL },
+  { "eight",                             556, NULL },
+  { "exclamdown",                        333, NULL },
+  { "endash",                            556, NULL },
+  { "oe",                                944, NULL },
+  { "ecircumflex",                       556, NULL },
+  { "copyright",                         737, NULL },
+  { "Adieresis",                         667, NULL },
+  { "Egrave",                            667, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         667, NULL },
+  { "otilde",                            556, NULL },
+  { "Idieresis",                         278, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               556, NULL },
+  { "ucircumflex",                       556, NULL },
+  { "Odieresis",                         778, NULL },
+  { "bracketleft",                       278, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        222, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         667, NULL },
+  { "Eacute",                            667, NULL },
+  { "adieresis",                         556, NULL },
+  { "egrave",                            556, NULL },
+  { "edieresis",                         556, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                889, NULL },
+  { "asterisk",                          389, NULL },
+  { "odieresis",                         556, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            556, NULL },
+  { "nine",                              556, NULL },
+  { "five",                              556, NULL },
+  { "udieresis",                         556, NULL },
+  { "Zcaron",                            611, NULL },
+  { "threequarters",                     834, NULL },
+  { "guillemotright",                    556, NULL },
+  { "ydieresis",                         500, NULL },
+  { "Ccedilla",                          722, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                               1015, NULL },
+  { "eacute",                            556, NULL },
+  { "underscore",                        556, NULL },
+  { "multiply",                          584, NULL },
+  { "zero",                              556, NULL },
+  { "eth",                               556, NULL },
+  { "Ograve",                            778, NULL },
+  { "uacute",                            556, NULL },
+  { "braceleft",                         334, NULL },
+  { "Thorn",                             667, NULL },
+  { "zcaron",                            500, NULL },
+  { "ccedilla",                          500, NULL },
+  { "Ocircumflex",                       778, NULL },
+  { "Oacute",                            778, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            556, NULL },
+  { "thorn",                             556, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        737, NULL },
+  { "Aring",                             667, NULL },
+  { "percent",                           889, NULL },
+  { "six",                               556, NULL },
+  { "paragraph",                         537, NULL },
+  { "two",                               556, NULL },
+  { "Igrave",                            278, NULL },
+  { "ocircumflex",                       556, NULL },
+  { "oacute",                            556, NULL },
+  { "asciicircum",                       469, NULL },
+  { "aring",                             556, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      278, NULL },
+  { "Iacute",                            278, NULL },
+  { "ampersand",                         667, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              584, NULL },
+  { "quotesinglbase",                    222, NULL },
+  { "Yacute",                            667, NULL },
+  { "threesuperior",                     333, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           556, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      333, NULL },
+  { "florin",                            556, NULL },
+  { "yacute",                            500, NULL },
+  { "fi",                                500, NULL },
+  { "fl",                                500, NULL },
+  { "Acircumflex",                       667, NULL },
+  { "Icircumflex",                       278, NULL },
+  { "guillemotleft",                     556, NULL },
+  { "germandbls",                        611, NULL },
+  { "seven",                             556, NULL },
+  { "ordmasculine",                      365, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          556, NULL },
+  { "acircumflex",                       556, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        334, NULL },
+  { "quotedblright",                     333, NULL },
+  { "cent",                              556, NULL },
+  { "currency",                          556, NULL },
+  { "logicalnot",                        584, NULL },
+  { "Atilde",                            667, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               260, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              584, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            278, NULL },
+  { "period",                            278, NULL },
+  { "greater",                           584, NULL },
+  { "atilde",                            556, NULL },
+  { "brokenbar",                         260, NULL },
+  { "quoteleft",                         222, NULL },
+  { "onesuperior",                       333, NULL }
+};
+
+static BuiltinFontWidth symbolWidthsTab[] = {
+  { "bracketleftex",                     384, NULL },
+  { "alpha",                             631, NULL },
+  { "union",                             768, NULL },
+  { "infinity",                          713, NULL },
+  { "comma",                             250, NULL },
+  { "copyrightsans",                     790, NULL },
+  { "plusminus",                         549, NULL },
+  { "arrowup",                           603, NULL },
+  { "apple",                             790, NULL },
+  { "parenleftbt",                       384, NULL },
+  { "notelement",                        713, NULL },
+  { "colon",                             278, NULL },
+  { "beta",                              549, NULL },
+  { "braceleftbt",                       494, NULL },
+  { "Lambda",                            686, NULL },
+  { "Phi",                               763, NULL },
+  { "minus",                             549, NULL },
+  { "space",                             250, NULL },
+  { "Sigma",                             592, NULL },
+  { "approxequal",                       549, NULL },
+  { "minute",                            247, NULL },
+  { "circleplus",                        768, NULL },
+  { "Omicron",                           722, NULL },
+  { "three",                             500, NULL },
+  { "numbersign",                        500, NULL },
+  { "lambda",                            549, NULL },
+  { "phi",                               521, NULL },
+  { "aleph",                             823, NULL },
+  { "Tau",                               611, NULL },
+  { "spade",                             753, NULL },
+  { "logicaland",                        603, NULL },
+  { "sigma",                             603, NULL },
+  { "propersuperset",                    713, NULL },
+  { "omicron",                           549, NULL },
+  { "question",                          444, NULL },
+  { "equal",                             549, NULL },
+  { "Epsilon",                           611, NULL },
+  { "emptyset",                          823, NULL },
+  { "diamond",                           753, NULL },
+  { "four",                              500, NULL },
+  { "Mu",                                889, NULL },
+  { "parenlefttp",                       384, NULL },
+  { "club",                              753, NULL },
+  { "bullet",                            460, NULL },
+  { "Omega",                             768, NULL },
+  { "tau",                               439, NULL },
+  { "Upsilon",                           690, NULL },
+  { "bracelefttp",                       494, NULL },
+  { "heart",                             753, NULL },
+  { "divide",                            549, NULL },
+  { "epsilon",                           439, NULL },
+  { "logicalor",                         603, NULL },
+  { "parenleftex",                       384, NULL },
+  { "greaterequal",                      549, NULL },
+  { "mu",                                576, NULL },
+  { "Nu",                                722, NULL },
+  { "therefore",                         863, NULL },
+  { "notsubset",                         713, NULL },
+  { "omega",                             686, NULL },
+  { "semicolon",                         278, NULL },
+  { "element",                           713, NULL },
+  { "upsilon",                           576, NULL },
+  { "existential",                       549, NULL },
+  { "integralbt",                        686, NULL },
+  { "lessequal",                         549, NULL },
+  { "phi1",                              603, NULL },
+  { "lozenge",                           494, NULL },
+  { "trademarkserif",                    890, NULL },
+  { "parenright",                        333, NULL },
+  { "reflexsuperset",                    713, NULL },
+  { "sigma1",                            439, NULL },
+  { "nu",                                521, NULL },
+  { "Gamma",                             603, NULL },
+  { "angleright",                        329, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "Rho",                               556, NULL },
+  { "parenrightbt",                      384, NULL },
+  { "radicalex",                         500, NULL },
+  { "eight",                             500, NULL },
+  { "angleleft",                         329, NULL },
+  { "arrowdbldown",                      603, NULL },
+  { "congruent",                         549, NULL },
+  { "Theta",                             741, NULL },
+  { "intersection",                      768, NULL },
+  { "Pi",                                768, NULL },
+  { "slash",                             278, NULL },
+  { "registerserif",                     790, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               500, NULL },
+  { "gamma",                             411, NULL },
+  { "bracketleft",                       333, NULL },
+  { "rho",                               549, NULL },
+  { "circlemultiply",                    768, NULL },
+  { "Chi",                               722, NULL },
+  { "theta",                             521, NULL },
+  { "pi",                                549, NULL },
+  { "integraltp",                        686, NULL },
+  { "Eta",                               722, NULL },
+  { "product",                           823, NULL },
+  { "nine",                              500, NULL },
+  { "five",                              500, NULL },
+  { "propersubset",                      713, NULL },
+  { "bracketrightbt",                    384, NULL },
+  { "trademarksans",                     786, NULL },
+  { "dotmath",                           250, NULL },
+  { "integralex",                        686, NULL },
+  { "chi",                               549, NULL },
+  { "parenrighttp",                      384, NULL },
+  { "eta",                               603, NULL },
+  { "underscore",                        500, NULL },
+  { "multiply",                          549, NULL },
+  { "zero",                              500, NULL },
+  { "partialdiff",                       494, NULL },
+  { "angle",                             768, NULL },
+  { "arrowdblleft",                      987, NULL },
+  { "braceleft",                         480, NULL },
+  { "parenrightex",                      384, NULL },
+  { "Rfraktur",                          795, NULL },
+  { "Zeta",                              611, NULL },
+  { "braceex",                           494, NULL },
+  { "arrowdblup",                        603, NULL },
+  { "arrowdown",                         603, NULL },
+  { "Ifraktur",                          686, NULL },
+  { "degree",                            400, NULL },
+  { "Iota",                              333, NULL },
+  { "perpendicular",                     658, NULL },
+  { "radical",                           549, NULL },
+  { "asteriskmath",                      500, NULL },
+  { "percent",                           833, NULL },
+  { "zeta",                              494, NULL },
+  { "six",                               500, NULL },
+  { "two",                               500, NULL },
+  { "weierstrass",                       987, NULL },
+  { "summation",                         713, NULL },
+  { "bracketrighttp",                    384, NULL },
+  { "carriagereturn",                    658, NULL },
+  { "suchthat",                          439, NULL },
+  { "arrowvertex",                       603, NULL },
+  { "Delta",                             612, NULL },
+  { "iota",                              329, NULL },
+  { "arrowhorizex",                     1000, NULL },
+  { "bracketrightex",                    384, NULL },
+  { "bracketright",                      333, NULL },
+  { "ampersand",                         778, NULL },
+  { "plus",                              549, NULL },
+  { "proportional",                      713, NULL },
+  { "delta",                             494, NULL },
+  { "copyrightserif",                    790, NULL },
+  { "bracerightmid",                     494, NULL },
+  { "arrowleft",                         987, NULL },
+  { "second",                            411, NULL },
+  { "arrowdblboth",                     1042, NULL },
+  { "florin",                            500, NULL },
+  { "Psi",                               795, NULL },
+  { "bracerightbt",                      494, NULL },
+  { "bracketleftbt",                     384, NULL },
+  { "seven",                             500, NULL },
+  { "braceleftmid",                      494, NULL },
+  { "notequal",                          549, NULL },
+  { "psi",                               686, NULL },
+  { "equivalence",                       549, NULL },
+  { "universal",                         713, NULL },
+  { "arrowdblright",                     987, NULL },
+  { "braceright",                        480, NULL },
+  { "reflexsubset",                      713, NULL },
+  { "Xi",                                645, NULL },
+  { "theta1",                            631, NULL },
+  { "logicalnot",                        713, NULL },
+  { "Kappa",                             722, NULL },
+  { "similar",                           549, NULL },
+  { "bar",                               200, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              549, NULL },
+  { "registersans",                      790, NULL },
+  { "omega1",                            713, NULL },
+  { "exclam",                            333, NULL },
+  { "Upsilon1",                          620, NULL },
+  { "bracerighttp",                      494, NULL },
+  { "xi",                                493, NULL },
+  { "period",                            250, NULL },
+  { "Alpha",                             722, NULL },
+  { "arrowright",                        987, NULL },
+  { "greater",                           549, NULL },
+  { "bracketlefttp",                     384, NULL },
+  { "kappa",                             549, NULL },
+  { "gradient",                          713, NULL },
+  { "integral",                          274, NULL },
+  { "arrowboth",                        1042, NULL },
+  { "Beta",                              667, NULL }
+};
+
+static BuiltinFontWidth timesBoldWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             250, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         570, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        520, NULL },
+  { "colon",                             333, NULL },
+  { "onehalf",                           750, NULL },
+  { "dollar",                            500, NULL },
+  { "ntilde",                            556, NULL },
+  { "minus",                             570, NULL },
+  { "yen",                               500, NULL },
+  { "space",                             250, NULL },
+  { "questiondown",                      500, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            722, NULL },
+  { "three",                             500, NULL },
+  { "numbersign",                        500, NULL },
+  { "A",                                 722, NULL },
+  { "B",                                 667, NULL },
+  { "C",                                 722, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 667, NULL },
+  { "onequarter",                        750, NULL },
+  { "F",                                 611, NULL },
+  { "G",                                 778, NULL },
+  { "H",                                 778, NULL },
+  { "I",                                 389, NULL },
+  { "J",                                 500, NULL },
+  { "K",                                 778, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 667, NULL },
+  { "periodcentered",                    250, NULL },
+  { "M",                                 944, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 778, NULL },
+  { "P",                                 611, NULL },
+  { "Q",                                 778, NULL },
+  { "R",                                 722, NULL },
+  { "Aacute",                            722, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 556, NULL },
+  { "T",                                 667, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            500, NULL },
+  { "V",                                 722, NULL },
+  { "W",                                1000, NULL },
+  { "X",                                 722, NULL },
+  { "question",                          500, NULL },
+  { "equal",                             570, NULL },
+  { "Y",                                 722, NULL },
+  { "Z",                                 667, NULL },
+  { "four",                              500, NULL },
+  { "a",                                 500, NULL },
+  { "b",                                 556, NULL },
+  { "c",                                 444, NULL },
+  { "d",                                 556, NULL },
+  { "e",                                 444, NULL },
+  { "f",                                 333, NULL },
+  { "g",                                 500, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 556, NULL },
+  { "i",                                 278, NULL },
+  { "Oslash",                            778, NULL },
+  { "dagger",                            500, NULL },
+  { "j",                                 333, NULL },
+  { "k",                                 556, NULL },
+  { "l",                                 278, NULL },
+  { "m",                                 833, NULL },
+  { "n",                                 556, NULL },
+  { "o",                                 500, NULL },
+  { "ordfeminine",                       300, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 556, NULL },
+  { "q",                                 556, NULL },
+  { "r",                                 444, NULL },
+  { "twosuperior",                       300, NULL },
+  { "aacute",                            500, NULL },
+  { "s",                                 389, NULL },
+  { "OE",                               1000, NULL },
+  { "t",                                 333, NULL },
+  { "divide",                            570, NULL },
+  { "u",                                 556, NULL },
+  { "v",                                 500, NULL },
+  { "w",                                 722, NULL },
+  { "x",                                 500, NULL },
+  { "y",                                 500, NULL },
+  { "z",                                 444, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          555, NULL },
+  { "mu",                                556, NULL },
+  { "Scaron",                            556, NULL },
+  { "Lslash",                            667, NULL },
+  { "semicolon",                         333, NULL },
+  { "oslash",                            500, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       667, NULL },
+  { "trademark",                        1000, NULL },
+  { "daggerdbl",                         500, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            778, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            389, NULL },
+  { "AE",                               1000, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            278, NULL },
+  { "quotedblleft",                      500, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       278, NULL },
+  { "eight",                             500, NULL },
+  { "exclamdown",                        333, NULL },
+  { "endash",                            500, NULL },
+  { "oe",                                722, NULL },
+  { "ecircumflex",                       444, NULL },
+  { "copyright",                         747, NULL },
+  { "Adieresis",                         722, NULL },
+  { "Egrave",                            667, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         667, NULL },
+  { "otilde",                            500, NULL },
+  { "Idieresis",                         389, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               500, NULL },
+  { "ucircumflex",                       556, NULL },
+  { "Odieresis",                         778, NULL },
+  { "bracketleft",                       333, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        333, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         722, NULL },
+  { "Eacute",                            667, NULL },
+  { "adieresis",                         500, NULL },
+  { "egrave",                            444, NULL },
+  { "edieresis",                         444, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                722, NULL },
+  { "asterisk",                          500, NULL },
+  { "odieresis",                         500, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            556, NULL },
+  { "nine",                              500, NULL },
+  { "five",                              500, NULL },
+  { "udieresis",                         556, NULL },
+  { "Zcaron",                            667, NULL },
+  { "threequarters",                     750, NULL },
+  { "guillemotright",                    500, NULL },
+  { "ydieresis",                         500, NULL },
+  { "Ccedilla",                          722, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                                930, NULL },
+  { "eacute",                            444, NULL },
+  { "underscore",                        500, NULL },
+  { "multiply",                          570, NULL },
+  { "zero",                              500, NULL },
+  { "eth",                               500, NULL },
+  { "Ograve",                            778, NULL },
+  { "uacute",                            556, NULL },
+  { "braceleft",                         394, NULL },
+  { "Thorn",                             611, NULL },
+  { "zcaron",                            444, NULL },
+  { "ccedilla",                          444, NULL },
+  { "Ocircumflex",                       778, NULL },
+  { "Oacute",                            778, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            500, NULL },
+  { "thorn",                             556, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        747, NULL },
+  { "Aring",                             722, NULL },
+  { "percent",                          1000, NULL },
+  { "six",                               500, NULL },
+  { "paragraph",                         540, NULL },
+  { "two",                               500, NULL },
+  { "Igrave",                            389, NULL },
+  { "ocircumflex",                       500, NULL },
+  { "oacute",                            500, NULL },
+  { "asciicircum",                       581, NULL },
+  { "aring",                             500, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      333, NULL },
+  { "Iacute",                            389, NULL },
+  { "ampersand",                         833, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              570, NULL },
+  { "quotesinglbase",                    333, NULL },
+  { "Yacute",                            722, NULL },
+  { "threesuperior",                     300, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           500, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      500, NULL },
+  { "florin",                            500, NULL },
+  { "yacute",                            500, NULL },
+  { "fi",                                556, NULL },
+  { "fl",                                556, NULL },
+  { "Acircumflex",                       722, NULL },
+  { "Icircumflex",                       389, NULL },
+  { "guillemotleft",                     500, NULL },
+  { "germandbls",                        556, NULL },
+  { "seven",                             500, NULL },
+  { "ordmasculine",                      330, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          500, NULL },
+  { "acircumflex",                       500, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        394, NULL },
+  { "quotedblright",                     500, NULL },
+  { "cent",                              500, NULL },
+  { "currency",                          500, NULL },
+  { "logicalnot",                        570, NULL },
+  { "Atilde",                            722, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               220, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              570, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            333, NULL },
+  { "period",                            250, NULL },
+  { "greater",                           570, NULL },
+  { "atilde",                            500, NULL },
+  { "brokenbar",                         220, NULL },
+  { "quoteleft",                         333, NULL },
+  { "onesuperior",                       300, NULL }
+};
+
+static BuiltinFontWidth timesBoldItalicWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             250, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         570, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        570, NULL },
+  { "colon",                             333, NULL },
+  { "onehalf",                           750, NULL },
+  { "dollar",                            500, NULL },
+  { "ntilde",                            556, NULL },
+  { "minus",                             606, NULL },
+  { "yen",                               500, NULL },
+  { "space",                             250, NULL },
+  { "questiondown",                      500, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            667, NULL },
+  { "three",                             500, NULL },
+  { "numbersign",                        500, NULL },
+  { "A",                                 667, NULL },
+  { "B",                                 667, NULL },
+  { "C",                                 667, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 667, NULL },
+  { "onequarter",                        750, NULL },
+  { "F",                                 667, NULL },
+  { "G",                                 722, NULL },
+  { "H",                                 778, NULL },
+  { "I",                                 389, NULL },
+  { "J",                                 500, NULL },
+  { "K",                                 667, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 611, NULL },
+  { "periodcentered",                    250, NULL },
+  { "M",                                 889, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 722, NULL },
+  { "P",                                 611, NULL },
+  { "Q",                                 722, NULL },
+  { "R",                                 667, NULL },
+  { "Aacute",                            667, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 556, NULL },
+  { "T",                                 611, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            500, NULL },
+  { "V",                                 667, NULL },
+  { "W",                                 889, NULL },
+  { "X",                                 667, NULL },
+  { "question",                          500, NULL },
+  { "equal",                             570, NULL },
+  { "Y",                                 611, NULL },
+  { "Z",                                 611, NULL },
+  { "four",                              500, NULL },
+  { "a",                                 500, NULL },
+  { "b",                                 500, NULL },
+  { "c",                                 444, NULL },
+  { "d",                                 500, NULL },
+  { "e",                                 444, NULL },
+  { "f",                                 333, NULL },
+  { "g",                                 500, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 556, NULL },
+  { "i",                                 278, NULL },
+  { "Oslash",                            722, NULL },
+  { "dagger",                            500, NULL },
+  { "j",                                 278, NULL },
+  { "k",                                 500, NULL },
+  { "l",                                 278, NULL },
+  { "m",                                 778, NULL },
+  { "n",                                 556, NULL },
+  { "o",                                 500, NULL },
+  { "ordfeminine",                       266, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 500, NULL },
+  { "q",                                 500, NULL },
+  { "r",                                 389, NULL },
+  { "twosuperior",                       300, NULL },
+  { "aacute",                            500, NULL },
+  { "s",                                 389, NULL },
+  { "OE",                                944, NULL },
+  { "t",                                 278, NULL },
+  { "divide",                            570, NULL },
+  { "u",                                 556, NULL },
+  { "v",                                 444, NULL },
+  { "w",                                 667, NULL },
+  { "x",                                 500, NULL },
+  { "y",                                 444, NULL },
+  { "z",                                 389, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          555, NULL },
+  { "mu",                                576, NULL },
+  { "Scaron",                            556, NULL },
+  { "Lslash",                            611, NULL },
+  { "semicolon",                         333, NULL },
+  { "oslash",                            500, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       667, NULL },
+  { "trademark",                        1000, NULL },
+  { "daggerdbl",                         500, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            722, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            389, NULL },
+  { "AE",                                944, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            278, NULL },
+  { "quotedblleft",                      500, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       278, NULL },
+  { "eight",                             500, NULL },
+  { "exclamdown",                        389, NULL },
+  { "endash",                            500, NULL },
+  { "oe",                                722, NULL },
+  { "ecircumflex",                       444, NULL },
+  { "copyright",                         747, NULL },
+  { "Adieresis",                         667, NULL },
+  { "Egrave",                            667, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         667, NULL },
+  { "otilde",                            500, NULL },
+  { "Idieresis",                         389, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               500, NULL },
+  { "ucircumflex",                       556, NULL },
+  { "Odieresis",                         722, NULL },
+  { "bracketleft",                       333, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        333, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         611, NULL },
+  { "Eacute",                            667, NULL },
+  { "adieresis",                         500, NULL },
+  { "egrave",                            444, NULL },
+  { "edieresis",                         444, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                722, NULL },
+  { "asterisk",                          500, NULL },
+  { "odieresis",                         500, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            556, NULL },
+  { "nine",                              500, NULL },
+  { "five",                              500, NULL },
+  { "udieresis",                         556, NULL },
+  { "Zcaron",                            611, NULL },
+  { "threequarters",                     750, NULL },
+  { "guillemotright",                    500, NULL },
+  { "ydieresis",                         444, NULL },
+  { "Ccedilla",                          667, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                                832, NULL },
+  { "eacute",                            444, NULL },
+  { "underscore",                        500, NULL },
+  { "multiply",                          570, NULL },
+  { "zero",                              500, NULL },
+  { "eth",                               500, NULL },
+  { "Ograve",                            722, NULL },
+  { "uacute",                            556, NULL },
+  { "braceleft",                         348, NULL },
+  { "Thorn",                             611, NULL },
+  { "zcaron",                            389, NULL },
+  { "ccedilla",                          444, NULL },
+  { "Ocircumflex",                       722, NULL },
+  { "Oacute",                            722, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            500, NULL },
+  { "thorn",                             500, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        747, NULL },
+  { "Aring",                             667, NULL },
+  { "percent",                           833, NULL },
+  { "six",                               500, NULL },
+  { "paragraph",                         500, NULL },
+  { "two",                               500, NULL },
+  { "Igrave",                            389, NULL },
+  { "ocircumflex",                       500, NULL },
+  { "oacute",                            500, NULL },
+  { "asciicircum",                       570, NULL },
+  { "aring",                             500, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      333, NULL },
+  { "Iacute",                            389, NULL },
+  { "ampersand",                         778, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              570, NULL },
+  { "quotesinglbase",                    333, NULL },
+  { "Yacute",                            611, NULL },
+  { "threesuperior",                     300, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           500, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      500, NULL },
+  { "florin",                            500, NULL },
+  { "yacute",                            444, NULL },
+  { "fi",                                556, NULL },
+  { "fl",                                556, NULL },
+  { "Acircumflex",                       667, NULL },
+  { "Icircumflex",                       389, NULL },
+  { "guillemotleft",                     500, NULL },
+  { "germandbls",                        500, NULL },
+  { "seven",                             500, NULL },
+  { "ordmasculine",                      300, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          500, NULL },
+  { "acircumflex",                       500, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        348, NULL },
+  { "quotedblright",                     500, NULL },
+  { "cent",                              500, NULL },
+  { "currency",                          500, NULL },
+  { "logicalnot",                        606, NULL },
+  { "Atilde",                            667, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               220, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              570, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            389, NULL },
+  { "period",                            250, NULL },
+  { "greater",                           570, NULL },
+  { "atilde",                            500, NULL },
+  { "brokenbar",                         220, NULL },
+  { "quoteleft",                         333, NULL },
+  { "onesuperior",                       300, NULL }
+};
+
+static BuiltinFontWidth timesItalicWidthsTab[] = {
+  { "Ntilde",                            667, NULL },
+  { "comma",                             250, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         675, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        541, NULL },
+  { "colon",                             333, NULL },
+  { "onehalf",                           750, NULL },
+  { "dollar",                            500, NULL },
+  { "ntilde",                            500, NULL },
+  { "minus",                             675, NULL },
+  { "yen",                               500, NULL },
+  { "space",                             250, NULL },
+  { "questiondown",                      500, NULL },
+  { "emdash",                            889, NULL },
+  { "Agrave",                            611, NULL },
+  { "three",                             500, NULL },
+  { "numbersign",                        500, NULL },
+  { "A",                                 611, NULL },
+  { "B",                                 611, NULL },
+  { "C",                                 667, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 611, NULL },
+  { "onequarter",                        750, NULL },
+  { "F",                                 611, NULL },
+  { "G",                                 722, NULL },
+  { "H",                                 722, NULL },
+  { "I",                                 333, NULL },
+  { "J",                                 444, NULL },
+  { "K",                                 667, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 556, NULL },
+  { "periodcentered",                    250, NULL },
+  { "M",                                 833, NULL },
+  { "N",                                 667, NULL },
+  { "O",                                 722, NULL },
+  { "P",                                 611, NULL },
+  { "Q",                                 722, NULL },
+  { "R",                                 611, NULL },
+  { "Aacute",                            611, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 500, NULL },
+  { "T",                                 556, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            500, NULL },
+  { "V",                                 611, NULL },
+  { "W",                                 833, NULL },
+  { "X",                                 611, NULL },
+  { "question",                          500, NULL },
+  { "equal",                             675, NULL },
+  { "Y",                                 556, NULL },
+  { "Z",                                 556, NULL },
+  { "four",                              500, NULL },
+  { "a",                                 500, NULL },
+  { "b",                                 500, NULL },
+  { "c",                                 444, NULL },
+  { "d",                                 500, NULL },
+  { "e",                                 444, NULL },
+  { "f",                                 278, NULL },
+  { "g",                                 500, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 500, NULL },
+  { "i",                                 278, NULL },
+  { "Oslash",                            722, NULL },
+  { "dagger",                            500, NULL },
+  { "j",                                 278, NULL },
+  { "k",                                 444, NULL },
+  { "l",                                 278, NULL },
+  { "m",                                 722, NULL },
+  { "n",                                 500, NULL },
+  { "o",                                 500, NULL },
+  { "ordfeminine",                       276, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 500, NULL },
+  { "q",                                 500, NULL },
+  { "r",                                 389, NULL },
+  { "twosuperior",                       300, NULL },
+  { "aacute",                            500, NULL },
+  { "s",                                 389, NULL },
+  { "OE",                                944, NULL },
+  { "t",                                 278, NULL },
+  { "divide",                            675, NULL },
+  { "u",                                 500, NULL },
+  { "v",                                 444, NULL },
+  { "w",                                 667, NULL },
+  { "x",                                 444, NULL },
+  { "y",                                 444, NULL },
+  { "z",                                 389, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          420, NULL },
+  { "mu",                                500, NULL },
+  { "Scaron",                            500, NULL },
+  { "Lslash",                            556, NULL },
+  { "semicolon",                         333, NULL },
+  { "oslash",                            500, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       611, NULL },
+  { "trademark",                         980, NULL },
+  { "daggerdbl",                         500, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            722, NULL },
+  { "ellipsis",                          889, NULL },
+  { "scaron",                            389, NULL },
+  { "AE",                                889, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            278, NULL },
+  { "quotedblleft",                      556, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       214, NULL },
+  { "eight",                             500, NULL },
+  { "exclamdown",                        389, NULL },
+  { "endash",                            500, NULL },
+  { "oe",                                667, NULL },
+  { "ecircumflex",                       444, NULL },
+  { "copyright",                         760, NULL },
+  { "Adieresis",                         611, NULL },
+  { "Egrave",                            611, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         611, NULL },
+  { "otilde",                            500, NULL },
+  { "Idieresis",                         333, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               500, NULL },
+  { "ucircumflex",                       500, NULL },
+  { "Odieresis",                         722, NULL },
+  { "bracketleft",                       389, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        333, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         556, NULL },
+  { "Eacute",                            611, NULL },
+  { "adieresis",                         500, NULL },
+  { "egrave",                            444, NULL },
+  { "edieresis",                         444, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                667, NULL },
+  { "asterisk",                          500, NULL },
+  { "odieresis",                         500, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            500, NULL },
+  { "nine",                              500, NULL },
+  { "five",                              500, NULL },
+  { "udieresis",                         500, NULL },
+  { "Zcaron",                            556, NULL },
+  { "threequarters",                     750, NULL },
+  { "guillemotright",                    500, NULL },
+  { "ydieresis",                         444, NULL },
+  { "Ccedilla",                          667, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                                920, NULL },
+  { "eacute",                            444, NULL },
+  { "underscore",                        500, NULL },
+  { "multiply",                          675, NULL },
+  { "zero",                              500, NULL },
+  { "eth",                               500, NULL },
+  { "Ograve",                            722, NULL },
+  { "uacute",                            500, NULL },
+  { "braceleft",                         400, NULL },
+  { "Thorn",                             611, NULL },
+  { "zcaron",                            389, NULL },
+  { "ccedilla",                          444, NULL },
+  { "Ocircumflex",                       722, NULL },
+  { "Oacute",                            722, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            500, NULL },
+  { "thorn",                             500, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        760, NULL },
+  { "Aring",                             611, NULL },
+  { "percent",                           833, NULL },
+  { "six",                               500, NULL },
+  { "paragraph",                         523, NULL },
+  { "two",                               500, NULL },
+  { "Igrave",                            333, NULL },
+  { "ocircumflex",                       500, NULL },
+  { "oacute",                            500, NULL },
+  { "asciicircum",                       422, NULL },
+  { "aring",                             500, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      389, NULL },
+  { "Iacute",                            333, NULL },
+  { "ampersand",                         778, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              675, NULL },
+  { "quotesinglbase",                    333, NULL },
+  { "Yacute",                            556, NULL },
+  { "threesuperior",                     300, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           500, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      556, NULL },
+  { "florin",                            500, NULL },
+  { "yacute",                            444, NULL },
+  { "fi",                                500, NULL },
+  { "fl",                                500, NULL },
+  { "Acircumflex",                       611, NULL },
+  { "Icircumflex",                       333, NULL },
+  { "guillemotleft",                     500, NULL },
+  { "germandbls",                        500, NULL },
+  { "seven",                             500, NULL },
+  { "ordmasculine",                      310, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          500, NULL },
+  { "acircumflex",                       500, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        400, NULL },
+  { "quotedblright",                     556, NULL },
+  { "cent",                              500, NULL },
+  { "currency",                          500, NULL },
+  { "logicalnot",                        675, NULL },
+  { "Atilde",                            611, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               275, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              675, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            333, NULL },
+  { "period",                            250, NULL },
+  { "greater",                           675, NULL },
+  { "atilde",                            500, NULL },
+  { "brokenbar",                         275, NULL },
+  { "quoteleft",                         333, NULL },
+  { "onesuperior",                       300, NULL }
+};
+
+static BuiltinFontWidth timesRomanWidthsTab[] = {
+  { "Ntilde",                            722, NULL },
+  { "comma",                             250, NULL },
+  { "cedilla",                           333, NULL },
+  { "plusminus",                         564, NULL },
+  { "circumflex",                        333, NULL },
+  { "dotaccent",                         333, NULL },
+  { "asciitilde",                        541, NULL },
+  { "colon",                             278, NULL },
+  { "onehalf",                           750, NULL },
+  { "dollar",                            500, NULL },
+  { "ntilde",                            500, NULL },
+  { "minus",                             564, NULL },
+  { "yen",                               500, NULL },
+  { "space",                             250, NULL },
+  { "questiondown",                      444, NULL },
+  { "emdash",                           1000, NULL },
+  { "Agrave",                            722, NULL },
+  { "three",                             500, NULL },
+  { "numbersign",                        500, NULL },
+  { "A",                                 722, NULL },
+  { "B",                                 667, NULL },
+  { "C",                                 667, NULL },
+  { "D",                                 722, NULL },
+  { "E",                                 611, NULL },
+  { "onequarter",                        750, NULL },
+  { "F",                                 556, NULL },
+  { "G",                                 722, NULL },
+  { "H",                                 722, NULL },
+  { "I",                                 333, NULL },
+  { "J",                                 389, NULL },
+  { "K",                                 722, NULL },
+  { "backslash",                         278, NULL },
+  { "L",                                 611, NULL },
+  { "periodcentered",                    250, NULL },
+  { "M",                                 889, NULL },
+  { "N",                                 722, NULL },
+  { "O",                                 722, NULL },
+  { "P",                                 556, NULL },
+  { "Q",                                 722, NULL },
+  { "R",                                 667, NULL },
+  { "Aacute",                            722, NULL },
+  { "caron",                             333, NULL },
+  { "S",                                 556, NULL },
+  { "T",                                 611, NULL },
+  { "U",                                 722, NULL },
+  { "agrave",                            444, NULL },
+  { "V",                                 722, NULL },
+  { "W",                                 944, NULL },
+  { "X",                                 722, NULL },
+  { "question",                          444, NULL },
+  { "equal",                             564, NULL },
+  { "Y",                                 722, NULL },
+  { "Z",                                 611, NULL },
+  { "four",                              500, NULL },
+  { "a",                                 444, NULL },
+  { "b",                                 500, NULL },
+  { "c",                                 444, NULL },
+  { "d",                                 500, NULL },
+  { "e",                                 444, NULL },
+  { "f",                                 333, NULL },
+  { "g",                                 500, NULL },
+  { "bullet",                            350, NULL },
+  { "h",                                 500, NULL },
+  { "i",                                 278, NULL },
+  { "Oslash",                            722, NULL },
+  { "dagger",                            500, NULL },
+  { "j",                                 278, NULL },
+  { "k",                                 500, NULL },
+  { "l",                                 278, NULL },
+  { "m",                                 778, NULL },
+  { "n",                                 500, NULL },
+  { "o",                                 500, NULL },
+  { "ordfeminine",                       276, NULL },
+  { "ring",                              333, NULL },
+  { "p",                                 500, NULL },
+  { "q",                                 500, NULL },
+  { "r",                                 333, NULL },
+  { "twosuperior",                       300, NULL },
+  { "aacute",                            444, NULL },
+  { "s",                                 389, NULL },
+  { "OE",                                889, NULL },
+  { "t",                                 278, NULL },
+  { "divide",                            564, NULL },
+  { "u",                                 500, NULL },
+  { "v",                                 500, NULL },
+  { "w",                                 722, NULL },
+  { "x",                                 500, NULL },
+  { "y",                                 500, NULL },
+  { "z",                                 444, NULL },
+  { "hungarumlaut",                      333, NULL },
+  { "quotedbl",                          408, NULL },
+  { "mu",                                500, NULL },
+  { "Scaron",                            556, NULL },
+  { "Lslash",                            611, NULL },
+  { "semicolon",                         278, NULL },
+  { "oslash",                            500, NULL },
+  { "parenright",                        333, NULL },
+  { "Ecircumflex",                       611, NULL },
+  { "trademark",                         980, NULL },
+  { "daggerdbl",                         500, NULL },
+  { "macron",                            333, NULL },
+  { "Otilde",                            722, NULL },
+  { "ellipsis",                         1000, NULL },
+  { "scaron",                            389, NULL },
+  { "AE",                                889, NULL },
+  { "Ucircumflex",                       722, NULL },
+  { "lslash",                            278, NULL },
+  { "quotedblleft",                      444, NULL },
+  { "guilsinglright",                    333, NULL },
+  { "hyphen",                            333, NULL },
+  { "quotesingle",                       180, NULL },
+  { "eight",                             500, NULL },
+  { "exclamdown",                        333, NULL },
+  { "endash",                            500, NULL },
+  { "oe",                                722, NULL },
+  { "ecircumflex",                       444, NULL },
+  { "copyright",                         760, NULL },
+  { "Adieresis",                         722, NULL },
+  { "Egrave",                            611, NULL },
+  { "slash",                             278, NULL },
+  { "Edieresis",                         611, NULL },
+  { "otilde",                            500, NULL },
+  { "Idieresis",                         333, NULL },
+  { "parenleft",                         333, NULL },
+  { "one",                               500, NULL },
+  { "ucircumflex",                       500, NULL },
+  { "Odieresis",                         722, NULL },
+  { "bracketleft",                       333, NULL },
+  { "Ugrave",                            722, NULL },
+  { "quoteright",                        333, NULL },
+  { "Udieresis",                         722, NULL },
+  { "perthousand",                      1000, NULL },
+  { "Ydieresis",                         722, NULL },
+  { "Eacute",                            611, NULL },
+  { "adieresis",                         444, NULL },
+  { "egrave",                            444, NULL },
+  { "edieresis",                         444, NULL },
+  { "idieresis",                         278, NULL },
+  { "Eth",                               722, NULL },
+  { "ae",                                667, NULL },
+  { "asterisk",                          500, NULL },
+  { "odieresis",                         500, NULL },
+  { "Uacute",                            722, NULL },
+  { "ugrave",                            500, NULL },
+  { "nine",                              500, NULL },
+  { "five",                              500, NULL },
+  { "udieresis",                         500, NULL },
+  { "Zcaron",                            611, NULL },
+  { "threequarters",                     750, NULL },
+  { "guillemotright",                    500, NULL },
+  { "ydieresis",                         500, NULL },
+  { "Ccedilla",                          667, NULL },
+  { "tilde",                             333, NULL },
+  { "at",                                921, NULL },
+  { "eacute",                            444, NULL },
+  { "underscore",                        500, NULL },
+  { "multiply",                          564, NULL },
+  { "zero",                              500, NULL },
+  { "eth",                               500, NULL },
+  { "Ograve",                            722, NULL },
+  { "uacute",                            500, NULL },
+  { "braceleft",                         480, NULL },
+  { "Thorn",                             556, NULL },
+  { "zcaron",                            444, NULL },
+  { "ccedilla",                          444, NULL },
+  { "Ocircumflex",                       722, NULL },
+  { "Oacute",                            722, NULL },
+  { "ogonek",                            333, NULL },
+  { "ograve",                            500, NULL },
+  { "thorn",                             500, NULL },
+  { "degree",                            400, NULL },
+  { "registered",                        760, NULL },
+  { "Aring",                             722, NULL },
+  { "percent",                           833, NULL },
+  { "six",                               500, NULL },
+  { "paragraph",                         453, NULL },
+  { "two",                               500, NULL },
+  { "Igrave",                            333, NULL },
+  { "ocircumflex",                       500, NULL },
+  { "oacute",                            500, NULL },
+  { "asciicircum",                       469, NULL },
+  { "aring",                             444, NULL },
+  { "grave",                             333, NULL },
+  { "bracketright",                      333, NULL },
+  { "Iacute",                            333, NULL },
+  { "ampersand",                         778, NULL },
+  { "igrave",                            278, NULL },
+  { "plus",                              564, NULL },
+  { "quotesinglbase",                    333, NULL },
+  { "Yacute",                            722, NULL },
+  { "threesuperior",                     300, NULL },
+  { "acute",                             333, NULL },
+  { "section",                           500, NULL },
+  { "dieresis",                          333, NULL },
+  { "iacute",                            278, NULL },
+  { "quotedblbase",                      444, NULL },
+  { "florin",                            500, NULL },
+  { "yacute",                            500, NULL },
+  { "fi",                                556, NULL },
+  { "fl",                                556, NULL },
+  { "Acircumflex",                       722, NULL },
+  { "Icircumflex",                       333, NULL },
+  { "guillemotleft",                     500, NULL },
+  { "germandbls",                        500, NULL },
+  { "seven",                             500, NULL },
+  { "ordmasculine",                      310, NULL },
+  { "dotlessi",                          278, NULL },
+  { "sterling",                          500, NULL },
+  { "acircumflex",                       444, NULL },
+  { "icircumflex",                       278, NULL },
+  { "braceright",                        480, NULL },
+  { "quotedblright",                     444, NULL },
+  { "cent",                              500, NULL },
+  { "currency",                          500, NULL },
+  { "logicalnot",                        564, NULL },
+  { "Atilde",                            722, NULL },
+  { "breve",                             333, NULL },
+  { "bar",                               200, NULL },
+  { "fraction",                          167, NULL },
+  { "less",                              564, NULL },
+  { "guilsinglleft",                     333, NULL },
+  { "exclam",                            333, NULL },
+  { "period",                            250, NULL },
+  { "greater",                           564, NULL },
+  { "atilde",                            444, NULL },
+  { "brokenbar",                         200, NULL },
+  { "quoteleft",                         333, NULL },
+  { "onesuperior",                       300, NULL }
+};
+
+static BuiltinFontWidth zapfDingbatsWidthsTab[] = {
+  { "a81",                               438, NULL },
+  { "a82",                               138, NULL },
+  { "a83",                               277, NULL },
+  { "a84",                               415, NULL },
+  { "a85",                               509, NULL },
+  { "a86",                               410, NULL },
+  { "a87",                               234, NULL },
+  { "a88",                               234, NULL },
+  { "a89",                               390, NULL },
+  { "a140",                              788, NULL },
+  { "a141",                              788, NULL },
+  { "a142",                              788, NULL },
+  { "a143",                              788, NULL },
+  { "a144",                              788, NULL },
+  { "a145",                              788, NULL },
+  { "a146",                              788, NULL },
+  { "a147",                              788, NULL },
+  { "a148",                              788, NULL },
+  { "a149",                              788, NULL },
+  { "a90",                               390, NULL },
+  { "a91",                               276, NULL },
+  { "a92",                               276, NULL },
+  { "space",                             278, NULL },
+  { "a93",                               317, NULL },
+  { "a94",                               317, NULL },
+  { "a95",                               334, NULL },
+  { "a96",                               334, NULL },
+  { "a97",                               392, NULL },
+  { "a98",                               392, NULL },
+  { "a99",                               668, NULL },
+  { "a150",                              788, NULL },
+  { "a151",                              788, NULL },
+  { "a152",                              788, NULL },
+  { "a153",                              788, NULL },
+  { "a154",                              788, NULL },
+  { "a155",                              788, NULL },
+  { "a156",                              788, NULL },
+  { "a157",                              788, NULL },
+  { "a158",                              788, NULL },
+  { "a159",                              788, NULL },
+  { "a160",                              894, NULL },
+  { "a161",                              838, NULL },
+  { "a162",                              924, NULL },
+  { "a163",                             1016, NULL },
+  { "a164",                              458, NULL },
+  { "a165",                              924, NULL },
+  { "a166",                              918, NULL },
+  { "a167",                              927, NULL },
+  { "a168",                              928, NULL },
+  { "a169",                              928, NULL },
+  { "a170",                              834, NULL },
+  { "a171",                              873, NULL },
+  { "a172",                              828, NULL },
+  { "a173",                              924, NULL },
+  { "a174",                              917, NULL },
+  { "a175",                              930, NULL },
+  { "a176",                              931, NULL },
+  { "a177",                              463, NULL },
+  { "a178",                              883, NULL },
+  { "a179",                              836, NULL },
+  { "a180",                              867, NULL },
+  { "a181",                              696, NULL },
+  { "a182",                              874, NULL },
+  { "a183",                              760, NULL },
+  { "a184",                              946, NULL },
+  { "a185",                              865, NULL },
+  { "a186",                              967, NULL },
+  { "a187",                              831, NULL },
+  { "a188",                              873, NULL },
+  { "a189",                              927, NULL },
+  { "a1",                                974, NULL },
+  { "a2",                                961, NULL },
+  { "a3",                                980, NULL },
+  { "a4",                                719, NULL },
+  { "a5",                                789, NULL },
+  { "a6",                                494, NULL },
+  { "a7",                                552, NULL },
+  { "a8",                                537, NULL },
+  { "a9",                                577, NULL },
+  { "a190",                              970, NULL },
+  { "a191",                              918, NULL },
+  { "a192",                              748, NULL },
+  { "a193",                              836, NULL },
+  { "a194",                              771, NULL },
+  { "a195",                              888, NULL },
+  { "a196",                              748, NULL },
+  { "a197",                              771, NULL },
+  { "a198",                              888, NULL },
+  { "a199",                              867, NULL },
+  { "a10",                               692, NULL },
+  { "a11",                               960, NULL },
+  { "a12",                               939, NULL },
+  { "a13",                               549, NULL },
+  { "a14",                               855, NULL },
+  { "a15",                               911, NULL },
+  { "a16",                               933, NULL },
+  { "a17",                               945, NULL },
+  { "a18",                               974, NULL },
+  { "a19",                               755, NULL },
+  { "a20",                               846, NULL },
+  { "a21",                               762, NULL },
+  { "a22",                               761, NULL },
+  { "a23",                               571, NULL },
+  { "a24",                               677, NULL },
+  { "a25",                               763, NULL },
+  { "a26",                               760, NULL },
+  { "a27",                               759, NULL },
+  { "a28",                               754, NULL },
+  { "a29",                               786, NULL },
+  { "a30",                               788, NULL },
+  { "a31",                               788, NULL },
+  { "a32",                               790, NULL },
+  { "a33",                               793, NULL },
+  { "a34",                               794, NULL },
+  { "a35",                               816, NULL },
+  { "a36",                               823, NULL },
+  { "a37",                               789, NULL },
+  { "a38",                               841, NULL },
+  { "a39",                               823, NULL },
+  { "a40",                               833, NULL },
+  { "a41",                               816, NULL },
+  { "a42",                               831, NULL },
+  { "a43",                               923, NULL },
+  { "a44",                               744, NULL },
+  { "a45",                               723, NULL },
+  { "a46",                               749, NULL },
+  { "a47",                               790, NULL },
+  { "a48",                               792, NULL },
+  { "a49",                               695, NULL },
+  { "a100",                              668, NULL },
+  { "a101",                              732, NULL },
+  { "a102",                              544, NULL },
+  { "a103",                              544, NULL },
+  { "a104",                              910, NULL },
+  { "a105",                              911, NULL },
+  { "a106",                              667, NULL },
+  { "a107",                              760, NULL },
+  { "a108",                              760, NULL },
+  { "a109",                              626, NULL },
+  { "a50",                               776, NULL },
+  { "a51",                               768, NULL },
+  { "a52",                               792, NULL },
+  { "a53",                               759, NULL },
+  { "a54",                               707, NULL },
+  { "a55",                               708, NULL },
+  { "a56",                               682, NULL },
+  { "a57",                               701, NULL },
+  { "a58",                               826, NULL },
+  { "a59",                               815, NULL },
+  { "a110",                              694, NULL },
+  { "a111",                              595, NULL },
+  { "a112",                              776, NULL },
+  { "a117",                              690, NULL },
+  { "a118",                              791, NULL },
+  { "a119",                              790, NULL },
+  { "a60",                               789, NULL },
+  { "a61",                               789, NULL },
+  { "a62",                               707, NULL },
+  { "a63",                               687, NULL },
+  { "a64",                               696, NULL },
+  { "a65",                               689, NULL },
+  { "a66",                               786, NULL },
+  { "a67",                               787, NULL },
+  { "a68",                               713, NULL },
+  { "a69",                               791, NULL },
+  { "a200",                              696, NULL },
+  { "a201",                              874, NULL },
+  { "a120",                              788, NULL },
+  { "a121",                              788, NULL },
+  { "a202",                              974, NULL },
+  { "a122",                              788, NULL },
+  { "a203",                              762, NULL },
+  { "a123",                              788, NULL },
+  { "a204",                              759, NULL },
+  { "a205",                              509, NULL },
+  { "a124",                              788, NULL },
+  { "a206",                              410, NULL },
+  { "a125",                              788, NULL },
+  { "a126",                              788, NULL },
+  { "a127",                              788, NULL },
+  { "a128",                              788, NULL },
+  { "a129",                              788, NULL },
+  { "a70",                               785, NULL },
+  { "a71",                               791, NULL },
+  { "a72",                               873, NULL },
+  { "a73",                               761, NULL },
+  { "a74",                               762, NULL },
+  { "a75",                               759, NULL },
+  { "a76",                               892, NULL },
+  { "a77",                               892, NULL },
+  { "a78",                               788, NULL },
+  { "a79",                               784, NULL },
+  { "a130",                              788, NULL },
+  { "a131",                              788, NULL },
+  { "a132",                              788, NULL },
+  { "a133",                              788, NULL },
+  { "a134",                              788, NULL },
+  { "a135",                              788, NULL },
+  { "a136",                              788, NULL },
+  { "a137",                              788, NULL },
+  { "a138",                              788, NULL },
+  { "a139",                              788, NULL }
+};
+
+BuiltinFont builtinFonts[] = {
+  { "Courier",               standardEncoding,            624, -207, { -40, -290,  640,  795}, NULL },
+  { "Courier-Bold",          standardEncoding,            674, -257, {-100, -350,  700,  855}, NULL },
+  { "Courier-BoldOblique",   standardEncoding,            674, -257, {-145, -350,  817,  855}, NULL },
+  { "Courier-Oblique",       standardEncoding,            624, -207, { -85, -290,  759,  795}, NULL },
+  { "Helvetica",             standardEncoding,            729, -219, {-174, -220, 1001,  944}, NULL },
+  { "Helvetica-Bold",        standardEncoding,            729, -219, {-173, -221, 1003,  936}, NULL },
+  { "Helvetica-BoldOblique", standardEncoding,            729, -219, {-177, -221, 1107,  936}, NULL },
+  { "Helvetica-Oblique",     standardEncoding,            729, -219, {-178, -220, 1108,  944}, NULL },
+  { "Symbol",                symbolEncoding,             1010, -293, {-180, -293, 1090, 1010}, NULL },
+  { "Times-Bold",            standardEncoding,            670, -210, {-172, -256, 1008,  965}, NULL },
+  { "Times-BoldItalic",      standardEncoding,            682, -203, {-168, -232, 1014,  894}, NULL },
+  { "Times-Italic",          standardEncoding,            684, -206, {-176, -252,  990,  930}, NULL },
+  { "Times-Roman",           standardEncoding,            682, -217, {-170, -223, 1024,  896}, NULL },
+  { "ZapfDingbats",          zapfDingbatsEncoding,        820, -143, {  -1, -143,  981,  820}, NULL }
+};
+
+BuiltinFont *builtinFontSubst[] = {
+  &builtinFonts[0],
+  &builtinFonts[3],
+  &builtinFonts[1],
+  &builtinFonts[2],
+  &builtinFonts[4],
+  &builtinFonts[7],
+  &builtinFonts[5],
+  &builtinFonts[6],
+  &builtinFonts[12],
+  &builtinFonts[11],
+  &builtinFonts[9],
+  &builtinFonts[10]
+};
+
+void initBuiltinFontTables() {
+  builtinFonts[0].widths = new BuiltinFontWidths(courierWidthsTab, 260);
+  builtinFonts[1].widths = new BuiltinFontWidths(courierBoldWidthsTab, 260);
+  builtinFonts[2].widths = new BuiltinFontWidths(courierBoldObliqueWidthsTab, 260);
+  builtinFonts[3].widths = new BuiltinFontWidths(courierObliqueWidthsTab, 260);
+  builtinFonts[4].widths = new BuiltinFontWidths(helveticaWidthsTab, 228);
+  builtinFonts[5].widths = new BuiltinFontWidths(helveticaBoldWidthsTab, 228);
+  builtinFonts[6].widths = new BuiltinFontWidths(helveticaBoldObliqueWidthsTab, 228);
+  builtinFonts[7].widths = new BuiltinFontWidths(helveticaObliqueWidthsTab, 228);
+  builtinFonts[8].widths = new BuiltinFontWidths(symbolWidthsTab, 189);
+  builtinFonts[9].widths = new BuiltinFontWidths(timesBoldWidthsTab, 228);
+  builtinFonts[10].widths = new BuiltinFontWidths(timesBoldItalicWidthsTab, 228);
+  builtinFonts[11].widths = new BuiltinFontWidths(timesItalicWidthsTab, 228);
+  builtinFonts[12].widths = new BuiltinFontWidths(timesRomanWidthsTab, 228);
+  builtinFonts[13].widths = new BuiltinFontWidths(zapfDingbatsWidthsTab, 202);
+}
+
+void freeBuiltinFontTables() {
+  int i;
+
+  for (i = 0; i < 14; ++i) {
+    delete builtinFonts[i].widths;
+  }
+}
diff --git a/pdf/xpdf/BuiltinFontTables.h b/pdf/xpdf/BuiltinFontTables.h
new file mode 100644 (file)
index 0000000..3a8892e
--- /dev/null
@@ -0,0 +1,23 @@
+//========================================================================
+//
+// BuiltinFontTables.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef BUILTINFONTTABLES_H
+#define BUILTINFONTTABLES_H
+
+#include "BuiltinFont.h"
+
+#define nBuiltinFonts      14
+#define nBuiltinFontSubsts 12
+
+extern BuiltinFont builtinFonts[nBuiltinFonts];
+extern BuiltinFont *builtinFontSubst[nBuiltinFontSubsts];
+
+extern void initBuiltinFontTables();
+extern void freeBuiltinFontTables();
+
+#endif
diff --git a/pdf/xpdf/CMap.cc b/pdf/xpdf/CMap.cc
new file mode 100644 (file)
index 0000000..b49cffd
--- /dev/null
@@ -0,0 +1,359 @@
+//========================================================================
+//
+// CMap.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include "gmem.h"
+#include "gfile.h"
+#include "GString.h"
+#include "Error.h"
+#include "GlobalParams.h"
+#include "PSTokenizer.h"
+#include "CMap.h"
+
+//------------------------------------------------------------------------
+
+struct CMapVectorEntry {
+  GBool isVector;
+  union {
+    CMapVectorEntry *vector;
+    CID cid;
+  };
+};
+
+//------------------------------------------------------------------------
+
+static int getCharFromFile(void *data) {
+  return fgetc((FILE *)data);
+}
+
+//------------------------------------------------------------------------
+
+CMap *CMap::parse(CMapCache *cache, GString *collectionA,
+                 GString *cMapNameA) {
+  FILE *f;
+  CMap *cmap;
+  PSTokenizer *pst;
+  char tok1[256], tok2[256], tok3[256];
+  int n1, n2, n3;
+  Guint start, end;
+
+  if (!(f = globalParams->findCMapFile(collectionA, cMapNameA))) {
+
+    // Check for an identity CMap.
+    if (!cMapNameA->cmp("Identity") || !cMapNameA->cmp("Identity-H")) {
+      return new CMap(collectionA->copy(), cMapNameA->copy(), 0);
+    }
+    if (!cMapNameA->cmp("Identity-V")) {
+      return new CMap(collectionA->copy(), cMapNameA->copy(), 1);
+    }
+
+    error(-1, "Couldn't find '%s' CMap file for '%s' collection",
+         cMapNameA->getCString(), collectionA->getCString());
+    return NULL;
+  }
+
+  cmap = new CMap(collectionA->copy(), cMapNameA->copy());
+
+  pst = new PSTokenizer(&getCharFromFile, f);
+  pst->getToken(tok1, sizeof(tok1), &n1);
+  while (pst->getToken(tok2, sizeof(tok2), &n2)) {
+    if (!strcmp(tok2, "usecmap")) {
+      if (tok1[0] == '/') {
+       cmap->useCMap(cache, tok1 + 1);
+      }
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else if (!strcmp(tok1, "/WMode")) {
+      cmap->wMode = atoi(tok2);
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else if (!strcmp(tok2, "begincodespacerange")) {
+      while (pst->getToken(tok1, sizeof(tok1), &n1)) {
+       if (!strcmp(tok1, "endcodespacerange")) {
+         break;
+       }
+       if (!pst->getToken(tok2, sizeof(tok2), &n2) ||
+           !strcmp(tok2, "endcodespacerange")) {
+         error(-1, "Illegal entry in codespacerange block in CMap");
+         break;
+       }
+       if (tok1[0] == '<' && tok2[0] == '<' &&
+           n1 == n2 && n1 >= 4 && (n1 & 1) == 0) {
+         tok1[n1 - 1] = tok2[n1 - 1] = '\0';
+         sscanf(tok1 + 1, "%x", &start);
+         sscanf(tok2 + 1, "%x", &end);
+         n1 = (n1 - 2) / 2;
+         cmap->addCodeSpace(cmap->vector, start, end, n1);
+       }
+      }
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else if (!strcmp(tok2, "begincidrange")) {
+      while (pst->getToken(tok1, sizeof(tok1), &n1)) {
+       if (!strcmp(tok1, "endcidrange")) {
+         break;
+       }
+       if (!pst->getToken(tok2, sizeof(tok2), &n2) ||
+           !strcmp(tok2, "endcidrange") ||
+           !pst->getToken(tok3, sizeof(tok3), &n3) ||
+           !strcmp(tok3, "endcidrange")) {
+         error(-1, "Illegal entry in cidrange block in CMap");
+         break;
+       }
+       if (tok1[0] == '<' && tok2[0] == '<' &&
+           n1 == n2 && n1 >= 4 && (n1 & 1) == 0) {
+         tok1[n1 - 1] = tok2[n1 - 1] = '\0';
+         sscanf(tok1 + 1, "%x", &start);
+         sscanf(tok2 + 1, "%x", &end);
+         n1 = (n1 - 2) / 2;
+         cmap->addCIDs(start, end, n1, (CID)atoi(tok3));
+       }
+      }
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else {
+      strcpy(tok1, tok2);
+    }
+  }
+  delete pst;
+
+  fclose(f);
+
+  return cmap;
+}
+
+CMap::CMap(GString *collectionA, GString *cMapNameA) {
+  int i;
+
+  collection = collectionA;
+  cMapName = cMapNameA;
+  wMode = 0;
+  vector = (CMapVectorEntry *)gmalloc(256 * sizeof(CMapVectorEntry));
+  for (i = 0; i < 256; ++i) {
+    vector[i].isVector = gFalse;
+    vector[i].cid = 0;
+  }
+  refCnt = 1;
+}
+
+CMap::CMap(GString *collectionA, GString *cMapNameA, int wModeA) {
+  collection = collectionA;
+  cMapName = cMapNameA;
+  wMode = wModeA;
+  vector = NULL;
+  refCnt = 1;
+}
+
+void CMap::useCMap(CMapCache *cache, char *useName) {
+  GString *useNameStr;
+  CMap *subCMap;
+
+  useNameStr = new GString(useName);
+  subCMap = cache->getCMap(collection, useNameStr);
+  delete useNameStr;
+  if (!subCMap) {
+    return;
+  }
+  copyVector(vector, subCMap->vector);
+  subCMap->decRefCnt();
+}
+
+void CMap::copyVector(CMapVectorEntry *dest, CMapVectorEntry *src) {
+  int i, j;
+
+  for (i = 0; i < 256; ++i) {
+    if (src[i].isVector) {
+      if (!dest[i].isVector) {
+       dest[i].isVector = gTrue;
+       dest[i].vector =
+         (CMapVectorEntry *)gmalloc(256 * sizeof(CMapVectorEntry));
+       for (j = 0; j < 256; ++j) {
+         dest[i].vector[j].isVector = gFalse;
+         dest[i].vector[j].cid = 0;
+       }
+      }
+      copyVector(dest[i].vector, src[i].vector);
+    } else {
+      if (dest[i].isVector) {
+       error(-1, "Collision in usecmap");
+      } else {
+       dest[i].cid = src[i].cid;
+      }
+    }
+  }
+}
+
+void CMap::addCodeSpace(CMapVectorEntry *vec, Guint start, Guint end,
+                       Guint nBytes) {
+  Guint start2, end2;
+  int startByte, endByte, i, j;
+
+  if (nBytes > 1) {
+    startByte = (start >> (8 * (nBytes - 1))) & 0xff;
+    endByte = (end >> (8 * (nBytes - 1))) & 0xff;
+    start2 = start & ((1 << (8 * (nBytes - 1))) - 1);
+    end2 = end & ((1 << (8 * (nBytes - 1))) - 1);
+    for (i = startByte; i <= endByte; ++i) {
+      if (!vec[i].isVector) {
+       vec[i].isVector = gTrue;
+       vec[i].vector =
+         (CMapVectorEntry *)gmalloc(256 * sizeof(CMapVectorEntry));
+       for (j = 0; j < 256; ++j) {
+         vec[i].vector[j].isVector = gFalse;
+         vec[i].vector[j].cid = 0;
+       }
+      }
+      addCodeSpace(vec[i].vector, start2, end2, nBytes - 1);
+    }
+  }
+}
+
+void CMap::addCIDs(Guint start, Guint end, Guint nBytes, CID firstCID) {
+  CMapVectorEntry *vec;
+  CID cid;
+  int byte;
+  Guint i;
+
+  vec = vector;
+  for (i = nBytes - 1; i >= 1; --i) {
+    byte = (start >> (8 * i)) & 0xff;
+    if (!vec[byte].isVector) {
+      error(-1, "Invalid CID (%*x - %*x) in CMap",
+           2*nBytes, start, 2*nBytes, end);
+      return;
+    }
+    vec = vec[byte].vector;
+  }
+  cid = firstCID;
+  for (byte = (int)(start & 0xff); byte <= (int)(end & 0xff); ++byte) {
+    if (vec[byte].isVector) {
+      error(-1, "Invalid CID (%*x - %*x) in CMap",
+           2*nBytes, start, 2*nBytes, end);
+    } else {
+      vec[byte].cid = cid;
+    }
+    ++cid;
+  }
+}
+
+CMap::~CMap() {
+  delete collection;
+  delete cMapName;
+  if (vector) {
+    freeCMapVector(vector);
+  }
+}
+
+void CMap::freeCMapVector(CMapVectorEntry *vec) {
+  int i;
+
+  for (i = 0; i < 256; ++i) {
+    if (vec[i].isVector) {
+      freeCMapVector(vec[i].vector);
+    }
+  }
+  gfree(vec);
+}
+
+void CMap::incRefCnt() {
+  ++refCnt;
+}
+
+void CMap::decRefCnt() {
+  if (--refCnt == 0) {
+    delete this;
+  }
+}
+
+GBool CMap::match(GString *collectionA, GString *cMapNameA) {
+  return !collection->cmp(collectionA) && !cMapName->cmp(cMapNameA);
+}
+
+CID CMap::getCID(char *s, int len, int *nUsed) {
+  CMapVectorEntry *vec;
+  int n, i;
+
+  if (!(vec = vector)) {
+    // identity CMap
+    *nUsed = 2;
+    if (len < 2) {
+      return 0;
+    }
+    return ((s[0] & 0xff) << 8) + (s[1] & 0xff);
+  }
+  n = 0;
+  while (1) {
+    if (n >= len) {
+      *nUsed = n;
+      return 0;
+    }
+    i = s[n++] & 0xff;
+    if (!vec[i].isVector) {
+      *nUsed = n;
+      return vec[i].cid;
+    }
+    vec = vec[i].vector;
+  }
+}
+
+//------------------------------------------------------------------------
+
+CMapCache::CMapCache() {
+  int i;
+
+  for (i = 0; i < cMapCacheSize; ++i) {
+    cache[i] = NULL;
+  }
+}
+
+CMapCache::~CMapCache() {
+  int i;
+
+  for (i = 0; i < cMapCacheSize; ++i) {
+    if (cache[i]) {
+      cache[i]->decRefCnt();
+    }
+  }
+}
+
+CMap *CMapCache::getCMap(GString *collection, GString *cMapName) {
+  CMap *cmap;
+  int i, j;
+
+  if (cache[0] && cache[0]->match(collection, cMapName)) {
+    cache[0]->incRefCnt();
+    return cache[0];
+  }
+  for (i = 1; i < cMapCacheSize; ++i) {
+    if (cache[i] && cache[i]->match(collection, cMapName)) {
+      cmap = cache[i];
+      for (j = i; j >= 1; --j) {
+       cache[j] = cache[j - 1];
+      }
+      cache[0] = cmap;
+      cmap->incRefCnt();
+      return cmap;
+    }
+  }
+  if ((cmap = CMap::parse(this, collection, cMapName))) {
+    if (cache[cMapCacheSize - 1]) {
+      cache[cMapCacheSize - 1]->decRefCnt();
+    }
+    for (j = cMapCacheSize - 1; j >= 1; --j) {
+      cache[j] = cache[j - 1];
+    }
+    cache[0] = cmap;
+    cmap->incRefCnt();
+    return cmap;
+  }
+  return NULL;
+}
diff --git a/pdf/xpdf/CMap.h b/pdf/xpdf/CMap.h
new file mode 100644 (file)
index 0000000..fe49acf
--- /dev/null
@@ -0,0 +1,93 @@
+//========================================================================
+//
+// CMap.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef CMAP_H
+#define CMAP_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+#include "CharTypes.h"
+
+class GString;
+struct CMapVectorEntry;
+class CMapCache;
+
+//------------------------------------------------------------------------
+
+class CMap {
+public:
+
+  // Create the CMap specified by <collection> and <cMapName>.  Sets
+  // the initial reference count to 1.  Returns NULL on failure.
+  static CMap *parse(CMapCache *cache, GString *collectionA,
+                    GString *cMapNameA);
+
+  ~CMap();
+
+  void incRefCnt();
+  void decRefCnt();
+
+  // Return collection name (<registry>-<ordering>).
+  GString *getCollection() { return collection; }
+
+  // Return true if this CMap matches the specified <collectionA>, and
+  // <cMapNameA>.
+  GBool match(GString *collectionA, GString *cMapNameA);
+
+  // Return the CID corresponding to the character code starting at
+  // <s>, which contains <len> bytes.  Sets *<nUsed> to the number of
+  // bytes used by the char code.
+  CID getCID(char *s, int len, int *nUsed);
+
+  // Return the writing mode (0=horizontal, 1=vertical).
+  int getWMode() { return wMode; }
+
+private:
+
+  CMap(GString *collectionA, GString *cMapNameA);
+  CMap(GString *collectionA, GString *cMapNameA, int wModeA);
+  void useCMap(CMapCache *cache, char *useName);
+  void copyVector(CMapVectorEntry *dest, CMapVectorEntry *src);
+  void addCodeSpace(CMapVectorEntry *vec, Guint start, Guint end,
+                   Guint nBytes);
+  void addCIDs(Guint start, Guint end, Guint nBytes, CID firstCID);
+  void freeCMapVector(CMapVectorEntry *vec);
+
+  GString *collection;
+  GString *cMapName;
+  int wMode;                   // writing mode (0=horizontal, 1=vertical)
+  CMapVectorEntry *vector;     // vector for first byte (NULL for
+                               //   identity CMap)
+  int refCnt;
+};
+
+//------------------------------------------------------------------------
+
+#define cMapCacheSize 4
+
+class CMapCache {
+public:
+
+  CMapCache();
+  ~CMapCache();
+
+  // Get the <cMapName> CMap for the specified character collection.
+  // Increments its reference count; there will be one reference for
+  // the cache plus one for the caller of this function.  Returns NULL
+  // on failure.
+  CMap *getCMap(GString *collection, GString *cMapName);
+
+private:
+
+  CMap *cache[cMapCacheSize];
+};
+
+#endif
diff --git a/pdf/xpdf/CNS13CMapInfo.h b/pdf/xpdf/CNS13CMapInfo.h
deleted file mode 100644 (file)
index 284e603..0000000
+++ /dev/null
@@ -1,47771 +0,0 @@
-//========================================================================
-//
-// CNS13CMapInfo.h
-//
-// This file was automatically generated by makeCMapInfo.
-//
-// Copyright 1998 Derek B. Noonburg
-//
-//========================================================================
-
-#ifndef CNS13CMAPINFO_H
-#define CNS13CMAPINFO_H
-
-static Gushort cns13AdobeCNS10Map2[116] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13AdobeCNS10Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13AdobeCNS10Map2, 58
-};
-
-static Gushort cns13AdobeCNS11Map2[140] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0x3800, 0x3800,
-  0x3900, 0x3900,
-  0x3a00, 0x3a00,
-  0x3b00, 0x3b00,
-  0x3c00, 0x3c00,
-  0x3d00, 0x3d00,
-  0x3e00, 0x3e00,
-  0x3f00, 0x3f00,
-  0x4000, 0x4000,
-  0x4100, 0x4100,
-  0x4200, 0x4200,
-  0x4300, 0x4300,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13AdobeCNS11Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13AdobeCNS11Map2, 70
-};
-
-static Gushort cns13AdobeCNS12Map2[142] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0x3800, 0x3800,
-  0x3900, 0x3900,
-  0x3a00, 0x3a00,
-  0x3b00, 0x3b00,
-  0x3c00, 0x3c00,
-  0x3d00, 0x3d00,
-  0x3e00, 0x3e00,
-  0x3f00, 0x3f00,
-  0x4000, 0x4000,
-  0x4100, 0x4100,
-  0x4200, 0x4200,
-  0x4300, 0x4300,
-  0x4400, 0x4400,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13AdobeCNS12Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13AdobeCNS12Map2, 71
-};
-
-static Gushort cns13AdobeCNS13Map2[152] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0x3800, 0x3800,
-  0x3900, 0x3900,
-  0x3a00, 0x3a00,
-  0x3b00, 0x3b00,
-  0x3c00, 0x3c00,
-  0x3d00, 0x3d00,
-  0x3e00, 0x3e00,
-  0x3f00, 0x3f00,
-  0x4000, 0x4000,
-  0x4100, 0x4100,
-  0x4200, 0x4200,
-  0x4300, 0x4300,
-  0x4400, 0x4400,
-  0x4500, 0x4500,
-  0x4600, 0x4600,
-  0x4700, 0x4700,
-  0x4800, 0x4800,
-  0x4900, 0x4900,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13AdobeCNS13Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13AdobeCNS13Map2, 76
-};
-
-static Gushort cns13B5HMap2[490] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13B5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557,
-    0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f,
-    0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567,
-    0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f,
-    0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577,
-    0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f,
-    0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587,
-    0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f,
-    0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
-    0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f,
-    0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7,
-    0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13B5HMap2, 245
-};
-
-static Gushort cns13B5VMap2[514] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13B5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557,
-    0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f,
-    0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567,
-    0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f,
-    0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577,
-    0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f,
-    0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587,
-    0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f,
-    0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
-    0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f,
-    0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7,
-    0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13B5VMap2, 257
-};
-
-static Gushort cns13B5pcHMap2[492] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa3c0, 0x0232,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13B5pcHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x0061, 0x0062 },
-  cns13B5pcHMap2, 246
-};
-
-static Gushort cns13B5pcVMap2[516] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa3c0, 0x0232,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13B5pcVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x0061, 0x0062 },
-  cns13B5pcVMap2, 258
-};
-
-static Gushort cns13CNS1HMap2[316] = {
-  0x0000, 0x0000,
-  0x2121, 0x0063,
-  0x2221, 0x00c1,
-  0x2321, 0x011f,
-  0x2421, 0x014d,
-  0x2521, 0x01ab,
-  0x256e, 0x01f7,
-  0x2621, 0x01fa,
-  0x2721, 0x0253,
-  0x2722, 0x0218,
-  0x2725, 0x0254,
-  0x2726, 0x021b,
-  0x2727, 0x025a,
-  0x2728, 0x021c,
-  0x2729, 0x025b,
-  0x272d, 0x021d,
-  0x2730, 0x025f,
-  0x2731, 0x176e,
-  0x2732, 0x0260,
-  0x2733, 0x0262,
-  0x2734, 0x0220,
-  0x2735, 0x0263,
-  0x2736, 0x176f,
-  0x2737, 0x0221,
-  0x2738, 0x0264,
-  0x273a, 0x0222,
-  0x273b, 0x1770,
-  0x273c, 0x0223,
-  0x273d, 0x0266,
-  0x273e, 0x0279,
-  0x273f, 0x1775,
-  0x2740, 0x027a,
-  0x2742, 0x0224,
-  0x2743, 0x027c,
-  0x2747, 0x0225,
-  0x2748, 0x0282,
-  0x274c, 0x1776,
-  0x274d, 0x0286,
-  0x274e, 0x0226,
-  0x274f, 0x0288,
-  0x2751, 0x028c,
-  0x2753, 0x0227,
-  0x2756, 0x028e,
-  0x2759, 0x022a,
-  0x275b, 0x1777,
-  0x275c, 0x02d0,
-  0x2760, 0x02d5,
-  0x2761, 0x022c,
-  0x2762, 0x02d6,
-  0x2766, 0x022d,
-  0x2767, 0x02da,
-  0x276e, 0x178a,
-  0x276f, 0x02e1,
-  0x2773, 0x178c,
-  0x2774, 0x02e5,
-  0x2779, 0x178d,
-  0x277a, 0x02ea,
-  0x277e, 0x0356,
-  0x2821, 0x0357,
-  0x2827, 0x035e,
-  0x2828, 0x0362,
-  0x2829, 0x022e,
-  0x282b, 0x0363,
-  0x2833, 0x17b2,
-  0x2834, 0x036b,
-  0x2837, 0x03f6,
-  0x283b, 0x1812,
-  0x283c, 0x03fa,
-  0x283f, 0x03fe,
-  0x2844, 0x0405,
-  0x284d, 0x1813,
-  0x284e, 0x1818,
-  0x284f, 0x040f,
-  0x2853, 0x1819,
-  0x2854, 0x0508,
-  0x285a, 0x18e7,
-  0x285b, 0x050e,
-  0x2863, 0x0230,
-  0x2864, 0x051b,
-  0x2865, 0x0520,
-  0x2868, 0x0696,
-  0x286c, 0x0231,
-  0x286d, 0x069f,
-  0x2871, 0x0826,
-  0x287c, 0x09f5,
-  0x2921, 0x1e33,
-  0x2922, 0x09f8,
-  0x2923, 0x1e34,
-  0x2924, 0x09f9,
-  0x2926, 0x0be1,
-  0x292c, 0x0dbb,
-  0x292f, 0x2360,
-  0x2930, 0x2612,
-  0x2931, 0x0f7b,
-  0x2934, 0x1100,
-  0x2936, 0x1289,
-  0x2937, 0x13b2,
-  0x2939, 0x2f0d,
-  0x4221, 0x0232,
-  0x4421, 0x0253,
-  0x4521, 0x02b1,
-  0x4621, 0x030f,
-  0x4721, 0x036d,
-  0x4821, 0x03cb,
-  0x4921, 0x0429,
-  0x4a21, 0x0487,
-  0x4b21, 0x04e5,
-  0x4c21, 0x0543,
-  0x4d21, 0x05a1,
-  0x4e21, 0x05ff,
-  0x4f21, 0x065d,
-  0x5021, 0x06bb,
-  0x5121, 0x0719,
-  0x5221, 0x0777,
-  0x5321, 0x07d5,
-  0x5421, 0x0833,
-  0x5521, 0x0891,
-  0x5621, 0x08ef,
-  0x5721, 0x094d,
-  0x5821, 0x09ab,
-  0x5921, 0x0a09,
-  0x5a21, 0x0a67,
-  0x5b21, 0x0ac5,
-  0x5c21, 0x0b23,
-  0x5d21, 0x0b81,
-  0x5e21, 0x0bdf,
-  0x5f21, 0x0c3d,
-  0x6021, 0x0c9b,
-  0x6121, 0x0cf9,
-  0x6221, 0x0d57,
-  0x6321, 0x0db5,
-  0x6421, 0x0e13,
-  0x6521, 0x0e71,
-  0x6621, 0x0ecf,
-  0x6721, 0x0f2d,
-  0x6821, 0x0f8b,
-  0x6921, 0x0fe9,
-  0x6a21, 0x1047,
-  0x6b21, 0x10a5,
-  0x6c21, 0x1103,
-  0x6d21, 0x1161,
-  0x6e21, 0x11bf,
-  0x6f21, 0x121d,
-  0x7021, 0x127b,
-  0x7121, 0x12d9,
-  0x7221, 0x1337,
-  0x7321, 0x1395,
-  0x7421, 0x13f3,
-  0x7521, 0x1451,
-  0x7621, 0x14af,
-  0x7721, 0x150d,
-  0x7821, 0x156b,
-  0x7921, 0x15c9,
-  0x7a21, 0x1627,
-  0x7b21, 0x1685,
-  0x7c21, 0x16e3,
-  0x7d21, 0x1741,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13CNS1HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13CNS1HMap2, 158
-};
-
-static Gushort cns13CNS1VMap2[340] = {
-  0x0000, 0x0000,
-  0x2121, 0x0063,
-  0x2221, 0x00c1,
-  0x2321, 0x011f,
-  0x2421, 0x014d,
-  0x2521, 0x01ab,
-  0x256e, 0x01f7,
-  0x2621, 0x01fa,
-  0x2721, 0x0253,
-  0x2722, 0x0218,
-  0x2725, 0x0254,
-  0x2726, 0x021b,
-  0x2727, 0x025a,
-  0x2728, 0x021c,
-  0x2729, 0x025b,
-  0x272d, 0x021d,
-  0x2730, 0x025f,
-  0x2731, 0x176e,
-  0x2732, 0x0260,
-  0x2733, 0x0262,
-  0x2734, 0x0220,
-  0x2735, 0x0263,
-  0x2736, 0x176f,
-  0x2737, 0x0221,
-  0x2738, 0x0264,
-  0x273a, 0x0222,
-  0x273b, 0x1770,
-  0x273c, 0x0223,
-  0x273d, 0x0266,
-  0x273e, 0x0279,
-  0x273f, 0x1775,
-  0x2740, 0x027a,
-  0x2742, 0x0224,
-  0x2743, 0x027c,
-  0x2747, 0x0225,
-  0x2748, 0x0282,
-  0x274c, 0x1776,
-  0x274d, 0x0286,
-  0x274e, 0x0226,
-  0x274f, 0x0288,
-  0x2751, 0x028c,
-  0x2753, 0x0227,
-  0x2756, 0x028e,
-  0x2759, 0x022a,
-  0x275b, 0x1777,
-  0x275c, 0x02d0,
-  0x2760, 0x02d5,
-  0x2761, 0x022c,
-  0x2762, 0x02d6,
-  0x2766, 0x022d,
-  0x2767, 0x02da,
-  0x276e, 0x178a,
-  0x276f, 0x02e1,
-  0x2773, 0x178c,
-  0x2774, 0x02e5,
-  0x2779, 0x178d,
-  0x277a, 0x02ea,
-  0x277e, 0x0356,
-  0x2821, 0x0357,
-  0x2827, 0x035e,
-  0x2828, 0x0362,
-  0x2829, 0x022e,
-  0x282b, 0x0363,
-  0x2833, 0x17b2,
-  0x2834, 0x036b,
-  0x2837, 0x03f6,
-  0x283b, 0x1812,
-  0x283c, 0x03fa,
-  0x283f, 0x03fe,
-  0x2844, 0x0405,
-  0x284d, 0x1813,
-  0x284e, 0x1818,
-  0x284f, 0x040f,
-  0x2853, 0x1819,
-  0x2854, 0x0508,
-  0x285a, 0x18e7,
-  0x285b, 0x050e,
-  0x2863, 0x0230,
-  0x2864, 0x051b,
-  0x2865, 0x0520,
-  0x2868, 0x0696,
-  0x286c, 0x0231,
-  0x286d, 0x069f,
-  0x2871, 0x0826,
-  0x287c, 0x09f5,
-  0x2921, 0x1e33,
-  0x2922, 0x09f8,
-  0x2923, 0x1e34,
-  0x2924, 0x09f9,
-  0x2926, 0x0be1,
-  0x292c, 0x0dbb,
-  0x292f, 0x2360,
-  0x2930, 0x2612,
-  0x2931, 0x0f7b,
-  0x2934, 0x1100,
-  0x2936, 0x1289,
-  0x2937, 0x13b2,
-  0x2939, 0x2f0d,
-  0x4221, 0x0232,
-  0x4421, 0x0253,
-  0x4521, 0x02b1,
-  0x4621, 0x030f,
-  0x4721, 0x036d,
-  0x4821, 0x03cb,
-  0x4921, 0x0429,
-  0x4a21, 0x0487,
-  0x4b21, 0x04e5,
-  0x4c21, 0x0543,
-  0x4d21, 0x05a1,
-  0x4e21, 0x05ff,
-  0x4f21, 0x065d,
-  0x5021, 0x06bb,
-  0x5121, 0x0719,
-  0x5221, 0x0777,
-  0x5321, 0x07d5,
-  0x5421, 0x0833,
-  0x5521, 0x0891,
-  0x5621, 0x08ef,
-  0x5721, 0x094d,
-  0x5821, 0x09ab,
-  0x5921, 0x0a09,
-  0x5a21, 0x0a67,
-  0x5b21, 0x0ac5,
-  0x5c21, 0x0b23,
-  0x5d21, 0x0b81,
-  0x5e21, 0x0bdf,
-  0x5f21, 0x0c3d,
-  0x6021, 0x0c9b,
-  0x6121, 0x0cf9,
-  0x6221, 0x0d57,
-  0x6321, 0x0db5,
-  0x6421, 0x0e13,
-  0x6521, 0x0e71,
-  0x6621, 0x0ecf,
-  0x6721, 0x0f2d,
-  0x6821, 0x0f8b,
-  0x6921, 0x0fe9,
-  0x6a21, 0x1047,
-  0x6b21, 0x10a5,
-  0x6c21, 0x1103,
-  0x6d21, 0x1161,
-  0x6e21, 0x11bf,
-  0x6f21, 0x121d,
-  0x7021, 0x127b,
-  0x7121, 0x12d9,
-  0x7221, 0x1337,
-  0x7321, 0x1395,
-  0x7421, 0x13f3,
-  0x7521, 0x1451,
-  0x7621, 0x14af,
-  0x7721, 0x150d,
-  0x7821, 0x156b,
-  0x7921, 0x15c9,
-  0x7a21, 0x1627,
-  0x7b21, 0x1685,
-  0x7c21, 0x16e3,
-  0x7d21, 0x1741,
-  0x212c, 0x354e,
-  0x213b, 0x007c,
-  0x213d, 0x007e,
-  0x213e, 0x0082,
-  0x2142, 0x0086,
-  0x2146, 0x008a,
-  0x214a, 0x008e,
-  0x214e, 0x0092,
-  0x2152, 0x0096,
-  0x2156, 0x009a,
-  0x215a, 0x009e,
-  0x2244, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13CNS1VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13CNS1VMap2, 170
-};
-
-static Gushort cns13CNS2HMap2[168] = {
-  0x0000, 0x0000,
-  0x2121, 0x176c,
-  0x2221, 0x17ca,
-  0x2321, 0x1828,
-  0x2421, 0x1886,
-  0x2521, 0x18e4,
-  0x2621, 0x1942,
-  0x2721, 0x19a0,
-  0x2821, 0x19fe,
-  0x2921, 0x1a5c,
-  0x2a21, 0x1aba,
-  0x2b21, 0x1b18,
-  0x2c21, 0x1b76,
-  0x2d21, 0x1bd4,
-  0x2e21, 0x1c32,
-  0x2f21, 0x1c90,
-  0x3021, 0x1cee,
-  0x3121, 0x1d4c,
-  0x3221, 0x1daa,
-  0x3321, 0x1e08,
-  0x3421, 0x1e66,
-  0x3521, 0x1ec4,
-  0x3621, 0x1f22,
-  0x3721, 0x1f80,
-  0x3821, 0x1fde,
-  0x3921, 0x203c,
-  0x3a21, 0x209a,
-  0x3b21, 0x20f8,
-  0x3c21, 0x2156,
-  0x3d21, 0x21b4,
-  0x3e21, 0x2212,
-  0x3f21, 0x2270,
-  0x4021, 0x22ce,
-  0x4121, 0x232c,
-  0x4221, 0x238a,
-  0x4321, 0x23e8,
-  0x4421, 0x2446,
-  0x4521, 0x24a4,
-  0x4621, 0x2502,
-  0x4721, 0x2560,
-  0x4821, 0x25be,
-  0x4921, 0x261c,
-  0x4a21, 0x267a,
-  0x4b21, 0x26d8,
-  0x4c21, 0x2736,
-  0x4d21, 0x2794,
-  0x4e21, 0x27f2,
-  0x4f21, 0x2850,
-  0x5021, 0x28ae,
-  0x5121, 0x290c,
-  0x5221, 0x296a,
-  0x5321, 0x29c8,
-  0x5421, 0x2a26,
-  0x5521, 0x2a84,
-  0x5621, 0x2ae2,
-  0x5721, 0x2b40,
-  0x5821, 0x2b9e,
-  0x5921, 0x2bfc,
-  0x5a21, 0x2c5a,
-  0x5b21, 0x2cb8,
-  0x5c21, 0x2d16,
-  0x5d21, 0x2d74,
-  0x5e21, 0x2dd2,
-  0x5f21, 0x2e30,
-  0x6021, 0x2e8e,
-  0x6121, 0x2eec,
-  0x6221, 0x2f4a,
-  0x6321, 0x2fa8,
-  0x6421, 0x3006,
-  0x6521, 0x3064,
-  0x6621, 0x30c2,
-  0x6721, 0x3120,
-  0x6821, 0x317e,
-  0x6921, 0x31dc,
-  0x6a21, 0x323a,
-  0x6b21, 0x3298,
-  0x6c21, 0x32f6,
-  0x6d21, 0x3354,
-  0x6e21, 0x33b2,
-  0x6f21, 0x3410,
-  0x7021, 0x346e,
-  0x7121, 0x34cc,
-  0x7221, 0x352a,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13CNS2HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13CNS2HMap2, 84
-};
-
-static Gushort cns13CNS2VMap2[168] = {
-  0x0000, 0x0000,
-  0x2121, 0x176c,
-  0x2221, 0x17ca,
-  0x2321, 0x1828,
-  0x2421, 0x1886,
-  0x2521, 0x18e4,
-  0x2621, 0x1942,
-  0x2721, 0x19a0,
-  0x2821, 0x19fe,
-  0x2921, 0x1a5c,
-  0x2a21, 0x1aba,
-  0x2b21, 0x1b18,
-  0x2c21, 0x1b76,
-  0x2d21, 0x1bd4,
-  0x2e21, 0x1c32,
-  0x2f21, 0x1c90,
-  0x3021, 0x1cee,
-  0x3121, 0x1d4c,
-  0x3221, 0x1daa,
-  0x3321, 0x1e08,
-  0x3421, 0x1e66,
-  0x3521, 0x1ec4,
-  0x3621, 0x1f22,
-  0x3721, 0x1f80,
-  0x3821, 0x1fde,
-  0x3921, 0x203c,
-  0x3a21, 0x209a,
-  0x3b21, 0x20f8,
-  0x3c21, 0x2156,
-  0x3d21, 0x21b4,
-  0x3e21, 0x2212,
-  0x3f21, 0x2270,
-  0x4021, 0x22ce,
-  0x4121, 0x232c,
-  0x4221, 0x238a,
-  0x4321, 0x23e8,
-  0x4421, 0x2446,
-  0x4521, 0x24a4,
-  0x4621, 0x2502,
-  0x4721, 0x2560,
-  0x4821, 0x25be,
-  0x4921, 0x261c,
-  0x4a21, 0x267a,
-  0x4b21, 0x26d8,
-  0x4c21, 0x2736,
-  0x4d21, 0x2794,
-  0x4e21, 0x27f2,
-  0x4f21, 0x2850,
-  0x5021, 0x28ae,
-  0x5121, 0x290c,
-  0x5221, 0x296a,
-  0x5321, 0x29c8,
-  0x5421, 0x2a26,
-  0x5521, 0x2a84,
-  0x5621, 0x2ae2,
-  0x5721, 0x2b40,
-  0x5821, 0x2b9e,
-  0x5921, 0x2bfc,
-  0x5a21, 0x2c5a,
-  0x5b21, 0x2cb8,
-  0x5c21, 0x2d16,
-  0x5d21, 0x2d74,
-  0x5e21, 0x2dd2,
-  0x5f21, 0x2e30,
-  0x6021, 0x2e8e,
-  0x6121, 0x2eec,
-  0x6221, 0x2f4a,
-  0x6321, 0x2fa8,
-  0x6421, 0x3006,
-  0x6521, 0x3064,
-  0x6621, 0x30c2,
-  0x6721, 0x3120,
-  0x6821, 0x317e,
-  0x6921, 0x31dc,
-  0x6a21, 0x323a,
-  0x6b21, 0x3298,
-  0x6c21, 0x32f6,
-  0x6d21, 0x3354,
-  0x6e21, 0x33b2,
-  0x6f21, 0x3410,
-  0x7021, 0x346e,
-  0x7121, 0x34cc,
-  0x7221, 0x352a,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13CNS2VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13CNS2VMap2, 84
-};
-
-static Gushort cns13ETHKB5HMap2[2252] = {
-  0x0000, 0x0000,
-  0x8840, 0x44c9,
-  0x8856, 0x4961,
-  0x88a1, 0x498a,
-  0x88a9, 0x499c,
-  0x8940, 0x4534,
-  0x8943, 0x4536,
-  0x8946, 0x4537,
-  0x894c, 0x453b,
-  0x894d, 0x43c3,
-  0x894e, 0x453c,
-  0x8951, 0x439a,
-  0x8952, 0x453f,
-  0x89a1, 0x456c,
-  0x89a6, 0x43a2,
-  0x89ab, 0x43ec,
-  0x89ac, 0x4571,
-  0x89ad, 0x43eb,
-  0x89ae, 0x4572,
-  0x89b0, 0x4573,
-  0x89b5, 0x4576,
-  0x89c1, 0x4581,
-  0x89c5, 0x4584,
-  0x89cf, 0x43bc,
-  0x89d0, 0x458e,
-  0x89d9, 0x439c,
-  0x89da, 0x4597,
-  0x89db, 0x439e,
-  0x89dc, 0x4598,
-  0x89dd, 0x439f,
-  0x89de, 0x4599,
-  0x89e1, 0x43a1,
-  0x89e2, 0x459c,
-  0x89e3, 0x43a3,
-  0x89e4, 0x459d,
-  0x89ea, 0x43a5,
-  0x89ec, 0x45a3,
-  0x89fa, 0x43a9,
-  0x89fb, 0x45b1,
-  0x8a40, 0x45b5,
-  0x8a41, 0x4309,
-  0x8a43, 0x430b,
-  0x8a4d, 0x45b6,
-  0x8a4e, 0x4316,
-  0x8a5a, 0x45b7,
-  0x8a5b, 0x4323,
-  0x8a5e, 0x45b8,
-  0x8a5f, 0x4327,
-  0x8a64, 0x432c,
-  0x8a71, 0x45b9,
-  0x8a72, 0x433a,
-  0x8a76, 0x433e,
-  0x8a77, 0x45ba,
-  0x8a78, 0x4340,
-  0x8a7a, 0x45bb,
-  0x8a7b, 0x4343,
-  0x8a7c, 0x45bc,
-  0x8a7d, 0x4345,
-  0x8a7e, 0x45bd,
-  0x8aa1, 0x4347,
-  0x8aa8, 0x45be,
-  0x8aa9, 0x434f,
-  0x8aac, 0x4352,
-  0x8ab2, 0x4358,
-  0x8ab6, 0x45bf,
-  0x8ab7, 0x435d,
-  0x8ab8, 0x45c0,
-  0x8ab9, 0x435f,
-  0x8abb, 0x4361,
-  0x8ac9, 0x436f,
-  0x8acc, 0x45c1,
-  0x8ace, 0x4374,
-  0x8ad6, 0x45c2,
-  0x8ad8, 0x437e,
-  0x8adf, 0x4385,
-  0x8ae6, 0x45c4,
-  0x8ae7, 0x43db,
-  0x8ae8, 0x45c5,
-  0x8af6, 0x45d2,
-  0x8b40, 0x45db,
-  0x8b41, 0x438c,
-  0x8b43, 0x45dc,
-  0x8b45, 0x438e,
-  0x8b46, 0x45de,
-  0x8b47, 0x438f,
-  0x8b48, 0x45df,
-  0x8b49, 0x4390,
-  0x8b4a, 0x45e0,
-  0x8b4b, 0x4391,
-  0x8b4c, 0x45e1,
-  0x8b4d, 0x4392,
-  0x8b51, 0x45e2,
-  0x8b55, 0x45e5,
-  0x8b58, 0x4397,
-  0x8b59, 0x45e8,
-  0x8b5a, 0x4398,
-  0x8b5b, 0x43c4,
-  0x8b5c, 0x45e9,
-  0x8b61, 0x43a7,
-  0x8b62, 0x45ee,
-  0x8b68, 0x43ac,
-  0x8b69, 0x45f4,
-  0x8ba1, 0x460a,
-  0x8bc0, 0x44df,
-  0x8bde, 0x44fc,
-  0x8d60, 0x4629,
-  0x8d62, 0x43ba,
-  0x8d63, 0x462b,
-  0x8d68, 0x43bb,
-  0x8d69, 0x43a0,
-  0x8d6a, 0x43bd,
-  0x8d6b, 0x4630,
-  0x8d6e, 0x43be,
-  0x8d6f, 0x4633,
-  0x8d76, 0x43bf,
-  0x8d77, 0x463a,
-  0x8d7a, 0x43c0,
-  0x8d7b, 0x463d,
-  0x8d7c, 0x43c1,
-  0x8d7d, 0x463e,
-  0x8da1, 0x4640,
-  0x8da5, 0x43c2,
-  0x8da6, 0x4644,
-  0x8da8, 0x43b9,
-  0x8da9, 0x43ad,
-  0x8daa, 0x4646,
-  0x8db6, 0x43c7,
-  0x8db7, 0x4652,
-  0x8dc3, 0x43c8,
-  0x8dc4, 0x465e,
-  0x8dfa, 0x43f9,
-  0x8dfb, 0x4694,
-  0x8e40, 0x372b,
-  0x8e45, 0x4698,
-  0x8e46, 0x3730,
-  0x8e6a, 0x3754,
-  0x8e6b, 0x4699,
-  0x8e6d, 0x3756,
-  0x8e70, 0x3759,
-  0x8e76, 0x469b,
-  0x8e77, 0x375f,
-  0x8e7b, 0x469c,
-  0x8e7c, 0x3764,
-  0x8ea1, 0x3766,
-  0x8ea6, 0x469d,
-  0x8ea7, 0x376b,
-  0x8eac, 0x3770,
-  0x8eb5, 0x3779,
-  0x8eb8, 0x469e,
-  0x8eb9, 0x377d,
-  0x8ec9, 0x469f,
-  0x8eca, 0x378d,
-  0x8ece, 0x3791,
-  0x8ed1, 0x3794,
-  0x8ee5, 0x46a0,
-  0x8ee6, 0x37a8,
-  0x8eef, 0x46a1,
-  0x8ef0, 0x37b1,
-  0x8ef6, 0x46a2,
-  0x8ef7, 0x37b8,
-  0x8f40, 0x37c0,
-  0x8f58, 0x37d8,
-  0x8f59, 0x46a3,
-  0x8f5a, 0x37d9,
-  0x8f5f, 0x46a4,
-  0x8f60, 0x37de,
-  0x8f67, 0x46a5,
-  0x8f68, 0x37e5,
-  0x8f6a, 0x37e7,
-  0x8f6f, 0x37ec,
-  0x8f79, 0x46a6,
-  0x8f7a, 0x37f7,
-  0x8fa1, 0x37fc,
-  0x8fb0, 0x46a7,
-  0x8fb1, 0x380c,
-  0x8fc5, 0x46a8,
-  0x8fc6, 0x3820,
-  0x8fc7, 0x46a9,
-  0x8fc8, 0x3821,
-  0x8fca, 0x46aa,
-  0x8fcd, 0x3826,
-  0x8fda, 0x46ab,
-  0x8fdb, 0x3833,
-  0x8fe3, 0x46ac,
-  0x8fe4, 0x383c,
-  0x8ffc, 0x46ad,
-  0x8ffd, 0x3854,
-  0x9040, 0x3856,
-  0x9055, 0x46ae,
-  0x9056, 0x386c,
-  0x905c, 0x46af,
-  0x905f, 0x3873,
-  0x906e, 0x3882,
-  0x906f, 0x46b2,
-  0x9070, 0x3883,
-  0x907b, 0x388d,
-  0x90a1, 0x3891,
-  0x90a6, 0x46b3,
-  0x90a7, 0x3896,
-  0x90b8, 0x46b4,
-  0x90b9, 0x38a7,
-  0x90dd, 0x38cb,
-  0x90f2, 0x38e0,
-  0x9140, 0x38ed,
-  0x9165, 0x46b5,
-  0x9166, 0x3912,
-  0x916e, 0x46b6,
-  0x916f, 0x391a,
-  0x917e, 0x46b7,
-  0x91a1, 0x3929,
-  0x91a2, 0x46b8,
-  0x91a3, 0x392a,
-  0x91c0, 0x3947,
-  0x91c8, 0x46b9,
-  0x91c9, 0x3950,
-  0x9240, 0x3986,
-  0x9245, 0x398b,
-  0x9264, 0x46ba,
-  0x9265, 0x39ab,
-  0x926d, 0x46bb,
-  0x926e, 0x39b4,
-  0x92a1, 0x39c5,
-  0x92b3, 0x39d3,
-  0x92c9, 0x39e9,
-  0x92d2, 0x39f2,
-  0x92e5, 0x46bc,
-  0x92e6, 0x3a05,
-  0x92f2, 0x46bd,
-  0x92f3, 0x3a11,
-  0x9340, 0x3a1d,
-  0x9368, 0x46be,
-  0x9369, 0x3a45,
-  0x93a1, 0x3a5b,
-  0x93aa, 0x46bf,
-  0x93ab, 0x3a64,
-  0x93c2, 0x46c0,
-  0x93c3, 0x3a7b,
-  0x93e5, 0x46c1,
-  0x93e6, 0x3a9d,
-  0x93e8, 0x46c2,
-  0x93e9, 0x3aa0,
-  0x93eb, 0x46c3,
-  0x93ec, 0x3aa2,
-  0x9440, 0x3ab5,
-  0x9446, 0x46c4,
-  0x9448, 0x3abc,
-  0x9479, 0x46c5,
-  0x947a, 0x3aee,
-  0x94a1, 0x3af3,
-  0x94cb, 0x46c6,
-  0x94cc, 0x3b1e,
-  0x9540, 0x3b51,
-  0x954d, 0x46c7,
-  0x954e, 0x3b5e,
-  0x955a, 0x46c8,
-  0x955b, 0x3b6a,
-  0x955f, 0x46c9,
-  0x9560, 0x3b6f,
-  0x95a1, 0x3b8e,
-  0x95c6, 0x46ca,
-  0x95c7, 0x3bb3,
-  0x95da, 0x3bc6,
-  0x9640, 0x3beb,
-  0x9645, 0x3bf0,
-  0x9651, 0x46cb,
-  0x9652, 0x3bfd,
-  0x966a, 0x46cc,
-  0x966b, 0x3c16,
-  0x96a1, 0x3c2a,
-  0x96d4, 0x46cd,
-  0x96d5, 0x3c5d,
-  0x96ee, 0x3c76,
-  0x96fd, 0x3c85,
-  0x9740, 0x3c87,
-  0x97a1, 0x3cc6,
-  0x9840, 0x3d24,
-  0x9844, 0x46ce,
-  0x9846, 0x3d2a,
-  0x986f, 0x46d0,
-  0x9870, 0x3d54,
-  0x9875, 0x46d1,
-  0x9877, 0x3d59,
-  0x9878, 0x46d3,
-  0x987a, 0x3d5a,
-  0x987b, 0x46d5,
-  0x98a1, 0x46d9,
-  0x98a3, 0x3d5b,
-  0x98a4, 0x46db,
-  0x98af, 0x3d5c,
-  0x98b0, 0x46e6,
-  0x98b4, 0x43ca,
-  0x98b5, 0x46ea,
-  0x98b6, 0x3d5d,
-  0x98b7, 0x46eb,
-  0x98b8, 0x43cc,
-  0x98b9, 0x3d5e,
-  0x98ba, 0x46ec,
-  0x98bb, 0x43fa,
-  0x98bc, 0x46ed,
-  0x98bd, 0x3d5f,
-  0x98bf, 0x46ee,
-  0x98c2, 0x3d61,
-  0x98c3, 0x46f1,
-  0x98c4, 0x3d62,
-  0x98c5, 0x46f2,
-  0x98c6, 0x3d63,
-  0x98c8, 0x46f3,
-  0x98d2, 0x43cd,
-  0x98d3, 0x46fd,
-  0x98d8, 0x43ce,
-  0x98da, 0x4702,
-  0x98db, 0x43d1,
-  0x98dc, 0x4703,
-  0x98df, 0x43d4,
-  0x98e0, 0x4706,
-  0x98e3, 0x3d65,
-  0x98e4, 0x4709,
-  0x98e7, 0x3d66,
-  0x98e8, 0x470c,
-  0x98ed, 0x3d67,
-  0x98ee, 0x4711,
-  0x98f0, 0x3d68,
-  0x98f1, 0x4713,
-  0x98f2, 0x3d69,
-  0x98f3, 0x4714,
-  0x98f4, 0x43d5,
-  0x98f6, 0x4715,
-  0x98fc, 0x3d6a,
-  0x98fd, 0x471b,
-  0x98fe, 0x43d7,
-  0x9940, 0x471c,
-  0x9942, 0x43fc,
-  0x9943, 0x3d6b,
-  0x9944, 0x471e,
-  0x9945, 0x3d6c,
-  0x9946, 0x471f,
-  0x9947, 0x43d8,
-  0x9948, 0x4720,
-  0x994f, 0x3d6d,
-  0x9950, 0x4727,
-  0x9954, 0x43d9,
-  0x9955, 0x472b,
-  0x995c, 0x43da,
-  0x995d, 0x4732,
-  0x9964, 0x43dc,
-  0x9965, 0x4739,
-  0x996a, 0x3d6e,
-  0x996b, 0x473e,
-  0x996e, 0x3d6f,
-  0x996f, 0x4741,
-  0x9975, 0x3d70,
-  0x9976, 0x4747,
-  0x9978, 0x3d71,
-  0x9979, 0x4749,
-  0x99a1, 0x474f,
-  0x99a2, 0x3d72,
-  0x99a3, 0x4750,
-  0x99a4, 0x43c5,
-  0x99a5, 0x4751,
-  0x99a6, 0x43c6,
-  0x99a7, 0x4752,
-  0x99ae, 0x3d73,
-  0x99af, 0x4759,
-  0x99b2, 0x43de,
-  0x99b3, 0x475c,
-  0x99b6, 0x3d74,
-  0x99b7, 0x475f,
-  0x99ba, 0x3d75,
-  0x99bb, 0x4762,
-  0x99ca, 0x43e0,
-  0x99cb, 0x4771,
-  0x99cd, 0x43e2,
-  0x99ce, 0x4773,
-  0x99d3, 0x43e3,
-  0x99d4, 0x4778,
-  0x99d6, 0x43e5,
-  0x99d7, 0x477a,
-  0x99df, 0x43df,
-  0x99e0, 0x4782,
-  0x99e2, 0x3d76,
-  0x99e3, 0x4784,
-  0x99e4, 0x43ab,
-  0x99e5, 0x4785,
-  0x99e6, 0x43e7,
-  0x99e7, 0x4786,
-  0x99e8, 0x43e9,
-  0x99e9, 0x4787,
-  0x99ef, 0x43fd,
-  0x99f0, 0x478d,
-  0x99f4, 0x3d77,
-  0x99f5, 0x4791,
-  0x9a40, 0x479b,
-  0x9a4a, 0x3d78,
-  0x9a4b, 0x47a5,
-  0x9a4c, 0x3d79,
-  0x9a4d, 0x47a6,
-  0x9a59, 0x3d7a,
-  0x9a5a, 0x47b2,
-  0x9a5f, 0x43af,
-  0x9a60, 0x47b7,
-  0x9a61, 0x3d7b,
-  0x9a62, 0x47b8,
-  0x9a66, 0x43ed,
-  0x9a67, 0x47bc,
-  0x9a68, 0x3d7c,
-  0x9a69, 0x43ee,
-  0x9a6a, 0x47bd,
-  0x9a6b, 0x43ff,
-  0x9a6c, 0x47be,
-  0x9a73, 0x3d7d,
-  0x9a74, 0x47c5,
-  0x9a75, 0x43f1,
-  0x9a76, 0x47c6,
-  0x9a7e, 0x3d7e,
-  0x9aa1, 0x47ce,
-  0x9aa3, 0x43f3,
-  0x9aa4, 0x47d0,
-  0x9aa5, 0x43f2,
-  0x9aa6, 0x47d1,
-  0x9aa9, 0x43f8,
-  0x9aaa, 0x43f4,
-  0x9aab, 0x47d4,
-  0x9ab2, 0x3d7f,
-  0x9ab3, 0x47db,
-  0x9ab7, 0x3d80,
-  0x9ab8, 0x47df,
-  0x9ab9, 0x3d81,
-  0x9aba, 0x47e0,
-  0x9abb, 0x3d82,
-  0x9abc, 0x47e1,
-  0x9abd, 0x43b7,
-  0x9abe, 0x47e2,
-  0x9ac7, 0x3d83,
-  0x9ac8, 0x47eb,
-  0x9ad0, 0x3d84,
-  0x9ad1, 0x47f3,
-  0x9ad2, 0x3d85,
-  0x9ad3, 0x47f4,
-  0x9ad9, 0x3d86,
-  0x9adc, 0x47fa,
-  0x9ae2, 0x3d89,
-  0x9ae3, 0x4800,
-  0x9ae4, 0x3d8a,
-  0x9ae5, 0x4801,
-  0x9ae8, 0x3d8b,
-  0x9ae9, 0x43b0,
-  0x9aea, 0x4804,
-  0x9aee, 0x43b2,
-  0x9aef, 0x4808,
-  0x9af2, 0x3d8c,
-  0x9af3, 0x480b,
-  0x9af6, 0x3d8d,
-  0x9af7, 0x480e,
-  0x9afb, 0x3d8e,
-  0x9afc, 0x4812,
-  0x9b40, 0x4815,
-  0x9b46, 0x3d8f,
-  0x9b47, 0x481b,
-  0x9b4a, 0x3d90,
-  0x9b4b, 0x481e,
-  0x9b54, 0x3d92,
-  0x9b55, 0x4827,
-  0x9b58, 0x3d93,
-  0x9b59, 0x482a,
-  0x9b5a, 0x3d94,
-  0x9b5b, 0x482b,
-  0x9b5c, 0x3d95,
-  0x9b5d, 0x482c,
-  0x9b5e, 0x3d96,
-  0x9b60, 0x482d,
-  0x9b62, 0x482e,
-  0x9b70, 0x3d98,
-  0x9b74, 0x483c,
-  0x9b77, 0x3d9d,
-  0x9b79, 0x483e,
-  0x9b7c, 0x3da0,
-  0x9b7d, 0x4840,
-  0x9b7e, 0x3da1,
-  0x9ba1, 0x3da2,
-  0x9ba2, 0x4841,
-  0x9ba3, 0x3da3,
-  0x9ba5, 0x4842,
-  0x9ba7, 0x3da5,
-  0x9bab, 0x4844,
-  0x9bac, 0x3da9,
-  0x9bad, 0x4845,
-  0x9baf, 0x3daa,
-  0x9bb0, 0x4847,
-  0x9bb2, 0x3dab,
-  0x9bba, 0x4849,
-  0x9bbe, 0x3db3,
-  0x9bbf, 0x484d,
-  0x9bc0, 0x3db4,
-  0x9bc7, 0x484e,
-  0x9bca, 0x3dbb,
-  0x9bcb, 0x4851,
-  0x9bcc, 0x3dbc,
-  0x9bcd, 0x4852,
-  0x9bce, 0x43d0,
-  0x9bcf, 0x4853,
-  0x9bd0, 0x3dbd,
-  0x9bd2, 0x4854,
-  0x9bd3, 0x3dbf,
-  0x9bd4, 0x4855,
-  0x9bd5, 0x3dc0,
-  0x9bd6, 0x4856,
-  0x9bd8, 0x3dc1,
-  0x9bdb, 0x4858,
-  0x9bdd, 0x3dc4,
-  0x9bdf, 0x3dc5,
-  0x9be0, 0x485a,
-  0x9be1, 0x3dc6,
-  0x9be2, 0x485b,
-  0x9be3, 0x3dc7,
-  0x9be4, 0x485c,
-  0x9be7, 0x3dc8,
-  0x9be8, 0x485f,
-  0x9be9, 0x3dc9,
-  0x9bed, 0x4860,
-  0x9bee, 0x3dcd,
-  0x9bf0, 0x4861,
-  0x9bf3, 0x3dcf,
-  0x9bf4, 0x4864,
-  0x9bf7, 0x4866,
-  0x9bf8, 0x3dd1,
-  0x9bfa, 0x4867,
-  0x9bfb, 0x3dd3,
-  0x9bfd, 0x4868,
-  0x9c40, 0x3dd5,
-  0x9c43, 0x486a,
-  0x9c44, 0x3dd8,
-  0x9c47, 0x486b,
-  0x9c48, 0x3ddb,
-  0x9c49, 0x486c,
-  0x9c4a, 0x3ddc,
-  0x9c4b, 0x486d,
-  0x9c4d, 0x3ddd,
-  0x9c54, 0x486f,
-  0x9c55, 0x3de4,
-  0x9c56, 0x4870,
-  0x9c57, 0x3de5,
-  0x9c5c, 0x4871,
-  0x9c5d, 0x3dea,
-  0x9c5e, 0x4872,
-  0x9c60, 0x3deb,
-  0x9c61, 0x4874,
-  0x9c63, 0x4875,
-  0x9c64, 0x3ded,
-  0x9c67, 0x4876,
-  0x9c69, 0x4877,
-  0x9c6a, 0x3df1,
-  0x9c6c, 0x4878,
-  0x9c6d, 0x3df2,
-  0x9c6e, 0x4879,
-  0x9c6f, 0x3df3,
-  0x9c73, 0x487a,
-  0x9c75, 0x3df7,
-  0x9c78, 0x487c,
-  0x9c79, 0x3dfa,
-  0x9c7a, 0x487d,
-  0x9c7b, 0x3dfb,
-  0x9c7d, 0x487e,
-  0x9c7e, 0x3dfd,
-  0x9ca1, 0x3dfe,
-  0x9ca3, 0x487f,
-  0x9ca5, 0x3e00,
-  0x9ca6, 0x4881,
-  0x9ca8, 0x3e01,
-  0x9caa, 0x4883,
-  0x9cab, 0x3e03,
-  0x9cac, 0x4884,
-  0x9cad, 0x3e04,
-  0x9caf, 0x4885,
-  0x9cb1, 0x3e06,
-  0x9cbb, 0x4887,
-  0x9cbe, 0x3e12,
-  0x9cc3, 0x4888,
-  0x9cc6, 0x3e17,
-  0x9cce, 0x488b,
-  0x9ccf, 0x3e1f,
-  0x9cd1, 0x3e21,
-  0x9cd4, 0x488c,
-  0x9cd8, 0x3e24,
-  0x9cdb, 0x4890,
-  0x9cdc, 0x3e27,
-  0x9ce6, 0x4891,
-  0x9ce7, 0x3e31,
-  0x9cea, 0x4892,
-  0x9ceb, 0x3e34,
-  0x9ced, 0x4893,
-  0x9cee, 0x3e36,
-  0x9cfa, 0x4894,
-  0x9cfd, 0x3e42,
-  0x9cfe, 0x4897,
-  0x9d40, 0x43e8,
-  0x9d41, 0x4898,
-  0x9d46, 0x3e43,
-  0x9d47, 0x489d,
-  0x9d49, 0x3e44,
-  0x9d4a, 0x489f,
-  0x9d4c, 0x3e46,
-  0x9d4e, 0x48a1,
-  0x9d4f, 0x3e48,
-  0x9d50, 0x48a2,
-  0x9d51, 0x3e49,
-  0x9d52, 0x48a3,
-  0x9d55, 0x3e4a,
-  0x9d56, 0x48a6,
-  0x9d58, 0x48a7,
-  0x9d5b, 0x48a9,
-  0x9d61, 0x43c9,
-  0x9d62, 0x3e4c,
-  0x9d63, 0x48af,
-  0x9d64, 0x3e4d,
-  0x9d65, 0x48b0,
-  0x9d78, 0x43f5,
-  0x9d79, 0x3e4e,
-  0x9d7a, 0x48c3,
-  0x9d7e, 0x3e4f,
-  0x9da1, 0x48c7,
-  0x9da5, 0x3e50,
-  0x9da9, 0x48cb,
-  0x9daa, 0x3e54,
-  0x9dab, 0x48cc,
-  0x9dac, 0x3e55,
-  0x9dae, 0x48cd,
-  0x9db0, 0x3e58,
-  0x9db1, 0x48cf,
-  0x9db3, 0x3e59,
-  0x9db4, 0x48d1,
-  0x9db5, 0x3e5a,
-  0x9db6, 0x48d2,
-  0x9db7, 0x3e5b,
-  0x9db8, 0x48d3,
-  0x9dbc, 0x3e5c,
-  0x9dbe, 0x48d7,
-  0x9dbf, 0x3e5e,
-  0x9dc1, 0x48d8,
-  0x9dc3, 0x3e60,
-  0x9dc5, 0x48da,
-  0x9dc7, 0x3e62,
-  0x9dc9, 0x48dc,
-  0x9dca, 0x3e64,
-  0x9dcb, 0x48dd,
-  0x9dcd, 0x3e65,
-  0x9dd2, 0x48df,
-  0x9dd3, 0x3e6a,
-  0x9dd6, 0x48e0,
-  0x9dda, 0x3e6d,
-  0x9dfc, 0x48e4,
-  0x9dfd, 0x3e8f,
-  0x9e40, 0x3e91,
-  0x9e43, 0x48e5,
-  0x9e44, 0x3e95,
-  0x9e5f, 0x48e6,
-  0x9e60, 0x3eb1,
-  0x9e63, 0x48e7,
-  0x9e64, 0x3eb4,
-  0x9e66, 0x48e8,
-  0x9e68, 0x3eb6,
-  0x9e69, 0x48ea,
-  0x9e6a, 0x3eb7,
-  0x9e6b, 0x48eb,
-  0x9e71, 0x3eb8,
-  0x9e72, 0x48f1,
-  0x9e73, 0x3eb9,
-  0x9e74, 0x48f2,
-  0x9e77, 0x3eba,
-  0x9e79, 0x48f5,
-  0x9e7a, 0x3ebc,
-  0x9e7b, 0x48f6,
-  0x9e7c, 0x3ebd,
-  0x9e7d, 0x48f7,
-  0x9e7e, 0x3ebe,
-  0x9ea1, 0x3ebf,
-  0x9ea3, 0x48f8,
-  0x9ea4, 0x3ec1,
-  0x9ea7, 0x48f9,
-  0x9eaa, 0x3ec5,
-  0x9eab, 0x48fb,
-  0x9ead, 0x3ec7,
-  0x9eae, 0x48fc,
-  0x9eaf, 0x3ec8,
-  0x9eb2, 0x48fd,
-  0x9eb4, 0x3ecb,
-  0x9eb5, 0x48ff,
-  0x9eb6, 0x3ecc,
-  0x9eb8, 0x4900,
-  0x9eb9, 0x3ece,
-  0x9eba, 0x4901,
-  0x9ebc, 0x3ecf,
-  0x9ebd, 0x4903,
-  0x9ebf, 0x3ed0,
-  0x9ec1, 0x4905,
-  0x9ec5, 0x3ed3,
-  0x9ec6, 0x4908,
-  0x9ec7, 0x3ed4,
-  0x9ecb, 0x4909,
-  0x9ecd, 0x3ed9,
-  0x9ece, 0x490b,
-  0x9ed0, 0x3eda,
-  0x9ed2, 0x490d,
-  0x9ed3, 0x3edc,
-  0x9ed4, 0x490e,
-  0x9ed6, 0x3edd,
-  0x9ed8, 0x4910,
-  0x9eda, 0x3edf,
-  0x9ef0, 0x3ef5,
-  0x9ef2, 0x4912,
-  0x9ef3, 0x3ef7,
-  0x9ef5, 0x3ef9,
-  0x9ef6, 0x4913,
-  0x9ef9, 0x3efa,
-  0x9efb, 0x4916,
-  0x9efc, 0x3efc,
-  0x9efe, 0x3efe,
-  0x9f40, 0x3eff,
-  0x9f43, 0x4917,
-  0x9f44, 0x3f02,
-  0x9f48, 0x4918,
-  0x9f49, 0x3f06,
-  0x9f4b, 0x4919,
-  0x9f4d, 0x3f08,
-  0x9f4f, 0x3f0a,
-  0x9f61, 0x3f1c,
-  0x9f67, 0x491b,
-  0x9f69, 0x3f23,
-  0x9f70, 0x491d,
-  0x9f71, 0x3f2a,
-  0x9fa1, 0x3f38,
-  0x9fae, 0x3f45,
-  0x9fb2, 0x3f49,
-  0x9fb5, 0x491e,
-  0x9fb6, 0x3f4c,
-  0x9fbb, 0x491f,
-  0x9fbc, 0x3f51,
-  0x9fbf, 0x4920,
-  0x9fc1, 0x4921,
-  0x9fc2, 0x3f55,
-  0x9fc9, 0x3f5c,
-  0x9fcc, 0x4922,
-  0x9fcd, 0x3f60,
-  0x9fd4, 0x4923,
-  0x9fd5, 0x3f68,
-  0x9fd9, 0x3f6c,
-  0x9fdb, 0x3f6e,
-  0x9fe4, 0x4924,
-  0x9fe5, 0x3f77,
-  0x9fe7, 0x3f79,
-  0x9feb, 0x3f7d,
-  0x9ff0, 0x3f82,
-  0x9ff9, 0x4925,
-  0x9ffa, 0x3f8b,
-  0xa040, 0x4926,
-  0xa041, 0x3f90,
-  0xa047, 0x4927,
-  0xa048, 0x3f96,
-  0xa055, 0x4928,
-  0xa056, 0x3fa3,
-  0xa058, 0x3fa5,
-  0xa05b, 0x3fa8,
-  0xa064, 0x3fb1,
-  0xa06d, 0x4929,
-  0xa06e, 0x3fba,
-  0xa073, 0x3fbf,
-  0xa078, 0x3fc4,
-  0xa07b, 0x492a,
-  0xa07c, 0x3fc7,
-  0xa0a1, 0x3fca,
-  0xa0a2, 0x492b,
-  0xa0a3, 0x3fcb,
-  0xa0a6, 0x3fce,
-  0xa0a7, 0x492c,
-  0xa0a8, 0x3fcf,
-  0xa0ae, 0x3fd5,
-  0xa0b0, 0x3fd7,
-  0xa0c5, 0x492d,
-  0xa0c6, 0x3fec,
-  0xa0d0, 0x492e,
-  0xa0d1, 0x3ff6,
-  0xa0d4, 0x3ff9,
-  0xa0d6, 0x3ffb,
-  0xa0e0, 0x4005,
-  0xa0e2, 0x4007,
-  0xa0e3, 0x492f,
-  0xa0e5, 0x4009,
-  0xa0e7, 0x4930,
-  0xa0ee, 0x43b4,
-  0xa0ef, 0x4937,
-  0xa0f2, 0x43b8,
-  0xa0f3, 0x493a,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d8, 0x35b3,
-  0xc6df, 0x1794,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc8d4, 0x44c6,
-  0xc8d7, 0x451c,
-  0xc8e0, 0x02dc,
-  0xc8e1, 0x4525,
-  0xc8e9, 0x0509,
-  0xc8ea, 0x452d,
-  0xc8f1, 0x09f6,
-  0xc8f5, 0x4992,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xfa40, 0x400b,
-  0xfa60, 0x402b,
-  0xfa67, 0x4032,
-  0xfaa1, 0x404a,
-  0xfaa9, 0x4946,
-  0xfaab, 0x4054,
-  0xfabe, 0x4067,
-  0xfac6, 0x406f,
-  0xfad6, 0x407f,
-  0xfb40, 0x40a8,
-  0xfb49, 0x40b1,
-  0xfb53, 0x4948,
-  0xfb54, 0x40bc,
-  0xfb6e, 0x4949,
-  0xfb6f, 0x40d7,
-  0xfba1, 0x40e7,
-  0xfba3, 0x494a,
-  0xfba4, 0x40ea,
-  0xfbb9, 0x40ff,
-  0xfbbf, 0x494b,
-  0xfbc0, 0x4105,
-  0xfbcd, 0x494c,
-  0xfbce, 0x4112,
-  0xfbf4, 0x4138,
-  0xfbfa, 0x413e,
-  0xfc40, 0x4143,
-  0xfc4a, 0x494d,
-  0xfc4b, 0x414d,
-  0xfc50, 0x4151,
-  0xfc52, 0x494e,
-  0xfc53, 0x4153,
-  0xfc63, 0x494f,
-  0xfc64, 0x4163,
-  0xfc6d, 0x4950,
-  0xfc6e, 0x416d,
-  0xfc75, 0x4951,
-  0xfc76, 0x4174,
-  0xfca1, 0x417d,
-  0xfcba, 0x4195,
-  0xfcbc, 0x4952,
-  0xfcbe, 0x4198,
-  0xfccc, 0x4954,
-  0xfccd, 0x41a7,
-  0xfce3, 0x4955,
-  0xfce4, 0x41bd,
-  0xfcee, 0x4956,
-  0xfcef, 0x41c7,
-  0xfcf2, 0x41ca,
-  0xfd40, 0x41d7,
-  0xfd49, 0x4957,
-  0xfd4a, 0x41e0,
-  0xfd6a, 0x4958,
-  0xfd6b, 0x4201,
-  0xfda1, 0x4215,
-  0xfdb9, 0x422d,
-  0xfdbc, 0x4230,
-  0xfde3, 0x4959,
-  0xfde4, 0x4258,
-  0xfdf2, 0x495a,
-  0xfdf3, 0x4266,
-  0xfe40, 0x4272,
-  0xfe53, 0x4285,
-  0xfe6d, 0x495b,
-  0xfe6e, 0x429f,
-  0xfe70, 0x42a1,
-  0xfe78, 0x495c,
-  0xfe79, 0x42a9,
-  0xfea1, 0x42af,
-  0xfeab, 0x42b8,
-  0xfede, 0x495d,
-  0xfee0, 0x42eb,
-  0xfeed, 0x495f,
-  0xfeef, 0x42f8,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13ETHKB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13ETHKB5HMap2, 1126
-};
-
-static Gushort cns13ETHKB5VMap2[2278] = {
-  0x0000, 0x0000,
-  0x8840, 0x44c9,
-  0x8856, 0x4961,
-  0x88a1, 0x498a,
-  0x88a9, 0x499c,
-  0x8940, 0x4534,
-  0x8943, 0x4536,
-  0x8946, 0x4537,
-  0x894c, 0x453b,
-  0x894d, 0x43c3,
-  0x894e, 0x453c,
-  0x8951, 0x439a,
-  0x8952, 0x453f,
-  0x89a1, 0x456c,
-  0x89a6, 0x43a2,
-  0x89ab, 0x43ec,
-  0x89ac, 0x4571,
-  0x89ad, 0x43eb,
-  0x89ae, 0x4572,
-  0x89b0, 0x4573,
-  0x89b5, 0x4576,
-  0x89c1, 0x4581,
-  0x89c5, 0x4584,
-  0x89cf, 0x43bc,
-  0x89d0, 0x458e,
-  0x89d9, 0x439c,
-  0x89da, 0x4597,
-  0x89db, 0x439e,
-  0x89dc, 0x4598,
-  0x89dd, 0x439f,
-  0x89de, 0x4599,
-  0x89e1, 0x43a1,
-  0x89e2, 0x459c,
-  0x89e3, 0x43a3,
-  0x89e4, 0x459d,
-  0x89ea, 0x43a5,
-  0x89ec, 0x45a3,
-  0x89fa, 0x43a9,
-  0x89fb, 0x45b1,
-  0x8a40, 0x45b5,
-  0x8a41, 0x4309,
-  0x8a43, 0x430b,
-  0x8a4d, 0x45b6,
-  0x8a4e, 0x4316,
-  0x8a5a, 0x45b7,
-  0x8a5b, 0x4323,
-  0x8a5e, 0x45b8,
-  0x8a5f, 0x4327,
-  0x8a64, 0x432c,
-  0x8a71, 0x45b9,
-  0x8a72, 0x433a,
-  0x8a76, 0x433e,
-  0x8a77, 0x45ba,
-  0x8a78, 0x4340,
-  0x8a7a, 0x45bb,
-  0x8a7b, 0x4343,
-  0x8a7c, 0x45bc,
-  0x8a7d, 0x4345,
-  0x8a7e, 0x45bd,
-  0x8aa1, 0x4347,
-  0x8aa8, 0x45be,
-  0x8aa9, 0x434f,
-  0x8aac, 0x4352,
-  0x8ab2, 0x4358,
-  0x8ab6, 0x45bf,
-  0x8ab7, 0x435d,
-  0x8ab8, 0x45c0,
-  0x8ab9, 0x435f,
-  0x8abb, 0x4361,
-  0x8ac9, 0x436f,
-  0x8acc, 0x45c1,
-  0x8ace, 0x4374,
-  0x8ad6, 0x45c2,
-  0x8ad8, 0x437e,
-  0x8adf, 0x4385,
-  0x8ae6, 0x45c4,
-  0x8ae7, 0x43db,
-  0x8ae8, 0x45c5,
-  0x8af6, 0x45d2,
-  0x8b40, 0x45db,
-  0x8b41, 0x438c,
-  0x8b43, 0x45dc,
-  0x8b45, 0x438e,
-  0x8b46, 0x45de,
-  0x8b47, 0x438f,
-  0x8b48, 0x45df,
-  0x8b49, 0x4390,
-  0x8b4a, 0x45e0,
-  0x8b4b, 0x4391,
-  0x8b4c, 0x45e1,
-  0x8b4d, 0x4392,
-  0x8b51, 0x45e2,
-  0x8b55, 0x45e5,
-  0x8b58, 0x4397,
-  0x8b59, 0x45e8,
-  0x8b5a, 0x4398,
-  0x8b5b, 0x43c4,
-  0x8b5c, 0x45e9,
-  0x8b61, 0x43a7,
-  0x8b62, 0x45ee,
-  0x8b68, 0x43ac,
-  0x8b69, 0x45f4,
-  0x8ba1, 0x460a,
-  0x8bc0, 0x44df,
-  0x8bde, 0x44fc,
-  0x8d60, 0x4629,
-  0x8d62, 0x43ba,
-  0x8d63, 0x462b,
-  0x8d68, 0x43bb,
-  0x8d69, 0x43a0,
-  0x8d6a, 0x43bd,
-  0x8d6b, 0x4630,
-  0x8d6e, 0x43be,
-  0x8d6f, 0x4633,
-  0x8d76, 0x43bf,
-  0x8d77, 0x463a,
-  0x8d7a, 0x43c0,
-  0x8d7b, 0x463d,
-  0x8d7c, 0x43c1,
-  0x8d7d, 0x463e,
-  0x8da1, 0x4640,
-  0x8da5, 0x43c2,
-  0x8da6, 0x4644,
-  0x8da8, 0x43b9,
-  0x8da9, 0x43ad,
-  0x8daa, 0x4646,
-  0x8db6, 0x43c7,
-  0x8db7, 0x4652,
-  0x8dc3, 0x43c8,
-  0x8dc4, 0x465e,
-  0x8dfa, 0x43f9,
-  0x8dfb, 0x4694,
-  0x8e40, 0x372b,
-  0x8e45, 0x4698,
-  0x8e46, 0x3730,
-  0x8e6a, 0x3754,
-  0x8e6b, 0x4699,
-  0x8e6d, 0x3756,
-  0x8e70, 0x3759,
-  0x8e76, 0x469b,
-  0x8e77, 0x375f,
-  0x8e7b, 0x469c,
-  0x8e7c, 0x3764,
-  0x8ea1, 0x3766,
-  0x8ea6, 0x469d,
-  0x8ea7, 0x376b,
-  0x8eac, 0x3770,
-  0x8eb5, 0x3779,
-  0x8eb8, 0x469e,
-  0x8eb9, 0x377d,
-  0x8ec9, 0x469f,
-  0x8eca, 0x378d,
-  0x8ece, 0x3791,
-  0x8ed1, 0x3794,
-  0x8ee5, 0x46a0,
-  0x8ee6, 0x37a8,
-  0x8eef, 0x46a1,
-  0x8ef0, 0x37b1,
-  0x8ef6, 0x46a2,
-  0x8ef7, 0x37b8,
-  0x8f40, 0x37c0,
-  0x8f58, 0x37d8,
-  0x8f59, 0x46a3,
-  0x8f5a, 0x37d9,
-  0x8f5f, 0x46a4,
-  0x8f60, 0x37de,
-  0x8f67, 0x46a5,
-  0x8f68, 0x37e5,
-  0x8f6a, 0x37e7,
-  0x8f6f, 0x37ec,
-  0x8f79, 0x46a6,
-  0x8f7a, 0x37f7,
-  0x8fa1, 0x37fc,
-  0x8fb0, 0x46a7,
-  0x8fb1, 0x380c,
-  0x8fc5, 0x46a8,
-  0x8fc6, 0x3820,
-  0x8fc7, 0x46a9,
-  0x8fc8, 0x3821,
-  0x8fca, 0x46aa,
-  0x8fcd, 0x3826,
-  0x8fda, 0x46ab,
-  0x8fdb, 0x3833,
-  0x8fe3, 0x46ac,
-  0x8fe4, 0x383c,
-  0x8ffc, 0x46ad,
-  0x8ffd, 0x3854,
-  0x9040, 0x3856,
-  0x9055, 0x46ae,
-  0x9056, 0x386c,
-  0x905c, 0x46af,
-  0x905f, 0x3873,
-  0x906e, 0x3882,
-  0x906f, 0x46b2,
-  0x9070, 0x3883,
-  0x907b, 0x388d,
-  0x90a1, 0x3891,
-  0x90a6, 0x46b3,
-  0x90a7, 0x3896,
-  0x90b8, 0x46b4,
-  0x90b9, 0x38a7,
-  0x90dd, 0x38cb,
-  0x90f2, 0x38e0,
-  0x9140, 0x38ed,
-  0x9165, 0x46b5,
-  0x9166, 0x3912,
-  0x916e, 0x46b6,
-  0x916f, 0x391a,
-  0x917e, 0x46b7,
-  0x91a1, 0x3929,
-  0x91a2, 0x46b8,
-  0x91a3, 0x392a,
-  0x91c0, 0x3947,
-  0x91c8, 0x46b9,
-  0x91c9, 0x3950,
-  0x9240, 0x3986,
-  0x9245, 0x398b,
-  0x9264, 0x46ba,
-  0x9265, 0x39ab,
-  0x926d, 0x46bb,
-  0x926e, 0x39b4,
-  0x92a1, 0x39c5,
-  0x92b3, 0x39d3,
-  0x92c9, 0x39e9,
-  0x92d2, 0x39f2,
-  0x92e5, 0x46bc,
-  0x92e6, 0x3a05,
-  0x92f2, 0x46bd,
-  0x92f3, 0x3a11,
-  0x9340, 0x3a1d,
-  0x9368, 0x46be,
-  0x9369, 0x3a45,
-  0x93a1, 0x3a5b,
-  0x93aa, 0x46bf,
-  0x93ab, 0x3a64,
-  0x93c2, 0x46c0,
-  0x93c3, 0x3a7b,
-  0x93e5, 0x46c1,
-  0x93e6, 0x3a9d,
-  0x93e8, 0x46c2,
-  0x93e9, 0x3aa0,
-  0x93eb, 0x46c3,
-  0x93ec, 0x3aa2,
-  0x9440, 0x3ab5,
-  0x9446, 0x46c4,
-  0x9448, 0x3abc,
-  0x9479, 0x46c5,
-  0x947a, 0x3aee,
-  0x94a1, 0x3af3,
-  0x94cb, 0x46c6,
-  0x94cc, 0x3b1e,
-  0x9540, 0x3b51,
-  0x954d, 0x46c7,
-  0x954e, 0x3b5e,
-  0x955a, 0x46c8,
-  0x955b, 0x3b6a,
-  0x955f, 0x46c9,
-  0x9560, 0x3b6f,
-  0x95a1, 0x3b8e,
-  0x95c6, 0x46ca,
-  0x95c7, 0x3bb3,
-  0x95da, 0x3bc6,
-  0x9640, 0x3beb,
-  0x9645, 0x3bf0,
-  0x9651, 0x46cb,
-  0x9652, 0x3bfd,
-  0x966a, 0x46cc,
-  0x966b, 0x3c16,
-  0x96a1, 0x3c2a,
-  0x96d4, 0x46cd,
-  0x96d5, 0x3c5d,
-  0x96ee, 0x3c76,
-  0x96fd, 0x3c85,
-  0x9740, 0x3c87,
-  0x97a1, 0x3cc6,
-  0x9840, 0x3d24,
-  0x9844, 0x46ce,
-  0x9846, 0x3d2a,
-  0x986f, 0x46d0,
-  0x9870, 0x3d54,
-  0x9875, 0x46d1,
-  0x9877, 0x3d59,
-  0x9878, 0x46d3,
-  0x987a, 0x3d5a,
-  0x987b, 0x46d5,
-  0x98a1, 0x46d9,
-  0x98a3, 0x3d5b,
-  0x98a4, 0x46db,
-  0x98af, 0x3d5c,
-  0x98b0, 0x46e6,
-  0x98b4, 0x43ca,
-  0x98b5, 0x46ea,
-  0x98b6, 0x3d5d,
-  0x98b7, 0x46eb,
-  0x98b8, 0x43cc,
-  0x98b9, 0x3d5e,
-  0x98ba, 0x46ec,
-  0x98bb, 0x43fa,
-  0x98bc, 0x46ed,
-  0x98bd, 0x3d5f,
-  0x98bf, 0x46ee,
-  0x98c2, 0x3d61,
-  0x98c3, 0x46f1,
-  0x98c4, 0x3d62,
-  0x98c5, 0x46f2,
-  0x98c6, 0x3d63,
-  0x98c8, 0x46f3,
-  0x98d2, 0x43cd,
-  0x98d3, 0x46fd,
-  0x98d8, 0x43ce,
-  0x98da, 0x4702,
-  0x98db, 0x43d1,
-  0x98dc, 0x4703,
-  0x98df, 0x43d4,
-  0x98e0, 0x4706,
-  0x98e3, 0x3d65,
-  0x98e4, 0x4709,
-  0x98e7, 0x3d66,
-  0x98e8, 0x470c,
-  0x98ed, 0x3d67,
-  0x98ee, 0x4711,
-  0x98f0, 0x3d68,
-  0x98f1, 0x4713,
-  0x98f2, 0x3d69,
-  0x98f3, 0x4714,
-  0x98f4, 0x43d5,
-  0x98f6, 0x4715,
-  0x98fc, 0x3d6a,
-  0x98fd, 0x471b,
-  0x98fe, 0x43d7,
-  0x9940, 0x471c,
-  0x9942, 0x43fc,
-  0x9943, 0x3d6b,
-  0x9944, 0x471e,
-  0x9945, 0x3d6c,
-  0x9946, 0x471f,
-  0x9947, 0x43d8,
-  0x9948, 0x4720,
-  0x994f, 0x3d6d,
-  0x9950, 0x4727,
-  0x9954, 0x43d9,
-  0x9955, 0x472b,
-  0x995c, 0x43da,
-  0x995d, 0x4732,
-  0x9964, 0x43dc,
-  0x9965, 0x4739,
-  0x996a, 0x3d6e,
-  0x996b, 0x473e,
-  0x996e, 0x3d6f,
-  0x996f, 0x4741,
-  0x9975, 0x3d70,
-  0x9976, 0x4747,
-  0x9978, 0x3d71,
-  0x9979, 0x4749,
-  0x99a1, 0x474f,
-  0x99a2, 0x3d72,
-  0x99a3, 0x4750,
-  0x99a4, 0x43c5,
-  0x99a5, 0x4751,
-  0x99a6, 0x43c6,
-  0x99a7, 0x4752,
-  0x99ae, 0x3d73,
-  0x99af, 0x4759,
-  0x99b2, 0x43de,
-  0x99b3, 0x475c,
-  0x99b6, 0x3d74,
-  0x99b7, 0x475f,
-  0x99ba, 0x3d75,
-  0x99bb, 0x4762,
-  0x99ca, 0x43e0,
-  0x99cb, 0x4771,
-  0x99cd, 0x43e2,
-  0x99ce, 0x4773,
-  0x99d3, 0x43e3,
-  0x99d4, 0x4778,
-  0x99d6, 0x43e5,
-  0x99d7, 0x477a,
-  0x99df, 0x43df,
-  0x99e0, 0x4782,
-  0x99e2, 0x3d76,
-  0x99e3, 0x4784,
-  0x99e4, 0x43ab,
-  0x99e5, 0x4785,
-  0x99e6, 0x43e7,
-  0x99e7, 0x4786,
-  0x99e8, 0x43e9,
-  0x99e9, 0x4787,
-  0x99ef, 0x43fd,
-  0x99f0, 0x478d,
-  0x99f4, 0x3d77,
-  0x99f5, 0x4791,
-  0x9a40, 0x479b,
-  0x9a4a, 0x3d78,
-  0x9a4b, 0x47a5,
-  0x9a4c, 0x3d79,
-  0x9a4d, 0x47a6,
-  0x9a59, 0x3d7a,
-  0x9a5a, 0x47b2,
-  0x9a5f, 0x43af,
-  0x9a60, 0x47b7,
-  0x9a61, 0x3d7b,
-  0x9a62, 0x47b8,
-  0x9a66, 0x43ed,
-  0x9a67, 0x47bc,
-  0x9a68, 0x3d7c,
-  0x9a69, 0x43ee,
-  0x9a6a, 0x47bd,
-  0x9a6b, 0x43ff,
-  0x9a6c, 0x47be,
-  0x9a73, 0x3d7d,
-  0x9a74, 0x47c5,
-  0x9a75, 0x43f1,
-  0x9a76, 0x47c6,
-  0x9a7e, 0x3d7e,
-  0x9aa1, 0x47ce,
-  0x9aa3, 0x43f3,
-  0x9aa4, 0x47d0,
-  0x9aa5, 0x43f2,
-  0x9aa6, 0x47d1,
-  0x9aa9, 0x43f8,
-  0x9aaa, 0x43f4,
-  0x9aab, 0x47d4,
-  0x9ab2, 0x3d7f,
-  0x9ab3, 0x47db,
-  0x9ab7, 0x3d80,
-  0x9ab8, 0x47df,
-  0x9ab9, 0x3d81,
-  0x9aba, 0x47e0,
-  0x9abb, 0x3d82,
-  0x9abc, 0x47e1,
-  0x9abd, 0x43b7,
-  0x9abe, 0x47e2,
-  0x9ac7, 0x3d83,
-  0x9ac8, 0x47eb,
-  0x9ad0, 0x3d84,
-  0x9ad1, 0x47f3,
-  0x9ad2, 0x3d85,
-  0x9ad3, 0x47f4,
-  0x9ad9, 0x3d86,
-  0x9adc, 0x47fa,
-  0x9ae2, 0x3d89,
-  0x9ae3, 0x4800,
-  0x9ae4, 0x3d8a,
-  0x9ae5, 0x4801,
-  0x9ae8, 0x3d8b,
-  0x9ae9, 0x43b0,
-  0x9aea, 0x4804,
-  0x9aee, 0x43b2,
-  0x9aef, 0x4808,
-  0x9af2, 0x3d8c,
-  0x9af3, 0x480b,
-  0x9af6, 0x3d8d,
-  0x9af7, 0x480e,
-  0x9afb, 0x3d8e,
-  0x9afc, 0x4812,
-  0x9b40, 0x4815,
-  0x9b46, 0x3d8f,
-  0x9b47, 0x481b,
-  0x9b4a, 0x3d90,
-  0x9b4b, 0x481e,
-  0x9b54, 0x3d92,
-  0x9b55, 0x4827,
-  0x9b58, 0x3d93,
-  0x9b59, 0x482a,
-  0x9b5a, 0x3d94,
-  0x9b5b, 0x482b,
-  0x9b5c, 0x3d95,
-  0x9b5d, 0x482c,
-  0x9b5e, 0x3d96,
-  0x9b60, 0x482d,
-  0x9b62, 0x482e,
-  0x9b70, 0x3d98,
-  0x9b74, 0x483c,
-  0x9b77, 0x3d9d,
-  0x9b79, 0x483e,
-  0x9b7c, 0x3da0,
-  0x9b7d, 0x4840,
-  0x9b7e, 0x3da1,
-  0x9ba1, 0x3da2,
-  0x9ba2, 0x4841,
-  0x9ba3, 0x3da3,
-  0x9ba5, 0x4842,
-  0x9ba7, 0x3da5,
-  0x9bab, 0x4844,
-  0x9bac, 0x3da9,
-  0x9bad, 0x4845,
-  0x9baf, 0x3daa,
-  0x9bb0, 0x4847,
-  0x9bb2, 0x3dab,
-  0x9bba, 0x4849,
-  0x9bbe, 0x3db3,
-  0x9bbf, 0x484d,
-  0x9bc0, 0x3db4,
-  0x9bc7, 0x484e,
-  0x9bca, 0x3dbb,
-  0x9bcb, 0x4851,
-  0x9bcc, 0x3dbc,
-  0x9bcd, 0x4852,
-  0x9bce, 0x43d0,
-  0x9bcf, 0x4853,
-  0x9bd0, 0x3dbd,
-  0x9bd2, 0x4854,
-  0x9bd3, 0x3dbf,
-  0x9bd4, 0x4855,
-  0x9bd5, 0x3dc0,
-  0x9bd6, 0x4856,
-  0x9bd8, 0x3dc1,
-  0x9bdb, 0x4858,
-  0x9bdd, 0x3dc4,
-  0x9bdf, 0x3dc5,
-  0x9be0, 0x485a,
-  0x9be1, 0x3dc6,
-  0x9be2, 0x485b,
-  0x9be3, 0x3dc7,
-  0x9be4, 0x485c,
-  0x9be7, 0x3dc8,
-  0x9be8, 0x485f,
-  0x9be9, 0x3dc9,
-  0x9bed, 0x4860,
-  0x9bee, 0x3dcd,
-  0x9bf0, 0x4861,
-  0x9bf3, 0x3dcf,
-  0x9bf4, 0x4864,
-  0x9bf7, 0x4866,
-  0x9bf8, 0x3dd1,
-  0x9bfa, 0x4867,
-  0x9bfb, 0x3dd3,
-  0x9bfd, 0x4868,
-  0x9c40, 0x3dd5,
-  0x9c43, 0x486a,
-  0x9c44, 0x3dd8,
-  0x9c47, 0x486b,
-  0x9c48, 0x3ddb,
-  0x9c49, 0x486c,
-  0x9c4a, 0x3ddc,
-  0x9c4b, 0x486d,
-  0x9c4d, 0x3ddd,
-  0x9c54, 0x486f,
-  0x9c55, 0x3de4,
-  0x9c56, 0x4870,
-  0x9c57, 0x3de5,
-  0x9c5c, 0x4871,
-  0x9c5d, 0x3dea,
-  0x9c5e, 0x4872,
-  0x9c60, 0x3deb,
-  0x9c61, 0x4874,
-  0x9c63, 0x4875,
-  0x9c64, 0x3ded,
-  0x9c67, 0x4876,
-  0x9c69, 0x4877,
-  0x9c6a, 0x3df1,
-  0x9c6c, 0x4878,
-  0x9c6d, 0x3df2,
-  0x9c6e, 0x4879,
-  0x9c6f, 0x3df3,
-  0x9c73, 0x487a,
-  0x9c75, 0x3df7,
-  0x9c78, 0x487c,
-  0x9c79, 0x3dfa,
-  0x9c7a, 0x487d,
-  0x9c7b, 0x3dfb,
-  0x9c7d, 0x487e,
-  0x9c7e, 0x3dfd,
-  0x9ca1, 0x3dfe,
-  0x9ca3, 0x487f,
-  0x9ca5, 0x3e00,
-  0x9ca6, 0x4881,
-  0x9ca8, 0x3e01,
-  0x9caa, 0x4883,
-  0x9cab, 0x3e03,
-  0x9cac, 0x4884,
-  0x9cad, 0x3e04,
-  0x9caf, 0x4885,
-  0x9cb1, 0x3e06,
-  0x9cbb, 0x4887,
-  0x9cbe, 0x3e12,
-  0x9cc3, 0x4888,
-  0x9cc6, 0x3e17,
-  0x9cce, 0x488b,
-  0x9ccf, 0x3e1f,
-  0x9cd1, 0x3e21,
-  0x9cd4, 0x488c,
-  0x9cd8, 0x3e24,
-  0x9cdb, 0x4890,
-  0x9cdc, 0x3e27,
-  0x9ce6, 0x4891,
-  0x9ce7, 0x3e31,
-  0x9cea, 0x4892,
-  0x9ceb, 0x3e34,
-  0x9ced, 0x4893,
-  0x9cee, 0x3e36,
-  0x9cfa, 0x4894,
-  0x9cfd, 0x3e42,
-  0x9cfe, 0x4897,
-  0x9d40, 0x43e8,
-  0x9d41, 0x4898,
-  0x9d46, 0x3e43,
-  0x9d47, 0x489d,
-  0x9d49, 0x3e44,
-  0x9d4a, 0x489f,
-  0x9d4c, 0x3e46,
-  0x9d4e, 0x48a1,
-  0x9d4f, 0x3e48,
-  0x9d50, 0x48a2,
-  0x9d51, 0x3e49,
-  0x9d52, 0x48a3,
-  0x9d55, 0x3e4a,
-  0x9d56, 0x48a6,
-  0x9d58, 0x48a7,
-  0x9d5b, 0x48a9,
-  0x9d61, 0x43c9,
-  0x9d62, 0x3e4c,
-  0x9d63, 0x48af,
-  0x9d64, 0x3e4d,
-  0x9d65, 0x48b0,
-  0x9d78, 0x43f5,
-  0x9d79, 0x3e4e,
-  0x9d7a, 0x48c3,
-  0x9d7e, 0x3e4f,
-  0x9da1, 0x48c7,
-  0x9da5, 0x3e50,
-  0x9da9, 0x48cb,
-  0x9daa, 0x3e54,
-  0x9dab, 0x48cc,
-  0x9dac, 0x3e55,
-  0x9dae, 0x48cd,
-  0x9db0, 0x3e58,
-  0x9db1, 0x48cf,
-  0x9db3, 0x3e59,
-  0x9db4, 0x48d1,
-  0x9db5, 0x3e5a,
-  0x9db6, 0x48d2,
-  0x9db7, 0x3e5b,
-  0x9db8, 0x48d3,
-  0x9dbc, 0x3e5c,
-  0x9dbe, 0x48d7,
-  0x9dbf, 0x3e5e,
-  0x9dc1, 0x48d8,
-  0x9dc3, 0x3e60,
-  0x9dc5, 0x48da,
-  0x9dc7, 0x3e62,
-  0x9dc9, 0x48dc,
-  0x9dca, 0x3e64,
-  0x9dcb, 0x48dd,
-  0x9dcd, 0x3e65,
-  0x9dd2, 0x48df,
-  0x9dd3, 0x3e6a,
-  0x9dd6, 0x48e0,
-  0x9dda, 0x3e6d,
-  0x9dfc, 0x48e4,
-  0x9dfd, 0x3e8f,
-  0x9e40, 0x3e91,
-  0x9e43, 0x48e5,
-  0x9e44, 0x3e95,
-  0x9e5f, 0x48e6,
-  0x9e60, 0x3eb1,
-  0x9e63, 0x48e7,
-  0x9e64, 0x3eb4,
-  0x9e66, 0x48e8,
-  0x9e68, 0x3eb6,
-  0x9e69, 0x48ea,
-  0x9e6a, 0x3eb7,
-  0x9e6b, 0x48eb,
-  0x9e71, 0x3eb8,
-  0x9e72, 0x48f1,
-  0x9e73, 0x3eb9,
-  0x9e74, 0x48f2,
-  0x9e77, 0x3eba,
-  0x9e79, 0x48f5,
-  0x9e7a, 0x3ebc,
-  0x9e7b, 0x48f6,
-  0x9e7c, 0x3ebd,
-  0x9e7d, 0x48f7,
-  0x9e7e, 0x3ebe,
-  0x9ea1, 0x3ebf,
-  0x9ea3, 0x48f8,
-  0x9ea4, 0x3ec1,
-  0x9ea7, 0x48f9,
-  0x9eaa, 0x3ec5,
-  0x9eab, 0x48fb,
-  0x9ead, 0x3ec7,
-  0x9eae, 0x48fc,
-  0x9eaf, 0x3ec8,
-  0x9eb2, 0x48fd,
-  0x9eb4, 0x3ecb,
-  0x9eb5, 0x48ff,
-  0x9eb6, 0x3ecc,
-  0x9eb8, 0x4900,
-  0x9eb9, 0x3ece,
-  0x9eba, 0x4901,
-  0x9ebc, 0x3ecf,
-  0x9ebd, 0x4903,
-  0x9ebf, 0x3ed0,
-  0x9ec1, 0x4905,
-  0x9ec5, 0x3ed3,
-  0x9ec6, 0x4908,
-  0x9ec7, 0x3ed4,
-  0x9ecb, 0x4909,
-  0x9ecd, 0x3ed9,
-  0x9ece, 0x490b,
-  0x9ed0, 0x3eda,
-  0x9ed2, 0x490d,
-  0x9ed3, 0x3edc,
-  0x9ed4, 0x490e,
-  0x9ed6, 0x3edd,
-  0x9ed8, 0x4910,
-  0x9eda, 0x3edf,
-  0x9ef0, 0x3ef5,
-  0x9ef2, 0x4912,
-  0x9ef3, 0x3ef7,
-  0x9ef5, 0x3ef9,
-  0x9ef6, 0x4913,
-  0x9ef9, 0x3efa,
-  0x9efb, 0x4916,
-  0x9efc, 0x3efc,
-  0x9efe, 0x3efe,
-  0x9f40, 0x3eff,
-  0x9f43, 0x4917,
-  0x9f44, 0x3f02,
-  0x9f48, 0x4918,
-  0x9f49, 0x3f06,
-  0x9f4b, 0x4919,
-  0x9f4d, 0x3f08,
-  0x9f4f, 0x3f0a,
-  0x9f61, 0x3f1c,
-  0x9f67, 0x491b,
-  0x9f69, 0x3f23,
-  0x9f70, 0x491d,
-  0x9f71, 0x3f2a,
-  0x9fa1, 0x3f38,
-  0x9fae, 0x3f45,
-  0x9fb2, 0x3f49,
-  0x9fb5, 0x491e,
-  0x9fb6, 0x3f4c,
-  0x9fbb, 0x491f,
-  0x9fbc, 0x3f51,
-  0x9fbf, 0x4920,
-  0x9fc1, 0x4921,
-  0x9fc2, 0x3f55,
-  0x9fc9, 0x3f5c,
-  0x9fcc, 0x4922,
-  0x9fcd, 0x3f60,
-  0x9fd4, 0x4923,
-  0x9fd5, 0x3f68,
-  0x9fd9, 0x3f6c,
-  0x9fdb, 0x3f6e,
-  0x9fe4, 0x4924,
-  0x9fe5, 0x3f77,
-  0x9fe7, 0x3f79,
-  0x9feb, 0x3f7d,
-  0x9ff0, 0x3f82,
-  0x9ff9, 0x4925,
-  0x9ffa, 0x3f8b,
-  0xa040, 0x4926,
-  0xa041, 0x3f90,
-  0xa047, 0x4927,
-  0xa048, 0x3f96,
-  0xa055, 0x4928,
-  0xa056, 0x3fa3,
-  0xa058, 0x3fa5,
-  0xa05b, 0x3fa8,
-  0xa064, 0x3fb1,
-  0xa06d, 0x4929,
-  0xa06e, 0x3fba,
-  0xa073, 0x3fbf,
-  0xa078, 0x3fc4,
-  0xa07b, 0x492a,
-  0xa07c, 0x3fc7,
-  0xa0a1, 0x3fca,
-  0xa0a2, 0x492b,
-  0xa0a3, 0x3fcb,
-  0xa0a6, 0x3fce,
-  0xa0a7, 0x492c,
-  0xa0a8, 0x3fcf,
-  0xa0ae, 0x3fd5,
-  0xa0b0, 0x3fd7,
-  0xa0c5, 0x492d,
-  0xa0c6, 0x3fec,
-  0xa0d0, 0x492e,
-  0xa0d1, 0x3ff6,
-  0xa0d4, 0x3ff9,
-  0xa0d6, 0x3ffb,
-  0xa0e0, 0x4005,
-  0xa0e2, 0x4007,
-  0xa0e3, 0x492f,
-  0xa0e5, 0x4009,
-  0xa0e7, 0x4930,
-  0xa0ee, 0x43b4,
-  0xa0ef, 0x4937,
-  0xa0f2, 0x43b8,
-  0xa0f3, 0x493a,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d8, 0x35b3,
-  0xc6df, 0x1794,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc8d4, 0x44c6,
-  0xc8d7, 0x451c,
-  0xc8e0, 0x02dc,
-  0xc8e1, 0x4525,
-  0xc8e9, 0x0509,
-  0xc8ea, 0x452d,
-  0xc8f1, 0x09f6,
-  0xc8f5, 0x4992,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xfa40, 0x400b,
-  0xfa60, 0x402b,
-  0xfa67, 0x4032,
-  0xfaa1, 0x404a,
-  0xfaa9, 0x4946,
-  0xfaab, 0x4054,
-  0xfabe, 0x4067,
-  0xfac6, 0x406f,
-  0xfad6, 0x407f,
-  0xfb40, 0x40a8,
-  0xfb49, 0x40b1,
-  0xfb53, 0x4948,
-  0xfb54, 0x40bc,
-  0xfb6e, 0x4949,
-  0xfb6f, 0x40d7,
-  0xfba1, 0x40e7,
-  0xfba3, 0x494a,
-  0xfba4, 0x40ea,
-  0xfbb9, 0x40ff,
-  0xfbbf, 0x494b,
-  0xfbc0, 0x4105,
-  0xfbcd, 0x494c,
-  0xfbce, 0x4112,
-  0xfbf4, 0x4138,
-  0xfbfa, 0x413e,
-  0xfc40, 0x4143,
-  0xfc4a, 0x494d,
-  0xfc4b, 0x414d,
-  0xfc50, 0x4151,
-  0xfc52, 0x494e,
-  0xfc53, 0x4153,
-  0xfc63, 0x494f,
-  0xfc64, 0x4163,
-  0xfc6d, 0x4950,
-  0xfc6e, 0x416d,
-  0xfc75, 0x4951,
-  0xfc76, 0x4174,
-  0xfca1, 0x417d,
-  0xfcba, 0x4195,
-  0xfcbc, 0x4952,
-  0xfcbe, 0x4198,
-  0xfccc, 0x4954,
-  0xfccd, 0x41a7,
-  0xfce3, 0x4955,
-  0xfce4, 0x41bd,
-  0xfcee, 0x4956,
-  0xfcef, 0x41c7,
-  0xfcf2, 0x41ca,
-  0xfd40, 0x41d7,
-  0xfd49, 0x4957,
-  0xfd4a, 0x41e0,
-  0xfd6a, 0x4958,
-  0xfd6b, 0x4201,
-  0xfda1, 0x4215,
-  0xfdb9, 0x422d,
-  0xfdbc, 0x4230,
-  0xfde3, 0x4959,
-  0xfde4, 0x4258,
-  0xfdf2, 0x495a,
-  0xfdf3, 0x4266,
-  0xfe40, 0x4272,
-  0xfe53, 0x4285,
-  0xfe6d, 0x495b,
-  0xfe6e, 0x429f,
-  0xfe70, 0x42a1,
-  0xfe78, 0x495c,
-  0xfe79, 0x42a9,
-  0xfea1, 0x42af,
-  0xfeab, 0x42b8,
-  0xfede, 0x495d,
-  0xfee0, 0x42eb,
-  0xfeed, 0x495f,
-  0xfeef, 0x42f8,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xc6e4, 0x3711,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13ETHKB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13ETHKB5VMap2, 1139
-};
-
-static Gushort cns13ETenB5HMap2[510] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d8, 0x35b3,
-  0xc6df, 0x1794,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13ETenB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557,
-    0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f,
-    0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567,
-    0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f,
-    0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577,
-    0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f,
-    0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587,
-    0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f,
-    0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
-    0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f,
-    0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7,
-    0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13ETenB5HMap2, 255
-};
-
-static Gushort cns13ETenB5VMap2[536] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d8, 0x35b3,
-  0xc6df, 0x1794,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xc6e4, 0x3711,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13ETenB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557,
-    0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f,
-    0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567,
-    0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f,
-    0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577,
-    0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f,
-    0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587,
-    0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f,
-    0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
-    0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f,
-    0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7,
-    0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13ETenB5VMap2, 268
-};
-
-static Gushort cns13ETenmsB5HMap2[510] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d8, 0x35b3,
-  0xc6df, 0x1794,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13ETenmsB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13ETenmsB5HMap2, 255
-};
-
-static Gushort cns13ETenmsB5VMap2[568] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa14b, 0x354e,
-  0xa14c, 0x006d,
-  0xa14d, 0x0070,
-  0xa156, 0x0138,
-  0xa157, 0x007a,
-  0xa158, 0x007a,
-  0xa159, 0x35af,
-  0xa15a, 0x35af,
-  0xa15b, 0x35b1,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa15f, 0x0082,
-  0xa161, 0x0086,
-  0xa163, 0x0086,
-  0xa165, 0x008a,
-  0xa167, 0x008a,
-  0xa169, 0x008e,
-  0xa16b, 0x008e,
-  0xa16d, 0x0092,
-  0xa16f, 0x0092,
-  0xa171, 0x0096,
-  0xa173, 0x0096,
-  0xa175, 0x009a,
-  0xa177, 0x009a,
-  0xa179, 0x009e,
-  0xa17b, 0x009e,
-  0xa17d, 0x0082,
-  0xa1a1, 0x0086,
-  0xa1a3, 0x008a,
-  0xa1a5, 0x00a6,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d8, 0x35b3,
-  0xc6df, 0x1794,
-  0xc6e0, 0x35ba,
-  0xc6e4, 0x3711,
-  0xc6e6, 0x35c0,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13ETenmsB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13ETenmsB5VMap2, 284
-};
-
-static Gushort cns13HKdlaB5HMap2[2046] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xfa41, 0x4149,
-  0xfa42, 0x3ea3,
-  0xfa43, 0x3e84,
-  0xfa44, 0x3e87,
-  0xfa45, 0x3e05,
-  0xfa46, 0x4096,
-  0xfa47, 0x39c4,
-  0xfa48, 0x3d6d,
-  0xfa49, 0x3e7f,
-  0xfa4a, 0x3c77,
-  0xfa4b, 0x3e86,
-  0xfa4c, 0x387c,
-  0xfa4d, 0x3ea7,
-  0xfa4e, 0x420e,
-  0xfa4f, 0x3ea4,
-  0xfa50, 0x418a,
-  0xfa51, 0x405f,
-  0xfa52, 0x4116,
-  0xfa53, 0x408b,
-  0xfa54, 0x3e66,
-  0xfa55, 0x3e65,
-  0xfa56, 0x3d8f,
-  0xfa57, 0x419e,
-  0xfa58, 0x3a66,
-  0xfa59, 0x4161,
-  0xfa5a, 0x3e8a,
-  0xfa5b, 0x3d8e,
-  0xfa5c, 0x3e8d,
-  0xfa5d, 0x3dbc,
-  0xfa5e, 0x3e95,
-  0xfa5f, 0x39a3,
-  0xfa60, 0x41f4,
-  0xfa61, 0x3e91,
-  0xfa62, 0x3bc6,
-  0xfa63, 0x3dc3,
-  0xfa64, 0x3eae,
-  0xfa65, 0x3746,
-  0xfa66, 0x3871,
-  0xfa67, 0x3a00,
-  0xfa68, 0x428c,
-  0xfa69, 0x425b,
-  0xfa6a, 0x3ead,
-  0xfa6b, 0x4123,
-  0xfa6c, 0x3ea6,
-  0xfa6d, 0x3ea0,
-  0xfa6e, 0x3b2e,
-  0xfa6f, 0x3dbd,
-  0xfa70, 0x3864,
-  0xfa71, 0x3c7d,
-  0xfa72, 0x3ea9,
-  0xfa73, 0x420d,
-  0xfa74, 0x3f58,
-  0xfa75, 0x3e98,
-  0xfa76, 0x3d70,
-  0xfa77, 0x3ea8,
-  0xfa78, 0x3e94,
-  0xfa79, 0x3e9d,
-  0xfa7a, 0x3aaa,
-  0xfa7b, 0x3ea5,
-  0xfa7c, 0x3ccc,
-  0xfa7d, 0x4098,
-  0xfa7e, 0x3e9f,
-  0xfaa1, 0x41f5,
-  0xfaa2, 0x3e8b,
-  0xfaa3, 0x3b72,
-  0xfaa4, 0x37e0,
-  0xfaa5, 0x3adf,
-  0xfaa6, 0x42e0,
-  0xfaa7, 0x3e97,
-  0xfaa8, 0x4192,
-  0xfaa9, 0x3888,
-  0xfaaa, 0x42c8,
-  0xfaab, 0x3e90,
-  0xfaac, 0x386f,
-  0xfaad, 0x3e9c,
-  0xfaae, 0x4144,
-  0xfaaf, 0x4146,
-  0xfab0, 0x3e9e,
-  0xfab1, 0x3e89,
-  0xfab2, 0x4093,
-  0xfab3, 0x3e81,
-  0xfab5, 0x3c0e,
-  0xfab6, 0x3e85,
-  0xfab7, 0x38dc,
-  0xfab8, 0x4069,
-  0xfab9, 0x37d8,
-  0xfaba, 0x3e99,
-  0xfabb, 0x3e83,
-  0xfabc, 0x3e88,
-  0xfabd, 0x3e80,
-  0xfabe, 0x3eb1,
-  0xfabf, 0x416a,
-  0xfac0, 0x376b,
-  0xfac1, 0x3e67,
-  0xfac2, 0x3e78,
-  0xfac3, 0x4262,
-  0xfac4, 0x37f5,
-  0xfac5, 0x37f4,
-  0xfac6, 0x3b45,
-  0xfac7, 0x3e59,
-  0xfac8, 0x2abc,
-  0xfac9, 0x3dbf,
-  0xfaca, 0x40bd,
-  0xfacb, 0x3e7e,
-  0xfacc, 0x382d,
-  0xfacd, 0x3eb0,
-  0xface, 0x3eab,
-  0xfacf, 0x3eb2,
-  0xfad0, 0x4221,
-  0xfad1, 0x3f6a,
-  0xfad2, 0x381b,
-  0xfad3, 0x3e9a,
-  0xfad4, 0x4223,
-  0xfad5, 0x3e8e,
-  0xfad6, 0x3bfd,
-  0xfad7, 0x405a,
-  0xfad8, 0x3eaf,
-  0xfad9, 0x3cc8,
-  0xfada, 0x3948,
-  0xfadb, 0x42bd,
-  0xfadc, 0x40cc,
-  0xfadd, 0x3e5c,
-  0xfade, 0x3eac,
-  0xfadf, 0x391a,
-  0xfae0, 0x3eaa,
-  0xfae1, 0x4399,
-  0xfae2, 0x389a,
-  0xfae3, 0x3e8c,
-  0xfae4, 0x389f,
-  0xfae5, 0x3ea1,
-  0xfae6, 0x4187,
-  0xfae7, 0x3e8f,
-  0xfae8, 0x3fc3,
-  0xfae9, 0x3ea2,
-  0xfaea, 0x3e9b,
-  0xfaeb, 0x3e7d,
-  0xfaec, 0x4051,
-  0xfaed, 0x3fbc,
-  0xfaee, 0x3fd5,
-  0xfaef, 0x3b14,
-  0xfaf0, 0x4222,
-  0xfaf1, 0x379b,
-  0xfaf2, 0x407b,
-  0xfaf3, 0x3788,
-  0xfaf4, 0x3bb4,
-  0xfaf5, 0x41d0,
-  0xfaf6, 0x4264,
-  0xfaf7, 0x385e,
-  0xfaf8, 0x376c,
-  0xfaf9, 0x3dbe,
-  0xfafa, 0x3813,
-  0xfafb, 0x3fff,
-  0xfafc, 0x3d63,
-  0xfafd, 0x3786,
-  0xfafe, 0x3b4a,
-  0xfb40, 0x373a,
-  0xfb41, 0x427a,
-  0xfb42, 0x3c7a,
-  0xfb43, 0x4205,
-  0xfb44, 0x3c26,
-  0xfb45, 0x38af,
-  0xfb46, 0x3936,
-  0xfb47, 0x37a8,
-  0xfb48, 0x3b74,
-  0xfb49, 0x3f6d,
-  0xfb4a, 0x3e96,
-  0xfb4b, 0x37bc,
-  0xfb4c, 0x3e7b,
-  0xfb4d, 0x3fea,
-  0xfb4e, 0x41ca,
-  0xfb4f, 0x39d7,
-  0xfb50, 0x40d1,
-  0xfb51, 0x3b71,
-  0xfb52, 0x3fcf,
-  0xfb53, 0x07c2,
-  0xfb54, 0x42fe,
-  0xfb55, 0x3ccd,
-  0xfb56, 0x3e70,
-  0xfb57, 0x3e72,
-  0xfb58, 0x374c,
-  0xfb59, 0x3769,
-  0xfb5a, 0x3b4f,
-  0xfb5b, 0x379f,
-  0xfb5c, 0x2e45,
-  0xfb5d, 0x380d,
-  0xfb5e, 0x3fa2,
-  0xfb5f, 0x381c,
-  0xfb60, 0x3f7c,
-  0xfb61, 0x3f59,
-  0xfb62, 0x3f9e,
-  0xfb63, 0x3d93,
-  0xfb64, 0x3815,
-  0xfb65, 0x388b,
-  0xfb66, 0x3c60,
-  0xfb67, 0x38f0,
-  0xfb68, 0x37aa,
-  0xfb69, 0x3f34,
-  0xfb6a, 0x3c12,
-  0xfb6b, 0x3900,
-  0xfb6c, 0x3faa,
-  0xfb6d, 0x390b,
-  0xfb6e, 0x3929,
-  0xfb6f, 0x3f27,
-  0xfb70, 0x3f90,
-  0xfb71, 0x3f57,
-  0xfb72, 0x3f5b,
-  0xfb73, 0x3f62,
-  0xfb74, 0x3d76,
-  0xfb75, 0x39c8,
-  0xfb76, 0x3f64,
-  0xfb78, 0x393d,
-  0xfb79, 0x3c66,
-  0xfb7a, 0x39d0,
-  0xfb7b, 0x4022,
-  0xfb7c, 0x3f2c,
-  0xfb7d, 0x3f28,
-  0xfb7e, 0x39cc,
-  0xfba1, 0x3f26,
-  0xfba2, 0x39cd,
-  0xfba3, 0x3f3f,
-  0xfba4, 0x39c5,
-  0xfba5, 0x3fce,
-  0xfba6, 0x4034,
-  0xfba7, 0x3f5e,
-  0xfba8, 0x4032,
-  0xfba9, 0x4054,
-  0xfbaa, 0x4178,
-  0xfbab, 0x3f60,
-  0xfbac, 0x3f29,
-  0xfbad, 0x405d,
-  0xfbae, 0x3f43,
-  0xfbaf, 0x3f68,
-  0xfbb0, 0x4060,
-  0xfbb1, 0x3f2a,
-  0xfbb2, 0x4063,
-  0xfbb3, 0x39e7,
-  0xfbb4, 0x38b6,
-  0xfbb5, 0x4090,
-  0xfbb6, 0x4048,
-  0xfbb7, 0x4012,
-  0xfbb8, 0x3d7c,
-  0xfbb9, 0x404b,
-  0xfbba, 0x404d,
-  0xfbbb, 0x404f,
-  0xfbbc, 0x424f,
-  0xfbbd, 0x3d79,
-  0xfbbe, 0x3f40,
-  0xfbbf, 0x3f0a,
-  0xfbc0, 0x3fd0,
-  0xfbc1, 0x3f36,
-  0xfbc2, 0x406d,
-  0xfbc3, 0x4085,
-  0xfbc4, 0x4084,
-  0xfbc5, 0x413e,
-  0xfbc6, 0x413b,
-  0xfbc7, 0x3fc6,
-  0xfbc8, 0x4086,
-  0xfbc9, 0x3952,
-  0xfbca, 0x40a1,
-  0xfbcb, 0x3f32,
-  0xfbcc, 0x4203,
-  0xfbcd, 0x3f66,
-  0xfbce, 0x3d83,
-  0xfbcf, 0x3e75,
-  0xfbd0, 0x40a2,
-  0xfbd1, 0x0570,
-  0xfbd2, 0x3f39,
-  0xfbd3, 0x0871,
-  0xfbd4, 0x3f24,
-  0xfbd5, 0x40ae,
-  0xfbd6, 0x3f44,
-  0xfbd7, 0x38f5,
-  0xfbd8, 0x3fc9,
-  0xfbd9, 0x3fcd,
-  0xfbda, 0x3fb5,
-  0xfbdb, 0x3e7c,
-  0xfbdc, 0x3fd2,
-  0xfbdd, 0x3f4d,
-  0xfbde, 0x40bc,
-  0xfbdf, 0x40b7,
-  0xfbe0, 0x3858,
-  0xfbe1, 0x43af,
-  0xfbe2, 0x3f6c,
-  0xfbe3, 0x3d85,
-  0xfbe4, 0x4396,
-  0xfbe5, 0x39a6,
-  0xfbe6, 0x3f7d,
-  0xfbe7, 0x3fbf,
-  0xfbe8, 0x40c8,
-  0xfbe9, 0x3f5f,
-  0xfbea, 0x3f2b,
-  0xfbeb, 0x3d72,
-  0xfbec, 0x40cf,
-  0xfbed, 0x3a05,
-  0xfbee, 0x3d82,
-  0xfbef, 0x40dc,
-  0xfbf0, 0x3d65,
-  0xfbf1, 0x40d4,
-  0xfbf2, 0x40da,
-  0xfbf3, 0x3f2d,
-  0xfbf4, 0x0595,
-  0xfbf5, 0x3d81,
-  0xfbf6, 0x40f1,
-  0xfbf7, 0x06f5,
-  0xfbf8, 0x40f8,
-  0xfbf9, 0x40fb,
-  0xfbfa, 0x3f41,
-  0xfbfb, 0x4118,
-  0xfbfc, 0x3d89,
-  0xfbfd, 0x3f5c,
-  0xfbfe, 0x3d67,
-  0xfc40, 0x3f0e,
-  0xfc41, 0x3f13,
-  0xfc42, 0x4122,
-  0xfc43, 0x3fca,
-  0xfc44, 0x4129,
-  0xfc45, 0x3f0c,
-  0xfc46, 0x3f0b,
-  0xfc47, 0x3f61,
-  0xfc48, 0x3d8a,
-  0xfc49, 0x3f2e,
-  0xfc4a, 0x1971,
-  0xfc4b, 0x4135,
-  0xfc4c, 0x3a2b,
-  0xfc4d, 0x3f6b,
-  0xfc4e, 0x3ba5,
-  0xfc4f, 0x4044,
-  0xfc50, 0x4255,
-  0xfc51, 0x3737,
-  0xfc52, 0x3f25,
-  0xfc53, 0x3739,
-  0xfc54, 0x3a30,
-  0xfc55, 0x4143,
-  0xfc56, 0x40c4,
-  0xfc57, 0x3d64,
-  0xfc58, 0x3fbe,
-  0xfc59, 0x3fa6,
-  0xfc5a, 0x402c,
-  0xfc5b, 0x4157,
-  0xfc5c, 0x3f9f,
-  0xfc5d, 0x2b40,
-  0xfc5e, 0x3fa7,
-  0xfc5f, 0x4005,
-  0xfc60, 0x4001,
-  0xfc61, 0x1c9b,
-  0xfc62, 0x3d84,
-  0xfc63, 0x0a95,
-  0xfc64, 0x416c,
-  0xfc65, 0x4009,
-  0xfc66, 0x3d75,
-  0xfc67, 0x3adc,
-  0xfc68, 0x3fa8,
-  0xfc69, 0x3f37,
-  0xfc6a, 0x4174,
-  0xfc6b, 0x4006,
-  0xfc6c, 0x4002,
-  0xfc6d, 0x3fba,
-  0xfc6e, 0x3fc0,
-  0xfc6f, 0x12b0,
-  0xfc70, 0x3fbd,
-  0xfc71, 0x4173,
-  0xfc72, 0x4186,
-  0xfc73, 0x3a54,
-  0xfc74, 0x3fc5,
-  0xfc75, 0x4259,
-  0xfc76, 0x3fc2,
-  0xfc77, 0x3f15,
-  0xfc78, 0x3f50,
-  0xfc79, 0x3f86,
-  0xfc7a, 0x3fc1,
-  0xfc7b, 0x418c,
-  0xfc7c, 0x3fc7,
-  0xfc7d, 0x3f16,
-  0xfc7e, 0x418e,
-  0xfca1, 0x3f4b,
-  0xfca2, 0x419d,
-  0xfca3, 0x115f,
-  0xfca4, 0x3fc4,
-  0xfca5, 0x3384,
-  0xfca6, 0x3d99,
-  0xfca7, 0x41b9,
-  0xfca8, 0x3a89,
-  0xfca9, 0x41b7,
-  0xfcaa, 0x3d8b,
-  0xfcab, 0x3d66,
-  0xfcac, 0x03e2,
-  0xfcad, 0x3d6a,
-  0xfcae, 0x3d7a,
-  0xfcaf, 0x41e3,
-  0xfcb0, 0x0619,
-  0xfcb1, 0x3996,
-  0xfcb2, 0x3fc8,
-  0xfcb3, 0x3a9e,
-  0xfcb4, 0x3f38,
-  0xfcb5, 0x3d80,
-  0xfcb6, 0x41de,
-  0xfcb8, 0x42eb,
-  0xfcb9, 0x3d86,
-  0xfcba, 0x41db,
-  0xfcbb, 0x3f3e,
-  0xfcbc, 0x4056,
-  0xfcbd, 0x41d9,
-  0xfcbe, 0x3ff6,
-  0xfcbf, 0x3f5d,
-  0xfcc0, 0x3d74,
-  0xfcc1, 0x41e8,
-  0xfcc2, 0x41c7,
-  0xfcc3, 0x3d91,
-  0xfcc4, 0x3b4b,
-  0xfcc5, 0x3d42,
-  0xfcc6, 0x3aad,
-  0xfcc7, 0x3aa5,
-  0xfcc8, 0x41f2,
-  0xfcc9, 0x3f4c,
-  0xfcca, 0x41f8,
-  0xfccb, 0x3f6e,
-  0xfccc, 0x3f79,
-  0xfccd, 0x3f8d,
-  0xfcce, 0x4003,
-  0xfccf, 0x3f91,
-  0xfcd0, 0x3ac3,
-  0xfcd1, 0x091a,
-  0xfcd2, 0x4234,
-  0xfcd3, 0x3ffb,
-  0xfcd4, 0x4240,
-  0xfcd6, 0x3ffd,
-  0xfcd7, 0x3f78,
-  0xfcd8, 0x3c75,
-  0xfcd9, 0x3c73,
-  0xfcda, 0x38a5,
-  0xfcdb, 0x43f9,
-  0xfcdc, 0x3cfe,
-  0xfcdd, 0x4257,
-  0xfcde, 0x4233,
-  0xfcdf, 0x3d69,
-  0xfce0, 0x3c7e,
-  0xfce1, 0x3d6f,
-  0xfce2, 0x4000,
-  0xfce3, 0x3dc0,
-  0xfce4, 0x4004,
-  0xfce5, 0x0e72,
-  0xfce6, 0x3938,
-  0xfce7, 0x3fa4,
-  0xfce8, 0x295a,
-  0xfce9, 0x4273,
-  0xfcea, 0x3ac9,
-  0xfceb, 0x427d,
-  0xfcec, 0x3aca,
-  0xfced, 0x3fb2,
-  0xfcee, 0x3fb6,
-  0xfcef, 0x3f97,
-  0xfcf0, 0x3f9a,
-  0xfcf1, 0x428b,
-  0xfcf2, 0x43fa,
-  0xfcf3, 0x428a,
-  0xfcf4, 0x3f51,
-  0xfcf5, 0x3f98,
-  0xfcf6, 0x41a3,
-  0xfcf7, 0x3d5c,
-  0xfcf8, 0x3f63,
-  0xfcf9, 0x4290,
-  0xfcfa, 0x1f94,
-  0xfcfb, 0x42c6,
-  0xfcfc, 0x42a2,
-  0xfcfd, 0x3ffa,
-  0xfcfe, 0x3f9d,
-  0xfd40, 0x3ffe,
-  0xfd41, 0x3f9b,
-  0xfd42, 0x3fdf,
-  0xfd43, 0x3fe6,
-  0xfd44, 0x3fde,
-  0xfd45, 0x42b7,
-  0xfd46, 0x3ff4,
-  0xfd47, 0x42b8,
-  0xfd48, 0x3feb,
-  0xfd49, 0x42bf,
-  0xfd4a, 0x3d71,
-  0xfd4b, 0x3f4f,
-  0xfd4c, 0x42c5,
-  0xfd4d, 0x42d5,
-  0xfd4e, 0x42d0,
-  0xfd4f, 0x42d8,
-  0xfd50, 0x3f55,
-  0xfd51, 0x3fe8,
-  0xfd52, 0x3ff3,
-  0xfd53, 0x42df,
-  0xfd54, 0x3fd3,
-  0xfd55, 0x3e73,
-  0xfd56, 0x3f95,
-  0xfd57, 0x42ee,
-  0xfd58, 0x42f4,
-  0xfd59, 0x3f8c,
-  0xfd5a, 0x3fcf,
-  0xfd5b, 0x42ec,
-  0xfd5c, 0x3fd4,
-  0xfd5d, 0x42f0,
-  0xfd5e, 0x07c2,
-  0xfd5f, 0x0955,
-  0xfd60, 0x42fe,
-  0xfd61, 0x4301,
-  0xfd62, 0x3ccd,
-  0xfd63, 0x4307,
-  0xfd64, 0x43fb,
-  0xfd65, 0x3fda,
-  0xfd66, 0x3f8b,
-  0xfd67, 0x3733,
-  0xfd68, 0x3f8a,
-  0xfd69, 0x3741,
-  0xfd6a, 0x3740,
-  0xfd6b, 0x3742,
-  0xfd6c, 0x3f93,
-  0xfd6d, 0x3f8f,
-  0xfd6e, 0x3e70,
-  0xfd6f, 0x42c9,
-  0xfd70, 0x3e72,
-  0xfd71, 0x3fa9,
-  0xfd72, 0x42cd,
-  0xfd73, 0x43d2,
-  0xfd74, 0x3f8e,
-  0xfd75, 0x3f77,
-  0xfd76, 0x3d6e,
-  0xfd77, 0x0d0a,
-  0xfd78, 0x3f11,
-  0xfd79, 0x3752,
-  0xfd7a, 0x3f14,
-  0xfd7b, 0x3f18,
-  0xfd7c, 0x3f53,
-  0xfd7d, 0x3f1f,
-  0xfd7e, 0x3f1c,
-  0xfda1, 0x3fb8,
-  0xfda2, 0x339d,
-  0xfda3, 0x3b3f,
-  0xfda4, 0x3f52,
-  0xfda5, 0x3f1a,
-  0xfda6, 0x3f1d,
-  0xfda7, 0x375c,
-  0xfda8, 0x3885,
-  0xfda9, 0x3761,
-  0xfdaa, 0x3fd7,
-  0xfdab, 0x3fd6,
-  0xfdac, 0x3fd9,
-  0xfdad, 0x3fd8,
-  0xfdae, 0x3fdd,
-  0xfdaf, 0x3e93,
-  0xfdb0, 0x3769,
-  0xfdb1, 0x376e,
-  0xfdb2, 0x3b4c,
-  0xfdb3, 0x3774,
-  0xfdb4, 0x377f,
-  0xfdb5, 0x377b,
-  0xfdb6, 0x3782,
-  0xfdb7, 0x3b4f,
-  0xfdb8, 0x3792,
-  0xfdb9, 0x3fe3,
-  0xfdba, 0x3fdc,
-  0xfdbb, 0x3fdb,
-  0xfdbc, 0x3fe5,
-  0xfdbd, 0x3b75,
-  0xfdbe, 0x37a2,
-  0xfdbf, 0x3fe2,
-  0xfdc0, 0x3fe7,
-  0xfdc1, 0x3e6d,
-  0xfdc2, 0x0d2a,
-  0xfdc3, 0x3e79,
-  0xfdc4, 0x3e76,
-  0xfdc5, 0x379f,
-  0xfdc6, 0x3fee,
-  0xfdc7, 0x42d4,
-  0xfdc8, 0x3d94,
-  0xfdc9, 0x3d61,
-  0xfdca, 0x3fe1,
-  0xfdcb, 0x375e,
-  0xfdcc, 0x3b7a,
-  0xfdcd, 0x380b,
-  0xfdce, 0x3fec,
-  0xfdcf, 0x3fef,
-  0xfdd0, 0x2e45,
-  0xfdd1, 0x3ffc,
-  0xfdd2, 0x3fed,
-  0xfdd3, 0x380d,
-  0xfdd4, 0x3fe4,
-  0xfdd5, 0x3f92,
-  0xfdd6, 0x3fae,
-  0xfdd7, 0x3811,
-  0xfdd8, 0x3f7a,
-  0xfdd9, 0x3b8b,
-  0xfdda, 0x3f5a,
-  0xfddb, 0x3816,
-  0xfddc, 0x3fa2,
-  0xfddd, 0x3b8e,
-  0xfdde, 0x381c,
-  0xfddf, 0x2054,
-  0xfde0, 0x381f,
-  0xfde1, 0x3fa0,
-  0xfde2, 0x43fc,
-  0xfde3, 0x3e16,
-  0xfde4, 0x3b94,
-  0xfde5, 0x3f7c,
-  0xfde6, 0x4007,
-  0xfde7, 0x3f7b,
-  0xfde8, 0x3d73,
-  0xfde9, 0x3e77,
-  0xfdea, 0x3d92,
-  0xfdeb, 0x3fa1,
-  0xfdec, 0x37c1,
-  0xfded, 0x37d3,
-  0xfdee, 0x3e7a,
-  0xfdef, 0x3f59,
-  0xfdf0, 0x3c55,
-  0xfdf1, 0x3ff8,
-  0xfdf2, 0x3ff5,
-  0xfdf3, 0x3c4c,
-  0xfdf4, 0x3d8c,
-  0xfdf5, 0x3fa3,
-  0xfdf6, 0x37c0,
-  0xfdf7, 0x3f54,
-  0xfdf8, 0x3800,
-  0xfdf9, 0x3b7f,
-  0xfdfa, 0x3f9e,
-  0xfdfb, 0x3822,
-  0xfdfc, 0x3fe9,
-  0xfdfd, 0x3823,
-  0xfdfe, 0x3fe0,
-  0xfe40, 0x3d93,
-  0xfe41, 0x3ff9,
-  0xfe42, 0x3827,
-  0xfe43, 0x3fa5,
-  0xfe44, 0x3ff0,
-  0xfe45, 0x3836,
-  0xfe46, 0x3f99,
-  0xfe47, 0x3ff2,
-  0xfe48, 0x3d8d,
-  0xfe49, 0x43e6,
-  0xfe4a, 0x3522,
-  0xfe4b, 0x3ff1,
-  0xfe4c, 0x3f9c,
-  0xfe4d, 0x3fb1,
-  0xfe4e, 0x3f96,
-  0xfe4f, 0x3e6f,
-  0xfe50, 0x3f69,
-  0xfe51, 0x3ff7,
-  0xfe52, 0x3f82,
-  0xfe53, 0x3f88,
-  0xfe54, 0x3f85,
-  0xfe55, 0x3f83,
-  0xfe56, 0x3f7f,
-  0xfe57, 0x3f89,
-  0xfe58, 0x3bb5,
-  0xfe59, 0x3862,
-  0xfe5a, 0x3f87,
-  0xfe5b, 0x3f31,
-  0xfe5c, 0x3815,
-  0xfe5d, 0x387e,
-  0xfe5e, 0x3f49,
-  0xfe5f, 0x3f48,
-  0xfe60, 0x3f47,
-  0xfe61, 0x3f45,
-  0xfe62, 0x43eb,
-  0xfe63, 0x3882,
-  0xfe64, 0x3f6f,
-  0xfe65, 0x3f4e,
-  0xfe66, 0x3bc8,
-  0xfe67, 0x43fd,
-  0xfe68, 0x3d6b,
-  0xfe6a, 0x43fe,
-  0xfe6b, 0x3fcb,
-  0xfe6c, 0x3dd2,
-  0xfe6d, 0x3879,
-  0xfe6e, 0x3f10,
-  0xfe6f, 0x382e,
-  0xfe70, 0x388b,
-  0xfe71, 0x3c60,
-  0xfe72, 0x2a9f,
-  0xfe73, 0x3c61,
-  0xfe74, 0x3893,
-  0xfe75, 0x3e74,
-  0xfe76, 0x3fac,
-  0xfe77, 0x3f81,
-  0xfe78, 0x3bcd,
-  0xfe79, 0x3bd4,
-  0xfe7a, 0x3bd3,
-  0xfe7b, 0x3fcc,
-  0xfe7c, 0x3fd1,
-  0xfe7d, 0x3f3d,
-  0xfe7e, 0x3f4a,
-  0xfea1, 0x2352,
-  0xfea2, 0x38ad,
-  0xfea3, 0x3f46,
-  0xfea4, 0x38b5,
-  0xfea5, 0x3f0d,
-  0xfea6, 0x3fb3,
-  0xfea7, 0x38c0,
-  0xfea8, 0x3e2f,
-  0xfea9, 0x38cf,
-  0xfeaa, 0x38d5,
-  0xfeab, 0x3f33,
-  0xfeac, 0x3d95,
-  0xfead, 0x3f35,
-  0xfeae, 0x38d7,
-  0xfeaf, 0x3f2f,
-  0xfeb0, 0x38e0,
-  0xfeb1, 0x3c02,
-  0xfeb2, 0x3f72,
-  0xfeb3, 0x3f70,
-  0xfeb4, 0x3d96,
-  0xfeb5, 0x38e6,
-  0xfeb7, 0x4035,
-  0xfeb8, 0x3f73,
-  0xfeb9, 0x38f0,
-  0xfeba, 0x3c0b,
-  0xfebb, 0x38f7,
-  0xfebc, 0x37aa,
-  0xfebd, 0x43ff,
-  0xfebe, 0x38fa,
-  0xfebf, 0x3c11,
-  0xfec0, 0x3f34,
-  0xfec1, 0x3fb9,
-  0xfec2, 0x3c12,
-  0xfec3, 0x400a,
-  0xfec4, 0x3d77,
-  0xfec5, 0x3f42,
-  0xfec6, 0x3900,
-  0xfec7, 0x3902,
-  0xfec8, 0x3f74,
-  0xfec9, 0x3d97,
-  0xfeca, 0x3faa,
-  0xfecb, 0x3f19,
-  0xfecc, 0x3f1b,
-  0xfecd, 0x390e,
-  0xfece, 0x3909,
-  0xfecf, 0x390b,
-  0xfed0, 0x3f12,
-  0xfed1, 0x3f17,
-  0xfed2, 0x3fb7,
-  0xfed3, 0x3f20,
-  0xfed4, 0x3fbb,
-  0xfed5, 0x3f3c,
-  0xfed6, 0x3fad,
-  0xfed7, 0x3919,
-  0xfed8, 0x3f56,
-  0xfed9, 0x3f71,
-  0xfeda, 0x3fb4,
-  0xfedb, 0x391c,
-  0xfedc, 0x3f1e,
-  0xfedd, 0x3f3a,
-  0xfede, 0x391b,
-  0xfedf, 0x3d87,
-  0xfee0, 0x3c3a,
-  0xfee1, 0x3f22,
-  0xfee2, 0x3e71,
-  0xfee3, 0x3c39,
-  0xfee4, 0x3d7e,
-  0xfee5, 0x4124,
-  0xfee6, 0x3f3b,
-  0xfee7, 0x3e6e,
-  0xfee8, 0x3fab,
-  0xfee9, 0x3925,
-  0xfeea, 0x3f30,
-  0xfeeb, 0x3929,
-  0xfeec, 0x3f84,
-  0xfeed, 0x3f0f,
-  0xfeee, 0x3f76,
-  0xfeef, 0x3f94,
-  0xfef0, 0x3932,
-  0xfef1, 0x3f27,
-  0xfef2, 0x3933,
-  0xfef3, 0x3f75,
-  0xfef4, 0x3937,
-  0xfef5, 0x3d78,
-  0xfef6, 0x3f21,
-  0xfef7, 0x3f90,
-  0xfef8, 0x3940,
-  0xfef9, 0x3d7f,
-  0xfefa, 0x394a,
-  0xfefb, 0x3f80,
-  0xfefc, 0x3f23,
-  0xfefd, 0x3950,
-  0xfefe, 0x3f7e,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKdlaB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKdlaB5HMap2, 1023
-};
-
-static Gushort cns13HKdlaB5VMap2[2070] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xfa41, 0x4149,
-  0xfa42, 0x3ea3,
-  0xfa43, 0x3e84,
-  0xfa44, 0x3e87,
-  0xfa45, 0x3e05,
-  0xfa46, 0x4096,
-  0xfa47, 0x39c4,
-  0xfa48, 0x3d6d,
-  0xfa49, 0x3e7f,
-  0xfa4a, 0x3c77,
-  0xfa4b, 0x3e86,
-  0xfa4c, 0x387c,
-  0xfa4d, 0x3ea7,
-  0xfa4e, 0x420e,
-  0xfa4f, 0x3ea4,
-  0xfa50, 0x418a,
-  0xfa51, 0x405f,
-  0xfa52, 0x4116,
-  0xfa53, 0x408b,
-  0xfa54, 0x3e66,
-  0xfa55, 0x3e65,
-  0xfa56, 0x3d8f,
-  0xfa57, 0x419e,
-  0xfa58, 0x3a66,
-  0xfa59, 0x4161,
-  0xfa5a, 0x3e8a,
-  0xfa5b, 0x3d8e,
-  0xfa5c, 0x3e8d,
-  0xfa5d, 0x3dbc,
-  0xfa5e, 0x3e95,
-  0xfa5f, 0x39a3,
-  0xfa60, 0x41f4,
-  0xfa61, 0x3e91,
-  0xfa62, 0x3bc6,
-  0xfa63, 0x3dc3,
-  0xfa64, 0x3eae,
-  0xfa65, 0x3746,
-  0xfa66, 0x3871,
-  0xfa67, 0x3a00,
-  0xfa68, 0x428c,
-  0xfa69, 0x425b,
-  0xfa6a, 0x3ead,
-  0xfa6b, 0x4123,
-  0xfa6c, 0x3ea6,
-  0xfa6d, 0x3ea0,
-  0xfa6e, 0x3b2e,
-  0xfa6f, 0x3dbd,
-  0xfa70, 0x3864,
-  0xfa71, 0x3c7d,
-  0xfa72, 0x3ea9,
-  0xfa73, 0x420d,
-  0xfa74, 0x3f58,
-  0xfa75, 0x3e98,
-  0xfa76, 0x3d70,
-  0xfa77, 0x3ea8,
-  0xfa78, 0x3e94,
-  0xfa79, 0x3e9d,
-  0xfa7a, 0x3aaa,
-  0xfa7b, 0x3ea5,
-  0xfa7c, 0x3ccc,
-  0xfa7d, 0x4098,
-  0xfa7e, 0x3e9f,
-  0xfaa1, 0x41f5,
-  0xfaa2, 0x3e8b,
-  0xfaa3, 0x3b72,
-  0xfaa4, 0x37e0,
-  0xfaa5, 0x3adf,
-  0xfaa6, 0x42e0,
-  0xfaa7, 0x3e97,
-  0xfaa8, 0x4192,
-  0xfaa9, 0x3888,
-  0xfaaa, 0x42c8,
-  0xfaab, 0x3e90,
-  0xfaac, 0x386f,
-  0xfaad, 0x3e9c,
-  0xfaae, 0x4144,
-  0xfaaf, 0x4146,
-  0xfab0, 0x3e9e,
-  0xfab1, 0x3e89,
-  0xfab2, 0x4093,
-  0xfab3, 0x3e81,
-  0xfab5, 0x3c0e,
-  0xfab6, 0x3e85,
-  0xfab7, 0x38dc,
-  0xfab8, 0x4069,
-  0xfab9, 0x37d8,
-  0xfaba, 0x3e99,
-  0xfabb, 0x3e83,
-  0xfabc, 0x3e88,
-  0xfabd, 0x3e80,
-  0xfabe, 0x3eb1,
-  0xfabf, 0x416a,
-  0xfac0, 0x376b,
-  0xfac1, 0x3e67,
-  0xfac2, 0x3e78,
-  0xfac3, 0x4262,
-  0xfac4, 0x37f5,
-  0xfac5, 0x37f4,
-  0xfac6, 0x3b45,
-  0xfac7, 0x3e59,
-  0xfac8, 0x2abc,
-  0xfac9, 0x3dbf,
-  0xfaca, 0x40bd,
-  0xfacb, 0x3e7e,
-  0xfacc, 0x382d,
-  0xfacd, 0x3eb0,
-  0xface, 0x3eab,
-  0xfacf, 0x3eb2,
-  0xfad0, 0x4221,
-  0xfad1, 0x3f6a,
-  0xfad2, 0x381b,
-  0xfad3, 0x3e9a,
-  0xfad4, 0x4223,
-  0xfad5, 0x3e8e,
-  0xfad6, 0x3bfd,
-  0xfad7, 0x405a,
-  0xfad8, 0x3eaf,
-  0xfad9, 0x3cc8,
-  0xfada, 0x3948,
-  0xfadb, 0x42bd,
-  0xfadc, 0x40cc,
-  0xfadd, 0x3e5c,
-  0xfade, 0x3eac,
-  0xfadf, 0x391a,
-  0xfae0, 0x3eaa,
-  0xfae1, 0x4399,
-  0xfae2, 0x389a,
-  0xfae3, 0x3e8c,
-  0xfae4, 0x389f,
-  0xfae5, 0x3ea1,
-  0xfae6, 0x4187,
-  0xfae7, 0x3e8f,
-  0xfae8, 0x3fc3,
-  0xfae9, 0x3ea2,
-  0xfaea, 0x3e9b,
-  0xfaeb, 0x3e7d,
-  0xfaec, 0x4051,
-  0xfaed, 0x3fbc,
-  0xfaee, 0x3fd5,
-  0xfaef, 0x3b14,
-  0xfaf0, 0x4222,
-  0xfaf1, 0x379b,
-  0xfaf2, 0x407b,
-  0xfaf3, 0x3788,
-  0xfaf4, 0x3bb4,
-  0xfaf5, 0x41d0,
-  0xfaf6, 0x4264,
-  0xfaf7, 0x385e,
-  0xfaf8, 0x376c,
-  0xfaf9, 0x3dbe,
-  0xfafa, 0x3813,
-  0xfafb, 0x3fff,
-  0xfafc, 0x3d63,
-  0xfafd, 0x3786,
-  0xfafe, 0x3b4a,
-  0xfb40, 0x373a,
-  0xfb41, 0x427a,
-  0xfb42, 0x3c7a,
-  0xfb43, 0x4205,
-  0xfb44, 0x3c26,
-  0xfb45, 0x38af,
-  0xfb46, 0x3936,
-  0xfb47, 0x37a8,
-  0xfb48, 0x3b74,
-  0xfb49, 0x3f6d,
-  0xfb4a, 0x3e96,
-  0xfb4b, 0x37bc,
-  0xfb4c, 0x3e7b,
-  0xfb4d, 0x3fea,
-  0xfb4e, 0x41ca,
-  0xfb4f, 0x39d7,
-  0xfb50, 0x40d1,
-  0xfb51, 0x3b71,
-  0xfb52, 0x3fcf,
-  0xfb53, 0x07c2,
-  0xfb54, 0x42fe,
-  0xfb55, 0x3ccd,
-  0xfb56, 0x3e70,
-  0xfb57, 0x3e72,
-  0xfb58, 0x374c,
-  0xfb59, 0x3769,
-  0xfb5a, 0x3b4f,
-  0xfb5b, 0x379f,
-  0xfb5c, 0x2e45,
-  0xfb5d, 0x380d,
-  0xfb5e, 0x3fa2,
-  0xfb5f, 0x381c,
-  0xfb60, 0x3f7c,
-  0xfb61, 0x3f59,
-  0xfb62, 0x3f9e,
-  0xfb63, 0x3d93,
-  0xfb64, 0x3815,
-  0xfb65, 0x388b,
-  0xfb66, 0x3c60,
-  0xfb67, 0x38f0,
-  0xfb68, 0x37aa,
-  0xfb69, 0x3f34,
-  0xfb6a, 0x3c12,
-  0xfb6b, 0x3900,
-  0xfb6c, 0x3faa,
-  0xfb6d, 0x390b,
-  0xfb6e, 0x3929,
-  0xfb6f, 0x3f27,
-  0xfb70, 0x3f90,
-  0xfb71, 0x3f57,
-  0xfb72, 0x3f5b,
-  0xfb73, 0x3f62,
-  0xfb74, 0x3d76,
-  0xfb75, 0x39c8,
-  0xfb76, 0x3f64,
-  0xfb78, 0x393d,
-  0xfb79, 0x3c66,
-  0xfb7a, 0x39d0,
-  0xfb7b, 0x4022,
-  0xfb7c, 0x3f2c,
-  0xfb7d, 0x3f28,
-  0xfb7e, 0x39cc,
-  0xfba1, 0x3f26,
-  0xfba2, 0x39cd,
-  0xfba3, 0x3f3f,
-  0xfba4, 0x39c5,
-  0xfba5, 0x3fce,
-  0xfba6, 0x4034,
-  0xfba7, 0x3f5e,
-  0xfba8, 0x4032,
-  0xfba9, 0x4054,
-  0xfbaa, 0x4178,
-  0xfbab, 0x3f60,
-  0xfbac, 0x3f29,
-  0xfbad, 0x405d,
-  0xfbae, 0x3f43,
-  0xfbaf, 0x3f68,
-  0xfbb0, 0x4060,
-  0xfbb1, 0x3f2a,
-  0xfbb2, 0x4063,
-  0xfbb3, 0x39e7,
-  0xfbb4, 0x38b6,
-  0xfbb5, 0x4090,
-  0xfbb6, 0x4048,
-  0xfbb7, 0x4012,
-  0xfbb8, 0x3d7c,
-  0xfbb9, 0x404b,
-  0xfbba, 0x404d,
-  0xfbbb, 0x404f,
-  0xfbbc, 0x424f,
-  0xfbbd, 0x3d79,
-  0xfbbe, 0x3f40,
-  0xfbbf, 0x3f0a,
-  0xfbc0, 0x3fd0,
-  0xfbc1, 0x3f36,
-  0xfbc2, 0x406d,
-  0xfbc3, 0x4085,
-  0xfbc4, 0x4084,
-  0xfbc5, 0x413e,
-  0xfbc6, 0x413b,
-  0xfbc7, 0x3fc6,
-  0xfbc8, 0x4086,
-  0xfbc9, 0x3952,
-  0xfbca, 0x40a1,
-  0xfbcb, 0x3f32,
-  0xfbcc, 0x4203,
-  0xfbcd, 0x3f66,
-  0xfbce, 0x3d83,
-  0xfbcf, 0x3e75,
-  0xfbd0, 0x40a2,
-  0xfbd1, 0x0570,
-  0xfbd2, 0x3f39,
-  0xfbd3, 0x0871,
-  0xfbd4, 0x3f24,
-  0xfbd5, 0x40ae,
-  0xfbd6, 0x3f44,
-  0xfbd7, 0x38f5,
-  0xfbd8, 0x3fc9,
-  0xfbd9, 0x3fcd,
-  0xfbda, 0x3fb5,
-  0xfbdb, 0x3e7c,
-  0xfbdc, 0x3fd2,
-  0xfbdd, 0x3f4d,
-  0xfbde, 0x40bc,
-  0xfbdf, 0x40b7,
-  0xfbe0, 0x3858,
-  0xfbe1, 0x43af,
-  0xfbe2, 0x3f6c,
-  0xfbe3, 0x3d85,
-  0xfbe4, 0x4396,
-  0xfbe5, 0x39a6,
-  0xfbe6, 0x3f7d,
-  0xfbe7, 0x3fbf,
-  0xfbe8, 0x40c8,
-  0xfbe9, 0x3f5f,
-  0xfbea, 0x3f2b,
-  0xfbeb, 0x3d72,
-  0xfbec, 0x40cf,
-  0xfbed, 0x3a05,
-  0xfbee, 0x3d82,
-  0xfbef, 0x40dc,
-  0xfbf0, 0x3d65,
-  0xfbf1, 0x40d4,
-  0xfbf2, 0x40da,
-  0xfbf3, 0x3f2d,
-  0xfbf4, 0x0595,
-  0xfbf5, 0x3d81,
-  0xfbf6, 0x40f1,
-  0xfbf7, 0x06f5,
-  0xfbf8, 0x40f8,
-  0xfbf9, 0x40fb,
-  0xfbfa, 0x3f41,
-  0xfbfb, 0x4118,
-  0xfbfc, 0x3d89,
-  0xfbfd, 0x3f5c,
-  0xfbfe, 0x3d67,
-  0xfc40, 0x3f0e,
-  0xfc41, 0x3f13,
-  0xfc42, 0x4122,
-  0xfc43, 0x3fca,
-  0xfc44, 0x4129,
-  0xfc45, 0x3f0c,
-  0xfc46, 0x3f0b,
-  0xfc47, 0x3f61,
-  0xfc48, 0x3d8a,
-  0xfc49, 0x3f2e,
-  0xfc4a, 0x1971,
-  0xfc4b, 0x4135,
-  0xfc4c, 0x3a2b,
-  0xfc4d, 0x3f6b,
-  0xfc4e, 0x3ba5,
-  0xfc4f, 0x4044,
-  0xfc50, 0x4255,
-  0xfc51, 0x3737,
-  0xfc52, 0x3f25,
-  0xfc53, 0x3739,
-  0xfc54, 0x3a30,
-  0xfc55, 0x4143,
-  0xfc56, 0x40c4,
-  0xfc57, 0x3d64,
-  0xfc58, 0x3fbe,
-  0xfc59, 0x3fa6,
-  0xfc5a, 0x402c,
-  0xfc5b, 0x4157,
-  0xfc5c, 0x3f9f,
-  0xfc5d, 0x2b40,
-  0xfc5e, 0x3fa7,
-  0xfc5f, 0x4005,
-  0xfc60, 0x4001,
-  0xfc61, 0x1c9b,
-  0xfc62, 0x3d84,
-  0xfc63, 0x0a95,
-  0xfc64, 0x416c,
-  0xfc65, 0x4009,
-  0xfc66, 0x3d75,
-  0xfc67, 0x3adc,
-  0xfc68, 0x3fa8,
-  0xfc69, 0x3f37,
-  0xfc6a, 0x4174,
-  0xfc6b, 0x4006,
-  0xfc6c, 0x4002,
-  0xfc6d, 0x3fba,
-  0xfc6e, 0x3fc0,
-  0xfc6f, 0x12b0,
-  0xfc70, 0x3fbd,
-  0xfc71, 0x4173,
-  0xfc72, 0x4186,
-  0xfc73, 0x3a54,
-  0xfc74, 0x3fc5,
-  0xfc75, 0x4259,
-  0xfc76, 0x3fc2,
-  0xfc77, 0x3f15,
-  0xfc78, 0x3f50,
-  0xfc79, 0x3f86,
-  0xfc7a, 0x3fc1,
-  0xfc7b, 0x418c,
-  0xfc7c, 0x3fc7,
-  0xfc7d, 0x3f16,
-  0xfc7e, 0x418e,
-  0xfca1, 0x3f4b,
-  0xfca2, 0x419d,
-  0xfca3, 0x115f,
-  0xfca4, 0x3fc4,
-  0xfca5, 0x3384,
-  0xfca6, 0x3d99,
-  0xfca7, 0x41b9,
-  0xfca8, 0x3a89,
-  0xfca9, 0x41b7,
-  0xfcaa, 0x3d8b,
-  0xfcab, 0x3d66,
-  0xfcac, 0x03e2,
-  0xfcad, 0x3d6a,
-  0xfcae, 0x3d7a,
-  0xfcaf, 0x41e3,
-  0xfcb0, 0x0619,
-  0xfcb1, 0x3996,
-  0xfcb2, 0x3fc8,
-  0xfcb3, 0x3a9e,
-  0xfcb4, 0x3f38,
-  0xfcb5, 0x3d80,
-  0xfcb6, 0x41de,
-  0xfcb8, 0x42eb,
-  0xfcb9, 0x3d86,
-  0xfcba, 0x41db,
-  0xfcbb, 0x3f3e,
-  0xfcbc, 0x4056,
-  0xfcbd, 0x41d9,
-  0xfcbe, 0x3ff6,
-  0xfcbf, 0x3f5d,
-  0xfcc0, 0x3d74,
-  0xfcc1, 0x41e8,
-  0xfcc2, 0x41c7,
-  0xfcc3, 0x3d91,
-  0xfcc4, 0x3b4b,
-  0xfcc5, 0x3d42,
-  0xfcc6, 0x3aad,
-  0xfcc7, 0x3aa5,
-  0xfcc8, 0x41f2,
-  0xfcc9, 0x3f4c,
-  0xfcca, 0x41f8,
-  0xfccb, 0x3f6e,
-  0xfccc, 0x3f79,
-  0xfccd, 0x3f8d,
-  0xfcce, 0x4003,
-  0xfccf, 0x3f91,
-  0xfcd0, 0x3ac3,
-  0xfcd1, 0x091a,
-  0xfcd2, 0x4234,
-  0xfcd3, 0x3ffb,
-  0xfcd4, 0x4240,
-  0xfcd6, 0x3ffd,
-  0xfcd7, 0x3f78,
-  0xfcd8, 0x3c75,
-  0xfcd9, 0x3c73,
-  0xfcda, 0x38a5,
-  0xfcdb, 0x43f9,
-  0xfcdc, 0x3cfe,
-  0xfcdd, 0x4257,
-  0xfcde, 0x4233,
-  0xfcdf, 0x3d69,
-  0xfce0, 0x3c7e,
-  0xfce1, 0x3d6f,
-  0xfce2, 0x4000,
-  0xfce3, 0x3dc0,
-  0xfce4, 0x4004,
-  0xfce5, 0x0e72,
-  0xfce6, 0x3938,
-  0xfce7, 0x3fa4,
-  0xfce8, 0x295a,
-  0xfce9, 0x4273,
-  0xfcea, 0x3ac9,
-  0xfceb, 0x427d,
-  0xfcec, 0x3aca,
-  0xfced, 0x3fb2,
-  0xfcee, 0x3fb6,
-  0xfcef, 0x3f97,
-  0xfcf0, 0x3f9a,
-  0xfcf1, 0x428b,
-  0xfcf2, 0x43fa,
-  0xfcf3, 0x428a,
-  0xfcf4, 0x3f51,
-  0xfcf5, 0x3f98,
-  0xfcf6, 0x41a3,
-  0xfcf7, 0x3d5c,
-  0xfcf8, 0x3f63,
-  0xfcf9, 0x4290,
-  0xfcfa, 0x1f94,
-  0xfcfb, 0x42c6,
-  0xfcfc, 0x42a2,
-  0xfcfd, 0x3ffa,
-  0xfcfe, 0x3f9d,
-  0xfd40, 0x3ffe,
-  0xfd41, 0x3f9b,
-  0xfd42, 0x3fdf,
-  0xfd43, 0x3fe6,
-  0xfd44, 0x3fde,
-  0xfd45, 0x42b7,
-  0xfd46, 0x3ff4,
-  0xfd47, 0x42b8,
-  0xfd48, 0x3feb,
-  0xfd49, 0x42bf,
-  0xfd4a, 0x3d71,
-  0xfd4b, 0x3f4f,
-  0xfd4c, 0x42c5,
-  0xfd4d, 0x42d5,
-  0xfd4e, 0x42d0,
-  0xfd4f, 0x42d8,
-  0xfd50, 0x3f55,
-  0xfd51, 0x3fe8,
-  0xfd52, 0x3ff3,
-  0xfd53, 0x42df,
-  0xfd54, 0x3fd3,
-  0xfd55, 0x3e73,
-  0xfd56, 0x3f95,
-  0xfd57, 0x42ee,
-  0xfd58, 0x42f4,
-  0xfd59, 0x3f8c,
-  0xfd5a, 0x3fcf,
-  0xfd5b, 0x42ec,
-  0xfd5c, 0x3fd4,
-  0xfd5d, 0x42f0,
-  0xfd5e, 0x07c2,
-  0xfd5f, 0x0955,
-  0xfd60, 0x42fe,
-  0xfd61, 0x4301,
-  0xfd62, 0x3ccd,
-  0xfd63, 0x4307,
-  0xfd64, 0x43fb,
-  0xfd65, 0x3fda,
-  0xfd66, 0x3f8b,
-  0xfd67, 0x3733,
-  0xfd68, 0x3f8a,
-  0xfd69, 0x3741,
-  0xfd6a, 0x3740,
-  0xfd6b, 0x3742,
-  0xfd6c, 0x3f93,
-  0xfd6d, 0x3f8f,
-  0xfd6e, 0x3e70,
-  0xfd6f, 0x42c9,
-  0xfd70, 0x3e72,
-  0xfd71, 0x3fa9,
-  0xfd72, 0x42cd,
-  0xfd73, 0x43d2,
-  0xfd74, 0x3f8e,
-  0xfd75, 0x3f77,
-  0xfd76, 0x3d6e,
-  0xfd77, 0x0d0a,
-  0xfd78, 0x3f11,
-  0xfd79, 0x3752,
-  0xfd7a, 0x3f14,
-  0xfd7b, 0x3f18,
-  0xfd7c, 0x3f53,
-  0xfd7d, 0x3f1f,
-  0xfd7e, 0x3f1c,
-  0xfda1, 0x3fb8,
-  0xfda2, 0x339d,
-  0xfda3, 0x3b3f,
-  0xfda4, 0x3f52,
-  0xfda5, 0x3f1a,
-  0xfda6, 0x3f1d,
-  0xfda7, 0x375c,
-  0xfda8, 0x3885,
-  0xfda9, 0x3761,
-  0xfdaa, 0x3fd7,
-  0xfdab, 0x3fd6,
-  0xfdac, 0x3fd9,
-  0xfdad, 0x3fd8,
-  0xfdae, 0x3fdd,
-  0xfdaf, 0x3e93,
-  0xfdb0, 0x3769,
-  0xfdb1, 0x376e,
-  0xfdb2, 0x3b4c,
-  0xfdb3, 0x3774,
-  0xfdb4, 0x377f,
-  0xfdb5, 0x377b,
-  0xfdb6, 0x3782,
-  0xfdb7, 0x3b4f,
-  0xfdb8, 0x3792,
-  0xfdb9, 0x3fe3,
-  0xfdba, 0x3fdc,
-  0xfdbb, 0x3fdb,
-  0xfdbc, 0x3fe5,
-  0xfdbd, 0x3b75,
-  0xfdbe, 0x37a2,
-  0xfdbf, 0x3fe2,
-  0xfdc0, 0x3fe7,
-  0xfdc1, 0x3e6d,
-  0xfdc2, 0x0d2a,
-  0xfdc3, 0x3e79,
-  0xfdc4, 0x3e76,
-  0xfdc5, 0x379f,
-  0xfdc6, 0x3fee,
-  0xfdc7, 0x42d4,
-  0xfdc8, 0x3d94,
-  0xfdc9, 0x3d61,
-  0xfdca, 0x3fe1,
-  0xfdcb, 0x375e,
-  0xfdcc, 0x3b7a,
-  0xfdcd, 0x380b,
-  0xfdce, 0x3fec,
-  0xfdcf, 0x3fef,
-  0xfdd0, 0x2e45,
-  0xfdd1, 0x3ffc,
-  0xfdd2, 0x3fed,
-  0xfdd3, 0x380d,
-  0xfdd4, 0x3fe4,
-  0xfdd5, 0x3f92,
-  0xfdd6, 0x3fae,
-  0xfdd7, 0x3811,
-  0xfdd8, 0x3f7a,
-  0xfdd9, 0x3b8b,
-  0xfdda, 0x3f5a,
-  0xfddb, 0x3816,
-  0xfddc, 0x3fa2,
-  0xfddd, 0x3b8e,
-  0xfdde, 0x381c,
-  0xfddf, 0x2054,
-  0xfde0, 0x381f,
-  0xfde1, 0x3fa0,
-  0xfde2, 0x43fc,
-  0xfde3, 0x3e16,
-  0xfde4, 0x3b94,
-  0xfde5, 0x3f7c,
-  0xfde6, 0x4007,
-  0xfde7, 0x3f7b,
-  0xfde8, 0x3d73,
-  0xfde9, 0x3e77,
-  0xfdea, 0x3d92,
-  0xfdeb, 0x3fa1,
-  0xfdec, 0x37c1,
-  0xfded, 0x37d3,
-  0xfdee, 0x3e7a,
-  0xfdef, 0x3f59,
-  0xfdf0, 0x3c55,
-  0xfdf1, 0x3ff8,
-  0xfdf2, 0x3ff5,
-  0xfdf3, 0x3c4c,
-  0xfdf4, 0x3d8c,
-  0xfdf5, 0x3fa3,
-  0xfdf6, 0x37c0,
-  0xfdf7, 0x3f54,
-  0xfdf8, 0x3800,
-  0xfdf9, 0x3b7f,
-  0xfdfa, 0x3f9e,
-  0xfdfb, 0x3822,
-  0xfdfc, 0x3fe9,
-  0xfdfd, 0x3823,
-  0xfdfe, 0x3fe0,
-  0xfe40, 0x3d93,
-  0xfe41, 0x3ff9,
-  0xfe42, 0x3827,
-  0xfe43, 0x3fa5,
-  0xfe44, 0x3ff0,
-  0xfe45, 0x3836,
-  0xfe46, 0x3f99,
-  0xfe47, 0x3ff2,
-  0xfe48, 0x3d8d,
-  0xfe49, 0x43e6,
-  0xfe4a, 0x3522,
-  0xfe4b, 0x3ff1,
-  0xfe4c, 0x3f9c,
-  0xfe4d, 0x3fb1,
-  0xfe4e, 0x3f96,
-  0xfe4f, 0x3e6f,
-  0xfe50, 0x3f69,
-  0xfe51, 0x3ff7,
-  0xfe52, 0x3f82,
-  0xfe53, 0x3f88,
-  0xfe54, 0x3f85,
-  0xfe55, 0x3f83,
-  0xfe56, 0x3f7f,
-  0xfe57, 0x3f89,
-  0xfe58, 0x3bb5,
-  0xfe59, 0x3862,
-  0xfe5a, 0x3f87,
-  0xfe5b, 0x3f31,
-  0xfe5c, 0x3815,
-  0xfe5d, 0x387e,
-  0xfe5e, 0x3f49,
-  0xfe5f, 0x3f48,
-  0xfe60, 0x3f47,
-  0xfe61, 0x3f45,
-  0xfe62, 0x43eb,
-  0xfe63, 0x3882,
-  0xfe64, 0x3f6f,
-  0xfe65, 0x3f4e,
-  0xfe66, 0x3bc8,
-  0xfe67, 0x43fd,
-  0xfe68, 0x3d6b,
-  0xfe6a, 0x43fe,
-  0xfe6b, 0x3fcb,
-  0xfe6c, 0x3dd2,
-  0xfe6d, 0x3879,
-  0xfe6e, 0x3f10,
-  0xfe6f, 0x382e,
-  0xfe70, 0x388b,
-  0xfe71, 0x3c60,
-  0xfe72, 0x2a9f,
-  0xfe73, 0x3c61,
-  0xfe74, 0x3893,
-  0xfe75, 0x3e74,
-  0xfe76, 0x3fac,
-  0xfe77, 0x3f81,
-  0xfe78, 0x3bcd,
-  0xfe79, 0x3bd4,
-  0xfe7a, 0x3bd3,
-  0xfe7b, 0x3fcc,
-  0xfe7c, 0x3fd1,
-  0xfe7d, 0x3f3d,
-  0xfe7e, 0x3f4a,
-  0xfea1, 0x2352,
-  0xfea2, 0x38ad,
-  0xfea3, 0x3f46,
-  0xfea4, 0x38b5,
-  0xfea5, 0x3f0d,
-  0xfea6, 0x3fb3,
-  0xfea7, 0x38c0,
-  0xfea8, 0x3e2f,
-  0xfea9, 0x38cf,
-  0xfeaa, 0x38d5,
-  0xfeab, 0x3f33,
-  0xfeac, 0x3d95,
-  0xfead, 0x3f35,
-  0xfeae, 0x38d7,
-  0xfeaf, 0x3f2f,
-  0xfeb0, 0x38e0,
-  0xfeb1, 0x3c02,
-  0xfeb2, 0x3f72,
-  0xfeb3, 0x3f70,
-  0xfeb4, 0x3d96,
-  0xfeb5, 0x38e6,
-  0xfeb7, 0x4035,
-  0xfeb8, 0x3f73,
-  0xfeb9, 0x38f0,
-  0xfeba, 0x3c0b,
-  0xfebb, 0x38f7,
-  0xfebc, 0x37aa,
-  0xfebd, 0x43ff,
-  0xfebe, 0x38fa,
-  0xfebf, 0x3c11,
-  0xfec0, 0x3f34,
-  0xfec1, 0x3fb9,
-  0xfec2, 0x3c12,
-  0xfec3, 0x400a,
-  0xfec4, 0x3d77,
-  0xfec5, 0x3f42,
-  0xfec6, 0x3900,
-  0xfec7, 0x3902,
-  0xfec8, 0x3f74,
-  0xfec9, 0x3d97,
-  0xfeca, 0x3faa,
-  0xfecb, 0x3f19,
-  0xfecc, 0x3f1b,
-  0xfecd, 0x390e,
-  0xfece, 0x3909,
-  0xfecf, 0x390b,
-  0xfed0, 0x3f12,
-  0xfed1, 0x3f17,
-  0xfed2, 0x3fb7,
-  0xfed3, 0x3f20,
-  0xfed4, 0x3fbb,
-  0xfed5, 0x3f3c,
-  0xfed6, 0x3fad,
-  0xfed7, 0x3919,
-  0xfed8, 0x3f56,
-  0xfed9, 0x3f71,
-  0xfeda, 0x3fb4,
-  0xfedb, 0x391c,
-  0xfedc, 0x3f1e,
-  0xfedd, 0x3f3a,
-  0xfede, 0x391b,
-  0xfedf, 0x3d87,
-  0xfee0, 0x3c3a,
-  0xfee1, 0x3f22,
-  0xfee2, 0x3e71,
-  0xfee3, 0x3c39,
-  0xfee4, 0x3d7e,
-  0xfee5, 0x4124,
-  0xfee6, 0x3f3b,
-  0xfee7, 0x3e6e,
-  0xfee8, 0x3fab,
-  0xfee9, 0x3925,
-  0xfeea, 0x3f30,
-  0xfeeb, 0x3929,
-  0xfeec, 0x3f84,
-  0xfeed, 0x3f0f,
-  0xfeee, 0x3f76,
-  0xfeef, 0x3f94,
-  0xfef0, 0x3932,
-  0xfef1, 0x3f27,
-  0xfef2, 0x3933,
-  0xfef3, 0x3f75,
-  0xfef4, 0x3937,
-  0xfef5, 0x3d78,
-  0xfef6, 0x3f21,
-  0xfef7, 0x3f90,
-  0xfef8, 0x3940,
-  0xfef9, 0x3d7f,
-  0xfefa, 0x394a,
-  0xfefb, 0x3f80,
-  0xfefc, 0x3f23,
-  0xfefd, 0x3950,
-  0xfefe, 0x3f7e,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKdlaB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKdlaB5VMap2, 1035
-};
-
-static Gushort cns13HKdlbB5HMap2[1816] = {
-  0x0000, 0x0000,
-  0x8e40, 0x3d77,
-  0x8e41, 0x3d6c,
-  0x8e42, 0x3f59,
-  0x8e43, 0x3919,
-  0x8e44, 0x3e70,
-  0x8e45, 0x3752,
-  0x8e46, 0x38af,
-  0x8e47, 0x3786,
-  0x8e48, 0x3f1b,
-  0x8e49, 0x3d5c,
-  0x8e4a, 0x3f99,
-  0x8e4b, 0x3fe8,
-  0x8e4c, 0x388b,
-  0x8e4d, 0x38dc,
-  0x8e4e, 0x3faa,
-  0x8e4f, 0x42c8,
-  0x8e50, 0x3741,
-  0x8e51, 0x3d7f,
-  0x8e52, 0x42ec,
-  0x8e53, 0x3f93,
-  0x8e54, 0x389a,
-  0x8e55, 0x3879,
-  0x8e56, 0x373a,
-  0x8e57, 0x42d0,
-  0x8e58, 0x3e6f,
-  0x8e59, 0x3f18,
-  0x8e5a, 0x36e8,
-  0x8e5b, 0x3739,
-  0x8e5c, 0x3e99,
-  0x8e5d, 0x3b4c,
-  0x8e5e, 0x3dd2,
-  0x8e5f, 0x3fa9,
-  0x8e60, 0x3fac,
-  0x8e61, 0x3fcb,
-  0x8e62, 0x3733,
-  0x8e63, 0x3f9f,
-  0x8e64, 0x40da,
-  0x8e65, 0x3f29,
-  0x8e66, 0x3c66,
-  0x8e67, 0x4222,
-  0x8e68, 0x40ae,
-  0x8e69, 0x3d7a,
-  0x8e6a, 0x3f8d,
-  0x8e6b, 0x39d0,
-  0x8e6c, 0x4264,
-  0x8e6d, 0x3d82,
-  0x8e6e, 0x4203,
-  0x8e6f, 0x41db,
-  0x8e70, 0x3fde,
-  0x8e71, 0x3ff4,
-  0x8e72, 0x4004,
-  0x8e73, 0x3f66,
-  0x8e74, 0x3f9b,
-  0x8e75, 0x3d66,
-  0x8e76, 0x404b,
-  0x8e77, 0x3fdf,
-  0x8e78, 0x40fb,
-  0x8e79, 0x4012,
-  0x8e7a, 0x3fe6,
-  0x8e7b, 0x42eb,
-  0x8e7c, 0x4124,
-  0x8e7d, 0x3d7c,
-  0x8e7e, 0x3d69,
-  0x8ea1, 0x3ffe,
-  0x8ea2, 0x3d72,
-  0x8ea3, 0x3fc6,
-  0x8ea4, 0x3cfe,
-  0x8ea5, 0x43f9,
-  0x8ea6, 0x3d42,
-  0x8ea7, 0x3f15,
-  0x8ea8, 0x3fce,
-  0x8ea9, 0x428b,
-  0x8eaa, 0x40cf,
-  0x8eab, 0x43f6,
-  0x8eac, 0x4005,
-  0x8ead, 0x3f2d,
-  0x8eae, 0x4161,
-  0x8eaf, 0x3f2c,
-  0x8eb0, 0x3aca,
-  0x8eb1, 0x3d6a,
-  0x8eb2, 0x4063,
-  0x8eb3, 0x3fc5,
-  0x8eb4, 0x39e7,
-  0x8eb5, 0x3f2a,
-  0x8eb6, 0x4060,
-  0x8eb7, 0x4273,
-  0x8eb8, 0x4221,
-  0x8eb9, 0x40a2,
-  0x8eba, 0x3f68,
-  0x8ebb, 0x40a1,
-  0x8ebc, 0x3f57,
-  0x8ebd, 0x3f70,
-  0x8ebe, 0x3fb7,
-  0x8ebf, 0x3746,
-  0x8ec0, 0x3fab,
-  0x8ec1, 0x3ff2,
-  0x8ec2, 0x3f8c,
-  0x8ec3, 0x3f88,
-  0x8ec4, 0x37d3,
-  0x8ec5, 0x3b74,
-  0x8ec7, 0x42f4,
-  0x8ec8, 0x3c4c,
-  0x8ec9, 0x3b7a,
-  0x8eca, 0x3885,
-  0x8ecb, 0x3737,
-  0x8ecc, 0x3fdb,
-  0x8ecd, 0x3f1d,
-  0x8ece, 0x3fec,
-  0x8ecf, 0x3fe5,
-  0x8ed0, 0x375e,
-  0x8ed1, 0x3ff7,
-  0x8ed2, 0x3813,
-  0x8ed3, 0x3fe3,
-  0x8ed4, 0x3f1a,
-  0x8ed5, 0x38e6,
-  0x8ed6, 0x3fdc,
-  0x8ed7, 0x377f,
-  0x8ed8, 0x3d87,
-  0x8ed9, 0x3bd3,
-  0x8eda, 0x3d78,
-  0x8edb, 0x3bd4,
-  0x8edc, 0x3f96,
-  0x8edd, 0x3f95,
-  0x8ede, 0x3d8c,
-  0x8edf, 0x3937,
-  0x8ee0, 0x3f1c,
-  0x8ee1, 0x3932,
-  0x8ee2, 0x3d6b,
-  0x8ee3, 0x3800,
-  0x8ee4, 0x3ff8,
-  0x8ee5, 0x3c3a,
-  0x8ee6, 0x3f42,
-  0x8ee7, 0x43fd,
-  0x8ee8, 0x3fb1,
-  0x8ee9, 0x3792,
-  0x8eea, 0x3f94,
-  0x8eeb, 0x3f1e,
-  0x8eec, 0x400a,
-  0x8eed, 0x3882,
-  0x8eee, 0x3f9c,
-  0x8eef, 0x3d61,
-  0x8ef0, 0x3f22,
-  0x8ef1, 0x3fe9,
-  0x8ef2, 0x3d92,
-  0x8ef3, 0x377f,
-  0x8ef4, 0x3b94,
-  0x8ef5, 0x376e,
-  0x8ef6, 0x4301,
-  0x8ef7, 0x3f3a,
-  0x8ef8, 0x3863,
-  0x8ef9, 0x3ff1,
-  0x8efa, 0x42fe,
-  0x8efb, 0x3bfc,
-  0x8efc, 0x3f45,
-  0x8efd, 0x379f,
-  0x8efe, 0x376b,
-  0x8f40, 0x3f14,
-  0x8f41, 0x3f47,
-  0x8f42, 0x3862,
-  0x8f43, 0x3769,
-  0x8f44, 0x3c12,
-  0x8f45, 0x3f49,
-  0x8f46, 0x381f,
-  0x8f47, 0x3929,
-  0x8f48, 0x3f56,
-  0x8f49, 0x3f34,
-  0x8f4a, 0x3fdd,
-  0x8f4b, 0x38fa,
-  0x8f4c, 0x3f7b,
-  0x8f4d, 0x3c11,
-  0x8f4e, 0x3f7c,
-  0x8f4f, 0x43ff,
-  0x8f50, 0x3e73,
-  0x8f51, 0x3f71,
-  0x8f52, 0x3925,
-  0x8f53, 0x3c55,
-  0x8f54, 0x38b5,
-  0x8f55, 0x3f5a,
-  0x8f56, 0x3816,
-  0x8f57, 0x3e6d,
-  0x8f58, 0x3782,
-  0x8f59, 0x3f11,
-  0x8f5a, 0x3b8b,
-  0x8f5b, 0x37c0,
-  0x8f5c, 0x3815,
-  0x8f5d, 0x383b,
-  0x8f5e, 0x3d73,
-  0x8f5f, 0x3d6e,
-  0x8f60, 0x3f8a,
-  0x8f61, 0x3f3e,
-  0x8f62, 0x4234,
-  0x8f63, 0x41e3,
-  0x8f64, 0x3fc7,
-  0x8f65, 0x3ff3,
-  0x8f66, 0x4003,
-  0x8f67, 0x4032,
-  0x8f68, 0x3f6e,
-  0x8f69, 0x41a3,
-  0x8f6a, 0x4006,
-  0x8f6b, 0x3f2b,
-  0x8f6c, 0x3f7d,
-  0x8f6d, 0x3c73,
-  0x8f6e, 0x3f16,
-  0x8f6f, 0x4002,
-  0x8f70, 0x4056,
-  0x8f71, 0x3fba,
-  0x8f72, 0x3f6b,
-  0x8f73, 0x3f91,
-  0x8f74, 0x3fbe,
-  0x8f75, 0x405a,
-  0x8f76, 0x3adf,
-  0x8f77, 0x3e41,
-  0x8f78, 0x3d67,
-  0x8f79, 0x3f60,
-  0x8f7a, 0x41e8,
-  0x8f7b, 0x3fc0,
-  0x8f7c, 0x3d83,
-  0x8f7d, 0x4173,
-  0x8f7e, 0x3f5c,
-  0x8fa1, 0x3f32,
-  0x8fa2, 0x3f3f,
-  0x8fa3, 0x3d63,
-  0x8fa4, 0x4146,
-  0x8fa5, 0x3fcd,
-  0x8fa6, 0x3d79,
-  0x8fa7, 0x3f28,
-  0x8fa8, 0x3fc1,
-  0x8fa9, 0x40bc,
-  0x8faa, 0x3d71,
-  0x8fab, 0x3f37,
-  0x8fac, 0x42d8,
-  0x8fad, 0x3feb,
-  0x8fae, 0x4241,
-  0x8faf, 0x3a30,
-  0x8fb0, 0x39cd,
-  0x8fb1, 0x42bf,
-  0x8fb2, 0x420e,
-  0x8fb3, 0x3f0a,
-  0x8fb4, 0x39cc,
-  0x8fb5, 0x4044,
-  0x8fb6, 0x4098,
-  0x8fb7, 0x418c,
-  0x8fb8, 0x3d64,
-  0x8fb9, 0x3f44,
-  0x8fba, 0x404f,
-  0x8fbb, 0x42d5,
-  0x8fbc, 0x4290,
-  0x8fbd, 0x4000,
-  0x8fbe, 0x3a89,
-  0x8fbf, 0x416c,
-  0x8fc0, 0x40c4,
-  0x8fc1, 0x404d,
-  0x8fc2, 0x3dc0,
-  0x8fc3, 0x3f50,
-  0x8fc4, 0x4009,
-  0x8fc5, 0x3faf,
-  0x8fc6, 0x3f86,
-  0x8fc7, 0x4093,
-  0x8fc8, 0x3aad,
-  0x8fc9, 0x3f38,
-  0x8fca, 0x3d75,
-  0x8fcb, 0x3f39,
-  0x8fcc, 0x42cd,
-  0x8fcd, 0x3f78,
-  0x8fce, 0x3f9d,
-  0x8fcf, 0x4090,
-  0x8fd0, 0x3d80,
-  0x8fd1, 0x3f2e,
-  0x8fd2, 0x38b6,
-  0x8fd3, 0x41b9,
-  0x8fd4, 0x3d8a,
-  0x8fd5, 0x3f24,
-  0x8fd6, 0x3a9e,
-  0x8fd7, 0x3adc,
-  0x8fd8, 0x3d65,
-  0x8fd9, 0x4085,
-  0x8fda, 0x3f51,
-  0x8fdb, 0x43fa,
-  0x8fdc, 0x3f63,
-  0x8fdd, 0x4178,
-  0x8fde, 0x41b7,
-  0x8fdf, 0x3e72,
-  0x8fe0, 0x41d9,
-  0x8fe1, 0x418e,
-  0x8fe2, 0x3d76,
-  0x8fe3, 0x42d4,
-  0x8fe4, 0x42a2,
-  0x8fe5, 0x4257,
-  0x8fe6, 0x3f0c,
-  0x8fe7, 0x3996,
-  0x8fe8, 0x4255,
-  0x8fe9, 0x40b7,
-  0x8fea, 0x3f9a,
-  0x8feb, 0x3fca,
-  0x8fec, 0x3f5e,
-  0x8fed, 0x3d85,
-  0x8fee, 0x3ffa,
-  0x8fef, 0x3fb6,
-  0x8ff0, 0x3ac3,
-  0x8ff1, 0x3fc8,
-  0x8ff2, 0x3f4b,
-  0x8ff3, 0x40f1,
-  0x8ff4, 0x4034,
-  0x8ff5, 0x3f5b,
-  0x8ff6, 0x42c9,
-  0x8ff7, 0x3c75,
-  0x8ff8, 0x3f79,
-  0x8ff9, 0x42c6,
-  0x8ffa, 0x38cf,
-  0x8ffb, 0x41f4,
-  0x8ffc, 0x3f41,
-  0x8ffd, 0x390b,
-  0x8ffe, 0x38e0,
-  0x9040, 0x427d,
-  0x9041, 0x42f0,
-  0x9042, 0x3f27,
-  0x9043, 0x3822,
-  0x9044, 0x37d8,
-  0x9045, 0x37a2,
-  0x9046, 0x3f73,
-  0x9047, 0x42b8,
-  0x9048, 0x3f19,
-  0x9049, 0x42b7,
-  0x904a, 0x3d8b,
-  0x904b, 0x4129,
-  0x904c, 0x40d4,
-  0x904d, 0x38f5,
-  0x904e, 0x4143,
-  0x904f, 0x4022,
-  0x9050, 0x41d0,
-  0x9051, 0x41f5,
-  0x9052, 0x3f43,
-  0x9053, 0x40c8,
-  0x9054, 0x4096,
-  0x9055, 0x405d,
-  0x9056, 0x4174,
-  0x9057, 0x413e,
-  0x9058, 0x413b,
-  0x9059, 0x39c4,
-  0x905a, 0x3d89,
-  0x905b, 0x4205,
-  0x905c, 0x36eb,
-  0x905d, 0x39c5,
-  0x905e, 0x3d84,
-  0x905f, 0x4054,
-  0x9060, 0x193f,
-  0x9061, 0x0619,
-  0x9062, 0x0871,
-  0x9063, 0x115f,
-  0x9064, 0x3f53,
-  0x9065, 0x3f1f,
-  0x9066, 0x339d,
-  0x9067, 0x3fb8,
-  0x9068, 0x3b3f,
-  0x9069, 0x3f52,
-  0x906a, 0x3761,
-  0x906b, 0x375c,
-  0x906c, 0x3fd9,
-  0x906d, 0x3fd7,
-  0x906e, 0x3fd6,
-  0x906f, 0x3e93,
-  0x9070, 0x3774,
-  0x9071, 0x377b,
-  0x9072, 0x3b4f,
-  0x9073, 0x4007,
-  0x9074, 0x3fe2,
-  0x9075, 0x3e79,
-  0x9076, 0x3e76,
-  0x9077, 0x3fe7,
-  0x9078, 0x0d2a,
-  0x9079, 0x3fee,
-  0x907a, 0x3fe1,
-  0x907b, 0x3e77,
-  0x907c, 0x3fa3,
-  0x907d, 0x3f54,
-  0x907e, 0x37bc,
-  0x90a1, 0x3e7a,
-  0x90a2, 0x3fa1,
-  0x90a3, 0x37c1,
-  0x90a4, 0x3ff5,
-  0x90a5, 0x3f9e,
-  0x90a6, 0x3b7f,
-  0x90a7, 0x380b,
-  0x90a8, 0x3fef,
-  0x90a9, 0x3ffc,
-  0x90aa, 0x380d,
-  0x90ab, 0x3fed,
-  0x90ac, 0x3fe4,
-  0x90ad, 0x3811,
-  0x90ae, 0x3f7a,
-  0x90af, 0x3fa2,
-  0x90b0, 0x3b8e,
-  0x90b1, 0x381c,
-  0x90b2, 0x3fa0,
-  0x90b3, 0x3fe0,
-  0x90b4, 0x3d93,
-  0x90b5, 0x3827,
-  0x90b6, 0x3ff0,
-  0x90b7, 0x3fa5,
-  0x90b8, 0x3836,
-  0x90b9, 0x3d8d,
-  0x90ba, 0x3f69,
-  0x90bb, 0x3f82,
-  0x90bc, 0x3f85,
-  0x90bd, 0x3f83,
-  0x90be, 0x3f89,
-  0x90bf, 0x3f7f,
-  0x90c0, 0x3bb5,
-  0x90c1, 0x3f87,
-  0x90c2, 0x3f31,
-  0x90c3, 0x3d94,
-  0x90c4, 0x0230,
-  0x90c5, 0x43fe,
-  0x90c6, 0x3f10,
-  0x90c7, 0x387e,
-  0x90c8, 0x43eb,
-  0x90c9, 0x3f6f,
-  0x90ca, 0x3e9b,
-  0x90cb, 0x3f4e,
-  0x90cc, 0x3bc8,
-  0x90cd, 0x1e29,
-  0x90ce, 0x3f48,
-  0x90cf, 0x382e,
-  0x90d0, 0x3c60,
-  0x90d1, 0x2a9f,
-  0x90d2, 0x3893,
-  0x90d3, 0x43f7,
-  0x90d4, 0x3e74,
-  0x90d5, 0x3bcd,
-  0x90d6, 0x3ac9,
-  0x90d7, 0x3fcc,
-  0x90d8, 0x3fd1,
-  0x90d9, 0x3f3d,
-  0x90da, 0x3f4a,
-  0x90db, 0x38ad,
-  0x90dc, 0x2352,
-  0x90dd, 0x3f46,
-  0x90de, 0x38b2,
-  0x90df, 0x3fb3,
-  0x90e0, 0x3f0d,
-  0x90e1, 0x38c0,
-  0x90e2, 0x3e2f,
-  0x90e3, 0x38d5,
-  0x90e4, 0x3f35,
-  0x90e5, 0x38d7,
-  0x90e6, 0x3f2f,
-  0x90e7, 0x3f33,
-  0x90e8, 0x3d95,
-  0x90e9, 0x3c02,
-  0x90ea, 0x3f72,
-  0x90eb, 0x3d96,
-  0x90ec, 0x38e7,
-  0x90ed, 0x4035,
-  0x90ee, 0x3c0b,
-  0x90ef, 0x38f0,
-  0x90f0, 0x38f7,
-  0x90f1, 0x3fb9,
-  0x90f2, 0x3900,
-  0x90f3, 0x3f74,
-  0x90f4, 0x3909,
-  0x90f5, 0x3f12,
-  0x90f6, 0x3f17,
-  0x90f7, 0x3f20,
-  0x90f8, 0x3fbb,
-  0x90f9, 0x3f3c,
-  0x90fa, 0x3fb4,
-  0x90fb, 0x3fad,
-  0x90fc, 0x391a,
-  0x90fd, 0x391c,
-  0x90fe, 0x391b,
-  0x9140, 0x3c39,
-  0x9141, 0x3e71,
-  0x9142, 0x3d7e,
-  0x9143, 0x3f3b,
-  0x9144, 0x3f30,
-  0x9145, 0x3f84,
-  0x9146, 0x43f8,
-  0x9147, 0x3f0f,
-  0x9148, 0x3f76,
-  0x9149, 0x3933,
-  0x914a, 0x3f75,
-  0x914b, 0x3940,
-  0x914c, 0x3f21,
-  0x914d, 0x3f90,
-  0x914e, 0x394a,
-  0x914f, 0x3f80,
-  0x9150, 0x3f23,
-  0x9151, 0x3950,
-  0x9152, 0x3d97,
-  0x9153, 0x2e45,
-  0x9154, 0x0570,
-  0x9155, 0x3ead,
-  0x9156, 0x3522,
-  0x9157, 0x0be3,
-  0x9158, 0x0595,
-  0x9159, 0x0228,
-  0x915a, 0x0a95,
-  0x915b, 0x12b0,
-  0x915c, 0x091a,
-  0x915d, 0x43fc,
-  0x915e, 0x3f92,
-  0x915f, 0x3fae,
-  0x9160, 0x07c2,
-  0x9161, 0x0955,
-  0x9162, 0x3785,
-  0x9163, 0x3e6e,
-  0x9164, 0x3d6d,
-  0x9165, 0x3f62,
-  0x9166, 0x39c8,
-  0x9167, 0x3f65,
-  0x9168, 0x393d,
-  0x9169, 0x3f26,
-  0x916a, 0x406d,
-  0x916b, 0x3fd0,
-  0x916c, 0x3f36,
-  0x916d, 0x4086,
-  0x916e, 0x3952,
-  0x916f, 0x3fd2,
-  0x9170, 0x3858,
-  0x9171, 0x3ffb,
-  0x9172, 0x3f67,
-  0x9173, 0x3e81,
-  0x9174, 0x3fc9,
-  0x9175, 0x3fb5,
-  0x9176, 0x3e7c,
-  0x9177, 0x3e75,
-  0x9178, 0x3c77,
-  0x9179, 0x3b2e,
-  0x917a, 0x3f4d,
-  0x917b, 0x43af,
-  0x917c, 0x3e67,
-  0x917d, 0x40bd,
-  0x917e, 0x3f6c,
-  0x91a1, 0x39a6,
-  0x91a2, 0x3948,
-  0x91a3, 0x3fbf,
-  0x91a4, 0x3f5f,
-  0x91a5, 0x3a05,
-  0x91a6, 0x06f5,
-  0x91a7, 0x40f8,
-  0x91a8, 0x41ad,
-  0x91a9, 0x3f0e,
-  0x91aa, 0x4122,
-  0x91ab, 0x3f13,
-  0x91ac, 0x3f0b,
-  0x91ad, 0x4135,
-  0x91ae, 0x3a2b,
-  0x91af, 0x4138,
-  0x91b0, 0x0226,
-  0x91b1, 0x4149,
-  0x91b2, 0x3ba5,
-  0x91b3, 0x4001,
-  0x91b4, 0x3fbd,
-  0x91b5, 0x3fa8,
-  0x91b6, 0x4186,
-  0x91b7, 0x3a54,
-  0x91b8, 0x3fc2,
-  0x91b9, 0x4192,
-  0x91ba, 0x4187,
-  0x91bb, 0x3384,
-  0x91bc, 0x3fc4,
-  0x91bd, 0x3d99,
-  0x91be, 0x3aaa,
-  0x91bf, 0x41de,
-  0x91c1, 0x3ff6,
-  0x91c2, 0x3f5d,
-  0x91c3, 0x41c7,
-  0x91c4, 0x3d91,
-  0x91c5, 0x3d74,
-  0x91c6, 0x3f4c,
-  0x91c7, 0x41f2,
-  0x91c8, 0x3aa5,
-  0x91c9, 0x3b4b,
-  0x91ca, 0x3d86,
-  0x91cb, 0x41f8,
-  0x91cc, 0x4240,
-  0x91cd, 0x3ffd,
-  0x91ce, 0x3fa7,
-  0x91cf, 0x4259,
-  0x91d0, 0x0e72,
-  0x91d1, 0x4262,
-  0x91d2, 0x3c7e,
-  0x91d3, 0x3938,
-  0x91d4, 0x4233,
-  0x91d5, 0x295a,
-  0x91d7, 0x3f97,
-  0x91d8, 0x3fb2,
-  0x91d9, 0x428a,
-  0x91da, 0x3f98,
-  0x91db, 0x1f94,
-  0x91dc, 0x3f40,
-  0x91dd, 0x3f4f,
-  0x91de, 0x3f8f,
-  0x91df, 0x3d6f,
-  0x91e0, 0x42df,
-  0x91e1, 0x3f55,
-  0x91e2, 0x3fd3,
-  0x91e3, 0x42ee,
-  0x91e4, 0x3fcf,
-  0x91e5, 0x3fd4,
-  0x91e6, 0x3e7d,
-  0x91e7, 0x4307,
-  0x91e8, 0x43fb,
-  0x91e9, 0x3fda,
-  0x91ea, 0x0d0a,
-  0x91eb, 0x3f77,
-  0x91ec, 0x3dbf,
-  0x91ed, 0x402c,
-  0x91ee, 0x3fa4,
-  0x91ef, 0x3d6f,
-  0x91f0, 0x3ccd,
-  0x91f1, 0x3f64,
-  0x91f2, 0x3f8b,
-  0x91f3, 0x386f,
-  0x91f4, 0x1971,
-  0x91f5, 0x1c9b,
-  0x91f6, 0x0745,
-  0x91f7, 0x1d75,
-  0x91f8, 0x3888,
-  0x91f9, 0x3742,
-  0x91fa, 0x2b40,
-  0x91fb, 0x36e9,
-  0x91fc, 0x37e0,
-  0x91fd, 0x3e16,
-  0x91fe, 0x387c,
-  0x9240, 0x37aa,
-  0x9241, 0x3f8e,
-  0x9242, 0x40dc,
-  0x9243, 0x3c7a,
-  0x9244, 0x3fa6,
-  0x9245, 0x405f,
-  0x9246, 0x3c26,
-  0x9247, 0x385e,
-  0x9248, 0x3f25,
-  0x9249, 0x4048,
-  0x924a, 0x3d81,
-  0x924b, 0x390e,
-  0x924c, 0x4084,
-  0x924d, 0x4118,
-  0x924e, 0x4157,
-  0x924f, 0x3902,
-  0x9250, 0x389f,
-  0x9251, 0x3ff9,
-  0x9252, 0x3823,
-  0x9253, 0x3871,
-  0x9254, 0x36ea,
-  0x9255, 0x376c,
-  0x9256, 0x3740,
-  0x9257, 0x37f4,
-  0x9258, 0x42e0,
-  0x9259, 0x425b,
-  0x925a, 0x36ed,
-  0x925b, 0x3b14,
-  0x925c, 0x42c5,
-  0x925d, 0x408b,
-  0x925e, 0x38a5,
-  0x925f, 0x416a,
-  0x9260, 0x419d,
-  0x9261, 0x4144,
-  0x9262, 0x424f,
-  0x9263, 0x3f61,
-  0x9264, 0x3fd8,
-  0x9265, 0x061c,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKdlbB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKdlbB5HMap2, 908
-};
-
-static Gushort cns13HKdlbB5VMap2[1840] = {
-  0x0000, 0x0000,
-  0x8e40, 0x3d77,
-  0x8e41, 0x3d6c,
-  0x8e42, 0x3f59,
-  0x8e43, 0x3919,
-  0x8e44, 0x3e70,
-  0x8e45, 0x3752,
-  0x8e46, 0x38af,
-  0x8e47, 0x3786,
-  0x8e48, 0x3f1b,
-  0x8e49, 0x3d5c,
-  0x8e4a, 0x3f99,
-  0x8e4b, 0x3fe8,
-  0x8e4c, 0x388b,
-  0x8e4d, 0x38dc,
-  0x8e4e, 0x3faa,
-  0x8e4f, 0x42c8,
-  0x8e50, 0x3741,
-  0x8e51, 0x3d7f,
-  0x8e52, 0x42ec,
-  0x8e53, 0x3f93,
-  0x8e54, 0x389a,
-  0x8e55, 0x3879,
-  0x8e56, 0x373a,
-  0x8e57, 0x42d0,
-  0x8e58, 0x3e6f,
-  0x8e59, 0x3f18,
-  0x8e5a, 0x36e8,
-  0x8e5b, 0x3739,
-  0x8e5c, 0x3e99,
-  0x8e5d, 0x3b4c,
-  0x8e5e, 0x3dd2,
-  0x8e5f, 0x3fa9,
-  0x8e60, 0x3fac,
-  0x8e61, 0x3fcb,
-  0x8e62, 0x3733,
-  0x8e63, 0x3f9f,
-  0x8e64, 0x40da,
-  0x8e65, 0x3f29,
-  0x8e66, 0x3c66,
-  0x8e67, 0x4222,
-  0x8e68, 0x40ae,
-  0x8e69, 0x3d7a,
-  0x8e6a, 0x3f8d,
-  0x8e6b, 0x39d0,
-  0x8e6c, 0x4264,
-  0x8e6d, 0x3d82,
-  0x8e6e, 0x4203,
-  0x8e6f, 0x41db,
-  0x8e70, 0x3fde,
-  0x8e71, 0x3ff4,
-  0x8e72, 0x4004,
-  0x8e73, 0x3f66,
-  0x8e74, 0x3f9b,
-  0x8e75, 0x3d66,
-  0x8e76, 0x404b,
-  0x8e77, 0x3fdf,
-  0x8e78, 0x40fb,
-  0x8e79, 0x4012,
-  0x8e7a, 0x3fe6,
-  0x8e7b, 0x42eb,
-  0x8e7c, 0x4124,
-  0x8e7d, 0x3d7c,
-  0x8e7e, 0x3d69,
-  0x8ea1, 0x3ffe,
-  0x8ea2, 0x3d72,
-  0x8ea3, 0x3fc6,
-  0x8ea4, 0x3cfe,
-  0x8ea5, 0x43f9,
-  0x8ea6, 0x3d42,
-  0x8ea7, 0x3f15,
-  0x8ea8, 0x3fce,
-  0x8ea9, 0x428b,
-  0x8eaa, 0x40cf,
-  0x8eab, 0x43f6,
-  0x8eac, 0x4005,
-  0x8ead, 0x3f2d,
-  0x8eae, 0x4161,
-  0x8eaf, 0x3f2c,
-  0x8eb0, 0x3aca,
-  0x8eb1, 0x3d6a,
-  0x8eb2, 0x4063,
-  0x8eb3, 0x3fc5,
-  0x8eb4, 0x39e7,
-  0x8eb5, 0x3f2a,
-  0x8eb6, 0x4060,
-  0x8eb7, 0x4273,
-  0x8eb8, 0x4221,
-  0x8eb9, 0x40a2,
-  0x8eba, 0x3f68,
-  0x8ebb, 0x40a1,
-  0x8ebc, 0x3f57,
-  0x8ebd, 0x3f70,
-  0x8ebe, 0x3fb7,
-  0x8ebf, 0x3746,
-  0x8ec0, 0x3fab,
-  0x8ec1, 0x3ff2,
-  0x8ec2, 0x3f8c,
-  0x8ec3, 0x3f88,
-  0x8ec4, 0x37d3,
-  0x8ec5, 0x3b74,
-  0x8ec7, 0x42f4,
-  0x8ec8, 0x3c4c,
-  0x8ec9, 0x3b7a,
-  0x8eca, 0x3885,
-  0x8ecb, 0x3737,
-  0x8ecc, 0x3fdb,
-  0x8ecd, 0x3f1d,
-  0x8ece, 0x3fec,
-  0x8ecf, 0x3fe5,
-  0x8ed0, 0x375e,
-  0x8ed1, 0x3ff7,
-  0x8ed2, 0x3813,
-  0x8ed3, 0x3fe3,
-  0x8ed4, 0x3f1a,
-  0x8ed5, 0x38e6,
-  0x8ed6, 0x3fdc,
-  0x8ed7, 0x377f,
-  0x8ed8, 0x3d87,
-  0x8ed9, 0x3bd3,
-  0x8eda, 0x3d78,
-  0x8edb, 0x3bd4,
-  0x8edc, 0x3f96,
-  0x8edd, 0x3f95,
-  0x8ede, 0x3d8c,
-  0x8edf, 0x3937,
-  0x8ee0, 0x3f1c,
-  0x8ee1, 0x3932,
-  0x8ee2, 0x3d6b,
-  0x8ee3, 0x3800,
-  0x8ee4, 0x3ff8,
-  0x8ee5, 0x3c3a,
-  0x8ee6, 0x3f42,
-  0x8ee7, 0x43fd,
-  0x8ee8, 0x3fb1,
-  0x8ee9, 0x3792,
-  0x8eea, 0x3f94,
-  0x8eeb, 0x3f1e,
-  0x8eec, 0x400a,
-  0x8eed, 0x3882,
-  0x8eee, 0x3f9c,
-  0x8eef, 0x3d61,
-  0x8ef0, 0x3f22,
-  0x8ef1, 0x3fe9,
-  0x8ef2, 0x3d92,
-  0x8ef3, 0x377f,
-  0x8ef4, 0x3b94,
-  0x8ef5, 0x376e,
-  0x8ef6, 0x4301,
-  0x8ef7, 0x3f3a,
-  0x8ef8, 0x3863,
-  0x8ef9, 0x3ff1,
-  0x8efa, 0x42fe,
-  0x8efb, 0x3bfc,
-  0x8efc, 0x3f45,
-  0x8efd, 0x379f,
-  0x8efe, 0x376b,
-  0x8f40, 0x3f14,
-  0x8f41, 0x3f47,
-  0x8f42, 0x3862,
-  0x8f43, 0x3769,
-  0x8f44, 0x3c12,
-  0x8f45, 0x3f49,
-  0x8f46, 0x381f,
-  0x8f47, 0x3929,
-  0x8f48, 0x3f56,
-  0x8f49, 0x3f34,
-  0x8f4a, 0x3fdd,
-  0x8f4b, 0x38fa,
-  0x8f4c, 0x3f7b,
-  0x8f4d, 0x3c11,
-  0x8f4e, 0x3f7c,
-  0x8f4f, 0x43ff,
-  0x8f50, 0x3e73,
-  0x8f51, 0x3f71,
-  0x8f52, 0x3925,
-  0x8f53, 0x3c55,
-  0x8f54, 0x38b5,
-  0x8f55, 0x3f5a,
-  0x8f56, 0x3816,
-  0x8f57, 0x3e6d,
-  0x8f58, 0x3782,
-  0x8f59, 0x3f11,
-  0x8f5a, 0x3b8b,
-  0x8f5b, 0x37c0,
-  0x8f5c, 0x3815,
-  0x8f5d, 0x383b,
-  0x8f5e, 0x3d73,
-  0x8f5f, 0x3d6e,
-  0x8f60, 0x3f8a,
-  0x8f61, 0x3f3e,
-  0x8f62, 0x4234,
-  0x8f63, 0x41e3,
-  0x8f64, 0x3fc7,
-  0x8f65, 0x3ff3,
-  0x8f66, 0x4003,
-  0x8f67, 0x4032,
-  0x8f68, 0x3f6e,
-  0x8f69, 0x41a3,
-  0x8f6a, 0x4006,
-  0x8f6b, 0x3f2b,
-  0x8f6c, 0x3f7d,
-  0x8f6d, 0x3c73,
-  0x8f6e, 0x3f16,
-  0x8f6f, 0x4002,
-  0x8f70, 0x4056,
-  0x8f71, 0x3fba,
-  0x8f72, 0x3f6b,
-  0x8f73, 0x3f91,
-  0x8f74, 0x3fbe,
-  0x8f75, 0x405a,
-  0x8f76, 0x3adf,
-  0x8f77, 0x3e41,
-  0x8f78, 0x3d67,
-  0x8f79, 0x3f60,
-  0x8f7a, 0x41e8,
-  0x8f7b, 0x3fc0,
-  0x8f7c, 0x3d83,
-  0x8f7d, 0x4173,
-  0x8f7e, 0x3f5c,
-  0x8fa1, 0x3f32,
-  0x8fa2, 0x3f3f,
-  0x8fa3, 0x3d63,
-  0x8fa4, 0x4146,
-  0x8fa5, 0x3fcd,
-  0x8fa6, 0x3d79,
-  0x8fa7, 0x3f28,
-  0x8fa8, 0x3fc1,
-  0x8fa9, 0x40bc,
-  0x8faa, 0x3d71,
-  0x8fab, 0x3f37,
-  0x8fac, 0x42d8,
-  0x8fad, 0x3feb,
-  0x8fae, 0x4241,
-  0x8faf, 0x3a30,
-  0x8fb0, 0x39cd,
-  0x8fb1, 0x42bf,
-  0x8fb2, 0x420e,
-  0x8fb3, 0x3f0a,
-  0x8fb4, 0x39cc,
-  0x8fb5, 0x4044,
-  0x8fb6, 0x4098,
-  0x8fb7, 0x418c,
-  0x8fb8, 0x3d64,
-  0x8fb9, 0x3f44,
-  0x8fba, 0x404f,
-  0x8fbb, 0x42d5,
-  0x8fbc, 0x4290,
-  0x8fbd, 0x4000,
-  0x8fbe, 0x3a89,
-  0x8fbf, 0x416c,
-  0x8fc0, 0x40c4,
-  0x8fc1, 0x404d,
-  0x8fc2, 0x3dc0,
-  0x8fc3, 0x3f50,
-  0x8fc4, 0x4009,
-  0x8fc5, 0x3faf,
-  0x8fc6, 0x3f86,
-  0x8fc7, 0x4093,
-  0x8fc8, 0x3aad,
-  0x8fc9, 0x3f38,
-  0x8fca, 0x3d75,
-  0x8fcb, 0x3f39,
-  0x8fcc, 0x42cd,
-  0x8fcd, 0x3f78,
-  0x8fce, 0x3f9d,
-  0x8fcf, 0x4090,
-  0x8fd0, 0x3d80,
-  0x8fd1, 0x3f2e,
-  0x8fd2, 0x38b6,
-  0x8fd3, 0x41b9,
-  0x8fd4, 0x3d8a,
-  0x8fd5, 0x3f24,
-  0x8fd6, 0x3a9e,
-  0x8fd7, 0x3adc,
-  0x8fd8, 0x3d65,
-  0x8fd9, 0x4085,
-  0x8fda, 0x3f51,
-  0x8fdb, 0x43fa,
-  0x8fdc, 0x3f63,
-  0x8fdd, 0x4178,
-  0x8fde, 0x41b7,
-  0x8fdf, 0x3e72,
-  0x8fe0, 0x41d9,
-  0x8fe1, 0x418e,
-  0x8fe2, 0x3d76,
-  0x8fe3, 0x42d4,
-  0x8fe4, 0x42a2,
-  0x8fe5, 0x4257,
-  0x8fe6, 0x3f0c,
-  0x8fe7, 0x3996,
-  0x8fe8, 0x4255,
-  0x8fe9, 0x40b7,
-  0x8fea, 0x3f9a,
-  0x8feb, 0x3fca,
-  0x8fec, 0x3f5e,
-  0x8fed, 0x3d85,
-  0x8fee, 0x3ffa,
-  0x8fef, 0x3fb6,
-  0x8ff0, 0x3ac3,
-  0x8ff1, 0x3fc8,
-  0x8ff2, 0x3f4b,
-  0x8ff3, 0x40f1,
-  0x8ff4, 0x4034,
-  0x8ff5, 0x3f5b,
-  0x8ff6, 0x42c9,
-  0x8ff7, 0x3c75,
-  0x8ff8, 0x3f79,
-  0x8ff9, 0x42c6,
-  0x8ffa, 0x38cf,
-  0x8ffb, 0x41f4,
-  0x8ffc, 0x3f41,
-  0x8ffd, 0x390b,
-  0x8ffe, 0x38e0,
-  0x9040, 0x427d,
-  0x9041, 0x42f0,
-  0x9042, 0x3f27,
-  0x9043, 0x3822,
-  0x9044, 0x37d8,
-  0x9045, 0x37a2,
-  0x9046, 0x3f73,
-  0x9047, 0x42b8,
-  0x9048, 0x3f19,
-  0x9049, 0x42b7,
-  0x904a, 0x3d8b,
-  0x904b, 0x4129,
-  0x904c, 0x40d4,
-  0x904d, 0x38f5,
-  0x904e, 0x4143,
-  0x904f, 0x4022,
-  0x9050, 0x41d0,
-  0x9051, 0x41f5,
-  0x9052, 0x3f43,
-  0x9053, 0x40c8,
-  0x9054, 0x4096,
-  0x9055, 0x405d,
-  0x9056, 0x4174,
-  0x9057, 0x413e,
-  0x9058, 0x413b,
-  0x9059, 0x39c4,
-  0x905a, 0x3d89,
-  0x905b, 0x4205,
-  0x905c, 0x36eb,
-  0x905d, 0x39c5,
-  0x905e, 0x3d84,
-  0x905f, 0x4054,
-  0x9060, 0x193f,
-  0x9061, 0x0619,
-  0x9062, 0x0871,
-  0x9063, 0x115f,
-  0x9064, 0x3f53,
-  0x9065, 0x3f1f,
-  0x9066, 0x339d,
-  0x9067, 0x3fb8,
-  0x9068, 0x3b3f,
-  0x9069, 0x3f52,
-  0x906a, 0x3761,
-  0x906b, 0x375c,
-  0x906c, 0x3fd9,
-  0x906d, 0x3fd7,
-  0x906e, 0x3fd6,
-  0x906f, 0x3e93,
-  0x9070, 0x3774,
-  0x9071, 0x377b,
-  0x9072, 0x3b4f,
-  0x9073, 0x4007,
-  0x9074, 0x3fe2,
-  0x9075, 0x3e79,
-  0x9076, 0x3e76,
-  0x9077, 0x3fe7,
-  0x9078, 0x0d2a,
-  0x9079, 0x3fee,
-  0x907a, 0x3fe1,
-  0x907b, 0x3e77,
-  0x907c, 0x3fa3,
-  0x907d, 0x3f54,
-  0x907e, 0x37bc,
-  0x90a1, 0x3e7a,
-  0x90a2, 0x3fa1,
-  0x90a3, 0x37c1,
-  0x90a4, 0x3ff5,
-  0x90a5, 0x3f9e,
-  0x90a6, 0x3b7f,
-  0x90a7, 0x380b,
-  0x90a8, 0x3fef,
-  0x90a9, 0x3ffc,
-  0x90aa, 0x380d,
-  0x90ab, 0x3fed,
-  0x90ac, 0x3fe4,
-  0x90ad, 0x3811,
-  0x90ae, 0x3f7a,
-  0x90af, 0x3fa2,
-  0x90b0, 0x3b8e,
-  0x90b1, 0x381c,
-  0x90b2, 0x3fa0,
-  0x90b3, 0x3fe0,
-  0x90b4, 0x3d93,
-  0x90b5, 0x3827,
-  0x90b6, 0x3ff0,
-  0x90b7, 0x3fa5,
-  0x90b8, 0x3836,
-  0x90b9, 0x3d8d,
-  0x90ba, 0x3f69,
-  0x90bb, 0x3f82,
-  0x90bc, 0x3f85,
-  0x90bd, 0x3f83,
-  0x90be, 0x3f89,
-  0x90bf, 0x3f7f,
-  0x90c0, 0x3bb5,
-  0x90c1, 0x3f87,
-  0x90c2, 0x3f31,
-  0x90c3, 0x3d94,
-  0x90c4, 0x0230,
-  0x90c5, 0x43fe,
-  0x90c6, 0x3f10,
-  0x90c7, 0x387e,
-  0x90c8, 0x43eb,
-  0x90c9, 0x3f6f,
-  0x90ca, 0x3e9b,
-  0x90cb, 0x3f4e,
-  0x90cc, 0x3bc8,
-  0x90cd, 0x1e29,
-  0x90ce, 0x3f48,
-  0x90cf, 0x382e,
-  0x90d0, 0x3c60,
-  0x90d1, 0x2a9f,
-  0x90d2, 0x3893,
-  0x90d3, 0x43f7,
-  0x90d4, 0x3e74,
-  0x90d5, 0x3bcd,
-  0x90d6, 0x3ac9,
-  0x90d7, 0x3fcc,
-  0x90d8, 0x3fd1,
-  0x90d9, 0x3f3d,
-  0x90da, 0x3f4a,
-  0x90db, 0x38ad,
-  0x90dc, 0x2352,
-  0x90dd, 0x3f46,
-  0x90de, 0x38b2,
-  0x90df, 0x3fb3,
-  0x90e0, 0x3f0d,
-  0x90e1, 0x38c0,
-  0x90e2, 0x3e2f,
-  0x90e3, 0x38d5,
-  0x90e4, 0x3f35,
-  0x90e5, 0x38d7,
-  0x90e6, 0x3f2f,
-  0x90e7, 0x3f33,
-  0x90e8, 0x3d95,
-  0x90e9, 0x3c02,
-  0x90ea, 0x3f72,
-  0x90eb, 0x3d96,
-  0x90ec, 0x38e7,
-  0x90ed, 0x4035,
-  0x90ee, 0x3c0b,
-  0x90ef, 0x38f0,
-  0x90f0, 0x38f7,
-  0x90f1, 0x3fb9,
-  0x90f2, 0x3900,
-  0x90f3, 0x3f74,
-  0x90f4, 0x3909,
-  0x90f5, 0x3f12,
-  0x90f6, 0x3f17,
-  0x90f7, 0x3f20,
-  0x90f8, 0x3fbb,
-  0x90f9, 0x3f3c,
-  0x90fa, 0x3fb4,
-  0x90fb, 0x3fad,
-  0x90fc, 0x391a,
-  0x90fd, 0x391c,
-  0x90fe, 0x391b,
-  0x9140, 0x3c39,
-  0x9141, 0x3e71,
-  0x9142, 0x3d7e,
-  0x9143, 0x3f3b,
-  0x9144, 0x3f30,
-  0x9145, 0x3f84,
-  0x9146, 0x43f8,
-  0x9147, 0x3f0f,
-  0x9148, 0x3f76,
-  0x9149, 0x3933,
-  0x914a, 0x3f75,
-  0x914b, 0x3940,
-  0x914c, 0x3f21,
-  0x914d, 0x3f90,
-  0x914e, 0x394a,
-  0x914f, 0x3f80,
-  0x9150, 0x3f23,
-  0x9151, 0x3950,
-  0x9152, 0x3d97,
-  0x9153, 0x2e45,
-  0x9154, 0x0570,
-  0x9155, 0x3ead,
-  0x9156, 0x3522,
-  0x9157, 0x0be3,
-  0x9158, 0x0595,
-  0x9159, 0x0228,
-  0x915a, 0x0a95,
-  0x915b, 0x12b0,
-  0x915c, 0x091a,
-  0x915d, 0x43fc,
-  0x915e, 0x3f92,
-  0x915f, 0x3fae,
-  0x9160, 0x07c2,
-  0x9161, 0x0955,
-  0x9162, 0x3785,
-  0x9163, 0x3e6e,
-  0x9164, 0x3d6d,
-  0x9165, 0x3f62,
-  0x9166, 0x39c8,
-  0x9167, 0x3f65,
-  0x9168, 0x393d,
-  0x9169, 0x3f26,
-  0x916a, 0x406d,
-  0x916b, 0x3fd0,
-  0x916c, 0x3f36,
-  0x916d, 0x4086,
-  0x916e, 0x3952,
-  0x916f, 0x3fd2,
-  0x9170, 0x3858,
-  0x9171, 0x3ffb,
-  0x9172, 0x3f67,
-  0x9173, 0x3e81,
-  0x9174, 0x3fc9,
-  0x9175, 0x3fb5,
-  0x9176, 0x3e7c,
-  0x9177, 0x3e75,
-  0x9178, 0x3c77,
-  0x9179, 0x3b2e,
-  0x917a, 0x3f4d,
-  0x917b, 0x43af,
-  0x917c, 0x3e67,
-  0x917d, 0x40bd,
-  0x917e, 0x3f6c,
-  0x91a1, 0x39a6,
-  0x91a2, 0x3948,
-  0x91a3, 0x3fbf,
-  0x91a4, 0x3f5f,
-  0x91a5, 0x3a05,
-  0x91a6, 0x06f5,
-  0x91a7, 0x40f8,
-  0x91a8, 0x41ad,
-  0x91a9, 0x3f0e,
-  0x91aa, 0x4122,
-  0x91ab, 0x3f13,
-  0x91ac, 0x3f0b,
-  0x91ad, 0x4135,
-  0x91ae, 0x3a2b,
-  0x91af, 0x4138,
-  0x91b0, 0x0226,
-  0x91b1, 0x4149,
-  0x91b2, 0x3ba5,
-  0x91b3, 0x4001,
-  0x91b4, 0x3fbd,
-  0x91b5, 0x3fa8,
-  0x91b6, 0x4186,
-  0x91b7, 0x3a54,
-  0x91b8, 0x3fc2,
-  0x91b9, 0x4192,
-  0x91ba, 0x4187,
-  0x91bb, 0x3384,
-  0x91bc, 0x3fc4,
-  0x91bd, 0x3d99,
-  0x91be, 0x3aaa,
-  0x91bf, 0x41de,
-  0x91c1, 0x3ff6,
-  0x91c2, 0x3f5d,
-  0x91c3, 0x41c7,
-  0x91c4, 0x3d91,
-  0x91c5, 0x3d74,
-  0x91c6, 0x3f4c,
-  0x91c7, 0x41f2,
-  0x91c8, 0x3aa5,
-  0x91c9, 0x3b4b,
-  0x91ca, 0x3d86,
-  0x91cb, 0x41f8,
-  0x91cc, 0x4240,
-  0x91cd, 0x3ffd,
-  0x91ce, 0x3fa7,
-  0x91cf, 0x4259,
-  0x91d0, 0x0e72,
-  0x91d1, 0x4262,
-  0x91d2, 0x3c7e,
-  0x91d3, 0x3938,
-  0x91d4, 0x4233,
-  0x91d5, 0x295a,
-  0x91d7, 0x3f97,
-  0x91d8, 0x3fb2,
-  0x91d9, 0x428a,
-  0x91da, 0x3f98,
-  0x91db, 0x1f94,
-  0x91dc, 0x3f40,
-  0x91dd, 0x3f4f,
-  0x91de, 0x3f8f,
-  0x91df, 0x3d6f,
-  0x91e0, 0x42df,
-  0x91e1, 0x3f55,
-  0x91e2, 0x3fd3,
-  0x91e3, 0x42ee,
-  0x91e4, 0x3fcf,
-  0x91e5, 0x3fd4,
-  0x91e6, 0x3e7d,
-  0x91e7, 0x4307,
-  0x91e8, 0x43fb,
-  0x91e9, 0x3fda,
-  0x91ea, 0x0d0a,
-  0x91eb, 0x3f77,
-  0x91ec, 0x3dbf,
-  0x91ed, 0x402c,
-  0x91ee, 0x3fa4,
-  0x91ef, 0x3d6f,
-  0x91f0, 0x3ccd,
-  0x91f1, 0x3f64,
-  0x91f2, 0x3f8b,
-  0x91f3, 0x386f,
-  0x91f4, 0x1971,
-  0x91f5, 0x1c9b,
-  0x91f6, 0x0745,
-  0x91f7, 0x1d75,
-  0x91f8, 0x3888,
-  0x91f9, 0x3742,
-  0x91fa, 0x2b40,
-  0x91fb, 0x36e9,
-  0x91fc, 0x37e0,
-  0x91fd, 0x3e16,
-  0x91fe, 0x387c,
-  0x9240, 0x37aa,
-  0x9241, 0x3f8e,
-  0x9242, 0x40dc,
-  0x9243, 0x3c7a,
-  0x9244, 0x3fa6,
-  0x9245, 0x405f,
-  0x9246, 0x3c26,
-  0x9247, 0x385e,
-  0x9248, 0x3f25,
-  0x9249, 0x4048,
-  0x924a, 0x3d81,
-  0x924b, 0x390e,
-  0x924c, 0x4084,
-  0x924d, 0x4118,
-  0x924e, 0x4157,
-  0x924f, 0x3902,
-  0x9250, 0x389f,
-  0x9251, 0x3ff9,
-  0x9252, 0x3823,
-  0x9253, 0x3871,
-  0x9254, 0x36ea,
-  0x9255, 0x376c,
-  0x9256, 0x3740,
-  0x9257, 0x37f4,
-  0x9258, 0x42e0,
-  0x9259, 0x425b,
-  0x925a, 0x36ed,
-  0x925b, 0x3b14,
-  0x925c, 0x42c5,
-  0x925d, 0x408b,
-  0x925e, 0x38a5,
-  0x925f, 0x416a,
-  0x9260, 0x419d,
-  0x9261, 0x4144,
-  0x9262, 0x424f,
-  0x9263, 0x3f61,
-  0x9264, 0x3fd8,
-  0x9265, 0x061c,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKdlbB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKdlbB5VMap2, 920
-};
-
-static Gushort cns13HKgccsB5HMap2[1106] = {
-  0x0000, 0x0000,
-  0x8a40, 0x4308,
-  0x8aa1, 0x4347,
-  0x8b41, 0x438c,
-  0x8b45, 0x438e,
-  0x8b47, 0x438f,
-  0x8b49, 0x4390,
-  0x8b4b, 0x4391,
-  0x8b4d, 0x4392,
-  0x8b54, 0x4396,
-  0x8b58, 0x4397,
-  0x8b5a, 0x4398,
-  0x8e40, 0x372b,
-  0x8e46, 0x3730,
-  0x8e6c, 0x3755,
-  0x8e77, 0x375f,
-  0x8e7e, 0x0121,
-  0x8ea1, 0x3766,
-  0x8ea7, 0x376b,
-  0x8eca, 0x378d,
-  0x8ee6, 0x37a8,
-  0x8ef0, 0x37b1,
-  0x8f40, 0x37c0,
-  0x8f5a, 0x37d9,
-  0x8f60, 0x37de,
-  0x8f68, 0x37e5,
-  0x8fa1, 0x37fc,
-  0x8fc6, 0x3820,
-  0x8fc8, 0x3821,
-  0x8fdb, 0x3833,
-  0x8ffd, 0x3854,
-  0x9040, 0x3856,
-  0x905e, 0x3872,
-  0x9070, 0x3883,
-  0x907a, 0x36e9,
-  0x907b, 0x388d,
-  0x90a1, 0x3891,
-  0x90a7, 0x3896,
-  0x90b9, 0x38a7,
-  0x9140, 0x38ed,
-  0x9166, 0x3912,
-  0x916f, 0x391a,
-  0x91a1, 0x3929,
-  0x91a3, 0x392a,
-  0x9240, 0x3986,
-  0x92a1, 0x39c5,
-  0x92af, 0x0119,
-  0x92b1, 0x011c,
-  0x92b2, 0x011b,
-  0x92b3, 0x39d3,
-  0x92e6, 0x3a05,
-  0x92f3, 0x3a11,
-  0x9340, 0x3a1d,
-  0x9369, 0x3a45,
-  0x93a1, 0x3a5b,
-  0x93ab, 0x3a64,
-  0x93c3, 0x3a7b,
-  0x93e6, 0x3a9d,
-  0x93ec, 0x3aa2,
-  0x9440, 0x3ab5,
-  0x9447, 0x3abb,
-  0x94a1, 0x3af3,
-  0x9540, 0x3b51,
-  0x954e, 0x3b5e,
-  0x955b, 0x3b6a,
-  0x95a1, 0x3b8e,
-  0x95c7, 0x3bb3,
-  0x9640, 0x3beb,
-  0x96a1, 0x3c2a,
-  0x96d5, 0x3c5d,
-  0x9740, 0x3c87,
-  0x97a1, 0x3cc6,
-  0x9840, 0x3d24,
-  0x9877, 0x3d59,
-  0x987a, 0x3d5a,
-  0x98a3, 0x3d5b,
-  0x98af, 0x3d5c,
-  0x98b6, 0x3d5d,
-  0x98b9, 0x3d5e,
-  0x98bd, 0x3d5f,
-  0x98c2, 0x3d61,
-  0x98c4, 0x3d62,
-  0x98c6, 0x3d63,
-  0x98e3, 0x3d65,
-  0x98e7, 0x3d66,
-  0x98ed, 0x3d67,
-  0x98f0, 0x3d68,
-  0x98f2, 0x3d69,
-  0x98fc, 0x3d6a,
-  0x9943, 0x3d6b,
-  0x9945, 0x3d6c,
-  0x994f, 0x3d6d,
-  0x996a, 0x3d6e,
-  0x996e, 0x3d6f,
-  0x9975, 0x3d70,
-  0x9978, 0x3d71,
-  0x99a2, 0x3d72,
-  0x99ae, 0x3d73,
-  0x99b6, 0x3d74,
-  0x99ba, 0x3d75,
-  0x99e2, 0x3d76,
-  0x99f4, 0x3d77,
-  0x9a4a, 0x3d78,
-  0x9a4c, 0x3d79,
-  0x9a59, 0x3d7a,
-  0x9a61, 0x3d7b,
-  0x9a68, 0x3d7c,
-  0x9a73, 0x3d7d,
-  0x9a7e, 0x3d7e,
-  0x9ab2, 0x3d7f,
-  0x9ab7, 0x3d80,
-  0x9ab9, 0x3d81,
-  0x9abb, 0x3d82,
-  0x9ac7, 0x3d83,
-  0x9ad0, 0x3d84,
-  0x9ad2, 0x3d85,
-  0x9ad9, 0x3d86,
-  0x9ae2, 0x3d89,
-  0x9ae4, 0x3d8a,
-  0x9ae8, 0x3d8b,
-  0x9af2, 0x3d8c,
-  0x9af6, 0x3d8d,
-  0x9afb, 0x3d8e,
-  0x9b46, 0x3d8f,
-  0x9b4a, 0x3d90,
-  0x9b4c, 0x3d91,
-  0x9b54, 0x3d92,
-  0x9b58, 0x3d93,
-  0x9b5a, 0x3d94,
-  0x9b5c, 0x3d95,
-  0x9b5e, 0x3d96,
-  0x9b70, 0x3d98,
-  0x9b76, 0x3d9c,
-  0x9b7b, 0x3d9f,
-  0x9b7e, 0x3da1,
-  0x9ba1, 0x3da2,
-  0x9ba3, 0x3da3,
-  0x9ba7, 0x3da5,
-  0x9bac, 0x3da9,
-  0x9baf, 0x3daa,
-  0x9bb2, 0x3dab,
-  0x9bbe, 0x3db3,
-  0x9bc0, 0x3db4,
-  0x9bca, 0x3dbb,
-  0x9bcc, 0x3dbc,
-  0x9bd0, 0x3dbd,
-  0x9bd3, 0x3dbf,
-  0x9bd5, 0x3dc0,
-  0x9bd8, 0x3dc1,
-  0x9bdd, 0x3dc4,
-  0x9bde, 0x1c14,
-  0x9bdf, 0x3dc5,
-  0x9be1, 0x3dc6,
-  0x9be3, 0x3dc7,
-  0x9be7, 0x3dc8,
-  0x9be9, 0x3dc9,
-  0x9bee, 0x3dcd,
-  0x9bf3, 0x3dcf,
-  0x9bf6, 0x3dd0,
-  0x9bf8, 0x3dd1,
-  0x9bfb, 0x3dd3,
-  0x9c40, 0x3dd5,
-  0x9c44, 0x3dd8,
-  0x9c48, 0x3ddb,
-  0x9c4a, 0x3ddc,
-  0x9c4d, 0x3ddd,
-  0x9c55, 0x3de4,
-  0x9c57, 0x3de5,
-  0x9c5d, 0x3dea,
-  0x9c60, 0x3deb,
-  0x9c62, 0x3dec,
-  0x9c64, 0x3ded,
-  0x9c68, 0x3df0,
-  0x9c6a, 0x3df1,
-  0x9c6b, 0x346a,
-  0x9c6d, 0x3df2,
-  0x9c6f, 0x3df3,
-  0x9c75, 0x3df7,
-  0x9c79, 0x3dfa,
-  0x9c7b, 0x3dfb,
-  0x9c7e, 0x3dfd,
-  0x9ca1, 0x3dfe,
-  0x9ca5, 0x3e00,
-  0x9ca8, 0x3e01,
-  0x9cab, 0x3e03,
-  0x9cad, 0x3e04,
-  0x9cb1, 0x3e06,
-  0x9cbc, 0x3e10,
-  0x9cc6, 0x3e17,
-  0x9ccf, 0x3e1f,
-  0x9cd8, 0x3e24,
-  0x9cdc, 0x3e27,
-  0x9ce7, 0x3e31,
-  0x9ceb, 0x3e34,
-  0x9cee, 0x3e36,
-  0x9cfd, 0x3e42,
-  0x9d46, 0x3e43,
-  0x9d49, 0x3e44,
-  0x9d4c, 0x3e46,
-  0x9d4f, 0x3e48,
-  0x9d51, 0x3e49,
-  0x9d55, 0x3e4a,
-  0x9d57, 0x25c1,
-  0x9d5a, 0x3e4b,
-  0x9d62, 0x3e4c,
-  0x9d64, 0x3e4d,
-  0x9d79, 0x3e4e,
-  0x9d7e, 0x3e4f,
-  0x9da5, 0x3e50,
-  0x9daa, 0x3e54,
-  0x9dac, 0x3e55,
-  0x9db0, 0x3e58,
-  0x9db3, 0x3e59,
-  0x9db5, 0x3e5a,
-  0x9db7, 0x3e5b,
-  0x9dbc, 0x3e5c,
-  0x9dbf, 0x3e5e,
-  0x9dc3, 0x3e60,
-  0x9dc7, 0x3e62,
-  0x9dca, 0x3e64,
-  0x9dcd, 0x3e65,
-  0x9dd3, 0x3e6a,
-  0x9dda, 0x3e6d,
-  0x9dfd, 0x3e8f,
-  0x9e40, 0x3e91,
-  0x9e64, 0x3eb4,
-  0x9e68, 0x3eb6,
-  0x9e6a, 0x3eb7,
-  0x9e71, 0x3eb8,
-  0x9e73, 0x3eb9,
-  0x9e77, 0x3eba,
-  0x9e7a, 0x3ebc,
-  0x9e7c, 0x3ebd,
-  0x9e7e, 0x3ebe,
-  0x9ea1, 0x3ebf,
-  0x9ea4, 0x3ec1,
-  0x9ea9, 0x3ec4,
-  0x9eac, 0x3ec6,
-  0x9eaf, 0x3ec8,
-  0x9eb4, 0x3ecb,
-  0x9eb6, 0x3ecc,
-  0x9eb9, 0x3ece,
-  0x9ebc, 0x3ecf,
-  0x9ebf, 0x3ed0,
-  0x9ec4, 0x3ed2,
-  0x9ec7, 0x3ed4,
-  0x9ecc, 0x3ed8,
-  0x9ed0, 0x3eda,
-  0x9ed3, 0x3edc,
-  0x9ed6, 0x3edd,
-  0x9eda, 0x3edf,
-  0x9ef3, 0x3ef7,
-  0x9ef9, 0x3efa,
-  0x9efc, 0x3efc,
-  0x9f40, 0x3eff,
-  0x9f44, 0x3f02,
-  0x9f49, 0x3f06,
-  0x9f4d, 0x3f08,
-  0x9f69, 0x3f23,
-  0x9f71, 0x3f2a,
-  0x9fa1, 0x3f38,
-  0x9fb6, 0x3f4c,
-  0x9fbc, 0x3f51,
-  0x9fc0, 0x3f54,
-  0x9fc2, 0x3f55,
-  0x9fe5, 0x3f77,
-  0x9ffa, 0x3f8b,
-  0xa041, 0x3f90,
-  0xa048, 0x3f96,
-  0xa056, 0x3fa3,
-  0xa06e, 0x3fba,
-  0xa07c, 0x3fc7,
-  0xa0a1, 0x3fca,
-  0xa0a3, 0x3fcb,
-  0xa0a8, 0x3fcf,
-  0xa0c6, 0x3fec,
-  0xa0d1, 0x3ff6,
-  0xa0e4, 0x4008,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xfa40, 0x400b,
-  0xfaa1, 0x404a,
-  0xfb40, 0x40a8,
-  0xfba1, 0x40e7,
-  0xfbc0, 0x4105,
-  0xfbce, 0x4112,
-  0xfc40, 0x4143,
-  0xfc4b, 0x414d,
-  0xfc4f, 0x212f,
-  0xfc50, 0x4151,
-  0xfc53, 0x4153,
-  0xfc64, 0x4163,
-  0xfc76, 0x4174,
-  0xfca1, 0x417d,
-  0xfcb9, 0x115f,
-  0xfcba, 0x4195,
-  0xfcbd, 0x4197,
-  0xfce4, 0x41bd,
-  0xfcef, 0x41c7,
-  0xfd40, 0x41d7,
-  0xfd4a, 0x41e0,
-  0xfda1, 0x4215,
-  0xfdf3, 0x4266,
-  0xfe40, 0x4272,
-  0xfe6e, 0x429f,
-  0xfe79, 0x42a9,
-  0xfea1, 0x42af,
-  0xfeaa, 0x0120,
-  0xfeab, 0x42b8,
-  0xfee0, 0x42eb,
-  0xfeef, 0x42f8,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKgccsB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKgccsB5HMap2, 553
-};
-
-static Gushort cns13HKgccsB5VMap2[1130] = {
-  0x0000, 0x0000,
-  0x8a40, 0x4308,
-  0x8aa1, 0x4347,
-  0x8b41, 0x438c,
-  0x8b45, 0x438e,
-  0x8b47, 0x438f,
-  0x8b49, 0x4390,
-  0x8b4b, 0x4391,
-  0x8b4d, 0x4392,
-  0x8b54, 0x4396,
-  0x8b58, 0x4397,
-  0x8b5a, 0x4398,
-  0x8e40, 0x372b,
-  0x8e46, 0x3730,
-  0x8e6c, 0x3755,
-  0x8e77, 0x375f,
-  0x8e7e, 0x0121,
-  0x8ea1, 0x3766,
-  0x8ea7, 0x376b,
-  0x8eca, 0x378d,
-  0x8ee6, 0x37a8,
-  0x8ef0, 0x37b1,
-  0x8f40, 0x37c0,
-  0x8f5a, 0x37d9,
-  0x8f60, 0x37de,
-  0x8f68, 0x37e5,
-  0x8fa1, 0x37fc,
-  0x8fc6, 0x3820,
-  0x8fc8, 0x3821,
-  0x8fdb, 0x3833,
-  0x8ffd, 0x3854,
-  0x9040, 0x3856,
-  0x905e, 0x3872,
-  0x9070, 0x3883,
-  0x907a, 0x36e9,
-  0x907b, 0x388d,
-  0x90a1, 0x3891,
-  0x90a7, 0x3896,
-  0x90b9, 0x38a7,
-  0x9140, 0x38ed,
-  0x9166, 0x3912,
-  0x916f, 0x391a,
-  0x91a1, 0x3929,
-  0x91a3, 0x392a,
-  0x9240, 0x3986,
-  0x92a1, 0x39c5,
-  0x92af, 0x0119,
-  0x92b1, 0x011c,
-  0x92b2, 0x011b,
-  0x92b3, 0x39d3,
-  0x92e6, 0x3a05,
-  0x92f3, 0x3a11,
-  0x9340, 0x3a1d,
-  0x9369, 0x3a45,
-  0x93a1, 0x3a5b,
-  0x93ab, 0x3a64,
-  0x93c3, 0x3a7b,
-  0x93e6, 0x3a9d,
-  0x93ec, 0x3aa2,
-  0x9440, 0x3ab5,
-  0x9447, 0x3abb,
-  0x94a1, 0x3af3,
-  0x9540, 0x3b51,
-  0x954e, 0x3b5e,
-  0x955b, 0x3b6a,
-  0x95a1, 0x3b8e,
-  0x95c7, 0x3bb3,
-  0x9640, 0x3beb,
-  0x96a1, 0x3c2a,
-  0x96d5, 0x3c5d,
-  0x9740, 0x3c87,
-  0x97a1, 0x3cc6,
-  0x9840, 0x3d24,
-  0x9877, 0x3d59,
-  0x987a, 0x3d5a,
-  0x98a3, 0x3d5b,
-  0x98af, 0x3d5c,
-  0x98b6, 0x3d5d,
-  0x98b9, 0x3d5e,
-  0x98bd, 0x3d5f,
-  0x98c2, 0x3d61,
-  0x98c4, 0x3d62,
-  0x98c6, 0x3d63,
-  0x98e3, 0x3d65,
-  0x98e7, 0x3d66,
-  0x98ed, 0x3d67,
-  0x98f0, 0x3d68,
-  0x98f2, 0x3d69,
-  0x98fc, 0x3d6a,
-  0x9943, 0x3d6b,
-  0x9945, 0x3d6c,
-  0x994f, 0x3d6d,
-  0x996a, 0x3d6e,
-  0x996e, 0x3d6f,
-  0x9975, 0x3d70,
-  0x9978, 0x3d71,
-  0x99a2, 0x3d72,
-  0x99ae, 0x3d73,
-  0x99b6, 0x3d74,
-  0x99ba, 0x3d75,
-  0x99e2, 0x3d76,
-  0x99f4, 0x3d77,
-  0x9a4a, 0x3d78,
-  0x9a4c, 0x3d79,
-  0x9a59, 0x3d7a,
-  0x9a61, 0x3d7b,
-  0x9a68, 0x3d7c,
-  0x9a73, 0x3d7d,
-  0x9a7e, 0x3d7e,
-  0x9ab2, 0x3d7f,
-  0x9ab7, 0x3d80,
-  0x9ab9, 0x3d81,
-  0x9abb, 0x3d82,
-  0x9ac7, 0x3d83,
-  0x9ad0, 0x3d84,
-  0x9ad2, 0x3d85,
-  0x9ad9, 0x3d86,
-  0x9ae2, 0x3d89,
-  0x9ae4, 0x3d8a,
-  0x9ae8, 0x3d8b,
-  0x9af2, 0x3d8c,
-  0x9af6, 0x3d8d,
-  0x9afb, 0x3d8e,
-  0x9b46, 0x3d8f,
-  0x9b4a, 0x3d90,
-  0x9b4c, 0x3d91,
-  0x9b54, 0x3d92,
-  0x9b58, 0x3d93,
-  0x9b5a, 0x3d94,
-  0x9b5c, 0x3d95,
-  0x9b5e, 0x3d96,
-  0x9b70, 0x3d98,
-  0x9b76, 0x3d9c,
-  0x9b7b, 0x3d9f,
-  0x9b7e, 0x3da1,
-  0x9ba1, 0x3da2,
-  0x9ba3, 0x3da3,
-  0x9ba7, 0x3da5,
-  0x9bac, 0x3da9,
-  0x9baf, 0x3daa,
-  0x9bb2, 0x3dab,
-  0x9bbe, 0x3db3,
-  0x9bc0, 0x3db4,
-  0x9bca, 0x3dbb,
-  0x9bcc, 0x3dbc,
-  0x9bd0, 0x3dbd,
-  0x9bd3, 0x3dbf,
-  0x9bd5, 0x3dc0,
-  0x9bd8, 0x3dc1,
-  0x9bdd, 0x3dc4,
-  0x9bde, 0x1c14,
-  0x9bdf, 0x3dc5,
-  0x9be1, 0x3dc6,
-  0x9be3, 0x3dc7,
-  0x9be7, 0x3dc8,
-  0x9be9, 0x3dc9,
-  0x9bee, 0x3dcd,
-  0x9bf3, 0x3dcf,
-  0x9bf6, 0x3dd0,
-  0x9bf8, 0x3dd1,
-  0x9bfb, 0x3dd3,
-  0x9c40, 0x3dd5,
-  0x9c44, 0x3dd8,
-  0x9c48, 0x3ddb,
-  0x9c4a, 0x3ddc,
-  0x9c4d, 0x3ddd,
-  0x9c55, 0x3de4,
-  0x9c57, 0x3de5,
-  0x9c5d, 0x3dea,
-  0x9c60, 0x3deb,
-  0x9c62, 0x3dec,
-  0x9c64, 0x3ded,
-  0x9c68, 0x3df0,
-  0x9c6a, 0x3df1,
-  0x9c6b, 0x346a,
-  0x9c6d, 0x3df2,
-  0x9c6f, 0x3df3,
-  0x9c75, 0x3df7,
-  0x9c79, 0x3dfa,
-  0x9c7b, 0x3dfb,
-  0x9c7e, 0x3dfd,
-  0x9ca1, 0x3dfe,
-  0x9ca5, 0x3e00,
-  0x9ca8, 0x3e01,
-  0x9cab, 0x3e03,
-  0x9cad, 0x3e04,
-  0x9cb1, 0x3e06,
-  0x9cbc, 0x3e10,
-  0x9cc6, 0x3e17,
-  0x9ccf, 0x3e1f,
-  0x9cd8, 0x3e24,
-  0x9cdc, 0x3e27,
-  0x9ce7, 0x3e31,
-  0x9ceb, 0x3e34,
-  0x9cee, 0x3e36,
-  0x9cfd, 0x3e42,
-  0x9d46, 0x3e43,
-  0x9d49, 0x3e44,
-  0x9d4c, 0x3e46,
-  0x9d4f, 0x3e48,
-  0x9d51, 0x3e49,
-  0x9d55, 0x3e4a,
-  0x9d57, 0x25c1,
-  0x9d5a, 0x3e4b,
-  0x9d62, 0x3e4c,
-  0x9d64, 0x3e4d,
-  0x9d79, 0x3e4e,
-  0x9d7e, 0x3e4f,
-  0x9da5, 0x3e50,
-  0x9daa, 0x3e54,
-  0x9dac, 0x3e55,
-  0x9db0, 0x3e58,
-  0x9db3, 0x3e59,
-  0x9db5, 0x3e5a,
-  0x9db7, 0x3e5b,
-  0x9dbc, 0x3e5c,
-  0x9dbf, 0x3e5e,
-  0x9dc3, 0x3e60,
-  0x9dc7, 0x3e62,
-  0x9dca, 0x3e64,
-  0x9dcd, 0x3e65,
-  0x9dd3, 0x3e6a,
-  0x9dda, 0x3e6d,
-  0x9dfd, 0x3e8f,
-  0x9e40, 0x3e91,
-  0x9e64, 0x3eb4,
-  0x9e68, 0x3eb6,
-  0x9e6a, 0x3eb7,
-  0x9e71, 0x3eb8,
-  0x9e73, 0x3eb9,
-  0x9e77, 0x3eba,
-  0x9e7a, 0x3ebc,
-  0x9e7c, 0x3ebd,
-  0x9e7e, 0x3ebe,
-  0x9ea1, 0x3ebf,
-  0x9ea4, 0x3ec1,
-  0x9ea9, 0x3ec4,
-  0x9eac, 0x3ec6,
-  0x9eaf, 0x3ec8,
-  0x9eb4, 0x3ecb,
-  0x9eb6, 0x3ecc,
-  0x9eb9, 0x3ece,
-  0x9ebc, 0x3ecf,
-  0x9ebf, 0x3ed0,
-  0x9ec4, 0x3ed2,
-  0x9ec7, 0x3ed4,
-  0x9ecc, 0x3ed8,
-  0x9ed0, 0x3eda,
-  0x9ed3, 0x3edc,
-  0x9ed6, 0x3edd,
-  0x9eda, 0x3edf,
-  0x9ef3, 0x3ef7,
-  0x9ef9, 0x3efa,
-  0x9efc, 0x3efc,
-  0x9f40, 0x3eff,
-  0x9f44, 0x3f02,
-  0x9f49, 0x3f06,
-  0x9f4d, 0x3f08,
-  0x9f69, 0x3f23,
-  0x9f71, 0x3f2a,
-  0x9fa1, 0x3f38,
-  0x9fb6, 0x3f4c,
-  0x9fbc, 0x3f51,
-  0x9fc0, 0x3f54,
-  0x9fc2, 0x3f55,
-  0x9fe5, 0x3f77,
-  0x9ffa, 0x3f8b,
-  0xa041, 0x3f90,
-  0xa048, 0x3f96,
-  0xa056, 0x3fa3,
-  0xa06e, 0x3fba,
-  0xa07c, 0x3fc7,
-  0xa0a1, 0x3fca,
-  0xa0a3, 0x3fcb,
-  0xa0a8, 0x3fcf,
-  0xa0c6, 0x3fec,
-  0xa0d1, 0x3ff6,
-  0xa0e4, 0x4008,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xfa40, 0x400b,
-  0xfaa1, 0x404a,
-  0xfb40, 0x40a8,
-  0xfba1, 0x40e7,
-  0xfbc0, 0x4105,
-  0xfbce, 0x4112,
-  0xfc40, 0x4143,
-  0xfc4b, 0x414d,
-  0xfc4f, 0x212f,
-  0xfc50, 0x4151,
-  0xfc53, 0x4153,
-  0xfc64, 0x4163,
-  0xfc76, 0x4174,
-  0xfca1, 0x417d,
-  0xfcb9, 0x115f,
-  0xfcba, 0x4195,
-  0xfcbd, 0x4197,
-  0xfce4, 0x41bd,
-  0xfcef, 0x41c7,
-  0xfd40, 0x41d7,
-  0xfd4a, 0x41e0,
-  0xfda1, 0x4215,
-  0xfdf3, 0x4266,
-  0xfe40, 0x4272,
-  0xfe6e, 0x429f,
-  0xfe79, 0x42a9,
-  0xfea1, 0x42af,
-  0xfeaa, 0x0120,
-  0xfeab, 0x42b8,
-  0xfee0, 0x42eb,
-  0xfeef, 0x42f8,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKgccsB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKgccsB5VMap2, 565
-};
-
-static Gushort cns13HKm314B5HMap2[1086] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc740, 0x3d6d,
-  0xc741, 0x39c4,
-  0xc742, 0x4399,
-  0xc743, 0x3e05,
-  0xc744, 0x36ea,
-  0xc745, 0x39c8,
-  0xc746, 0x393d,
-  0xc747, 0x439b,
-  0xc748, 0x4022,
-  0xc749, 0x439d,
-  0xc74a, 0x4034,
-  0xc74b, 0x439f,
-  0xc74c, 0x3ea3,
-  0xc74d, 0x3ea6,
-  0xc74e, 0x4051,
-  0xc74f, 0x4048,
-  0xc751, 0x404b,
-  0xc752, 0x404f,
-  0xc753, 0x43a2,
-  0xc754, 0x405a,
-  0xc755, 0x3ea4,
-  0xc756, 0x3dbd,
-  0xc757, 0x3dbf,
-  0xc758, 0x405c,
-  0xc759, 0x405f,
-  0xc75a, 0x43a4,
-  0xc75b, 0x407b,
-  0xc75c, 0x4082,
-  0xc75d, 0x3f6d,
-  0xc75e, 0x408b,
-  0xc75f, 0x43a6,
-  0xc760, 0x4093,
-  0xc761, 0x4096,
-  0xc762, 0x43a7,
-  0xc763, 0x4098,
-  0xc764, 0x3e7f,
-  0xc765, 0x3c77,
-  0xc766, 0x3ea7,
-  0xc767, 0x3e8a,
-  0xc768, 0x3e98,
-  0xc769, 0x3e8c,
-  0xc76a, 0x40a1,
-  0xc76b, 0x3a00,
-  0xc76c, 0x39a3,
-  0xc76d, 0x3e8d,
-  0xc76e, 0x43a8,
-  0xc76f, 0x3f58,
-  0xc770, 0x3dbc,
-  0xc771, 0x3ccc,
-  0xc772, 0x3ea8,
-  0xc774, 0x3b2e,
-  0xc775, 0x3bc6,
-  0xc776, 0x3e8b,
-  0xc777, 0x3e9f,
-  0xc778, 0x432c,
-  0xc779, 0x43a9,
-  0xc77a, 0x3f08,
-  0xc77b, 0x3ea5,
-  0xc77c, 0x3e89,
-  0xc77d, 0x3dc3,
-  0xc77e, 0x3e82,
-  0xc7a1, 0x3e81,
-  0xc7a2, 0x3e94,
-  0xc7a3, 0x3e83,
-  0xc7a4, 0x3e88,
-  0xc7a5, 0x43ab,
-  0xc7a6, 0x3e91,
-  0xc7a7, 0x43ac,
-  0xc7a8, 0x3e7c,
-  0xc7a9, 0x3e80,
-  0xc7aa, 0x3e8f,
-  0xc7ab, 0x3e67,
-  0xc7ac, 0x3e78,
-  0xc7ad, 0x3e68,
-  0xc7ae, 0x43ad,
-  0xc7af, 0x37d2,
-  0xc7b0, 0x3f4d,
-  0xc7b1, 0x43ae,
-  0xc7b2, 0x3e7e,
-  0xc7b3, 0x40bc,
-  0xc7b4, 0x3e63,
-  0xc7b5, 0x40bd,
-  0xc7b6, 0x43af,
-  0xc7b7, 0x40b7,
-  0xc7b8, 0x3eb7,
-  0xc7b9, 0x3eed,
-  0xc7ba, 0x3f6a,
-  0xc7bb, 0x3e95,
-  0xc7bc, 0x3948,
-  0xc7bd, 0x3cc8,
-  0xc7be, 0x43b1,
-  0xc7c0, 0x40cc,
-  0xc7c1, 0x3e86,
-  0xc7c2, 0x3c7a,
-  0xc7c3, 0x3c7d,
-  0xc7c4, 0x43b4,
-  0xc7c5, 0x40d1,
-  0xc7c6, 0x3d72,
-  0xc7c7, 0x3c26,
-  0xc7c8, 0x36eb,
-  0xc7c9, 0x40bf,
-  0xc7ca, 0x4100,
-  0xc7cb, 0x3c85,
-  0xc7cc, 0x43b5,
-  0xc7cd, 0x3a1d,
-  0xc7ce, 0x37f5,
-  0xc7cf, 0x36ee,
-  0xc7d0, 0x3e5f,
-  0xc7d1, 0x4116,
-  0xc7d2, 0x411f,
-  0xc7d3, 0x4118,
-  0xc7d4, 0x4123,
-  0xc7d5, 0x4127,
-  0xc7d6, 0x4129,
-  0xc7d7, 0x43bc,
-  0xc7d9, 0x3e8e,
-  0xc7da, 0x386f,
-  0xc7db, 0x4143,
-  0xc7dc, 0x4146,
-  0xc7dd, 0x4144,
-  0xc7de, 0x4149,
-  0xc7df, 0x3ba5,
-  0xc7e0, 0x4157,
-  0xc7e1, 0x4161,
-  0xc7e2, 0x36ec,
-  0xc7e3, 0x416a,
-  0xc7e4, 0x4002,
-  0xc7e5, 0x4186,
-  0xc7e6, 0x3fba,
-  0xc7e7, 0x3f50,
-  0xc7e8, 0x3e96,
-  0xc7e9, 0x418a,
-  0xc7ea, 0x3fc1,
-  0xc7eb, 0x3d8f,
-  0xc7ec, 0x43c1,
-  0xc7ed, 0x3ea0,
-  0xc7ee, 0x3f16,
-  0xc7ef, 0x3e9d,
-  0xc7f0, 0x4192,
-  0xc7f1, 0x3a66,
-  0xc7f2, 0x3e9c,
-  0xc7f3, 0x3e90,
-  0xc7f4, 0x419d,
-  0xc7f5, 0x43c2,
-  0xc7f7, 0x37a8,
-  0xc7f8, 0x419e,
-  0xc7f9, 0x4187,
-  0xc7fa, 0x3ea2,
-  0xc7fb, 0x3e87,
-  0xc7fc, 0x3e84,
-  0xc7fd, 0x3eae,
-  0xc7fe, 0x3b74,
-  0xc840, 0x3b75,
-  0xc841, 0x3b72,
-  0xc842, 0x3eb2,
-  0xc843, 0x3eac,
-  0xc844, 0x41ca,
-  0xc845, 0x41f4,
-  0xc846, 0x41d0,
-  0xc847, 0x3aaa,
-  0xc848, 0x41f5,
-  0xc849, 0x41f8,
-  0xc84a, 0x41fb,
-  0xc84b, 0x4205,
-  0xc84c, 0x3d8e,
-  0xc84d, 0x420e,
-  0xc84e, 0x3d63,
-  0xc84f, 0x4222,
-  0xc850, 0x4221,
-  0xc851, 0x4223,
-  0xc852, 0x4069,
-  0xc853, 0x402f,
-  0xc854, 0x38a5,
-  0xc855, 0x3cf5,
-  0xc856, 0x3d69,
-  0xc857, 0x425b,
-  0xc858, 0x3ac8,
-  0xc859, 0x3dc0,
-  0xc85a, 0x39ea,
-  0xc85b, 0x4000,
-  0xc85c, 0x4264,
-  0xc85d, 0x4262,
-  0xc85e, 0x3fff,
-  0xc85f, 0x3e9a,
-  0xc860, 0x4273,
-  0xc861, 0x3969,
-  0xc862, 0x427a,
-  0xc863, 0x43ca,
-  0xc864, 0x3f9a,
-  0xc865, 0x3eb5,
-  0xc866, 0x43cb,
-  0xc868, 0x3fb2,
-  0xc869, 0x428a,
-  0xc86c, 0x3adf,
-  0xc86d, 0x42c8,
-  0xc86e, 0x3ead,
-  0xc86f, 0x43ce,
-  0xc870, 0x3f8f,
-  0xc871, 0x43cf,
-  0xc872, 0x3e72,
-  0xc873, 0x3eaa,
-  0xc874, 0x43d3,
-  0xc875, 0x42e0,
-  0xc876, 0x382d,
-  0xc877, 0x3fd5,
-  0xc878, 0x3b14,
-  0xc879, 0x36e8,
-  0xc87a, 0x42f0,
-  0xc87b, 0x3e7d,
-  0xc87c, 0x42fe,
-  0xc87d, 0x4305,
-  0xc87e, 0x373a,
-  0xc8a1, 0x3746,
-  0xc8a2, 0x3752,
-  0xc8a3, 0x36ed,
-  0xc8a4, 0x3b4a,
-  0xc8a5, 0x3b45,
-  0xc8a6, 0x43da,
-  0xc8a7, 0x3ede,
-  0xc8a8, 0x376c,
-  0xc8a9, 0x376b,
-  0xc8aa, 0x3782,
-  0xc8ab, 0x3e69,
-  0xc8ac, 0x3b4f,
-  0xc8ad, 0x3786,
-  0xc8ae, 0x43db,
-  0xc8af, 0x3788,
-  0xc8b0, 0x43dc,
-  0xc8b1, 0x3ecd,
-  0xc8b2, 0x3797,
-  0xc8b3, 0x420d,
-  0xc8b4, 0x37d8,
-  0xc8b5, 0x3b71,
-  0xc8b6, 0x38dc,
-  0xc8b7, 0x37e0,
-  0xc8b8, 0x37f4,
-  0xc8b9, 0x3813,
-  0xc8ba, 0x3eb0,
-  0xc8bb, 0x380d,
-  0xc8bc, 0x3eaf,
-  0xc8bd, 0x381b,
-  0xc8bf, 0x381e,
-  0xc8c1, 0x3eb1,
-  0xc8c2, 0x3fe9,
-  0xc8c3, 0x43e4,
-  0xc8c4, 0x3ff9,
-  0xc8c5, 0x3e59,
-  0xc8c6, 0x3e99,
-  0xc8c7, 0x3e5e,
-  0xc8c8, 0x3bb4,
-  0xc8c9, 0x3eab,
-  0xc8ca, 0x43e7,
-  0xc8cc, 0x385e,
-  0xc8cd, 0x43e9,
-  0xc8ce, 0x3dbe,
-  0xc8cf, 0x3e85,
-  0xc8d0, 0x3863,
-  0xc8d2, 0x3d6c,
-  0xc8d3, 0x3871,
-  0xc8d4, 0x387c,
-  0xc8d5, 0x3882,
-  0xc8d6, 0x3e9b,
-  0xc8d7, 0x3888,
-  0xc8d8, 0x3c0e,
-  0xc8d9, 0x382e,
-  0xc8da, 0x389a,
-  0xc8db, 0x388b,
-  0xc8dc, 0x3c04,
-  0xc8dd, 0x36e9,
-  0xc8de, 0x42bd,
-  0xc8df, 0x3bcd,
-  0xc8e0, 0x389f,
-  0xc8e1, 0x379b,
-  0xc8e2, 0x38af,
-  0xc8e3, 0x3e97,
-  0xc8e4, 0x38f0,
-  0xc8e5, 0x3bfd,
-  0xc8e6, 0x3c11,
-  0xc8e8, 0x43ef,
-  0xc8e9, 0x3785,
-  0xc8ea, 0x3902,
-  0xc8eb, 0x3faa,
-  0xc8ec, 0x3f19,
-  0xc8ed, 0x3919,
-  0xc8ee, 0x43f1,
-  0xc8ef, 0x391a,
-  0xc8f1, 0x3e66,
-  0xc8f2, 0x3f22,
-  0xc8f3, 0x3d7e,
-  0xc8f4, 0x3c39,
-  0xc8f5, 0x3ea1,
-  0xc8f6, 0x43f2,
-  0xc8f8, 0x3f30,
-  0xc8f9, 0x3929,
-  0xc8fa, 0x3fbc,
-  0xc8fb, 0x3936,
-  0xc8fd, 0x3f90,
-  0xc8fe, 0x0aba,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKm314B5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKm314B5HMap2, 543
-};
-
-static Gushort cns13HKm314B5VMap2[1110] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc740, 0x3d6d,
-  0xc741, 0x39c4,
-  0xc742, 0x4399,
-  0xc743, 0x3e05,
-  0xc744, 0x36ea,
-  0xc745, 0x39c8,
-  0xc746, 0x393d,
-  0xc747, 0x439b,
-  0xc748, 0x4022,
-  0xc749, 0x439d,
-  0xc74a, 0x4034,
-  0xc74b, 0x439f,
-  0xc74c, 0x3ea3,
-  0xc74d, 0x3ea6,
-  0xc74e, 0x4051,
-  0xc74f, 0x4048,
-  0xc751, 0x404b,
-  0xc752, 0x404f,
-  0xc753, 0x43a2,
-  0xc754, 0x405a,
-  0xc755, 0x3ea4,
-  0xc756, 0x3dbd,
-  0xc757, 0x3dbf,
-  0xc758, 0x405c,
-  0xc759, 0x405f,
-  0xc75a, 0x43a4,
-  0xc75b, 0x407b,
-  0xc75c, 0x4082,
-  0xc75d, 0x3f6d,
-  0xc75e, 0x408b,
-  0xc75f, 0x43a6,
-  0xc760, 0x4093,
-  0xc761, 0x4096,
-  0xc762, 0x43a7,
-  0xc763, 0x4098,
-  0xc764, 0x3e7f,
-  0xc765, 0x3c77,
-  0xc766, 0x3ea7,
-  0xc767, 0x3e8a,
-  0xc768, 0x3e98,
-  0xc769, 0x3e8c,
-  0xc76a, 0x40a1,
-  0xc76b, 0x3a00,
-  0xc76c, 0x39a3,
-  0xc76d, 0x3e8d,
-  0xc76e, 0x43a8,
-  0xc76f, 0x3f58,
-  0xc770, 0x3dbc,
-  0xc771, 0x3ccc,
-  0xc772, 0x3ea8,
-  0xc774, 0x3b2e,
-  0xc775, 0x3bc6,
-  0xc776, 0x3e8b,
-  0xc777, 0x3e9f,
-  0xc778, 0x432c,
-  0xc779, 0x43a9,
-  0xc77a, 0x3f08,
-  0xc77b, 0x3ea5,
-  0xc77c, 0x3e89,
-  0xc77d, 0x3dc3,
-  0xc77e, 0x3e82,
-  0xc7a1, 0x3e81,
-  0xc7a2, 0x3e94,
-  0xc7a3, 0x3e83,
-  0xc7a4, 0x3e88,
-  0xc7a5, 0x43ab,
-  0xc7a6, 0x3e91,
-  0xc7a7, 0x43ac,
-  0xc7a8, 0x3e7c,
-  0xc7a9, 0x3e80,
-  0xc7aa, 0x3e8f,
-  0xc7ab, 0x3e67,
-  0xc7ac, 0x3e78,
-  0xc7ad, 0x3e68,
-  0xc7ae, 0x43ad,
-  0xc7af, 0x37d2,
-  0xc7b0, 0x3f4d,
-  0xc7b1, 0x43ae,
-  0xc7b2, 0x3e7e,
-  0xc7b3, 0x40bc,
-  0xc7b4, 0x3e63,
-  0xc7b5, 0x40bd,
-  0xc7b6, 0x43af,
-  0xc7b7, 0x40b7,
-  0xc7b8, 0x3eb7,
-  0xc7b9, 0x3eed,
-  0xc7ba, 0x3f6a,
-  0xc7bb, 0x3e95,
-  0xc7bc, 0x3948,
-  0xc7bd, 0x3cc8,
-  0xc7be, 0x43b1,
-  0xc7c0, 0x40cc,
-  0xc7c1, 0x3e86,
-  0xc7c2, 0x3c7a,
-  0xc7c3, 0x3c7d,
-  0xc7c4, 0x43b4,
-  0xc7c5, 0x40d1,
-  0xc7c6, 0x3d72,
-  0xc7c7, 0x3c26,
-  0xc7c8, 0x36eb,
-  0xc7c9, 0x40bf,
-  0xc7ca, 0x4100,
-  0xc7cb, 0x3c85,
-  0xc7cc, 0x43b5,
-  0xc7cd, 0x3a1d,
-  0xc7ce, 0x37f5,
-  0xc7cf, 0x36ee,
-  0xc7d0, 0x3e5f,
-  0xc7d1, 0x4116,
-  0xc7d2, 0x411f,
-  0xc7d3, 0x4118,
-  0xc7d4, 0x4123,
-  0xc7d5, 0x4127,
-  0xc7d6, 0x4129,
-  0xc7d7, 0x43bc,
-  0xc7d9, 0x3e8e,
-  0xc7da, 0x386f,
-  0xc7db, 0x4143,
-  0xc7dc, 0x4146,
-  0xc7dd, 0x4144,
-  0xc7de, 0x4149,
-  0xc7df, 0x3ba5,
-  0xc7e0, 0x4157,
-  0xc7e1, 0x4161,
-  0xc7e2, 0x36ec,
-  0xc7e3, 0x416a,
-  0xc7e4, 0x4002,
-  0xc7e5, 0x4186,
-  0xc7e6, 0x3fba,
-  0xc7e7, 0x3f50,
-  0xc7e8, 0x3e96,
-  0xc7e9, 0x418a,
-  0xc7ea, 0x3fc1,
-  0xc7eb, 0x3d8f,
-  0xc7ec, 0x43c1,
-  0xc7ed, 0x3ea0,
-  0xc7ee, 0x3f16,
-  0xc7ef, 0x3e9d,
-  0xc7f0, 0x4192,
-  0xc7f1, 0x3a66,
-  0xc7f2, 0x3e9c,
-  0xc7f3, 0x3e90,
-  0xc7f4, 0x419d,
-  0xc7f5, 0x43c2,
-  0xc7f7, 0x37a8,
-  0xc7f8, 0x419e,
-  0xc7f9, 0x4187,
-  0xc7fa, 0x3ea2,
-  0xc7fb, 0x3e87,
-  0xc7fc, 0x3e84,
-  0xc7fd, 0x3eae,
-  0xc7fe, 0x3b74,
-  0xc840, 0x3b75,
-  0xc841, 0x3b72,
-  0xc842, 0x3eb2,
-  0xc843, 0x3eac,
-  0xc844, 0x41ca,
-  0xc845, 0x41f4,
-  0xc846, 0x41d0,
-  0xc847, 0x3aaa,
-  0xc848, 0x41f5,
-  0xc849, 0x41f8,
-  0xc84a, 0x41fb,
-  0xc84b, 0x4205,
-  0xc84c, 0x3d8e,
-  0xc84d, 0x420e,
-  0xc84e, 0x3d63,
-  0xc84f, 0x4222,
-  0xc850, 0x4221,
-  0xc851, 0x4223,
-  0xc852, 0x4069,
-  0xc853, 0x402f,
-  0xc854, 0x38a5,
-  0xc855, 0x3cf5,
-  0xc856, 0x3d69,
-  0xc857, 0x425b,
-  0xc858, 0x3ac8,
-  0xc859, 0x3dc0,
-  0xc85a, 0x39ea,
-  0xc85b, 0x4000,
-  0xc85c, 0x4264,
-  0xc85d, 0x4262,
-  0xc85e, 0x3fff,
-  0xc85f, 0x3e9a,
-  0xc860, 0x4273,
-  0xc861, 0x3969,
-  0xc862, 0x427a,
-  0xc863, 0x43ca,
-  0xc864, 0x3f9a,
-  0xc865, 0x3eb5,
-  0xc866, 0x43cb,
-  0xc868, 0x3fb2,
-  0xc869, 0x428a,
-  0xc86c, 0x3adf,
-  0xc86d, 0x42c8,
-  0xc86e, 0x3ead,
-  0xc86f, 0x43ce,
-  0xc870, 0x3f8f,
-  0xc871, 0x43cf,
-  0xc872, 0x3e72,
-  0xc873, 0x3eaa,
-  0xc874, 0x43d3,
-  0xc875, 0x42e0,
-  0xc876, 0x382d,
-  0xc877, 0x3fd5,
-  0xc878, 0x3b14,
-  0xc879, 0x36e8,
-  0xc87a, 0x42f0,
-  0xc87b, 0x3e7d,
-  0xc87c, 0x42fe,
-  0xc87d, 0x4305,
-  0xc87e, 0x373a,
-  0xc8a1, 0x3746,
-  0xc8a2, 0x3752,
-  0xc8a3, 0x36ed,
-  0xc8a4, 0x3b4a,
-  0xc8a5, 0x3b45,
-  0xc8a6, 0x43da,
-  0xc8a7, 0x3ede,
-  0xc8a8, 0x376c,
-  0xc8a9, 0x376b,
-  0xc8aa, 0x3782,
-  0xc8ab, 0x3e69,
-  0xc8ac, 0x3b4f,
-  0xc8ad, 0x3786,
-  0xc8ae, 0x43db,
-  0xc8af, 0x3788,
-  0xc8b0, 0x43dc,
-  0xc8b1, 0x3ecd,
-  0xc8b2, 0x3797,
-  0xc8b3, 0x420d,
-  0xc8b4, 0x37d8,
-  0xc8b5, 0x3b71,
-  0xc8b6, 0x38dc,
-  0xc8b7, 0x37e0,
-  0xc8b8, 0x37f4,
-  0xc8b9, 0x3813,
-  0xc8ba, 0x3eb0,
-  0xc8bb, 0x380d,
-  0xc8bc, 0x3eaf,
-  0xc8bd, 0x381b,
-  0xc8bf, 0x381e,
-  0xc8c1, 0x3eb1,
-  0xc8c2, 0x3fe9,
-  0xc8c3, 0x43e4,
-  0xc8c4, 0x3ff9,
-  0xc8c5, 0x3e59,
-  0xc8c6, 0x3e99,
-  0xc8c7, 0x3e5e,
-  0xc8c8, 0x3bb4,
-  0xc8c9, 0x3eab,
-  0xc8ca, 0x43e7,
-  0xc8cc, 0x385e,
-  0xc8cd, 0x43e9,
-  0xc8ce, 0x3dbe,
-  0xc8cf, 0x3e85,
-  0xc8d0, 0x3863,
-  0xc8d2, 0x3d6c,
-  0xc8d3, 0x3871,
-  0xc8d4, 0x387c,
-  0xc8d5, 0x3882,
-  0xc8d6, 0x3e9b,
-  0xc8d7, 0x3888,
-  0xc8d8, 0x3c0e,
-  0xc8d9, 0x382e,
-  0xc8da, 0x389a,
-  0xc8db, 0x388b,
-  0xc8dc, 0x3c04,
-  0xc8dd, 0x36e9,
-  0xc8de, 0x42bd,
-  0xc8df, 0x3bcd,
-  0xc8e0, 0x389f,
-  0xc8e1, 0x379b,
-  0xc8e2, 0x38af,
-  0xc8e3, 0x3e97,
-  0xc8e4, 0x38f0,
-  0xc8e5, 0x3bfd,
-  0xc8e6, 0x3c11,
-  0xc8e8, 0x43ef,
-  0xc8e9, 0x3785,
-  0xc8ea, 0x3902,
-  0xc8eb, 0x3faa,
-  0xc8ec, 0x3f19,
-  0xc8ed, 0x3919,
-  0xc8ee, 0x43f1,
-  0xc8ef, 0x391a,
-  0xc8f1, 0x3e66,
-  0xc8f2, 0x3f22,
-  0xc8f3, 0x3d7e,
-  0xc8f4, 0x3c39,
-  0xc8f5, 0x3ea1,
-  0xc8f6, 0x43f2,
-  0xc8f8, 0x3f30,
-  0xc8f9, 0x3929,
-  0xc8fa, 0x3fbc,
-  0xc8fb, 0x3936,
-  0xc8fd, 0x3f90,
-  0xc8fe, 0x0aba,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKm314B5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKm314B5VMap2, 555
-};
-
-static Gushort cns13HKm471B5HMap2[1380] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xfa40, 0x3d6d,
-  0xfa41, 0x39c4,
-  0xfa42, 0x4399,
-  0xfa43, 0x3f4f,
-  0xfa44, 0x3e05,
-  0xfa45, 0x439a,
-  0xfa46, 0x3b8e,
-  0xfa47, 0x36ea,
-  0xfa48, 0x39c8,
-  0xfa49, 0x393d,
-  0xfa4a, 0x439b,
-  0xfa4b, 0x4022,
-  0xfa4c, 0x39cc,
-  0xfa4e, 0x439c,
-  0xfa4f, 0x39c5,
-  0xfa50, 0x439d,
-  0xfa51, 0x4034,
-  0xfa52, 0x439e,
-  0xfa54, 0x3ea3,
-  0xfa55, 0x3ea6,
-  0xfa56, 0x43a0,
-  0xfa57, 0x4051,
-  0xfa58, 0x4048,
-  0xfa5a, 0x404b,
-  0xfa5b, 0x404f,
-  0xfa5c, 0x4054,
-  0xfa5d, 0x4178,
-  0xfa5e, 0x3f0a,
-  0xfa5f, 0x43a1,
-  0xfa61, 0x405a,
-  0xfa62, 0x3ea4,
-  0xfa63, 0x3dbd,
-  0xfa64, 0x43a3,
-  0xfa65, 0x3dbf,
-  0xfa66, 0x405c,
-  0xfa67, 0x405f,
-  0xfa69, 0x4063,
-  0xfa6a, 0x43a4,
-  0xfa6b, 0x407a,
-  0xfa6d, 0x407d,
-  0xfa6e, 0x4082,
-  0xfa6f, 0x3f6d,
-  0xfa70, 0x43a5,
-  0xfa71, 0x408b,
-  0xfa72, 0x43a6,
-  0xfa73, 0x3f39,
-  0xfa74, 0x4093,
-  0xfa75, 0x4096,
-  0xfa76, 0x43a7,
-  0xfa77, 0x4098,
-  0xfa78, 0x3e7f,
-  0xfa79, 0x3c77,
-  0xfa7a, 0x3ea7,
-  0xfa7b, 0x4203,
-  0xfa7c, 0x3ed1,
-  0xfa7d, 0x3e8a,
-  0xfa7e, 0x3e98,
-  0xfaa1, 0x3e8c,
-  0xfaa2, 0x40a1,
-  0xfaa3, 0x3d83,
-  0xfaa4, 0x3a00,
-  0xfaa5, 0x39a3,
-  0xfaa6, 0x3e8d,
-  0xfaa7, 0x43a8,
-  0xfaa8, 0x3f58,
-  0xfaa9, 0x3dbc,
-  0xfaaa, 0x40a2,
-  0xfaab, 0x3ccc,
-  0xfaac, 0x3ea8,
-  0xfaae, 0x3b2e,
-  0xfaaf, 0x3bc6,
-  0xfab0, 0x3e8b,
-  0xfab1, 0x3e9f,
-  0xfab2, 0x432c,
-  0xfab3, 0x43a9,
-  0xfab4, 0x3f08,
-  0xfab5, 0x3ea5,
-  0xfab6, 0x3e89,
-  0xfab7, 0x3dc3,
-  0xfab8, 0x3e82,
-  0xfab9, 0x3e81,
-  0xfaba, 0x3e94,
-  0xfabb, 0x43aa,
-  0xfabc, 0x3e83,
-  0xfabd, 0x3e88,
-  0xfabe, 0x43ab,
-  0xfabf, 0x3e91,
-  0xfac0, 0x43ac,
-  0xfac1, 0x3e7c,
-  0xfac2, 0x3e80,
-  0xfac3, 0x3e8f,
-  0xfac4, 0x4325,
-  0xfac5, 0x3e67,
-  0xfac6, 0x3e78,
-  0xfac7, 0x3e68,
-  0xfac8, 0x43ad,
-  0xfac9, 0x37d2,
-  0xfaca, 0x3f4d,
-  0xfacb, 0x43ae,
-  0xfacc, 0x3e7e,
-  0xfacd, 0x40bc,
-  0xface, 0x3e63,
-  0xfacf, 0x40bd,
-  0xfad0, 0x43af,
-  0xfad1, 0x3f6c,
-  0xfad2, 0x3ef9,
-  0xfad3, 0x40b7,
-  0xfad4, 0x3eb7,
-  0xfad5, 0x3eed,
-  0xfad6, 0x3f6a,
-  0xfad7, 0x39a6,
-  0xfad8, 0x43b0,
-  0xfad9, 0x3e95,
-  0xfada, 0x3948,
-  0xfadb, 0x3cc8,
-  0xfadc, 0x43b1,
-  0xfadf, 0x40cc,
-  0xfae0, 0x3e86,
-  0xfae1, 0x40c8,
-  0xfae2, 0x3c7a,
-  0xfae3, 0x3c7d,
-  0xfae4, 0x43b4,
-  0xfae5, 0x40d1,
-  0xfae6, 0x3d72,
-  0xfae7, 0x40d4,
-  0xfae8, 0x3c26,
-  0xfae9, 0x36eb,
-  0xfaea, 0x40da,
-  0xfaeb, 0x40d9,
-  0xfaec, 0x40bf,
-  0xfaed, 0x3d81,
-  0xfaee, 0x40f1,
-  0xfaef, 0x4100,
-  0xfaf0, 0x3c85,
-  0xfaf1, 0x43b5,
-  0xfaf2, 0x3a1d,
-  0xfaf3, 0x37f5,
-  0xfaf4, 0x36ee,
-  0xfaf5, 0x3e5f,
-  0xfaf6, 0x4116,
-  0xfaf7, 0x42bb,
-  0xfaf8, 0x411f,
-  0xfaf9, 0x43b6,
-  0xfafa, 0x4118,
-  0xfafb, 0x43b7,
-  0xfafd, 0x4123,
-  0xfafe, 0x4122,
-  0xfb40, 0x4127,
-  0xfb41, 0x43b9,
-  0xfb42, 0x4129,
-  0xfb43, 0x43ba,
-  0xfb44, 0x3dd5,
-  0xfb45, 0x3eef,
-  0xfb46, 0x3d8a,
-  0xfb47, 0x43bb,
-  0xfb48, 0x3a2b,
-  0xfb49, 0x43bc,
-  0xfb4a, 0x4138,
-  0xfb4b, 0x43bd,
-  0xfb4c, 0x3e8e,
-  0xfb4d, 0x3a30,
-  0xfb4e, 0x386f,
-  0xfb4f, 0x4143,
-  0xfb50, 0x4146,
-  0xfb51, 0x4144,
-  0xfb52, 0x4149,
-  0xfb53, 0x3ba5,
-  0xfb54, 0x4157,
-  0xfb55, 0x43be,
-  0xfb56, 0x4161,
-  0xfb57, 0x36ec,
-  0xfb58, 0x416a,
-  0xfb59, 0x3d84,
-  0xfb5a, 0x4002,
-  0xfb5b, 0x4186,
-  0xfb5c, 0x3fba,
-  0xfb5d, 0x43bf,
-  0xfb5e, 0x3fc5,
-  0xfb5f, 0x3f50,
-  0xfb60, 0x3e96,
-  0xfb61, 0x43c0,
-  0xfb62, 0x418a,
-  0xfb63, 0x3fc1,
-  0xfb64, 0x3d8f,
-  0xfb65, 0x43c1,
-  0xfb66, 0x3ea0,
-  0xfb67, 0x3f16,
-  0xfb68, 0x3e9d,
-  0xfb69, 0x418e,
-  0xfb6a, 0x4192,
-  0xfb6b, 0x3a66,
-  0xfb6c, 0x3e9c,
-  0xfb6d, 0x438f,
-  0xfb6e, 0x3e90,
-  0xfb6f, 0x419d,
-  0xfb70, 0x43c2,
-  0xfb72, 0x4356,
-  0xfb73, 0x37a8,
-  0xfb74, 0x419e,
-  0xfb75, 0x4199,
-  0xfb76, 0x4187,
-  0xfb77, 0x3ea2,
-  0xfb78, 0x419f,
-  0xfb79, 0x3e87,
-  0xfb7a, 0x3e84,
-  0xfb7b, 0x3eae,
-  0xfb7c, 0x3b74,
-  0xfb7e, 0x37a2,
-  0xfba1, 0x3b72,
-  0xfba2, 0x3e79,
-  0xfba3, 0x3e6d,
-  0xfba4, 0x43c4,
-  0xfba6, 0x3eb2,
-  0xfba7, 0x43c6,
-  0xfba8, 0x3eac,
-  0xfba9, 0x41ca,
-  0xfbaa, 0x41f4,
-  0xfbab, 0x43c7,
-  0xfbac, 0x41d0,
-  0xfbad, 0x3aaa,
-  0xfbae, 0x41de,
-  0xfbaf, 0x41db,
-  0xfbb0, 0x41e8,
-  0xfbb1, 0x43c8,
-  0xfbb2, 0x3ff6,
-  0xfbb3, 0x41d9,
-  0xfbb4, 0x3d42,
-  0xfbb5, 0x41f5,
-  0xfbb6, 0x41f8,
-  0xfbb7, 0x41fb,
-  0xfbb8, 0x4205,
-  0xfbb9, 0x3d8e,
-  0xfbba, 0x420e,
-  0xfbbb, 0x3d63,
-  0xfbbc, 0x4222,
-  0xfbbd, 0x4221,
-  0xfbbe, 0x4223,
-  0xfbbf, 0x4069,
-  0xfbc0, 0x402f,
-  0xfbc1, 0x4242,
-  0xfbc2, 0x38a5,
-  0xfbc3, 0x4246,
-  0xfbc4, 0x3cf5,
-  0xfbc5, 0x3d69,
-  0xfbc6, 0x3cfe,
-  0xfbc7, 0x425b,
-  0xfbc8, 0x3ac8,
-  0xfbc9, 0x3dc0,
-  0xfbca, 0x39ea,
-  0xfbcb, 0x4000,
-  0xfbcc, 0x4264,
-  0xfbcd, 0x4262,
-  0xfbce, 0x3fff,
-  0xfbcf, 0x3e9a,
-  0xfbd0, 0x4273,
-  0xfbd1, 0x3969,
-  0xfbd2, 0x427a,
-  0xfbd3, 0x4283,
-  0xfbd4, 0x43c9,
-  0xfbd6, 0x3f9a,
-  0xfbd7, 0x3eb5,
-  0xfbd8, 0x43cb,
-  0xfbda, 0x3fb2,
-  0xfbdb, 0x428a,
-  0xfbdd, 0x3b17,
-  0xfbde, 0x428c,
-  0xfbdf, 0x4290,
-  0xfbe0, 0x3adf,
-  0xfbe1, 0x43cd,
-  0xfbe2, 0x42c5,
-  0xfbe3, 0x42c8,
-  0xfbe4, 0x3ead,
-  0xfbe5, 0x43ce,
-  0xfbe6, 0x3f8f,
-  0xfbe7, 0x43cf,
-  0xfbe8, 0x3e72,
-  0xfbe9, 0x3e70,
-  0xfbea, 0x43d0,
-  0xfbeb, 0x3eaa,
-  0xfbec, 0x43d1,
-  0xfbed, 0x3fa9,
-  0xfbee, 0x43d2,
-  0xfbf1, 0x42d8,
-  0xfbf2, 0x3ff3,
-  0xfbf3, 0x42e0,
-  0xfbf4, 0x3b00,
-  0xfbf5, 0x4317,
-  0xfbf6, 0x382d,
-  0xfbf7, 0x3e73,
-  0xfbf8, 0x3fd5,
-  0xfbf9, 0x43d5,
-  0xfbfb, 0x3b14,
-  0xfbfc, 0x36e8,
-  0xfbfd, 0x42f4,
-  0xfbfe, 0x3b0e,
-  0xfc40, 0x42ec,
-  0xfc41, 0x42f0,
-  0xfc42, 0x3e7d,
-  0xfc43, 0x43d7,
-  0xfc44, 0x42fe,
-  0xfc45, 0x4305,
-  0xfc46, 0x3fda,
-  0xfc47, 0x3df1,
-  0xfc48, 0x3733,
-  0xfc49, 0x3d7d,
-  0xfc4a, 0x43d8,
-  0xfc4b, 0x373a,
-  0xfc4c, 0x3740,
-  0xfc4d, 0x3742,
-  0xfc4e, 0x3746,
-  0xfc4f, 0x3752,
-  0xfc50, 0x3f1f,
-  0xfc51, 0x43d9,
-  0xfc52, 0x36ed,
-  0xfc53, 0x3b4a,
-  0xfc54, 0x375e,
-  0xfc55, 0x3b45,
-  0xfc56, 0x43da,
-  0xfc57, 0x3ede,
-  0xfc58, 0x3769,
-  0xfc59, 0x376c,
-  0xfc5a, 0x376b,
-  0xfc5b, 0x376e,
-  0xfc5c, 0x377f,
-  0xfc5d, 0x377b,
-  0xfc5e, 0x3782,
-  0xfc5f, 0x3e69,
-  0xfc60, 0x3b4f,
-  0xfc61, 0x3786,
-  0xfc62, 0x43db,
-  0xfc63, 0x3788,
-  0xfc64, 0x43dc,
-  0xfc65, 0x3ecd,
-  0xfc66, 0x3797,
-  0xfc67, 0x420d,
-  0xfc68, 0x43dd,
-  0xfc69, 0x37bc,
-  0xfc6a, 0x43de,
-  0xfc6b, 0x37d8,
-  0xfc6c, 0x3b71,
-  0xfc6d, 0x3e7a,
-  0xfc6e, 0x43df,
-  0xfc6f, 0x38dc,
-  0xfc70, 0x37e0,
-  0xfc71, 0x37ee,
-  0xfc72, 0x37f4,
-  0xfc73, 0x3813,
-  0xfc74, 0x43e0,
-  0xfc76, 0x3eb0,
-  0xfc77, 0x43e2,
-  0xfc78, 0x3fed,
-  0xfc79, 0x380d,
-  0xfc7a, 0x3eaf,
-  0xfc7b, 0x3f92,
-  0xfc7c, 0x3816,
-  0xfc7d, 0x381b,
-  0xfc7e, 0x3fa2,
-  0xfca1, 0x381c,
-  0xfca2, 0x381e,
-  0xfca4, 0x3eb1,
-  0xfca5, 0x134a,
-  0xfca6, 0x43e3,
-  0xfca7, 0x3fe9,
-  0xfca8, 0x43e4,
-  0xfca9, 0x3ff9,
-  0xfcaa, 0x3d93,
-  0xfcab, 0x43e5,
-  0xfcac, 0x3e59,
-  0xfcad, 0x43e6,
-  0xfcae, 0x3837,
-  0xfcaf, 0x3f99,
-  0xfcb0, 0x3e99,
-  0xfcb1, 0x3e5e,
-  0xfcb2, 0x3bb4,
-  0xfcb3, 0x3eab,
-  0xfcb4, 0x43e7,
-  0xfcb6, 0x385e,
-  0xfcb7, 0x43e9,
-  0xfcb8, 0x3dbe,
-  0xfcb9, 0x3e85,
-  0xfcba, 0x3863,
-  0xfcbc, 0x3d6c,
-  0xfcbd, 0x3871,
-  0xfcbe, 0x3ee0,
-  0xfcbf, 0x43ea,
-  0xfcc0, 0x387c,
-  0xfcc1, 0x43eb,
-  0xfcc2, 0x3eb8,
-  0xfcc3, 0x3882,
-  0xfcc4, 0x3e9b,
-  0xfcc5, 0x43ec,
-  0xfcc6, 0x3888,
-  0xfcc7, 0x3c0e,
-  0xfcc8, 0x382e,
-  0xfcc9, 0x389a,
-  0xfcca, 0x388b,
-  0xfccb, 0x3c04,
-  0xfccc, 0x36e9,
-  0xfccd, 0x42bd,
-  0xfcce, 0x3bcd,
-  0xfccf, 0x389f,
-  0xfcd0, 0x3dde,
-  0xfcd1, 0x379b,
-  0xfcd2, 0x3bd3,
-  0xfcd3, 0x38af,
-  0xfcd4, 0x3e97,
-  0xfcd5, 0x38d6,
-  0xfcd6, 0x3f35,
-  0xfcd7, 0x38e0,
-  0xfcd8, 0x4035,
-  0xfcd9, 0x38f0,
-  0xfcda, 0x43ed,
-  0xfcdc, 0x3bfd,
-  0xfcdd, 0x3c11,
-  0xfcdf, 0x43ef,
-  0xfce0, 0x3785,
-  0xfce1, 0x3902,
-  0xfce2, 0x3ddc,
-  0xfce3, 0x43f0,
-  0xfce4, 0x3faa,
-  0xfce5, 0x390b,
-  0xfce6, 0x3f19,
-  0xfce7, 0x390e,
-  0xfce8, 0x3919,
-  0xfce9, 0x43f1,
-  0xfcea, 0x3c3c,
-  0xfceb, 0x391a,
-  0xfcec, 0x3c3a,
-  0xfced, 0x391b,
-  0xfcee, 0x3e66,
-  0xfcef, 0x3f22,
-  0xfcf0, 0x3d7e,
-  0xfcf1, 0x3e71,
-  0xfcf2, 0x3c39,
-  0xfcf3, 0x3ea1,
-  0xfcf4, 0x43f2,
-  0xfcf6, 0x3f30,
-  0xfcf7, 0x3929,
-  0xfcf8, 0x3fbc,
-  0xfcf9, 0x3936,
-  0xfcfa, 0x43f4,
-  0xfcfb, 0x3937,
-  0xfcfc, 0x3f90,
-  0xfcfd, 0x43f5,
-  0xfcfe, 0x0aba,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKm471B5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKm471B5HMap2, 690
-};
-
-static Gushort cns13HKm471B5VMap2[1404] = {
-  0x0000, 0x0000,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xfa40, 0x3d6d,
-  0xfa41, 0x39c4,
-  0xfa42, 0x4399,
-  0xfa43, 0x3f4f,
-  0xfa44, 0x3e05,
-  0xfa45, 0x439a,
-  0xfa46, 0x3b8e,
-  0xfa47, 0x36ea,
-  0xfa48, 0x39c8,
-  0xfa49, 0x393d,
-  0xfa4a, 0x439b,
-  0xfa4b, 0x4022,
-  0xfa4c, 0x39cc,
-  0xfa4e, 0x439c,
-  0xfa4f, 0x39c5,
-  0xfa50, 0x439d,
-  0xfa51, 0x4034,
-  0xfa52, 0x439e,
-  0xfa54, 0x3ea3,
-  0xfa55, 0x3ea6,
-  0xfa56, 0x43a0,
-  0xfa57, 0x4051,
-  0xfa58, 0x4048,
-  0xfa5a, 0x404b,
-  0xfa5b, 0x404f,
-  0xfa5c, 0x4054,
-  0xfa5d, 0x4178,
-  0xfa5e, 0x3f0a,
-  0xfa5f, 0x43a1,
-  0xfa61, 0x405a,
-  0xfa62, 0x3ea4,
-  0xfa63, 0x3dbd,
-  0xfa64, 0x43a3,
-  0xfa65, 0x3dbf,
-  0xfa66, 0x405c,
-  0xfa67, 0x405f,
-  0xfa69, 0x4063,
-  0xfa6a, 0x43a4,
-  0xfa6b, 0x407a,
-  0xfa6d, 0x407d,
-  0xfa6e, 0x4082,
-  0xfa6f, 0x3f6d,
-  0xfa70, 0x43a5,
-  0xfa71, 0x408b,
-  0xfa72, 0x43a6,
-  0xfa73, 0x3f39,
-  0xfa74, 0x4093,
-  0xfa75, 0x4096,
-  0xfa76, 0x43a7,
-  0xfa77, 0x4098,
-  0xfa78, 0x3e7f,
-  0xfa79, 0x3c77,
-  0xfa7a, 0x3ea7,
-  0xfa7b, 0x4203,
-  0xfa7c, 0x3ed1,
-  0xfa7d, 0x3e8a,
-  0xfa7e, 0x3e98,
-  0xfaa1, 0x3e8c,
-  0xfaa2, 0x40a1,
-  0xfaa3, 0x3d83,
-  0xfaa4, 0x3a00,
-  0xfaa5, 0x39a3,
-  0xfaa6, 0x3e8d,
-  0xfaa7, 0x43a8,
-  0xfaa8, 0x3f58,
-  0xfaa9, 0x3dbc,
-  0xfaaa, 0x40a2,
-  0xfaab, 0x3ccc,
-  0xfaac, 0x3ea8,
-  0xfaae, 0x3b2e,
-  0xfaaf, 0x3bc6,
-  0xfab0, 0x3e8b,
-  0xfab1, 0x3e9f,
-  0xfab2, 0x432c,
-  0xfab3, 0x43a9,
-  0xfab4, 0x3f08,
-  0xfab5, 0x3ea5,
-  0xfab6, 0x3e89,
-  0xfab7, 0x3dc3,
-  0xfab8, 0x3e82,
-  0xfab9, 0x3e81,
-  0xfaba, 0x3e94,
-  0xfabb, 0x43aa,
-  0xfabc, 0x3e83,
-  0xfabd, 0x3e88,
-  0xfabe, 0x43ab,
-  0xfabf, 0x3e91,
-  0xfac0, 0x43ac,
-  0xfac1, 0x3e7c,
-  0xfac2, 0x3e80,
-  0xfac3, 0x3e8f,
-  0xfac4, 0x4325,
-  0xfac5, 0x3e67,
-  0xfac6, 0x3e78,
-  0xfac7, 0x3e68,
-  0xfac8, 0x43ad,
-  0xfac9, 0x37d2,
-  0xfaca, 0x3f4d,
-  0xfacb, 0x43ae,
-  0xfacc, 0x3e7e,
-  0xfacd, 0x40bc,
-  0xface, 0x3e63,
-  0xfacf, 0x40bd,
-  0xfad0, 0x43af,
-  0xfad1, 0x3f6c,
-  0xfad2, 0x3ef9,
-  0xfad3, 0x40b7,
-  0xfad4, 0x3eb7,
-  0xfad5, 0x3eed,
-  0xfad6, 0x3f6a,
-  0xfad7, 0x39a6,
-  0xfad8, 0x43b0,
-  0xfad9, 0x3e95,
-  0xfada, 0x3948,
-  0xfadb, 0x3cc8,
-  0xfadc, 0x43b1,
-  0xfadf, 0x40cc,
-  0xfae0, 0x3e86,
-  0xfae1, 0x40c8,
-  0xfae2, 0x3c7a,
-  0xfae3, 0x3c7d,
-  0xfae4, 0x43b4,
-  0xfae5, 0x40d1,
-  0xfae6, 0x3d72,
-  0xfae7, 0x40d4,
-  0xfae8, 0x3c26,
-  0xfae9, 0x36eb,
-  0xfaea, 0x40da,
-  0xfaeb, 0x40d9,
-  0xfaec, 0x40bf,
-  0xfaed, 0x3d81,
-  0xfaee, 0x40f1,
-  0xfaef, 0x4100,
-  0xfaf0, 0x3c85,
-  0xfaf1, 0x43b5,
-  0xfaf2, 0x3a1d,
-  0xfaf3, 0x37f5,
-  0xfaf4, 0x36ee,
-  0xfaf5, 0x3e5f,
-  0xfaf6, 0x4116,
-  0xfaf7, 0x42bb,
-  0xfaf8, 0x411f,
-  0xfaf9, 0x43b6,
-  0xfafa, 0x4118,
-  0xfafb, 0x43b7,
-  0xfafd, 0x4123,
-  0xfafe, 0x4122,
-  0xfb40, 0x4127,
-  0xfb41, 0x43b9,
-  0xfb42, 0x4129,
-  0xfb43, 0x43ba,
-  0xfb44, 0x3dd5,
-  0xfb45, 0x3eef,
-  0xfb46, 0x3d8a,
-  0xfb47, 0x43bb,
-  0xfb48, 0x3a2b,
-  0xfb49, 0x43bc,
-  0xfb4a, 0x4138,
-  0xfb4b, 0x43bd,
-  0xfb4c, 0x3e8e,
-  0xfb4d, 0x3a30,
-  0xfb4e, 0x386f,
-  0xfb4f, 0x4143,
-  0xfb50, 0x4146,
-  0xfb51, 0x4144,
-  0xfb52, 0x4149,
-  0xfb53, 0x3ba5,
-  0xfb54, 0x4157,
-  0xfb55, 0x43be,
-  0xfb56, 0x4161,
-  0xfb57, 0x36ec,
-  0xfb58, 0x416a,
-  0xfb59, 0x3d84,
-  0xfb5a, 0x4002,
-  0xfb5b, 0x4186,
-  0xfb5c, 0x3fba,
-  0xfb5d, 0x43bf,
-  0xfb5e, 0x3fc5,
-  0xfb5f, 0x3f50,
-  0xfb60, 0x3e96,
-  0xfb61, 0x43c0,
-  0xfb62, 0x418a,
-  0xfb63, 0x3fc1,
-  0xfb64, 0x3d8f,
-  0xfb65, 0x43c1,
-  0xfb66, 0x3ea0,
-  0xfb67, 0x3f16,
-  0xfb68, 0x3e9d,
-  0xfb69, 0x418e,
-  0xfb6a, 0x4192,
-  0xfb6b, 0x3a66,
-  0xfb6c, 0x3e9c,
-  0xfb6d, 0x438f,
-  0xfb6e, 0x3e90,
-  0xfb6f, 0x419d,
-  0xfb70, 0x43c2,
-  0xfb72, 0x4356,
-  0xfb73, 0x37a8,
-  0xfb74, 0x419e,
-  0xfb75, 0x4199,
-  0xfb76, 0x4187,
-  0xfb77, 0x3ea2,
-  0xfb78, 0x419f,
-  0xfb79, 0x3e87,
-  0xfb7a, 0x3e84,
-  0xfb7b, 0x3eae,
-  0xfb7c, 0x3b74,
-  0xfb7e, 0x37a2,
-  0xfba1, 0x3b72,
-  0xfba2, 0x3e79,
-  0xfba3, 0x3e6d,
-  0xfba4, 0x43c4,
-  0xfba6, 0x3eb2,
-  0xfba7, 0x43c6,
-  0xfba8, 0x3eac,
-  0xfba9, 0x41ca,
-  0xfbaa, 0x41f4,
-  0xfbab, 0x43c7,
-  0xfbac, 0x41d0,
-  0xfbad, 0x3aaa,
-  0xfbae, 0x41de,
-  0xfbaf, 0x41db,
-  0xfbb0, 0x41e8,
-  0xfbb1, 0x43c8,
-  0xfbb2, 0x3ff6,
-  0xfbb3, 0x41d9,
-  0xfbb4, 0x3d42,
-  0xfbb5, 0x41f5,
-  0xfbb6, 0x41f8,
-  0xfbb7, 0x41fb,
-  0xfbb8, 0x4205,
-  0xfbb9, 0x3d8e,
-  0xfbba, 0x420e,
-  0xfbbb, 0x3d63,
-  0xfbbc, 0x4222,
-  0xfbbd, 0x4221,
-  0xfbbe, 0x4223,
-  0xfbbf, 0x4069,
-  0xfbc0, 0x402f,
-  0xfbc1, 0x4242,
-  0xfbc2, 0x38a5,
-  0xfbc3, 0x4246,
-  0xfbc4, 0x3cf5,
-  0xfbc5, 0x3d69,
-  0xfbc6, 0x3cfe,
-  0xfbc7, 0x425b,
-  0xfbc8, 0x3ac8,
-  0xfbc9, 0x3dc0,
-  0xfbca, 0x39ea,
-  0xfbcb, 0x4000,
-  0xfbcc, 0x4264,
-  0xfbcd, 0x4262,
-  0xfbce, 0x3fff,
-  0xfbcf, 0x3e9a,
-  0xfbd0, 0x4273,
-  0xfbd1, 0x3969,
-  0xfbd2, 0x427a,
-  0xfbd3, 0x4283,
-  0xfbd4, 0x43c9,
-  0xfbd6, 0x3f9a,
-  0xfbd7, 0x3eb5,
-  0xfbd8, 0x43cb,
-  0xfbda, 0x3fb2,
-  0xfbdb, 0x428a,
-  0xfbdd, 0x3b17,
-  0xfbde, 0x428c,
-  0xfbdf, 0x4290,
-  0xfbe0, 0x3adf,
-  0xfbe1, 0x43cd,
-  0xfbe2, 0x42c5,
-  0xfbe3, 0x42c8,
-  0xfbe4, 0x3ead,
-  0xfbe5, 0x43ce,
-  0xfbe6, 0x3f8f,
-  0xfbe7, 0x43cf,
-  0xfbe8, 0x3e72,
-  0xfbe9, 0x3e70,
-  0xfbea, 0x43d0,
-  0xfbeb, 0x3eaa,
-  0xfbec, 0x43d1,
-  0xfbed, 0x3fa9,
-  0xfbee, 0x43d2,
-  0xfbf1, 0x42d8,
-  0xfbf2, 0x3ff3,
-  0xfbf3, 0x42e0,
-  0xfbf4, 0x3b00,
-  0xfbf5, 0x4317,
-  0xfbf6, 0x382d,
-  0xfbf7, 0x3e73,
-  0xfbf8, 0x3fd5,
-  0xfbf9, 0x43d5,
-  0xfbfb, 0x3b14,
-  0xfbfc, 0x36e8,
-  0xfbfd, 0x42f4,
-  0xfbfe, 0x3b0e,
-  0xfc40, 0x42ec,
-  0xfc41, 0x42f0,
-  0xfc42, 0x3e7d,
-  0xfc43, 0x43d7,
-  0xfc44, 0x42fe,
-  0xfc45, 0x4305,
-  0xfc46, 0x3fda,
-  0xfc47, 0x3df1,
-  0xfc48, 0x3733,
-  0xfc49, 0x3d7d,
-  0xfc4a, 0x43d8,
-  0xfc4b, 0x373a,
-  0xfc4c, 0x3740,
-  0xfc4d, 0x3742,
-  0xfc4e, 0x3746,
-  0xfc4f, 0x3752,
-  0xfc50, 0x3f1f,
-  0xfc51, 0x43d9,
-  0xfc52, 0x36ed,
-  0xfc53, 0x3b4a,
-  0xfc54, 0x375e,
-  0xfc55, 0x3b45,
-  0xfc56, 0x43da,
-  0xfc57, 0x3ede,
-  0xfc58, 0x3769,
-  0xfc59, 0x376c,
-  0xfc5a, 0x376b,
-  0xfc5b, 0x376e,
-  0xfc5c, 0x377f,
-  0xfc5d, 0x377b,
-  0xfc5e, 0x3782,
-  0xfc5f, 0x3e69,
-  0xfc60, 0x3b4f,
-  0xfc61, 0x3786,
-  0xfc62, 0x43db,
-  0xfc63, 0x3788,
-  0xfc64, 0x43dc,
-  0xfc65, 0x3ecd,
-  0xfc66, 0x3797,
-  0xfc67, 0x420d,
-  0xfc68, 0x43dd,
-  0xfc69, 0x37bc,
-  0xfc6a, 0x43de,
-  0xfc6b, 0x37d8,
-  0xfc6c, 0x3b71,
-  0xfc6d, 0x3e7a,
-  0xfc6e, 0x43df,
-  0xfc6f, 0x38dc,
-  0xfc70, 0x37e0,
-  0xfc71, 0x37ee,
-  0xfc72, 0x37f4,
-  0xfc73, 0x3813,
-  0xfc74, 0x43e0,
-  0xfc76, 0x3eb0,
-  0xfc77, 0x43e2,
-  0xfc78, 0x3fed,
-  0xfc79, 0x380d,
-  0xfc7a, 0x3eaf,
-  0xfc7b, 0x3f92,
-  0xfc7c, 0x3816,
-  0xfc7d, 0x381b,
-  0xfc7e, 0x3fa2,
-  0xfca1, 0x381c,
-  0xfca2, 0x381e,
-  0xfca4, 0x3eb1,
-  0xfca5, 0x134a,
-  0xfca6, 0x43e3,
-  0xfca7, 0x3fe9,
-  0xfca8, 0x43e4,
-  0xfca9, 0x3ff9,
-  0xfcaa, 0x3d93,
-  0xfcab, 0x43e5,
-  0xfcac, 0x3e59,
-  0xfcad, 0x43e6,
-  0xfcae, 0x3837,
-  0xfcaf, 0x3f99,
-  0xfcb0, 0x3e99,
-  0xfcb1, 0x3e5e,
-  0xfcb2, 0x3bb4,
-  0xfcb3, 0x3eab,
-  0xfcb4, 0x43e7,
-  0xfcb6, 0x385e,
-  0xfcb7, 0x43e9,
-  0xfcb8, 0x3dbe,
-  0xfcb9, 0x3e85,
-  0xfcba, 0x3863,
-  0xfcbc, 0x3d6c,
-  0xfcbd, 0x3871,
-  0xfcbe, 0x3ee0,
-  0xfcbf, 0x43ea,
-  0xfcc0, 0x387c,
-  0xfcc1, 0x43eb,
-  0xfcc2, 0x3eb8,
-  0xfcc3, 0x3882,
-  0xfcc4, 0x3e9b,
-  0xfcc5, 0x43ec,
-  0xfcc6, 0x3888,
-  0xfcc7, 0x3c0e,
-  0xfcc8, 0x382e,
-  0xfcc9, 0x389a,
-  0xfcca, 0x388b,
-  0xfccb, 0x3c04,
-  0xfccc, 0x36e9,
-  0xfccd, 0x42bd,
-  0xfcce, 0x3bcd,
-  0xfccf, 0x389f,
-  0xfcd0, 0x3dde,
-  0xfcd1, 0x379b,
-  0xfcd2, 0x3bd3,
-  0xfcd3, 0x38af,
-  0xfcd4, 0x3e97,
-  0xfcd5, 0x38d6,
-  0xfcd6, 0x3f35,
-  0xfcd7, 0x38e0,
-  0xfcd8, 0x4035,
-  0xfcd9, 0x38f0,
-  0xfcda, 0x43ed,
-  0xfcdc, 0x3bfd,
-  0xfcdd, 0x3c11,
-  0xfcdf, 0x43ef,
-  0xfce0, 0x3785,
-  0xfce1, 0x3902,
-  0xfce2, 0x3ddc,
-  0xfce3, 0x43f0,
-  0xfce4, 0x3faa,
-  0xfce5, 0x390b,
-  0xfce6, 0x3f19,
-  0xfce7, 0x390e,
-  0xfce8, 0x3919,
-  0xfce9, 0x43f1,
-  0xfcea, 0x3c3c,
-  0xfceb, 0x391a,
-  0xfcec, 0x3c3a,
-  0xfced, 0x391b,
-  0xfcee, 0x3e66,
-  0xfcef, 0x3f22,
-  0xfcf0, 0x3d7e,
-  0xfcf1, 0x3e71,
-  0xfcf2, 0x3c39,
-  0xfcf3, 0x3ea1,
-  0xfcf4, 0x43f2,
-  0xfcf6, 0x3f30,
-  0xfcf7, 0x3929,
-  0xfcf8, 0x3fbc,
-  0xfcf9, 0x3936,
-  0xfcfa, 0x43f4,
-  0xfcfb, 0x3937,
-  0xfcfc, 0x3f90,
-  0xfcfd, 0x43f5,
-  0xfcfe, 0x0aba,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKm471B5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKm471B5VMap2, 702
-};
-
-static Gushort cns13HKscsB5HMap2[2258] = {
-  0x0000, 0x0000,
-  0x8840, 0x44c9,
-  0x8856, 0x4961,
-  0x88a1, 0x498a,
-  0x88a9, 0x499c,
-  0x8940, 0x4534,
-  0x8943, 0x4536,
-  0x8946, 0x4537,
-  0x894c, 0x453b,
-  0x894d, 0x43c3,
-  0x894e, 0x453c,
-  0x8951, 0x439a,
-  0x8952, 0x453f,
-  0x89a1, 0x456c,
-  0x89a6, 0x43a2,
-  0x89ab, 0x43ec,
-  0x89ac, 0x4571,
-  0x89ad, 0x43eb,
-  0x89ae, 0x4572,
-  0x89b0, 0x4573,
-  0x89b5, 0x4576,
-  0x89c1, 0x4581,
-  0x89c5, 0x4584,
-  0x89cf, 0x43bc,
-  0x89d0, 0x458e,
-  0x89d9, 0x439c,
-  0x89da, 0x4597,
-  0x89db, 0x439e,
-  0x89dc, 0x4598,
-  0x89dd, 0x439f,
-  0x89de, 0x4599,
-  0x89e1, 0x43a1,
-  0x89e2, 0x459c,
-  0x89e3, 0x43a3,
-  0x89e4, 0x459d,
-  0x89ea, 0x43a5,
-  0x89ec, 0x45a3,
-  0x89fa, 0x43a9,
-  0x89fb, 0x45b1,
-  0x8a40, 0x45b5,
-  0x8a41, 0x4309,
-  0x8a43, 0x430b,
-  0x8a4d, 0x45b6,
-  0x8a4e, 0x4316,
-  0x8a5a, 0x45b7,
-  0x8a5b, 0x4323,
-  0x8a5e, 0x45b8,
-  0x8a5f, 0x4327,
-  0x8a64, 0x432c,
-  0x8a71, 0x45b9,
-  0x8a72, 0x433a,
-  0x8a76, 0x433e,
-  0x8a77, 0x45ba,
-  0x8a78, 0x4340,
-  0x8a7a, 0x45bb,
-  0x8a7b, 0x4343,
-  0x8a7c, 0x45bc,
-  0x8a7d, 0x4345,
-  0x8a7e, 0x45bd,
-  0x8aa1, 0x4347,
-  0x8aa8, 0x45be,
-  0x8aa9, 0x434f,
-  0x8aac, 0x4352,
-  0x8ab2, 0x4358,
-  0x8ab6, 0x45bf,
-  0x8ab7, 0x435d,
-  0x8ab8, 0x45c0,
-  0x8ab9, 0x435f,
-  0x8abb, 0x4361,
-  0x8ac9, 0x436f,
-  0x8acc, 0x45c1,
-  0x8ace, 0x4374,
-  0x8ad6, 0x45c2,
-  0x8ad8, 0x437e,
-  0x8adf, 0x4385,
-  0x8ae6, 0x45c4,
-  0x8ae7, 0x43db,
-  0x8ae8, 0x45c5,
-  0x8af6, 0x45d2,
-  0x8b40, 0x45db,
-  0x8b41, 0x438c,
-  0x8b43, 0x45dc,
-  0x8b45, 0x438e,
-  0x8b46, 0x45de,
-  0x8b47, 0x438f,
-  0x8b48, 0x45df,
-  0x8b49, 0x4390,
-  0x8b4a, 0x45e0,
-  0x8b4b, 0x4391,
-  0x8b4c, 0x45e1,
-  0x8b4d, 0x4392,
-  0x8b51, 0x45e2,
-  0x8b55, 0x45e5,
-  0x8b58, 0x4397,
-  0x8b59, 0x45e8,
-  0x8b5a, 0x4398,
-  0x8b5b, 0x43c4,
-  0x8b5c, 0x45e9,
-  0x8b61, 0x43a7,
-  0x8b62, 0x45ee,
-  0x8b68, 0x43ac,
-  0x8b69, 0x45f4,
-  0x8ba1, 0x460a,
-  0x8bc0, 0x44df,
-  0x8bde, 0x44fc,
-  0x8d60, 0x4629,
-  0x8d62, 0x43ba,
-  0x8d63, 0x462b,
-  0x8d68, 0x43bb,
-  0x8d69, 0x43a0,
-  0x8d6a, 0x43bd,
-  0x8d6b, 0x4630,
-  0x8d6e, 0x43be,
-  0x8d6f, 0x4633,
-  0x8d76, 0x43bf,
-  0x8d77, 0x463a,
-  0x8d7a, 0x43c0,
-  0x8d7b, 0x463d,
-  0x8d7c, 0x43c1,
-  0x8d7d, 0x463e,
-  0x8da1, 0x4640,
-  0x8da5, 0x43c2,
-  0x8da6, 0x4644,
-  0x8da8, 0x43b9,
-  0x8da9, 0x43ad,
-  0x8daa, 0x4646,
-  0x8db6, 0x43c7,
-  0x8db7, 0x4652,
-  0x8dc3, 0x43c8,
-  0x8dc4, 0x465e,
-  0x8dfa, 0x43f9,
-  0x8dfb, 0x4694,
-  0x8e40, 0x372b,
-  0x8e45, 0x4698,
-  0x8e46, 0x3730,
-  0x8e6a, 0x3754,
-  0x8e6b, 0x4699,
-  0x8e6d, 0x3756,
-  0x8e70, 0x3759,
-  0x8e76, 0x469b,
-  0x8e77, 0x375f,
-  0x8e7b, 0x469c,
-  0x8e7c, 0x3764,
-  0x8ea1, 0x3766,
-  0x8ea6, 0x469d,
-  0x8ea7, 0x376b,
-  0x8eac, 0x3770,
-  0x8eb5, 0x3779,
-  0x8eb8, 0x469e,
-  0x8eb9, 0x377d,
-  0x8ec9, 0x469f,
-  0x8eca, 0x378d,
-  0x8ece, 0x3791,
-  0x8ed1, 0x3794,
-  0x8ee5, 0x46a0,
-  0x8ee6, 0x37a8,
-  0x8eef, 0x46a1,
-  0x8ef0, 0x37b1,
-  0x8ef6, 0x46a2,
-  0x8ef7, 0x37b8,
-  0x8f40, 0x37c0,
-  0x8f58, 0x37d8,
-  0x8f59, 0x46a3,
-  0x8f5a, 0x37d9,
-  0x8f5f, 0x46a4,
-  0x8f60, 0x37de,
-  0x8f67, 0x46a5,
-  0x8f68, 0x37e5,
-  0x8f6a, 0x37e7,
-  0x8f6f, 0x37ec,
-  0x8f79, 0x46a6,
-  0x8f7a, 0x37f7,
-  0x8fa1, 0x37fc,
-  0x8fb0, 0x46a7,
-  0x8fb1, 0x380c,
-  0x8fc5, 0x46a8,
-  0x8fc6, 0x3820,
-  0x8fc7, 0x46a9,
-  0x8fc8, 0x3821,
-  0x8fca, 0x46aa,
-  0x8fcd, 0x3826,
-  0x8fda, 0x46ab,
-  0x8fdb, 0x3833,
-  0x8fe3, 0x46ac,
-  0x8fe4, 0x383c,
-  0x8ffc, 0x46ad,
-  0x8ffd, 0x3854,
-  0x9040, 0x3856,
-  0x9055, 0x46ae,
-  0x9056, 0x386c,
-  0x905c, 0x46af,
-  0x905f, 0x3873,
-  0x906e, 0x3882,
-  0x906f, 0x46b2,
-  0x9070, 0x3883,
-  0x907b, 0x388d,
-  0x90a1, 0x3891,
-  0x90a6, 0x46b3,
-  0x90a7, 0x3896,
-  0x90b8, 0x46b4,
-  0x90b9, 0x38a7,
-  0x90dd, 0x38cb,
-  0x90f2, 0x38e0,
-  0x9140, 0x38ed,
-  0x9165, 0x46b5,
-  0x9166, 0x3912,
-  0x916e, 0x46b6,
-  0x916f, 0x391a,
-  0x917e, 0x46b7,
-  0x91a1, 0x3929,
-  0x91a2, 0x46b8,
-  0x91a3, 0x392a,
-  0x91c0, 0x3947,
-  0x91c8, 0x46b9,
-  0x91c9, 0x3950,
-  0x9240, 0x3986,
-  0x9245, 0x398b,
-  0x9264, 0x46ba,
-  0x9265, 0x39ab,
-  0x926d, 0x46bb,
-  0x926e, 0x39b4,
-  0x92a1, 0x39c5,
-  0x92b3, 0x39d3,
-  0x92c9, 0x39e9,
-  0x92d2, 0x39f2,
-  0x92e5, 0x46bc,
-  0x92e6, 0x3a05,
-  0x92f2, 0x46bd,
-  0x92f3, 0x3a11,
-  0x9340, 0x3a1d,
-  0x9368, 0x46be,
-  0x9369, 0x3a45,
-  0x93a1, 0x3a5b,
-  0x93aa, 0x46bf,
-  0x93ab, 0x3a64,
-  0x93c2, 0x46c0,
-  0x93c3, 0x3a7b,
-  0x93e5, 0x46c1,
-  0x93e6, 0x3a9d,
-  0x93e8, 0x46c2,
-  0x93e9, 0x3aa0,
-  0x93eb, 0x46c3,
-  0x93ec, 0x3aa2,
-  0x9440, 0x3ab5,
-  0x9446, 0x46c4,
-  0x9448, 0x3abc,
-  0x9479, 0x46c5,
-  0x947a, 0x3aee,
-  0x94a1, 0x3af3,
-  0x94cb, 0x46c6,
-  0x94cc, 0x3b1e,
-  0x9540, 0x3b51,
-  0x954d, 0x46c7,
-  0x954e, 0x3b5e,
-  0x955a, 0x46c8,
-  0x955b, 0x3b6a,
-  0x955f, 0x46c9,
-  0x9560, 0x3b6f,
-  0x95a1, 0x3b8e,
-  0x95c6, 0x46ca,
-  0x95c7, 0x3bb3,
-  0x95da, 0x3bc6,
-  0x9640, 0x3beb,
-  0x9645, 0x3bf0,
-  0x9651, 0x46cb,
-  0x9652, 0x3bfd,
-  0x966a, 0x46cc,
-  0x966b, 0x3c16,
-  0x96a1, 0x3c2a,
-  0x96d4, 0x46cd,
-  0x96d5, 0x3c5d,
-  0x96ee, 0x3c76,
-  0x96fd, 0x3c85,
-  0x9740, 0x3c87,
-  0x97a1, 0x3cc6,
-  0x9840, 0x3d24,
-  0x9844, 0x46ce,
-  0x9846, 0x3d2a,
-  0x986f, 0x46d0,
-  0x9870, 0x3d54,
-  0x9875, 0x46d1,
-  0x9877, 0x3d59,
-  0x9878, 0x46d3,
-  0x987a, 0x3d5a,
-  0x987b, 0x46d5,
-  0x98a1, 0x46d9,
-  0x98a3, 0x3d5b,
-  0x98a4, 0x46db,
-  0x98af, 0x3d5c,
-  0x98b0, 0x46e6,
-  0x98b4, 0x43ca,
-  0x98b5, 0x46ea,
-  0x98b6, 0x3d5d,
-  0x98b7, 0x46eb,
-  0x98b8, 0x43cc,
-  0x98b9, 0x3d5e,
-  0x98ba, 0x46ec,
-  0x98bb, 0x43fa,
-  0x98bc, 0x46ed,
-  0x98bd, 0x3d5f,
-  0x98bf, 0x46ee,
-  0x98c2, 0x3d61,
-  0x98c3, 0x46f1,
-  0x98c4, 0x3d62,
-  0x98c5, 0x46f2,
-  0x98c6, 0x3d63,
-  0x98c8, 0x46f3,
-  0x98d2, 0x43cd,
-  0x98d3, 0x46fd,
-  0x98d8, 0x43ce,
-  0x98da, 0x4702,
-  0x98db, 0x43d1,
-  0x98dc, 0x4703,
-  0x98df, 0x43d4,
-  0x98e0, 0x4706,
-  0x98e3, 0x3d65,
-  0x98e4, 0x4709,
-  0x98e7, 0x3d66,
-  0x98e8, 0x470c,
-  0x98ed, 0x3d67,
-  0x98ee, 0x4711,
-  0x98f0, 0x3d68,
-  0x98f1, 0x4713,
-  0x98f2, 0x3d69,
-  0x98f3, 0x4714,
-  0x98f4, 0x43d5,
-  0x98f6, 0x4715,
-  0x98fc, 0x3d6a,
-  0x98fd, 0x471b,
-  0x98fe, 0x43d7,
-  0x9940, 0x471c,
-  0x9942, 0x43fc,
-  0x9943, 0x3d6b,
-  0x9944, 0x471e,
-  0x9945, 0x3d6c,
-  0x9946, 0x471f,
-  0x9947, 0x43d8,
-  0x9948, 0x4720,
-  0x994f, 0x3d6d,
-  0x9950, 0x4727,
-  0x9954, 0x43d9,
-  0x9955, 0x472b,
-  0x995c, 0x43da,
-  0x995d, 0x4732,
-  0x9964, 0x43dc,
-  0x9965, 0x4739,
-  0x996a, 0x3d6e,
-  0x996b, 0x473e,
-  0x996e, 0x3d6f,
-  0x996f, 0x4741,
-  0x9975, 0x3d70,
-  0x9976, 0x4747,
-  0x9978, 0x3d71,
-  0x9979, 0x4749,
-  0x99a1, 0x474f,
-  0x99a2, 0x3d72,
-  0x99a3, 0x4750,
-  0x99a4, 0x43c5,
-  0x99a5, 0x4751,
-  0x99a6, 0x43c6,
-  0x99a7, 0x4752,
-  0x99ae, 0x3d73,
-  0x99af, 0x4759,
-  0x99b2, 0x43de,
-  0x99b3, 0x475c,
-  0x99b6, 0x3d74,
-  0x99b7, 0x475f,
-  0x99ba, 0x3d75,
-  0x99bb, 0x4762,
-  0x99ca, 0x43e0,
-  0x99cb, 0x4771,
-  0x99cd, 0x43e2,
-  0x99ce, 0x4773,
-  0x99d3, 0x43e3,
-  0x99d4, 0x4778,
-  0x99d6, 0x43e5,
-  0x99d7, 0x477a,
-  0x99df, 0x43df,
-  0x99e0, 0x4782,
-  0x99e2, 0x3d76,
-  0x99e3, 0x4784,
-  0x99e4, 0x43ab,
-  0x99e5, 0x4785,
-  0x99e6, 0x43e7,
-  0x99e7, 0x4786,
-  0x99e8, 0x43e9,
-  0x99e9, 0x4787,
-  0x99ef, 0x43fd,
-  0x99f0, 0x478d,
-  0x99f4, 0x3d77,
-  0x99f5, 0x4791,
-  0x9a40, 0x479b,
-  0x9a4a, 0x3d78,
-  0x9a4b, 0x47a5,
-  0x9a4c, 0x3d79,
-  0x9a4d, 0x47a6,
-  0x9a59, 0x3d7a,
-  0x9a5a, 0x47b2,
-  0x9a5f, 0x43af,
-  0x9a60, 0x47b7,
-  0x9a61, 0x3d7b,
-  0x9a62, 0x47b8,
-  0x9a66, 0x43ed,
-  0x9a67, 0x47bc,
-  0x9a68, 0x3d7c,
-  0x9a69, 0x43ee,
-  0x9a6a, 0x47bd,
-  0x9a6b, 0x43ff,
-  0x9a6c, 0x47be,
-  0x9a73, 0x3d7d,
-  0x9a74, 0x47c5,
-  0x9a75, 0x43f1,
-  0x9a76, 0x47c6,
-  0x9a7e, 0x3d7e,
-  0x9aa1, 0x47ce,
-  0x9aa3, 0x43f3,
-  0x9aa4, 0x47d0,
-  0x9aa5, 0x43f2,
-  0x9aa6, 0x47d1,
-  0x9aa9, 0x43f8,
-  0x9aaa, 0x43f4,
-  0x9aab, 0x47d4,
-  0x9ab2, 0x3d7f,
-  0x9ab3, 0x47db,
-  0x9ab7, 0x3d80,
-  0x9ab8, 0x47df,
-  0x9ab9, 0x3d81,
-  0x9aba, 0x47e0,
-  0x9abb, 0x3d82,
-  0x9abc, 0x47e1,
-  0x9abd, 0x43b7,
-  0x9abe, 0x47e2,
-  0x9ac7, 0x3d83,
-  0x9ac8, 0x47eb,
-  0x9ad0, 0x3d84,
-  0x9ad1, 0x47f3,
-  0x9ad2, 0x3d85,
-  0x9ad3, 0x47f4,
-  0x9ad9, 0x3d86,
-  0x9adc, 0x47fa,
-  0x9ae2, 0x3d89,
-  0x9ae3, 0x4800,
-  0x9ae4, 0x3d8a,
-  0x9ae5, 0x4801,
-  0x9ae8, 0x3d8b,
-  0x9ae9, 0x43b0,
-  0x9aea, 0x4804,
-  0x9aee, 0x43b2,
-  0x9aef, 0x4808,
-  0x9af2, 0x3d8c,
-  0x9af3, 0x480b,
-  0x9af6, 0x3d8d,
-  0x9af7, 0x480e,
-  0x9afb, 0x3d8e,
-  0x9afc, 0x4812,
-  0x9b40, 0x4815,
-  0x9b46, 0x3d8f,
-  0x9b47, 0x481b,
-  0x9b4a, 0x3d90,
-  0x9b4b, 0x481e,
-  0x9b54, 0x3d92,
-  0x9b55, 0x4827,
-  0x9b58, 0x3d93,
-  0x9b59, 0x482a,
-  0x9b5a, 0x3d94,
-  0x9b5b, 0x482b,
-  0x9b5c, 0x3d95,
-  0x9b5d, 0x482c,
-  0x9b5e, 0x3d96,
-  0x9b60, 0x482d,
-  0x9b62, 0x482e,
-  0x9b70, 0x3d98,
-  0x9b74, 0x483c,
-  0x9b77, 0x3d9d,
-  0x9b79, 0x483e,
-  0x9b7c, 0x3da0,
-  0x9b7d, 0x4840,
-  0x9b7e, 0x3da1,
-  0x9ba1, 0x3da2,
-  0x9ba2, 0x4841,
-  0x9ba3, 0x3da3,
-  0x9ba5, 0x4842,
-  0x9ba7, 0x3da5,
-  0x9bab, 0x4844,
-  0x9bac, 0x3da9,
-  0x9bad, 0x4845,
-  0x9baf, 0x3daa,
-  0x9bb0, 0x4847,
-  0x9bb2, 0x3dab,
-  0x9bba, 0x4849,
-  0x9bbe, 0x3db3,
-  0x9bbf, 0x484d,
-  0x9bc0, 0x3db4,
-  0x9bc7, 0x484e,
-  0x9bca, 0x3dbb,
-  0x9bcb, 0x4851,
-  0x9bcc, 0x3dbc,
-  0x9bcd, 0x4852,
-  0x9bce, 0x43d0,
-  0x9bcf, 0x4853,
-  0x9bd0, 0x3dbd,
-  0x9bd2, 0x4854,
-  0x9bd3, 0x3dbf,
-  0x9bd4, 0x4855,
-  0x9bd5, 0x3dc0,
-  0x9bd6, 0x4856,
-  0x9bd8, 0x3dc1,
-  0x9bdb, 0x4858,
-  0x9bdd, 0x3dc4,
-  0x9bdf, 0x3dc5,
-  0x9be0, 0x485a,
-  0x9be1, 0x3dc6,
-  0x9be2, 0x485b,
-  0x9be3, 0x3dc7,
-  0x9be4, 0x485c,
-  0x9be7, 0x3dc8,
-  0x9be8, 0x485f,
-  0x9be9, 0x3dc9,
-  0x9bed, 0x4860,
-  0x9bee, 0x3dcd,
-  0x9bf0, 0x4861,
-  0x9bf3, 0x3dcf,
-  0x9bf4, 0x4864,
-  0x9bf7, 0x4866,
-  0x9bf8, 0x3dd1,
-  0x9bfa, 0x4867,
-  0x9bfb, 0x3dd3,
-  0x9bfd, 0x4868,
-  0x9c40, 0x3dd5,
-  0x9c43, 0x486a,
-  0x9c44, 0x3dd8,
-  0x9c47, 0x486b,
-  0x9c48, 0x3ddb,
-  0x9c49, 0x486c,
-  0x9c4a, 0x3ddc,
-  0x9c4b, 0x486d,
-  0x9c4d, 0x3ddd,
-  0x9c54, 0x486f,
-  0x9c55, 0x3de4,
-  0x9c56, 0x4870,
-  0x9c57, 0x3de5,
-  0x9c5c, 0x4871,
-  0x9c5d, 0x3dea,
-  0x9c5e, 0x4872,
-  0x9c60, 0x3deb,
-  0x9c61, 0x4874,
-  0x9c63, 0x4875,
-  0x9c64, 0x3ded,
-  0x9c67, 0x4876,
-  0x9c69, 0x4877,
-  0x9c6a, 0x3df1,
-  0x9c6c, 0x4878,
-  0x9c6d, 0x3df2,
-  0x9c6e, 0x4879,
-  0x9c6f, 0x3df3,
-  0x9c73, 0x487a,
-  0x9c75, 0x3df7,
-  0x9c78, 0x487c,
-  0x9c79, 0x3dfa,
-  0x9c7a, 0x487d,
-  0x9c7b, 0x3dfb,
-  0x9c7d, 0x487e,
-  0x9c7e, 0x3dfd,
-  0x9ca1, 0x3dfe,
-  0x9ca3, 0x487f,
-  0x9ca5, 0x3e00,
-  0x9ca6, 0x4881,
-  0x9ca8, 0x3e01,
-  0x9caa, 0x4883,
-  0x9cab, 0x3e03,
-  0x9cac, 0x4884,
-  0x9cad, 0x3e04,
-  0x9caf, 0x4885,
-  0x9cb1, 0x3e06,
-  0x9cbb, 0x4887,
-  0x9cbe, 0x3e12,
-  0x9cc3, 0x4888,
-  0x9cc6, 0x3e17,
-  0x9cce, 0x488b,
-  0x9ccf, 0x3e1f,
-  0x9cd1, 0x3e21,
-  0x9cd4, 0x488c,
-  0x9cd8, 0x3e24,
-  0x9cdb, 0x4890,
-  0x9cdc, 0x3e27,
-  0x9ce6, 0x4891,
-  0x9ce7, 0x3e31,
-  0x9cea, 0x4892,
-  0x9ceb, 0x3e34,
-  0x9ced, 0x4893,
-  0x9cee, 0x3e36,
-  0x9cfa, 0x4894,
-  0x9cfd, 0x3e42,
-  0x9cfe, 0x4897,
-  0x9d40, 0x43e8,
-  0x9d41, 0x4898,
-  0x9d46, 0x3e43,
-  0x9d47, 0x489d,
-  0x9d49, 0x3e44,
-  0x9d4a, 0x489f,
-  0x9d4c, 0x3e46,
-  0x9d4e, 0x48a1,
-  0x9d4f, 0x3e48,
-  0x9d50, 0x48a2,
-  0x9d51, 0x3e49,
-  0x9d52, 0x48a3,
-  0x9d55, 0x3e4a,
-  0x9d56, 0x48a6,
-  0x9d58, 0x48a7,
-  0x9d5b, 0x48a9,
-  0x9d61, 0x43c9,
-  0x9d62, 0x3e4c,
-  0x9d63, 0x48af,
-  0x9d64, 0x3e4d,
-  0x9d65, 0x48b0,
-  0x9d78, 0x43f5,
-  0x9d79, 0x3e4e,
-  0x9d7a, 0x48c3,
-  0x9d7e, 0x3e4f,
-  0x9da1, 0x48c7,
-  0x9da5, 0x3e50,
-  0x9da9, 0x48cb,
-  0x9daa, 0x3e54,
-  0x9dab, 0x48cc,
-  0x9dac, 0x3e55,
-  0x9dae, 0x48cd,
-  0x9db0, 0x3e58,
-  0x9db1, 0x48cf,
-  0x9db3, 0x3e59,
-  0x9db4, 0x48d1,
-  0x9db5, 0x3e5a,
-  0x9db6, 0x48d2,
-  0x9db7, 0x3e5b,
-  0x9db8, 0x48d3,
-  0x9dbc, 0x3e5c,
-  0x9dbe, 0x48d7,
-  0x9dbf, 0x3e5e,
-  0x9dc1, 0x48d8,
-  0x9dc3, 0x3e60,
-  0x9dc5, 0x48da,
-  0x9dc7, 0x3e62,
-  0x9dc9, 0x48dc,
-  0x9dca, 0x3e64,
-  0x9dcb, 0x48dd,
-  0x9dcd, 0x3e65,
-  0x9dd2, 0x48df,
-  0x9dd3, 0x3e6a,
-  0x9dd6, 0x48e0,
-  0x9dda, 0x3e6d,
-  0x9dfc, 0x48e4,
-  0x9dfd, 0x3e8f,
-  0x9e40, 0x3e91,
-  0x9e43, 0x48e5,
-  0x9e44, 0x3e95,
-  0x9e5f, 0x48e6,
-  0x9e60, 0x3eb1,
-  0x9e63, 0x48e7,
-  0x9e64, 0x3eb4,
-  0x9e66, 0x48e8,
-  0x9e68, 0x3eb6,
-  0x9e69, 0x48ea,
-  0x9e6a, 0x3eb7,
-  0x9e6b, 0x48eb,
-  0x9e71, 0x3eb8,
-  0x9e72, 0x48f1,
-  0x9e73, 0x3eb9,
-  0x9e74, 0x48f2,
-  0x9e77, 0x3eba,
-  0x9e79, 0x48f5,
-  0x9e7a, 0x3ebc,
-  0x9e7b, 0x48f6,
-  0x9e7c, 0x3ebd,
-  0x9e7d, 0x48f7,
-  0x9e7e, 0x3ebe,
-  0x9ea1, 0x3ebf,
-  0x9ea3, 0x48f8,
-  0x9ea4, 0x3ec1,
-  0x9ea7, 0x48f9,
-  0x9eaa, 0x3ec5,
-  0x9eab, 0x48fb,
-  0x9ead, 0x3ec7,
-  0x9eae, 0x48fc,
-  0x9eaf, 0x3ec8,
-  0x9eb2, 0x48fd,
-  0x9eb4, 0x3ecb,
-  0x9eb5, 0x48ff,
-  0x9eb6, 0x3ecc,
-  0x9eb8, 0x4900,
-  0x9eb9, 0x3ece,
-  0x9eba, 0x4901,
-  0x9ebc, 0x3ecf,
-  0x9ebd, 0x4903,
-  0x9ebf, 0x3ed0,
-  0x9ec1, 0x4905,
-  0x9ec5, 0x3ed3,
-  0x9ec6, 0x4908,
-  0x9ec7, 0x3ed4,
-  0x9ecb, 0x4909,
-  0x9ecd, 0x3ed9,
-  0x9ece, 0x490b,
-  0x9ed0, 0x3eda,
-  0x9ed2, 0x490d,
-  0x9ed3, 0x3edc,
-  0x9ed4, 0x490e,
-  0x9ed6, 0x3edd,
-  0x9ed8, 0x4910,
-  0x9eda, 0x3edf,
-  0x9ef0, 0x3ef5,
-  0x9ef2, 0x4912,
-  0x9ef3, 0x3ef7,
-  0x9ef5, 0x3ef9,
-  0x9ef6, 0x4913,
-  0x9ef9, 0x3efa,
-  0x9efb, 0x4916,
-  0x9efc, 0x3efc,
-  0x9efe, 0x3efe,
-  0x9f40, 0x3eff,
-  0x9f43, 0x4917,
-  0x9f44, 0x3f02,
-  0x9f48, 0x4918,
-  0x9f49, 0x3f06,
-  0x9f4b, 0x4919,
-  0x9f4d, 0x3f08,
-  0x9f4f, 0x3f0a,
-  0x9f61, 0x3f1c,
-  0x9f67, 0x491b,
-  0x9f69, 0x3f23,
-  0x9f70, 0x491d,
-  0x9f71, 0x3f2a,
-  0x9fa1, 0x3f38,
-  0x9fae, 0x3f45,
-  0x9fb2, 0x3f49,
-  0x9fb5, 0x491e,
-  0x9fb6, 0x3f4c,
-  0x9fbb, 0x491f,
-  0x9fbc, 0x3f51,
-  0x9fbf, 0x4920,
-  0x9fc1, 0x4921,
-  0x9fc2, 0x3f55,
-  0x9fc9, 0x3f5c,
-  0x9fcc, 0x4922,
-  0x9fcd, 0x3f60,
-  0x9fd4, 0x4923,
-  0x9fd5, 0x3f68,
-  0x9fd9, 0x3f6c,
-  0x9fdb, 0x3f6e,
-  0x9fe4, 0x4924,
-  0x9fe5, 0x3f77,
-  0x9fe7, 0x3f79,
-  0x9feb, 0x3f7d,
-  0x9ff0, 0x3f82,
-  0x9ff9, 0x4925,
-  0x9ffa, 0x3f8b,
-  0xa040, 0x4926,
-  0xa041, 0x3f90,
-  0xa047, 0x4927,
-  0xa048, 0x3f96,
-  0xa055, 0x4928,
-  0xa056, 0x3fa3,
-  0xa058, 0x3fa5,
-  0xa05b, 0x3fa8,
-  0xa064, 0x3fb1,
-  0xa06d, 0x4929,
-  0xa06e, 0x3fba,
-  0xa073, 0x3fbf,
-  0xa078, 0x3fc4,
-  0xa07b, 0x492a,
-  0xa07c, 0x3fc7,
-  0xa0a1, 0x3fca,
-  0xa0a2, 0x492b,
-  0xa0a3, 0x3fcb,
-  0xa0a6, 0x3fce,
-  0xa0a7, 0x492c,
-  0xa0a8, 0x3fcf,
-  0xa0ae, 0x3fd5,
-  0xa0b0, 0x3fd7,
-  0xa0c5, 0x492d,
-  0xa0c6, 0x3fec,
-  0xa0d0, 0x492e,
-  0xa0d1, 0x3ff6,
-  0xa0d4, 0x3ff9,
-  0xa0d6, 0x3ffb,
-  0xa0e0, 0x4005,
-  0xa0e2, 0x4007,
-  0xa0e3, 0x492f,
-  0xa0e5, 0x4009,
-  0xa0e7, 0x4930,
-  0xa0ee, 0x43b4,
-  0xa0ef, 0x4937,
-  0xa0f2, 0x43b8,
-  0xa0f3, 0x493a,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d0, 0x022a,
-  0xc6d4, 0x022e,
-  0xc6d6, 0x0230,
-  0xc6d8, 0x35b3,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc8cd, 0x36e1,
-  0xc8d4, 0x44c6,
-  0xc8d7, 0x451c,
-  0xc8e0, 0x02dc,
-  0xc8e1, 0x4525,
-  0xc8e9, 0x0509,
-  0xc8ea, 0x452d,
-  0xc8f1, 0x09f6,
-  0xc8f5, 0x4992,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xfa40, 0x400b,
-  0xfa60, 0x402b,
-  0xfa67, 0x4032,
-  0xfaa1, 0x404a,
-  0xfaa9, 0x4946,
-  0xfaab, 0x4054,
-  0xfabe, 0x4067,
-  0xfac6, 0x406f,
-  0xfad6, 0x407f,
-  0xfb40, 0x40a8,
-  0xfb49, 0x40b1,
-  0xfb53, 0x4948,
-  0xfb54, 0x40bc,
-  0xfb6e, 0x4949,
-  0xfb6f, 0x40d7,
-  0xfba1, 0x40e7,
-  0xfba3, 0x494a,
-  0xfba4, 0x40ea,
-  0xfbb9, 0x40ff,
-  0xfbbf, 0x494b,
-  0xfbc0, 0x4105,
-  0xfbcd, 0x494c,
-  0xfbce, 0x4112,
-  0xfbf4, 0x4138,
-  0xfbfa, 0x413e,
-  0xfc40, 0x4143,
-  0xfc4a, 0x494d,
-  0xfc4b, 0x414d,
-  0xfc50, 0x4151,
-  0xfc52, 0x494e,
-  0xfc53, 0x4153,
-  0xfc63, 0x494f,
-  0xfc64, 0x4163,
-  0xfc6d, 0x4950,
-  0xfc6e, 0x416d,
-  0xfc75, 0x4951,
-  0xfc76, 0x4174,
-  0xfca1, 0x417d,
-  0xfcba, 0x4195,
-  0xfcbc, 0x4952,
-  0xfcbe, 0x4198,
-  0xfccc, 0x4954,
-  0xfccd, 0x41a7,
-  0xfce3, 0x4955,
-  0xfce4, 0x41bd,
-  0xfcee, 0x4956,
-  0xfcef, 0x41c7,
-  0xfcf2, 0x41ca,
-  0xfd40, 0x41d7,
-  0xfd49, 0x4957,
-  0xfd4a, 0x41e0,
-  0xfd6a, 0x4958,
-  0xfd6b, 0x4201,
-  0xfda1, 0x4215,
-  0xfdb9, 0x422d,
-  0xfdbc, 0x4230,
-  0xfde3, 0x4959,
-  0xfde4, 0x4258,
-  0xfdf2, 0x495a,
-  0xfdf3, 0x4266,
-  0xfe40, 0x4272,
-  0xfe53, 0x4285,
-  0xfe6d, 0x495b,
-  0xfe6e, 0x429f,
-  0xfe70, 0x42a1,
-  0xfe78, 0x495c,
-  0xfe79, 0x42a9,
-  0xfea1, 0x42af,
-  0xfeab, 0x42b8,
-  0xfede, 0x495d,
-  0xfee0, 0x42eb,
-  0xfeed, 0x495f,
-  0xfeef, 0x42f8,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKscsB5HEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKscsB5HMap2, 1129
-};
-
-static Gushort cns13HKscsB5VMap2[2284] = {
-  0x0000, 0x0000,
-  0x8840, 0x44c9,
-  0x8856, 0x4961,
-  0x88a1, 0x498a,
-  0x88a9, 0x499c,
-  0x8940, 0x4534,
-  0x8943, 0x4536,
-  0x8946, 0x4537,
-  0x894c, 0x453b,
-  0x894d, 0x43c3,
-  0x894e, 0x453c,
-  0x8951, 0x439a,
-  0x8952, 0x453f,
-  0x89a1, 0x456c,
-  0x89a6, 0x43a2,
-  0x89ab, 0x43ec,
-  0x89ac, 0x4571,
-  0x89ad, 0x43eb,
-  0x89ae, 0x4572,
-  0x89b0, 0x4573,
-  0x89b5, 0x4576,
-  0x89c1, 0x4581,
-  0x89c5, 0x4584,
-  0x89cf, 0x43bc,
-  0x89d0, 0x458e,
-  0x89d9, 0x439c,
-  0x89da, 0x4597,
-  0x89db, 0x439e,
-  0x89dc, 0x4598,
-  0x89dd, 0x439f,
-  0x89de, 0x4599,
-  0x89e1, 0x43a1,
-  0x89e2, 0x459c,
-  0x89e3, 0x43a3,
-  0x89e4, 0x459d,
-  0x89ea, 0x43a5,
-  0x89ec, 0x45a3,
-  0x89fa, 0x43a9,
-  0x89fb, 0x45b1,
-  0x8a40, 0x45b5,
-  0x8a41, 0x4309,
-  0x8a43, 0x430b,
-  0x8a4d, 0x45b6,
-  0x8a4e, 0x4316,
-  0x8a5a, 0x45b7,
-  0x8a5b, 0x4323,
-  0x8a5e, 0x45b8,
-  0x8a5f, 0x4327,
-  0x8a64, 0x432c,
-  0x8a71, 0x45b9,
-  0x8a72, 0x433a,
-  0x8a76, 0x433e,
-  0x8a77, 0x45ba,
-  0x8a78, 0x4340,
-  0x8a7a, 0x45bb,
-  0x8a7b, 0x4343,
-  0x8a7c, 0x45bc,
-  0x8a7d, 0x4345,
-  0x8a7e, 0x45bd,
-  0x8aa1, 0x4347,
-  0x8aa8, 0x45be,
-  0x8aa9, 0x434f,
-  0x8aac, 0x4352,
-  0x8ab2, 0x4358,
-  0x8ab6, 0x45bf,
-  0x8ab7, 0x435d,
-  0x8ab8, 0x45c0,
-  0x8ab9, 0x435f,
-  0x8abb, 0x4361,
-  0x8ac9, 0x436f,
-  0x8acc, 0x45c1,
-  0x8ace, 0x4374,
-  0x8ad6, 0x45c2,
-  0x8ad8, 0x437e,
-  0x8adf, 0x4385,
-  0x8ae6, 0x45c4,
-  0x8ae7, 0x43db,
-  0x8ae8, 0x45c5,
-  0x8af6, 0x45d2,
-  0x8b40, 0x45db,
-  0x8b41, 0x438c,
-  0x8b43, 0x45dc,
-  0x8b45, 0x438e,
-  0x8b46, 0x45de,
-  0x8b47, 0x438f,
-  0x8b48, 0x45df,
-  0x8b49, 0x4390,
-  0x8b4a, 0x45e0,
-  0x8b4b, 0x4391,
-  0x8b4c, 0x45e1,
-  0x8b4d, 0x4392,
-  0x8b51, 0x45e2,
-  0x8b55, 0x45e5,
-  0x8b58, 0x4397,
-  0x8b59, 0x45e8,
-  0x8b5a, 0x4398,
-  0x8b5b, 0x43c4,
-  0x8b5c, 0x45e9,
-  0x8b61, 0x43a7,
-  0x8b62, 0x45ee,
-  0x8b68, 0x43ac,
-  0x8b69, 0x45f4,
-  0x8ba1, 0x460a,
-  0x8bc0, 0x44df,
-  0x8bde, 0x44fc,
-  0x8d60, 0x4629,
-  0x8d62, 0x43ba,
-  0x8d63, 0x462b,
-  0x8d68, 0x43bb,
-  0x8d69, 0x43a0,
-  0x8d6a, 0x43bd,
-  0x8d6b, 0x4630,
-  0x8d6e, 0x43be,
-  0x8d6f, 0x4633,
-  0x8d76, 0x43bf,
-  0x8d77, 0x463a,
-  0x8d7a, 0x43c0,
-  0x8d7b, 0x463d,
-  0x8d7c, 0x43c1,
-  0x8d7d, 0x463e,
-  0x8da1, 0x4640,
-  0x8da5, 0x43c2,
-  0x8da6, 0x4644,
-  0x8da8, 0x43b9,
-  0x8da9, 0x43ad,
-  0x8daa, 0x4646,
-  0x8db6, 0x43c7,
-  0x8db7, 0x4652,
-  0x8dc3, 0x43c8,
-  0x8dc4, 0x465e,
-  0x8dfa, 0x43f9,
-  0x8dfb, 0x4694,
-  0x8e40, 0x372b,
-  0x8e45, 0x4698,
-  0x8e46, 0x3730,
-  0x8e6a, 0x3754,
-  0x8e6b, 0x4699,
-  0x8e6d, 0x3756,
-  0x8e70, 0x3759,
-  0x8e76, 0x469b,
-  0x8e77, 0x375f,
-  0x8e7b, 0x469c,
-  0x8e7c, 0x3764,
-  0x8ea1, 0x3766,
-  0x8ea6, 0x469d,
-  0x8ea7, 0x376b,
-  0x8eac, 0x3770,
-  0x8eb5, 0x3779,
-  0x8eb8, 0x469e,
-  0x8eb9, 0x377d,
-  0x8ec9, 0x469f,
-  0x8eca, 0x378d,
-  0x8ece, 0x3791,
-  0x8ed1, 0x3794,
-  0x8ee5, 0x46a0,
-  0x8ee6, 0x37a8,
-  0x8eef, 0x46a1,
-  0x8ef0, 0x37b1,
-  0x8ef6, 0x46a2,
-  0x8ef7, 0x37b8,
-  0x8f40, 0x37c0,
-  0x8f58, 0x37d8,
-  0x8f59, 0x46a3,
-  0x8f5a, 0x37d9,
-  0x8f5f, 0x46a4,
-  0x8f60, 0x37de,
-  0x8f67, 0x46a5,
-  0x8f68, 0x37e5,
-  0x8f6a, 0x37e7,
-  0x8f6f, 0x37ec,
-  0x8f79, 0x46a6,
-  0x8f7a, 0x37f7,
-  0x8fa1, 0x37fc,
-  0x8fb0, 0x46a7,
-  0x8fb1, 0x380c,
-  0x8fc5, 0x46a8,
-  0x8fc6, 0x3820,
-  0x8fc7, 0x46a9,
-  0x8fc8, 0x3821,
-  0x8fca, 0x46aa,
-  0x8fcd, 0x3826,
-  0x8fda, 0x46ab,
-  0x8fdb, 0x3833,
-  0x8fe3, 0x46ac,
-  0x8fe4, 0x383c,
-  0x8ffc, 0x46ad,
-  0x8ffd, 0x3854,
-  0x9040, 0x3856,
-  0x9055, 0x46ae,
-  0x9056, 0x386c,
-  0x905c, 0x46af,
-  0x905f, 0x3873,
-  0x906e, 0x3882,
-  0x906f, 0x46b2,
-  0x9070, 0x3883,
-  0x907b, 0x388d,
-  0x90a1, 0x3891,
-  0x90a6, 0x46b3,
-  0x90a7, 0x3896,
-  0x90b8, 0x46b4,
-  0x90b9, 0x38a7,
-  0x90dd, 0x38cb,
-  0x90f2, 0x38e0,
-  0x9140, 0x38ed,
-  0x9165, 0x46b5,
-  0x9166, 0x3912,
-  0x916e, 0x46b6,
-  0x916f, 0x391a,
-  0x917e, 0x46b7,
-  0x91a1, 0x3929,
-  0x91a2, 0x46b8,
-  0x91a3, 0x392a,
-  0x91c0, 0x3947,
-  0x91c8, 0x46b9,
-  0x91c9, 0x3950,
-  0x9240, 0x3986,
-  0x9245, 0x398b,
-  0x9264, 0x46ba,
-  0x9265, 0x39ab,
-  0x926d, 0x46bb,
-  0x926e, 0x39b4,
-  0x92a1, 0x39c5,
-  0x92b3, 0x39d3,
-  0x92c9, 0x39e9,
-  0x92d2, 0x39f2,
-  0x92e5, 0x46bc,
-  0x92e6, 0x3a05,
-  0x92f2, 0x46bd,
-  0x92f3, 0x3a11,
-  0x9340, 0x3a1d,
-  0x9368, 0x46be,
-  0x9369, 0x3a45,
-  0x93a1, 0x3a5b,
-  0x93aa, 0x46bf,
-  0x93ab, 0x3a64,
-  0x93c2, 0x46c0,
-  0x93c3, 0x3a7b,
-  0x93e5, 0x46c1,
-  0x93e6, 0x3a9d,
-  0x93e8, 0x46c2,
-  0x93e9, 0x3aa0,
-  0x93eb, 0x46c3,
-  0x93ec, 0x3aa2,
-  0x9440, 0x3ab5,
-  0x9446, 0x46c4,
-  0x9448, 0x3abc,
-  0x9479, 0x46c5,
-  0x947a, 0x3aee,
-  0x94a1, 0x3af3,
-  0x94cb, 0x46c6,
-  0x94cc, 0x3b1e,
-  0x9540, 0x3b51,
-  0x954d, 0x46c7,
-  0x954e, 0x3b5e,
-  0x955a, 0x46c8,
-  0x955b, 0x3b6a,
-  0x955f, 0x46c9,
-  0x9560, 0x3b6f,
-  0x95a1, 0x3b8e,
-  0x95c6, 0x46ca,
-  0x95c7, 0x3bb3,
-  0x95da, 0x3bc6,
-  0x9640, 0x3beb,
-  0x9645, 0x3bf0,
-  0x9651, 0x46cb,
-  0x9652, 0x3bfd,
-  0x966a, 0x46cc,
-  0x966b, 0x3c16,
-  0x96a1, 0x3c2a,
-  0x96d4, 0x46cd,
-  0x96d5, 0x3c5d,
-  0x96ee, 0x3c76,
-  0x96fd, 0x3c85,
-  0x9740, 0x3c87,
-  0x97a1, 0x3cc6,
-  0x9840, 0x3d24,
-  0x9844, 0x46ce,
-  0x9846, 0x3d2a,
-  0x986f, 0x46d0,
-  0x9870, 0x3d54,
-  0x9875, 0x46d1,
-  0x9877, 0x3d59,
-  0x9878, 0x46d3,
-  0x987a, 0x3d5a,
-  0x987b, 0x46d5,
-  0x98a1, 0x46d9,
-  0x98a3, 0x3d5b,
-  0x98a4, 0x46db,
-  0x98af, 0x3d5c,
-  0x98b0, 0x46e6,
-  0x98b4, 0x43ca,
-  0x98b5, 0x46ea,
-  0x98b6, 0x3d5d,
-  0x98b7, 0x46eb,
-  0x98b8, 0x43cc,
-  0x98b9, 0x3d5e,
-  0x98ba, 0x46ec,
-  0x98bb, 0x43fa,
-  0x98bc, 0x46ed,
-  0x98bd, 0x3d5f,
-  0x98bf, 0x46ee,
-  0x98c2, 0x3d61,
-  0x98c3, 0x46f1,
-  0x98c4, 0x3d62,
-  0x98c5, 0x46f2,
-  0x98c6, 0x3d63,
-  0x98c8, 0x46f3,
-  0x98d2, 0x43cd,
-  0x98d3, 0x46fd,
-  0x98d8, 0x43ce,
-  0x98da, 0x4702,
-  0x98db, 0x43d1,
-  0x98dc, 0x4703,
-  0x98df, 0x43d4,
-  0x98e0, 0x4706,
-  0x98e3, 0x3d65,
-  0x98e4, 0x4709,
-  0x98e7, 0x3d66,
-  0x98e8, 0x470c,
-  0x98ed, 0x3d67,
-  0x98ee, 0x4711,
-  0x98f0, 0x3d68,
-  0x98f1, 0x4713,
-  0x98f2, 0x3d69,
-  0x98f3, 0x4714,
-  0x98f4, 0x43d5,
-  0x98f6, 0x4715,
-  0x98fc, 0x3d6a,
-  0x98fd, 0x471b,
-  0x98fe, 0x43d7,
-  0x9940, 0x471c,
-  0x9942, 0x43fc,
-  0x9943, 0x3d6b,
-  0x9944, 0x471e,
-  0x9945, 0x3d6c,
-  0x9946, 0x471f,
-  0x9947, 0x43d8,
-  0x9948, 0x4720,
-  0x994f, 0x3d6d,
-  0x9950, 0x4727,
-  0x9954, 0x43d9,
-  0x9955, 0x472b,
-  0x995c, 0x43da,
-  0x995d, 0x4732,
-  0x9964, 0x43dc,
-  0x9965, 0x4739,
-  0x996a, 0x3d6e,
-  0x996b, 0x473e,
-  0x996e, 0x3d6f,
-  0x996f, 0x4741,
-  0x9975, 0x3d70,
-  0x9976, 0x4747,
-  0x9978, 0x3d71,
-  0x9979, 0x4749,
-  0x99a1, 0x474f,
-  0x99a2, 0x3d72,
-  0x99a3, 0x4750,
-  0x99a4, 0x43c5,
-  0x99a5, 0x4751,
-  0x99a6, 0x43c6,
-  0x99a7, 0x4752,
-  0x99ae, 0x3d73,
-  0x99af, 0x4759,
-  0x99b2, 0x43de,
-  0x99b3, 0x475c,
-  0x99b6, 0x3d74,
-  0x99b7, 0x475f,
-  0x99ba, 0x3d75,
-  0x99bb, 0x4762,
-  0x99ca, 0x43e0,
-  0x99cb, 0x4771,
-  0x99cd, 0x43e2,
-  0x99ce, 0x4773,
-  0x99d3, 0x43e3,
-  0x99d4, 0x4778,
-  0x99d6, 0x43e5,
-  0x99d7, 0x477a,
-  0x99df, 0x43df,
-  0x99e0, 0x4782,
-  0x99e2, 0x3d76,
-  0x99e3, 0x4784,
-  0x99e4, 0x43ab,
-  0x99e5, 0x4785,
-  0x99e6, 0x43e7,
-  0x99e7, 0x4786,
-  0x99e8, 0x43e9,
-  0x99e9, 0x4787,
-  0x99ef, 0x43fd,
-  0x99f0, 0x478d,
-  0x99f4, 0x3d77,
-  0x99f5, 0x4791,
-  0x9a40, 0x479b,
-  0x9a4a, 0x3d78,
-  0x9a4b, 0x47a5,
-  0x9a4c, 0x3d79,
-  0x9a4d, 0x47a6,
-  0x9a59, 0x3d7a,
-  0x9a5a, 0x47b2,
-  0x9a5f, 0x43af,
-  0x9a60, 0x47b7,
-  0x9a61, 0x3d7b,
-  0x9a62, 0x47b8,
-  0x9a66, 0x43ed,
-  0x9a67, 0x47bc,
-  0x9a68, 0x3d7c,
-  0x9a69, 0x43ee,
-  0x9a6a, 0x47bd,
-  0x9a6b, 0x43ff,
-  0x9a6c, 0x47be,
-  0x9a73, 0x3d7d,
-  0x9a74, 0x47c5,
-  0x9a75, 0x43f1,
-  0x9a76, 0x47c6,
-  0x9a7e, 0x3d7e,
-  0x9aa1, 0x47ce,
-  0x9aa3, 0x43f3,
-  0x9aa4, 0x47d0,
-  0x9aa5, 0x43f2,
-  0x9aa6, 0x47d1,
-  0x9aa9, 0x43f8,
-  0x9aaa, 0x43f4,
-  0x9aab, 0x47d4,
-  0x9ab2, 0x3d7f,
-  0x9ab3, 0x47db,
-  0x9ab7, 0x3d80,
-  0x9ab8, 0x47df,
-  0x9ab9, 0x3d81,
-  0x9aba, 0x47e0,
-  0x9abb, 0x3d82,
-  0x9abc, 0x47e1,
-  0x9abd, 0x43b7,
-  0x9abe, 0x47e2,
-  0x9ac7, 0x3d83,
-  0x9ac8, 0x47eb,
-  0x9ad0, 0x3d84,
-  0x9ad1, 0x47f3,
-  0x9ad2, 0x3d85,
-  0x9ad3, 0x47f4,
-  0x9ad9, 0x3d86,
-  0x9adc, 0x47fa,
-  0x9ae2, 0x3d89,
-  0x9ae3, 0x4800,
-  0x9ae4, 0x3d8a,
-  0x9ae5, 0x4801,
-  0x9ae8, 0x3d8b,
-  0x9ae9, 0x43b0,
-  0x9aea, 0x4804,
-  0x9aee, 0x43b2,
-  0x9aef, 0x4808,
-  0x9af2, 0x3d8c,
-  0x9af3, 0x480b,
-  0x9af6, 0x3d8d,
-  0x9af7, 0x480e,
-  0x9afb, 0x3d8e,
-  0x9afc, 0x4812,
-  0x9b40, 0x4815,
-  0x9b46, 0x3d8f,
-  0x9b47, 0x481b,
-  0x9b4a, 0x3d90,
-  0x9b4b, 0x481e,
-  0x9b54, 0x3d92,
-  0x9b55, 0x4827,
-  0x9b58, 0x3d93,
-  0x9b59, 0x482a,
-  0x9b5a, 0x3d94,
-  0x9b5b, 0x482b,
-  0x9b5c, 0x3d95,
-  0x9b5d, 0x482c,
-  0x9b5e, 0x3d96,
-  0x9b60, 0x482d,
-  0x9b62, 0x482e,
-  0x9b70, 0x3d98,
-  0x9b74, 0x483c,
-  0x9b77, 0x3d9d,
-  0x9b79, 0x483e,
-  0x9b7c, 0x3da0,
-  0x9b7d, 0x4840,
-  0x9b7e, 0x3da1,
-  0x9ba1, 0x3da2,
-  0x9ba2, 0x4841,
-  0x9ba3, 0x3da3,
-  0x9ba5, 0x4842,
-  0x9ba7, 0x3da5,
-  0x9bab, 0x4844,
-  0x9bac, 0x3da9,
-  0x9bad, 0x4845,
-  0x9baf, 0x3daa,
-  0x9bb0, 0x4847,
-  0x9bb2, 0x3dab,
-  0x9bba, 0x4849,
-  0x9bbe, 0x3db3,
-  0x9bbf, 0x484d,
-  0x9bc0, 0x3db4,
-  0x9bc7, 0x484e,
-  0x9bca, 0x3dbb,
-  0x9bcb, 0x4851,
-  0x9bcc, 0x3dbc,
-  0x9bcd, 0x4852,
-  0x9bce, 0x43d0,
-  0x9bcf, 0x4853,
-  0x9bd0, 0x3dbd,
-  0x9bd2, 0x4854,
-  0x9bd3, 0x3dbf,
-  0x9bd4, 0x4855,
-  0x9bd5, 0x3dc0,
-  0x9bd6, 0x4856,
-  0x9bd8, 0x3dc1,
-  0x9bdb, 0x4858,
-  0x9bdd, 0x3dc4,
-  0x9bdf, 0x3dc5,
-  0x9be0, 0x485a,
-  0x9be1, 0x3dc6,
-  0x9be2, 0x485b,
-  0x9be3, 0x3dc7,
-  0x9be4, 0x485c,
-  0x9be7, 0x3dc8,
-  0x9be8, 0x485f,
-  0x9be9, 0x3dc9,
-  0x9bed, 0x4860,
-  0x9bee, 0x3dcd,
-  0x9bf0, 0x4861,
-  0x9bf3, 0x3dcf,
-  0x9bf4, 0x4864,
-  0x9bf7, 0x4866,
-  0x9bf8, 0x3dd1,
-  0x9bfa, 0x4867,
-  0x9bfb, 0x3dd3,
-  0x9bfd, 0x4868,
-  0x9c40, 0x3dd5,
-  0x9c43, 0x486a,
-  0x9c44, 0x3dd8,
-  0x9c47, 0x486b,
-  0x9c48, 0x3ddb,
-  0x9c49, 0x486c,
-  0x9c4a, 0x3ddc,
-  0x9c4b, 0x486d,
-  0x9c4d, 0x3ddd,
-  0x9c54, 0x486f,
-  0x9c55, 0x3de4,
-  0x9c56, 0x4870,
-  0x9c57, 0x3de5,
-  0x9c5c, 0x4871,
-  0x9c5d, 0x3dea,
-  0x9c5e, 0x4872,
-  0x9c60, 0x3deb,
-  0x9c61, 0x4874,
-  0x9c63, 0x4875,
-  0x9c64, 0x3ded,
-  0x9c67, 0x4876,
-  0x9c69, 0x4877,
-  0x9c6a, 0x3df1,
-  0x9c6c, 0x4878,
-  0x9c6d, 0x3df2,
-  0x9c6e, 0x4879,
-  0x9c6f, 0x3df3,
-  0x9c73, 0x487a,
-  0x9c75, 0x3df7,
-  0x9c78, 0x487c,
-  0x9c79, 0x3dfa,
-  0x9c7a, 0x487d,
-  0x9c7b, 0x3dfb,
-  0x9c7d, 0x487e,
-  0x9c7e, 0x3dfd,
-  0x9ca1, 0x3dfe,
-  0x9ca3, 0x487f,
-  0x9ca5, 0x3e00,
-  0x9ca6, 0x4881,
-  0x9ca8, 0x3e01,
-  0x9caa, 0x4883,
-  0x9cab, 0x3e03,
-  0x9cac, 0x4884,
-  0x9cad, 0x3e04,
-  0x9caf, 0x4885,
-  0x9cb1, 0x3e06,
-  0x9cbb, 0x4887,
-  0x9cbe, 0x3e12,
-  0x9cc3, 0x4888,
-  0x9cc6, 0x3e17,
-  0x9cce, 0x488b,
-  0x9ccf, 0x3e1f,
-  0x9cd1, 0x3e21,
-  0x9cd4, 0x488c,
-  0x9cd8, 0x3e24,
-  0x9cdb, 0x4890,
-  0x9cdc, 0x3e27,
-  0x9ce6, 0x4891,
-  0x9ce7, 0x3e31,
-  0x9cea, 0x4892,
-  0x9ceb, 0x3e34,
-  0x9ced, 0x4893,
-  0x9cee, 0x3e36,
-  0x9cfa, 0x4894,
-  0x9cfd, 0x3e42,
-  0x9cfe, 0x4897,
-  0x9d40, 0x43e8,
-  0x9d41, 0x4898,
-  0x9d46, 0x3e43,
-  0x9d47, 0x489d,
-  0x9d49, 0x3e44,
-  0x9d4a, 0x489f,
-  0x9d4c, 0x3e46,
-  0x9d4e, 0x48a1,
-  0x9d4f, 0x3e48,
-  0x9d50, 0x48a2,
-  0x9d51, 0x3e49,
-  0x9d52, 0x48a3,
-  0x9d55, 0x3e4a,
-  0x9d56, 0x48a6,
-  0x9d58, 0x48a7,
-  0x9d5b, 0x48a9,
-  0x9d61, 0x43c9,
-  0x9d62, 0x3e4c,
-  0x9d63, 0x48af,
-  0x9d64, 0x3e4d,
-  0x9d65, 0x48b0,
-  0x9d78, 0x43f5,
-  0x9d79, 0x3e4e,
-  0x9d7a, 0x48c3,
-  0x9d7e, 0x3e4f,
-  0x9da1, 0x48c7,
-  0x9da5, 0x3e50,
-  0x9da9, 0x48cb,
-  0x9daa, 0x3e54,
-  0x9dab, 0x48cc,
-  0x9dac, 0x3e55,
-  0x9dae, 0x48cd,
-  0x9db0, 0x3e58,
-  0x9db1, 0x48cf,
-  0x9db3, 0x3e59,
-  0x9db4, 0x48d1,
-  0x9db5, 0x3e5a,
-  0x9db6, 0x48d2,
-  0x9db7, 0x3e5b,
-  0x9db8, 0x48d3,
-  0x9dbc, 0x3e5c,
-  0x9dbe, 0x48d7,
-  0x9dbf, 0x3e5e,
-  0x9dc1, 0x48d8,
-  0x9dc3, 0x3e60,
-  0x9dc5, 0x48da,
-  0x9dc7, 0x3e62,
-  0x9dc9, 0x48dc,
-  0x9dca, 0x3e64,
-  0x9dcb, 0x48dd,
-  0x9dcd, 0x3e65,
-  0x9dd2, 0x48df,
-  0x9dd3, 0x3e6a,
-  0x9dd6, 0x48e0,
-  0x9dda, 0x3e6d,
-  0x9dfc, 0x48e4,
-  0x9dfd, 0x3e8f,
-  0x9e40, 0x3e91,
-  0x9e43, 0x48e5,
-  0x9e44, 0x3e95,
-  0x9e5f, 0x48e6,
-  0x9e60, 0x3eb1,
-  0x9e63, 0x48e7,
-  0x9e64, 0x3eb4,
-  0x9e66, 0x48e8,
-  0x9e68, 0x3eb6,
-  0x9e69, 0x48ea,
-  0x9e6a, 0x3eb7,
-  0x9e6b, 0x48eb,
-  0x9e71, 0x3eb8,
-  0x9e72, 0x48f1,
-  0x9e73, 0x3eb9,
-  0x9e74, 0x48f2,
-  0x9e77, 0x3eba,
-  0x9e79, 0x48f5,
-  0x9e7a, 0x3ebc,
-  0x9e7b, 0x48f6,
-  0x9e7c, 0x3ebd,
-  0x9e7d, 0x48f7,
-  0x9e7e, 0x3ebe,
-  0x9ea1, 0x3ebf,
-  0x9ea3, 0x48f8,
-  0x9ea4, 0x3ec1,
-  0x9ea7, 0x48f9,
-  0x9eaa, 0x3ec5,
-  0x9eab, 0x48fb,
-  0x9ead, 0x3ec7,
-  0x9eae, 0x48fc,
-  0x9eaf, 0x3ec8,
-  0x9eb2, 0x48fd,
-  0x9eb4, 0x3ecb,
-  0x9eb5, 0x48ff,
-  0x9eb6, 0x3ecc,
-  0x9eb8, 0x4900,
-  0x9eb9, 0x3ece,
-  0x9eba, 0x4901,
-  0x9ebc, 0x3ecf,
-  0x9ebd, 0x4903,
-  0x9ebf, 0x3ed0,
-  0x9ec1, 0x4905,
-  0x9ec5, 0x3ed3,
-  0x9ec6, 0x4908,
-  0x9ec7, 0x3ed4,
-  0x9ecb, 0x4909,
-  0x9ecd, 0x3ed9,
-  0x9ece, 0x490b,
-  0x9ed0, 0x3eda,
-  0x9ed2, 0x490d,
-  0x9ed3, 0x3edc,
-  0x9ed4, 0x490e,
-  0x9ed6, 0x3edd,
-  0x9ed8, 0x4910,
-  0x9eda, 0x3edf,
-  0x9ef0, 0x3ef5,
-  0x9ef2, 0x4912,
-  0x9ef3, 0x3ef7,
-  0x9ef5, 0x3ef9,
-  0x9ef6, 0x4913,
-  0x9ef9, 0x3efa,
-  0x9efb, 0x4916,
-  0x9efc, 0x3efc,
-  0x9efe, 0x3efe,
-  0x9f40, 0x3eff,
-  0x9f43, 0x4917,
-  0x9f44, 0x3f02,
-  0x9f48, 0x4918,
-  0x9f49, 0x3f06,
-  0x9f4b, 0x4919,
-  0x9f4d, 0x3f08,
-  0x9f4f, 0x3f0a,
-  0x9f61, 0x3f1c,
-  0x9f67, 0x491b,
-  0x9f69, 0x3f23,
-  0x9f70, 0x491d,
-  0x9f71, 0x3f2a,
-  0x9fa1, 0x3f38,
-  0x9fae, 0x3f45,
-  0x9fb2, 0x3f49,
-  0x9fb5, 0x491e,
-  0x9fb6, 0x3f4c,
-  0x9fbb, 0x491f,
-  0x9fbc, 0x3f51,
-  0x9fbf, 0x4920,
-  0x9fc1, 0x4921,
-  0x9fc2, 0x3f55,
-  0x9fc9, 0x3f5c,
-  0x9fcc, 0x4922,
-  0x9fcd, 0x3f60,
-  0x9fd4, 0x4923,
-  0x9fd5, 0x3f68,
-  0x9fd9, 0x3f6c,
-  0x9fdb, 0x3f6e,
-  0x9fe4, 0x4924,
-  0x9fe5, 0x3f77,
-  0x9fe7, 0x3f79,
-  0x9feb, 0x3f7d,
-  0x9ff0, 0x3f82,
-  0x9ff9, 0x4925,
-  0x9ffa, 0x3f8b,
-  0xa040, 0x4926,
-  0xa041, 0x3f90,
-  0xa047, 0x4927,
-  0xa048, 0x3f96,
-  0xa055, 0x4928,
-  0xa056, 0x3fa3,
-  0xa058, 0x3fa5,
-  0xa05b, 0x3fa8,
-  0xa064, 0x3fb1,
-  0xa06d, 0x4929,
-  0xa06e, 0x3fba,
-  0xa073, 0x3fbf,
-  0xa078, 0x3fc4,
-  0xa07b, 0x492a,
-  0xa07c, 0x3fc7,
-  0xa0a1, 0x3fca,
-  0xa0a2, 0x492b,
-  0xa0a3, 0x3fcb,
-  0xa0a6, 0x3fce,
-  0xa0a7, 0x492c,
-  0xa0a8, 0x3fcf,
-  0xa0ae, 0x3fd5,
-  0xa0b0, 0x3fd7,
-  0xa0c5, 0x492d,
-  0xa0c6, 0x3fec,
-  0xa0d0, 0x492e,
-  0xa0d1, 0x3ff6,
-  0xa0d4, 0x3ff9,
-  0xa0d6, 0x3ffb,
-  0xa0e0, 0x4005,
-  0xa0e2, 0x4007,
-  0xa0e3, 0x492f,
-  0xa0e5, 0x4009,
-  0xa0e7, 0x4930,
-  0xa0ee, 0x43b4,
-  0xa0ef, 0x4937,
-  0xa0f2, 0x43b8,
-  0xa0f3, 0x493a,
-  0xa140, 0x0063,
-  0xa159, 0x35af,
-  0xa15d, 0x0080,
-  0xa1a1, 0x00a2,
-  0xa1f6, 0x00f8,
-  0xa1f7, 0x00f7,
-  0xa1f8, 0x00f9,
-  0xa240, 0x0100,
-  0xa2a1, 0x013f,
-  0xa340, 0x019d,
-  0xa3a1, 0x01dc,
-  0xa3bd, 0x01f7,
-  0xa440, 0x0253,
-  0xa4a1, 0x0292,
-  0xa540, 0x02f0,
-  0xa5a1, 0x032f,
-  0xa640, 0x038d,
-  0xa6a1, 0x03cc,
-  0xa740, 0x042a,
-  0xa7a1, 0x0469,
-  0xa840, 0x04c7,
-  0xa8a1, 0x0506,
-  0xa940, 0x0564,
-  0xa9a1, 0x05a3,
-  0xaa40, 0x0601,
-  0xaaa1, 0x0640,
-  0xab40, 0x069e,
-  0xaba1, 0x06dd,
-  0xac40, 0x073b,
-  0xaca1, 0x077a,
-  0xacfe, 0x097f,
-  0xad40, 0x07d7,
-  0xada1, 0x0816,
-  0xae40, 0x0874,
-  0xaea1, 0x08b3,
-  0xaf40, 0x0911,
-  0xafa1, 0x0950,
-  0xafd0, 0x0980,
-  0xb040, 0x09af,
-  0xb0a1, 0x09ee,
-  0xb140, 0x0a4c,
-  0xb1a1, 0x0a8b,
-  0xb240, 0x0ae9,
-  0xb2a1, 0x0b28,
-  0xb340, 0x0b86,
-  0xb3a1, 0x0bc5,
-  0xb440, 0x0c23,
-  0xb4a1, 0x0c62,
-  0xb540, 0x0cc0,
-  0xb5a1, 0x0cff,
-  0xb640, 0x0d5d,
-  0xb6a1, 0x0d9c,
-  0xb740, 0x0dfa,
-  0xb7a1, 0x0e39,
-  0xb840, 0x0e97,
-  0xb8a1, 0x0ed6,
-  0xb940, 0x0f34,
-  0xb9a1, 0x0f73,
-  0xba40, 0x0fd1,
-  0xbaa1, 0x1010,
-  0xbb40, 0x106e,
-  0xbba1, 0x10ad,
-  0xbbc8, 0x10d5,
-  0xbc40, 0x110c,
-  0xbca1, 0x114b,
-  0xbd40, 0x11a9,
-  0xbda1, 0x11e8,
-  0xbe40, 0x1246,
-  0xbe52, 0x10d4,
-  0xbe53, 0x1258,
-  0xbea1, 0x1284,
-  0xbf40, 0x12e2,
-  0xbfa1, 0x1321,
-  0xc040, 0x137f,
-  0xc0a1, 0x13be,
-  0xc140, 0x141c,
-  0xc1a1, 0x145b,
-  0xc1ab, 0x1466,
-  0xc240, 0x14ba,
-  0xc2a1, 0x14f9,
-  0xc2cb, 0x1465,
-  0xc2cc, 0x1523,
-  0xc340, 0x1556,
-  0xc361, 0x1578,
-  0xc3a1, 0x1596,
-  0xc3b9, 0x15af,
-  0xc3ba, 0x15ae,
-  0xc3bb, 0x15b0,
-  0xc440, 0x15f4,
-  0xc456, 0x1577,
-  0xc457, 0x160a,
-  0xc4a1, 0x1632,
-  0xc540, 0x1690,
-  0xc5a1, 0x16cf,
-  0xc640, 0x172d,
-  0xc6a1, 0x01fa,
-  0xc6bf, 0x0219,
-  0xc6d0, 0x022a,
-  0xc6d4, 0x022e,
-  0xc6d6, 0x0230,
-  0xc6d8, 0x35b3,
-  0xc6e0, 0x35ba,
-  0xc740, 0x35d9,
-  0xc7a1, 0x3618,
-  0xc840, 0x3676,
-  0xc8a1, 0x36b5,
-  0xc8cd, 0x36e1,
-  0xc8d4, 0x44c6,
-  0xc8d7, 0x451c,
-  0xc8e0, 0x02dc,
-  0xc8e1, 0x4525,
-  0xc8e9, 0x0509,
-  0xc8ea, 0x452d,
-  0xc8f1, 0x09f6,
-  0xc8f5, 0x4992,
-  0xc940, 0x176c,
-  0xc94a, 0x0274,
-  0xc94b, 0x1776,
-  0xc96c, 0x1798,
-  0xc9a1, 0x17ab,
-  0xc9be, 0x1797,
-  0xc9bf, 0x17c8,
-  0xc9ed, 0x17f7,
-  0xca40, 0x1809,
-  0xcaa1, 0x1848,
-  0xcaf7, 0x17f6,
-  0xcaf8, 0x189e,
-  0xcb40, 0x18a5,
-  0xcba1, 0x18e4,
-  0xcc40, 0x1942,
-  0xcca1, 0x1981,
-  0xcd40, 0x19df,
-  0xcda1, 0x1a1e,
-  0xce40, 0x1a7c,
-  0xcea1, 0x1abb,
-  0xcf40, 0x1b19,
-  0xcfa1, 0x1b58,
-  0xd040, 0x1bb6,
-  0xd0a1, 0x1bf5,
-  0xd140, 0x1c53,
-  0xd1a1, 0x1c92,
-  0xd240, 0x1cf0,
-  0xd2a1, 0x1d2f,
-  0xd340, 0x1d8d,
-  0xd3a1, 0x1dcc,
-  0xd440, 0x1e2a,
-  0xd4a1, 0x1e69,
-  0xd540, 0x1ec7,
-  0xd5a1, 0x1f06,
-  0xd640, 0x1f64,
-  0xd6a1, 0x1fa3,
-  0xd6cc, 0x2254,
-  0xd6cd, 0x1fcf,
-  0xd740, 0x2001,
-  0xd77a, 0x22b9,
-  0xd77b, 0x203b,
-  0xd7a1, 0x203f,
-  0xd840, 0x209d,
-  0xd8a1, 0x20dc,
-  0xd940, 0x213a,
-  0xd9a1, 0x2179,
-  0xda40, 0x21d7,
-  0xdaa1, 0x2216,
-  0xdadf, 0x1fce,
-  0xdae0, 0x2255,
-  0xdb40, 0x2274,
-  0xdba1, 0x22b3,
-  0xdba7, 0x22ba,
-  0xdc40, 0x2312,
-  0xdca1, 0x2351,
-  0xdd40, 0x23af,
-  0xdda1, 0x23ee,
-  0xddfc, 0x2381,
-  0xddfd, 0x2449,
-  0xde40, 0x244b,
-  0xdea1, 0x248a,
-  0xdf40, 0x24e8,
-  0xdfa1, 0x2527,
-  0xe040, 0x2585,
-  0xe0a1, 0x25c4,
-  0xe140, 0x2622,
-  0xe1a1, 0x2661,
-  0xe240, 0x26bf,
-  0xe2a1, 0x26fe,
-  0xe340, 0x275c,
-  0xe3a1, 0x279b,
-  0xe440, 0x27f9,
-  0xe4a1, 0x2838,
-  0xe540, 0x2896,
-  0xe5a1, 0x28d5,
-  0xe640, 0x2933,
-  0xe6a1, 0x2972,
-  0xe740, 0x29d0,
-  0xe7a1, 0x2a0f,
-  0xe840, 0x2a6d,
-  0xe8a1, 0x2aac,
-  0xe8a3, 0x2aaf,
-  0xe940, 0x2b0b,
-  0xe976, 0x2b42,
-  0xe9a1, 0x2b4b,
-  0xea40, 0x2ba9,
-  0xeaa1, 0x2be8,
-  0xeb40, 0x2c46,
-  0xeb5b, 0x2c62,
-  0xeba1, 0x2c86,
-  0xebf1, 0x2aae,
-  0xebf2, 0x2cd6,
-  0xec40, 0x2ce3,
-  0xeca1, 0x2d22,
-  0xecde, 0x2b41,
-  0xecdf, 0x2d5f,
-  0xed40, 0x2d7f,
-  0xeda1, 0x2dbe,
-  0xedaa, 0x2dc8,
-  0xee40, 0x2e1d,
-  0xeea1, 0x2e5c,
-  0xeeeb, 0x3014,
-  0xeeec, 0x2ea6,
-  0xef40, 0x2eb9,
-  0xefa1, 0x2ef8,
-  0xf040, 0x2f56,
-  0xf056, 0x2dc7,
-  0xf057, 0x2f6c,
-  0xf0a1, 0x2f94,
-  0xf0cb, 0x2c61,
-  0xf0cc, 0x2fbe,
-  0xf140, 0x2ff1,
-  0xf163, 0x3015,
-  0xf16b, 0x3160,
-  0xf16c, 0x301d,
-  0xf1a1, 0x3030,
-  0xf240, 0x308e,
-  0xf268, 0x31ef,
-  0xf269, 0x30b6,
-  0xf2a1, 0x30cc,
-  0xf2c3, 0x30ef,
-  0xf340, 0x312b,
-  0xf375, 0x3161,
-  0xf3a1, 0x316b,
-  0xf440, 0x31c9,
-  0xf466, 0x31f0,
-  0xf4a1, 0x3209,
-  0xf4b5, 0x30ee,
-  0xf4b6, 0x321d,
-  0xf4fd, 0x3265,
-  0xf540, 0x3267,
-  0xf5a1, 0x32a6,
-  0xf640, 0x3304,
-  0xf663, 0x3264,
-  0xf664, 0x3327,
-  0xf6a1, 0x3342,
-  0xf740, 0x33a0,
-  0xf7a1, 0x33df,
-  0xf840, 0x343d,
-  0xf8a1, 0x347c,
-  0xf940, 0x34da,
-  0xf977, 0x3512,
-  0xf9a1, 0x351a,
-  0xf9c4, 0x3511,
-  0xf9c5, 0x353d,
-  0xf9c6, 0x3549,
-  0xf9c7, 0x353e,
-  0xf9d2, 0x354a,
-  0xf9d6, 0x36e8,
-  0xfa40, 0x400b,
-  0xfa60, 0x402b,
-  0xfa67, 0x4032,
-  0xfaa1, 0x404a,
-  0xfaa9, 0x4946,
-  0xfaab, 0x4054,
-  0xfabe, 0x4067,
-  0xfac6, 0x406f,
-  0xfad6, 0x407f,
-  0xfb40, 0x40a8,
-  0xfb49, 0x40b1,
-  0xfb53, 0x4948,
-  0xfb54, 0x40bc,
-  0xfb6e, 0x4949,
-  0xfb6f, 0x40d7,
-  0xfba1, 0x40e7,
-  0xfba3, 0x494a,
-  0xfba4, 0x40ea,
-  0xfbb9, 0x40ff,
-  0xfbbf, 0x494b,
-  0xfbc0, 0x4105,
-  0xfbcd, 0x494c,
-  0xfbce, 0x4112,
-  0xfbf4, 0x4138,
-  0xfbfa, 0x413e,
-  0xfc40, 0x4143,
-  0xfc4a, 0x494d,
-  0xfc4b, 0x414d,
-  0xfc50, 0x4151,
-  0xfc52, 0x494e,
-  0xfc53, 0x4153,
-  0xfc63, 0x494f,
-  0xfc64, 0x4163,
-  0xfc6d, 0x4950,
-  0xfc6e, 0x416d,
-  0xfc75, 0x4951,
-  0xfc76, 0x4174,
-  0xfca1, 0x417d,
-  0xfcba, 0x4195,
-  0xfcbc, 0x4952,
-  0xfcbe, 0x4198,
-  0xfccc, 0x4954,
-  0xfccd, 0x41a7,
-  0xfce3, 0x4955,
-  0xfce4, 0x41bd,
-  0xfcee, 0x4956,
-  0xfcef, 0x41c7,
-  0xfcf2, 0x41ca,
-  0xfd40, 0x41d7,
-  0xfd49, 0x4957,
-  0xfd4a, 0x41e0,
-  0xfd6a, 0x4958,
-  0xfd6b, 0x4201,
-  0xfda1, 0x4215,
-  0xfdb9, 0x422d,
-  0xfdbc, 0x4230,
-  0xfde3, 0x4959,
-  0xfde4, 0x4258,
-  0xfdf2, 0x495a,
-  0xfdf3, 0x4266,
-  0xfe40, 0x4272,
-  0xfe53, 0x4285,
-  0xfe6d, 0x495b,
-  0xfe6e, 0x429f,
-  0xfe70, 0x42a1,
-  0xfe78, 0x495c,
-  0xfe79, 0x42a9,
-  0xfea1, 0x42af,
-  0xfeab, 0x42b8,
-  0xfede, 0x495d,
-  0xfee0, 0x42eb,
-  0xfeed, 0x495f,
-  0xfeef, 0x42f8,
-  0xa14b, 0x354e,
-  0xa15a, 0x35af,
-  0xa15c, 0x35b1,
-  0xa15d, 0x0082,
-  0xa161, 0x0086,
-  0xa165, 0x008a,
-  0xa169, 0x008e,
-  0xa16d, 0x0092,
-  0xa171, 0x0096,
-  0xa175, 0x009a,
-  0xa179, 0x009e,
-  0xa1e3, 0x354f,
-  0xc6e4, 0x3711,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13HKscsB5VEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13HKscsB5VMap2, 1142
-};
-
-static Gushort cns13UniCNSUCS2HMap2[30910] = {
-  0x0000, 0x0000,
-  0x0020, 0x0001,
-  0x00a2, 0x0106,
-  0x00a5, 0x0104,
-  0x00a7, 0x00b2,
-  0x00a8, 0x35b3,
-  0x00ac, 0x36e1,
-  0x00b0, 0x0118,
-  0x00b1, 0x00d4,
-  0x00b7, 0x0073,
-  0x00c0, 0x4964,
-  0x00c1, 0x4962,
-  0x00c8, 0x4968,
-  0x00c9, 0x4966,
-  0x00ca, 0x4971,
-  0x00d2, 0x496c,
-  0x00d3, 0x496a,
-  0x00d7, 0x00d2,
-  0x00e0, 0x4975,
-  0x00e1, 0x4973,
-  0x00e8, 0x497a,
-  0x00e9, 0x4978,
-  0x00ea, 0x4990,
-  0x00ec, 0x497e,
-  0x00ed, 0x497c,
-  0x00f2, 0x4982,
-  0x00f3, 0x4980,
-  0x00f7, 0x00d3,
-  0x00f8, 0x4998,
-  0x00f9, 0x4986,
-  0x00fa, 0x4984,
-  0x00fc, 0x498b,
-  0x0100, 0x4961,
-  0x0101, 0x4972,
-  0x0112, 0x4965,
-  0x0113, 0x4977,
-  0x011a, 0x4967,
-  0x011b, 0x4979,
-  0x012b, 0x497b,
-  0x014b, 0x4999,
-  0x014c, 0x4969,
-  0x014d, 0x497f,
-  0x0153, 0x4997,
-  0x016b, 0x4983,
-  0x01cd, 0x4963,
-  0x01ce, 0x4974,
-  0x01d0, 0x497d,
-  0x01d1, 0x496b,
-  0x01d2, 0x4981,
-  0x01d4, 0x4985,
-  0x01d6, 0x4987,
-  0x01d8, 0x4988,
-  0x01da, 0x4989,
-  0x01dc, 0x498a,
-  0x0250, 0x4993,
-  0x0251, 0x4976,
-  0x0254, 0x4995,
-  0x025b, 0x4994,
-  0x0261, 0x4991,
-  0x026a, 0x499b,
-  0x0275, 0x4996,
-  0x0283, 0x4992,
-  0x028a, 0x499a,
-  0x02c6, 0x35b4,
-  0x02c7, 0x01f8,
-  0x02ca, 0x01f7,
-  0x02cb, 0x01f9,
-  0x02d9, 0x01f6,
-  0x0308, 0x35b3,
-  0x0391, 0x01a1,
-  0x03a3, 0x01b2,
-  0x03b1, 0x01b9,
-  0x03c3, 0x01ca,
-  0x0401, 0x3670,
-  0x0410, 0x366a,
-  0x0416, 0x3671,
-  0x0436, 0x3692,
-  0x0451, 0x3691,
-  0x1ebe, 0x496e,
-  0x1ebf, 0x498d,
-  0x1ec0, 0x4970,
-  0x1ec1, 0x498f,
-  0x2013, 0x0079,
-  0x2014, 0x007b,
-  0x2018, 0x00a6,
-  0x201c, 0x00a8,
-  0x2022, 0x0068,
-  0x2025, 0x006f,
-  0x2026, 0x006e,
-  0x2032, 0x00ad,
-  0x2035, 0x00ac,
-  0x203b, 0x00b1,
-  0x203e, 0x00c3,
-  0x20ac, 0x44c1,
-  0x2103, 0x010a,
-  0x2105, 0x00c2,
-  0x2109, 0x010b,
-  0x2116, 0x36e6,
-  0x2121, 0x36e7,
-  0x2160, 0x0157,
-  0x2170, 0x020e,
-  0x2190, 0x00f8,
-  0x2191, 0x00f5,
-  0x2192, 0x00f7,
-  0x2193, 0x00f6,
-  0x2196, 0x00f9,
-  0x2198, 0x00fc,
-  0x2199, 0x00fb,
-  0x21b8, 0x36ad,
-  0x21e7, 0x36ac,
-  0x221a, 0x00d5,
-  0x221e, 0x00dc,
-  0x221f, 0x00e9,
-  0x2220, 0x00e8,
-  0x2223, 0x00fe,
-  0x2225, 0x00fd,
-  0x2229, 0x00e5,
-  0x222b, 0x00ed,
-  0x222e, 0x00ee,
-  0x2234, 0x00f0,
-  0x2235, 0x00ef,
-  0x223c, 0x00e4,
-  0x2252, 0x00dd,
-  0x2260, 0x00db,
-  0x2261, 0x00de,
-  0x2266, 0x00d9,
-  0x22a5, 0x00e7,
-  0x22bf, 0x00ea,
-  0x2400, 0x0232,
-  0x2421, 0x0252,
-  0x2460, 0x01fa,
-  0x2474, 0x0204,
-  0x2500, 0x0137,
-  0x2502, 0x0138,
-  0x250c, 0x013a,
-  0x2510, 0x013b,
-  0x2514, 0x013c,
-  0x2518, 0x013d,
-  0x251c, 0x0135,
-  0x2524, 0x0134,
-  0x252c, 0x0133,
-  0x2534, 0x0132,
-  0x253c, 0x0131,
-  0x2550, 0x0142,
-  0x2551, 0x370a,
-  0x2552, 0x36f8,
-  0x2553, 0x3701,
-  0x2554, 0x36ef,
-  0x2555, 0x36fa,
-  0x2556, 0x3703,
-  0x2557, 0x36f1,
-  0x2558, 0x36fe,
-  0x2559, 0x3707,
-  0x255a, 0x36f5,
-  0x255b, 0x3700,
-  0x255c, 0x3709,
-  0x255d, 0x36f7,
-  0x255e, 0x0143,
-  0x255f, 0x3704,
-  0x2560, 0x36f2,
-  0x2561, 0x0145,
-  0x2562, 0x3706,
-  0x2563, 0x36f4,
-  0x2564, 0x36f9,
-  0x2565, 0x3702,
-  0x2566, 0x36f0,
-  0x2567, 0x36ff,
-  0x2568, 0x3708,
-  0x2569, 0x36f6,
-  0x256a, 0x0144,
-  0x256b, 0x3705,
-  0x256c, 0x36f3,
-  0x256d, 0x013e,
-  0x256f, 0x0141,
-  0x2570, 0x0140,
-  0x2571, 0x014a,
-  0x2581, 0x0122,
-  0x2589, 0x0130,
-  0x258a, 0x012f,
-  0x258b, 0x012e,
-  0x258c, 0x012d,
-  0x258d, 0x012c,
-  0x258e, 0x012b,
-  0x258f, 0x012a,
-  0x2593, 0x3710,
-  0x2594, 0x0136,
-  0x2595, 0x0139,
-  0x25a0, 0x00be,
-  0x25a1, 0x00bd,
-  0x25b2, 0x00b7,
-  0x25b3, 0x00b6,
-  0x25bc, 0x00c0,
-  0x25bd, 0x00bf,
-  0x25c6, 0x00bc,
-  0x25c7, 0x00bb,
-  0x25cb, 0x00b4,
-  0x25ce, 0x00b8,
-  0x25cf, 0x00b5,
-  0x25e2, 0x0146,
-  0x25e4, 0x0149,
-  0x25e5, 0x0148,
-  0x2605, 0x00ba,
-  0x2606, 0x00b9,
-  0x2609, 0x00f4,
-  0x2640, 0x00f1,
-  0x2641, 0x00f3,
-  0x2642, 0x00f2,
-  0x273d, 0x35c0,
-  0x2e80, 0x44c8,
-  0x2e84, 0x451c,
-  0x2e86, 0x451d,
-  0x2e8a, 0x4520,
-  0x2e8c, 0x4521,
-  0x2e95, 0x4523,
-  0x2e9c, 0x4524,
-  0x2e9d, 0x02dc,
-  0x2ea5, 0x4525,
-  0x2ea7, 0x4526,
-  0x2eaa, 0x4527,
-  0x2eac, 0x4528,
-  0x2eae, 0x4529,
-  0x2eb6, 0x452a,
-  0x2ebc, 0x452b,
-  0x2ebe, 0x452c,
-  0x2ec6, 0x0509,
-  0x2eca, 0x452d,
-  0x2ecc, 0x452e,
-  0x2ecf, 0x4530,
-  0x2ed6, 0x4531,
-  0x2ede, 0x4533,
-  0x2ee3, 0x09f6,
-  0x2f33, 0x0227,
-  0x3000, 0x0063,
-  0x3001, 0x0065,
-  0x3003, 0x00b3,
-  0x3005, 0x35ba,
-  0x3008, 0x0094,
-  0x300a, 0x0090,
-  0x300c, 0x0098,
-  0x300e, 0x009c,
-  0x3010, 0x008c,
-  0x3012, 0x0105,
-  0x3014, 0x0088,
-  0x301d, 0x00aa,
-  0x3021, 0x0161,
-  0x3041, 0x35c1,
-  0x309b, 0x44c6,
-  0x309d, 0x35b7,
-  0x30a1, 0x3614,
-  0x30fc, 0x35bd,
-  0x30fd, 0x35b5,
-  0x3105, 0x01d1,
-  0x3231, 0x36e5,
-  0x32a3, 0x00c1,
-  0x338e, 0x0115,
-  0x339c, 0x0110,
-  0x33a1, 0x0114,
-  0x33c4, 0x0117,
-  0x33ce, 0x0113,
-  0x33d1, 0x00ec,
-  0x33d2, 0x00eb,
-  0x33d5, 0x010f,
-  0x3435, 0x39bd,
-  0x3440, 0x3c67,
-  0x344c, 0x4593,
-  0x3464, 0x3a85,
-  0x3473, 0x3dc5,
-  0x347a, 0x4033,
-  0x347d, 0x4597,
-  0x347e, 0x46a3,
-  0x3493, 0x439e,
-  0x3496, 0x37dc,
-  0x34a5, 0x4598,
-  0x34af, 0x3c7f,
-  0x34bc, 0x4380,
-  0x34c1, 0x44fb,
-  0x34c8, 0x3d00,
-  0x34df, 0x3ea4,
-  0x34e4, 0x3e54,
-  0x34fb, 0x3dca,
-  0x3506, 0x4336,
-  0x353e, 0x44e7,
-  0x3551, 0x45a1,
-  0x3553, 0x43a5,
-  0x3561, 0x40d8,
-  0x356d, 0x45a4,
-  0x3570, 0x3b2f,
-  0x3572, 0x45a5,
-  0x3577, 0x3ecb,
-  0x3578, 0x4379,
-  0x3584, 0x39fb,
-  0x3597, 0x3b2d,
-  0x3598, 0x45b0,
-  0x35a1, 0x40e2,
-  0x35a5, 0x45b1,
-  0x35ad, 0x3efc,
-  0x35bf, 0x45b2,
-  0x35c1, 0x4580,
-  0x35c5, 0x45b4,
-  0x35c7, 0x459f,
-  0x35ca, 0x3e43,
-  0x35ce, 0x3e81,
-  0x35d2, 0x3fc9,
-  0x35d6, 0x3fb5,
-  0x35db, 0x470d,
-  0x35dd, 0x43ac,
-  0x35f1, 0x4696,
-  0x35f2, 0x4627,
-  0x35f3, 0x3f6c,
-  0x35fb, 0x45c8,
-  0x35fe, 0x3f6a,
-  0x3609, 0x45f5,
-  0x3618, 0x4871,
-  0x361a, 0x461a,
-  0x3623, 0x40c6,
-  0x362d, 0x3e86,
-  0x3635, 0x492e,
-  0x3639, 0x4165,
-  0x363e, 0x3a08,
-  0x3647, 0x4806,
-  0x3648, 0x3806,
-  0x3649, 0x4013,
-  0x364e, 0x4698,
-  0x365f, 0x3df3,
-  0x367a, 0x3ee3,
-  0x3681, 0x45a6,
-  0x369a, 0x3c71,
-  0x36a5, 0x4902,
-  0x36aa, 0x3b30,
-  0x36ac, 0x4900,
-  0x36b0, 0x3cdf,
-  0x36b1, 0x40cd,
-  0x36b5, 0x3bc2,
-  0x36b9, 0x4887,
-  0x36bc, 0x3cff,
-  0x36c1, 0x37c5,
-  0x36c3, 0x40e5,
-  0x36c4, 0x3905,
-  0x36c5, 0x4296,
-  0x36c7, 0x3d3a,
-  0x36c8, 0x4820,
-  0x36d3, 0x3a38,
-  0x36d4, 0x3bb3,
-  0x36d6, 0x3d0c,
-  0x36dd, 0x3a36,
-  0x36e1, 0x397c,
-  0x36e2, 0x3cdd,
-  0x36e5, 0x4216,
-  0x36e6, 0x40fc,
-  0x36f5, 0x3a18,
-  0x3701, 0x3a34,
-  0x3703, 0x460f,
-  0x3708, 0x40ff,
-  0x370a, 0x3cd5,
-  0x370d, 0x4238,
-  0x371c, 0x3dfe,
-  0x3722, 0x3979,
-  0x3723, 0x3980,
-  0x3725, 0x3849,
-  0x372c, 0x3c8c,
-  0x372d, 0x3d37,
-  0x3730, 0x495c,
-  0x3732, 0x4106,
-  0x3733, 0x3997,
-  0x373a, 0x3e56,
-  0x3740, 0x4202,
-  0x3743, 0x4036,
-  0x3762, 0x3db6,
-  0x376f, 0x47cb,
-  0x3797, 0x45ed,
-  0x37a0, 0x3a28,
-  0x37b9, 0x43b7,
-  0x37be, 0x393e,
-  0x37f2, 0x3ba1,
-  0x37f8, 0x42d2,
-  0x37fb, 0x3ef5,
-  0x380f, 0x462c,
-  0x3819, 0x39af,
-  0x3820, 0x462f,
-  0x382d, 0x412e,
-  0x3836, 0x4133,
-  0x3838, 0x43bb,
-  0x3863, 0x46c3,
-  0x38a0, 0x4145,
-  0x38c3, 0x3912,
-  0x38cc, 0x4076,
-  0x38d1, 0x3a95,
-  0x38fa, 0x44eb,
-  0x3908, 0x4632,
-  0x3914, 0x43be,
-  0x3927, 0x3c31,
-  0x3932, 0x4182,
-  0x393f, 0x4633,
-  0x394d, 0x4634,
-  0x3963, 0x4163,
-  0x3980, 0x3874,
-  0x3989, 0x4638,
-  0x398a, 0x3ce8,
-  0x3992, 0x4376,
-  0x3999, 0x39ba,
-  0x399b, 0x3db3,
-  0x39a1, 0x3e19,
-  0x39a4, 0x3e0f,
-  0x39b8, 0x463b,
-  0x39dc, 0x3ece,
-  0x39e2, 0x46c8,
-  0x39e5, 0x393b,
-  0x39ec, 0x4310,
-  0x39f8, 0x463e,
-  0x39fb, 0x4345,
-  0x39fe, 0x4368,
-  0x3a01, 0x41e0,
-  0x3a03, 0x4640,
-  0x3a06, 0x4377,
-  0x3a17, 0x4190,
-  0x3a18, 0x438f,
-  0x3a29, 0x3a5e,
-  0x3a2a, 0x3edf,
-  0x3a34, 0x4319,
-  0x3a4b, 0x4644,
-  0x3a52, 0x3ed3,
-  0x3a57, 0x419e,
-  0x3a5c, 0x3fc4,
-  0x3a5e, 0x3b07,
-  0x3a66, 0x419c,
-  0x3a67, 0x4333,
-  0x3a97, 0x4647,
-  0x3aab, 0x4091,
-  0x3abd, 0x4649,
-  0x3ade, 0x414c,
-  0x3ae0, 0x3a7a,
-  0x3af0, 0x46b2,
-  0x3af2, 0x464c,
-  0x3afb, 0x3af2,
-  0x3b0e, 0x38e8,
-  0x3b19, 0x46c5,
-  0x3b22, 0x464e,
-  0x3b2b, 0x4956,
-  0x3b39, 0x474b,
-  0x3b42, 0x4650,
-  0x3b58, 0x4652,
-  0x3b60, 0x393a,
-  0x3b71, 0x4656,
-  0x3b72, 0x4655,
-  0x3b7b, 0x4657,
-  0x3b7c, 0x385a,
-  0x3b80, 0x41e2,
-  0x3b96, 0x3a9c,
-  0x3b99, 0x3a98,
-  0x3ba1, 0x41e9,
-  0x3bbc, 0x43c8,
-  0x3bbe, 0x3db1,
-  0x3bc2, 0x4134,
-  0x3bc4, 0x3aa0,
-  0x3bd7, 0x3aac,
-  0x3bdd, 0x465f,
-  0x3bec, 0x4664,
-  0x3bf2, 0x4666,
-  0x3bf3, 0x41f3,
-  0x3bf4, 0x3a6e,
-  0x3c0d, 0x41f7,
-  0x3c11, 0x3e40,
-  0x3c15, 0x3998,
-  0x3c54, 0x3e00,
-  0x3ccb, 0x4670,
-  0x3ccd, 0x3ce5,
-  0x3cd1, 0x4003,
-  0x3cd6, 0x3cf7,
-  0x3cdc, 0x404e,
-  0x3ceb, 0x4217,
-  0x3cef, 0x4675,
-  0x3d13, 0x3773,
-  0x3d1d, 0x393c,
-  0x3d32, 0x4957,
-  0x3d3b, 0x4245,
-  0x3d46, 0x4685,
-  0x3d4c, 0x3ceb,
-  0x3d4e, 0x4242,
-  0x3d51, 0x38ea,
-  0x3d5f, 0x4159,
-  0x3d62, 0x3c5e,
-  0x3d69, 0x3cea,
-  0x3d6a, 0x4689,
-  0x3d6f, 0x3cfc,
-  0x3d75, 0x468a,
-  0x3d7d, 0x3c2f,
-  0x3d85, 0x494b,
-  0x3d8a, 0x468d,
-  0x3d8f, 0x3abd,
-  0x3d91, 0x468f,
-  0x3da5, 0x3d56,
-  0x3dad, 0x4699,
-  0x3db4, 0x40a6,
-  0x3dbf, 0x37d0,
-  0x3dc6, 0x48de,
-  0x3dc7, 0x4164,
-  0x3dcc, 0x3d6f,
-  0x3dcd, 0x3af3,
-  0x3dd3, 0x37e1,
-  0x3ddb, 0x3fff,
-  0x3de7, 0x3999,
-  0x3de8, 0x425d,
-  0x3deb, 0x3e5a,
-  0x3df3, 0x46d4,
-  0x3df7, 0x48ab,
-  0x3dfc, 0x462b,
-  0x3dfd, 0x3c14,
-  0x3e06, 0x491d,
-  0x3e40, 0x4169,
-  0x3e43, 0x436d,
-  0x3e48, 0x4595,
-  0x3e55, 0x427f,
-  0x3e74, 0x3ee2,
-  0x3ea8, 0x4304,
-  0x3ea9, 0x46ed,
-  0x3eaa, 0x4075,
-  0x3ead, 0x3b9d,
-  0x3eb1, 0x3ad8,
-  0x3eb8, 0x3a4b,
-  0x3ebf, 0x3b0b,
-  0x3ec2, 0x3bd8,
-  0x3ec7, 0x3975,
-  0x3eca, 0x46f1,
-  0x3ecc, 0x3be2,
-  0x3ed0, 0x3854,
-  0x3ed1, 0x46f2,
-  0x3ed6, 0x3cad,
-  0x3ed7, 0x429f,
-  0x3eda, 0x3d02,
-  0x3ede, 0x39f2,
-  0x3ee1, 0x3ca8,
-  0x3ee2, 0x46f6,
-  0x3ee7, 0x3bdc,
-  0x3ee9, 0x3ca4,
-  0x3eeb, 0x396a,
-  0x3ef0, 0x46f7,
-  0x3ef3, 0x3add,
-  0x3ef4, 0x46f8,
-  0x3efa, 0x46f9,
-  0x3efc, 0x3be8,
-  0x3eff, 0x3af5,
-  0x3f00, 0x3c0d,
-  0x3f04, 0x42c3,
-  0x3f06, 0x3ad7,
-  0x3f0e, 0x46fb,
-  0x3f53, 0x46fc,
-  0x3f58, 0x3ae9,
-  0x3f59, 0x4089,
-  0x3f63, 0x3ae6,
-  0x3f7c, 0x4700,
-  0x3f93, 0x45cd,
-  0x3fc0, 0x43cf,
-  0x3fd7, 0x43d1,
-  0x3fdc, 0x4704,
-  0x3fe5, 0x46df,
-  0x3fed, 0x4335,
-  0x3ff9, 0x45d7,
-  0x3ffa, 0x4354,
-  0x4004, 0x410e,
-  0x401d, 0x4709,
-  0x4039, 0x470b,
-  0x4045, 0x470c,
-  0x4053, 0x45b6,
-  0x4057, 0x399d,
-  0x4062, 0x3bcb,
-  0x4065, 0x3fd3,
-  0x406a, 0x470f,
-  0x406f, 0x4710,
-  0x40a8, 0x43d5,
-  0x40bb, 0x45c0,
-  0x40bf, 0x3eec,
-  0x40c8, 0x3b0e,
-  0x40d8, 0x41ab,
-  0x40df, 0x3e17,
-  0x40fa, 0x3ebe,
-  0x4103, 0x43d7,
-  0x4104, 0x425c,
-  0x4109, 0x471c,
-  0x410e, 0x3b1b,
-  0x4132, 0x3b25,
-  0x4167, 0x471f,
-  0x416c, 0x38ae,
-  0x416e, 0x3b23,
-  0x417f, 0x3b82,
-  0x4190, 0x46c0,
-  0x41b2, 0x4720,
-  0x41c4, 0x4723,
-  0x41ca, 0x373f,
-  0x41cf, 0x4726,
-  0x41db, 0x37bf,
-  0x41ef, 0x3743,
-  0x41f9, 0x3b3e,
-  0x4211, 0x3b41,
-  0x4240, 0x37f1,
-  0x4260, 0x472b,
-  0x426a, 0x3b55,
-  0x427a, 0x472c,
-  0x428c, 0x472f,
-  0x4294, 0x4731,
-  0x42b5, 0x4010,
-  0x42b9, 0x38a6,
-  0x42bc, 0x3c8a,
-  0x42f4, 0x3bb9,
-  0x42fb, 0x3cee,
-  0x42fc, 0x41e6,
-  0x432b, 0x377d,
-  0x436e, 0x46ca,
-  0x4397, 0x473b,
-  0x43ba, 0x435f,
-  0x43c1, 0x4695,
-  0x43d9, 0x433e,
-  0x43df, 0x3e49,
-  0x43ed, 0x4745,
-  0x43f2, 0x3e48,
-  0x4401, 0x474a,
-  0x4402, 0x3b73,
-  0x4413, 0x474f,
-  0x4425, 0x4751,
-  0x442d, 0x4752,
-  0x447a, 0x37af,
-  0x448f, 0x4758,
-  0x449f, 0x3ae2,
-  0x44a0, 0x37ed,
-  0x44a2, 0x4079,
-  0x44b0, 0x475c,
-  0x44b7, 0x3fa1,
-  0x44c0, 0x3c07,
-  0x44c5, 0x4210,
-  0x44ce, 0x3d23,
-  0x44dd, 0x39dd,
-  0x44df, 0x3d22,
-  0x44e4, 0x37e2,
-  0x44e9, 0x41cf,
-  0x44ea, 0x3b71,
-  0x44eb, 0x3cf2,
-  0x44ec, 0x3eb4,
-  0x44f4, 0x3992,
-  0x4503, 0x469f,
-  0x4504, 0x4763,
-  0x4509, 0x3e50,
-  0x450b, 0x37d4,
-  0x4516, 0x37f9,
-  0x451d, 0x3767,
-  0x4527, 0x37f7,
-  0x452e, 0x3cd3,
-  0x4533, 0x3c51,
-  0x453b, 0x476a,
-  0x453d, 0x38c4,
-  0x453f, 0x3e12,
-  0x4543, 0x37f3,
-  0x4551, 0x3ae4,
-  0x4552, 0x40b3,
-  0x4555, 0x423e,
-  0x455c, 0x378b,
-  0x4562, 0x4940,
-  0x456a, 0x3804,
-  0x4577, 0x476e,
-  0x4585, 0x38c5,
-  0x45e9, 0x3ee4,
-  0x4606, 0x4773,
-  0x460f, 0x3815,
-  0x4615, 0x3843,
-  0x4617, 0x4774,
-  0x465b, 0x381d,
-  0x467a, 0x39e9,
-  0x4680, 0x3d01,
-  0x46cf, 0x3ba0,
-  0x46d0, 0x3dfa,
-  0x46f5, 0x3b9f,
-  0x4713, 0x3833,
-  0x4718, 0x3dc7,
-  0x474e, 0x3ebc,
-  0x477c, 0x3dcd,
-  0x4798, 0x4781,
-  0x47a6, 0x40a3,
-  0x47b6, 0x3eea,
-  0x47d5, 0x431a,
-  0x47ed, 0x4783,
-  0x47f4, 0x432f,
-  0x4800, 0x461e,
-  0x480b, 0x4352,
-  0x4837, 0x4787,
-  0x485d, 0x410f,
-  0x4871, 0x3d03,
-  0x489b, 0x3bbd,
-  0x48ad, 0x4791,
-  0x48ae, 0x494d,
-  0x48d0, 0x3da7,
-  0x48dd, 0x4120,
-  0x48ed, 0x4288,
-  0x48f3, 0x3ec1,
-  0x48fa, 0x3e44,
-  0x4906, 0x3bc7,
-  0x4911, 0x4584,
-  0x491e, 0x4794,
-  0x4925, 0x3c0f,
-  0x492a, 0x46ae,
-  0x492d, 0x46cd,
-  0x4935, 0x3cc3,
-  0x493c, 0x3bf8,
-  0x493e, 0x3d06,
-  0x4945, 0x47a3,
-  0x4951, 0x47a4,
-  0x4953, 0x42ad,
-  0x4965, 0x3899,
-  0x496a, 0x47a9,
-  0x4972, 0x3a24,
-  0x4989, 0x379b,
-  0x49a1, 0x38b7,
-  0x49a7, 0x47ae,
-  0x49df, 0x38aa,
-  0x49e5, 0x47b1,
-  0x49e7, 0x4621,
-  0x4a0f, 0x38c3,
-  0x4a1d, 0x3bec,
-  0x4a24, 0x47b2,
-  0x4a35, 0x47b4,
-  0x4a96, 0x3ce7,
-  0x4ab4, 0x4361,
-  0x4ab8, 0x3da8,
-  0x4ad1, 0x38e3,
-  0x4ae4, 0x47b7,
-  0x4aff, 0x38f2,
-  0x4b19, 0x47b9,
-  0x4b2c, 0x461f,
-  0x4b37, 0x41a9,
-  0x4b6f, 0x3c16,
-  0x4b70, 0x47c0,
-  0x4b72, 0x38fc,
-  0x4b7b, 0x3c8d,
-  0x4b7e, 0x400a,
-  0x4b8e, 0x39f7,
-  0x4b90, 0x3c20,
-  0x4b93, 0x3a8c,
-  0x4b96, 0x3942,
-  0x4b97, 0x3c24,
-  0x4b9d, 0x47c2,
-  0x4bbd, 0x3c23,
-  0x4bbe, 0x3954,
-  0x4bc0, 0x3ddc,
-  0x4c04, 0x3fbb,
-  0x4c07, 0x3fb7,
-  0x4c0e, 0x390c,
-  0x4c3b, 0x3f3c,
-  0x4c3e, 0x457b,
-  0x4c5b, 0x3ed9,
-  0x4c6d, 0x47c9,
-  0x4c7d, 0x3e66,
-  0x4ca4, 0x48be,
-  0x4cae, 0x3c42,
-  0x4cb0, 0x3c45,
-  0x4cb7, 0x3e21,
-  0x4ccd, 0x4578,
-  0x4ce1, 0x3ef3,
-  0x4ced, 0x40ab,
-  0x4d09, 0x3ed6,
-  0x4d10, 0x4117,
-  0x4d34, 0x3935,
-  0x4d91, 0x43f5,
-  0x4d9c, 0x48c4,
-  0x4e00, 0x0253,
-  0x4e01, 0x0255,
-  0x4e03, 0x0256,
-  0x4e04, 0x48fe,
-  0x4e07, 0x1771,
-  0x4e08, 0x0269,
-  0x4e09, 0x0267,
-  0x4e0a, 0x026a,
-  0x4e0b, 0x0268,
-  0x4e0c, 0x1772,
-  0x4e0d, 0x0294,
-  0x4e0e, 0x177a,
-  0x4e0f, 0x1778,
-  0x4e10, 0x0293,
-  0x4e11, 0x0292,
-  0x4e14, 0x02f2,
-  0x4e15, 0x02f1,
-  0x4e16, 0x02f0,
-  0x4e18, 0x02f3,
-  0x4e19, 0x02ef,
-  0x4e1a, 0x48fd,
-  0x4e1c, 0x48e0,
-  0x4e1e, 0x036e,
-  0x4e21, 0x3d6d,
-  0x4e24, 0x458d,
-  0x4e26, 0x0528,
-  0x4e28, 0x0218,
-  0x4e2a, 0x3f57,
-  0x4e2b, 0x026b,
-  0x4e2c, 0x44f3,
-  0x4e2d, 0x0295,
-  0x4e2e, 0x177b,
-  0x4e30, 0x0296,
-  0x4e31, 0x178e,
-  0x4e32, 0x0415,
-  0x4e33, 0x18f4,
-  0x4e36, 0x0219,
-  0x4e37, 0x4517,
-  0x4e38, 0x026c,
-  0x4e39, 0x0297,
-  0x4e3b, 0x02f4,
-  0x4e3c, 0x178f,
-  0x4e3d, 0x4537,
-  0x4e3f, 0x021a,
-  0x4e41, 0x36af,
-  0x4e42, 0x176c,
-  0x4e43, 0x0257,
-  0x4e45, 0x026e,
-  0x4e47, 0x1773,
-  0x4e48, 0x026f,
-  0x4e49, 0x408e,
-  0x4e4b, 0x0298,
-  0x4e4d, 0x02f5,
-  0x4e4e, 0x02f7,
-  0x4e4f, 0x02f6,
-  0x4e52, 0x0370,
-  0x4e56, 0x0529,
-  0x4e58, 0x0831,
-  0x4e59, 0x0254,
-  0x4e5a, 0x36b1,
-  0x4e5b, 0x44e5,
-  0x4e5c, 0x176d,
-  0x4e5d, 0x0258,
-  0x4e5e, 0x0271,
-  0x4e5f, 0x0270,
-  0x4e69, 0x0372,
-  0x4e6a, 0x3de5,
-  0x4e73, 0x052a,
-  0x4e78, 0x3d8e,
-  0x4e7e, 0x09fb,
-  0x4e7f, 0x1e35,
-  0x4e80, 0x458e,
-  0x4e81, 0x43bc,
-  0x4e82, 0x0dbe,
-  0x4e83, 0x2361,
-  0x4e85, 0x021b,
-  0x4e86, 0x0259,
-  0x4e87, 0x458f,
-  0x4e88, 0x029a,
-  0x4e89, 0x459c,
-  0x4e8b, 0x052b,
-  0x4e8c, 0x025a,
-  0x4e8d, 0x1774,
-  0x4e8e, 0x0272,
-  0x4e91, 0x029b,
-  0x4e92, 0x029d,
-  0x4e93, 0x177c,
-  0x4e94, 0x029e,
-  0x4e95, 0x029c,
-  0x4e98, 0x39c4,
-  0x4e99, 0x0373,
-  0x4e9a, 0x48d5,
-  0x4e9b, 0x052c,
-  0x4e9e, 0x052d,
-  0x4e9f, 0x06a3,
-  0x4ea0, 0x021c,
-  0x4ea1, 0x0273,
-  0x4ea2, 0x029f,
-  0x4ea4, 0x0374,
-  0x4ea5, 0x0376,
-  0x4ea6, 0x0375,
-  0x4ea8, 0x0416,
-  0x4eab, 0x052e,
-  0x4ead, 0x06a4,
-  0x4eb3, 0x0832,
-  0x4eb6, 0x2363,
-  0x4eb7, 0x413c,
-  0x4eb9, 0x3377,
-  0x4eba, 0x025b,
-  0x4ebb, 0x44e6,
-  0x4ebc, 0x39b1,
-  0x4ebf, 0x4590,
-  0x4ec0, 0x02a1,
-  0x4ec1, 0x02a0,
-  0x4ec2, 0x177d,
-  0x4ec3, 0x02a2,
-  0x4ec4, 0x02a8,
-  0x4ec6, 0x02a3,
-  0x4ec8, 0x177f,
-  0x4ec9, 0x177e,
-  0x4eca, 0x02a6,
-  0x4ecd, 0x02a5,
-  0x4ece, 0x3f62,
-  0x4ed4, 0x02fa,
-  0x4ed8, 0x02f9,
-  0x4ed9, 0x0300,
-  0x4eda, 0x1795,
-  0x4edc, 0x1791,
-  0x4edd, 0x1794,
-  0x4ede, 0x0301,
-  0x4edf, 0x0311,
-  0x4ee1, 0x1793,
-  0x4ee3, 0x02fe,
-  0x4ee5, 0x02f8,
-  0x4ee8, 0x1790,
-  0x4ee9, 0x1792,
-  0x4eea, 0x48cb,
-  0x4eeb, 0x4591,
-  0x4eee, 0x3d76,
-  0x4ef0, 0x0383,
-  0x4ef1, 0x17ba,
-  0x4ef2, 0x0380,
-  0x4ef3, 0x0384,
-  0x4ef4, 0x17c4,
-  0x4ef5, 0x17b8,
-  0x4ef6, 0x0381,
-  0x4ef7, 0x17bc,
-  0x4ef8, 0x39ad,
-  0x4efb, 0x0382,
-  0x4efd, 0x0385,
-  0x4eff, 0x0377,
-  0x4f00, 0x17bb,
-  0x4f01, 0x0386,
-  0x4f02, 0x17bf,
-  0x4f03, 0x39c8,
-  0x4f04, 0x17c3,
-  0x4f05, 0x17c0,
-  0x4f08, 0x17bd,
-  0x4f09, 0x0378,
-  0x4f0a, 0x037a,
-  0x4f0b, 0x0387,
-  0x4f0d, 0x037c,
-  0x4f0e, 0x17b5,
-  0x4f0f, 0x037f,
-  0x4f10, 0x037d,
-  0x4f12, 0x17c5,
-  0x4f13, 0x17c2,
-  0x4f14, 0x17b9,
-  0x4f15, 0x037b,
-  0x4f18, 0x17b6,
-  0x4f19, 0x0379,
-  0x4f1a, 0x453c,
-  0x4f1d, 0x17be,
-  0x4f22, 0x17c1,
-  0x4f28, 0x453d,
-  0x4f29, 0x39be,
-  0x4f2c, 0x17b7,
-  0x4f2d, 0x182f,
-  0x4f2f, 0x042c,
-  0x4f30, 0x041f,
-  0x4f32, 0x393d,
-  0x4f33, 0x1830,
-  0x4f34, 0x041c,
-  0x4f36, 0x042e,
-  0x4f37, 0x4592,
-  0x4f38, 0x0424,
-  0x4f39, 0x3f65,
-  0x4f3a, 0x0423,
-  0x4f3b, 0x1824,
-  0x4f3c, 0x0427,
-  0x4f3d, 0x0422,
-  0x4f3e, 0x1829,
-  0x4f3f, 0x1831,
-  0x4f41, 0x182d,
-  0x4f42, 0x39cb,
-  0x4f43, 0x0425,
-  0x4f45, 0x3b8f,
-  0x4f46, 0x0428,
-  0x4f47, 0x0419,
-  0x4f48, 0x0431,
-  0x4f49, 0x1826,
-  0x4f4b, 0x39b4,
-  0x4f4c, 0x1900,
-  0x4f4d, 0x0417,
-  0x4f4e, 0x042d,
-  0x4f4f, 0x0418,
-  0x4f50, 0x0420,
-  0x4f52, 0x182b,
-  0x4f53, 0x1827,
-  0x4f54, 0x0426,
-  0x4f55, 0x041e,
-  0x4f56, 0x1823,
-  0x4f57, 0x041a,
-  0x4f58, 0x182e,
-  0x4f59, 0x042f,
-  0x4f5a, 0x0432,
-  0x4f5b, 0x041d,
-  0x4f5c, 0x042a,
-  0x4f5d, 0x0430,
-  0x4f5e, 0x041b,
-  0x4f5f, 0x182c,
-  0x4f60, 0x042b,
-  0x4f61, 0x1832,
-  0x4f62, 0x1825,
-  0x4f63, 0x0429,
-  0x4f64, 0x1828,
-  0x4f67, 0x182a,
-  0x4f69, 0x053d,
-  0x4f6a, 0x1902,
-  0x4f6b, 0x190e,
-  0x4f6c, 0x0535,
-  0x4f6e, 0x190f,
-  0x4f6f, 0x0530,
-  0x4f70, 0x053a,
-  0x4f72, 0x3c72,
-  0x4f73, 0x0533,
-  0x4f74, 0x18fc,
-  0x4f75, 0x053b,
-  0x4f76, 0x18fb,
-  0x4f77, 0x18ff,
-  0x4f78, 0x1906,
-  0x4f79, 0x1904,
-  0x4f7a, 0x0543,
-  0x4f7b, 0x053e,
-  0x4f7c, 0x18f6,
-  0x4f7d, 0x18f8,
-  0x4f7e, 0x0540,
-  0x4f7f, 0x0534,
-  0x4f80, 0x18f9,
-  0x4f81, 0x1905,
-  0x4f82, 0x190c,
-  0x4f83, 0x0539,
-  0x4f84, 0x18fe,
-  0x4f85, 0x18f7,
-  0x4f86, 0x0538,
-  0x4f87, 0x18fa,
-  0x4f88, 0x053c,
-  0x4f89, 0x18fd,
-  0x4f8a, 0x39b5,
-  0x4f8b, 0x0537,
-  0x4f8d, 0x0532,
-  0x4f8f, 0x0541,
-  0x4f90, 0x1907,
-  0x4f91, 0x0542,
-  0x4f92, 0x190b,
-  0x4f94, 0x1909,
-  0x4f95, 0x190d,
-  0x4f96, 0x053f,
-  0x4f97, 0x1901,
-  0x4f98, 0x18f5,
-  0x4f9a, 0x1903,
-  0x4f9b, 0x0536,
-  0x4f9c, 0x1908,
-  0x4f9d, 0x0531,
-  0x4f9e, 0x190a,
-  0x4fa2, 0x39c7,
-  0x4fa8, 0x453e,
-  0x4fab, 0x4022,
-  0x4fae, 0x06b4,
-  0x4faf, 0x06a8,
-  0x4fb0, 0x3d4a,
-  0x4fb2, 0x1a5d,
-  0x4fb3, 0x1a65,
-  0x4fb5, 0x06a7,
-  0x4fb6, 0x06af,
-  0x4fb7, 0x06bb,
-  0x4fb9, 0x1a6b,
-  0x4fba, 0x1a69,
-  0x4fbb, 0x1a64,
-  0x4fbd, 0x4594,
-  0x4fbf, 0x06a9,
-  0x4fc0, 0x1a6a,
-  0x4fc1, 0x1a60,
-  0x4fc2, 0x06b7,
-  0x4fc3, 0x06ae,
-  0x4fc4, 0x06b6,
-  0x4fc5, 0x1a5b,
-  0x4fc7, 0x1a67,
-  0x4fc8, 0x46e8,
-  0x4fc9, 0x1a5e,
-  0x4fca, 0x06b2,
-  0x4fcb, 0x1a5f,
-  0x4fcc, 0x39cf,
-  0x4fcd, 0x1a5a,
-  0x4fce, 0x06b9,
-  0x4fcf, 0x06ac,
-  0x4fd0, 0x06b5,
-  0x4fd1, 0x06ab,
-  0x4fd3, 0x1a5c,
-  0x4fd4, 0x1a61,
-  0x4fd6, 0x1a68,
-  0x4fd7, 0x06b3,
-  0x4fd8, 0x06b0,
-  0x4fd9, 0x1a63,
-  0x4fda, 0x06b8,
-  0x4fdb, 0x1a66,
-  0x4fdc, 0x1a62,
-  0x4fdd, 0x06ad,
-  0x4fde, 0x06ba,
-  0x4fdf, 0x06b1,
-  0x4fe0, 0x06aa,
-  0x4fe1, 0x06a6,
-  0x4fe4, 0x3c66,
-  0x4fe5, 0x39d0,
-  0x4fec, 0x1a6c,
-  0x4fee, 0x084c,
-  0x4fef, 0x0836,
-  0x4ff1, 0x0846,
-  0x4ff2, 0x3f28,
-  0x4ff3, 0x084b,
-  0x4ff4, 0x1c24,
-  0x4ff5, 0x1c23,
-  0x4ff6, 0x1c28,
-  0x4ff8, 0x0839,
-  0x4ff9, 0x37b3,
-  0x4ffa, 0x0842,
-  0x4ffd, 0x3f26,
-  0x4ffe, 0x084f,
-  0x5000, 0x0843,
-  0x5003, 0x4596,
-  0x5005, 0x1c1d,
-  0x5006, 0x083c,
-  0x5007, 0x1c1e,
-  0x5008, 0x4024,
-  0x5009, 0x0851,
-  0x500b, 0x0848,
-  0x500c, 0x0833,
-  0x500e, 0x1c31,
-  0x500f, 0x0a0c,
-  0x5011, 0x0841,
-  0x5012, 0x0840,
-  0x5013, 0x1c1f,
-  0x5014, 0x0844,
-  0x5015, 0x1e45,
-  0x5016, 0x083b,
-  0x5017, 0x1c2a,
-  0x5018, 0x084a,
-  0x5019, 0x0849,
-  0x501a, 0x083f,
-  0x501b, 0x1c22,
-  0x501c, 0x1c2b,
-  0x501e, 0x1c1c,
-  0x501f, 0x083e,
-  0x5020, 0x1c2c,
-  0x5021, 0x0847,
-  0x5022, 0x1c20,
-  0x5023, 0x0835,
-  0x5025, 0x0838,
-  0x5026, 0x0837,
-  0x5027, 0x1c2d,
-  0x5028, 0x0845,
-  0x5029, 0x083a,
-  0x502a, 0x084e,
-  0x502b, 0x0850,
-  0x502c, 0x1c27,
-  0x502d, 0x084d,
-  0x502e, 0x39cc,
-  0x502f, 0x1c2f,
-  0x5030, 0x1c21,
-  0x5031, 0x1c30,
-  0x5033, 0x1c25,
-  0x5034, 0x3910,
-  0x5035, 0x1c2e,
-  0x5037, 0x1c26,
-  0x503c, 0x083d,
-  0x5040, 0x1e4d,
-  0x5041, 0x1e41,
-  0x5043, 0x0a00,
-  0x5045, 0x1e46,
-  0x5046, 0x1e4c,
-  0x5047, 0x09ff,
-  0x5048, 0x1e3f,
-  0x5049, 0x0a03,
-  0x504a, 0x1e43,
-  0x504b, 0x1e3c,
-  0x504c, 0x0a01,
-  0x504d, 0x1e40,
-  0x504e, 0x0a06,
-  0x504f, 0x0a0b,
-  0x5051, 0x1e51,
-  0x5053, 0x1e3b,
-  0x5055, 0x0a07,
-  0x5056, 0x3f2c,
-  0x5057, 0x1e50,
-  0x5058, 0x39d1,
-  0x505a, 0x0a02,
-  0x505b, 0x1e42,
-  0x505c, 0x09fe,
-  0x505d, 0x1e3d,
-  0x505e, 0x1e39,
-  0x505f, 0x1e47,
-  0x5060, 0x1e3a,
-  0x5061, 0x1e38,
-  0x5062, 0x1e44,
-  0x5063, 0x1e4a,
-  0x5065, 0x0a04,
-  0x5066, 0x3dc9,
-  0x5068, 0x20b8,
-  0x5069, 0x1e48,
-  0x506a, 0x1e37,
-  0x506b, 0x1e49,
-  0x506c, 0x39cd,
-  0x506d, 0x0a0e,
-  0x506e, 0x1e4e,
-  0x506f, 0x0a0d,
-  0x5070, 0x1e36,
-  0x5072, 0x1e3e,
-  0x5073, 0x1e4f,
-  0x5074, 0x0a09,
-  0x5075, 0x0a08,
-  0x5076, 0x0a05,
-  0x5077, 0x0a0a,
-  0x507a, 0x09fc,
-  0x507d, 0x09fd,
-  0x5080, 0x0bec,
-  0x5081, 0x39ce,
-  0x5082, 0x20bb,
-  0x5083, 0x20b4,
-  0x5085, 0x0be9,
-  0x5087, 0x20bc,
-  0x5088, 0x439c,
-  0x508b, 0x20b2,
-  0x508c, 0x20b5,
-  0x508d, 0x0be8,
-  0x508e, 0x20b6,
-  0x5090, 0x41ec,
-  0x5091, 0x0beb,
-  0x5092, 0x20ba,
-  0x5094, 0x20b0,
-  0x5095, 0x20af,
-  0x5096, 0x0bed,
-  0x5098, 0x0bee,
-  0x5099, 0x0bea,
-  0x509a, 0x0bef,
-  0x509b, 0x20ae,
-  0x509c, 0x20b9,
-  0x509d, 0x20b7,
-  0x509e, 0x20b1,
-  0x50a2, 0x0be7,
-  0x50a3, 0x20b3,
-  0x50a6, 0x3f3f,
-  0x50ac, 0x0dc5,
-  0x50ad, 0x0dbf,
-  0x50ae, 0x2367,
-  0x50af, 0x0dc8,
-  0x50b0, 0x236d,
-  0x50b1, 0x2370,
-  0x50b2, 0x0dc1,
-  0x50b4, 0x236a,
-  0x50b5, 0x0dc0,
-  0x50b6, 0x2373,
-  0x50b7, 0x0dc6,
-  0x50b8, 0x2374,
-  0x50ba, 0x236f,
-  0x50bb, 0x0dc7,
-  0x50bd, 0x2364,
-  0x50be, 0x0dc4,
-  0x50bf, 0x2365,
-  0x50c1, 0x236e,
-  0x50c2, 0x236c,
-  0x50c4, 0x2368,
-  0x50c5, 0x0dc3,
-  0x50c6, 0x2366,
-  0x50c7, 0x0dc9,
-  0x50c8, 0x236b,
-  0x50c9, 0x2372,
-  0x50ca, 0x2369,
-  0x50cb, 0x2371,
-  0x50cd, 0x39c5,
-  0x50ce, 0x0f88,
-  0x50cf, 0x0f85,
-  0x50d0, 0x38d1,
-  0x50d1, 0x0f86,
-  0x50d3, 0x261c,
-  0x50d4, 0x2614,
-  0x50d5, 0x0f84,
-  0x50d6, 0x0f81,
-  0x50d7, 0x2615,
-  0x50d9, 0x3fce,
-  0x50da, 0x0f83,
-  0x50db, 0x2618,
-  0x50dd, 0x261a,
-  0x50de, 0x4031,
-  0x50df, 0x3afd,
-  0x50e0, 0x2621,
-  0x50e1, 0x4171,
-  0x50e3, 0x2620,
-  0x50e4, 0x261b,
-  0x50e5, 0x0f80,
-  0x50e6, 0x2613,
-  0x50e7, 0x0f7e,
-  0x50e8, 0x2616,
-  0x50e9, 0x0f89,
-  0x50ea, 0x2619,
-  0x50ec, 0x261d,
-  0x50ed, 0x0f82,
-  0x50ee, 0x0f7f,
-  0x50ef, 0x261f,
-  0x50f0, 0x261e,
-  0x50f1, 0x0f87,
-  0x50f3, 0x2617,
-  0x50f4, 0x3ce9,
-  0x50f5, 0x1105,
-  0x50f6, 0x2883,
-  0x50f8, 0x2880,
-  0x50f9, 0x1106,
-  0x50fb, 0x1104,
-  0x50fc, 0x39d2,
-  0x50fd, 0x2887,
-  0x50fe, 0x2884,
-  0x50ff, 0x287d,
-  0x5100, 0x1103,
-  0x5101, 0x4032,
-  0x5102, 0x1107,
-  0x5103, 0x287e,
-  0x5104, 0x1102,
-  0x5105, 0x110a,
-  0x5106, 0x2881,
-  0x5108, 0x1108,
-  0x510a, 0x2888,
-  0x510b, 0x2885,
-  0x510d, 0x39c6,
-  0x510e, 0x4034,
-  0x5110, 0x128d,
-  0x5111, 0x2b04,
-  0x5112, 0x128a,
-  0x5113, 0x2b01,
-  0x5114, 0x128c,
-  0x5115, 0x128e,
-  0x5117, 0x2b02,
-  0x5118, 0x128b,
-  0x511a, 0x2b03,
-  0x511c, 0x2b00,
-  0x511f, 0x13b5,
-  0x5120, 0x2d3e,
-  0x5121, 0x13b6,
-  0x5122, 0x2d3c,
-  0x5124, 0x2d3d,
-  0x5125, 0x2d3b,
-  0x5126, 0x2d3a,
-  0x5129, 0x2d3f,
-  0x512a, 0x13b4,
-  0x512b, 0x39ae,
-  0x512d, 0x2f0f,
-  0x5130, 0x287f,
-  0x5131, 0x2f0e,
-  0x5132, 0x13b7,
-  0x5133, 0x1575,
-  0x5134, 0x307a,
-  0x5137, 0x1668,
-  0x5139, 0x32c6,
-  0x513a, 0x32c5,
-  0x513b, 0x16bc,
-  0x513c, 0x16bb,
-  0x513d, 0x340e,
-  0x513f, 0x025c,
-  0x5140, 0x0274,
-  0x5141, 0x02aa,
-  0x5143, 0x02a9,
-  0x5144, 0x0303,
-  0x5145, 0x0302,
-  0x5146, 0x038a,
-  0x5147, 0x0389,
-  0x5148, 0x038b,
-  0x5149, 0x0388,
-  0x514b, 0x0434,
-  0x514c, 0x0433,
-  0x514d, 0x0435,
-  0x5152, 0x0545,
-  0x5154, 0x0544,
-  0x5155, 0x0546,
-  0x5156, 0x439a,
-  0x5157, 0x06bc,
-  0x5159, 0x0119,
-  0x515a, 0x1c32,
-  0x515b, 0x011a,
-  0x515c, 0x0a0f,
-  0x515d, 0x011c,
-  0x515e, 0x011b,
-  0x515f, 0x20bd,
-  0x5160, 0x403a,
-  0x5161, 0x011d,
-  0x5162, 0x0f8a,
-  0x5163, 0x011e,
-  0x5165, 0x025d,
-  0x5167, 0x02ab,
-  0x5168, 0x038c,
-  0x5169, 0x0547,
-  0x516a, 0x403c,
-  0x516b, 0x025e,
-  0x516c, 0x02ae,
-  0x516d, 0x02ac,
-  0x5171, 0x038d,
-  0x5174, 0x453f,
-  0x5175, 0x0436,
-  0x5176, 0x0549,
-  0x5177, 0x0548,
-  0x5178, 0x054a,
-  0x5179, 0x3ace,
-  0x517c, 0x0852,
-  0x5180, 0x128f,
-  0x5182, 0x021d,
-  0x5186, 0x439f,
-  0x5187, 0x1779,
-  0x5188, 0x36b6,
-  0x5189, 0x0304,
-  0x518d, 0x038e,
-  0x518f, 0x1833,
-  0x5191, 0x06be,
-  0x5192, 0x06bd,
-  0x5193, 0x1c34,
-  0x5194, 0x1c33,
-  0x5195, 0x0a10,
-  0x5196, 0x021e,
-  0x5197, 0x02af,
-  0x5198, 0x1780,
-  0x519a, 0x3ea3,
-  0x519c, 0x4540,
-  0x519e, 0x1910,
-  0x51a0, 0x06bf,
-  0x51a2, 0x0855,
-  0x51a4, 0x0853,
-  0x51a7, 0x3ea6,
-  0x51a8, 0x39da,
-  0x51aa, 0x1290,
-  0x51ab, 0x021f,
-  0x51ac, 0x0306,
-  0x51b0, 0x038f,
-  0x51b1, 0x17c6,
-  0x51b2, 0x4048,
-  0x51b3, 0x4051,
-  0x51b4, 0x3d7c,
-  0x51b5, 0x4012,
-  0x51b6, 0x0437,
-  0x51b8, 0x4049,
-  0x51b9, 0x1834,
-  0x51bc, 0x1911,
-  0x51bd, 0x054b,
-  0x51be, 0x1912,
-  0x51c3, 0x39db,
-  0x51c4, 0x1c36,
-  0x51c6, 0x0858,
-  0x51c7, 0x422a,
-  0x51c8, 0x1c38,
-  0x51c9, 0x404b,
-  0x51ca, 0x1c35,
-  0x51cb, 0x0859,
-  0x51cc, 0x0857,
-  0x51cd, 0x0856,
-  0x51ce, 0x1c39,
-  0x51cf, 0x404c,
-  0x51d0, 0x1e52,
-  0x51d1, 0x404d,
-  0x51d2, 0x3dad,
-  0x51d3, 0x404f,
-  0x51d4, 0x20be,
-  0x51d7, 0x2375,
-  0x51d8, 0x2622,
-  0x51db, 0x459a,
-  0x51dc, 0x110b,
-  0x51dd, 0x1291,
-  0x51de, 0x2b05,
-  0x51df, 0x424f,
-  0x51e0, 0x025f,
-  0x51e1, 0x026d,
-  0x51e2, 0x4052,
-  0x51e4, 0x4541,
-  0x51ed, 0x4054,
-  0x51f0, 0x0a11,
-  0x51f1, 0x0bf1,
-  0x51f3, 0x0f8b,
-  0x51f4, 0x4178,
-  0x51f5, 0x176e,
-  0x51f6, 0x02b0,
-  0x51f8, 0x0309,
-  0x51f9, 0x0307,
-  0x51fc, 0x459b,
-  0x51fd, 0x054c,
-  0x51fe, 0x3f0a,
-  0x5200, 0x0260,
-  0x5202, 0x36b3,
-  0x5203, 0x0275,
-  0x5205, 0x43a1,
-  0x5206, 0x02b1,
-  0x5209, 0x1797,
-  0x520a, 0x030a,
-  0x520b, 0x4059,
-  0x520c, 0x1796,
-  0x520e, 0x0393,
-  0x5210, 0x17c8,
-  0x5211, 0x0391,
-  0x5213, 0x17c7,
-  0x5216, 0x0394,
-  0x5217, 0x0390,
-  0x521c, 0x1835,
-  0x521d, 0x068b,
-  0x521e, 0x1836,
-  0x521f, 0x3f60,
-  0x5220, 0x4930,
-  0x5221, 0x1837,
-  0x5224, 0x043a,
-  0x5225, 0x0439,
-  0x5226, 0x405a,
-  0x5227, 0x43a2,
-  0x5228, 0x043d,
-  0x5229, 0x043b,
-  0x522e, 0x0552,
-  0x5230, 0x0551,
-  0x5231, 0x1917,
-  0x5232, 0x1914,
-  0x5234, 0x3efb,
-  0x5235, 0x1913,
-  0x5236, 0x0553,
-  0x5237, 0x054f,
-  0x5238, 0x054e,
-  0x523a, 0x0550,
-  0x523b, 0x054d,
-  0x523c, 0x405b,
-  0x5241, 0x0554,
-  0x5243, 0x06c1,
-  0x5244, 0x1a6d,
-  0x5246, 0x1916,
-  0x5247, 0x06c6,
-  0x5249, 0x1a6e,
-  0x524a, 0x06c2,
-  0x524b, 0x06c5,
-  0x524c, 0x06c4,
-  0x524d, 0x06c3,
-  0x524e, 0x06c0,
-  0x5252, 0x1c3c,
-  0x5254, 0x085c,
-  0x5255, 0x1c3f,
-  0x5256, 0x085a,
-  0x5257, 0x405d,
-  0x5259, 0x39e4,
-  0x525a, 0x1c3b,
-  0x525b, 0x085d,
-  0x525c, 0x085b,
-  0x525d, 0x085e,
-  0x525e, 0x1c3d,
-  0x5260, 0x3f29,
-  0x5261, 0x1c3a,
-  0x5262, 0x1c40,
-  0x5268, 0x4619,
-  0x5269, 0x0bf5,
-  0x526a, 0x0a12,
-  0x526b, 0x1e53,
-  0x526c, 0x1e55,
-  0x526d, 0x1e54,
-  0x526e, 0x1e56,
-  0x526f, 0x0a13,
-  0x5272, 0x0bf2,
-  0x5273, 0x3f43,
-  0x5274, 0x0bf3,
-  0x5277, 0x0dcb,
-  0x5278, 0x2377,
-  0x5279, 0x43a3,
-  0x527a, 0x2376,
-  0x527b, 0x2378,
-  0x527d, 0x0dcc,
-  0x527f, 0x0dca,
-  0x5280, 0x2623,
-  0x5282, 0x0f8d,
-  0x5283, 0x0f8c,
-  0x5284, 0x2776,
-  0x5287, 0x110c,
-  0x528a, 0x1110,
-  0x528b, 0x2889,
-  0x528d, 0x110f,
-  0x528f, 0x3dbf,
-  0x5290, 0x459d,
-  0x5291, 0x1292,
-  0x5293, 0x1293,
-  0x5294, 0x405e,
-  0x5296, 0x307c,
-  0x5297, 0x32c8,
-  0x5298, 0x32c7,
-  0x5299, 0x340f,
-  0x529a, 0x3f68,
-  0x529b, 0x0262,
-  0x529f, 0x030c,
-  0x52a0, 0x030b,
-  0x52a1, 0x4542,
-  0x52a3, 0x0395,
-  0x52a4, 0x39e5,
-  0x52a6, 0x17c9,
-  0x52a8, 0x4543,
-  0x52a9, 0x043f,
-  0x52ab, 0x043e,
-  0x52ac, 0x0441,
-  0x52ad, 0x1838,
-  0x52b5, 0x405c,
-  0x52b9, 0x405f,
-  0x52bb, 0x0556,
-  0x52bc, 0x1918,
-  0x52be, 0x0555,
-  0x52c0, 0x1a6f,
-  0x52c1, 0x06ca,
-  0x52c2, 0x1a70,
-  0x52c3, 0x06c9,
-  0x52c5, 0x4060,
-  0x52c7, 0x06c7,
-  0x52c9, 0x06c8,
-  0x52cc, 0x3ee1,
-  0x52cd, 0x1c41,
-  0x52d0, 0x4109,
-  0x52d1, 0x3f2a,
-  0x52d2, 0x0a14,
-  0x52d3, 0x1e58,
-  0x52d5, 0x0a17,
-  0x52d6, 0x1e57,
-  0x52d7, 0x0acf,
-  0x52d8, 0x0a16,
-  0x52d9, 0x0a15,
-  0x52db, 0x0bf8,
-  0x52dd, 0x0bf7,
-  0x52de, 0x0bf6,
-  0x52df, 0x0dcd,
-  0x52e0, 0x4063,
-  0x52e1, 0x39e7,
-  0x52e2, 0x0dd0,
-  0x52e4, 0x0dcf,
-  0x52e6, 0x0dce,
-  0x52e9, 0x2625,
-  0x52eb, 0x2626,
-  0x52ef, 0x288c,
-  0x52f0, 0x1111,
-  0x52f1, 0x288b,
-  0x52f3, 0x1294,
-  0x52f4, 0x2d40,
-  0x52f5, 0x13b8,
-  0x52f7, 0x307d,
-  0x52f8, 0x1609,
-  0x52f9, 0x0220,
-  0x52fa, 0x0276,
-  0x52fb, 0x02b4,
-  0x52fc, 0x1781,
-  0x52fe, 0x02b5,
-  0x5301, 0x3d79,
-  0x5305, 0x030d,
-  0x5308, 0x0396,
-  0x5309, 0x183a,
-  0x530a, 0x1919,
-  0x530d, 0x06cb,
-  0x530e, 0x1c42,
-  0x530f, 0x0a19,
-  0x5310, 0x0a18,
-  0x5311, 0x20c0,
-  0x5312, 0x20bf,
-  0x5315, 0x0263,
-  0x5316, 0x02b7,
-  0x5317, 0x030f,
-  0x5319, 0x0a1a,
-  0x531a, 0x176f,
-  0x531c, 0x1798,
-  0x531d, 0x0310,
-  0x531f, 0x17cb,
-  0x5320, 0x0398,
-  0x5321, 0x0397,
-  0x5322, 0x17ca,
-  0x5323, 0x0442,
-  0x5327, 0x459e,
-  0x532a, 0x085f,
-  0x532c, 0x3f36,
-  0x532d, 0x1e59,
-  0x532f, 0x0dd2,
-  0x5330, 0x2627,
-  0x5331, 0x0f8e,
-  0x5332, 0x3fd0,
-  0x5333, 0x406d,
-  0x5334, 0x2b06,
-  0x5337, 0x31c7,
-  0x5338, 0x0221,
-  0x5339, 0x02b8,
-  0x533b, 0x4544,
-  0x533c, 0x191b,
-  0x533d, 0x1a71,
-  0x533e, 0x0a1d,
-  0x533f, 0x0a1b,
-  0x5341, 0x0264,
-  0x5342, 0x4947,
-  0x5343, 0x0277,
-  0x5344, 0x016b,
-  0x5345, 0x02bb,
-  0x5347, 0x02ba,
-  0x5348, 0x02b9,
-  0x5349, 0x0313,
-  0x534a, 0x0312,
-  0x534c, 0x1799,
-  0x534d, 0x17cc,
-  0x534e, 0x4545,
-  0x5351, 0x055a,
-  0x5352, 0x0557,
-  0x5353, 0x0559,
-  0x5354, 0x0558,
-  0x5357, 0x06cc,
-  0x535a, 0x0bf9,
-  0x535c, 0x0265,
-  0x535d, 0x4501,
-  0x535e, 0x02bc,
-  0x535f, 0x43a7,
-  0x5360, 0x0315,
-  0x5361, 0x0314,
-  0x5363, 0x183b,
-  0x5364, 0x480a,
-  0x5366, 0x055b,
-  0x5367, 0x3ecd,
-  0x5369, 0x0222,
-  0x536c, 0x1782,
-  0x536d, 0x407a,
-  0x536e, 0x0317,
-  0x536f, 0x0316,
-  0x5370, 0x0399,
-  0x5372, 0x183c,
-  0x5373, 0x0443,
-  0x5374, 0x407b,
-  0x5375, 0x0444,
-  0x5377, 0x055c,
-  0x537b, 0x06cd,
-  0x537c, 0x1a72,
-  0x537d, 0x4901,
-  0x537e, 0x407d,
-  0x537f, 0x0860,
-  0x5382, 0x1770,
-  0x5384, 0x02bd,
-  0x538a, 0x17cd,
-  0x538e, 0x183d,
-  0x5392, 0x191c,
-  0x5393, 0x4082,
-  0x5394, 0x191d,
-  0x5396, 0x1a74,
-  0x5397, 0x1a73,
-  0x5398, 0x1a76,
-  0x5399, 0x1a75,
-  0x539a, 0x06ce,
-  0x539c, 0x1e5a,
-  0x539d, 0x0862,
-  0x539e, 0x1c43,
-  0x539f, 0x0861,
-  0x53a0, 0x4084,
-  0x53a2, 0x3e2b,
-  0x53a4, 0x20c1,
-  0x53a5, 0x0bfa,
-  0x53a6, 0x413b,
-  0x53a7, 0x20c2,
-  0x53a8, 0x413e,
-  0x53a9, 0x45a0,
-  0x53aa, 0x3fc6,
-  0x53ab, 0x4085,
-  0x53ac, 0x2628,
-  0x53ad, 0x0f8f,
-  0x53ae, 0x4086,
-  0x53b0, 0x45a2,
-  0x53b2, 0x1112,
-  0x53b4, 0x307e,
-  0x53b6, 0x0223,
-  0x53b9, 0x1783,
-  0x53bb, 0x0318,
-  0x53c1, 0x408b,
-  0x53c2, 0x43a6,
-  0x53c3, 0x0a1e,
-  0x53c5, 0x408c,
-  0x53c8, 0x0266,
-  0x53c9, 0x0278,
-  0x53ca, 0x02bf,
-  0x53cb, 0x02be,
-  0x53cc, 0x38b6,
-  0x53cd, 0x02c0,
-  0x53d0, 0x39fa,
-  0x53d1, 0x4546,
-  0x53d2, 0x3e3d,
-  0x53d4, 0x0560,
-  0x53d6, 0x055f,
-  0x53d7, 0x0561,
-  0x53d8, 0x4547,
-  0x53d9, 0x4090,
-  0x53da, 0x3f39,
-  0x53db, 0x06cf,
-  0x53df, 0x0863,
-  0x53e0, 0x4093,
-  0x53e1, 0x2b07,
-  0x53e2, 0x14c9,
-  0x53e3, 0x0279,
-  0x53e4, 0x031a,
-  0x53e5, 0x0329,
-  0x53e6, 0x0324,
-  0x53e8, 0x031f,
-  0x53e9, 0x031e,
-  0x53ea, 0x0325,
-  0x53eb, 0x0323,
-  0x53ec, 0x031c,
-  0x53ed, 0x032a,
-  0x53ee, 0x031d,
-  0x53ef, 0x0319,
-  0x53f0, 0x0328,
-  0x53f1, 0x0327,
-  0x53f2, 0x0326,
-  0x53f3, 0x031b,
-  0x53f5, 0x0322,
-  0x53f6, 0x4096,
-  0x53f7, 0x3808,
-  0x53f8, 0x0321,
-  0x53fb, 0x032b,
-  0x53fc, 0x0320,
-  0x53fe, 0x40c1,
-  0x5401, 0x03a0,
-  0x5403, 0x03a6,
-  0x5404, 0x03a2,
-  0x5406, 0x03a8,
-  0x5407, 0x17ce,
-  0x5408, 0x03a5,
-  0x5409, 0x039b,
-  0x540a, 0x039e,
-  0x540b, 0x03a1,
-  0x540c, 0x039d,
-  0x540d, 0x03a4,
-  0x540e, 0x03a7,
-  0x540f, 0x039c,
-  0x5410, 0x039f,
-  0x5411, 0x03a3,
-  0x5412, 0x03a9,
-  0x5413, 0x4098,
-  0x5414, 0x3c77,
-  0x5416, 0x3e7f,
-  0x5418, 0x1847,
-  0x5419, 0x1844,
-  0x541a, 0x3e64,
-  0x541b, 0x0451,
-  0x541c, 0x1845,
-  0x541d, 0x0445,
-  0x541e, 0x0447,
-  0x541f, 0x045f,
-  0x5420, 0x045a,
-  0x5421, 0x4203,
-  0x5423, 0x45a3,
-  0x5424, 0x184c,
-  0x5425, 0x1846,
-  0x5426, 0x0449,
-  0x5427, 0x044b,
-  0x5428, 0x184b,
-  0x5429, 0x0452,
-  0x542a, 0x1841,
-  0x542b, 0x045e,
-  0x542c, 0x0460,
-  0x542d, 0x0446,
-  0x542e, 0x0457,
-  0x542f, 0x40ac,
-  0x5430, 0x183f,
-  0x5431, 0x045d,
-  0x5432, 0x3e75,
-  0x5433, 0x044e,
-  0x5435, 0x0458,
-  0x5437, 0x1840,
-  0x5438, 0x0456,
-  0x5439, 0x0454,
-  0x543b, 0x0455,
-  0x543c, 0x045b,
-  0x543d, 0x1848,
-  0x543e, 0x0448,
-  0x5440, 0x045c,
-  0x5441, 0x184a,
-  0x5442, 0x0450,
-  0x5443, 0x044d,
-  0x5445, 0x1843,
-  0x5446, 0x044c,
-  0x5447, 0x184d,
-  0x5448, 0x044f,
-  0x544a, 0x0453,
-  0x544b, 0x3ed1,
-  0x544d, 0x3ea7,
-  0x544e, 0x044a,
-  0x544f, 0x1849,
-  0x5454, 0x1842,
-  0x5460, 0x192e,
-  0x5461, 0x192d,
-  0x5462, 0x0573,
-  0x5463, 0x1930,
-  0x5464, 0x1932,
-  0x5465, 0x1927,
-  0x5466, 0x192a,
-  0x5467, 0x1931,
-  0x5468, 0x0574,
-  0x5469, 0x3f32,
-  0x546a, 0x3d83,
-  0x546b, 0x1924,
-  0x546c, 0x1928,
-  0x546d, 0x409d,
-  0x546f, 0x192c,
-  0x5470, 0x1a85,
-  0x5471, 0x056f,
-  0x5472, 0x1a89,
-  0x5473, 0x0562,
-  0x5474, 0x1929,
-  0x5475, 0x0563,
-  0x5476, 0x0570,
-  0x5477, 0x0569,
-  0x5478, 0x0565,
-  0x547a, 0x1925,
-  0x547b, 0x0568,
-  0x547c, 0x056d,
-  0x547d, 0x0576,
-  0x547e, 0x1926,
-  0x547f, 0x191f,
-  0x5480, 0x0567,
-  0x5481, 0x1920,
-  0x5482, 0x1922,
-  0x5484, 0x056a,
-  0x5485, 0x46d9,
-  0x5486, 0x056c,
-  0x5487, 0x191e,
-  0x5488, 0x1923,
-  0x548b, 0x0575,
-  0x548c, 0x0571,
-  0x548d, 0x192b,
-  0x548e, 0x0577,
-  0x548f, 0x40a1,
-  0x5490, 0x056e,
-  0x5491, 0x1921,
-  0x5492, 0x056b,
-  0x5493, 0x45a7,
-  0x5494, 0x3e98,
-  0x5495, 0x0566,
-  0x5496, 0x0564,
-  0x5497, 0x3e8a,
-  0x5498, 0x192f,
-  0x549a, 0x0572,
-  0x549c, 0x3f66,
-  0x549e, 0x47ed,
-  0x54a0, 0x1a84,
-  0x54a1, 0x1a78,
-  0x54a2, 0x1a87,
-  0x54a3, 0x45a8,
-  0x54a4, 0x40a2,
-  0x54a5, 0x1a7a,
-  0x54a6, 0x06d6,
-  0x54a7, 0x06e4,
-  0x54a8, 0x06d2,
-  0x54a9, 0x06e3,
-  0x54aa, 0x06db,
-  0x54ab, 0x06e0,
-  0x54ac, 0x06d0,
-  0x54ad, 0x1a79,
-  0x54ae, 0x1a7f,
-  0x54af, 0x06df,
-  0x54b0, 0x1a8b,
-  0x54b1, 0x06e1,
-  0x54b2, 0x3744,
-  0x54b3, 0x06d7,
-  0x54b4, 0x45a9,
-  0x54b6, 0x1a81,
-  0x54b7, 0x1a7e,
-  0x54b8, 0x06d5,
-  0x54b9, 0x45aa,
-  0x54ba, 0x1a77,
-  0x54bb, 0x06e2,
-  0x54bc, 0x1a86,
-  0x54bd, 0x06da,
-  0x54be, 0x1a88,
-  0x54bf, 0x06e5,
-  0x54c0, 0x06d1,
-  0x54c1, 0x06dc,
-  0x54c2, 0x06d9,
-  0x54c3, 0x1a7c,
-  0x54c4, 0x06dd,
-  0x54c5, 0x1a82,
-  0x54c7, 0x06d8,
-  0x54c8, 0x06de,
-  0x54c9, 0x06d4,
-  0x54cb, 0x39a3,
-  0x54cc, 0x43a8,
-  0x54cd, 0x3a00,
-  0x54ce, 0x06d3,
-  0x54cf, 0x1a7b,
-  0x54d0, 0x45ab,
-  0x54d6, 0x1a80,
-  0x54da, 0x4923,
-  0x54de, 0x1a8a,
-  0x54e0, 0x1c57,
-  0x54e1, 0x0870,
-  0x54e2, 0x1c45,
-  0x54e3, 0x4341,
-  0x54e4, 0x1c4a,
-  0x54e5, 0x0869,
-  0x54e6, 0x0874,
-  0x54e7, 0x1c48,
-  0x54e8, 0x0864,
-  0x54e9, 0x086e,
-  0x54ea, 0x0873,
-  0x54eb, 0x1c4f,
-  0x54ed, 0x086f,
-  0x54ee, 0x0872,
-  0x54ef, 0x45ac,
-  0x54f1, 0x1c52,
-  0x54f2, 0x086a,
-  0x54f3, 0x1c49,
-  0x54f7, 0x1c55,
-  0x54fa, 0x086c,
-  0x54fb, 0x1c54,
-  0x54fc, 0x0868,
-  0x54fd, 0x0877,
-  0x54ff, 0x1c4c,
-  0x5501, 0x0866,
-  0x5502, 0x3ccc,
-  0x5503, 0x1c59,
-  0x5504, 0x1c4d,
-  0x5505, 0x1c51,
-  0x5506, 0x086b,
-  0x5507, 0x0876,
-  0x5508, 0x1c4e,
-  0x5509, 0x0871,
-  0x550a, 0x1c53,
-  0x550b, 0x1c5a,
-  0x550c, 0x1e69,
-  0x550d, 0x3a73,
-  0x550e, 0x1c58,
-  0x550f, 0x0878,
-  0x5510, 0x0865,
-  0x5511, 0x1c50,
-  0x5512, 0x1c47,
-  0x5513, 0x3ea9,
-  0x5514, 0x086d,
-  0x5517, 0x1c46,
-  0x5518, 0x45ad,
-  0x551a, 0x1c4b,
-  0x551e, 0x3ea8,
-  0x5523, 0x45ae,
-  0x5525, 0x4309,
-  0x5526, 0x1c44,
-  0x5527, 0x0875,
-  0x5528, 0x45af,
-  0x552a, 0x1e61,
-  0x552b, 0x409a,
-  0x552c, 0x0a31,
-  0x552d, 0x1e6f,
-  0x552e, 0x0a2f,
-  0x552f, 0x0a2c,
-  0x5530, 0x1e66,
-  0x5531, 0x0a28,
-  0x5532, 0x1e6a,
-  0x5533, 0x0a33,
-  0x5534, 0x1e60,
-  0x5535, 0x1e65,
-  0x5536, 0x1e64,
-  0x5537, 0x0867,
-  0x5538, 0x0a2e,
-  0x5539, 0x1e6d,
-  0x553b, 0x1e70,
-  0x553c, 0x1e5d,
-  0x553e, 0x0c0c,
-  0x553f, 0x43a9,
-  0x5540, 0x1e71,
-  0x5541, 0x0a34,
-  0x5543, 0x0a26,
-  0x5544, 0x0a23,
-  0x5545, 0x1e68,
-  0x5546, 0x0a20,
-  0x5547, 0x40aa,
-  0x5548, 0x1e6e,
-  0x5549, 0x4068,
-  0x554a, 0x0a27,
-  0x554b, 0x1e72,
-  0x554d, 0x1e5e,
-  0x554e, 0x1e6c,
-  0x554f, 0x0a2a,
-  0x5550, 0x1e5f,
-  0x5551, 0x1e62,
-  0x5552, 0x1e67,
-  0x5553, 0x43ae,
-  0x5555, 0x0a2b,
-  0x5556, 0x0a29,
-  0x5557, 0x0a35,
-  0x555c, 0x0a30,
-  0x555d, 0x40a0,
-  0x555e, 0x0a24,
-  0x555f, 0x0abc,
-  0x5561, 0x0a25,
-  0x5562, 0x1e63,
-  0x5563, 0x0a32,
-  0x5564, 0x0a2d,
-  0x5565, 0x1e6b,
-  0x5566, 0x0a22,
-  0x5569, 0x3e9f,
-  0x556a, 0x0a21,
-  0x556b, 0x3b2e,
-  0x5571, 0x3bc6,
-  0x5572, 0x3e8b,
-  0x5573, 0x3f24,
-  0x5575, 0x1e5b,
-  0x5577, 0x20c7,
-  0x5579, 0x435d,
-  0x557b, 0x0bfb,
-  0x557c, 0x0bfe,
-  0x557d, 0x20d2,
-  0x557e, 0x0c12,
-  0x557f, 0x20d5,
-  0x5580, 0x0bfc,
-  0x5581, 0x20ce,
-  0x5582, 0x0c02,
-  0x5583, 0x0c08,
-  0x5584, 0x0d1b,
-  0x5586, 0x40ae,
-  0x5587, 0x0c06,
-  0x5588, 0x20cb,
-  0x5589, 0x0c13,
-  0x558a, 0x0bff,
-  0x558b, 0x0c07,
-  0x558c, 0x20d3,
-  0x558d, 0x2387,
-  0x558e, 0x20d8,
-  0x558f, 0x20cc,
-  0x5590, 0x430e,
-  0x5591, 0x20c3,
-  0x5592, 0x20d0,
-  0x5593, 0x20ca,
-  0x5594, 0x0c05,
-  0x5595, 0x20d6,
-  0x5598, 0x0c01,
-  0x5599, 0x0c15,
-  0x559a, 0x0c0e,
-  0x559c, 0x0c03,
-  0x559d, 0x0c00,
-  0x559f, 0x0c0b,
-  0x55a1, 0x20d7,
-  0x55a2, 0x20c9,
-  0x55a3, 0x20cf,
-  0x55a4, 0x20d1,
-  0x55a5, 0x20c5,
-  0x55a6, 0x20d4,
-  0x55a7, 0x0bfd,
-  0x55a8, 0x20c4,
-  0x55a9, 0x40af,
-  0x55aa, 0x0c04,
-  0x55ab, 0x0c14,
-  0x55ac, 0x0c10,
-  0x55ad, 0x20c6,
-  0x55ae, 0x0c0a,
-  0x55b0, 0x38f5,
-  0x55b1, 0x0c11,
-  0x55b2, 0x0c0d,
-  0x55b3, 0x0c09,
-  0x55b4, 0x39fe,
-  0x55b5, 0x20cd,
-  0x55b9, 0x43aa,
-  0x55ba, 0x3e89,
-  0x55bb, 0x0c0f,
-  0x55bc, 0x3dc3,
-  0x55bf, 0x2385,
-  0x55c0, 0x2381,
-  0x55c1, 0x3e4f,
-  0x55c2, 0x2390,
-  0x55c3, 0x237a,
-  0x55c4, 0x2383,
-  0x55c5, 0x0de0,
-  0x55c7, 0x0dd9,
-  0x55c8, 0x238c,
-  0x55c9, 0x0de3,
-  0x55ca, 0x237f,
-  0x55cb, 0x237e,
-  0x55cc, 0x237c,
-  0x55cd, 0x238e,
-  0x55ce, 0x0dd7,
-  0x55cf, 0x2388,
-  0x55d0, 0x237d,
-  0x55d1, 0x0dda,
-  0x55d2, 0x2386,
-  0x55d3, 0x0dd5,
-  0x55d4, 0x2382,
-  0x55d5, 0x2389,
-  0x55d6, 0x238b,
-  0x55d7, 0x45b3,
-  0x55d8, 0x43ab,
-  0x55d9, 0x238f,
-  0x55da, 0x0dde,
-  0x55db, 0x237b,
-  0x55dc, 0x0dd8,
-  0x55dd, 0x2380,
-  0x55de, 0x3e94,
-  0x55df, 0x0dd3,
-  0x55e1, 0x0ddf,
-  0x55e2, 0x238a,
-  0x55e3, 0x0ddb,
-  0x55e5, 0x0de2,
-  0x55e6, 0x0dd6,
-  0x55e7, 0x011f,
-  0x55e8, 0x0dd4,
-  0x55e9, 0x2384,
-  0x55ea, 0x3e7c,
-  0x55ec, 0x37d2,
-  0x55ef, 0x0ddd,
-  0x55f0, 0x3e88,
-  0x55f1, 0x3e83,
-  0x55f2, 0x238d,
-  0x55f5, 0x4786,
-  0x55f6, 0x0f9f,
-  0x55f7, 0x0f9a,
-  0x55f9, 0x2637,
-  0x55fa, 0x2633,
-  0x55fb, 0x4626,
-  0x55fc, 0x262d,
-  0x55fd, 0x0f94,
-  0x55fe, 0x0f90,
-  0x55ff, 0x2636,
-  0x5600, 0x0f91,
-  0x5601, 0x2630,
-  0x5602, 0x2632,
-  0x5604, 0x2635,
-  0x5605, 0x3e82,
-  0x5606, 0x0f96,
-  0x5608, 0x0f9d,
-  0x5609, 0x0f97,
-  0x560c, 0x262b,
-  0x560d, 0x0f98,
-  0x560f, 0x262e,
-  0x5610, 0x0f9e,
-  0x5611, 0x3f4d,
-  0x5612, 0x262c,
-  0x5613, 0x2631,
-  0x5614, 0x0f95,
-  0x5615, 0x262a,
-  0x5616, 0x0f9b,
-  0x5617, 0x0f93,
-  0x561b, 0x0f92,
-  0x561c, 0x262f,
-  0x561d, 0x2634,
-  0x561e, 0x3e68,
-  0x561f, 0x0f9c,
-  0x5620, 0x3f7d,
-  0x5621, 0x43ad,
-  0x5622, 0x3e67,
-  0x5623, 0x4707,
-  0x5625, 0x3e78,
-  0x5627, 0x2629,
-  0x5629, 0x1119,
-  0x562a, 0x289d,
-  0x562c, 0x289a,
-  0x562d, 0x3e63,
-  0x562e, 0x1113,
-  0x562f, 0x111f,
-  0x5632, 0x1116,
-  0x5633, 0x2898,
-  0x5634, 0x1118,
-  0x5635, 0x2890,
-  0x5636, 0x111e,
-  0x5637, 0x40b7,
-  0x5638, 0x289c,
-  0x5639, 0x1115,
-  0x563a, 0x289e,
-  0x563b, 0x1114,
-  0x563d, 0x2899,
-  0x563e, 0x289b,
-  0x563f, 0x1117,
-  0x5640, 0x2897,
-  0x5641, 0x2891,
-  0x5642, 0x288e,
-  0x5643, 0x3e7e,
-  0x5645, 0x20c8,
-  0x5646, 0x2894,
-  0x5648, 0x288d,
-  0x5649, 0x2893,
-  0x564a, 0x2892,
-  0x564c, 0x288f,
-  0x564d, 0x40bc,
-  0x564e, 0x111b,
-  0x564f, 0x40bd,
-  0x5650, 0x47cf,
-  0x5652, 0x45c2,
-  0x5653, 0x111a,
-  0x5654, 0x43af,
-  0x5657, 0x111c,
-  0x5658, 0x2895,
-  0x5659, 0x1295,
-  0x565a, 0x2896,
-  0x565d, 0x3ef9,
-  0x565e, 0x2b10,
-  0x5660, 0x2b09,
-  0x5661, 0x3812,
-  0x5662, 0x12a1,
-  0x5663, 0x2b0d,
-  0x5664, 0x1299,
-  0x5665, 0x129d,
-  0x5666, 0x2b0c,
-  0x5668, 0x129c,
-  0x5669, 0x1298,
-  0x566a, 0x129b,
-  0x566b, 0x1296,
-  0x566c, 0x12a0,
-  0x566d, 0x2b0e,
-  0x566e, 0x2b0a,
-  0x566f, 0x129f,
-  0x5670, 0x2b08,
-  0x5671, 0x129e,
-  0x5672, 0x2b0f,
-  0x5673, 0x2b0b,
-  0x5674, 0x111d,
-  0x5676, 0x12a2,
-  0x5677, 0x2b11,
-  0x5678, 0x129a,
-  0x5679, 0x1297,
-  0x567a, 0x3d85,
-  0x567b, 0x3eb7,
-  0x567c, 0x3eed,
-  0x567e, 0x2d47,
-  0x567f, 0x2d49,
-  0x5680, 0x13ba,
-  0x5681, 0x2d4a,
-  0x5682, 0x2d48,
-  0x5683, 0x2d46,
-  0x5684, 0x2d45,
-  0x5685, 0x13bc,
-  0x5686, 0x2d44,
-  0x5687, 0x13bd,
-  0x5689, 0x4628,
-  0x568a, 0x3949,
-  0x568b, 0x3e4c,
-  0x568c, 0x2d42,
-  0x568e, 0x13b9,
-  0x568f, 0x13be,
-  0x5690, 0x13bb,
-  0x5692, 0x39a6,
-  0x5693, 0x2d41,
-  0x5695, 0x14ca,
-  0x5697, 0x2f13,
-  0x5698, 0x2f11,
-  0x5699, 0x2f16,
-  0x569a, 0x2f14,
-  0x569c, 0x2f12,
-  0x569d, 0x2f15,
-  0x569e, 0x39a4,
-  0x569f, 0x3948,
-  0x56a1, 0x436b,
-  0x56a4, 0x3cc8,
-  0x56a5, 0x1576,
-  0x56a6, 0x3081,
-  0x56a8, 0x1577,
-  0x56aa, 0x3083,
-  0x56ab, 0x307f,
-  0x56ac, 0x3084,
-  0x56ad, 0x3080,
-  0x56ae, 0x14cb,
-  0x56af, 0x45f7,
-  0x56b1, 0x463f,
-  0x56b2, 0x31c8,
-  0x56b3, 0x31ca,
-  0x56b4, 0x160c,
-  0x56b5, 0x31c9,
-  0x56b6, 0x160b,
-  0x56b7, 0x160a,
-  0x56b9, 0x486f,
-  0x56bc, 0x160d,
-  0x56bd, 0x32ca,
-  0x56bf, 0x3e5d,
-  0x56c0, 0x166b,
-  0x56c1, 0x166a,
-  0x56c2, 0x166c,
-  0x56c3, 0x32c9,
-  0x56c5, 0x3379,
-  0x56c6, 0x3378,
-  0x56c8, 0x16bd,
-  0x56c9, 0x16bf,
-  0x56ca, 0x16be,
-  0x56cb, 0x337a,
-  0x56cc, 0x16f6,
-  0x56cd, 0x3481,
-  0x56d1, 0x171f,
-  0x56d3, 0x3480,
-  0x56d4, 0x34c9,
-  0x56d6, 0x488a,
-  0x56d7, 0x1775,
-  0x56da, 0x032d,
-  0x56db, 0x032c,
-  0x56dd, 0x03ac,
-  0x56de, 0x03ab,
-  0x56df, 0x17d0,
-  0x56e0, 0x03aa,
-  0x56e1, 0x17cf,
-  0x56e2, 0x4548,
-  0x56e4, 0x0463,
-  0x56e5, 0x1850,
-  0x56e7, 0x184f,
-  0x56ea, 0x0461,
-  0x56eb, 0x0464,
-  0x56ed, 0x40c4,
-  0x56ee, 0x184e,
-  0x56ef, 0x40c3,
-  0x56f0, 0x0462,
-  0x56f1, 0x40bf,
-  0x56f7, 0x1933,
-  0x56f9, 0x1934,
-  0x56fa, 0x0578,
-  0x56fd, 0x3d64,
-  0x56ff, 0x06e6,
-  0x5700, 0x40c2,
-  0x5701, 0x1c5b,
-  0x5703, 0x0879,
-  0x5707, 0x1e74,
-  0x5708, 0x0a36,
-  0x5709, 0x0a38,
-  0x570a, 0x1e73,
-  0x570b, 0x0a37,
-  0x570c, 0x20d9,
-  0x570d, 0x0c16,
-  0x5712, 0x0de4,
-  0x5714, 0x2391,
-  0x5715, 0x3e36,
-  0x5716, 0x0fa1,
-  0x5718, 0x0fa0,
-  0x571a, 0x289f,
-  0x571b, 0x2b13,
-  0x571c, 0x2b12,
-  0x571d, 0x3a02,
-  0x571e, 0x3505,
-  0x571f, 0x027a,
-  0x5720, 0x1784,
-  0x5722, 0x179a,
-  0x5728, 0x03af,
-  0x5729, 0x03b3,
-  0x572a, 0x17d2,
-  0x572c, 0x03b1,
-  0x572d, 0x03b0,
-  0x572e, 0x17d1,
-  0x572f, 0x03b2,
-  0x5730, 0x03ae,
-  0x5732, 0x3af9,
-  0x5733, 0x03ad,
-  0x5734, 0x17d3,
-  0x573b, 0x046e,
-  0x573e, 0x046b,
-  0x573f, 0x4855,
-  0x5740, 0x0467,
-  0x5741, 0x1851,
-  0x5742, 0x40cc,
-  0x5743, 0x40de,
-  0x5745, 0x1852,
-  0x5746, 0x40c8,
-  0x5747, 0x0469,
-  0x5749, 0x1854,
-  0x574a, 0x0465,
-  0x574b, 0x1855,
-  0x574c, 0x1853,
-  0x574d, 0x0468,
-  0x574e, 0x046a,
-  0x574f, 0x046d,
-  0x5750, 0x046c,
-  0x5751, 0x0466,
-  0x5752, 0x1856,
-  0x5754, 0x4785,
-  0x5757, 0x47e6,
-  0x575b, 0x3982,
-  0x575f, 0x3fbf,
-  0x5761, 0x057d,
-  0x5762, 0x1941,
-  0x5764, 0x057f,
-  0x5766, 0x057e,
-  0x5767, 0x3f2b,
-  0x5768, 0x1942,
-  0x5769, 0x057c,
-  0x576a, 0x057b,
-  0x576b, 0x1938,
-  0x576d, 0x1937,
-  0x576f, 0x1935,
-  0x5770, 0x193a,
-  0x5771, 0x1939,
-  0x5772, 0x1936,
-  0x5773, 0x193f,
-  0x5775, 0x193d,
-  0x5776, 0x193b,
-  0x5777, 0x057a,
-  0x577a, 0x3f5f,
-  0x577b, 0x193e,
-  0x577c, 0x0580,
-  0x577d, 0x1943,
-  0x577e, 0x46dc,
-  0x577f, 0x3a07,
-  0x5780, 0x193c,
-  0x5782, 0x06e7,
-  0x5783, 0x0579,
-  0x5788, 0x484b,
-  0x578a, 0x3c7b,
-  0x578b, 0x06e8,
-  0x578c, 0x1a90,
-  0x578d, 0x3a06,
-  0x578f, 0x1a96,
-  0x5790, 0x4166,
-  0x5793, 0x06ee,
-  0x5794, 0x1a94,
-  0x5795, 0x1a9a,
-  0x5797, 0x1a91,
-  0x5798, 0x1a95,
-  0x5799, 0x1a97,
-  0x579a, 0x1a99,
-  0x579b, 0x1a93,
-  0x579c, 0x4608,
-  0x579d, 0x1a92,
-  0x579e, 0x1a8d,
-  0x57a0, 0x06e9,
-  0x57a1, 0x4864,
-  0x57a2, 0x06eb,
-  0x57a3, 0x06ea,
-  0x57a4, 0x1a8f,
-  0x57a5, 0x1a98,
-  0x57a7, 0x4914,
-  0x57aa, 0x4905,
-  0x57ae, 0x06ed,
-  0x57b4, 0x4741,
-  0x57b5, 0x1a8c,
-  0x57b6, 0x1c66,
-  0x57b8, 0x1c65,
-  0x57b9, 0x1c6a,
-  0x57ba, 0x1c61,
-  0x57bb, 0x3c79,
-  0x57bc, 0x1c64,
-  0x57bd, 0x1c63,
-  0x57be, 0x372c,
-  0x57bf, 0x1c67,
-  0x57c1, 0x1c6b,
-  0x57c2, 0x087b,
-  0x57c3, 0x087e,
-  0x57c4, 0x3b5b,
-  0x57c6, 0x1c62,
-  0x57c7, 0x1c68,
-  0x57c8, 0x3d0b,
-  0x57cb, 0x087d,
-  0x57cc, 0x1c5d,
-  0x57ce, 0x06ec,
-  0x57cf, 0x1e82,
-  0x57d0, 0x1c69,
-  0x57d2, 0x1c60,
-  0x57d4, 0x087c,
-  0x57d5, 0x1c5f,
-  0x57d7, 0x3c7d,
-  0x57dc, 0x1e79,
-  0x57dd, 0x3a05,
-  0x57de, 0x3f01,
-  0x57df, 0x0a39,
-  0x57e0, 0x0a3d,
-  0x57e1, 0x1e89,
-  0x57e2, 0x1e77,
-  0x57e3, 0x1e85,
-  0x57e4, 0x0a3e,
-  0x57e5, 0x1e87,
-  0x57e6, 0x40cf,
-  0x57e7, 0x1e8d,
-  0x57e9, 0x1e91,
-  0x57ec, 0x1e88,
-  0x57ed, 0x1e7c,
-  0x57ee, 0x1e84,
-  0x57ef, 0x4754,
-  0x57f0, 0x1e92,
-  0x57f1, 0x1e90,
-  0x57f2, 0x1e86,
-  0x57f3, 0x1e81,
-  0x57f4, 0x1e7a,
-  0x57f5, 0x20e1,
-  0x57f6, 0x1e78,
-  0x57f7, 0x0a42,
-  0x57f8, 0x1e7f,
-  0x57f9, 0x0a43,
-  0x57fa, 0x0a3f,
-  0x57fb, 0x1e75,
-  0x57fc, 0x1e8b,
-  0x57fd, 0x1e7d,
-  0x57fe, 0x408f,
-  0x5800, 0x1e7b,
-  0x5801, 0x1e8e,
-  0x5802, 0x0a40,
-  0x5803, 0x40d1,
-  0x5804, 0x1e94,
-  0x5805, 0x0a3a,
-  0x5806, 0x0a3c,
-  0x5807, 0x1e83,
-  0x5808, 0x1e7e,
-  0x5809, 0x087f,
-  0x580a, 0x0a3b,
-  0x580b, 0x1e80,
-  0x580c, 0x1e8f,
-  0x580d, 0x1e93,
-  0x580e, 0x1e8a,
-  0x5810, 0x1e8c,
-  0x5812, 0x3d0a,
-  0x5814, 0x1e76,
-  0x5819, 0x20dc,
-  0x581b, 0x20e5,
-  0x581c, 0x20e4,
-  0x581d, 0x0c1e,
-  0x581e, 0x20dd,
-  0x5820, 0x0c1f,
-  0x5821, 0x0c1d,
-  0x5822, 0x3c28,
-  0x5823, 0x20df,
-  0x5824, 0x0c1a,
-  0x5825, 0x20e3,
-  0x5826, 0x40d4,
-  0x5827, 0x20de,
-  0x5828, 0x20e0,
-  0x5829, 0x20da,
-  0x582a, 0x0c18,
-  0x582c, 0x20ed,
-  0x582d, 0x20ec,
-  0x582e, 0x20e9,
-  0x582f, 0x0c17,
-  0x5830, 0x0c1b,
-  0x5832, 0x1c5e,
-  0x5833, 0x20e6,
-  0x5834, 0x0c19,
-  0x5835, 0x0a41,
-  0x5836, 0x20e8,
-  0x5837, 0x20db,
-  0x5838, 0x20eb,
-  0x5839, 0x20ea,
-  0x583a, 0x3d72,
-  0x583b, 0x20ee,
-  0x583d, 0x239f,
-  0x583f, 0x20e7,
-  0x5840, 0x3d82,
-  0x5844, 0x47bb,
-  0x5847, 0x3ac2,
-  0x5848, 0x20e2,
-  0x5849, 0x2397,
-  0x584a, 0x0def,
-  0x584b, 0x0df2,
-  0x584c, 0x0ded,
-  0x584d, 0x2396,
-  0x584e, 0x239a,
-  0x584f, 0x2395,
-  0x5851, 0x0de7,
-  0x5852, 0x0df1,
-  0x5853, 0x2392,
-  0x5854, 0x0deb,
-  0x5855, 0x2399,
-  0x5857, 0x0de9,
-  0x5858, 0x0de8,
-  0x5859, 0x239c,
-  0x585a, 0x0dea,
-  0x585b, 0x239e,
-  0x585c, 0x4949,
-  0x585d, 0x239b,
-  0x585e, 0x0de6,
-  0x585f, 0x43df,
-  0x5862, 0x0df0,
-  0x5863, 0x23a0,
-  0x5864, 0x2394,
-  0x5865, 0x239d,
-  0x5868, 0x2393,
-  0x5869, 0x3d65,
-  0x586b, 0x0dec,
-  0x586c, 0x399a,
-  0x586d, 0x0dee,
-  0x586f, 0x2398,
-  0x5871, 0x23a1,
-  0x5872, 0x3c26,
-  0x5873, 0x4355,
-  0x5874, 0x263f,
-  0x5875, 0x0fa2,
-  0x5876, 0x2645,
-  0x5879, 0x0fa7,
-  0x587a, 0x2641,
-  0x587b, 0x2648,
-  0x587c, 0x2639,
-  0x587d, 0x0fa9,
-  0x587e, 0x0fa3,
-  0x587f, 0x263e,
-  0x5880, 0x1121,
-  0x5881, 0x263d,
-  0x5882, 0x2646,
-  0x5883, 0x0fa4,
-  0x5885, 0x0fa8,
-  0x5886, 0x263c,
-  0x5887, 0x2642,
-  0x5888, 0x2647,
-  0x5889, 0x2638,
-  0x588a, 0x0fa6,
-  0x588b, 0x2640,
-  0x588e, 0x2644,
-  0x588f, 0x264a,
-  0x5890, 0x263a,
-  0x5891, 0x2643,
-  0x5893, 0x0fa5,
-  0x5894, 0x2649,
-  0x5898, 0x263b,
-  0x5899, 0x4618,
-  0x589a, 0x4903,
-  0x589c, 0x1125,
-  0x589d, 0x28a1,
-  0x589e, 0x1123,
-  0x589f, 0x1122,
-  0x58a0, 0x28a3,
-  0x58a1, 0x28a8,
-  0x58a3, 0x28a4,
-  0x58a5, 0x28a7,
-  0x58a6, 0x1128,
-  0x58a7, 0x3eeb,
-  0x58a8, 0x1288,
-  0x58a9, 0x1127,
-  0x58aa, 0x40d7,
-  0x58ab, 0x28a0,
-  0x58ac, 0x28a6,
-  0x58ae, 0x1126,
-  0x58af, 0x28a5,
-  0x58b0, 0x37a4,
-  0x58b1, 0x28a2,
-  0x58b3, 0x1124,
-  0x58b5, 0x4840,
-  0x58b6, 0x3dfd,
-  0x58ba, 0x2b18,
-  0x58bb, 0x36eb,
-  0x58bc, 0x2b1a,
-  0x58bd, 0x2b15,
-  0x58be, 0x12a4,
-  0x58bf, 0x2b17,
-  0x58c1, 0x12a3,
-  0x58c2, 0x2b19,
-  0x58c5, 0x12a6,
-  0x58c6, 0x2b1b,
-  0x58c7, 0x12a5,
-  0x58c8, 0x2b14,
-  0x58c9, 0x2b16,
-  0x58cb, 0x3a09,
-  0x58ce, 0x13c2,
-  0x58cf, 0x2d4d,
-  0x58d1, 0x13c1,
-  0x58d2, 0x2d4e,
-  0x58d3, 0x13c0,
-  0x58d4, 0x2d4c,
-  0x58d5, 0x13bf,
-  0x58d6, 0x2d4b,
-  0x58d8, 0x14cd,
-  0x58d9, 0x14cc,
-  0x58da, 0x3085,
-  0x58db, 0x3087,
-  0x58dc, 0x40da,
-  0x58dd, 0x3086,
-  0x58de, 0x1578,
-  0x58e0, 0x40d9,
-  0x58e2, 0x157a,
-  0x58e3, 0x31cb,
-  0x58e4, 0x160e,
-  0x58e7, 0x3411,
-  0x58e8, 0x3410,
-  0x58e9, 0x1720,
-  0x58eb, 0x027b,
-  0x58ec, 0x02c1,
-  0x58ef, 0x046f,
-  0x58f0, 0x4549,
-  0x58f2, 0x3d68,
-  0x58f3, 0x3c7a,
-  0x58f4, 0x1a9b,
-  0x58f9, 0x0c20,
-  0x58fb, 0x40dc,
-  0x58fc, 0x23a2,
-  0x58fd, 0x0faa,
-  0x58fe, 0x264b,
-  0x58ff, 0x28a9,
-  0x5902, 0x0224,
-  0x5903, 0x1785,
-  0x5904, 0x454a,
-  0x5905, 0x4599,
-  0x5906, 0x1857,
-  0x5907, 0x454b,
-  0x590a, 0x0224,
-  0x590c, 0x1944,
-  0x590d, 0x1a9c,
-  0x590e, 0x1c6c,
-  0x590f, 0x0880,
-  0x5911, 0x4274,
-  0x5912, 0x3088,
-  0x5914, 0x166d,
-  0x5915, 0x027c,
-  0x5916, 0x032e,
-  0x5917, 0x179c,
-  0x5919, 0x03b4,
-  0x591c, 0x0581,
-  0x591f, 0x40e3,
-  0x5920, 0x0a44,
-  0x5922, 0x0fac,
-  0x5924, 0x0fad,
-  0x5925, 0x0fab,
-  0x5927, 0x027d,
-  0x5929, 0x02c2,
-  0x592a, 0x02c4,
-  0x592b, 0x02c3,
-  0x592c, 0x1786,
-  0x592d, 0x02c5,
-  0x592e, 0x032f,
-  0x592f, 0x179d,
-  0x5931, 0x0330,
-  0x5932, 0x454c,
-  0x5934, 0x454d,
-  0x5937, 0x03b6,
-  0x593c, 0x17d4,
-  0x593e, 0x0470,
-  0x5940, 0x1858,
-  0x5944, 0x0585,
-  0x5945, 0x1945,
-  0x5947, 0x0583,
-  0x5949, 0x0582,
-  0x594a, 0x1c6d,
-  0x594e, 0x06f2,
-  0x594f, 0x06f1,
-  0x5950, 0x06f3,
-  0x5951, 0x06f0,
-  0x5953, 0x1a9d,
-  0x5954, 0x0586,
-  0x5955, 0x06ef,
-  0x5957, 0x0881,
-  0x595a, 0x0883,
-  0x595c, 0x1e95,
-  0x5960, 0x0c22,
-  0x5961, 0x20ef,
-  0x5962, 0x0a45,
-  0x5965, 0x4852,
-  0x5967, 0x0df3,
-  0x5969, 0x0faf,
-  0x596a, 0x0fae,
-  0x596b, 0x264c,
-  0x596d, 0x1129,
-  0x596e, 0x12a7,
-  0x5970, 0x2f17,
-  0x5971, 0x337b,
-  0x5972, 0x3412,
-  0x5973, 0x027e,
-  0x5974, 0x0331,
-  0x5975, 0x3e6a,
-  0x5976, 0x0332,
-  0x5977, 0x17da,
-  0x5978, 0x03b9,
-  0x5979, 0x03bc,
-  0x597b, 0x17d8,
-  0x597c, 0x17d6,
-  0x597d, 0x03bb,
-  0x597e, 0x17d9,
-  0x597f, 0x17db,
-  0x5980, 0x17d5,
-  0x5981, 0x03be,
-  0x5982, 0x03bd,
-  0x5983, 0x03ba,
-  0x5984, 0x03b8,
-  0x5985, 0x17d7,
-  0x5989, 0x3d30,
-  0x598a, 0x047b,
-  0x598d, 0x0478,
-  0x598e, 0x185d,
-  0x598f, 0x1860,
-  0x5990, 0x185f,
-  0x5992, 0x0472,
-  0x5993, 0x047a,
-  0x5994, 0x3c99,
-  0x5996, 0x0477,
-  0x5997, 0x185c,
-  0x5998, 0x185a,
-  0x5999, 0x0476,
-  0x599a, 0x3bb0,
-  0x599d, 0x0471,
-  0x599e, 0x0474,
-  0x599f, 0x3daf,
-  0x59a0, 0x185b,
-  0x59a1, 0x1862,
-  0x59a2, 0x185e,
-  0x59a3, 0x0475,
-  0x59a4, 0x0479,
-  0x59a5, 0x047c,
-  0x59a6, 0x1859,
-  0x59a7, 0x1861,
-  0x59a8, 0x0473,
-  0x59ac, 0x3d81,
-  0x59ae, 0x058b,
-  0x59af, 0x0593,
-  0x59b0, 0x3cd8,
-  0x59b1, 0x1951,
-  0x59b2, 0x194a,
-  0x59b3, 0x0594,
-  0x59b4, 0x1955,
-  0x59b5, 0x1946,
-  0x59b6, 0x194d,
-  0x59b7, 0x3f2d,
-  0x59b8, 0x3a10,
-  0x59b9, 0x058a,
-  0x59ba, 0x1947,
-  0x59bb, 0x0588,
-  0x59bc, 0x194e,
-  0x59bd, 0x1952,
-  0x59be, 0x0587,
-  0x59c0, 0x1953,
-  0x59c1, 0x194c,
-  0x59c3, 0x194f,
-  0x59c4, 0x3d04,
-  0x59c5, 0x0596,
-  0x59c6, 0x058d,
-  0x59c7, 0x1956,
-  0x59c8, 0x1954,
-  0x59c9, 0x40ec,
-  0x59ca, 0x0592,
-  0x59cb, 0x0590,
-  0x59cc, 0x194b,
-  0x59cd, 0x058f,
-  0x59ce, 0x1949,
-  0x59cf, 0x1948,
-  0x59d0, 0x058e,
-  0x59d1, 0x058c,
-  0x59d2, 0x0595,
-  0x59d3, 0x0591,
-  0x59d4, 0x0589,
-  0x59d6, 0x1950,
-  0x59d8, 0x06f5,
-  0x59d9, 0x40f1,
-  0x59da, 0x06fc,
-  0x59db, 0x1aab,
-  0x59dc, 0x06f4,
-  0x59dd, 0x1aa3,
-  0x59de, 0x1a9f,
-  0x59e0, 0x1aaf,
-  0x59e1, 0x1a9e,
-  0x59e3, 0x06f7,
-  0x59e4, 0x1aa8,
-  0x59e5, 0x06fa,
-  0x59e6, 0x06fd,
-  0x59e8, 0x06f8,
-  0x59e9, 0x1aac,
-  0x59ea, 0x06fb,
-  0x59eb, 0x3d59,
-  0x59ec, 0x088a,
-  0x59ed, 0x1ab2,
-  0x59ee, 0x1aa0,
-  0x59ef, 0x3d38,
-  0x59f0, 0x3bb2,
-  0x59f1, 0x1aa2,
-  0x59f2, 0x1aa9,
-  0x59f3, 0x1aad,
-  0x59f4, 0x1ab1,
-  0x59f5, 0x1aae,
-  0x59f6, 0x1aa7,
-  0x59f7, 0x1aaa,
-  0x59f8, 0x3e4a,
-  0x59f9, 0x40f8,
-  0x59fa, 0x1aa4,
-  0x59fb, 0x06ff,
-  0x59fc, 0x1aa6,
-  0x59fd, 0x1aa5,
-  0x59fe, 0x1ab0,
-  0x59ff, 0x06f6,
-  0x5a00, 0x1aa1,
-  0x5a01, 0x06fe,
-  0x5a02, 0x3b8d,
-  0x5a03, 0x06f9,
-  0x5a09, 0x0890,
-  0x5a0a, 0x1c75,
-  0x5a0b, 0x3c89,
-  0x5a0c, 0x088f,
-  0x5a0d, 0x3b38,
-  0x5a0f, 0x1c73,
-  0x5a11, 0x0884,
-  0x5a12, 0x3a13,
-  0x5a13, 0x0889,
-  0x5a15, 0x1c72,
-  0x5a16, 0x1c6f,
-  0x5a17, 0x1c74,
-  0x5a18, 0x0885,
-  0x5a19, 0x1c6e,
-  0x5a1b, 0x0888,
-  0x5a1c, 0x0886,
-  0x5a1e, 0x1c76,
-  0x5a1f, 0x0887,
-  0x5a20, 0x088b,
-  0x5a21, 0x3a1b,
-  0x5a23, 0x088c,
-  0x5a24, 0x40e8,
-  0x5a25, 0x088e,
-  0x5a27, 0x3de1,
-  0x5a29, 0x088d,
-  0x5a2a, 0x3b3b,
-  0x5a2b, 0x3d40,
-  0x5a2c, 0x3a0f,
-  0x5a2d, 0x1c70,
-  0x5a33, 0x1c77,
-  0x5a35, 0x1e9c,
-  0x5a36, 0x0a46,
-  0x5a37, 0x20fd,
-  0x5a38, 0x1e9b,
-  0x5a39, 0x1eae,
-  0x5a3c, 0x0a4c,
-  0x5a3d, 0x3ac0,
-  0x5a3e, 0x1eac,
-  0x5a40, 0x0a4b,
-  0x5a41, 0x0a47,
-  0x5a42, 0x1eb5,
-  0x5a43, 0x1ea5,
-  0x5a44, 0x1ea8,
-  0x5a45, 0x3917,
-  0x5a46, 0x0a4f,
-  0x5a47, 0x1eb2,
-  0x5a48, 0x1eaa,
-  0x5a49, 0x0a48,
-  0x5a4a, 0x0a50,
-  0x5a4c, 0x1eaf,
-  0x5a4d, 0x1ead,
-  0x5a50, 0x1e9e,
-  0x5a51, 0x1eb3,
-  0x5a52, 0x1ea7,
-  0x5a53, 0x1ea2,
-  0x5a54, 0x4603,
-  0x5a55, 0x1e98,
-  0x5a56, 0x1eb4,
-  0x5a57, 0x1ea4,
-  0x5a58, 0x1e97,
-  0x5a59, 0x3b34,
-  0x5a5a, 0x0a4e,
-  0x5a5b, 0x1ea9,
-  0x5a5c, 0x1eb6,
-  0x5a5d, 0x1ea6,
-  0x5a5e, 0x1e9a,
-  0x5a5f, 0x1e9f,
-  0x5a60, 0x1e96,
-  0x5a61, 0x3d33,
-  0x5a62, 0x0a4d,
-  0x5a63, 0x40fb,
-  0x5a64, 0x1ea3,
-  0x5a65, 0x1ea0,
-  0x5a66, 0x0a49,
-  0x5a67, 0x1e99,
-  0x5a68, 0x39b7,
-  0x5a69, 0x1eb1,
-  0x5a6a, 0x0a4a,
-  0x5a6b, 0x3a42,
-  0x5a6c, 0x1ea1,
-  0x5a6d, 0x1e9d,
-  0x5a6e, 0x3d3f,
-  0x5a70, 0x1eb0,
-  0x5a71, 0x3d34,
-  0x5a77, 0x0c23,
-  0x5a78, 0x20f6,
-  0x5a79, 0x3ce1,
-  0x5a7a, 0x20f3,
-  0x5a7b, 0x2104,
-  0x5a7c, 0x20f8,
-  0x5a7d, 0x2105,
-  0x5a7e, 0x3a11,
-  0x5a7f, 0x0c25,
-  0x5a81, 0x3a1d,
-  0x5a82, 0x3d31,
-  0x5a83, 0x2101,
-  0x5a84, 0x20fe,
-  0x5a86, 0x3b81,
-  0x5a88, 0x4263,
-  0x5a8a, 0x20ff,
-  0x5a8b, 0x2102,
-  0x5a8c, 0x2106,
-  0x5a8e, 0x1eab,
-  0x5a8f, 0x2108,
-  0x5a90, 0x23b6,
-  0x5a91, 0x4235,
-  0x5a92, 0x0c26,
-  0x5a93, 0x2109,
-  0x5a94, 0x20f1,
-  0x5a95, 0x20fb,
-  0x5a96, 0x4100,
-  0x5a97, 0x2100,
-  0x5a99, 0x3a0a,
-  0x5a9a, 0x0c24,
-  0x5a9b, 0x0c27,
-  0x5a9c, 0x2107,
-  0x5a9d, 0x210a,
-  0x5a9e, 0x20f5,
-  0x5a9f, 0x20f2,
-  0x5aa0, 0x4172,
-  0x5aa1, 0x3cdc,
-  0x5aa2, 0x20f4,
-  0x5aa5, 0x20f9,
-  0x5aa6, 0x20f7,
-  0x5aa7, 0x0c28,
-  0x5aa9, 0x2103,
-  0x5aab, 0x40fa,
-  0x5aac, 0x20fa,
-  0x5aae, 0x20fc,
-  0x5aaf, 0x20f0,
-  0x5ab0, 0x23aa,
-  0x5ab1, 0x23a8,
-  0x5ab2, 0x0dfc,
-  0x5ab3, 0x0dfa,
-  0x5ab4, 0x23b2,
-  0x5ab5, 0x23a9,
-  0x5ab6, 0x23b3,
-  0x5ab7, 0x23af,
-  0x5ab8, 0x23a7,
-  0x5ab9, 0x23b5,
-  0x5aba, 0x23a6,
-  0x5abb, 0x23ad,
-  0x5abc, 0x0df9,
-  0x5abd, 0x0df8,
-  0x5abe, 0x0df7,
-  0x5abf, 0x23ab,
-  0x5ac0, 0x23b0,
-  0x5ac1, 0x0df4,
-  0x5ac2, 0x0dfb,
-  0x5ac3, 0x3896,
-  0x5ac4, 0x23a4,
-  0x5ac6, 0x23ae,
-  0x5ac7, 0x23a3,
-  0x5ac8, 0x23ac,
-  0x5ac9, 0x0df5,
-  0x5aca, 0x23b1,
-  0x5acb, 0x23a5,
-  0x5acc, 0x0df6,
-  0x5acd, 0x23b4,
-  0x5ace, 0x3c88,
-  0x5acf, 0x43b5,
-  0x5ad3, 0x4102,
-  0x5ad5, 0x2650,
-  0x5ad6, 0x0fb4,
-  0x5ad7, 0x0fb3,
-  0x5ad8, 0x0fb5,
-  0x5ad9, 0x265c,
-  0x5ada, 0x2652,
-  0x5adb, 0x2658,
-  0x5adc, 0x264d,
-  0x5add, 0x265b,
-  0x5ade, 0x265a,
-  0x5adf, 0x265e,
-  0x5ae0, 0x2657,
-  0x5ae1, 0x0fb0,
-  0x5ae2, 0x2656,
-  0x5ae3, 0x0fb6,
-  0x5ae4, 0x3b86,
-  0x5ae5, 0x264f,
-  0x5ae6, 0x0fb1,
-  0x5ae8, 0x265d,
-  0x5ae9, 0x0fb2,
-  0x5aea, 0x2651,
-  0x5aeb, 0x2654,
-  0x5aec, 0x2659,
-  0x5aed, 0x2653,
-  0x5aee, 0x264e,
-  0x5af0, 0x3ee7,
-  0x5af2, 0x37f5,
-  0x5af3, 0x2655,
-  0x5af4, 0x28ab,
-  0x5af5, 0x112d,
-  0x5af6, 0x28ae,
-  0x5af7, 0x28ad,
-  0x5af8, 0x28b0,
-  0x5af9, 0x28b2,
-  0x5afa, 0x36ee,
-  0x5afb, 0x112b,
-  0x5afd, 0x28ac,
-  0x5afe, 0x3c1d,
-  0x5aff, 0x28aa,
-  0x5b01, 0x28b3,
-  0x5b02, 0x28b1,
-  0x5b03, 0x28af,
-  0x5b05, 0x28b5,
-  0x5b07, 0x28b4,
-  0x5b08, 0x112f,
-  0x5b09, 0x112a,
-  0x5b0b, 0x112c,
-  0x5b0c, 0x112e,
-  0x5b0d, 0x48ff,
-  0x5b0f, 0x28b6,
-  0x5b10, 0x2b22,
-  0x5b11, 0x3bf6,
-  0x5b13, 0x2b21,
-  0x5b14, 0x2b20,
-  0x5b16, 0x2b23,
-  0x5b17, 0x2b1c,
-  0x5b19, 0x2b1d,
-  0x5b1a, 0x2b25,
-  0x5b1b, 0x2b1e,
-  0x5b1d, 0x12a8,
-  0x5b1e, 0x2b27,
-  0x5b1f, 0x4941,
-  0x5b20, 0x2b26,
-  0x5b21, 0x2b1f,
-  0x5b23, 0x2d52,
-  0x5b24, 0x13c5,
-  0x5b25, 0x2d50,
-  0x5b26, 0x2d55,
-  0x5b27, 0x2d54,
-  0x5b28, 0x2b24,
-  0x5b2a, 0x13c4,
-  0x5b2b, 0x3b84,
-  0x5b2c, 0x2d53,
-  0x5b2d, 0x2d4f,
-  0x5b2e, 0x2d57,
-  0x5b2f, 0x2d56,
-  0x5b30, 0x13c3,
-  0x5b32, 0x2d51,
-  0x5b34, 0x12a9,
-  0x5b38, 0x14ce,
-  0x5b3c, 0x2f18,
-  0x5b3d, 0x3089,
-  0x5b40, 0x160f,
-  0x5b41, 0x38c8,
-  0x5b43, 0x1610,
-  0x5b44, 0x3a44,
-  0x5b45, 0x31cc,
-  0x5b46, 0x42b2,
-  0x5b47, 0x32cd,
-  0x5b48, 0x32cc,
-  0x5b4a, 0x38cd,
-  0x5b4b, 0x337c,
-  0x5b4d, 0x3413,
-  0x5b4e, 0x3482,
-  0x5b4f, 0x3a31,
-  0x5b50, 0x027f,
-  0x5b53, 0x0281,
-  0x5b54, 0x02c6,
-  0x5b55, 0x0333,
-  0x5b56, 0x17dc,
-  0x5b57, 0x03bf,
-  0x5b5a, 0x047f,
-  0x5b5c, 0x047e,
-  0x5b5d, 0x047d,
-  0x5b5f, 0x0597,
-  0x5b62, 0x1957,
-  0x5b63, 0x0599,
-  0x5b64, 0x0598,
-  0x5b65, 0x1958,
-  0x5b66, 0x454e,
-  0x5b68, 0x461d,
-  0x5b69, 0x0700,
-  0x5b6b, 0x0891,
-  0x5b6c, 0x1c78,
-  0x5b6d, 0x3e5f,
-  0x5b6e, 0x1eb8,
-  0x5b70, 0x0a51,
-  0x5b71, 0x0c2a,
-  0x5b72, 0x1eb7,
-  0x5b73, 0x0c29,
-  0x5b74, 0x3732,
-  0x5b75, 0x0fb7,
-  0x5b76, 0x410a,
-  0x5b77, 0x265f,
-  0x5b78, 0x12aa,
-  0x5b7a, 0x13c6,
-  0x5b7b, 0x2d58,
-  0x5b7c, 0x410c,
-  0x5b7d, 0x1611,
-  0x5b7f, 0x16c0,
-  0x5b80, 0x0225,
-  0x5b81, 0x179e,
-  0x5b82, 0x4044,
-  0x5b83, 0x0334,
-  0x5b84, 0x179f,
-  0x5b85, 0x03c3,
-  0x5b87, 0x03c1,
-  0x5b89, 0x03c4,
-  0x5b8b, 0x0482,
-  0x5b8c, 0x0481,
-  0x5b8e, 0x1863,
-  0x5b8f, 0x0483,
-  0x5b90, 0x48e9,
-  0x5b92, 0x1864,
-  0x5b93, 0x1959,
-  0x5b95, 0x195a,
-  0x5b97, 0x059a,
-  0x5b98, 0x059c,
-  0x5b99, 0x059e,
-  0x5b9a, 0x059b,
-  0x5b9b, 0x059f,
-  0x5b9c, 0x059d,
-  0x5b9d, 0x4116,
-  0x5b9e, 0x454f,
-  0x5ba2, 0x0704,
-  0x5ba3, 0x0701,
-  0x5ba4, 0x0703,
-  0x5ba5, 0x0705,
-  0x5ba6, 0x0702,
-  0x5ba7, 0x1c79,
-  0x5ba8, 0x1ab3,
-  0x5baa, 0x417b,
-  0x5bac, 0x1c7b,
-  0x5bad, 0x1c7a,
-  0x5bae, 0x0897,
-  0x5bb0, 0x0893,
-  0x5bb3, 0x0894,
-  0x5bb4, 0x0896,
-  0x5bb5, 0x0898,
-  0x5bb6, 0x0895,
-  0x5bb8, 0x089a,
-  0x5bb9, 0x0899,
-  0x5bbf, 0x0a56,
-  0x5bc0, 0x1eba,
-  0x5bc1, 0x1eb9,
-  0x5bc2, 0x0a55,
-  0x5bc3, 0x3f25,
-  0x5bc4, 0x0a54,
-  0x5bc5, 0x0a53,
-  0x5bc6, 0x0a57,
-  0x5bc7, 0x0a52,
-  0x5bca, 0x2110,
-  0x5bcb, 0x210d,
-  0x5bcc, 0x0c2c,
-  0x5bcd, 0x210c,
-  0x5bce, 0x2111,
-  0x5bd0, 0x0c2e,
-  0x5bd1, 0x210f,
-  0x5bd2, 0x0c2b,
-  0x5bd3, 0x0c2d,
-  0x5bd4, 0x210e,
-  0x5bd5, 0x4111,
-  0x5bd6, 0x23b7,
-  0x5bd7, 0x42bb,
-  0x5bd8, 0x23b8,
-  0x5bde, 0x0fb8,
-  0x5bdf, 0x0fc0,
-  0x5be0, 0x2660,
-  0x5be1, 0x0fba,
-  0x5be2, 0x0fbe,
-  0x5be3, 0x2661,
-  0x5be4, 0x0fbf,
-  0x5be5, 0x0fbb,
-  0x5be7, 0x0fb9,
-  0x5be8, 0x0fbd,
-  0x5be9, 0x1132,
-  0x5bea, 0x210b,
-  0x5beb, 0x1133,
-  0x5bec, 0x1131,
-  0x5bee, 0x1130,
-  0x5bef, 0x2b28,
-  0x5bf0, 0x12ab,
-  0x5bf1, 0x2d59,
-  0x5bf3, 0x4115,
-  0x5bf5, 0x157b,
-  0x5bf6, 0x1612,
-  0x5bf8, 0x0282,
-  0x5bfa, 0x03c5,
-  0x5bff, 0x40dd,
-  0x5c01, 0x0706,
-  0x5c03, 0x1c7c,
-  0x5c04, 0x089b,
-  0x5c05, 0x4118,
-  0x5c07, 0x0a5a,
-  0x5c08, 0x0a59,
-  0x5c09, 0x0a58,
-  0x5c0a, 0x0c2f,
-  0x5c0c, 0x2112,
-  0x5c0d, 0x0fc1,
-  0x5c0e, 0x12ac,
-  0x5c0f, 0x0283,
-  0x5c10, 0x1787,
-  0x5c11, 0x02c7,
-  0x5c12, 0x17a0,
-  0x5c13, 0x411a,
-  0x5c14, 0x411c,
-  0x5c15, 0x17dd,
-  0x5c16, 0x03c6,
-  0x5c1a, 0x05a0,
-  0x5c1c, 0x45ea,
-  0x5c1e, 0x3a29,
-  0x5c1f, 0x23ba,
-  0x5c20, 0x3d89,
-  0x5c22, 0x0284,
-  0x5c23, 0x44e8,
-  0x5c24, 0x02c8,
-  0x5c25, 0x17de,
-  0x5c28, 0x1865,
-  0x5c2a, 0x1866,
-  0x5c2c, 0x0484,
-  0x5c30, 0x2113,
-  0x5c31, 0x0c31,
-  0x5c33, 0x23bb,
-  0x5c37, 0x13c7,
-  0x5c38, 0x0285,
-  0x5c39, 0x0299,
-  0x5c3a, 0x02c9,
-  0x5c3b, 0x17a1,
-  0x5c3c, 0x0335,
-  0x5c3e, 0x0488,
-  0x5c3f, 0x0487,
-  0x5c40, 0x0485,
-  0x5c44, 0x195b,
-  0x5c45, 0x05a2,
-  0x5c47, 0x195c,
-  0x5c48, 0x05a1,
-  0x5c49, 0x411f,
-  0x5c4a, 0x3f5c,
-  0x5c4b, 0x070a,
-  0x5c4c, 0x1ab4,
-  0x5c4d, 0x0709,
-  0x5c4e, 0x0707,
-  0x5c50, 0x089e,
-  0x5c51, 0x089c,
-  0x5c53, 0x3f02,
-  0x5c54, 0x1c7e,
-  0x5c55, 0x089d,
-  0x5c56, 0x1c7d,
-  0x5c58, 0x0892,
-  0x5c59, 0x1ebb,
-  0x5c5c, 0x0a5c,
-  0x5c5e, 0x3d67,
-  0x5c60, 0x0a5b,
-  0x5c62, 0x0fc2,
-  0x5c63, 0x2662,
-  0x5c64, 0x1134,
-  0x5c67, 0x28b7,
-  0x5c68, 0x13c8,
-  0x5c69, 0x2f19,
-  0x5c6c, 0x166e,
-  0x5c6d, 0x3483,
-  0x5c6e, 0x1776,
-  0x5c6f, 0x02ca,
-  0x5c71, 0x0286,
-  0x5c73, 0x17a3,
-  0x5c74, 0x17a2,
-  0x5c79, 0x03c7,
-  0x5c7a, 0x17e0,
-  0x5c7c, 0x17df,
-  0x5c7e, 0x17e2,
-  0x5c85, 0x4121,
-  0x5c86, 0x186e,
-  0x5c88, 0x1869,
-  0x5c89, 0x186b,
-  0x5c8a, 0x186d,
-  0x5c8b, 0x186a,
-  0x5c8c, 0x048c,
-  0x5c8d, 0x1867,
-  0x5c8f, 0x1868,
-  0x5c90, 0x0489,
-  0x5c92, 0x186c,
-  0x5c93, 0x186f,
-  0x5c94, 0x048b,
-  0x5c95, 0x1870,
-  0x5c99, 0x468c,
-  0x5c9a, 0x4551,
-  0x5c9c, 0x495a,
-  0x5c9d, 0x196a,
-  0x5c9e, 0x3a2a,
-  0x5c9f, 0x1964,
-  0x5ca0, 0x195f,
-  0x5ca1, 0x05a5,
-  0x5ca2, 0x1967,
-  0x5ca3, 0x1965,
-  0x5ca4, 0x195e,
-  0x5ca5, 0x196b,
-  0x5ca6, 0x196e,
-  0x5ca7, 0x1969,
-  0x5ca8, 0x1962,
-  0x5ca9, 0x05a7,
-  0x5caa, 0x1968,
-  0x5cab, 0x05a8,
-  0x5cac, 0x1963,
-  0x5cad, 0x1966,
-  0x5cae, 0x195d,
-  0x5caf, 0x1961,
-  0x5cb0, 0x196d,
-  0x5cb1, 0x05a9,
-  0x5cb3, 0x05aa,
-  0x5cb5, 0x1960,
-  0x5cb6, 0x196c,
-  0x5cb7, 0x05a4,
-  0x5cb8, 0x05a6,
-  0x5cba, 0x412b,
-  0x5cc1, 0x43b8,
-  0x5cc2, 0x3d4c,
-  0x5cc6, 0x1ac5,
-  0x5cc7, 0x1abe,
-  0x5cc8, 0x1ac4,
-  0x5cc9, 0x1abd,
-  0x5cca, 0x1abf,
-  0x5ccb, 0x1ab9,
-  0x5ccc, 0x1ab7,
-  0x5cce, 0x1ac6,
-  0x5ccf, 0x1ac3,
-  0x5cd0, 0x1ab5,
-  0x5cd1, 0x3f13,
-  0x5cd2, 0x070c,
-  0x5cd3, 0x1ac1,
-  0x5cd6, 0x1ac0,
-  0x5cd7, 0x1ab8,
-  0x5cd8, 0x1ab6,
-  0x5cd9, 0x070b,
-  0x5cda, 0x1abc,
-  0x5cdb, 0x1aba,
-  0x5cde, 0x1abb,
-  0x5cdf, 0x1ac7,
-  0x5ce5, 0x4637,
-  0x5ce8, 0x08a3,
-  0x5ce9, 0x4122,
-  0x5cea, 0x08a2,
-  0x5cec, 0x1c7f,
-  0x5ced, 0x089f,
-  0x5cee, 0x1c81,
-  0x5cef, 0x4123,
-  0x5cf0, 0x08a4,
-  0x5cf1, 0x1c82,
-  0x5cf4, 0x08a7,
-  0x5cf6, 0x08a5,
-  0x5cf7, 0x1c83,
-  0x5cf8, 0x1ac8,
-  0x5cf9, 0x1c85,
-  0x5cfb, 0x08a1,
-  0x5cfd, 0x08a0,
-  0x5cff, 0x1c80,
-  0x5d00, 0x1c84,
-  0x5d01, 0x08a6,
-  0x5d06, 0x0a5f,
-  0x5d07, 0x0a5e,
-  0x5d0b, 0x1ebd,
-  0x5d0c, 0x1ec1,
-  0x5d0d, 0x1ec3,
-  0x5d0e, 0x0a60,
-  0x5d0f, 0x1ec6,
-  0x5d10, 0x4127,
-  0x5d11, 0x0a64,
-  0x5d12, 0x1ec8,
-  0x5d14, 0x0a66,
-  0x5d15, 0x43b9,
-  0x5d16, 0x0a62,
-  0x5d17, 0x0a6a,
-  0x5d18, 0x4128,
-  0x5d19, 0x0a67,
-  0x5d1a, 0x1ebf,
-  0x5d1b, 0x0a61,
-  0x5d1d, 0x1ebe,
-  0x5d1e, 0x1ebc,
-  0x5d1f, 0x1eca,
-  0x5d20, 0x1ec0,
-  0x5d22, 0x0a63,
-  0x5d23, 0x1ec9,
-  0x5d24, 0x0a68,
-  0x5d25, 0x1ec5,
-  0x5d26, 0x1ec4,
-  0x5d27, 0x0a69,
-  0x5d28, 0x1ec2,
-  0x5d29, 0x0a65,
-  0x5d2c, 0x3df7,
-  0x5d2e, 0x1ecb,
-  0x5d2f, 0x46d3,
-  0x5d30, 0x1ec7,
-  0x5d31, 0x2122,
-  0x5d32, 0x2129,
-  0x5d33, 0x211e,
-  0x5d34, 0x0c34,
-  0x5d35, 0x211a,
-  0x5d36, 0x212a,
-  0x5d37, 0x2114,
-  0x5d38, 0x2127,
-  0x5d39, 0x2125,
-  0x5d3a, 0x211f,
-  0x5d3c, 0x2128,
-  0x5d3d, 0x2121,
-  0x5d3e, 0x4629,
-  0x5d3f, 0x2119,
-  0x5d40, 0x212b,
-  0x5d41, 0x2117,
-  0x5d42, 0x2124,
-  0x5d43, 0x2115,
-  0x5d45, 0x212c,
-  0x5d46, 0x4129,
-  0x5d47, 0x0c35,
-  0x5d48, 0x462a,
-  0x5d49, 0x2126,
-  0x5d4a, 0x23be,
-  0x5d4b, 0x2118,
-  0x5d4c, 0x0c32,
-  0x5d4e, 0x211c,
-  0x5d50, 0x0c33,
-  0x5d51, 0x211b,
-  0x5d52, 0x2120,
-  0x5d55, 0x211d,
-  0x5d56, 0x43ba,
-  0x5d57, 0x3fca,
-  0x5d59, 0x2123,
-  0x5d5b, 0x3dd5,
-  0x5d5e, 0x23c2,
-  0x5d62, 0x23c5,
-  0x5d63, 0x23bd,
-  0x5d65, 0x23bf,
-  0x5d67, 0x23c4,
-  0x5d68, 0x23c3,
-  0x5d69, 0x0dfd,
-  0x5d6b, 0x2116,
-  0x5d6c, 0x23c1,
-  0x5d6f, 0x0dfe,
-  0x5d70, 0x46e4,
-  0x5d71, 0x23bc,
-  0x5d72, 0x23c0,
-  0x5d74, 0x3eef,
-  0x5d77, 0x2669,
-  0x5d79, 0x2670,
-  0x5d7a, 0x2667,
-  0x5d7c, 0x266e,
-  0x5d7d, 0x2665,
-  0x5d7e, 0x266d,
-  0x5d7f, 0x2671,
-  0x5d80, 0x2664,
-  0x5d81, 0x2668,
-  0x5d82, 0x2663,
-  0x5d84, 0x0fc3,
-  0x5d85, 0x3e34,
-  0x5d86, 0x2666,
-  0x5d87, 0x0fc4,
-  0x5d88, 0x266c,
-  0x5d89, 0x266b,
-  0x5d8a, 0x266a,
-  0x5d8b, 0x4124,
-  0x5d8d, 0x266f,
-  0x5d8e, 0x3f0c,
-  0x5d92, 0x28bb,
-  0x5d93, 0x28bd,
-  0x5d94, 0x1137,
-  0x5d95, 0x28be,
-  0x5d97, 0x28b9,
-  0x5d99, 0x28b8,
-  0x5d9a, 0x28c2,
-  0x5d9c, 0x28c0,
-  0x5d9d, 0x1136,
-  0x5d9e, 0x28c3,
-  0x5d9f, 0x28ba,
-  0x5da0, 0x28bf,
-  0x5da1, 0x28c1,
-  0x5da2, 0x28bc,
-  0x5da4, 0x462d,
-  0x5da7, 0x2b2c,
-  0x5da8, 0x2b31,
-  0x5da9, 0x2b2b,
-  0x5daa, 0x2b30,
-  0x5dab, 0x3e39,
-  0x5dac, 0x2b29,
-  0x5dad, 0x2b33,
-  0x5dae, 0x2b2f,
-  0x5daf, 0x2b34,
-  0x5db0, 0x2b2e,
-  0x5db1, 0x2b2a,
-  0x5db2, 0x2b32,
-  0x5db4, 0x2b35,
-  0x5db5, 0x2b2d,
-  0x5db6, 0x4158,
-  0x5db7, 0x2d5b,
-  0x5db8, 0x13cc,
-  0x5db9, 0x462e,
-  0x5dba, 0x13ca,
-  0x5dbc, 0x13c9,
-  0x5dbd, 0x13cb,
-  0x5dc0, 0x2f1b,
-  0x5dc1, 0x3bff,
-  0x5dc2, 0x3023,
-  0x5dc3, 0x308c,
-  0x5dc6, 0x31cd,
-  0x5dc9, 0x1613,
-  0x5dcb, 0x32ce,
-  0x5dcd, 0x166f,
-  0x5dcf, 0x32cf,
-  0x5dd1, 0x337f,
-  0x5dd2, 0x16c2,
-  0x5dd4, 0x16c1,
-  0x5dd5, 0x337e,
-  0x5dd6, 0x16f7,
-  0x5dd7, 0x412c,
-  0x5dd8, 0x3414,
-  0x5ddb, 0x0226,
-  0x5ddd, 0x0287,
-  0x5dde, 0x03c8,
-  0x5ddf, 0x17e3,
-  0x5de0, 0x1871,
-  0x5de1, 0x051a,
-  0x5de2, 0x0a6b,
-  0x5de5, 0x0288,
-  0x5de6, 0x0338,
-  0x5de7, 0x0337,
-  0x5de8, 0x0336,
-  0x5deb, 0x048d,
-  0x5dee, 0x08a8,
-  0x5df0, 0x23c6,
-  0x5df1, 0x0289,
-  0x5df4, 0x02cb,
-  0x5df5, 0x3f61,
-  0x5df7, 0x070d,
-  0x5df9, 0x1ac9,
-  0x5dfd, 0x0c36,
-  0x5dfe, 0x028c,
-  0x5dff, 0x1788,
-  0x5e02, 0x0339,
-  0x5e04, 0x17a4,
-  0x5e06, 0x03c9,
-  0x5e09, 0x4140,
-  0x5e0a, 0x1872,
-  0x5e0b, 0x3d8a,
-  0x5e0c, 0x048e,
-  0x5e0e, 0x1873,
-  0x5e11, 0x05b0,
-  0x5e12, 0x3f2e,
-  0x5e14, 0x1970,
-  0x5e15, 0x05ae,
-  0x5e16, 0x05ad,
-  0x5e17, 0x196f,
-  0x5e18, 0x05ab,
-  0x5e19, 0x1971,
-  0x5e1a, 0x05ac,
-  0x5e1b, 0x05af,
-  0x5e1d, 0x070e,
-  0x5e1f, 0x0710,
-  0x5e20, 0x1acd,
-  0x5e21, 0x1aca,
-  0x5e24, 0x1ace,
-  0x5e25, 0x070f,
-  0x5e28, 0x1c87,
-  0x5e29, 0x1c86,
-  0x5e2b, 0x08aa,
-  0x5e2d, 0x08a9,
-  0x5e2e, 0x4135,
-  0x5e33, 0x0a6e,
-  0x5e34, 0x1ecd,
-  0x5e36, 0x0a6d,
-  0x5e37, 0x0a6f,
-  0x5e38, 0x0a6c,
-  0x5e3d, 0x0c38,
-  0x5e3e, 0x1ecc,
-  0x5e40, 0x0c39,
-  0x5e41, 0x212e,
-  0x5e42, 0x43a0,
-  0x5e43, 0x0c3a,
-  0x5e44, 0x212d,
-  0x5e45, 0x0c37,
-  0x5e48, 0x3a2c,
-  0x5e4a, 0x23c9,
-  0x5e4b, 0x23cb,
-  0x5e4c, 0x0dff,
-  0x5e4d, 0x23ca,
-  0x5e4e, 0x23c8,
-  0x5e4f, 0x23c7,
-  0x5e53, 0x2674,
-  0x5e54, 0x0fc9,
-  0x5e55, 0x0fc7,
-  0x5e57, 0x0fc8,
-  0x5e58, 0x2672,
-  0x5e5b, 0x0fc5,
-  0x5e5c, 0x28c7,
-  0x5e5d, 0x28c5,
-  0x5e5e, 0x3a2b,
-  0x5e5f, 0x1139,
-  0x5e60, 0x28c6,
-  0x5e61, 0x113a,
-  0x5e62, 0x1138,
-  0x5e63, 0x0fc6,
-  0x5e66, 0x2b38,
-  0x5e67, 0x2b36,
-  0x5e69, 0x28c4,
-  0x5e6a, 0x2d5d,
-  0x5e6b, 0x13cd,
-  0x5e6c, 0x2d5c,
-  0x5e6d, 0x2f1c,
-  0x5e6f, 0x2b39,
-  0x5e70, 0x308d,
-  0x5e72, 0x028d,
-  0x5e73, 0x033b,
-  0x5e74, 0x03cb,
-  0x5e75, 0x17e4,
-  0x5e76, 0x03ca,
-  0x5e78, 0x05b1,
-  0x5e79, 0x0e00,
-  0x5e7a, 0x0227,
-  0x5e7b, 0x02cc,
-  0x5e7c, 0x033c,
-  0x5e7d, 0x0711,
-  0x5e7e, 0x0c3b,
-  0x5e7f, 0x0228,
-  0x5e80, 0x17a5,
-  0x5e82, 0x17a6,
-  0x5e83, 0x4108,
-  0x5e84, 0x17e5,
-  0x5e86, 0x4552,
-  0x5e87, 0x0490,
-  0x5e88, 0x1877,
-  0x5e89, 0x1875,
-  0x5e8a, 0x0491,
-  0x5e8b, 0x1874,
-  0x5e8c, 0x1876,
-  0x5e8d, 0x1878,
-  0x5e8f, 0x048f,
-  0x5e95, 0x05b5,
-  0x5e97, 0x05b3,
-  0x5e9a, 0x05b2,
-  0x5e9b, 0x1ad2,
-  0x5e9c, 0x05b4,
-  0x5ea0, 0x0712,
-  0x5ea2, 0x1ad1,
-  0x5ea3, 0x1ad3,
-  0x5ea4, 0x1ad0,
-  0x5ea5, 0x1ad4,
-  0x5ea6, 0x0713,
-  0x5ea7, 0x08ad,
-  0x5ea8, 0x1c88,
-  0x5eaa, 0x1c8a,
-  0x5eab, 0x08ab,
-  0x5eac, 0x1c8b,
-  0x5ead, 0x08ac,
-  0x5eae, 0x1c89,
-  0x5eb0, 0x1acf,
-  0x5eb1, 0x1ece,
-  0x5eb2, 0x1ed1,
-  0x5eb4, 0x1ecf,
-  0x5eb5, 0x0a73,
-  0x5eb6, 0x0a72,
-  0x5eb7, 0x0a70,
-  0x5eb9, 0x1ed0,
-  0x5ebd, 0x43bd,
-  0x5ebe, 0x0a74,
-  0x5ec1, 0x0c3d,
-  0x5ec4, 0x0c3f,
-  0x5ec5, 0x23cc,
-  0x5ec6, 0x23ce,
-  0x5ec7, 0x23d0,
-  0x5ec8, 0x0e02,
-  0x5ec9, 0x0e01,
-  0x5eca, 0x0c3c,
-  0x5ecb, 0x23cf,
-  0x5ecc, 0x23cd,
-  0x5ecd, 0x3a30,
-  0x5ece, 0x2678,
-  0x5ed0, 0x413d,
-  0x5ed1, 0x2676,
-  0x5ed2, 0x267c,
-  0x5ed3, 0x0fca,
-  0x5ed4, 0x267d,
-  0x5ed5, 0x267a,
-  0x5ed6, 0x0fcb,
-  0x5ed7, 0x2677,
-  0x5ed8, 0x2675,
-  0x5ed9, 0x267b,
-  0x5eda, 0x113c,
-  0x5edb, 0x28c9,
-  0x5edc, 0x2679,
-  0x5edd, 0x113e,
-  0x5ede, 0x28ca,
-  0x5edf, 0x113d,
-  0x5ee0, 0x1140,
-  0x5ee1, 0x28cb,
-  0x5ee2, 0x113b,
-  0x5ee3, 0x113f,
-  0x5ee5, 0x2b3e,
-  0x5ee6, 0x2b3c,
-  0x5ee7, 0x2b3b,
-  0x5ee8, 0x2b3d,
-  0x5ee9, 0x2b3a,
-  0x5eec, 0x157d,
-  0x5eee, 0x31cf,
-  0x5ef1, 0x32d0,
-  0x5ef2, 0x3380,
-  0x5ef3, 0x1742,
-  0x5ef4, 0x0229,
-  0x5ef6, 0x05b7,
-  0x5ef7, 0x0492,
-  0x5ef8, 0x386f,
-  0x5ef9, 0x4143,
-  0x5efa, 0x0714,
-  0x5efb, 0x4144,
-  0x5efc, 0x4146,
-  0x5efe, 0x028e,
-  0x5eff, 0x02cd,
-  0x5f01, 0x033d,
-  0x5f02, 0x17e6,
-  0x5f04, 0x0493,
-  0x5f05, 0x1879,
-  0x5f07, 0x1ad5,
-  0x5f08, 0x0715,
-  0x5f0a, 0x0fcc,
-  0x5f0b, 0x028f,
-  0x5f0c, 0x3a3e,
-  0x5f0d, 0x4149,
-  0x5f0e, 0x3a3f,
-  0x5f0f, 0x03cc,
-  0x5f12, 0x0e03,
-  0x5f13, 0x0290,
-  0x5f14, 0x02ce,
-  0x5f17, 0x033f,
-  0x5f18, 0x033e,
-  0x5f1a, 0x17e7,
-  0x5f1b, 0x03cd,
-  0x5f1d, 0x187a,
-  0x5f1f, 0x0494,
-  0x5f22, 0x1973,
-  0x5f25, 0x4630,
-  0x5f26, 0x05b8,
-  0x5f28, 0x1972,
-  0x5f29, 0x05ba,
-  0x5f2d, 0x0716,
-  0x5f2e, 0x1ad6,
-  0x5f30, 0x1c8d,
-  0x5f31, 0x08ae,
-  0x5f33, 0x1c8c,
-  0x5f35, 0x0a75,
-  0x5f36, 0x1ed3,
-  0x5f37, 0x0a76,
-  0x5f38, 0x1ed4,
-  0x5f3a, 0x414e,
-  0x5f3c, 0x0c40,
-  0x5f40, 0x23d1,
-  0x5f43, 0x267f,
-  0x5f44, 0x267e,
-  0x5f46, 0x0fcd,
-  0x5f48, 0x1141,
-  0x5f49, 0x28cc,
-  0x5f4a, 0x12ad,
-  0x5f4b, 0x2b3f,
-  0x5f4c, 0x13ce,
-  0x5f4d, 0x3ba5,
-  0x5f4e, 0x16c3,
-  0x5f4f, 0x3416,
-  0x5f50, 0x022a,
-  0x5f51, 0x44e9,
-  0x5f54, 0x1976,
-  0x5f56, 0x1ad7,
-  0x5f57, 0x0a77,
-  0x5f58, 0x212f,
-  0x5f59, 0x0e04,
-  0x5f5c, 0x3d5a,
-  0x5f5d, 0x14cf,
-  0x5f61, 0x022b,
-  0x5f62, 0x0496,
-  0x5f63, 0x4152,
-  0x5f64, 0x0495,
-  0x5f65, 0x0717,
-  0x5f67, 0x1c8e,
-  0x5f69, 0x0a79,
-  0x5f6a, 0x0b89,
-  0x5f6b, 0x0a7a,
-  0x5f6c, 0x0a78,
-  0x5f6d, 0x0c41,
-  0x5f6f, 0x2680,
-  0x5f70, 0x0fce,
-  0x5f71, 0x1142,
-  0x5f72, 0x4154,
-  0x5f73, 0x1777,
-  0x5f74, 0x17e8,
-  0x5f76, 0x187c,
-  0x5f77, 0x0497,
-  0x5f78, 0x187b,
-  0x5f79, 0x0498,
-  0x5f7b, 0x4058,
-  0x5f7c, 0x05be,
-  0x5f7d, 0x1979,
-  0x5f7e, 0x1978,
-  0x5f7f, 0x05bd,
-  0x5f80, 0x05bb,
-  0x5f82, 0x1977,
-  0x5f83, 0x4631,
-  0x5f85, 0x0719,
-  0x5f86, 0x1ad8,
-  0x5f87, 0x071c,
-  0x5f88, 0x0718,
-  0x5f89, 0x071e,
-  0x5f8a, 0x071a,
-  0x5f8c, 0x071d,
-  0x5f90, 0x08b1,
-  0x5f91, 0x08b0,
-  0x5f92, 0x08af,
-  0x5f96, 0x1ed6,
-  0x5f97, 0x0a7b,
-  0x5f98, 0x0a7e,
-  0x5f99, 0x0a7c,
-  0x5f9b, 0x1ed5,
-  0x5f9c, 0x0a81,
-  0x5f9e, 0x0a7d,
-  0x5f9f, 0x1ed7,
-  0x5fa0, 0x0a80,
-  0x5fa1, 0x0a7f,
-  0x5fa4, 0x402c,
-  0x5fa5, 0x2131,
-  0x5fa6, 0x2130,
-  0x5fa7, 0x4157,
-  0x5fa8, 0x0c44,
-  0x5fa9, 0x0c42,
-  0x5fab, 0x2132,
-  0x5fac, 0x0e05,
-  0x5fad, 0x23d3,
-  0x5fae, 0x0e06,
-  0x5faf, 0x23d2,
-  0x5fb1, 0x3d98,
-  0x5fb2, 0x28cd,
-  0x5fb5, 0x1144,
-  0x5fb6, 0x2681,
-  0x5fb7, 0x1143,
-  0x5fb9, 0x0fcf,
-  0x5fba, 0x3f9f,
-  0x5fbb, 0x2b41,
-  0x5fbc, 0x2b40,
-  0x5fbd, 0x13cf,
-  0x5fbe, 0x2d5e,
-  0x5fbf, 0x308e,
-  0x5fc0, 0x31d1,
-  0x5fc3, 0x02d0,
-  0x5fc4, 0x44ea,
-  0x5fc5, 0x0340,
-  0x5fc9, 0x17a7,
-  0x5fcc, 0x049a,
-  0x5fcd, 0x049c,
-  0x5fcf, 0x17eb,
-  0x5fd0, 0x187f,
-  0x5fd1, 0x187e,
-  0x5fd2, 0x187d,
-  0x5fd4, 0x17ea,
-  0x5fd5, 0x17e9,
-  0x5fd6, 0x03cf,
-  0x5fd7, 0x049b,
-  0x5fd8, 0x0499,
-  0x5fd9, 0x03ce,
-  0x5fdb, 0x3a4a,
-  0x5fdd, 0x05bf,
-  0x5fde, 0x197a,
-  0x5fdf, 0x41af,
-  0x5fe0, 0x05c0,
-  0x5fe1, 0x1884,
-  0x5fe3, 0x1886,
-  0x5fe4, 0x1885,
-  0x5fe5, 0x197b,
-  0x5fe8, 0x1881,
-  0x5fea, 0x04a0,
-  0x5feb, 0x049e,
-  0x5fed, 0x1880,
-  0x5fee, 0x1882,
-  0x5fef, 0x1888,
-  0x5ff1, 0x049d,
-  0x5ff3, 0x1883,
-  0x5ff4, 0x188c,
-  0x5ff5, 0x05c2,
-  0x5ff7, 0x1889,
-  0x5ff8, 0x049f,
-  0x5ffa, 0x1887,
-  0x5ffb, 0x188a,
-  0x5ffd, 0x05c1,
-  0x5fff, 0x05c3,
-  0x6000, 0x188b,
-  0x6009, 0x198f,
-  0x600a, 0x1982,
-  0x600b, 0x1980,
-  0x600c, 0x198e,
-  0x600d, 0x1989,
-  0x600e, 0x0723,
-  0x600f, 0x05c4,
-  0x6010, 0x198a,
-  0x6011, 0x198d,
-  0x6012, 0x071f,
-  0x6013, 0x198c,
-  0x6014, 0x05c5,
-  0x6015, 0x05ca,
-  0x6016, 0x05c8,
-  0x6017, 0x1983,
-  0x6019, 0x197e,
-  0x601a, 0x1985,
-  0x601b, 0x05cf,
-  0x601c, 0x1990,
-  0x601d, 0x0720,
-  0x601e, 0x1986,
-  0x6020, 0x0721,
-  0x6021, 0x05cb,
-  0x6022, 0x1988,
-  0x6023, 0x4185,
-  0x6024, 0x1ae7,
-  0x6025, 0x0722,
-  0x6026, 0x197d,
-  0x6027, 0x05cc,
-  0x6028, 0x0724,
-  0x6029, 0x05cd,
-  0x602a, 0x05c9,
-  0x602b, 0x05ce,
-  0x602c, 0x1987,
-  0x602d, 0x197c,
-  0x602e, 0x198b,
-  0x602f, 0x05c6,
-  0x6031, 0x4161,
-  0x6032, 0x197f,
-  0x6033, 0x1984,
-  0x6034, 0x1981,
-  0x6035, 0x05c7,
-  0x6037, 0x1ad9,
-  0x6039, 0x1ada,
-  0x603b, 0x4553,
-  0x6040, 0x1ae4,
-  0x6041, 0x1c92,
-  0x6042, 0x1ae5,
-  0x6043, 0x072a,
-  0x6044, 0x1ae8,
-  0x6045, 0x1ade,
-  0x6046, 0x0729,
-  0x6047, 0x1ae0,
-  0x6049, 0x1ae1,
-  0x604a, 0x4074,
-  0x604c, 0x1ae3,
-  0x604d, 0x0725,
-  0x6050, 0x08b5,
-  0x6052, 0x36ec,
-  0x6053, 0x1adf,
-  0x6054, 0x1adb,
-  0x6055, 0x08b6,
-  0x6058, 0x1ae9,
-  0x6059, 0x08b2,
-  0x605a, 0x1c90,
-  0x605b, 0x1ae2,
-  0x605d, 0x1c8f,
-  0x605e, 0x1add,
-  0x605f, 0x1ae6,
-  0x6062, 0x0728,
-  0x6063, 0x08b3,
-  0x6064, 0x072e,
-  0x6065, 0x08b4,
-  0x6066, 0x1aea,
-  0x6067, 0x1c91,
-  0x6068, 0x0727,
-  0x6069, 0x08b8,
-  0x606a, 0x072d,
-  0x606b, 0x072c,
-  0x606c, 0x072b,
-  0x606d, 0x08b7,
-  0x606e, 0x1aeb,
-  0x606f, 0x08b9,
-  0x6070, 0x0726,
-  0x6072, 0x1adc,
-  0x6075, 0x3a56,
-  0x6077, 0x4005,
-  0x607e, 0x3a47,
-  0x607f, 0x0a82,
-  0x6080, 0x1c95,
-  0x6081, 0x1c97,
-  0x6083, 0x1c99,
-  0x6084, 0x08ba,
-  0x6085, 0x08c0,
-  0x6086, 0x1eda,
-  0x6087, 0x1c9d,
-  0x6088, 0x1c94,
-  0x6089, 0x0a84,
-  0x608a, 0x1ed8,
-  0x608c, 0x08bf,
-  0x608d, 0x08bd,
-  0x608e, 0x1c9f,
-  0x6090, 0x1ed9,
-  0x6092, 0x1c96,
-  0x6094, 0x08be,
-  0x6095, 0x1c9a,
-  0x6096, 0x08c1,
-  0x6097, 0x1c9c,
-  0x609a, 0x08bc,
-  0x609b, 0x1c9b,
-  0x609c, 0x1c9e,
-  0x609d, 0x1c98,
-  0x609e, 0x416a,
-  0x609f, 0x08bb,
-  0x60a0, 0x0a85,
-  0x60a2, 0x1c93,
-  0x60a3, 0x0a83,
-  0x60a4, 0x4001,
-  0x60a7, 0x3adc,
-  0x60a8, 0x0a86,
-  0x60b0, 0x1edc,
-  0x60b1, 0x1ee5,
-  0x60b2, 0x0c47,
-  0x60b3, 0x416c,
-  0x60b4, 0x0a88,
-  0x60b5, 0x0a8d,
-  0x60b6, 0x0c48,
-  0x60b7, 0x1ee7,
-  0x60b8, 0x0a94,
-  0x60b9, 0x2134,
-  0x60ba, 0x1edd,
-  0x60bb, 0x0a8c,
-  0x60bc, 0x0a8f,
-  0x60bd, 0x0a8a,
-  0x60be, 0x1edb,
-  0x60bf, 0x1ee9,
-  0x60c0, 0x1eec,
-  0x60c1, 0x2143,
-  0x60c3, 0x1eea,
-  0x60c4, 0x2138,
-  0x60c5, 0x0a8b,
-  0x60c6, 0x0a92,
-  0x60c7, 0x0a96,
-  0x60c8, 0x1ee4,
-  0x60c9, 0x2133,
-  0x60ca, 0x1ee8,
-  0x60cb, 0x0a87,
-  0x60cc, 0x2135,
-  0x60cd, 0x1eeb,
-  0x60ce, 0x2137,
-  0x60cf, 0x1ee0,
-  0x60d1, 0x0c45,
-  0x60d3, 0x1ede,
-  0x60d5, 0x0a91,
-  0x60d7, 0x4635,
-  0x60d8, 0x0a90,
-  0x60d9, 0x1ee2,
-  0x60da, 0x0a95,
-  0x60db, 0x1ee6,
-  0x60dc, 0x0a8e,
-  0x60dd, 0x1ee3,
-  0x60de, 0x3dcc,
-  0x60df, 0x0a93,
-  0x60e0, 0x0c49,
-  0x60e1, 0x0c46,
-  0x60e2, 0x2136,
-  0x60e3, 0x3d75,
-  0x60e4, 0x1ee1,
-  0x60e6, 0x0a89,
-  0x60e7, 0x3d84,
-  0x60e8, 0x3d7b,
-  0x60e9, 0x4009,
-  0x60f0, 0x0c4e,
-  0x60f1, 0x0c52,
-  0x60f2, 0x213a,
-  0x60f3, 0x0e0b,
-  0x60f4, 0x0c50,
-  0x60f5, 0x213e,
-  0x60f6, 0x0c54,
-  0x60f7, 0x23d4,
-  0x60f8, 0x2140,
-  0x60f9, 0x0e0d,
-  0x60fa, 0x0c4c,
-  0x60fb, 0x0c4f,
-  0x60fc, 0x2141,
-  0x60fd, 0x3fa8,
-  0x60fe, 0x2142,
-  0x60ff, 0x2148,
-  0x6100, 0x0c56,
-  0x6101, 0x0e0e,
-  0x6103, 0x2144,
-  0x6104, 0x2149,
-  0x6105, 0x213d,
-  0x6106, 0x0e18,
-  0x6107, 0x3c35,
-  0x6108, 0x0e0f,
-  0x6109, 0x0c55,
-  0x610a, 0x213b,
-  0x610b, 0x214a,
-  0x610c, 0x3c87,
-  0x610d, 0x0e17,
-  0x610e, 0x0c53,
-  0x610f, 0x0e08,
-  0x6110, 0x2147,
-  0x6112, 0x0c57,
-  0x6113, 0x213f,
-  0x6114, 0x2139,
-  0x6115, 0x0c4d,
-  0x6116, 0x213c,
-  0x6118, 0x2145,
-  0x6119, 0x3ef6,
-  0x611a, 0x0e07,
-  0x611b, 0x0e0c,
-  0x611c, 0x0c4a,
-  0x611d, 0x2146,
-  0x611f, 0x0e0a,
-  0x6123, 0x0c4b,
-  0x6127, 0x0e16,
-  0x6128, 0x2683,
-  0x6129, 0x23df,
-  0x612b, 0x23d7,
-  0x612c, 0x2682,
-  0x612e, 0x23db,
-  0x612f, 0x23dd,
-  0x6130, 0x3f37,
-  0x6132, 0x23da,
-  0x6134, 0x0e15,
-  0x6136, 0x23d9,
-  0x6137, 0x0e19,
-  0x613b, 0x2692,
-  0x613d, 0x4636,
-  0x613e, 0x0e14,
-  0x613f, 0x0fd1,
-  0x6140, 0x23e0,
-  0x6141, 0x2684,
-  0x6142, 0x4174,
-  0x6144, 0x0e12,
-  0x6145, 0x23d8,
-  0x6146, 0x23dc,
-  0x6147, 0x0fd0,
-  0x6148, 0x0e09,
-  0x6149, 0x23d5,
-  0x614b, 0x0fd2,
-  0x614c, 0x0e11,
-  0x614d, 0x0e13,
-  0x614e, 0x0e10,
-  0x614f, 0x23de,
-  0x6150, 0x3c32,
-  0x6152, 0x2688,
-  0x6154, 0x268e,
-  0x6155, 0x1149,
-  0x6156, 0x2695,
-  0x6158, 0x0fd8,
-  0x6159, 0x3fba,
-  0x615a, 0x0fd7,
-  0x615b, 0x2690,
-  0x615c, 0x4186,
-  0x615d, 0x1148,
-  0x615e, 0x2685,
-  0x615f, 0x0fd6,
-  0x6160, 0x494c,
-  0x6161, 0x2694,
-  0x6162, 0x0fd4,
-  0x6164, 0x4173,
-  0x6165, 0x2691,
-  0x6166, 0x28de,
-  0x6167, 0x1146,
-  0x6168, 0x0c51,
-  0x616a, 0x2693,
-  0x616b, 0x114d,
-  0x616c, 0x268b,
-  0x616e, 0x1147,
-  0x616f, 0x3fc0,
-  0x6170, 0x114c,
-  0x6171, 0x2686,
-  0x6172, 0x268a,
-  0x6173, 0x2687,
-  0x6174, 0x268d,
-  0x6175, 0x0fd9,
-  0x6176, 0x1145,
-  0x6177, 0x0fd3,
-  0x6179, 0x28d0,
-  0x617a, 0x268f,
-  0x617c, 0x114b,
-  0x617d, 0x3fbd,
-  0x617e, 0x114e,
-  0x6180, 0x268c,
-  0x6181, 0x4177,
-  0x6182, 0x114a,
-  0x6183, 0x28cf,
-  0x6187, 0x417a,
-  0x6189, 0x28d4,
-  0x618a, 0x12b1,
-  0x618b, 0x28ce,
-  0x618c, 0x2b4d,
-  0x618d, 0x28dd,
-  0x618e, 0x1152,
-  0x6190, 0x1150,
-  0x6191, 0x12af,
-  0x6192, 0x28da,
-  0x6193, 0x28d6,
-  0x6194, 0x1156,
-  0x6195, 0x3de0,
-  0x6196, 0x2b44,
-  0x6198, 0x3a55,
-  0x6199, 0x3a54,
-  0x619a, 0x1154,
-  0x619b, 0x28d5,
-  0x619c, 0x4002,
-  0x619d, 0x2b42,
-  0x619f, 0x28d9,
-  0x61a1, 0x28dc,
-  0x61a2, 0x28d3,
-  0x61a4, 0x1155,
-  0x61a7, 0x114f,
-  0x61a8, 0x2b43,
-  0x61a9, 0x12b0,
-  0x61aa, 0x28db,
-  0x61ab, 0x1151,
-  0x61ac, 0x1153,
-  0x61ad, 0x28d8,
-  0x61ae, 0x1157,
-  0x61af, 0x28d7,
-  0x61b0, 0x28d2,
-  0x61b1, 0x28d1,
-  0x61b2, 0x12ae,
-  0x61b3, 0x28df,
-  0x61b4, 0x2b46,
-  0x61b5, 0x2d60,
-  0x61b6, 0x12b3,
-  0x61b7, 0x4639,
-  0x61b8, 0x2b4c,
-  0x61b9, 0x43bf,
-  0x61ba, 0x2b4a,
-  0x61bc, 0x2d61,
-  0x61be, 0x12b4,
-  0x61bf, 0x2b4b,
-  0x61c0, 0x3a50,
-  0x61c1, 0x2b48,
-  0x61c2, 0x13d1,
-  0x61c3, 0x2d5f,
-  0x61c5, 0x2b45,
-  0x61c6, 0x2b47,
-  0x61c7, 0x13d2,
-  0x61c8, 0x12b6,
-  0x61c9, 0x13d0,
-  0x61ca, 0x12b5,
-  0x61cb, 0x13d4,
-  0x61cc, 0x2b49,
-  0x61cd, 0x12b2,
-  0x61cf, 0x463a,
-  0x61d0, 0x4181,
-  0x61d3, 0x417e,
-  0x61d6, 0x2f26,
-  0x61d8, 0x2f1e,
-  0x61da, 0x38b1,
-  0x61de, 0x2d67,
-  0x61df, 0x2f1f,
-  0x61e0, 0x2d63,
-  0x61e2, 0x3fc5,
-  0x61e3, 0x14d0,
-  0x61e4, 0x2d65,
-  0x61e5, 0x2d64,
-  0x61e6, 0x13d3,
-  0x61e7, 0x2d62,
-  0x61e8, 0x2d66,
-  0x61e9, 0x2f27,
-  0x61ea, 0x2f23,
-  0x61eb, 0x2f25,
-  0x61ed, 0x2f20,
-  0x61f0, 0x2f24,
-  0x61f1, 0x2f22,
-  0x61f2, 0x157e,
-  0x61f5, 0x1581,
-  0x61f6, 0x1580,
-  0x61f7, 0x157f,
-  0x61f8, 0x1614,
-  0x61f9, 0x31d3,
-  0x61fa, 0x1615,
-  0x61fb, 0x308f,
-  0x61fc, 0x1670,
-  0x61fd, 0x32d1,
-  0x61fe, 0x1671,
-  0x61ff, 0x16c4,
-  0x6200, 0x16f8,
-  0x6201, 0x3417,
-  0x6203, 0x3418,
-  0x6207, 0x3533,
-  0x6208, 0x02d1,
-  0x6209, 0x17a8,
-  0x620a, 0x0341,
-  0x620c, 0x03d1,
-  0x620e, 0x03d0,
-  0x6210, 0x03d3,
-  0x6211, 0x04a2,
-  0x6212, 0x04a1,
-  0x6214, 0x1991,
-  0x6215, 0x05d1,
-  0x6216, 0x05d0,
-  0x6219, 0x1ca0,
-  0x621a, 0x0a97,
-  0x621f, 0x0c58,
-  0x6220, 0x23e1,
-  0x6221, 0x0e1a,
-  0x6223, 0x23e3,
-  0x6224, 0x23e5,
-  0x6225, 0x23e4,
-  0x6227, 0x2697,
-  0x6229, 0x2696,
-  0x622a, 0x0fda,
-  0x622b, 0x2698,
-  0x622c, 0x463c,
-  0x622d, 0x28e0,
-  0x622e, 0x1158,
-  0x6230, 0x12b7,
-  0x6232, 0x13d5,
-  0x6233, 0x14d1,
-  0x6234, 0x13d6,
-  0x6236, 0x02d2,
-  0x6237, 0x451a,
-  0x6239, 0x3fc2,
-  0x623a, 0x188d,
-  0x623d, 0x1992,
-  0x623e, 0x05d3,
-  0x623f, 0x05d2,
-  0x6240, 0x05d4,
-  0x6241, 0x072f,
-  0x6242, 0x1aec,
-  0x6246, 0x1ca1,
-  0x6247, 0x08c2,
-  0x6248, 0x0a99,
-  0x6249, 0x0c59,
-  0x624a, 0x214b,
-  0x624b, 0x02d3,
-  0x624c, 0x44ec,
-  0x624d, 0x0291,
-  0x624e, 0x02d4,
-  0x6250, 0x17a9,
-  0x6251, 0x0345,
-  0x6252, 0x0344,
-  0x6253, 0x0342,
-  0x6258, 0x03d6,
-  0x6259, 0x17f2,
-  0x625a, 0x17f4,
-  0x625b, 0x03d5,
-  0x625c, 0x17ec,
-  0x625e, 0x17ed,
-  0x6260, 0x17f3,
-  0x6261, 0x17ef,
-  0x6262, 0x17f1,
-  0x6263, 0x03d4,
-  0x6264, 0x17ee,
-  0x6265, 0x17f5,
-  0x6266, 0x17f0,
-  0x6268, 0x3f15,
-  0x626d, 0x04a9,
-  0x626e, 0x04b2,
-  0x626f, 0x04b0,
-  0x6270, 0x1897,
-  0x6271, 0x1894,
-  0x6272, 0x189c,
-  0x6273, 0x04ae,
-  0x6274, 0x189d,
-  0x6276, 0x04a7,
-  0x6277, 0x189a,
-  0x6279, 0x04ad,
-  0x627a, 0x1896,
-  0x627b, 0x1895,
-  0x627c, 0x04ab,
-  0x627d, 0x189b,
-  0x627e, 0x04ac,
-  0x627f, 0x05d5,
-  0x6280, 0x04a6,
-  0x6281, 0x1898,
-  0x6282, 0x3f86,
-  0x6283, 0x188e,
-  0x6284, 0x04a3,
-  0x6285, 0x3f50,
-  0x6286, 0x04b6,
-  0x6287, 0x1893,
-  0x6288, 0x1899,
-  0x6289, 0x04a8,
-  0x628a, 0x04aa,
-  0x628c, 0x188f,
-  0x628e, 0x1890,
-  0x6290, 0x43c0,
-  0x6291, 0x04b5,
-  0x6292, 0x04af,
-  0x6293, 0x04b4,
-  0x6294, 0x1892,
-  0x6295, 0x04b3,
-  0x6296, 0x04a5,
-  0x6297, 0x04a4,
-  0x6298, 0x04b1,
-  0x629d, 0x3e96,
-  0x62a4, 0x3a69,
-  0x62a6, 0x3fc1,
-  0x62a8, 0x05e3,
-  0x62a9, 0x199e,
-  0x62aa, 0x1997,
-  0x62ab, 0x05de,
-  0x62ac, 0x05f1,
-  0x62ad, 0x1993,
-  0x62ae, 0x199a,
-  0x62af, 0x199c,
-  0x62b0, 0x199f,
-  0x62b1, 0x05ec,
-  0x62b3, 0x199b,
-  0x62b4, 0x1994,
-  0x62b5, 0x05ea,
-  0x62b6, 0x1998,
-  0x62b8, 0x19a0,
-  0x62b9, 0x05db,
-  0x62bb, 0x199d,
-  0x62bc, 0x05e5,
-  0x62bd, 0x05e4,
-  0x62be, 0x1996,
-  0x62bf, 0x05d9,
-  0x62c2, 0x05da,
-  0x62c3, 0x3d8f,
-  0x62c4, 0x05d8,
-  0x62c5, 0x418a,
-  0x62c6, 0x05f0,
-  0x62c7, 0x05e8,
-  0x62c8, 0x05e2,
-  0x62c9, 0x05d6,
-  0x62ca, 0x1999,
-  0x62cb, 0x05e1,
-  0x62cc, 0x05d7,
-  0x62cd, 0x05e9,
-  0x62ce, 0x05f2,
-  0x62cf, 0x1aee,
-  0x62d0, 0x05e6,
-  0x62d1, 0x1995,
-  0x62d2, 0x05dc,
-  0x62d3, 0x05df,
-  0x62d5, 0x418c,
-  0x62d6, 0x05ee,
-  0x62d8, 0x05ed,
-  0x62d9, 0x05e7,
-  0x62da, 0x05eb,
-  0x62db, 0x05dd,
-  0x62dc, 0x0730,
-  0x62df, 0x401c,
-  0x62e5, 0x463d,
-  0x62eb, 0x1af4,
-  0x62ec, 0x073c,
-  0x62ed, 0x0734,
-  0x62ee, 0x0736,
-  0x62ef, 0x073b,
-  0x62f0, 0x1b00,
-  0x62f1, 0x0739,
-  0x62f2, 0x1ca2,
-  0x62f3, 0x08c3,
-  0x62f4, 0x073e,
-  0x62f5, 0x1af1,
-  0x62f6, 0x1af9,
-  0x62f7, 0x073a,
-  0x62f8, 0x1af8,
-  0x62f9, 0x1af5,
-  0x62fa, 0x1afd,
-  0x62fb, 0x1aff,
-  0x62fc, 0x0733,
-  0x62fd, 0x0737,
-  0x62fe, 0x073d,
-  0x62ff, 0x08c5,
-  0x6300, 0x1afa,
-  0x6301, 0x0735,
-  0x6302, 0x0740,
-  0x6303, 0x1af3,
-  0x6307, 0x0738,
-  0x6308, 0x08c4,
-  0x6309, 0x0732,
-  0x630b, 0x1af0,
-  0x630c, 0x1af7,
-  0x630d, 0x1aef,
-  0x630e, 0x1af2,
-  0x630f, 0x1af6,
-  0x6310, 0x1ca3,
-  0x6311, 0x073f,
-  0x6313, 0x1afb,
-  0x6315, 0x1afe,
-  0x6316, 0x0731,
-  0x6318, 0x43c1,
-  0x6328, 0x08d3,
-  0x6329, 0x1caf,
-  0x632a, 0x08d1,
-  0x632c, 0x1ca5,
-  0x632d, 0x1cb5,
-  0x632e, 0x3edd,
-  0x632f, 0x08c8,
-  0x6331, 0x3a65,
-  0x6332, 0x1eed,
-  0x6333, 0x1cb7,
-  0x6334, 0x1cb1,
-  0x6335, 0x3f16,
-  0x6336, 0x1ca8,
-  0x6337, 0x3a63,
-  0x6338, 0x1cba,
-  0x6339, 0x1cab,
-  0x633a, 0x08ce,
-  0x633b, 0x1f04,
-  0x633c, 0x1cae,
-  0x633d, 0x08d0,
-  0x633e, 0x08c7,
-  0x6340, 0x1cbc,
-  0x6341, 0x1cb0,
-  0x6342, 0x08ca,
-  0x6343, 0x1ca9,
-  0x6344, 0x1ca6,
-  0x6346, 0x08cb,
-  0x6347, 0x1cb6,
-  0x6348, 0x1cbd,
-  0x6349, 0x08cd,
-  0x634a, 0x1cad,
-  0x634b, 0x1cac,
-  0x634c, 0x08d5,
-  0x634d, 0x08d4,
-  0x634e, 0x08c6,
-  0x634f, 0x08cc,
-  0x6350, 0x08cf,
-  0x6351, 0x1cb9,
-  0x6354, 0x1cb3,
-  0x6355, 0x08c9,
-  0x6356, 0x1ca4,
-  0x6357, 0x1cbb,
-  0x6358, 0x1cb2,
-  0x6359, 0x1cb4,
-  0x635a, 0x1cb8,
-  0x6364, 0x3fc7,
-  0x6365, 0x1eee,
-  0x6367, 0x0aa1,
-  0x6368, 0x0ab5,
-  0x6369, 0x0ab4,
-  0x636b, 0x0aa9,
-  0x636c, 0x418e,
-  0x636d, 0x1f00,
-  0x636e, 0x1efc,
-  0x636f, 0x1ef9,
-  0x6370, 0x1f0b,
-  0x6371, 0x0aa4,
-  0x6372, 0x0a9c,
-  0x6375, 0x1efe,
-  0x6376, 0x0c69,
-  0x6377, 0x0aa0,
-  0x6378, 0x1f06,
-  0x6379, 0x4367,
-  0x637a, 0x0ab6,
-  0x637b, 0x0ab3,
-  0x637c, 0x1f02,
-  0x637d, 0x1ef1,
-  0x637f, 0x3f4b,
-  0x6380, 0x0ab2,
-  0x6381, 0x1f08,
-  0x6382, 0x1ef0,
-  0x6383, 0x0aa7,
-  0x6384, 0x0aab,
-  0x6385, 0x1f07,
-  0x6387, 0x1efa,
-  0x6388, 0x0aac,
-  0x6389, 0x0aa6,
-  0x638a, 0x1eef,
-  0x638b, 0x4188,
-  0x638c, 0x0c5b,
-  0x638d, 0x1f0a,
-  0x638e, 0x1ef8,
-  0x638f, 0x0ab1,
-  0x6390, 0x1efb,
-  0x6391, 0x1f09,
-  0x6392, 0x0ab0,
-  0x6394, 0x214c,
-  0x6396, 0x0a9d,
-  0x6397, 0x1ef6,
-  0x6398, 0x0aa2,
-  0x6399, 0x0aad,
-  0x639b, 0x0aa8,
-  0x639c, 0x1eff,
-  0x639d, 0x1ef5,
-  0x639e, 0x1ef3,
-  0x639f, 0x1f05,
-  0x63a0, 0x0a9a,
-  0x63a1, 0x0aae,
-  0x63a2, 0x0a9e,
-  0x63a3, 0x0c5a,
-  0x63a4, 0x1f03,
-  0x63a5, 0x0a9f,
-  0x63a7, 0x0a9b,
-  0x63a8, 0x0aaa,
-  0x63a9, 0x0aa5,
-  0x63aa, 0x0aa3,
-  0x63ab, 0x1ef7,
-  0x63ac, 0x0aaf,
-  0x63ad, 0x1ef4,
-  0x63ae, 0x1f01,
-  0x63af, 0x1efd,
-  0x63b0, 0x214e,
-  0x63b1, 0x214d,
-  0x63b9, 0x3e9d,
-  0x63bd, 0x1ef2,
-  0x63be, 0x215e,
-  0x63c0, 0x0c5d,
-  0x63c1, 0x46a8,
-  0x63c2, 0x2164,
-  0x63c3, 0x2153,
-  0x63c4, 0x2161,
-  0x63c5, 0x23e6,
-  0x63c6, 0x0c60,
-  0x63c7, 0x2165,
-  0x63c8, 0x2168,
-  0x63c9, 0x0c5f,
-  0x63ca, 0x2156,
-  0x63cb, 0x2167,
-  0x63cc, 0x2166,
-  0x63cd, 0x0c61,
-  0x63ce, 0x214f,
-  0x63cf, 0x0c5c,
-  0x63d0, 0x0c64,
-  0x63d1, 0x3a66,
-  0x63d2, 0x0c62,
-  0x63d3, 0x2163,
-  0x63d5, 0x2159,
-  0x63d6, 0x0c66,
-  0x63d7, 0x216a,
-  0x63d8, 0x2162,
-  0x63d9, 0x216b,
-  0x63da, 0x0c6e,
-  0x63db, 0x0c6c,
-  0x63dc, 0x2160,
-  0x63dd, 0x215f,
-  0x63de, 0x3e60,
-  0x63df, 0x215d,
-  0x63e0, 0x2157,
-  0x63e1, 0x0c65,
-  0x63e2, 0x4641,
-  0x63e3, 0x0c63,
-  0x63e4, 0x1caa,
-  0x63e5, 0x2150,
-  0x63e6, 0x489f,
-  0x63e7, 0x2404,
-  0x63e8, 0x2151,
-  0x63e9, 0x0c5e,
-  0x63ea, 0x0c6b,
-  0x63eb, 0x23e8,
-  0x63ed, 0x0c67,
-  0x63ef, 0x2152,
-  0x63f0, 0x2169,
-  0x63f1, 0x23e7,
-  0x63f2, 0x215a,
-  0x63f3, 0x2155,
-  0x63f4, 0x0c6a,
-  0x63f5, 0x215b,
-  0x63f6, 0x2158,
-  0x63f8, 0x4192,
-  0x63f9, 0x0c6f,
-  0x63fb, 0x4642,
-  0x63fc, 0x3e9c,
-  0x63fe, 0x3e9e,
-  0x6406, 0x0e2a,
-  0x6407, 0x4643,
-  0x6409, 0x23eb,
-  0x640a, 0x23fe,
-  0x640b, 0x2403,
-  0x640c, 0x23f7,
-  0x640d, 0x0e26,
-  0x640e, 0x2408,
-  0x640f, 0x0e23,
-  0x6410, 0x23e9,
-  0x6412, 0x23ea,
-  0x6413, 0x0e1c,
-  0x6414, 0x0e25,
-  0x6415, 0x23f1,
-  0x6416, 0x0e28,
-  0x6418, 0x23f2,
-  0x641a, 0x23ff,
-  0x641b, 0x2405,
-  0x641c, 0x0e24,
-  0x641e, 0x0e1e,
-  0x641f, 0x23f0,
-  0x6420, 0x23ec,
-  0x6421, 0x2407,
-  0x6422, 0x23f5,
-  0x6424, 0x23ed,
-  0x6425, 0x2401,
-  0x6426, 0x23f8,
-  0x6427, 0x2402,
-  0x6428, 0x23fa,
-  0x642a, 0x0e1f,
-  0x642b, 0x2699,
-  0x642c, 0x0e22,
-  0x642d, 0x0e20,
-  0x642e, 0x2406,
-  0x642f, 0x23fd,
-  0x6430, 0x23f9,
-  0x6432, 0x45d9,
-  0x6433, 0x23ee,
-  0x6434, 0x0fe4,
-  0x6435, 0x23fc,
-  0x6436, 0x0e27,
-  0x6437, 0x23f4,
-  0x6438, 0x4191,
-  0x6439, 0x23f3,
-  0x643a, 0x419d,
-  0x643b, 0x3a6b,
-  0x643d, 0x0e21,
-  0x643e, 0x0e1d,
-  0x643f, 0x26ae,
-  0x6440, 0x2400,
-  0x6441, 0x23fb,
-  0x6443, 0x23ef,
-  0x644b, 0x26a9,
-  0x644d, 0x269a,
-  0x644e, 0x26a5,
-  0x6450, 0x26ac,
-  0x6451, 0x0fe2,
-  0x6452, 0x0c6d,
-  0x6453, 0x26aa,
-  0x6454, 0x0fdd,
-  0x6458, 0x0fdc,
-  0x6459, 0x26b1,
-  0x645a, 0x43c2,
-  0x645b, 0x269b,
-  0x645c, 0x26a8,
-  0x645d, 0x269c,
-  0x645e, 0x26a7,
-  0x645f, 0x0fe0,
-  0x6460, 0x26ab,
-  0x6461, 0x215c,
-  0x6465, 0x26b2,
-  0x6466, 0x26a3,
-  0x6467, 0x0fe3,
-  0x6468, 0x28ee,
-  0x6469, 0x1159,
-  0x646b, 0x26b0,
-  0x646c, 0x26af,
-  0x646d, 0x0fe5,
-  0x646e, 0x28e1,
-  0x646f, 0x115a,
-  0x6470, 0x28e2,
-  0x6471, 0x3a5b,
-  0x6472, 0x269f,
-  0x6474, 0x269d,
-  0x6475, 0x26a2,
-  0x6476, 0x269e,
-  0x6477, 0x26b3,
-  0x6478, 0x0fdf,
-  0x6479, 0x115b,
-  0x647a, 0x0fe1,
-  0x647b, 0x0fe6,
-  0x647c, 0x436c,
-  0x647d, 0x26a1,
-  0x647f, 0x26ad,
-  0x6482, 0x26a6,
-  0x6485, 0x28e5,
-  0x6487, 0x0fdb,
-  0x6488, 0x115e,
-  0x6489, 0x2b54,
-  0x648a, 0x28ea,
-  0x648b, 0x28e9,
-  0x648c, 0x28eb,
-  0x648d, 0x4323,
-  0x648f, 0x28e8,
-  0x6490, 0x115f,
-  0x6491, 0x43c3,
-  0x6492, 0x1165,
-  0x6493, 0x1162,
-  0x6495, 0x1163,
-  0x6496, 0x28e3,
-  0x6497, 0x28e6,
-  0x6498, 0x28f0,
-  0x6499, 0x116b,
-  0x649a, 0x1169,
-  0x649c, 0x28e7,
-  0x649d, 0x2154,
-  0x649e, 0x115c,
-  0x649f, 0x28ed,
-  0x64a0, 0x28e4,
-  0x64a2, 0x116c,
-  0x64a3, 0x28ec,
-  0x64a4, 0x0fde,
-  0x64a5, 0x1161,
-  0x64a6, 0x26a4,
-  0x64a9, 0x1164,
-  0x64ab, 0x1168,
-  0x64ac, 0x116a,
-  0x64ad, 0x1167,
-  0x64ae, 0x1166,
-  0x64af, 0x42e1,
-  0x64b0, 0x1160,
-  0x64b1, 0x28ef,
-  0x64b2, 0x115d,
-  0x64b3, 0x116d,
-  0x64b4, 0x4340,
-  0x64b6, 0x3a64,
-  0x64bb, 0x12bb,
-  0x64bd, 0x2b53,
-  0x64be, 0x12c5,
-  0x64bf, 0x12c2,
-  0x64c0, 0x4645,
-  0x64c1, 0x12b9,
-  0x64c2, 0x12c0,
-  0x64c3, 0x2b55,
-  0x64c4, 0x12be,
-  0x64c5, 0x12b8,
-  0x64c7, 0x12bf,
-  0x64c9, 0x2b52,
-  0x64ca, 0x13d8,
-  0x64cb, 0x12ba,
-  0x64cd, 0x12c1,
-  0x64ce, 0x13d7,
-  0x64cf, 0x2b51,
-  0x64d0, 0x2b50,
-  0x64d2, 0x12c3,
-  0x64d3, 0x3f03,
-  0x64d4, 0x12c4,
-  0x64d6, 0x2b4f,
-  0x64d7, 0x2b4e,
-  0x64d8, 0x13d9,
-  0x64d9, 0x2b58,
-  0x64da, 0x12bd,
-  0x64db, 0x2b56,
-  0x64dd, 0x431e,
-  0x64e0, 0x13da,
-  0x64e1, 0x4199,
-  0x64e2, 0x13df,
-  0x64e3, 0x2d6a,
-  0x64e4, 0x2d6c,
-  0x64e5, 0x419a,
-  0x64e6, 0x13dc,
-  0x64e7, 0x37a8,
-  0x64e8, 0x2d6d,
-  0x64e9, 0x2d69,
-  0x64ea, 0x434a,
-  0x64eb, 0x2d6b,
-  0x64ec, 0x13dd,
-  0x64ed, 0x13e0,
-  0x64ef, 0x2d68,
-  0x64f0, 0x13db,
-  0x64f1, 0x13de,
-  0x64f2, 0x14d3,
-  0x64f3, 0x2b57,
-  0x64f4, 0x14d2,
-  0x64f7, 0x14d8,
-  0x64f8, 0x2f2b,
-  0x64fa, 0x14d6,
-  0x64fc, 0x2f2e,
-  0x64fd, 0x2f2a,
-  0x64fe, 0x14d4,
-  0x64ff, 0x2f28,
-  0x6500, 0x1582,
-  0x6501, 0x2f2c,
-  0x6503, 0x2f2d,
-  0x6504, 0x2f29,
-  0x6506, 0x14d5,
-  0x6507, 0x3090,
-  0x6509, 0x3093,
-  0x650a, 0x4536,
-  0x650c, 0x3094,
-  0x650d, 0x3092,
-  0x650e, 0x3095,
-  0x650f, 0x1583,
-  0x6510, 0x3091,
-  0x6511, 0x3aa9,
-  0x6513, 0x31d7,
-  0x6514, 0x1617,
-  0x6515, 0x31d6,
-  0x6516, 0x31d5,
-  0x6517, 0x31d4,
-  0x6518, 0x1616,
-  0x6519, 0x1618,
-  0x651b, 0x32d2,
-  0x651c, 0x1673,
-  0x651d, 0x1672,
-  0x651e, 0x4187,
-  0x651f, 0x3ec0,
-  0x6520, 0x3382,
-  0x6521, 0x3381,
-  0x6522, 0x3384,
-  0x6523, 0x16f9,
-  0x6524, 0x16c5,
-  0x6525, 0x341b,
-  0x6526, 0x3383,
-  0x6529, 0x341a,
-  0x652a, 0x16fb,
-  0x652b, 0x16fa,
-  0x652c, 0x1721,
-  0x652d, 0x3484,
-  0x652e, 0x34ca,
-  0x652f, 0x02d5,
-  0x6530, 0x3e62,
-  0x6532, 0x216c,
-  0x6533, 0x2b59,
-  0x6534, 0x022c,
-  0x6535, 0x44ed,
-  0x6536, 0x03d7,
-  0x6537, 0x17f6,
-  0x6538, 0x04b9,
-  0x6539, 0x04b7,
-  0x653b, 0x04b8,
-  0x653d, 0x19a1,
-  0x653e, 0x05f3,
-  0x653f, 0x0741,
-  0x6541, 0x1b01,
-  0x6543, 0x1b02,
-  0x6545, 0x0742,
-  0x6546, 0x1cbf,
-  0x6548, 0x08d6,
-  0x654a, 0x1cbe,
-  0x654d, 0x419f,
-  0x654f, 0x0abd,
-  0x6551, 0x0ab9,
-  0x6553, 0x1f0c,
-  0x6554, 0x0ac0,
-  0x6555, 0x0abf,
-  0x6556, 0x0ab8,
-  0x6557, 0x0abb,
-  0x6558, 0x0abe,
-  0x6559, 0x0aba,
-  0x655c, 0x2170,
-  0x655d, 0x0ab7,
-  0x655e, 0x0c70,
-  0x655f, 0x41a5,
-  0x6562, 0x0c72,
-  0x6564, 0x216f,
-  0x6565, 0x2172,
-  0x6566, 0x0c71,
-  0x6567, 0x216d,
-  0x6568, 0x2171,
-  0x656a, 0x216e,
-  0x656b, 0x3a6c,
-  0x656c, 0x0e2b,
-  0x656d, 0x41a4,
-  0x656f, 0x2409,
-  0x6572, 0x0fe7,
-  0x6573, 0x26b4,
-  0x6574, 0x12c6,
-  0x6575, 0x116e,
-  0x6576, 0x28f1,
-  0x6577, 0x116f,
-  0x6579, 0x28f3,
-  0x657a, 0x28f2,
-  0x657b, 0x28f4,
-  0x657c, 0x2b5b,
-  0x657f, 0x2b5a,
-  0x6580, 0x2d6f,
-  0x6581, 0x2d6e,
-  0x6582, 0x13e1,
-  0x6584, 0x3096,
-  0x6585, 0x41a3,
-  0x6586, 0x4648,
-  0x6587, 0x02d6,
-  0x6588, 0x410b,
-  0x6589, 0x4554,
-  0x658c, 0x2173,
-  0x6590, 0x0c75,
-  0x6591, 0x0c74,
-  0x6592, 0x240a,
-  0x6594, 0x2f2f,
-  0x6595, 0x1674,
-  0x6596, 0x341c,
-  0x6597, 0x02d7,
-  0x6599, 0x08d8,
-  0x659b, 0x0ac2,
-  0x659c, 0x0ac1,
-  0x659d, 0x2174,
-  0x659f, 0x0e2c,
-  0x65a0, 0x26b5,
-  0x65a1, 0x0fe8,
-  0x65a2, 0x2b5c,
-  0x65a4, 0x02d8,
-  0x65a5, 0x0346,
-  0x65a7, 0x05f4,
-  0x65a8, 0x19a2,
-  0x65aa, 0x1b03,
-  0x65ab, 0x0743,
-  0x65ac, 0x0ac3,
-  0x65ae, 0x2176,
-  0x65af, 0x0c76,
-  0x65b0, 0x0e2d,
-  0x65b2, 0x28f5,
-  0x65b5, 0x41a7,
-  0x65b6, 0x2d70,
-  0x65b7, 0x14d9,
-  0x65b8, 0x34cb,
-  0x65b9, 0x02d9,
-  0x65bb, 0x19a3,
-  0x65bc, 0x05f5,
-  0x65bd, 0x0744,
-  0x65be, 0x3e3b,
-  0x65bf, 0x1b04,
-  0x65c1, 0x08d9,
-  0x65c2, 0x1cc3,
-  0x65c3, 0x1cc1,
-  0x65c5, 0x08da,
-  0x65c6, 0x1cc0,
-  0x65cb, 0x0ac5,
-  0x65cd, 0x1f0d,
-  0x65ce, 0x0ac7,
-  0x65cf, 0x0ac4,
-  0x65d0, 0x2177,
-  0x65d1, 0x41aa,
-  0x65d2, 0x2178,
-  0x65d3, 0x240b,
-  0x65d4, 0x3ba8,
-  0x65d6, 0x0fea,
-  0x65d7, 0x0fe9,
-  0x65da, 0x2d71,
-  0x65db, 0x2f30,
-  0x65dd, 0x3098,
-  0x65de, 0x3097,
-  0x65df, 0x31d8,
-  0x65e0, 0x022d,
-  0x65e1, 0x1789,
-  0x65e2, 0x0745,
-  0x65e3, 0x41ae,
-  0x65e5, 0x02da,
-  0x65e6, 0x0347,
-  0x65e8, 0x03d9,
-  0x65e9, 0x03d8,
-  0x65ec, 0x03da,
-  0x65ee, 0x17f8,
-  0x65ef, 0x17f7,
-  0x65f0, 0x189e,
-  0x65f1, 0x04ba,
-  0x65f2, 0x18a1,
-  0x65f3, 0x18a0,
-  0x65f4, 0x189f,
-  0x65f5, 0x18a2,
-  0x65fa, 0x05f6,
-  0x65fb, 0x19a9,
-  0x65fc, 0x19a5,
-  0x65fd, 0x19ae,
-  0x65ff, 0x464a,
-  0x6600, 0x05fd,
-  0x6602, 0x05fb,
-  0x6603, 0x19aa,
-  0x6604, 0x19a6,
-  0x6605, 0x19ad,
-  0x6606, 0x05fa,
-  0x6607, 0x0601,
-  0x6608, 0x19a8,
-  0x6609, 0x19a4,
-  0x660a, 0x0600,
-  0x660b, 0x19ab,
-  0x660c, 0x05f9,
-  0x660d, 0x19ac,
-  0x660e, 0x05fc,
-  0x660f, 0x05fe,
-  0x6610, 0x19b0,
-  0x6611, 0x19af,
-  0x6612, 0x19a7,
-  0x6613, 0x05f8,
-  0x6614, 0x05f7,
-  0x6615, 0x05ff,
-  0x6618, 0x41b1,
-  0x661c, 0x1b09,
-  0x661d, 0x1b0f,
-  0x661e, 0x3a93,
-  0x661f, 0x074b,
-  0x6620, 0x0748,
-  0x6621, 0x1b06,
-  0x6622, 0x1b0b,
-  0x6623, 0x4295,
-  0x6624, 0x074e,
-  0x6625, 0x0746,
-  0x6626, 0x1b0a,
-  0x6627, 0x0749,
-  0x6628, 0x074c,
-  0x662b, 0x1b0d,
-  0x662d, 0x0747,
-  0x662e, 0x1b12,
-  0x662f, 0x074a,
-  0x6630, 0x3a8d,
-  0x6631, 0x074d,
-  0x6632, 0x1b07,
-  0x6633, 0x1b0c,
-  0x6634, 0x1b10,
-  0x6635, 0x1b08,
-  0x6636, 0x1b05,
-  0x6639, 0x1b11,
-  0x663a, 0x1b0e,
-  0x6641, 0x08e2,
-  0x6642, 0x08db,
-  0x6643, 0x08de,
-  0x6644, 0x41b4,
-  0x6645, 0x08e1,
-  0x6647, 0x1cc6,
-  0x6648, 0x3d99,
-  0x6649, 0x08dc,
-  0x664a, 0x1cc4,
-  0x664b, 0x41b7,
-  0x664c, 0x08e0,
-  0x664f, 0x08dd,
-  0x6651, 0x1cc7,
-  0x6652, 0x08df,
-  0x6653, 0x464b,
-  0x6657, 0x409b,
-  0x6659, 0x1f11,
-  0x665a, 0x0ac9,
-  0x665b, 0x1f10,
-  0x665c, 0x1f12,
-  0x665d, 0x0ac8,
-  0x665e, 0x0acd,
-  0x665f, 0x1cc5,
-  0x6661, 0x1f0f,
-  0x6662, 0x1f13,
-  0x6663, 0x3a90,
-  0x6664, 0x0aca,
-  0x6665, 0x1f0e,
-  0x6666, 0x0acc,
-  0x6667, 0x41b9,
-  0x6668, 0x0acb,
-  0x666a, 0x217f,
-  0x666b, 0x3a8b,
-  0x666c, 0x217a,
-  0x666e, 0x0c77,
-  0x666f, 0x0c7b,
-  0x6670, 0x0c78,
-  0x6671, 0x217d,
-  0x6672, 0x2180,
-  0x6673, 0x41bb,
-  0x6674, 0x0c79,
-  0x6676, 0x0c7a,
-  0x6677, 0x0c7f,
-  0x6678, 0x2414,
-  0x6679, 0x217e,
-  0x667a, 0x0c7d,
-  0x667b, 0x217b,
-  0x667c, 0x2179,
-  0x667d, 0x469b,
-  0x667e, 0x0c7e,
-  0x6680, 0x217c,
-  0x6684, 0x0e33,
-  0x6685, 0x4162,
-  0x6686, 0x240c,
-  0x6687, 0x0e30,
-  0x6689, 0x0e2f,
-  0x668a, 0x2411,
-  0x668b, 0x2410,
-  0x668c, 0x240d,
-  0x668d, 0x0e35,
-  0x668e, 0x3a89,
-  0x6690, 0x240f,
-  0x6691, 0x0c7c,
-  0x6692, 0x464d,
-  0x6694, 0x2413,
-  0x6695, 0x240e,
-  0x6696, 0x0e32,
-  0x6697, 0x0e2e,
-  0x6698, 0x0e34,
-  0x6699, 0x2412,
-  0x669a, 0x3d3d,
-  0x669d, 0x0fed,
-  0x669f, 0x26b8,
-  0x66a0, 0x26b7,
-  0x66a1, 0x26b6,
-  0x66a2, 0x0feb,
-  0x66a4, 0x40ba,
-  0x66a8, 0x0fec,
-  0x66a9, 0x28f9,
-  0x66aa, 0x28fc,
-  0x66ab, 0x1172,
-  0x66ad, 0x4948,
-  0x66ae, 0x1171,
-  0x66af, 0x28fd,
-  0x66b0, 0x28f8,
-  0x66b1, 0x1174,
-  0x66b2, 0x28fa,
-  0x66b3, 0x40b5,
-  0x66b4, 0x1173,
-  0x66b5, 0x28f7,
-  0x66b6, 0x3e13,
-  0x66b7, 0x28fb,
-  0x66b8, 0x12cc,
-  0x66b9, 0x12c9,
-  0x66ba, 0x2b65,
-  0x66bb, 0x2b64,
-  0x66bd, 0x2b63,
-  0x66be, 0x2b5e,
-  0x66bf, 0x3d9a,
-  0x66c0, 0x2b5f,
-  0x66c4, 0x12ca,
-  0x66c6, 0x12c7,
-  0x66c7, 0x12cb,
-  0x66c8, 0x2b5d,
-  0x66c9, 0x12c8,
-  0x66ca, 0x2b60,
-  0x66cc, 0x2b66,
-  0x66cd, 0x40b8,
-  0x66ce, 0x3a77,
-  0x66cf, 0x2b62,
-  0x66d2, 0x2d72,
-  0x66d6, 0x13e4,
-  0x66d8, 0x2f33,
-  0x66d9, 0x13e3,
-  0x66da, 0x2f31,
-  0x66dc, 0x14da,
-  0x66dd, 0x1585,
-  0x66de, 0x3099,
-  0x66e0, 0x1584,
-  0x66e3, 0x31da,
-  0x66e6, 0x1619,
-  0x66e8, 0x31d9,
-  0x66e9, 0x1675,
-  0x66eb, 0x341d,
-  0x66ec, 0x16fc,
-  0x66ed, 0x3485,
-  0x66f0, 0x02db,
-  0x66f1, 0x3e84,
-  0x66f2, 0x03dc,
-  0x66f4, 0x04bb,
-  0x66f6, 0x19b1,
-  0x66f7, 0x074f,
-  0x66f8, 0x08e3,
-  0x66f9, 0x0ace,
-  0x66fc, 0x0a1f,
-  0x66fe, 0x0c80,
-  0x6700, 0x0bf0,
-  0x6701, 0x2181,
-  0x6702, 0x41c4,
-  0x6703, 0x0e36,
-  0x6704, 0x26ba,
-  0x6705, 0x26b9,
-  0x6708, 0x02dc,
-  0x6709, 0x03de,
-  0x670a, 0x19b2,
-  0x670b, 0x0603,
-  0x670c, 0x3fe2,
-  0x670d, 0x0602,
-  0x670e, 0x3da1,
-  0x670f, 0x1b13,
-  0x6712, 0x1cc8,
-  0x6714, 0x08e4,
-  0x6716, 0x464f,
-  0x6717, 0x08e6,
-  0x6718, 0x1f14,
-  0x671b, 0x0ad0,
-  0x671d, 0x0c83,
-  0x671e, 0x3d8b,
-  0x671f, 0x0c82,
-  0x6720, 0x2415,
-  0x6721, 0x2522,
-  0x6722, 0x26bb,
-  0x6723, 0x2b67,
-  0x6725, 0x379f,
-  0x6726, 0x14db,
-  0x6727, 0x161a,
-  0x6728, 0x02dd,
-  0x672a, 0x034a,
-  0x672c, 0x0349,
-  0x672d, 0x034c,
-  0x672e, 0x0348,
-  0x6731, 0x03e1,
-  0x6733, 0x1800,
-  0x6734, 0x03e0,
-  0x6735, 0x03e2,
-  0x6736, 0x3e41,
-  0x6738, 0x17fb,
-  0x6739, 0x17fa,
-  0x673a, 0x17fd,
-  0x673b, 0x17fc,
-  0x673c, 0x17ff,
-  0x673d, 0x03df,
-  0x673e, 0x17f9,
-  0x673f, 0x17fe,
-  0x6744, 0x401b,
-  0x6745, 0x18a3,
-  0x6746, 0x04c5,
-  0x6747, 0x18a4,
-  0x6748, 0x18a8,
-  0x6749, 0x04c4,
-  0x674b, 0x18ac,
-  0x674c, 0x18a7,
-  0x674d, 0x18aa,
-  0x674e, 0x04bd,
-  0x6753, 0x04c7,
-  0x6755, 0x18a6,
-  0x6756, 0x04c2,
-  0x6757, 0x04c8,
-  0x6759, 0x18a5,
-  0x675a, 0x18ab,
-  0x675c, 0x04c1,
-  0x675d, 0x18a9,
-  0x675e, 0x04c3,
-  0x675f, 0x04bc,
-  0x6760, 0x04c6,
-  0x6761, 0x3d66,
-  0x6762, 0x41cb,
-  0x6767, 0x41ca,
-  0x676a, 0x0618,
-  0x676c, 0x19b4,
-  0x676d, 0x0604,
-  0x676f, 0x060e,
-  0x6771, 0x0607,
-  0x6772, 0x0619,
-  0x6773, 0x0609,
-  0x6774, 0x19bc,
-  0x6775, 0x0614,
-  0x6776, 0x19b7,
-  0x6777, 0x060a,
-  0x6778, 0x19c6,
-  0x677a, 0x19bf,
-  0x677b, 0x19b8,
-  0x677c, 0x0617,
-  0x677d, 0x19c4,
-  0x677e, 0x0612,
-  0x677f, 0x0610,
-  0x6781, 0x19c5,
-  0x6783, 0x19c3,
-  0x6784, 0x19bb,
-  0x6785, 0x19b3,
-  0x6786, 0x19ba,
-  0x6787, 0x060b,
-  0x6789, 0x0611,
-  0x678b, 0x0605,
-  0x678c, 0x19be,
-  0x678d, 0x19bd,
-  0x678e, 0x19b5,
-  0x678f, 0x46c1,
-  0x6790, 0x0613,
-  0x6791, 0x19c1,
-  0x6792, 0x19b6,
-  0x6793, 0x0616,
-  0x6794, 0x19c8,
-  0x6795, 0x0606,
-  0x6797, 0x060d,
-  0x6798, 0x19b9,
-  0x6799, 0x19c2,
-  0x679a, 0x0615,
-  0x679c, 0x0608,
-  0x679d, 0x060c,
-  0x679f, 0x19c0,
-  0x67a0, 0x3d7a,
-  0x67a4, 0x4651,
-  0x67ac, 0x41e3,
-  0x67ae, 0x1b34,
-  0x67af, 0x0757,
-  0x67b0, 0x0764,
-  0x67b1, 0x41f4,
-  0x67b2, 0x1b2f,
-  0x67b3, 0x1b25,
-  0x67b4, 0x075d,
-  0x67b5, 0x1b23,
-  0x67b6, 0x0756,
-  0x67b7, 0x1b1e,
-  0x67b8, 0x0760,
-  0x67b9, 0x1b2b,
-  0x67ba, 0x1b18,
-  0x67bb, 0x1b1a,
-  0x67bf, 0x37fa,
-  0x67c0, 0x1b1d,
-  0x67c1, 0x1b15,
-  0x67c2, 0x1b2a,
-  0x67c3, 0x1b3a,
-  0x67c4, 0x075b,
-  0x67c5, 0x1b1f,
-  0x67c6, 0x1b31,
-  0x67c8, 0x1b17,
-  0x67c9, 0x1b38,
-  0x67cb, 0x1b3c,
-  0x67cc, 0x1b33,
-  0x67cd, 0x1b24,
-  0x67ce, 0x1b2c,
-  0x67cf, 0x0761,
-  0x67d0, 0x0754,
-  0x67d1, 0x075c,
-  0x67d2, 0x0768,
-  0x67d3, 0x0751,
-  0x67d4, 0x0753,
-  0x67d6, 0x3b58,
-  0x67d7, 0x41ce,
-  0x67d8, 0x1b1c,
-  0x67d9, 0x0765,
-  0x67da, 0x075e,
-  0x67db, 0x1b36,
-  0x67dc, 0x1b19,
-  0x67dd, 0x0767,
-  0x67de, 0x0762,
-  0x67df, 0x1b22,
-  0x67e2, 0x0766,
-  0x67e3, 0x1b29,
-  0x67e4, 0x1b21,
-  0x67e5, 0x075f,
-  0x67e6, 0x1b35,
-  0x67e7, 0x1b2d,
-  0x67e9, 0x0759,
-  0x67ea, 0x1b3b,
-  0x67eb, 0x1b20,
-  0x67ec, 0x0755,
-  0x67ed, 0x1b32,
-  0x67ee, 0x1b28,
-  0x67ef, 0x075a,
-  0x67f0, 0x1b2e,
-  0x67f1, 0x0752,
-  0x67f2, 0x1b16,
-  0x67f3, 0x0763,
-  0x67f4, 0x08f5,
-  0x67f5, 0x0758,
-  0x67f6, 0x1b27,
-  0x67f7, 0x1b26,
-  0x67f8, 0x1b1b,
-  0x67f9, 0x3996,
-  0x67fa, 0x1b37,
-  0x67fc, 0x1b30,
-  0x67fe, 0x4555,
-  0x67ff, 0x0750,
-  0x6800, 0x43c7,
-  0x6801, 0x41d3,
-  0x6802, 0x3fc8,
-  0x6803, 0x3d6a,
-  0x6804, 0x4556,
-  0x680d, 0x4281,
-  0x6810, 0x399c,
-  0x6812, 0x1cdd,
-  0x6813, 0x08fc,
-  0x6814, 0x1cde,
-  0x6816, 0x1cd2,
-  0x6817, 0x08f1,
-  0x6818, 0x08fd,
-  0x681a, 0x1ccb,
-  0x681b, 0x4072,
-  0x681c, 0x1cd4,
-  0x681d, 0x1cdc,
-  0x681e, 0x46c2,
-  0x681f, 0x1cca,
-  0x6820, 0x1ce5,
-  0x6821, 0x08e7,
-  0x6822, 0x41d0,
-  0x6825, 0x1ce4,
-  0x6826, 0x1cdf,
-  0x6828, 0x1ce0,
-  0x6829, 0x08ef,
-  0x682a, 0x08fa,
-  0x682b, 0x1cd6,
-  0x682d, 0x1cd7,
-  0x682e, 0x1ce1,
-  0x682f, 0x1cd8,
-  0x6831, 0x1cd3,
-  0x6832, 0x1ccd,
-  0x6834, 0x1cdb,
-  0x6835, 0x1cd5,
-  0x6836, 0x3e2e,
-  0x6837, 0x421d,
-  0x6838, 0x08e8,
-  0x6839, 0x08ec,
-  0x683a, 0x1ce3,
-  0x683b, 0x1ccf,
-  0x683c, 0x08f8,
-  0x683d, 0x08f4,
-  0x683e, 0x4147,
-  0x6840, 0x08f7,
-  0x6841, 0x08fe,
-  0x6842, 0x08ed,
-  0x6843, 0x08f9,
-  0x6844, 0x1cda,
-  0x6845, 0x08fb,
-  0x6846, 0x08ea,
-  0x6847, 0x3beb,
-  0x6848, 0x08e9,
-  0x6849, 0x1ccc,
-  0x684a, 0x4653,
-  0x684b, 0x1cd0,
-  0x684c, 0x08f2,
-  0x684d, 0x1ce2,
-  0x684e, 0x1cd9,
-  0x684f, 0x1cd1,
-  0x6850, 0x08f6,
-  0x6851, 0x08f3,
-  0x6853, 0x08eb,
-  0x6854, 0x08ee,
-  0x6855, 0x3d90,
-  0x6856, 0x3814,
-  0x685d, 0x41d6,
-  0x6865, 0x4557,
-  0x686b, 0x1f29,
-  0x686d, 0x1f19,
-  0x686f, 0x1f1e,
-  0x6871, 0x1f2d,
-  0x6872, 0x1f2a,
-  0x6874, 0x1f23,
-  0x6875, 0x1f22,
-  0x6876, 0x0ad7,
-  0x6877, 0x1f26,
-  0x6878, 0x1f35,
-  0x6879, 0x1f15,
-  0x687b, 0x1f36,
-  0x687c, 0x1f28,
-  0x687d, 0x1f3a,
-  0x687e, 0x1f2e,
-  0x687f, 0x0ad6,
-  0x6880, 0x1f2c,
-  0x6881, 0x0ad1,
-  0x6882, 0x0ae6,
-  0x6883, 0x0adc,
-  0x6884, 0x4654,
-  0x6885, 0x0ae0,
-  0x6886, 0x0adf,
-  0x6887, 0x1f16,
-  0x6888, 0x46b7,
-  0x6889, 0x1f33,
-  0x688a, 0x1f39,
-  0x688b, 0x1f31,
-  0x688c, 0x1f38,
-  0x688f, 0x1f25,
-  0x6890, 0x1f17,
-  0x6891, 0x1f37,
-  0x6892, 0x1f27,
-  0x6893, 0x0ad4,
-  0x6894, 0x0ae1,
-  0x6896, 0x1f30,
-  0x6897, 0x0ada,
-  0x6898, 0x3aaa,
-  0x689b, 0x1f2f,
-  0x689c, 0x1f18,
-  0x689d, 0x0ae2,
-  0x689f, 0x0ae4,
-  0x68a0, 0x1f32,
-  0x68a1, 0x0ae5,
-  0x68a2, 0x0ad3,
-  0x68a3, 0x1f1f,
-  0x68a4, 0x1f34,
-  0x68a6, 0x40e4,
-  0x68a7, 0x0ad9,
-  0x68a8, 0x0ae3,
-  0x68a9, 0x1f21,
-  0x68aa, 0x1f2b,
-  0x68ab, 0x1f1c,
-  0x68ac, 0x1f20,
-  0x68ad, 0x0ade,
-  0x68ae, 0x1f1b,
-  0x68af, 0x0ad2,
-  0x68b0, 0x0adb,
-  0x68b1, 0x0ad8,
-  0x68b2, 0x1f24,
-  0x68b3, 0x08f0,
-  0x68b4, 0x2198,
-  0x68b5, 0x0ad5,
-  0x68b6, 0x3a9e,
-  0x68b9, 0x3d14,
-  0x68bd, 0x427c,
-  0x68c3, 0x41dc,
-  0x68c4, 0x0add,
-  0x68c5, 0x3c2e,
-  0x68c6, 0x219b,
-  0x68c7, 0x21b1,
-  0x68c8, 0x21a6,
-  0x68c9, 0x0c97,
-  0x68ca, 0x42eb,
-  0x68cb, 0x0c92,
-  0x68cc, 0x2195,
-  0x68cd, 0x0c93,
-  0x68ce, 0x21a5,
-  0x68d0, 0x219e,
-  0x68d1, 0x21ab,
-  0x68d2, 0x0c8f,
-  0x68d3, 0x2183,
-  0x68d4, 0x21ad,
-  0x68d5, 0x0c85,
-  0x68d6, 0x218b,
-  0x68d7, 0x0c88,
-  0x68d8, 0x0c87,
-  0x68da, 0x0c98,
-  0x68dc, 0x2185,
-  0x68dd, 0x21a7,
-  0x68df, 0x0c8a,
-  0x68e0, 0x0c86,
-  0x68e1, 0x2193,
-  0x68e3, 0x0c91,
-  0x68e4, 0x218e,
-  0x68e6, 0x21a9,
-  0x68e7, 0x0c8d,
-  0x68e8, 0x21a1,
-  0x68e9, 0x21ae,
-  0x68ea, 0x2188,
-  0x68eb, 0x218d,
-  0x68ec, 0x2187,
-  0x68ee, 0x0c8c,
-  0x68ef, 0x219a,
-  0x68f0, 0x242b,
-  0x68f1, 0x2189,
-  0x68f2, 0x0c90,
-  0x68f3, 0x2192,
-  0x68f4, 0x21aa,
-  0x68f5, 0x0c8b,
-  0x68f6, 0x218f,
-  0x68f7, 0x218c,
-  0x68f8, 0x219d,
-  0x68f9, 0x0c8e,
-  0x68fa, 0x0c84,
-  0x68fb, 0x0c9a,
-  0x68fc, 0x21a0,
-  0x68fd, 0x219f,
-  0x6900, 0x41df,
-  0x6901, 0x41de,
-  0x6902, 0x42fb,
-  0x6903, 0x429c,
-  0x6904, 0x2184,
-  0x6905, 0x0c89,
-  0x6906, 0x21ac,
-  0x6907, 0x2194,
-  0x6908, 0x2196,
-  0x6909, 0x4658,
-  0x690a, 0x21a3,
-  0x690b, 0x21a2,
-  0x690c, 0x2182,
-  0x690d, 0x0c94,
-  0x690e, 0x0c96,
-  0x690f, 0x218a,
-  0x6910, 0x2191,
-  0x6911, 0x2199,
-  0x6912, 0x0c95,
-  0x6913, 0x2190,
-  0x6914, 0x219c,
-  0x6915, 0x21af,
-  0x6917, 0x21a4,
-  0x6918, 0x3da2,
-  0x691a, 0x3d80,
-  0x691b, 0x37bd,
-  0x6925, 0x21b0,
-  0x692a, 0x2186,
-  0x692c, 0x3f38,
-  0x692f, 0x243f,
-  0x6930, 0x0e3e,
-  0x6932, 0x243d,
-  0x6933, 0x2428,
-  0x6934, 0x242d,
-  0x6935, 0x2426,
-  0x6936, 0x41e7,
-  0x6937, 0x2439,
-  0x6938, 0x2418,
-  0x6939, 0x241f,
-  0x693b, 0x2437,
-  0x693c, 0x2441,
-  0x693d, 0x2429,
-  0x693e, 0x4056,
-  0x693f, 0x241c,
-  0x6940, 0x242f,
-  0x6941, 0x2434,
-  0x6942, 0x2420,
-  0x6943, 0x4659,
-  0x6944, 0x2431,
-  0x6945, 0x241d,
-  0x6946, 0x456f,
-  0x6948, 0x2424,
-  0x694a, 0x0e40,
-  0x694b, 0x2438,
-  0x694c, 0x2436,
-  0x694e, 0x2419,
-  0x694f, 0x243b,
-  0x6951, 0x243c,
-  0x6952, 0x243e,
-  0x6953, 0x0e44,
-  0x6954, 0x0e3c,
-  0x6955, 0x3d86,
-  0x6956, 0x1f1d,
-  0x6957, 0x2421,
-  0x6958, 0x2433,
-  0x6959, 0x2422,
-  0x695a, 0x0e39,
-  0x695b, 0x0e49,
-  0x695c, 0x243a,
-  0x695d, 0x0e47,
-  0x695e, 0x0e43,
-  0x695f, 0x2417,
-  0x6960, 0x0e3b,
-  0x6961, 0x41e4,
-  0x6962, 0x241a,
-  0x6963, 0x0e48,
-  0x6964, 0x465b,
-  0x6965, 0x242a,
-  0x6966, 0x2416,
-  0x6967, 0x3d15,
-  0x6968, 0x0e41,
-  0x6969, 0x242e,
-  0x696a, 0x241e,
-  0x696b, 0x0e42,
-  0x696c, 0x2427,
-  0x696d, 0x0e38,
-  0x696e, 0x0c99,
-  0x696f, 0x2430,
-  0x6970, 0x2197,
-  0x6971, 0x241b,
-  0x6972, 0x3a6d,
-  0x6973, 0x41db,
-  0x6974, 0x2435,
-  0x6975, 0x0e3d,
-  0x6976, 0x2432,
-  0x6977, 0x0e3a,
-  0x6978, 0x242c,
-  0x6979, 0x0e45,
-  0x697a, 0x2423,
-  0x697b, 0x2440,
-  0x6980, 0x3f3e,
-  0x6982, 0x0e3f,
-  0x6983, 0x24af,
-  0x6985, 0x465d,
-  0x6986, 0x0e46,
-  0x698a, 0x3d74,
-  0x698d, 0x26c9,
-  0x698e, 0x26c7,
-  0x6990, 0x26dd,
-  0x6991, 0x26c5,
-  0x6993, 0x26d7,
-  0x6994, 0x0e37,
-  0x6995, 0x0ff0,
-  0x6996, 0x26c1,
-  0x6997, 0x26dc,
-  0x6998, 0x41e8,
-  0x6999, 0x26c6,
-  0x699a, 0x26d4,
-  0x699b, 0x0ff5,
-  0x699c, 0x0fee,
-  0x699e, 0x26da,
-  0x699f, 0x465c,
-  0x69a0, 0x26bf,
-  0x69a1, 0x26d9,
-  0x69a2, 0x3730,
-  0x69a3, 0x1000,
-  0x69a4, 0x26d0,
-  0x69a5, 0x26e0,
-  0x69a6, 0x0ffe,
-  0x69a7, 0x26c8,
-  0x69a8, 0x0fef,
-  0x69a9, 0x26ca,
-  0x69aa, 0x26d8,
-  0x69ab, 0x0ff8,
-  0x69ac, 0x26c3,
-  0x69ad, 0x0ffc,
-  0x69ae, 0x0ff2,
-  0x69af, 0x26cc,
-  0x69b0, 0x26c2,
-  0x69b1, 0x26bc,
-  0x69b2, 0x3ff6,
-  0x69b3, 0x26d6,
-  0x69b4, 0x0ff9,
-  0x69b5, 0x26df,
-  0x69b6, 0x26bd,
-  0x69b7, 0x0ff6,
-  0x69b9, 0x26d2,
-  0x69bb, 0x0ff7,
-  0x69bc, 0x26c4,
-  0x69bd, 0x26cf,
-  0x69be, 0x26cb,
-  0x69bf, 0x26cd,
-  0x69c0, 0x3f5d,
-  0x69c1, 0x0ff1,
-  0x69c2, 0x26de,
-  0x69c3, 0x0fff,
-  0x69c4, 0x26ce,
-  0x69c6, 0x26e1,
-  0x69c9, 0x26be,
-  0x69ca, 0x26d3,
-  0x69cb, 0x0ff4,
-  0x69cc, 0x0ffd,
-  0x69cd, 0x0ffb,
-  0x69ce, 0x26c0,
-  0x69cf, 0x26d5,
-  0x69d0, 0x0ffa,
-  0x69d1, 0x39ef,
-  0x69d3, 0x0ff3,
-  0x69d4, 0x26d1,
-  0x69d5, 0x3e3c,
-  0x69d6, 0x465e,
-  0x69d9, 0x26db,
-  0x69e1, 0x41d8,
-  0x69e2, 0x2909,
-  0x69e4, 0x2905,
-  0x69e5, 0x2901,
-  0x69e6, 0x2915,
-  0x69e7, 0x2912,
-  0x69e8, 0x1177,
-  0x69e9, 0x3d91,
-  0x69eb, 0x2919,
-  0x69ec, 0x2908,
-  0x69ed, 0x1182,
-  0x69ee, 0x290f,
-  0x69f1, 0x2904,
-  0x69f2, 0x290e,
-  0x69f3, 0x117f,
-  0x69f4, 0x2922,
-  0x69f6, 0x291f,
-  0x69f7, 0x2911,
-  0x69f8, 0x2902,
-  0x69f9, 0x41ed,
-  0x69fa, 0x41c7,
-  0x69fb, 0x2916,
-  0x69fc, 0x2918,
-  0x69fd, 0x117b,
-  0x69fe, 0x290c,
-  0x69ff, 0x2907,
-  0x6a00, 0x28fe,
-  0x6a01, 0x1178,
-  0x6a02, 0x1180,
-  0x6a03, 0x3e29,
-  0x6a04, 0x291b,
-  0x6a05, 0x1181,
-  0x6a06, 0x28ff,
-  0x6a07, 0x2921,
-  0x6a08, 0x2914,
-  0x6a09, 0x291a,
-  0x6a0a, 0x117e,
-  0x6a0b, 0x41d9,
-  0x6a0c, 0x3d50,
-  0x6a0d, 0x2917,
-  0x6a0f, 0x291e,
-  0x6a11, 0x1183,
-  0x6a13, 0x117d,
-  0x6a14, 0x2910,
-  0x6a15, 0x2903,
-  0x6a16, 0x2923,
-  0x6a17, 0x2900,
-  0x6a18, 0x291c,
-  0x6a19, 0x117a,
-  0x6a1a, 0x3d1e,
-  0x6a1b, 0x290a,
-  0x6a1c, 0x3b68,
-  0x6a1d, 0x290b,
-  0x6a1e, 0x1179,
-  0x6a1f, 0x1176,
-  0x6a20, 0x2906,
-  0x6a21, 0x117c,
-  0x6a23, 0x1175,
-  0x6a25, 0x291d,
-  0x6a26, 0x2920,
-  0x6a27, 0x290d,
-  0x6a28, 0x2b74,
-  0x6a2b, 0x3d42,
-  0x6a2c, 0x42ab,
-  0x6a2d, 0x3b1f,
-  0x6a32, 0x2b6c,
-  0x6a33, 0x3aa4,
-  0x6a34, 0x2b68,
-  0x6a35, 0x12d9,
-  0x6a38, 0x12ce,
-  0x6a39, 0x12d3,
-  0x6a3a, 0x12cf,
-  0x6a3b, 0x2b76,
-  0x6a3c, 0x2b81,
-  0x6a3d, 0x12cd,
-  0x6a3e, 0x2b6e,
-  0x6a3f, 0x2b77,
-  0x6a40, 0x2913,
-  0x6a41, 0x2b78,
-  0x6a44, 0x12d4,
-  0x6a45, 0x41f0,
-  0x6a46, 0x2b87,
-  0x6a47, 0x12d8,
-  0x6a48, 0x12db,
-  0x6a49, 0x2b6a,
-  0x6a4b, 0x12d7,
-  0x6a4c, 0x3aab,
-  0x6a4d, 0x2b85,
-  0x6a4f, 0x2b7c,
-  0x6a50, 0x2b7b,
-  0x6a51, 0x2b73,
-  0x6a52, 0x3aa5,
-  0x6a53, 0x37ac,
-  0x6a54, 0x2b7d,
-  0x6a55, 0x2b84,
-  0x6a56, 0x2b83,
-  0x6a57, 0x37da,
-  0x6a58, 0x12d2,
-  0x6a59, 0x12d0,
-  0x6a5a, 0x2b75,
-  0x6a5b, 0x2b72,
-  0x6a5d, 0x2b6f,
-  0x6a5e, 0x2b82,
-  0x6a5f, 0x12da,
-  0x6a60, 0x2b80,
-  0x6a61, 0x12d6,
-  0x6a62, 0x12d5,
-  0x6a64, 0x2b7a,
-  0x6a65, 0x4660,
-  0x6a66, 0x2b69,
-  0x6a67, 0x2b6b,
-  0x6a68, 0x2b6d,
-  0x6a69, 0x2b7f,
-  0x6a6a, 0x2b79,
-  0x6a6b, 0x12d1,
-  0x6a6d, 0x2b70,
-  0x6a6f, 0x2b7e,
-  0x6a71, 0x4662,
-  0x6a74, 0x4661,
-  0x6a76, 0x2b71,
-  0x6a7a, 0x3aad,
-  0x6a7e, 0x13ec,
-  0x6a7f, 0x2d84,
-  0x6a80, 0x13e5,
-  0x6a81, 0x2d75,
-  0x6a82, 0x4663,
-  0x6a83, 0x2d80,
-  0x6a84, 0x13e7,
-  0x6a85, 0x2d87,
-  0x6a87, 0x2d7c,
-  0x6a89, 0x2d77,
-  0x6a8a, 0x4136,
-  0x6a8c, 0x2d88,
-  0x6a8d, 0x2d73,
-  0x6a8e, 0x2d7e,
-  0x6a8f, 0x3c1b,
-  0x6a90, 0x13ee,
-  0x6a91, 0x2d83,
-  0x6a92, 0x2d89,
-  0x6a93, 0x2d7d,
-  0x6a94, 0x13e6,
-  0x6a95, 0x2d7f,
-  0x6a96, 0x2d74,
-  0x6a97, 0x13ed,
-  0x6a99, 0x4665,
-  0x6a9a, 0x2d86,
-  0x6a9b, 0x2d79,
-  0x6a9c, 0x13e9,
-  0x6a9d, 0x41f2,
-  0x6a9e, 0x2d7b,
-  0x6a9f, 0x2d78,
-  0x6aa0, 0x13ef,
-  0x6aa1, 0x2d7a,
-  0x6aa2, 0x13e8,
-  0x6aa3, 0x13eb,
-  0x6aa4, 0x2d82,
-  0x6aa5, 0x2d76,
-  0x6aa6, 0x2d85,
-  0x6aa7, 0x37e3,
-  0x6aa8, 0x2d81,
-  0x6aab, 0x4667,
-  0x6aac, 0x14dd,
-  0x6aad, 0x2f3e,
-  0x6aae, 0x14e2,
-  0x6ab1, 0x3e53,
-  0x6ab2, 0x3b4b,
-  0x6ab3, 0x14dc,
-  0x6ab4, 0x2f3d,
-  0x6ab5, 0x4668,
-  0x6ab6, 0x2f3a,
-  0x6ab8, 0x14e0,
-  0x6ab9, 0x2f35,
-  0x6aba, 0x2f39,
-  0x6abb, 0x14df,
-  0x6abd, 0x2f36,
-  0x6abe, 0x3aa1,
-  0x6ac2, 0x14e1,
-  0x6ac3, 0x14de,
-  0x6ac5, 0x2f34,
-  0x6ac6, 0x2f38,
-  0x6ac7, 0x2f3c,
-  0x6ac8, 0x41f5,
-  0x6ac9, 0x3aa6,
-  0x6aca, 0x3f4c,
-  0x6acb, 0x309f,
-  0x6acc, 0x309c,
-  0x6acd, 0x30a5,
-  0x6acf, 0x30a4,
-  0x6ad0, 0x30a2,
-  0x6ad1, 0x309d,
-  0x6ad3, 0x1589,
-  0x6ad4, 0x4669,
-  0x6ad8, 0x3caa,
-  0x6ad9, 0x309e,
-  0x6ada, 0x1588,
-  0x6adb, 0x13ea,
-  0x6adc, 0x30a1,
-  0x6add, 0x1587,
-  0x6ade, 0x30a6,
-  0x6adf, 0x30a0,
-  0x6ae0, 0x309b,
-  0x6ae1, 0x2f37,
-  0x6ae5, 0x1586,
-  0x6ae7, 0x309a,
-  0x6ae8, 0x31df,
-  0x6aea, 0x31de,
-  0x6aeb, 0x30a3,
-  0x6aec, 0x161b,
-  0x6aee, 0x31e2,
-  0x6af0, 0x31dd,
-  0x6af1, 0x31e1,
-  0x6af3, 0x31dc,
-  0x6af6, 0x466a,
-  0x6af8, 0x32d6,
-  0x6af9, 0x31e0,
-  0x6afa, 0x1678,
-  0x6afb, 0x1676,
-  0x6afc, 0x32d4,
-  0x6b00, 0x32d7,
-  0x6b02, 0x32d3,
-  0x6b03, 0x32d5,
-  0x6b04, 0x1677,
-  0x6b05, 0x3aa7,
-  0x6b08, 0x3386,
-  0x6b0a, 0x16c6,
-  0x6b0b, 0x3385,
-  0x6b0f, 0x3420,
-  0x6b10, 0x16fd,
-  0x6b11, 0x341e,
-  0x6b13, 0x3487,
-  0x6b16, 0x1743,
-  0x6b17, 0x34ce,
-  0x6b18, 0x34cc,
-  0x6b1a, 0x34cf,
-  0x6b1d, 0x41f8,
-  0x6b1e, 0x3534,
-  0x6b20, 0x02de,
-  0x6b21, 0x03e3,
-  0x6b23, 0x061a,
-  0x6b25, 0x19c9,
-  0x6b28, 0x1b3d,
-  0x6b2c, 0x1ce6,
-  0x6b2d, 0x1ce8,
-  0x6b2f, 0x1ce7,
-  0x6b31, 0x1ce9,
-  0x6b32, 0x0ae7,
-  0x6b33, 0x1f3c,
-  0x6b34, 0x1cea,
-  0x6b35, 0x41fb,
-  0x6b36, 0x1f3b,
-  0x6b37, 0x1f3d,
-  0x6b39, 0x21b2,
-  0x6b3a, 0x0c9c,
-  0x6b3b, 0x21b3,
-  0x6b3c, 0x21b5,
-  0x6b3d, 0x0c9d,
-  0x6b3e, 0x0c9b,
-  0x6b3f, 0x21b4,
-  0x6b41, 0x2447,
-  0x6b42, 0x2445,
-  0x6b43, 0x2444,
-  0x6b45, 0x2443,
-  0x6b46, 0x2442,
-  0x6b47, 0x0e4a,
-  0x6b48, 0x2446,
-  0x6b49, 0x1001,
-  0x6b4a, 0x26e2,
-  0x6b4b, 0x26e4,
-  0x6b4c, 0x1002,
-  0x6b4d, 0x26e3,
-  0x6b4e, 0x1185,
-  0x6b50, 0x1184,
-  0x6b51, 0x2924,
-  0x6b52, 0x3f6e,
-  0x6b54, 0x2b89,
-  0x6b55, 0x2b88,
-  0x6b56, 0x2b8a,
-  0x6b57, 0x3aae,
-  0x6b59, 0x12dc,
-  0x6b5b, 0x2d8a,
-  0x6b5c, 0x13f0,
-  0x6b5e, 0x2f3f,
-  0x6b5f, 0x14e4,
-  0x6b60, 0x30a7,
-  0x6b61, 0x16c7,
-  0x6b62, 0x02df,
-  0x6b63, 0x034d,
-  0x6b64, 0x03e4,
-  0x6b65, 0x04c9,
-  0x6b66, 0x061b,
-  0x6b6a, 0x0769,
-  0x6b6d, 0x1ceb,
-  0x6b6f, 0x4515,
-  0x6b72, 0x0e4b,
-  0x6b74, 0x41fc,
-  0x6b76, 0x29a2,
-  0x6b77, 0x12dd,
-  0x6b78, 0x14e5,
-  0x6b79, 0x02e0,
-  0x6b7a, 0x44ee,
-  0x6b7b, 0x03e5,
-  0x6b7e, 0x19cb,
-  0x6b7f, 0x061d,
-  0x6b80, 0x19ca,
-  0x6b81, 0x466b,
-  0x6b82, 0x1b3e,
-  0x6b83, 0x076a,
-  0x6b84, 0x1b3f,
-  0x6b86, 0x076b,
-  0x6b88, 0x1ced,
-  0x6b89, 0x0900,
-  0x6b8a, 0x08ff,
-  0x6b8c, 0x1f43,
-  0x6b8d, 0x1f41,
-  0x6b8f, 0x1f40,
-  0x6b91, 0x1f3f,
-  0x6b94, 0x21b6,
-  0x6b95, 0x21b9,
-  0x6b96, 0x0c9f,
-  0x6b97, 0x21b7,
-  0x6b98, 0x0c9e,
-  0x6b99, 0x21b8,
-  0x6b9b, 0x2448,
-  0x6b9e, 0x26e5,
-  0x6ba2, 0x2927,
-  0x6ba3, 0x2926,
-  0x6ba4, 0x1186,
-  0x6ba5, 0x2925,
-  0x6ba6, 0x2928,
-  0x6ba7, 0x2b8b,
-  0x6baa, 0x2b8c,
-  0x6bad, 0x2d8b,
-  0x6bae, 0x13f1,
-  0x6baf, 0x14e6,
-  0x6bb0, 0x30a8,
-  0x6bb2, 0x1679,
-  0x6bb3, 0x178a,
-  0x6bb5, 0x076c,
-  0x6bb6, 0x1b40,
-  0x6bb7, 0x0901,
-  0x6bba, 0x0ae8,
-  0x6bbc, 0x0ca0,
-  0x6bbd, 0x21ba,
-  0x6bbf, 0x0e4d,
-  0x6bc0, 0x0e4c,
-  0x6bc1, 0x466c,
-  0x6bc3, 0x26e8,
-  0x6bc5, 0x1187,
-  0x6bc7, 0x2b8f,
-  0x6bc8, 0x2b8e,
-  0x6bc9, 0x2f40,
-  0x6bca, 0x3421,
-  0x6bcb, 0x02e1,
-  0x6bcc, 0x178b,
-  0x6bcd, 0x034e,
-  0x6bcf, 0x04ca,
-  0x6bd0, 0x18ad,
-  0x6bd2, 0x076d,
-  0x6bd3, 0x0e4e,
-  0x6bd4, 0x02e2,
-  0x6bd6, 0x1b41,
-  0x6bd7, 0x076e,
-  0x6bd8, 0x1b42,
-  0x6bda, 0x13f2,
-  0x6bdb, 0x02e3,
-  0x6bdc, 0x4207,
-  0x6bde, 0x19cc,
-  0x6be0, 0x1b43,
-  0x6be1, 0x4205,
-  0x6be2, 0x1cf2,
-  0x6be3, 0x1cf1,
-  0x6be4, 0x1cef,
-  0x6be6, 0x1cee,
-  0x6be7, 0x1cf3,
-  0x6be8, 0x1cf0,
-  0x6bea, 0x466d,
-  0x6beb, 0x0ae9,
-  0x6bef, 0x0ca1,
-  0x6bf0, 0x21bb,
-  0x6bf2, 0x21bc,
-  0x6bf7, 0x244c,
-  0x6bf9, 0x244b,
-  0x6bfa, 0x3f79,
-  0x6bfb, 0x2449,
-  0x6bfd, 0x0e4f,
-  0x6bfe, 0x26ea,
-  0x6bff, 0x292b,
-  0x6c00, 0x292a,
-  0x6c01, 0x2929,
-  0x6c02, 0x292c,
-  0x6c03, 0x2b91,
-  0x6c04, 0x2b90,
-  0x6c05, 0x12de,
-  0x6c06, 0x2b92,
-  0x6c08, 0x13f3,
-  0x6c09, 0x2d8c,
-  0x6c0b, 0x2f41,
-  0x6c0c, 0x30a9,
-  0x6c0d, 0x3388,
-  0x6c0f, 0x02e4,
-  0x6c10, 0x0350,
-  0x6c11, 0x034f,
-  0x6c13, 0x061e,
-  0x6c14, 0x178c,
-  0x6c15, 0x17aa,
-  0x6c16, 0x03e6,
-  0x6c18, 0x1801,
-  0x6c19, 0x18ae,
-  0x6c1b, 0x061f,
-  0x6c1c, 0x38ab,
-  0x6c1d, 0x19cd,
-  0x6c1f, 0x076f,
-  0x6c20, 0x1b44,
-  0x6c23, 0x0902,
-  0x6c24, 0x0906,
-  0x6c25, 0x1cf4,
-  0x6c26, 0x0905,
-  0x6c27, 0x0903,
-  0x6c2a, 0x1f44,
-  0x6c2b, 0x0aeb,
-  0x6c2c, 0x0ca4,
-  0x6c2e, 0x0ca2,
-  0x6c30, 0x21be,
-  0x6c31, 0x3f63,
-  0x6c33, 0x1003,
-  0x6c34, 0x02e5,
-  0x6c35, 0x44ef,
-  0x6c36, 0x17ab,
-  0x6c37, 0x4208,
-  0x6c38, 0x0351,
-  0x6c39, 0x3e05,
-  0x6c3a, 0x44f0,
-  0x6c3b, 0x17ae,
-  0x6c3d, 0x4381,
-  0x6c3e, 0x0354,
-  0x6c3f, 0x17ad,
-  0x6c40, 0x0353,
-  0x6c41, 0x0352,
-  0x6c42, 0x04cb,
-  0x6c43, 0x17ac,
-  0x6c46, 0x1802,
-  0x6c49, 0x408d,
-  0x6c4a, 0x1806,
-  0x6c4b, 0x1808,
-  0x6c4d, 0x03f0,
-  0x6c4f, 0x1805,
-  0x6c50, 0x03ec,
-  0x6c52, 0x1803,
-  0x6c54, 0x1807,
-  0x6c55, 0x03ed,
-  0x6c57, 0x03e8,
-  0x6c58, 0x3bba,
-  0x6c59, 0x03e9,
-  0x6c5a, 0x420c,
-  0x6c5b, 0x03ef,
-  0x6c5c, 0x1804,
-  0x6c5d, 0x03e7,
-  0x6c5e, 0x04cc,
-  0x6c5f, 0x03ea,
-  0x6c61, 0x03ee,
-  0x6c65, 0x18c0,
-  0x6c66, 0x18be,
-  0x6c67, 0x18b1,
-  0x6c68, 0x04d8,
-  0x6c69, 0x18b8,
-  0x6c6a, 0x04d3,
-  0x6c6b, 0x18b2,
-  0x6c6d, 0x18ba,
-  0x6c6e, 0x40ca,
-  0x6c6f, 0x18b7,
-  0x6c70, 0x04d6,
-  0x6c71, 0x18b6,
-  0x6c72, 0x04dd,
-  0x6c73, 0x18bf,
-  0x6c74, 0x04df,
-  0x6c75, 0x466e,
-  0x6c76, 0x04e1,
-  0x6c78, 0x18b0,
-  0x6c79, 0x420e,
-  0x6c7a, 0x04d4,
-  0x6c7b, 0x18c1,
-  0x6c7d, 0x04db,
-  0x6c7e, 0x04de,
-  0x6c7f, 0x37a6,
-  0x6c80, 0x19e4,
-  0x6c81, 0x04ce,
-  0x6c82, 0x04e5,
-  0x6c83, 0x04dc,
-  0x6c84, 0x18b3,
-  0x6c85, 0x04d1,
-  0x6c86, 0x04e0,
-  0x6c87, 0x18bb,
-  0x6c88, 0x04cf,
-  0x6c8a, 0x19e2,
-  0x6c8b, 0x18b4,
-  0x6c8c, 0x04d7,
-  0x6c8d, 0x04e2,
-  0x6c8e, 0x18c2,
-  0x6c8f, 0x18b5,
-  0x6c90, 0x04d5,
-  0x6c92, 0x04da,
-  0x6c93, 0x19ce,
-  0x6c94, 0x04e3,
-  0x6c95, 0x18bc,
-  0x6c96, 0x04d9,
-  0x6c98, 0x04e4,
-  0x6c99, 0x04cd,
-  0x6c9a, 0x18b9,
-  0x6c9b, 0x04d2,
-  0x6c9c, 0x18bd,
-  0x6c9d, 0x19e3,
-  0x6c9f, 0x3889,
-  0x6ca2, 0x3d63,
-  0x6caa, 0x466f,
-  0x6cab, 0x062b,
-  0x6cac, 0x063b,
-  0x6cad, 0x19d5,
-  0x6cae, 0x0632,
-  0x6caf, 0x3cf6,
-  0x6cb0, 0x19ea,
-  0x6cb1, 0x0623,
-  0x6cb2, 0x3ecc,
-  0x6cb3, 0x0626,
-  0x6cb4, 0x19e1,
-  0x6cb6, 0x19d3,
-  0x6cb7, 0x19d7,
-  0x6cb8, 0x062e,
-  0x6cb9, 0x0630,
-  0x6cba, 0x19da,
-  0x6cbb, 0x0637,
-  0x6cbc, 0x0629,
-  0x6cbd, 0x0627,
-  0x6cbf, 0x0636,
-  0x6cc0, 0x19e6,
-  0x6cc1, 0x0631,
-  0x6cc2, 0x19d9,
-  0x6cc3, 0x19db,
-  0x6cc4, 0x062f,
-  0x6cc5, 0x0634,
-  0x6cc6, 0x19dc,
-  0x6cc7, 0x19e9,
-  0x6cc9, 0x0770,
-  0x6cca, 0x063a,
-  0x6ccb, 0x4070,
-  0x6ccc, 0x0624,
-  0x6ccd, 0x19e8,
-  0x6cce, 0x3f91,
-  0x6ccf, 0x19ec,
-  0x6cd0, 0x19d8,
-  0x6cd1, 0x19ee,
-  0x6cd2, 0x19df,
-  0x6cd3, 0x062d,
-  0x6cd4, 0x19d4,
-  0x6cd5, 0x062c,
-  0x6cd6, 0x063e,
-  0x6cd7, 0x0633,
-  0x6cd9, 0x19d2,
-  0x6cda, 0x1b4e,
-  0x6cdb, 0x0639,
-  0x6cdc, 0x063d,
-  0x6cdd, 0x19e0,
-  0x6cde, 0x19e5,
-  0x6cdf, 0x3d57,
-  0x6ce0, 0x063f,
-  0x6ce1, 0x0638,
-  0x6ce2, 0x062a,
-  0x6ce3, 0x0620,
-  0x6ce5, 0x0625,
-  0x6ce7, 0x19d6,
-  0x6ce8, 0x0621,
-  0x6ce9, 0x19ed,
-  0x6cea, 0x3f8d,
-  0x6ceb, 0x19d0,
-  0x6cec, 0x19cf,
-  0x6ced, 0x19dd,
-  0x6cee, 0x19d1,
-  0x6cef, 0x063c,
-  0x6cf0, 0x0907,
-  0x6cf1, 0x0635,
-  0x6cf2, 0x19de,
-  0x6cf3, 0x0622,
-  0x6cf5, 0x077f,
-  0x6cf9, 0x19eb,
-  0x6d00, 0x1b55,
-  0x6d01, 0x1b58,
-  0x6d02, 0x4671,
-  0x6d03, 0x1b5b,
-  0x6d04, 0x1b50,
-  0x6d05, 0x3a19,
-  0x6d06, 0x4672,
-  0x6d07, 0x1b5e,
-  0x6d08, 0x1b61,
-  0x6d09, 0x1b63,
-  0x6d0a, 0x1b4d,
-  0x6d0b, 0x0771,
-  0x6d0c, 0x0776,
-  0x6d0d, 0x1cf9,
-  0x6d0e, 0x0786,
-  0x6d0f, 0x1b5c,
-  0x6d10, 0x1b64,
-  0x6d11, 0x1b54,
-  0x6d12, 0x1b4c,
-  0x6d16, 0x1d14,
-  0x6d17, 0x0779,
-  0x6d18, 0x1b59,
-  0x6d19, 0x1b51,
-  0x6d1a, 0x1b53,
-  0x6d1b, 0x077e,
-  0x6d1d, 0x1b56,
-  0x6d1e, 0x0778,
-  0x6d1f, 0x1b49,
-  0x6d20, 0x1b5f,
-  0x6d22, 0x1b62,
-  0x6d24, 0x3ac3,
-  0x6d25, 0x0775,
-  0x6d26, 0x4673,
-  0x6d27, 0x0781,
-  0x6d28, 0x1b46,
-  0x6d29, 0x0783,
-  0x6d2a, 0x0773,
-  0x6d2b, 0x0787,
-  0x6d2c, 0x1b60,
-  0x6d2d, 0x1b48,
-  0x6d2e, 0x0784,
-  0x6d2f, 0x1d0e,
-  0x6d30, 0x19e7,
-  0x6d31, 0x0777,
-  0x6d32, 0x0772,
-  0x6d33, 0x1b4f,
-  0x6d34, 0x1b47,
-  0x6d35, 0x0785,
-  0x6d36, 0x077d,
-  0x6d37, 0x1b5a,
-  0x6d38, 0x0782,
-  0x6d39, 0x0780,
-  0x6d3a, 0x1b52,
-  0x6d3b, 0x077a,
-  0x6d3c, 0x1b4a,
-  0x6d3d, 0x077b,
-  0x6d3f, 0x1b4b,
-  0x6d40, 0x1b5d,
-  0x6d41, 0x0774,
-  0x6d42, 0x1b57,
-  0x6d4e, 0x4558,
-  0x6d57, 0x3cf3,
-  0x6d58, 0x1cfc,
-  0x6d59, 0x090f,
-  0x6d5a, 0x0914,
-  0x6d5b, 0x409c,
-  0x6d5c, 0x4222,
-  0x6d5e, 0x1d05,
-  0x6d5f, 0x1d0b,
-  0x6d60, 0x1d07,
-  0x6d61, 0x1cfa,
-  0x6d62, 0x1cfd,
-  0x6d63, 0x1cf6,
-  0x6d65, 0x091b,
-  0x6d66, 0x090c,
-  0x6d67, 0x1d06,
-  0x6d68, 0x1d0f,
-  0x6d69, 0x0916,
-  0x6d6a, 0x0908,
-  0x6d6c, 0x0911,
-  0x6d6d, 0x1cfe,
-  0x6d6e, 0x0913,
-  0x6d6f, 0x1cff,
-  0x6d70, 0x1d09,
-  0x6d71, 0x40f5,
-  0x6d72, 0x39d7,
-  0x6d74, 0x0915,
-  0x6d75, 0x1d18,
-  0x6d76, 0x1cf8,
-  0x6d77, 0x090e,
-  0x6d78, 0x090d,
-  0x6d79, 0x0919,
-  0x6d7a, 0x1cf5,
-  0x6d7b, 0x1d16,
-  0x6d7c, 0x1d0a,
-  0x6d7d, 0x1d17,
-  0x6d7e, 0x1d11,
-  0x6d7f, 0x1d03,
-  0x6d80, 0x1d12,
-  0x6d81, 0x4674,
-  0x6d82, 0x1d0c,
-  0x6d83, 0x1d15,
-  0x6d84, 0x1d13,
-  0x6d85, 0x091a,
-  0x6d86, 0x1d04,
-  0x6d87, 0x090b,
-  0x6d88, 0x090a,
-  0x6d89, 0x0912,
-  0x6d8a, 0x0918,
-  0x6d8b, 0x1d10,
-  0x6d8c, 0x0917,
-  0x6d8d, 0x1d01,
-  0x6d8e, 0x0aec,
-  0x6d8f, 0x3de8,
-  0x6d90, 0x1d19,
-  0x6d91, 0x1d00,
-  0x6d92, 0x1cfb,
-  0x6d93, 0x0910,
-  0x6d94, 0x091c,
-  0x6d95, 0x0909,
-  0x6d96, 0x4221,
-  0x6d97, 0x1d08,
-  0x6d98, 0x1d0d,
-  0x6da4, 0x4676,
-  0x6da5, 0x3ab9,
-  0x6daa, 0x0b0e,
-  0x6dab, 0x1f46,
-  0x6dac, 0x1f4a,
-  0x6dae, 0x0afb,
-  0x6daf, 0x0af9,
-  0x6db1, 0x4677,
-  0x6db2, 0x0af0,
-  0x6db3, 0x1f48,
-  0x6db4, 0x1f47,
-  0x6db5, 0x0b04,
-  0x6db7, 0x1f4d,
-  0x6db8, 0x0afe,
-  0x6db9, 0x3ffb,
-  0x6dba, 0x1f5f,
-  0x6dbb, 0x1f6b,
-  0x6dbc, 0x0aed,
-  0x6dbd, 0x1f5c,
-  0x6dbe, 0x1f55,
-  0x6dbf, 0x0b10,
-  0x6dc0, 0x1f45,
-  0x6dc2, 0x1f61,
-  0x6dc4, 0x0b0d,
-  0x6dc5, 0x0b01,
-  0x6dc6, 0x0b0c,
-  0x6dc7, 0x0af7,
-  0x6dc8, 0x1f51,
-  0x6dc9, 0x1f63,
-  0x6dca, 0x1f5b,
-  0x6dcb, 0x0af8,
-  0x6dcc, 0x0af2,
-  0x6dcd, 0x1f69,
-  0x6dcf, 0x1f62,
-  0x6dd0, 0x1f64,
-  0x6dd1, 0x0afa,
-  0x6dd2, 0x0b02,
-  0x6dd3, 0x1f66,
-  0x6dd4, 0x1f4f,
-  0x6dd5, 0x1f60,
-  0x6dd6, 0x1f54,
-  0x6dd7, 0x1f68,
-  0x6dd8, 0x0b07,
-  0x6dd9, 0x0aef,
-  0x6dda, 0x0b05,
-  0x6ddb, 0x1f59,
-  0x6ddc, 0x1f57,
-  0x6dde, 0x0afc,
-  0x6ddf, 0x1f53,
-  0x6de0, 0x1f52,
-  0x6de1, 0x0af1,
-  0x6de2, 0x1f4c,
-  0x6de3, 0x1f6a,
-  0x6de4, 0x0af3,
-  0x6de5, 0x1f56,
-  0x6de6, 0x0b11,
-  0x6de8, 0x0b0b,
-  0x6de9, 0x1f4b,
-  0x6dea, 0x0b08,
-  0x6deb, 0x0b06,
-  0x6dec, 0x0b0f,
-  0x6ded, 0x1f5d,
-  0x6dee, 0x0b0a,
-  0x6def, 0x1d02,
-  0x6df0, 0x1f5e,
-  0x6df1, 0x0b09,
-  0x6df2, 0x1f65,
-  0x6df3, 0x0aee,
-  0x6df4, 0x1f5a,
-  0x6df5, 0x0b00,
-  0x6df6, 0x1f4e,
-  0x6df7, 0x0aff,
-  0x6df9, 0x0afd,
-  0x6dfa, 0x0af5,
-  0x6dfb, 0x0af4,
-  0x6dfc, 0x21bf,
-  0x6dfd, 0x1f67,
-  0x6e00, 0x1f50,
-  0x6e02, 0x3cfa,
-  0x6e03, 0x21d4,
-  0x6e04, 0x3abe,
-  0x6e05, 0x0af6,
-  0x6e0a, 0x3ac1,
-  0x6e0f, 0x3cf0,
-  0x6e15, 0x4678,
-  0x6e18, 0x4679,
-  0x6e19, 0x0cc1,
-  0x6e1a, 0x0b03,
-  0x6e1b, 0x0caf,
-  0x6e1c, 0x21ce,
-  0x6e1d, 0x0cbd,
-  0x6e1f, 0x21c2,
-  0x6e20, 0x0cac,
-  0x6e21, 0x0ca8,
-  0x6e22, 0x21e0,
-  0x6e23, 0x0cae,
-  0x6e24, 0x0cb2,
-  0x6e25, 0x0cad,
-  0x6e26, 0x0cb6,
-  0x6e27, 0x21e4,
-  0x6e28, 0x21db,
-  0x6e29, 0x467a,
-  0x6e2a, 0x4302,
-  0x6e2b, 0x21c9,
-  0x6e2c, 0x0cbb,
-  0x6e2d, 0x0cb5,
-  0x6e2e, 0x21d5,
-  0x6e2f, 0x0ca5,
-  0x6e30, 0x21e1,
-  0x6e31, 0x21da,
-  0x6e32, 0x0ca9,
-  0x6e33, 0x21cf,
-  0x6e34, 0x0cb8,
-  0x6e35, 0x21ec,
-  0x6e38, 0x0ca6,
-  0x6e39, 0x21df,
-  0x6e3a, 0x0cba,
-  0x6e3b, 0x21d3,
-  0x6e3c, 0x21c5,
-  0x6e3e, 0x0cbe,
-  0x6e3f, 0x21ca,
-  0x6e40, 0x21d1,
-  0x6e41, 0x21cb,
-  0x6e43, 0x0cbc,
-  0x6e44, 0x0cc4,
-  0x6e45, 0x21c7,
-  0x6e46, 0x21c0,
-  0x6e49, 0x21c3,
-  0x6e4a, 0x0cab,
-  0x6e4b, 0x21d0,
-  0x6e4d, 0x0cb9,
-  0x6e4e, 0x0cc2,
-  0x6e4f, 0x4234,
-  0x6e50, 0x41d1,
-  0x6e51, 0x21d2,
-  0x6e52, 0x21ea,
-  0x6e53, 0x21e2,
-  0x6e54, 0x0ca7,
-  0x6e55, 0x21e8,
-  0x6e56, 0x0cb3,
-  0x6e58, 0x0cb1,
-  0x6e59, 0x40e6,
-  0x6e5a, 0x21ee,
-  0x6e5b, 0x0cb0,
-  0x6e5c, 0x21d8,
-  0x6e5d, 0x21cc,
-  0x6e5e, 0x21d6,
-  0x6e5f, 0x0cc7,
-  0x6e60, 0x21dc,
-  0x6e61, 0x21d9,
-  0x6e62, 0x21c8,
-  0x6e63, 0x0cc3,
-  0x6e64, 0x21e6,
-  0x6e65, 0x21e3,
-  0x6e66, 0x21eb,
-  0x6e67, 0x0caa,
-  0x6e68, 0x21d7,
-  0x6e69, 0x0cc6,
-  0x6e6b, 0x21de,
-  0x6e6e, 0x0cb4,
-  0x6e6f, 0x0cb7,
-  0x6e71, 0x21dd,
-  0x6e72, 0x0cc5,
-  0x6e73, 0x21cd,
-  0x6e74, 0x1f49,
-  0x6e76, 0x39d3,
-  0x6e77, 0x21e7,
-  0x6e78, 0x21e5,
-  0x6e79, 0x21e9,
-  0x6e7c, 0x4223,
-  0x6e86, 0x467b,
-  0x6e88, 0x21c4,
-  0x6e89, 0x0cc0,
-  0x6e8b, 0x3bbf,
-  0x6e8d, 0x246c,
-  0x6e8e, 0x246b,
-  0x6e8f, 0x2451,
-  0x6e90, 0x0e55,
-  0x6e92, 0x246a,
-  0x6e93, 0x2454,
-  0x6e96, 0x0e5f,
-  0x6e97, 0x2473,
-  0x6e98, 0x0e5a,
-  0x6e99, 0x2469,
-  0x6e9a, 0x4581,
-  0x6e9b, 0x244e,
-  0x6e9c, 0x0e60,
-  0x6e9d, 0x0e56,
-  0x6e9e, 0x245d,
-  0x6e9f, 0x2453,
-  0x6ea0, 0x2456,
-  0x6ea1, 0x246e,
-  0x6ea2, 0x0e50,
-  0x6ea3, 0x2475,
-  0x6ea4, 0x246d,
-  0x6ea5, 0x0e59,
-  0x6ea6, 0x2462,
-  0x6ea7, 0x0e64,
-  0x6eaa, 0x0e63,
-  0x6eab, 0x0e5d,
-  0x6eae, 0x2474,
-  0x6eaf, 0x0e51,
-  0x6eb0, 0x2460,
-  0x6eb1, 0x2457,
-  0x6eb2, 0x2464,
-  0x6eb3, 0x2470,
-  0x6eb4, 0x0e65,
-  0x6eb5, 0x41fe,
-  0x6eb6, 0x0e53,
-  0x6eb7, 0x245f,
-  0x6eb8, 0x3e0c,
-  0x6eb9, 0x2458,
-  0x6eba, 0x0e5c,
-  0x6ebb, 0x467d,
-  0x6ebc, 0x0e5b,
-  0x6ebd, 0x245b,
-  0x6ebe, 0x2465,
-  0x6ebf, 0x246f,
-  0x6ec0, 0x2452,
-  0x6ec1, 0x245c,
-  0x6ec2, 0x0e54,
-  0x6ec3, 0x2466,
-  0x6ec4, 0x0e61,
-  0x6ec5, 0x0e58,
-  0x6ec6, 0x2459,
-  0x6ec7, 0x0e57,
-  0x6ec8, 0x2450,
-  0x6ec9, 0x245e,
-  0x6eca, 0x2472,
-  0x6ecb, 0x0cbf,
-  0x6ecc, 0x101f,
-  0x6ecd, 0x2461,
-  0x6ece, 0x26eb,
-  0x6ecf, 0x2463,
-  0x6ed0, 0x2471,
-  0x6ed1, 0x0e5e,
-  0x6ed2, 0x245a,
-  0x6ed3, 0x0e52,
-  0x6ed4, 0x0e62,
-  0x6ed5, 0x119a,
-  0x6ed6, 0x244f,
-  0x6ed8, 0x2468,
-  0x6ed9, 0x4069,
-  0x6eda, 0x467f,
-  0x6edb, 0x402f,
-  0x6edc, 0x2467,
-  0x6edd, 0x4538,
-  0x6ee2, 0x467e,
-  0x6ee8, 0x4681,
-  0x6eeb, 0x2707,
-  0x6eec, 0x101c,
-  0x6eed, 0x26fc,
-  0x6eee, 0x2701,
-  0x6eef, 0x1011,
-  0x6ef1, 0x26ed,
-  0x6ef2, 0x101e,
-  0x6ef4, 0x1008,
-  0x6ef5, 0x26ec,
-  0x6ef6, 0x270d,
-  0x6ef7, 0x1020,
-  0x6ef8, 0x26f0,
-  0x6ef9, 0x2700,
-  0x6efa, 0x423b,
-  0x6efb, 0x26f2,
-  0x6efc, 0x2710,
-  0x6efd, 0x270c,
-  0x6efe, 0x1006,
-  0x6eff, 0x1010,
-  0x6f00, 0x2946,
-  0x6f01, 0x101d,
-  0x6f02, 0x100e,
-  0x6f03, 0x26ee,
-  0x6f04, 0x4224,
-  0x6f05, 0x270b,
-  0x6f06, 0x1012,
-  0x6f07, 0x2708,
-  0x6f08, 0x2715,
-  0x6f09, 0x26f4,
-  0x6f0a, 0x26fd,
-  0x6f0b, 0x3aba,
-  0x6f0c, 0x3cfb,
-  0x6f0d, 0x2713,
-  0x6f0e, 0x2709,
-  0x6f0f, 0x100d,
-  0x6f12, 0x26fb,
-  0x6f13, 0x1007,
-  0x6f14, 0x1005,
-  0x6f15, 0x1017,
-  0x6f16, 0x41a0,
-  0x6f17, 0x46ce,
-  0x6f18, 0x26f9,
-  0x6f19, 0x26f6,
-  0x6f1c, 0x270f,
-  0x6f1e, 0x2714,
-  0x6f1f, 0x2712,
-  0x6f20, 0x100b,
-  0x6f21, 0x2716,
-  0x6f22, 0x100f,
-  0x6f23, 0x1016,
-  0x6f24, 0x4683,
-  0x6f25, 0x26ef,
-  0x6f26, 0x292e,
-  0x6f27, 0x26f8,
-  0x6f29, 0x1009,
-  0x6f2a, 0x101b,
-  0x6f2b, 0x1018,
-  0x6f2c, 0x100c,
-  0x6f2d, 0x2702,
-  0x6f2e, 0x26f3,
-  0x6f2f, 0x1019,
-  0x6f30, 0x2704,
-  0x6f31, 0x1013,
-  0x6f32, 0x1015,
-  0x6f33, 0x1004,
-  0x6f34, 0x4684,
-  0x6f35, 0x2706,
-  0x6f36, 0x26fe,
-  0x6f37, 0x26f1,
-  0x6f38, 0x1014,
-  0x6f39, 0x270e,
-  0x6f3a, 0x2711,
-  0x6f3b, 0x26fa,
-  0x6f3c, 0x2705,
-  0x6f3d, 0x4282,
-  0x6f3e, 0x100a,
-  0x6f3f, 0x1189,
-  0x6f40, 0x2703,
-  0x6f41, 0x292d,
-  0x6f43, 0x270a,
-  0x6f44, 0x4240,
-  0x6f4e, 0x26f5,
-  0x6f4f, 0x2937,
-  0x6f50, 0x2941,
-  0x6f51, 0x118c,
-  0x6f52, 0x2940,
-  0x6f53, 0x294c,
-  0x6f54, 0x118e,
-  0x6f55, 0x293e,
-  0x6f56, 0x3e52,
-  0x6f57, 0x2942,
-  0x6f58, 0x1199,
-  0x6f5a, 0x2939,
-  0x6f5b, 0x1191,
-  0x6f5c, 0x4241,
-  0x6f5d, 0x2945,
-  0x6f5e, 0x2b9a,
-  0x6f5f, 0x119d,
-  0x6f60, 0x119c,
-  0x6f61, 0x2947,
-  0x6f62, 0x2936,
-  0x6f63, 0x2951,
-  0x6f64, 0x1197,
-  0x6f66, 0x118d,
-  0x6f67, 0x294a,
-  0x6f69, 0x294e,
-  0x6f6a, 0x2953,
-  0x6f6b, 0x2948,
-  0x6f6c, 0x293c,
-  0x6f6d, 0x1190,
-  0x6f6e, 0x1193,
-  0x6f6f, 0x119b,
-  0x6f70, 0x1196,
-  0x6f72, 0x293f,
-  0x6f73, 0x26ff,
-  0x6f74, 0x4243,
-  0x6f76, 0x293b,
-  0x6f77, 0x2952,
-  0x6f78, 0x1192,
-  0x6f79, 0x3bbe,
-  0x6f7a, 0x1195,
-  0x6f7b, 0x2954,
-  0x6f7c, 0x118a,
-  0x6f7d, 0x2949,
-  0x6f7e, 0x292f,
-  0x6f7f, 0x294f,
-  0x6f80, 0x13fc,
-  0x6f81, 0x4687,
-  0x6f82, 0x293d,
-  0x6f84, 0x118b,
-  0x6f85, 0x2938,
-  0x6f86, 0x118f,
-  0x6f87, 0x2930,
-  0x6f88, 0x101a,
-  0x6f89, 0x2934,
-  0x6f8a, 0x4195,
-  0x6f8b, 0x294d,
-  0x6f8c, 0x2935,
-  0x6f8d, 0x2933,
-  0x6f8e, 0x1194,
-  0x6f90, 0x294b,
-  0x6f92, 0x2932,
-  0x6f93, 0x2944,
-  0x6f94, 0x2943,
-  0x6f95, 0x2950,
-  0x6f96, 0x293a,
-  0x6f97, 0x1198,
-  0x6f9d, 0x4239,
-  0x6f9e, 0x2b9d,
-  0x6f9f, 0x4246,
-  0x6fa0, 0x12eb,
-  0x6fa1, 0x12e1,
-  0x6fa2, 0x2ba9,
-  0x6fa3, 0x2b95,
-  0x6fa4, 0x12e3,
-  0x6fa5, 0x2ba1,
-  0x6fa6, 0x12ea,
-  0x6fa7, 0x12e5,
-  0x6fa8, 0x2b9f,
-  0x6fa9, 0x2d8e,
-  0x6faa, 0x2ba5,
-  0x6fab, 0x2bab,
-  0x6fac, 0x2ba4,
-  0x6fad, 0x2b93,
-  0x6fae, 0x2ba2,
-  0x6faf, 0x2bad,
-  0x6fb0, 0x2baf,
-  0x6fb1, 0x12e0,
-  0x6fb2, 0x2bae,
-  0x6fb3, 0x12e6,
-  0x6fb4, 0x12ec,
-  0x6fb5, 0x3e27,
-  0x6fb6, 0x12e9,
-  0x6fb8, 0x2ba8,
-  0x6fb9, 0x12e8,
-  0x6fba, 0x2ba3,
-  0x6fbb, 0x3bbb,
-  0x6fbc, 0x2b97,
-  0x6fbd, 0x2b9c,
-  0x6fbe, 0x4688,
-  0x6fbf, 0x2ba7,
-  0x6fc0, 0x12e7,
-  0x6fc1, 0x12e4,
-  0x6fc2, 0x12df,
-  0x6fc3, 0x12e2,
-  0x6fc4, 0x2b9b,
-  0x6fc6, 0x2931,
-  0x6fc7, 0x2b96,
-  0x6fc8, 0x2b99,
-  0x6fc9, 0x2baa,
-  0x6fca, 0x2b9e,
-  0x6fcb, 0x2b94,
-  0x6fcc, 0x2d8d,
-  0x6fcd, 0x2bac,
-  0x6fce, 0x2b98,
-  0x6fcf, 0x2ba6,
-  0x6fd3, 0x4248,
-  0x6fd4, 0x2d90,
-  0x6fd5, 0x1400,
-  0x6fd8, 0x13f4,
-  0x6fd9, 0x3c74,
-  0x6fda, 0x3c73,
-  0x6fdb, 0x13f8,
-  0x6fdc, 0x2d92,
-  0x6fdd, 0x2d98,
-  0x6fde, 0x2d96,
-  0x6fdf, 0x13f6,
-  0x6fe1, 0x13fe,
-  0x6fe2, 0x2d99,
-  0x6fe3, 0x2d91,
-  0x6fe4, 0x13f9,
-  0x6fe6, 0x2d95,
-  0x6fe7, 0x2d94,
-  0x6fe8, 0x2d9a,
-  0x6fe9, 0x13ff,
-  0x6feb, 0x13fa,
-  0x6fec, 0x13fd,
-  0x6fed, 0x2d93,
-  0x6fee, 0x1401,
-  0x6fef, 0x13fb,
-  0x6ff0, 0x1402,
-  0x6ff1, 0x13f5,
-  0x6ff2, 0x2d97,
-  0x6ff4, 0x2d8f,
-  0x6ff6, 0x38a5,
-  0x6ff7, 0x2f4e,
-  0x6ff8, 0x4237,
-  0x6ffa, 0x14eb,
-  0x6ffb, 0x2f4b,
-  0x6ffc, 0x2f4d,
-  0x6ffe, 0x14e9,
-  0x6fff, 0x2f49,
-  0x7000, 0x2f4a,
-  0x7001, 0x2f45,
-  0x7003, 0x46e2,
-  0x7004, 0x2ba0,
-  0x7005, 0x2f46,
-  0x7006, 0x14ea,
-  0x7007, 0x2f42,
-  0x7009, 0x14e7,
-  0x700a, 0x2f4f,
-  0x700b, 0x14e8,
-  0x700c, 0x2f43,
-  0x700e, 0x2f48,
-  0x700f, 0x14ed,
-  0x7011, 0x14ec,
-  0x7014, 0x2f47,
-  0x7015, 0x158f,
-  0x7016, 0x30ad,
-  0x7017, 0x30b3,
-  0x7018, 0x1590,
-  0x7019, 0x30aa,
-  0x701a, 0x158d,
-  0x701b, 0x158a,
-  0x701c, 0x30b5,
-  0x701d, 0x158e,
-  0x701e, 0x3c76,
-  0x701f, 0x158b,
-  0x7020, 0x30ac,
-  0x7021, 0x30af,
-  0x7024, 0x30b4,
-  0x7026, 0x2f4c,
-  0x7027, 0x30ab,
-  0x7028, 0x158c,
-  0x7029, 0x30b2,
-  0x702a, 0x31ef,
-  0x702b, 0x30ae,
-  0x702c, 0x468e,
-  0x702f, 0x31e6,
-  0x7030, 0x161d,
-  0x7031, 0x31e9,
-  0x7032, 0x161e,
-  0x7033, 0x31f2,
-  0x7034, 0x31e8,
-  0x7035, 0x31e5,
-  0x7037, 0x31e7,
-  0x7038, 0x31eb,
-  0x7039, 0x31ee,
-  0x703a, 0x31ed,
-  0x703b, 0x31f1,
-  0x703c, 0x31e4,
-  0x703e, 0x161c,
-  0x703f, 0x31ec,
-  0x7040, 0x31f0,
-  0x7041, 0x31f3,
-  0x7042, 0x31ea,
-  0x7043, 0x32d8,
-  0x7045, 0x32dd,
-  0x7048, 0x32db,
-  0x704a, 0x32da,
-  0x704b, 0x4254,
-  0x704c, 0x167a,
-  0x7050, 0x4690,
-  0x7051, 0x16c8,
-  0x7052, 0x338c,
-  0x7054, 0x4691,
-  0x7055, 0x3389,
-  0x7058, 0x16c9,
-  0x705a, 0x3423,
-  0x705b, 0x3422,
-  0x705c, 0x3852,
-  0x705d, 0x348a,
-  0x705e, 0x1722,
-  0x705f, 0x3488,
-  0x7060, 0x348b,
-  0x7061, 0x3489,
-  0x7062, 0x34d0,
-  0x7063, 0x1744,
-  0x7064, 0x1752,
-  0x7065, 0x351c,
-  0x7066, 0x3506,
-  0x7067, 0x3cf5,
-  0x7068, 0x351b,
-  0x7069, 0x3547,
-  0x706b, 0x02e6,
-  0x706c, 0x44f1,
-  0x706f, 0x4692,
-  0x7070, 0x03f2,
-  0x7071, 0x180a,
-  0x7074, 0x18c3,
-  0x7075, 0x38c7,
-  0x7076, 0x04e6,
-  0x7078, 0x04e9,
-  0x7079, 0x4099,
-  0x707a, 0x18c4,
-  0x707c, 0x04e7,
-  0x707e, 0x4255,
-  0x707f, 0x4693,
-  0x7081, 0x4959,
-  0x7082, 0x19f7,
-  0x7083, 0x19f9,
-  0x7084, 0x19f4,
-  0x7085, 0x19f1,
-  0x7086, 0x19f3,
-  0x7089, 0x43f9,
-  0x708a, 0x0643,
-  0x708b, 0x40cb,
-  0x708e, 0x0641,
-  0x708f, 0x46b3,
-  0x7091, 0x19f5,
-  0x7092, 0x0642,
-  0x7093, 0x19f2,
-  0x7094, 0x19ef,
-  0x7095, 0x0640,
-  0x7096, 0x19f6,
-  0x7098, 0x19f0,
-  0x7099, 0x0644,
-  0x709a, 0x19f8,
-  0x709f, 0x1b66,
-  0x70a0, 0x4742,
-  0x70a1, 0x1b6a,
-  0x70a3, 0x3972,
-  0x70a4, 0x0790,
-  0x70a5, 0x3cb7,
-  0x70a6, 0x3d53,
-  0x70a7, 0x4256,
-  0x70a9, 0x1b6d,
-  0x70ab, 0x0788,
-  0x70ac, 0x078b,
-  0x70ad, 0x078d,
-  0x70ae, 0x078f,
-  0x70af, 0x078c,
-  0x70b0, 0x1b69,
-  0x70b1, 0x1b68,
-  0x70b3, 0x078a,
-  0x70b4, 0x1b6b,
-  0x70b7, 0x1b65,
-  0x70b8, 0x078e,
-  0x70b9, 0x3d69,
-  0x70ba, 0x0789,
-  0x70bb, 0x4812,
-  0x70bc, 0x4559,
-  0x70bd, 0x4270,
-  0x70be, 0x1b67,
-  0x70c0, 0x4733,
-  0x70c4, 0x3baa,
-  0x70c5, 0x1d27,
-  0x70c8, 0x0921,
-  0x70ca, 0x091d,
-  0x70cb, 0x1d1e,
-  0x70cc, 0x4258,
-  0x70cd, 0x1d26,
-  0x70ce, 0x1d2b,
-  0x70cf, 0x0922,
-  0x70d0, 0x396d,
-  0x70d1, 0x1d1c,
-  0x70d2, 0x1d22,
-  0x70d3, 0x1d1b,
-  0x70d4, 0x1d25,
-  0x70d5, 0x4259,
-  0x70d7, 0x1d21,
-  0x70d8, 0x091e,
-  0x70d9, 0x0920,
-  0x70da, 0x1d2a,
-  0x70dc, 0x1d1a,
-  0x70dd, 0x1d1d,
-  0x70de, 0x1d23,
-  0x70df, 0x425b,
-  0x70e0, 0x1d24,
-  0x70e1, 0x1d2c,
-  0x70e2, 0x1d20,
-  0x70e4, 0x091f,
-  0x70ef, 0x0b16,
-  0x70f0, 0x1f72,
-  0x70f1, 0x3ac8,
-  0x70f3, 0x1f74,
-  0x70f4, 0x1f70,
-  0x70f5, 0x4760,
-  0x70f6, 0x1f7c,
-  0x70f7, 0x1f6e,
-  0x70f8, 0x1f7b,
-  0x70f9, 0x0b12,
-  0x70fa, 0x1f6c,
-  0x70fb, 0x21f2,
-  0x70fc, 0x1f76,
-  0x70fd, 0x0b15,
-  0x70fe, 0x3d0e,
-  0x70ff, 0x1f77,
-  0x7100, 0x1f7a,
-  0x7102, 0x1f7e,
-  0x7104, 0x1f73,
-  0x7105, 0x3a23,
-  0x7106, 0x1f78,
-  0x7109, 0x0b13,
-  0x710b, 0x1f7d,
-  0x710c, 0x1f71,
-  0x710d, 0x1f6d,
-  0x710e, 0x1f7f,
-  0x7110, 0x1f75,
-  0x7113, 0x1f79,
-  0x7117, 0x1f6f,
-  0x7119, 0x0cc8,
-  0x711b, 0x21fc,
-  0x711c, 0x0ccf,
-  0x711d, 0x3d47,
-  0x711e, 0x21f0,
-  0x711f, 0x21f9,
-  0x7120, 0x21ef,
-  0x7121, 0x0ccc,
-  0x7122, 0x21f7,
-  0x7123, 0x21f5,
-  0x7125, 0x21f6,
-  0x7126, 0x0cca,
-  0x7128, 0x21fa,
-  0x7129, 0x3ba9,
-  0x712b, 0x4261,
-  0x712c, 0x426a,
-  0x712e, 0x21f3,
-  0x712f, 0x21f1,
-  0x7130, 0x0ccb,
-  0x7131, 0x21f4,
-  0x7132, 0x21f8,
-  0x7133, 0x3d54,
-  0x7134, 0x3c7e,
-  0x7135, 0x376d,
-  0x7136, 0x0ccd,
-  0x713a, 0x21fb,
-  0x713b, 0x3ac5,
-  0x713e, 0x372e,
-  0x7140, 0x4398,
-  0x7141, 0x247b,
-  0x7142, 0x2482,
-  0x7143, 0x2484,
-  0x7144, 0x248a,
-  0x7145, 0x4262,
-  0x7146, 0x0e72,
-  0x7147, 0x2476,
-  0x7149, 0x0e6a,
-  0x714a, 0x4264,
-  0x714b, 0x2485,
-  0x714c, 0x0e6f,
-  0x714d, 0x248b,
-  0x714e, 0x0e66,
-  0x714f, 0x4267,
-  0x7150, 0x2488,
-  0x7151, 0x4865,
-  0x7152, 0x2478,
-  0x7153, 0x2489,
-  0x7154, 0x2477,
-  0x7156, 0x0e74,
-  0x7158, 0x2483,
-  0x7159, 0x0e67,
-  0x715a, 0x248c,
-  0x715c, 0x0e6c,
-  0x715d, 0x247c,
-  0x715e, 0x0e71,
-  0x715f, 0x2487,
-  0x7160, 0x247a,
-  0x7161, 0x2481,
-  0x7162, 0x247d,
-  0x7163, 0x2479,
-  0x7164, 0x0e69,
-  0x7165, 0x0e70,
-  0x7166, 0x0e6e,
-  0x7167, 0x0e6b,
-  0x7168, 0x0e73,
-  0x7169, 0x0e68,
-  0x716a, 0x2480,
-  0x716b, 0x3cc5,
-  0x716c, 0x0e6d,
-  0x716e, 0x0cce,
-  0x7170, 0x2486,
-  0x7171, 0x3dc0,
-  0x7172, 0x247e,
-  0x7173, 0x47e7,
-  0x7175, 0x3ced,
-  0x7176, 0x4000,
-  0x7177, 0x3957,
-  0x7178, 0x247f,
-  0x717a, 0x4924,
-  0x717b, 0x271e,
-  0x717c, 0x3835,
-  0x717d, 0x1023,
-  0x717e, 0x3970,
-  0x7180, 0x271a,
-  0x7181, 0x2720,
-  0x7182, 0x271c,
-  0x7184, 0x1025,
-  0x7185, 0x271b,
-  0x7186, 0x271f,
-  0x7187, 0x2717,
-  0x7188, 0x4706,
-  0x7189, 0x2719,
-  0x718a, 0x1024,
-  0x718c, 0x39ea,
-  0x718e, 0x3d3b,
-  0x718f, 0x271d,
-  0x7190, 0x2718,
-  0x7192, 0x1026,
-  0x7194, 0x1021,
-  0x7196, 0x425f,
-  0x7197, 0x2721,
-  0x7198, 0x481d,
-  0x7199, 0x1022,
-  0x719a, 0x295a,
-  0x719b, 0x2957,
-  0x719c, 0x2963,
-  0x719d, 0x295d,
-  0x719e, 0x295f,
-  0x719f, 0x119e,
-  0x71a0, 0x2959,
-  0x71a1, 0x2961,
-  0x71a2, 0x48c1,
-  0x71a3, 0x3ec8,
-  0x71a4, 0x2960,
-  0x71a5, 0x295e,
-  0x71a7, 0x2964,
-  0x71a8, 0x11a1,
-  0x71a9, 0x295b,
-  0x71aa, 0x2962,
-  0x71ac, 0x119f,
-  0x71ad, 0x3e1d,
-  0x71af, 0x2956,
-  0x71b0, 0x2958,
-  0x71b1, 0x11a0,
-  0x71b2, 0x2955,
-  0x71b3, 0x2965,
-  0x71b4, 0x425e,
-  0x71b5, 0x295c,
-  0x71b7, 0x468b,
-  0x71b8, 0x2bb3,
-  0x71b9, 0x12f3,
-  0x71ba, 0x426e,
-  0x71bc, 0x2bbe,
-  0x71bd, 0x2bbc,
-  0x71be, 0x12ed,
-  0x71bf, 0x2bb2,
-  0x71c0, 0x2bb5,
-  0x71c2, 0x2bb1,
-  0x71c3, 0x12f7,
-  0x71c5, 0x2bb0,
-  0x71c6, 0x2bbf,
-  0x71c7, 0x2bba,
-  0x71c8, 0x12f1,
-  0x71c9, 0x12ee,
-  0x71ca, 0x2bb9,
-  0x71cb, 0x2bb7,
-  0x71ce, 0x12f4,
-  0x71cf, 0x2bbb,
-  0x71d0, 0x12ef,
-  0x71d1, 0x373d,
-  0x71d2, 0x12f0,
-  0x71d4, 0x2bb8,
-  0x71d5, 0x12f2,
-  0x71d6, 0x2bb4,
-  0x71d8, 0x2bbd,
-  0x71d9, 0x12f5,
-  0x71da, 0x2bc0,
-  0x71dc, 0x12f6,
-  0x71dd, 0x4078,
-  0x71df, 0x1404,
-  0x71e0, 0x140b,
-  0x71e1, 0x2d9b,
-  0x71e2, 0x2da1,
-  0x71e4, 0x2d9f,
-  0x71e5, 0x1407,
-  0x71e6, 0x1406,
-  0x71e7, 0x1403,
-  0x71e8, 0x2d9d,
-  0x71eb, 0x3c81,
-  0x71ec, 0x1409,
-  0x71ed, 0x1408,
-  0x71ee, 0x1405,
-  0x71f0, 0x2da0,
-  0x71f1, 0x2d9c,
-  0x71f2, 0x2d9e,
-  0x71f4, 0x140a,
-  0x71f5, 0x46ee,
-  0x71f6, 0x3e9a,
-  0x71f8, 0x14f1,
-  0x71f9, 0x2f52,
-  0x71fb, 0x14ee,
-  0x71fd, 0x2f54,
-  0x71fe, 0x14f0,
-  0x71ff, 0x2f51,
-  0x7201, 0x2f50,
-  0x7202, 0x30b9,
-  0x7203, 0x2f53,
-  0x7205, 0x30ba,
-  0x7206, 0x1591,
-  0x7207, 0x30b8,
-  0x7209, 0x3dbb,
-  0x720a, 0x30b7,
-  0x720c, 0x30b6,
-  0x720d, 0x1592,
-  0x720e, 0x4271,
-  0x720f, 0x39fc,
-  0x7210, 0x161f,
-  0x7213, 0x31f4,
-  0x7215, 0x4273,
-  0x7216, 0x3953,
-  0x7217, 0x3969,
-  0x7219, 0x32e1,
-  0x721a, 0x32e0,
-  0x721b, 0x167b,
-  0x721d, 0x32df,
-  0x721e, 0x338d,
-  0x7222, 0x3424,
-  0x7223, 0x348c,
-  0x7224, 0x4276,
-  0x7226, 0x34d1,
-  0x7227, 0x3535,
-  0x7228, 0x1766,
-  0x7229, 0x3549,
-  0x722a, 0x02e7,
-  0x722b, 0x44f2,
-  0x722c, 0x0645,
-  0x722e, 0x4279,
-  0x7230, 0x0791,
-  0x7235, 0x140c,
-  0x7236, 0x02e8,
-  0x7238, 0x0647,
-  0x7239, 0x0923,
-  0x723a, 0x0e75,
-  0x723b, 0x02e9,
-  0x723d, 0x0b17,
-  0x723e, 0x1027,
-  0x723f, 0x178d,
-  0x7240, 0x427a,
-  0x7241, 0x1b6e,
-  0x7242, 0x1d2d,
-  0x7244, 0x2722,
-  0x7246, 0x140d,
-  0x7247, 0x02ea,
-  0x7248, 0x0648,
-  0x7249, 0x1b6f,
-  0x724b, 0x21fd,
-  0x724c, 0x0cd0,
-  0x724f, 0x248d,
-  0x7250, 0x3ac9,
-  0x7252, 0x0e76,
-  0x7253, 0x2723,
-  0x7255, 0x427d,
-  0x7256, 0x11a2,
-  0x7257, 0x427e,
-  0x7258, 0x1593,
-  0x7259, 0x02eb,
-  0x725a, 0x21fe,
-  0x725b, 0x02ec,
-  0x725c, 0x465a,
-  0x725d, 0x03f4,
-  0x725e, 0x180b,
-  0x725f, 0x03f3,
-  0x7260, 0x04ec,
-  0x7261, 0x04eb,
-  0x7262, 0x04ea,
-  0x7263, 0x18c5,
-  0x7266, 0x3ebb,
-  0x7267, 0x0649,
-  0x7269, 0x064a,
-  0x726a, 0x19fa,
-  0x726c, 0x1b71,
-  0x726e, 0x1b74,
-  0x726f, 0x0793,
-  0x7270, 0x1b72,
-  0x7272, 0x0792,
-  0x7273, 0x1b73,
-  0x7274, 0x0794,
-  0x7276, 0x1d30,
-  0x7277, 0x1d2f,
-  0x7278, 0x1d2e,
-  0x7279, 0x0924,
-  0x727b, 0x1f81,
-  0x727d, 0x0b18,
-  0x727e, 0x1f80,
-  0x727f, 0x1f83,
-  0x7280, 0x0cd2,
-  0x7281, 0x0b19,
-  0x7282, 0x4283,
-  0x7284, 0x0cd1,
-  0x7285, 0x2202,
-  0x7286, 0x2201,
-  0x7287, 0x3aca,
-  0x7288, 0x21ff,
-  0x728b, 0x2203,
-  0x728c, 0x248f,
-  0x728d, 0x248e,
-  0x728e, 0x2492,
-  0x728f, 0x43c9,
-  0x7290, 0x2491,
-  0x7291, 0x2490,
-  0x7292, 0x1028,
-  0x7293, 0x2726,
-  0x7294, 0x3acb,
-  0x7295, 0x2725,
-  0x7296, 0x1029,
-  0x7297, 0x2724,
-  0x7298, 0x2966,
-  0x729a, 0x2967,
-  0x729b, 0x11a3,
-  0x729d, 0x2bc2,
-  0x729f, 0x473a,
-  0x72a1, 0x30bf,
-  0x72a2, 0x1594,
-  0x72a3, 0x30be,
-  0x72a4, 0x30bd,
-  0x72a5, 0x30bb,
-  0x72a7, 0x167c,
-  0x72a8, 0x31f6,
-  0x72a9, 0x338f,
-  0x72aa, 0x34d2,
-  0x72ac, 0x02ed,
-  0x72ad, 0x44f4,
-  0x72ae, 0x17af,
-  0x72af, 0x0355,
-  0x72b0, 0x17b0,
-  0x72b2, 0x3fb6,
-  0x72b4, 0x180c,
-  0x72ba, 0x18cb,
-  0x72bd, 0x18c7,
-  0x72bf, 0x18c6,
-  0x72c0, 0x064b,
-  0x72c1, 0x18ca,
-  0x72c2, 0x04ee,
-  0x72c3, 0x18c8,
-  0x72c4, 0x04ed,
-  0x72c5, 0x18cc,
-  0x72c6, 0x18c9,
-  0x72c9, 0x19fe,
-  0x72ca, 0x1b75,
-  0x72cb, 0x19fc,
-  0x72cc, 0x1a03,
-  0x72cd, 0x43ca,
-  0x72ce, 0x064c,
-  0x72d0, 0x064f,
-  0x72d1, 0x1a04,
-  0x72d2, 0x1a00,
-  0x72d4, 0x1a01,
-  0x72d6, 0x19fb,
-  0x72d7, 0x064e,
-  0x72d8, 0x19fd,
-  0x72d9, 0x064d,
-  0x72da, 0x1a02,
-  0x72dc, 0x19ff,
-  0x72df, 0x1b79,
-  0x72e0, 0x0796,
-  0x72e2, 0x3f97,
-  0x72e3, 0x1b7c,
-  0x72e4, 0x1b76,
-  0x72e6, 0x1b7b,
-  0x72e8, 0x1b77,
-  0x72e9, 0x0795,
-  0x72ea, 0x1b7a,
-  0x72eb, 0x1b78,
-  0x72f3, 0x1d36,
-  0x72f4, 0x1d33,
-  0x72f6, 0x1d35,
-  0x72f7, 0x0929,
-  0x72f8, 0x0928,
-  0x72f9, 0x0926,
-  0x72fa, 0x1d32,
-  0x72fb, 0x1d37,
-  0x72fc, 0x0925,
-  0x72fd, 0x0927,
-  0x72fe, 0x1d34,
-  0x72ff, 0x1f8b,
-  0x7300, 0x1d31,
-  0x7301, 0x1d38,
-  0x7302, 0x3f9a,
-  0x7304, 0x3eb5,
-  0x7307, 0x1f86,
-  0x7308, 0x1f8a,
-  0x730a, 0x1f89,
-  0x730b, 0x2205,
-  0x730c, 0x2210,
-  0x730f, 0x1f8c,
-  0x7310, 0x46ea,
-  0x7311, 0x1f87,
-  0x7312, 0x2204,
-  0x7313, 0x0b1d,
-  0x7316, 0x0b1c,
-  0x7317, 0x1f85,
-  0x7318, 0x1f88,
-  0x7319, 0x0b1e,
-  0x731b, 0x0b1b,
-  0x731c, 0x0b1a,
-  0x731d, 0x1f84,
-  0x731e, 0x1f8d,
-  0x7322, 0x2207,
-  0x7323, 0x220e,
-  0x7325, 0x0cd4,
-  0x7326, 0x220d,
-  0x7327, 0x220a,
-  0x7328, 0x428a,
-  0x7329, 0x0cd6,
-  0x732a, 0x3d70,
-  0x732b, 0x4285,
-  0x732c, 0x3fb2,
-  0x732d, 0x220c,
-  0x732e, 0x428b,
-  0x7330, 0x2206,
-  0x7331, 0x2208,
-  0x7332, 0x220b,
-  0x7333, 0x2209,
-  0x7334, 0x0cd5,
-  0x7335, 0x220f,
-  0x7336, 0x0cd3,
-  0x7337, 0x0e77,
-  0x7338, 0x46eb,
-  0x7339, 0x43cc,
-  0x733a, 0x2496,
-  0x733b, 0x2495,
-  0x733c, 0x2493,
-  0x733e, 0x0e7a,
-  0x733f, 0x0e79,
-  0x7340, 0x2497,
-  0x7341, 0x46ec,
-  0x7342, 0x2494,
-  0x7343, 0x2727,
-  0x7344, 0x102a,
-  0x7345, 0x0e78,
-  0x7348, 0x43fa,
-  0x7349, 0x2499,
-  0x734a, 0x2498,
-  0x734c, 0x272a,
-  0x734d, 0x2728,
-  0x734e, 0x11a4,
-  0x734f, 0x3f51,
-  0x7350, 0x102b,
-  0x7351, 0x2729,
-  0x7352, 0x2969,
-  0x7357, 0x11a5,
-  0x7358, 0x2968,
-  0x7359, 0x2971,
-  0x735a, 0x2970,
-  0x735b, 0x296e,
-  0x735d, 0x296d,
-  0x735e, 0x296a,
-  0x7361, 0x296f,
-  0x7362, 0x2972,
-  0x7365, 0x2bc8,
-  0x7366, 0x2bc5,
-  0x7368, 0x12f9,
-  0x7369, 0x2bc4,
-  0x736a, 0x2bca,
-  0x736b, 0x2bc9,
-  0x736c, 0x2bc7,
-  0x736e, 0x2da3,
-  0x7370, 0x140e,
-  0x7371, 0x3f98,
-  0x7372, 0x140f,
-  0x7373, 0x2da2,
-  0x7374, 0x3ed4,
-  0x7375, 0x14f3,
-  0x7376, 0x2f55,
-  0x7377, 0x14f2,
-  0x7378, 0x1595,
-  0x737a, 0x1596,
-  0x737b, 0x1620,
-  0x737c, 0x31f8,
-  0x737d, 0x31f7,
-  0x737e, 0x32e2,
-  0x737f, 0x3390,
-  0x7380, 0x16ca,
-  0x7381, 0x3426,
-  0x7382, 0x3425,
-  0x7383, 0x3427,
-  0x7384, 0x0356,
-  0x7385, 0x1b7d,
-  0x7386, 0x092a,
-  0x7387, 0x0b1f,
-  0x7388, 0x1f8e,
-  0x7389, 0x0357,
-  0x738a, 0x17b1,
-  0x738b, 0x02ee,
-  0x738e, 0x180e,
-  0x738f, 0x46e5,
-  0x7392, 0x18d1,
-  0x7393, 0x18cf,
-  0x7395, 0x18cd,
-  0x7396, 0x04ef,
-  0x7397, 0x18ce,
-  0x7398, 0x39f6,
-  0x739c, 0x408a,
-  0x739d, 0x1a0c,
-  0x739e, 0x395b,
-  0x739f, 0x0652,
-  0x73a0, 0x1a0a,
-  0x73a1, 0x1a06,
-  0x73a2, 0x1a09,
-  0x73a4, 0x1a05,
-  0x73a5, 0x0654,
-  0x73a6, 0x1a08,
-  0x73a7, 0x4087,
-  0x73a8, 0x0651,
-  0x73a9, 0x0650,
-  0x73aa, 0x428d,
-  0x73ab, 0x0653,
-  0x73ac, 0x1a0b,
-  0x73ad, 0x1a07,
-  0x73b2, 0x079b,
-  0x73b3, 0x079e,
-  0x73b4, 0x1b85,
-  0x73b5, 0x1b84,
-  0x73b6, 0x1b83,
-  0x73b7, 0x0798,
-  0x73b8, 0x1b8c,
-  0x73b9, 0x1b82,
-  0x73bb, 0x079a,
-  0x73bc, 0x1d3d,
-  0x73be, 0x1b89,
-  0x73bf, 0x1b87,
-  0x73c0, 0x079d,
-  0x73c2, 0x1b7f,
-  0x73c3, 0x1b8a,
-  0x73c5, 0x1b81,
-  0x73c6, 0x1b8b,
-  0x73c7, 0x1b88,
-  0x73c8, 0x1b80,
-  0x73c9, 0x4290,
-  0x73ca, 0x0799,
-  0x73cb, 0x1b8d,
-  0x73cc, 0x1b7e,
-  0x73cd, 0x079c,
-  0x73ce, 0x411b,
-  0x73cf, 0x428c,
-  0x73d0, 0x3b17,
-  0x73d2, 0x1d42,
-  0x73d3, 0x1d39,
-  0x73d4, 0x1d44,
-  0x73d5, 0x4073,
-  0x73d6, 0x1d3c,
-  0x73d7, 0x1d47,
-  0x73d9, 0x1d3a,
-  0x73da, 0x1d46,
-  0x73db, 0x1d43,
-  0x73dc, 0x1d41,
-  0x73dd, 0x1d45,
-  0x73de, 0x0930,
-  0x73e0, 0x092e,
-  0x73e1, 0x46f0,
-  0x73e2, 0x3ca3,
-  0x73e3, 0x1d3f,
-  0x73e4, 0x42a5,
-  0x73e5, 0x1d3b,
-  0x73e6, 0x3cba,
-  0x73e7, 0x1d3e,
-  0x73e8, 0x1d49,
-  0x73e9, 0x1d40,
-  0x73ea, 0x092f,
-  0x73eb, 0x1b86,
-  0x73ed, 0x092b,
-  0x73ee, 0x092d,
-  0x73ef, 0x4011,
-  0x73f3, 0x3cab,
-  0x73f4, 0x1f9c,
-  0x73f5, 0x1f91,
-  0x73f6, 0x1f8f,
-  0x73f7, 0x429a,
-  0x73f8, 0x1f90,
-  0x73f9, 0x3bf9,
-  0x73fa, 0x1f97,
-  0x73fb, 0x3cac,
-  0x73fc, 0x1f98,
-  0x73fd, 0x1f94,
-  0x73fe, 0x0b24,
-  0x73ff, 0x1f99,
-  0x7400, 0x1f96,
-  0x7401, 0x1f93,
-  0x7403, 0x0b22,
-  0x7404, 0x1f92,
-  0x7405, 0x0b20,
-  0x7406, 0x0b23,
-  0x7407, 0x1f95,
-  0x7408, 0x1f9d,
-  0x7409, 0x092c,
-  0x740a, 0x0b21,
-  0x740b, 0x1f9b,
-  0x740c, 0x1f9a,
-  0x740d, 0x0b25,
-  0x7411, 0x456c,
-  0x7412, 0x3be6,
-  0x7414, 0x39f4,
-  0x7415, 0x429b,
-  0x7416, 0x2215,
-  0x7417, 0x40ad,
-  0x7419, 0x46f3,
-  0x741a, 0x2216,
-  0x741b, 0x0ce0,
-  0x741c, 0x38dd,
-  0x741d, 0x221c,
-  0x741e, 0x46f4,
-  0x7420, 0x221e,
-  0x7421, 0x2217,
-  0x7422, 0x0cda,
-  0x7423, 0x221b,
-  0x7424, 0x221a,
-  0x7425, 0x0cdb,
-  0x7426, 0x0ce1,
-  0x7428, 0x0ce2,
-  0x7429, 0x221d,
-  0x742a, 0x0cd8,
-  0x742b, 0x2214,
-  0x742c, 0x2212,
-  0x742d, 0x2218,
-  0x742e, 0x2211,
-  0x742f, 0x0cdf,
-  0x7430, 0x2213,
-  0x7431, 0x2219,
-  0x7432, 0x221f,
-  0x7433, 0x0cd9,
-  0x7434, 0x0cde,
-  0x7435, 0x0cdc,
-  0x7437, 0x3ae1,
-  0x7438, 0x3b09,
-  0x7439, 0x429e,
-  0x743a, 0x0cd7,
-  0x743c, 0x3adf,
-  0x743f, 0x0e81,
-  0x7440, 0x24a0,
-  0x7441, 0x0e80,
-  0x7442, 0x24a4,
-  0x7443, 0x3a1a,
-  0x7444, 0x249a,
-  0x7445, 0x3bd7,
-  0x7446, 0x24a5,
-  0x7447, 0x42a4,
-  0x7448, 0x3cb5,
-  0x7449, 0x4291,
-  0x744a, 0x249b,
-  0x744d, 0x24a6,
-  0x744e, 0x24a3,
-  0x744f, 0x24a1,
-  0x7451, 0x249e,
-  0x7452, 0x249d,
-  0x7453, 0x4231,
-  0x7454, 0x24a7,
-  0x7455, 0x0e7d,
-  0x7456, 0x39f5,
-  0x7457, 0x249f,
-  0x7459, 0x0e82,
-  0x745a, 0x0e7c,
-  0x745b, 0x0e83,
-  0x745d, 0x42c6,
-  0x745e, 0x0e7f,
-  0x745f, 0x0e7e,
-  0x7460, 0x42a2,
-  0x7462, 0x272b,
-  0x7463, 0x102d,
-  0x7464, 0x102c,
-  0x7465, 0x4101,
-  0x7467, 0x2730,
-  0x7468, 0x3aee,
-  0x7469, 0x11a6,
-  0x746a, 0x102e,
-  0x746b, 0x3be7,
-  0x746c, 0x42a8,
-  0x746d, 0x1030,
-  0x746e, 0x2731,
-  0x746f, 0x0e7b,
-  0x7470, 0x102f,
-  0x7471, 0x272d,
-  0x7472, 0x272f,
-  0x7473, 0x272c,
-  0x7474, 0x42a9,
-  0x7475, 0x272e,
-  0x7476, 0x42a6,
-  0x7479, 0x297c,
-  0x747a, 0x3ad1,
-  0x747c, 0x297b,
-  0x747d, 0x2978,
-  0x747e, 0x11a9,
-  0x747f, 0x2bcb,
-  0x7480, 0x11aa,
-  0x7481, 0x2977,
-  0x7482, 0x42ac,
-  0x7483, 0x11a8,
-  0x7485, 0x2979,
-  0x7486, 0x2976,
-  0x7487, 0x2973,
-  0x7488, 0x297a,
-  0x7489, 0x2974,
-  0x748b, 0x11a7,
-  0x748c, 0x3a21,
-  0x748d, 0x469d,
-  0x7490, 0x2da8,
-  0x7492, 0x2bcf,
-  0x7494, 0x2bce,
-  0x7495, 0x2bd0,
-  0x7497, 0x2da5,
-  0x7498, 0x12fc,
-  0x7499, 0x39f3,
-  0x749a, 0x2bcc,
-  0x749b, 0x3b0a,
-  0x749c, 0x12fa,
-  0x749e, 0x12fe,
-  0x749f, 0x12fd,
-  0x74a0, 0x2bcd,
-  0x74a1, 0x2bd1,
-  0x74a3, 0x12fb,
-  0x74a4, 0x4170,
-  0x74a5, 0x2dac,
-  0x74a6, 0x1412,
-  0x74a7, 0x14f4,
-  0x74a8, 0x1413,
-  0x74a9, 0x1410,
-  0x74aa, 0x2da9,
-  0x74ab, 0x2da7,
-  0x74ad, 0x2daa,
-  0x74af, 0x2dad,
-  0x74b0, 0x1411,
-  0x74b1, 0x2dab,
-  0x74b2, 0x2da6,
-  0x74b4, 0x3ca5,
-  0x74b5, 0x2f58,
-  0x74b6, 0x2f5b,
-  0x74b7, 0x30c2,
-  0x74b8, 0x2f56,
-  0x74ba, 0x31f9,
-  0x74bb, 0x2f5c,
-  0x74bd, 0x1597,
-  0x74be, 0x2f5a,
-  0x74bf, 0x14f5,
-  0x74c0, 0x2f57,
-  0x74c1, 0x2f59,
-  0x74c2, 0x2f5d,
-  0x74c3, 0x30c3,
-  0x74c5, 0x30c1,
-  0x74c8, 0x42b5,
-  0x74ca, 0x1598,
-  0x74cb, 0x30c0,
-  0x74cc, 0x3ade,
-  0x74cf, 0x1621,
-  0x74d0, 0x3a9b,
-  0x74d3, 0x46fa,
-  0x74d4, 0x167e,
-  0x74d5, 0x3392,
-  0x74d6, 0x167d,
-  0x74d7, 0x3394,
-  0x74d8, 0x3391,
-  0x74d9, 0x3393,
-  0x74da, 0x16fe,
-  0x74db, 0x348d,
-  0x74dc, 0x0358,
-  0x74dd, 0x1a0d,
-  0x74de, 0x1d4a,
-  0x74e0, 0x0b26,
-  0x74e1, 0x24a8,
-  0x74e2, 0x12ff,
-  0x74e3, 0x1599,
-  0x74e4, 0x16cb,
-  0x74e5, 0x348e,
-  0x74e6, 0x0359,
-  0x74e7, 0x3ffe,
-  0x74e8, 0x1a0e,
-  0x74e9, 0x0120,
-  0x74ec, 0x1b8e,
-  0x74ee, 0x1b8f,
-  0x74f0, 0x3fe6,
-  0x74f1, 0x3f9b,
-  0x74f2, 0x3fdf,
-  0x74f4, 0x1d4c,
-  0x74f6, 0x0b27,
-  0x74f8, 0x3ff4,
-  0x74fb, 0x2220,
-  0x74fd, 0x24ab,
-  0x74fe, 0x24aa,
-  0x74ff, 0x24a9,
-  0x7500, 0x2732,
-  0x7502, 0x2733,
-  0x7504, 0x1031,
-  0x7505, 0x3fde,
-  0x7507, 0x297e,
-  0x7508, 0x297d,
-  0x750b, 0x2bd2,
-  0x750c, 0x1300,
-  0x750e, 0x42b7,
-  0x750f, 0x2db1,
-  0x7510, 0x2dae,
-  0x7513, 0x2f5f,
-  0x7514, 0x2f5e,
-  0x7515, 0x14f6,
-  0x7516, 0x30c4,
-  0x7517, 0x32e3,
-  0x7518, 0x035a,
-  0x7519, 0x4583,
-  0x751a, 0x079f,
-  0x751c, 0x0b29,
-  0x751d, 0x24ac,
-  0x751e, 0x42b8,
-  0x751f, 0x035b,
-  0x7521, 0x1d4e,
-  0x7522, 0x0b2a,
-  0x7525, 0x0ce3,
-  0x7528, 0x035c,
-  0x752a, 0x180f,
-  0x752b, 0x04f1,
-  0x752c, 0x04f0,
-  0x752d, 0x07a0,
-  0x752e, 0x1b90,
-  0x752f, 0x2221,
-  0x7530, 0x035e,
-  0x7534, 0x3e87,
-  0x7535, 0x455a,
-  0x7537, 0x04f2,
-  0x7539, 0x18d3,
-  0x753a, 0x18d2,
-  0x753b, 0x3dfb,
-  0x753d, 0x0655,
-  0x753e, 0x1a11,
-  0x753f, 0x1a0f,
-  0x7542, 0x43cd,
-  0x7546, 0x3f40,
-  0x7547, 0x1b91,
-  0x754a, 0x42bf,
-  0x754b, 0x07a4,
-  0x754c, 0x07a2,
-  0x754d, 0x42be,
-  0x754e, 0x07a3,
-  0x754f, 0x07a1,
-  0x7551, 0x3cfe,
-  0x7553, 0x3feb,
-  0x7554, 0x0931,
-  0x7555, 0x3aea,
-  0x7559, 0x0935,
-  0x755a, 0x0934,
-  0x755b, 0x1d4f,
-  0x755c, 0x0933,
-  0x755d, 0x0932,
-  0x755f, 0x1d50,
-  0x7560, 0x3d71,
-  0x7562, 0x0b2d,
-  0x7563, 0x1f9f,
-  0x7564, 0x1f9e,
-  0x7565, 0x0b2b,
-  0x7567, 0x42c0,
-  0x756a, 0x0ce6,
-  0x756b, 0x0ce5,
-  0x756c, 0x2223,
-  0x756d, 0x46fd,
-  0x756e, 0x42c1,
-  0x756f, 0x2222,
-  0x7570, 0x0b2e,
-  0x7572, 0x46fe,
-  0x7576, 0x0e85,
-  0x7577, 0x24ae,
-  0x7578, 0x0e86,
-  0x7579, 0x24ad,
-  0x757a, 0x3f4f,
-  0x757d, 0x2735,
-  0x757e, 0x297f,
-  0x757f, 0x11ab,
-  0x7580, 0x2bd3,
-  0x7583, 0x3ae5,
-  0x7584, 0x2db2,
-  0x7586, 0x159b,
-  0x7587, 0x159a,
-  0x758a, 0x16cc,
-  0x758b, 0x0362,
-  0x758c, 0x1a12,
-  0x758d, 0x46ff,
-  0x758e, 0x42c5,
-  0x758f, 0x0b2f,
-  0x7590, 0x2736,
-  0x7591, 0x1032,
-  0x7592, 0x022e,
-  0x7594, 0x18d4,
-  0x7598, 0x1a13,
-  0x7599, 0x0657,
-  0x759d, 0x0656,
-  0x759e, 0x42c7,
-  0x75a2, 0x07a8,
-  0x75a4, 0x07a6,
-  0x75a7, 0x1b93,
-  0x75aa, 0x1b94,
-  0x75ab, 0x07a5,
-  0x75b0, 0x1d51,
-  0x75b1, 0x3ead,
-  0x75b2, 0x0939,
-  0x75b4, 0x42c8,
-  0x75b5, 0x0b32,
-  0x75b6, 0x1d57,
-  0x75b8, 0x093f,
-  0x75b9, 0x093d,
-  0x75ba, 0x1d58,
-  0x75bb, 0x1d53,
-  0x75bc, 0x093c,
-  0x75bd, 0x093b,
-  0x75be, 0x0936,
-  0x75bf, 0x1d56,
-  0x75c0, 0x1d55,
-  0x75c1, 0x1d52,
-  0x75c2, 0x093e,
-  0x75c3, 0x3f93,
-  0x75c4, 0x1d54,
-  0x75c5, 0x0937,
-  0x75c7, 0x0938,
-  0x75c8, 0x4701,
-  0x75ca, 0x0b33,
-  0x75cb, 0x1fa3,
-  0x75cd, 0x0b34,
-  0x75ce, 0x1fa0,
-  0x75cf, 0x1fa2,
-  0x75d0, 0x1fa6,
-  0x75d1, 0x1fa5,
-  0x75d2, 0x1fa1,
-  0x75d4, 0x0b30,
-  0x75d7, 0x222b,
-  0x75d8, 0x0ceb,
-  0x75d9, 0x0cea,
-  0x75da, 0x2225,
-  0x75db, 0x0ce8,
-  0x75dc, 0x43ce,
-  0x75dd, 0x2228,
-  0x75de, 0x0cec,
-  0x75df, 0x2229,
-  0x75e0, 0x0ced,
-  0x75e1, 0x2226,
-  0x75e2, 0x0ce7,
-  0x75e3, 0x0ce9,
-  0x75e4, 0x222a,
-  0x75e6, 0x2227,
-  0x75e7, 0x2224,
-  0x75ed, 0x24bb,
-  0x75ef, 0x24b0,
-  0x75f0, 0x0e88,
-  0x75f1, 0x0e8b,
-  0x75f2, 0x0e8a,
-  0x75f3, 0x0e8f,
-  0x75f4, 0x0e8e,
-  0x75f5, 0x24bc,
-  0x75f6, 0x24ba,
-  0x75f7, 0x24b3,
-  0x75f8, 0x24b7,
-  0x75f9, 0x24b6,
-  0x75fa, 0x0e8c,
-  0x75fb, 0x24b9,
-  0x75fc, 0x24b5,
-  0x75fd, 0x24bd,
-  0x75fe, 0x24b4,
-  0x75ff, 0x0e8d,
-  0x7600, 0x0e87,
-  0x7601, 0x0e89,
-  0x7602, 0x42c9,
-  0x7603, 0x24b2,
-  0x7607, 0x3f8f,
-  0x7608, 0x2738,
-  0x7609, 0x1036,
-  0x760a, 0x273c,
-  0x760b, 0x1035,
-  0x760c, 0x2739,
-  0x760d, 0x1034,
-  0x760f, 0x24b1,
-  0x7610, 0x24b8,
-  0x7611, 0x273b,
-  0x7613, 0x1037,
-  0x7614, 0x273d,
-  0x7615, 0x273a,
-  0x7616, 0x2737,
-  0x7619, 0x2982,
-  0x761a, 0x2986,
-  0x761b, 0x2988,
-  0x761c, 0x2984,
-  0x761d, 0x2983,
-  0x761e, 0x2981,
-  0x761f, 0x11ae,
-  0x7620, 0x11ac,
-  0x7621, 0x11b1,
-  0x7623, 0x2985,
-  0x7624, 0x11af,
-  0x7625, 0x2980,
-  0x7626, 0x11b0,
-  0x7627, 0x1033,
-  0x7628, 0x2987,
-  0x7629, 0x11ad,
-  0x762c, 0x42ca,
-  0x762d, 0x2bd5,
-  0x762f, 0x2bd4,
-  0x7630, 0x2bdc,
-  0x7631, 0x2bd6,
-  0x7632, 0x2bdb,
-  0x7633, 0x2bd8,
-  0x7634, 0x1302,
-  0x7635, 0x2bda,
-  0x7638, 0x1303,
-  0x763a, 0x1304,
-  0x763b, 0x3e70,
-  0x763c, 0x2bd9,
-  0x763d, 0x2bd7,
-  0x7640, 0x3ee6,
-  0x7642, 0x1415,
-  0x7643, 0x2db3,
-  0x7646, 0x1414,
-  0x7647, 0x2db6,
-  0x7648, 0x2db4,
-  0x764c, 0x1416,
-  0x764d, 0x4702,
-  0x764e, 0x3e72,
-  0x764f, 0x42cc,
-  0x7650, 0x2f63,
-  0x7651, 0x42cb,
-  0x7652, 0x14f9,
-  0x7653, 0x2f64,
-  0x7654, 0x3ef0,
-  0x7656, 0x14f7,
-  0x7657, 0x2f65,
-  0x7658, 0x14f8,
-  0x7659, 0x2f62,
-  0x765a, 0x2f66,
-  0x765c, 0x2f60,
-  0x765f, 0x159c,
-  0x7660, 0x30c5,
-  0x7661, 0x159d,
-  0x7662, 0x1622,
-  0x7664, 0x2f61,
-  0x7665, 0x1623,
-  0x7666, 0x3eaa,
-  0x7667, 0x3fa9,
-  0x7669, 0x167f,
-  0x766a, 0x32e4,
-  0x766c, 0x16ce,
-  0x766d, 0x3395,
-  0x766e, 0x16cd,
-  0x766f, 0x42cd,
-  0x7670, 0x3428,
-  0x7671, 0x1723,
-  0x7673, 0x3aeb,
-  0x7674, 0x4703,
-  0x7675, 0x3543,
-  0x7676, 0x022f,
-  0x7678, 0x07aa,
-  0x7679, 0x1b95,
-  0x767a, 0x4705,
-  0x767b, 0x0cee,
-  0x767d, 0x0363,
-  0x767e, 0x03f5,
-  0x767f, 0x1810,
-  0x7680, 0x43d3,
-  0x7681, 0x18d6,
-  0x7682, 0x04f4,
-  0x7684, 0x0659,
-  0x7686, 0x07ab,
-  0x7689, 0x1fa8,
-  0x768a, 0x1d59,
-  0x768b, 0x0940,
-  0x768c, 0x43d4,
-  0x768e, 0x0b35,
-  0x768f, 0x1fa7,
-  0x7690, 0x42d0,
-  0x7692, 0x222d,
-  0x7693, 0x0cf1,
-  0x7695, 0x222c,
-  0x7696, 0x0cf0,
-  0x7699, 0x24be,
-  0x769a, 0x11b3,
-  0x769b, 0x298c,
-  0x769c, 0x2989,
-  0x76a1, 0x42d5,
-  0x76a4, 0x2db7,
-  0x76a5, 0x42d6,
-  0x76a6, 0x2f67,
-  0x76aa, 0x31fb,
-  0x76ab, 0x31fa,
-  0x76ad, 0x3396,
-  0x76ae, 0x0364,
-  0x76af, 0x1a14,
-  0x76b0, 0x0941,
-  0x76b4, 0x0cf2,
-  0x76b5, 0x24bf,
-  0x76b7, 0x42d7,
-  0x76b8, 0x273e,
-  0x76ba, 0x11b4,
-  0x76bb, 0x2bdd,
-  0x76bd, 0x2f68,
-  0x76be, 0x31fc,
-  0x76bf, 0x0365,
-  0x76c2, 0x065a,
-  0x76c3, 0x07b0,
-  0x76c4, 0x1b96,
-  0x76c5, 0x07b1,
-  0x76c6, 0x07af,
-  0x76c8, 0x07ae,
-  0x76c9, 0x1d5a,
-  0x76ca, 0x0942,
-  0x76cc, 0x42d8,
-  0x76cd, 0x0943,
-  0x76d2, 0x0b37,
-  0x76d3, 0x1fa9,
-  0x76d4, 0x0b36,
-  0x76d6, 0x3f55,
-  0x76da, 0x222e,
-  0x76db, 0x0b38,
-  0x76dc, 0x0cf3,
-  0x76dd, 0x24c0,
-  0x76de, 0x0e90,
-  0x76e1, 0x1038,
-  0x76e3, 0x1039,
-  0x76e4, 0x11b5,
-  0x76e5, 0x1306,
-  0x76e6, 0x2bde,
-  0x76e7, 0x1305,
-  0x76e9, 0x2db8,
-  0x76ea, 0x1417,
-  0x76ec, 0x2f69,
-  0x76ed, 0x31fd,
-  0x76ee, 0x0366,
-  0x76ef, 0x04f5,
-  0x76f0, 0x1a17,
-  0x76f1, 0x1a16,
-  0x76f2, 0x065b,
-  0x76f3, 0x1a15,
-  0x76f4, 0x065c,
-  0x76f5, 0x1a18,
-  0x76f7, 0x1b9c,
-  0x76f8, 0x07b4,
-  0x76f9, 0x07b3,
-  0x76fa, 0x1b9e,
-  0x76fb, 0x1b9d,
-  0x76fc, 0x07b8,
-  0x76fe, 0x07b7,
-  0x7701, 0x07b2,
-  0x7703, 0x1b98,
-  0x7707, 0x07b9,
-  0x7708, 0x1b97,
-  0x7709, 0x07b5,
-  0x770a, 0x1b9b,
-  0x770b, 0x07b6,
-  0x770c, 0x3d62,
-  0x770e, 0x3b02,
-  0x7710, 0x1d5d,
-  0x7711, 0x1d61,
-  0x7712, 0x1d5f,
-  0x7713, 0x1d5e,
-  0x7715, 0x1d62,
-  0x7719, 0x1d63,
-  0x771b, 0x1d5c,
-  0x771d, 0x1d5b,
-  0x771e, 0x42de,
-  0x771f, 0x0946,
-  0x7722, 0x1d65,
-  0x7723, 0x1d60,
-  0x7724, 0x3fe8,
-  0x7725, 0x1fb2,
-  0x7726, 0x42df,
-  0x7727, 0x1d66,
-  0x7728, 0x0948,
-  0x7729, 0x0945,
-  0x772b, 0x3ff3,
-  0x772d, 0x1fac,
-  0x772f, 0x1fab,
-  0x7731, 0x1fad,
-  0x7733, 0x1fb0,
-  0x7734, 0x1faf,
-  0x7735, 0x1fb4,
-  0x7736, 0x0b3c,
-  0x7737, 0x0b39,
-  0x7738, 0x0b3d,
-  0x7739, 0x1faa,
-  0x773a, 0x0b3e,
-  0x773b, 0x1fb3,
-  0x773c, 0x0b3b,
-  0x773d, 0x1fb1,
-  0x773e, 0x0b3a,
-  0x7740, 0x42e0,
-  0x7743, 0x470a,
-  0x7744, 0x2231,
-  0x7745, 0x2233,
-  0x7746, 0x222f,
-  0x774a, 0x2234,
-  0x774b, 0x2236,
-  0x774d, 0x2232,
-  0x774e, 0x2235,
-  0x774f, 0x0cf4,
-  0x7752, 0x24c4,
-  0x7754, 0x24c9,
-  0x7755, 0x24c1,
-  0x7756, 0x24c5,
-  0x7758, 0x42e3,
-  0x7759, 0x24ca,
-  0x775a, 0x24c6,
-  0x775b, 0x0e92,
-  0x775c, 0x0e9a,
-  0x775e, 0x0e95,
-  0x775f, 0x24c2,
-  0x7761, 0x103d,
-  0x7762, 0x0e9d,
-  0x7763, 0x0e96,
-  0x7765, 0x0e9b,
-  0x7766, 0x0e94,
-  0x7767, 0x24c8,
-  0x7768, 0x0e9c,
-  0x7769, 0x24c7,
-  0x776a, 0x0e98,
-  0x776b, 0x0e93,
-  0x776c, 0x0e99,
-  0x776d, 0x24cb,
-  0x776e, 0x2743,
-  0x776f, 0x2745,
-  0x7772, 0x396b,
-  0x7777, 0x46a9,
-  0x7778, 0x3b00,
-  0x7779, 0x0e97,
-  0x777a, 0x4317,
-  0x777b, 0x3b04,
-  0x777c, 0x2740,
-  0x777d, 0x103b,
-  0x777e, 0x2746,
-  0x777f, 0x103c,
-  0x7780, 0x2744,
-  0x7781, 0x273f,
-  0x7782, 0x2742,
-  0x7783, 0x2747,
-  0x7784, 0x103a,
-  0x7785, 0x2741,
-  0x7787, 0x11b7,
-  0x7788, 0x2990,
-  0x7789, 0x298f,
-  0x778b, 0x11ba,
-  0x778c, 0x11b8,
-  0x778d, 0x298d,
-  0x778e, 0x11b6,
-  0x778f, 0x298e,
-  0x7791, 0x11b9,
-  0x7793, 0x382d,
-  0x7795, 0x2be6,
-  0x7797, 0x2be8,
-  0x7798, 0x470e,
-  0x7799, 0x2be7,
-  0x779a, 0x2bdf,
-  0x779b, 0x2be3,
-  0x779c, 0x2be2,
-  0x779d, 0x2be0,
-  0x779e, 0x1308,
-  0x77a0, 0x1307,
-  0x77a1, 0x2be1,
-  0x77a2, 0x2be4,
-  0x77a5, 0x130a,
-  0x77a7, 0x141c,
-  0x77a8, 0x2dc0,
-  0x77aa, 0x1419,
-  0x77ab, 0x2dba,
-  0x77ac, 0x141b,
-  0x77ad, 0x141d,
-  0x77af, 0x42e5,
-  0x77b0, 0x141a,
-  0x77b1, 0x2dbf,
-  0x77b2, 0x2dbb,
-  0x77b3, 0x1418,
-  0x77b4, 0x2dbe,
-  0x77b5, 0x2db9,
-  0x77b6, 0x2dbd,
-  0x77b7, 0x2dbc,
-  0x77b9, 0x3e73,
-  0x77ba, 0x2f6b,
-  0x77bb, 0x14fc,
-  0x77bd, 0x14fa,
-  0x77be, 0x4711,
-  0x77bf, 0x14fb,
-  0x77c2, 0x2f6a,
-  0x77c3, 0x3bb1,
-  0x77c4, 0x30c8,
-  0x77c5, 0x41c1,
-  0x77c7, 0x159e,
-  0x77c9, 0x30c6,
-  0x77cb, 0x4712,
-  0x77cc, 0x31fe,
-  0x77cd, 0x3201,
-  0x77ce, 0x31ff,
-  0x77d0, 0x32e5,
-  0x77d3, 0x1680,
-  0x77d4, 0x3429,
-  0x77d5, 0x348f,
-  0x77d7, 0x1725,
-  0x77d8, 0x34d3,
-  0x77da, 0x1753,
-  0x77db, 0x0367,
-  0x77dc, 0x07ba,
-  0x77de, 0x2238,
-  0x77e0, 0x24cc,
-  0x77e2, 0x0368,
-  0x77e3, 0x04f6,
-  0x77e5, 0x065d,
-  0x77e6, 0x4081,
-  0x77e7, 0x1b9f,
-  0x77e9, 0x0949,
-  0x77ec, 0x2239,
-  0x77ed, 0x0cf5,
-  0x77ee, 0x0e9e,
-  0x77ef, 0x141e,
-  0x77f0, 0x2dc1,
-  0x77f1, 0x30c9,
-  0x77f2, 0x3202,
-  0x77f3, 0x0369,
-  0x77f4, 0x42e9,
-  0x77f7, 0x1a1e,
-  0x77f8, 0x1a19,
-  0x77f9, 0x1a1b,
-  0x77fa, 0x1a1d,
-  0x77fb, 0x1a1c,
-  0x77fc, 0x1a1a,
-  0x77fd, 0x065e,
-  0x77fe, 0x3fd5,
-  0x7802, 0x07bb,
-  0x7803, 0x1ba9,
-  0x7805, 0x1ba4,
-  0x7806, 0x1ba1,
-  0x7808, 0x3e46,
-  0x7809, 0x1ba8,
-  0x780c, 0x07bd,
-  0x780e, 0x1ba7,
-  0x780f, 0x1ba6,
-  0x7810, 0x1ba5,
-  0x7811, 0x1ba2,
-  0x7813, 0x1baa,
-  0x7814, 0x07bc,
-  0x7818, 0x4713,
-  0x781c, 0x4714,
-  0x781d, 0x094d,
-  0x781e, 0x3b13,
-  0x781f, 0x0953,
-  0x7820, 0x0952,
-  0x7821, 0x1d6f,
-  0x7822, 0x1d69,
-  0x7823, 0x1d67,
-  0x7825, 0x0950,
-  0x7826, 0x1fbb,
-  0x7827, 0x094b,
-  0x7828, 0x1d6c,
-  0x7829, 0x1d70,
-  0x782a, 0x1d72,
-  0x782b, 0x1d6e,
-  0x782c, 0x1d68,
-  0x782d, 0x0951,
-  0x782e, 0x1d6d,
-  0x782f, 0x1d6b,
-  0x7830, 0x094a,
-  0x7831, 0x1d73,
-  0x7832, 0x0954,
-  0x7833, 0x1d71,
-  0x7834, 0x094e,
-  0x7835, 0x1d6a,
-  0x7837, 0x094f,
-  0x7838, 0x094c,
-  0x7839, 0x43d6,
-  0x783c, 0x401a,
-  0x783d, 0x3c6a,
-  0x7842, 0x3ac4,
-  0x7843, 0x0b40,
-  0x7844, 0x3c2b,
-  0x7845, 0x1fbc,
-  0x7847, 0x4715,
-  0x7848, 0x1fb5,
-  0x7849, 0x1fb7,
-  0x784a, 0x1fb9,
-  0x784b, 0x3c6d,
-  0x784c, 0x1fba,
-  0x784d, 0x1fb8,
-  0x784e, 0x0b41,
-  0x7850, 0x1fbd,
-  0x7851, 0x4716,
-  0x7852, 0x1fb6,
-  0x7853, 0x3f95,
-  0x7854, 0x3c6b,
-  0x785c, 0x223d,
-  0x785d, 0x0cf6,
-  0x785e, 0x2245,
-  0x7860, 0x223a,
-  0x7862, 0x2246,
-  0x7864, 0x223b,
-  0x7866, 0x4717,
-  0x7868, 0x2244,
-  0x7869, 0x2243,
-  0x786a, 0x2240,
-  0x786b, 0x0b3f,
-  0x786c, 0x0cf7,
-  0x786d, 0x223e,
-  0x786e, 0x2241,
-  0x786f, 0x0cf8,
-  0x7870, 0x2242,
-  0x7871, 0x223f,
-  0x7879, 0x24d7,
-  0x787a, 0x3ee9,
-  0x787b, 0x24db,
-  0x787c, 0x0ea5,
-  0x787e, 0x274d,
-  0x787f, 0x0ea8,
-  0x7880, 0x24d9,
-  0x7881, 0x36e8,
-  0x7883, 0x24d6,
-  0x7884, 0x24d1,
-  0x7885, 0x24d3,
-  0x7887, 0x24cd,
-  0x7888, 0x3b15,
-  0x7889, 0x0ea4,
-  0x788c, 0x0ea3,
-  0x788d, 0x3b14,
-  0x788e, 0x0e9f,
-  0x788f, 0x24d0,
-  0x7891, 0x0ea6,
-  0x7893, 0x0ea7,
-  0x7894, 0x24cf,
-  0x7895, 0x24d2,
-  0x7896, 0x24da,
-  0x7897, 0x0ea1,
-  0x7899, 0x24d8,
-  0x789a, 0x24ce,
-  0x789e, 0x274f,
-  0x789f, 0x103f,
-  0x78a0, 0x2751,
-  0x78a1, 0x24d5,
-  0x78a2, 0x2753,
-  0x78a3, 0x1043,
-  0x78a4, 0x2754,
-  0x78a5, 0x2750,
-  0x78a7, 0x1040,
-  0x78a8, 0x274c,
-  0x78a9, 0x1042,
-  0x78aa, 0x2749,
-  0x78ab, 0x274e,
-  0x78ac, 0x2752,
-  0x78ad, 0x274b,
-  0x78af, 0x42ec,
-  0x78b0, 0x0ea0,
-  0x78b1, 0x42f4,
-  0x78b2, 0x2748,
-  0x78b3, 0x1041,
-  0x78b4, 0x274a,
-  0x78b6, 0x3c6c,
-  0x78b8, 0x4571,
-  0x78b9, 0x3c63,
-  0x78ba, 0x11bd,
-  0x78bb, 0x2992,
-  0x78bc, 0x11c1,
-  0x78be, 0x11bf,
-  0x78c1, 0x103e,
-  0x78c3, 0x2999,
-  0x78c5, 0x11bc,
-  0x78c7, 0x42ed,
-  0x78c8, 0x2998,
-  0x78c9, 0x299b,
-  0x78ca, 0x11be,
-  0x78cb, 0x11bb,
-  0x78cc, 0x2994,
-  0x78cd, 0x2991,
-  0x78ce, 0x2996,
-  0x78cf, 0x2993,
-  0x78d0, 0x11c2,
-  0x78d1, 0x2995,
-  0x78d2, 0x3b16,
-  0x78d3, 0x42ee,
-  0x78d4, 0x2997,
-  0x78d5, 0x11c0,
-  0x78d7, 0x42f2,
-  0x78d8, 0x3f8c,
-  0x78da, 0x130c,
-  0x78db, 0x2bef,
-  0x78dd, 0x2be9,
-  0x78de, 0x2bed,
-  0x78df, 0x2bf3,
-  0x78e1, 0x2bf0,
-  0x78e3, 0x2bee,
-  0x78e5, 0x2beb,
-  0x78e7, 0x130e,
-  0x78e8, 0x130b,
-  0x78e9, 0x2bea,
-  0x78ea, 0x2bec,
-  0x78ec, 0x130d,
-  0x78ed, 0x2bf2,
-  0x78ee, 0x3a81,
-  0x78ef, 0x1422,
-  0x78f0, 0x3b3a,
-  0x78f1, 0x40be,
-  0x78f2, 0x2dc8,
-  0x78f3, 0x2dc2,
-  0x78f4, 0x1421,
-  0x78f5, 0x38b3,
-  0x78f7, 0x141f,
-  0x78f9, 0x2dca,
-  0x78fa, 0x1420,
-  0x78fb, 0x2dc5,
-  0x78fd, 0x2dc3,
-  0x78fe, 0x2dcb,
-  0x78ff, 0x2dc7,
-  0x7901, 0x1423,
-  0x7902, 0x2dc4,
-  0x7904, 0x2dcc,
-  0x7905, 0x2dc9,
-  0x7906, 0x3fcf,
-  0x7909, 0x2f6f,
-  0x790c, 0x2f6c,
-  0x790e, 0x14fe,
-  0x7910, 0x2f70,
-  0x7911, 0x2f72,
-  0x7912, 0x2f71,
-  0x7913, 0x2f6d,
-  0x7917, 0x30ce,
-  0x7919, 0x159f,
-  0x791b, 0x30cb,
-  0x791c, 0x30cd,
-  0x791d, 0x30ca,
-  0x791e, 0x30cf,
-  0x7921, 0x30cc,
-  0x7923, 0x3204,
-  0x7924, 0x3207,
-  0x7925, 0x3203,
-  0x7926, 0x1624,
-  0x7927, 0x3205,
-  0x7929, 0x3208,
-  0x792a, 0x1625,
-  0x792b, 0x1627,
-  0x792c, 0x1626,
-  0x792d, 0x32e6,
-  0x792e, 0x42f0,
-  0x792f, 0x32e8,
-  0x7931, 0x32e7,
-  0x7932, 0x471b,
-  0x7933, 0x471a,
-  0x7934, 0x42f3,
-  0x7935, 0x3397,
-  0x7936, 0x3783,
-  0x7938, 0x3490,
-  0x7939, 0x34d5,
-  0x793a, 0x036a,
-  0x793b, 0x44f7,
-  0x793c, 0x4300,
-  0x793d, 0x18d7,
-  0x793e, 0x065f,
-  0x793f, 0x1a20,
-  0x7940, 0x0660,
-  0x7942, 0x1a1f,
-  0x7944, 0x1baf,
-  0x7945, 0x1bae,
-  0x7946, 0x07bf,
-  0x7947, 0x07c2,
-  0x7948, 0x07c1,
-  0x7949, 0x07c0,
-  0x794a, 0x1bab,
-  0x794b, 0x1bad,
-  0x794c, 0x1bac,
-  0x794f, 0x1d76,
-  0x7950, 0x0956,
-  0x7951, 0x1d7a,
-  0x7952, 0x1d79,
-  0x7953, 0x1d78,
-  0x7954, 0x1d74,
-  0x7955, 0x0955,
-  0x7956, 0x0959,
-  0x7957, 0x095c,
-  0x7958, 0x37e5,
-  0x7959, 0x3b18,
-  0x795a, 0x095d,
-  0x795b, 0x1d75,
-  0x795c, 0x1d77,
-  0x795d, 0x095b,
-  0x795e, 0x095a,
-  0x795f, 0x0958,
-  0x7960, 0x0957,
-  0x7961, 0x1fc4,
-  0x7962, 0x3e7d,
-  0x7963, 0x1fc2,
-  0x7964, 0x1fbe,
-  0x7965, 0x0b42,
-  0x7967, 0x1fbf,
-  0x7968, 0x0b43,
-  0x7969, 0x1fc0,
-  0x796b, 0x1fc3,
-  0x796d, 0x0b44,
-  0x7970, 0x224a,
-  0x7971, 0x4168,
-  0x7972, 0x2249,
-  0x7973, 0x2248,
-  0x7974, 0x2247,
-  0x7979, 0x24df,
-  0x797a, 0x0ea9,
-  0x797c, 0x24dc,
-  0x797d, 0x24de,
-  0x797e, 0x3e26,
-  0x797f, 0x0eaa,
-  0x7980, 0x42fc,
-  0x7981, 0x0eab,
-  0x7982, 0x24dd,
-  0x7983, 0x3df6,
-  0x7986, 0x42f9,
-  0x7987, 0x4588,
-  0x7988, 0x275d,
-  0x798a, 0x2756,
-  0x798d, 0x1046,
-  0x798e, 0x1044,
-  0x7990, 0x275f,
-  0x7991, 0x471d,
-  0x7992, 0x275e,
-  0x7993, 0x275b,
-  0x7994, 0x275a,
-  0x7995, 0x2759,
-  0x7996, 0x2758,
-  0x7997, 0x275c,
-  0x7998, 0x2755,
-  0x7999, 0x43fc,
-  0x799a, 0x299c,
-  0x799b, 0x29a1,
-  0x799c, 0x299f,
-  0x799d, 0x42fe,
-  0x799f, 0x395e,
-  0x79a0, 0x299e,
-  0x79a1, 0x299d,
-  0x79a2, 0x29a0,
-  0x79a4, 0x2bf5,
-  0x79a5, 0x3b1e,
-  0x79a6, 0x130f,
-  0x79a7, 0x1424,
-  0x79a8, 0x2dce,
-  0x79a9, 0x4301,
-  0x79aa, 0x1425,
-  0x79ab, 0x2dcd,
-  0x79ac, 0x2f74,
-  0x79ad, 0x2f73,
-  0x79ae, 0x14ff,
-  0x79b0, 0x30d0,
-  0x79b1, 0x15a0,
-  0x79b2, 0x3209,
-  0x79b3, 0x16cf,
-  0x79b4, 0x3398,
-  0x79b6, 0x3492,
-  0x79b7, 0x3491,
-  0x79b8, 0x17b2,
-  0x79b9, 0x07c3,
-  0x79bb, 0x1fc5,
-  0x79bd, 0x0ead,
-  0x79be, 0x036b,
-  0x79bf, 0x04f9,
-  0x79c0, 0x04f8,
-  0x79c1, 0x04f7,
-  0x79c4, 0x3ccd,
-  0x79c5, 0x1a21,
-  0x79c6, 0x4305,
-  0x79c8, 0x0663,
-  0x79c9, 0x0662,
-  0x79cb, 0x07c7,
-  0x79cc, 0x4233,
-  0x79cd, 0x1bb1,
-  0x79ce, 0x1bb4,
-  0x79cf, 0x1bb2,
-  0x79d1, 0x07c5,
-  0x79d4, 0x4307,
-  0x79d5, 0x1bb0,
-  0x79d6, 0x1bb3,
-  0x79d8, 0x0964,
-  0x79dc, 0x1d81,
-  0x79dd, 0x1d83,
-  0x79de, 0x1d82,
-  0x79df, 0x0961,
-  0x79e0, 0x1d7d,
-  0x79e2, 0x3c5a,
-  0x79e3, 0x095f,
-  0x79e4, 0x095e,
-  0x79e6, 0x0962,
-  0x79e7, 0x0960,
-  0x79e9, 0x0963,
-  0x79ea, 0x1d80,
-  0x79eb, 0x1d7b,
-  0x79ed, 0x1d7f,
-  0x79ee, 0x1d7e,
-  0x79f1, 0x3b27,
-  0x79f4, 0x3b22,
-  0x79f6, 0x1fc8,
-  0x79f8, 0x1fc7,
-  0x79fa, 0x1fc6,
-  0x79fb, 0x0b45,
-  0x7a00, 0x0cfd,
-  0x7a02, 0x224b,
-  0x7a03, 0x224d,
-  0x7a04, 0x224f,
-  0x7a05, 0x0cfc,
-  0x7a06, 0x471e,
-  0x7a08, 0x0cfa,
-  0x7a0a, 0x224c,
-  0x7a0b, 0x0cfb,
-  0x7a0c, 0x224e,
-  0x7a0d, 0x0cf9,
-  0x7a10, 0x24e9,
-  0x7a11, 0x24e0,
-  0x7a12, 0x24e3,
-  0x7a13, 0x24e7,
-  0x7a14, 0x0eb1,
-  0x7a15, 0x24e5,
-  0x7a17, 0x24e4,
-  0x7a18, 0x24e1,
-  0x7a1a, 0x0eaf,
-  0x7a1b, 0x24e8,
-  0x7a1c, 0x0eae,
-  0x7a1e, 0x0eb3,
-  0x7a1f, 0x0eb2,
-  0x7a20, 0x0eb0,
-  0x7a22, 0x24e6,
-  0x7a26, 0x2765,
-  0x7a28, 0x2764,
-  0x7a2b, 0x2760,
-  0x7a2d, 0x3fda,
-  0x7a2e, 0x1047,
-  0x7a2f, 0x2763,
-  0x7a30, 0x2762,
-  0x7a31, 0x1048,
-  0x7a37, 0x11c7,
-  0x7a39, 0x29a3,
-  0x7a3a, 0x3b21,
-  0x7a3b, 0x11c8,
-  0x7a3c, 0x11c4,
-  0x7a3d, 0x11c6,
-  0x7a3e, 0x3f8b,
-  0x7a3f, 0x11c3,
-  0x7a40, 0x11c5,
-  0x7a43, 0x396c,
-  0x7a44, 0x2bf6,
-  0x7a45, 0x3df1,
-  0x7a46, 0x1312,
-  0x7a47, 0x2bf8,
-  0x7a48, 0x2bf7,
-  0x7a49, 0x3733,
-  0x7a4a, 0x2761,
-  0x7a4b, 0x1314,
-  0x7a4c, 0x1313,
-  0x7a4d, 0x1310,
-  0x7a54, 0x2dd3,
-  0x7a56, 0x2dd1,
-  0x7a57, 0x1426,
-  0x7a58, 0x2dd2,
-  0x7a5a, 0x2dd4,
-  0x7a5b, 0x2dd0,
-  0x7a5c, 0x2dcf,
-  0x7a5f, 0x2f75,
-  0x7a60, 0x1502,
-  0x7a61, 0x1500,
-  0x7a65, 0x3736,
-  0x7a67, 0x30d1,
-  0x7a69, 0x15a2,
-  0x7a6b, 0x15a1,
-  0x7a6c, 0x320b,
-  0x7a6e, 0x320a,
-  0x7a70, 0x3399,
-  0x7a74, 0x036c,
-  0x7a75, 0x1811,
-  0x7a76, 0x04fa,
-  0x7a78, 0x1a22,
-  0x7a79, 0x0665,
-  0x7a7a, 0x0664,
-  0x7a7b, 0x1a23,
-  0x7a7d, 0x3737,
-  0x7a7e, 0x1bb6,
-  0x7a7f, 0x07c8,
-  0x7a80, 0x1bb5,
-  0x7a81, 0x07c9,
-  0x7a83, 0x3d7d,
-  0x7a84, 0x0965,
-  0x7a85, 0x1d86,
-  0x7a86, 0x1d84,
-  0x7a87, 0x1d8a,
-  0x7a88, 0x0966,
-  0x7a89, 0x1d85,
-  0x7a8a, 0x1d89,
-  0x7a8b, 0x1d87,
-  0x7a8f, 0x1fca,
-  0x7a90, 0x1fcc,
-  0x7a91, 0x43d8,
-  0x7a92, 0x0b46,
-  0x7a94, 0x1fcb,
-  0x7a95, 0x0b47,
-  0x7a96, 0x0d00,
-  0x7a97, 0x0cff,
-  0x7a98, 0x0cfe,
-  0x7a99, 0x2250,
-  0x7a9e, 0x24ec,
-  0x7a9f, 0x0eb4,
-  0x7aa2, 0x24eb,
-  0x7aa3, 0x24ea,
-  0x7aa8, 0x2766,
-  0x7aa9, 0x104a,
-  0x7aaa, 0x1049,
-  0x7aab, 0x2767,
-  0x7aae, 0x11ca,
-  0x7aaf, 0x11c9,
-  0x7ab0, 0x373a,
-  0x7ab1, 0x2bfc,
-  0x7ab2, 0x29a4,
-  0x7ab3, 0x29a6,
-  0x7ab4, 0x29a5,
-  0x7ab5, 0x2bfb,
-  0x7ab6, 0x2bf9,
-  0x7ab7, 0x2bfd,
-  0x7ab8, 0x2bfa,
-  0x7aba, 0x1315,
-  0x7abb, 0x3739,
-  0x7abc, 0x4721,
-  0x7abe, 0x2dd5,
-  0x7abf, 0x1427,
-  0x7ac0, 0x2dd6,
-  0x7ac2, 0x373b,
-  0x7ac4, 0x1503,
-  0x7ac7, 0x1628,
-  0x7ac8, 0x3d7f,
-  0x7ac9, 0x4570,
-  0x7aca, 0x16ff,
-  0x7acb, 0x036d,
-  0x7acf, 0x4724,
-  0x7ad1, 0x1bb7,
-  0x7ad3, 0x3f8a,
-  0x7ad8, 0x1d8b,
-  0x7ad9, 0x0967,
-  0x7ada, 0x3740,
-  0x7adb, 0x4725,
-  0x7adc, 0x3951,
-  0x7add, 0x3741,
-  0x7adf, 0x0bde,
-  0x7ae0, 0x0bdd,
-  0x7ae2, 0x3b33,
-  0x7ae3, 0x0d02,
-  0x7ae4, 0x2252,
-  0x7ae5, 0x0d01,
-  0x7ae6, 0x2251,
-  0x7ae7, 0x385d,
-  0x7ae9, 0x3831,
-  0x7aea, 0x3742,
-  0x7aeb, 0x24ed,
-  0x7aed, 0x104b,
-  0x7aee, 0x2769,
-  0x7aef, 0x104c,
-  0x7af6, 0x1629,
-  0x7af7, 0x320d,
-  0x7af9, 0x03f6,
-  0x7afa, 0x0666,
-  0x7afb, 0x1a24,
-  0x7afd, 0x07cb,
-  0x7afe, 0x3b3d,
-  0x7aff, 0x07ca,
-  0x7b00, 0x1bb8,
-  0x7b04, 0x1d8d,
-  0x7b05, 0x1d8f,
-  0x7b06, 0x0968,
-  0x7b08, 0x1d91,
-  0x7b09, 0x1d94,
-  0x7b0a, 0x1d92,
-  0x7b0b, 0x3746,
-  0x7b0c, 0x3b63,
-  0x7b0e, 0x1d93,
-  0x7b0f, 0x1d90,
-  0x7b10, 0x1d8c,
-  0x7b11, 0x0969,
-  0x7b12, 0x1d95,
-  0x7b13, 0x1d8e,
-  0x7b14, 0x3f77,
-  0x7b18, 0x1fd5,
-  0x7b19, 0x0b4d,
-  0x7b1a, 0x1fde,
-  0x7b1b, 0x0b4a,
-  0x7b1d, 0x1fd7,
-  0x7b1e, 0x0b4e,
-  0x7b1f, 0x3f11,
-  0x7b20, 0x0b48,
-  0x7b22, 0x1fd2,
-  0x7b23, 0x1fdf,
-  0x7b24, 0x1fd3,
-  0x7b25, 0x1fd0,
-  0x7b26, 0x0b4c,
-  0x7b27, 0x3b5f,
-  0x7b28, 0x0b49,
-  0x7b29, 0x3748,
-  0x7b2a, 0x1fd6,
-  0x7b2b, 0x1fd9,
-  0x7b2c, 0x0b4b,
-  0x7b2d, 0x1fda,
-  0x7b2e, 0x0b4f,
-  0x7b2f, 0x1fdb,
-  0x7b30, 0x1fd1,
-  0x7b31, 0x1fd8,
-  0x7b32, 0x1fdc,
-  0x7b33, 0x1fd4,
-  0x7b34, 0x1fcf,
-  0x7b35, 0x1fcd,
-  0x7b38, 0x1fdd,
-  0x7b39, 0x3d6e,
-  0x7b3b, 0x1fce,
-  0x7b40, 0x2259,
-  0x7b42, 0x3ded,
-  0x7b43, 0x3e25,
-  0x7b44, 0x2255,
-  0x7b45, 0x225b,
-  0x7b46, 0x0d05,
-  0x7b47, 0x2254,
-  0x7b48, 0x2256,
-  0x7b49, 0x0d03,
-  0x7b4a, 0x2253,
-  0x7b4b, 0x0d0a,
-  0x7b4c, 0x2257,
-  0x7b4d, 0x0d09,
-  0x7b4e, 0x2258,
-  0x7b4f, 0x0d0b,
-  0x7b50, 0x0d06,
-  0x7b51, 0x0d0c,
-  0x7b52, 0x0d07,
-  0x7b54, 0x0d08,
-  0x7b55, 0x3747,
-  0x7b56, 0x0d04,
-  0x7b58, 0x225a,
-  0x7b60, 0x0eb8,
-  0x7b61, 0x24f8,
-  0x7b62, 0x4727,
-  0x7b63, 0x24fb,
-  0x7b64, 0x24ef,
-  0x7b65, 0x24f4,
-  0x7b66, 0x24ee,
-  0x7b67, 0x0eba,
-  0x7b69, 0x24f2,
-  0x7b6c, 0x4728,
-  0x7b6d, 0x24f0,
-  0x7b6e, 0x0eb9,
-  0x7b6f, 0x374c,
-  0x7b70, 0x24f7,
-  0x7b71, 0x24f6,
-  0x7b72, 0x24f3,
-  0x7b73, 0x24f5,
-  0x7b74, 0x24f1,
-  0x7b75, 0x1050,
-  0x7b76, 0x24fa,
-  0x7b77, 0x0eb6,
-  0x7b78, 0x24f9,
-  0x7b7b, 0x4729,
-  0x7b82, 0x2779,
-  0x7b84, 0x1057,
-  0x7b85, 0x2774,
-  0x7b87, 0x1056,
-  0x7b88, 0x276a,
-  0x7b8a, 0x276c,
-  0x7b8b, 0x104f,
-  0x7b8c, 0x2771,
-  0x7b8d, 0x2770,
-  0x7b8e, 0x2773,
-  0x7b8f, 0x1054,
-  0x7b90, 0x276e,
-  0x7b91, 0x276d,
-  0x7b92, 0x3752,
-  0x7b94, 0x1053,
-  0x7b95, 0x104e,
-  0x7b96, 0x276f,
-  0x7b97, 0x1051,
-  0x7b98, 0x2775,
-  0x7b99, 0x2777,
-  0x7b9b, 0x2772,
-  0x7b9c, 0x276b,
-  0x7b9d, 0x1052,
-  0x7ba0, 0x11d2,
-  0x7ba1, 0x104d,
-  0x7ba2, 0x374b,
-  0x7ba3, 0x3f14,
-  0x7ba4, 0x2778,
-  0x7bac, 0x29aa,
-  0x7bad, 0x11cb,
-  0x7baf, 0x29ac,
-  0x7bb1, 0x11cc,
-  0x7bb2, 0x461c,
-  0x7bb4, 0x11ce,
-  0x7bb5, 0x29af,
-  0x7bb7, 0x29a7,
-  0x7bb8, 0x1055,
-  0x7bb9, 0x29ad,
-  0x7bbe, 0x29a9,
-  0x7bc0, 0x0eb7,
-  0x7bc1, 0x11d1,
-  0x7bc4, 0x11cd,
-  0x7bc6, 0x11cf,
-  0x7bc9, 0x1318,
-  0x7bca, 0x29ae,
-  0x7bcb, 0x29a8,
-  0x7bcc, 0x11d3,
-  0x7bce, 0x29ab,
-  0x7bcf, 0x3f18,
-  0x7bd0, 0x3750,
-  0x7bd4, 0x2c07,
-  0x7bd5, 0x2c02,
-  0x7bd8, 0x2c0c,
-  0x7bd9, 0x1316,
-  0x7bda, 0x2c04,
-  0x7bdb, 0x131a,
-  0x7bdc, 0x2c0a,
-  0x7bdd, 0x2c01,
-  0x7bde, 0x2bfe,
-  0x7bdf, 0x2c0d,
-  0x7be0, 0x142d,
-  0x7be1, 0x131b,
-  0x7be2, 0x2c09,
-  0x7be3, 0x2bff,
-  0x7be4, 0x1319,
-  0x7be5, 0x2c03,
-  0x7be6, 0x131d,
-  0x7be7, 0x2c00,
-  0x7be8, 0x2c05,
-  0x7be9, 0x131c,
-  0x7bea, 0x2c08,
-  0x7beb, 0x2c0b,
-  0x7bf0, 0x2de9,
-  0x7bf2, 0x2dda,
-  0x7bf3, 0x2de1,
-  0x7bf4, 0x2ddf,
-  0x7bf7, 0x142b,
-  0x7bf8, 0x2de6,
-  0x7bf9, 0x2c06,
-  0x7bfa, 0x3757,
-  0x7bfb, 0x2ddd,
-  0x7bfc, 0x3f1f,
-  0x7bfd, 0x2de7,
-  0x7bfe, 0x142a,
-  0x7bff, 0x2ddc,
-  0x7c00, 0x2ddb,
-  0x7c01, 0x2de5,
-  0x7c02, 0x2de2,
-  0x7c03, 0x2de4,
-  0x7c05, 0x2dd8,
-  0x7c06, 0x2de8,
-  0x7c07, 0x1428,
-  0x7c09, 0x2de3,
-  0x7c0a, 0x2dec,
-  0x7c0b, 0x2de0,
-  0x7c0c, 0x142c,
-  0x7c0d, 0x1429,
-  0x7c0e, 0x2dde,
-  0x7c0f, 0x2dd9,
-  0x7c10, 0x2deb,
-  0x7c11, 0x1317,
-  0x7c12, 0x472a,
-  0x7c15, 0x4061,
-  0x7c19, 0x2f78,
-  0x7c1b, 0x43d9,
-  0x7c1c, 0x2f76,
-  0x7c1d, 0x2f7c,
-  0x7c1e, 0x1508,
-  0x7c1f, 0x2f7a,
-  0x7c20, 0x2f79,
-  0x7c21, 0x150a,
-  0x7c22, 0x2f7f,
-  0x7c23, 0x1509,
-  0x7c25, 0x2f80,
-  0x7c26, 0x2f7d,
-  0x7c27, 0x1506,
-  0x7c28, 0x2f7e,
-  0x7c29, 0x2f77,
-  0x7c2a, 0x1507,
-  0x7c2b, 0x1505,
-  0x7c2c, 0x30d6,
-  0x7c2d, 0x2f7b,
-  0x7c30, 0x2f81,
-  0x7c33, 0x30d3,
-  0x7c35, 0x3759,
-  0x7c37, 0x15a7,
-  0x7c38, 0x15a5,
-  0x7c39, 0x30d5,
-  0x7c3b, 0x30d7,
-  0x7c3c, 0x30d4,
-  0x7c3d, 0x15a6,
-  0x7c3e, 0x15a3,
-  0x7c40, 0x15a8,
-  0x7c42, 0x3f1c,
-  0x7c43, 0x162b,
-  0x7c44, 0x375b,
-  0x7c45, 0x3212,
-  0x7c47, 0x3211,
-  0x7c48, 0x320f,
-  0x7c49, 0x320e,
-  0x7c4a, 0x3210,
-  0x7c4c, 0x162a,
-  0x7c4d, 0x162c,
-  0x7c50, 0x1681,
-  0x7c51, 0x3fb8,
-  0x7c53, 0x32ea,
-  0x7c54, 0x32e9,
-  0x7c56, 0x3eff,
-  0x7c57, 0x339b,
-  0x7c59, 0x339d,
-  0x7c5a, 0x339f,
-  0x7c5b, 0x339e,
-  0x7c5c, 0x339c,
-  0x7c5d, 0x3b3f,
-  0x7c5f, 0x16d1,
-  0x7c60, 0x16d0,
-  0x7c63, 0x1701,
-  0x7c64, 0x1700,
-  0x7c65, 0x1702,
-  0x7c66, 0x342b,
-  0x7c67, 0x342a,
-  0x7c69, 0x34d6,
-  0x7c6a, 0x3493,
-  0x7c6b, 0x34d7,
-  0x7c6c, 0x1745,
-  0x7c6d, 0x3b40,
-  0x7c6e, 0x1746,
-  0x7c6f, 0x3507,
-  0x7c70, 0x3f52,
-  0x7c72, 0x176b,
-  0x7c73, 0x03f7,
-  0x7c74, 0x469c,
-  0x7c75, 0x1a25,
-  0x7c78, 0x1bbb,
-  0x7c7a, 0x1bba,
-  0x7c7b, 0x472d,
-  0x7c7c, 0x3b49,
-  0x7c7d, 0x07cc,
-  0x7c7e, 0x3f1a,
-  0x7c7f, 0x1bbd,
-  0x7c83, 0x375c,
-  0x7c84, 0x1d96,
-  0x7c85, 0x1d9c,
-  0x7c86, 0x3f1d,
-  0x7c88, 0x1d9a,
-  0x7c89, 0x096a,
-  0x7c8a, 0x1d98,
-  0x7c8c, 0x1d99,
-  0x7c8d, 0x1d9b,
-  0x7c8e, 0x3b48,
-  0x7c91, 0x1d97,
-  0x7c92, 0x0b50,
-  0x7c94, 0x1fe0,
-  0x7c95, 0x0b52,
-  0x7c96, 0x1fe2,
-  0x7c97, 0x0b51,
-  0x7c98, 0x1fe1,
-  0x7c9c, 0x472e,
-  0x7c9e, 0x225d,
-  0x7c9f, 0x0d0d,
-  0x7ca1, 0x225f,
-  0x7ca2, 0x225c,
-  0x7ca3, 0x1fe3,
-  0x7ca5, 0x0d0e,
-  0x7ca6, 0x375e,
-  0x7ca7, 0x36ed,
-  0x7ca8, 0x225e,
-  0x7cac, 0x3885,
-  0x7cae, 0x3b4a,
-  0x7caf, 0x24fe,
-  0x7cb1, 0x0ebb,
-  0x7cb2, 0x24fc,
-  0x7cb3, 0x0ebc,
-  0x7cb4, 0x24fd,
-  0x7cb5, 0x0ebd,
-  0x7cb8, 0x4730,
-  0x7cb9, 0x1058,
-  0x7cba, 0x277d,
-  0x7cbb, 0x277a,
-  0x7cbc, 0x277c,
-  0x7cbd, 0x1059,
-  0x7cbf, 0x277b,
-  0x7cc2, 0x3fd7,
-  0x7cc5, 0x29b0,
-  0x7cc7, 0x3761,
-  0x7cc8, 0x29b1,
-  0x7cc9, 0x3760,
-  0x7cca, 0x11d4,
-  0x7ccb, 0x29b3,
-  0x7ccc, 0x29b2,
-  0x7ccd, 0x3b45,
-  0x7cce, 0x0121,
-  0x7cd0, 0x2c11,
-  0x7cd2, 0x2c0e,
-  0x7cd3, 0x3d5c,
-  0x7cd4, 0x2c0f,
-  0x7cd5, 0x131e,
-  0x7cd7, 0x2c10,
-  0x7cd9, 0x1433,
-  0x7cda, 0x3fd9,
-  0x7cdc, 0x142f,
-  0x7cdd, 0x1434,
-  0x7cde, 0x1430,
-  0x7cdf, 0x1432,
-  0x7ce0, 0x142e,
-  0x7ce2, 0x1431,
-  0x7ce6, 0x3762,
-  0x7ce7, 0x150b,
-  0x7ce8, 0x2ded,
-  0x7cea, 0x30d9,
-  0x7cec, 0x30d8,
-  0x7ced, 0x43da,
-  0x7cee, 0x3213,
-  0x7cef, 0x162d,
-  0x7cf1, 0x33a1,
-  0x7cf2, 0x32eb,
-  0x7cf3, 0x3764,
-  0x7cf4, 0x33a0,
-  0x7cf5, 0x3765,
-  0x7cf6, 0x34d8,
-  0x7cf7, 0x351d,
-  0x7cf8, 0x03f8,
-  0x7cf9, 0x44f8,
-  0x7cfb, 0x04fb,
-  0x7cfc, 0x456d,
-  0x7cfd, 0x1a26,
-  0x7cfe, 0x0667,
-  0x7d00, 0x07cf,
-  0x7d01, 0x1bc2,
-  0x7d02, 0x07cd,
-  0x7d03, 0x1bc0,
-  0x7d04, 0x07d2,
-  0x7d05, 0x07ce,
-  0x7d06, 0x07d3,
-  0x7d07, 0x07d1,
-  0x7d08, 0x1bc1,
-  0x7d09, 0x07d0,
-  0x7d0a, 0x096e,
-  0x7d0b, 0x096d,
-  0x7d0c, 0x1da7,
-  0x7d0d, 0x0976,
-  0x7d0e, 0x1da0,
-  0x7d0f, 0x1da6,
-  0x7d10, 0x0972,
-  0x7d11, 0x1d9f,
-  0x7d12, 0x1da5,
-  0x7d13, 0x1da3,
-  0x7d14, 0x0971,
-  0x7d15, 0x0973,
-  0x7d16, 0x1da2,
-  0x7d17, 0x096c,
-  0x7d18, 0x1da1,
-  0x7d19, 0x0977,
-  0x7d1a, 0x0974,
-  0x7d1b, 0x0978,
-  0x7d1c, 0x0975,
-  0x7d1d, 0x1d9e,
-  0x7d1e, 0x1d9d,
-  0x7d1f, 0x1da4,
-  0x7d20, 0x096f,
-  0x7d21, 0x096b,
-  0x7d22, 0x0970,
-  0x7d25, 0x3ede,
-  0x7d28, 0x1ff2,
-  0x7d29, 0x1feb,
-  0x7d2b, 0x0d13,
-  0x7d2c, 0x1fea,
-  0x7d2e, 0x0b56,
-  0x7d2f, 0x0b5d,
-  0x7d30, 0x0b5a,
-  0x7d31, 0x0b60,
-  0x7d32, 0x0b5f,
-  0x7d33, 0x0b5b,
-  0x7d35, 0x1fe4,
-  0x7d36, 0x1fe7,
-  0x7d38, 0x1fe6,
-  0x7d39, 0x0b57,
-  0x7d3a, 0x1fe8,
-  0x7d3b, 0x1ff1,
-  0x7d3c, 0x0b58,
-  0x7d3d, 0x1fe5,
-  0x7d3e, 0x1fee,
-  0x7d40, 0x0b59,
-  0x7d41, 0x1fec,
-  0x7d42, 0x0b5e,
-  0x7d43, 0x0b54,
-  0x7d44, 0x0b5c,
-  0x7d45, 0x1fe9,
-  0x7d46, 0x0b53,
-  0x7d47, 0x1fed,
-  0x7d4a, 0x1ff0,
-  0x7d4d, 0x3fdd,
-  0x7d4e, 0x2270,
-  0x7d4f, 0x2267,
-  0x7d50, 0x0d10,
-  0x7d51, 0x226e,
-  0x7d52, 0x226b,
-  0x7d53, 0x2263,
-  0x7d54, 0x226c,
-  0x7d55, 0x0d12,
-  0x7d56, 0x2264,
-  0x7d58, 0x2260,
-  0x7d5a, 0x3e93,
-  0x7d5b, 0x0ec3,
-  0x7d5c, 0x2269,
-  0x7d5d, 0x3769,
-  0x7d5e, 0x0d0f,
-  0x7d5f, 0x226f,
-  0x7d61, 0x0d16,
-  0x7d62, 0x0d18,
-  0x7d63, 0x2262,
-  0x7d66, 0x0d17,
-  0x7d67, 0x2265,
-  0x7d68, 0x0d11,
-  0x7d69, 0x226d,
-  0x7d6a, 0x2266,
-  0x7d6b, 0x226a,
-  0x7d6d, 0x2268,
-  0x7d6e, 0x0d14,
-  0x7d6f, 0x2261,
-  0x7d70, 0x0d19,
-  0x7d71, 0x0b55,
-  0x7d72, 0x0d15,
-  0x7d73, 0x0d1a,
-  0x7d79, 0x0ebf,
-  0x7d7a, 0x2505,
-  0x7d7b, 0x2507,
-  0x7d7c, 0x2509,
-  0x7d7d, 0x250d,
-  0x7d7f, 0x2503,
-  0x7d80, 0x2501,
-  0x7d81, 0x0ec1,
-  0x7d83, 0x2508,
-  0x7d84, 0x250c,
-  0x7d85, 0x2504,
-  0x7d86, 0x2500,
-  0x7d88, 0x24ff,
-  0x7d89, 0x376b,
-  0x7d8c, 0x250a,
-  0x7d8d, 0x2502,
-  0x7d8e, 0x2506,
-  0x7d8f, 0x0ec2,
-  0x7d91, 0x0ec0,
-  0x7d92, 0x250e,
-  0x7d93, 0x0ebe,
-  0x7d94, 0x250b,
-  0x7d96, 0x278e,
-  0x7d97, 0x3b53,
-  0x7d9c, 0x105d,
-  0x7d9d, 0x2786,
-  0x7d9e, 0x11e1,
-  0x7d9f, 0x2790,
-  0x7da0, 0x1060,
-  0x7da1, 0x2794,
-  0x7da2, 0x1066,
-  0x7da3, 0x2781,
-  0x7da4, 0x46d7,
-  0x7da6, 0x2791,
-  0x7da7, 0x277e,
-  0x7da8, 0x3c9c,
-  0x7da9, 0x2793,
-  0x7daa, 0x2782,
-  0x7dab, 0x376c,
-  0x7dac, 0x106d,
-  0x7dad, 0x106a,
-  0x7dae, 0x2792,
-  0x7daf, 0x278c,
-  0x7db0, 0x105c,
-  0x7db1, 0x1064,
-  0x7db2, 0x1063,
-  0x7db3, 0x376e,
-  0x7db4, 0x1062,
-  0x7db5, 0x1068,
-  0x7db7, 0x277f,
-  0x7db8, 0x1069,
-  0x7db9, 0x278d,
-  0x7dba, 0x1065,
-  0x7dbb, 0x105b,
-  0x7dbc, 0x278f,
-  0x7dbd, 0x105e,
-  0x7dbf, 0x1067,
-  0x7dc0, 0x2784,
-  0x7dc1, 0x2783,
-  0x7dc2, 0x2780,
-  0x7dc4, 0x2788,
-  0x7dc5, 0x2785,
-  0x7dc6, 0x2789,
-  0x7dc7, 0x106c,
-  0x7dc9, 0x2795,
-  0x7dca, 0x1061,
-  0x7dcb, 0x278a,
-  0x7dcd, 0x456e,
-  0x7dce, 0x2787,
-  0x7dcf, 0x4735,
-  0x7dd0, 0x4737,
-  0x7dd2, 0x106b,
-  0x7dd3, 0x3b4e,
-  0x7dd4, 0x4736,
-  0x7dd6, 0x376f,
-  0x7dd7, 0x29b8,
-  0x7dd8, 0x11d9,
-  0x7dd9, 0x11e2,
-  0x7dda, 0x11de,
-  0x7ddb, 0x29b5,
-  0x7ddc, 0x3b4c,
-  0x7ddd, 0x11db,
-  0x7dde, 0x11df,
-  0x7ddf, 0x29c1,
-  0x7de0, 0x11d5,
-  0x7de1, 0x29b9,
-  0x7de3, 0x11dd,
-  0x7de4, 0x3772,
-  0x7de5, 0x3776,
-  0x7de6, 0x29bc,
-  0x7de7, 0x29b7,
-  0x7de8, 0x11dc,
-  0x7de9, 0x11e0,
-  0x7dea, 0x29b6,
-  0x7dec, 0x11da,
-  0x7dee, 0x29c0,
-  0x7def, 0x11d7,
-  0x7df0, 0x29bf,
-  0x7df1, 0x29be,
-  0x7df2, 0x11e3,
-  0x7df3, 0x28c8,
-  0x7df4, 0x11d6,
-  0x7df5, 0x3774,
-  0x7df6, 0x29bd,
-  0x7df7, 0x29b4,
-  0x7df9, 0x11e4,
-  0x7dfa, 0x29bb,
-  0x7dfb, 0x11d8,
-  0x7dfd, 0x4738,
-  0x7dfe, 0x3ccf,
-  0x7e03, 0x29ba,
-  0x7e07, 0x3b4d,
-  0x7e08, 0x1322,
-  0x7e09, 0x1327,
-  0x7e0a, 0x1320,
-  0x7e0b, 0x2c1f,
-  0x7e0c, 0x2c16,
-  0x7e0d, 0x2c22,
-  0x7e0e, 0x2c1a,
-  0x7e0f, 0x2c20,
-  0x7e10, 0x1328,
-  0x7e11, 0x1321,
-  0x7e12, 0x2c13,
-  0x7e13, 0x2c19,
-  0x7e14, 0x2c23,
-  0x7e15, 0x2c1c,
-  0x7e16, 0x2c21,
-  0x7e17, 0x2c15,
-  0x7e1a, 0x2c1d,
-  0x7e1b, 0x1323,
-  0x7e1c, 0x2c1b,
-  0x7e1d, 0x1326,
-  0x7e1e, 0x1325,
-  0x7e1f, 0x2c17,
-  0x7e21, 0x2c14,
-  0x7e22, 0x2c1e,
-  0x7e23, 0x1324,
-  0x7e24, 0x2c25,
-  0x7e25, 0x2c24,
-  0x7e27, 0x377f,
-  0x7e29, 0x2df8,
-  0x7e2a, 0x2df4,
-  0x7e2b, 0x143b,
-  0x7e2d, 0x2dee,
-  0x7e2e, 0x1435,
-  0x7e2f, 0x1445,
-  0x7e30, 0x2dfa,
-  0x7e31, 0x143d,
-  0x7e32, 0x1439,
-  0x7e33, 0x2df1,
-  0x7e34, 0x1440,
-  0x7e35, 0x1443,
-  0x7e36, 0x2dfc,
-  0x7e37, 0x1438,
-  0x7e38, 0x2df3,
-  0x7e39, 0x1441,
-  0x7e3a, 0x2dfe,
-  0x7e3b, 0x2dfb,
-  0x7e3c, 0x2def,
-  0x7e3d, 0x143c,
-  0x7e3e, 0x1436,
-  0x7e3f, 0x1444,
-  0x7e40, 0x2df6,
-  0x7e41, 0x143f,
-  0x7e42, 0x2df0,
-  0x7e43, 0x143a,
-  0x7e44, 0x2dfd,
-  0x7e45, 0x143e,
-  0x7e46, 0x1437,
-  0x7e47, 0x2df7,
-  0x7e48, 0x1442,
-  0x7e49, 0x2df5,
-  0x7e4c, 0x2df9,
-  0x7e50, 0x2f83,
-  0x7e51, 0x2f89,
-  0x7e52, 0x1511,
-  0x7e53, 0x2f8c,
-  0x7e54, 0x150c,
-  0x7e56, 0x2f84,
-  0x7e57, 0x2f8b,
-  0x7e58, 0x2f86,
-  0x7e59, 0x1512,
-  0x7e5a, 0x150f,
-  0x7e5c, 0x2f82,
-  0x7e5e, 0x150e,
-  0x7e5f, 0x2f88,
-  0x7e60, 0x2f8a,
-  0x7e61, 0x1510,
-  0x7e62, 0x2f87,
-  0x7e63, 0x2f85,
-  0x7e65, 0x46d2,
-  0x7e67, 0x3766,
-  0x7e68, 0x30e3,
-  0x7e69, 0x15ac,
-  0x7e6b, 0x15a9,
-  0x7e6d, 0x15aa,
-  0x7e6e, 0x377b,
-  0x7e6f, 0x30df,
-  0x7e70, 0x30dd,
-  0x7e72, 0x30e1,
-  0x7e73, 0x15ae,
-  0x7e74, 0x30e2,
-  0x7e75, 0x30db,
-  0x7e76, 0x30da,
-  0x7e77, 0x30de,
-  0x7e78, 0x30dc,
-  0x7e79, 0x15ab,
-  0x7e7a, 0x30e0,
-  0x7e7b, 0x3214,
-  0x7e7c, 0x1631,
-  0x7e7d, 0x1630,
-  0x7e7e, 0x3215,
-  0x7e7f, 0x3e51,
-  0x7e80, 0x3217,
-  0x7e81, 0x3216,
-  0x7e82, 0x1632,
-  0x7e86, 0x32f0,
-  0x7e87, 0x32ed,
-  0x7e8a, 0x32ec,
-  0x7e8b, 0x32ef,
-  0x7e8c, 0x1683,
-  0x7e8d, 0x32f1,
-  0x7e8e, 0x3ec9,
-  0x7e8f, 0x1682,
-  0x7e91, 0x33a2,
-  0x7e92, 0x469e,
-  0x7e93, 0x1703,
-  0x7e94, 0x1705,
-  0x7e95, 0x342c,
-  0x7e96, 0x1704,
-  0x7e97, 0x3494,
-  0x7e98, 0x34da,
-  0x7e99, 0x34dc,
-  0x7e9a, 0x34d9,
-  0x7e9b, 0x34db,
-  0x7e9c, 0x1759,
-  0x7e9f, 0x48bb,
-  0x7ea4, 0x455b,
-  0x7eac, 0x455c,
-  0x7eba, 0x455d,
-  0x7ec7, 0x455e,
-  0x7ecf, 0x455f,
-  0x7edf, 0x4560,
-  0x7f06, 0x4561,
-  0x7f36, 0x03f9,
-  0x7f37, 0x4562,
-  0x7f38, 0x07d4,
-  0x7f39, 0x1d1f,
-  0x7f3a, 0x0979,
-  0x7f3d, 0x0b61,
-  0x7f3e, 0x2271,
-  0x7f40, 0x3780,
-  0x7f43, 0x2c26,
-  0x7f44, 0x1446,
-  0x7f45, 0x2dff,
-  0x7f47, 0x3782,
-  0x7f48, 0x1513,
-  0x7f49, 0x3e69,
-  0x7f4a, 0x30e5,
-  0x7f4b, 0x30e4,
-  0x7f4c, 0x1633,
-  0x7f4d, 0x32f2,
-  0x7f4e, 0x3b4f,
-  0x7f4f, 0x33a3,
-  0x7f50, 0x1726,
-  0x7f51, 0x1812,
-  0x7f52, 0x44f6,
-  0x7f53, 0x44f9,
-  0x7f54, 0x0668,
-  0x7f55, 0x04fc,
-  0x7f58, 0x1bc3,
-  0x7f5b, 0x1dad,
-  0x7f5c, 0x1da8,
-  0x7f5d, 0x1dac,
-  0x7f5e, 0x1daa,
-  0x7f5f, 0x097a,
-  0x7f60, 0x1dab,
-  0x7f61, 0x1da9,
-  0x7f63, 0x1ff3,
-  0x7f65, 0x2273,
-  0x7f67, 0x2511,
-  0x7f69, 0x0ec5,
-  0x7f6b, 0x2510,
-  0x7f6c, 0x2513,
-  0x7f6d, 0x250f,
-  0x7f6e, 0x0ec4,
-  0x7f70, 0x106e,
-  0x7f71, 0x4007,
-  0x7f72, 0x0ec7,
-  0x7f73, 0x2796,
-  0x7f75, 0x11e5,
-  0x7f76, 0x29c2,
-  0x7f77, 0x11e6,
-  0x7f78, 0x3f7b,
-  0x7f79, 0x1329,
-  0x7f7a, 0x2c29,
-  0x7f7b, 0x2c27,
-  0x7f7d, 0x2e02,
-  0x7f7e, 0x2e01,
-  0x7f7f, 0x2e00,
-  0x7f83, 0x30e6,
-  0x7f85, 0x15af,
-  0x7f86, 0x30e7,
-  0x7f87, 0x33a4,
-  0x7f88, 0x1727,
-  0x7f89, 0x3495,
-  0x7f8a, 0x03fa,
-  0x7f8b, 0x066a,
-  0x7f8c, 0x0669,
-  0x7f8d, 0x1bc5,
-  0x7f8e, 0x07d5,
-  0x7f8f, 0x421c,
-  0x7f91, 0x1bc4,
-  0x7f92, 0x1daf,
-  0x7f93, 0x43db,
-  0x7f94, 0x097b,
-  0x7f95, 0x1ff4,
-  0x7f96, 0x1dae,
-  0x7f97, 0x3786,
-  0x7f9a, 0x0b63,
-  0x7f9b, 0x1ff7,
-  0x7f9c, 0x1ff5,
-  0x7f9e, 0x0b62,
-  0x7fa0, 0x2276,
-  0x7fa2, 0x2275,
-  0x7fa3, 0x3788,
-  0x7fa4, 0x0eca,
-  0x7fa5, 0x2515,
-  0x7fa6, 0x2514,
-  0x7fa7, 0x2516,
-  0x7fa8, 0x0ec9,
-  0x7fa9, 0x0ec8,
-  0x7fac, 0x29c3,
-  0x7fad, 0x29c5,
-  0x7fae, 0x43dc,
-  0x7faf, 0x11e7,
-  0x7fb0, 0x29c4,
-  0x7fb1, 0x2c2a,
-  0x7fb2, 0x132a,
-  0x7fb3, 0x2f8e,
-  0x7fb4, 0x4739,
-  0x7fb5, 0x2f8d,
-  0x7fb6, 0x15b0,
-  0x7fb7, 0x30e8,
-  0x7fb8, 0x15b2,
-  0x7fb9, 0x15b1,
-  0x7fba, 0x3218,
-  0x7fbb, 0x32f3,
-  0x7fbc, 0x1684,
-  0x7fbd, 0x03fb,
-  0x7fbe, 0x1bc6,
-  0x7fbf, 0x07d6,
-  0x7fc0, 0x1db2,
-  0x7fc1, 0x097d,
-  0x7fc2, 0x1db1,
-  0x7fc3, 0x1db0,
-  0x7fc5, 0x097c,
-  0x7fc7, 0x1ffd,
-  0x7fc9, 0x1fff,
-  0x7fca, 0x1ff8,
-  0x7fcc, 0x0b64,
-  0x7fcd, 0x1ffa,
-  0x7fce, 0x0b65,
-  0x7fcf, 0x1ffe,
-  0x7fd0, 0x1ffb,
-  0x7fd2, 0x0b66,
-  0x7fd4, 0x0d1c,
-  0x7fd7, 0x2278,
-  0x7fdb, 0x2517,
-  0x7fdd, 0x3b5e,
-  0x7fde, 0x279a,
-  0x7fdf, 0x1071,
-  0x7fe0, 0x106f,
-  0x7fe2, 0x2797,
-  0x7fe5, 0x2799,
-  0x7fe6, 0x29ca,
-  0x7fe7, 0x46e9,
-  0x7fe8, 0x29cb,
-  0x7fe9, 0x11e8,
-  0x7fea, 0x29c8,
-  0x7feb, 0x29c7,
-  0x7fec, 0x29c9,
-  0x7fed, 0x29c6,
-  0x7fee, 0x132d,
-  0x7fef, 0x2c2b,
-  0x7ff0, 0x132b,
-  0x7ff2, 0x2e04,
-  0x7ff3, 0x1447,
-  0x7ff4, 0x2e03,
-  0x7ff5, 0x2eff,
-  0x7ff7, 0x2f8f,
-  0x7ff9, 0x1514,
-  0x7ffa, 0x378e,
-  0x7ffb, 0x1515,
-  0x7ffc, 0x1448,
-  0x7ffd, 0x30e9,
-  0x7fff, 0x3219,
-  0x8000, 0x1634,
-  0x8001, 0x03fc,
-  0x8002, 0x44fd,
-  0x8003, 0x03fd,
-  0x8004, 0x097f,
-  0x8005, 0x066b,
-  0x8006, 0x097e,
-  0x8007, 0x1bc7,
-  0x8008, 0x3791,
-  0x800b, 0x0d1e,
-  0x800c, 0x03fe,
-  0x800d, 0x07d8,
-  0x800e, 0x1bc8,
-  0x8010, 0x07d7,
-  0x8011, 0x07d9,
-  0x8012, 0x03ff,
-  0x8014, 0x1bca,
-  0x8015, 0x0981,
-  0x8016, 0x1db3,
-  0x8017, 0x0983,
-  0x8018, 0x0980,
-  0x8019, 0x0982,
-  0x801b, 0x2002,
-  0x801c, 0x0b67,
-  0x801d, 0x3792,
-  0x801e, 0x2001,
-  0x801f, 0x2000,
-  0x8020, 0x473c,
-  0x8021, 0x2519,
-  0x8024, 0x279b,
-  0x8025, 0x473d,
-  0x8026, 0x11e9,
-  0x8028, 0x132e,
-  0x8029, 0x2c2d,
-  0x802a, 0x2c2c,
-  0x802c, 0x2e05,
-  0x802e, 0x473e,
-  0x802f, 0x3794,
-  0x8030, 0x32f4,
-  0x8031, 0x473f,
-  0x8033, 0x0400,
-  0x8034, 0x18d8,
-  0x8035, 0x1a27,
-  0x8036, 0x07da,
-  0x8037, 0x1bcb,
-  0x8039, 0x1db5,
-  0x803b, 0x3797,
-  0x803d, 0x0984,
-  0x803e, 0x1db4,
-  0x803f, 0x0985,
-  0x8043, 0x2004,
-  0x8046, 0x0b69,
-  0x8047, 0x2003,
-  0x8048, 0x2005,
-  0x804a, 0x0b68,
-  0x804f, 0x227a,
-  0x8051, 0x2279,
-  0x8052, 0x0d1f,
-  0x8054, 0x4740,
-  0x8056, 0x0ecb,
-  0x8058, 0x0ecc,
-  0x805a, 0x1073,
-  0x805b, 0x3fe5,
-  0x805c, 0x279d,
-  0x805d, 0x279c,
-  0x805e, 0x1072,
-  0x8061, 0x3799,
-  0x8062, 0x3fe3,
-  0x8063, 0x3fdc,
-  0x8064, 0x29cc,
-  0x8066, 0x3fdb,
-  0x8067, 0x29cd,
-  0x806c, 0x2c2e,
-  0x806f, 0x144c,
-  0x8070, 0x144b,
-  0x8071, 0x1449,
-  0x8073, 0x144d,
-  0x8075, 0x2f91,
-  0x8076, 0x1517,
-  0x8077, 0x1516,
-  0x8078, 0x30eb,
-  0x8079, 0x321a,
-  0x807d, 0x16d3,
-  0x807e, 0x16d2,
-  0x807f, 0x0401,
-  0x8080, 0x44fe,
-  0x8082, 0x1cec,
-  0x8084, 0x0ece,
-  0x8085, 0x0d20,
-  0x8086, 0x0ecd,
-  0x8087, 0x1074,
-  0x8089, 0x0402,
-  0x808a, 0x17b3,
-  0x808b, 0x0403,
-  0x808f, 0x1a28,
-  0x8090, 0x18db,
-  0x8092, 0x18dc,
-  0x8093, 0x04fe,
-  0x8095, 0x18d9,
-  0x8096, 0x04fd,
-  0x8098, 0x0500,
-  0x8099, 0x18da,
-  0x809a, 0x0502,
-  0x809b, 0x0501,
-  0x809c, 0x18dd,
-  0x809d, 0x04ff,
-  0x809f, 0x4576,
-  0x80a1, 0x0670,
-  0x80a2, 0x066e,
-  0x80a3, 0x1a2a,
-  0x80a5, 0x066d,
-  0x80a7, 0x37a0,
-  0x80a9, 0x0672,
-  0x80aa, 0x0674,
-  0x80ab, 0x0671,
-  0x80ad, 0x1a2d,
-  0x80ae, 0x1a29,
-  0x80af, 0x0675,
-  0x80b1, 0x066f,
-  0x80b2, 0x0503,
-  0x80b4, 0x0673,
-  0x80b5, 0x1a2c,
-  0x80b6, 0x3eae,
-  0x80b7, 0x4743,
-  0x80b8, 0x1a2b,
-  0x80ba, 0x066c,
-  0x80bc, 0x4572,
-  0x80bd, 0x3e7b,
-  0x80c2, 0x1bd1,
-  0x80c3, 0x07de,
-  0x80c5, 0x1bd3,
-  0x80c6, 0x3b74,
-  0x80c7, 0x1bcd,
-  0x80c8, 0x1bd0,
-  0x80c9, 0x1bd9,
-  0x80ca, 0x1bd7,
-  0x80cc, 0x07e0,
-  0x80cd, 0x1bdd,
-  0x80ce, 0x07e3,
-  0x80cf, 0x1bda,
-  0x80d0, 0x1bd2,
-  0x80d1, 0x1bcf,
-  0x80d4, 0x227d,
-  0x80d5, 0x1bd8,
-  0x80d6, 0x07db,
-  0x80d7, 0x1bdb,
-  0x80d8, 0x1bcc,
-  0x80d9, 0x1bd5,
-  0x80da, 0x07dd,
-  0x80db, 0x07e2,
-  0x80dc, 0x1bd6,
-  0x80dd, 0x07e6,
-  0x80de, 0x07e4,
-  0x80e0, 0x1bce,
-  0x80e1, 0x07e1,
-  0x80e3, 0x1bd4,
-  0x80e4, 0x07e5,
-  0x80e5, 0x07dc,
-  0x80e6, 0x1bdc,
-  0x80e9, 0x4744,
-  0x80ec, 0x45e9,
-  0x80ed, 0x098a,
-  0x80ef, 0x0993,
-  0x80f0, 0x0988,
-  0x80f1, 0x0986,
-  0x80f2, 0x1db7,
-  0x80f3, 0x098e,
-  0x80f4, 0x098b,
-  0x80f5, 0x1db9,
-  0x80f6, 0x4574,
-  0x80f8, 0x098d,
-  0x80f9, 0x1db8,
-  0x80fa, 0x1db6,
-  0x80fb, 0x1dbb,
-  0x80fc, 0x0992,
-  0x80fd, 0x0990,
-  0x80fe, 0x227c,
-  0x8100, 0x1dbc,
-  0x8101, 0x1dba,
-  0x8102, 0x0987,
-  0x8103, 0x3fe7,
-  0x8105, 0x0989,
-  0x8106, 0x098c,
-  0x8107, 0x37a2,
-  0x8108, 0x098f,
-  0x8109, 0x3b75,
-  0x810a, 0x0991,
-  0x810c, 0x4746,
-  0x810e, 0x4747,
-  0x8112, 0x4748,
-  0x8114, 0x4749,
-  0x8115, 0x200f,
-  0x8116, 0x0b6b,
-  0x8117, 0x3e6d,
-  0x8118, 0x2006,
-  0x8119, 0x2008,
-  0x811a, 0x37a3,
-  0x811b, 0x2009,
-  0x811d, 0x2011,
-  0x811e, 0x200d,
-  0x811f, 0x200b,
-  0x8121, 0x200e,
-  0x8122, 0x2012,
-  0x8123, 0x0b6c,
-  0x8124, 0x0b70,
-  0x8125, 0x2007,
-  0x8127, 0x2010,
-  0x8129, 0x0b6e,
-  0x812a, 0x3a39,
-  0x812b, 0x0b6d,
-  0x812c, 0x200c,
-  0x812d, 0x200a,
-  0x812f, 0x0b6a,
-  0x8130, 0x0b6f,
-  0x8132, 0x3e79,
-  0x8134, 0x45ec,
-  0x8137, 0x3b72,
-  0x8139, 0x0d26,
-  0x813a, 0x2285,
-  0x813d, 0x2283,
-  0x813e, 0x0d28,
-  0x8142, 0x3b76,
-  0x8143, 0x227e,
-  0x8144, 0x2527,
-  0x8146, 0x0d27,
-  0x8147, 0x2282,
-  0x8148, 0x3e76,
-  0x814a, 0x227f,
-  0x814b, 0x0d23,
-  0x814c, 0x0d29,
-  0x814d, 0x2284,
-  0x814e, 0x0d25,
-  0x814f, 0x2281,
-  0x8150, 0x1075,
-  0x8151, 0x0d24,
-  0x8152, 0x2280,
-  0x8153, 0x0d2a,
-  0x8154, 0x0d22,
-  0x8155, 0x0d21,
-  0x8156, 0x474c,
-  0x8159, 0x474d,
-  0x815b, 0x251f,
-  0x815c, 0x251d,
-  0x815e, 0x2523,
-  0x8160, 0x251b,
-  0x8161, 0x2528,
-  0x8162, 0x2520,
-  0x8164, 0x251a,
-  0x8165, 0x0ed2,
-  0x8166, 0x0ed8,
-  0x8167, 0x2525,
-  0x8169, 0x251e,
-  0x816b, 0x0ed5,
-  0x816d, 0x43c4,
-  0x816e, 0x0ed3,
-  0x816f, 0x2526,
-  0x8170, 0x0ed0,
-  0x8171, 0x0ecf,
-  0x8172, 0x2521,
-  0x8173, 0x0ed4,
-  0x8174, 0x0d2b,
-  0x8176, 0x2524,
-  0x8177, 0x251c,
-  0x8178, 0x0ed1,
-  0x8179, 0x0ed6,
-  0x817c, 0x4750,
-  0x817f, 0x107a,
-  0x8180, 0x1076,
-  0x8182, 0x107b,
-  0x8183, 0x27a0,
-  0x8184, 0x43c5,
-  0x8186, 0x279f,
-  0x8187, 0x27a1,
-  0x8188, 0x1078,
-  0x8189, 0x279e,
-  0x818a, 0x1079,
-  0x818b, 0x27a4,
-  0x818c, 0x27a3,
-  0x818d, 0x27a2,
-  0x818f, 0x1077,
-  0x8193, 0x43c6,
-  0x8195, 0x29d1,
-  0x8197, 0x29d4,
-  0x8198, 0x11ef,
-  0x8199, 0x29d3,
-  0x819a, 0x11ee,
-  0x819b, 0x11ea,
-  0x819e, 0x29d0,
-  0x819f, 0x29cf,
-  0x81a0, 0x11ed,
-  0x81a2, 0x29d2,
-  0x81a3, 0x29ce,
-  0x81a5, 0x4753,
-  0x81a6, 0x2c30,
-  0x81a7, 0x2c3a,
-  0x81a8, 0x1331,
-  0x81a9, 0x1330,
-  0x81aa, 0x4364,
-  0x81ab, 0x2c34,
-  0x81ac, 0x2c36,
-  0x81ae, 0x2c31,
-  0x81b0, 0x2c35,
-  0x81b1, 0x2c2f,
-  0x81b2, 0x2c38,
-  0x81b3, 0x132f,
-  0x81b4, 0x2c37,
-  0x81b5, 0x2c33,
-  0x81b6, 0x3eb2,
-  0x81b7, 0x2c39,
-  0x81b9, 0x2c32,
-  0x81ba, 0x1450,
-  0x81bb, 0x2e06,
-  0x81bc, 0x2e0c,
-  0x81bd, 0x1454,
-  0x81be, 0x1456,
-  0x81bf, 0x1453,
-  0x81c0, 0x1452,
-  0x81c1, 0x4755,
-  0x81c2, 0x1451,
-  0x81c3, 0x144f,
-  0x81c4, 0x2e07,
-  0x81c5, 0x2e0a,
-  0x81c6, 0x144e,
-  0x81c7, 0x2e0b,
-  0x81c8, 0x3fee,
-  0x81c9, 0x1455,
-  0x81ca, 0x2e09,
-  0x81cc, 0x2e08,
-  0x81cd, 0x1518,
-  0x81cf, 0x1519,
-  0x81d0, 0x2f94,
-  0x81d1, 0x2f92,
-  0x81d5, 0x30ed,
-  0x81d7, 0x30ec,
-  0x81d8, 0x15b3,
-  0x81d9, 0x321c,
-  0x81da, 0x1635,
-  0x81db, 0x321b,
-  0x81dd, 0x32f5,
-  0x81de, 0x33a5,
-  0x81df, 0x16d4,
-  0x81e0, 0x34dd,
-  0x81e2, 0x1706,
-  0x81e3, 0x0405,
-  0x81e4, 0x4756,
-  0x81e5, 0x0676,
-  0x81e6, 0x2286,
-  0x81e7, 0x107c,
-  0x81e8, 0x1457,
-  0x81e9, 0x2e0d,
-  0x81ea, 0x0406,
-  0x81ec, 0x0995,
-  0x81ed, 0x0994,
-  0x81ee, 0x2287,
-  0x81ef, 0x42d1,
-  0x81f2, 0x2c3b,
-  0x81f3, 0x0407,
-  0x81f4, 0x07e7,
-  0x81f6, 0x3d61,
-  0x81f7, 0x2288,
-  0x81fa, 0x107d,
-  0x81fb, 0x1332,
-  0x81fc, 0x0408,
-  0x81fe, 0x0677,
-  0x81ff, 0x1bde,
-  0x8200, 0x0996,
-  0x8201, 0x1dbd,
-  0x8202, 0x0b71,
-  0x8204, 0x228b,
-  0x8205, 0x0ed9,
-  0x8207, 0x107e,
-  0x8208, 0x1333,
-  0x8209, 0x1458,
-  0x820a, 0x151a,
-  0x820b, 0x30ee,
-  0x820c, 0x0409,
-  0x820d, 0x0678,
-  0x8210, 0x0997,
-  0x8211, 0x2013,
-  0x8212, 0x0d2c,
-  0x8214, 0x107f,
-  0x8215, 0x27a5,
-  0x8216, 0x29d5,
-  0x8218, 0x37aa,
-  0x821a, 0x3fe1,
-  0x821b, 0x040a,
-  0x821c, 0x0d2d,
-  0x821d, 0x2529,
-  0x821e, 0x1080,
-  0x821f, 0x040b,
-  0x8220, 0x1a2e,
-  0x8221, 0x1bdf,
-  0x8222, 0x07e8,
-  0x8225, 0x1dbf,
-  0x8226, 0x420d,
-  0x8228, 0x099a,
-  0x8229, 0x37b0,
-  0x822a, 0x0998,
-  0x822c, 0x099b,
-  0x822d, 0x3ed0,
-  0x822f, 0x1dbe,
-  0x8232, 0x2018,
-  0x8233, 0x2015,
-  0x8234, 0x2017,
-  0x8235, 0x0b72,
-  0x8236, 0x0b74,
-  0x8237, 0x0b73,
-  0x8238, 0x2014,
-  0x8239, 0x0b75,
-  0x823a, 0x2016,
-  0x823c, 0x228c,
-  0x823e, 0x4582,
-  0x823f, 0x228e,
-  0x8240, 0x252c,
-  0x8242, 0x252d,
-  0x8244, 0x252b,
-  0x8245, 0x252e,
-  0x8247, 0x0eda,
-  0x8249, 0x252a,
-  0x824b, 0x1081,
-  0x824e, 0x29da,
-  0x824f, 0x29d6,
-  0x8250, 0x29d9,
-  0x8251, 0x29db,
-  0x8252, 0x29d8,
-  0x8253, 0x29d7,
-  0x8254, 0x4757,
-  0x8255, 0x2c3c,
-  0x8258, 0x1334,
-  0x825a, 0x2e0f,
-  0x825b, 0x2e0e,
-  0x825c, 0x2e10,
-  0x825e, 0x2f96,
-  0x825f, 0x2f95,
-  0x8261, 0x30f0,
-  0x8262, 0x3b7a,
-  0x8263, 0x30f1,
-  0x8264, 0x30ef,
-  0x8265, 0x3b7b,
-  0x8266, 0x1636,
-  0x8268, 0x321d,
-  0x826b, 0x33a6,
-  0x826c, 0x342d,
-  0x826d, 0x3496,
-  0x826e, 0x040c,
-  0x826f, 0x0504,
-  0x8271, 0x1459,
-  0x8272, 0x040d,
-  0x8274, 0x2019,
-  0x8275, 0x228f,
-  0x8276, 0x4759,
-  0x8277, 0x172e,
-  0x8278, 0x1813,
-  0x8279, 0x4722,
-  0x827a, 0x4563,
-  0x827b, 0x37c8,
-  0x827c, 0x1814,
-  0x827d, 0x1816,
-  0x827e, 0x040e,
-  0x827f, 0x1817,
-  0x8280, 0x1815,
-  0x8283, 0x18e5,
-  0x8285, 0x18e0,
-  0x8287, 0x4132,
-  0x828a, 0x18e4,
-  0x828b, 0x0506,
-  0x828d, 0x0507,
-  0x828e, 0x18e1,
-  0x828f, 0x18df,
-  0x8290, 0x18de,
-  0x8291, 0x18e2,
-  0x8292, 0x0505,
-  0x8293, 0x18e3,
-  0x8294, 0x1be0,
-  0x8298, 0x1a33,
-  0x8299, 0x067b,
-  0x829a, 0x1a32,
-  0x829b, 0x1a34,
-  0x829d, 0x067a,
-  0x829e, 0x1a39,
-  0x829f, 0x067e,
-  0x82a0, 0x1a2f,
-  0x82a1, 0x1a3d,
-  0x82a2, 0x1a43,
-  0x82a3, 0x0685,
-  0x82a4, 0x1a40,
-  0x82a5, 0x0682,
-  0x82a6, 0x3d73,
-  0x82a7, 0x1a36,
-  0x82a8, 0x1a3c,
-  0x82a9, 0x1a3e,
-  0x82aa, 0x37bc,
-  0x82ab, 0x1a31,
-  0x82ac, 0x0681,
-  0x82ad, 0x067c,
-  0x82ae, 0x1a37,
-  0x82af, 0x0683,
-  0x82b0, 0x0686,
-  0x82b1, 0x0680,
-  0x82b3, 0x0679,
-  0x82b4, 0x1a3b,
-  0x82b5, 0x1a35,
-  0x82b6, 0x1a42,
-  0x82b7, 0x0688,
-  0x82b8, 0x0684,
-  0x82b9, 0x067f,
-  0x82ba, 0x1a3a,
-  0x82bb, 0x099c,
-  0x82bc, 0x1a38,
-  0x82bd, 0x067d,
-  0x82be, 0x0687,
-  0x82c0, 0x1a30,
-  0x82c2, 0x1a3f,
-  0x82c3, 0x1a41,
-  0x82c4, 0x45e3,
-  0x82ca, 0x475a,
-  0x82cf, 0x4564,
-  0x82d0, 0x37c1,
-  0x82d1, 0x07f9,
-  0x82d2, 0x07f3,
-  0x82d3, 0x07fb,
-  0x82d4, 0x07f8,
-  0x82d5, 0x1be7,
-  0x82d6, 0x1bea,
-  0x82d7, 0x07f4,
-  0x82d8, 0x475b,
-  0x82d9, 0x1be1,
-  0x82db, 0x07ed,
-  0x82dc, 0x07f7,
-  0x82de, 0x07fa,
-  0x82df, 0x07fc,
-  0x82e0, 0x1bf6,
-  0x82e1, 0x1bed,
-  0x82e2, 0x37c9,
-  0x82e3, 0x07ec,
-  0x82e4, 0x1bf5,
-  0x82e5, 0x07f0,
-  0x82e6, 0x07ee,
-  0x82e7, 0x07e9,
-  0x82e8, 0x1be5,
-  0x82ea, 0x1bf4,
-  0x82eb, 0x1be9,
-  0x82ec, 0x1bec,
-  0x82ed, 0x1bf9,
-  0x82ee, 0x4018,
-  0x82ef, 0x07fd,
-  0x82f0, 0x1bf3,
-  0x82f1, 0x07f5,
-  0x82f2, 0x1bee,
-  0x82f3, 0x1bf8,
-  0x82f4, 0x1beb,
-  0x82f5, 0x1bef,
-  0x82f6, 0x1bf2,
-  0x82f7, 0x3e77,
-  0x82f9, 0x1be3,
-  0x82fa, 0x1bf7,
-  0x82fb, 0x1bf1,
-  0x82fc, 0x412d,
-  0x82fd, 0x3d92,
-  0x82fe, 0x1be2,
-  0x82ff, 0x43de,
-  0x8300, 0x1be6,
-  0x8301, 0x07f6,
-  0x8302, 0x07f1,
-  0x8303, 0x07ea,
-  0x8304, 0x07ef,
-  0x8305, 0x07eb,
-  0x8306, 0x07fe,
-  0x8307, 0x1be4,
-  0x8308, 0x1dd0,
-  0x8309, 0x07f2,
-  0x830b, 0x3eb6,
-  0x830c, 0x1bf0,
-  0x830d, 0x1a7d,
-  0x8316, 0x1dd3,
-  0x8317, 0x09aa,
-  0x8318, 0x37ca,
-  0x8319, 0x1dc3,
-  0x831a, 0x37c2,
-  0x831b, 0x1dce,
-  0x831c, 0x1dca,
-  0x831d, 0x37d1,
-  0x831e, 0x1ddd,
-  0x8320, 0x1dd5,
-  0x8322, 0x1dcb,
-  0x8324, 0x1dd4,
-  0x8325, 0x1dc5,
-  0x8326, 0x1dc9,
-  0x8327, 0x1de0,
-  0x8328, 0x09ad,
-  0x8329, 0x1dd8,
-  0x832a, 0x1dcf,
-  0x832b, 0x099d,
-  0x832c, 0x1dde,
-  0x832d, 0x1dc1,
-  0x832f, 0x1dd7,
-  0x8331, 0x09ac,
-  0x8332, 0x09a7,
-  0x8333, 0x1dc0,
-  0x8334, 0x09a5,
-  0x8335, 0x09a4,
-  0x8336, 0x09a9,
-  0x8337, 0x1dd6,
-  0x8338, 0x09a1,
-  0x8339, 0x09a8,
-  0x833a, 0x1be8,
-  0x833b, 0x2290,
-  0x833c, 0x1dd1,
-  0x833d, 0x3d2a,
-  0x833f, 0x1dc7,
-  0x8340, 0x09ab,
-  0x8341, 0x1dc8,
-  0x8342, 0x1dcc,
-  0x8343, 0x09ae,
-  0x8344, 0x1dc2,
-  0x8345, 0x1dda,
-  0x8347, 0x1dd9,
-  0x8348, 0x1de1,
-  0x8349, 0x09a3,
-  0x834a, 0x09a0,
-  0x834b, 0x1ddf,
-  0x834c, 0x1ddb,
-  0x834d, 0x1dd2,
-  0x834e, 0x1dcd,
-  0x834f, 0x09a6,
-  0x8350, 0x09a2,
-  0x8351, 0x1dc4,
-  0x8352, 0x099e,
-  0x8353, 0x1ddc,
-  0x8354, 0x099f,
-  0x8356, 0x1dc6,
-  0x8357, 0x475d,
-  0x8362, 0x37b6,
-  0x8363, 0x41eb,
-  0x8366, 0x3e1e,
-  0x836f, 0x4565,
-  0x8373, 0x201f,
-  0x8374, 0x2021,
-  0x8375, 0x2026,
-  0x8376, 0x203a,
-  0x8377, 0x0b83,
-  0x8378, 0x0b79,
-  0x837a, 0x201e,
-  0x837b, 0x0b84,
-  0x837d, 0x2029,
-  0x837e, 0x2030,
-  0x837f, 0x2036,
-  0x8381, 0x2023,
-  0x8383, 0x202a,
-  0x8385, 0x37d3,
-  0x8386, 0x0b86,
-  0x8387, 0x2038,
-  0x8388, 0x2033,
-  0x8389, 0x0b81,
-  0x838a, 0x0b7f,
-  0x838b, 0x202f,
-  0x838c, 0x202b,
-  0x838d, 0x201d,
-  0x838e, 0x0b76,
-  0x838f, 0x2022,
-  0x8390, 0x201a,
-  0x8391, 0x37ec,
-  0x8392, 0x0b7e,
-  0x8393, 0x0b80,
-  0x8394, 0x2027,
-  0x8395, 0x2024,
-  0x8396, 0x0b7b,
-  0x8397, 0x2034,
-  0x8398, 0x0b78,
-  0x8399, 0x2025,
-  0x839a, 0x22b9,
-  0x839b, 0x202d,
-  0x839c, 0x374d,
-  0x839d, 0x202c,
-  0x839e, 0x0b77,
-  0x83a0, 0x0b82,
-  0x83a2, 0x0b7a,
-  0x83a3, 0x201b,
-  0x83a4, 0x2020,
-  0x83a5, 0x2031,
-  0x83a6, 0x2037,
-  0x83a7, 0x0b87,
-  0x83a8, 0x201c,
-  0x83a9, 0x2028,
-  0x83aa, 0x202e,
-  0x83ab, 0x0b7d,
-  0x83ac, 0x37d6,
-  0x83ae, 0x2039,
-  0x83af, 0x2032,
-  0x83b0, 0x2035,
-  0x83b9, 0x42a7,
-  0x83bd, 0x0b7c,
-  0x83be, 0x3f59,
-  0x83bf, 0x22a0,
-  0x83c0, 0x2294,
-  0x83c1, 0x0d35,
-  0x83c2, 0x22b1,
-  0x83c3, 0x22ba,
-  0x83c4, 0x22bd,
-  0x83c5, 0x0d33,
-  0x83c6, 0x229c,
-  0x83c7, 0x22b5,
-  0x83c8, 0x229d,
-  0x83c9, 0x22ab,
-  0x83ca, 0x0d40,
-  0x83cb, 0x22a7,
-  0x83cc, 0x0d3d,
-  0x83cd, 0x4055,
-  0x83ce, 0x22a8,
-  0x83cf, 0x2291,
-  0x83d1, 0x22b6,
-  0x83d3, 0x37d8,
-  0x83d4, 0x0d46,
-  0x83d5, 0x22b3,
-  0x83d6, 0x22a9,
-  0x83d7, 0x22bf,
-  0x83d8, 0x22a4,
-  0x83d9, 0x254e,
-  0x83db, 0x22c2,
-  0x83dc, 0x0d44,
-  0x83dd, 0x22a2,
-  0x83de, 0x22ae,
-  0x83df, 0x0d47,
-  0x83e0, 0x0d32,
-  0x83e1, 0x22a6,
-  0x83e2, 0x22c0,
-  0x83e3, 0x229f,
-  0x83e4, 0x2298,
-  0x83e5, 0x22a3,
-  0x83e7, 0x2297,
-  0x83e8, 0x2295,
-  0x83e9, 0x0d2e,
-  0x83ea, 0x22b7,
-  0x83eb, 0x229e,
-  0x83ec, 0x22bb,
-  0x83ed, 0x3d2c,
-  0x83ee, 0x22bc,
-  0x83ef, 0x0d36,
-  0x83f0, 0x0d3b,
-  0x83f1, 0x0d37,
-  0x83f2, 0x0d3f,
-  0x83f3, 0x22b2,
-  0x83f4, 0x0d38,
-  0x83f5, 0x22aa,
-  0x83f6, 0x229a,
-  0x83f8, 0x0d30,
-  0x83f9, 0x2292,
-  0x83fa, 0x22b4,
-  0x83fb, 0x22be,
-  0x83fc, 0x2299,
-  0x83fd, 0x0d3e,
-  0x83fe, 0x22c3,
-  0x83ff, 0x22a5,
-  0x8401, 0x22a1,
-  0x8403, 0x0d2f,
-  0x8404, 0x0d43,
-  0x8405, 0x475f,
-  0x8406, 0x22b0,
-  0x8407, 0x0d45,
-  0x8409, 0x22ac,
-  0x840a, 0x0d3a,
-  0x840b, 0x0d34,
-  0x840c, 0x0d3c,
-  0x840d, 0x0d31,
-  0x840e, 0x0d42,
-  0x840f, 0x22ad,
-  0x8410, 0x229b,
-  0x8411, 0x22af,
-  0x8412, 0x2296,
-  0x8413, 0x22b8,
-  0x8414, 0x3c10,
-  0x8416, 0x4037,
-  0x8418, 0x3e7a,
-  0x841b, 0x22c1,
-  0x841c, 0x3eb3,
-  0x8420, 0x3c55,
-  0x8421, 0x3751,
-  0x8423, 0x2293,
-  0x8424, 0x4951,
-  0x8426, 0x46d8,
-  0x8429, 0x254d,
-  0x842b, 0x2563,
-  0x842c, 0x0eac,
-  0x842d, 0x2552,
-  0x842e, 0x422d,
-  0x842f, 0x2550,
-  0x8430, 0x253b,
-  0x8431, 0x0ede,
-  0x8432, 0x254b,
-  0x8433, 0x255f,
-  0x8434, 0x2547,
-  0x8435, 0x0ee6,
-  0x8436, 0x255e,
-  0x8437, 0x2545,
-  0x8438, 0x0d41,
-  0x8439, 0x2555,
-  0x843a, 0x2546,
-  0x843b, 0x255c,
-  0x843c, 0x0ee5,
-  0x843d, 0x0edd,
-  0x843e, 0x3d21,
-  0x843f, 0x2530,
-  0x8440, 0x2538,
-  0x8442, 0x2551,
-  0x8443, 0x2549,
-  0x8444, 0x2562,
-  0x8445, 0x254c,
-  0x8446, 0x0eeb,
-  0x8447, 0x255d,
-  0x8448, 0x4718,
-  0x8449, 0x0ee2,
-  0x844a, 0x37e4,
-  0x844b, 0x254f,
-  0x844c, 0x2557,
-  0x844d, 0x253c,
-  0x844e, 0x2556,
-  0x8450, 0x2567,
-  0x8451, 0x2537,
-  0x8452, 0x2558,
-  0x8453, 0x3b7d,
-  0x8454, 0x2565,
-  0x8455, 0x398b,
-  0x8456, 0x2531,
-  0x8457, 0x0d39,
-  0x8458, 0x37de,
-  0x8459, 0x253f,
-  0x845a, 0x253e,
-  0x845b, 0x0ee4,
-  0x845c, 0x3edb,
-  0x845d, 0x2542,
-  0x845e, 0x2544,
-  0x845f, 0x2553,
-  0x8460, 0x2564,
-  0x8461, 0x0ee7,
-  0x8462, 0x42da,
-  0x8463, 0x0ee8,
-  0x8464, 0x4761,
-  0x8465, 0x2536,
-  0x8466, 0x0ee0,
-  0x8467, 0x253a,
-  0x8468, 0x2560,
-  0x8469, 0x0ee9,
-  0x846b, 0x0ee1,
-  0x846c, 0x0ee3,
-  0x846d, 0x0eea,
-  0x846e, 0x2566,
-  0x846f, 0x2559,
-  0x8470, 0x2554,
-  0x8471, 0x37e0,
-  0x8472, 0x3c93,
-  0x8473, 0x2541,
-  0x8474, 0x2540,
-  0x8475, 0x0edf,
-  0x8476, 0x2532,
-  0x8477, 0x0edc,
-  0x8478, 0x254a,
-  0x8479, 0x2533,
-  0x847a, 0x2548,
-  0x847d, 0x253d,
-  0x847e, 0x2561,
-  0x847f, 0x394e,
-  0x8480, 0x3b6e,
-  0x8482, 0x0edb,
-  0x8486, 0x2539,
-  0x8488, 0x4762,
-  0x848d, 0x2535,
-  0x848e, 0x255b,
-  0x848f, 0x2534,
-  0x8490, 0x108e,
-  0x8491, 0x27cd,
-  0x8492, 0x3756,
-  0x8493, 0x37ee,
-  0x8494, 0x27bc,
-  0x8496, 0x3b1d,
-  0x8497, 0x27a6,
-  0x8498, 0x27c4,
-  0x8499, 0x1086,
-  0x849a, 0x27b5,
-  0x849b, 0x27bf,
-  0x849c, 0x1089,
-  0x849d, 0x27b8,
-  0x849e, 0x1087,
-  0x849f, 0x27a9,
-  0x84a0, 0x27c7,
-  0x84a1, 0x27a8,
-  0x84a2, 0x27bb,
-  0x84a3, 0x3b9e,
-  0x84a4, 0x27a7,
-  0x84a7, 0x27b9,
-  0x84a8, 0x27c2,
-  0x84a9, 0x27c0,
-  0x84aa, 0x27b4,
-  0x84ab, 0x27af,
-  0x84ac, 0x27ad,
-  0x84ad, 0x3d8c,
-  0x84ae, 0x27ae,
-  0x84af, 0x27c1,
-  0x84b0, 0x27cc,
-  0x84b1, 0x27b6,
-  0x84b2, 0x1088,
-  0x84b4, 0x27b1,
-  0x84b6, 0x27c5,
-  0x84b8, 0x108b,
-  0x84b9, 0x27b0,
-  0x84ba, 0x27aa,
-  0x84bb, 0x27ba,
-  0x84bc, 0x108f,
-  0x84bd, 0x3c4c,
-  0x84be, 0x4764,
-  0x84bf, 0x1083,
-  0x84c0, 0x108c,
-  0x84c1, 0x27b2,
-  0x84c2, 0x27ac,
-  0x84c4, 0x1085,
-  0x84c5, 0x255a,
-  0x84c6, 0x1084,
-  0x84c7, 0x27bd,
-  0x84c9, 0x1082,
-  0x84ca, 0x1091,
-  0x84cb, 0x108a,
-  0x84cc, 0x27be,
-  0x84cd, 0x27b3,
-  0x84ce, 0x27ab,
-  0x84cf, 0x27c6,
-  0x84d0, 0x27b7,
-  0x84d1, 0x1090,
-  0x84d2, 0x27ca,
-  0x84d3, 0x108d,
-  0x84d4, 0x27c9,
-  0x84d6, 0x27c3,
-  0x84d7, 0x27c8,
-  0x84da, 0x3ff5,
-  0x84db, 0x27cb,
-  0x84de, 0x37ea,
-  0x84e1, 0x4765,
-  0x84e2, 0x37b5,
-  0x84e4, 0x37ef,
-  0x84e5, 0x3bd0,
-  0x84e7, 0x2a03,
-  0x84e9, 0x29f7,
-  0x84ea, 0x29f6,
-  0x84eb, 0x29f2,
-  0x84ec, 0x11fb,
-  0x84ee, 0x11f3,
-  0x84ef, 0x2a06,
-  0x84f0, 0x2a05,
-  0x84f1, 0x252f,
-  0x84f2, 0x29ef,
-  0x84f3, 0x29f3,
-  0x84f4, 0x29ed,
-  0x84f6, 0x2a00,
-  0x84f7, 0x29f1,
-  0x84f8, 0x4766,
-  0x84f9, 0x2a07,
-  0x84fa, 0x29ea,
-  0x84fb, 0x29e8,
-  0x84fc, 0x29f4,
-  0x84fd, 0x29fe,
-  0x84fe, 0x29f9,
-  0x84ff, 0x11fd,
-  0x8500, 0x29df,
-  0x8502, 0x29fd,
-  0x8503, 0x398a,
-  0x8505, 0x40eb,
-  0x8506, 0x11fe,
-  0x8507, 0x2543,
-  0x8508, 0x29eb,
-  0x8509, 0x29e2,
-  0x850a, 0x29e5,
-  0x850b, 0x2a0b,
-  0x850c, 0x29ec,
-  0x850d, 0x29e3,
-  0x850e, 0x29e1,
-  0x850f, 0x29de,
-  0x8510, 0x4767,
-  0x8511, 0x11f7,
-  0x8512, 0x29f5,
-  0x8513, 0x11f6,
-  0x8514, 0x11fa,
-  0x8515, 0x29f0,
-  0x8516, 0x29f8,
-  0x8517, 0x11f0,
-  0x8518, 0x2a08,
-  0x8519, 0x2a0c,
-  0x851a, 0x11f2,
-  0x851c, 0x29e7,
-  0x851d, 0x29fb,
-  0x851e, 0x29ff,
-  0x851f, 0x29e4,
-  0x8520, 0x2a09,
-  0x8521, 0x11f9,
-  0x8523, 0x11f8,
-  0x8524, 0x29dc,
-  0x8525, 0x11fc,
-  0x8526, 0x2a02,
-  0x8527, 0x29e6,
-  0x8528, 0x29fa,
-  0x8529, 0x29e0,
-  0x852a, 0x29ee,
-  0x852b, 0x29e9,
-  0x852c, 0x11f4,
-  0x852e, 0x29fc,
-  0x852f, 0x2a0d,
-  0x8530, 0x2a0a,
-  0x8531, 0x2a01,
-  0x8533, 0x4228,
-  0x8534, 0x37f4,
-  0x8538, 0x4768,
-  0x853b, 0x29dd,
-  0x853d, 0x11f1,
-  0x853e, 0x2c4f,
-  0x8540, 0x2c46,
-  0x8541, 0x2c49,
-  0x8542, 0x4062,
-  0x8543, 0x133b,
-  0x8544, 0x2c4b,
-  0x8545, 0x2c40,
-  0x8546, 0x2c47,
-  0x8547, 0x2c4d,
-  0x8548, 0x1338,
-  0x8549, 0x133c,
-  0x854a, 0x1336,
-  0x854b, 0x37c0,
-  0x854c, 0x400f,
-  0x854d, 0x2c42,
-  0x854e, 0x2c52,
-  0x8551, 0x2c4c,
-  0x8552, 0x4769,
-  0x8553, 0x2c43,
-  0x8554, 0x2c5b,
-  0x8555, 0x2c55,
-  0x8556, 0x2c3f,
-  0x8557, 0x2e23,
-  0x8558, 0x2c45,
-  0x8559, 0x1337,
-  0x855a, 0x37db,
-  0x855b, 0x2c50,
-  0x855d, 0x2c5a,
-  0x855e, 0x133f,
-  0x8560, 0x2c57,
-  0x8561, 0x2c44,
-  0x8562, 0x2c4a,
-  0x8563, 0x2c4e,
-  0x8564, 0x2c48,
-  0x8565, 0x2c5c,
-  0x8566, 0x2c59,
-  0x8567, 0x2c56,
-  0x8568, 0x1339,
-  0x856a, 0x133e,
-  0x856b, 0x2c41,
-  0x856c, 0x2c5d,
-  0x856d, 0x133d,
-  0x856e, 0x2c53,
-  0x856f, 0x476b,
-  0x8571, 0x2c51,
-  0x8573, 0x37f8,
-  0x8575, 0x2c54,
-  0x8576, 0x2e30,
-  0x8577, 0x2e1d,
-  0x8578, 0x2e22,
-  0x8579, 0x2e2f,
-  0x857a, 0x2e21,
-  0x857b, 0x2e19,
-  0x857c, 0x2e1e,
-  0x857e, 0x145c,
-  0x8580, 0x2e12,
-  0x8581, 0x2e2a,
-  0x8582, 0x2e2c,
-  0x8583, 0x2e11,
-  0x8584, 0x145b,
-  0x8585, 0x2e2e,
-  0x8586, 0x2e26,
-  0x8587, 0x1462,
-  0x8588, 0x2e2d,
-  0x8589, 0x2e1f,
-  0x858a, 0x1464,
-  0x858b, 0x2e17,
-  0x858c, 0x2c58,
-  0x858d, 0x2e27,
-  0x858e, 0x2e24,
-  0x858f, 0x2e13,
-  0x8590, 0x2e32,
-  0x8591, 0x145e,
-  0x8594, 0x145f,
-  0x8595, 0x2e15,
-  0x8596, 0x2e25,
-  0x8598, 0x2e31,
-  0x8599, 0x2e28,
-  0x859a, 0x2e1b,
-  0x859b, 0x1461,
-  0x859c, 0x145d,
-  0x859d, 0x2e29,
-  0x859e, 0x2e1c,
-  0x859f, 0x2e33,
-  0x85a0, 0x2e16,
-  0x85a1, 0x2e20,
-  0x85a2, 0x2e2b,
-  0x85a3, 0x2e18,
-  0x85a4, 0x2e1a,
-  0x85a6, 0x1465,
-  0x85a7, 0x2e14,
-  0x85a8, 0x1463,
-  0x85a9, 0x151c,
-  0x85aa, 0x145a,
-  0x85af, 0x1460,
-  0x85b0, 0x1520,
-  0x85b1, 0x2fa6,
-  0x85b3, 0x2f9c,
-  0x85b4, 0x2f97,
-  0x85b5, 0x2f9d,
-  0x85b6, 0x2fa7,
-  0x85b7, 0x2fab,
-  0x85b8, 0x2faa,
-  0x85b9, 0x1522,
-  0x85ba, 0x1521,
-  0x85bd, 0x2f9e,
-  0x85be, 0x2fac,
-  0x85bf, 0x2fa1,
-  0x85c0, 0x2f99,
-  0x85c1, 0x37fe,
-  0x85c2, 0x2f9b,
-  0x85c3, 0x2f9a,
-  0x85c4, 0x2fa0,
-  0x85c5, 0x2fa5,
-  0x85c6, 0x2f98,
-  0x85c7, 0x2f9f,
-  0x85c8, 0x2fa4,
-  0x85c9, 0x151f,
-  0x85cb, 0x2fa2,
-  0x85cd, 0x151d,
-  0x85ce, 0x2fa3,
-  0x85cf, 0x151b,
-  0x85d0, 0x151e,
-  0x85d1, 0x3101,
-  0x85d2, 0x2fa8,
-  0x85d5, 0x15b7,
-  0x85d7, 0x30f9,
-  0x85d8, 0x30fd,
-  0x85d9, 0x30f5,
-  0x85da, 0x30f8,
-  0x85dc, 0x3100,
-  0x85dd, 0x15b5,
-  0x85de, 0x3105,
-  0x85df, 0x30fe,
-  0x85e0, 0x476d,
-  0x85e1, 0x30f6,
-  0x85e2, 0x3106,
-  0x85e3, 0x30ff,
-  0x85e4, 0x15b8,
-  0x85e6, 0x3103,
-  0x85e8, 0x30f7,
-  0x85e9, 0x15b4,
-  0x85ea, 0x15b6,
-  0x85eb, 0x30f2,
-  0x85ec, 0x30fa,
-  0x85ed, 0x30f4,
-  0x85ee, 0x3c56,
-  0x85ef, 0x3104,
-  0x85f0, 0x3102,
-  0x85f1, 0x30f3,
-  0x85f2, 0x30fb,
-  0x85f6, 0x3225,
-  0x85f7, 0x15ba,
-  0x85f8, 0x30fc,
-  0x85f9, 0x1638,
-  0x85fa, 0x163a,
-  0x85fb, 0x1637,
-  0x85fc, 0x3c50,
-  0x85fd, 0x322a,
-  0x85fe, 0x3222,
-  0x85ff, 0x3220,
-  0x8600, 0x3224,
-  0x8601, 0x3221,
-  0x8602, 0x3800,
-  0x8604, 0x3226,
-  0x8605, 0x3228,
-  0x8606, 0x163b,
-  0x8607, 0x163d,
-  0x8609, 0x3227,
-  0x860a, 0x163e,
-  0x860b, 0x163c,
-  0x860c, 0x3229,
-  0x860d, 0x4064,
-  0x8610, 0x3b7f,
-  0x8611, 0x1639,
-  0x8614, 0x46be,
-  0x8616, 0x37fb,
-  0x8617, 0x1685,
-  0x8618, 0x32f6,
-  0x8619, 0x32fc,
-  0x861a, 0x1687,
-  0x861b, 0x3223,
-  0x861c, 0x32fb,
-  0x861e, 0x3302,
-  0x861f, 0x32f9,
-  0x8620, 0x3300,
-  0x8621, 0x32ff,
-  0x8622, 0x321f,
-  0x8623, 0x32fa,
-  0x8624, 0x2fa9,
-  0x8625, 0x3303,
-  0x8626, 0x32f8,
-  0x8627, 0x32fd,
-  0x8628, 0x3805,
-  0x8629, 0x3301,
-  0x862a, 0x32f7,
-  0x862c, 0x33aa,
-  0x862d, 0x1686,
-  0x862e, 0x32fe,
-  0x862f, 0x3f9e,
-  0x8631, 0x3432,
-  0x8632, 0x33ab,
-  0x8633, 0x33a9,
-  0x8634, 0x33a7,
-  0x8636, 0x33ac,
-  0x8638, 0x1707,
-  0x8639, 0x3430,
-  0x863a, 0x342e,
-  0x863b, 0x3433,
-  0x863c, 0x3431,
-  0x863e, 0x3434,
-  0x863f, 0x1708,
-  0x8640, 0x342f,
-  0x8642, 0x38c1,
-  0x8643, 0x3497,
-  0x8645, 0x3b66,
-  0x8646, 0x34df,
-  0x864b, 0x353e,
-  0x864c, 0x3536,
-  0x864d, 0x1818,
-  0x864e, 0x0689,
-  0x8650, 0x07ff,
-  0x8652, 0x1de3,
-  0x8653, 0x1de2,
-  0x8654, 0x09af,
-  0x8655, 0x0b88,
-  0x8656, 0x203c,
-  0x8659, 0x203b,
-  0x865b, 0x0d48,
-  0x865c, 0x0eed,
-  0x865e, 0x0eec,
-  0x865f, 0x0eee,
-  0x8661, 0x27ce,
-  0x8662, 0x2a0e,
-  0x8663, 0x2c5e,
-  0x8664, 0x2c60,
-  0x8665, 0x2c5f,
-  0x8667, 0x1466,
-  0x8668, 0x2e34,
-  0x8669, 0x2fad,
-  0x866a, 0x351e,
-  0x866b, 0x040f,
-  0x866c, 0x3813,
-  0x866d, 0x1a46,
-  0x866f, 0x1a45,
-  0x8670, 0x1a44,
-  0x8671, 0x068a,
-  0x8672, 0x476f,
-  0x8673, 0x1bfd,
-  0x8674, 0x1bfb,
-  0x8677, 0x1bfa,
-  0x8679, 0x0800,
-  0x867a, 0x0802,
-  0x867b, 0x0801,
-  0x867c, 0x1bfc,
-  0x867e, 0x380a,
-  0x8685, 0x1def,
-  0x8686, 0x1dec,
-  0x8687, 0x1dea,
-  0x868a, 0x09b0,
-  0x868b, 0x1ded,
-  0x868c, 0x09b5,
-  0x868d, 0x1de7,
-  0x868e, 0x1df6,
-  0x8690, 0x1df8,
-  0x8691, 0x1de8,
-  0x8692, 0x4770,
-  0x8693, 0x09b2,
-  0x8694, 0x1df9,
-  0x8695, 0x1df4,
-  0x8696, 0x1de6,
-  0x8697, 0x1deb,
-  0x8698, 0x1df5,
-  0x8699, 0x1df1,
-  0x869a, 0x1dee,
-  0x869c, 0x09b7,
-  0x869d, 0x1df7,
-  0x869e, 0x1de9,
-  0x86a0, 0x3b88,
-  0x86a1, 0x1df2,
-  0x86a2, 0x1de4,
-  0x86a3, 0x09b6,
-  0x86a4, 0x09b3,
-  0x86a5, 0x1df0,
-  0x86a7, 0x1df3,
-  0x86a8, 0x1de5,
-  0x86a9, 0x09b4,
-  0x86aa, 0x09b1,
-  0x86ad, 0x3f06,
-  0x86af, 0x0b92,
-  0x86b0, 0x2043,
-  0x86b1, 0x0b91,
-  0x86b2, 0x43e0,
-  0x86b3, 0x2046,
-  0x86b4, 0x2049,
-  0x86b5, 0x0b8e,
-  0x86b6, 0x0b8c,
-  0x86b7, 0x203e,
-  0x86b8, 0x2047,
-  0x86b9, 0x2045,
-  0x86ba, 0x2042,
-  0x86bb, 0x204a,
-  0x86bd, 0x204d,
-  0x86bf, 0x203d,
-  0x86c0, 0x0b8b,
-  0x86c1, 0x2040,
-  0x86c2, 0x203f,
-  0x86c3, 0x204c,
-  0x86c4, 0x0b8d,
-  0x86c5, 0x2041,
-  0x86c6, 0x0b8f,
-  0x86c7, 0x0b8a,
-  0x86c8, 0x2044,
-  0x86c9, 0x0b93,
-  0x86cb, 0x0b90,
-  0x86cc, 0x2048,
-  0x86d0, 0x0d4f,
-  0x86d1, 0x22d2,
-  0x86d3, 0x22c7,
-  0x86d4, 0x0d4c,
-  0x86d6, 0x256d,
-  0x86d7, 0x22d0,
-  0x86d8, 0x22c4,
-  0x86d9, 0x0d4a,
-  0x86da, 0x22c9,
-  0x86db, 0x0d4d,
-  0x86dc, 0x22cd,
-  0x86dd, 0x22cb,
-  0x86de, 0x0d50,
-  0x86df, 0x0d49,
-  0x86e2, 0x22c5,
-  0x86e3, 0x22c8,
-  0x86e4, 0x0d4e,
-  0x86e6, 0x22c6,
-  0x86e8, 0x22d1,
-  0x86e9, 0x22cf,
-  0x86ea, 0x22ca,
-  0x86eb, 0x22cc,
-  0x86ec, 0x22ce,
-  0x86ed, 0x0d4b,
-  0x86ef, 0x4771,
-  0x86f5, 0x256e,
-  0x86f6, 0x2574,
-  0x86f7, 0x256a,
-  0x86f8, 0x2570,
-  0x86f9, 0x0eef,
-  0x86fa, 0x256c,
-  0x86fb, 0x0ef5,
-  0x86fe, 0x0ef4,
-  0x8700, 0x0ef3,
-  0x8701, 0x2573,
-  0x8702, 0x0ef6,
-  0x8704, 0x2569,
-  0x8705, 0x2576,
-  0x8706, 0x0ef8,
-  0x8707, 0x0ef2,
-  0x8708, 0x0ef1,
-  0x8709, 0x2572,
-  0x870a, 0x0ef9,
-  0x870b, 0x2568,
-  0x870c, 0x256b,
-  0x870d, 0x2575,
-  0x870e, 0x2571,
-  0x8711, 0x27ee,
-  0x8712, 0x27e3,
-  0x8713, 0x0ef0,
-  0x8718, 0x1098,
-  0x8719, 0x27d7,
-  0x871a, 0x27ec,
-  0x871b, 0x27d8,
-  0x871c, 0x1093,
-  0x871e, 0x27d5,
-  0x8720, 0x27de,
-  0x8721, 0x27d6,
-  0x8722, 0x1095,
-  0x8723, 0x27d0,
-  0x8724, 0x27eb,
-  0x8725, 0x1096,
-  0x8726, 0x27e8,
-  0x8728, 0x27d1,
-  0x8729, 0x109b,
-  0x872a, 0x27e0,
-  0x872c, 0x27da,
-  0x872d, 0x27e1,
-  0x872e, 0x27d4,
-  0x8730, 0x27ed,
-  0x8731, 0x27e5,
-  0x8732, 0x27df,
-  0x8733, 0x27cf,
-  0x8734, 0x1097,
-  0x8735, 0x27e6,
-  0x8737, 0x109a,
-  0x8738, 0x27ea,
-  0x873a, 0x27e4,
-  0x873b, 0x1094,
-  0x873c, 0x27e2,
-  0x873e, 0x27dc,
-  0x873f, 0x1092,
-  0x8740, 0x27d3,
-  0x8741, 0x27db,
-  0x8742, 0x27e7,
-  0x8743, 0x27d9,
-  0x8746, 0x27dd,
-  0x874c, 0x1208,
-  0x874d, 0x256f,
-  0x874e, 0x2a20,
-  0x874f, 0x2a29,
-  0x8750, 0x2a1f,
-  0x8751, 0x2a1b,
-  0x8752, 0x2a18,
-  0x8753, 0x1209,
-  0x8754, 0x2a16,
-  0x8755, 0x1099,
-  0x8756, 0x2a0f,
-  0x8757, 0x1207,
-  0x8758, 0x2a15,
-  0x8759, 0x1206,
-  0x875a, 0x2a1a,
-  0x875b, 0x2a17,
-  0x875c, 0x2a27,
-  0x875d, 0x2a22,
-  0x875e, 0x2a1c,
-  0x875f, 0x2a21,
-  0x8760, 0x1202,
-  0x8761, 0x2a19,
-  0x8762, 0x2a2c,
-  0x8763, 0x2a10,
-  0x8765, 0x2a28,
-  0x8766, 0x1203,
-  0x8767, 0x2a2d,
-  0x8768, 0x1205,
-  0x8769, 0x2a2e,
-  0x876a, 0x2a1e,
-  0x876b, 0x27d2,
-  0x876c, 0x2a24,
-  0x876d, 0x2a1d,
-  0x876e, 0x2a26,
-  0x876f, 0x2a23,
-  0x8770, 0x3e6c,
-  0x8771, 0x380b,
-  0x8773, 0x2a14,
-  0x8774, 0x1200,
-  0x8775, 0x2a2b,
-  0x8776, 0x1201,
-  0x8777, 0x2a12,
-  0x8778, 0x1204,
-  0x8779, 0x2c6b,
-  0x877a, 0x2a25,
-  0x877b, 0x2a2a,
-  0x877d, 0x4045,
-  0x8781, 0x2c68,
-  0x8782, 0x11ff,
-  0x8783, 0x1340,
-  0x8784, 0x2c72,
-  0x8785, 0x2c6e,
-  0x8786, 0x3eb0,
-  0x8787, 0x2c6c,
-  0x8788, 0x2c67,
-  0x8789, 0x2c76,
-  0x878b, 0x43e2,
-  0x878c, 0x3fef,
-  0x878d, 0x1344,
-  0x878f, 0x2c63,
-  0x8790, 0x2c6f,
-  0x8792, 0x2c66,
-  0x8793, 0x2c65,
-  0x8794, 0x2c73,
-  0x8796, 0x2c69,
-  0x8797, 0x2c64,
-  0x8798, 0x2c6a,
-  0x879a, 0x2c75,
-  0x879b, 0x2c62,
-  0x879c, 0x2c74,
-  0x879d, 0x2c71,
-  0x879e, 0x1342,
-  0x879f, 0x1341,
-  0x87a2, 0x1343,
-  0x87a3, 0x2c6d,
-  0x87a4, 0x2c61,
-  0x87a5, 0x3d88,
-  0x87a9, 0x3fec,
-  0x87aa, 0x2e36,
-  0x87ab, 0x146c,
-  0x87ac, 0x2e3a,
-  0x87ad, 0x2e37,
-  0x87ae, 0x2e3e,
-  0x87af, 0x2e44,
-  0x87b0, 0x2e39,
-  0x87b1, 0x380f,
-  0x87b2, 0x2e4d,
-  0x87b3, 0x1469,
-  0x87b4, 0x2e47,
-  0x87b5, 0x2e3c,
-  0x87b6, 0x2e48,
-  0x87b7, 0x2e43,
-  0x87b8, 0x2e4a,
-  0x87b9, 0x2e3b,
-  0x87ba, 0x146e,
-  0x87bb, 0x146d,
-  0x87bc, 0x2e3d,
-  0x87bd, 0x2e4b,
-  0x87be, 0x2e35,
-  0x87bf, 0x2e49,
-  0x87c0, 0x1467,
-  0x87c1, 0x3ffc,
-  0x87c2, 0x2e41,
-  0x87c3, 0x2e40,
-  0x87c4, 0x2e45,
-  0x87c5, 0x2e38,
-  0x87c6, 0x146b,
-  0x87c8, 0x146f,
-  0x87c9, 0x2e3f,
-  0x87ca, 0x2e46,
-  0x87cb, 0x1470,
-  0x87cc, 0x2e42,
-  0x87ce, 0x3fed,
-  0x87d1, 0x1468,
-  0x87d2, 0x146a,
-  0x87d3, 0x2fba,
-  0x87d4, 0x2fb8,
-  0x87d6, 0x3f92,
-  0x87d7, 0x2fbe,
-  0x87d8, 0x2fbc,
-  0x87d9, 0x2fbf,
-  0x87da, 0x3810,
-  0x87db, 0x2fb1,
-  0x87dc, 0x2fb9,
-  0x87dd, 0x2fc3,
-  0x87de, 0x2e4c,
-  0x87df, 0x2fb5,
-  0x87e0, 0x1526,
-  0x87e1, 0x2a13,
-  0x87e2, 0x2fb0,
-  0x87e3, 0x2fbd,
-  0x87e4, 0x2fb7,
-  0x87e5, 0x2fb4,
-  0x87e6, 0x2faf,
-  0x87e7, 0x2fae,
-  0x87e8, 0x2fc2,
-  0x87ea, 0x2fb3,
-  0x87eb, 0x2fb2,
-  0x87ec, 0x1524,
-  0x87ed, 0x2fbb,
-  0x87ee, 0x380d,
-  0x87ef, 0x1523,
-  0x87f2, 0x1525,
-  0x87f3, 0x2fb6,
-  0x87f4, 0x2fc1,
-  0x87f5, 0x3fae,
-  0x87f6, 0x310a,
-  0x87f9, 0x15be,
-  0x87fa, 0x3108,
-  0x87fb, 0x15bb,
-  0x87fc, 0x3110,
-  0x87fe, 0x15bf,
-  0x87ff, 0x3112,
-  0x8800, 0x3107,
-  0x8801, 0x2fc0,
-  0x8802, 0x3114,
-  0x8803, 0x3109,
-  0x8804, 0x3eaf,
-  0x8805, 0x15bc,
-  0x8806, 0x310f,
-  0x8808, 0x3111,
-  0x8809, 0x310c,
-  0x880a, 0x3113,
-  0x880b, 0x310e,
-  0x880c, 0x310d,
-  0x880d, 0x15bd,
-  0x880f, 0x3811,
-  0x8810, 0x322c,
-  0x8813, 0x322f,
-  0x8814, 0x163f,
-  0x8816, 0x3230,
-  0x8817, 0x322e,
-  0x8818, 0x3f7a,
-  0x8819, 0x322b,
-  0x881b, 0x3306,
-  0x881c, 0x3309,
-  0x881d, 0x3305,
-  0x881f, 0x168b,
-  0x8820, 0x3307,
-  0x8821, 0x168a,
-  0x8822, 0x1689,
-  0x8823, 0x1688,
-  0x8824, 0x3308,
-  0x8825, 0x33b1,
-  0x8826, 0x33af,
-  0x8827, 0x3e07,
-  0x8828, 0x33ae,
-  0x8829, 0x3304,
-  0x882a, 0x33b0,
-  0x882b, 0x330a,
-  0x882c, 0x33ad,
-  0x882d, 0x3b8b,
-  0x882e, 0x3437,
-  0x882f, 0x3415,
-  0x8830, 0x3435,
-  0x8831, 0x1709,
-  0x8832, 0x3436,
-  0x8833, 0x3438,
-  0x8835, 0x349a,
-  0x8836, 0x1728,
-  0x8837, 0x3499,
-  0x8838, 0x3498,
-  0x8839, 0x1729,
-  0x883b, 0x1747,
-  0x883c, 0x3508,
-  0x883d, 0x3520,
-  0x883e, 0x351f,
-  0x883f, 0x3521,
-  0x8840, 0x0410,
-  0x8841, 0x1bfe,
-  0x8842, 0x3f5a,
-  0x8843, 0x1dfa,
-  0x8845, 0x3816,
-  0x8848, 0x22d3,
-  0x884a, 0x330b,
-  0x884b, 0x349b,
-  0x884c, 0x0411,
-  0x884d, 0x0803,
-  0x884e, 0x1bff,
-  0x884f, 0x3844,
-  0x8852, 0x204f,
-  0x8853, 0x0b94,
-  0x8855, 0x22d5,
-  0x8856, 0x22d4,
-  0x8857, 0x0d51,
-  0x8859, 0x0efa,
-  0x885a, 0x2a2f,
-  0x885b, 0x120a,
-  0x885d, 0x120b,
-  0x885e, 0x381b,
-  0x8860, 0x3a46,
-  0x8861, 0x1345,
-  0x8862, 0x172a,
-  0x8863, 0x0412,
-  0x8864, 0x4502,
-  0x8865, 0x3dfc,
-  0x8867, 0x1c00,
-  0x8868, 0x068c,
-  0x8869, 0x1c02,
-  0x886a, 0x1c01,
-  0x886b, 0x0804,
-  0x886d, 0x1dfc,
-  0x886e, 0x3b8e,
-  0x886f, 0x1e03,
-  0x8870, 0x09b8,
-  0x8871, 0x1e01,
-  0x8872, 0x1dff,
-  0x8874, 0x1e06,
-  0x8875, 0x1dfd,
-  0x8877, 0x09b9,
-  0x8879, 0x09bd,
-  0x887c, 0x1e07,
-  0x887d, 0x09bc,
-  0x887e, 0x1e05,
-  0x887f, 0x1e02,
-  0x8880, 0x1e00,
-  0x8881, 0x09ba,
-  0x8883, 0x1e04,
-  0x8884, 0x42f7,
-  0x8887, 0x3b90,
-  0x8888, 0x0b96,
-  0x8889, 0x2050,
-  0x888b, 0x0b9b,
-  0x888c, 0x2060,
-  0x888d, 0x0b9a,
-  0x888e, 0x2062,
-  0x8891, 0x2056,
-  0x8892, 0x0b98,
-  0x8893, 0x2061,
-  0x8895, 0x2051,
-  0x8896, 0x0b99,
-  0x8897, 0x205d,
-  0x8898, 0x2059,
-  0x8899, 0x205b,
-  0x889a, 0x2055,
-  0x889b, 0x205c,
-  0x889c, 0x381c,
-  0x889e, 0x0b95,
-  0x889f, 0x2058,
-  0x88a0, 0x3fa0,
-  0x88a1, 0x2057,
-  0x88a2, 0x2053,
-  0x88a4, 0x205e,
-  0x88a7, 0x205a,
-  0x88a8, 0x2052,
-  0x88aa, 0x2054,
-  0x88ab, 0x0b97,
-  0x88ac, 0x205f,
-  0x88ae, 0x4775,
-  0x88b1, 0x0d54,
-  0x88b2, 0x22e0,
-  0x88b4, 0x381e,
-  0x88b6, 0x22dc,
-  0x88b7, 0x22de,
-  0x88b8, 0x22d9,
-  0x88b9, 0x22d8,
-  0x88ba, 0x22d6,
-  0x88bc, 0x22dd,
-  0x88bd, 0x22df,
-  0x88be, 0x22db,
-  0x88bf, 0x3b91,
-  0x88c0, 0x22da,
-  0x88c1, 0x0d52,
-  0x88c5, 0x3820,
-  0x88c7, 0x3eb1,
-  0x88c9, 0x22e2,
-  0x88ca, 0x0f02,
-  0x88cb, 0x2578,
-  0x88cc, 0x257e,
-  0x88cd, 0x2579,
-  0x88cf, 0x36ea,
-  0x88d0, 0x257f,
-  0x88d2, 0x0f04,
-  0x88d4, 0x0efc,
-  0x88d5, 0x0f03,
-  0x88d6, 0x2577,
-  0x88d7, 0x22d7,
-  0x88d8, 0x0eff,
-  0x88d9, 0x0efd,
-  0x88da, 0x257d,
-  0x88db, 0x257c,
-  0x88dc, 0x0efe,
-  0x88dd, 0x0f00,
-  0x88de, 0x257b,
-  0x88df, 0x0efb,
-  0x88e1, 0x0f01,
-  0x88e6, 0x3b92,
-  0x88e7, 0x27f0,
-  0x88e8, 0x10a2,
-  0x88eb, 0x27fb,
-  0x88ec, 0x27fa,
-  0x88ee, 0x27f5,
-  0x88ef, 0x10a4,
-  0x88f0, 0x27f9,
-  0x88f1, 0x27f1,
-  0x88f3, 0x109c,
-  0x88f4, 0x109e,
-  0x88f5, 0x3e08,
-  0x88f6, 0x27f7,
-  0x88f7, 0x27ef,
-  0x88f8, 0x10a0,
-  0x88f9, 0x109f,
-  0x88fa, 0x27f3,
-  0x88fb, 0x27f8,
-  0x88fc, 0x27f6,
-  0x88fd, 0x10a1,
-  0x88fe, 0x27f4,
-  0x88ff, 0x4776,
-  0x8900, 0x42fa,
-  0x8901, 0x22e1,
-  0x8902, 0x109d,
-  0x8905, 0x2a30,
-  0x8906, 0x2a37,
-  0x8907, 0x120d,
-  0x8909, 0x2a3b,
-  0x890a, 0x1211,
-  0x890b, 0x2a33,
-  0x890c, 0x2a31,
-  0x890e, 0x2a3a,
-  0x8910, 0x120c,
-  0x8911, 0x2a39,
-  0x8912, 0x120e,
-  0x8914, 0x2a32,
-  0x8915, 0x1210,
-  0x8916, 0x2a38,
-  0x8917, 0x2a34,
-  0x891a, 0x10a3,
-  0x891e, 0x2c77,
-  0x891f, 0x2c83,
-  0x8921, 0x134a,
-  0x8922, 0x2c7e,
-  0x8923, 0x2c80,
-  0x8924, 0x4777,
-  0x8925, 0x1348,
-  0x8926, 0x2c78,
-  0x8927, 0x2c7c,
-  0x8929, 0x2c7f,
-  0x892a, 0x1346,
-  0x892b, 0x1349,
-  0x892c, 0x2c82,
-  0x892d, 0x2c7a,
-  0x892f, 0x2c81,
-  0x8930, 0x2c79,
-  0x8931, 0x2c7d,
-  0x8932, 0x1347,
-  0x8933, 0x2e4f,
-  0x8935, 0x2e4e,
-  0x8936, 0x1472,
-  0x8937, 0x2e54,
-  0x8938, 0x1474,
-  0x893b, 0x1471,
-  0x893c, 0x2e50,
-  0x893d, 0x1475,
-  0x893e, 0x2e51,
-  0x8941, 0x2e52,
-  0x8942, 0x2e55,
-  0x8943, 0x3e16,
-  0x8944, 0x1473,
-  0x8946, 0x2fc8,
-  0x8947, 0x43e3,
-  0x8949, 0x2fcb,
-  0x894b, 0x2fc5,
-  0x894c, 0x2fc7,
-  0x894d, 0x3b94,
-  0x894f, 0x2fc6,
-  0x8950, 0x2fc9,
-  0x8952, 0x2e53,
-  0x8953, 0x2fc4,
-  0x8954, 0x3b96,
-  0x8956, 0x15c2,
-  0x8957, 0x3118,
-  0x8958, 0x311b,
-  0x8959, 0x311d,
-  0x895a, 0x3116,
-  0x895c, 0x311a,
-  0x895d, 0x311c,
-  0x895e, 0x15c3,
-  0x895f, 0x15c1,
-  0x8960, 0x15c0,
-  0x8961, 0x3119,
-  0x8962, 0x3115,
-  0x8963, 0x3231,
-  0x8964, 0x1641,
-  0x8965, 0x3b93,
-  0x8966, 0x3232,
-  0x8969, 0x330d,
-  0x896a, 0x168c,
-  0x896b, 0x330f,
-  0x896c, 0x168d,
-  0x896d, 0x330c,
-  0x896e, 0x330e,
-  0x896f, 0x16d6,
-  0x8971, 0x33b2,
-  0x8972, 0x16d5,
-  0x8973, 0x343b,
-  0x8974, 0x343a,
-  0x8976, 0x3439,
-  0x8977, 0x3dea,
-  0x8979, 0x34e2,
-  0x897b, 0x34e5,
-  0x897c, 0x34e4,
-  0x897e, 0x1819,
-  0x897f, 0x0413,
-  0x8980, 0x4708,
-  0x8981, 0x0805,
-  0x8982, 0x2063,
-  0x8983, 0x0d55,
-  0x8985, 0x2580,
-  0x8986, 0x1527,
-  0x8987, 0x3822,
-  0x8988, 0x311e,
-  0x8989, 0x3fe9,
-  0x898a, 0x3823,
-  0x898b, 0x0508,
-  0x898f, 0x0b9d,
-  0x8991, 0x4778,
-  0x8993, 0x0b9c,
-  0x8994, 0x3fe0,
-  0x8995, 0x22e3,
-  0x8996, 0x0d56,
-  0x8997, 0x22e5,
-  0x8998, 0x22e4,
-  0x899b, 0x2581,
-  0x899c, 0x0f05,
-  0x899d, 0x27fc,
-  0x899e, 0x27ff,
-  0x899f, 0x27fe,
-  0x89a1, 0x27fd,
-  0x89a2, 0x2a3c,
-  0x89a3, 0x2a3e,
-  0x89a4, 0x2a3d,
-  0x89a5, 0x3d93,
-  0x89a6, 0x134c,
-  0x89a7, 0x3826,
-  0x89a9, 0x3825,
-  0x89aa, 0x134b,
-  0x89ac, 0x1476,
-  0x89ad, 0x2e56,
-  0x89ae, 0x2e58,
-  0x89af, 0x2e57,
-  0x89b2, 0x1528,
-  0x89b6, 0x3120,
-  0x89b7, 0x311f,
-  0x89b9, 0x3233,
-  0x89ba, 0x1642,
-  0x89bc, 0x3827,
-  0x89bd, 0x168e,
-  0x89be, 0x33b4,
-  0x89bf, 0x33b3,
-  0x89c0, 0x1748,
-  0x89c1, 0x4503,
-  0x89c6, 0x4566,
-  0x89d2, 0x0509,
-  0x89d3, 0x1c03,
-  0x89d4, 0x0806,
-  0x89d5, 0x2066,
-  0x89d6, 0x2064,
-  0x89d9, 0x2065,
-  0x89da, 0x22e7,
-  0x89dc, 0x2588,
-  0x89dd, 0x22e6,
-  0x89df, 0x2582,
-  0x89e0, 0x2586,
-  0x89e1, 0x2585,
-  0x89e2, 0x2587,
-  0x89e3, 0x0f06,
-  0x89e4, 0x2584,
-  0x89e5, 0x2583,
-  0x89e6, 0x2589,
-  0x89e7, 0x3829,
-  0x89e8, 0x2802,
-  0x89e9, 0x2800,
-  0x89eb, 0x2801,
-  0x89ec, 0x2a41,
-  0x89ed, 0x2a3f,
-  0x89f0, 0x2a40,
-  0x89f1, 0x2c84,
-  0x89f2, 0x2e59,
-  0x89f4, 0x1529,
-  0x89f6, 0x3121,
-  0x89f7, 0x3234,
-  0x89f8, 0x1643,
-  0x89fa, 0x3310,
-  0x89fb, 0x33b5,
-  0x89fc, 0x16d7,
-  0x89fe, 0x343c,
-  0x89ff, 0x34e6,
-  0x8a00, 0x050a,
-  0x8a02, 0x0808,
-  0x8a04, 0x1c04,
-  0x8a07, 0x1c05,
-  0x8a08, 0x0807,
-  0x8a0a, 0x09c3,
-  0x8a0c, 0x09c1,
-  0x8a0e, 0x09c0,
-  0x8a0f, 0x09c7,
-  0x8a10, 0x09bf,
-  0x8a11, 0x09c8,
-  0x8a12, 0x1e08,
-  0x8a13, 0x09c5,
-  0x8a15, 0x09c2,
-  0x8a16, 0x09c6,
-  0x8a17, 0x09c4,
-  0x8a18, 0x09be,
-  0x8a1b, 0x0ba5,
-  0x8a1c, 0x3ba3,
-  0x8a1d, 0x0b9f,
-  0x8a1e, 0x206a,
-  0x8a1f, 0x0ba4,
-  0x8a22, 0x0ba6,
-  0x8a23, 0x0ba0,
-  0x8a25, 0x0ba1,
-  0x8a27, 0x2068,
-  0x8a29, 0x43e5,
-  0x8a2a, 0x0b9e,
-  0x8a2b, 0x3bd1,
-  0x8a2c, 0x2069,
-  0x8a2d, 0x0ba3,
-  0x8a30, 0x2067,
-  0x8a31, 0x0ba2,
-  0x8a34, 0x0d61,
-  0x8a36, 0x0d63,
-  0x8a38, 0x477a,
-  0x8a39, 0x22eb,
-  0x8a3a, 0x0d62,
-  0x8a3b, 0x0d57,
-  0x8a3c, 0x0d5b,
-  0x8a3d, 0x3ba2,
-  0x8a3e, 0x0f19,
-  0x8a3f, 0x258e,
-  0x8a40, 0x22ed,
-  0x8a41, 0x0d5c,
-  0x8a44, 0x22f0,
-  0x8a46, 0x0d60,
-  0x8a48, 0x22f3,
-  0x8a49, 0x3ff0,
-  0x8a4a, 0x22f5,
-  0x8a4c, 0x22f6,
-  0x8a4d, 0x22ea,
-  0x8a4e, 0x22e9,
-  0x8a4f, 0x22f7,
-  0x8a50, 0x0d5f,
-  0x8a51, 0x22f4,
-  0x8a52, 0x22f2,
-  0x8a54, 0x0d5d,
-  0x8a55, 0x0d59,
-  0x8a56, 0x0d64,
-  0x8a57, 0x22ee,
-  0x8a59, 0x22ec,
-  0x8a5b, 0x0d5e,
-  0x8a5e, 0x0d5a,
-  0x8a60, 0x0d58,
-  0x8a61, 0x258d,
-  0x8a62, 0x0f14,
-  0x8a63, 0x0f0f,
-  0x8a66, 0x0f0a,
-  0x8a67, 0x3f8e,
-  0x8a68, 0x0f1a,
-  0x8a69, 0x0f0b,
-  0x8a6b, 0x0f07,
-  0x8a6c, 0x0f16,
-  0x8a6d, 0x0f13,
-  0x8a6e, 0x0f15,
-  0x8a70, 0x0f0c,
-  0x8a71, 0x0f11,
-  0x8a72, 0x0f08,
-  0x8a74, 0x2595,
-  0x8a75, 0x2592,
-  0x8a76, 0x258a,
-  0x8a77, 0x258f,
-  0x8a79, 0x0f17,
-  0x8a7a, 0x2596,
-  0x8a7b, 0x0f18,
-  0x8a7c, 0x0f0e,
-  0x8a7e, 0x3fa5,
-  0x8a7f, 0x258c,
-  0x8a81, 0x2594,
-  0x8a82, 0x2590,
-  0x8a83, 0x2593,
-  0x8a84, 0x2591,
-  0x8a85, 0x0f12,
-  0x8a86, 0x258b,
-  0x8a87, 0x0f0d,
-  0x8a8b, 0x2805,
-  0x8a8c, 0x10a6,
-  0x8a8d, 0x10a9,
-  0x8a8f, 0x2807,
-  0x8a90, 0x382f,
-  0x8a91, 0x10b1,
-  0x8a92, 0x2806,
-  0x8a93, 0x10ab,
-  0x8a94, 0x477b,
-  0x8a95, 0x1216,
-  0x8a96, 0x2808,
-  0x8a98, 0x10b0,
-  0x8a99, 0x2804,
-  0x8a9a, 0x10b2,
-  0x8a9c, 0x382c,
-  0x8a9e, 0x10a7,
-  0x8aa0, 0x0f10,
-  0x8aa1, 0x10aa,
-  0x8aa3, 0x10a8,
-  0x8aa4, 0x10ac,
-  0x8aa5, 0x10ae,
-  0x8aa6, 0x10a5,
-  0x8aa7, 0x10b3,
-  0x8aa8, 0x10af,
-  0x8aa9, 0x383d,
-  0x8aaa, 0x10ad,
-  0x8aab, 0x2803,
-  0x8aaf, 0x3841,
-  0x8ab0, 0x121d,
-  0x8ab2, 0x1219,
-  0x8ab4, 0x477c,
-  0x8ab6, 0x1220,
-  0x8ab8, 0x2a44,
-  0x8ab9, 0x1221,
-  0x8aba, 0x2a50,
-  0x8abb, 0x2a49,
-  0x8abc, 0x1212,
-  0x8abd, 0x2a51,
-  0x8abe, 0x2a4b,
-  0x8abf, 0x121c,
-  0x8ac0, 0x2a4c,
-  0x8ac2, 0x121b,
-  0x8ac3, 0x2a4f,
-  0x8ac4, 0x1215,
-  0x8ac5, 0x2a4d,
-  0x8ac6, 0x2a43,
-  0x8ac7, 0x1214,
-  0x8ac8, 0x2c8f,
-  0x8ac9, 0x121a,
-  0x8acb, 0x1217,
-  0x8acd, 0x121f,
-  0x8acf, 0x2a42,
-  0x8ad1, 0x2a46,
-  0x8ad2, 0x1213,
-  0x8ad3, 0x2a45,
-  0x8ad4, 0x2a47,
-  0x8ad6, 0x121e,
-  0x8ad7, 0x2a4a,
-  0x8ad8, 0x2a4e,
-  0x8ad9, 0x2a52,
-  0x8ada, 0x39c2,
-  0x8adb, 0x1222,
-  0x8adc, 0x1352,
-  0x8add, 0x2c8a,
-  0x8ade, 0x2c90,
-  0x8adf, 0x2c8d,
-  0x8ae0, 0x2c85,
-  0x8ae1, 0x2c91,
-  0x8ae2, 0x2c86,
-  0x8ae4, 0x2c8c,
-  0x8ae6, 0x134d,
-  0x8ae7, 0x1353,
-  0x8ae8, 0x2c92,
-  0x8aea, 0x3dd9,
-  0x8aeb, 0x134f,
-  0x8aed, 0x1359,
-  0x8aee, 0x1354,
-  0x8aef, 0x2c94,
-  0x8af0, 0x2c8e,
-  0x8af1, 0x1350,
-  0x8af2, 0x2c87,
-  0x8af3, 0x135a,
-  0x8af4, 0x2c88,
-  0x8af6, 0x135b,
-  0x8af7, 0x1358,
-  0x8af8, 0x1218,
-  0x8afa, 0x134e,
-  0x8afb, 0x2c95,
-  0x8afc, 0x135c,
-  0x8afe, 0x1355,
-  0x8aff, 0x2c93,
-  0x8b00, 0x1351,
-  0x8b01, 0x1356,
-  0x8b04, 0x147e,
-  0x8b05, 0x2e5f,
-  0x8b06, 0x2e68,
-  0x8b07, 0x2e65,
-  0x8b08, 0x2e67,
-  0x8b0a, 0x147b,
-  0x8b0b, 0x2e60,
-  0x8b0c, 0x3836,
-  0x8b0d, 0x2e66,
-  0x8b0e, 0x1477,
-  0x8b0f, 0x2e62,
-  0x8b10, 0x147f,
-  0x8b11, 0x2e5e,
-  0x8b12, 0x2e63,
-  0x8b13, 0x2e6a,
-  0x8b14, 0x2c8b,
-  0x8b15, 0x2e64,
-  0x8b16, 0x2e5d,
-  0x8b17, 0x1478,
-  0x8b18, 0x2e5c,
-  0x8b19, 0x1479,
-  0x8b1a, 0x2e6b,
-  0x8b1b, 0x147a,
-  0x8b1c, 0x2e69,
-  0x8b1d, 0x147d,
-  0x8b1e, 0x2e5b,
-  0x8b1f, 0x3837,
-  0x8b20, 0x147c,
-  0x8b22, 0x2e61,
-  0x8b23, 0x2fce,
-  0x8b24, 0x2fdc,
-  0x8b25, 0x2fd7,
-  0x8b26, 0x2fd9,
-  0x8b27, 0x2fcd,
-  0x8b28, 0x152a,
-  0x8b2a, 0x2fcc,
-  0x8b2b, 0x152d,
-  0x8b2c, 0x152c,
-  0x8b2d, 0x3f99,
-  0x8b2e, 0x2fdb,
-  0x8b2f, 0x2fd3,
-  0x8b30, 0x2fd0,
-  0x8b31, 0x2fd6,
-  0x8b33, 0x2fcf,
-  0x8b35, 0x2fd1,
-  0x8b36, 0x2fda,
-  0x8b37, 0x2fd8,
-  0x8b39, 0x152b,
-  0x8b3a, 0x2fdf,
-  0x8b3b, 0x2fdd,
-  0x8b3c, 0x2fd4,
-  0x8b3d, 0x2fde,
-  0x8b3e, 0x2fd5,
-  0x8b3f, 0x383a,
-  0x8b40, 0x3125,
-  0x8b41, 0x15c4,
-  0x8b42, 0x312c,
-  0x8b43, 0x3ff2,
-  0x8b45, 0x3313,
-  0x8b46, 0x15cb,
-  0x8b47, 0x2fd2,
-  0x8b48, 0x3123,
-  0x8b49, 0x15c7,
-  0x8b4a, 0x3124,
-  0x8b4b, 0x3129,
-  0x8b4c, 0x383b,
-  0x8b4e, 0x15c9,
-  0x8b50, 0x3122,
-  0x8b51, 0x312b,
-  0x8b52, 0x312d,
-  0x8b53, 0x3126,
-  0x8b54, 0x3128,
-  0x8b55, 0x312a,
-  0x8b56, 0x3127,
-  0x8b57, 0x312e,
-  0x8b58, 0x15c6,
-  0x8b59, 0x15cc,
-  0x8b5a, 0x15c8,
-  0x8b5c, 0x15c5,
-  0x8b5d, 0x3237,
-  0x8b5e, 0x3db8,
-  0x8b5f, 0x1648,
-  0x8b60, 0x3235,
-  0x8b62, 0x3dd4,
-  0x8b63, 0x3239,
-  0x8b65, 0x323a,
-  0x8b66, 0x1646,
-  0x8b67, 0x323b,
-  0x8b68, 0x3238,
-  0x8b69, 0x3bf7,
-  0x8b6a, 0x3236,
-  0x8b6b, 0x1649,
-  0x8b6c, 0x1645,
-  0x8b6d, 0x323c,
-  0x8b6f, 0x1647,
-  0x8b70, 0x1644,
-  0x8b74, 0x168f,
-  0x8b77, 0x1690,
-  0x8b78, 0x3312,
-  0x8b79, 0x3311,
-  0x8b7a, 0x3314,
-  0x8b7d, 0x1691,
-  0x8b7e, 0x33b6,
-  0x8b7f, 0x33bb,
-  0x8b80, 0x16d8,
-  0x8b81, 0x3d8d,
-  0x8b82, 0x33b8,
-  0x8b84, 0x33b7,
-  0x8b85, 0x33ba,
-  0x8b86, 0x33b9,
-  0x8b88, 0x3440,
-  0x8b8a, 0x170a,
-  0x8b8b, 0x343f,
-  0x8b8c, 0x343d,
-  0x8b8e, 0x343e,
-  0x8b90, 0x383f,
-  0x8b92, 0x172c,
-  0x8b93, 0x172b,
-  0x8b94, 0x349c,
-  0x8b96, 0x172d,
-  0x8b98, 0x34e7,
-  0x8b9a, 0x1754,
-  0x8b9b, 0x3840,
-  0x8b9c, 0x175a,
-  0x8b9e, 0x3522,
-  0x8b9f, 0x353f,
-  0x8ba0, 0x4505,
-  0x8bbe, 0x4567,
-  0x8be2, 0x4568,
-  0x8c37, 0x050b,
-  0x8c39, 0x206b,
-  0x8c3b, 0x206c,
-  0x8c3c, 0x2597,
-  0x8c3d, 0x2809,
-  0x8c3e, 0x2a53,
-  0x8c3f, 0x1481,
-  0x8c41, 0x1480,
-  0x8c42, 0x2fe0,
-  0x8c43, 0x312f,
-  0x8c45, 0x3441,
-  0x8c46, 0x050c,
-  0x8c47, 0x1e09,
-  0x8c48, 0x09c9,
-  0x8c49, 0x0ba7,
-  0x8c4a, 0x2599,
-  0x8c4b, 0x2598,
-  0x8c4c, 0x1223,
-  0x8c4d, 0x2a54,
-  0x8c4e, 0x1224,
-  0x8c4f, 0x2e6c,
-  0x8c50, 0x152e,
-  0x8c51, 0x477d,
-  0x8c54, 0x1763,
-  0x8c55, 0x050d,
-  0x8c56, 0x1a48,
-  0x8c57, 0x1e0a,
-  0x8c5a, 0x0ba8,
-  0x8c5c, 0x206d,
-  0x8c5f, 0x22f8,
-  0x8c61, 0x0d65,
-  0x8c62, 0x0f1b,
-  0x8c64, 0x259b,
-  0x8c65, 0x259a,
-  0x8c66, 0x259c,
-  0x8c68, 0x280a,
-  0x8c6a, 0x10b4,
-  0x8c6b, 0x135d,
-  0x8c6c, 0x1225,
-  0x8c6d, 0x135e,
-  0x8c6f, 0x2e70,
-  0x8c70, 0x2e6d,
-  0x8c71, 0x2e6f,
-  0x8c72, 0x2e6e,
-  0x8c73, 0x1482,
-  0x8c75, 0x2fe1,
-  0x8c76, 0x3131,
-  0x8c77, 0x3130,
-  0x8c78, 0x18e7,
-  0x8c79, 0x09cb,
-  0x8c7a, 0x09ca,
-  0x8c7b, 0x1e0b,
-  0x8c7d, 0x206f,
-  0x8c80, 0x22fa,
-  0x8c81, 0x22f9,
-  0x8c82, 0x0d66,
-  0x8c84, 0x259e,
-  0x8c86, 0x259d,
-  0x8c89, 0x0f1d,
-  0x8c8a, 0x0f1c,
-  0x8c8c, 0x10b6,
-  0x8c8d, 0x10b5,
-  0x8c8f, 0x2a55,
-  0x8c90, 0x2c98,
-  0x8c91, 0x2c96,
-  0x8c93, 0x135f,
-  0x8c94, 0x2e72,
-  0x8c95, 0x2e71,
-  0x8c97, 0x2fe4,
-  0x8c98, 0x2fe3,
-  0x8c99, 0x2fe2,
-  0x8c9a, 0x3132,
-  0x8c9b, 0x3845,
-  0x8c9c, 0x3523,
-  0x8c9d, 0x050e,
-  0x8c9e, 0x080a,
-  0x8c9f, 0x3bad,
-  0x8ca0, 0x080b,
-  0x8ca1, 0x09cc,
-  0x8ca3, 0x1e0d,
-  0x8ca4, 0x1e0c,
-  0x8ca5, 0x2070,
-  0x8ca7, 0x0bae,
-  0x8ca8, 0x0bac,
-  0x8ca9, 0x0ba9,
-  0x8caa, 0x0bad,
-  0x8cab, 0x0bab,
-  0x8cac, 0x0baa,
-  0x8cad, 0x3ff1,
-  0x8caf, 0x0d67,
-  0x8cb0, 0x22fd,
-  0x8cb2, 0x0f22,
-  0x8cb3, 0x0d69,
-  0x8cb4, 0x0d6e,
-  0x8cb5, 0x22ff,
-  0x8cb6, 0x0d70,
-  0x8cb7, 0x0d6f,
-  0x8cb8, 0x0d72,
-  0x8cb9, 0x22fe,
-  0x8cba, 0x22fb,
-  0x8cbb, 0x0d6c,
-  0x8cbc, 0x0d68,
-  0x8cbd, 0x0d6a,
-  0x8cbe, 0x22fc,
-  0x8cbf, 0x0d71,
-  0x8cc0, 0x0d6d,
-  0x8cc1, 0x0d6b,
-  0x8cc2, 0x0f24,
-  0x8cc3, 0x0f23,
-  0x8cc4, 0x0f21,
-  0x8cc5, 0x0f25,
-  0x8cc7, 0x0f1f,
-  0x8cca, 0x0f1e,
-  0x8ccc, 0x25a0,
-  0x8ccd, 0x3e99,
-  0x8ccf, 0x280d,
-  0x8cd1, 0x10b8,
-  0x8cd3, 0x10b7,
-  0x8cd4, 0x477e,
-  0x8cd5, 0x280c,
-  0x8cd6, 0x384b,
-  0x8cd7, 0x280e,
-  0x8cd9, 0x2a58,
-  0x8cda, 0x2a5a,
-  0x8cdb, 0x3851,
-  0x8cdc, 0x122e,
-  0x8cdd, 0x2a5b,
-  0x8cde, 0x1227,
-  0x8cdf, 0x2a57,
-  0x8ce0, 0x1226,
-  0x8ce1, 0x1230,
-  0x8ce2, 0x122c,
-  0x8ce4, 0x1229,
-  0x8ce5, 0x2a56,
-  0x8ce6, 0x1228,
-  0x8ce7, 0x2a5c,
-  0x8ce8, 0x2a59,
-  0x8ce9, 0x3bae,
-  0x8cea, 0x122f,
-  0x8ceb, 0x3f9c,
-  0x8cec, 0x122a,
-  0x8cee, 0x2c9a,
-  0x8cf0, 0x2c9c,
-  0x8cf1, 0x2c9b,
-  0x8cf2, 0x477f,
-  0x8cf3, 0x2c9d,
-  0x8cf4, 0x1360,
-  0x8cf5, 0x2c99,
-  0x8cf7, 0x3fb1,
-  0x8cf8, 0x1486,
-  0x8cf9, 0x2e73,
-  0x8cfa, 0x1483,
-  0x8cfb, 0x1487,
-  0x8cfc, 0x1485,
-  0x8cfd, 0x1484,
-  0x8cfe, 0x2fe5,
-  0x8d00, 0x2fe8,
-  0x8d02, 0x2fe7,
-  0x8d03, 0x384f,
-  0x8d04, 0x2fe6,
-  0x8d05, 0x152f,
-  0x8d06, 0x3133,
-  0x8d08, 0x15cd,
-  0x8d09, 0x3135,
-  0x8d0a, 0x15ce,
-  0x8d0b, 0x4573,
-  0x8d0c, 0x3f96,
-  0x8d0d, 0x164b,
-  0x8d0f, 0x164a,
-  0x8d10, 0x3316,
-  0x8d11, 0x3853,
-  0x8d12, 0x384e,
-  0x8d13, 0x1692,
-  0x8d14, 0x3317,
-  0x8d15, 0x33bc,
-  0x8d16, 0x16d9,
-  0x8d18, 0x3e6f,
-  0x8d19, 0x3442,
-  0x8d1b, 0x172f,
-  0x8d1c, 0x4780,
-  0x8d1d, 0x4506,
-  0x8d64, 0x050f,
-  0x8d66, 0x0bb0,
-  0x8d67, 0x0baf,
-  0x8d68, 0x25a1,
-  0x8d6b, 0x10ba,
-  0x8d6c, 0x2c9e,
-  0x8d6d, 0x1231,
-  0x8d6e, 0x2c9f,
-  0x8d6f, 0x2e74,
-  0x8d70, 0x0510,
-  0x8d72, 0x1c06,
-  0x8d73, 0x080d,
-  0x8d74, 0x080c,
-  0x8d76, 0x1e0e,
-  0x8d77, 0x09ce,
-  0x8d78, 0x1e0f,
-  0x8d79, 0x2073,
-  0x8d7a, 0x39e1,
-  0x8d7b, 0x2072,
-  0x8d7d, 0x2071,
-  0x8d80, 0x2301,
-  0x8d81, 0x0d75,
-  0x8d82, 0x3f69,
-  0x8d84, 0x2300,
-  0x8d85, 0x0d74,
-  0x8d89, 0x2302,
-  0x8d8a, 0x0d73,
-  0x8d8c, 0x25a4,
-  0x8d8d, 0x25a7,
-  0x8d8e, 0x25a5,
-  0x8d90, 0x25aa,
-  0x8d91, 0x25a3,
-  0x8d92, 0x25ab,
-  0x8d93, 0x25a8,
-  0x8d95, 0x10bc,
-  0x8d96, 0x280f,
-  0x8d99, 0x10bb,
-  0x8d9b, 0x2a60,
-  0x8d9c, 0x2a5e,
-  0x8d9f, 0x1232,
-  0x8da0, 0x2a5d,
-  0x8da1, 0x2a5f,
-  0x8da3, 0x1233,
-  0x8da5, 0x2ca0,
-  0x8da6, 0x3ff7,
-  0x8da7, 0x2ca1,
-  0x8da8, 0x1488,
-  0x8da9, 0x3856,
-  0x8daa, 0x3137,
-  0x8dab, 0x3139,
-  0x8dac, 0x3136,
-  0x8dad, 0x3138,
-  0x8dae, 0x323d,
-  0x8daf, 0x3318,
-  0x8db2, 0x3509,
-  0x8db3, 0x0511,
-  0x8db4, 0x080e,
-  0x8db5, 0x1e10,
-  0x8db6, 0x1e12,
-  0x8db7, 0x1e11,
-  0x8db9, 0x2076,
-  0x8dba, 0x0bb2,
-  0x8dbc, 0x2074,
-  0x8dbe, 0x0bb1,
-  0x8dbf, 0x2077,
-  0x8dc0, 0x436a,
-  0x8dc1, 0x2078,
-  0x8dc2, 0x2075,
-  0x8dc3, 0x4782,
-  0x8dc5, 0x230e,
-  0x8dc6, 0x0d7d,
-  0x8dc7, 0x2306,
-  0x8dc8, 0x230c,
-  0x8dcb, 0x0d78,
-  0x8dcc, 0x0d7b,
-  0x8dcd, 0x2305,
-  0x8dce, 0x0d76,
-  0x8dcf, 0x2309,
-  0x8dd0, 0x25b1,
-  0x8dd1, 0x0d7a,
-  0x8dd3, 0x2304,
-  0x8dd4, 0x3f82,
-  0x8dd5, 0x230a,
-  0x8dd6, 0x2307,
-  0x8dd7, 0x230d,
-  0x8dd8, 0x2303,
-  0x8dd9, 0x230b,
-  0x8dda, 0x0d79,
-  0x8ddb, 0x0d7c,
-  0x8ddc, 0x2308,
-  0x8ddd, 0x0d77,
-  0x8ddf, 0x0f27,
-  0x8de0, 0x25ad,
-  0x8de1, 0x0f26,
-  0x8de2, 0x25b4,
-  0x8de3, 0x25b3,
-  0x8de4, 0x0f2d,
-  0x8de6, 0x0f2e,
-  0x8de7, 0x25b5,
-  0x8de8, 0x0f28,
-  0x8de9, 0x25b2,
-  0x8dea, 0x0f2c,
-  0x8deb, 0x25b7,
-  0x8dec, 0x25ae,
-  0x8dee, 0x25b0,
-  0x8def, 0x0f29,
-  0x8df0, 0x25ac,
-  0x8df1, 0x25af,
-  0x8df2, 0x25b6,
-  0x8df3, 0x0f2a,
-  0x8df4, 0x25b8,
-  0x8dfa, 0x0f2b,
-  0x8dfc, 0x10bd,
-  0x8dfd, 0x2814,
-  0x8dfe, 0x281a,
-  0x8dff, 0x2812,
-  0x8e00, 0x281b,
-  0x8e01, 0x3f85,
-  0x8e02, 0x2811,
-  0x8e03, 0x2816,
-  0x8e04, 0x281c,
-  0x8e05, 0x2819,
-  0x8e06, 0x2818,
-  0x8e07, 0x2817,
-  0x8e09, 0x2810,
-  0x8e0a, 0x2815,
-  0x8e0d, 0x2813,
-  0x8e0e, 0x3e5e,
-  0x8e0f, 0x1238,
-  0x8e10, 0x1235,
-  0x8e11, 0x2a69,
-  0x8e12, 0x2a6e,
-  0x8e13, 0x2a70,
-  0x8e14, 0x2a6d,
-  0x8e15, 0x2a66,
-  0x8e16, 0x2a68,
-  0x8e17, 0x2a72,
-  0x8e18, 0x2a6f,
-  0x8e19, 0x2a6a,
-  0x8e1a, 0x2a73,
-  0x8e1b, 0x2a67,
-  0x8e1c, 0x2a71,
-  0x8e1d, 0x1236,
-  0x8e1e, 0x123c,
-  0x8e1f, 0x123a,
-  0x8e20, 0x2a61,
-  0x8e21, 0x123b,
-  0x8e22, 0x1237,
-  0x8e23, 0x2a62,
-  0x8e24, 0x2a64,
-  0x8e25, 0x2a63,
-  0x8e26, 0x2a6b,
-  0x8e28, 0x3f88,
-  0x8e29, 0x1239,
-  0x8e2a, 0x3bb4,
-  0x8e2b, 0x1234,
-  0x8e2d, 0x3eab,
-  0x8e2e, 0x2a65,
-  0x8e30, 0x2cab,
-  0x8e31, 0x1362,
-  0x8e33, 0x2ca2,
-  0x8e34, 0x1363,
-  0x8e35, 0x1366,
-  0x8e36, 0x2ca7,
-  0x8e38, 0x2ca4,
-  0x8e39, 0x1365,
-  0x8e3a, 0x4784,
-  0x8e3c, 0x2ca8,
-  0x8e3e, 0x2ca3,
-  0x8e3f, 0x2cac,
-  0x8e40, 0x2ca5,
-  0x8e41, 0x2caa,
-  0x8e42, 0x1364,
-  0x8e44, 0x1361,
-  0x8e45, 0x2ca6,
-  0x8e46, 0x4312,
-  0x8e47, 0x2e7a,
-  0x8e48, 0x148b,
-  0x8e49, 0x1489,
-  0x8e4a, 0x148c,
-  0x8e4b, 0x148a,
-  0x8e4c, 0x2e79,
-  0x8e4d, 0x2e76,
-  0x8e4e, 0x2e75,
-  0x8e4f, 0x3f83,
-  0x8e50, 0x2e78,
-  0x8e53, 0x2e77,
-  0x8e54, 0x2ff6,
-  0x8e55, 0x1535,
-  0x8e56, 0x2fed,
-  0x8e57, 0x2fec,
-  0x8e59, 0x1530,
-  0x8e5a, 0x2ff2,
-  0x8e5b, 0x2ff1,
-  0x8e5c, 0x2fe9,
-  0x8e5d, 0x2ff4,
-  0x8e5e, 0x2fee,
-  0x8e5f, 0x1534,
-  0x8e60, 0x2feb,
-  0x8e61, 0x2ff3,
-  0x8e62, 0x2fea,
-  0x8e63, 0x1531,
-  0x8e64, 0x1533,
-  0x8e65, 0x2fef,
-  0x8e66, 0x1532,
-  0x8e67, 0x2ff0,
-  0x8e68, 0x434d,
-  0x8e69, 0x2ff5,
-  0x8e6a, 0x313d,
-  0x8e6c, 0x15d3,
-  0x8e6d, 0x313a,
-  0x8e6f, 0x313e,
-  0x8e71, 0x43e7,
-  0x8e72, 0x15d0,
-  0x8e73, 0x313c,
-  0x8e74, 0x15d5,
-  0x8e75, 0x3f89,
-  0x8e76, 0x15d2,
-  0x8e77, 0x3f7f,
-  0x8e78, 0x313b,
-  0x8e7a, 0x15d4,
-  0x8e7b, 0x313f,
-  0x8e7c, 0x15cf,
-  0x8e7e, 0x4324,
-  0x8e80, 0x3e57,
-  0x8e81, 0x164d,
-  0x8e82, 0x164f,
-  0x8e84, 0x3240,
-  0x8e85, 0x164e,
-  0x8e86, 0x323e,
-  0x8e87, 0x15d1,
-  0x8e88, 0x323f,
-  0x8e89, 0x164c,
-  0x8e8a, 0x1693,
-  0x8e8b, 0x1695,
-  0x8e8c, 0x331a,
-  0x8e8d, 0x1694,
-  0x8e8e, 0x3319,
-  0x8e90, 0x33c1,
-  0x8e91, 0x16db,
-  0x8e92, 0x33c0,
-  0x8e93, 0x16dc,
-  0x8e94, 0x33be,
-  0x8e95, 0x33bd,
-  0x8e96, 0x33c2,
-  0x8e98, 0x3443,
-  0x8e9a, 0x33bf,
-  0x8e9d, 0x34a1,
-  0x8e9e, 0x349e,
-  0x8ea1, 0x1749,
-  0x8ea3, 0x34eb,
-  0x8ea4, 0x34ea,
-  0x8ea5, 0x34e9,
-  0x8ea6, 0x350a,
-  0x8ea7, 0x3bb5,
-  0x8ea8, 0x3537,
-  0x8ea9, 0x3524,
-  0x8eaa, 0x175b,
-  0x8eab, 0x0512,
-  0x8eac, 0x09cf,
-  0x8ead, 0x385e,
-  0x8eb0, 0x43e9,
-  0x8eb2, 0x0f2f,
-  0x8eb6, 0x385f,
-  0x8eba, 0x123d,
-  0x8ebc, 0x38a0,
-  0x8ebd, 0x2cad,
-  0x8ec0, 0x1536,
-  0x8ec2, 0x3140,
-  0x8ec3, 0x3860,
-  0x8ec9, 0x3525,
-  0x8eca, 0x0513,
-  0x8ecb, 0x068d,
-  0x8ecc, 0x0810,
-  0x8ecd, 0x080f,
-  0x8ece, 0x4788,
-  0x8ecf, 0x09d2,
-  0x8ed1, 0x1e13,
-  0x8ed2, 0x09d0,
-  0x8ed3, 0x1e14,
-  0x8ed4, 0x09d1,
-  0x8ed7, 0x207d,
-  0x8ed8, 0x2079,
-  0x8eda, 0x3dbe,
-  0x8edb, 0x0bb3,
-  0x8edc, 0x207c,
-  0x8edd, 0x207b,
-  0x8ede, 0x207a,
-  0x8edf, 0x0bb4,
-  0x8ee0, 0x207e,
-  0x8ee2, 0x4789,
-  0x8ee4, 0x478a,
-  0x8ee5, 0x2315,
-  0x8ee6, 0x2313,
-  0x8ee7, 0x2317,
-  0x8ee9, 0x231e,
-  0x8eeb, 0x231a,
-  0x8eec, 0x231c,
-  0x8eed, 0x478b,
-  0x8eee, 0x2314,
-  0x8eef, 0x230f,
-  0x8ef1, 0x231b,
-  0x8ef2, 0x478c,
-  0x8ef4, 0x231d,
-  0x8ef5, 0x2316,
-  0x8ef6, 0x2319,
-  0x8ef7, 0x2310,
-  0x8ef8, 0x0d7f,
-  0x8ef9, 0x2312,
-  0x8efa, 0x2311,
-  0x8efb, 0x0d7e,
-  0x8efc, 0x0d80,
-  0x8efe, 0x0f32,
-  0x8eff, 0x25ba,
-  0x8f00, 0x25bc,
-  0x8f01, 0x25bb,
-  0x8f02, 0x25c0,
-  0x8f03, 0x0f30,
-  0x8f05, 0x25bd,
-  0x8f06, 0x25b9,
-  0x8f07, 0x25be,
-  0x8f09, 0x0f31,
-  0x8f0a, 0x0f33,
-  0x8f0b, 0x25c1,
-  0x8f0d, 0x2820,
-  0x8f0e, 0x281f,
-  0x8f10, 0x281d,
-  0x8f12, 0x10bf,
-  0x8f13, 0x10c1,
-  0x8f14, 0x10be,
-  0x8f15, 0x10c0,
-  0x8f16, 0x2a7a,
-  0x8f18, 0x2a76,
-  0x8f19, 0x3862,
-  0x8f1a, 0x2a77,
-  0x8f1b, 0x123f,
-  0x8f1c, 0x1244,
-  0x8f1d, 0x123e,
-  0x8f1e, 0x1245,
-  0x8f1f, 0x1240,
-  0x8f20, 0x2a78,
-  0x8f23, 0x2a79,
-  0x8f24, 0x2a75,
-  0x8f25, 0x1246,
-  0x8f26, 0x1242,
-  0x8f29, 0x1241,
-  0x8f2a, 0x1243,
-  0x8f2c, 0x2a74,
-  0x8f2d, 0x3863,
-  0x8f2e, 0x2caf,
-  0x8f2f, 0x1368,
-  0x8f30, 0x3bb7,
-  0x8f32, 0x2cb1,
-  0x8f33, 0x136a,
-  0x8f34, 0x2cb4,
-  0x8f35, 0x2cb0,
-  0x8f36, 0x2cae,
-  0x8f37, 0x2cb3,
-  0x8f38, 0x1369,
-  0x8f39, 0x2cb2,
-  0x8f3b, 0x1367,
-  0x8f3e, 0x148e,
-  0x8f3f, 0x1491,
-  0x8f40, 0x2e7c,
-  0x8f41, 0x3d07,
-  0x8f42, 0x148f,
-  0x8f43, 0x2e7b,
-  0x8f44, 0x148d,
-  0x8f45, 0x1490,
-  0x8f46, 0x2ff7,
-  0x8f49, 0x1537,
-  0x8f4a, 0x3bb8,
-  0x8f4b, 0x2ffa,
-  0x8f4d, 0x1538,
-  0x8f4e, 0x15d7,
-  0x8f4f, 0x3143,
-  0x8f51, 0x3142,
-  0x8f52, 0x3141,
-  0x8f53, 0x3145,
-  0x8f54, 0x15d6,
-  0x8f55, 0x3244,
-  0x8f56, 0x3242,
-  0x8f58, 0x3245,
-  0x8f59, 0x3241,
-  0x8f5a, 0x3246,
-  0x8f5b, 0x331c,
-  0x8f5c, 0x3f31,
-  0x8f5d, 0x331d,
-  0x8f5e, 0x331b,
-  0x8f5f, 0x1696,
-  0x8f60, 0x33c4,
-  0x8f61, 0x16dd,
-  0x8f62, 0x33c5,
-  0x8f63, 0x3445,
-  0x8f64, 0x3444,
-  0x8f66, 0x4569,
-  0x8f6e, 0x456b,
-  0x8f93, 0x4732,
-  0x8f9b, 0x0514,
-  0x8f9c, 0x0d81,
-  0x8f9f, 0x0f34,
-  0x8fa0, 0x3d94,
-  0x8fa3, 0x10c2,
-  0x8fa5, 0x3866,
-  0x8fa6, 0x136c,
-  0x8fa8, 0x136b,
-  0x8fad, 0x15d8,
-  0x8fae, 0x162f,
-  0x8faf, 0x1697,
-  0x8fb0, 0x0515,
-  0x8fb1, 0x09d3,
-  0x8fb2, 0x0f35,
-  0x8fb3, 0x386a,
-  0x8fb4, 0x3146,
-  0x8fb5, 0x0230,
-  0x8fb6, 0x47d3,
-  0x8fb7, 0x43fd,
-  0x8fb8, 0x42f6,
-  0x8fb9, 0x48c9,
-  0x8fba, 0x48c7,
-  0x8fbb, 0x3d6b,
-  0x8fbe, 0x48c6,
-  0x8fbf, 0x18e9,
-  0x8fc1, 0x478d,
-  0x8fc2, 0x0516,
-  0x8fc4, 0x0519,
-  0x8fc5, 0x0518,
-  0x8fc6, 0x0517,
-  0x8fc9, 0x18e8,
-  0x8fca, 0x478e,
-  0x8fcb, 0x1a4a,
-  0x8fcc, 0x478f,
-  0x8fcd, 0x1a4c,
-  0x8fce, 0x068e,
-  0x8fd0, 0x48ae,
-  0x8fd1, 0x0690,
-  0x8fd2, 0x1a49,
-  0x8fd3, 0x1a4b,
-  0x8fd4, 0x068f,
-  0x8fd5, 0x1a4e,
-  0x8fd6, 0x1a4d,
-  0x8fd7, 0x1a4f,
-  0x8fda, 0x3fcb,
-  0x8fe0, 0x1c0a,
-  0x8fe1, 0x1c08,
-  0x8fe2, 0x0813,
-  0x8fe3, 0x1c07,
-  0x8fe4, 0x0818,
-  0x8fe5, 0x0815,
-  0x8fe6, 0x0812,
-  0x8fe8, 0x0819,
-  0x8fea, 0x0814,
-  0x8feb, 0x0817,
-  0x8fed, 0x0816,
-  0x8fee, 0x1c09,
-  0x8ff0, 0x0811,
-  0x8ff4, 0x09d9,
-  0x8ff5, 0x1e16,
-  0x8ff6, 0x1e1c,
-  0x8ff7, 0x09d6,
-  0x8ff8, 0x09dd,
-  0x8ff9, 0x3871,
-  0x8ffa, 0x09d8,
-  0x8ffb, 0x1e19,
-  0x8ffc, 0x1e1b,
-  0x8ffd, 0x09db,
-  0x8ffe, 0x1e15,
-  0x8fff, 0x1e18,
-  0x9000, 0x09d7,
-  0x9001, 0x09d4,
-  0x9002, 0x1e17,
-  0x9003, 0x09da,
-  0x9004, 0x1e1a,
-  0x9005, 0x09dc,
-  0x9006, 0x09d5,
-  0x9008, 0x3ee0,
-  0x900b, 0x2081,
-  0x900c, 0x2084,
-  0x900d, 0x0bb6,
-  0x900f, 0x0bc0,
-  0x9010, 0x0bbc,
-  0x9011, 0x2082,
-  0x9012, 0x3e4e,
-  0x9014, 0x0bc4,
-  0x9015, 0x0bbd,
-  0x9016, 0x0bc2,
-  0x9017, 0x0bb8,
-  0x9019, 0x0bb5,
-  0x901a, 0x0bb7,
-  0x901b, 0x0bc3,
-  0x901c, 0x2083,
-  0x901d, 0x0bbb,
-  0x901e, 0x0bbe,
-  0x901f, 0x0bba,
-  0x9020, 0x0bbf,
-  0x9021, 0x2085,
-  0x9022, 0x0bc1,
-  0x9023, 0x0bb9,
-  0x9024, 0x2080,
-  0x902d, 0x231f,
-  0x902e, 0x0d82,
-  0x902f, 0x2321,
-  0x9031, 0x0d84,
-  0x9032, 0x0d86,
-  0x9033, 0x4790,
-  0x9034, 0x2320,
-  0x9035, 0x0d83,
-  0x9036, 0x0d87,
-  0x9037, 0x3876,
-  0x9038, 0x0d85,
-  0x903c, 0x0f3b,
-  0x903d, 0x25c6,
-  0x903e, 0x0f43,
-  0x903f, 0x25c3,
-  0x9041, 0x0f44,
-  0x9042, 0x0f39,
-  0x9044, 0x25c4,
-  0x9047, 0x0f3e,
-  0x9049, 0x25c5,
-  0x904a, 0x0f37,
-  0x904b, 0x0f36,
-  0x904c, 0x3f10,
-  0x904d, 0x0f41,
-  0x904e, 0x0f40,
-  0x904f, 0x0f3f,
-  0x9050, 0x0f3d,
-  0x9051, 0x0f42,
-  0x9052, 0x25c2,
-  0x9053, 0x0f38,
-  0x9054, 0x0f3a,
-  0x9055, 0x0f3c,
-  0x9056, 0x3dd2,
-  0x9058, 0x10c4,
-  0x9059, 0x10c7,
-  0x905b, 0x10cb,
-  0x905c, 0x10c5,
-  0x905d, 0x10ca,
-  0x905e, 0x10c8,
-  0x9060, 0x10c3,
-  0x9061, 0x3879,
-  0x9062, 0x10c9,
-  0x9063, 0x10c6,
-  0x9064, 0x3c68,
-  0x9067, 0x2a7f,
-  0x9068, 0x1249,
-  0x9069, 0x1247,
-  0x906b, 0x2a80,
-  0x906c, 0x3d60,
-  0x906d, 0x124a,
-  0x906e, 0x1248,
-  0x906f, 0x2a7e,
-  0x9070, 0x2a7d,
-  0x9072, 0x1370,
-  0x9073, 0x2a7c,
-  0x9074, 0x136e,
-  0x9075, 0x136d,
-  0x9076, 0x2cb5,
-  0x9077, 0x124b,
-  0x9078, 0x136f,
-  0x9079, 0x2cb6,
-  0x907a, 0x1372,
-  0x907b, 0x2cb7,
-  0x907c, 0x1371,
-  0x907d, 0x1493,
-  0x907e, 0x2e7e,
-  0x907f, 0x1492,
-  0x9080, 0x1497,
-  0x9081, 0x1495,
-  0x9083, 0x153a,
-  0x9084, 0x1494,
-  0x9085, 0x2e7d,
-  0x9086, 0x2cb8,
-  0x9087, 0x1539,
-  0x9088, 0x153b,
-  0x908a, 0x15d9,
-  0x908d, 0x3247,
-  0x908f, 0x170c,
-  0x9090, 0x170b,
-  0x9091, 0x051b,
-  0x9094, 0x181e,
-  0x9095, 0x09de,
-  0x9097, 0x181b,
-  0x9099, 0x181a,
-  0x909b, 0x181d,
-  0x909e, 0x18ed,
-  0x909f, 0x18ea,
-  0x90a0, 0x18ef,
-  0x90a1, 0x18eb,
-  0x90a2, 0x051c,
-  0x90a3, 0x051f,
-  0x90a5, 0x18ec,
-  0x90a6, 0x051e,
-  0x90a7, 0x18ee,
-  0x90a8, 0x387c,
-  0x90aa, 0x051d,
-  0x90ae, 0x3880,
-  0x90af, 0x1a52,
-  0x90b0, 0x1a54,
-  0x90b1, 0x0693,
-  0x90b2, 0x1a50,
-  0x90b3, 0x1a53,
-  0x90b4, 0x1a51,
-  0x90b5, 0x0691,
-  0x90b6, 0x0694,
-  0x90b8, 0x0692,
-  0x90bb, 0x3bc4,
-  0x90bd, 0x1c0c,
-  0x90be, 0x1c10,
-  0x90bf, 0x1c0d,
-  0x90c1, 0x081c,
-  0x90c3, 0x081d,
-  0x90c4, 0x387e,
-  0x90c5, 0x1c0f,
-  0x90c7, 0x1c11,
-  0x90c8, 0x1c13,
-  0x90ca, 0x081a,
-  0x90cb, 0x1c12,
-  0x90ce, 0x081b,
-  0x90d4, 0x208c,
-  0x90d5, 0x1c0e,
-  0x90d6, 0x1e1d,
-  0x90d7, 0x1e26,
-  0x90d8, 0x1e24,
-  0x90d9, 0x1e1f,
-  0x90db, 0x1e25,
-  0x90dc, 0x1e27,
-  0x90dd, 0x09e0,
-  0x90df, 0x1e22,
-  0x90e0, 0x1e1e,
-  0x90e1, 0x09df,
-  0x90e2, 0x09e1,
-  0x90e3, 0x1e21,
-  0x90e4, 0x1e28,
-  0x90e5, 0x1e23,
-  0x90e8, 0x0bc5,
-  0x90e9, 0x208f,
-  0x90ea, 0x2087,
-  0x90eb, 0x208d,
-  0x90ed, 0x0bc6,
-  0x90ef, 0x2086,
-  0x90f0, 0x2088,
-  0x90f1, 0x1c0b,
-  0x90f2, 0x208a,
-  0x90f4, 0x2089,
-  0x90f5, 0x0d89,
-  0x90f9, 0x2328,
-  0x90fa, 0x2cb9,
-  0x90fb, 0x2329,
-  0x90fc, 0x2326,
-  0x90fd, 0x0bc7,
-  0x90fe, 0x0d8b,
-  0x90ff, 0x2325,
-  0x9100, 0x232b,
-  0x9101, 0x232a,
-  0x9102, 0x0d88,
-  0x9103, 0x232e,
-  0x9104, 0x2324,
-  0x9105, 0x232d,
-  0x9106, 0x2322,
-  0x9107, 0x232c,
-  0x9108, 0x2327,
-  0x9109, 0x0d8a,
-  0x910b, 0x25cd,
-  0x910d, 0x25c8,
-  0x910e, 0x25ce,
-  0x910f, 0x25c9,
-  0x9110, 0x25c7,
-  0x9111, 0x25ca,
-  0x9112, 0x0f45,
-  0x9114, 0x25cc,
-  0x9116, 0x25cb,
-  0x9117, 0x0f46,
-  0x9118, 0x10cd,
-  0x9119, 0x10cc,
-  0x911a, 0x2827,
-  0x911b, 0x282a,
-  0x911c, 0x2822,
-  0x911d, 0x2826,
-  0x911e, 0x10ce,
-  0x911f, 0x2825,
-  0x9120, 0x2823,
-  0x9121, 0x2829,
-  0x9122, 0x2824,
-  0x9123, 0x2821,
-  0x9124, 0x2828,
-  0x9126, 0x2a86,
-  0x9127, 0x124e,
-  0x9128, 0x2ffb,
-  0x9129, 0x2a83,
-  0x912b, 0x2a82,
-  0x912c, 0x2323,
-  0x912d, 0x124d,
-  0x912e, 0x2a87,
-  0x912f, 0x2a81,
-  0x9130, 0x124c,
-  0x9131, 0x124f,
-  0x9132, 0x2a85,
-  0x9133, 0x2cba,
-  0x9134, 0x1373,
-  0x9135, 0x2cbb,
-  0x9138, 0x2e7f,
-  0x9139, 0x1498,
-  0x913a, 0x2ffc,
-  0x913e, 0x2ffe,
-  0x913f, 0x3148,
-  0x9140, 0x3147,
-  0x9141, 0x3249,
-  0x9143, 0x3248,
-  0x9144, 0x331f,
-  0x9146, 0x331e,
-  0x9147, 0x33c6,
-  0x9148, 0x16de,
-  0x9149, 0x0520,
-  0x914a, 0x081f,
-  0x914b, 0x081e,
-  0x914c, 0x09e4,
-  0x914d, 0x09e3,
-  0x914e, 0x1e2a,
-  0x9150, 0x1e29,
-  0x9151, 0x3f49,
-  0x9152, 0x09e2,
-  0x9153, 0x2093,
-  0x9155, 0x2094,
-  0x9156, 0x2090,
-  0x9157, 0x0bc8,
-  0x9158, 0x2091,
-  0x9159, 0x3f45,
-  0x915a, 0x2092,
-  0x915c, 0x3f47,
-  0x915e, 0x43eb,
-  0x915f, 0x2331,
-  0x9160, 0x2333,
-  0x9161, 0x232f,
-  0x9162, 0x2332,
-  0x9163, 0x0d8c,
-  0x9164, 0x2330,
-  0x9165, 0x0d8d,
-  0x9167, 0x3882,
-  0x9168, 0x23e2,
-  0x9169, 0x0f49,
-  0x916a, 0x0f48,
-  0x916c, 0x0f47,
-  0x916e, 0x25cf,
-  0x9170, 0x3eb8,
-  0x9172, 0x282c,
-  0x9173, 0x282e,
-  0x9174, 0x10d2,
-  0x9175, 0x10cf,
-  0x9176, 0x3e9b,
-  0x9177, 0x10d1,
-  0x9178, 0x10d0,
-  0x9179, 0x282d,
-  0x917a, 0x282b,
-  0x917c, 0x3f6f,
-  0x9180, 0x2a8e,
-  0x9181, 0x2a8b,
-  0x9183, 0x1253,
-  0x9184, 0x2a8d,
-  0x9185, 0x2a88,
-  0x9187, 0x1250,
-  0x9189, 0x1251,
-  0x918a, 0x2a8a,
-  0x918b, 0x1252,
-  0x918c, 0x43ec,
-  0x918d, 0x2cc0,
-  0x918e, 0x3f4e,
-  0x918f, 0x2cc1,
-  0x9190, 0x2cbe,
-  0x9192, 0x1374,
-  0x9193, 0x2cbd,
-  0x9199, 0x2e83,
-  0x919a, 0x2e80,
-  0x919b, 0x2e82,
-  0x919c, 0x149b,
-  0x919d, 0x2e86,
-  0x919e, 0x149a,
-  0x919f, 0x2e84,
-  0x91a0, 0x2e87,
-  0x91a1, 0x2e85,
-  0x91a2, 0x2e81,
-  0x91a3, 0x1499,
-  0x91a5, 0x3000,
-  0x91a7, 0x3001,
-  0x91a8, 0x2fff,
-  0x91a9, 0x3883,
-  0x91aa, 0x3003,
-  0x91ab, 0x153c,
-  0x91ad, 0x314a,
-  0x91ae, 0x15dc,
-  0x91af, 0x3002,
-  0x91b0, 0x3149,
-  0x91b1, 0x15db,
-  0x91b2, 0x324c,
-  0x91b4, 0x1650,
-  0x91b5, 0x324b,
-  0x91b6, 0x45ef,
-  0x91b7, 0x324a,
-  0x91b9, 0x3321,
-  0x91ba, 0x1698,
-  0x91bb, 0x3bc8,
-  0x91bc, 0x3446,
-  0x91bd, 0x34a3,
-  0x91be, 0x34a2,
-  0x91c0, 0x1730,
-  0x91c1, 0x174a,
-  0x91c2, 0x34a4,
-  0x91c3, 0x350b,
-  0x91c4, 0x3884,
-  0x91c5, 0x175c,
-  0x91c6, 0x0521,
-  0x91c7, 0x0695,
-  0x91c9, 0x0f4a,
-  0x91cb, 0x1651,
-  0x91cc, 0x0522,
-  0x91cd, 0x0820,
-  0x91ce, 0x0bc9,
-  0x91cf, 0x0d8e,
-  0x91d0, 0x153e,
-  0x91d1, 0x0696,
-  0x91d3, 0x1c15,
-  0x91d4, 0x1c14,
-  0x91d5, 0x1e2c,
-  0x91d6, 0x415e,
-  0x91d7, 0x09e7,
-  0x91d8, 0x09e5,
-  0x91d9, 0x09e9,
-  0x91da, 0x1e2e,
-  0x91dc, 0x09e8,
-  0x91dd, 0x09e6,
-  0x91df, 0x453a,
-  0x91e2, 0x1e2d,
-  0x91e3, 0x0bcc,
-  0x91e4, 0x209a,
-  0x91e5, 0x3c06,
-  0x91e6, 0x0bcb,
-  0x91e7, 0x0bcd,
-  0x91e8, 0x209f,
-  0x91e9, 0x0bcf,
-  0x91ea, 0x209c,
-  0x91ec, 0x2095,
-  0x91ed, 0x0bce,
-  0x91ee, 0x20a0,
-  0x91f1, 0x2097,
-  0x91f3, 0x2098,
-  0x91f4, 0x2096,
-  0x91f5, 0x0bca,
-  0x91f7, 0x209e,
-  0x91f8, 0x2099,
-  0x91f9, 0x209b,
-  0x91fa, 0x3af8,
-  0x91fd, 0x233f,
-  0x91fe, 0x382e,
-  0x91ff, 0x233e,
-  0x9200, 0x233c,
-  0x9201, 0x2334,
-  0x9202, 0x2343,
-  0x9203, 0x2337,
-  0x9204, 0x2341,
-  0x9205, 0x2348,
-  0x9206, 0x2340,
-  0x9207, 0x0d96,
-  0x9208, 0x3eb9,
-  0x9209, 0x0d92,
-  0x920a, 0x2335,
-  0x920c, 0x233b,
-  0x920d, 0x0d94,
-  0x920e, 0x3888,
-  0x920f, 0x233a,
-  0x9210, 0x0d95,
-  0x9211, 0x0d97,
-  0x9212, 0x233d,
-  0x9213, 0x4793,
-  0x9214, 0x0d8f,
-  0x9216, 0x2349,
-  0x9217, 0x2347,
-  0x9219, 0x2346,
-  0x921a, 0x2338,
-  0x921c, 0x2344,
-  0x921e, 0x0d93,
-  0x9223, 0x0d91,
-  0x9224, 0x2345,
-  0x9225, 0x2336,
-  0x9226, 0x2339,
-  0x9227, 0x2342,
-  0x9228, 0x4795,
-  0x922a, 0x3c0e,
-  0x922b, 0x3ba6,
-  0x922d, 0x2851,
-  0x922e, 0x25da,
-  0x9230, 0x25d3,
-  0x9231, 0x25e6,
-  0x9232, 0x25ef,
-  0x9233, 0x25d6,
-  0x9234, 0x0f55,
-  0x9235, 0x3b26,
-  0x9236, 0x25e3,
-  0x9237, 0x0f4b,
-  0x9238, 0x0f4d,
-  0x9239, 0x0f59,
-  0x923a, 0x25d4,
-  0x923c, 0x41d2,
-  0x923d, 0x0f4e,
-  0x923e, 0x0f50,
-  0x923f, 0x0f5a,
-  0x9240, 0x0f4f,
-  0x9241, 0x388a,
-  0x9244, 0x389a,
-  0x9245, 0x0f58,
-  0x9246, 0x25dc,
-  0x9248, 0x25d1,
-  0x9249, 0x0f56,
-  0x924a, 0x25db,
-  0x924b, 0x0f52,
-  0x924c, 0x25ed,
-  0x924d, 0x0f57,
-  0x924e, 0x25eb,
-  0x924f, 0x25df,
-  0x9250, 0x25e9,
-  0x9251, 0x0f54,
-  0x9252, 0x25d2,
-  0x9253, 0x25ec,
-  0x9254, 0x25e7,
-  0x9255, 0x3e47,
-  0x9256, 0x25ee,
-  0x9257, 0x0f4c,
-  0x9258, 0x4796,
-  0x925a, 0x0f5b,
-  0x925b, 0x0f51,
-  0x925d, 0x3a03,
-  0x925e, 0x25d8,
-  0x925f, 0x3ce0,
-  0x9260, 0x25e0,
-  0x9261, 0x25e4,
-  0x9262, 0x388b,
-  0x9263, 0x25e8,
-  0x9264, 0x0f53,
-  0x9265, 0x25d7,
-  0x9266, 0x25d5,
-  0x9267, 0x25e1,
-  0x926b, 0x4797,
-  0x926c, 0x25de,
-  0x926d, 0x25dd,
-  0x926e, 0x3d05,
-  0x926f, 0x25e2,
-  0x9270, 0x25e5,
-  0x9272, 0x25ea,
-  0x9276, 0x2831,
-  0x9277, 0x3c64,
-  0x9278, 0x10d3,
-  0x9279, 0x283b,
-  0x927a, 0x2833,
-  0x927b, 0x10d9,
-  0x927c, 0x10dd,
-  0x927d, 0x2844,
-  0x927e, 0x284c,
-  0x927f, 0x283d,
-  0x9280, 0x10d5,
-  0x9281, 0x3e01,
-  0x9282, 0x2841,
-  0x9283, 0x25d9,
-  0x9284, 0x3cb9,
-  0x9285, 0x10d6,
-  0x9286, 0x2848,
-  0x9287, 0x284d,
-  0x9288, 0x2845,
-  0x9289, 0x3ab5,
-  0x928a, 0x2847,
-  0x928b, 0x2850,
-  0x928c, 0x2849,
-  0x928d, 0x2837,
-  0x928e, 0x2840,
-  0x928f, 0x46bd,
-  0x9291, 0x10de,
-  0x9293, 0x10da,
-  0x9294, 0x2835,
-  0x9295, 0x2842,
-  0x9296, 0x10d8,
-  0x9297, 0x283c,
-  0x9298, 0x10d7,
-  0x9299, 0x284a,
-  0x929a, 0x2839,
-  0x929b, 0x2832,
-  0x929c, 0x10db,
-  0x929d, 0x284f,
-  0x92a0, 0x2834,
-  0x92a1, 0x2846,
-  0x92a2, 0x2843,
-  0x92a3, 0x283e,
-  0x92a4, 0x2830,
-  0x92a5, 0x282f,
-  0x92a6, 0x2838,
-  0x92a7, 0x284b,
-  0x92a8, 0x10dc,
-  0x92a9, 0x284e,
-  0x92aa, 0x2836,
-  0x92ab, 0x283a,
-  0x92ac, 0x10d4,
-  0x92ae, 0x4799,
-  0x92b1, 0x4798,
-  0x92b2, 0x125f,
-  0x92b3, 0x125a,
-  0x92b4, 0x2ab0,
-  0x92b5, 0x2aac,
-  0x92b6, 0x2a94,
-  0x92b7, 0x1256,
-  0x92b9, 0x36e9,
-  0x92ba, 0x3bf5,
-  0x92bb, 0x1255,
-  0x92bc, 0x125b,
-  0x92be, 0x3c60,
-  0x92bf, 0x479a,
-  0x92c0, 0x2a92,
-  0x92c1, 0x1259,
-  0x92c2, 0x2a9e,
-  0x92c3, 0x2a90,
-  0x92c5, 0x1254,
-  0x92c6, 0x2aaf,
-  0x92c7, 0x125d,
-  0x92c8, 0x2aa1,
-  0x92c9, 0x2aa6,
-  0x92ca, 0x2aa0,
-  0x92cb, 0x2cd3,
-  0x92cc, 0x2a9c,
-  0x92cd, 0x2aa4,
-  0x92ce, 0x2aa2,
-  0x92cf, 0x2a95,
-  0x92d0, 0x2a8f,
-  0x92d1, 0x2aaa,
-  0x92d2, 0x125c,
-  0x92d3, 0x2aab,
-  0x92d4, 0x3861,
-  0x92d5, 0x2aa5,
-  0x92d7, 0x2a9a,
-  0x92d8, 0x2a98,
-  0x92d9, 0x2a93,
-  0x92db, 0x400c,
-  0x92dd, 0x2a9b,
-  0x92de, 0x2aa8,
-  0x92df, 0x2a97,
-  0x92e0, 0x2aa7,
-  0x92e1, 0x2aad,
-  0x92e3, 0x479b,
-  0x92e4, 0x1258,
-  0x92e5, 0x3ca2,
-  0x92e6, 0x2aa3,
-  0x92e7, 0x2aa9,
-  0x92e8, 0x2a9f,
-  0x92e9, 0x2a99,
-  0x92ea, 0x1257,
-  0x92eb, 0x479c,
-  0x92ec, 0x3964,
-  0x92ee, 0x283f,
-  0x92ef, 0x2a9d,
-  0x92f0, 0x125e,
-  0x92f1, 0x2a96,
-  0x92f2, 0x3ab2,
-  0x92f3, 0x479d,
-  0x92f6, 0x3c04,
-  0x92f7, 0x2cd8,
-  0x92f8, 0x1377,
-  0x92f9, 0x2cd7,
-  0x92fa, 0x2cd5,
-  0x92fb, 0x2ce7,
-  0x92fc, 0x137b,
-  0x92fd, 0x479f,
-  0x92fe, 0x2ce4,
-  0x92ff, 0x2cdc,
-  0x9300, 0x2ce6,
-  0x9301, 0x2cce,
-  0x9302, 0x2cda,
-  0x9303, 0x3867,
-  0x9304, 0x137d,
-  0x9306, 0x2cc6,
-  0x9307, 0x3b11,
-  0x9308, 0x2cc4,
-  0x9309, 0x2ce5,
-  0x930b, 0x2ce3,
-  0x930c, 0x2ce2,
-  0x930d, 0x2cd2,
-  0x930e, 0x2cd1,
-  0x930f, 0x2cc7,
-  0x9310, 0x137f,
-  0x9312, 0x2ccd,
-  0x9313, 0x2cd6,
-  0x9314, 0x2ce1,
-  0x9315, 0x1382,
-  0x9316, 0x2ce8,
-  0x9318, 0x14a3,
-  0x9319, 0x1384,
-  0x931a, 0x137e,
-  0x931b, 0x2ccb,
-  0x931d, 0x2cd4,
-  0x931e, 0x2cc3,
-  0x931f, 0x2cc5,
-  0x9320, 0x1375,
-  0x9321, 0x1381,
-  0x9322, 0x137a,
-  0x9323, 0x2ccc,
-  0x9324, 0x2cdb,
-  0x9325, 0x2aae,
-  0x9326, 0x1380,
-  0x9327, 0x2cc2,
-  0x9328, 0x149e,
-  0x9329, 0x2cdd,
-  0x932a, 0x2ce0,
-  0x932b, 0x137c,
-  0x932c, 0x3892,
-  0x932d, 0x2cd0,
-  0x932e, 0x1383,
-  0x932f, 0x1379,
-  0x9330, 0x3e03,
-  0x9331, 0x3cbd,
-  0x9333, 0x1378,
-  0x9334, 0x2cd9,
-  0x9335, 0x2cdf,
-  0x9336, 0x1376,
-  0x9338, 0x2cc9,
-  0x9339, 0x2cde,
-  0x933c, 0x2cca,
-  0x9340, 0x4155,
-  0x9341, 0x4277,
-  0x9342, 0x3afa,
-  0x9343, 0x47a0,
-  0x9344, 0x4016,
-  0x9345, 0x3e74,
-  0x9346, 0x2ccf,
-  0x9347, 0x2e8d,
-  0x9348, 0x3c61,
-  0x9349, 0x2e92,
-  0x934a, 0x14a0,
-  0x934b, 0x14a2,
-  0x934c, 0x2e98,
-  0x934d, 0x149c,
-  0x934e, 0x2ea6,
-  0x934f, 0x2e9e,
-  0x9350, 0x2e93,
-  0x9352, 0x2e9d,
-  0x9354, 0x14a9,
-  0x9355, 0x2e9c,
-  0x9356, 0x2e8c,
-  0x9357, 0x2e9b,
-  0x9358, 0x2e8f,
-  0x9359, 0x2ea7,
-  0x935a, 0x14a8,
-  0x935b, 0x14a6,
-  0x935c, 0x2e90,
-  0x935e, 0x2ea3,
-  0x935f, 0x3cbb,
-  0x9360, 0x2e95,
-  0x9361, 0x2ea2,
-  0x9362, 0x4268,
-  0x9363, 0x2ea4,
-  0x9364, 0x2e8b,
-  0x9365, 0x14a1,
-  0x9366, 0x46bc,
-  0x9367, 0x2ea5,
-  0x9368, 0x3bf0,
-  0x9369, 0x3961,
-  0x936a, 0x2e99,
-  0x936b, 0x3893,
-  0x936c, 0x14a5,
-  0x936d, 0x2e96,
-  0x936e, 0x39e8,
-  0x9370, 0x14a7,
-  0x9371, 0x2e9f,
-  0x9373, 0x389e,
-  0x9374, 0x3ce4,
-  0x9375, 0x149f,
-  0x9376, 0x2e91,
-  0x9377, 0x2ea0,
-  0x9378, 0x38f9,
-  0x9379, 0x2e9a,
-  0x937a, 0x2cc8,
-  0x937b, 0x2ea1,
-  0x937c, 0x2e8e,
-  0x937d, 0x3c25,
-  0x937e, 0x14a4,
-  0x9380, 0x3014,
-  0x9381, 0x3965,
-  0x9382, 0x149d,
-  0x9383, 0x2e89,
-  0x9384, 0x47a1,
-  0x9385, 0x42bd,
-  0x9386, 0x3cc0,
-  0x9387, 0x3ae0,
-  0x9388, 0x3011,
-  0x9389, 0x300a,
-  0x938a, 0x1540,
-  0x938c, 0x3005,
-  0x938d, 0x3015,
-  0x938e, 0x300c,
-  0x938f, 0x2e97,
-  0x9390, 0x3d3c,
-  0x9391, 0x3017,
-  0x9392, 0x3006,
-  0x9394, 0x153f,
-  0x9395, 0x3010,
-  0x9396, 0x1541,
-  0x9397, 0x1549,
-  0x9398, 0x1547,
-  0x9399, 0x3012,
-  0x939a, 0x1548,
-  0x939b, 0x3008,
-  0x939c, 0x39ac,
-  0x939d, 0x3009,
-  0x939e, 0x300e,
-  0x939f, 0x3013,
-  0x93a0, 0x3ab1,
-  0x93a1, 0x2e88,
-  0x93a2, 0x1542,
-  0x93a3, 0x301c,
-  0x93a4, 0x3019,
-  0x93a5, 0x3160,
-  0x93a6, 0x300f,
-  0x93a7, 0x300b,
-  0x93a8, 0x301a,
-  0x93a9, 0x3155,
-  0x93aa, 0x300d,
-  0x93ac, 0x1545,
-  0x93ad, 0x47a2,
-  0x93ae, 0x1544,
-  0x93af, 0x2e8a,
-  0x93b0, 0x1546,
-  0x93b1, 0x3016,
-  0x93b2, 0x3018,
-  0x93b3, 0x1543,
-  0x93b4, 0x301b,
-  0x93b5, 0x3004,
-  0x93b7, 0x3007,
-  0x93b8, 0x3c90,
-  0x93ba, 0x43f7,
-  0x93bb, 0x3c8f,
-  0x93bd, 0x3a27,
-  0x93bf, 0x3e2d,
-  0x93c0, 0x315e,
-  0x93c2, 0x314e,
-  0x93c3, 0x15e0,
-  0x93c4, 0x315c,
-  0x93c6, 0x39aa,
-  0x93c7, 0x314c,
-  0x93c8, 0x15e1,
-  0x93ca, 0x3157,
-  0x93cb, 0x3966,
-  0x93cc, 0x3153,
-  0x93cd, 0x15e6,
-  0x93ce, 0x315d,
-  0x93cf, 0x314d,
-  0x93d0, 0x3150,
-  0x93d1, 0x15de,
-  0x93d2, 0x315f,
-  0x93d3, 0x40e1,
-  0x93d4, 0x3158,
-  0x93d5, 0x315b,
-  0x93d6, 0x15e4,
-  0x93d7, 0x15e9,
-  0x93d8, 0x15e7,
-  0x93d9, 0x3154,
-  0x93da, 0x314f,
-  0x93db, 0x3c5f,
-  0x93dc, 0x15e2,
-  0x93de, 0x314b,
-  0x93df, 0x15df,
-  0x93e0, 0x3a20,
-  0x93e1, 0x15dd,
-  0x93e2, 0x15e5,
-  0x93e3, 0x315a,
-  0x93e4, 0x15e8,
-  0x93e6, 0x3156,
-  0x93e7, 0x3161,
-  0x93e8, 0x15ea,
-  0x93ec, 0x3152,
-  0x93ee, 0x3159,
-  0x93f0, 0x423f,
-  0x93f1, 0x42aa,
-  0x93f3, 0x3962,
-  0x93f5, 0x325a,
-  0x93f6, 0x3269,
-  0x93f7, 0x325c,
-  0x93f8, 0x3263,
-  0x93f9, 0x3151,
-  0x93fa, 0x3261,
-  0x93fb, 0x3250,
-  0x93fc, 0x3267,
-  0x93fd, 0x1654,
-  0x93fe, 0x3254,
-  0x93ff, 0x3266,
-  0x9400, 0x325b,
-  0x9401, 0x3cd4,
-  0x9403, 0x1653,
-  0x9404, 0x3bc9,
-  0x9406, 0x326b,
-  0x9407, 0x325d,
-  0x9408, 0x3a25,
-  0x9409, 0x3262,
-  0x940a, 0x3265,
-  0x940b, 0x324e,
-  0x940c, 0x3268,
-  0x940d, 0x3259,
-  0x940e, 0x325e,
-  0x940f, 0x3252,
-  0x9410, 0x3256,
-  0x9411, 0x326a,
-  0x9412, 0x3260,
-  0x9413, 0x324f,
-  0x9414, 0x3253,
-  0x9415, 0x3255,
-  0x9416, 0x325f,
-  0x9417, 0x47a5,
-  0x9418, 0x1652,
-  0x9419, 0x3258,
-  0x941b, 0x4148,
-  0x941d, 0x47a6,
-  0x9420, 0x3251,
-  0x9424, 0x3943,
-  0x9425, 0x38d0,
-  0x9426, 0x38a3,
-  0x9427, 0x3bcd,
-  0x9428, 0x3257,
-  0x9429, 0x3325,
-  0x942a, 0x3329,
-  0x942b, 0x169f,
-  0x942c, 0x332b,
-  0x942d, 0x47a7,
-  0x942e, 0x1699,
-  0x9430, 0x3327,
-  0x9431, 0x332d,
-  0x9432, 0x169e,
-  0x9433, 0x169a,
-  0x9435, 0x169b,
-  0x9436, 0x3324,
-  0x9437, 0x332a,
-  0x9438, 0x169d,
-  0x9439, 0x3328,
-  0x943a, 0x169c,
-  0x943b, 0x3323,
-  0x943c, 0x3264,
-  0x943d, 0x3326,
-  0x943e, 0x47a8,
-  0x943f, 0x3322,
-  0x9440, 0x332c,
-  0x9442, 0x4272,
-  0x9443, 0x4275,
-  0x9444, 0x16df,
-  0x9445, 0x33cd,
-  0x9446, 0x33d0,
-  0x9447, 0x33cc,
-  0x9448, 0x33ce,
-  0x944a, 0x33c9,
-  0x944c, 0x33c7,
-  0x944d, 0x3c65,
-  0x944f, 0x33cb,
-  0x9450, 0x33c8,
-  0x9451, 0x16e0,
-  0x9454, 0x47aa,
-  0x9455, 0x3448,
-  0x9457, 0x344a,
-  0x9458, 0x3c30,
-  0x945b, 0x389f,
-  0x945d, 0x3449,
-  0x945e, 0x344b,
-  0x9460, 0x170e,
-  0x9462, 0x3447,
-  0x9463, 0x170d,
-  0x9464, 0x170f,
-  0x9465, 0x3dde,
-  0x9467, 0x3ab8,
-  0x9468, 0x34a6,
-  0x946a, 0x1731,
-  0x946b, 0x34a5,
-  0x946c, 0x377e,
-  0x946d, 0x34ed,
-  0x946e, 0x34ec,
-  0x946f, 0x34ee,
-  0x9470, 0x174c,
-  0x9471, 0x34ef,
-  0x9472, 0x174b,
-  0x9473, 0x34f0,
-  0x9474, 0x350c,
-  0x9475, 0x350f,
-  0x9476, 0x350e,
-  0x9477, 0x1755,
-  0x9478, 0x350d,
-  0x9479, 0x47ab,
-  0x947b, 0x419b,
-  0x947c, 0x175f,
-  0x947d, 0x175d,
-  0x947f, 0x1764,
-  0x9480, 0x3539,
-  0x9482, 0x3538,
-  0x9483, 0x3540,
-  0x9485, 0x4507,
-  0x949f, 0x4885,
-  0x94a2, 0x451b,
-  0x94c1, 0x47e1,
-  0x94c3, 0x47df,
-  0x94dc, 0x47d7,
-  0x94f6, 0x47d2,
-  0x952d, 0x47ac,
-  0x9547, 0x48bf,
-  0x9577, 0x0697,
-  0x9578, 0x4508,
-  0x957a, 0x20a1,
-  0x957b, 0x234a,
-  0x957c, 0x2ab1,
-  0x957d, 0x3162,
-  0x957f, 0x4509,
-  0x9580, 0x0698,
-  0x9582, 0x0821,
-  0x9583, 0x09ea,
-  0x9585, 0x38a1,
-  0x9586, 0x20a2,
-  0x9588, 0x20a3,
-  0x9589, 0x0bd0,
-  0x958b, 0x0d9a,
-  0x958c, 0x234c,
-  0x958d, 0x234b,
-  0x958e, 0x0d9e,
-  0x958f, 0x0d99,
-  0x9590, 0x234d,
-  0x9591, 0x0d9b,
-  0x9592, 0x0d9d,
-  0x9593, 0x0d9c,
-  0x9594, 0x0d98,
-  0x9596, 0x3bd5,
-  0x9597, 0x3bd4,
-  0x9598, 0x0f5c,
-  0x9599, 0x3bd2,
-  0x959b, 0x25f3,
-  0x959c, 0x25f1,
-  0x959e, 0x25f2,
-  0x959f, 0x25f0,
-  0x95a0, 0x38a4,
-  0x95a1, 0x10df,
-  0x95a2, 0x47ad,
-  0x95a3, 0x10e2,
-  0x95a4, 0x10e4,
-  0x95a5, 0x10e3,
-  0x95a6, 0x38a2,
-  0x95a7, 0x3bd3,
-  0x95a8, 0x10e0,
-  0x95aa, 0x4395,
-  0x95ab, 0x2ab3,
-  0x95ac, 0x2ab2,
-  0x95ad, 0x1260,
-  0x95ae, 0x2ab4,
-  0x95b0, 0x2ab5,
-  0x95b1, 0x1261,
-  0x95b5, 0x2cf0,
-  0x95b6, 0x2cee,
-  0x95b7, 0x2ead,
-  0x95b9, 0x2cec,
-  0x95bb, 0x1385,
-  0x95bc, 0x2ce9,
-  0x95bd, 0x2cf1,
-  0x95be, 0x2ceb,
-  0x95bf, 0x2cef,
-  0x95c0, 0x2ea9,
-  0x95c3, 0x2eab,
-  0x95c5, 0x2eac,
-  0x95c6, 0x14ae,
-  0x95c7, 0x2ea8,
-  0x95c8, 0x14ad,
-  0x95c9, 0x2eaa,
-  0x95ca, 0x14aa,
-  0x95cd, 0x2cea,
-  0x95d0, 0x154c,
-  0x95d1, 0x301f,
-  0x95d2, 0x301d,
-  0x95d4, 0x154a,
-  0x95d5, 0x154d,
-  0x95d6, 0x154b,
-  0x95da, 0x3163,
-  0x95dc, 0x15eb,
-  0x95de, 0x326c,
-  0x95df, 0x326e,
-  0x95e0, 0x326d,
-  0x95e1, 0x1655,
-  0x95e2, 0x16a0,
-  0x95e3, 0x3330,
-  0x95e4, 0x332f,
-  0x95e5, 0x332e,
-  0x95e8, 0x450a,
-  0x95f4, 0x47af,
-  0x961c, 0x0699,
-  0x961d, 0x4519,
-  0x961e, 0x17b4,
-  0x9620, 0x1821,
-  0x9621, 0x0414,
-  0x9622, 0x181f,
-  0x9623, 0x1822,
-  0x9624, 0x1820,
-  0x9628, 0x18f1,
-  0x962a, 0x0526,
-  0x962c, 0x0527,
-  0x962d, 0x18f3,
-  0x962e, 0x0524,
-  0x962f, 0x18f2,
-  0x9630, 0x18f0,
-  0x9631, 0x0525,
-  0x9632, 0x0523,
-  0x9633, 0x47b0,
-  0x9638, 0x3fd1,
-  0x9639, 0x1a55,
-  0x963a, 0x1a58,
-  0x963b, 0x069c,
-  0x963c, 0x1a57,
-  0x963d, 0x1a56,
-  0x963f, 0x069b,
-  0x9640, 0x069a,
-  0x9641, 0x3f3d,
-  0x9642, 0x069e,
-  0x9643, 0x1a59,
-  0x9644, 0x069d,
-  0x9645, 0x4772,
-  0x964a, 0x1c1a,
-  0x964b, 0x0823,
-  0x964e, 0x1c1b,
-  0x964f, 0x1c17,
-  0x9650, 0x0822,
-  0x9651, 0x1c18,
-  0x9653, 0x1c19,
-  0x9654, 0x1c16,
-  0x9656, 0x3de7,
-  0x9658, 0x09f1,
-  0x965b, 0x09ee,
-  0x965c, 0x1e2f,
-  0x965d, 0x09ef,
-  0x965e, 0x09f2,
-  0x965f, 0x1e30,
-  0x9661, 0x09ed,
-  0x9662, 0x09eb,
-  0x9664, 0x09f0,
-  0x9669, 0x475e,
-  0x966a, 0x0bd1,
-  0x966b, 0x20a6,
-  0x966c, 0x0bd9,
-  0x966d, 0x20a5,
-  0x966f, 0x20a8,
-  0x9670, 0x0bd5,
-  0x9671, 0x20a7,
-  0x9672, 0x0da6,
-  0x9673, 0x0bd3,
-  0x9674, 0x0bd6,
-  0x9675, 0x0bd2,
-  0x9676, 0x0bd7,
-  0x9678, 0x0bd4,
-  0x967b, 0x38ac,
-  0x967c, 0x20a4,
-  0x967d, 0x0da2,
-  0x967e, 0x234f,
-  0x9680, 0x2353,
-  0x9681, 0x3f46,
-  0x9683, 0x2352,
-  0x9684, 0x0da7,
-  0x9685, 0x0da3,
-  0x9687, 0x234e,
-  0x9688, 0x2350,
-  0x968a, 0x0d9f,
-  0x968b, 0x0da1,
-  0x968d, 0x0da5,
-  0x968e, 0x0da0,
-  0x968f, 0x3bde,
-  0x9691, 0x25f6,
-  0x9692, 0x25f4,
-  0x9694, 0x0f5e,
-  0x9696, 0x38ad,
-  0x9697, 0x25f7,
-  0x9698, 0x0f5d,
-  0x9699, 0x10e5,
-  0x969b, 0x10e7,
-  0x969c, 0x10e6,
-  0x969e, 0x2852,
-  0x96a1, 0x2853,
-  0x96a2, 0x2ab7,
-  0x96a3, 0x38af,
-  0x96a4, 0x2ab6,
-  0x96a5, 0x42ef,
-  0x96a7, 0x1386,
-  0x96a9, 0x2cf2,
-  0x96aa, 0x1388,
-  0x96ac, 0x2eb0,
-  0x96ae, 0x2eae,
-  0x96b0, 0x2eaf,
-  0x96b1, 0x14af,
-  0x96b3, 0x3020,
-  0x96b4, 0x15ec,
-  0x96b6, 0x0231,
-  0x96b8, 0x14b0,
-  0x96b9, 0x069f,
-  0x96bb, 0x09f3,
-  0x96bc, 0x1e31,
-  0x96bd, 0x38b5,
-  0x96bf, 0x20a9,
-  0x96c0, 0x0bda,
-  0x96c1, 0x0da8,
-  0x96c2, 0x2354,
-  0x96c3, 0x2356,
-  0x96c4, 0x0daa,
-  0x96c5, 0x0da9,
-  0x96c6, 0x0dab,
-  0x96c8, 0x2355,
-  0x96c9, 0x0f62,
-  0x96cb, 0x0f61,
-  0x96cc, 0x10e8,
-  0x96cd, 0x0f60,
-  0x96ce, 0x25f8,
-  0x96d2, 0x10e9,
-  0x96d3, 0x2ab8,
-  0x96d4, 0x2cf3,
-  0x96d5, 0x1389,
-  0x96d6, 0x14b1,
-  0x96d7, 0x3021,
-  0x96d8, 0x3025,
-  0x96d9, 0x1550,
-  0x96da, 0x3022,
-  0x96db, 0x1551,
-  0x96dc, 0x154f,
-  0x96dd, 0x3026,
-  0x96de, 0x1552,
-  0x96df, 0x3024,
-  0x96e1, 0x3165,
-  0x96e2, 0x154e,
-  0x96e3, 0x15ed,
-  0x96e5, 0x34a8,
-  0x96e8, 0x06a0,
-  0x96e9, 0x0bdc,
-  0x96ea, 0x0bdb,
-  0x96ef, 0x0dad,
-  0x96f0, 0x2358,
-  0x96f1, 0x2357,
-  0x96f2, 0x0dae,
-  0x96f4, 0x3a04,
-  0x96f5, 0x25fc,
-  0x96f6, 0x0f67,
-  0x96f7, 0x0f64,
-  0x96f8, 0x25fb,
-  0x96f9, 0x0f66,
-  0x96fa, 0x25f9,
-  0x96fb, 0x0f65,
-  0x96fd, 0x25fa,
-  0x96ff, 0x2854,
-  0x9700, 0x10ea,
-  0x9702, 0x2abb,
-  0x9703, 0x3f0d,
-  0x9704, 0x1262,
-  0x9705, 0x2ab9,
-  0x9706, 0x1263,
-  0x9708, 0x2aba,
-  0x9709, 0x1265,
-  0x970b, 0x2cf4,
-  0x970d, 0x138d,
-  0x970e, 0x138a,
-  0x970f, 0x138f,
-  0x9710, 0x2cf6,
-  0x9711, 0x138b,
-  0x9712, 0x2cf5,
-  0x9713, 0x138e,
-  0x9716, 0x138c,
-  0x9718, 0x2eb3,
-  0x9719, 0x2eb5,
-  0x971b, 0x38c9,
-  0x971c, 0x14b2,
-  0x971d, 0x2eb4,
-  0x971e, 0x14b3,
-  0x971f, 0x2eb2,
-  0x9720, 0x2eb1,
-  0x9721, 0x3fb3,
-  0x9722, 0x3028,
-  0x9723, 0x3027,
-  0x9724, 0x1553,
-  0x9725, 0x3029,
-  0x9726, 0x316a,
-  0x9727, 0x15ef,
-  0x9728, 0x3169,
-  0x9729, 0x3166,
-  0x972a, 0x15ee,
-  0x972b, 0x3167,
-  0x972e, 0x326f,
-  0x9730, 0x1656,
-  0x9731, 0x38c0,
-  0x9732, 0x16a3,
-  0x9735, 0x3331,
-  0x9736, 0x38c2,
-  0x9738, 0x16a1,
-  0x973a, 0x3332,
-  0x973d, 0x16e2,
-  0x973f, 0x33d1,
-  0x9740, 0x47b3,
-  0x9741, 0x3be9,
-  0x9742, 0x1732,
-  0x9743, 0x34aa,
-  0x9744, 0x1734,
-  0x9746, 0x34a9,
-  0x9747, 0x34ab,
-  0x9748, 0x1733,
-  0x9749, 0x34f1,
-  0x974b, 0x3526,
-  0x9751, 0x44e3,
-  0x9752, 0x06a1,
-  0x9756, 0x0f68,
-  0x9757, 0x38cc,
-  0x9758, 0x2855,
-  0x975a, 0x2abc,
-  0x975b, 0x1390,
-  0x975d, 0x3bef,
-  0x975e, 0x06a2,
-  0x975f, 0x38cf,
-  0x9760, 0x1266,
-  0x9761, 0x15f0,
-  0x9762, 0x0826,
-  0x9766, 0x1392,
-  0x9768, 0x1710,
-  0x9769, 0x0827,
-  0x976a, 0x20aa,
-  0x976c, 0x2359,
-  0x976d, 0x3e97,
-  0x976e, 0x235b,
-  0x9770, 0x235a,
-  0x9771, 0x3bfc,
-  0x9772, 0x2600,
-  0x9773, 0x25fd,
-  0x9774, 0x0f69,
-  0x9776, 0x0f6a,
-  0x9777, 0x25fe,
-  0x977a, 0x2857,
-  0x977b, 0x285c,
-  0x977c, 0x10eb,
-  0x977d, 0x2856,
-  0x977e, 0x2858,
-  0x977f, 0x285f,
-  0x9780, 0x285a,
-  0x9781, 0x285e,
-  0x9782, 0x285b,
-  0x9783, 0x2859,
-  0x9784, 0x285d,
-  0x9785, 0x10ec,
-  0x9787, 0x40c0,
-  0x9788, 0x2abf,
-  0x9789, 0x38d4,
-  0x978a, 0x2abd,
-  0x978b, 0x1268,
-  0x978d, 0x1267,
-  0x978e, 0x2abe,
-  0x978f, 0x1269,
-  0x9794, 0x2cf9,
-  0x9797, 0x2cf8,
-  0x9798, 0x1393,
-  0x9799, 0x2cf7,
-  0x979a, 0x2eb6,
-  0x979b, 0x3bfb,
-  0x979c, 0x2eb8,
-  0x979d, 0x2eba,
-  0x979e, 0x2eb9,
-  0x979f, 0x38d5,
-  0x97a0, 0x14b4,
-  0x97a1, 0x2eb7,
-  0x97a2, 0x3030,
-  0x97a3, 0x1554,
-  0x97a4, 0x302e,
-  0x97a5, 0x3031,
-  0x97a6, 0x1555,
-  0x97a8, 0x302c,
-  0x97aa, 0x302f,
-  0x97ab, 0x302d,
-  0x97ac, 0x302a,
-  0x97ad, 0x1556,
-  0x97ae, 0x302b,
-  0x97b1, 0x38d6,
-  0x97b2, 0x47b5,
-  0x97b3, 0x316b,
-  0x97b4, 0x3f33,
-  0x97b6, 0x316d,
-  0x97b7, 0x316c,
-  0x97b8, 0x3d95,
-  0x97b9, 0x3271,
-  0x97ba, 0x3f35,
-  0x97bb, 0x3272,
-  0x97bd, 0x494e,
-  0x97be, 0x38d7,
-  0x97bf, 0x3333,
-  0x97c0, 0x38d8,
-  0x97c1, 0x16e5,
-  0x97c2, 0x47b6,
-  0x97c3, 0x16e4,
-  0x97c4, 0x344c,
-  0x97c6, 0x1735,
-  0x97c7, 0x34ac,
-  0x97c8, 0x3f2f,
-  0x97c9, 0x1756,
-  0x97cb, 0x0828,
-  0x97cc, 0x0daf,
-  0x97cd, 0x2861,
-  0x97ce, 0x2860,
-  0x97cf, 0x2ac1,
-  0x97d0, 0x2ac0,
-  0x97d2, 0x38d9,
-  0x97d3, 0x14b5,
-  0x97d4, 0x2ebc,
-  0x97d5, 0x2ebb,
-  0x97d6, 0x3034,
-  0x97d7, 0x3032,
-  0x97d8, 0x3035,
-  0x97d9, 0x3033,
-  0x97dc, 0x15f1,
-  0x97dd, 0x316e,
-  0x97e0, 0x38da,
-  0x97e1, 0x3334,
-  0x97e3, 0x33d2,
-  0x97e5, 0x34ad,
-  0x97e6, 0x450c,
-  0x97ed, 0x0829,
-  0x97ee, 0x38dc,
-  0x97f0, 0x2cfa,
-  0x97f1, 0x2ebd,
-  0x97f2, 0x394d,
-  0x97f3, 0x082a,
-  0x97f5, 0x38e0,
-  0x97f6, 0x10ed,
-  0x97f8, 0x2cfb,
-  0x97f9, 0x1557,
-  0x97fa, 0x3036,
-  0x97fb, 0x15f2,
-  0x97fd, 0x3273,
-  0x97ff, 0x16a4,
-  0x9800, 0x344e,
-  0x9801, 0x082b,
-  0x9802, 0x0bdf,
-  0x9804, 0x20ab,
-  0x9805, 0x0db0,
-  0x9807, 0x235c,
-  0x9808, 0x0db2,
-  0x980a, 0x0f6e,
-  0x980c, 0x0f70,
-  0x980d, 0x2602,
-  0x980f, 0x2601,
-  0x9810, 0x0f6b,
-  0x9812, 0x0f6f,
-  0x9813, 0x0f6d,
-  0x9814, 0x4952,
-  0x9815, 0x433c,
-  0x9816, 0x2862,
-  0x9817, 0x10ee,
-  0x981b, 0x2ac8,
-  0x981c, 0x126c,
-  0x981d, 0x2ac3,
-  0x981e, 0x2ac2,
-  0x981f, 0x3c02,
-  0x9820, 0x2ac7,
-  0x9821, 0x126a,
-  0x9823, 0x3e37,
-  0x9824, 0x139a,
-  0x9826, 0x2ac4,
-  0x9827, 0x2ac9,
-  0x9828, 0x2ac6,
-  0x9829, 0x2ac5,
-  0x982b, 0x126b,
-  0x982d, 0x1398,
-  0x982e, 0x3f72,
-  0x982f, 0x2cfd,
-  0x9830, 0x1394,
-  0x9832, 0x2cfe,
-  0x9833, 0x38e5,
-  0x9834, 0x38e4,
-  0x9835, 0x2cfc,
-  0x9837, 0x1397,
-  0x9838, 0x1395,
-  0x9839, 0x1399,
-  0x983b, 0x1396,
-  0x9841, 0x2ebe,
-  0x9843, 0x2ec3,
-  0x9844, 0x2ebf,
-  0x9845, 0x2ec2,
-  0x9846, 0x14b6,
-  0x9847, 0x3d96,
-  0x9848, 0x2df2,
-  0x9849, 0x2ec1,
-  0x984a, 0x2ec0,
-  0x984b, 0x38e6,
-  0x984c, 0x155a,
-  0x984d, 0x1558,
-  0x984e, 0x155b,
-  0x984f, 0x1559,
-  0x9850, 0x3037,
-  0x9853, 0x155c,
-  0x9857, 0x3174,
-  0x9858, 0x15f4,
-  0x9859, 0x3172,
-  0x985b, 0x15f5,
-  0x985c, 0x3171,
-  0x985d, 0x3173,
-  0x985e, 0x15f3,
-  0x985f, 0x3278,
-  0x9860, 0x3275,
-  0x9862, 0x3276,
-  0x9864, 0x3335,
-  0x9865, 0x16a6,
-  0x9866, 0x38e7,
-  0x9867, 0x16a5,
-  0x9869, 0x33d4,
-  0x986a, 0x33d3,
-  0x986b, 0x16e6,
-  0x986c, 0x4035,
-  0x986f, 0x1711,
-  0x9870, 0x1736,
-  0x9871, 0x174d,
-  0x9872, 0x34f2,
-  0x9873, 0x3527,
-  0x9875, 0x450d,
-  0x98a8, 0x082c,
-  0x98a9, 0x235d,
-  0x98ac, 0x2604,
-  0x98ad, 0x2863,
-  0x98af, 0x10f0,
-  0x98b1, 0x10f1,
-  0x98b2, 0x2aca,
-  0x98b3, 0x126d,
-  0x98b4, 0x3f73,
-  0x98b6, 0x14b7,
-  0x98b7, 0x38ef,
-  0x98b8, 0x303a,
-  0x98b9, 0x47b8,
-  0x98ba, 0x155d,
-  0x98bb, 0x3177,
-  0x98bc, 0x15f6,
-  0x98bd, 0x3176,
-  0x98be, 0x3178,
-  0x98bf, 0x3175,
-  0x98c0, 0x3338,
-  0x98c1, 0x3279,
-  0x98c3, 0x3b78,
-  0x98c4, 0x1657,
-  0x98c6, 0x3337,
-  0x98c7, 0x38f1,
-  0x98c8, 0x38f0,
-  0x98c9, 0x3336,
-  0x98ca, 0x38ee,
-  0x98cb, 0x33d5,
-  0x98cc, 0x3529,
-  0x98ce, 0x450e,
-  0x98db, 0x082d,
-  0x98dc, 0x3c0b,
-  0x98de, 0x450f,
-  0x98df, 0x082e,
-  0x98e0, 0x4792,
-  0x98e1, 0x38f6,
-  0x98e2, 0x09f4,
-  0x98e3, 0x1e32,
-  0x98e5, 0x20ac,
-  0x98e6, 0x38f7,
-  0x98e7, 0x0db3,
-  0x98e9, 0x0db6,
-  0x98ea, 0x0db4,
-  0x98eb, 0x235e,
-  0x98ec, 0x38f8,
-  0x98ed, 0x0db8,
-  0x98ef, 0x0db5,
-  0x98f1, 0x47ba,
-  0x98f2, 0x0db7,
-  0x98f4, 0x0f72,
-  0x98f5, 0x4365,
-  0x98f6, 0x2605,
-  0x98f9, 0x2606,
-  0x98fa, 0x2acc,
-  0x98fc, 0x0f71,
-  0x98fd, 0x0f73,
-  0x9900, 0x2866,
-  0x9902, 0x2865,
-  0x9903, 0x10f2,
-  0x9905, 0x10f3,
-  0x9907, 0x2867,
-  0x9908, 0x2acb,
-  0x9909, 0x10f5,
-  0x990a, 0x126e,
-  0x990c, 0x10f4,
-  0x990e, 0x43ed,
-  0x9910, 0x139b,
-  0x9911, 0x2acd,
-  0x9912, 0x1270,
-  0x9913, 0x126f,
-  0x9914, 0x2ace,
-  0x9915, 0x2ad1,
-  0x9916, 0x2acf,
-  0x9918, 0x1271,
-  0x9919, 0x47bc,
-  0x991a, 0x13a0,
-  0x991b, 0x139e,
-  0x991c, 0x43ee,
-  0x991e, 0x139d,
-  0x991f, 0x2d00,
-  0x9921, 0x139f,
-  0x9924, 0x2cff,
-  0x9925, 0x2ec4,
-  0x9927, 0x2d01,
-  0x9928, 0x139c,
-  0x9929, 0x2d02,
-  0x992a, 0x2ec7,
-  0x992b, 0x2ec5,
-  0x992d, 0x2ecb,
-  0x992e, 0x1561,
-  0x992f, 0x2eca,
-  0x9930, 0x2ecd,
-  0x9931, 0x2ecc,
-  0x9932, 0x2ec9,
-  0x9933, 0x2ec8,
-  0x9935, 0x14b8,
-  0x9937, 0x47bd,
-  0x9938, 0x3bfd,
-  0x9939, 0x38fa,
-  0x993a, 0x303d,
-  0x993b, 0x3c11,
-  0x993c, 0x303c,
-  0x993d, 0x1560,
-  0x993e, 0x155e,
-  0x9940, 0x3f34,
-  0x9941, 0x303b,
-  0x9942, 0x43ff,
-  0x9943, 0x317b,
-  0x9945, 0x15f7,
-  0x9947, 0x317a,
-  0x9948, 0x3179,
-  0x9949, 0x15f8,
-  0x994a, 0x3fb9,
-  0x994b, 0x327f,
-  0x994c, 0x327e,
-  0x994d, 0x3c12,
-  0x994e, 0x327c,
-  0x9950, 0x327b,
-  0x9951, 0x1659,
-  0x9952, 0x1658,
-  0x9953, 0x3280,
-  0x9954, 0x33d6,
-  0x9955, 0x16e7,
-  0x9956, 0x333a,
-  0x9957, 0x16a7,
-  0x9958, 0x3339,
-  0x9959, 0x327d,
-  0x995b, 0x33d7,
-  0x995c, 0x1712,
-  0x995d, 0x47be,
-  0x995e, 0x174e,
-  0x995f, 0x34f3,
-  0x9961, 0x352a,
-  0x9962, 0x43ef,
-  0x9963, 0x4510,
-  0x9996, 0x082f,
-  0x9997, 0x20ad,
-  0x9998, 0x2ece,
-  0x9999, 0x0830,
-  0x999b, 0x3c15,
-  0x999c, 0x2869,
-  0x999d, 0x2868,
-  0x999e, 0x2d03,
-  0x99a1, 0x2ed0,
-  0x99a3, 0x2ecf,
-  0x99a4, 0x41c3,
-  0x99a5, 0x1562,
-  0x99a6, 0x317c,
-  0x99a8, 0x165a,
-  0x99aa, 0x3c17,
-  0x99ab, 0x352b,
-  0x99ac, 0x09f5,
-  0x99ad, 0x0dba,
-  0x99ae, 0x0db9,
-  0x99af, 0x2607,
-  0x99b0, 0x2609,
-  0x99b1, 0x0f76,
-  0x99b2, 0x2608,
-  0x99b3, 0x0f75,
-  0x99b4, 0x0f77,
-  0x99b5, 0x260a,
-  0x99b8, 0x394b,
-  0x99b9, 0x286b,
-  0x99ba, 0x286d,
-  0x99bb, 0x286c,
-  0x99bc, 0x3c22,
-  0x99bd, 0x286f,
-  0x99c1, 0x10f6,
-  0x99c2, 0x286e,
-  0x99c3, 0x286a,
-  0x99c4, 0x3d77,
-  0x99c5, 0x47c1,
-  0x99c7, 0x2870,
-  0x99c9, 0x2ad8,
-  0x99cb, 0x2adb,
-  0x99cc, 0x2add,
-  0x99cd, 0x2ad3,
-  0x99ce, 0x2ad7,
-  0x99cf, 0x2ad4,
-  0x99d0, 0x1273,
-  0x99d1, 0x1276,
-  0x99d2, 0x1278,
-  0x99d3, 0x2ad5,
-  0x99d5, 0x1277,
-  0x99d6, 0x2ad9,
-  0x99d7, 0x2adc,
-  0x99d8, 0x2ada,
-  0x99d9, 0x1279,
-  0x99da, 0x3f42,
-  0x99db, 0x1275,
-  0x99dc, 0x2ad2,
-  0x99dd, 0x1272,
-  0x99df, 0x1274,
-  0x99e1, 0x3785,
-  0x99e2, 0x13a2,
-  0x99e3, 0x2d09,
-  0x99e4, 0x2d07,
-  0x99e5, 0x2d06,
-  0x99e6, 0x3b65,
-  0x99e7, 0x2d0c,
-  0x99e9, 0x2d0b,
-  0x99ea, 0x2d0a,
-  0x99ec, 0x2d05,
-  0x99ed, 0x13a1,
-  0x99ee, 0x2d04,
-  0x99f0, 0x2d08,
-  0x99f1, 0x13a3,
-  0x99f4, 0x2ed3,
-  0x99f5, 0x38ff,
-  0x99f6, 0x2ed7,
-  0x99f7, 0x2ed4,
-  0x99f8, 0x2ed6,
-  0x99f9, 0x2ed5,
-  0x99fa, 0x2ed2,
-  0x99fb, 0x2ed8,
-  0x99fc, 0x2edb,
-  0x99fd, 0x2ed9,
-  0x99ff, 0x14ba,
-  0x9a01, 0x14b9,
-  0x9a02, 0x2ed1,
-  0x9a03, 0x2edc,
-  0x9a04, 0x3042,
-  0x9a05, 0x3045,
-  0x9a06, 0x3047,
-  0x9a07, 0x3046,
-  0x9a09, 0x3040,
-  0x9a0a, 0x3044,
-  0x9a0b, 0x303f,
-  0x9a0c, 0x3900,
-  0x9a0d, 0x3041,
-  0x9a0e, 0x1563,
-  0x9a0f, 0x303e,
-  0x9a10, 0x3902,
-  0x9a11, 0x3043,
-  0x9a14, 0x318a,
-  0x9a15, 0x317f,
-  0x9a16, 0x15f9,
-  0x9a19, 0x15fa,
-  0x9a1a, 0x317e,
-  0x9a1b, 0x3183,
-  0x9a1c, 0x3189,
-  0x9a1d, 0x3181,
-  0x9a1e, 0x3188,
-  0x9a1f, 0x3b6c,
-  0x9a20, 0x3185,
-  0x9a21, 0x3c1c,
-  0x9a22, 0x3184,
-  0x9a23, 0x3187,
-  0x9a24, 0x3182,
-  0x9a25, 0x3180,
-  0x9a26, 0x3df2,
-  0x9a27, 0x3186,
-  0x9a29, 0x3287,
-  0x9a2a, 0x3285,
-  0x9a2b, 0x165b,
-  0x9a2c, 0x3284,
-  0x9a2d, 0x328a,
-  0x9a2e, 0x3288,
-  0x9a2f, 0x3c1e,
-  0x9a30, 0x165c,
-  0x9a31, 0x3283,
-  0x9a32, 0x3281,
-  0x9a34, 0x3282,
-  0x9a35, 0x165e,
-  0x9a36, 0x3286,
-  0x9a37, 0x165d,
-  0x9a38, 0x3289,
-  0x9a39, 0x333b,
-  0x9a3a, 0x3341,
-  0x9a3b, 0x3901,
-  0x9a3c, 0x47c3,
-  0x9a3d, 0x333c,
-  0x9a3e, 0x16ab,
-  0x9a3f, 0x3342,
-  0x9a40, 0x16aa,
-  0x9a41, 0x3340,
-  0x9a42, 0x333f,
-  0x9a43, 0x16a9,
-  0x9a44, 0x333e,
-  0x9a45, 0x16a8,
-  0x9a46, 0x333d,
-  0x9a48, 0x33dd,
-  0x9a49, 0x33df,
-  0x9a4a, 0x33de,
-  0x9a4c, 0x33db,
-  0x9a4d, 0x16e9,
-  0x9a4e, 0x33d8,
-  0x9a4f, 0x33dc,
-  0x9a50, 0x33e1,
-  0x9a52, 0x33e0,
-  0x9a53, 0x33d9,
-  0x9a55, 0x16e8,
-  0x9a56, 0x344f,
-  0x9a57, 0x1715,
-  0x9a58, 0x3903,
-  0x9a59, 0x3450,
-  0x9a5a, 0x1713,
-  0x9a5c, 0x3c18,
-  0x9a5e, 0x34ae,
-  0x9a5f, 0x1737,
-  0x9a60, 0x3510,
-  0x9a62, 0x1757,
-  0x9a63, 0x3b67,
-  0x9a64, 0x352c,
-  0x9a65, 0x1758,
-  0x9a66, 0x352d,
-  0x9a68, 0x353c,
-  0x9a69, 0x353b,
-  0x9a6a, 0x1767,
-  0x9a6b, 0x3544,
-  0x9a6c, 0x4585,
-  0x9a8f, 0x4586,
-  0x9aa8, 0x09f6,
-  0x9aab, 0x260c,
-  0x9aad, 0x260b,
-  0x9aaf, 0x10f7,
-  0x9ab1, 0x2871,
-  0x9ab2, 0x4332,
-  0x9ab3, 0x2ade,
-  0x9ab4, 0x2d0f,
-  0x9ab6, 0x43f0,
-  0x9ab7, 0x127a,
-  0x9ab8, 0x13a4,
-  0x9ab9, 0x2d0d,
-  0x9aba, 0x3f74,
-  0x9abb, 0x2d10,
-  0x9abc, 0x13a5,
-  0x9abd, 0x3d97,
-  0x9abe, 0x2edd,
-  0x9abf, 0x2d0e,
-  0x9ac0, 0x3048,
-  0x9ac1, 0x1564,
-  0x9ac2, 0x318b,
-  0x9ac6, 0x328d,
-  0x9ac7, 0x328b,
-  0x9aca, 0x328c,
-  0x9acd, 0x3343,
-  0x9acf, 0x16ac,
-  0x9ad0, 0x33e2,
-  0x9ad1, 0x1718,
-  0x9ad2, 0x16ea,
-  0x9ad3, 0x1716,
-  0x9ad5, 0x34af,
-  0x9ad6, 0x174f,
-  0x9ad7, 0x3faa,
-  0x9ad8, 0x09f7,
-  0x9adc, 0x3049,
-  0x9adf, 0x1e33,
-  0x9ae0, 0x3908,
-  0x9ae1, 0x0f78,
-  0x9ae2, 0x3909,
-  0x9ae3, 0x2872,
-  0x9ae6, 0x10f9,
-  0x9ae7, 0x2873,
-  0x9aeb, 0x2ae0,
-  0x9aec, 0x2adf,
-  0x9aed, 0x13a7,
-  0x9aee, 0x127b,
-  0x9af1, 0x2ae3,
-  0x9af2, 0x2ae2,
-  0x9af3, 0x2ae1,
-  0x9af4, 0x390b,
-  0x9af6, 0x2d11,
-  0x9af7, 0x2d14,
-  0x9af9, 0x2d13,
-  0x9afa, 0x2d12,
-  0x9afb, 0x13a6,
-  0x9afc, 0x2ee1,
-  0x9afd, 0x2edf,
-  0x9afe, 0x2ede,
-  0x9aff, 0x3f17,
-  0x9b01, 0x2ee0,
-  0x9b02, 0x3f12,
-  0x9b03, 0x1565,
-  0x9b04, 0x304b,
-  0x9b06, 0x1566,
-  0x9b08, 0x304a,
-  0x9b09, 0x3f20,
-  0x9b0a, 0x318d,
-  0x9b0b, 0x318c,
-  0x9b0c, 0x318f,
-  0x9b0d, 0x15fb,
-  0x9b0e, 0x318e,
-  0x9b0f, 0x47c4,
-  0x9b10, 0x328e,
-  0x9b11, 0x3290,
-  0x9b12, 0x328f,
-  0x9b14, 0x390d,
-  0x9b15, 0x3344,
-  0x9b16, 0x3347,
-  0x9b17, 0x3345,
-  0x9b19, 0x33e3,
-  0x9b1a, 0x16eb,
-  0x9b1e, 0x3451,
-  0x9b22, 0x1738,
-  0x9b23, 0x1750,
-  0x9b24, 0x352f,
-  0x9b25, 0x09f8,
-  0x9b27, 0x127d,
-  0x9b28, 0x13a8,
-  0x9b29, 0x304d,
-  0x9b2a, 0x3f19,
-  0x9b2b, 0x33e4,
-  0x9b2d, 0x390e,
-  0x9b2e, 0x3511,
-  0x9b2f, 0x1e34,
-  0x9b31, 0x1768,
-  0x9b32, 0x09f9,
-  0x9b33, 0x2d15,
-  0x9b34, 0x3911,
-  0x9b35, 0x304e,
-  0x9b37, 0x3190,
-  0x9b39, 0x3f00,
-  0x9b3a, 0x3348,
-  0x9b3b, 0x33e5,
-  0x9b3c, 0x09fa,
-  0x9b3e, 0x2874,
-  0x9b40, 0x3915,
-  0x9b41, 0x10fa,
-  0x9b43, 0x2ae5,
-  0x9b44, 0x127f,
-  0x9b45, 0x127e,
-  0x9b46, 0x2ae4,
-  0x9b48, 0x2ee2,
-  0x9b4a, 0x304f,
-  0x9b4b, 0x3051,
-  0x9b4c, 0x3050,
-  0x9b4d, 0x1569,
-  0x9b4e, 0x1568,
-  0x9b4f, 0x1567,
-  0x9b50, 0x3914,
-  0x9b51, 0x16ae,
-  0x9b52, 0x3349,
-  0x9b54, 0x16ad,
-  0x9b55, 0x33e7,
-  0x9b56, 0x33e6,
-  0x9b58, 0x1739,
-  0x9b59, 0x34b0,
-  0x9b5a, 0x0be1,
-  0x9b5b, 0x260d,
-  0x9b5f, 0x2878,
-  0x9b60, 0x2876,
-  0x9b64, 0x2aee,
-  0x9b66, 0x2ae9,
-  0x9b67, 0x2ae6,
-  0x9b68, 0x2aed,
-  0x9b69, 0x47c5,
-  0x9b6c, 0x2aef,
-  0x9b6f, 0x1281,
-  0x9b70, 0x2aec,
-  0x9b71, 0x2ae8,
-  0x9b74, 0x2ae7,
-  0x9b75, 0x2aeb,
-  0x9b76, 0x2aea,
-  0x9b77, 0x1280,
-  0x9b7a, 0x2d20,
-  0x9b7b, 0x2d1b,
-  0x9b7c, 0x2d19,
-  0x9b7d, 0x2d22,
-  0x9b7e, 0x2d1a,
-  0x9b7f, 0x3c3b,
-  0x9b80, 0x2d16,
-  0x9b81, 0x43f1,
-  0x9b82, 0x2d1c,
-  0x9b83, 0x4219,
-  0x9b85, 0x2d17,
-  0x9b86, 0x2eeb,
-  0x9b87, 0x2d18,
-  0x9b88, 0x2d23,
-  0x9b8b, 0x3eee,
-  0x9b8d, 0x4623,
-  0x9b8e, 0x3919,
-  0x9b8f, 0x3fad,
-  0x9b90, 0x2d1f,
-  0x9b91, 0x13a9,
-  0x9b92, 0x2d1e,
-  0x9b93, 0x2d1d,
-  0x9b95, 0x2d21,
-  0x9b97, 0x3f71,
-  0x9b9a, 0x2ee3,
-  0x9b9b, 0x2ee6,
-  0x9b9d, 0x3f56,
-  0x9b9e, 0x2ee5,
-  0x9b9f, 0x3c3e,
-  0x9ba0, 0x2eed,
-  0x9ba1, 0x2ee8,
-  0x9ba2, 0x2eec,
-  0x9ba4, 0x2eea,
-  0x9ba5, 0x2ee9,
-  0x9ba6, 0x2ee7,
-  0x9ba8, 0x2ee4,
-  0x9baa, 0x14bd,
-  0x9bab, 0x14bc,
-  0x9bad, 0x14be,
-  0x9bae, 0x14bb,
-  0x9baf, 0x2eee,
-  0x9bb0, 0x3fb4,
-  0x9bb5, 0x3057,
-  0x9bb6, 0x305a,
-  0x9bb8, 0x3058,
-  0x9bb9, 0x305c,
-  0x9bbd, 0x305d,
-  0x9bbf, 0x3055,
-  0x9bc0, 0x156e,
-  0x9bc1, 0x3056,
-  0x9bc3, 0x3054,
-  0x9bc4, 0x305b,
-  0x9bc6, 0x3053,
-  0x9bc7, 0x3052,
-  0x9bc8, 0x156d,
-  0x9bc9, 0x156b,
-  0x9bca, 0x156a,
-  0x9bcf, 0x3c3c,
-  0x9bd3, 0x3059,
-  0x9bd4, 0x3199,
-  0x9bd5, 0x319f,
-  0x9bd6, 0x15fe,
-  0x9bd7, 0x319a,
-  0x9bd9, 0x319d,
-  0x9bda, 0x31a1,
-  0x9bdb, 0x15ff,
-  0x9bdc, 0x319c,
-  0x9bdd, 0x47c6,
-  0x9bde, 0x3194,
-  0x9be0, 0x3193,
-  0x9be1, 0x31a0,
-  0x9be2, 0x3197,
-  0x9be4, 0x3195,
-  0x9be5, 0x319e,
-  0x9be6, 0x3196,
-  0x9be7, 0x15fd,
-  0x9be8, 0x15fc,
-  0x9be9, 0x3bc1,
-  0x9bea, 0x3191,
-  0x9bec, 0x319b,
-  0x9bed, 0x3ed7,
-  0x9bf0, 0x3198,
-  0x9bf1, 0x47c7,
-  0x9bf4, 0x47c8,
-  0x9bf7, 0x3293,
-  0x9bf8, 0x3296,
-  0x9bfd, 0x156c,
-  0x9bff, 0x391b,
-  0x9c02, 0x391a,
-  0x9c05, 0x3294,
-  0x9c06, 0x329a,
-  0x9c07, 0x3298,
-  0x9c08, 0x3292,
-  0x9c09, 0x329d,
-  0x9c0a, 0x3f3a,
-  0x9c0b, 0x3291,
-  0x9c0c, 0x391c,
-  0x9c0d, 0x1660,
-  0x9c0e, 0x3299,
-  0x9c10, 0x3c3a,
-  0x9c12, 0x3295,
-  0x9c13, 0x165f,
-  0x9c14, 0x329c,
-  0x9c15, 0x3f1e,
-  0x9c17, 0x329b,
-  0x9c1b, 0x491b,
-  0x9c1c, 0x334c,
-  0x9c1d, 0x334b,
-  0x9c1f, 0x4622,
-  0x9c20, 0x47ca,
-  0x9c21, 0x3352,
-  0x9c23, 0x334e,
-  0x9c24, 0x3351,
-  0x9c25, 0x16b0,
-  0x9c26, 0x45e6,
-  0x9c28, 0x334f,
-  0x9c2b, 0x334a,
-  0x9c2c, 0x334d,
-  0x9c2d, 0x16af,
-  0x9c2e, 0x3f22,
-  0x9c2f, 0x3d87,
-  0x9c31, 0x16ed,
-  0x9c32, 0x33f2,
-  0x9c33, 0x33ed,
-  0x9c34, 0x33f1,
-  0x9c35, 0x3c39,
-  0x9c36, 0x33f4,
-  0x9c37, 0x33f0,
-  0x9c39, 0x33ec,
-  0x9c3a, 0x3d7e,
-  0x9c3b, 0x16ef,
-  0x9c3c, 0x33ef,
-  0x9c3d, 0x33f3,
-  0x9c3e, 0x16ee,
-  0x9c3f, 0x33ea,
-  0x9c40, 0x3297,
-  0x9c41, 0x33ee,
-  0x9c44, 0x33eb,
-  0x9c45, 0x3e71,
-  0x9c46, 0x33e8,
-  0x9c48, 0x33e9,
-  0x9c49, 0x16ec,
-  0x9c4a, 0x3457,
-  0x9c4b, 0x3459,
-  0x9c4c, 0x345c,
-  0x9c4d, 0x3458,
-  0x9c4e, 0x345d,
-  0x9c4f, 0x3c36,
-  0x9c50, 0x3456,
-  0x9c52, 0x3454,
-  0x9c53, 0x3c37,
-  0x9c54, 0x1719,
-  0x9c55, 0x345a,
-  0x9c56, 0x171b,
-  0x9c57, 0x171a,
-  0x9c58, 0x3455,
-  0x9c59, 0x345b,
-  0x9c5d, 0x3ebf,
-  0x9c5e, 0x34b5,
-  0x9c5f, 0x173a,
-  0x9c60, 0x34b6,
-  0x9c62, 0x34b4,
-  0x9c63, 0x34b1,
-  0x9c66, 0x34b3,
-  0x9c67, 0x34b2,
-  0x9c68, 0x34f4,
-  0x9c6d, 0x34f6,
-  0x9c6e, 0x34f5,
-  0x9c71, 0x3514,
-  0x9c72, 0x3ea1,
-  0x9c73, 0x3513,
-  0x9c74, 0x3512,
-  0x9c75, 0x3515,
-  0x9c77, 0x1760,
-  0x9c79, 0x3541,
-  0x9c7a, 0x3545,
-  0x9c7b, 0x3c38,
-  0x9c7c, 0x4512,
-  0x9ce5, 0x0be2,
-  0x9ce6, 0x235f,
-  0x9ce7, 0x2610,
-  0x9ce9, 0x0f79,
-  0x9cea, 0x260e,
-  0x9ced, 0x260f,
-  0x9cf1, 0x2879,
-  0x9cf3, 0x10fe,
-  0x9cf4, 0x10fc,
-  0x9cf5, 0x287b,
-  0x9cf6, 0x10fd,
-  0x9cf7, 0x2af4,
-  0x9cf9, 0x2af7,
-  0x9cfa, 0x2af1,
-  0x9cfb, 0x2af8,
-  0x9cfc, 0x2af0,
-  0x9cfd, 0x2af2,
-  0x9cff, 0x2af3,
-  0x9d00, 0x2af6,
-  0x9d02, 0x3f3b,
-  0x9d03, 0x1284,
-  0x9d04, 0x2afb,
-  0x9d05, 0x2afa,
-  0x9d06, 0x1282,
-  0x9d07, 0x2af5,
-  0x9d08, 0x2af9,
-  0x9d09, 0x1283,
-  0x9d0c, 0x3c46,
-  0x9d10, 0x2d2d,
-  0x9d12, 0x13ae,
-  0x9d14, 0x2d28,
-  0x9d15, 0x13aa,
-  0x9d16, 0x3c7c,
-  0x9d17, 0x2d25,
-  0x9d18, 0x2d2b,
-  0x9d19, 0x2d2e,
-  0x9d1b, 0x13af,
-  0x9d1d, 0x2d2a,
-  0x9d1e, 0x2d27,
-  0x9d1f, 0x2d2f,
-  0x9d20, 0x2d26,
-  0x9d21, 0x3c41,
-  0x9d22, 0x2d2c,
-  0x9d23, 0x13ab,
-  0x9d25, 0x2d24,
-  0x9d26, 0x13ac,
-  0x9d28, 0x13ad,
-  0x9d29, 0x2d29,
-  0x9d2d, 0x2f00,
-  0x9d2e, 0x2ef3,
-  0x9d30, 0x2ef7,
-  0x9d31, 0x2ef5,
-  0x9d33, 0x2eef,
-  0x9d34, 0x404a,
-  0x9d36, 0x2ef2,
-  0x9d37, 0x2efc,
-  0x9d38, 0x2ef6,
-  0x9d39, 0x392e,
-  0x9d3b, 0x14bf,
-  0x9d3d, 0x2efe,
-  0x9d3e, 0x2efb,
-  0x9d3f, 0x14c0,
-  0x9d40, 0x2efd,
-  0x9d41, 0x2ef0,
-  0x9d42, 0x2ef9,
-  0x9d44, 0x3fab,
-  0x9d45, 0x2ef8,
-  0x9d49, 0x47cd,
-  0x9d4a, 0x3061,
-  0x9d4b, 0x3063,
-  0x9d4c, 0x3066,
-  0x9d4e, 0x4539,
-  0x9d4f, 0x3060,
-  0x9d50, 0x3eca,
-  0x9d51, 0x156f,
-  0x9d52, 0x3068,
-  0x9d53, 0x305f,
-  0x9d54, 0x3069,
-  0x9d56, 0x3065,
-  0x9d57, 0x3067,
-  0x9d58, 0x306b,
-  0x9d59, 0x3064,
-  0x9d5a, 0x306c,
-  0x9d5b, 0x3062,
-  0x9d5c, 0x305e,
-  0x9d5d, 0x1570,
-  0x9d5e, 0x3e6e,
-  0x9d5f, 0x306a,
-  0x9d60, 0x1571,
-  0x9d61, 0x1601,
-  0x9d67, 0x2ef1,
-  0x9d68, 0x31bb,
-  0x9d69, 0x31b2,
-  0x9d6a, 0x1603,
-  0x9d6b, 0x31ae,
-  0x9d6c, 0x1604,
-  0x9d6d, 0x3bac,
-  0x9d6e, 0x433b,
-  0x9d6f, 0x31b7,
-  0x9d70, 0x31b1,
-  0x9d71, 0x31a7,
-  0x9d72, 0x1602,
-  0x9d73, 0x31b4,
-  0x9d74, 0x31af,
-  0x9d77, 0x31a2,
-  0x9d78, 0x31a9,
-  0x9d79, 0x31b8,
-  0x9d7b, 0x31b5,
-  0x9d7c, 0x3efe,
-  0x9d7d, 0x31ad,
-  0x9d7e, 0x3925,
-  0x9d7f, 0x31b9,
-  0x9d80, 0x31a8,
-  0x9d81, 0x31a3,
-  0x9d82, 0x31b6,
-  0x9d83, 0x3926,
-  0x9d84, 0x31a5,
-  0x9d85, 0x31b3,
-  0x9d86, 0x31aa,
-  0x9d87, 0x31ba,
-  0x9d88, 0x31a6,
-  0x9d89, 0x1600,
-  0x9d8a, 0x31a4,
-  0x9d8b, 0x31ab,
-  0x9d90, 0x32a4,
-  0x9d92, 0x32a2,
-  0x9d93, 0x43f3,
-  0x9d94, 0x32a7,
-  0x9d96, 0x32b3,
-  0x9d97, 0x32aa,
-  0x9d98, 0x32a3,
-  0x9d99, 0x329f,
-  0x9d9a, 0x32ac,
-  0x9d9b, 0x32a5,
-  0x9d9c, 0x32a8,
-  0x9d9d, 0x32a1,
-  0x9d9e, 0x32af,
-  0x9d9f, 0x329e,
-  0x9da0, 0x32a6,
-  0x9da1, 0x32ab,
-  0x9da2, 0x32ad,
-  0x9da3, 0x32b0,
-  0x9da4, 0x32a0,
-  0x9da5, 0x3c4b,
-  0x9da6, 0x32b4,
-  0x9da8, 0x32ae,
-  0x9da9, 0x32b2,
-  0x9daa, 0x32a9,
-  0x9dab, 0x3f30,
-  0x9dac, 0x3362,
-  0x9dad, 0x3365,
-  0x9daf, 0x16b1,
-  0x9db1, 0x3364,
-  0x9db2, 0x3369,
-  0x9db3, 0x3367,
-  0x9db4, 0x16b2,
-  0x9db5, 0x335e,
-  0x9db6, 0x3354,
-  0x9db7, 0x3353,
-  0x9db8, 0x16b4,
-  0x9db9, 0x3360,
-  0x9dbb, 0x335d,
-  0x9dbc, 0x3355,
-  0x9dbd, 0x47d0,
-  0x9dbe, 0x335a,
-  0x9dbf, 0x32b1,
-  0x9dc0, 0x43f2,
-  0x9dc1, 0x3356,
-  0x9dc2, 0x16b3,
-  0x9dc3, 0x335c,
-  0x9dc4, 0x3929,
-  0x9dc5, 0x335b,
-  0x9dc7, 0x3357,
-  0x9dc8, 0x3363,
-  0x9dc9, 0x4579,
-  0x9dca, 0x3358,
-  0x9dcb, 0x33f9,
-  0x9dcc, 0x3366,
-  0x9dcd, 0x3368,
-  0x9dce, 0x335f,
-  0x9dcf, 0x3359,
-  0x9dd0, 0x33fa,
-  0x9dd1, 0x33fc,
-  0x9dd2, 0x33f6,
-  0x9dd3, 0x16f0,
-  0x9dd4, 0x391e,
-  0x9dd5, 0x3403,
-  0x9dd6, 0x3401,
-  0x9dd7, 0x16f1,
-  0x9dd8, 0x3400,
-  0x9dd9, 0x33ff,
-  0x9dda, 0x33f8,
-  0x9ddb, 0x33f5,
-  0x9ddc, 0x33fb,
-  0x9ddd, 0x3404,
-  0x9dde, 0x33f7,
-  0x9ddf, 0x33fd,
-  0x9de1, 0x3466,
-  0x9de2, 0x346b,
-  0x9de3, 0x3461,
-  0x9de4, 0x3464,
-  0x9de5, 0x171c,
-  0x9de6, 0x3468,
-  0x9de8, 0x346f,
-  0x9de9, 0x33fe,
-  0x9deb, 0x3462,
-  0x9dec, 0x346c,
-  0x9ded, 0x3470,
-  0x9dee, 0x3467,
-  0x9def, 0x3460,
-  0x9df0, 0x346a,
-  0x9df2, 0x3469,
-  0x9df3, 0x346e,
-  0x9df4, 0x346d,
-  0x9df5, 0x3402,
-  0x9df6, 0x3465,
-  0x9df7, 0x345f,
-  0x9df8, 0x3463,
-  0x9df9, 0x173b,
-  0x9dfb, 0x345e,
-  0x9dfc, 0x47d1,
-  0x9dfd, 0x34c1,
-  0x9dfe, 0x34b8,
-  0x9dff, 0x34c0,
-  0x9e00, 0x34bd,
-  0x9e02, 0x34b7,
-  0x9e03, 0x34ba,
-  0x9e04, 0x34c2,
-  0x9e05, 0x34bc,
-  0x9e06, 0x34bb,
-  0x9e07, 0x34b9,
-  0x9e09, 0x34bf,
-  0x9e0a, 0x457e,
-  0x9e0b, 0x34f7,
-  0x9e0c, 0x457a,
-  0x9e0d, 0x34f8,
-  0x9e0e, 0x3928,
-  0x9e0f, 0x34fa,
-  0x9e10, 0x34f9,
-  0x9e11, 0x34fc,
-  0x9e12, 0x34fb,
-  0x9e13, 0x3517,
-  0x9e14, 0x3516,
-  0x9e15, 0x3530,
-  0x9e17, 0x3531,
-  0x9e18, 0x3c44,
-  0x9e19, 0x353d,
-  0x9e1a, 0x1765,
-  0x9e1b, 0x1769,
-  0x9e1c, 0x3f84,
-  0x9e1d, 0x3546,
-  0x9e1e, 0x176a,
-  0x9e1f, 0x4513,
-  0x9e75, 0x0be3,
-  0x9e79, 0x1661,
-  0x9e7a, 0x336a,
-  0x9e7b, 0x43f8,
-  0x9e7c, 0x173d,
-  0x9e7f, 0x0be4,
-  0x9e80, 0x2611,
-  0x9e81, 0x3f0f,
-  0x9e82, 0x0f7a,
-  0x9e83, 0x2afc,
-  0x9e84, 0x3f76,
-  0x9e85, 0x3ef2,
-  0x9e86, 0x2d31,
-  0x9e88, 0x2d30,
-  0x9e89, 0x2f02,
-  0x9e8a, 0x2f01,
-  0x9e8b, 0x14c1,
-  0x9e8c, 0x306e,
-  0x9e8d, 0x2f03,
-  0x9e8e, 0x306d,
-  0x9e90, 0x3931,
-  0x9e91, 0x31bd,
-  0x9e92, 0x1605,
-  0x9e93, 0x1607,
-  0x9e94, 0x31bc,
-  0x9e95, 0x3932,
-  0x9e96, 0x3fbc,
-  0x9e97, 0x1606,
-  0x9e98, 0x3f27,
-  0x9e99, 0x32b6,
-  0x9e9a, 0x32b8,
-  0x9e9b, 0x32b7,
-  0x9e9c, 0x336b,
-  0x9e9d, 0x16b5,
-  0x9e9e, 0x3933,
-  0x9e9f, 0x171d,
-  0x9ea0, 0x34c3,
-  0x9ea1, 0x34fd,
-  0x9ea2, 0x3934,
-  0x9ea4, 0x354a,
-  0x9ea5, 0x0be5,
-  0x9ea6, 0x4944,
-  0x9ea7, 0x287c,
-  0x9ea8, 0x3f75,
-  0x9ea9, 0x1285,
-  0x9eaa, 0x3936,
-  0x9eab, 0x3e92,
-  0x9eac, 0x43f4,
-  0x9ead, 0x2d34,
-  0x9eae, 0x2d33,
-  0x9eaf, 0x3937,
-  0x9eb0, 0x2f04,
-  0x9eb1, 0x47d4,
-  0x9eb4, 0x1608,
-  0x9eb5, 0x1662,
-  0x9eb6, 0x3405,
-  0x9eb7, 0x3542,
-  0x9ebb, 0x0be6,
-  0x9ebc, 0x10ff,
-  0x9ebd, 0x47d5,
-  0x9ebe, 0x1286,
-  0x9ebf, 0x3d78,
-  0x9ec0, 0x31be,
-  0x9ec1, 0x3939,
-  0x9ec2, 0x3471,
-  0x9ec3, 0x0dbb,
-  0x9ec4, 0x4514,
-  0x9ec6, 0x47d6,
-  0x9ec7, 0x4577,
-  0x9ec8, 0x2f05,
-  0x9ecc, 0x1751,
-  0x9ecd, 0x0dbc,
-  0x9ece, 0x1287,
-  0x9ecf, 0x14c2,
-  0x9ed0, 0x3472,
-  0x9ed1, 0x0dbd,
-  0x9ed3, 0x2afd,
-  0x9ed4, 0x13b1,
-  0x9ed5, 0x2d35,
-  0x9ed8, 0x13b0,
-  0x9eda, 0x2f06,
-  0x9edb, 0x14c6,
-  0x9edc, 0x14c4,
-  0x9ede, 0x14c3,
-  0x9edf, 0x306f,
-  0x9ee0, 0x1572,
-  0x9ee2, 0x47d8,
-  0x9ee4, 0x32ba,
-  0x9ee5, 0x32b9,
-  0x9ee6, 0x32bc,
-  0x9ee7, 0x32bb,
-  0x9ee8, 0x1663,
-  0x9eeb, 0x336c,
-  0x9eed, 0x336e,
-  0x9eee, 0x336d,
-  0x9eef, 0x16b6,
-  0x9ef0, 0x3406,
-  0x9ef1, 0x47d9,
-  0x9ef2, 0x3473,
-  0x9ef4, 0x171e,
-  0x9ef5, 0x34fe,
-  0x9ef6, 0x3518,
-  0x9ef7, 0x1762,
-  0x9ef8, 0x47da,
-  0x9ef9, 0x2360,
-  0x9efa, 0x2d37,
-  0x9efb, 0x2f07,
-  0x9efc, 0x31bf,
-  0x9efd, 0x2612,
-  0x9efe, 0x47ce,
-  0x9eff, 0x2f08,
-  0x9f00, 0x3071,
-  0x9f01, 0x3070,
-  0x9f02, 0x3940,
-  0x9f06, 0x3475,
-  0x9f07, 0x173f,
-  0x9f08, 0x3941,
-  0x9f09, 0x34ff,
-  0x9f0a, 0x3519,
-  0x9f0e, 0x0f7b,
-  0x9f0f, 0x2afe,
-  0x9f12, 0x2d38,
-  0x9f13, 0x0f7c,
-  0x9f15, 0x1573,
-  0x9f16, 0x3072,
-  0x9f17, 0x3945,
-  0x9f18, 0x3370,
-  0x9f19, 0x16b7,
-  0x9f1a, 0x3371,
-  0x9f1b, 0x336f,
-  0x9f1c, 0x3476,
-  0x9f1e, 0x34c4,
-  0x9f20, 0x0f7d,
-  0x9f22, 0x2f0b,
-  0x9f23, 0x2f0a,
-  0x9f24, 0x2f09,
-  0x9f25, 0x3073,
-  0x9f26, 0x3f90,
-  0x9f27, 0x4620,
-  0x9f28, 0x3077,
-  0x9f29, 0x3076,
-  0x9f2a, 0x3075,
-  0x9f2b, 0x3074,
-  0x9f2c, 0x1574,
-  0x9f2d, 0x31c0,
-  0x9f2e, 0x32be,
-  0x9f2f, 0x1664,
-  0x9f30, 0x32bd,
-  0x9f31, 0x3372,
-  0x9f32, 0x3409,
-  0x9f33, 0x3408,
-  0x9f34, 0x16f2,
-  0x9f35, 0x3407,
-  0x9f36, 0x3479,
-  0x9f37, 0x3478,
-  0x9f38, 0x3477,
-  0x9f39, 0x3947,
-  0x9f3b, 0x1100,
-  0x9f3d, 0x2d39,
-  0x9f3e, 0x14c7,
-  0x9f40, 0x31c1,
-  0x9f42, 0x340a,
-  0x9f43, 0x347a,
-  0x9f44, 0x47db,
-  0x9f45, 0x394a,
-  0x9f46, 0x34c5,
-  0x9f47, 0x3500,
-  0x9f48, 0x3532,
-  0x9f49, 0x354c,
-  0x9f4a, 0x1101,
-  0x9f4b, 0x14c8,
-  0x9f4c, 0x3078,
-  0x9f4d, 0x31c3,
-  0x9f4e, 0x3373,
-  0x9f4f, 0x347b,
-  0x9f50, 0x4943,
-  0x9f52, 0x1289,
-  0x9f53, 0x3f80,
-  0x9f54, 0x2f0c,
-  0x9f55, 0x3079,
-  0x9f56, 0x31c4,
-  0x9f59, 0x32c3,
-  0x9f5a, 0x3f23,
-  0x9f5b, 0x32bf,
-  0x9f5c, 0x16b8,
-  0x9f5d, 0x32c2,
-  0x9f5e, 0x32c1,
-  0x9f5f, 0x1665,
-  0x9f60, 0x32c0,
-  0x9f61, 0x1667,
-  0x9f62, 0x394f,
-  0x9f63, 0x1666,
-  0x9f64, 0x3375,
-  0x9f65, 0x3374,
-  0x9f66, 0x16b9,
-  0x9f69, 0x3950,
-  0x9f6a, 0x16f4,
-  0x9f6b, 0x340b,
-  0x9f6c, 0x16f3,
-  0x9f6e, 0x347e,
-  0x9f70, 0x347d,
-  0x9f71, 0x347c,
-  0x9f72, 0x1741,
-  0x9f74, 0x34c6,
-  0x9f77, 0x1740,
-  0x9f78, 0x3501,
-  0x9f79, 0x3504,
-  0x9f7a, 0x3503,
-  0x9f7b, 0x3502,
-  0x9f7e, 0x354b,
-  0x9f7f, 0x4680,
-  0x9f8d, 0x13b2,
-  0x9f8e, 0x3952,
-  0x9f90, 0x157c,
-  0x9f91, 0x32c4,
-  0x9f92, 0x3376,
-  0x9f94, 0x16f5,
-  0x9f95, 0x340c,
-  0x9f98, 0x354d,
-  0x9f99, 0x4587,
-  0x9f9c, 0x13b3,
-  0x9f9f, 0x4646,
-  0x9fa0, 0x2f0d,
-  0x9fa2, 0x340d,
-  0x9fa4, 0x351a,
-  0x9fa5, 0x3f70,
-  0xfa0c, 0x0274,
-  0xfa0d, 0x2381,
-  0xfe30, 0x006d,
-  0xfe31, 0x007a,
-  0xfe33, 0x35af,
-  0xfe34, 0x35b1,
-  0xfe35, 0x0082,
-  0xfe37, 0x0086,
-  0xfe39, 0x008a,
-  0xfe3b, 0x008e,
-  0xfe3d, 0x0092,
-  0xfe3f, 0x0096,
-  0xfe41, 0x009a,
-  0xfe43, 0x009e,
-  0xfe49, 0x00c7,
-  0xfe4b, 0x00cb,
-  0xfe4d, 0x00c9,
-  0xfe4f, 0x35b2,
-  0xfe50, 0x0070,
-  0xfe52, 0x0072,
-  0xfe54, 0x0074,
-  0xfe59, 0x00a0,
-  0xfe5f, 0x00cd,
-  0xfe62, 0x00df,
-  0xfe69, 0x010c,
-  0xff01, 0x006c,
-  0xff02, 0x36e4,
-  0xff03, 0x00ae,
-  0xff04, 0x0103,
-  0xff05, 0x0108,
-  0xff06, 0x00af,
-  0xff07, 0x36e3,
-  0xff08, 0x0080,
-  0xff0a, 0x00b0,
-  0xff0b, 0x00d0,
-  0xff0c, 0x0064,
-  0xff0d, 0x00d1,
-  0xff0e, 0x0067,
-  0xff0f, 0x0101,
-  0xff10, 0x014d,
-  0xff1a, 0x006a,
-  0xff1b, 0x0069,
-  0xff1c, 0x00d6,
-  0xff1d, 0x00d8,
-  0xff1e, 0x00d7,
-  0xff1f, 0x006b,
-  0xff20, 0x0109,
-  0xff21, 0x016d,
-  0xff3b, 0x35be,
-  0xff3c, 0x0102,
-  0xff3d, 0x35bf,
-  0xff3e, 0x35b4,
-  0xff3f, 0x00c5,
-  0xff41, 0x0187,
-  0xff5b, 0x0084,
-  0xff5c, 0x0078,
-  0xff5d, 0x0085,
-  0xff64, 0x0071,
-  0xffe2, 0x36e1,
-  0xffe4, 0x36e2,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13UniCNSUCS2HEnc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13UniCNSUCS2HMap2, 15455
-};
-
-static Gushort cns13UniCNSUCS2VMap2[30936] = {
-  0x0000, 0x0000,
-  0x0020, 0x0001,
-  0x00a2, 0x0106,
-  0x00a5, 0x0104,
-  0x00a7, 0x00b2,
-  0x00a8, 0x35b3,
-  0x00ac, 0x36e1,
-  0x00b0, 0x0118,
-  0x00b1, 0x00d4,
-  0x00b7, 0x0073,
-  0x00c0, 0x4964,
-  0x00c1, 0x4962,
-  0x00c8, 0x4968,
-  0x00c9, 0x4966,
-  0x00ca, 0x4971,
-  0x00d2, 0x496c,
-  0x00d3, 0x496a,
-  0x00d7, 0x00d2,
-  0x00e0, 0x4975,
-  0x00e1, 0x4973,
-  0x00e8, 0x497a,
-  0x00e9, 0x4978,
-  0x00ea, 0x4990,
-  0x00ec, 0x497e,
-  0x00ed, 0x497c,
-  0x00f2, 0x4982,
-  0x00f3, 0x4980,
-  0x00f7, 0x00d3,
-  0x00f8, 0x4998,
-  0x00f9, 0x4986,
-  0x00fa, 0x4984,
-  0x00fc, 0x498b,
-  0x0100, 0x4961,
-  0x0101, 0x4972,
-  0x0112, 0x4965,
-  0x0113, 0x4977,
-  0x011a, 0x4967,
-  0x011b, 0x4979,
-  0x012b, 0x497b,
-  0x014b, 0x4999,
-  0x014c, 0x4969,
-  0x014d, 0x497f,
-  0x0153, 0x4997,
-  0x016b, 0x4983,
-  0x01cd, 0x4963,
-  0x01ce, 0x4974,
-  0x01d0, 0x497d,
-  0x01d1, 0x496b,
-  0x01d2, 0x4981,
-  0x01d4, 0x4985,
-  0x01d6, 0x4987,
-  0x01d8, 0x4988,
-  0x01da, 0x4989,
-  0x01dc, 0x498a,
-  0x0250, 0x4993,
-  0x0251, 0x4976,
-  0x0254, 0x4995,
-  0x025b, 0x4994,
-  0x0261, 0x4991,
-  0x026a, 0x499b,
-  0x0275, 0x4996,
-  0x0283, 0x4992,
-  0x028a, 0x499a,
-  0x02c6, 0x35b4,
-  0x02c7, 0x01f8,
-  0x02ca, 0x01f7,
-  0x02cb, 0x01f9,
-  0x02d9, 0x01f6,
-  0x0308, 0x35b3,
-  0x0391, 0x01a1,
-  0x03a3, 0x01b2,
-  0x03b1, 0x01b9,
-  0x03c3, 0x01ca,
-  0x0401, 0x3670,
-  0x0410, 0x366a,
-  0x0416, 0x3671,
-  0x0436, 0x3692,
-  0x0451, 0x3691,
-  0x1ebe, 0x496e,
-  0x1ebf, 0x498d,
-  0x1ec0, 0x4970,
-  0x1ec1, 0x498f,
-  0x2013, 0x0079,
-  0x2014, 0x007b,
-  0x2018, 0x00a6,
-  0x201c, 0x00a8,
-  0x2022, 0x0068,
-  0x2025, 0x006f,
-  0x2026, 0x006e,
-  0x2032, 0x00ad,
-  0x2035, 0x00ac,
-  0x203b, 0x00b1,
-  0x203e, 0x00c3,
-  0x20ac, 0x44c1,
-  0x2103, 0x010a,
-  0x2105, 0x00c2,
-  0x2109, 0x010b,
-  0x2116, 0x36e6,
-  0x2121, 0x36e7,
-  0x2160, 0x0157,
-  0x2170, 0x020e,
-  0x2190, 0x00f8,
-  0x2191, 0x00f5,
-  0x2192, 0x00f7,
-  0x2193, 0x00f6,
-  0x2196, 0x00f9,
-  0x2198, 0x00fc,
-  0x2199, 0x00fb,
-  0x21b8, 0x36ad,
-  0x21e7, 0x36ac,
-  0x221a, 0x00d5,
-  0x221e, 0x00dc,
-  0x221f, 0x00e9,
-  0x2220, 0x00e8,
-  0x2223, 0x00fe,
-  0x2225, 0x00fd,
-  0x2229, 0x00e5,
-  0x222b, 0x00ed,
-  0x222e, 0x00ee,
-  0x2234, 0x00f0,
-  0x2235, 0x00ef,
-  0x223c, 0x00e4,
-  0x2252, 0x00dd,
-  0x2260, 0x00db,
-  0x2261, 0x00de,
-  0x2266, 0x00d9,
-  0x22a5, 0x00e7,
-  0x22bf, 0x00ea,
-  0x2400, 0x0232,
-  0x2421, 0x0252,
-  0x2460, 0x01fa,
-  0x2474, 0x0204,
-  0x2500, 0x0137,
-  0x2502, 0x0138,
-  0x250c, 0x013a,
-  0x2510, 0x013b,
-  0x2514, 0x013c,
-  0x2518, 0x013d,
-  0x251c, 0x0135,
-  0x2524, 0x0134,
-  0x252c, 0x0133,
-  0x2534, 0x0132,
-  0x253c, 0x0131,
-  0x2550, 0x0142,
-  0x2551, 0x370a,
-  0x2552, 0x36f8,
-  0x2553, 0x3701,
-  0x2554, 0x36ef,
-  0x2555, 0x36fa,
-  0x2556, 0x3703,
-  0x2557, 0x36f1,
-  0x2558, 0x36fe,
-  0x2559, 0x3707,
-  0x255a, 0x36f5,
-  0x255b, 0x3700,
-  0x255c, 0x3709,
-  0x255d, 0x36f7,
-  0x255e, 0x0143,
-  0x255f, 0x3704,
-  0x2560, 0x36f2,
-  0x2561, 0x0145,
-  0x2562, 0x3706,
-  0x2563, 0x36f4,
-  0x2564, 0x36f9,
-  0x2565, 0x3702,
-  0x2566, 0x36f0,
-  0x2567, 0x36ff,
-  0x2568, 0x3708,
-  0x2569, 0x36f6,
-  0x256a, 0x0144,
-  0x256b, 0x3705,
-  0x256c, 0x36f3,
-  0x256d, 0x013e,
-  0x256f, 0x0141,
-  0x2570, 0x0140,
-  0x2571, 0x014a,
-  0x2581, 0x0122,
-  0x2589, 0x0130,
-  0x258a, 0x012f,
-  0x258b, 0x012e,
-  0x258c, 0x012d,
-  0x258d, 0x012c,
-  0x258e, 0x012b,
-  0x258f, 0x012a,
-  0x2593, 0x3710,
-  0x2594, 0x0136,
-  0x2595, 0x0139,
-  0x25a0, 0x00be,
-  0x25a1, 0x00bd,
-  0x25b2, 0x00b7,
-  0x25b3, 0x00b6,
-  0x25bc, 0x00c0,
-  0x25bd, 0x00bf,
-  0x25c6, 0x00bc,
-  0x25c7, 0x00bb,
-  0x25cb, 0x00b4,
-  0x25ce, 0x00b8,
-  0x25cf, 0x00b5,
-  0x25e2, 0x0146,
-  0x25e4, 0x0149,
-  0x25e5, 0x0148,
-  0x2605, 0x00ba,
-  0x2606, 0x00b9,
-  0x2609, 0x00f4,
-  0x2640, 0x00f1,
-  0x2641, 0x00f3,
-  0x2642, 0x00f2,
-  0x273d, 0x35c0,
-  0x2e80, 0x44c8,
-  0x2e84, 0x451c,
-  0x2e86, 0x451d,
-  0x2e8a, 0x4520,
-  0x2e8c, 0x4521,
-  0x2e95, 0x4523,
-  0x2e9c, 0x4524,
-  0x2e9d, 0x02dc,
-  0x2ea5, 0x4525,
-  0x2ea7, 0x4526,
-  0x2eaa, 0x4527,
-  0x2eac, 0x4528,
-  0x2eae, 0x4529,
-  0x2eb6, 0x452a,
-  0x2ebc, 0x452b,
-  0x2ebe, 0x452c,
-  0x2ec6, 0x0509,
-  0x2eca, 0x452d,
-  0x2ecc, 0x452e,
-  0x2ecf, 0x4530,
-  0x2ed6, 0x4531,
-  0x2ede, 0x4533,
-  0x2ee3, 0x09f6,
-  0x2f33, 0x0227,
-  0x3000, 0x0063,
-  0x3001, 0x0065,
-  0x3003, 0x00b3,
-  0x3005, 0x35ba,
-  0x3008, 0x0094,
-  0x300a, 0x0090,
-  0x300c, 0x0098,
-  0x300e, 0x009c,
-  0x3010, 0x008c,
-  0x3012, 0x0105,
-  0x3014, 0x0088,
-  0x301d, 0x00aa,
-  0x3021, 0x0161,
-  0x3041, 0x35c1,
-  0x309b, 0x44c6,
-  0x309d, 0x35b7,
-  0x30a1, 0x3614,
-  0x30fc, 0x35bd,
-  0x30fd, 0x35b5,
-  0x3105, 0x01d1,
-  0x3231, 0x36e5,
-  0x32a3, 0x00c1,
-  0x338e, 0x0115,
-  0x339c, 0x0110,
-  0x33a1, 0x0114,
-  0x33c4, 0x0117,
-  0x33ce, 0x0113,
-  0x33d1, 0x00ec,
-  0x33d2, 0x00eb,
-  0x33d5, 0x010f,
-  0x3435, 0x39bd,
-  0x3440, 0x3c67,
-  0x344c, 0x4593,
-  0x3464, 0x3a85,
-  0x3473, 0x3dc5,
-  0x347a, 0x4033,
-  0x347d, 0x4597,
-  0x347e, 0x46a3,
-  0x3493, 0x439e,
-  0x3496, 0x37dc,
-  0x34a5, 0x4598,
-  0x34af, 0x3c7f,
-  0x34bc, 0x4380,
-  0x34c1, 0x44fb,
-  0x34c8, 0x3d00,
-  0x34df, 0x3ea4,
-  0x34e4, 0x3e54,
-  0x34fb, 0x3dca,
-  0x3506, 0x4336,
-  0x353e, 0x44e7,
-  0x3551, 0x45a1,
-  0x3553, 0x43a5,
-  0x3561, 0x40d8,
-  0x356d, 0x45a4,
-  0x3570, 0x3b2f,
-  0x3572, 0x45a5,
-  0x3577, 0x3ecb,
-  0x3578, 0x4379,
-  0x3584, 0x39fb,
-  0x3597, 0x3b2d,
-  0x3598, 0x45b0,
-  0x35a1, 0x40e2,
-  0x35a5, 0x45b1,
-  0x35ad, 0x3efc,
-  0x35bf, 0x45b2,
-  0x35c1, 0x4580,
-  0x35c5, 0x45b4,
-  0x35c7, 0x459f,
-  0x35ca, 0x3e43,
-  0x35ce, 0x3e81,
-  0x35d2, 0x3fc9,
-  0x35d6, 0x3fb5,
-  0x35db, 0x470d,
-  0x35dd, 0x43ac,
-  0x35f1, 0x4696,
-  0x35f2, 0x4627,
-  0x35f3, 0x3f6c,
-  0x35fb, 0x45c8,
-  0x35fe, 0x3f6a,
-  0x3609, 0x45f5,
-  0x3618, 0x4871,
-  0x361a, 0x461a,
-  0x3623, 0x40c6,
-  0x362d, 0x3e86,
-  0x3635, 0x492e,
-  0x3639, 0x4165,
-  0x363e, 0x3a08,
-  0x3647, 0x4806,
-  0x3648, 0x3806,
-  0x3649, 0x4013,
-  0x364e, 0x4698,
-  0x365f, 0x3df3,
-  0x367a, 0x3ee3,
-  0x3681, 0x45a6,
-  0x369a, 0x3c71,
-  0x36a5, 0x4902,
-  0x36aa, 0x3b30,
-  0x36ac, 0x4900,
-  0x36b0, 0x3cdf,
-  0x36b1, 0x40cd,
-  0x36b5, 0x3bc2,
-  0x36b9, 0x4887,
-  0x36bc, 0x3cff,
-  0x36c1, 0x37c5,
-  0x36c3, 0x40e5,
-  0x36c4, 0x3905,
-  0x36c5, 0x4296,
-  0x36c7, 0x3d3a,
-  0x36c8, 0x4820,
-  0x36d3, 0x3a38,
-  0x36d4, 0x3bb3,
-  0x36d6, 0x3d0c,
-  0x36dd, 0x3a36,
-  0x36e1, 0x397c,
-  0x36e2, 0x3cdd,
-  0x36e5, 0x4216,
-  0x36e6, 0x40fc,
-  0x36f5, 0x3a18,
-  0x3701, 0x3a34,
-  0x3703, 0x460f,
-  0x3708, 0x40ff,
-  0x370a, 0x3cd5,
-  0x370d, 0x4238,
-  0x371c, 0x3dfe,
-  0x3722, 0x3979,
-  0x3723, 0x3980,
-  0x3725, 0x3849,
-  0x372c, 0x3c8c,
-  0x372d, 0x3d37,
-  0x3730, 0x495c,
-  0x3732, 0x4106,
-  0x3733, 0x3997,
-  0x373a, 0x3e56,
-  0x3740, 0x4202,
-  0x3743, 0x4036,
-  0x3762, 0x3db6,
-  0x376f, 0x47cb,
-  0x3797, 0x45ed,
-  0x37a0, 0x3a28,
-  0x37b9, 0x43b7,
-  0x37be, 0x393e,
-  0x37f2, 0x3ba1,
-  0x37f8, 0x42d2,
-  0x37fb, 0x3ef5,
-  0x380f, 0x462c,
-  0x3819, 0x39af,
-  0x3820, 0x462f,
-  0x382d, 0x412e,
-  0x3836, 0x4133,
-  0x3838, 0x43bb,
-  0x3863, 0x46c3,
-  0x38a0, 0x4145,
-  0x38c3, 0x3912,
-  0x38cc, 0x4076,
-  0x38d1, 0x3a95,
-  0x38fa, 0x44eb,
-  0x3908, 0x4632,
-  0x3914, 0x43be,
-  0x3927, 0x3c31,
-  0x3932, 0x4182,
-  0x393f, 0x4633,
-  0x394d, 0x4634,
-  0x3963, 0x4163,
-  0x3980, 0x3874,
-  0x3989, 0x4638,
-  0x398a, 0x3ce8,
-  0x3992, 0x4376,
-  0x3999, 0x39ba,
-  0x399b, 0x3db3,
-  0x39a1, 0x3e19,
-  0x39a4, 0x3e0f,
-  0x39b8, 0x463b,
-  0x39dc, 0x3ece,
-  0x39e2, 0x46c8,
-  0x39e5, 0x393b,
-  0x39ec, 0x4310,
-  0x39f8, 0x463e,
-  0x39fb, 0x4345,
-  0x39fe, 0x4368,
-  0x3a01, 0x41e0,
-  0x3a03, 0x4640,
-  0x3a06, 0x4377,
-  0x3a17, 0x4190,
-  0x3a18, 0x438f,
-  0x3a29, 0x3a5e,
-  0x3a2a, 0x3edf,
-  0x3a34, 0x4319,
-  0x3a4b, 0x4644,
-  0x3a52, 0x3ed3,
-  0x3a57, 0x419e,
-  0x3a5c, 0x3fc4,
-  0x3a5e, 0x3b07,
-  0x3a66, 0x419c,
-  0x3a67, 0x4333,
-  0x3a97, 0x4647,
-  0x3aab, 0x4091,
-  0x3abd, 0x4649,
-  0x3ade, 0x414c,
-  0x3ae0, 0x3a7a,
-  0x3af0, 0x46b2,
-  0x3af2, 0x464c,
-  0x3afb, 0x3af2,
-  0x3b0e, 0x38e8,
-  0x3b19, 0x46c5,
-  0x3b22, 0x464e,
-  0x3b2b, 0x4956,
-  0x3b39, 0x474b,
-  0x3b42, 0x4650,
-  0x3b58, 0x4652,
-  0x3b60, 0x393a,
-  0x3b71, 0x4656,
-  0x3b72, 0x4655,
-  0x3b7b, 0x4657,
-  0x3b7c, 0x385a,
-  0x3b80, 0x41e2,
-  0x3b96, 0x3a9c,
-  0x3b99, 0x3a98,
-  0x3ba1, 0x41e9,
-  0x3bbc, 0x43c8,
-  0x3bbe, 0x3db1,
-  0x3bc2, 0x4134,
-  0x3bc4, 0x3aa0,
-  0x3bd7, 0x3aac,
-  0x3bdd, 0x465f,
-  0x3bec, 0x4664,
-  0x3bf2, 0x4666,
-  0x3bf3, 0x41f3,
-  0x3bf4, 0x3a6e,
-  0x3c0d, 0x41f7,
-  0x3c11, 0x3e40,
-  0x3c15, 0x3998,
-  0x3c54, 0x3e00,
-  0x3ccb, 0x4670,
-  0x3ccd, 0x3ce5,
-  0x3cd1, 0x4003,
-  0x3cd6, 0x3cf7,
-  0x3cdc, 0x404e,
-  0x3ceb, 0x4217,
-  0x3cef, 0x4675,
-  0x3d13, 0x3773,
-  0x3d1d, 0x393c,
-  0x3d32, 0x4957,
-  0x3d3b, 0x4245,
-  0x3d46, 0x4685,
-  0x3d4c, 0x3ceb,
-  0x3d4e, 0x4242,
-  0x3d51, 0x38ea,
-  0x3d5f, 0x4159,
-  0x3d62, 0x3c5e,
-  0x3d69, 0x3cea,
-  0x3d6a, 0x4689,
-  0x3d6f, 0x3cfc,
-  0x3d75, 0x468a,
-  0x3d7d, 0x3c2f,
-  0x3d85, 0x494b,
-  0x3d8a, 0x468d,
-  0x3d8f, 0x3abd,
-  0x3d91, 0x468f,
-  0x3da5, 0x3d56,
-  0x3dad, 0x4699,
-  0x3db4, 0x40a6,
-  0x3dbf, 0x37d0,
-  0x3dc6, 0x48de,
-  0x3dc7, 0x4164,
-  0x3dcc, 0x3d6f,
-  0x3dcd, 0x3af3,
-  0x3dd3, 0x37e1,
-  0x3ddb, 0x3fff,
-  0x3de7, 0x3999,
-  0x3de8, 0x425d,
-  0x3deb, 0x3e5a,
-  0x3df3, 0x46d4,
-  0x3df7, 0x48ab,
-  0x3dfc, 0x462b,
-  0x3dfd, 0x3c14,
-  0x3e06, 0x491d,
-  0x3e40, 0x4169,
-  0x3e43, 0x436d,
-  0x3e48, 0x4595,
-  0x3e55, 0x427f,
-  0x3e74, 0x3ee2,
-  0x3ea8, 0x4304,
-  0x3ea9, 0x46ed,
-  0x3eaa, 0x4075,
-  0x3ead, 0x3b9d,
-  0x3eb1, 0x3ad8,
-  0x3eb8, 0x3a4b,
-  0x3ebf, 0x3b0b,
-  0x3ec2, 0x3bd8,
-  0x3ec7, 0x3975,
-  0x3eca, 0x46f1,
-  0x3ecc, 0x3be2,
-  0x3ed0, 0x3854,
-  0x3ed1, 0x46f2,
-  0x3ed6, 0x3cad,
-  0x3ed7, 0x429f,
-  0x3eda, 0x3d02,
-  0x3ede, 0x39f2,
-  0x3ee1, 0x3ca8,
-  0x3ee2, 0x46f6,
-  0x3ee7, 0x3bdc,
-  0x3ee9, 0x3ca4,
-  0x3eeb, 0x396a,
-  0x3ef0, 0x46f7,
-  0x3ef3, 0x3add,
-  0x3ef4, 0x46f8,
-  0x3efa, 0x46f9,
-  0x3efc, 0x3be8,
-  0x3eff, 0x3af5,
-  0x3f00, 0x3c0d,
-  0x3f04, 0x42c3,
-  0x3f06, 0x3ad7,
-  0x3f0e, 0x46fb,
-  0x3f53, 0x46fc,
-  0x3f58, 0x3ae9,
-  0x3f59, 0x4089,
-  0x3f63, 0x3ae6,
-  0x3f7c, 0x4700,
-  0x3f93, 0x45cd,
-  0x3fc0, 0x43cf,
-  0x3fd7, 0x43d1,
-  0x3fdc, 0x4704,
-  0x3fe5, 0x46df,
-  0x3fed, 0x4335,
-  0x3ff9, 0x45d7,
-  0x3ffa, 0x4354,
-  0x4004, 0x410e,
-  0x401d, 0x4709,
-  0x4039, 0x470b,
-  0x4045, 0x470c,
-  0x4053, 0x45b6,
-  0x4057, 0x399d,
-  0x4062, 0x3bcb,
-  0x4065, 0x3fd3,
-  0x406a, 0x470f,
-  0x406f, 0x4710,
-  0x40a8, 0x43d5,
-  0x40bb, 0x45c0,
-  0x40bf, 0x3eec,
-  0x40c8, 0x3b0e,
-  0x40d8, 0x41ab,
-  0x40df, 0x3e17,
-  0x40fa, 0x3ebe,
-  0x4103, 0x43d7,
-  0x4104, 0x425c,
-  0x4109, 0x471c,
-  0x410e, 0x3b1b,
-  0x4132, 0x3b25,
-  0x4167, 0x471f,
-  0x416c, 0x38ae,
-  0x416e, 0x3b23,
-  0x417f, 0x3b82,
-  0x4190, 0x46c0,
-  0x41b2, 0x4720,
-  0x41c4, 0x4723,
-  0x41ca, 0x373f,
-  0x41cf, 0x4726,
-  0x41db, 0x37bf,
-  0x41ef, 0x3743,
-  0x41f9, 0x3b3e,
-  0x4211, 0x3b41,
-  0x4240, 0x37f1,
-  0x4260, 0x472b,
-  0x426a, 0x3b55,
-  0x427a, 0x472c,
-  0x428c, 0x472f,
-  0x4294, 0x4731,
-  0x42b5, 0x4010,
-  0x42b9, 0x38a6,
-  0x42bc, 0x3c8a,
-  0x42f4, 0x3bb9,
-  0x42fb, 0x3cee,
-  0x42fc, 0x41e6,
-  0x432b, 0x377d,
-  0x436e, 0x46ca,
-  0x4397, 0x473b,
-  0x43ba, 0x435f,
-  0x43c1, 0x4695,
-  0x43d9, 0x433e,
-  0x43df, 0x3e49,
-  0x43ed, 0x4745,
-  0x43f2, 0x3e48,
-  0x4401, 0x474a,
-  0x4402, 0x3b73,
-  0x4413, 0x474f,
-  0x4425, 0x4751,
-  0x442d, 0x4752,
-  0x447a, 0x37af,
-  0x448f, 0x4758,
-  0x449f, 0x3ae2,
-  0x44a0, 0x37ed,
-  0x44a2, 0x4079,
-  0x44b0, 0x475c,
-  0x44b7, 0x3fa1,
-  0x44c0, 0x3c07,
-  0x44c5, 0x4210,
-  0x44ce, 0x3d23,
-  0x44dd, 0x39dd,
-  0x44df, 0x3d22,
-  0x44e4, 0x37e2,
-  0x44e9, 0x41cf,
-  0x44ea, 0x3b71,
-  0x44eb, 0x3cf2,
-  0x44ec, 0x3eb4,
-  0x44f4, 0x3992,
-  0x4503, 0x469f,
-  0x4504, 0x4763,
-  0x4509, 0x3e50,
-  0x450b, 0x37d4,
-  0x4516, 0x37f9,
-  0x451d, 0x3767,
-  0x4527, 0x37f7,
-  0x452e, 0x3cd3,
-  0x4533, 0x3c51,
-  0x453b, 0x476a,
-  0x453d, 0x38c4,
-  0x453f, 0x3e12,
-  0x4543, 0x37f3,
-  0x4551, 0x3ae4,
-  0x4552, 0x40b3,
-  0x4555, 0x423e,
-  0x455c, 0x378b,
-  0x4562, 0x4940,
-  0x456a, 0x3804,
-  0x4577, 0x476e,
-  0x4585, 0x38c5,
-  0x45e9, 0x3ee4,
-  0x4606, 0x4773,
-  0x460f, 0x3815,
-  0x4615, 0x3843,
-  0x4617, 0x4774,
-  0x465b, 0x381d,
-  0x467a, 0x39e9,
-  0x4680, 0x3d01,
-  0x46cf, 0x3ba0,
-  0x46d0, 0x3dfa,
-  0x46f5, 0x3b9f,
-  0x4713, 0x3833,
-  0x4718, 0x3dc7,
-  0x474e, 0x3ebc,
-  0x477c, 0x3dcd,
-  0x4798, 0x4781,
-  0x47a6, 0x40a3,
-  0x47b6, 0x3eea,
-  0x47d5, 0x431a,
-  0x47ed, 0x4783,
-  0x47f4, 0x432f,
-  0x4800, 0x461e,
-  0x480b, 0x4352,
-  0x4837, 0x4787,
-  0x485d, 0x410f,
-  0x4871, 0x3d03,
-  0x489b, 0x3bbd,
-  0x48ad, 0x4791,
-  0x48ae, 0x494d,
-  0x48d0, 0x3da7,
-  0x48dd, 0x4120,
-  0x48ed, 0x4288,
-  0x48f3, 0x3ec1,
-  0x48fa, 0x3e44,
-  0x4906, 0x3bc7,
-  0x4911, 0x4584,
-  0x491e, 0x4794,
-  0x4925, 0x3c0f,
-  0x492a, 0x46ae,
-  0x492d, 0x46cd,
-  0x4935, 0x3cc3,
-  0x493c, 0x3bf8,
-  0x493e, 0x3d06,
-  0x4945, 0x47a3,
-  0x4951, 0x47a4,
-  0x4953, 0x42ad,
-  0x4965, 0x3899,
-  0x496a, 0x47a9,
-  0x4972, 0x3a24,
-  0x4989, 0x379b,
-  0x49a1, 0x38b7,
-  0x49a7, 0x47ae,
-  0x49df, 0x38aa,
-  0x49e5, 0x47b1,
-  0x49e7, 0x4621,
-  0x4a0f, 0x38c3,
-  0x4a1d, 0x3bec,
-  0x4a24, 0x47b2,
-  0x4a35, 0x47b4,
-  0x4a96, 0x3ce7,
-  0x4ab4, 0x4361,
-  0x4ab8, 0x3da8,
-  0x4ad1, 0x38e3,
-  0x4ae4, 0x47b7,
-  0x4aff, 0x38f2,
-  0x4b19, 0x47b9,
-  0x4b2c, 0x461f,
-  0x4b37, 0x41a9,
-  0x4b6f, 0x3c16,
-  0x4b70, 0x47c0,
-  0x4b72, 0x38fc,
-  0x4b7b, 0x3c8d,
-  0x4b7e, 0x400a,
-  0x4b8e, 0x39f7,
-  0x4b90, 0x3c20,
-  0x4b93, 0x3a8c,
-  0x4b96, 0x3942,
-  0x4b97, 0x3c24,
-  0x4b9d, 0x47c2,
-  0x4bbd, 0x3c23,
-  0x4bbe, 0x3954,
-  0x4bc0, 0x3ddc,
-  0x4c04, 0x3fbb,
-  0x4c07, 0x3fb7,
-  0x4c0e, 0x390c,
-  0x4c3b, 0x3f3c,
-  0x4c3e, 0x457b,
-  0x4c5b, 0x3ed9,
-  0x4c6d, 0x47c9,
-  0x4c7d, 0x3e66,
-  0x4ca4, 0x48be,
-  0x4cae, 0x3c42,
-  0x4cb0, 0x3c45,
-  0x4cb7, 0x3e21,
-  0x4ccd, 0x4578,
-  0x4ce1, 0x3ef3,
-  0x4ced, 0x40ab,
-  0x4d09, 0x3ed6,
-  0x4d10, 0x4117,
-  0x4d34, 0x3935,
-  0x4d91, 0x43f5,
-  0x4d9c, 0x48c4,
-  0x4e00, 0x0253,
-  0x4e01, 0x0255,
-  0x4e03, 0x0256,
-  0x4e04, 0x48fe,
-  0x4e07, 0x1771,
-  0x4e08, 0x0269,
-  0x4e09, 0x0267,
-  0x4e0a, 0x026a,
-  0x4e0b, 0x0268,
-  0x4e0c, 0x1772,
-  0x4e0d, 0x0294,
-  0x4e0e, 0x177a,
-  0x4e0f, 0x1778,
-  0x4e10, 0x0293,
-  0x4e11, 0x0292,
-  0x4e14, 0x02f2,
-  0x4e15, 0x02f1,
-  0x4e16, 0x02f0,
-  0x4e18, 0x02f3,
-  0x4e19, 0x02ef,
-  0x4e1a, 0x48fd,
-  0x4e1c, 0x48e0,
-  0x4e1e, 0x036e,
-  0x4e21, 0x3d6d,
-  0x4e24, 0x458d,
-  0x4e26, 0x0528,
-  0x4e28, 0x0218,
-  0x4e2a, 0x3f57,
-  0x4e2b, 0x026b,
-  0x4e2c, 0x44f3,
-  0x4e2d, 0x0295,
-  0x4e2e, 0x177b,
-  0x4e30, 0x0296,
-  0x4e31, 0x178e,
-  0x4e32, 0x0415,
-  0x4e33, 0x18f4,
-  0x4e36, 0x0219,
-  0x4e37, 0x4517,
-  0x4e38, 0x026c,
-  0x4e39, 0x0297,
-  0x4e3b, 0x02f4,
-  0x4e3c, 0x178f,
-  0x4e3d, 0x4537,
-  0x4e3f, 0x021a,
-  0x4e41, 0x36af,
-  0x4e42, 0x176c,
-  0x4e43, 0x0257,
-  0x4e45, 0x026e,
-  0x4e47, 0x1773,
-  0x4e48, 0x026f,
-  0x4e49, 0x408e,
-  0x4e4b, 0x0298,
-  0x4e4d, 0x02f5,
-  0x4e4e, 0x02f7,
-  0x4e4f, 0x02f6,
-  0x4e52, 0x0370,
-  0x4e56, 0x0529,
-  0x4e58, 0x0831,
-  0x4e59, 0x0254,
-  0x4e5a, 0x36b1,
-  0x4e5b, 0x44e5,
-  0x4e5c, 0x176d,
-  0x4e5d, 0x0258,
-  0x4e5e, 0x0271,
-  0x4e5f, 0x0270,
-  0x4e69, 0x0372,
-  0x4e6a, 0x3de5,
-  0x4e73, 0x052a,
-  0x4e78, 0x3d8e,
-  0x4e7e, 0x09fb,
-  0x4e7f, 0x1e35,
-  0x4e80, 0x458e,
-  0x4e81, 0x43bc,
-  0x4e82, 0x0dbe,
-  0x4e83, 0x2361,
-  0x4e85, 0x021b,
-  0x4e86, 0x0259,
-  0x4e87, 0x458f,
-  0x4e88, 0x029a,
-  0x4e89, 0x459c,
-  0x4e8b, 0x052b,
-  0x4e8c, 0x025a,
-  0x4e8d, 0x1774,
-  0x4e8e, 0x0272,
-  0x4e91, 0x029b,
-  0x4e92, 0x029d,
-  0x4e93, 0x177c,
-  0x4e94, 0x029e,
-  0x4e95, 0x029c,
-  0x4e98, 0x39c4,
-  0x4e99, 0x0373,
-  0x4e9a, 0x48d5,
-  0x4e9b, 0x052c,
-  0x4e9e, 0x052d,
-  0x4e9f, 0x06a3,
-  0x4ea0, 0x021c,
-  0x4ea1, 0x0273,
-  0x4ea2, 0x029f,
-  0x4ea4, 0x0374,
-  0x4ea5, 0x0376,
-  0x4ea6, 0x0375,
-  0x4ea8, 0x0416,
-  0x4eab, 0x052e,
-  0x4ead, 0x06a4,
-  0x4eb3, 0x0832,
-  0x4eb6, 0x2363,
-  0x4eb7, 0x413c,
-  0x4eb9, 0x3377,
-  0x4eba, 0x025b,
-  0x4ebb, 0x44e6,
-  0x4ebc, 0x39b1,
-  0x4ebf, 0x4590,
-  0x4ec0, 0x02a1,
-  0x4ec1, 0x02a0,
-  0x4ec2, 0x177d,
-  0x4ec3, 0x02a2,
-  0x4ec4, 0x02a8,
-  0x4ec6, 0x02a3,
-  0x4ec8, 0x177f,
-  0x4ec9, 0x177e,
-  0x4eca, 0x02a6,
-  0x4ecd, 0x02a5,
-  0x4ece, 0x3f62,
-  0x4ed4, 0x02fa,
-  0x4ed8, 0x02f9,
-  0x4ed9, 0x0300,
-  0x4eda, 0x1795,
-  0x4edc, 0x1791,
-  0x4edd, 0x1794,
-  0x4ede, 0x0301,
-  0x4edf, 0x0311,
-  0x4ee1, 0x1793,
-  0x4ee3, 0x02fe,
-  0x4ee5, 0x02f8,
-  0x4ee8, 0x1790,
-  0x4ee9, 0x1792,
-  0x4eea, 0x48cb,
-  0x4eeb, 0x4591,
-  0x4eee, 0x3d76,
-  0x4ef0, 0x0383,
-  0x4ef1, 0x17ba,
-  0x4ef2, 0x0380,
-  0x4ef3, 0x0384,
-  0x4ef4, 0x17c4,
-  0x4ef5, 0x17b8,
-  0x4ef6, 0x0381,
-  0x4ef7, 0x17bc,
-  0x4ef8, 0x39ad,
-  0x4efb, 0x0382,
-  0x4efd, 0x0385,
-  0x4eff, 0x0377,
-  0x4f00, 0x17bb,
-  0x4f01, 0x0386,
-  0x4f02, 0x17bf,
-  0x4f03, 0x39c8,
-  0x4f04, 0x17c3,
-  0x4f05, 0x17c0,
-  0x4f08, 0x17bd,
-  0x4f09, 0x0378,
-  0x4f0a, 0x037a,
-  0x4f0b, 0x0387,
-  0x4f0d, 0x037c,
-  0x4f0e, 0x17b5,
-  0x4f0f, 0x037f,
-  0x4f10, 0x037d,
-  0x4f12, 0x17c5,
-  0x4f13, 0x17c2,
-  0x4f14, 0x17b9,
-  0x4f15, 0x037b,
-  0x4f18, 0x17b6,
-  0x4f19, 0x0379,
-  0x4f1a, 0x453c,
-  0x4f1d, 0x17be,
-  0x4f22, 0x17c1,
-  0x4f28, 0x453d,
-  0x4f29, 0x39be,
-  0x4f2c, 0x17b7,
-  0x4f2d, 0x182f,
-  0x4f2f, 0x042c,
-  0x4f30, 0x041f,
-  0x4f32, 0x393d,
-  0x4f33, 0x1830,
-  0x4f34, 0x041c,
-  0x4f36, 0x042e,
-  0x4f37, 0x4592,
-  0x4f38, 0x0424,
-  0x4f39, 0x3f65,
-  0x4f3a, 0x0423,
-  0x4f3b, 0x1824,
-  0x4f3c, 0x0427,
-  0x4f3d, 0x0422,
-  0x4f3e, 0x1829,
-  0x4f3f, 0x1831,
-  0x4f41, 0x182d,
-  0x4f42, 0x39cb,
-  0x4f43, 0x0425,
-  0x4f45, 0x3b8f,
-  0x4f46, 0x0428,
-  0x4f47, 0x0419,
-  0x4f48, 0x0431,
-  0x4f49, 0x1826,
-  0x4f4b, 0x39b4,
-  0x4f4c, 0x1900,
-  0x4f4d, 0x0417,
-  0x4f4e, 0x042d,
-  0x4f4f, 0x0418,
-  0x4f50, 0x0420,
-  0x4f52, 0x182b,
-  0x4f53, 0x1827,
-  0x4f54, 0x0426,
-  0x4f55, 0x041e,
-  0x4f56, 0x1823,
-  0x4f57, 0x041a,
-  0x4f58, 0x182e,
-  0x4f59, 0x042f,
-  0x4f5a, 0x0432,
-  0x4f5b, 0x041d,
-  0x4f5c, 0x042a,
-  0x4f5d, 0x0430,
-  0x4f5e, 0x041b,
-  0x4f5f, 0x182c,
-  0x4f60, 0x042b,
-  0x4f61, 0x1832,
-  0x4f62, 0x1825,
-  0x4f63, 0x0429,
-  0x4f64, 0x1828,
-  0x4f67, 0x182a,
-  0x4f69, 0x053d,
-  0x4f6a, 0x1902,
-  0x4f6b, 0x190e,
-  0x4f6c, 0x0535,
-  0x4f6e, 0x190f,
-  0x4f6f, 0x0530,
-  0x4f70, 0x053a,
-  0x4f72, 0x3c72,
-  0x4f73, 0x0533,
-  0x4f74, 0x18fc,
-  0x4f75, 0x053b,
-  0x4f76, 0x18fb,
-  0x4f77, 0x18ff,
-  0x4f78, 0x1906,
-  0x4f79, 0x1904,
-  0x4f7a, 0x0543,
-  0x4f7b, 0x053e,
-  0x4f7c, 0x18f6,
-  0x4f7d, 0x18f8,
-  0x4f7e, 0x0540,
-  0x4f7f, 0x0534,
-  0x4f80, 0x18f9,
-  0x4f81, 0x1905,
-  0x4f82, 0x190c,
-  0x4f83, 0x0539,
-  0x4f84, 0x18fe,
-  0x4f85, 0x18f7,
-  0x4f86, 0x0538,
-  0x4f87, 0x18fa,
-  0x4f88, 0x053c,
-  0x4f89, 0x18fd,
-  0x4f8a, 0x39b5,
-  0x4f8b, 0x0537,
-  0x4f8d, 0x0532,
-  0x4f8f, 0x0541,
-  0x4f90, 0x1907,
-  0x4f91, 0x0542,
-  0x4f92, 0x190b,
-  0x4f94, 0x1909,
-  0x4f95, 0x190d,
-  0x4f96, 0x053f,
-  0x4f97, 0x1901,
-  0x4f98, 0x18f5,
-  0x4f9a, 0x1903,
-  0x4f9b, 0x0536,
-  0x4f9c, 0x1908,
-  0x4f9d, 0x0531,
-  0x4f9e, 0x190a,
-  0x4fa2, 0x39c7,
-  0x4fa8, 0x453e,
-  0x4fab, 0x4022,
-  0x4fae, 0x06b4,
-  0x4faf, 0x06a8,
-  0x4fb0, 0x3d4a,
-  0x4fb2, 0x1a5d,
-  0x4fb3, 0x1a65,
-  0x4fb5, 0x06a7,
-  0x4fb6, 0x06af,
-  0x4fb7, 0x06bb,
-  0x4fb9, 0x1a6b,
-  0x4fba, 0x1a69,
-  0x4fbb, 0x1a64,
-  0x4fbd, 0x4594,
-  0x4fbf, 0x06a9,
-  0x4fc0, 0x1a6a,
-  0x4fc1, 0x1a60,
-  0x4fc2, 0x06b7,
-  0x4fc3, 0x06ae,
-  0x4fc4, 0x06b6,
-  0x4fc5, 0x1a5b,
-  0x4fc7, 0x1a67,
-  0x4fc8, 0x46e8,
-  0x4fc9, 0x1a5e,
-  0x4fca, 0x06b2,
-  0x4fcb, 0x1a5f,
-  0x4fcc, 0x39cf,
-  0x4fcd, 0x1a5a,
-  0x4fce, 0x06b9,
-  0x4fcf, 0x06ac,
-  0x4fd0, 0x06b5,
-  0x4fd1, 0x06ab,
-  0x4fd3, 0x1a5c,
-  0x4fd4, 0x1a61,
-  0x4fd6, 0x1a68,
-  0x4fd7, 0x06b3,
-  0x4fd8, 0x06b0,
-  0x4fd9, 0x1a63,
-  0x4fda, 0x06b8,
-  0x4fdb, 0x1a66,
-  0x4fdc, 0x1a62,
-  0x4fdd, 0x06ad,
-  0x4fde, 0x06ba,
-  0x4fdf, 0x06b1,
-  0x4fe0, 0x06aa,
-  0x4fe1, 0x06a6,
-  0x4fe4, 0x3c66,
-  0x4fe5, 0x39d0,
-  0x4fec, 0x1a6c,
-  0x4fee, 0x084c,
-  0x4fef, 0x0836,
-  0x4ff1, 0x0846,
-  0x4ff2, 0x3f28,
-  0x4ff3, 0x084b,
-  0x4ff4, 0x1c24,
-  0x4ff5, 0x1c23,
-  0x4ff6, 0x1c28,
-  0x4ff8, 0x0839,
-  0x4ff9, 0x37b3,
-  0x4ffa, 0x0842,
-  0x4ffd, 0x3f26,
-  0x4ffe, 0x084f,
-  0x5000, 0x0843,
-  0x5003, 0x4596,
-  0x5005, 0x1c1d,
-  0x5006, 0x083c,
-  0x5007, 0x1c1e,
-  0x5008, 0x4024,
-  0x5009, 0x0851,
-  0x500b, 0x0848,
-  0x500c, 0x0833,
-  0x500e, 0x1c31,
-  0x500f, 0x0a0c,
-  0x5011, 0x0841,
-  0x5012, 0x0840,
-  0x5013, 0x1c1f,
-  0x5014, 0x0844,
-  0x5015, 0x1e45,
-  0x5016, 0x083b,
-  0x5017, 0x1c2a,
-  0x5018, 0x084a,
-  0x5019, 0x0849,
-  0x501a, 0x083f,
-  0x501b, 0x1c22,
-  0x501c, 0x1c2b,
-  0x501e, 0x1c1c,
-  0x501f, 0x083e,
-  0x5020, 0x1c2c,
-  0x5021, 0x0847,
-  0x5022, 0x1c20,
-  0x5023, 0x0835,
-  0x5025, 0x0838,
-  0x5026, 0x0837,
-  0x5027, 0x1c2d,
-  0x5028, 0x0845,
-  0x5029, 0x083a,
-  0x502a, 0x084e,
-  0x502b, 0x0850,
-  0x502c, 0x1c27,
-  0x502d, 0x084d,
-  0x502e, 0x39cc,
-  0x502f, 0x1c2f,
-  0x5030, 0x1c21,
-  0x5031, 0x1c30,
-  0x5033, 0x1c25,
-  0x5034, 0x3910,
-  0x5035, 0x1c2e,
-  0x5037, 0x1c26,
-  0x503c, 0x083d,
-  0x5040, 0x1e4d,
-  0x5041, 0x1e41,
-  0x5043, 0x0a00,
-  0x5045, 0x1e46,
-  0x5046, 0x1e4c,
-  0x5047, 0x09ff,
-  0x5048, 0x1e3f,
-  0x5049, 0x0a03,
-  0x504a, 0x1e43,
-  0x504b, 0x1e3c,
-  0x504c, 0x0a01,
-  0x504d, 0x1e40,
-  0x504e, 0x0a06,
-  0x504f, 0x0a0b,
-  0x5051, 0x1e51,
-  0x5053, 0x1e3b,
-  0x5055, 0x0a07,
-  0x5056, 0x3f2c,
-  0x5057, 0x1e50,
-  0x5058, 0x39d1,
-  0x505a, 0x0a02,
-  0x505b, 0x1e42,
-  0x505c, 0x09fe,
-  0x505d, 0x1e3d,
-  0x505e, 0x1e39,
-  0x505f, 0x1e47,
-  0x5060, 0x1e3a,
-  0x5061, 0x1e38,
-  0x5062, 0x1e44,
-  0x5063, 0x1e4a,
-  0x5065, 0x0a04,
-  0x5066, 0x3dc9,
-  0x5068, 0x20b8,
-  0x5069, 0x1e48,
-  0x506a, 0x1e37,
-  0x506b, 0x1e49,
-  0x506c, 0x39cd,
-  0x506d, 0x0a0e,
-  0x506e, 0x1e4e,
-  0x506f, 0x0a0d,
-  0x5070, 0x1e36,
-  0x5072, 0x1e3e,
-  0x5073, 0x1e4f,
-  0x5074, 0x0a09,
-  0x5075, 0x0a08,
-  0x5076, 0x0a05,
-  0x5077, 0x0a0a,
-  0x507a, 0x09fc,
-  0x507d, 0x09fd,
-  0x5080, 0x0bec,
-  0x5081, 0x39ce,
-  0x5082, 0x20bb,
-  0x5083, 0x20b4,
-  0x5085, 0x0be9,
-  0x5087, 0x20bc,
-  0x5088, 0x439c,
-  0x508b, 0x20b2,
-  0x508c, 0x20b5,
-  0x508d, 0x0be8,
-  0x508e, 0x20b6,
-  0x5090, 0x41ec,
-  0x5091, 0x0beb,
-  0x5092, 0x20ba,
-  0x5094, 0x20b0,
-  0x5095, 0x20af,
-  0x5096, 0x0bed,
-  0x5098, 0x0bee,
-  0x5099, 0x0bea,
-  0x509a, 0x0bef,
-  0x509b, 0x20ae,
-  0x509c, 0x20b9,
-  0x509d, 0x20b7,
-  0x509e, 0x20b1,
-  0x50a2, 0x0be7,
-  0x50a3, 0x20b3,
-  0x50a6, 0x3f3f,
-  0x50ac, 0x0dc5,
-  0x50ad, 0x0dbf,
-  0x50ae, 0x2367,
-  0x50af, 0x0dc8,
-  0x50b0, 0x236d,
-  0x50b1, 0x2370,
-  0x50b2, 0x0dc1,
-  0x50b4, 0x236a,
-  0x50b5, 0x0dc0,
-  0x50b6, 0x2373,
-  0x50b7, 0x0dc6,
-  0x50b8, 0x2374,
-  0x50ba, 0x236f,
-  0x50bb, 0x0dc7,
-  0x50bd, 0x2364,
-  0x50be, 0x0dc4,
-  0x50bf, 0x2365,
-  0x50c1, 0x236e,
-  0x50c2, 0x236c,
-  0x50c4, 0x2368,
-  0x50c5, 0x0dc3,
-  0x50c6, 0x2366,
-  0x50c7, 0x0dc9,
-  0x50c8, 0x236b,
-  0x50c9, 0x2372,
-  0x50ca, 0x2369,
-  0x50cb, 0x2371,
-  0x50cd, 0x39c5,
-  0x50ce, 0x0f88,
-  0x50cf, 0x0f85,
-  0x50d0, 0x38d1,
-  0x50d1, 0x0f86,
-  0x50d3, 0x261c,
-  0x50d4, 0x2614,
-  0x50d5, 0x0f84,
-  0x50d6, 0x0f81,
-  0x50d7, 0x2615,
-  0x50d9, 0x3fce,
-  0x50da, 0x0f83,
-  0x50db, 0x2618,
-  0x50dd, 0x261a,
-  0x50de, 0x4031,
-  0x50df, 0x3afd,
-  0x50e0, 0x2621,
-  0x50e1, 0x4171,
-  0x50e3, 0x2620,
-  0x50e4, 0x261b,
-  0x50e5, 0x0f80,
-  0x50e6, 0x2613,
-  0x50e7, 0x0f7e,
-  0x50e8, 0x2616,
-  0x50e9, 0x0f89,
-  0x50ea, 0x2619,
-  0x50ec, 0x261d,
-  0x50ed, 0x0f82,
-  0x50ee, 0x0f7f,
-  0x50ef, 0x261f,
-  0x50f0, 0x261e,
-  0x50f1, 0x0f87,
-  0x50f3, 0x2617,
-  0x50f4, 0x3ce9,
-  0x50f5, 0x1105,
-  0x50f6, 0x2883,
-  0x50f8, 0x2880,
-  0x50f9, 0x1106,
-  0x50fb, 0x1104,
-  0x50fc, 0x39d2,
-  0x50fd, 0x2887,
-  0x50fe, 0x2884,
-  0x50ff, 0x287d,
-  0x5100, 0x1103,
-  0x5101, 0x4032,
-  0x5102, 0x1107,
-  0x5103, 0x287e,
-  0x5104, 0x1102,
-  0x5105, 0x110a,
-  0x5106, 0x2881,
-  0x5108, 0x1108,
-  0x510a, 0x2888,
-  0x510b, 0x2885,
-  0x510d, 0x39c6,
-  0x510e, 0x4034,
-  0x5110, 0x128d,
-  0x5111, 0x2b04,
-  0x5112, 0x128a,
-  0x5113, 0x2b01,
-  0x5114, 0x128c,
-  0x5115, 0x128e,
-  0x5117, 0x2b02,
-  0x5118, 0x128b,
-  0x511a, 0x2b03,
-  0x511c, 0x2b00,
-  0x511f, 0x13b5,
-  0x5120, 0x2d3e,
-  0x5121, 0x13b6,
-  0x5122, 0x2d3c,
-  0x5124, 0x2d3d,
-  0x5125, 0x2d3b,
-  0x5126, 0x2d3a,
-  0x5129, 0x2d3f,
-  0x512a, 0x13b4,
-  0x512b, 0x39ae,
-  0x512d, 0x2f0f,
-  0x5130, 0x287f,
-  0x5131, 0x2f0e,
-  0x5132, 0x13b7,
-  0x5133, 0x1575,
-  0x5134, 0x307a,
-  0x5137, 0x1668,
-  0x5139, 0x32c6,
-  0x513a, 0x32c5,
-  0x513b, 0x16bc,
-  0x513c, 0x16bb,
-  0x513d, 0x340e,
-  0x513f, 0x025c,
-  0x5140, 0x0274,
-  0x5141, 0x02aa,
-  0x5143, 0x02a9,
-  0x5144, 0x0303,
-  0x5145, 0x0302,
-  0x5146, 0x038a,
-  0x5147, 0x0389,
-  0x5148, 0x038b,
-  0x5149, 0x0388,
-  0x514b, 0x0434,
-  0x514c, 0x0433,
-  0x514d, 0x0435,
-  0x5152, 0x0545,
-  0x5154, 0x0544,
-  0x5155, 0x0546,
-  0x5156, 0x439a,
-  0x5157, 0x06bc,
-  0x5159, 0x0119,
-  0x515a, 0x1c32,
-  0x515b, 0x011a,
-  0x515c, 0x0a0f,
-  0x515d, 0x011c,
-  0x515e, 0x011b,
-  0x515f, 0x20bd,
-  0x5160, 0x403a,
-  0x5161, 0x011d,
-  0x5162, 0x0f8a,
-  0x5163, 0x011e,
-  0x5165, 0x025d,
-  0x5167, 0x02ab,
-  0x5168, 0x038c,
-  0x5169, 0x0547,
-  0x516a, 0x403c,
-  0x516b, 0x025e,
-  0x516c, 0x02ae,
-  0x516d, 0x02ac,
-  0x5171, 0x038d,
-  0x5174, 0x453f,
-  0x5175, 0x0436,
-  0x5176, 0x0549,
-  0x5177, 0x0548,
-  0x5178, 0x054a,
-  0x5179, 0x3ace,
-  0x517c, 0x0852,
-  0x5180, 0x128f,
-  0x5182, 0x021d,
-  0x5186, 0x439f,
-  0x5187, 0x1779,
-  0x5188, 0x36b6,
-  0x5189, 0x0304,
-  0x518d, 0x038e,
-  0x518f, 0x1833,
-  0x5191, 0x06be,
-  0x5192, 0x06bd,
-  0x5193, 0x1c34,
-  0x5194, 0x1c33,
-  0x5195, 0x0a10,
-  0x5196, 0x021e,
-  0x5197, 0x02af,
-  0x5198, 0x1780,
-  0x519a, 0x3ea3,
-  0x519c, 0x4540,
-  0x519e, 0x1910,
-  0x51a0, 0x06bf,
-  0x51a2, 0x0855,
-  0x51a4, 0x0853,
-  0x51a7, 0x3ea6,
-  0x51a8, 0x39da,
-  0x51aa, 0x1290,
-  0x51ab, 0x021f,
-  0x51ac, 0x0306,
-  0x51b0, 0x038f,
-  0x51b1, 0x17c6,
-  0x51b2, 0x4048,
-  0x51b3, 0x4051,
-  0x51b4, 0x3d7c,
-  0x51b5, 0x4012,
-  0x51b6, 0x0437,
-  0x51b8, 0x4049,
-  0x51b9, 0x1834,
-  0x51bc, 0x1911,
-  0x51bd, 0x054b,
-  0x51be, 0x1912,
-  0x51c3, 0x39db,
-  0x51c4, 0x1c36,
-  0x51c6, 0x0858,
-  0x51c7, 0x422a,
-  0x51c8, 0x1c38,
-  0x51c9, 0x404b,
-  0x51ca, 0x1c35,
-  0x51cb, 0x0859,
-  0x51cc, 0x0857,
-  0x51cd, 0x0856,
-  0x51ce, 0x1c39,
-  0x51cf, 0x404c,
-  0x51d0, 0x1e52,
-  0x51d1, 0x404d,
-  0x51d2, 0x3dad,
-  0x51d3, 0x404f,
-  0x51d4, 0x20be,
-  0x51d7, 0x2375,
-  0x51d8, 0x2622,
-  0x51db, 0x459a,
-  0x51dc, 0x110b,
-  0x51dd, 0x1291,
-  0x51de, 0x2b05,
-  0x51df, 0x424f,
-  0x51e0, 0x025f,
-  0x51e1, 0x026d,
-  0x51e2, 0x4052,
-  0x51e4, 0x4541,
-  0x51ed, 0x4054,
-  0x51f0, 0x0a11,
-  0x51f1, 0x0bf1,
-  0x51f3, 0x0f8b,
-  0x51f4, 0x4178,
-  0x51f5, 0x176e,
-  0x51f6, 0x02b0,
-  0x51f8, 0x0309,
-  0x51f9, 0x0307,
-  0x51fc, 0x459b,
-  0x51fd, 0x054c,
-  0x51fe, 0x3f0a,
-  0x5200, 0x0260,
-  0x5202, 0x36b3,
-  0x5203, 0x0275,
-  0x5205, 0x43a1,
-  0x5206, 0x02b1,
-  0x5209, 0x1797,
-  0x520a, 0x030a,
-  0x520b, 0x4059,
-  0x520c, 0x1796,
-  0x520e, 0x0393,
-  0x5210, 0x17c8,
-  0x5211, 0x0391,
-  0x5213, 0x17c7,
-  0x5216, 0x0394,
-  0x5217, 0x0390,
-  0x521c, 0x1835,
-  0x521d, 0x068b,
-  0x521e, 0x1836,
-  0x521f, 0x3f60,
-  0x5220, 0x4930,
-  0x5221, 0x1837,
-  0x5224, 0x043a,
-  0x5225, 0x0439,
-  0x5226, 0x405a,
-  0x5227, 0x43a2,
-  0x5228, 0x043d,
-  0x5229, 0x043b,
-  0x522e, 0x0552,
-  0x5230, 0x0551,
-  0x5231, 0x1917,
-  0x5232, 0x1914,
-  0x5234, 0x3efb,
-  0x5235, 0x1913,
-  0x5236, 0x0553,
-  0x5237, 0x054f,
-  0x5238, 0x054e,
-  0x523a, 0x0550,
-  0x523b, 0x054d,
-  0x523c, 0x405b,
-  0x5241, 0x0554,
-  0x5243, 0x06c1,
-  0x5244, 0x1a6d,
-  0x5246, 0x1916,
-  0x5247, 0x06c6,
-  0x5249, 0x1a6e,
-  0x524a, 0x06c2,
-  0x524b, 0x06c5,
-  0x524c, 0x06c4,
-  0x524d, 0x06c3,
-  0x524e, 0x06c0,
-  0x5252, 0x1c3c,
-  0x5254, 0x085c,
-  0x5255, 0x1c3f,
-  0x5256, 0x085a,
-  0x5257, 0x405d,
-  0x5259, 0x39e4,
-  0x525a, 0x1c3b,
-  0x525b, 0x085d,
-  0x525c, 0x085b,
-  0x525d, 0x085e,
-  0x525e, 0x1c3d,
-  0x5260, 0x3f29,
-  0x5261, 0x1c3a,
-  0x5262, 0x1c40,
-  0x5268, 0x4619,
-  0x5269, 0x0bf5,
-  0x526a, 0x0a12,
-  0x526b, 0x1e53,
-  0x526c, 0x1e55,
-  0x526d, 0x1e54,
-  0x526e, 0x1e56,
-  0x526f, 0x0a13,
-  0x5272, 0x0bf2,
-  0x5273, 0x3f43,
-  0x5274, 0x0bf3,
-  0x5277, 0x0dcb,
-  0x5278, 0x2377,
-  0x5279, 0x43a3,
-  0x527a, 0x2376,
-  0x527b, 0x2378,
-  0x527d, 0x0dcc,
-  0x527f, 0x0dca,
-  0x5280, 0x2623,
-  0x5282, 0x0f8d,
-  0x5283, 0x0f8c,
-  0x5284, 0x2776,
-  0x5287, 0x110c,
-  0x528a, 0x1110,
-  0x528b, 0x2889,
-  0x528d, 0x110f,
-  0x528f, 0x3dbf,
-  0x5290, 0x459d,
-  0x5291, 0x1292,
-  0x5293, 0x1293,
-  0x5294, 0x405e,
-  0x5296, 0x307c,
-  0x5297, 0x32c8,
-  0x5298, 0x32c7,
-  0x5299, 0x340f,
-  0x529a, 0x3f68,
-  0x529b, 0x0262,
-  0x529f, 0x030c,
-  0x52a0, 0x030b,
-  0x52a1, 0x4542,
-  0x52a3, 0x0395,
-  0x52a4, 0x39e5,
-  0x52a6, 0x17c9,
-  0x52a8, 0x4543,
-  0x52a9, 0x043f,
-  0x52ab, 0x043e,
-  0x52ac, 0x0441,
-  0x52ad, 0x1838,
-  0x52b5, 0x405c,
-  0x52b9, 0x405f,
-  0x52bb, 0x0556,
-  0x52bc, 0x1918,
-  0x52be, 0x0555,
-  0x52c0, 0x1a6f,
-  0x52c1, 0x06ca,
-  0x52c2, 0x1a70,
-  0x52c3, 0x06c9,
-  0x52c5, 0x4060,
-  0x52c7, 0x06c7,
-  0x52c9, 0x06c8,
-  0x52cc, 0x3ee1,
-  0x52cd, 0x1c41,
-  0x52d0, 0x4109,
-  0x52d1, 0x3f2a,
-  0x52d2, 0x0a14,
-  0x52d3, 0x1e58,
-  0x52d5, 0x0a17,
-  0x52d6, 0x1e57,
-  0x52d7, 0x0acf,
-  0x52d8, 0x0a16,
-  0x52d9, 0x0a15,
-  0x52db, 0x0bf8,
-  0x52dd, 0x0bf7,
-  0x52de, 0x0bf6,
-  0x52df, 0x0dcd,
-  0x52e0, 0x4063,
-  0x52e1, 0x39e7,
-  0x52e2, 0x0dd0,
-  0x52e4, 0x0dcf,
-  0x52e6, 0x0dce,
-  0x52e9, 0x2625,
-  0x52eb, 0x2626,
-  0x52ef, 0x288c,
-  0x52f0, 0x1111,
-  0x52f1, 0x288b,
-  0x52f3, 0x1294,
-  0x52f4, 0x2d40,
-  0x52f5, 0x13b8,
-  0x52f7, 0x307d,
-  0x52f8, 0x1609,
-  0x52f9, 0x0220,
-  0x52fa, 0x0276,
-  0x52fb, 0x02b4,
-  0x52fc, 0x1781,
-  0x52fe, 0x02b5,
-  0x5301, 0x3d79,
-  0x5305, 0x030d,
-  0x5308, 0x0396,
-  0x5309, 0x183a,
-  0x530a, 0x1919,
-  0x530d, 0x06cb,
-  0x530e, 0x1c42,
-  0x530f, 0x0a19,
-  0x5310, 0x0a18,
-  0x5311, 0x20c0,
-  0x5312, 0x20bf,
-  0x5315, 0x0263,
-  0x5316, 0x02b7,
-  0x5317, 0x030f,
-  0x5319, 0x0a1a,
-  0x531a, 0x176f,
-  0x531c, 0x1798,
-  0x531d, 0x0310,
-  0x531f, 0x17cb,
-  0x5320, 0x0398,
-  0x5321, 0x0397,
-  0x5322, 0x17ca,
-  0x5323, 0x0442,
-  0x5327, 0x459e,
-  0x532a, 0x085f,
-  0x532c, 0x3f36,
-  0x532d, 0x1e59,
-  0x532f, 0x0dd2,
-  0x5330, 0x2627,
-  0x5331, 0x0f8e,
-  0x5332, 0x3fd0,
-  0x5333, 0x406d,
-  0x5334, 0x2b06,
-  0x5337, 0x31c7,
-  0x5338, 0x0221,
-  0x5339, 0x02b8,
-  0x533b, 0x4544,
-  0x533c, 0x191b,
-  0x533d, 0x1a71,
-  0x533e, 0x0a1d,
-  0x533f, 0x0a1b,
-  0x5341, 0x0264,
-  0x5342, 0x4947,
-  0x5343, 0x0277,
-  0x5344, 0x016b,
-  0x5345, 0x02bb,
-  0x5347, 0x02ba,
-  0x5348, 0x02b9,
-  0x5349, 0x0313,
-  0x534a, 0x0312,
-  0x534c, 0x1799,
-  0x534d, 0x17cc,
-  0x534e, 0x4545,
-  0x5351, 0x055a,
-  0x5352, 0x0557,
-  0x5353, 0x0559,
-  0x5354, 0x0558,
-  0x5357, 0x06cc,
-  0x535a, 0x0bf9,
-  0x535c, 0x0265,
-  0x535d, 0x4501,
-  0x535e, 0x02bc,
-  0x535f, 0x43a7,
-  0x5360, 0x0315,
-  0x5361, 0x0314,
-  0x5363, 0x183b,
-  0x5364, 0x480a,
-  0x5366, 0x055b,
-  0x5367, 0x3ecd,
-  0x5369, 0x0222,
-  0x536c, 0x1782,
-  0x536d, 0x407a,
-  0x536e, 0x0317,
-  0x536f, 0x0316,
-  0x5370, 0x0399,
-  0x5372, 0x183c,
-  0x5373, 0x0443,
-  0x5374, 0x407b,
-  0x5375, 0x0444,
-  0x5377, 0x055c,
-  0x537b, 0x06cd,
-  0x537c, 0x1a72,
-  0x537d, 0x4901,
-  0x537e, 0x407d,
-  0x537f, 0x0860,
-  0x5382, 0x1770,
-  0x5384, 0x02bd,
-  0x538a, 0x17cd,
-  0x538e, 0x183d,
-  0x5392, 0x191c,
-  0x5393, 0x4082,
-  0x5394, 0x191d,
-  0x5396, 0x1a74,
-  0x5397, 0x1a73,
-  0x5398, 0x1a76,
-  0x5399, 0x1a75,
-  0x539a, 0x06ce,
-  0x539c, 0x1e5a,
-  0x539d, 0x0862,
-  0x539e, 0x1c43,
-  0x539f, 0x0861,
-  0x53a0, 0x4084,
-  0x53a2, 0x3e2b,
-  0x53a4, 0x20c1,
-  0x53a5, 0x0bfa,
-  0x53a6, 0x413b,
-  0x53a7, 0x20c2,
-  0x53a8, 0x413e,
-  0x53a9, 0x45a0,
-  0x53aa, 0x3fc6,
-  0x53ab, 0x4085,
-  0x53ac, 0x2628,
-  0x53ad, 0x0f8f,
-  0x53ae, 0x4086,
-  0x53b0, 0x45a2,
-  0x53b2, 0x1112,
-  0x53b4, 0x307e,
-  0x53b6, 0x0223,
-  0x53b9, 0x1783,
-  0x53bb, 0x0318,
-  0x53c1, 0x408b,
-  0x53c2, 0x43a6,
-  0x53c3, 0x0a1e,
-  0x53c5, 0x408c,
-  0x53c8, 0x0266,
-  0x53c9, 0x0278,
-  0x53ca, 0x02bf,
-  0x53cb, 0x02be,
-  0x53cc, 0x38b6,
-  0x53cd, 0x02c0,
-  0x53d0, 0x39fa,
-  0x53d1, 0x4546,
-  0x53d2, 0x3e3d,
-  0x53d4, 0x0560,
-  0x53d6, 0x055f,
-  0x53d7, 0x0561,
-  0x53d8, 0x4547,
-  0x53d9, 0x4090,
-  0x53da, 0x3f39,
-  0x53db, 0x06cf,
-  0x53df, 0x0863,
-  0x53e0, 0x4093,
-  0x53e1, 0x2b07,
-  0x53e2, 0x14c9,
-  0x53e3, 0x0279,
-  0x53e4, 0x031a,
-  0x53e5, 0x0329,
-  0x53e6, 0x0324,
-  0x53e8, 0x031f,
-  0x53e9, 0x031e,
-  0x53ea, 0x0325,
-  0x53eb, 0x0323,
-  0x53ec, 0x031c,
-  0x53ed, 0x032a,
-  0x53ee, 0x031d,
-  0x53ef, 0x0319,
-  0x53f0, 0x0328,
-  0x53f1, 0x0327,
-  0x53f2, 0x0326,
-  0x53f3, 0x031b,
-  0x53f5, 0x0322,
-  0x53f6, 0x4096,
-  0x53f7, 0x3808,
-  0x53f8, 0x0321,
-  0x53fb, 0x032b,
-  0x53fc, 0x0320,
-  0x53fe, 0x40c1,
-  0x5401, 0x03a0,
-  0x5403, 0x03a6,
-  0x5404, 0x03a2,
-  0x5406, 0x03a8,
-  0x5407, 0x17ce,
-  0x5408, 0x03a5,
-  0x5409, 0x039b,
-  0x540a, 0x039e,
-  0x540b, 0x03a1,
-  0x540c, 0x039d,
-  0x540d, 0x03a4,
-  0x540e, 0x03a7,
-  0x540f, 0x039c,
-  0x5410, 0x039f,
-  0x5411, 0x03a3,
-  0x5412, 0x03a9,
-  0x5413, 0x4098,
-  0x5414, 0x3c77,
-  0x5416, 0x3e7f,
-  0x5418, 0x1847,
-  0x5419, 0x1844,
-  0x541a, 0x3e64,
-  0x541b, 0x0451,
-  0x541c, 0x1845,
-  0x541d, 0x0445,
-  0x541e, 0x0447,
-  0x541f, 0x045f,
-  0x5420, 0x045a,
-  0x5421, 0x4203,
-  0x5423, 0x45a3,
-  0x5424, 0x184c,
-  0x5425, 0x1846,
-  0x5426, 0x0449,
-  0x5427, 0x044b,
-  0x5428, 0x184b,
-  0x5429, 0x0452,
-  0x542a, 0x1841,
-  0x542b, 0x045e,
-  0x542c, 0x0460,
-  0x542d, 0x0446,
-  0x542e, 0x0457,
-  0x542f, 0x40ac,
-  0x5430, 0x183f,
-  0x5431, 0x045d,
-  0x5432, 0x3e75,
-  0x5433, 0x044e,
-  0x5435, 0x0458,
-  0x5437, 0x1840,
-  0x5438, 0x0456,
-  0x5439, 0x0454,
-  0x543b, 0x0455,
-  0x543c, 0x045b,
-  0x543d, 0x1848,
-  0x543e, 0x0448,
-  0x5440, 0x045c,
-  0x5441, 0x184a,
-  0x5442, 0x0450,
-  0x5443, 0x044d,
-  0x5445, 0x1843,
-  0x5446, 0x044c,
-  0x5447, 0x184d,
-  0x5448, 0x044f,
-  0x544a, 0x0453,
-  0x544b, 0x3ed1,
-  0x544d, 0x3ea7,
-  0x544e, 0x044a,
-  0x544f, 0x1849,
-  0x5454, 0x1842,
-  0x5460, 0x192e,
-  0x5461, 0x192d,
-  0x5462, 0x0573,
-  0x5463, 0x1930,
-  0x5464, 0x1932,
-  0x5465, 0x1927,
-  0x5466, 0x192a,
-  0x5467, 0x1931,
-  0x5468, 0x0574,
-  0x5469, 0x3f32,
-  0x546a, 0x3d83,
-  0x546b, 0x1924,
-  0x546c, 0x1928,
-  0x546d, 0x409d,
-  0x546f, 0x192c,
-  0x5470, 0x1a85,
-  0x5471, 0x056f,
-  0x5472, 0x1a89,
-  0x5473, 0x0562,
-  0x5474, 0x1929,
-  0x5475, 0x0563,
-  0x5476, 0x0570,
-  0x5477, 0x0569,
-  0x5478, 0x0565,
-  0x547a, 0x1925,
-  0x547b, 0x0568,
-  0x547c, 0x056d,
-  0x547d, 0x0576,
-  0x547e, 0x1926,
-  0x547f, 0x191f,
-  0x5480, 0x0567,
-  0x5481, 0x1920,
-  0x5482, 0x1922,
-  0x5484, 0x056a,
-  0x5485, 0x46d9,
-  0x5486, 0x056c,
-  0x5487, 0x191e,
-  0x5488, 0x1923,
-  0x548b, 0x0575,
-  0x548c, 0x0571,
-  0x548d, 0x192b,
-  0x548e, 0x0577,
-  0x548f, 0x40a1,
-  0x5490, 0x056e,
-  0x5491, 0x1921,
-  0x5492, 0x056b,
-  0x5493, 0x45a7,
-  0x5494, 0x3e98,
-  0x5495, 0x0566,
-  0x5496, 0x0564,
-  0x5497, 0x3e8a,
-  0x5498, 0x192f,
-  0x549a, 0x0572,
-  0x549c, 0x3f66,
-  0x549e, 0x47ed,
-  0x54a0, 0x1a84,
-  0x54a1, 0x1a78,
-  0x54a2, 0x1a87,
-  0x54a3, 0x45a8,
-  0x54a4, 0x40a2,
-  0x54a5, 0x1a7a,
-  0x54a6, 0x06d6,
-  0x54a7, 0x06e4,
-  0x54a8, 0x06d2,
-  0x54a9, 0x06e3,
-  0x54aa, 0x06db,
-  0x54ab, 0x06e0,
-  0x54ac, 0x06d0,
-  0x54ad, 0x1a79,
-  0x54ae, 0x1a7f,
-  0x54af, 0x06df,
-  0x54b0, 0x1a8b,
-  0x54b1, 0x06e1,
-  0x54b2, 0x3744,
-  0x54b3, 0x06d7,
-  0x54b4, 0x45a9,
-  0x54b6, 0x1a81,
-  0x54b7, 0x1a7e,
-  0x54b8, 0x06d5,
-  0x54b9, 0x45aa,
-  0x54ba, 0x1a77,
-  0x54bb, 0x06e2,
-  0x54bc, 0x1a86,
-  0x54bd, 0x06da,
-  0x54be, 0x1a88,
-  0x54bf, 0x06e5,
-  0x54c0, 0x06d1,
-  0x54c1, 0x06dc,
-  0x54c2, 0x06d9,
-  0x54c3, 0x1a7c,
-  0x54c4, 0x06dd,
-  0x54c5, 0x1a82,
-  0x54c7, 0x06d8,
-  0x54c8, 0x06de,
-  0x54c9, 0x06d4,
-  0x54cb, 0x39a3,
-  0x54cc, 0x43a8,
-  0x54cd, 0x3a00,
-  0x54ce, 0x06d3,
-  0x54cf, 0x1a7b,
-  0x54d0, 0x45ab,
-  0x54d6, 0x1a80,
-  0x54da, 0x4923,
-  0x54de, 0x1a8a,
-  0x54e0, 0x1c57,
-  0x54e1, 0x0870,
-  0x54e2, 0x1c45,
-  0x54e3, 0x4341,
-  0x54e4, 0x1c4a,
-  0x54e5, 0x0869,
-  0x54e6, 0x0874,
-  0x54e7, 0x1c48,
-  0x54e8, 0x0864,
-  0x54e9, 0x086e,
-  0x54ea, 0x0873,
-  0x54eb, 0x1c4f,
-  0x54ed, 0x086f,
-  0x54ee, 0x0872,
-  0x54ef, 0x45ac,
-  0x54f1, 0x1c52,
-  0x54f2, 0x086a,
-  0x54f3, 0x1c49,
-  0x54f7, 0x1c55,
-  0x54fa, 0x086c,
-  0x54fb, 0x1c54,
-  0x54fc, 0x0868,
-  0x54fd, 0x0877,
-  0x54ff, 0x1c4c,
-  0x5501, 0x0866,
-  0x5502, 0x3ccc,
-  0x5503, 0x1c59,
-  0x5504, 0x1c4d,
-  0x5505, 0x1c51,
-  0x5506, 0x086b,
-  0x5507, 0x0876,
-  0x5508, 0x1c4e,
-  0x5509, 0x0871,
-  0x550a, 0x1c53,
-  0x550b, 0x1c5a,
-  0x550c, 0x1e69,
-  0x550d, 0x3a73,
-  0x550e, 0x1c58,
-  0x550f, 0x0878,
-  0x5510, 0x0865,
-  0x5511, 0x1c50,
-  0x5512, 0x1c47,
-  0x5513, 0x3ea9,
-  0x5514, 0x086d,
-  0x5517, 0x1c46,
-  0x5518, 0x45ad,
-  0x551a, 0x1c4b,
-  0x551e, 0x3ea8,
-  0x5523, 0x45ae,
-  0x5525, 0x4309,
-  0x5526, 0x1c44,
-  0x5527, 0x0875,
-  0x5528, 0x45af,
-  0x552a, 0x1e61,
-  0x552b, 0x409a,
-  0x552c, 0x0a31,
-  0x552d, 0x1e6f,
-  0x552e, 0x0a2f,
-  0x552f, 0x0a2c,
-  0x5530, 0x1e66,
-  0x5531, 0x0a28,
-  0x5532, 0x1e6a,
-  0x5533, 0x0a33,
-  0x5534, 0x1e60,
-  0x5535, 0x1e65,
-  0x5536, 0x1e64,
-  0x5537, 0x0867,
-  0x5538, 0x0a2e,
-  0x5539, 0x1e6d,
-  0x553b, 0x1e70,
-  0x553c, 0x1e5d,
-  0x553e, 0x0c0c,
-  0x553f, 0x43a9,
-  0x5540, 0x1e71,
-  0x5541, 0x0a34,
-  0x5543, 0x0a26,
-  0x5544, 0x0a23,
-  0x5545, 0x1e68,
-  0x5546, 0x0a20,
-  0x5547, 0x40aa,
-  0x5548, 0x1e6e,
-  0x5549, 0x4068,
-  0x554a, 0x0a27,
-  0x554b, 0x1e72,
-  0x554d, 0x1e5e,
-  0x554e, 0x1e6c,
-  0x554f, 0x0a2a,
-  0x5550, 0x1e5f,
-  0x5551, 0x1e62,
-  0x5552, 0x1e67,
-  0x5553, 0x43ae,
-  0x5555, 0x0a2b,
-  0x5556, 0x0a29,
-  0x5557, 0x0a35,
-  0x555c, 0x0a30,
-  0x555d, 0x40a0,
-  0x555e, 0x0a24,
-  0x555f, 0x0abc,
-  0x5561, 0x0a25,
-  0x5562, 0x1e63,
-  0x5563, 0x0a32,
-  0x5564, 0x0a2d,
-  0x5565, 0x1e6b,
-  0x5566, 0x0a22,
-  0x5569, 0x3e9f,
-  0x556a, 0x0a21,
-  0x556b, 0x3b2e,
-  0x5571, 0x3bc6,
-  0x5572, 0x3e8b,
-  0x5573, 0x3f24,
-  0x5575, 0x1e5b,
-  0x5577, 0x20c7,
-  0x5579, 0x435d,
-  0x557b, 0x0bfb,
-  0x557c, 0x0bfe,
-  0x557d, 0x20d2,
-  0x557e, 0x0c12,
-  0x557f, 0x20d5,
-  0x5580, 0x0bfc,
-  0x5581, 0x20ce,
-  0x5582, 0x0c02,
-  0x5583, 0x0c08,
-  0x5584, 0x0d1b,
-  0x5586, 0x40ae,
-  0x5587, 0x0c06,
-  0x5588, 0x20cb,
-  0x5589, 0x0c13,
-  0x558a, 0x0bff,
-  0x558b, 0x0c07,
-  0x558c, 0x20d3,
-  0x558d, 0x2387,
-  0x558e, 0x20d8,
-  0x558f, 0x20cc,
-  0x5590, 0x430e,
-  0x5591, 0x20c3,
-  0x5592, 0x20d0,
-  0x5593, 0x20ca,
-  0x5594, 0x0c05,
-  0x5595, 0x20d6,
-  0x5598, 0x0c01,
-  0x5599, 0x0c15,
-  0x559a, 0x0c0e,
-  0x559c, 0x0c03,
-  0x559d, 0x0c00,
-  0x559f, 0x0c0b,
-  0x55a1, 0x20d7,
-  0x55a2, 0x20c9,
-  0x55a3, 0x20cf,
-  0x55a4, 0x20d1,
-  0x55a5, 0x20c5,
-  0x55a6, 0x20d4,
-  0x55a7, 0x0bfd,
-  0x55a8, 0x20c4,
-  0x55a9, 0x40af,
-  0x55aa, 0x0c04,
-  0x55ab, 0x0c14,
-  0x55ac, 0x0c10,
-  0x55ad, 0x20c6,
-  0x55ae, 0x0c0a,
-  0x55b0, 0x38f5,
-  0x55b1, 0x0c11,
-  0x55b2, 0x0c0d,
-  0x55b3, 0x0c09,
-  0x55b4, 0x39fe,
-  0x55b5, 0x20cd,
-  0x55b9, 0x43aa,
-  0x55ba, 0x3e89,
-  0x55bb, 0x0c0f,
-  0x55bc, 0x3dc3,
-  0x55bf, 0x2385,
-  0x55c0, 0x2381,
-  0x55c1, 0x3e4f,
-  0x55c2, 0x2390,
-  0x55c3, 0x237a,
-  0x55c4, 0x2383,
-  0x55c5, 0x0de0,
-  0x55c7, 0x0dd9,
-  0x55c8, 0x238c,
-  0x55c9, 0x0de3,
-  0x55ca, 0x237f,
-  0x55cb, 0x237e,
-  0x55cc, 0x237c,
-  0x55cd, 0x238e,
-  0x55ce, 0x0dd7,
-  0x55cf, 0x2388,
-  0x55d0, 0x237d,
-  0x55d1, 0x0dda,
-  0x55d2, 0x2386,
-  0x55d3, 0x0dd5,
-  0x55d4, 0x2382,
-  0x55d5, 0x2389,
-  0x55d6, 0x238b,
-  0x55d7, 0x45b3,
-  0x55d8, 0x43ab,
-  0x55d9, 0x238f,
-  0x55da, 0x0dde,
-  0x55db, 0x237b,
-  0x55dc, 0x0dd8,
-  0x55dd, 0x2380,
-  0x55de, 0x3e94,
-  0x55df, 0x0dd3,
-  0x55e1, 0x0ddf,
-  0x55e2, 0x238a,
-  0x55e3, 0x0ddb,
-  0x55e5, 0x0de2,
-  0x55e6, 0x0dd6,
-  0x55e7, 0x011f,
-  0x55e8, 0x0dd4,
-  0x55e9, 0x2384,
-  0x55ea, 0x3e7c,
-  0x55ec, 0x37d2,
-  0x55ef, 0x0ddd,
-  0x55f0, 0x3e88,
-  0x55f1, 0x3e83,
-  0x55f2, 0x238d,
-  0x55f5, 0x4786,
-  0x55f6, 0x0f9f,
-  0x55f7, 0x0f9a,
-  0x55f9, 0x2637,
-  0x55fa, 0x2633,
-  0x55fb, 0x4626,
-  0x55fc, 0x262d,
-  0x55fd, 0x0f94,
-  0x55fe, 0x0f90,
-  0x55ff, 0x2636,
-  0x5600, 0x0f91,
-  0x5601, 0x2630,
-  0x5602, 0x2632,
-  0x5604, 0x2635,
-  0x5605, 0x3e82,
-  0x5606, 0x0f96,
-  0x5608, 0x0f9d,
-  0x5609, 0x0f97,
-  0x560c, 0x262b,
-  0x560d, 0x0f98,
-  0x560f, 0x262e,
-  0x5610, 0x0f9e,
-  0x5611, 0x3f4d,
-  0x5612, 0x262c,
-  0x5613, 0x2631,
-  0x5614, 0x0f95,
-  0x5615, 0x262a,
-  0x5616, 0x0f9b,
-  0x5617, 0x0f93,
-  0x561b, 0x0f92,
-  0x561c, 0x262f,
-  0x561d, 0x2634,
-  0x561e, 0x3e68,
-  0x561f, 0x0f9c,
-  0x5620, 0x3f7d,
-  0x5621, 0x43ad,
-  0x5622, 0x3e67,
-  0x5623, 0x4707,
-  0x5625, 0x3e78,
-  0x5627, 0x2629,
-  0x5629, 0x1119,
-  0x562a, 0x289d,
-  0x562c, 0x289a,
-  0x562d, 0x3e63,
-  0x562e, 0x1113,
-  0x562f, 0x111f,
-  0x5632, 0x1116,
-  0x5633, 0x2898,
-  0x5634, 0x1118,
-  0x5635, 0x2890,
-  0x5636, 0x111e,
-  0x5637, 0x40b7,
-  0x5638, 0x289c,
-  0x5639, 0x1115,
-  0x563a, 0x289e,
-  0x563b, 0x1114,
-  0x563d, 0x2899,
-  0x563e, 0x289b,
-  0x563f, 0x1117,
-  0x5640, 0x2897,
-  0x5641, 0x2891,
-  0x5642, 0x288e,
-  0x5643, 0x3e7e,
-  0x5645, 0x20c8,
-  0x5646, 0x2894,
-  0x5648, 0x288d,
-  0x5649, 0x2893,
-  0x564a, 0x2892,
-  0x564c, 0x288f,
-  0x564d, 0x40bc,
-  0x564e, 0x111b,
-  0x564f, 0x40bd,
-  0x5650, 0x47cf,
-  0x5652, 0x45c2,
-  0x5653, 0x111a,
-  0x5654, 0x43af,
-  0x5657, 0x111c,
-  0x5658, 0x2895,
-  0x5659, 0x1295,
-  0x565a, 0x2896,
-  0x565d, 0x3ef9,
-  0x565e, 0x2b10,
-  0x5660, 0x2b09,
-  0x5661, 0x3812,
-  0x5662, 0x12a1,
-  0x5663, 0x2b0d,
-  0x5664, 0x1299,
-  0x5665, 0x129d,
-  0x5666, 0x2b0c,
-  0x5668, 0x129c,
-  0x5669, 0x1298,
-  0x566a, 0x129b,
-  0x566b, 0x1296,
-  0x566c, 0x12a0,
-  0x566d, 0x2b0e,
-  0x566e, 0x2b0a,
-  0x566f, 0x129f,
-  0x5670, 0x2b08,
-  0x5671, 0x129e,
-  0x5672, 0x2b0f,
-  0x5673, 0x2b0b,
-  0x5674, 0x111d,
-  0x5676, 0x12a2,
-  0x5677, 0x2b11,
-  0x5678, 0x129a,
-  0x5679, 0x1297,
-  0x567a, 0x3d85,
-  0x567b, 0x3eb7,
-  0x567c, 0x3eed,
-  0x567e, 0x2d47,
-  0x567f, 0x2d49,
-  0x5680, 0x13ba,
-  0x5681, 0x2d4a,
-  0x5682, 0x2d48,
-  0x5683, 0x2d46,
-  0x5684, 0x2d45,
-  0x5685, 0x13bc,
-  0x5686, 0x2d44,
-  0x5687, 0x13bd,
-  0x5689, 0x4628,
-  0x568a, 0x3949,
-  0x568b, 0x3e4c,
-  0x568c, 0x2d42,
-  0x568e, 0x13b9,
-  0x568f, 0x13be,
-  0x5690, 0x13bb,
-  0x5692, 0x39a6,
-  0x5693, 0x2d41,
-  0x5695, 0x14ca,
-  0x5697, 0x2f13,
-  0x5698, 0x2f11,
-  0x5699, 0x2f16,
-  0x569a, 0x2f14,
-  0x569c, 0x2f12,
-  0x569d, 0x2f15,
-  0x569e, 0x39a4,
-  0x569f, 0x3948,
-  0x56a1, 0x436b,
-  0x56a4, 0x3cc8,
-  0x56a5, 0x1576,
-  0x56a6, 0x3081,
-  0x56a8, 0x1577,
-  0x56aa, 0x3083,
-  0x56ab, 0x307f,
-  0x56ac, 0x3084,
-  0x56ad, 0x3080,
-  0x56ae, 0x14cb,
-  0x56af, 0x45f7,
-  0x56b1, 0x463f,
-  0x56b2, 0x31c8,
-  0x56b3, 0x31ca,
-  0x56b4, 0x160c,
-  0x56b5, 0x31c9,
-  0x56b6, 0x160b,
-  0x56b7, 0x160a,
-  0x56b9, 0x486f,
-  0x56bc, 0x160d,
-  0x56bd, 0x32ca,
-  0x56bf, 0x3e5d,
-  0x56c0, 0x166b,
-  0x56c1, 0x166a,
-  0x56c2, 0x166c,
-  0x56c3, 0x32c9,
-  0x56c5, 0x3379,
-  0x56c6, 0x3378,
-  0x56c8, 0x16bd,
-  0x56c9, 0x16bf,
-  0x56ca, 0x16be,
-  0x56cb, 0x337a,
-  0x56cc, 0x16f6,
-  0x56cd, 0x3481,
-  0x56d1, 0x171f,
-  0x56d3, 0x3480,
-  0x56d4, 0x34c9,
-  0x56d6, 0x488a,
-  0x56d7, 0x1775,
-  0x56da, 0x032d,
-  0x56db, 0x032c,
-  0x56dd, 0x03ac,
-  0x56de, 0x03ab,
-  0x56df, 0x17d0,
-  0x56e0, 0x03aa,
-  0x56e1, 0x17cf,
-  0x56e2, 0x4548,
-  0x56e4, 0x0463,
-  0x56e5, 0x1850,
-  0x56e7, 0x184f,
-  0x56ea, 0x0461,
-  0x56eb, 0x0464,
-  0x56ed, 0x40c4,
-  0x56ee, 0x184e,
-  0x56ef, 0x40c3,
-  0x56f0, 0x0462,
-  0x56f1, 0x40bf,
-  0x56f7, 0x1933,
-  0x56f9, 0x1934,
-  0x56fa, 0x0578,
-  0x56fd, 0x3d64,
-  0x56ff, 0x06e6,
-  0x5700, 0x40c2,
-  0x5701, 0x1c5b,
-  0x5703, 0x0879,
-  0x5707, 0x1e74,
-  0x5708, 0x0a36,
-  0x5709, 0x0a38,
-  0x570a, 0x1e73,
-  0x570b, 0x0a37,
-  0x570c, 0x20d9,
-  0x570d, 0x0c16,
-  0x5712, 0x0de4,
-  0x5714, 0x2391,
-  0x5715, 0x3e36,
-  0x5716, 0x0fa1,
-  0x5718, 0x0fa0,
-  0x571a, 0x289f,
-  0x571b, 0x2b13,
-  0x571c, 0x2b12,
-  0x571d, 0x3a02,
-  0x571e, 0x3505,
-  0x571f, 0x027a,
-  0x5720, 0x1784,
-  0x5722, 0x179a,
-  0x5728, 0x03af,
-  0x5729, 0x03b3,
-  0x572a, 0x17d2,
-  0x572c, 0x03b1,
-  0x572d, 0x03b0,
-  0x572e, 0x17d1,
-  0x572f, 0x03b2,
-  0x5730, 0x03ae,
-  0x5732, 0x3af9,
-  0x5733, 0x03ad,
-  0x5734, 0x17d3,
-  0x573b, 0x046e,
-  0x573e, 0x046b,
-  0x573f, 0x4855,
-  0x5740, 0x0467,
-  0x5741, 0x1851,
-  0x5742, 0x40cc,
-  0x5743, 0x40de,
-  0x5745, 0x1852,
-  0x5746, 0x40c8,
-  0x5747, 0x0469,
-  0x5749, 0x1854,
-  0x574a, 0x0465,
-  0x574b, 0x1855,
-  0x574c, 0x1853,
-  0x574d, 0x0468,
-  0x574e, 0x046a,
-  0x574f, 0x046d,
-  0x5750, 0x046c,
-  0x5751, 0x0466,
-  0x5752, 0x1856,
-  0x5754, 0x4785,
-  0x5757, 0x47e6,
-  0x575b, 0x3982,
-  0x575f, 0x3fbf,
-  0x5761, 0x057d,
-  0x5762, 0x1941,
-  0x5764, 0x057f,
-  0x5766, 0x057e,
-  0x5767, 0x3f2b,
-  0x5768, 0x1942,
-  0x5769, 0x057c,
-  0x576a, 0x057b,
-  0x576b, 0x1938,
-  0x576d, 0x1937,
-  0x576f, 0x1935,
-  0x5770, 0x193a,
-  0x5771, 0x1939,
-  0x5772, 0x1936,
-  0x5773, 0x193f,
-  0x5775, 0x193d,
-  0x5776, 0x193b,
-  0x5777, 0x057a,
-  0x577a, 0x3f5f,
-  0x577b, 0x193e,
-  0x577c, 0x0580,
-  0x577d, 0x1943,
-  0x577e, 0x46dc,
-  0x577f, 0x3a07,
-  0x5780, 0x193c,
-  0x5782, 0x06e7,
-  0x5783, 0x0579,
-  0x5788, 0x484b,
-  0x578a, 0x3c7b,
-  0x578b, 0x06e8,
-  0x578c, 0x1a90,
-  0x578d, 0x3a06,
-  0x578f, 0x1a96,
-  0x5790, 0x4166,
-  0x5793, 0x06ee,
-  0x5794, 0x1a94,
-  0x5795, 0x1a9a,
-  0x5797, 0x1a91,
-  0x5798, 0x1a95,
-  0x5799, 0x1a97,
-  0x579a, 0x1a99,
-  0x579b, 0x1a93,
-  0x579c, 0x4608,
-  0x579d, 0x1a92,
-  0x579e, 0x1a8d,
-  0x57a0, 0x06e9,
-  0x57a1, 0x4864,
-  0x57a2, 0x06eb,
-  0x57a3, 0x06ea,
-  0x57a4, 0x1a8f,
-  0x57a5, 0x1a98,
-  0x57a7, 0x4914,
-  0x57aa, 0x4905,
-  0x57ae, 0x06ed,
-  0x57b4, 0x4741,
-  0x57b5, 0x1a8c,
-  0x57b6, 0x1c66,
-  0x57b8, 0x1c65,
-  0x57b9, 0x1c6a,
-  0x57ba, 0x1c61,
-  0x57bb, 0x3c79,
-  0x57bc, 0x1c64,
-  0x57bd, 0x1c63,
-  0x57be, 0x372c,
-  0x57bf, 0x1c67,
-  0x57c1, 0x1c6b,
-  0x57c2, 0x087b,
-  0x57c3, 0x087e,
-  0x57c4, 0x3b5b,
-  0x57c6, 0x1c62,
-  0x57c7, 0x1c68,
-  0x57c8, 0x3d0b,
-  0x57cb, 0x087d,
-  0x57cc, 0x1c5d,
-  0x57ce, 0x06ec,
-  0x57cf, 0x1e82,
-  0x57d0, 0x1c69,
-  0x57d2, 0x1c60,
-  0x57d4, 0x087c,
-  0x57d5, 0x1c5f,
-  0x57d7, 0x3c7d,
-  0x57dc, 0x1e79,
-  0x57dd, 0x3a05,
-  0x57de, 0x3f01,
-  0x57df, 0x0a39,
-  0x57e0, 0x0a3d,
-  0x57e1, 0x1e89,
-  0x57e2, 0x1e77,
-  0x57e3, 0x1e85,
-  0x57e4, 0x0a3e,
-  0x57e5, 0x1e87,
-  0x57e6, 0x40cf,
-  0x57e7, 0x1e8d,
-  0x57e9, 0x1e91,
-  0x57ec, 0x1e88,
-  0x57ed, 0x1e7c,
-  0x57ee, 0x1e84,
-  0x57ef, 0x4754,
-  0x57f0, 0x1e92,
-  0x57f1, 0x1e90,
-  0x57f2, 0x1e86,
-  0x57f3, 0x1e81,
-  0x57f4, 0x1e7a,
-  0x57f5, 0x20e1,
-  0x57f6, 0x1e78,
-  0x57f7, 0x0a42,
-  0x57f8, 0x1e7f,
-  0x57f9, 0x0a43,
-  0x57fa, 0x0a3f,
-  0x57fb, 0x1e75,
-  0x57fc, 0x1e8b,
-  0x57fd, 0x1e7d,
-  0x57fe, 0x408f,
-  0x5800, 0x1e7b,
-  0x5801, 0x1e8e,
-  0x5802, 0x0a40,
-  0x5803, 0x40d1,
-  0x5804, 0x1e94,
-  0x5805, 0x0a3a,
-  0x5806, 0x0a3c,
-  0x5807, 0x1e83,
-  0x5808, 0x1e7e,
-  0x5809, 0x087f,
-  0x580a, 0x0a3b,
-  0x580b, 0x1e80,
-  0x580c, 0x1e8f,
-  0x580d, 0x1e93,
-  0x580e, 0x1e8a,
-  0x5810, 0x1e8c,
-  0x5812, 0x3d0a,
-  0x5814, 0x1e76,
-  0x5819, 0x20dc,
-  0x581b, 0x20e5,
-  0x581c, 0x20e4,
-  0x581d, 0x0c1e,
-  0x581e, 0x20dd,
-  0x5820, 0x0c1f,
-  0x5821, 0x0c1d,
-  0x5822, 0x3c28,
-  0x5823, 0x20df,
-  0x5824, 0x0c1a,
-  0x5825, 0x20e3,
-  0x5826, 0x40d4,
-  0x5827, 0x20de,
-  0x5828, 0x20e0,
-  0x5829, 0x20da,
-  0x582a, 0x0c18,
-  0x582c, 0x20ed,
-  0x582d, 0x20ec,
-  0x582e, 0x20e9,
-  0x582f, 0x0c17,
-  0x5830, 0x0c1b,
-  0x5832, 0x1c5e,
-  0x5833, 0x20e6,
-  0x5834, 0x0c19,
-  0x5835, 0x0a41,
-  0x5836, 0x20e8,
-  0x5837, 0x20db,
-  0x5838, 0x20eb,
-  0x5839, 0x20ea,
-  0x583a, 0x3d72,
-  0x583b, 0x20ee,
-  0x583d, 0x239f,
-  0x583f, 0x20e7,
-  0x5840, 0x3d82,
-  0x5844, 0x47bb,
-  0x5847, 0x3ac2,
-  0x5848, 0x20e2,
-  0x5849, 0x2397,
-  0x584a, 0x0def,
-  0x584b, 0x0df2,
-  0x584c, 0x0ded,
-  0x584d, 0x2396,
-  0x584e, 0x239a,
-  0x584f, 0x2395,
-  0x5851, 0x0de7,
-  0x5852, 0x0df1,
-  0x5853, 0x2392,
-  0x5854, 0x0deb,
-  0x5855, 0x2399,
-  0x5857, 0x0de9,
-  0x5858, 0x0de8,
-  0x5859, 0x239c,
-  0x585a, 0x0dea,
-  0x585b, 0x239e,
-  0x585c, 0x4949,
-  0x585d, 0x239b,
-  0x585e, 0x0de6,
-  0x585f, 0x43df,
-  0x5862, 0x0df0,
-  0x5863, 0x23a0,
-  0x5864, 0x2394,
-  0x5865, 0x239d,
-  0x5868, 0x2393,
-  0x5869, 0x3d65,
-  0x586b, 0x0dec,
-  0x586c, 0x399a,
-  0x586d, 0x0dee,
-  0x586f, 0x2398,
-  0x5871, 0x23a1,
-  0x5872, 0x3c26,
-  0x5873, 0x4355,
-  0x5874, 0x263f,
-  0x5875, 0x0fa2,
-  0x5876, 0x2645,
-  0x5879, 0x0fa7,
-  0x587a, 0x2641,
-  0x587b, 0x2648,
-  0x587c, 0x2639,
-  0x587d, 0x0fa9,
-  0x587e, 0x0fa3,
-  0x587f, 0x263e,
-  0x5880, 0x1121,
-  0x5881, 0x263d,
-  0x5882, 0x2646,
-  0x5883, 0x0fa4,
-  0x5885, 0x0fa8,
-  0x5886, 0x263c,
-  0x5887, 0x2642,
-  0x5888, 0x2647,
-  0x5889, 0x2638,
-  0x588a, 0x0fa6,
-  0x588b, 0x2640,
-  0x588e, 0x2644,
-  0x588f, 0x264a,
-  0x5890, 0x263a,
-  0x5891, 0x2643,
-  0x5893, 0x0fa5,
-  0x5894, 0x2649,
-  0x5898, 0x263b,
-  0x5899, 0x4618,
-  0x589a, 0x4903,
-  0x589c, 0x1125,
-  0x589d, 0x28a1,
-  0x589e, 0x1123,
-  0x589f, 0x1122,
-  0x58a0, 0x28a3,
-  0x58a1, 0x28a8,
-  0x58a3, 0x28a4,
-  0x58a5, 0x28a7,
-  0x58a6, 0x1128,
-  0x58a7, 0x3eeb,
-  0x58a8, 0x1288,
-  0x58a9, 0x1127,
-  0x58aa, 0x40d7,
-  0x58ab, 0x28a0,
-  0x58ac, 0x28a6,
-  0x58ae, 0x1126,
-  0x58af, 0x28a5,
-  0x58b0, 0x37a4,
-  0x58b1, 0x28a2,
-  0x58b3, 0x1124,
-  0x58b5, 0x4840,
-  0x58b6, 0x3dfd,
-  0x58ba, 0x2b18,
-  0x58bb, 0x36eb,
-  0x58bc, 0x2b1a,
-  0x58bd, 0x2b15,
-  0x58be, 0x12a4,
-  0x58bf, 0x2b17,
-  0x58c1, 0x12a3,
-  0x58c2, 0x2b19,
-  0x58c5, 0x12a6,
-  0x58c6, 0x2b1b,
-  0x58c7, 0x12a5,
-  0x58c8, 0x2b14,
-  0x58c9, 0x2b16,
-  0x58cb, 0x3a09,
-  0x58ce, 0x13c2,
-  0x58cf, 0x2d4d,
-  0x58d1, 0x13c1,
-  0x58d2, 0x2d4e,
-  0x58d3, 0x13c0,
-  0x58d4, 0x2d4c,
-  0x58d5, 0x13bf,
-  0x58d6, 0x2d4b,
-  0x58d8, 0x14cd,
-  0x58d9, 0x14cc,
-  0x58da, 0x3085,
-  0x58db, 0x3087,
-  0x58dc, 0x40da,
-  0x58dd, 0x3086,
-  0x58de, 0x1578,
-  0x58e0, 0x40d9,
-  0x58e2, 0x157a,
-  0x58e3, 0x31cb,
-  0x58e4, 0x160e,
-  0x58e7, 0x3411,
-  0x58e8, 0x3410,
-  0x58e9, 0x1720,
-  0x58eb, 0x027b,
-  0x58ec, 0x02c1,
-  0x58ef, 0x046f,
-  0x58f0, 0x4549,
-  0x58f2, 0x3d68,
-  0x58f3, 0x3c7a,
-  0x58f4, 0x1a9b,
-  0x58f9, 0x0c20,
-  0x58fb, 0x40dc,
-  0x58fc, 0x23a2,
-  0x58fd, 0x0faa,
-  0x58fe, 0x264b,
-  0x58ff, 0x28a9,
-  0x5902, 0x0224,
-  0x5903, 0x1785,
-  0x5904, 0x454a,
-  0x5905, 0x4599,
-  0x5906, 0x1857,
-  0x5907, 0x454b,
-  0x590a, 0x0224,
-  0x590c, 0x1944,
-  0x590d, 0x1a9c,
-  0x590e, 0x1c6c,
-  0x590f, 0x0880,
-  0x5911, 0x4274,
-  0x5912, 0x3088,
-  0x5914, 0x166d,
-  0x5915, 0x027c,
-  0x5916, 0x032e,
-  0x5917, 0x179c,
-  0x5919, 0x03b4,
-  0x591c, 0x0581,
-  0x591f, 0x40e3,
-  0x5920, 0x0a44,
-  0x5922, 0x0fac,
-  0x5924, 0x0fad,
-  0x5925, 0x0fab,
-  0x5927, 0x027d,
-  0x5929, 0x02c2,
-  0x592a, 0x02c4,
-  0x592b, 0x02c3,
-  0x592c, 0x1786,
-  0x592d, 0x02c5,
-  0x592e, 0x032f,
-  0x592f, 0x179d,
-  0x5931, 0x0330,
-  0x5932, 0x454c,
-  0x5934, 0x454d,
-  0x5937, 0x03b6,
-  0x593c, 0x17d4,
-  0x593e, 0x0470,
-  0x5940, 0x1858,
-  0x5944, 0x0585,
-  0x5945, 0x1945,
-  0x5947, 0x0583,
-  0x5949, 0x0582,
-  0x594a, 0x1c6d,
-  0x594e, 0x06f2,
-  0x594f, 0x06f1,
-  0x5950, 0x06f3,
-  0x5951, 0x06f0,
-  0x5953, 0x1a9d,
-  0x5954, 0x0586,
-  0x5955, 0x06ef,
-  0x5957, 0x0881,
-  0x595a, 0x0883,
-  0x595c, 0x1e95,
-  0x5960, 0x0c22,
-  0x5961, 0x20ef,
-  0x5962, 0x0a45,
-  0x5965, 0x4852,
-  0x5967, 0x0df3,
-  0x5969, 0x0faf,
-  0x596a, 0x0fae,
-  0x596b, 0x264c,
-  0x596d, 0x1129,
-  0x596e, 0x12a7,
-  0x5970, 0x2f17,
-  0x5971, 0x337b,
-  0x5972, 0x3412,
-  0x5973, 0x027e,
-  0x5974, 0x0331,
-  0x5975, 0x3e6a,
-  0x5976, 0x0332,
-  0x5977, 0x17da,
-  0x5978, 0x03b9,
-  0x5979, 0x03bc,
-  0x597b, 0x17d8,
-  0x597c, 0x17d6,
-  0x597d, 0x03bb,
-  0x597e, 0x17d9,
-  0x597f, 0x17db,
-  0x5980, 0x17d5,
-  0x5981, 0x03be,
-  0x5982, 0x03bd,
-  0x5983, 0x03ba,
-  0x5984, 0x03b8,
-  0x5985, 0x17d7,
-  0x5989, 0x3d30,
-  0x598a, 0x047b,
-  0x598d, 0x0478,
-  0x598e, 0x185d,
-  0x598f, 0x1860,
-  0x5990, 0x185f,
-  0x5992, 0x0472,
-  0x5993, 0x047a,
-  0x5994, 0x3c99,
-  0x5996, 0x0477,
-  0x5997, 0x185c,
-  0x5998, 0x185a,
-  0x5999, 0x0476,
-  0x599a, 0x3bb0,
-  0x599d, 0x0471,
-  0x599e, 0x0474,
-  0x599f, 0x3daf,
-  0x59a0, 0x185b,
-  0x59a1, 0x1862,
-  0x59a2, 0x185e,
-  0x59a3, 0x0475,
-  0x59a4, 0x0479,
-  0x59a5, 0x047c,
-  0x59a6, 0x1859,
-  0x59a7, 0x1861,
-  0x59a8, 0x0473,
-  0x59ac, 0x3d81,
-  0x59ae, 0x058b,
-  0x59af, 0x0593,
-  0x59b0, 0x3cd8,
-  0x59b1, 0x1951,
-  0x59b2, 0x194a,
-  0x59b3, 0x0594,
-  0x59b4, 0x1955,
-  0x59b5, 0x1946,
-  0x59b6, 0x194d,
-  0x59b7, 0x3f2d,
-  0x59b8, 0x3a10,
-  0x59b9, 0x058a,
-  0x59ba, 0x1947,
-  0x59bb, 0x0588,
-  0x59bc, 0x194e,
-  0x59bd, 0x1952,
-  0x59be, 0x0587,
-  0x59c0, 0x1953,
-  0x59c1, 0x194c,
-  0x59c3, 0x194f,
-  0x59c4, 0x3d04,
-  0x59c5, 0x0596,
-  0x59c6, 0x058d,
-  0x59c7, 0x1956,
-  0x59c8, 0x1954,
-  0x59c9, 0x40ec,
-  0x59ca, 0x0592,
-  0x59cb, 0x0590,
-  0x59cc, 0x194b,
-  0x59cd, 0x058f,
-  0x59ce, 0x1949,
-  0x59cf, 0x1948,
-  0x59d0, 0x058e,
-  0x59d1, 0x058c,
-  0x59d2, 0x0595,
-  0x59d3, 0x0591,
-  0x59d4, 0x0589,
-  0x59d6, 0x1950,
-  0x59d8, 0x06f5,
-  0x59d9, 0x40f1,
-  0x59da, 0x06fc,
-  0x59db, 0x1aab,
-  0x59dc, 0x06f4,
-  0x59dd, 0x1aa3,
-  0x59de, 0x1a9f,
-  0x59e0, 0x1aaf,
-  0x59e1, 0x1a9e,
-  0x59e3, 0x06f7,
-  0x59e4, 0x1aa8,
-  0x59e5, 0x06fa,
-  0x59e6, 0x06fd,
-  0x59e8, 0x06f8,
-  0x59e9, 0x1aac,
-  0x59ea, 0x06fb,
-  0x59eb, 0x3d59,
-  0x59ec, 0x088a,
-  0x59ed, 0x1ab2,
-  0x59ee, 0x1aa0,
-  0x59ef, 0x3d38,
-  0x59f0, 0x3bb2,
-  0x59f1, 0x1aa2,
-  0x59f2, 0x1aa9,
-  0x59f3, 0x1aad,
-  0x59f4, 0x1ab1,
-  0x59f5, 0x1aae,
-  0x59f6, 0x1aa7,
-  0x59f7, 0x1aaa,
-  0x59f8, 0x3e4a,
-  0x59f9, 0x40f8,
-  0x59fa, 0x1aa4,
-  0x59fb, 0x06ff,
-  0x59fc, 0x1aa6,
-  0x59fd, 0x1aa5,
-  0x59fe, 0x1ab0,
-  0x59ff, 0x06f6,
-  0x5a00, 0x1aa1,
-  0x5a01, 0x06fe,
-  0x5a02, 0x3b8d,
-  0x5a03, 0x06f9,
-  0x5a09, 0x0890,
-  0x5a0a, 0x1c75,
-  0x5a0b, 0x3c89,
-  0x5a0c, 0x088f,
-  0x5a0d, 0x3b38,
-  0x5a0f, 0x1c73,
-  0x5a11, 0x0884,
-  0x5a12, 0x3a13,
-  0x5a13, 0x0889,
-  0x5a15, 0x1c72,
-  0x5a16, 0x1c6f,
-  0x5a17, 0x1c74,
-  0x5a18, 0x0885,
-  0x5a19, 0x1c6e,
-  0x5a1b, 0x0888,
-  0x5a1c, 0x0886,
-  0x5a1e, 0x1c76,
-  0x5a1f, 0x0887,
-  0x5a20, 0x088b,
-  0x5a21, 0x3a1b,
-  0x5a23, 0x088c,
-  0x5a24, 0x40e8,
-  0x5a25, 0x088e,
-  0x5a27, 0x3de1,
-  0x5a29, 0x088d,
-  0x5a2a, 0x3b3b,
-  0x5a2b, 0x3d40,
-  0x5a2c, 0x3a0f,
-  0x5a2d, 0x1c70,
-  0x5a33, 0x1c77,
-  0x5a35, 0x1e9c,
-  0x5a36, 0x0a46,
-  0x5a37, 0x20fd,
-  0x5a38, 0x1e9b,
-  0x5a39, 0x1eae,
-  0x5a3c, 0x0a4c,
-  0x5a3d, 0x3ac0,
-  0x5a3e, 0x1eac,
-  0x5a40, 0x0a4b,
-  0x5a41, 0x0a47,
-  0x5a42, 0x1eb5,
-  0x5a43, 0x1ea5,
-  0x5a44, 0x1ea8,
-  0x5a45, 0x3917,
-  0x5a46, 0x0a4f,
-  0x5a47, 0x1eb2,
-  0x5a48, 0x1eaa,
-  0x5a49, 0x0a48,
-  0x5a4a, 0x0a50,
-  0x5a4c, 0x1eaf,
-  0x5a4d, 0x1ead,
-  0x5a50, 0x1e9e,
-  0x5a51, 0x1eb3,
-  0x5a52, 0x1ea7,
-  0x5a53, 0x1ea2,
-  0x5a54, 0x4603,
-  0x5a55, 0x1e98,
-  0x5a56, 0x1eb4,
-  0x5a57, 0x1ea4,
-  0x5a58, 0x1e97,
-  0x5a59, 0x3b34,
-  0x5a5a, 0x0a4e,
-  0x5a5b, 0x1ea9,
-  0x5a5c, 0x1eb6,
-  0x5a5d, 0x1ea6,
-  0x5a5e, 0x1e9a,
-  0x5a5f, 0x1e9f,
-  0x5a60, 0x1e96,
-  0x5a61, 0x3d33,
-  0x5a62, 0x0a4d,
-  0x5a63, 0x40fb,
-  0x5a64, 0x1ea3,
-  0x5a65, 0x1ea0,
-  0x5a66, 0x0a49,
-  0x5a67, 0x1e99,
-  0x5a68, 0x39b7,
-  0x5a69, 0x1eb1,
-  0x5a6a, 0x0a4a,
-  0x5a6b, 0x3a42,
-  0x5a6c, 0x1ea1,
-  0x5a6d, 0x1e9d,
-  0x5a6e, 0x3d3f,
-  0x5a70, 0x1eb0,
-  0x5a71, 0x3d34,
-  0x5a77, 0x0c23,
-  0x5a78, 0x20f6,
-  0x5a79, 0x3ce1,
-  0x5a7a, 0x20f3,
-  0x5a7b, 0x2104,
-  0x5a7c, 0x20f8,
-  0x5a7d, 0x2105,
-  0x5a7e, 0x3a11,
-  0x5a7f, 0x0c25,
-  0x5a81, 0x3a1d,
-  0x5a82, 0x3d31,
-  0x5a83, 0x2101,
-  0x5a84, 0x20fe,
-  0x5a86, 0x3b81,
-  0x5a88, 0x4263,
-  0x5a8a, 0x20ff,
-  0x5a8b, 0x2102,
-  0x5a8c, 0x2106,
-  0x5a8e, 0x1eab,
-  0x5a8f, 0x2108,
-  0x5a90, 0x23b6,
-  0x5a91, 0x4235,
-  0x5a92, 0x0c26,
-  0x5a93, 0x2109,
-  0x5a94, 0x20f1,
-  0x5a95, 0x20fb,
-  0x5a96, 0x4100,
-  0x5a97, 0x2100,
-  0x5a99, 0x3a0a,
-  0x5a9a, 0x0c24,
-  0x5a9b, 0x0c27,
-  0x5a9c, 0x2107,
-  0x5a9d, 0x210a,
-  0x5a9e, 0x20f5,
-  0x5a9f, 0x20f2,
-  0x5aa0, 0x4172,
-  0x5aa1, 0x3cdc,
-  0x5aa2, 0x20f4,
-  0x5aa5, 0x20f9,
-  0x5aa6, 0x20f7,
-  0x5aa7, 0x0c28,
-  0x5aa9, 0x2103,
-  0x5aab, 0x40fa,
-  0x5aac, 0x20fa,
-  0x5aae, 0x20fc,
-  0x5aaf, 0x20f0,
-  0x5ab0, 0x23aa,
-  0x5ab1, 0x23a8,
-  0x5ab2, 0x0dfc,
-  0x5ab3, 0x0dfa,
-  0x5ab4, 0x23b2,
-  0x5ab5, 0x23a9,
-  0x5ab6, 0x23b3,
-  0x5ab7, 0x23af,
-  0x5ab8, 0x23a7,
-  0x5ab9, 0x23b5,
-  0x5aba, 0x23a6,
-  0x5abb, 0x23ad,
-  0x5abc, 0x0df9,
-  0x5abd, 0x0df8,
-  0x5abe, 0x0df7,
-  0x5abf, 0x23ab,
-  0x5ac0, 0x23b0,
-  0x5ac1, 0x0df4,
-  0x5ac2, 0x0dfb,
-  0x5ac3, 0x3896,
-  0x5ac4, 0x23a4,
-  0x5ac6, 0x23ae,
-  0x5ac7, 0x23a3,
-  0x5ac8, 0x23ac,
-  0x5ac9, 0x0df5,
-  0x5aca, 0x23b1,
-  0x5acb, 0x23a5,
-  0x5acc, 0x0df6,
-  0x5acd, 0x23b4,
-  0x5ace, 0x3c88,
-  0x5acf, 0x43b5,
-  0x5ad3, 0x4102,
-  0x5ad5, 0x2650,
-  0x5ad6, 0x0fb4,
-  0x5ad7, 0x0fb3,
-  0x5ad8, 0x0fb5,
-  0x5ad9, 0x265c,
-  0x5ada, 0x2652,
-  0x5adb, 0x2658,
-  0x5adc, 0x264d,
-  0x5add, 0x265b,
-  0x5ade, 0x265a,
-  0x5adf, 0x265e,
-  0x5ae0, 0x2657,
-  0x5ae1, 0x0fb0,
-  0x5ae2, 0x2656,
-  0x5ae3, 0x0fb6,
-  0x5ae4, 0x3b86,
-  0x5ae5, 0x264f,
-  0x5ae6, 0x0fb1,
-  0x5ae8, 0x265d,
-  0x5ae9, 0x0fb2,
-  0x5aea, 0x2651,
-  0x5aeb, 0x2654,
-  0x5aec, 0x2659,
-  0x5aed, 0x2653,
-  0x5aee, 0x264e,
-  0x5af0, 0x3ee7,
-  0x5af2, 0x37f5,
-  0x5af3, 0x2655,
-  0x5af4, 0x28ab,
-  0x5af5, 0x112d,
-  0x5af6, 0x28ae,
-  0x5af7, 0x28ad,
-  0x5af8, 0x28b0,
-  0x5af9, 0x28b2,
-  0x5afa, 0x36ee,
-  0x5afb, 0x112b,
-  0x5afd, 0x28ac,
-  0x5afe, 0x3c1d,
-  0x5aff, 0x28aa,
-  0x5b01, 0x28b3,
-  0x5b02, 0x28b1,
-  0x5b03, 0x28af,
-  0x5b05, 0x28b5,
-  0x5b07, 0x28b4,
-  0x5b08, 0x112f,
-  0x5b09, 0x112a,
-  0x5b0b, 0x112c,
-  0x5b0c, 0x112e,
-  0x5b0d, 0x48ff,
-  0x5b0f, 0x28b6,
-  0x5b10, 0x2b22,
-  0x5b11, 0x3bf6,
-  0x5b13, 0x2b21,
-  0x5b14, 0x2b20,
-  0x5b16, 0x2b23,
-  0x5b17, 0x2b1c,
-  0x5b19, 0x2b1d,
-  0x5b1a, 0x2b25,
-  0x5b1b, 0x2b1e,
-  0x5b1d, 0x12a8,
-  0x5b1e, 0x2b27,
-  0x5b1f, 0x4941,
-  0x5b20, 0x2b26,
-  0x5b21, 0x2b1f,
-  0x5b23, 0x2d52,
-  0x5b24, 0x13c5,
-  0x5b25, 0x2d50,
-  0x5b26, 0x2d55,
-  0x5b27, 0x2d54,
-  0x5b28, 0x2b24,
-  0x5b2a, 0x13c4,
-  0x5b2b, 0x3b84,
-  0x5b2c, 0x2d53,
-  0x5b2d, 0x2d4f,
-  0x5b2e, 0x2d57,
-  0x5b2f, 0x2d56,
-  0x5b30, 0x13c3,
-  0x5b32, 0x2d51,
-  0x5b34, 0x12a9,
-  0x5b38, 0x14ce,
-  0x5b3c, 0x2f18,
-  0x5b3d, 0x3089,
-  0x5b40, 0x160f,
-  0x5b41, 0x38c8,
-  0x5b43, 0x1610,
-  0x5b44, 0x3a44,
-  0x5b45, 0x31cc,
-  0x5b46, 0x42b2,
-  0x5b47, 0x32cd,
-  0x5b48, 0x32cc,
-  0x5b4a, 0x38cd,
-  0x5b4b, 0x337c,
-  0x5b4d, 0x3413,
-  0x5b4e, 0x3482,
-  0x5b4f, 0x3a31,
-  0x5b50, 0x027f,
-  0x5b53, 0x0281,
-  0x5b54, 0x02c6,
-  0x5b55, 0x0333,
-  0x5b56, 0x17dc,
-  0x5b57, 0x03bf,
-  0x5b5a, 0x047f,
-  0x5b5c, 0x047e,
-  0x5b5d, 0x047d,
-  0x5b5f, 0x0597,
-  0x5b62, 0x1957,
-  0x5b63, 0x0599,
-  0x5b64, 0x0598,
-  0x5b65, 0x1958,
-  0x5b66, 0x454e,
-  0x5b68, 0x461d,
-  0x5b69, 0x0700,
-  0x5b6b, 0x0891,
-  0x5b6c, 0x1c78,
-  0x5b6d, 0x3e5f,
-  0x5b6e, 0x1eb8,
-  0x5b70, 0x0a51,
-  0x5b71, 0x0c2a,
-  0x5b72, 0x1eb7,
-  0x5b73, 0x0c29,
-  0x5b74, 0x3732,
-  0x5b75, 0x0fb7,
-  0x5b76, 0x410a,
-  0x5b77, 0x265f,
-  0x5b78, 0x12aa,
-  0x5b7a, 0x13c6,
-  0x5b7b, 0x2d58,
-  0x5b7c, 0x410c,
-  0x5b7d, 0x1611,
-  0x5b7f, 0x16c0,
-  0x5b80, 0x0225,
-  0x5b81, 0x179e,
-  0x5b82, 0x4044,
-  0x5b83, 0x0334,
-  0x5b84, 0x179f,
-  0x5b85, 0x03c3,
-  0x5b87, 0x03c1,
-  0x5b89, 0x03c4,
-  0x5b8b, 0x0482,
-  0x5b8c, 0x0481,
-  0x5b8e, 0x1863,
-  0x5b8f, 0x0483,
-  0x5b90, 0x48e9,
-  0x5b92, 0x1864,
-  0x5b93, 0x1959,
-  0x5b95, 0x195a,
-  0x5b97, 0x059a,
-  0x5b98, 0x059c,
-  0x5b99, 0x059e,
-  0x5b9a, 0x059b,
-  0x5b9b, 0x059f,
-  0x5b9c, 0x059d,
-  0x5b9d, 0x4116,
-  0x5b9e, 0x454f,
-  0x5ba2, 0x0704,
-  0x5ba3, 0x0701,
-  0x5ba4, 0x0703,
-  0x5ba5, 0x0705,
-  0x5ba6, 0x0702,
-  0x5ba7, 0x1c79,
-  0x5ba8, 0x1ab3,
-  0x5baa, 0x417b,
-  0x5bac, 0x1c7b,
-  0x5bad, 0x1c7a,
-  0x5bae, 0x0897,
-  0x5bb0, 0x0893,
-  0x5bb3, 0x0894,
-  0x5bb4, 0x0896,
-  0x5bb5, 0x0898,
-  0x5bb6, 0x0895,
-  0x5bb8, 0x089a,
-  0x5bb9, 0x0899,
-  0x5bbf, 0x0a56,
-  0x5bc0, 0x1eba,
-  0x5bc1, 0x1eb9,
-  0x5bc2, 0x0a55,
-  0x5bc3, 0x3f25,
-  0x5bc4, 0x0a54,
-  0x5bc5, 0x0a53,
-  0x5bc6, 0x0a57,
-  0x5bc7, 0x0a52,
-  0x5bca, 0x2110,
-  0x5bcb, 0x210d,
-  0x5bcc, 0x0c2c,
-  0x5bcd, 0x210c,
-  0x5bce, 0x2111,
-  0x5bd0, 0x0c2e,
-  0x5bd1, 0x210f,
-  0x5bd2, 0x0c2b,
-  0x5bd3, 0x0c2d,
-  0x5bd4, 0x210e,
-  0x5bd5, 0x4111,
-  0x5bd6, 0x23b7,
-  0x5bd7, 0x42bb,
-  0x5bd8, 0x23b8,
-  0x5bde, 0x0fb8,
-  0x5bdf, 0x0fc0,
-  0x5be0, 0x2660,
-  0x5be1, 0x0fba,
-  0x5be2, 0x0fbe,
-  0x5be3, 0x2661,
-  0x5be4, 0x0fbf,
-  0x5be5, 0x0fbb,
-  0x5be7, 0x0fb9,
-  0x5be8, 0x0fbd,
-  0x5be9, 0x1132,
-  0x5bea, 0x210b,
-  0x5beb, 0x1133,
-  0x5bec, 0x1131,
-  0x5bee, 0x1130,
-  0x5bef, 0x2b28,
-  0x5bf0, 0x12ab,
-  0x5bf1, 0x2d59,
-  0x5bf3, 0x4115,
-  0x5bf5, 0x157b,
-  0x5bf6, 0x1612,
-  0x5bf8, 0x0282,
-  0x5bfa, 0x03c5,
-  0x5bff, 0x40dd,
-  0x5c01, 0x0706,
-  0x5c03, 0x1c7c,
-  0x5c04, 0x089b,
-  0x5c05, 0x4118,
-  0x5c07, 0x0a5a,
-  0x5c08, 0x0a59,
-  0x5c09, 0x0a58,
-  0x5c0a, 0x0c2f,
-  0x5c0c, 0x2112,
-  0x5c0d, 0x0fc1,
-  0x5c0e, 0x12ac,
-  0x5c0f, 0x0283,
-  0x5c10, 0x1787,
-  0x5c11, 0x02c7,
-  0x5c12, 0x17a0,
-  0x5c13, 0x411a,
-  0x5c14, 0x411c,
-  0x5c15, 0x17dd,
-  0x5c16, 0x03c6,
-  0x5c1a, 0x05a0,
-  0x5c1c, 0x45ea,
-  0x5c1e, 0x3a29,
-  0x5c1f, 0x23ba,
-  0x5c20, 0x3d89,
-  0x5c22, 0x0284,
-  0x5c23, 0x44e8,
-  0x5c24, 0x02c8,
-  0x5c25, 0x17de,
-  0x5c28, 0x1865,
-  0x5c2a, 0x1866,
-  0x5c2c, 0x0484,
-  0x5c30, 0x2113,
-  0x5c31, 0x0c31,
-  0x5c33, 0x23bb,
-  0x5c37, 0x13c7,
-  0x5c38, 0x0285,
-  0x5c39, 0x0299,
-  0x5c3a, 0x02c9,
-  0x5c3b, 0x17a1,
-  0x5c3c, 0x0335,
-  0x5c3e, 0x0488,
-  0x5c3f, 0x0487,
-  0x5c40, 0x0485,
-  0x5c44, 0x195b,
-  0x5c45, 0x05a2,
-  0x5c47, 0x195c,
-  0x5c48, 0x05a1,
-  0x5c49, 0x411f,
-  0x5c4a, 0x3f5c,
-  0x5c4b, 0x070a,
-  0x5c4c, 0x1ab4,
-  0x5c4d, 0x0709,
-  0x5c4e, 0x0707,
-  0x5c50, 0x089e,
-  0x5c51, 0x089c,
-  0x5c53, 0x3f02,
-  0x5c54, 0x1c7e,
-  0x5c55, 0x089d,
-  0x5c56, 0x1c7d,
-  0x5c58, 0x0892,
-  0x5c59, 0x1ebb,
-  0x5c5c, 0x0a5c,
-  0x5c5e, 0x3d67,
-  0x5c60, 0x0a5b,
-  0x5c62, 0x0fc2,
-  0x5c63, 0x2662,
-  0x5c64, 0x1134,
-  0x5c67, 0x28b7,
-  0x5c68, 0x13c8,
-  0x5c69, 0x2f19,
-  0x5c6c, 0x166e,
-  0x5c6d, 0x3483,
-  0x5c6e, 0x1776,
-  0x5c6f, 0x02ca,
-  0x5c71, 0x0286,
-  0x5c73, 0x17a3,
-  0x5c74, 0x17a2,
-  0x5c79, 0x03c7,
-  0x5c7a, 0x17e0,
-  0x5c7c, 0x17df,
-  0x5c7e, 0x17e2,
-  0x5c85, 0x4121,
-  0x5c86, 0x186e,
-  0x5c88, 0x1869,
-  0x5c89, 0x186b,
-  0x5c8a, 0x186d,
-  0x5c8b, 0x186a,
-  0x5c8c, 0x048c,
-  0x5c8d, 0x1867,
-  0x5c8f, 0x1868,
-  0x5c90, 0x0489,
-  0x5c92, 0x186c,
-  0x5c93, 0x186f,
-  0x5c94, 0x048b,
-  0x5c95, 0x1870,
-  0x5c99, 0x468c,
-  0x5c9a, 0x4551,
-  0x5c9c, 0x495a,
-  0x5c9d, 0x196a,
-  0x5c9e, 0x3a2a,
-  0x5c9f, 0x1964,
-  0x5ca0, 0x195f,
-  0x5ca1, 0x05a5,
-  0x5ca2, 0x1967,
-  0x5ca3, 0x1965,
-  0x5ca4, 0x195e,
-  0x5ca5, 0x196b,
-  0x5ca6, 0x196e,
-  0x5ca7, 0x1969,
-  0x5ca8, 0x1962,
-  0x5ca9, 0x05a7,
-  0x5caa, 0x1968,
-  0x5cab, 0x05a8,
-  0x5cac, 0x1963,
-  0x5cad, 0x1966,
-  0x5cae, 0x195d,
-  0x5caf, 0x1961,
-  0x5cb0, 0x196d,
-  0x5cb1, 0x05a9,
-  0x5cb3, 0x05aa,
-  0x5cb5, 0x1960,
-  0x5cb6, 0x196c,
-  0x5cb7, 0x05a4,
-  0x5cb8, 0x05a6,
-  0x5cba, 0x412b,
-  0x5cc1, 0x43b8,
-  0x5cc2, 0x3d4c,
-  0x5cc6, 0x1ac5,
-  0x5cc7, 0x1abe,
-  0x5cc8, 0x1ac4,
-  0x5cc9, 0x1abd,
-  0x5cca, 0x1abf,
-  0x5ccb, 0x1ab9,
-  0x5ccc, 0x1ab7,
-  0x5cce, 0x1ac6,
-  0x5ccf, 0x1ac3,
-  0x5cd0, 0x1ab5,
-  0x5cd1, 0x3f13,
-  0x5cd2, 0x070c,
-  0x5cd3, 0x1ac1,
-  0x5cd6, 0x1ac0,
-  0x5cd7, 0x1ab8,
-  0x5cd8, 0x1ab6,
-  0x5cd9, 0x070b,
-  0x5cda, 0x1abc,
-  0x5cdb, 0x1aba,
-  0x5cde, 0x1abb,
-  0x5cdf, 0x1ac7,
-  0x5ce5, 0x4637,
-  0x5ce8, 0x08a3,
-  0x5ce9, 0x4122,
-  0x5cea, 0x08a2,
-  0x5cec, 0x1c7f,
-  0x5ced, 0x089f,
-  0x5cee, 0x1c81,
-  0x5cef, 0x4123,
-  0x5cf0, 0x08a4,
-  0x5cf1, 0x1c82,
-  0x5cf4, 0x08a7,
-  0x5cf6, 0x08a5,
-  0x5cf7, 0x1c83,
-  0x5cf8, 0x1ac8,
-  0x5cf9, 0x1c85,
-  0x5cfb, 0x08a1,
-  0x5cfd, 0x08a0,
-  0x5cff, 0x1c80,
-  0x5d00, 0x1c84,
-  0x5d01, 0x08a6,
-  0x5d06, 0x0a5f,
-  0x5d07, 0x0a5e,
-  0x5d0b, 0x1ebd,
-  0x5d0c, 0x1ec1,
-  0x5d0d, 0x1ec3,
-  0x5d0e, 0x0a60,
-  0x5d0f, 0x1ec6,
-  0x5d10, 0x4127,
-  0x5d11, 0x0a64,
-  0x5d12, 0x1ec8,
-  0x5d14, 0x0a66,
-  0x5d15, 0x43b9,
-  0x5d16, 0x0a62,
-  0x5d17, 0x0a6a,
-  0x5d18, 0x4128,
-  0x5d19, 0x0a67,
-  0x5d1a, 0x1ebf,
-  0x5d1b, 0x0a61,
-  0x5d1d, 0x1ebe,
-  0x5d1e, 0x1ebc,
-  0x5d1f, 0x1eca,
-  0x5d20, 0x1ec0,
-  0x5d22, 0x0a63,
-  0x5d23, 0x1ec9,
-  0x5d24, 0x0a68,
-  0x5d25, 0x1ec5,
-  0x5d26, 0x1ec4,
-  0x5d27, 0x0a69,
-  0x5d28, 0x1ec2,
-  0x5d29, 0x0a65,
-  0x5d2c, 0x3df7,
-  0x5d2e, 0x1ecb,
-  0x5d2f, 0x46d3,
-  0x5d30, 0x1ec7,
-  0x5d31, 0x2122,
-  0x5d32, 0x2129,
-  0x5d33, 0x211e,
-  0x5d34, 0x0c34,
-  0x5d35, 0x211a,
-  0x5d36, 0x212a,
-  0x5d37, 0x2114,
-  0x5d38, 0x2127,
-  0x5d39, 0x2125,
-  0x5d3a, 0x211f,
-  0x5d3c, 0x2128,
-  0x5d3d, 0x2121,
-  0x5d3e, 0x4629,
-  0x5d3f, 0x2119,
-  0x5d40, 0x212b,
-  0x5d41, 0x2117,
-  0x5d42, 0x2124,
-  0x5d43, 0x2115,
-  0x5d45, 0x212c,
-  0x5d46, 0x4129,
-  0x5d47, 0x0c35,
-  0x5d48, 0x462a,
-  0x5d49, 0x2126,
-  0x5d4a, 0x23be,
-  0x5d4b, 0x2118,
-  0x5d4c, 0x0c32,
-  0x5d4e, 0x211c,
-  0x5d50, 0x0c33,
-  0x5d51, 0x211b,
-  0x5d52, 0x2120,
-  0x5d55, 0x211d,
-  0x5d56, 0x43ba,
-  0x5d57, 0x3fca,
-  0x5d59, 0x2123,
-  0x5d5b, 0x3dd5,
-  0x5d5e, 0x23c2,
-  0x5d62, 0x23c5,
-  0x5d63, 0x23bd,
-  0x5d65, 0x23bf,
-  0x5d67, 0x23c4,
-  0x5d68, 0x23c3,
-  0x5d69, 0x0dfd,
-  0x5d6b, 0x2116,
-  0x5d6c, 0x23c1,
-  0x5d6f, 0x0dfe,
-  0x5d70, 0x46e4,
-  0x5d71, 0x23bc,
-  0x5d72, 0x23c0,
-  0x5d74, 0x3eef,
-  0x5d77, 0x2669,
-  0x5d79, 0x2670,
-  0x5d7a, 0x2667,
-  0x5d7c, 0x266e,
-  0x5d7d, 0x2665,
-  0x5d7e, 0x266d,
-  0x5d7f, 0x2671,
-  0x5d80, 0x2664,
-  0x5d81, 0x2668,
-  0x5d82, 0x2663,
-  0x5d84, 0x0fc3,
-  0x5d85, 0x3e34,
-  0x5d86, 0x2666,
-  0x5d87, 0x0fc4,
-  0x5d88, 0x266c,
-  0x5d89, 0x266b,
-  0x5d8a, 0x266a,
-  0x5d8b, 0x4124,
-  0x5d8d, 0x266f,
-  0x5d8e, 0x3f0c,
-  0x5d92, 0x28bb,
-  0x5d93, 0x28bd,
-  0x5d94, 0x1137,
-  0x5d95, 0x28be,
-  0x5d97, 0x28b9,
-  0x5d99, 0x28b8,
-  0x5d9a, 0x28c2,
-  0x5d9c, 0x28c0,
-  0x5d9d, 0x1136,
-  0x5d9e, 0x28c3,
-  0x5d9f, 0x28ba,
-  0x5da0, 0x28bf,
-  0x5da1, 0x28c1,
-  0x5da2, 0x28bc,
-  0x5da4, 0x462d,
-  0x5da7, 0x2b2c,
-  0x5da8, 0x2b31,
-  0x5da9, 0x2b2b,
-  0x5daa, 0x2b30,
-  0x5dab, 0x3e39,
-  0x5dac, 0x2b29,
-  0x5dad, 0x2b33,
-  0x5dae, 0x2b2f,
-  0x5daf, 0x2b34,
-  0x5db0, 0x2b2e,
-  0x5db1, 0x2b2a,
-  0x5db2, 0x2b32,
-  0x5db4, 0x2b35,
-  0x5db5, 0x2b2d,
-  0x5db6, 0x4158,
-  0x5db7, 0x2d5b,
-  0x5db8, 0x13cc,
-  0x5db9, 0x462e,
-  0x5dba, 0x13ca,
-  0x5dbc, 0x13c9,
-  0x5dbd, 0x13cb,
-  0x5dc0, 0x2f1b,
-  0x5dc1, 0x3bff,
-  0x5dc2, 0x3023,
-  0x5dc3, 0x308c,
-  0x5dc6, 0x31cd,
-  0x5dc9, 0x1613,
-  0x5dcb, 0x32ce,
-  0x5dcd, 0x166f,
-  0x5dcf, 0x32cf,
-  0x5dd1, 0x337f,
-  0x5dd2, 0x16c2,
-  0x5dd4, 0x16c1,
-  0x5dd5, 0x337e,
-  0x5dd6, 0x16f7,
-  0x5dd7, 0x412c,
-  0x5dd8, 0x3414,
-  0x5ddb, 0x0226,
-  0x5ddd, 0x0287,
-  0x5dde, 0x03c8,
-  0x5ddf, 0x17e3,
-  0x5de0, 0x1871,
-  0x5de1, 0x051a,
-  0x5de2, 0x0a6b,
-  0x5de5, 0x0288,
-  0x5de6, 0x0338,
-  0x5de7, 0x0337,
-  0x5de8, 0x0336,
-  0x5deb, 0x048d,
-  0x5dee, 0x08a8,
-  0x5df0, 0x23c6,
-  0x5df1, 0x0289,
-  0x5df4, 0x02cb,
-  0x5df5, 0x3f61,
-  0x5df7, 0x070d,
-  0x5df9, 0x1ac9,
-  0x5dfd, 0x0c36,
-  0x5dfe, 0x028c,
-  0x5dff, 0x1788,
-  0x5e02, 0x0339,
-  0x5e04, 0x17a4,
-  0x5e06, 0x03c9,
-  0x5e09, 0x4140,
-  0x5e0a, 0x1872,
-  0x5e0b, 0x3d8a,
-  0x5e0c, 0x048e,
-  0x5e0e, 0x1873,
-  0x5e11, 0x05b0,
-  0x5e12, 0x3f2e,
-  0x5e14, 0x1970,
-  0x5e15, 0x05ae,
-  0x5e16, 0x05ad,
-  0x5e17, 0x196f,
-  0x5e18, 0x05ab,
-  0x5e19, 0x1971,
-  0x5e1a, 0x05ac,
-  0x5e1b, 0x05af,
-  0x5e1d, 0x070e,
-  0x5e1f, 0x0710,
-  0x5e20, 0x1acd,
-  0x5e21, 0x1aca,
-  0x5e24, 0x1ace,
-  0x5e25, 0x070f,
-  0x5e28, 0x1c87,
-  0x5e29, 0x1c86,
-  0x5e2b, 0x08aa,
-  0x5e2d, 0x08a9,
-  0x5e2e, 0x4135,
-  0x5e33, 0x0a6e,
-  0x5e34, 0x1ecd,
-  0x5e36, 0x0a6d,
-  0x5e37, 0x0a6f,
-  0x5e38, 0x0a6c,
-  0x5e3d, 0x0c38,
-  0x5e3e, 0x1ecc,
-  0x5e40, 0x0c39,
-  0x5e41, 0x212e,
-  0x5e42, 0x43a0,
-  0x5e43, 0x0c3a,
-  0x5e44, 0x212d,
-  0x5e45, 0x0c37,
-  0x5e48, 0x3a2c,
-  0x5e4a, 0x23c9,
-  0x5e4b, 0x23cb,
-  0x5e4c, 0x0dff,
-  0x5e4d, 0x23ca,
-  0x5e4e, 0x23c8,
-  0x5e4f, 0x23c7,
-  0x5e53, 0x2674,
-  0x5e54, 0x0fc9,
-  0x5e55, 0x0fc7,
-  0x5e57, 0x0fc8,
-  0x5e58, 0x2672,
-  0x5e5b, 0x0fc5,
-  0x5e5c, 0x28c7,
-  0x5e5d, 0x28c5,
-  0x5e5e, 0x3a2b,
-  0x5e5f, 0x1139,
-  0x5e60, 0x28c6,
-  0x5e61, 0x113a,
-  0x5e62, 0x1138,
-  0x5e63, 0x0fc6,
-  0x5e66, 0x2b38,
-  0x5e67, 0x2b36,
-  0x5e69, 0x28c4,
-  0x5e6a, 0x2d5d,
-  0x5e6b, 0x13cd,
-  0x5e6c, 0x2d5c,
-  0x5e6d, 0x2f1c,
-  0x5e6f, 0x2b39,
-  0x5e70, 0x308d,
-  0x5e72, 0x028d,
-  0x5e73, 0x033b,
-  0x5e74, 0x03cb,
-  0x5e75, 0x17e4,
-  0x5e76, 0x03ca,
-  0x5e78, 0x05b1,
-  0x5e79, 0x0e00,
-  0x5e7a, 0x0227,
-  0x5e7b, 0x02cc,
-  0x5e7c, 0x033c,
-  0x5e7d, 0x0711,
-  0x5e7e, 0x0c3b,
-  0x5e7f, 0x0228,
-  0x5e80, 0x17a5,
-  0x5e82, 0x17a6,
-  0x5e83, 0x4108,
-  0x5e84, 0x17e5,
-  0x5e86, 0x4552,
-  0x5e87, 0x0490,
-  0x5e88, 0x1877,
-  0x5e89, 0x1875,
-  0x5e8a, 0x0491,
-  0x5e8b, 0x1874,
-  0x5e8c, 0x1876,
-  0x5e8d, 0x1878,
-  0x5e8f, 0x048f,
-  0x5e95, 0x05b5,
-  0x5e97, 0x05b3,
-  0x5e9a, 0x05b2,
-  0x5e9b, 0x1ad2,
-  0x5e9c, 0x05b4,
-  0x5ea0, 0x0712,
-  0x5ea2, 0x1ad1,
-  0x5ea3, 0x1ad3,
-  0x5ea4, 0x1ad0,
-  0x5ea5, 0x1ad4,
-  0x5ea6, 0x0713,
-  0x5ea7, 0x08ad,
-  0x5ea8, 0x1c88,
-  0x5eaa, 0x1c8a,
-  0x5eab, 0x08ab,
-  0x5eac, 0x1c8b,
-  0x5ead, 0x08ac,
-  0x5eae, 0x1c89,
-  0x5eb0, 0x1acf,
-  0x5eb1, 0x1ece,
-  0x5eb2, 0x1ed1,
-  0x5eb4, 0x1ecf,
-  0x5eb5, 0x0a73,
-  0x5eb6, 0x0a72,
-  0x5eb7, 0x0a70,
-  0x5eb9, 0x1ed0,
-  0x5ebd, 0x43bd,
-  0x5ebe, 0x0a74,
-  0x5ec1, 0x0c3d,
-  0x5ec4, 0x0c3f,
-  0x5ec5, 0x23cc,
-  0x5ec6, 0x23ce,
-  0x5ec7, 0x23d0,
-  0x5ec8, 0x0e02,
-  0x5ec9, 0x0e01,
-  0x5eca, 0x0c3c,
-  0x5ecb, 0x23cf,
-  0x5ecc, 0x23cd,
-  0x5ecd, 0x3a30,
-  0x5ece, 0x2678,
-  0x5ed0, 0x413d,
-  0x5ed1, 0x2676,
-  0x5ed2, 0x267c,
-  0x5ed3, 0x0fca,
-  0x5ed4, 0x267d,
-  0x5ed5, 0x267a,
-  0x5ed6, 0x0fcb,
-  0x5ed7, 0x2677,
-  0x5ed8, 0x2675,
-  0x5ed9, 0x267b,
-  0x5eda, 0x113c,
-  0x5edb, 0x28c9,
-  0x5edc, 0x2679,
-  0x5edd, 0x113e,
-  0x5ede, 0x28ca,
-  0x5edf, 0x113d,
-  0x5ee0, 0x1140,
-  0x5ee1, 0x28cb,
-  0x5ee2, 0x113b,
-  0x5ee3, 0x113f,
-  0x5ee5, 0x2b3e,
-  0x5ee6, 0x2b3c,
-  0x5ee7, 0x2b3b,
-  0x5ee8, 0x2b3d,
-  0x5ee9, 0x2b3a,
-  0x5eec, 0x157d,
-  0x5eee, 0x31cf,
-  0x5ef1, 0x32d0,
-  0x5ef2, 0x3380,
-  0x5ef3, 0x1742,
-  0x5ef4, 0x0229,
-  0x5ef6, 0x05b7,
-  0x5ef7, 0x0492,
-  0x5ef8, 0x386f,
-  0x5ef9, 0x4143,
-  0x5efa, 0x0714,
-  0x5efb, 0x4144,
-  0x5efc, 0x4146,
-  0x5efe, 0x028e,
-  0x5eff, 0x02cd,
-  0x5f01, 0x033d,
-  0x5f02, 0x17e6,
-  0x5f04, 0x0493,
-  0x5f05, 0x1879,
-  0x5f07, 0x1ad5,
-  0x5f08, 0x0715,
-  0x5f0a, 0x0fcc,
-  0x5f0b, 0x028f,
-  0x5f0c, 0x3a3e,
-  0x5f0d, 0x4149,
-  0x5f0e, 0x3a3f,
-  0x5f0f, 0x03cc,
-  0x5f12, 0x0e03,
-  0x5f13, 0x0290,
-  0x5f14, 0x02ce,
-  0x5f17, 0x033f,
-  0x5f18, 0x033e,
-  0x5f1a, 0x17e7,
-  0x5f1b, 0x03cd,
-  0x5f1d, 0x187a,
-  0x5f1f, 0x0494,
-  0x5f22, 0x1973,
-  0x5f25, 0x4630,
-  0x5f26, 0x05b8,
-  0x5f28, 0x1972,
-  0x5f29, 0x05ba,
-  0x5f2d, 0x0716,
-  0x5f2e, 0x1ad6,
-  0x5f30, 0x1c8d,
-  0x5f31, 0x08ae,
-  0x5f33, 0x1c8c,
-  0x5f35, 0x0a75,
-  0x5f36, 0x1ed3,
-  0x5f37, 0x0a76,
-  0x5f38, 0x1ed4,
-  0x5f3a, 0x414e,
-  0x5f3c, 0x0c40,
-  0x5f40, 0x23d1,
-  0x5f43, 0x267f,
-  0x5f44, 0x267e,
-  0x5f46, 0x0fcd,
-  0x5f48, 0x1141,
-  0x5f49, 0x28cc,
-  0x5f4a, 0x12ad,
-  0x5f4b, 0x2b3f,
-  0x5f4c, 0x13ce,
-  0x5f4d, 0x3ba5,
-  0x5f4e, 0x16c3,
-  0x5f4f, 0x3416,
-  0x5f50, 0x022a,
-  0x5f51, 0x44e9,
-  0x5f54, 0x1976,
-  0x5f56, 0x1ad7,
-  0x5f57, 0x0a77,
-  0x5f58, 0x212f,
-  0x5f59, 0x0e04,
-  0x5f5c, 0x3d5a,
-  0x5f5d, 0x14cf,
-  0x5f61, 0x022b,
-  0x5f62, 0x0496,
-  0x5f63, 0x4152,
-  0x5f64, 0x0495,
-  0x5f65, 0x0717,
-  0x5f67, 0x1c8e,
-  0x5f69, 0x0a79,
-  0x5f6a, 0x0b89,
-  0x5f6b, 0x0a7a,
-  0x5f6c, 0x0a78,
-  0x5f6d, 0x0c41,
-  0x5f6f, 0x2680,
-  0x5f70, 0x0fce,
-  0x5f71, 0x1142,
-  0x5f72, 0x4154,
-  0x5f73, 0x1777,
-  0x5f74, 0x17e8,
-  0x5f76, 0x187c,
-  0x5f77, 0x0497,
-  0x5f78, 0x187b,
-  0x5f79, 0x0498,
-  0x5f7b, 0x4058,
-  0x5f7c, 0x05be,
-  0x5f7d, 0x1979,
-  0x5f7e, 0x1978,
-  0x5f7f, 0x05bd,
-  0x5f80, 0x05bb,
-  0x5f82, 0x1977,
-  0x5f83, 0x4631,
-  0x5f85, 0x0719,
-  0x5f86, 0x1ad8,
-  0x5f87, 0x071c,
-  0x5f88, 0x0718,
-  0x5f89, 0x071e,
-  0x5f8a, 0x071a,
-  0x5f8c, 0x071d,
-  0x5f90, 0x08b1,
-  0x5f91, 0x08b0,
-  0x5f92, 0x08af,
-  0x5f96, 0x1ed6,
-  0x5f97, 0x0a7b,
-  0x5f98, 0x0a7e,
-  0x5f99, 0x0a7c,
-  0x5f9b, 0x1ed5,
-  0x5f9c, 0x0a81,
-  0x5f9e, 0x0a7d,
-  0x5f9f, 0x1ed7,
-  0x5fa0, 0x0a80,
-  0x5fa1, 0x0a7f,
-  0x5fa4, 0x402c,
-  0x5fa5, 0x2131,
-  0x5fa6, 0x2130,
-  0x5fa7, 0x4157,
-  0x5fa8, 0x0c44,
-  0x5fa9, 0x0c42,
-  0x5fab, 0x2132,
-  0x5fac, 0x0e05,
-  0x5fad, 0x23d3,
-  0x5fae, 0x0e06,
-  0x5faf, 0x23d2,
-  0x5fb1, 0x3d98,
-  0x5fb2, 0x28cd,
-  0x5fb5, 0x1144,
-  0x5fb6, 0x2681,
-  0x5fb7, 0x1143,
-  0x5fb9, 0x0fcf,
-  0x5fba, 0x3f9f,
-  0x5fbb, 0x2b41,
-  0x5fbc, 0x2b40,
-  0x5fbd, 0x13cf,
-  0x5fbe, 0x2d5e,
-  0x5fbf, 0x308e,
-  0x5fc0, 0x31d1,
-  0x5fc3, 0x02d0,
-  0x5fc4, 0x44ea,
-  0x5fc5, 0x0340,
-  0x5fc9, 0x17a7,
-  0x5fcc, 0x049a,
-  0x5fcd, 0x049c,
-  0x5fcf, 0x17eb,
-  0x5fd0, 0x187f,
-  0x5fd1, 0x187e,
-  0x5fd2, 0x187d,
-  0x5fd4, 0x17ea,
-  0x5fd5, 0x17e9,
-  0x5fd6, 0x03cf,
-  0x5fd7, 0x049b,
-  0x5fd8, 0x0499,
-  0x5fd9, 0x03ce,
-  0x5fdb, 0x3a4a,
-  0x5fdd, 0x05bf,
-  0x5fde, 0x197a,
-  0x5fdf, 0x41af,
-  0x5fe0, 0x05c0,
-  0x5fe1, 0x1884,
-  0x5fe3, 0x1886,
-  0x5fe4, 0x1885,
-  0x5fe5, 0x197b,
-  0x5fe8, 0x1881,
-  0x5fea, 0x04a0,
-  0x5feb, 0x049e,
-  0x5fed, 0x1880,
-  0x5fee, 0x1882,
-  0x5fef, 0x1888,
-  0x5ff1, 0x049d,
-  0x5ff3, 0x1883,
-  0x5ff4, 0x188c,
-  0x5ff5, 0x05c2,
-  0x5ff7, 0x1889,
-  0x5ff8, 0x049f,
-  0x5ffa, 0x1887,
-  0x5ffb, 0x188a,
-  0x5ffd, 0x05c1,
-  0x5fff, 0x05c3,
-  0x6000, 0x188b,
-  0x6009, 0x198f,
-  0x600a, 0x1982,
-  0x600b, 0x1980,
-  0x600c, 0x198e,
-  0x600d, 0x1989,
-  0x600e, 0x0723,
-  0x600f, 0x05c4,
-  0x6010, 0x198a,
-  0x6011, 0x198d,
-  0x6012, 0x071f,
-  0x6013, 0x198c,
-  0x6014, 0x05c5,
-  0x6015, 0x05ca,
-  0x6016, 0x05c8,
-  0x6017, 0x1983,
-  0x6019, 0x197e,
-  0x601a, 0x1985,
-  0x601b, 0x05cf,
-  0x601c, 0x1990,
-  0x601d, 0x0720,
-  0x601e, 0x1986,
-  0x6020, 0x0721,
-  0x6021, 0x05cb,
-  0x6022, 0x1988,
-  0x6023, 0x4185,
-  0x6024, 0x1ae7,
-  0x6025, 0x0722,
-  0x6026, 0x197d,
-  0x6027, 0x05cc,
-  0x6028, 0x0724,
-  0x6029, 0x05cd,
-  0x602a, 0x05c9,
-  0x602b, 0x05ce,
-  0x602c, 0x1987,
-  0x602d, 0x197c,
-  0x602e, 0x198b,
-  0x602f, 0x05c6,
-  0x6031, 0x4161,
-  0x6032, 0x197f,
-  0x6033, 0x1984,
-  0x6034, 0x1981,
-  0x6035, 0x05c7,
-  0x6037, 0x1ad9,
-  0x6039, 0x1ada,
-  0x603b, 0x4553,
-  0x6040, 0x1ae4,
-  0x6041, 0x1c92,
-  0x6042, 0x1ae5,
-  0x6043, 0x072a,
-  0x6044, 0x1ae8,
-  0x6045, 0x1ade,
-  0x6046, 0x0729,
-  0x6047, 0x1ae0,
-  0x6049, 0x1ae1,
-  0x604a, 0x4074,
-  0x604c, 0x1ae3,
-  0x604d, 0x0725,
-  0x6050, 0x08b5,
-  0x6052, 0x36ec,
-  0x6053, 0x1adf,
-  0x6054, 0x1adb,
-  0x6055, 0x08b6,
-  0x6058, 0x1ae9,
-  0x6059, 0x08b2,
-  0x605a, 0x1c90,
-  0x605b, 0x1ae2,
-  0x605d, 0x1c8f,
-  0x605e, 0x1add,
-  0x605f, 0x1ae6,
-  0x6062, 0x0728,
-  0x6063, 0x08b3,
-  0x6064, 0x072e,
-  0x6065, 0x08b4,
-  0x6066, 0x1aea,
-  0x6067, 0x1c91,
-  0x6068, 0x0727,
-  0x6069, 0x08b8,
-  0x606a, 0x072d,
-  0x606b, 0x072c,
-  0x606c, 0x072b,
-  0x606d, 0x08b7,
-  0x606e, 0x1aeb,
-  0x606f, 0x08b9,
-  0x6070, 0x0726,
-  0x6072, 0x1adc,
-  0x6075, 0x3a56,
-  0x6077, 0x4005,
-  0x607e, 0x3a47,
-  0x607f, 0x0a82,
-  0x6080, 0x1c95,
-  0x6081, 0x1c97,
-  0x6083, 0x1c99,
-  0x6084, 0x08ba,
-  0x6085, 0x08c0,
-  0x6086, 0x1eda,
-  0x6087, 0x1c9d,
-  0x6088, 0x1c94,
-  0x6089, 0x0a84,
-  0x608a, 0x1ed8,
-  0x608c, 0x08bf,
-  0x608d, 0x08bd,
-  0x608e, 0x1c9f,
-  0x6090, 0x1ed9,
-  0x6092, 0x1c96,
-  0x6094, 0x08be,
-  0x6095, 0x1c9a,
-  0x6096, 0x08c1,
-  0x6097, 0x1c9c,
-  0x609a, 0x08bc,
-  0x609b, 0x1c9b,
-  0x609c, 0x1c9e,
-  0x609d, 0x1c98,
-  0x609e, 0x416a,
-  0x609f, 0x08bb,
-  0x60a0, 0x0a85,
-  0x60a2, 0x1c93,
-  0x60a3, 0x0a83,
-  0x60a4, 0x4001,
-  0x60a7, 0x3adc,
-  0x60a8, 0x0a86,
-  0x60b0, 0x1edc,
-  0x60b1, 0x1ee5,
-  0x60b2, 0x0c47,
-  0x60b3, 0x416c,
-  0x60b4, 0x0a88,
-  0x60b5, 0x0a8d,
-  0x60b6, 0x0c48,
-  0x60b7, 0x1ee7,
-  0x60b8, 0x0a94,
-  0x60b9, 0x2134,
-  0x60ba, 0x1edd,
-  0x60bb, 0x0a8c,
-  0x60bc, 0x0a8f,
-  0x60bd, 0x0a8a,
-  0x60be, 0x1edb,
-  0x60bf, 0x1ee9,
-  0x60c0, 0x1eec,
-  0x60c1, 0x2143,
-  0x60c3, 0x1eea,
-  0x60c4, 0x2138,
-  0x60c5, 0x0a8b,
-  0x60c6, 0x0a92,
-  0x60c7, 0x0a96,
-  0x60c8, 0x1ee4,
-  0x60c9, 0x2133,
-  0x60ca, 0x1ee8,
-  0x60cb, 0x0a87,
-  0x60cc, 0x2135,
-  0x60cd, 0x1eeb,
-  0x60ce, 0x2137,
-  0x60cf, 0x1ee0,
-  0x60d1, 0x0c45,
-  0x60d3, 0x1ede,
-  0x60d5, 0x0a91,
-  0x60d7, 0x4635,
-  0x60d8, 0x0a90,
-  0x60d9, 0x1ee2,
-  0x60da, 0x0a95,
-  0x60db, 0x1ee6,
-  0x60dc, 0x0a8e,
-  0x60dd, 0x1ee3,
-  0x60de, 0x3dcc,
-  0x60df, 0x0a93,
-  0x60e0, 0x0c49,
-  0x60e1, 0x0c46,
-  0x60e2, 0x2136,
-  0x60e3, 0x3d75,
-  0x60e4, 0x1ee1,
-  0x60e6, 0x0a89,
-  0x60e7, 0x3d84,
-  0x60e8, 0x3d7b,
-  0x60e9, 0x4009,
-  0x60f0, 0x0c4e,
-  0x60f1, 0x0c52,
-  0x60f2, 0x213a,
-  0x60f3, 0x0e0b,
-  0x60f4, 0x0c50,
-  0x60f5, 0x213e,
-  0x60f6, 0x0c54,
-  0x60f7, 0x23d4,
-  0x60f8, 0x2140,
-  0x60f9, 0x0e0d,
-  0x60fa, 0x0c4c,
-  0x60fb, 0x0c4f,
-  0x60fc, 0x2141,
-  0x60fd, 0x3fa8,
-  0x60fe, 0x2142,
-  0x60ff, 0x2148,
-  0x6100, 0x0c56,
-  0x6101, 0x0e0e,
-  0x6103, 0x2144,
-  0x6104, 0x2149,
-  0x6105, 0x213d,
-  0x6106, 0x0e18,
-  0x6107, 0x3c35,
-  0x6108, 0x0e0f,
-  0x6109, 0x0c55,
-  0x610a, 0x213b,
-  0x610b, 0x214a,
-  0x610c, 0x3c87,
-  0x610d, 0x0e17,
-  0x610e, 0x0c53,
-  0x610f, 0x0e08,
-  0x6110, 0x2147,
-  0x6112, 0x0c57,
-  0x6113, 0x213f,
-  0x6114, 0x2139,
-  0x6115, 0x0c4d,
-  0x6116, 0x213c,
-  0x6118, 0x2145,
-  0x6119, 0x3ef6,
-  0x611a, 0x0e07,
-  0x611b, 0x0e0c,
-  0x611c, 0x0c4a,
-  0x611d, 0x2146,
-  0x611f, 0x0e0a,
-  0x6123, 0x0c4b,
-  0x6127, 0x0e16,
-  0x6128, 0x2683,
-  0x6129, 0x23df,
-  0x612b, 0x23d7,
-  0x612c, 0x2682,
-  0x612e, 0x23db,
-  0x612f, 0x23dd,
-  0x6130, 0x3f37,
-  0x6132, 0x23da,
-  0x6134, 0x0e15,
-  0x6136, 0x23d9,
-  0x6137, 0x0e19,
-  0x613b, 0x2692,
-  0x613d, 0x4636,
-  0x613e, 0x0e14,
-  0x613f, 0x0fd1,
-  0x6140, 0x23e0,
-  0x6141, 0x2684,
-  0x6142, 0x4174,
-  0x6144, 0x0e12,
-  0x6145, 0x23d8,
-  0x6146, 0x23dc,
-  0x6147, 0x0fd0,
-  0x6148, 0x0e09,
-  0x6149, 0x23d5,
-  0x614b, 0x0fd2,
-  0x614c, 0x0e11,
-  0x614d, 0x0e13,
-  0x614e, 0x0e10,
-  0x614f, 0x23de,
-  0x6150, 0x3c32,
-  0x6152, 0x2688,
-  0x6154, 0x268e,
-  0x6155, 0x1149,
-  0x6156, 0x2695,
-  0x6158, 0x0fd8,
-  0x6159, 0x3fba,
-  0x615a, 0x0fd7,
-  0x615b, 0x2690,
-  0x615c, 0x4186,
-  0x615d, 0x1148,
-  0x615e, 0x2685,
-  0x615f, 0x0fd6,
-  0x6160, 0x494c,
-  0x6161, 0x2694,
-  0x6162, 0x0fd4,
-  0x6164, 0x4173,
-  0x6165, 0x2691,
-  0x6166, 0x28de,
-  0x6167, 0x1146,
-  0x6168, 0x0c51,
-  0x616a, 0x2693,
-  0x616b, 0x114d,
-  0x616c, 0x268b,
-  0x616e, 0x1147,
-  0x616f, 0x3fc0,
-  0x6170, 0x114c,
-  0x6171, 0x2686,
-  0x6172, 0x268a,
-  0x6173, 0x2687,
-  0x6174, 0x268d,
-  0x6175, 0x0fd9,
-  0x6176, 0x1145,
-  0x6177, 0x0fd3,
-  0x6179, 0x28d0,
-  0x617a, 0x268f,
-  0x617c, 0x114b,
-  0x617d, 0x3fbd,
-  0x617e, 0x114e,
-  0x6180, 0x268c,
-  0x6181, 0x4177,
-  0x6182, 0x114a,
-  0x6183, 0x28cf,
-  0x6187, 0x417a,
-  0x6189, 0x28d4,
-  0x618a, 0x12b1,
-  0x618b, 0x28ce,
-  0x618c, 0x2b4d,
-  0x618d, 0x28dd,
-  0x618e, 0x1152,
-  0x6190, 0x1150,
-  0x6191, 0x12af,
-  0x6192, 0x28da,
-  0x6193, 0x28d6,
-  0x6194, 0x1156,
-  0x6195, 0x3de0,
-  0x6196, 0x2b44,
-  0x6198, 0x3a55,
-  0x6199, 0x3a54,
-  0x619a, 0x1154,
-  0x619b, 0x28d5,
-  0x619c, 0x4002,
-  0x619d, 0x2b42,
-  0x619f, 0x28d9,
-  0x61a1, 0x28dc,
-  0x61a2, 0x28d3,
-  0x61a4, 0x1155,
-  0x61a7, 0x114f,
-  0x61a8, 0x2b43,
-  0x61a9, 0x12b0,
-  0x61aa, 0x28db,
-  0x61ab, 0x1151,
-  0x61ac, 0x1153,
-  0x61ad, 0x28d8,
-  0x61ae, 0x1157,
-  0x61af, 0x28d7,
-  0x61b0, 0x28d2,
-  0x61b1, 0x28d1,
-  0x61b2, 0x12ae,
-  0x61b3, 0x28df,
-  0x61b4, 0x2b46,
-  0x61b5, 0x2d60,
-  0x61b6, 0x12b3,
-  0x61b7, 0x4639,
-  0x61b8, 0x2b4c,
-  0x61b9, 0x43bf,
-  0x61ba, 0x2b4a,
-  0x61bc, 0x2d61,
-  0x61be, 0x12b4,
-  0x61bf, 0x2b4b,
-  0x61c0, 0x3a50,
-  0x61c1, 0x2b48,
-  0x61c2, 0x13d1,
-  0x61c3, 0x2d5f,
-  0x61c5, 0x2b45,
-  0x61c6, 0x2b47,
-  0x61c7, 0x13d2,
-  0x61c8, 0x12b6,
-  0x61c9, 0x13d0,
-  0x61ca, 0x12b5,
-  0x61cb, 0x13d4,
-  0x61cc, 0x2b49,
-  0x61cd, 0x12b2,
-  0x61cf, 0x463a,
-  0x61d0, 0x4181,
-  0x61d3, 0x417e,
-  0x61d6, 0x2f26,
-  0x61d8, 0x2f1e,
-  0x61da, 0x38b1,
-  0x61de, 0x2d67,
-  0x61df, 0x2f1f,
-  0x61e0, 0x2d63,
-  0x61e2, 0x3fc5,
-  0x61e3, 0x14d0,
-  0x61e4, 0x2d65,
-  0x61e5, 0x2d64,
-  0x61e6, 0x13d3,
-  0x61e7, 0x2d62,
-  0x61e8, 0x2d66,
-  0x61e9, 0x2f27,
-  0x61ea, 0x2f23,
-  0x61eb, 0x2f25,
-  0x61ed, 0x2f20,
-  0x61f0, 0x2f24,
-  0x61f1, 0x2f22,
-  0x61f2, 0x157e,
-  0x61f5, 0x1581,
-  0x61f6, 0x1580,
-  0x61f7, 0x157f,
-  0x61f8, 0x1614,
-  0x61f9, 0x31d3,
-  0x61fa, 0x1615,
-  0x61fb, 0x308f,
-  0x61fc, 0x1670,
-  0x61fd, 0x32d1,
-  0x61fe, 0x1671,
-  0x61ff, 0x16c4,
-  0x6200, 0x16f8,
-  0x6201, 0x3417,
-  0x6203, 0x3418,
-  0x6207, 0x3533,
-  0x6208, 0x02d1,
-  0x6209, 0x17a8,
-  0x620a, 0x0341,
-  0x620c, 0x03d1,
-  0x620e, 0x03d0,
-  0x6210, 0x03d3,
-  0x6211, 0x04a2,
-  0x6212, 0x04a1,
-  0x6214, 0x1991,
-  0x6215, 0x05d1,
-  0x6216, 0x05d0,
-  0x6219, 0x1ca0,
-  0x621a, 0x0a97,
-  0x621f, 0x0c58,
-  0x6220, 0x23e1,
-  0x6221, 0x0e1a,
-  0x6223, 0x23e3,
-  0x6224, 0x23e5,
-  0x6225, 0x23e4,
-  0x6227, 0x2697,
-  0x6229, 0x2696,
-  0x622a, 0x0fda,
-  0x622b, 0x2698,
-  0x622c, 0x463c,
-  0x622d, 0x28e0,
-  0x622e, 0x1158,
-  0x6230, 0x12b7,
-  0x6232, 0x13d5,
-  0x6233, 0x14d1,
-  0x6234, 0x13d6,
-  0x6236, 0x02d2,
-  0x6237, 0x451a,
-  0x6239, 0x3fc2,
-  0x623a, 0x188d,
-  0x623d, 0x1992,
-  0x623e, 0x05d3,
-  0x623f, 0x05d2,
-  0x6240, 0x05d4,
-  0x6241, 0x072f,
-  0x6242, 0x1aec,
-  0x6246, 0x1ca1,
-  0x6247, 0x08c2,
-  0x6248, 0x0a99,
-  0x6249, 0x0c59,
-  0x624a, 0x214b,
-  0x624b, 0x02d3,
-  0x624c, 0x44ec,
-  0x624d, 0x0291,
-  0x624e, 0x02d4,
-  0x6250, 0x17a9,
-  0x6251, 0x0345,
-  0x6252, 0x0344,
-  0x6253, 0x0342,
-  0x6258, 0x03d6,
-  0x6259, 0x17f2,
-  0x625a, 0x17f4,
-  0x625b, 0x03d5,
-  0x625c, 0x17ec,
-  0x625e, 0x17ed,
-  0x6260, 0x17f3,
-  0x6261, 0x17ef,
-  0x6262, 0x17f1,
-  0x6263, 0x03d4,
-  0x6264, 0x17ee,
-  0x6265, 0x17f5,
-  0x6266, 0x17f0,
-  0x6268, 0x3f15,
-  0x626d, 0x04a9,
-  0x626e, 0x04b2,
-  0x626f, 0x04b0,
-  0x6270, 0x1897,
-  0x6271, 0x1894,
-  0x6272, 0x189c,
-  0x6273, 0x04ae,
-  0x6274, 0x189d,
-  0x6276, 0x04a7,
-  0x6277, 0x189a,
-  0x6279, 0x04ad,
-  0x627a, 0x1896,
-  0x627b, 0x1895,
-  0x627c, 0x04ab,
-  0x627d, 0x189b,
-  0x627e, 0x04ac,
-  0x627f, 0x05d5,
-  0x6280, 0x04a6,
-  0x6281, 0x1898,
-  0x6282, 0x3f86,
-  0x6283, 0x188e,
-  0x6284, 0x04a3,
-  0x6285, 0x3f50,
-  0x6286, 0x04b6,
-  0x6287, 0x1893,
-  0x6288, 0x1899,
-  0x6289, 0x04a8,
-  0x628a, 0x04aa,
-  0x628c, 0x188f,
-  0x628e, 0x1890,
-  0x6290, 0x43c0,
-  0x6291, 0x04b5,
-  0x6292, 0x04af,
-  0x6293, 0x04b4,
-  0x6294, 0x1892,
-  0x6295, 0x04b3,
-  0x6296, 0x04a5,
-  0x6297, 0x04a4,
-  0x6298, 0x04b1,
-  0x629d, 0x3e96,
-  0x62a4, 0x3a69,
-  0x62a6, 0x3fc1,
-  0x62a8, 0x05e3,
-  0x62a9, 0x199e,
-  0x62aa, 0x1997,
-  0x62ab, 0x05de,
-  0x62ac, 0x05f1,
-  0x62ad, 0x1993,
-  0x62ae, 0x199a,
-  0x62af, 0x199c,
-  0x62b0, 0x199f,
-  0x62b1, 0x05ec,
-  0x62b3, 0x199b,
-  0x62b4, 0x1994,
-  0x62b5, 0x05ea,
-  0x62b6, 0x1998,
-  0x62b8, 0x19a0,
-  0x62b9, 0x05db,
-  0x62bb, 0x199d,
-  0x62bc, 0x05e5,
-  0x62bd, 0x05e4,
-  0x62be, 0x1996,
-  0x62bf, 0x05d9,
-  0x62c2, 0x05da,
-  0x62c3, 0x3d8f,
-  0x62c4, 0x05d8,
-  0x62c5, 0x418a,
-  0x62c6, 0x05f0,
-  0x62c7, 0x05e8,
-  0x62c8, 0x05e2,
-  0x62c9, 0x05d6,
-  0x62ca, 0x1999,
-  0x62cb, 0x05e1,
-  0x62cc, 0x05d7,
-  0x62cd, 0x05e9,
-  0x62ce, 0x05f2,
-  0x62cf, 0x1aee,
-  0x62d0, 0x05e6,
-  0x62d1, 0x1995,
-  0x62d2, 0x05dc,
-  0x62d3, 0x05df,
-  0x62d5, 0x418c,
-  0x62d6, 0x05ee,
-  0x62d8, 0x05ed,
-  0x62d9, 0x05e7,
-  0x62da, 0x05eb,
-  0x62db, 0x05dd,
-  0x62dc, 0x0730,
-  0x62df, 0x401c,
-  0x62e5, 0x463d,
-  0x62eb, 0x1af4,
-  0x62ec, 0x073c,
-  0x62ed, 0x0734,
-  0x62ee, 0x0736,
-  0x62ef, 0x073b,
-  0x62f0, 0x1b00,
-  0x62f1, 0x0739,
-  0x62f2, 0x1ca2,
-  0x62f3, 0x08c3,
-  0x62f4, 0x073e,
-  0x62f5, 0x1af1,
-  0x62f6, 0x1af9,
-  0x62f7, 0x073a,
-  0x62f8, 0x1af8,
-  0x62f9, 0x1af5,
-  0x62fa, 0x1afd,
-  0x62fb, 0x1aff,
-  0x62fc, 0x0733,
-  0x62fd, 0x0737,
-  0x62fe, 0x073d,
-  0x62ff, 0x08c5,
-  0x6300, 0x1afa,
-  0x6301, 0x0735,
-  0x6302, 0x0740,
-  0x6303, 0x1af3,
-  0x6307, 0x0738,
-  0x6308, 0x08c4,
-  0x6309, 0x0732,
-  0x630b, 0x1af0,
-  0x630c, 0x1af7,
-  0x630d, 0x1aef,
-  0x630e, 0x1af2,
-  0x630f, 0x1af6,
-  0x6310, 0x1ca3,
-  0x6311, 0x073f,
-  0x6313, 0x1afb,
-  0x6315, 0x1afe,
-  0x6316, 0x0731,
-  0x6318, 0x43c1,
-  0x6328, 0x08d3,
-  0x6329, 0x1caf,
-  0x632a, 0x08d1,
-  0x632c, 0x1ca5,
-  0x632d, 0x1cb5,
-  0x632e, 0x3edd,
-  0x632f, 0x08c8,
-  0x6331, 0x3a65,
-  0x6332, 0x1eed,
-  0x6333, 0x1cb7,
-  0x6334, 0x1cb1,
-  0x6335, 0x3f16,
-  0x6336, 0x1ca8,
-  0x6337, 0x3a63,
-  0x6338, 0x1cba,
-  0x6339, 0x1cab,
-  0x633a, 0x08ce,
-  0x633b, 0x1f04,
-  0x633c, 0x1cae,
-  0x633d, 0x08d0,
-  0x633e, 0x08c7,
-  0x6340, 0x1cbc,
-  0x6341, 0x1cb0,
-  0x6342, 0x08ca,
-  0x6343, 0x1ca9,
-  0x6344, 0x1ca6,
-  0x6346, 0x08cb,
-  0x6347, 0x1cb6,
-  0x6348, 0x1cbd,
-  0x6349, 0x08cd,
-  0x634a, 0x1cad,
-  0x634b, 0x1cac,
-  0x634c, 0x08d5,
-  0x634d, 0x08d4,
-  0x634e, 0x08c6,
-  0x634f, 0x08cc,
-  0x6350, 0x08cf,
-  0x6351, 0x1cb9,
-  0x6354, 0x1cb3,
-  0x6355, 0x08c9,
-  0x6356, 0x1ca4,
-  0x6357, 0x1cbb,
-  0x6358, 0x1cb2,
-  0x6359, 0x1cb4,
-  0x635a, 0x1cb8,
-  0x6364, 0x3fc7,
-  0x6365, 0x1eee,
-  0x6367, 0x0aa1,
-  0x6368, 0x0ab5,
-  0x6369, 0x0ab4,
-  0x636b, 0x0aa9,
-  0x636c, 0x418e,
-  0x636d, 0x1f00,
-  0x636e, 0x1efc,
-  0x636f, 0x1ef9,
-  0x6370, 0x1f0b,
-  0x6371, 0x0aa4,
-  0x6372, 0x0a9c,
-  0x6375, 0x1efe,
-  0x6376, 0x0c69,
-  0x6377, 0x0aa0,
-  0x6378, 0x1f06,
-  0x6379, 0x4367,
-  0x637a, 0x0ab6,
-  0x637b, 0x0ab3,
-  0x637c, 0x1f02,
-  0x637d, 0x1ef1,
-  0x637f, 0x3f4b,
-  0x6380, 0x0ab2,
-  0x6381, 0x1f08,
-  0x6382, 0x1ef0,
-  0x6383, 0x0aa7,
-  0x6384, 0x0aab,
-  0x6385, 0x1f07,
-  0x6387, 0x1efa,
-  0x6388, 0x0aac,
-  0x6389, 0x0aa6,
-  0x638a, 0x1eef,
-  0x638b, 0x4188,
-  0x638c, 0x0c5b,
-  0x638d, 0x1f0a,
-  0x638e, 0x1ef8,
-  0x638f, 0x0ab1,
-  0x6390, 0x1efb,
-  0x6391, 0x1f09,
-  0x6392, 0x0ab0,
-  0x6394, 0x214c,
-  0x6396, 0x0a9d,
-  0x6397, 0x1ef6,
-  0x6398, 0x0aa2,
-  0x6399, 0x0aad,
-  0x639b, 0x0aa8,
-  0x639c, 0x1eff,
-  0x639d, 0x1ef5,
-  0x639e, 0x1ef3,
-  0x639f, 0x1f05,
-  0x63a0, 0x0a9a,
-  0x63a1, 0x0aae,
-  0x63a2, 0x0a9e,
-  0x63a3, 0x0c5a,
-  0x63a4, 0x1f03,
-  0x63a5, 0x0a9f,
-  0x63a7, 0x0a9b,
-  0x63a8, 0x0aaa,
-  0x63a9, 0x0aa5,
-  0x63aa, 0x0aa3,
-  0x63ab, 0x1ef7,
-  0x63ac, 0x0aaf,
-  0x63ad, 0x1ef4,
-  0x63ae, 0x1f01,
-  0x63af, 0x1efd,
-  0x63b0, 0x214e,
-  0x63b1, 0x214d,
-  0x63b9, 0x3e9d,
-  0x63bd, 0x1ef2,
-  0x63be, 0x215e,
-  0x63c0, 0x0c5d,
-  0x63c1, 0x46a8,
-  0x63c2, 0x2164,
-  0x63c3, 0x2153,
-  0x63c4, 0x2161,
-  0x63c5, 0x23e6,
-  0x63c6, 0x0c60,
-  0x63c7, 0x2165,
-  0x63c8, 0x2168,
-  0x63c9, 0x0c5f,
-  0x63ca, 0x2156,
-  0x63cb, 0x2167,
-  0x63cc, 0x2166,
-  0x63cd, 0x0c61,
-  0x63ce, 0x214f,
-  0x63cf, 0x0c5c,
-  0x63d0, 0x0c64,
-  0x63d1, 0x3a66,
-  0x63d2, 0x0c62,
-  0x63d3, 0x2163,
-  0x63d5, 0x2159,
-  0x63d6, 0x0c66,
-  0x63d7, 0x216a,
-  0x63d8, 0x2162,
-  0x63d9, 0x216b,
-  0x63da, 0x0c6e,
-  0x63db, 0x0c6c,
-  0x63dc, 0x2160,
-  0x63dd, 0x215f,
-  0x63de, 0x3e60,
-  0x63df, 0x215d,
-  0x63e0, 0x2157,
-  0x63e1, 0x0c65,
-  0x63e2, 0x4641,
-  0x63e3, 0x0c63,
-  0x63e4, 0x1caa,
-  0x63e5, 0x2150,
-  0x63e6, 0x489f,
-  0x63e7, 0x2404,
-  0x63e8, 0x2151,
-  0x63e9, 0x0c5e,
-  0x63ea, 0x0c6b,
-  0x63eb, 0x23e8,
-  0x63ed, 0x0c67,
-  0x63ef, 0x2152,
-  0x63f0, 0x2169,
-  0x63f1, 0x23e7,
-  0x63f2, 0x215a,
-  0x63f3, 0x2155,
-  0x63f4, 0x0c6a,
-  0x63f5, 0x215b,
-  0x63f6, 0x2158,
-  0x63f8, 0x4192,
-  0x63f9, 0x0c6f,
-  0x63fb, 0x4642,
-  0x63fc, 0x3e9c,
-  0x63fe, 0x3e9e,
-  0x6406, 0x0e2a,
-  0x6407, 0x4643,
-  0x6409, 0x23eb,
-  0x640a, 0x23fe,
-  0x640b, 0x2403,
-  0x640c, 0x23f7,
-  0x640d, 0x0e26,
-  0x640e, 0x2408,
-  0x640f, 0x0e23,
-  0x6410, 0x23e9,
-  0x6412, 0x23ea,
-  0x6413, 0x0e1c,
-  0x6414, 0x0e25,
-  0x6415, 0x23f1,
-  0x6416, 0x0e28,
-  0x6418, 0x23f2,
-  0x641a, 0x23ff,
-  0x641b, 0x2405,
-  0x641c, 0x0e24,
-  0x641e, 0x0e1e,
-  0x641f, 0x23f0,
-  0x6420, 0x23ec,
-  0x6421, 0x2407,
-  0x6422, 0x23f5,
-  0x6424, 0x23ed,
-  0x6425, 0x2401,
-  0x6426, 0x23f8,
-  0x6427, 0x2402,
-  0x6428, 0x23fa,
-  0x642a, 0x0e1f,
-  0x642b, 0x2699,
-  0x642c, 0x0e22,
-  0x642d, 0x0e20,
-  0x642e, 0x2406,
-  0x642f, 0x23fd,
-  0x6430, 0x23f9,
-  0x6432, 0x45d9,
-  0x6433, 0x23ee,
-  0x6434, 0x0fe4,
-  0x6435, 0x23fc,
-  0x6436, 0x0e27,
-  0x6437, 0x23f4,
-  0x6438, 0x4191,
-  0x6439, 0x23f3,
-  0x643a, 0x419d,
-  0x643b, 0x3a6b,
-  0x643d, 0x0e21,
-  0x643e, 0x0e1d,
-  0x643f, 0x26ae,
-  0x6440, 0x2400,
-  0x6441, 0x23fb,
-  0x6443, 0x23ef,
-  0x644b, 0x26a9,
-  0x644d, 0x269a,
-  0x644e, 0x26a5,
-  0x6450, 0x26ac,
-  0x6451, 0x0fe2,
-  0x6452, 0x0c6d,
-  0x6453, 0x26aa,
-  0x6454, 0x0fdd,
-  0x6458, 0x0fdc,
-  0x6459, 0x26b1,
-  0x645a, 0x43c2,
-  0x645b, 0x269b,
-  0x645c, 0x26a8,
-  0x645d, 0x269c,
-  0x645e, 0x26a7,
-  0x645f, 0x0fe0,
-  0x6460, 0x26ab,
-  0x6461, 0x215c,
-  0x6465, 0x26b2,
-  0x6466, 0x26a3,
-  0x6467, 0x0fe3,
-  0x6468, 0x28ee,
-  0x6469, 0x1159,
-  0x646b, 0x26b0,
-  0x646c, 0x26af,
-  0x646d, 0x0fe5,
-  0x646e, 0x28e1,
-  0x646f, 0x115a,
-  0x6470, 0x28e2,
-  0x6471, 0x3a5b,
-  0x6472, 0x269f,
-  0x6474, 0x269d,
-  0x6475, 0x26a2,
-  0x6476, 0x269e,
-  0x6477, 0x26b3,
-  0x6478, 0x0fdf,
-  0x6479, 0x115b,
-  0x647a, 0x0fe1,
-  0x647b, 0x0fe6,
-  0x647c, 0x436c,
-  0x647d, 0x26a1,
-  0x647f, 0x26ad,
-  0x6482, 0x26a6,
-  0x6485, 0x28e5,
-  0x6487, 0x0fdb,
-  0x6488, 0x115e,
-  0x6489, 0x2b54,
-  0x648a, 0x28ea,
-  0x648b, 0x28e9,
-  0x648c, 0x28eb,
-  0x648d, 0x4323,
-  0x648f, 0x28e8,
-  0x6490, 0x115f,
-  0x6491, 0x43c3,
-  0x6492, 0x1165,
-  0x6493, 0x1162,
-  0x6495, 0x1163,
-  0x6496, 0x28e3,
-  0x6497, 0x28e6,
-  0x6498, 0x28f0,
-  0x6499, 0x116b,
-  0x649a, 0x1169,
-  0x649c, 0x28e7,
-  0x649d, 0x2154,
-  0x649e, 0x115c,
-  0x649f, 0x28ed,
-  0x64a0, 0x28e4,
-  0x64a2, 0x116c,
-  0x64a3, 0x28ec,
-  0x64a4, 0x0fde,
-  0x64a5, 0x1161,
-  0x64a6, 0x26a4,
-  0x64a9, 0x1164,
-  0x64ab, 0x1168,
-  0x64ac, 0x116a,
-  0x64ad, 0x1167,
-  0x64ae, 0x1166,
-  0x64af, 0x42e1,
-  0x64b0, 0x1160,
-  0x64b1, 0x28ef,
-  0x64b2, 0x115d,
-  0x64b3, 0x116d,
-  0x64b4, 0x4340,
-  0x64b6, 0x3a64,
-  0x64bb, 0x12bb,
-  0x64bd, 0x2b53,
-  0x64be, 0x12c5,
-  0x64bf, 0x12c2,
-  0x64c0, 0x4645,
-  0x64c1, 0x12b9,
-  0x64c2, 0x12c0,
-  0x64c3, 0x2b55,
-  0x64c4, 0x12be,
-  0x64c5, 0x12b8,
-  0x64c7, 0x12bf,
-  0x64c9, 0x2b52,
-  0x64ca, 0x13d8,
-  0x64cb, 0x12ba,
-  0x64cd, 0x12c1,
-  0x64ce, 0x13d7,
-  0x64cf, 0x2b51,
-  0x64d0, 0x2b50,
-  0x64d2, 0x12c3,
-  0x64d3, 0x3f03,
-  0x64d4, 0x12c4,
-  0x64d6, 0x2b4f,
-  0x64d7, 0x2b4e,
-  0x64d8, 0x13d9,
-  0x64d9, 0x2b58,
-  0x64da, 0x12bd,
-  0x64db, 0x2b56,
-  0x64dd, 0x431e,
-  0x64e0, 0x13da,
-  0x64e1, 0x4199,
-  0x64e2, 0x13df,
-  0x64e3, 0x2d6a,
-  0x64e4, 0x2d6c,
-  0x64e5, 0x419a,
-  0x64e6, 0x13dc,
-  0x64e7, 0x37a8,
-  0x64e8, 0x2d6d,
-  0x64e9, 0x2d69,
-  0x64ea, 0x434a,
-  0x64eb, 0x2d6b,
-  0x64ec, 0x13dd,
-  0x64ed, 0x13e0,
-  0x64ef, 0x2d68,
-  0x64f0, 0x13db,
-  0x64f1, 0x13de,
-  0x64f2, 0x14d3,
-  0x64f3, 0x2b57,
-  0x64f4, 0x14d2,
-  0x64f7, 0x14d8,
-  0x64f8, 0x2f2b,
-  0x64fa, 0x14d6,
-  0x64fc, 0x2f2e,
-  0x64fd, 0x2f2a,
-  0x64fe, 0x14d4,
-  0x64ff, 0x2f28,
-  0x6500, 0x1582,
-  0x6501, 0x2f2c,
-  0x6503, 0x2f2d,
-  0x6504, 0x2f29,
-  0x6506, 0x14d5,
-  0x6507, 0x3090,
-  0x6509, 0x3093,
-  0x650a, 0x4536,
-  0x650c, 0x3094,
-  0x650d, 0x3092,
-  0x650e, 0x3095,
-  0x650f, 0x1583,
-  0x6510, 0x3091,
-  0x6511, 0x3aa9,
-  0x6513, 0x31d7,
-  0x6514, 0x1617,
-  0x6515, 0x31d6,
-  0x6516, 0x31d5,
-  0x6517, 0x31d4,
-  0x6518, 0x1616,
-  0x6519, 0x1618,
-  0x651b, 0x32d2,
-  0x651c, 0x1673,
-  0x651d, 0x1672,
-  0x651e, 0x4187,
-  0x651f, 0x3ec0,
-  0x6520, 0x3382,
-  0x6521, 0x3381,
-  0x6522, 0x3384,
-  0x6523, 0x16f9,
-  0x6524, 0x16c5,
-  0x6525, 0x341b,
-  0x6526, 0x3383,
-  0x6529, 0x341a,
-  0x652a, 0x16fb,
-  0x652b, 0x16fa,
-  0x652c, 0x1721,
-  0x652d, 0x3484,
-  0x652e, 0x34ca,
-  0x652f, 0x02d5,
-  0x6530, 0x3e62,
-  0x6532, 0x216c,
-  0x6533, 0x2b59,
-  0x6534, 0x022c,
-  0x6535, 0x44ed,
-  0x6536, 0x03d7,
-  0x6537, 0x17f6,
-  0x6538, 0x04b9,
-  0x6539, 0x04b7,
-  0x653b, 0x04b8,
-  0x653d, 0x19a1,
-  0x653e, 0x05f3,
-  0x653f, 0x0741,
-  0x6541, 0x1b01,
-  0x6543, 0x1b02,
-  0x6545, 0x0742,
-  0x6546, 0x1cbf,
-  0x6548, 0x08d6,
-  0x654a, 0x1cbe,
-  0x654d, 0x419f,
-  0x654f, 0x0abd,
-  0x6551, 0x0ab9,
-  0x6553, 0x1f0c,
-  0x6554, 0x0ac0,
-  0x6555, 0x0abf,
-  0x6556, 0x0ab8,
-  0x6557, 0x0abb,
-  0x6558, 0x0abe,
-  0x6559, 0x0aba,
-  0x655c, 0x2170,
-  0x655d, 0x0ab7,
-  0x655e, 0x0c70,
-  0x655f, 0x41a5,
-  0x6562, 0x0c72,
-  0x6564, 0x216f,
-  0x6565, 0x2172,
-  0x6566, 0x0c71,
-  0x6567, 0x216d,
-  0x6568, 0x2171,
-  0x656a, 0x216e,
-  0x656b, 0x3a6c,
-  0x656c, 0x0e2b,
-  0x656d, 0x41a4,
-  0x656f, 0x2409,
-  0x6572, 0x0fe7,
-  0x6573, 0x26b4,
-  0x6574, 0x12c6,
-  0x6575, 0x116e,
-  0x6576, 0x28f1,
-  0x6577, 0x116f,
-  0x6579, 0x28f3,
-  0x657a, 0x28f2,
-  0x657b, 0x28f4,
-  0x657c, 0x2b5b,
-  0x657f, 0x2b5a,
-  0x6580, 0x2d6f,
-  0x6581, 0x2d6e,
-  0x6582, 0x13e1,
-  0x6584, 0x3096,
-  0x6585, 0x41a3,
-  0x6586, 0x4648,
-  0x6587, 0x02d6,
-  0x6588, 0x410b,
-  0x6589, 0x4554,
-  0x658c, 0x2173,
-  0x6590, 0x0c75,
-  0x6591, 0x0c74,
-  0x6592, 0x240a,
-  0x6594, 0x2f2f,
-  0x6595, 0x1674,
-  0x6596, 0x341c,
-  0x6597, 0x02d7,
-  0x6599, 0x08d8,
-  0x659b, 0x0ac2,
-  0x659c, 0x0ac1,
-  0x659d, 0x2174,
-  0x659f, 0x0e2c,
-  0x65a0, 0x26b5,
-  0x65a1, 0x0fe8,
-  0x65a2, 0x2b5c,
-  0x65a4, 0x02d8,
-  0x65a5, 0x0346,
-  0x65a7, 0x05f4,
-  0x65a8, 0x19a2,
-  0x65aa, 0x1b03,
-  0x65ab, 0x0743,
-  0x65ac, 0x0ac3,
-  0x65ae, 0x2176,
-  0x65af, 0x0c76,
-  0x65b0, 0x0e2d,
-  0x65b2, 0x28f5,
-  0x65b5, 0x41a7,
-  0x65b6, 0x2d70,
-  0x65b7, 0x14d9,
-  0x65b8, 0x34cb,
-  0x65b9, 0x02d9,
-  0x65bb, 0x19a3,
-  0x65bc, 0x05f5,
-  0x65bd, 0x0744,
-  0x65be, 0x3e3b,
-  0x65bf, 0x1b04,
-  0x65c1, 0x08d9,
-  0x65c2, 0x1cc3,
-  0x65c3, 0x1cc1,
-  0x65c5, 0x08da,
-  0x65c6, 0x1cc0,
-  0x65cb, 0x0ac5,
-  0x65cd, 0x1f0d,
-  0x65ce, 0x0ac7,
-  0x65cf, 0x0ac4,
-  0x65d0, 0x2177,
-  0x65d1, 0x41aa,
-  0x65d2, 0x2178,
-  0x65d3, 0x240b,
-  0x65d4, 0x3ba8,
-  0x65d6, 0x0fea,
-  0x65d7, 0x0fe9,
-  0x65da, 0x2d71,
-  0x65db, 0x2f30,
-  0x65dd, 0x3098,
-  0x65de, 0x3097,
-  0x65df, 0x31d8,
-  0x65e0, 0x022d,
-  0x65e1, 0x1789,
-  0x65e2, 0x0745,
-  0x65e3, 0x41ae,
-  0x65e5, 0x02da,
-  0x65e6, 0x0347,
-  0x65e8, 0x03d9,
-  0x65e9, 0x03d8,
-  0x65ec, 0x03da,
-  0x65ee, 0x17f8,
-  0x65ef, 0x17f7,
-  0x65f0, 0x189e,
-  0x65f1, 0x04ba,
-  0x65f2, 0x18a1,
-  0x65f3, 0x18a0,
-  0x65f4, 0x189f,
-  0x65f5, 0x18a2,
-  0x65fa, 0x05f6,
-  0x65fb, 0x19a9,
-  0x65fc, 0x19a5,
-  0x65fd, 0x19ae,
-  0x65ff, 0x464a,
-  0x6600, 0x05fd,
-  0x6602, 0x05fb,
-  0x6603, 0x19aa,
-  0x6604, 0x19a6,
-  0x6605, 0x19ad,
-  0x6606, 0x05fa,
-  0x6607, 0x0601,
-  0x6608, 0x19a8,
-  0x6609, 0x19a4,
-  0x660a, 0x0600,
-  0x660b, 0x19ab,
-  0x660c, 0x05f9,
-  0x660d, 0x19ac,
-  0x660e, 0x05fc,
-  0x660f, 0x05fe,
-  0x6610, 0x19b0,
-  0x6611, 0x19af,
-  0x6612, 0x19a7,
-  0x6613, 0x05f8,
-  0x6614, 0x05f7,
-  0x6615, 0x05ff,
-  0x6618, 0x41b1,
-  0x661c, 0x1b09,
-  0x661d, 0x1b0f,
-  0x661e, 0x3a93,
-  0x661f, 0x074b,
-  0x6620, 0x0748,
-  0x6621, 0x1b06,
-  0x6622, 0x1b0b,
-  0x6623, 0x4295,
-  0x6624, 0x074e,
-  0x6625, 0x0746,
-  0x6626, 0x1b0a,
-  0x6627, 0x0749,
-  0x6628, 0x074c,
-  0x662b, 0x1b0d,
-  0x662d, 0x0747,
-  0x662e, 0x1b12,
-  0x662f, 0x074a,
-  0x6630, 0x3a8d,
-  0x6631, 0x074d,
-  0x6632, 0x1b07,
-  0x6633, 0x1b0c,
-  0x6634, 0x1b10,
-  0x6635, 0x1b08,
-  0x6636, 0x1b05,
-  0x6639, 0x1b11,
-  0x663a, 0x1b0e,
-  0x6641, 0x08e2,
-  0x6642, 0x08db,
-  0x6643, 0x08de,
-  0x6644, 0x41b4,
-  0x6645, 0x08e1,
-  0x6647, 0x1cc6,
-  0x6648, 0x3d99,
-  0x6649, 0x08dc,
-  0x664a, 0x1cc4,
-  0x664b, 0x41b7,
-  0x664c, 0x08e0,
-  0x664f, 0x08dd,
-  0x6651, 0x1cc7,
-  0x6652, 0x08df,
-  0x6653, 0x464b,
-  0x6657, 0x409b,
-  0x6659, 0x1f11,
-  0x665a, 0x0ac9,
-  0x665b, 0x1f10,
-  0x665c, 0x1f12,
-  0x665d, 0x0ac8,
-  0x665e, 0x0acd,
-  0x665f, 0x1cc5,
-  0x6661, 0x1f0f,
-  0x6662, 0x1f13,
-  0x6663, 0x3a90,
-  0x6664, 0x0aca,
-  0x6665, 0x1f0e,
-  0x6666, 0x0acc,
-  0x6667, 0x41b9,
-  0x6668, 0x0acb,
-  0x666a, 0x217f,
-  0x666b, 0x3a8b,
-  0x666c, 0x217a,
-  0x666e, 0x0c77,
-  0x666f, 0x0c7b,
-  0x6670, 0x0c78,
-  0x6671, 0x217d,
-  0x6672, 0x2180,
-  0x6673, 0x41bb,
-  0x6674, 0x0c79,
-  0x6676, 0x0c7a,
-  0x6677, 0x0c7f,
-  0x6678, 0x2414,
-  0x6679, 0x217e,
-  0x667a, 0x0c7d,
-  0x667b, 0x217b,
-  0x667c, 0x2179,
-  0x667d, 0x469b,
-  0x667e, 0x0c7e,
-  0x6680, 0x217c,
-  0x6684, 0x0e33,
-  0x6685, 0x4162,
-  0x6686, 0x240c,
-  0x6687, 0x0e30,
-  0x6689, 0x0e2f,
-  0x668a, 0x2411,
-  0x668b, 0x2410,
-  0x668c, 0x240d,
-  0x668d, 0x0e35,
-  0x668e, 0x3a89,
-  0x6690, 0x240f,
-  0x6691, 0x0c7c,
-  0x6692, 0x464d,
-  0x6694, 0x2413,
-  0x6695, 0x240e,
-  0x6696, 0x0e32,
-  0x6697, 0x0e2e,
-  0x6698, 0x0e34,
-  0x6699, 0x2412,
-  0x669a, 0x3d3d,
-  0x669d, 0x0fed,
-  0x669f, 0x26b8,
-  0x66a0, 0x26b7,
-  0x66a1, 0x26b6,
-  0x66a2, 0x0feb,
-  0x66a4, 0x40ba,
-  0x66a8, 0x0fec,
-  0x66a9, 0x28f9,
-  0x66aa, 0x28fc,
-  0x66ab, 0x1172,
-  0x66ad, 0x4948,
-  0x66ae, 0x1171,
-  0x66af, 0x28fd,
-  0x66b0, 0x28f8,
-  0x66b1, 0x1174,
-  0x66b2, 0x28fa,
-  0x66b3, 0x40b5,
-  0x66b4, 0x1173,
-  0x66b5, 0x28f7,
-  0x66b6, 0x3e13,
-  0x66b7, 0x28fb,
-  0x66b8, 0x12cc,
-  0x66b9, 0x12c9,
-  0x66ba, 0x2b65,
-  0x66bb, 0x2b64,
-  0x66bd, 0x2b63,
-  0x66be, 0x2b5e,
-  0x66bf, 0x3d9a,
-  0x66c0, 0x2b5f,
-  0x66c4, 0x12ca,
-  0x66c6, 0x12c7,
-  0x66c7, 0x12cb,
-  0x66c8, 0x2b5d,
-  0x66c9, 0x12c8,
-  0x66ca, 0x2b60,
-  0x66cc, 0x2b66,
-  0x66cd, 0x40b8,
-  0x66ce, 0x3a77,
-  0x66cf, 0x2b62,
-  0x66d2, 0x2d72,
-  0x66d6, 0x13e4,
-  0x66d8, 0x2f33,
-  0x66d9, 0x13e3,
-  0x66da, 0x2f31,
-  0x66dc, 0x14da,
-  0x66dd, 0x1585,
-  0x66de, 0x3099,
-  0x66e0, 0x1584,
-  0x66e3, 0x31da,
-  0x66e6, 0x1619,
-  0x66e8, 0x31d9,
-  0x66e9, 0x1675,
-  0x66eb, 0x341d,
-  0x66ec, 0x16fc,
-  0x66ed, 0x3485,
-  0x66f0, 0x02db,
-  0x66f1, 0x3e84,
-  0x66f2, 0x03dc,
-  0x66f4, 0x04bb,
-  0x66f6, 0x19b1,
-  0x66f7, 0x074f,
-  0x66f8, 0x08e3,
-  0x66f9, 0x0ace,
-  0x66fc, 0x0a1f,
-  0x66fe, 0x0c80,
-  0x6700, 0x0bf0,
-  0x6701, 0x2181,
-  0x6702, 0x41c4,
-  0x6703, 0x0e36,
-  0x6704, 0x26ba,
-  0x6705, 0x26b9,
-  0x6708, 0x02dc,
-  0x6709, 0x03de,
-  0x670a, 0x19b2,
-  0x670b, 0x0603,
-  0x670c, 0x3fe2,
-  0x670d, 0x0602,
-  0x670e, 0x3da1,
-  0x670f, 0x1b13,
-  0x6712, 0x1cc8,
-  0x6714, 0x08e4,
-  0x6716, 0x464f,
-  0x6717, 0x08e6,
-  0x6718, 0x1f14,
-  0x671b, 0x0ad0,
-  0x671d, 0x0c83,
-  0x671e, 0x3d8b,
-  0x671f, 0x0c82,
-  0x6720, 0x2415,
-  0x6721, 0x2522,
-  0x6722, 0x26bb,
-  0x6723, 0x2b67,
-  0x6725, 0x379f,
-  0x6726, 0x14db,
-  0x6727, 0x161a,
-  0x6728, 0x02dd,
-  0x672a, 0x034a,
-  0x672c, 0x0349,
-  0x672d, 0x034c,
-  0x672e, 0x0348,
-  0x6731, 0x03e1,
-  0x6733, 0x1800,
-  0x6734, 0x03e0,
-  0x6735, 0x03e2,
-  0x6736, 0x3e41,
-  0x6738, 0x17fb,
-  0x6739, 0x17fa,
-  0x673a, 0x17fd,
-  0x673b, 0x17fc,
-  0x673c, 0x17ff,
-  0x673d, 0x03df,
-  0x673e, 0x17f9,
-  0x673f, 0x17fe,
-  0x6744, 0x401b,
-  0x6745, 0x18a3,
-  0x6746, 0x04c5,
-  0x6747, 0x18a4,
-  0x6748, 0x18a8,
-  0x6749, 0x04c4,
-  0x674b, 0x18ac,
-  0x674c, 0x18a7,
-  0x674d, 0x18aa,
-  0x674e, 0x04bd,
-  0x6753, 0x04c7,
-  0x6755, 0x18a6,
-  0x6756, 0x04c2,
-  0x6757, 0x04c8,
-  0x6759, 0x18a5,
-  0x675a, 0x18ab,
-  0x675c, 0x04c1,
-  0x675d, 0x18a9,
-  0x675e, 0x04c3,
-  0x675f, 0x04bc,
-  0x6760, 0x04c6,
-  0x6761, 0x3d66,
-  0x6762, 0x41cb,
-  0x6767, 0x41ca,
-  0x676a, 0x0618,
-  0x676c, 0x19b4,
-  0x676d, 0x0604,
-  0x676f, 0x060e,
-  0x6771, 0x0607,
-  0x6772, 0x0619,
-  0x6773, 0x0609,
-  0x6774, 0x19bc,
-  0x6775, 0x0614,
-  0x6776, 0x19b7,
-  0x6777, 0x060a,
-  0x6778, 0x19c6,
-  0x677a, 0x19bf,
-  0x677b, 0x19b8,
-  0x677c, 0x0617,
-  0x677d, 0x19c4,
-  0x677e, 0x0612,
-  0x677f, 0x0610,
-  0x6781, 0x19c5,
-  0x6783, 0x19c3,
-  0x6784, 0x19bb,
-  0x6785, 0x19b3,
-  0x6786, 0x19ba,
-  0x6787, 0x060b,
-  0x6789, 0x0611,
-  0x678b, 0x0605,
-  0x678c, 0x19be,
-  0x678d, 0x19bd,
-  0x678e, 0x19b5,
-  0x678f, 0x46c1,
-  0x6790, 0x0613,
-  0x6791, 0x19c1,
-  0x6792, 0x19b6,
-  0x6793, 0x0616,
-  0x6794, 0x19c8,
-  0x6795, 0x0606,
-  0x6797, 0x060d,
-  0x6798, 0x19b9,
-  0x6799, 0x19c2,
-  0x679a, 0x0615,
-  0x679c, 0x0608,
-  0x679d, 0x060c,
-  0x679f, 0x19c0,
-  0x67a0, 0x3d7a,
-  0x67a4, 0x4651,
-  0x67ac, 0x41e3,
-  0x67ae, 0x1b34,
-  0x67af, 0x0757,
-  0x67b0, 0x0764,
-  0x67b1, 0x41f4,
-  0x67b2, 0x1b2f,
-  0x67b3, 0x1b25,
-  0x67b4, 0x075d,
-  0x67b5, 0x1b23,
-  0x67b6, 0x0756,
-  0x67b7, 0x1b1e,
-  0x67b8, 0x0760,
-  0x67b9, 0x1b2b,
-  0x67ba, 0x1b18,
-  0x67bb, 0x1b1a,
-  0x67bf, 0x37fa,
-  0x67c0, 0x1b1d,
-  0x67c1, 0x1b15,
-  0x67c2, 0x1b2a,
-  0x67c3, 0x1b3a,
-  0x67c4, 0x075b,
-  0x67c5, 0x1b1f,
-  0x67c6, 0x1b31,
-  0x67c8, 0x1b17,
-  0x67c9, 0x1b38,
-  0x67cb, 0x1b3c,
-  0x67cc, 0x1b33,
-  0x67cd, 0x1b24,
-  0x67ce, 0x1b2c,
-  0x67cf, 0x0761,
-  0x67d0, 0x0754,
-  0x67d1, 0x075c,
-  0x67d2, 0x0768,
-  0x67d3, 0x0751,
-  0x67d4, 0x0753,
-  0x67d6, 0x3b58,
-  0x67d7, 0x41ce,
-  0x67d8, 0x1b1c,
-  0x67d9, 0x0765,
-  0x67da, 0x075e,
-  0x67db, 0x1b36,
-  0x67dc, 0x1b19,
-  0x67dd, 0x0767,
-  0x67de, 0x0762,
-  0x67df, 0x1b22,
-  0x67e2, 0x0766,
-  0x67e3, 0x1b29,
-  0x67e4, 0x1b21,
-  0x67e5, 0x075f,
-  0x67e6, 0x1b35,
-  0x67e7, 0x1b2d,
-  0x67e9, 0x0759,
-  0x67ea, 0x1b3b,
-  0x67eb, 0x1b20,
-  0x67ec, 0x0755,
-  0x67ed, 0x1b32,
-  0x67ee, 0x1b28,
-  0x67ef, 0x075a,
-  0x67f0, 0x1b2e,
-  0x67f1, 0x0752,
-  0x67f2, 0x1b16,
-  0x67f3, 0x0763,
-  0x67f4, 0x08f5,
-  0x67f5, 0x0758,
-  0x67f6, 0x1b27,
-  0x67f7, 0x1b26,
-  0x67f8, 0x1b1b,
-  0x67f9, 0x3996,
-  0x67fa, 0x1b37,
-  0x67fc, 0x1b30,
-  0x67fe, 0x4555,
-  0x67ff, 0x0750,
-  0x6800, 0x43c7,
-  0x6801, 0x41d3,
-  0x6802, 0x3fc8,
-  0x6803, 0x3d6a,
-  0x6804, 0x4556,
-  0x680d, 0x4281,
-  0x6810, 0x399c,
-  0x6812, 0x1cdd,
-  0x6813, 0x08fc,
-  0x6814, 0x1cde,
-  0x6816, 0x1cd2,
-  0x6817, 0x08f1,
-  0x6818, 0x08fd,
-  0x681a, 0x1ccb,
-  0x681b, 0x4072,
-  0x681c, 0x1cd4,
-  0x681d, 0x1cdc,
-  0x681e, 0x46c2,
-  0x681f, 0x1cca,
-  0x6820, 0x1ce5,
-  0x6821, 0x08e7,
-  0x6822, 0x41d0,
-  0x6825, 0x1ce4,
-  0x6826, 0x1cdf,
-  0x6828, 0x1ce0,
-  0x6829, 0x08ef,
-  0x682a, 0x08fa,
-  0x682b, 0x1cd6,
-  0x682d, 0x1cd7,
-  0x682e, 0x1ce1,
-  0x682f, 0x1cd8,
-  0x6831, 0x1cd3,
-  0x6832, 0x1ccd,
-  0x6834, 0x1cdb,
-  0x6835, 0x1cd5,
-  0x6836, 0x3e2e,
-  0x6837, 0x421d,
-  0x6838, 0x08e8,
-  0x6839, 0x08ec,
-  0x683a, 0x1ce3,
-  0x683b, 0x1ccf,
-  0x683c, 0x08f8,
-  0x683d, 0x08f4,
-  0x683e, 0x4147,
-  0x6840, 0x08f7,
-  0x6841, 0x08fe,
-  0x6842, 0x08ed,
-  0x6843, 0x08f9,
-  0x6844, 0x1cda,
-  0x6845, 0x08fb,
-  0x6846, 0x08ea,
-  0x6847, 0x3beb,
-  0x6848, 0x08e9,
-  0x6849, 0x1ccc,
-  0x684a, 0x4653,
-  0x684b, 0x1cd0,
-  0x684c, 0x08f2,
-  0x684d, 0x1ce2,
-  0x684e, 0x1cd9,
-  0x684f, 0x1cd1,
-  0x6850, 0x08f6,
-  0x6851, 0x08f3,
-  0x6853, 0x08eb,
-  0x6854, 0x08ee,
-  0x6855, 0x3d90,
-  0x6856, 0x3814,
-  0x685d, 0x41d6,
-  0x6865, 0x4557,
-  0x686b, 0x1f29,
-  0x686d, 0x1f19,
-  0x686f, 0x1f1e,
-  0x6871, 0x1f2d,
-  0x6872, 0x1f2a,
-  0x6874, 0x1f23,
-  0x6875, 0x1f22,
-  0x6876, 0x0ad7,
-  0x6877, 0x1f26,
-  0x6878, 0x1f35,
-  0x6879, 0x1f15,
-  0x687b, 0x1f36,
-  0x687c, 0x1f28,
-  0x687d, 0x1f3a,
-  0x687e, 0x1f2e,
-  0x687f, 0x0ad6,
-  0x6880, 0x1f2c,
-  0x6881, 0x0ad1,
-  0x6882, 0x0ae6,
-  0x6883, 0x0adc,
-  0x6884, 0x4654,
-  0x6885, 0x0ae0,
-  0x6886, 0x0adf,
-  0x6887, 0x1f16,
-  0x6888, 0x46b7,
-  0x6889, 0x1f33,
-  0x688a, 0x1f39,
-  0x688b, 0x1f31,
-  0x688c, 0x1f38,
-  0x688f, 0x1f25,
-  0x6890, 0x1f17,
-  0x6891, 0x1f37,
-  0x6892, 0x1f27,
-  0x6893, 0x0ad4,
-  0x6894, 0x0ae1,
-  0x6896, 0x1f30,
-  0x6897, 0x0ada,
-  0x6898, 0x3aaa,
-  0x689b, 0x1f2f,
-  0x689c, 0x1f18,
-  0x689d, 0x0ae2,
-  0x689f, 0x0ae4,
-  0x68a0, 0x1f32,
-  0x68a1, 0x0ae5,
-  0x68a2, 0x0ad3,
-  0x68a3, 0x1f1f,
-  0x68a4, 0x1f34,
-  0x68a6, 0x40e4,
-  0x68a7, 0x0ad9,
-  0x68a8, 0x0ae3,
-  0x68a9, 0x1f21,
-  0x68aa, 0x1f2b,
-  0x68ab, 0x1f1c,
-  0x68ac, 0x1f20,
-  0x68ad, 0x0ade,
-  0x68ae, 0x1f1b,
-  0x68af, 0x0ad2,
-  0x68b0, 0x0adb,
-  0x68b1, 0x0ad8,
-  0x68b2, 0x1f24,
-  0x68b3, 0x08f0,
-  0x68b4, 0x2198,
-  0x68b5, 0x0ad5,
-  0x68b6, 0x3a9e,
-  0x68b9, 0x3d14,
-  0x68bd, 0x427c,
-  0x68c3, 0x41dc,
-  0x68c4, 0x0add,
-  0x68c5, 0x3c2e,
-  0x68c6, 0x219b,
-  0x68c7, 0x21b1,
-  0x68c8, 0x21a6,
-  0x68c9, 0x0c97,
-  0x68ca, 0x42eb,
-  0x68cb, 0x0c92,
-  0x68cc, 0x2195,
-  0x68cd, 0x0c93,
-  0x68ce, 0x21a5,
-  0x68d0, 0x219e,
-  0x68d1, 0x21ab,
-  0x68d2, 0x0c8f,
-  0x68d3, 0x2183,
-  0x68d4, 0x21ad,
-  0x68d5, 0x0c85,
-  0x68d6, 0x218b,
-  0x68d7, 0x0c88,
-  0x68d8, 0x0c87,
-  0x68da, 0x0c98,
-  0x68dc, 0x2185,
-  0x68dd, 0x21a7,
-  0x68df, 0x0c8a,
-  0x68e0, 0x0c86,
-  0x68e1, 0x2193,
-  0x68e3, 0x0c91,
-  0x68e4, 0x218e,
-  0x68e6, 0x21a9,
-  0x68e7, 0x0c8d,
-  0x68e8, 0x21a1,
-  0x68e9, 0x21ae,
-  0x68ea, 0x2188,
-  0x68eb, 0x218d,
-  0x68ec, 0x2187,
-  0x68ee, 0x0c8c,
-  0x68ef, 0x219a,
-  0x68f0, 0x242b,
-  0x68f1, 0x2189,
-  0x68f2, 0x0c90,
-  0x68f3, 0x2192,
-  0x68f4, 0x21aa,
-  0x68f5, 0x0c8b,
-  0x68f6, 0x218f,
-  0x68f7, 0x218c,
-  0x68f8, 0x219d,
-  0x68f9, 0x0c8e,
-  0x68fa, 0x0c84,
-  0x68fb, 0x0c9a,
-  0x68fc, 0x21a0,
-  0x68fd, 0x219f,
-  0x6900, 0x41df,
-  0x6901, 0x41de,
-  0x6902, 0x42fb,
-  0x6903, 0x429c,
-  0x6904, 0x2184,
-  0x6905, 0x0c89,
-  0x6906, 0x21ac,
-  0x6907, 0x2194,
-  0x6908, 0x2196,
-  0x6909, 0x4658,
-  0x690a, 0x21a3,
-  0x690b, 0x21a2,
-  0x690c, 0x2182,
-  0x690d, 0x0c94,
-  0x690e, 0x0c96,
-  0x690f, 0x218a,
-  0x6910, 0x2191,
-  0x6911, 0x2199,
-  0x6912, 0x0c95,
-  0x6913, 0x2190,
-  0x6914, 0x219c,
-  0x6915, 0x21af,
-  0x6917, 0x21a4,
-  0x6918, 0x3da2,
-  0x691a, 0x3d80,
-  0x691b, 0x37bd,
-  0x6925, 0x21b0,
-  0x692a, 0x2186,
-  0x692c, 0x3f38,
-  0x692f, 0x243f,
-  0x6930, 0x0e3e,
-  0x6932, 0x243d,
-  0x6933, 0x2428,
-  0x6934, 0x242d,
-  0x6935, 0x2426,
-  0x6936, 0x41e7,
-  0x6937, 0x2439,
-  0x6938, 0x2418,
-  0x6939, 0x241f,
-  0x693b, 0x2437,
-  0x693c, 0x2441,
-  0x693d, 0x2429,
-  0x693e, 0x4056,
-  0x693f, 0x241c,
-  0x6940, 0x242f,
-  0x6941, 0x2434,
-  0x6942, 0x2420,
-  0x6943, 0x4659,
-  0x6944, 0x2431,
-  0x6945, 0x241d,
-  0x6946, 0x456f,
-  0x6948, 0x2424,
-  0x694a, 0x0e40,
-  0x694b, 0x2438,
-  0x694c, 0x2436,
-  0x694e, 0x2419,
-  0x694f, 0x243b,
-  0x6951, 0x243c,
-  0x6952, 0x243e,
-  0x6953, 0x0e44,
-  0x6954, 0x0e3c,
-  0x6955, 0x3d86,
-  0x6956, 0x1f1d,
-  0x6957, 0x2421,
-  0x6958, 0x2433,
-  0x6959, 0x2422,
-  0x695a, 0x0e39,
-  0x695b, 0x0e49,
-  0x695c, 0x243a,
-  0x695d, 0x0e47,
-  0x695e, 0x0e43,
-  0x695f, 0x2417,
-  0x6960, 0x0e3b,
-  0x6961, 0x41e4,
-  0x6962, 0x241a,
-  0x6963, 0x0e48,
-  0x6964, 0x465b,
-  0x6965, 0x242a,
-  0x6966, 0x2416,
-  0x6967, 0x3d15,
-  0x6968, 0x0e41,
-  0x6969, 0x242e,
-  0x696a, 0x241e,
-  0x696b, 0x0e42,
-  0x696c, 0x2427,
-  0x696d, 0x0e38,
-  0x696e, 0x0c99,
-  0x696f, 0x2430,
-  0x6970, 0x2197,
-  0x6971, 0x241b,
-  0x6972, 0x3a6d,
-  0x6973, 0x41db,
-  0x6974, 0x2435,
-  0x6975, 0x0e3d,
-  0x6976, 0x2432,
-  0x6977, 0x0e3a,
-  0x6978, 0x242c,
-  0x6979, 0x0e45,
-  0x697a, 0x2423,
-  0x697b, 0x2440,
-  0x6980, 0x3f3e,
-  0x6982, 0x0e3f,
-  0x6983, 0x24af,
-  0x6985, 0x465d,
-  0x6986, 0x0e46,
-  0x698a, 0x3d74,
-  0x698d, 0x26c9,
-  0x698e, 0x26c7,
-  0x6990, 0x26dd,
-  0x6991, 0x26c5,
-  0x6993, 0x26d7,
-  0x6994, 0x0e37,
-  0x6995, 0x0ff0,
-  0x6996, 0x26c1,
-  0x6997, 0x26dc,
-  0x6998, 0x41e8,
-  0x6999, 0x26c6,
-  0x699a, 0x26d4,
-  0x699b, 0x0ff5,
-  0x699c, 0x0fee,
-  0x699e, 0x26da,
-  0x699f, 0x465c,
-  0x69a0, 0x26bf,
-  0x69a1, 0x26d9,
-  0x69a2, 0x3730,
-  0x69a3, 0x1000,
-  0x69a4, 0x26d0,
-  0x69a5, 0x26e0,
-  0x69a6, 0x0ffe,
-  0x69a7, 0x26c8,
-  0x69a8, 0x0fef,
-  0x69a9, 0x26ca,
-  0x69aa, 0x26d8,
-  0x69ab, 0x0ff8,
-  0x69ac, 0x26c3,
-  0x69ad, 0x0ffc,
-  0x69ae, 0x0ff2,
-  0x69af, 0x26cc,
-  0x69b0, 0x26c2,
-  0x69b1, 0x26bc,
-  0x69b2, 0x3ff6,
-  0x69b3, 0x26d6,
-  0x69b4, 0x0ff9,
-  0x69b5, 0x26df,
-  0x69b6, 0x26bd,
-  0x69b7, 0x0ff6,
-  0x69b9, 0x26d2,
-  0x69bb, 0x0ff7,
-  0x69bc, 0x26c4,
-  0x69bd, 0x26cf,
-  0x69be, 0x26cb,
-  0x69bf, 0x26cd,
-  0x69c0, 0x3f5d,
-  0x69c1, 0x0ff1,
-  0x69c2, 0x26de,
-  0x69c3, 0x0fff,
-  0x69c4, 0x26ce,
-  0x69c6, 0x26e1,
-  0x69c9, 0x26be,
-  0x69ca, 0x26d3,
-  0x69cb, 0x0ff4,
-  0x69cc, 0x0ffd,
-  0x69cd, 0x0ffb,
-  0x69ce, 0x26c0,
-  0x69cf, 0x26d5,
-  0x69d0, 0x0ffa,
-  0x69d1, 0x39ef,
-  0x69d3, 0x0ff3,
-  0x69d4, 0x26d1,
-  0x69d5, 0x3e3c,
-  0x69d6, 0x465e,
-  0x69d9, 0x26db,
-  0x69e1, 0x41d8,
-  0x69e2, 0x2909,
-  0x69e4, 0x2905,
-  0x69e5, 0x2901,
-  0x69e6, 0x2915,
-  0x69e7, 0x2912,
-  0x69e8, 0x1177,
-  0x69e9, 0x3d91,
-  0x69eb, 0x2919,
-  0x69ec, 0x2908,
-  0x69ed, 0x1182,
-  0x69ee, 0x290f,
-  0x69f1, 0x2904,
-  0x69f2, 0x290e,
-  0x69f3, 0x117f,
-  0x69f4, 0x2922,
-  0x69f6, 0x291f,
-  0x69f7, 0x2911,
-  0x69f8, 0x2902,
-  0x69f9, 0x41ed,
-  0x69fa, 0x41c7,
-  0x69fb, 0x2916,
-  0x69fc, 0x2918,
-  0x69fd, 0x117b,
-  0x69fe, 0x290c,
-  0x69ff, 0x2907,
-  0x6a00, 0x28fe,
-  0x6a01, 0x1178,
-  0x6a02, 0x1180,
-  0x6a03, 0x3e29,
-  0x6a04, 0x291b,
-  0x6a05, 0x1181,
-  0x6a06, 0x28ff,
-  0x6a07, 0x2921,
-  0x6a08, 0x2914,
-  0x6a09, 0x291a,
-  0x6a0a, 0x117e,
-  0x6a0b, 0x41d9,
-  0x6a0c, 0x3d50,
-  0x6a0d, 0x2917,
-  0x6a0f, 0x291e,
-  0x6a11, 0x1183,
-  0x6a13, 0x117d,
-  0x6a14, 0x2910,
-  0x6a15, 0x2903,
-  0x6a16, 0x2923,
-  0x6a17, 0x2900,
-  0x6a18, 0x291c,
-  0x6a19, 0x117a,
-  0x6a1a, 0x3d1e,
-  0x6a1b, 0x290a,
-  0x6a1c, 0x3b68,
-  0x6a1d, 0x290b,
-  0x6a1e, 0x1179,
-  0x6a1f, 0x1176,
-  0x6a20, 0x2906,
-  0x6a21, 0x117c,
-  0x6a23, 0x1175,
-  0x6a25, 0x291d,
-  0x6a26, 0x2920,
-  0x6a27, 0x290d,
-  0x6a28, 0x2b74,
-  0x6a2b, 0x3d42,
-  0x6a2c, 0x42ab,
-  0x6a2d, 0x3b1f,
-  0x6a32, 0x2b6c,
-  0x6a33, 0x3aa4,
-  0x6a34, 0x2b68,
-  0x6a35, 0x12d9,
-  0x6a38, 0x12ce,
-  0x6a39, 0x12d3,
-  0x6a3a, 0x12cf,
-  0x6a3b, 0x2b76,
-  0x6a3c, 0x2b81,
-  0x6a3d, 0x12cd,
-  0x6a3e, 0x2b6e,
-  0x6a3f, 0x2b77,
-  0x6a40, 0x2913,
-  0x6a41, 0x2b78,
-  0x6a44, 0x12d4,
-  0x6a45, 0x41f0,
-  0x6a46, 0x2b87,
-  0x6a47, 0x12d8,
-  0x6a48, 0x12db,
-  0x6a49, 0x2b6a,
-  0x6a4b, 0x12d7,
-  0x6a4c, 0x3aab,
-  0x6a4d, 0x2b85,
-  0x6a4f, 0x2b7c,
-  0x6a50, 0x2b7b,
-  0x6a51, 0x2b73,
-  0x6a52, 0x3aa5,
-  0x6a53, 0x37ac,
-  0x6a54, 0x2b7d,
-  0x6a55, 0x2b84,
-  0x6a56, 0x2b83,
-  0x6a57, 0x37da,
-  0x6a58, 0x12d2,
-  0x6a59, 0x12d0,
-  0x6a5a, 0x2b75,
-  0x6a5b, 0x2b72,
-  0x6a5d, 0x2b6f,
-  0x6a5e, 0x2b82,
-  0x6a5f, 0x12da,
-  0x6a60, 0x2b80,
-  0x6a61, 0x12d6,
-  0x6a62, 0x12d5,
-  0x6a64, 0x2b7a,
-  0x6a65, 0x4660,
-  0x6a66, 0x2b69,
-  0x6a67, 0x2b6b,
-  0x6a68, 0x2b6d,
-  0x6a69, 0x2b7f,
-  0x6a6a, 0x2b79,
-  0x6a6b, 0x12d1,
-  0x6a6d, 0x2b70,
-  0x6a6f, 0x2b7e,
-  0x6a71, 0x4662,
-  0x6a74, 0x4661,
-  0x6a76, 0x2b71,
-  0x6a7a, 0x3aad,
-  0x6a7e, 0x13ec,
-  0x6a7f, 0x2d84,
-  0x6a80, 0x13e5,
-  0x6a81, 0x2d75,
-  0x6a82, 0x4663,
-  0x6a83, 0x2d80,
-  0x6a84, 0x13e7,
-  0x6a85, 0x2d87,
-  0x6a87, 0x2d7c,
-  0x6a89, 0x2d77,
-  0x6a8a, 0x4136,
-  0x6a8c, 0x2d88,
-  0x6a8d, 0x2d73,
-  0x6a8e, 0x2d7e,
-  0x6a8f, 0x3c1b,
-  0x6a90, 0x13ee,
-  0x6a91, 0x2d83,
-  0x6a92, 0x2d89,
-  0x6a93, 0x2d7d,
-  0x6a94, 0x13e6,
-  0x6a95, 0x2d7f,
-  0x6a96, 0x2d74,
-  0x6a97, 0x13ed,
-  0x6a99, 0x4665,
-  0x6a9a, 0x2d86,
-  0x6a9b, 0x2d79,
-  0x6a9c, 0x13e9,
-  0x6a9d, 0x41f2,
-  0x6a9e, 0x2d7b,
-  0x6a9f, 0x2d78,
-  0x6aa0, 0x13ef,
-  0x6aa1, 0x2d7a,
-  0x6aa2, 0x13e8,
-  0x6aa3, 0x13eb,
-  0x6aa4, 0x2d82,
-  0x6aa5, 0x2d76,
-  0x6aa6, 0x2d85,
-  0x6aa7, 0x37e3,
-  0x6aa8, 0x2d81,
-  0x6aab, 0x4667,
-  0x6aac, 0x14dd,
-  0x6aad, 0x2f3e,
-  0x6aae, 0x14e2,
-  0x6ab1, 0x3e53,
-  0x6ab2, 0x3b4b,
-  0x6ab3, 0x14dc,
-  0x6ab4, 0x2f3d,
-  0x6ab5, 0x4668,
-  0x6ab6, 0x2f3a,
-  0x6ab8, 0x14e0,
-  0x6ab9, 0x2f35,
-  0x6aba, 0x2f39,
-  0x6abb, 0x14df,
-  0x6abd, 0x2f36,
-  0x6abe, 0x3aa1,
-  0x6ac2, 0x14e1,
-  0x6ac3, 0x14de,
-  0x6ac5, 0x2f34,
-  0x6ac6, 0x2f38,
-  0x6ac7, 0x2f3c,
-  0x6ac8, 0x41f5,
-  0x6ac9, 0x3aa6,
-  0x6aca, 0x3f4c,
-  0x6acb, 0x309f,
-  0x6acc, 0x309c,
-  0x6acd, 0x30a5,
-  0x6acf, 0x30a4,
-  0x6ad0, 0x30a2,
-  0x6ad1, 0x309d,
-  0x6ad3, 0x1589,
-  0x6ad4, 0x4669,
-  0x6ad8, 0x3caa,
-  0x6ad9, 0x309e,
-  0x6ada, 0x1588,
-  0x6adb, 0x13ea,
-  0x6adc, 0x30a1,
-  0x6add, 0x1587,
-  0x6ade, 0x30a6,
-  0x6adf, 0x30a0,
-  0x6ae0, 0x309b,
-  0x6ae1, 0x2f37,
-  0x6ae5, 0x1586,
-  0x6ae7, 0x309a,
-  0x6ae8, 0x31df,
-  0x6aea, 0x31de,
-  0x6aeb, 0x30a3,
-  0x6aec, 0x161b,
-  0x6aee, 0x31e2,
-  0x6af0, 0x31dd,
-  0x6af1, 0x31e1,
-  0x6af3, 0x31dc,
-  0x6af6, 0x466a,
-  0x6af8, 0x32d6,
-  0x6af9, 0x31e0,
-  0x6afa, 0x1678,
-  0x6afb, 0x1676,
-  0x6afc, 0x32d4,
-  0x6b00, 0x32d7,
-  0x6b02, 0x32d3,
-  0x6b03, 0x32d5,
-  0x6b04, 0x1677,
-  0x6b05, 0x3aa7,
-  0x6b08, 0x3386,
-  0x6b0a, 0x16c6,
-  0x6b0b, 0x3385,
-  0x6b0f, 0x3420,
-  0x6b10, 0x16fd,
-  0x6b11, 0x341e,
-  0x6b13, 0x3487,
-  0x6b16, 0x1743,
-  0x6b17, 0x34ce,
-  0x6b18, 0x34cc,
-  0x6b1a, 0x34cf,
-  0x6b1d, 0x41f8,
-  0x6b1e, 0x3534,
-  0x6b20, 0x02de,
-  0x6b21, 0x03e3,
-  0x6b23, 0x061a,
-  0x6b25, 0x19c9,
-  0x6b28, 0x1b3d,
-  0x6b2c, 0x1ce6,
-  0x6b2d, 0x1ce8,
-  0x6b2f, 0x1ce7,
-  0x6b31, 0x1ce9,
-  0x6b32, 0x0ae7,
-  0x6b33, 0x1f3c,
-  0x6b34, 0x1cea,
-  0x6b35, 0x41fb,
-  0x6b36, 0x1f3b,
-  0x6b37, 0x1f3d,
-  0x6b39, 0x21b2,
-  0x6b3a, 0x0c9c,
-  0x6b3b, 0x21b3,
-  0x6b3c, 0x21b5,
-  0x6b3d, 0x0c9d,
-  0x6b3e, 0x0c9b,
-  0x6b3f, 0x21b4,
-  0x6b41, 0x2447,
-  0x6b42, 0x2445,
-  0x6b43, 0x2444,
-  0x6b45, 0x2443,
-  0x6b46, 0x2442,
-  0x6b47, 0x0e4a,
-  0x6b48, 0x2446,
-  0x6b49, 0x1001,
-  0x6b4a, 0x26e2,
-  0x6b4b, 0x26e4,
-  0x6b4c, 0x1002,
-  0x6b4d, 0x26e3,
-  0x6b4e, 0x1185,
-  0x6b50, 0x1184,
-  0x6b51, 0x2924,
-  0x6b52, 0x3f6e,
-  0x6b54, 0x2b89,
-  0x6b55, 0x2b88,
-  0x6b56, 0x2b8a,
-  0x6b57, 0x3aae,
-  0x6b59, 0x12dc,
-  0x6b5b, 0x2d8a,
-  0x6b5c, 0x13f0,
-  0x6b5e, 0x2f3f,
-  0x6b5f, 0x14e4,
-  0x6b60, 0x30a7,
-  0x6b61, 0x16c7,
-  0x6b62, 0x02df,
-  0x6b63, 0x034d,
-  0x6b64, 0x03e4,
-  0x6b65, 0x04c9,
-  0x6b66, 0x061b,
-  0x6b6a, 0x0769,
-  0x6b6d, 0x1ceb,
-  0x6b6f, 0x4515,
-  0x6b72, 0x0e4b,
-  0x6b74, 0x41fc,
-  0x6b76, 0x29a2,
-  0x6b77, 0x12dd,
-  0x6b78, 0x14e5,
-  0x6b79, 0x02e0,
-  0x6b7a, 0x44ee,
-  0x6b7b, 0x03e5,
-  0x6b7e, 0x19cb,
-  0x6b7f, 0x061d,
-  0x6b80, 0x19ca,
-  0x6b81, 0x466b,
-  0x6b82, 0x1b3e,
-  0x6b83, 0x076a,
-  0x6b84, 0x1b3f,
-  0x6b86, 0x076b,
-  0x6b88, 0x1ced,
-  0x6b89, 0x0900,
-  0x6b8a, 0x08ff,
-  0x6b8c, 0x1f43,
-  0x6b8d, 0x1f41,
-  0x6b8f, 0x1f40,
-  0x6b91, 0x1f3f,
-  0x6b94, 0x21b6,
-  0x6b95, 0x21b9,
-  0x6b96, 0x0c9f,
-  0x6b97, 0x21b7,
-  0x6b98, 0x0c9e,
-  0x6b99, 0x21b8,
-  0x6b9b, 0x2448,
-  0x6b9e, 0x26e5,
-  0x6ba2, 0x2927,
-  0x6ba3, 0x2926,
-  0x6ba4, 0x1186,
-  0x6ba5, 0x2925,
-  0x6ba6, 0x2928,
-  0x6ba7, 0x2b8b,
-  0x6baa, 0x2b8c,
-  0x6bad, 0x2d8b,
-  0x6bae, 0x13f1,
-  0x6baf, 0x14e6,
-  0x6bb0, 0x30a8,
-  0x6bb2, 0x1679,
-  0x6bb3, 0x178a,
-  0x6bb5, 0x076c,
-  0x6bb6, 0x1b40,
-  0x6bb7, 0x0901,
-  0x6bba, 0x0ae8,
-  0x6bbc, 0x0ca0,
-  0x6bbd, 0x21ba,
-  0x6bbf, 0x0e4d,
-  0x6bc0, 0x0e4c,
-  0x6bc1, 0x466c,
-  0x6bc3, 0x26e8,
-  0x6bc5, 0x1187,
-  0x6bc7, 0x2b8f,
-  0x6bc8, 0x2b8e,
-  0x6bc9, 0x2f40,
-  0x6bca, 0x3421,
-  0x6bcb, 0x02e1,
-  0x6bcc, 0x178b,
-  0x6bcd, 0x034e,
-  0x6bcf, 0x04ca,
-  0x6bd0, 0x18ad,
-  0x6bd2, 0x076d,
-  0x6bd3, 0x0e4e,
-  0x6bd4, 0x02e2,
-  0x6bd6, 0x1b41,
-  0x6bd7, 0x076e,
-  0x6bd8, 0x1b42,
-  0x6bda, 0x13f2,
-  0x6bdb, 0x02e3,
-  0x6bdc, 0x4207,
-  0x6bde, 0x19cc,
-  0x6be0, 0x1b43,
-  0x6be1, 0x4205,
-  0x6be2, 0x1cf2,
-  0x6be3, 0x1cf1,
-  0x6be4, 0x1cef,
-  0x6be6, 0x1cee,
-  0x6be7, 0x1cf3,
-  0x6be8, 0x1cf0,
-  0x6bea, 0x466d,
-  0x6beb, 0x0ae9,
-  0x6bef, 0x0ca1,
-  0x6bf0, 0x21bb,
-  0x6bf2, 0x21bc,
-  0x6bf7, 0x244c,
-  0x6bf9, 0x244b,
-  0x6bfa, 0x3f79,
-  0x6bfb, 0x2449,
-  0x6bfd, 0x0e4f,
-  0x6bfe, 0x26ea,
-  0x6bff, 0x292b,
-  0x6c00, 0x292a,
-  0x6c01, 0x2929,
-  0x6c02, 0x292c,
-  0x6c03, 0x2b91,
-  0x6c04, 0x2b90,
-  0x6c05, 0x12de,
-  0x6c06, 0x2b92,
-  0x6c08, 0x13f3,
-  0x6c09, 0x2d8c,
-  0x6c0b, 0x2f41,
-  0x6c0c, 0x30a9,
-  0x6c0d, 0x3388,
-  0x6c0f, 0x02e4,
-  0x6c10, 0x0350,
-  0x6c11, 0x034f,
-  0x6c13, 0x061e,
-  0x6c14, 0x178c,
-  0x6c15, 0x17aa,
-  0x6c16, 0x03e6,
-  0x6c18, 0x1801,
-  0x6c19, 0x18ae,
-  0x6c1b, 0x061f,
-  0x6c1c, 0x38ab,
-  0x6c1d, 0x19cd,
-  0x6c1f, 0x076f,
-  0x6c20, 0x1b44,
-  0x6c23, 0x0902,
-  0x6c24, 0x0906,
-  0x6c25, 0x1cf4,
-  0x6c26, 0x0905,
-  0x6c27, 0x0903,
-  0x6c2a, 0x1f44,
-  0x6c2b, 0x0aeb,
-  0x6c2c, 0x0ca4,
-  0x6c2e, 0x0ca2,
-  0x6c30, 0x21be,
-  0x6c31, 0x3f63,
-  0x6c33, 0x1003,
-  0x6c34, 0x02e5,
-  0x6c35, 0x44ef,
-  0x6c36, 0x17ab,
-  0x6c37, 0x4208,
-  0x6c38, 0x0351,
-  0x6c39, 0x3e05,
-  0x6c3a, 0x44f0,
-  0x6c3b, 0x17ae,
-  0x6c3d, 0x4381,
-  0x6c3e, 0x0354,
-  0x6c3f, 0x17ad,
-  0x6c40, 0x0353,
-  0x6c41, 0x0352,
-  0x6c42, 0x04cb,
-  0x6c43, 0x17ac,
-  0x6c46, 0x1802,
-  0x6c49, 0x408d,
-  0x6c4a, 0x1806,
-  0x6c4b, 0x1808,
-  0x6c4d, 0x03f0,
-  0x6c4f, 0x1805,
-  0x6c50, 0x03ec,
-  0x6c52, 0x1803,
-  0x6c54, 0x1807,
-  0x6c55, 0x03ed,
-  0x6c57, 0x03e8,
-  0x6c58, 0x3bba,
-  0x6c59, 0x03e9,
-  0x6c5a, 0x420c,
-  0x6c5b, 0x03ef,
-  0x6c5c, 0x1804,
-  0x6c5d, 0x03e7,
-  0x6c5e, 0x04cc,
-  0x6c5f, 0x03ea,
-  0x6c61, 0x03ee,
-  0x6c65, 0x18c0,
-  0x6c66, 0x18be,
-  0x6c67, 0x18b1,
-  0x6c68, 0x04d8,
-  0x6c69, 0x18b8,
-  0x6c6a, 0x04d3,
-  0x6c6b, 0x18b2,
-  0x6c6d, 0x18ba,
-  0x6c6e, 0x40ca,
-  0x6c6f, 0x18b7,
-  0x6c70, 0x04d6,
-  0x6c71, 0x18b6,
-  0x6c72, 0x04dd,
-  0x6c73, 0x18bf,
-  0x6c74, 0x04df,
-  0x6c75, 0x466e,
-  0x6c76, 0x04e1,
-  0x6c78, 0x18b0,
-  0x6c79, 0x420e,
-  0x6c7a, 0x04d4,
-  0x6c7b, 0x18c1,
-  0x6c7d, 0x04db,
-  0x6c7e, 0x04de,
-  0x6c7f, 0x37a6,
-  0x6c80, 0x19e4,
-  0x6c81, 0x04ce,
-  0x6c82, 0x04e5,
-  0x6c83, 0x04dc,
-  0x6c84, 0x18b3,
-  0x6c85, 0x04d1,
-  0x6c86, 0x04e0,
-  0x6c87, 0x18bb,
-  0x6c88, 0x04cf,
-  0x6c8a, 0x19e2,
-  0x6c8b, 0x18b4,
-  0x6c8c, 0x04d7,
-  0x6c8d, 0x04e2,
-  0x6c8e, 0x18c2,
-  0x6c8f, 0x18b5,
-  0x6c90, 0x04d5,
-  0x6c92, 0x04da,
-  0x6c93, 0x19ce,
-  0x6c94, 0x04e3,
-  0x6c95, 0x18bc,
-  0x6c96, 0x04d9,
-  0x6c98, 0x04e4,
-  0x6c99, 0x04cd,
-  0x6c9a, 0x18b9,
-  0x6c9b, 0x04d2,
-  0x6c9c, 0x18bd,
-  0x6c9d, 0x19e3,
-  0x6c9f, 0x3889,
-  0x6ca2, 0x3d63,
-  0x6caa, 0x466f,
-  0x6cab, 0x062b,
-  0x6cac, 0x063b,
-  0x6cad, 0x19d5,
-  0x6cae, 0x0632,
-  0x6caf, 0x3cf6,
-  0x6cb0, 0x19ea,
-  0x6cb1, 0x0623,
-  0x6cb2, 0x3ecc,
-  0x6cb3, 0x0626,
-  0x6cb4, 0x19e1,
-  0x6cb6, 0x19d3,
-  0x6cb7, 0x19d7,
-  0x6cb8, 0x062e,
-  0x6cb9, 0x0630,
-  0x6cba, 0x19da,
-  0x6cbb, 0x0637,
-  0x6cbc, 0x0629,
-  0x6cbd, 0x0627,
-  0x6cbf, 0x0636,
-  0x6cc0, 0x19e6,
-  0x6cc1, 0x0631,
-  0x6cc2, 0x19d9,
-  0x6cc3, 0x19db,
-  0x6cc4, 0x062f,
-  0x6cc5, 0x0634,
-  0x6cc6, 0x19dc,
-  0x6cc7, 0x19e9,
-  0x6cc9, 0x0770,
-  0x6cca, 0x063a,
-  0x6ccb, 0x4070,
-  0x6ccc, 0x0624,
-  0x6ccd, 0x19e8,
-  0x6cce, 0x3f91,
-  0x6ccf, 0x19ec,
-  0x6cd0, 0x19d8,
-  0x6cd1, 0x19ee,
-  0x6cd2, 0x19df,
-  0x6cd3, 0x062d,
-  0x6cd4, 0x19d4,
-  0x6cd5, 0x062c,
-  0x6cd6, 0x063e,
-  0x6cd7, 0x0633,
-  0x6cd9, 0x19d2,
-  0x6cda, 0x1b4e,
-  0x6cdb, 0x0639,
-  0x6cdc, 0x063d,
-  0x6cdd, 0x19e0,
-  0x6cde, 0x19e5,
-  0x6cdf, 0x3d57,
-  0x6ce0, 0x063f,
-  0x6ce1, 0x0638,
-  0x6ce2, 0x062a,
-  0x6ce3, 0x0620,
-  0x6ce5, 0x0625,
-  0x6ce7, 0x19d6,
-  0x6ce8, 0x0621,
-  0x6ce9, 0x19ed,
-  0x6cea, 0x3f8d,
-  0x6ceb, 0x19d0,
-  0x6cec, 0x19cf,
-  0x6ced, 0x19dd,
-  0x6cee, 0x19d1,
-  0x6cef, 0x063c,
-  0x6cf0, 0x0907,
-  0x6cf1, 0x0635,
-  0x6cf2, 0x19de,
-  0x6cf3, 0x0622,
-  0x6cf5, 0x077f,
-  0x6cf9, 0x19eb,
-  0x6d00, 0x1b55,
-  0x6d01, 0x1b58,
-  0x6d02, 0x4671,
-  0x6d03, 0x1b5b,
-  0x6d04, 0x1b50,
-  0x6d05, 0x3a19,
-  0x6d06, 0x4672,
-  0x6d07, 0x1b5e,
-  0x6d08, 0x1b61,
-  0x6d09, 0x1b63,
-  0x6d0a, 0x1b4d,
-  0x6d0b, 0x0771,
-  0x6d0c, 0x0776,
-  0x6d0d, 0x1cf9,
-  0x6d0e, 0x0786,
-  0x6d0f, 0x1b5c,
-  0x6d10, 0x1b64,
-  0x6d11, 0x1b54,
-  0x6d12, 0x1b4c,
-  0x6d16, 0x1d14,
-  0x6d17, 0x0779,
-  0x6d18, 0x1b59,
-  0x6d19, 0x1b51,
-  0x6d1a, 0x1b53,
-  0x6d1b, 0x077e,
-  0x6d1d, 0x1b56,
-  0x6d1e, 0x0778,
-  0x6d1f, 0x1b49,
-  0x6d20, 0x1b5f,
-  0x6d22, 0x1b62,
-  0x6d24, 0x3ac3,
-  0x6d25, 0x0775,
-  0x6d26, 0x4673,
-  0x6d27, 0x0781,
-  0x6d28, 0x1b46,
-  0x6d29, 0x0783,
-  0x6d2a, 0x0773,
-  0x6d2b, 0x0787,
-  0x6d2c, 0x1b60,
-  0x6d2d, 0x1b48,
-  0x6d2e, 0x0784,
-  0x6d2f, 0x1d0e,
-  0x6d30, 0x19e7,
-  0x6d31, 0x0777,
-  0x6d32, 0x0772,
-  0x6d33, 0x1b4f,
-  0x6d34, 0x1b47,
-  0x6d35, 0x0785,
-  0x6d36, 0x077d,
-  0x6d37, 0x1b5a,
-  0x6d38, 0x0782,
-  0x6d39, 0x0780,
-  0x6d3a, 0x1b52,
-  0x6d3b, 0x077a,
-  0x6d3c, 0x1b4a,
-  0x6d3d, 0x077b,
-  0x6d3f, 0x1b4b,
-  0x6d40, 0x1b5d,
-  0x6d41, 0x0774,
-  0x6d42, 0x1b57,
-  0x6d4e, 0x4558,
-  0x6d57, 0x3cf3,
-  0x6d58, 0x1cfc,
-  0x6d59, 0x090f,
-  0x6d5a, 0x0914,
-  0x6d5b, 0x409c,
-  0x6d5c, 0x4222,
-  0x6d5e, 0x1d05,
-  0x6d5f, 0x1d0b,
-  0x6d60, 0x1d07,
-  0x6d61, 0x1cfa,
-  0x6d62, 0x1cfd,
-  0x6d63, 0x1cf6,
-  0x6d65, 0x091b,
-  0x6d66, 0x090c,
-  0x6d67, 0x1d06,
-  0x6d68, 0x1d0f,
-  0x6d69, 0x0916,
-  0x6d6a, 0x0908,
-  0x6d6c, 0x0911,
-  0x6d6d, 0x1cfe,
-  0x6d6e, 0x0913,
-  0x6d6f, 0x1cff,
-  0x6d70, 0x1d09,
-  0x6d71, 0x40f5,
-  0x6d72, 0x39d7,
-  0x6d74, 0x0915,
-  0x6d75, 0x1d18,
-  0x6d76, 0x1cf8,
-  0x6d77, 0x090e,
-  0x6d78, 0x090d,
-  0x6d79, 0x0919,
-  0x6d7a, 0x1cf5,
-  0x6d7b, 0x1d16,
-  0x6d7c, 0x1d0a,
-  0x6d7d, 0x1d17,
-  0x6d7e, 0x1d11,
-  0x6d7f, 0x1d03,
-  0x6d80, 0x1d12,
-  0x6d81, 0x4674,
-  0x6d82, 0x1d0c,
-  0x6d83, 0x1d15,
-  0x6d84, 0x1d13,
-  0x6d85, 0x091a,
-  0x6d86, 0x1d04,
-  0x6d87, 0x090b,
-  0x6d88, 0x090a,
-  0x6d89, 0x0912,
-  0x6d8a, 0x0918,
-  0x6d8b, 0x1d10,
-  0x6d8c, 0x0917,
-  0x6d8d, 0x1d01,
-  0x6d8e, 0x0aec,
-  0x6d8f, 0x3de8,
-  0x6d90, 0x1d19,
-  0x6d91, 0x1d00,
-  0x6d92, 0x1cfb,
-  0x6d93, 0x0910,
-  0x6d94, 0x091c,
-  0x6d95, 0x0909,
-  0x6d96, 0x4221,
-  0x6d97, 0x1d08,
-  0x6d98, 0x1d0d,
-  0x6da4, 0x4676,
-  0x6da5, 0x3ab9,
-  0x6daa, 0x0b0e,
-  0x6dab, 0x1f46,
-  0x6dac, 0x1f4a,
-  0x6dae, 0x0afb,
-  0x6daf, 0x0af9,
-  0x6db1, 0x4677,
-  0x6db2, 0x0af0,
-  0x6db3, 0x1f48,
-  0x6db4, 0x1f47,
-  0x6db5, 0x0b04,
-  0x6db7, 0x1f4d,
-  0x6db8, 0x0afe,
-  0x6db9, 0x3ffb,
-  0x6dba, 0x1f5f,
-  0x6dbb, 0x1f6b,
-  0x6dbc, 0x0aed,
-  0x6dbd, 0x1f5c,
-  0x6dbe, 0x1f55,
-  0x6dbf, 0x0b10,
-  0x6dc0, 0x1f45,
-  0x6dc2, 0x1f61,
-  0x6dc4, 0x0b0d,
-  0x6dc5, 0x0b01,
-  0x6dc6, 0x0b0c,
-  0x6dc7, 0x0af7,
-  0x6dc8, 0x1f51,
-  0x6dc9, 0x1f63,
-  0x6dca, 0x1f5b,
-  0x6dcb, 0x0af8,
-  0x6dcc, 0x0af2,
-  0x6dcd, 0x1f69,
-  0x6dcf, 0x1f62,
-  0x6dd0, 0x1f64,
-  0x6dd1, 0x0afa,
-  0x6dd2, 0x0b02,
-  0x6dd3, 0x1f66,
-  0x6dd4, 0x1f4f,
-  0x6dd5, 0x1f60,
-  0x6dd6, 0x1f54,
-  0x6dd7, 0x1f68,
-  0x6dd8, 0x0b07,
-  0x6dd9, 0x0aef,
-  0x6dda, 0x0b05,
-  0x6ddb, 0x1f59,
-  0x6ddc, 0x1f57,
-  0x6dde, 0x0afc,
-  0x6ddf, 0x1f53,
-  0x6de0, 0x1f52,
-  0x6de1, 0x0af1,
-  0x6de2, 0x1f4c,
-  0x6de3, 0x1f6a,
-  0x6de4, 0x0af3,
-  0x6de5, 0x1f56,
-  0x6de6, 0x0b11,
-  0x6de8, 0x0b0b,
-  0x6de9, 0x1f4b,
-  0x6dea, 0x0b08,
-  0x6deb, 0x0b06,
-  0x6dec, 0x0b0f,
-  0x6ded, 0x1f5d,
-  0x6dee, 0x0b0a,
-  0x6def, 0x1d02,
-  0x6df0, 0x1f5e,
-  0x6df1, 0x0b09,
-  0x6df2, 0x1f65,
-  0x6df3, 0x0aee,
-  0x6df4, 0x1f5a,
-  0x6df5, 0x0b00,
-  0x6df6, 0x1f4e,
-  0x6df7, 0x0aff,
-  0x6df9, 0x0afd,
-  0x6dfa, 0x0af5,
-  0x6dfb, 0x0af4,
-  0x6dfc, 0x21bf,
-  0x6dfd, 0x1f67,
-  0x6e00, 0x1f50,
-  0x6e02, 0x3cfa,
-  0x6e03, 0x21d4,
-  0x6e04, 0x3abe,
-  0x6e05, 0x0af6,
-  0x6e0a, 0x3ac1,
-  0x6e0f, 0x3cf0,
-  0x6e15, 0x4678,
-  0x6e18, 0x4679,
-  0x6e19, 0x0cc1,
-  0x6e1a, 0x0b03,
-  0x6e1b, 0x0caf,
-  0x6e1c, 0x21ce,
-  0x6e1d, 0x0cbd,
-  0x6e1f, 0x21c2,
-  0x6e20, 0x0cac,
-  0x6e21, 0x0ca8,
-  0x6e22, 0x21e0,
-  0x6e23, 0x0cae,
-  0x6e24, 0x0cb2,
-  0x6e25, 0x0cad,
-  0x6e26, 0x0cb6,
-  0x6e27, 0x21e4,
-  0x6e28, 0x21db,
-  0x6e29, 0x467a,
-  0x6e2a, 0x4302,
-  0x6e2b, 0x21c9,
-  0x6e2c, 0x0cbb,
-  0x6e2d, 0x0cb5,
-  0x6e2e, 0x21d5,
-  0x6e2f, 0x0ca5,
-  0x6e30, 0x21e1,
-  0x6e31, 0x21da,
-  0x6e32, 0x0ca9,
-  0x6e33, 0x21cf,
-  0x6e34, 0x0cb8,
-  0x6e35, 0x21ec,
-  0x6e38, 0x0ca6,
-  0x6e39, 0x21df,
-  0x6e3a, 0x0cba,
-  0x6e3b, 0x21d3,
-  0x6e3c, 0x21c5,
-  0x6e3e, 0x0cbe,
-  0x6e3f, 0x21ca,
-  0x6e40, 0x21d1,
-  0x6e41, 0x21cb,
-  0x6e43, 0x0cbc,
-  0x6e44, 0x0cc4,
-  0x6e45, 0x21c7,
-  0x6e46, 0x21c0,
-  0x6e49, 0x21c3,
-  0x6e4a, 0x0cab,
-  0x6e4b, 0x21d0,
-  0x6e4d, 0x0cb9,
-  0x6e4e, 0x0cc2,
-  0x6e4f, 0x4234,
-  0x6e50, 0x41d1,
-  0x6e51, 0x21d2,
-  0x6e52, 0x21ea,
-  0x6e53, 0x21e2,
-  0x6e54, 0x0ca7,
-  0x6e55, 0x21e8,
-  0x6e56, 0x0cb3,
-  0x6e58, 0x0cb1,
-  0x6e59, 0x40e6,
-  0x6e5a, 0x21ee,
-  0x6e5b, 0x0cb0,
-  0x6e5c, 0x21d8,
-  0x6e5d, 0x21cc,
-  0x6e5e, 0x21d6,
-  0x6e5f, 0x0cc7,
-  0x6e60, 0x21dc,
-  0x6e61, 0x21d9,
-  0x6e62, 0x21c8,
-  0x6e63, 0x0cc3,
-  0x6e64, 0x21e6,
-  0x6e65, 0x21e3,
-  0x6e66, 0x21eb,
-  0x6e67, 0x0caa,
-  0x6e68, 0x21d7,
-  0x6e69, 0x0cc6,
-  0x6e6b, 0x21de,
-  0x6e6e, 0x0cb4,
-  0x6e6f, 0x0cb7,
-  0x6e71, 0x21dd,
-  0x6e72, 0x0cc5,
-  0x6e73, 0x21cd,
-  0x6e74, 0x1f49,
-  0x6e76, 0x39d3,
-  0x6e77, 0x21e7,
-  0x6e78, 0x21e5,
-  0x6e79, 0x21e9,
-  0x6e7c, 0x4223,
-  0x6e86, 0x467b,
-  0x6e88, 0x21c4,
-  0x6e89, 0x0cc0,
-  0x6e8b, 0x3bbf,
-  0x6e8d, 0x246c,
-  0x6e8e, 0x246b,
-  0x6e8f, 0x2451,
-  0x6e90, 0x0e55,
-  0x6e92, 0x246a,
-  0x6e93, 0x2454,
-  0x6e96, 0x0e5f,
-  0x6e97, 0x2473,
-  0x6e98, 0x0e5a,
-  0x6e99, 0x2469,
-  0x6e9a, 0x4581,
-  0x6e9b, 0x244e,
-  0x6e9c, 0x0e60,
-  0x6e9d, 0x0e56,
-  0x6e9e, 0x245d,
-  0x6e9f, 0x2453,
-  0x6ea0, 0x2456,
-  0x6ea1, 0x246e,
-  0x6ea2, 0x0e50,
-  0x6ea3, 0x2475,
-  0x6ea4, 0x246d,
-  0x6ea5, 0x0e59,
-  0x6ea6, 0x2462,
-  0x6ea7, 0x0e64,
-  0x6eaa, 0x0e63,
-  0x6eab, 0x0e5d,
-  0x6eae, 0x2474,
-  0x6eaf, 0x0e51,
-  0x6eb0, 0x2460,
-  0x6eb1, 0x2457,
-  0x6eb2, 0x2464,
-  0x6eb3, 0x2470,
-  0x6eb4, 0x0e65,
-  0x6eb5, 0x41fe,
-  0x6eb6, 0x0e53,
-  0x6eb7, 0x245f,
-  0x6eb8, 0x3e0c,
-  0x6eb9, 0x2458,
-  0x6eba, 0x0e5c,
-  0x6ebb, 0x467d,
-  0x6ebc, 0x0e5b,
-  0x6ebd, 0x245b,
-  0x6ebe, 0x2465,
-  0x6ebf, 0x246f,
-  0x6ec0, 0x2452,
-  0x6ec1, 0x245c,
-  0x6ec2, 0x0e54,
-  0x6ec3, 0x2466,
-  0x6ec4, 0x0e61,
-  0x6ec5, 0x0e58,
-  0x6ec6, 0x2459,
-  0x6ec7, 0x0e57,
-  0x6ec8, 0x2450,
-  0x6ec9, 0x245e,
-  0x6eca, 0x2472,
-  0x6ecb, 0x0cbf,
-  0x6ecc, 0x101f,
-  0x6ecd, 0x2461,
-  0x6ece, 0x26eb,
-  0x6ecf, 0x2463,
-  0x6ed0, 0x2471,
-  0x6ed1, 0x0e5e,
-  0x6ed2, 0x245a,
-  0x6ed3, 0x0e52,
-  0x6ed4, 0x0e62,
-  0x6ed5, 0x119a,
-  0x6ed6, 0x244f,
-  0x6ed8, 0x2468,
-  0x6ed9, 0x4069,
-  0x6eda, 0x467f,
-  0x6edb, 0x402f,
-  0x6edc, 0x2467,
-  0x6edd, 0x4538,
-  0x6ee2, 0x467e,
-  0x6ee8, 0x4681,
-  0x6eeb, 0x2707,
-  0x6eec, 0x101c,
-  0x6eed, 0x26fc,
-  0x6eee, 0x2701,
-  0x6eef, 0x1011,
-  0x6ef1, 0x26ed,
-  0x6ef2, 0x101e,
-  0x6ef4, 0x1008,
-  0x6ef5, 0x26ec,
-  0x6ef6, 0x270d,
-  0x6ef7, 0x1020,
-  0x6ef8, 0x26f0,
-  0x6ef9, 0x2700,
-  0x6efa, 0x423b,
-  0x6efb, 0x26f2,
-  0x6efc, 0x2710,
-  0x6efd, 0x270c,
-  0x6efe, 0x1006,
-  0x6eff, 0x1010,
-  0x6f00, 0x2946,
-  0x6f01, 0x101d,
-  0x6f02, 0x100e,
-  0x6f03, 0x26ee,
-  0x6f04, 0x4224,
-  0x6f05, 0x270b,
-  0x6f06, 0x1012,
-  0x6f07, 0x2708,
-  0x6f08, 0x2715,
-  0x6f09, 0x26f4,
-  0x6f0a, 0x26fd,
-  0x6f0b, 0x3aba,
-  0x6f0c, 0x3cfb,
-  0x6f0d, 0x2713,
-  0x6f0e, 0x2709,
-  0x6f0f, 0x100d,
-  0x6f12, 0x26fb,
-  0x6f13, 0x1007,
-  0x6f14, 0x1005,
-  0x6f15, 0x1017,
-  0x6f16, 0x41a0,
-  0x6f17, 0x46ce,
-  0x6f18, 0x26f9,
-  0x6f19, 0x26f6,
-  0x6f1c, 0x270f,
-  0x6f1e, 0x2714,
-  0x6f1f, 0x2712,
-  0x6f20, 0x100b,
-  0x6f21, 0x2716,
-  0x6f22, 0x100f,
-  0x6f23, 0x1016,
-  0x6f24, 0x4683,
-  0x6f25, 0x26ef,
-  0x6f26, 0x292e,
-  0x6f27, 0x26f8,
-  0x6f29, 0x1009,
-  0x6f2a, 0x101b,
-  0x6f2b, 0x1018,
-  0x6f2c, 0x100c,
-  0x6f2d, 0x2702,
-  0x6f2e, 0x26f3,
-  0x6f2f, 0x1019,
-  0x6f30, 0x2704,
-  0x6f31, 0x1013,
-  0x6f32, 0x1015,
-  0x6f33, 0x1004,
-  0x6f34, 0x4684,
-  0x6f35, 0x2706,
-  0x6f36, 0x26fe,
-  0x6f37, 0x26f1,
-  0x6f38, 0x1014,
-  0x6f39, 0x270e,
-  0x6f3a, 0x2711,
-  0x6f3b, 0x26fa,
-  0x6f3c, 0x2705,
-  0x6f3d, 0x4282,
-  0x6f3e, 0x100a,
-  0x6f3f, 0x1189,
-  0x6f40, 0x2703,
-  0x6f41, 0x292d,
-  0x6f43, 0x270a,
-  0x6f44, 0x4240,
-  0x6f4e, 0x26f5,
-  0x6f4f, 0x2937,
-  0x6f50, 0x2941,
-  0x6f51, 0x118c,
-  0x6f52, 0x2940,
-  0x6f53, 0x294c,
-  0x6f54, 0x118e,
-  0x6f55, 0x293e,
-  0x6f56, 0x3e52,
-  0x6f57, 0x2942,
-  0x6f58, 0x1199,
-  0x6f5a, 0x2939,
-  0x6f5b, 0x1191,
-  0x6f5c, 0x4241,
-  0x6f5d, 0x2945,
-  0x6f5e, 0x2b9a,
-  0x6f5f, 0x119d,
-  0x6f60, 0x119c,
-  0x6f61, 0x2947,
-  0x6f62, 0x2936,
-  0x6f63, 0x2951,
-  0x6f64, 0x1197,
-  0x6f66, 0x118d,
-  0x6f67, 0x294a,
-  0x6f69, 0x294e,
-  0x6f6a, 0x2953,
-  0x6f6b, 0x2948,
-  0x6f6c, 0x293c,
-  0x6f6d, 0x1190,
-  0x6f6e, 0x1193,
-  0x6f6f, 0x119b,
-  0x6f70, 0x1196,
-  0x6f72, 0x293f,
-  0x6f73, 0x26ff,
-  0x6f74, 0x4243,
-  0x6f76, 0x293b,
-  0x6f77, 0x2952,
-  0x6f78, 0x1192,
-  0x6f79, 0x3bbe,
-  0x6f7a, 0x1195,
-  0x6f7b, 0x2954,
-  0x6f7c, 0x118a,
-  0x6f7d, 0x2949,
-  0x6f7e, 0x292f,
-  0x6f7f, 0x294f,
-  0x6f80, 0x13fc,
-  0x6f81, 0x4687,
-  0x6f82, 0x293d,
-  0x6f84, 0x118b,
-  0x6f85, 0x2938,
-  0x6f86, 0x118f,
-  0x6f87, 0x2930,
-  0x6f88, 0x101a,
-  0x6f89, 0x2934,
-  0x6f8a, 0x4195,
-  0x6f8b, 0x294d,
-  0x6f8c, 0x2935,
-  0x6f8d, 0x2933,
-  0x6f8e, 0x1194,
-  0x6f90, 0x294b,
-  0x6f92, 0x2932,
-  0x6f93, 0x2944,
-  0x6f94, 0x2943,
-  0x6f95, 0x2950,
-  0x6f96, 0x293a,
-  0x6f97, 0x1198,
-  0x6f9d, 0x4239,
-  0x6f9e, 0x2b9d,
-  0x6f9f, 0x4246,
-  0x6fa0, 0x12eb,
-  0x6fa1, 0x12e1,
-  0x6fa2, 0x2ba9,
-  0x6fa3, 0x2b95,
-  0x6fa4, 0x12e3,
-  0x6fa5, 0x2ba1,
-  0x6fa6, 0x12ea,
-  0x6fa7, 0x12e5,
-  0x6fa8, 0x2b9f,
-  0x6fa9, 0x2d8e,
-  0x6faa, 0x2ba5,
-  0x6fab, 0x2bab,
-  0x6fac, 0x2ba4,
-  0x6fad, 0x2b93,
-  0x6fae, 0x2ba2,
-  0x6faf, 0x2bad,
-  0x6fb0, 0x2baf,
-  0x6fb1, 0x12e0,
-  0x6fb2, 0x2bae,
-  0x6fb3, 0x12e6,
-  0x6fb4, 0x12ec,
-  0x6fb5, 0x3e27,
-  0x6fb6, 0x12e9,
-  0x6fb8, 0x2ba8,
-  0x6fb9, 0x12e8,
-  0x6fba, 0x2ba3,
-  0x6fbb, 0x3bbb,
-  0x6fbc, 0x2b97,
-  0x6fbd, 0x2b9c,
-  0x6fbe, 0x4688,
-  0x6fbf, 0x2ba7,
-  0x6fc0, 0x12e7,
-  0x6fc1, 0x12e4,
-  0x6fc2, 0x12df,
-  0x6fc3, 0x12e2,
-  0x6fc4, 0x2b9b,
-  0x6fc6, 0x2931,
-  0x6fc7, 0x2b96,
-  0x6fc8, 0x2b99,
-  0x6fc9, 0x2baa,
-  0x6fca, 0x2b9e,
-  0x6fcb, 0x2b94,
-  0x6fcc, 0x2d8d,
-  0x6fcd, 0x2bac,
-  0x6fce, 0x2b98,
-  0x6fcf, 0x2ba6,
-  0x6fd3, 0x4248,
-  0x6fd4, 0x2d90,
-  0x6fd5, 0x1400,
-  0x6fd8, 0x13f4,
-  0x6fd9, 0x3c74,
-  0x6fda, 0x3c73,
-  0x6fdb, 0x13f8,
-  0x6fdc, 0x2d92,
-  0x6fdd, 0x2d98,
-  0x6fde, 0x2d96,
-  0x6fdf, 0x13f6,
-  0x6fe1, 0x13fe,
-  0x6fe2, 0x2d99,
-  0x6fe3, 0x2d91,
-  0x6fe4, 0x13f9,
-  0x6fe6, 0x2d95,
-  0x6fe7, 0x2d94,
-  0x6fe8, 0x2d9a,
-  0x6fe9, 0x13ff,
-  0x6feb, 0x13fa,
-  0x6fec, 0x13fd,
-  0x6fed, 0x2d93,
-  0x6fee, 0x1401,
-  0x6fef, 0x13fb,
-  0x6ff0, 0x1402,
-  0x6ff1, 0x13f5,
-  0x6ff2, 0x2d97,
-  0x6ff4, 0x2d8f,
-  0x6ff6, 0x38a5,
-  0x6ff7, 0x2f4e,
-  0x6ff8, 0x4237,
-  0x6ffa, 0x14eb,
-  0x6ffb, 0x2f4b,
-  0x6ffc, 0x2f4d,
-  0x6ffe, 0x14e9,
-  0x6fff, 0x2f49,
-  0x7000, 0x2f4a,
-  0x7001, 0x2f45,
-  0x7003, 0x46e2,
-  0x7004, 0x2ba0,
-  0x7005, 0x2f46,
-  0x7006, 0x14ea,
-  0x7007, 0x2f42,
-  0x7009, 0x14e7,
-  0x700a, 0x2f4f,
-  0x700b, 0x14e8,
-  0x700c, 0x2f43,
-  0x700e, 0x2f48,
-  0x700f, 0x14ed,
-  0x7011, 0x14ec,
-  0x7014, 0x2f47,
-  0x7015, 0x158f,
-  0x7016, 0x30ad,
-  0x7017, 0x30b3,
-  0x7018, 0x1590,
-  0x7019, 0x30aa,
-  0x701a, 0x158d,
-  0x701b, 0x158a,
-  0x701c, 0x30b5,
-  0x701d, 0x158e,
-  0x701e, 0x3c76,
-  0x701f, 0x158b,
-  0x7020, 0x30ac,
-  0x7021, 0x30af,
-  0x7024, 0x30b4,
-  0x7026, 0x2f4c,
-  0x7027, 0x30ab,
-  0x7028, 0x158c,
-  0x7029, 0x30b2,
-  0x702a, 0x31ef,
-  0x702b, 0x30ae,
-  0x702c, 0x468e,
-  0x702f, 0x31e6,
-  0x7030, 0x161d,
-  0x7031, 0x31e9,
-  0x7032, 0x161e,
-  0x7033, 0x31f2,
-  0x7034, 0x31e8,
-  0x7035, 0x31e5,
-  0x7037, 0x31e7,
-  0x7038, 0x31eb,
-  0x7039, 0x31ee,
-  0x703a, 0x31ed,
-  0x703b, 0x31f1,
-  0x703c, 0x31e4,
-  0x703e, 0x161c,
-  0x703f, 0x31ec,
-  0x7040, 0x31f0,
-  0x7041, 0x31f3,
-  0x7042, 0x31ea,
-  0x7043, 0x32d8,
-  0x7045, 0x32dd,
-  0x7048, 0x32db,
-  0x704a, 0x32da,
-  0x704b, 0x4254,
-  0x704c, 0x167a,
-  0x7050, 0x4690,
-  0x7051, 0x16c8,
-  0x7052, 0x338c,
-  0x7054, 0x4691,
-  0x7055, 0x3389,
-  0x7058, 0x16c9,
-  0x705a, 0x3423,
-  0x705b, 0x3422,
-  0x705c, 0x3852,
-  0x705d, 0x348a,
-  0x705e, 0x1722,
-  0x705f, 0x3488,
-  0x7060, 0x348b,
-  0x7061, 0x3489,
-  0x7062, 0x34d0,
-  0x7063, 0x1744,
-  0x7064, 0x1752,
-  0x7065, 0x351c,
-  0x7066, 0x3506,
-  0x7067, 0x3cf5,
-  0x7068, 0x351b,
-  0x7069, 0x3547,
-  0x706b, 0x02e6,
-  0x706c, 0x44f1,
-  0x706f, 0x4692,
-  0x7070, 0x03f2,
-  0x7071, 0x180a,
-  0x7074, 0x18c3,
-  0x7075, 0x38c7,
-  0x7076, 0x04e6,
-  0x7078, 0x04e9,
-  0x7079, 0x4099,
-  0x707a, 0x18c4,
-  0x707c, 0x04e7,
-  0x707e, 0x4255,
-  0x707f, 0x4693,
-  0x7081, 0x4959,
-  0x7082, 0x19f7,
-  0x7083, 0x19f9,
-  0x7084, 0x19f4,
-  0x7085, 0x19f1,
-  0x7086, 0x19f3,
-  0x7089, 0x43f9,
-  0x708a, 0x0643,
-  0x708b, 0x40cb,
-  0x708e, 0x0641,
-  0x708f, 0x46b3,
-  0x7091, 0x19f5,
-  0x7092, 0x0642,
-  0x7093, 0x19f2,
-  0x7094, 0x19ef,
-  0x7095, 0x0640,
-  0x7096, 0x19f6,
-  0x7098, 0x19f0,
-  0x7099, 0x0644,
-  0x709a, 0x19f8,
-  0x709f, 0x1b66,
-  0x70a0, 0x4742,
-  0x70a1, 0x1b6a,
-  0x70a3, 0x3972,
-  0x70a4, 0x0790,
-  0x70a5, 0x3cb7,
-  0x70a6, 0x3d53,
-  0x70a7, 0x4256,
-  0x70a9, 0x1b6d,
-  0x70ab, 0x0788,
-  0x70ac, 0x078b,
-  0x70ad, 0x078d,
-  0x70ae, 0x078f,
-  0x70af, 0x078c,
-  0x70b0, 0x1b69,
-  0x70b1, 0x1b68,
-  0x70b3, 0x078a,
-  0x70b4, 0x1b6b,
-  0x70b7, 0x1b65,
-  0x70b8, 0x078e,
-  0x70b9, 0x3d69,
-  0x70ba, 0x0789,
-  0x70bb, 0x4812,
-  0x70bc, 0x4559,
-  0x70bd, 0x4270,
-  0x70be, 0x1b67,
-  0x70c0, 0x4733,
-  0x70c4, 0x3baa,
-  0x70c5, 0x1d27,
-  0x70c8, 0x0921,
-  0x70ca, 0x091d,
-  0x70cb, 0x1d1e,
-  0x70cc, 0x4258,
-  0x70cd, 0x1d26,
-  0x70ce, 0x1d2b,
-  0x70cf, 0x0922,
-  0x70d0, 0x396d,
-  0x70d1, 0x1d1c,
-  0x70d2, 0x1d22,
-  0x70d3, 0x1d1b,
-  0x70d4, 0x1d25,
-  0x70d5, 0x4259,
-  0x70d7, 0x1d21,
-  0x70d8, 0x091e,
-  0x70d9, 0x0920,
-  0x70da, 0x1d2a,
-  0x70dc, 0x1d1a,
-  0x70dd, 0x1d1d,
-  0x70de, 0x1d23,
-  0x70df, 0x425b,
-  0x70e0, 0x1d24,
-  0x70e1, 0x1d2c,
-  0x70e2, 0x1d20,
-  0x70e4, 0x091f,
-  0x70ef, 0x0b16,
-  0x70f0, 0x1f72,
-  0x70f1, 0x3ac8,
-  0x70f3, 0x1f74,
-  0x70f4, 0x1f70,
-  0x70f5, 0x4760,
-  0x70f6, 0x1f7c,
-  0x70f7, 0x1f6e,
-  0x70f8, 0x1f7b,
-  0x70f9, 0x0b12,
-  0x70fa, 0x1f6c,
-  0x70fb, 0x21f2,
-  0x70fc, 0x1f76,
-  0x70fd, 0x0b15,
-  0x70fe, 0x3d0e,
-  0x70ff, 0x1f77,
-  0x7100, 0x1f7a,
-  0x7102, 0x1f7e,
-  0x7104, 0x1f73,
-  0x7105, 0x3a23,
-  0x7106, 0x1f78,
-  0x7109, 0x0b13,
-  0x710b, 0x1f7d,
-  0x710c, 0x1f71,
-  0x710d, 0x1f6d,
-  0x710e, 0x1f7f,
-  0x7110, 0x1f75,
-  0x7113, 0x1f79,
-  0x7117, 0x1f6f,
-  0x7119, 0x0cc8,
-  0x711b, 0x21fc,
-  0x711c, 0x0ccf,
-  0x711d, 0x3d47,
-  0x711e, 0x21f0,
-  0x711f, 0x21f9,
-  0x7120, 0x21ef,
-  0x7121, 0x0ccc,
-  0x7122, 0x21f7,
-  0x7123, 0x21f5,
-  0x7125, 0x21f6,
-  0x7126, 0x0cca,
-  0x7128, 0x21fa,
-  0x7129, 0x3ba9,
-  0x712b, 0x4261,
-  0x712c, 0x426a,
-  0x712e, 0x21f3,
-  0x712f, 0x21f1,
-  0x7130, 0x0ccb,
-  0x7131, 0x21f4,
-  0x7132, 0x21f8,
-  0x7133, 0x3d54,
-  0x7134, 0x3c7e,
-  0x7135, 0x376d,
-  0x7136, 0x0ccd,
-  0x713a, 0x21fb,
-  0x713b, 0x3ac5,
-  0x713e, 0x372e,
-  0x7140, 0x4398,
-  0x7141, 0x247b,
-  0x7142, 0x2482,
-  0x7143, 0x2484,
-  0x7144, 0x248a,
-  0x7145, 0x4262,
-  0x7146, 0x0e72,
-  0x7147, 0x2476,
-  0x7149, 0x0e6a,
-  0x714a, 0x4264,
-  0x714b, 0x2485,
-  0x714c, 0x0e6f,
-  0x714d, 0x248b,
-  0x714e, 0x0e66,
-  0x714f, 0x4267,
-  0x7150, 0x2488,
-  0x7151, 0x4865,
-  0x7152, 0x2478,
-  0x7153, 0x2489,
-  0x7154, 0x2477,
-  0x7156, 0x0e74,
-  0x7158, 0x2483,
-  0x7159, 0x0e67,
-  0x715a, 0x248c,
-  0x715c, 0x0e6c,
-  0x715d, 0x247c,
-  0x715e, 0x0e71,
-  0x715f, 0x2487,
-  0x7160, 0x247a,
-  0x7161, 0x2481,
-  0x7162, 0x247d,
-  0x7163, 0x2479,
-  0x7164, 0x0e69,
-  0x7165, 0x0e70,
-  0x7166, 0x0e6e,
-  0x7167, 0x0e6b,
-  0x7168, 0x0e73,
-  0x7169, 0x0e68,
-  0x716a, 0x2480,
-  0x716b, 0x3cc5,
-  0x716c, 0x0e6d,
-  0x716e, 0x0cce,
-  0x7170, 0x2486,
-  0x7171, 0x3dc0,
-  0x7172, 0x247e,
-  0x7173, 0x47e7,
-  0x7175, 0x3ced,
-  0x7176, 0x4000,
-  0x7177, 0x3957,
-  0x7178, 0x247f,
-  0x717a, 0x4924,
-  0x717b, 0x271e,
-  0x717c, 0x3835,
-  0x717d, 0x1023,
-  0x717e, 0x3970,
-  0x7180, 0x271a,
-  0x7181, 0x2720,
-  0x7182, 0x271c,
-  0x7184, 0x1025,
-  0x7185, 0x271b,
-  0x7186, 0x271f,
-  0x7187, 0x2717,
-  0x7188, 0x4706,
-  0x7189, 0x2719,
-  0x718a, 0x1024,
-  0x718c, 0x39ea,
-  0x718e, 0x3d3b,
-  0x718f, 0x271d,
-  0x7190, 0x2718,
-  0x7192, 0x1026,
-  0x7194, 0x1021,
-  0x7196, 0x425f,
-  0x7197, 0x2721,
-  0x7198, 0x481d,
-  0x7199, 0x1022,
-  0x719a, 0x295a,
-  0x719b, 0x2957,
-  0x719c, 0x2963,
-  0x719d, 0x295d,
-  0x719e, 0x295f,
-  0x719f, 0x119e,
-  0x71a0, 0x2959,
-  0x71a1, 0x2961,
-  0x71a2, 0x48c1,
-  0x71a3, 0x3ec8,
-  0x71a4, 0x2960,
-  0x71a5, 0x295e,
-  0x71a7, 0x2964,
-  0x71a8, 0x11a1,
-  0x71a9, 0x295b,
-  0x71aa, 0x2962,
-  0x71ac, 0x119f,
-  0x71ad, 0x3e1d,
-  0x71af, 0x2956,
-  0x71b0, 0x2958,
-  0x71b1, 0x11a0,
-  0x71b2, 0x2955,
-  0x71b3, 0x2965,
-  0x71b4, 0x425e,
-  0x71b5, 0x295c,
-  0x71b7, 0x468b,
-  0x71b8, 0x2bb3,
-  0x71b9, 0x12f3,
-  0x71ba, 0x426e,
-  0x71bc, 0x2bbe,
-  0x71bd, 0x2bbc,
-  0x71be, 0x12ed,
-  0x71bf, 0x2bb2,
-  0x71c0, 0x2bb5,
-  0x71c2, 0x2bb1,
-  0x71c3, 0x12f7,
-  0x71c5, 0x2bb0,
-  0x71c6, 0x2bbf,
-  0x71c7, 0x2bba,
-  0x71c8, 0x12f1,
-  0x71c9, 0x12ee,
-  0x71ca, 0x2bb9,
-  0x71cb, 0x2bb7,
-  0x71ce, 0x12f4,
-  0x71cf, 0x2bbb,
-  0x71d0, 0x12ef,
-  0x71d1, 0x373d,
-  0x71d2, 0x12f0,
-  0x71d4, 0x2bb8,
-  0x71d5, 0x12f2,
-  0x71d6, 0x2bb4,
-  0x71d8, 0x2bbd,
-  0x71d9, 0x12f5,
-  0x71da, 0x2bc0,
-  0x71dc, 0x12f6,
-  0x71dd, 0x4078,
-  0x71df, 0x1404,
-  0x71e0, 0x140b,
-  0x71e1, 0x2d9b,
-  0x71e2, 0x2da1,
-  0x71e4, 0x2d9f,
-  0x71e5, 0x1407,
-  0x71e6, 0x1406,
-  0x71e7, 0x1403,
-  0x71e8, 0x2d9d,
-  0x71eb, 0x3c81,
-  0x71ec, 0x1409,
-  0x71ed, 0x1408,
-  0x71ee, 0x1405,
-  0x71f0, 0x2da0,
-  0x71f1, 0x2d9c,
-  0x71f2, 0x2d9e,
-  0x71f4, 0x140a,
-  0x71f5, 0x46ee,
-  0x71f6, 0x3e9a,
-  0x71f8, 0x14f1,
-  0x71f9, 0x2f52,
-  0x71fb, 0x14ee,
-  0x71fd, 0x2f54,
-  0x71fe, 0x14f0,
-  0x71ff, 0x2f51,
-  0x7201, 0x2f50,
-  0x7202, 0x30b9,
-  0x7203, 0x2f53,
-  0x7205, 0x30ba,
-  0x7206, 0x1591,
-  0x7207, 0x30b8,
-  0x7209, 0x3dbb,
-  0x720a, 0x30b7,
-  0x720c, 0x30b6,
-  0x720d, 0x1592,
-  0x720e, 0x4271,
-  0x720f, 0x39fc,
-  0x7210, 0x161f,
-  0x7213, 0x31f4,
-  0x7215, 0x4273,
-  0x7216, 0x3953,
-  0x7217, 0x3969,
-  0x7219, 0x32e1,
-  0x721a, 0x32e0,
-  0x721b, 0x167b,
-  0x721d, 0x32df,
-  0x721e, 0x338d,
-  0x7222, 0x3424,
-  0x7223, 0x348c,
-  0x7224, 0x4276,
-  0x7226, 0x34d1,
-  0x7227, 0x3535,
-  0x7228, 0x1766,
-  0x7229, 0x3549,
-  0x722a, 0x02e7,
-  0x722b, 0x44f2,
-  0x722c, 0x0645,
-  0x722e, 0x4279,
-  0x7230, 0x0791,
-  0x7235, 0x140c,
-  0x7236, 0x02e8,
-  0x7238, 0x0647,
-  0x7239, 0x0923,
-  0x723a, 0x0e75,
-  0x723b, 0x02e9,
-  0x723d, 0x0b17,
-  0x723e, 0x1027,
-  0x723f, 0x178d,
-  0x7240, 0x427a,
-  0x7241, 0x1b6e,
-  0x7242, 0x1d2d,
-  0x7244, 0x2722,
-  0x7246, 0x140d,
-  0x7247, 0x02ea,
-  0x7248, 0x0648,
-  0x7249, 0x1b6f,
-  0x724b, 0x21fd,
-  0x724c, 0x0cd0,
-  0x724f, 0x248d,
-  0x7250, 0x3ac9,
-  0x7252, 0x0e76,
-  0x7253, 0x2723,
-  0x7255, 0x427d,
-  0x7256, 0x11a2,
-  0x7257, 0x427e,
-  0x7258, 0x1593,
-  0x7259, 0x02eb,
-  0x725a, 0x21fe,
-  0x725b, 0x02ec,
-  0x725c, 0x465a,
-  0x725d, 0x03f4,
-  0x725e, 0x180b,
-  0x725f, 0x03f3,
-  0x7260, 0x04ec,
-  0x7261, 0x04eb,
-  0x7262, 0x04ea,
-  0x7263, 0x18c5,
-  0x7266, 0x3ebb,
-  0x7267, 0x0649,
-  0x7269, 0x064a,
-  0x726a, 0x19fa,
-  0x726c, 0x1b71,
-  0x726e, 0x1b74,
-  0x726f, 0x0793,
-  0x7270, 0x1b72,
-  0x7272, 0x0792,
-  0x7273, 0x1b73,
-  0x7274, 0x0794,
-  0x7276, 0x1d30,
-  0x7277, 0x1d2f,
-  0x7278, 0x1d2e,
-  0x7279, 0x0924,
-  0x727b, 0x1f81,
-  0x727d, 0x0b18,
-  0x727e, 0x1f80,
-  0x727f, 0x1f83,
-  0x7280, 0x0cd2,
-  0x7281, 0x0b19,
-  0x7282, 0x4283,
-  0x7284, 0x0cd1,
-  0x7285, 0x2202,
-  0x7286, 0x2201,
-  0x7287, 0x3aca,
-  0x7288, 0x21ff,
-  0x728b, 0x2203,
-  0x728c, 0x248f,
-  0x728d, 0x248e,
-  0x728e, 0x2492,
-  0x728f, 0x43c9,
-  0x7290, 0x2491,
-  0x7291, 0x2490,
-  0x7292, 0x1028,
-  0x7293, 0x2726,
-  0x7294, 0x3acb,
-  0x7295, 0x2725,
-  0x7296, 0x1029,
-  0x7297, 0x2724,
-  0x7298, 0x2966,
-  0x729a, 0x2967,
-  0x729b, 0x11a3,
-  0x729d, 0x2bc2,
-  0x729f, 0x473a,
-  0x72a1, 0x30bf,
-  0x72a2, 0x1594,
-  0x72a3, 0x30be,
-  0x72a4, 0x30bd,
-  0x72a5, 0x30bb,
-  0x72a7, 0x167c,
-  0x72a8, 0x31f6,
-  0x72a9, 0x338f,
-  0x72aa, 0x34d2,
-  0x72ac, 0x02ed,
-  0x72ad, 0x44f4,
-  0x72ae, 0x17af,
-  0x72af, 0x0355,
-  0x72b0, 0x17b0,
-  0x72b2, 0x3fb6,
-  0x72b4, 0x180c,
-  0x72ba, 0x18cb,
-  0x72bd, 0x18c7,
-  0x72bf, 0x18c6,
-  0x72c0, 0x064b,
-  0x72c1, 0x18ca,
-  0x72c2, 0x04ee,
-  0x72c3, 0x18c8,
-  0x72c4, 0x04ed,
-  0x72c5, 0x18cc,
-  0x72c6, 0x18c9,
-  0x72c9, 0x19fe,
-  0x72ca, 0x1b75,
-  0x72cb, 0x19fc,
-  0x72cc, 0x1a03,
-  0x72cd, 0x43ca,
-  0x72ce, 0x064c,
-  0x72d0, 0x064f,
-  0x72d1, 0x1a04,
-  0x72d2, 0x1a00,
-  0x72d4, 0x1a01,
-  0x72d6, 0x19fb,
-  0x72d7, 0x064e,
-  0x72d8, 0x19fd,
-  0x72d9, 0x064d,
-  0x72da, 0x1a02,
-  0x72dc, 0x19ff,
-  0x72df, 0x1b79,
-  0x72e0, 0x0796,
-  0x72e2, 0x3f97,
-  0x72e3, 0x1b7c,
-  0x72e4, 0x1b76,
-  0x72e6, 0x1b7b,
-  0x72e8, 0x1b77,
-  0x72e9, 0x0795,
-  0x72ea, 0x1b7a,
-  0x72eb, 0x1b78,
-  0x72f3, 0x1d36,
-  0x72f4, 0x1d33,
-  0x72f6, 0x1d35,
-  0x72f7, 0x0929,
-  0x72f8, 0x0928,
-  0x72f9, 0x0926,
-  0x72fa, 0x1d32,
-  0x72fb, 0x1d37,
-  0x72fc, 0x0925,
-  0x72fd, 0x0927,
-  0x72fe, 0x1d34,
-  0x72ff, 0x1f8b,
-  0x7300, 0x1d31,
-  0x7301, 0x1d38,
-  0x7302, 0x3f9a,
-  0x7304, 0x3eb5,
-  0x7307, 0x1f86,
-  0x7308, 0x1f8a,
-  0x730a, 0x1f89,
-  0x730b, 0x2205,
-  0x730c, 0x2210,
-  0x730f, 0x1f8c,
-  0x7310, 0x46ea,
-  0x7311, 0x1f87,
-  0x7312, 0x2204,
-  0x7313, 0x0b1d,
-  0x7316, 0x0b1c,
-  0x7317, 0x1f85,
-  0x7318, 0x1f88,
-  0x7319, 0x0b1e,
-  0x731b, 0x0b1b,
-  0x731c, 0x0b1a,
-  0x731d, 0x1f84,
-  0x731e, 0x1f8d,
-  0x7322, 0x2207,
-  0x7323, 0x220e,
-  0x7325, 0x0cd4,
-  0x7326, 0x220d,
-  0x7327, 0x220a,
-  0x7328, 0x428a,
-  0x7329, 0x0cd6,
-  0x732a, 0x3d70,
-  0x732b, 0x4285,
-  0x732c, 0x3fb2,
-  0x732d, 0x220c,
-  0x732e, 0x428b,
-  0x7330, 0x2206,
-  0x7331, 0x2208,
-  0x7332, 0x220b,
-  0x7333, 0x2209,
-  0x7334, 0x0cd5,
-  0x7335, 0x220f,
-  0x7336, 0x0cd3,
-  0x7337, 0x0e77,
-  0x7338, 0x46eb,
-  0x7339, 0x43cc,
-  0x733a, 0x2496,
-  0x733b, 0x2495,
-  0x733c, 0x2493,
-  0x733e, 0x0e7a,
-  0x733f, 0x0e79,
-  0x7340, 0x2497,
-  0x7341, 0x46ec,
-  0x7342, 0x2494,
-  0x7343, 0x2727,
-  0x7344, 0x102a,
-  0x7345, 0x0e78,
-  0x7348, 0x43fa,
-  0x7349, 0x2499,
-  0x734a, 0x2498,
-  0x734c, 0x272a,
-  0x734d, 0x2728,
-  0x734e, 0x11a4,
-  0x734f, 0x3f51,
-  0x7350, 0x102b,
-  0x7351, 0x2729,
-  0x7352, 0x2969,
-  0x7357, 0x11a5,
-  0x7358, 0x2968,
-  0x7359, 0x2971,
-  0x735a, 0x2970,
-  0x735b, 0x296e,
-  0x735d, 0x296d,
-  0x735e, 0x296a,
-  0x7361, 0x296f,
-  0x7362, 0x2972,
-  0x7365, 0x2bc8,
-  0x7366, 0x2bc5,
-  0x7368, 0x12f9,
-  0x7369, 0x2bc4,
-  0x736a, 0x2bca,
-  0x736b, 0x2bc9,
-  0x736c, 0x2bc7,
-  0x736e, 0x2da3,
-  0x7370, 0x140e,
-  0x7371, 0x3f98,
-  0x7372, 0x140f,
-  0x7373, 0x2da2,
-  0x7374, 0x3ed4,
-  0x7375, 0x14f3,
-  0x7376, 0x2f55,
-  0x7377, 0x14f2,
-  0x7378, 0x1595,
-  0x737a, 0x1596,
-  0x737b, 0x1620,
-  0x737c, 0x31f8,
-  0x737d, 0x31f7,
-  0x737e, 0x32e2,
-  0x737f, 0x3390,
-  0x7380, 0x16ca,
-  0x7381, 0x3426,
-  0x7382, 0x3425,
-  0x7383, 0x3427,
-  0x7384, 0x0356,
-  0x7385, 0x1b7d,
-  0x7386, 0x092a,
-  0x7387, 0x0b1f,
-  0x7388, 0x1f8e,
-  0x7389, 0x0357,
-  0x738a, 0x17b1,
-  0x738b, 0x02ee,
-  0x738e, 0x180e,
-  0x738f, 0x46e5,
-  0x7392, 0x18d1,
-  0x7393, 0x18cf,
-  0x7395, 0x18cd,
-  0x7396, 0x04ef,
-  0x7397, 0x18ce,
-  0x7398, 0x39f6,
-  0x739c, 0x408a,
-  0x739d, 0x1a0c,
-  0x739e, 0x395b,
-  0x739f, 0x0652,
-  0x73a0, 0x1a0a,
-  0x73a1, 0x1a06,
-  0x73a2, 0x1a09,
-  0x73a4, 0x1a05,
-  0x73a5, 0x0654,
-  0x73a6, 0x1a08,
-  0x73a7, 0x4087,
-  0x73a8, 0x0651,
-  0x73a9, 0x0650,
-  0x73aa, 0x428d,
-  0x73ab, 0x0653,
-  0x73ac, 0x1a0b,
-  0x73ad, 0x1a07,
-  0x73b2, 0x079b,
-  0x73b3, 0x079e,
-  0x73b4, 0x1b85,
-  0x73b5, 0x1b84,
-  0x73b6, 0x1b83,
-  0x73b7, 0x0798,
-  0x73b8, 0x1b8c,
-  0x73b9, 0x1b82,
-  0x73bb, 0x079a,
-  0x73bc, 0x1d3d,
-  0x73be, 0x1b89,
-  0x73bf, 0x1b87,
-  0x73c0, 0x079d,
-  0x73c2, 0x1b7f,
-  0x73c3, 0x1b8a,
-  0x73c5, 0x1b81,
-  0x73c6, 0x1b8b,
-  0x73c7, 0x1b88,
-  0x73c8, 0x1b80,
-  0x73c9, 0x4290,
-  0x73ca, 0x0799,
-  0x73cb, 0x1b8d,
-  0x73cc, 0x1b7e,
-  0x73cd, 0x079c,
-  0x73ce, 0x411b,
-  0x73cf, 0x428c,
-  0x73d0, 0x3b17,
-  0x73d2, 0x1d42,
-  0x73d3, 0x1d39,
-  0x73d4, 0x1d44,
-  0x73d5, 0x4073,
-  0x73d6, 0x1d3c,
-  0x73d7, 0x1d47,
-  0x73d9, 0x1d3a,
-  0x73da, 0x1d46,
-  0x73db, 0x1d43,
-  0x73dc, 0x1d41,
-  0x73dd, 0x1d45,
-  0x73de, 0x0930,
-  0x73e0, 0x092e,
-  0x73e1, 0x46f0,
-  0x73e2, 0x3ca3,
-  0x73e3, 0x1d3f,
-  0x73e4, 0x42a5,
-  0x73e5, 0x1d3b,
-  0x73e6, 0x3cba,
-  0x73e7, 0x1d3e,
-  0x73e8, 0x1d49,
-  0x73e9, 0x1d40,
-  0x73ea, 0x092f,
-  0x73eb, 0x1b86,
-  0x73ed, 0x092b,
-  0x73ee, 0x092d,
-  0x73ef, 0x4011,
-  0x73f3, 0x3cab,
-  0x73f4, 0x1f9c,
-  0x73f5, 0x1f91,
-  0x73f6, 0x1f8f,
-  0x73f7, 0x429a,
-  0x73f8, 0x1f90,
-  0x73f9, 0x3bf9,
-  0x73fa, 0x1f97,
-  0x73fb, 0x3cac,
-  0x73fc, 0x1f98,
-  0x73fd, 0x1f94,
-  0x73fe, 0x0b24,
-  0x73ff, 0x1f99,
-  0x7400, 0x1f96,
-  0x7401, 0x1f93,
-  0x7403, 0x0b22,
-  0x7404, 0x1f92,
-  0x7405, 0x0b20,
-  0x7406, 0x0b23,
-  0x7407, 0x1f95,
-  0x7408, 0x1f9d,
-  0x7409, 0x092c,
-  0x740a, 0x0b21,
-  0x740b, 0x1f9b,
-  0x740c, 0x1f9a,
-  0x740d, 0x0b25,
-  0x7411, 0x456c,
-  0x7412, 0x3be6,
-  0x7414, 0x39f4,
-  0x7415, 0x429b,
-  0x7416, 0x2215,
-  0x7417, 0x40ad,
-  0x7419, 0x46f3,
-  0x741a, 0x2216,
-  0x741b, 0x0ce0,
-  0x741c, 0x38dd,
-  0x741d, 0x221c,
-  0x741e, 0x46f4,
-  0x7420, 0x221e,
-  0x7421, 0x2217,
-  0x7422, 0x0cda,
-  0x7423, 0x221b,
-  0x7424, 0x221a,
-  0x7425, 0x0cdb,
-  0x7426, 0x0ce1,
-  0x7428, 0x0ce2,
-  0x7429, 0x221d,
-  0x742a, 0x0cd8,
-  0x742b, 0x2214,
-  0x742c, 0x2212,
-  0x742d, 0x2218,
-  0x742e, 0x2211,
-  0x742f, 0x0cdf,
-  0x7430, 0x2213,
-  0x7431, 0x2219,
-  0x7432, 0x221f,
-  0x7433, 0x0cd9,
-  0x7434, 0x0cde,
-  0x7435, 0x0cdc,
-  0x7437, 0x3ae1,
-  0x7438, 0x3b09,
-  0x7439, 0x429e,
-  0x743a, 0x0cd7,
-  0x743c, 0x3adf,
-  0x743f, 0x0e81,
-  0x7440, 0x24a0,
-  0x7441, 0x0e80,
-  0x7442, 0x24a4,
-  0x7443, 0x3a1a,
-  0x7444, 0x249a,
-  0x7445, 0x3bd7,
-  0x7446, 0x24a5,
-  0x7447, 0x42a4,
-  0x7448, 0x3cb5,
-  0x7449, 0x4291,
-  0x744a, 0x249b,
-  0x744d, 0x24a6,
-  0x744e, 0x24a3,
-  0x744f, 0x24a1,
-  0x7451, 0x249e,
-  0x7452, 0x249d,
-  0x7453, 0x4231,
-  0x7454, 0x24a7,
-  0x7455, 0x0e7d,
-  0x7456, 0x39f5,
-  0x7457, 0x249f,
-  0x7459, 0x0e82,
-  0x745a, 0x0e7c,
-  0x745b, 0x0e83,
-  0x745d, 0x42c6,
-  0x745e, 0x0e7f,
-  0x745f, 0x0e7e,
-  0x7460, 0x42a2,
-  0x7462, 0x272b,
-  0x7463, 0x102d,
-  0x7464, 0x102c,
-  0x7465, 0x4101,
-  0x7467, 0x2730,
-  0x7468, 0x3aee,
-  0x7469, 0x11a6,
-  0x746a, 0x102e,
-  0x746b, 0x3be7,
-  0x746c, 0x42a8,
-  0x746d, 0x1030,
-  0x746e, 0x2731,
-  0x746f, 0x0e7b,
-  0x7470, 0x102f,
-  0x7471, 0x272d,
-  0x7472, 0x272f,
-  0x7473, 0x272c,
-  0x7474, 0x42a9,
-  0x7475, 0x272e,
-  0x7476, 0x42a6,
-  0x7479, 0x297c,
-  0x747a, 0x3ad1,
-  0x747c, 0x297b,
-  0x747d, 0x2978,
-  0x747e, 0x11a9,
-  0x747f, 0x2bcb,
-  0x7480, 0x11aa,
-  0x7481, 0x2977,
-  0x7482, 0x42ac,
-  0x7483, 0x11a8,
-  0x7485, 0x2979,
-  0x7486, 0x2976,
-  0x7487, 0x2973,
-  0x7488, 0x297a,
-  0x7489, 0x2974,
-  0x748b, 0x11a7,
-  0x748c, 0x3a21,
-  0x748d, 0x469d,
-  0x7490, 0x2da8,
-  0x7492, 0x2bcf,
-  0x7494, 0x2bce,
-  0x7495, 0x2bd0,
-  0x7497, 0x2da5,
-  0x7498, 0x12fc,
-  0x7499, 0x39f3,
-  0x749a, 0x2bcc,
-  0x749b, 0x3b0a,
-  0x749c, 0x12fa,
-  0x749e, 0x12fe,
-  0x749f, 0x12fd,
-  0x74a0, 0x2bcd,
-  0x74a1, 0x2bd1,
-  0x74a3, 0x12fb,
-  0x74a4, 0x4170,
-  0x74a5, 0x2dac,
-  0x74a6, 0x1412,
-  0x74a7, 0x14f4,
-  0x74a8, 0x1413,
-  0x74a9, 0x1410,
-  0x74aa, 0x2da9,
-  0x74ab, 0x2da7,
-  0x74ad, 0x2daa,
-  0x74af, 0x2dad,
-  0x74b0, 0x1411,
-  0x74b1, 0x2dab,
-  0x74b2, 0x2da6,
-  0x74b4, 0x3ca5,
-  0x74b5, 0x2f58,
-  0x74b6, 0x2f5b,
-  0x74b7, 0x30c2,
-  0x74b8, 0x2f56,
-  0x74ba, 0x31f9,
-  0x74bb, 0x2f5c,
-  0x74bd, 0x1597,
-  0x74be, 0x2f5a,
-  0x74bf, 0x14f5,
-  0x74c0, 0x2f57,
-  0x74c1, 0x2f59,
-  0x74c2, 0x2f5d,
-  0x74c3, 0x30c3,
-  0x74c5, 0x30c1,
-  0x74c8, 0x42b5,
-  0x74ca, 0x1598,
-  0x74cb, 0x30c0,
-  0x74cc, 0x3ade,
-  0x74cf, 0x1621,
-  0x74d0, 0x3a9b,
-  0x74d3, 0x46fa,
-  0x74d4, 0x167e,
-  0x74d5, 0x3392,
-  0x74d6, 0x167d,
-  0x74d7, 0x3394,
-  0x74d8, 0x3391,
-  0x74d9, 0x3393,
-  0x74da, 0x16fe,
-  0x74db, 0x348d,
-  0x74dc, 0x0358,
-  0x74dd, 0x1a0d,
-  0x74de, 0x1d4a,
-  0x74e0, 0x0b26,
-  0x74e1, 0x24a8,
-  0x74e2, 0x12ff,
-  0x74e3, 0x1599,
-  0x74e4, 0x16cb,
-  0x74e5, 0x348e,
-  0x74e6, 0x0359,
-  0x74e7, 0x3ffe,
-  0x74e8, 0x1a0e,
-  0x74e9, 0x0120,
-  0x74ec, 0x1b8e,
-  0x74ee, 0x1b8f,
-  0x74f0, 0x3fe6,
-  0x74f1, 0x3f9b,
-  0x74f2, 0x3fdf,
-  0x74f4, 0x1d4c,
-  0x74f6, 0x0b27,
-  0x74f8, 0x3ff4,
-  0x74fb, 0x2220,
-  0x74fd, 0x24ab,
-  0x74fe, 0x24aa,
-  0x74ff, 0x24a9,
-  0x7500, 0x2732,
-  0x7502, 0x2733,
-  0x7504, 0x1031,
-  0x7505, 0x3fde,
-  0x7507, 0x297e,
-  0x7508, 0x297d,
-  0x750b, 0x2bd2,
-  0x750c, 0x1300,
-  0x750e, 0x42b7,
-  0x750f, 0x2db1,
-  0x7510, 0x2dae,
-  0x7513, 0x2f5f,
-  0x7514, 0x2f5e,
-  0x7515, 0x14f6,
-  0x7516, 0x30c4,
-  0x7517, 0x32e3,
-  0x7518, 0x035a,
-  0x7519, 0x4583,
-  0x751a, 0x079f,
-  0x751c, 0x0b29,
-  0x751d, 0x24ac,
-  0x751e, 0x42b8,
-  0x751f, 0x035b,
-  0x7521, 0x1d4e,
-  0x7522, 0x0b2a,
-  0x7525, 0x0ce3,
-  0x7528, 0x035c,
-  0x752a, 0x180f,
-  0x752b, 0x04f1,
-  0x752c, 0x04f0,
-  0x752d, 0x07a0,
-  0x752e, 0x1b90,
-  0x752f, 0x2221,
-  0x7530, 0x035e,
-  0x7534, 0x3e87,
-  0x7535, 0x455a,
-  0x7537, 0x04f2,
-  0x7539, 0x18d3,
-  0x753a, 0x18d2,
-  0x753b, 0x3dfb,
-  0x753d, 0x0655,
-  0x753e, 0x1a11,
-  0x753f, 0x1a0f,
-  0x7542, 0x43cd,
-  0x7546, 0x3f40,
-  0x7547, 0x1b91,
-  0x754a, 0x42bf,
-  0x754b, 0x07a4,
-  0x754c, 0x07a2,
-  0x754d, 0x42be,
-  0x754e, 0x07a3,
-  0x754f, 0x07a1,
-  0x7551, 0x3cfe,
-  0x7553, 0x3feb,
-  0x7554, 0x0931,
-  0x7555, 0x3aea,
-  0x7559, 0x0935,
-  0x755a, 0x0934,
-  0x755b, 0x1d4f,
-  0x755c, 0x0933,
-  0x755d, 0x0932,
-  0x755f, 0x1d50,
-  0x7560, 0x3d71,
-  0x7562, 0x0b2d,
-  0x7563, 0x1f9f,
-  0x7564, 0x1f9e,
-  0x7565, 0x0b2b,
-  0x7567, 0x42c0,
-  0x756a, 0x0ce6,
-  0x756b, 0x0ce5,
-  0x756c, 0x2223,
-  0x756d, 0x46fd,
-  0x756e, 0x42c1,
-  0x756f, 0x2222,
-  0x7570, 0x0b2e,
-  0x7572, 0x46fe,
-  0x7576, 0x0e85,
-  0x7577, 0x24ae,
-  0x7578, 0x0e86,
-  0x7579, 0x24ad,
-  0x757a, 0x3f4f,
-  0x757d, 0x2735,
-  0x757e, 0x297f,
-  0x757f, 0x11ab,
-  0x7580, 0x2bd3,
-  0x7583, 0x3ae5,
-  0x7584, 0x2db2,
-  0x7586, 0x159b,
-  0x7587, 0x159a,
-  0x758a, 0x16cc,
-  0x758b, 0x0362,
-  0x758c, 0x1a12,
-  0x758d, 0x46ff,
-  0x758e, 0x42c5,
-  0x758f, 0x0b2f,
-  0x7590, 0x2736,
-  0x7591, 0x1032,
-  0x7592, 0x022e,
-  0x7594, 0x18d4,
-  0x7598, 0x1a13,
-  0x7599, 0x0657,
-  0x759d, 0x0656,
-  0x759e, 0x42c7,
-  0x75a2, 0x07a8,
-  0x75a4, 0x07a6,
-  0x75a7, 0x1b93,
-  0x75aa, 0x1b94,
-  0x75ab, 0x07a5,
-  0x75b0, 0x1d51,
-  0x75b1, 0x3ead,
-  0x75b2, 0x0939,
-  0x75b4, 0x42c8,
-  0x75b5, 0x0b32,
-  0x75b6, 0x1d57,
-  0x75b8, 0x093f,
-  0x75b9, 0x093d,
-  0x75ba, 0x1d58,
-  0x75bb, 0x1d53,
-  0x75bc, 0x093c,
-  0x75bd, 0x093b,
-  0x75be, 0x0936,
-  0x75bf, 0x1d56,
-  0x75c0, 0x1d55,
-  0x75c1, 0x1d52,
-  0x75c2, 0x093e,
-  0x75c3, 0x3f93,
-  0x75c4, 0x1d54,
-  0x75c5, 0x0937,
-  0x75c7, 0x0938,
-  0x75c8, 0x4701,
-  0x75ca, 0x0b33,
-  0x75cb, 0x1fa3,
-  0x75cd, 0x0b34,
-  0x75ce, 0x1fa0,
-  0x75cf, 0x1fa2,
-  0x75d0, 0x1fa6,
-  0x75d1, 0x1fa5,
-  0x75d2, 0x1fa1,
-  0x75d4, 0x0b30,
-  0x75d7, 0x222b,
-  0x75d8, 0x0ceb,
-  0x75d9, 0x0cea,
-  0x75da, 0x2225,
-  0x75db, 0x0ce8,
-  0x75dc, 0x43ce,
-  0x75dd, 0x2228,
-  0x75de, 0x0cec,
-  0x75df, 0x2229,
-  0x75e0, 0x0ced,
-  0x75e1, 0x2226,
-  0x75e2, 0x0ce7,
-  0x75e3, 0x0ce9,
-  0x75e4, 0x222a,
-  0x75e6, 0x2227,
-  0x75e7, 0x2224,
-  0x75ed, 0x24bb,
-  0x75ef, 0x24b0,
-  0x75f0, 0x0e88,
-  0x75f1, 0x0e8b,
-  0x75f2, 0x0e8a,
-  0x75f3, 0x0e8f,
-  0x75f4, 0x0e8e,
-  0x75f5, 0x24bc,
-  0x75f6, 0x24ba,
-  0x75f7, 0x24b3,
-  0x75f8, 0x24b7,
-  0x75f9, 0x24b6,
-  0x75fa, 0x0e8c,
-  0x75fb, 0x24b9,
-  0x75fc, 0x24b5,
-  0x75fd, 0x24bd,
-  0x75fe, 0x24b4,
-  0x75ff, 0x0e8d,
-  0x7600, 0x0e87,
-  0x7601, 0x0e89,
-  0x7602, 0x42c9,
-  0x7603, 0x24b2,
-  0x7607, 0x3f8f,
-  0x7608, 0x2738,
-  0x7609, 0x1036,
-  0x760a, 0x273c,
-  0x760b, 0x1035,
-  0x760c, 0x2739,
-  0x760d, 0x1034,
-  0x760f, 0x24b1,
-  0x7610, 0x24b8,
-  0x7611, 0x273b,
-  0x7613, 0x1037,
-  0x7614, 0x273d,
-  0x7615, 0x273a,
-  0x7616, 0x2737,
-  0x7619, 0x2982,
-  0x761a, 0x2986,
-  0x761b, 0x2988,
-  0x761c, 0x2984,
-  0x761d, 0x2983,
-  0x761e, 0x2981,
-  0x761f, 0x11ae,
-  0x7620, 0x11ac,
-  0x7621, 0x11b1,
-  0x7623, 0x2985,
-  0x7624, 0x11af,
-  0x7625, 0x2980,
-  0x7626, 0x11b0,
-  0x7627, 0x1033,
-  0x7628, 0x2987,
-  0x7629, 0x11ad,
-  0x762c, 0x42ca,
-  0x762d, 0x2bd5,
-  0x762f, 0x2bd4,
-  0x7630, 0x2bdc,
-  0x7631, 0x2bd6,
-  0x7632, 0x2bdb,
-  0x7633, 0x2bd8,
-  0x7634, 0x1302,
-  0x7635, 0x2bda,
-  0x7638, 0x1303,
-  0x763a, 0x1304,
-  0x763b, 0x3e70,
-  0x763c, 0x2bd9,
-  0x763d, 0x2bd7,
-  0x7640, 0x3ee6,
-  0x7642, 0x1415,
-  0x7643, 0x2db3,
-  0x7646, 0x1414,
-  0x7647, 0x2db6,
-  0x7648, 0x2db4,
-  0x764c, 0x1416,
-  0x764d, 0x4702,
-  0x764e, 0x3e72,
-  0x764f, 0x42cc,
-  0x7650, 0x2f63,
-  0x7651, 0x42cb,
-  0x7652, 0x14f9,
-  0x7653, 0x2f64,
-  0x7654, 0x3ef0,
-  0x7656, 0x14f7,
-  0x7657, 0x2f65,
-  0x7658, 0x14f8,
-  0x7659, 0x2f62,
-  0x765a, 0x2f66,
-  0x765c, 0x2f60,
-  0x765f, 0x159c,
-  0x7660, 0x30c5,
-  0x7661, 0x159d,
-  0x7662, 0x1622,
-  0x7664, 0x2f61,
-  0x7665, 0x1623,
-  0x7666, 0x3eaa,
-  0x7667, 0x3fa9,
-  0x7669, 0x167f,
-  0x766a, 0x32e4,
-  0x766c, 0x16ce,
-  0x766d, 0x3395,
-  0x766e, 0x16cd,
-  0x766f, 0x42cd,
-  0x7670, 0x3428,
-  0x7671, 0x1723,
-  0x7673, 0x3aeb,
-  0x7674, 0x4703,
-  0x7675, 0x3543,
-  0x7676, 0x022f,
-  0x7678, 0x07aa,
-  0x7679, 0x1b95,
-  0x767a, 0x4705,
-  0x767b, 0x0cee,
-  0x767d, 0x0363,
-  0x767e, 0x03f5,
-  0x767f, 0x1810,
-  0x7680, 0x43d3,
-  0x7681, 0x18d6,
-  0x7682, 0x04f4,
-  0x7684, 0x0659,
-  0x7686, 0x07ab,
-  0x7689, 0x1fa8,
-  0x768a, 0x1d59,
-  0x768b, 0x0940,
-  0x768c, 0x43d4,
-  0x768e, 0x0b35,
-  0x768f, 0x1fa7,
-  0x7690, 0x42d0,
-  0x7692, 0x222d,
-  0x7693, 0x0cf1,
-  0x7695, 0x222c,
-  0x7696, 0x0cf0,
-  0x7699, 0x24be,
-  0x769a, 0x11b3,
-  0x769b, 0x298c,
-  0x769c, 0x2989,
-  0x76a1, 0x42d5,
-  0x76a4, 0x2db7,
-  0x76a5, 0x42d6,
-  0x76a6, 0x2f67,
-  0x76aa, 0x31fb,
-  0x76ab, 0x31fa,
-  0x76ad, 0x3396,
-  0x76ae, 0x0364,
-  0x76af, 0x1a14,
-  0x76b0, 0x0941,
-  0x76b4, 0x0cf2,
-  0x76b5, 0x24bf,
-  0x76b7, 0x42d7,
-  0x76b8, 0x273e,
-  0x76ba, 0x11b4,
-  0x76bb, 0x2bdd,
-  0x76bd, 0x2f68,
-  0x76be, 0x31fc,
-  0x76bf, 0x0365,
-  0x76c2, 0x065a,
-  0x76c3, 0x07b0,
-  0x76c4, 0x1b96,
-  0x76c5, 0x07b1,
-  0x76c6, 0x07af,
-  0x76c8, 0x07ae,
-  0x76c9, 0x1d5a,
-  0x76ca, 0x0942,
-  0x76cc, 0x42d8,
-  0x76cd, 0x0943,
-  0x76d2, 0x0b37,
-  0x76d3, 0x1fa9,
-  0x76d4, 0x0b36,
-  0x76d6, 0x3f55,
-  0x76da, 0x222e,
-  0x76db, 0x0b38,
-  0x76dc, 0x0cf3,
-  0x76dd, 0x24c0,
-  0x76de, 0x0e90,
-  0x76e1, 0x1038,
-  0x76e3, 0x1039,
-  0x76e4, 0x11b5,
-  0x76e5, 0x1306,
-  0x76e6, 0x2bde,
-  0x76e7, 0x1305,
-  0x76e9, 0x2db8,
-  0x76ea, 0x1417,
-  0x76ec, 0x2f69,
-  0x76ed, 0x31fd,
-  0x76ee, 0x0366,
-  0x76ef, 0x04f5,
-  0x76f0, 0x1a17,
-  0x76f1, 0x1a16,
-  0x76f2, 0x065b,
-  0x76f3, 0x1a15,
-  0x76f4, 0x065c,
-  0x76f5, 0x1a18,
-  0x76f7, 0x1b9c,
-  0x76f8, 0x07b4,
-  0x76f9, 0x07b3,
-  0x76fa, 0x1b9e,
-  0x76fb, 0x1b9d,
-  0x76fc, 0x07b8,
-  0x76fe, 0x07b7,
-  0x7701, 0x07b2,
-  0x7703, 0x1b98,
-  0x7707, 0x07b9,
-  0x7708, 0x1b97,
-  0x7709, 0x07b5,
-  0x770a, 0x1b9b,
-  0x770b, 0x07b6,
-  0x770c, 0x3d62,
-  0x770e, 0x3b02,
-  0x7710, 0x1d5d,
-  0x7711, 0x1d61,
-  0x7712, 0x1d5f,
-  0x7713, 0x1d5e,
-  0x7715, 0x1d62,
-  0x7719, 0x1d63,
-  0x771b, 0x1d5c,
-  0x771d, 0x1d5b,
-  0x771e, 0x42de,
-  0x771f, 0x0946,
-  0x7722, 0x1d65,
-  0x7723, 0x1d60,
-  0x7724, 0x3fe8,
-  0x7725, 0x1fb2,
-  0x7726, 0x42df,
-  0x7727, 0x1d66,
-  0x7728, 0x0948,
-  0x7729, 0x0945,
-  0x772b, 0x3ff3,
-  0x772d, 0x1fac,
-  0x772f, 0x1fab,
-  0x7731, 0x1fad,
-  0x7733, 0x1fb0,
-  0x7734, 0x1faf,
-  0x7735, 0x1fb4,
-  0x7736, 0x0b3c,
-  0x7737, 0x0b39,
-  0x7738, 0x0b3d,
-  0x7739, 0x1faa,
-  0x773a, 0x0b3e,
-  0x773b, 0x1fb3,
-  0x773c, 0x0b3b,
-  0x773d, 0x1fb1,
-  0x773e, 0x0b3a,
-  0x7740, 0x42e0,
-  0x7743, 0x470a,
-  0x7744, 0x2231,
-  0x7745, 0x2233,
-  0x7746, 0x222f,
-  0x774a, 0x2234,
-  0x774b, 0x2236,
-  0x774d, 0x2232,
-  0x774e, 0x2235,
-  0x774f, 0x0cf4,
-  0x7752, 0x24c4,
-  0x7754, 0x24c9,
-  0x7755, 0x24c1,
-  0x7756, 0x24c5,
-  0x7758, 0x42e3,
-  0x7759, 0x24ca,
-  0x775a, 0x24c6,
-  0x775b, 0x0e92,
-  0x775c, 0x0e9a,
-  0x775e, 0x0e95,
-  0x775f, 0x24c2,
-  0x7761, 0x103d,
-  0x7762, 0x0e9d,
-  0x7763, 0x0e96,
-  0x7765, 0x0e9b,
-  0x7766, 0x0e94,
-  0x7767, 0x24c8,
-  0x7768, 0x0e9c,
-  0x7769, 0x24c7,
-  0x776a, 0x0e98,
-  0x776b, 0x0e93,
-  0x776c, 0x0e99,
-  0x776d, 0x24cb,
-  0x776e, 0x2743,
-  0x776f, 0x2745,
-  0x7772, 0x396b,
-  0x7777, 0x46a9,
-  0x7778, 0x3b00,
-  0x7779, 0x0e97,
-  0x777a, 0x4317,
-  0x777b, 0x3b04,
-  0x777c, 0x2740,
-  0x777d, 0x103b,
-  0x777e, 0x2746,
-  0x777f, 0x103c,
-  0x7780, 0x2744,
-  0x7781, 0x273f,
-  0x7782, 0x2742,
-  0x7783, 0x2747,
-  0x7784, 0x103a,
-  0x7785, 0x2741,
-  0x7787, 0x11b7,
-  0x7788, 0x2990,
-  0x7789, 0x298f,
-  0x778b, 0x11ba,
-  0x778c, 0x11b8,
-  0x778d, 0x298d,
-  0x778e, 0x11b6,
-  0x778f, 0x298e,
-  0x7791, 0x11b9,
-  0x7793, 0x382d,
-  0x7795, 0x2be6,
-  0x7797, 0x2be8,
-  0x7798, 0x470e,
-  0x7799, 0x2be7,
-  0x779a, 0x2bdf,
-  0x779b, 0x2be3,
-  0x779c, 0x2be2,
-  0x779d, 0x2be0,
-  0x779e, 0x1308,
-  0x77a0, 0x1307,
-  0x77a1, 0x2be1,
-  0x77a2, 0x2be4,
-  0x77a5, 0x130a,
-  0x77a7, 0x141c,
-  0x77a8, 0x2dc0,
-  0x77aa, 0x1419,
-  0x77ab, 0x2dba,
-  0x77ac, 0x141b,
-  0x77ad, 0x141d,
-  0x77af, 0x42e5,
-  0x77b0, 0x141a,
-  0x77b1, 0x2dbf,
-  0x77b2, 0x2dbb,
-  0x77b3, 0x1418,
-  0x77b4, 0x2dbe,
-  0x77b5, 0x2db9,
-  0x77b6, 0x2dbd,
-  0x77b7, 0x2dbc,
-  0x77b9, 0x3e73,
-  0x77ba, 0x2f6b,
-  0x77bb, 0x14fc,
-  0x77bd, 0x14fa,
-  0x77be, 0x4711,
-  0x77bf, 0x14fb,
-  0x77c2, 0x2f6a,
-  0x77c3, 0x3bb1,
-  0x77c4, 0x30c8,
-  0x77c5, 0x41c1,
-  0x77c7, 0x159e,
-  0x77c9, 0x30c6,
-  0x77cb, 0x4712,
-  0x77cc, 0x31fe,
-  0x77cd, 0x3201,
-  0x77ce, 0x31ff,
-  0x77d0, 0x32e5,
-  0x77d3, 0x1680,
-  0x77d4, 0x3429,
-  0x77d5, 0x348f,
-  0x77d7, 0x1725,
-  0x77d8, 0x34d3,
-  0x77da, 0x1753,
-  0x77db, 0x0367,
-  0x77dc, 0x07ba,
-  0x77de, 0x2238,
-  0x77e0, 0x24cc,
-  0x77e2, 0x0368,
-  0x77e3, 0x04f6,
-  0x77e5, 0x065d,
-  0x77e6, 0x4081,
-  0x77e7, 0x1b9f,
-  0x77e9, 0x0949,
-  0x77ec, 0x2239,
-  0x77ed, 0x0cf5,
-  0x77ee, 0x0e9e,
-  0x77ef, 0x141e,
-  0x77f0, 0x2dc1,
-  0x77f1, 0x30c9,
-  0x77f2, 0x3202,
-  0x77f3, 0x0369,
-  0x77f4, 0x42e9,
-  0x77f7, 0x1a1e,
-  0x77f8, 0x1a19,
-  0x77f9, 0x1a1b,
-  0x77fa, 0x1a1d,
-  0x77fb, 0x1a1c,
-  0x77fc, 0x1a1a,
-  0x77fd, 0x065e,
-  0x77fe, 0x3fd5,
-  0x7802, 0x07bb,
-  0x7803, 0x1ba9,
-  0x7805, 0x1ba4,
-  0x7806, 0x1ba1,
-  0x7808, 0x3e46,
-  0x7809, 0x1ba8,
-  0x780c, 0x07bd,
-  0x780e, 0x1ba7,
-  0x780f, 0x1ba6,
-  0x7810, 0x1ba5,
-  0x7811, 0x1ba2,
-  0x7813, 0x1baa,
-  0x7814, 0x07bc,
-  0x7818, 0x4713,
-  0x781c, 0x4714,
-  0x781d, 0x094d,
-  0x781e, 0x3b13,
-  0x781f, 0x0953,
-  0x7820, 0x0952,
-  0x7821, 0x1d6f,
-  0x7822, 0x1d69,
-  0x7823, 0x1d67,
-  0x7825, 0x0950,
-  0x7826, 0x1fbb,
-  0x7827, 0x094b,
-  0x7828, 0x1d6c,
-  0x7829, 0x1d70,
-  0x782a, 0x1d72,
-  0x782b, 0x1d6e,
-  0x782c, 0x1d68,
-  0x782d, 0x0951,
-  0x782e, 0x1d6d,
-  0x782f, 0x1d6b,
-  0x7830, 0x094a,
-  0x7831, 0x1d73,
-  0x7832, 0x0954,
-  0x7833, 0x1d71,
-  0x7834, 0x094e,
-  0x7835, 0x1d6a,
-  0x7837, 0x094f,
-  0x7838, 0x094c,
-  0x7839, 0x43d6,
-  0x783c, 0x401a,
-  0x783d, 0x3c6a,
-  0x7842, 0x3ac4,
-  0x7843, 0x0b40,
-  0x7844, 0x3c2b,
-  0x7845, 0x1fbc,
-  0x7847, 0x4715,
-  0x7848, 0x1fb5,
-  0x7849, 0x1fb7,
-  0x784a, 0x1fb9,
-  0x784b, 0x3c6d,
-  0x784c, 0x1fba,
-  0x784d, 0x1fb8,
-  0x784e, 0x0b41,
-  0x7850, 0x1fbd,
-  0x7851, 0x4716,
-  0x7852, 0x1fb6,
-  0x7853, 0x3f95,
-  0x7854, 0x3c6b,
-  0x785c, 0x223d,
-  0x785d, 0x0cf6,
-  0x785e, 0x2245,
-  0x7860, 0x223a,
-  0x7862, 0x2246,
-  0x7864, 0x223b,
-  0x7866, 0x4717,
-  0x7868, 0x2244,
-  0x7869, 0x2243,
-  0x786a, 0x2240,
-  0x786b, 0x0b3f,
-  0x786c, 0x0cf7,
-  0x786d, 0x223e,
-  0x786e, 0x2241,
-  0x786f, 0x0cf8,
-  0x7870, 0x2242,
-  0x7871, 0x223f,
-  0x7879, 0x24d7,
-  0x787a, 0x3ee9,
-  0x787b, 0x24db,
-  0x787c, 0x0ea5,
-  0x787e, 0x274d,
-  0x787f, 0x0ea8,
-  0x7880, 0x24d9,
-  0x7881, 0x36e8,
-  0x7883, 0x24d6,
-  0x7884, 0x24d1,
-  0x7885, 0x24d3,
-  0x7887, 0x24cd,
-  0x7888, 0x3b15,
-  0x7889, 0x0ea4,
-  0x788c, 0x0ea3,
-  0x788d, 0x3b14,
-  0x788e, 0x0e9f,
-  0x788f, 0x24d0,
-  0x7891, 0x0ea6,
-  0x7893, 0x0ea7,
-  0x7894, 0x24cf,
-  0x7895, 0x24d2,
-  0x7896, 0x24da,
-  0x7897, 0x0ea1,
-  0x7899, 0x24d8,
-  0x789a, 0x24ce,
-  0x789e, 0x274f,
-  0x789f, 0x103f,
-  0x78a0, 0x2751,
-  0x78a1, 0x24d5,
-  0x78a2, 0x2753,
-  0x78a3, 0x1043,
-  0x78a4, 0x2754,
-  0x78a5, 0x2750,
-  0x78a7, 0x1040,
-  0x78a8, 0x274c,
-  0x78a9, 0x1042,
-  0x78aa, 0x2749,
-  0x78ab, 0x274e,
-  0x78ac, 0x2752,
-  0x78ad, 0x274b,
-  0x78af, 0x42ec,
-  0x78b0, 0x0ea0,
-  0x78b1, 0x42f4,
-  0x78b2, 0x2748,
-  0x78b3, 0x1041,
-  0x78b4, 0x274a,
-  0x78b6, 0x3c6c,
-  0x78b8, 0x4571,
-  0x78b9, 0x3c63,
-  0x78ba, 0x11bd,
-  0x78bb, 0x2992,
-  0x78bc, 0x11c1,
-  0x78be, 0x11bf,
-  0x78c1, 0x103e,
-  0x78c3, 0x2999,
-  0x78c5, 0x11bc,
-  0x78c7, 0x42ed,
-  0x78c8, 0x2998,
-  0x78c9, 0x299b,
-  0x78ca, 0x11be,
-  0x78cb, 0x11bb,
-  0x78cc, 0x2994,
-  0x78cd, 0x2991,
-  0x78ce, 0x2996,
-  0x78cf, 0x2993,
-  0x78d0, 0x11c2,
-  0x78d1, 0x2995,
-  0x78d2, 0x3b16,
-  0x78d3, 0x42ee,
-  0x78d4, 0x2997,
-  0x78d5, 0x11c0,
-  0x78d7, 0x42f2,
-  0x78d8, 0x3f8c,
-  0x78da, 0x130c,
-  0x78db, 0x2bef,
-  0x78dd, 0x2be9,
-  0x78de, 0x2bed,
-  0x78df, 0x2bf3,
-  0x78e1, 0x2bf0,
-  0x78e3, 0x2bee,
-  0x78e5, 0x2beb,
-  0x78e7, 0x130e,
-  0x78e8, 0x130b,
-  0x78e9, 0x2bea,
-  0x78ea, 0x2bec,
-  0x78ec, 0x130d,
-  0x78ed, 0x2bf2,
-  0x78ee, 0x3a81,
-  0x78ef, 0x1422,
-  0x78f0, 0x3b3a,
-  0x78f1, 0x40be,
-  0x78f2, 0x2dc8,
-  0x78f3, 0x2dc2,
-  0x78f4, 0x1421,
-  0x78f5, 0x38b3,
-  0x78f7, 0x141f,
-  0x78f9, 0x2dca,
-  0x78fa, 0x1420,
-  0x78fb, 0x2dc5,
-  0x78fd, 0x2dc3,
-  0x78fe, 0x2dcb,
-  0x78ff, 0x2dc7,
-  0x7901, 0x1423,
-  0x7902, 0x2dc4,
-  0x7904, 0x2dcc,
-  0x7905, 0x2dc9,
-  0x7906, 0x3fcf,
-  0x7909, 0x2f6f,
-  0x790c, 0x2f6c,
-  0x790e, 0x14fe,
-  0x7910, 0x2f70,
-  0x7911, 0x2f72,
-  0x7912, 0x2f71,
-  0x7913, 0x2f6d,
-  0x7917, 0x30ce,
-  0x7919, 0x159f,
-  0x791b, 0x30cb,
-  0x791c, 0x30cd,
-  0x791d, 0x30ca,
-  0x791e, 0x30cf,
-  0x7921, 0x30cc,
-  0x7923, 0x3204,
-  0x7924, 0x3207,
-  0x7925, 0x3203,
-  0x7926, 0x1624,
-  0x7927, 0x3205,
-  0x7929, 0x3208,
-  0x792a, 0x1625,
-  0x792b, 0x1627,
-  0x792c, 0x1626,
-  0x792d, 0x32e6,
-  0x792e, 0x42f0,
-  0x792f, 0x32e8,
-  0x7931, 0x32e7,
-  0x7932, 0x471b,
-  0x7933, 0x471a,
-  0x7934, 0x42f3,
-  0x7935, 0x3397,
-  0x7936, 0x3783,
-  0x7938, 0x3490,
-  0x7939, 0x34d5,
-  0x793a, 0x036a,
-  0x793b, 0x44f7,
-  0x793c, 0x4300,
-  0x793d, 0x18d7,
-  0x793e, 0x065f,
-  0x793f, 0x1a20,
-  0x7940, 0x0660,
-  0x7942, 0x1a1f,
-  0x7944, 0x1baf,
-  0x7945, 0x1bae,
-  0x7946, 0x07bf,
-  0x7947, 0x07c2,
-  0x7948, 0x07c1,
-  0x7949, 0x07c0,
-  0x794a, 0x1bab,
-  0x794b, 0x1bad,
-  0x794c, 0x1bac,
-  0x794f, 0x1d76,
-  0x7950, 0x0956,
-  0x7951, 0x1d7a,
-  0x7952, 0x1d79,
-  0x7953, 0x1d78,
-  0x7954, 0x1d74,
-  0x7955, 0x0955,
-  0x7956, 0x0959,
-  0x7957, 0x095c,
-  0x7958, 0x37e5,
-  0x7959, 0x3b18,
-  0x795a, 0x095d,
-  0x795b, 0x1d75,
-  0x795c, 0x1d77,
-  0x795d, 0x095b,
-  0x795e, 0x095a,
-  0x795f, 0x0958,
-  0x7960, 0x0957,
-  0x7961, 0x1fc4,
-  0x7962, 0x3e7d,
-  0x7963, 0x1fc2,
-  0x7964, 0x1fbe,
-  0x7965, 0x0b42,
-  0x7967, 0x1fbf,
-  0x7968, 0x0b43,
-  0x7969, 0x1fc0,
-  0x796b, 0x1fc3,
-  0x796d, 0x0b44,
-  0x7970, 0x224a,
-  0x7971, 0x4168,
-  0x7972, 0x2249,
-  0x7973, 0x2248,
-  0x7974, 0x2247,
-  0x7979, 0x24df,
-  0x797a, 0x0ea9,
-  0x797c, 0x24dc,
-  0x797d, 0x24de,
-  0x797e, 0x3e26,
-  0x797f, 0x0eaa,
-  0x7980, 0x42fc,
-  0x7981, 0x0eab,
-  0x7982, 0x24dd,
-  0x7983, 0x3df6,
-  0x7986, 0x42f9,
-  0x7987, 0x4588,
-  0x7988, 0x275d,
-  0x798a, 0x2756,
-  0x798d, 0x1046,
-  0x798e, 0x1044,
-  0x7990, 0x275f,
-  0x7991, 0x471d,
-  0x7992, 0x275e,
-  0x7993, 0x275b,
-  0x7994, 0x275a,
-  0x7995, 0x2759,
-  0x7996, 0x2758,
-  0x7997, 0x275c,
-  0x7998, 0x2755,
-  0x7999, 0x43fc,
-  0x799a, 0x299c,
-  0x799b, 0x29a1,
-  0x799c, 0x299f,
-  0x799d, 0x42fe,
-  0x799f, 0x395e,
-  0x79a0, 0x299e,
-  0x79a1, 0x299d,
-  0x79a2, 0x29a0,
-  0x79a4, 0x2bf5,
-  0x79a5, 0x3b1e,
-  0x79a6, 0x130f,
-  0x79a7, 0x1424,
-  0x79a8, 0x2dce,
-  0x79a9, 0x4301,
-  0x79aa, 0x1425,
-  0x79ab, 0x2dcd,
-  0x79ac, 0x2f74,
-  0x79ad, 0x2f73,
-  0x79ae, 0x14ff,
-  0x79b0, 0x30d0,
-  0x79b1, 0x15a0,
-  0x79b2, 0x3209,
-  0x79b3, 0x16cf,
-  0x79b4, 0x3398,
-  0x79b6, 0x3492,
-  0x79b7, 0x3491,
-  0x79b8, 0x17b2,
-  0x79b9, 0x07c3,
-  0x79bb, 0x1fc5,
-  0x79bd, 0x0ead,
-  0x79be, 0x036b,
-  0x79bf, 0x04f9,
-  0x79c0, 0x04f8,
-  0x79c1, 0x04f7,
-  0x79c4, 0x3ccd,
-  0x79c5, 0x1a21,
-  0x79c6, 0x4305,
-  0x79c8, 0x0663,
-  0x79c9, 0x0662,
-  0x79cb, 0x07c7,
-  0x79cc, 0x4233,
-  0x79cd, 0x1bb1,
-  0x79ce, 0x1bb4,
-  0x79cf, 0x1bb2,
-  0x79d1, 0x07c5,
-  0x79d4, 0x4307,
-  0x79d5, 0x1bb0,
-  0x79d6, 0x1bb3,
-  0x79d8, 0x0964,
-  0x79dc, 0x1d81,
-  0x79dd, 0x1d83,
-  0x79de, 0x1d82,
-  0x79df, 0x0961,
-  0x79e0, 0x1d7d,
-  0x79e2, 0x3c5a,
-  0x79e3, 0x095f,
-  0x79e4, 0x095e,
-  0x79e6, 0x0962,
-  0x79e7, 0x0960,
-  0x79e9, 0x0963,
-  0x79ea, 0x1d80,
-  0x79eb, 0x1d7b,
-  0x79ed, 0x1d7f,
-  0x79ee, 0x1d7e,
-  0x79f1, 0x3b27,
-  0x79f4, 0x3b22,
-  0x79f6, 0x1fc8,
-  0x79f8, 0x1fc7,
-  0x79fa, 0x1fc6,
-  0x79fb, 0x0b45,
-  0x7a00, 0x0cfd,
-  0x7a02, 0x224b,
-  0x7a03, 0x224d,
-  0x7a04, 0x224f,
-  0x7a05, 0x0cfc,
-  0x7a06, 0x471e,
-  0x7a08, 0x0cfa,
-  0x7a0a, 0x224c,
-  0x7a0b, 0x0cfb,
-  0x7a0c, 0x224e,
-  0x7a0d, 0x0cf9,
-  0x7a10, 0x24e9,
-  0x7a11, 0x24e0,
-  0x7a12, 0x24e3,
-  0x7a13, 0x24e7,
-  0x7a14, 0x0eb1,
-  0x7a15, 0x24e5,
-  0x7a17, 0x24e4,
-  0x7a18, 0x24e1,
-  0x7a1a, 0x0eaf,
-  0x7a1b, 0x24e8,
-  0x7a1c, 0x0eae,
-  0x7a1e, 0x0eb3,
-  0x7a1f, 0x0eb2,
-  0x7a20, 0x0eb0,
-  0x7a22, 0x24e6,
-  0x7a26, 0x2765,
-  0x7a28, 0x2764,
-  0x7a2b, 0x2760,
-  0x7a2d, 0x3fda,
-  0x7a2e, 0x1047,
-  0x7a2f, 0x2763,
-  0x7a30, 0x2762,
-  0x7a31, 0x1048,
-  0x7a37, 0x11c7,
-  0x7a39, 0x29a3,
-  0x7a3a, 0x3b21,
-  0x7a3b, 0x11c8,
-  0x7a3c, 0x11c4,
-  0x7a3d, 0x11c6,
-  0x7a3e, 0x3f8b,
-  0x7a3f, 0x11c3,
-  0x7a40, 0x11c5,
-  0x7a43, 0x396c,
-  0x7a44, 0x2bf6,
-  0x7a45, 0x3df1,
-  0x7a46, 0x1312,
-  0x7a47, 0x2bf8,
-  0x7a48, 0x2bf7,
-  0x7a49, 0x3733,
-  0x7a4a, 0x2761,
-  0x7a4b, 0x1314,
-  0x7a4c, 0x1313,
-  0x7a4d, 0x1310,
-  0x7a54, 0x2dd3,
-  0x7a56, 0x2dd1,
-  0x7a57, 0x1426,
-  0x7a58, 0x2dd2,
-  0x7a5a, 0x2dd4,
-  0x7a5b, 0x2dd0,
-  0x7a5c, 0x2dcf,
-  0x7a5f, 0x2f75,
-  0x7a60, 0x1502,
-  0x7a61, 0x1500,
-  0x7a65, 0x3736,
-  0x7a67, 0x30d1,
-  0x7a69, 0x15a2,
-  0x7a6b, 0x15a1,
-  0x7a6c, 0x320b,
-  0x7a6e, 0x320a,
-  0x7a70, 0x3399,
-  0x7a74, 0x036c,
-  0x7a75, 0x1811,
-  0x7a76, 0x04fa,
-  0x7a78, 0x1a22,
-  0x7a79, 0x0665,
-  0x7a7a, 0x0664,
-  0x7a7b, 0x1a23,
-  0x7a7d, 0x3737,
-  0x7a7e, 0x1bb6,
-  0x7a7f, 0x07c8,
-  0x7a80, 0x1bb5,
-  0x7a81, 0x07c9,
-  0x7a83, 0x3d7d,
-  0x7a84, 0x0965,
-  0x7a85, 0x1d86,
-  0x7a86, 0x1d84,
-  0x7a87, 0x1d8a,
-  0x7a88, 0x0966,
-  0x7a89, 0x1d85,
-  0x7a8a, 0x1d89,
-  0x7a8b, 0x1d87,
-  0x7a8f, 0x1fca,
-  0x7a90, 0x1fcc,
-  0x7a91, 0x43d8,
-  0x7a92, 0x0b46,
-  0x7a94, 0x1fcb,
-  0x7a95, 0x0b47,
-  0x7a96, 0x0d00,
-  0x7a97, 0x0cff,
-  0x7a98, 0x0cfe,
-  0x7a99, 0x2250,
-  0x7a9e, 0x24ec,
-  0x7a9f, 0x0eb4,
-  0x7aa2, 0x24eb,
-  0x7aa3, 0x24ea,
-  0x7aa8, 0x2766,
-  0x7aa9, 0x104a,
-  0x7aaa, 0x1049,
-  0x7aab, 0x2767,
-  0x7aae, 0x11ca,
-  0x7aaf, 0x11c9,
-  0x7ab0, 0x373a,
-  0x7ab1, 0x2bfc,
-  0x7ab2, 0x29a4,
-  0x7ab3, 0x29a6,
-  0x7ab4, 0x29a5,
-  0x7ab5, 0x2bfb,
-  0x7ab6, 0x2bf9,
-  0x7ab7, 0x2bfd,
-  0x7ab8, 0x2bfa,
-  0x7aba, 0x1315,
-  0x7abb, 0x3739,
-  0x7abc, 0x4721,
-  0x7abe, 0x2dd5,
-  0x7abf, 0x1427,
-  0x7ac0, 0x2dd6,
-  0x7ac2, 0x373b,
-  0x7ac4, 0x1503,
-  0x7ac7, 0x1628,
-  0x7ac8, 0x3d7f,
-  0x7ac9, 0x4570,
-  0x7aca, 0x16ff,
-  0x7acb, 0x036d,
-  0x7acf, 0x4724,
-  0x7ad1, 0x1bb7,
-  0x7ad3, 0x3f8a,
-  0x7ad8, 0x1d8b,
-  0x7ad9, 0x0967,
-  0x7ada, 0x3740,
-  0x7adb, 0x4725,
-  0x7adc, 0x3951,
-  0x7add, 0x3741,
-  0x7adf, 0x0bde,
-  0x7ae0, 0x0bdd,
-  0x7ae2, 0x3b33,
-  0x7ae3, 0x0d02,
-  0x7ae4, 0x2252,
-  0x7ae5, 0x0d01,
-  0x7ae6, 0x2251,
-  0x7ae7, 0x385d,
-  0x7ae9, 0x3831,
-  0x7aea, 0x3742,
-  0x7aeb, 0x24ed,
-  0x7aed, 0x104b,
-  0x7aee, 0x2769,
-  0x7aef, 0x104c,
-  0x7af6, 0x1629,
-  0x7af7, 0x320d,
-  0x7af9, 0x03f6,
-  0x7afa, 0x0666,
-  0x7afb, 0x1a24,
-  0x7afd, 0x07cb,
-  0x7afe, 0x3b3d,
-  0x7aff, 0x07ca,
-  0x7b00, 0x1bb8,
-  0x7b04, 0x1d8d,
-  0x7b05, 0x1d8f,
-  0x7b06, 0x0968,
-  0x7b08, 0x1d91,
-  0x7b09, 0x1d94,
-  0x7b0a, 0x1d92,
-  0x7b0b, 0x3746,
-  0x7b0c, 0x3b63,
-  0x7b0e, 0x1d93,
-  0x7b0f, 0x1d90,
-  0x7b10, 0x1d8c,
-  0x7b11, 0x0969,
-  0x7b12, 0x1d95,
-  0x7b13, 0x1d8e,
-  0x7b14, 0x3f77,
-  0x7b18, 0x1fd5,
-  0x7b19, 0x0b4d,
-  0x7b1a, 0x1fde,
-  0x7b1b, 0x0b4a,
-  0x7b1d, 0x1fd7,
-  0x7b1e, 0x0b4e,
-  0x7b1f, 0x3f11,
-  0x7b20, 0x0b48,
-  0x7b22, 0x1fd2,
-  0x7b23, 0x1fdf,
-  0x7b24, 0x1fd3,
-  0x7b25, 0x1fd0,
-  0x7b26, 0x0b4c,
-  0x7b27, 0x3b5f,
-  0x7b28, 0x0b49,
-  0x7b29, 0x3748,
-  0x7b2a, 0x1fd6,
-  0x7b2b, 0x1fd9,
-  0x7b2c, 0x0b4b,
-  0x7b2d, 0x1fda,
-  0x7b2e, 0x0b4f,
-  0x7b2f, 0x1fdb,
-  0x7b30, 0x1fd1,
-  0x7b31, 0x1fd8,
-  0x7b32, 0x1fdc,
-  0x7b33, 0x1fd4,
-  0x7b34, 0x1fcf,
-  0x7b35, 0x1fcd,
-  0x7b38, 0x1fdd,
-  0x7b39, 0x3d6e,
-  0x7b3b, 0x1fce,
-  0x7b40, 0x2259,
-  0x7b42, 0x3ded,
-  0x7b43, 0x3e25,
-  0x7b44, 0x2255,
-  0x7b45, 0x225b,
-  0x7b46, 0x0d05,
-  0x7b47, 0x2254,
-  0x7b48, 0x2256,
-  0x7b49, 0x0d03,
-  0x7b4a, 0x2253,
-  0x7b4b, 0x0d0a,
-  0x7b4c, 0x2257,
-  0x7b4d, 0x0d09,
-  0x7b4e, 0x2258,
-  0x7b4f, 0x0d0b,
-  0x7b50, 0x0d06,
-  0x7b51, 0x0d0c,
-  0x7b52, 0x0d07,
-  0x7b54, 0x0d08,
-  0x7b55, 0x3747,
-  0x7b56, 0x0d04,
-  0x7b58, 0x225a,
-  0x7b60, 0x0eb8,
-  0x7b61, 0x24f8,
-  0x7b62, 0x4727,
-  0x7b63, 0x24fb,
-  0x7b64, 0x24ef,
-  0x7b65, 0x24f4,
-  0x7b66, 0x24ee,
-  0x7b67, 0x0eba,
-  0x7b69, 0x24f2,
-  0x7b6c, 0x4728,
-  0x7b6d, 0x24f0,
-  0x7b6e, 0x0eb9,
-  0x7b6f, 0x374c,
-  0x7b70, 0x24f7,
-  0x7b71, 0x24f6,
-  0x7b72, 0x24f3,
-  0x7b73, 0x24f5,
-  0x7b74, 0x24f1,
-  0x7b75, 0x1050,
-  0x7b76, 0x24fa,
-  0x7b77, 0x0eb6,
-  0x7b78, 0x24f9,
-  0x7b7b, 0x4729,
-  0x7b82, 0x2779,
-  0x7b84, 0x1057,
-  0x7b85, 0x2774,
-  0x7b87, 0x1056,
-  0x7b88, 0x276a,
-  0x7b8a, 0x276c,
-  0x7b8b, 0x104f,
-  0x7b8c, 0x2771,
-  0x7b8d, 0x2770,
-  0x7b8e, 0x2773,
-  0x7b8f, 0x1054,
-  0x7b90, 0x276e,
-  0x7b91, 0x276d,
-  0x7b92, 0x3752,
-  0x7b94, 0x1053,
-  0x7b95, 0x104e,
-  0x7b96, 0x276f,
-  0x7b97, 0x1051,
-  0x7b98, 0x2775,
-  0x7b99, 0x2777,
-  0x7b9b, 0x2772,
-  0x7b9c, 0x276b,
-  0x7b9d, 0x1052,
-  0x7ba0, 0x11d2,
-  0x7ba1, 0x104d,
-  0x7ba2, 0x374b,
-  0x7ba3, 0x3f14,
-  0x7ba4, 0x2778,
-  0x7bac, 0x29aa,
-  0x7bad, 0x11cb,
-  0x7baf, 0x29ac,
-  0x7bb1, 0x11cc,
-  0x7bb2, 0x461c,
-  0x7bb4, 0x11ce,
-  0x7bb5, 0x29af,
-  0x7bb7, 0x29a7,
-  0x7bb8, 0x1055,
-  0x7bb9, 0x29ad,
-  0x7bbe, 0x29a9,
-  0x7bc0, 0x0eb7,
-  0x7bc1, 0x11d1,
-  0x7bc4, 0x11cd,
-  0x7bc6, 0x11cf,
-  0x7bc9, 0x1318,
-  0x7bca, 0x29ae,
-  0x7bcb, 0x29a8,
-  0x7bcc, 0x11d3,
-  0x7bce, 0x29ab,
-  0x7bcf, 0x3f18,
-  0x7bd0, 0x3750,
-  0x7bd4, 0x2c07,
-  0x7bd5, 0x2c02,
-  0x7bd8, 0x2c0c,
-  0x7bd9, 0x1316,
-  0x7bda, 0x2c04,
-  0x7bdb, 0x131a,
-  0x7bdc, 0x2c0a,
-  0x7bdd, 0x2c01,
-  0x7bde, 0x2bfe,
-  0x7bdf, 0x2c0d,
-  0x7be0, 0x142d,
-  0x7be1, 0x131b,
-  0x7be2, 0x2c09,
-  0x7be3, 0x2bff,
-  0x7be4, 0x1319,
-  0x7be5, 0x2c03,
-  0x7be6, 0x131d,
-  0x7be7, 0x2c00,
-  0x7be8, 0x2c05,
-  0x7be9, 0x131c,
-  0x7bea, 0x2c08,
-  0x7beb, 0x2c0b,
-  0x7bf0, 0x2de9,
-  0x7bf2, 0x2dda,
-  0x7bf3, 0x2de1,
-  0x7bf4, 0x2ddf,
-  0x7bf7, 0x142b,
-  0x7bf8, 0x2de6,
-  0x7bf9, 0x2c06,
-  0x7bfa, 0x3757,
-  0x7bfb, 0x2ddd,
-  0x7bfc, 0x3f1f,
-  0x7bfd, 0x2de7,
-  0x7bfe, 0x142a,
-  0x7bff, 0x2ddc,
-  0x7c00, 0x2ddb,
-  0x7c01, 0x2de5,
-  0x7c02, 0x2de2,
-  0x7c03, 0x2de4,
-  0x7c05, 0x2dd8,
-  0x7c06, 0x2de8,
-  0x7c07, 0x1428,
-  0x7c09, 0x2de3,
-  0x7c0a, 0x2dec,
-  0x7c0b, 0x2de0,
-  0x7c0c, 0x142c,
-  0x7c0d, 0x1429,
-  0x7c0e, 0x2dde,
-  0x7c0f, 0x2dd9,
-  0x7c10, 0x2deb,
-  0x7c11, 0x1317,
-  0x7c12, 0x472a,
-  0x7c15, 0x4061,
-  0x7c19, 0x2f78,
-  0x7c1b, 0x43d9,
-  0x7c1c, 0x2f76,
-  0x7c1d, 0x2f7c,
-  0x7c1e, 0x1508,
-  0x7c1f, 0x2f7a,
-  0x7c20, 0x2f79,
-  0x7c21, 0x150a,
-  0x7c22, 0x2f7f,
-  0x7c23, 0x1509,
-  0x7c25, 0x2f80,
-  0x7c26, 0x2f7d,
-  0x7c27, 0x1506,
-  0x7c28, 0x2f7e,
-  0x7c29, 0x2f77,
-  0x7c2a, 0x1507,
-  0x7c2b, 0x1505,
-  0x7c2c, 0x30d6,
-  0x7c2d, 0x2f7b,
-  0x7c30, 0x2f81,
-  0x7c33, 0x30d3,
-  0x7c35, 0x3759,
-  0x7c37, 0x15a7,
-  0x7c38, 0x15a5,
-  0x7c39, 0x30d5,
-  0x7c3b, 0x30d7,
-  0x7c3c, 0x30d4,
-  0x7c3d, 0x15a6,
-  0x7c3e, 0x15a3,
-  0x7c40, 0x15a8,
-  0x7c42, 0x3f1c,
-  0x7c43, 0x162b,
-  0x7c44, 0x375b,
-  0x7c45, 0x3212,
-  0x7c47, 0x3211,
-  0x7c48, 0x320f,
-  0x7c49, 0x320e,
-  0x7c4a, 0x3210,
-  0x7c4c, 0x162a,
-  0x7c4d, 0x162c,
-  0x7c50, 0x1681,
-  0x7c51, 0x3fb8,
-  0x7c53, 0x32ea,
-  0x7c54, 0x32e9,
-  0x7c56, 0x3eff,
-  0x7c57, 0x339b,
-  0x7c59, 0x339d,
-  0x7c5a, 0x339f,
-  0x7c5b, 0x339e,
-  0x7c5c, 0x339c,
-  0x7c5d, 0x3b3f,
-  0x7c5f, 0x16d1,
-  0x7c60, 0x16d0,
-  0x7c63, 0x1701,
-  0x7c64, 0x1700,
-  0x7c65, 0x1702,
-  0x7c66, 0x342b,
-  0x7c67, 0x342a,
-  0x7c69, 0x34d6,
-  0x7c6a, 0x3493,
-  0x7c6b, 0x34d7,
-  0x7c6c, 0x1745,
-  0x7c6d, 0x3b40,
-  0x7c6e, 0x1746,
-  0x7c6f, 0x3507,
-  0x7c70, 0x3f52,
-  0x7c72, 0x176b,
-  0x7c73, 0x03f7,
-  0x7c74, 0x469c,
-  0x7c75, 0x1a25,
-  0x7c78, 0x1bbb,
-  0x7c7a, 0x1bba,
-  0x7c7b, 0x472d,
-  0x7c7c, 0x3b49,
-  0x7c7d, 0x07cc,
-  0x7c7e, 0x3f1a,
-  0x7c7f, 0x1bbd,
-  0x7c83, 0x375c,
-  0x7c84, 0x1d96,
-  0x7c85, 0x1d9c,
-  0x7c86, 0x3f1d,
-  0x7c88, 0x1d9a,
-  0x7c89, 0x096a,
-  0x7c8a, 0x1d98,
-  0x7c8c, 0x1d99,
-  0x7c8d, 0x1d9b,
-  0x7c8e, 0x3b48,
-  0x7c91, 0x1d97,
-  0x7c92, 0x0b50,
-  0x7c94, 0x1fe0,
-  0x7c95, 0x0b52,
-  0x7c96, 0x1fe2,
-  0x7c97, 0x0b51,
-  0x7c98, 0x1fe1,
-  0x7c9c, 0x472e,
-  0x7c9e, 0x225d,
-  0x7c9f, 0x0d0d,
-  0x7ca1, 0x225f,
-  0x7ca2, 0x225c,
-  0x7ca3, 0x1fe3,
-  0x7ca5, 0x0d0e,
-  0x7ca6, 0x375e,
-  0x7ca7, 0x36ed,
-  0x7ca8, 0x225e,
-  0x7cac, 0x3885,
-  0x7cae, 0x3b4a,
-  0x7caf, 0x24fe,
-  0x7cb1, 0x0ebb,
-  0x7cb2, 0x24fc,
-  0x7cb3, 0x0ebc,
-  0x7cb4, 0x24fd,
-  0x7cb5, 0x0ebd,
-  0x7cb8, 0x4730,
-  0x7cb9, 0x1058,
-  0x7cba, 0x277d,
-  0x7cbb, 0x277a,
-  0x7cbc, 0x277c,
-  0x7cbd, 0x1059,
-  0x7cbf, 0x277b,
-  0x7cc2, 0x3fd7,
-  0x7cc5, 0x29b0,
-  0x7cc7, 0x3761,
-  0x7cc8, 0x29b1,
-  0x7cc9, 0x3760,
-  0x7cca, 0x11d4,
-  0x7ccb, 0x29b3,
-  0x7ccc, 0x29b2,
-  0x7ccd, 0x3b45,
-  0x7cce, 0x0121,
-  0x7cd0, 0x2c11,
-  0x7cd2, 0x2c0e,
-  0x7cd3, 0x3d5c,
-  0x7cd4, 0x2c0f,
-  0x7cd5, 0x131e,
-  0x7cd7, 0x2c10,
-  0x7cd9, 0x1433,
-  0x7cda, 0x3fd9,
-  0x7cdc, 0x142f,
-  0x7cdd, 0x1434,
-  0x7cde, 0x1430,
-  0x7cdf, 0x1432,
-  0x7ce0, 0x142e,
-  0x7ce2, 0x1431,
-  0x7ce6, 0x3762,
-  0x7ce7, 0x150b,
-  0x7ce8, 0x2ded,
-  0x7cea, 0x30d9,
-  0x7cec, 0x30d8,
-  0x7ced, 0x43da,
-  0x7cee, 0x3213,
-  0x7cef, 0x162d,
-  0x7cf1, 0x33a1,
-  0x7cf2, 0x32eb,
-  0x7cf3, 0x3764,
-  0x7cf4, 0x33a0,
-  0x7cf5, 0x3765,
-  0x7cf6, 0x34d8,
-  0x7cf7, 0x351d,
-  0x7cf8, 0x03f8,
-  0x7cf9, 0x44f8,
-  0x7cfb, 0x04fb,
-  0x7cfc, 0x456d,
-  0x7cfd, 0x1a26,
-  0x7cfe, 0x0667,
-  0x7d00, 0x07cf,
-  0x7d01, 0x1bc2,
-  0x7d02, 0x07cd,
-  0x7d03, 0x1bc0,
-  0x7d04, 0x07d2,
-  0x7d05, 0x07ce,
-  0x7d06, 0x07d3,
-  0x7d07, 0x07d1,
-  0x7d08, 0x1bc1,
-  0x7d09, 0x07d0,
-  0x7d0a, 0x096e,
-  0x7d0b, 0x096d,
-  0x7d0c, 0x1da7,
-  0x7d0d, 0x0976,
-  0x7d0e, 0x1da0,
-  0x7d0f, 0x1da6,
-  0x7d10, 0x0972,
-  0x7d11, 0x1d9f,
-  0x7d12, 0x1da5,
-  0x7d13, 0x1da3,
-  0x7d14, 0x0971,
-  0x7d15, 0x0973,
-  0x7d16, 0x1da2,
-  0x7d17, 0x096c,
-  0x7d18, 0x1da1,
-  0x7d19, 0x0977,
-  0x7d1a, 0x0974,
-  0x7d1b, 0x0978,
-  0x7d1c, 0x0975,
-  0x7d1d, 0x1d9e,
-  0x7d1e, 0x1d9d,
-  0x7d1f, 0x1da4,
-  0x7d20, 0x096f,
-  0x7d21, 0x096b,
-  0x7d22, 0x0970,
-  0x7d25, 0x3ede,
-  0x7d28, 0x1ff2,
-  0x7d29, 0x1feb,
-  0x7d2b, 0x0d13,
-  0x7d2c, 0x1fea,
-  0x7d2e, 0x0b56,
-  0x7d2f, 0x0b5d,
-  0x7d30, 0x0b5a,
-  0x7d31, 0x0b60,
-  0x7d32, 0x0b5f,
-  0x7d33, 0x0b5b,
-  0x7d35, 0x1fe4,
-  0x7d36, 0x1fe7,
-  0x7d38, 0x1fe6,
-  0x7d39, 0x0b57,
-  0x7d3a, 0x1fe8,
-  0x7d3b, 0x1ff1,
-  0x7d3c, 0x0b58,
-  0x7d3d, 0x1fe5,
-  0x7d3e, 0x1fee,
-  0x7d40, 0x0b59,
-  0x7d41, 0x1fec,
-  0x7d42, 0x0b5e,
-  0x7d43, 0x0b54,
-  0x7d44, 0x0b5c,
-  0x7d45, 0x1fe9,
-  0x7d46, 0x0b53,
-  0x7d47, 0x1fed,
-  0x7d4a, 0x1ff0,
-  0x7d4d, 0x3fdd,
-  0x7d4e, 0x2270,
-  0x7d4f, 0x2267,
-  0x7d50, 0x0d10,
-  0x7d51, 0x226e,
-  0x7d52, 0x226b,
-  0x7d53, 0x2263,
-  0x7d54, 0x226c,
-  0x7d55, 0x0d12,
-  0x7d56, 0x2264,
-  0x7d58, 0x2260,
-  0x7d5a, 0x3e93,
-  0x7d5b, 0x0ec3,
-  0x7d5c, 0x2269,
-  0x7d5d, 0x3769,
-  0x7d5e, 0x0d0f,
-  0x7d5f, 0x226f,
-  0x7d61, 0x0d16,
-  0x7d62, 0x0d18,
-  0x7d63, 0x2262,
-  0x7d66, 0x0d17,
-  0x7d67, 0x2265,
-  0x7d68, 0x0d11,
-  0x7d69, 0x226d,
-  0x7d6a, 0x2266,
-  0x7d6b, 0x226a,
-  0x7d6d, 0x2268,
-  0x7d6e, 0x0d14,
-  0x7d6f, 0x2261,
-  0x7d70, 0x0d19,
-  0x7d71, 0x0b55,
-  0x7d72, 0x0d15,
-  0x7d73, 0x0d1a,
-  0x7d79, 0x0ebf,
-  0x7d7a, 0x2505,
-  0x7d7b, 0x2507,
-  0x7d7c, 0x2509,
-  0x7d7d, 0x250d,
-  0x7d7f, 0x2503,
-  0x7d80, 0x2501,
-  0x7d81, 0x0ec1,
-  0x7d83, 0x2508,
-  0x7d84, 0x250c,
-  0x7d85, 0x2504,
-  0x7d86, 0x2500,
-  0x7d88, 0x24ff,
-  0x7d89, 0x376b,
-  0x7d8c, 0x250a,
-  0x7d8d, 0x2502,
-  0x7d8e, 0x2506,
-  0x7d8f, 0x0ec2,
-  0x7d91, 0x0ec0,
-  0x7d92, 0x250e,
-  0x7d93, 0x0ebe,
-  0x7d94, 0x250b,
-  0x7d96, 0x278e,
-  0x7d97, 0x3b53,
-  0x7d9c, 0x105d,
-  0x7d9d, 0x2786,
-  0x7d9e, 0x11e1,
-  0x7d9f, 0x2790,
-  0x7da0, 0x1060,
-  0x7da1, 0x2794,
-  0x7da2, 0x1066,
-  0x7da3, 0x2781,
-  0x7da4, 0x46d7,
-  0x7da6, 0x2791,
-  0x7da7, 0x277e,
-  0x7da8, 0x3c9c,
-  0x7da9, 0x2793,
-  0x7daa, 0x2782,
-  0x7dab, 0x376c,
-  0x7dac, 0x106d,
-  0x7dad, 0x106a,
-  0x7dae, 0x2792,
-  0x7daf, 0x278c,
-  0x7db0, 0x105c,
-  0x7db1, 0x1064,
-  0x7db2, 0x1063,
-  0x7db3, 0x376e,
-  0x7db4, 0x1062,
-  0x7db5, 0x1068,
-  0x7db7, 0x277f,
-  0x7db8, 0x1069,
-  0x7db9, 0x278d,
-  0x7dba, 0x1065,
-  0x7dbb, 0x105b,
-  0x7dbc, 0x278f,
-  0x7dbd, 0x105e,
-  0x7dbf, 0x1067,
-  0x7dc0, 0x2784,
-  0x7dc1, 0x2783,
-  0x7dc2, 0x2780,
-  0x7dc4, 0x2788,
-  0x7dc5, 0x2785,
-  0x7dc6, 0x2789,
-  0x7dc7, 0x106c,
-  0x7dc9, 0x2795,
-  0x7dca, 0x1061,
-  0x7dcb, 0x278a,
-  0x7dcd, 0x456e,
-  0x7dce, 0x2787,
-  0x7dcf, 0x4735,
-  0x7dd0, 0x4737,
-  0x7dd2, 0x106b,
-  0x7dd3, 0x3b4e,
-  0x7dd4, 0x4736,
-  0x7dd6, 0x376f,
-  0x7dd7, 0x29b8,
-  0x7dd8, 0x11d9,
-  0x7dd9, 0x11e2,
-  0x7dda, 0x11de,
-  0x7ddb, 0x29b5,
-  0x7ddc, 0x3b4c,
-  0x7ddd, 0x11db,
-  0x7dde, 0x11df,
-  0x7ddf, 0x29c1,
-  0x7de0, 0x11d5,
-  0x7de1, 0x29b9,
-  0x7de3, 0x11dd,
-  0x7de4, 0x3772,
-  0x7de5, 0x3776,
-  0x7de6, 0x29bc,
-  0x7de7, 0x29b7,
-  0x7de8, 0x11dc,
-  0x7de9, 0x11e0,
-  0x7dea, 0x29b6,
-  0x7dec, 0x11da,
-  0x7dee, 0x29c0,
-  0x7def, 0x11d7,
-  0x7df0, 0x29bf,
-  0x7df1, 0x29be,
-  0x7df2, 0x11e3,
-  0x7df3, 0x28c8,
-  0x7df4, 0x11d6,
-  0x7df5, 0x3774,
-  0x7df6, 0x29bd,
-  0x7df7, 0x29b4,
-  0x7df9, 0x11e4,
-  0x7dfa, 0x29bb,
-  0x7dfb, 0x11d8,
-  0x7dfd, 0x4738,
-  0x7dfe, 0x3ccf,
-  0x7e03, 0x29ba,
-  0x7e07, 0x3b4d,
-  0x7e08, 0x1322,
-  0x7e09, 0x1327,
-  0x7e0a, 0x1320,
-  0x7e0b, 0x2c1f,
-  0x7e0c, 0x2c16,
-  0x7e0d, 0x2c22,
-  0x7e0e, 0x2c1a,
-  0x7e0f, 0x2c20,
-  0x7e10, 0x1328,
-  0x7e11, 0x1321,
-  0x7e12, 0x2c13,
-  0x7e13, 0x2c19,
-  0x7e14, 0x2c23,
-  0x7e15, 0x2c1c,
-  0x7e16, 0x2c21,
-  0x7e17, 0x2c15,
-  0x7e1a, 0x2c1d,
-  0x7e1b, 0x1323,
-  0x7e1c, 0x2c1b,
-  0x7e1d, 0x1326,
-  0x7e1e, 0x1325,
-  0x7e1f, 0x2c17,
-  0x7e21, 0x2c14,
-  0x7e22, 0x2c1e,
-  0x7e23, 0x1324,
-  0x7e24, 0x2c25,
-  0x7e25, 0x2c24,
-  0x7e27, 0x377f,
-  0x7e29, 0x2df8,
-  0x7e2a, 0x2df4,
-  0x7e2b, 0x143b,
-  0x7e2d, 0x2dee,
-  0x7e2e, 0x1435,
-  0x7e2f, 0x1445,
-  0x7e30, 0x2dfa,
-  0x7e31, 0x143d,
-  0x7e32, 0x1439,
-  0x7e33, 0x2df1,
-  0x7e34, 0x1440,
-  0x7e35, 0x1443,
-  0x7e36, 0x2dfc,
-  0x7e37, 0x1438,
-  0x7e38, 0x2df3,
-  0x7e39, 0x1441,
-  0x7e3a, 0x2dfe,
-  0x7e3b, 0x2dfb,
-  0x7e3c, 0x2def,
-  0x7e3d, 0x143c,
-  0x7e3e, 0x1436,
-  0x7e3f, 0x1444,
-  0x7e40, 0x2df6,
-  0x7e41, 0x143f,
-  0x7e42, 0x2df0,
-  0x7e43, 0x143a,
-  0x7e44, 0x2dfd,
-  0x7e45, 0x143e,
-  0x7e46, 0x1437,
-  0x7e47, 0x2df7,
-  0x7e48, 0x1442,
-  0x7e49, 0x2df5,
-  0x7e4c, 0x2df9,
-  0x7e50, 0x2f83,
-  0x7e51, 0x2f89,
-  0x7e52, 0x1511,
-  0x7e53, 0x2f8c,
-  0x7e54, 0x150c,
-  0x7e56, 0x2f84,
-  0x7e57, 0x2f8b,
-  0x7e58, 0x2f86,
-  0x7e59, 0x1512,
-  0x7e5a, 0x150f,
-  0x7e5c, 0x2f82,
-  0x7e5e, 0x150e,
-  0x7e5f, 0x2f88,
-  0x7e60, 0x2f8a,
-  0x7e61, 0x1510,
-  0x7e62, 0x2f87,
-  0x7e63, 0x2f85,
-  0x7e65, 0x46d2,
-  0x7e67, 0x3766,
-  0x7e68, 0x30e3,
-  0x7e69, 0x15ac,
-  0x7e6b, 0x15a9,
-  0x7e6d, 0x15aa,
-  0x7e6e, 0x377b,
-  0x7e6f, 0x30df,
-  0x7e70, 0x30dd,
-  0x7e72, 0x30e1,
-  0x7e73, 0x15ae,
-  0x7e74, 0x30e2,
-  0x7e75, 0x30db,
-  0x7e76, 0x30da,
-  0x7e77, 0x30de,
-  0x7e78, 0x30dc,
-  0x7e79, 0x15ab,
-  0x7e7a, 0x30e0,
-  0x7e7b, 0x3214,
-  0x7e7c, 0x1631,
-  0x7e7d, 0x1630,
-  0x7e7e, 0x3215,
-  0x7e7f, 0x3e51,
-  0x7e80, 0x3217,
-  0x7e81, 0x3216,
-  0x7e82, 0x1632,
-  0x7e86, 0x32f0,
-  0x7e87, 0x32ed,
-  0x7e8a, 0x32ec,
-  0x7e8b, 0x32ef,
-  0x7e8c, 0x1683,
-  0x7e8d, 0x32f1,
-  0x7e8e, 0x3ec9,
-  0x7e8f, 0x1682,
-  0x7e91, 0x33a2,
-  0x7e92, 0x469e,
-  0x7e93, 0x1703,
-  0x7e94, 0x1705,
-  0x7e95, 0x342c,
-  0x7e96, 0x1704,
-  0x7e97, 0x3494,
-  0x7e98, 0x34da,
-  0x7e99, 0x34dc,
-  0x7e9a, 0x34d9,
-  0x7e9b, 0x34db,
-  0x7e9c, 0x1759,
-  0x7e9f, 0x48bb,
-  0x7ea4, 0x455b,
-  0x7eac, 0x455c,
-  0x7eba, 0x455d,
-  0x7ec7, 0x455e,
-  0x7ecf, 0x455f,
-  0x7edf, 0x4560,
-  0x7f06, 0x4561,
-  0x7f36, 0x03f9,
-  0x7f37, 0x4562,
-  0x7f38, 0x07d4,
-  0x7f39, 0x1d1f,
-  0x7f3a, 0x0979,
-  0x7f3d, 0x0b61,
-  0x7f3e, 0x2271,
-  0x7f40, 0x3780,
-  0x7f43, 0x2c26,
-  0x7f44, 0x1446,
-  0x7f45, 0x2dff,
-  0x7f47, 0x3782,
-  0x7f48, 0x1513,
-  0x7f49, 0x3e69,
-  0x7f4a, 0x30e5,
-  0x7f4b, 0x30e4,
-  0x7f4c, 0x1633,
-  0x7f4d, 0x32f2,
-  0x7f4e, 0x3b4f,
-  0x7f4f, 0x33a3,
-  0x7f50, 0x1726,
-  0x7f51, 0x1812,
-  0x7f52, 0x44f6,
-  0x7f53, 0x44f9,
-  0x7f54, 0x0668,
-  0x7f55, 0x04fc,
-  0x7f58, 0x1bc3,
-  0x7f5b, 0x1dad,
-  0x7f5c, 0x1da8,
-  0x7f5d, 0x1dac,
-  0x7f5e, 0x1daa,
-  0x7f5f, 0x097a,
-  0x7f60, 0x1dab,
-  0x7f61, 0x1da9,
-  0x7f63, 0x1ff3,
-  0x7f65, 0x2273,
-  0x7f67, 0x2511,
-  0x7f69, 0x0ec5,
-  0x7f6b, 0x2510,
-  0x7f6c, 0x2513,
-  0x7f6d, 0x250f,
-  0x7f6e, 0x0ec4,
-  0x7f70, 0x106e,
-  0x7f71, 0x4007,
-  0x7f72, 0x0ec7,
-  0x7f73, 0x2796,
-  0x7f75, 0x11e5,
-  0x7f76, 0x29c2,
-  0x7f77, 0x11e6,
-  0x7f78, 0x3f7b,
-  0x7f79, 0x1329,
-  0x7f7a, 0x2c29,
-  0x7f7b, 0x2c27,
-  0x7f7d, 0x2e02,
-  0x7f7e, 0x2e01,
-  0x7f7f, 0x2e00,
-  0x7f83, 0x30e6,
-  0x7f85, 0x15af,
-  0x7f86, 0x30e7,
-  0x7f87, 0x33a4,
-  0x7f88, 0x1727,
-  0x7f89, 0x3495,
-  0x7f8a, 0x03fa,
-  0x7f8b, 0x066a,
-  0x7f8c, 0x0669,
-  0x7f8d, 0x1bc5,
-  0x7f8e, 0x07d5,
-  0x7f8f, 0x421c,
-  0x7f91, 0x1bc4,
-  0x7f92, 0x1daf,
-  0x7f93, 0x43db,
-  0x7f94, 0x097b,
-  0x7f95, 0x1ff4,
-  0x7f96, 0x1dae,
-  0x7f97, 0x3786,
-  0x7f9a, 0x0b63,
-  0x7f9b, 0x1ff7,
-  0x7f9c, 0x1ff5,
-  0x7f9e, 0x0b62,
-  0x7fa0, 0x2276,
-  0x7fa2, 0x2275,
-  0x7fa3, 0x3788,
-  0x7fa4, 0x0eca,
-  0x7fa5, 0x2515,
-  0x7fa6, 0x2514,
-  0x7fa7, 0x2516,
-  0x7fa8, 0x0ec9,
-  0x7fa9, 0x0ec8,
-  0x7fac, 0x29c3,
-  0x7fad, 0x29c5,
-  0x7fae, 0x43dc,
-  0x7faf, 0x11e7,
-  0x7fb0, 0x29c4,
-  0x7fb1, 0x2c2a,
-  0x7fb2, 0x132a,
-  0x7fb3, 0x2f8e,
-  0x7fb4, 0x4739,
-  0x7fb5, 0x2f8d,
-  0x7fb6, 0x15b0,
-  0x7fb7, 0x30e8,
-  0x7fb8, 0x15b2,
-  0x7fb9, 0x15b1,
-  0x7fba, 0x3218,
-  0x7fbb, 0x32f3,
-  0x7fbc, 0x1684,
-  0x7fbd, 0x03fb,
-  0x7fbe, 0x1bc6,
-  0x7fbf, 0x07d6,
-  0x7fc0, 0x1db2,
-  0x7fc1, 0x097d,
-  0x7fc2, 0x1db1,
-  0x7fc3, 0x1db0,
-  0x7fc5, 0x097c,
-  0x7fc7, 0x1ffd,
-  0x7fc9, 0x1fff,
-  0x7fca, 0x1ff8,
-  0x7fcc, 0x0b64,
-  0x7fcd, 0x1ffa,
-  0x7fce, 0x0b65,
-  0x7fcf, 0x1ffe,
-  0x7fd0, 0x1ffb,
-  0x7fd2, 0x0b66,
-  0x7fd4, 0x0d1c,
-  0x7fd7, 0x2278,
-  0x7fdb, 0x2517,
-  0x7fdd, 0x3b5e,
-  0x7fde, 0x279a,
-  0x7fdf, 0x1071,
-  0x7fe0, 0x106f,
-  0x7fe2, 0x2797,
-  0x7fe5, 0x2799,
-  0x7fe6, 0x29ca,
-  0x7fe7, 0x46e9,
-  0x7fe8, 0x29cb,
-  0x7fe9, 0x11e8,
-  0x7fea, 0x29c8,
-  0x7feb, 0x29c7,
-  0x7fec, 0x29c9,
-  0x7fed, 0x29c6,
-  0x7fee, 0x132d,
-  0x7fef, 0x2c2b,
-  0x7ff0, 0x132b,
-  0x7ff2, 0x2e04,
-  0x7ff3, 0x1447,
-  0x7ff4, 0x2e03,
-  0x7ff5, 0x2eff,
-  0x7ff7, 0x2f8f,
-  0x7ff9, 0x1514,
-  0x7ffa, 0x378e,
-  0x7ffb, 0x1515,
-  0x7ffc, 0x1448,
-  0x7ffd, 0x30e9,
-  0x7fff, 0x3219,
-  0x8000, 0x1634,
-  0x8001, 0x03fc,
-  0x8002, 0x44fd,
-  0x8003, 0x03fd,
-  0x8004, 0x097f,
-  0x8005, 0x066b,
-  0x8006, 0x097e,
-  0x8007, 0x1bc7,
-  0x8008, 0x3791,
-  0x800b, 0x0d1e,
-  0x800c, 0x03fe,
-  0x800d, 0x07d8,
-  0x800e, 0x1bc8,
-  0x8010, 0x07d7,
-  0x8011, 0x07d9,
-  0x8012, 0x03ff,
-  0x8014, 0x1bca,
-  0x8015, 0x0981,
-  0x8016, 0x1db3,
-  0x8017, 0x0983,
-  0x8018, 0x0980,
-  0x8019, 0x0982,
-  0x801b, 0x2002,
-  0x801c, 0x0b67,
-  0x801d, 0x3792,
-  0x801e, 0x2001,
-  0x801f, 0x2000,
-  0x8020, 0x473c,
-  0x8021, 0x2519,
-  0x8024, 0x279b,
-  0x8025, 0x473d,
-  0x8026, 0x11e9,
-  0x8028, 0x132e,
-  0x8029, 0x2c2d,
-  0x802a, 0x2c2c,
-  0x802c, 0x2e05,
-  0x802e, 0x473e,
-  0x802f, 0x3794,
-  0x8030, 0x32f4,
-  0x8031, 0x473f,
-  0x8033, 0x0400,
-  0x8034, 0x18d8,
-  0x8035, 0x1a27,
-  0x8036, 0x07da,
-  0x8037, 0x1bcb,
-  0x8039, 0x1db5,
-  0x803b, 0x3797,
-  0x803d, 0x0984,
-  0x803e, 0x1db4,
-  0x803f, 0x0985,
-  0x8043, 0x2004,
-  0x8046, 0x0b69,
-  0x8047, 0x2003,
-  0x8048, 0x2005,
-  0x804a, 0x0b68,
-  0x804f, 0x227a,
-  0x8051, 0x2279,
-  0x8052, 0x0d1f,
-  0x8054, 0x4740,
-  0x8056, 0x0ecb,
-  0x8058, 0x0ecc,
-  0x805a, 0x1073,
-  0x805b, 0x3fe5,
-  0x805c, 0x279d,
-  0x805d, 0x279c,
-  0x805e, 0x1072,
-  0x8061, 0x3799,
-  0x8062, 0x3fe3,
-  0x8063, 0x3fdc,
-  0x8064, 0x29cc,
-  0x8066, 0x3fdb,
-  0x8067, 0x29cd,
-  0x806c, 0x2c2e,
-  0x806f, 0x144c,
-  0x8070, 0x144b,
-  0x8071, 0x1449,
-  0x8073, 0x144d,
-  0x8075, 0x2f91,
-  0x8076, 0x1517,
-  0x8077, 0x1516,
-  0x8078, 0x30eb,
-  0x8079, 0x321a,
-  0x807d, 0x16d3,
-  0x807e, 0x16d2,
-  0x807f, 0x0401,
-  0x8080, 0x44fe,
-  0x8082, 0x1cec,
-  0x8084, 0x0ece,
-  0x8085, 0x0d20,
-  0x8086, 0x0ecd,
-  0x8087, 0x1074,
-  0x8089, 0x0402,
-  0x808a, 0x17b3,
-  0x808b, 0x0403,
-  0x808f, 0x1a28,
-  0x8090, 0x18db,
-  0x8092, 0x18dc,
-  0x8093, 0x04fe,
-  0x8095, 0x18d9,
-  0x8096, 0x04fd,
-  0x8098, 0x0500,
-  0x8099, 0x18da,
-  0x809a, 0x0502,
-  0x809b, 0x0501,
-  0x809c, 0x18dd,
-  0x809d, 0x04ff,
-  0x809f, 0x4576,
-  0x80a1, 0x0670,
-  0x80a2, 0x066e,
-  0x80a3, 0x1a2a,
-  0x80a5, 0x066d,
-  0x80a7, 0x37a0,
-  0x80a9, 0x0672,
-  0x80aa, 0x0674,
-  0x80ab, 0x0671,
-  0x80ad, 0x1a2d,
-  0x80ae, 0x1a29,
-  0x80af, 0x0675,
-  0x80b1, 0x066f,
-  0x80b2, 0x0503,
-  0x80b4, 0x0673,
-  0x80b5, 0x1a2c,
-  0x80b6, 0x3eae,
-  0x80b7, 0x4743,
-  0x80b8, 0x1a2b,
-  0x80ba, 0x066c,
-  0x80bc, 0x4572,
-  0x80bd, 0x3e7b,
-  0x80c2, 0x1bd1,
-  0x80c3, 0x07de,
-  0x80c5, 0x1bd3,
-  0x80c6, 0x3b74,
-  0x80c7, 0x1bcd,
-  0x80c8, 0x1bd0,
-  0x80c9, 0x1bd9,
-  0x80ca, 0x1bd7,
-  0x80cc, 0x07e0,
-  0x80cd, 0x1bdd,
-  0x80ce, 0x07e3,
-  0x80cf, 0x1bda,
-  0x80d0, 0x1bd2,
-  0x80d1, 0x1bcf,
-  0x80d4, 0x227d,
-  0x80d5, 0x1bd8,
-  0x80d6, 0x07db,
-  0x80d7, 0x1bdb,
-  0x80d8, 0x1bcc,
-  0x80d9, 0x1bd5,
-  0x80da, 0x07dd,
-  0x80db, 0x07e2,
-  0x80dc, 0x1bd6,
-  0x80dd, 0x07e6,
-  0x80de, 0x07e4,
-  0x80e0, 0x1bce,
-  0x80e1, 0x07e1,
-  0x80e3, 0x1bd4,
-  0x80e4, 0x07e5,
-  0x80e5, 0x07dc,
-  0x80e6, 0x1bdc,
-  0x80e9, 0x4744,
-  0x80ec, 0x45e9,
-  0x80ed, 0x098a,
-  0x80ef, 0x0993,
-  0x80f0, 0x0988,
-  0x80f1, 0x0986,
-  0x80f2, 0x1db7,
-  0x80f3, 0x098e,
-  0x80f4, 0x098b,
-  0x80f5, 0x1db9,
-  0x80f6, 0x4574,
-  0x80f8, 0x098d,
-  0x80f9, 0x1db8,
-  0x80fa, 0x1db6,
-  0x80fb, 0x1dbb,
-  0x80fc, 0x0992,
-  0x80fd, 0x0990,
-  0x80fe, 0x227c,
-  0x8100, 0x1dbc,
-  0x8101, 0x1dba,
-  0x8102, 0x0987,
-  0x8103, 0x3fe7,
-  0x8105, 0x0989,
-  0x8106, 0x098c,
-  0x8107, 0x37a2,
-  0x8108, 0x098f,
-  0x8109, 0x3b75,
-  0x810a, 0x0991,
-  0x810c, 0x4746,
-  0x810e, 0x4747,
-  0x8112, 0x4748,
-  0x8114, 0x4749,
-  0x8115, 0x200f,
-  0x8116, 0x0b6b,
-  0x8117, 0x3e6d,
-  0x8118, 0x2006,
-  0x8119, 0x2008,
-  0x811a, 0x37a3,
-  0x811b, 0x2009,
-  0x811d, 0x2011,
-  0x811e, 0x200d,
-  0x811f, 0x200b,
-  0x8121, 0x200e,
-  0x8122, 0x2012,
-  0x8123, 0x0b6c,
-  0x8124, 0x0b70,
-  0x8125, 0x2007,
-  0x8127, 0x2010,
-  0x8129, 0x0b6e,
-  0x812a, 0x3a39,
-  0x812b, 0x0b6d,
-  0x812c, 0x200c,
-  0x812d, 0x200a,
-  0x812f, 0x0b6a,
-  0x8130, 0x0b6f,
-  0x8132, 0x3e79,
-  0x8134, 0x45ec,
-  0x8137, 0x3b72,
-  0x8139, 0x0d26,
-  0x813a, 0x2285,
-  0x813d, 0x2283,
-  0x813e, 0x0d28,
-  0x8142, 0x3b76,
-  0x8143, 0x227e,
-  0x8144, 0x2527,
-  0x8146, 0x0d27,
-  0x8147, 0x2282,
-  0x8148, 0x3e76,
-  0x814a, 0x227f,
-  0x814b, 0x0d23,
-  0x814c, 0x0d29,
-  0x814d, 0x2284,
-  0x814e, 0x0d25,
-  0x814f, 0x2281,
-  0x8150, 0x1075,
-  0x8151, 0x0d24,
-  0x8152, 0x2280,
-  0x8153, 0x0d2a,
-  0x8154, 0x0d22,
-  0x8155, 0x0d21,
-  0x8156, 0x474c,
-  0x8159, 0x474d,
-  0x815b, 0x251f,
-  0x815c, 0x251d,
-  0x815e, 0x2523,
-  0x8160, 0x251b,
-  0x8161, 0x2528,
-  0x8162, 0x2520,
-  0x8164, 0x251a,
-  0x8165, 0x0ed2,
-  0x8166, 0x0ed8,
-  0x8167, 0x2525,
-  0x8169, 0x251e,
-  0x816b, 0x0ed5,
-  0x816d, 0x43c4,
-  0x816e, 0x0ed3,
-  0x816f, 0x2526,
-  0x8170, 0x0ed0,
-  0x8171, 0x0ecf,
-  0x8172, 0x2521,
-  0x8173, 0x0ed4,
-  0x8174, 0x0d2b,
-  0x8176, 0x2524,
-  0x8177, 0x251c,
-  0x8178, 0x0ed1,
-  0x8179, 0x0ed6,
-  0x817c, 0x4750,
-  0x817f, 0x107a,
-  0x8180, 0x1076,
-  0x8182, 0x107b,
-  0x8183, 0x27a0,
-  0x8184, 0x43c5,
-  0x8186, 0x279f,
-  0x8187, 0x27a1,
-  0x8188, 0x1078,
-  0x8189, 0x279e,
-  0x818a, 0x1079,
-  0x818b, 0x27a4,
-  0x818c, 0x27a3,
-  0x818d, 0x27a2,
-  0x818f, 0x1077,
-  0x8193, 0x43c6,
-  0x8195, 0x29d1,
-  0x8197, 0x29d4,
-  0x8198, 0x11ef,
-  0x8199, 0x29d3,
-  0x819a, 0x11ee,
-  0x819b, 0x11ea,
-  0x819e, 0x29d0,
-  0x819f, 0x29cf,
-  0x81a0, 0x11ed,
-  0x81a2, 0x29d2,
-  0x81a3, 0x29ce,
-  0x81a5, 0x4753,
-  0x81a6, 0x2c30,
-  0x81a7, 0x2c3a,
-  0x81a8, 0x1331,
-  0x81a9, 0x1330,
-  0x81aa, 0x4364,
-  0x81ab, 0x2c34,
-  0x81ac, 0x2c36,
-  0x81ae, 0x2c31,
-  0x81b0, 0x2c35,
-  0x81b1, 0x2c2f,
-  0x81b2, 0x2c38,
-  0x81b3, 0x132f,
-  0x81b4, 0x2c37,
-  0x81b5, 0x2c33,
-  0x81b6, 0x3eb2,
-  0x81b7, 0x2c39,
-  0x81b9, 0x2c32,
-  0x81ba, 0x1450,
-  0x81bb, 0x2e06,
-  0x81bc, 0x2e0c,
-  0x81bd, 0x1454,
-  0x81be, 0x1456,
-  0x81bf, 0x1453,
-  0x81c0, 0x1452,
-  0x81c1, 0x4755,
-  0x81c2, 0x1451,
-  0x81c3, 0x144f,
-  0x81c4, 0x2e07,
-  0x81c5, 0x2e0a,
-  0x81c6, 0x144e,
-  0x81c7, 0x2e0b,
-  0x81c8, 0x3fee,
-  0x81c9, 0x1455,
-  0x81ca, 0x2e09,
-  0x81cc, 0x2e08,
-  0x81cd, 0x1518,
-  0x81cf, 0x1519,
-  0x81d0, 0x2f94,
-  0x81d1, 0x2f92,
-  0x81d5, 0x30ed,
-  0x81d7, 0x30ec,
-  0x81d8, 0x15b3,
-  0x81d9, 0x321c,
-  0x81da, 0x1635,
-  0x81db, 0x321b,
-  0x81dd, 0x32f5,
-  0x81de, 0x33a5,
-  0x81df, 0x16d4,
-  0x81e0, 0x34dd,
-  0x81e2, 0x1706,
-  0x81e3, 0x0405,
-  0x81e4, 0x4756,
-  0x81e5, 0x0676,
-  0x81e6, 0x2286,
-  0x81e7, 0x107c,
-  0x81e8, 0x1457,
-  0x81e9, 0x2e0d,
-  0x81ea, 0x0406,
-  0x81ec, 0x0995,
-  0x81ed, 0x0994,
-  0x81ee, 0x2287,
-  0x81ef, 0x42d1,
-  0x81f2, 0x2c3b,
-  0x81f3, 0x0407,
-  0x81f4, 0x07e7,
-  0x81f6, 0x3d61,
-  0x81f7, 0x2288,
-  0x81fa, 0x107d,
-  0x81fb, 0x1332,
-  0x81fc, 0x0408,
-  0x81fe, 0x0677,
-  0x81ff, 0x1bde,
-  0x8200, 0x0996,
-  0x8201, 0x1dbd,
-  0x8202, 0x0b71,
-  0x8204, 0x228b,
-  0x8205, 0x0ed9,
-  0x8207, 0x107e,
-  0x8208, 0x1333,
-  0x8209, 0x1458,
-  0x820a, 0x151a,
-  0x820b, 0x30ee,
-  0x820c, 0x0409,
-  0x820d, 0x0678,
-  0x8210, 0x0997,
-  0x8211, 0x2013,
-  0x8212, 0x0d2c,
-  0x8214, 0x107f,
-  0x8215, 0x27a5,
-  0x8216, 0x29d5,
-  0x8218, 0x37aa,
-  0x821a, 0x3fe1,
-  0x821b, 0x040a,
-  0x821c, 0x0d2d,
-  0x821d, 0x2529,
-  0x821e, 0x1080,
-  0x821f, 0x040b,
-  0x8220, 0x1a2e,
-  0x8221, 0x1bdf,
-  0x8222, 0x07e8,
-  0x8225, 0x1dbf,
-  0x8226, 0x420d,
-  0x8228, 0x099a,
-  0x8229, 0x37b0,
-  0x822a, 0x0998,
-  0x822c, 0x099b,
-  0x822d, 0x3ed0,
-  0x822f, 0x1dbe,
-  0x8232, 0x2018,
-  0x8233, 0x2015,
-  0x8234, 0x2017,
-  0x8235, 0x0b72,
-  0x8236, 0x0b74,
-  0x8237, 0x0b73,
-  0x8238, 0x2014,
-  0x8239, 0x0b75,
-  0x823a, 0x2016,
-  0x823c, 0x228c,
-  0x823e, 0x4582,
-  0x823f, 0x228e,
-  0x8240, 0x252c,
-  0x8242, 0x252d,
-  0x8244, 0x252b,
-  0x8245, 0x252e,
-  0x8247, 0x0eda,
-  0x8249, 0x252a,
-  0x824b, 0x1081,
-  0x824e, 0x29da,
-  0x824f, 0x29d6,
-  0x8250, 0x29d9,
-  0x8251, 0x29db,
-  0x8252, 0x29d8,
-  0x8253, 0x29d7,
-  0x8254, 0x4757,
-  0x8255, 0x2c3c,
-  0x8258, 0x1334,
-  0x825a, 0x2e0f,
-  0x825b, 0x2e0e,
-  0x825c, 0x2e10,
-  0x825e, 0x2f96,
-  0x825f, 0x2f95,
-  0x8261, 0x30f0,
-  0x8262, 0x3b7a,
-  0x8263, 0x30f1,
-  0x8264, 0x30ef,
-  0x8265, 0x3b7b,
-  0x8266, 0x1636,
-  0x8268, 0x321d,
-  0x826b, 0x33a6,
-  0x826c, 0x342d,
-  0x826d, 0x3496,
-  0x826e, 0x040c,
-  0x826f, 0x0504,
-  0x8271, 0x1459,
-  0x8272, 0x040d,
-  0x8274, 0x2019,
-  0x8275, 0x228f,
-  0x8276, 0x4759,
-  0x8277, 0x172e,
-  0x8278, 0x1813,
-  0x8279, 0x4722,
-  0x827a, 0x4563,
-  0x827b, 0x37c8,
-  0x827c, 0x1814,
-  0x827d, 0x1816,
-  0x827e, 0x040e,
-  0x827f, 0x1817,
-  0x8280, 0x1815,
-  0x8283, 0x18e5,
-  0x8285, 0x18e0,
-  0x8287, 0x4132,
-  0x828a, 0x18e4,
-  0x828b, 0x0506,
-  0x828d, 0x0507,
-  0x828e, 0x18e1,
-  0x828f, 0x18df,
-  0x8290, 0x18de,
-  0x8291, 0x18e2,
-  0x8292, 0x0505,
-  0x8293, 0x18e3,
-  0x8294, 0x1be0,
-  0x8298, 0x1a33,
-  0x8299, 0x067b,
-  0x829a, 0x1a32,
-  0x829b, 0x1a34,
-  0x829d, 0x067a,
-  0x829e, 0x1a39,
-  0x829f, 0x067e,
-  0x82a0, 0x1a2f,
-  0x82a1, 0x1a3d,
-  0x82a2, 0x1a43,
-  0x82a3, 0x0685,
-  0x82a4, 0x1a40,
-  0x82a5, 0x0682,
-  0x82a6, 0x3d73,
-  0x82a7, 0x1a36,
-  0x82a8, 0x1a3c,
-  0x82a9, 0x1a3e,
-  0x82aa, 0x37bc,
-  0x82ab, 0x1a31,
-  0x82ac, 0x0681,
-  0x82ad, 0x067c,
-  0x82ae, 0x1a37,
-  0x82af, 0x0683,
-  0x82b0, 0x0686,
-  0x82b1, 0x0680,
-  0x82b3, 0x0679,
-  0x82b4, 0x1a3b,
-  0x82b5, 0x1a35,
-  0x82b6, 0x1a42,
-  0x82b7, 0x0688,
-  0x82b8, 0x0684,
-  0x82b9, 0x067f,
-  0x82ba, 0x1a3a,
-  0x82bb, 0x099c,
-  0x82bc, 0x1a38,
-  0x82bd, 0x067d,
-  0x82be, 0x0687,
-  0x82c0, 0x1a30,
-  0x82c2, 0x1a3f,
-  0x82c3, 0x1a41,
-  0x82c4, 0x45e3,
-  0x82ca, 0x475a,
-  0x82cf, 0x4564,
-  0x82d0, 0x37c1,
-  0x82d1, 0x07f9,
-  0x82d2, 0x07f3,
-  0x82d3, 0x07fb,
-  0x82d4, 0x07f8,
-  0x82d5, 0x1be7,
-  0x82d6, 0x1bea,
-  0x82d7, 0x07f4,
-  0x82d8, 0x475b,
-  0x82d9, 0x1be1,
-  0x82db, 0x07ed,
-  0x82dc, 0x07f7,
-  0x82de, 0x07fa,
-  0x82df, 0x07fc,
-  0x82e0, 0x1bf6,
-  0x82e1, 0x1bed,
-  0x82e2, 0x37c9,
-  0x82e3, 0x07ec,
-  0x82e4, 0x1bf5,
-  0x82e5, 0x07f0,
-  0x82e6, 0x07ee,
-  0x82e7, 0x07e9,
-  0x82e8, 0x1be5,
-  0x82ea, 0x1bf4,
-  0x82eb, 0x1be9,
-  0x82ec, 0x1bec,
-  0x82ed, 0x1bf9,
-  0x82ee, 0x4018,
-  0x82ef, 0x07fd,
-  0x82f0, 0x1bf3,
-  0x82f1, 0x07f5,
-  0x82f2, 0x1bee,
-  0x82f3, 0x1bf8,
-  0x82f4, 0x1beb,
-  0x82f5, 0x1bef,
-  0x82f6, 0x1bf2,
-  0x82f7, 0x3e77,
-  0x82f9, 0x1be3,
-  0x82fa, 0x1bf7,
-  0x82fb, 0x1bf1,
-  0x82fc, 0x412d,
-  0x82fd, 0x3d92,
-  0x82fe, 0x1be2,
-  0x82ff, 0x43de,
-  0x8300, 0x1be6,
-  0x8301, 0x07f6,
-  0x8302, 0x07f1,
-  0x8303, 0x07ea,
-  0x8304, 0x07ef,
-  0x8305, 0x07eb,
-  0x8306, 0x07fe,
-  0x8307, 0x1be4,
-  0x8308, 0x1dd0,
-  0x8309, 0x07f2,
-  0x830b, 0x3eb6,
-  0x830c, 0x1bf0,
-  0x830d, 0x1a7d,
-  0x8316, 0x1dd3,
-  0x8317, 0x09aa,
-  0x8318, 0x37ca,
-  0x8319, 0x1dc3,
-  0x831a, 0x37c2,
-  0x831b, 0x1dce,
-  0x831c, 0x1dca,
-  0x831d, 0x37d1,
-  0x831e, 0x1ddd,
-  0x8320, 0x1dd5,
-  0x8322, 0x1dcb,
-  0x8324, 0x1dd4,
-  0x8325, 0x1dc5,
-  0x8326, 0x1dc9,
-  0x8327, 0x1de0,
-  0x8328, 0x09ad,
-  0x8329, 0x1dd8,
-  0x832a, 0x1dcf,
-  0x832b, 0x099d,
-  0x832c, 0x1dde,
-  0x832d, 0x1dc1,
-  0x832f, 0x1dd7,
-  0x8331, 0x09ac,
-  0x8332, 0x09a7,
-  0x8333, 0x1dc0,
-  0x8334, 0x09a5,
-  0x8335, 0x09a4,
-  0x8336, 0x09a9,
-  0x8337, 0x1dd6,
-  0x8338, 0x09a1,
-  0x8339, 0x09a8,
-  0x833a, 0x1be8,
-  0x833b, 0x2290,
-  0x833c, 0x1dd1,
-  0x833d, 0x3d2a,
-  0x833f, 0x1dc7,
-  0x8340, 0x09ab,
-  0x8341, 0x1dc8,
-  0x8342, 0x1dcc,
-  0x8343, 0x09ae,
-  0x8344, 0x1dc2,
-  0x8345, 0x1dda,
-  0x8347, 0x1dd9,
-  0x8348, 0x1de1,
-  0x8349, 0x09a3,
-  0x834a, 0x09a0,
-  0x834b, 0x1ddf,
-  0x834c, 0x1ddb,
-  0x834d, 0x1dd2,
-  0x834e, 0x1dcd,
-  0x834f, 0x09a6,
-  0x8350, 0x09a2,
-  0x8351, 0x1dc4,
-  0x8352, 0x099e,
-  0x8353, 0x1ddc,
-  0x8354, 0x099f,
-  0x8356, 0x1dc6,
-  0x8357, 0x475d,
-  0x8362, 0x37b6,
-  0x8363, 0x41eb,
-  0x8366, 0x3e1e,
-  0x836f, 0x4565,
-  0x8373, 0x201f,
-  0x8374, 0x2021,
-  0x8375, 0x2026,
-  0x8376, 0x203a,
-  0x8377, 0x0b83,
-  0x8378, 0x0b79,
-  0x837a, 0x201e,
-  0x837b, 0x0b84,
-  0x837d, 0x2029,
-  0x837e, 0x2030,
-  0x837f, 0x2036,
-  0x8381, 0x2023,
-  0x8383, 0x202a,
-  0x8385, 0x37d3,
-  0x8386, 0x0b86,
-  0x8387, 0x2038,
-  0x8388, 0x2033,
-  0x8389, 0x0b81,
-  0x838a, 0x0b7f,
-  0x838b, 0x202f,
-  0x838c, 0x202b,
-  0x838d, 0x201d,
-  0x838e, 0x0b76,
-  0x838f, 0x2022,
-  0x8390, 0x201a,
-  0x8391, 0x37ec,
-  0x8392, 0x0b7e,
-  0x8393, 0x0b80,
-  0x8394, 0x2027,
-  0x8395, 0x2024,
-  0x8396, 0x0b7b,
-  0x8397, 0x2034,
-  0x8398, 0x0b78,
-  0x8399, 0x2025,
-  0x839a, 0x22b9,
-  0x839b, 0x202d,
-  0x839c, 0x374d,
-  0x839d, 0x202c,
-  0x839e, 0x0b77,
-  0x83a0, 0x0b82,
-  0x83a2, 0x0b7a,
-  0x83a3, 0x201b,
-  0x83a4, 0x2020,
-  0x83a5, 0x2031,
-  0x83a6, 0x2037,
-  0x83a7, 0x0b87,
-  0x83a8, 0x201c,
-  0x83a9, 0x2028,
-  0x83aa, 0x202e,
-  0x83ab, 0x0b7d,
-  0x83ac, 0x37d6,
-  0x83ae, 0x2039,
-  0x83af, 0x2032,
-  0x83b0, 0x2035,
-  0x83b9, 0x42a7,
-  0x83bd, 0x0b7c,
-  0x83be, 0x3f59,
-  0x83bf, 0x22a0,
-  0x83c0, 0x2294,
-  0x83c1, 0x0d35,
-  0x83c2, 0x22b1,
-  0x83c3, 0x22ba,
-  0x83c4, 0x22bd,
-  0x83c5, 0x0d33,
-  0x83c6, 0x229c,
-  0x83c7, 0x22b5,
-  0x83c8, 0x229d,
-  0x83c9, 0x22ab,
-  0x83ca, 0x0d40,
-  0x83cb, 0x22a7,
-  0x83cc, 0x0d3d,
-  0x83cd, 0x4055,
-  0x83ce, 0x22a8,
-  0x83cf, 0x2291,
-  0x83d1, 0x22b6,
-  0x83d3, 0x37d8,
-  0x83d4, 0x0d46,
-  0x83d5, 0x22b3,
-  0x83d6, 0x22a9,
-  0x83d7, 0x22bf,
-  0x83d8, 0x22a4,
-  0x83d9, 0x254e,
-  0x83db, 0x22c2,
-  0x83dc, 0x0d44,
-  0x83dd, 0x22a2,
-  0x83de, 0x22ae,
-  0x83df, 0x0d47,
-  0x83e0, 0x0d32,
-  0x83e1, 0x22a6,
-  0x83e2, 0x22c0,
-  0x83e3, 0x229f,
-  0x83e4, 0x2298,
-  0x83e5, 0x22a3,
-  0x83e7, 0x2297,
-  0x83e8, 0x2295,
-  0x83e9, 0x0d2e,
-  0x83ea, 0x22b7,
-  0x83eb, 0x229e,
-  0x83ec, 0x22bb,
-  0x83ed, 0x3d2c,
-  0x83ee, 0x22bc,
-  0x83ef, 0x0d36,
-  0x83f0, 0x0d3b,
-  0x83f1, 0x0d37,
-  0x83f2, 0x0d3f,
-  0x83f3, 0x22b2,
-  0x83f4, 0x0d38,
-  0x83f5, 0x22aa,
-  0x83f6, 0x229a,
-  0x83f8, 0x0d30,
-  0x83f9, 0x2292,
-  0x83fa, 0x22b4,
-  0x83fb, 0x22be,
-  0x83fc, 0x2299,
-  0x83fd, 0x0d3e,
-  0x83fe, 0x22c3,
-  0x83ff, 0x22a5,
-  0x8401, 0x22a1,
-  0x8403, 0x0d2f,
-  0x8404, 0x0d43,
-  0x8405, 0x475f,
-  0x8406, 0x22b0,
-  0x8407, 0x0d45,
-  0x8409, 0x22ac,
-  0x840a, 0x0d3a,
-  0x840b, 0x0d34,
-  0x840c, 0x0d3c,
-  0x840d, 0x0d31,
-  0x840e, 0x0d42,
-  0x840f, 0x22ad,
-  0x8410, 0x229b,
-  0x8411, 0x22af,
-  0x8412, 0x2296,
-  0x8413, 0x22b8,
-  0x8414, 0x3c10,
-  0x8416, 0x4037,
-  0x8418, 0x3e7a,
-  0x841b, 0x22c1,
-  0x841c, 0x3eb3,
-  0x8420, 0x3c55,
-  0x8421, 0x3751,
-  0x8423, 0x2293,
-  0x8424, 0x4951,
-  0x8426, 0x46d8,
-  0x8429, 0x254d,
-  0x842b, 0x2563,
-  0x842c, 0x0eac,
-  0x842d, 0x2552,
-  0x842e, 0x422d,
-  0x842f, 0x2550,
-  0x8430, 0x253b,
-  0x8431, 0x0ede,
-  0x8432, 0x254b,
-  0x8433, 0x255f,
-  0x8434, 0x2547,
-  0x8435, 0x0ee6,
-  0x8436, 0x255e,
-  0x8437, 0x2545,
-  0x8438, 0x0d41,
-  0x8439, 0x2555,
-  0x843a, 0x2546,
-  0x843b, 0x255c,
-  0x843c, 0x0ee5,
-  0x843d, 0x0edd,
-  0x843e, 0x3d21,
-  0x843f, 0x2530,
-  0x8440, 0x2538,
-  0x8442, 0x2551,
-  0x8443, 0x2549,
-  0x8444, 0x2562,
-  0x8445, 0x254c,
-  0x8446, 0x0eeb,
-  0x8447, 0x255d,
-  0x8448, 0x4718,
-  0x8449, 0x0ee2,
-  0x844a, 0x37e4,
-  0x844b, 0x254f,
-  0x844c, 0x2557,
-  0x844d, 0x253c,
-  0x844e, 0x2556,
-  0x8450, 0x2567,
-  0x8451, 0x2537,
-  0x8452, 0x2558,
-  0x8453, 0x3b7d,
-  0x8454, 0x2565,
-  0x8455, 0x398b,
-  0x8456, 0x2531,
-  0x8457, 0x0d39,
-  0x8458, 0x37de,
-  0x8459, 0x253f,
-  0x845a, 0x253e,
-  0x845b, 0x0ee4,
-  0x845c, 0x3edb,
-  0x845d, 0x2542,
-  0x845e, 0x2544,
-  0x845f, 0x2553,
-  0x8460, 0x2564,
-  0x8461, 0x0ee7,
-  0x8462, 0x42da,
-  0x8463, 0x0ee8,
-  0x8464, 0x4761,
-  0x8465, 0x2536,
-  0x8466, 0x0ee0,
-  0x8467, 0x253a,
-  0x8468, 0x2560,
-  0x8469, 0x0ee9,
-  0x846b, 0x0ee1,
-  0x846c, 0x0ee3,
-  0x846d, 0x0eea,
-  0x846e, 0x2566,
-  0x846f, 0x2559,
-  0x8470, 0x2554,
-  0x8471, 0x37e0,
-  0x8472, 0x3c93,
-  0x8473, 0x2541,
-  0x8474, 0x2540,
-  0x8475, 0x0edf,
-  0x8476, 0x2532,
-  0x8477, 0x0edc,
-  0x8478, 0x254a,
-  0x8479, 0x2533,
-  0x847a, 0x2548,
-  0x847d, 0x253d,
-  0x847e, 0x2561,
-  0x847f, 0x394e,
-  0x8480, 0x3b6e,
-  0x8482, 0x0edb,
-  0x8486, 0x2539,
-  0x8488, 0x4762,
-  0x848d, 0x2535,
-  0x848e, 0x255b,
-  0x848f, 0x2534,
-  0x8490, 0x108e,
-  0x8491, 0x27cd,
-  0x8492, 0x3756,
-  0x8493, 0x37ee,
-  0x8494, 0x27bc,
-  0x8496, 0x3b1d,
-  0x8497, 0x27a6,
-  0x8498, 0x27c4,
-  0x8499, 0x1086,
-  0x849a, 0x27b5,
-  0x849b, 0x27bf,
-  0x849c, 0x1089,
-  0x849d, 0x27b8,
-  0x849e, 0x1087,
-  0x849f, 0x27a9,
-  0x84a0, 0x27c7,
-  0x84a1, 0x27a8,
-  0x84a2, 0x27bb,
-  0x84a3, 0x3b9e,
-  0x84a4, 0x27a7,
-  0x84a7, 0x27b9,
-  0x84a8, 0x27c2,
-  0x84a9, 0x27c0,
-  0x84aa, 0x27b4,
-  0x84ab, 0x27af,
-  0x84ac, 0x27ad,
-  0x84ad, 0x3d8c,
-  0x84ae, 0x27ae,
-  0x84af, 0x27c1,
-  0x84b0, 0x27cc,
-  0x84b1, 0x27b6,
-  0x84b2, 0x1088,
-  0x84b4, 0x27b1,
-  0x84b6, 0x27c5,
-  0x84b8, 0x108b,
-  0x84b9, 0x27b0,
-  0x84ba, 0x27aa,
-  0x84bb, 0x27ba,
-  0x84bc, 0x108f,
-  0x84bd, 0x3c4c,
-  0x84be, 0x4764,
-  0x84bf, 0x1083,
-  0x84c0, 0x108c,
-  0x84c1, 0x27b2,
-  0x84c2, 0x27ac,
-  0x84c4, 0x1085,
-  0x84c5, 0x255a,
-  0x84c6, 0x1084,
-  0x84c7, 0x27bd,
-  0x84c9, 0x1082,
-  0x84ca, 0x1091,
-  0x84cb, 0x108a,
-  0x84cc, 0x27be,
-  0x84cd, 0x27b3,
-  0x84ce, 0x27ab,
-  0x84cf, 0x27c6,
-  0x84d0, 0x27b7,
-  0x84d1, 0x1090,
-  0x84d2, 0x27ca,
-  0x84d3, 0x108d,
-  0x84d4, 0x27c9,
-  0x84d6, 0x27c3,
-  0x84d7, 0x27c8,
-  0x84da, 0x3ff5,
-  0x84db, 0x27cb,
-  0x84de, 0x37ea,
-  0x84e1, 0x4765,
-  0x84e2, 0x37b5,
-  0x84e4, 0x37ef,
-  0x84e5, 0x3bd0,
-  0x84e7, 0x2a03,
-  0x84e9, 0x29f7,
-  0x84ea, 0x29f6,
-  0x84eb, 0x29f2,
-  0x84ec, 0x11fb,
-  0x84ee, 0x11f3,
-  0x84ef, 0x2a06,
-  0x84f0, 0x2a05,
-  0x84f1, 0x252f,
-  0x84f2, 0x29ef,
-  0x84f3, 0x29f3,
-  0x84f4, 0x29ed,
-  0x84f6, 0x2a00,
-  0x84f7, 0x29f1,
-  0x84f8, 0x4766,
-  0x84f9, 0x2a07,
-  0x84fa, 0x29ea,
-  0x84fb, 0x29e8,
-  0x84fc, 0x29f4,
-  0x84fd, 0x29fe,
-  0x84fe, 0x29f9,
-  0x84ff, 0x11fd,
-  0x8500, 0x29df,
-  0x8502, 0x29fd,
-  0x8503, 0x398a,
-  0x8505, 0x40eb,
-  0x8506, 0x11fe,
-  0x8507, 0x2543,
-  0x8508, 0x29eb,
-  0x8509, 0x29e2,
-  0x850a, 0x29e5,
-  0x850b, 0x2a0b,
-  0x850c, 0x29ec,
-  0x850d, 0x29e3,
-  0x850e, 0x29e1,
-  0x850f, 0x29de,
-  0x8510, 0x4767,
-  0x8511, 0x11f7,
-  0x8512, 0x29f5,
-  0x8513, 0x11f6,
-  0x8514, 0x11fa,
-  0x8515, 0x29f0,
-  0x8516, 0x29f8,
-  0x8517, 0x11f0,
-  0x8518, 0x2a08,
-  0x8519, 0x2a0c,
-  0x851a, 0x11f2,
-  0x851c, 0x29e7,
-  0x851d, 0x29fb,
-  0x851e, 0x29ff,
-  0x851f, 0x29e4,
-  0x8520, 0x2a09,
-  0x8521, 0x11f9,
-  0x8523, 0x11f8,
-  0x8524, 0x29dc,
-  0x8525, 0x11fc,
-  0x8526, 0x2a02,
-  0x8527, 0x29e6,
-  0x8528, 0x29fa,
-  0x8529, 0x29e0,
-  0x852a, 0x29ee,
-  0x852b, 0x29e9,
-  0x852c, 0x11f4,
-  0x852e, 0x29fc,
-  0x852f, 0x2a0d,
-  0x8530, 0x2a0a,
-  0x8531, 0x2a01,
-  0x8533, 0x4228,
-  0x8534, 0x37f4,
-  0x8538, 0x4768,
-  0x853b, 0x29dd,
-  0x853d, 0x11f1,
-  0x853e, 0x2c4f,
-  0x8540, 0x2c46,
-  0x8541, 0x2c49,
-  0x8542, 0x4062,
-  0x8543, 0x133b,
-  0x8544, 0x2c4b,
-  0x8545, 0x2c40,
-  0x8546, 0x2c47,
-  0x8547, 0x2c4d,
-  0x8548, 0x1338,
-  0x8549, 0x133c,
-  0x854a, 0x1336,
-  0x854b, 0x37c0,
-  0x854c, 0x400f,
-  0x854d, 0x2c42,
-  0x854e, 0x2c52,
-  0x8551, 0x2c4c,
-  0x8552, 0x4769,
-  0x8553, 0x2c43,
-  0x8554, 0x2c5b,
-  0x8555, 0x2c55,
-  0x8556, 0x2c3f,
-  0x8557, 0x2e23,
-  0x8558, 0x2c45,
-  0x8559, 0x1337,
-  0x855a, 0x37db,
-  0x855b, 0x2c50,
-  0x855d, 0x2c5a,
-  0x855e, 0x133f,
-  0x8560, 0x2c57,
-  0x8561, 0x2c44,
-  0x8562, 0x2c4a,
-  0x8563, 0x2c4e,
-  0x8564, 0x2c48,
-  0x8565, 0x2c5c,
-  0x8566, 0x2c59,
-  0x8567, 0x2c56,
-  0x8568, 0x1339,
-  0x856a, 0x133e,
-  0x856b, 0x2c41,
-  0x856c, 0x2c5d,
-  0x856d, 0x133d,
-  0x856e, 0x2c53,
-  0x856f, 0x476b,
-  0x8571, 0x2c51,
-  0x8573, 0x37f8,
-  0x8575, 0x2c54,
-  0x8576, 0x2e30,
-  0x8577, 0x2e1d,
-  0x8578, 0x2e22,
-  0x8579, 0x2e2f,
-  0x857a, 0x2e21,
-  0x857b, 0x2e19,
-  0x857c, 0x2e1e,
-  0x857e, 0x145c,
-  0x8580, 0x2e12,
-  0x8581, 0x2e2a,
-  0x8582, 0x2e2c,
-  0x8583, 0x2e11,
-  0x8584, 0x145b,
-  0x8585, 0x2e2e,
-  0x8586, 0x2e26,
-  0x8587, 0x1462,
-  0x8588, 0x2e2d,
-  0x8589, 0x2e1f,
-  0x858a, 0x1464,
-  0x858b, 0x2e17,
-  0x858c, 0x2c58,
-  0x858d, 0x2e27,
-  0x858e, 0x2e24,
-  0x858f, 0x2e13,
-  0x8590, 0x2e32,
-  0x8591, 0x145e,
-  0x8594, 0x145f,
-  0x8595, 0x2e15,
-  0x8596, 0x2e25,
-  0x8598, 0x2e31,
-  0x8599, 0x2e28,
-  0x859a, 0x2e1b,
-  0x859b, 0x1461,
-  0x859c, 0x145d,
-  0x859d, 0x2e29,
-  0x859e, 0x2e1c,
-  0x859f, 0x2e33,
-  0x85a0, 0x2e16,
-  0x85a1, 0x2e20,
-  0x85a2, 0x2e2b,
-  0x85a3, 0x2e18,
-  0x85a4, 0x2e1a,
-  0x85a6, 0x1465,
-  0x85a7, 0x2e14,
-  0x85a8, 0x1463,
-  0x85a9, 0x151c,
-  0x85aa, 0x145a,
-  0x85af, 0x1460,
-  0x85b0, 0x1520,
-  0x85b1, 0x2fa6,
-  0x85b3, 0x2f9c,
-  0x85b4, 0x2f97,
-  0x85b5, 0x2f9d,
-  0x85b6, 0x2fa7,
-  0x85b7, 0x2fab,
-  0x85b8, 0x2faa,
-  0x85b9, 0x1522,
-  0x85ba, 0x1521,
-  0x85bd, 0x2f9e,
-  0x85be, 0x2fac,
-  0x85bf, 0x2fa1,
-  0x85c0, 0x2f99,
-  0x85c1, 0x37fe,
-  0x85c2, 0x2f9b,
-  0x85c3, 0x2f9a,
-  0x85c4, 0x2fa0,
-  0x85c5, 0x2fa5,
-  0x85c6, 0x2f98,
-  0x85c7, 0x2f9f,
-  0x85c8, 0x2fa4,
-  0x85c9, 0x151f,
-  0x85cb, 0x2fa2,
-  0x85cd, 0x151d,
-  0x85ce, 0x2fa3,
-  0x85cf, 0x151b,
-  0x85d0, 0x151e,
-  0x85d1, 0x3101,
-  0x85d2, 0x2fa8,
-  0x85d5, 0x15b7,
-  0x85d7, 0x30f9,
-  0x85d8, 0x30fd,
-  0x85d9, 0x30f5,
-  0x85da, 0x30f8,
-  0x85dc, 0x3100,
-  0x85dd, 0x15b5,
-  0x85de, 0x3105,
-  0x85df, 0x30fe,
-  0x85e0, 0x476d,
-  0x85e1, 0x30f6,
-  0x85e2, 0x3106,
-  0x85e3, 0x30ff,
-  0x85e4, 0x15b8,
-  0x85e6, 0x3103,
-  0x85e8, 0x30f7,
-  0x85e9, 0x15b4,
-  0x85ea, 0x15b6,
-  0x85eb, 0x30f2,
-  0x85ec, 0x30fa,
-  0x85ed, 0x30f4,
-  0x85ee, 0x3c56,
-  0x85ef, 0x3104,
-  0x85f0, 0x3102,
-  0x85f1, 0x30f3,
-  0x85f2, 0x30fb,
-  0x85f6, 0x3225,
-  0x85f7, 0x15ba,
-  0x85f8, 0x30fc,
-  0x85f9, 0x1638,
-  0x85fa, 0x163a,
-  0x85fb, 0x1637,
-  0x85fc, 0x3c50,
-  0x85fd, 0x322a,
-  0x85fe, 0x3222,
-  0x85ff, 0x3220,
-  0x8600, 0x3224,
-  0x8601, 0x3221,
-  0x8602, 0x3800,
-  0x8604, 0x3226,
-  0x8605, 0x3228,
-  0x8606, 0x163b,
-  0x8607, 0x163d,
-  0x8609, 0x3227,
-  0x860a, 0x163e,
-  0x860b, 0x163c,
-  0x860c, 0x3229,
-  0x860d, 0x4064,
-  0x8610, 0x3b7f,
-  0x8611, 0x1639,
-  0x8614, 0x46be,
-  0x8616, 0x37fb,
-  0x8617, 0x1685,
-  0x8618, 0x32f6,
-  0x8619, 0x32fc,
-  0x861a, 0x1687,
-  0x861b, 0x3223,
-  0x861c, 0x32fb,
-  0x861e, 0x3302,
-  0x861f, 0x32f9,
-  0x8620, 0x3300,
-  0x8621, 0x32ff,
-  0x8622, 0x321f,
-  0x8623, 0x32fa,
-  0x8624, 0x2fa9,
-  0x8625, 0x3303,
-  0x8626, 0x32f8,
-  0x8627, 0x32fd,
-  0x8628, 0x3805,
-  0x8629, 0x3301,
-  0x862a, 0x32f7,
-  0x862c, 0x33aa,
-  0x862d, 0x1686,
-  0x862e, 0x32fe,
-  0x862f, 0x3f9e,
-  0x8631, 0x3432,
-  0x8632, 0x33ab,
-  0x8633, 0x33a9,
-  0x8634, 0x33a7,
-  0x8636, 0x33ac,
-  0x8638, 0x1707,
-  0x8639, 0x3430,
-  0x863a, 0x342e,
-  0x863b, 0x3433,
-  0x863c, 0x3431,
-  0x863e, 0x3434,
-  0x863f, 0x1708,
-  0x8640, 0x342f,
-  0x8642, 0x38c1,
-  0x8643, 0x3497,
-  0x8645, 0x3b66,
-  0x8646, 0x34df,
-  0x864b, 0x353e,
-  0x864c, 0x3536,
-  0x864d, 0x1818,
-  0x864e, 0x0689,
-  0x8650, 0x07ff,
-  0x8652, 0x1de3,
-  0x8653, 0x1de2,
-  0x8654, 0x09af,
-  0x8655, 0x0b88,
-  0x8656, 0x203c,
-  0x8659, 0x203b,
-  0x865b, 0x0d48,
-  0x865c, 0x0eed,
-  0x865e, 0x0eec,
-  0x865f, 0x0eee,
-  0x8661, 0x27ce,
-  0x8662, 0x2a0e,
-  0x8663, 0x2c5e,
-  0x8664, 0x2c60,
-  0x8665, 0x2c5f,
-  0x8667, 0x1466,
-  0x8668, 0x2e34,
-  0x8669, 0x2fad,
-  0x866a, 0x351e,
-  0x866b, 0x040f,
-  0x866c, 0x3813,
-  0x866d, 0x1a46,
-  0x866f, 0x1a45,
-  0x8670, 0x1a44,
-  0x8671, 0x068a,
-  0x8672, 0x476f,
-  0x8673, 0x1bfd,
-  0x8674, 0x1bfb,
-  0x8677, 0x1bfa,
-  0x8679, 0x0800,
-  0x867a, 0x0802,
-  0x867b, 0x0801,
-  0x867c, 0x1bfc,
-  0x867e, 0x380a,
-  0x8685, 0x1def,
-  0x8686, 0x1dec,
-  0x8687, 0x1dea,
-  0x868a, 0x09b0,
-  0x868b, 0x1ded,
-  0x868c, 0x09b5,
-  0x868d, 0x1de7,
-  0x868e, 0x1df6,
-  0x8690, 0x1df8,
-  0x8691, 0x1de8,
-  0x8692, 0x4770,
-  0x8693, 0x09b2,
-  0x8694, 0x1df9,
-  0x8695, 0x1df4,
-  0x8696, 0x1de6,
-  0x8697, 0x1deb,
-  0x8698, 0x1df5,
-  0x8699, 0x1df1,
-  0x869a, 0x1dee,
-  0x869c, 0x09b7,
-  0x869d, 0x1df7,
-  0x869e, 0x1de9,
-  0x86a0, 0x3b88,
-  0x86a1, 0x1df2,
-  0x86a2, 0x1de4,
-  0x86a3, 0x09b6,
-  0x86a4, 0x09b3,
-  0x86a5, 0x1df0,
-  0x86a7, 0x1df3,
-  0x86a8, 0x1de5,
-  0x86a9, 0x09b4,
-  0x86aa, 0x09b1,
-  0x86ad, 0x3f06,
-  0x86af, 0x0b92,
-  0x86b0, 0x2043,
-  0x86b1, 0x0b91,
-  0x86b2, 0x43e0,
-  0x86b3, 0x2046,
-  0x86b4, 0x2049,
-  0x86b5, 0x0b8e,
-  0x86b6, 0x0b8c,
-  0x86b7, 0x203e,
-  0x86b8, 0x2047,
-  0x86b9, 0x2045,
-  0x86ba, 0x2042,
-  0x86bb, 0x204a,
-  0x86bd, 0x204d,
-  0x86bf, 0x203d,
-  0x86c0, 0x0b8b,
-  0x86c1, 0x2040,
-  0x86c2, 0x203f,
-  0x86c3, 0x204c,
-  0x86c4, 0x0b8d,
-  0x86c5, 0x2041,
-  0x86c6, 0x0b8f,
-  0x86c7, 0x0b8a,
-  0x86c8, 0x2044,
-  0x86c9, 0x0b93,
-  0x86cb, 0x0b90,
-  0x86cc, 0x2048,
-  0x86d0, 0x0d4f,
-  0x86d1, 0x22d2,
-  0x86d3, 0x22c7,
-  0x86d4, 0x0d4c,
-  0x86d6, 0x256d,
-  0x86d7, 0x22d0,
-  0x86d8, 0x22c4,
-  0x86d9, 0x0d4a,
-  0x86da, 0x22c9,
-  0x86db, 0x0d4d,
-  0x86dc, 0x22cd,
-  0x86dd, 0x22cb,
-  0x86de, 0x0d50,
-  0x86df, 0x0d49,
-  0x86e2, 0x22c5,
-  0x86e3, 0x22c8,
-  0x86e4, 0x0d4e,
-  0x86e6, 0x22c6,
-  0x86e8, 0x22d1,
-  0x86e9, 0x22cf,
-  0x86ea, 0x22ca,
-  0x86eb, 0x22cc,
-  0x86ec, 0x22ce,
-  0x86ed, 0x0d4b,
-  0x86ef, 0x4771,
-  0x86f5, 0x256e,
-  0x86f6, 0x2574,
-  0x86f7, 0x256a,
-  0x86f8, 0x2570,
-  0x86f9, 0x0eef,
-  0x86fa, 0x256c,
-  0x86fb, 0x0ef5,
-  0x86fe, 0x0ef4,
-  0x8700, 0x0ef3,
-  0x8701, 0x2573,
-  0x8702, 0x0ef6,
-  0x8704, 0x2569,
-  0x8705, 0x2576,
-  0x8706, 0x0ef8,
-  0x8707, 0x0ef2,
-  0x8708, 0x0ef1,
-  0x8709, 0x2572,
-  0x870a, 0x0ef9,
-  0x870b, 0x2568,
-  0x870c, 0x256b,
-  0x870d, 0x2575,
-  0x870e, 0x2571,
-  0x8711, 0x27ee,
-  0x8712, 0x27e3,
-  0x8713, 0x0ef0,
-  0x8718, 0x1098,
-  0x8719, 0x27d7,
-  0x871a, 0x27ec,
-  0x871b, 0x27d8,
-  0x871c, 0x1093,
-  0x871e, 0x27d5,
-  0x8720, 0x27de,
-  0x8721, 0x27d6,
-  0x8722, 0x1095,
-  0x8723, 0x27d0,
-  0x8724, 0x27eb,
-  0x8725, 0x1096,
-  0x8726, 0x27e8,
-  0x8728, 0x27d1,
-  0x8729, 0x109b,
-  0x872a, 0x27e0,
-  0x872c, 0x27da,
-  0x872d, 0x27e1,
-  0x872e, 0x27d4,
-  0x8730, 0x27ed,
-  0x8731, 0x27e5,
-  0x8732, 0x27df,
-  0x8733, 0x27cf,
-  0x8734, 0x1097,
-  0x8735, 0x27e6,
-  0x8737, 0x109a,
-  0x8738, 0x27ea,
-  0x873a, 0x27e4,
-  0x873b, 0x1094,
-  0x873c, 0x27e2,
-  0x873e, 0x27dc,
-  0x873f, 0x1092,
-  0x8740, 0x27d3,
-  0x8741, 0x27db,
-  0x8742, 0x27e7,
-  0x8743, 0x27d9,
-  0x8746, 0x27dd,
-  0x874c, 0x1208,
-  0x874d, 0x256f,
-  0x874e, 0x2a20,
-  0x874f, 0x2a29,
-  0x8750, 0x2a1f,
-  0x8751, 0x2a1b,
-  0x8752, 0x2a18,
-  0x8753, 0x1209,
-  0x8754, 0x2a16,
-  0x8755, 0x1099,
-  0x8756, 0x2a0f,
-  0x8757, 0x1207,
-  0x8758, 0x2a15,
-  0x8759, 0x1206,
-  0x875a, 0x2a1a,
-  0x875b, 0x2a17,
-  0x875c, 0x2a27,
-  0x875d, 0x2a22,
-  0x875e, 0x2a1c,
-  0x875f, 0x2a21,
-  0x8760, 0x1202,
-  0x8761, 0x2a19,
-  0x8762, 0x2a2c,
-  0x8763, 0x2a10,
-  0x8765, 0x2a28,
-  0x8766, 0x1203,
-  0x8767, 0x2a2d,
-  0x8768, 0x1205,
-  0x8769, 0x2a2e,
-  0x876a, 0x2a1e,
-  0x876b, 0x27d2,
-  0x876c, 0x2a24,
-  0x876d, 0x2a1d,
-  0x876e, 0x2a26,
-  0x876f, 0x2a23,
-  0x8770, 0x3e6c,
-  0x8771, 0x380b,
-  0x8773, 0x2a14,
-  0x8774, 0x1200,
-  0x8775, 0x2a2b,
-  0x8776, 0x1201,
-  0x8777, 0x2a12,
-  0x8778, 0x1204,
-  0x8779, 0x2c6b,
-  0x877a, 0x2a25,
-  0x877b, 0x2a2a,
-  0x877d, 0x4045,
-  0x8781, 0x2c68,
-  0x8782, 0x11ff,
-  0x8783, 0x1340,
-  0x8784, 0x2c72,
-  0x8785, 0x2c6e,
-  0x8786, 0x3eb0,
-  0x8787, 0x2c6c,
-  0x8788, 0x2c67,
-  0x8789, 0x2c76,
-  0x878b, 0x43e2,
-  0x878c, 0x3fef,
-  0x878d, 0x1344,
-  0x878f, 0x2c63,
-  0x8790, 0x2c6f,
-  0x8792, 0x2c66,
-  0x8793, 0x2c65,
-  0x8794, 0x2c73,
-  0x8796, 0x2c69,
-  0x8797, 0x2c64,
-  0x8798, 0x2c6a,
-  0x879a, 0x2c75,
-  0x879b, 0x2c62,
-  0x879c, 0x2c74,
-  0x879d, 0x2c71,
-  0x879e, 0x1342,
-  0x879f, 0x1341,
-  0x87a2, 0x1343,
-  0x87a3, 0x2c6d,
-  0x87a4, 0x2c61,
-  0x87a5, 0x3d88,
-  0x87a9, 0x3fec,
-  0x87aa, 0x2e36,
-  0x87ab, 0x146c,
-  0x87ac, 0x2e3a,
-  0x87ad, 0x2e37,
-  0x87ae, 0x2e3e,
-  0x87af, 0x2e44,
-  0x87b0, 0x2e39,
-  0x87b1, 0x380f,
-  0x87b2, 0x2e4d,
-  0x87b3, 0x1469,
-  0x87b4, 0x2e47,
-  0x87b5, 0x2e3c,
-  0x87b6, 0x2e48,
-  0x87b7, 0x2e43,
-  0x87b8, 0x2e4a,
-  0x87b9, 0x2e3b,
-  0x87ba, 0x146e,
-  0x87bb, 0x146d,
-  0x87bc, 0x2e3d,
-  0x87bd, 0x2e4b,
-  0x87be, 0x2e35,
-  0x87bf, 0x2e49,
-  0x87c0, 0x1467,
-  0x87c1, 0x3ffc,
-  0x87c2, 0x2e41,
-  0x87c3, 0x2e40,
-  0x87c4, 0x2e45,
-  0x87c5, 0x2e38,
-  0x87c6, 0x146b,
-  0x87c8, 0x146f,
-  0x87c9, 0x2e3f,
-  0x87ca, 0x2e46,
-  0x87cb, 0x1470,
-  0x87cc, 0x2e42,
-  0x87ce, 0x3fed,
-  0x87d1, 0x1468,
-  0x87d2, 0x146a,
-  0x87d3, 0x2fba,
-  0x87d4, 0x2fb8,
-  0x87d6, 0x3f92,
-  0x87d7, 0x2fbe,
-  0x87d8, 0x2fbc,
-  0x87d9, 0x2fbf,
-  0x87da, 0x3810,
-  0x87db, 0x2fb1,
-  0x87dc, 0x2fb9,
-  0x87dd, 0x2fc3,
-  0x87de, 0x2e4c,
-  0x87df, 0x2fb5,
-  0x87e0, 0x1526,
-  0x87e1, 0x2a13,
-  0x87e2, 0x2fb0,
-  0x87e3, 0x2fbd,
-  0x87e4, 0x2fb7,
-  0x87e5, 0x2fb4,
-  0x87e6, 0x2faf,
-  0x87e7, 0x2fae,
-  0x87e8, 0x2fc2,
-  0x87ea, 0x2fb3,
-  0x87eb, 0x2fb2,
-  0x87ec, 0x1524,
-  0x87ed, 0x2fbb,
-  0x87ee, 0x380d,
-  0x87ef, 0x1523,
-  0x87f2, 0x1525,
-  0x87f3, 0x2fb6,
-  0x87f4, 0x2fc1,
-  0x87f5, 0x3fae,
-  0x87f6, 0x310a,
-  0x87f9, 0x15be,
-  0x87fa, 0x3108,
-  0x87fb, 0x15bb,
-  0x87fc, 0x3110,
-  0x87fe, 0x15bf,
-  0x87ff, 0x3112,
-  0x8800, 0x3107,
-  0x8801, 0x2fc0,
-  0x8802, 0x3114,
-  0x8803, 0x3109,
-  0x8804, 0x3eaf,
-  0x8805, 0x15bc,
-  0x8806, 0x310f,
-  0x8808, 0x3111,
-  0x8809, 0x310c,
-  0x880a, 0x3113,
-  0x880b, 0x310e,
-  0x880c, 0x310d,
-  0x880d, 0x15bd,
-  0x880f, 0x3811,
-  0x8810, 0x322c,
-  0x8813, 0x322f,
-  0x8814, 0x163f,
-  0x8816, 0x3230,
-  0x8817, 0x322e,
-  0x8818, 0x3f7a,
-  0x8819, 0x322b,
-  0x881b, 0x3306,
-  0x881c, 0x3309,
-  0x881d, 0x3305,
-  0x881f, 0x168b,
-  0x8820, 0x3307,
-  0x8821, 0x168a,
-  0x8822, 0x1689,
-  0x8823, 0x1688,
-  0x8824, 0x3308,
-  0x8825, 0x33b1,
-  0x8826, 0x33af,
-  0x8827, 0x3e07,
-  0x8828, 0x33ae,
-  0x8829, 0x3304,
-  0x882a, 0x33b0,
-  0x882b, 0x330a,
-  0x882c, 0x33ad,
-  0x882d, 0x3b8b,
-  0x882e, 0x3437,
-  0x882f, 0x3415,
-  0x8830, 0x3435,
-  0x8831, 0x1709,
-  0x8832, 0x3436,
-  0x8833, 0x3438,
-  0x8835, 0x349a,
-  0x8836, 0x1728,
-  0x8837, 0x3499,
-  0x8838, 0x3498,
-  0x8839, 0x1729,
-  0x883b, 0x1747,
-  0x883c, 0x3508,
-  0x883d, 0x3520,
-  0x883e, 0x351f,
-  0x883f, 0x3521,
-  0x8840, 0x0410,
-  0x8841, 0x1bfe,
-  0x8842, 0x3f5a,
-  0x8843, 0x1dfa,
-  0x8845, 0x3816,
-  0x8848, 0x22d3,
-  0x884a, 0x330b,
-  0x884b, 0x349b,
-  0x884c, 0x0411,
-  0x884d, 0x0803,
-  0x884e, 0x1bff,
-  0x884f, 0x3844,
-  0x8852, 0x204f,
-  0x8853, 0x0b94,
-  0x8855, 0x22d5,
-  0x8856, 0x22d4,
-  0x8857, 0x0d51,
-  0x8859, 0x0efa,
-  0x885a, 0x2a2f,
-  0x885b, 0x120a,
-  0x885d, 0x120b,
-  0x885e, 0x381b,
-  0x8860, 0x3a46,
-  0x8861, 0x1345,
-  0x8862, 0x172a,
-  0x8863, 0x0412,
-  0x8864, 0x4502,
-  0x8865, 0x3dfc,
-  0x8867, 0x1c00,
-  0x8868, 0x068c,
-  0x8869, 0x1c02,
-  0x886a, 0x1c01,
-  0x886b, 0x0804,
-  0x886d, 0x1dfc,
-  0x886e, 0x3b8e,
-  0x886f, 0x1e03,
-  0x8870, 0x09b8,
-  0x8871, 0x1e01,
-  0x8872, 0x1dff,
-  0x8874, 0x1e06,
-  0x8875, 0x1dfd,
-  0x8877, 0x09b9,
-  0x8879, 0x09bd,
-  0x887c, 0x1e07,
-  0x887d, 0x09bc,
-  0x887e, 0x1e05,
-  0x887f, 0x1e02,
-  0x8880, 0x1e00,
-  0x8881, 0x09ba,
-  0x8883, 0x1e04,
-  0x8884, 0x42f7,
-  0x8887, 0x3b90,
-  0x8888, 0x0b96,
-  0x8889, 0x2050,
-  0x888b, 0x0b9b,
-  0x888c, 0x2060,
-  0x888d, 0x0b9a,
-  0x888e, 0x2062,
-  0x8891, 0x2056,
-  0x8892, 0x0b98,
-  0x8893, 0x2061,
-  0x8895, 0x2051,
-  0x8896, 0x0b99,
-  0x8897, 0x205d,
-  0x8898, 0x2059,
-  0x8899, 0x205b,
-  0x889a, 0x2055,
-  0x889b, 0x205c,
-  0x889c, 0x381c,
-  0x889e, 0x0b95,
-  0x889f, 0x2058,
-  0x88a0, 0x3fa0,
-  0x88a1, 0x2057,
-  0x88a2, 0x2053,
-  0x88a4, 0x205e,
-  0x88a7, 0x205a,
-  0x88a8, 0x2052,
-  0x88aa, 0x2054,
-  0x88ab, 0x0b97,
-  0x88ac, 0x205f,
-  0x88ae, 0x4775,
-  0x88b1, 0x0d54,
-  0x88b2, 0x22e0,
-  0x88b4, 0x381e,
-  0x88b6, 0x22dc,
-  0x88b7, 0x22de,
-  0x88b8, 0x22d9,
-  0x88b9, 0x22d8,
-  0x88ba, 0x22d6,
-  0x88bc, 0x22dd,
-  0x88bd, 0x22df,
-  0x88be, 0x22db,
-  0x88bf, 0x3b91,
-  0x88c0, 0x22da,
-  0x88c1, 0x0d52,
-  0x88c5, 0x3820,
-  0x88c7, 0x3eb1,
-  0x88c9, 0x22e2,
-  0x88ca, 0x0f02,
-  0x88cb, 0x2578,
-  0x88cc, 0x257e,
-  0x88cd, 0x2579,
-  0x88cf, 0x36ea,
-  0x88d0, 0x257f,
-  0x88d2, 0x0f04,
-  0x88d4, 0x0efc,
-  0x88d5, 0x0f03,
-  0x88d6, 0x2577,
-  0x88d7, 0x22d7,
-  0x88d8, 0x0eff,
-  0x88d9, 0x0efd,
-  0x88da, 0x257d,
-  0x88db, 0x257c,
-  0x88dc, 0x0efe,
-  0x88dd, 0x0f00,
-  0x88de, 0x257b,
-  0x88df, 0x0efb,
-  0x88e1, 0x0f01,
-  0x88e6, 0x3b92,
-  0x88e7, 0x27f0,
-  0x88e8, 0x10a2,
-  0x88eb, 0x27fb,
-  0x88ec, 0x27fa,
-  0x88ee, 0x27f5,
-  0x88ef, 0x10a4,
-  0x88f0, 0x27f9,
-  0x88f1, 0x27f1,
-  0x88f3, 0x109c,
-  0x88f4, 0x109e,
-  0x88f5, 0x3e08,
-  0x88f6, 0x27f7,
-  0x88f7, 0x27ef,
-  0x88f8, 0x10a0,
-  0x88f9, 0x109f,
-  0x88fa, 0x27f3,
-  0x88fb, 0x27f8,
-  0x88fc, 0x27f6,
-  0x88fd, 0x10a1,
-  0x88fe, 0x27f4,
-  0x88ff, 0x4776,
-  0x8900, 0x42fa,
-  0x8901, 0x22e1,
-  0x8902, 0x109d,
-  0x8905, 0x2a30,
-  0x8906, 0x2a37,
-  0x8907, 0x120d,
-  0x8909, 0x2a3b,
-  0x890a, 0x1211,
-  0x890b, 0x2a33,
-  0x890c, 0x2a31,
-  0x890e, 0x2a3a,
-  0x8910, 0x120c,
-  0x8911, 0x2a39,
-  0x8912, 0x120e,
-  0x8914, 0x2a32,
-  0x8915, 0x1210,
-  0x8916, 0x2a38,
-  0x8917, 0x2a34,
-  0x891a, 0x10a3,
-  0x891e, 0x2c77,
-  0x891f, 0x2c83,
-  0x8921, 0x134a,
-  0x8922, 0x2c7e,
-  0x8923, 0x2c80,
-  0x8924, 0x4777,
-  0x8925, 0x1348,
-  0x8926, 0x2c78,
-  0x8927, 0x2c7c,
-  0x8929, 0x2c7f,
-  0x892a, 0x1346,
-  0x892b, 0x1349,
-  0x892c, 0x2c82,
-  0x892d, 0x2c7a,
-  0x892f, 0x2c81,
-  0x8930, 0x2c79,
-  0x8931, 0x2c7d,
-  0x8932, 0x1347,
-  0x8933, 0x2e4f,
-  0x8935, 0x2e4e,
-  0x8936, 0x1472,
-  0x8937, 0x2e54,
-  0x8938, 0x1474,
-  0x893b, 0x1471,
-  0x893c, 0x2e50,
-  0x893d, 0x1475,
-  0x893e, 0x2e51,
-  0x8941, 0x2e52,
-  0x8942, 0x2e55,
-  0x8943, 0x3e16,
-  0x8944, 0x1473,
-  0x8946, 0x2fc8,
-  0x8947, 0x43e3,
-  0x8949, 0x2fcb,
-  0x894b, 0x2fc5,
-  0x894c, 0x2fc7,
-  0x894d, 0x3b94,
-  0x894f, 0x2fc6,
-  0x8950, 0x2fc9,
-  0x8952, 0x2e53,
-  0x8953, 0x2fc4,
-  0x8954, 0x3b96,
-  0x8956, 0x15c2,
-  0x8957, 0x3118,
-  0x8958, 0x311b,
-  0x8959, 0x311d,
-  0x895a, 0x3116,
-  0x895c, 0x311a,
-  0x895d, 0x311c,
-  0x895e, 0x15c3,
-  0x895f, 0x15c1,
-  0x8960, 0x15c0,
-  0x8961, 0x3119,
-  0x8962, 0x3115,
-  0x8963, 0x3231,
-  0x8964, 0x1641,
-  0x8965, 0x3b93,
-  0x8966, 0x3232,
-  0x8969, 0x330d,
-  0x896a, 0x168c,
-  0x896b, 0x330f,
-  0x896c, 0x168d,
-  0x896d, 0x330c,
-  0x896e, 0x330e,
-  0x896f, 0x16d6,
-  0x8971, 0x33b2,
-  0x8972, 0x16d5,
-  0x8973, 0x343b,
-  0x8974, 0x343a,
-  0x8976, 0x3439,
-  0x8977, 0x3dea,
-  0x8979, 0x34e2,
-  0x897b, 0x34e5,
-  0x897c, 0x34e4,
-  0x897e, 0x1819,
-  0x897f, 0x0413,
-  0x8980, 0x4708,
-  0x8981, 0x0805,
-  0x8982, 0x2063,
-  0x8983, 0x0d55,
-  0x8985, 0x2580,
-  0x8986, 0x1527,
-  0x8987, 0x3822,
-  0x8988, 0x311e,
-  0x8989, 0x3fe9,
-  0x898a, 0x3823,
-  0x898b, 0x0508,
-  0x898f, 0x0b9d,
-  0x8991, 0x4778,
-  0x8993, 0x0b9c,
-  0x8994, 0x3fe0,
-  0x8995, 0x22e3,
-  0x8996, 0x0d56,
-  0x8997, 0x22e5,
-  0x8998, 0x22e4,
-  0x899b, 0x2581,
-  0x899c, 0x0f05,
-  0x899d, 0x27fc,
-  0x899e, 0x27ff,
-  0x899f, 0x27fe,
-  0x89a1, 0x27fd,
-  0x89a2, 0x2a3c,
-  0x89a3, 0x2a3e,
-  0x89a4, 0x2a3d,
-  0x89a5, 0x3d93,
-  0x89a6, 0x134c,
-  0x89a7, 0x3826,
-  0x89a9, 0x3825,
-  0x89aa, 0x134b,
-  0x89ac, 0x1476,
-  0x89ad, 0x2e56,
-  0x89ae, 0x2e58,
-  0x89af, 0x2e57,
-  0x89b2, 0x1528,
-  0x89b6, 0x3120,
-  0x89b7, 0x311f,
-  0x89b9, 0x3233,
-  0x89ba, 0x1642,
-  0x89bc, 0x3827,
-  0x89bd, 0x168e,
-  0x89be, 0x33b4,
-  0x89bf, 0x33b3,
-  0x89c0, 0x1748,
-  0x89c1, 0x4503,
-  0x89c6, 0x4566,
-  0x89d2, 0x0509,
-  0x89d3, 0x1c03,
-  0x89d4, 0x0806,
-  0x89d5, 0x2066,
-  0x89d6, 0x2064,
-  0x89d9, 0x2065,
-  0x89da, 0x22e7,
-  0x89dc, 0x2588,
-  0x89dd, 0x22e6,
-  0x89df, 0x2582,
-  0x89e0, 0x2586,
-  0x89e1, 0x2585,
-  0x89e2, 0x2587,
-  0x89e3, 0x0f06,
-  0x89e4, 0x2584,
-  0x89e5, 0x2583,
-  0x89e6, 0x2589,
-  0x89e7, 0x3829,
-  0x89e8, 0x2802,
-  0x89e9, 0x2800,
-  0x89eb, 0x2801,
-  0x89ec, 0x2a41,
-  0x89ed, 0x2a3f,
-  0x89f0, 0x2a40,
-  0x89f1, 0x2c84,
-  0x89f2, 0x2e59,
-  0x89f4, 0x1529,
-  0x89f6, 0x3121,
-  0x89f7, 0x3234,
-  0x89f8, 0x1643,
-  0x89fa, 0x3310,
-  0x89fb, 0x33b5,
-  0x89fc, 0x16d7,
-  0x89fe, 0x343c,
-  0x89ff, 0x34e6,
-  0x8a00, 0x050a,
-  0x8a02, 0x0808,
-  0x8a04, 0x1c04,
-  0x8a07, 0x1c05,
-  0x8a08, 0x0807,
-  0x8a0a, 0x09c3,
-  0x8a0c, 0x09c1,
-  0x8a0e, 0x09c0,
-  0x8a0f, 0x09c7,
-  0x8a10, 0x09bf,
-  0x8a11, 0x09c8,
-  0x8a12, 0x1e08,
-  0x8a13, 0x09c5,
-  0x8a15, 0x09c2,
-  0x8a16, 0x09c6,
-  0x8a17, 0x09c4,
-  0x8a18, 0x09be,
-  0x8a1b, 0x0ba5,
-  0x8a1c, 0x3ba3,
-  0x8a1d, 0x0b9f,
-  0x8a1e, 0x206a,
-  0x8a1f, 0x0ba4,
-  0x8a22, 0x0ba6,
-  0x8a23, 0x0ba0,
-  0x8a25, 0x0ba1,
-  0x8a27, 0x2068,
-  0x8a29, 0x43e5,
-  0x8a2a, 0x0b9e,
-  0x8a2b, 0x3bd1,
-  0x8a2c, 0x2069,
-  0x8a2d, 0x0ba3,
-  0x8a30, 0x2067,
-  0x8a31, 0x0ba2,
-  0x8a34, 0x0d61,
-  0x8a36, 0x0d63,
-  0x8a38, 0x477a,
-  0x8a39, 0x22eb,
-  0x8a3a, 0x0d62,
-  0x8a3b, 0x0d57,
-  0x8a3c, 0x0d5b,
-  0x8a3d, 0x3ba2,
-  0x8a3e, 0x0f19,
-  0x8a3f, 0x258e,
-  0x8a40, 0x22ed,
-  0x8a41, 0x0d5c,
-  0x8a44, 0x22f0,
-  0x8a46, 0x0d60,
-  0x8a48, 0x22f3,
-  0x8a49, 0x3ff0,
-  0x8a4a, 0x22f5,
-  0x8a4c, 0x22f6,
-  0x8a4d, 0x22ea,
-  0x8a4e, 0x22e9,
-  0x8a4f, 0x22f7,
-  0x8a50, 0x0d5f,
-  0x8a51, 0x22f4,
-  0x8a52, 0x22f2,
-  0x8a54, 0x0d5d,
-  0x8a55, 0x0d59,
-  0x8a56, 0x0d64,
-  0x8a57, 0x22ee,
-  0x8a59, 0x22ec,
-  0x8a5b, 0x0d5e,
-  0x8a5e, 0x0d5a,
-  0x8a60, 0x0d58,
-  0x8a61, 0x258d,
-  0x8a62, 0x0f14,
-  0x8a63, 0x0f0f,
-  0x8a66, 0x0f0a,
-  0x8a67, 0x3f8e,
-  0x8a68, 0x0f1a,
-  0x8a69, 0x0f0b,
-  0x8a6b, 0x0f07,
-  0x8a6c, 0x0f16,
-  0x8a6d, 0x0f13,
-  0x8a6e, 0x0f15,
-  0x8a70, 0x0f0c,
-  0x8a71, 0x0f11,
-  0x8a72, 0x0f08,
-  0x8a74, 0x2595,
-  0x8a75, 0x2592,
-  0x8a76, 0x258a,
-  0x8a77, 0x258f,
-  0x8a79, 0x0f17,
-  0x8a7a, 0x2596,
-  0x8a7b, 0x0f18,
-  0x8a7c, 0x0f0e,
-  0x8a7e, 0x3fa5,
-  0x8a7f, 0x258c,
-  0x8a81, 0x2594,
-  0x8a82, 0x2590,
-  0x8a83, 0x2593,
-  0x8a84, 0x2591,
-  0x8a85, 0x0f12,
-  0x8a86, 0x258b,
-  0x8a87, 0x0f0d,
-  0x8a8b, 0x2805,
-  0x8a8c, 0x10a6,
-  0x8a8d, 0x10a9,
-  0x8a8f, 0x2807,
-  0x8a90, 0x382f,
-  0x8a91, 0x10b1,
-  0x8a92, 0x2806,
-  0x8a93, 0x10ab,
-  0x8a94, 0x477b,
-  0x8a95, 0x1216,
-  0x8a96, 0x2808,
-  0x8a98, 0x10b0,
-  0x8a99, 0x2804,
-  0x8a9a, 0x10b2,
-  0x8a9c, 0x382c,
-  0x8a9e, 0x10a7,
-  0x8aa0, 0x0f10,
-  0x8aa1, 0x10aa,
-  0x8aa3, 0x10a8,
-  0x8aa4, 0x10ac,
-  0x8aa5, 0x10ae,
-  0x8aa6, 0x10a5,
-  0x8aa7, 0x10b3,
-  0x8aa8, 0x10af,
-  0x8aa9, 0x383d,
-  0x8aaa, 0x10ad,
-  0x8aab, 0x2803,
-  0x8aaf, 0x3841,
-  0x8ab0, 0x121d,
-  0x8ab2, 0x1219,
-  0x8ab4, 0x477c,
-  0x8ab6, 0x1220,
-  0x8ab8, 0x2a44,
-  0x8ab9, 0x1221,
-  0x8aba, 0x2a50,
-  0x8abb, 0x2a49,
-  0x8abc, 0x1212,
-  0x8abd, 0x2a51,
-  0x8abe, 0x2a4b,
-  0x8abf, 0x121c,
-  0x8ac0, 0x2a4c,
-  0x8ac2, 0x121b,
-  0x8ac3, 0x2a4f,
-  0x8ac4, 0x1215,
-  0x8ac5, 0x2a4d,
-  0x8ac6, 0x2a43,
-  0x8ac7, 0x1214,
-  0x8ac8, 0x2c8f,
-  0x8ac9, 0x121a,
-  0x8acb, 0x1217,
-  0x8acd, 0x121f,
-  0x8acf, 0x2a42,
-  0x8ad1, 0x2a46,
-  0x8ad2, 0x1213,
-  0x8ad3, 0x2a45,
-  0x8ad4, 0x2a47,
-  0x8ad6, 0x121e,
-  0x8ad7, 0x2a4a,
-  0x8ad8, 0x2a4e,
-  0x8ad9, 0x2a52,
-  0x8ada, 0x39c2,
-  0x8adb, 0x1222,
-  0x8adc, 0x1352,
-  0x8add, 0x2c8a,
-  0x8ade, 0x2c90,
-  0x8adf, 0x2c8d,
-  0x8ae0, 0x2c85,
-  0x8ae1, 0x2c91,
-  0x8ae2, 0x2c86,
-  0x8ae4, 0x2c8c,
-  0x8ae6, 0x134d,
-  0x8ae7, 0x1353,
-  0x8ae8, 0x2c92,
-  0x8aea, 0x3dd9,
-  0x8aeb, 0x134f,
-  0x8aed, 0x1359,
-  0x8aee, 0x1354,
-  0x8aef, 0x2c94,
-  0x8af0, 0x2c8e,
-  0x8af1, 0x1350,
-  0x8af2, 0x2c87,
-  0x8af3, 0x135a,
-  0x8af4, 0x2c88,
-  0x8af6, 0x135b,
-  0x8af7, 0x1358,
-  0x8af8, 0x1218,
-  0x8afa, 0x134e,
-  0x8afb, 0x2c95,
-  0x8afc, 0x135c,
-  0x8afe, 0x1355,
-  0x8aff, 0x2c93,
-  0x8b00, 0x1351,
-  0x8b01, 0x1356,
-  0x8b04, 0x147e,
-  0x8b05, 0x2e5f,
-  0x8b06, 0x2e68,
-  0x8b07, 0x2e65,
-  0x8b08, 0x2e67,
-  0x8b0a, 0x147b,
-  0x8b0b, 0x2e60,
-  0x8b0c, 0x3836,
-  0x8b0d, 0x2e66,
-  0x8b0e, 0x1477,
-  0x8b0f, 0x2e62,
-  0x8b10, 0x147f,
-  0x8b11, 0x2e5e,
-  0x8b12, 0x2e63,
-  0x8b13, 0x2e6a,
-  0x8b14, 0x2c8b,
-  0x8b15, 0x2e64,
-  0x8b16, 0x2e5d,
-  0x8b17, 0x1478,
-  0x8b18, 0x2e5c,
-  0x8b19, 0x1479,
-  0x8b1a, 0x2e6b,
-  0x8b1b, 0x147a,
-  0x8b1c, 0x2e69,
-  0x8b1d, 0x147d,
-  0x8b1e, 0x2e5b,
-  0x8b1f, 0x3837,
-  0x8b20, 0x147c,
-  0x8b22, 0x2e61,
-  0x8b23, 0x2fce,
-  0x8b24, 0x2fdc,
-  0x8b25, 0x2fd7,
-  0x8b26, 0x2fd9,
-  0x8b27, 0x2fcd,
-  0x8b28, 0x152a,
-  0x8b2a, 0x2fcc,
-  0x8b2b, 0x152d,
-  0x8b2c, 0x152c,
-  0x8b2d, 0x3f99,
-  0x8b2e, 0x2fdb,
-  0x8b2f, 0x2fd3,
-  0x8b30, 0x2fd0,
-  0x8b31, 0x2fd6,
-  0x8b33, 0x2fcf,
-  0x8b35, 0x2fd1,
-  0x8b36, 0x2fda,
-  0x8b37, 0x2fd8,
-  0x8b39, 0x152b,
-  0x8b3a, 0x2fdf,
-  0x8b3b, 0x2fdd,
-  0x8b3c, 0x2fd4,
-  0x8b3d, 0x2fde,
-  0x8b3e, 0x2fd5,
-  0x8b3f, 0x383a,
-  0x8b40, 0x3125,
-  0x8b41, 0x15c4,
-  0x8b42, 0x312c,
-  0x8b43, 0x3ff2,
-  0x8b45, 0x3313,
-  0x8b46, 0x15cb,
-  0x8b47, 0x2fd2,
-  0x8b48, 0x3123,
-  0x8b49, 0x15c7,
-  0x8b4a, 0x3124,
-  0x8b4b, 0x3129,
-  0x8b4c, 0x383b,
-  0x8b4e, 0x15c9,
-  0x8b50, 0x3122,
-  0x8b51, 0x312b,
-  0x8b52, 0x312d,
-  0x8b53, 0x3126,
-  0x8b54, 0x3128,
-  0x8b55, 0x312a,
-  0x8b56, 0x3127,
-  0x8b57, 0x312e,
-  0x8b58, 0x15c6,
-  0x8b59, 0x15cc,
-  0x8b5a, 0x15c8,
-  0x8b5c, 0x15c5,
-  0x8b5d, 0x3237,
-  0x8b5e, 0x3db8,
-  0x8b5f, 0x1648,
-  0x8b60, 0x3235,
-  0x8b62, 0x3dd4,
-  0x8b63, 0x3239,
-  0x8b65, 0x323a,
-  0x8b66, 0x1646,
-  0x8b67, 0x323b,
-  0x8b68, 0x3238,
-  0x8b69, 0x3bf7,
-  0x8b6a, 0x3236,
-  0x8b6b, 0x1649,
-  0x8b6c, 0x1645,
-  0x8b6d, 0x323c,
-  0x8b6f, 0x1647,
-  0x8b70, 0x1644,
-  0x8b74, 0x168f,
-  0x8b77, 0x1690,
-  0x8b78, 0x3312,
-  0x8b79, 0x3311,
-  0x8b7a, 0x3314,
-  0x8b7d, 0x1691,
-  0x8b7e, 0x33b6,
-  0x8b7f, 0x33bb,
-  0x8b80, 0x16d8,
-  0x8b81, 0x3d8d,
-  0x8b82, 0x33b8,
-  0x8b84, 0x33b7,
-  0x8b85, 0x33ba,
-  0x8b86, 0x33b9,
-  0x8b88, 0x3440,
-  0x8b8a, 0x170a,
-  0x8b8b, 0x343f,
-  0x8b8c, 0x343d,
-  0x8b8e, 0x343e,
-  0x8b90, 0x383f,
-  0x8b92, 0x172c,
-  0x8b93, 0x172b,
-  0x8b94, 0x349c,
-  0x8b96, 0x172d,
-  0x8b98, 0x34e7,
-  0x8b9a, 0x1754,
-  0x8b9b, 0x3840,
-  0x8b9c, 0x175a,
-  0x8b9e, 0x3522,
-  0x8b9f, 0x353f,
-  0x8ba0, 0x4505,
-  0x8bbe, 0x4567,
-  0x8be2, 0x4568,
-  0x8c37, 0x050b,
-  0x8c39, 0x206b,
-  0x8c3b, 0x206c,
-  0x8c3c, 0x2597,
-  0x8c3d, 0x2809,
-  0x8c3e, 0x2a53,
-  0x8c3f, 0x1481,
-  0x8c41, 0x1480,
-  0x8c42, 0x2fe0,
-  0x8c43, 0x312f,
-  0x8c45, 0x3441,
-  0x8c46, 0x050c,
-  0x8c47, 0x1e09,
-  0x8c48, 0x09c9,
-  0x8c49, 0x0ba7,
-  0x8c4a, 0x2599,
-  0x8c4b, 0x2598,
-  0x8c4c, 0x1223,
-  0x8c4d, 0x2a54,
-  0x8c4e, 0x1224,
-  0x8c4f, 0x2e6c,
-  0x8c50, 0x152e,
-  0x8c51, 0x477d,
-  0x8c54, 0x1763,
-  0x8c55, 0x050d,
-  0x8c56, 0x1a48,
-  0x8c57, 0x1e0a,
-  0x8c5a, 0x0ba8,
-  0x8c5c, 0x206d,
-  0x8c5f, 0x22f8,
-  0x8c61, 0x0d65,
-  0x8c62, 0x0f1b,
-  0x8c64, 0x259b,
-  0x8c65, 0x259a,
-  0x8c66, 0x259c,
-  0x8c68, 0x280a,
-  0x8c6a, 0x10b4,
-  0x8c6b, 0x135d,
-  0x8c6c, 0x1225,
-  0x8c6d, 0x135e,
-  0x8c6f, 0x2e70,
-  0x8c70, 0x2e6d,
-  0x8c71, 0x2e6f,
-  0x8c72, 0x2e6e,
-  0x8c73, 0x1482,
-  0x8c75, 0x2fe1,
-  0x8c76, 0x3131,
-  0x8c77, 0x3130,
-  0x8c78, 0x18e7,
-  0x8c79, 0x09cb,
-  0x8c7a, 0x09ca,
-  0x8c7b, 0x1e0b,
-  0x8c7d, 0x206f,
-  0x8c80, 0x22fa,
-  0x8c81, 0x22f9,
-  0x8c82, 0x0d66,
-  0x8c84, 0x259e,
-  0x8c86, 0x259d,
-  0x8c89, 0x0f1d,
-  0x8c8a, 0x0f1c,
-  0x8c8c, 0x10b6,
-  0x8c8d, 0x10b5,
-  0x8c8f, 0x2a55,
-  0x8c90, 0x2c98,
-  0x8c91, 0x2c96,
-  0x8c93, 0x135f,
-  0x8c94, 0x2e72,
-  0x8c95, 0x2e71,
-  0x8c97, 0x2fe4,
-  0x8c98, 0x2fe3,
-  0x8c99, 0x2fe2,
-  0x8c9a, 0x3132,
-  0x8c9b, 0x3845,
-  0x8c9c, 0x3523,
-  0x8c9d, 0x050e,
-  0x8c9e, 0x080a,
-  0x8c9f, 0x3bad,
-  0x8ca0, 0x080b,
-  0x8ca1, 0x09cc,
-  0x8ca3, 0x1e0d,
-  0x8ca4, 0x1e0c,
-  0x8ca5, 0x2070,
-  0x8ca7, 0x0bae,
-  0x8ca8, 0x0bac,
-  0x8ca9, 0x0ba9,
-  0x8caa, 0x0bad,
-  0x8cab, 0x0bab,
-  0x8cac, 0x0baa,
-  0x8cad, 0x3ff1,
-  0x8caf, 0x0d67,
-  0x8cb0, 0x22fd,
-  0x8cb2, 0x0f22,
-  0x8cb3, 0x0d69,
-  0x8cb4, 0x0d6e,
-  0x8cb5, 0x22ff,
-  0x8cb6, 0x0d70,
-  0x8cb7, 0x0d6f,
-  0x8cb8, 0x0d72,
-  0x8cb9, 0x22fe,
-  0x8cba, 0x22fb,
-  0x8cbb, 0x0d6c,
-  0x8cbc, 0x0d68,
-  0x8cbd, 0x0d6a,
-  0x8cbe, 0x22fc,
-  0x8cbf, 0x0d71,
-  0x8cc0, 0x0d6d,
-  0x8cc1, 0x0d6b,
-  0x8cc2, 0x0f24,
-  0x8cc3, 0x0f23,
-  0x8cc4, 0x0f21,
-  0x8cc5, 0x0f25,
-  0x8cc7, 0x0f1f,
-  0x8cca, 0x0f1e,
-  0x8ccc, 0x25a0,
-  0x8ccd, 0x3e99,
-  0x8ccf, 0x280d,
-  0x8cd1, 0x10b8,
-  0x8cd3, 0x10b7,
-  0x8cd4, 0x477e,
-  0x8cd5, 0x280c,
-  0x8cd6, 0x384b,
-  0x8cd7, 0x280e,
-  0x8cd9, 0x2a58,
-  0x8cda, 0x2a5a,
-  0x8cdb, 0x3851,
-  0x8cdc, 0x122e,
-  0x8cdd, 0x2a5b,
-  0x8cde, 0x1227,
-  0x8cdf, 0x2a57,
-  0x8ce0, 0x1226,
-  0x8ce1, 0x1230,
-  0x8ce2, 0x122c,
-  0x8ce4, 0x1229,
-  0x8ce5, 0x2a56,
-  0x8ce6, 0x1228,
-  0x8ce7, 0x2a5c,
-  0x8ce8, 0x2a59,
-  0x8ce9, 0x3bae,
-  0x8cea, 0x122f,
-  0x8ceb, 0x3f9c,
-  0x8cec, 0x122a,
-  0x8cee, 0x2c9a,
-  0x8cf0, 0x2c9c,
-  0x8cf1, 0x2c9b,
-  0x8cf2, 0x477f,
-  0x8cf3, 0x2c9d,
-  0x8cf4, 0x1360,
-  0x8cf5, 0x2c99,
-  0x8cf7, 0x3fb1,
-  0x8cf8, 0x1486,
-  0x8cf9, 0x2e73,
-  0x8cfa, 0x1483,
-  0x8cfb, 0x1487,
-  0x8cfc, 0x1485,
-  0x8cfd, 0x1484,
-  0x8cfe, 0x2fe5,
-  0x8d00, 0x2fe8,
-  0x8d02, 0x2fe7,
-  0x8d03, 0x384f,
-  0x8d04, 0x2fe6,
-  0x8d05, 0x152f,
-  0x8d06, 0x3133,
-  0x8d08, 0x15cd,
-  0x8d09, 0x3135,
-  0x8d0a, 0x15ce,
-  0x8d0b, 0x4573,
-  0x8d0c, 0x3f96,
-  0x8d0d, 0x164b,
-  0x8d0f, 0x164a,
-  0x8d10, 0x3316,
-  0x8d11, 0x3853,
-  0x8d12, 0x384e,
-  0x8d13, 0x1692,
-  0x8d14, 0x3317,
-  0x8d15, 0x33bc,
-  0x8d16, 0x16d9,
-  0x8d18, 0x3e6f,
-  0x8d19, 0x3442,
-  0x8d1b, 0x172f,
-  0x8d1c, 0x4780,
-  0x8d1d, 0x4506,
-  0x8d64, 0x050f,
-  0x8d66, 0x0bb0,
-  0x8d67, 0x0baf,
-  0x8d68, 0x25a1,
-  0x8d6b, 0x10ba,
-  0x8d6c, 0x2c9e,
-  0x8d6d, 0x1231,
-  0x8d6e, 0x2c9f,
-  0x8d6f, 0x2e74,
-  0x8d70, 0x0510,
-  0x8d72, 0x1c06,
-  0x8d73, 0x080d,
-  0x8d74, 0x080c,
-  0x8d76, 0x1e0e,
-  0x8d77, 0x09ce,
-  0x8d78, 0x1e0f,
-  0x8d79, 0x2073,
-  0x8d7a, 0x39e1,
-  0x8d7b, 0x2072,
-  0x8d7d, 0x2071,
-  0x8d80, 0x2301,
-  0x8d81, 0x0d75,
-  0x8d82, 0x3f69,
-  0x8d84, 0x2300,
-  0x8d85, 0x0d74,
-  0x8d89, 0x2302,
-  0x8d8a, 0x0d73,
-  0x8d8c, 0x25a4,
-  0x8d8d, 0x25a7,
-  0x8d8e, 0x25a5,
-  0x8d90, 0x25aa,
-  0x8d91, 0x25a3,
-  0x8d92, 0x25ab,
-  0x8d93, 0x25a8,
-  0x8d95, 0x10bc,
-  0x8d96, 0x280f,
-  0x8d99, 0x10bb,
-  0x8d9b, 0x2a60,
-  0x8d9c, 0x2a5e,
-  0x8d9f, 0x1232,
-  0x8da0, 0x2a5d,
-  0x8da1, 0x2a5f,
-  0x8da3, 0x1233,
-  0x8da5, 0x2ca0,
-  0x8da6, 0x3ff7,
-  0x8da7, 0x2ca1,
-  0x8da8, 0x1488,
-  0x8da9, 0x3856,
-  0x8daa, 0x3137,
-  0x8dab, 0x3139,
-  0x8dac, 0x3136,
-  0x8dad, 0x3138,
-  0x8dae, 0x323d,
-  0x8daf, 0x3318,
-  0x8db2, 0x3509,
-  0x8db3, 0x0511,
-  0x8db4, 0x080e,
-  0x8db5, 0x1e10,
-  0x8db6, 0x1e12,
-  0x8db7, 0x1e11,
-  0x8db9, 0x2076,
-  0x8dba, 0x0bb2,
-  0x8dbc, 0x2074,
-  0x8dbe, 0x0bb1,
-  0x8dbf, 0x2077,
-  0x8dc0, 0x436a,
-  0x8dc1, 0x2078,
-  0x8dc2, 0x2075,
-  0x8dc3, 0x4782,
-  0x8dc5, 0x230e,
-  0x8dc6, 0x0d7d,
-  0x8dc7, 0x2306,
-  0x8dc8, 0x230c,
-  0x8dcb, 0x0d78,
-  0x8dcc, 0x0d7b,
-  0x8dcd, 0x2305,
-  0x8dce, 0x0d76,
-  0x8dcf, 0x2309,
-  0x8dd0, 0x25b1,
-  0x8dd1, 0x0d7a,
-  0x8dd3, 0x2304,
-  0x8dd4, 0x3f82,
-  0x8dd5, 0x230a,
-  0x8dd6, 0x2307,
-  0x8dd7, 0x230d,
-  0x8dd8, 0x2303,
-  0x8dd9, 0x230b,
-  0x8dda, 0x0d79,
-  0x8ddb, 0x0d7c,
-  0x8ddc, 0x2308,
-  0x8ddd, 0x0d77,
-  0x8ddf, 0x0f27,
-  0x8de0, 0x25ad,
-  0x8de1, 0x0f26,
-  0x8de2, 0x25b4,
-  0x8de3, 0x25b3,
-  0x8de4, 0x0f2d,
-  0x8de6, 0x0f2e,
-  0x8de7, 0x25b5,
-  0x8de8, 0x0f28,
-  0x8de9, 0x25b2,
-  0x8dea, 0x0f2c,
-  0x8deb, 0x25b7,
-  0x8dec, 0x25ae,
-  0x8dee, 0x25b0,
-  0x8def, 0x0f29,
-  0x8df0, 0x25ac,
-  0x8df1, 0x25af,
-  0x8df2, 0x25b6,
-  0x8df3, 0x0f2a,
-  0x8df4, 0x25b8,
-  0x8dfa, 0x0f2b,
-  0x8dfc, 0x10bd,
-  0x8dfd, 0x2814,
-  0x8dfe, 0x281a,
-  0x8dff, 0x2812,
-  0x8e00, 0x281b,
-  0x8e01, 0x3f85,
-  0x8e02, 0x2811,
-  0x8e03, 0x2816,
-  0x8e04, 0x281c,
-  0x8e05, 0x2819,
-  0x8e06, 0x2818,
-  0x8e07, 0x2817,
-  0x8e09, 0x2810,
-  0x8e0a, 0x2815,
-  0x8e0d, 0x2813,
-  0x8e0e, 0x3e5e,
-  0x8e0f, 0x1238,
-  0x8e10, 0x1235,
-  0x8e11, 0x2a69,
-  0x8e12, 0x2a6e,
-  0x8e13, 0x2a70,
-  0x8e14, 0x2a6d,
-  0x8e15, 0x2a66,
-  0x8e16, 0x2a68,
-  0x8e17, 0x2a72,
-  0x8e18, 0x2a6f,
-  0x8e19, 0x2a6a,
-  0x8e1a, 0x2a73,
-  0x8e1b, 0x2a67,
-  0x8e1c, 0x2a71,
-  0x8e1d, 0x1236,
-  0x8e1e, 0x123c,
-  0x8e1f, 0x123a,
-  0x8e20, 0x2a61,
-  0x8e21, 0x123b,
-  0x8e22, 0x1237,
-  0x8e23, 0x2a62,
-  0x8e24, 0x2a64,
-  0x8e25, 0x2a63,
-  0x8e26, 0x2a6b,
-  0x8e28, 0x3f88,
-  0x8e29, 0x1239,
-  0x8e2a, 0x3bb4,
-  0x8e2b, 0x1234,
-  0x8e2d, 0x3eab,
-  0x8e2e, 0x2a65,
-  0x8e30, 0x2cab,
-  0x8e31, 0x1362,
-  0x8e33, 0x2ca2,
-  0x8e34, 0x1363,
-  0x8e35, 0x1366,
-  0x8e36, 0x2ca7,
-  0x8e38, 0x2ca4,
-  0x8e39, 0x1365,
-  0x8e3a, 0x4784,
-  0x8e3c, 0x2ca8,
-  0x8e3e, 0x2ca3,
-  0x8e3f, 0x2cac,
-  0x8e40, 0x2ca5,
-  0x8e41, 0x2caa,
-  0x8e42, 0x1364,
-  0x8e44, 0x1361,
-  0x8e45, 0x2ca6,
-  0x8e46, 0x4312,
-  0x8e47, 0x2e7a,
-  0x8e48, 0x148b,
-  0x8e49, 0x1489,
-  0x8e4a, 0x148c,
-  0x8e4b, 0x148a,
-  0x8e4c, 0x2e79,
-  0x8e4d, 0x2e76,
-  0x8e4e, 0x2e75,
-  0x8e4f, 0x3f83,
-  0x8e50, 0x2e78,
-  0x8e53, 0x2e77,
-  0x8e54, 0x2ff6,
-  0x8e55, 0x1535,
-  0x8e56, 0x2fed,
-  0x8e57, 0x2fec,
-  0x8e59, 0x1530,
-  0x8e5a, 0x2ff2,
-  0x8e5b, 0x2ff1,
-  0x8e5c, 0x2fe9,
-  0x8e5d, 0x2ff4,
-  0x8e5e, 0x2fee,
-  0x8e5f, 0x1534,
-  0x8e60, 0x2feb,
-  0x8e61, 0x2ff3,
-  0x8e62, 0x2fea,
-  0x8e63, 0x1531,
-  0x8e64, 0x1533,
-  0x8e65, 0x2fef,
-  0x8e66, 0x1532,
-  0x8e67, 0x2ff0,
-  0x8e68, 0x434d,
-  0x8e69, 0x2ff5,
-  0x8e6a, 0x313d,
-  0x8e6c, 0x15d3,
-  0x8e6d, 0x313a,
-  0x8e6f, 0x313e,
-  0x8e71, 0x43e7,
-  0x8e72, 0x15d0,
-  0x8e73, 0x313c,
-  0x8e74, 0x15d5,
-  0x8e75, 0x3f89,
-  0x8e76, 0x15d2,
-  0x8e77, 0x3f7f,
-  0x8e78, 0x313b,
-  0x8e7a, 0x15d4,
-  0x8e7b, 0x313f,
-  0x8e7c, 0x15cf,
-  0x8e7e, 0x4324,
-  0x8e80, 0x3e57,
-  0x8e81, 0x164d,
-  0x8e82, 0x164f,
-  0x8e84, 0x3240,
-  0x8e85, 0x164e,
-  0x8e86, 0x323e,
-  0x8e87, 0x15d1,
-  0x8e88, 0x323f,
-  0x8e89, 0x164c,
-  0x8e8a, 0x1693,
-  0x8e8b, 0x1695,
-  0x8e8c, 0x331a,
-  0x8e8d, 0x1694,
-  0x8e8e, 0x3319,
-  0x8e90, 0x33c1,
-  0x8e91, 0x16db,
-  0x8e92, 0x33c0,
-  0x8e93, 0x16dc,
-  0x8e94, 0x33be,
-  0x8e95, 0x33bd,
-  0x8e96, 0x33c2,
-  0x8e98, 0x3443,
-  0x8e9a, 0x33bf,
-  0x8e9d, 0x34a1,
-  0x8e9e, 0x349e,
-  0x8ea1, 0x1749,
-  0x8ea3, 0x34eb,
-  0x8ea4, 0x34ea,
-  0x8ea5, 0x34e9,
-  0x8ea6, 0x350a,
-  0x8ea7, 0x3bb5,
-  0x8ea8, 0x3537,
-  0x8ea9, 0x3524,
-  0x8eaa, 0x175b,
-  0x8eab, 0x0512,
-  0x8eac, 0x09cf,
-  0x8ead, 0x385e,
-  0x8eb0, 0x43e9,
-  0x8eb2, 0x0f2f,
-  0x8eb6, 0x385f,
-  0x8eba, 0x123d,
-  0x8ebc, 0x38a0,
-  0x8ebd, 0x2cad,
-  0x8ec0, 0x1536,
-  0x8ec2, 0x3140,
-  0x8ec3, 0x3860,
-  0x8ec9, 0x3525,
-  0x8eca, 0x0513,
-  0x8ecb, 0x068d,
-  0x8ecc, 0x0810,
-  0x8ecd, 0x080f,
-  0x8ece, 0x4788,
-  0x8ecf, 0x09d2,
-  0x8ed1, 0x1e13,
-  0x8ed2, 0x09d0,
-  0x8ed3, 0x1e14,
-  0x8ed4, 0x09d1,
-  0x8ed7, 0x207d,
-  0x8ed8, 0x2079,
-  0x8eda, 0x3dbe,
-  0x8edb, 0x0bb3,
-  0x8edc, 0x207c,
-  0x8edd, 0x207b,
-  0x8ede, 0x207a,
-  0x8edf, 0x0bb4,
-  0x8ee0, 0x207e,
-  0x8ee2, 0x4789,
-  0x8ee4, 0x478a,
-  0x8ee5, 0x2315,
-  0x8ee6, 0x2313,
-  0x8ee7, 0x2317,
-  0x8ee9, 0x231e,
-  0x8eeb, 0x231a,
-  0x8eec, 0x231c,
-  0x8eed, 0x478b,
-  0x8eee, 0x2314,
-  0x8eef, 0x230f,
-  0x8ef1, 0x231b,
-  0x8ef2, 0x478c,
-  0x8ef4, 0x231d,
-  0x8ef5, 0x2316,
-  0x8ef6, 0x2319,
-  0x8ef7, 0x2310,
-  0x8ef8, 0x0d7f,
-  0x8ef9, 0x2312,
-  0x8efa, 0x2311,
-  0x8efb, 0x0d7e,
-  0x8efc, 0x0d80,
-  0x8efe, 0x0f32,
-  0x8eff, 0x25ba,
-  0x8f00, 0x25bc,
-  0x8f01, 0x25bb,
-  0x8f02, 0x25c0,
-  0x8f03, 0x0f30,
-  0x8f05, 0x25bd,
-  0x8f06, 0x25b9,
-  0x8f07, 0x25be,
-  0x8f09, 0x0f31,
-  0x8f0a, 0x0f33,
-  0x8f0b, 0x25c1,
-  0x8f0d, 0x2820,
-  0x8f0e, 0x281f,
-  0x8f10, 0x281d,
-  0x8f12, 0x10bf,
-  0x8f13, 0x10c1,
-  0x8f14, 0x10be,
-  0x8f15, 0x10c0,
-  0x8f16, 0x2a7a,
-  0x8f18, 0x2a76,
-  0x8f19, 0x3862,
-  0x8f1a, 0x2a77,
-  0x8f1b, 0x123f,
-  0x8f1c, 0x1244,
-  0x8f1d, 0x123e,
-  0x8f1e, 0x1245,
-  0x8f1f, 0x1240,
-  0x8f20, 0x2a78,
-  0x8f23, 0x2a79,
-  0x8f24, 0x2a75,
-  0x8f25, 0x1246,
-  0x8f26, 0x1242,
-  0x8f29, 0x1241,
-  0x8f2a, 0x1243,
-  0x8f2c, 0x2a74,
-  0x8f2d, 0x3863,
-  0x8f2e, 0x2caf,
-  0x8f2f, 0x1368,
-  0x8f30, 0x3bb7,
-  0x8f32, 0x2cb1,
-  0x8f33, 0x136a,
-  0x8f34, 0x2cb4,
-  0x8f35, 0x2cb0,
-  0x8f36, 0x2cae,
-  0x8f37, 0x2cb3,
-  0x8f38, 0x1369,
-  0x8f39, 0x2cb2,
-  0x8f3b, 0x1367,
-  0x8f3e, 0x148e,
-  0x8f3f, 0x1491,
-  0x8f40, 0x2e7c,
-  0x8f41, 0x3d07,
-  0x8f42, 0x148f,
-  0x8f43, 0x2e7b,
-  0x8f44, 0x148d,
-  0x8f45, 0x1490,
-  0x8f46, 0x2ff7,
-  0x8f49, 0x1537,
-  0x8f4a, 0x3bb8,
-  0x8f4b, 0x2ffa,
-  0x8f4d, 0x1538,
-  0x8f4e, 0x15d7,
-  0x8f4f, 0x3143,
-  0x8f51, 0x3142,
-  0x8f52, 0x3141,
-  0x8f53, 0x3145,
-  0x8f54, 0x15d6,
-  0x8f55, 0x3244,
-  0x8f56, 0x3242,
-  0x8f58, 0x3245,
-  0x8f59, 0x3241,
-  0x8f5a, 0x3246,
-  0x8f5b, 0x331c,
-  0x8f5c, 0x3f31,
-  0x8f5d, 0x331d,
-  0x8f5e, 0x331b,
-  0x8f5f, 0x1696,
-  0x8f60, 0x33c4,
-  0x8f61, 0x16dd,
-  0x8f62, 0x33c5,
-  0x8f63, 0x3445,
-  0x8f64, 0x3444,
-  0x8f66, 0x4569,
-  0x8f6e, 0x456b,
-  0x8f93, 0x4732,
-  0x8f9b, 0x0514,
-  0x8f9c, 0x0d81,
-  0x8f9f, 0x0f34,
-  0x8fa0, 0x3d94,
-  0x8fa3, 0x10c2,
-  0x8fa5, 0x3866,
-  0x8fa6, 0x136c,
-  0x8fa8, 0x136b,
-  0x8fad, 0x15d8,
-  0x8fae, 0x162f,
-  0x8faf, 0x1697,
-  0x8fb0, 0x0515,
-  0x8fb1, 0x09d3,
-  0x8fb2, 0x0f35,
-  0x8fb3, 0x386a,
-  0x8fb4, 0x3146,
-  0x8fb5, 0x0230,
-  0x8fb6, 0x47d3,
-  0x8fb7, 0x43fd,
-  0x8fb8, 0x42f6,
-  0x8fb9, 0x48c9,
-  0x8fba, 0x48c7,
-  0x8fbb, 0x3d6b,
-  0x8fbe, 0x48c6,
-  0x8fbf, 0x18e9,
-  0x8fc1, 0x478d,
-  0x8fc2, 0x0516,
-  0x8fc4, 0x0519,
-  0x8fc5, 0x0518,
-  0x8fc6, 0x0517,
-  0x8fc9, 0x18e8,
-  0x8fca, 0x478e,
-  0x8fcb, 0x1a4a,
-  0x8fcc, 0x478f,
-  0x8fcd, 0x1a4c,
-  0x8fce, 0x068e,
-  0x8fd0, 0x48ae,
-  0x8fd1, 0x0690,
-  0x8fd2, 0x1a49,
-  0x8fd3, 0x1a4b,
-  0x8fd4, 0x068f,
-  0x8fd5, 0x1a4e,
-  0x8fd6, 0x1a4d,
-  0x8fd7, 0x1a4f,
-  0x8fda, 0x3fcb,
-  0x8fe0, 0x1c0a,
-  0x8fe1, 0x1c08,
-  0x8fe2, 0x0813,
-  0x8fe3, 0x1c07,
-  0x8fe4, 0x0818,
-  0x8fe5, 0x0815,
-  0x8fe6, 0x0812,
-  0x8fe8, 0x0819,
-  0x8fea, 0x0814,
-  0x8feb, 0x0817,
-  0x8fed, 0x0816,
-  0x8fee, 0x1c09,
-  0x8ff0, 0x0811,
-  0x8ff4, 0x09d9,
-  0x8ff5, 0x1e16,
-  0x8ff6, 0x1e1c,
-  0x8ff7, 0x09d6,
-  0x8ff8, 0x09dd,
-  0x8ff9, 0x3871,
-  0x8ffa, 0x09d8,
-  0x8ffb, 0x1e19,
-  0x8ffc, 0x1e1b,
-  0x8ffd, 0x09db,
-  0x8ffe, 0x1e15,
-  0x8fff, 0x1e18,
-  0x9000, 0x09d7,
-  0x9001, 0x09d4,
-  0x9002, 0x1e17,
-  0x9003, 0x09da,
-  0x9004, 0x1e1a,
-  0x9005, 0x09dc,
-  0x9006, 0x09d5,
-  0x9008, 0x3ee0,
-  0x900b, 0x2081,
-  0x900c, 0x2084,
-  0x900d, 0x0bb6,
-  0x900f, 0x0bc0,
-  0x9010, 0x0bbc,
-  0x9011, 0x2082,
-  0x9012, 0x3e4e,
-  0x9014, 0x0bc4,
-  0x9015, 0x0bbd,
-  0x9016, 0x0bc2,
-  0x9017, 0x0bb8,
-  0x9019, 0x0bb5,
-  0x901a, 0x0bb7,
-  0x901b, 0x0bc3,
-  0x901c, 0x2083,
-  0x901d, 0x0bbb,
-  0x901e, 0x0bbe,
-  0x901f, 0x0bba,
-  0x9020, 0x0bbf,
-  0x9021, 0x2085,
-  0x9022, 0x0bc1,
-  0x9023, 0x0bb9,
-  0x9024, 0x2080,
-  0x902d, 0x231f,
-  0x902e, 0x0d82,
-  0x902f, 0x2321,
-  0x9031, 0x0d84,
-  0x9032, 0x0d86,
-  0x9033, 0x4790,
-  0x9034, 0x2320,
-  0x9035, 0x0d83,
-  0x9036, 0x0d87,
-  0x9037, 0x3876,
-  0x9038, 0x0d85,
-  0x903c, 0x0f3b,
-  0x903d, 0x25c6,
-  0x903e, 0x0f43,
-  0x903f, 0x25c3,
-  0x9041, 0x0f44,
-  0x9042, 0x0f39,
-  0x9044, 0x25c4,
-  0x9047, 0x0f3e,
-  0x9049, 0x25c5,
-  0x904a, 0x0f37,
-  0x904b, 0x0f36,
-  0x904c, 0x3f10,
-  0x904d, 0x0f41,
-  0x904e, 0x0f40,
-  0x904f, 0x0f3f,
-  0x9050, 0x0f3d,
-  0x9051, 0x0f42,
-  0x9052, 0x25c2,
-  0x9053, 0x0f38,
-  0x9054, 0x0f3a,
-  0x9055, 0x0f3c,
-  0x9056, 0x3dd2,
-  0x9058, 0x10c4,
-  0x9059, 0x10c7,
-  0x905b, 0x10cb,
-  0x905c, 0x10c5,
-  0x905d, 0x10ca,
-  0x905e, 0x10c8,
-  0x9060, 0x10c3,
-  0x9061, 0x3879,
-  0x9062, 0x10c9,
-  0x9063, 0x10c6,
-  0x9064, 0x3c68,
-  0x9067, 0x2a7f,
-  0x9068, 0x1249,
-  0x9069, 0x1247,
-  0x906b, 0x2a80,
-  0x906c, 0x3d60,
-  0x906d, 0x124a,
-  0x906e, 0x1248,
-  0x906f, 0x2a7e,
-  0x9070, 0x2a7d,
-  0x9072, 0x1370,
-  0x9073, 0x2a7c,
-  0x9074, 0x136e,
-  0x9075, 0x136d,
-  0x9076, 0x2cb5,
-  0x9077, 0x124b,
-  0x9078, 0x136f,
-  0x9079, 0x2cb6,
-  0x907a, 0x1372,
-  0x907b, 0x2cb7,
-  0x907c, 0x1371,
-  0x907d, 0x1493,
-  0x907e, 0x2e7e,
-  0x907f, 0x1492,
-  0x9080, 0x1497,
-  0x9081, 0x1495,
-  0x9083, 0x153a,
-  0x9084, 0x1494,
-  0x9085, 0x2e7d,
-  0x9086, 0x2cb8,
-  0x9087, 0x1539,
-  0x9088, 0x153b,
-  0x908a, 0x15d9,
-  0x908d, 0x3247,
-  0x908f, 0x170c,
-  0x9090, 0x170b,
-  0x9091, 0x051b,
-  0x9094, 0x181e,
-  0x9095, 0x09de,
-  0x9097, 0x181b,
-  0x9099, 0x181a,
-  0x909b, 0x181d,
-  0x909e, 0x18ed,
-  0x909f, 0x18ea,
-  0x90a0, 0x18ef,
-  0x90a1, 0x18eb,
-  0x90a2, 0x051c,
-  0x90a3, 0x051f,
-  0x90a5, 0x18ec,
-  0x90a6, 0x051e,
-  0x90a7, 0x18ee,
-  0x90a8, 0x387c,
-  0x90aa, 0x051d,
-  0x90ae, 0x3880,
-  0x90af, 0x1a52,
-  0x90b0, 0x1a54,
-  0x90b1, 0x0693,
-  0x90b2, 0x1a50,
-  0x90b3, 0x1a53,
-  0x90b4, 0x1a51,
-  0x90b5, 0x0691,
-  0x90b6, 0x0694,
-  0x90b8, 0x0692,
-  0x90bb, 0x3bc4,
-  0x90bd, 0x1c0c,
-  0x90be, 0x1c10,
-  0x90bf, 0x1c0d,
-  0x90c1, 0x081c,
-  0x90c3, 0x081d,
-  0x90c4, 0x387e,
-  0x90c5, 0x1c0f,
-  0x90c7, 0x1c11,
-  0x90c8, 0x1c13,
-  0x90ca, 0x081a,
-  0x90cb, 0x1c12,
-  0x90ce, 0x081b,
-  0x90d4, 0x208c,
-  0x90d5, 0x1c0e,
-  0x90d6, 0x1e1d,
-  0x90d7, 0x1e26,
-  0x90d8, 0x1e24,
-  0x90d9, 0x1e1f,
-  0x90db, 0x1e25,
-  0x90dc, 0x1e27,
-  0x90dd, 0x09e0,
-  0x90df, 0x1e22,
-  0x90e0, 0x1e1e,
-  0x90e1, 0x09df,
-  0x90e2, 0x09e1,
-  0x90e3, 0x1e21,
-  0x90e4, 0x1e28,
-  0x90e5, 0x1e23,
-  0x90e8, 0x0bc5,
-  0x90e9, 0x208f,
-  0x90ea, 0x2087,
-  0x90eb, 0x208d,
-  0x90ed, 0x0bc6,
-  0x90ef, 0x2086,
-  0x90f0, 0x2088,
-  0x90f1, 0x1c0b,
-  0x90f2, 0x208a,
-  0x90f4, 0x2089,
-  0x90f5, 0x0d89,
-  0x90f9, 0x2328,
-  0x90fa, 0x2cb9,
-  0x90fb, 0x2329,
-  0x90fc, 0x2326,
-  0x90fd, 0x0bc7,
-  0x90fe, 0x0d8b,
-  0x90ff, 0x2325,
-  0x9100, 0x232b,
-  0x9101, 0x232a,
-  0x9102, 0x0d88,
-  0x9103, 0x232e,
-  0x9104, 0x2324,
-  0x9105, 0x232d,
-  0x9106, 0x2322,
-  0x9107, 0x232c,
-  0x9108, 0x2327,
-  0x9109, 0x0d8a,
-  0x910b, 0x25cd,
-  0x910d, 0x25c8,
-  0x910e, 0x25ce,
-  0x910f, 0x25c9,
-  0x9110, 0x25c7,
-  0x9111, 0x25ca,
-  0x9112, 0x0f45,
-  0x9114, 0x25cc,
-  0x9116, 0x25cb,
-  0x9117, 0x0f46,
-  0x9118, 0x10cd,
-  0x9119, 0x10cc,
-  0x911a, 0x2827,
-  0x911b, 0x282a,
-  0x911c, 0x2822,
-  0x911d, 0x2826,
-  0x911e, 0x10ce,
-  0x911f, 0x2825,
-  0x9120, 0x2823,
-  0x9121, 0x2829,
-  0x9122, 0x2824,
-  0x9123, 0x2821,
-  0x9124, 0x2828,
-  0x9126, 0x2a86,
-  0x9127, 0x124e,
-  0x9128, 0x2ffb,
-  0x9129, 0x2a83,
-  0x912b, 0x2a82,
-  0x912c, 0x2323,
-  0x912d, 0x124d,
-  0x912e, 0x2a87,
-  0x912f, 0x2a81,
-  0x9130, 0x124c,
-  0x9131, 0x124f,
-  0x9132, 0x2a85,
-  0x9133, 0x2cba,
-  0x9134, 0x1373,
-  0x9135, 0x2cbb,
-  0x9138, 0x2e7f,
-  0x9139, 0x1498,
-  0x913a, 0x2ffc,
-  0x913e, 0x2ffe,
-  0x913f, 0x3148,
-  0x9140, 0x3147,
-  0x9141, 0x3249,
-  0x9143, 0x3248,
-  0x9144, 0x331f,
-  0x9146, 0x331e,
-  0x9147, 0x33c6,
-  0x9148, 0x16de,
-  0x9149, 0x0520,
-  0x914a, 0x081f,
-  0x914b, 0x081e,
-  0x914c, 0x09e4,
-  0x914d, 0x09e3,
-  0x914e, 0x1e2a,
-  0x9150, 0x1e29,
-  0x9151, 0x3f49,
-  0x9152, 0x09e2,
-  0x9153, 0x2093,
-  0x9155, 0x2094,
-  0x9156, 0x2090,
-  0x9157, 0x0bc8,
-  0x9158, 0x2091,
-  0x9159, 0x3f45,
-  0x915a, 0x2092,
-  0x915c, 0x3f47,
-  0x915e, 0x43eb,
-  0x915f, 0x2331,
-  0x9160, 0x2333,
-  0x9161, 0x232f,
-  0x9162, 0x2332,
-  0x9163, 0x0d8c,
-  0x9164, 0x2330,
-  0x9165, 0x0d8d,
-  0x9167, 0x3882,
-  0x9168, 0x23e2,
-  0x9169, 0x0f49,
-  0x916a, 0x0f48,
-  0x916c, 0x0f47,
-  0x916e, 0x25cf,
-  0x9170, 0x3eb8,
-  0x9172, 0x282c,
-  0x9173, 0x282e,
-  0x9174, 0x10d2,
-  0x9175, 0x10cf,
-  0x9176, 0x3e9b,
-  0x9177, 0x10d1,
-  0x9178, 0x10d0,
-  0x9179, 0x282d,
-  0x917a, 0x282b,
-  0x917c, 0x3f6f,
-  0x9180, 0x2a8e,
-  0x9181, 0x2a8b,
-  0x9183, 0x1253,
-  0x9184, 0x2a8d,
-  0x9185, 0x2a88,
-  0x9187, 0x1250,
-  0x9189, 0x1251,
-  0x918a, 0x2a8a,
-  0x918b, 0x1252,
-  0x918c, 0x43ec,
-  0x918d, 0x2cc0,
-  0x918e, 0x3f4e,
-  0x918f, 0x2cc1,
-  0x9190, 0x2cbe,
-  0x9192, 0x1374,
-  0x9193, 0x2cbd,
-  0x9199, 0x2e83,
-  0x919a, 0x2e80,
-  0x919b, 0x2e82,
-  0x919c, 0x149b,
-  0x919d, 0x2e86,
-  0x919e, 0x149a,
-  0x919f, 0x2e84,
-  0x91a0, 0x2e87,
-  0x91a1, 0x2e85,
-  0x91a2, 0x2e81,
-  0x91a3, 0x1499,
-  0x91a5, 0x3000,
-  0x91a7, 0x3001,
-  0x91a8, 0x2fff,
-  0x91a9, 0x3883,
-  0x91aa, 0x3003,
-  0x91ab, 0x153c,
-  0x91ad, 0x314a,
-  0x91ae, 0x15dc,
-  0x91af, 0x3002,
-  0x91b0, 0x3149,
-  0x91b1, 0x15db,
-  0x91b2, 0x324c,
-  0x91b4, 0x1650,
-  0x91b5, 0x324b,
-  0x91b6, 0x45ef,
-  0x91b7, 0x324a,
-  0x91b9, 0x3321,
-  0x91ba, 0x1698,
-  0x91bb, 0x3bc8,
-  0x91bc, 0x3446,
-  0x91bd, 0x34a3,
-  0x91be, 0x34a2,
-  0x91c0, 0x1730,
-  0x91c1, 0x174a,
-  0x91c2, 0x34a4,
-  0x91c3, 0x350b,
-  0x91c4, 0x3884,
-  0x91c5, 0x175c,
-  0x91c6, 0x0521,
-  0x91c7, 0x0695,
-  0x91c9, 0x0f4a,
-  0x91cb, 0x1651,
-  0x91cc, 0x0522,
-  0x91cd, 0x0820,
-  0x91ce, 0x0bc9,
-  0x91cf, 0x0d8e,
-  0x91d0, 0x153e,
-  0x91d1, 0x0696,
-  0x91d3, 0x1c15,
-  0x91d4, 0x1c14,
-  0x91d5, 0x1e2c,
-  0x91d6, 0x415e,
-  0x91d7, 0x09e7,
-  0x91d8, 0x09e5,
-  0x91d9, 0x09e9,
-  0x91da, 0x1e2e,
-  0x91dc, 0x09e8,
-  0x91dd, 0x09e6,
-  0x91df, 0x453a,
-  0x91e2, 0x1e2d,
-  0x91e3, 0x0bcc,
-  0x91e4, 0x209a,
-  0x91e5, 0x3c06,
-  0x91e6, 0x0bcb,
-  0x91e7, 0x0bcd,
-  0x91e8, 0x209f,
-  0x91e9, 0x0bcf,
-  0x91ea, 0x209c,
-  0x91ec, 0x2095,
-  0x91ed, 0x0bce,
-  0x91ee, 0x20a0,
-  0x91f1, 0x2097,
-  0x91f3, 0x2098,
-  0x91f4, 0x2096,
-  0x91f5, 0x0bca,
-  0x91f7, 0x209e,
-  0x91f8, 0x2099,
-  0x91f9, 0x209b,
-  0x91fa, 0x3af8,
-  0x91fd, 0x233f,
-  0x91fe, 0x382e,
-  0x91ff, 0x233e,
-  0x9200, 0x233c,
-  0x9201, 0x2334,
-  0x9202, 0x2343,
-  0x9203, 0x2337,
-  0x9204, 0x2341,
-  0x9205, 0x2348,
-  0x9206, 0x2340,
-  0x9207, 0x0d96,
-  0x9208, 0x3eb9,
-  0x9209, 0x0d92,
-  0x920a, 0x2335,
-  0x920c, 0x233b,
-  0x920d, 0x0d94,
-  0x920e, 0x3888,
-  0x920f, 0x233a,
-  0x9210, 0x0d95,
-  0x9211, 0x0d97,
-  0x9212, 0x233d,
-  0x9213, 0x4793,
-  0x9214, 0x0d8f,
-  0x9216, 0x2349,
-  0x9217, 0x2347,
-  0x9219, 0x2346,
-  0x921a, 0x2338,
-  0x921c, 0x2344,
-  0x921e, 0x0d93,
-  0x9223, 0x0d91,
-  0x9224, 0x2345,
-  0x9225, 0x2336,
-  0x9226, 0x2339,
-  0x9227, 0x2342,
-  0x9228, 0x4795,
-  0x922a, 0x3c0e,
-  0x922b, 0x3ba6,
-  0x922d, 0x2851,
-  0x922e, 0x25da,
-  0x9230, 0x25d3,
-  0x9231, 0x25e6,
-  0x9232, 0x25ef,
-  0x9233, 0x25d6,
-  0x9234, 0x0f55,
-  0x9235, 0x3b26,
-  0x9236, 0x25e3,
-  0x9237, 0x0f4b,
-  0x9238, 0x0f4d,
-  0x9239, 0x0f59,
-  0x923a, 0x25d4,
-  0x923c, 0x41d2,
-  0x923d, 0x0f4e,
-  0x923e, 0x0f50,
-  0x923f, 0x0f5a,
-  0x9240, 0x0f4f,
-  0x9241, 0x388a,
-  0x9244, 0x389a,
-  0x9245, 0x0f58,
-  0x9246, 0x25dc,
-  0x9248, 0x25d1,
-  0x9249, 0x0f56,
-  0x924a, 0x25db,
-  0x924b, 0x0f52,
-  0x924c, 0x25ed,
-  0x924d, 0x0f57,
-  0x924e, 0x25eb,
-  0x924f, 0x25df,
-  0x9250, 0x25e9,
-  0x9251, 0x0f54,
-  0x9252, 0x25d2,
-  0x9253, 0x25ec,
-  0x9254, 0x25e7,
-  0x9255, 0x3e47,
-  0x9256, 0x25ee,
-  0x9257, 0x0f4c,
-  0x9258, 0x4796,
-  0x925a, 0x0f5b,
-  0x925b, 0x0f51,
-  0x925d, 0x3a03,
-  0x925e, 0x25d8,
-  0x925f, 0x3ce0,
-  0x9260, 0x25e0,
-  0x9261, 0x25e4,
-  0x9262, 0x388b,
-  0x9263, 0x25e8,
-  0x9264, 0x0f53,
-  0x9265, 0x25d7,
-  0x9266, 0x25d5,
-  0x9267, 0x25e1,
-  0x926b, 0x4797,
-  0x926c, 0x25de,
-  0x926d, 0x25dd,
-  0x926e, 0x3d05,
-  0x926f, 0x25e2,
-  0x9270, 0x25e5,
-  0x9272, 0x25ea,
-  0x9276, 0x2831,
-  0x9277, 0x3c64,
-  0x9278, 0x10d3,
-  0x9279, 0x283b,
-  0x927a, 0x2833,
-  0x927b, 0x10d9,
-  0x927c, 0x10dd,
-  0x927d, 0x2844,
-  0x927e, 0x284c,
-  0x927f, 0x283d,
-  0x9280, 0x10d5,
-  0x9281, 0x3e01,
-  0x9282, 0x2841,
-  0x9283, 0x25d9,
-  0x9284, 0x3cb9,
-  0x9285, 0x10d6,
-  0x9286, 0x2848,
-  0x9287, 0x284d,
-  0x9288, 0x2845,
-  0x9289, 0x3ab5,
-  0x928a, 0x2847,
-  0x928b, 0x2850,
-  0x928c, 0x2849,
-  0x928d, 0x2837,
-  0x928e, 0x2840,
-  0x928f, 0x46bd,
-  0x9291, 0x10de,
-  0x9293, 0x10da,
-  0x9294, 0x2835,
-  0x9295, 0x2842,
-  0x9296, 0x10d8,
-  0x9297, 0x283c,
-  0x9298, 0x10d7,
-  0x9299, 0x284a,
-  0x929a, 0x2839,
-  0x929b, 0x2832,
-  0x929c, 0x10db,
-  0x929d, 0x284f,
-  0x92a0, 0x2834,
-  0x92a1, 0x2846,
-  0x92a2, 0x2843,
-  0x92a3, 0x283e,
-  0x92a4, 0x2830,
-  0x92a5, 0x282f,
-  0x92a6, 0x2838,
-  0x92a7, 0x284b,
-  0x92a8, 0x10dc,
-  0x92a9, 0x284e,
-  0x92aa, 0x2836,
-  0x92ab, 0x283a,
-  0x92ac, 0x10d4,
-  0x92ae, 0x4799,
-  0x92b1, 0x4798,
-  0x92b2, 0x125f,
-  0x92b3, 0x125a,
-  0x92b4, 0x2ab0,
-  0x92b5, 0x2aac,
-  0x92b6, 0x2a94,
-  0x92b7, 0x1256,
-  0x92b9, 0x36e9,
-  0x92ba, 0x3bf5,
-  0x92bb, 0x1255,
-  0x92bc, 0x125b,
-  0x92be, 0x3c60,
-  0x92bf, 0x479a,
-  0x92c0, 0x2a92,
-  0x92c1, 0x1259,
-  0x92c2, 0x2a9e,
-  0x92c3, 0x2a90,
-  0x92c5, 0x1254,
-  0x92c6, 0x2aaf,
-  0x92c7, 0x125d,
-  0x92c8, 0x2aa1,
-  0x92c9, 0x2aa6,
-  0x92ca, 0x2aa0,
-  0x92cb, 0x2cd3,
-  0x92cc, 0x2a9c,
-  0x92cd, 0x2aa4,
-  0x92ce, 0x2aa2,
-  0x92cf, 0x2a95,
-  0x92d0, 0x2a8f,
-  0x92d1, 0x2aaa,
-  0x92d2, 0x125c,
-  0x92d3, 0x2aab,
-  0x92d4, 0x3861,
-  0x92d5, 0x2aa5,
-  0x92d7, 0x2a9a,
-  0x92d8, 0x2a98,
-  0x92d9, 0x2a93,
-  0x92db, 0x400c,
-  0x92dd, 0x2a9b,
-  0x92de, 0x2aa8,
-  0x92df, 0x2a97,
-  0x92e0, 0x2aa7,
-  0x92e1, 0x2aad,
-  0x92e3, 0x479b,
-  0x92e4, 0x1258,
-  0x92e5, 0x3ca2,
-  0x92e6, 0x2aa3,
-  0x92e7, 0x2aa9,
-  0x92e8, 0x2a9f,
-  0x92e9, 0x2a99,
-  0x92ea, 0x1257,
-  0x92eb, 0x479c,
-  0x92ec, 0x3964,
-  0x92ee, 0x283f,
-  0x92ef, 0x2a9d,
-  0x92f0, 0x125e,
-  0x92f1, 0x2a96,
-  0x92f2, 0x3ab2,
-  0x92f3, 0x479d,
-  0x92f6, 0x3c04,
-  0x92f7, 0x2cd8,
-  0x92f8, 0x1377,
-  0x92f9, 0x2cd7,
-  0x92fa, 0x2cd5,
-  0x92fb, 0x2ce7,
-  0x92fc, 0x137b,
-  0x92fd, 0x479f,
-  0x92fe, 0x2ce4,
-  0x92ff, 0x2cdc,
-  0x9300, 0x2ce6,
-  0x9301, 0x2cce,
-  0x9302, 0x2cda,
-  0x9303, 0x3867,
-  0x9304, 0x137d,
-  0x9306, 0x2cc6,
-  0x9307, 0x3b11,
-  0x9308, 0x2cc4,
-  0x9309, 0x2ce5,
-  0x930b, 0x2ce3,
-  0x930c, 0x2ce2,
-  0x930d, 0x2cd2,
-  0x930e, 0x2cd1,
-  0x930f, 0x2cc7,
-  0x9310, 0x137f,
-  0x9312, 0x2ccd,
-  0x9313, 0x2cd6,
-  0x9314, 0x2ce1,
-  0x9315, 0x1382,
-  0x9316, 0x2ce8,
-  0x9318, 0x14a3,
-  0x9319, 0x1384,
-  0x931a, 0x137e,
-  0x931b, 0x2ccb,
-  0x931d, 0x2cd4,
-  0x931e, 0x2cc3,
-  0x931f, 0x2cc5,
-  0x9320, 0x1375,
-  0x9321, 0x1381,
-  0x9322, 0x137a,
-  0x9323, 0x2ccc,
-  0x9324, 0x2cdb,
-  0x9325, 0x2aae,
-  0x9326, 0x1380,
-  0x9327, 0x2cc2,
-  0x9328, 0x149e,
-  0x9329, 0x2cdd,
-  0x932a, 0x2ce0,
-  0x932b, 0x137c,
-  0x932c, 0x3892,
-  0x932d, 0x2cd0,
-  0x932e, 0x1383,
-  0x932f, 0x1379,
-  0x9330, 0x3e03,
-  0x9331, 0x3cbd,
-  0x9333, 0x1378,
-  0x9334, 0x2cd9,
-  0x9335, 0x2cdf,
-  0x9336, 0x1376,
-  0x9338, 0x2cc9,
-  0x9339, 0x2cde,
-  0x933c, 0x2cca,
-  0x9340, 0x4155,
-  0x9341, 0x4277,
-  0x9342, 0x3afa,
-  0x9343, 0x47a0,
-  0x9344, 0x4016,
-  0x9345, 0x3e74,
-  0x9346, 0x2ccf,
-  0x9347, 0x2e8d,
-  0x9348, 0x3c61,
-  0x9349, 0x2e92,
-  0x934a, 0x14a0,
-  0x934b, 0x14a2,
-  0x934c, 0x2e98,
-  0x934d, 0x149c,
-  0x934e, 0x2ea6,
-  0x934f, 0x2e9e,
-  0x9350, 0x2e93,
-  0x9352, 0x2e9d,
-  0x9354, 0x14a9,
-  0x9355, 0x2e9c,
-  0x9356, 0x2e8c,
-  0x9357, 0x2e9b,
-  0x9358, 0x2e8f,
-  0x9359, 0x2ea7,
-  0x935a, 0x14a8,
-  0x935b, 0x14a6,
-  0x935c, 0x2e90,
-  0x935e, 0x2ea3,
-  0x935f, 0x3cbb,
-  0x9360, 0x2e95,
-  0x9361, 0x2ea2,
-  0x9362, 0x4268,
-  0x9363, 0x2ea4,
-  0x9364, 0x2e8b,
-  0x9365, 0x14a1,
-  0x9366, 0x46bc,
-  0x9367, 0x2ea5,
-  0x9368, 0x3bf0,
-  0x9369, 0x3961,
-  0x936a, 0x2e99,
-  0x936b, 0x3893,
-  0x936c, 0x14a5,
-  0x936d, 0x2e96,
-  0x936e, 0x39e8,
-  0x9370, 0x14a7,
-  0x9371, 0x2e9f,
-  0x9373, 0x389e,
-  0x9374, 0x3ce4,
-  0x9375, 0x149f,
-  0x9376, 0x2e91,
-  0x9377, 0x2ea0,
-  0x9378, 0x38f9,
-  0x9379, 0x2e9a,
-  0x937a, 0x2cc8,
-  0x937b, 0x2ea1,
-  0x937c, 0x2e8e,
-  0x937d, 0x3c25,
-  0x937e, 0x14a4,
-  0x9380, 0x3014,
-  0x9381, 0x3965,
-  0x9382, 0x149d,
-  0x9383, 0x2e89,
-  0x9384, 0x47a1,
-  0x9385, 0x42bd,
-  0x9386, 0x3cc0,
-  0x9387, 0x3ae0,
-  0x9388, 0x3011,
-  0x9389, 0x300a,
-  0x938a, 0x1540,
-  0x938c, 0x3005,
-  0x938d, 0x3015,
-  0x938e, 0x300c,
-  0x938f, 0x2e97,
-  0x9390, 0x3d3c,
-  0x9391, 0x3017,
-  0x9392, 0x3006,
-  0x9394, 0x153f,
-  0x9395, 0x3010,
-  0x9396, 0x1541,
-  0x9397, 0x1549,
-  0x9398, 0x1547,
-  0x9399, 0x3012,
-  0x939a, 0x1548,
-  0x939b, 0x3008,
-  0x939c, 0x39ac,
-  0x939d, 0x3009,
-  0x939e, 0x300e,
-  0x939f, 0x3013,
-  0x93a0, 0x3ab1,
-  0x93a1, 0x2e88,
-  0x93a2, 0x1542,
-  0x93a3, 0x301c,
-  0x93a4, 0x3019,
-  0x93a5, 0x3160,
-  0x93a6, 0x300f,
-  0x93a7, 0x300b,
-  0x93a8, 0x301a,
-  0x93a9, 0x3155,
-  0x93aa, 0x300d,
-  0x93ac, 0x1545,
-  0x93ad, 0x47a2,
-  0x93ae, 0x1544,
-  0x93af, 0x2e8a,
-  0x93b0, 0x1546,
-  0x93b1, 0x3016,
-  0x93b2, 0x3018,
-  0x93b3, 0x1543,
-  0x93b4, 0x301b,
-  0x93b5, 0x3004,
-  0x93b7, 0x3007,
-  0x93b8, 0x3c90,
-  0x93ba, 0x43f7,
-  0x93bb, 0x3c8f,
-  0x93bd, 0x3a27,
-  0x93bf, 0x3e2d,
-  0x93c0, 0x315e,
-  0x93c2, 0x314e,
-  0x93c3, 0x15e0,
-  0x93c4, 0x315c,
-  0x93c6, 0x39aa,
-  0x93c7, 0x314c,
-  0x93c8, 0x15e1,
-  0x93ca, 0x3157,
-  0x93cb, 0x3966,
-  0x93cc, 0x3153,
-  0x93cd, 0x15e6,
-  0x93ce, 0x315d,
-  0x93cf, 0x314d,
-  0x93d0, 0x3150,
-  0x93d1, 0x15de,
-  0x93d2, 0x315f,
-  0x93d3, 0x40e1,
-  0x93d4, 0x3158,
-  0x93d5, 0x315b,
-  0x93d6, 0x15e4,
-  0x93d7, 0x15e9,
-  0x93d8, 0x15e7,
-  0x93d9, 0x3154,
-  0x93da, 0x314f,
-  0x93db, 0x3c5f,
-  0x93dc, 0x15e2,
-  0x93de, 0x314b,
-  0x93df, 0x15df,
-  0x93e0, 0x3a20,
-  0x93e1, 0x15dd,
-  0x93e2, 0x15e5,
-  0x93e3, 0x315a,
-  0x93e4, 0x15e8,
-  0x93e6, 0x3156,
-  0x93e7, 0x3161,
-  0x93e8, 0x15ea,
-  0x93ec, 0x3152,
-  0x93ee, 0x3159,
-  0x93f0, 0x423f,
-  0x93f1, 0x42aa,
-  0x93f3, 0x3962,
-  0x93f5, 0x325a,
-  0x93f6, 0x3269,
-  0x93f7, 0x325c,
-  0x93f8, 0x3263,
-  0x93f9, 0x3151,
-  0x93fa, 0x3261,
-  0x93fb, 0x3250,
-  0x93fc, 0x3267,
-  0x93fd, 0x1654,
-  0x93fe, 0x3254,
-  0x93ff, 0x3266,
-  0x9400, 0x325b,
-  0x9401, 0x3cd4,
-  0x9403, 0x1653,
-  0x9404, 0x3bc9,
-  0x9406, 0x326b,
-  0x9407, 0x325d,
-  0x9408, 0x3a25,
-  0x9409, 0x3262,
-  0x940a, 0x3265,
-  0x940b, 0x324e,
-  0x940c, 0x3268,
-  0x940d, 0x3259,
-  0x940e, 0x325e,
-  0x940f, 0x3252,
-  0x9410, 0x3256,
-  0x9411, 0x326a,
-  0x9412, 0x3260,
-  0x9413, 0x324f,
-  0x9414, 0x3253,
-  0x9415, 0x3255,
-  0x9416, 0x325f,
-  0x9417, 0x47a5,
-  0x9418, 0x1652,
-  0x9419, 0x3258,
-  0x941b, 0x4148,
-  0x941d, 0x47a6,
-  0x9420, 0x3251,
-  0x9424, 0x3943,
-  0x9425, 0x38d0,
-  0x9426, 0x38a3,
-  0x9427, 0x3bcd,
-  0x9428, 0x3257,
-  0x9429, 0x3325,
-  0x942a, 0x3329,
-  0x942b, 0x169f,
-  0x942c, 0x332b,
-  0x942d, 0x47a7,
-  0x942e, 0x1699,
-  0x9430, 0x3327,
-  0x9431, 0x332d,
-  0x9432, 0x169e,
-  0x9433, 0x169a,
-  0x9435, 0x169b,
-  0x9436, 0x3324,
-  0x9437, 0x332a,
-  0x9438, 0x169d,
-  0x9439, 0x3328,
-  0x943a, 0x169c,
-  0x943b, 0x3323,
-  0x943c, 0x3264,
-  0x943d, 0x3326,
-  0x943e, 0x47a8,
-  0x943f, 0x3322,
-  0x9440, 0x332c,
-  0x9442, 0x4272,
-  0x9443, 0x4275,
-  0x9444, 0x16df,
-  0x9445, 0x33cd,
-  0x9446, 0x33d0,
-  0x9447, 0x33cc,
-  0x9448, 0x33ce,
-  0x944a, 0x33c9,
-  0x944c, 0x33c7,
-  0x944d, 0x3c65,
-  0x944f, 0x33cb,
-  0x9450, 0x33c8,
-  0x9451, 0x16e0,
-  0x9454, 0x47aa,
-  0x9455, 0x3448,
-  0x9457, 0x344a,
-  0x9458, 0x3c30,
-  0x945b, 0x389f,
-  0x945d, 0x3449,
-  0x945e, 0x344b,
-  0x9460, 0x170e,
-  0x9462, 0x3447,
-  0x9463, 0x170d,
-  0x9464, 0x170f,
-  0x9465, 0x3dde,
-  0x9467, 0x3ab8,
-  0x9468, 0x34a6,
-  0x946a, 0x1731,
-  0x946b, 0x34a5,
-  0x946c, 0x377e,
-  0x946d, 0x34ed,
-  0x946e, 0x34ec,
-  0x946f, 0x34ee,
-  0x9470, 0x174c,
-  0x9471, 0x34ef,
-  0x9472, 0x174b,
-  0x9473, 0x34f0,
-  0x9474, 0x350c,
-  0x9475, 0x350f,
-  0x9476, 0x350e,
-  0x9477, 0x1755,
-  0x9478, 0x350d,
-  0x9479, 0x47ab,
-  0x947b, 0x419b,
-  0x947c, 0x175f,
-  0x947d, 0x175d,
-  0x947f, 0x1764,
-  0x9480, 0x3539,
-  0x9482, 0x3538,
-  0x9483, 0x3540,
-  0x9485, 0x4507,
-  0x949f, 0x4885,
-  0x94a2, 0x451b,
-  0x94c1, 0x47e1,
-  0x94c3, 0x47df,
-  0x94dc, 0x47d7,
-  0x94f6, 0x47d2,
-  0x952d, 0x47ac,
-  0x9547, 0x48bf,
-  0x9577, 0x0697,
-  0x9578, 0x4508,
-  0x957a, 0x20a1,
-  0x957b, 0x234a,
-  0x957c, 0x2ab1,
-  0x957d, 0x3162,
-  0x957f, 0x4509,
-  0x9580, 0x0698,
-  0x9582, 0x0821,
-  0x9583, 0x09ea,
-  0x9585, 0x38a1,
-  0x9586, 0x20a2,
-  0x9588, 0x20a3,
-  0x9589, 0x0bd0,
-  0x958b, 0x0d9a,
-  0x958c, 0x234c,
-  0x958d, 0x234b,
-  0x958e, 0x0d9e,
-  0x958f, 0x0d99,
-  0x9590, 0x234d,
-  0x9591, 0x0d9b,
-  0x9592, 0x0d9d,
-  0x9593, 0x0d9c,
-  0x9594, 0x0d98,
-  0x9596, 0x3bd5,
-  0x9597, 0x3bd4,
-  0x9598, 0x0f5c,
-  0x9599, 0x3bd2,
-  0x959b, 0x25f3,
-  0x959c, 0x25f1,
-  0x959e, 0x25f2,
-  0x959f, 0x25f0,
-  0x95a0, 0x38a4,
-  0x95a1, 0x10df,
-  0x95a2, 0x47ad,
-  0x95a3, 0x10e2,
-  0x95a4, 0x10e4,
-  0x95a5, 0x10e3,
-  0x95a6, 0x38a2,
-  0x95a7, 0x3bd3,
-  0x95a8, 0x10e0,
-  0x95aa, 0x4395,
-  0x95ab, 0x2ab3,
-  0x95ac, 0x2ab2,
-  0x95ad, 0x1260,
-  0x95ae, 0x2ab4,
-  0x95b0, 0x2ab5,
-  0x95b1, 0x1261,
-  0x95b5, 0x2cf0,
-  0x95b6, 0x2cee,
-  0x95b7, 0x2ead,
-  0x95b9, 0x2cec,
-  0x95bb, 0x1385,
-  0x95bc, 0x2ce9,
-  0x95bd, 0x2cf1,
-  0x95be, 0x2ceb,
-  0x95bf, 0x2cef,
-  0x95c0, 0x2ea9,
-  0x95c3, 0x2eab,
-  0x95c5, 0x2eac,
-  0x95c6, 0x14ae,
-  0x95c7, 0x2ea8,
-  0x95c8, 0x14ad,
-  0x95c9, 0x2eaa,
-  0x95ca, 0x14aa,
-  0x95cd, 0x2cea,
-  0x95d0, 0x154c,
-  0x95d1, 0x301f,
-  0x95d2, 0x301d,
-  0x95d4, 0x154a,
-  0x95d5, 0x154d,
-  0x95d6, 0x154b,
-  0x95da, 0x3163,
-  0x95dc, 0x15eb,
-  0x95de, 0x326c,
-  0x95df, 0x326e,
-  0x95e0, 0x326d,
-  0x95e1, 0x1655,
-  0x95e2, 0x16a0,
-  0x95e3, 0x3330,
-  0x95e4, 0x332f,
-  0x95e5, 0x332e,
-  0x95e8, 0x450a,
-  0x95f4, 0x47af,
-  0x961c, 0x0699,
-  0x961d, 0x4519,
-  0x961e, 0x17b4,
-  0x9620, 0x1821,
-  0x9621, 0x0414,
-  0x9622, 0x181f,
-  0x9623, 0x1822,
-  0x9624, 0x1820,
-  0x9628, 0x18f1,
-  0x962a, 0x0526,
-  0x962c, 0x0527,
-  0x962d, 0x18f3,
-  0x962e, 0x0524,
-  0x962f, 0x18f2,
-  0x9630, 0x18f0,
-  0x9631, 0x0525,
-  0x9632, 0x0523,
-  0x9633, 0x47b0,
-  0x9638, 0x3fd1,
-  0x9639, 0x1a55,
-  0x963a, 0x1a58,
-  0x963b, 0x069c,
-  0x963c, 0x1a57,
-  0x963d, 0x1a56,
-  0x963f, 0x069b,
-  0x9640, 0x069a,
-  0x9641, 0x3f3d,
-  0x9642, 0x069e,
-  0x9643, 0x1a59,
-  0x9644, 0x069d,
-  0x9645, 0x4772,
-  0x964a, 0x1c1a,
-  0x964b, 0x0823,
-  0x964e, 0x1c1b,
-  0x964f, 0x1c17,
-  0x9650, 0x0822,
-  0x9651, 0x1c18,
-  0x9653, 0x1c19,
-  0x9654, 0x1c16,
-  0x9656, 0x3de7,
-  0x9658, 0x09f1,
-  0x965b, 0x09ee,
-  0x965c, 0x1e2f,
-  0x965d, 0x09ef,
-  0x965e, 0x09f2,
-  0x965f, 0x1e30,
-  0x9661, 0x09ed,
-  0x9662, 0x09eb,
-  0x9664, 0x09f0,
-  0x9669, 0x475e,
-  0x966a, 0x0bd1,
-  0x966b, 0x20a6,
-  0x966c, 0x0bd9,
-  0x966d, 0x20a5,
-  0x966f, 0x20a8,
-  0x9670, 0x0bd5,
-  0x9671, 0x20a7,
-  0x9672, 0x0da6,
-  0x9673, 0x0bd3,
-  0x9674, 0x0bd6,
-  0x9675, 0x0bd2,
-  0x9676, 0x0bd7,
-  0x9678, 0x0bd4,
-  0x967b, 0x38ac,
-  0x967c, 0x20a4,
-  0x967d, 0x0da2,
-  0x967e, 0x234f,
-  0x9680, 0x2353,
-  0x9681, 0x3f46,
-  0x9683, 0x2352,
-  0x9684, 0x0da7,
-  0x9685, 0x0da3,
-  0x9687, 0x234e,
-  0x9688, 0x2350,
-  0x968a, 0x0d9f,
-  0x968b, 0x0da1,
-  0x968d, 0x0da5,
-  0x968e, 0x0da0,
-  0x968f, 0x3bde,
-  0x9691, 0x25f6,
-  0x9692, 0x25f4,
-  0x9694, 0x0f5e,
-  0x9696, 0x38ad,
-  0x9697, 0x25f7,
-  0x9698, 0x0f5d,
-  0x9699, 0x10e5,
-  0x969b, 0x10e7,
-  0x969c, 0x10e6,
-  0x969e, 0x2852,
-  0x96a1, 0x2853,
-  0x96a2, 0x2ab7,
-  0x96a3, 0x38af,
-  0x96a4, 0x2ab6,
-  0x96a5, 0x42ef,
-  0x96a7, 0x1386,
-  0x96a9, 0x2cf2,
-  0x96aa, 0x1388,
-  0x96ac, 0x2eb0,
-  0x96ae, 0x2eae,
-  0x96b0, 0x2eaf,
-  0x96b1, 0x14af,
-  0x96b3, 0x3020,
-  0x96b4, 0x15ec,
-  0x96b6, 0x0231,
-  0x96b8, 0x14b0,
-  0x96b9, 0x069f,
-  0x96bb, 0x09f3,
-  0x96bc, 0x1e31,
-  0x96bd, 0x38b5,
-  0x96bf, 0x20a9,
-  0x96c0, 0x0bda,
-  0x96c1, 0x0da8,
-  0x96c2, 0x2354,
-  0x96c3, 0x2356,
-  0x96c4, 0x0daa,
-  0x96c5, 0x0da9,
-  0x96c6, 0x0dab,
-  0x96c8, 0x2355,
-  0x96c9, 0x0f62,
-  0x96cb, 0x0f61,
-  0x96cc, 0x10e8,
-  0x96cd, 0x0f60,
-  0x96ce, 0x25f8,
-  0x96d2, 0x10e9,
-  0x96d3, 0x2ab8,
-  0x96d4, 0x2cf3,
-  0x96d5, 0x1389,
-  0x96d6, 0x14b1,
-  0x96d7, 0x3021,
-  0x96d8, 0x3025,
-  0x96d9, 0x1550,
-  0x96da, 0x3022,
-  0x96db, 0x1551,
-  0x96dc, 0x154f,
-  0x96dd, 0x3026,
-  0x96de, 0x1552,
-  0x96df, 0x3024,
-  0x96e1, 0x3165,
-  0x96e2, 0x154e,
-  0x96e3, 0x15ed,
-  0x96e5, 0x34a8,
-  0x96e8, 0x06a0,
-  0x96e9, 0x0bdc,
-  0x96ea, 0x0bdb,
-  0x96ef, 0x0dad,
-  0x96f0, 0x2358,
-  0x96f1, 0x2357,
-  0x96f2, 0x0dae,
-  0x96f4, 0x3a04,
-  0x96f5, 0x25fc,
-  0x96f6, 0x0f67,
-  0x96f7, 0x0f64,
-  0x96f8, 0x25fb,
-  0x96f9, 0x0f66,
-  0x96fa, 0x25f9,
-  0x96fb, 0x0f65,
-  0x96fd, 0x25fa,
-  0x96ff, 0x2854,
-  0x9700, 0x10ea,
-  0x9702, 0x2abb,
-  0x9703, 0x3f0d,
-  0x9704, 0x1262,
-  0x9705, 0x2ab9,
-  0x9706, 0x1263,
-  0x9708, 0x2aba,
-  0x9709, 0x1265,
-  0x970b, 0x2cf4,
-  0x970d, 0x138d,
-  0x970e, 0x138a,
-  0x970f, 0x138f,
-  0x9710, 0x2cf6,
-  0x9711, 0x138b,
-  0x9712, 0x2cf5,
-  0x9713, 0x138e,
-  0x9716, 0x138c,
-  0x9718, 0x2eb3,
-  0x9719, 0x2eb5,
-  0x971b, 0x38c9,
-  0x971c, 0x14b2,
-  0x971d, 0x2eb4,
-  0x971e, 0x14b3,
-  0x971f, 0x2eb2,
-  0x9720, 0x2eb1,
-  0x9721, 0x3fb3,
-  0x9722, 0x3028,
-  0x9723, 0x3027,
-  0x9724, 0x1553,
-  0x9725, 0x3029,
-  0x9726, 0x316a,
-  0x9727, 0x15ef,
-  0x9728, 0x3169,
-  0x9729, 0x3166,
-  0x972a, 0x15ee,
-  0x972b, 0x3167,
-  0x972e, 0x326f,
-  0x9730, 0x1656,
-  0x9731, 0x38c0,
-  0x9732, 0x16a3,
-  0x9735, 0x3331,
-  0x9736, 0x38c2,
-  0x9738, 0x16a1,
-  0x973a, 0x3332,
-  0x973d, 0x16e2,
-  0x973f, 0x33d1,
-  0x9740, 0x47b3,
-  0x9741, 0x3be9,
-  0x9742, 0x1732,
-  0x9743, 0x34aa,
-  0x9744, 0x1734,
-  0x9746, 0x34a9,
-  0x9747, 0x34ab,
-  0x9748, 0x1733,
-  0x9749, 0x34f1,
-  0x974b, 0x3526,
-  0x9751, 0x44e3,
-  0x9752, 0x06a1,
-  0x9756, 0x0f68,
-  0x9757, 0x38cc,
-  0x9758, 0x2855,
-  0x975a, 0x2abc,
-  0x975b, 0x1390,
-  0x975d, 0x3bef,
-  0x975e, 0x06a2,
-  0x975f, 0x38cf,
-  0x9760, 0x1266,
-  0x9761, 0x15f0,
-  0x9762, 0x0826,
-  0x9766, 0x1392,
-  0x9768, 0x1710,
-  0x9769, 0x0827,
-  0x976a, 0x20aa,
-  0x976c, 0x2359,
-  0x976d, 0x3e97,
-  0x976e, 0x235b,
-  0x9770, 0x235a,
-  0x9771, 0x3bfc,
-  0x9772, 0x2600,
-  0x9773, 0x25fd,
-  0x9774, 0x0f69,
-  0x9776, 0x0f6a,
-  0x9777, 0x25fe,
-  0x977a, 0x2857,
-  0x977b, 0x285c,
-  0x977c, 0x10eb,
-  0x977d, 0x2856,
-  0x977e, 0x2858,
-  0x977f, 0x285f,
-  0x9780, 0x285a,
-  0x9781, 0x285e,
-  0x9782, 0x285b,
-  0x9783, 0x2859,
-  0x9784, 0x285d,
-  0x9785, 0x10ec,
-  0x9787, 0x40c0,
-  0x9788, 0x2abf,
-  0x9789, 0x38d4,
-  0x978a, 0x2abd,
-  0x978b, 0x1268,
-  0x978d, 0x1267,
-  0x978e, 0x2abe,
-  0x978f, 0x1269,
-  0x9794, 0x2cf9,
-  0x9797, 0x2cf8,
-  0x9798, 0x1393,
-  0x9799, 0x2cf7,
-  0x979a, 0x2eb6,
-  0x979b, 0x3bfb,
-  0x979c, 0x2eb8,
-  0x979d, 0x2eba,
-  0x979e, 0x2eb9,
-  0x979f, 0x38d5,
-  0x97a0, 0x14b4,
-  0x97a1, 0x2eb7,
-  0x97a2, 0x3030,
-  0x97a3, 0x1554,
-  0x97a4, 0x302e,
-  0x97a5, 0x3031,
-  0x97a6, 0x1555,
-  0x97a8, 0x302c,
-  0x97aa, 0x302f,
-  0x97ab, 0x302d,
-  0x97ac, 0x302a,
-  0x97ad, 0x1556,
-  0x97ae, 0x302b,
-  0x97b1, 0x38d6,
-  0x97b2, 0x47b5,
-  0x97b3, 0x316b,
-  0x97b4, 0x3f33,
-  0x97b6, 0x316d,
-  0x97b7, 0x316c,
-  0x97b8, 0x3d95,
-  0x97b9, 0x3271,
-  0x97ba, 0x3f35,
-  0x97bb, 0x3272,
-  0x97bd, 0x494e,
-  0x97be, 0x38d7,
-  0x97bf, 0x3333,
-  0x97c0, 0x38d8,
-  0x97c1, 0x16e5,
-  0x97c2, 0x47b6,
-  0x97c3, 0x16e4,
-  0x97c4, 0x344c,
-  0x97c6, 0x1735,
-  0x97c7, 0x34ac,
-  0x97c8, 0x3f2f,
-  0x97c9, 0x1756,
-  0x97cb, 0x0828,
-  0x97cc, 0x0daf,
-  0x97cd, 0x2861,
-  0x97ce, 0x2860,
-  0x97cf, 0x2ac1,
-  0x97d0, 0x2ac0,
-  0x97d2, 0x38d9,
-  0x97d3, 0x14b5,
-  0x97d4, 0x2ebc,
-  0x97d5, 0x2ebb,
-  0x97d6, 0x3034,
-  0x97d7, 0x3032,
-  0x97d8, 0x3035,
-  0x97d9, 0x3033,
-  0x97dc, 0x15f1,
-  0x97dd, 0x316e,
-  0x97e0, 0x38da,
-  0x97e1, 0x3334,
-  0x97e3, 0x33d2,
-  0x97e5, 0x34ad,
-  0x97e6, 0x450c,
-  0x97ed, 0x0829,
-  0x97ee, 0x38dc,
-  0x97f0, 0x2cfa,
-  0x97f1, 0x2ebd,
-  0x97f2, 0x394d,
-  0x97f3, 0x082a,
-  0x97f5, 0x38e0,
-  0x97f6, 0x10ed,
-  0x97f8, 0x2cfb,
-  0x97f9, 0x1557,
-  0x97fa, 0x3036,
-  0x97fb, 0x15f2,
-  0x97fd, 0x3273,
-  0x97ff, 0x16a4,
-  0x9800, 0x344e,
-  0x9801, 0x082b,
-  0x9802, 0x0bdf,
-  0x9804, 0x20ab,
-  0x9805, 0x0db0,
-  0x9807, 0x235c,
-  0x9808, 0x0db2,
-  0x980a, 0x0f6e,
-  0x980c, 0x0f70,
-  0x980d, 0x2602,
-  0x980f, 0x2601,
-  0x9810, 0x0f6b,
-  0x9812, 0x0f6f,
-  0x9813, 0x0f6d,
-  0x9814, 0x4952,
-  0x9815, 0x433c,
-  0x9816, 0x2862,
-  0x9817, 0x10ee,
-  0x981b, 0x2ac8,
-  0x981c, 0x126c,
-  0x981d, 0x2ac3,
-  0x981e, 0x2ac2,
-  0x981f, 0x3c02,
-  0x9820, 0x2ac7,
-  0x9821, 0x126a,
-  0x9823, 0x3e37,
-  0x9824, 0x139a,
-  0x9826, 0x2ac4,
-  0x9827, 0x2ac9,
-  0x9828, 0x2ac6,
-  0x9829, 0x2ac5,
-  0x982b, 0x126b,
-  0x982d, 0x1398,
-  0x982e, 0x3f72,
-  0x982f, 0x2cfd,
-  0x9830, 0x1394,
-  0x9832, 0x2cfe,
-  0x9833, 0x38e5,
-  0x9834, 0x38e4,
-  0x9835, 0x2cfc,
-  0x9837, 0x1397,
-  0x9838, 0x1395,
-  0x9839, 0x1399,
-  0x983b, 0x1396,
-  0x9841, 0x2ebe,
-  0x9843, 0x2ec3,
-  0x9844, 0x2ebf,
-  0x9845, 0x2ec2,
-  0x9846, 0x14b6,
-  0x9847, 0x3d96,
-  0x9848, 0x2df2,
-  0x9849, 0x2ec1,
-  0x984a, 0x2ec0,
-  0x984b, 0x38e6,
-  0x984c, 0x155a,
-  0x984d, 0x1558,
-  0x984e, 0x155b,
-  0x984f, 0x1559,
-  0x9850, 0x3037,
-  0x9853, 0x155c,
-  0x9857, 0x3174,
-  0x9858, 0x15f4,
-  0x9859, 0x3172,
-  0x985b, 0x15f5,
-  0x985c, 0x3171,
-  0x985d, 0x3173,
-  0x985e, 0x15f3,
-  0x985f, 0x3278,
-  0x9860, 0x3275,
-  0x9862, 0x3276,
-  0x9864, 0x3335,
-  0x9865, 0x16a6,
-  0x9866, 0x38e7,
-  0x9867, 0x16a5,
-  0x9869, 0x33d4,
-  0x986a, 0x33d3,
-  0x986b, 0x16e6,
-  0x986c, 0x4035,
-  0x986f, 0x1711,
-  0x9870, 0x1736,
-  0x9871, 0x174d,
-  0x9872, 0x34f2,
-  0x9873, 0x3527,
-  0x9875, 0x450d,
-  0x98a8, 0x082c,
-  0x98a9, 0x235d,
-  0x98ac, 0x2604,
-  0x98ad, 0x2863,
-  0x98af, 0x10f0,
-  0x98b1, 0x10f1,
-  0x98b2, 0x2aca,
-  0x98b3, 0x126d,
-  0x98b4, 0x3f73,
-  0x98b6, 0x14b7,
-  0x98b7, 0x38ef,
-  0x98b8, 0x303a,
-  0x98b9, 0x47b8,
-  0x98ba, 0x155d,
-  0x98bb, 0x3177,
-  0x98bc, 0x15f6,
-  0x98bd, 0x3176,
-  0x98be, 0x3178,
-  0x98bf, 0x3175,
-  0x98c0, 0x3338,
-  0x98c1, 0x3279,
-  0x98c3, 0x3b78,
-  0x98c4, 0x1657,
-  0x98c6, 0x3337,
-  0x98c7, 0x38f1,
-  0x98c8, 0x38f0,
-  0x98c9, 0x3336,
-  0x98ca, 0x38ee,
-  0x98cb, 0x33d5,
-  0x98cc, 0x3529,
-  0x98ce, 0x450e,
-  0x98db, 0x082d,
-  0x98dc, 0x3c0b,
-  0x98de, 0x450f,
-  0x98df, 0x082e,
-  0x98e0, 0x4792,
-  0x98e1, 0x38f6,
-  0x98e2, 0x09f4,
-  0x98e3, 0x1e32,
-  0x98e5, 0x20ac,
-  0x98e6, 0x38f7,
-  0x98e7, 0x0db3,
-  0x98e9, 0x0db6,
-  0x98ea, 0x0db4,
-  0x98eb, 0x235e,
-  0x98ec, 0x38f8,
-  0x98ed, 0x0db8,
-  0x98ef, 0x0db5,
-  0x98f1, 0x47ba,
-  0x98f2, 0x0db7,
-  0x98f4, 0x0f72,
-  0x98f5, 0x4365,
-  0x98f6, 0x2605,
-  0x98f9, 0x2606,
-  0x98fa, 0x2acc,
-  0x98fc, 0x0f71,
-  0x98fd, 0x0f73,
-  0x9900, 0x2866,
-  0x9902, 0x2865,
-  0x9903, 0x10f2,
-  0x9905, 0x10f3,
-  0x9907, 0x2867,
-  0x9908, 0x2acb,
-  0x9909, 0x10f5,
-  0x990a, 0x126e,
-  0x990c, 0x10f4,
-  0x990e, 0x43ed,
-  0x9910, 0x139b,
-  0x9911, 0x2acd,
-  0x9912, 0x1270,
-  0x9913, 0x126f,
-  0x9914, 0x2ace,
-  0x9915, 0x2ad1,
-  0x9916, 0x2acf,
-  0x9918, 0x1271,
-  0x9919, 0x47bc,
-  0x991a, 0x13a0,
-  0x991b, 0x139e,
-  0x991c, 0x43ee,
-  0x991e, 0x139d,
-  0x991f, 0x2d00,
-  0x9921, 0x139f,
-  0x9924, 0x2cff,
-  0x9925, 0x2ec4,
-  0x9927, 0x2d01,
-  0x9928, 0x139c,
-  0x9929, 0x2d02,
-  0x992a, 0x2ec7,
-  0x992b, 0x2ec5,
-  0x992d, 0x2ecb,
-  0x992e, 0x1561,
-  0x992f, 0x2eca,
-  0x9930, 0x2ecd,
-  0x9931, 0x2ecc,
-  0x9932, 0x2ec9,
-  0x9933, 0x2ec8,
-  0x9935, 0x14b8,
-  0x9937, 0x47bd,
-  0x9938, 0x3bfd,
-  0x9939, 0x38fa,
-  0x993a, 0x303d,
-  0x993b, 0x3c11,
-  0x993c, 0x303c,
-  0x993d, 0x1560,
-  0x993e, 0x155e,
-  0x9940, 0x3f34,
-  0x9941, 0x303b,
-  0x9942, 0x43ff,
-  0x9943, 0x317b,
-  0x9945, 0x15f7,
-  0x9947, 0x317a,
-  0x9948, 0x3179,
-  0x9949, 0x15f8,
-  0x994a, 0x3fb9,
-  0x994b, 0x327f,
-  0x994c, 0x327e,
-  0x994d, 0x3c12,
-  0x994e, 0x327c,
-  0x9950, 0x327b,
-  0x9951, 0x1659,
-  0x9952, 0x1658,
-  0x9953, 0x3280,
-  0x9954, 0x33d6,
-  0x9955, 0x16e7,
-  0x9956, 0x333a,
-  0x9957, 0x16a7,
-  0x9958, 0x3339,
-  0x9959, 0x327d,
-  0x995b, 0x33d7,
-  0x995c, 0x1712,
-  0x995d, 0x47be,
-  0x995e, 0x174e,
-  0x995f, 0x34f3,
-  0x9961, 0x352a,
-  0x9962, 0x43ef,
-  0x9963, 0x4510,
-  0x9996, 0x082f,
-  0x9997, 0x20ad,
-  0x9998, 0x2ece,
-  0x9999, 0x0830,
-  0x999b, 0x3c15,
-  0x999c, 0x2869,
-  0x999d, 0x2868,
-  0x999e, 0x2d03,
-  0x99a1, 0x2ed0,
-  0x99a3, 0x2ecf,
-  0x99a4, 0x41c3,
-  0x99a5, 0x1562,
-  0x99a6, 0x317c,
-  0x99a8, 0x165a,
-  0x99aa, 0x3c17,
-  0x99ab, 0x352b,
-  0x99ac, 0x09f5,
-  0x99ad, 0x0dba,
-  0x99ae, 0x0db9,
-  0x99af, 0x2607,
-  0x99b0, 0x2609,
-  0x99b1, 0x0f76,
-  0x99b2, 0x2608,
-  0x99b3, 0x0f75,
-  0x99b4, 0x0f77,
-  0x99b5, 0x260a,
-  0x99b8, 0x394b,
-  0x99b9, 0x286b,
-  0x99ba, 0x286d,
-  0x99bb, 0x286c,
-  0x99bc, 0x3c22,
-  0x99bd, 0x286f,
-  0x99c1, 0x10f6,
-  0x99c2, 0x286e,
-  0x99c3, 0x286a,
-  0x99c4, 0x3d77,
-  0x99c5, 0x47c1,
-  0x99c7, 0x2870,
-  0x99c9, 0x2ad8,
-  0x99cb, 0x2adb,
-  0x99cc, 0x2add,
-  0x99cd, 0x2ad3,
-  0x99ce, 0x2ad7,
-  0x99cf, 0x2ad4,
-  0x99d0, 0x1273,
-  0x99d1, 0x1276,
-  0x99d2, 0x1278,
-  0x99d3, 0x2ad5,
-  0x99d5, 0x1277,
-  0x99d6, 0x2ad9,
-  0x99d7, 0x2adc,
-  0x99d8, 0x2ada,
-  0x99d9, 0x1279,
-  0x99da, 0x3f42,
-  0x99db, 0x1275,
-  0x99dc, 0x2ad2,
-  0x99dd, 0x1272,
-  0x99df, 0x1274,
-  0x99e1, 0x3785,
-  0x99e2, 0x13a2,
-  0x99e3, 0x2d09,
-  0x99e4, 0x2d07,
-  0x99e5, 0x2d06,
-  0x99e6, 0x3b65,
-  0x99e7, 0x2d0c,
-  0x99e9, 0x2d0b,
-  0x99ea, 0x2d0a,
-  0x99ec, 0x2d05,
-  0x99ed, 0x13a1,
-  0x99ee, 0x2d04,
-  0x99f0, 0x2d08,
-  0x99f1, 0x13a3,
-  0x99f4, 0x2ed3,
-  0x99f5, 0x38ff,
-  0x99f6, 0x2ed7,
-  0x99f7, 0x2ed4,
-  0x99f8, 0x2ed6,
-  0x99f9, 0x2ed5,
-  0x99fa, 0x2ed2,
-  0x99fb, 0x2ed8,
-  0x99fc, 0x2edb,
-  0x99fd, 0x2ed9,
-  0x99ff, 0x14ba,
-  0x9a01, 0x14b9,
-  0x9a02, 0x2ed1,
-  0x9a03, 0x2edc,
-  0x9a04, 0x3042,
-  0x9a05, 0x3045,
-  0x9a06, 0x3047,
-  0x9a07, 0x3046,
-  0x9a09, 0x3040,
-  0x9a0a, 0x3044,
-  0x9a0b, 0x303f,
-  0x9a0c, 0x3900,
-  0x9a0d, 0x3041,
-  0x9a0e, 0x1563,
-  0x9a0f, 0x303e,
-  0x9a10, 0x3902,
-  0x9a11, 0x3043,
-  0x9a14, 0x318a,
-  0x9a15, 0x317f,
-  0x9a16, 0x15f9,
-  0x9a19, 0x15fa,
-  0x9a1a, 0x317e,
-  0x9a1b, 0x3183,
-  0x9a1c, 0x3189,
-  0x9a1d, 0x3181,
-  0x9a1e, 0x3188,
-  0x9a1f, 0x3b6c,
-  0x9a20, 0x3185,
-  0x9a21, 0x3c1c,
-  0x9a22, 0x3184,
-  0x9a23, 0x3187,
-  0x9a24, 0x3182,
-  0x9a25, 0x3180,
-  0x9a26, 0x3df2,
-  0x9a27, 0x3186,
-  0x9a29, 0x3287,
-  0x9a2a, 0x3285,
-  0x9a2b, 0x165b,
-  0x9a2c, 0x3284,
-  0x9a2d, 0x328a,
-  0x9a2e, 0x3288,
-  0x9a2f, 0x3c1e,
-  0x9a30, 0x165c,
-  0x9a31, 0x3283,
-  0x9a32, 0x3281,
-  0x9a34, 0x3282,
-  0x9a35, 0x165e,
-  0x9a36, 0x3286,
-  0x9a37, 0x165d,
-  0x9a38, 0x3289,
-  0x9a39, 0x333b,
-  0x9a3a, 0x3341,
-  0x9a3b, 0x3901,
-  0x9a3c, 0x47c3,
-  0x9a3d, 0x333c,
-  0x9a3e, 0x16ab,
-  0x9a3f, 0x3342,
-  0x9a40, 0x16aa,
-  0x9a41, 0x3340,
-  0x9a42, 0x333f,
-  0x9a43, 0x16a9,
-  0x9a44, 0x333e,
-  0x9a45, 0x16a8,
-  0x9a46, 0x333d,
-  0x9a48, 0x33dd,
-  0x9a49, 0x33df,
-  0x9a4a, 0x33de,
-  0x9a4c, 0x33db,
-  0x9a4d, 0x16e9,
-  0x9a4e, 0x33d8,
-  0x9a4f, 0x33dc,
-  0x9a50, 0x33e1,
-  0x9a52, 0x33e0,
-  0x9a53, 0x33d9,
-  0x9a55, 0x16e8,
-  0x9a56, 0x344f,
-  0x9a57, 0x1715,
-  0x9a58, 0x3903,
-  0x9a59, 0x3450,
-  0x9a5a, 0x1713,
-  0x9a5c, 0x3c18,
-  0x9a5e, 0x34ae,
-  0x9a5f, 0x1737,
-  0x9a60, 0x3510,
-  0x9a62, 0x1757,
-  0x9a63, 0x3b67,
-  0x9a64, 0x352c,
-  0x9a65, 0x1758,
-  0x9a66, 0x352d,
-  0x9a68, 0x353c,
-  0x9a69, 0x353b,
-  0x9a6a, 0x1767,
-  0x9a6b, 0x3544,
-  0x9a6c, 0x4585,
-  0x9a8f, 0x4586,
-  0x9aa8, 0x09f6,
-  0x9aab, 0x260c,
-  0x9aad, 0x260b,
-  0x9aaf, 0x10f7,
-  0x9ab1, 0x2871,
-  0x9ab2, 0x4332,
-  0x9ab3, 0x2ade,
-  0x9ab4, 0x2d0f,
-  0x9ab6, 0x43f0,
-  0x9ab7, 0x127a,
-  0x9ab8, 0x13a4,
-  0x9ab9, 0x2d0d,
-  0x9aba, 0x3f74,
-  0x9abb, 0x2d10,
-  0x9abc, 0x13a5,
-  0x9abd, 0x3d97,
-  0x9abe, 0x2edd,
-  0x9abf, 0x2d0e,
-  0x9ac0, 0x3048,
-  0x9ac1, 0x1564,
-  0x9ac2, 0x318b,
-  0x9ac6, 0x328d,
-  0x9ac7, 0x328b,
-  0x9aca, 0x328c,
-  0x9acd, 0x3343,
-  0x9acf, 0x16ac,
-  0x9ad0, 0x33e2,
-  0x9ad1, 0x1718,
-  0x9ad2, 0x16ea,
-  0x9ad3, 0x1716,
-  0x9ad5, 0x34af,
-  0x9ad6, 0x174f,
-  0x9ad7, 0x3faa,
-  0x9ad8, 0x09f7,
-  0x9adc, 0x3049,
-  0x9adf, 0x1e33,
-  0x9ae0, 0x3908,
-  0x9ae1, 0x0f78,
-  0x9ae2, 0x3909,
-  0x9ae3, 0x2872,
-  0x9ae6, 0x10f9,
-  0x9ae7, 0x2873,
-  0x9aeb, 0x2ae0,
-  0x9aec, 0x2adf,
-  0x9aed, 0x13a7,
-  0x9aee, 0x127b,
-  0x9af1, 0x2ae3,
-  0x9af2, 0x2ae2,
-  0x9af3, 0x2ae1,
-  0x9af4, 0x390b,
-  0x9af6, 0x2d11,
-  0x9af7, 0x2d14,
-  0x9af9, 0x2d13,
-  0x9afa, 0x2d12,
-  0x9afb, 0x13a6,
-  0x9afc, 0x2ee1,
-  0x9afd, 0x2edf,
-  0x9afe, 0x2ede,
-  0x9aff, 0x3f17,
-  0x9b01, 0x2ee0,
-  0x9b02, 0x3f12,
-  0x9b03, 0x1565,
-  0x9b04, 0x304b,
-  0x9b06, 0x1566,
-  0x9b08, 0x304a,
-  0x9b09, 0x3f20,
-  0x9b0a, 0x318d,
-  0x9b0b, 0x318c,
-  0x9b0c, 0x318f,
-  0x9b0d, 0x15fb,
-  0x9b0e, 0x318e,
-  0x9b0f, 0x47c4,
-  0x9b10, 0x328e,
-  0x9b11, 0x3290,
-  0x9b12, 0x328f,
-  0x9b14, 0x390d,
-  0x9b15, 0x3344,
-  0x9b16, 0x3347,
-  0x9b17, 0x3345,
-  0x9b19, 0x33e3,
-  0x9b1a, 0x16eb,
-  0x9b1e, 0x3451,
-  0x9b22, 0x1738,
-  0x9b23, 0x1750,
-  0x9b24, 0x352f,
-  0x9b25, 0x09f8,
-  0x9b27, 0x127d,
-  0x9b28, 0x13a8,
-  0x9b29, 0x304d,
-  0x9b2a, 0x3f19,
-  0x9b2b, 0x33e4,
-  0x9b2d, 0x390e,
-  0x9b2e, 0x3511,
-  0x9b2f, 0x1e34,
-  0x9b31, 0x1768,
-  0x9b32, 0x09f9,
-  0x9b33, 0x2d15,
-  0x9b34, 0x3911,
-  0x9b35, 0x304e,
-  0x9b37, 0x3190,
-  0x9b39, 0x3f00,
-  0x9b3a, 0x3348,
-  0x9b3b, 0x33e5,
-  0x9b3c, 0x09fa,
-  0x9b3e, 0x2874,
-  0x9b40, 0x3915,
-  0x9b41, 0x10fa,
-  0x9b43, 0x2ae5,
-  0x9b44, 0x127f,
-  0x9b45, 0x127e,
-  0x9b46, 0x2ae4,
-  0x9b48, 0x2ee2,
-  0x9b4a, 0x304f,
-  0x9b4b, 0x3051,
-  0x9b4c, 0x3050,
-  0x9b4d, 0x1569,
-  0x9b4e, 0x1568,
-  0x9b4f, 0x1567,
-  0x9b50, 0x3914,
-  0x9b51, 0x16ae,
-  0x9b52, 0x3349,
-  0x9b54, 0x16ad,
-  0x9b55, 0x33e7,
-  0x9b56, 0x33e6,
-  0x9b58, 0x1739,
-  0x9b59, 0x34b0,
-  0x9b5a, 0x0be1,
-  0x9b5b, 0x260d,
-  0x9b5f, 0x2878,
-  0x9b60, 0x2876,
-  0x9b64, 0x2aee,
-  0x9b66, 0x2ae9,
-  0x9b67, 0x2ae6,
-  0x9b68, 0x2aed,
-  0x9b69, 0x47c5,
-  0x9b6c, 0x2aef,
-  0x9b6f, 0x1281,
-  0x9b70, 0x2aec,
-  0x9b71, 0x2ae8,
-  0x9b74, 0x2ae7,
-  0x9b75, 0x2aeb,
-  0x9b76, 0x2aea,
-  0x9b77, 0x1280,
-  0x9b7a, 0x2d20,
-  0x9b7b, 0x2d1b,
-  0x9b7c, 0x2d19,
-  0x9b7d, 0x2d22,
-  0x9b7e, 0x2d1a,
-  0x9b7f, 0x3c3b,
-  0x9b80, 0x2d16,
-  0x9b81, 0x43f1,
-  0x9b82, 0x2d1c,
-  0x9b83, 0x4219,
-  0x9b85, 0x2d17,
-  0x9b86, 0x2eeb,
-  0x9b87, 0x2d18,
-  0x9b88, 0x2d23,
-  0x9b8b, 0x3eee,
-  0x9b8d, 0x4623,
-  0x9b8e, 0x3919,
-  0x9b8f, 0x3fad,
-  0x9b90, 0x2d1f,
-  0x9b91, 0x13a9,
-  0x9b92, 0x2d1e,
-  0x9b93, 0x2d1d,
-  0x9b95, 0x2d21,
-  0x9b97, 0x3f71,
-  0x9b9a, 0x2ee3,
-  0x9b9b, 0x2ee6,
-  0x9b9d, 0x3f56,
-  0x9b9e, 0x2ee5,
-  0x9b9f, 0x3c3e,
-  0x9ba0, 0x2eed,
-  0x9ba1, 0x2ee8,
-  0x9ba2, 0x2eec,
-  0x9ba4, 0x2eea,
-  0x9ba5, 0x2ee9,
-  0x9ba6, 0x2ee7,
-  0x9ba8, 0x2ee4,
-  0x9baa, 0x14bd,
-  0x9bab, 0x14bc,
-  0x9bad, 0x14be,
-  0x9bae, 0x14bb,
-  0x9baf, 0x2eee,
-  0x9bb0, 0x3fb4,
-  0x9bb5, 0x3057,
-  0x9bb6, 0x305a,
-  0x9bb8, 0x3058,
-  0x9bb9, 0x305c,
-  0x9bbd, 0x305d,
-  0x9bbf, 0x3055,
-  0x9bc0, 0x156e,
-  0x9bc1, 0x3056,
-  0x9bc3, 0x3054,
-  0x9bc4, 0x305b,
-  0x9bc6, 0x3053,
-  0x9bc7, 0x3052,
-  0x9bc8, 0x156d,
-  0x9bc9, 0x156b,
-  0x9bca, 0x156a,
-  0x9bcf, 0x3c3c,
-  0x9bd3, 0x3059,
-  0x9bd4, 0x3199,
-  0x9bd5, 0x319f,
-  0x9bd6, 0x15fe,
-  0x9bd7, 0x319a,
-  0x9bd9, 0x319d,
-  0x9bda, 0x31a1,
-  0x9bdb, 0x15ff,
-  0x9bdc, 0x319c,
-  0x9bdd, 0x47c6,
-  0x9bde, 0x3194,
-  0x9be0, 0x3193,
-  0x9be1, 0x31a0,
-  0x9be2, 0x3197,
-  0x9be4, 0x3195,
-  0x9be5, 0x319e,
-  0x9be6, 0x3196,
-  0x9be7, 0x15fd,
-  0x9be8, 0x15fc,
-  0x9be9, 0x3bc1,
-  0x9bea, 0x3191,
-  0x9bec, 0x319b,
-  0x9bed, 0x3ed7,
-  0x9bf0, 0x3198,
-  0x9bf1, 0x47c7,
-  0x9bf4, 0x47c8,
-  0x9bf7, 0x3293,
-  0x9bf8, 0x3296,
-  0x9bfd, 0x156c,
-  0x9bff, 0x391b,
-  0x9c02, 0x391a,
-  0x9c05, 0x3294,
-  0x9c06, 0x329a,
-  0x9c07, 0x3298,
-  0x9c08, 0x3292,
-  0x9c09, 0x329d,
-  0x9c0a, 0x3f3a,
-  0x9c0b, 0x3291,
-  0x9c0c, 0x391c,
-  0x9c0d, 0x1660,
-  0x9c0e, 0x3299,
-  0x9c10, 0x3c3a,
-  0x9c12, 0x3295,
-  0x9c13, 0x165f,
-  0x9c14, 0x329c,
-  0x9c15, 0x3f1e,
-  0x9c17, 0x329b,
-  0x9c1b, 0x491b,
-  0x9c1c, 0x334c,
-  0x9c1d, 0x334b,
-  0x9c1f, 0x4622,
-  0x9c20, 0x47ca,
-  0x9c21, 0x3352,
-  0x9c23, 0x334e,
-  0x9c24, 0x3351,
-  0x9c25, 0x16b0,
-  0x9c26, 0x45e6,
-  0x9c28, 0x334f,
-  0x9c2b, 0x334a,
-  0x9c2c, 0x334d,
-  0x9c2d, 0x16af,
-  0x9c2e, 0x3f22,
-  0x9c2f, 0x3d87,
-  0x9c31, 0x16ed,
-  0x9c32, 0x33f2,
-  0x9c33, 0x33ed,
-  0x9c34, 0x33f1,
-  0x9c35, 0x3c39,
-  0x9c36, 0x33f4,
-  0x9c37, 0x33f0,
-  0x9c39, 0x33ec,
-  0x9c3a, 0x3d7e,
-  0x9c3b, 0x16ef,
-  0x9c3c, 0x33ef,
-  0x9c3d, 0x33f3,
-  0x9c3e, 0x16ee,
-  0x9c3f, 0x33ea,
-  0x9c40, 0x3297,
-  0x9c41, 0x33ee,
-  0x9c44, 0x33eb,
-  0x9c45, 0x3e71,
-  0x9c46, 0x33e8,
-  0x9c48, 0x33e9,
-  0x9c49, 0x16ec,
-  0x9c4a, 0x3457,
-  0x9c4b, 0x3459,
-  0x9c4c, 0x345c,
-  0x9c4d, 0x3458,
-  0x9c4e, 0x345d,
-  0x9c4f, 0x3c36,
-  0x9c50, 0x3456,
-  0x9c52, 0x3454,
-  0x9c53, 0x3c37,
-  0x9c54, 0x1719,
-  0x9c55, 0x345a,
-  0x9c56, 0x171b,
-  0x9c57, 0x171a,
-  0x9c58, 0x3455,
-  0x9c59, 0x345b,
-  0x9c5d, 0x3ebf,
-  0x9c5e, 0x34b5,
-  0x9c5f, 0x173a,
-  0x9c60, 0x34b6,
-  0x9c62, 0x34b4,
-  0x9c63, 0x34b1,
-  0x9c66, 0x34b3,
-  0x9c67, 0x34b2,
-  0x9c68, 0x34f4,
-  0x9c6d, 0x34f6,
-  0x9c6e, 0x34f5,
-  0x9c71, 0x3514,
-  0x9c72, 0x3ea1,
-  0x9c73, 0x3513,
-  0x9c74, 0x3512,
-  0x9c75, 0x3515,
-  0x9c77, 0x1760,
-  0x9c79, 0x3541,
-  0x9c7a, 0x3545,
-  0x9c7b, 0x3c38,
-  0x9c7c, 0x4512,
-  0x9ce5, 0x0be2,
-  0x9ce6, 0x235f,
-  0x9ce7, 0x2610,
-  0x9ce9, 0x0f79,
-  0x9cea, 0x260e,
-  0x9ced, 0x260f,
-  0x9cf1, 0x2879,
-  0x9cf3, 0x10fe,
-  0x9cf4, 0x10fc,
-  0x9cf5, 0x287b,
-  0x9cf6, 0x10fd,
-  0x9cf7, 0x2af4,
-  0x9cf9, 0x2af7,
-  0x9cfa, 0x2af1,
-  0x9cfb, 0x2af8,
-  0x9cfc, 0x2af0,
-  0x9cfd, 0x2af2,
-  0x9cff, 0x2af3,
-  0x9d00, 0x2af6,
-  0x9d02, 0x3f3b,
-  0x9d03, 0x1284,
-  0x9d04, 0x2afb,
-  0x9d05, 0x2afa,
-  0x9d06, 0x1282,
-  0x9d07, 0x2af5,
-  0x9d08, 0x2af9,
-  0x9d09, 0x1283,
-  0x9d0c, 0x3c46,
-  0x9d10, 0x2d2d,
-  0x9d12, 0x13ae,
-  0x9d14, 0x2d28,
-  0x9d15, 0x13aa,
-  0x9d16, 0x3c7c,
-  0x9d17, 0x2d25,
-  0x9d18, 0x2d2b,
-  0x9d19, 0x2d2e,
-  0x9d1b, 0x13af,
-  0x9d1d, 0x2d2a,
-  0x9d1e, 0x2d27,
-  0x9d1f, 0x2d2f,
-  0x9d20, 0x2d26,
-  0x9d21, 0x3c41,
-  0x9d22, 0x2d2c,
-  0x9d23, 0x13ab,
-  0x9d25, 0x2d24,
-  0x9d26, 0x13ac,
-  0x9d28, 0x13ad,
-  0x9d29, 0x2d29,
-  0x9d2d, 0x2f00,
-  0x9d2e, 0x2ef3,
-  0x9d30, 0x2ef7,
-  0x9d31, 0x2ef5,
-  0x9d33, 0x2eef,
-  0x9d34, 0x404a,
-  0x9d36, 0x2ef2,
-  0x9d37, 0x2efc,
-  0x9d38, 0x2ef6,
-  0x9d39, 0x392e,
-  0x9d3b, 0x14bf,
-  0x9d3d, 0x2efe,
-  0x9d3e, 0x2efb,
-  0x9d3f, 0x14c0,
-  0x9d40, 0x2efd,
-  0x9d41, 0x2ef0,
-  0x9d42, 0x2ef9,
-  0x9d44, 0x3fab,
-  0x9d45, 0x2ef8,
-  0x9d49, 0x47cd,
-  0x9d4a, 0x3061,
-  0x9d4b, 0x3063,
-  0x9d4c, 0x3066,
-  0x9d4e, 0x4539,
-  0x9d4f, 0x3060,
-  0x9d50, 0x3eca,
-  0x9d51, 0x156f,
-  0x9d52, 0x3068,
-  0x9d53, 0x305f,
-  0x9d54, 0x3069,
-  0x9d56, 0x3065,
-  0x9d57, 0x3067,
-  0x9d58, 0x306b,
-  0x9d59, 0x3064,
-  0x9d5a, 0x306c,
-  0x9d5b, 0x3062,
-  0x9d5c, 0x305e,
-  0x9d5d, 0x1570,
-  0x9d5e, 0x3e6e,
-  0x9d5f, 0x306a,
-  0x9d60, 0x1571,
-  0x9d61, 0x1601,
-  0x9d67, 0x2ef1,
-  0x9d68, 0x31bb,
-  0x9d69, 0x31b2,
-  0x9d6a, 0x1603,
-  0x9d6b, 0x31ae,
-  0x9d6c, 0x1604,
-  0x9d6d, 0x3bac,
-  0x9d6e, 0x433b,
-  0x9d6f, 0x31b7,
-  0x9d70, 0x31b1,
-  0x9d71, 0x31a7,
-  0x9d72, 0x1602,
-  0x9d73, 0x31b4,
-  0x9d74, 0x31af,
-  0x9d77, 0x31a2,
-  0x9d78, 0x31a9,
-  0x9d79, 0x31b8,
-  0x9d7b, 0x31b5,
-  0x9d7c, 0x3efe,
-  0x9d7d, 0x31ad,
-  0x9d7e, 0x3925,
-  0x9d7f, 0x31b9,
-  0x9d80, 0x31a8,
-  0x9d81, 0x31a3,
-  0x9d82, 0x31b6,
-  0x9d83, 0x3926,
-  0x9d84, 0x31a5,
-  0x9d85, 0x31b3,
-  0x9d86, 0x31aa,
-  0x9d87, 0x31ba,
-  0x9d88, 0x31a6,
-  0x9d89, 0x1600,
-  0x9d8a, 0x31a4,
-  0x9d8b, 0x31ab,
-  0x9d90, 0x32a4,
-  0x9d92, 0x32a2,
-  0x9d93, 0x43f3,
-  0x9d94, 0x32a7,
-  0x9d96, 0x32b3,
-  0x9d97, 0x32aa,
-  0x9d98, 0x32a3,
-  0x9d99, 0x329f,
-  0x9d9a, 0x32ac,
-  0x9d9b, 0x32a5,
-  0x9d9c, 0x32a8,
-  0x9d9d, 0x32a1,
-  0x9d9e, 0x32af,
-  0x9d9f, 0x329e,
-  0x9da0, 0x32a6,
-  0x9da1, 0x32ab,
-  0x9da2, 0x32ad,
-  0x9da3, 0x32b0,
-  0x9da4, 0x32a0,
-  0x9da5, 0x3c4b,
-  0x9da6, 0x32b4,
-  0x9da8, 0x32ae,
-  0x9da9, 0x32b2,
-  0x9daa, 0x32a9,
-  0x9dab, 0x3f30,
-  0x9dac, 0x3362,
-  0x9dad, 0x3365,
-  0x9daf, 0x16b1,
-  0x9db1, 0x3364,
-  0x9db2, 0x3369,
-  0x9db3, 0x3367,
-  0x9db4, 0x16b2,
-  0x9db5, 0x335e,
-  0x9db6, 0x3354,
-  0x9db7, 0x3353,
-  0x9db8, 0x16b4,
-  0x9db9, 0x3360,
-  0x9dbb, 0x335d,
-  0x9dbc, 0x3355,
-  0x9dbd, 0x47d0,
-  0x9dbe, 0x335a,
-  0x9dbf, 0x32b1,
-  0x9dc0, 0x43f2,
-  0x9dc1, 0x3356,
-  0x9dc2, 0x16b3,
-  0x9dc3, 0x335c,
-  0x9dc4, 0x3929,
-  0x9dc5, 0x335b,
-  0x9dc7, 0x3357,
-  0x9dc8, 0x3363,
-  0x9dc9, 0x4579,
-  0x9dca, 0x3358,
-  0x9dcb, 0x33f9,
-  0x9dcc, 0x3366,
-  0x9dcd, 0x3368,
-  0x9dce, 0x335f,
-  0x9dcf, 0x3359,
-  0x9dd0, 0x33fa,
-  0x9dd1, 0x33fc,
-  0x9dd2, 0x33f6,
-  0x9dd3, 0x16f0,
-  0x9dd4, 0x391e,
-  0x9dd5, 0x3403,
-  0x9dd6, 0x3401,
-  0x9dd7, 0x16f1,
-  0x9dd8, 0x3400,
-  0x9dd9, 0x33ff,
-  0x9dda, 0x33f8,
-  0x9ddb, 0x33f5,
-  0x9ddc, 0x33fb,
-  0x9ddd, 0x3404,
-  0x9dde, 0x33f7,
-  0x9ddf, 0x33fd,
-  0x9de1, 0x3466,
-  0x9de2, 0x346b,
-  0x9de3, 0x3461,
-  0x9de4, 0x3464,
-  0x9de5, 0x171c,
-  0x9de6, 0x3468,
-  0x9de8, 0x346f,
-  0x9de9, 0x33fe,
-  0x9deb, 0x3462,
-  0x9dec, 0x346c,
-  0x9ded, 0x3470,
-  0x9dee, 0x3467,
-  0x9def, 0x3460,
-  0x9df0, 0x346a,
-  0x9df2, 0x3469,
-  0x9df3, 0x346e,
-  0x9df4, 0x346d,
-  0x9df5, 0x3402,
-  0x9df6, 0x3465,
-  0x9df7, 0x345f,
-  0x9df8, 0x3463,
-  0x9df9, 0x173b,
-  0x9dfb, 0x345e,
-  0x9dfc, 0x47d1,
-  0x9dfd, 0x34c1,
-  0x9dfe, 0x34b8,
-  0x9dff, 0x34c0,
-  0x9e00, 0x34bd,
-  0x9e02, 0x34b7,
-  0x9e03, 0x34ba,
-  0x9e04, 0x34c2,
-  0x9e05, 0x34bc,
-  0x9e06, 0x34bb,
-  0x9e07, 0x34b9,
-  0x9e09, 0x34bf,
-  0x9e0a, 0x457e,
-  0x9e0b, 0x34f7,
-  0x9e0c, 0x457a,
-  0x9e0d, 0x34f8,
-  0x9e0e, 0x3928,
-  0x9e0f, 0x34fa,
-  0x9e10, 0x34f9,
-  0x9e11, 0x34fc,
-  0x9e12, 0x34fb,
-  0x9e13, 0x3517,
-  0x9e14, 0x3516,
-  0x9e15, 0x3530,
-  0x9e17, 0x3531,
-  0x9e18, 0x3c44,
-  0x9e19, 0x353d,
-  0x9e1a, 0x1765,
-  0x9e1b, 0x1769,
-  0x9e1c, 0x3f84,
-  0x9e1d, 0x3546,
-  0x9e1e, 0x176a,
-  0x9e1f, 0x4513,
-  0x9e75, 0x0be3,
-  0x9e79, 0x1661,
-  0x9e7a, 0x336a,
-  0x9e7b, 0x43f8,
-  0x9e7c, 0x173d,
-  0x9e7f, 0x0be4,
-  0x9e80, 0x2611,
-  0x9e81, 0x3f0f,
-  0x9e82, 0x0f7a,
-  0x9e83, 0x2afc,
-  0x9e84, 0x3f76,
-  0x9e85, 0x3ef2,
-  0x9e86, 0x2d31,
-  0x9e88, 0x2d30,
-  0x9e89, 0x2f02,
-  0x9e8a, 0x2f01,
-  0x9e8b, 0x14c1,
-  0x9e8c, 0x306e,
-  0x9e8d, 0x2f03,
-  0x9e8e, 0x306d,
-  0x9e90, 0x3931,
-  0x9e91, 0x31bd,
-  0x9e92, 0x1605,
-  0x9e93, 0x1607,
-  0x9e94, 0x31bc,
-  0x9e95, 0x3932,
-  0x9e96, 0x3fbc,
-  0x9e97, 0x1606,
-  0x9e98, 0x3f27,
-  0x9e99, 0x32b6,
-  0x9e9a, 0x32b8,
-  0x9e9b, 0x32b7,
-  0x9e9c, 0x336b,
-  0x9e9d, 0x16b5,
-  0x9e9e, 0x3933,
-  0x9e9f, 0x171d,
-  0x9ea0, 0x34c3,
-  0x9ea1, 0x34fd,
-  0x9ea2, 0x3934,
-  0x9ea4, 0x354a,
-  0x9ea5, 0x0be5,
-  0x9ea6, 0x4944,
-  0x9ea7, 0x287c,
-  0x9ea8, 0x3f75,
-  0x9ea9, 0x1285,
-  0x9eaa, 0x3936,
-  0x9eab, 0x3e92,
-  0x9eac, 0x43f4,
-  0x9ead, 0x2d34,
-  0x9eae, 0x2d33,
-  0x9eaf, 0x3937,
-  0x9eb0, 0x2f04,
-  0x9eb1, 0x47d4,
-  0x9eb4, 0x1608,
-  0x9eb5, 0x1662,
-  0x9eb6, 0x3405,
-  0x9eb7, 0x3542,
-  0x9ebb, 0x0be6,
-  0x9ebc, 0x10ff,
-  0x9ebd, 0x47d5,
-  0x9ebe, 0x1286,
-  0x9ebf, 0x3d78,
-  0x9ec0, 0x31be,
-  0x9ec1, 0x3939,
-  0x9ec2, 0x3471,
-  0x9ec3, 0x0dbb,
-  0x9ec4, 0x4514,
-  0x9ec6, 0x47d6,
-  0x9ec7, 0x4577,
-  0x9ec8, 0x2f05,
-  0x9ecc, 0x1751,
-  0x9ecd, 0x0dbc,
-  0x9ece, 0x1287,
-  0x9ecf, 0x14c2,
-  0x9ed0, 0x3472,
-  0x9ed1, 0x0dbd,
-  0x9ed3, 0x2afd,
-  0x9ed4, 0x13b1,
-  0x9ed5, 0x2d35,
-  0x9ed8, 0x13b0,
-  0x9eda, 0x2f06,
-  0x9edb, 0x14c6,
-  0x9edc, 0x14c4,
-  0x9ede, 0x14c3,
-  0x9edf, 0x306f,
-  0x9ee0, 0x1572,
-  0x9ee2, 0x47d8,
-  0x9ee4, 0x32ba,
-  0x9ee5, 0x32b9,
-  0x9ee6, 0x32bc,
-  0x9ee7, 0x32bb,
-  0x9ee8, 0x1663,
-  0x9eeb, 0x336c,
-  0x9eed, 0x336e,
-  0x9eee, 0x336d,
-  0x9eef, 0x16b6,
-  0x9ef0, 0x3406,
-  0x9ef1, 0x47d9,
-  0x9ef2, 0x3473,
-  0x9ef4, 0x171e,
-  0x9ef5, 0x34fe,
-  0x9ef6, 0x3518,
-  0x9ef7, 0x1762,
-  0x9ef8, 0x47da,
-  0x9ef9, 0x2360,
-  0x9efa, 0x2d37,
-  0x9efb, 0x2f07,
-  0x9efc, 0x31bf,
-  0x9efd, 0x2612,
-  0x9efe, 0x47ce,
-  0x9eff, 0x2f08,
-  0x9f00, 0x3071,
-  0x9f01, 0x3070,
-  0x9f02, 0x3940,
-  0x9f06, 0x3475,
-  0x9f07, 0x173f,
-  0x9f08, 0x3941,
-  0x9f09, 0x34ff,
-  0x9f0a, 0x3519,
-  0x9f0e, 0x0f7b,
-  0x9f0f, 0x2afe,
-  0x9f12, 0x2d38,
-  0x9f13, 0x0f7c,
-  0x9f15, 0x1573,
-  0x9f16, 0x3072,
-  0x9f17, 0x3945,
-  0x9f18, 0x3370,
-  0x9f19, 0x16b7,
-  0x9f1a, 0x3371,
-  0x9f1b, 0x336f,
-  0x9f1c, 0x3476,
-  0x9f1e, 0x34c4,
-  0x9f20, 0x0f7d,
-  0x9f22, 0x2f0b,
-  0x9f23, 0x2f0a,
-  0x9f24, 0x2f09,
-  0x9f25, 0x3073,
-  0x9f26, 0x3f90,
-  0x9f27, 0x4620,
-  0x9f28, 0x3077,
-  0x9f29, 0x3076,
-  0x9f2a, 0x3075,
-  0x9f2b, 0x3074,
-  0x9f2c, 0x1574,
-  0x9f2d, 0x31c0,
-  0x9f2e, 0x32be,
-  0x9f2f, 0x1664,
-  0x9f30, 0x32bd,
-  0x9f31, 0x3372,
-  0x9f32, 0x3409,
-  0x9f33, 0x3408,
-  0x9f34, 0x16f2,
-  0x9f35, 0x3407,
-  0x9f36, 0x3479,
-  0x9f37, 0x3478,
-  0x9f38, 0x3477,
-  0x9f39, 0x3947,
-  0x9f3b, 0x1100,
-  0x9f3d, 0x2d39,
-  0x9f3e, 0x14c7,
-  0x9f40, 0x31c1,
-  0x9f42, 0x340a,
-  0x9f43, 0x347a,
-  0x9f44, 0x47db,
-  0x9f45, 0x394a,
-  0x9f46, 0x34c5,
-  0x9f47, 0x3500,
-  0x9f48, 0x3532,
-  0x9f49, 0x354c,
-  0x9f4a, 0x1101,
-  0x9f4b, 0x14c8,
-  0x9f4c, 0x3078,
-  0x9f4d, 0x31c3,
-  0x9f4e, 0x3373,
-  0x9f4f, 0x347b,
-  0x9f50, 0x4943,
-  0x9f52, 0x1289,
-  0x9f53, 0x3f80,
-  0x9f54, 0x2f0c,
-  0x9f55, 0x3079,
-  0x9f56, 0x31c4,
-  0x9f59, 0x32c3,
-  0x9f5a, 0x3f23,
-  0x9f5b, 0x32bf,
-  0x9f5c, 0x16b8,
-  0x9f5d, 0x32c2,
-  0x9f5e, 0x32c1,
-  0x9f5f, 0x1665,
-  0x9f60, 0x32c0,
-  0x9f61, 0x1667,
-  0x9f62, 0x394f,
-  0x9f63, 0x1666,
-  0x9f64, 0x3375,
-  0x9f65, 0x3374,
-  0x9f66, 0x16b9,
-  0x9f69, 0x3950,
-  0x9f6a, 0x16f4,
-  0x9f6b, 0x340b,
-  0x9f6c, 0x16f3,
-  0x9f6e, 0x347e,
-  0x9f70, 0x347d,
-  0x9f71, 0x347c,
-  0x9f72, 0x1741,
-  0x9f74, 0x34c6,
-  0x9f77, 0x1740,
-  0x9f78, 0x3501,
-  0x9f79, 0x3504,
-  0x9f7a, 0x3503,
-  0x9f7b, 0x3502,
-  0x9f7e, 0x354b,
-  0x9f7f, 0x4680,
-  0x9f8d, 0x13b2,
-  0x9f8e, 0x3952,
-  0x9f90, 0x157c,
-  0x9f91, 0x32c4,
-  0x9f92, 0x3376,
-  0x9f94, 0x16f5,
-  0x9f95, 0x340c,
-  0x9f98, 0x354d,
-  0x9f99, 0x4587,
-  0x9f9c, 0x13b3,
-  0x9f9f, 0x4646,
-  0x9fa0, 0x2f0d,
-  0x9fa2, 0x340d,
-  0x9fa4, 0x351a,
-  0x9fa5, 0x3f70,
-  0xfa0c, 0x0274,
-  0xfa0d, 0x2381,
-  0xfe30, 0x006d,
-  0xfe31, 0x007a,
-  0xfe33, 0x35af,
-  0xfe34, 0x35b1,
-  0xfe35, 0x0082,
-  0xfe37, 0x0086,
-  0xfe39, 0x008a,
-  0xfe3b, 0x008e,
-  0xfe3d, 0x0092,
-  0xfe3f, 0x0096,
-  0xfe41, 0x009a,
-  0xfe43, 0x009e,
-  0xfe49, 0x00c7,
-  0xfe4b, 0x00cb,
-  0xfe4d, 0x00c9,
-  0xfe4f, 0x35b2,
-  0xfe50, 0x0070,
-  0xfe52, 0x0072,
-  0xfe54, 0x0074,
-  0xfe59, 0x00a0,
-  0xfe5f, 0x00cd,
-  0xfe62, 0x00df,
-  0xfe69, 0x010c,
-  0xff01, 0x006c,
-  0xff02, 0x36e4,
-  0xff03, 0x00ae,
-  0xff04, 0x0103,
-  0xff05, 0x0108,
-  0xff06, 0x00af,
-  0xff07, 0x36e3,
-  0xff08, 0x0080,
-  0xff0a, 0x00b0,
-  0xff0b, 0x00d0,
-  0xff0c, 0x0064,
-  0xff0d, 0x00d1,
-  0xff0e, 0x0067,
-  0xff0f, 0x0101,
-  0xff10, 0x014d,
-  0xff1a, 0x006a,
-  0xff1b, 0x0069,
-  0xff1c, 0x00d6,
-  0xff1d, 0x00d8,
-  0xff1e, 0x00d7,
-  0xff1f, 0x006b,
-  0xff20, 0x0109,
-  0xff21, 0x016d,
-  0xff3b, 0x35be,
-  0xff3c, 0x0102,
-  0xff3d, 0x35bf,
-  0xff3e, 0x35b4,
-  0xff3f, 0x00c5,
-  0xff41, 0x0187,
-  0xff5b, 0x0084,
-  0xff5c, 0x0078,
-  0xff5d, 0x0085,
-  0xff64, 0x0071,
-  0xffe2, 0x36e1,
-  0xffe4, 0x36e2,
-  0x2013, 0x0078,
-  0x2014, 0x007a,
-  0x2025, 0x006d,
-  0x300a, 0x0092,
-  0x3008, 0x0096,
-  0x300c, 0x009a,
-  0x300e, 0x009e,
-  0x3010, 0x008e,
-  0x3014, 0x008a,
-  0xfe4f, 0x35b1,
-  0xff08, 0x0082,
-  0xff5b, 0x0086,
-  0xff5d, 0x0087,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13UniCNSUCS2VEnc16 = {
-  1,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13UniCNSUCS2VMap2, 15468
-};
-
-static Gushort cns13AdobeCNS13VMap2[152] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0x3800, 0x3800,
-  0x3900, 0x3900,
-  0x3a00, 0x3a00,
-  0x3b00, 0x3b00,
-  0x3c00, 0x3c00,
-  0x3d00, 0x3d00,
-  0x3e00, 0x3e00,
-  0x3f00, 0x3f00,
-  0x4000, 0x4000,
-  0x4100, 0x4100,
-  0x4200, 0x4200,
-  0x4300, 0x4300,
-  0x4400, 0x4400,
-  0x4500, 0x4500,
-  0x4600, 0x4600,
-  0x4700, 0x4700,
-  0x4800, 0x4800,
-  0x4900, 0x4900,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 cns13AdobeCNS13VEnc16 = {
-  1,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  cns13AdobeCNS13VMap2, 76
-};
-
-static struct {
-  char *name;
-  GfxFontEncoding16 *enc;
-} gfxCNS13Tab[] = {
-  { "Adobe-CNS1-0",                     &cns13AdobeCNS10Enc16 },
-  { "Adobe-CNS1-1",                     &cns13AdobeCNS11Enc16 },
-  { "Adobe-CNS1-2",                     &cns13AdobeCNS12Enc16 },
-  { "Adobe-CNS1-3",                     &cns13AdobeCNS13Enc16 },
-  { "B5-H",                             &cns13B5HEnc16 },
-  { "B5-V",                             &cns13B5VEnc16 },
-  { "B5pc-H",                           &cns13B5pcHEnc16 },
-  { "B5pc-V",                           &cns13B5pcVEnc16 },
-  { "CNS1-H",                           &cns13CNS1HEnc16 },
-  { "CNS1-V",                           &cns13CNS1VEnc16 },
-  { "CNS2-H",                           &cns13CNS2HEnc16 },
-  { "CNS2-V",                           &cns13CNS2VEnc16 },
-  { "ETHK-B5-H",                        &cns13ETHKB5HEnc16 },
-  { "ETHK-B5-V",                        &cns13ETHKB5VEnc16 },
-  { "ETen-B5-H",                        &cns13ETenB5HEnc16 },
-  { "ETen-B5-V",                        &cns13ETenB5VEnc16 },
-  { "ETenms-B5-H",                      &cns13ETenmsB5HEnc16 },
-  { "ETenms-B5-V",                      &cns13ETenmsB5VEnc16 },
-  { "HKdla-B5-H",                       &cns13HKdlaB5HEnc16 },
-  { "HKdla-B5-V",                       &cns13HKdlaB5VEnc16 },
-  { "HKdlb-B5-H",                       &cns13HKdlbB5HEnc16 },
-  { "HKdlb-B5-V",                       &cns13HKdlbB5VEnc16 },
-  { "HKgccs-B5-H",                      &cns13HKgccsB5HEnc16 },
-  { "HKgccs-B5-V",                      &cns13HKgccsB5VEnc16 },
-  { "HKm314-B5-H",                      &cns13HKm314B5HEnc16 },
-  { "HKm314-B5-V",                      &cns13HKm314B5VEnc16 },
-  { "HKm471-B5-H",                      &cns13HKm471B5HEnc16 },
-  { "HKm471-B5-V",                      &cns13HKm471B5VEnc16 },
-  { "HKscs-B5-H",                       &cns13HKscsB5HEnc16 },
-  { "HKscs-B5-V",                       &cns13HKscsB5VEnc16 },
-  { "UniCNS-UCS2-H",                    &cns13UniCNSUCS2HEnc16 },
-  { "UniCNS-UCS2-V",                    &cns13UniCNSUCS2VEnc16 },
-  { "Identity-H",                       &cns13AdobeCNS13Enc16 },
-  { "Identity-V",                       &cns13AdobeCNS13VEnc16 },
-  { NULL,                               NULL }
-};
-
-#endif
index 815cca3ae077b01848aae938bd4dc0ed128d05a5..1212e2eb3469ab4afe628fddfc21c0fb913b66ad 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Catalog.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include "gmem.h"
 #include "Object.h"
+#include "XRef.h"
 #include "Array.h"
 #include "Dict.h"
 #include "Page.h"
 // Catalog
 //------------------------------------------------------------------------
 
-Catalog::Catalog(Object *catDict) {
-  Object pagesDict;
+Catalog::Catalog(XRef *xrefA, GBool printCommands) {
+  Object catDict, pagesDict;
   Object obj, obj2;
   int numPages0;
   int i;
 
   ok = gTrue;
+  xref = xrefA;
   pages = NULL;
   pageRefs = NULL;
   numPages = pagesSize = 0;
+  baseURI = NULL;
 
-  if (!catDict->isDict()) {
-    error(-1, "Catalog object is wrong type (%s)", catDict->getTypeName());
+  xref->getCatalog(&catDict);
+  if (!catDict.isDict()) {
+    error(-1, "Catalog object is wrong type (%s)", catDict.getTypeName());
     goto err1;
   }
 
   // read page tree
-  catDict->dictLookup("Pages", &pagesDict);
+  catDict.dictLookup("Pages", &pagesDict);
   // This should really be isDict("Pages"), but I've seen at least one
   // PDF file where the /Type entry is missing.
   if (!pagesDict.isDict()) {
@@ -64,25 +69,24 @@ Catalog::Catalog(Object *catDict) {
     pageRefs[i].num = -1;
     pageRefs[i].gen = -1;
   }
-  numPages = readPageTree(pagesDict.getDict(), NULL, 0);
+  numPages = readPageTree(pagesDict.getDict(), NULL, 0, printCommands);
   if (numPages != numPages0) {
     error(-1, "Page count in top-level pages object is incorrect");
   }
   pagesDict.free();
 
   // read named destination dictionary
-  catDict->dictLookup("Dests", &dests);
+  catDict.dictLookup("Dests", &dests);
 
   // read root of named destination tree
-  if (catDict->dictLookup("Names", &obj)->isDict())
+  if (catDict.dictLookup("Names", &obj)->isDict())
     obj.dictLookup("Dests", &nameTree);
   else
     nameTree.initNull();
   obj.free();
 
   // read base URI
-  baseURI = NULL;
-  if (catDict->dictLookup("URI", &obj)->isDict()) {
+  if (catDict.dictLookup("URI", &obj)->isDict()) {
     if (obj.dictLookup("Base", &obj2)->isString()) {
       baseURI = obj2.getString()->copy();
     }
@@ -90,6 +94,13 @@ Catalog::Catalog(Object *catDict) {
   }
   obj.free();
 
+  // get the metadata stream
+  catDict.dictLookup("Metadata", &metadata);
+
+  // get the structure tree root
+  catDict.dictLookup("StructTreeRoot", &structTreeRoot);
+
+  catDict.free();
   return;
 
  err3:
@@ -97,6 +108,7 @@ Catalog::Catalog(Object *catDict) {
  err2:
   pagesDict.free();
  err1:
+  catDict.free();
   dests.initNull();
   nameTree.initNull();
   ok = gFalse;
@@ -119,9 +131,36 @@ Catalog::~Catalog() {
   if (baseURI) {
     delete baseURI;
   }
+  metadata.free();
+  structTreeRoot.free();
+}
+
+GString *Catalog::readMetadata() {
+  GString *s;
+  Dict *dict;
+  Object obj;
+  int c;
+
+  if (!metadata.isStream()) {
+    return NULL;
+  }
+  dict = metadata.streamGetDict();
+  if (!dict->lookup("Subtype", &obj)->isName("XML")) {
+    error(-1, "Unknown Metadata type: '%s'",
+         obj.isName() ? obj.getName() : "???");
+  }
+  obj.free();
+  s = new GString();
+  metadata.streamReset();
+  while ((c = metadata.streamGetChar()) != EOF) {
+    s->append(c);
+  }
+  metadata.streamClose();
+  return s;
 }
 
-int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start) {
+int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start,
+                         GBool printCommands) {
   Object kids;
   Object kid;
   Object kidRef;
@@ -140,7 +179,7 @@ int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start) {
     kids.arrayGet(i, &kid);
     if (kid.isDict("Page")) {
       attrs2 = new PageAttrs(attrs1, kid.getDict());
-      page = new Page(start+1, kid.getDict(), attrs2);
+      page = new Page(xref, start+1, kid.getDict(), attrs2, printCommands);
       if (!page->isOk()) {
        ++start;
        goto err3;
@@ -166,7 +205,8 @@ int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start) {
     // This should really be isDict("Pages"), but I've seen at least one
     // PDF file where the /Type entry is missing.
     } else if (kid.isDict()) {
-      if ((start = readPageTree(kid.getDict(), attrs1, start)) < 0)
+      if ((start = readPageTree(kid.getDict(), attrs1, start, printCommands))
+         < 0)
        goto err2;
     } else {
       error(-1, "Kid object (page %d) is wrong type (%s)",
@@ -225,10 +265,10 @@ LinkDest *Catalog::findDest(GString *name) {
   // construct LinkDest
   dest = NULL;
   if (obj1.isArray()) {
-    dest = new LinkDest(obj1.getArray(), gTrue);
+    dest = new LinkDest(obj1.getArray());
   } else if (obj1.isDict()) {
     if (obj1.dictLookup("D", &obj2)->isArray())
-      dest = new LinkDest(obj2.getArray(), gTrue);
+      dest = new LinkDest(obj2.getArray());
     else
       error(-1, "Bad named destination value");
     obj2.free();
index b0f314323383787890e65efd60af1d52cbf3cbe5..afad803fc88b689060dd4406f5a137d5897c85ee 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Catalog.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -13,6 +13,7 @@
 #pragma interface
 #endif
 
+class XRef;
 class Object;
 class Page;
 class PageAttrs;
@@ -27,7 +28,7 @@ class Catalog {
 public:
 
   // Constructor.
-  Catalog(Object *catDict);
+  Catalog(XRef *xrefA, GBool printCommands = gFalse);
 
   // Destructor.
   ~Catalog();
@@ -47,6 +48,13 @@ public:
   // Return base URI, or NULL if none.
   GString *getBaseURI() { return baseURI; }
 
+  // Return the contents of the metadata stream, or NULL if there is
+  // no metadata.
+  GString *readMetadata();
+
+  // Return the structure tree root object.
+  Object *getStructTreeRoot() { return &structTreeRoot; }
+
   // Find a page, given its object ID.  Returns page number, or 0 if
   // not found.
   int findPage(int num, int gen);
@@ -57,6 +65,7 @@ public:
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   Page **pages;                        // array of pages
   Ref *pageRefs;               // object ID for each page
   int numPages;                        // number of pages
@@ -64,9 +73,12 @@ private:
   Object dests;                        // named destination dictionary
   Object nameTree;             // name tree
   GString *baseURI;            // base URI for URI-type links
+  Object metadata;             // metadata stream
+  Object structTreeRoot;       // structure tree root dictionary
   GBool ok;                    // true if catalog is valid
 
-  int readPageTree(Dict *pages, PageAttrs *attrs, int start);
+  int readPageTree(Dict *pages, PageAttrs *attrs, int start,
+                  GBool printCommands);
   Object *findDestInTree(Object *tree, GString *name, Object *obj);
 };
 
index e202bc7a6d69d1901d83a3e681253f2f5ffb2327..f0f6fe1127a2dc2d419c4ad0d731d2d65800eede 100644 (file)
@@ -1,3 +1,21 @@
+2002-08-12  Martin Kretzschmar  <Martin.Kretzschmar@inf.tu-dresden.de>
+
+       * GOutputDev.cc: make it compile (without Type 3 support for now)
+
+       * bonobo-application-x-pdf.cc: Derek has removed the global xref
+       variable. Remove the ``Ugly global xref fix''
+
+2002-08-09  Martin Kretzschmar  <Martin.Kretzschmar@inf.tu-dresden.de>
+
+       * BonoboStream.h: ditto.
+
+       * BonoboStream.cc: sync with FileStream.
+
+       Merge in Xpdf 1.01 files
+
+       * GOutputDev.cc (drawImage), (drawImageMask): use gdk_image_get
+       as XGetSubImage 
+
 2002-08-05  Martin Kretzschmar  <Martin.Kretzschmar@inf.tu-dresden.de>
 
        * GOutputDev.h: ditto. 
diff --git a/pdf/xpdf/CharCodeToUnicode.cc b/pdf/xpdf/CharCodeToUnicode.cc
new file mode 100644 (file)
index 0000000..912981e
--- /dev/null
@@ -0,0 +1,390 @@
+//========================================================================
+//
+// CharCodeToUnicode.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <stdio.h>
+#include <string.h>
+#include "gmem.h"
+#include "gfile.h"
+#include "GString.h"
+#include "Error.h"
+#include "GlobalParams.h"
+#include "PSTokenizer.h"
+#include "CharCodeToUnicode.h"
+
+//------------------------------------------------------------------------
+
+#define maxUnicodeString 8
+
+struct CharCodeToUnicodeString {
+  CharCode c;
+  Unicode u[maxUnicodeString];
+  int len;
+};
+
+//------------------------------------------------------------------------
+
+static int getCharFromString(void *data) {
+  char *p;
+  int c;
+
+  p = *(char **)data;
+  if (*p) {
+    c = *p++;
+    *(char **)data = p;
+  } else {
+    c = EOF;
+  }
+  return c;
+}
+
+static int getCharFromFile(void *data) {
+  return fgetc((FILE *)data);
+}
+
+//------------------------------------------------------------------------
+
+CharCodeToUnicode *CharCodeToUnicode::parseCIDToUnicode(GString *collectionA) {
+  FILE *f;
+  Unicode *mapA;
+  CharCode size, mapLenA;
+  char buf[64];
+  Unicode u;
+  CharCodeToUnicode *ctu;
+
+  if (!(f = globalParams->getCIDToUnicodeFile(collectionA))) {
+    error(-1, "Couldn't find cidToUnicode file for the '%s' collection",
+         collectionA->getCString());
+    return NULL;
+  }
+
+  size = 32768;
+  mapA = (Unicode *)gmalloc(size * sizeof(Unicode));
+  mapLenA = 0;
+
+  while (getLine(buf, sizeof(buf), f)) {
+    if (mapLenA == size) {
+      size *= 2;
+      mapA = (Unicode *)grealloc(mapA, size * sizeof(Unicode));
+    }
+    if (sscanf(buf, "%x", &u) == 1) {
+      mapA[mapLenA] = u;
+    } else {
+      error(-1, "Bad line (%d) in cidToUnicode file for the '%s' collection",
+           (int)(mapLenA + 1), collectionA->getCString());
+      mapA[mapLenA] = 0;
+    }
+    ++mapLenA;
+  }
+
+  ctu = new CharCodeToUnicode(collectionA->copy(), mapA, mapLenA, gTrue,
+                             NULL, 0);
+  gfree(mapA);
+  return ctu;
+}
+
+CharCodeToUnicode *CharCodeToUnicode::make8BitToUnicode(Unicode *toUnicode) {
+  return new CharCodeToUnicode(NULL, toUnicode, 256, gTrue, NULL, 0);
+}
+
+CharCodeToUnicode *CharCodeToUnicode::parseCMap(GString *buf, int nBits) {
+  CharCodeToUnicode *ctu;
+  char *p;
+
+  ctu = new CharCodeToUnicode(NULL);
+  p = buf->getCString();
+  ctu->parseCMap1(&getCharFromString, &p, nBits);
+  return ctu;
+}
+
+void CharCodeToUnicode::parseCMap1(int (*getCharFunc)(void *), void *data,
+                                  int nBits) {
+  PSTokenizer *pst;
+  char tok1[256], tok2[256], tok3[256];
+  int nDigits, n1, n2, n3;
+  CharCode oldLen, i;
+  CharCode code1, code2;
+  Unicode u;
+  char uHex[5];
+  int j;
+  GString *name;
+  FILE *f;
+
+  nDigits = nBits / 4;
+  pst = new PSTokenizer(getCharFunc, data);
+  pst->getToken(tok1, sizeof(tok1), &n1);
+  while (pst->getToken(tok2, sizeof(tok2), &n2)) {
+    if (!strcmp(tok2, "usecmap")) {
+      if (tok1[0] == '/') {
+       name = new GString(tok1 + 1);
+       if ((f = globalParams->findToUnicodeFile(name))) {
+         parseCMap1(&getCharFromFile, f, nBits);
+         fclose(f);
+       } else {
+         error(-1, "Couldn't find ToUnicode CMap file for '%s'",
+               name->getCString());
+       }
+       delete name;
+      }
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else if (!strcmp(tok2, "beginbfchar")) {
+      while (pst->getToken(tok1, sizeof(tok1), &n1)) {
+       if (!strcmp(tok1, "endbfchar")) {
+         break;
+       }
+       if (!pst->getToken(tok2, sizeof(tok2), &n2) ||
+           !strcmp(tok2, "endbfchar")) {
+         error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
+         break;
+       }
+       if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
+             tok2[0] == '<' && tok2[n2 - 1] == '>')) {
+         error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
+         continue;
+       }
+       tok1[n1 - 1] = tok2[n2 - 1] = '\0';
+       if (sscanf(tok1 + 1, "%x", &code1) != 1) {
+         error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
+         continue;
+       }
+       if (code1 >= mapLen) {
+         oldLen = mapLen;
+         mapLen = (code1 + 256) & ~255;
+         map = (Unicode *)grealloc(map, mapLen * sizeof(Unicode));
+         for (i = oldLen; i < mapLen; ++i) {
+           map[i] = 0;
+         }
+       }
+       if (n2 == 6) {
+         if (sscanf(tok2 + 1, "%x", &u) != 1) {
+           error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
+           continue;
+         }
+         map[code1] = u;
+       } else {
+         map[code1] = 0;
+         if (sMapLen == sMapSize) {
+           sMapSize += 8;
+           sMap = (CharCodeToUnicodeString *)
+               grealloc(sMap, sMapSize * sizeof(CharCodeToUnicodeString));
+         }
+         sMap[sMapLen].c = code1;
+         sMap[sMapLen].len = (n2 - 2) / 4;
+         for (j = 0; j < sMap[sMapLen].len && j < maxUnicodeString; ++j) {
+           strncpy(uHex, tok2 + 1 + j*4, 4);
+           uHex[4] = '\0';
+           if (sscanf(uHex, "%x", &sMap[sMapLen].u[j]) != 1) {
+             error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
+           }
+         }
+         ++sMapLen;
+       }
+      }
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else if (!strcmp(tok2, "beginbfrange")) {
+      while (pst->getToken(tok1, sizeof(tok1), &n1)) {
+       if (!strcmp(tok1, "endbfrange")) {
+         break;
+       }
+       if (!pst->getToken(tok2, sizeof(tok2), &n2) ||
+           !strcmp(tok2, "endbfrange") ||
+           !pst->getToken(tok3, sizeof(tok3), &n3) ||
+           !strcmp(tok3, "endbfrange")) {
+         error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
+         break;
+       }
+       if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
+             n2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>' &&
+             tok3[0] == '<' && tok3[n3 - 1] == '>')) {
+         error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
+         continue;
+       }
+       tok1[n1 - 1] = tok2[n2 - 1] = tok3[n3 - 1] = '\0';
+       if (sscanf(tok1 + 1, "%x", &code1) != 1 ||
+           sscanf(tok2 + 1, "%x", &code2) != 1) {
+         error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
+         continue;
+       }
+       if (code2 >= mapLen) {
+         oldLen = mapLen;
+         mapLen = (code2 + 256) & ~255;
+         map = (Unicode *)grealloc(map, mapLen * sizeof(Unicode));
+         for (i = oldLen; i < mapLen; ++i) {
+           map[i] = 0;
+         }
+       }
+       if (n3 == 6) {
+         if (sscanf(tok3 + 1, "%x", &u) != 1) {
+           error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
+           continue;
+         }
+         for (; code1 <= code2; ++code1) {
+           map[code1] = u++;
+         }
+       } else {
+         if (sMapLen + (int)(code2 - code1 + 1) > sMapSize) {
+           sMapSize = (sMapSize + (code2 - code1 + 1) + 7) & ~7;
+           sMap = (CharCodeToUnicodeString *)
+               grealloc(sMap, sMapSize * sizeof(CharCodeToUnicodeString));
+         }
+         for (i = 0; code1 <= code2; ++code1, ++i) {
+           map[code1] = 0;
+           sMap[sMapLen].c = code1;
+           sMap[sMapLen].len = (n3 - 2) / 4;
+           for (j = 0; j < sMap[sMapLen].len && j < maxUnicodeString; ++j) {
+             strncpy(uHex, tok3 + 1 + j*4, 4);
+             uHex[4] = '\0';
+             if (sscanf(uHex, "%x", &sMap[sMapLen].u[j]) != 1) {
+               error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
+             }
+           }
+           sMap[sMapLen].u[sMap[sMapLen].len - 1] += i;
+           ++sMapLen;
+         }
+       }
+      }
+      pst->getToken(tok1, sizeof(tok1), &n1);
+    } else {
+      strcpy(tok1, tok2);
+    }
+  }
+  delete pst;
+}
+
+CharCodeToUnicode::CharCodeToUnicode(GString *collectionA) {
+  CharCode i;
+
+  collection = collectionA;
+  mapLen = 256;
+  map = (Unicode *)gmalloc(mapLen * sizeof(Unicode));
+  for (i = 0; i < mapLen; ++i) {
+    map[i] = 0;
+  }
+  sMap = NULL;
+  sMapLen = sMapSize = 0;
+  refCnt = 1;
+}
+
+CharCodeToUnicode::CharCodeToUnicode(GString *collectionA, Unicode *mapA,
+                                    CharCode mapLenA, GBool copyMap,
+                                    CharCodeToUnicodeString *sMapA,
+                                    int sMapLenA) {
+  collection = collectionA;
+  mapLen = mapLenA;
+  if (copyMap) {
+    map = (Unicode *)gmalloc(mapLen * sizeof(Unicode));
+    memcpy(map, mapA, mapLen * sizeof(Unicode));
+  } else {
+    map = mapA;
+  }
+  sMap = sMapA;
+  sMapLen = sMapSize = sMapLenA;
+  refCnt = 1;
+}
+
+CharCodeToUnicode::~CharCodeToUnicode() {
+  if (collection) {
+    delete collection;
+  }
+  gfree(map);
+  if (sMap) {
+    gfree(sMap);
+  }
+}
+
+void CharCodeToUnicode::incRefCnt() {
+  ++refCnt;
+}
+
+void CharCodeToUnicode::decRefCnt() {
+  if (--refCnt == 0) {
+    delete this;
+  }
+}
+
+GBool CharCodeToUnicode::match(GString *collectionA) {
+  return collection && !collection->cmp(collectionA);
+}
+
+int CharCodeToUnicode::mapToUnicode(CharCode c, Unicode *u, int size) {
+  int i, j;
+
+  if (c >= mapLen) {
+    return 0;
+  }
+  if (map[c]) {
+    u[0] = map[c];
+    return 1;
+  }
+  for (i = 0; i < sMapLen; ++i) {
+    if (sMap[i].c == c) {
+      for (j = 0; j < sMap[i].len && j < size; ++j) {
+       u[j] = sMap[i].u[j];
+      }
+      return j;
+    }
+  }
+  return 0;
+}
+
+//------------------------------------------------------------------------
+
+CIDToUnicodeCache::CIDToUnicodeCache() {
+  int i;
+
+  for (i = 0; i < cidToUnicodeCacheSize; ++i) {
+    cache[i] = NULL;
+  }
+}
+
+CIDToUnicodeCache::~CIDToUnicodeCache() {
+  int i;
+
+  for (i = 0; i < cidToUnicodeCacheSize; ++i) {
+    if (cache[i]) {
+      cache[i]->decRefCnt();
+    }
+  }
+}
+
+CharCodeToUnicode *CIDToUnicodeCache::getCIDToUnicode(GString *collection) {
+  CharCodeToUnicode *ctu;
+  int i, j;
+
+  if (cache[0] && cache[0]->match(collection)) {
+    cache[0]->incRefCnt();
+    return cache[0];
+  }
+  for (i = 1; i < cidToUnicodeCacheSize; ++i) {
+    if (cache[i] && cache[i]->match(collection)) {
+      ctu = cache[i];
+      for (j = i; j >= 1; --j) {
+       cache[j] = cache[j - 1];
+      }
+      cache[0] = ctu;
+      ctu->incRefCnt();
+      return ctu;
+    }
+  }
+  if ((ctu = CharCodeToUnicode::parseCIDToUnicode(collection))) {
+    if (cache[cidToUnicodeCacheSize - 1]) {
+      cache[cidToUnicodeCacheSize - 1]->decRefCnt();
+    }
+    for (j = cidToUnicodeCacheSize - 1; j >= 1; --j) {
+      cache[j] = cache[j - 1];
+    }
+    cache[0] = ctu;
+    ctu->incRefCnt();
+    return ctu;
+  }
+  return NULL;
+}
diff --git a/pdf/xpdf/CharCodeToUnicode.h b/pdf/xpdf/CharCodeToUnicode.h
new file mode 100644 (file)
index 0000000..06916c8
--- /dev/null
@@ -0,0 +1,88 @@
+//========================================================================
+//
+// CharCodeToUnicode.h
+//
+// Mapping from character codes to Unicode.
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef CHARCODETOUNICODE_H
+#define CHARCODETOUNICODE_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "CharTypes.h"
+
+struct CharCodeToUnicodeString;
+
+//------------------------------------------------------------------------
+
+class CharCodeToUnicode {
+public:
+
+  // Create the CID-to-Unicode mapping specified by <collection>.
+  // This reads a .cidToUnicode file from disk.  Sets the initial
+  // reference count to 1.  Returns NULL on failure.
+  static CharCodeToUnicode *parseCIDToUnicode(GString *collectionA);
+
+  // Create the CharCode-to-Unicode mapping for an 8-bit font.
+  // <toUnicode> is an array of 256 Unicode indexes.  Sets the initial
+  // reference count to 1.
+  static CharCodeToUnicode *make8BitToUnicode(Unicode *toUnicode);
+
+  // Parse a ToUnicode CMap for an 8- or 16-bit font.
+  static CharCodeToUnicode *parseCMap(GString *buf, int nBits);
+
+  ~CharCodeToUnicode();
+
+  void incRefCnt();
+  void decRefCnt();
+
+  // Return true if this mapping matches the specified <collectionA>.
+  GBool match(GString *collectionA);
+
+  // Map a CharCode to Unicode.
+  int mapToUnicode(CharCode c, Unicode *u, int size);
+
+private:
+
+  void parseCMap1(int (*getCharFunc)(void *), void *data, int nBits);
+  CharCodeToUnicode(GString *collectionA);
+  CharCodeToUnicode(GString *collectionA, Unicode *mapA,
+                   CharCode mapLenA, GBool copyMap,
+                   CharCodeToUnicodeString *sMapA, int sMapLenA);
+
+  GString *collection;
+  Unicode *map;
+  CharCode mapLen;
+  CharCodeToUnicodeString *sMap;
+  int sMapLen, sMapSize;
+  int refCnt;
+};
+
+//------------------------------------------------------------------------
+
+#define cidToUnicodeCacheSize 4
+
+class CIDToUnicodeCache {
+public:
+
+  CIDToUnicodeCache();
+  ~CIDToUnicodeCache();
+
+  // Get the CharCodeToUnicode object for <collection>.  Increments
+  // its reference count; there will be one reference for the cache
+  // plus one for the caller of this function.  Returns NULL on
+  // failure.
+  CharCodeToUnicode *getCIDToUnicode(GString *collection);
+
+private:
+
+  CharCodeToUnicode *cache[cidToUnicodeCacheSize];
+};
+
+#endif
diff --git a/pdf/xpdf/CharTypes.h b/pdf/xpdf/CharTypes.h
new file mode 100644 (file)
index 0000000..bae2f26
--- /dev/null
@@ -0,0 +1,24 @@
+//========================================================================
+//
+// CharTypes.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef CHARTYPES_H
+#define CHARTYPES_H
+
+// Unicode character.
+typedef unsigned int Unicode;
+
+// Character ID for CID character collections.
+typedef unsigned int CID;
+
+// This is large enough to hold any of the following:
+// - 8-bit char code
+// - 16-bit CID
+// - Unicode
+typedef unsigned int CharCode;
+
+#endif
similarity index 99%
rename from pdf/xpdf/CompactFontInfo.h
rename to pdf/xpdf/CompactFontTables.h
index c6426602977dfdec3d9ed42cc49ece700884a77d..62d6f5a3ff3fc9e6ccfc164bd4674c1b5cbf961a 100644 (file)
@@ -1,8 +1,8 @@
 //========================================================================
 //
-// CompactFontInfo.h
+// CompactFontTables.h
 //
-// Copyright 1999 Derek B. Noonburg
+// Copyright 1999-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
index ae9b73239db692f92197f7191d4c1ceb5c1be874..8de40911a0e192366ac2e9e891521b5cce0278ae 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Decrypt.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include "gmem.h"
 #include "Decrypt.h"
 
@@ -28,42 +29,96 @@ static Guchar passwordPad[32] = {
 // Decrypt
 //------------------------------------------------------------------------
 
-Decrypt::Decrypt(Guchar *fileKey, int objNum, int objGen) {
+Decrypt::Decrypt(Guchar *fileKey, int keyLength, int objNum, int objGen) {
+  int i;
+
   // construct object key
-  objKey[0] = fileKey[0];
-  objKey[1] = fileKey[1];
-  objKey[2] = fileKey[2];
-  objKey[3] = fileKey[3];
-  objKey[4] = fileKey[4];
-  objKey[5] = objNum & 0xff;
-  objKey[6] = (objNum >> 8) & 0xff;
-  objKey[7] = (objNum >> 16) & 0xff;
-  objKey[8] = objGen & 0xff;
-  objKey[9] = (objGen >> 8) & 0xff;
-  md5(objKey, 10, objKey);
+  for (i = 0; i < keyLength; ++i) {
+    objKey[i] = fileKey[i];
+  }
+  objKey[keyLength] = objNum & 0xff;
+  objKey[keyLength + 1] = (objNum >> 8) & 0xff;
+  objKey[keyLength + 2] = (objNum >> 16) & 0xff;
+  objKey[keyLength + 3] = objGen & 0xff;
+  objKey[keyLength + 4] = (objGen >> 8) & 0xff;
+  md5(objKey, keyLength + 5, objKey);
 
   // set up for decryption
   x = y = 0;
-  rc4InitKey(objKey, 10, state);
+  if ((objKeyLength = keyLength + 5) > 16) {
+    objKeyLength = 16;
+  }
+  rc4InitKey(objKey, objKeyLength, state);
 }
 
 void Decrypt::reset() {
   x = y = 0;
-  rc4InitKey(objKey, 10, state);
+  rc4InitKey(objKey, objKeyLength, state);
 }
 
 Guchar Decrypt::decryptByte(Guchar c) {
   return rc4DecryptByte(state, &x, &y, c);
 }
 
-GBool Decrypt::makeFileKey(GString *ownerKey, GString *userKey,
+GBool Decrypt::makeFileKey(int encVersion, int encRevision, int keyLength,
+                          GString *ownerKey, GString *userKey,
                           int permissions, GString *fileID,
-                          GString *userPassword, Guchar *fileKey) {
-  Guchar *buf;
-  Guchar userTest[32];
+                          GString *ownerPassword, GString *userPassword,
+                          Guchar *fileKey, GBool *ownerPasswordOk) {
+  Guchar test[32];
+  GString *userPassword2;
   Guchar fState[256];
   Guchar fx, fy;
   int len, i;
+
+  // try using the supplied owner password to generate the user password
+  if (ownerPassword) {
+    len = ownerPassword->getLength();
+    if (len < 32) {
+      memcpy(test, ownerPassword->getCString(), len);
+      memcpy(test + len, passwordPad, 32 - len);
+    } else {
+      memcpy(test, ownerPassword->getCString(), 32);
+    }
+  } else {
+    memcpy(test, passwordPad, 32);
+  }
+  md5(test, 32, test);
+  if (encRevision == 3) {
+    for (i = 0; i < 50; ++i) {
+      md5(test, 16, test);
+    }
+  }
+  rc4InitKey(test, keyLength, fState);
+  fx = fy = 0;
+  for (i = 0; i < 32; ++i) {
+    test[i] = rc4DecryptByte(fState, &fx, &fy, ownerKey->getChar(i));
+  }
+  userPassword2 = new GString((char *)test, 32);
+  if (makeFileKey2(encVersion, encRevision, keyLength, ownerKey, userKey,
+                  permissions, fileID, userPassword2, fileKey)) {
+    *ownerPasswordOk = gTrue;
+    delete userPassword2;
+    return gTrue;
+  }
+  *ownerPasswordOk = gFalse;
+  delete userPassword2;
+
+  // try using the supplied user password
+  return makeFileKey2(encVersion, encRevision, keyLength, ownerKey, userKey,
+                     permissions, fileID, userPassword, fileKey);
+}
+
+GBool Decrypt::makeFileKey2(int encVersion, int encRevision, int keyLength,
+                           GString *ownerKey, GString *userKey,
+                           int permissions, GString *fileID,
+                           GString *userPassword, Guchar *fileKey) {
+  Guchar *buf;
+  Guchar test[32];
+  Guchar fState[256];
+  Guchar tmpKey[16];
+  Guchar fx, fy;
+  int len, i, j;
   GBool ok;
 
   // generate file key
@@ -86,16 +141,41 @@ GBool Decrypt::makeFileKey(GString *ownerKey, GString *userKey,
   buf[67] = (permissions >> 24) & 0xff;
   memcpy(buf + 68, fileID->getCString(), fileID->getLength());
   md5(buf, 68 + fileID->getLength(), fileKey);
+  if (encRevision == 3) {
+    for (i = 0; i < 50; ++i) {
+      md5(fileKey, 16, fileKey);
+    }
+  }
 
-  // test user key
-  fx = fy = 0;
-  rc4InitKey(fileKey, 5, fState);
-  for (i = 0; i < 32; ++i) {
-    userTest[i] = rc4DecryptByte(fState, &fx, &fy, userKey->getChar(i));
+  // test user password
+  if (encRevision == 2) {
+    rc4InitKey(fileKey, keyLength, fState);
+    fx = fy = 0;
+    for (i = 0; i < 32; ++i) {
+      test[i] = rc4DecryptByte(fState, &fx, &fy, userKey->getChar(i));
+    }
+    ok = memcmp(test, passwordPad, 32) == 0;
+  } else if (encRevision == 3) {
+    memcpy(test, userKey->getCString(), 32);
+    for (i = 19; i >= 0; --i) {
+      for (j = 0; j < keyLength; ++j) {
+       tmpKey[j] = fileKey[j] ^ i;
+      }
+      rc4InitKey(tmpKey, keyLength, fState);
+      fx = fy = 0;
+      for (j = 0; j < 32; ++j) {
+       test[j] = rc4DecryptByte(fState, &fx, &fy, test[j]);
+      }
+    }
+    memcpy(buf, passwordPad, 32);
+    memcpy(buf + 32, fileID->getCString(), fileID->getLength());
+    md5(buf, 32 + fileID->getLength(), buf);
+    ok = memcmp(test, buf, 16) == 0;
+  } else {
+    ok = gFalse;
   }
-  ok = memcmp(userTest, passwordPad, 32) == 0;
-  gfree(buf);
 
+  gfree(buf);
   return ok;
 }
 
@@ -136,6 +216,7 @@ static Guchar rc4DecryptByte(Guchar *state, Guchar *x, Guchar *y, Guchar c) {
 // MD5 message digest
 //------------------------------------------------------------------------
 
+// this works around a bug in older Sun compilers
 static inline Gulong rotateLeft(Gulong x, int r) {
   x &= 0xffffffff;
   return ((x << r) | (x >> (32 - r))) & 0xffffffff;
index 3ea43741dc77c5b698402277d2a46a377dc02bb5..52afb2f6036d118c75151e21fc17404f687ff7ab 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Decrypt.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -24,7 +24,7 @@ class Decrypt {
 public:
 
   // Initialize the decryptor object.
-  Decrypt(Guchar *fileKey, int objNum, int objGen);
+  Decrypt(Guchar *fileKey, int keyLength, int objNum, int objGen);
 
   // Reset decryption.
   void reset();
@@ -32,16 +32,26 @@ public:
   // Decrypt one byte.
   Guchar decryptByte(Guchar c);
 
-  // Generate a file key.  The <fileKey> buffer must have space for
-  // at least 16 bytes.  Checks user key and returns gTrue if okay.
-  // <userPassword> may be NULL.
-  static GBool makeFileKey(GString *ownerKey, GString *userKey,
+  // Generate a file key.  The <fileKey> buffer must have space for at
+  // least 16 bytes.  Checks <ownerPassword> and then <userPassword>
+  // and returns true if either is correct.  Sets <ownerPasswordOk> if
+  // the owner password was correct.  Either or both of the passwords
+  // may be NULL, which is treated as an empty string.
+  static GBool makeFileKey(int encVersion, int encRevision, int keyLength,
+                          GString *ownerKey, GString *userKey,
                           int permissions, GString *fileID,
-                          GString *userPassword, Guchar *fileKey);
+                          GString *ownerPassword, GString *userPassword,
+                          Guchar *fileKey, GBool *ownerPasswordOk);
 
 private:
 
-  Guchar objKey[16];
+  static GBool makeFileKey2(int encVersion, int encRevision, int keyLength,
+                           GString *ownerKey, GString *userKey,
+                           int permissions, GString *fileID,
+                           GString *userPassword, Guchar *fileKey);
+
+  int objKeyLength;
+  Guchar objKey[21];
   Guchar state[256];
   Guchar x, y;
 };
index c9f4feca6963f8fbdd0b664d7c9ba19493d648dd..5eb077e0937cab2186de3417d37230bd5c010d12 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Dict.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include <string.h>
 #include "gmem.h"
@@ -21,7 +22,8 @@
 // Dict
 //------------------------------------------------------------------------
 
-Dict::Dict() {
+Dict::Dict(XRef *xrefA) {
+  xref = xrefA;
   entries = NULL;
   size = length = 0;
   ref = 1;
@@ -66,7 +68,7 @@ GBool Dict::is(char *type) {
 Object *Dict::lookup(char *key, Object *obj) {
   DictEntry *e;
 
-  return (e = find(key)) ? e->val.fetch(obj) : obj->initNull();
+  return (e = find(key)) ? e->val.fetch(xref, obj) : obj->initNull();
 }
 
 Object *Dict::lookupNF(char *key, Object *obj) {
@@ -80,7 +82,7 @@ char *Dict::getKey(int i) {
 }
 
 Object *Dict::getVal(int i, Object *obj) {
-  return entries[i].val.fetch(obj);
+  return entries[i].val.fetch(xref, obj);
 }
 
 Object *Dict::getValNF(int i, Object *obj) {
index cfc64d3b22bacd9dce14b8634ecf8f2b3ed33750..b9945144f18730315fdbc1e3a2c56d35ab595535 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Dict.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -28,7 +28,7 @@ class Dict {
 public:
 
   // Constructor.
-  Dict();
+  Dict(XRef *xrefA);
 
   // Destructor.
   ~Dict();
@@ -56,8 +56,14 @@ public:
   Object *getVal(int i, Object *obj);
   Object *getValNF(int i, Object *obj);
 
+  // Set the xref pointer.  This is only used in one special case: the
+  // trailer dictionary, which is read before the xref table is
+  // parsed.
+  void setXRef(XRef *xrefA) { xref = xrefA; }
+
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   DictEntry *entries;          // array of entries
   int size;                    // size of <entries> array
   int length;                  // number of entries in dictionary
diff --git a/pdf/xpdf/DisplayFontTable.h b/pdf/xpdf/DisplayFontTable.h
new file mode 100644 (file)
index 0000000..4606031
--- /dev/null
@@ -0,0 +1,29 @@
+//========================================================================
+//
+// DisplayFontTable.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+static struct {
+  char *name;
+  char *xlfd;
+  char *encoding;
+} displayFontTab[] = {
+  {"Courier",               "-*-courier-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",         "Latin1"},
+  {"Courier-Bold",          "-*-courier-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",           "Latin1"},
+  {"Courier-BoldOblique",   "-*-courier-bold-o-normal-*-%s-*-*-*-*-*-iso8859-1",           "Latin1"},
+  {"Courier-Oblique",       "-*-courier-medium-o-normal-*-%s-*-*-*-*-*-iso8859-1",         "Latin1"},
+  {"Helvetica",             "-*-helvetica-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",       "Latin1"},
+  {"Helvetica-Bold",        "-*-helvetica-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",         "Latin1"},
+  {"Helvetica-BoldOblique", "-*-helvetica-bold-o-normal-*-%s-*-*-*-*-*-iso8859-1",         "Latin1"},
+  {"Helvetica-Oblique",     "-*-helvetica-medium-o-normal-*-%s-*-*-*-*-*-iso8859-1",       "Latin1"},
+  {"Symbol",                "-*-symbol-medium-r-normal-*-%s-*-*-*-*-*-adobe-fontspecific", "Symbol"},
+  {"Times-Bold",            "-*-times-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",             "Latin1"},
+  {"Times-BoldItalic",      "-*-times-bold-i-normal-*-%s-*-*-*-*-*-iso8859-1",             "Latin1"},
+  {"Times-Italic",          "-*-times-medium-i-normal-*-%s-*-*-*-*-*-iso8859-1",           "Latin1"},
+  {"Times-Roman",           "-*-times-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",           "Latin1"},
+  {"ZapfDingbats",          "-*-zapfdingbats-medium-r-normal-*-%s-*-*-*-*-*-*-*",          "ZapfDingbats"},
+  {NULL}
+};
index 485a7cb479c06027fb74730df2f89fffcfe75e0e..3eae5c9c117d72df5d55e5b10c072b15e6cd8e25 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Error.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stddef.h>
 #include <stdarg.h>
-#include "gtypes.h"
-#include "Params.h"
+#include "GlobalParams.h"
 #include "Error.h"
 
-FILE *errFile;
-GBool errQuiet;
-
-void errorInit() {
-  if (errQuiet) {
-    errFile = NULL;
-  } else {
-    errFile = stderr;
-  }
-}
-
 void CDECL error(int pos, char *msg, ...) {
   va_list args;
 
-  if (errQuiet) {
+  // NB: this can be called before the globalParams object is created
+  if (globalParams && globalParams->getErrQuiet()) {
     return;
   }
-  if (printCommands) {
-    fflush(stdout);
-  }
   if (pos >= 0) {
-    fprintf(errFile, "Error (%d): ", pos);
+    fprintf(stderr, "Error (%d): ", pos);
   } else {
-    fprintf(errFile, "Error: ");
+    fprintf(stderr, "Error: ");
   }
   va_start(args, msg);
-  vfprintf(errFile, msg, args);
+  vfprintf(stderr, msg, args);
   va_end(args);
-  fprintf(errFile, "\n");
-  fflush(errFile);
+  fprintf(stderr, "\n");
+  fflush(stderr);
 }
index f651678c85c44405b3e9c83c5e294591e10254f8..77801c5912a26b497240b188d58b2f19e22cf6f3 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Error.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #include <stdio.h>
 #include "config.h"
 
-// File to send error (and other) messages to.
-extern FILE *errFile;
-
-extern void errorInit();
-
 extern void CDECL error(int pos, char *msg, ...);
 
 #endif
diff --git a/pdf/xpdf/ErrorCodes.h b/pdf/xpdf/ErrorCodes.h
new file mode 100644 (file)
index 0000000..4e0d38a
--- /dev/null
@@ -0,0 +1,24 @@
+//========================================================================
+//
+// ErrorCodes.h
+//
+// Copyright 2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef ERRORCODES_H
+#define ERRORCODES_H
+
+#define errNone             0  // no error
+
+#define errOpenFile         1  // couldn't open the PDF file
+
+#define errBadCatalog       2  // couldn't read the page catalog
+
+#define errDamaged          3  // PDF file was damaged and couldn't be
+                               // repaired
+
+#define errEncrypted        4  // file was encrypted and password was
+                               // incorrect or not supplied
+
+#endif
diff --git a/pdf/xpdf/FTFont.cc b/pdf/xpdf/FTFont.cc
new file mode 100644 (file)
index 0000000..0524c7e
--- /dev/null
@@ -0,0 +1,685 @@
+//========================================================================
+//
+// FTFont.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+#include <math.h>
+#include <string.h>
+#include "gmem.h"
+#include "freetype/ftoutln.h"
+#include "freetype/internal/ftobjs.h"
+#if 1 //~ cff cid->gid map
+#include "freetype/internal/cfftypes.h"
+#include "freetype/internal/tttypes.h"
+#endif
+#include "GlobalParams.h"
+#include "GfxState.h"
+#include "FTFont.h"
+
+//------------------------------------------------------------------------
+
+FTFontEngine::FTFontEngine(Display *displayA, Visual *visualA, int depthA,
+                          Colormap colormapA, GBool aaA):
+  SFontEngine(displayA, visualA, depthA, colormapA) {
+
+  ok = gFalse;
+  if (FT_Init_FreeType(&lib)) {
+    return;
+  }
+  aa = aaA;
+  ok = gTrue;
+}
+
+FTFontEngine::~FTFontEngine() {
+  FT_Done_FreeType(lib);
+}
+
+//------------------------------------------------------------------------
+
+FTFontFile::FTFontFile(FTFontEngine *engineA, char *fontFileName,
+                      char **fontEnc, GBool pdfFontHasEncoding) {
+  char *name;
+  int unicodeCmap, macRomanCmap, msSymbolCmap;
+  int i, j;
+
+  ok = gFalse;
+  engine = engineA;
+  codeMap = NULL;
+  if (FT_New_Face(engine->lib, fontFileName, 0, &face)) {
+    return;
+  }
+
+  if (!strcmp(face->driver->root.clazz->module_name, "type1") ||
+      !strcmp(face->driver->root.clazz->module_name, "cff")) {
+
+    mode = ftFontModeCodeMapDirect;
+    codeMap = (Guint *)gmalloc(256 * sizeof(Guint));
+    for (i = 0; i < 256; ++i) {
+      codeMap[i] = 0;
+      if ((name = fontEnc[i])) {
+       codeMap[i] = FT_Get_Name_Index(face, name);
+      }
+    }
+
+  } else {
+
+    // To match up with the Adobe-defined behaviour, we choose a cmap
+    // like this:
+    // 1. If the PDF font has an encoding:
+    //    1a. If the TrueType font has a Microsoft Unicode cmap, use it,
+    //        and use the Unicode indexes, not the char codes.
+    //    1b. If the TrueType font has a Macintosh Roman cmap, use it,
+    //        and reverse map the char names through MacRomanEncoding to
+    //        get char codes.
+    // 2. If the PDF font does not have an encoding:
+    //    2a. If the TrueType font has a Macintosh Roman cmap, use it,
+    //        and use char codes directly.
+    //    2b. If the TrueType font has a Microsoft Symbol cmap, use it,
+    //        and use (0xf000 + char code).
+    // 3. If none of these rules apply, use the first cmap and hope for
+    //    the best (this shouldn't happen).
+    unicodeCmap = macRomanCmap = msSymbolCmap = 0xffff;
+    for (i = 0; i < face->num_charmaps; ++i) {
+      if (face->charmaps[i]->platform_id == 3 &&
+         face->charmaps[i]->encoding_id == 1) {
+       unicodeCmap = i;
+      } else if (face->charmaps[i]->platform_id == 1 &&
+                face->charmaps[i]->encoding_id == 0) {
+       macRomanCmap = i;
+      } else if (face->charmaps[i]->platform_id == 3 &&
+                face->charmaps[i]->encoding_id == 0) {
+       msSymbolCmap = i;
+      }
+    }
+    i = 0;
+    mode = ftFontModeCharCode;
+    charMapOffset = 0;
+    if (pdfFontHasEncoding) {
+      if (unicodeCmap != 0xffff) {
+       i = unicodeCmap;
+       mode = ftFontModeUnicode;
+      } else if (macRomanCmap != 0xffff) {
+       i = macRomanCmap;
+       mode = ftFontModeCodeMap;
+       codeMap = (Guint *)gmalloc(256 * sizeof(Guint));
+       for (j = 0; j < 256; ++j) {
+         if (fontEnc[j]) {
+           codeMap[j] = globalParams->getMacRomanCharCode(fontEnc[j]);
+         } else {
+           codeMap[j] = 0;
+         }
+       }
+      }
+    } else {
+      if (macRomanCmap != 0xffff) {
+       i = macRomanCmap;
+       mode = ftFontModeCharCode;
+      } else if (msSymbolCmap != 0xffff) {
+       i = msSymbolCmap;
+       mode = ftFontModeCharCodeOffset;
+       charMapOffset = 0xf000;
+      }
+    }
+    if (FT_Set_Charmap(face, face->charmaps[i])) {
+      return;
+    }
+  }
+
+  ok = gTrue;
+}
+
+FTFontFile::FTFontFile(FTFontEngine *engineA, char *fontFileName,
+                      Gushort *cidToGIDA, int cidToGIDLenA) {
+  ok = gFalse;
+  engine = engineA;
+  codeMap = NULL;
+  if (FT_New_Face(engine->lib, fontFileName, 0, &face)) {
+    return;
+  }
+  cidToGID = cidToGIDA;
+  cidToGIDLen = cidToGIDLenA;
+  mode = ftFontModeCIDToGIDMap;
+  ok = gTrue;
+}
+
+FTFontFile::FTFontFile(FTFontEngine *engineA, char *fontFileName) {
+  ok = gFalse;
+  engine = engineA;
+  codeMap = NULL;
+  if (FT_New_Face(engine->lib, fontFileName, 0, &face)) {
+    return;
+  }
+  cidToGID = NULL;
+  cidToGIDLen = 0;
+  mode = ftFontModeCFFCharset;
+  ok = gTrue;
+}
+
+FTFontFile::~FTFontFile() {
+  if (face) {
+    FT_Done_Face(face);
+  }
+  if (codeMap) {
+    gfree(codeMap);
+  }
+}
+
+//------------------------------------------------------------------------
+
+FTFont::FTFont(FTFontFile *fontFileA, double *m) {
+  FTFontEngine *engine;
+  FT_Face face;
+  double size, div;
+  int x, xMin, xMax;
+  int y, yMin, yMax;
+  int i;
+
+  ok = gFalse;
+  fontFile = fontFileA;
+  engine = fontFile->engine;
+  face = fontFile->face;
+  if (FT_New_Size(face, &sizeObj)) {
+    return;
+  }
+  face->size = sizeObj;
+  size = sqrt(m[2]*m[2] + m[3]*m[3]);
+  if (FT_Set_Pixel_Sizes(face, 0, (int)size)) {
+    return;
+  }
+
+  div = face->bbox.xMax > 20000 ? 65536 : 1;
+
+  // transform the four corners of the font bounding box -- the min
+  // and max values form the bounding box of the transformed font
+  x = (int)((m[0] * face->bbox.xMin + m[2] * face->bbox.yMin) /
+           (div * face->units_per_EM));
+  xMin = xMax = x;
+  y = (int)((m[1] * face->bbox.xMin + m[3] * face->bbox.yMin) /
+           (div * face->units_per_EM));
+  yMin = yMax = y;
+  x = (int)((m[0] * face->bbox.xMin + m[2] * face->bbox.yMax) /
+           (div * face->units_per_EM));
+  if (x < xMin) {
+    xMin = x;
+  } else if (x > xMax) {
+    xMax = x;
+  }
+  y = (int)((m[1] * face->bbox.xMin + m[3] * face->bbox.yMax) /
+           (div * face->units_per_EM));
+  if (y < yMin) {
+    yMin = y;
+  } else if (y > yMax) {
+    yMax = y;
+  }
+  x = (int)((m[0] * face->bbox.xMax + m[2] * face->bbox.yMin) /
+           (div * face->units_per_EM));
+  if (x < xMin) {
+    xMin = x;
+  } else if (x > xMax) {
+    xMax = x;
+  }
+  y = (int)((m[1] * face->bbox.xMax + m[3] * face->bbox.yMin) /
+           (div * face->units_per_EM));
+  if (y < yMin) {
+    yMin = y;
+  } else if (y > yMax) {
+    yMax = y;
+  }
+  x = (int)((m[0] * face->bbox.xMax + m[2] * face->bbox.yMax) /
+           (div * face->units_per_EM));
+  if (x < xMin) {
+    xMin = x;
+  } else if (x > xMax) {
+    xMax = x;
+  }
+  y = (int)((m[1] * face->bbox.xMax + m[3] * face->bbox.yMax) /
+           (div * face->units_per_EM));
+  if (y < yMin) {
+    yMin = y;
+  } else if (y > yMax) {
+    yMax = y;
+  }
+  // This is a kludge: some buggy PDF generators embed fonts with
+  // zero bounding boxes.
+  if (xMax == xMin) {
+    xMin = 0;
+    xMax = (int)size;
+  }
+  if (yMax == yMin) {
+    yMin = 0;
+    yMax = (int)(1.2 * size);
+  }
+  // this should be (max - min + 1), but we add some padding to
+  // deal with rounding errors
+  glyphW = xMax - xMin + 3;
+  glyphH = yMax - yMin + 3;
+  // another kludge: some CJK TT fonts have bogus bboxes, so add more
+  // padding
+  if (face->num_glyphs > 1000) {
+    glyphW += glyphW >> 1;
+    glyphH += glyphH >> 1;
+  }
+  if (engine->aa) {
+    glyphSize = glyphW * glyphH;
+  } else {
+    glyphSize = ((glyphW + 7) >> 3) * glyphH;
+  }
+
+  // set up the glyph pixmap cache
+  cacheAssoc = 8;
+  if (glyphSize <= 256) {
+    cacheSets = 8;
+  } else if (glyphSize <= 512) {
+    cacheSets = 4;
+  } else if (glyphSize <= 1024) {
+    cacheSets = 2;
+  } else {
+    cacheSets = 1;
+  }
+  cache = (Guchar *)gmalloc(cacheSets * cacheAssoc * glyphSize);
+  cacheTags = (FTFontCacheTag *)gmalloc(cacheSets * cacheAssoc *
+                                       sizeof(FTFontCacheTag));
+  for (i = 0; i < cacheSets * cacheAssoc; ++i) {
+    cacheTags[i].mru = i & (cacheAssoc - 1);
+  }
+
+  // create the XImage
+  if (!(image = XCreateImage(engine->display, engine->visual, engine->depth,
+                            ZPixmap, 0, NULL, glyphW, glyphH, 8, 0))) {
+    return;
+  }
+  image->data = (char *)gmalloc(glyphH * image->bytes_per_line);
+
+  // compute the transform matrix
+  matrix.xx = (FT_Fixed)((m[0] / size) * 65536);
+  matrix.yx = (FT_Fixed)((m[1] / size) * 65536);
+  matrix.xy = (FT_Fixed)((m[2] / size) * 65536);
+  matrix.yy = (FT_Fixed)((m[3] / size) * 65536);
+
+  ok = gTrue;
+}
+
+FTFont::~FTFont() {
+  gfree(cacheTags);
+  gfree(cache);
+  gfree(image->data);
+  image->data = NULL;
+  XDestroyImage(image);
+}
+
+GBool FTFont::drawChar(Drawable d, int w, int h, GC gc,
+                      int x, int y, int r, int g, int b,
+                      CharCode c, Unicode u) {
+  FTFontEngine *engine;
+  XColor xcolor;
+  int bgR, bgG, bgB;
+  Gulong colors[5];
+  Guchar *p;
+  int pix;
+  int xOffset, yOffset, x0, y0, x1, y1, gw, gh, w0, h0;
+  int xx, yy, xx1;
+
+  engine = fontFile->engine;
+
+  // no Unicode index for this char - don't draw anything
+  if (fontFile->mode == ftFontModeUnicode && u == 0) {
+    return gFalse;
+  }
+
+  // generate the glyph pixmap
+  if (!(p = getGlyphPixmap(c, u, &xOffset, &yOffset, &gw, &gh))) {
+    return gFalse;
+  }
+
+  // compute: (x0,y0) = position in destination drawable
+  //          (x1,y1) = position in glyph image
+  //          (w0,h0) = size of image transfer
+  x0 = x - xOffset;
+  y0 = y - yOffset;
+  x1 = 0;
+  y1 = 0;
+  w0 = gw;
+  h0 = gh;
+  if (x0 < 0) {
+    x1 = -x0;
+    w0 += x0;
+    x0 = 0;
+  }
+  if (x0 + w0 > w) {
+    w0 = w - x0;
+  }
+  if (w0 < 0) {
+    return gTrue;
+  }
+  if (y0 < 0) {
+    y1 = -y0;
+    h0 += y0;
+    y0 = 0;
+  }
+  if (y0 + h0 > h) {
+    h0 = h - y0;
+  }
+  if (h0 < 0) {
+    return gTrue;
+  }
+
+  // read the X image
+  XGetSubImage(engine->display, d, x0, y0, w0, h0, (1 << engine->depth) - 1,
+              ZPixmap, image, x1, y1);
+
+  if (engine->aa) {
+
+    // compute the colors
+    xcolor.pixel = XGetPixel(image, x1 + w0/2, y1 + h0/2);
+    XQueryColor(engine->display, engine->colormap, &xcolor);
+    bgR = xcolor.red;
+    bgG = xcolor.green;
+    bgB = xcolor.blue;
+    colors[1] = engine->findColor((r + 3*bgR) / 4,
+                                 (g + 3*bgG) / 4,
+                                 (b + 3*bgB) / 4);
+    colors[2] = engine->findColor((r + bgR) / 2,
+                                 (g + bgG) / 2,
+                                 (b + bgB) / 2);
+    colors[3] = engine->findColor((3*r + bgR) / 4,
+                                 (3*g + bgG) / 4,
+                                 (3*b + bgB) / 4);
+    colors[4] = engine->findColor(r, g, b);
+
+    // stuff the glyph pixmap into the X image
+    for (yy = 0; yy < gh; ++yy) {
+      for (xx = 0; xx < gw; ++xx) {
+       pix = *p++ & 0xff;
+       // this is a heuristic which seems to produce decent
+       // results -- the linear mapping would be:
+       // pix = (pix * 5) / 256;
+       pix = ((pix + 10) * 5) / 256;
+       if (pix > 4) {
+         pix = 4;
+       }
+       if (pix > 0) {
+         XPutPixel(image, xx, yy, colors[pix]);
+       }
+      }
+    }
+
+  } else {
+
+    // one color
+    colors[1] = engine->findColor(r, g, b);
+
+    // stuff the glyph bitmap into the X image
+    for (yy = 0; yy < gh; ++yy) {
+      for (xx = 0; xx < gw; xx += 8) {
+       pix = *p++;
+       for (xx1 = xx; xx1 < xx + 8 && xx1 < gw; ++xx1) {
+         if (pix & 0x80) {
+           XPutPixel(image, xx1, yy, colors[1]);
+         }
+         pix <<= 1;
+       }
+      }
+    }
+
+  }
+
+  // draw the X image
+  XPutImage(engine->display, d, gc, image, x1, y1, x0, y0, w0, h0);
+
+  return gTrue;
+}
+
+Guchar *FTFont::getGlyphPixmap(CharCode c, Unicode u,
+                              int *x, int *y, int *w, int *h) {
+  FT_GlyphSlot slot;
+  FT_UInt idx;
+  int gSize;
+  int i, j, k;
+  Guchar *ret;
+
+  // check the cache
+  i = (c & (cacheSets - 1)) * cacheAssoc;
+  for (j = 0; j < cacheAssoc; ++j) {
+    if ((cacheTags[i+j].mru & 0x8000) && cacheTags[i+j].code == c) {
+      *x = cacheTags[i+j].x;
+      *y = cacheTags[i+j].y;
+      *w = cacheTags[i+j].w;
+      *h = cacheTags[i+j].h;
+      for (k = 0; k < cacheAssoc; ++k) {
+       if (k != j &&
+           (cacheTags[i+k].mru & 0x7fff) < (cacheTags[i+j].mru & 0x7fff)) {
+         ++cacheTags[i+k].mru;
+       }
+      }
+      cacheTags[i+j].mru = 0x8000;
+      return cache + (i+j) * glyphSize;
+    }
+  }
+
+  // generate the glyph pixmap or bitmap
+  fontFile->face->size = sizeObj;
+  FT_Set_Transform(fontFile->face, &matrix, NULL);
+  slot = fontFile->face->glyph;
+  idx = getGlyphIndex(c, u);
+  // if we have the FT2 bytecode interpreter, autohinting won't be used
+#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+  if (FT_Load_Glyph(fontFile->face, idx, FT_LOAD_DEFAULT)) {
+    return gFalse;
+  }
+#else
+  // FT2's autohinting doesn't always work very well (especially with
+  // font subsets), so turn it off if anti-aliasing is enabled; if
+  // anti-aliasing is disabled, this seems to be a tossup - some fonts
+  // look better with hinting, some without, so leave hinting on
+  if (FT_Load_Glyph(fontFile->face, idx,
+                   fontFile->engine->aa ? FT_LOAD_NO_HINTING
+                                        : FT_LOAD_DEFAULT)) {
+    return gFalse;
+  }
+#endif
+  if (FT_Render_Glyph(slot,
+                     fontFile->engine->aa ? ft_render_mode_normal :
+                                            ft_render_mode_mono)) {
+    return gFalse;
+  }
+  *x = -slot->bitmap_left;
+  *y = slot->bitmap_top;
+  *w = slot->bitmap.width;
+  *h = slot->bitmap.rows;
+  if (*w > glyphW || *h > glyphH) {
+#if 1 //~ debug
+    fprintf(stderr, "Weird FreeType glyph size: %d > %d or %d > %d\n",
+           *w, glyphW, *h, glyphH);
+#endif
+    return NULL;
+  }
+
+  // store glyph pixmap in cache
+  ret = NULL;
+  for (j = 0; j < cacheAssoc; ++j) {
+    if ((cacheTags[i+j].mru & 0x7fff) == cacheAssoc - 1) {
+      cacheTags[i+j].mru = 0x8000;
+      cacheTags[i+j].code = c;
+      cacheTags[i+j].x = *x;
+      cacheTags[i+j].y = *y;
+      cacheTags[i+j].w = *w;
+      cacheTags[i+j].h = *h;
+      if (fontFile->engine->aa) {
+       gSize = *w * *h;
+      } else {
+       gSize = ((*w + 7) >> 3) * *h;
+      }
+      ret = cache + (i+j) * glyphSize;
+      memcpy(ret, slot->bitmap.buffer, gSize);
+    } else {
+      ++cacheTags[i+j].mru;
+    }
+  }
+  return ret;
+}
+
+GBool FTFont::getCharPath(CharCode c, Unicode u, GfxState *state) {
+  static FT_Outline_Funcs outlineFuncs = {
+    &charPathMoveTo,
+    &charPathLineTo,
+    &charPathConicTo,
+    &charPathCubicTo,
+    0, 0
+  };
+  FT_GlyphSlot slot;
+  FT_UInt idx;
+  FT_Glyph glyph;
+
+  fontFile->face->size = sizeObj;
+  FT_Set_Transform(fontFile->face, &matrix, NULL);
+  slot = fontFile->face->glyph;
+  idx = getGlyphIndex(c, u);
+#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+  if (FT_Load_Glyph(fontFile->face, idx, FT_LOAD_DEFAULT)) {
+    return gFalse;
+  }
+#else
+  // FT2's autohinting doesn't always work very well (especially with
+  // font subsets), so turn it off if anti-aliasing is enabled; if
+  // anti-aliasing is disabled, this seems to be a tossup - some fonts
+  // look better with hinting, some without, so leave hinting on
+  if (FT_Load_Glyph(fontFile->face, idx,
+                   fontFile->engine->aa ? FT_LOAD_NO_HINTING
+                                        : FT_LOAD_DEFAULT)) {
+    return gFalse;
+  }
+#endif
+  if (FT_Get_Glyph(slot, &glyph)) {
+    return gFalse;
+  }
+  FT_Outline_Decompose(&((FT_OutlineGlyph)glyph)->outline,
+                      &outlineFuncs, state);
+  return gTrue;
+}
+
+int FTFont::charPathMoveTo(FT_Vector *pt, void *state) {
+  ((GfxState *)state)->moveTo(pt->x / 64.0, -pt->y / 64.0);
+  return 0;
+}
+
+int FTFont::charPathLineTo(FT_Vector *pt, void *state) {
+  ((GfxState *)state)->lineTo(pt->x / 64.0, -pt->y / 64.0);
+  return 0;
+}
+
+int FTFont::charPathConicTo(FT_Vector *ctrl, FT_Vector *pt, void *state) {
+  double x0, y0, x1, y1, x2, y2, x3, y3, xc, yc;
+
+  x0 = ((GfxState *)state)->getCurX();
+  y0 = ((GfxState *)state)->getCurY();
+  xc = ctrl->x / 64.0;
+  yc = -ctrl->y / 64.0;
+  x3 = pt->x / 64.0;
+  y3 = -pt->y / 64.0;
+
+  // A second-order Bezier curve is defined by two endpoints, p0 and
+  // p3, and one control point, pc:
+  //
+  //     p(t) = (1-t)^2*p0 + t*(1-t)*pc + t^2*p3
+  //
+  // A third-order Bezier curve is defined by the same two endpoints,
+  // p0 and p3, and two control points, p1 and p2:
+  //
+  //     p(t) = (1-t)^3*p0 + 3t*(1-t)^2*p1 + 3t^2*(1-t)*p2 + t^3*p3
+  //
+  // Applying some algebra, we can convert a second-order curve to a
+  // third-order curve:
+  //
+  //     p1 = (1/3) * (p0 + 2pc)
+  //     p2 = (1/3) * (2pc + p3)
+
+  x1 = (1.0 / 3.0) * (x0 + 2 * xc);
+  y1 = (1.0 / 3.0) * (y0 + 2 * yc);
+  x2 = (1.0 / 3.0) * (2 * xc + x3);
+  y2 = (1.0 / 3.0) * (2 * yc + y3);
+
+  ((GfxState *)state)->curveTo(x1, y1, x2, y2, x3, y3);
+  return 0;
+}
+
+int FTFont::charPathCubicTo(FT_Vector *ctrl1, FT_Vector *ctrl2,
+                           FT_Vector *pt, void *state) {
+  ((GfxState *)state)->curveTo(ctrl1->x / 64.0, -ctrl1->y / 64.0,
+                              ctrl2->x / 64.0, -ctrl2->y / 64.0,
+                              pt->x / 64.0, -pt->y / 64.0);
+  return 0;
+}
+
+FT_UInt FTFont::getGlyphIndex(CharCode c, Unicode u) {
+  FT_UInt idx;
+  int j;
+
+  idx = 0; // make gcc happy
+  switch (fontFile->mode) {
+  case ftFontModeUnicode:
+    idx = FT_Get_Char_Index(fontFile->face, (FT_ULong)u);
+    break;
+  case ftFontModeCharCode:
+    idx = FT_Get_Char_Index(fontFile->face, (FT_ULong)c);
+    break;
+  case ftFontModeCharCodeOffset:
+    idx = FT_Get_Char_Index(fontFile->face,
+                           (FT_ULong)(c + fontFile->charMapOffset));
+    break;
+  case ftFontModeCodeMap:
+    if (c <= 0xff) {
+      idx = FT_Get_Char_Index(fontFile->face, (FT_ULong)fontFile->codeMap[c]);
+    } else {
+      idx = 0;
+    }
+    break;
+  case ftFontModeCodeMapDirect:
+    if (c <= 0xff) {
+      idx = (FT_UInt)fontFile->codeMap[c];
+    } else {
+      idx = 0;
+    }
+    break;
+  case ftFontModeCIDToGIDMap:
+    if (fontFile->cidToGIDLen) {
+      if ((int)c < fontFile->cidToGIDLen) {
+       idx = (FT_UInt)fontFile->cidToGID[c];
+      } else {
+       idx = (FT_UInt)0;
+      }
+    } else {
+      idx = (FT_UInt)c;
+    }
+    break;
+  case ftFontModeCFFCharset:
+#if 1 //~ cff cid->gid map
+#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0
+    CFF_Font *cff = (CFF_Font *)((TT_Face)fontFile->face)->extra.data;
+#else
+    CFF_Font cff = (CFF_Font)((TT_Face)fontFile->face)->extra.data;
+#endif
+    idx = 0;
+    for (j = 0; j < (int)cff->num_glyphs; ++j) {
+      if (cff->charset.sids[j] == c) {
+       idx = j;
+       break;
+      }
+    }
+#endif
+    break;
+  }
+  return idx;
+}
+
+#endif // FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
diff --git a/pdf/xpdf/FTFont.h b/pdf/xpdf/FTFont.h
new file mode 100644 (file)
index 0000000..4894a31
--- /dev/null
@@ -0,0 +1,133 @@
+//========================================================================
+//
+// FTFont.h
+//
+// An X wrapper for the FreeType font rasterizer.
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef FTFONT_H
+#define FTFONT_H
+
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include <freetype/freetype.h>
+#include "CharTypes.h"
+#include "SFont.h"
+
+//------------------------------------------------------------------------
+
+class FTFontEngine: public SFontEngine {
+public:
+
+  FTFontEngine(Display *displayA, Visual *visualA, int depthA,
+              Colormap colormapA, GBool aaA);
+  GBool isOk() { return ok; }
+  virtual ~FTFontEngine();
+
+private:
+
+  FT_Library lib;
+  GBool aa;
+  Gulong palette[5];
+  GBool ok;
+
+  friend class FTFontFile;
+  friend class FTFont;
+};
+
+//------------------------------------------------------------------------
+
+enum FTFontIndexMode {
+  ftFontModeUnicode,
+  ftFontModeCharCode,
+  ftFontModeCharCodeOffset,
+  ftFontModeCodeMap,
+  ftFontModeCodeMapDirect,
+  ftFontModeCIDToGIDMap,
+  ftFontModeCFFCharset
+};
+
+class FTFontFile: public SFontFile {
+public:
+
+  // 8-bit font, TrueType or Type 1/1C
+  FTFontFile(FTFontEngine *engineA, char *fontFileName,
+            char **fontEnc, GBool pdfFontHasEncoding);
+
+  // CID font, TrueType
+  FTFontFile(FTFontEngine *engineA, char *fontFileName,
+            Gushort *cidToGIDA, int cidToGIDLenA);
+
+  // CID font, Type 0C (CFF)
+  FTFontFile(FTFontEngine *engineA, char *fontFileName);
+
+  GBool isOk() { return ok; }
+  virtual ~FTFontFile();
+
+private:
+
+  FTFontEngine *engine;
+  FT_Face face;
+  FTFontIndexMode mode;
+  int charMapOffset;
+  Guint *codeMap;
+  Gushort *cidToGID;
+  int cidToGIDLen;
+  GBool ok;
+
+  friend class FTFont;
+};
+
+//------------------------------------------------------------------------
+
+struct FTFontCacheTag {
+  Gushort code;
+  Gushort mru;                 // valid bit (0x8000) and MRU index
+  int x, y, w, h;              // offset and size of glyph
+};
+
+class FTFont: public SFont {
+public:
+
+  FTFont(FTFontFile *fontFileA, double *m);
+  GBool isOk() { return ok; }
+  virtual ~FTFont();
+  virtual GBool drawChar(Drawable d, int w, int h, GC gc,
+                        int x, int y, int r, int g, int b,
+                        CharCode c, Unicode u);
+  virtual GBool getCharPath(CharCode c, Unicode u, GfxState *state);
+
+private:
+
+  Guchar *getGlyphPixmap(CharCode c, Unicode u,
+                        int *x, int *y, int *w, int *h);
+  static int charPathMoveTo(FT_Vector *pt, void *state);
+  static int charPathLineTo(FT_Vector *pt, void *state);
+  static int charPathConicTo(FT_Vector *ctrl, FT_Vector *pt, void *state);
+  static int charPathCubicTo(FT_Vector *ctrl1, FT_Vector *ctrl2,
+                            FT_Vector *pt, void *state);
+  FT_UInt getGlyphIndex(CharCode c, Unicode u);
+
+  FTFontFile *fontFile;
+  FT_Size sizeObj;
+  XImage *image;
+  FT_Matrix matrix;
+  int glyphW, glyphH;          // size of glyph pixmaps
+  int glyphSize;               // size of glyph pixmaps, in bytes
+  Guchar *cache;               // glyph pixmap cache
+  FTFontCacheTag *cacheTags;   // cache tags, i.e., char codes
+  int cacheSets;               // number of sets in cache
+  int cacheAssoc;              // cache associativity (glyphs per set)
+  GBool ok;
+};
+
+#endif // FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+#endif
diff --git a/pdf/xpdf/FontEncoding.cc b/pdf/xpdf/FontEncoding.cc
deleted file mode 100644 (file)
index bf12577..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-//========================================================================
-//
-// FontEncoding.cc
-//
-// Copyright 1999 Derek B. Noonburg
-//
-//========================================================================
-
-#ifdef __GNUC__
-#pragma implementation
-#endif
-
-#include <stdlib.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include "gmem.h"
-#include "FontEncoding.h"
-
-//------------------------------------------------------------------------
-// FontEncoding
-//------------------------------------------------------------------------
-
-inline int FontEncoding::hash(char *name) {
-  Guint h;
-
-  h = (Guint)name[0] & 0xff;
-  if (h && name[1])
-    h = h * 61 + ((Guint)name[1] & 0xff);
-  return (int)(h % (Guint)fontEncHashSize);
-}
-
-FontEncoding::FontEncoding() {
-  int i;
-
-  encoding = (char **)gmalloc(256 * sizeof(char *));
-  size = 256;
-  freeEnc = gTrue;
-  for (i = 0; i < 256; ++i)
-    encoding[i] = NULL;
-  for (i = 0; i < fontEncHashSize; ++i)
-    hashTab[i] = -1;
-}
-
-FontEncoding::FontEncoding(char **encoding, int size) {
-  int i;
-
-  this->encoding = encoding;
-  this->size = size;
-  freeEnc = gFalse;
-  for (i = 0; i < fontEncHashSize; ++i)
-    hashTab[i] = -1;
-  for (i = 0; i < size; ++i) {
-    if (encoding[i])
-      addChar1(i, encoding[i]);
-  }
-}
-
-FontEncoding::FontEncoding(FontEncoding *fontEnc) {
-  int i;
-
-  encoding = (char **)gmalloc(fontEnc->size * sizeof(char *));
-  size = fontEnc->size;
-  freeEnc = gTrue;
-  for (i = 0; i < size; ++i) {
-    encoding[i] =
-      fontEnc->encoding[i] ? copyString(fontEnc->encoding[i]) : (char *)NULL;
-  }
-  memcpy(hashTab, fontEnc->hashTab, fontEncHashSize * sizeof(short));
-}
-
-void FontEncoding::addChar(int code, char *name) {
-  int h, i;
-
-  // replace character associated with code
-  if (encoding[code]) {
-    h = hash(encoding[code]);
-    for (i = 0; i < fontEncHashSize; ++i) {
-      if (hashTab[h] == code) {
-       hashTab[h] = -2;
-       break;
-      }
-      if (++h == fontEncHashSize)
-       h = 0;
-    }
-    gfree(encoding[code]);
-  }
-
-  // associate name with code
-  encoding[code] = name;
-
-  // insert name in hash table
-  addChar1(code, name);
-}
-
-void FontEncoding::addChar1(int code, char *name) {
-  int h, i, code2;
-
-  // insert name in hash table
-  h = hash(name); 
-  for (i = 0; i < fontEncHashSize; ++i) {
-    code2 = hashTab[h];
-    if (code2 < 0) {
-      hashTab[h] = code;
-      break;
-    } else if (encoding[code2] && !strcmp(encoding[code2], name)) {
-      // keep the highest code for each char -- this is needed because
-      // X won't display chars with codes < 32
-      if (code > code2)
-       hashTab[h] = code;
-      break;
-    }
-    if (++h == fontEncHashSize)
-      h = 0;
-  }
-}
-
-FontEncoding::~FontEncoding() {
-  int i;
-
-  if (freeEnc) {
-    for (i = 0; i < size; ++i) {
-      if (encoding[i])
-       gfree(encoding[i]);
-    }
-    gfree(encoding);
-  }
-}
-
-int FontEncoding::getCharCode(char *name) {
-  int h, i, code;
-
-  h = hash(name);
-  for (i = 0; i < fontEncHashSize; ++i) {
-    code = hashTab[h];
-    if (code == -1 ||
-       (code >= 0 && encoding[code] && !strcmp(encoding[code], name)))
-      return code;
-    if (++h >= fontEncHashSize)
-      h = 0;
-  }
-  return -1;
-}
diff --git a/pdf/xpdf/FontEncoding.h b/pdf/xpdf/FontEncoding.h
deleted file mode 100644 (file)
index 7c81153..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-//========================================================================
-//
-// FontEncoding.h
-//
-// Copyright 1999 Derek B. Noonburg
-//
-//========================================================================
-
-#ifndef FONTENCODING_H
-#define FONTENCODING_H
-
-#ifdef __GNUC__
-#pragma interface
-#endif
-
-#include "gtypes.h"
-
-//------------------------------------------------------------------------
-// FontEncoding
-//------------------------------------------------------------------------
-
-#define fontEncHashSize 419
-
-class FontEncoding {
-public:
-
-  // Construct an empty encoding.
-  FontEncoding();
-
-  // Construct an encoding from an array of char names.
-  FontEncoding(char **encoding, int size);
-
-  // Destructor.
-  ~FontEncoding();
-
-  // Create a copy of the encoding.
-  FontEncoding *copy() { return new FontEncoding(this); }
-
-  // Return number of codes in encoding, i.e., max code + 1.
-  int getSize() { return size; }
-
-  // Add a char to the encoding.
-  void addChar(int code, char *name);
-
-  // Return the character name associated with <code>.
-  char *getCharName(int code) { return encoding[code]; }
-
-  // Return the code associated with <name>.
-  int getCharCode(char *name);
-
-private:
-
-  FontEncoding(FontEncoding *fontEnc);
-  int hash(char *name);
-  void addChar1(int code, char *name);
-
-  char **encoding;             // code --> name mapping
-  int size;                    // number of codes
-  GBool freeEnc;               // should we free the encoding array?
-  short                                // name --> code hash table
-    hashTab[fontEncHashSize];
-};
-
-#endif
diff --git a/pdf/xpdf/FontEncodingTables.cc b/pdf/xpdf/FontEncodingTables.cc
new file mode 100644 (file)
index 0000000..bd5f9cf
--- /dev/null
@@ -0,0 +1,1824 @@
+//========================================================================
+//
+// FontEncodingTables.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#include <aconf.h>
+#include <stdlib.h>
+#include "FontEncodingTables.h"
+
+char *macRomanEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "exclam",
+  "quotedbl",
+  "numbersign",
+  "dollar",
+  "percent",
+  "ampersand",
+  "quotesingle",
+  "parenleft",
+  "parenright",
+  "asterisk",
+  "plus",
+  "comma",
+  "hyphen",
+  "period",
+  "slash",
+  "zero",
+  "one",
+  "two",
+  "three",
+  "four",
+  "five",
+  "six",
+  "seven",
+  "eight",
+  "nine",
+  "colon",
+  "semicolon",
+  "less",
+  "equal",
+  "greater",
+  "question",
+  "at",
+  "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",
+  "bracketleft",
+  "backslash",
+  "bracketright",
+  "asciicircum",
+  "underscore",
+  "grave",
+  "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",
+  "braceleft",
+  "bar",
+  "braceright",
+  "asciitilde",
+  NULL,
+  "Adieresis",
+  "Aring",
+  "Ccedilla",
+  "Eacute",
+  "Ntilde",
+  "Odieresis",
+  "Udieresis",
+  "aacute",
+  "agrave",
+  "acircumflex",
+  "adieresis",
+  "atilde",
+  "aring",
+  "ccedilla",
+  "eacute",
+  "egrave",
+  "ecircumflex",
+  "edieresis",
+  "iacute",
+  "igrave",
+  "icircumflex",
+  "idieresis",
+  "ntilde",
+  "oacute",
+  "ograve",
+  "ocircumflex",
+  "odieresis",
+  "otilde",
+  "uacute",
+  "ugrave",
+  "ucircumflex",
+  "udieresis",
+  "dagger",
+  "degree",
+  "cent",
+  "sterling",
+  "section",
+  "bullet",
+  "paragraph",
+  "germandbls",
+  "registered",
+  "copyright",
+  "trademark",
+  "acute",
+  "dieresis",
+  NULL,
+  "AE",
+  "Oslash",
+  NULL,
+  "plusminus",
+  NULL,
+  NULL,
+  "yen",
+  "mu",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "ordfeminine",
+  "ordmasculine",
+  NULL,
+  "ae",
+  "oslash",
+  "questiondown",
+  "exclamdown",
+  "logicalnot",
+  NULL,
+  "florin",
+  NULL,
+  NULL,
+  "guillemotleft",
+  "guillemotright",
+  "ellipsis",
+  "space",
+  "Agrave",
+  "Atilde",
+  "Otilde",
+  "OE",
+  "oe",
+  "endash",
+  "emdash",
+  "quotedblleft",
+  "quotedblright",
+  "quoteleft",
+  "quoteright",
+  "divide",
+  NULL,
+  "ydieresis",
+  "Ydieresis",
+  "fraction",
+  "currency",
+  "guilsinglleft",
+  "guilsinglright",
+  "fi",
+  "fl",
+  "daggerdbl",
+  "periodcentered",
+  "quotesinglbase",
+  "quotedblbase",
+  "perthousand",
+  "Acircumflex",
+  "Ecircumflex",
+  "Aacute",
+  "Edieresis",
+  "Egrave",
+  "Iacute",
+  "Icircumflex",
+  "Idieresis",
+  "Igrave",
+  "Oacute",
+  "Ocircumflex",
+  NULL,
+  "Ograve",
+  "Uacute",
+  "Ucircumflex",
+  "Ugrave",
+  "dotlessi",
+  "circumflex",
+  "tilde",
+  "macron",
+  "breve",
+  "dotaccent",
+  "ring",
+  "cedilla",
+  "hungarumlaut",
+  "ogonek",
+  "caron"
+};
+
+char *macExpertEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "exclamsmall",
+  "Hungarumlautsmall",
+  "centoldstyle",
+  "dollaroldstyle",
+  "dollarsuperior",
+  "ampersandsmall",
+  "Acutesmall",
+  "parenleftsuperior",
+  "parenrightsuperior",
+  "twodotenleader",
+  "onedotenleader",
+  "comma",
+  "hyphen",
+  "period",
+  "fraction",
+  "zerooldstyle",
+  "oneoldstyle",
+  "twooldstyle",
+  "threeoldstyle",
+  "fouroldstyle",
+  "fiveoldstyle",
+  "sixoldstyle",
+  "sevenoldstyle",
+  "eightoldstyle",
+  "nineoldstyle",
+  "colon",
+  "semicolon",
+  NULL,
+  "threequartersemdash",
+  NULL,
+  "questionsmall",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "Ethsmall",
+  NULL,
+  NULL,
+  "onequarter",
+  "onehalf",
+  "threequarters",
+  "oneeighth",
+  "threeeighths",
+  "fiveeighths",
+  "seveneighths",
+  "onethird",
+  "twothirds",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "ff",
+  "fi",
+  "fl",
+  "ffi",
+  "ffl",
+  "parenleftinferior",
+  NULL,
+  "parenrightinferior",
+  "Circumflexsmall",
+  "hypheninferior",
+  "Gravesmall",
+  "Asmall",
+  "Bsmall",
+  "Csmall",
+  "Dsmall",
+  "Esmall",
+  "Fsmall",
+  "Gsmall",
+  "Hsmall",
+  "Ismall",
+  "Jsmall",
+  "Ksmall",
+  "Lsmall",
+  "Msmall",
+  "Nsmall",
+  "Osmall",
+  "Psmall",
+  "Qsmall",
+  "Rsmall",
+  "Ssmall",
+  "Tsmall",
+  "Usmall",
+  "Vsmall",
+  "Wsmall",
+  "Xsmall",
+  "Ysmall",
+  "Zsmall",
+  "colonmonetary",
+  "onefitted",
+  "rupiah",
+  "Tildesmall",
+  NULL,
+  NULL,
+  "asuperior",
+  "centsuperior",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "Aacutesmall",
+  "Agravesmall",
+  "Acircumflexsmall",
+  "Adieresissmall",
+  "Atildesmall",
+  "Aringsmall",
+  "Ccedillasmall",
+  "Eacutesmall",
+  "Egravesmall",
+  "Ecircumflexsmall",
+  "Edieresissmall",
+  "Iacutesmall",
+  "Igravesmall",
+  "Icircumflexsmall",
+  "Idieresissmall",
+  "Ntildesmall",
+  "Oacutesmall",
+  "Ogravesmall",
+  "Ocircumflexsmall",
+  "Odieresissmall",
+  "Otildesmall",
+  "Uacutesmall",
+  "Ugravesmall",
+  "Ucircumflexsmall",
+  "Udieresissmall",
+  NULL,
+  "eightsuperior",
+  "fourinferior",
+  "threeinferior",
+  "sixinferior",
+  "eightinferior",
+  "seveninferior",
+  "Scaronsmall",
+  NULL,
+  "centinferior",
+  "twoinferior",
+  NULL,
+  "Dieresissmall",
+  NULL,
+  "Caronsmall",
+  "osuperior",
+  "fiveinferior",
+  NULL,
+  "commainferior",
+  "periodinferior",
+  "Yacutesmall",
+  NULL,
+  "dollarinferior",
+  NULL,
+  NULL,
+  "Thornsmall",
+  NULL,
+  "nineinferior",
+  "zeroinferior",
+  "Zcaronsmall",
+  "AEsmall",
+  "Oslashsmall",
+  "questiondownsmall",
+  "oneinferior",
+  "Lslashsmall",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "Cedillasmall",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "OEsmall",
+  "figuredash",
+  "hyphensuperior",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "exclamdownsmall",
+  NULL,
+  "Ydieresissmall",
+  NULL,
+  "onesuperior",
+  "twosuperior",
+  "threesuperior",
+  "foursuperior",
+  "fivesuperior",
+  "sixsuperior",
+  "sevensuperior",
+  "ninesuperior",
+  "zerosuperior",
+  NULL,
+  "esuperior",
+  "rsuperior",
+  "tsuperior",
+  NULL,
+  NULL,
+  "isuperior",
+  "ssuperior",
+  "dsuperior",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "lsuperior",
+  "Ogoneksmall",
+  "Brevesmall",
+  "Macronsmall",
+  "bsuperior",
+  "nsuperior",
+  "msuperior",
+  "commasuperior",
+  "periodsuperior",
+  "Dotaccentsmall",
+  "Ringsmall",
+  NULL,
+  NULL,
+  NULL,
+  NULL
+};
+
+char *winAnsiEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "exclam",
+  "quotedbl",
+  "numbersign",
+  "dollar",
+  "percent",
+  "ampersand",
+  "quotesingle",
+  "parenleft",
+  "parenright",
+  "asterisk",
+  "plus",
+  "comma",
+  "hyphen",
+  "period",
+  "slash",
+  "zero",
+  "one",
+  "two",
+  "three",
+  "four",
+  "five",
+  "six",
+  "seven",
+  "eight",
+  "nine",
+  "colon",
+  "semicolon",
+  "less",
+  "equal",
+  "greater",
+  "question",
+  "at",
+  "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",
+  "bracketleft",
+  "backslash",
+  "bracketright",
+  "asciicircum",
+  "underscore",
+  "grave",
+  "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",
+  "braceleft",
+  "bar",
+  "braceright",
+  "asciitilde",
+  "bullet",
+  "Euro",
+  "bullet",
+  "quotesinglbase",
+  "florin",
+  "quotedblbase",
+  "ellipsis",
+  "dagger",
+  "daggerdbl",
+  "circumflex",
+  "perthousand",
+  "Scaron",
+  "guilsinglleft",
+  "OE",
+  "bullet",
+  "Zcaron",
+  "bullet",
+  "bullet",
+  "quoteleft",
+  "quoteright",
+  "quotedblleft",
+  "quotedblright",
+  "bullet",
+  "endash",
+  "emdash",
+  "tilde",
+  "trademark",
+  "scaron",
+  "guilsinglright",
+  "oe",
+  "bullet",
+  "zcaron",
+  "Ydieresis",
+  "space",
+  "exclamdown",
+  "cent",
+  "sterling",
+  "currency",
+  "yen",
+  "brokenbar",
+  "section",
+  "dieresis",
+  "copyright",
+  "ordfeminine",
+  "guillemotleft",
+  "logicalnot",
+  "hyphen",
+  "registered",
+  "macron",
+  "degree",
+  "plusminus",
+  "twosuperior",
+  "threesuperior",
+  "acute",
+  "mu",
+  "paragraph",
+  "periodcentered",
+  "cedilla",
+  "onesuperior",
+  "ordmasculine",
+  "guillemotright",
+  "onequarter",
+  "onehalf",
+  "threequarters",
+  "questiondown",
+  "Agrave",
+  "Aacute",
+  "Acircumflex",
+  "Atilde",
+  "Adieresis",
+  "Aring",
+  "AE",
+  "Ccedilla",
+  "Egrave",
+  "Eacute",
+  "Ecircumflex",
+  "Edieresis",
+  "Igrave",
+  "Iacute",
+  "Icircumflex",
+  "Idieresis",
+  "Eth",
+  "Ntilde",
+  "Ograve",
+  "Oacute",
+  "Ocircumflex",
+  "Otilde",
+  "Odieresis",
+  "multiply",
+  "Oslash",
+  "Ugrave",
+  "Uacute",
+  "Ucircumflex",
+  "Udieresis",
+  "Yacute",
+  "Thorn",
+  "germandbls",
+  "agrave",
+  "aacute",
+  "acircumflex",
+  "atilde",
+  "adieresis",
+  "aring",
+  "ae",
+  "ccedilla",
+  "egrave",
+  "eacute",
+  "ecircumflex",
+  "edieresis",
+  "igrave",
+  "iacute",
+  "icircumflex",
+  "idieresis",
+  "eth",
+  "ntilde",
+  "ograve",
+  "oacute",
+  "ocircumflex",
+  "otilde",
+  "odieresis",
+  "divide",
+  "oslash",
+  "ugrave",
+  "uacute",
+  "ucircumflex",
+  "udieresis",
+  "yacute",
+  "thorn",
+  "ydieresis"
+};
+
+char *standardEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "exclam",
+  "quotedbl",
+  "numbersign",
+  "dollar",
+  "percent",
+  "ampersand",
+  "quoteright",
+  "parenleft",
+  "parenright",
+  "asterisk",
+  "plus",
+  "comma",
+  "hyphen",
+  "period",
+  "slash",
+  "zero",
+  "one",
+  "two",
+  "three",
+  "four",
+  "five",
+  "six",
+  "seven",
+  "eight",
+  "nine",
+  "colon",
+  "semicolon",
+  "less",
+  "equal",
+  "greater",
+  "question",
+  "at",
+  "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",
+  "bracketleft",
+  "backslash",
+  "bracketright",
+  "asciicircum",
+  "underscore",
+  "quoteleft",
+  "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",
+  "braceleft",
+  "bar",
+  "braceright",
+  "asciitilde",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "exclamdown",
+  "cent",
+  "sterling",
+  "fraction",
+  "yen",
+  "florin",
+  "section",
+  "currency",
+  "quotesingle",
+  "quotedblleft",
+  "guillemotleft",
+  "guilsinglleft",
+  "guilsinglright",
+  "fi",
+  "fl",
+  NULL,
+  "endash",
+  "dagger",
+  "daggerdbl",
+  "periodcentered",
+  NULL,
+  "paragraph",
+  "bullet",
+  "quotesinglbase",
+  "quotedblbase",
+  "quotedblright",
+  "guillemotright",
+  "ellipsis",
+  "perthousand",
+  NULL,
+  "questiondown",
+  NULL,
+  "grave",
+  "acute",
+  "circumflex",
+  "tilde",
+  "macron",
+  "breve",
+  "dotaccent",
+  "dieresis",
+  NULL,
+  "ring",
+  "cedilla",
+  NULL,
+  "hungarumlaut",
+  "ogonek",
+  "caron",
+  "emdash",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "AE",
+  NULL,
+  "ordfeminine",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "Lslash",
+  "Oslash",
+  "OE",
+  "ordmasculine",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "ae",
+  NULL,
+  NULL,
+  NULL,
+  "dotlessi",
+  NULL,
+  NULL,
+  "lslash",
+  "oslash",
+  "oe",
+  "germandbls",
+  NULL,
+  NULL,
+  NULL,
+  NULL
+};
+
+char *expertEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "exclamsmall",
+  "Hungarumlautsmall",
+  NULL,
+  "dollaroldstyle",
+  "dollarsuperior",
+  "ampersandsmall",
+  "Acutesmall",
+  "parenleftsuperior",
+  "parenrightsuperior",
+  "twodotenleader",
+  "onedotenleader",
+  "comma",
+  "hyphen",
+  "period",
+  "fraction",
+  "zerooldstyle",
+  "oneoldstyle",
+  "twooldstyle",
+  "threeoldstyle",
+  "fouroldstyle",
+  "fiveoldstyle",
+  "sixoldstyle",
+  "sevenoldstyle",
+  "eightoldstyle",
+  "nineoldstyle",
+  "colon",
+  "semicolon",
+  "commasuperior",
+  "threequartersemdash",
+  "periodsuperior",
+  "questionsmall",
+  NULL,
+  "asuperior",
+  "bsuperior",
+  "centsuperior",
+  "dsuperior",
+  "esuperior",
+  NULL,
+  NULL,
+  NULL,
+  "isuperior",
+  NULL,
+  NULL,
+  "lsuperior",
+  "msuperior",
+  "nsuperior",
+  "osuperior",
+  NULL,
+  NULL,
+  "rsuperior",
+  "ssuperior",
+  "tsuperior",
+  NULL,
+  "ff",
+  "fi",
+  "fl",
+  "ffi",
+  "ffl",
+  "parenleftinferior",
+  NULL,
+  "parenrightinferior",
+  "Circumflexsmall",
+  "hyphensuperior",
+  "Gravesmall",
+  "Asmall",
+  "Bsmall",
+  "Csmall",
+  "Dsmall",
+  "Esmall",
+  "Fsmall",
+  "Gsmall",
+  "Hsmall",
+  "Ismall",
+  "Jsmall",
+  "Ksmall",
+  "Lsmall",
+  "Msmall",
+  "Nsmall",
+  "Osmall",
+  "Psmall",
+  "Qsmall",
+  "Rsmall",
+  "Ssmall",
+  "Tsmall",
+  "Usmall",
+  "Vsmall",
+  "Wsmall",
+  "Xsmall",
+  "Ysmall",
+  "Zsmall",
+  "colonmonetary",
+  "onefitted",
+  "rupiah",
+  "Tildesmall",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "exclamdownsmall",
+  "centoldstyle",
+  "Lslashsmall",
+  NULL,
+  NULL,
+  "Scaronsmall",
+  "Zcaronsmall",
+  "Dieresissmall",
+  "Brevesmall",
+  "Caronsmall",
+  NULL,
+  "Dotaccentsmall",
+  NULL,
+  NULL,
+  "Macronsmall",
+  NULL,
+  NULL,
+  "figuredash",
+  "hypheninferior",
+  NULL,
+  NULL,
+  "Ogoneksmall",
+  "Ringsmall",
+  "Cedillasmall",
+  NULL,
+  NULL,
+  NULL,
+  "onequarter",
+  "onehalf",
+  "threequarters",
+  "questiondownsmall",
+  "oneeighth",
+  "threeeighths",
+  "fiveeighths",
+  "seveneighths",
+  "onethird",
+  "twothirds",
+  NULL,
+  NULL,
+  "zerosuperior",
+  "onesuperior",
+  "twosuperior",
+  "threesuperior",
+  "foursuperior",
+  "fivesuperior",
+  "sixsuperior",
+  "sevensuperior",
+  "eightsuperior",
+  "ninesuperior",
+  "zeroinferior",
+  "oneinferior",
+  "twoinferior",
+  "threeinferior",
+  "fourinferior",
+  "fiveinferior",
+  "sixinferior",
+  "seveninferior",
+  "eightinferior",
+  "nineinferior",
+  "centinferior",
+  "dollarinferior",
+  "periodinferior",
+  "commainferior",
+  "Agravesmall",
+  "Aacutesmall",
+  "Acircumflexsmall",
+  "Atildesmall",
+  "Adieresissmall",
+  "Aringsmall",
+  "AEsmall",
+  "Ccedillasmall",
+  "Egravesmall",
+  "Eacutesmall",
+  "Ecircumflexsmall",
+  "Edieresissmall",
+  "Igravesmall",
+  "Iacutesmall",
+  "Icircumflexsmall",
+  "Idieresissmall",
+  "Ethsmall",
+  "Ntildesmall",
+  "Ogravesmall",
+  "Oacutesmall",
+  "Ocircumflexsmall",
+  "Otildesmall",
+  "Odieresissmall",
+  "OEsmall",
+  "Oslashsmall",
+  "Ugravesmall",
+  "Uacutesmall",
+  "Ucircumflexsmall",
+  "Udieresissmall",
+  "Yacutesmall",
+  "Thornsmall",
+  "Ydieresissmall"
+};
+
+char *symbolEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "exclam",
+  "universal",
+  "numbersign",
+  "existential",
+  "percent",
+  "ampersand",
+  "suchthat",
+  "parenleft",
+  "parenright",
+  "asteriskmath",
+  "plus",
+  "comma",
+  "minus",
+  "period",
+  "slash",
+  "zero",
+  "one",
+  "two",
+  "three",
+  "four",
+  "five",
+  "six",
+  "seven",
+  "eight",
+  "nine",
+  "colon",
+  "semicolon",
+  "less",
+  "equal",
+  "greater",
+  "question",
+  "congruent",
+  "Alpha",
+  "Beta",
+  "Chi",
+  "Delta",
+  "Epsilon",
+  "Phi",
+  "Gamma",
+  "Eta",
+  "Iota",
+  "theta1",
+  "Kappa",
+  "Lambda",
+  "Mu",
+  "Nu",
+  "Omicron",
+  "Pi",
+  "Theta",
+  "Rho",
+  "Sigma",
+  "Tau",
+  "Upsilon",
+  "sigma1",
+  "Omega",
+  "Xi",
+  "Psi",
+  "Zeta",
+  "bracketleft",
+  "therefore",
+  "bracketright",
+  "perpendicular",
+  "underscore",
+  "radicalex",
+  "alpha",
+  "beta",
+  "chi",
+  "delta",
+  "epsilon",
+  "phi",
+  "gamma",
+  "eta",
+  "iota",
+  "phi1",
+  "kappa",
+  "lambda",
+  "mu",
+  "nu",
+  "omicron",
+  "pi",
+  "theta",
+  "rho",
+  "sigma",
+  "tau",
+  "upsilon",
+  "omega1",
+  "omega",
+  "xi",
+  "psi",
+  "zeta",
+  "braceleft",
+  "bar",
+  "braceright",
+  "similar",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "Upsilon1",
+  "minute",
+  "lessequal",
+  "fraction",
+  "infinity",
+  "florin",
+  "club",
+  "diamond",
+  "heart",
+  "spade",
+  "arrowboth",
+  "arrowleft",
+  "arrowup",
+  "arrowright",
+  "arrowdown",
+  "degree",
+  "plusminus",
+  "second",
+  "greaterequal",
+  "multiply",
+  "proportional",
+  "partialdiff",
+  "bullet",
+  "divide",
+  "notequal",
+  "equivalence",
+  "approxequal",
+  "ellipsis",
+  "arrowvertex",
+  "arrowhorizex",
+  "carriagereturn",
+  "aleph",
+  "Ifraktur",
+  "Rfraktur",
+  "weierstrass",
+  "circlemultiply",
+  "circleplus",
+  "emptyset",
+  "intersection",
+  "union",
+  "propersuperset",
+  "reflexsuperset",
+  "notsubset",
+  "propersubset",
+  "reflexsubset",
+  "element",
+  "notelement",
+  "angle",
+  "gradient",
+  "registerserif",
+  "copyrightserif",
+  "trademarkserif",
+  "product",
+  "radical",
+  "dotmath",
+  "logicalnot",
+  "logicaland",
+  "logicalor",
+  "arrowdblboth",
+  "arrowdblleft",
+  "arrowdblup",
+  "arrowdblright",
+  "arrowdbldown",
+  "lozenge",
+  "angleleft",
+  "registersans",
+  "copyrightsans",
+  "trademarksans",
+  "summation",
+  "parenlefttp",
+  "parenleftex",
+  "parenleftbt",
+  "bracketlefttp",
+  "bracketleftex",
+  "bracketleftbt",
+  "bracelefttp",
+  "braceleftmid",
+  "braceleftbt",
+  "braceex",
+  NULL,
+  "angleright",
+  "integral",
+  "integraltp",
+  "integralex",
+  "integralbt",
+  "parenrighttp",
+  "parenrightex",
+  "parenrightbt",
+  "bracketrighttp",
+  "bracketrightex",
+  "bracketrightbt",
+  "bracerighttp",
+  "bracerightmid",
+  "bracerightbt",
+  NULL
+};
+
+char *zapfDingbatsEncoding[256] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "space",
+  "a1",
+  "a2",
+  "a202",
+  "a3",
+  "a4",
+  "a5",
+  "a119",
+  "a118",
+  "a117",
+  "a11",
+  "a12",
+  "a13",
+  "a14",
+  "a15",
+  "a16",
+  "a105",
+  "a17",
+  "a18",
+  "a19",
+  "a20",
+  "a21",
+  "a22",
+  "a23",
+  "a24",
+  "a25",
+  "a26",
+  "a27",
+  "a28",
+  "a6",
+  "a7",
+  "a8",
+  "a9",
+  "a10",
+  "a29",
+  "a30",
+  "a31",
+  "a32",
+  "a33",
+  "a34",
+  "a35",
+  "a36",
+  "a37",
+  "a38",
+  "a39",
+  "a40",
+  "a41",
+  "a42",
+  "a43",
+  "a44",
+  "a45",
+  "a46",
+  "a47",
+  "a48",
+  "a49",
+  "a50",
+  "a51",
+  "a52",
+  "a53",
+  "a54",
+  "a55",
+  "a56",
+  "a57",
+  "a58",
+  "a59",
+  "a60",
+  "a61",
+  "a62",
+  "a63",
+  "a64",
+  "a65",
+  "a66",
+  "a67",
+  "a68",
+  "a69",
+  "a70",
+  "a71",
+  "a72",
+  "a73",
+  "a74",
+  "a203",
+  "a75",
+  "a204",
+  "a76",
+  "a77",
+  "a78",
+  "a79",
+  "a81",
+  "a82",
+  "a83",
+  "a84",
+  "a97",
+  "a98",
+  "a99",
+  "a100",
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  NULL,
+  "a101",
+  "a102",
+  "a103",
+  "a104",
+  "a106",
+  "a107",
+  "a108",
+  "a112",
+  "a111",
+  "a110",
+  "a109",
+  "a120",
+  "a121",
+  "a122",
+  "a123",
+  "a124",
+  "a125",
+  "a126",
+  "a127",
+  "a128",
+  "a129",
+  "a130",
+  "a131",
+  "a132",
+  "a133",
+  "a134",
+  "a135",
+  "a136",
+  "a137",
+  "a138",
+  "a139",
+  "a140",
+  "a141",
+  "a142",
+  "a143",
+  "a144",
+  "a145",
+  "a146",
+  "a147",
+  "a148",
+  "a149",
+  "a150",
+  "a151",
+  "a152",
+  "a153",
+  "a154",
+  "a155",
+  "a156",
+  "a157",
+  "a158",
+  "a159",
+  "a160",
+  "a161",
+  "a163",
+  "a164",
+  "a196",
+  "a165",
+  "a192",
+  "a166",
+  "a167",
+  "a168",
+  "a169",
+  "a170",
+  "a171",
+  "a172",
+  "a173",
+  "a162",
+  "a174",
+  "a175",
+  "a176",
+  "a177",
+  "a178",
+  "a179",
+  "a193",
+  "a180",
+  "a199",
+  "a181",
+  "a200",
+  "a182",
+  NULL,
+  "a201",
+  "a183",
+  "a184",
+  "a197",
+  "a185",
+  "a194",
+  "a198",
+  "a186",
+  "a195",
+  "a187",
+  "a188",
+  "a189",
+  "a190",
+  "a191",
+  NULL
+};
diff --git a/pdf/xpdf/FontEncodingTables.h b/pdf/xpdf/FontEncodingTables.h
new file mode 100644 (file)
index 0000000..deee0a8
--- /dev/null
@@ -0,0 +1,20 @@
+//========================================================================
+//
+// FontEncodingTables.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef FONTENCODINGTABLES_H
+#define FONTENCODINGTABLES_H
+
+extern char *macRomanEncoding[];
+extern char *macExpertEncoding[];
+extern char *winAnsiEncoding[];
+extern char *standardEncoding[];
+extern char *expertEncoding[];
+extern char *symbolEncoding[];
+extern char *zapfDingbatsEncoding[];
+
+#endif
index 777b56a3d070768fb549902bee9d965680c5c0a4..ae585470d696089d2942cb06637a1d65a8ad9787 100644 (file)
@@ -2,7 +2,7 @@
 //
 // FontFile.cc
 //
-// Copyright 1999 Derek B. Noonburg
+// Copyright 1999-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <math.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <ctype.h>
 #include "gmem.h"
 #include "Error.h"
+#include "GlobalParams.h"
+#include "CharCodeToUnicode.h"
+#include "FontEncodingTables.h"
 #include "FontFile.h"
 
-#include "StdFontInfo.h"
-#include "CompactFontInfo.h"
-
-//------------------------------------------------------------------------
-
-static Guint getWord(Guchar *ptr, int size);
-static double getNum(Guchar **ptr, GBool *fp);
-static char *getString(int sid, Guchar *stringIdxPtr,
-                      Guchar *stringStartPtr, int stringOffSize,
-                      char *buf);
+#include "CompactFontTables.h"
 
 //------------------------------------------------------------------------
 
@@ -58,34 +53,46 @@ FontFile::~FontFile() {
 
 Type1FontFile::Type1FontFile(char *file, int len) {
   char *line, *line1, *p, *p2;
+  GBool haveEncoding;
   char buf[256];
   char c;
-  int n, code, i;
+  int n, code, i, j;
 
   name = NULL;
-  encoding = NULL;
-  freeEnc = gTrue;
+  encoding = (char **)gmalloc(256 * sizeof(char *));
+  for (i = 0; i < 256; ++i) {
+    encoding[i] = NULL;
+  }
+  haveEncoding = gFalse;
 
-  for (i = 1, line = file; i <= 100 && line < file + len && !encoding; ++i) {
+  for (i = 1, line = file;
+       i <= 100 && line < file + len && !haveEncoding;
+       ++i) {
 
     // get font name
     if (!strncmp(line, "/FontName", 9)) {
       strncpy(buf, line, 255);
       buf[255] = '\0';
       if ((p = strchr(buf+9, '/')) &&
-         (p = strtok(p+1, " \t\n\r")))
+         (p = strtok(p+1, " \t\n\r"))) {
        name = copyString(p);
+      }
       line = nextLine(line, file + len);
 
     // get encoding
     } else if (!strncmp(line, "/Encoding StandardEncoding def", 30)) {
-      encoding = type1StdEncoding.copy();
+      for (j = 0; j < 256; ++j) {
+       if (standardEncoding[j]) {
+         encoding[j] = copyString(standardEncoding[j]);
+       }
+      }
+      haveEncoding = gTrue;
     } else if (!strncmp(line, "/Encoding 256 array", 19)) {
-      encoding = new FontEncoding();
-      for (i = 0; i < 300; ++i) {
+      for (j = 0; j < 300; ++j) {
        line1 = nextLine(line, file + len);
-       if ((n = line1 - line) > 255)
+       if ((n = line1 - line) > 255) {
          n = 255;
+       }
        strncpy(buf, line, n);
        buf[n] = '\0';
        for (p = buf; *p == ' ' || *p == '\t'; ++p) ;
@@ -102,7 +109,7 @@ Type1FontFile::Type1FontFile(char *file, int len) {
                ++p;
                for (p2 = p; *p2 && *p2 != ' ' && *p2 != '\t'; ++p2) ;
                *p2 = '\0';
-               encoding->addChar(code, copyString(p));
+               encoding[code] = copyString(p);
              }
            }
          }
@@ -115,6 +122,7 @@ Type1FontFile::Type1FontFile(char *file, int len) {
        line = line1;
       }
       //~ check for getinterval/putinterval junk
+      haveEncoding = gTrue;
 
     } else {
       line = nextLine(line, file + len);
@@ -123,77 +131,143 @@ Type1FontFile::Type1FontFile(char *file, int len) {
 }
 
 Type1FontFile::~Type1FontFile() {
-  if (name)
-    gfree(name);
-  if (encoding && freeEnc)
-    delete encoding;
-}
+  int i;
 
-FontEncoding *Type1FontFile::getEncoding(GBool taken) {
-  if (taken)
-    freeEnc = gFalse;
-  return encoding;
+  if (name) {
+    gfree(name);
+  }
+  for (i = 0; i < 256; ++i) {
+    gfree(encoding[i]);
+  }
+  gfree(encoding);
 }
 
 //------------------------------------------------------------------------
 // Type1CFontFile
 //------------------------------------------------------------------------
 
-Type1CFontFile::Type1CFontFile(char *file, int len) {
+struct Type1CTopDict {
+  int version;
+  int notice;
+  int copyright;
+  int fullName;
+  int familyName;
+  int weight;
+  int isFixedPitch;
+  double italicAngle;
+  double underlinePosition;
+  double underlineThickness;
+  int paintType;
+  int charstringType;
+  double fontMatrix[6];
+  int uniqueID;
+  double fontBBox[4];
+  double strokeWidth;
+  int charset;
+  int encoding;
+  int charStrings;
+  int privateSize;
+  int privateOffset;
+
+  //----- CIDFont entries
+  int registry;
+  int ordering;
+  int supplement;
+  int fdArrayOffset;
+  int fdSelectOffset;
+};
+
+struct Type1CPrivateDict {
+  GString *dictData;
+  int subrsOffset;
+  double defaultWidthX;
+  GBool defaultWidthXFP;
+  double nominalWidthX;
+  GBool nominalWidthXFP;
+};
+
+Type1CFontFile::Type1CFontFile(char *fileA, int lenA) {
+  Guchar *nameIdxPtr, *idxPtr0, *idxPtr1;
+
+  file = fileA;
+  len = lenA;
+  name = NULL;
+  encoding = NULL;
+
+  // some tools embed Type 1C fonts with an extra whitespace char at
+  // the beginning
+  if (file[0] != '\x01') {
+    ++file;
+  }
+
+  // read header
+  topOffSize = file[3] & 0xff;
+
+  // read name index (first font only)
+  nameIdxPtr = (Guchar *)file + (file[2] & 0xff);
+  idxPtr0 = getIndexValPtr(nameIdxPtr, 0);
+  idxPtr1 = getIndexValPtr(nameIdxPtr, 1);
+  name = new GString((char *)idxPtr0, idxPtr1 - idxPtr0);
+
+  topDictIdxPtr = getIndexEnd(nameIdxPtr);
+  stringIdxPtr = getIndexEnd(topDictIdxPtr);
+  gsubrIdxPtr = getIndexEnd(stringIdxPtr);
+}
+
+Type1CFontFile::~Type1CFontFile() {
+  int i;
+
+  delete name;
+  if (encoding) {
+    for (i = 0; i < 256; ++i) {
+      gfree(encoding[i]);
+    }
+    gfree(encoding);
+  }
+}
+
+char *Type1CFontFile::getName() {
+  return name->getCString();
+}
+
+char **Type1CFontFile::getEncoding() {
+  if (!encoding) {
+    readNameAndEncoding();
+  }
+  return encoding;
+}
+
+void Type1CFontFile::readNameAndEncoding() {
   char buf[256];
-  Guchar *topPtr, *idxStartPtr, *idxPtr0, *idxPtr1;
-  Guchar *stringIdxPtr, *stringStartPtr;
-  int topOffSize, idxOffSize, stringOffSize;
-  int nFonts, nStrings, nGlyphs;
+  Guchar *idxPtr0, *idxPtr1, *ptr;
+  int nGlyphs;
   int nCodes, nRanges, nLeft, nSups;
   Gushort *glyphNames;
   int charset, enc, charstrings;
-  int charsetFormat, encFormat;
+  int encFormat;
   int c, sid;
-  double op[48];
   double x;
   GBool isFP;
   int key;
-  int i, j, n;
-
-  name = NULL;
-  encoding = NULL;
-  freeEnc = gTrue;
+  int i, j;
 
-  // read header
-  topPtr = (Guchar *)file + (file[2] & 0xff);
-  topOffSize = file[3] & 0xff;
+  encoding = (char **)gmalloc(256 * sizeof(char *));
+  for (i = 0; i < 256; ++i) {
+    encoding[i] = NULL;
+  }
 
-  // read name index (first font only)
-  nFonts = getWord(topPtr, 2);
-  idxOffSize = topPtr[2];
-  topPtr += 3;
-  idxStartPtr = topPtr + (nFonts + 1) * idxOffSize - 1;
-  idxPtr0 = idxStartPtr + getWord(topPtr, idxOffSize);
-  idxPtr1 = idxStartPtr + getWord(topPtr + idxOffSize, idxOffSize);
-  if ((n = idxPtr1 - idxPtr0) > 255)
-    n = 255;
-  strncpy(buf, (char *)idxPtr0, n);
-  buf[n] = '\0';
-  name = copyString(buf);
-  topPtr = idxStartPtr + getWord(topPtr + nFonts * idxOffSize, idxOffSize);
-
-  // read top dict index (first font only)
-  nFonts = getWord(topPtr, 2);
-  idxOffSize = topPtr[2];
-  topPtr += 3;
-  idxStartPtr = topPtr + (nFonts + 1) * idxOffSize - 1;
-  idxPtr0 = idxStartPtr + getWord(topPtr, idxOffSize);
-  idxPtr1 = idxStartPtr + getWord(topPtr + idxOffSize, idxOffSize);
-  charset = 0;
-  enc = 0;
-  charstrings = 0;
+  // read top dict (first font only)
+  idxPtr0 = getIndexValPtr(topDictIdxPtr, 0);
+  idxPtr1 = getIndexValPtr(topDictIdxPtr, 1);
+  charset = enc = charstrings = 0;
   i = 0;
-  while (idxPtr0 < idxPtr1) {
-    if (*idxPtr0 <= 27 || *idxPtr0 == 31) {
-      key = *idxPtr0++;
-      if (key == 0x0c)
-       key = (key << 8) | *idxPtr0++;
+  ptr = idxPtr0;
+  while (ptr < idxPtr1) {
+    if (*ptr <= 27 || *ptr == 31) {
+      key = *ptr++;
+      if (key == 0x0c) {
+       key = (key << 8) | *ptr++;
+      }
       if (key == 0x0f) { // charset
        charset = (int)op[0];
       } else if (key == 0x10) { // encoding
@@ -203,445 +277,130 @@ Type1CFontFile::Type1CFontFile(char *file, int len) {
       }
       i = 0;
     } else {
-      x = getNum(&idxPtr0, &isFP);
-      if (i < 48)
+      x = getNum(&ptr, &isFP);
+      if (i < 48) {
        op[i++] = x;
+      }
     }
   }
-  topPtr = idxStartPtr + getWord(topPtr + nFonts * idxOffSize, idxOffSize);
-
-  // read string index
-  nStrings = getWord(topPtr, 2);
-  stringOffSize = topPtr[2];
-  topPtr += 3;
-  stringIdxPtr = topPtr;
-  stringStartPtr = topPtr + (nStrings + 1) * stringOffSize - 1;
-  topPtr = stringStartPtr + getWord(topPtr + nStrings * stringOffSize,
-                                   stringOffSize);
 
   // get number of glyphs from charstrings index
-  topPtr = (Guchar *)file + charstrings;
-  nGlyphs = getWord(topPtr, 2);
+  nGlyphs = getIndexLen((Guchar *)file + charstrings);
 
-  // read charset
-  if (charset == 0) {
-    glyphNames = type1CISOAdobeCharset;
-  } else if (charset == 1) {
-    glyphNames = type1CExpertCharset;
-  } else if (charset == 2) {
-    glyphNames = type1CExpertSubsetCharset;
-  } else {
-    glyphNames = (Gushort *)gmalloc(nGlyphs * sizeof(Gushort));
-    glyphNames[0] = 0;
-    topPtr = (Guchar *)file + charset;
-    charsetFormat = *topPtr++;
-    if (charsetFormat == 0) {
-      for (i = 1; i < nGlyphs; ++i) {
-       glyphNames[i] = getWord(topPtr, 2);
-       topPtr += 2;
-      }
-    } else if (charsetFormat == 1) {
-      i = 1;
-      while (i < nGlyphs) {
-       c = getWord(topPtr, 2);
-       topPtr += 2;
-       nLeft = *topPtr++;
-       for (j = 0; j <= nLeft; ++j)
-         glyphNames[i++] = c++;
-      }
-    } else if (charsetFormat == 2) {
-      i = 1;
-      while (i < nGlyphs) {
-       c = getWord(topPtr, 2);
-       topPtr += 2;
-       nLeft = getWord(topPtr, 2);
-       topPtr += 2;
-       for (j = 0; j <= nLeft; ++j)
-         glyphNames[i++] = c++;
-      }
-    }
-  }
+  // read charset (GID -> name mapping)
+  glyphNames = readCharset(charset, nGlyphs);
 
-  // read encoding (glyph -> code mapping)
+  // read encoding (GID -> code mapping)
   if (enc == 0) {
-    encoding = type1StdEncoding.copy();
+    for (i = 0; i < 256; ++i) {
+      if (standardEncoding[i]) {
+       encoding[i] = copyString(standardEncoding[i]);
+      }
+    }
   } else if (enc == 1) {
-    encoding = type1ExpertEncoding.copy();
+    for (i = 0; i < 256; ++i) {
+      if (expertEncoding[i]) {
+       encoding[i] = copyString(expertEncoding[i]);
+      }
+    }
   } else {
-    encoding = new FontEncoding();
-    topPtr = (Guchar *)file + enc;
-    encFormat = *topPtr++;
+    ptr = (Guchar *)file + enc;
+    encFormat = *ptr++;
     if ((encFormat & 0x7f) == 0) {
-      nCodes = 1 + *topPtr++;
+      nCodes = 1 + *ptr++;
       if (nCodes > nGlyphs) {
        nCodes = nGlyphs;
       }
       for (i = 1; i < nCodes; ++i) {
-       c = *topPtr++;
-       getString(glyphNames[i], stringIdxPtr, stringStartPtr,
-                 stringOffSize, buf);
-       encoding->addChar(c, copyString(buf));
+       c = *ptr++;
+       encoding[c] = copyString(getString(glyphNames[i], buf));
       }
     } else if ((encFormat & 0x7f) == 1) {
-      nRanges = *topPtr++;
+      nRanges = *ptr++;
       nCodes = 1;
       for (i = 0; i < nRanges; ++i) {
-       c = *topPtr++;
-       nLeft = *topPtr++;
+       c = *ptr++;
+       nLeft = *ptr++;
        for (j = 0; j <= nLeft && nCodes < nGlyphs; ++j) {
-         getString(glyphNames[nCodes], stringIdxPtr, stringStartPtr,
-                   stringOffSize, buf);
-         encoding->addChar(c, copyString(buf));
+         encoding[c] = copyString(getString(glyphNames[nCodes], buf));
          ++nCodes;
          ++c;
        }
       }
     }
     if (encFormat & 0x80) {
-      nSups = *topPtr++;
+      nSups = *ptr++;
       for (i = 0; i < nSups; ++i) {
-       c = *topPtr++;
-       sid = getWord(topPtr, 2);
-       topPtr += 2;
-       getString(sid, stringIdxPtr, stringStartPtr,
-                 stringOffSize, buf);
-       encoding->addChar(c, copyString(buf));
+       c = *ptr++;
+       sid = getWord(ptr, 2);
+       ptr += 2;
+       encoding[c] = copyString(getString(sid, buf));
       }
     }
   }
 
-  if (charset > 2)
+  if (charset > 2) {
     gfree(glyphNames);
-}
-
-Type1CFontFile::~Type1CFontFile() {
-  if (name)
-    gfree(name);
-  if (encoding && freeEnc)
-    delete encoding;
-}
-
-FontEncoding *Type1CFontFile::getEncoding(GBool taken) {
-  if (taken)
-    freeEnc = gFalse;
-  return encoding;
-}
-
-static Guint getWord(Guchar *ptr, int size) {
-  Guint x;
-  int i;
-
-  x = 0;
-  for (i = 0; i < size; ++i)
-    x = (x << 8) + *ptr++;
-  return x;
-}
-
-static double getNum(Guchar **ptr, GBool *fp) {
-  static char nybChars[16] = "0123456789.ee -";
-  int b0, b, nyb0, nyb1;
-  double x;
-  char buf[65];
-  int i;
-
-  x = 0;
-  *fp = gFalse;
-  b0 = (*ptr)[0];
-  if (b0 < 28) {
-    x = 0;
-  } else if (b0 == 28) {
-    x = ((*ptr)[1] << 8) + (*ptr)[2];
-    *ptr += 3;
-  } else if (b0 == 29) {
-    x = ((*ptr)[1] << 24) + ((*ptr)[2] << 16) + ((*ptr)[3] << 8) + (*ptr)[4];
-    *ptr += 5;
-  } else if (b0 == 30) {
-    *ptr += 1;
-    i = 0;
-    do {
-      b = *(*ptr)++;
-      nyb0 = b >> 4;
-      nyb1 = b & 0x0f;
-      if (nyb0 == 0xf)
-       break;
-      buf[i++] = nybChars[nyb0];
-      if (i == 64)
-       break;
-      if (nyb0 == 0xc)
-       buf[i++] = '-';
-      if (i == 64)
-       break;
-      if (nyb1 == 0xf)
-       break;
-      buf[i++] = nybChars[nyb1];
-      if (i == 64)
-       break;
-      if (nyb1 == 0xc)
-       buf[i++] = '-';
-    } while (i < 64);
-    buf[i] = '\0';
-    x = atof(buf);
-    *fp = gTrue;
-  } else if (b0 == 31) {
-    x = 0;
-  } else if (b0 < 247) {
-    x = b0 - 139;
-    *ptr += 1;
-  } else if (b0 < 251) {
-    x = ((b0 - 247) << 8) + (*ptr)[1] + 108;
-    *ptr += 2;
-  } else {
-    x = -((b0 - 251) << 8) - (*ptr)[1] - 108;
-    *ptr += 2;
-  }
-  return x;
-}
-
-static char *getString(int sid, Guchar *stringIdxPtr,
-                      Guchar *stringStartPtr, int stringOffSize,
-                      char *buf) {
-  Guchar *idxPtr0, *idxPtr1;
-  int len;
-
-  if (sid < 391) {
-    strcpy(buf, type1CStdStrings[sid]);
-  } else {
-    sid -= 391;
-    idxPtr0 = stringStartPtr + getWord(stringIdxPtr + sid * stringOffSize,
-                                      stringOffSize);
-    idxPtr1 = stringStartPtr + getWord(stringIdxPtr + (sid+1) * stringOffSize,
-                                      stringOffSize);
-    if ((len = idxPtr1 - idxPtr0) > 255)
-      len = 255;
-    strncpy(buf, (char *)idxPtr0, len);
-    buf[len] = '\0';
   }
-  return buf;
-}
-
-//------------------------------------------------------------------------
-// Type1CFontConverter
-//------------------------------------------------------------------------
-
-Type1CFontConverter::Type1CFontConverter(char *file, int len, FILE *out) {
-  this->file = file;
-  this->len = len;
-  this->out = out;
-  r1 = 55665;
-  line = 0;
-}
-
-Type1CFontConverter::~Type1CFontConverter() {
 }
 
-void Type1CFontConverter::convert() {
-  char *fontName;
-  struct {
-    int version;
-    int notice;
-    int copyright;
-    int fullName;
-    int familyName;
-    int weight;
-    int isFixedPitch;
-    double italicAngle;
-    double underlinePosition;
-    double underlineThickness;
-    int paintType;
-    int charstringType;                //~ ???
-    double fontMatrix[6];
-    int uniqueID;
-    double fontBBox[4];
-    double strokeWidth;                //~ ???
-    int charset;
-    int encoding;
-    int charStrings;
-    int privateSize;
-    int privateOffset;
-  } dict;
+void Type1CFontFile::convertToType1(FILE *outA) {
+  Type1CTopDict dict;
+  Type1CPrivateDict privateDict;
   char buf[256], eBuf[256];
-  Guchar *topPtr, *idxStartPtr, *idxPtr0, *idxPtr1;
-  Guchar *stringIdxPtr, *stringStartPtr;
-  int topOffSize, idxOffSize, stringOffSize;
-  int nFonts, nStrings, nGlyphs;
-  int nCodes, nRanges, nLeft, nSups;
+  Guchar *idxPtr0, *idxPtr1, *subrsIdxPtr, *charStringsIdxPtr, *ptr;
+  int nGlyphs, nCodes, nRanges, nLeft, nSups;
   Gushort *glyphNames;
-  int charsetFormat, encFormat;
-  int subrsOffset, nSubrs;
-  int nCharStrings;
+  int encFormat, nSubrs, nCharStrings;
   int c, sid;
-  double x;
-  GBool isFP;
-  int key;
   int i, j, n;
 
-  // read header
-  topPtr = (Guchar *)file + (file[2] & 0xff);
-  topOffSize = file[3] & 0xff;
-
-  // read name (first font only)
-  nFonts = getWord(topPtr, 2);
-  idxOffSize = topPtr[2];
-  topPtr += 3;
-  idxStartPtr = topPtr + (nFonts + 1) * idxOffSize - 1;
-  idxPtr0 = idxStartPtr + getWord(topPtr, idxOffSize);
-  idxPtr1 = idxStartPtr + getWord(topPtr + idxOffSize, idxOffSize);
-  if ((n = idxPtr1 - idxPtr0) > 255)
-    n = 255;
-  strncpy(buf, (char *)idxPtr0, n);
-  buf[n] = '\0';
-  fontName = copyString(buf);
-  topPtr = idxStartPtr + getWord(topPtr + nFonts * idxOffSize, idxOffSize);
+  out = outA;
 
   // read top dict (first font only)
-  nFonts = getWord(topPtr, 2);
-  idxOffSize = topPtr[2];
-  topPtr += 3;
-  idxStartPtr = topPtr + (nFonts + 1) * idxOffSize - 1;
-  idxPtr0 = idxStartPtr + getWord(topPtr, idxOffSize);
-  idxPtr1 = idxStartPtr + getWord(topPtr + idxOffSize, idxOffSize);
-  dict.version = 0;
-  dict.notice = 0;
-  dict.copyright = 0;
-  dict.fullName = 0;
-  dict.familyName = 0;
-  dict.weight = 0;
-  dict.isFixedPitch = 0;
-  dict.italicAngle = 0;
-  dict.underlinePosition = -100;
-  dict.underlineThickness = 50;
-  dict.paintType = 0;
-  dict.charstringType = 2;
-  dict.fontMatrix[0] = 0.001;
-  dict.fontMatrix[1] = 0;
-  dict.fontMatrix[2] = 0;
-  dict.fontMatrix[3] = 0.001;
-  dict.fontMatrix[4] = 0;
-  dict.fontMatrix[5] = 0;
-  dict.uniqueID = 0;
-  dict.fontBBox[0] = 0;
-  dict.fontBBox[1] = 0;
-  dict.fontBBox[2] = 0;
-  dict.fontBBox[3] = 0;
-  dict.strokeWidth = 0;
-  dict.charset = 0;
-  dict.encoding = 0;
-  dict.charStrings = 0;
-  dict.privateSize = 0;
-  dict.privateOffset = 0;
-  i = 0;
-  while (idxPtr0 < idxPtr1) {
-    if (*idxPtr0 <= 27 || *idxPtr0 == 31) {
-      key = *idxPtr0++;
-      if (key == 0x0c)
-       key = (key << 8) | *idxPtr0++;
-      switch (key) {
-      case 0x0000: dict.version = (int)op[0]; break;
-      case 0x0001: dict.notice = (int)op[0]; break;
-      case 0x0c00: dict.copyright = (int)op[0]; break;
-      case 0x0002: dict.fullName = (int)op[0]; break;
-      case 0x0003: dict.familyName = (int)op[0]; break;
-      case 0x0004: dict.weight = (int)op[0]; break;
-      case 0x0c01: dict.isFixedPitch = (int)op[0]; break;
-      case 0x0c02: dict.italicAngle = op[0]; break;
-      case 0x0c03: dict.underlinePosition = op[0]; break;
-      case 0x0c04: dict.underlineThickness = op[0]; break;
-      case 0x0c05: dict.paintType = (int)op[0]; break;
-      case 0x0c06: dict.charstringType = (int)op[0]; break;
-      case 0x0c07: dict.fontMatrix[0] = op[0];
-                  dict.fontMatrix[1] = op[1];
-                  dict.fontMatrix[2] = op[2];
-                  dict.fontMatrix[3] = op[3];
-                  dict.fontMatrix[4] = op[4];
-                  dict.fontMatrix[5] = op[5]; break;
-      case 0x000d: dict.uniqueID = (int)op[0]; break;
-      case 0x0005: dict.fontBBox[0] = op[0];
-                  dict.fontBBox[1] = op[1];
-                  dict.fontBBox[2] = op[2];
-                  dict.fontBBox[3] = op[3]; break;
-      case 0x0c08: dict.strokeWidth = op[0]; break;
-      case 0x000f: dict.charset = (int)op[0]; break;
-      case 0x0010: dict.encoding = (int)op[0]; break;
-      case 0x0011: dict.charStrings = (int)op[0]; break;
-      case 0x0012: dict.privateSize = (int)op[0];
-                  dict.privateOffset = (int)op[1]; break;
-      }
-      i = 0;
-    } else {
-      x = getNum(&idxPtr0, &isFP);
-      if (i < 48) {
-       op[i] = x;
-       fp[i++] = isFP;
-      }
-    }
-  }
-  topPtr = idxStartPtr + getWord(topPtr + nFonts * idxOffSize, idxOffSize);
-
-  // read string index
-  nStrings = getWord(topPtr, 2);
-  stringOffSize = topPtr[2];
-  topPtr += 3;
-  stringIdxPtr = topPtr;
-  stringStartPtr = topPtr + (nStrings + 1) * stringOffSize - 1;
-  topPtr = stringStartPtr + getWord(topPtr + nStrings * stringOffSize,
-                                   stringOffSize);
+  readTopDict(&dict);
 
-#if 1 //~
   // get global subrs
-  int nGSubrs;
-  int gSubrOffSize;
-
-  nGSubrs = getWord(topPtr, 2);
-  gSubrOffSize = topPtr[2];
-  topPtr += 3;
-#endif
+  //~ ... global subrs are unimplemented
 
   // write header and font dictionary, up to encoding
-  fprintf(out, "%%!FontType1-1.0: %s", fontName);
+  fprintf(out, "%%!FontType1-1.0: %s", name->getCString());
   if (dict.version != 0) {
-    fprintf(out, "%s",
-           getString(dict.version, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+    fprintf(out, "%s", getString(dict.version, buf));
   }
   fprintf(out, "\n");
   fprintf(out, "11 dict begin\n");
   fprintf(out, "/FontInfo 10 dict dup begin\n");
   if (dict.version != 0) {
     fprintf(out, "/version (%s) readonly def\n",
-           getString(dict.version, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+           getString(dict.version, buf));
   }
   if (dict.notice != 0) {
     fprintf(out, "/Notice (%s) readonly def\n",
-           getString(dict.notice, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+           getString(dict.notice, buf));
   }
   if (dict.copyright != 0) {
     fprintf(out, "/Copyright (%s) readonly def\n",
-           getString(dict.copyright, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+           getString(dict.copyright, buf));
   }
   if (dict.fullName != 0) {
     fprintf(out, "/FullName (%s) readonly def\n",
-           getString(dict.fullName, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+           getString(dict.fullName, buf));
   }
   if (dict.familyName != 0) {
     fprintf(out, "/FamilyName (%s) readonly def\n",
-           getString(dict.familyName, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+           getString(dict.familyName, buf));
   }
   if (dict.weight != 0) {
     fprintf(out, "/Weight (%s) readonly def\n",
-           getString(dict.weight, stringIdxPtr, stringStartPtr,
-                     stringOffSize, buf));
+           getString(dict.weight, buf));
   }
   fprintf(out, "/isFixedPitch %s def\n", dict.isFixedPitch ? "true" : "false");
   fprintf(out, "/ItalicAngle %g def\n", dict.italicAngle);
   fprintf(out, "/UnderlinePosition %g def\n", dict.underlinePosition);
   fprintf(out, "/UnderlineThickness %g def\n", dict.underlineThickness);
   fprintf(out, "end readonly def\n");
-  fprintf(out, "/FontName /%s def\n", fontName);
+  fprintf(out, "/FontName /%s def\n", name->getCString());
   fprintf(out, "/PaintType %d def\n", dict.paintType);
   fprintf(out, "/FontType 1 def\n");
   fprintf(out, "/FontMatrix [%g %g %g %g %g %g] readonly def\n",
@@ -650,52 +409,16 @@ void Type1CFontConverter::convert() {
   fprintf(out, "/FontBBox [%g %g %g %g] readonly def\n",
          dict.fontBBox[0], dict.fontBBox[1],
          dict.fontBBox[2], dict.fontBBox[3]);
+  fprintf(out, "/StrokeWidth %g def\n", dict.strokeWidth);
   if (dict.uniqueID != 0) {
     fprintf(out, "/UniqueID %d def\n", dict.uniqueID);
   }
 
   // get number of glyphs from charstrings index
-  topPtr = (Guchar *)file + dict.charStrings;
-  nGlyphs = getWord(topPtr, 2);
+  nGlyphs = getIndexLen((Guchar *)file + dict.charStrings);
 
   // read charset
-  if (dict.charset == 0) {
-    glyphNames = type1CISOAdobeCharset;
-  } else if (dict.charset == 1) {
-    glyphNames = type1CExpertCharset;
-  } else if (dict.charset == 2) {
-    glyphNames = type1CExpertSubsetCharset;
-  } else {
-    glyphNames = (Gushort *)gmalloc(nGlyphs * sizeof(Gushort));
-    glyphNames[0] = 0;
-    topPtr = (Guchar *)file + dict.charset;
-    charsetFormat = *topPtr++;
-    if (charsetFormat == 0) {
-      for (i = 1; i < nGlyphs; ++i) {
-       glyphNames[i] = getWord(topPtr, 2);
-       topPtr += 2;
-      }
-    } else if (charsetFormat == 1) {
-      i = 1;
-      while (i < nGlyphs) {
-       c = getWord(topPtr, 2);
-       topPtr += 2;
-       nLeft = *topPtr++;
-       for (j = 0; j <= nLeft; ++j)
-         glyphNames[i++] = c++;
-      }
-    } else if (charsetFormat == 2) {
-      i = 1;
-      while (i < nGlyphs) {
-       c = getWord(topPtr, 2);
-       topPtr += 2;
-       nLeft = getWord(topPtr, 2);
-       topPtr += 2;
-       for (j = 0; j <= nLeft; ++j)
-         glyphNames[i++] = c++;
-      }
-    }
-  }
+  glyphNames = readCharset(dict.charset, nGlyphs);
 
   // read encoding (glyph -> code mapping), write Type 1 encoding
   fprintf(out, "/Encoding ");
@@ -706,54 +429,55 @@ void Type1CFontConverter::convert() {
     fprintf(out, "0 1 255 {1 index exch /.notdef put} for\n");
     if (dict.encoding == 1) {
       for (i = 0; i < 256; ++i) {
-       if (type1ExpertEncodingNames[i])
-         fprintf(out, "dup %d /%s put\n", i, type1ExpertEncodingNames[i]);
+       if (expertEncoding[i]) {
+         fprintf(out, "dup %d /%s put\n", i, expertEncoding[i]);
+       }
       }
     } else {
-      topPtr = (Guchar *)file + dict.encoding;
-      encFormat = *topPtr++;
+      ptr = (Guchar *)file + dict.encoding;
+      encFormat = *ptr++;
       if ((encFormat & 0x7f) == 0) {
-       nCodes = 1 + *topPtr++;
+       nCodes = 1 + *ptr++;
        if (nCodes > nGlyphs) {
          nCodes = nGlyphs;
        }
        for (i = 1; i < nCodes; ++i) {
-         c = *topPtr++;
-         fprintf(out, "dup %d /%s put\n", c,
-                 getString(glyphNames[i], stringIdxPtr, stringStartPtr,
-                           stringOffSize, buf));
+         c = *ptr++;
+         fprintf(out, "dup %d /%s put\n",
+                 c, getString(glyphNames[i], buf));
        }
       } else if ((encFormat & 0x7f) == 1) {
-       nRanges = *topPtr++;
+       nRanges = *ptr++;
        nCodes = 1;
        for (i = 0; i < nRanges; ++i) {
-         c = *topPtr++;
-         nLeft = *topPtr++;
+         c = *ptr++;
+         nLeft = *ptr++;
          for (j = 0; j <= nLeft && nCodes < nGlyphs; ++j) {
-           fprintf(out, "dup %d /%s put\n", c,
-                   getString(glyphNames[nCodes], stringIdxPtr, stringStartPtr,
-                             stringOffSize, buf));
+           fprintf(out, "dup %d /%s put\n",
+                   c, getString(glyphNames[nCodes], buf));
            ++nCodes;
            ++c;
          }
        }
       }
       if (encFormat & 0x80) {
-       nSups = *topPtr++;
+       nSups = *ptr++;
        for (i = 0; i < nSups; ++i) {
-         c = *topPtr++;
-         sid = getWord(topPtr, 2);
-         topPtr += 2;
-         fprintf(out, "dup %d /%s put\n", c,
-                 getString(sid, stringIdxPtr, stringStartPtr,
-                           stringOffSize, buf));
+         c = *ptr++;
+         sid = getWord(ptr, 2);
+         ptr += 2;
+         fprintf(out, "dup %d /%s put\n", c, getString(sid, buf));
        }
       }
     }
     fprintf(out, "readonly def\n");
   }
   fprintf(out, "currentdict end\n");
+
+  // start the binary section
   fprintf(out, "currentfile eexec\n");
+  r1 = 55665;
+  line = 0;
 
   // get private dictionary
   eexecWrite("\x83\xca\x73\xd5");
@@ -762,128 +486,31 @@ void Type1CFontConverter::convert() {
   eexecWrite("/ND {noaccess def} executeonly def\n");
   eexecWrite("/NP {noaccess put} executeonly def\n");
   eexecWrite("/MinFeature {16 16} ND\n");
-  eexecWrite("/password 5839 def\n");
-  subrsOffset = 0;
-  defaultWidthX = 0;
-  nominalWidthX = 0;
-  topPtr = (Guchar *)file + dict.privateOffset;
-  idxPtr0 = topPtr;
-  idxPtr1 = idxPtr0 + dict.privateSize;
-  i = 0;
-  while (idxPtr0 < idxPtr1) {
-    if (*idxPtr0 <= 27 || *idxPtr0 == 31) {
-      key = *idxPtr0++;
-      if (key == 0x0c)
-       key = (key << 8) | *idxPtr0++;
-      switch (key) {
-      case 0x0006:
-       getDeltaInt(eBuf, "BlueValues", op, i);
-       eexecWrite(eBuf);
-       break;
-      case 0x0007:
-       getDeltaInt(eBuf, "OtherBlues", op, i);
-       eexecWrite(eBuf);
-       break;
-      case 0x0008:
-       getDeltaInt(eBuf, "FamilyBlues", op, i);
-       eexecWrite(eBuf);
-       break;
-      case 0x0009:
-       getDeltaInt(eBuf, "FamilyOtherBlues", op, i);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c09:
-       sprintf(eBuf, "/BlueScale %g def\n", op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c0a:
-       sprintf(eBuf, "/BlueShift %d def\n", (int)op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c0b:
-       sprintf(eBuf, "/BlueFuzz %d def\n", (int)op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x000a:
-       sprintf(eBuf, "/StdHW [%g] def\n", op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x000b:
-       sprintf(eBuf, "/StdVW [%g] def\n", op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c0c:
-       getDeltaReal(eBuf, "StemSnapH", op, i);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c0d:
-       getDeltaReal(eBuf, "StemSnapV", op, i);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c0e:
-       sprintf(eBuf, "/ForceBold %s def\n", op[0] ? "true" : "false");
-       eexecWrite(eBuf);
-       break;
-      case 0x0c0f:
-       sprintf(eBuf, "/ForceBoldThreshold %g def\n", op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c11:
-       sprintf(eBuf, "/LanguageGroup %d def\n", (int)op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c12:
-       sprintf(eBuf, "/ExpansionFactor %g def\n", op[0]);
-       eexecWrite(eBuf);
-       break;
-      case 0x0c13:
-       error(-1, "Got Type 1C InitialRandomSeed");
-       break;
-      case 0x0013:
-       subrsOffset = (int)op[0];
-       break;
-      case 0x0014:
-       defaultWidthX = op[0];
-       defaultWidthXFP = fp[0];
-       break;
-      case 0x0015:
-       nominalWidthX = op[0];
-       nominalWidthXFP = fp[0];
-       break;
-      default:
-       error(-1, "Uknown Type 1C private dict entry %04x", key);
-       break;
-      }
-      i = 0;
-    } else {
-      x = getNum(&idxPtr0, &isFP);
-      if (i < 48) {
-       op[i] = x;
-       fp[i++] = isFP;
-      }
-    }
-  }
+  readPrivateDict(&privateDict, dict.privateOffset, dict.privateSize);
+  eexecWrite(privateDict.dictData->getCString());
+  defaultWidthX = privateDict.defaultWidthX;
+  defaultWidthXFP = privateDict.defaultWidthXFP;
+  nominalWidthX = privateDict.nominalWidthX;
+  nominalWidthXFP = privateDict.nominalWidthXFP;
 
   // get subrs
-  if (subrsOffset != 0) {
-    topPtr += subrsOffset;
-    nSubrs = getWord(topPtr, 2);
-    idxOffSize = topPtr[2];
-    topPtr += 3;
+  if (privateDict.subrsOffset != 0) {
+    subrsIdxPtr = (Guchar *)file + dict.privateOffset +
+                  privateDict.subrsOffset;
+    nSubrs = getIndexLen(subrsIdxPtr);
     sprintf(eBuf, "/Subrs %d array\n", nSubrs);
     eexecWrite(eBuf);
-    idxStartPtr = topPtr + (nSubrs + 1) * idxOffSize - 1;
-    idxPtr1 = idxStartPtr + getWord(topPtr, idxOffSize);
+    idxPtr1 = getIndexValPtr(subrsIdxPtr, 0);
     for (i = 0; i < nSubrs; ++i) {
       idxPtr0 = idxPtr1;
-      idxPtr1 = idxStartPtr + getWord(topPtr + (i+1)*idxOffSize, idxOffSize);
+      idxPtr1 = getIndexValPtr(subrsIdxPtr, i+1);
       n = idxPtr1 - idxPtr0;
-#if 1 //~
+#if 1 //~ Type 2 subrs are unimplemented
       error(-1, "Unimplemented Type 2 subrs");
 #else
       sprintf(eBuf, "dup %d %d RD ", i, n);
       eexecWrite(eBuf);
-      cvtGlyph(idxPtr0, n);
+      eexecCvtGlyph(idxPtr0, n);
       eexecWrite(" NP\n");
 #endif
     }
@@ -891,21 +518,16 @@ void Type1CFontConverter::convert() {
   }
 
   // get CharStrings
-  topPtr = (Guchar *)file + dict.charStrings;
-  nCharStrings = getWord(topPtr, 2);
-  idxOffSize = topPtr[2];
-  topPtr += 3;
+  charStringsIdxPtr = (Guchar *)file + dict.charStrings;
+  nCharStrings = getIndexLen(charStringsIdxPtr);
   sprintf(eBuf, "2 index /CharStrings %d dict dup begin\n", nCharStrings);
   eexecWrite(eBuf);
-  idxStartPtr = topPtr + (nCharStrings + 1) * idxOffSize - 1;
-  idxPtr1 = idxStartPtr + getWord(topPtr, idxOffSize);
+  idxPtr1 = getIndexValPtr(charStringsIdxPtr, 0);
   for (i = 0; i < nCharStrings; ++i) {
     idxPtr0 = idxPtr1;
-    idxPtr1 = idxStartPtr + getWord(topPtr + (i+1)*idxOffSize, idxOffSize);
+    idxPtr1 = getIndexValPtr(charStringsIdxPtr, i+1);
     n = idxPtr1 - idxPtr0;
-    cvtGlyph(getString(glyphNames[i], stringIdxPtr, stringStartPtr,
-                      stringOffSize, buf),
-            idxPtr0, n);
+    eexecCvtGlyph(getString(glyphNames[i], buf), idxPtr0, n);
   }
   eexecWrite("end\n");
   eexecWrite("end\n");
@@ -915,719 +537,3145 @@ void Type1CFontConverter::convert() {
   eexecWrite("mark currentfile closefile\n");
 
   // trailer
-  if (line > 0)
+  if (line > 0) {
     fputc('\n', out);
+  }
   for (i = 0; i < 8; ++i) {
     fprintf(out, "0000000000000000000000000000000000000000000000000000000000000000\n");
   }
   fprintf(out, "cleartomark\n");
 
   // clean up
-  if (dict.charset > 2)
+  delete privateDict.dictData;
+  if (dict.charset > 2) {
     gfree(glyphNames);
-  gfree(fontName);
+  }
 }
 
-void Type1CFontConverter::eexecWrite(char *s) {
-  Guchar *p;
-  Guchar x;
+void Type1CFontFile::convertToCIDType0(char *psName, FILE *outA) {
+  Type1CTopDict dict;
+  Type1CPrivateDict *privateDicts;
+  GString *charStrings;
+  int *charStringOffsets;
+  Gushort *charset;
+  int *cidMap;
+  Guchar *fdSelect;
+  Guchar *charStringsIdxPtr, *fdArrayIdx, *idxPtr0, *idxPtr1, *ptr;
+  char buf[256];
+  int nGlyphs, nCIDs, gdBytes, nFDs;
+  int fdSelectFmt, nRanges, gid0, gid1, fd, offset;
+  int key;
+  double x;
+  GBool isFP;
+  int i, j, k, n;
 
-  for (p = (Guchar *)s; *p; ++p) {
-    x = *p ^ (r1 >> 8);
-    r1 = (x + r1) * 52845 + 22719;
-    fputc(hexChars[x >> 4], out);
-    fputc(hexChars[x & 0x0f], out);
-    line += 2;
-    if (line == 64) {
-      fputc('\n', out);
-      line = 0;
+  out = outA;
+
+  fprintf(out, "/CIDInit /ProcSet findresource begin\n");
+
+  // read top dict (first font only)
+  readTopDict(&dict);
+
+  // read the FDArray dictionaries and Private dictionaries
+  if (dict.fdArrayOffset == 0) {
+    nFDs = 1;
+    privateDicts = (Type1CPrivateDict *)
+                     gmalloc(nFDs * sizeof(Type1CPrivateDict));
+    privateDicts[0].dictData = new GString();
+    privateDicts[0].subrsOffset = 0;
+    privateDicts[0].defaultWidthX = 0;
+    privateDicts[0].defaultWidthXFP = gFalse;
+    privateDicts[0].nominalWidthX = 0;
+    privateDicts[0].nominalWidthXFP = gFalse;
+  } else {
+    fdArrayIdx = (Guchar *)file + dict.fdArrayOffset;
+    nFDs = getIndexLen(fdArrayIdx);
+    privateDicts = (Type1CPrivateDict *)
+                     gmalloc(nFDs * sizeof(Type1CPrivateDict));
+    idxPtr1 = getIndexValPtr(fdArrayIdx, 0);
+    for (i = 0; i < nFDs; ++i) {
+      privateDicts[i].dictData = NULL;
+      idxPtr0 = idxPtr1;
+      idxPtr1 = getIndexValPtr(fdArrayIdx, i + 1);
+      ptr = idxPtr0;
+      j = 0;
+      while (ptr < idxPtr1) {
+       if (*ptr <= 27 || *ptr == 31) {
+         key = *ptr++;
+         if (key == 0x0c) {
+           key = (key << 8) | *ptr++;
+         }
+         if (key == 0x0012) {
+           readPrivateDict(&privateDicts[i], (int)op[1], (int)op[0]);
+         }
+         j = 0;
+       } else {
+         x = getNum(&ptr, &isFP);
+         if (j < 48) {
+           op[j] = x;
+           fp[j++] = isFP;
+         }
+       }
+      }
+      if (!privateDicts[i].dictData) {
+       privateDicts[i].dictData = new GString();
+       privateDicts[i].subrsOffset = 0;
+       privateDicts[i].defaultWidthX = 0;
+       privateDicts[i].defaultWidthXFP = gFalse;
+       privateDicts[i].nominalWidthX = 0;
+       privateDicts[i].nominalWidthXFP = gFalse;
+      }
+    }
+  }
+
+  // get the glyph count
+  charStringsIdxPtr = (Guchar *)file + dict.charStrings;
+  nGlyphs = getIndexLen(charStringsIdxPtr);
+
+  // read the FDSelect table
+  fdSelect = (Guchar *)gmalloc(nGlyphs);
+  if (dict.fdSelectOffset == 0) {
+    for (i = 0; i < nGlyphs; ++i) {
+      fdSelect[i] = 0;
+    }
+  } else {
+    ptr = (Guchar *)file + dict.fdSelectOffset;
+    fdSelectFmt = *ptr++;
+    if (fdSelectFmt == 0) {
+      memcpy(fdSelect, ptr, nGlyphs);
+    } else if (fdSelectFmt == 3) {
+      nRanges = getWord(ptr, 2);
+      ptr += 2;
+      gid0 = getWord(ptr, 2);
+      ptr += 2;
+      for (i = 1; i <= nRanges; ++i) {
+       fd = *ptr++;
+       gid1 = getWord(ptr, 2);
+       ptr += 2;
+       for (j = gid0; j < gid1; ++j) {
+         fdSelect[j] = fd;
+       }
+       gid0 = gid1;
+      }
+    } else {
+      error(-1, "Unknown FDSelect table format in CID font");
+      for (i = 0; i < nGlyphs; ++i) {
+       fdSelect[i] = 0;
+      }
+    }
+  }
+
+  // read the charset, compute the CID-to-GID mapping
+  charset = readCharset(dict.charset, nGlyphs);
+  nCIDs = 0;
+  for (i = 0; i < nGlyphs; ++i) {
+    if (charset[i] >= nCIDs) {
+      nCIDs = charset[i] + 1;
+    }
+  }
+  cidMap = (int *)gmalloc(nCIDs * sizeof(int));
+  for (i = 0; i < nCIDs; ++i) {
+    cidMap[i] = -1;
+  }
+  for (i = 0; i < nGlyphs; ++i) {
+    cidMap[charset[i]] = i;
+  }
+
+  // build the charstrings
+  charStrings = new GString();
+  charStringOffsets = (int *)gmalloc((nCIDs + 1) * sizeof(int));
+  for (i = 0; i < nCIDs; ++i) {
+    charStringOffsets[i] = charStrings->getLength();
+    if (cidMap[i] >= 0) {
+      idxPtr0 = getIndexValPtr(charStringsIdxPtr, cidMap[i]);
+      idxPtr1 = getIndexValPtr(charStringsIdxPtr, cidMap[i]+1);
+      n = idxPtr1 - idxPtr0;
+      j = fdSelect[cidMap[i]];
+      defaultWidthX = privateDicts[j].defaultWidthX;
+      defaultWidthXFP = privateDicts[j].defaultWidthXFP;
+      nominalWidthX = privateDicts[j].nominalWidthX;
+      nominalWidthXFP = privateDicts[j].nominalWidthXFP;
+      cvtGlyph(idxPtr0, n);
+      charStrings->append(charBuf);
+      delete charBuf;
+    }
+  }
+  charStringOffsets[nCIDs] = charStrings->getLength();
+
+  // compute gdBytes = number of bytes needed for charstring offsets
+  // (offset size needs to account for the charstring offset table,
+  // with a worst case of five bytes per entry, plus the charstrings
+  // themselves)
+  i = (nCIDs + 1) * 5 + charStrings->getLength();
+  if (i < 0x100) {
+    gdBytes = 1;
+  } else if (i < 0x10000) {
+    gdBytes = 2;
+  } else if (i < 0x1000000) {
+    gdBytes = 3;
+  } else {
+    gdBytes = 4;
+  }
+
+  // begin the font dictionary
+  fprintf(out, "20 dict begin\n");
+  fprintf(out, "/CIDFontName /%s def\n", psName);
+  fprintf(out, "/CIDFontType 0 def\n");
+  fprintf(out, "/CIDSystemInfo 3 dict dup begin\n");
+  if (dict.registry > 0 && dict.ordering > 0) {
+    fprintf(out, "  /Registry (%s) def\n", getString(dict.registry, buf));
+    fprintf(out, "  /Ordering (%s) def\n", getString(dict.ordering, buf));
+  } else {
+    fprintf(out, "  /Registry (Adobe) def\n");
+    fprintf(out, "  /Ordering (Identity) def\n");
+  }
+  fprintf(out, "  /Supplement %d def\n", dict.supplement);
+  fprintf(out, "end def\n");
+  fprintf(out, "/FontMatrix [%g %g %g %g %g %g] def\n",
+         dict.fontMatrix[0], dict.fontMatrix[1], dict.fontMatrix[2],
+         dict.fontMatrix[3], dict.fontMatrix[4], dict.fontMatrix[5]);
+  fprintf(out, "/FontBBox [%g %g %g %g] def\n",
+         dict.fontBBox[0], dict.fontBBox[1],
+         dict.fontBBox[2], dict.fontBBox[3]);
+  fprintf(out, "/FontInfo 1 dict dup begin\n");
+  fprintf(out, "  /FSType 8 def\n");
+  fprintf(out, "end def\n");
+
+  // CIDFont-specific entries
+  fprintf(out, "/CIDCount %d def\n", nCIDs);
+  fprintf(out, "/FDBytes 1 def\n");
+  fprintf(out, "/GDBytes %d def\n", gdBytes);
+  fprintf(out, "/CIDMapOffset 0 def\n");
+  if (dict.paintType != 0) {
+    fprintf(out, "/PaintType %d def\n", dict.paintType);
+    fprintf(out, "/StrokeWidth %g def\n", dict.strokeWidth);
+  }
+
+  // FDArray entry
+  fprintf(out, "/FDArray %d array\n", nFDs);
+  for (i = 0; i < nFDs; ++i) {
+    fprintf(out, "dup %d 10 dict begin\n", i);
+    fprintf(out, "/FontType 1 def\n");
+    fprintf(out, "/FontMatrix [1 0 0 1 0 0] def\n");
+    fprintf(out, "/PaintType %d def\n", dict.paintType);
+    fprintf(out, "/Private 32 dict begin\n");
+    fwrite(privateDicts[i].dictData->getCString(), 1,
+          privateDicts[i].dictData->getLength(), out);
+    fprintf(out, "currentdict end def\n");
+    fprintf(out, "currentdict end put\n");
+  }
+  fprintf(out, "def\n");
+
+  //~ need to deal with subrs
+  
+  // start the binary section
+  offset = (nCIDs + 1) * (1 + gdBytes);
+  fprintf(out, "(Hex) %d StartData\n",
+         offset + charStrings->getLength());
+
+  // write the charstring offset (CIDMap) table
+  for (i = 0; i <= nCIDs; i += 6) {
+    for (j = 0; j < 6 && i+j <= nCIDs; ++j) {
+      if (cidMap[i+j] >= 0) {
+       buf[0] = (char)fdSelect[cidMap[i+j]];
+      } else {
+       buf[0] = (char)0;
+      }
+      n = offset + charStringOffsets[i+j];
+      for (k = gdBytes; k >= 1; --k) {
+       buf[k] = (char)(n & 0xff);
+       n >>= 8;
+      }
+      for (k = 0; k <= gdBytes; ++k) {
+       fprintf(out, "%02x", buf[k] & 0xff);
+      }
+    }
+    fputc('\n', out);
+  }
+
+  // write the charstring data
+  n = charStrings->getLength();
+  for (i = 0; i < n; i += 32) {
+    for (j = 0; j < 32 && i+j < n; ++j) {
+      fprintf(out, "%02x", charStrings->getChar(i+j) & 0xff);
+    }
+    if (i + 32 >= n) {
+      fputc('>', out);
     }
+    fputc('\n', out);
+  }
+
+  for (i = 0; i < nFDs; ++i) {
+    delete privateDicts[i].dictData;
   }
+  gfree(privateDicts);
+  gfree(cidMap);
+  gfree(charset);
+  gfree(charStringOffsets);
+  delete charStrings;
+  gfree(fdSelect);
 }
 
-void Type1CFontConverter::cvtGlyph(char *name, Guchar *s, int n) {
-  int nHints;
-  int x;
-  GBool first = gTrue;
+void Type1CFontFile::convertToType0(char *psName, FILE *outA) {
+  Type1CTopDict dict;
+  Type1CPrivateDict *privateDicts;
+  Gushort *charset;
+  int *cidMap;
+  Guchar *fdSelect;
+  Guchar *charStringsIdxPtr, *fdArrayIdx, *idxPtr0, *idxPtr1, *ptr;
+  char buf[256];
   char eBuf[256];
-  double d, dx, dy;
-  GBool dFP;
-  int i, k;
+  int nGlyphs, nCIDs, nFDs;
+  int fdSelectFmt, nRanges, gid0, gid1, fd;
+  int key;
+  double x;
+  GBool isFP;
+  int i, j, n;
 
-  charBuf = new GString();
-  charBuf->append((char)73);
-  charBuf->append((char)58);
-  charBuf->append((char)147);
-  charBuf->append((char)134);
+  out = outA;
 
-  i = 0;
-  nOps = 0;
-  nHints = 0;
-  while (i < n) {
-    if (s[i] == 12) {
-      switch (s[i+1]) {
-      case 0:                  // dotsection (should be Type 1 only?)
-       //~ ignored
-       break;
-      case 34:                 // hflex
-       if (nOps != 7) {
-         error(-1, "Wrong number of args (%d) to Type 2 hflex", nOps);
-       }
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpNum(0, gFalse);
-       eexecDumpNum(op[1], fp[1]);
-       eexecDumpNum(op[2], fp[2]);
-       eexecDumpNum(op[3], fp[3]);
-       eexecDumpNum(0, gFalse);
-       eexecDumpOp1(8);
-       eexecDumpNum(op[4], fp[4]);
-       eexecDumpNum(0, gFalse);
-       eexecDumpNum(op[5], fp[5]);
-       eexecDumpNum(-op[2], fp[2]);
-       eexecDumpNum(op[6], fp[6]);
-       eexecDumpNum(0, gFalse);
-       eexecDumpOp1(8);
-       break;
-      case 35:                 // flex
-       if (nOps != 13) {
-         error(-1, "Wrong number of args (%d) to Type 2 flex", nOps);
-       }
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpNum(op[1], fp[1]);
-       eexecDumpNum(op[2], fp[2]);
-       eexecDumpNum(op[3], fp[3]);
-       eexecDumpNum(op[4], fp[4]);
-       eexecDumpNum(op[5], fp[5]);
-       eexecDumpOp1(8);
-       eexecDumpNum(op[6], fp[6]);
-       eexecDumpNum(op[7], fp[7]);
-       eexecDumpNum(op[8], fp[8]);
-       eexecDumpNum(op[9], fp[9]);
-       eexecDumpNum(op[10], fp[10]);
-       eexecDumpNum(op[11], fp[11]);
-       eexecDumpOp1(8);
-       break;
-      case 36:                 // hflex1
-       if (nOps != 9) {
-         error(-1, "Wrong number of args (%d) to Type 2 hflex1", nOps);
-       }
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpNum(op[1], fp[1]);
-       eexecDumpNum(op[2], fp[2]);
-       eexecDumpNum(op[3], fp[3]);
-       eexecDumpNum(op[4], fp[4]);
-       eexecDumpNum(0, gFalse);
-       eexecDumpOp1(8);
-       eexecDumpNum(op[5], fp[5]);
-       eexecDumpNum(0, gFalse);
-       eexecDumpNum(op[6], fp[6]);
-       eexecDumpNum(op[7], fp[7]);
-       eexecDumpNum(op[8], fp[8]);
-       eexecDumpNum(-(op[1] + op[3] + op[7]), fp[1] | fp[3] | fp[7]);
-       eexecDumpOp1(8);
-       break;
-      case 37:                 // flex1
-       if (nOps != 11) {
-         error(-1, "Wrong number of args (%d) to Type 2 flex1", nOps);
-       }
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpNum(op[1], fp[1]);
-       eexecDumpNum(op[2], fp[2]);
-       eexecDumpNum(op[3], fp[3]);
-       eexecDumpNum(op[4], fp[4]);
-       eexecDumpNum(op[5], fp[5]);
-       eexecDumpOp1(8);
-       eexecDumpNum(op[6], fp[6]);
-       eexecDumpNum(op[7], fp[7]);
-       eexecDumpNum(op[8], fp[8]);
-       eexecDumpNum(op[9], fp[9]);
-       dx = op[0] + op[2] + op[4] + op[6] + op[8];
-       dy = op[1] + op[3] + op[5] + op[7] + op[9];
-       if (fabs(dx) > fabs(dy)) {
-         eexecDumpNum(op[10], fp[10]);
-         eexecDumpNum(-dy, fp[1] | fp[3] | fp[5] | fp[7] | fp[9]);
+  // read top dict (first font only)
+  readTopDict(&dict);
+
+  // read the FDArray dictionaries and Private dictionaries
+  if (dict.fdArrayOffset == 0) {
+    nFDs = 1;
+    privateDicts = (Type1CPrivateDict *)
+                     gmalloc(nFDs * sizeof(Type1CPrivateDict));
+    privateDicts[0].dictData = new GString();
+    privateDicts[0].subrsOffset = 0;
+    privateDicts[0].defaultWidthX = 0;
+    privateDicts[0].defaultWidthXFP = gFalse;
+    privateDicts[0].nominalWidthX = 0;
+    privateDicts[0].nominalWidthXFP = gFalse;
+  } else {
+    fdArrayIdx = (Guchar *)file + dict.fdArrayOffset;
+    nFDs = getIndexLen(fdArrayIdx);
+    privateDicts = (Type1CPrivateDict *)
+                     gmalloc(nFDs * sizeof(Type1CPrivateDict));
+    idxPtr1 = getIndexValPtr(fdArrayIdx, 0);
+    for (i = 0; i < nFDs; ++i) {
+      privateDicts[i].dictData = NULL;
+      idxPtr0 = idxPtr1;
+      idxPtr1 = getIndexValPtr(fdArrayIdx, i + 1);
+      ptr = idxPtr0;
+      j = 0;
+      while (ptr < idxPtr1) {
+       if (*ptr <= 27 || *ptr == 31) {
+         key = *ptr++;
+         if (key == 0x0c) {
+           key = (key << 8) | *ptr++;
+         }
+         if (key == 0x0012) {
+           readPrivateDict(&privateDicts[i], (int)op[1], (int)op[0]);
+         }
+         j = 0;
        } else {
-         eexecDumpNum(-dx, fp[0] | fp[2] | fp[4] | fp[6] | fp[8]);
-         eexecDumpNum(op[10], fp[10]);
+         x = getNum(&ptr, &isFP);
+         if (j < 48) {
+           op[j] = x;
+           fp[j++] = isFP;
+         }
        }
-       eexecDumpOp1(8);
-       break;
-      case 3:                  // and
-      case 4:                  // or
-      case 5:                  // not
-      case 8:                  // store
-      case 9:                  // abs
-      case 10:                 // add
-      case 11:                 // sub
-      case 12:                 // div
-      case 13:                 // load
-      case 14:                 // neg
-      case 15:                 // eq
-      case 18:                 // drop
-      case 20:                 // put
-      case 21:                 // get
-      case 22:                 // ifelse
-      case 23:                 // random
-      case 24:                 // mul
-      case 26:                 // sqrt
-      case 27:                 // dup
-      case 28:                 // exch
-      case 29:                 // index
-      case 30:                 // roll
-       error(-1, "Unimplemented Type 2 charstring op: 12.%d", s[i+1]);
-       break;
-      default:
-       error(-1, "Illegal Type 2 charstring op: 12.%d", s[i+1]);
-       break;
       }
-      i += 2;
-      nOps = 0;
-    } else if (s[i] == 19) {   // hintmask
-      //~ ignored
-      if (first) {
-       cvtGlyphWidth(nOps == 1);
-       first = gFalse;
+      if (!privateDicts[i].dictData) {
+       privateDicts[i].dictData = new GString();
+       privateDicts[i].subrsOffset = 0;
+       privateDicts[i].defaultWidthX = 0;
+       privateDicts[i].defaultWidthXFP = gFalse;
+       privateDicts[i].nominalWidthX = 0;
+       privateDicts[i].nominalWidthXFP = gFalse;
       }
-      if (nOps > 0) {
-       if (nOps & 1) {
-         error(-1, "Wrong number of args (%d) to Type 2 hintmask/vstemhm",
-               nOps);
+    }
+  }
+
+  // get the glyph count
+  charStringsIdxPtr = (Guchar *)file + dict.charStrings;
+  nGlyphs = getIndexLen(charStringsIdxPtr);
+
+  // read the FDSelect table
+  fdSelect = (Guchar *)gmalloc(nGlyphs);
+  if (dict.fdSelectOffset == 0) {
+    for (i = 0; i < nGlyphs; ++i) {
+      fdSelect[i] = 0;
+    }
+  } else {
+    ptr = (Guchar *)file + dict.fdSelectOffset;
+    fdSelectFmt = *ptr++;
+    if (fdSelectFmt == 0) {
+      memcpy(fdSelect, ptr, nGlyphs);
+    } else if (fdSelectFmt == 3) {
+      nRanges = getWord(ptr, 2);
+      ptr += 2;
+      gid0 = getWord(ptr, 2);
+      ptr += 2;
+      for (i = 1; i <= nRanges; ++i) {
+       fd = *ptr++;
+       gid1 = getWord(ptr, 2);
+       ptr += 2;
+       for (j = gid0; j < gid1; ++j) {
+         fdSelect[j] = fd;
        }
-       nHints += nOps / 2;
+       gid0 = gid1;
       }
-      i += 1 + ((nHints + 7) >> 3);
-      nOps = 0;
-    } else if (s[i] == 20) {   // cntrmask
-      //~ ignored
-      if (first) {
-       cvtGlyphWidth(nOps == 1);
-       first = gFalse;
+    } else {
+      error(-1, "Unknown FDSelect table format in CID font");
+      for (i = 0; i < nGlyphs; ++i) {
+       fdSelect[i] = 0;
       }
-      if (nOps > 0) {
-       if (nOps & 1) {
-         error(-1, "Wrong number of args (%d) to Type 2 cntrmask/vstemhm",
-               nOps);
-       }
-       nHints += nOps / 2;
+    }
+  }
+
+  // read the charset, compute the CID-to-GID mapping
+  charset = readCharset(dict.charset, nGlyphs);
+  nCIDs = 0;
+  for (i = 0; i < nGlyphs; ++i) {
+    if (charset[i] >= nCIDs) {
+      nCIDs = charset[i] + 1;
+    }
+  }
+  cidMap = (int *)gmalloc(nCIDs * sizeof(int));
+  for (i = 0; i < nCIDs; ++i) {
+    cidMap[i] = -1;
+  }
+  for (i = 0; i < nGlyphs; ++i) {
+    cidMap[charset[i]] = i;
+  }
+
+  // write the descendant Type 1 fonts
+  for (i = 0; i < nCIDs; i += 256) {
+
+    //~ this assumes that all CIDs in this block have the same FD --
+    //~ to handle multiple FDs correctly, need to somehow divide the
+    //~ font up by FD
+    fd = 0;
+    for (j = 0; j < 256 && i+j < nCIDs; ++j) {
+      if (cidMap[i+j] >= 0) {
+       fd = fdSelect[cidMap[i+j]];
+       break;
       }
-      i += 1 + ((nHints + 7) >> 3);
-      nOps = 0;
-    } else if (s[i] == 28) {
-      x = (s[i+1] << 8) + s[i+2];
-      if (x & 0x8000)
-       x |= -1 << 15;
-      if (nOps < 48) {
-       fp[nOps] = gFalse;
-       op[nOps++] = x;
+    }
+
+    // font dictionary (unencrypted section)
+    fprintf(out, "16 dict begin\n");
+    fprintf(out, "/FontName /%s_%02x def\n", psName, i >> 8);
+    fprintf(out, "/FontType 1 def\n");
+    fprintf(out, "/FontMatrix [%g %g %g %g %g %g] def\n",
+           dict.fontMatrix[0], dict.fontMatrix[1], dict.fontMatrix[2],
+           dict.fontMatrix[3], dict.fontMatrix[4], dict.fontMatrix[5]);
+    fprintf(out, "/FontBBox [%g %g %g %g] def\n",
+           dict.fontBBox[0], dict.fontBBox[1],
+           dict.fontBBox[2], dict.fontBBox[3]);
+    fprintf(out, "/PaintType %d def\n", dict.paintType);
+    if (dict.paintType != 0) {
+      fprintf(out, "/StrokeWidth %g def\n", dict.strokeWidth);
+    }
+    fprintf(out, "/Encoding 256 array\n");
+    for (j = 0; j < 256 && i+j < nCIDs; ++j) {
+      fprintf(out, "dup %d /c%02x put\n", j, j);
+    }
+    fprintf(out, "readonly def\n");
+    fprintf(out, "currentdict end\n");
+
+    // start the binary section
+    fprintf(out, "currentfile eexec\n");
+    r1 = 55665;
+    line = 0;
+
+    // start the private dictionary
+    eexecWrite("\x83\xca\x73\xd5");
+    eexecWrite("dup /Private 32 dict dup begin\n");
+    eexecWrite("/RD {string currentfile exch readstring pop} executeonly def\n");
+    eexecWrite("/ND {noaccess def} executeonly def\n");
+    eexecWrite("/NP {noaccess put} executeonly def\n");
+    eexecWrite("/MinFeature {16 16} ND\n");
+    eexecWrite(privateDicts[fd].dictData->getCString());
+    defaultWidthX = privateDicts[fd].defaultWidthX;
+    defaultWidthXFP = privateDicts[fd].defaultWidthXFP;
+    nominalWidthX = privateDicts[fd].nominalWidthX;
+    nominalWidthXFP = privateDicts[fd].nominalWidthXFP;
+
+    // start the CharStrings
+    sprintf(eBuf, "2 index /CharStrings 256 dict dup begin\n");
+    eexecWrite(eBuf);
+
+    // write the .notdef CharString
+    idxPtr0 = getIndexValPtr(charStringsIdxPtr, 0);
+    idxPtr1 = getIndexValPtr(charStringsIdxPtr, 1);
+    n = idxPtr1 - idxPtr0;
+    eexecCvtGlyph(".notdef", idxPtr0, n);
+
+    // write the CharStrings
+    for (j = 0; j < 256 && i+j < nCIDs; ++j) {
+      if (cidMap[i+j] >= 0) {
+       idxPtr0 = getIndexValPtr(charStringsIdxPtr, cidMap[i+j]);
+       idxPtr1 = getIndexValPtr(charStringsIdxPtr, cidMap[i+j]+1);
+       n = idxPtr1 - idxPtr0;
+       sprintf(buf, "c%02x", j);
+       eexecCvtGlyph(buf, idxPtr0, n);
       }
-      i += 3;
-    } else if (s[i] <= 31) {
-      switch (s[i]) {
-      case 4:                  // vmoveto
-       if (first) {
-         cvtGlyphWidth(nOps == 2);
-         first = gFalse;
-       }
-       if (nOps != 1)
-         error(-1, "Wrong number of args (%d) to Type 2 vmoveto", nOps);
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpOp1(4);
+    }
+    eexecWrite("end\n");
+    eexecWrite("end\n");
+    eexecWrite("readonly put\n");
+    eexecWrite("noaccess put\n");
+    eexecWrite("dup /FontName get exch definefont pop\n");
+    eexecWrite("mark currentfile closefile\n");
+
+    // trailer
+    if (line > 0) {
+      fputc('\n', out);
+    }
+    for (j = 0; j < 8; ++j) {
+      fprintf(out, "0000000000000000000000000000000000000000000000000000000000000000\n");
+    }
+    fprintf(out, "cleartomark\n");
+  }
+
+  // write the Type 0 parent font
+  fprintf(out, "16 dict begin\n");
+  fprintf(out, "/FontName /%s def\n", psName);
+  fprintf(out, "/FontType 0 def\n");
+  fprintf(out, "/FontMatrix [1 0 0 1 0 0] def\n");
+  fprintf(out, "/FMapType 2 def\n");
+  fprintf(out, "/Encoding [\n");
+  for (i = 0; i < nCIDs; i += 256) {
+    fprintf(out, "%d\n", i >> 8);
+  }
+  fprintf(out, "] def\n");
+  fprintf(out, "/FDepVector [\n");
+  for (i = 0; i < nCIDs; i += 256) {
+    fprintf(out, "/%s_%02x findfont\n", psName, i >> 8);
+  }
+  fprintf(out, "] def\n");
+  fprintf(out, "FontName currentdict end definefont pop\n");
+
+  // clean up
+  for (i = 0; i < nFDs; ++i) {
+    delete privateDicts[i].dictData;
+  }
+  gfree(privateDicts);
+  gfree(cidMap);
+  gfree(charset);
+  gfree(fdSelect);
+}
+
+void Type1CFontFile::readTopDict(Type1CTopDict *dict) {
+  Guchar *idxPtr0, *idxPtr1, *ptr;
+  double x;
+  GBool isFP;
+  int key;
+  int i;
+
+  idxPtr0 = getIndexValPtr(topDictIdxPtr, 0);
+  idxPtr1 = getIndexValPtr(topDictIdxPtr, 1);
+  dict->version = 0;
+  dict->notice = 0;
+  dict->copyright = 0;
+  dict->fullName = 0;
+  dict->familyName = 0;
+  dict->weight = 0;
+  dict->isFixedPitch = 0;
+  dict->italicAngle = 0;
+  dict->underlinePosition = -100;
+  dict->underlineThickness = 50;
+  dict->paintType = 0;
+  dict->charstringType = 2;
+  dict->fontMatrix[0] = 0.001;
+  dict->fontMatrix[1] = 0;
+  dict->fontMatrix[2] = 0;
+  dict->fontMatrix[3] = 0.001;
+  dict->fontMatrix[4] = 0;
+  dict->fontMatrix[5] = 0;
+  dict->uniqueID = 0;
+  dict->fontBBox[0] = 0;
+  dict->fontBBox[1] = 0;
+  dict->fontBBox[2] = 0;
+  dict->fontBBox[3] = 0;
+  dict->strokeWidth = 0;
+  dict->charset = 0;
+  dict->encoding = 0;
+  dict->charStrings = 0;
+  dict->privateSize = 0;
+  dict->privateOffset = 0;
+  dict->registry = 0;
+  dict->ordering = 0;
+  dict->supplement = 0;
+  dict->fdArrayOffset = 0;
+  dict->fdSelectOffset = 0;
+  i = 0;
+  ptr = idxPtr0;
+  while (ptr < idxPtr1) {
+    if (*ptr <= 27 || *ptr == 31) {
+      key = *ptr++;
+      if (key == 0x0c) {
+       key = (key << 8) | *ptr++;
+      }
+      switch (key) {
+      case 0x0000: dict->version = (int)op[0]; break;
+      case 0x0001: dict->notice = (int)op[0]; break;
+      case 0x0c00: dict->copyright = (int)op[0]; break;
+      case 0x0002: dict->fullName = (int)op[0]; break;
+      case 0x0003: dict->familyName = (int)op[0]; break;
+      case 0x0004: dict->weight = (int)op[0]; break;
+      case 0x0c01: dict->isFixedPitch = (int)op[0]; break;
+      case 0x0c02: dict->italicAngle = op[0]; break;
+      case 0x0c03: dict->underlinePosition = op[0]; break;
+      case 0x0c04: dict->underlineThickness = op[0]; break;
+      case 0x0c05: dict->paintType = (int)op[0]; break;
+      case 0x0c06: dict->charstringType = (int)op[0]; break;
+      case 0x0c07: dict->fontMatrix[0] = op[0];
+                  dict->fontMatrix[1] = op[1];
+                  dict->fontMatrix[2] = op[2];
+                  dict->fontMatrix[3] = op[3];
+                  dict->fontMatrix[4] = op[4];
+                  dict->fontMatrix[5] = op[5]; break;
+      case 0x000d: dict->uniqueID = (int)op[0]; break;
+      case 0x0005: dict->fontBBox[0] = op[0];
+                  dict->fontBBox[1] = op[1];
+                  dict->fontBBox[2] = op[2];
+                  dict->fontBBox[3] = op[3]; break;
+      case 0x0c08: dict->strokeWidth = op[0]; break;
+      case 0x000f: dict->charset = (int)op[0]; break;
+      case 0x0010: dict->encoding = (int)op[0]; break;
+      case 0x0011: dict->charStrings = (int)op[0]; break;
+      case 0x0012: dict->privateSize = (int)op[0];
+                  dict->privateOffset = (int)op[1]; break;
+      case 0x0c1e: dict->registry = (int)op[0];
+                  dict->ordering = (int)op[1];
+                  dict->supplement = (int)op[2]; break;
+      case 0x0c24: dict->fdArrayOffset = (int)op[0]; break;
+      case 0x0c25: dict->fdSelectOffset = (int)op[0]; break;
+      }
+      i = 0;
+    } else {
+      x = getNum(&ptr, &isFP);
+      if (i < 48) {
+       op[i] = x;
+       fp[i++] = isFP;
+      }
+    }
+  }
+}
+
+void Type1CFontFile::readPrivateDict(Type1CPrivateDict *privateDict,
+                                    int offset, int size) {
+  Guchar *idxPtr0, *idxPtr1, *ptr;
+  char eBuf[256];
+  int key;
+  double x;
+  GBool isFP;
+  int i;
+
+  privateDict->dictData = new GString();
+  privateDict->subrsOffset = 0;
+  privateDict->defaultWidthX = 0;
+  privateDict->defaultWidthXFP = gFalse;
+  privateDict->nominalWidthX = 0;
+  privateDict->nominalWidthXFP = gFalse;
+  idxPtr0 = (Guchar *)file + offset;
+  idxPtr1 = idxPtr0 + size;
+  ptr = idxPtr0;
+  i = 0;
+  while (ptr < idxPtr1) {
+    if (*ptr <= 27 || *ptr == 31) {
+      key = *ptr++;
+      if (key == 0x0c) {
+       key = (key << 8) | *ptr++;
+      }
+      switch (key) {
+      case 0x0006:
+       getDeltaInt(eBuf, "BlueValues", op, i);
+       privateDict->dictData->append(eBuf);
        break;
-      case 5:                  // rlineto
-       if (nOps < 2 || nOps % 2 != 0)
-         error(-1, "Wrong number of args (%d) to Type 2 rlineto", nOps);
-       for (k = 0; k < nOps; k += 2) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpNum(op[k+1], fp[k+1]);
-         eexecDumpOp1(5);
-       }
+      case 0x0007:
+       getDeltaInt(eBuf, "OtherBlues", op, i);
+       privateDict->dictData->append(eBuf);
        break;
-      case 6:                  // hlineto
-       if (nOps < 1)
-         error(-1, "Wrong number of args (%d) to Type 2 hlineto", nOps);
-       for (k = 0; k < nOps; ++k) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpOp1((k & 1) ? 7 : 6);
-       }
+      case 0x0008:
+       getDeltaInt(eBuf, "FamilyBlues", op, i);
+       privateDict->dictData->append(eBuf);
        break;
-      case 7:                  // vlineto
-       if (nOps < 1)
-         error(-1, "Wrong number of args (%d) to Type 2 vlineto", nOps);
-       for (k = 0; k < nOps; ++k) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpOp1((k & 1) ? 6 : 7);
-       }
+      case 0x0009:
+       getDeltaInt(eBuf, "FamilyOtherBlues", op, i);
+       privateDict->dictData->append(eBuf);
        break;
-      case 8:                  // rrcurveto
-       if (nOps < 6 || nOps % 6 != 0)
-         error(-1, "Wrong number of args (%d) to Type 2 rrcurveto", nOps);
-       for (k = 0; k < nOps; k += 6) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpNum(op[k+1], fp[k+1]);
-         eexecDumpNum(op[k+2], fp[k+2]);
-         eexecDumpNum(op[k+3], fp[k+3]);
-         eexecDumpNum(op[k+4], fp[k+4]);
-         eexecDumpNum(op[k+5], fp[k+5]);
-         eexecDumpOp1(8);
-       }
+      case 0x0c09:
+       sprintf(eBuf, "/BlueScale %g def\n", op[0]);
+       privateDict->dictData->append(eBuf);
        break;
-      case 14:                 // endchar / seac
-       if (first) {
-         cvtGlyphWidth(nOps == 1 || nOps == 5);
-         first = gFalse;
-       }
-       if (nOps == 4) {
-         eexecDumpNum(0, 0);
-         eexecDumpNum(op[0], fp[0]);
-         eexecDumpNum(op[1], fp[1]);
-         eexecDumpNum(op[2], fp[2]);
-         eexecDumpNum(op[3], fp[3]);
-         eexecDumpOp2(6);
-       } else if (nOps == 0) {
-         eexecDumpOp1(14);
-       } else {
-         error(-1, "Wrong number of args (%d) to Type 2 endchar", nOps);
-       }
+      case 0x0c0a:
+       sprintf(eBuf, "/BlueShift %d def\n", (int)op[0]);
+       privateDict->dictData->append(eBuf);
        break;
-      case 21:                 // rmoveto
-       if (first) {
-         cvtGlyphWidth(nOps == 3);
-         first = gFalse;
-       }
-       if (nOps != 2)
-         error(-1, "Wrong number of args (%d) to Type 2 rmoveto", nOps);
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpNum(op[1], fp[1]);
-       eexecDumpOp1(21);
+      case 0x0c0b:
+       sprintf(eBuf, "/BlueFuzz %d def\n", (int)op[0]);
+       privateDict->dictData->append(eBuf);
        break;
-      case 22:                 // hmoveto
-       if (first) {
-         cvtGlyphWidth(nOps == 2);
-         first = gFalse;
-       }
-       if (nOps != 1)
-         error(-1, "Wrong number of args (%d) to Type 2 hmoveto", nOps);
-       eexecDumpNum(op[0], fp[0]);
-       eexecDumpOp1(22);
+      case 0x000a:
+       sprintf(eBuf, "/StdHW [%g] def\n", op[0]);
+       privateDict->dictData->append(eBuf);
        break;
-      case 24:                 // rcurveline
-       if (nOps < 8 || (nOps - 2) % 6 != 0)
-         error(-1, "Wrong number of args (%d) to Type 2 rcurveline", nOps);
-       for (k = 0; k < nOps - 2; k += 6) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpNum(op[k+1], fp[k+1]);
-         eexecDumpNum(op[k+2], fp[k+2]);
-         eexecDumpNum(op[k+3], fp[k+3]);
-         eexecDumpNum(op[k+4], fp[k+4]);
-         eexecDumpNum(op[k+5], fp[k+5]);
-         eexecDumpOp1(8);
-       }
-       eexecDumpNum(op[k], fp[k]);
-       eexecDumpNum(op[k+1], fp[k]);
-       eexecDumpOp1(5);
+      case 0x000b:
+       sprintf(eBuf, "/StdVW [%g] def\n", op[0]);
+       privateDict->dictData->append(eBuf);
        break;
-      case 25:                 // rlinecurve
-       if (nOps < 8 || (nOps - 6) % 2 != 0)
-         error(-1, "Wrong number of args (%d) to Type 2 rlinecurve", nOps);
-       for (k = 0; k < nOps - 6; k += 2) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpNum(op[k+1], fp[k]);
-         eexecDumpOp1(5);
-       }
-       eexecDumpNum(op[k], fp[k]);
-       eexecDumpNum(op[k+1], fp[k+1]);
-       eexecDumpNum(op[k+2], fp[k+2]);
-       eexecDumpNum(op[k+3], fp[k+3]);
-       eexecDumpNum(op[k+4], fp[k+4]);
-       eexecDumpNum(op[k+5], fp[k+5]);
-       eexecDumpOp1(8);
+      case 0x0c0c:
+       getDeltaReal(eBuf, "StemSnapH", op, i);
+       privateDict->dictData->append(eBuf);
        break;
-      case 26:                 // vvcurveto
-       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0))
-         error(-1, "Wrong number of args (%d) to Type 2 vvcurveto", nOps);
-       if (nOps % 2 == 1) {
-         eexecDumpNum(op[0], fp[0]);
-         eexecDumpNum(op[1], fp[1]);
-         eexecDumpNum(op[2], fp[2]);
-         eexecDumpNum(op[3], fp[3]);
-         eexecDumpNum(0, gFalse);
-         eexecDumpNum(op[4], fp[4]);
-         eexecDumpOp1(8);
-         k = 5;
-       } else {
-         k = 0;
-       }
-       for (; k < nOps; k += 4) {
-         eexecDumpNum(0, gFalse);
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpNum(op[k+1], fp[k+1]);
-         eexecDumpNum(op[k+2], fp[k+2]);
-         eexecDumpNum(0, gFalse);
-         eexecDumpNum(op[k+3], fp[k+3]);
-         eexecDumpOp1(8);
-       }
+      case 0x0c0d:
+       getDeltaReal(eBuf, "StemSnapV", op, i);
+       privateDict->dictData->append(eBuf);
        break;
-      case 27:                 // hhcurveto
-       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0))
-         error(-1, "Wrong number of args (%d) to Type 2 hhcurveto", nOps);
-       if (nOps % 2 == 1) {
-         eexecDumpNum(op[1], fp[1]);
-         eexecDumpNum(op[0], fp[0]);
-         eexecDumpNum(op[2], fp[2]);
-         eexecDumpNum(op[3], fp[3]);
-         eexecDumpNum(op[4], fp[4]);
-         eexecDumpNum(0, gFalse);
-         eexecDumpOp1(8);
-         k = 5;
-       } else {
-         k = 0;
-       }
-       for (; k < nOps; k += 4) {
-         eexecDumpNum(op[k], fp[k]);
-         eexecDumpNum(0, gFalse);
-         eexecDumpNum(op[k+1], fp[k+1]);
-         eexecDumpNum(op[k+2], fp[k+2]);
-         eexecDumpNum(op[k+3], fp[k+3]);
-         eexecDumpNum(0, gFalse);
-         eexecDumpOp1(8);
-       }
+      case 0x0c0e:
+       sprintf(eBuf, "/ForceBold %s def\n", op[0] ? "true" : "false");
+       privateDict->dictData->append(eBuf);
        break;
-      case 30:                 // vhcurveto
-       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0))
-         error(-1, "Wrong number of args (%d) to Type 2 vhcurveto", nOps);
-       for (k = 0; k < nOps && k != nOps-5; k += 4) {
-         if (k % 8 == 0) {
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
+      case 0x0c0f:
+       sprintf(eBuf, "/ForceBoldThreshold %g def\n", op[0]);
+       privateDict->dictData->append(eBuf);
+       break;
+      case 0x0c11:
+       sprintf(eBuf, "/LanguageGroup %d def\n", (int)op[0]);
+       privateDict->dictData->append(eBuf);
+       break;
+      case 0x0c12:
+       sprintf(eBuf, "/ExpansionFactor %g def\n", op[0]);
+       privateDict->dictData->append(eBuf);
+       break;
+      case 0x0c13:
+       error(-1, "Got Type 1C InitialRandomSeed");
+       break;
+      case 0x0013:
+       privateDict->subrsOffset = (int)op[0];
+       break;
+      case 0x0014:
+       privateDict->defaultWidthX = op[0];
+       privateDict->defaultWidthXFP = fp[0];
+       break;
+      case 0x0015:
+       privateDict->nominalWidthX = op[0];
+       privateDict->nominalWidthXFP = fp[0];
+       break;
+      default:
+       error(-1, "Unknown Type 1C private dict entry %04x", key);
+       break;
+      }
+      i = 0;
+    } else {
+      x = getNum(&ptr, &isFP);
+      if (i < 48) {
+       op[i] = x;
+       fp[i++] = isFP;
+      }
+    }
+  }
+}
+
+Gushort *Type1CFontFile::readCharset(int charset, int nGlyphs) {
+  Gushort *glyphNames;
+  Guchar *ptr;
+  int charsetFormat, c;
+  int nLeft, i, j;
+
+  if (charset == 0) {
+    glyphNames = type1CISOAdobeCharset;
+  } else if (charset == 1) {
+    glyphNames = type1CExpertCharset;
+  } else if (charset == 2) {
+    glyphNames = type1CExpertSubsetCharset;
+  } else {
+    glyphNames = (Gushort *)gmalloc(nGlyphs * sizeof(Gushort));
+    glyphNames[0] = 0;
+    ptr = (Guchar *)file + charset;
+    charsetFormat = *ptr++;
+    if (charsetFormat == 0) {
+      for (i = 1; i < nGlyphs; ++i) {
+       glyphNames[i] = getWord(ptr, 2);
+       ptr += 2;
+      }
+    } else if (charsetFormat == 1) {
+      i = 1;
+      while (i < nGlyphs) {
+       c = getWord(ptr, 2);
+       ptr += 2;
+       nLeft = *ptr++;
+       for (j = 0; j <= nLeft && i < nGlyphs; ++j) {
+         glyphNames[i++] = c++;
+       }
+      }
+    } else if (charsetFormat == 2) {
+      i = 1;
+      while (i < nGlyphs) {
+       c = getWord(ptr, 2);
+       ptr += 2;
+       nLeft = getWord(ptr, 2);
+       ptr += 2;
+       for (j = 0; j <= nLeft && i < nGlyphs; ++j) {
+         glyphNames[i++] = c++;
+       }
+      }
+    }
+  }
+  return glyphNames;
+}
+
+void Type1CFontFile::eexecWrite(char *s) {
+  Guchar *p;
+  Guchar x;
+
+  for (p = (Guchar *)s; *p; ++p) {
+    x = *p ^ (r1 >> 8);
+    r1 = (x + r1) * 52845 + 22719;
+    fputc(hexChars[x >> 4], out);
+    fputc(hexChars[x & 0x0f], out);
+    line += 2;
+    if (line == 64) {
+      fputc('\n', out);
+      line = 0;
+    }
+  }
+}
+
+void Type1CFontFile::eexecCvtGlyph(char *glyphName, Guchar *s, int n) {
+  char eBuf[256];
+
+  cvtGlyph(s, n);
+  sprintf(eBuf, "/%s %d RD ", glyphName, charBuf->getLength());
+  eexecWrite(eBuf);
+  eexecWriteCharstring((Guchar *)charBuf->getCString(), charBuf->getLength());
+  eexecWrite(" ND\n");
+  delete charBuf;
+}
+
+void Type1CFontFile::cvtGlyph(Guchar *s, int n) {
+  int nHints;
+  int x;
+  GBool first = gTrue;
+  double d, dx, dy;
+  GBool dFP;
+  Gushort r2;
+  Guchar byte;
+  int i, k;
+
+  charBuf = new GString();
+  charBuf->append((char)73);
+  charBuf->append((char)58);
+  charBuf->append((char)147);
+  charBuf->append((char)134);
+
+  i = 0;
+  nOps = 0;
+  nHints = 0;
+  while (i < n) {
+    if (s[i] == 12) {
+      switch (s[i+1]) {
+      case 0:                  // dotsection (should be Type 1 only?)
+       // ignored
+       break;
+      case 34:                 // hflex
+       if (nOps != 7) {
+         error(-1, "Wrong number of args (%d) to Type 2 hflex", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpNum(0, gFalse);
+       eexecDumpNum(op[1], fp[1]);
+       eexecDumpNum(op[2], fp[2]);
+       eexecDumpNum(op[3], fp[3]);
+       eexecDumpNum(0, gFalse);
+       eexecDumpOp1(8);
+       eexecDumpNum(op[4], fp[4]);
+       eexecDumpNum(0, gFalse);
+       eexecDumpNum(op[5], fp[5]);
+       eexecDumpNum(-op[2], fp[2]);
+       eexecDumpNum(op[6], fp[6]);
+       eexecDumpNum(0, gFalse);
+       eexecDumpOp1(8);
+       break;
+      case 35:                 // flex
+       if (nOps != 13) {
+         error(-1, "Wrong number of args (%d) to Type 2 flex", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpNum(op[1], fp[1]);
+       eexecDumpNum(op[2], fp[2]);
+       eexecDumpNum(op[3], fp[3]);
+       eexecDumpNum(op[4], fp[4]);
+       eexecDumpNum(op[5], fp[5]);
+       eexecDumpOp1(8);
+       eexecDumpNum(op[6], fp[6]);
+       eexecDumpNum(op[7], fp[7]);
+       eexecDumpNum(op[8], fp[8]);
+       eexecDumpNum(op[9], fp[9]);
+       eexecDumpNum(op[10], fp[10]);
+       eexecDumpNum(op[11], fp[11]);
+       eexecDumpOp1(8);
+       break;
+      case 36:                 // hflex1
+       if (nOps != 9) {
+         error(-1, "Wrong number of args (%d) to Type 2 hflex1", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpNum(op[1], fp[1]);
+       eexecDumpNum(op[2], fp[2]);
+       eexecDumpNum(op[3], fp[3]);
+       eexecDumpNum(op[4], fp[4]);
+       eexecDumpNum(0, gFalse);
+       eexecDumpOp1(8);
+       eexecDumpNum(op[5], fp[5]);
+       eexecDumpNum(0, gFalse);
+       eexecDumpNum(op[6], fp[6]);
+       eexecDumpNum(op[7], fp[7]);
+       eexecDumpNum(op[8], fp[8]);
+       eexecDumpNum(-(op[1] + op[3] + op[7]), fp[1] | fp[3] | fp[7]);
+       eexecDumpOp1(8);
+       break;
+      case 37:                 // flex1
+       if (nOps != 11) {
+         error(-1, "Wrong number of args (%d) to Type 2 flex1", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpNum(op[1], fp[1]);
+       eexecDumpNum(op[2], fp[2]);
+       eexecDumpNum(op[3], fp[3]);
+       eexecDumpNum(op[4], fp[4]);
+       eexecDumpNum(op[5], fp[5]);
+       eexecDumpOp1(8);
+       eexecDumpNum(op[6], fp[6]);
+       eexecDumpNum(op[7], fp[7]);
+       eexecDumpNum(op[8], fp[8]);
+       eexecDumpNum(op[9], fp[9]);
+       dx = op[0] + op[2] + op[4] + op[6] + op[8];
+       dy = op[1] + op[3] + op[5] + op[7] + op[9];
+       if (fabs(dx) > fabs(dy)) {
+         eexecDumpNum(op[10], fp[10]);
+         eexecDumpNum(-dy, fp[1] | fp[3] | fp[5] | fp[7] | fp[9]);
+       } else {
+         eexecDumpNum(-dx, fp[0] | fp[2] | fp[4] | fp[6] | fp[8]);
+         eexecDumpNum(op[10], fp[10]);
+       }
+       eexecDumpOp1(8);
+       break;
+      case 3:                  // and
+      case 4:                  // or
+      case 5:                  // not
+      case 8:                  // store
+      case 9:                  // abs
+      case 10:                 // add
+      case 11:                 // sub
+      case 12:                 // div
+      case 13:                 // load
+      case 14:                 // neg
+      case 15:                 // eq
+      case 18:                 // drop
+      case 20:                 // put
+      case 21:                 // get
+      case 22:                 // ifelse
+      case 23:                 // random
+      case 24:                 // mul
+      case 26:                 // sqrt
+      case 27:                 // dup
+      case 28:                 // exch
+      case 29:                 // index
+      case 30:                 // roll
+       error(-1, "Unimplemented Type 2 charstring op: 12.%d", s[i+1]);
+       break;
+      default:
+       error(-1, "Illegal Type 2 charstring op: 12.%d", s[i+1]);
+       break;
+      }
+      i += 2;
+      nOps = 0;
+    } else if (s[i] == 19) {   // hintmask
+      // ignored
+      if (first) {
+       cvtGlyphWidth(nOps == 1);
+       first = gFalse;
+      }
+      if (nOps > 0) {
+       if (nOps & 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 hintmask/vstemhm",
+               nOps);
+       }
+       nHints += nOps / 2;
+      }
+      i += 1 + ((nHints + 7) >> 3);
+      nOps = 0;
+    } else if (s[i] == 20) {   // cntrmask
+      // ignored
+      if (first) {
+       cvtGlyphWidth(nOps == 1);
+       first = gFalse;
+      }
+      if (nOps > 0) {
+       if (nOps & 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 cntrmask/vstemhm",
+               nOps);
+       }
+       nHints += nOps / 2;
+      }
+      i += 1 + ((nHints + 7) >> 3);
+      nOps = 0;
+    } else if (s[i] == 28) {
+      x = (s[i+1] << 8) + s[i+2];
+      if (x & 0x8000) {
+       x |= -1 << 15;
+      }
+      if (nOps < 48) {
+       fp[nOps] = gFalse;
+       op[nOps++] = x;
+      }
+      i += 3;
+    } else if (s[i] <= 31) {
+      switch (s[i]) {
+      case 4:                  // vmoveto
+       if (first) {
+         cvtGlyphWidth(nOps == 2);
+         first = gFalse;
+       }
+       if (nOps != 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 vmoveto", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpOp1(4);
+       break;
+      case 5:                  // rlineto
+       if (nOps < 2 || nOps % 2 != 0) {
+         error(-1, "Wrong number of args (%d) to Type 2 rlineto", nOps);
+       }
+       for (k = 0; k < nOps; k += 2) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpNum(op[k+1], fp[k+1]);
+         eexecDumpOp1(5);
+       }
+       break;
+      case 6:                  // hlineto
+       if (nOps < 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 hlineto", nOps);
+       }
+       for (k = 0; k < nOps; ++k) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpOp1((k & 1) ? 7 : 6);
+       }
+       break;
+      case 7:                  // vlineto
+       if (nOps < 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 vlineto", nOps);
+       }
+       for (k = 0; k < nOps; ++k) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpOp1((k & 1) ? 6 : 7);
+       }
+       break;
+      case 8:                  // rrcurveto
+       if (nOps < 6 || nOps % 6 != 0) {
+         error(-1, "Wrong number of args (%d) to Type 2 rrcurveto", nOps);
+       }
+       for (k = 0; k < nOps; k += 6) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpNum(op[k+1], fp[k+1]);
+         eexecDumpNum(op[k+2], fp[k+2]);
+         eexecDumpNum(op[k+3], fp[k+3]);
+         eexecDumpNum(op[k+4], fp[k+4]);
+         eexecDumpNum(op[k+5], fp[k+5]);
+         eexecDumpOp1(8);
+       }
+       break;
+      case 14:                 // endchar / seac
+       if (first) {
+         cvtGlyphWidth(nOps == 1 || nOps == 5);
+         first = gFalse;
+       }
+       if (nOps == 4) {
+         eexecDumpNum(0, 0);
+         eexecDumpNum(op[0], fp[0]);
+         eexecDumpNum(op[1], fp[1]);
+         eexecDumpNum(op[2], fp[2]);
+         eexecDumpNum(op[3], fp[3]);
+         eexecDumpOp2(6);
+       } else if (nOps == 0) {
+         eexecDumpOp1(14);
+       } else {
+         error(-1, "Wrong number of args (%d) to Type 2 endchar", nOps);
+       }
+       break;
+      case 21:                 // rmoveto
+       if (first) {
+         cvtGlyphWidth(nOps == 3);
+         first = gFalse;
+       }
+       if (nOps != 2) {
+         error(-1, "Wrong number of args (%d) to Type 2 rmoveto", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpNum(op[1], fp[1]);
+       eexecDumpOp1(21);
+       break;
+      case 22:                 // hmoveto
+       if (first) {
+         cvtGlyphWidth(nOps == 2);
+         first = gFalse;
+       }
+       if (nOps != 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 hmoveto", nOps);
+       }
+       eexecDumpNum(op[0], fp[0]);
+       eexecDumpOp1(22);
+       break;
+      case 24:                 // rcurveline
+       if (nOps < 8 || (nOps - 2) % 6 != 0) {
+         error(-1, "Wrong number of args (%d) to Type 2 rcurveline", nOps);
+       }
+       for (k = 0; k < nOps - 2; k += 6) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpNum(op[k+1], fp[k+1]);
+         eexecDumpNum(op[k+2], fp[k+2]);
+         eexecDumpNum(op[k+3], fp[k+3]);
+         eexecDumpNum(op[k+4], fp[k+4]);
+         eexecDumpNum(op[k+5], fp[k+5]);
+         eexecDumpOp1(8);
+       }
+       eexecDumpNum(op[k], fp[k]);
+       eexecDumpNum(op[k+1], fp[k]);
+       eexecDumpOp1(5);
+       break;
+      case 25:                 // rlinecurve
+       if (nOps < 8 || (nOps - 6) % 2 != 0) {
+         error(-1, "Wrong number of args (%d) to Type 2 rlinecurve", nOps);
+       }
+       for (k = 0; k < nOps - 6; k += 2) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpNum(op[k+1], fp[k]);
+         eexecDumpOp1(5);
+       }
+       eexecDumpNum(op[k], fp[k]);
+       eexecDumpNum(op[k+1], fp[k+1]);
+       eexecDumpNum(op[k+2], fp[k+2]);
+       eexecDumpNum(op[k+3], fp[k+3]);
+       eexecDumpNum(op[k+4], fp[k+4]);
+       eexecDumpNum(op[k+5], fp[k+5]);
+       eexecDumpOp1(8);
+       break;
+      case 26:                 // vvcurveto
+       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {
+         error(-1, "Wrong number of args (%d) to Type 2 vvcurveto", nOps);
+       }
+       if (nOps % 2 == 1) {
+         eexecDumpNum(op[0], fp[0]);
+         eexecDumpNum(op[1], fp[1]);
+         eexecDumpNum(op[2], fp[2]);
+         eexecDumpNum(op[3], fp[3]);
+         eexecDumpNum(0, gFalse);
+         eexecDumpNum(op[4], fp[4]);
+         eexecDumpOp1(8);
+         k = 5;
+       } else {
+         k = 0;
+       }
+       for (; k < nOps; k += 4) {
+         eexecDumpNum(0, gFalse);
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpNum(op[k+1], fp[k+1]);
+         eexecDumpNum(op[k+2], fp[k+2]);
+         eexecDumpNum(0, gFalse);
+         eexecDumpNum(op[k+3], fp[k+3]);
+         eexecDumpOp1(8);
+       }
+       break;
+      case 27:                 // hhcurveto
+       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {
+         error(-1, "Wrong number of args (%d) to Type 2 hhcurveto", nOps);
+       }
+       if (nOps % 2 == 1) {
+         eexecDumpNum(op[1], fp[1]);
+         eexecDumpNum(op[0], fp[0]);
+         eexecDumpNum(op[2], fp[2]);
+         eexecDumpNum(op[3], fp[3]);
+         eexecDumpNum(op[4], fp[4]);
+         eexecDumpNum(0, gFalse);
+         eexecDumpOp1(8);
+         k = 5;
+       } else {
+         k = 0;
+       }
+       for (; k < nOps; k += 4) {
+         eexecDumpNum(op[k], fp[k]);
+         eexecDumpNum(0, gFalse);
+         eexecDumpNum(op[k+1], fp[k+1]);
+         eexecDumpNum(op[k+2], fp[k+2]);
+         eexecDumpNum(op[k+3], fp[k+3]);
+         eexecDumpNum(0, gFalse);
+         eexecDumpOp1(8);
+       }
+       break;
+      case 30:                 // vhcurveto
+       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {
+         error(-1, "Wrong number of args (%d) to Type 2 vhcurveto", nOps);
+       }
+       for (k = 0; k < nOps && k != nOps-5; k += 4) {
+         if (k % 8 == 0) {
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+           eexecDumpOp1(30);
+         } else {
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+           eexecDumpOp1(31);
+         }
+       }
+       if (k == nOps-5) {
+         if (k % 8 == 0) {
+           eexecDumpNum(0, gFalse);
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+           eexecDumpNum(op[k+4], fp[k+4]);
+         } else {
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(0, gFalse);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+4], fp[k+4]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+         }
+         eexecDumpOp1(8);
+       }
+       break;
+      case 31:                 // hvcurveto
+       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {
+         error(-1, "Wrong number of args (%d) to Type 2 hvcurveto", nOps);
+       }
+       for (k = 0; k < nOps && k != nOps-5; k += 4) {
+         if (k % 8 == 0) {
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+           eexecDumpOp1(31);
+         } else {
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
            eexecDumpNum(op[k+3], fp[k+3]);
            eexecDumpOp1(30);
+         }
+       }
+       if (k == nOps-5) {
+         if (k % 8 == 0) {
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(0, gFalse);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+4], fp[k+4]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+         } else {
+           eexecDumpNum(0, gFalse);
+           eexecDumpNum(op[k], fp[k]);
+           eexecDumpNum(op[k+1], fp[k+1]);
+           eexecDumpNum(op[k+2], fp[k+2]);
+           eexecDumpNum(op[k+3], fp[k+3]);
+           eexecDumpNum(op[k+4], fp[k+4]);
+         }
+         eexecDumpOp1(8);
+       }
+       break;
+      case 1:                  // hstem
+       if (first) {
+         cvtGlyphWidth(nOps & 1);
+         first = gFalse;
+       }
+       if (nOps & 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 hstem", nOps);
+       }
+       d = 0;
+       dFP = gFalse;
+       for (k = 0; k < nOps; k += 2) {
+         if (op[k+1] < 0) {
+           d += op[k] + op[k+1];
+           dFP |= fp[k] | fp[k+1];
+           eexecDumpNum(d, dFP);
+           eexecDumpNum(-op[k+1], fp[k+1]);
          } else {
-           eexecDumpNum(op[k], fp[k]);
+           d += op[k];
+           dFP |= fp[k];
+           eexecDumpNum(d, dFP);
            eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+3], fp[k+3]);
-           eexecDumpOp1(31);
+           d += op[k+1];
+           dFP |= fp[k+1];
          }
+         eexecDumpOp1(1);
        }
-       if (k == nOps-5) {
-         if (k % 8 == 0) {
-           eexecDumpNum(0, gFalse);
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+3], fp[k+3]);
-           eexecDumpNum(op[k+4], fp[k+4]);
+       nHints += nOps / 2;
+       break;
+      case 3:                  // vstem
+       if (first) {
+         cvtGlyphWidth(nOps & 1);
+         first = gFalse;
+       }
+       if (nOps & 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 vstem", nOps);
+       }
+       d = 0;
+       dFP = gFalse;
+       for (k = 0; k < nOps; k += 2) {
+         if (op[k+1] < 0) {
+           d += op[k] + op[k+1];
+           dFP |= fp[k] | fp[k+1];
+           eexecDumpNum(d, dFP);
+           eexecDumpNum(-op[k+1], fp[k+1]);
          } else {
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(0, gFalse);
+           d += op[k];
+           dFP |= fp[k];
+           eexecDumpNum(d, dFP);
            eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+4], fp[k+4]);
-           eexecDumpNum(op[k+3], fp[k+3]);
+           d += op[k+1];
+           dFP |= fp[k+1];
          }
-         eexecDumpOp1(8);
+         eexecDumpOp1(3);
+       }
+       nHints += nOps / 2;
+       break;
+      case 18:                 // hstemhm
+       // ignored
+       if (first) {
+         cvtGlyphWidth(nOps & 1);
+         first = gFalse;
+       }
+       if (nOps & 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 hstemhm", nOps);
+       }
+       nHints += nOps / 2;
+       break;
+      case 23:                 // vstemhm
+       // ignored
+       if (first) {
+         cvtGlyphWidth(nOps & 1);
+         first = gFalse;
+       }
+       if (nOps & 1) {
+         error(-1, "Wrong number of args (%d) to Type 2 vstemhm", nOps);
        }
+       nHints += nOps / 2;
+       break;
+      case 10:                 // callsubr
+      case 11:                 // return
+      case 16:                 // blend
+      case 29:                 // callgsubr
+       error(-1, "Unimplemented Type 2 charstring op: %d", s[i]);
+       break;
+      default:
+       error(-1, "Illegal Type 2 charstring op: %d", s[i]);
+       break;
+      }
+      ++i;
+      nOps = 0;
+    } else if (s[i] <= 246) {
+      if (nOps < 48) {
+       fp[nOps] = gFalse;
+       op[nOps++] = (int)s[i] - 139;
+      }
+      ++i;
+    } else if (s[i] <= 250) {
+      if (nOps < 48) {
+       fp[nOps] = gFalse;
+       op[nOps++] = (((int)s[i] - 247) << 8) + (int)s[i+1] + 108;
+      }
+      i += 2;
+    } else if (s[i] <= 254) {
+      if (nOps < 48) {
+       fp[nOps] = gFalse;
+       op[nOps++] = -(((int)s[i] - 251) << 8) - (int)s[i+1] - 108;
+      }
+      i += 2;
+    } else {
+      x = (s[i+1] << 24) | (s[i+2] << 16) | (s[i+3] << 8) | s[i+4];
+      if (x & 0x80000000)
+       x |= -1 << 31;
+      if (nOps < 48) {
+       fp[nOps] = gTrue;
+       op[nOps++] = (double)x / 65536.0;
+      }
+      i += 5;
+    }
+  }
+
+  // charstring encryption
+  r2 = 4330;
+  for (i = 0; i < charBuf->getLength(); ++i) {
+    byte = charBuf->getChar(i) ^ (r2 >> 8);
+    charBuf->setChar(i, byte);
+    r2 = (byte + r2) * 52845 + 22719;
+  }
+}
+
+void Type1CFontFile::cvtGlyphWidth(GBool useOp) {
+  double w;
+  GBool wFP;
+  int i;
+
+  if (useOp) {
+    w = nominalWidthX + op[0];
+    wFP = nominalWidthXFP | fp[0];
+    for (i = 1; i < nOps; ++i) {
+      op[i-1] = op[i];
+      fp[i-1] = fp[i];
+    }
+    --nOps;
+  } else {
+    w = defaultWidthX;
+    wFP = defaultWidthXFP;
+  }
+  eexecDumpNum(0, gFalse);
+  eexecDumpNum(w, wFP);
+  eexecDumpOp1(13);
+}
+
+void Type1CFontFile::eexecDumpNum(double x, GBool fpA) {
+  Guchar buf[12];
+  int y, n;
+
+  n = 0;
+  if (fpA) {
+    if (x >= -32768 && x < 32768) {
+      y = (int)(x * 256.0);
+      buf[0] = 255;
+      buf[1] = (Guchar)(y >> 24);
+      buf[2] = (Guchar)(y >> 16);
+      buf[3] = (Guchar)(y >> 8);
+      buf[4] = (Guchar)y;
+      buf[5] = 255;
+      buf[6] = 0;
+      buf[7] = 0;
+      buf[8] = 1;
+      buf[9] = 0;
+      buf[10] = 12;
+      buf[11] = 12;
+      n = 12;
+    } else {
+      error(-1, "Type 2 fixed point constant out of range");
+    }
+  } else {
+    y = (int)x;
+    if (y >= -107 && y <= 107) {
+      buf[0] = (Guchar)(y + 139);
+      n = 1;
+    } else if (y > 107 && y <= 1131) {
+      y -= 108;
+      buf[0] = (Guchar)((y >> 8) + 247);
+      buf[1] = (Guchar)(y & 0xff);
+      n = 2;
+    } else if (y < -107 && y >= -1131) {
+      y = -y - 108;
+      buf[0] = (Guchar)((y >> 8) + 251);
+      buf[1] = (Guchar)(y & 0xff);
+      n = 2;
+    } else {
+      buf[0] = 255;
+      buf[1] = (Guchar)(y >> 24);
+      buf[2] = (Guchar)(y >> 16);
+      buf[3] = (Guchar)(y >> 8);
+      buf[4] = (Guchar)y;
+      n = 5;
+    }
+  }
+  charBuf->append((char *)buf, n);
+}
+
+void Type1CFontFile::eexecDumpOp1(int opA) {
+  charBuf->append((char)opA);
+}
+
+void Type1CFontFile::eexecDumpOp2(int opA) {
+  charBuf->append((char)12);
+  charBuf->append((char)opA);
+}
+
+void Type1CFontFile::eexecWriteCharstring(Guchar *s, int n) {
+  Guchar x;
+  int i;
+
+  // eexec encryption
+  for (i = 0; i < n; ++i) {
+    x = s[i] ^ (r1 >> 8);
+    r1 = (x + r1) * 52845 + 22719;
+    fputc(hexChars[x >> 4], out);
+    fputc(hexChars[x & 0x0f], out);
+    line += 2;
+    if (line == 64) {
+      fputc('\n', out);
+      line = 0;
+    }
+  }
+}
+
+void Type1CFontFile::getDeltaInt(char *buf, char *key, double *opA,
+                                int n) {
+  int x, i;
+
+  sprintf(buf, "/%s [", key);
+  buf += strlen(buf);
+  x = 0;
+  for (i = 0; i < n; ++i) {
+    x += (int)opA[i];
+    sprintf(buf, "%s%d", i > 0 ? " " : "", x);
+    buf += strlen(buf);
+  }
+  sprintf(buf, "] def\n");
+}
+
+void Type1CFontFile::getDeltaReal(char *buf, char *key, double *opA,
+                                 int n) {
+  double x;
+  int i;
+
+  sprintf(buf, "/%s [", key);
+  buf += strlen(buf);
+  x = 0;
+  for (i = 0; i < n; ++i) {
+    x += opA[i];
+    sprintf(buf, "%s%g", i > 0 ? " " : "", x);
+    buf += strlen(buf);
+  }
+  sprintf(buf, "] def\n");
+}
+
+int Type1CFontFile::getIndexLen(Guchar *indexPtr) {
+  return (int)getWord(indexPtr, 2);
+}
+
+Guchar *Type1CFontFile::getIndexValPtr(Guchar *indexPtr, int i) {
+  int n, offSize;
+  Guchar *idxStartPtr;
+
+  n = (int)getWord(indexPtr, 2);
+  offSize = indexPtr[2];
+  idxStartPtr = indexPtr + 3 + (n + 1) * offSize - 1;
+  return idxStartPtr + getWord(indexPtr + 3 + i * offSize, offSize);
+}
+
+Guchar *Type1CFontFile::getIndexEnd(Guchar *indexPtr) {
+  int n, offSize;
+  Guchar *idxStartPtr;
+
+  n = (int)getWord(indexPtr, 2);
+  offSize = indexPtr[2];
+  idxStartPtr = indexPtr + 3 + (n + 1) * offSize - 1;
+  return idxStartPtr + getWord(indexPtr + 3 + n * offSize, offSize);
+}
+
+Guint Type1CFontFile::getWord(Guchar *ptr, int size) {
+  Guint x;
+  int i;
+
+  x = 0;
+  for (i = 0; i < size; ++i) {
+    x = (x << 8) + *ptr++;
+  }
+  return x;
+}
+
+double Type1CFontFile::getNum(Guchar **ptr, GBool *isFP) {
+  static char nybChars[16] = "0123456789.ee -";
+  int b0, b, nyb0, nyb1;
+  double x;
+  char buf[65];
+  int i;
+
+  x = 0;
+  *isFP = gFalse;
+  b0 = (*ptr)[0];
+  if (b0 < 28) {
+    x = 0;
+  } else if (b0 == 28) {
+    x = ((*ptr)[1] << 8) + (*ptr)[2];
+    *ptr += 3;
+  } else if (b0 == 29) {
+    x = ((*ptr)[1] << 24) + ((*ptr)[2] << 16) + ((*ptr)[3] << 8) + (*ptr)[4];
+    *ptr += 5;
+  } else if (b0 == 30) {
+    *ptr += 1;
+    i = 0;
+    do {
+      b = *(*ptr)++;
+      nyb0 = b >> 4;
+      nyb1 = b & 0x0f;
+      if (nyb0 == 0xf) {
        break;
-      case 31:                 // hvcurveto
-       if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0))
-         error(-1, "Wrong number of args (%d) to Type 2 hvcurveto", nOps);
-       for (k = 0; k < nOps && k != nOps-5; k += 4) {
-         if (k % 8 == 0) {
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+3], fp[k+3]);
-           eexecDumpOp1(31);
-         } else {
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+3], fp[k+3]);
-           eexecDumpOp1(30);
-         }
-       }
-       if (k == nOps-5) {
-         if (k % 8 == 0) {
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(0, gFalse);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+4], fp[k+4]);
-           eexecDumpNum(op[k+3], fp[k+3]);
-         } else {
-           eexecDumpNum(0, gFalse);
-           eexecDumpNum(op[k], fp[k]);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           eexecDumpNum(op[k+2], fp[k+2]);
-           eexecDumpNum(op[k+3], fp[k+3]);
-           eexecDumpNum(op[k+4], fp[k+4]);
-         }
-         eexecDumpOp1(8);
-       }
+      }
+      buf[i++] = nybChars[nyb0];
+      if (i == 64) {
        break;
-      case 1:                  // hstem
-       if (first) {
-         cvtGlyphWidth(nOps & 1);
-         first = gFalse;
-       }
-       if (nOps & 1) {
-         error(-1, "Wrong number of args (%d) to Type 2 hstem", nOps);
+      }
+      if (nyb0 == 0xc) {
+       buf[i++] = '-';
+      }
+      if (i == 64) {
+       break;
+      }
+      if (nyb1 == 0xf) {
+       break;
+      }
+      buf[i++] = nybChars[nyb1];
+      if (i == 64) {
+       break;
+      }
+      if (nyb1 == 0xc) {
+       buf[i++] = '-';
+      }
+    } while (i < 64);
+    buf[i] = '\0';
+    x = atof(buf);
+    *isFP = gTrue;
+  } else if (b0 == 31) {
+    x = 0;
+  } else if (b0 < 247) {
+    x = b0 - 139;
+    *ptr += 1;
+  } else if (b0 < 251) {
+    x = ((b0 - 247) << 8) + (*ptr)[1] + 108;
+    *ptr += 2;
+  } else {
+    x = -((b0 - 251) << 8) - (*ptr)[1] - 108;
+    *ptr += 2;
+  }
+  return x;
+}
+
+char *Type1CFontFile::getString(int sid, char *buf) {
+  Guchar *idxPtr0, *idxPtr1;
+  int n;
+
+  if (sid < 391) {
+    strcpy(buf, type1CStdStrings[sid]);
+  } else {
+    sid -= 391;
+    idxPtr0 = getIndexValPtr(stringIdxPtr, sid);
+    idxPtr1 = getIndexValPtr(stringIdxPtr, sid + 1);
+    if ((n = idxPtr1 - idxPtr0) > 255) {
+      n = 255;
+    }
+    strncpy(buf, (char *)idxPtr0, n);
+    buf[n] = '\0';
+  }
+  return buf;
+}
+
+//------------------------------------------------------------------------
+// TrueTypeFontFile
+//------------------------------------------------------------------------
+
+//
+// Terminology
+// -----------
+//
+// character code = number used as an element of a text string
+//
+// character name = glyph name = name for a particular glyph within a
+//                  font
+//
+// glyph index = position (within some internal table in the font)
+//               where the instructions to draw a particular glyph are
+//               stored
+//
+// Type 1 fonts
+// ------------
+//
+// Type 1 fonts contain:
+//
+// Encoding: array of glyph names, maps char codes to glyph names
+//
+//           Encoding[charCode] = charName
+//
+// CharStrings: dictionary of instructions, keyed by character names,
+//              maps character name to glyph data
+//
+//              CharStrings[charName] = glyphData
+//
+// TrueType fonts
+// --------------
+//
+// TrueType fonts contain:
+//
+// 'cmap' table: mapping from character code to glyph index; there may
+//               be multiple cmaps in a TrueType font
+//
+//               cmap[charCode] = glyphIdx
+//
+// 'post' table: mapping from glyph index to glyph name
+//
+//               post[glyphIdx] = glyphName
+//
+// Type 42 fonts
+// -------------
+//
+// Type 42 fonts contain:
+//
+// Encoding: array of glyph names, maps char codes to glyph names
+//
+//           Encoding[charCode] = charName
+//
+// CharStrings: dictionary of glyph indexes, keyed by character names,
+//              maps character name to glyph index
+//
+//              CharStrings[charName] = glyphIdx
+//
+
+struct TTFontTableHdr {
+  char tag[4];
+  Guint checksum;
+  Guint offset;
+  Guint length;
+};
+
+struct T42Table {
+  char *tag;                   // 4-byte tag
+  GBool required;              // required by the TrueType spec?
+};
+
+// TrueType tables to be embedded in Type 42 fonts.
+// NB: the table names must be in alphabetical order here.
+#define nT42Tables 11
+static T42Table t42Tables[nT42Tables] = {
+  { "cvt ", gTrue  },
+  { "fpgm", gTrue  },
+  { "glyf", gTrue  },
+  { "head", gTrue  },
+  { "hhea", gTrue  },
+  { "hmtx", gTrue  },
+  { "loca", gTrue  },
+  { "maxp", gTrue  },
+  { "prep", gTrue  },
+  { "vhea", gFalse },
+  { "vmtx", gFalse }
+};
+#define t42HeadTable 3
+#define t42LocaTable 6
+#define t42GlyfTable 2
+
+// Glyph names in some arbitrary standard that Apple uses for their
+// TrueType fonts.
+static char *macGlyphNames[258] = {
+  ".notdef",
+  "null",
+  "CR",
+  "space",
+  "exclam",
+  "quotedbl",
+  "numbersign",
+  "dollar",
+  "percent",
+  "ampersand",
+  "quotesingle",
+  "parenleft",
+  "parenright",
+  "asterisk",
+  "plus",
+  "comma",
+  "hyphen",
+  "period",
+  "slash",
+  "zero",
+  "one",
+  "two",
+  "three",
+  "four",
+  "five",
+  "six",
+  "seven",
+  "eight",
+  "nine",
+  "colon",
+  "semicolon",
+  "less",
+  "equal",
+  "greater",
+  "question",
+  "at",
+  "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",
+  "bracketleft",
+  "backslash",
+  "bracketright",
+  "asciicircum",
+  "underscore",
+  "grave",
+  "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",
+  "braceleft",
+  "bar",
+  "braceright",
+  "asciitilde",
+  "Adieresis",
+  "Aring",
+  "Ccedilla",
+  "Eacute",
+  "Ntilde",
+  "Odieresis",
+  "Udieresis",
+  "aacute",
+  "agrave",
+  "acircumflex",
+  "adieresis",
+  "atilde",
+  "aring",
+  "ccedilla",
+  "eacute",
+  "egrave",
+  "ecircumflex",
+  "edieresis",
+  "iacute",
+  "igrave",
+  "icircumflex",
+  "idieresis",
+  "ntilde",
+  "oacute",
+  "ograve",
+  "ocircumflex",
+  "odieresis",
+  "otilde",
+  "uacute",
+  "ugrave",
+  "ucircumflex",
+  "udieresis",
+  "dagger",
+  "degree",
+  "cent",
+  "sterling",
+  "section",
+  "bullet",
+  "paragraph",
+  "germandbls",
+  "registered",
+  "copyright",
+  "trademark",
+  "acute",
+  "dieresis",
+  "notequal",
+  "AE",
+  "Oslash",
+  "infinity",
+  "plusminus",
+  "lessequal",
+  "greaterequal",
+  "yen",
+  "mu1",
+  "partialdiff",
+  "summation",
+  "product",
+  "pi",
+  "integral",
+  "ordfeminine",
+  "ordmasculine",
+  "Ohm",
+  "ae",
+  "oslash",
+  "questiondown",
+  "exclamdown",
+  "logicalnot",
+  "radical",
+  "florin",
+  "approxequal",
+  "increment",
+  "guillemotleft",
+  "guillemotright",
+  "ellipsis",
+  "nbspace",
+  "Agrave",
+  "Atilde",
+  "Otilde",
+  "OE",
+  "oe",
+  "endash",
+  "emdash",
+  "quotedblleft",
+  "quotedblright",
+  "quoteleft",
+  "quoteright",
+  "divide",
+  "lozenge",
+  "ydieresis",
+  "Ydieresis",
+  "fraction",
+  "currency",
+  "guilsinglleft",
+  "guilsinglright",
+  "fi",
+  "fl",
+  "daggerdbl",
+  "periodcentered",
+  "quotesinglbase",
+  "quotedblbase",
+  "perthousand",
+  "Acircumflex",
+  "Ecircumflex",
+  "Aacute",
+  "Edieresis",
+  "Egrave",
+  "Iacute",
+  "Icircumflex",
+  "Idieresis",
+  "Igrave",
+  "Oacute",
+  "Ocircumflex",
+  "applelogo",
+  "Ograve",
+  "Uacute",
+  "Ucircumflex",
+  "Ugrave",
+  "dotlessi",
+  "circumflex",
+  "tilde",
+  "overscore",
+  "breve",
+  "dotaccent",
+  "ring",
+  "cedilla",
+  "hungarumlaut",
+  "ogonek",
+  "caron",
+  "Lslash",
+  "lslash",
+  "Scaron",
+  "scaron",
+  "Zcaron",
+  "zcaron",
+  "brokenbar",
+  "Eth",
+  "eth",
+  "Yacute",
+  "yacute",
+  "Thorn",
+  "thorn",
+  "minus",
+  "multiply",
+  "onesuperior",
+  "twosuperior",
+  "threesuperior",
+  "onehalf",
+  "onequarter",
+  "threequarters",
+  "franc",
+  "Gbreve",
+  "gbreve",
+  "Idot",
+  "Scedilla",
+  "scedilla",
+  "Cacute",
+  "cacute",
+  "Ccaron",
+  "ccaron",
+  "dmacron"
+};
+
+enum T42FontIndexMode {
+  t42FontModeUnicode,
+  t42FontModeCharCode,
+  t42FontModeCharCodeOffset,
+  t42FontModeMacRoman
+};
+
+TrueTypeFontFile::TrueTypeFontFile(char *fileA, int lenA) {
+  int pos, i;
+
+  file = fileA;
+  len = lenA;
+
+  encoding = NULL;
+
+  // read table directory
+  nTables = getUShort(4);
+  tableHdrs = (TTFontTableHdr *)gmalloc(nTables * sizeof(TTFontTableHdr));
+  pos = 12;
+  for (i = 0; i < nTables; ++i) {
+    tableHdrs[i].tag[0] = getByte(pos+0);
+    tableHdrs[i].tag[1] = getByte(pos+1);
+    tableHdrs[i].tag[2] = getByte(pos+2);
+    tableHdrs[i].tag[3] = getByte(pos+3);
+    tableHdrs[i].checksum = getULong(pos+4);
+    tableHdrs[i].offset = getULong(pos+8);
+    tableHdrs[i].length = getULong(pos+12);
+    pos += 16;
+  }
+
+  // check for tables that are required by both the TrueType spec
+  // and the Type 42 spec
+  if (seekTable("head") < 0 ||
+      seekTable("hhea") < 0 ||
+      seekTable("loca") < 0 ||
+      seekTable("maxp") < 0 ||
+      seekTable("glyf") < 0 ||
+      seekTable("hmtx") < 0) {
+    error(-1, "TrueType font file is missing a required table");
+    return;
+  }
+
+  // read the 'head' table
+  pos = seekTable("head");
+  bbox[0] = getShort(pos + 36);
+  bbox[1] = getShort(pos + 38);
+  bbox[2] = getShort(pos + 40);
+  bbox[3] = getShort(pos + 42);
+  locaFmt = getShort(pos + 50);
+
+  // read the 'maxp' table
+  pos = seekTable("maxp");
+  nGlyphs = getUShort(pos + 4);
+}
+
+TrueTypeFontFile::~TrueTypeFontFile() {
+  int i;
+
+  if (encoding) {
+    for (i = 0; i < 256; ++i) {
+      gfree(encoding[i]);
+    }
+    gfree(encoding);
+  }
+  gfree(tableHdrs);
+}
+
+char *TrueTypeFontFile::getName() {
+  return NULL;
+}
+
+char **TrueTypeFontFile::getEncoding() {
+  int cmap[256];
+  int nCmaps, cmapPlatform, cmapEncoding, cmapFmt;
+  int cmapLen, cmapOffset, cmapFirst;
+  int segCnt, segStart, segEnd, segDelta, segOffset;
+  int pos, i, j, k;
+  Guint fmt;
+  GString *s;
+  int stringIdx, stringPos, n;
+
+  if (encoding) {
+    return encoding;
+  }
+
+  //----- construct the (char code) -> (glyph idx) mapping
+
+  // map everything to the missing glyph
+  for (i = 0; i < 256; ++i) {
+    cmap[i] = 0;
+  }
+
+  // look for the 'cmap' table
+  if ((pos = seekTable("cmap")) >= 0) {
+    nCmaps = getUShort(pos+2);
+
+    // if the font has a Windows-symbol cmap, use it;
+    // otherwise, use the first cmap in the table
+    for (i = 0; i < nCmaps; ++i) {
+      cmapPlatform = getUShort(pos + 4 + 8*i);
+      cmapEncoding = getUShort(pos + 4 + 8*i + 2);
+      if (cmapPlatform == 3 && cmapEncoding == 0) {
+       break;
+      }
+    }
+    if (i >= nCmaps) {
+      i = 0;
+      cmapPlatform = getUShort(pos + 4);
+      cmapEncoding = getUShort(pos + 4 + 2);
+    }
+    pos += getULong(pos + 4 + 8*i + 4);
+
+    // read the cmap
+    cmapFmt = getUShort(pos);
+    switch (cmapFmt) {
+    case 0: // byte encoding table (Apple standard)
+      cmapLen = getUShort(pos + 2);
+      for (i = 0; i < cmapLen && i < 256; ++i) {
+       cmap[i] = getByte(pos + 6 + i);
+      }
+      break;
+    case 4: // segment mapping to delta values (Microsoft standard)
+      if (cmapPlatform == 3 && cmapEncoding == 0) {
+       // Windows-symbol uses char codes 0xf000 - 0xf0ff
+       cmapOffset = 0xf000;
+      } else {
+       cmapOffset = 0;
+      }
+      segCnt = getUShort(pos + 6) / 2;
+      for (i = 0; i < segCnt; ++i) {
+       segEnd = getUShort(pos + 14 + 2*i);
+       segStart = getUShort(pos + 16 + 2*segCnt + 2*i);
+       segDelta = getUShort(pos + 16 + 4*segCnt + 2*i);
+       segOffset = getUShort(pos + 16 + 6*segCnt + 2*i);
+       if (segStart - cmapOffset <= 0xff &&
+           segEnd - cmapOffset >= 0) {
+         for (j = (segStart - cmapOffset >= 0) ? segStart : cmapOffset;
+              j <= segEnd && j - cmapOffset <= 0xff;
+              ++j) {
+           if (segOffset == 0) {
+             k = (j + segDelta) & 0xffff;
+           } else {
+             k = getUShort(pos + 16 + 6*segCnt + 2*i +
+                           segOffset + 2 * (j - segStart));
+             if (k != 0) {
+               k = (k + segDelta) & 0xffff;
+             }
+           }
+           cmap[j - cmapOffset] = k;
+         }
        }
-       d = 0;
-       dFP = gFalse;
-       for (k = 0; k < nOps; k += 2) {
-         if (op[k+1] < 0) {
-           d += op[k] + op[k+1];
-           dFP |= fp[k] | fp[k+1];
-           eexecDumpNum(d, dFP);
-           eexecDumpNum(-op[k+1], fp[k+1]);
+      }
+      break;
+    case 6: // trimmed table mapping
+      cmapFirst = getUShort(pos + 6);
+      cmapLen = getUShort(pos + 8);
+      for (i = cmapFirst; i < 256 && i < cmapFirst + cmapLen; ++i) {
+       cmap[i] = getUShort(pos + 10 + 2*i);
+      }
+      break;
+    default:
+      error(-1, "Unimplemented cmap format (%d) in TrueType font file",
+           cmapFmt);
+      break;
+    }
+  }
+
+  //----- construct the (glyph idx) -> (glyph name) mapping
+  //----- and compute the (char code) -> (glyph name) mapping
+
+  encoding = (char **)gmalloc(256 * sizeof(char *));
+  for (i = 0; i < 256; ++i) {
+    encoding[i] = NULL;
+  }
+
+  if ((pos = seekTable("post")) >= 0) {
+    fmt = getULong(pos);
+
+    // Apple font
+    if (fmt == 0x00010000) {
+      for (i = 0; i < 256; ++i) {
+       j = (cmap[i] < 258) ? cmap[i] : 0;
+       encoding[i] = copyString(macGlyphNames[j]);
+      }
+
+    // Microsoft font
+    } else if (fmt == 0x00020000) {
+      stringIdx = 0;
+      stringPos = pos + 34 + 2*nGlyphs;
+      for (i = 0; i < 256; ++i) {
+       if (cmap[i] < nGlyphs) {
+         j = getUShort(pos + 34 + 2 * cmap[i]);
+         if (j < 258) {
+           encoding[i] = copyString(macGlyphNames[j]);
          } else {
-           d += op[k];
-           dFP |= fp[k];
-           eexecDumpNum(d, dFP);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           d += op[k+1];
-           dFP |= fp[k+1];
+           j -= 258;
+           if (j != stringIdx) {
+             for (stringIdx = 0, stringPos = pos + 34 + 2*nGlyphs;
+                  stringIdx < j;
+                  ++stringIdx, stringPos += 1 + getByte(stringPos)) ;
+           }
+           n = getByte(stringPos);
+           s = new GString(file + stringPos + 1, n);
+           encoding[i] = copyString(s->getCString());
+           delete s;
+           ++stringIdx;
+           stringPos += 1 + n;
          }
-         eexecDumpOp1(1);
-       }
-       nHints += nOps / 2;
-       break;
-      case 3:                  // vstem
-       if (first) {
-         cvtGlyphWidth(nOps & 1);
-         first = gFalse;
+       } else {
+         encoding[i] = copyString(macGlyphNames[0]);
        }
-       if (nOps & 1) {
-         error(-1, "Wrong number of args (%d) to Type 2 vstem", nOps);
+      }
+
+    // Apple subset
+    } else if (fmt == 0x000280000) {
+      for (i = 0; i < 256; ++i) {
+       if (cmap[i] < nGlyphs) {
+         j = i + getChar(pos + 32 + cmap[i]);
+       } else {
+         j = 0;
        }
-       d = 0;
-       dFP = gFalse;
-       for (k = 0; k < nOps; k += 2) {
-         if (op[k+1] < 0) {
-           d += op[k] + op[k+1];
-           dFP |= fp[k] | fp[k+1];
-           eexecDumpNum(d, dFP);
-           eexecDumpNum(-op[k+1], fp[k+1]);
-         } else {
-           d += op[k];
-           dFP |= fp[k];
-           eexecDumpNum(d, dFP);
-           eexecDumpNum(op[k+1], fp[k+1]);
-           d += op[k+1];
-           dFP |= fp[k+1];
+       encoding[i] = copyString(macGlyphNames[j]);
+      }
+
+    // Ugh, just assume the Apple glyph set
+    } else {
+      for (i = 0; i < 256; ++i) {
+       j = (cmap[i] < 258) ? cmap[i] : 0;
+       encoding[i] = copyString(macGlyphNames[j]);
+      }
+    }
+
+  // no "post" table: assume the Apple glyph set
+  } else {
+    for (i = 0; i < 256; ++i) {
+      j = (cmap[i] < 258) ? cmap[i] : 0;
+      encoding[i] = copyString(macGlyphNames[j]);
+    }
+  }
+
+  return encoding;
+}
+
+void TrueTypeFontFile::convertToType42(char *name, char **encodingA,
+                                      CharCodeToUnicode *toUnicode,
+                                      GBool pdfFontHasEncoding, FILE *out) {
+  // write the header
+  fprintf(out, "%%!PS-TrueTypeFont-%g\n", getFixed(0));
+
+  // begin the font dictionary
+  fprintf(out, "10 dict begin\n");
+  fprintf(out, "/FontName /%s def\n", name);
+  fprintf(out, "/FontType 42 def\n");
+  fprintf(out, "/FontMatrix [1 0 0 1 0 0] def\n");
+  fprintf(out, "/FontBBox [%d %d %d %d] def\n",
+         bbox[0], bbox[1], bbox[2], bbox[3]);
+  fprintf(out, "/PaintType 0 def\n");
+
+  // write the guts of the dictionary
+  cvtEncoding(encodingA, out);
+  cvtCharStrings(encodingA, toUnicode, pdfFontHasEncoding, out);
+  cvtSfnts(out, NULL);
+
+  // end the dictionary and define the font
+  fprintf(out, "FontName currentdict end definefont pop\n");
+}
+
+void TrueTypeFontFile::convertToCIDType2(char *name, Gushort *cidMap,
+                                        int nCIDs, FILE *out) {
+  Gushort cid;
+  int i, j, k;
+
+  // write the header
+  fprintf(out, "%%!PS-TrueTypeFont-%g\n", getFixed(0));
+
+  // begin the font dictionary
+  fprintf(out, "20 dict begin\n");
+  fprintf(out, "/CIDFontName /%s def\n", name);
+  fprintf(out, "/CIDFontType 2 def\n");
+  fprintf(out, "/FontType 42 def\n");
+  fprintf(out, "/CIDSystemInfo 3 dict dup begin\n");
+  fprintf(out, "  /Registry (Adobe) def\n");
+  fprintf(out, "  /Ordering (Identity) def\n");
+  fprintf(out, "  /Supplement 0 def\n");
+  fprintf(out, "  end def\n");
+  fprintf(out, "/GDBytes 2 def\n");
+  if (cidMap) {
+    fprintf(out, "/CIDCount %d def\n", nCIDs);
+    if (nCIDs > 32767) {
+      fprintf(out, "/CIDMap [");
+      for (i = 0; i < nCIDs; i += 32768 - 16) {
+       fprintf(out, "<\n");
+       for (j = 0; j < 32768 - 16 && i+j < nCIDs; j += 16) {
+         fprintf(out, "  ");
+         for (k = 0; k < 16 && i+j+k < nCIDs; ++k) {
+           cid = cidMap[i+j+k];
+           fprintf(out, "%02x%02x", (cid >> 8) & 0xff, cid & 0xff);
          }
-         eexecDumpOp1(3);
-       }
-       nHints += nOps / 2;
-       break;
-      case 18:                 // hstemhm
-       //~ ignored
-       if (first) {
-         cvtGlyphWidth(nOps & 1);
-         first = gFalse;
+         fprintf(out, "\n");
        }
-       if (nOps & 1) {
-         error(-1, "Wrong number of args (%d) to Type 2 hstemhm", nOps);
+       fprintf(out, "  >");
+      }
+      fprintf(out, "\n");
+      fprintf(out, "] def\n");
+    } else {
+      fprintf(out, "/CIDMap <\n");
+      for (i = 0; i < nCIDs; i += 16) {
+       fprintf(out, "  ");
+       for (j = 0; j < 16 && i+j < nCIDs; ++j) {
+         cid = cidMap[i+j];
+         fprintf(out, "%02x%02x", (cid >> 8) & 0xff, cid & 0xff);
        }
-       nHints += nOps / 2;
+       fprintf(out, "\n");
+      }
+      fprintf(out, "> def\n");
+    }
+  } else {
+    // direct mapping - just fill the string(s) with s[i]=i
+    fprintf(out, "/CIDCount %d def\n", nGlyphs);
+    if (nGlyphs > 32767) {
+      fprintf(out, "/CIDMap [\n");
+      for (i = 0; i < nGlyphs; i += 32767) {
+       j = nGlyphs - i < 32767 ? nGlyphs - i : 32767;
+       fprintf(out, "  %d string 0 1 %d {\n", 2 * j, j - 1);
+       fprintf(out, "    2 copy dup 2 mul exch %d add -8 bitshift put\n", i);
+       fprintf(out, "    1 index exch dup 2 mul 1 add exch %d add"
+               " 255 and put\n", i);
+       fprintf(out, "  } for\n");
+      }
+      fprintf(out, "] def\n");
+    } else {
+      fprintf(out, "/CIDMap %d string\n", 2 * nGlyphs);
+      fprintf(out, "  0 1 %d {\n", nGlyphs - 1);
+      fprintf(out, "    2 copy dup 2 mul exch -8 bitshift put\n");
+      fprintf(out, "    1 index exch dup 2 mul 1 add exch 255 and put\n");
+      fprintf(out, "  } for\n");
+      fprintf(out, "def\n");
+    }
+  }
+  fprintf(out, "/FontMatrix [1 0 0 1 0 0] def\n");
+  fprintf(out, "/FontBBox [%d %d %d %d] def\n",
+         bbox[0], bbox[1], bbox[2], bbox[3]);
+  fprintf(out, "/PaintType 0 def\n");
+  fprintf(out, "/Encoding [] readonly def\n");
+  fprintf(out, "/CharStrings 1 dict dup begin\n");
+  fprintf(out, "  /.notdef 0 def\n");
+  fprintf(out, "  end readonly def\n");
+
+  // write the guts of the dictionary
+  cvtSfnts(out, NULL);
+
+  // end the dictionary and define the font
+  fprintf(out, "CIDFontName currentdict end /CIDFont defineresource pop\n");
+}
+
+void TrueTypeFontFile::convertToType0(char *name, Gushort *cidMap,
+                                     int nCIDs, FILE *out) {
+  GString *sfntsName;
+  int n, i, j;
+
+  // write the Type 42 sfnts array
+  sfntsName = (new GString(name))->append("_sfnts");
+  cvtSfnts(out, sfntsName);
+  delete sfntsName;
+
+  // write the descendant Type 42 fonts
+  n = cidMap ? nCIDs : nGlyphs;
+  for (i = 0; i < n; i += 256) {
+    fprintf(out, "10 dict begin\n");
+    fprintf(out, "/FontName /%s_%02x def\n", name, i >> 8);
+    fprintf(out, "/FontType 42 def\n");
+    fprintf(out, "/FontMatrix [1 0 0 1 0 0] def\n");
+    fprintf(out, "/FontBBox [%d %d %d %d] def\n",
+           bbox[0], bbox[1], bbox[2], bbox[3]);
+    fprintf(out, "/PaintType 0 def\n");
+    fprintf(out, "/sfnts %s_sfnts def\n", name);
+    fprintf(out, "/Encoding 256 array\n");
+    for (j = 0; j < 256 && i+j < n; ++j) {
+      fprintf(out, "dup %d /c%02x put\n", j, j);
+    }
+    fprintf(out, "readonly def\n");
+    fprintf(out, "/CharStrings 257 dict dup begin\n");
+    fprintf(out, "/.notdef 0 def\n");
+    for (j = 0; j < 256 && i+j < n; ++j) {
+      fprintf(out, "/c%02x %d def\n", j, cidMap ? cidMap[i+j] : i+j);
+    }
+    fprintf(out, "end readonly def\n");
+    fprintf(out, "FontName currentdict end definefont pop\n");
+  }
+
+  // write the Type 0 parent font
+  fprintf(out, "16 dict begin\n");
+  fprintf(out, "/FontName /%s def\n", name);
+  fprintf(out, "/FontType 0 def\n");
+  fprintf(out, "/FontMatrix [1 0 0 1 0 0] def\n");
+  fprintf(out, "/FMapType 2 def\n");
+  fprintf(out, "/Encoding [\n");
+  for (i = 0; i < n; i += 256) {
+    fprintf(out, "%d\n", i >> 8);
+  }
+  fprintf(out, "] def\n");
+  fprintf(out, "/FDepVector [\n");
+  for (i = 0; i < n; i += 256) {
+    fprintf(out, "/%s_%02x findfont\n", name, i >> 8);
+  }
+  fprintf(out, "] def\n");
+  fprintf(out, "FontName currentdict end definefont pop\n");
+}
+
+int TrueTypeFontFile::getByte(int pos) {
+  if (pos < 0 || pos >= len) {
+    return 0;
+  }
+  return file[pos] & 0xff;
+}
+
+int TrueTypeFontFile::getChar(int pos) {
+  int x;
+
+  if (pos < 0 || pos >= len) {
+    return 0;
+  }
+  x = file[pos] & 0xff;
+  if (x & 0x80)
+    x |= 0xffffff00;
+  return x;
+}
+
+int TrueTypeFontFile::getUShort(int pos) {
+  int x;
+
+  if (pos < 0 || pos+1 >= len) {
+    return 0;
+  }
+  x = file[pos] & 0xff;
+  x = (x << 8) + (file[pos+1] & 0xff);
+  return x;
+}
+
+int TrueTypeFontFile::getShort(int pos) {
+  int x;
+
+  if (pos < 0 || pos+1 >= len) {
+    return 0;
+  }
+  x = file[pos] & 0xff;
+  x = (x << 8) + (file[pos+1] & 0xff);
+  if (x & 0x8000)
+    x |= 0xffff0000;
+  return x;
+}
+
+Guint TrueTypeFontFile::getULong(int pos) {
+  int x;
+
+  if (pos < 0 || pos+3 >= len) {
+    return 0;
+  }
+  x = file[pos] & 0xff;
+  x = (x << 8) + (file[pos+1] & 0xff);
+  x = (x << 8) + (file[pos+2] & 0xff);
+  x = (x << 8) + (file[pos+3] & 0xff);
+  return x;
+}
+
+double TrueTypeFontFile::getFixed(int pos) {
+  int x, y;
+
+  x = getShort(pos);
+  y = getUShort(pos+2);
+  return (double)x + (double)y / 65536;
+}
+
+int TrueTypeFontFile::seekTable(char *tag) {
+  int i;
+
+  for (i = 0; i < nTables; ++i) {
+    if (!strncmp(tableHdrs[i].tag, tag, 4)) {
+      return tableHdrs[i].offset;
+    }
+  }
+  return -1;
+}
+
+int TrueTypeFontFile::seekTableIdx(char *tag) {
+  int i;
+
+  for (i = 0; i < nTables; ++i) {
+    if (!strncmp(tableHdrs[i].tag, tag, 4)) {
+      return i;
+    }
+  }
+  return -1;
+}
+
+void TrueTypeFontFile::cvtEncoding(char **encodingA, FILE *out) {
+  char *name;
+  int i;
+
+  fprintf(out, "/Encoding 256 array\n");
+  for (i = 0; i < 256; ++i) {
+    if (!(name = encodingA[i])) {
+      name = ".notdef";
+    }
+    fprintf(out, "dup %d /%s put\n", i, name);
+  }
+  fprintf(out, "readonly def\n");
+}
+
+void TrueTypeFontFile::cvtCharStrings(char **encodingA,
+                                     CharCodeToUnicode *toUnicode,
+                                     GBool pdfFontHasEncoding, FILE *out) {
+  int unicodeCmap, macRomanCmap, msSymbolCmap;
+  int nCmaps, cmapPlatform, cmapEncoding, cmapFmt, cmapOffset;
+  T42FontIndexMode mode;
+  char *name;
+  Unicode u;
+  int pos, i, j, k;
+
+  // always define '.notdef'
+  fprintf(out, "/CharStrings 256 dict dup begin\n");
+  fprintf(out, "/.notdef 0 def\n");
+
+  // if there's no 'cmap' table, punt
+  if ((pos = seekTable("cmap")) < 0) {
+    goto err;
+  }
+
+  // To match up with the Adobe-defined behaviour, we choose a cmap
+  // like this:
+  // 1. If the PDF font has an encoding:
+  //    1a. If the TrueType font has a Microsoft Unicode cmap, use it,
+  //        and use the Unicode indexes, not the char codes.
+  //    1b. If the TrueType font has a Macintosh Roman cmap, use it,
+  //        and reverse map the char names through MacRomanEncoding to
+  //        get char codes.
+  // 2. If the PDF font does not have an encoding:
+  //    2a. If the TrueType font has a Macintosh Roman cmap, use it,
+  //        and use char codes directly.
+  //    2b. If the TrueType font has a Microsoft Symbol cmap, use it,
+  //        and use (0xf000 + char code).
+  // 3. If none of these rules apply, use the first cmap and hope for
+  //    the best (this shouldn't happen).
+  nCmaps = getUShort(pos+2);
+  unicodeCmap = macRomanCmap = msSymbolCmap = -1;
+  cmapOffset = 0;
+  for (i = 0; i < nCmaps; ++i) {
+    cmapPlatform = getUShort(pos + 4 + 8*i);
+    cmapEncoding = getUShort(pos + 4 + 8*i + 2);
+    if (cmapPlatform == 3 && cmapEncoding == 1) {
+      unicodeCmap = i;
+    } else if (cmapPlatform == 1 && cmapEncoding == 0) {
+      macRomanCmap = i;
+    } else if (cmapPlatform == 3 && cmapEncoding == 0) {
+      msSymbolCmap = i;
+    }
+  }
+  i = 0;
+  mode = t42FontModeCharCode;
+  if (pdfFontHasEncoding) {
+    if (unicodeCmap >= 0) {
+      i = unicodeCmap;
+      mode = t42FontModeUnicode;
+    } else if (macRomanCmap >= 0) {
+      i = macRomanCmap;
+      mode = t42FontModeMacRoman;
+    }
+  } else {
+    if (macRomanCmap >= 0) {
+      i = macRomanCmap;
+      mode = t42FontModeCharCode;
+    } else if (msSymbolCmap >= 0) {
+      i = msSymbolCmap;
+      mode = t42FontModeCharCodeOffset;
+      cmapOffset = 0xf000;
+    }
+  }
+  cmapPlatform = getUShort(pos + 4 + 8*i);
+  cmapEncoding = getUShort(pos + 4 + 8*i + 2);
+  pos += getULong(pos + 4 + 8*i + 4);
+  cmapFmt = getUShort(pos);
+  if (cmapFmt != 0 && cmapFmt != 4 && cmapFmt != 6) {
+    error(-1, "Unimplemented cmap format (%d) in TrueType font file",
+         cmapFmt);
+    goto err;
+  }
+
+  // map char name to glyph index:
+  // 1. use encoding to map name to char code
+  // 2. use cmap to map char code to glyph index
+  j = 0; // make gcc happy
+  for (i = 0; i < 256; ++i) {
+    name = encodingA[i];
+    if (name && strcmp(name, ".notdef")) {
+      switch (mode) {
+      case t42FontModeUnicode:
+       toUnicode->mapToUnicode((CharCode)i, &u, 1);
+       j = (int)u;
        break;
-      case 23:                 // vstemhm
-       //~ ignored
-       if (first) {
-         cvtGlyphWidth(nOps & 1);
-         first = gFalse;
-       }
-       if (nOps & 1) {
-         error(-1, "Wrong number of args (%d) to Type 2 vstemhm", nOps);
-       }
-       nHints += nOps / 2;
+      case t42FontModeCharCode:
+       j = i;
        break;
-      case 10:                 // callsubr
-      case 11:                 // return
-      case 16:                 // blend
-      case 29:                 // callgsubr
-       error(-1, "Unimplemented Type 2 charstring op: %d", s[i]);
+      case t42FontModeCharCodeOffset:
+       j = cmapOffset + i;
        break;
-      default:
-       error(-1, "Illegal Type 2 charstring op: %d", s[i]);
+      case t42FontModeMacRoman:
+       j = globalParams->getMacRomanCharCode(name);
        break;
       }
-      ++i;
-      nOps = 0;
-    } else if (s[i] <= 246) {
-      if (nOps < 48) {
-       fp[nOps] = gFalse;
-       op[nOps++] = (int)s[i] - 139;
-      }
-      ++i;
-    } else if (s[i] <= 250) {
-      if (nOps < 48) {
-       fp[nOps] = gFalse;
-       op[nOps++] = (((int)s[i] - 247) << 8) + (int)s[i+1] + 108;
+      // note: Distiller (maybe Adobe's PS interpreter in general)
+      // doesn't like TrueType fonts that have CharStrings entries
+      // which point to nonexistent glyphs, hence the (k < nGlyphs)
+      // test
+      if ((k = getCmapEntry(cmapFmt, pos, j)) > 0 &&
+         k < nGlyphs) {
+       fprintf(out, "/%s %d def\n", name, k);
       }
-      i += 2;
-    } else if (s[i] <= 254) {
-      if (nOps < 48) {
-       fp[nOps] = gFalse;
-       op[nOps++] = -(((int)s[i] - 251) << 8) - (int)s[i+1] - 108;
+    }
+  }
+
+ err:
+  fprintf(out, "end readonly def\n");
+}
+
+int TrueTypeFontFile::getCmapEntry(int cmapFmt, int pos, int code) {
+  int cmapLen, cmapFirst;
+  int segCnt, segEnd, segStart, segDelta, segOffset;
+  int a, b, m, i;
+
+  switch (cmapFmt) {
+  case 0: // byte encoding table (Apple standard)
+    cmapLen = getUShort(pos + 2);
+    if (code >= cmapLen) {
+      return 0;
+    }
+    return getByte(pos + 6 + code);
+
+  case 4: // segment mapping to delta values (Microsoft standard)
+    segCnt = getUShort(pos + 6) / 2;
+    a = -1;
+    b = segCnt - 1;
+    segEnd = getUShort(pos + 14 + 2*b);
+    if (code > segEnd) {
+      // malformed font -- the TrueType spec requires the last segEnd
+      // to be 0xffff
+      return 0;
+    }
+    // invariant: seg[a].end < code <= seg[b].end
+    while (b - a > 1) {
+      m = (a + b) / 2;
+      segEnd = getUShort(pos + 14 + 2*m);
+      if (segEnd < code) {
+       a = m;
+      } else {
+       b = m;
       }
-      i += 2;
+    }
+    segStart = getUShort(pos + 16 + 2*segCnt + 2*b);
+    segDelta = getUShort(pos + 16 + 4*segCnt + 2*b);
+    segOffset = getUShort(pos + 16 + 6*segCnt + 2*b);
+    if (segOffset == 0) {
+      i = (code + segDelta) & 0xffff;
     } else {
-      x = (s[i+1] << 24) | (s[i+2] << 16) | (s[i+3] << 8) | s[i+4];
-      if (x & 0x80000000)
-       x |= -1 << 31;
-      if (nOps < 48) {
-       fp[nOps] = gTrue;
-       op[nOps++] = (double)x / 65536.0;
+      i = getUShort(pos + 16 + 6*segCnt + 2*b +
+                   segOffset + 2 * (code - segStart));
+      if (i != 0) {
+       i = (i + segDelta) & 0xffff;
       }
-      i += 5;
     }
-  }
+    return i;
 
-  sprintf(eBuf, "/%s %d RD ", name, charBuf->getLength());
-  eexecWrite(eBuf);
-  eexecWriteCharstring((Guchar *)charBuf->getCString(), charBuf->getLength());
-  eexecWrite(" ND\n");
-  delete charBuf;
-}
+  case 6: // trimmed table mapping
+    cmapFirst = getUShort(pos + 6);
+    cmapLen = getUShort(pos + 8);
+    if (code < cmapFirst || code >= cmapFirst + cmapLen) {
+      return 0;
+    }
+    return getUShort(pos + 10 + 2*(code - cmapFirst));
 
-void Type1CFontConverter::cvtGlyphWidth(GBool useOp) {
-  double w;
-  GBool wFP;
-  int i;
+  default:
+    // shouldn't happen - this is checked earlier
+    break;
+  }
+  return 0;
+}
 
-  if (useOp) {
-    w = nominalWidthX + op[0];
-    wFP = nominalWidthXFP | fp[0];
-    for (i = 1; i < nOps; ++i) {
-      op[i-1] = op[i];
-      fp[i-1] = fp[i];
+void TrueTypeFontFile::cvtSfnts(FILE *out, GString *name) {
+  TTFontTableHdr newTableHdrs[nT42Tables];
+  char tableDir[12 + nT42Tables*16];
+  char headTable[54];
+  int *origLocaTable;
+  char *locaTable;
+  int nNewTables;
+  Guint checksum;
+  int pos, glyfPos, length, glyphLength, pad;
+  int i, j, k;
+
+  // construct the 'head' table, zero out the font checksum
+  memcpy(headTable, file + seekTable("head"), 54);
+  headTable[8] = headTable[9] = headTable[10] = headTable[11] = (char)0;
+
+  // read the original 'loca' table and construct the new one
+  // (pad each glyph out to a multiple of 4 bytes)
+  origLocaTable = (int *)gmalloc((nGlyphs + 1) * sizeof(int));
+  pos = seekTable("loca");
+  for (i = 0; i <= nGlyphs; ++i) {
+    if (locaFmt) {
+      origLocaTable[i] = getULong(pos + 4*i);
+    } else {
+      origLocaTable[i] = 2 * getUShort(pos + 2*i);
     }
-    --nOps;
+  }
+  locaTable = (char *)gmalloc((nGlyphs + 1) * (locaFmt ? 4 : 2));
+  if (locaFmt) {
+    locaTable[0] = locaTable[1] = locaTable[2] = locaTable[3] = 0;
   } else {
-    w = defaultWidthX;
-    wFP = defaultWidthXFP;
+    locaTable[0] = locaTable[1] = 0;
+  }
+  pos = 0;
+  for (i = 1; i <= nGlyphs; ++i) {
+    length = origLocaTable[i] - origLocaTable[i-1];
+    if (length & 3) {
+      length += 4 - (length & 3);
+    }
+    pos += length;
+    if (locaFmt) {
+      locaTable[4*i  ] = (char)(pos >> 24);
+      locaTable[4*i+1] = (char)(pos >> 16);
+      locaTable[4*i+2] = (char)(pos >>  8);
+      locaTable[4*i+3] = (char) pos;
+    } else {
+      locaTable[2*i  ] = (char)(pos >> 9);
+      locaTable[2*i+1] = (char)(pos >> 1);
+    }
   }
-  eexecDumpNum(0, gFalse);
-  eexecDumpNum(w, wFP);
-  eexecDumpOp1(13);
-}
 
-void Type1CFontConverter::eexecDumpNum(double x, GBool fp) {
-  Guchar buf[12];
-  int y, n;
+  // count the number of tables
+  nNewTables = 0;
+  for (i = 0; i < nT42Tables; ++i) {
+    if (t42Tables[i].required ||
+       seekTable(t42Tables[i].tag) >= 0) {
+      ++nNewTables;
+    }
+  }
 
-  n = 0;
-  if (fp) {
-    if (x >= -32768 && x < 32768) {
-      y = (int)(x * 256.0);
-      buf[0] = 255;
-      buf[1] = (Guchar)(y >> 24);
-      buf[2] = (Guchar)(y >> 16);
-      buf[3] = (Guchar)(y >> 8);
-      buf[4] = (Guchar)y;
-      buf[5] = 255;
-      buf[6] = 0;
-      buf[7] = 0;
-      buf[8] = 1;
-      buf[9] = 0;
-      buf[10] = 12;
-      buf[11] = 12;
-      n = 12;
+  // construct the new table headers, including table checksums
+  // (pad each table out to a multiple of 4 bytes)
+  pos = 12 + nNewTables*16;
+  k = 0;
+  for (i = 0; i < nT42Tables; ++i) {
+    length = -1;
+    checksum = 0; // make gcc happy
+    if (i == t42HeadTable) {
+      length = 54;
+      checksum = computeTableChecksum(headTable, 54);
+    } else if (i == t42LocaTable) {
+      length = (nGlyphs + 1) * (locaFmt ? 4 : 2);
+      checksum = computeTableChecksum(locaTable, length);
+    } else if (i == t42GlyfTable) {
+      length = 0;
+      checksum = 0;
+      glyfPos = seekTable("glyf");
+      for (j = 0; j < nGlyphs; ++j) {
+       glyphLength = origLocaTable[j+1] - origLocaTable[j];
+       pad = (glyphLength & 3) ? 4 - (glyphLength & 3) : 0;
+       length += glyphLength + pad;
+       checksum += computeTableChecksum(file + glyfPos + origLocaTable[j],
+                                        glyphLength);
+      }
     } else {
-      error(-1, "Type 2 fixed point constant out of range");
+      if ((j = seekTableIdx(t42Tables[i].tag)) >= 0) {
+       length = tableHdrs[j].length;
+       checksum = computeTableChecksum(file + tableHdrs[j].offset, length);
+      } else if (t42Tables[i].required) {
+       error(-1, "Embedded TrueType font is missing a required table ('%s')",
+             t42Tables[i].tag);
+       length = 0;
+       checksum = 0;
+      }
+    }
+    if (length >= 0) {
+      strncpy(newTableHdrs[k].tag, t42Tables[i].tag, 4);
+      newTableHdrs[k].checksum = checksum;
+      newTableHdrs[k].offset = pos;
+      newTableHdrs[k].length = length;
+      pad = (length & 3) ? 4 - (length & 3) : 0;
+      pos += length + pad;
+      ++k;
     }
+  }
+
+  // construct the table directory
+  tableDir[0] = 0x00;          // sfnt version
+  tableDir[1] = 0x01;
+  tableDir[2] = 0x00;
+  tableDir[3] = 0x00;
+  tableDir[4] = 0;             // numTables
+  tableDir[5] = nNewTables;
+  tableDir[6] = 0;             // searchRange
+  tableDir[7] = (char)128;
+  tableDir[8] = 0;             // entrySelector
+  tableDir[9] = 3;
+  tableDir[10] = 0;            // rangeShift
+  tableDir[11] = (char)(16 * nNewTables - 128);
+  pos = 12;
+  for (i = 0; i < nNewTables; ++i) {
+    tableDir[pos   ] = newTableHdrs[i].tag[0];
+    tableDir[pos+ 1] = newTableHdrs[i].tag[1];
+    tableDir[pos+ 2] = newTableHdrs[i].tag[2];
+    tableDir[pos+ 3] = newTableHdrs[i].tag[3];
+    tableDir[pos+ 4] = (char)(newTableHdrs[i].checksum >> 24);
+    tableDir[pos+ 5] = (char)(newTableHdrs[i].checksum >> 16);
+    tableDir[pos+ 6] = (char)(newTableHdrs[i].checksum >>  8);
+    tableDir[pos+ 7] = (char) newTableHdrs[i].checksum;
+    tableDir[pos+ 8] = (char)(newTableHdrs[i].offset >> 24);
+    tableDir[pos+ 9] = (char)(newTableHdrs[i].offset >> 16);
+    tableDir[pos+10] = (char)(newTableHdrs[i].offset >>  8);
+    tableDir[pos+11] = (char) newTableHdrs[i].offset;
+    tableDir[pos+12] = (char)(newTableHdrs[i].length >> 24);
+    tableDir[pos+13] = (char)(newTableHdrs[i].length >> 16);
+    tableDir[pos+14] = (char)(newTableHdrs[i].length >>  8);
+    tableDir[pos+15] = (char) newTableHdrs[i].length;
+    pos += 16;
+  }
+
+  // compute the font checksum and store it in the head table
+  checksum = computeTableChecksum(tableDir, 12 + nNewTables*16);
+  for (i = 0; i < nNewTables; ++i) {
+    checksum += newTableHdrs[i].checksum;
+  }
+  checksum = 0xb1b0afba - checksum; // because the TrueType spec says so
+  headTable[ 8] = (char)(checksum >> 24);
+  headTable[ 9] = (char)(checksum >> 16);
+  headTable[10] = (char)(checksum >>  8);
+  headTable[11] = (char) checksum;
+
+  // start the sfnts array
+  if (name) {
+    fprintf(out, "/%s [\n", name->getCString());
   } else {
-    y = (int)x;
-    if (y >= -107 && y <= 107) {
-      buf[0] = (Guchar)(y + 139);
-      n = 1;
-    } else if (y > 107 && y <= 1131) {
-      y -= 108;
-      buf[0] = (Guchar)((y >> 8) + 247);
-      buf[1] = (Guchar)(y & 0xff);
-      n = 2;
-    } else if (y < -107 && y >= -1131) {
-      y = -y - 108;
-      buf[0] = (Guchar)((y >> 8) + 251);
-      buf[1] = (Guchar)(y & 0xff);
-      n = 2;
+    fprintf(out, "/sfnts [\n");
+  }
+
+  // write the table directory
+  dumpString(tableDir, 12 + nNewTables*16, out);
+
+  // write the tables
+  for (i = 0; i < nNewTables; ++i) {
+    if (i == t42HeadTable) {
+      dumpString(headTable, 54, out);
+    } else if (i == t42LocaTable) {
+      length = (nGlyphs + 1) * (locaFmt ? 4 : 2);
+      dumpString(locaTable, length, out);
+    } else if (i == t42GlyfTable) {
+      glyfPos = seekTable("glyf");
+      for (j = 0; j < nGlyphs; ++j) {
+       length = origLocaTable[j+1] - origLocaTable[j];
+       if (length > 0) {
+         dumpString(file + glyfPos + origLocaTable[j], length, out);
+       }
+      }
     } else {
-      buf[0] = 255;
-      buf[1] = (Guchar)(y >> 24);
-      buf[2] = (Guchar)(y >> 16);
-      buf[3] = (Guchar)(y >> 8);
-      buf[4] = (Guchar)y;
-      n = 5;
+      // length == 0 means the table is missing and the error was
+      // already reported during the construction of the table
+      // headers
+      if ((length = newTableHdrs[i].length) > 0) {
+       dumpString(file + seekTable(t42Tables[i].tag), length, out);
+      }
     }
   }
-  charBuf->append((char *)buf, n);
-}
 
-void Type1CFontConverter::eexecDumpOp1(int op) {
-  charBuf->append((char)op);
-}
+  // end the sfnts array
+  fprintf(out, "] def\n");
 
-void Type1CFontConverter::eexecDumpOp2(int op) {
-  charBuf->append((char)12);
-  charBuf->append((char)op);
+  gfree(origLocaTable);
+  gfree(locaTable);
 }
 
-void Type1CFontConverter::eexecWriteCharstring(Guchar *s, int n) {
-  Gushort r2;
-  Guchar x;
-  int i;
+void TrueTypeFontFile::dumpString(char *s, int length, FILE *out) {
+  int pad, i, j;
 
-  r2 = 4330;
+  fprintf(out, "<");
+  for (i = 0; i < length; i += 32) {
+    for (j = 0; j < 32 && i+j < length; ++j) {
+      fprintf(out, "%02X", s[i+j] & 0xff);
+    }
+    if (i % (65536 - 32) == 65536 - 64) {
+      fprintf(out, ">\n<");
+    } else if (i+32 < length) {
+      fprintf(out, "\n");
+    }
+  }
+  if (length & 3) {
+    pad = 4 - (length & 3);
+    for (i = 0; i < pad; ++i) {
+      fprintf(out, "00");
+    }
+  }
+  // add an extra zero byte because the Adobe Type 42 spec says so
+  fprintf(out, "00>\n");
+}
 
-  for (i = 0; i < n; ++i) {
-    // charstring encryption
-    x = s[i];
-    x ^= (r2 >> 8);
-    r2 = (x + r2) * 52845 + 22719;
+Guint TrueTypeFontFile::computeTableChecksum(char *data, int length) {
+  Guint checksum, word;
+  int i;
 
-    // eexec encryption
-    x ^= (r1 >> 8);
-    r1 = (x + r1) * 52845 + 22719;
-    fputc(hexChars[x >> 4], out);
-    fputc(hexChars[x & 0x0f], out);
-    line += 2;
-    if (line == 64) {
-      fputc('\n', out);
-      line = 0;
+  checksum = 0;
+  for (i = 0; i+3 < length; i += 4) {
+    word = ((data[i  ] & 0xff) << 24) +
+           ((data[i+1] & 0xff) << 16) +
+           ((data[i+2] & 0xff) <<  8) +
+            (data[i+3] & 0xff);
+    checksum += word;
+  }
+  if (length & 3) {
+    word = 0;
+    i = length & ~3;
+    switch (length & 3) {
+    case 3:
+      word |= (data[i+2] & 0xff) <<  8;
+    case 2:
+      word |= (data[i+1] & 0xff) << 16;
+    case 1:
+      word |= (data[i  ] & 0xff) << 24;
+      break;
     }
+    checksum += word;
   }
+  return checksum;
 }
 
-void Type1CFontConverter::getDeltaInt(char *buf, char *name, double *op,
-                                     int n) {
-  int x, i;
+void TrueTypeFontFile::writeTTF(FILE *out) {
+  static char cmapTab[20] = {
+    0, 0,                      // table version number
+    0, 1,                      // number of encoding tables
+    0, 1,                      // platform ID
+    0, 0,                      // encoding ID
+    0, 0, 0, 12,               // offset of subtable
+    0, 0,                      // subtable format
+    0, 1,                      // subtable length
+    0, 1,                      // subtable version
+    0,                         // map char 0 -> glyph 0
+    0                          // pad to multiple of four bytes
+  };
+  static char nameTab[8] = {
+    0, 0,                      // format
+    0, 0,                      // number of name records
+    0, 6,                      // offset to start of string storage
+    0, 0                       // pad to multiple of four bytes
+  };
+  static char postTab[32] = {
+    0, 1, 0, 0,                        // format
+    0, 0, 0, 0,                        // italic angle
+    0, 0,                      // underline position
+    0, 0,                      // underline thickness
+    0, 0, 0, 0,                        // fixed pitch
+    0, 0, 0, 0,                        // min Type 42 memory
+    0, 0, 0, 0,                        // max Type 42 memory
+    0, 0, 0, 0,                        // min Type 1 memory
+    0, 0, 0, 0                 // max Type 1 memory
+  };
+  GBool haveCmap, haveName, havePost;
+  GBool dirCmap, dirName, dirPost;
+  int nNewTables, nAllTables, pad;
+  char *tableDir;
+  Guint t, pos;
+  int i, j;
+
+  // check for missing tables
+  haveCmap = seekTable("cmap") >= 0;
+  haveName = seekTable("name") >= 0;
+  havePost = seekTable("post") >= 0;
+  nNewTables = (haveCmap ? 0 : 1) + (haveName ? 0 : 1) + (havePost ? 0 : 1);
+  if (!nNewTables) {
+    // none are missing - write the TTF file as is
+    fwrite(file, 1, len, out);
+    return;
+  }
 
-  sprintf(buf, "/%s [", name);
-  buf += strlen(buf);
-  x = 0;
-  for (i = 0; i < n; ++i) {
-    x += (int)op[i];
-    sprintf(buf, "%s%d", i > 0 ? " " : "", x);
-    buf += strlen(buf);
+  // construct the new table directory
+  nAllTables = nTables + nNewTables;
+  tableDir = (char *)gmalloc(12 + nAllTables * 16);
+  memcpy(tableDir, file, 12 + nTables * 16);
+  tableDir[4] = (char)((nAllTables >> 8) & 0xff);
+  tableDir[5] = (char)(nAllTables & 0xff);
+  for (i = -1, t = (Guint)nAllTables; t; ++i, t >>= 1) ;
+  t = 1 << (4 + i);
+  tableDir[6] = (char)((t >> 8) & 0xff);
+  tableDir[7] = (char)(t & 0xff);
+  tableDir[8] = (char)((i >> 8) & 0xff);
+  tableDir[9] = (char)(i & 0xff);
+  t = nAllTables * 16 - t;
+  tableDir[10] = (char)((t >> 8) & 0xff);
+  tableDir[11] = (char)(t & 0xff);
+  dirCmap = haveCmap;
+  dirName = haveName;
+  dirPost = havePost;
+  j = 0;
+  pad = (len & 3) ? 4 - (len & 3) : 0;
+  pos = len + pad + 16 * nNewTables;
+  for (i = 0; i < nTables; ++i) {
+    if (!dirCmap && strncmp(tableHdrs[i].tag, "cmap", 4) > 0) {
+      tableDir[12 + 16*j     ] = 'c';
+      tableDir[12 + 16*j +  1] = 'm';
+      tableDir[12 + 16*j +  2] = 'a';
+      tableDir[12 + 16*j +  3] = 'p';
+      tableDir[12 + 16*j +  4] = (char)0; //~ should compute the checksum
+      tableDir[12 + 16*j +  5] = (char)0;
+      tableDir[12 + 16*j +  6] = (char)0;
+      tableDir[12 + 16*j +  7] = (char)0;
+      tableDir[12 + 16*j +  8] = (char)((pos >> 24) & 0xff);
+      tableDir[12 + 16*j +  9] = (char)((pos >> 16) & 0xff);
+      tableDir[12 + 16*j + 10] = (char)((pos >>  8) & 0xff);
+      tableDir[12 + 16*j + 11] = (char)( pos        & 0xff);
+      tableDir[12 + 16*j + 12] = (char)((sizeof(cmapTab) >> 24) & 0xff);
+      tableDir[12 + 16*j + 13] = (char)((sizeof(cmapTab) >> 16) & 0xff);
+      tableDir[12 + 16*j + 14] = (char)((sizeof(cmapTab) >>  8) & 0xff);
+      tableDir[12 + 16*j + 15] = (char)( sizeof(cmapTab)        & 0xff);
+      pos += sizeof(cmapTab);
+      ++j;
+      dirCmap = gTrue;
+    }
+    if (!dirName && strncmp(tableHdrs[i].tag, "name", 4) > 0) {
+      tableDir[12 + 16*j     ] = 'n';
+      tableDir[12 + 16*j +  1] = 'a';
+      tableDir[12 + 16*j +  2] = 'm';
+      tableDir[12 + 16*j +  3] = 'e';
+      tableDir[12 + 16*j +  4] = (char)0; //~ should compute the checksum
+      tableDir[12 + 16*j +  5] = (char)0;
+      tableDir[12 + 16*j +  6] = (char)0;
+      tableDir[12 + 16*j +  7] = (char)0;
+      tableDir[12 + 16*j +  8] = (char)((pos >> 24) & 0xff);
+      tableDir[12 + 16*j +  9] = (char)((pos >> 16) & 0xff);
+      tableDir[12 + 16*j + 10] = (char)((pos >>  8) & 0xff);
+      tableDir[12 + 16*j + 11] = (char)( pos        & 0xff);
+      tableDir[12 + 16*j + 12] = (char)((sizeof(nameTab) >> 24) & 0xff);
+      tableDir[12 + 16*j + 13] = (char)((sizeof(nameTab) >> 16) & 0xff);
+      tableDir[12 + 16*j + 14] = (char)((sizeof(nameTab) >>  8) & 0xff);
+      tableDir[12 + 16*j + 15] = (char)( sizeof(nameTab)        & 0xff);
+      pos += sizeof(nameTab);
+      ++j;
+      dirName = gTrue;
+    }
+    if (!dirName && strncmp(tableHdrs[i].tag, "post", 4) > 0) {
+      tableDir[12 + 16*j     ] = 'p';
+      tableDir[12 + 16*j +  1] = 'o';
+      tableDir[12 + 16*j +  2] = 's';
+      tableDir[12 + 16*j +  3] = 't';
+      tableDir[12 + 16*j +  4] = (char)0; //~ should compute the checksum
+      tableDir[12 + 16*j +  5] = (char)0;
+      tableDir[12 + 16*j +  6] = (char)0;
+      tableDir[12 + 16*j +  7] = (char)0;
+      tableDir[12 + 16*j +  8] = (char)((pos >> 24) & 0xff);
+      tableDir[12 + 16*j +  9] = (char)((pos >> 16) & 0xff);
+      tableDir[12 + 16*j + 10] = (char)((pos >>  8) & 0xff);
+      tableDir[12 + 16*j + 11] = (char)( pos        & 0xff);
+      tableDir[12 + 16*j + 12] = (char)((sizeof(postTab) >> 24) & 0xff);
+      tableDir[12 + 16*j + 13] = (char)((sizeof(postTab) >> 16) & 0xff);
+      tableDir[12 + 16*j + 14] = (char)((sizeof(postTab) >>  8) & 0xff);
+      tableDir[12 + 16*j + 15] = (char)( sizeof(postTab)        & 0xff);
+      pos += sizeof(postTab);
+      ++j;
+      dirPost = gTrue;
+    }
+    memcpy(&tableDir[12 + 16*j], file + 12 + 16*i, 16);
+    t = tableHdrs[i].offset + nNewTables * 16;
+    tableDir[12 + 16*j +  8] = (char)((t >> 24) & 0xff);
+    tableDir[12 + 16*j +  9] = (char)((t >> 16) & 0xff);
+    tableDir[12 + 16*j + 10] = (char)((t >>  8) & 0xff);
+    tableDir[12 + 16*j + 11] = (char)( t        & 0xff);
+    ++j;
+  }
+  if (!dirCmap) {
+    tableDir[12 + 16*j     ] = 'c';
+    tableDir[12 + 16*j +  1] = 'm';
+    tableDir[12 + 16*j +  2] = 'a';
+    tableDir[12 + 16*j +  3] = 'p';
+    tableDir[12 + 16*j +  4] = (char)0; //~ should compute the checksum
+    tableDir[12 + 16*j +  5] = (char)0;
+    tableDir[12 + 16*j +  6] = (char)0;
+    tableDir[12 + 16*j +  7] = (char)0;
+    tableDir[12 + 16*j +  8] = (char)((pos >> 24) & 0xff);
+    tableDir[12 + 16*j +  9] = (char)((pos >> 16) & 0xff);
+    tableDir[12 + 16*j + 10] = (char)((pos >>  8) & 0xff);
+    tableDir[12 + 16*j + 11] = (char)( pos        & 0xff);
+    tableDir[12 + 16*j + 12] = (char)((sizeof(cmapTab) >> 24) & 0xff);
+    tableDir[12 + 16*j + 13] = (char)((sizeof(cmapTab) >> 16) & 0xff);
+    tableDir[12 + 16*j + 14] = (char)((sizeof(cmapTab) >>  8) & 0xff);
+    tableDir[12 + 16*j + 15] = (char)( sizeof(cmapTab)        & 0xff);
+    pos += sizeof(cmapTab);
+    ++j;
+    dirCmap = gTrue;
+  }
+  if (!dirName) {
+    tableDir[12 + 16*j     ] = 'n';
+    tableDir[12 + 16*j +  1] = 'a';
+    tableDir[12 + 16*j +  2] = 'm';
+    tableDir[12 + 16*j +  3] = 'e';
+    tableDir[12 + 16*j +  4] = (char)0; //~ should compute the checksum
+    tableDir[12 + 16*j +  5] = (char)0;
+    tableDir[12 + 16*j +  6] = (char)0;
+    tableDir[12 + 16*j +  7] = (char)0;
+    tableDir[12 + 16*j +  8] = (char)((pos >> 24) & 0xff);
+    tableDir[12 + 16*j +  9] = (char)((pos >> 16) & 0xff);
+    tableDir[12 + 16*j + 10] = (char)((pos >>  8) & 0xff);
+    tableDir[12 + 16*j + 11] = (char)( pos        & 0xff);
+    tableDir[12 + 16*j + 12] = (char)((sizeof(nameTab) >> 24) & 0xff);
+    tableDir[12 + 16*j + 13] = (char)((sizeof(nameTab) >> 16) & 0xff);
+    tableDir[12 + 16*j + 14] = (char)((sizeof(nameTab) >>  8) & 0xff);
+    tableDir[12 + 16*j + 15] = (char)( sizeof(nameTab)        & 0xff);
+    pos += sizeof(nameTab);
+    ++j;
+    dirName = gTrue;
+  }
+  if (!dirPost) {
+    tableDir[12 + 16*j     ] = 'p';
+    tableDir[12 + 16*j +  1] = 'o';
+    tableDir[12 + 16*j +  2] = 's';
+    tableDir[12 + 16*j +  3] = 't';
+    tableDir[12 + 16*j +  4] = (char)0; //~ should compute the checksum
+    tableDir[12 + 16*j +  5] = (char)0;
+    tableDir[12 + 16*j +  6] = (char)0;
+    tableDir[12 + 16*j +  7] = (char)0;
+    tableDir[12 + 16*j +  8] = (char)((pos >> 24) & 0xff);
+    tableDir[12 + 16*j +  9] = (char)((pos >> 16) & 0xff);
+    tableDir[12 + 16*j + 10] = (char)((pos >>  8) & 0xff);
+    tableDir[12 + 16*j + 11] = (char)( pos        & 0xff);
+    tableDir[12 + 16*j + 12] = (char)((sizeof(postTab) >> 24) & 0xff);
+    tableDir[12 + 16*j + 13] = (char)((sizeof(postTab) >> 16) & 0xff);
+    tableDir[12 + 16*j + 14] = (char)((sizeof(postTab) >>  8) & 0xff);
+    tableDir[12 + 16*j + 15] = (char)( sizeof(postTab)        & 0xff);
+    pos += sizeof(postTab);
+    ++j;
+    dirPost = gTrue;
   }
-  sprintf(buf, "] def\n");
-}
 
-void Type1CFontConverter::getDeltaReal(char *buf, char *name, double *op,
-                                      int n) {
-  double x;
-  int i;
+  // write the table directory
+  fwrite(tableDir, 1, 12 + 16 * nAllTables, out);
 
-  sprintf(buf, "/%s [", name);
-  buf += strlen(buf);
-  x = 0;
-  for (i = 0; i < n; ++i) {
-    x += op[i];
-    sprintf(buf, "%s%g", i > 0 ? " " : "", x);
-    buf += strlen(buf);
+  // write the original tables
+  fwrite(file + 12 + 16*nTables, 1, len - (12 + 16*nTables), out);
+
+  // write the new tables
+  for (i = 0; i < pad; ++i) {
+    fputc((char)0, out);
   }
-  sprintf(buf, "] def\n");
+  if (!haveCmap) {
+    fwrite(cmapTab, 1, sizeof(cmapTab), out);
+  }
+  if (!haveName) {
+    fwrite(nameTab, 1, sizeof(nameTab), out);
+  }
+  if (!havePost) {
+    fwrite(postTab, 1, sizeof(postTab), out);
+  }
+
+  gfree(tableDir);
 }
index ec625ef28bd75a3e4222b7d0a300f103e92494a7..d5de25c5a6996a944817e6932a43e699e54b2c78 100644 (file)
@@ -2,7 +2,7 @@
 //
 // FontFile.h
 //
-// Copyright 1999 Derek B. Noonburg
+// Copyright 1999-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -16,7 +16,9 @@
 #include <stdio.h>
 #include "gtypes.h"
 #include "GString.h"
-#include "FontEncoding.h"
+#include "CharTypes.h"
+
+class CharCodeToUnicode;
 
 //------------------------------------------------------------------------
 // FontFile
@@ -32,10 +34,9 @@ public:
   // Returns NULL if no name is available.
   virtual char *getName() = 0;
 
-  // Returns the custom font encoding, or NULL if the encoding is
-  // not available.  If <taken> is set, the caller of this function
-  // will be responsible for freeing the encoding object.
-  virtual FontEncoding *getEncoding(GBool taken) = 0;
+  // Returns the custom font encoding, or NULL if the encoding is not
+  // available.
+  virtual char **getEncoding() = 0;
 };
 
 //------------------------------------------------------------------------
@@ -48,59 +49,79 @@ public:
   Type1FontFile(char *file, int len);
   virtual ~Type1FontFile();
   virtual char *getName() { return name; }
-  virtual FontEncoding *getEncoding(GBool taken);
+  virtual char **getEncoding() { return encoding; }
 
 private:
 
   char *name;
-  FontEncoding *encoding;
-  GBool freeEnc;
+  char **encoding;
 };
 
 //------------------------------------------------------------------------
 // Type1CFontFile
 //------------------------------------------------------------------------
 
+struct Type1CTopDict;
+struct Type1CPrivateDict;
+
 class Type1CFontFile: public FontFile {
 public:
 
-  Type1CFontFile(char *file, int len);
+  Type1CFontFile(char *fileA, int lenA);
   virtual ~Type1CFontFile();
-  virtual char *getName() { return name; }
-  virtual FontEncoding *getEncoding(GBool taken);
 
-private:
-
-  char *name;
-  FontEncoding *encoding;
-  GBool freeEnc;
-};
+  virtual char *getName();
+  virtual char **getEncoding();
 
-//------------------------------------------------------------------------
-// Type1CFontConverter
-//------------------------------------------------------------------------
+  // Convert to a Type 1 font, suitable for embedding in a PostScript
+  // file.  The name will be used as the PostScript font name.
+  void convertToType1(FILE *outA);
 
-class Type1CFontConverter {
-public:
+  // Convert to a Type 0 CIDFont, suitable for embedding in a
+  // PostScript file.  The name will be used as the PostScript font
+  // name.
+  void convertToCIDType0(char *psName, FILE *outA);
 
-  Type1CFontConverter(char *file, int len, FILE *out);
-  ~Type1CFontConverter();
-  void convert();
+  // Convert to a Type 0 (but non-CID) composite font, suitable for
+  // embedding in a PostScript file.  The name will be used as the
+  // PostScript font name.
+  void convertToType0(char *psName, FILE *outA);
 
 private:
 
+  void readNameAndEncoding();
+  void readTopDict(Type1CTopDict *dict);
+  void readPrivateDict(Type1CPrivateDict *privateDict,
+                      int offset, int size);
+  Gushort *readCharset(int charset, int nGlyphs);
   void eexecWrite(char *s);
-  void cvtGlyph(char *name, Guchar *s, int n);
+  void eexecCvtGlyph(char *glyphName, Guchar *s, int n);
+  void cvtGlyph(Guchar *s, int n);
   void cvtGlyphWidth(GBool useOp);
-  void eexecDumpNum(double x, GBool fp);
-  void eexecDumpOp1(int op);
-  void eexecDumpOp2(int op);
+  void eexecDumpNum(double x, GBool fpA);
+  void eexecDumpOp1(int opA);
+  void eexecDumpOp2(int opA);
   void eexecWriteCharstring(Guchar *s, int n);
-  void getDeltaInt(char *buf, char *name, double *op, int n);
-  void getDeltaReal(char *buf, char *name, double *op, int n);
+  void getDeltaInt(char *buf, char *key, double *opA, int n);
+  void getDeltaReal(char *buf, char *key, double *opA, int n);
+  int getIndexLen(Guchar *indexPtr);
+  Guchar *getIndexValPtr(Guchar *indexPtr, int i);
+  Guchar *getIndexEnd(Guchar *indexPtr);
+  Guint getWord(Guchar *ptr, int size);
+  double getNum(Guchar **ptr, GBool *fp);
+  char *getString(int sid, char *buf);
 
   char *file;
   int len;
+
+  GString *name;
+  char **encoding;
+
+  int topOffSize;
+  Guchar *topDictIdxPtr;
+  Guchar *stringIdxPtr;
+  Guchar *gsubrIdxPtr;
+
   FILE *out;
   double op[48];               // operands
   GBool fp[48];                        // true if operand is fixed point
@@ -114,4 +135,81 @@ private:
   int line;                    // number of eexec chars on current line
 };
 
+//------------------------------------------------------------------------
+// TrueTypeFontFile
+//------------------------------------------------------------------------
+
+struct TTFontTableHdr;
+
+class TrueTypeFontFile: public FontFile {
+public:
+
+  TrueTypeFontFile(char *fileA, int lenA);
+  ~TrueTypeFontFile();
+
+  // This always returns NULL, since it's probably better to trust the
+  // font name in the PDF file rather than the one in the TrueType
+  // font file.
+  virtual char *getName();
+
+  virtual char **getEncoding();
+
+  // Convert to a Type 42 font, suitable for embedding in a PostScript
+  // file.  The name will be used as the PostScript font name (so we
+  // don't need to depend on the 'name' table in the font).  The
+  // encoding is needed because the PDF Font object can modify the
+  // encoding.
+  void convertToType42(char *name, char **encodingA,
+                      CharCodeToUnicode *toUnicode,
+                      GBool pdfFontHasEncoding, FILE *out);
+
+  // Convert to a Type 2 CIDFont, suitable for embedding in a
+  // PostScript file.  The name will be used as the PostScript font
+  // name (so we don't need to depend on the 'name' table in the
+  // font).
+  void convertToCIDType2(char *name, Gushort *cidMap,
+                        int nCIDs, FILE *out);
+
+  // Convert to a Type 0 (but non-CID) composite font, suitable for
+  // embedding in a PostScript file.  The name will be used as the
+  // PostScript font name (so we don't need to depend on the 'name'
+  // table in the font).
+  void convertToType0(char *name, Gushort *cidMap,
+                     int nCIDs, FILE *out);
+
+  // Write a TTF file, filling in any missing tables that are required
+  // by the TrueType spec.  If the font already has all the required
+  // tables, it will be written unmodified.
+  void writeTTF(FILE *out);
+
+private:
+
+  char *file;
+  int len;
+
+  char **encoding;
+
+  TTFontTableHdr *tableHdrs;
+  int nTables;
+  int bbox[4];
+  int locaFmt;
+  int nGlyphs;
+
+  int getByte(int pos);
+  int getChar(int pos);
+  int getUShort(int pos);
+  int getShort(int pos);
+  Guint getULong(int pos);
+  double getFixed(int pos);
+  int seekTable(char *tag);
+  int seekTableIdx(char *tag);
+  void cvtEncoding(char **encodingA, FILE *out);
+  void cvtCharStrings(char **encodingA, CharCodeToUnicode *toUnicode,
+                     GBool pdfFontHasEncoding, FILE *out);
+  int getCmapEntry(int cmapFmt, int pos, int code);
+  void cvtSfnts(FILE *out, GString *name);
+  void dumpString(char *s, int length, FILE *out);
+  Guint computeTableChecksum(char *data, int length);
+};
+
 #endif
diff --git a/pdf/xpdf/FontInfo.h b/pdf/xpdf/FontInfo.h
deleted file mode 100644 (file)
index ee85b95..0000000
+++ /dev/null
@@ -1,2068 +0,0 @@
-//========================================================================
-//
-// FontInfo.h
-//
-// This file was automatically generated by makeFontInfo.
-//
-// Copyright 1996 Derek B. Noonburg
-//
-//========================================================================
-
-#ifndef FONTINFO_H
-#define FONTINFO_H
-
-//------------------------------------------------------------------------
-// Character encodings.
-//------------------------------------------------------------------------
-
-#define standardEncodingSize 335
-static char *standardEncodingNames[standardEncodingSize] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "space",
-  "exclam",
-  "quotedbl",
-  "numbersign",
-  "dollar",
-  "percent",
-  "ampersand",
-  "quoteright",
-  "parenleft",
-  "parenright",
-  "asterisk",
-  "plus",
-  "comma",
-  "hyphen",
-  "period",
-  "slash",
-  "zero",
-  "one",
-  "two",
-  "three",
-  "four",
-  "five",
-  "six",
-  "seven",
-  "eight",
-  "nine",
-  "colon",
-  "semicolon",
-  "less",
-  "equal",
-  "greater",
-  "question",
-  "at",
-  "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",
-  "bracketleft",
-  "backslash",
-  "bracketright",
-  "asciicircum",
-  "underscore",
-  "quoteleft",
-  "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",
-  "braceleft",
-  "bar",
-  "braceright",
-  "asciitilde",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "exclamdown",
-  "cent",
-  "sterling",
-  "fraction",
-  "yen",
-  "florin",
-  "section",
-  "currency",
-  "quotesingle",
-  "quotedblleft",
-  "guillemotleft",
-  "guilsinglleft",
-  "guilsinglright",
-  "fi",
-  "fl",
-  NULL,
-  "endash",
-  "dagger",
-  "daggerdbl",
-  "periodcentered",
-  NULL,
-  "paragraph",
-  "bullet",
-  "quotesinglbase",
-  "quotedblbase",
-  "quotedblright",
-  "guillemotright",
-  "ellipsis",
-  "perthousand",
-  NULL,
-  "questiondown",
-  NULL,
-  "grave",
-  "acute",
-  "circumflex",
-  "tilde",
-  "macron",
-  "breve",
-  "dotaccent",
-  "dieresis",
-  NULL,
-  "ring",
-  "cedilla",
-  NULL,
-  "hungarumlaut",
-  "ogonek",
-  "caron",
-  "emdash",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "AE",
-  NULL,
-  "ordfeminine",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "Lslash",
-  "Oslash",
-  "OE",
-  "ordmasculine",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "ae",
-  NULL,
-  NULL,
-  NULL,
-  "dotlessi",
-  NULL,
-  NULL,
-  "lslash",
-  "oslash",
-  "oe",
-  "germandbls",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "Aacute",
-  "Acircumflex",
-  "Adieresis",
-  "Agrave",
-  "Aring",
-  "Atilde",
-  "Ccedilla",
-  "Eacute",
-  "Ecircumflex",
-  "Edieresis",
-  "Egrave",
-  "Eth",
-  "Iacute",
-  "Icircumflex",
-  "Idieresis",
-  "Igrave",
-  "Ntilde",
-  "Oacute",
-  "Ocircumflex",
-  "Odieresis",
-  "Ograve",
-  "Otilde",
-  "Scaron",
-  "Thorn",
-  "Uacute",
-  "Ucircumflex",
-  "Udieresis",
-  "Ugrave",
-  "Yacute",
-  "Ydieresis",
-  "Zcaron",
-  "aacute",
-  "acircumflex",
-  "adieresis",
-  "agrave",
-  "aring",
-  "atilde",
-  "brokenbar",
-  "ccedilla",
-  "copyright",
-  "degree",
-  "divide",
-  "eacute",
-  "ecircumflex",
-  "edieresis",
-  "egrave",
-  "eth",
-  "iacute",
-  "icircumflex",
-  "idieresis",
-  "igrave",
-  "logicalnot",
-  "minus",
-  "mu",
-  "multiply",
-  "ntilde",
-  "oacute",
-  "ocircumflex",
-  "odieresis",
-  "ograve",
-  "onehalf",
-  "onequarter",
-  "onesuperior",
-  "otilde",
-  "plusminus",
-  "registered",
-  "scaron",
-  "thorn",
-  "threequarters",
-  "threesuperior",
-  "trademark",
-  "twosuperior",
-  "uacute",
-  "ucircumflex",
-  "udieresis",
-  "ugrave",
-  "yacute",
-  "ydieresis",
-  "zcaron"
-};
-static FontEncoding standardEncoding(standardEncodingNames,
-                                     standardEncodingSize);
-
-#define symbolEncodingSize 257
-static char *symbolEncodingNames[symbolEncodingSize] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "space",
-  "exclam",
-  "universal",
-  "numbersign",
-  "existential",
-  "percent",
-  "ampersand",
-  "suchthat",
-  "parenleft",
-  "parenright",
-  "asteriskmath",
-  "plus",
-  "comma",
-  "minus",
-  "period",
-  "slash",
-  "zero",
-  "one",
-  "two",
-  "three",
-  "four",
-  "five",
-  "six",
-  "seven",
-  "eight",
-  "nine",
-  "colon",
-  "semicolon",
-  "less",
-  "equal",
-  "greater",
-  "question",
-  "congruent",
-  "Alpha",
-  "Beta",
-  "Chi",
-  "Delta",
-  "Epsilon",
-  "Phi",
-  "Gamma",
-  "Eta",
-  "Iota",
-  "theta1",
-  "Kappa",
-  "Lambda",
-  "Mu",
-  "Nu",
-  "Omicron",
-  "Pi",
-  "Theta",
-  "Rho",
-  "Sigma",
-  "Tau",
-  "Upsilon",
-  "sigma1",
-  "Omega",
-  "Xi",
-  "Psi",
-  "Zeta",
-  "bracketleft",
-  "therefore",
-  "bracketright",
-  "perpendicular",
-  "underscore",
-  "radicalex",
-  "alpha",
-  "beta",
-  "chi",
-  "delta",
-  "epsilon",
-  "phi",
-  "gamma",
-  "eta",
-  "iota",
-  "phi1",
-  "kappa",
-  "lambda",
-  "mu",
-  "nu",
-  "omicron",
-  "pi",
-  "theta",
-  "rho",
-  "sigma",
-  "tau",
-  "upsilon",
-  "omega1",
-  "omega",
-  "xi",
-  "psi",
-  "zeta",
-  "braceleft",
-  "bar",
-  "braceright",
-  "similar",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "Upsilon1",
-  "minute",
-  "lessequal",
-  "fraction",
-  "infinity",
-  "florin",
-  "club",
-  "diamond",
-  "heart",
-  "spade",
-  "arrowboth",
-  "arrowleft",
-  "arrowup",
-  "arrowright",
-  "arrowdown",
-  "degree",
-  "plusminus",
-  "second",
-  "greaterequal",
-  "multiply",
-  "proportional",
-  "partialdiff",
-  "bullet",
-  "divide",
-  "notequal",
-  "equivalence",
-  "approxequal",
-  "ellipsis",
-  "arrowvertex",
-  "arrowhorizex",
-  "carriagereturn",
-  "aleph",
-  "Ifraktur",
-  "Rfraktur",
-  "weierstrass",
-  "circlemultiply",
-  "circleplus",
-  "emptyset",
-  "intersection",
-  "union",
-  "propersuperset",
-  "reflexsuperset",
-  "notsubset",
-  "propersubset",
-  "reflexsubset",
-  "element",
-  "notelement",
-  "angle",
-  "gradient",
-  "registerserif",
-  "copyrightserif",
-  "trademarkserif",
-  "product",
-  "radical",
-  "dotmath",
-  "logicalnot",
-  "logicaland",
-  "logicalor",
-  "arrowdblboth",
-  "arrowdblleft",
-  "arrowdblup",
-  "arrowdblright",
-  "arrowdbldown",
-  "lozenge",
-  "angleleft",
-  "registersans",
-  "copyrightsans",
-  "trademarksans",
-  "summation",
-  "parenlefttp",
-  "parenleftex",
-  "parenleftbt",
-  "bracketlefttp",
-  "bracketleftex",
-  "bracketleftbt",
-  "bracelefttp",
-  "braceleftmid",
-  "braceleftbt",
-  "braceex",
-  NULL,
-  "angleright",
-  "integral",
-  "integraltp",
-  "integralex",
-  "integralbt",
-  "parenrighttp",
-  "parenrightex",
-  "parenrightbt",
-  "bracketrighttp",
-  "bracketrightex",
-  "bracketrightbt",
-  "bracerighttp",
-  "bracerightmid",
-  "bracerightbt",
-  NULL,
-  "apple"
-};
-static FontEncoding symbolEncoding(symbolEncodingNames,
-                                   symbolEncodingSize);
-
-#define zapfDingbatsEncodingSize 270
-static char *zapfDingbatsEncodingNames[zapfDingbatsEncodingSize] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "space",
-  "a1",
-  "a2",
-  "a202",
-  "a3",
-  "a4",
-  "a5",
-  "a119",
-  "a118",
-  "a117",
-  "a11",
-  "a12",
-  "a13",
-  "a14",
-  "a15",
-  "a16",
-  "a105",
-  "a17",
-  "a18",
-  "a19",
-  "a20",
-  "a21",
-  "a22",
-  "a23",
-  "a24",
-  "a25",
-  "a26",
-  "a27",
-  "a28",
-  "a6",
-  "a7",
-  "a8",
-  "a9",
-  "a10",
-  "a29",
-  "a30",
-  "a31",
-  "a32",
-  "a33",
-  "a34",
-  "a35",
-  "a36",
-  "a37",
-  "a38",
-  "a39",
-  "a40",
-  "a41",
-  "a42",
-  "a43",
-  "a44",
-  "a45",
-  "a46",
-  "a47",
-  "a48",
-  "a49",
-  "a50",
-  "a51",
-  "a52",
-  "a53",
-  "a54",
-  "a55",
-  "a56",
-  "a57",
-  "a58",
-  "a59",
-  "a60",
-  "a61",
-  "a62",
-  "a63",
-  "a64",
-  "a65",
-  "a66",
-  "a67",
-  "a68",
-  "a69",
-  "a70",
-  "a71",
-  "a72",
-  "a73",
-  "a74",
-  "a203",
-  "a75",
-  "a204",
-  "a76",
-  "a77",
-  "a78",
-  "a79",
-  "a81",
-  "a82",
-  "a83",
-  "a84",
-  "a97",
-  "a98",
-  "a99",
-  "a100",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "a101",
-  "a102",
-  "a103",
-  "a104",
-  "a106",
-  "a107",
-  "a108",
-  "a112",
-  "a111",
-  "a110",
-  "a109",
-  "a120",
-  "a121",
-  "a122",
-  "a123",
-  "a124",
-  "a125",
-  "a126",
-  "a127",
-  "a128",
-  "a129",
-  "a130",
-  "a131",
-  "a132",
-  "a133",
-  "a134",
-  "a135",
-  "a136",
-  "a137",
-  "a138",
-  "a139",
-  "a140",
-  "a141",
-  "a142",
-  "a143",
-  "a144",
-  "a145",
-  "a146",
-  "a147",
-  "a148",
-  "a149",
-  "a150",
-  "a151",
-  "a152",
-  "a153",
-  "a154",
-  "a155",
-  "a156",
-  "a157",
-  "a158",
-  "a159",
-  "a160",
-  "a161",
-  "a163",
-  "a164",
-  "a196",
-  "a165",
-  "a192",
-  "a166",
-  "a167",
-  "a168",
-  "a169",
-  "a170",
-  "a171",
-  "a172",
-  "a173",
-  "a162",
-  "a174",
-  "a175",
-  "a176",
-  "a177",
-  "a178",
-  "a179",
-  "a193",
-  "a180",
-  "a199",
-  "a181",
-  "a200",
-  "a182",
-  NULL,
-  "a201",
-  "a183",
-  "a184",
-  "a197",
-  "a185",
-  "a194",
-  "a198",
-  "a186",
-  "a195",
-  "a187",
-  "a188",
-  "a189",
-  "a190",
-  "a191",
-  NULL,
-  "a205",
-  "a206",
-  "a85",
-  "a86",
-  "a87",
-  "a88",
-  "a89",
-  "a90",
-  "a91",
-  "a92",
-  "a93",
-  "a94",
-  "a95",
-  "a96"
-};
-static FontEncoding zapfDingbatsEncoding(zapfDingbatsEncodingNames,
-                                         zapfDingbatsEncodingSize);
-
-#define macRomanEncodingSize 256
-static char *macRomanEncodingNames[macRomanEncodingSize] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "space",
-  "exclam",
-  "quotedbl",
-  "numbersign",
-  "dollar",
-  "percent",
-  "ampersand",
-  "quotesingle",
-  "parenleft",
-  "parenright",
-  "asterisk",
-  "plus",
-  "comma",
-  "hyphen",
-  "period",
-  "slash",
-  "zero",
-  "one",
-  "two",
-  "three",
-  "four",
-  "five",
-  "six",
-  "seven",
-  "eight",
-  "nine",
-  "colon",
-  "semicolon",
-  "less",
-  "equal",
-  "greater",
-  "question",
-  "at",
-  "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",
-  "bracketleft",
-  "backslash",
-  "bracketright",
-  "asciicircum",
-  "underscore",
-  "grave",
-  "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",
-  "braceleft",
-  "bar",
-  "braceright",
-  "asciitilde",
-  NULL,
-  "Adieresis",
-  "Aring",
-  "Ccedilla",
-  "Eacute",
-  "Ntilde",
-  "Odieresis",
-  "Udieresis",
-  "aacute",
-  "agrave",
-  "acircumflex",
-  "adieresis",
-  "atilde",
-  "aring",
-  "ccedilla",
-  "eacute",
-  "egrave",
-  "ecircumflex",
-  "edieresis",
-  "iacute",
-  "igrave",
-  "icircumflex",
-  "idieresis",
-  "ntilde",
-  "oacute",
-  "ograve",
-  "ocircumflex",
-  "odieresis",
-  "otilde",
-  "uacute",
-  "ugrave",
-  "ucircumflex",
-  "udieresis",
-  "dagger",
-  "degree",
-  "cent",
-  "sterling",
-  "section",
-  "bullet",
-  "paragraph",
-  "germandbls",
-  "registered",
-  "copyright",
-  "trademark",
-  "acute",
-  "dieresis",
-  NULL,
-  "AE",
-  "Oslash",
-  NULL,
-  "plusminus",
-  NULL,
-  NULL,
-  "yen",
-  "mu",
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "ordfeminine",
-  "ordmasculine",
-  NULL,
-  "ae",
-  "oslash",
-  "questiondown",
-  "exclamdown",
-  "logicalnot",
-  NULL,
-  "florin",
-  NULL,
-  NULL,
-  "guillemotleft",
-  "guillemotright",
-  "ellipsis",
-  "space",
-  "Agrave",
-  "Atilde",
-  "Otilde",
-  "OE",
-  "oe",
-  "endash",
-  "emdash",
-  "quotedblleft",
-  "quotedblright",
-  "quoteleft",
-  "quoteright",
-  "divide",
-  NULL,
-  "ydieresis",
-  "Ydieresis",
-  "fraction",
-  "currency",
-  "guilsinglleft",
-  "guilsinglright",
-  "fi",
-  "fl",
-  "daggerdbl",
-  "periodcentered",
-  "quotesinglbase",
-  "quotedblbase",
-  "perthousand",
-  "Acircumflex",
-  "Ecircumflex",
-  "Aacute",
-  "Edieresis",
-  "Egrave",
-  "Iacute",
-  "Icircumflex",
-  "Idieresis",
-  "Igrave",
-  "Oacute",
-  "Ocircumflex",
-  NULL,
-  "Ograve",
-  "Uacute",
-  "Ucircumflex",
-  "Ugrave",
-  "dotlessi",
-  "circumflex",
-  "tilde",
-  "macron",
-  "breve",
-  "dotaccent",
-  "ring",
-  "cedilla",
-  "hungarumlaut",
-  "ogonek",
-  "caron"
-};
-static FontEncoding macRomanEncoding(macRomanEncodingNames,
-                                     macRomanEncodingSize);
-
-#define winAnsiEncodingSize 256
-static char *winAnsiEncodingNames[winAnsiEncodingSize] = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  "space",
-  "exclam",
-  "quotedbl",
-  "numbersign",
-  "dollar",
-  "percent",
-  "ampersand",
-  "quotesingle",
-  "parenleft",
-  "parenright",
-  "asterisk",
-  "plus",
-  "comma",
-  "hyphen",
-  "period",
-  "slash",
-  "zero",
-  "one",
-  "two",
-  "three",
-  "four",
-  "five",
-  "six",
-  "seven",
-  "eight",
-  "nine",
-  "colon",
-  "semicolon",
-  "less",
-  "equal",
-  "greater",
-  "question",
-  "at",
-  "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",
-  "bracketleft",
-  "backslash",
-  "bracketright",
-  "asciicircum",
-  "underscore",
-  "grave",
-  "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",
-  "braceleft",
-  "bar",
-  "braceright",
-  "asciitilde",
-  "bullet",
-  "bullet",
-  "bullet",
-  "quotesinglbase",
-  "florin",
-  "quotedblbase",
-  "ellipsis",
-  "dagger",
-  "daggerdbl",
-  "circumflex",
-  "perthousand",
-  "Scaron",
-  "guilsinglleft",
-  "OE",
-  "bullet",
-  "bullet",
-  "bullet",
-  "bullet",
-  "quoteleft",
-  "quoteright",
-  "quotedblleft",
-  "quotedblright",
-  "bullet",
-  "endash",
-  "emdash",
-  "tilde",
-  "trademark",
-  "scaron",
-  "guilsinglright",
-  "oe",
-  "bullet",
-  "bullet",
-  "Ydieresis",
-  "space",
-  "exclamdown",
-  "cent",
-  "sterling",
-  "currency",
-  "yen",
-  "brokenbar",
-  "section",
-  "dieresis",
-  "copyright",
-  "ordfeminine",
-  "guillemotleft",
-  "logicalnot",
-  "hyphen",
-  "registered",
-  "macron",
-  "degree",
-  "plusminus",
-  "twosuperior",
-  "threesuperior",
-  "acute",
-  "mu",
-  "paragraph",
-  "periodcentered",
-  "cedilla",
-  "onesuperior",
-  "ordmasculine",
-  "guillemotright",
-  "onequarter",
-  "onehalf",
-  "threequarters",
-  "questiondown",
-  "Agrave",
-  "Aacute",
-  "Acircumflex",
-  "Atilde",
-  "Adieresis",
-  "Aring",
-  "AE",
-  "Ccedilla",
-  "Egrave",
-  "Eacute",
-  "Ecircumflex",
-  "Edieresis",
-  "Igrave",
-  "Iacute",
-  "Icircumflex",
-  "Idieresis",
-  "Eth",
-  "Ntilde",
-  "Ograve",
-  "Oacute",
-  "Ocircumflex",
-  "Otilde",
-  "Odieresis",
-  "multiply",
-  "Oslash",
-  "Ugrave",
-  "Uacute",
-  "Ucircumflex",
-  "Udieresis",
-  "Yacute",
-  "Thorn",
-  "germandbls",
-  "agrave",
-  "aacute",
-  "acircumflex",
-  "atilde",
-  "adieresis",
-  "aring",
-  "ae",
-  "ccedilla",
-  "egrave",
-  "eacute",
-  "ecircumflex",
-  "edieresis",
-  "igrave",
-  "iacute",
-  "icircumflex",
-  "idieresis",
-  "eth",
-  "ntilde",
-  "ograve",
-  "oacute",
-  "ocircumflex",
-  "otilde",
-  "odieresis",
-  "divide",
-  "oslash",
-  "ugrave",
-  "uacute",
-  "ucircumflex",
-  "udieresis",
-  "yacute",
-  "thorn",
-  "ydieresis"
-};
-static FontEncoding winAnsiEncoding(winAnsiEncodingNames,
-                                    winAnsiEncodingSize);
-
-//------------------------------------------------------------------------
-// Character widths for built-in fonts.
-//------------------------------------------------------------------------
-
-static Gushort courierWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-     0,  600,  600,  600,  600,    0,  600,  600,
-   600,  600,  600,  600,  600,  600,    0,  600,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,    0,  600,  600,    0,  600,  600,  600,
-   600,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,    0,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-     0,  600,    0,    0,    0,  600,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600
-};
-
-static Gushort courierBoldWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-     0,  600,  600,  600,  600,    0,  600,  600,
-   600,  600,  600,  600,  600,  600,    0,  600,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,    0,  600,  600,    0,  600,  600,  600,
-   600,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,    0,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-     0,  600,    0,    0,    0,  600,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600
-};
-
-static Gushort courierBoldObliqueWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-     0,  600,  600,  600,  600,    0,  600,  600,
-   600,  600,  600,  600,  600,  600,    0,  600,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,    0,  600,  600,    0,  600,  600,  600,
-   600,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,    0,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-     0,  600,    0,    0,    0,  600,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600
-};
-
-static Gushort courierObliqueWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-     0,  600,  600,  600,  600,    0,  600,  600,
-   600,  600,  600,  600,  600,  600,    0,  600,
-     0,  600,  600,  600,  600,  600,  600,  600,
-   600,    0,  600,  600,    0,  600,  600,  600,
-   600,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  600,    0,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-     0,  600,    0,    0,    0,  600,    0,    0,
-   600,  600,  600,  600,    0,    0,    0,    0,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600,  600,
-   600,  600,  600,  600,  600,  600,  600
-};
-
-static Gushort helveticaWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   278,  278,  355,  556,  556,  889,  667,  222,
-   333,  333,  389,  584,  278,  333,  278,  278,
-   556,  556,  556,  556,  556,  556,  556,  556,
-   556,  556,  278,  278,  584,  584,  584,  556,
-  1015,  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,  278,  278,  278,  469,  556,
-   222,  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,  334,  260,  334,  584,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  333,  556,  556,  167,  556,  556,  556,
-   556,  191,  333,  556,  333,  333,  500,  500,
-     0,  556,  556,  556,  278,    0,  537,  350,
-   222,  333,  333,  556, 1000, 1000,    0,  611,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0, 1000,    0,  370,    0,    0,    0,    0,
-   556,  778, 1000,  365,    0,    0,    0,    0,
-     0,  889,    0,    0,    0,  278,    0,    0,
-   222,  611,  944,  611,    0,    0,    0,    0,
-   667,  667,  667,  667,  667,  667,  722,  667,
-   667,  667,  667,  722,  278,  278,  278,  278,
-   722,  778,  778,  778,  778,  778,  667,  667,
-   722,  722,  722,  722,  667,  667,  611,  556,
-   556,  556,  556,  556,  556,  260,  500,  737,
-   400,  584,  556,  556,  556,  556,  556,  278,
-   278,  278,  278,  584,  584,  556,  584,  556,
-   556,  556,  556,  556,  834,  834,  333,  556,
-   584,  737,  500,  556,  834,  333, 1000,  333,
-   556,  556,  556,  556,  500,  500,  500
-};
-
-static Gushort helveticaBoldWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   278,  333,  474,  556,  556,  889,  722,  278,
-   333,  333,  389,  584,  278,  333,  278,  278,
-   556,  556,  556,  556,  556,  556,  556,  556,
-   556,  556,  333,  333,  584,  584,  584,  611,
-   975,  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,  333,  278,  333,  584,  556,
-   278,  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,  389,  280,  389,  584,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  333,  556,  556,  167,  556,  556,  556,
-   556,  238,  500,  556,  333,  333,  611,  611,
-     0,  556,  556,  556,  278,    0,  556,  350,
-   278,  500,  500,  556, 1000, 1000,    0,  611,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0, 1000,    0,  370,    0,    0,    0,    0,
-   611,  778, 1000,  365,    0,    0,    0,    0,
-     0,  889,    0,    0,    0,  278,    0,    0,
-   278,  611,  944,  611,    0,    0,    0,    0,
-   722,  722,  722,  722,  722,  722,  722,  667,
-   667,  667,  667,  722,  278,  278,  278,  278,
-   722,  778,  778,  778,  778,  778,  667,  667,
-   722,  722,  722,  722,  667,  667,  611,  556,
-   556,  556,  556,  556,  556,  280,  556,  737,
-   400,  584,  556,  556,  556,  556,  611,  278,
-   278,  278,  278,  584,  584,  611,  584,  611,
-   611,  611,  611,  611,  834,  834,  333,  611,
-   584,  737,  556,  611,  834,  333, 1000,  333,
-   611,  611,  611,  611,  556,  556,  500
-};
-
-static Gushort helveticaBoldObliqueWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   278,  333,  474,  556,  556,  889,  722,  278,
-   333,  333,  389,  584,  278,  333,  278,  278,
-   556,  556,  556,  556,  556,  556,  556,  556,
-   556,  556,  333,  333,  584,  584,  584,  611,
-   975,  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,  333,  278,  333,  584,  556,
-   278,  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,  389,  280,  389,  584,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  333,  556,  556,  167,  556,  556,  556,
-   556,  238,  500,  556,  333,  333,  611,  611,
-     0,  556,  556,  556,  278,    0,  556,  350,
-   278,  500,  500,  556, 1000, 1000,    0,  611,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0, 1000,    0,  370,    0,    0,    0,    0,
-   611,  778, 1000,  365,    0,    0,    0,    0,
-     0,  889,    0,    0,    0,  278,    0,    0,
-   278,  611,  944,  611,    0,    0,    0,    0,
-   722,  722,  722,  722,  722,  722,  722,  667,
-   667,  667,  667,  722,  278,  278,  278,  278,
-   722,  778,  778,  778,  778,  778,  667,  667,
-   722,  722,  722,  722,  667,  667,  611,  556,
-   556,  556,  556,  556,  556,  280,  556,  737,
-   400,  584,  556,  556,  556,  556,  611,  278,
-   278,  278,  278,  584,  584,  611,  584,  611,
-   611,  611,  611,  611,  834,  834,  333,  611,
-   584,  737,  556,  611,  834,  333, 1000,  333,
-   611,  611,  611,  611,  556,  556,  500
-};
-
-static Gushort helveticaObliqueWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   278,  278,  355,  556,  556,  889,  667,  222,
-   333,  333,  389,  584,  278,  333,  278,  278,
-   556,  556,  556,  556,  556,  556,  556,  556,
-   556,  556,  278,  278,  584,  584,  584,  556,
-  1015,  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,  278,  278,  278,  469,  556,
-   222,  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,  334,  260,  334,  584,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  333,  556,  556,  167,  556,  556,  556,
-   556,  191,  333,  556,  333,  333,  500,  500,
-     0,  556,  556,  556,  278,    0,  537,  350,
-   222,  333,  333,  556, 1000, 1000,    0,  611,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0, 1000,    0,  370,    0,    0,    0,    0,
-   556,  778, 1000,  365,    0,    0,    0,    0,
-     0,  889,    0,    0,    0,  278,    0,    0,
-   222,  611,  944,  611,    0,    0,    0,    0,
-   667,  667,  667,  667,  667,  667,  722,  667,
-   667,  667,  667,  722,  278,  278,  278,  278,
-   722,  778,  778,  778,  778,  778,  667,  667,
-   722,  722,  722,  722,  667,  667,  611,  556,
-   556,  556,  556,  556,  556,  260,  500,  737,
-   400,  584,  556,  556,  556,  556,  556,  278,
-   278,  278,  278,  584,  584,  556,  584,  556,
-   556,  556,  556,  556,  834,  834,  333,  556,
-   584,  737,  500,  556,  834,  333, 1000,  333,
-   556,  556,  556,  556,  500,  500,  500
-};
-
-static Gushort symbolWidths[257] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   250,  333,  713,  500,  549,  833,  778,  439,
-   333,  333,  500,  549,  250,  549,  250,  278,
-   500,  500,  500,  500,  500,  500,  500,  500,
-   500,  500,  278,  278,  549,  549,  549,  444,
-   549,  722,  667,  722,  612,  611,  763,  603,
-   722,  333,  631,  722,  686,  889,  722,  722,
-   768,  741,  556,  592,  611,  690,  439,  768,
-   645,  795,  611,  333,  863,  333,  658,  500,
-   500,  631,  549,  549,  494,  439,  521,  411,
-   603,  329,  603,  549,  549,  576,  521,  549,
-   549,  521,  549,  603,  439,  576,  713,  686,
-   493,  686,  494,  480,  200,  480,  549,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  620,  247,  549,  167,  713,  500,  753,
-   753,  753,  753, 1042,  987,  603,  987,  603,
-   400,  549,  411,  549,  549,  713,  494,  460,
-   549,  549,  549,  549, 1000,  603, 1000,  658,
-   823,  686,  795,  987,  768,  768,  823,  768,
-   768,  713,  713,  713,  713,  713,  713,  713,
-   768,  713,  790,  790,  890,  823,  549,  250,
-   713,  603,  603, 1042,  987,  603,  987,  603,
-   494,  329,  790,  790,  786,  713,  384,  384,
-   384,  384,  384,  384,  494,  494,  494,  494,
-     0,  329,  274,  686,  686,  686,  384,  384,
-   384,  384,  384,  384,  494,  494,  494,    0,
-   790
-};
-
-static Gushort timesBoldWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   250,  333,  555,  500,  500, 1000,  833,  333,
-   333,  333,  500,  570,  250,  333,  250,  278,
-   500,  500,  500,  500,  500,  500,  500,  500,
-   500,  500,  333,  333,  570,  570,  570,  500,
-   930,  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,  333,  278,  333,  581,  500,
-   333,  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,  394,  220,  394,  520,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  333,  500,  500,  167,  500,  500,  500,
-   500,  278,  500,  500,  333,  333,  556,  556,
-     0,  500,  500,  500,  250,    0,  540,  350,
-   333,  500,  500,  500, 1000, 1000,    0,  500,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0, 1000,    0,  300,    0,    0,    0,    0,
-   667,  778, 1000,  330,    0,    0,    0,    0,
-     0,  722,    0,    0,    0,  278,    0,    0,
-   278,  500,  722,  556,    0,    0,    0,    0,
-   722,  722,  722,  722,  722,  722,  722,  667,
-   667,  667,  667,  722,  389,  389,  389,  389,
-   722,  778,  778,  778,  778,  778,  556,  611,
-   722,  722,  722,  722,  722,  722,  667,  500,
-   500,  500,  500,  500,  500,  220,  444,  747,
-   400,  570,  444,  444,  444,  444,  500,  278,
-   278,  278,  278,  570,  570,  556,  570,  556,
-   500,  500,  500,  500,  750,  750,  300,  500,
-   570,  747,  389,  556,  750,  300, 1000,  300,
-   556,  556,  556,  556,  500,  500,  444
-};
-
-static Gushort timesBoldItalicWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   250,  389,  555,  500,  500,  833,  778,  333,
-   333,  333,  500,  570,  250,  333,  250,  278,
-   500,  500,  500,  500,  500,  500,  500,  500,
-   500,  500,  333,  333,  570,  570,  570,  500,
-   832,  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,  333,  278,  333,  570,  500,
-   333,  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,  348,  220,  348,  570,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  389,  500,  500,  167,  500,  500,  500,
-   500,  278,  500,  500,  333,  333,  556,  556,
-     0,  500,  500,  500,  250,    0,  500,  350,
-   333,  500,  500,  500, 1000, 1000,    0,  500,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  944,    0,  266,    0,    0,    0,    0,
-   611,  722,  944,  300,    0,    0,    0,    0,
-     0,  722,    0,    0,    0,  278,    0,    0,
-   278,  500,  722,  500,    0,    0,    0,    0,
-   667,  667,  667,  667,  667,  667,  667,  667,
-   667,  667,  667,  722,  389,  389,  389,  389,
-   722,  722,  722,  722,  722,  722,  556,  611,
-   722,  722,  722,  722,  611,  611,  611,  500,
-   500,  500,  500,  500,  500,  220,  444,  747,
-   400,  570,  444,  444,  444,  444,  500,  278,
-   278,  278,  278,  606,  606,  576,  570,  556,
-   500,  500,  500,  500,  750,  750,  300,  500,
-   570,  747,  389,  500,  750,  300, 1000,  300,
-   556,  556,  556,  556,  444,  444,  389
-};
-
-static Gushort timesItalicWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   250,  333,  420,  500,  500,  833,  778,  333,
-   333,  333,  500,  675,  250,  333,  250,  278,
-   500,  500,  500,  500,  500,  500,  500,  500,
-   500,  500,  333,  333,  675,  675,  675,  500,
-   920,  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,  389,  278,  389,  422,  500,
-   333,  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,  400,  275,  400,  541,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  389,  500,  500,  167,  500,  500,  500,
-   500,  214,  556,  500,  333,  333,  500,  500,
-     0,  500,  500,  500,  250,    0,  523,  350,
-   333,  556,  556,  500,  889, 1000,    0,  500,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-   889,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  889,    0,  276,    0,    0,    0,    0,
-   556,  722,  944,  310,    0,    0,    0,    0,
-     0,  667,    0,    0,    0,  278,    0,    0,
-   278,  500,  667,  500,    0,    0,    0,    0,
-   611,  611,  611,  611,  611,  611,  667,  611,
-   611,  611,  611,  722,  333,  333,  333,  333,
-   667,  722,  722,  722,  722,  722,  500,  611,
-   722,  722,  722,  722,  556,  556,  556,  500,
-   500,  500,  500,  500,  500,  275,  444,  760,
-   400,  675,  444,  444,  444,  444,  500,  278,
-   278,  278,  278,  675,  675,  500,  675,  500,
-   500,  500,  500,  500,  750,  750,  300,  500,
-   675,  760,  389,  500,  750,  300,  980,  300,
-   500,  500,  500,  500,  444,  444,  389
-};
-
-static Gushort timesRomanWidths[335] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   250,  333,  408,  500,  500,  833,  778,  333,
-   333,  333,  500,  564,  250,  333,  250,  278,
-   500,  500,  500,  500,  500,  500,  500,  500,
-   500,  500,  278,  278,  564,  564,  564,  444,
-   921,  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,  333,  278,  333,  469,  500,
-   333,  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,  480,  200,  480,  541,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  333,  500,  500,  167,  500,  500,  500,
-   500,  180,  444,  500,  333,  333,  556,  556,
-     0,  500,  500,  500,  250,    0,  453,  350,
-   333,  444,  444,  500, 1000, 1000,    0,  444,
-     0,  333,  333,  333,  333,  333,  333,  333,
-   333,    0,  333,  333,    0,  333,  333,  333,
-  1000,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  889,    0,  276,    0,    0,    0,    0,
-   611,  722,  889,  310,    0,    0,    0,    0,
-     0,  667,    0,    0,    0,  278,    0,    0,
-   278,  500,  722,  500,    0,    0,    0,    0,
-   722,  722,  722,  722,  722,  722,  667,  611,
-   611,  611,  611,  722,  333,  333,  333,  333,
-   722,  722,  722,  722,  722,  722,  556,  556,
-   722,  722,  722,  722,  722,  722,  611,  444,
-   444,  444,  444,  444,  444,  200,  444,  760,
-   400,  564,  444,  444,  444,  444,  500,  278,
-   278,  278,  278,  564,  564,  500,  564,  500,
-   500,  500,  500,  500,  750,  750,  300,  500,
-   564,  760,  389,  500,  750,  300,  980,  300,
-   500,  500,  500,  500,  500,  500,  444
-};
-
-static Gushort zapfDingbatsWidths[270] = {
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-   278,  974,  961,  974,  980,  719,  789,  790,
-   791,  690,  960,  939,  549,  855,  911,  933,
-   911,  945,  974,  755,  846,  762,  761,  571,
-   677,  763,  760,  759,  754,  494,  552,  537,
-   577,  692,  786,  788,  788,  790,  793,  794,
-   816,  823,  789,  841,  823,  833,  816,  831,
-   923,  744,  723,  749,  790,  792,  695,  776,
-   768,  792,  759,  707,  708,  682,  701,  826,
-   815,  789,  789,  707,  687,  696,  689,  786,
-   787,  713,  791,  785,  791,  873,  761,  762,
-   762,  759,  759,  892,  892,  788,  784,  438,
-   138,  277,  415,  392,  392,  668,  668,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,    0,    0,    0,    0,    0,    0,    0,
-     0,  732,  544,  544,  910,  667,  760,  760,
-   776,  595,  694,  626,  788,  788,  788,  788,
-   788,  788,  788,  788,  788,  788,  788,  788,
-   788,  788,  788,  788,  788,  788,  788,  788,
-   788,  788,  788,  788,  788,  788,  788,  788,
-   788,  788,  788,  788,  788,  788,  788,  788,
-   788,  788,  788,  788,  894,  838, 1016,  458,
-   748,  924,  748,  918,  927,  928,  928,  834,
-   873,  828,  924,  924,  917,  930,  931,  463,
-   883,  836,  836,  867,  867,  696,  696,  874,
-     0,  874,  760,  946,  771,  865,  771,  888,
-   967,  888,  831,  873,  927,  970,  918,    0,
-   509,  410,  509,  410,  234,  234,  390,  390,
-   276,  276,  317,  317,  334,  334
-};
-
-//------------------------------------------------------------------------
-// Built-in font table.
-//------------------------------------------------------------------------
-
-struct BuiltinFont {
-  char *name;
-  Gushort *widths;
-  FontEncoding *encoding;
-};
-
-#define numBuiltinFonts ((int)(sizeof(builtinFonts)/sizeof(BuiltinFont)))
-
-static BuiltinFont builtinFonts[] = {
-  {"Courier",               courierWidths,              &standardEncoding},
-  {"Courier-Bold",          courierBoldWidths,          &standardEncoding},
-  {"Courier-BoldOblique",   courierBoldObliqueWidths,   &standardEncoding},
-  {"Courier-Oblique",       courierObliqueWidths,       &standardEncoding},
-  {"Helvetica",             helveticaWidths,            &standardEncoding},
-  {"Helvetica-Bold",        helveticaBoldWidths,        &standardEncoding},
-  {"Helvetica-BoldOblique", helveticaBoldObliqueWidths, &standardEncoding},
-  {"Helvetica-Oblique",     helveticaObliqueWidths,     &standardEncoding},
-  {"Symbol",                symbolWidths,               &symbolEncoding},
-  {"Times-Bold",            timesBoldWidths,            &standardEncoding},
-  {"Times-BoldItalic",      timesBoldItalicWidths,      &standardEncoding},
-  {"Times-Italic",          timesItalicWidths,          &standardEncoding},
-  {"Times-Roman",           timesRomanWidths,           &standardEncoding},
-  {"ZapfDingbats",          zapfDingbatsWidths,         &zapfDingbatsEncoding}
-};
-
-#endif
diff --git a/pdf/xpdf/Function.cc b/pdf/xpdf/Function.cc
new file mode 100644 (file)
index 0000000..64ea60c
--- /dev/null
@@ -0,0 +1,1520 @@
+//========================================================================
+//
+// Function.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <math.h>
+#include "gmem.h"
+#include "Object.h"
+#include "Dict.h"
+#include "Stream.h"
+#include "Error.h"
+#include "Function.h"
+
+//------------------------------------------------------------------------
+// Function
+//------------------------------------------------------------------------
+
+Function::Function() {
+}
+
+Function::~Function() {
+}
+
+Function *Function::parse(Object *funcObj) {
+  Function *func;
+  Dict *dict;
+  int funcType;
+  Object obj1;
+
+  if (funcObj->isStream()) {
+    dict = funcObj->streamGetDict();
+  } else if (funcObj->isDict()) {
+    dict = funcObj->getDict();
+  } else if (funcObj->isName("Identity")) {
+    return new IdentityFunction();
+  } else {
+    error(-1, "Expected function dictionary or stream");
+    return NULL;
+  }
+
+  if (!dict->lookup("FunctionType", &obj1)->isInt()) {
+    error(-1, "Function type is missing or wrong type");
+    obj1.free();
+    return NULL;
+  }
+  funcType = obj1.getInt();
+  obj1.free();
+
+  if (funcType == 0) {
+    func = new SampledFunction(funcObj, dict);
+  } else if (funcType == 2) {
+    func = new ExponentialFunction(funcObj, dict);
+  } else if (funcType == 3) {
+    func = new StitchingFunction(funcObj, dict);
+  } else if (funcType == 4) {
+    func = new PostScriptFunction(funcObj, dict);
+  } else {
+    error(-1, "Unimplemented function type (%d)", funcType);
+    return NULL;
+  }
+  if (!func->isOk()) {
+    delete func;
+    return NULL;
+  }
+
+  return func;
+}
+
+GBool Function::init(Dict *dict) {
+  Object obj1, obj2;
+  int i;
+
+  //----- Domain
+  if (!dict->lookup("Domain", &obj1)->isArray()) {
+    error(-1, "Function is missing domain");
+    goto err2;
+  }
+  m = obj1.arrayGetLength() / 2;
+  if (m > funcMaxInputs) {
+    error(-1, "Functions with more than %d inputs are unsupported",
+         funcMaxInputs);
+    goto err2;
+  }
+  for (i = 0; i < m; ++i) {
+    obj1.arrayGet(2*i, &obj2);
+    if (!obj2.isNum()) {
+      error(-1, "Illegal value in function domain array");
+      goto err1;
+    }
+    domain[i][0] = obj2.getNum();
+    obj2.free();
+    obj1.arrayGet(2*i+1, &obj2);
+    if (!obj2.isNum()) {
+      error(-1, "Illegal value in function domain array");
+      goto err1;
+    }
+    domain[i][1] = obj2.getNum();
+    obj2.free();
+  }
+  obj1.free();
+
+  //----- Range
+  hasRange = gFalse;
+  n = 0;
+  if (dict->lookup("Range", &obj1)->isArray()) {
+    hasRange = gTrue;
+    n = obj1.arrayGetLength() / 2;
+    if (n > funcMaxOutputs) {
+      error(-1, "Functions with more than %d outputs are unsupported",
+           funcMaxOutputs);
+      goto err2;
+    }
+    for (i = 0; i < n; ++i) {
+      obj1.arrayGet(2*i, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function range array");
+       goto err1;
+      }
+      range[i][0] = obj2.getNum();
+      obj2.free();
+      obj1.arrayGet(2*i+1, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function range array");
+       goto err1;
+      }
+      range[i][1] = obj2.getNum();
+      obj2.free();
+    }
+  }
+  obj1.free();
+
+  return gTrue;
+
+ err1:
+  obj2.free();
+ err2:
+  obj1.free();
+  return gFalse;
+}
+
+//------------------------------------------------------------------------
+// IdentityFunction
+//------------------------------------------------------------------------
+
+IdentityFunction::IdentityFunction() {
+  int i;
+
+  // fill these in with arbitrary values just in case they get used
+  // somewhere
+  m = funcMaxInputs;
+  n = funcMaxOutputs;
+  for (i = 0; i < funcMaxInputs; ++i) {
+    domain[i][0] = 0;
+    domain[i][1] = 1;
+  }
+  hasRange = gFalse;
+}
+
+IdentityFunction::~IdentityFunction() {
+}
+
+void IdentityFunction::transform(double *in, double *out) {
+  int i;
+
+  for (i = 0; i < funcMaxOutputs; ++i) {
+    out[i] = in[i];
+  }
+}
+
+//------------------------------------------------------------------------
+// SampledFunction
+//------------------------------------------------------------------------
+
+SampledFunction::SampledFunction(Object *funcObj, Dict *dict) {
+  Stream *str;
+  int nSamples, sampleBits;
+  double sampleMul;
+  Object obj1, obj2;
+  Guint buf, bitMask;
+  int bits;
+  int s;
+  int i;
+
+  samples = NULL;
+  ok = gFalse;
+
+  //----- initialize the generic stuff
+  if (!init(dict)) {
+    goto err1;
+  }
+  if (!hasRange) {
+    error(-1, "Type 0 function is missing range");
+    goto err1;
+  }
+
+  //----- get the stream
+  if (!funcObj->isStream()) {
+    error(-1, "Type 0 function isn't a stream");
+    goto err1;
+  }
+  str = funcObj->getStream();
+
+  //----- Size
+  if (!dict->lookup("Size", &obj1)->isArray() ||
+      obj1.arrayGetLength() != m) {
+    error(-1, "Function has missing or invalid size array");
+    goto err2;
+  }
+  for (i = 0; i < m; ++i) {
+    obj1.arrayGet(i, &obj2);
+    if (!obj2.isInt()) {
+      error(-1, "Illegal value in function size array");
+      goto err3;
+    }
+    sampleSize[i] = obj2.getInt();
+    obj2.free();
+  }
+  obj1.free();
+
+  //----- BitsPerSample
+  if (!dict->lookup("BitsPerSample", &obj1)->isInt()) {
+    error(-1, "Function has missing or invalid BitsPerSample");
+    goto err2;
+  }
+  sampleBits = obj1.getInt();
+  sampleMul = 1.0 / (double)((1 << sampleBits) - 1);
+  obj1.free();
+
+  //----- Encode
+  if (dict->lookup("Encode", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2*m) {
+    for (i = 0; i < m; ++i) {
+      obj1.arrayGet(2*i, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function encode array");
+       goto err3;
+      }
+      encode[i][0] = obj2.getNum();
+      obj2.free();
+      obj1.arrayGet(2*i+1, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function encode array");
+       goto err3;
+      }
+      encode[i][1] = obj2.getNum();
+      obj2.free();
+    }
+  } else {
+    for (i = 0; i < m; ++i) {
+      encode[i][0] = 0;
+      encode[i][1] = sampleSize[i] - 1;
+    }
+  }
+  obj1.free();
+
+  //----- Decode
+  if (dict->lookup("Decode", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2*n) {
+    for (i = 0; i < n; ++i) {
+      obj1.arrayGet(2*i, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function decode array");
+       goto err3;
+      }
+      decode[i][0] = obj2.getNum();
+      obj2.free();
+      obj1.arrayGet(2*i+1, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function decode array");
+       goto err3;
+      }
+      decode[i][1] = obj2.getNum();
+      obj2.free();
+    }
+  } else {
+    for (i = 0; i < n; ++i) {
+      decode[i][0] = range[i][0];
+      decode[i][1] = range[i][1];
+    }
+  }
+  obj1.free();
+
+  //----- samples
+  nSamples = n;
+  for (i = 0; i < m; ++i)
+    nSamples *= sampleSize[i];
+  samples = (double *)gmalloc(nSamples * sizeof(double));
+  buf = 0;
+  bits = 0;
+  bitMask = (1 << sampleBits) - 1;
+  str->reset();
+  for (i = 0; i < nSamples; ++i) {
+    if (sampleBits == 8) {
+      s = str->getChar();
+    } else if (sampleBits == 16) {
+      s = str->getChar();
+      s = (s << 8) + str->getChar();
+    } else if (sampleBits == 32) {
+      s = str->getChar();
+      s = (s << 8) + str->getChar();
+      s = (s << 8) + str->getChar();
+      s = (s << 8) + str->getChar();
+    } else {
+      while (bits < sampleBits) {
+       buf = (buf << 8) | (str->getChar() & 0xff);
+       bits += 8;
+      }
+      s = (buf >> (bits - sampleBits)) & bitMask;
+      bits -= sampleBits;
+    }
+    samples[i] = (double)s * sampleMul;
+  }
+  str->close();
+
+  ok = gTrue;
+  return;
+
+ err3:
+  obj2.free();
+ err2:
+  obj1.free();
+ err1:
+  return;
+}
+
+SampledFunction::~SampledFunction() {
+  if (samples) {
+    gfree(samples);
+  }
+}
+
+SampledFunction::SampledFunction(SampledFunction *func) {
+  int nSamples, i;
+
+  memcpy(this, func, sizeof(SampledFunction));
+
+  nSamples = n;
+  for (i = 0; i < m; ++i) {
+    nSamples *= sampleSize[i];
+  }
+  samples = (double *)gmalloc(nSamples * sizeof(double));
+  memcpy(samples, func->samples, nSamples * sizeof(double));
+}
+
+void SampledFunction::transform(double *in, double *out) {
+  double x;
+  int e[2][funcMaxInputs];
+  double efrac[funcMaxInputs];
+  double s0[1 << funcMaxInputs], s1[1 << funcMaxInputs];
+  int i, j, k, idx;
+
+  // map input values into sample array
+  for (i = 0; i < m; ++i) {
+    x = ((in[i] - domain[i][0]) / (domain[i][1] - domain[i][0])) *
+        (encode[i][1] - encode[i][0]) + encode[i][0];
+    if (x < 0) {
+      x = 0;
+    } else if (x > sampleSize[i] - 1) {
+      x = sampleSize[i] - 1;
+    }
+    e[0][i] = (int)floor(x);
+    e[1][i] = (int)ceil(x);
+    efrac[i] = x - e[0][i];
+  }
+
+  // for each output, do m-linear interpolation
+  for (i = 0; i < n; ++i) {
+
+    // pull 2^m values out of the sample array
+    for (j = 0; j < (1<<m); ++j) {
+      idx = e[j & 1][m - 1];
+      for (k = m - 2; k >= 0; --k) {
+       idx = idx * sampleSize[k] + e[(j >> k) & 1][k];
+      }
+      idx = idx * n + i;
+      s0[j] = samples[idx];
+    }
+
+    // do m sets of interpolations
+    for (j = 0; j < m; ++j) {
+      for (k = 0; k < (1 << (m - j)); k += 2) {
+       s1[k >> 1] = (1 - efrac[j]) * s0[k] + efrac[j] * s0[k+1];
+      }
+      memcpy(s0, s1, (1 << (m - j - 1)) * sizeof(double));
+    }
+
+    // map output value to range
+    out[i] = s0[0] * (decode[i][1] - decode[i][0]) + decode[i][0];
+    if (out[i] < range[i][0]) {
+      out[i] = range[i][0];
+    } else if (out[i] > range[i][1]) {
+      out[i] = range[i][1];
+    }
+  }
+}
+
+//------------------------------------------------------------------------
+// ExponentialFunction
+//------------------------------------------------------------------------
+
+ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) {
+  Object obj1, obj2;
+  GBool hasN;
+  int i;
+
+  ok = gFalse;
+
+  //----- initialize the generic stuff
+  if (!init(dict)) {
+    goto err1;
+  }
+  if (m != 1) {
+    error(-1, "Exponential function with more than one input");
+    goto err1;
+  }
+  hasN = hasRange;
+
+  //----- default values
+  for (i = 0; i < funcMaxOutputs; ++i) {
+    c0[i] = 0;
+    c1[i] = 1;
+  }
+
+  //----- C0
+  if (dict->lookup("C0", &obj1)->isArray()) {
+    if (!hasN) {
+      n = obj1.arrayGetLength();
+      hasN = gTrue;
+    } else if (obj1.arrayGetLength() != n) {
+      error(-1, "Function's C0 array is wrong length");
+      goto err2;
+    }
+    for (i = 0; i < n; ++i) {
+      obj1.arrayGet(i, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function C0 array");
+       goto err3;
+      }
+      c0[i] = obj2.getNum();
+      obj2.free();
+    }
+  }
+  obj1.free();
+
+  //----- C1
+  if (dict->lookup("C1", &obj1)->isArray()) {
+    if (!hasN) {
+      n = obj1.arrayGetLength();
+      hasN = gTrue;
+    } else if (obj1.arrayGetLength() != n) {
+      error(-1, "Function's C1 array is wrong length");
+      goto err2;
+    }
+    for (i = 0; i < n; ++i) {
+      obj1.arrayGet(i, &obj2);
+      if (!obj2.isNum()) {
+       error(-1, "Illegal value in function C1 array");
+       goto err3;
+      }
+      c1[i] = obj2.getNum();
+      obj2.free();
+    }
+  }
+  obj1.free();
+
+  //----- N (exponent)
+  if (!dict->lookup("N", &obj1)->isNum()) {
+    error(-1, "Function has missing or invalid N");
+    goto err2;
+  }
+  e = obj1.getNum();
+  obj1.free();
+
+  // this isn't supposed to happen, but I've run into (broken) PDF
+  // files where it does
+  if (!hasN) {
+    error(-1, "Exponential function does not define number of output values");
+    n = 1;
+  }
+
+  ok = gTrue;
+  return;
+
+ err3:
+  obj2.free();
+ err2:
+  obj1.free();
+ err1:
+  return;
+}
+
+ExponentialFunction::~ExponentialFunction() {
+}
+
+ExponentialFunction::ExponentialFunction(ExponentialFunction *func) {
+  memcpy(this, func, sizeof(ExponentialFunction));
+}
+
+void ExponentialFunction::transform(double *in, double *out) {
+  double x;
+  int i;
+
+  if (in[0] < domain[0][0]) {
+    x = domain[0][0];
+  } else if (in[0] > domain[0][1]) {
+    x = domain[0][1];
+  } else {
+    x = in[0];
+  }
+  for (i = 0; i < n; ++i) {
+    out[i] = c0[i] + pow(x, e) * (c1[i] - c0[i]);
+    if (hasRange) {
+      if (out[i] < range[i][0]) {
+       out[i] = range[i][0];
+      } else if (out[i] > range[i][1]) {
+       out[i] = range[i][1];
+      }
+    }
+  }
+  return;
+}
+
+//------------------------------------------------------------------------
+// StitchingFunction
+//------------------------------------------------------------------------
+
+StitchingFunction::StitchingFunction(Object *funcObj, Dict *dict) {
+  Object obj1, obj2;
+  int i;
+
+  ok = gFalse;
+  funcs = NULL;
+  bounds = NULL;
+  encode = NULL;
+
+  //----- initialize the generic stuff
+  if (!init(dict)) {
+    goto err1;
+  }
+  if (m != 1) {
+    error(-1, "Stitching function with more than one input");
+    goto err1;
+  }
+
+  //----- Functions
+  if (!dict->lookup("Functions", &obj1)->isArray()) {
+    error(-1, "Missing 'Functions' entry in stitching function");
+    goto err1;
+  }
+  k = obj1.arrayGetLength();
+  funcs = (Function **)gmalloc(k * sizeof(Function *));
+  bounds = (double *)gmalloc((k + 1) * sizeof(double));
+  encode = (double *)gmalloc(2 * k * sizeof(double));
+  for (i = 0; i < k; ++i) {
+    funcs[i] = NULL;
+  }
+  for (i = 0; i < k; ++i) {
+    if (!(funcs[i] = Function::parse(obj1.arrayGet(i, &obj2)))) {
+      goto err2;
+    }
+    if (i > 0 && (funcs[i]->getInputSize() != 1 ||
+                 funcs[i]->getOutputSize() != funcs[0]->getOutputSize())) {
+      error(-1, "Incompatible subfunctions in stitching function");
+      goto err2;
+    }
+    obj2.free();
+  }
+  obj1.free();
+
+  //----- Bounds
+  if (!dict->lookup("Bounds", &obj1)->isArray() ||
+      obj1.arrayGetLength() != k - 1) {
+    error(-1, "Missing or invalid 'Bounds' entry in stitching function");
+    goto err1;
+  }
+  bounds[0] = domain[0][0];
+  for (i = 1; i < k; ++i) {
+    if (!obj1.arrayGet(i - 1, &obj2)->isNum()) {
+      error(-1, "Invalid type in 'Bounds' array in stitching function");
+      goto err2;
+    }
+    bounds[i] = obj2.getNum();
+    obj2.free();
+  }
+  bounds[k] = domain[0][1];
+  obj1.free();
+
+  //----- Encode
+  if (!dict->lookup("Encode", &obj1)->isArray() ||
+      obj1.arrayGetLength() != 2 * k) {
+    error(-1, "Missing or invalid 'Encode' entry in stitching function");
+    goto err1;
+  }
+  for (i = 0; i < 2 * k; ++i) {
+    if (!obj1.arrayGet(i, &obj2)->isNum()) {
+      error(-1, "Invalid type in 'Encode' array in stitching function");
+      goto err2;
+    }
+    encode[i] = obj2.getNum();
+    obj2.free();
+  }
+  obj1.free();
+
+  ok = gTrue;
+  return;
+
+ err2:
+  obj2.free();
+ err1:
+  obj1.free();
+}
+
+StitchingFunction::StitchingFunction(StitchingFunction *func) {
+  k = func->k;
+  funcs = (Function **)gmalloc(k * sizeof(Function *));
+  memcpy(funcs, func->funcs, k * sizeof(Function *));
+  bounds = (double *)gmalloc((k + 1) * sizeof(double));
+  memcpy(bounds, func->bounds, (k + 1) * sizeof(double));
+  encode = (double *)gmalloc(2 * k * sizeof(double));
+  memcpy(encode, func->encode, 2 * k * sizeof(double));
+  ok = gTrue;
+}
+
+StitchingFunction::~StitchingFunction() {
+  int i;
+
+  for (i = 0; i < k; ++i) {
+    if (funcs[i]) {
+      delete funcs[i];
+    }
+  }
+  gfree(funcs);
+  gfree(bounds);
+  gfree(encode);
+}
+
+void StitchingFunction::transform(double *in, double *out) {
+  double x;
+  int i;
+
+  if (in[0] < domain[0][0]) {
+    x = domain[0][0];
+  } else if (in[0] > domain[0][1]) {
+    x = domain[0][1];
+  } else {
+    x = in[0];
+  }
+  for (i = 0; i < k - 1; ++i) {
+    if (x < bounds[i+1]) {
+      break;
+    }
+  }
+  x = encode[2*i] + ((x - bounds[i]) / (bounds[i+1] - bounds[i])) *
+                    (encode[2*i+1] - encode[2*i]);
+  funcs[i]->transform(&x, out);
+}
+
+//------------------------------------------------------------------------
+// PostScriptFunction
+//------------------------------------------------------------------------
+
+enum PSOp {
+  psOpAbs,
+  psOpAdd,
+  psOpAnd,
+  psOpAtan,
+  psOpBitshift,
+  psOpCeiling,
+  psOpCopy,
+  psOpCos,
+  psOpCvi,
+  psOpCvr,
+  psOpDiv,
+  psOpDup,
+  psOpEq,
+  psOpExch,
+  psOpExp,
+  psOpFalse,
+  psOpFloor,
+  psOpGe,
+  psOpGt,
+  psOpIdiv,
+  psOpIndex,
+  psOpLe,
+  psOpLn,
+  psOpLog,
+  psOpLt,
+  psOpMod,
+  psOpMul,
+  psOpNe,
+  psOpNeg,
+  psOpNot,
+  psOpOr,
+  psOpPop,
+  psOpRoll,
+  psOpRound,
+  psOpSin,
+  psOpSqrt,
+  psOpSub,
+  psOpTrue,
+  psOpTruncate,
+  psOpXor,
+  psOpIf,
+  psOpIfelse,
+  psOpReturn
+};
+
+// Note: 'if' and 'ifelse' are parsed separately.
+// The rest are listed here in alphabetical order.
+// The index in this table is equivalent to the entry in PSOp.
+char *psOpNames[] = {
+  "abs",
+  "add",
+  "and",
+  "atan",
+  "bitshift",
+  "ceiling",
+  "copy",
+  "cos",
+  "cvi",
+  "cvr",
+  "div",
+  "dup",
+  "eq",
+  "exch",
+  "exp",
+  "false",
+  "floor",
+  "ge",
+  "gt",
+  "idiv",
+  "index",
+  "le",
+  "ln",
+  "log",
+  "lt",
+  "mod",
+  "mul",
+  "ne",
+  "neg",
+  "not",
+  "or",
+  "pop",
+  "roll",
+  "round",
+  "sin",
+  "sqrt",
+  "sub",
+  "true",
+  "truncate",
+  "xor"
+};
+
+#define nPSOps (sizeof(psOpNames) / sizeof(char *))
+
+enum PSObjectType {
+  psBool,
+  psInt,
+  psReal,
+  psOperator,
+  psBlock
+};
+
+// In the code array, 'if'/'ifelse' operators take up three slots
+// plus space for the code in the subclause(s).
+//
+//         +---------------------------------+
+//         | psOperator: psOpIf / psOpIfelse |
+//         +---------------------------------+
+//         | psBlock: ptr=<A>                |
+//         +---------------------------------+
+//         | psBlock: ptr=<B>                |
+//         +---------------------------------+
+//         | if clause                       |
+//         | ...                             |
+//         | psOperator: psOpReturn          |
+//         +---------------------------------+
+//     <A> | else clause                     |
+//         | ...                             |
+//         | psOperator: psOpReturn          |
+//         +---------------------------------+
+//     <B> | ...                             |
+//
+// For 'if', pointer <A> is present in the code stream but unused.
+
+struct PSObject {
+  PSObjectType type;
+  union {
+    GBool booln;               // boolean (stack only)
+    int intg;                  // integer (stack and code)
+    double real;               // real (stack and code)
+    PSOp op;                   // operator (code only)
+    int blk;                   // if/ifelse block pointer (code only)
+  };
+};
+
+#define psStackSize 100
+
+class PSStack {
+public:
+
+  PSStack() { sp = psStackSize; }
+  void pushBool(GBool booln);
+  void pushInt(int intg);
+  void pushReal(double real);
+  GBool popBool();
+  int popInt();
+  double popNum();
+  GBool empty() { return sp == psStackSize; }
+  GBool topIsInt() { return sp < psStackSize && stack[sp].type == psInt; }
+  GBool topTwoAreInts()
+    { return sp < psStackSize - 1 &&
+            stack[sp].type == psInt &&
+             stack[sp+1].type == psInt; }
+  GBool topIsReal() { return sp < psStackSize && stack[sp].type == psReal; }
+  GBool topTwoAreNums()
+    { return sp < psStackSize - 1 &&
+            (stack[sp].type == psInt || stack[sp].type == psReal) &&
+            (stack[sp+1].type == psInt || stack[sp+1].type == psReal); }
+  void copy(int n);
+  void roll(int n, int j);
+  void index(int i);
+  void pop();
+
+private:
+
+  GBool checkOverflow(int n = 1);
+  GBool checkUnderflow();
+  GBool checkType(PSObjectType t1, PSObjectType t2);
+
+  PSObject stack[psStackSize];
+  int sp;
+};
+
+GBool PSStack::checkOverflow(int n) {
+  if (sp - n < 0) {
+    error(-1, "Stack overflow in PostScript function");
+    return gFalse;
+  }
+  return gTrue;
+}
+
+GBool PSStack::checkUnderflow() {
+  if (sp == psStackSize) {
+    error(-1, "Stack underflow in PostScript function");
+    return gFalse;
+  }
+  return gTrue;
+}
+
+GBool PSStack::checkType(PSObjectType t1, PSObjectType t2) {
+  if (stack[sp].type != t1 && stack[sp].type != t2) {
+    error(-1, "Type mismatch in PostScript function");
+    return gFalse;
+  }
+  return gTrue;
+}
+
+void PSStack::pushBool(GBool booln) {
+  if (checkOverflow()) {
+    stack[--sp].type = psBool;
+    stack[sp].booln = booln;
+  }
+}
+
+void PSStack::pushInt(int intg) {
+  if (checkOverflow()) {
+    stack[--sp].type = psInt;
+    stack[sp].intg = intg;
+  }
+}
+
+void PSStack::pushReal(double real) {
+  if (checkOverflow()) {
+    stack[--sp].type = psReal;
+    stack[sp].real = real;
+  }
+}
+
+GBool PSStack::popBool() {
+  if (checkUnderflow() && checkType(psBool, psBool)) {
+    return stack[sp++].booln;
+  }
+  return gFalse;
+}
+
+int PSStack::popInt() {
+  if (checkUnderflow() && checkType(psInt, psInt)) {
+    return stack[sp++].intg;
+  }
+  return 0;
+}
+
+double PSStack::popNum() {
+  double ret;
+
+  if (checkUnderflow() && checkType(psInt, psReal)) {
+    ret = (stack[sp].type == psInt) ? (double)stack[sp].intg : stack[sp].real;
+    ++sp;
+    return ret;
+  }
+  return 0;
+}
+
+void PSStack::copy(int n) {
+  int i;
+
+  if (!checkOverflow(n)) {
+    return;
+  }
+  for (i = sp + n - 1; i <= sp; ++i) {
+    stack[i - n] = stack[i];
+  }
+  sp -= n;
+}
+
+void PSStack::roll(int n, int j) {
+  PSObject obj;
+  int i, k;
+
+  if (j >= 0) {
+    j %= n;
+  } else {
+    j = -j % n;
+    if (j != 0) {
+      j = n - j;
+    }
+  }
+  if (n <= 0 || j == 0) {
+    return;
+  }
+  for (i = 0; i < j; ++i) {
+    obj = stack[sp];
+    for (k = sp; k < sp + n - 1; ++k) {
+      stack[k] = stack[k+1];
+    }
+    stack[sp + n - 1] = obj;
+  }
+}
+
+void PSStack::index(int i) {
+  if (!checkOverflow()) {
+    return;
+  }
+  --sp;
+  stack[sp] = stack[sp + 1 + i];
+}
+
+void PSStack::pop() {
+  if (!checkUnderflow()) {
+    return;
+  }
+  ++sp;
+}
+
+PostScriptFunction::PostScriptFunction(Object *funcObj, Dict *dict) {
+  Stream *str;
+  int codePtr;
+  GString *tok;
+
+  code = NULL;
+  codeSize = 0;
+  ok = gFalse;
+
+  //----- initialize the generic stuff
+  if (!init(dict)) {
+    goto err1;
+  }
+  if (!hasRange) {
+    error(-1, "Type 4 function is missing range");
+    goto err1;
+  }
+
+  //----- get the stream
+  if (!funcObj->isStream()) {
+    error(-1, "Type 4 function isn't a stream");
+    goto err1;
+  }
+  str = funcObj->getStream();
+
+  //----- parse the function
+  str->reset();
+  if (!(tok = getToken(str)) || tok->cmp("{")) {
+    error(-1, "Expected '{' at start of PostScript function");
+    if (tok) {
+      delete tok;
+    }
+    goto err1;
+  }
+  delete tok;
+  codePtr = 0;
+  if (!parseCode(str, &codePtr)) {
+    goto err2;
+  }
+  str->close();
+
+  ok = gTrue;
+
+ err2:
+  str->close();
+ err1:
+  return;
+}
+
+PostScriptFunction::PostScriptFunction(PostScriptFunction *func) {
+  memcpy(this, func, sizeof(PostScriptFunction));
+  code = (PSObject *)gmalloc(codeSize * sizeof(PSObject));
+  memcpy(code, func->code, codeSize * sizeof(PSObject));
+}
+
+PostScriptFunction::~PostScriptFunction() {
+  gfree(code);
+}
+
+void PostScriptFunction::transform(double *in, double *out) {
+  PSStack *stack;
+  int i;
+
+  stack = new PSStack();
+  for (i = 0; i < m; ++i) {
+    //~ may need to check for integers here
+    stack->pushReal(in[i]);
+  }
+  exec(stack, 0);
+  for (i = n - 1; i >= 0; --i) {
+    out[i] = stack->popNum();
+    if (out[i] < range[i][0]) {
+      out[i] = range[i][0];
+    } else if (out[i] > range[i][1]) {
+      out[i] = range[i][1];
+    }
+  }
+  // if (!stack->empty()) {
+  //   error(-1, "Extra values on stack at end of PostScript function");
+  // }
+  delete stack;
+}
+
+GBool PostScriptFunction::parseCode(Stream *str, int *codePtr) {
+  GString *tok;
+  char *p;
+  GBool isReal;
+  int opPtr, elsePtr;
+  int a, b, mid, cmp;
+
+  while (1) {
+    if (!(tok = getToken(str))) {
+      error(-1, "Unexpected end of PostScript function stream");
+      return gFalse;
+    }
+    p = tok->getCString();
+    if (isdigit(*p) || *p == '.' || *p == '-') {
+      isReal = gFalse;
+      for (++p; *p; ++p) {
+       if (*p == '.') {
+         isReal = gTrue;
+         break;
+       }
+      }
+      resizeCode(*codePtr);
+      if (isReal) {
+       code[*codePtr].type = psReal;
+       code[*codePtr].real = atof(tok->getCString());
+      } else {
+       code[*codePtr].type = psInt;
+       code[*codePtr].intg = atoi(tok->getCString());
+      }
+      ++*codePtr;
+      delete tok;
+    } else if (!tok->cmp("{")) {
+      delete tok;
+      opPtr = *codePtr;
+      *codePtr += 3;
+      resizeCode(opPtr + 2);
+      if (!parseCode(str, codePtr)) {
+       return gFalse;
+      }
+      if (!(tok = getToken(str))) {
+       error(-1, "Unexpected end of PostScript function stream");
+       return gFalse;
+      }
+      if (!tok->cmp("{")) {
+       elsePtr = *codePtr;
+       if (!parseCode(str, codePtr)) {
+         return gFalse;
+       }
+      } else {
+       elsePtr = -1;
+      }
+      delete tok;
+      if (!(tok = getToken(str))) {
+       error(-1, "Unexpected end of PostScript function stream");
+       return gFalse;
+      }
+      if (!tok->cmp("if")) {
+       if (elsePtr >= 0) {
+         error(-1, "Got 'if' operator with two blocks in PostScript function");
+         return gFalse;
+       }
+       code[opPtr].type = psOperator;
+       code[opPtr].op = psOpIf;
+       code[opPtr+2].type = psBlock;
+       code[opPtr+2].blk = *codePtr;
+      } else if (!tok->cmp("ifelse")) {
+       if (elsePtr < 0) {
+         error(-1, "Got 'ifelse' operator with one blocks in PostScript function");
+         return gFalse;
+       }
+       code[opPtr].type = psOperator;
+       code[opPtr].op = psOpIfelse;
+       code[opPtr+1].type = psBlock;
+       code[opPtr+1].blk = elsePtr;
+       code[opPtr+2].type = psBlock;
+       code[opPtr+2].blk = *codePtr;
+      } else {
+       error(-1, "Expected if/ifelse operator in PostScript function");
+       delete tok;
+       return gFalse;
+      }
+      delete tok;
+    } else if (!tok->cmp("}")) {
+      delete tok;
+      resizeCode(*codePtr);
+      code[*codePtr].type = psOperator;
+      code[*codePtr].op = psOpReturn;
+      ++*codePtr;
+      break;
+    } else {
+      a = -1;
+      b = nPSOps;
+      // invariant: psOpNames[a] < tok < psOpNames[b]
+      while (b - a > 1) {
+       mid = (a + b) / 2;
+       cmp = tok->cmp(psOpNames[mid]);
+       if (cmp > 0) {
+         a = mid;
+       } else if (cmp < 0) {
+         b = mid;
+       } else {
+         a = b = mid;
+       }
+      }
+      if (cmp != 0) {
+       error(-1, "Unknown operator '%s' in PostScript function",
+             tok->getCString());
+       delete tok;
+       return gFalse;
+      }
+      delete tok;
+      resizeCode(*codePtr);
+      code[*codePtr].type = psOperator;
+      code[*codePtr].op = (PSOp)a;
+      ++*codePtr;
+    }
+  }
+  return gTrue;
+}
+
+GString *PostScriptFunction::getToken(Stream *str) {
+  GString *s;
+  int c;
+
+  s = new GString();
+  do {
+    c = str->getChar();
+  } while (c != EOF && isspace(c));
+  if (c == '{' || c == '}') {
+    s->append((char)c);
+  } else if (isdigit(c) || c == '.' || c == '-') {
+    while (1) {
+      s->append((char)c);
+      c = str->lookChar();
+      if (c == EOF || !(isdigit(c) || c == '.' || c == '-')) {
+       break;
+      }
+      str->getChar();
+    }
+  } else {
+    while (1) {
+      s->append((char)c);
+      c = str->lookChar();
+      if (c == EOF || !isalnum(c)) {
+       break;
+      }
+      str->getChar();
+    }
+  }
+  return s;
+}
+
+void PostScriptFunction::resizeCode(int newSize) {
+  if (newSize >= codeSize) {
+    codeSize += 64;
+    code = (PSObject *)grealloc(code, codeSize * sizeof(PSObject));
+  }
+}
+
+void PostScriptFunction::exec(PSStack *stack, int codePtr) {
+  int i1, i2;
+  double r1, r2;
+  GBool b1, b2;
+
+  while (1) {
+    switch (code[codePtr].type) {
+    case psInt:
+      stack->pushInt(code[codePtr++].intg);
+      break;
+    case psReal:
+      stack->pushReal(code[codePtr++].real);
+      break;
+    case psOperator:
+      switch (code[codePtr++].op) {
+      case psOpAbs:
+       if (stack->topIsInt()) {
+         stack->pushInt(abs(stack->popInt()));
+       } else {
+         stack->pushReal(fabs(stack->popNum()));
+       }
+       break;
+      case psOpAdd:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushInt(i1 + i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushReal(r1 + r2);
+       }
+       break;
+      case psOpAnd:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushInt(i1 & i2);
+       } else {
+         b2 = stack->popBool();
+         b1 = stack->popBool();
+         stack->pushReal(b1 && b2);
+       }
+       break;
+      case psOpAtan:
+       r2 = stack->popNum();
+       r1 = stack->popNum();
+       stack->pushReal(atan2(r1, r2));
+       break;
+      case psOpBitshift:
+       i2 = stack->popInt();
+       i1 = stack->popInt();
+       if (i2 > 0) {
+         stack->pushInt(i1 << i2);
+       } else if (i2 < 0) {
+         stack->pushInt((int)((Guint)i1 >> i2));
+       } else {
+         stack->pushInt(i1);
+       }
+       break;
+      case psOpCeiling:
+       if (!stack->topIsInt()) {
+         stack->pushReal(ceil(stack->popNum()));
+       }
+       break;
+      case psOpCopy:
+       stack->copy(stack->popInt());
+       break;
+      case psOpCos:
+       stack->pushReal(cos(stack->popNum()));
+       break;
+      case psOpCvi:
+       if (!stack->topIsInt()) {
+         stack->pushInt((int)stack->popNum());
+       }
+       break;
+      case psOpCvr:
+       if (!stack->topIsReal()) {
+         stack->pushReal(stack->popNum());
+       }
+       break;
+      case psOpDiv:
+       r2 = stack->popNum();
+       r1 = stack->popNum();
+       stack->pushReal(r1 / r2);
+       break;
+      case psOpDup:
+       stack->copy(1);
+       break;
+      case psOpEq:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushBool(i1 == i2);
+       } else if (stack->topTwoAreNums()) {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushBool(r1 == r2);
+       } else {
+         b2 = stack->popBool();
+         b1 = stack->popBool();
+         stack->pushBool(b1 == b2);
+       }
+       break;
+      case psOpExch:
+       stack->roll(2, 1);
+       break;
+      case psOpExp:
+       r2 = stack->popInt();
+       r1 = stack->popInt();
+       stack->pushReal(pow(r1, r2));
+       break;
+      case psOpFalse:
+       stack->pushBool(gFalse);
+       break;
+      case psOpFloor:
+       if (!stack->topIsInt()) {
+         stack->pushReal(floor(stack->popNum()));
+       }
+       break;
+      case psOpGe:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushBool(i1 >= i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushBool(r1 >= r2);
+       }
+       break;
+      case psOpGt:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushBool(i1 > i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushBool(r1 > r2);
+       }
+       break;
+      case psOpIdiv:
+       i2 = stack->popInt();
+       i1 = stack->popInt();
+       stack->pushInt(i1 / i2);
+       break;
+      case psOpIndex:
+       stack->index(stack->popInt());
+       break;
+      case psOpLe:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushBool(i1 <= i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushBool(r1 <= r2);
+       }
+       break;
+      case psOpLn:
+       stack->pushReal(log(stack->popNum()));
+       break;
+      case psOpLog:
+       stack->pushReal(log10(stack->popNum()));
+       break;
+      case psOpLt:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushBool(i1 < i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushBool(r1 < r2);
+       }
+       break;
+      case psOpMod:
+       i2 = stack->popInt();
+       i1 = stack->popInt();
+       stack->pushInt(i1 % i2);
+       break;
+      case psOpMul:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         //~ should check for out-of-range, and push a real instead
+         stack->pushInt(i1 * i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushReal(r1 * r2);
+       }
+       break;
+      case psOpNe:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushBool(i1 != i2);
+       } else if (stack->topTwoAreNums()) {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushBool(r1 != r2);
+       } else {
+         b2 = stack->popBool();
+         b1 = stack->popBool();
+         stack->pushBool(b1 != b2);
+       }
+       break;
+      case psOpNeg:
+       if (stack->topIsInt()) {
+         stack->pushInt(-stack->popInt());
+       } else {
+         stack->pushReal(-stack->popNum());
+       }
+       break;
+      case psOpNot:
+       if (stack->topIsInt()) {
+         stack->pushInt(~stack->popInt());
+       } else {
+         stack->pushReal(!stack->popBool());
+       }
+       break;
+      case psOpOr:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushInt(i1 | i2);
+       } else {
+         b2 = stack->popBool();
+         b1 = stack->popBool();
+         stack->pushReal(b1 || b2);
+       }
+       break;
+      case psOpPop:
+       stack->pop();
+       break;
+      case psOpRoll:
+       i2 = stack->popInt();
+       i1 = stack->popInt();
+       stack->roll(i1, i2);
+       break;
+      case psOpRound:
+       if (!stack->topIsInt()) {
+         r1 = stack->popNum();
+         stack->pushReal((r1 >= 0) ? floor(r1 + 0.5) : ceil(r1 - 0.5));
+       }
+       break;
+      case psOpSin:
+       stack->pushReal(cos(stack->popNum()));
+       break;
+      case psOpSqrt:
+       stack->pushReal(sqrt(stack->popNum()));
+       break;
+      case psOpSub:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushInt(i1 - i2);
+       } else {
+         r2 = stack->popNum();
+         r1 = stack->popNum();
+         stack->pushReal(r1 - r2);
+       }
+       break;
+      case psOpTrue:
+       stack->pushBool(gTrue);
+       break;
+      case psOpTruncate:
+       if (!stack->topIsInt()) {
+         r1 = stack->popNum();
+         stack->pushReal((r1 >= 0) ? floor(r1) : ceil(r1));
+       }
+       break;
+      case psOpXor:
+       if (stack->topTwoAreInts()) {
+         i2 = stack->popInt();
+         i1 = stack->popInt();
+         stack->pushInt(i1 ^ i2);
+       } else {
+         b2 = stack->popBool();
+         b1 = stack->popBool();
+         stack->pushReal(b1 ^ b2);
+       }
+       break;
+      case psOpIf:
+       b1 = stack->popBool();
+       if (b1) {
+         exec(stack, codePtr + 2);
+       }
+       codePtr = code[codePtr + 1].blk;
+       break;
+      case psOpIfelse:
+       b1 = stack->popBool();
+       if (b1) {
+         exec(stack, codePtr + 2);
+       } else {
+         exec(stack, code[codePtr].blk);
+       }
+       codePtr = code[codePtr + 1].blk;
+       break;
+      case psOpReturn:
+       return;
+      }
+      break;
+    default:
+      error(-1, "Internal: bad object in PostScript function code");
+      break;
+    }
+  }
+}
diff --git a/pdf/xpdf/Function.h b/pdf/xpdf/Function.h
new file mode 100644 (file)
index 0000000..9b0879f
--- /dev/null
@@ -0,0 +1,181 @@
+//========================================================================
+//
+// Function.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef FUNCTION_H
+#define FUNCTION_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+#include "Object.h"
+
+class Dict;
+class Stream;
+struct PSObject;
+class PSStack;
+
+//------------------------------------------------------------------------
+// Function
+//------------------------------------------------------------------------
+
+#define funcMaxInputs  8
+#define funcMaxOutputs 8
+
+class Function {
+public:
+
+  Function();
+
+  virtual ~Function();
+
+  // Construct a function.  Returns NULL if unsuccessful.
+  static Function *parse(Object *funcObj);
+
+  // Initialize the entries common to all function types.
+  GBool init(Dict *dict);
+
+  virtual Function *copy() = 0;
+
+  // Return size of input and output tuples.
+  int getInputSize() { return m; }
+  int getOutputSize() { return n; }
+
+  // Transform an input tuple into an output tuple.
+  virtual void transform(double *in, double *out) = 0;
+
+  virtual GBool isOk() = 0;
+
+protected:
+
+  int m, n;                    // size of input and output tuples
+  double                       // min and max values for function domain
+    domain[funcMaxInputs][2];
+  double                       // min and max values for function range
+    range[funcMaxOutputs][2];
+  GBool hasRange;              // set if range is defined
+};
+
+//------------------------------------------------------------------------
+// IdentityFunction
+//------------------------------------------------------------------------
+
+class IdentityFunction: public Function {
+public:
+
+  IdentityFunction();
+  virtual ~IdentityFunction();
+  virtual Function *copy() { return new IdentityFunction(); }
+  virtual void transform(double *in, double *out);
+  virtual GBool isOk() { return gTrue; }
+
+private:
+};
+
+//------------------------------------------------------------------------
+// SampledFunction
+//------------------------------------------------------------------------
+
+class SampledFunction: public Function {
+public:
+
+  SampledFunction(Object *funcObj, Dict *dict);
+  virtual ~SampledFunction();
+  virtual Function *copy() { return new SampledFunction(this); }
+  virtual void transform(double *in, double *out);
+  virtual GBool isOk() { return ok; }
+
+private:
+
+  SampledFunction(SampledFunction *func);
+
+  int                          // number of samples for each domain element
+    sampleSize[funcMaxInputs];
+  double                       // min and max values for domain encoder
+    encode[funcMaxInputs][2];
+  double                       // min and max values for range decoder
+    decode[funcMaxOutputs][2];
+  double *samples;             // the samples
+  GBool ok;
+};
+
+//------------------------------------------------------------------------
+// ExponentialFunction
+//------------------------------------------------------------------------
+
+class ExponentialFunction: public Function {
+public:
+
+  ExponentialFunction(Object *funcObj, Dict *dict);
+  virtual ~ExponentialFunction();
+  virtual Function *copy() { return new ExponentialFunction(this); }
+  virtual void transform(double *in, double *out);
+  virtual GBool isOk() { return ok; }
+
+private:
+
+  ExponentialFunction(ExponentialFunction *func);
+
+  double c0[funcMaxOutputs];
+  double c1[funcMaxOutputs];
+  double e;
+  GBool ok;
+};
+
+//------------------------------------------------------------------------
+// StitchingFunction
+//------------------------------------------------------------------------
+
+class StitchingFunction: public Function {
+public:
+
+  StitchingFunction(Object *funcObj, Dict *dict);
+  virtual ~StitchingFunction();
+  virtual Function *copy() { return new StitchingFunction(this); }
+  virtual void transform(double *in, double *out);
+  virtual GBool isOk() { return ok; }
+
+private:
+
+  StitchingFunction(StitchingFunction *func);
+
+  int k;
+  Function **funcs;
+  double *bounds;
+  double *encode;
+  GBool ok;
+};
+
+//------------------------------------------------------------------------
+// PostScriptFunction
+//------------------------------------------------------------------------
+
+class PostScriptFunction: public Function {
+public:
+
+  PostScriptFunction(Object *funcObj, Dict *dict);
+  virtual ~PostScriptFunction();
+  virtual Function *copy() { return new PostScriptFunction(this); }
+  virtual void transform(double *in, double *out);
+  virtual GBool isOk() { return ok; }
+
+private:
+
+  PostScriptFunction(PostScriptFunction *func);
+  GBool parseCode(Stream *str, int *codePtr);
+  GString *getToken(Stream *str);
+  void resizeCode(int newSize);
+  void exec(PSStack *stack, int codePtr);
+
+  PSObject *code;
+  int codeSize;
+  GBool ok;
+};
+
+#endif
diff --git a/pdf/xpdf/GB12CMapInfo.h b/pdf/xpdf/GB12CMapInfo.h
deleted file mode 100644 (file)
index 8803757..0000000
+++ /dev/null
@@ -1,50880 +0,0 @@
-//========================================================================
-//
-// GB12CMapInfo.h
-//
-// This file was automatically generated by makeCMapInfo.
-//
-// Copyright 1998 Derek B. Noonburg
-//
-//========================================================================
-
-#ifndef GB12CMAPINFO_H
-#define GB12CMAPINFO_H
-
-static Gushort gb12AdobeGB10Map2[66] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12AdobeGB10Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12AdobeGB10Map2, 33
-};
-
-static Gushort gb12AdobeGB11Map2[82] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12AdobeGB11Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12AdobeGB11Map2, 41
-};
-
-static Gushort gb12AdobeGB12Map2[178] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0x3800, 0x3800,
-  0x3900, 0x3900,
-  0x3a00, 0x3a00,
-  0x3b00, 0x3b00,
-  0x3c00, 0x3c00,
-  0x3d00, 0x3d00,
-  0x3e00, 0x3e00,
-  0x3f00, 0x3f00,
-  0x4000, 0x4000,
-  0x4100, 0x4100,
-  0x4200, 0x4200,
-  0x4300, 0x4300,
-  0x4400, 0x4400,
-  0x4500, 0x4500,
-  0x4600, 0x4600,
-  0x4700, 0x4700,
-  0x4800, 0x4800,
-  0x4900, 0x4900,
-  0x4a00, 0x4a00,
-  0x4b00, 0x4b00,
-  0x4c00, 0x4c00,
-  0x4d00, 0x4d00,
-  0x4e00, 0x4e00,
-  0x4f00, 0x4f00,
-  0x5000, 0x5000,
-  0x5100, 0x5100,
-  0x5200, 0x5200,
-  0x5300, 0x5300,
-  0x5400, 0x5400,
-  0x5500, 0x5500,
-  0x5600, 0x5600,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12AdobeGB12Enc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12AdobeGB12Map2, 89
-};
-
-static Gushort gb12GBEUCHMap2[180] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb1a1, 0x040a,
-  0xb2a1, 0x0468,
-  0xb3a1, 0x04c6,
-  0xb4a1, 0x0524,
-  0xb5a1, 0x0582,
-  0xb6a1, 0x05e0,
-  0xb7a1, 0x063e,
-  0xb8a1, 0x069c,
-  0xb9a1, 0x06fa,
-  0xbaa1, 0x0758,
-  0xbba1, 0x07b6,
-  0xbca1, 0x0814,
-  0xbda1, 0x0872,
-  0xbea1, 0x08d0,
-  0xbfa1, 0x092e,
-  0xc0a1, 0x098c,
-  0xc1a1, 0x09ea,
-  0xc2a1, 0x0a48,
-  0xc3a1, 0x0aa6,
-  0xc4a1, 0x0b04,
-  0xc5a1, 0x0b62,
-  0xc6a1, 0x0bc0,
-  0xc7a1, 0x0c1e,
-  0xc8a1, 0x0c7c,
-  0xc9a1, 0x0cda,
-  0xcaa1, 0x0d38,
-  0xcba1, 0x0d96,
-  0xcca1, 0x0df4,
-  0xcda1, 0x0e52,
-  0xcea1, 0x0eb0,
-  0xcfa1, 0x0f0e,
-  0xd0a1, 0x0f6c,
-  0xd1a1, 0x0fca,
-  0xd2a1, 0x1028,
-  0xd3a1, 0x1086,
-  0xd4a1, 0x10e4,
-  0xd5a1, 0x1142,
-  0xd6a1, 0x11a0,
-  0xd7a1, 0x11fe,
-  0xd8a1, 0x1257,
-  0xd9a1, 0x12b5,
-  0xdaa1, 0x1313,
-  0xdba1, 0x1371,
-  0xdca1, 0x13cf,
-  0xdda1, 0x142d,
-  0xdea1, 0x148b,
-  0xdfa1, 0x14e9,
-  0xe0a1, 0x1547,
-  0xe1a1, 0x15a5,
-  0xe2a1, 0x1603,
-  0xe3a1, 0x1661,
-  0xe4a1, 0x16bf,
-  0xe5a1, 0x171d,
-  0xe6a1, 0x177b,
-  0xe7a1, 0x17d9,
-  0xe8a1, 0x1837,
-  0xe9a1, 0x1895,
-  0xeaa1, 0x18f3,
-  0xeba1, 0x1951,
-  0xeca1, 0x19af,
-  0xeda1, 0x1a0d,
-  0xeea1, 0x1a6b,
-  0xefa1, 0x1ac9,
-  0xf0a1, 0x1b27,
-  0xf1a1, 0x1b85,
-  0xf2a1, 0x1be3,
-  0xf3a1, 0x1c41,
-  0xf4a1, 0x1c9f,
-  0xf5a1, 0x1cfd,
-  0xf6a1, 0x1d5b,
-  0xf7a1, 0x1db9,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBEUCHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x1e24, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334,
-    0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c,
-    0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
-    0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c,
-    0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354,
-    0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c,
-    0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364,
-    0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c,
-    0x036d, 0x036e, 0x036f, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374,
-    0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037a, 0x037b, 0x037c,
-    0x037d, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384,
-    0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBEUCHMap2, 90
-};
-
-static Gushort gb12GBEUCVMap2[220] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb1a1, 0x040a,
-  0xb2a1, 0x0468,
-  0xb3a1, 0x04c6,
-  0xb4a1, 0x0524,
-  0xb5a1, 0x0582,
-  0xb6a1, 0x05e0,
-  0xb7a1, 0x063e,
-  0xb8a1, 0x069c,
-  0xb9a1, 0x06fa,
-  0xbaa1, 0x0758,
-  0xbba1, 0x07b6,
-  0xbca1, 0x0814,
-  0xbda1, 0x0872,
-  0xbea1, 0x08d0,
-  0xbfa1, 0x092e,
-  0xc0a1, 0x098c,
-  0xc1a1, 0x09ea,
-  0xc2a1, 0x0a48,
-  0xc3a1, 0x0aa6,
-  0xc4a1, 0x0b04,
-  0xc5a1, 0x0b62,
-  0xc6a1, 0x0bc0,
-  0xc7a1, 0x0c1e,
-  0xc8a1, 0x0c7c,
-  0xc9a1, 0x0cda,
-  0xcaa1, 0x0d38,
-  0xcba1, 0x0d96,
-  0xcca1, 0x0df4,
-  0xcda1, 0x0e52,
-  0xcea1, 0x0eb0,
-  0xcfa1, 0x0f0e,
-  0xd0a1, 0x0f6c,
-  0xd1a1, 0x0fca,
-  0xd2a1, 0x1028,
-  0xd3a1, 0x1086,
-  0xd4a1, 0x10e4,
-  0xd5a1, 0x1142,
-  0xd6a1, 0x11a0,
-  0xd7a1, 0x11fe,
-  0xd8a1, 0x1257,
-  0xd9a1, 0x12b5,
-  0xdaa1, 0x1313,
-  0xdba1, 0x1371,
-  0xdca1, 0x13cf,
-  0xdda1, 0x142d,
-  0xdea1, 0x148b,
-  0xdfa1, 0x14e9,
-  0xe0a1, 0x1547,
-  0xe1a1, 0x15a5,
-  0xe2a1, 0x1603,
-  0xe3a1, 0x1661,
-  0xe4a1, 0x16bf,
-  0xe5a1, 0x171d,
-  0xe6a1, 0x177b,
-  0xe7a1, 0x17d9,
-  0xe8a1, 0x1837,
-  0xe9a1, 0x1895,
-  0xeaa1, 0x18f3,
-  0xeba1, 0x1951,
-  0xeca1, 0x19af,
-  0xeda1, 0x1a0d,
-  0xeea1, 0x1a6b,
-  0xefa1, 0x1ac9,
-  0xf0a1, 0x1b27,
-  0xf1a1, 0x1b85,
-  0xf2a1, 0x1be3,
-  0xf3a1, 0x1c41,
-  0xf4a1, 0x1c9f,
-  0xf5a1, 0x1cfd,
-  0xf6a1, 0x1d5b,
-  0xf7a1, 0x1db9,
-  0xa1a2, 0x023f,
-  0xa1a3, 0x023e,
-  0xa1aa, 0x0256,
-  0xa1ab, 0x1e18,
-  0xa1ad, 0x0257,
-  0xa1b2, 0x0246,
-  0xa1fe, 0x1e1a,
-  0xa3a1, 0x0242,
-  0xa3a8, 0x0244,
-  0xa3ac, 0x023d,
-  0xa3ae, 0x1e1b,
-  0xa3ba, 0x0240,
-  0xa3bd, 0x1e1c,
-  0xa3bf, 0x0243,
-  0xa3db, 0x1e1d,
-  0xa3dd, 0x1e1e,
-  0xa3df, 0x0258,
-  0xa3fb, 0x0254,
-  0xa3fd, 0x0255,
-  0xa3fe, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBEUCVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x1e24, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334,
-    0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c,
-    0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
-    0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c,
-    0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354,
-    0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c,
-    0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364,
-    0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c,
-    0x036d, 0x036e, 0x036f, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374,
-    0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037a, 0x037b, 0x037c,
-    0x037d, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384,
-    0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBEUCVMap2, 110
-};
-
-static Gushort gb12GBHMap2[180] = {
-  0x0000, 0x0000,
-  0x2121, 0x0060,
-  0x2231, 0x00be,
-  0x2265, 0x00f0,
-  0x2271, 0x00fa,
-  0x2321, 0x0106,
-  0x2421, 0x0164,
-  0x2521, 0x01b7,
-  0x2621, 0x020d,
-  0x2641, 0x0225,
-  0x2721, 0x025a,
-  0x2751, 0x027b,
-  0x2821, 0x029c,
-  0x2845, 0x02bc,
-  0x2924, 0x02e2,
-  0x2a21, 0x032e,
-  0x2b21, 0x038c,
-  0x3021, 0x03ac,
-  0x3121, 0x040a,
-  0x3221, 0x0468,
-  0x3321, 0x04c6,
-  0x3421, 0x0524,
-  0x3521, 0x0582,
-  0x3621, 0x05e0,
-  0x3721, 0x063e,
-  0x3821, 0x069c,
-  0x3921, 0x06fa,
-  0x3a21, 0x0758,
-  0x3b21, 0x07b6,
-  0x3c21, 0x0814,
-  0x3d21, 0x0872,
-  0x3e21, 0x08d0,
-  0x3f21, 0x092e,
-  0x4021, 0x098c,
-  0x4121, 0x09ea,
-  0x4221, 0x0a48,
-  0x4321, 0x0aa6,
-  0x4421, 0x0b04,
-  0x4521, 0x0b62,
-  0x4621, 0x0bc0,
-  0x4721, 0x0c1e,
-  0x4821, 0x0c7c,
-  0x4921, 0x0cda,
-  0x4a21, 0x0d38,
-  0x4b21, 0x0d96,
-  0x4c21, 0x0df4,
-  0x4d21, 0x0e52,
-  0x4e21, 0x0eb0,
-  0x4f21, 0x0f0e,
-  0x5021, 0x0f6c,
-  0x5121, 0x0fca,
-  0x5221, 0x1028,
-  0x5321, 0x1086,
-  0x5421, 0x10e4,
-  0x5521, 0x1142,
-  0x5621, 0x11a0,
-  0x5721, 0x11fe,
-  0x5821, 0x1257,
-  0x5921, 0x12b5,
-  0x5a21, 0x1313,
-  0x5b21, 0x1371,
-  0x5c21, 0x13cf,
-  0x5d21, 0x142d,
-  0x5e21, 0x148b,
-  0x5f21, 0x14e9,
-  0x6021, 0x1547,
-  0x6121, 0x15a5,
-  0x6221, 0x1603,
-  0x6321, 0x1661,
-  0x6421, 0x16bf,
-  0x6521, 0x171d,
-  0x6621, 0x177b,
-  0x6721, 0x17d9,
-  0x6821, 0x1837,
-  0x6921, 0x1895,
-  0x6a21, 0x18f3,
-  0x6b21, 0x1951,
-  0x6c21, 0x19af,
-  0x6d21, 0x1a0d,
-  0x6e21, 0x1a6b,
-  0x6f21, 0x1ac9,
-  0x7021, 0x1b27,
-  0x7121, 0x1b85,
-  0x7221, 0x1be3,
-  0x7321, 0x1c41,
-  0x7421, 0x1c9f,
-  0x7521, 0x1cfd,
-  0x7621, 0x1d5b,
-  0x7721, 0x1db9,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBHMap2, 90
-};
-
-static Gushort gb12GBVMap2[220] = {
-  0x0000, 0x0000,
-  0x2121, 0x0060,
-  0x2231, 0x00be,
-  0x2265, 0x00f0,
-  0x2271, 0x00fa,
-  0x2321, 0x0106,
-  0x2421, 0x0164,
-  0x2521, 0x01b7,
-  0x2621, 0x020d,
-  0x2641, 0x0225,
-  0x2721, 0x025a,
-  0x2751, 0x027b,
-  0x2821, 0x029c,
-  0x2845, 0x02bc,
-  0x2924, 0x02e2,
-  0x2a21, 0x032e,
-  0x2b21, 0x038c,
-  0x3021, 0x03ac,
-  0x3121, 0x040a,
-  0x3221, 0x0468,
-  0x3321, 0x04c6,
-  0x3421, 0x0524,
-  0x3521, 0x0582,
-  0x3621, 0x05e0,
-  0x3721, 0x063e,
-  0x3821, 0x069c,
-  0x3921, 0x06fa,
-  0x3a21, 0x0758,
-  0x3b21, 0x07b6,
-  0x3c21, 0x0814,
-  0x3d21, 0x0872,
-  0x3e21, 0x08d0,
-  0x3f21, 0x092e,
-  0x4021, 0x098c,
-  0x4121, 0x09ea,
-  0x4221, 0x0a48,
-  0x4321, 0x0aa6,
-  0x4421, 0x0b04,
-  0x4521, 0x0b62,
-  0x4621, 0x0bc0,
-  0x4721, 0x0c1e,
-  0x4821, 0x0c7c,
-  0x4921, 0x0cda,
-  0x4a21, 0x0d38,
-  0x4b21, 0x0d96,
-  0x4c21, 0x0df4,
-  0x4d21, 0x0e52,
-  0x4e21, 0x0eb0,
-  0x4f21, 0x0f0e,
-  0x5021, 0x0f6c,
-  0x5121, 0x0fca,
-  0x5221, 0x1028,
-  0x5321, 0x1086,
-  0x5421, 0x10e4,
-  0x5521, 0x1142,
-  0x5621, 0x11a0,
-  0x5721, 0x11fe,
-  0x5821, 0x1257,
-  0x5921, 0x12b5,
-  0x5a21, 0x1313,
-  0x5b21, 0x1371,
-  0x5c21, 0x13cf,
-  0x5d21, 0x142d,
-  0x5e21, 0x148b,
-  0x5f21, 0x14e9,
-  0x6021, 0x1547,
-  0x6121, 0x15a5,
-  0x6221, 0x1603,
-  0x6321, 0x1661,
-  0x6421, 0x16bf,
-  0x6521, 0x171d,
-  0x6621, 0x177b,
-  0x6721, 0x17d9,
-  0x6821, 0x1837,
-  0x6921, 0x1895,
-  0x6a21, 0x18f3,
-  0x6b21, 0x1951,
-  0x6c21, 0x19af,
-  0x6d21, 0x1a0d,
-  0x6e21, 0x1a6b,
-  0x6f21, 0x1ac9,
-  0x7021, 0x1b27,
-  0x7121, 0x1b85,
-  0x7221, 0x1be3,
-  0x7321, 0x1c41,
-  0x7421, 0x1c9f,
-  0x7521, 0x1cfd,
-  0x7621, 0x1d5b,
-  0x7721, 0x1db9,
-  0x2122, 0x023f,
-  0x2123, 0x023e,
-  0x212a, 0x0256,
-  0x212b, 0x1e18,
-  0x212d, 0x0257,
-  0x2132, 0x0246,
-  0x217e, 0x1e1a,
-  0x2321, 0x0242,
-  0x2328, 0x0244,
-  0x232c, 0x023d,
-  0x232e, 0x1e1b,
-  0x233a, 0x0240,
-  0x233d, 0x1e1c,
-  0x233f, 0x0243,
-  0x235b, 0x1e1d,
-  0x235d, 0x1e1e,
-  0x235f, 0x0258,
-  0x237b, 0x0254,
-  0x237d, 0x0255,
-  0x237e, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBVMap2, 110
-};
-
-static Gushort gb12GBKEUCHMap2[8142] = {
-  0x0000, 0x0000,
-  0x8140, 0x2758,
-  0x8179, 0x2059,
-  0x817a, 0x2791,
-  0x8180, 0x2796,
-  0x8186, 0x21f1,
-  0x8187, 0x279c,
-  0x81ed, 0x1ff2,
-  0x81ee, 0x2802,
-  0x81f6, 0x205d,
-  0x81f7, 0x280a,
-  0x8240, 0x2812,
-  0x8253, 0x269c,
-  0x8254, 0x2825,
-  0x8262, 0x21b5,
-  0x8263, 0x2833,
-  0x8274, 0x22cc,
-  0x8275, 0x2844,
-  0x827a, 0x2016,
-  0x827b, 0x2849,
-  0x827d, 0x1e62,
-  0x827e, 0x284b,
-  0x8280, 0x1f20,
-  0x8281, 0x284c,
-  0x8283, 0x207f,
-  0x8284, 0x284e,
-  0x8290, 0x205c,
-  0x8291, 0x285a,
-  0x82a5, 0x2194,
-  0x82a6, 0x286e,
-  0x82c8, 0x1e65,
-  0x82c9, 0x2281,
-  0x82ca, 0x2890,
-  0x82e1, 0x22cd,
-  0x82e2, 0x28a7,
-  0x82e3, 0x210a,
-  0x82e4, 0x1e3e,
-  0x82e5, 0x28a8,
-  0x82ed, 0x267f,
-  0x82ee, 0x28b0,
-  0x82f2, 0x222e,
-  0x82f3, 0x28b4,
-  0x82f7, 0x1e96,
-  0x82f8, 0x22cb,
-  0x82f9, 0x226c,
-  0x82fa, 0x28b8,
-  0x82fb, 0x2117,
-  0x82fc, 0x28b9,
-  0x8340, 0x28bc,
-  0x8341, 0x20e8,
-  0x8342, 0x28bd,
-  0x8345, 0x22d4,
-  0x8346, 0x28c0,
-  0x8348, 0x1fb9,
-  0x8349, 0x28c2,
-  0x834c, 0x22d8,
-  0x834d, 0x28c5,
-  0x8353, 0x20df,
-  0x8354, 0x28cb,
-  0x8357, 0x20c2,
-  0x8358, 0x28ce,
-  0x835e, 0x2195,
-  0x835f, 0x28d4,
-  0x8365, 0x1fac,
-  0x8366, 0x22d3,
-  0x8367, 0x28da,
-  0x8372, 0x1f81,
-  0x8373, 0x28e5,
-  0x8378, 0x2210,
-  0x8379, 0x28ea,
-  0x837a, 0x22cf,
-  0x837b, 0x28eb,
-  0x837c, 0x2213,
-  0x837d, 0x28ec,
-  0x837e, 0x1fe4,
-  0x8380, 0x1f90,
-  0x8381, 0x28ed,
-  0x8386, 0x22d6,
-  0x8387, 0x28f2,
-  0x8389, 0x22d0,
-  0x838a, 0x22ce,
-  0x838b, 0x28f4,
-  0x838d, 0x2681,
-  0x838e, 0x28f6,
-  0x8394, 0x1e76,
-  0x8395, 0x28fc,
-  0x839e, 0x2231,
-  0x839f, 0x2905,
-  0x83a6, 0x1e93,
-  0x83a7, 0x290c,
-  0x83ab, 0x22d2,
-  0x83ac, 0x2910,
-  0x83ae, 0x22d7,
-  0x83af, 0x22d5,
-  0x83b0, 0x22d1,
-  0x83b1, 0x2912,
-  0x83ba, 0x1ee5,
-  0x83bb, 0x291b,
-  0x83c9, 0x2025,
-  0x83ca, 0x2929,
-  0x83f6, 0x1ecf,
-  0x83f7, 0x2955,
-  0x8440, 0x295d,
-  0x8450, 0x1fd9,
-  0x8451, 0x296d,
-  0x8471, 0x22c8,
-  0x8472, 0x298d,
-  0x8474, 0x2263,
-  0x8475, 0x298f,
-  0x8477, 0x2683,
-  0x8478, 0x2991,
-  0x8480, 0x2998,
-  0x8482, 0x1f17,
-  0x8483, 0x299a,
-  0x848e, 0x1f2b,
-  0x848f, 0x29a5,
-  0x8492, 0x22ca,
-  0x8493, 0x1e99,
-  0x8494, 0x29a8,
-  0x849d, 0x1f4f,
-  0x849e, 0x29b1,
-  0x84a1, 0x1fcf,
-  0x84a2, 0x2036,
-  0x84a3, 0x1f3a,
-  0x84a4, 0x29b4,
-  0x84a5, 0x22c9,
-  0x84a6, 0x1f99,
-  0x84a7, 0x29b5,
-  0x84a9, 0x1f75,
-  0x84aa, 0x29b7,
-  0x84c5, 0x1fbe,
-  0x84c6, 0x29d2,
-  0x84d3, 0x1ecd,
-  0x84d4, 0x29df,
-  0x84d5, 0x21a9,
-  0x84d6, 0x29e0,
-  0x84d7, 0x21e6,
-  0x84d8, 0x29e1,
-  0x84d9, 0x2127,
-  0x84da, 0x2003,
-  0x84db, 0x29e2,
-  0x84dd, 0x2132,
-  0x84de, 0x29e4,
-  0x84ea, 0x2323,
-  0x84eb, 0x29f0,
-  0x84ee, 0x2011,
-  0x84ef, 0x29f3,
-  0x84f1, 0x20f5,
-  0x84f2, 0x29f5,
-  0x8540, 0x2a02,
-  0x8551, 0x22c5,
-  0x8552, 0x1f5e,
-  0x8553, 0x2a13,
-  0x8554, 0x22c6,
-  0x8555, 0x2a14,
-  0x855e, 0x20ef,
-  0x855f, 0x2a1d,
-  0x8566, 0x21d0,
-  0x8567, 0x2a24,
-  0x8580, 0x2a3c,
-  0x8587, 0x22c1,
-  0x8588, 0x2a43,
-  0x858b, 0x1e64,
-  0x858c, 0x2a46,
-  0x8592, 0x21f9,
-  0x8593, 0x2a4c,
-  0x8596, 0x2010,
-  0x8597, 0x2a4f,
-  0x8598, 0x22c2,
-  0x8599, 0x2a50,
-  0x85a2, 0x1e5a,
-  0x85a3, 0x2a59,
-  0x85b2, 0x1ea2,
-  0x85b3, 0x2a68,
-  0x8640, 0x2ab4,
-  0x864a, 0x236d,
-  0x864b, 0x2abe,
-  0x8654, 0x2247,
-  0x8655, 0x2ac7,
-  0x8668, 0x236c,
-  0x8669, 0x2ada,
-  0x8680, 0x2af0,
-  0x8696, 0x219c,
-  0x8697, 0x2b06,
-  0x8699, 0x20c9,
-  0x869a, 0x2b08,
-  0x86a1, 0x21f0,
-  0x86a2, 0x2b0f,
-  0x86ca, 0x210b,
-  0x86cb, 0x2b37,
-  0x86cc, 0x20de,
-  0x86cd, 0x2b38,
-  0x86ce, 0x1eaa,
-  0x86cf, 0x2b39,
-  0x86d1, 0x222c,
-  0x86d2, 0x2b3b,
-  0x86dc, 0x20d8,
-  0x86dd, 0x22c0,
-  0x86de, 0x2b45,
-  0x86e1, 0x206f,
-  0x86e2, 0x2b48,
-  0x86e8, 0x21a1,
-  0x86e9, 0x2b4e,
-  0x86ee, 0x2379,
-  0x86ef, 0x2b53,
-  0x86f4, 0x2372,
-  0x86f5, 0x2b58,
-  0x8740, 0x216a,
-  0x8741, 0x2b62,
-  0x8744, 0x237c,
-  0x8745, 0x2b65,
-  0x8749, 0x20b0,
-  0x874a, 0x2b69,
-  0x874b, 0x237a,
-  0x874c, 0x1e74,
-  0x874d, 0x2b6a,
-  0x874f, 0x2377,
-  0x8750, 0x2b6c,
-  0x8757, 0x1f4c,
-  0x8758, 0x2b73,
-  0x875a, 0x2378,
-  0x875b, 0x21cf,
-  0x875c, 0x2368,
-  0x875d, 0x2b75,
-  0x875e, 0x2371,
-  0x875f, 0x2b76,
-  0x8760, 0x2369,
-  0x8761, 0x2b77,
-  0x8766, 0x2674,
-  0x8767, 0x2b7c,
-  0x877a, 0x236f,
-  0x877b, 0x2b8f,
-  0x877d, 0x2370,
-  0x877e, 0x2b91,
-  0x8780, 0x2b92,
-  0x8781, 0x2376,
-  0x8782, 0x2373,
-  0x8783, 0x2b93,
-  0x8786, 0x237f,
-  0x8787, 0x2b96,
-  0x8788, 0x2374,
-  0x8789, 0x2b97,
-  0x878a, 0x20b5,
-  0x878b, 0x2b98,
-  0x878d, 0x1edb,
-  0x878e, 0x2672,
-  0x878f, 0x2b9a,
-  0x8793, 0x236e,
-  0x8794, 0x2b9e,
-  0x8798, 0x21b7,
-  0x8799, 0x2ba2,
-  0x879d, 0x2375,
-  0x879e, 0x2ba6,
-  0x87a3, 0x2382,
-  0x87a4, 0x2bab,
-  0x87a7, 0x209e,
-  0x87a8, 0x2bae,
-  0x87b3, 0x236b,
-  0x87b4, 0x2bb9,
-  0x87b5, 0x2039,
-  0x87b6, 0x2bba,
-  0x87bb, 0x269f,
-  0x87bc, 0x2bbf,
-  0x87bf, 0x237d,
-  0x87c0, 0x21f5,
-  0x87c1, 0x2bc2,
-  0x87c2, 0x2381,
-  0x87c3, 0x2bc3,
-  0x87ca, 0x237b,
-  0x87cb, 0x237e,
-  0x87cc, 0x21cc,
-  0x87cd, 0x2bca,
-  0x87cf, 0x22db,
-  0x87d0, 0x2bcc,
-  0x87d2, 0x236a,
-  0x87d3, 0x2689,
-  0x87d4, 0x2bce,
-  0x87d5, 0x2697,
-  0x87d6, 0x2bcf,
-  0x87da, 0x22a1,
-  0x87db, 0x2bd3,
-  0x87f7, 0x2383,
-  0x87f8, 0x1f3d,
-  0x87f9, 0x2bef,
-  0x87fa, 0x218f,
-  0x87fb, 0x2bf0,
-  0x8840, 0x2246,
-  0x8841, 0x2248,
-  0x8842, 0x2bf4,
-  0x8844, 0x217e,
-  0x8845, 0x2bf6,
-  0x8846, 0x2180,
-  0x8847, 0x2bf7,
-  0x8880, 0x2c2f,
-  0x88ba, 0x232a,
-  0x88bb, 0x2c69,
-  0x88cc, 0x228b,
-  0x88cd, 0x2c7a,
-  0x88d4, 0x1f85,
-  0x88d5, 0x2c81,
-  0x88d7, 0x2325,
-  0x88d8, 0x2c83,
-  0x88df, 0x232c,
-  0x88e0, 0x2c8a,
-  0x88e5, 0x232e,
-  0x88e6, 0x2c8f,
-  0x88f2, 0x2205,
-  0x88f3, 0x1e38,
-  0x88f4, 0x2c9b,
-  0x88f6, 0x1e73,
-  0x88f7, 0x2c9d,
-  0x8940, 0x2ca5,
-  0x894b, 0x1fe3,
-  0x894c, 0x2339,
-  0x894d, 0x2cb0,
-  0x894e, 0x232b,
-  0x894f, 0x2cb1,
-  0x8950, 0x232d,
-  0x8951, 0x2cb2,
-  0x8954, 0x217f,
-  0x8955, 0x2cb5,
-  0x895d, 0x21a7,
-  0x895e, 0x2cbd,
-  0x895f, 0x232f,
-  0x8960, 0x2cbe,
-  0x896d, 0x1e7d,
-  0x896e, 0x2ccb,
-  0x8971, 0x20d6,
-  0x8972, 0x2cce,
-  0x897c, 0x1ec2,
-  0x897d, 0x2cd8,
-  0x8980, 0x2cda,
-  0x898b, 0x22b2,
-  0x898c, 0x2ce5,
-  0x8999, 0x1edf,
-  0x899a, 0x2cf2,
-  0x899e, 0x1ef9,
-  0x899f, 0x2cf6,
-  0x89a6, 0x20d9,
-  0x89a7, 0x2cfd,
-  0x89a8, 0x1fdd,
-  0x89a9, 0x2cfe,
-  0x89af, 0x2167,
-  0x89b0, 0x2d04,
-  0x89ba, 0x21ed,
-  0x89bb, 0x2d0e,
-  0x89be, 0x2007,
-  0x89bf, 0x2326,
-  0x89c0, 0x2329,
-  0x89c1, 0x2d11,
-  0x89c4, 0x1f52,
-  0x89c5, 0x203b,
-  0x89c6, 0x2328,
-  0x89c7, 0x2d14,
-  0x89c8, 0x2327,
-  0x89c9, 0x2d15,
-  0x89ce, 0x1e2b,
-  0x89cf, 0x2d1a,
-  0x89d1, 0x22ae,
-  0x89d2, 0x2d1c,
-  0x89d8, 0x1f49,
-  0x89d9, 0x2d22,
-  0x89db, 0x2138,
-  0x89dc, 0x2d24,
-  0x89f4, 0x2081,
-  0x89f5, 0x2d3c,
-  0x8a40, 0x2d46,
-  0x8a41, 0x1f7c,
-  0x8a42, 0x2d47,
-  0x8a59, 0x235b,
-  0x8a5a, 0x1ede,
-  0x8a5b, 0x2d5e,
-  0x8a5c, 0x1fa2,
-  0x8a5d, 0x2d5f,
-  0x8a5e, 0x1efa,
-  0x8a5f, 0x2d60,
-  0x8a79, 0x22ad,
-  0x8a7a, 0x2d7a,
-  0x8a80, 0x2d7f,
-  0x8ae4, 0x203f,
-  0x8ae5, 0x2de3,
-  0x8b40, 0x2dfd,
-  0x8b44, 0x1f0e,
-  0x8b45, 0x2e01,
-  0x8b49, 0x23f9,
-  0x8b4a, 0x2e05,
-  0x8b7a, 0x23fc,
-  0x8b7b, 0x2e35,
-  0x8b80, 0x2e39,
-  0x8b8c, 0x2069,
-  0x8b8d, 0x2e45,
-  0x8b9e, 0x23f7,
-  0x8b9f, 0x2e56,
-  0x8bb3, 0x23f6,
-  0x8bb4, 0x2e6a,
-  0x8bb9, 0x23fd,
-  0x8bba, 0x2e6f,
-  0x8bbe, 0x23f8,
-  0x8bbf, 0x2e73,
-  0x8bc6, 0x23fa,
-  0x8bc7, 0x2e7a,
-  0x8bc8, 0x23fe,
-  0x8bc9, 0x1fa8,
-  0x8bca, 0x2e7b,
-  0x8bd4, 0x2401,
-  0x8bd5, 0x2e85,
-  0x8bdc, 0x23ff,
-  0x8bdd, 0x2e8c,
-  0x8be5, 0x2400,
-  0x8be6, 0x2e94,
-  0x8beb, 0x2221,
-  0x8bec, 0x2e99,
-  0x8bf0, 0x2122,
-  0x8bf1, 0x2e9d,
-  0x8c40, 0x2eab,
-  0x8c44, 0x23fb,
-  0x8c45, 0x2eaf,
-  0x8c4f, 0x215a,
-  0x8c50, 0x2eb9,
-  0x8c57, 0x21e5,
-  0x8c58, 0x2ec0,
-  0x8c5c, 0x2057,
-  0x8c5d, 0x2ec4,
-  0x8c80, 0x2ee6,
-  0x8c8b, 0x20e5,
-  0x8c8c, 0x2ef1,
-  0x8c8d, 0x212f,
-  0x8c8e, 0x20a3,
-  0x8c8f, 0x2121,
-  0x8c90, 0x2ef2,
-  0x8c91, 0x21d4,
-  0x8c92, 0x1fe5,
-  0x8c93, 0x2ef3,
-  0x8c99, 0x1e8a,
-  0x8c9a, 0x1e37,
-  0x8c9b, 0x2ef9,
-  0x8ca2, 0x1f9e,
-  0x8ca3, 0x22a6,
-  0x8ca4, 0x21e8,
-  0x8ca5, 0x2f00,
-  0x8ca6, 0x1eda,
-  0x8ca7, 0x1eb9,
-  0x8ca8, 0x2f01,
-  0x8cc0, 0x235c,
-  0x8cc1, 0x2f19,
-  0x8cd2, 0x2050,
-  0x8cd3, 0x1e67,
-  0x8cd4, 0x2f2a,
-  0x8cd5, 0x23f4,
-  0x8cd6, 0x2f2b,
-  0x8cd9, 0x213e,
-  0x8cda, 0x2f2e,
-  0x8cf9, 0x1f16,
-  0x8cfa, 0x2f4d,
-  0x8d40, 0x2f52,
-  0x8d73, 0x2389,
-  0x8d74, 0x2f85,
-  0x8d75, 0x1eb7,
-  0x8d76, 0x2f86,
-  0x8d7b, 0x21b4,
-  0x8d7c, 0x2f8b,
-  0x8d80, 0x2f8e,
-  0x8d88, 0x238f,
-  0x8d89, 0x2f96,
-  0x8d8f, 0x1f1a,
-  0x8d90, 0x2f9c,
-  0x8d9e, 0x238b,
-  0x8d9f, 0x2faa,
-  0x8db9, 0x238a,
-  0x8dba, 0x2fc4,
-  0x8de2, 0x2391,
-  0x8de3, 0x2fec,
-  0x8de4, 0x2271,
-  0x8de5, 0x2fed,
-  0x8de7, 0x2388,
-  0x8de8, 0x2fef,
-  0x8df7, 0x238e,
-  0x8df8, 0x2ffe,
-  0x8dfe, 0x238d,
-  0x8e40, 0x3004,
-  0x8e46, 0x238c,
-  0x8e47, 0x300a,
-  0x8e56, 0x2390,
-  0x8e57, 0x3019,
-  0x8e58, 0x2033,
-  0x8e59, 0x301a,
-  0x8e5a, 0x223c,
-  0x8e5b, 0x301b,
-  0x8e68, 0x1fe9,
-  0x8e69, 0x3028,
-  0x8e6e, 0x2055,
-  0x8e6f, 0x302d,
-  0x8e70, 0x2392,
-  0x8e71, 0x302e,
-  0x8e80, 0x2324,
-  0x8e81, 0x303c,
-  0x8e9b, 0x2143,
-  0x8e9c, 0x3056,
-  0x8e9f, 0x2129,
-  0x8ea0, 0x3059,
-  0x8ea4, 0x2277,
-  0x8ea5, 0x305d,
-  0x8ea7, 0x1ea7,
-  0x8ea8, 0x305f,
-  0x8eac, 0x2285,
-  0x8ead, 0x3063,
-  0x8eae, 0x2384,
-  0x8eaf, 0x3064,
-  0x8ebd, 0x2387,
-  0x8ebe, 0x2386,
-  0x8ebf, 0x3072,
-  0x8ec3, 0x2290,
-  0x8ec4, 0x3076,
-  0x8ec5, 0x1e44,
-  0x8ec6, 0x3077,
-  0x8ecd, 0x1e32,
-  0x8ece, 0x2385,
-  0x8ecf, 0x307e,
-  0x8ed6, 0x1f13,
-  0x8ed7, 0x1f73,
-  0x8ed8, 0x3085,
-  0x8eec, 0x1fe0,
-  0x8eed, 0x3099,
-  0x8f40, 0x30ab,
-  0x8f52, 0x2087,
-  0x8f53, 0x1e78,
-  0x8f54, 0x23ae,
-  0x8f55, 0x1ef6,
-  0x8f56, 0x1f31,
-  0x8f57, 0x30bd,
-  0x8f5d, 0x2045,
-  0x8f5e, 0x30c3,
-  0x8f64, 0x2178,
-  0x8f65, 0x30c9,
-  0x8f80, 0x30e3,
-  0x8f86, 0x23f5,
-  0x8f87, 0x30e9,
-  0x8f88, 0x2275,
-  0x8f89, 0x30ea,
-  0x8f95, 0x266e,
-  0x8f96, 0x30f6,
-  0x8f97, 0x1eb0,
-  0x8f98, 0x30f7,
-  0x8f9b, 0x2083,
-  0x8f9c, 0x30fa,
-  0x8f9d, 0x2188,
-  0x8f9e, 0x30fb,
-  0x8fa1, 0x267c,
-  0x8fa2, 0x30fe,
-  0x8fbd, 0x1fc5,
-  0x8fbe, 0x3119,
-  0x8fc4, 0x1ea1,
-  0x8fc5, 0x311f,
-  0x8fc6, 0x2393,
-  0x8fc7, 0x3120,
-  0x8fcd, 0x1f0b,
-  0x8fce, 0x3126,
-  0x8fd8, 0x1e7c,
-  0x8fd9, 0x3130,
-  0x9040, 0x3156,
-  0x9080, 0x3195,
-  0x909d, 0x23b4,
-  0x909e, 0x207e,
-  0x909f, 0x31b2,
-  0x90ba, 0x1ee3,
-  0x90bb, 0x31cd,
-  0x90c0, 0x2095,
-  0x90c1, 0x23bb,
-  0x90c2, 0x31d2,
-  0x90c5, 0x23b9,
-  0x90c6, 0x31d5,
-  0x90db, 0x1e28,
-  0x90dc, 0x23bd,
-  0x90dd, 0x31ea,
-  0x90ed, 0x23b5,
-  0x90ee, 0x31fa,
-  0x90f0, 0x23ba,
-  0x90f1, 0x31fc,
-  0x90f7, 0x23b3,
-  0x90f8, 0x3202,
-  0x9140, 0x3209,
-  0x9142, 0x2162,
-  0x9143, 0x320b,
-  0x914b, 0x1e5e,
-  0x914c, 0x3213,
-  0x914d, 0x1e5d,
-  0x914e, 0x3214,
-  0x9151, 0x23b7,
-  0x9152, 0x3217,
-  0x9154, 0x1f2f,
-  0x9155, 0x24df,
-  0x9156, 0x3219,
-  0x9159, 0x23b2,
-  0x915a, 0x214e,
-  0x915b, 0x321c,
-  0x915d, 0x2052,
-  0x915e, 0x321e,
-  0x9161, 0x23bc,
-  0x9162, 0x3221,
-  0x9163, 0x20eb,
-  0x9164, 0x3222,
-  0x916e, 0x2232,
-  0x916f, 0x322c,
-  0x9176, 0x1e3f,
-  0x9177, 0x3233,
-  0x917a, 0x201b,
-  0x917b, 0x20bc,
-  0x917c, 0x23be,
-  0x917d, 0x3236,
-  0x9180, 0x3238,
-  0x9184, 0x1eae,
-  0x9185, 0x323c,
-  0x918d, 0x1efb,
-  0x918e, 0x3244,
-  0x9191, 0x2089,
-  0x9192, 0x3247,
-  0x9193, 0x23b1,
-  0x9194, 0x3248,
-  0x9197, 0x21c4,
-  0x9198, 0x324b,
-  0x919b, 0x2214,
-  0x919c, 0x324e,
-  0x91a9, 0x1fde,
-  0x91aa, 0x2223,
-  0x91ab, 0x23b6,
-  0x91ac, 0x325b,
-  0x91ba, 0x268c,
-  0x91bb, 0x24de,
-  0x91bc, 0x3269,
-  0x91bf, 0x24e0,
-  0x91c0, 0x326c,
-  0x91c3, 0x23b8,
-  0x91c4, 0x326f,
-  0x91cd, 0x1e81,
-  0x91ce, 0x3278,
-  0x91d0, 0x1ffe,
-  0x91d1, 0x1f51,
-  0x91d2, 0x21e1,
-  0x91d3, 0x327a,
-  0x91d4, 0x23b0,
-  0x91d5, 0x327b,
-  0x91d6, 0x1fce,
-  0x91d7, 0x327c,
-  0x91d8, 0x211e,
-  0x91d9, 0x2021,
-  0x91da, 0x327d,
-  0x91df, 0x24e1,
-  0x91e0, 0x3282,
-  0x91e2, 0x24a3,
-  0x91e3, 0x3284,
-  0x91ea, 0x24a4,
-  0x91eb, 0x328b,
-  0x91f0, 0x2273,
-  0x91f1, 0x3290,
-  0x91f2, 0x21b0,
-  0x91f3, 0x3291,
-  0x9240, 0x329d,
-  0x9280, 0x32dc,
-  0x92b6, 0x21d1,
-  0x92b7, 0x3312,
-  0x92ce, 0x211c,
-  0x92cf, 0x3329,
-  0x92d0, 0x235d,
-  0x92d1, 0x332a,
-  0x92d4, 0x2682,
-  0x92d5, 0x332d,
-  0x92df, 0x210d,
-  0x92e0, 0x205a,
-  0x92e1, 0x3337,
-  0x92fe, 0x1f8d,
-  0x9340, 0x3354,
-  0x9350, 0x21ff,
-  0x9351, 0x3364,
-  0x935d, 0x1f58,
-  0x935e, 0x3370,
-  0x9370, 0x215b,
-  0x9371, 0x3382,
-  0x9376, 0x1eb6,
-  0x9377, 0x3387,
-  0x9380, 0x338f,
-  0x938c, 0x20db,
-  0x938d, 0x339b,
-  0x939d, 0x2360,
-  0x939e, 0x33ab,
-  0x93a5, 0x2361,
-  0x93a6, 0x33b2,
-  0x93a7, 0x2040,
-  0x93a8, 0x33b3,
-  0x93b4, 0x228e,
-  0x93b5, 0x33bf,
-  0x93b8, 0x1fdf,
-  0x93b9, 0x33c2,
-  0x93bb, 0x235e,
-  0x93bc, 0x33c4,
-  0x93bd, 0x1e6a,
-  0x93be, 0x33c5,
-  0x93c6, 0x2002,
-  0x93c7, 0x33cd,
-  0x93cf, 0x2093,
-  0x93d0, 0x33d5,
-  0x93d7, 0x235f,
-  0x93d8, 0x33dc,
-  0x93db, 0x1eac,
-  0x93dc, 0x1e54,
-  0x93dd, 0x33df,
-  0x93e1, 0x1f08,
-  0x93e2, 0x33e3,
-  0x93e4, 0x20c0,
-  0x93e5, 0x2362,
-  0x93e6, 0x33e5,
-  0x93e9, 0x2160,
-  0x93ea, 0x33e8,
-  0x93eb, 0x219d,
-  0x93ec, 0x1f8e,
-  0x93ed, 0x222d,
-  0x93ee, 0x33e9,
-  0x93ef, 0x2047,
-  0x93f0, 0x33ea,
-  0x93f1, 0x2262,
-  0x93f2, 0x33eb,
-  0x93f4, 0x1f67,
-  0x93f5, 0x1eb2,
-  0x93f6, 0x33ed,
-  0x93fa, 0x1ea9,
-  0x93fb, 0x33f1,
-  0x93fe, 0x1fcc,
-  0x9440, 0x33f4,
-  0x9444, 0x1f72,
-  0x9445, 0x33f8,
-  0x944d, 0x2098,
-  0x944e, 0x3400,
-  0x9450, 0x1e52,
-  0x9451, 0x20a4,
-  0x9452, 0x1f1c,
-  0x9453, 0x228f,
-  0x9454, 0x3402,
-  0x9455, 0x1fed,
-  0x9456, 0x3403,
-  0x9458, 0x2365,
-  0x9459, 0x3405,
-  0x945b, 0x1e2d,
-  0x945c, 0x2152,
-  0x945d, 0x2366,
-  0x945e, 0x3407,
-  0x945f, 0x20fa,
-  0x9460, 0x3408,
-  0x9464, 0x2363,
-  0x9465, 0x340c,
-  0x9466, 0x209a,
-  0x9467, 0x340d,
-  0x946e, 0x203c,
-  0x946f, 0x3414,
-  0x9472, 0x1ff6,
-  0x9473, 0x3417,
-  0x9474, 0x2364,
-  0x9475, 0x3418,
-  0x9476, 0x1e69,
-  0x9477, 0x3419,
-  0x9478, 0x2367,
-  0x9479, 0x341a,
-  0x947a, 0x211d,
-  0x947b, 0x341b,
-  0x9480, 0x2259,
-  0x9481, 0x2056,
-  0x9482, 0x2163,
-  0x9483, 0x341f,
-  0x9487, 0x1fa9,
-  0x9488, 0x1ffc,
-  0x9489, 0x3423,
-  0x94a1, 0x1e2e,
-  0x94a2, 0x343b,
-  0x94b3, 0x1ebc,
-  0x94b4, 0x344c,
-  0x94b5, 0x2142,
-  0x94b6, 0x344d,
-  0x94bf, 0x201e,
-  0x94c0, 0x1e43,
-  0x94c1, 0x3456,
-  0x94cc, 0x24d4,
-  0x94cd, 0x3461,
-  0x94d8, 0x226f,
-  0x94d9, 0x346c,
-  0x94e0, 0x1ed7,
-  0x94e1, 0x3473,
-  0x9540, 0x3491,
-  0x9572, 0x212d,
-  0x9573, 0x34c3,
-  0x9580, 0x34cf,
-  0x9583, 0x229b,
-  0x9584, 0x34d2,
-  0x959e, 0x2256,
-  0x959f, 0x24a8,
-  0x95a0, 0x34ec,
-  0x95b3, 0x1e79,
-  0x95b4, 0x34ff,
-  0x95ba, 0x225a,
-  0x95bb, 0x3505,
-  0x95cf, 0x24a7,
-  0x95d0, 0x3519,
-  0x95d1, 0x2686,
-  0x95d2, 0x24a6,
-  0x95d3, 0x351a,
-  0x95d4, 0x21ce,
-  0x95d5, 0x351b,
-  0x95e1, 0x24a9,
-  0x95e2, 0x3527,
-  0x95e7, 0x1fe7,
-  0x95e8, 0x352c,
-  0x95f1, 0x2112,
-  0x95f2, 0x3535,
-  0x95f8, 0x213c,
-  0x95f9, 0x353b,
-  0x95fe, 0x1f5c,
-  0x9640, 0x3540,
-  0x9656, 0x24c4,
-  0x9657, 0x3556,
-  0x967c, 0x1ecc,
-  0x967d, 0x357b,
-  0x9680, 0x357d,
-  0x9740, 0x35fc,
-  0x9767, 0x246a,
-  0x9768, 0x3623,
-  0x976c, 0x2175,
-  0x976d, 0x3627,
-  0x976e, 0x246d,
-  0x976f, 0x3628,
-  0x9780, 0x3638,
-  0x9796, 0x246b,
-  0x9797, 0x225f,
-  0x9798, 0x364e,
-  0x979d, 0x1ece,
-  0x979e, 0x3653,
-  0x97a3, 0x2272,
-  0x97a4, 0x3658,
-  0x97bf, 0x2473,
-  0x97c0, 0x3673,
-  0x97ee, 0x21fe,
-  0x97ef, 0x36a1,
-  0x97f7, 0x1efe,
-  0x97f8, 0x36a9,
-  0x9840, 0x36b0,
-  0x9845, 0x2475,
-  0x9846, 0x36b5,
-  0x9849, 0x220a,
-  0x984a, 0x36b8,
-  0x984f, 0x1f6f,
-  0x9850, 0x36bd,
-  0x9871, 0x2468,
-  0x9872, 0x36de,
-  0x9873, 0x2100,
-  0x9874, 0x36df,
-  0x9880, 0x36ea,
-  0x9881, 0x2476,
-  0x9882, 0x36eb,
-  0x988b, 0x1f27,
-  0x988c, 0x20d7,
-  0x988d, 0x36f4,
-  0x98a0, 0x247c,
-  0x98a1, 0x3707,
-  0x98aa, 0x1fa1,
-  0x98ab, 0x3710,
-  0x98b6, 0x22aa,
-  0x98b7, 0x2005,
-  0x98b8, 0x371b,
-  0x98ba, 0x246c,
-  0x98bb, 0x371d,
-  0x98c7, 0x203e,
-  0x98c8, 0x3729,
-  0x98cb, 0x1e4c,
-  0x98cc, 0x372c,
-  0x98d0, 0x213a,
-  0x98d1, 0x3730,
-  0x98d3, 0x2204,
-  0x98d4, 0x3732,
-  0x98e3, 0x20c3,
-  0x98e4, 0x2140,
-  0x98e5, 0x2477,
-  0x98e6, 0x3741,
-  0x98ef, 0x2474,
-  0x98f0, 0x374a,
-  0x98f2, 0x20dd,
-  0x98f3, 0x374c,
-  0x9940, 0x3758,
-  0x9943, 0x1f68,
-  0x9944, 0x375b,
-  0x9945, 0x2185,
-  0x9946, 0x375c,
-  0x9966, 0x2472,
-  0x9967, 0x377c,
-  0x996e, 0x1eb5,
-  0x996f, 0x3783,
-  0x9975, 0x2478,
-  0x9976, 0x3789,
-  0x997a, 0x1f8b,
-  0x997b, 0x2484,
-  0x997c, 0x378d,
-  0x9980, 0x3790,
-  0x9985, 0x2699,
-  0x9986, 0x3795,
-  0x9989, 0x2482,
-  0x998a, 0x3798,
-  0x998e, 0x20a1,
-  0x998f, 0x379c,
-  0x9991, 0x1f92,
-  0x9992, 0x379e,
-  0x9999, 0x1f38,
-  0x999a, 0x37a5,
-  0x99a9, 0x2485,
-  0x99aa, 0x37b4,
-  0x99b0, 0x2480,
-  0x99b1, 0x246e,
-  0x99b2, 0x37ba,
-  0x99b3, 0x247b,
-  0x99b4, 0x2486,
-  0x99b5, 0x2471,
-  0x99b6, 0x37bb,
-  0x99bd, 0x2483,
-  0x99be, 0x2470,
-  0x99bf, 0x37c2,
-  0x99c0, 0x2469,
-  0x99c1, 0x37c3,
-  0x99c2, 0x247f,
-  0x99c3, 0x37c4,
-  0x99c9, 0x246f,
-  0x99ca, 0x37ca,
-  0x99ce, 0x2481,
-  0x99cf, 0x37ce,
-  0x99d1, 0x2220,
-  0x99d2, 0x37d0,
-  0x99da, 0x1ff5,
-  0x99db, 0x37d8,
-  0x99e0, 0x20f4,
-  0x99e1, 0x37dd,
-  0x99e5, 0x247d,
-  0x99e6, 0x37e1,
-  0x99e8, 0x2479,
-  0x99e9, 0x37e3,
-  0x99ec, 0x247e,
-  0x99ed, 0x37e6,
-  0x99f4, 0x247a,
-  0x99f5, 0x37ed,
-  0x9a40, 0x37f7,
-  0x9a4a, 0x20e3,
-  0x9a4b, 0x3801,
-  0x9a57, 0x20ad,
-  0x9a58, 0x380d,
-  0x9a65, 0x24cb,
-  0x9a66, 0x381a,
-  0x9a67, 0x1f53,
-  0x9a68, 0x381b,
-  0x9a71, 0x2159,
-  0x9a72, 0x3824,
-  0x9a76, 0x2013,
-  0x9a77, 0x1f33,
-  0x9a78, 0x3828,
-  0x9a80, 0x382f,
-  0x9a88, 0x1e5c,
-  0x9a89, 0x3837,
-  0x9a8c, 0x2488,
-  0x9a8d, 0x383a,
-  0x9a91, 0x2487,
-  0x9a92, 0x383e,
-  0x9a97, 0x248a,
-  0x9a98, 0x3843,
-  0x9a9a, 0x2489,
-  0x9a9b, 0x248b,
-  0x9a9c, 0x3845,
-  0x9a9e, 0x1f83,
-  0x9a9f, 0x3847,
-  0x9aa2, 0x210f,
-  0x9aa3, 0x1fdb,
-  0x9aa4, 0x384a,
-  0x9aaa, 0x20af,
-  0x9aab, 0x3850,
-  0x9ad0, 0x24c0,
-  0x9ad1, 0x3875,
-  0x9ad6, 0x226d,
-  0x9ad7, 0x387a,
-  0x9ada, 0x24c1,
-  0x9adb, 0x387d,
-  0x9ae2, 0x20ca,
-  0x9ae3, 0x3884,
-  0x9ae4, 0x20e7,
-  0x9ae5, 0x24c2,
-  0x9ae6, 0x3885,
-  0x9b40, 0x389e,
-  0x9b80, 0x38dd,
-  0x9bd1, 0x23dc,
-  0x9bd2, 0x392e,
-  0x9bdc, 0x23db,
-  0x9bdd, 0x3938,
-  0x9c40, 0x395a,
-  0x9c53, 0x205e,
-  0x9c54, 0x396d,
-  0x9c59, 0x2244,
-  0x9c5a, 0x23e2,
-  0x9c5b, 0x3972,
-  0x9c5c, 0x20d4,
-  0x9c5d, 0x3973,
-  0x9c75, 0x219f,
-  0x9c76, 0x398b,
-  0x9c79, 0x1e66,
-  0x9c7a, 0x398e,
-  0x9c80, 0x3993,
-  0x9c86, 0x1f63,
-  0x9c87, 0x3999,
-  0x9c9d, 0x23dd,
-  0x9c9e, 0x39af,
-  0x9cab, 0x216b,
-  0x9cac, 0x39bc,
-  0x9cca, 0x22b5,
-  0x9ccb, 0x39da,
-  0x9ccf, 0x1f26,
-  0x9cd0, 0x39de,
-  0x9ce6, 0x1e63,
-  0x9ce7, 0x2088,
-  0x9ce8, 0x39f4,
-  0x9cec, 0x1ebd,
-  0x9ced, 0x39f8,
-  0x9cee, 0x2341,
-  0x9cef, 0x39f9,
-  0x9cfb, 0x1f4b,
-  0x9cfc, 0x3a05,
-  0x9cfe, 0x2292,
-  0x9d40, 0x3a07,
-  0x9d42, 0x2124,
-  0x9d43, 0x3a09,
-  0x9d46, 0x2048,
-  0x9d47, 0x23e0,
-  0x9d48, 0x3a0c,
-  0x9d4d, 0x2077,
-  0x9d4e, 0x3a11,
-  0x9d4f, 0x223a,
-  0x9d50, 0x3a12,
-  0x9d61, 0x20b1,
-  0x9d62, 0x3a23,
-  0x9d68, 0x1f41,
-  0x9d69, 0x201c,
-  0x9d6a, 0x3a29,
-  0x9d6e, 0x22b8,
-  0x9d6f, 0x3a2d,
-  0x9d71, 0x2276,
-  0x9d72, 0x3a2f,
-  0x9d75, 0x1f9b,
-  0x9d76, 0x3a32,
-  0x9d7b, 0x1f9f,
-  0x9d7c, 0x3a37,
-  0x9d7d, 0x25ca,
-  0x9d7e, 0x3a38,
-  0x9d80, 0x3a39,
-  0x9d8a, 0x20be,
-  0x9d8b, 0x3a43,
-  0x9d8d, 0x1fb4,
-  0x9d8e, 0x3a45,
-  0x9d91, 0x23d7,
-  0x9d92, 0x3a48,
-  0x9d99, 0x2105,
-  0x9d9a, 0x3a4f,
-  0x9da1, 0x23e1,
-  0x9da2, 0x1fec,
-  0x9da3, 0x3a56,
-  0x9da7, 0x23ea,
-  0x9da8, 0x3a5a,
-  0x9dac, 0x23e3,
-  0x9dad, 0x210e,
-  0x9dae, 0x3a5e,
-  0x9db2, 0x1fa6,
-  0x9db3, 0x2004,
-  0x9db4, 0x3a62,
-  0x9dbe, 0x1f9d,
-  0x9dbf, 0x3a6c,
-  0x9dc6, 0x23e5,
-  0x9dc7, 0x3a73,
-  0x9dc9, 0x2264,
-  0x9dca, 0x3a75,
-  0x9dcd, 0x24e2,
-  0x9dce, 0x3a78,
-  0x9dd2, 0x23de,
-  0x9dd3, 0x3a7c,
-  0x9dd5, 0x1ec4,
-  0x9dd6, 0x3a7e,
-  0x9de1, 0x22b6,
-  0x9de2, 0x20a9,
-  0x9de3, 0x3a89,
-  0x9df1, 0x212b,
-  0x9df2, 0x3a97,
-  0x9df4, 0x20a5,
-  0x9df5, 0x3a99,
-  0x9df7, 0x268b,
-  0x9df8, 0x3a9b,
-  0x9dfa, 0x1f76,
-  0x9dfb, 0x3a9d,
-  0x9dfd, 0x216d,
-  0x9dfe, 0x3a9f,
-  0x9e40, 0x3aa0,
-  0x9e45, 0x2001,
-  0x9e46, 0x3aa5,
-  0x9e48, 0x2191,
-  0x9e49, 0x1e50,
-  0x9e4a, 0x3aa7,
-  0x9e52, 0x1f9c,
-  0x9e53, 0x3aaf,
-  0x9e54, 0x23da,
-  0x9e55, 0x3ab0,
-  0x9e56, 0x2053,
-  0x9e57, 0x3ab1,
-  0x9e5d, 0x23e9,
-  0x9e5e, 0x23e4,
-  0x9e5f, 0x3ab7,
-  0x9e61, 0x21d5,
-  0x9e62, 0x3ab9,
-  0x9e63, 0x23e6,
-  0x9e64, 0x3aba,
-  0x9e67, 0x23df,
-  0x9e68, 0x3abd,
-  0x9e6c, 0x1e4f,
-  0x9e6d, 0x3ac1,
-  0x9e6f, 0x23d9,
-  0x9e70, 0x3ac3,
-  0x9e72, 0x2014,
-  0x9e73, 0x3ac5,
-  0x9e74, 0x23ec,
-  0x9e75, 0x23eb,
-  0x9e76, 0x3ac6,
-  0x9e7b, 0x23d8,
-  0x9e7c, 0x23ee,
-  0x9e7d, 0x3acb,
-  0x9e80, 0x3acd,
-  0x9e85, 0x268e,
-  0x9e86, 0x3ad2,
-  0x9e87, 0x23ed,
-  0x9e88, 0x3ad3,
-  0x9e91, 0x1ffa,
-  0x9e92, 0x3adc,
-  0x9e96, 0x23d6,
-  0x9e97, 0x23e8,
-  0x9e98, 0x3ae0,
-  0x9ea2, 0x2106,
-  0x9ea3, 0x3aea,
-  0x9ea6, 0x200b,
-  0x9ea7, 0x3aed,
-  0x9ea9, 0x2166,
-  0x9eaa, 0x3aef,
-  0x9eae, 0x23ef,
-  0x9eaf, 0x3af3,
-  0x9eb3, 0x2189,
-  0x9eb4, 0x2058,
-  0x9eb5, 0x3af7,
-  0x9eb7, 0x23e7,
-  0x9eb8, 0x3af9,
-  0x9ef5, 0x21a3,
-  0x9ef6, 0x3b36,
-  0x9f40, 0x3b3f,
-  0x9f4e, 0x217a,
-  0x9f4f, 0x3b4d,
-  0x9f6f, 0x21a5,
-  0x9f70, 0x3b6d,
-  0x9f80, 0x3b7c,
-  0x9f92, 0x2022,
-  0x9f93, 0x3b8e,
-  0x9f98, 0x24d6,
-  0x9f99, 0x3b93,
-  0x9fa6, 0x233a,
-  0x9fa7, 0x3ba0,
-  0x9fa9, 0x1eee,
-  0x9faa, 0x3ba2,
-  0x9fac, 0x24d5,
-  0x9fad, 0x3ba4,
-  0x9fc9, 0x2228,
-  0x9fca, 0x3bc0,
-  0x9fcd, 0x24d7,
-  0x9fce, 0x3bc3,
-  0x9fe1, 0x20fc,
-  0x9fe2, 0x3bd6,
-  0x9feb, 0x1e87,
-  0x9fec, 0x3bdf,
-  0x9fee, 0x24d8,
-  0x9fef, 0x3be1,
-  0x9ff4, 0x1eba,
-  0x9ff5, 0x3be6,
-  0x9ffd, 0x2119,
-  0x9ffe, 0x3bee,
-  0xa040, 0x3bef,
-  0xa043, 0x216c,
-  0xa044, 0x3bf2,
-  0xa046, 0x24d9,
-  0xa047, 0x3bf4,
-  0xa049, 0x2227,
-  0xa04a, 0x3bf6,
-  0xa04e, 0x1e5f,
-  0xa04f, 0x3bfa,
-  0xa054, 0x229f,
-  0xa055, 0x3bff,
-  0xa05a, 0x1f5d,
-  0xa05b, 0x3c04,
-  0xa061, 0x1fbc,
-  0xa062, 0x3c0a,
-  0xa063, 0x24da,
-  0xa064, 0x3c0b,
-  0xa071, 0x2149,
-  0xa072, 0x3c18,
-  0xa074, 0x2046,
-  0xa075, 0x3c1a,
-  0xa080, 0x2000,
-  0xa081, 0x3c24,
-  0xa091, 0x2190,
-  0xa092, 0x3c34,
-  0xa094, 0x2208,
-  0xa095, 0x3c36,
-  0xa096, 0x1ee6,
-  0xa097, 0x3c37,
-  0xa0a9, 0x24c3,
-  0xa0aa, 0x3c49,
-  0xa0bf, 0x20cc,
-  0xa0c0, 0x3c5e,
-  0xa0ce, 0x2340,
-  0xa0cf, 0x3c6c,
-  0xa0d9, 0x1ed1,
-  0xa0da, 0x3c76,
-  0xa0de, 0x21ac,
-  0xa0df, 0x3c7a,
-  0xa0ee, 0x22af,
-  0xa0ef, 0x3c89,
-  0xa1a1, 0x0060,
-  0xa2a1, 0x26a9,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa840, 0x26b3,
-  0xa880, 0x26f2,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa940, 0x2708,
-  0xa959, 0x2720,
-  0xa95c, 0x2722,
-  0xa960, 0x2723,
-  0xa980, 0x2742,
-  0xa996, 0x1e17,
-  0xa9a4, 0x02e2,
-  0xaa40, 0x3c99,
-  0xaa4d, 0x21b6,
-  0xaa4e, 0x1e3d,
-  0xaa4f, 0x3ca6,
-  0xaa71, 0x2235,
-  0xaa72, 0x3cc8,
-  0xaa73, 0x2397,
-  0xaa74, 0x3cc9,
-  0xaa77, 0x2395,
-  0xaa78, 0x3ccc,
-  0xaa7a, 0x223f,
-  0xaa7b, 0x212a,
-  0xaa7c, 0x3cce,
-  0xaa80, 0x3cd1,
-  0xaa9a, 0x1ed2,
-  0xaa9b, 0x3ceb,
-  0xaa9c, 0x2396,
-  0xaa9d, 0x2398,
-  0xaa9e, 0x3cec,
-  0xaa9f, 0x20a2,
-  0xaaa0, 0x3ced,
-  0xaaa1, 0x032e,
-  0xab40, 0x1f64,
-  0xab41, 0x3cee,
-  0xab43, 0x202b,
-  0xab44, 0x3cf0,
-  0xab45, 0x2394,
-  0xab46, 0x2139,
-  0xab47, 0x3cf1,
-  0xab48, 0x215f,
-  0xab49, 0x21c1,
-  0xab4a, 0x239a,
-  0xab4b, 0x3cf2,
-  0xab4d, 0x2399,
-  0xab4e, 0x3cf4,
-  0xab80, 0x3d25,
-  0xaba1, 0x038c,
-  0xac40, 0x3d46,
-  0xac46, 0x21c0,
-  0xac47, 0x3d4c,
-  0xac71, 0x2460,
-  0xac72, 0x3d76,
-  0xac7c, 0x245c,
-  0xac7d, 0x3d80,
-  0xac80, 0x3d82,
-  0xac8d, 0x215d,
-  0xac8e, 0x3d8f,
-  0xac93, 0x2225,
-  0xac94, 0x206a,
-  0xac95, 0x3d94,
-  0xad40, 0x3da0,
-  0xad49, 0x2461,
-  0xad4a, 0x3da9,
-  0xad5e, 0x245b,
-  0xad5f, 0x3dbd,
-  0xad61, 0x2462,
-  0xad62, 0x3dbf,
-  0xad68, 0x1f54,
-  0xad69, 0x3dc5,
-  0xad74, 0x245f,
-  0xad75, 0x3dd0,
-  0xad80, 0x3dda,
-  0xad82, 0x20ec,
-  0xad83, 0x3ddc,
-  0xad87, 0x245d,
-  0xad88, 0x3de0,
-  0xad8b, 0x2463,
-  0xad8c, 0x3de3,
-  0xad91, 0x2464,
-  0xad92, 0x3de8,
-  0xae40, 0x3df7,
-  0xae54, 0x24a5,
-  0xae55, 0x3e0b,
-  0xae62, 0x1e70,
-  0xae63, 0x3e18,
-  0xae80, 0x208f,
-  0xae81, 0x3e34,
-  0xae85, 0x1e42,
-  0xae86, 0x3e38,
-  0xae8b, 0x1f4e,
-  0xae8c, 0x3e3d,
-  0xae94, 0x1eb1,
-  0xae95, 0x3e45,
-  0xaea0, 0x1e8b,
-  0xaf40, 0x3e50,
-  0xaf64, 0x1fc6,
-  0xaf65, 0x3e74,
-  0xaf7b, 0x25ae,
-  0xaf7c, 0x3e8a,
-  0xaf80, 0x3e8d,
-  0xaf82, 0x1f01,
-  0xaf83, 0x2200,
-  0xaf84, 0x3e8f,
-  0xaf8e, 0x25b2,
-  0xaf8f, 0x1e97,
-  0xaf90, 0x3e99,
-  0xaf91, 0x20ab,
-  0xaf92, 0x3e9a,
-  0xaf9c, 0x25b3,
-  0xaf9d, 0x3ea4,
-  0xaf9f, 0x2028,
-  0xafa0, 0x3ea6,
-  0xb040, 0x3ea7,
-  0xb041, 0x25af,
-  0xb043, 0x3ea8,
-  0xb044, 0x25b1,
-  0xb045, 0x3ea9,
-  0xb04f, 0x25ac,
-  0xb050, 0x3eb3,
-  0xb054, 0x1e4e,
-  0xb055, 0x3eb7,
-  0xb057, 0x2202,
-  0xb058, 0x25ab,
-  0xb059, 0x2286,
-  0xb05a, 0x3eb9,
-  0xb05b, 0x25ad,
-  0xb05c, 0x3eba,
-  0xb05d, 0x25b6,
-  0xb05e, 0x3ebb,
-  0xb05f, 0x21e3,
-  0xb060, 0x25b4,
-  0xb062, 0x222f,
-  0xb063, 0x2165,
-  0xb064, 0x25b7,
-  0xb065, 0x3ebc,
-  0xb06c, 0x1ee9,
-  0xb06d, 0x3ec3,
-  0xb07d, 0x1e25,
-  0xb07e, 0x3ed3,
-  0xb080, 0x3ed4,
-  0xb097, 0x25c0,
-  0xb098, 0x3eeb,
-  0xb099, 0x229a,
-  0xb09a, 0x3eec,
-  0xb0a1, 0x03ac,
-  0xb140, 0x3ef3,
-  0xb14b, 0x226e,
-  0xb14c, 0x3efe,
-  0xb14d, 0x1fbd,
-  0xb14e, 0x3eff,
-  0xb14f, 0x1f84,
-  0xb150, 0x20b2,
-  0xb151, 0x3f00,
-  0xb152, 0x2043,
-  0xb153, 0x3f01,
-  0xb180, 0x3f2d,
-  0xb197, 0x2684,
-  0xb198, 0x3f44,
-  0xb1a1, 0x040a,
-  0xb240, 0x3f4d,
-  0xb241, 0x24ef,
-  0xb242, 0x3f4e,
-  0xb267, 0x24ee,
-  0xb268, 0x3f73,
-  0xb26d, 0x2074,
-  0xb26e, 0x3f78,
-  0xb274, 0x2687,
-  0xb275, 0x3f7e,
-  0xb280, 0x24f0,
-  0xb281, 0x3f88,
-  0xb289, 0x268d,
-  0xb28a, 0x3f90,
-  0xb29a, 0x22a0,
-  0xb29b, 0x3fa0,
-  0xb2a1, 0x0468,
-  0xb340, 0x3fa6,
-  0xb343, 0x1fab,
-  0xb344, 0x3fa9,
-  0xb370, 0x26a8,
-  0xb371, 0x3fd5,
-  0xb380, 0x3fe3,
-  0xb388, 0x24e9,
-  0xb389, 0x3feb,
-  0xb38c, 0x24e5,
-  0xb38d, 0x3fee,
-  0xb38e, 0x21fa,
-  0xb38f, 0x3fef,
-  0xb3a1, 0x04c6,
-  0xb440, 0x4001,
-  0xb454, 0x2148,
-  0xb455, 0x4015,
-  0xb458, 0x24e4,
-  0xb459, 0x4018,
-  0xb45e, 0x24e6,
-  0xb45f, 0x20f7,
-  0xb460, 0x401d,
-  0xb461, 0x206b,
-  0xb462, 0x401e,
-  0xb475, 0x22a7,
-  0xb476, 0x4031,
-  0xb47e, 0x24ec,
-  0xb480, 0x4039,
-  0xb483, 0x24eb,
-  0xb484, 0x403c,
-  0xb489, 0x24e3,
-  0xb48a, 0x4041,
-  0xb493, 0x24ea,
-  0xb494, 0x404a,
-  0xb4a1, 0x0524,
-  0xb540, 0x4057,
-  0xb541, 0x1e92,
-  0xb542, 0x4058,
-  0xb54b, 0x1e27,
-  0xb54c, 0x4061,
-  0xb556, 0x1fe6,
-  0xb557, 0x406b,
-  0xb55a, 0x24e7,
-  0xb55b, 0x2012,
-  0xb55c, 0x1eec,
-  0xb55d, 0x406e,
-  0xb561, 0x24e8,
-  0xb562, 0x4072,
-  0xb580, 0x408f,
-  0xb59c, 0x1f66,
-  0xb59d, 0x24dc,
-  0xb59e, 0x40ab,
-  0xb5a1, 0x0582,
-  0xb640, 0x40ae,
-  0xb652, 0x26a2,
-  0xb653, 0x40c0,
-  0xb655, 0x24dd,
-  0xb656, 0x40c2,
-  0xb659, 0x200e,
-  0xb65a, 0x40c5,
-  0xb65b, 0x24db,
-  0xb65c, 0x1eb8,
-  0xb65d, 0x40c6,
-  0xb680, 0x40e8,
-  0xb6a1, 0x05e0,
-  0xb740, 0x4109,
-  0xb74e, 0x2295,
-  0xb74f, 0x4117,
-  0xb751, 0x1e80,
-  0xb752, 0x4119,
-  0xb759, 0x2677,
-  0xb75a, 0x4120,
-  0xb764, 0x2624,
-  0xb765, 0x1f69,
-  0xb766, 0x222b,
-  0xb767, 0x412a,
-  0xb777, 0x257f,
-  0xb778, 0x1f5b,
-  0xb779, 0x413a,
-  0xb780, 0x219b,
-  0xb781, 0x4140,
-  0xb782, 0x267d,
-  0xb783, 0x4141,
-  0xb7a1, 0x063e,
-  0xb840, 0x415f,
-  0xb843, 0x21a0,
-  0xb844, 0x2186,
-  0xb845, 0x4162,
-  0xb846, 0x20ed,
-  0xb847, 0x4163,
-  0xb84d, 0x25b9,
-  0xb84e, 0x4169,
-  0xb851, 0x1fea,
-  0xb852, 0x416c,
-  0xb85a, 0x1ea4,
-  0xb85b, 0x20e1,
-  0xb85c, 0x4174,
-  0xb85d, 0x25b8,
-  0xb85e, 0x2260,
-  0xb85f, 0x4175,
-  0xb860, 0x20e2,
-  0xb861, 0x4176,
-  0xb877, 0x2141,
-  0xb878, 0x418c,
-  0xb880, 0x4193,
-  0xb882, 0x1fc7,
-  0xb883, 0x4195,
-  0xb8a1, 0x069c,
-  0xb940, 0x41b3,
-  0xb950, 0x1e41,
-  0xb951, 0x41c3,
-  0xb961, 0x25e4,
-  0xb962, 0x41d3,
-  0xb97b, 0x1f86,
-  0xb97c, 0x41ec,
-  0xb980, 0x41ef,
-  0xb99d, 0x1fb3,
-  0xb99e, 0x420c,
-  0xb9a0, 0x1eef,
-  0xb9a1, 0x06fa,
-  0xba40, 0x420e,
-  0xba42, 0x22a4,
-  0xba43, 0x4210,
-  0xba44, 0x25e8,
-  0xba45, 0x4211,
-  0xba56, 0x25e3,
-  0xba57, 0x4222,
-  0xba59, 0x2111,
-  0xba5a, 0x4224,
-  0xba60, 0x25e6,
-  0xba61, 0x422a,
-  0xba6a, 0x25e7,
-  0xba6b, 0x4233,
-  0xba74, 0x2041,
-  0xba75, 0x423c,
-  0xba80, 0x4246,
-  0xba84, 0x25ea,
-  0xba85, 0x424a,
-  0xba86, 0x1f8f,
-  0xba87, 0x424b,
-  0xba88, 0x25ec,
-  0xba89, 0x424c,
-  0xba8d, 0x25eb,
-  0xba8e, 0x4250,
-  0xba9e, 0x20d0,
-  0xba9f, 0x201d,
-  0xbaa0, 0x4260,
-  0xbaa1, 0x0758,
-  0xbb40, 0x1ff7,
-  0xbb41, 0x4261,
-  0xbb49, 0x1e8d,
-  0xbb4a, 0x4269,
-  0xbb58, 0x25e9,
-  0xbb59, 0x4277,
-  0xbb5b, 0x25ee,
-  0xbb5c, 0x203a,
-  0xbb5d, 0x4279,
-  0xbb60, 0x2693,
-  0xbb61, 0x427c,
-  0xbb65, 0x25e5,
-  0xbb66, 0x25ed,
-  0xbb67, 0x4280,
-  0xbb68, 0x2009,
-  0xbb69, 0x4281,
-  0xbb6a, 0x2065,
-  0xbb6b, 0x4282,
-  0xbb6e, 0x26a3,
-  0xbb6f, 0x4285,
-  0xbb80, 0x4295,
-  0xbba1, 0x07b6,
-  0xbc40, 0x42b6,
-  0xbc52, 0x25f5,
-  0xbc53, 0x1efc,
-  0xbc54, 0x42c8,
-  0xbc5a, 0x2024,
-  0xbc5b, 0x42ce,
-  0xbc61, 0x269b,
-  0xbc62, 0x42d4,
-  0xbc63, 0x25f3,
-  0xbc64, 0x42d5,
-  0xbc65, 0x22d9,
-  0xbc66, 0x42d6,
-  0xbc67, 0x25f4,
-  0xbc68, 0x42d7,
-  0xbc69, 0x241b,
-  0xbc6a, 0x42d8,
-  0xbc6d, 0x1fc8,
-  0xbc6e, 0x42db,
-  0xbc6f, 0x1f7b,
-  0xbc70, 0x42dc,
-  0xbc71, 0x241d,
-  0xbc72, 0x42dd,
-  0xbc73, 0x224c,
-  0xbc74, 0x1f48,
-  0xbc75, 0x241c,
-  0xbc76, 0x241e,
-  0xbc78, 0x20ff,
-  0xbc79, 0x219a,
-  0xbc7a, 0x42de,
-  0xbc7b, 0x2091,
-  0xbc7c, 0x42df,
-  0xbc7e, 0x20a7,
-  0xbc80, 0x42e1,
-  0xbc82, 0x2423,
-  0xbc83, 0x1e9b,
-  0xbc84, 0x2422,
-  0xbc85, 0x42e3,
-  0xbc86, 0x2110,
-  0xbc87, 0x42e4,
-  0xbc88, 0x228d,
-  0xbc89, 0x1f71,
-  0xbc8a, 0x1ef8,
-  0xbc8b, 0x2421,
-  0xbc8c, 0x42e5,
-  0xbc8f, 0x1ef3,
-  0xbc90, 0x42e8,
-  0xbc9a, 0x21b1,
-  0xbc9b, 0x2426,
-  0xbc9c, 0x2425,
-  0xbc9d, 0x2120,
-  0xbc9e, 0x42f2,
-  0xbca1, 0x0814,
-  0xbd40, 0x42f5,
-  0xbd42, 0x211a,
-  0xbd43, 0x2424,
-  0xbd44, 0x42f7,
-  0xbd45, 0x2428,
-  0xbd46, 0x42f8,
-  0xbd48, 0x242a,
-  0xbd49, 0x2429,
-  0xbd4a, 0x42fa,
-  0xbd4b, 0x2294,
-  0xbd4c, 0x42fb,
-  0xbd4d, 0x22be,
-  0xbd4e, 0x42fc,
-  0xbd4f, 0x1e31,
-  0xbd50, 0x42fd,
-  0xbd57, 0x242c,
-  0xbd58, 0x4304,
-  0xbd59, 0x1fb5,
-  0xbd5a, 0x4305,
-  0xbd66, 0x242b,
-  0xbd67, 0x1faf,
-  0xbd68, 0x4311,
-  0xbd6a, 0x2068,
-  0xbd6b, 0x21e4,
-  0xbd6c, 0x4313,
-  0xbd6f, 0x1f21,
-  0xbd70, 0x4316,
-  0xbd71, 0x2101,
-  0xbd72, 0x4317,
-  0xbd79, 0x217c,
-  0xbd7a, 0x214a,
-  0xbd7b, 0x242d,
-  0xbd7c, 0x431e,
-  0xbd7e, 0x1fd4,
-  0xbd80, 0x4320,
-  0xbd81, 0x1fd1,
-  0xbd82, 0x4321,
-  0xbd89, 0x1e33,
-  0xbd8a, 0x4328,
-  0xbd8b, 0x242f,
-  0xbd8c, 0x4329,
-  0xbd8e, 0x242e,
-  0xbd8f, 0x432b,
-  0xbd90, 0x2430,
-  0xbd91, 0x21db,
-  0xbd92, 0x432c,
-  0xbd97, 0x2158,
-  0xbd98, 0x4331,
-  0xbd9b, 0x1fc2,
-  0xbd9c, 0x4334,
-  0xbda1, 0x0872,
-  0xbe40, 0x4339,
-  0xbe43, 0x22b9,
-  0xbe44, 0x433c,
-  0xbe45, 0x2436,
-  0xbe46, 0x433d,
-  0xbe49, 0x1e8e,
-  0xbe4a, 0x2439,
-  0xbe4b, 0x4340,
-  0xbe51, 0x21c5,
-  0xbe52, 0x2437,
-  0xbe53, 0x2192,
-  0xbe54, 0x4346,
-  0xbe55, 0x243a,
-  0xbe56, 0x1f19,
-  0xbe57, 0x218c,
-  0xbe58, 0x1e40,
-  0xbe59, 0x22b3,
-  0xbe5a, 0x4347,
-  0xbe5d, 0x205f,
-  0xbe5e, 0x2438,
-  0xbe5f, 0x2432,
-  0xbe60, 0x2274,
-  0xbe61, 0x434a,
-  0xbe62, 0x1e9c,
-  0xbe63, 0x2431,
-  0xbe64, 0x2085,
-  0xbe65, 0x434b,
-  0xbe69, 0x2435,
-  0xbe6a, 0x434f,
-  0xbe6c, 0x243b,
-  0xbe6d, 0x4351,
-  0xbe6f, 0x1fb7,
-  0xbe70, 0x2433,
-  0xbe71, 0x4353,
-  0xbe76, 0x2054,
-  0xbe77, 0x21de,
-  0xbe78, 0x4358,
-  0xbe79, 0x2434,
-  0xbe7a, 0x4359,
-  0xbe7c, 0x243d,
-  0xbe7d, 0x1f89,
-  0xbe7e, 0x243c,
-  0xbe80, 0x435b,
-  0xbe83, 0x1f6e,
-  0xbe84, 0x1ed8,
-  0xbe85, 0x435e,
-  0xbe86, 0x1ebf,
-  0xbe87, 0x2445,
-  0xbe88, 0x435f,
-  0xbe89, 0x2249,
-  0xbe8a, 0x4360,
-  0xbe8c, 0x2441,
-  0xbe8d, 0x4362,
-  0xbe8e, 0x1e47,
-  0xbe8f, 0x1f56,
-  0xbe90, 0x4363,
-  0xbe92, 0x2086,
-  0xbe93, 0x4365,
-  0xbe95, 0x2196,
-  0xbe96, 0x4367,
-  0xbe97, 0x2443,
-  0xbe98, 0x243f,
-  0xbe99, 0x4368,
-  0xbe9a, 0x2023,
-  0xbe9b, 0x4369,
-  0xbe9c, 0x2442,
-  0xbe9d, 0x436a,
-  0xbe9f, 0x243e,
-  0xbea0, 0x436c,
-  0xbea1, 0x08d0,
-  0xbf40, 0x26a6,
-  0xbf41, 0x436d,
-  0xbf4d, 0x234e,
-  0xbf4e, 0x2446,
-  0xbf4f, 0x244b,
-  0xbf50, 0x2444,
-  0xbf51, 0x4379,
-  0xbf55, 0x2427,
-  0xbf56, 0x244c,
-  0xbf57, 0x437d,
-  0xbf60, 0x1f0f,
-  0xbf61, 0x4386,
-  0xbf62, 0x2447,
-  0xbf63, 0x2449,
-  0xbf64, 0x2448,
-  0xbf65, 0x4387,
-  0xbf68, 0x21c2,
-  0xbf69, 0x438a,
-  0xbf6c, 0x216e,
-  0xbf6d, 0x438d,
-  0xbf70, 0x1f03,
-  0xbf71, 0x4390,
-  0xbf72, 0x244a,
-  0xbf73, 0x215c,
-  0xbf74, 0x4391,
-  0xbf76, 0x22bb,
-  0xbf77, 0x2450,
-  0xbf78, 0x4393,
-  0xbf79, 0x2694,
-  0xbf7a, 0x244f,
-  0xbf7b, 0x25f6,
-  0xbf7c, 0x2051,
-  0xbf7d, 0x4394,
-  0xbf7e, 0x244e,
-  0xbf80, 0x4395,
-  0xbf82, 0x22ba,
-  0xbf83, 0x1f6d,
-  0xbf84, 0x4397,
-  0xbf89, 0x2452,
-  0xbf8a, 0x2451,
-  0xbf8b, 0x439c,
-  0xbf95, 0x2455,
-  0xbf96, 0x43a6,
-  0xbf97, 0x2289,
-  0xbf98, 0x2116,
-  0xbf99, 0x43a7,
-  0xbf9d, 0x2454,
-  0xbf9e, 0x43ab,
-  0xbfa1, 0x092e,
-  0xc040, 0x20fb,
-  0xc041, 0x43ae,
-  0xc044, 0x2440,
-  0xc045, 0x43b1,
-  0xc04b, 0x2126,
-  0xc04c, 0x1f61,
-  0xc04d, 0x269d,
-  0xc04e, 0x43b7,
-  0xc04f, 0x1f8a,
-  0xc050, 0x2456,
-  0xc051, 0x2459,
-  0xc052, 0x2458,
-  0xc053, 0x43b8,
-  0xc055, 0x1fae,
-  0xc056, 0x43ba,
-  0xc05b, 0x221a,
-  0xc05c, 0x43bf,
-  0xc05e, 0x1f7a,
-  0xc05f, 0x244d,
-  0xc060, 0x2457,
-  0xc061, 0x43c1,
-  0xc069, 0x2453,
-  0xc06a, 0x43c9,
-  0xc06b, 0x2420,
-  0xc06c, 0x43ca,
-  0xc06d, 0x21df,
-  0xc06e, 0x2685,
-  0xc06f, 0x43cb,
-  0xc070, 0x1e6e,
-  0xc071, 0x43cc,
-  0xc074, 0x2224,
-  0xc075, 0x2670,
-  0xc076, 0x43cf,
-  0xc077, 0x21ba,
-  0xc078, 0x43d0,
-  0xc079, 0x245a,
-  0xc07a, 0x43d1,
-  0xc07c, 0x1fff,
-  0xc07d, 0x43d3,
-  0xc080, 0x43d5,
-  0xc09b, 0x25e2,
-  0xc09c, 0x43f0,
-  0xc09d, 0x269a,
-  0xc09e, 0x43f1,
-  0xc0a1, 0x098c,
-  0xc140, 0x43f4,
-  0xc150, 0x1eea,
-  0xc151, 0x4404,
-  0xc154, 0x1e2c,
-  0xc155, 0x4407,
-  0xc15f, 0x2062,
-  0xc160, 0x24f1,
-  0xc161, 0x4411,
-  0xc162, 0x24f2,
-  0xc163, 0x4412,
-  0xc175, 0x25f2,
-  0xc176, 0x4424,
-  0xc178, 0x2215,
-  0xc179, 0x4426,
-  0xc180, 0x442c,
-  0xc195, 0x21ae,
-  0xc196, 0x4441,
-  0xc1a1, 0x09ea,
-  0xc240, 0x444c,
-  0xc24e, 0x20e0,
-  0xc24f, 0x445a,
-  0xc265, 0x25c2,
-  0xc266, 0x4470,
-  0xc267, 0x25c1,
-  0xc268, 0x4471,
-  0xc27d, 0x2128,
-  0xc27e, 0x4486,
-  0xc280, 0x4487,
-  0xc284, 0x2199,
-  0xc285, 0x448b,
-  0xc293, 0x2017,
-  0xc294, 0x1ea0,
-  0xc295, 0x2125,
-  0xc296, 0x214d,
-  0xc297, 0x4499,
-  0xc298, 0x25c4,
-  0xc299, 0x209d,
-  0xc29a, 0x228a,
-  0xc29b, 0x449a,
-  0xc29c, 0x25c3,
-  0xc29d, 0x449b,
-  0xc2a0, 0x2179,
-  0xc2a1, 0x0a48,
-  0xc340, 0x2038,
-  0xc341, 0x449e,
-  0xc343, 0x2155,
-  0xc344, 0x44a0,
-  0xc37b, 0x21d2,
-  0xc37c, 0x44d7,
-  0xc380, 0x44da,
-  0xc384, 0x24c7,
-  0xc385, 0x44de,
-  0xc39b, 0x2279,
-  0xc39c, 0x44f4,
-  0xc3a1, 0x0aa6,
-  0xc440, 0x44f9,
-  0xc449, 0x2123,
-  0xc44a, 0x4502,
-  0xc44c, 0x24c5,
-  0xc44d, 0x4504,
-  0xc454, 0x24c9,
-  0xc455, 0x450b,
-  0xc458, 0x2094,
-  0xc459, 0x450e,
-  0xc45b, 0x2296,
-  0xc45c, 0x4510,
-  0xc463, 0x1e77,
-  0xc464, 0x4517,
-  0xc477, 0x1f06,
-  0xc478, 0x452a,
-  0xc47a, 0x1fa5,
-  0xc47b, 0x452c,
-  0xc480, 0x4530,
-  0xc481, 0x2099,
-  0xc482, 0x4531,
-  0xc491, 0x1ead,
-  0xc492, 0x24c8,
-  0xc493, 0x20a8,
-  0xc494, 0x4540,
-  0xc498, 0x201f,
-  0xc499, 0x4544,
-  0xc49a, 0x20c5,
-  0xc49b, 0x4545,
-  0xc49c, 0x24ca,
-  0xc49d, 0x4546,
-  0xc4a1, 0x0b04,
-  0xc540, 0x454a,
-  0xc544, 0x1ff0,
-  0xc545, 0x454e,
-  0xc546, 0x24c6,
-  0xc547, 0x454f,
-  0xc54b, 0x225d,
-  0xc54c, 0x22de,
-  0xc54d, 0x4553,
-  0xc552, 0x202c,
-  0xc553, 0x4558,
-  0xc55f, 0x2161,
-  0xc560, 0x4564,
-  0xc563, 0x223b,
-  0xc564, 0x21d9,
-  0xc565, 0x1fcb,
-  0xc566, 0x1fc9,
-  0xc567, 0x4567,
-  0xc580, 0x457f,
-  0xc593, 0x1e61,
-  0xc594, 0x4592,
-  0xc59c, 0x25ef,
-  0xc59d, 0x459a,
-  0xc59e, 0x1f98,
-  0xc59f, 0x459b,
-  0xc5a1, 0x0b62,
-  0xc640, 0x459d,
-  0xc641, 0x25f0,
-  0xc642, 0x459e,
-  0xc644, 0x1f88,
-  0xc645, 0x45a0,
-  0xc647, 0x21f8,
-  0xc648, 0x45a2,
-  0xc663, 0x2322,
-  0xc664, 0x45bd,
-  0xc672, 0x2336,
-  0xc673, 0x45cb,
-  0xc680, 0x45d7,
-  0xc6a1, 0x0bc0,
-  0xc740, 0x45f8,
-  0xc766, 0x22ab,
-  0xc767, 0x461e,
-  0xc76f, 0x1fbf,
-  0xc770, 0x4626,
-  0xc776, 0x1f7d,
-  0xc777, 0x462c,
-  0xc77b, 0x2333,
-  0xc77c, 0x4630,
-  0xc780, 0x4633,
-  0xc7a1, 0x0c1e,
-  0xc840, 0x4654,
-  0xc841, 0x1f4d,
-  0xc842, 0x4655,
-  0xc84f, 0x2334,
-  0xc850, 0x4662,
-  0xc852, 0x1ff1,
-  0xc853, 0x4664,
-  0xc866, 0x218b,
-  0xc867, 0x4677,
-  0xc86e, 0x2349,
-  0xc86f, 0x467e,
-  0xc87e, 0x220b,
-  0xc880, 0x468d,
-  0xc887, 0x2346,
-  0xc888, 0x4694,
-  0xc892, 0x2347,
-  0xc893, 0x469e,
-  0xc894, 0x2193,
-  0xc895, 0x469f,
-  0xc899, 0x26a1,
-  0xc89a, 0x46a3,
-  0xc89d, 0x1f62,
-  0xc89e, 0x46a6,
-  0xc8a1, 0x0c7c,
-  0xc940, 0x46a9,
-  0xc94f, 0x234d,
-  0xc950, 0x2348,
-  0xc951, 0x46b8,
-  0xc96e, 0x1e60,
-  0xc96f, 0x46d5,
-  0xc970, 0x2345,
-  0xc971, 0x46d6,
-  0xc977, 0x1f12,
-  0xc978, 0x46dc,
-  0xc980, 0x46e3,
-  0xc98f, 0x2018,
-  0xc990, 0x2335,
-  0xc991, 0x46f2,
-  0xc99c, 0x233c,
-  0xc99d, 0x46fd,
-  0xc9a1, 0x0cda,
-  0xca40, 0x4701,
-  0xca4e, 0x266f,
-  0xca4f, 0x470f,
-  0xca56, 0x2351,
-  0xca57, 0x4716,
-  0xca59, 0x1fa0,
-  0xca5a, 0x4718,
-  0xca5c, 0x2338,
-  0xca5d, 0x471a,
-  0xca61, 0x221b,
-  0xca62, 0x471e,
-  0xca6e, 0x2342,
-  0xca6f, 0x472a,
-  0xca72, 0x234f,
-  0xca73, 0x472d,
-  0xca77, 0x233d,
-  0xca78, 0x4731,
-  0xca7b, 0x2344,
-  0xca7c, 0x2331,
-  0xca7d, 0x4734,
-  0xca7e, 0x234b,
-  0xca80, 0x4735,
-  0xca81, 0x233b,
-  0xca82, 0x4736,
-  0xca89, 0x2350,
-  0xca8a, 0x473d,
-  0xca8e, 0x1eb4,
-  0xca8f, 0x21a6,
-  0xca90, 0x4741,
-  0xca92, 0x21cb,
-  0xca93, 0x4743,
-  0xca9a, 0x2355,
-  0xca9b, 0x474a,
-  0xcaa1, 0x0d38,
-  0xcb40, 0x4750,
-  0xcb43, 0x233e,
-  0xcb44, 0x4753,
-  0xcb45, 0x1f74,
-  0xcb46, 0x4754,
-  0xcb47, 0x2330,
-  0xcb48, 0x4755,
-  0xcb4b, 0x2680,
-  0xcb4c, 0x4758,
-  0xcb4e, 0x20da,
-  0xcb4f, 0x475a,
-  0xcb57, 0x234a,
-  0xcb58, 0x4762,
-  0xcb5d, 0x1f91,
-  0xcb5e, 0x4767,
-  0xcb5f, 0x2107,
-  0xcb60, 0x4768,
-  0xcb6a, 0x233f,
-  0xcb6b, 0x4772,
-  0xcb7b, 0x1ff4,
-  0xcb7c, 0x2343,
-  0xcb7d, 0x4782,
-  0xcb80, 0x4784,
-  0xcb87, 0x2212,
-  0xcb88, 0x478b,
-  0xcb8e, 0x2207,
-  0xcb8f, 0x4791,
-  0xcb92, 0x2359,
-  0xcb93, 0x4794,
-  0xcb9c, 0x2254,
-  0xcb9d, 0x479d,
-  0xcb9e, 0x2332,
-  0xcb9f, 0x479e,
-  0xcba1, 0x0d96,
-  0xcc40, 0x1e26,
-  0xcc41, 0x2357,
-  0xcc42, 0x47a0,
-  0xcc49, 0x2358,
-  0xcc4a, 0x2042,
-  0xcc4b, 0x2153,
-  0xcc4c, 0x47a7,
-  0xcc4f, 0x20bb,
-  0xcc50, 0x47aa,
-  0xcc5c, 0x235a,
-  0xcc5d, 0x47b6,
-  0xcc60, 0x2356,
-  0xcc61, 0x47b9,
-  0xcc64, 0x2337,
-  0xcc65, 0x47bc,
-  0xcc6d, 0x1ff9,
-  0xcc6e, 0x47c4,
-  0xcc79, 0x2353,
-  0xcc7a, 0x47cf,
-  0xcc7d, 0x2061,
-  0xcc7e, 0x47d2,
-  0xcc80, 0x47d3,
-  0xcc8e, 0x1e95,
-  0xcc8f, 0x47e1,
-  0xcc94, 0x2049,
-  0xcc95, 0x47e6,
-  0xcc96, 0x1f42,
-  0xcc97, 0x47e7,
-  0xcc9d, 0x1fe8,
-  0xcc9e, 0x47ed,
-  0xcca1, 0x0df4,
-  0xcd40, 0x47f0,
-  0xcd80, 0x482f,
-  0xcd90, 0x25da,
-  0xcd91, 0x483f,
-  0xcd98, 0x25d7,
-  0xcd99, 0x4846,
-  0xcda1, 0x0e52,
-  0xce40, 0x484e,
-  0xce67, 0x212e,
-  0xce68, 0x4875,
-  0xce72, 0x21b2,
-  0xce73, 0x487f,
-  0xce80, 0x488b,
-  0xce81, 0x219e,
-  0xce82, 0x488c,
-  0xce87, 0x25dc,
-  0xce88, 0x4891,
-  0xce9b, 0x206c,
-  0xce9c, 0x48a4,
-  0xce9e, 0x2226,
-  0xce9f, 0x48a6,
-  0xcea1, 0x0eb0,
-  0xcf40, 0x48a8,
-  0xcf4e, 0x25e0,
-  0xcf4f, 0x48b6,
-  0xcf55, 0x227b,
-  0xcf56, 0x48bc,
-  0xcf58, 0x25de,
-  0xcf59, 0x48be,
-  0xcf5c, 0x25e1,
-  0xcf5d, 0x48c1,
-  0xcf6c, 0x25d5,
-  0xcf6d, 0x48d0,
-  0xcf73, 0x1e6b,
-  0xcf74, 0x48d6,
-  0xcf75, 0x25db,
-  0xcf76, 0x48d7,
-  0xcf78, 0x1e89,
-  0xcf79, 0x48d9,
-  0xcf7c, 0x25d9,
-  0xcf7d, 0x48dc,
-  0xcf80, 0x48de,
-  0xcf81, 0x2211,
-  0xcf82, 0x48df,
-  0xcf89, 0x2229,
-  0xcf8a, 0x25d6,
-  0xcf8b, 0x48e6,
-  0xcf93, 0x25dd,
-  0xcf94, 0x25df,
-  0xcf95, 0x48ee,
-  0xcf9e, 0x1fef,
-  0xcf9f, 0x48f7,
-  0xcfa0, 0x25d8,
-  0xcfa1, 0x0f0e,
-  0xd040, 0x48f8,
-  0xd04d, 0x1f29,
-  0xd04e, 0x4905,
-  0xd051, 0x1e5b,
-  0xd052, 0x4908,
-  0xd055, 0x2076,
-  0xd056, 0x490b,
-  0xd05c, 0x2297,
-  0xd05d, 0x4911,
-  0xd060, 0x2690,
-  0xd061, 0x4914,
-  0xd067, 0x213f,
-  0xd068, 0x491a,
-  0xd06c, 0x2198,
-  0xd06d, 0x491e,
-  0xd06e, 0x1e88,
-  0xd06f, 0x491f,
-  0xd07d, 0x228c,
-  0xd07e, 0x492d,
-  0xd080, 0x492e,
-  0xd0a1, 0x0f6c,
-  0xd140, 0x494f,
-  0xd155, 0x25f1,
-  0xd156, 0x4964,
-  0xd159, 0x200c,
-  0xd15a, 0x4967,
-  0xd161, 0x1e58,
-  0xd162, 0x22ac,
-  0xd163, 0x496e,
-  0xd175, 0x26a7,
-  0xd176, 0x4980,
-  0xd17d, 0x2676,
-  0xd17e, 0x4987,
-  0xd180, 0x4988,
-  0xd19d, 0x1fe1,
-  0xd19e, 0x25bb,
-  0xd19f, 0x49a5,
-  0xd1a1, 0x0fca,
-  0xd240, 0x25be,
-  0xd241, 0x49a7,
-  0xd243, 0x22dd,
-  0xd244, 0x49a9,
-  0xd24d, 0x25bd,
-  0xd24e, 0x49b2,
-  0xd25c, 0x1e2a,
-  0xd25d, 0x49c0,
-  0xd263, 0x25bc,
-  0xd264, 0x25ba,
-  0xd265, 0x49c6,
-  0xd268, 0x25bf,
-  0xd269, 0x49c9,
-  0xd26d, 0x2187,
-  0xd26e, 0x49cd,
-  0xd26f, 0x266b,
-  0xd270, 0x49ce,
-  0xd272, 0x1e7f,
-  0xd273, 0x49d0,
-  0xd275, 0x21ad,
-  0xd276, 0x49d2,
-  0xd280, 0x49db,
-  0xd28a, 0x1f96,
-  0xd28b, 0x49e5,
-  0xd28e, 0x1f32,
-  0xd28f, 0x49e8,
-  0xd292, 0x2084,
-  0xd293, 0x49eb,
-  0xd295, 0x2136,
-  0xd296, 0x49ed,
-  0xd297, 0x24b8,
-  0xd298, 0x49ee,
-  0xd2a0, 0x24ba,
-  0xd2a1, 0x1028,
-  0xd340, 0x49f6,
-  0xd344, 0x24bc,
-  0xd345, 0x49fa,
-  0xd348, 0x20e4,
-  0xd349, 0x49fd,
-  0xd34a, 0x24b9,
-  0xd34b, 0x49fe,
-  0xd34d, 0x24bd,
-  0xd34e, 0x4a00,
-  0xd350, 0x24be,
-  0xd351, 0x4a02,
-  0xd355, 0x24bf,
-  0xd356, 0x4a06,
-  0xd358, 0x1fd2,
-  0xd359, 0x4a08,
-  0xd35b, 0x1ffd,
-  0xd35c, 0x4a0a,
-  0xd35d, 0x24bb,
-  0xd35e, 0x1f2d,
-  0xd35f, 0x4a0b,
-  0xd378, 0x2609,
-  0xd379, 0x4a24,
-  0xd37a, 0x260a,
-  0xd37b, 0x4a25,
-  0xd37c, 0x1e94,
-  0xd37d, 0x4a26,
-  0xd380, 0x4a28,
-  0xd385, 0x22df,
-  0xd386, 0x1ecb,
-  0xd387, 0x1f0d,
-  0xd388, 0x4a2d,
-  0xd38b, 0x1f77,
-  0xd38c, 0x4a30,
-  0xd38d, 0x21eb,
-  0xd38e, 0x4a31,
-  0xd38f, 0x22e1,
-  0xd390, 0x4a32,
-  0xd391, 0x216f,
-  0xd392, 0x4a33,
-  0xd393, 0x22e0,
-  0xd394, 0x4a34,
-  0xd396, 0x21ea,
-  0xd397, 0x4a36,
-  0xd398, 0x22e2,
-  0xd399, 0x20cb,
-  0xd39a, 0x4a37,
-  0xd39b, 0x1f78,
-  0xd39c, 0x4a38,
-  0xd39e, 0x1ee2,
-  0xd39f, 0x4a3a,
-  0xd3a0, 0x21f2,
-  0xd3a1, 0x1086,
-  0xd440, 0x4a3b,
-  0xd441, 0x2150,
-  0xd442, 0x4a3c,
-  0xd445, 0x1fd3,
-  0xd446, 0x4a3f,
-  0xd447, 0x22e5,
-  0xd448, 0x4a40,
-  0xd44c, 0x1ef2,
-  0xd44d, 0x4a44,
-  0xd44f, 0x211f,
-  0xd450, 0x4a46,
-  0xd453, 0x21dd,
-  0xd454, 0x4a49,
-  0xd456, 0x2154,
-  0xd457, 0x4a4b,
-  0xd458, 0x22e7,
-  0xd459, 0x4a4c,
-  0xd45c, 0x2282,
-  0xd45d, 0x4a4f,
-  0xd462, 0x22e6,
-  0xd463, 0x4a54,
-  0xd467, 0x22e8,
-  0xd468, 0x4a58,
-  0xd46e, 0x22e4,
-  0xd46f, 0x4a5e,
-  0xd470, 0x226a,
-  0xd471, 0x4a5f,
-  0xd472, 0x22eb,
-  0xd473, 0x4a60,
-  0xd474, 0x22e9,
-  0xd475, 0x20bd,
-  0xd476, 0x4a61,
-  0xd478, 0x22ea,
-  0xd479, 0x4a63,
-  0xd47b, 0x22bd,
-  0xd47c, 0x4a65,
-  0xd47e, 0x1e9e,
-  0xd480, 0x4a67,
-  0xd482, 0x22f6,
-  0xd483, 0x21e7,
-  0xd484, 0x2216,
-  0xd485, 0x4a69,
-  0xd487, 0x2137,
-  0xd488, 0x4a6b,
-  0xd48a, 0x212c,
-  0xd48b, 0x4a6d,
-  0xd48c, 0x1e68,
-  0xd48d, 0x22f2,
-  0xd48e, 0x1f37,
-  0xd48f, 0x22f3,
-  0xd490, 0x4a6e,
-  0xd491, 0x22ef,
-  0xd492, 0x1f50,
-  0xd493, 0x1f10,
-  0xd494, 0x21c8,
-  0xd495, 0x4a6f,
-  0xd496, 0x22f1,
-  0xd497, 0x4a70,
-  0xd49c, 0x22f0,
-  0xd49d, 0x4a75,
-  0xd49f, 0x22ee,
-  0xd4a0, 0x4a77,
-  0xd4a1, 0x10e4,
-  0xd540, 0x4a78,
-  0xd543, 0x22ed,
-  0xd544, 0x229e,
-  0xd545, 0x22ec,
-  0xd546, 0x1fe2,
-  0xd547, 0x4a7b,
-  0xd54a, 0x20fe,
-  0xd54b, 0x4a7e,
-  0xd54e, 0x22f9,
-  0xd550, 0x4a81,
-  0xd551, 0x1eaf,
-  0xd552, 0x4a82,
-  0xd554, 0x2236,
-  0xd555, 0x4a84,
-  0xd556, 0x22f7,
-  0xd557, 0x4a85,
-  0xd55a, 0x223d,
-  0xd55b, 0x4a88,
-  0xd55c, 0x1e82,
-  0xd55d, 0x1fb6,
-  0xd55e, 0x4a89,
-  0xd55f, 0x21a4,
-  0xd560, 0x21aa,
-  0xd561, 0x22f8,
-  0xd562, 0x2151,
-  0xd563, 0x4a8a,
-  0xd564, 0x1f60,
-  0xd565, 0x4a8b,
-  0xd568, 0x2147,
-  0xd569, 0x4a8e,
-  0xd56c, 0x2145,
-  0xd56d, 0x4a91,
-  0xd56e, 0x1fdc,
-  0xd56f, 0x4a92,
-  0xd572, 0x2301,
-  0xd573, 0x4a95,
-  0xd575, 0x1ef5,
-  0xd576, 0x4a97,
-  0xd578, 0x2218,
-  0xd579, 0x4a99,
-  0xd57b, 0x1ec6,
-  0xd57c, 0x4a9b,
-  0xd57e, 0x2300,
-  0xd580, 0x4a9d,
-  0xd581, 0x22b4,
-  0xd582, 0x4a9e,
-  0xd584, 0x2169,
-  0xd585, 0x4aa0,
-  0xd586, 0x22fd,
-  0xd587, 0x4aa1,
-  0xd588, 0x20ea,
-  0xd589, 0x4aa2,
-  0xd58a, 0x22f4,
-  0xd58b, 0x4aa3,
-  0xd58c, 0x22fb,
-  0xd58d, 0x4aa4,
-  0xd58e, 0x22fc,
-  0xd58f, 0x2027,
-  0xd590, 0x4aa5,
-  0xd593, 0x2060,
-  0xd594, 0x22ff,
-  0xd595, 0x4aa8,
-  0xd598, 0x22fe,
-  0xd599, 0x1ec7,
-  0xd59a, 0x4aab,
-  0xd59b, 0x230c,
-  0xd59c, 0x4aac,
-  0xd59f, 0x22f5,
-  0xd5a0, 0x4aaf,
-  0xd5a1, 0x1142,
-  0xd640, 0x2306,
-  0xd641, 0x4ab0,
-  0xd642, 0x230a,
-  0xd643, 0x21d3,
-  0xd644, 0x4ab1,
-  0xd647, 0x2303,
-  0xd648, 0x4ab4,
-  0xd649, 0x2307,
-  0xd64a, 0x230b,
-  0xd64b, 0x4ab5,
-  0xd64d, 0x1f5f,
-  0xd64e, 0x4ab7,
-  0xd64f, 0x2309,
-  0xd650, 0x4ab8,
-  0xd652, 0x2302,
-  0xd653, 0x1f04,
-  0xd654, 0x229d,
-  0xd655, 0x4aba,
-  0xd656, 0x21fb,
-  0xd657, 0x4abb,
-  0xd658, 0x2308,
-  0xd659, 0x4abc,
-  0xd65a, 0x20ac,
-  0xd65b, 0x4abd,
-  0xd65c, 0x208e,
-  0xd65d, 0x2305,
-  0xd65e, 0x2197,
-  0xd65f, 0x4abe,
-  0xd660, 0x2171,
-  0xd661, 0x2298,
-  0xd662, 0x4abf,
-  0xd665, 0x1f57,
-  0xd666, 0x4ac2,
-  0xd669, 0x2082,
-  0xd66a, 0x4ac5,
-  0xd66b, 0x2311,
-  0xd66c, 0x4ac6,
-  0xd66f, 0x2304,
-  0xd670, 0x4ac9,
-  0xd671, 0x230f,
-  0xd672, 0x1e35,
-  0xd673, 0x4aca,
-  0xd674, 0x20d1,
-  0xd675, 0x2310,
-  0xd676, 0x1fa3,
-  0xd677, 0x4acb,
-  0xd678, 0x21d6,
-  0xd679, 0x4acc,
-  0xd67c, 0x2206,
-  0xd67d, 0x4acf,
-  0xd680, 0x4ad1,
-  0xd683, 0x230d,
-  0xd684, 0x4ad4,
-  0xd686, 0x2312,
-  0xd687, 0x208d,
-  0xd688, 0x2313,
-  0xd689, 0x4ad6,
-  0xd68e, 0x22e3,
-  0xd68f, 0x4adb,
-  0xd694, 0x1fba,
-  0xd695, 0x4ae0,
-  0xd699, 0x2078,
-  0xd69a, 0x4ae4,
-  0xd6a1, 0x11a0,
-  0xd740, 0x4aeb,
-  0xd743, 0x2288,
-  0xd744, 0x4aee,
-  0xd748, 0x2316,
-  0xd749, 0x1f6b,
-  0xd74a, 0x4af2,
-  0xd750, 0x2314,
-  0xd751, 0x4af8,
-  0xd752, 0x2130,
-  0xd753, 0x2315,
-  0xd754, 0x2168,
-  0xd755, 0x4af9,
-  0xd756, 0x20c4,
-  0xd757, 0x4afa,
-  0xd764, 0x2318,
-  0xd765, 0x4b07,
-  0xd767, 0x2219,
-  0xd768, 0x2217,
-  0xd769, 0x4b09,
-  0xd76c, 0x20d5,
-  0xd76d, 0x4b0c,
-  0xd76f, 0x1f4a,
-  0xd770, 0x4b0e,
-  0xd775, 0x2240,
-  0xd776, 0x4b13,
-  0xd778, 0x1ed3,
-  0xd779, 0x4b15,
-  0xd780, 0x4b1b,
-  0xd783, 0x1e49,
-  0xd784, 0x4b1e,
-  0xd787, 0x261b,
-  0xd788, 0x4b21,
-  0xd78b, 0x1e6d,
-  0xd78c, 0x20f8,
-  0xd78d, 0x4b24,
-  0xd78e, 0x1ffb,
-  0xd78f, 0x2319,
-  0xd790, 0x4b25,
-  0xd795, 0x230e,
-  0xd796, 0x4b2a,
-  0xd797, 0x2317,
-  0xd798, 0x4b2b,
-  0xd7a1, 0x11fe,
-  0xd840, 0x4b34,
-  0xd84d, 0x20c8,
-  0xd84e, 0x4b41,
-  0xd853, 0x1efd,
-  0xd854, 0x4b46,
-  0xd880, 0x4b71,
-  0xd890, 0x1e3b,
-  0xd891, 0x227f,
-  0xd892, 0x4b81,
-  0xd893, 0x1f0c,
-  0xd894, 0x1e59,
-  0xd895, 0x1f24,
-  0xd896, 0x4b82,
-  0xd89a, 0x20ba,
-  0xd89b, 0x1f65,
-  0xd89c, 0x1ef0,
-  0xd89d, 0x2164,
-  0xd89e, 0x1f30,
-  0xd89f, 0x2261,
-  0xd8a0, 0x4b86,
-  0xd8a1, 0x1257,
-  0xd940, 0x4b87,
-  0xd941, 0x22a2,
-  0xd942, 0x24ab,
-  0xd943, 0x4b88,
-  0xd944, 0x24af,
-  0xd945, 0x1ee8,
-  0xd946, 0x1f39,
-  0xd947, 0x4b89,
-  0xd948, 0x1e48,
-  0xd949, 0x2070,
-  0xd94a, 0x1ea8,
-  0xd94b, 0x4b8a,
-  0xd94c, 0x24ac,
-  0xd94d, 0x1ef7,
-  0xd94e, 0x2176,
-  0xd94f, 0x24ad,
-  0xd950, 0x4b8b,
-  0xd951, 0x207b,
-  0xd952, 0x1f45,
-  0xd953, 0x24aa,
-  0xd954, 0x204b,
-  0xd955, 0x202f,
-  0xd956, 0x1f5a,
-  0xd957, 0x24b0,
-  0xd958, 0x4b8c,
-  0xd959, 0x22b7,
-  0xd95a, 0x1f7f,
-  0xd95b, 0x4b8d,
-  0xd95c, 0x2265,
-  0xd95d, 0x4b8e,
-  0xd963, 0x24b2,
-  0xd964, 0x211b,
-  0xd965, 0x1e51,
-  0xd966, 0x4b94,
-  0xd967, 0x24b4,
-  0xd968, 0x4b95,
-  0xd96c, 0x24b3,
-  0xd96d, 0x4b99,
-  0xd96e, 0x1e9f,
-  0xd96f, 0x4b9a,
-  0xd970, 0x2118,
-  0xd971, 0x4b9b,
-  0xd972, 0x20b4,
-  0xd973, 0x23af,
-  0xd974, 0x21bb,
-  0xd975, 0x2072,
-  0xd976, 0x1f95,
-  0xd977, 0x4b9c,
-  0xd978, 0x1f0a,
-  0xd979, 0x24b6,
-  0xd97a, 0x4b9d,
-  0xd97c, 0x2291,
-  0xd97d, 0x24b5,
-  0xd97e, 0x2278,
-  0xd980, 0x1ed4,
-  0xd981, 0x4b9f,
-  0xd987, 0x1ff3,
-  0xd988, 0x4ba5,
-  0xd98d, 0x22a9,
-  0xd98e, 0x24b7,
-  0xd98f, 0x1f28,
-  0xd990, 0x2109,
-  0xd991, 0x22c7,
-  0xd992, 0x4baa,
-  0xd997, 0x24ae,
-  0xd998, 0x22b1,
-  0xd999, 0x4baf,
-  0xd99b, 0x2266,
-  0xd99c, 0x4bb1,
-  0xd99d, 0x225b,
-  0xd99e, 0x22c4,
-  0xd99f, 0x4bb2,
-  0xd9a0, 0x2115,
-  0xd9a1, 0x12b5,
-  0xda40, 0x4bb3,
-  0xda41, 0x222a,
-  0xda42, 0x24b1,
-  0xda43, 0x4bb4,
-  0xda48, 0x213d,
-  0xda49, 0x4bb9,
-  0xda4d, 0x1f15,
-  0xda4e, 0x225c,
-  0xda4f, 0x4bbd,
-  0xda73, 0x1f14,
-  0xda74, 0x4be1,
-  0xda77, 0x227a,
-  0xda78, 0x4be4,
-  0xda80, 0x4beb,
-  0xda85, 0x20ee,
-  0xda86, 0x4bf0,
-  0xda8e, 0x25f8,
-  0xda8f, 0x4bf8,
-  0xdaa1, 0x1313,
-  0xdb40, 0x4c0a,
-  0xdb60, 0x1f94,
-  0xdb61, 0x4c2a,
-  0xdb78, 0x2230,
-  0xdb79, 0x4c41,
-  0xdb80, 0x4c47,
-  0xdb84, 0x25fd,
-  0xdb85, 0x4c4b,
-  0xdb8b, 0x2600,
-  0xdb8c, 0x4c51,
-  0xdb98, 0x2606,
-  0xdb99, 0x4c5d,
-  0xdba1, 0x1371,
-  0xdc40, 0x4c65,
-  0xdc45, 0x25ff,
-  0xdc46, 0x4c6a,
-  0xdc4f, 0x25fc,
-  0xdc50, 0x1e8c,
-  0xdc51, 0x2602,
-  0xdc52, 0x4c73,
-  0xdc53, 0x224d,
-  0xdc54, 0x4c74,
-  0xdc55, 0x2604,
-  0xdc56, 0x25fe,
-  0xdc57, 0x2603,
-  0xdc58, 0x4c75,
-  0xdc5d, 0x2601,
-  0xdc5e, 0x4c7a,
-  0xdc62, 0x2605,
-  0xdc63, 0x4c7e,
-  0xdc66, 0x1ea3,
-  0xdc67, 0x2608,
-  0xdc68, 0x4c81,
-  0xdc6b, 0x2607,
-  0xdc6c, 0x4c84,
-  0xdc7c, 0x20f0,
-  0xdc7d, 0x4c94,
-  0xdc80, 0x4c96,
-  0xdc87, 0x1e7b,
-  0xdc88, 0x2267,
-  0xdc89, 0x1f36,
-  0xdc8a, 0x1fd6,
-  0xdc8b, 0x4c9d,
-  0xdc8e, 0x21e0,
-  0xdc8f, 0x4ca0,
-  0xdc90, 0x248c,
-  0xdc91, 0x4ca1,
-  0xdc97, 0x248d,
-  0xdc98, 0x4ca7,
-  0xdc9b, 0x2102,
-  0xdc9c, 0x4caa,
-  0xdca0, 0x2494,
-  0xdca1, 0x13cf,
-  0xdd40, 0x4cae,
-  0xdd46, 0x2493,
-  0xdd47, 0x4cb4,
-  0xdd4d, 0x248e,
-  0xdd4e, 0x4cba,
-  0xdd53, 0x2299,
-  0xdd54, 0x2491,
-  0xdd55, 0x2496,
-  0xdd56, 0x248f,
-  0xdd57, 0x2492,
-  0xdd58, 0x4cbf,
-  0xdd59, 0x2497,
-  0xdd5a, 0x4cc0,
-  0xdd5e, 0x1fb1,
-  0xdd5f, 0x4cc4,
-  0xdd60, 0x249a,
-  0xdd61, 0x4cc5,
-  0xdd62, 0x2499,
-  0xdd63, 0x4cc6,
-  0xdd64, 0x2258,
-  0xdd65, 0x2498,
-  0xdd66, 0x4cc7,
-  0xdd6d, 0x249b,
-  0xdd6e, 0x4cce,
-  0xdd6f, 0x1f09,
-  0xdd70, 0x20e6,
-  0xdd71, 0x4ccf,
-  0xdd76, 0x2026,
-  0xdd77, 0x249f,
-  0xdd78, 0x1f59,
-  0xdd79, 0x249d,
-  0xdd7b, 0x4cd4,
-  0xdd80, 0x4cd8,
-  0xdd81, 0x1f3b,
-  0xdd82, 0x249c,
-  0xdd83, 0x4cd9,
-  0xdd85, 0x1e3a,
-  0xdd86, 0x205b,
-  0xdd87, 0x4cdb,
-  0xdd8b, 0x1f70,
-  0xdd8c, 0x4cdf,
-  0xdd8f, 0x24a0,
-  0xdd90, 0x4ce2,
-  0xdd94, 0x213b,
-  0xdd95, 0x4ce6,
-  0xdd97, 0x1f07,
-  0xdd98, 0x4ce8,
-  0xdd9a, 0x2270,
-  0xdd9b, 0x2237,
-  0xdd9c, 0x4cea,
-  0xdd9e, 0x24d2,
-  0xdd9f, 0x4cec,
-  0xdda0, 0x21b3,
-  0xdda1, 0x142d,
-  0xde40, 0x2245,
-  0xde41, 0x24a1,
-  0xde42, 0x4ced,
-  0xde44, 0x22a8,
-  0xde45, 0x4cef,
-  0xde48, 0x227c,
-  0xde49, 0x1fb0,
-  0xde4a, 0x4cf2,
-  0xde4f, 0x24a2,
-  0xde50, 0x4cf7,
-  0xde5a, 0x1f46,
-  0xde5b, 0x4d01,
-  0xde5c, 0x2380,
-  0xde5d, 0x2495,
-  0xde5e, 0x4d02,
-  0xde5f, 0x2490,
-  0xde60, 0x4d03,
-  0xde6b, 0x1e30,
-  0xde6c, 0x4d0e,
-  0xde6f, 0x1e9d,
-  0xde70, 0x1e4b,
-  0xde71, 0x1e4a,
-  0xde72, 0x20aa,
-  0xde73, 0x4d11,
-  0xde80, 0x4d1d,
-  0xde92, 0x267b,
-  0xde93, 0x4d2f,
-  0xde9f, 0x23f2,
-  0xdea0, 0x4d3b,
-  0xdea1, 0x148b,
-  0xdf40, 0x227e,
-  0xdf41, 0x4d3c,
-  0xdf42, 0x2019,
-  0xdf43, 0x4d3d,
-  0xdf4d, 0x1fbb,
-  0xdf4e, 0x4d47,
-  0xdf5c, 0x2253,
-  0xdf5d, 0x4d55,
-  0xdf5e, 0x1f3e,
-  0xdf5f, 0x1ea6,
-  0xdf60, 0x218e,
-  0xdf61, 0x4d56,
-  0xdf64, 0x21ec,
-  0xdf65, 0x4d59,
-  0xdf66, 0x1ebe,
-  0xdf67, 0x4d5a,
-  0xdf68, 0x224a,
-  0xdf69, 0x4d5b,
-  0xdf6d, 0x2133,
-  0xdf6e, 0x4d5f,
-  0xdf74, 0x1e84,
-  0xdf75, 0x4d65,
-  0xdf77, 0x20cf,
-  0xdf78, 0x21e2,
-  0xdf79, 0x4d67,
-  0xdf7a, 0x220f,
-  0xdf7b, 0x4d68,
-  0xdf7c, 0x2029,
-  0xdf7d, 0x4d69,
-  0xdf7e, 0x2073,
-  0xdf80, 0x1f55,
-  0xdf81, 0x4d6a,
-  0xdf83, 0x23f1,
-  0xdf84, 0x4d6c,
-  0xdf85, 0x1e46,
-  0xdf86, 0x4d6d,
-  0xdf89, 0x2063,
-  0xdf8a, 0x23f3,
-  0xdf8b, 0x4d70,
-  0xdfa1, 0x14e9,
-  0xe040, 0x4d86,
-  0xe050, 0x231e,
-  0xe051, 0x4d96,
-  0xe05d, 0x2233,
-  0xe05e, 0x4da2,
-  0xe069, 0x2320,
-  0xe06a, 0x4dad,
-  0xe06c, 0x21c7,
-  0xe06d, 0x4daf,
-  0xe075, 0x22bc,
-  0xe076, 0x4db7,
-  0xe077, 0x231c,
-  0xe078, 0x4db8,
-  0xe079, 0x2251,
-  0xe07a, 0x4db9,
-  0xe080, 0x4dbe,
-  0xe087, 0x1ebb,
-  0xe088, 0x4dc5,
-  0xe08d, 0x2287,
-  0xe08e, 0x4dca,
-  0xe08f, 0x202d,
-  0xe090, 0x1eab,
-  0xe091, 0x4dcb,
-  0xe092, 0x231d,
-  0xe093, 0x4dcc,
-  0xe094, 0x231f,
-  0xe095, 0x4dcd,
-  0xe097, 0x231b,
-  0xe098, 0x4dcf,
-  0xe0a1, 0x1547,
-  0xe140, 0x4dd8,
-  0xe142, 0x2321,
-  0xe143, 0x4dda,
-  0xe164, 0x2255,
-  0xe165, 0x4dfb,
-  0xe168, 0x1e8f,
-  0xe169, 0x4dfe,
-  0xe174, 0x220c,
-  0xe175, 0x1fa4,
-  0xe176, 0x4e09,
-  0xe180, 0x4e12,
-  0xe184, 0x209b,
-  0xe185, 0x21d8,
-  0xe186, 0x4e16,
-  0xe187, 0x25fa,
-  0xe188, 0x4e17,
-  0xe189, 0x25f9,
-  0xe18a, 0x4e18,
-  0xe18c, 0x2134,
-  0xe18d, 0x4e1a,
-  0xe18e, 0x24f3,
-  0xe191, 0x24f8,
-  0xe192, 0x4e1b,
-  0xe193, 0x24f7,
-  0xe194, 0x1ec8,
-  0xe195, 0x24f6,
-  0xe196, 0x4e1c,
-  0xe198, 0x2280,
-  0xe199, 0x4e1e,
-  0xe19e, 0x1ec5,
-  0xe19f, 0x24fb,
-  0xe1a0, 0x4e23,
-  0xe1a1, 0x15a5,
-  0xe240, 0x4e24,
-  0xe241, 0x24fa,
-  0xe242, 0x4e25,
-  0xe243, 0x1eed,
-  0xe244, 0x4e26,
-  0xe24f, 0x24fd,
-  0xe250, 0x4e31,
-  0xe251, 0x24f9,
-  0xe252, 0x4e32,
-  0xe253, 0x24fe,
-  0xe254, 0x20cd,
-  0xe255, 0x4e33,
-  0xe25a, 0x2508,
-  0xe25b, 0x2504,
-  0xe25c, 0x4e38,
-  0xe25e, 0x2506,
-  0xe25f, 0x4e3a,
-  0xe262, 0x24ff,
-  0xe263, 0x2090,
-  0xe264, 0x4e3d,
-  0xe267, 0x1edd,
-  0xe268, 0x1f25,
-  0xe269, 0x4e40,
-  0xe26a, 0x2503,
-  0xe26b, 0x2502,
-  0xe26c, 0x4e41,
-  0xe26e, 0x1e7a,
-  0xe26f, 0x20a6,
-  0xe270, 0x4e43,
-  0xe278, 0x1fd5,
-  0xe279, 0x4e4b,
-  0xe27d, 0x1f11,
-  0xe27e, 0x4e4f,
-  0xe280, 0x2507,
-  0xe281, 0x2500,
-  0xe282, 0x2505,
-  0xe283, 0x4e50,
-  0xe289, 0x2519,
-  0xe28a, 0x4e56,
-  0xe28b, 0x2515,
-  0xe28c, 0x4e57,
-  0xe28e, 0x250c,
-  0xe28f, 0x2031,
-  0xe290, 0x4e59,
-  0xe292, 0x250b,
-  0xe293, 0x250f,
-  0xe294, 0x251a,
-  0xe295, 0x2509,
-  0xe296, 0x4e5b,
-  0xe298, 0x250e,
-  0xe299, 0x2234,
-  0xe29a, 0x2513,
-  0xe29b, 0x1f80,
-  0xe29c, 0x4e5d,
-  0xe2a0, 0x2501,
-  0xe2a1, 0x1603,
-  0xe340, 0x4e61,
-  0xe342, 0x2517,
-  0xe343, 0x2516,
-  0xe344, 0x4e63,
-  0xe347, 0x2518,
-  0xe348, 0x4e66,
-  0xe34b, 0x1e56,
-  0xe34c, 0x4e69,
-  0xe34f, 0x250d,
-  0xe350, 0x4e6c,
-  0xe351, 0x20d3,
-  0xe352, 0x4e6d,
-  0xe354, 0x207a,
-  0xe355, 0x20ce,
-  0xe356, 0x4e6f,
-  0xe358, 0x2510,
-  0xe359, 0x4e71,
-  0xe35c, 0x1e55,
-  0xe35d, 0x4e74,
-  0xe360, 0x250a,
-  0xe361, 0x4e77,
-  0xe366, 0x2511,
-  0xe368, 0x4e7c,
-  0xe371, 0x1faa,
-  0xe372, 0x4e85,
-  0xe373, 0x251e,
-  0xe374, 0x1f1f,
-  0xe375, 0x4e86,
-  0xe378, 0x252d,
-  0xe379, 0x221d,
-  0xe37a, 0x4e89,
-  0xe37c, 0x2532,
-  0xe37d, 0x4e8b,
-  0xe37e, 0x217b,
-  0xe380, 0x4e8c,
-  0xe38a, 0x21af,
-  0xe38b, 0x4e96,
-  0xe38c, 0x252c,
-  0xe38d, 0x4e97,
-  0xe38f, 0x2528,
-  0xe390, 0x4e99,
-  0xe391, 0x208c,
-  0xe392, 0x4e9a,
-  0xe393, 0x252f,
-  0xe394, 0x4e9b,
-  0xe395, 0x21bc,
-  0xe396, 0x4e9c,
-  0xe399, 0x251d,
-  0xe39a, 0x4e9f,
-  0xe39c, 0x2535,
-  0xe39d, 0x4ea1,
-  0xe39e, 0x220d,
-  0xe39f, 0x2526,
-  0xe3a0, 0x4ea2,
-  0xe3a1, 0x1661,
-  0xe440, 0x2534,
-  0xe441, 0x252a,
-  0xe442, 0x251f,
-  0xe443, 0x2531,
-  0xe444, 0x251c,
-  0xe445, 0x4ea3,
-  0xe448, 0x2525,
-  0xe449, 0x4ea6,
-  0xe44e, 0x21cd,
-  0xe44f, 0x4eab,
-  0xe450, 0x21da,
-  0xe451, 0x4eac,
-  0xe452, 0x2172,
-  0xe453, 0x253e,
-  0xe454, 0x4ead,
-  0xe458, 0x204f,
-  0xe459, 0x4eb1,
-  0xe45a, 0x2543,
-  0xe45b, 0x4eb2,
-  0xe45c, 0x21d7,
-  0xe45d, 0x4eb3,
-  0xe45e, 0x1e3c,
-  0xe45f, 0x4eb4,
-  0xe462, 0x2529,
-  0xe463, 0x4eb7,
-  0xe465, 0x2521,
-  0xe466, 0x4eb9,
-  0xe468, 0x1eff,
-  0xe469, 0x4ebb,
-  0xe473, 0x253f,
-  0xe474, 0x4ec5,
-  0xe475, 0x2544,
-  0xe476, 0x4ec6,
-  0xe479, 0x2523,
-  0xe47a, 0x1e90,
-  0xe47b, 0x253a,
-  0xe47c, 0x2545,
-  0xe47d, 0x4ec9,
-  0xe47e, 0x253d,
-  0xe480, 0x4eca,
-  0xe481, 0x20c1,
-  0xe482, 0x4ecb,
-  0xe484, 0x2103,
-  0xe485, 0x2520,
-  0xe486, 0x253c,
-  0xe487, 0x253b,
-  0xe488, 0x2538,
-  0xe489, 0x4ecd,
-  0xe48d, 0x2540,
-  0xe48e, 0x4ed1,
-  0xe48f, 0x1fcd,
-  0xe490, 0x4ed2,
-  0xe493, 0x1f18,
-  0xe494, 0x4ed5,
-  0xe498, 0x254b,
-  0xe499, 0x4ed9,
-  0xe49d, 0x2547,
-  0xe49e, 0x254f,
-  0xe4a0, 0x4edd,
-  0xe4a1, 0x16bf,
-  0xe540, 0x4ede,
-  0xe546, 0x22b0,
-  0xe547, 0x4ee4,
-  0xe548, 0x2546,
-  0xe549, 0x4ee5,
-  0xe54b, 0x254c,
-  0xe54c, 0x4ee7,
-  0xe54e, 0x1e9a,
-  0xe54f, 0x2552,
-  0xe550, 0x2530,
-  0xe551, 0x2549,
-  0xe552, 0x4ee9,
-  0xe555, 0x2551,
-  0xe556, 0x1eca,
-  0xe557, 0x4eec,
-  0xe558, 0x20d2,
-  0xe559, 0x4eed,
-  0xe55c, 0x1fb8,
-  0xe55d, 0x4ef0,
-  0xe55e, 0x2079,
-  0xe55f, 0x4ef1,
-  0xe561, 0x21ab,
-  0xe562, 0x4ef3,
-  0xe564, 0x254d,
-  0xe565, 0x1ea5,
-  0xe566, 0x4ef5,
-  0xe568, 0x204c,
-  0xe569, 0x2080,
-  0xe56a, 0x4ef7,
-  0xe56c, 0x266d,
-  0xe56d, 0x4ef9,
-  0xe56e, 0x2537,
-  0xe56f, 0x4efa,
-  0xe575, 0x254a,
-  0xe576, 0x21b8,
-  0xe577, 0x4f00,
-  0xe578, 0x254e,
-  0xe579, 0x4f01,
-  0xe57b, 0x24fc,
-  0xe57c, 0x2554,
-  0xe57d, 0x4f03,
-  0xe580, 0x4f05,
-  0xe581, 0x1f3c,
-  0xe582, 0x4f06,
-  0xe583, 0x1ed5,
-  0xe584, 0x4f07,
-  0xe58a, 0x2556,
-  0xe58b, 0x4f0d,
-  0xe58e, 0x2268,
-  0xe58f, 0x4f10,
-  0xe591, 0x1ed6,
-  0xe592, 0x4f12,
-  0xe59a, 0x2557,
-  0xe59b, 0x2553,
-  0xe59c, 0x4f1a,
-  0xe59f, 0x2548,
-  0xe5a0, 0x4f1d,
-  0xe5a1, 0x171d,
-  0xe640, 0x20dc,
-  0xe641, 0x4f1e,
-  0xe644, 0x2559,
-  0xe645, 0x4f21,
-  0xe649, 0x1f97,
-  0xe64a, 0x2555,
-  0xe64b, 0x4f25,
-  0xe64e, 0x227d,
-  0xe64f, 0x4f28,
-  0xe652, 0x257e,
-  0xe653, 0x4f2b,
-  0xe656, 0x207c,
-  0xe657, 0x4f2e,
-  0xe658, 0x255a,
-  0xe659, 0x4f2f,
-  0xe65b, 0x255e,
-  0xe65c, 0x4f31,
-  0xe65e, 0x1e34,
-  0xe65f, 0x4f33,
-  0xe669, 0x215e,
-  0xe66a, 0x4f3d,
-  0xe66b, 0x2560,
-  0xe66c, 0x4f3e,
-  0xe675, 0x21a2,
-  0xe676, 0x2354,
-  0xe677, 0x4f47,
-  0xe679, 0x2563,
-  0xe67a, 0x2527,
-  0xe67b, 0x4f49,
-  0xe67c, 0x252e,
-  0xe67d, 0x2558,
-  0xe67e, 0x4f4a,
-  0xe680, 0x1f1b,
-  0xe681, 0x4f4b,
-  0xe682, 0x2283,
-  0xe683, 0x4f4c,
-  0xe684, 0x2564,
-  0xe685, 0x4f4d,
-  0xe687, 0x20a0,
-  0xe688, 0x4f4f,
-  0xe689, 0x2565,
-  0xe68a, 0x4f50,
-  0xe68c, 0x2561,
-  0xe68d, 0x4f52,
-  0xe693, 0x2562,
-  0xe694, 0x4f58,
-  0xe697, 0x256c,
-  0xe698, 0x4f5b,
-  0xe69b, 0x256d,
-  0xe69c, 0x2020,
-  0xe69d, 0x4f5e,
-  0xe69f, 0x255f,
-  0xe6a0, 0x256a,
-  0xe6a1, 0x177b,
-  0xe740, 0x4f60,
-  0xe743, 0x256e,
-  0xe744, 0x4f63,
-  0xe748, 0x2539,
-  0xe749, 0x255c,
-  0xe74a, 0x4f67,
-  0xe74d, 0x2568,
-  0xe74f, 0x256b,
-  0xe750, 0x1e6f,
-  0xe751, 0x4f6a,
-  0xe752, 0x1fc4,
-  0xe753, 0x2567,
-  0xe754, 0x4f6b,
-  0xe755, 0x255b,
-  0xe756, 0x4f6c,
-  0xe759, 0x261d,
-  0xe75a, 0x4f6f,
-  0xe766, 0x252b,
-  0xe767, 0x4f7b,
-  0xe768, 0x2571,
-  0xe769, 0x4f7c,
-  0xe76a, 0x2577,
-  0xe76b, 0x4f7d,
-  0xe774, 0x2522,
-  0xe775, 0x4f86,
-  0xe77c, 0x2533,
-  0xe77d, 0x4f8d,
-  0xe780, 0x4f8f,
-  0xe782, 0x202a,
-  0xe783, 0x4f91,
-  0xe784, 0x2536,
-  0xe785, 0x2573,
-  0xe786, 0x256f,
-  0xe787, 0x4f92,
-  0xe78a, 0x2293,
-  0xe78b, 0x2578,
-  0xe78c, 0x4f95,
-  0xe78f, 0x2570,
-  0xe790, 0x4f98,
-  0xe792, 0x2575,
-  0xe793, 0x4f9a,
-  0xe798, 0x2541,
-  0xe79a, 0x255d,
-  0xe79b, 0x4f9f,
-  0xe7a0, 0x201a,
-  0xe7a1, 0x17d9,
-  0xe840, 0x4fa4,
-  0xe843, 0x257a,
-  0xe844, 0x2006,
-  0xe845, 0x4fa7,
-  0xe846, 0x2177,
-  0xe847, 0x4fa8,
-  0xe849, 0x251b,
-  0xe84a, 0x4faa,
-  0xe84b, 0x2524,
-  0xe84c, 0x4fab,
-  0xe84f, 0x257b,
-  0xe850, 0x4fae,
-  0xe854, 0x22a3,
-  0xe855, 0x4fb2,
-  0xe85a, 0x2579,
-  0xe85b, 0x4fb7,
-  0xe85c, 0x2566,
-  0xe85d, 0x4fb8,
-  0xe862, 0x1f93,
-  0xe863, 0x4fbd,
-  0xe864, 0x257c,
-  0xe865, 0x4fbe,
-  0xe870, 0x2514,
-  0xe871, 0x4fc9,
-  0xe873, 0x257d,
-  0xe874, 0x4fcb,
-  0xe875, 0x2572,
-  0xe876, 0x4fcc,
-  0xe87c, 0x2574,
-  0xe87d, 0x4fd2,
-  0xe880, 0x224e,
-  0xe881, 0x4fd4,
-  0xe882, 0x21c6,
-  0xe883, 0x4fd5,
-  0xe887, 0x209f,
-  0xe888, 0x4fd9,
-  0xe889, 0x2576,
-  0xe88a, 0x4fda,
-  0xe88c, 0x2064,
-  0xe88d, 0x22bf,
-  0xe88e, 0x261c,
-  0xe88f, 0x225e,
-  0xe890, 0x4fdc,
-  0xe8a1, 0x1837,
-  0xe940, 0x4fed,
-  0xe94c, 0x1e75,
-  0xe94d, 0x4ff9,
-  0xe954, 0x207d,
-  0xe955, 0x5000,
-  0xe956, 0x23bf,
-  0xe957, 0x2113,
-  0xe958, 0x5001,
-  0xe95a, 0x23c0,
-  0xe95b, 0x5003,
-  0xe95d, 0x1e45,
-  0xe95e, 0x5005,
-  0xe95f, 0x1fd8,
-  0xe960, 0x23c4,
-  0xe961, 0x5006,
-  0xe962, 0x23c2,
-  0xe963, 0x2104,
-  0xe964, 0x5007,
-  0xe965, 0x21bd,
-  0xe966, 0x5008,
-  0xe967, 0x1f87,
-  0xe968, 0x23c3,
-  0xe969, 0x5009,
-  0xe96c, 0x2269,
-  0xe96d, 0x500c,
-  0xe975, 0x1f43,
-  0xe976, 0x5014,
-  0xe977, 0x1f1e,
-  0xe978, 0x2679,
-  0xe979, 0x1eeb,
-  0xe97a, 0x5015,
-  0xe97c, 0x1f35,
-  0xe97d, 0x208a,
-  0xe97e, 0x5017,
-  0xe980, 0x23c7,
-  0xe981, 0x23c9,
-  0xe982, 0x23c6,
-  0xe983, 0x5018,
-  0xe987, 0x224f,
-  0xe988, 0x501c,
-  0xe98b, 0x23cb,
-  0xe98c, 0x501f,
-  0xe98e, 0x21f3,
-  0xe98f, 0x5021,
-  0xe990, 0x21f7,
-  0xe991, 0x23cf,
-  0xe992, 0x23ce,
-  0xe993, 0x23ca,
-  0xe994, 0x23cd,
-  0xe995, 0x5022,
-  0xe998, 0x23d0,
-  0xe999, 0x5025,
-  0xe99b, 0x266c,
-  0xe99c, 0x5027,
-  0xe99d, 0x23c1,
-  0xe99e, 0x5028,
-  0xe99f, 0x1fee,
-  0xe9a0, 0x23d1,
-  0xe9a1, 0x1895,
-  0xea40, 0x1ff8,
-  0xea41, 0x5029,
-  0xea44, 0x23d3,
-  0xea45, 0x502c,
-  0xea48, 0x23d2,
-  0xea49, 0x23d4,
-  0xea4a, 0x1e98,
-  0xea4b, 0x502f,
-  0xea50, 0x1f2c,
-  0xea51, 0x5034,
-  0xea52, 0x23d5,
-  0xea53, 0x5035,
-  0xea55, 0x1e71,
-  0xea56, 0x2691,
-  0xea57, 0x5037,
-  0xea59, 0x23c5,
-  0xea5a, 0x5039,
-  0xea80, 0x231a,
-  0xea81, 0x505e,
-  0xea84, 0x2114,
-  0xea85, 0x5061,
-  0xea87, 0x2284,
-  0xea88, 0x5063,
-  0xea8e, 0x221c,
-  0xea8f, 0x5069,
-  0xea90, 0x1e7e,
-  0xea91, 0x204d,
-  0xea92, 0x506a,
-  0xea96, 0x2201,
-  0xea97, 0x506e,
-  0xeaa0, 0x1ed9,
-  0xeaa1, 0x18f3,
-  0xeb40, 0x5077,
-  0xeb41, 0x1fb2,
-  0xeb42, 0x5078,
-  0xeb45, 0x2252,
-  0xeb46, 0x507b,
-  0xeb48, 0x1f79,
-  0xeb49, 0x507d,
-  0xeb53, 0x2157,
-  0xeb54, 0x5087,
-  0xeb55, 0x21bf,
-  0xeb56, 0x5088,
-  0xeb5b, 0x221f,
-  0xeb5c, 0x508d,
-  0xeb5d, 0x203d,
-  0xeb5e, 0x508e,
-  0xeb60, 0x2015,
-  0xeb61, 0x5090,
-  0xeb62, 0x26a5,
-  0xeb63, 0x5091,
-  0xeb6d, 0x2156,
-  0xeb6e, 0x509b,
-  0xeb70, 0x2144,
-  0xeb71, 0x509d,
-  0xeb72, 0x1e91,
-  0xeb73, 0x2257,
-  0xeb74, 0x509e,
-  0xeb78, 0x200a,
-  0xeb79, 0x2092,
-  0xeb7a, 0x50a2,
-  0xeb80, 0x50a7,
-  0xeb85, 0x2250,
-  0xeb86, 0x50ac,
-  0xeb8a, 0x1ec3,
-  0xeb8b, 0x50b0,
-  0xeba1, 0x1951,
-  0xec40, 0x50c6,
-  0xec46, 0x21a8,
-  0xec47, 0x50cc,
-  0xec56, 0x260d,
-  0xec57, 0x50db,
-  0xec5a, 0x260c,
-  0xec5b, 0x50de,
-  0xec5c, 0x260e,
-  0xec5d, 0x50df,
-  0xec60, 0x2032,
-  0xec61, 0x50e2,
-  0xec6e, 0x260b,
-  0xec6f, 0x50ef,
-  0xec76, 0x22c3,
-  0xec77, 0x50f6,
-  0xec80, 0x50fe,
-  0xec96, 0x1f23,
-  0xec97, 0x5114,
-  0xeca1, 0x19af,
-  0xed40, 0x511e,
-  0xed46, 0x2695,
-  0xed47, 0x5124,
-  0xed58, 0x265e,
-  0xed59, 0x5135,
-  0xed5e, 0x265d,
-  0xed5f, 0x513a,
-  0xed61, 0x2692,
-  0xed62, 0x513c,
-  0xed64, 0x265f,
-  0xed65, 0x513e,
-  0xed66, 0x218d,
-  0xed67, 0x20fd,
-  0xed68, 0x513f,
-  0xed6e, 0x1f40,
-  0xed6f, 0x5145,
-  0xed74, 0x2465,
-  0xed75, 0x514a,
-  0xed77, 0x2467,
-  0xed78, 0x514c,
-  0xed79, 0x2466,
-  0xed7a, 0x514d,
-  0xed80, 0x5152,
-  0xed91, 0x21c9,
-  0xed92, 0x5163,
-  0xed93, 0x2209,
-  0xed94, 0x1ec9,
-  0xed95, 0x20e9,
-  0xed96, 0x5164,
-  0xed97, 0x21ca,
-  0xed98, 0x2146,
-  0xed99, 0x25c5,
-  0xed9a, 0x21dc,
-  0xed9b, 0x5165,
-  0xed9c, 0x245e,
-  0xed9d, 0x5166,
-  0xed9e, 0x214f,
-  0xed9f, 0x5167,
-  0xeda0, 0x25c6,
-  0xeda1, 0x1a0d,
-  0xee40, 0x25c7,
-  0xee41, 0x2241,
-  0xee42, 0x218a,
-  0xee43, 0x1e2f,
-  0xee44, 0x1edc,
-  0xee45, 0x5168,
-  0xee48, 0x20bf,
-  0xee49, 0x2034,
-  0xee4a, 0x516b,
-  0xee4d, 0x25c9,
-  0xee4e, 0x516e,
-  0xee52, 0x25c8,
-  0xee53, 0x5172,
-  0xee55, 0x220e,
-  0xee56, 0x5174,
-  0xee57, 0x25cb,
-  0xee58, 0x5175,
-  0xee5e, 0x217d,
-  0xee5f, 0x517b,
-  0xee61, 0x1f7e,
-  0xee62, 0x517d,
-  0xee68, 0x25cc,
-  0xee69, 0x1fc3,
-  0xee6a, 0x5183,
-  0xee6c, 0x20b9,
-  0xee6d, 0x5185,
-  0xee6e, 0x2181,
-  0xee6f, 0x5186,
-  0xee77, 0x1fda,
-  0xee78, 0x518e,
-  0xee7d, 0x2173,
-  0xee7e, 0x1ee1,
-  0xee80, 0x25cd,
-  0xee81, 0x5193,
-  0xee85, 0x25ce,
-  0xee86, 0x21f6,
-  0xee87, 0x5197,
-  0xee8a, 0x224b,
-  0xee8b, 0x25d1,
-  0xee8c, 0x519a,
-  0xee8d, 0x1ec0,
-  0xee8e, 0x519b,
-  0xee90, 0x2008,
-  0xee91, 0x519d,
-  0xee94, 0x25d0,
-  0xee95, 0x51a0,
-  0xee97, 0x25d2,
-  0xee98, 0x51a2,
-  0xee99, 0x1f2a,
-  0xee9a, 0x51a3,
-  0xee9d, 0x1e72,
-  0xee9e, 0x25d3,
-  0xee9f, 0x51a6,
-  0xeea1, 0x1a6b,
-  0xef40, 0x21be,
-  0xef41, 0x25d4,
-  0xef42, 0x2044,
-  0xef43, 0x51a8,
-  0xef44, 0x25cf,
-  0xef45, 0x20f3,
-  0xef46, 0x51a9,
-  0xef4c, 0x1f00,
-  0xef4d, 0x51af,
-  0xef52, 0x24cc,
-  0xef54, 0x51b4,
-  0xef55, 0x2698,
-  0xef56, 0x51b5,
-  0xef57, 0x2678,
-  0xef58, 0x51b6,
-  0xef5a, 0x24ce,
-  0xef5b, 0x51b8,
-  0xef60, 0x24cf,
-  0xef61, 0x51bd,
-  0xef68, 0x20b8,
-  0xef69, 0x51c4,
-  0xef6a, 0x24d0,
-  0xef6b, 0x51c5,
-  0xef6c, 0x24d1,
-  0xef6d, 0x51c6,
-  0xef77, 0x1ef4,
-  0xef78, 0x51d0,
-  0xef7a, 0x239b,
-  0xef7b, 0x51d2,
-  0xef7c, 0x267e,
-  0xef7d, 0x51d3,
-  0xef80, 0x51d5,
-  0xef82, 0x239d,
-  0xef83, 0x239f,
-  0xef85, 0x51d7,
-  0xef86, 0x23a1,
-  0xef87, 0x51d8,
-  0xef88, 0x1ef1,
-  0xef89, 0x51d9,
-  0xef8b, 0x221e,
-  0xef8c, 0x51db,
-  0xef8d, 0x23a2,
-  0xef8e, 0x51dc,
-  0xef95, 0x214b,
-  0xef96, 0x1e36,
-  0xef97, 0x2135,
-  0xef98, 0x51e3,
-  0xef9c, 0x1fad,
-  0xef9d, 0x51e7,
-  0xef9e, 0x1e53,
-  0xef9f, 0x51e8,
-  0xefa1, 0x1ac9,
-  0xf040, 0x51ea,
-  0xf041, 0x23a3,
-  0xf042, 0x2203,
-  0xf043, 0x51eb,
-  0xf044, 0x1ee7,
-  0xf045, 0x51ec,
-  0xf047, 0x23a4,
-  0xf048, 0x2097,
-  0xf049, 0x1ee4,
-  0xf04a, 0x51ee,
-  0xf04e, 0x2238,
-  0xf04f, 0x51f2,
-  0xf051, 0x23a5,
-  0xf052, 0x51f4,
-  0xf054, 0x1f9a,
-  0xf055, 0x51f6,
-  0xf057, 0x21c3,
-  0xf058, 0x51f8,
-  0xf05e, 0x1f2e,
-  0xf05f, 0x51fe,
-  0xf068, 0x239c,
-  0xf069, 0x5207,
-  0xf06c, 0x23a6,
-  0xf06d, 0x520a,
-  0xf071, 0x239e,
-  0xf072, 0x520e,
-  0xf073, 0x2035,
-  0xf074, 0x23a7,
-  0xf075, 0x520f,
-  0xf078, 0x23a8,
-  0xf079, 0x5212,
-  0xf07a, 0x2075,
-  0xf07b, 0x5213,
-  0xf07d, 0x23a9,
-  0xf080, 0x23ab,
-  0xf081, 0x1feb,
-  0xf082, 0x23ac,
-  0xf083, 0x5215,
-  0xf087, 0x1f6a,
-  0xf088, 0x20f9,
-  0xf089, 0x5219,
-  0xf08b, 0x2666,
-  0xf08c, 0x521b,
-  0xf090, 0x2667,
-  0xf091, 0x521f,
-  0xf092, 0x1e6c,
-  0xf093, 0x5220,
-  0xf096, 0x23ad,
-  0xf097, 0x5223,
-  0xf0a1, 0x1b27,
-  0xf140, 0x522d,
-  0xf152, 0x206d,
-  0xf153, 0x2242,
-  0xf154, 0x1f02,
-  0xf155, 0x523f,
-  0xf157, 0x2183,
-  0xf158, 0x5241,
-  0xf159, 0x1e85,
-  0xf15a, 0x21e9,
-  0xf15b, 0x5242,
-  0xf167, 0x1e57,
-  0xf168, 0x524e,
-  0xf176, 0x22a5,
-  0xf177, 0x2407,
-  0xf178, 0x1fca,
-  0xf179, 0x525c,
-  0xf17a, 0x2402,
-  0xf17b, 0x1f82,
-  0xf17c, 0x525d,
-  0xf17e, 0x2408,
-  0xf180, 0x2404,
-  0xf181, 0x525f,
-  0xf182, 0x2131,
-  0xf183, 0x5260,
-  0xf184, 0x2184,
-  0xf185, 0x5261,
-  0xf186, 0x2403,
-  0xf187, 0x5262,
-  0xf188, 0x206e,
-  0xf189, 0x240b,
-  0xf18a, 0x5263,
-  0xf194, 0x1f3f,
-  0xf195, 0x526d,
-  0xf198, 0x2067,
-  0xf199, 0x5270,
-  0xf1a1, 0x1b85,
-  0xf240, 0x5278,
-  0xf245, 0x1fd7,
-  0xf246, 0x527d,
-  0xf247, 0x1e83,
-  0xf248, 0x527e,
-  0xf24b, 0x240f,
-  0xf24c, 0x5281,
-  0xf253, 0x240e,
-  0xf254, 0x20c7,
-  0xf255, 0x240d,
-  0xf256, 0x5288,
-  0xf25c, 0x2412,
-  0xf25d, 0x528e,
-  0xf25f, 0x20b7,
-  0xf260, 0x5290,
-  0xf271, 0x23f0,
-  0xf272, 0x52a1,
-  0xf273, 0x2411,
-  0xf274, 0x2414,
-  0xf275, 0x52a2,
-  0xf276, 0x2170,
-  0xf277, 0x52a3,
-  0xf27c, 0x2405,
-  0xf27d, 0x210c,
-  0xf27e, 0x2415,
-  0xf280, 0x52a8,
-  0xf285, 0x2066,
-  0xf286, 0x52ad,
-  0xf287, 0x2352,
-  0xf288, 0x2413,
-  0xf289, 0x2410,
-  0xf28a, 0x2416,
-  0xf28c, 0x20f1,
-  0xf28d, 0x52ae,
-  0xf291, 0x240a,
-  0xf292, 0x52b2,
-  0xf294, 0x2409,
-  0xf295, 0x52b4,
-  0xf296, 0x2418,
-  0xf297, 0x52b5,
-  0xf29c, 0x1fa7,
-  0xf29d, 0x52ba,
-  0xf29e, 0x21fc,
-  0xf29f, 0x52bb,
-  0xf2a1, 0x1be3,
-  0xf340, 0x1fc1,
-  0xf341, 0x2406,
-  0xf342, 0x52bd,
-  0xf345, 0x229c,
-  0xf346, 0x52c0,
-  0xf348, 0x204e,
-  0xf349, 0x52c2,
-  0xf34a, 0x241a,
-  0xf34b, 0x2419,
-  0xf34c, 0x52c3,
-  0xf350, 0x240c,
-  0xf351, 0x52c7,
-  0xf361, 0x1e29,
-  0xf362, 0x52d7,
-  0xf374, 0x2661,
-  0xf375, 0x52e9,
-  0xf376, 0x26a4,
-  0xf377, 0x2174,
-  0xf378, 0x2663,
-  0xf379, 0x2662,
-  0xf37a, 0x52ea,
-  0xf380, 0x52ef,
-  0xf38c, 0x2675,
-  0xf38d, 0x52fb,
-  0xf3a0, 0x214c,
-  0xf3a1, 0x1c41,
-  0xf440, 0x530e,
-  0xf445, 0x267a,
-  0xf446, 0x5313,
-  0xf450, 0x26a0,
-  0xf451, 0x531d,
-  0xf457, 0x2668,
-  0xf458, 0x5323,
-  0xf459, 0x1ed0,
-  0xf45a, 0x5324,
-  0xf45b, 0x2096,
-  0xf45c, 0x5325,
-  0xf45d, 0x23cc,
-  0xf45e, 0x5326,
-  0xf462, 0x23c8,
-  0xf463, 0x532a,
-  0xf464, 0x223e,
-  0xf465, 0x532b,
-  0xf475, 0x2665,
-  0xf476, 0x533b,
-  0xf47c, 0x2664,
-  0xf47d, 0x5341,
-  0xf47e, 0x2239,
-  0xf480, 0x5342,
-  0xf494, 0x204a,
-  0xf495, 0x5356,
-  0xf499, 0x261f,
-  0xf49a, 0x535a,
-  0xf49c, 0x261e,
-  0xf49d, 0x535c,
-  0xf4a1, 0x1c9f,
-  0xf540, 0x5360,
-  0xf545, 0x2620,
-  0xf546, 0x5365,
-  0xf547, 0x2621,
-  0xf548, 0x5366,
-  0xf552, 0x2622,
-  0xf553, 0x5370,
-  0xf554, 0x2627,
-  0xf555, 0x1e39,
-  0xf556, 0x2625,
-  0xf557, 0x5371,
-  0xf55e, 0x2629,
-  0xf55f, 0x5378,
-  0xf561, 0x262e,
-  0xf562, 0x262b,
-  0xf563, 0x537a,
-  0xf56e, 0x262a,
-  0xf56f, 0x262d,
-  0xf570, 0x5385,
-  0xf571, 0x2628,
-  0xf572, 0x21b9,
-  0xf573, 0x5386,
-  0xf580, 0x5392,
-  0xf585, 0x2636,
-  0xf586, 0x2630,
-  0xf587, 0x5397,
-  0xf58c, 0x2638,
-  0xf58d, 0x539c,
-  0xf58e, 0x200d,
-  0xf58f, 0x2637,
-  0xf590, 0x539d,
-  0xf599, 0x2645,
-  0xf59a, 0x53a6,
-  0xf59b, 0x263a,
-  0xf59c, 0x53a7,
-  0xf5a0, 0x2643,
-  0xf5a1, 0x1cfd,
-  0xf640, 0x53ab,
-  0xf641, 0x2640,
-  0xf642, 0x53ac,
-  0xf645, 0x263d,
-  0xf646, 0x2641,
-  0xf647, 0x53af,
-  0xf648, 0x263e,
-  0xf649, 0x53b0,
-  0xf64b, 0x263f,
-  0xf64c, 0x1fc0,
-  0xf64d, 0x53b2,
-  0xf64e, 0x263b,
-  0xf650, 0x53b3,
-  0xf654, 0x2642,
-  0xf655, 0x53b7,
-  0xf658, 0x2644,
-  0xf659, 0x53ba,
-  0xf661, 0x2639,
-  0xf662, 0x53c2,
-  0xf663, 0x264c,
-  0xf664, 0x53c3,
-  0xf66c, 0x2647,
-  0xf66d, 0x264b,
-  0xf66e, 0x53cb,
-  0xf671, 0x2649,
-  0xf672, 0x53ce,
-  0xf674, 0x2648,
-  0xf675, 0x53d0,
-  0xf676, 0x264a,
-  0xf677, 0x2108,
-  0xf678, 0x53d1,
-  0xf680, 0x53d8,
-  0xf685, 0x264d,
-  0xf686, 0x53dd,
-  0xf688, 0x2634,
-  0xf689, 0x53df,
-  0xf68a, 0x2651,
-  0xf68b, 0x53e0,
-  0xf68d, 0x2650,
-  0xf68e, 0x2652,
-  0xf68f, 0x53e2,
-  0xf692, 0x264f,
-  0xf693, 0x53e5,
-  0xf696, 0x2632,
-  0xf697, 0x264e,
-  0xf698, 0x2653,
-  0xf699, 0x53e8,
-  0xf69a, 0x2657,
-  0xf69b, 0x53e9,
-  0xf69c, 0x2635,
-  0xf69d, 0x53ea,
-  0xf69e, 0x2633,
-  0xf69f, 0x53eb,
-  0xf6a0, 0x2656,
-  0xf6a1, 0x1d5b,
-  0xf740, 0x53ec,
-  0xf742, 0x2654,
-  0xf743, 0x53ee,
-  0xf749, 0x2658,
-  0xf74a, 0x53f4,
-  0xf74c, 0x2655,
-  0xf74d, 0x1e4d,
-  0xf74e, 0x53f6,
-  0xf756, 0x265b,
-  0xf757, 0x53fe,
-  0xf758, 0x265a,
-  0xf759, 0x53ff,
-  0xf75a, 0x2659,
-  0xf75b, 0x202e,
-  0xf75c, 0x262f,
-  0xf75d, 0x5400,
-  0xf761, 0x2646,
-  0xf762, 0x5404,
-  0xf763, 0x2626,
-  0xf764, 0x5405,
-  0xf76b, 0x265c,
-  0xf76c, 0x540c,
-  0xf771, 0x262c,
-  0xf772, 0x5411,
-  0xf77c, 0x2623,
-  0xf77d, 0x541b,
-  0xf77e, 0x2631,
-  0xf780, 0x541c,
-  0xf7a1, 0x1db9,
-  0xf840, 0x543d,
-  0xf842, 0x209c,
-  0xf843, 0x543f,
-  0xf846, 0x2580,
-  0xf847, 0x5442,
-  0xf849, 0x22dc,
-  0xf84a, 0x5444,
-  0xf850, 0x1f05,
-  0xf851, 0x208b,
-  0xf852, 0x544a,
-  0xf853, 0x2581,
-  0xf854, 0x544b,
-  0xf863, 0x2583,
-  0xf864, 0x2582,
-  0xf865, 0x545a,
-  0xf866, 0x21ee,
-  0xf867, 0x545b,
-  0xf872, 0x2182,
-  0xf873, 0x5466,
-  0xf878, 0x2243,
-  0xf879, 0x546b,
-  0xf87a, 0x2587,
-  0xf87b, 0x546c,
-  0xf87c, 0x2588,
-  0xf87d, 0x546d,
-  0xf880, 0x546f,
-  0xf881, 0x2584,
-  0xf882, 0x5470,
-  0xf884, 0x21fd,
-  0xf885, 0x5472,
-  0xf886, 0x21ef,
-  0xf887, 0x5473,
-  0xf88d, 0x258a,
-  0xf88e, 0x258c,
-  0xf88f, 0x5479,
-  0xf899, 0x1f47,
-  0xf89a, 0x5483,
-  0xf89d, 0x1f1d,
-  0xf89e, 0x5486,
-  0xf8a0, 0x258d,
-  0xf940, 0x5488,
-  0xf94e, 0x1fd0,
-  0xf94f, 0x2592,
-  0xf950, 0x258f,
-  0xf951, 0x5496,
-  0xf959, 0x2594,
-  0xf95a, 0x1ee0,
-  0xf95b, 0x549e,
-  0xf95d, 0x2591,
-  0xf95e, 0x2595,
-  0xf95f, 0x54a0,
-  0xf967, 0x2597,
-  0xf968, 0x54a8,
-  0xf969, 0x20b6,
-  0xf96a, 0x54a9,
-  0xf96c, 0x2598,
-  0xf96d, 0x54ab,
-  0xf96f, 0x20f6,
-  0xf970, 0x54ad,
-  0xf980, 0x54bc,
-  0xf985, 0x2585,
-  0xf986, 0x54c1,
-  0xf987, 0x2599,
-  0xf988, 0x54c2,
-  0xf991, 0x2596,
-  0xf992, 0x54cb,
-  0xf996, 0x259a,
-  0xf997, 0x54cf,
-  0xf998, 0x259b,
-  0xf999, 0x54d0,
-  0xfa40, 0x54d8,
-  0xfa42, 0x259d,
-  0xfa43, 0x54da,
-  0xfa46, 0x259e,
-  0xfa47, 0x54dd,
-  0xfa4c, 0x234c,
-  0xfa4d, 0x54e2,
-  0xfa51, 0x1f44,
-  0xfa52, 0x54e6,
-  0xfa58, 0x2660,
-  0xfa59, 0x25a0,
-  0xfa5a, 0x54ec,
-  0xfa5d, 0x259c,
-  0xfa5e, 0x54ef,
-  0xfa5f, 0x259f,
-  0xfa60, 0x54f0,
-  0xfa61, 0x1f6c,
-  0xfa62, 0x54f1,
-  0xfa70, 0x25a2,
-  0xfa71, 0x54ff,
-  0xfa74, 0x20ae,
-  0xfa75, 0x5502,
-  0xfa76, 0x258b,
-  0xfa77, 0x25a3,
-  0xfa78, 0x5503,
-  0xfa80, 0x550a,
-  0xfa83, 0x2589,
-  0xfa84, 0x25a5,
-  0xfa85, 0x550d,
-  0xfa8d, 0x25a4,
-  0xfa8e, 0x5515,
-  0xfa90, 0x25a6,
-  0xfa91, 0x2593,
-  0xfa92, 0x5517,
-  0xfa96, 0x25a7,
-  0xfa97, 0x2222,
-  0xfa98, 0x25a9,
-  0xfa99, 0x551b,
-  0xfb40, 0x5523,
-  0xfb49, 0x25a8,
-  0xfb4a, 0x552c,
-  0xfb52, 0x2586,
-  0xfb53, 0x5534,
-  0xfb57, 0x25a1,
-  0xfb58, 0x25aa,
-  0xfb59, 0x5538,
-  0xfb5a, 0x2590,
-  0xfb5b, 0x258e,
-  0xfb5c, 0x5539,
-  0xfb75, 0x2688,
-  0xfb76, 0x5552,
-  0xfb79, 0x269e,
-  0xfb7a, 0x25fb,
-  0xfb7b, 0x5555,
-  0xfb7c, 0x1f8c,
-  0xfb7d, 0x21f4,
-  0xfb7e, 0x5556,
-  0xfb80, 0x5557,
-  0xfb90, 0x200f,
-  0xfb91, 0x5567,
-  0xfb9c, 0x2071,
-  0xfb9d, 0x5572,
-  0xfb9f, 0x25f7,
-  0xfba0, 0x5574,
-  0xfc40, 0x5575,
-  0xfc44, 0x2696,
-  0xfc45, 0x5579,
-  0xfc49, 0x268f,
-  0xfc4a, 0x557d,
-  0xfc5a, 0x22da,
-  0xfc5b, 0x558d,
-  0xfc63, 0x1ec1,
-  0xfc64, 0x5595,
-  0xfc68, 0x1eb3,
-  0xfc69, 0x5599,
-  0xfc6f, 0x266a,
-  0xfc70, 0x559f,
-  0xfc71, 0x268a,
-  0xfc72, 0x55a0,
-  0xfc74, 0x2669,
-  0xfc75, 0x55a2,
-  0xfc77, 0x2618,
-  0xfc79, 0x55a4,
-  0xfc80, 0x55aa,
-  0xfc83, 0x261a,
-  0xfc84, 0x55ad,
-  0xfc8a, 0x2673,
-  0xfc8b, 0x55b3,
-  0xfd40, 0x55c9,
-  0xfd52, 0x20c6,
-  0xfd53, 0x226b,
-  0xfd54, 0x55db,
-  0xfd57, 0x24d3,
-  0xfd58, 0x1e86,
-  0xfd59, 0x55de,
-  0xfd5a, 0x260f,
-  0xfd5b, 0x55df,
-  0xfd5f, 0x2611,
-  0xfd60, 0x55e3,
-  0xfd62, 0x2613,
-  0xfd63, 0x55e5,
-  0xfd65, 0x2610,
-  0xfd66, 0x2612,
-  0xfd67, 0x2030,
-  0xfd68, 0x55e7,
-  0xfd69, 0x2671,
-  0xfd6a, 0x55e8,
-  0xfd6c, 0x2614,
-  0xfd6d, 0x55ea,
-  0xfd70, 0x2616,
-  0xfd71, 0x55ed,
-  0xfd72, 0x2615,
-  0xfd73, 0x55ee,
-  0xfd78, 0x20f2,
-  0xfd79, 0x55f3,
-  0xfd7d, 0x2617,
-  0xfd7e, 0x55f7,
-  0xfd80, 0x55f8,
-  0xfd88, 0x2037,
-  0xfd89, 0x5600,
-  0xfd8b, 0x20b3,
-  0xfd8c, 0x5602,
-  0xfd8f, 0x1f22,
-  0xfd90, 0x24ed,
-  0xfd91, 0x5605,
-  0xfd94, 0x1f34,
-  0xfd95, 0x5608,
-  0xfd9d, 0x0a02,
-  0xfd9e, 0x40d3,
-  0xfd9f, 0x200c,
-  0xfda0, 0x5083,
-  0xfe40, 0x1259,
-  0xfe41, 0x5610,
-  0xfe80, 0x564e,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBKEUCHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x1e24, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334,
-    0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c,
-    0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
-    0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c,
-    0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354,
-    0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c,
-    0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364,
-    0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c,
-    0x036d, 0x036e, 0x036f, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374,
-    0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037a, 0x037b, 0x037c,
-    0x037d, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384,
-    0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBKEUCHMap2, 4071
-};
-
-static Gushort gb12GBKEUCVMap2[8182] = {
-  0x0000, 0x0000,
-  0x8140, 0x2758,
-  0x8179, 0x2059,
-  0x817a, 0x2791,
-  0x8180, 0x2796,
-  0x8186, 0x21f1,
-  0x8187, 0x279c,
-  0x81ed, 0x1ff2,
-  0x81ee, 0x2802,
-  0x81f6, 0x205d,
-  0x81f7, 0x280a,
-  0x8240, 0x2812,
-  0x8253, 0x269c,
-  0x8254, 0x2825,
-  0x8262, 0x21b5,
-  0x8263, 0x2833,
-  0x8274, 0x22cc,
-  0x8275, 0x2844,
-  0x827a, 0x2016,
-  0x827b, 0x2849,
-  0x827d, 0x1e62,
-  0x827e, 0x284b,
-  0x8280, 0x1f20,
-  0x8281, 0x284c,
-  0x8283, 0x207f,
-  0x8284, 0x284e,
-  0x8290, 0x205c,
-  0x8291, 0x285a,
-  0x82a5, 0x2194,
-  0x82a6, 0x286e,
-  0x82c8, 0x1e65,
-  0x82c9, 0x2281,
-  0x82ca, 0x2890,
-  0x82e1, 0x22cd,
-  0x82e2, 0x28a7,
-  0x82e3, 0x210a,
-  0x82e4, 0x1e3e,
-  0x82e5, 0x28a8,
-  0x82ed, 0x267f,
-  0x82ee, 0x28b0,
-  0x82f2, 0x222e,
-  0x82f3, 0x28b4,
-  0x82f7, 0x1e96,
-  0x82f8, 0x22cb,
-  0x82f9, 0x226c,
-  0x82fa, 0x28b8,
-  0x82fb, 0x2117,
-  0x82fc, 0x28b9,
-  0x8340, 0x28bc,
-  0x8341, 0x20e8,
-  0x8342, 0x28bd,
-  0x8345, 0x22d4,
-  0x8346, 0x28c0,
-  0x8348, 0x1fb9,
-  0x8349, 0x28c2,
-  0x834c, 0x22d8,
-  0x834d, 0x28c5,
-  0x8353, 0x20df,
-  0x8354, 0x28cb,
-  0x8357, 0x20c2,
-  0x8358, 0x28ce,
-  0x835e, 0x2195,
-  0x835f, 0x28d4,
-  0x8365, 0x1fac,
-  0x8366, 0x22d3,
-  0x8367, 0x28da,
-  0x8372, 0x1f81,
-  0x8373, 0x28e5,
-  0x8378, 0x2210,
-  0x8379, 0x28ea,
-  0x837a, 0x22cf,
-  0x837b, 0x28eb,
-  0x837c, 0x2213,
-  0x837d, 0x28ec,
-  0x837e, 0x1fe4,
-  0x8380, 0x1f90,
-  0x8381, 0x28ed,
-  0x8386, 0x22d6,
-  0x8387, 0x28f2,
-  0x8389, 0x22d0,
-  0x838a, 0x22ce,
-  0x838b, 0x28f4,
-  0x838d, 0x2681,
-  0x838e, 0x28f6,
-  0x8394, 0x1e76,
-  0x8395, 0x28fc,
-  0x839e, 0x2231,
-  0x839f, 0x2905,
-  0x83a6, 0x1e93,
-  0x83a7, 0x290c,
-  0x83ab, 0x22d2,
-  0x83ac, 0x2910,
-  0x83ae, 0x22d7,
-  0x83af, 0x22d5,
-  0x83b0, 0x22d1,
-  0x83b1, 0x2912,
-  0x83ba, 0x1ee5,
-  0x83bb, 0x291b,
-  0x83c9, 0x2025,
-  0x83ca, 0x2929,
-  0x83f6, 0x1ecf,
-  0x83f7, 0x2955,
-  0x8440, 0x295d,
-  0x8450, 0x1fd9,
-  0x8451, 0x296d,
-  0x8471, 0x22c8,
-  0x8472, 0x298d,
-  0x8474, 0x2263,
-  0x8475, 0x298f,
-  0x8477, 0x2683,
-  0x8478, 0x2991,
-  0x8480, 0x2998,
-  0x8482, 0x1f17,
-  0x8483, 0x299a,
-  0x848e, 0x1f2b,
-  0x848f, 0x29a5,
-  0x8492, 0x22ca,
-  0x8493, 0x1e99,
-  0x8494, 0x29a8,
-  0x849d, 0x1f4f,
-  0x849e, 0x29b1,
-  0x84a1, 0x1fcf,
-  0x84a2, 0x2036,
-  0x84a3, 0x1f3a,
-  0x84a4, 0x29b4,
-  0x84a5, 0x22c9,
-  0x84a6, 0x1f99,
-  0x84a7, 0x29b5,
-  0x84a9, 0x1f75,
-  0x84aa, 0x29b7,
-  0x84c5, 0x1fbe,
-  0x84c6, 0x29d2,
-  0x84d3, 0x1ecd,
-  0x84d4, 0x29df,
-  0x84d5, 0x21a9,
-  0x84d6, 0x29e0,
-  0x84d7, 0x21e6,
-  0x84d8, 0x29e1,
-  0x84d9, 0x2127,
-  0x84da, 0x2003,
-  0x84db, 0x29e2,
-  0x84dd, 0x2132,
-  0x84de, 0x29e4,
-  0x84ea, 0x2323,
-  0x84eb, 0x29f0,
-  0x84ee, 0x2011,
-  0x84ef, 0x29f3,
-  0x84f1, 0x20f5,
-  0x84f2, 0x29f5,
-  0x8540, 0x2a02,
-  0x8551, 0x22c5,
-  0x8552, 0x1f5e,
-  0x8553, 0x2a13,
-  0x8554, 0x22c6,
-  0x8555, 0x2a14,
-  0x855e, 0x20ef,
-  0x855f, 0x2a1d,
-  0x8566, 0x21d0,
-  0x8567, 0x2a24,
-  0x8580, 0x2a3c,
-  0x8587, 0x22c1,
-  0x8588, 0x2a43,
-  0x858b, 0x1e64,
-  0x858c, 0x2a46,
-  0x8592, 0x21f9,
-  0x8593, 0x2a4c,
-  0x8596, 0x2010,
-  0x8597, 0x2a4f,
-  0x8598, 0x22c2,
-  0x8599, 0x2a50,
-  0x85a2, 0x1e5a,
-  0x85a3, 0x2a59,
-  0x85b2, 0x1ea2,
-  0x85b3, 0x2a68,
-  0x8640, 0x2ab4,
-  0x864a, 0x236d,
-  0x864b, 0x2abe,
-  0x8654, 0x2247,
-  0x8655, 0x2ac7,
-  0x8668, 0x236c,
-  0x8669, 0x2ada,
-  0x8680, 0x2af0,
-  0x8696, 0x219c,
-  0x8697, 0x2b06,
-  0x8699, 0x20c9,
-  0x869a, 0x2b08,
-  0x86a1, 0x21f0,
-  0x86a2, 0x2b0f,
-  0x86ca, 0x210b,
-  0x86cb, 0x2b37,
-  0x86cc, 0x20de,
-  0x86cd, 0x2b38,
-  0x86ce, 0x1eaa,
-  0x86cf, 0x2b39,
-  0x86d1, 0x222c,
-  0x86d2, 0x2b3b,
-  0x86dc, 0x20d8,
-  0x86dd, 0x22c0,
-  0x86de, 0x2b45,
-  0x86e1, 0x206f,
-  0x86e2, 0x2b48,
-  0x86e8, 0x21a1,
-  0x86e9, 0x2b4e,
-  0x86ee, 0x2379,
-  0x86ef, 0x2b53,
-  0x86f4, 0x2372,
-  0x86f5, 0x2b58,
-  0x8740, 0x216a,
-  0x8741, 0x2b62,
-  0x8744, 0x237c,
-  0x8745, 0x2b65,
-  0x8749, 0x20b0,
-  0x874a, 0x2b69,
-  0x874b, 0x237a,
-  0x874c, 0x1e74,
-  0x874d, 0x2b6a,
-  0x874f, 0x2377,
-  0x8750, 0x2b6c,
-  0x8757, 0x1f4c,
-  0x8758, 0x2b73,
-  0x875a, 0x2378,
-  0x875b, 0x21cf,
-  0x875c, 0x2368,
-  0x875d, 0x2b75,
-  0x875e, 0x2371,
-  0x875f, 0x2b76,
-  0x8760, 0x2369,
-  0x8761, 0x2b77,
-  0x8766, 0x2674,
-  0x8767, 0x2b7c,
-  0x877a, 0x236f,
-  0x877b, 0x2b8f,
-  0x877d, 0x2370,
-  0x877e, 0x2b91,
-  0x8780, 0x2b92,
-  0x8781, 0x2376,
-  0x8782, 0x2373,
-  0x8783, 0x2b93,
-  0x8786, 0x237f,
-  0x8787, 0x2b96,
-  0x8788, 0x2374,
-  0x8789, 0x2b97,
-  0x878a, 0x20b5,
-  0x878b, 0x2b98,
-  0x878d, 0x1edb,
-  0x878e, 0x2672,
-  0x878f, 0x2b9a,
-  0x8793, 0x236e,
-  0x8794, 0x2b9e,
-  0x8798, 0x21b7,
-  0x8799, 0x2ba2,
-  0x879d, 0x2375,
-  0x879e, 0x2ba6,
-  0x87a3, 0x2382,
-  0x87a4, 0x2bab,
-  0x87a7, 0x209e,
-  0x87a8, 0x2bae,
-  0x87b3, 0x236b,
-  0x87b4, 0x2bb9,
-  0x87b5, 0x2039,
-  0x87b6, 0x2bba,
-  0x87bb, 0x269f,
-  0x87bc, 0x2bbf,
-  0x87bf, 0x237d,
-  0x87c0, 0x21f5,
-  0x87c1, 0x2bc2,
-  0x87c2, 0x2381,
-  0x87c3, 0x2bc3,
-  0x87ca, 0x237b,
-  0x87cb, 0x237e,
-  0x87cc, 0x21cc,
-  0x87cd, 0x2bca,
-  0x87cf, 0x22db,
-  0x87d0, 0x2bcc,
-  0x87d2, 0x236a,
-  0x87d3, 0x2689,
-  0x87d4, 0x2bce,
-  0x87d5, 0x2697,
-  0x87d6, 0x2bcf,
-  0x87da, 0x22a1,
-  0x87db, 0x2bd3,
-  0x87f7, 0x2383,
-  0x87f8, 0x1f3d,
-  0x87f9, 0x2bef,
-  0x87fa, 0x218f,
-  0x87fb, 0x2bf0,
-  0x8840, 0x2246,
-  0x8841, 0x2248,
-  0x8842, 0x2bf4,
-  0x8844, 0x217e,
-  0x8845, 0x2bf6,
-  0x8846, 0x2180,
-  0x8847, 0x2bf7,
-  0x8880, 0x2c2f,
-  0x88ba, 0x232a,
-  0x88bb, 0x2c69,
-  0x88cc, 0x228b,
-  0x88cd, 0x2c7a,
-  0x88d4, 0x1f85,
-  0x88d5, 0x2c81,
-  0x88d7, 0x2325,
-  0x88d8, 0x2c83,
-  0x88df, 0x232c,
-  0x88e0, 0x2c8a,
-  0x88e5, 0x232e,
-  0x88e6, 0x2c8f,
-  0x88f2, 0x2205,
-  0x88f3, 0x1e38,
-  0x88f4, 0x2c9b,
-  0x88f6, 0x1e73,
-  0x88f7, 0x2c9d,
-  0x8940, 0x2ca5,
-  0x894b, 0x1fe3,
-  0x894c, 0x2339,
-  0x894d, 0x2cb0,
-  0x894e, 0x232b,
-  0x894f, 0x2cb1,
-  0x8950, 0x232d,
-  0x8951, 0x2cb2,
-  0x8954, 0x217f,
-  0x8955, 0x2cb5,
-  0x895d, 0x21a7,
-  0x895e, 0x2cbd,
-  0x895f, 0x232f,
-  0x8960, 0x2cbe,
-  0x896d, 0x1e7d,
-  0x896e, 0x2ccb,
-  0x8971, 0x20d6,
-  0x8972, 0x2cce,
-  0x897c, 0x1ec2,
-  0x897d, 0x2cd8,
-  0x8980, 0x2cda,
-  0x898b, 0x22b2,
-  0x898c, 0x2ce5,
-  0x8999, 0x1edf,
-  0x899a, 0x2cf2,
-  0x899e, 0x1ef9,
-  0x899f, 0x2cf6,
-  0x89a6, 0x20d9,
-  0x89a7, 0x2cfd,
-  0x89a8, 0x1fdd,
-  0x89a9, 0x2cfe,
-  0x89af, 0x2167,
-  0x89b0, 0x2d04,
-  0x89ba, 0x21ed,
-  0x89bb, 0x2d0e,
-  0x89be, 0x2007,
-  0x89bf, 0x2326,
-  0x89c0, 0x2329,
-  0x89c1, 0x2d11,
-  0x89c4, 0x1f52,
-  0x89c5, 0x203b,
-  0x89c6, 0x2328,
-  0x89c7, 0x2d14,
-  0x89c8, 0x2327,
-  0x89c9, 0x2d15,
-  0x89ce, 0x1e2b,
-  0x89cf, 0x2d1a,
-  0x89d1, 0x22ae,
-  0x89d2, 0x2d1c,
-  0x89d8, 0x1f49,
-  0x89d9, 0x2d22,
-  0x89db, 0x2138,
-  0x89dc, 0x2d24,
-  0x89f4, 0x2081,
-  0x89f5, 0x2d3c,
-  0x8a40, 0x2d46,
-  0x8a41, 0x1f7c,
-  0x8a42, 0x2d47,
-  0x8a59, 0x235b,
-  0x8a5a, 0x1ede,
-  0x8a5b, 0x2d5e,
-  0x8a5c, 0x1fa2,
-  0x8a5d, 0x2d5f,
-  0x8a5e, 0x1efa,
-  0x8a5f, 0x2d60,
-  0x8a79, 0x22ad,
-  0x8a7a, 0x2d7a,
-  0x8a80, 0x2d7f,
-  0x8ae4, 0x203f,
-  0x8ae5, 0x2de3,
-  0x8b40, 0x2dfd,
-  0x8b44, 0x1f0e,
-  0x8b45, 0x2e01,
-  0x8b49, 0x23f9,
-  0x8b4a, 0x2e05,
-  0x8b7a, 0x23fc,
-  0x8b7b, 0x2e35,
-  0x8b80, 0x2e39,
-  0x8b8c, 0x2069,
-  0x8b8d, 0x2e45,
-  0x8b9e, 0x23f7,
-  0x8b9f, 0x2e56,
-  0x8bb3, 0x23f6,
-  0x8bb4, 0x2e6a,
-  0x8bb9, 0x23fd,
-  0x8bba, 0x2e6f,
-  0x8bbe, 0x23f8,
-  0x8bbf, 0x2e73,
-  0x8bc6, 0x23fa,
-  0x8bc7, 0x2e7a,
-  0x8bc8, 0x23fe,
-  0x8bc9, 0x1fa8,
-  0x8bca, 0x2e7b,
-  0x8bd4, 0x2401,
-  0x8bd5, 0x2e85,
-  0x8bdc, 0x23ff,
-  0x8bdd, 0x2e8c,
-  0x8be5, 0x2400,
-  0x8be6, 0x2e94,
-  0x8beb, 0x2221,
-  0x8bec, 0x2e99,
-  0x8bf0, 0x2122,
-  0x8bf1, 0x2e9d,
-  0x8c40, 0x2eab,
-  0x8c44, 0x23fb,
-  0x8c45, 0x2eaf,
-  0x8c4f, 0x215a,
-  0x8c50, 0x2eb9,
-  0x8c57, 0x21e5,
-  0x8c58, 0x2ec0,
-  0x8c5c, 0x2057,
-  0x8c5d, 0x2ec4,
-  0x8c80, 0x2ee6,
-  0x8c8b, 0x20e5,
-  0x8c8c, 0x2ef1,
-  0x8c8d, 0x212f,
-  0x8c8e, 0x20a3,
-  0x8c8f, 0x2121,
-  0x8c90, 0x2ef2,
-  0x8c91, 0x21d4,
-  0x8c92, 0x1fe5,
-  0x8c93, 0x2ef3,
-  0x8c99, 0x1e8a,
-  0x8c9a, 0x1e37,
-  0x8c9b, 0x2ef9,
-  0x8ca2, 0x1f9e,
-  0x8ca3, 0x22a6,
-  0x8ca4, 0x21e8,
-  0x8ca5, 0x2f00,
-  0x8ca6, 0x1eda,
-  0x8ca7, 0x1eb9,
-  0x8ca8, 0x2f01,
-  0x8cc0, 0x235c,
-  0x8cc1, 0x2f19,
-  0x8cd2, 0x2050,
-  0x8cd3, 0x1e67,
-  0x8cd4, 0x2f2a,
-  0x8cd5, 0x23f4,
-  0x8cd6, 0x2f2b,
-  0x8cd9, 0x213e,
-  0x8cda, 0x2f2e,
-  0x8cf9, 0x1f16,
-  0x8cfa, 0x2f4d,
-  0x8d40, 0x2f52,
-  0x8d73, 0x2389,
-  0x8d74, 0x2f85,
-  0x8d75, 0x1eb7,
-  0x8d76, 0x2f86,
-  0x8d7b, 0x21b4,
-  0x8d7c, 0x2f8b,
-  0x8d80, 0x2f8e,
-  0x8d88, 0x238f,
-  0x8d89, 0x2f96,
-  0x8d8f, 0x1f1a,
-  0x8d90, 0x2f9c,
-  0x8d9e, 0x238b,
-  0x8d9f, 0x2faa,
-  0x8db9, 0x238a,
-  0x8dba, 0x2fc4,
-  0x8de2, 0x2391,
-  0x8de3, 0x2fec,
-  0x8de4, 0x2271,
-  0x8de5, 0x2fed,
-  0x8de7, 0x2388,
-  0x8de8, 0x2fef,
-  0x8df7, 0x238e,
-  0x8df8, 0x2ffe,
-  0x8dfe, 0x238d,
-  0x8e40, 0x3004,
-  0x8e46, 0x238c,
-  0x8e47, 0x300a,
-  0x8e56, 0x2390,
-  0x8e57, 0x3019,
-  0x8e58, 0x2033,
-  0x8e59, 0x301a,
-  0x8e5a, 0x223c,
-  0x8e5b, 0x301b,
-  0x8e68, 0x1fe9,
-  0x8e69, 0x3028,
-  0x8e6e, 0x2055,
-  0x8e6f, 0x302d,
-  0x8e70, 0x2392,
-  0x8e71, 0x302e,
-  0x8e80, 0x2324,
-  0x8e81, 0x303c,
-  0x8e9b, 0x2143,
-  0x8e9c, 0x3056,
-  0x8e9f, 0x2129,
-  0x8ea0, 0x3059,
-  0x8ea4, 0x2277,
-  0x8ea5, 0x305d,
-  0x8ea7, 0x1ea7,
-  0x8ea8, 0x305f,
-  0x8eac, 0x2285,
-  0x8ead, 0x3063,
-  0x8eae, 0x2384,
-  0x8eaf, 0x3064,
-  0x8ebd, 0x2387,
-  0x8ebe, 0x2386,
-  0x8ebf, 0x3072,
-  0x8ec3, 0x2290,
-  0x8ec4, 0x3076,
-  0x8ec5, 0x1e44,
-  0x8ec6, 0x3077,
-  0x8ecd, 0x1e32,
-  0x8ece, 0x2385,
-  0x8ecf, 0x307e,
-  0x8ed6, 0x1f13,
-  0x8ed7, 0x1f73,
-  0x8ed8, 0x3085,
-  0x8eec, 0x1fe0,
-  0x8eed, 0x3099,
-  0x8f40, 0x30ab,
-  0x8f52, 0x2087,
-  0x8f53, 0x1e78,
-  0x8f54, 0x23ae,
-  0x8f55, 0x1ef6,
-  0x8f56, 0x1f31,
-  0x8f57, 0x30bd,
-  0x8f5d, 0x2045,
-  0x8f5e, 0x30c3,
-  0x8f64, 0x2178,
-  0x8f65, 0x30c9,
-  0x8f80, 0x30e3,
-  0x8f86, 0x23f5,
-  0x8f87, 0x30e9,
-  0x8f88, 0x2275,
-  0x8f89, 0x30ea,
-  0x8f95, 0x266e,
-  0x8f96, 0x30f6,
-  0x8f97, 0x1eb0,
-  0x8f98, 0x30f7,
-  0x8f9b, 0x2083,
-  0x8f9c, 0x30fa,
-  0x8f9d, 0x2188,
-  0x8f9e, 0x30fb,
-  0x8fa1, 0x267c,
-  0x8fa2, 0x30fe,
-  0x8fbd, 0x1fc5,
-  0x8fbe, 0x3119,
-  0x8fc4, 0x1ea1,
-  0x8fc5, 0x311f,
-  0x8fc6, 0x2393,
-  0x8fc7, 0x3120,
-  0x8fcd, 0x1f0b,
-  0x8fce, 0x3126,
-  0x8fd8, 0x1e7c,
-  0x8fd9, 0x3130,
-  0x9040, 0x3156,
-  0x9080, 0x3195,
-  0x909d, 0x23b4,
-  0x909e, 0x207e,
-  0x909f, 0x31b2,
-  0x90ba, 0x1ee3,
-  0x90bb, 0x31cd,
-  0x90c0, 0x2095,
-  0x90c1, 0x23bb,
-  0x90c2, 0x31d2,
-  0x90c5, 0x23b9,
-  0x90c6, 0x31d5,
-  0x90db, 0x1e28,
-  0x90dc, 0x23bd,
-  0x90dd, 0x31ea,
-  0x90ed, 0x23b5,
-  0x90ee, 0x31fa,
-  0x90f0, 0x23ba,
-  0x90f1, 0x31fc,
-  0x90f7, 0x23b3,
-  0x90f8, 0x3202,
-  0x9140, 0x3209,
-  0x9142, 0x2162,
-  0x9143, 0x320b,
-  0x914b, 0x1e5e,
-  0x914c, 0x3213,
-  0x914d, 0x1e5d,
-  0x914e, 0x3214,
-  0x9151, 0x23b7,
-  0x9152, 0x3217,
-  0x9154, 0x1f2f,
-  0x9155, 0x24df,
-  0x9156, 0x3219,
-  0x9159, 0x23b2,
-  0x915a, 0x214e,
-  0x915b, 0x321c,
-  0x915d, 0x2052,
-  0x915e, 0x321e,
-  0x9161, 0x23bc,
-  0x9162, 0x3221,
-  0x9163, 0x20eb,
-  0x9164, 0x3222,
-  0x916e, 0x2232,
-  0x916f, 0x322c,
-  0x9176, 0x1e3f,
-  0x9177, 0x3233,
-  0x917a, 0x201b,
-  0x917b, 0x20bc,
-  0x917c, 0x23be,
-  0x917d, 0x3236,
-  0x9180, 0x3238,
-  0x9184, 0x1eae,
-  0x9185, 0x323c,
-  0x918d, 0x1efb,
-  0x918e, 0x3244,
-  0x9191, 0x2089,
-  0x9192, 0x3247,
-  0x9193, 0x23b1,
-  0x9194, 0x3248,
-  0x9197, 0x21c4,
-  0x9198, 0x324b,
-  0x919b, 0x2214,
-  0x919c, 0x324e,
-  0x91a9, 0x1fde,
-  0x91aa, 0x2223,
-  0x91ab, 0x23b6,
-  0x91ac, 0x325b,
-  0x91ba, 0x268c,
-  0x91bb, 0x24de,
-  0x91bc, 0x3269,
-  0x91bf, 0x24e0,
-  0x91c0, 0x326c,
-  0x91c3, 0x23b8,
-  0x91c4, 0x326f,
-  0x91cd, 0x1e81,
-  0x91ce, 0x3278,
-  0x91d0, 0x1ffe,
-  0x91d1, 0x1f51,
-  0x91d2, 0x21e1,
-  0x91d3, 0x327a,
-  0x91d4, 0x23b0,
-  0x91d5, 0x327b,
-  0x91d6, 0x1fce,
-  0x91d7, 0x327c,
-  0x91d8, 0x211e,
-  0x91d9, 0x2021,
-  0x91da, 0x327d,
-  0x91df, 0x24e1,
-  0x91e0, 0x3282,
-  0x91e2, 0x24a3,
-  0x91e3, 0x3284,
-  0x91ea, 0x24a4,
-  0x91eb, 0x328b,
-  0x91f0, 0x2273,
-  0x91f1, 0x3290,
-  0x91f2, 0x21b0,
-  0x91f3, 0x3291,
-  0x9240, 0x329d,
-  0x9280, 0x32dc,
-  0x92b6, 0x21d1,
-  0x92b7, 0x3312,
-  0x92ce, 0x211c,
-  0x92cf, 0x3329,
-  0x92d0, 0x235d,
-  0x92d1, 0x332a,
-  0x92d4, 0x2682,
-  0x92d5, 0x332d,
-  0x92df, 0x210d,
-  0x92e0, 0x205a,
-  0x92e1, 0x3337,
-  0x92fe, 0x1f8d,
-  0x9340, 0x3354,
-  0x9350, 0x21ff,
-  0x9351, 0x3364,
-  0x935d, 0x1f58,
-  0x935e, 0x3370,
-  0x9370, 0x215b,
-  0x9371, 0x3382,
-  0x9376, 0x1eb6,
-  0x9377, 0x3387,
-  0x9380, 0x338f,
-  0x938c, 0x20db,
-  0x938d, 0x339b,
-  0x939d, 0x2360,
-  0x939e, 0x33ab,
-  0x93a5, 0x2361,
-  0x93a6, 0x33b2,
-  0x93a7, 0x2040,
-  0x93a8, 0x33b3,
-  0x93b4, 0x228e,
-  0x93b5, 0x33bf,
-  0x93b8, 0x1fdf,
-  0x93b9, 0x33c2,
-  0x93bb, 0x235e,
-  0x93bc, 0x33c4,
-  0x93bd, 0x1e6a,
-  0x93be, 0x33c5,
-  0x93c6, 0x2002,
-  0x93c7, 0x33cd,
-  0x93cf, 0x2093,
-  0x93d0, 0x33d5,
-  0x93d7, 0x235f,
-  0x93d8, 0x33dc,
-  0x93db, 0x1eac,
-  0x93dc, 0x1e54,
-  0x93dd, 0x33df,
-  0x93e1, 0x1f08,
-  0x93e2, 0x33e3,
-  0x93e4, 0x20c0,
-  0x93e5, 0x2362,
-  0x93e6, 0x33e5,
-  0x93e9, 0x2160,
-  0x93ea, 0x33e8,
-  0x93eb, 0x219d,
-  0x93ec, 0x1f8e,
-  0x93ed, 0x222d,
-  0x93ee, 0x33e9,
-  0x93ef, 0x2047,
-  0x93f0, 0x33ea,
-  0x93f1, 0x2262,
-  0x93f2, 0x33eb,
-  0x93f4, 0x1f67,
-  0x93f5, 0x1eb2,
-  0x93f6, 0x33ed,
-  0x93fa, 0x1ea9,
-  0x93fb, 0x33f1,
-  0x93fe, 0x1fcc,
-  0x9440, 0x33f4,
-  0x9444, 0x1f72,
-  0x9445, 0x33f8,
-  0x944d, 0x2098,
-  0x944e, 0x3400,
-  0x9450, 0x1e52,
-  0x9451, 0x20a4,
-  0x9452, 0x1f1c,
-  0x9453, 0x228f,
-  0x9454, 0x3402,
-  0x9455, 0x1fed,
-  0x9456, 0x3403,
-  0x9458, 0x2365,
-  0x9459, 0x3405,
-  0x945b, 0x1e2d,
-  0x945c, 0x2152,
-  0x945d, 0x2366,
-  0x945e, 0x3407,
-  0x945f, 0x20fa,
-  0x9460, 0x3408,
-  0x9464, 0x2363,
-  0x9465, 0x340c,
-  0x9466, 0x209a,
-  0x9467, 0x340d,
-  0x946e, 0x203c,
-  0x946f, 0x3414,
-  0x9472, 0x1ff6,
-  0x9473, 0x3417,
-  0x9474, 0x2364,
-  0x9475, 0x3418,
-  0x9476, 0x1e69,
-  0x9477, 0x3419,
-  0x9478, 0x2367,
-  0x9479, 0x341a,
-  0x947a, 0x211d,
-  0x947b, 0x341b,
-  0x9480, 0x2259,
-  0x9481, 0x2056,
-  0x9482, 0x2163,
-  0x9483, 0x341f,
-  0x9487, 0x1fa9,
-  0x9488, 0x1ffc,
-  0x9489, 0x3423,
-  0x94a1, 0x1e2e,
-  0x94a2, 0x343b,
-  0x94b3, 0x1ebc,
-  0x94b4, 0x344c,
-  0x94b5, 0x2142,
-  0x94b6, 0x344d,
-  0x94bf, 0x201e,
-  0x94c0, 0x1e43,
-  0x94c1, 0x3456,
-  0x94cc, 0x24d4,
-  0x94cd, 0x3461,
-  0x94d8, 0x226f,
-  0x94d9, 0x346c,
-  0x94e0, 0x1ed7,
-  0x94e1, 0x3473,
-  0x9540, 0x3491,
-  0x9572, 0x212d,
-  0x9573, 0x34c3,
-  0x9580, 0x34cf,
-  0x9583, 0x229b,
-  0x9584, 0x34d2,
-  0x959e, 0x2256,
-  0x959f, 0x24a8,
-  0x95a0, 0x34ec,
-  0x95b3, 0x1e79,
-  0x95b4, 0x34ff,
-  0x95ba, 0x225a,
-  0x95bb, 0x3505,
-  0x95cf, 0x24a7,
-  0x95d0, 0x3519,
-  0x95d1, 0x2686,
-  0x95d2, 0x24a6,
-  0x95d3, 0x351a,
-  0x95d4, 0x21ce,
-  0x95d5, 0x351b,
-  0x95e1, 0x24a9,
-  0x95e2, 0x3527,
-  0x95e7, 0x1fe7,
-  0x95e8, 0x352c,
-  0x95f1, 0x2112,
-  0x95f2, 0x3535,
-  0x95f8, 0x213c,
-  0x95f9, 0x353b,
-  0x95fe, 0x1f5c,
-  0x9640, 0x3540,
-  0x9656, 0x24c4,
-  0x9657, 0x3556,
-  0x967c, 0x1ecc,
-  0x967d, 0x357b,
-  0x9680, 0x357d,
-  0x9740, 0x35fc,
-  0x9767, 0x246a,
-  0x9768, 0x3623,
-  0x976c, 0x2175,
-  0x976d, 0x3627,
-  0x976e, 0x246d,
-  0x976f, 0x3628,
-  0x9780, 0x3638,
-  0x9796, 0x246b,
-  0x9797, 0x225f,
-  0x9798, 0x364e,
-  0x979d, 0x1ece,
-  0x979e, 0x3653,
-  0x97a3, 0x2272,
-  0x97a4, 0x3658,
-  0x97bf, 0x2473,
-  0x97c0, 0x3673,
-  0x97ee, 0x21fe,
-  0x97ef, 0x36a1,
-  0x97f7, 0x1efe,
-  0x97f8, 0x36a9,
-  0x9840, 0x36b0,
-  0x9845, 0x2475,
-  0x9846, 0x36b5,
-  0x9849, 0x220a,
-  0x984a, 0x36b8,
-  0x984f, 0x1f6f,
-  0x9850, 0x36bd,
-  0x9871, 0x2468,
-  0x9872, 0x36de,
-  0x9873, 0x2100,
-  0x9874, 0x36df,
-  0x9880, 0x36ea,
-  0x9881, 0x2476,
-  0x9882, 0x36eb,
-  0x988b, 0x1f27,
-  0x988c, 0x20d7,
-  0x988d, 0x36f4,
-  0x98a0, 0x247c,
-  0x98a1, 0x3707,
-  0x98aa, 0x1fa1,
-  0x98ab, 0x3710,
-  0x98b6, 0x22aa,
-  0x98b7, 0x2005,
-  0x98b8, 0x371b,
-  0x98ba, 0x246c,
-  0x98bb, 0x371d,
-  0x98c7, 0x203e,
-  0x98c8, 0x3729,
-  0x98cb, 0x1e4c,
-  0x98cc, 0x372c,
-  0x98d0, 0x213a,
-  0x98d1, 0x3730,
-  0x98d3, 0x2204,
-  0x98d4, 0x3732,
-  0x98e3, 0x20c3,
-  0x98e4, 0x2140,
-  0x98e5, 0x2477,
-  0x98e6, 0x3741,
-  0x98ef, 0x2474,
-  0x98f0, 0x374a,
-  0x98f2, 0x20dd,
-  0x98f3, 0x374c,
-  0x9940, 0x3758,
-  0x9943, 0x1f68,
-  0x9944, 0x375b,
-  0x9945, 0x2185,
-  0x9946, 0x375c,
-  0x9966, 0x2472,
-  0x9967, 0x377c,
-  0x996e, 0x1eb5,
-  0x996f, 0x3783,
-  0x9975, 0x2478,
-  0x9976, 0x3789,
-  0x997a, 0x1f8b,
-  0x997b, 0x2484,
-  0x997c, 0x378d,
-  0x9980, 0x3790,
-  0x9985, 0x2699,
-  0x9986, 0x3795,
-  0x9989, 0x2482,
-  0x998a, 0x3798,
-  0x998e, 0x20a1,
-  0x998f, 0x379c,
-  0x9991, 0x1f92,
-  0x9992, 0x379e,
-  0x9999, 0x1f38,
-  0x999a, 0x37a5,
-  0x99a9, 0x2485,
-  0x99aa, 0x37b4,
-  0x99b0, 0x2480,
-  0x99b1, 0x246e,
-  0x99b2, 0x37ba,
-  0x99b3, 0x247b,
-  0x99b4, 0x2486,
-  0x99b5, 0x2471,
-  0x99b6, 0x37bb,
-  0x99bd, 0x2483,
-  0x99be, 0x2470,
-  0x99bf, 0x37c2,
-  0x99c0, 0x2469,
-  0x99c1, 0x37c3,
-  0x99c2, 0x247f,
-  0x99c3, 0x37c4,
-  0x99c9, 0x246f,
-  0x99ca, 0x37ca,
-  0x99ce, 0x2481,
-  0x99cf, 0x37ce,
-  0x99d1, 0x2220,
-  0x99d2, 0x37d0,
-  0x99da, 0x1ff5,
-  0x99db, 0x37d8,
-  0x99e0, 0x20f4,
-  0x99e1, 0x37dd,
-  0x99e5, 0x247d,
-  0x99e6, 0x37e1,
-  0x99e8, 0x2479,
-  0x99e9, 0x37e3,
-  0x99ec, 0x247e,
-  0x99ed, 0x37e6,
-  0x99f4, 0x247a,
-  0x99f5, 0x37ed,
-  0x9a40, 0x37f7,
-  0x9a4a, 0x20e3,
-  0x9a4b, 0x3801,
-  0x9a57, 0x20ad,
-  0x9a58, 0x380d,
-  0x9a65, 0x24cb,
-  0x9a66, 0x381a,
-  0x9a67, 0x1f53,
-  0x9a68, 0x381b,
-  0x9a71, 0x2159,
-  0x9a72, 0x3824,
-  0x9a76, 0x2013,
-  0x9a77, 0x1f33,
-  0x9a78, 0x3828,
-  0x9a80, 0x382f,
-  0x9a88, 0x1e5c,
-  0x9a89, 0x3837,
-  0x9a8c, 0x2488,
-  0x9a8d, 0x383a,
-  0x9a91, 0x2487,
-  0x9a92, 0x383e,
-  0x9a97, 0x248a,
-  0x9a98, 0x3843,
-  0x9a9a, 0x2489,
-  0x9a9b, 0x248b,
-  0x9a9c, 0x3845,
-  0x9a9e, 0x1f83,
-  0x9a9f, 0x3847,
-  0x9aa2, 0x210f,
-  0x9aa3, 0x1fdb,
-  0x9aa4, 0x384a,
-  0x9aaa, 0x20af,
-  0x9aab, 0x3850,
-  0x9ad0, 0x24c0,
-  0x9ad1, 0x3875,
-  0x9ad6, 0x226d,
-  0x9ad7, 0x387a,
-  0x9ada, 0x24c1,
-  0x9adb, 0x387d,
-  0x9ae2, 0x20ca,
-  0x9ae3, 0x3884,
-  0x9ae4, 0x20e7,
-  0x9ae5, 0x24c2,
-  0x9ae6, 0x3885,
-  0x9b40, 0x389e,
-  0x9b80, 0x38dd,
-  0x9bd1, 0x23dc,
-  0x9bd2, 0x392e,
-  0x9bdc, 0x23db,
-  0x9bdd, 0x3938,
-  0x9c40, 0x395a,
-  0x9c53, 0x205e,
-  0x9c54, 0x396d,
-  0x9c59, 0x2244,
-  0x9c5a, 0x23e2,
-  0x9c5b, 0x3972,
-  0x9c5c, 0x20d4,
-  0x9c5d, 0x3973,
-  0x9c75, 0x219f,
-  0x9c76, 0x398b,
-  0x9c79, 0x1e66,
-  0x9c7a, 0x398e,
-  0x9c80, 0x3993,
-  0x9c86, 0x1f63,
-  0x9c87, 0x3999,
-  0x9c9d, 0x23dd,
-  0x9c9e, 0x39af,
-  0x9cab, 0x216b,
-  0x9cac, 0x39bc,
-  0x9cca, 0x22b5,
-  0x9ccb, 0x39da,
-  0x9ccf, 0x1f26,
-  0x9cd0, 0x39de,
-  0x9ce6, 0x1e63,
-  0x9ce7, 0x2088,
-  0x9ce8, 0x39f4,
-  0x9cec, 0x1ebd,
-  0x9ced, 0x39f8,
-  0x9cee, 0x2341,
-  0x9cef, 0x39f9,
-  0x9cfb, 0x1f4b,
-  0x9cfc, 0x3a05,
-  0x9cfe, 0x2292,
-  0x9d40, 0x3a07,
-  0x9d42, 0x2124,
-  0x9d43, 0x3a09,
-  0x9d46, 0x2048,
-  0x9d47, 0x23e0,
-  0x9d48, 0x3a0c,
-  0x9d4d, 0x2077,
-  0x9d4e, 0x3a11,
-  0x9d4f, 0x223a,
-  0x9d50, 0x3a12,
-  0x9d61, 0x20b1,
-  0x9d62, 0x3a23,
-  0x9d68, 0x1f41,
-  0x9d69, 0x201c,
-  0x9d6a, 0x3a29,
-  0x9d6e, 0x22b8,
-  0x9d6f, 0x3a2d,
-  0x9d71, 0x2276,
-  0x9d72, 0x3a2f,
-  0x9d75, 0x1f9b,
-  0x9d76, 0x3a32,
-  0x9d7b, 0x1f9f,
-  0x9d7c, 0x3a37,
-  0x9d7d, 0x25ca,
-  0x9d7e, 0x3a38,
-  0x9d80, 0x3a39,
-  0x9d8a, 0x20be,
-  0x9d8b, 0x3a43,
-  0x9d8d, 0x1fb4,
-  0x9d8e, 0x3a45,
-  0x9d91, 0x23d7,
-  0x9d92, 0x3a48,
-  0x9d99, 0x2105,
-  0x9d9a, 0x3a4f,
-  0x9da1, 0x23e1,
-  0x9da2, 0x1fec,
-  0x9da3, 0x3a56,
-  0x9da7, 0x23ea,
-  0x9da8, 0x3a5a,
-  0x9dac, 0x23e3,
-  0x9dad, 0x210e,
-  0x9dae, 0x3a5e,
-  0x9db2, 0x1fa6,
-  0x9db3, 0x2004,
-  0x9db4, 0x3a62,
-  0x9dbe, 0x1f9d,
-  0x9dbf, 0x3a6c,
-  0x9dc6, 0x23e5,
-  0x9dc7, 0x3a73,
-  0x9dc9, 0x2264,
-  0x9dca, 0x3a75,
-  0x9dcd, 0x24e2,
-  0x9dce, 0x3a78,
-  0x9dd2, 0x23de,
-  0x9dd3, 0x3a7c,
-  0x9dd5, 0x1ec4,
-  0x9dd6, 0x3a7e,
-  0x9de1, 0x22b6,
-  0x9de2, 0x20a9,
-  0x9de3, 0x3a89,
-  0x9df1, 0x212b,
-  0x9df2, 0x3a97,
-  0x9df4, 0x20a5,
-  0x9df5, 0x3a99,
-  0x9df7, 0x268b,
-  0x9df8, 0x3a9b,
-  0x9dfa, 0x1f76,
-  0x9dfb, 0x3a9d,
-  0x9dfd, 0x216d,
-  0x9dfe, 0x3a9f,
-  0x9e40, 0x3aa0,
-  0x9e45, 0x2001,
-  0x9e46, 0x3aa5,
-  0x9e48, 0x2191,
-  0x9e49, 0x1e50,
-  0x9e4a, 0x3aa7,
-  0x9e52, 0x1f9c,
-  0x9e53, 0x3aaf,
-  0x9e54, 0x23da,
-  0x9e55, 0x3ab0,
-  0x9e56, 0x2053,
-  0x9e57, 0x3ab1,
-  0x9e5d, 0x23e9,
-  0x9e5e, 0x23e4,
-  0x9e5f, 0x3ab7,
-  0x9e61, 0x21d5,
-  0x9e62, 0x3ab9,
-  0x9e63, 0x23e6,
-  0x9e64, 0x3aba,
-  0x9e67, 0x23df,
-  0x9e68, 0x3abd,
-  0x9e6c, 0x1e4f,
-  0x9e6d, 0x3ac1,
-  0x9e6f, 0x23d9,
-  0x9e70, 0x3ac3,
-  0x9e72, 0x2014,
-  0x9e73, 0x3ac5,
-  0x9e74, 0x23ec,
-  0x9e75, 0x23eb,
-  0x9e76, 0x3ac6,
-  0x9e7b, 0x23d8,
-  0x9e7c, 0x23ee,
-  0x9e7d, 0x3acb,
-  0x9e80, 0x3acd,
-  0x9e85, 0x268e,
-  0x9e86, 0x3ad2,
-  0x9e87, 0x23ed,
-  0x9e88, 0x3ad3,
-  0x9e91, 0x1ffa,
-  0x9e92, 0x3adc,
-  0x9e96, 0x23d6,
-  0x9e97, 0x23e8,
-  0x9e98, 0x3ae0,
-  0x9ea2, 0x2106,
-  0x9ea3, 0x3aea,
-  0x9ea6, 0x200b,
-  0x9ea7, 0x3aed,
-  0x9ea9, 0x2166,
-  0x9eaa, 0x3aef,
-  0x9eae, 0x23ef,
-  0x9eaf, 0x3af3,
-  0x9eb3, 0x2189,
-  0x9eb4, 0x2058,
-  0x9eb5, 0x3af7,
-  0x9eb7, 0x23e7,
-  0x9eb8, 0x3af9,
-  0x9ef5, 0x21a3,
-  0x9ef6, 0x3b36,
-  0x9f40, 0x3b3f,
-  0x9f4e, 0x217a,
-  0x9f4f, 0x3b4d,
-  0x9f6f, 0x21a5,
-  0x9f70, 0x3b6d,
-  0x9f80, 0x3b7c,
-  0x9f92, 0x2022,
-  0x9f93, 0x3b8e,
-  0x9f98, 0x24d6,
-  0x9f99, 0x3b93,
-  0x9fa6, 0x233a,
-  0x9fa7, 0x3ba0,
-  0x9fa9, 0x1eee,
-  0x9faa, 0x3ba2,
-  0x9fac, 0x24d5,
-  0x9fad, 0x3ba4,
-  0x9fc9, 0x2228,
-  0x9fca, 0x3bc0,
-  0x9fcd, 0x24d7,
-  0x9fce, 0x3bc3,
-  0x9fe1, 0x20fc,
-  0x9fe2, 0x3bd6,
-  0x9feb, 0x1e87,
-  0x9fec, 0x3bdf,
-  0x9fee, 0x24d8,
-  0x9fef, 0x3be1,
-  0x9ff4, 0x1eba,
-  0x9ff5, 0x3be6,
-  0x9ffd, 0x2119,
-  0x9ffe, 0x3bee,
-  0xa040, 0x3bef,
-  0xa043, 0x216c,
-  0xa044, 0x3bf2,
-  0xa046, 0x24d9,
-  0xa047, 0x3bf4,
-  0xa049, 0x2227,
-  0xa04a, 0x3bf6,
-  0xa04e, 0x1e5f,
-  0xa04f, 0x3bfa,
-  0xa054, 0x229f,
-  0xa055, 0x3bff,
-  0xa05a, 0x1f5d,
-  0xa05b, 0x3c04,
-  0xa061, 0x1fbc,
-  0xa062, 0x3c0a,
-  0xa063, 0x24da,
-  0xa064, 0x3c0b,
-  0xa071, 0x2149,
-  0xa072, 0x3c18,
-  0xa074, 0x2046,
-  0xa075, 0x3c1a,
-  0xa080, 0x2000,
-  0xa081, 0x3c24,
-  0xa091, 0x2190,
-  0xa092, 0x3c34,
-  0xa094, 0x2208,
-  0xa095, 0x3c36,
-  0xa096, 0x1ee6,
-  0xa097, 0x3c37,
-  0xa0a9, 0x24c3,
-  0xa0aa, 0x3c49,
-  0xa0bf, 0x20cc,
-  0xa0c0, 0x3c5e,
-  0xa0ce, 0x2340,
-  0xa0cf, 0x3c6c,
-  0xa0d9, 0x1ed1,
-  0xa0da, 0x3c76,
-  0xa0de, 0x21ac,
-  0xa0df, 0x3c7a,
-  0xa0ee, 0x22af,
-  0xa0ef, 0x3c89,
-  0xa1a1, 0x0060,
-  0xa2a1, 0x26a9,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa840, 0x26b3,
-  0xa880, 0x26f2,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa940, 0x2708,
-  0xa959, 0x2720,
-  0xa95c, 0x2722,
-  0xa960, 0x2723,
-  0xa980, 0x2742,
-  0xa996, 0x1e17,
-  0xa9a4, 0x02e2,
-  0xaa40, 0x3c99,
-  0xaa4d, 0x21b6,
-  0xaa4e, 0x1e3d,
-  0xaa4f, 0x3ca6,
-  0xaa71, 0x2235,
-  0xaa72, 0x3cc8,
-  0xaa73, 0x2397,
-  0xaa74, 0x3cc9,
-  0xaa77, 0x2395,
-  0xaa78, 0x3ccc,
-  0xaa7a, 0x223f,
-  0xaa7b, 0x212a,
-  0xaa7c, 0x3cce,
-  0xaa80, 0x3cd1,
-  0xaa9a, 0x1ed2,
-  0xaa9b, 0x3ceb,
-  0xaa9c, 0x2396,
-  0xaa9d, 0x2398,
-  0xaa9e, 0x3cec,
-  0xaa9f, 0x20a2,
-  0xaaa0, 0x3ced,
-  0xaaa1, 0x032e,
-  0xab40, 0x1f64,
-  0xab41, 0x3cee,
-  0xab43, 0x202b,
-  0xab44, 0x3cf0,
-  0xab45, 0x2394,
-  0xab46, 0x2139,
-  0xab47, 0x3cf1,
-  0xab48, 0x215f,
-  0xab49, 0x21c1,
-  0xab4a, 0x239a,
-  0xab4b, 0x3cf2,
-  0xab4d, 0x2399,
-  0xab4e, 0x3cf4,
-  0xab80, 0x3d25,
-  0xaba1, 0x038c,
-  0xac40, 0x3d46,
-  0xac46, 0x21c0,
-  0xac47, 0x3d4c,
-  0xac71, 0x2460,
-  0xac72, 0x3d76,
-  0xac7c, 0x245c,
-  0xac7d, 0x3d80,
-  0xac80, 0x3d82,
-  0xac8d, 0x215d,
-  0xac8e, 0x3d8f,
-  0xac93, 0x2225,
-  0xac94, 0x206a,
-  0xac95, 0x3d94,
-  0xad40, 0x3da0,
-  0xad49, 0x2461,
-  0xad4a, 0x3da9,
-  0xad5e, 0x245b,
-  0xad5f, 0x3dbd,
-  0xad61, 0x2462,
-  0xad62, 0x3dbf,
-  0xad68, 0x1f54,
-  0xad69, 0x3dc5,
-  0xad74, 0x245f,
-  0xad75, 0x3dd0,
-  0xad80, 0x3dda,
-  0xad82, 0x20ec,
-  0xad83, 0x3ddc,
-  0xad87, 0x245d,
-  0xad88, 0x3de0,
-  0xad8b, 0x2463,
-  0xad8c, 0x3de3,
-  0xad91, 0x2464,
-  0xad92, 0x3de8,
-  0xae40, 0x3df7,
-  0xae54, 0x24a5,
-  0xae55, 0x3e0b,
-  0xae62, 0x1e70,
-  0xae63, 0x3e18,
-  0xae80, 0x208f,
-  0xae81, 0x3e34,
-  0xae85, 0x1e42,
-  0xae86, 0x3e38,
-  0xae8b, 0x1f4e,
-  0xae8c, 0x3e3d,
-  0xae94, 0x1eb1,
-  0xae95, 0x3e45,
-  0xaea0, 0x1e8b,
-  0xaf40, 0x3e50,
-  0xaf64, 0x1fc6,
-  0xaf65, 0x3e74,
-  0xaf7b, 0x25ae,
-  0xaf7c, 0x3e8a,
-  0xaf80, 0x3e8d,
-  0xaf82, 0x1f01,
-  0xaf83, 0x2200,
-  0xaf84, 0x3e8f,
-  0xaf8e, 0x25b2,
-  0xaf8f, 0x1e97,
-  0xaf90, 0x3e99,
-  0xaf91, 0x20ab,
-  0xaf92, 0x3e9a,
-  0xaf9c, 0x25b3,
-  0xaf9d, 0x3ea4,
-  0xaf9f, 0x2028,
-  0xafa0, 0x3ea6,
-  0xb040, 0x3ea7,
-  0xb041, 0x25af,
-  0xb043, 0x3ea8,
-  0xb044, 0x25b1,
-  0xb045, 0x3ea9,
-  0xb04f, 0x25ac,
-  0xb050, 0x3eb3,
-  0xb054, 0x1e4e,
-  0xb055, 0x3eb7,
-  0xb057, 0x2202,
-  0xb058, 0x25ab,
-  0xb059, 0x2286,
-  0xb05a, 0x3eb9,
-  0xb05b, 0x25ad,
-  0xb05c, 0x3eba,
-  0xb05d, 0x25b6,
-  0xb05e, 0x3ebb,
-  0xb05f, 0x21e3,
-  0xb060, 0x25b4,
-  0xb062, 0x222f,
-  0xb063, 0x2165,
-  0xb064, 0x25b7,
-  0xb065, 0x3ebc,
-  0xb06c, 0x1ee9,
-  0xb06d, 0x3ec3,
-  0xb07d, 0x1e25,
-  0xb07e, 0x3ed3,
-  0xb080, 0x3ed4,
-  0xb097, 0x25c0,
-  0xb098, 0x3eeb,
-  0xb099, 0x229a,
-  0xb09a, 0x3eec,
-  0xb0a1, 0x03ac,
-  0xb140, 0x3ef3,
-  0xb14b, 0x226e,
-  0xb14c, 0x3efe,
-  0xb14d, 0x1fbd,
-  0xb14e, 0x3eff,
-  0xb14f, 0x1f84,
-  0xb150, 0x20b2,
-  0xb151, 0x3f00,
-  0xb152, 0x2043,
-  0xb153, 0x3f01,
-  0xb180, 0x3f2d,
-  0xb197, 0x2684,
-  0xb198, 0x3f44,
-  0xb1a1, 0x040a,
-  0xb240, 0x3f4d,
-  0xb241, 0x24ef,
-  0xb242, 0x3f4e,
-  0xb267, 0x24ee,
-  0xb268, 0x3f73,
-  0xb26d, 0x2074,
-  0xb26e, 0x3f78,
-  0xb274, 0x2687,
-  0xb275, 0x3f7e,
-  0xb280, 0x24f0,
-  0xb281, 0x3f88,
-  0xb289, 0x268d,
-  0xb28a, 0x3f90,
-  0xb29a, 0x22a0,
-  0xb29b, 0x3fa0,
-  0xb2a1, 0x0468,
-  0xb340, 0x3fa6,
-  0xb343, 0x1fab,
-  0xb344, 0x3fa9,
-  0xb370, 0x26a8,
-  0xb371, 0x3fd5,
-  0xb380, 0x3fe3,
-  0xb388, 0x24e9,
-  0xb389, 0x3feb,
-  0xb38c, 0x24e5,
-  0xb38d, 0x3fee,
-  0xb38e, 0x21fa,
-  0xb38f, 0x3fef,
-  0xb3a1, 0x04c6,
-  0xb440, 0x4001,
-  0xb454, 0x2148,
-  0xb455, 0x4015,
-  0xb458, 0x24e4,
-  0xb459, 0x4018,
-  0xb45e, 0x24e6,
-  0xb45f, 0x20f7,
-  0xb460, 0x401d,
-  0xb461, 0x206b,
-  0xb462, 0x401e,
-  0xb475, 0x22a7,
-  0xb476, 0x4031,
-  0xb47e, 0x24ec,
-  0xb480, 0x4039,
-  0xb483, 0x24eb,
-  0xb484, 0x403c,
-  0xb489, 0x24e3,
-  0xb48a, 0x4041,
-  0xb493, 0x24ea,
-  0xb494, 0x404a,
-  0xb4a1, 0x0524,
-  0xb540, 0x4057,
-  0xb541, 0x1e92,
-  0xb542, 0x4058,
-  0xb54b, 0x1e27,
-  0xb54c, 0x4061,
-  0xb556, 0x1fe6,
-  0xb557, 0x406b,
-  0xb55a, 0x24e7,
-  0xb55b, 0x2012,
-  0xb55c, 0x1eec,
-  0xb55d, 0x406e,
-  0xb561, 0x24e8,
-  0xb562, 0x4072,
-  0xb580, 0x408f,
-  0xb59c, 0x1f66,
-  0xb59d, 0x24dc,
-  0xb59e, 0x40ab,
-  0xb5a1, 0x0582,
-  0xb640, 0x40ae,
-  0xb652, 0x26a2,
-  0xb653, 0x40c0,
-  0xb655, 0x24dd,
-  0xb656, 0x40c2,
-  0xb659, 0x200e,
-  0xb65a, 0x40c5,
-  0xb65b, 0x24db,
-  0xb65c, 0x1eb8,
-  0xb65d, 0x40c6,
-  0xb680, 0x40e8,
-  0xb6a1, 0x05e0,
-  0xb740, 0x4109,
-  0xb74e, 0x2295,
-  0xb74f, 0x4117,
-  0xb751, 0x1e80,
-  0xb752, 0x4119,
-  0xb759, 0x2677,
-  0xb75a, 0x4120,
-  0xb764, 0x2624,
-  0xb765, 0x1f69,
-  0xb766, 0x222b,
-  0xb767, 0x412a,
-  0xb777, 0x257f,
-  0xb778, 0x1f5b,
-  0xb779, 0x413a,
-  0xb780, 0x219b,
-  0xb781, 0x4140,
-  0xb782, 0x267d,
-  0xb783, 0x4141,
-  0xb7a1, 0x063e,
-  0xb840, 0x415f,
-  0xb843, 0x21a0,
-  0xb844, 0x2186,
-  0xb845, 0x4162,
-  0xb846, 0x20ed,
-  0xb847, 0x4163,
-  0xb84d, 0x25b9,
-  0xb84e, 0x4169,
-  0xb851, 0x1fea,
-  0xb852, 0x416c,
-  0xb85a, 0x1ea4,
-  0xb85b, 0x20e1,
-  0xb85c, 0x4174,
-  0xb85d, 0x25b8,
-  0xb85e, 0x2260,
-  0xb85f, 0x4175,
-  0xb860, 0x20e2,
-  0xb861, 0x4176,
-  0xb877, 0x2141,
-  0xb878, 0x418c,
-  0xb880, 0x4193,
-  0xb882, 0x1fc7,
-  0xb883, 0x4195,
-  0xb8a1, 0x069c,
-  0xb940, 0x41b3,
-  0xb950, 0x1e41,
-  0xb951, 0x41c3,
-  0xb961, 0x25e4,
-  0xb962, 0x41d3,
-  0xb97b, 0x1f86,
-  0xb97c, 0x41ec,
-  0xb980, 0x41ef,
-  0xb99d, 0x1fb3,
-  0xb99e, 0x420c,
-  0xb9a0, 0x1eef,
-  0xb9a1, 0x06fa,
-  0xba40, 0x420e,
-  0xba42, 0x22a4,
-  0xba43, 0x4210,
-  0xba44, 0x25e8,
-  0xba45, 0x4211,
-  0xba56, 0x25e3,
-  0xba57, 0x4222,
-  0xba59, 0x2111,
-  0xba5a, 0x4224,
-  0xba60, 0x25e6,
-  0xba61, 0x422a,
-  0xba6a, 0x25e7,
-  0xba6b, 0x4233,
-  0xba74, 0x2041,
-  0xba75, 0x423c,
-  0xba80, 0x4246,
-  0xba84, 0x25ea,
-  0xba85, 0x424a,
-  0xba86, 0x1f8f,
-  0xba87, 0x424b,
-  0xba88, 0x25ec,
-  0xba89, 0x424c,
-  0xba8d, 0x25eb,
-  0xba8e, 0x4250,
-  0xba9e, 0x20d0,
-  0xba9f, 0x201d,
-  0xbaa0, 0x4260,
-  0xbaa1, 0x0758,
-  0xbb40, 0x1ff7,
-  0xbb41, 0x4261,
-  0xbb49, 0x1e8d,
-  0xbb4a, 0x4269,
-  0xbb58, 0x25e9,
-  0xbb59, 0x4277,
-  0xbb5b, 0x25ee,
-  0xbb5c, 0x203a,
-  0xbb5d, 0x4279,
-  0xbb60, 0x2693,
-  0xbb61, 0x427c,
-  0xbb65, 0x25e5,
-  0xbb66, 0x25ed,
-  0xbb67, 0x4280,
-  0xbb68, 0x2009,
-  0xbb69, 0x4281,
-  0xbb6a, 0x2065,
-  0xbb6b, 0x4282,
-  0xbb6e, 0x26a3,
-  0xbb6f, 0x4285,
-  0xbb80, 0x4295,
-  0xbba1, 0x07b6,
-  0xbc40, 0x42b6,
-  0xbc52, 0x25f5,
-  0xbc53, 0x1efc,
-  0xbc54, 0x42c8,
-  0xbc5a, 0x2024,
-  0xbc5b, 0x42ce,
-  0xbc61, 0x269b,
-  0xbc62, 0x42d4,
-  0xbc63, 0x25f3,
-  0xbc64, 0x42d5,
-  0xbc65, 0x22d9,
-  0xbc66, 0x42d6,
-  0xbc67, 0x25f4,
-  0xbc68, 0x42d7,
-  0xbc69, 0x241b,
-  0xbc6a, 0x42d8,
-  0xbc6d, 0x1fc8,
-  0xbc6e, 0x42db,
-  0xbc6f, 0x1f7b,
-  0xbc70, 0x42dc,
-  0xbc71, 0x241d,
-  0xbc72, 0x42dd,
-  0xbc73, 0x224c,
-  0xbc74, 0x1f48,
-  0xbc75, 0x241c,
-  0xbc76, 0x241e,
-  0xbc78, 0x20ff,
-  0xbc79, 0x219a,
-  0xbc7a, 0x42de,
-  0xbc7b, 0x2091,
-  0xbc7c, 0x42df,
-  0xbc7e, 0x20a7,
-  0xbc80, 0x42e1,
-  0xbc82, 0x2423,
-  0xbc83, 0x1e9b,
-  0xbc84, 0x2422,
-  0xbc85, 0x42e3,
-  0xbc86, 0x2110,
-  0xbc87, 0x42e4,
-  0xbc88, 0x228d,
-  0xbc89, 0x1f71,
-  0xbc8a, 0x1ef8,
-  0xbc8b, 0x2421,
-  0xbc8c, 0x42e5,
-  0xbc8f, 0x1ef3,
-  0xbc90, 0x42e8,
-  0xbc9a, 0x21b1,
-  0xbc9b, 0x2426,
-  0xbc9c, 0x2425,
-  0xbc9d, 0x2120,
-  0xbc9e, 0x42f2,
-  0xbca1, 0x0814,
-  0xbd40, 0x42f5,
-  0xbd42, 0x211a,
-  0xbd43, 0x2424,
-  0xbd44, 0x42f7,
-  0xbd45, 0x2428,
-  0xbd46, 0x42f8,
-  0xbd48, 0x242a,
-  0xbd49, 0x2429,
-  0xbd4a, 0x42fa,
-  0xbd4b, 0x2294,
-  0xbd4c, 0x42fb,
-  0xbd4d, 0x22be,
-  0xbd4e, 0x42fc,
-  0xbd4f, 0x1e31,
-  0xbd50, 0x42fd,
-  0xbd57, 0x242c,
-  0xbd58, 0x4304,
-  0xbd59, 0x1fb5,
-  0xbd5a, 0x4305,
-  0xbd66, 0x242b,
-  0xbd67, 0x1faf,
-  0xbd68, 0x4311,
-  0xbd6a, 0x2068,
-  0xbd6b, 0x21e4,
-  0xbd6c, 0x4313,
-  0xbd6f, 0x1f21,
-  0xbd70, 0x4316,
-  0xbd71, 0x2101,
-  0xbd72, 0x4317,
-  0xbd79, 0x217c,
-  0xbd7a, 0x214a,
-  0xbd7b, 0x242d,
-  0xbd7c, 0x431e,
-  0xbd7e, 0x1fd4,
-  0xbd80, 0x4320,
-  0xbd81, 0x1fd1,
-  0xbd82, 0x4321,
-  0xbd89, 0x1e33,
-  0xbd8a, 0x4328,
-  0xbd8b, 0x242f,
-  0xbd8c, 0x4329,
-  0xbd8e, 0x242e,
-  0xbd8f, 0x432b,
-  0xbd90, 0x2430,
-  0xbd91, 0x21db,
-  0xbd92, 0x432c,
-  0xbd97, 0x2158,
-  0xbd98, 0x4331,
-  0xbd9b, 0x1fc2,
-  0xbd9c, 0x4334,
-  0xbda1, 0x0872,
-  0xbe40, 0x4339,
-  0xbe43, 0x22b9,
-  0xbe44, 0x433c,
-  0xbe45, 0x2436,
-  0xbe46, 0x433d,
-  0xbe49, 0x1e8e,
-  0xbe4a, 0x2439,
-  0xbe4b, 0x4340,
-  0xbe51, 0x21c5,
-  0xbe52, 0x2437,
-  0xbe53, 0x2192,
-  0xbe54, 0x4346,
-  0xbe55, 0x243a,
-  0xbe56, 0x1f19,
-  0xbe57, 0x218c,
-  0xbe58, 0x1e40,
-  0xbe59, 0x22b3,
-  0xbe5a, 0x4347,
-  0xbe5d, 0x205f,
-  0xbe5e, 0x2438,
-  0xbe5f, 0x2432,
-  0xbe60, 0x2274,
-  0xbe61, 0x434a,
-  0xbe62, 0x1e9c,
-  0xbe63, 0x2431,
-  0xbe64, 0x2085,
-  0xbe65, 0x434b,
-  0xbe69, 0x2435,
-  0xbe6a, 0x434f,
-  0xbe6c, 0x243b,
-  0xbe6d, 0x4351,
-  0xbe6f, 0x1fb7,
-  0xbe70, 0x2433,
-  0xbe71, 0x4353,
-  0xbe76, 0x2054,
-  0xbe77, 0x21de,
-  0xbe78, 0x4358,
-  0xbe79, 0x2434,
-  0xbe7a, 0x4359,
-  0xbe7c, 0x243d,
-  0xbe7d, 0x1f89,
-  0xbe7e, 0x243c,
-  0xbe80, 0x435b,
-  0xbe83, 0x1f6e,
-  0xbe84, 0x1ed8,
-  0xbe85, 0x435e,
-  0xbe86, 0x1ebf,
-  0xbe87, 0x2445,
-  0xbe88, 0x435f,
-  0xbe89, 0x2249,
-  0xbe8a, 0x4360,
-  0xbe8c, 0x2441,
-  0xbe8d, 0x4362,
-  0xbe8e, 0x1e47,
-  0xbe8f, 0x1f56,
-  0xbe90, 0x4363,
-  0xbe92, 0x2086,
-  0xbe93, 0x4365,
-  0xbe95, 0x2196,
-  0xbe96, 0x4367,
-  0xbe97, 0x2443,
-  0xbe98, 0x243f,
-  0xbe99, 0x4368,
-  0xbe9a, 0x2023,
-  0xbe9b, 0x4369,
-  0xbe9c, 0x2442,
-  0xbe9d, 0x436a,
-  0xbe9f, 0x243e,
-  0xbea0, 0x436c,
-  0xbea1, 0x08d0,
-  0xbf40, 0x26a6,
-  0xbf41, 0x436d,
-  0xbf4d, 0x234e,
-  0xbf4e, 0x2446,
-  0xbf4f, 0x244b,
-  0xbf50, 0x2444,
-  0xbf51, 0x4379,
-  0xbf55, 0x2427,
-  0xbf56, 0x244c,
-  0xbf57, 0x437d,
-  0xbf60, 0x1f0f,
-  0xbf61, 0x4386,
-  0xbf62, 0x2447,
-  0xbf63, 0x2449,
-  0xbf64, 0x2448,
-  0xbf65, 0x4387,
-  0xbf68, 0x21c2,
-  0xbf69, 0x438a,
-  0xbf6c, 0x216e,
-  0xbf6d, 0x438d,
-  0xbf70, 0x1f03,
-  0xbf71, 0x4390,
-  0xbf72, 0x244a,
-  0xbf73, 0x215c,
-  0xbf74, 0x4391,
-  0xbf76, 0x22bb,
-  0xbf77, 0x2450,
-  0xbf78, 0x4393,
-  0xbf79, 0x2694,
-  0xbf7a, 0x244f,
-  0xbf7b, 0x25f6,
-  0xbf7c, 0x2051,
-  0xbf7d, 0x4394,
-  0xbf7e, 0x244e,
-  0xbf80, 0x4395,
-  0xbf82, 0x22ba,
-  0xbf83, 0x1f6d,
-  0xbf84, 0x4397,
-  0xbf89, 0x2452,
-  0xbf8a, 0x2451,
-  0xbf8b, 0x439c,
-  0xbf95, 0x2455,
-  0xbf96, 0x43a6,
-  0xbf97, 0x2289,
-  0xbf98, 0x2116,
-  0xbf99, 0x43a7,
-  0xbf9d, 0x2454,
-  0xbf9e, 0x43ab,
-  0xbfa1, 0x092e,
-  0xc040, 0x20fb,
-  0xc041, 0x43ae,
-  0xc044, 0x2440,
-  0xc045, 0x43b1,
-  0xc04b, 0x2126,
-  0xc04c, 0x1f61,
-  0xc04d, 0x269d,
-  0xc04e, 0x43b7,
-  0xc04f, 0x1f8a,
-  0xc050, 0x2456,
-  0xc051, 0x2459,
-  0xc052, 0x2458,
-  0xc053, 0x43b8,
-  0xc055, 0x1fae,
-  0xc056, 0x43ba,
-  0xc05b, 0x221a,
-  0xc05c, 0x43bf,
-  0xc05e, 0x1f7a,
-  0xc05f, 0x244d,
-  0xc060, 0x2457,
-  0xc061, 0x43c1,
-  0xc069, 0x2453,
-  0xc06a, 0x43c9,
-  0xc06b, 0x2420,
-  0xc06c, 0x43ca,
-  0xc06d, 0x21df,
-  0xc06e, 0x2685,
-  0xc06f, 0x43cb,
-  0xc070, 0x1e6e,
-  0xc071, 0x43cc,
-  0xc074, 0x2224,
-  0xc075, 0x2670,
-  0xc076, 0x43cf,
-  0xc077, 0x21ba,
-  0xc078, 0x43d0,
-  0xc079, 0x245a,
-  0xc07a, 0x43d1,
-  0xc07c, 0x1fff,
-  0xc07d, 0x43d3,
-  0xc080, 0x43d5,
-  0xc09b, 0x25e2,
-  0xc09c, 0x43f0,
-  0xc09d, 0x269a,
-  0xc09e, 0x43f1,
-  0xc0a1, 0x098c,
-  0xc140, 0x43f4,
-  0xc150, 0x1eea,
-  0xc151, 0x4404,
-  0xc154, 0x1e2c,
-  0xc155, 0x4407,
-  0xc15f, 0x2062,
-  0xc160, 0x24f1,
-  0xc161, 0x4411,
-  0xc162, 0x24f2,
-  0xc163, 0x4412,
-  0xc175, 0x25f2,
-  0xc176, 0x4424,
-  0xc178, 0x2215,
-  0xc179, 0x4426,
-  0xc180, 0x442c,
-  0xc195, 0x21ae,
-  0xc196, 0x4441,
-  0xc1a1, 0x09ea,
-  0xc240, 0x444c,
-  0xc24e, 0x20e0,
-  0xc24f, 0x445a,
-  0xc265, 0x25c2,
-  0xc266, 0x4470,
-  0xc267, 0x25c1,
-  0xc268, 0x4471,
-  0xc27d, 0x2128,
-  0xc27e, 0x4486,
-  0xc280, 0x4487,
-  0xc284, 0x2199,
-  0xc285, 0x448b,
-  0xc293, 0x2017,
-  0xc294, 0x1ea0,
-  0xc295, 0x2125,
-  0xc296, 0x214d,
-  0xc297, 0x4499,
-  0xc298, 0x25c4,
-  0xc299, 0x209d,
-  0xc29a, 0x228a,
-  0xc29b, 0x449a,
-  0xc29c, 0x25c3,
-  0xc29d, 0x449b,
-  0xc2a0, 0x2179,
-  0xc2a1, 0x0a48,
-  0xc340, 0x2038,
-  0xc341, 0x449e,
-  0xc343, 0x2155,
-  0xc344, 0x44a0,
-  0xc37b, 0x21d2,
-  0xc37c, 0x44d7,
-  0xc380, 0x44da,
-  0xc384, 0x24c7,
-  0xc385, 0x44de,
-  0xc39b, 0x2279,
-  0xc39c, 0x44f4,
-  0xc3a1, 0x0aa6,
-  0xc440, 0x44f9,
-  0xc449, 0x2123,
-  0xc44a, 0x4502,
-  0xc44c, 0x24c5,
-  0xc44d, 0x4504,
-  0xc454, 0x24c9,
-  0xc455, 0x450b,
-  0xc458, 0x2094,
-  0xc459, 0x450e,
-  0xc45b, 0x2296,
-  0xc45c, 0x4510,
-  0xc463, 0x1e77,
-  0xc464, 0x4517,
-  0xc477, 0x1f06,
-  0xc478, 0x452a,
-  0xc47a, 0x1fa5,
-  0xc47b, 0x452c,
-  0xc480, 0x4530,
-  0xc481, 0x2099,
-  0xc482, 0x4531,
-  0xc491, 0x1ead,
-  0xc492, 0x24c8,
-  0xc493, 0x20a8,
-  0xc494, 0x4540,
-  0xc498, 0x201f,
-  0xc499, 0x4544,
-  0xc49a, 0x20c5,
-  0xc49b, 0x4545,
-  0xc49c, 0x24ca,
-  0xc49d, 0x4546,
-  0xc4a1, 0x0b04,
-  0xc540, 0x454a,
-  0xc544, 0x1ff0,
-  0xc545, 0x454e,
-  0xc546, 0x24c6,
-  0xc547, 0x454f,
-  0xc54b, 0x225d,
-  0xc54c, 0x22de,
-  0xc54d, 0x4553,
-  0xc552, 0x202c,
-  0xc553, 0x4558,
-  0xc55f, 0x2161,
-  0xc560, 0x4564,
-  0xc563, 0x223b,
-  0xc564, 0x21d9,
-  0xc565, 0x1fcb,
-  0xc566, 0x1fc9,
-  0xc567, 0x4567,
-  0xc580, 0x457f,
-  0xc593, 0x1e61,
-  0xc594, 0x4592,
-  0xc59c, 0x25ef,
-  0xc59d, 0x459a,
-  0xc59e, 0x1f98,
-  0xc59f, 0x459b,
-  0xc5a1, 0x0b62,
-  0xc640, 0x459d,
-  0xc641, 0x25f0,
-  0xc642, 0x459e,
-  0xc644, 0x1f88,
-  0xc645, 0x45a0,
-  0xc647, 0x21f8,
-  0xc648, 0x45a2,
-  0xc663, 0x2322,
-  0xc664, 0x45bd,
-  0xc672, 0x2336,
-  0xc673, 0x45cb,
-  0xc680, 0x45d7,
-  0xc6a1, 0x0bc0,
-  0xc740, 0x45f8,
-  0xc766, 0x22ab,
-  0xc767, 0x461e,
-  0xc76f, 0x1fbf,
-  0xc770, 0x4626,
-  0xc776, 0x1f7d,
-  0xc777, 0x462c,
-  0xc77b, 0x2333,
-  0xc77c, 0x4630,
-  0xc780, 0x4633,
-  0xc7a1, 0x0c1e,
-  0xc840, 0x4654,
-  0xc841, 0x1f4d,
-  0xc842, 0x4655,
-  0xc84f, 0x2334,
-  0xc850, 0x4662,
-  0xc852, 0x1ff1,
-  0xc853, 0x4664,
-  0xc866, 0x218b,
-  0xc867, 0x4677,
-  0xc86e, 0x2349,
-  0xc86f, 0x467e,
-  0xc87e, 0x220b,
-  0xc880, 0x468d,
-  0xc887, 0x2346,
-  0xc888, 0x4694,
-  0xc892, 0x2347,
-  0xc893, 0x469e,
-  0xc894, 0x2193,
-  0xc895, 0x469f,
-  0xc899, 0x26a1,
-  0xc89a, 0x46a3,
-  0xc89d, 0x1f62,
-  0xc89e, 0x46a6,
-  0xc8a1, 0x0c7c,
-  0xc940, 0x46a9,
-  0xc94f, 0x234d,
-  0xc950, 0x2348,
-  0xc951, 0x46b8,
-  0xc96e, 0x1e60,
-  0xc96f, 0x46d5,
-  0xc970, 0x2345,
-  0xc971, 0x46d6,
-  0xc977, 0x1f12,
-  0xc978, 0x46dc,
-  0xc980, 0x46e3,
-  0xc98f, 0x2018,
-  0xc990, 0x2335,
-  0xc991, 0x46f2,
-  0xc99c, 0x233c,
-  0xc99d, 0x46fd,
-  0xc9a1, 0x0cda,
-  0xca40, 0x4701,
-  0xca4e, 0x266f,
-  0xca4f, 0x470f,
-  0xca56, 0x2351,
-  0xca57, 0x4716,
-  0xca59, 0x1fa0,
-  0xca5a, 0x4718,
-  0xca5c, 0x2338,
-  0xca5d, 0x471a,
-  0xca61, 0x221b,
-  0xca62, 0x471e,
-  0xca6e, 0x2342,
-  0xca6f, 0x472a,
-  0xca72, 0x234f,
-  0xca73, 0x472d,
-  0xca77, 0x233d,
-  0xca78, 0x4731,
-  0xca7b, 0x2344,
-  0xca7c, 0x2331,
-  0xca7d, 0x4734,
-  0xca7e, 0x234b,
-  0xca80, 0x4735,
-  0xca81, 0x233b,
-  0xca82, 0x4736,
-  0xca89, 0x2350,
-  0xca8a, 0x473d,
-  0xca8e, 0x1eb4,
-  0xca8f, 0x21a6,
-  0xca90, 0x4741,
-  0xca92, 0x21cb,
-  0xca93, 0x4743,
-  0xca9a, 0x2355,
-  0xca9b, 0x474a,
-  0xcaa1, 0x0d38,
-  0xcb40, 0x4750,
-  0xcb43, 0x233e,
-  0xcb44, 0x4753,
-  0xcb45, 0x1f74,
-  0xcb46, 0x4754,
-  0xcb47, 0x2330,
-  0xcb48, 0x4755,
-  0xcb4b, 0x2680,
-  0xcb4c, 0x4758,
-  0xcb4e, 0x20da,
-  0xcb4f, 0x475a,
-  0xcb57, 0x234a,
-  0xcb58, 0x4762,
-  0xcb5d, 0x1f91,
-  0xcb5e, 0x4767,
-  0xcb5f, 0x2107,
-  0xcb60, 0x4768,
-  0xcb6a, 0x233f,
-  0xcb6b, 0x4772,
-  0xcb7b, 0x1ff4,
-  0xcb7c, 0x2343,
-  0xcb7d, 0x4782,
-  0xcb80, 0x4784,
-  0xcb87, 0x2212,
-  0xcb88, 0x478b,
-  0xcb8e, 0x2207,
-  0xcb8f, 0x4791,
-  0xcb92, 0x2359,
-  0xcb93, 0x4794,
-  0xcb9c, 0x2254,
-  0xcb9d, 0x479d,
-  0xcb9e, 0x2332,
-  0xcb9f, 0x479e,
-  0xcba1, 0x0d96,
-  0xcc40, 0x1e26,
-  0xcc41, 0x2357,
-  0xcc42, 0x47a0,
-  0xcc49, 0x2358,
-  0xcc4a, 0x2042,
-  0xcc4b, 0x2153,
-  0xcc4c, 0x47a7,
-  0xcc4f, 0x20bb,
-  0xcc50, 0x47aa,
-  0xcc5c, 0x235a,
-  0xcc5d, 0x47b6,
-  0xcc60, 0x2356,
-  0xcc61, 0x47b9,
-  0xcc64, 0x2337,
-  0xcc65, 0x47bc,
-  0xcc6d, 0x1ff9,
-  0xcc6e, 0x47c4,
-  0xcc79, 0x2353,
-  0xcc7a, 0x47cf,
-  0xcc7d, 0x2061,
-  0xcc7e, 0x47d2,
-  0xcc80, 0x47d3,
-  0xcc8e, 0x1e95,
-  0xcc8f, 0x47e1,
-  0xcc94, 0x2049,
-  0xcc95, 0x47e6,
-  0xcc96, 0x1f42,
-  0xcc97, 0x47e7,
-  0xcc9d, 0x1fe8,
-  0xcc9e, 0x47ed,
-  0xcca1, 0x0df4,
-  0xcd40, 0x47f0,
-  0xcd80, 0x482f,
-  0xcd90, 0x25da,
-  0xcd91, 0x483f,
-  0xcd98, 0x25d7,
-  0xcd99, 0x4846,
-  0xcda1, 0x0e52,
-  0xce40, 0x484e,
-  0xce67, 0x212e,
-  0xce68, 0x4875,
-  0xce72, 0x21b2,
-  0xce73, 0x487f,
-  0xce80, 0x488b,
-  0xce81, 0x219e,
-  0xce82, 0x488c,
-  0xce87, 0x25dc,
-  0xce88, 0x4891,
-  0xce9b, 0x206c,
-  0xce9c, 0x48a4,
-  0xce9e, 0x2226,
-  0xce9f, 0x48a6,
-  0xcea1, 0x0eb0,
-  0xcf40, 0x48a8,
-  0xcf4e, 0x25e0,
-  0xcf4f, 0x48b6,
-  0xcf55, 0x227b,
-  0xcf56, 0x48bc,
-  0xcf58, 0x25de,
-  0xcf59, 0x48be,
-  0xcf5c, 0x25e1,
-  0xcf5d, 0x48c1,
-  0xcf6c, 0x25d5,
-  0xcf6d, 0x48d0,
-  0xcf73, 0x1e6b,
-  0xcf74, 0x48d6,
-  0xcf75, 0x25db,
-  0xcf76, 0x48d7,
-  0xcf78, 0x1e89,
-  0xcf79, 0x48d9,
-  0xcf7c, 0x25d9,
-  0xcf7d, 0x48dc,
-  0xcf80, 0x48de,
-  0xcf81, 0x2211,
-  0xcf82, 0x48df,
-  0xcf89, 0x2229,
-  0xcf8a, 0x25d6,
-  0xcf8b, 0x48e6,
-  0xcf93, 0x25dd,
-  0xcf94, 0x25df,
-  0xcf95, 0x48ee,
-  0xcf9e, 0x1fef,
-  0xcf9f, 0x48f7,
-  0xcfa0, 0x25d8,
-  0xcfa1, 0x0f0e,
-  0xd040, 0x48f8,
-  0xd04d, 0x1f29,
-  0xd04e, 0x4905,
-  0xd051, 0x1e5b,
-  0xd052, 0x4908,
-  0xd055, 0x2076,
-  0xd056, 0x490b,
-  0xd05c, 0x2297,
-  0xd05d, 0x4911,
-  0xd060, 0x2690,
-  0xd061, 0x4914,
-  0xd067, 0x213f,
-  0xd068, 0x491a,
-  0xd06c, 0x2198,
-  0xd06d, 0x491e,
-  0xd06e, 0x1e88,
-  0xd06f, 0x491f,
-  0xd07d, 0x228c,
-  0xd07e, 0x492d,
-  0xd080, 0x492e,
-  0xd0a1, 0x0f6c,
-  0xd140, 0x494f,
-  0xd155, 0x25f1,
-  0xd156, 0x4964,
-  0xd159, 0x200c,
-  0xd15a, 0x4967,
-  0xd161, 0x1e58,
-  0xd162, 0x22ac,
-  0xd163, 0x496e,
-  0xd175, 0x26a7,
-  0xd176, 0x4980,
-  0xd17d, 0x2676,
-  0xd17e, 0x4987,
-  0xd180, 0x4988,
-  0xd19d, 0x1fe1,
-  0xd19e, 0x25bb,
-  0xd19f, 0x49a5,
-  0xd1a1, 0x0fca,
-  0xd240, 0x25be,
-  0xd241, 0x49a7,
-  0xd243, 0x22dd,
-  0xd244, 0x49a9,
-  0xd24d, 0x25bd,
-  0xd24e, 0x49b2,
-  0xd25c, 0x1e2a,
-  0xd25d, 0x49c0,
-  0xd263, 0x25bc,
-  0xd264, 0x25ba,
-  0xd265, 0x49c6,
-  0xd268, 0x25bf,
-  0xd269, 0x49c9,
-  0xd26d, 0x2187,
-  0xd26e, 0x49cd,
-  0xd26f, 0x266b,
-  0xd270, 0x49ce,
-  0xd272, 0x1e7f,
-  0xd273, 0x49d0,
-  0xd275, 0x21ad,
-  0xd276, 0x49d2,
-  0xd280, 0x49db,
-  0xd28a, 0x1f96,
-  0xd28b, 0x49e5,
-  0xd28e, 0x1f32,
-  0xd28f, 0x49e8,
-  0xd292, 0x2084,
-  0xd293, 0x49eb,
-  0xd295, 0x2136,
-  0xd296, 0x49ed,
-  0xd297, 0x24b8,
-  0xd298, 0x49ee,
-  0xd2a0, 0x24ba,
-  0xd2a1, 0x1028,
-  0xd340, 0x49f6,
-  0xd344, 0x24bc,
-  0xd345, 0x49fa,
-  0xd348, 0x20e4,
-  0xd349, 0x49fd,
-  0xd34a, 0x24b9,
-  0xd34b, 0x49fe,
-  0xd34d, 0x24bd,
-  0xd34e, 0x4a00,
-  0xd350, 0x24be,
-  0xd351, 0x4a02,
-  0xd355, 0x24bf,
-  0xd356, 0x4a06,
-  0xd358, 0x1fd2,
-  0xd359, 0x4a08,
-  0xd35b, 0x1ffd,
-  0xd35c, 0x4a0a,
-  0xd35d, 0x24bb,
-  0xd35e, 0x1f2d,
-  0xd35f, 0x4a0b,
-  0xd378, 0x2609,
-  0xd379, 0x4a24,
-  0xd37a, 0x260a,
-  0xd37b, 0x4a25,
-  0xd37c, 0x1e94,
-  0xd37d, 0x4a26,
-  0xd380, 0x4a28,
-  0xd385, 0x22df,
-  0xd386, 0x1ecb,
-  0xd387, 0x1f0d,
-  0xd388, 0x4a2d,
-  0xd38b, 0x1f77,
-  0xd38c, 0x4a30,
-  0xd38d, 0x21eb,
-  0xd38e, 0x4a31,
-  0xd38f, 0x22e1,
-  0xd390, 0x4a32,
-  0xd391, 0x216f,
-  0xd392, 0x4a33,
-  0xd393, 0x22e0,
-  0xd394, 0x4a34,
-  0xd396, 0x21ea,
-  0xd397, 0x4a36,
-  0xd398, 0x22e2,
-  0xd399, 0x20cb,
-  0xd39a, 0x4a37,
-  0xd39b, 0x1f78,
-  0xd39c, 0x4a38,
-  0xd39e, 0x1ee2,
-  0xd39f, 0x4a3a,
-  0xd3a0, 0x21f2,
-  0xd3a1, 0x1086,
-  0xd440, 0x4a3b,
-  0xd441, 0x2150,
-  0xd442, 0x4a3c,
-  0xd445, 0x1fd3,
-  0xd446, 0x4a3f,
-  0xd447, 0x22e5,
-  0xd448, 0x4a40,
-  0xd44c, 0x1ef2,
-  0xd44d, 0x4a44,
-  0xd44f, 0x211f,
-  0xd450, 0x4a46,
-  0xd453, 0x21dd,
-  0xd454, 0x4a49,
-  0xd456, 0x2154,
-  0xd457, 0x4a4b,
-  0xd458, 0x22e7,
-  0xd459, 0x4a4c,
-  0xd45c, 0x2282,
-  0xd45d, 0x4a4f,
-  0xd462, 0x22e6,
-  0xd463, 0x4a54,
-  0xd467, 0x22e8,
-  0xd468, 0x4a58,
-  0xd46e, 0x22e4,
-  0xd46f, 0x4a5e,
-  0xd470, 0x226a,
-  0xd471, 0x4a5f,
-  0xd472, 0x22eb,
-  0xd473, 0x4a60,
-  0xd474, 0x22e9,
-  0xd475, 0x20bd,
-  0xd476, 0x4a61,
-  0xd478, 0x22ea,
-  0xd479, 0x4a63,
-  0xd47b, 0x22bd,
-  0xd47c, 0x4a65,
-  0xd47e, 0x1e9e,
-  0xd480, 0x4a67,
-  0xd482, 0x22f6,
-  0xd483, 0x21e7,
-  0xd484, 0x2216,
-  0xd485, 0x4a69,
-  0xd487, 0x2137,
-  0xd488, 0x4a6b,
-  0xd48a, 0x212c,
-  0xd48b, 0x4a6d,
-  0xd48c, 0x1e68,
-  0xd48d, 0x22f2,
-  0xd48e, 0x1f37,
-  0xd48f, 0x22f3,
-  0xd490, 0x4a6e,
-  0xd491, 0x22ef,
-  0xd492, 0x1f50,
-  0xd493, 0x1f10,
-  0xd494, 0x21c8,
-  0xd495, 0x4a6f,
-  0xd496, 0x22f1,
-  0xd497, 0x4a70,
-  0xd49c, 0x22f0,
-  0xd49d, 0x4a75,
-  0xd49f, 0x22ee,
-  0xd4a0, 0x4a77,
-  0xd4a1, 0x10e4,
-  0xd540, 0x4a78,
-  0xd543, 0x22ed,
-  0xd544, 0x229e,
-  0xd545, 0x22ec,
-  0xd546, 0x1fe2,
-  0xd547, 0x4a7b,
-  0xd54a, 0x20fe,
-  0xd54b, 0x4a7e,
-  0xd54e, 0x22f9,
-  0xd550, 0x4a81,
-  0xd551, 0x1eaf,
-  0xd552, 0x4a82,
-  0xd554, 0x2236,
-  0xd555, 0x4a84,
-  0xd556, 0x22f7,
-  0xd557, 0x4a85,
-  0xd55a, 0x223d,
-  0xd55b, 0x4a88,
-  0xd55c, 0x1e82,
-  0xd55d, 0x1fb6,
-  0xd55e, 0x4a89,
-  0xd55f, 0x21a4,
-  0xd560, 0x21aa,
-  0xd561, 0x22f8,
-  0xd562, 0x2151,
-  0xd563, 0x4a8a,
-  0xd564, 0x1f60,
-  0xd565, 0x4a8b,
-  0xd568, 0x2147,
-  0xd569, 0x4a8e,
-  0xd56c, 0x2145,
-  0xd56d, 0x4a91,
-  0xd56e, 0x1fdc,
-  0xd56f, 0x4a92,
-  0xd572, 0x2301,
-  0xd573, 0x4a95,
-  0xd575, 0x1ef5,
-  0xd576, 0x4a97,
-  0xd578, 0x2218,
-  0xd579, 0x4a99,
-  0xd57b, 0x1ec6,
-  0xd57c, 0x4a9b,
-  0xd57e, 0x2300,
-  0xd580, 0x4a9d,
-  0xd581, 0x22b4,
-  0xd582, 0x4a9e,
-  0xd584, 0x2169,
-  0xd585, 0x4aa0,
-  0xd586, 0x22fd,
-  0xd587, 0x4aa1,
-  0xd588, 0x20ea,
-  0xd589, 0x4aa2,
-  0xd58a, 0x22f4,
-  0xd58b, 0x4aa3,
-  0xd58c, 0x22fb,
-  0xd58d, 0x4aa4,
-  0xd58e, 0x22fc,
-  0xd58f, 0x2027,
-  0xd590, 0x4aa5,
-  0xd593, 0x2060,
-  0xd594, 0x22ff,
-  0xd595, 0x4aa8,
-  0xd598, 0x22fe,
-  0xd599, 0x1ec7,
-  0xd59a, 0x4aab,
-  0xd59b, 0x230c,
-  0xd59c, 0x4aac,
-  0xd59f, 0x22f5,
-  0xd5a0, 0x4aaf,
-  0xd5a1, 0x1142,
-  0xd640, 0x2306,
-  0xd641, 0x4ab0,
-  0xd642, 0x230a,
-  0xd643, 0x21d3,
-  0xd644, 0x4ab1,
-  0xd647, 0x2303,
-  0xd648, 0x4ab4,
-  0xd649, 0x2307,
-  0xd64a, 0x230b,
-  0xd64b, 0x4ab5,
-  0xd64d, 0x1f5f,
-  0xd64e, 0x4ab7,
-  0xd64f, 0x2309,
-  0xd650, 0x4ab8,
-  0xd652, 0x2302,
-  0xd653, 0x1f04,
-  0xd654, 0x229d,
-  0xd655, 0x4aba,
-  0xd656, 0x21fb,
-  0xd657, 0x4abb,
-  0xd658, 0x2308,
-  0xd659, 0x4abc,
-  0xd65a, 0x20ac,
-  0xd65b, 0x4abd,
-  0xd65c, 0x208e,
-  0xd65d, 0x2305,
-  0xd65e, 0x2197,
-  0xd65f, 0x4abe,
-  0xd660, 0x2171,
-  0xd661, 0x2298,
-  0xd662, 0x4abf,
-  0xd665, 0x1f57,
-  0xd666, 0x4ac2,
-  0xd669, 0x2082,
-  0xd66a, 0x4ac5,
-  0xd66b, 0x2311,
-  0xd66c, 0x4ac6,
-  0xd66f, 0x2304,
-  0xd670, 0x4ac9,
-  0xd671, 0x230f,
-  0xd672, 0x1e35,
-  0xd673, 0x4aca,
-  0xd674, 0x20d1,
-  0xd675, 0x2310,
-  0xd676, 0x1fa3,
-  0xd677, 0x4acb,
-  0xd678, 0x21d6,
-  0xd679, 0x4acc,
-  0xd67c, 0x2206,
-  0xd67d, 0x4acf,
-  0xd680, 0x4ad1,
-  0xd683, 0x230d,
-  0xd684, 0x4ad4,
-  0xd686, 0x2312,
-  0xd687, 0x208d,
-  0xd688, 0x2313,
-  0xd689, 0x4ad6,
-  0xd68e, 0x22e3,
-  0xd68f, 0x4adb,
-  0xd694, 0x1fba,
-  0xd695, 0x4ae0,
-  0xd699, 0x2078,
-  0xd69a, 0x4ae4,
-  0xd6a1, 0x11a0,
-  0xd740, 0x4aeb,
-  0xd743, 0x2288,
-  0xd744, 0x4aee,
-  0xd748, 0x2316,
-  0xd749, 0x1f6b,
-  0xd74a, 0x4af2,
-  0xd750, 0x2314,
-  0xd751, 0x4af8,
-  0xd752, 0x2130,
-  0xd753, 0x2315,
-  0xd754, 0x2168,
-  0xd755, 0x4af9,
-  0xd756, 0x20c4,
-  0xd757, 0x4afa,
-  0xd764, 0x2318,
-  0xd765, 0x4b07,
-  0xd767, 0x2219,
-  0xd768, 0x2217,
-  0xd769, 0x4b09,
-  0xd76c, 0x20d5,
-  0xd76d, 0x4b0c,
-  0xd76f, 0x1f4a,
-  0xd770, 0x4b0e,
-  0xd775, 0x2240,
-  0xd776, 0x4b13,
-  0xd778, 0x1ed3,
-  0xd779, 0x4b15,
-  0xd780, 0x4b1b,
-  0xd783, 0x1e49,
-  0xd784, 0x4b1e,
-  0xd787, 0x261b,
-  0xd788, 0x4b21,
-  0xd78b, 0x1e6d,
-  0xd78c, 0x20f8,
-  0xd78d, 0x4b24,
-  0xd78e, 0x1ffb,
-  0xd78f, 0x2319,
-  0xd790, 0x4b25,
-  0xd795, 0x230e,
-  0xd796, 0x4b2a,
-  0xd797, 0x2317,
-  0xd798, 0x4b2b,
-  0xd7a1, 0x11fe,
-  0xd840, 0x4b34,
-  0xd84d, 0x20c8,
-  0xd84e, 0x4b41,
-  0xd853, 0x1efd,
-  0xd854, 0x4b46,
-  0xd880, 0x4b71,
-  0xd890, 0x1e3b,
-  0xd891, 0x227f,
-  0xd892, 0x4b81,
-  0xd893, 0x1f0c,
-  0xd894, 0x1e59,
-  0xd895, 0x1f24,
-  0xd896, 0x4b82,
-  0xd89a, 0x20ba,
-  0xd89b, 0x1f65,
-  0xd89c, 0x1ef0,
-  0xd89d, 0x2164,
-  0xd89e, 0x1f30,
-  0xd89f, 0x2261,
-  0xd8a0, 0x4b86,
-  0xd8a1, 0x1257,
-  0xd940, 0x4b87,
-  0xd941, 0x22a2,
-  0xd942, 0x24ab,
-  0xd943, 0x4b88,
-  0xd944, 0x24af,
-  0xd945, 0x1ee8,
-  0xd946, 0x1f39,
-  0xd947, 0x4b89,
-  0xd948, 0x1e48,
-  0xd949, 0x2070,
-  0xd94a, 0x1ea8,
-  0xd94b, 0x4b8a,
-  0xd94c, 0x24ac,
-  0xd94d, 0x1ef7,
-  0xd94e, 0x2176,
-  0xd94f, 0x24ad,
-  0xd950, 0x4b8b,
-  0xd951, 0x207b,
-  0xd952, 0x1f45,
-  0xd953, 0x24aa,
-  0xd954, 0x204b,
-  0xd955, 0x202f,
-  0xd956, 0x1f5a,
-  0xd957, 0x24b0,
-  0xd958, 0x4b8c,
-  0xd959, 0x22b7,
-  0xd95a, 0x1f7f,
-  0xd95b, 0x4b8d,
-  0xd95c, 0x2265,
-  0xd95d, 0x4b8e,
-  0xd963, 0x24b2,
-  0xd964, 0x211b,
-  0xd965, 0x1e51,
-  0xd966, 0x4b94,
-  0xd967, 0x24b4,
-  0xd968, 0x4b95,
-  0xd96c, 0x24b3,
-  0xd96d, 0x4b99,
-  0xd96e, 0x1e9f,
-  0xd96f, 0x4b9a,
-  0xd970, 0x2118,
-  0xd971, 0x4b9b,
-  0xd972, 0x20b4,
-  0xd973, 0x23af,
-  0xd974, 0x21bb,
-  0xd975, 0x2072,
-  0xd976, 0x1f95,
-  0xd977, 0x4b9c,
-  0xd978, 0x1f0a,
-  0xd979, 0x24b6,
-  0xd97a, 0x4b9d,
-  0xd97c, 0x2291,
-  0xd97d, 0x24b5,
-  0xd97e, 0x2278,
-  0xd980, 0x1ed4,
-  0xd981, 0x4b9f,
-  0xd987, 0x1ff3,
-  0xd988, 0x4ba5,
-  0xd98d, 0x22a9,
-  0xd98e, 0x24b7,
-  0xd98f, 0x1f28,
-  0xd990, 0x2109,
-  0xd991, 0x22c7,
-  0xd992, 0x4baa,
-  0xd997, 0x24ae,
-  0xd998, 0x22b1,
-  0xd999, 0x4baf,
-  0xd99b, 0x2266,
-  0xd99c, 0x4bb1,
-  0xd99d, 0x225b,
-  0xd99e, 0x22c4,
-  0xd99f, 0x4bb2,
-  0xd9a0, 0x2115,
-  0xd9a1, 0x12b5,
-  0xda40, 0x4bb3,
-  0xda41, 0x222a,
-  0xda42, 0x24b1,
-  0xda43, 0x4bb4,
-  0xda48, 0x213d,
-  0xda49, 0x4bb9,
-  0xda4d, 0x1f15,
-  0xda4e, 0x225c,
-  0xda4f, 0x4bbd,
-  0xda73, 0x1f14,
-  0xda74, 0x4be1,
-  0xda77, 0x227a,
-  0xda78, 0x4be4,
-  0xda80, 0x4beb,
-  0xda85, 0x20ee,
-  0xda86, 0x4bf0,
-  0xda8e, 0x25f8,
-  0xda8f, 0x4bf8,
-  0xdaa1, 0x1313,
-  0xdb40, 0x4c0a,
-  0xdb60, 0x1f94,
-  0xdb61, 0x4c2a,
-  0xdb78, 0x2230,
-  0xdb79, 0x4c41,
-  0xdb80, 0x4c47,
-  0xdb84, 0x25fd,
-  0xdb85, 0x4c4b,
-  0xdb8b, 0x2600,
-  0xdb8c, 0x4c51,
-  0xdb98, 0x2606,
-  0xdb99, 0x4c5d,
-  0xdba1, 0x1371,
-  0xdc40, 0x4c65,
-  0xdc45, 0x25ff,
-  0xdc46, 0x4c6a,
-  0xdc4f, 0x25fc,
-  0xdc50, 0x1e8c,
-  0xdc51, 0x2602,
-  0xdc52, 0x4c73,
-  0xdc53, 0x224d,
-  0xdc54, 0x4c74,
-  0xdc55, 0x2604,
-  0xdc56, 0x25fe,
-  0xdc57, 0x2603,
-  0xdc58, 0x4c75,
-  0xdc5d, 0x2601,
-  0xdc5e, 0x4c7a,
-  0xdc62, 0x2605,
-  0xdc63, 0x4c7e,
-  0xdc66, 0x1ea3,
-  0xdc67, 0x2608,
-  0xdc68, 0x4c81,
-  0xdc6b, 0x2607,
-  0xdc6c, 0x4c84,
-  0xdc7c, 0x20f0,
-  0xdc7d, 0x4c94,
-  0xdc80, 0x4c96,
-  0xdc87, 0x1e7b,
-  0xdc88, 0x2267,
-  0xdc89, 0x1f36,
-  0xdc8a, 0x1fd6,
-  0xdc8b, 0x4c9d,
-  0xdc8e, 0x21e0,
-  0xdc8f, 0x4ca0,
-  0xdc90, 0x248c,
-  0xdc91, 0x4ca1,
-  0xdc97, 0x248d,
-  0xdc98, 0x4ca7,
-  0xdc9b, 0x2102,
-  0xdc9c, 0x4caa,
-  0xdca0, 0x2494,
-  0xdca1, 0x13cf,
-  0xdd40, 0x4cae,
-  0xdd46, 0x2493,
-  0xdd47, 0x4cb4,
-  0xdd4d, 0x248e,
-  0xdd4e, 0x4cba,
-  0xdd53, 0x2299,
-  0xdd54, 0x2491,
-  0xdd55, 0x2496,
-  0xdd56, 0x248f,
-  0xdd57, 0x2492,
-  0xdd58, 0x4cbf,
-  0xdd59, 0x2497,
-  0xdd5a, 0x4cc0,
-  0xdd5e, 0x1fb1,
-  0xdd5f, 0x4cc4,
-  0xdd60, 0x249a,
-  0xdd61, 0x4cc5,
-  0xdd62, 0x2499,
-  0xdd63, 0x4cc6,
-  0xdd64, 0x2258,
-  0xdd65, 0x2498,
-  0xdd66, 0x4cc7,
-  0xdd6d, 0x249b,
-  0xdd6e, 0x4cce,
-  0xdd6f, 0x1f09,
-  0xdd70, 0x20e6,
-  0xdd71, 0x4ccf,
-  0xdd76, 0x2026,
-  0xdd77, 0x249f,
-  0xdd78, 0x1f59,
-  0xdd79, 0x249d,
-  0xdd7b, 0x4cd4,
-  0xdd80, 0x4cd8,
-  0xdd81, 0x1f3b,
-  0xdd82, 0x249c,
-  0xdd83, 0x4cd9,
-  0xdd85, 0x1e3a,
-  0xdd86, 0x205b,
-  0xdd87, 0x4cdb,
-  0xdd8b, 0x1f70,
-  0xdd8c, 0x4cdf,
-  0xdd8f, 0x24a0,
-  0xdd90, 0x4ce2,
-  0xdd94, 0x213b,
-  0xdd95, 0x4ce6,
-  0xdd97, 0x1f07,
-  0xdd98, 0x4ce8,
-  0xdd9a, 0x2270,
-  0xdd9b, 0x2237,
-  0xdd9c, 0x4cea,
-  0xdd9e, 0x24d2,
-  0xdd9f, 0x4cec,
-  0xdda0, 0x21b3,
-  0xdda1, 0x142d,
-  0xde40, 0x2245,
-  0xde41, 0x24a1,
-  0xde42, 0x4ced,
-  0xde44, 0x22a8,
-  0xde45, 0x4cef,
-  0xde48, 0x227c,
-  0xde49, 0x1fb0,
-  0xde4a, 0x4cf2,
-  0xde4f, 0x24a2,
-  0xde50, 0x4cf7,
-  0xde5a, 0x1f46,
-  0xde5b, 0x4d01,
-  0xde5c, 0x2380,
-  0xde5d, 0x2495,
-  0xde5e, 0x4d02,
-  0xde5f, 0x2490,
-  0xde60, 0x4d03,
-  0xde6b, 0x1e30,
-  0xde6c, 0x4d0e,
-  0xde6f, 0x1e9d,
-  0xde70, 0x1e4b,
-  0xde71, 0x1e4a,
-  0xde72, 0x20aa,
-  0xde73, 0x4d11,
-  0xde80, 0x4d1d,
-  0xde92, 0x267b,
-  0xde93, 0x4d2f,
-  0xde9f, 0x23f2,
-  0xdea0, 0x4d3b,
-  0xdea1, 0x148b,
-  0xdf40, 0x227e,
-  0xdf41, 0x4d3c,
-  0xdf42, 0x2019,
-  0xdf43, 0x4d3d,
-  0xdf4d, 0x1fbb,
-  0xdf4e, 0x4d47,
-  0xdf5c, 0x2253,
-  0xdf5d, 0x4d55,
-  0xdf5e, 0x1f3e,
-  0xdf5f, 0x1ea6,
-  0xdf60, 0x218e,
-  0xdf61, 0x4d56,
-  0xdf64, 0x21ec,
-  0xdf65, 0x4d59,
-  0xdf66, 0x1ebe,
-  0xdf67, 0x4d5a,
-  0xdf68, 0x224a,
-  0xdf69, 0x4d5b,
-  0xdf6d, 0x2133,
-  0xdf6e, 0x4d5f,
-  0xdf74, 0x1e84,
-  0xdf75, 0x4d65,
-  0xdf77, 0x20cf,
-  0xdf78, 0x21e2,
-  0xdf79, 0x4d67,
-  0xdf7a, 0x220f,
-  0xdf7b, 0x4d68,
-  0xdf7c, 0x2029,
-  0xdf7d, 0x4d69,
-  0xdf7e, 0x2073,
-  0xdf80, 0x1f55,
-  0xdf81, 0x4d6a,
-  0xdf83, 0x23f1,
-  0xdf84, 0x4d6c,
-  0xdf85, 0x1e46,
-  0xdf86, 0x4d6d,
-  0xdf89, 0x2063,
-  0xdf8a, 0x23f3,
-  0xdf8b, 0x4d70,
-  0xdfa1, 0x14e9,
-  0xe040, 0x4d86,
-  0xe050, 0x231e,
-  0xe051, 0x4d96,
-  0xe05d, 0x2233,
-  0xe05e, 0x4da2,
-  0xe069, 0x2320,
-  0xe06a, 0x4dad,
-  0xe06c, 0x21c7,
-  0xe06d, 0x4daf,
-  0xe075, 0x22bc,
-  0xe076, 0x4db7,
-  0xe077, 0x231c,
-  0xe078, 0x4db8,
-  0xe079, 0x2251,
-  0xe07a, 0x4db9,
-  0xe080, 0x4dbe,
-  0xe087, 0x1ebb,
-  0xe088, 0x4dc5,
-  0xe08d, 0x2287,
-  0xe08e, 0x4dca,
-  0xe08f, 0x202d,
-  0xe090, 0x1eab,
-  0xe091, 0x4dcb,
-  0xe092, 0x231d,
-  0xe093, 0x4dcc,
-  0xe094, 0x231f,
-  0xe095, 0x4dcd,
-  0xe097, 0x231b,
-  0xe098, 0x4dcf,
-  0xe0a1, 0x1547,
-  0xe140, 0x4dd8,
-  0xe142, 0x2321,
-  0xe143, 0x4dda,
-  0xe164, 0x2255,
-  0xe165, 0x4dfb,
-  0xe168, 0x1e8f,
-  0xe169, 0x4dfe,
-  0xe174, 0x220c,
-  0xe175, 0x1fa4,
-  0xe176, 0x4e09,
-  0xe180, 0x4e12,
-  0xe184, 0x209b,
-  0xe185, 0x21d8,
-  0xe186, 0x4e16,
-  0xe187, 0x25fa,
-  0xe188, 0x4e17,
-  0xe189, 0x25f9,
-  0xe18a, 0x4e18,
-  0xe18c, 0x2134,
-  0xe18d, 0x4e1a,
-  0xe18e, 0x24f3,
-  0xe191, 0x24f8,
-  0xe192, 0x4e1b,
-  0xe193, 0x24f7,
-  0xe194, 0x1ec8,
-  0xe195, 0x24f6,
-  0xe196, 0x4e1c,
-  0xe198, 0x2280,
-  0xe199, 0x4e1e,
-  0xe19e, 0x1ec5,
-  0xe19f, 0x24fb,
-  0xe1a0, 0x4e23,
-  0xe1a1, 0x15a5,
-  0xe240, 0x4e24,
-  0xe241, 0x24fa,
-  0xe242, 0x4e25,
-  0xe243, 0x1eed,
-  0xe244, 0x4e26,
-  0xe24f, 0x24fd,
-  0xe250, 0x4e31,
-  0xe251, 0x24f9,
-  0xe252, 0x4e32,
-  0xe253, 0x24fe,
-  0xe254, 0x20cd,
-  0xe255, 0x4e33,
-  0xe25a, 0x2508,
-  0xe25b, 0x2504,
-  0xe25c, 0x4e38,
-  0xe25e, 0x2506,
-  0xe25f, 0x4e3a,
-  0xe262, 0x24ff,
-  0xe263, 0x2090,
-  0xe264, 0x4e3d,
-  0xe267, 0x1edd,
-  0xe268, 0x1f25,
-  0xe269, 0x4e40,
-  0xe26a, 0x2503,
-  0xe26b, 0x2502,
-  0xe26c, 0x4e41,
-  0xe26e, 0x1e7a,
-  0xe26f, 0x20a6,
-  0xe270, 0x4e43,
-  0xe278, 0x1fd5,
-  0xe279, 0x4e4b,
-  0xe27d, 0x1f11,
-  0xe27e, 0x4e4f,
-  0xe280, 0x2507,
-  0xe281, 0x2500,
-  0xe282, 0x2505,
-  0xe283, 0x4e50,
-  0xe289, 0x2519,
-  0xe28a, 0x4e56,
-  0xe28b, 0x2515,
-  0xe28c, 0x4e57,
-  0xe28e, 0x250c,
-  0xe28f, 0x2031,
-  0xe290, 0x4e59,
-  0xe292, 0x250b,
-  0xe293, 0x250f,
-  0xe294, 0x251a,
-  0xe295, 0x2509,
-  0xe296, 0x4e5b,
-  0xe298, 0x250e,
-  0xe299, 0x2234,
-  0xe29a, 0x2513,
-  0xe29b, 0x1f80,
-  0xe29c, 0x4e5d,
-  0xe2a0, 0x2501,
-  0xe2a1, 0x1603,
-  0xe340, 0x4e61,
-  0xe342, 0x2517,
-  0xe343, 0x2516,
-  0xe344, 0x4e63,
-  0xe347, 0x2518,
-  0xe348, 0x4e66,
-  0xe34b, 0x1e56,
-  0xe34c, 0x4e69,
-  0xe34f, 0x250d,
-  0xe350, 0x4e6c,
-  0xe351, 0x20d3,
-  0xe352, 0x4e6d,
-  0xe354, 0x207a,
-  0xe355, 0x20ce,
-  0xe356, 0x4e6f,
-  0xe358, 0x2510,
-  0xe359, 0x4e71,
-  0xe35c, 0x1e55,
-  0xe35d, 0x4e74,
-  0xe360, 0x250a,
-  0xe361, 0x4e77,
-  0xe366, 0x2511,
-  0xe368, 0x4e7c,
-  0xe371, 0x1faa,
-  0xe372, 0x4e85,
-  0xe373, 0x251e,
-  0xe374, 0x1f1f,
-  0xe375, 0x4e86,
-  0xe378, 0x252d,
-  0xe379, 0x221d,
-  0xe37a, 0x4e89,
-  0xe37c, 0x2532,
-  0xe37d, 0x4e8b,
-  0xe37e, 0x217b,
-  0xe380, 0x4e8c,
-  0xe38a, 0x21af,
-  0xe38b, 0x4e96,
-  0xe38c, 0x252c,
-  0xe38d, 0x4e97,
-  0xe38f, 0x2528,
-  0xe390, 0x4e99,
-  0xe391, 0x208c,
-  0xe392, 0x4e9a,
-  0xe393, 0x252f,
-  0xe394, 0x4e9b,
-  0xe395, 0x21bc,
-  0xe396, 0x4e9c,
-  0xe399, 0x251d,
-  0xe39a, 0x4e9f,
-  0xe39c, 0x2535,
-  0xe39d, 0x4ea1,
-  0xe39e, 0x220d,
-  0xe39f, 0x2526,
-  0xe3a0, 0x4ea2,
-  0xe3a1, 0x1661,
-  0xe440, 0x2534,
-  0xe441, 0x252a,
-  0xe442, 0x251f,
-  0xe443, 0x2531,
-  0xe444, 0x251c,
-  0xe445, 0x4ea3,
-  0xe448, 0x2525,
-  0xe449, 0x4ea6,
-  0xe44e, 0x21cd,
-  0xe44f, 0x4eab,
-  0xe450, 0x21da,
-  0xe451, 0x4eac,
-  0xe452, 0x2172,
-  0xe453, 0x253e,
-  0xe454, 0x4ead,
-  0xe458, 0x204f,
-  0xe459, 0x4eb1,
-  0xe45a, 0x2543,
-  0xe45b, 0x4eb2,
-  0xe45c, 0x21d7,
-  0xe45d, 0x4eb3,
-  0xe45e, 0x1e3c,
-  0xe45f, 0x4eb4,
-  0xe462, 0x2529,
-  0xe463, 0x4eb7,
-  0xe465, 0x2521,
-  0xe466, 0x4eb9,
-  0xe468, 0x1eff,
-  0xe469, 0x4ebb,
-  0xe473, 0x253f,
-  0xe474, 0x4ec5,
-  0xe475, 0x2544,
-  0xe476, 0x4ec6,
-  0xe479, 0x2523,
-  0xe47a, 0x1e90,
-  0xe47b, 0x253a,
-  0xe47c, 0x2545,
-  0xe47d, 0x4ec9,
-  0xe47e, 0x253d,
-  0xe480, 0x4eca,
-  0xe481, 0x20c1,
-  0xe482, 0x4ecb,
-  0xe484, 0x2103,
-  0xe485, 0x2520,
-  0xe486, 0x253c,
-  0xe487, 0x253b,
-  0xe488, 0x2538,
-  0xe489, 0x4ecd,
-  0xe48d, 0x2540,
-  0xe48e, 0x4ed1,
-  0xe48f, 0x1fcd,
-  0xe490, 0x4ed2,
-  0xe493, 0x1f18,
-  0xe494, 0x4ed5,
-  0xe498, 0x254b,
-  0xe499, 0x4ed9,
-  0xe49d, 0x2547,
-  0xe49e, 0x254f,
-  0xe4a0, 0x4edd,
-  0xe4a1, 0x16bf,
-  0xe540, 0x4ede,
-  0xe546, 0x22b0,
-  0xe547, 0x4ee4,
-  0xe548, 0x2546,
-  0xe549, 0x4ee5,
-  0xe54b, 0x254c,
-  0xe54c, 0x4ee7,
-  0xe54e, 0x1e9a,
-  0xe54f, 0x2552,
-  0xe550, 0x2530,
-  0xe551, 0x2549,
-  0xe552, 0x4ee9,
-  0xe555, 0x2551,
-  0xe556, 0x1eca,
-  0xe557, 0x4eec,
-  0xe558, 0x20d2,
-  0xe559, 0x4eed,
-  0xe55c, 0x1fb8,
-  0xe55d, 0x4ef0,
-  0xe55e, 0x2079,
-  0xe55f, 0x4ef1,
-  0xe561, 0x21ab,
-  0xe562, 0x4ef3,
-  0xe564, 0x254d,
-  0xe565, 0x1ea5,
-  0xe566, 0x4ef5,
-  0xe568, 0x204c,
-  0xe569, 0x2080,
-  0xe56a, 0x4ef7,
-  0xe56c, 0x266d,
-  0xe56d, 0x4ef9,
-  0xe56e, 0x2537,
-  0xe56f, 0x4efa,
-  0xe575, 0x254a,
-  0xe576, 0x21b8,
-  0xe577, 0x4f00,
-  0xe578, 0x254e,
-  0xe579, 0x4f01,
-  0xe57b, 0x24fc,
-  0xe57c, 0x2554,
-  0xe57d, 0x4f03,
-  0xe580, 0x4f05,
-  0xe581, 0x1f3c,
-  0xe582, 0x4f06,
-  0xe583, 0x1ed5,
-  0xe584, 0x4f07,
-  0xe58a, 0x2556,
-  0xe58b, 0x4f0d,
-  0xe58e, 0x2268,
-  0xe58f, 0x4f10,
-  0xe591, 0x1ed6,
-  0xe592, 0x4f12,
-  0xe59a, 0x2557,
-  0xe59b, 0x2553,
-  0xe59c, 0x4f1a,
-  0xe59f, 0x2548,
-  0xe5a0, 0x4f1d,
-  0xe5a1, 0x171d,
-  0xe640, 0x20dc,
-  0xe641, 0x4f1e,
-  0xe644, 0x2559,
-  0xe645, 0x4f21,
-  0xe649, 0x1f97,
-  0xe64a, 0x2555,
-  0xe64b, 0x4f25,
-  0xe64e, 0x227d,
-  0xe64f, 0x4f28,
-  0xe652, 0x257e,
-  0xe653, 0x4f2b,
-  0xe656, 0x207c,
-  0xe657, 0x4f2e,
-  0xe658, 0x255a,
-  0xe659, 0x4f2f,
-  0xe65b, 0x255e,
-  0xe65c, 0x4f31,
-  0xe65e, 0x1e34,
-  0xe65f, 0x4f33,
-  0xe669, 0x215e,
-  0xe66a, 0x4f3d,
-  0xe66b, 0x2560,
-  0xe66c, 0x4f3e,
-  0xe675, 0x21a2,
-  0xe676, 0x2354,
-  0xe677, 0x4f47,
-  0xe679, 0x2563,
-  0xe67a, 0x2527,
-  0xe67b, 0x4f49,
-  0xe67c, 0x252e,
-  0xe67d, 0x2558,
-  0xe67e, 0x4f4a,
-  0xe680, 0x1f1b,
-  0xe681, 0x4f4b,
-  0xe682, 0x2283,
-  0xe683, 0x4f4c,
-  0xe684, 0x2564,
-  0xe685, 0x4f4d,
-  0xe687, 0x20a0,
-  0xe688, 0x4f4f,
-  0xe689, 0x2565,
-  0xe68a, 0x4f50,
-  0xe68c, 0x2561,
-  0xe68d, 0x4f52,
-  0xe693, 0x2562,
-  0xe694, 0x4f58,
-  0xe697, 0x256c,
-  0xe698, 0x4f5b,
-  0xe69b, 0x256d,
-  0xe69c, 0x2020,
-  0xe69d, 0x4f5e,
-  0xe69f, 0x255f,
-  0xe6a0, 0x256a,
-  0xe6a1, 0x177b,
-  0xe740, 0x4f60,
-  0xe743, 0x256e,
-  0xe744, 0x4f63,
-  0xe748, 0x2539,
-  0xe749, 0x255c,
-  0xe74a, 0x4f67,
-  0xe74d, 0x2568,
-  0xe74f, 0x256b,
-  0xe750, 0x1e6f,
-  0xe751, 0x4f6a,
-  0xe752, 0x1fc4,
-  0xe753, 0x2567,
-  0xe754, 0x4f6b,
-  0xe755, 0x255b,
-  0xe756, 0x4f6c,
-  0xe759, 0x261d,
-  0xe75a, 0x4f6f,
-  0xe766, 0x252b,
-  0xe767, 0x4f7b,
-  0xe768, 0x2571,
-  0xe769, 0x4f7c,
-  0xe76a, 0x2577,
-  0xe76b, 0x4f7d,
-  0xe774, 0x2522,
-  0xe775, 0x4f86,
-  0xe77c, 0x2533,
-  0xe77d, 0x4f8d,
-  0xe780, 0x4f8f,
-  0xe782, 0x202a,
-  0xe783, 0x4f91,
-  0xe784, 0x2536,
-  0xe785, 0x2573,
-  0xe786, 0x256f,
-  0xe787, 0x4f92,
-  0xe78a, 0x2293,
-  0xe78b, 0x2578,
-  0xe78c, 0x4f95,
-  0xe78f, 0x2570,
-  0xe790, 0x4f98,
-  0xe792, 0x2575,
-  0xe793, 0x4f9a,
-  0xe798, 0x2541,
-  0xe79a, 0x255d,
-  0xe79b, 0x4f9f,
-  0xe7a0, 0x201a,
-  0xe7a1, 0x17d9,
-  0xe840, 0x4fa4,
-  0xe843, 0x257a,
-  0xe844, 0x2006,
-  0xe845, 0x4fa7,
-  0xe846, 0x2177,
-  0xe847, 0x4fa8,
-  0xe849, 0x251b,
-  0xe84a, 0x4faa,
-  0xe84b, 0x2524,
-  0xe84c, 0x4fab,
-  0xe84f, 0x257b,
-  0xe850, 0x4fae,
-  0xe854, 0x22a3,
-  0xe855, 0x4fb2,
-  0xe85a, 0x2579,
-  0xe85b, 0x4fb7,
-  0xe85c, 0x2566,
-  0xe85d, 0x4fb8,
-  0xe862, 0x1f93,
-  0xe863, 0x4fbd,
-  0xe864, 0x257c,
-  0xe865, 0x4fbe,
-  0xe870, 0x2514,
-  0xe871, 0x4fc9,
-  0xe873, 0x257d,
-  0xe874, 0x4fcb,
-  0xe875, 0x2572,
-  0xe876, 0x4fcc,
-  0xe87c, 0x2574,
-  0xe87d, 0x4fd2,
-  0xe880, 0x224e,
-  0xe881, 0x4fd4,
-  0xe882, 0x21c6,
-  0xe883, 0x4fd5,
-  0xe887, 0x209f,
-  0xe888, 0x4fd9,
-  0xe889, 0x2576,
-  0xe88a, 0x4fda,
-  0xe88c, 0x2064,
-  0xe88d, 0x22bf,
-  0xe88e, 0x261c,
-  0xe88f, 0x225e,
-  0xe890, 0x4fdc,
-  0xe8a1, 0x1837,
-  0xe940, 0x4fed,
-  0xe94c, 0x1e75,
-  0xe94d, 0x4ff9,
-  0xe954, 0x207d,
-  0xe955, 0x5000,
-  0xe956, 0x23bf,
-  0xe957, 0x2113,
-  0xe958, 0x5001,
-  0xe95a, 0x23c0,
-  0xe95b, 0x5003,
-  0xe95d, 0x1e45,
-  0xe95e, 0x5005,
-  0xe95f, 0x1fd8,
-  0xe960, 0x23c4,
-  0xe961, 0x5006,
-  0xe962, 0x23c2,
-  0xe963, 0x2104,
-  0xe964, 0x5007,
-  0xe965, 0x21bd,
-  0xe966, 0x5008,
-  0xe967, 0x1f87,
-  0xe968, 0x23c3,
-  0xe969, 0x5009,
-  0xe96c, 0x2269,
-  0xe96d, 0x500c,
-  0xe975, 0x1f43,
-  0xe976, 0x5014,
-  0xe977, 0x1f1e,
-  0xe978, 0x2679,
-  0xe979, 0x1eeb,
-  0xe97a, 0x5015,
-  0xe97c, 0x1f35,
-  0xe97d, 0x208a,
-  0xe97e, 0x5017,
-  0xe980, 0x23c7,
-  0xe981, 0x23c9,
-  0xe982, 0x23c6,
-  0xe983, 0x5018,
-  0xe987, 0x224f,
-  0xe988, 0x501c,
-  0xe98b, 0x23cb,
-  0xe98c, 0x501f,
-  0xe98e, 0x21f3,
-  0xe98f, 0x5021,
-  0xe990, 0x21f7,
-  0xe991, 0x23cf,
-  0xe992, 0x23ce,
-  0xe993, 0x23ca,
-  0xe994, 0x23cd,
-  0xe995, 0x5022,
-  0xe998, 0x23d0,
-  0xe999, 0x5025,
-  0xe99b, 0x266c,
-  0xe99c, 0x5027,
-  0xe99d, 0x23c1,
-  0xe99e, 0x5028,
-  0xe99f, 0x1fee,
-  0xe9a0, 0x23d1,
-  0xe9a1, 0x1895,
-  0xea40, 0x1ff8,
-  0xea41, 0x5029,
-  0xea44, 0x23d3,
-  0xea45, 0x502c,
-  0xea48, 0x23d2,
-  0xea49, 0x23d4,
-  0xea4a, 0x1e98,
-  0xea4b, 0x502f,
-  0xea50, 0x1f2c,
-  0xea51, 0x5034,
-  0xea52, 0x23d5,
-  0xea53, 0x5035,
-  0xea55, 0x1e71,
-  0xea56, 0x2691,
-  0xea57, 0x5037,
-  0xea59, 0x23c5,
-  0xea5a, 0x5039,
-  0xea80, 0x231a,
-  0xea81, 0x505e,
-  0xea84, 0x2114,
-  0xea85, 0x5061,
-  0xea87, 0x2284,
-  0xea88, 0x5063,
-  0xea8e, 0x221c,
-  0xea8f, 0x5069,
-  0xea90, 0x1e7e,
-  0xea91, 0x204d,
-  0xea92, 0x506a,
-  0xea96, 0x2201,
-  0xea97, 0x506e,
-  0xeaa0, 0x1ed9,
-  0xeaa1, 0x18f3,
-  0xeb40, 0x5077,
-  0xeb41, 0x1fb2,
-  0xeb42, 0x5078,
-  0xeb45, 0x2252,
-  0xeb46, 0x507b,
-  0xeb48, 0x1f79,
-  0xeb49, 0x507d,
-  0xeb53, 0x2157,
-  0xeb54, 0x5087,
-  0xeb55, 0x21bf,
-  0xeb56, 0x5088,
-  0xeb5b, 0x221f,
-  0xeb5c, 0x508d,
-  0xeb5d, 0x203d,
-  0xeb5e, 0x508e,
-  0xeb60, 0x2015,
-  0xeb61, 0x5090,
-  0xeb62, 0x26a5,
-  0xeb63, 0x5091,
-  0xeb6d, 0x2156,
-  0xeb6e, 0x509b,
-  0xeb70, 0x2144,
-  0xeb71, 0x509d,
-  0xeb72, 0x1e91,
-  0xeb73, 0x2257,
-  0xeb74, 0x509e,
-  0xeb78, 0x200a,
-  0xeb79, 0x2092,
-  0xeb7a, 0x50a2,
-  0xeb80, 0x50a7,
-  0xeb85, 0x2250,
-  0xeb86, 0x50ac,
-  0xeb8a, 0x1ec3,
-  0xeb8b, 0x50b0,
-  0xeba1, 0x1951,
-  0xec40, 0x50c6,
-  0xec46, 0x21a8,
-  0xec47, 0x50cc,
-  0xec56, 0x260d,
-  0xec57, 0x50db,
-  0xec5a, 0x260c,
-  0xec5b, 0x50de,
-  0xec5c, 0x260e,
-  0xec5d, 0x50df,
-  0xec60, 0x2032,
-  0xec61, 0x50e2,
-  0xec6e, 0x260b,
-  0xec6f, 0x50ef,
-  0xec76, 0x22c3,
-  0xec77, 0x50f6,
-  0xec80, 0x50fe,
-  0xec96, 0x1f23,
-  0xec97, 0x5114,
-  0xeca1, 0x19af,
-  0xed40, 0x511e,
-  0xed46, 0x2695,
-  0xed47, 0x5124,
-  0xed58, 0x265e,
-  0xed59, 0x5135,
-  0xed5e, 0x265d,
-  0xed5f, 0x513a,
-  0xed61, 0x2692,
-  0xed62, 0x513c,
-  0xed64, 0x265f,
-  0xed65, 0x513e,
-  0xed66, 0x218d,
-  0xed67, 0x20fd,
-  0xed68, 0x513f,
-  0xed6e, 0x1f40,
-  0xed6f, 0x5145,
-  0xed74, 0x2465,
-  0xed75, 0x514a,
-  0xed77, 0x2467,
-  0xed78, 0x514c,
-  0xed79, 0x2466,
-  0xed7a, 0x514d,
-  0xed80, 0x5152,
-  0xed91, 0x21c9,
-  0xed92, 0x5163,
-  0xed93, 0x2209,
-  0xed94, 0x1ec9,
-  0xed95, 0x20e9,
-  0xed96, 0x5164,
-  0xed97, 0x21ca,
-  0xed98, 0x2146,
-  0xed99, 0x25c5,
-  0xed9a, 0x21dc,
-  0xed9b, 0x5165,
-  0xed9c, 0x245e,
-  0xed9d, 0x5166,
-  0xed9e, 0x214f,
-  0xed9f, 0x5167,
-  0xeda0, 0x25c6,
-  0xeda1, 0x1a0d,
-  0xee40, 0x25c7,
-  0xee41, 0x2241,
-  0xee42, 0x218a,
-  0xee43, 0x1e2f,
-  0xee44, 0x1edc,
-  0xee45, 0x5168,
-  0xee48, 0x20bf,
-  0xee49, 0x2034,
-  0xee4a, 0x516b,
-  0xee4d, 0x25c9,
-  0xee4e, 0x516e,
-  0xee52, 0x25c8,
-  0xee53, 0x5172,
-  0xee55, 0x220e,
-  0xee56, 0x5174,
-  0xee57, 0x25cb,
-  0xee58, 0x5175,
-  0xee5e, 0x217d,
-  0xee5f, 0x517b,
-  0xee61, 0x1f7e,
-  0xee62, 0x517d,
-  0xee68, 0x25cc,
-  0xee69, 0x1fc3,
-  0xee6a, 0x5183,
-  0xee6c, 0x20b9,
-  0xee6d, 0x5185,
-  0xee6e, 0x2181,
-  0xee6f, 0x5186,
-  0xee77, 0x1fda,
-  0xee78, 0x518e,
-  0xee7d, 0x2173,
-  0xee7e, 0x1ee1,
-  0xee80, 0x25cd,
-  0xee81, 0x5193,
-  0xee85, 0x25ce,
-  0xee86, 0x21f6,
-  0xee87, 0x5197,
-  0xee8a, 0x224b,
-  0xee8b, 0x25d1,
-  0xee8c, 0x519a,
-  0xee8d, 0x1ec0,
-  0xee8e, 0x519b,
-  0xee90, 0x2008,
-  0xee91, 0x519d,
-  0xee94, 0x25d0,
-  0xee95, 0x51a0,
-  0xee97, 0x25d2,
-  0xee98, 0x51a2,
-  0xee99, 0x1f2a,
-  0xee9a, 0x51a3,
-  0xee9d, 0x1e72,
-  0xee9e, 0x25d3,
-  0xee9f, 0x51a6,
-  0xeea1, 0x1a6b,
-  0xef40, 0x21be,
-  0xef41, 0x25d4,
-  0xef42, 0x2044,
-  0xef43, 0x51a8,
-  0xef44, 0x25cf,
-  0xef45, 0x20f3,
-  0xef46, 0x51a9,
-  0xef4c, 0x1f00,
-  0xef4d, 0x51af,
-  0xef52, 0x24cc,
-  0xef54, 0x51b4,
-  0xef55, 0x2698,
-  0xef56, 0x51b5,
-  0xef57, 0x2678,
-  0xef58, 0x51b6,
-  0xef5a, 0x24ce,
-  0xef5b, 0x51b8,
-  0xef60, 0x24cf,
-  0xef61, 0x51bd,
-  0xef68, 0x20b8,
-  0xef69, 0x51c4,
-  0xef6a, 0x24d0,
-  0xef6b, 0x51c5,
-  0xef6c, 0x24d1,
-  0xef6d, 0x51c6,
-  0xef77, 0x1ef4,
-  0xef78, 0x51d0,
-  0xef7a, 0x239b,
-  0xef7b, 0x51d2,
-  0xef7c, 0x267e,
-  0xef7d, 0x51d3,
-  0xef80, 0x51d5,
-  0xef82, 0x239d,
-  0xef83, 0x239f,
-  0xef85, 0x51d7,
-  0xef86, 0x23a1,
-  0xef87, 0x51d8,
-  0xef88, 0x1ef1,
-  0xef89, 0x51d9,
-  0xef8b, 0x221e,
-  0xef8c, 0x51db,
-  0xef8d, 0x23a2,
-  0xef8e, 0x51dc,
-  0xef95, 0x214b,
-  0xef96, 0x1e36,
-  0xef97, 0x2135,
-  0xef98, 0x51e3,
-  0xef9c, 0x1fad,
-  0xef9d, 0x51e7,
-  0xef9e, 0x1e53,
-  0xef9f, 0x51e8,
-  0xefa1, 0x1ac9,
-  0xf040, 0x51ea,
-  0xf041, 0x23a3,
-  0xf042, 0x2203,
-  0xf043, 0x51eb,
-  0xf044, 0x1ee7,
-  0xf045, 0x51ec,
-  0xf047, 0x23a4,
-  0xf048, 0x2097,
-  0xf049, 0x1ee4,
-  0xf04a, 0x51ee,
-  0xf04e, 0x2238,
-  0xf04f, 0x51f2,
-  0xf051, 0x23a5,
-  0xf052, 0x51f4,
-  0xf054, 0x1f9a,
-  0xf055, 0x51f6,
-  0xf057, 0x21c3,
-  0xf058, 0x51f8,
-  0xf05e, 0x1f2e,
-  0xf05f, 0x51fe,
-  0xf068, 0x239c,
-  0xf069, 0x5207,
-  0xf06c, 0x23a6,
-  0xf06d, 0x520a,
-  0xf071, 0x239e,
-  0xf072, 0x520e,
-  0xf073, 0x2035,
-  0xf074, 0x23a7,
-  0xf075, 0x520f,
-  0xf078, 0x23a8,
-  0xf079, 0x5212,
-  0xf07a, 0x2075,
-  0xf07b, 0x5213,
-  0xf07d, 0x23a9,
-  0xf080, 0x23ab,
-  0xf081, 0x1feb,
-  0xf082, 0x23ac,
-  0xf083, 0x5215,
-  0xf087, 0x1f6a,
-  0xf088, 0x20f9,
-  0xf089, 0x5219,
-  0xf08b, 0x2666,
-  0xf08c, 0x521b,
-  0xf090, 0x2667,
-  0xf091, 0x521f,
-  0xf092, 0x1e6c,
-  0xf093, 0x5220,
-  0xf096, 0x23ad,
-  0xf097, 0x5223,
-  0xf0a1, 0x1b27,
-  0xf140, 0x522d,
-  0xf152, 0x206d,
-  0xf153, 0x2242,
-  0xf154, 0x1f02,
-  0xf155, 0x523f,
-  0xf157, 0x2183,
-  0xf158, 0x5241,
-  0xf159, 0x1e85,
-  0xf15a, 0x21e9,
-  0xf15b, 0x5242,
-  0xf167, 0x1e57,
-  0xf168, 0x524e,
-  0xf176, 0x22a5,
-  0xf177, 0x2407,
-  0xf178, 0x1fca,
-  0xf179, 0x525c,
-  0xf17a, 0x2402,
-  0xf17b, 0x1f82,
-  0xf17c, 0x525d,
-  0xf17e, 0x2408,
-  0xf180, 0x2404,
-  0xf181, 0x525f,
-  0xf182, 0x2131,
-  0xf183, 0x5260,
-  0xf184, 0x2184,
-  0xf185, 0x5261,
-  0xf186, 0x2403,
-  0xf187, 0x5262,
-  0xf188, 0x206e,
-  0xf189, 0x240b,
-  0xf18a, 0x5263,
-  0xf194, 0x1f3f,
-  0xf195, 0x526d,
-  0xf198, 0x2067,
-  0xf199, 0x5270,
-  0xf1a1, 0x1b85,
-  0xf240, 0x5278,
-  0xf245, 0x1fd7,
-  0xf246, 0x527d,
-  0xf247, 0x1e83,
-  0xf248, 0x527e,
-  0xf24b, 0x240f,
-  0xf24c, 0x5281,
-  0xf253, 0x240e,
-  0xf254, 0x20c7,
-  0xf255, 0x240d,
-  0xf256, 0x5288,
-  0xf25c, 0x2412,
-  0xf25d, 0x528e,
-  0xf25f, 0x20b7,
-  0xf260, 0x5290,
-  0xf271, 0x23f0,
-  0xf272, 0x52a1,
-  0xf273, 0x2411,
-  0xf274, 0x2414,
-  0xf275, 0x52a2,
-  0xf276, 0x2170,
-  0xf277, 0x52a3,
-  0xf27c, 0x2405,
-  0xf27d, 0x210c,
-  0xf27e, 0x2415,
-  0xf280, 0x52a8,
-  0xf285, 0x2066,
-  0xf286, 0x52ad,
-  0xf287, 0x2352,
-  0xf288, 0x2413,
-  0xf289, 0x2410,
-  0xf28a, 0x2416,
-  0xf28c, 0x20f1,
-  0xf28d, 0x52ae,
-  0xf291, 0x240a,
-  0xf292, 0x52b2,
-  0xf294, 0x2409,
-  0xf295, 0x52b4,
-  0xf296, 0x2418,
-  0xf297, 0x52b5,
-  0xf29c, 0x1fa7,
-  0xf29d, 0x52ba,
-  0xf29e, 0x21fc,
-  0xf29f, 0x52bb,
-  0xf2a1, 0x1be3,
-  0xf340, 0x1fc1,
-  0xf341, 0x2406,
-  0xf342, 0x52bd,
-  0xf345, 0x229c,
-  0xf346, 0x52c0,
-  0xf348, 0x204e,
-  0xf349, 0x52c2,
-  0xf34a, 0x241a,
-  0xf34b, 0x2419,
-  0xf34c, 0x52c3,
-  0xf350, 0x240c,
-  0xf351, 0x52c7,
-  0xf361, 0x1e29,
-  0xf362, 0x52d7,
-  0xf374, 0x2661,
-  0xf375, 0x52e9,
-  0xf376, 0x26a4,
-  0xf377, 0x2174,
-  0xf378, 0x2663,
-  0xf379, 0x2662,
-  0xf37a, 0x52ea,
-  0xf380, 0x52ef,
-  0xf38c, 0x2675,
-  0xf38d, 0x52fb,
-  0xf3a0, 0x214c,
-  0xf3a1, 0x1c41,
-  0xf440, 0x530e,
-  0xf445, 0x267a,
-  0xf446, 0x5313,
-  0xf450, 0x26a0,
-  0xf451, 0x531d,
-  0xf457, 0x2668,
-  0xf458, 0x5323,
-  0xf459, 0x1ed0,
-  0xf45a, 0x5324,
-  0xf45b, 0x2096,
-  0xf45c, 0x5325,
-  0xf45d, 0x23cc,
-  0xf45e, 0x5326,
-  0xf462, 0x23c8,
-  0xf463, 0x532a,
-  0xf464, 0x223e,
-  0xf465, 0x532b,
-  0xf475, 0x2665,
-  0xf476, 0x533b,
-  0xf47c, 0x2664,
-  0xf47d, 0x5341,
-  0xf47e, 0x2239,
-  0xf480, 0x5342,
-  0xf494, 0x204a,
-  0xf495, 0x5356,
-  0xf499, 0x261f,
-  0xf49a, 0x535a,
-  0xf49c, 0x261e,
-  0xf49d, 0x535c,
-  0xf4a1, 0x1c9f,
-  0xf540, 0x5360,
-  0xf545, 0x2620,
-  0xf546, 0x5365,
-  0xf547, 0x2621,
-  0xf548, 0x5366,
-  0xf552, 0x2622,
-  0xf553, 0x5370,
-  0xf554, 0x2627,
-  0xf555, 0x1e39,
-  0xf556, 0x2625,
-  0xf557, 0x5371,
-  0xf55e, 0x2629,
-  0xf55f, 0x5378,
-  0xf561, 0x262e,
-  0xf562, 0x262b,
-  0xf563, 0x537a,
-  0xf56e, 0x262a,
-  0xf56f, 0x262d,
-  0xf570, 0x5385,
-  0xf571, 0x2628,
-  0xf572, 0x21b9,
-  0xf573, 0x5386,
-  0xf580, 0x5392,
-  0xf585, 0x2636,
-  0xf586, 0x2630,
-  0xf587, 0x5397,
-  0xf58c, 0x2638,
-  0xf58d, 0x539c,
-  0xf58e, 0x200d,
-  0xf58f, 0x2637,
-  0xf590, 0x539d,
-  0xf599, 0x2645,
-  0xf59a, 0x53a6,
-  0xf59b, 0x263a,
-  0xf59c, 0x53a7,
-  0xf5a0, 0x2643,
-  0xf5a1, 0x1cfd,
-  0xf640, 0x53ab,
-  0xf641, 0x2640,
-  0xf642, 0x53ac,
-  0xf645, 0x263d,
-  0xf646, 0x2641,
-  0xf647, 0x53af,
-  0xf648, 0x263e,
-  0xf649, 0x53b0,
-  0xf64b, 0x263f,
-  0xf64c, 0x1fc0,
-  0xf64d, 0x53b2,
-  0xf64e, 0x263b,
-  0xf650, 0x53b3,
-  0xf654, 0x2642,
-  0xf655, 0x53b7,
-  0xf658, 0x2644,
-  0xf659, 0x53ba,
-  0xf661, 0x2639,
-  0xf662, 0x53c2,
-  0xf663, 0x264c,
-  0xf664, 0x53c3,
-  0xf66c, 0x2647,
-  0xf66d, 0x264b,
-  0xf66e, 0x53cb,
-  0xf671, 0x2649,
-  0xf672, 0x53ce,
-  0xf674, 0x2648,
-  0xf675, 0x53d0,
-  0xf676, 0x264a,
-  0xf677, 0x2108,
-  0xf678, 0x53d1,
-  0xf680, 0x53d8,
-  0xf685, 0x264d,
-  0xf686, 0x53dd,
-  0xf688, 0x2634,
-  0xf689, 0x53df,
-  0xf68a, 0x2651,
-  0xf68b, 0x53e0,
-  0xf68d, 0x2650,
-  0xf68e, 0x2652,
-  0xf68f, 0x53e2,
-  0xf692, 0x264f,
-  0xf693, 0x53e5,
-  0xf696, 0x2632,
-  0xf697, 0x264e,
-  0xf698, 0x2653,
-  0xf699, 0x53e8,
-  0xf69a, 0x2657,
-  0xf69b, 0x53e9,
-  0xf69c, 0x2635,
-  0xf69d, 0x53ea,
-  0xf69e, 0x2633,
-  0xf69f, 0x53eb,
-  0xf6a0, 0x2656,
-  0xf6a1, 0x1d5b,
-  0xf740, 0x53ec,
-  0xf742, 0x2654,
-  0xf743, 0x53ee,
-  0xf749, 0x2658,
-  0xf74a, 0x53f4,
-  0xf74c, 0x2655,
-  0xf74d, 0x1e4d,
-  0xf74e, 0x53f6,
-  0xf756, 0x265b,
-  0xf757, 0x53fe,
-  0xf758, 0x265a,
-  0xf759, 0x53ff,
-  0xf75a, 0x2659,
-  0xf75b, 0x202e,
-  0xf75c, 0x262f,
-  0xf75d, 0x5400,
-  0xf761, 0x2646,
-  0xf762, 0x5404,
-  0xf763, 0x2626,
-  0xf764, 0x5405,
-  0xf76b, 0x265c,
-  0xf76c, 0x540c,
-  0xf771, 0x262c,
-  0xf772, 0x5411,
-  0xf77c, 0x2623,
-  0xf77d, 0x541b,
-  0xf77e, 0x2631,
-  0xf780, 0x541c,
-  0xf7a1, 0x1db9,
-  0xf840, 0x543d,
-  0xf842, 0x209c,
-  0xf843, 0x543f,
-  0xf846, 0x2580,
-  0xf847, 0x5442,
-  0xf849, 0x22dc,
-  0xf84a, 0x5444,
-  0xf850, 0x1f05,
-  0xf851, 0x208b,
-  0xf852, 0x544a,
-  0xf853, 0x2581,
-  0xf854, 0x544b,
-  0xf863, 0x2583,
-  0xf864, 0x2582,
-  0xf865, 0x545a,
-  0xf866, 0x21ee,
-  0xf867, 0x545b,
-  0xf872, 0x2182,
-  0xf873, 0x5466,
-  0xf878, 0x2243,
-  0xf879, 0x546b,
-  0xf87a, 0x2587,
-  0xf87b, 0x546c,
-  0xf87c, 0x2588,
-  0xf87d, 0x546d,
-  0xf880, 0x546f,
-  0xf881, 0x2584,
-  0xf882, 0x5470,
-  0xf884, 0x21fd,
-  0xf885, 0x5472,
-  0xf886, 0x21ef,
-  0xf887, 0x5473,
-  0xf88d, 0x258a,
-  0xf88e, 0x258c,
-  0xf88f, 0x5479,
-  0xf899, 0x1f47,
-  0xf89a, 0x5483,
-  0xf89d, 0x1f1d,
-  0xf89e, 0x5486,
-  0xf8a0, 0x258d,
-  0xf940, 0x5488,
-  0xf94e, 0x1fd0,
-  0xf94f, 0x2592,
-  0xf950, 0x258f,
-  0xf951, 0x5496,
-  0xf959, 0x2594,
-  0xf95a, 0x1ee0,
-  0xf95b, 0x549e,
-  0xf95d, 0x2591,
-  0xf95e, 0x2595,
-  0xf95f, 0x54a0,
-  0xf967, 0x2597,
-  0xf968, 0x54a8,
-  0xf969, 0x20b6,
-  0xf96a, 0x54a9,
-  0xf96c, 0x2598,
-  0xf96d, 0x54ab,
-  0xf96f, 0x20f6,
-  0xf970, 0x54ad,
-  0xf980, 0x54bc,
-  0xf985, 0x2585,
-  0xf986, 0x54c1,
-  0xf987, 0x2599,
-  0xf988, 0x54c2,
-  0xf991, 0x2596,
-  0xf992, 0x54cb,
-  0xf996, 0x259a,
-  0xf997, 0x54cf,
-  0xf998, 0x259b,
-  0xf999, 0x54d0,
-  0xfa40, 0x54d8,
-  0xfa42, 0x259d,
-  0xfa43, 0x54da,
-  0xfa46, 0x259e,
-  0xfa47, 0x54dd,
-  0xfa4c, 0x234c,
-  0xfa4d, 0x54e2,
-  0xfa51, 0x1f44,
-  0xfa52, 0x54e6,
-  0xfa58, 0x2660,
-  0xfa59, 0x25a0,
-  0xfa5a, 0x54ec,
-  0xfa5d, 0x259c,
-  0xfa5e, 0x54ef,
-  0xfa5f, 0x259f,
-  0xfa60, 0x54f0,
-  0xfa61, 0x1f6c,
-  0xfa62, 0x54f1,
-  0xfa70, 0x25a2,
-  0xfa71, 0x54ff,
-  0xfa74, 0x20ae,
-  0xfa75, 0x5502,
-  0xfa76, 0x258b,
-  0xfa77, 0x25a3,
-  0xfa78, 0x5503,
-  0xfa80, 0x550a,
-  0xfa83, 0x2589,
-  0xfa84, 0x25a5,
-  0xfa85, 0x550d,
-  0xfa8d, 0x25a4,
-  0xfa8e, 0x5515,
-  0xfa90, 0x25a6,
-  0xfa91, 0x2593,
-  0xfa92, 0x5517,
-  0xfa96, 0x25a7,
-  0xfa97, 0x2222,
-  0xfa98, 0x25a9,
-  0xfa99, 0x551b,
-  0xfb40, 0x5523,
-  0xfb49, 0x25a8,
-  0xfb4a, 0x552c,
-  0xfb52, 0x2586,
-  0xfb53, 0x5534,
-  0xfb57, 0x25a1,
-  0xfb58, 0x25aa,
-  0xfb59, 0x5538,
-  0xfb5a, 0x2590,
-  0xfb5b, 0x258e,
-  0xfb5c, 0x5539,
-  0xfb75, 0x2688,
-  0xfb76, 0x5552,
-  0xfb79, 0x269e,
-  0xfb7a, 0x25fb,
-  0xfb7b, 0x5555,
-  0xfb7c, 0x1f8c,
-  0xfb7d, 0x21f4,
-  0xfb7e, 0x5556,
-  0xfb80, 0x5557,
-  0xfb90, 0x200f,
-  0xfb91, 0x5567,
-  0xfb9c, 0x2071,
-  0xfb9d, 0x5572,
-  0xfb9f, 0x25f7,
-  0xfba0, 0x5574,
-  0xfc40, 0x5575,
-  0xfc44, 0x2696,
-  0xfc45, 0x5579,
-  0xfc49, 0x268f,
-  0xfc4a, 0x557d,
-  0xfc5a, 0x22da,
-  0xfc5b, 0x558d,
-  0xfc63, 0x1ec1,
-  0xfc64, 0x5595,
-  0xfc68, 0x1eb3,
-  0xfc69, 0x5599,
-  0xfc6f, 0x266a,
-  0xfc70, 0x559f,
-  0xfc71, 0x268a,
-  0xfc72, 0x55a0,
-  0xfc74, 0x2669,
-  0xfc75, 0x55a2,
-  0xfc77, 0x2618,
-  0xfc79, 0x55a4,
-  0xfc80, 0x55aa,
-  0xfc83, 0x261a,
-  0xfc84, 0x55ad,
-  0xfc8a, 0x2673,
-  0xfc8b, 0x55b3,
-  0xfd40, 0x55c9,
-  0xfd52, 0x20c6,
-  0xfd53, 0x226b,
-  0xfd54, 0x55db,
-  0xfd57, 0x24d3,
-  0xfd58, 0x1e86,
-  0xfd59, 0x55de,
-  0xfd5a, 0x260f,
-  0xfd5b, 0x55df,
-  0xfd5f, 0x2611,
-  0xfd60, 0x55e3,
-  0xfd62, 0x2613,
-  0xfd63, 0x55e5,
-  0xfd65, 0x2610,
-  0xfd66, 0x2612,
-  0xfd67, 0x2030,
-  0xfd68, 0x55e7,
-  0xfd69, 0x2671,
-  0xfd6a, 0x55e8,
-  0xfd6c, 0x2614,
-  0xfd6d, 0x55ea,
-  0xfd70, 0x2616,
-  0xfd71, 0x55ed,
-  0xfd72, 0x2615,
-  0xfd73, 0x55ee,
-  0xfd78, 0x20f2,
-  0xfd79, 0x55f3,
-  0xfd7d, 0x2617,
-  0xfd7e, 0x55f7,
-  0xfd80, 0x55f8,
-  0xfd88, 0x2037,
-  0xfd89, 0x5600,
-  0xfd8b, 0x20b3,
-  0xfd8c, 0x5602,
-  0xfd8f, 0x1f22,
-  0xfd90, 0x24ed,
-  0xfd91, 0x5605,
-  0xfd94, 0x1f34,
-  0xfd95, 0x5608,
-  0xfd9d, 0x0a02,
-  0xfd9e, 0x40d3,
-  0xfd9f, 0x200c,
-  0xfda0, 0x5083,
-  0xfe40, 0x1259,
-  0xfe41, 0x5610,
-  0xfe80, 0x564e,
-  0xa1a2, 0x023f,
-  0xa1a3, 0x023e,
-  0xa1aa, 0x0256,
-  0xa1ab, 0x1e18,
-  0xa1ad, 0x0257,
-  0xa1b2, 0x0246,
-  0xa1fe, 0x1e1a,
-  0xa3a1, 0x0242,
-  0xa3a8, 0x0244,
-  0xa3ac, 0x023d,
-  0xa3ae, 0x1e1b,
-  0xa3ba, 0x0240,
-  0xa3bd, 0x1e1c,
-  0xa3bf, 0x0243,
-  0xa3db, 0x1e1d,
-  0xa3dd, 0x1e1e,
-  0xa3df, 0x0258,
-  0xa3fb, 0x0254,
-  0xa3fd, 0x0255,
-  0xa3fe, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBKEUCVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x1e24, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334,
-    0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c,
-    0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
-    0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c,
-    0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354,
-    0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c,
-    0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364,
-    0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c,
-    0x036d, 0x036e, 0x036f, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374,
-    0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037a, 0x037b, 0x037c,
-    0x037d, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384,
-    0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBKEUCVMap2, 4091
-};
-
-static Gushort gb12GBTEUCHMap2[4566] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb0a8, 0x1e25,
-  0xb0a9, 0x03b4,
-  0xb0aa, 0x1e26,
-  0xb0ab, 0x03b6,
-  0xb0ad, 0x1e27,
-  0xb0af, 0x03ba,
-  0xb0b9, 0x1e29,
-  0xb0ba, 0x03c5,
-  0xb0c0, 0x1e2a,
-  0xb0c1, 0x03cc,
-  0xb0d3, 0x1e2b,
-  0xb0d4, 0x03df,
-  0xb0d5, 0x1e2c,
-  0xb0d6, 0x03e1,
-  0xb0da, 0x1e2d,
-  0xb0db, 0x03e6,
-  0xb0dc, 0x1e2e,
-  0xb0dd, 0x03e8,
-  0xb0e4, 0x1e2f,
-  0xb0e5, 0x03f0,
-  0xb0ec, 0x1e30,
-  0xb0ee, 0x03f9,
-  0xb0ef, 0x1e32,
-  0xb0f0, 0x03fb,
-  0xb0f3, 0x1e33,
-  0xb0f4, 0x03ff,
-  0xb0f7, 0x1e34,
-  0xb0f8, 0x0403,
-  0xb0f9, 0x1e35,
-  0xb0fa, 0x0405,
-  0xb1a1, 0x040a,
-  0xb1a5, 0x1e36,
-  0xb1a7, 0x0410,
-  0xb1a8, 0x1e38,
-  0xb1a9, 0x0412,
-  0xb1ab, 0x1e39,
-  0xb1ac, 0x0415,
-  0xb1b2, 0x1e3a,
-  0xb1b3, 0x041c,
-  0xb1b4, 0x1e3b,
-  0xb1b6, 0x041f,
-  0xb1b7, 0x1e3d,
-  0xb1ba, 0x0423,
-  0xb1c1, 0x1e40,
-  0xb1c2, 0x042b,
-  0xb1ca, 0x1e41,
-  0xb1cb, 0x0434,
-  0xb1cf, 0x1e42,
-  0xb1d1, 0x043a,
-  0xb1d2, 0x1e44,
-  0xb1d3, 0x043c,
-  0xb1d5, 0x1e45,
-  0xb1d6, 0x043f,
-  0xb1df, 0x1e46,
-  0xb1e2, 0x044b,
-  0xb1e4, 0x1e49,
-  0xb1e5, 0x044e,
-  0xb1e7, 0x1e4a,
-  0xb1e9, 0x0452,
-  0xb1ea, 0x1e4c,
-  0xb1eb, 0x0454,
-  0xb1ee, 0x1e4d,
-  0xb1ef, 0x0458,
-  0xb1f1, 0x1e4e,
-  0xb1f2, 0x045b,
-  0xb1f4, 0x1e4f,
-  0xb1f8, 0x0461,
-  0xb1fd, 0x1e53,
-  0xb1fe, 0x0467,
-  0xb2a1, 0x0468,
-  0xb2a6, 0x1e54,
-  0xb2a8, 0x046f,
-  0xb2ac, 0x1e56,
-  0xb2ad, 0x0474,
-  0xb2b5, 0x1e57,
-  0xb2b6, 0x047d,
-  0xb2b9, 0x1e58,
-  0xb2ba, 0x0481,
-  0xb2c6, 0x1e59,
-  0xb2c7, 0x048e,
-  0xb2ce, 0x1e5a,
-  0xb2d8, 0x049f,
-  0xb2de, 0x1e64,
-  0xb2df, 0x04a6,
-  0xb2e0, 0x1e65,
-  0xb2e1, 0x04a8,
-  0xb2e2, 0x1e66,
-  0xb2e4, 0x04ab,
-  0xb2ef, 0x1e68,
-  0xb2f0, 0x04b7,
-  0xb2f3, 0x1e69,
-  0xb2fd, 0x04c4,
-  0xb3a1, 0x1e73,
-  0xb3a3, 0x04c8,
-  0xb3a4, 0x1e75,
-  0xb3a8, 0x04cd,
-  0xb3a9, 0x1e79,
-  0xb3aa, 0x04cf,
-  0xb3ae, 0x1e7a,
-  0xb3af, 0x04d4,
-  0xb3b5, 0x1e7b,
-  0xb3b6, 0x04db,
-  0xb3b9, 0x1e7c,
-  0xb3ba, 0x04df,
-  0xb3be, 0x1e7d,
-  0xb3bf, 0x04e4,
-  0xb3c2, 0x1e7e,
-  0xb3c3, 0x04e8,
-  0xb3c4, 0x1e7f,
-  0xb3c5, 0x04ea,
-  0xb3c6, 0x1e80,
-  0xb3c7, 0x04ec,
-  0xb3cd, 0x1e81,
-  0xb3ce, 0x04f3,
-  0xb3cf, 0x1e82,
-  0xb3d0, 0x04f5,
-  0xb3d2, 0x1e83,
-  0xb3d3, 0x04f8,
-  0xb3d9, 0x1e84,
-  0xb3da, 0x04ff,
-  0xb3db, 0x1e85,
-  0xb3dc, 0x0501,
-  0xb3dd, 0x1e86,
-  0xb3de, 0x0503,
-  0xb3e3, 0x1e87,
-  0xb3e4, 0x0509,
-  0xb3e5, 0x1e88,
-  0xb3e7, 0x050c,
-  0xb3e8, 0x1e8a,
-  0xb3e9, 0x050e,
-  0xb3eb, 0x1e8b,
-  0xb3ed, 0x0512,
-  0xb3ef, 0x1e8d,
-  0xb3f0, 0x0515,
-  0xb3f1, 0x1e8e,
-  0xb3f2, 0x0517,
-  0xb3f3, 0x1e8f,
-  0xb3f4, 0x0519,
-  0xb3fa, 0x1e90,
-  0xb3fc, 0x0521,
-  0xb4a1, 0x1e92,
-  0xb4a3, 0x0526,
-  0xb4a5, 0x1e94,
-  0xb4a7, 0x052a,
-  0xb4ab, 0x1e96,
-  0xb4ac, 0x052f,
-  0xb4af, 0x1e97,
-  0xb4b0, 0x0533,
-  0xb4b3, 0x1e98,
-  0xb4b5, 0x0538,
-  0xb4b8, 0x1e9a,
-  0xb4b9, 0x053c,
-  0xb4bf, 0x1e9b,
-  0xb4c0, 0x0543,
-  0xb4c2, 0x1e9c,
-  0xb4c3, 0x0546,
-  0xb4c7, 0x1e9d,
-  0xb4c8, 0x054b,
-  0xb4ca, 0x1e9e,
-  0xb4cb, 0x054e,
-  0xb4cd, 0x1e9f,
-  0xb4ce, 0x0551,
-  0xb4cf, 0x1ea0,
-  0xb4d0, 0x0553,
-  0xb4d3, 0x1ea1,
-  0xb4d5, 0x0558,
-  0xb4da, 0x1ea3,
-  0xb4db, 0x055e,
-  0xb4dc, 0x1ea4,
-  0xb4dd, 0x0560,
-  0xb4ed, 0x1ea5,
-  0xb4ee, 0x0571,
-  0xb4ef, 0x1ea6,
-  0xb4f0, 0x0573,
-  0xb4f8, 0x1ea7,
-  0xb4f9, 0x057c,
-  0xb4fb, 0x1ea8,
-  0xb4fc, 0x057f,
-  0xb5a1, 0x0582,
-  0xb5a3, 0x1ea9,
-  0xb5a4, 0x0585,
-  0xb5a5, 0x1eaa,
-  0xb5a9, 0x058a,
-  0xb5ac, 0x1eae,
-  0xb5ad, 0x058e,
-  0xb5ae, 0x1eaf,
-  0xb5b0, 0x0591,
-  0xb5b1, 0x1eb1,
-  0xb5b6, 0x0597,
-  0xb5b7, 0x1eb6,
-  0xb5b8, 0x0599,
-  0xb5ba, 0x1eb7,
-  0xb5bd, 0x059e,
-  0xb5c6, 0x1eba,
-  0xb5c7, 0x05a8,
-  0xb5cb, 0x1ebb,
-  0xb5cc, 0x05ad,
-  0xb5d0, 0x1ebc,
-  0xb5d1, 0x05b2,
-  0xb5d3, 0x1ebd,
-  0xb5d4, 0x05b5,
-  0xb5dd, 0x1ebe,
-  0xb5e0, 0x05c1,
-  0xb5e3, 0x1ec1,
-  0xb5e4, 0x05c5,
-  0xb5e6, 0x1ec2,
-  0xb5e8, 0x05c9,
-  0xb5ed, 0x1ec4,
-  0xb5ee, 0x05cf,
-  0xb5f6, 0x1ec5,
-  0xb5f8, 0x05d9,
-  0xb5fd, 0x1ec7,
-  0xb5fe, 0x05df,
-  0xb6a1, 0x05e0,
-  0xb6a4, 0x1ec8,
-  0xb6a6, 0x05e5,
-  0xb6a7, 0x1eca,
-  0xb6a8, 0x05e7,
-  0xb6a9, 0x1ecb,
-  0xb6aa, 0x05e9,
-  0xb6ab, 0x1ecc,
-  0xb6ac, 0x05eb,
-  0xb6af, 0x1ecd,
-  0xb6b1, 0x05f0,
-  0xb6b3, 0x1ecf,
-  0xb6b4, 0x05f3,
-  0xb6b7, 0x1ed0,
-  0xb6b8, 0x05f7,
-  0xb6bf, 0x1ed1,
-  0xb6c2, 0x0601,
-  0xb6c4, 0x1ed4,
-  0xb6c5, 0x0604,
-  0xb6c6, 0x1ed5,
-  0xb6c7, 0x0606,
-  0xb6cd, 0x1ed6,
-  0xb6ce, 0x060d,
-  0xb6cf, 0x1ed7,
-  0xb6d1, 0x0610,
-  0xb6d3, 0x1ed9,
-  0xb6d5, 0x0614,
-  0xb6d6, 0x1edb,
-  0xb6d7, 0x0616,
-  0xb6d9, 0x1edc,
-  0xb6da, 0x0619,
-  0xb6db, 0x1edd,
-  0xb6dc, 0x061b,
-  0xb6e1, 0x1ede,
-  0xb6e2, 0x0621,
-  0xb6e9, 0x1edf,
-  0xb6ea, 0x0629,
-  0xb6ec, 0x1ee0,
-  0xb6ed, 0x062c,
-  0xb6ee, 0x1ee1,
-  0xb6f0, 0x062f,
-  0xb6f1, 0x1ee3,
-  0xb6f2, 0x0631,
-  0xb6f6, 0x1ee4,
-  0xb6f7, 0x0636,
-  0xb6f9, 0x1ee5,
-  0xb6fa, 0x0639,
-  0xb6fb, 0x1ee6,
-  0xb6fd, 0x063c,
-  0xb7a1, 0x1ee8,
-  0xb7a4, 0x0641,
-  0xb7a7, 0x1eeb,
-  0xb7a8, 0x0645,
-  0xb7af, 0x1eec,
-  0xb7b1, 0x064e,
-  0xb7b3, 0x1eee,
-  0xb7b4, 0x0651,
-  0xb7b6, 0x1eef,
-  0xb7b8, 0x0655,
-  0xb7b9, 0x1ef1,
-  0xb7ba, 0x0657,
-  0xb7c3, 0x1ef2,
-  0xb7c5, 0x0662,
-  0xb7c9, 0x1ef4,
-  0xb7ca, 0x0667,
-  0xb7cc, 0x1ef5,
-  0xb7cd, 0x066a,
-  0xb7cf, 0x1ef6,
-  0xb7d0, 0x066d,
-  0xb7d1, 0x1ef7,
-  0xb7d2, 0x066f,
-  0xb7d7, 0x1ef8,
-  0xb7d9, 0x0676,
-  0xb7dc, 0x1efa,
-  0xb7dd, 0x067a,
-  0xb7df, 0x1efb,
-  0xb7e2, 0x067f,
-  0xb7e3, 0x1efe,
-  0xb7e4, 0x0681,
-  0xb7e6, 0x1eff,
-  0xb7e9, 0x0686,
-  0xb7eb, 0x1f02,
-  0xb7ee, 0x068b,
-  0xb7ef, 0x1f05,
-  0xb7f0, 0x068d,
-  0xb7f4, 0x1f06,
-  0xb7f5, 0x0692,
-  0xb7f8, 0x1f07,
-  0xb7f9, 0x0696,
-  0xb8a1, 0x069c,
-  0xb8a7, 0x1f08,
-  0xb8a9, 0x06a4,
-  0xb8b3, 0x1f0a,
-  0xb8b5, 0x06b0,
-  0xb8ba, 0x1f0c,
-  0xb8bb, 0x06b6,
-  0xb8bc, 0x1f0d,
-  0xb8bd, 0x06b8,
-  0xb8be, 0x1f0e,
-  0xb8c0, 0x06bb,
-  0xb8c3, 0x1f10,
-  0xb8c4, 0x06bf,
-  0xb8c6, 0x1f11,
-  0xb8c8, 0x06c3,
-  0xb8c9, 0x1f13,
-  0xb8ca, 0x06c5,
-  0xb8cf, 0x1f14,
-  0xb8d0, 0x06cb,
-  0xb8d3, 0x1f15,
-  0xb8d7, 0x06d2,
-  0xb8d9, 0x1f19,
-  0xb8db, 0x06d6,
-  0xb8e4, 0x1f1b,
-  0xb8e5, 0x06e0,
-  0xb8e9, 0x1f1c,
-  0xb8ea, 0x06e5,
-  0xb8eb, 0x1f1d,
-  0xb8ec, 0x06e7,
-  0xb8f3, 0x1f1e,
-  0xb8f4, 0x06ef,
-  0xb8f5, 0x1f1f,
-  0xb8f7, 0x06f2,
-  0xb8f8, 0x1f21,
-  0xb8f9, 0x06f4,
-  0xb9a1, 0x06fa,
-  0xb9a8, 0x1f22,
-  0xb9a9, 0x0702,
-  0xb9ae, 0x1f23,
-  0xb9af, 0x0708,
-  0xb9b1, 0x1f24,
-  0xb9b2, 0x070b,
-  0xb9b3, 0x1f25,
-  0xb9b4, 0x070d,
-  0xb9b5, 0x1f26,
-  0xb9b6, 0x070f,
-  0xb9b9, 0x1f27,
-  0xb9bb, 0x0714,
-  0xb9c6, 0x1f29,
-  0xb9c7, 0x0720,
-  0xb9cb, 0x1f2a,
-  0xb9cc, 0x0725,
-  0xb9d0, 0x1f2b,
-  0xb9d1, 0x072a,
-  0xb9d8, 0x1f2c,
-  0xb9d9, 0x0732,
-  0xb9db, 0x1f2d,
-  0xb9dc, 0x0735,
-  0xb9dd, 0x1f2e,
-  0xb9de, 0x0737,
-  0xb9df, 0x1f2f,
-  0xb9e0, 0x0739,
-  0xb9e1, 0x1f30,
-  0xb9e2, 0x073b,
-  0xb9e3, 0x1f31,
-  0xb9e4, 0x073d,
-  0xb9e6, 0x1f32,
-  0xb9e7, 0x0740,
-  0xb9e9, 0x1f33,
-  0xb9ed, 0x0746,
-  0xb9ee, 0x1f37,
-  0xb9ef, 0x0748,
-  0xb9f1, 0x1f38,
-  0xb9f2, 0x074b,
-  0xb9f3, 0x1f39,
-  0xb9f6, 0x074f,
-  0xb9f8, 0x1f3c,
-  0xb9f9, 0x0752,
-  0xb9fa, 0x1f3d,
-  0xb9fb, 0x0754,
-  0xb9fd, 0x1f3e,
-  0xb9fe, 0x0757,
-  0xbaa1, 0x0758,
-  0xbaa7, 0x1f3f,
-  0xbaa8, 0x075f,
-  0xbaab, 0x1f40,
-  0xbaac, 0x0763,
-  0xbaba, 0x1f41,
-  0xbabb, 0x0772,
-  0xbac5, 0x1f42,
-  0xbac6, 0x077d,
-  0xbad2, 0x1f43,
-  0xbad3, 0x078a,
-  0xbad7, 0x1f44,
-  0xbad9, 0x0790,
-  0xbae4, 0x1f46,
-  0xbae5, 0x079c,
-  0xbae8, 0x1f47,
-  0xbae9, 0x07a0,
-  0xbaec, 0x1f48,
-  0xbaed, 0x07a4,
-  0xbaf3, 0x15e5,
-  0xbaf4, 0x07ab,
-  0xbaf8, 0x1f49,
-  0xbaf9, 0x07b0,
-  0xbba1, 0x07b6,
-  0xbba4, 0x1f4a,
-  0xbba5, 0x07ba,
-  0xbba6, 0x1f4b,
-  0xbba7, 0x07bc,
-  0xbba9, 0x1f4c,
-  0xbbab, 0x07c0,
-  0xbbad, 0x1f4e,
-  0xbbaf, 0x07c4,
-  0xbbb0, 0x1f50,
-  0xbbb1, 0x07c6,
-  0xbbb3, 0x1f51,
-  0xbbb4, 0x07c9,
-  0xbbb5, 0x1f52,
-  0xbbb8, 0x07cd,
-  0xbbb9, 0x1f55,
-  0xbbbb, 0x07d0,
-  0xbbd1, 0x1f57,
-  0xbbd2, 0x07e7,
-  0xbbd3, 0x1f58,
-  0xbbd5, 0x07ea,
-  0xbbdf, 0x1f5a,
-  0xbbe8, 0x07fd,
-  0xbbeb, 0x1f63,
-  0xbbec, 0x0801,
-  0xbbf1, 0x1f64,
-  0xbbf2, 0x0807,
-  0xbbf5, 0x1f65,
-  0xbbf8, 0x080d,
-  0xbbfa, 0x1f68,
-  0xbbfb, 0x0810,
-  0xbbfd, 0x1f69,
-  0xbbfe, 0x0813,
-  0xbca1, 0x0814,
-  0xbca2, 0x1f6a,
-  0xbca3, 0x0816,
-  0xbca5, 0x1f6b,
-  0xbca7, 0x081a,
-  0xbca8, 0x1f6d,
-  0xbcaa, 0x081d,
-  0xbcab, 0x1f6f,
-  0xbcac, 0x081f,
-  0xbcad, 0x1f70,
-  0xbcae, 0x0821,
-  0xbcb6, 0x1f71,
-  0xbcb9, 0x082c,
-  0xbcbb, 0x1f74,
-  0xbcbc, 0x082f,
-  0xbcc1, 0x1f75,
-  0xbcc2, 0x0835,
-  0xbcc3, 0x1f76,
-  0xbcc4, 0x0837,
-  0xbcc6, 0x1f77,
-  0xbcc8, 0x083b,
-  0xbcca, 0x1f79,
-  0xbccb, 0x083e,
-  0xbccc, 0x1f7a,
-  0xbcce, 0x0841,
-  0xbcd0, 0x1f7c,
-  0xbcd1, 0x0844,
-  0xbcd4, 0x1f7d,
-  0xbcd7, 0x084a,
-  0xbcd8, 0x1f80,
-  0xbcd9, 0x084c,
-  0xbcdb, 0x1f81,
-  0xbcdc, 0x084f,
-  0xbcdd, 0x1f82,
-  0xbcde, 0x0851,
-  0xbcdf, 0x1f83,
-  0xbce2, 0x0855,
-  0xbce3, 0x1f86,
-  0xbce5, 0x0858,
-  0xbce8, 0x1f88,
-  0xbce9, 0x085c,
-  0xbcea, 0x1f89,
-  0xbced, 0x0860,
-  0xbcef, 0x1f8c,
-  0xbcf4, 0x0867,
-  0xbcf6, 0x1f91,
-  0xbcfd, 0x0870,
-  0xbda1, 0x0872,
-  0xbda2, 0x1f98,
-  0xbda8, 0x0879,
-  0xbdab, 0x1f9e,
-  0xbdad, 0x087e,
-  0xbdaf, 0x1fa0,
-  0xbdb3, 0x0884,
-  0xbdb4, 0x1fa4,
-  0xbdb5, 0x0886,
-  0xbdba, 0x1fa5,
-  0xbdbb, 0x088c,
-  0xbdbd, 0x1fa6,
-  0xbdc0, 0x0891,
-  0xbdc1, 0x1fa9,
-  0xbdc5, 0x0896,
-  0xbdc8, 0x1fad,
-  0xbdcb, 0x089c,
-  0xbdce, 0x1fb0,
-  0xbdd0, 0x08a1,
-  0xbdd7, 0x1fb2,
-  0xbdd8, 0x08a9,
-  0xbdda, 0x1fb3,
-  0xbddb, 0x08ac,
-  0xbde0, 0x1fb4,
-  0xbde2, 0x08b3,
-  0xbdeb, 0x1fb6,
-  0xbdec, 0x08bd,
-  0xbdf4, 0x1fb7,
-  0xbdf9, 0x08ca,
-  0xbdfd, 0x1fbc,
-  0xbdfe, 0x08cf,
-  0xbea1, 0x1fbd,
-  0xbea3, 0x08d2,
-  0xbea5, 0x1fbf,
-  0xbea6, 0x08d5,
-  0xbea8, 0x1fc0,
-  0xbea9, 0x08d8,
-  0xbeaa, 0x1fc1,
-  0xbeab, 0x08da,
-  0xbead, 0x1fc2,
-  0xbeae, 0x08dd,
-  0xbeb1, 0x1fc3,
-  0xbeb2, 0x08e1,
-  0xbeb5, 0x1fc4,
-  0xbeb8, 0x08e7,
-  0xbeba, 0x1fc7,
-  0xbebb, 0x08ea,
-  0xbec0, 0x1fc8,
-  0xbec1, 0x08f0,
-  0xbec9, 0x1fc9,
-  0xbeca, 0x08f9,
-  0xbed4, 0x1fca,
-  0xbed5, 0x0904,
-  0xbed9, 0x1fcb,
-  0xbeda, 0x0909,
-  0xbedd, 0x1fcc,
-  0xbede, 0x090d,
-  0xbee2, 0x1fcd,
-  0xbee3, 0x0912,
-  0xbee5, 0x1fce,
-  0xbee6, 0x0915,
-  0xbee7, 0x1fcf,
-  0xbee8, 0x0917,
-  0xbee9, 0x1fd0,
-  0xbeea, 0x0919,
-  0xbeee, 0x1fd1,
-  0xbeef, 0x091e,
-  0xbef5, 0x1fd2,
-  0xbef6, 0x0925,
-  0xbef7, 0x1fd3,
-  0xbef9, 0x0928,
-  0xbefb, 0x1fd5,
-  0xbefd, 0x092c,
-  0xbfa1, 0x092e,
-  0xbfa5, 0x1fd7,
-  0xbfa6, 0x0933,
-  0xbfaa, 0x1fd8,
-  0xbfab, 0x0938,
-  0xbfad, 0x1fd9,
-  0xbfae, 0x093b,
-  0xbfc5, 0x1fda,
-  0xbfc6, 0x0953,
-  0xbfc7, 0x1fdb,
-  0xbfc8, 0x0955,
-  0xbfce, 0x1fdc,
-  0xbfcf, 0x095c,
-  0xbfd1, 0x1fdd,
-  0xbfd3, 0x0960,
-  0xbfd9, 0x1fdf,
-  0xbfda, 0x0967,
-  0xbfe2, 0x1fe0,
-  0xbfe5, 0x0972,
-  0xbfe9, 0x1fe3,
-  0xbfea, 0x0977,
-  0xbfeb, 0x1fe4,
-  0xbfec, 0x0979,
-  0xbfed, 0x1fe5,
-  0xbfee, 0x097b,
-  0xbff3, 0x1fe6,
-  0xbff4, 0x0981,
-  0xbff5, 0x1fe7,
-  0xbff6, 0x0983,
-  0xbff7, 0x1fe8,
-  0xbff8, 0x0985,
-  0xbff9, 0x1fe9,
-  0xbffb, 0x0988,
-  0xc0a1, 0x1feb,
-  0xc0a2, 0x098d,
-  0xc0a3, 0x1fec,
-  0xc0a4, 0x098f,
-  0xc0a9, 0x1fed,
-  0xc0aa, 0x0995,
-  0xc0ab, 0x1fee,
-  0xc0ac, 0x0997,
-  0xc0af, 0x1fef,
-  0xc0b1, 0x099c,
-  0xc0b3, 0x1ff1,
-  0xc0b7, 0x09a2,
-  0xc0b8, 0x1ff5,
-  0xc0c5, 0x09b0,
-  0xc0cc, 0x2002,
-  0xc0ce, 0x09b9,
-  0xc0d4, 0x2004,
-  0xc0d5, 0x09c0,
-  0xc0d6, 0x2005,
-  0xc0d7, 0x09c2,
-  0xc0d8, 0x2006,
-  0xc0d9, 0x09c4,
-  0xc0dd, 0x2007,
-  0xc0de, 0x09c9,
-  0xc0e0, 0x2008,
-  0xc0e1, 0x09cc,
-  0xc0e9, 0x2009,
-  0xc0ea, 0x09d5,
-  0xc0eb, 0x200a,
-  0xc0ed, 0x09d8,
-  0xc0ef, 0x200c,
-  0xc0f2, 0x09dd,
-  0xc0f6, 0x200f,
-  0xc0fb, 0x09e6,
-  0xc1a1, 0x09ea,
-  0xc1a4, 0x2014,
-  0xc1a6, 0x09ef,
-  0xc1a9, 0x2016,
-  0xc1ae, 0x09f7,
-  0xc1af, 0x201b,
-  0xc1b9, 0x0a02,
-  0xc1bd, 0x2025,
-  0xc1bf, 0x0a08,
-  0xc1c2, 0x2027,
-  0xc1c3, 0x0a0c,
-  0xc1c6, 0x2028,
-  0xc1c7, 0x0a10,
-  0xc1c9, 0x2029,
-  0xc1ca, 0x0a13,
-  0xc1cd, 0x202a,
-  0xc1ce, 0x0a17,
-  0xc1d4, 0x202b,
-  0xc1d5, 0x0a1e,
-  0xc1d9, 0x202c,
-  0xc1dc, 0x0a25,
-  0xc1de, 0x202f,
-  0xc1df, 0x0a28,
-  0xc1e4, 0x2030,
-  0xc1e6, 0x0a2f,
-  0xc1e9, 0x2032,
-  0xc1ea, 0x0a33,
-  0xc1eb, 0x2033,
-  0xc1ed, 0x0a36,
-  0xc1f3, 0x2035,
-  0xc1f4, 0x0a3d,
-  0xc1f5, 0x2036,
-  0xc1f6, 0x0a3f,
-  0xc1fa, 0x2037,
-  0xc1fe, 0x0a47,
-  0xc2a1, 0x0a48,
-  0xc2a2, 0x203b,
-  0xc2a9, 0x0a50,
-  0xc2ab, 0x2042,
-  0xc2b4, 0x0a5b,
-  0xc2b8, 0x204b,
-  0xc2b9, 0x0a60,
-  0xc2bc, 0x204c,
-  0xc2be, 0x0a65,
-  0xc2bf, 0x204e,
-  0xc2c0, 0x0a67,
-  0xc2c1, 0x204f,
-  0xc2c2, 0x0a69,
-  0xc2c5, 0x2050,
-  0xc2c8, 0x0a6f,
-  0xc2cb, 0x2053,
-  0xc2d1, 0x0a78,
-  0xc2d2, 0x2059,
-  0xc2d3, 0x0a7a,
-  0xc2d5, 0x205a,
-  0xc2dd, 0x0a84,
-  0xc2de, 0x2062,
-  0xc2e3, 0x0a8a,
-  0xc2e6, 0x2067,
-  0xc2e9, 0x0a90,
-  0xc2ea, 0x206a,
-  0xc2ef, 0x0a96,
-  0xc2f0, 0x206f,
-  0xc2f1, 0x0a98,
-  0xc2f2, 0x2070,
-  0xc2f6, 0x0a9d,
-  0xc2f7, 0x2074,
-  0xc2fb, 0x0aa2,
-  0xc3a1, 0x2078,
-  0xc3a2, 0x0aa7,
-  0xc3aa, 0x2079,
-  0xc3ab, 0x0ab0,
-  0xc3ad, 0x207a,
-  0xc3ae, 0x0ab3,
-  0xc3b3, 0x207b,
-  0xc3b4, 0x1df9,
-  0xc3b5, 0x0aba,
-  0xc3be, 0x207c,
-  0xc3bf, 0x0ac4,
-  0xc3c5, 0x207d,
-  0xc3c8, 0x0acd,
-  0xc3cc, 0x2080,
-  0xc3cd, 0x0ad2,
-  0xc3ce, 0x2081,
-  0xc3cf, 0x0ad4,
-  0xc3d5, 0x2082,
-  0xc3d7, 0x0adc,
-  0xc3d9, 0x2084,
-  0xc3da, 0x0adf,
-  0xc3e0, 0x2085,
-  0xc3e1, 0x0ae6,
-  0xc3e5, 0x2086,
-  0xc3e6, 0x0aeb,
-  0xc3ed, 0x2087,
-  0xc3ee, 0x0af3,
-  0xc3f0, 0x2088,
-  0xc3f1, 0x0af6,
-  0xc3f5, 0x2089,
-  0xc3f7, 0x0afc,
-  0xc3f9, 0x208b,
-  0xc3fb, 0x0b00,
-  0xc3fd, 0x208d,
-  0xc3fe, 0x0b03,
-  0xc4a1, 0x0b04,
-  0xc4b1, 0x208e,
-  0xc4b2, 0x0b15,
-  0xc4b6, 0x208f,
-  0xc4b7, 0x0b1a,
-  0xc4c6, 0x2090,
-  0xc4c7, 0x0b2a,
-  0xc4c9, 0x2091,
-  0xc4ca, 0x0b2d,
-  0xc4d1, 0x2092,
-  0xc4d2, 0x0b35,
-  0xc4d3, 0x2093,
-  0xc4d7, 0x0b3a,
-  0xc4d9, 0x2097,
-  0xc4da, 0x0b3d,
-  0xc4e2, 0x2098,
-  0xc4e3, 0x0b46,
-  0xc4e5, 0x2099,
-  0xc4e6, 0x0b49,
-  0xc4ec, 0x209a,
-  0xc4ed, 0x0b50,
-  0xc4f0, 0x209b,
-  0xc4f2, 0x0b55,
-  0xc4f4, 0x209d,
-  0xc4f5, 0x0b58,
-  0xc4f6, 0x209e,
-  0xc4f9, 0x0b5c,
-  0xc4fb, 0x20a1,
-  0xc4fd, 0x0b60,
-  0xc4fe, 0x20a3,
-  0xc5a1, 0x20a4,
-  0xc5a3, 0x0b64,
-  0xc5a5, 0x20a6,
-  0xc5aa, 0x0b6b,
-  0xc5b1, 0x20ab,
-  0xc5b2, 0x0b73,
-  0xc5b5, 0x20ac,
-  0xc5b6, 0x0b77,
-  0xc5b7, 0x20ad,
-  0xc5ba, 0x0b7b,
-  0xc5bb, 0x20b0,
-  0xc5bc, 0x0b7d,
-  0xc5bd, 0x20b1,
-  0xc5be, 0x0b7f,
-  0xc5cc, 0x20b2,
-  0xc5cd, 0x0b8e,
-  0xc5d3, 0x20b3,
-  0xc5d4, 0x0b95,
-  0xc5e2, 0x20b4,
-  0xc5e3, 0x0ba4,
-  0xc5e7, 0x20b5,
-  0xc5e8, 0x0ba9,
-  0xc5f4, 0x20b6,
-  0xc5f5, 0x0bb6,
-  0xc6a1, 0x0bc0,
-  0xc6ad, 0x20b7,
-  0xc6af, 0x0bce,
-  0xc6b5, 0x20b9,
-  0xc6b7, 0x0bd6,
-  0xc6bb, 0x20bb,
-  0xc6bc, 0x0bdb,
-  0xc6be, 0x20bc,
-  0xc6bf, 0x0bde,
-  0xc6c0, 0x20bd,
-  0xc6c1, 0x0be0,
-  0xc6c3, 0x20be,
-  0xc6c5, 0x0be4,
-  0xc6cb, 0x20c0,
-  0xc6ce, 0x0bed,
-  0xc6d3, 0x20c3,
-  0xc6d4, 0x0bf3,
-  0xc6d7, 0x20c4,
-  0xc6d8, 0x0bf7,
-  0xc6ea, 0x20c5,
-  0xc6ec, 0x0c0b,
-  0xc6ef, 0x20c7,
-  0xc6f0, 0x0c0f,
-  0xc6f1, 0x20c8,
-  0xc6f2, 0x0c11,
-  0xc6f4, 0x20c9,
-  0xc6f5, 0x0c14,
-  0xc6f8, 0x20ca,
-  0xc6f9, 0x0c18,
-  0xc6fd, 0x20cb,
-  0xc6fe, 0x0c1d,
-  0xc7a1, 0x0c1e,
-  0xc7a3, 0x20cc,
-  0xc7a4, 0x0c21,
-  0xc7a5, 0x20cd,
-  0xc7a7, 0x0c24,
-  0xc7a8, 0x20cf,
-  0xc7aa, 0x0c27,
-  0xc7ab, 0x20d1,
-  0xc7ac, 0x0c29,
-  0xc7ae, 0x20d2,
-  0xc7b0, 0x0c2d,
-  0xc7b3, 0x20d4,
-  0xc7b6, 0x0c33,
-  0xc7b9, 0x20d7,
-  0xc7bb, 0x0c38,
-  0xc7bd, 0x20d9,
-  0xc7bf, 0x0c3c,
-  0xc7c0, 0x20db,
-  0xc7c1, 0x0c3e,
-  0xc7c2, 0x20dc,
-  0xc7c3, 0x0c40,
-  0xc7c5, 0x20dd,
-  0xc7c6, 0x0c43,
-  0xc7c7, 0x20de,
-  0xc7c9, 0x0c46,
-  0xc7cc, 0x20e0,
-  0xc7cd, 0x0c4a,
-  0xc7cf, 0x20e1,
-  0xc7d0, 0x0c4d,
-  0xc7d4, 0x20e2,
-  0xc7d6, 0x0c53,
-  0xc7d7, 0x20e4,
-  0xc7d8, 0x0c55,
-  0xc7de, 0x20e5,
-  0xc7df, 0x0c5c,
-  0xc7e1, 0x20e6,
-  0xc7e4, 0x0c61,
-  0xc7ea, 0x20e9,
-  0xc7ef, 0x0c6c,
-  0xc7f7, 0x20ee,
-  0xc7f9, 0x0c76,
-  0xc7fb, 0x20f0,
-  0xc7fc, 0x0c79,
-  0xc7fd, 0x20f1,
-  0xc7fe, 0x0c7b,
-  0xc8a1, 0x0c7c,
-  0xc8a3, 0x20f2,
-  0xc8a4, 0x0c7f,
-  0xc8a7, 0x20f3,
-  0xc8a9, 0x0c84,
-  0xc8b0, 0x20f5,
-  0xc8b1, 0x0c8c,
-  0xc8b5, 0x20f6,
-  0xc8b6, 0x0c91,
-  0xc8b7, 0x20f7,
-  0xc8b8, 0x0c93,
-  0xc8c3, 0x20f8,
-  0xc8c7, 0x0ca2,
-  0xc8c8, 0x20fc,
-  0xc8c9, 0x0ca4,
-  0xc8cd, 0x20fd,
-  0xc8ce, 0x0ca9,
-  0xc8cf, 0x20fe,
-  0xc8d0, 0x0cab,
-  0xc8d2, 0x20ff,
-  0xc8d3, 0x0cae,
-  0xc8d9, 0x2100,
-  0xc8da, 0x0cb5,
-  0xc8de, 0x2101,
-  0xc8df, 0x0cba,
-  0xc8ed, 0x2102,
-  0xc8ee, 0x0cc9,
-  0xc8f1, 0x2103,
-  0xc8f4, 0x0ccf,
-  0xc8f7, 0x2106,
-  0xc8f9, 0x0cd4,
-  0xc8fa, 0x2108,
-  0xc8fb, 0x0cd6,
-  0xc8fc, 0x2109,
-  0xc8fd, 0x0cd8,
-  0xc9a1, 0x210a,
-  0xc9a2, 0x0cdb,
-  0xc9a5, 0x210b,
-  0xc9a6, 0x0cdf,
-  0xc9a7, 0x210c,
-  0xc9a9, 0x0ce2,
-  0xc9ac, 0x210e,
-  0xc9ad, 0x0ce6,
-  0xc9b1, 0x210f,
-  0xc9b2, 0x0ceb,
-  0xc9b4, 0x2110,
-  0xc9b5, 0x0cee,
-  0xc9b8, 0x2111,
-  0xc9ba, 0x0cf3,
-  0xc9c1, 0x2113,
-  0xc9c3, 0x0cfc,
-  0xc9c4, 0x2115,
-  0xc9c5, 0x0cfe,
-  0xc9c9, 0x2116,
-  0xc9ca, 0x0d03,
-  0xc9cb, 0x2117,
-  0xc9cc, 0x0d05,
-  0xc9cd, 0x2118,
-  0xc9ce, 0x0d07,
-  0xc9d5, 0x2119,
-  0xc9d6, 0x0d0f,
-  0xc9dc, 0x211a,
-  0xc9dd, 0x0d16,
-  0xc9de, 0x211b,
-  0xc9df, 0x0d18,
-  0xc9e1, 0x211c,
-  0xc9e2, 0x0d1b,
-  0xc9e3, 0x211d,
-  0xc9e4, 0x0d1d,
-  0xc9e5, 0x211e,
-  0xc9e6, 0x0d1f,
-  0xc9e8, 0x211f,
-  0xc9e9, 0x0d22,
-  0xc9f0, 0x2120,
-  0xc9f1, 0x0d2a,
-  0xc9f3, 0x2121,
-  0xc9f5, 0x0d2e,
-  0xc9f6, 0x2123,
-  0xc9f7, 0x0d30,
-  0xc9f8, 0x2124,
-  0xc9fa, 0x0d33,
-  0xc9fe, 0x2126,
-  0xcaa1, 0x0d38,
-  0xcaa4, 0x2127,
-  0xcaa7, 0x0d3e,
-  0xcaa8, 0x212a,
-  0xcaa9, 0x0d40,
-  0xcaaa, 0x212b,
-  0xcaac, 0x0d43,
-  0xcab1, 0x212d,
-  0xcab2, 0x0d49,
-  0xcab4, 0x212e,
-  0xcab7, 0x0d4e,
-  0xcabb, 0x2131,
-  0xcabc, 0x0d53,
-  0xcac6, 0x2132,
-  0xcac7, 0x0d5e,
-  0xcaca, 0x2133,
-  0xcacb, 0x0d62,
-  0xcacd, 0x2134,
-  0xcacf, 0x0d66,
-  0xcad3, 0x2136,
-  0xcad5, 0x0d6c,
-  0xcad9, 0x2138,
-  0xcada, 0x0d71,
-  0xcade, 0x2139,
-  0xcadf, 0x0d76,
-  0xcae0, 0x213a,
-  0xcae1, 0x0d78,
-  0xcae4, 0x213b,
-  0xcae5, 0x0d7c,
-  0xcae9, 0x213c,
-  0xcaeb, 0x0d82,
-  0xcaf4, 0x213e,
-  0xcaf6, 0x0d8d,
-  0xcaf7, 0x2140,
-  0xcaf8, 0x0d8f,
-  0xcafa, 0x2141,
-  0xcafb, 0x0d92,
-  0xcafd, 0x2142,
-  0xcafe, 0x0d95,
-  0xcba1, 0x0d96,
-  0xcba7, 0x2143,
-  0xcba8, 0x0d9d,
-  0xcbab, 0x2144,
-  0xcbac, 0x0da1,
-  0xcbad, 0x2145,
-  0xcbae, 0x0da3,
-  0xcbb3, 0x2146,
-  0xcbb4, 0x0da9,
-  0xcbb5, 0x2147,
-  0xcbb7, 0x0dac,
-  0xcbb8, 0x2149,
-  0xcbb9, 0x0dae,
-  0xcbbf, 0x214a,
-  0xcbc0, 0x0db5,
-  0xcbc7, 0x214b,
-  0xcbc8, 0x0dbd,
-  0xcbc9, 0x214c,
-  0xcbcd, 0x0dc2,
-  0xcbcf, 0x2150,
-  0xcbd1, 0x0dc6,
-  0xcbd3, 0x2152,
-  0xcbd4, 0x0dc9,
-  0xcbd5, 0x2153,
-  0xcbd6, 0x0dcb,
-  0xcbdf, 0x2154,
-  0xcbe1, 0x0dd6,
-  0xcbe4, 0x2156,
-  0xcbe5, 0x0dda,
-  0xcbe6, 0x2157,
-  0xcbe8, 0x0ddd,
-  0xcbea, 0x2159,
-  0xcbeb, 0x0de0,
-  0xcbef, 0x215a,
-  0xcbf1, 0x0de6,
-  0xcbf5, 0x215c,
-  0xcbf7, 0x0dec,
-  0xcbf8, 0x215e,
-  0xcbf9, 0x0dee,
-  0xcca1, 0x215f,
-  0xcca3, 0x0df6,
-  0xcca8, 0x2161,
-  0xcca9, 0x0dfc,
-  0xccac, 0x2162,
-  0xccad, 0x0e00,
-  0xccaf, 0x2163,
-  0xccb4, 0x0e07,
-  0xccb7, 0x2168,
-  0xccb9, 0x0e0c,
-  0xccbe, 0x216a,
-  0xccbf, 0x0e12,
-  0xccc0, 0x216b,
-  0xccc1, 0x0e14,
-  0xcccc, 0x216c,
-  0xcccd, 0x0e20,
-  0xccce, 0x216d,
-  0xcccf, 0x0e22,
-  0xccd0, 0x216e,
-  0xccd1, 0x0e24,
-  0xccd6, 0x216f,
-  0xccd7, 0x0e2a,
-  0xccda, 0x2170,
-  0xccdb, 0x0e2e,
-  0xccdc, 0x2171,
-  0xccdd, 0x0e30,
-  0xcce0, 0x2172,
-  0xcce1, 0x0e34,
-  0xcce2, 0x2173,
-  0xcce3, 0x0e36,
-  0xcce5, 0x2174,
-  0xcce6, 0x0e39,
-  0xccf5, 0x2175,
-  0xccf6, 0x0e49,
-  0xccf9, 0x2176,
-  0xccfb, 0x0e4e,
-  0xccfc, 0x2178,
-  0xcda1, 0x0e52,
-  0xcdad, 0x217b,
-  0xcdae, 0x0e5f,
-  0xcdb3, 0x217c,
-  0xcdb4, 0x0e65,
-  0xcdb7, 0x217d,
-  0xcdb8, 0x0e69,
-  0xcdbc, 0x217e,
-  0xcdbd, 0x0e6e,
-  0xcdbf, 0x217f,
-  0xcdc0, 0x0e71,
-  0xcdc5, 0x2180,
-  0xcdc6, 0x0e77,
-  0xcdc7, 0x2181,
-  0xcdc8, 0x0e79,
-  0xcdd2, 0x2182,
-  0xcdd3, 0x0e84,
-  0xcdd4, 0x2183,
-  0xcdd7, 0x0e88,
-  0xcddd, 0x2186,
-  0xcdde, 0x0e8f,
-  0xcde0, 0x2187,
-  0xcde1, 0x0e92,
-  0xcde4, 0x2188,
-  0xcde6, 0x0e97,
-  0xcde7, 0x218a,
-  0xcde8, 0x0e99,
-  0xcdf2, 0x218b,
-  0xcdf3, 0x0ea4,
-  0xcdf8, 0x218c,
-  0xcdf9, 0x0eaa,
-  0xcea1, 0x0eb0,
-  0xcea4, 0x218d,
-  0xcea6, 0x0eb5,
-  0xcea7, 0x218f,
-  0xcea8, 0x0eb7,
-  0xceaa, 0x2190,
-  0xceae, 0x0ebd,
-  0xceb0, 0x2194,
-  0xceb2, 0x0ec1,
-  0xceb3, 0x2196,
-  0xceb4, 0x0ec3,
-  0xcebd, 0x2197,
-  0xcebe, 0x0ecd,
-  0xcec0, 0x2198,
-  0xcec1, 0x0ed0,
-  0xcec5, 0x2199,
-  0xcec7, 0x0ed6,
-  0xcec8, 0x219b,
-  0xcec9, 0x0ed8,
-  0xceca, 0x219c,
-  0xcecb, 0x0eda,
-  0xcece, 0x219d,
-  0xced2, 0x0ee1,
-  0xced8, 0x21a1,
-  0xcedb, 0x0eea,
-  0xcedc, 0x21a4,
-  0xcedd, 0x0eec,
-  0xcede, 0x21a5,
-  0xcee0, 0x0eef,
-  0xceeb, 0x21a7,
-  0xceec, 0x0efb,
-  0xceed, 0x21a8,
-  0xceee, 0x0efd,
-  0xcef1, 0x21a9,
-  0xcef2, 0x0f01,
-  0xcef3, 0x21aa,
-  0xcef4, 0x0f03,
-  0xcefd, 0x21ab,
-  0xcfa1, 0x0f0e,
-  0xcfae, 0x21ad,
-  0xcfaf, 0x0f1c,
-  0xcfb0, 0x21ae,
-  0xcfb1, 0x0f1e,
-  0xcfb3, 0x21af,
-  0xcfb4, 0x0f21,
-  0xcfb7, 0x21b0,
-  0xcfb9, 0x0f26,
-  0xcfba, 0x21b2,
-  0xcfbb, 0x0f28,
-  0xcfbd, 0x21b3,
-  0xcfbe, 0x0f2b,
-  0xcfbf, 0x21b4,
-  0xcfc2, 0x0f2f,
-  0xcfc5, 0x21b7,
-  0xcfc6, 0x0f33,
-  0xcfc7, 0x21b8,
-  0xcfc8, 0x0f35,
-  0xcfca, 0x21b9,
-  0xcfcc, 0x0f39,
-  0xcfcd, 0x21bb,
-  0xcfcf, 0x0f3c,
-  0xcfd0, 0x21bd,
-  0xcfd1, 0x0f3e,
-  0xcfd4, 0x21be,
-  0xcfd9, 0x0f46,
-  0xcfda, 0x21c3,
-  0xcfdb, 0x0f48,
-  0xcfdc, 0x21c4,
-  0xcfdd, 0x0f4a,
-  0xcfdf, 0x21c5,
-  0xcfe0, 0x0f4d,
-  0xcfe2, 0x21c6,
-  0xcfe3, 0x0f50,
-  0xcfe7, 0x21c7,
-  0xcfe8, 0x0f55,
-  0xcfea, 0x21c8,
-  0xcfeb, 0x0f58,
-  0xcfec, 0x21c9,
-  0xcfed, 0x0f5a,
-  0xcfee, 0x21ca,
-  0xcfef, 0x0f5c,
-  0xcff4, 0x21cb,
-  0xcff5, 0x0f62,
-  0xcff9, 0x21cc,
-  0xcffb, 0x0f68,
-  0xcffe, 0x21ce,
-  0xd0a1, 0x0f6c,
-  0xd0a5, 0x21cf,
-  0xd0a6, 0x0f71,
-  0xd0ad, 0x21d0,
-  0xd0af, 0x0f7a,
-  0xd0b2, 0x21d2,
-  0xd0b5, 0x0f80,
-  0xd0ba, 0x21d5,
-  0xd0bc, 0x0f87,
-  0xd0bf, 0x21d7,
-  0xd0c0, 0x0f8b,
-  0xd0c6, 0x21d8,
-  0xd0c7, 0x0f92,
-  0xd0cb, 0x21d9,
-  0xd0cc, 0x0f97,
-  0xd0e2, 0x21da,
-  0xd0e3, 0x0fae,
-  0xd0e5, 0x21db,
-  0xd0e6, 0x0fb1,
-  0xd0eb, 0x21dc,
-  0xd0ec, 0x0fb7,
-  0xd0ed, 0x21dd,
-  0xd0ee, 0x0fb9,
-  0xd0f7, 0x21de,
-  0xd0fa, 0x0fc5,
-  0xd0fc, 0x21e1,
-  0xd0fd, 0x0fc8,
-  0xd1a1, 0x21e2,
-  0xd1a3, 0x0fcc,
-  0xd1a4, 0x21e4,
-  0xd1a5, 0x0fce,
-  0xd1a7, 0x21e5,
-  0xd1a8, 0x0fd1,
-  0xd1ab, 0x21e6,
-  0xd1ac, 0x0fd5,
-  0xd1af, 0x21e7,
-  0xd1b2, 0x0fdb,
-  0xd1b5, 0x21ea,
-  0xd1b8, 0x0fe1,
-  0xd1b9, 0x21ed,
-  0xd1ba, 0x0fe3,
-  0xd1bb, 0x21ee,
-  0xd1bd, 0x0fe6,
-  0xd1c6, 0x21f0,
-  0xd1c9, 0x0ff2,
-  0xd1cb, 0x21f3,
-  0xd1cc, 0x0ff5,
-  0xd1ce, 0x21f4,
-  0xd1d0, 0x0ff9,
-  0xd1d5, 0x21f6,
-  0xd1d7, 0x1000,
-  0xd1de, 0x21f8,
-  0xd1df, 0x1008,
-  0xd1e1, 0x21f9,
-  0xd1e3, 0x100c,
-  0xd1e8, 0x21fb,
-  0xd1ea, 0x1013,
-  0xd1ec, 0x21fd,
-  0xd1ed, 0x1016,
-  0xd1ee, 0x21fe,
-  0xd1f0, 0x1019,
-  0xd1f1, 0x2200,
-  0xd1f2, 0x101b,
-  0xd1f4, 0x2201,
-  0xd1f5, 0x101e,
-  0xd1f7, 0x2202,
-  0xd1fa, 0x1023,
-  0xd2a1, 0x1028,
-  0xd2a2, 0x2205,
-  0xd2a3, 0x102a,
-  0xd2a5, 0x2206,
-  0xd2a6, 0x102d,
-  0xd2a9, 0x2207,
-  0xd2aa, 0x1031,
-  0xd2af, 0x2208,
-  0xd2b0, 0x1037,
-  0xd2b3, 0x2209,
-  0xd2b4, 0x103b,
-  0xd2b5, 0x220a,
-  0xd2b7, 0x103e,
-  0xd2bd, 0x220c,
-  0xd2be, 0x1045,
-  0xd2bf, 0x220d,
-  0xd2c0, 0x1047,
-  0xd2c3, 0x220e,
-  0xd2c4, 0x104b,
-  0xd2c5, 0x220f,
-  0xd2c6, 0x104d,
-  0xd2c7, 0x2210,
-  0xd2c8, 0x104f,
-  0xd2cf, 0x2211,
-  0xd2d0, 0x1057,
-  0xd2d5, 0x2212,
-  0xd2d6, 0x105d,
-  0xd2da, 0x2213,
-  0xd2db, 0x1062,
-  0xd2e4, 0x2214,
-  0xd2e6, 0x106d,
-  0xd2e8, 0x2216,
-  0xd2ec, 0x1073,
-  0xd2ef, 0x221a,
-  0xd2f0, 0x1077,
-  0xd2f1, 0x221b,
-  0xd2f2, 0x1079,
-  0xd2f5, 0x221c,
-  0xd2f6, 0x107d,
-  0xd2f8, 0x221d,
-  0xd2f9, 0x1080,
-  0xd2fb, 0x221e,
-  0xd2fc, 0x1083,
-  0xd2fe, 0x221f,
-  0xd3a1, 0x1086,
-  0xd3a3, 0x2220,
-  0xd3ad, 0x1092,
-  0xd3ae, 0x222a,
-  0xd3af, 0x1094,
-  0xd3b1, 0x222b,
-  0xd3b2, 0x1097,
-  0xd3b4, 0x222c,
-  0xd3b7, 0x109c,
-  0xd3b8, 0x222f,
-  0xd3b9, 0x109e,
-  0xd3bb, 0x2230,
-  0xd3bc, 0x10a1,
-  0xd3c5, 0x2231,
-  0xd3c6, 0x10ab,
-  0xd3c7, 0x2232,
-  0xd3c8, 0x10ad,
-  0xd3ca, 0x2233,
-  0xd3cd, 0x10b2,
-  0xd3d5, 0x2236,
-  0xd3d6, 0x10bb,
-  0xd3df, 0x2237,
-  0xd3e1, 0x10c6,
-  0xd3e3, 0x2239,
-  0xd3e4, 0x10c9,
-  0xd3e6, 0x223a,
-  0xd3e7, 0x10cc,
-  0xd3eb, 0x223b,
-  0xd3ed, 0x10d2,
-  0xd3ef, 0x223d,
-  0xd3f0, 0x10d5,
-  0xd3f4, 0x223e,
-  0xd3f5, 0x10da,
-  0xd3fc, 0x223f,
-  0xd3fd, 0x10e2,
-  0xd3fe, 0x2240,
-  0xd4a1, 0x10e4,
-  0xd4a4, 0x2241,
-  0xd4a5, 0x10e8,
-  0xd4a6, 0x2242,
-  0xd4a9, 0x10ec,
-  0xd4af, 0x2245,
-  0xd4b3, 0x10f6,
-  0xd4b5, 0x2249,
-  0xd4b7, 0x10fa,
-  0xd4b8, 0x224b,
-  0xd4b9, 0x10fc,
-  0xd4bc, 0x224c,
-  0xd4bd, 0x1100,
-  0xd4be, 0x224d,
-  0xd4c0, 0x1103,
-  0xd4c4, 0x224f,
-  0xd4c5, 0x1108,
-  0xd4c6, 0x2250,
-  0xd4c8, 0x110b,
-  0xd4c9, 0x2252,
-  0xd4ca, 0x110d,
-  0xd4cb, 0x2253,
-  0xd4cf, 0x1112,
-  0xd4d3, 0x2257,
-  0xd4d4, 0x1117,
-  0xd4d8, 0x2258,
-  0xd4d9, 0x111c,
-  0xd4dc, 0x2259,
-  0xd4e1, 0x1124,
-  0xd4e4, 0x225e,
-  0xd4e5, 0x1128,
-  0xd4e6, 0x225f,
-  0xd4e7, 0x112a,
-  0xd4ee, 0x2260,
-  0xd4ef, 0x1132,
-  0xd4f0, 0x2261,
-  0xd4f5, 0x1138,
-  0xd4f9, 0x2266,
-  0xd4fa, 0x113d,
-  0xd4fe, 0x2267,
-  0xd5a1, 0x2268,
-  0xd5a3, 0x1144,
-  0xd5a9, 0x226a,
-  0xd5aa, 0x114b,
-  0xd5ab, 0x226b,
-  0xd5ac, 0x114d,
-  0xd5ae, 0x226c,
-  0xd5af, 0x1150,
-  0xd5b1, 0x226d,
-  0xd5b2, 0x1153,
-  0xd5b5, 0x226e,
-  0xd5b9, 0x115a,
-  0xd5bb, 0x2272,
-  0xd5bc, 0x115d,
-  0xd5bd, 0x2273,
-  0xd5be, 0x115f,
-  0xd5c0, 0x2274,
-  0xd5c1, 0x1162,
-  0xd5c5, 0x2275,
-  0xd5c6, 0x1167,
-  0xd5c7, 0x2276,
-  0xd5c8, 0x1169,
-  0xd5ca, 0x2277,
-  0xd5cc, 0x116d,
-  0xd5cd, 0x2279,
-  0xd5ce, 0x116f,
-  0xd5d4, 0x227a,
-  0xd5d5, 0x1176,
-  0xd5dd, 0x227b,
-  0xd5df, 0x1180,
-  0xd5e0, 0x227d,
-  0xd5e1, 0x1182,
-  0xd5e2, 0x227e,
-  0xd5e3, 0x1184,
-  0xd5ea, 0x227f,
-  0xd5ed, 0x118e,
-  0xd5ef, 0x2282,
-  0xd5f0, 0x1191,
-  0xd5f2, 0x2283,
-  0xd5f4, 0x1195,
-  0xd5f7, 0x15eb,
-  0xd5f8, 0x1199,
-  0xd6a1, 0x2285,
-  0xd6a5, 0x11a4,
-  0xd6af, 0x2289,
-  0xd6b1, 0x11b0,
-  0xd6b4, 0x228b,
-  0xd6b5, 0x11b4,
-  0xd6bb, 0x228c,
-  0xd6bc, 0x11bb,
-  0xd6bd, 0x228d,
-  0xd6be, 0x11bd,
-  0xd6bf, 0x228e,
-  0xd6c1, 0x11c0,
-  0xd6c4, 0x2290,
-  0xd6c5, 0x11c4,
-  0xd6ca, 0x2291,
-  0xd6cb, 0x11ca,
-  0xd6cd, 0x2292,
-  0xd6ce, 0x11cd,
-  0xd6d3, 0x2293,
-  0xd6d4, 0x11d3,
-  0xd6d5, 0x2294,
-  0xd6d8, 0x11d7,
-  0xd6da, 0x2297,
-  0xd6db, 0x11da,
-  0xd6df, 0x2298,
-  0xd6e0, 0x11df,
-  0xd6e1, 0x2299,
-  0xd6e2, 0x11e1,
-  0xd6e5, 0x229a,
-  0xd6e6, 0x11e5,
-  0xd6e7, 0x229b,
-  0xd6e9, 0x11e8,
-  0xd6ee, 0x229d,
-  0xd6f0, 0x11ef,
-  0xd6f2, 0x229f,
-  0xd6f3, 0x11f2,
-  0xd6f5, 0x22a0,
-  0xd6f7, 0x11f6,
-  0xd6fc, 0x22a2,
-  0xd7a1, 0x11fe,
-  0xd7a4, 0x22a5,
-  0xd7a5, 0x1202,
-  0xd7a8, 0x22a6,
-  0xd7ab, 0x1208,
-  0xd7ac, 0x22a9,
-  0xd7ad, 0x120a,
-  0xd7ae, 0x22aa,
-  0xd7b2, 0x120f,
-  0xd7b3, 0x22ae,
-  0xd7b5, 0x1212,
-  0xd7b6, 0x22b0,
-  0xd7b7, 0x1214,
-  0xd7b8, 0x22b1,
-  0xd7bd, 0x121a,
-  0xd7c7, 0x22b6,
-  0xd7c8, 0x1225,
-  0xd7ca, 0x22b7,
-  0xd7cb, 0x1228,
-  0xd7d5, 0x22b8,
-  0xd7d6, 0x1233,
-  0xd7db, 0x22b9,
-  0xd7df, 0x123c,
-  0xd7e7, 0x22bd,
-  0xd7e8, 0x1245,
-  0xd7e9, 0x22be,
-  0xd7eb, 0x1248,
-  0xd8a1, 0x1257,
-  0xd8c4, 0x22c0,
-  0xd8c5, 0x127b,
-  0xd8c7, 0x22c1,
-  0xd8c8, 0x127e,
-  0xd8c9, 0x22c2,
-  0xd8ca, 0x1280,
-  0xd8cc, 0x22c3,
-  0xd8ce, 0x1284,
-  0xd8d0, 0x22c5,
-  0xd8d2, 0x1288,
-  0xd8d3, 0x22c7,
-  0xd8d4, 0x128a,
-  0xd8d9, 0x22c8,
-  0xd8da, 0x1290,
-  0xd8db, 0x22c9,
-  0xd8dd, 0x1293,
-  0xd8f1, 0x22cb,
-  0xd8f2, 0x12a8,
-  0xd8f6, 0x22cc,
-  0xd8f8, 0x12ae,
-  0xd9a1, 0x12b5,
-  0xd9ad, 0x22ce,
-  0xd9ae, 0x12c2,
-  0xd9af, 0x22cf,
-  0xd9b0, 0x12c4,
-  0xd9b1, 0x22d0,
-  0xd9b4, 0x12c8,
-  0xd9c7, 0x22d3,
-  0xd9c8, 0x12dc,
-  0xd9cd, 0x22d4,
-  0xd9d1, 0x12e5,
-  0xd9dd, 0x22d8,
-  0xd9de, 0x12f2,
-  0xd9e1, 0x22d9,
-  0xd9e2, 0x12f6,
-  0xd9e4, 0x22da,
-  0xd9e5, 0x12f9,
-  0xd9e6, 0x22db,
-  0xd9e7, 0x12fb,
-  0xd9ec, 0x22dc,
-  0xd9ed, 0x1301,
-  0xd9f4, 0x22dd,
-  0xd9f6, 0x130a,
-  0xdaa1, 0x1313,
-  0xdaa5, 0x22df,
-  0xdae0, 0x1352,
-  0xdaea, 0x231a,
-  0xdaeb, 0x135d,
-  0xdaf7, 0x231b,
-  0xdaf8, 0x136a,
-  0xdaf9, 0x231c,
-  0xdafa, 0x136c,
-  0xdafe, 0x231d,
-  0xdba1, 0x1371,
-  0xdba3, 0x231e,
-  0xdba4, 0x1374,
-  0xdba6, 0x231f,
-  0xdba7, 0x1377,
-  0xdba9, 0x2320,
-  0xdbab, 0x137b,
-  0xdbbb, 0x2322,
-  0xdbbc, 0x138c,
-  0xdbbd, 0x2323,
-  0xdbbe, 0x138e,
-  0xdbcf, 0x2324,
-  0xdbd0, 0x13a0,
-  0xdbd1, 0x2325,
-  0xdbd2, 0x13a2,
-  0xdbdb, 0x2326,
-  0xdbdc, 0x13ac,
-  0xdbde, 0x2327,
-  0xdbdf, 0x13af,
-  0xdbe2, 0x2328,
-  0xdbe3, 0x13b3,
-  0xdbe4, 0x2329,
-  0xdbe5, 0x13b5,
-  0xdbeb, 0x232a,
-  0xdbec, 0x13bc,
-  0xdbee, 0x232b,
-  0xdbef, 0x13bf,
-  0xdbf1, 0x232c,
-  0xdbf2, 0x13c2,
-  0xdbf5, 0x232d,
-  0xdbf8, 0x13c8,
-  0xdca1, 0x13cf,
-  0xdcbc, 0x2330,
-  0xdcbd, 0x13eb,
-  0xdcbf, 0x2331,
-  0xdcc0, 0x13ee,
-  0xdcc2, 0x2332,
-  0xdcc3, 0x13f1,
-  0xdcc8, 0x2333,
-  0xdccb, 0x13f9,
-  0xdcd1, 0x2336,
-  0xdcd2, 0x1400,
-  0xdcd7, 0x2337,
-  0xdcd8, 0x1406,
-  0xdce0, 0x2338,
-  0xdce1, 0x140f,
-  0xdce3, 0x2339,
-  0xdce5, 0x1413,
-  0xdce9, 0x233b,
-  0xdceb, 0x1419,
-  0xdcf1, 0x233d,
-  0xdcf2, 0x1420,
-  0xdcf6, 0x233e,
-  0xdcf7, 0x1425,
-  0xdcf9, 0x233f,
-  0xdcfa, 0x1428,
-  0xdcfd, 0x2340,
-  0xdda1, 0x2342,
-  0xdda2, 0x142e,
-  0xdda3, 0x2343,
-  0xdda8, 0x1434,
-  0xddaa, 0x2348,
-  0xddac, 0x1438,
-  0xddb2, 0x234a,
-  0xddb3, 0x143f,
-  0xddb5, 0x234b,
-  0xddb6, 0x1442,
-  0xddba, 0x234c,
-  0xddbc, 0x1448,
-  0xddd3, 0x234e,
-  0xddd4, 0x1460,
-  0xdddb, 0x234f,
-  0xdddc, 0x1468,
-  0xddde, 0x2350,
-  0xdddf, 0x146b,
-  0xdde4, 0x2351,
-  0xdde5, 0x1471,
-  0xddeb, 0x2352,
-  0xddec, 0x1478,
-  0xddf1, 0x2353,
-  0xddf2, 0x147e,
-  0xddf6, 0x2354,
-  0xddf8, 0x1484,
-  0xddfc, 0x2356,
-  0xddfd, 0x1489,
-  0xddfe, 0x2357,
-  0xdea1, 0x148b,
-  0xdead, 0x2358,
-  0xdeae, 0x1498,
-  0xdeb4, 0x2359,
-  0xdeb5, 0x149f,
-  0xdeba, 0x235a,
-  0xdebb, 0x14a5,
-  0xdec6, 0x235b,
-  0xdec7, 0x14b1,
-  0xdecf, 0x235c,
-  0xded0, 0x14ba,
-  0xded1, 0x235d,
-  0xded3, 0x14bd,
-  0xded8, 0x235f,
-  0xded9, 0x14c3,
-  0xdee2, 0x2360,
-  0xdee3, 0x14cd,
-  0xdee8, 0x2361,
-  0xdee9, 0x14d3,
-  0xdeec, 0x2362,
-  0xdeed, 0x14d7,
-  0xdef3, 0x2363,
-  0xdef4, 0x14de,
-  0xdefc, 0x2364,
-  0xdefd, 0x14e7,
-  0xdfa1, 0x14e9,
-  0xdfa2, 0x2365,
-  0xdfa4, 0x14ec,
-  0xdfa5, 0x2367,
-  0xdfa6, 0x14ee,
-  0xdfb4, 0x2368,
-  0xdfb5, 0x14fd,
-  0xdfbc, 0x2369,
-  0xdfbe, 0x1506,
-  0xdfbf, 0x236b,
-  0xdfc0, 0x1508,
-  0xdfc2, 0x236c,
-  0xdfc4, 0x150c,
-  0xdfcc, 0x236e,
-  0xdfcd, 0x1515,
-  0xdfd0, 0x236f,
-  0xdfd1, 0x1519,
-  0xdfd5, 0x2370,
-  0xdfd6, 0x151e,
-  0xdfd8, 0x2371,
-  0xdfda, 0x1522,
-  0xdfdc, 0x2373,
-  0xdfdd, 0x1525,
-  0xdfe0, 0x2374,
-  0xdfe1, 0x1529,
-  0xdfe2, 0x2375,
-  0xdfe3, 0x152b,
-  0xdfe6, 0x2376,
-  0xdfe7, 0x152f,
-  0xdfe9, 0x2377,
-  0xdfea, 0x1532,
-  0xdfeb, 0x2378,
-  0xdfec, 0x1534,
-  0xdfef, 0x2379,
-  0xdff0, 0x1538,
-  0xdff5, 0x237a,
-  0xdff6, 0x153e,
-  0xdff9, 0x237b,
-  0xdffa, 0x1542,
-  0xe0a1, 0x1547,
-  0xe0b6, 0x237c,
-  0xe0b8, 0x155e,
-  0xe0bf, 0x237e,
-  0xe0c0, 0x1566,
-  0xe0c8, 0x237f,
-  0xe0c9, 0x156f,
-  0xe0ce, 0x2380,
-  0xe0cf, 0x1575,
-  0xe0d3, 0x2381,
-  0xe0d4, 0x157a,
-  0xe0e0, 0x2382,
-  0xe0e1, 0x1587,
-  0xe0f0, 0x2383,
-  0xe0f1, 0x1597,
-  0xe0f8, 0x2384,
-  0xe0f9, 0x159f,
-  0xe0fc, 0x2385,
-  0xe1a1, 0x15a5,
-  0xe1ab, 0x2388,
-  0xe1ac, 0x15b0,
-  0xe1ad, 0x2389,
-  0xe1ae, 0x15b2,
-  0xe1b0, 0x238a,
-  0xe1b1, 0x15b5,
-  0xe1b4, 0x238b,
-  0xe1b5, 0x15b9,
-  0xe1bb, 0x238c,
-  0xe1bc, 0x15c0,
-  0xe1bd, 0x238d,
-  0xe1be, 0x15c2,
-  0xe1c0, 0x238e,
-  0xe1c2, 0x15c6,
-  0xe1c9, 0x2390,
-  0xe1ca, 0x15ce,
-  0xe1d0, 0x2391,
-  0xe1d1, 0x15d5,
-  0xe1db, 0x2392,
-  0xe1dc, 0x15e0,
-  0xe1e1, 0x07aa,
-  0xe1e2, 0x2393,
-  0xe1e3, 0x15e7,
-  0xe1e7, 0x1198,
-  0xe1e8, 0x15ec,
-  0xe1ee, 0x2394,
-  0xe1f0, 0x15f4,
-  0xe1f6, 0x2396,
-  0xe1f7, 0x15fb,
-  0xe1f8, 0x2397,
-  0xe1f9, 0x15fd,
-  0xe1fd, 0x2398,
-  0xe1fe, 0x1602,
-  0xe2a1, 0x1603,
-  0xe2a4, 0x2399,
-  0xe2a5, 0x1607,
-  0xe2a8, 0x239a,
-  0xe2a9, 0x160b,
-  0xe2bb, 0x239b,
-  0xe2c5, 0x10c5,
-  0xe2c6, 0x23a5,
-  0xe2cf, 0x1631,
-  0xe2d0, 0x23ae,
-  0xe2d1, 0x1633,
-  0xe2d9, 0x23af,
-  0xe2da, 0x163c,
-  0xe2e3, 0x23b0,
-  0xe2e5, 0x1647,
-  0xe2e6, 0x23b2,
-  0xe2e7, 0x1649,
-  0xe2e9, 0x23b3,
-  0xe2ec, 0x164e,
-  0xe2f8, 0x23b6,
-  0xe2f9, 0x165b,
-  0xe2fa, 0x23b7,
-  0xe2fe, 0x1660,
-  0xe3a1, 0x1661,
-  0xe3a2, 0x23bb,
-  0xe3a3, 0x1663,
-  0xe3a5, 0x23bc,
-  0xe3a6, 0x1666,
-  0xe3ab, 0x23bd,
-  0xe3ac, 0x166c,
-  0xe3b4, 0x23be,
-  0xe3b5, 0x1675,
-  0xe3c5, 0x23bf,
-  0xe3dc, 0x169c,
-  0xe3e3, 0x23d6,
-  0xe3e4, 0x16a4,
-  0xe3ed, 0x23d7,
-  0xe3ee, 0x16ae,
-  0xe3f1, 0x23d8,
-  0xe3f3, 0x16b3,
-  0xe3f8, 0x23da,
-  0xe3f9, 0x16b9,
-  0xe3fe, 0x23db,
-  0xe4a1, 0x16bf,
-  0xe4a4, 0x23dc,
-  0xe4a6, 0x16c4,
-  0xe4ab, 0x23de,
-  0xe4ac, 0x16ca,
-  0xe4af, 0x23df,
-  0xe4b2, 0x16d0,
-  0xe4b5, 0x23e2,
-  0xe4b7, 0x16d5,
-  0xe4c2, 0x23e4,
-  0xe4c3, 0x16e1,
-  0xe4c5, 0x23e5,
-  0xe4c6, 0x16e4,
-  0xe4c9, 0x23e6,
-  0xe4ca, 0x16e8,
-  0xe4d9, 0x23e7,
-  0xe4da, 0x16f8,
-  0xe4dc, 0x23e8,
-  0xe4dd, 0x16fb,
-  0xe4de, 0x23e9,
-  0xe4df, 0x16fd,
-  0xe4e4, 0x23ea,
-  0xe4e5, 0x1703,
-  0xe4eb, 0x23eb,
-  0xe4ed, 0x170b,
-  0xe4f2, 0x23ed,
-  0xe4f3, 0x1711,
-  0xe4fe, 0x23ee,
-  0xe5a1, 0x171d,
-  0xe5b0, 0x23ef,
-  0xe5b1, 0x172d,
-  0xe5b9, 0x23f0,
-  0xe5ba, 0x1736,
-  0xe5c7, 0x23f1,
-  0xe5c8, 0x1744,
-  0xe5c9, 0x23f2,
-  0xe5ca, 0x1746,
-  0xe5ce, 0x23f3,
-  0xe5cf, 0x174b,
-  0xe5f0, 0x23f4,
-  0xe5f1, 0x176d,
-  0xe5f2, 0x23f5,
-  0xe5f3, 0x176f,
-  0xe5fc, 0x23f6,
-  0xe5fe, 0x177a,
-  0xe6a1, 0x177b,
-  0xe6a3, 0x23f8,
-  0xe6a4, 0x177e,
-  0xe6ab, 0x23f9,
-  0xe6ad, 0x1787,
-  0xe6ae, 0x23fb,
-  0xe6af, 0x1789,
-  0xe6b4, 0x23fc,
-  0xe6b6, 0x1790,
-  0xe6bf, 0x23fe,
-  0xe6c0, 0x179a,
-  0xe6c8, 0x23ff,
-  0xe6ca, 0x17a4,
-  0xe6cd, 0x2401,
-  0xe6ce, 0x17a8,
-  0xe6e0, 0x2402,
-  0xe7a1, 0x2421,
-  0xe7db, 0x1813,
-  0xe7e1, 0x245b,
-  0xe7e3, 0x181b,
-  0xe7e7, 0x245d,
-  0xe7e8, 0x1820,
-  0xe7ef, 0x245e,
-  0xe7f0, 0x1828,
-  0xe7f4, 0x245f,
-  0xe7f7, 0x182f,
-  0xe8a1, 0x1837,
-  0xe8a8, 0x2462,
-  0xe8a9, 0x183f,
-  0xe8ac, 0x2463,
-  0xe8ad, 0x1843,
-  0xe8b6, 0x2464,
-  0xe8b7, 0x184d,
-  0xe8b8, 0x2465,
-  0xe8bb, 0x1851,
-  0xe8bf, 0x2468,
-  0xe8c1, 0x1857,
-  0xe8c5, 0x246a,
-  0xe8c6, 0x185c,
-  0xe8c7, 0x246b,
-  0xe8ca, 0x1860,
-  0xe8ce, 0x246e,
-  0xe8cf, 0x1865,
-  0xe8d0, 0x246f,
-  0xe8d1, 0x1867,
-  0xe8d3, 0x2470,
-  0xe8d4, 0x186a,
-  0xe8dd, 0x2471,
-  0xe8de, 0x1874,
-  0xe8df, 0x2472,
-  0xe8e0, 0x1876,
-  0xe8e2, 0x2473,
-  0xe8e4, 0x187a,
-  0xe8e5, 0x2475,
-  0xe8e6, 0x187c,
-  0xe8e7, 0x2476,
-  0xe8e8, 0x187e,
-  0xe8eb, 0x2477,
-  0xe8ec, 0x1882,
-  0xe8ed, 0x2478,
-  0xe8ee, 0x1884,
-  0xe8ef, 0x2479,
-  0xe8f0, 0x1886,
-  0xe8f9, 0x247a,
-  0xe8fa, 0x1890,
-  0xe8fc, 0x247b,
-  0xe8fe, 0x1894,
-  0xe9a1, 0x247d,
-  0xe9a2, 0x1896,
-  0xe9ad, 0x247e,
-  0xe9ae, 0x18a2,
-  0xe9b4, 0x247f,
-  0xe9b6, 0x18aa,
-  0xe9b7, 0x2481,
-  0xe9b8, 0x18ac,
-  0xe9c4, 0x2482,
-  0xe9c5, 0x18b9,
-  0xe9c6, 0x2483,
-  0xe9c7, 0x18bb,
-  0xe9c9, 0x2484,
-  0xe9ca, 0x18be,
-  0xe9d6, 0x2485,
-  0xe9d7, 0x18cb,
-  0xe9da, 0x2486,
-  0xe9db, 0x18cf,
-  0xe9e4, 0x2487,
-  0xe9e5, 0x18d9,
-  0xe9e6, 0x2488,
-  0xe9e8, 0x18dc,
-  0xe9e9, 0x248a,
-  0xe9ea, 0x18de,
-  0xe9eb, 0x248b,
-  0xe9ec, 0x18e0,
-  0xe9ed, 0x248c,
-  0xeaa1, 0x249e,
-  0xeaa6, 0x18f8,
-  0xeaa7, 0x24a3,
-  0xeaa9, 0x18fb,
-  0xeab1, 0x24a5,
-  0xeab2, 0x1904,
-  0xeabc, 0x24a6,
-  0xeabd, 0x190f,
-  0xeaca, 0x24a7,
-  0xeacb, 0x191d,
-  0xeacd, 0x24a8,
-  0xeace, 0x1920,
-  0xead3, 0x24a9,
-  0xead4, 0x1926,
-  0xeada, 0x24aa,
-  0xeaf0, 0x1942,
-  0xeba1, 0x1951,
-  0xeba7, 0x24c0,
-  0xeba8, 0x1958,
-  0xebaa, 0x24c1,
-  0xebab, 0x195b,
-  0xebb2, 0x24c2,
-  0xebb3, 0x1963,
-  0xebb9, 0x24c3,
-  0xebba, 0x196a,
-  0xebca, 0x24c4,
-  0xebcc, 0x197c,
-  0xebcd, 0x24c6,
-  0xebce, 0x197e,
-  0xebd6, 0x24c7,
-  0xebd7, 0x1987,
-  0xebda, 0x24c8,
-  0xebdb, 0x198b,
-  0xebe1, 0x24c9,
-  0xebe2, 0x1992,
-  0xebf7, 0x24ca,
-  0xebf8, 0x19a8,
-  0xeca1, 0x19af,
-  0xeca3, 0x24cb,
-  0xeca4, 0x19b2,
-  0xeca9, 0x24cc,
-  0xecaf, 0x19bd,
-  0xecb1, 0x24d2,
-  0xecb2, 0x19c0,
-  0xecb4, 0x24d3,
-  0xecb6, 0x19c4,
-  0xecbe, 0x24d5,
-  0xecc0, 0x19ce,
-  0xecc1, 0x24d7,
-  0xecc2, 0x19d0,
-  0xecc7, 0x24d8,
-  0xecc8, 0x19d6,
-  0xeccb, 0x24d9,
-  0xeccc, 0x19da,
-  0xece2, 0x24da,
-  0xece3, 0x19f1,
-  0xecf2, 0x24db,
-  0xecf3, 0x1a01,
-  0xecf5, 0x24dc,
-  0xecf6, 0x1a04,
-  0xecf8, 0x24dd,
-  0xecf9, 0x1a07,
-  0xeda1, 0x24de,
-  0xeda2, 0x1a0e,
-  0xeda8, 0x24df,
-  0xeda9, 0x1a15,
-  0xedaf, 0x24e0,
-  0xedb1, 0x1a1d,
-  0xedb4, 0x24e2,
-  0xedb5, 0x1a21,
-  0xedb6, 0x24e3,
-  0xedb7, 0x1a23,
-  0xedb8, 0x24e4,
-  0xedb9, 0x1a25,
-  0xedba, 0x24e5,
-  0xedbb, 0x1a27,
-  0xedbf, 0x24e6,
-  0xedc0, 0x1a2c,
-  0xedc2, 0x24e7,
-  0xedc4, 0x1a30,
-  0xedcc, 0x24e9,
-  0xedce, 0x1a3a,
-  0xedd3, 0x24eb,
-  0xedd4, 0x1a40,
-  0xedd7, 0x24ec,
-  0xedd8, 0x1a44,
-  0xede8, 0x24ed,
-  0xede9, 0x1a55,
-  0xedee, 0x24ee,
-  0xedef, 0x1a5b,
-  0xedf9, 0x24ef,
-  0xedfb, 0x1a67,
-  0xeea1, 0x1a6b,
-  0xeebc, 0x24f1,
-  0xeebd, 0x1a87,
-  0xeebf, 0x24f2,
-  0xeec0, 0x1a8a,
-  0xeec4, 0x24f3,
-  0xefa1, 0x252e,
-  0xeff2, 0x1b1a,
-  0xf0a1, 0x1b27,
-  0xf0a3, 0x257f,
-  0xf0a4, 0x1b2a,
-  0xf0af, 0x2580,
-  0xf0da, 0x1b60,
-  0xf0dc, 0x25ab,
-  0xf0de, 0x1b64,
-  0xf0df, 0x25ad,
-  0xf0e0, 0x1b66,
-  0xf0e9, 0x25ae,
-  0xf0ea, 0x1b70,
-  0xf0ec, 0x25af,
-  0xf0ed, 0x1b73,
-  0xf0ef, 0x25b0,
-  0xf0f0, 0x1b76,
-  0xf0f7, 0x25b1,
-  0xf0f8, 0x1b7e,
-  0xf0f9, 0x25b2,
-  0xf0fa, 0x1b80,
-  0xf0fc, 0x25b3,
-  0xf0fd, 0x1b83,
-  0xf1a1, 0x1b85,
-  0xf1a8, 0x25b4,
-  0xf1a9, 0x1b8d,
-  0xf1ab, 0x25b5,
-  0xf1ac, 0x1b90,
-  0xf1ae, 0x25b6,
-  0xf1af, 0x1b93,
-  0xf1b2, 0x25b7,
-  0xf1b3, 0x1b97,
-  0xf1bc, 0x25b8,
-  0xf1bd, 0x1ba1,
-  0xf1c0, 0x25b9,
-  0xf1c1, 0x1ba5,
-  0xf1c9, 0x25ba,
-  0xf1ca, 0x1bae,
-  0xf1cd, 0x25bb,
-  0xf1ce, 0x1bb2,
-  0xf1cf, 0x25bc,
-  0xf1d1, 0x1bb5,
-  0xf1da, 0x25be,
-  0xf1db, 0x1bbf,
-  0xf1dc, 0x25bf,
-  0xf1dd, 0x1bc1,
-  0xf1e4, 0x25c0,
-  0xf1e5, 0x1bc9,
-  0xf1ec, 0x25c1,
-  0xf1ed, 0x1bd1,
-  0xf1ef, 0x25c2,
-  0xf1f0, 0x1bd4,
-  0xf1f7, 0x25c3,
-  0xf1f8, 0x1bdc,
-  0xf1f9, 0x25c4,
-  0xf1fa, 0x1bde,
-  0xf1fc, 0x25c5,
-  0xf2a1, 0x25c8,
-  0xf2ae, 0x1bf0,
-  0xf2b1, 0x25d5,
-  0xf2b3, 0x1bf5,
-  0xf2b9, 0x25d7,
-  0xf2ba, 0x1bfc,
-  0xf2c3, 0x25d8,
-  0xf2c4, 0x1c06,
-  0xf2c9, 0x25d9,
-  0xf2ca, 0x1c0c,
-  0xf2cc, 0x25da,
-  0xf2ce, 0x1c10,
-  0xf2cf, 0x25dc,
-  0xf2d0, 0x1c12,
-  0xf2d3, 0x25dd,
-  0xf2d4, 0x1c16,
-  0xf2e5, 0x25de,
-  0xf2e6, 0x1c28,
-  0xf2ee, 0x25df,
-  0xf2ef, 0x1c31,
-  0xf2f7, 0x25e0,
-  0xf2f8, 0x1c3a,
-  0xf2fd, 0x25e1,
-  0xf2fe, 0x1c40,
-  0xf3a1, 0x1c41,
-  0xf3bf, 0x25e2,
-  0xf3c0, 0x1c60,
-  0xf3c6, 0x25e3,
-  0xf3c7, 0x1c67,
-  0xf3c8, 0x25e4,
-  0xf3c9, 0x1c69,
-  0xf3d6, 0x25e5,
-  0xf3d7, 0x1c77,
-  0xf3d9, 0x25e6,
-  0xf3da, 0x1c7a,
-  0xf3e5, 0x25e7,
-  0xf3e7, 0x1c87,
-  0xf3ea, 0x25e9,
-  0xf3eb, 0x1c8b,
-  0xf3ec, 0x25ea,
-  0xf3ed, 0x1c8d,
-  0xf3ef, 0x25eb,
-  0xf3f0, 0x1c90,
-  0xf3f1, 0x25ec,
-  0xf3f2, 0x1c92,
-  0xf3fd, 0x25ed,
-  0xf3fe, 0x1c9e,
-  0xf4a1, 0x1c9f,
-  0xf4a5, 0x25ee,
-  0xf4a6, 0x1ca4,
-  0xf4af, 0x25ef,
-  0xf4b0, 0x1cae,
-  0xf4b5, 0x25f0,
-  0xf4b6, 0x1cb4,
-  0xf4c1, 0x25f1,
-  0xf4c2, 0x1cc0,
-  0xf4c7, 0x25f2,
-  0xf4c8, 0x1cc6,
-  0xf4cf, 0x25f3,
-  0xf4d1, 0x1ccf,
-  0xf4d6, 0x25f5,
-  0xf4d7, 0x1cd5,
-  0xf4ea, 0x25f6,
-  0xf4eb, 0x1ce9,
-  0xf4ef, 0x25f7,
-  0xf4f0, 0x1cee,
-  0xf4f5, 0x25f8,
-  0xf4f6, 0x1cf4,
-  0xf5a1, 0x1cfd,
-  0xf5a6, 0x25f9,
-  0xf5a8, 0x1d04,
-  0xf5ba, 0x25fb,
-  0xf5bc, 0x1d18,
-  0xf5c4, 0x25fd,
-  0xf5c5, 0x1d21,
-  0xf5c8, 0x25fe,
-  0xf5c9, 0x1d25,
-  0xf5ce, 0x25ff,
-  0xf5d0, 0x1d2c,
-  0xf5d1, 0x2601,
-  0xf5d3, 0x1d2f,
-  0xf5d9, 0x2603,
-  0xf5da, 0x1d36,
-  0xf5dc, 0x2604,
-  0xf5dd, 0x1d39,
-  0xf5e6, 0x2605,
-  0xf5e8, 0x1d44,
-  0xf5ef, 0x2607,
-  0xf5f0, 0x1d4c,
-  0xf5f2, 0x2608,
-  0xf5f3, 0x1d4f,
-  0xf5fc, 0x2609,
-  0xf5fd, 0x1d59,
-  0xf6a1, 0x1d5b,
-  0xf6a3, 0x260a,
-  0xf6a4, 0x1d5e,
-  0xf6a6, 0x260b,
-  0xf6a7, 0x1d61,
-  0xf6a8, 0x260c,
-  0xf6a9, 0x1d63,
-  0xf6ab, 0x260d,
-  0xf6ac, 0x1d66,
-  0xf6b0, 0x260e,
-  0xf6b1, 0x1d6b,
-  0xf6b3, 0x260f,
-  0xf6bf, 0x1d79,
-  0xf6c5, 0x261b,
-  0xf6c6, 0x1d80,
-  0xf6c7, 0x261c,
-  0xf6c8, 0x1d82,
-  0xf6c9, 0x261d,
-  0xf6ca, 0x1d84,
-  0xf6cf, 0x261e,
-  0xf7a1, 0x264e,
-  0xf7b0, 0x1dc8,
-  0xf7b2, 0x265d,
-  0xf7b4, 0x1dcc,
-  0xf7b5, 0x265f,
-  0xf7b6, 0x1dce,
-  0xf7bd, 0x2660,
-  0xf7be, 0x1dd6,
-  0xf7c3, 0x2661,
-  0xf7c4, 0x1ddc,
-  0xf7c5, 0x2662,
-  0xf7c7, 0x1ddf,
-  0xf7ca, 0x2664,
-  0xf7cc, 0x1de4,
-  0xf7cf, 0x2666,
-  0xf7d1, 0x1de9,
-  0xf7de, 0x2668,
-  0xf7df, 0x1df7,
-  0xf7e1, 0x0ab9,
-  0xf7e2, 0x1dfa,
-  0xf7f2, 0x2669,
-  0xf7f3, 0x1e0b,
-  0xf7f5, 0x266a,
-  0xf7f6, 0x1e0e,
-  0xf8a1, 0x266b,
-  0xf8a7, 0x04cc,
-  0xf8a8, 0x050a,
-  0xf8a9, 0x0518,
-  0xf8aa, 0x2671,
-  0xf8ac, 0x0594,
-  0xf8ad, 0x05ce,
-  0xf8ae, 0x2673,
-  0xf8af, 0x05f6,
-  0xf8b0, 0x2674,
-  0xf8b2, 0x0653,
-  0xf8b3, 0x067e,
-  0xf8b4, 0x2676,
-  0xf8b5, 0x06c4,
-  0xf8b6, 0x2677,
-  0xf8b8, 0x073c,
-  0xf8b9, 0x2679,
-  0xf8bb, 0x07c3,
-  0xf8bc, 0x267b,
-  0xf8c0, 0x082b,
-  0xf8c1, 0x267f,
-  0xf8c2, 0x084e,
-  0xf8c3, 0x0869,
-  0xf8c4, 0x2680,
-  0xf8c6, 0x090c,
-  0xf8c7, 0x2682,
-  0xf8c9, 0x0971,
-  0xf8ca, 0x2684,
-  0xf8cb, 0x099a,
-  0xf8cd, 0x2685,
-  0xf8ce, 0x09da,
-  0xf8cf, 0x2686,
-  0xf8d0, 0x09fa,
-  0xf8d1, 0x2687,
-  0xf8dc, 0x0bda,
-  0xf8dd, 0x0bdd,
-  0xf8de, 0x0bea,
-  0xf8df, 0x0bec,
-  0xf8e0, 0x0bf2,
-  0xf8e1, 0x2692,
-  0xf8e6, 0x0c92,
-  0xf8e7, 0x0d1a,
-  0xf8e8, 0x0d8c,
-  0xf8e9, 0x0dbe,
-  0xf8ea, 0x2697,
-  0xf8eb, 0x0dfb,
-  0xf8ec, 0x2698,
-  0xf8ef, 0x0e70,
-  0xf8f0, 0x269b,
-  0xf8f1, 0x0ea3,
-  0xf8f2, 0x269c,
-  0xf8f8, 0x103d,
-  0xf8f9, 0x10d9,
-  0xf8fa, 0x26a2,
-  0xf8fc, 0x10fb,
-  0xf8fd, 0x1109,
-  0xf8fe, 0x26a4,
-  0xf9a1, 0x11a1,
-  0xf9a2, 0x26a5,
-  0xf9a3, 0x11ba,
-  0xf9a4, 0x26a6,
-  0xf9a6, 0x11d5,
-  0xf9a7, 0x26a8,
-  0xf9a8, 0x11fd,
-  0xf9a9, 0x1219,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBTEUCHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x1e24, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334,
-    0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c,
-    0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
-    0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c,
-    0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354,
-    0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c,
-    0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364,
-    0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c,
-    0x036d, 0x036e, 0x036f, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374,
-    0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037a, 0x037b, 0x037c,
-    0x037d, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384,
-    0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBTEUCHMap2, 2283
-};
-
-static Gushort gb12GBTEUCVMap2[4606] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb0a8, 0x1e25,
-  0xb0a9, 0x03b4,
-  0xb0aa, 0x1e26,
-  0xb0ab, 0x03b6,
-  0xb0ad, 0x1e27,
-  0xb0af, 0x03ba,
-  0xb0b9, 0x1e29,
-  0xb0ba, 0x03c5,
-  0xb0c0, 0x1e2a,
-  0xb0c1, 0x03cc,
-  0xb0d3, 0x1e2b,
-  0xb0d4, 0x03df,
-  0xb0d5, 0x1e2c,
-  0xb0d6, 0x03e1,
-  0xb0da, 0x1e2d,
-  0xb0db, 0x03e6,
-  0xb0dc, 0x1e2e,
-  0xb0dd, 0x03e8,
-  0xb0e4, 0x1e2f,
-  0xb0e5, 0x03f0,
-  0xb0ec, 0x1e30,
-  0xb0ee, 0x03f9,
-  0xb0ef, 0x1e32,
-  0xb0f0, 0x03fb,
-  0xb0f3, 0x1e33,
-  0xb0f4, 0x03ff,
-  0xb0f7, 0x1e34,
-  0xb0f8, 0x0403,
-  0xb0f9, 0x1e35,
-  0xb0fa, 0x0405,
-  0xb1a1, 0x040a,
-  0xb1a5, 0x1e36,
-  0xb1a7, 0x0410,
-  0xb1a8, 0x1e38,
-  0xb1a9, 0x0412,
-  0xb1ab, 0x1e39,
-  0xb1ac, 0x0415,
-  0xb1b2, 0x1e3a,
-  0xb1b3, 0x041c,
-  0xb1b4, 0x1e3b,
-  0xb1b6, 0x041f,
-  0xb1b7, 0x1e3d,
-  0xb1ba, 0x0423,
-  0xb1c1, 0x1e40,
-  0xb1c2, 0x042b,
-  0xb1ca, 0x1e41,
-  0xb1cb, 0x0434,
-  0xb1cf, 0x1e42,
-  0xb1d1, 0x043a,
-  0xb1d2, 0x1e44,
-  0xb1d3, 0x043c,
-  0xb1d5, 0x1e45,
-  0xb1d6, 0x043f,
-  0xb1df, 0x1e46,
-  0xb1e2, 0x044b,
-  0xb1e4, 0x1e49,
-  0xb1e5, 0x044e,
-  0xb1e7, 0x1e4a,
-  0xb1e9, 0x0452,
-  0xb1ea, 0x1e4c,
-  0xb1eb, 0x0454,
-  0xb1ee, 0x1e4d,
-  0xb1ef, 0x0458,
-  0xb1f1, 0x1e4e,
-  0xb1f2, 0x045b,
-  0xb1f4, 0x1e4f,
-  0xb1f8, 0x0461,
-  0xb1fd, 0x1e53,
-  0xb1fe, 0x0467,
-  0xb2a1, 0x0468,
-  0xb2a6, 0x1e54,
-  0xb2a8, 0x046f,
-  0xb2ac, 0x1e56,
-  0xb2ad, 0x0474,
-  0xb2b5, 0x1e57,
-  0xb2b6, 0x047d,
-  0xb2b9, 0x1e58,
-  0xb2ba, 0x0481,
-  0xb2c6, 0x1e59,
-  0xb2c7, 0x048e,
-  0xb2ce, 0x1e5a,
-  0xb2d8, 0x049f,
-  0xb2de, 0x1e64,
-  0xb2df, 0x04a6,
-  0xb2e0, 0x1e65,
-  0xb2e1, 0x04a8,
-  0xb2e2, 0x1e66,
-  0xb2e4, 0x04ab,
-  0xb2ef, 0x1e68,
-  0xb2f0, 0x04b7,
-  0xb2f3, 0x1e69,
-  0xb2fd, 0x04c4,
-  0xb3a1, 0x1e73,
-  0xb3a3, 0x04c8,
-  0xb3a4, 0x1e75,
-  0xb3a8, 0x04cd,
-  0xb3a9, 0x1e79,
-  0xb3aa, 0x04cf,
-  0xb3ae, 0x1e7a,
-  0xb3af, 0x04d4,
-  0xb3b5, 0x1e7b,
-  0xb3b6, 0x04db,
-  0xb3b9, 0x1e7c,
-  0xb3ba, 0x04df,
-  0xb3be, 0x1e7d,
-  0xb3bf, 0x04e4,
-  0xb3c2, 0x1e7e,
-  0xb3c3, 0x04e8,
-  0xb3c4, 0x1e7f,
-  0xb3c5, 0x04ea,
-  0xb3c6, 0x1e80,
-  0xb3c7, 0x04ec,
-  0xb3cd, 0x1e81,
-  0xb3ce, 0x04f3,
-  0xb3cf, 0x1e82,
-  0xb3d0, 0x04f5,
-  0xb3d2, 0x1e83,
-  0xb3d3, 0x04f8,
-  0xb3d9, 0x1e84,
-  0xb3da, 0x04ff,
-  0xb3db, 0x1e85,
-  0xb3dc, 0x0501,
-  0xb3dd, 0x1e86,
-  0xb3de, 0x0503,
-  0xb3e3, 0x1e87,
-  0xb3e4, 0x0509,
-  0xb3e5, 0x1e88,
-  0xb3e7, 0x050c,
-  0xb3e8, 0x1e8a,
-  0xb3e9, 0x050e,
-  0xb3eb, 0x1e8b,
-  0xb3ed, 0x0512,
-  0xb3ef, 0x1e8d,
-  0xb3f0, 0x0515,
-  0xb3f1, 0x1e8e,
-  0xb3f2, 0x0517,
-  0xb3f3, 0x1e8f,
-  0xb3f4, 0x0519,
-  0xb3fa, 0x1e90,
-  0xb3fc, 0x0521,
-  0xb4a1, 0x1e92,
-  0xb4a3, 0x0526,
-  0xb4a5, 0x1e94,
-  0xb4a7, 0x052a,
-  0xb4ab, 0x1e96,
-  0xb4ac, 0x052f,
-  0xb4af, 0x1e97,
-  0xb4b0, 0x0533,
-  0xb4b3, 0x1e98,
-  0xb4b5, 0x0538,
-  0xb4b8, 0x1e9a,
-  0xb4b9, 0x053c,
-  0xb4bf, 0x1e9b,
-  0xb4c0, 0x0543,
-  0xb4c2, 0x1e9c,
-  0xb4c3, 0x0546,
-  0xb4c7, 0x1e9d,
-  0xb4c8, 0x054b,
-  0xb4ca, 0x1e9e,
-  0xb4cb, 0x054e,
-  0xb4cd, 0x1e9f,
-  0xb4ce, 0x0551,
-  0xb4cf, 0x1ea0,
-  0xb4d0, 0x0553,
-  0xb4d3, 0x1ea1,
-  0xb4d5, 0x0558,
-  0xb4da, 0x1ea3,
-  0xb4db, 0x055e,
-  0xb4dc, 0x1ea4,
-  0xb4dd, 0x0560,
-  0xb4ed, 0x1ea5,
-  0xb4ee, 0x0571,
-  0xb4ef, 0x1ea6,
-  0xb4f0, 0x0573,
-  0xb4f8, 0x1ea7,
-  0xb4f9, 0x057c,
-  0xb4fb, 0x1ea8,
-  0xb4fc, 0x057f,
-  0xb5a1, 0x0582,
-  0xb5a3, 0x1ea9,
-  0xb5a4, 0x0585,
-  0xb5a5, 0x1eaa,
-  0xb5a9, 0x058a,
-  0xb5ac, 0x1eae,
-  0xb5ad, 0x058e,
-  0xb5ae, 0x1eaf,
-  0xb5b0, 0x0591,
-  0xb5b1, 0x1eb1,
-  0xb5b6, 0x0597,
-  0xb5b7, 0x1eb6,
-  0xb5b8, 0x0599,
-  0xb5ba, 0x1eb7,
-  0xb5bd, 0x059e,
-  0xb5c6, 0x1eba,
-  0xb5c7, 0x05a8,
-  0xb5cb, 0x1ebb,
-  0xb5cc, 0x05ad,
-  0xb5d0, 0x1ebc,
-  0xb5d1, 0x05b2,
-  0xb5d3, 0x1ebd,
-  0xb5d4, 0x05b5,
-  0xb5dd, 0x1ebe,
-  0xb5e0, 0x05c1,
-  0xb5e3, 0x1ec1,
-  0xb5e4, 0x05c5,
-  0xb5e6, 0x1ec2,
-  0xb5e8, 0x05c9,
-  0xb5ed, 0x1ec4,
-  0xb5ee, 0x05cf,
-  0xb5f6, 0x1ec5,
-  0xb5f8, 0x05d9,
-  0xb5fd, 0x1ec7,
-  0xb5fe, 0x05df,
-  0xb6a1, 0x05e0,
-  0xb6a4, 0x1ec8,
-  0xb6a6, 0x05e5,
-  0xb6a7, 0x1eca,
-  0xb6a8, 0x05e7,
-  0xb6a9, 0x1ecb,
-  0xb6aa, 0x05e9,
-  0xb6ab, 0x1ecc,
-  0xb6ac, 0x05eb,
-  0xb6af, 0x1ecd,
-  0xb6b1, 0x05f0,
-  0xb6b3, 0x1ecf,
-  0xb6b4, 0x05f3,
-  0xb6b7, 0x1ed0,
-  0xb6b8, 0x05f7,
-  0xb6bf, 0x1ed1,
-  0xb6c2, 0x0601,
-  0xb6c4, 0x1ed4,
-  0xb6c5, 0x0604,
-  0xb6c6, 0x1ed5,
-  0xb6c7, 0x0606,
-  0xb6cd, 0x1ed6,
-  0xb6ce, 0x060d,
-  0xb6cf, 0x1ed7,
-  0xb6d1, 0x0610,
-  0xb6d3, 0x1ed9,
-  0xb6d5, 0x0614,
-  0xb6d6, 0x1edb,
-  0xb6d7, 0x0616,
-  0xb6d9, 0x1edc,
-  0xb6da, 0x0619,
-  0xb6db, 0x1edd,
-  0xb6dc, 0x061b,
-  0xb6e1, 0x1ede,
-  0xb6e2, 0x0621,
-  0xb6e9, 0x1edf,
-  0xb6ea, 0x0629,
-  0xb6ec, 0x1ee0,
-  0xb6ed, 0x062c,
-  0xb6ee, 0x1ee1,
-  0xb6f0, 0x062f,
-  0xb6f1, 0x1ee3,
-  0xb6f2, 0x0631,
-  0xb6f6, 0x1ee4,
-  0xb6f7, 0x0636,
-  0xb6f9, 0x1ee5,
-  0xb6fa, 0x0639,
-  0xb6fb, 0x1ee6,
-  0xb6fd, 0x063c,
-  0xb7a1, 0x1ee8,
-  0xb7a4, 0x0641,
-  0xb7a7, 0x1eeb,
-  0xb7a8, 0x0645,
-  0xb7af, 0x1eec,
-  0xb7b1, 0x064e,
-  0xb7b3, 0x1eee,
-  0xb7b4, 0x0651,
-  0xb7b6, 0x1eef,
-  0xb7b8, 0x0655,
-  0xb7b9, 0x1ef1,
-  0xb7ba, 0x0657,
-  0xb7c3, 0x1ef2,
-  0xb7c5, 0x0662,
-  0xb7c9, 0x1ef4,
-  0xb7ca, 0x0667,
-  0xb7cc, 0x1ef5,
-  0xb7cd, 0x066a,
-  0xb7cf, 0x1ef6,
-  0xb7d0, 0x066d,
-  0xb7d1, 0x1ef7,
-  0xb7d2, 0x066f,
-  0xb7d7, 0x1ef8,
-  0xb7d9, 0x0676,
-  0xb7dc, 0x1efa,
-  0xb7dd, 0x067a,
-  0xb7df, 0x1efb,
-  0xb7e2, 0x067f,
-  0xb7e3, 0x1efe,
-  0xb7e4, 0x0681,
-  0xb7e6, 0x1eff,
-  0xb7e9, 0x0686,
-  0xb7eb, 0x1f02,
-  0xb7ee, 0x068b,
-  0xb7ef, 0x1f05,
-  0xb7f0, 0x068d,
-  0xb7f4, 0x1f06,
-  0xb7f5, 0x0692,
-  0xb7f8, 0x1f07,
-  0xb7f9, 0x0696,
-  0xb8a1, 0x069c,
-  0xb8a7, 0x1f08,
-  0xb8a9, 0x06a4,
-  0xb8b3, 0x1f0a,
-  0xb8b5, 0x06b0,
-  0xb8ba, 0x1f0c,
-  0xb8bb, 0x06b6,
-  0xb8bc, 0x1f0d,
-  0xb8bd, 0x06b8,
-  0xb8be, 0x1f0e,
-  0xb8c0, 0x06bb,
-  0xb8c3, 0x1f10,
-  0xb8c4, 0x06bf,
-  0xb8c6, 0x1f11,
-  0xb8c8, 0x06c3,
-  0xb8c9, 0x1f13,
-  0xb8ca, 0x06c5,
-  0xb8cf, 0x1f14,
-  0xb8d0, 0x06cb,
-  0xb8d3, 0x1f15,
-  0xb8d7, 0x06d2,
-  0xb8d9, 0x1f19,
-  0xb8db, 0x06d6,
-  0xb8e4, 0x1f1b,
-  0xb8e5, 0x06e0,
-  0xb8e9, 0x1f1c,
-  0xb8ea, 0x06e5,
-  0xb8eb, 0x1f1d,
-  0xb8ec, 0x06e7,
-  0xb8f3, 0x1f1e,
-  0xb8f4, 0x06ef,
-  0xb8f5, 0x1f1f,
-  0xb8f7, 0x06f2,
-  0xb8f8, 0x1f21,
-  0xb8f9, 0x06f4,
-  0xb9a1, 0x06fa,
-  0xb9a8, 0x1f22,
-  0xb9a9, 0x0702,
-  0xb9ae, 0x1f23,
-  0xb9af, 0x0708,
-  0xb9b1, 0x1f24,
-  0xb9b2, 0x070b,
-  0xb9b3, 0x1f25,
-  0xb9b4, 0x070d,
-  0xb9b5, 0x1f26,
-  0xb9b6, 0x070f,
-  0xb9b9, 0x1f27,
-  0xb9bb, 0x0714,
-  0xb9c6, 0x1f29,
-  0xb9c7, 0x0720,
-  0xb9cb, 0x1f2a,
-  0xb9cc, 0x0725,
-  0xb9d0, 0x1f2b,
-  0xb9d1, 0x072a,
-  0xb9d8, 0x1f2c,
-  0xb9d9, 0x0732,
-  0xb9db, 0x1f2d,
-  0xb9dc, 0x0735,
-  0xb9dd, 0x1f2e,
-  0xb9de, 0x0737,
-  0xb9df, 0x1f2f,
-  0xb9e0, 0x0739,
-  0xb9e1, 0x1f30,
-  0xb9e2, 0x073b,
-  0xb9e3, 0x1f31,
-  0xb9e4, 0x073d,
-  0xb9e6, 0x1f32,
-  0xb9e7, 0x0740,
-  0xb9e9, 0x1f33,
-  0xb9ed, 0x0746,
-  0xb9ee, 0x1f37,
-  0xb9ef, 0x0748,
-  0xb9f1, 0x1f38,
-  0xb9f2, 0x074b,
-  0xb9f3, 0x1f39,
-  0xb9f6, 0x074f,
-  0xb9f8, 0x1f3c,
-  0xb9f9, 0x0752,
-  0xb9fa, 0x1f3d,
-  0xb9fb, 0x0754,
-  0xb9fd, 0x1f3e,
-  0xb9fe, 0x0757,
-  0xbaa1, 0x0758,
-  0xbaa7, 0x1f3f,
-  0xbaa8, 0x075f,
-  0xbaab, 0x1f40,
-  0xbaac, 0x0763,
-  0xbaba, 0x1f41,
-  0xbabb, 0x0772,
-  0xbac5, 0x1f42,
-  0xbac6, 0x077d,
-  0xbad2, 0x1f43,
-  0xbad3, 0x078a,
-  0xbad7, 0x1f44,
-  0xbad9, 0x0790,
-  0xbae4, 0x1f46,
-  0xbae5, 0x079c,
-  0xbae8, 0x1f47,
-  0xbae9, 0x07a0,
-  0xbaec, 0x1f48,
-  0xbaed, 0x07a4,
-  0xbaf3, 0x15e5,
-  0xbaf4, 0x07ab,
-  0xbaf8, 0x1f49,
-  0xbaf9, 0x07b0,
-  0xbba1, 0x07b6,
-  0xbba4, 0x1f4a,
-  0xbba5, 0x07ba,
-  0xbba6, 0x1f4b,
-  0xbba7, 0x07bc,
-  0xbba9, 0x1f4c,
-  0xbbab, 0x07c0,
-  0xbbad, 0x1f4e,
-  0xbbaf, 0x07c4,
-  0xbbb0, 0x1f50,
-  0xbbb1, 0x07c6,
-  0xbbb3, 0x1f51,
-  0xbbb4, 0x07c9,
-  0xbbb5, 0x1f52,
-  0xbbb8, 0x07cd,
-  0xbbb9, 0x1f55,
-  0xbbbb, 0x07d0,
-  0xbbd1, 0x1f57,
-  0xbbd2, 0x07e7,
-  0xbbd3, 0x1f58,
-  0xbbd5, 0x07ea,
-  0xbbdf, 0x1f5a,
-  0xbbe8, 0x07fd,
-  0xbbeb, 0x1f63,
-  0xbbec, 0x0801,
-  0xbbf1, 0x1f64,
-  0xbbf2, 0x0807,
-  0xbbf5, 0x1f65,
-  0xbbf8, 0x080d,
-  0xbbfa, 0x1f68,
-  0xbbfb, 0x0810,
-  0xbbfd, 0x1f69,
-  0xbbfe, 0x0813,
-  0xbca1, 0x0814,
-  0xbca2, 0x1f6a,
-  0xbca3, 0x0816,
-  0xbca5, 0x1f6b,
-  0xbca7, 0x081a,
-  0xbca8, 0x1f6d,
-  0xbcaa, 0x081d,
-  0xbcab, 0x1f6f,
-  0xbcac, 0x081f,
-  0xbcad, 0x1f70,
-  0xbcae, 0x0821,
-  0xbcb6, 0x1f71,
-  0xbcb9, 0x082c,
-  0xbcbb, 0x1f74,
-  0xbcbc, 0x082f,
-  0xbcc1, 0x1f75,
-  0xbcc2, 0x0835,
-  0xbcc3, 0x1f76,
-  0xbcc4, 0x0837,
-  0xbcc6, 0x1f77,
-  0xbcc8, 0x083b,
-  0xbcca, 0x1f79,
-  0xbccb, 0x083e,
-  0xbccc, 0x1f7a,
-  0xbcce, 0x0841,
-  0xbcd0, 0x1f7c,
-  0xbcd1, 0x0844,
-  0xbcd4, 0x1f7d,
-  0xbcd7, 0x084a,
-  0xbcd8, 0x1f80,
-  0xbcd9, 0x084c,
-  0xbcdb, 0x1f81,
-  0xbcdc, 0x084f,
-  0xbcdd, 0x1f82,
-  0xbcde, 0x0851,
-  0xbcdf, 0x1f83,
-  0xbce2, 0x0855,
-  0xbce3, 0x1f86,
-  0xbce5, 0x0858,
-  0xbce8, 0x1f88,
-  0xbce9, 0x085c,
-  0xbcea, 0x1f89,
-  0xbced, 0x0860,
-  0xbcef, 0x1f8c,
-  0xbcf4, 0x0867,
-  0xbcf6, 0x1f91,
-  0xbcfd, 0x0870,
-  0xbda1, 0x0872,
-  0xbda2, 0x1f98,
-  0xbda8, 0x0879,
-  0xbdab, 0x1f9e,
-  0xbdad, 0x087e,
-  0xbdaf, 0x1fa0,
-  0xbdb3, 0x0884,
-  0xbdb4, 0x1fa4,
-  0xbdb5, 0x0886,
-  0xbdba, 0x1fa5,
-  0xbdbb, 0x088c,
-  0xbdbd, 0x1fa6,
-  0xbdc0, 0x0891,
-  0xbdc1, 0x1fa9,
-  0xbdc5, 0x0896,
-  0xbdc8, 0x1fad,
-  0xbdcb, 0x089c,
-  0xbdce, 0x1fb0,
-  0xbdd0, 0x08a1,
-  0xbdd7, 0x1fb2,
-  0xbdd8, 0x08a9,
-  0xbdda, 0x1fb3,
-  0xbddb, 0x08ac,
-  0xbde0, 0x1fb4,
-  0xbde2, 0x08b3,
-  0xbdeb, 0x1fb6,
-  0xbdec, 0x08bd,
-  0xbdf4, 0x1fb7,
-  0xbdf9, 0x08ca,
-  0xbdfd, 0x1fbc,
-  0xbdfe, 0x08cf,
-  0xbea1, 0x1fbd,
-  0xbea3, 0x08d2,
-  0xbea5, 0x1fbf,
-  0xbea6, 0x08d5,
-  0xbea8, 0x1fc0,
-  0xbea9, 0x08d8,
-  0xbeaa, 0x1fc1,
-  0xbeab, 0x08da,
-  0xbead, 0x1fc2,
-  0xbeae, 0x08dd,
-  0xbeb1, 0x1fc3,
-  0xbeb2, 0x08e1,
-  0xbeb5, 0x1fc4,
-  0xbeb8, 0x08e7,
-  0xbeba, 0x1fc7,
-  0xbebb, 0x08ea,
-  0xbec0, 0x1fc8,
-  0xbec1, 0x08f0,
-  0xbec9, 0x1fc9,
-  0xbeca, 0x08f9,
-  0xbed4, 0x1fca,
-  0xbed5, 0x0904,
-  0xbed9, 0x1fcb,
-  0xbeda, 0x0909,
-  0xbedd, 0x1fcc,
-  0xbede, 0x090d,
-  0xbee2, 0x1fcd,
-  0xbee3, 0x0912,
-  0xbee5, 0x1fce,
-  0xbee6, 0x0915,
-  0xbee7, 0x1fcf,
-  0xbee8, 0x0917,
-  0xbee9, 0x1fd0,
-  0xbeea, 0x0919,
-  0xbeee, 0x1fd1,
-  0xbeef, 0x091e,
-  0xbef5, 0x1fd2,
-  0xbef6, 0x0925,
-  0xbef7, 0x1fd3,
-  0xbef9, 0x0928,
-  0xbefb, 0x1fd5,
-  0xbefd, 0x092c,
-  0xbfa1, 0x092e,
-  0xbfa5, 0x1fd7,
-  0xbfa6, 0x0933,
-  0xbfaa, 0x1fd8,
-  0xbfab, 0x0938,
-  0xbfad, 0x1fd9,
-  0xbfae, 0x093b,
-  0xbfc5, 0x1fda,
-  0xbfc6, 0x0953,
-  0xbfc7, 0x1fdb,
-  0xbfc8, 0x0955,
-  0xbfce, 0x1fdc,
-  0xbfcf, 0x095c,
-  0xbfd1, 0x1fdd,
-  0xbfd3, 0x0960,
-  0xbfd9, 0x1fdf,
-  0xbfda, 0x0967,
-  0xbfe2, 0x1fe0,
-  0xbfe5, 0x0972,
-  0xbfe9, 0x1fe3,
-  0xbfea, 0x0977,
-  0xbfeb, 0x1fe4,
-  0xbfec, 0x0979,
-  0xbfed, 0x1fe5,
-  0xbfee, 0x097b,
-  0xbff3, 0x1fe6,
-  0xbff4, 0x0981,
-  0xbff5, 0x1fe7,
-  0xbff6, 0x0983,
-  0xbff7, 0x1fe8,
-  0xbff8, 0x0985,
-  0xbff9, 0x1fe9,
-  0xbffb, 0x0988,
-  0xc0a1, 0x1feb,
-  0xc0a2, 0x098d,
-  0xc0a3, 0x1fec,
-  0xc0a4, 0x098f,
-  0xc0a9, 0x1fed,
-  0xc0aa, 0x0995,
-  0xc0ab, 0x1fee,
-  0xc0ac, 0x0997,
-  0xc0af, 0x1fef,
-  0xc0b1, 0x099c,
-  0xc0b3, 0x1ff1,
-  0xc0b7, 0x09a2,
-  0xc0b8, 0x1ff5,
-  0xc0c5, 0x09b0,
-  0xc0cc, 0x2002,
-  0xc0ce, 0x09b9,
-  0xc0d4, 0x2004,
-  0xc0d5, 0x09c0,
-  0xc0d6, 0x2005,
-  0xc0d7, 0x09c2,
-  0xc0d8, 0x2006,
-  0xc0d9, 0x09c4,
-  0xc0dd, 0x2007,
-  0xc0de, 0x09c9,
-  0xc0e0, 0x2008,
-  0xc0e1, 0x09cc,
-  0xc0e9, 0x2009,
-  0xc0ea, 0x09d5,
-  0xc0eb, 0x200a,
-  0xc0ed, 0x09d8,
-  0xc0ef, 0x200c,
-  0xc0f2, 0x09dd,
-  0xc0f6, 0x200f,
-  0xc0fb, 0x09e6,
-  0xc1a1, 0x09ea,
-  0xc1a4, 0x2014,
-  0xc1a6, 0x09ef,
-  0xc1a9, 0x2016,
-  0xc1ae, 0x09f7,
-  0xc1af, 0x201b,
-  0xc1b9, 0x0a02,
-  0xc1bd, 0x2025,
-  0xc1bf, 0x0a08,
-  0xc1c2, 0x2027,
-  0xc1c3, 0x0a0c,
-  0xc1c6, 0x2028,
-  0xc1c7, 0x0a10,
-  0xc1c9, 0x2029,
-  0xc1ca, 0x0a13,
-  0xc1cd, 0x202a,
-  0xc1ce, 0x0a17,
-  0xc1d4, 0x202b,
-  0xc1d5, 0x0a1e,
-  0xc1d9, 0x202c,
-  0xc1dc, 0x0a25,
-  0xc1de, 0x202f,
-  0xc1df, 0x0a28,
-  0xc1e4, 0x2030,
-  0xc1e6, 0x0a2f,
-  0xc1e9, 0x2032,
-  0xc1ea, 0x0a33,
-  0xc1eb, 0x2033,
-  0xc1ed, 0x0a36,
-  0xc1f3, 0x2035,
-  0xc1f4, 0x0a3d,
-  0xc1f5, 0x2036,
-  0xc1f6, 0x0a3f,
-  0xc1fa, 0x2037,
-  0xc1fe, 0x0a47,
-  0xc2a1, 0x0a48,
-  0xc2a2, 0x203b,
-  0xc2a9, 0x0a50,
-  0xc2ab, 0x2042,
-  0xc2b4, 0x0a5b,
-  0xc2b8, 0x204b,
-  0xc2b9, 0x0a60,
-  0xc2bc, 0x204c,
-  0xc2be, 0x0a65,
-  0xc2bf, 0x204e,
-  0xc2c0, 0x0a67,
-  0xc2c1, 0x204f,
-  0xc2c2, 0x0a69,
-  0xc2c5, 0x2050,
-  0xc2c8, 0x0a6f,
-  0xc2cb, 0x2053,
-  0xc2d1, 0x0a78,
-  0xc2d2, 0x2059,
-  0xc2d3, 0x0a7a,
-  0xc2d5, 0x205a,
-  0xc2dd, 0x0a84,
-  0xc2de, 0x2062,
-  0xc2e3, 0x0a8a,
-  0xc2e6, 0x2067,
-  0xc2e9, 0x0a90,
-  0xc2ea, 0x206a,
-  0xc2ef, 0x0a96,
-  0xc2f0, 0x206f,
-  0xc2f1, 0x0a98,
-  0xc2f2, 0x2070,
-  0xc2f6, 0x0a9d,
-  0xc2f7, 0x2074,
-  0xc2fb, 0x0aa2,
-  0xc3a1, 0x2078,
-  0xc3a2, 0x0aa7,
-  0xc3aa, 0x2079,
-  0xc3ab, 0x0ab0,
-  0xc3ad, 0x207a,
-  0xc3ae, 0x0ab3,
-  0xc3b3, 0x207b,
-  0xc3b4, 0x1df9,
-  0xc3b5, 0x0aba,
-  0xc3be, 0x207c,
-  0xc3bf, 0x0ac4,
-  0xc3c5, 0x207d,
-  0xc3c8, 0x0acd,
-  0xc3cc, 0x2080,
-  0xc3cd, 0x0ad2,
-  0xc3ce, 0x2081,
-  0xc3cf, 0x0ad4,
-  0xc3d5, 0x2082,
-  0xc3d7, 0x0adc,
-  0xc3d9, 0x2084,
-  0xc3da, 0x0adf,
-  0xc3e0, 0x2085,
-  0xc3e1, 0x0ae6,
-  0xc3e5, 0x2086,
-  0xc3e6, 0x0aeb,
-  0xc3ed, 0x2087,
-  0xc3ee, 0x0af3,
-  0xc3f0, 0x2088,
-  0xc3f1, 0x0af6,
-  0xc3f5, 0x2089,
-  0xc3f7, 0x0afc,
-  0xc3f9, 0x208b,
-  0xc3fb, 0x0b00,
-  0xc3fd, 0x208d,
-  0xc3fe, 0x0b03,
-  0xc4a1, 0x0b04,
-  0xc4b1, 0x208e,
-  0xc4b2, 0x0b15,
-  0xc4b6, 0x208f,
-  0xc4b7, 0x0b1a,
-  0xc4c6, 0x2090,
-  0xc4c7, 0x0b2a,
-  0xc4c9, 0x2091,
-  0xc4ca, 0x0b2d,
-  0xc4d1, 0x2092,
-  0xc4d2, 0x0b35,
-  0xc4d3, 0x2093,
-  0xc4d7, 0x0b3a,
-  0xc4d9, 0x2097,
-  0xc4da, 0x0b3d,
-  0xc4e2, 0x2098,
-  0xc4e3, 0x0b46,
-  0xc4e5, 0x2099,
-  0xc4e6, 0x0b49,
-  0xc4ec, 0x209a,
-  0xc4ed, 0x0b50,
-  0xc4f0, 0x209b,
-  0xc4f2, 0x0b55,
-  0xc4f4, 0x209d,
-  0xc4f5, 0x0b58,
-  0xc4f6, 0x209e,
-  0xc4f9, 0x0b5c,
-  0xc4fb, 0x20a1,
-  0xc4fd, 0x0b60,
-  0xc4fe, 0x20a3,
-  0xc5a1, 0x20a4,
-  0xc5a3, 0x0b64,
-  0xc5a5, 0x20a6,
-  0xc5aa, 0x0b6b,
-  0xc5b1, 0x20ab,
-  0xc5b2, 0x0b73,
-  0xc5b5, 0x20ac,
-  0xc5b6, 0x0b77,
-  0xc5b7, 0x20ad,
-  0xc5ba, 0x0b7b,
-  0xc5bb, 0x20b0,
-  0xc5bc, 0x0b7d,
-  0xc5bd, 0x20b1,
-  0xc5be, 0x0b7f,
-  0xc5cc, 0x20b2,
-  0xc5cd, 0x0b8e,
-  0xc5d3, 0x20b3,
-  0xc5d4, 0x0b95,
-  0xc5e2, 0x20b4,
-  0xc5e3, 0x0ba4,
-  0xc5e7, 0x20b5,
-  0xc5e8, 0x0ba9,
-  0xc5f4, 0x20b6,
-  0xc5f5, 0x0bb6,
-  0xc6a1, 0x0bc0,
-  0xc6ad, 0x20b7,
-  0xc6af, 0x0bce,
-  0xc6b5, 0x20b9,
-  0xc6b7, 0x0bd6,
-  0xc6bb, 0x20bb,
-  0xc6bc, 0x0bdb,
-  0xc6be, 0x20bc,
-  0xc6bf, 0x0bde,
-  0xc6c0, 0x20bd,
-  0xc6c1, 0x0be0,
-  0xc6c3, 0x20be,
-  0xc6c5, 0x0be4,
-  0xc6cb, 0x20c0,
-  0xc6ce, 0x0bed,
-  0xc6d3, 0x20c3,
-  0xc6d4, 0x0bf3,
-  0xc6d7, 0x20c4,
-  0xc6d8, 0x0bf7,
-  0xc6ea, 0x20c5,
-  0xc6ec, 0x0c0b,
-  0xc6ef, 0x20c7,
-  0xc6f0, 0x0c0f,
-  0xc6f1, 0x20c8,
-  0xc6f2, 0x0c11,
-  0xc6f4, 0x20c9,
-  0xc6f5, 0x0c14,
-  0xc6f8, 0x20ca,
-  0xc6f9, 0x0c18,
-  0xc6fd, 0x20cb,
-  0xc6fe, 0x0c1d,
-  0xc7a1, 0x0c1e,
-  0xc7a3, 0x20cc,
-  0xc7a4, 0x0c21,
-  0xc7a5, 0x20cd,
-  0xc7a7, 0x0c24,
-  0xc7a8, 0x20cf,
-  0xc7aa, 0x0c27,
-  0xc7ab, 0x20d1,
-  0xc7ac, 0x0c29,
-  0xc7ae, 0x20d2,
-  0xc7b0, 0x0c2d,
-  0xc7b3, 0x20d4,
-  0xc7b6, 0x0c33,
-  0xc7b9, 0x20d7,
-  0xc7bb, 0x0c38,
-  0xc7bd, 0x20d9,
-  0xc7bf, 0x0c3c,
-  0xc7c0, 0x20db,
-  0xc7c1, 0x0c3e,
-  0xc7c2, 0x20dc,
-  0xc7c3, 0x0c40,
-  0xc7c5, 0x20dd,
-  0xc7c6, 0x0c43,
-  0xc7c7, 0x20de,
-  0xc7c9, 0x0c46,
-  0xc7cc, 0x20e0,
-  0xc7cd, 0x0c4a,
-  0xc7cf, 0x20e1,
-  0xc7d0, 0x0c4d,
-  0xc7d4, 0x20e2,
-  0xc7d6, 0x0c53,
-  0xc7d7, 0x20e4,
-  0xc7d8, 0x0c55,
-  0xc7de, 0x20e5,
-  0xc7df, 0x0c5c,
-  0xc7e1, 0x20e6,
-  0xc7e4, 0x0c61,
-  0xc7ea, 0x20e9,
-  0xc7ef, 0x0c6c,
-  0xc7f7, 0x20ee,
-  0xc7f9, 0x0c76,
-  0xc7fb, 0x20f0,
-  0xc7fc, 0x0c79,
-  0xc7fd, 0x20f1,
-  0xc7fe, 0x0c7b,
-  0xc8a1, 0x0c7c,
-  0xc8a3, 0x20f2,
-  0xc8a4, 0x0c7f,
-  0xc8a7, 0x20f3,
-  0xc8a9, 0x0c84,
-  0xc8b0, 0x20f5,
-  0xc8b1, 0x0c8c,
-  0xc8b5, 0x20f6,
-  0xc8b6, 0x0c91,
-  0xc8b7, 0x20f7,
-  0xc8b8, 0x0c93,
-  0xc8c3, 0x20f8,
-  0xc8c7, 0x0ca2,
-  0xc8c8, 0x20fc,
-  0xc8c9, 0x0ca4,
-  0xc8cd, 0x20fd,
-  0xc8ce, 0x0ca9,
-  0xc8cf, 0x20fe,
-  0xc8d0, 0x0cab,
-  0xc8d2, 0x20ff,
-  0xc8d3, 0x0cae,
-  0xc8d9, 0x2100,
-  0xc8da, 0x0cb5,
-  0xc8de, 0x2101,
-  0xc8df, 0x0cba,
-  0xc8ed, 0x2102,
-  0xc8ee, 0x0cc9,
-  0xc8f1, 0x2103,
-  0xc8f4, 0x0ccf,
-  0xc8f7, 0x2106,
-  0xc8f9, 0x0cd4,
-  0xc8fa, 0x2108,
-  0xc8fb, 0x0cd6,
-  0xc8fc, 0x2109,
-  0xc8fd, 0x0cd8,
-  0xc9a1, 0x210a,
-  0xc9a2, 0x0cdb,
-  0xc9a5, 0x210b,
-  0xc9a6, 0x0cdf,
-  0xc9a7, 0x210c,
-  0xc9a9, 0x0ce2,
-  0xc9ac, 0x210e,
-  0xc9ad, 0x0ce6,
-  0xc9b1, 0x210f,
-  0xc9b2, 0x0ceb,
-  0xc9b4, 0x2110,
-  0xc9b5, 0x0cee,
-  0xc9b8, 0x2111,
-  0xc9ba, 0x0cf3,
-  0xc9c1, 0x2113,
-  0xc9c3, 0x0cfc,
-  0xc9c4, 0x2115,
-  0xc9c5, 0x0cfe,
-  0xc9c9, 0x2116,
-  0xc9ca, 0x0d03,
-  0xc9cb, 0x2117,
-  0xc9cc, 0x0d05,
-  0xc9cd, 0x2118,
-  0xc9ce, 0x0d07,
-  0xc9d5, 0x2119,
-  0xc9d6, 0x0d0f,
-  0xc9dc, 0x211a,
-  0xc9dd, 0x0d16,
-  0xc9de, 0x211b,
-  0xc9df, 0x0d18,
-  0xc9e1, 0x211c,
-  0xc9e2, 0x0d1b,
-  0xc9e3, 0x211d,
-  0xc9e4, 0x0d1d,
-  0xc9e5, 0x211e,
-  0xc9e6, 0x0d1f,
-  0xc9e8, 0x211f,
-  0xc9e9, 0x0d22,
-  0xc9f0, 0x2120,
-  0xc9f1, 0x0d2a,
-  0xc9f3, 0x2121,
-  0xc9f5, 0x0d2e,
-  0xc9f6, 0x2123,
-  0xc9f7, 0x0d30,
-  0xc9f8, 0x2124,
-  0xc9fa, 0x0d33,
-  0xc9fe, 0x2126,
-  0xcaa1, 0x0d38,
-  0xcaa4, 0x2127,
-  0xcaa7, 0x0d3e,
-  0xcaa8, 0x212a,
-  0xcaa9, 0x0d40,
-  0xcaaa, 0x212b,
-  0xcaac, 0x0d43,
-  0xcab1, 0x212d,
-  0xcab2, 0x0d49,
-  0xcab4, 0x212e,
-  0xcab7, 0x0d4e,
-  0xcabb, 0x2131,
-  0xcabc, 0x0d53,
-  0xcac6, 0x2132,
-  0xcac7, 0x0d5e,
-  0xcaca, 0x2133,
-  0xcacb, 0x0d62,
-  0xcacd, 0x2134,
-  0xcacf, 0x0d66,
-  0xcad3, 0x2136,
-  0xcad5, 0x0d6c,
-  0xcad9, 0x2138,
-  0xcada, 0x0d71,
-  0xcade, 0x2139,
-  0xcadf, 0x0d76,
-  0xcae0, 0x213a,
-  0xcae1, 0x0d78,
-  0xcae4, 0x213b,
-  0xcae5, 0x0d7c,
-  0xcae9, 0x213c,
-  0xcaeb, 0x0d82,
-  0xcaf4, 0x213e,
-  0xcaf6, 0x0d8d,
-  0xcaf7, 0x2140,
-  0xcaf8, 0x0d8f,
-  0xcafa, 0x2141,
-  0xcafb, 0x0d92,
-  0xcafd, 0x2142,
-  0xcafe, 0x0d95,
-  0xcba1, 0x0d96,
-  0xcba7, 0x2143,
-  0xcba8, 0x0d9d,
-  0xcbab, 0x2144,
-  0xcbac, 0x0da1,
-  0xcbad, 0x2145,
-  0xcbae, 0x0da3,
-  0xcbb3, 0x2146,
-  0xcbb4, 0x0da9,
-  0xcbb5, 0x2147,
-  0xcbb7, 0x0dac,
-  0xcbb8, 0x2149,
-  0xcbb9, 0x0dae,
-  0xcbbf, 0x214a,
-  0xcbc0, 0x0db5,
-  0xcbc7, 0x214b,
-  0xcbc8, 0x0dbd,
-  0xcbc9, 0x214c,
-  0xcbcd, 0x0dc2,
-  0xcbcf, 0x2150,
-  0xcbd1, 0x0dc6,
-  0xcbd3, 0x2152,
-  0xcbd4, 0x0dc9,
-  0xcbd5, 0x2153,
-  0xcbd6, 0x0dcb,
-  0xcbdf, 0x2154,
-  0xcbe1, 0x0dd6,
-  0xcbe4, 0x2156,
-  0xcbe5, 0x0dda,
-  0xcbe6, 0x2157,
-  0xcbe8, 0x0ddd,
-  0xcbea, 0x2159,
-  0xcbeb, 0x0de0,
-  0xcbef, 0x215a,
-  0xcbf1, 0x0de6,
-  0xcbf5, 0x215c,
-  0xcbf7, 0x0dec,
-  0xcbf8, 0x215e,
-  0xcbf9, 0x0dee,
-  0xcca1, 0x215f,
-  0xcca3, 0x0df6,
-  0xcca8, 0x2161,
-  0xcca9, 0x0dfc,
-  0xccac, 0x2162,
-  0xccad, 0x0e00,
-  0xccaf, 0x2163,
-  0xccb4, 0x0e07,
-  0xccb7, 0x2168,
-  0xccb9, 0x0e0c,
-  0xccbe, 0x216a,
-  0xccbf, 0x0e12,
-  0xccc0, 0x216b,
-  0xccc1, 0x0e14,
-  0xcccc, 0x216c,
-  0xcccd, 0x0e20,
-  0xccce, 0x216d,
-  0xcccf, 0x0e22,
-  0xccd0, 0x216e,
-  0xccd1, 0x0e24,
-  0xccd6, 0x216f,
-  0xccd7, 0x0e2a,
-  0xccda, 0x2170,
-  0xccdb, 0x0e2e,
-  0xccdc, 0x2171,
-  0xccdd, 0x0e30,
-  0xcce0, 0x2172,
-  0xcce1, 0x0e34,
-  0xcce2, 0x2173,
-  0xcce3, 0x0e36,
-  0xcce5, 0x2174,
-  0xcce6, 0x0e39,
-  0xccf5, 0x2175,
-  0xccf6, 0x0e49,
-  0xccf9, 0x2176,
-  0xccfb, 0x0e4e,
-  0xccfc, 0x2178,
-  0xcda1, 0x0e52,
-  0xcdad, 0x217b,
-  0xcdae, 0x0e5f,
-  0xcdb3, 0x217c,
-  0xcdb4, 0x0e65,
-  0xcdb7, 0x217d,
-  0xcdb8, 0x0e69,
-  0xcdbc, 0x217e,
-  0xcdbd, 0x0e6e,
-  0xcdbf, 0x217f,
-  0xcdc0, 0x0e71,
-  0xcdc5, 0x2180,
-  0xcdc6, 0x0e77,
-  0xcdc7, 0x2181,
-  0xcdc8, 0x0e79,
-  0xcdd2, 0x2182,
-  0xcdd3, 0x0e84,
-  0xcdd4, 0x2183,
-  0xcdd7, 0x0e88,
-  0xcddd, 0x2186,
-  0xcdde, 0x0e8f,
-  0xcde0, 0x2187,
-  0xcde1, 0x0e92,
-  0xcde4, 0x2188,
-  0xcde6, 0x0e97,
-  0xcde7, 0x218a,
-  0xcde8, 0x0e99,
-  0xcdf2, 0x218b,
-  0xcdf3, 0x0ea4,
-  0xcdf8, 0x218c,
-  0xcdf9, 0x0eaa,
-  0xcea1, 0x0eb0,
-  0xcea4, 0x218d,
-  0xcea6, 0x0eb5,
-  0xcea7, 0x218f,
-  0xcea8, 0x0eb7,
-  0xceaa, 0x2190,
-  0xceae, 0x0ebd,
-  0xceb0, 0x2194,
-  0xceb2, 0x0ec1,
-  0xceb3, 0x2196,
-  0xceb4, 0x0ec3,
-  0xcebd, 0x2197,
-  0xcebe, 0x0ecd,
-  0xcec0, 0x2198,
-  0xcec1, 0x0ed0,
-  0xcec5, 0x2199,
-  0xcec7, 0x0ed6,
-  0xcec8, 0x219b,
-  0xcec9, 0x0ed8,
-  0xceca, 0x219c,
-  0xcecb, 0x0eda,
-  0xcece, 0x219d,
-  0xced2, 0x0ee1,
-  0xced8, 0x21a1,
-  0xcedb, 0x0eea,
-  0xcedc, 0x21a4,
-  0xcedd, 0x0eec,
-  0xcede, 0x21a5,
-  0xcee0, 0x0eef,
-  0xceeb, 0x21a7,
-  0xceec, 0x0efb,
-  0xceed, 0x21a8,
-  0xceee, 0x0efd,
-  0xcef1, 0x21a9,
-  0xcef2, 0x0f01,
-  0xcef3, 0x21aa,
-  0xcef4, 0x0f03,
-  0xcefd, 0x21ab,
-  0xcfa1, 0x0f0e,
-  0xcfae, 0x21ad,
-  0xcfaf, 0x0f1c,
-  0xcfb0, 0x21ae,
-  0xcfb1, 0x0f1e,
-  0xcfb3, 0x21af,
-  0xcfb4, 0x0f21,
-  0xcfb7, 0x21b0,
-  0xcfb9, 0x0f26,
-  0xcfba, 0x21b2,
-  0xcfbb, 0x0f28,
-  0xcfbd, 0x21b3,
-  0xcfbe, 0x0f2b,
-  0xcfbf, 0x21b4,
-  0xcfc2, 0x0f2f,
-  0xcfc5, 0x21b7,
-  0xcfc6, 0x0f33,
-  0xcfc7, 0x21b8,
-  0xcfc8, 0x0f35,
-  0xcfca, 0x21b9,
-  0xcfcc, 0x0f39,
-  0xcfcd, 0x21bb,
-  0xcfcf, 0x0f3c,
-  0xcfd0, 0x21bd,
-  0xcfd1, 0x0f3e,
-  0xcfd4, 0x21be,
-  0xcfd9, 0x0f46,
-  0xcfda, 0x21c3,
-  0xcfdb, 0x0f48,
-  0xcfdc, 0x21c4,
-  0xcfdd, 0x0f4a,
-  0xcfdf, 0x21c5,
-  0xcfe0, 0x0f4d,
-  0xcfe2, 0x21c6,
-  0xcfe3, 0x0f50,
-  0xcfe7, 0x21c7,
-  0xcfe8, 0x0f55,
-  0xcfea, 0x21c8,
-  0xcfeb, 0x0f58,
-  0xcfec, 0x21c9,
-  0xcfed, 0x0f5a,
-  0xcfee, 0x21ca,
-  0xcfef, 0x0f5c,
-  0xcff4, 0x21cb,
-  0xcff5, 0x0f62,
-  0xcff9, 0x21cc,
-  0xcffb, 0x0f68,
-  0xcffe, 0x21ce,
-  0xd0a1, 0x0f6c,
-  0xd0a5, 0x21cf,
-  0xd0a6, 0x0f71,
-  0xd0ad, 0x21d0,
-  0xd0af, 0x0f7a,
-  0xd0b2, 0x21d2,
-  0xd0b5, 0x0f80,
-  0xd0ba, 0x21d5,
-  0xd0bc, 0x0f87,
-  0xd0bf, 0x21d7,
-  0xd0c0, 0x0f8b,
-  0xd0c6, 0x21d8,
-  0xd0c7, 0x0f92,
-  0xd0cb, 0x21d9,
-  0xd0cc, 0x0f97,
-  0xd0e2, 0x21da,
-  0xd0e3, 0x0fae,
-  0xd0e5, 0x21db,
-  0xd0e6, 0x0fb1,
-  0xd0eb, 0x21dc,
-  0xd0ec, 0x0fb7,
-  0xd0ed, 0x21dd,
-  0xd0ee, 0x0fb9,
-  0xd0f7, 0x21de,
-  0xd0fa, 0x0fc5,
-  0xd0fc, 0x21e1,
-  0xd0fd, 0x0fc8,
-  0xd1a1, 0x21e2,
-  0xd1a3, 0x0fcc,
-  0xd1a4, 0x21e4,
-  0xd1a5, 0x0fce,
-  0xd1a7, 0x21e5,
-  0xd1a8, 0x0fd1,
-  0xd1ab, 0x21e6,
-  0xd1ac, 0x0fd5,
-  0xd1af, 0x21e7,
-  0xd1b2, 0x0fdb,
-  0xd1b5, 0x21ea,
-  0xd1b8, 0x0fe1,
-  0xd1b9, 0x21ed,
-  0xd1ba, 0x0fe3,
-  0xd1bb, 0x21ee,
-  0xd1bd, 0x0fe6,
-  0xd1c6, 0x21f0,
-  0xd1c9, 0x0ff2,
-  0xd1cb, 0x21f3,
-  0xd1cc, 0x0ff5,
-  0xd1ce, 0x21f4,
-  0xd1d0, 0x0ff9,
-  0xd1d5, 0x21f6,
-  0xd1d7, 0x1000,
-  0xd1de, 0x21f8,
-  0xd1df, 0x1008,
-  0xd1e1, 0x21f9,
-  0xd1e3, 0x100c,
-  0xd1e8, 0x21fb,
-  0xd1ea, 0x1013,
-  0xd1ec, 0x21fd,
-  0xd1ed, 0x1016,
-  0xd1ee, 0x21fe,
-  0xd1f0, 0x1019,
-  0xd1f1, 0x2200,
-  0xd1f2, 0x101b,
-  0xd1f4, 0x2201,
-  0xd1f5, 0x101e,
-  0xd1f7, 0x2202,
-  0xd1fa, 0x1023,
-  0xd2a1, 0x1028,
-  0xd2a2, 0x2205,
-  0xd2a3, 0x102a,
-  0xd2a5, 0x2206,
-  0xd2a6, 0x102d,
-  0xd2a9, 0x2207,
-  0xd2aa, 0x1031,
-  0xd2af, 0x2208,
-  0xd2b0, 0x1037,
-  0xd2b3, 0x2209,
-  0xd2b4, 0x103b,
-  0xd2b5, 0x220a,
-  0xd2b7, 0x103e,
-  0xd2bd, 0x220c,
-  0xd2be, 0x1045,
-  0xd2bf, 0x220d,
-  0xd2c0, 0x1047,
-  0xd2c3, 0x220e,
-  0xd2c4, 0x104b,
-  0xd2c5, 0x220f,
-  0xd2c6, 0x104d,
-  0xd2c7, 0x2210,
-  0xd2c8, 0x104f,
-  0xd2cf, 0x2211,
-  0xd2d0, 0x1057,
-  0xd2d5, 0x2212,
-  0xd2d6, 0x105d,
-  0xd2da, 0x2213,
-  0xd2db, 0x1062,
-  0xd2e4, 0x2214,
-  0xd2e6, 0x106d,
-  0xd2e8, 0x2216,
-  0xd2ec, 0x1073,
-  0xd2ef, 0x221a,
-  0xd2f0, 0x1077,
-  0xd2f1, 0x221b,
-  0xd2f2, 0x1079,
-  0xd2f5, 0x221c,
-  0xd2f6, 0x107d,
-  0xd2f8, 0x221d,
-  0xd2f9, 0x1080,
-  0xd2fb, 0x221e,
-  0xd2fc, 0x1083,
-  0xd2fe, 0x221f,
-  0xd3a1, 0x1086,
-  0xd3a3, 0x2220,
-  0xd3ad, 0x1092,
-  0xd3ae, 0x222a,
-  0xd3af, 0x1094,
-  0xd3b1, 0x222b,
-  0xd3b2, 0x1097,
-  0xd3b4, 0x222c,
-  0xd3b7, 0x109c,
-  0xd3b8, 0x222f,
-  0xd3b9, 0x109e,
-  0xd3bb, 0x2230,
-  0xd3bc, 0x10a1,
-  0xd3c5, 0x2231,
-  0xd3c6, 0x10ab,
-  0xd3c7, 0x2232,
-  0xd3c8, 0x10ad,
-  0xd3ca, 0x2233,
-  0xd3cd, 0x10b2,
-  0xd3d5, 0x2236,
-  0xd3d6, 0x10bb,
-  0xd3df, 0x2237,
-  0xd3e1, 0x10c6,
-  0xd3e3, 0x2239,
-  0xd3e4, 0x10c9,
-  0xd3e6, 0x223a,
-  0xd3e7, 0x10cc,
-  0xd3eb, 0x223b,
-  0xd3ed, 0x10d2,
-  0xd3ef, 0x223d,
-  0xd3f0, 0x10d5,
-  0xd3f4, 0x223e,
-  0xd3f5, 0x10da,
-  0xd3fc, 0x223f,
-  0xd3fd, 0x10e2,
-  0xd3fe, 0x2240,
-  0xd4a1, 0x10e4,
-  0xd4a4, 0x2241,
-  0xd4a5, 0x10e8,
-  0xd4a6, 0x2242,
-  0xd4a9, 0x10ec,
-  0xd4af, 0x2245,
-  0xd4b3, 0x10f6,
-  0xd4b5, 0x2249,
-  0xd4b7, 0x10fa,
-  0xd4b8, 0x224b,
-  0xd4b9, 0x10fc,
-  0xd4bc, 0x224c,
-  0xd4bd, 0x1100,
-  0xd4be, 0x224d,
-  0xd4c0, 0x1103,
-  0xd4c4, 0x224f,
-  0xd4c5, 0x1108,
-  0xd4c6, 0x2250,
-  0xd4c8, 0x110b,
-  0xd4c9, 0x2252,
-  0xd4ca, 0x110d,
-  0xd4cb, 0x2253,
-  0xd4cf, 0x1112,
-  0xd4d3, 0x2257,
-  0xd4d4, 0x1117,
-  0xd4d8, 0x2258,
-  0xd4d9, 0x111c,
-  0xd4dc, 0x2259,
-  0xd4e1, 0x1124,
-  0xd4e4, 0x225e,
-  0xd4e5, 0x1128,
-  0xd4e6, 0x225f,
-  0xd4e7, 0x112a,
-  0xd4ee, 0x2260,
-  0xd4ef, 0x1132,
-  0xd4f0, 0x2261,
-  0xd4f5, 0x1138,
-  0xd4f9, 0x2266,
-  0xd4fa, 0x113d,
-  0xd4fe, 0x2267,
-  0xd5a1, 0x2268,
-  0xd5a3, 0x1144,
-  0xd5a9, 0x226a,
-  0xd5aa, 0x114b,
-  0xd5ab, 0x226b,
-  0xd5ac, 0x114d,
-  0xd5ae, 0x226c,
-  0xd5af, 0x1150,
-  0xd5b1, 0x226d,
-  0xd5b2, 0x1153,
-  0xd5b5, 0x226e,
-  0xd5b9, 0x115a,
-  0xd5bb, 0x2272,
-  0xd5bc, 0x115d,
-  0xd5bd, 0x2273,
-  0xd5be, 0x115f,
-  0xd5c0, 0x2274,
-  0xd5c1, 0x1162,
-  0xd5c5, 0x2275,
-  0xd5c6, 0x1167,
-  0xd5c7, 0x2276,
-  0xd5c8, 0x1169,
-  0xd5ca, 0x2277,
-  0xd5cc, 0x116d,
-  0xd5cd, 0x2279,
-  0xd5ce, 0x116f,
-  0xd5d4, 0x227a,
-  0xd5d5, 0x1176,
-  0xd5dd, 0x227b,
-  0xd5df, 0x1180,
-  0xd5e0, 0x227d,
-  0xd5e1, 0x1182,
-  0xd5e2, 0x227e,
-  0xd5e3, 0x1184,
-  0xd5ea, 0x227f,
-  0xd5ed, 0x118e,
-  0xd5ef, 0x2282,
-  0xd5f0, 0x1191,
-  0xd5f2, 0x2283,
-  0xd5f4, 0x1195,
-  0xd5f7, 0x15eb,
-  0xd5f8, 0x1199,
-  0xd6a1, 0x2285,
-  0xd6a5, 0x11a4,
-  0xd6af, 0x2289,
-  0xd6b1, 0x11b0,
-  0xd6b4, 0x228b,
-  0xd6b5, 0x11b4,
-  0xd6bb, 0x228c,
-  0xd6bc, 0x11bb,
-  0xd6bd, 0x228d,
-  0xd6be, 0x11bd,
-  0xd6bf, 0x228e,
-  0xd6c1, 0x11c0,
-  0xd6c4, 0x2290,
-  0xd6c5, 0x11c4,
-  0xd6ca, 0x2291,
-  0xd6cb, 0x11ca,
-  0xd6cd, 0x2292,
-  0xd6ce, 0x11cd,
-  0xd6d3, 0x2293,
-  0xd6d4, 0x11d3,
-  0xd6d5, 0x2294,
-  0xd6d8, 0x11d7,
-  0xd6da, 0x2297,
-  0xd6db, 0x11da,
-  0xd6df, 0x2298,
-  0xd6e0, 0x11df,
-  0xd6e1, 0x2299,
-  0xd6e2, 0x11e1,
-  0xd6e5, 0x229a,
-  0xd6e6, 0x11e5,
-  0xd6e7, 0x229b,
-  0xd6e9, 0x11e8,
-  0xd6ee, 0x229d,
-  0xd6f0, 0x11ef,
-  0xd6f2, 0x229f,
-  0xd6f3, 0x11f2,
-  0xd6f5, 0x22a0,
-  0xd6f7, 0x11f6,
-  0xd6fc, 0x22a2,
-  0xd7a1, 0x11fe,
-  0xd7a4, 0x22a5,
-  0xd7a5, 0x1202,
-  0xd7a8, 0x22a6,
-  0xd7ab, 0x1208,
-  0xd7ac, 0x22a9,
-  0xd7ad, 0x120a,
-  0xd7ae, 0x22aa,
-  0xd7b2, 0x120f,
-  0xd7b3, 0x22ae,
-  0xd7b5, 0x1212,
-  0xd7b6, 0x22b0,
-  0xd7b7, 0x1214,
-  0xd7b8, 0x22b1,
-  0xd7bd, 0x121a,
-  0xd7c7, 0x22b6,
-  0xd7c8, 0x1225,
-  0xd7ca, 0x22b7,
-  0xd7cb, 0x1228,
-  0xd7d5, 0x22b8,
-  0xd7d6, 0x1233,
-  0xd7db, 0x22b9,
-  0xd7df, 0x123c,
-  0xd7e7, 0x22bd,
-  0xd7e8, 0x1245,
-  0xd7e9, 0x22be,
-  0xd7eb, 0x1248,
-  0xd8a1, 0x1257,
-  0xd8c4, 0x22c0,
-  0xd8c5, 0x127b,
-  0xd8c7, 0x22c1,
-  0xd8c8, 0x127e,
-  0xd8c9, 0x22c2,
-  0xd8ca, 0x1280,
-  0xd8cc, 0x22c3,
-  0xd8ce, 0x1284,
-  0xd8d0, 0x22c5,
-  0xd8d2, 0x1288,
-  0xd8d3, 0x22c7,
-  0xd8d4, 0x128a,
-  0xd8d9, 0x22c8,
-  0xd8da, 0x1290,
-  0xd8db, 0x22c9,
-  0xd8dd, 0x1293,
-  0xd8f1, 0x22cb,
-  0xd8f2, 0x12a8,
-  0xd8f6, 0x22cc,
-  0xd8f8, 0x12ae,
-  0xd9a1, 0x12b5,
-  0xd9ad, 0x22ce,
-  0xd9ae, 0x12c2,
-  0xd9af, 0x22cf,
-  0xd9b0, 0x12c4,
-  0xd9b1, 0x22d0,
-  0xd9b4, 0x12c8,
-  0xd9c7, 0x22d3,
-  0xd9c8, 0x12dc,
-  0xd9cd, 0x22d4,
-  0xd9d1, 0x12e5,
-  0xd9dd, 0x22d8,
-  0xd9de, 0x12f2,
-  0xd9e1, 0x22d9,
-  0xd9e2, 0x12f6,
-  0xd9e4, 0x22da,
-  0xd9e5, 0x12f9,
-  0xd9e6, 0x22db,
-  0xd9e7, 0x12fb,
-  0xd9ec, 0x22dc,
-  0xd9ed, 0x1301,
-  0xd9f4, 0x22dd,
-  0xd9f6, 0x130a,
-  0xdaa1, 0x1313,
-  0xdaa5, 0x22df,
-  0xdae0, 0x1352,
-  0xdaea, 0x231a,
-  0xdaeb, 0x135d,
-  0xdaf7, 0x231b,
-  0xdaf8, 0x136a,
-  0xdaf9, 0x231c,
-  0xdafa, 0x136c,
-  0xdafe, 0x231d,
-  0xdba1, 0x1371,
-  0xdba3, 0x231e,
-  0xdba4, 0x1374,
-  0xdba6, 0x231f,
-  0xdba7, 0x1377,
-  0xdba9, 0x2320,
-  0xdbab, 0x137b,
-  0xdbbb, 0x2322,
-  0xdbbc, 0x138c,
-  0xdbbd, 0x2323,
-  0xdbbe, 0x138e,
-  0xdbcf, 0x2324,
-  0xdbd0, 0x13a0,
-  0xdbd1, 0x2325,
-  0xdbd2, 0x13a2,
-  0xdbdb, 0x2326,
-  0xdbdc, 0x13ac,
-  0xdbde, 0x2327,
-  0xdbdf, 0x13af,
-  0xdbe2, 0x2328,
-  0xdbe3, 0x13b3,
-  0xdbe4, 0x2329,
-  0xdbe5, 0x13b5,
-  0xdbeb, 0x232a,
-  0xdbec, 0x13bc,
-  0xdbee, 0x232b,
-  0xdbef, 0x13bf,
-  0xdbf1, 0x232c,
-  0xdbf2, 0x13c2,
-  0xdbf5, 0x232d,
-  0xdbf8, 0x13c8,
-  0xdca1, 0x13cf,
-  0xdcbc, 0x2330,
-  0xdcbd, 0x13eb,
-  0xdcbf, 0x2331,
-  0xdcc0, 0x13ee,
-  0xdcc2, 0x2332,
-  0xdcc3, 0x13f1,
-  0xdcc8, 0x2333,
-  0xdccb, 0x13f9,
-  0xdcd1, 0x2336,
-  0xdcd2, 0x1400,
-  0xdcd7, 0x2337,
-  0xdcd8, 0x1406,
-  0xdce0, 0x2338,
-  0xdce1, 0x140f,
-  0xdce3, 0x2339,
-  0xdce5, 0x1413,
-  0xdce9, 0x233b,
-  0xdceb, 0x1419,
-  0xdcf1, 0x233d,
-  0xdcf2, 0x1420,
-  0xdcf6, 0x233e,
-  0xdcf7, 0x1425,
-  0xdcf9, 0x233f,
-  0xdcfa, 0x1428,
-  0xdcfd, 0x2340,
-  0xdda1, 0x2342,
-  0xdda2, 0x142e,
-  0xdda3, 0x2343,
-  0xdda8, 0x1434,
-  0xddaa, 0x2348,
-  0xddac, 0x1438,
-  0xddb2, 0x234a,
-  0xddb3, 0x143f,
-  0xddb5, 0x234b,
-  0xddb6, 0x1442,
-  0xddba, 0x234c,
-  0xddbc, 0x1448,
-  0xddd3, 0x234e,
-  0xddd4, 0x1460,
-  0xdddb, 0x234f,
-  0xdddc, 0x1468,
-  0xddde, 0x2350,
-  0xdddf, 0x146b,
-  0xdde4, 0x2351,
-  0xdde5, 0x1471,
-  0xddeb, 0x2352,
-  0xddec, 0x1478,
-  0xddf1, 0x2353,
-  0xddf2, 0x147e,
-  0xddf6, 0x2354,
-  0xddf8, 0x1484,
-  0xddfc, 0x2356,
-  0xddfd, 0x1489,
-  0xddfe, 0x2357,
-  0xdea1, 0x148b,
-  0xdead, 0x2358,
-  0xdeae, 0x1498,
-  0xdeb4, 0x2359,
-  0xdeb5, 0x149f,
-  0xdeba, 0x235a,
-  0xdebb, 0x14a5,
-  0xdec6, 0x235b,
-  0xdec7, 0x14b1,
-  0xdecf, 0x235c,
-  0xded0, 0x14ba,
-  0xded1, 0x235d,
-  0xded3, 0x14bd,
-  0xded8, 0x235f,
-  0xded9, 0x14c3,
-  0xdee2, 0x2360,
-  0xdee3, 0x14cd,
-  0xdee8, 0x2361,
-  0xdee9, 0x14d3,
-  0xdeec, 0x2362,
-  0xdeed, 0x14d7,
-  0xdef3, 0x2363,
-  0xdef4, 0x14de,
-  0xdefc, 0x2364,
-  0xdefd, 0x14e7,
-  0xdfa1, 0x14e9,
-  0xdfa2, 0x2365,
-  0xdfa4, 0x14ec,
-  0xdfa5, 0x2367,
-  0xdfa6, 0x14ee,
-  0xdfb4, 0x2368,
-  0xdfb5, 0x14fd,
-  0xdfbc, 0x2369,
-  0xdfbe, 0x1506,
-  0xdfbf, 0x236b,
-  0xdfc0, 0x1508,
-  0xdfc2, 0x236c,
-  0xdfc4, 0x150c,
-  0xdfcc, 0x236e,
-  0xdfcd, 0x1515,
-  0xdfd0, 0x236f,
-  0xdfd1, 0x1519,
-  0xdfd5, 0x2370,
-  0xdfd6, 0x151e,
-  0xdfd8, 0x2371,
-  0xdfda, 0x1522,
-  0xdfdc, 0x2373,
-  0xdfdd, 0x1525,
-  0xdfe0, 0x2374,
-  0xdfe1, 0x1529,
-  0xdfe2, 0x2375,
-  0xdfe3, 0x152b,
-  0xdfe6, 0x2376,
-  0xdfe7, 0x152f,
-  0xdfe9, 0x2377,
-  0xdfea, 0x1532,
-  0xdfeb, 0x2378,
-  0xdfec, 0x1534,
-  0xdfef, 0x2379,
-  0xdff0, 0x1538,
-  0xdff5, 0x237a,
-  0xdff6, 0x153e,
-  0xdff9, 0x237b,
-  0xdffa, 0x1542,
-  0xe0a1, 0x1547,
-  0xe0b6, 0x237c,
-  0xe0b8, 0x155e,
-  0xe0bf, 0x237e,
-  0xe0c0, 0x1566,
-  0xe0c8, 0x237f,
-  0xe0c9, 0x156f,
-  0xe0ce, 0x2380,
-  0xe0cf, 0x1575,
-  0xe0d3, 0x2381,
-  0xe0d4, 0x157a,
-  0xe0e0, 0x2382,
-  0xe0e1, 0x1587,
-  0xe0f0, 0x2383,
-  0xe0f1, 0x1597,
-  0xe0f8, 0x2384,
-  0xe0f9, 0x159f,
-  0xe0fc, 0x2385,
-  0xe1a1, 0x15a5,
-  0xe1ab, 0x2388,
-  0xe1ac, 0x15b0,
-  0xe1ad, 0x2389,
-  0xe1ae, 0x15b2,
-  0xe1b0, 0x238a,
-  0xe1b1, 0x15b5,
-  0xe1b4, 0x238b,
-  0xe1b5, 0x15b9,
-  0xe1bb, 0x238c,
-  0xe1bc, 0x15c0,
-  0xe1bd, 0x238d,
-  0xe1be, 0x15c2,
-  0xe1c0, 0x238e,
-  0xe1c2, 0x15c6,
-  0xe1c9, 0x2390,
-  0xe1ca, 0x15ce,
-  0xe1d0, 0x2391,
-  0xe1d1, 0x15d5,
-  0xe1db, 0x2392,
-  0xe1dc, 0x15e0,
-  0xe1e1, 0x07aa,
-  0xe1e2, 0x2393,
-  0xe1e3, 0x15e7,
-  0xe1e7, 0x1198,
-  0xe1e8, 0x15ec,
-  0xe1ee, 0x2394,
-  0xe1f0, 0x15f4,
-  0xe1f6, 0x2396,
-  0xe1f7, 0x15fb,
-  0xe1f8, 0x2397,
-  0xe1f9, 0x15fd,
-  0xe1fd, 0x2398,
-  0xe1fe, 0x1602,
-  0xe2a1, 0x1603,
-  0xe2a4, 0x2399,
-  0xe2a5, 0x1607,
-  0xe2a8, 0x239a,
-  0xe2a9, 0x160b,
-  0xe2bb, 0x239b,
-  0xe2c5, 0x10c5,
-  0xe2c6, 0x23a5,
-  0xe2cf, 0x1631,
-  0xe2d0, 0x23ae,
-  0xe2d1, 0x1633,
-  0xe2d9, 0x23af,
-  0xe2da, 0x163c,
-  0xe2e3, 0x23b0,
-  0xe2e5, 0x1647,
-  0xe2e6, 0x23b2,
-  0xe2e7, 0x1649,
-  0xe2e9, 0x23b3,
-  0xe2ec, 0x164e,
-  0xe2f8, 0x23b6,
-  0xe2f9, 0x165b,
-  0xe2fa, 0x23b7,
-  0xe2fe, 0x1660,
-  0xe3a1, 0x1661,
-  0xe3a2, 0x23bb,
-  0xe3a3, 0x1663,
-  0xe3a5, 0x23bc,
-  0xe3a6, 0x1666,
-  0xe3ab, 0x23bd,
-  0xe3ac, 0x166c,
-  0xe3b4, 0x23be,
-  0xe3b5, 0x1675,
-  0xe3c5, 0x23bf,
-  0xe3dc, 0x169c,
-  0xe3e3, 0x23d6,
-  0xe3e4, 0x16a4,
-  0xe3ed, 0x23d7,
-  0xe3ee, 0x16ae,
-  0xe3f1, 0x23d8,
-  0xe3f3, 0x16b3,
-  0xe3f8, 0x23da,
-  0xe3f9, 0x16b9,
-  0xe3fe, 0x23db,
-  0xe4a1, 0x16bf,
-  0xe4a4, 0x23dc,
-  0xe4a6, 0x16c4,
-  0xe4ab, 0x23de,
-  0xe4ac, 0x16ca,
-  0xe4af, 0x23df,
-  0xe4b2, 0x16d0,
-  0xe4b5, 0x23e2,
-  0xe4b7, 0x16d5,
-  0xe4c2, 0x23e4,
-  0xe4c3, 0x16e1,
-  0xe4c5, 0x23e5,
-  0xe4c6, 0x16e4,
-  0xe4c9, 0x23e6,
-  0xe4ca, 0x16e8,
-  0xe4d9, 0x23e7,
-  0xe4da, 0x16f8,
-  0xe4dc, 0x23e8,
-  0xe4dd, 0x16fb,
-  0xe4de, 0x23e9,
-  0xe4df, 0x16fd,
-  0xe4e4, 0x23ea,
-  0xe4e5, 0x1703,
-  0xe4eb, 0x23eb,
-  0xe4ed, 0x170b,
-  0xe4f2, 0x23ed,
-  0xe4f3, 0x1711,
-  0xe4fe, 0x23ee,
-  0xe5a1, 0x171d,
-  0xe5b0, 0x23ef,
-  0xe5b1, 0x172d,
-  0xe5b9, 0x23f0,
-  0xe5ba, 0x1736,
-  0xe5c7, 0x23f1,
-  0xe5c8, 0x1744,
-  0xe5c9, 0x23f2,
-  0xe5ca, 0x1746,
-  0xe5ce, 0x23f3,
-  0xe5cf, 0x174b,
-  0xe5f0, 0x23f4,
-  0xe5f1, 0x176d,
-  0xe5f2, 0x23f5,
-  0xe5f3, 0x176f,
-  0xe5fc, 0x23f6,
-  0xe5fe, 0x177a,
-  0xe6a1, 0x177b,
-  0xe6a3, 0x23f8,
-  0xe6a4, 0x177e,
-  0xe6ab, 0x23f9,
-  0xe6ad, 0x1787,
-  0xe6ae, 0x23fb,
-  0xe6af, 0x1789,
-  0xe6b4, 0x23fc,
-  0xe6b6, 0x1790,
-  0xe6bf, 0x23fe,
-  0xe6c0, 0x179a,
-  0xe6c8, 0x23ff,
-  0xe6ca, 0x17a4,
-  0xe6cd, 0x2401,
-  0xe6ce, 0x17a8,
-  0xe6e0, 0x2402,
-  0xe7a1, 0x2421,
-  0xe7db, 0x1813,
-  0xe7e1, 0x245b,
-  0xe7e3, 0x181b,
-  0xe7e7, 0x245d,
-  0xe7e8, 0x1820,
-  0xe7ef, 0x245e,
-  0xe7f0, 0x1828,
-  0xe7f4, 0x245f,
-  0xe7f7, 0x182f,
-  0xe8a1, 0x1837,
-  0xe8a8, 0x2462,
-  0xe8a9, 0x183f,
-  0xe8ac, 0x2463,
-  0xe8ad, 0x1843,
-  0xe8b6, 0x2464,
-  0xe8b7, 0x184d,
-  0xe8b8, 0x2465,
-  0xe8bb, 0x1851,
-  0xe8bf, 0x2468,
-  0xe8c1, 0x1857,
-  0xe8c5, 0x246a,
-  0xe8c6, 0x185c,
-  0xe8c7, 0x246b,
-  0xe8ca, 0x1860,
-  0xe8ce, 0x246e,
-  0xe8cf, 0x1865,
-  0xe8d0, 0x246f,
-  0xe8d1, 0x1867,
-  0xe8d3, 0x2470,
-  0xe8d4, 0x186a,
-  0xe8dd, 0x2471,
-  0xe8de, 0x1874,
-  0xe8df, 0x2472,
-  0xe8e0, 0x1876,
-  0xe8e2, 0x2473,
-  0xe8e4, 0x187a,
-  0xe8e5, 0x2475,
-  0xe8e6, 0x187c,
-  0xe8e7, 0x2476,
-  0xe8e8, 0x187e,
-  0xe8eb, 0x2477,
-  0xe8ec, 0x1882,
-  0xe8ed, 0x2478,
-  0xe8ee, 0x1884,
-  0xe8ef, 0x2479,
-  0xe8f0, 0x1886,
-  0xe8f9, 0x247a,
-  0xe8fa, 0x1890,
-  0xe8fc, 0x247b,
-  0xe8fe, 0x1894,
-  0xe9a1, 0x247d,
-  0xe9a2, 0x1896,
-  0xe9ad, 0x247e,
-  0xe9ae, 0x18a2,
-  0xe9b4, 0x247f,
-  0xe9b6, 0x18aa,
-  0xe9b7, 0x2481,
-  0xe9b8, 0x18ac,
-  0xe9c4, 0x2482,
-  0xe9c5, 0x18b9,
-  0xe9c6, 0x2483,
-  0xe9c7, 0x18bb,
-  0xe9c9, 0x2484,
-  0xe9ca, 0x18be,
-  0xe9d6, 0x2485,
-  0xe9d7, 0x18cb,
-  0xe9da, 0x2486,
-  0xe9db, 0x18cf,
-  0xe9e4, 0x2487,
-  0xe9e5, 0x18d9,
-  0xe9e6, 0x2488,
-  0xe9e8, 0x18dc,
-  0xe9e9, 0x248a,
-  0xe9ea, 0x18de,
-  0xe9eb, 0x248b,
-  0xe9ec, 0x18e0,
-  0xe9ed, 0x248c,
-  0xeaa1, 0x249e,
-  0xeaa6, 0x18f8,
-  0xeaa7, 0x24a3,
-  0xeaa9, 0x18fb,
-  0xeab1, 0x24a5,
-  0xeab2, 0x1904,
-  0xeabc, 0x24a6,
-  0xeabd, 0x190f,
-  0xeaca, 0x24a7,
-  0xeacb, 0x191d,
-  0xeacd, 0x24a8,
-  0xeace, 0x1920,
-  0xead3, 0x24a9,
-  0xead4, 0x1926,
-  0xeada, 0x24aa,
-  0xeaf0, 0x1942,
-  0xeba1, 0x1951,
-  0xeba7, 0x24c0,
-  0xeba8, 0x1958,
-  0xebaa, 0x24c1,
-  0xebab, 0x195b,
-  0xebb2, 0x24c2,
-  0xebb3, 0x1963,
-  0xebb9, 0x24c3,
-  0xebba, 0x196a,
-  0xebca, 0x24c4,
-  0xebcc, 0x197c,
-  0xebcd, 0x24c6,
-  0xebce, 0x197e,
-  0xebd6, 0x24c7,
-  0xebd7, 0x1987,
-  0xebda, 0x24c8,
-  0xebdb, 0x198b,
-  0xebe1, 0x24c9,
-  0xebe2, 0x1992,
-  0xebf7, 0x24ca,
-  0xebf8, 0x19a8,
-  0xeca1, 0x19af,
-  0xeca3, 0x24cb,
-  0xeca4, 0x19b2,
-  0xeca9, 0x24cc,
-  0xecaf, 0x19bd,
-  0xecb1, 0x24d2,
-  0xecb2, 0x19c0,
-  0xecb4, 0x24d3,
-  0xecb6, 0x19c4,
-  0xecbe, 0x24d5,
-  0xecc0, 0x19ce,
-  0xecc1, 0x24d7,
-  0xecc2, 0x19d0,
-  0xecc7, 0x24d8,
-  0xecc8, 0x19d6,
-  0xeccb, 0x24d9,
-  0xeccc, 0x19da,
-  0xece2, 0x24da,
-  0xece3, 0x19f1,
-  0xecf2, 0x24db,
-  0xecf3, 0x1a01,
-  0xecf5, 0x24dc,
-  0xecf6, 0x1a04,
-  0xecf8, 0x24dd,
-  0xecf9, 0x1a07,
-  0xeda1, 0x24de,
-  0xeda2, 0x1a0e,
-  0xeda8, 0x24df,
-  0xeda9, 0x1a15,
-  0xedaf, 0x24e0,
-  0xedb1, 0x1a1d,
-  0xedb4, 0x24e2,
-  0xedb5, 0x1a21,
-  0xedb6, 0x24e3,
-  0xedb7, 0x1a23,
-  0xedb8, 0x24e4,
-  0xedb9, 0x1a25,
-  0xedba, 0x24e5,
-  0xedbb, 0x1a27,
-  0xedbf, 0x24e6,
-  0xedc0, 0x1a2c,
-  0xedc2, 0x24e7,
-  0xedc4, 0x1a30,
-  0xedcc, 0x24e9,
-  0xedce, 0x1a3a,
-  0xedd3, 0x24eb,
-  0xedd4, 0x1a40,
-  0xedd7, 0x24ec,
-  0xedd8, 0x1a44,
-  0xede8, 0x24ed,
-  0xede9, 0x1a55,
-  0xedee, 0x24ee,
-  0xedef, 0x1a5b,
-  0xedf9, 0x24ef,
-  0xedfb, 0x1a67,
-  0xeea1, 0x1a6b,
-  0xeebc, 0x24f1,
-  0xeebd, 0x1a87,
-  0xeebf, 0x24f2,
-  0xeec0, 0x1a8a,
-  0xeec4, 0x24f3,
-  0xefa1, 0x252e,
-  0xeff2, 0x1b1a,
-  0xf0a1, 0x1b27,
-  0xf0a3, 0x257f,
-  0xf0a4, 0x1b2a,
-  0xf0af, 0x2580,
-  0xf0da, 0x1b60,
-  0xf0dc, 0x25ab,
-  0xf0de, 0x1b64,
-  0xf0df, 0x25ad,
-  0xf0e0, 0x1b66,
-  0xf0e9, 0x25ae,
-  0xf0ea, 0x1b70,
-  0xf0ec, 0x25af,
-  0xf0ed, 0x1b73,
-  0xf0ef, 0x25b0,
-  0xf0f0, 0x1b76,
-  0xf0f7, 0x25b1,
-  0xf0f8, 0x1b7e,
-  0xf0f9, 0x25b2,
-  0xf0fa, 0x1b80,
-  0xf0fc, 0x25b3,
-  0xf0fd, 0x1b83,
-  0xf1a1, 0x1b85,
-  0xf1a8, 0x25b4,
-  0xf1a9, 0x1b8d,
-  0xf1ab, 0x25b5,
-  0xf1ac, 0x1b90,
-  0xf1ae, 0x25b6,
-  0xf1af, 0x1b93,
-  0xf1b2, 0x25b7,
-  0xf1b3, 0x1b97,
-  0xf1bc, 0x25b8,
-  0xf1bd, 0x1ba1,
-  0xf1c0, 0x25b9,
-  0xf1c1, 0x1ba5,
-  0xf1c9, 0x25ba,
-  0xf1ca, 0x1bae,
-  0xf1cd, 0x25bb,
-  0xf1ce, 0x1bb2,
-  0xf1cf, 0x25bc,
-  0xf1d1, 0x1bb5,
-  0xf1da, 0x25be,
-  0xf1db, 0x1bbf,
-  0xf1dc, 0x25bf,
-  0xf1dd, 0x1bc1,
-  0xf1e4, 0x25c0,
-  0xf1e5, 0x1bc9,
-  0xf1ec, 0x25c1,
-  0xf1ed, 0x1bd1,
-  0xf1ef, 0x25c2,
-  0xf1f0, 0x1bd4,
-  0xf1f7, 0x25c3,
-  0xf1f8, 0x1bdc,
-  0xf1f9, 0x25c4,
-  0xf1fa, 0x1bde,
-  0xf1fc, 0x25c5,
-  0xf2a1, 0x25c8,
-  0xf2ae, 0x1bf0,
-  0xf2b1, 0x25d5,
-  0xf2b3, 0x1bf5,
-  0xf2b9, 0x25d7,
-  0xf2ba, 0x1bfc,
-  0xf2c3, 0x25d8,
-  0xf2c4, 0x1c06,
-  0xf2c9, 0x25d9,
-  0xf2ca, 0x1c0c,
-  0xf2cc, 0x25da,
-  0xf2ce, 0x1c10,
-  0xf2cf, 0x25dc,
-  0xf2d0, 0x1c12,
-  0xf2d3, 0x25dd,
-  0xf2d4, 0x1c16,
-  0xf2e5, 0x25de,
-  0xf2e6, 0x1c28,
-  0xf2ee, 0x25df,
-  0xf2ef, 0x1c31,
-  0xf2f7, 0x25e0,
-  0xf2f8, 0x1c3a,
-  0xf2fd, 0x25e1,
-  0xf2fe, 0x1c40,
-  0xf3a1, 0x1c41,
-  0xf3bf, 0x25e2,
-  0xf3c0, 0x1c60,
-  0xf3c6, 0x25e3,
-  0xf3c7, 0x1c67,
-  0xf3c8, 0x25e4,
-  0xf3c9, 0x1c69,
-  0xf3d6, 0x25e5,
-  0xf3d7, 0x1c77,
-  0xf3d9, 0x25e6,
-  0xf3da, 0x1c7a,
-  0xf3e5, 0x25e7,
-  0xf3e7, 0x1c87,
-  0xf3ea, 0x25e9,
-  0xf3eb, 0x1c8b,
-  0xf3ec, 0x25ea,
-  0xf3ed, 0x1c8d,
-  0xf3ef, 0x25eb,
-  0xf3f0, 0x1c90,
-  0xf3f1, 0x25ec,
-  0xf3f2, 0x1c92,
-  0xf3fd, 0x25ed,
-  0xf3fe, 0x1c9e,
-  0xf4a1, 0x1c9f,
-  0xf4a5, 0x25ee,
-  0xf4a6, 0x1ca4,
-  0xf4af, 0x25ef,
-  0xf4b0, 0x1cae,
-  0xf4b5, 0x25f0,
-  0xf4b6, 0x1cb4,
-  0xf4c1, 0x25f1,
-  0xf4c2, 0x1cc0,
-  0xf4c7, 0x25f2,
-  0xf4c8, 0x1cc6,
-  0xf4cf, 0x25f3,
-  0xf4d1, 0x1ccf,
-  0xf4d6, 0x25f5,
-  0xf4d7, 0x1cd5,
-  0xf4ea, 0x25f6,
-  0xf4eb, 0x1ce9,
-  0xf4ef, 0x25f7,
-  0xf4f0, 0x1cee,
-  0xf4f5, 0x25f8,
-  0xf4f6, 0x1cf4,
-  0xf5a1, 0x1cfd,
-  0xf5a6, 0x25f9,
-  0xf5a8, 0x1d04,
-  0xf5ba, 0x25fb,
-  0xf5bc, 0x1d18,
-  0xf5c4, 0x25fd,
-  0xf5c5, 0x1d21,
-  0xf5c8, 0x25fe,
-  0xf5c9, 0x1d25,
-  0xf5ce, 0x25ff,
-  0xf5d0, 0x1d2c,
-  0xf5d1, 0x2601,
-  0xf5d3, 0x1d2f,
-  0xf5d9, 0x2603,
-  0xf5da, 0x1d36,
-  0xf5dc, 0x2604,
-  0xf5dd, 0x1d39,
-  0xf5e6, 0x2605,
-  0xf5e8, 0x1d44,
-  0xf5ef, 0x2607,
-  0xf5f0, 0x1d4c,
-  0xf5f2, 0x2608,
-  0xf5f3, 0x1d4f,
-  0xf5fc, 0x2609,
-  0xf5fd, 0x1d59,
-  0xf6a1, 0x1d5b,
-  0xf6a3, 0x260a,
-  0xf6a4, 0x1d5e,
-  0xf6a6, 0x260b,
-  0xf6a7, 0x1d61,
-  0xf6a8, 0x260c,
-  0xf6a9, 0x1d63,
-  0xf6ab, 0x260d,
-  0xf6ac, 0x1d66,
-  0xf6b0, 0x260e,
-  0xf6b1, 0x1d6b,
-  0xf6b3, 0x260f,
-  0xf6bf, 0x1d79,
-  0xf6c5, 0x261b,
-  0xf6c6, 0x1d80,
-  0xf6c7, 0x261c,
-  0xf6c8, 0x1d82,
-  0xf6c9, 0x261d,
-  0xf6ca, 0x1d84,
-  0xf6cf, 0x261e,
-  0xf7a1, 0x264e,
-  0xf7b0, 0x1dc8,
-  0xf7b2, 0x265d,
-  0xf7b4, 0x1dcc,
-  0xf7b5, 0x265f,
-  0xf7b6, 0x1dce,
-  0xf7bd, 0x2660,
-  0xf7be, 0x1dd6,
-  0xf7c3, 0x2661,
-  0xf7c4, 0x1ddc,
-  0xf7c5, 0x2662,
-  0xf7c7, 0x1ddf,
-  0xf7ca, 0x2664,
-  0xf7cc, 0x1de4,
-  0xf7cf, 0x2666,
-  0xf7d1, 0x1de9,
-  0xf7de, 0x2668,
-  0xf7df, 0x1df7,
-  0xf7e1, 0x0ab9,
-  0xf7e2, 0x1dfa,
-  0xf7f2, 0x2669,
-  0xf7f3, 0x1e0b,
-  0xf7f5, 0x266a,
-  0xf7f6, 0x1e0e,
-  0xf8a1, 0x266b,
-  0xf8a7, 0x04cc,
-  0xf8a8, 0x050a,
-  0xf8a9, 0x0518,
-  0xf8aa, 0x2671,
-  0xf8ac, 0x0594,
-  0xf8ad, 0x05ce,
-  0xf8ae, 0x2673,
-  0xf8af, 0x05f6,
-  0xf8b0, 0x2674,
-  0xf8b2, 0x0653,
-  0xf8b3, 0x067e,
-  0xf8b4, 0x2676,
-  0xf8b5, 0x06c4,
-  0xf8b6, 0x2677,
-  0xf8b8, 0x073c,
-  0xf8b9, 0x2679,
-  0xf8bb, 0x07c3,
-  0xf8bc, 0x267b,
-  0xf8c0, 0x082b,
-  0xf8c1, 0x267f,
-  0xf8c2, 0x084e,
-  0xf8c3, 0x0869,
-  0xf8c4, 0x2680,
-  0xf8c6, 0x090c,
-  0xf8c7, 0x2682,
-  0xf8c9, 0x0971,
-  0xf8ca, 0x2684,
-  0xf8cb, 0x099a,
-  0xf8cd, 0x2685,
-  0xf8ce, 0x09da,
-  0xf8cf, 0x2686,
-  0xf8d0, 0x09fa,
-  0xf8d1, 0x2687,
-  0xf8dc, 0x0bda,
-  0xf8dd, 0x0bdd,
-  0xf8de, 0x0bea,
-  0xf8df, 0x0bec,
-  0xf8e0, 0x0bf2,
-  0xf8e1, 0x2692,
-  0xf8e6, 0x0c92,
-  0xf8e7, 0x0d1a,
-  0xf8e8, 0x0d8c,
-  0xf8e9, 0x0dbe,
-  0xf8ea, 0x2697,
-  0xf8eb, 0x0dfb,
-  0xf8ec, 0x2698,
-  0xf8ef, 0x0e70,
-  0xf8f0, 0x269b,
-  0xf8f1, 0x0ea3,
-  0xf8f2, 0x269c,
-  0xf8f8, 0x103d,
-  0xf8f9, 0x10d9,
-  0xf8fa, 0x26a2,
-  0xf8fc, 0x10fb,
-  0xf8fd, 0x1109,
-  0xf8fe, 0x26a4,
-  0xf9a1, 0x11a1,
-  0xf9a2, 0x26a5,
-  0xf9a3, 0x11ba,
-  0xf9a4, 0x26a6,
-  0xf9a6, 0x11d5,
-  0xf9a7, 0x26a8,
-  0xf9a8, 0x11fd,
-  0xf9a9, 0x1219,
-  0xa1a2, 0x023f,
-  0xa1a3, 0x023e,
-  0xa1aa, 0x0256,
-  0xa1ab, 0x1e18,
-  0xa1ad, 0x0257,
-  0xa1b2, 0x0246,
-  0xa1fe, 0x1e1a,
-  0xa3a1, 0x0242,
-  0xa3a8, 0x0244,
-  0xa3ac, 0x023d,
-  0xa3ae, 0x1e1b,
-  0xa3ba, 0x0240,
-  0xa3bd, 0x1e1c,
-  0xa3bf, 0x0243,
-  0xa3db, 0x1e1d,
-  0xa3dd, 0x1e1e,
-  0xa3df, 0x0258,
-  0xa3fb, 0x0254,
-  0xa3fd, 0x0255,
-  0xa3fe, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBTEUCVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x1e24, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334,
-    0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c,
-    0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
-    0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c,
-    0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354,
-    0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c,
-    0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364,
-    0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c,
-    0x036d, 0x036e, 0x036f, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374,
-    0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037a, 0x037b, 0x037c,
-    0x037d, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384,
-    0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBTEUCVMap2, 2303
-};
-
-static Gushort gb12GBTHMap2[4566] = {
-  0x0000, 0x0000,
-  0x2121, 0x0060,
-  0x2231, 0x00be,
-  0x2265, 0x00f0,
-  0x2271, 0x00fa,
-  0x2321, 0x0106,
-  0x2421, 0x0164,
-  0x2521, 0x01b7,
-  0x2621, 0x020d,
-  0x2641, 0x0225,
-  0x2721, 0x025a,
-  0x2751, 0x027b,
-  0x2821, 0x029c,
-  0x2845, 0x02bc,
-  0x2924, 0x02e2,
-  0x2a21, 0x032e,
-  0x2b21, 0x038c,
-  0x3021, 0x03ac,
-  0x3028, 0x1e25,
-  0x3029, 0x03b4,
-  0x302a, 0x1e26,
-  0x302b, 0x03b6,
-  0x302d, 0x1e27,
-  0x302f, 0x03ba,
-  0x3039, 0x1e29,
-  0x303a, 0x03c5,
-  0x3040, 0x1e2a,
-  0x3041, 0x03cc,
-  0x3053, 0x1e2b,
-  0x3054, 0x03df,
-  0x3055, 0x1e2c,
-  0x3056, 0x03e1,
-  0x305a, 0x1e2d,
-  0x305b, 0x03e6,
-  0x305c, 0x1e2e,
-  0x305d, 0x03e8,
-  0x3064, 0x1e2f,
-  0x3065, 0x03f0,
-  0x306c, 0x1e30,
-  0x306e, 0x03f9,
-  0x306f, 0x1e32,
-  0x3070, 0x03fb,
-  0x3073, 0x1e33,
-  0x3074, 0x03ff,
-  0x3077, 0x1e34,
-  0x3078, 0x0403,
-  0x3079, 0x1e35,
-  0x307a, 0x0405,
-  0x3121, 0x040a,
-  0x3125, 0x1e36,
-  0x3127, 0x0410,
-  0x3128, 0x1e38,
-  0x3129, 0x0412,
-  0x312b, 0x1e39,
-  0x312c, 0x0415,
-  0x3132, 0x1e3a,
-  0x3133, 0x041c,
-  0x3134, 0x1e3b,
-  0x3136, 0x041f,
-  0x3137, 0x1e3d,
-  0x313a, 0x0423,
-  0x3141, 0x1e40,
-  0x3142, 0x042b,
-  0x314a, 0x1e41,
-  0x314b, 0x0434,
-  0x314f, 0x1e42,
-  0x3151, 0x043a,
-  0x3152, 0x1e44,
-  0x3153, 0x043c,
-  0x3155, 0x1e45,
-  0x3156, 0x043f,
-  0x315f, 0x1e46,
-  0x3162, 0x044b,
-  0x3164, 0x1e49,
-  0x3165, 0x044e,
-  0x3167, 0x1e4a,
-  0x3169, 0x0452,
-  0x316a, 0x1e4c,
-  0x316b, 0x0454,
-  0x316e, 0x1e4d,
-  0x316f, 0x0458,
-  0x3171, 0x1e4e,
-  0x3172, 0x045b,
-  0x3174, 0x1e4f,
-  0x3178, 0x0461,
-  0x317d, 0x1e53,
-  0x317e, 0x0467,
-  0x3221, 0x0468,
-  0x3226, 0x1e54,
-  0x3228, 0x046f,
-  0x322c, 0x1e56,
-  0x322d, 0x0474,
-  0x3235, 0x1e57,
-  0x3236, 0x047d,
-  0x3239, 0x1e58,
-  0x323a, 0x0481,
-  0x3246, 0x1e59,
-  0x3247, 0x048e,
-  0x324e, 0x1e5a,
-  0x3258, 0x049f,
-  0x325e, 0x1e64,
-  0x325f, 0x04a6,
-  0x3260, 0x1e65,
-  0x3261, 0x04a8,
-  0x3262, 0x1e66,
-  0x3264, 0x04ab,
-  0x326f, 0x1e68,
-  0x3270, 0x04b7,
-  0x3273, 0x1e69,
-  0x327d, 0x04c4,
-  0x3321, 0x1e73,
-  0x3323, 0x04c8,
-  0x3324, 0x1e75,
-  0x3328, 0x04cd,
-  0x3329, 0x1e79,
-  0x332a, 0x04cf,
-  0x332e, 0x1e7a,
-  0x332f, 0x04d4,
-  0x3335, 0x1e7b,
-  0x3336, 0x04db,
-  0x3339, 0x1e7c,
-  0x333a, 0x04df,
-  0x333e, 0x1e7d,
-  0x333f, 0x04e4,
-  0x3342, 0x1e7e,
-  0x3343, 0x04e8,
-  0x3344, 0x1e7f,
-  0x3345, 0x04ea,
-  0x3346, 0x1e80,
-  0x3347, 0x04ec,
-  0x334d, 0x1e81,
-  0x334e, 0x04f3,
-  0x334f, 0x1e82,
-  0x3350, 0x04f5,
-  0x3352, 0x1e83,
-  0x3353, 0x04f8,
-  0x3359, 0x1e84,
-  0x335a, 0x04ff,
-  0x335b, 0x1e85,
-  0x335c, 0x0501,
-  0x335d, 0x1e86,
-  0x335e, 0x0503,
-  0x3363, 0x1e87,
-  0x3364, 0x0509,
-  0x3365, 0x1e88,
-  0x3367, 0x050c,
-  0x3368, 0x1e8a,
-  0x3369, 0x050e,
-  0x336b, 0x1e8b,
-  0x336d, 0x0512,
-  0x336f, 0x1e8d,
-  0x3370, 0x0515,
-  0x3371, 0x1e8e,
-  0x3372, 0x0517,
-  0x3373, 0x1e8f,
-  0x3374, 0x0519,
-  0x337a, 0x1e90,
-  0x337c, 0x0521,
-  0x3421, 0x1e92,
-  0x3423, 0x0526,
-  0x3425, 0x1e94,
-  0x3427, 0x052a,
-  0x342b, 0x1e96,
-  0x342c, 0x052f,
-  0x342f, 0x1e97,
-  0x3430, 0x0533,
-  0x3433, 0x1e98,
-  0x3435, 0x0538,
-  0x3438, 0x1e9a,
-  0x3439, 0x053c,
-  0x343f, 0x1e9b,
-  0x3440, 0x0543,
-  0x3442, 0x1e9c,
-  0x3443, 0x0546,
-  0x3447, 0x1e9d,
-  0x3448, 0x054b,
-  0x344a, 0x1e9e,
-  0x344b, 0x054e,
-  0x344d, 0x1e9f,
-  0x344e, 0x0551,
-  0x344f, 0x1ea0,
-  0x3450, 0x0553,
-  0x3453, 0x1ea1,
-  0x3455, 0x0558,
-  0x345a, 0x1ea3,
-  0x345b, 0x055e,
-  0x345c, 0x1ea4,
-  0x345d, 0x0560,
-  0x346d, 0x1ea5,
-  0x346e, 0x0571,
-  0x346f, 0x1ea6,
-  0x3470, 0x0573,
-  0x3478, 0x1ea7,
-  0x3479, 0x057c,
-  0x347b, 0x1ea8,
-  0x347c, 0x057f,
-  0x3521, 0x0582,
-  0x3523, 0x1ea9,
-  0x3524, 0x0585,
-  0x3525, 0x1eaa,
-  0x3529, 0x058a,
-  0x352c, 0x1eae,
-  0x352d, 0x058e,
-  0x352e, 0x1eaf,
-  0x3530, 0x0591,
-  0x3531, 0x1eb1,
-  0x3536, 0x0597,
-  0x3537, 0x1eb6,
-  0x3538, 0x0599,
-  0x353a, 0x1eb7,
-  0x353d, 0x059e,
-  0x3546, 0x1eba,
-  0x3547, 0x05a8,
-  0x354b, 0x1ebb,
-  0x354c, 0x05ad,
-  0x3550, 0x1ebc,
-  0x3551, 0x05b2,
-  0x3553, 0x1ebd,
-  0x3554, 0x05b5,
-  0x355d, 0x1ebe,
-  0x3560, 0x05c1,
-  0x3563, 0x1ec1,
-  0x3564, 0x05c5,
-  0x3566, 0x1ec2,
-  0x3568, 0x05c9,
-  0x356d, 0x1ec4,
-  0x356e, 0x05cf,
-  0x3576, 0x1ec5,
-  0x3578, 0x05d9,
-  0x357d, 0x1ec7,
-  0x357e, 0x05df,
-  0x3621, 0x05e0,
-  0x3624, 0x1ec8,
-  0x3626, 0x05e5,
-  0x3627, 0x1eca,
-  0x3628, 0x05e7,
-  0x3629, 0x1ecb,
-  0x362a, 0x05e9,
-  0x362b, 0x1ecc,
-  0x362c, 0x05eb,
-  0x362f, 0x1ecd,
-  0x3631, 0x05f0,
-  0x3633, 0x1ecf,
-  0x3634, 0x05f3,
-  0x3637, 0x1ed0,
-  0x3638, 0x05f7,
-  0x363f, 0x1ed1,
-  0x3642, 0x0601,
-  0x3644, 0x1ed4,
-  0x3645, 0x0604,
-  0x3646, 0x1ed5,
-  0x3647, 0x0606,
-  0x364d, 0x1ed6,
-  0x364e, 0x060d,
-  0x364f, 0x1ed7,
-  0x3651, 0x0610,
-  0x3653, 0x1ed9,
-  0x3655, 0x0614,
-  0x3656, 0x1edb,
-  0x3657, 0x0616,
-  0x3659, 0x1edc,
-  0x365a, 0x0619,
-  0x365b, 0x1edd,
-  0x365c, 0x061b,
-  0x3661, 0x1ede,
-  0x3662, 0x0621,
-  0x3669, 0x1edf,
-  0x366a, 0x0629,
-  0x366c, 0x1ee0,
-  0x366d, 0x062c,
-  0x366e, 0x1ee1,
-  0x3670, 0x062f,
-  0x3671, 0x1ee3,
-  0x3672, 0x0631,
-  0x3676, 0x1ee4,
-  0x3677, 0x0636,
-  0x3679, 0x1ee5,
-  0x367a, 0x0639,
-  0x367b, 0x1ee6,
-  0x367d, 0x063c,
-  0x3721, 0x1ee8,
-  0x3724, 0x0641,
-  0x3727, 0x1eeb,
-  0x3728, 0x0645,
-  0x372f, 0x1eec,
-  0x3731, 0x064e,
-  0x3733, 0x1eee,
-  0x3734, 0x0651,
-  0x3736, 0x1eef,
-  0x3738, 0x0655,
-  0x3739, 0x1ef1,
-  0x373a, 0x0657,
-  0x3743, 0x1ef2,
-  0x3745, 0x0662,
-  0x3749, 0x1ef4,
-  0x374a, 0x0667,
-  0x374c, 0x1ef5,
-  0x374d, 0x066a,
-  0x374f, 0x1ef6,
-  0x3750, 0x066d,
-  0x3751, 0x1ef7,
-  0x3752, 0x066f,
-  0x3757, 0x1ef8,
-  0x3759, 0x0676,
-  0x375c, 0x1efa,
-  0x375d, 0x067a,
-  0x375f, 0x1efb,
-  0x3762, 0x067f,
-  0x3763, 0x1efe,
-  0x3764, 0x0681,
-  0x3766, 0x1eff,
-  0x3769, 0x0686,
-  0x376b, 0x1f02,
-  0x376e, 0x068b,
-  0x376f, 0x1f05,
-  0x3770, 0x068d,
-  0x3774, 0x1f06,
-  0x3775, 0x0692,
-  0x3778, 0x1f07,
-  0x3779, 0x0696,
-  0x3821, 0x069c,
-  0x3827, 0x1f08,
-  0x3829, 0x06a4,
-  0x3833, 0x1f0a,
-  0x3835, 0x06b0,
-  0x383a, 0x1f0c,
-  0x383b, 0x06b6,
-  0x383c, 0x1f0d,
-  0x383d, 0x06b8,
-  0x383e, 0x1f0e,
-  0x3840, 0x06bb,
-  0x3843, 0x1f10,
-  0x3844, 0x06bf,
-  0x3846, 0x1f11,
-  0x3848, 0x06c3,
-  0x3849, 0x1f13,
-  0x384a, 0x06c5,
-  0x384f, 0x1f14,
-  0x3850, 0x06cb,
-  0x3853, 0x1f15,
-  0x3857, 0x06d2,
-  0x3859, 0x1f19,
-  0x385b, 0x06d6,
-  0x3864, 0x1f1b,
-  0x3865, 0x06e0,
-  0x3869, 0x1f1c,
-  0x386a, 0x06e5,
-  0x386b, 0x1f1d,
-  0x386c, 0x06e7,
-  0x3873, 0x1f1e,
-  0x3874, 0x06ef,
-  0x3875, 0x1f1f,
-  0x3877, 0x06f2,
-  0x3878, 0x1f21,
-  0x3879, 0x06f4,
-  0x3921, 0x06fa,
-  0x3928, 0x1f22,
-  0x3929, 0x0702,
-  0x392e, 0x1f23,
-  0x392f, 0x0708,
-  0x3931, 0x1f24,
-  0x3932, 0x070b,
-  0x3933, 0x1f25,
-  0x3934, 0x070d,
-  0x3935, 0x1f26,
-  0x3936, 0x070f,
-  0x3939, 0x1f27,
-  0x393b, 0x0714,
-  0x3946, 0x1f29,
-  0x3947, 0x0720,
-  0x394b, 0x1f2a,
-  0x394c, 0x0725,
-  0x3950, 0x1f2b,
-  0x3951, 0x072a,
-  0x3958, 0x1f2c,
-  0x3959, 0x0732,
-  0x395b, 0x1f2d,
-  0x395c, 0x0735,
-  0x395d, 0x1f2e,
-  0x395e, 0x0737,
-  0x395f, 0x1f2f,
-  0x3960, 0x0739,
-  0x3961, 0x1f30,
-  0x3962, 0x073b,
-  0x3963, 0x1f31,
-  0x3964, 0x073d,
-  0x3966, 0x1f32,
-  0x3967, 0x0740,
-  0x3969, 0x1f33,
-  0x396d, 0x0746,
-  0x396e, 0x1f37,
-  0x396f, 0x0748,
-  0x3971, 0x1f38,
-  0x3972, 0x074b,
-  0x3973, 0x1f39,
-  0x3976, 0x074f,
-  0x3978, 0x1f3c,
-  0x3979, 0x0752,
-  0x397a, 0x1f3d,
-  0x397b, 0x0754,
-  0x397d, 0x1f3e,
-  0x397e, 0x0757,
-  0x3a21, 0x0758,
-  0x3a27, 0x1f3f,
-  0x3a28, 0x075f,
-  0x3a2b, 0x1f40,
-  0x3a2c, 0x0763,
-  0x3a3a, 0x1f41,
-  0x3a3b, 0x0772,
-  0x3a45, 0x1f42,
-  0x3a46, 0x077d,
-  0x3a52, 0x1f43,
-  0x3a53, 0x078a,
-  0x3a57, 0x1f44,
-  0x3a59, 0x0790,
-  0x3a64, 0x1f46,
-  0x3a65, 0x079c,
-  0x3a68, 0x1f47,
-  0x3a69, 0x07a0,
-  0x3a6c, 0x1f48,
-  0x3a6d, 0x07a4,
-  0x3a73, 0x15e5,
-  0x3a74, 0x07ab,
-  0x3a78, 0x1f49,
-  0x3a79, 0x07b0,
-  0x3b21, 0x07b6,
-  0x3b24, 0x1f4a,
-  0x3b25, 0x07ba,
-  0x3b26, 0x1f4b,
-  0x3b27, 0x07bc,
-  0x3b29, 0x1f4c,
-  0x3b2b, 0x07c0,
-  0x3b2d, 0x1f4e,
-  0x3b2f, 0x07c4,
-  0x3b30, 0x1f50,
-  0x3b31, 0x07c6,
-  0x3b33, 0x1f51,
-  0x3b34, 0x07c9,
-  0x3b35, 0x1f52,
-  0x3b38, 0x07cd,
-  0x3b39, 0x1f55,
-  0x3b3b, 0x07d0,
-  0x3b51, 0x1f57,
-  0x3b52, 0x07e7,
-  0x3b53, 0x1f58,
-  0x3b55, 0x07ea,
-  0x3b5f, 0x1f5a,
-  0x3b68, 0x07fd,
-  0x3b6b, 0x1f63,
-  0x3b6c, 0x0801,
-  0x3b71, 0x1f64,
-  0x3b72, 0x0807,
-  0x3b75, 0x1f65,
-  0x3b78, 0x080d,
-  0x3b7a, 0x1f68,
-  0x3b7b, 0x0810,
-  0x3b7d, 0x1f69,
-  0x3b7e, 0x0813,
-  0x3c21, 0x0814,
-  0x3c22, 0x1f6a,
-  0x3c23, 0x0816,
-  0x3c25, 0x1f6b,
-  0x3c27, 0x081a,
-  0x3c28, 0x1f6d,
-  0x3c2a, 0x081d,
-  0x3c2b, 0x1f6f,
-  0x3c2c, 0x081f,
-  0x3c2d, 0x1f70,
-  0x3c2e, 0x0821,
-  0x3c36, 0x1f71,
-  0x3c39, 0x082c,
-  0x3c3b, 0x1f74,
-  0x3c3c, 0x082f,
-  0x3c41, 0x1f75,
-  0x3c42, 0x0835,
-  0x3c43, 0x1f76,
-  0x3c44, 0x0837,
-  0x3c46, 0x1f77,
-  0x3c48, 0x083b,
-  0x3c4a, 0x1f79,
-  0x3c4b, 0x083e,
-  0x3c4c, 0x1f7a,
-  0x3c4e, 0x0841,
-  0x3c50, 0x1f7c,
-  0x3c51, 0x0844,
-  0x3c54, 0x1f7d,
-  0x3c57, 0x084a,
-  0x3c58, 0x1f80,
-  0x3c59, 0x084c,
-  0x3c5b, 0x1f81,
-  0x3c5c, 0x084f,
-  0x3c5d, 0x1f82,
-  0x3c5e, 0x0851,
-  0x3c5f, 0x1f83,
-  0x3c62, 0x0855,
-  0x3c63, 0x1f86,
-  0x3c65, 0x0858,
-  0x3c68, 0x1f88,
-  0x3c69, 0x085c,
-  0x3c6a, 0x1f89,
-  0x3c6d, 0x0860,
-  0x3c6f, 0x1f8c,
-  0x3c74, 0x0867,
-  0x3c76, 0x1f91,
-  0x3c7d, 0x0870,
-  0x3d21, 0x0872,
-  0x3d22, 0x1f98,
-  0x3d28, 0x0879,
-  0x3d2b, 0x1f9e,
-  0x3d2d, 0x087e,
-  0x3d2f, 0x1fa0,
-  0x3d33, 0x0884,
-  0x3d34, 0x1fa4,
-  0x3d35, 0x0886,
-  0x3d3a, 0x1fa5,
-  0x3d3b, 0x088c,
-  0x3d3d, 0x1fa6,
-  0x3d40, 0x0891,
-  0x3d41, 0x1fa9,
-  0x3d45, 0x0896,
-  0x3d48, 0x1fad,
-  0x3d4b, 0x089c,
-  0x3d4e, 0x1fb0,
-  0x3d50, 0x08a1,
-  0x3d57, 0x1fb2,
-  0x3d58, 0x08a9,
-  0x3d5a, 0x1fb3,
-  0x3d5b, 0x08ac,
-  0x3d60, 0x1fb4,
-  0x3d62, 0x08b3,
-  0x3d6b, 0x1fb6,
-  0x3d6c, 0x08bd,
-  0x3d74, 0x1fb7,
-  0x3d79, 0x08ca,
-  0x3d7d, 0x1fbc,
-  0x3d7e, 0x08cf,
-  0x3e21, 0x1fbd,
-  0x3e23, 0x08d2,
-  0x3e25, 0x1fbf,
-  0x3e26, 0x08d5,
-  0x3e28, 0x1fc0,
-  0x3e29, 0x08d8,
-  0x3e2a, 0x1fc1,
-  0x3e2b, 0x08da,
-  0x3e2d, 0x1fc2,
-  0x3e2e, 0x08dd,
-  0x3e31, 0x1fc3,
-  0x3e32, 0x08e1,
-  0x3e35, 0x1fc4,
-  0x3e38, 0x08e7,
-  0x3e3a, 0x1fc7,
-  0x3e3b, 0x08ea,
-  0x3e40, 0x1fc8,
-  0x3e41, 0x08f0,
-  0x3e49, 0x1fc9,
-  0x3e4a, 0x08f9,
-  0x3e54, 0x1fca,
-  0x3e55, 0x0904,
-  0x3e59, 0x1fcb,
-  0x3e5a, 0x0909,
-  0x3e5d, 0x1fcc,
-  0x3e5e, 0x090d,
-  0x3e62, 0x1fcd,
-  0x3e63, 0x0912,
-  0x3e65, 0x1fce,
-  0x3e66, 0x0915,
-  0x3e67, 0x1fcf,
-  0x3e68, 0x0917,
-  0x3e69, 0x1fd0,
-  0x3e6a, 0x0919,
-  0x3e6e, 0x1fd1,
-  0x3e6f, 0x091e,
-  0x3e75, 0x1fd2,
-  0x3e76, 0x0925,
-  0x3e77, 0x1fd3,
-  0x3e79, 0x0928,
-  0x3e7b, 0x1fd5,
-  0x3e7d, 0x092c,
-  0x3f21, 0x092e,
-  0x3f25, 0x1fd7,
-  0x3f26, 0x0933,
-  0x3f2a, 0x1fd8,
-  0x3f2b, 0x0938,
-  0x3f2d, 0x1fd9,
-  0x3f2e, 0x093b,
-  0x3f45, 0x1fda,
-  0x3f46, 0x0953,
-  0x3f47, 0x1fdb,
-  0x3f48, 0x0955,
-  0x3f4e, 0x1fdc,
-  0x3f4f, 0x095c,
-  0x3f51, 0x1fdd,
-  0x3f53, 0x0960,
-  0x3f59, 0x1fdf,
-  0x3f5a, 0x0967,
-  0x3f62, 0x1fe0,
-  0x3f65, 0x0972,
-  0x3f69, 0x1fe3,
-  0x3f6a, 0x0977,
-  0x3f6b, 0x1fe4,
-  0x3f6c, 0x0979,
-  0x3f6d, 0x1fe5,
-  0x3f6e, 0x097b,
-  0x3f73, 0x1fe6,
-  0x3f74, 0x0981,
-  0x3f75, 0x1fe7,
-  0x3f76, 0x0983,
-  0x3f77, 0x1fe8,
-  0x3f78, 0x0985,
-  0x3f79, 0x1fe9,
-  0x3f7b, 0x0988,
-  0x4021, 0x1feb,
-  0x4022, 0x098d,
-  0x4023, 0x1fec,
-  0x4024, 0x098f,
-  0x4029, 0x1fed,
-  0x402a, 0x0995,
-  0x402b, 0x1fee,
-  0x402c, 0x0997,
-  0x402f, 0x1fef,
-  0x4031, 0x099c,
-  0x4033, 0x1ff1,
-  0x4037, 0x09a2,
-  0x4038, 0x1ff5,
-  0x4045, 0x09b0,
-  0x404c, 0x2002,
-  0x404e, 0x09b9,
-  0x4054, 0x2004,
-  0x4055, 0x09c0,
-  0x4056, 0x2005,
-  0x4057, 0x09c2,
-  0x4058, 0x2006,
-  0x4059, 0x09c4,
-  0x405d, 0x2007,
-  0x405e, 0x09c9,
-  0x4060, 0x2008,
-  0x4061, 0x09cc,
-  0x4069, 0x2009,
-  0x406a, 0x09d5,
-  0x406b, 0x200a,
-  0x406d, 0x09d8,
-  0x406f, 0x200c,
-  0x4072, 0x09dd,
-  0x4076, 0x200f,
-  0x407b, 0x09e6,
-  0x4121, 0x09ea,
-  0x4124, 0x2014,
-  0x4126, 0x09ef,
-  0x4129, 0x2016,
-  0x412e, 0x09f7,
-  0x412f, 0x201b,
-  0x4139, 0x0a02,
-  0x413d, 0x2025,
-  0x413f, 0x0a08,
-  0x4142, 0x2027,
-  0x4143, 0x0a0c,
-  0x4146, 0x2028,
-  0x4147, 0x0a10,
-  0x4149, 0x2029,
-  0x414a, 0x0a13,
-  0x414d, 0x202a,
-  0x414e, 0x0a17,
-  0x4154, 0x202b,
-  0x4155, 0x0a1e,
-  0x4159, 0x202c,
-  0x415c, 0x0a25,
-  0x415e, 0x202f,
-  0x415f, 0x0a28,
-  0x4164, 0x2030,
-  0x4166, 0x0a2f,
-  0x4169, 0x2032,
-  0x416a, 0x0a33,
-  0x416b, 0x2033,
-  0x416d, 0x0a36,
-  0x4173, 0x2035,
-  0x4174, 0x0a3d,
-  0x4175, 0x2036,
-  0x4176, 0x0a3f,
-  0x417a, 0x2037,
-  0x417e, 0x0a47,
-  0x4221, 0x0a48,
-  0x4222, 0x203b,
-  0x4229, 0x0a50,
-  0x422b, 0x2042,
-  0x4234, 0x0a5b,
-  0x4238, 0x204b,
-  0x4239, 0x0a60,
-  0x423c, 0x204c,
-  0x423e, 0x0a65,
-  0x423f, 0x204e,
-  0x4240, 0x0a67,
-  0x4241, 0x204f,
-  0x4242, 0x0a69,
-  0x4245, 0x2050,
-  0x4248, 0x0a6f,
-  0x424b, 0x2053,
-  0x4251, 0x0a78,
-  0x4252, 0x2059,
-  0x4253, 0x0a7a,
-  0x4255, 0x205a,
-  0x425d, 0x0a84,
-  0x425e, 0x2062,
-  0x4263, 0x0a8a,
-  0x4266, 0x2067,
-  0x4269, 0x0a90,
-  0x426a, 0x206a,
-  0x426f, 0x0a96,
-  0x4270, 0x206f,
-  0x4271, 0x0a98,
-  0x4272, 0x2070,
-  0x4276, 0x0a9d,
-  0x4277, 0x2074,
-  0x427b, 0x0aa2,
-  0x4321, 0x2078,
-  0x4322, 0x0aa7,
-  0x432a, 0x2079,
-  0x432b, 0x0ab0,
-  0x432d, 0x207a,
-  0x432e, 0x0ab3,
-  0x4333, 0x207b,
-  0x4334, 0x1df9,
-  0x4335, 0x0aba,
-  0x433e, 0x207c,
-  0x433f, 0x0ac4,
-  0x4345, 0x207d,
-  0x4348, 0x0acd,
-  0x434c, 0x2080,
-  0x434d, 0x0ad2,
-  0x434e, 0x2081,
-  0x434f, 0x0ad4,
-  0x4355, 0x2082,
-  0x4357, 0x0adc,
-  0x4359, 0x2084,
-  0x435a, 0x0adf,
-  0x4360, 0x2085,
-  0x4361, 0x0ae6,
-  0x4365, 0x2086,
-  0x4366, 0x0aeb,
-  0x436d, 0x2087,
-  0x436e, 0x0af3,
-  0x4370, 0x2088,
-  0x4371, 0x0af6,
-  0x4375, 0x2089,
-  0x4377, 0x0afc,
-  0x4379, 0x208b,
-  0x437b, 0x0b00,
-  0x437d, 0x208d,
-  0x437e, 0x0b03,
-  0x4421, 0x0b04,
-  0x4431, 0x208e,
-  0x4432, 0x0b15,
-  0x4436, 0x208f,
-  0x4437, 0x0b1a,
-  0x4446, 0x2090,
-  0x4447, 0x0b2a,
-  0x4449, 0x2091,
-  0x444a, 0x0b2d,
-  0x4451, 0x2092,
-  0x4452, 0x0b35,
-  0x4453, 0x2093,
-  0x4457, 0x0b3a,
-  0x4459, 0x2097,
-  0x445a, 0x0b3d,
-  0x4462, 0x2098,
-  0x4463, 0x0b46,
-  0x4465, 0x2099,
-  0x4466, 0x0b49,
-  0x446c, 0x209a,
-  0x446d, 0x0b50,
-  0x4470, 0x209b,
-  0x4472, 0x0b55,
-  0x4474, 0x209d,
-  0x4475, 0x0b58,
-  0x4476, 0x209e,
-  0x4479, 0x0b5c,
-  0x447b, 0x20a1,
-  0x447d, 0x0b60,
-  0x447e, 0x20a3,
-  0x4521, 0x20a4,
-  0x4523, 0x0b64,
-  0x4525, 0x20a6,
-  0x452a, 0x0b6b,
-  0x4531, 0x20ab,
-  0x4532, 0x0b73,
-  0x4535, 0x20ac,
-  0x4536, 0x0b77,
-  0x4537, 0x20ad,
-  0x453a, 0x0b7b,
-  0x453b, 0x20b0,
-  0x453c, 0x0b7d,
-  0x453d, 0x20b1,
-  0x453e, 0x0b7f,
-  0x454c, 0x20b2,
-  0x454d, 0x0b8e,
-  0x4553, 0x20b3,
-  0x4554, 0x0b95,
-  0x4562, 0x20b4,
-  0x4563, 0x0ba4,
-  0x4567, 0x20b5,
-  0x4568, 0x0ba9,
-  0x4574, 0x20b6,
-  0x4575, 0x0bb6,
-  0x4621, 0x0bc0,
-  0x462d, 0x20b7,
-  0x462f, 0x0bce,
-  0x4635, 0x20b9,
-  0x4637, 0x0bd6,
-  0x463b, 0x20bb,
-  0x463c, 0x0bdb,
-  0x463e, 0x20bc,
-  0x463f, 0x0bde,
-  0x4640, 0x20bd,
-  0x4641, 0x0be0,
-  0x4643, 0x20be,
-  0x4645, 0x0be4,
-  0x464b, 0x20c0,
-  0x464e, 0x0bed,
-  0x4653, 0x20c3,
-  0x4654, 0x0bf3,
-  0x4657, 0x20c4,
-  0x4658, 0x0bf7,
-  0x466a, 0x20c5,
-  0x466c, 0x0c0b,
-  0x466f, 0x20c7,
-  0x4670, 0x0c0f,
-  0x4671, 0x20c8,
-  0x4672, 0x0c11,
-  0x4674, 0x20c9,
-  0x4675, 0x0c14,
-  0x4678, 0x20ca,
-  0x4679, 0x0c18,
-  0x467d, 0x20cb,
-  0x467e, 0x0c1d,
-  0x4721, 0x0c1e,
-  0x4723, 0x20cc,
-  0x4724, 0x0c21,
-  0x4725, 0x20cd,
-  0x4727, 0x0c24,
-  0x4728, 0x20cf,
-  0x472a, 0x0c27,
-  0x472b, 0x20d1,
-  0x472c, 0x0c29,
-  0x472e, 0x20d2,
-  0x4730, 0x0c2d,
-  0x4733, 0x20d4,
-  0x4736, 0x0c33,
-  0x4739, 0x20d7,
-  0x473b, 0x0c38,
-  0x473d, 0x20d9,
-  0x473f, 0x0c3c,
-  0x4740, 0x20db,
-  0x4741, 0x0c3e,
-  0x4742, 0x20dc,
-  0x4743, 0x0c40,
-  0x4745, 0x20dd,
-  0x4746, 0x0c43,
-  0x4747, 0x20de,
-  0x4749, 0x0c46,
-  0x474c, 0x20e0,
-  0x474d, 0x0c4a,
-  0x474f, 0x20e1,
-  0x4750, 0x0c4d,
-  0x4754, 0x20e2,
-  0x4756, 0x0c53,
-  0x4757, 0x20e4,
-  0x4758, 0x0c55,
-  0x475e, 0x20e5,
-  0x475f, 0x0c5c,
-  0x4761, 0x20e6,
-  0x4764, 0x0c61,
-  0x476a, 0x20e9,
-  0x476f, 0x0c6c,
-  0x4777, 0x20ee,
-  0x4779, 0x0c76,
-  0x477b, 0x20f0,
-  0x477c, 0x0c79,
-  0x477d, 0x20f1,
-  0x477e, 0x0c7b,
-  0x4821, 0x0c7c,
-  0x4823, 0x20f2,
-  0x4824, 0x0c7f,
-  0x4827, 0x20f3,
-  0x4829, 0x0c84,
-  0x4830, 0x20f5,
-  0x4831, 0x0c8c,
-  0x4835, 0x20f6,
-  0x4836, 0x0c91,
-  0x4837, 0x20f7,
-  0x4838, 0x0c93,
-  0x4843, 0x20f8,
-  0x4847, 0x0ca2,
-  0x4848, 0x20fc,
-  0x4849, 0x0ca4,
-  0x484d, 0x20fd,
-  0x484e, 0x0ca9,
-  0x484f, 0x20fe,
-  0x4850, 0x0cab,
-  0x4852, 0x20ff,
-  0x4853, 0x0cae,
-  0x4859, 0x2100,
-  0x485a, 0x0cb5,
-  0x485e, 0x2101,
-  0x485f, 0x0cba,
-  0x486d, 0x2102,
-  0x486e, 0x0cc9,
-  0x4871, 0x2103,
-  0x4874, 0x0ccf,
-  0x4877, 0x2106,
-  0x4879, 0x0cd4,
-  0x487a, 0x2108,
-  0x487b, 0x0cd6,
-  0x487c, 0x2109,
-  0x487d, 0x0cd8,
-  0x4921, 0x210a,
-  0x4922, 0x0cdb,
-  0x4925, 0x210b,
-  0x4926, 0x0cdf,
-  0x4927, 0x210c,
-  0x4929, 0x0ce2,
-  0x492c, 0x210e,
-  0x492d, 0x0ce6,
-  0x4931, 0x210f,
-  0x4932, 0x0ceb,
-  0x4934, 0x2110,
-  0x4935, 0x0cee,
-  0x4938, 0x2111,
-  0x493a, 0x0cf3,
-  0x4941, 0x2113,
-  0x4943, 0x0cfc,
-  0x4944, 0x2115,
-  0x4945, 0x0cfe,
-  0x4949, 0x2116,
-  0x494a, 0x0d03,
-  0x494b, 0x2117,
-  0x494c, 0x0d05,
-  0x494d, 0x2118,
-  0x494e, 0x0d07,
-  0x4955, 0x2119,
-  0x4956, 0x0d0f,
-  0x495c, 0x211a,
-  0x495d, 0x0d16,
-  0x495e, 0x211b,
-  0x495f, 0x0d18,
-  0x4961, 0x211c,
-  0x4962, 0x0d1b,
-  0x4963, 0x211d,
-  0x4964, 0x0d1d,
-  0x4965, 0x211e,
-  0x4966, 0x0d1f,
-  0x4968, 0x211f,
-  0x4969, 0x0d22,
-  0x4970, 0x2120,
-  0x4971, 0x0d2a,
-  0x4973, 0x2121,
-  0x4975, 0x0d2e,
-  0x4976, 0x2123,
-  0x4977, 0x0d30,
-  0x4978, 0x2124,
-  0x497a, 0x0d33,
-  0x497e, 0x2126,
-  0x4a21, 0x0d38,
-  0x4a24, 0x2127,
-  0x4a27, 0x0d3e,
-  0x4a28, 0x212a,
-  0x4a29, 0x0d40,
-  0x4a2a, 0x212b,
-  0x4a2c, 0x0d43,
-  0x4a31, 0x212d,
-  0x4a32, 0x0d49,
-  0x4a34, 0x212e,
-  0x4a37, 0x0d4e,
-  0x4a3b, 0x2131,
-  0x4a3c, 0x0d53,
-  0x4a46, 0x2132,
-  0x4a47, 0x0d5e,
-  0x4a4a, 0x2133,
-  0x4a4b, 0x0d62,
-  0x4a4d, 0x2134,
-  0x4a4f, 0x0d66,
-  0x4a53, 0x2136,
-  0x4a55, 0x0d6c,
-  0x4a59, 0x2138,
-  0x4a5a, 0x0d71,
-  0x4a5e, 0x2139,
-  0x4a5f, 0x0d76,
-  0x4a60, 0x213a,
-  0x4a61, 0x0d78,
-  0x4a64, 0x213b,
-  0x4a65, 0x0d7c,
-  0x4a69, 0x213c,
-  0x4a6b, 0x0d82,
-  0x4a74, 0x213e,
-  0x4a76, 0x0d8d,
-  0x4a77, 0x2140,
-  0x4a78, 0x0d8f,
-  0x4a7a, 0x2141,
-  0x4a7b, 0x0d92,
-  0x4a7d, 0x2142,
-  0x4a7e, 0x0d95,
-  0x4b21, 0x0d96,
-  0x4b27, 0x2143,
-  0x4b28, 0x0d9d,
-  0x4b2b, 0x2144,
-  0x4b2c, 0x0da1,
-  0x4b2d, 0x2145,
-  0x4b2e, 0x0da3,
-  0x4b33, 0x2146,
-  0x4b34, 0x0da9,
-  0x4b35, 0x2147,
-  0x4b37, 0x0dac,
-  0x4b38, 0x2149,
-  0x4b39, 0x0dae,
-  0x4b3f, 0x214a,
-  0x4b40, 0x0db5,
-  0x4b47, 0x214b,
-  0x4b48, 0x0dbd,
-  0x4b49, 0x214c,
-  0x4b4d, 0x0dc2,
-  0x4b4f, 0x2150,
-  0x4b51, 0x0dc6,
-  0x4b53, 0x2152,
-  0x4b54, 0x0dc9,
-  0x4b55, 0x2153,
-  0x4b56, 0x0dcb,
-  0x4b5f, 0x2154,
-  0x4b61, 0x0dd6,
-  0x4b64, 0x2156,
-  0x4b65, 0x0dda,
-  0x4b66, 0x2157,
-  0x4b68, 0x0ddd,
-  0x4b6a, 0x2159,
-  0x4b6b, 0x0de0,
-  0x4b6f, 0x215a,
-  0x4b71, 0x0de6,
-  0x4b75, 0x215c,
-  0x4b77, 0x0dec,
-  0x4b78, 0x215e,
-  0x4b79, 0x0dee,
-  0x4c21, 0x215f,
-  0x4c23, 0x0df6,
-  0x4c28, 0x2161,
-  0x4c29, 0x0dfc,
-  0x4c2c, 0x2162,
-  0x4c2d, 0x0e00,
-  0x4c2f, 0x2163,
-  0x4c34, 0x0e07,
-  0x4c37, 0x2168,
-  0x4c39, 0x0e0c,
-  0x4c3e, 0x216a,
-  0x4c3f, 0x0e12,
-  0x4c40, 0x216b,
-  0x4c41, 0x0e14,
-  0x4c4c, 0x216c,
-  0x4c4d, 0x0e20,
-  0x4c4e, 0x216d,
-  0x4c4f, 0x0e22,
-  0x4c50, 0x216e,
-  0x4c51, 0x0e24,
-  0x4c56, 0x216f,
-  0x4c57, 0x0e2a,
-  0x4c5a, 0x2170,
-  0x4c5b, 0x0e2e,
-  0x4c5c, 0x2171,
-  0x4c5d, 0x0e30,
-  0x4c60, 0x2172,
-  0x4c61, 0x0e34,
-  0x4c62, 0x2173,
-  0x4c63, 0x0e36,
-  0x4c65, 0x2174,
-  0x4c66, 0x0e39,
-  0x4c75, 0x2175,
-  0x4c76, 0x0e49,
-  0x4c79, 0x2176,
-  0x4c7b, 0x0e4e,
-  0x4c7c, 0x2178,
-  0x4d21, 0x0e52,
-  0x4d2d, 0x217b,
-  0x4d2e, 0x0e5f,
-  0x4d33, 0x217c,
-  0x4d34, 0x0e65,
-  0x4d37, 0x217d,
-  0x4d38, 0x0e69,
-  0x4d3c, 0x217e,
-  0x4d3d, 0x0e6e,
-  0x4d3f, 0x217f,
-  0x4d40, 0x0e71,
-  0x4d45, 0x2180,
-  0x4d46, 0x0e77,
-  0x4d47, 0x2181,
-  0x4d48, 0x0e79,
-  0x4d52, 0x2182,
-  0x4d53, 0x0e84,
-  0x4d54, 0x2183,
-  0x4d57, 0x0e88,
-  0x4d5d, 0x2186,
-  0x4d5e, 0x0e8f,
-  0x4d60, 0x2187,
-  0x4d61, 0x0e92,
-  0x4d64, 0x2188,
-  0x4d66, 0x0e97,
-  0x4d67, 0x218a,
-  0x4d68, 0x0e99,
-  0x4d72, 0x218b,
-  0x4d73, 0x0ea4,
-  0x4d78, 0x218c,
-  0x4d79, 0x0eaa,
-  0x4e21, 0x0eb0,
-  0x4e24, 0x218d,
-  0x4e26, 0x0eb5,
-  0x4e27, 0x218f,
-  0x4e28, 0x0eb7,
-  0x4e2a, 0x2190,
-  0x4e2e, 0x0ebd,
-  0x4e30, 0x2194,
-  0x4e32, 0x0ec1,
-  0x4e33, 0x2196,
-  0x4e34, 0x0ec3,
-  0x4e3d, 0x2197,
-  0x4e3e, 0x0ecd,
-  0x4e40, 0x2198,
-  0x4e41, 0x0ed0,
-  0x4e45, 0x2199,
-  0x4e47, 0x0ed6,
-  0x4e48, 0x219b,
-  0x4e49, 0x0ed8,
-  0x4e4a, 0x219c,
-  0x4e4b, 0x0eda,
-  0x4e4e, 0x219d,
-  0x4e52, 0x0ee1,
-  0x4e58, 0x21a1,
-  0x4e5b, 0x0eea,
-  0x4e5c, 0x21a4,
-  0x4e5d, 0x0eec,
-  0x4e5e, 0x21a5,
-  0x4e60, 0x0eef,
-  0x4e6b, 0x21a7,
-  0x4e6c, 0x0efb,
-  0x4e6d, 0x21a8,
-  0x4e6e, 0x0efd,
-  0x4e71, 0x21a9,
-  0x4e72, 0x0f01,
-  0x4e73, 0x21aa,
-  0x4e74, 0x0f03,
-  0x4e7d, 0x21ab,
-  0x4f21, 0x0f0e,
-  0x4f2e, 0x21ad,
-  0x4f2f, 0x0f1c,
-  0x4f30, 0x21ae,
-  0x4f31, 0x0f1e,
-  0x4f33, 0x21af,
-  0x4f34, 0x0f21,
-  0x4f37, 0x21b0,
-  0x4f39, 0x0f26,
-  0x4f3a, 0x21b2,
-  0x4f3b, 0x0f28,
-  0x4f3d, 0x21b3,
-  0x4f3e, 0x0f2b,
-  0x4f3f, 0x21b4,
-  0x4f42, 0x0f2f,
-  0x4f45, 0x21b7,
-  0x4f46, 0x0f33,
-  0x4f47, 0x21b8,
-  0x4f48, 0x0f35,
-  0x4f4a, 0x21b9,
-  0x4f4c, 0x0f39,
-  0x4f4d, 0x21bb,
-  0x4f4f, 0x0f3c,
-  0x4f50, 0x21bd,
-  0x4f51, 0x0f3e,
-  0x4f54, 0x21be,
-  0x4f59, 0x0f46,
-  0x4f5a, 0x21c3,
-  0x4f5b, 0x0f48,
-  0x4f5c, 0x21c4,
-  0x4f5d, 0x0f4a,
-  0x4f5f, 0x21c5,
-  0x4f60, 0x0f4d,
-  0x4f62, 0x21c6,
-  0x4f63, 0x0f50,
-  0x4f67, 0x21c7,
-  0x4f68, 0x0f55,
-  0x4f6a, 0x21c8,
-  0x4f6b, 0x0f58,
-  0x4f6c, 0x21c9,
-  0x4f6d, 0x0f5a,
-  0x4f6e, 0x21ca,
-  0x4f6f, 0x0f5c,
-  0x4f74, 0x21cb,
-  0x4f75, 0x0f62,
-  0x4f79, 0x21cc,
-  0x4f7b, 0x0f68,
-  0x4f7e, 0x21ce,
-  0x5021, 0x0f6c,
-  0x5025, 0x21cf,
-  0x5026, 0x0f71,
-  0x502d, 0x21d0,
-  0x502f, 0x0f7a,
-  0x5032, 0x21d2,
-  0x5035, 0x0f80,
-  0x503a, 0x21d5,
-  0x503c, 0x0f87,
-  0x503f, 0x21d7,
-  0x5040, 0x0f8b,
-  0x5046, 0x21d8,
-  0x5047, 0x0f92,
-  0x504b, 0x21d9,
-  0x504c, 0x0f97,
-  0x5062, 0x21da,
-  0x5063, 0x0fae,
-  0x5065, 0x21db,
-  0x5066, 0x0fb1,
-  0x506b, 0x21dc,
-  0x506c, 0x0fb7,
-  0x506d, 0x21dd,
-  0x506e, 0x0fb9,
-  0x5077, 0x21de,
-  0x507a, 0x0fc5,
-  0x507c, 0x21e1,
-  0x507d, 0x0fc8,
-  0x5121, 0x21e2,
-  0x5123, 0x0fcc,
-  0x5124, 0x21e4,
-  0x5125, 0x0fce,
-  0x5127, 0x21e5,
-  0x5128, 0x0fd1,
-  0x512b, 0x21e6,
-  0x512c, 0x0fd5,
-  0x512f, 0x21e7,
-  0x5132, 0x0fdb,
-  0x5135, 0x21ea,
-  0x5138, 0x0fe1,
-  0x5139, 0x21ed,
-  0x513a, 0x0fe3,
-  0x513b, 0x21ee,
-  0x513d, 0x0fe6,
-  0x5146, 0x21f0,
-  0x5149, 0x0ff2,
-  0x514b, 0x21f3,
-  0x514c, 0x0ff5,
-  0x514e, 0x21f4,
-  0x5150, 0x0ff9,
-  0x5155, 0x21f6,
-  0x5157, 0x1000,
-  0x515e, 0x21f8,
-  0x515f, 0x1008,
-  0x5161, 0x21f9,
-  0x5163, 0x100c,
-  0x5168, 0x21fb,
-  0x516a, 0x1013,
-  0x516c, 0x21fd,
-  0x516d, 0x1016,
-  0x516e, 0x21fe,
-  0x5170, 0x1019,
-  0x5171, 0x2200,
-  0x5172, 0x101b,
-  0x5174, 0x2201,
-  0x5175, 0x101e,
-  0x5177, 0x2202,
-  0x517a, 0x1023,
-  0x5221, 0x1028,
-  0x5222, 0x2205,
-  0x5223, 0x102a,
-  0x5225, 0x2206,
-  0x5226, 0x102d,
-  0x5229, 0x2207,
-  0x522a, 0x1031,
-  0x522f, 0x2208,
-  0x5230, 0x1037,
-  0x5233, 0x2209,
-  0x5234, 0x103b,
-  0x5235, 0x220a,
-  0x5237, 0x103e,
-  0x523d, 0x220c,
-  0x523e, 0x1045,
-  0x523f, 0x220d,
-  0x5240, 0x1047,
-  0x5243, 0x220e,
-  0x5244, 0x104b,
-  0x5245, 0x220f,
-  0x5246, 0x104d,
-  0x5247, 0x2210,
-  0x5248, 0x104f,
-  0x524f, 0x2211,
-  0x5250, 0x1057,
-  0x5255, 0x2212,
-  0x5256, 0x105d,
-  0x525a, 0x2213,
-  0x525b, 0x1062,
-  0x5264, 0x2214,
-  0x5266, 0x106d,
-  0x5268, 0x2216,
-  0x526c, 0x1073,
-  0x526f, 0x221a,
-  0x5270, 0x1077,
-  0x5271, 0x221b,
-  0x5272, 0x1079,
-  0x5275, 0x221c,
-  0x5276, 0x107d,
-  0x5278, 0x221d,
-  0x5279, 0x1080,
-  0x527b, 0x221e,
-  0x527c, 0x1083,
-  0x527e, 0x221f,
-  0x5321, 0x1086,
-  0x5323, 0x2220,
-  0x532d, 0x1092,
-  0x532e, 0x222a,
-  0x532f, 0x1094,
-  0x5331, 0x222b,
-  0x5332, 0x1097,
-  0x5334, 0x222c,
-  0x5337, 0x109c,
-  0x5338, 0x222f,
-  0x5339, 0x109e,
-  0x533b, 0x2230,
-  0x533c, 0x10a1,
-  0x5345, 0x2231,
-  0x5346, 0x10ab,
-  0x5347, 0x2232,
-  0x5348, 0x10ad,
-  0x534a, 0x2233,
-  0x534d, 0x10b2,
-  0x5355, 0x2236,
-  0x5356, 0x10bb,
-  0x535f, 0x2237,
-  0x5361, 0x10c6,
-  0x5363, 0x2239,
-  0x5364, 0x10c9,
-  0x5366, 0x223a,
-  0x5367, 0x10cc,
-  0x536b, 0x223b,
-  0x536d, 0x10d2,
-  0x536f, 0x223d,
-  0x5370, 0x10d5,
-  0x5374, 0x223e,
-  0x5375, 0x10da,
-  0x537c, 0x223f,
-  0x537d, 0x10e2,
-  0x537e, 0x2240,
-  0x5421, 0x10e4,
-  0x5424, 0x2241,
-  0x5425, 0x10e8,
-  0x5426, 0x2242,
-  0x5429, 0x10ec,
-  0x542f, 0x2245,
-  0x5433, 0x10f6,
-  0x5435, 0x2249,
-  0x5437, 0x10fa,
-  0x5438, 0x224b,
-  0x5439, 0x10fc,
-  0x543c, 0x224c,
-  0x543d, 0x1100,
-  0x543e, 0x224d,
-  0x5440, 0x1103,
-  0x5444, 0x224f,
-  0x5445, 0x1108,
-  0x5446, 0x2250,
-  0x5448, 0x110b,
-  0x5449, 0x2252,
-  0x544a, 0x110d,
-  0x544b, 0x2253,
-  0x544f, 0x1112,
-  0x5453, 0x2257,
-  0x5454, 0x1117,
-  0x5458, 0x2258,
-  0x5459, 0x111c,
-  0x545c, 0x2259,
-  0x5461, 0x1124,
-  0x5464, 0x225e,
-  0x5465, 0x1128,
-  0x5466, 0x225f,
-  0x5467, 0x112a,
-  0x546e, 0x2260,
-  0x546f, 0x1132,
-  0x5470, 0x2261,
-  0x5475, 0x1138,
-  0x5479, 0x2266,
-  0x547a, 0x113d,
-  0x547e, 0x2267,
-  0x5521, 0x2268,
-  0x5523, 0x1144,
-  0x5529, 0x226a,
-  0x552a, 0x114b,
-  0x552b, 0x226b,
-  0x552c, 0x114d,
-  0x552e, 0x226c,
-  0x552f, 0x1150,
-  0x5531, 0x226d,
-  0x5532, 0x1153,
-  0x5535, 0x226e,
-  0x5539, 0x115a,
-  0x553b, 0x2272,
-  0x553c, 0x115d,
-  0x553d, 0x2273,
-  0x553e, 0x115f,
-  0x5540, 0x2274,
-  0x5541, 0x1162,
-  0x5545, 0x2275,
-  0x5546, 0x1167,
-  0x5547, 0x2276,
-  0x5548, 0x1169,
-  0x554a, 0x2277,
-  0x554c, 0x116d,
-  0x554d, 0x2279,
-  0x554e, 0x116f,
-  0x5554, 0x227a,
-  0x5555, 0x1176,
-  0x555d, 0x227b,
-  0x555f, 0x1180,
-  0x5560, 0x227d,
-  0x5561, 0x1182,
-  0x5562, 0x227e,
-  0x5563, 0x1184,
-  0x556a, 0x227f,
-  0x556d, 0x118e,
-  0x556f, 0x2282,
-  0x5570, 0x1191,
-  0x5572, 0x2283,
-  0x5574, 0x1195,
-  0x5577, 0x15eb,
-  0x5578, 0x1199,
-  0x5621, 0x2285,
-  0x5625, 0x11a4,
-  0x562f, 0x2289,
-  0x5631, 0x11b0,
-  0x5634, 0x228b,
-  0x5635, 0x11b4,
-  0x563b, 0x228c,
-  0x563c, 0x11bb,
-  0x563d, 0x228d,
-  0x563e, 0x11bd,
-  0x563f, 0x228e,
-  0x5641, 0x11c0,
-  0x5644, 0x2290,
-  0x5645, 0x11c4,
-  0x564a, 0x2291,
-  0x564b, 0x11ca,
-  0x564d, 0x2292,
-  0x564e, 0x11cd,
-  0x5653, 0x2293,
-  0x5654, 0x11d3,
-  0x5655, 0x2294,
-  0x5658, 0x11d7,
-  0x565a, 0x2297,
-  0x565b, 0x11da,
-  0x565f, 0x2298,
-  0x5660, 0x11df,
-  0x5661, 0x2299,
-  0x5662, 0x11e1,
-  0x5665, 0x229a,
-  0x5666, 0x11e5,
-  0x5667, 0x229b,
-  0x5669, 0x11e8,
-  0x566e, 0x229d,
-  0x5670, 0x11ef,
-  0x5672, 0x229f,
-  0x5673, 0x11f2,
-  0x5675, 0x22a0,
-  0x5677, 0x11f6,
-  0x567c, 0x22a2,
-  0x5721, 0x11fe,
-  0x5724, 0x22a5,
-  0x5725, 0x1202,
-  0x5728, 0x22a6,
-  0x572b, 0x1208,
-  0x572c, 0x22a9,
-  0x572d, 0x120a,
-  0x572e, 0x22aa,
-  0x5732, 0x120f,
-  0x5733, 0x22ae,
-  0x5735, 0x1212,
-  0x5736, 0x22b0,
-  0x5737, 0x1214,
-  0x5738, 0x22b1,
-  0x573d, 0x121a,
-  0x5747, 0x22b6,
-  0x5748, 0x1225,
-  0x574a, 0x22b7,
-  0x574b, 0x1228,
-  0x5755, 0x22b8,
-  0x5756, 0x1233,
-  0x575b, 0x22b9,
-  0x575f, 0x123c,
-  0x5767, 0x22bd,
-  0x5768, 0x1245,
-  0x5769, 0x22be,
-  0x576b, 0x1248,
-  0x5821, 0x1257,
-  0x5844, 0x22c0,
-  0x5845, 0x127b,
-  0x5847, 0x22c1,
-  0x5848, 0x127e,
-  0x5849, 0x22c2,
-  0x584a, 0x1280,
-  0x584c, 0x22c3,
-  0x584e, 0x1284,
-  0x5850, 0x22c5,
-  0x5852, 0x1288,
-  0x5853, 0x22c7,
-  0x5854, 0x128a,
-  0x5859, 0x22c8,
-  0x585a, 0x1290,
-  0x585b, 0x22c9,
-  0x585d, 0x1293,
-  0x5871, 0x22cb,
-  0x5872, 0x12a8,
-  0x5876, 0x22cc,
-  0x5878, 0x12ae,
-  0x5921, 0x12b5,
-  0x592d, 0x22ce,
-  0x592e, 0x12c2,
-  0x592f, 0x22cf,
-  0x5930, 0x12c4,
-  0x5931, 0x22d0,
-  0x5934, 0x12c8,
-  0x5947, 0x22d3,
-  0x5948, 0x12dc,
-  0x594d, 0x22d4,
-  0x5951, 0x12e5,
-  0x595d, 0x22d8,
-  0x595e, 0x12f2,
-  0x5961, 0x22d9,
-  0x5962, 0x12f6,
-  0x5964, 0x22da,
-  0x5965, 0x12f9,
-  0x5966, 0x22db,
-  0x5967, 0x12fb,
-  0x596c, 0x22dc,
-  0x596d, 0x1301,
-  0x5974, 0x22dd,
-  0x5976, 0x130a,
-  0x5a21, 0x1313,
-  0x5a25, 0x22df,
-  0x5a60, 0x1352,
-  0x5a6a, 0x231a,
-  0x5a6b, 0x135d,
-  0x5a77, 0x231b,
-  0x5a78, 0x136a,
-  0x5a79, 0x231c,
-  0x5a7a, 0x136c,
-  0x5a7e, 0x231d,
-  0x5b21, 0x1371,
-  0x5b23, 0x231e,
-  0x5b24, 0x1374,
-  0x5b26, 0x231f,
-  0x5b27, 0x1377,
-  0x5b29, 0x2320,
-  0x5b2b, 0x137b,
-  0x5b3b, 0x2322,
-  0x5b3c, 0x138c,
-  0x5b3d, 0x2323,
-  0x5b3e, 0x138e,
-  0x5b4f, 0x2324,
-  0x5b50, 0x13a0,
-  0x5b51, 0x2325,
-  0x5b52, 0x13a2,
-  0x5b5b, 0x2326,
-  0x5b5c, 0x13ac,
-  0x5b5e, 0x2327,
-  0x5b5f, 0x13af,
-  0x5b62, 0x2328,
-  0x5b63, 0x13b3,
-  0x5b64, 0x2329,
-  0x5b65, 0x13b5,
-  0x5b6b, 0x232a,
-  0x5b6c, 0x13bc,
-  0x5b6e, 0x232b,
-  0x5b6f, 0x13bf,
-  0x5b71, 0x232c,
-  0x5b72, 0x13c2,
-  0x5b75, 0x232d,
-  0x5b78, 0x13c8,
-  0x5c21, 0x13cf,
-  0x5c3c, 0x2330,
-  0x5c3d, 0x13eb,
-  0x5c3f, 0x2331,
-  0x5c40, 0x13ee,
-  0x5c42, 0x2332,
-  0x5c43, 0x13f1,
-  0x5c48, 0x2333,
-  0x5c4b, 0x13f9,
-  0x5c51, 0x2336,
-  0x5c52, 0x1400,
-  0x5c57, 0x2337,
-  0x5c58, 0x1406,
-  0x5c60, 0x2338,
-  0x5c61, 0x140f,
-  0x5c63, 0x2339,
-  0x5c65, 0x1413,
-  0x5c69, 0x233b,
-  0x5c6b, 0x1419,
-  0x5c71, 0x233d,
-  0x5c72, 0x1420,
-  0x5c76, 0x233e,
-  0x5c77, 0x1425,
-  0x5c79, 0x233f,
-  0x5c7a, 0x1428,
-  0x5c7d, 0x2340,
-  0x5d21, 0x2342,
-  0x5d22, 0x142e,
-  0x5d23, 0x2343,
-  0x5d28, 0x1434,
-  0x5d2a, 0x2348,
-  0x5d2c, 0x1438,
-  0x5d32, 0x234a,
-  0x5d33, 0x143f,
-  0x5d35, 0x234b,
-  0x5d36, 0x1442,
-  0x5d3a, 0x234c,
-  0x5d3c, 0x1448,
-  0x5d53, 0x234e,
-  0x5d54, 0x1460,
-  0x5d5b, 0x234f,
-  0x5d5c, 0x1468,
-  0x5d5e, 0x2350,
-  0x5d5f, 0x146b,
-  0x5d64, 0x2351,
-  0x5d65, 0x1471,
-  0x5d6b, 0x2352,
-  0x5d6c, 0x1478,
-  0x5d71, 0x2353,
-  0x5d72, 0x147e,
-  0x5d76, 0x2354,
-  0x5d78, 0x1484,
-  0x5d7c, 0x2356,
-  0x5d7d, 0x1489,
-  0x5d7e, 0x2357,
-  0x5e21, 0x148b,
-  0x5e2d, 0x2358,
-  0x5e2e, 0x1498,
-  0x5e34, 0x2359,
-  0x5e35, 0x149f,
-  0x5e3a, 0x235a,
-  0x5e3b, 0x14a5,
-  0x5e46, 0x235b,
-  0x5e47, 0x14b1,
-  0x5e4f, 0x235c,
-  0x5e50, 0x14ba,
-  0x5e51, 0x235d,
-  0x5e53, 0x14bd,
-  0x5e58, 0x235f,
-  0x5e59, 0x14c3,
-  0x5e62, 0x2360,
-  0x5e63, 0x14cd,
-  0x5e68, 0x2361,
-  0x5e69, 0x14d3,
-  0x5e6c, 0x2362,
-  0x5e6d, 0x14d7,
-  0x5e73, 0x2363,
-  0x5e74, 0x14de,
-  0x5e7c, 0x2364,
-  0x5e7d, 0x14e7,
-  0x5f21, 0x14e9,
-  0x5f22, 0x2365,
-  0x5f24, 0x14ec,
-  0x5f25, 0x2367,
-  0x5f26, 0x14ee,
-  0x5f34, 0x2368,
-  0x5f35, 0x14fd,
-  0x5f3c, 0x2369,
-  0x5f3e, 0x1506,
-  0x5f3f, 0x236b,
-  0x5f40, 0x1508,
-  0x5f42, 0x236c,
-  0x5f44, 0x150c,
-  0x5f4c, 0x236e,
-  0x5f4d, 0x1515,
-  0x5f50, 0x236f,
-  0x5f51, 0x1519,
-  0x5f55, 0x2370,
-  0x5f56, 0x151e,
-  0x5f58, 0x2371,
-  0x5f5a, 0x1522,
-  0x5f5c, 0x2373,
-  0x5f5d, 0x1525,
-  0x5f60, 0x2374,
-  0x5f61, 0x1529,
-  0x5f62, 0x2375,
-  0x5f63, 0x152b,
-  0x5f66, 0x2376,
-  0x5f67, 0x152f,
-  0x5f69, 0x2377,
-  0x5f6a, 0x1532,
-  0x5f6b, 0x2378,
-  0x5f6c, 0x1534,
-  0x5f6f, 0x2379,
-  0x5f70, 0x1538,
-  0x5f75, 0x237a,
-  0x5f76, 0x153e,
-  0x5f79, 0x237b,
-  0x5f7a, 0x1542,
-  0x6021, 0x1547,
-  0x6036, 0x237c,
-  0x6038, 0x155e,
-  0x603f, 0x237e,
-  0x6040, 0x1566,
-  0x6048, 0x237f,
-  0x6049, 0x156f,
-  0x604e, 0x2380,
-  0x604f, 0x1575,
-  0x6053, 0x2381,
-  0x6054, 0x157a,
-  0x6060, 0x2382,
-  0x6061, 0x1587,
-  0x6070, 0x2383,
-  0x6071, 0x1597,
-  0x6078, 0x2384,
-  0x6079, 0x159f,
-  0x607c, 0x2385,
-  0x6121, 0x15a5,
-  0x612b, 0x2388,
-  0x612c, 0x15b0,
-  0x612d, 0x2389,
-  0x612e, 0x15b2,
-  0x6130, 0x238a,
-  0x6131, 0x15b5,
-  0x6134, 0x238b,
-  0x6135, 0x15b9,
-  0x613b, 0x238c,
-  0x613c, 0x15c0,
-  0x613d, 0x238d,
-  0x613e, 0x15c2,
-  0x6140, 0x238e,
-  0x6142, 0x15c6,
-  0x6149, 0x2390,
-  0x614a, 0x15ce,
-  0x6150, 0x2391,
-  0x6151, 0x15d5,
-  0x615b, 0x2392,
-  0x615c, 0x15e0,
-  0x6161, 0x07aa,
-  0x6162, 0x2393,
-  0x6163, 0x15e7,
-  0x6167, 0x1198,
-  0x6168, 0x15ec,
-  0x616e, 0x2394,
-  0x6170, 0x15f4,
-  0x6176, 0x2396,
-  0x6177, 0x15fb,
-  0x6178, 0x2397,
-  0x6179, 0x15fd,
-  0x617d, 0x2398,
-  0x617e, 0x1602,
-  0x6221, 0x1603,
-  0x6224, 0x2399,
-  0x6225, 0x1607,
-  0x6228, 0x239a,
-  0x6229, 0x160b,
-  0x623b, 0x239b,
-  0x6245, 0x10c5,
-  0x6246, 0x23a5,
-  0x624f, 0x1631,
-  0x6250, 0x23ae,
-  0x6251, 0x1633,
-  0x6259, 0x23af,
-  0x625a, 0x163c,
-  0x6263, 0x23b0,
-  0x6265, 0x1647,
-  0x6266, 0x23b2,
-  0x6267, 0x1649,
-  0x6269, 0x23b3,
-  0x626c, 0x164e,
-  0x6278, 0x23b6,
-  0x6279, 0x165b,
-  0x627a, 0x23b7,
-  0x627e, 0x1660,
-  0x6321, 0x1661,
-  0x6322, 0x23bb,
-  0x6323, 0x1663,
-  0x6325, 0x23bc,
-  0x6326, 0x1666,
-  0x632b, 0x23bd,
-  0x632c, 0x166c,
-  0x6334, 0x23be,
-  0x6335, 0x1675,
-  0x6345, 0x23bf,
-  0x635c, 0x169c,
-  0x6363, 0x23d6,
-  0x6364, 0x16a4,
-  0x636d, 0x23d7,
-  0x636e, 0x16ae,
-  0x6371, 0x23d8,
-  0x6373, 0x16b3,
-  0x6378, 0x23da,
-  0x6379, 0x16b9,
-  0x637e, 0x23db,
-  0x6421, 0x16bf,
-  0x6424, 0x23dc,
-  0x6426, 0x16c4,
-  0x642b, 0x23de,
-  0x642c, 0x16ca,
-  0x642f, 0x23df,
-  0x6432, 0x16d0,
-  0x6435, 0x23e2,
-  0x6437, 0x16d5,
-  0x6442, 0x23e4,
-  0x6443, 0x16e1,
-  0x6445, 0x23e5,
-  0x6446, 0x16e4,
-  0x6449, 0x23e6,
-  0x644a, 0x16e8,
-  0x6459, 0x23e7,
-  0x645a, 0x16f8,
-  0x645c, 0x23e8,
-  0x645d, 0x16fb,
-  0x645e, 0x23e9,
-  0x645f, 0x16fd,
-  0x6464, 0x23ea,
-  0x6465, 0x1703,
-  0x646b, 0x23eb,
-  0x646d, 0x170b,
-  0x6472, 0x23ed,
-  0x6473, 0x1711,
-  0x647e, 0x23ee,
-  0x6521, 0x171d,
-  0x6530, 0x23ef,
-  0x6531, 0x172d,
-  0x6539, 0x23f0,
-  0x653a, 0x1736,
-  0x6547, 0x23f1,
-  0x6548, 0x1744,
-  0x6549, 0x23f2,
-  0x654a, 0x1746,
-  0x654e, 0x23f3,
-  0x654f, 0x174b,
-  0x6570, 0x23f4,
-  0x6571, 0x176d,
-  0x6572, 0x23f5,
-  0x6573, 0x176f,
-  0x657c, 0x23f6,
-  0x657e, 0x177a,
-  0x6621, 0x177b,
-  0x6623, 0x23f8,
-  0x6624, 0x177e,
-  0x662b, 0x23f9,
-  0x662d, 0x1787,
-  0x662e, 0x23fb,
-  0x662f, 0x1789,
-  0x6634, 0x23fc,
-  0x6636, 0x1790,
-  0x663f, 0x23fe,
-  0x6640, 0x179a,
-  0x6648, 0x23ff,
-  0x664a, 0x17a4,
-  0x664d, 0x2401,
-  0x664e, 0x17a8,
-  0x6660, 0x2402,
-  0x6721, 0x2421,
-  0x675b, 0x1813,
-  0x6761, 0x245b,
-  0x6763, 0x181b,
-  0x6767, 0x245d,
-  0x6768, 0x1820,
-  0x676f, 0x245e,
-  0x6770, 0x1828,
-  0x6774, 0x245f,
-  0x6777, 0x182f,
-  0x6821, 0x1837,
-  0x6828, 0x2462,
-  0x6829, 0x183f,
-  0x682c, 0x2463,
-  0x682d, 0x1843,
-  0x6836, 0x2464,
-  0x6837, 0x184d,
-  0x6838, 0x2465,
-  0x683b, 0x1851,
-  0x683f, 0x2468,
-  0x6841, 0x1857,
-  0x6845, 0x246a,
-  0x6846, 0x185c,
-  0x6847, 0x246b,
-  0x684a, 0x1860,
-  0x684e, 0x246e,
-  0x684f, 0x1865,
-  0x6850, 0x246f,
-  0x6851, 0x1867,
-  0x6853, 0x2470,
-  0x6854, 0x186a,
-  0x685d, 0x2471,
-  0x685e, 0x1874,
-  0x685f, 0x2472,
-  0x6860, 0x1876,
-  0x6862, 0x2473,
-  0x6864, 0x187a,
-  0x6865, 0x2475,
-  0x6866, 0x187c,
-  0x6867, 0x2476,
-  0x6868, 0x187e,
-  0x686b, 0x2477,
-  0x686c, 0x1882,
-  0x686d, 0x2478,
-  0x686e, 0x1884,
-  0x686f, 0x2479,
-  0x6870, 0x1886,
-  0x6879, 0x247a,
-  0x687a, 0x1890,
-  0x687c, 0x247b,
-  0x687e, 0x1894,
-  0x6921, 0x247d,
-  0x6922, 0x1896,
-  0x692d, 0x247e,
-  0x692e, 0x18a2,
-  0x6934, 0x247f,
-  0x6936, 0x18aa,
-  0x6937, 0x2481,
-  0x6938, 0x18ac,
-  0x6944, 0x2482,
-  0x6945, 0x18b9,
-  0x6946, 0x2483,
-  0x6947, 0x18bb,
-  0x6949, 0x2484,
-  0x694a, 0x18be,
-  0x6956, 0x2485,
-  0x6957, 0x18cb,
-  0x695a, 0x2486,
-  0x695b, 0x18cf,
-  0x6964, 0x2487,
-  0x6965, 0x18d9,
-  0x6966, 0x2488,
-  0x6968, 0x18dc,
-  0x6969, 0x248a,
-  0x696a, 0x18de,
-  0x696b, 0x248b,
-  0x696c, 0x18e0,
-  0x696d, 0x248c,
-  0x6a21, 0x249e,
-  0x6a26, 0x18f8,
-  0x6a27, 0x24a3,
-  0x6a29, 0x18fb,
-  0x6a31, 0x24a5,
-  0x6a32, 0x1904,
-  0x6a3c, 0x24a6,
-  0x6a3d, 0x190f,
-  0x6a4a, 0x24a7,
-  0x6a4b, 0x191d,
-  0x6a4d, 0x24a8,
-  0x6a4e, 0x1920,
-  0x6a53, 0x24a9,
-  0x6a54, 0x1926,
-  0x6a5a, 0x24aa,
-  0x6a70, 0x1942,
-  0x6b21, 0x1951,
-  0x6b27, 0x24c0,
-  0x6b28, 0x1958,
-  0x6b2a, 0x24c1,
-  0x6b2b, 0x195b,
-  0x6b32, 0x24c2,
-  0x6b33, 0x1963,
-  0x6b39, 0x24c3,
-  0x6b3a, 0x196a,
-  0x6b4a, 0x24c4,
-  0x6b4c, 0x197c,
-  0x6b4d, 0x24c6,
-  0x6b4e, 0x197e,
-  0x6b56, 0x24c7,
-  0x6b57, 0x1987,
-  0x6b5a, 0x24c8,
-  0x6b5b, 0x198b,
-  0x6b61, 0x24c9,
-  0x6b62, 0x1992,
-  0x6b77, 0x24ca,
-  0x6b78, 0x19a8,
-  0x6c21, 0x19af,
-  0x6c23, 0x24cb,
-  0x6c24, 0x19b2,
-  0x6c29, 0x24cc,
-  0x6c2f, 0x19bd,
-  0x6c31, 0x24d2,
-  0x6c32, 0x19c0,
-  0x6c34, 0x24d3,
-  0x6c36, 0x19c4,
-  0x6c3e, 0x24d5,
-  0x6c40, 0x19ce,
-  0x6c41, 0x24d7,
-  0x6c42, 0x19d0,
-  0x6c47, 0x24d8,
-  0x6c48, 0x19d6,
-  0x6c4b, 0x24d9,
-  0x6c4c, 0x19da,
-  0x6c62, 0x24da,
-  0x6c63, 0x19f1,
-  0x6c72, 0x24db,
-  0x6c73, 0x1a01,
-  0x6c75, 0x24dc,
-  0x6c76, 0x1a04,
-  0x6c78, 0x24dd,
-  0x6c79, 0x1a07,
-  0x6d21, 0x24de,
-  0x6d22, 0x1a0e,
-  0x6d28, 0x24df,
-  0x6d29, 0x1a15,
-  0x6d2f, 0x24e0,
-  0x6d31, 0x1a1d,
-  0x6d34, 0x24e2,
-  0x6d35, 0x1a21,
-  0x6d36, 0x24e3,
-  0x6d37, 0x1a23,
-  0x6d38, 0x24e4,
-  0x6d39, 0x1a25,
-  0x6d3a, 0x24e5,
-  0x6d3b, 0x1a27,
-  0x6d3f, 0x24e6,
-  0x6d40, 0x1a2c,
-  0x6d42, 0x24e7,
-  0x6d44, 0x1a30,
-  0x6d4c, 0x24e9,
-  0x6d4e, 0x1a3a,
-  0x6d53, 0x24eb,
-  0x6d54, 0x1a40,
-  0x6d57, 0x24ec,
-  0x6d58, 0x1a44,
-  0x6d68, 0x24ed,
-  0x6d69, 0x1a55,
-  0x6d6e, 0x24ee,
-  0x6d6f, 0x1a5b,
-  0x6d79, 0x24ef,
-  0x6d7b, 0x1a67,
-  0x6e21, 0x1a6b,
-  0x6e3c, 0x24f1,
-  0x6e3d, 0x1a87,
-  0x6e3f, 0x24f2,
-  0x6e40, 0x1a8a,
-  0x6e44, 0x24f3,
-  0x6f21, 0x252e,
-  0x6f72, 0x1b1a,
-  0x7021, 0x1b27,
-  0x7023, 0x257f,
-  0x7024, 0x1b2a,
-  0x702f, 0x2580,
-  0x705a, 0x1b60,
-  0x705c, 0x25ab,
-  0x705e, 0x1b64,
-  0x705f, 0x25ad,
-  0x7060, 0x1b66,
-  0x7069, 0x25ae,
-  0x706a, 0x1b70,
-  0x706c, 0x25af,
-  0x706d, 0x1b73,
-  0x706f, 0x25b0,
-  0x7070, 0x1b76,
-  0x7077, 0x25b1,
-  0x7078, 0x1b7e,
-  0x7079, 0x25b2,
-  0x707a, 0x1b80,
-  0x707c, 0x25b3,
-  0x707d, 0x1b83,
-  0x7121, 0x1b85,
-  0x7128, 0x25b4,
-  0x7129, 0x1b8d,
-  0x712b, 0x25b5,
-  0x712c, 0x1b90,
-  0x712e, 0x25b6,
-  0x712f, 0x1b93,
-  0x7132, 0x25b7,
-  0x7133, 0x1b97,
-  0x713c, 0x25b8,
-  0x713d, 0x1ba1,
-  0x7140, 0x25b9,
-  0x7141, 0x1ba5,
-  0x7149, 0x25ba,
-  0x714a, 0x1bae,
-  0x714d, 0x25bb,
-  0x714e, 0x1bb2,
-  0x714f, 0x25bc,
-  0x7151, 0x1bb5,
-  0x715a, 0x25be,
-  0x715b, 0x1bbf,
-  0x715c, 0x25bf,
-  0x715d, 0x1bc1,
-  0x7164, 0x25c0,
-  0x7165, 0x1bc9,
-  0x716c, 0x25c1,
-  0x716d, 0x1bd1,
-  0x716f, 0x25c2,
-  0x7170, 0x1bd4,
-  0x7177, 0x25c3,
-  0x7178, 0x1bdc,
-  0x7179, 0x25c4,
-  0x717a, 0x1bde,
-  0x717c, 0x25c5,
-  0x7221, 0x25c8,
-  0x722e, 0x1bf0,
-  0x7231, 0x25d5,
-  0x7233, 0x1bf5,
-  0x7239, 0x25d7,
-  0x723a, 0x1bfc,
-  0x7243, 0x25d8,
-  0x7244, 0x1c06,
-  0x7249, 0x25d9,
-  0x724a, 0x1c0c,
-  0x724c, 0x25da,
-  0x724e, 0x1c10,
-  0x724f, 0x25dc,
-  0x7250, 0x1c12,
-  0x7253, 0x25dd,
-  0x7254, 0x1c16,
-  0x7265, 0x25de,
-  0x7266, 0x1c28,
-  0x726e, 0x25df,
-  0x726f, 0x1c31,
-  0x7277, 0x25e0,
-  0x7278, 0x1c3a,
-  0x727d, 0x25e1,
-  0x727e, 0x1c40,
-  0x7321, 0x1c41,
-  0x733f, 0x25e2,
-  0x7340, 0x1c60,
-  0x7346, 0x25e3,
-  0x7347, 0x1c67,
-  0x7348, 0x25e4,
-  0x7349, 0x1c69,
-  0x7356, 0x25e5,
-  0x7357, 0x1c77,
-  0x7359, 0x25e6,
-  0x735a, 0x1c7a,
-  0x7365, 0x25e7,
-  0x7367, 0x1c87,
-  0x736a, 0x25e9,
-  0x736b, 0x1c8b,
-  0x736c, 0x25ea,
-  0x736d, 0x1c8d,
-  0x736f, 0x25eb,
-  0x7370, 0x1c90,
-  0x7371, 0x25ec,
-  0x7372, 0x1c92,
-  0x737d, 0x25ed,
-  0x737e, 0x1c9e,
-  0x7421, 0x1c9f,
-  0x7425, 0x25ee,
-  0x7426, 0x1ca4,
-  0x742f, 0x25ef,
-  0x7430, 0x1cae,
-  0x7435, 0x25f0,
-  0x7436, 0x1cb4,
-  0x7441, 0x25f1,
-  0x7442, 0x1cc0,
-  0x7447, 0x25f2,
-  0x7448, 0x1cc6,
-  0x744f, 0x25f3,
-  0x7451, 0x1ccf,
-  0x7456, 0x25f5,
-  0x7457, 0x1cd5,
-  0x746a, 0x25f6,
-  0x746b, 0x1ce9,
-  0x746f, 0x25f7,
-  0x7470, 0x1cee,
-  0x7475, 0x25f8,
-  0x7476, 0x1cf4,
-  0x7521, 0x1cfd,
-  0x7526, 0x25f9,
-  0x7528, 0x1d04,
-  0x753a, 0x25fb,
-  0x753c, 0x1d18,
-  0x7544, 0x25fd,
-  0x7545, 0x1d21,
-  0x7548, 0x25fe,
-  0x7549, 0x1d25,
-  0x754e, 0x25ff,
-  0x7550, 0x1d2c,
-  0x7551, 0x2601,
-  0x7553, 0x1d2f,
-  0x7559, 0x2603,
-  0x755a, 0x1d36,
-  0x755c, 0x2604,
-  0x755d, 0x1d39,
-  0x7566, 0x2605,
-  0x7568, 0x1d44,
-  0x756f, 0x2607,
-  0x7570, 0x1d4c,
-  0x7572, 0x2608,
-  0x7573, 0x1d4f,
-  0x757c, 0x2609,
-  0x757d, 0x1d59,
-  0x7621, 0x1d5b,
-  0x7623, 0x260a,
-  0x7624, 0x1d5e,
-  0x7626, 0x260b,
-  0x7627, 0x1d61,
-  0x7628, 0x260c,
-  0x7629, 0x1d63,
-  0x762b, 0x260d,
-  0x762c, 0x1d66,
-  0x7630, 0x260e,
-  0x7631, 0x1d6b,
-  0x7633, 0x260f,
-  0x763f, 0x1d79,
-  0x7645, 0x261b,
-  0x7646, 0x1d80,
-  0x7647, 0x261c,
-  0x7648, 0x1d82,
-  0x7649, 0x261d,
-  0x764a, 0x1d84,
-  0x764f, 0x261e,
-  0x7721, 0x264e,
-  0x7730, 0x1dc8,
-  0x7732, 0x265d,
-  0x7734, 0x1dcc,
-  0x7735, 0x265f,
-  0x7736, 0x1dce,
-  0x773d, 0x2660,
-  0x773e, 0x1dd6,
-  0x7743, 0x2661,
-  0x7744, 0x1ddc,
-  0x7745, 0x2662,
-  0x7747, 0x1ddf,
-  0x774a, 0x2664,
-  0x774c, 0x1de4,
-  0x774f, 0x2666,
-  0x7751, 0x1de9,
-  0x775e, 0x2668,
-  0x775f, 0x1df7,
-  0x7761, 0x0ab9,
-  0x7762, 0x1dfa,
-  0x7772, 0x2669,
-  0x7773, 0x1e0b,
-  0x7775, 0x266a,
-  0x7776, 0x1e0e,
-  0x7821, 0x266b,
-  0x7827, 0x04cc,
-  0x7828, 0x050a,
-  0x7829, 0x0518,
-  0x782a, 0x2671,
-  0x782c, 0x0594,
-  0x782d, 0x05ce,
-  0x782e, 0x2673,
-  0x782f, 0x05f6,
-  0x7830, 0x2674,
-  0x7832, 0x0653,
-  0x7833, 0x067e,
-  0x7834, 0x2676,
-  0x7835, 0x06c4,
-  0x7836, 0x2677,
-  0x7838, 0x073c,
-  0x7839, 0x2679,
-  0x783b, 0x07c3,
-  0x783c, 0x267b,
-  0x7840, 0x082b,
-  0x7841, 0x267f,
-  0x7842, 0x084e,
-  0x7843, 0x0869,
-  0x7844, 0x2680,
-  0x7846, 0x090c,
-  0x7847, 0x2682,
-  0x7849, 0x0971,
-  0x784a, 0x2684,
-  0x784b, 0x099a,
-  0x784d, 0x2685,
-  0x784e, 0x09da,
-  0x784f, 0x2686,
-  0x7850, 0x09fa,
-  0x7851, 0x2687,
-  0x785c, 0x0bda,
-  0x785d, 0x0bdd,
-  0x785e, 0x0bea,
-  0x785f, 0x0bec,
-  0x7860, 0x0bf2,
-  0x7861, 0x2692,
-  0x7866, 0x0c92,
-  0x7867, 0x0d1a,
-  0x7868, 0x0d8c,
-  0x7869, 0x0dbe,
-  0x786a, 0x2697,
-  0x786b, 0x0dfb,
-  0x786c, 0x2698,
-  0x786f, 0x0e70,
-  0x7870, 0x269b,
-  0x7871, 0x0ea3,
-  0x7872, 0x269c,
-  0x7878, 0x103d,
-  0x7879, 0x10d9,
-  0x787a, 0x26a2,
-  0x787c, 0x10fb,
-  0x787d, 0x1109,
-  0x787e, 0x26a4,
-  0x7921, 0x11a1,
-  0x7922, 0x26a5,
-  0x7923, 0x11ba,
-  0x7924, 0x26a6,
-  0x7926, 0x11d5,
-  0x7927, 0x26a8,
-  0x7928, 0x11fd,
-  0x7929, 0x1219,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBTHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBTHMap2, 2283
-};
-
-static Gushort gb12GBTVMap2[4606] = {
-  0x0000, 0x0000,
-  0x2121, 0x0060,
-  0x2231, 0x00be,
-  0x2265, 0x00f0,
-  0x2271, 0x00fa,
-  0x2321, 0x0106,
-  0x2421, 0x0164,
-  0x2521, 0x01b7,
-  0x2621, 0x020d,
-  0x2641, 0x0225,
-  0x2721, 0x025a,
-  0x2751, 0x027b,
-  0x2821, 0x029c,
-  0x2845, 0x02bc,
-  0x2924, 0x02e2,
-  0x2a21, 0x032e,
-  0x2b21, 0x038c,
-  0x3021, 0x03ac,
-  0x3028, 0x1e25,
-  0x3029, 0x03b4,
-  0x302a, 0x1e26,
-  0x302b, 0x03b6,
-  0x302d, 0x1e27,
-  0x302f, 0x03ba,
-  0x3039, 0x1e29,
-  0x303a, 0x03c5,
-  0x3040, 0x1e2a,
-  0x3041, 0x03cc,
-  0x3053, 0x1e2b,
-  0x3054, 0x03df,
-  0x3055, 0x1e2c,
-  0x3056, 0x03e1,
-  0x305a, 0x1e2d,
-  0x305b, 0x03e6,
-  0x305c, 0x1e2e,
-  0x305d, 0x03e8,
-  0x3064, 0x1e2f,
-  0x3065, 0x03f0,
-  0x306c, 0x1e30,
-  0x306e, 0x03f9,
-  0x306f, 0x1e32,
-  0x3070, 0x03fb,
-  0x3073, 0x1e33,
-  0x3074, 0x03ff,
-  0x3077, 0x1e34,
-  0x3078, 0x0403,
-  0x3079, 0x1e35,
-  0x307a, 0x0405,
-  0x3121, 0x040a,
-  0x3125, 0x1e36,
-  0x3127, 0x0410,
-  0x3128, 0x1e38,
-  0x3129, 0x0412,
-  0x312b, 0x1e39,
-  0x312c, 0x0415,
-  0x3132, 0x1e3a,
-  0x3133, 0x041c,
-  0x3134, 0x1e3b,
-  0x3136, 0x041f,
-  0x3137, 0x1e3d,
-  0x313a, 0x0423,
-  0x3141, 0x1e40,
-  0x3142, 0x042b,
-  0x314a, 0x1e41,
-  0x314b, 0x0434,
-  0x314f, 0x1e42,
-  0x3151, 0x043a,
-  0x3152, 0x1e44,
-  0x3153, 0x043c,
-  0x3155, 0x1e45,
-  0x3156, 0x043f,
-  0x315f, 0x1e46,
-  0x3162, 0x044b,
-  0x3164, 0x1e49,
-  0x3165, 0x044e,
-  0x3167, 0x1e4a,
-  0x3169, 0x0452,
-  0x316a, 0x1e4c,
-  0x316b, 0x0454,
-  0x316e, 0x1e4d,
-  0x316f, 0x0458,
-  0x3171, 0x1e4e,
-  0x3172, 0x045b,
-  0x3174, 0x1e4f,
-  0x3178, 0x0461,
-  0x317d, 0x1e53,
-  0x317e, 0x0467,
-  0x3221, 0x0468,
-  0x3226, 0x1e54,
-  0x3228, 0x046f,
-  0x322c, 0x1e56,
-  0x322d, 0x0474,
-  0x3235, 0x1e57,
-  0x3236, 0x047d,
-  0x3239, 0x1e58,
-  0x323a, 0x0481,
-  0x3246, 0x1e59,
-  0x3247, 0x048e,
-  0x324e, 0x1e5a,
-  0x3258, 0x049f,
-  0x325e, 0x1e64,
-  0x325f, 0x04a6,
-  0x3260, 0x1e65,
-  0x3261, 0x04a8,
-  0x3262, 0x1e66,
-  0x3264, 0x04ab,
-  0x326f, 0x1e68,
-  0x3270, 0x04b7,
-  0x3273, 0x1e69,
-  0x327d, 0x04c4,
-  0x3321, 0x1e73,
-  0x3323, 0x04c8,
-  0x3324, 0x1e75,
-  0x3328, 0x04cd,
-  0x3329, 0x1e79,
-  0x332a, 0x04cf,
-  0x332e, 0x1e7a,
-  0x332f, 0x04d4,
-  0x3335, 0x1e7b,
-  0x3336, 0x04db,
-  0x3339, 0x1e7c,
-  0x333a, 0x04df,
-  0x333e, 0x1e7d,
-  0x333f, 0x04e4,
-  0x3342, 0x1e7e,
-  0x3343, 0x04e8,
-  0x3344, 0x1e7f,
-  0x3345, 0x04ea,
-  0x3346, 0x1e80,
-  0x3347, 0x04ec,
-  0x334d, 0x1e81,
-  0x334e, 0x04f3,
-  0x334f, 0x1e82,
-  0x3350, 0x04f5,
-  0x3352, 0x1e83,
-  0x3353, 0x04f8,
-  0x3359, 0x1e84,
-  0x335a, 0x04ff,
-  0x335b, 0x1e85,
-  0x335c, 0x0501,
-  0x335d, 0x1e86,
-  0x335e, 0x0503,
-  0x3363, 0x1e87,
-  0x3364, 0x0509,
-  0x3365, 0x1e88,
-  0x3367, 0x050c,
-  0x3368, 0x1e8a,
-  0x3369, 0x050e,
-  0x336b, 0x1e8b,
-  0x336d, 0x0512,
-  0x336f, 0x1e8d,
-  0x3370, 0x0515,
-  0x3371, 0x1e8e,
-  0x3372, 0x0517,
-  0x3373, 0x1e8f,
-  0x3374, 0x0519,
-  0x337a, 0x1e90,
-  0x337c, 0x0521,
-  0x3421, 0x1e92,
-  0x3423, 0x0526,
-  0x3425, 0x1e94,
-  0x3427, 0x052a,
-  0x342b, 0x1e96,
-  0x342c, 0x052f,
-  0x342f, 0x1e97,
-  0x3430, 0x0533,
-  0x3433, 0x1e98,
-  0x3435, 0x0538,
-  0x3438, 0x1e9a,
-  0x3439, 0x053c,
-  0x343f, 0x1e9b,
-  0x3440, 0x0543,
-  0x3442, 0x1e9c,
-  0x3443, 0x0546,
-  0x3447, 0x1e9d,
-  0x3448, 0x054b,
-  0x344a, 0x1e9e,
-  0x344b, 0x054e,
-  0x344d, 0x1e9f,
-  0x344e, 0x0551,
-  0x344f, 0x1ea0,
-  0x3450, 0x0553,
-  0x3453, 0x1ea1,
-  0x3455, 0x0558,
-  0x345a, 0x1ea3,
-  0x345b, 0x055e,
-  0x345c, 0x1ea4,
-  0x345d, 0x0560,
-  0x346d, 0x1ea5,
-  0x346e, 0x0571,
-  0x346f, 0x1ea6,
-  0x3470, 0x0573,
-  0x3478, 0x1ea7,
-  0x3479, 0x057c,
-  0x347b, 0x1ea8,
-  0x347c, 0x057f,
-  0x3521, 0x0582,
-  0x3523, 0x1ea9,
-  0x3524, 0x0585,
-  0x3525, 0x1eaa,
-  0x3529, 0x058a,
-  0x352c, 0x1eae,
-  0x352d, 0x058e,
-  0x352e, 0x1eaf,
-  0x3530, 0x0591,
-  0x3531, 0x1eb1,
-  0x3536, 0x0597,
-  0x3537, 0x1eb6,
-  0x3538, 0x0599,
-  0x353a, 0x1eb7,
-  0x353d, 0x059e,
-  0x3546, 0x1eba,
-  0x3547, 0x05a8,
-  0x354b, 0x1ebb,
-  0x354c, 0x05ad,
-  0x3550, 0x1ebc,
-  0x3551, 0x05b2,
-  0x3553, 0x1ebd,
-  0x3554, 0x05b5,
-  0x355d, 0x1ebe,
-  0x3560, 0x05c1,
-  0x3563, 0x1ec1,
-  0x3564, 0x05c5,
-  0x3566, 0x1ec2,
-  0x3568, 0x05c9,
-  0x356d, 0x1ec4,
-  0x356e, 0x05cf,
-  0x3576, 0x1ec5,
-  0x3578, 0x05d9,
-  0x357d, 0x1ec7,
-  0x357e, 0x05df,
-  0x3621, 0x05e0,
-  0x3624, 0x1ec8,
-  0x3626, 0x05e5,
-  0x3627, 0x1eca,
-  0x3628, 0x05e7,
-  0x3629, 0x1ecb,
-  0x362a, 0x05e9,
-  0x362b, 0x1ecc,
-  0x362c, 0x05eb,
-  0x362f, 0x1ecd,
-  0x3631, 0x05f0,
-  0x3633, 0x1ecf,
-  0x3634, 0x05f3,
-  0x3637, 0x1ed0,
-  0x3638, 0x05f7,
-  0x363f, 0x1ed1,
-  0x3642, 0x0601,
-  0x3644, 0x1ed4,
-  0x3645, 0x0604,
-  0x3646, 0x1ed5,
-  0x3647, 0x0606,
-  0x364d, 0x1ed6,
-  0x364e, 0x060d,
-  0x364f, 0x1ed7,
-  0x3651, 0x0610,
-  0x3653, 0x1ed9,
-  0x3655, 0x0614,
-  0x3656, 0x1edb,
-  0x3657, 0x0616,
-  0x3659, 0x1edc,
-  0x365a, 0x0619,
-  0x365b, 0x1edd,
-  0x365c, 0x061b,
-  0x3661, 0x1ede,
-  0x3662, 0x0621,
-  0x3669, 0x1edf,
-  0x366a, 0x0629,
-  0x366c, 0x1ee0,
-  0x366d, 0x062c,
-  0x366e, 0x1ee1,
-  0x3670, 0x062f,
-  0x3671, 0x1ee3,
-  0x3672, 0x0631,
-  0x3676, 0x1ee4,
-  0x3677, 0x0636,
-  0x3679, 0x1ee5,
-  0x367a, 0x0639,
-  0x367b, 0x1ee6,
-  0x367d, 0x063c,
-  0x3721, 0x1ee8,
-  0x3724, 0x0641,
-  0x3727, 0x1eeb,
-  0x3728, 0x0645,
-  0x372f, 0x1eec,
-  0x3731, 0x064e,
-  0x3733, 0x1eee,
-  0x3734, 0x0651,
-  0x3736, 0x1eef,
-  0x3738, 0x0655,
-  0x3739, 0x1ef1,
-  0x373a, 0x0657,
-  0x3743, 0x1ef2,
-  0x3745, 0x0662,
-  0x3749, 0x1ef4,
-  0x374a, 0x0667,
-  0x374c, 0x1ef5,
-  0x374d, 0x066a,
-  0x374f, 0x1ef6,
-  0x3750, 0x066d,
-  0x3751, 0x1ef7,
-  0x3752, 0x066f,
-  0x3757, 0x1ef8,
-  0x3759, 0x0676,
-  0x375c, 0x1efa,
-  0x375d, 0x067a,
-  0x375f, 0x1efb,
-  0x3762, 0x067f,
-  0x3763, 0x1efe,
-  0x3764, 0x0681,
-  0x3766, 0x1eff,
-  0x3769, 0x0686,
-  0x376b, 0x1f02,
-  0x376e, 0x068b,
-  0x376f, 0x1f05,
-  0x3770, 0x068d,
-  0x3774, 0x1f06,
-  0x3775, 0x0692,
-  0x3778, 0x1f07,
-  0x3779, 0x0696,
-  0x3821, 0x069c,
-  0x3827, 0x1f08,
-  0x3829, 0x06a4,
-  0x3833, 0x1f0a,
-  0x3835, 0x06b0,
-  0x383a, 0x1f0c,
-  0x383b, 0x06b6,
-  0x383c, 0x1f0d,
-  0x383d, 0x06b8,
-  0x383e, 0x1f0e,
-  0x3840, 0x06bb,
-  0x3843, 0x1f10,
-  0x3844, 0x06bf,
-  0x3846, 0x1f11,
-  0x3848, 0x06c3,
-  0x3849, 0x1f13,
-  0x384a, 0x06c5,
-  0x384f, 0x1f14,
-  0x3850, 0x06cb,
-  0x3853, 0x1f15,
-  0x3857, 0x06d2,
-  0x3859, 0x1f19,
-  0x385b, 0x06d6,
-  0x3864, 0x1f1b,
-  0x3865, 0x06e0,
-  0x3869, 0x1f1c,
-  0x386a, 0x06e5,
-  0x386b, 0x1f1d,
-  0x386c, 0x06e7,
-  0x3873, 0x1f1e,
-  0x3874, 0x06ef,
-  0x3875, 0x1f1f,
-  0x3877, 0x06f2,
-  0x3878, 0x1f21,
-  0x3879, 0x06f4,
-  0x3921, 0x06fa,
-  0x3928, 0x1f22,
-  0x3929, 0x0702,
-  0x392e, 0x1f23,
-  0x392f, 0x0708,
-  0x3931, 0x1f24,
-  0x3932, 0x070b,
-  0x3933, 0x1f25,
-  0x3934, 0x070d,
-  0x3935, 0x1f26,
-  0x3936, 0x070f,
-  0x3939, 0x1f27,
-  0x393b, 0x0714,
-  0x3946, 0x1f29,
-  0x3947, 0x0720,
-  0x394b, 0x1f2a,
-  0x394c, 0x0725,
-  0x3950, 0x1f2b,
-  0x3951, 0x072a,
-  0x3958, 0x1f2c,
-  0x3959, 0x0732,
-  0x395b, 0x1f2d,
-  0x395c, 0x0735,
-  0x395d, 0x1f2e,
-  0x395e, 0x0737,
-  0x395f, 0x1f2f,
-  0x3960, 0x0739,
-  0x3961, 0x1f30,
-  0x3962, 0x073b,
-  0x3963, 0x1f31,
-  0x3964, 0x073d,
-  0x3966, 0x1f32,
-  0x3967, 0x0740,
-  0x3969, 0x1f33,
-  0x396d, 0x0746,
-  0x396e, 0x1f37,
-  0x396f, 0x0748,
-  0x3971, 0x1f38,
-  0x3972, 0x074b,
-  0x3973, 0x1f39,
-  0x3976, 0x074f,
-  0x3978, 0x1f3c,
-  0x3979, 0x0752,
-  0x397a, 0x1f3d,
-  0x397b, 0x0754,
-  0x397d, 0x1f3e,
-  0x397e, 0x0757,
-  0x3a21, 0x0758,
-  0x3a27, 0x1f3f,
-  0x3a28, 0x075f,
-  0x3a2b, 0x1f40,
-  0x3a2c, 0x0763,
-  0x3a3a, 0x1f41,
-  0x3a3b, 0x0772,
-  0x3a45, 0x1f42,
-  0x3a46, 0x077d,
-  0x3a52, 0x1f43,
-  0x3a53, 0x078a,
-  0x3a57, 0x1f44,
-  0x3a59, 0x0790,
-  0x3a64, 0x1f46,
-  0x3a65, 0x079c,
-  0x3a68, 0x1f47,
-  0x3a69, 0x07a0,
-  0x3a6c, 0x1f48,
-  0x3a6d, 0x07a4,
-  0x3a73, 0x15e5,
-  0x3a74, 0x07ab,
-  0x3a78, 0x1f49,
-  0x3a79, 0x07b0,
-  0x3b21, 0x07b6,
-  0x3b24, 0x1f4a,
-  0x3b25, 0x07ba,
-  0x3b26, 0x1f4b,
-  0x3b27, 0x07bc,
-  0x3b29, 0x1f4c,
-  0x3b2b, 0x07c0,
-  0x3b2d, 0x1f4e,
-  0x3b2f, 0x07c4,
-  0x3b30, 0x1f50,
-  0x3b31, 0x07c6,
-  0x3b33, 0x1f51,
-  0x3b34, 0x07c9,
-  0x3b35, 0x1f52,
-  0x3b38, 0x07cd,
-  0x3b39, 0x1f55,
-  0x3b3b, 0x07d0,
-  0x3b51, 0x1f57,
-  0x3b52, 0x07e7,
-  0x3b53, 0x1f58,
-  0x3b55, 0x07ea,
-  0x3b5f, 0x1f5a,
-  0x3b68, 0x07fd,
-  0x3b6b, 0x1f63,
-  0x3b6c, 0x0801,
-  0x3b71, 0x1f64,
-  0x3b72, 0x0807,
-  0x3b75, 0x1f65,
-  0x3b78, 0x080d,
-  0x3b7a, 0x1f68,
-  0x3b7b, 0x0810,
-  0x3b7d, 0x1f69,
-  0x3b7e, 0x0813,
-  0x3c21, 0x0814,
-  0x3c22, 0x1f6a,
-  0x3c23, 0x0816,
-  0x3c25, 0x1f6b,
-  0x3c27, 0x081a,
-  0x3c28, 0x1f6d,
-  0x3c2a, 0x081d,
-  0x3c2b, 0x1f6f,
-  0x3c2c, 0x081f,
-  0x3c2d, 0x1f70,
-  0x3c2e, 0x0821,
-  0x3c36, 0x1f71,
-  0x3c39, 0x082c,
-  0x3c3b, 0x1f74,
-  0x3c3c, 0x082f,
-  0x3c41, 0x1f75,
-  0x3c42, 0x0835,
-  0x3c43, 0x1f76,
-  0x3c44, 0x0837,
-  0x3c46, 0x1f77,
-  0x3c48, 0x083b,
-  0x3c4a, 0x1f79,
-  0x3c4b, 0x083e,
-  0x3c4c, 0x1f7a,
-  0x3c4e, 0x0841,
-  0x3c50, 0x1f7c,
-  0x3c51, 0x0844,
-  0x3c54, 0x1f7d,
-  0x3c57, 0x084a,
-  0x3c58, 0x1f80,
-  0x3c59, 0x084c,
-  0x3c5b, 0x1f81,
-  0x3c5c, 0x084f,
-  0x3c5d, 0x1f82,
-  0x3c5e, 0x0851,
-  0x3c5f, 0x1f83,
-  0x3c62, 0x0855,
-  0x3c63, 0x1f86,
-  0x3c65, 0x0858,
-  0x3c68, 0x1f88,
-  0x3c69, 0x085c,
-  0x3c6a, 0x1f89,
-  0x3c6d, 0x0860,
-  0x3c6f, 0x1f8c,
-  0x3c74, 0x0867,
-  0x3c76, 0x1f91,
-  0x3c7d, 0x0870,
-  0x3d21, 0x0872,
-  0x3d22, 0x1f98,
-  0x3d28, 0x0879,
-  0x3d2b, 0x1f9e,
-  0x3d2d, 0x087e,
-  0x3d2f, 0x1fa0,
-  0x3d33, 0x0884,
-  0x3d34, 0x1fa4,
-  0x3d35, 0x0886,
-  0x3d3a, 0x1fa5,
-  0x3d3b, 0x088c,
-  0x3d3d, 0x1fa6,
-  0x3d40, 0x0891,
-  0x3d41, 0x1fa9,
-  0x3d45, 0x0896,
-  0x3d48, 0x1fad,
-  0x3d4b, 0x089c,
-  0x3d4e, 0x1fb0,
-  0x3d50, 0x08a1,
-  0x3d57, 0x1fb2,
-  0x3d58, 0x08a9,
-  0x3d5a, 0x1fb3,
-  0x3d5b, 0x08ac,
-  0x3d60, 0x1fb4,
-  0x3d62, 0x08b3,
-  0x3d6b, 0x1fb6,
-  0x3d6c, 0x08bd,
-  0x3d74, 0x1fb7,
-  0x3d79, 0x08ca,
-  0x3d7d, 0x1fbc,
-  0x3d7e, 0x08cf,
-  0x3e21, 0x1fbd,
-  0x3e23, 0x08d2,
-  0x3e25, 0x1fbf,
-  0x3e26, 0x08d5,
-  0x3e28, 0x1fc0,
-  0x3e29, 0x08d8,
-  0x3e2a, 0x1fc1,
-  0x3e2b, 0x08da,
-  0x3e2d, 0x1fc2,
-  0x3e2e, 0x08dd,
-  0x3e31, 0x1fc3,
-  0x3e32, 0x08e1,
-  0x3e35, 0x1fc4,
-  0x3e38, 0x08e7,
-  0x3e3a, 0x1fc7,
-  0x3e3b, 0x08ea,
-  0x3e40, 0x1fc8,
-  0x3e41, 0x08f0,
-  0x3e49, 0x1fc9,
-  0x3e4a, 0x08f9,
-  0x3e54, 0x1fca,
-  0x3e55, 0x0904,
-  0x3e59, 0x1fcb,
-  0x3e5a, 0x0909,
-  0x3e5d, 0x1fcc,
-  0x3e5e, 0x090d,
-  0x3e62, 0x1fcd,
-  0x3e63, 0x0912,
-  0x3e65, 0x1fce,
-  0x3e66, 0x0915,
-  0x3e67, 0x1fcf,
-  0x3e68, 0x0917,
-  0x3e69, 0x1fd0,
-  0x3e6a, 0x0919,
-  0x3e6e, 0x1fd1,
-  0x3e6f, 0x091e,
-  0x3e75, 0x1fd2,
-  0x3e76, 0x0925,
-  0x3e77, 0x1fd3,
-  0x3e79, 0x0928,
-  0x3e7b, 0x1fd5,
-  0x3e7d, 0x092c,
-  0x3f21, 0x092e,
-  0x3f25, 0x1fd7,
-  0x3f26, 0x0933,
-  0x3f2a, 0x1fd8,
-  0x3f2b, 0x0938,
-  0x3f2d, 0x1fd9,
-  0x3f2e, 0x093b,
-  0x3f45, 0x1fda,
-  0x3f46, 0x0953,
-  0x3f47, 0x1fdb,
-  0x3f48, 0x0955,
-  0x3f4e, 0x1fdc,
-  0x3f4f, 0x095c,
-  0x3f51, 0x1fdd,
-  0x3f53, 0x0960,
-  0x3f59, 0x1fdf,
-  0x3f5a, 0x0967,
-  0x3f62, 0x1fe0,
-  0x3f65, 0x0972,
-  0x3f69, 0x1fe3,
-  0x3f6a, 0x0977,
-  0x3f6b, 0x1fe4,
-  0x3f6c, 0x0979,
-  0x3f6d, 0x1fe5,
-  0x3f6e, 0x097b,
-  0x3f73, 0x1fe6,
-  0x3f74, 0x0981,
-  0x3f75, 0x1fe7,
-  0x3f76, 0x0983,
-  0x3f77, 0x1fe8,
-  0x3f78, 0x0985,
-  0x3f79, 0x1fe9,
-  0x3f7b, 0x0988,
-  0x4021, 0x1feb,
-  0x4022, 0x098d,
-  0x4023, 0x1fec,
-  0x4024, 0x098f,
-  0x4029, 0x1fed,
-  0x402a, 0x0995,
-  0x402b, 0x1fee,
-  0x402c, 0x0997,
-  0x402f, 0x1fef,
-  0x4031, 0x099c,
-  0x4033, 0x1ff1,
-  0x4037, 0x09a2,
-  0x4038, 0x1ff5,
-  0x4045, 0x09b0,
-  0x404c, 0x2002,
-  0x404e, 0x09b9,
-  0x4054, 0x2004,
-  0x4055, 0x09c0,
-  0x4056, 0x2005,
-  0x4057, 0x09c2,
-  0x4058, 0x2006,
-  0x4059, 0x09c4,
-  0x405d, 0x2007,
-  0x405e, 0x09c9,
-  0x4060, 0x2008,
-  0x4061, 0x09cc,
-  0x4069, 0x2009,
-  0x406a, 0x09d5,
-  0x406b, 0x200a,
-  0x406d, 0x09d8,
-  0x406f, 0x200c,
-  0x4072, 0x09dd,
-  0x4076, 0x200f,
-  0x407b, 0x09e6,
-  0x4121, 0x09ea,
-  0x4124, 0x2014,
-  0x4126, 0x09ef,
-  0x4129, 0x2016,
-  0x412e, 0x09f7,
-  0x412f, 0x201b,
-  0x4139, 0x0a02,
-  0x413d, 0x2025,
-  0x413f, 0x0a08,
-  0x4142, 0x2027,
-  0x4143, 0x0a0c,
-  0x4146, 0x2028,
-  0x4147, 0x0a10,
-  0x4149, 0x2029,
-  0x414a, 0x0a13,
-  0x414d, 0x202a,
-  0x414e, 0x0a17,
-  0x4154, 0x202b,
-  0x4155, 0x0a1e,
-  0x4159, 0x202c,
-  0x415c, 0x0a25,
-  0x415e, 0x202f,
-  0x415f, 0x0a28,
-  0x4164, 0x2030,
-  0x4166, 0x0a2f,
-  0x4169, 0x2032,
-  0x416a, 0x0a33,
-  0x416b, 0x2033,
-  0x416d, 0x0a36,
-  0x4173, 0x2035,
-  0x4174, 0x0a3d,
-  0x4175, 0x2036,
-  0x4176, 0x0a3f,
-  0x417a, 0x2037,
-  0x417e, 0x0a47,
-  0x4221, 0x0a48,
-  0x4222, 0x203b,
-  0x4229, 0x0a50,
-  0x422b, 0x2042,
-  0x4234, 0x0a5b,
-  0x4238, 0x204b,
-  0x4239, 0x0a60,
-  0x423c, 0x204c,
-  0x423e, 0x0a65,
-  0x423f, 0x204e,
-  0x4240, 0x0a67,
-  0x4241, 0x204f,
-  0x4242, 0x0a69,
-  0x4245, 0x2050,
-  0x4248, 0x0a6f,
-  0x424b, 0x2053,
-  0x4251, 0x0a78,
-  0x4252, 0x2059,
-  0x4253, 0x0a7a,
-  0x4255, 0x205a,
-  0x425d, 0x0a84,
-  0x425e, 0x2062,
-  0x4263, 0x0a8a,
-  0x4266, 0x2067,
-  0x4269, 0x0a90,
-  0x426a, 0x206a,
-  0x426f, 0x0a96,
-  0x4270, 0x206f,
-  0x4271, 0x0a98,
-  0x4272, 0x2070,
-  0x4276, 0x0a9d,
-  0x4277, 0x2074,
-  0x427b, 0x0aa2,
-  0x4321, 0x2078,
-  0x4322, 0x0aa7,
-  0x432a, 0x2079,
-  0x432b, 0x0ab0,
-  0x432d, 0x207a,
-  0x432e, 0x0ab3,
-  0x4333, 0x207b,
-  0x4334, 0x1df9,
-  0x4335, 0x0aba,
-  0x433e, 0x207c,
-  0x433f, 0x0ac4,
-  0x4345, 0x207d,
-  0x4348, 0x0acd,
-  0x434c, 0x2080,
-  0x434d, 0x0ad2,
-  0x434e, 0x2081,
-  0x434f, 0x0ad4,
-  0x4355, 0x2082,
-  0x4357, 0x0adc,
-  0x4359, 0x2084,
-  0x435a, 0x0adf,
-  0x4360, 0x2085,
-  0x4361, 0x0ae6,
-  0x4365, 0x2086,
-  0x4366, 0x0aeb,
-  0x436d, 0x2087,
-  0x436e, 0x0af3,
-  0x4370, 0x2088,
-  0x4371, 0x0af6,
-  0x4375, 0x2089,
-  0x4377, 0x0afc,
-  0x4379, 0x208b,
-  0x437b, 0x0b00,
-  0x437d, 0x208d,
-  0x437e, 0x0b03,
-  0x4421, 0x0b04,
-  0x4431, 0x208e,
-  0x4432, 0x0b15,
-  0x4436, 0x208f,
-  0x4437, 0x0b1a,
-  0x4446, 0x2090,
-  0x4447, 0x0b2a,
-  0x4449, 0x2091,
-  0x444a, 0x0b2d,
-  0x4451, 0x2092,
-  0x4452, 0x0b35,
-  0x4453, 0x2093,
-  0x4457, 0x0b3a,
-  0x4459, 0x2097,
-  0x445a, 0x0b3d,
-  0x4462, 0x2098,
-  0x4463, 0x0b46,
-  0x4465, 0x2099,
-  0x4466, 0x0b49,
-  0x446c, 0x209a,
-  0x446d, 0x0b50,
-  0x4470, 0x209b,
-  0x4472, 0x0b55,
-  0x4474, 0x209d,
-  0x4475, 0x0b58,
-  0x4476, 0x209e,
-  0x4479, 0x0b5c,
-  0x447b, 0x20a1,
-  0x447d, 0x0b60,
-  0x447e, 0x20a3,
-  0x4521, 0x20a4,
-  0x4523, 0x0b64,
-  0x4525, 0x20a6,
-  0x452a, 0x0b6b,
-  0x4531, 0x20ab,
-  0x4532, 0x0b73,
-  0x4535, 0x20ac,
-  0x4536, 0x0b77,
-  0x4537, 0x20ad,
-  0x453a, 0x0b7b,
-  0x453b, 0x20b0,
-  0x453c, 0x0b7d,
-  0x453d, 0x20b1,
-  0x453e, 0x0b7f,
-  0x454c, 0x20b2,
-  0x454d, 0x0b8e,
-  0x4553, 0x20b3,
-  0x4554, 0x0b95,
-  0x4562, 0x20b4,
-  0x4563, 0x0ba4,
-  0x4567, 0x20b5,
-  0x4568, 0x0ba9,
-  0x4574, 0x20b6,
-  0x4575, 0x0bb6,
-  0x4621, 0x0bc0,
-  0x462d, 0x20b7,
-  0x462f, 0x0bce,
-  0x4635, 0x20b9,
-  0x4637, 0x0bd6,
-  0x463b, 0x20bb,
-  0x463c, 0x0bdb,
-  0x463e, 0x20bc,
-  0x463f, 0x0bde,
-  0x4640, 0x20bd,
-  0x4641, 0x0be0,
-  0x4643, 0x20be,
-  0x4645, 0x0be4,
-  0x464b, 0x20c0,
-  0x464e, 0x0bed,
-  0x4653, 0x20c3,
-  0x4654, 0x0bf3,
-  0x4657, 0x20c4,
-  0x4658, 0x0bf7,
-  0x466a, 0x20c5,
-  0x466c, 0x0c0b,
-  0x466f, 0x20c7,
-  0x4670, 0x0c0f,
-  0x4671, 0x20c8,
-  0x4672, 0x0c11,
-  0x4674, 0x20c9,
-  0x4675, 0x0c14,
-  0x4678, 0x20ca,
-  0x4679, 0x0c18,
-  0x467d, 0x20cb,
-  0x467e, 0x0c1d,
-  0x4721, 0x0c1e,
-  0x4723, 0x20cc,
-  0x4724, 0x0c21,
-  0x4725, 0x20cd,
-  0x4727, 0x0c24,
-  0x4728, 0x20cf,
-  0x472a, 0x0c27,
-  0x472b, 0x20d1,
-  0x472c, 0x0c29,
-  0x472e, 0x20d2,
-  0x4730, 0x0c2d,
-  0x4733, 0x20d4,
-  0x4736, 0x0c33,
-  0x4739, 0x20d7,
-  0x473b, 0x0c38,
-  0x473d, 0x20d9,
-  0x473f, 0x0c3c,
-  0x4740, 0x20db,
-  0x4741, 0x0c3e,
-  0x4742, 0x20dc,
-  0x4743, 0x0c40,
-  0x4745, 0x20dd,
-  0x4746, 0x0c43,
-  0x4747, 0x20de,
-  0x4749, 0x0c46,
-  0x474c, 0x20e0,
-  0x474d, 0x0c4a,
-  0x474f, 0x20e1,
-  0x4750, 0x0c4d,
-  0x4754, 0x20e2,
-  0x4756, 0x0c53,
-  0x4757, 0x20e4,
-  0x4758, 0x0c55,
-  0x475e, 0x20e5,
-  0x475f, 0x0c5c,
-  0x4761, 0x20e6,
-  0x4764, 0x0c61,
-  0x476a, 0x20e9,
-  0x476f, 0x0c6c,
-  0x4777, 0x20ee,
-  0x4779, 0x0c76,
-  0x477b, 0x20f0,
-  0x477c, 0x0c79,
-  0x477d, 0x20f1,
-  0x477e, 0x0c7b,
-  0x4821, 0x0c7c,
-  0x4823, 0x20f2,
-  0x4824, 0x0c7f,
-  0x4827, 0x20f3,
-  0x4829, 0x0c84,
-  0x4830, 0x20f5,
-  0x4831, 0x0c8c,
-  0x4835, 0x20f6,
-  0x4836, 0x0c91,
-  0x4837, 0x20f7,
-  0x4838, 0x0c93,
-  0x4843, 0x20f8,
-  0x4847, 0x0ca2,
-  0x4848, 0x20fc,
-  0x4849, 0x0ca4,
-  0x484d, 0x20fd,
-  0x484e, 0x0ca9,
-  0x484f, 0x20fe,
-  0x4850, 0x0cab,
-  0x4852, 0x20ff,
-  0x4853, 0x0cae,
-  0x4859, 0x2100,
-  0x485a, 0x0cb5,
-  0x485e, 0x2101,
-  0x485f, 0x0cba,
-  0x486d, 0x2102,
-  0x486e, 0x0cc9,
-  0x4871, 0x2103,
-  0x4874, 0x0ccf,
-  0x4877, 0x2106,
-  0x4879, 0x0cd4,
-  0x487a, 0x2108,
-  0x487b, 0x0cd6,
-  0x487c, 0x2109,
-  0x487d, 0x0cd8,
-  0x4921, 0x210a,
-  0x4922, 0x0cdb,
-  0x4925, 0x210b,
-  0x4926, 0x0cdf,
-  0x4927, 0x210c,
-  0x4929, 0x0ce2,
-  0x492c, 0x210e,
-  0x492d, 0x0ce6,
-  0x4931, 0x210f,
-  0x4932, 0x0ceb,
-  0x4934, 0x2110,
-  0x4935, 0x0cee,
-  0x4938, 0x2111,
-  0x493a, 0x0cf3,
-  0x4941, 0x2113,
-  0x4943, 0x0cfc,
-  0x4944, 0x2115,
-  0x4945, 0x0cfe,
-  0x4949, 0x2116,
-  0x494a, 0x0d03,
-  0x494b, 0x2117,
-  0x494c, 0x0d05,
-  0x494d, 0x2118,
-  0x494e, 0x0d07,
-  0x4955, 0x2119,
-  0x4956, 0x0d0f,
-  0x495c, 0x211a,
-  0x495d, 0x0d16,
-  0x495e, 0x211b,
-  0x495f, 0x0d18,
-  0x4961, 0x211c,
-  0x4962, 0x0d1b,
-  0x4963, 0x211d,
-  0x4964, 0x0d1d,
-  0x4965, 0x211e,
-  0x4966, 0x0d1f,
-  0x4968, 0x211f,
-  0x4969, 0x0d22,
-  0x4970, 0x2120,
-  0x4971, 0x0d2a,
-  0x4973, 0x2121,
-  0x4975, 0x0d2e,
-  0x4976, 0x2123,
-  0x4977, 0x0d30,
-  0x4978, 0x2124,
-  0x497a, 0x0d33,
-  0x497e, 0x2126,
-  0x4a21, 0x0d38,
-  0x4a24, 0x2127,
-  0x4a27, 0x0d3e,
-  0x4a28, 0x212a,
-  0x4a29, 0x0d40,
-  0x4a2a, 0x212b,
-  0x4a2c, 0x0d43,
-  0x4a31, 0x212d,
-  0x4a32, 0x0d49,
-  0x4a34, 0x212e,
-  0x4a37, 0x0d4e,
-  0x4a3b, 0x2131,
-  0x4a3c, 0x0d53,
-  0x4a46, 0x2132,
-  0x4a47, 0x0d5e,
-  0x4a4a, 0x2133,
-  0x4a4b, 0x0d62,
-  0x4a4d, 0x2134,
-  0x4a4f, 0x0d66,
-  0x4a53, 0x2136,
-  0x4a55, 0x0d6c,
-  0x4a59, 0x2138,
-  0x4a5a, 0x0d71,
-  0x4a5e, 0x2139,
-  0x4a5f, 0x0d76,
-  0x4a60, 0x213a,
-  0x4a61, 0x0d78,
-  0x4a64, 0x213b,
-  0x4a65, 0x0d7c,
-  0x4a69, 0x213c,
-  0x4a6b, 0x0d82,
-  0x4a74, 0x213e,
-  0x4a76, 0x0d8d,
-  0x4a77, 0x2140,
-  0x4a78, 0x0d8f,
-  0x4a7a, 0x2141,
-  0x4a7b, 0x0d92,
-  0x4a7d, 0x2142,
-  0x4a7e, 0x0d95,
-  0x4b21, 0x0d96,
-  0x4b27, 0x2143,
-  0x4b28, 0x0d9d,
-  0x4b2b, 0x2144,
-  0x4b2c, 0x0da1,
-  0x4b2d, 0x2145,
-  0x4b2e, 0x0da3,
-  0x4b33, 0x2146,
-  0x4b34, 0x0da9,
-  0x4b35, 0x2147,
-  0x4b37, 0x0dac,
-  0x4b38, 0x2149,
-  0x4b39, 0x0dae,
-  0x4b3f, 0x214a,
-  0x4b40, 0x0db5,
-  0x4b47, 0x214b,
-  0x4b48, 0x0dbd,
-  0x4b49, 0x214c,
-  0x4b4d, 0x0dc2,
-  0x4b4f, 0x2150,
-  0x4b51, 0x0dc6,
-  0x4b53, 0x2152,
-  0x4b54, 0x0dc9,
-  0x4b55, 0x2153,
-  0x4b56, 0x0dcb,
-  0x4b5f, 0x2154,
-  0x4b61, 0x0dd6,
-  0x4b64, 0x2156,
-  0x4b65, 0x0dda,
-  0x4b66, 0x2157,
-  0x4b68, 0x0ddd,
-  0x4b6a, 0x2159,
-  0x4b6b, 0x0de0,
-  0x4b6f, 0x215a,
-  0x4b71, 0x0de6,
-  0x4b75, 0x215c,
-  0x4b77, 0x0dec,
-  0x4b78, 0x215e,
-  0x4b79, 0x0dee,
-  0x4c21, 0x215f,
-  0x4c23, 0x0df6,
-  0x4c28, 0x2161,
-  0x4c29, 0x0dfc,
-  0x4c2c, 0x2162,
-  0x4c2d, 0x0e00,
-  0x4c2f, 0x2163,
-  0x4c34, 0x0e07,
-  0x4c37, 0x2168,
-  0x4c39, 0x0e0c,
-  0x4c3e, 0x216a,
-  0x4c3f, 0x0e12,
-  0x4c40, 0x216b,
-  0x4c41, 0x0e14,
-  0x4c4c, 0x216c,
-  0x4c4d, 0x0e20,
-  0x4c4e, 0x216d,
-  0x4c4f, 0x0e22,
-  0x4c50, 0x216e,
-  0x4c51, 0x0e24,
-  0x4c56, 0x216f,
-  0x4c57, 0x0e2a,
-  0x4c5a, 0x2170,
-  0x4c5b, 0x0e2e,
-  0x4c5c, 0x2171,
-  0x4c5d, 0x0e30,
-  0x4c60, 0x2172,
-  0x4c61, 0x0e34,
-  0x4c62, 0x2173,
-  0x4c63, 0x0e36,
-  0x4c65, 0x2174,
-  0x4c66, 0x0e39,
-  0x4c75, 0x2175,
-  0x4c76, 0x0e49,
-  0x4c79, 0x2176,
-  0x4c7b, 0x0e4e,
-  0x4c7c, 0x2178,
-  0x4d21, 0x0e52,
-  0x4d2d, 0x217b,
-  0x4d2e, 0x0e5f,
-  0x4d33, 0x217c,
-  0x4d34, 0x0e65,
-  0x4d37, 0x217d,
-  0x4d38, 0x0e69,
-  0x4d3c, 0x217e,
-  0x4d3d, 0x0e6e,
-  0x4d3f, 0x217f,
-  0x4d40, 0x0e71,
-  0x4d45, 0x2180,
-  0x4d46, 0x0e77,
-  0x4d47, 0x2181,
-  0x4d48, 0x0e79,
-  0x4d52, 0x2182,
-  0x4d53, 0x0e84,
-  0x4d54, 0x2183,
-  0x4d57, 0x0e88,
-  0x4d5d, 0x2186,
-  0x4d5e, 0x0e8f,
-  0x4d60, 0x2187,
-  0x4d61, 0x0e92,
-  0x4d64, 0x2188,
-  0x4d66, 0x0e97,
-  0x4d67, 0x218a,
-  0x4d68, 0x0e99,
-  0x4d72, 0x218b,
-  0x4d73, 0x0ea4,
-  0x4d78, 0x218c,
-  0x4d79, 0x0eaa,
-  0x4e21, 0x0eb0,
-  0x4e24, 0x218d,
-  0x4e26, 0x0eb5,
-  0x4e27, 0x218f,
-  0x4e28, 0x0eb7,
-  0x4e2a, 0x2190,
-  0x4e2e, 0x0ebd,
-  0x4e30, 0x2194,
-  0x4e32, 0x0ec1,
-  0x4e33, 0x2196,
-  0x4e34, 0x0ec3,
-  0x4e3d, 0x2197,
-  0x4e3e, 0x0ecd,
-  0x4e40, 0x2198,
-  0x4e41, 0x0ed0,
-  0x4e45, 0x2199,
-  0x4e47, 0x0ed6,
-  0x4e48, 0x219b,
-  0x4e49, 0x0ed8,
-  0x4e4a, 0x219c,
-  0x4e4b, 0x0eda,
-  0x4e4e, 0x219d,
-  0x4e52, 0x0ee1,
-  0x4e58, 0x21a1,
-  0x4e5b, 0x0eea,
-  0x4e5c, 0x21a4,
-  0x4e5d, 0x0eec,
-  0x4e5e, 0x21a5,
-  0x4e60, 0x0eef,
-  0x4e6b, 0x21a7,
-  0x4e6c, 0x0efb,
-  0x4e6d, 0x21a8,
-  0x4e6e, 0x0efd,
-  0x4e71, 0x21a9,
-  0x4e72, 0x0f01,
-  0x4e73, 0x21aa,
-  0x4e74, 0x0f03,
-  0x4e7d, 0x21ab,
-  0x4f21, 0x0f0e,
-  0x4f2e, 0x21ad,
-  0x4f2f, 0x0f1c,
-  0x4f30, 0x21ae,
-  0x4f31, 0x0f1e,
-  0x4f33, 0x21af,
-  0x4f34, 0x0f21,
-  0x4f37, 0x21b0,
-  0x4f39, 0x0f26,
-  0x4f3a, 0x21b2,
-  0x4f3b, 0x0f28,
-  0x4f3d, 0x21b3,
-  0x4f3e, 0x0f2b,
-  0x4f3f, 0x21b4,
-  0x4f42, 0x0f2f,
-  0x4f45, 0x21b7,
-  0x4f46, 0x0f33,
-  0x4f47, 0x21b8,
-  0x4f48, 0x0f35,
-  0x4f4a, 0x21b9,
-  0x4f4c, 0x0f39,
-  0x4f4d, 0x21bb,
-  0x4f4f, 0x0f3c,
-  0x4f50, 0x21bd,
-  0x4f51, 0x0f3e,
-  0x4f54, 0x21be,
-  0x4f59, 0x0f46,
-  0x4f5a, 0x21c3,
-  0x4f5b, 0x0f48,
-  0x4f5c, 0x21c4,
-  0x4f5d, 0x0f4a,
-  0x4f5f, 0x21c5,
-  0x4f60, 0x0f4d,
-  0x4f62, 0x21c6,
-  0x4f63, 0x0f50,
-  0x4f67, 0x21c7,
-  0x4f68, 0x0f55,
-  0x4f6a, 0x21c8,
-  0x4f6b, 0x0f58,
-  0x4f6c, 0x21c9,
-  0x4f6d, 0x0f5a,
-  0x4f6e, 0x21ca,
-  0x4f6f, 0x0f5c,
-  0x4f74, 0x21cb,
-  0x4f75, 0x0f62,
-  0x4f79, 0x21cc,
-  0x4f7b, 0x0f68,
-  0x4f7e, 0x21ce,
-  0x5021, 0x0f6c,
-  0x5025, 0x21cf,
-  0x5026, 0x0f71,
-  0x502d, 0x21d0,
-  0x502f, 0x0f7a,
-  0x5032, 0x21d2,
-  0x5035, 0x0f80,
-  0x503a, 0x21d5,
-  0x503c, 0x0f87,
-  0x503f, 0x21d7,
-  0x5040, 0x0f8b,
-  0x5046, 0x21d8,
-  0x5047, 0x0f92,
-  0x504b, 0x21d9,
-  0x504c, 0x0f97,
-  0x5062, 0x21da,
-  0x5063, 0x0fae,
-  0x5065, 0x21db,
-  0x5066, 0x0fb1,
-  0x506b, 0x21dc,
-  0x506c, 0x0fb7,
-  0x506d, 0x21dd,
-  0x506e, 0x0fb9,
-  0x5077, 0x21de,
-  0x507a, 0x0fc5,
-  0x507c, 0x21e1,
-  0x507d, 0x0fc8,
-  0x5121, 0x21e2,
-  0x5123, 0x0fcc,
-  0x5124, 0x21e4,
-  0x5125, 0x0fce,
-  0x5127, 0x21e5,
-  0x5128, 0x0fd1,
-  0x512b, 0x21e6,
-  0x512c, 0x0fd5,
-  0x512f, 0x21e7,
-  0x5132, 0x0fdb,
-  0x5135, 0x21ea,
-  0x5138, 0x0fe1,
-  0x5139, 0x21ed,
-  0x513a, 0x0fe3,
-  0x513b, 0x21ee,
-  0x513d, 0x0fe6,
-  0x5146, 0x21f0,
-  0x5149, 0x0ff2,
-  0x514b, 0x21f3,
-  0x514c, 0x0ff5,
-  0x514e, 0x21f4,
-  0x5150, 0x0ff9,
-  0x5155, 0x21f6,
-  0x5157, 0x1000,
-  0x515e, 0x21f8,
-  0x515f, 0x1008,
-  0x5161, 0x21f9,
-  0x5163, 0x100c,
-  0x5168, 0x21fb,
-  0x516a, 0x1013,
-  0x516c, 0x21fd,
-  0x516d, 0x1016,
-  0x516e, 0x21fe,
-  0x5170, 0x1019,
-  0x5171, 0x2200,
-  0x5172, 0x101b,
-  0x5174, 0x2201,
-  0x5175, 0x101e,
-  0x5177, 0x2202,
-  0x517a, 0x1023,
-  0x5221, 0x1028,
-  0x5222, 0x2205,
-  0x5223, 0x102a,
-  0x5225, 0x2206,
-  0x5226, 0x102d,
-  0x5229, 0x2207,
-  0x522a, 0x1031,
-  0x522f, 0x2208,
-  0x5230, 0x1037,
-  0x5233, 0x2209,
-  0x5234, 0x103b,
-  0x5235, 0x220a,
-  0x5237, 0x103e,
-  0x523d, 0x220c,
-  0x523e, 0x1045,
-  0x523f, 0x220d,
-  0x5240, 0x1047,
-  0x5243, 0x220e,
-  0x5244, 0x104b,
-  0x5245, 0x220f,
-  0x5246, 0x104d,
-  0x5247, 0x2210,
-  0x5248, 0x104f,
-  0x524f, 0x2211,
-  0x5250, 0x1057,
-  0x5255, 0x2212,
-  0x5256, 0x105d,
-  0x525a, 0x2213,
-  0x525b, 0x1062,
-  0x5264, 0x2214,
-  0x5266, 0x106d,
-  0x5268, 0x2216,
-  0x526c, 0x1073,
-  0x526f, 0x221a,
-  0x5270, 0x1077,
-  0x5271, 0x221b,
-  0x5272, 0x1079,
-  0x5275, 0x221c,
-  0x5276, 0x107d,
-  0x5278, 0x221d,
-  0x5279, 0x1080,
-  0x527b, 0x221e,
-  0x527c, 0x1083,
-  0x527e, 0x221f,
-  0x5321, 0x1086,
-  0x5323, 0x2220,
-  0x532d, 0x1092,
-  0x532e, 0x222a,
-  0x532f, 0x1094,
-  0x5331, 0x222b,
-  0x5332, 0x1097,
-  0x5334, 0x222c,
-  0x5337, 0x109c,
-  0x5338, 0x222f,
-  0x5339, 0x109e,
-  0x533b, 0x2230,
-  0x533c, 0x10a1,
-  0x5345, 0x2231,
-  0x5346, 0x10ab,
-  0x5347, 0x2232,
-  0x5348, 0x10ad,
-  0x534a, 0x2233,
-  0x534d, 0x10b2,
-  0x5355, 0x2236,
-  0x5356, 0x10bb,
-  0x535f, 0x2237,
-  0x5361, 0x10c6,
-  0x5363, 0x2239,
-  0x5364, 0x10c9,
-  0x5366, 0x223a,
-  0x5367, 0x10cc,
-  0x536b, 0x223b,
-  0x536d, 0x10d2,
-  0x536f, 0x223d,
-  0x5370, 0x10d5,
-  0x5374, 0x223e,
-  0x5375, 0x10da,
-  0x537c, 0x223f,
-  0x537d, 0x10e2,
-  0x537e, 0x2240,
-  0x5421, 0x10e4,
-  0x5424, 0x2241,
-  0x5425, 0x10e8,
-  0x5426, 0x2242,
-  0x5429, 0x10ec,
-  0x542f, 0x2245,
-  0x5433, 0x10f6,
-  0x5435, 0x2249,
-  0x5437, 0x10fa,
-  0x5438, 0x224b,
-  0x5439, 0x10fc,
-  0x543c, 0x224c,
-  0x543d, 0x1100,
-  0x543e, 0x224d,
-  0x5440, 0x1103,
-  0x5444, 0x224f,
-  0x5445, 0x1108,
-  0x5446, 0x2250,
-  0x5448, 0x110b,
-  0x5449, 0x2252,
-  0x544a, 0x110d,
-  0x544b, 0x2253,
-  0x544f, 0x1112,
-  0x5453, 0x2257,
-  0x5454, 0x1117,
-  0x5458, 0x2258,
-  0x5459, 0x111c,
-  0x545c, 0x2259,
-  0x5461, 0x1124,
-  0x5464, 0x225e,
-  0x5465, 0x1128,
-  0x5466, 0x225f,
-  0x5467, 0x112a,
-  0x546e, 0x2260,
-  0x546f, 0x1132,
-  0x5470, 0x2261,
-  0x5475, 0x1138,
-  0x5479, 0x2266,
-  0x547a, 0x113d,
-  0x547e, 0x2267,
-  0x5521, 0x2268,
-  0x5523, 0x1144,
-  0x5529, 0x226a,
-  0x552a, 0x114b,
-  0x552b, 0x226b,
-  0x552c, 0x114d,
-  0x552e, 0x226c,
-  0x552f, 0x1150,
-  0x5531, 0x226d,
-  0x5532, 0x1153,
-  0x5535, 0x226e,
-  0x5539, 0x115a,
-  0x553b, 0x2272,
-  0x553c, 0x115d,
-  0x553d, 0x2273,
-  0x553e, 0x115f,
-  0x5540, 0x2274,
-  0x5541, 0x1162,
-  0x5545, 0x2275,
-  0x5546, 0x1167,
-  0x5547, 0x2276,
-  0x5548, 0x1169,
-  0x554a, 0x2277,
-  0x554c, 0x116d,
-  0x554d, 0x2279,
-  0x554e, 0x116f,
-  0x5554, 0x227a,
-  0x5555, 0x1176,
-  0x555d, 0x227b,
-  0x555f, 0x1180,
-  0x5560, 0x227d,
-  0x5561, 0x1182,
-  0x5562, 0x227e,
-  0x5563, 0x1184,
-  0x556a, 0x227f,
-  0x556d, 0x118e,
-  0x556f, 0x2282,
-  0x5570, 0x1191,
-  0x5572, 0x2283,
-  0x5574, 0x1195,
-  0x5577, 0x15eb,
-  0x5578, 0x1199,
-  0x5621, 0x2285,
-  0x5625, 0x11a4,
-  0x562f, 0x2289,
-  0x5631, 0x11b0,
-  0x5634, 0x228b,
-  0x5635, 0x11b4,
-  0x563b, 0x228c,
-  0x563c, 0x11bb,
-  0x563d, 0x228d,
-  0x563e, 0x11bd,
-  0x563f, 0x228e,
-  0x5641, 0x11c0,
-  0x5644, 0x2290,
-  0x5645, 0x11c4,
-  0x564a, 0x2291,
-  0x564b, 0x11ca,
-  0x564d, 0x2292,
-  0x564e, 0x11cd,
-  0x5653, 0x2293,
-  0x5654, 0x11d3,
-  0x5655, 0x2294,
-  0x5658, 0x11d7,
-  0x565a, 0x2297,
-  0x565b, 0x11da,
-  0x565f, 0x2298,
-  0x5660, 0x11df,
-  0x5661, 0x2299,
-  0x5662, 0x11e1,
-  0x5665, 0x229a,
-  0x5666, 0x11e5,
-  0x5667, 0x229b,
-  0x5669, 0x11e8,
-  0x566e, 0x229d,
-  0x5670, 0x11ef,
-  0x5672, 0x229f,
-  0x5673, 0x11f2,
-  0x5675, 0x22a0,
-  0x5677, 0x11f6,
-  0x567c, 0x22a2,
-  0x5721, 0x11fe,
-  0x5724, 0x22a5,
-  0x5725, 0x1202,
-  0x5728, 0x22a6,
-  0x572b, 0x1208,
-  0x572c, 0x22a9,
-  0x572d, 0x120a,
-  0x572e, 0x22aa,
-  0x5732, 0x120f,
-  0x5733, 0x22ae,
-  0x5735, 0x1212,
-  0x5736, 0x22b0,
-  0x5737, 0x1214,
-  0x5738, 0x22b1,
-  0x573d, 0x121a,
-  0x5747, 0x22b6,
-  0x5748, 0x1225,
-  0x574a, 0x22b7,
-  0x574b, 0x1228,
-  0x5755, 0x22b8,
-  0x5756, 0x1233,
-  0x575b, 0x22b9,
-  0x575f, 0x123c,
-  0x5767, 0x22bd,
-  0x5768, 0x1245,
-  0x5769, 0x22be,
-  0x576b, 0x1248,
-  0x5821, 0x1257,
-  0x5844, 0x22c0,
-  0x5845, 0x127b,
-  0x5847, 0x22c1,
-  0x5848, 0x127e,
-  0x5849, 0x22c2,
-  0x584a, 0x1280,
-  0x584c, 0x22c3,
-  0x584e, 0x1284,
-  0x5850, 0x22c5,
-  0x5852, 0x1288,
-  0x5853, 0x22c7,
-  0x5854, 0x128a,
-  0x5859, 0x22c8,
-  0x585a, 0x1290,
-  0x585b, 0x22c9,
-  0x585d, 0x1293,
-  0x5871, 0x22cb,
-  0x5872, 0x12a8,
-  0x5876, 0x22cc,
-  0x5878, 0x12ae,
-  0x5921, 0x12b5,
-  0x592d, 0x22ce,
-  0x592e, 0x12c2,
-  0x592f, 0x22cf,
-  0x5930, 0x12c4,
-  0x5931, 0x22d0,
-  0x5934, 0x12c8,
-  0x5947, 0x22d3,
-  0x5948, 0x12dc,
-  0x594d, 0x22d4,
-  0x5951, 0x12e5,
-  0x595d, 0x22d8,
-  0x595e, 0x12f2,
-  0x5961, 0x22d9,
-  0x5962, 0x12f6,
-  0x5964, 0x22da,
-  0x5965, 0x12f9,
-  0x5966, 0x22db,
-  0x5967, 0x12fb,
-  0x596c, 0x22dc,
-  0x596d, 0x1301,
-  0x5974, 0x22dd,
-  0x5976, 0x130a,
-  0x5a21, 0x1313,
-  0x5a25, 0x22df,
-  0x5a60, 0x1352,
-  0x5a6a, 0x231a,
-  0x5a6b, 0x135d,
-  0x5a77, 0x231b,
-  0x5a78, 0x136a,
-  0x5a79, 0x231c,
-  0x5a7a, 0x136c,
-  0x5a7e, 0x231d,
-  0x5b21, 0x1371,
-  0x5b23, 0x231e,
-  0x5b24, 0x1374,
-  0x5b26, 0x231f,
-  0x5b27, 0x1377,
-  0x5b29, 0x2320,
-  0x5b2b, 0x137b,
-  0x5b3b, 0x2322,
-  0x5b3c, 0x138c,
-  0x5b3d, 0x2323,
-  0x5b3e, 0x138e,
-  0x5b4f, 0x2324,
-  0x5b50, 0x13a0,
-  0x5b51, 0x2325,
-  0x5b52, 0x13a2,
-  0x5b5b, 0x2326,
-  0x5b5c, 0x13ac,
-  0x5b5e, 0x2327,
-  0x5b5f, 0x13af,
-  0x5b62, 0x2328,
-  0x5b63, 0x13b3,
-  0x5b64, 0x2329,
-  0x5b65, 0x13b5,
-  0x5b6b, 0x232a,
-  0x5b6c, 0x13bc,
-  0x5b6e, 0x232b,
-  0x5b6f, 0x13bf,
-  0x5b71, 0x232c,
-  0x5b72, 0x13c2,
-  0x5b75, 0x232d,
-  0x5b78, 0x13c8,
-  0x5c21, 0x13cf,
-  0x5c3c, 0x2330,
-  0x5c3d, 0x13eb,
-  0x5c3f, 0x2331,
-  0x5c40, 0x13ee,
-  0x5c42, 0x2332,
-  0x5c43, 0x13f1,
-  0x5c48, 0x2333,
-  0x5c4b, 0x13f9,
-  0x5c51, 0x2336,
-  0x5c52, 0x1400,
-  0x5c57, 0x2337,
-  0x5c58, 0x1406,
-  0x5c60, 0x2338,
-  0x5c61, 0x140f,
-  0x5c63, 0x2339,
-  0x5c65, 0x1413,
-  0x5c69, 0x233b,
-  0x5c6b, 0x1419,
-  0x5c71, 0x233d,
-  0x5c72, 0x1420,
-  0x5c76, 0x233e,
-  0x5c77, 0x1425,
-  0x5c79, 0x233f,
-  0x5c7a, 0x1428,
-  0x5c7d, 0x2340,
-  0x5d21, 0x2342,
-  0x5d22, 0x142e,
-  0x5d23, 0x2343,
-  0x5d28, 0x1434,
-  0x5d2a, 0x2348,
-  0x5d2c, 0x1438,
-  0x5d32, 0x234a,
-  0x5d33, 0x143f,
-  0x5d35, 0x234b,
-  0x5d36, 0x1442,
-  0x5d3a, 0x234c,
-  0x5d3c, 0x1448,
-  0x5d53, 0x234e,
-  0x5d54, 0x1460,
-  0x5d5b, 0x234f,
-  0x5d5c, 0x1468,
-  0x5d5e, 0x2350,
-  0x5d5f, 0x146b,
-  0x5d64, 0x2351,
-  0x5d65, 0x1471,
-  0x5d6b, 0x2352,
-  0x5d6c, 0x1478,
-  0x5d71, 0x2353,
-  0x5d72, 0x147e,
-  0x5d76, 0x2354,
-  0x5d78, 0x1484,
-  0x5d7c, 0x2356,
-  0x5d7d, 0x1489,
-  0x5d7e, 0x2357,
-  0x5e21, 0x148b,
-  0x5e2d, 0x2358,
-  0x5e2e, 0x1498,
-  0x5e34, 0x2359,
-  0x5e35, 0x149f,
-  0x5e3a, 0x235a,
-  0x5e3b, 0x14a5,
-  0x5e46, 0x235b,
-  0x5e47, 0x14b1,
-  0x5e4f, 0x235c,
-  0x5e50, 0x14ba,
-  0x5e51, 0x235d,
-  0x5e53, 0x14bd,
-  0x5e58, 0x235f,
-  0x5e59, 0x14c3,
-  0x5e62, 0x2360,
-  0x5e63, 0x14cd,
-  0x5e68, 0x2361,
-  0x5e69, 0x14d3,
-  0x5e6c, 0x2362,
-  0x5e6d, 0x14d7,
-  0x5e73, 0x2363,
-  0x5e74, 0x14de,
-  0x5e7c, 0x2364,
-  0x5e7d, 0x14e7,
-  0x5f21, 0x14e9,
-  0x5f22, 0x2365,
-  0x5f24, 0x14ec,
-  0x5f25, 0x2367,
-  0x5f26, 0x14ee,
-  0x5f34, 0x2368,
-  0x5f35, 0x14fd,
-  0x5f3c, 0x2369,
-  0x5f3e, 0x1506,
-  0x5f3f, 0x236b,
-  0x5f40, 0x1508,
-  0x5f42, 0x236c,
-  0x5f44, 0x150c,
-  0x5f4c, 0x236e,
-  0x5f4d, 0x1515,
-  0x5f50, 0x236f,
-  0x5f51, 0x1519,
-  0x5f55, 0x2370,
-  0x5f56, 0x151e,
-  0x5f58, 0x2371,
-  0x5f5a, 0x1522,
-  0x5f5c, 0x2373,
-  0x5f5d, 0x1525,
-  0x5f60, 0x2374,
-  0x5f61, 0x1529,
-  0x5f62, 0x2375,
-  0x5f63, 0x152b,
-  0x5f66, 0x2376,
-  0x5f67, 0x152f,
-  0x5f69, 0x2377,
-  0x5f6a, 0x1532,
-  0x5f6b, 0x2378,
-  0x5f6c, 0x1534,
-  0x5f6f, 0x2379,
-  0x5f70, 0x1538,
-  0x5f75, 0x237a,
-  0x5f76, 0x153e,
-  0x5f79, 0x237b,
-  0x5f7a, 0x1542,
-  0x6021, 0x1547,
-  0x6036, 0x237c,
-  0x6038, 0x155e,
-  0x603f, 0x237e,
-  0x6040, 0x1566,
-  0x6048, 0x237f,
-  0x6049, 0x156f,
-  0x604e, 0x2380,
-  0x604f, 0x1575,
-  0x6053, 0x2381,
-  0x6054, 0x157a,
-  0x6060, 0x2382,
-  0x6061, 0x1587,
-  0x6070, 0x2383,
-  0x6071, 0x1597,
-  0x6078, 0x2384,
-  0x6079, 0x159f,
-  0x607c, 0x2385,
-  0x6121, 0x15a5,
-  0x612b, 0x2388,
-  0x612c, 0x15b0,
-  0x612d, 0x2389,
-  0x612e, 0x15b2,
-  0x6130, 0x238a,
-  0x6131, 0x15b5,
-  0x6134, 0x238b,
-  0x6135, 0x15b9,
-  0x613b, 0x238c,
-  0x613c, 0x15c0,
-  0x613d, 0x238d,
-  0x613e, 0x15c2,
-  0x6140, 0x238e,
-  0x6142, 0x15c6,
-  0x6149, 0x2390,
-  0x614a, 0x15ce,
-  0x6150, 0x2391,
-  0x6151, 0x15d5,
-  0x615b, 0x2392,
-  0x615c, 0x15e0,
-  0x6161, 0x07aa,
-  0x6162, 0x2393,
-  0x6163, 0x15e7,
-  0x6167, 0x1198,
-  0x6168, 0x15ec,
-  0x616e, 0x2394,
-  0x6170, 0x15f4,
-  0x6176, 0x2396,
-  0x6177, 0x15fb,
-  0x6178, 0x2397,
-  0x6179, 0x15fd,
-  0x617d, 0x2398,
-  0x617e, 0x1602,
-  0x6221, 0x1603,
-  0x6224, 0x2399,
-  0x6225, 0x1607,
-  0x6228, 0x239a,
-  0x6229, 0x160b,
-  0x623b, 0x239b,
-  0x6245, 0x10c5,
-  0x6246, 0x23a5,
-  0x624f, 0x1631,
-  0x6250, 0x23ae,
-  0x6251, 0x1633,
-  0x6259, 0x23af,
-  0x625a, 0x163c,
-  0x6263, 0x23b0,
-  0x6265, 0x1647,
-  0x6266, 0x23b2,
-  0x6267, 0x1649,
-  0x6269, 0x23b3,
-  0x626c, 0x164e,
-  0x6278, 0x23b6,
-  0x6279, 0x165b,
-  0x627a, 0x23b7,
-  0x627e, 0x1660,
-  0x6321, 0x1661,
-  0x6322, 0x23bb,
-  0x6323, 0x1663,
-  0x6325, 0x23bc,
-  0x6326, 0x1666,
-  0x632b, 0x23bd,
-  0x632c, 0x166c,
-  0x6334, 0x23be,
-  0x6335, 0x1675,
-  0x6345, 0x23bf,
-  0x635c, 0x169c,
-  0x6363, 0x23d6,
-  0x6364, 0x16a4,
-  0x636d, 0x23d7,
-  0x636e, 0x16ae,
-  0x6371, 0x23d8,
-  0x6373, 0x16b3,
-  0x6378, 0x23da,
-  0x6379, 0x16b9,
-  0x637e, 0x23db,
-  0x6421, 0x16bf,
-  0x6424, 0x23dc,
-  0x6426, 0x16c4,
-  0x642b, 0x23de,
-  0x642c, 0x16ca,
-  0x642f, 0x23df,
-  0x6432, 0x16d0,
-  0x6435, 0x23e2,
-  0x6437, 0x16d5,
-  0x6442, 0x23e4,
-  0x6443, 0x16e1,
-  0x6445, 0x23e5,
-  0x6446, 0x16e4,
-  0x6449, 0x23e6,
-  0x644a, 0x16e8,
-  0x6459, 0x23e7,
-  0x645a, 0x16f8,
-  0x645c, 0x23e8,
-  0x645d, 0x16fb,
-  0x645e, 0x23e9,
-  0x645f, 0x16fd,
-  0x6464, 0x23ea,
-  0x6465, 0x1703,
-  0x646b, 0x23eb,
-  0x646d, 0x170b,
-  0x6472, 0x23ed,
-  0x6473, 0x1711,
-  0x647e, 0x23ee,
-  0x6521, 0x171d,
-  0x6530, 0x23ef,
-  0x6531, 0x172d,
-  0x6539, 0x23f0,
-  0x653a, 0x1736,
-  0x6547, 0x23f1,
-  0x6548, 0x1744,
-  0x6549, 0x23f2,
-  0x654a, 0x1746,
-  0x654e, 0x23f3,
-  0x654f, 0x174b,
-  0x6570, 0x23f4,
-  0x6571, 0x176d,
-  0x6572, 0x23f5,
-  0x6573, 0x176f,
-  0x657c, 0x23f6,
-  0x657e, 0x177a,
-  0x6621, 0x177b,
-  0x6623, 0x23f8,
-  0x6624, 0x177e,
-  0x662b, 0x23f9,
-  0x662d, 0x1787,
-  0x662e, 0x23fb,
-  0x662f, 0x1789,
-  0x6634, 0x23fc,
-  0x6636, 0x1790,
-  0x663f, 0x23fe,
-  0x6640, 0x179a,
-  0x6648, 0x23ff,
-  0x664a, 0x17a4,
-  0x664d, 0x2401,
-  0x664e, 0x17a8,
-  0x6660, 0x2402,
-  0x6721, 0x2421,
-  0x675b, 0x1813,
-  0x6761, 0x245b,
-  0x6763, 0x181b,
-  0x6767, 0x245d,
-  0x6768, 0x1820,
-  0x676f, 0x245e,
-  0x6770, 0x1828,
-  0x6774, 0x245f,
-  0x6777, 0x182f,
-  0x6821, 0x1837,
-  0x6828, 0x2462,
-  0x6829, 0x183f,
-  0x682c, 0x2463,
-  0x682d, 0x1843,
-  0x6836, 0x2464,
-  0x6837, 0x184d,
-  0x6838, 0x2465,
-  0x683b, 0x1851,
-  0x683f, 0x2468,
-  0x6841, 0x1857,
-  0x6845, 0x246a,
-  0x6846, 0x185c,
-  0x6847, 0x246b,
-  0x684a, 0x1860,
-  0x684e, 0x246e,
-  0x684f, 0x1865,
-  0x6850, 0x246f,
-  0x6851, 0x1867,
-  0x6853, 0x2470,
-  0x6854, 0x186a,
-  0x685d, 0x2471,
-  0x685e, 0x1874,
-  0x685f, 0x2472,
-  0x6860, 0x1876,
-  0x6862, 0x2473,
-  0x6864, 0x187a,
-  0x6865, 0x2475,
-  0x6866, 0x187c,
-  0x6867, 0x2476,
-  0x6868, 0x187e,
-  0x686b, 0x2477,
-  0x686c, 0x1882,
-  0x686d, 0x2478,
-  0x686e, 0x1884,
-  0x686f, 0x2479,
-  0x6870, 0x1886,
-  0x6879, 0x247a,
-  0x687a, 0x1890,
-  0x687c, 0x247b,
-  0x687e, 0x1894,
-  0x6921, 0x247d,
-  0x6922, 0x1896,
-  0x692d, 0x247e,
-  0x692e, 0x18a2,
-  0x6934, 0x247f,
-  0x6936, 0x18aa,
-  0x6937, 0x2481,
-  0x6938, 0x18ac,
-  0x6944, 0x2482,
-  0x6945, 0x18b9,
-  0x6946, 0x2483,
-  0x6947, 0x18bb,
-  0x6949, 0x2484,
-  0x694a, 0x18be,
-  0x6956, 0x2485,
-  0x6957, 0x18cb,
-  0x695a, 0x2486,
-  0x695b, 0x18cf,
-  0x6964, 0x2487,
-  0x6965, 0x18d9,
-  0x6966, 0x2488,
-  0x6968, 0x18dc,
-  0x6969, 0x248a,
-  0x696a, 0x18de,
-  0x696b, 0x248b,
-  0x696c, 0x18e0,
-  0x696d, 0x248c,
-  0x6a21, 0x249e,
-  0x6a26, 0x18f8,
-  0x6a27, 0x24a3,
-  0x6a29, 0x18fb,
-  0x6a31, 0x24a5,
-  0x6a32, 0x1904,
-  0x6a3c, 0x24a6,
-  0x6a3d, 0x190f,
-  0x6a4a, 0x24a7,
-  0x6a4b, 0x191d,
-  0x6a4d, 0x24a8,
-  0x6a4e, 0x1920,
-  0x6a53, 0x24a9,
-  0x6a54, 0x1926,
-  0x6a5a, 0x24aa,
-  0x6a70, 0x1942,
-  0x6b21, 0x1951,
-  0x6b27, 0x24c0,
-  0x6b28, 0x1958,
-  0x6b2a, 0x24c1,
-  0x6b2b, 0x195b,
-  0x6b32, 0x24c2,
-  0x6b33, 0x1963,
-  0x6b39, 0x24c3,
-  0x6b3a, 0x196a,
-  0x6b4a, 0x24c4,
-  0x6b4c, 0x197c,
-  0x6b4d, 0x24c6,
-  0x6b4e, 0x197e,
-  0x6b56, 0x24c7,
-  0x6b57, 0x1987,
-  0x6b5a, 0x24c8,
-  0x6b5b, 0x198b,
-  0x6b61, 0x24c9,
-  0x6b62, 0x1992,
-  0x6b77, 0x24ca,
-  0x6b78, 0x19a8,
-  0x6c21, 0x19af,
-  0x6c23, 0x24cb,
-  0x6c24, 0x19b2,
-  0x6c29, 0x24cc,
-  0x6c2f, 0x19bd,
-  0x6c31, 0x24d2,
-  0x6c32, 0x19c0,
-  0x6c34, 0x24d3,
-  0x6c36, 0x19c4,
-  0x6c3e, 0x24d5,
-  0x6c40, 0x19ce,
-  0x6c41, 0x24d7,
-  0x6c42, 0x19d0,
-  0x6c47, 0x24d8,
-  0x6c48, 0x19d6,
-  0x6c4b, 0x24d9,
-  0x6c4c, 0x19da,
-  0x6c62, 0x24da,
-  0x6c63, 0x19f1,
-  0x6c72, 0x24db,
-  0x6c73, 0x1a01,
-  0x6c75, 0x24dc,
-  0x6c76, 0x1a04,
-  0x6c78, 0x24dd,
-  0x6c79, 0x1a07,
-  0x6d21, 0x24de,
-  0x6d22, 0x1a0e,
-  0x6d28, 0x24df,
-  0x6d29, 0x1a15,
-  0x6d2f, 0x24e0,
-  0x6d31, 0x1a1d,
-  0x6d34, 0x24e2,
-  0x6d35, 0x1a21,
-  0x6d36, 0x24e3,
-  0x6d37, 0x1a23,
-  0x6d38, 0x24e4,
-  0x6d39, 0x1a25,
-  0x6d3a, 0x24e5,
-  0x6d3b, 0x1a27,
-  0x6d3f, 0x24e6,
-  0x6d40, 0x1a2c,
-  0x6d42, 0x24e7,
-  0x6d44, 0x1a30,
-  0x6d4c, 0x24e9,
-  0x6d4e, 0x1a3a,
-  0x6d53, 0x24eb,
-  0x6d54, 0x1a40,
-  0x6d57, 0x24ec,
-  0x6d58, 0x1a44,
-  0x6d68, 0x24ed,
-  0x6d69, 0x1a55,
-  0x6d6e, 0x24ee,
-  0x6d6f, 0x1a5b,
-  0x6d79, 0x24ef,
-  0x6d7b, 0x1a67,
-  0x6e21, 0x1a6b,
-  0x6e3c, 0x24f1,
-  0x6e3d, 0x1a87,
-  0x6e3f, 0x24f2,
-  0x6e40, 0x1a8a,
-  0x6e44, 0x24f3,
-  0x6f21, 0x252e,
-  0x6f72, 0x1b1a,
-  0x7021, 0x1b27,
-  0x7023, 0x257f,
-  0x7024, 0x1b2a,
-  0x702f, 0x2580,
-  0x705a, 0x1b60,
-  0x705c, 0x25ab,
-  0x705e, 0x1b64,
-  0x705f, 0x25ad,
-  0x7060, 0x1b66,
-  0x7069, 0x25ae,
-  0x706a, 0x1b70,
-  0x706c, 0x25af,
-  0x706d, 0x1b73,
-  0x706f, 0x25b0,
-  0x7070, 0x1b76,
-  0x7077, 0x25b1,
-  0x7078, 0x1b7e,
-  0x7079, 0x25b2,
-  0x707a, 0x1b80,
-  0x707c, 0x25b3,
-  0x707d, 0x1b83,
-  0x7121, 0x1b85,
-  0x7128, 0x25b4,
-  0x7129, 0x1b8d,
-  0x712b, 0x25b5,
-  0x712c, 0x1b90,
-  0x712e, 0x25b6,
-  0x712f, 0x1b93,
-  0x7132, 0x25b7,
-  0x7133, 0x1b97,
-  0x713c, 0x25b8,
-  0x713d, 0x1ba1,
-  0x7140, 0x25b9,
-  0x7141, 0x1ba5,
-  0x7149, 0x25ba,
-  0x714a, 0x1bae,
-  0x714d, 0x25bb,
-  0x714e, 0x1bb2,
-  0x714f, 0x25bc,
-  0x7151, 0x1bb5,
-  0x715a, 0x25be,
-  0x715b, 0x1bbf,
-  0x715c, 0x25bf,
-  0x715d, 0x1bc1,
-  0x7164, 0x25c0,
-  0x7165, 0x1bc9,
-  0x716c, 0x25c1,
-  0x716d, 0x1bd1,
-  0x716f, 0x25c2,
-  0x7170, 0x1bd4,
-  0x7177, 0x25c3,
-  0x7178, 0x1bdc,
-  0x7179, 0x25c4,
-  0x717a, 0x1bde,
-  0x717c, 0x25c5,
-  0x7221, 0x25c8,
-  0x722e, 0x1bf0,
-  0x7231, 0x25d5,
-  0x7233, 0x1bf5,
-  0x7239, 0x25d7,
-  0x723a, 0x1bfc,
-  0x7243, 0x25d8,
-  0x7244, 0x1c06,
-  0x7249, 0x25d9,
-  0x724a, 0x1c0c,
-  0x724c, 0x25da,
-  0x724e, 0x1c10,
-  0x724f, 0x25dc,
-  0x7250, 0x1c12,
-  0x7253, 0x25dd,
-  0x7254, 0x1c16,
-  0x7265, 0x25de,
-  0x7266, 0x1c28,
-  0x726e, 0x25df,
-  0x726f, 0x1c31,
-  0x7277, 0x25e0,
-  0x7278, 0x1c3a,
-  0x727d, 0x25e1,
-  0x727e, 0x1c40,
-  0x7321, 0x1c41,
-  0x733f, 0x25e2,
-  0x7340, 0x1c60,
-  0x7346, 0x25e3,
-  0x7347, 0x1c67,
-  0x7348, 0x25e4,
-  0x7349, 0x1c69,
-  0x7356, 0x25e5,
-  0x7357, 0x1c77,
-  0x7359, 0x25e6,
-  0x735a, 0x1c7a,
-  0x7365, 0x25e7,
-  0x7367, 0x1c87,
-  0x736a, 0x25e9,
-  0x736b, 0x1c8b,
-  0x736c, 0x25ea,
-  0x736d, 0x1c8d,
-  0x736f, 0x25eb,
-  0x7370, 0x1c90,
-  0x7371, 0x25ec,
-  0x7372, 0x1c92,
-  0x737d, 0x25ed,
-  0x737e, 0x1c9e,
-  0x7421, 0x1c9f,
-  0x7425, 0x25ee,
-  0x7426, 0x1ca4,
-  0x742f, 0x25ef,
-  0x7430, 0x1cae,
-  0x7435, 0x25f0,
-  0x7436, 0x1cb4,
-  0x7441, 0x25f1,
-  0x7442, 0x1cc0,
-  0x7447, 0x25f2,
-  0x7448, 0x1cc6,
-  0x744f, 0x25f3,
-  0x7451, 0x1ccf,
-  0x7456, 0x25f5,
-  0x7457, 0x1cd5,
-  0x746a, 0x25f6,
-  0x746b, 0x1ce9,
-  0x746f, 0x25f7,
-  0x7470, 0x1cee,
-  0x7475, 0x25f8,
-  0x7476, 0x1cf4,
-  0x7521, 0x1cfd,
-  0x7526, 0x25f9,
-  0x7528, 0x1d04,
-  0x753a, 0x25fb,
-  0x753c, 0x1d18,
-  0x7544, 0x25fd,
-  0x7545, 0x1d21,
-  0x7548, 0x25fe,
-  0x7549, 0x1d25,
-  0x754e, 0x25ff,
-  0x7550, 0x1d2c,
-  0x7551, 0x2601,
-  0x7553, 0x1d2f,
-  0x7559, 0x2603,
-  0x755a, 0x1d36,
-  0x755c, 0x2604,
-  0x755d, 0x1d39,
-  0x7566, 0x2605,
-  0x7568, 0x1d44,
-  0x756f, 0x2607,
-  0x7570, 0x1d4c,
-  0x7572, 0x2608,
-  0x7573, 0x1d4f,
-  0x757c, 0x2609,
-  0x757d, 0x1d59,
-  0x7621, 0x1d5b,
-  0x7623, 0x260a,
-  0x7624, 0x1d5e,
-  0x7626, 0x260b,
-  0x7627, 0x1d61,
-  0x7628, 0x260c,
-  0x7629, 0x1d63,
-  0x762b, 0x260d,
-  0x762c, 0x1d66,
-  0x7630, 0x260e,
-  0x7631, 0x1d6b,
-  0x7633, 0x260f,
-  0x763f, 0x1d79,
-  0x7645, 0x261b,
-  0x7646, 0x1d80,
-  0x7647, 0x261c,
-  0x7648, 0x1d82,
-  0x7649, 0x261d,
-  0x764a, 0x1d84,
-  0x764f, 0x261e,
-  0x7721, 0x264e,
-  0x7730, 0x1dc8,
-  0x7732, 0x265d,
-  0x7734, 0x1dcc,
-  0x7735, 0x265f,
-  0x7736, 0x1dce,
-  0x773d, 0x2660,
-  0x773e, 0x1dd6,
-  0x7743, 0x2661,
-  0x7744, 0x1ddc,
-  0x7745, 0x2662,
-  0x7747, 0x1ddf,
-  0x774a, 0x2664,
-  0x774c, 0x1de4,
-  0x774f, 0x2666,
-  0x7751, 0x1de9,
-  0x775e, 0x2668,
-  0x775f, 0x1df7,
-  0x7761, 0x0ab9,
-  0x7762, 0x1dfa,
-  0x7772, 0x2669,
-  0x7773, 0x1e0b,
-  0x7775, 0x266a,
-  0x7776, 0x1e0e,
-  0x7821, 0x266b,
-  0x7827, 0x04cc,
-  0x7828, 0x050a,
-  0x7829, 0x0518,
-  0x782a, 0x2671,
-  0x782c, 0x0594,
-  0x782d, 0x05ce,
-  0x782e, 0x2673,
-  0x782f, 0x05f6,
-  0x7830, 0x2674,
-  0x7832, 0x0653,
-  0x7833, 0x067e,
-  0x7834, 0x2676,
-  0x7835, 0x06c4,
-  0x7836, 0x2677,
-  0x7838, 0x073c,
-  0x7839, 0x2679,
-  0x783b, 0x07c3,
-  0x783c, 0x267b,
-  0x7840, 0x082b,
-  0x7841, 0x267f,
-  0x7842, 0x084e,
-  0x7843, 0x0869,
-  0x7844, 0x2680,
-  0x7846, 0x090c,
-  0x7847, 0x2682,
-  0x7849, 0x0971,
-  0x784a, 0x2684,
-  0x784b, 0x099a,
-  0x784d, 0x2685,
-  0x784e, 0x09da,
-  0x784f, 0x2686,
-  0x7850, 0x09fa,
-  0x7851, 0x2687,
-  0x785c, 0x0bda,
-  0x785d, 0x0bdd,
-  0x785e, 0x0bea,
-  0x785f, 0x0bec,
-  0x7860, 0x0bf2,
-  0x7861, 0x2692,
-  0x7866, 0x0c92,
-  0x7867, 0x0d1a,
-  0x7868, 0x0d8c,
-  0x7869, 0x0dbe,
-  0x786a, 0x2697,
-  0x786b, 0x0dfb,
-  0x786c, 0x2698,
-  0x786f, 0x0e70,
-  0x7870, 0x269b,
-  0x7871, 0x0ea3,
-  0x7872, 0x269c,
-  0x7878, 0x103d,
-  0x7879, 0x10d9,
-  0x787a, 0x26a2,
-  0x787c, 0x10fb,
-  0x787d, 0x1109,
-  0x787e, 0x26a4,
-  0x7921, 0x11a1,
-  0x7922, 0x26a5,
-  0x7923, 0x11ba,
-  0x7924, 0x26a6,
-  0x7926, 0x11d5,
-  0x7927, 0x26a8,
-  0x7928, 0x11fd,
-  0x7929, 0x1219,
-  0x2122, 0x023f,
-  0x2123, 0x023e,
-  0x212a, 0x0256,
-  0x212b, 0x1e18,
-  0x212d, 0x0257,
-  0x2132, 0x0246,
-  0x217e, 0x1e1a,
-  0x2321, 0x0242,
-  0x2328, 0x0244,
-  0x232c, 0x023d,
-  0x232e, 0x1e1b,
-  0x233a, 0x0240,
-  0x233d, 0x1e1c,
-  0x233f, 0x0243,
-  0x235b, 0x1e1d,
-  0x235d, 0x1e1e,
-  0x235f, 0x0258,
-  0x237b, 0x0254,
-  0x237d, 0x0255,
-  0x237e, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBTVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12GBTVMap2, 2303
-};
-
-static Gushort gb12GBTpcEUCHMap2[4566] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb0a8, 0x1e25,
-  0xb0a9, 0x03b4,
-  0xb0aa, 0x1e26,
-  0xb0ab, 0x03b6,
-  0xb0ad, 0x1e27,
-  0xb0af, 0x03ba,
-  0xb0b9, 0x1e29,
-  0xb0ba, 0x03c5,
-  0xb0c0, 0x1e2a,
-  0xb0c1, 0x03cc,
-  0xb0d3, 0x1e2b,
-  0xb0d4, 0x03df,
-  0xb0d5, 0x1e2c,
-  0xb0d6, 0x03e1,
-  0xb0da, 0x1e2d,
-  0xb0db, 0x03e6,
-  0xb0dc, 0x1e2e,
-  0xb0dd, 0x03e8,
-  0xb0e4, 0x1e2f,
-  0xb0e5, 0x03f0,
-  0xb0ec, 0x1e30,
-  0xb0ee, 0x03f9,
-  0xb0ef, 0x1e32,
-  0xb0f0, 0x03fb,
-  0xb0f3, 0x1e33,
-  0xb0f4, 0x03ff,
-  0xb0f7, 0x1e34,
-  0xb0f8, 0x0403,
-  0xb0f9, 0x1e35,
-  0xb0fa, 0x0405,
-  0xb1a1, 0x040a,
-  0xb1a5, 0x1e36,
-  0xb1a7, 0x0410,
-  0xb1a8, 0x1e38,
-  0xb1a9, 0x0412,
-  0xb1ab, 0x1e39,
-  0xb1ac, 0x0415,
-  0xb1b2, 0x1e3a,
-  0xb1b3, 0x041c,
-  0xb1b4, 0x1e3b,
-  0xb1b6, 0x041f,
-  0xb1b7, 0x1e3d,
-  0xb1ba, 0x0423,
-  0xb1c1, 0x1e40,
-  0xb1c2, 0x042b,
-  0xb1ca, 0x1e41,
-  0xb1cb, 0x0434,
-  0xb1cf, 0x1e42,
-  0xb1d1, 0x043a,
-  0xb1d2, 0x1e44,
-  0xb1d3, 0x043c,
-  0xb1d5, 0x1e45,
-  0xb1d6, 0x043f,
-  0xb1df, 0x1e46,
-  0xb1e2, 0x044b,
-  0xb1e4, 0x1e49,
-  0xb1e5, 0x044e,
-  0xb1e7, 0x1e4a,
-  0xb1e9, 0x0452,
-  0xb1ea, 0x1e4c,
-  0xb1eb, 0x0454,
-  0xb1ee, 0x1e4d,
-  0xb1ef, 0x0458,
-  0xb1f1, 0x1e4e,
-  0xb1f2, 0x045b,
-  0xb1f4, 0x1e4f,
-  0xb1f8, 0x0461,
-  0xb1fd, 0x1e53,
-  0xb1fe, 0x0467,
-  0xb2a1, 0x0468,
-  0xb2a6, 0x1e54,
-  0xb2a8, 0x046f,
-  0xb2ac, 0x1e56,
-  0xb2ad, 0x0474,
-  0xb2b5, 0x1e57,
-  0xb2b6, 0x047d,
-  0xb2b9, 0x1e58,
-  0xb2ba, 0x0481,
-  0xb2c6, 0x1e59,
-  0xb2c7, 0x048e,
-  0xb2ce, 0x1e5a,
-  0xb2d8, 0x049f,
-  0xb2de, 0x1e64,
-  0xb2df, 0x04a6,
-  0xb2e0, 0x1e65,
-  0xb2e1, 0x04a8,
-  0xb2e2, 0x1e66,
-  0xb2e4, 0x04ab,
-  0xb2ef, 0x1e68,
-  0xb2f0, 0x04b7,
-  0xb2f3, 0x1e69,
-  0xb2fd, 0x04c4,
-  0xb3a1, 0x1e73,
-  0xb3a3, 0x04c8,
-  0xb3a4, 0x1e75,
-  0xb3a8, 0x04cd,
-  0xb3a9, 0x1e79,
-  0xb3aa, 0x04cf,
-  0xb3ae, 0x1e7a,
-  0xb3af, 0x04d4,
-  0xb3b5, 0x1e7b,
-  0xb3b6, 0x04db,
-  0xb3b9, 0x1e7c,
-  0xb3ba, 0x04df,
-  0xb3be, 0x1e7d,
-  0xb3bf, 0x04e4,
-  0xb3c2, 0x1e7e,
-  0xb3c3, 0x04e8,
-  0xb3c4, 0x1e7f,
-  0xb3c5, 0x04ea,
-  0xb3c6, 0x1e80,
-  0xb3c7, 0x04ec,
-  0xb3cd, 0x1e81,
-  0xb3ce, 0x04f3,
-  0xb3cf, 0x1e82,
-  0xb3d0, 0x04f5,
-  0xb3d2, 0x1e83,
-  0xb3d3, 0x04f8,
-  0xb3d9, 0x1e84,
-  0xb3da, 0x04ff,
-  0xb3db, 0x1e85,
-  0xb3dc, 0x0501,
-  0xb3dd, 0x1e86,
-  0xb3de, 0x0503,
-  0xb3e3, 0x1e87,
-  0xb3e4, 0x0509,
-  0xb3e5, 0x1e88,
-  0xb3e7, 0x050c,
-  0xb3e8, 0x1e8a,
-  0xb3e9, 0x050e,
-  0xb3eb, 0x1e8b,
-  0xb3ed, 0x0512,
-  0xb3ef, 0x1e8d,
-  0xb3f0, 0x0515,
-  0xb3f1, 0x1e8e,
-  0xb3f2, 0x0517,
-  0xb3f3, 0x1e8f,
-  0xb3f4, 0x0519,
-  0xb3fa, 0x1e90,
-  0xb3fc, 0x0521,
-  0xb4a1, 0x1e92,
-  0xb4a3, 0x0526,
-  0xb4a5, 0x1e94,
-  0xb4a7, 0x052a,
-  0xb4ab, 0x1e96,
-  0xb4ac, 0x052f,
-  0xb4af, 0x1e97,
-  0xb4b0, 0x0533,
-  0xb4b3, 0x1e98,
-  0xb4b5, 0x0538,
-  0xb4b8, 0x1e9a,
-  0xb4b9, 0x053c,
-  0xb4bf, 0x1e9b,
-  0xb4c0, 0x0543,
-  0xb4c2, 0x1e9c,
-  0xb4c3, 0x0546,
-  0xb4c7, 0x1e9d,
-  0xb4c8, 0x054b,
-  0xb4ca, 0x1e9e,
-  0xb4cb, 0x054e,
-  0xb4cd, 0x1e9f,
-  0xb4ce, 0x0551,
-  0xb4cf, 0x1ea0,
-  0xb4d0, 0x0553,
-  0xb4d3, 0x1ea1,
-  0xb4d5, 0x0558,
-  0xb4da, 0x1ea3,
-  0xb4db, 0x055e,
-  0xb4dc, 0x1ea4,
-  0xb4dd, 0x0560,
-  0xb4ed, 0x1ea5,
-  0xb4ee, 0x0571,
-  0xb4ef, 0x1ea6,
-  0xb4f0, 0x0573,
-  0xb4f8, 0x1ea7,
-  0xb4f9, 0x057c,
-  0xb4fb, 0x1ea8,
-  0xb4fc, 0x057f,
-  0xb5a1, 0x0582,
-  0xb5a3, 0x1ea9,
-  0xb5a4, 0x0585,
-  0xb5a5, 0x1eaa,
-  0xb5a9, 0x058a,
-  0xb5ac, 0x1eae,
-  0xb5ad, 0x058e,
-  0xb5ae, 0x1eaf,
-  0xb5b0, 0x0591,
-  0xb5b1, 0x1eb1,
-  0xb5b6, 0x0597,
-  0xb5b7, 0x1eb6,
-  0xb5b8, 0x0599,
-  0xb5ba, 0x1eb7,
-  0xb5bd, 0x059e,
-  0xb5c6, 0x1eba,
-  0xb5c7, 0x05a8,
-  0xb5cb, 0x1ebb,
-  0xb5cc, 0x05ad,
-  0xb5d0, 0x1ebc,
-  0xb5d1, 0x05b2,
-  0xb5d3, 0x1ebd,
-  0xb5d4, 0x05b5,
-  0xb5dd, 0x1ebe,
-  0xb5e0, 0x05c1,
-  0xb5e3, 0x1ec1,
-  0xb5e4, 0x05c5,
-  0xb5e6, 0x1ec2,
-  0xb5e8, 0x05c9,
-  0xb5ed, 0x1ec4,
-  0xb5ee, 0x05cf,
-  0xb5f6, 0x1ec5,
-  0xb5f8, 0x05d9,
-  0xb5fd, 0x1ec7,
-  0xb5fe, 0x05df,
-  0xb6a1, 0x05e0,
-  0xb6a4, 0x1ec8,
-  0xb6a6, 0x05e5,
-  0xb6a7, 0x1eca,
-  0xb6a8, 0x05e7,
-  0xb6a9, 0x1ecb,
-  0xb6aa, 0x05e9,
-  0xb6ab, 0x1ecc,
-  0xb6ac, 0x05eb,
-  0xb6af, 0x1ecd,
-  0xb6b1, 0x05f0,
-  0xb6b3, 0x1ecf,
-  0xb6b4, 0x05f3,
-  0xb6b7, 0x1ed0,
-  0xb6b8, 0x05f7,
-  0xb6bf, 0x1ed1,
-  0xb6c2, 0x0601,
-  0xb6c4, 0x1ed4,
-  0xb6c5, 0x0604,
-  0xb6c6, 0x1ed5,
-  0xb6c7, 0x0606,
-  0xb6cd, 0x1ed6,
-  0xb6ce, 0x060d,
-  0xb6cf, 0x1ed7,
-  0xb6d1, 0x0610,
-  0xb6d3, 0x1ed9,
-  0xb6d5, 0x0614,
-  0xb6d6, 0x1edb,
-  0xb6d7, 0x0616,
-  0xb6d9, 0x1edc,
-  0xb6da, 0x0619,
-  0xb6db, 0x1edd,
-  0xb6dc, 0x061b,
-  0xb6e1, 0x1ede,
-  0xb6e2, 0x0621,
-  0xb6e9, 0x1edf,
-  0xb6ea, 0x0629,
-  0xb6ec, 0x1ee0,
-  0xb6ed, 0x062c,
-  0xb6ee, 0x1ee1,
-  0xb6f0, 0x062f,
-  0xb6f1, 0x1ee3,
-  0xb6f2, 0x0631,
-  0xb6f6, 0x1ee4,
-  0xb6f7, 0x0636,
-  0xb6f9, 0x1ee5,
-  0xb6fa, 0x0639,
-  0xb6fb, 0x1ee6,
-  0xb6fd, 0x063c,
-  0xb7a1, 0x1ee8,
-  0xb7a4, 0x0641,
-  0xb7a7, 0x1eeb,
-  0xb7a8, 0x0645,
-  0xb7af, 0x1eec,
-  0xb7b1, 0x064e,
-  0xb7b3, 0x1eee,
-  0xb7b4, 0x0651,
-  0xb7b6, 0x1eef,
-  0xb7b8, 0x0655,
-  0xb7b9, 0x1ef1,
-  0xb7ba, 0x0657,
-  0xb7c3, 0x1ef2,
-  0xb7c5, 0x0662,
-  0xb7c9, 0x1ef4,
-  0xb7ca, 0x0667,
-  0xb7cc, 0x1ef5,
-  0xb7cd, 0x066a,
-  0xb7cf, 0x1ef6,
-  0xb7d0, 0x066d,
-  0xb7d1, 0x1ef7,
-  0xb7d2, 0x066f,
-  0xb7d7, 0x1ef8,
-  0xb7d9, 0x0676,
-  0xb7dc, 0x1efa,
-  0xb7dd, 0x067a,
-  0xb7df, 0x1efb,
-  0xb7e2, 0x067f,
-  0xb7e3, 0x1efe,
-  0xb7e4, 0x0681,
-  0xb7e6, 0x1eff,
-  0xb7e9, 0x0686,
-  0xb7eb, 0x1f02,
-  0xb7ee, 0x068b,
-  0xb7ef, 0x1f05,
-  0xb7f0, 0x068d,
-  0xb7f4, 0x1f06,
-  0xb7f5, 0x0692,
-  0xb7f8, 0x1f07,
-  0xb7f9, 0x0696,
-  0xb8a1, 0x069c,
-  0xb8a7, 0x1f08,
-  0xb8a9, 0x06a4,
-  0xb8b3, 0x1f0a,
-  0xb8b5, 0x06b0,
-  0xb8ba, 0x1f0c,
-  0xb8bb, 0x06b6,
-  0xb8bc, 0x1f0d,
-  0xb8bd, 0x06b8,
-  0xb8be, 0x1f0e,
-  0xb8c0, 0x06bb,
-  0xb8c3, 0x1f10,
-  0xb8c4, 0x06bf,
-  0xb8c6, 0x1f11,
-  0xb8c8, 0x06c3,
-  0xb8c9, 0x1f13,
-  0xb8ca, 0x06c5,
-  0xb8cf, 0x1f14,
-  0xb8d0, 0x06cb,
-  0xb8d3, 0x1f15,
-  0xb8d7, 0x06d2,
-  0xb8d9, 0x1f19,
-  0xb8db, 0x06d6,
-  0xb8e4, 0x1f1b,
-  0xb8e5, 0x06e0,
-  0xb8e9, 0x1f1c,
-  0xb8ea, 0x06e5,
-  0xb8eb, 0x1f1d,
-  0xb8ec, 0x06e7,
-  0xb8f3, 0x1f1e,
-  0xb8f4, 0x06ef,
-  0xb8f5, 0x1f1f,
-  0xb8f7, 0x06f2,
-  0xb8f8, 0x1f21,
-  0xb8f9, 0x06f4,
-  0xb9a1, 0x06fa,
-  0xb9a8, 0x1f22,
-  0xb9a9, 0x0702,
-  0xb9ae, 0x1f23,
-  0xb9af, 0x0708,
-  0xb9b1, 0x1f24,
-  0xb9b2, 0x070b,
-  0xb9b3, 0x1f25,
-  0xb9b4, 0x070d,
-  0xb9b5, 0x1f26,
-  0xb9b6, 0x070f,
-  0xb9b9, 0x1f27,
-  0xb9bb, 0x0714,
-  0xb9c6, 0x1f29,
-  0xb9c7, 0x0720,
-  0xb9cb, 0x1f2a,
-  0xb9cc, 0x0725,
-  0xb9d0, 0x1f2b,
-  0xb9d1, 0x072a,
-  0xb9d8, 0x1f2c,
-  0xb9d9, 0x0732,
-  0xb9db, 0x1f2d,
-  0xb9dc, 0x0735,
-  0xb9dd, 0x1f2e,
-  0xb9de, 0x0737,
-  0xb9df, 0x1f2f,
-  0xb9e0, 0x0739,
-  0xb9e1, 0x1f30,
-  0xb9e2, 0x073b,
-  0xb9e3, 0x1f31,
-  0xb9e4, 0x073d,
-  0xb9e6, 0x1f32,
-  0xb9e7, 0x0740,
-  0xb9e9, 0x1f33,
-  0xb9ed, 0x0746,
-  0xb9ee, 0x1f37,
-  0xb9ef, 0x0748,
-  0xb9f1, 0x1f38,
-  0xb9f2, 0x074b,
-  0xb9f3, 0x1f39,
-  0xb9f6, 0x074f,
-  0xb9f8, 0x1f3c,
-  0xb9f9, 0x0752,
-  0xb9fa, 0x1f3d,
-  0xb9fb, 0x0754,
-  0xb9fd, 0x1f3e,
-  0xb9fe, 0x0757,
-  0xbaa1, 0x0758,
-  0xbaa7, 0x1f3f,
-  0xbaa8, 0x075f,
-  0xbaab, 0x1f40,
-  0xbaac, 0x0763,
-  0xbaba, 0x1f41,
-  0xbabb, 0x0772,
-  0xbac5, 0x1f42,
-  0xbac6, 0x077d,
-  0xbad2, 0x1f43,
-  0xbad3, 0x078a,
-  0xbad7, 0x1f44,
-  0xbad9, 0x0790,
-  0xbae4, 0x1f46,
-  0xbae5, 0x079c,
-  0xbae8, 0x1f47,
-  0xbae9, 0x07a0,
-  0xbaec, 0x1f48,
-  0xbaed, 0x07a4,
-  0xbaf3, 0x15e5,
-  0xbaf4, 0x07ab,
-  0xbaf8, 0x1f49,
-  0xbaf9, 0x07b0,
-  0xbba1, 0x07b6,
-  0xbba4, 0x1f4a,
-  0xbba5, 0x07ba,
-  0xbba6, 0x1f4b,
-  0xbba7, 0x07bc,
-  0xbba9, 0x1f4c,
-  0xbbab, 0x07c0,
-  0xbbad, 0x1f4e,
-  0xbbaf, 0x07c4,
-  0xbbb0, 0x1f50,
-  0xbbb1, 0x07c6,
-  0xbbb3, 0x1f51,
-  0xbbb4, 0x07c9,
-  0xbbb5, 0x1f52,
-  0xbbb8, 0x07cd,
-  0xbbb9, 0x1f55,
-  0xbbbb, 0x07d0,
-  0xbbd1, 0x1f57,
-  0xbbd2, 0x07e7,
-  0xbbd3, 0x1f58,
-  0xbbd5, 0x07ea,
-  0xbbdf, 0x1f5a,
-  0xbbe8, 0x07fd,
-  0xbbeb, 0x1f63,
-  0xbbec, 0x0801,
-  0xbbf1, 0x1f64,
-  0xbbf2, 0x0807,
-  0xbbf5, 0x1f65,
-  0xbbf8, 0x080d,
-  0xbbfa, 0x1f68,
-  0xbbfb, 0x0810,
-  0xbbfd, 0x1f69,
-  0xbbfe, 0x0813,
-  0xbca1, 0x0814,
-  0xbca2, 0x1f6a,
-  0xbca3, 0x0816,
-  0xbca5, 0x1f6b,
-  0xbca7, 0x081a,
-  0xbca8, 0x1f6d,
-  0xbcaa, 0x081d,
-  0xbcab, 0x1f6f,
-  0xbcac, 0x081f,
-  0xbcad, 0x1f70,
-  0xbcae, 0x0821,
-  0xbcb6, 0x1f71,
-  0xbcb9, 0x082c,
-  0xbcbb, 0x1f74,
-  0xbcbc, 0x082f,
-  0xbcc1, 0x1f75,
-  0xbcc2, 0x0835,
-  0xbcc3, 0x1f76,
-  0xbcc4, 0x0837,
-  0xbcc6, 0x1f77,
-  0xbcc8, 0x083b,
-  0xbcca, 0x1f79,
-  0xbccb, 0x083e,
-  0xbccc, 0x1f7a,
-  0xbcce, 0x0841,
-  0xbcd0, 0x1f7c,
-  0xbcd1, 0x0844,
-  0xbcd4, 0x1f7d,
-  0xbcd7, 0x084a,
-  0xbcd8, 0x1f80,
-  0xbcd9, 0x084c,
-  0xbcdb, 0x1f81,
-  0xbcdc, 0x084f,
-  0xbcdd, 0x1f82,
-  0xbcde, 0x0851,
-  0xbcdf, 0x1f83,
-  0xbce2, 0x0855,
-  0xbce3, 0x1f86,
-  0xbce5, 0x0858,
-  0xbce8, 0x1f88,
-  0xbce9, 0x085c,
-  0xbcea, 0x1f89,
-  0xbced, 0x0860,
-  0xbcef, 0x1f8c,
-  0xbcf4, 0x0867,
-  0xbcf6, 0x1f91,
-  0xbcfd, 0x0870,
-  0xbda1, 0x0872,
-  0xbda2, 0x1f98,
-  0xbda8, 0x0879,
-  0xbdab, 0x1f9e,
-  0xbdad, 0x087e,
-  0xbdaf, 0x1fa0,
-  0xbdb3, 0x0884,
-  0xbdb4, 0x1fa4,
-  0xbdb5, 0x0886,
-  0xbdba, 0x1fa5,
-  0xbdbb, 0x088c,
-  0xbdbd, 0x1fa6,
-  0xbdc0, 0x0891,
-  0xbdc1, 0x1fa9,
-  0xbdc5, 0x0896,
-  0xbdc8, 0x1fad,
-  0xbdcb, 0x089c,
-  0xbdce, 0x1fb0,
-  0xbdd0, 0x08a1,
-  0xbdd7, 0x1fb2,
-  0xbdd8, 0x08a9,
-  0xbdda, 0x1fb3,
-  0xbddb, 0x08ac,
-  0xbde0, 0x1fb4,
-  0xbde2, 0x08b3,
-  0xbdeb, 0x1fb6,
-  0xbdec, 0x08bd,
-  0xbdf4, 0x1fb7,
-  0xbdf9, 0x08ca,
-  0xbdfd, 0x1fbc,
-  0xbdfe, 0x08cf,
-  0xbea1, 0x1fbd,
-  0xbea3, 0x08d2,
-  0xbea5, 0x1fbf,
-  0xbea6, 0x08d5,
-  0xbea8, 0x1fc0,
-  0xbea9, 0x08d8,
-  0xbeaa, 0x1fc1,
-  0xbeab, 0x08da,
-  0xbead, 0x1fc2,
-  0xbeae, 0x08dd,
-  0xbeb1, 0x1fc3,
-  0xbeb2, 0x08e1,
-  0xbeb5, 0x1fc4,
-  0xbeb8, 0x08e7,
-  0xbeba, 0x1fc7,
-  0xbebb, 0x08ea,
-  0xbec0, 0x1fc8,
-  0xbec1, 0x08f0,
-  0xbec9, 0x1fc9,
-  0xbeca, 0x08f9,
-  0xbed4, 0x1fca,
-  0xbed5, 0x0904,
-  0xbed9, 0x1fcb,
-  0xbeda, 0x0909,
-  0xbedd, 0x1fcc,
-  0xbede, 0x090d,
-  0xbee2, 0x1fcd,
-  0xbee3, 0x0912,
-  0xbee5, 0x1fce,
-  0xbee6, 0x0915,
-  0xbee7, 0x1fcf,
-  0xbee8, 0x0917,
-  0xbee9, 0x1fd0,
-  0xbeea, 0x0919,
-  0xbeee, 0x1fd1,
-  0xbeef, 0x091e,
-  0xbef5, 0x1fd2,
-  0xbef6, 0x0925,
-  0xbef7, 0x1fd3,
-  0xbef9, 0x0928,
-  0xbefb, 0x1fd5,
-  0xbefd, 0x092c,
-  0xbfa1, 0x092e,
-  0xbfa5, 0x1fd7,
-  0xbfa6, 0x0933,
-  0xbfaa, 0x1fd8,
-  0xbfab, 0x0938,
-  0xbfad, 0x1fd9,
-  0xbfae, 0x093b,
-  0xbfc5, 0x1fda,
-  0xbfc6, 0x0953,
-  0xbfc7, 0x1fdb,
-  0xbfc8, 0x0955,
-  0xbfce, 0x1fdc,
-  0xbfcf, 0x095c,
-  0xbfd1, 0x1fdd,
-  0xbfd3, 0x0960,
-  0xbfd9, 0x1fdf,
-  0xbfda, 0x0967,
-  0xbfe2, 0x1fe0,
-  0xbfe5, 0x0972,
-  0xbfe9, 0x1fe3,
-  0xbfea, 0x0977,
-  0xbfeb, 0x1fe4,
-  0xbfec, 0x0979,
-  0xbfed, 0x1fe5,
-  0xbfee, 0x097b,
-  0xbff3, 0x1fe6,
-  0xbff4, 0x0981,
-  0xbff5, 0x1fe7,
-  0xbff6, 0x0983,
-  0xbff7, 0x1fe8,
-  0xbff8, 0x0985,
-  0xbff9, 0x1fe9,
-  0xbffb, 0x0988,
-  0xc0a1, 0x1feb,
-  0xc0a2, 0x098d,
-  0xc0a3, 0x1fec,
-  0xc0a4, 0x098f,
-  0xc0a9, 0x1fed,
-  0xc0aa, 0x0995,
-  0xc0ab, 0x1fee,
-  0xc0ac, 0x0997,
-  0xc0af, 0x1fef,
-  0xc0b1, 0x099c,
-  0xc0b3, 0x1ff1,
-  0xc0b7, 0x09a2,
-  0xc0b8, 0x1ff5,
-  0xc0c5, 0x09b0,
-  0xc0cc, 0x2002,
-  0xc0ce, 0x09b9,
-  0xc0d4, 0x2004,
-  0xc0d5, 0x09c0,
-  0xc0d6, 0x2005,
-  0xc0d7, 0x09c2,
-  0xc0d8, 0x2006,
-  0xc0d9, 0x09c4,
-  0xc0dd, 0x2007,
-  0xc0de, 0x09c9,
-  0xc0e0, 0x2008,
-  0xc0e1, 0x09cc,
-  0xc0e9, 0x2009,
-  0xc0ea, 0x09d5,
-  0xc0eb, 0x200a,
-  0xc0ed, 0x09d8,
-  0xc0ef, 0x200c,
-  0xc0f2, 0x09dd,
-  0xc0f6, 0x200f,
-  0xc0fb, 0x09e6,
-  0xc1a1, 0x09ea,
-  0xc1a4, 0x2014,
-  0xc1a6, 0x09ef,
-  0xc1a9, 0x2016,
-  0xc1ae, 0x09f7,
-  0xc1af, 0x201b,
-  0xc1b9, 0x0a02,
-  0xc1bd, 0x2025,
-  0xc1bf, 0x0a08,
-  0xc1c2, 0x2027,
-  0xc1c3, 0x0a0c,
-  0xc1c6, 0x2028,
-  0xc1c7, 0x0a10,
-  0xc1c9, 0x2029,
-  0xc1ca, 0x0a13,
-  0xc1cd, 0x202a,
-  0xc1ce, 0x0a17,
-  0xc1d4, 0x202b,
-  0xc1d5, 0x0a1e,
-  0xc1d9, 0x202c,
-  0xc1dc, 0x0a25,
-  0xc1de, 0x202f,
-  0xc1df, 0x0a28,
-  0xc1e4, 0x2030,
-  0xc1e6, 0x0a2f,
-  0xc1e9, 0x2032,
-  0xc1ea, 0x0a33,
-  0xc1eb, 0x2033,
-  0xc1ed, 0x0a36,
-  0xc1f3, 0x2035,
-  0xc1f4, 0x0a3d,
-  0xc1f5, 0x2036,
-  0xc1f6, 0x0a3f,
-  0xc1fa, 0x2037,
-  0xc1fe, 0x0a47,
-  0xc2a1, 0x0a48,
-  0xc2a2, 0x203b,
-  0xc2a9, 0x0a50,
-  0xc2ab, 0x2042,
-  0xc2b4, 0x0a5b,
-  0xc2b8, 0x204b,
-  0xc2b9, 0x0a60,
-  0xc2bc, 0x204c,
-  0xc2be, 0x0a65,
-  0xc2bf, 0x204e,
-  0xc2c0, 0x0a67,
-  0xc2c1, 0x204f,
-  0xc2c2, 0x0a69,
-  0xc2c5, 0x2050,
-  0xc2c8, 0x0a6f,
-  0xc2cb, 0x2053,
-  0xc2d1, 0x0a78,
-  0xc2d2, 0x2059,
-  0xc2d3, 0x0a7a,
-  0xc2d5, 0x205a,
-  0xc2dd, 0x0a84,
-  0xc2de, 0x2062,
-  0xc2e3, 0x0a8a,
-  0xc2e6, 0x2067,
-  0xc2e9, 0x0a90,
-  0xc2ea, 0x206a,
-  0xc2ef, 0x0a96,
-  0xc2f0, 0x206f,
-  0xc2f1, 0x0a98,
-  0xc2f2, 0x2070,
-  0xc2f6, 0x0a9d,
-  0xc2f7, 0x2074,
-  0xc2fb, 0x0aa2,
-  0xc3a1, 0x2078,
-  0xc3a2, 0x0aa7,
-  0xc3aa, 0x2079,
-  0xc3ab, 0x0ab0,
-  0xc3ad, 0x207a,
-  0xc3ae, 0x0ab3,
-  0xc3b3, 0x207b,
-  0xc3b4, 0x1df9,
-  0xc3b5, 0x0aba,
-  0xc3be, 0x207c,
-  0xc3bf, 0x0ac4,
-  0xc3c5, 0x207d,
-  0xc3c8, 0x0acd,
-  0xc3cc, 0x2080,
-  0xc3cd, 0x0ad2,
-  0xc3ce, 0x2081,
-  0xc3cf, 0x0ad4,
-  0xc3d5, 0x2082,
-  0xc3d7, 0x0adc,
-  0xc3d9, 0x2084,
-  0xc3da, 0x0adf,
-  0xc3e0, 0x2085,
-  0xc3e1, 0x0ae6,
-  0xc3e5, 0x2086,
-  0xc3e6, 0x0aeb,
-  0xc3ed, 0x2087,
-  0xc3ee, 0x0af3,
-  0xc3f0, 0x2088,
-  0xc3f1, 0x0af6,
-  0xc3f5, 0x2089,
-  0xc3f7, 0x0afc,
-  0xc3f9, 0x208b,
-  0xc3fb, 0x0b00,
-  0xc3fd, 0x208d,
-  0xc3fe, 0x0b03,
-  0xc4a1, 0x0b04,
-  0xc4b1, 0x208e,
-  0xc4b2, 0x0b15,
-  0xc4b6, 0x208f,
-  0xc4b7, 0x0b1a,
-  0xc4c6, 0x2090,
-  0xc4c7, 0x0b2a,
-  0xc4c9, 0x2091,
-  0xc4ca, 0x0b2d,
-  0xc4d1, 0x2092,
-  0xc4d2, 0x0b35,
-  0xc4d3, 0x2093,
-  0xc4d7, 0x0b3a,
-  0xc4d9, 0x2097,
-  0xc4da, 0x0b3d,
-  0xc4e2, 0x2098,
-  0xc4e3, 0x0b46,
-  0xc4e5, 0x2099,
-  0xc4e6, 0x0b49,
-  0xc4ec, 0x209a,
-  0xc4ed, 0x0b50,
-  0xc4f0, 0x209b,
-  0xc4f2, 0x0b55,
-  0xc4f4, 0x209d,
-  0xc4f5, 0x0b58,
-  0xc4f6, 0x209e,
-  0xc4f9, 0x0b5c,
-  0xc4fb, 0x20a1,
-  0xc4fd, 0x0b60,
-  0xc4fe, 0x20a3,
-  0xc5a1, 0x20a4,
-  0xc5a3, 0x0b64,
-  0xc5a5, 0x20a6,
-  0xc5aa, 0x0b6b,
-  0xc5b1, 0x20ab,
-  0xc5b2, 0x0b73,
-  0xc5b5, 0x20ac,
-  0xc5b6, 0x0b77,
-  0xc5b7, 0x20ad,
-  0xc5ba, 0x0b7b,
-  0xc5bb, 0x20b0,
-  0xc5bc, 0x0b7d,
-  0xc5bd, 0x20b1,
-  0xc5be, 0x0b7f,
-  0xc5cc, 0x20b2,
-  0xc5cd, 0x0b8e,
-  0xc5d3, 0x20b3,
-  0xc5d4, 0x0b95,
-  0xc5e2, 0x20b4,
-  0xc5e3, 0x0ba4,
-  0xc5e7, 0x20b5,
-  0xc5e8, 0x0ba9,
-  0xc5f4, 0x20b6,
-  0xc5f5, 0x0bb6,
-  0xc6a1, 0x0bc0,
-  0xc6ad, 0x20b7,
-  0xc6af, 0x0bce,
-  0xc6b5, 0x20b9,
-  0xc6b7, 0x0bd6,
-  0xc6bb, 0x20bb,
-  0xc6bc, 0x0bdb,
-  0xc6be, 0x20bc,
-  0xc6bf, 0x0bde,
-  0xc6c0, 0x20bd,
-  0xc6c1, 0x0be0,
-  0xc6c3, 0x20be,
-  0xc6c5, 0x0be4,
-  0xc6cb, 0x20c0,
-  0xc6ce, 0x0bed,
-  0xc6d3, 0x20c3,
-  0xc6d4, 0x0bf3,
-  0xc6d7, 0x20c4,
-  0xc6d8, 0x0bf7,
-  0xc6ea, 0x20c5,
-  0xc6ec, 0x0c0b,
-  0xc6ef, 0x20c7,
-  0xc6f0, 0x0c0f,
-  0xc6f1, 0x20c8,
-  0xc6f2, 0x0c11,
-  0xc6f4, 0x20c9,
-  0xc6f5, 0x0c14,
-  0xc6f8, 0x20ca,
-  0xc6f9, 0x0c18,
-  0xc6fd, 0x20cb,
-  0xc6fe, 0x0c1d,
-  0xc7a1, 0x0c1e,
-  0xc7a3, 0x20cc,
-  0xc7a4, 0x0c21,
-  0xc7a5, 0x20cd,
-  0xc7a7, 0x0c24,
-  0xc7a8, 0x20cf,
-  0xc7aa, 0x0c27,
-  0xc7ab, 0x20d1,
-  0xc7ac, 0x0c29,
-  0xc7ae, 0x20d2,
-  0xc7b0, 0x0c2d,
-  0xc7b3, 0x20d4,
-  0xc7b6, 0x0c33,
-  0xc7b9, 0x20d7,
-  0xc7bb, 0x0c38,
-  0xc7bd, 0x20d9,
-  0xc7bf, 0x0c3c,
-  0xc7c0, 0x20db,
-  0xc7c1, 0x0c3e,
-  0xc7c2, 0x20dc,
-  0xc7c3, 0x0c40,
-  0xc7c5, 0x20dd,
-  0xc7c6, 0x0c43,
-  0xc7c7, 0x20de,
-  0xc7c9, 0x0c46,
-  0xc7cc, 0x20e0,
-  0xc7cd, 0x0c4a,
-  0xc7cf, 0x20e1,
-  0xc7d0, 0x0c4d,
-  0xc7d4, 0x20e2,
-  0xc7d6, 0x0c53,
-  0xc7d7, 0x20e4,
-  0xc7d8, 0x0c55,
-  0xc7de, 0x20e5,
-  0xc7df, 0x0c5c,
-  0xc7e1, 0x20e6,
-  0xc7e4, 0x0c61,
-  0xc7ea, 0x20e9,
-  0xc7ef, 0x0c6c,
-  0xc7f7, 0x20ee,
-  0xc7f9, 0x0c76,
-  0xc7fb, 0x20f0,
-  0xc7fc, 0x0c79,
-  0xc7fd, 0x20f1,
-  0xc7fe, 0x0c7b,
-  0xc8a1, 0x0c7c,
-  0xc8a3, 0x20f2,
-  0xc8a4, 0x0c7f,
-  0xc8a7, 0x20f3,
-  0xc8a9, 0x0c84,
-  0xc8b0, 0x20f5,
-  0xc8b1, 0x0c8c,
-  0xc8b5, 0x20f6,
-  0xc8b6, 0x0c91,
-  0xc8b7, 0x20f7,
-  0xc8b8, 0x0c93,
-  0xc8c3, 0x20f8,
-  0xc8c7, 0x0ca2,
-  0xc8c8, 0x20fc,
-  0xc8c9, 0x0ca4,
-  0xc8cd, 0x20fd,
-  0xc8ce, 0x0ca9,
-  0xc8cf, 0x20fe,
-  0xc8d0, 0x0cab,
-  0xc8d2, 0x20ff,
-  0xc8d3, 0x0cae,
-  0xc8d9, 0x2100,
-  0xc8da, 0x0cb5,
-  0xc8de, 0x2101,
-  0xc8df, 0x0cba,
-  0xc8ed, 0x2102,
-  0xc8ee, 0x0cc9,
-  0xc8f1, 0x2103,
-  0xc8f4, 0x0ccf,
-  0xc8f7, 0x2106,
-  0xc8f9, 0x0cd4,
-  0xc8fa, 0x2108,
-  0xc8fb, 0x0cd6,
-  0xc8fc, 0x2109,
-  0xc8fd, 0x0cd8,
-  0xc9a1, 0x210a,
-  0xc9a2, 0x0cdb,
-  0xc9a5, 0x210b,
-  0xc9a6, 0x0cdf,
-  0xc9a7, 0x210c,
-  0xc9a9, 0x0ce2,
-  0xc9ac, 0x210e,
-  0xc9ad, 0x0ce6,
-  0xc9b1, 0x210f,
-  0xc9b2, 0x0ceb,
-  0xc9b4, 0x2110,
-  0xc9b5, 0x0cee,
-  0xc9b8, 0x2111,
-  0xc9ba, 0x0cf3,
-  0xc9c1, 0x2113,
-  0xc9c3, 0x0cfc,
-  0xc9c4, 0x2115,
-  0xc9c5, 0x0cfe,
-  0xc9c9, 0x2116,
-  0xc9ca, 0x0d03,
-  0xc9cb, 0x2117,
-  0xc9cc, 0x0d05,
-  0xc9cd, 0x2118,
-  0xc9ce, 0x0d07,
-  0xc9d5, 0x2119,
-  0xc9d6, 0x0d0f,
-  0xc9dc, 0x211a,
-  0xc9dd, 0x0d16,
-  0xc9de, 0x211b,
-  0xc9df, 0x0d18,
-  0xc9e1, 0x211c,
-  0xc9e2, 0x0d1b,
-  0xc9e3, 0x211d,
-  0xc9e4, 0x0d1d,
-  0xc9e5, 0x211e,
-  0xc9e6, 0x0d1f,
-  0xc9e8, 0x211f,
-  0xc9e9, 0x0d22,
-  0xc9f0, 0x2120,
-  0xc9f1, 0x0d2a,
-  0xc9f3, 0x2121,
-  0xc9f5, 0x0d2e,
-  0xc9f6, 0x2123,
-  0xc9f7, 0x0d30,
-  0xc9f8, 0x2124,
-  0xc9fa, 0x0d33,
-  0xc9fe, 0x2126,
-  0xcaa1, 0x0d38,
-  0xcaa4, 0x2127,
-  0xcaa7, 0x0d3e,
-  0xcaa8, 0x212a,
-  0xcaa9, 0x0d40,
-  0xcaaa, 0x212b,
-  0xcaac, 0x0d43,
-  0xcab1, 0x212d,
-  0xcab2, 0x0d49,
-  0xcab4, 0x212e,
-  0xcab7, 0x0d4e,
-  0xcabb, 0x2131,
-  0xcabc, 0x0d53,
-  0xcac6, 0x2132,
-  0xcac7, 0x0d5e,
-  0xcaca, 0x2133,
-  0xcacb, 0x0d62,
-  0xcacd, 0x2134,
-  0xcacf, 0x0d66,
-  0xcad3, 0x2136,
-  0xcad5, 0x0d6c,
-  0xcad9, 0x2138,
-  0xcada, 0x0d71,
-  0xcade, 0x2139,
-  0xcadf, 0x0d76,
-  0xcae0, 0x213a,
-  0xcae1, 0x0d78,
-  0xcae4, 0x213b,
-  0xcae5, 0x0d7c,
-  0xcae9, 0x213c,
-  0xcaeb, 0x0d82,
-  0xcaf4, 0x213e,
-  0xcaf6, 0x0d8d,
-  0xcaf7, 0x2140,
-  0xcaf8, 0x0d8f,
-  0xcafa, 0x2141,
-  0xcafb, 0x0d92,
-  0xcafd, 0x2142,
-  0xcafe, 0x0d95,
-  0xcba1, 0x0d96,
-  0xcba7, 0x2143,
-  0xcba8, 0x0d9d,
-  0xcbab, 0x2144,
-  0xcbac, 0x0da1,
-  0xcbad, 0x2145,
-  0xcbae, 0x0da3,
-  0xcbb3, 0x2146,
-  0xcbb4, 0x0da9,
-  0xcbb5, 0x2147,
-  0xcbb7, 0x0dac,
-  0xcbb8, 0x2149,
-  0xcbb9, 0x0dae,
-  0xcbbf, 0x214a,
-  0xcbc0, 0x0db5,
-  0xcbc7, 0x214b,
-  0xcbc8, 0x0dbd,
-  0xcbc9, 0x214c,
-  0xcbcd, 0x0dc2,
-  0xcbcf, 0x2150,
-  0xcbd1, 0x0dc6,
-  0xcbd3, 0x2152,
-  0xcbd4, 0x0dc9,
-  0xcbd5, 0x2153,
-  0xcbd6, 0x0dcb,
-  0xcbdf, 0x2154,
-  0xcbe1, 0x0dd6,
-  0xcbe4, 0x2156,
-  0xcbe5, 0x0dda,
-  0xcbe6, 0x2157,
-  0xcbe8, 0x0ddd,
-  0xcbea, 0x2159,
-  0xcbeb, 0x0de0,
-  0xcbef, 0x215a,
-  0xcbf1, 0x0de6,
-  0xcbf5, 0x215c,
-  0xcbf7, 0x0dec,
-  0xcbf8, 0x215e,
-  0xcbf9, 0x0dee,
-  0xcca1, 0x215f,
-  0xcca3, 0x0df6,
-  0xcca8, 0x2161,
-  0xcca9, 0x0dfc,
-  0xccac, 0x2162,
-  0xccad, 0x0e00,
-  0xccaf, 0x2163,
-  0xccb4, 0x0e07,
-  0xccb7, 0x2168,
-  0xccb9, 0x0e0c,
-  0xccbe, 0x216a,
-  0xccbf, 0x0e12,
-  0xccc0, 0x216b,
-  0xccc1, 0x0e14,
-  0xcccc, 0x216c,
-  0xcccd, 0x0e20,
-  0xccce, 0x216d,
-  0xcccf, 0x0e22,
-  0xccd0, 0x216e,
-  0xccd1, 0x0e24,
-  0xccd6, 0x216f,
-  0xccd7, 0x0e2a,
-  0xccda, 0x2170,
-  0xccdb, 0x0e2e,
-  0xccdc, 0x2171,
-  0xccdd, 0x0e30,
-  0xcce0, 0x2172,
-  0xcce1, 0x0e34,
-  0xcce2, 0x2173,
-  0xcce3, 0x0e36,
-  0xcce5, 0x2174,
-  0xcce6, 0x0e39,
-  0xccf5, 0x2175,
-  0xccf6, 0x0e49,
-  0xccf9, 0x2176,
-  0xccfb, 0x0e4e,
-  0xccfc, 0x2178,
-  0xcda1, 0x0e52,
-  0xcdad, 0x217b,
-  0xcdae, 0x0e5f,
-  0xcdb3, 0x217c,
-  0xcdb4, 0x0e65,
-  0xcdb7, 0x217d,
-  0xcdb8, 0x0e69,
-  0xcdbc, 0x217e,
-  0xcdbd, 0x0e6e,
-  0xcdbf, 0x217f,
-  0xcdc0, 0x0e71,
-  0xcdc5, 0x2180,
-  0xcdc6, 0x0e77,
-  0xcdc7, 0x2181,
-  0xcdc8, 0x0e79,
-  0xcdd2, 0x2182,
-  0xcdd3, 0x0e84,
-  0xcdd4, 0x2183,
-  0xcdd7, 0x0e88,
-  0xcddd, 0x2186,
-  0xcdde, 0x0e8f,
-  0xcde0, 0x2187,
-  0xcde1, 0x0e92,
-  0xcde4, 0x2188,
-  0xcde6, 0x0e97,
-  0xcde7, 0x218a,
-  0xcde8, 0x0e99,
-  0xcdf2, 0x218b,
-  0xcdf3, 0x0ea4,
-  0xcdf8, 0x218c,
-  0xcdf9, 0x0eaa,
-  0xcea1, 0x0eb0,
-  0xcea4, 0x218d,
-  0xcea6, 0x0eb5,
-  0xcea7, 0x218f,
-  0xcea8, 0x0eb7,
-  0xceaa, 0x2190,
-  0xceae, 0x0ebd,
-  0xceb0, 0x2194,
-  0xceb2, 0x0ec1,
-  0xceb3, 0x2196,
-  0xceb4, 0x0ec3,
-  0xcebd, 0x2197,
-  0xcebe, 0x0ecd,
-  0xcec0, 0x2198,
-  0xcec1, 0x0ed0,
-  0xcec5, 0x2199,
-  0xcec7, 0x0ed6,
-  0xcec8, 0x219b,
-  0xcec9, 0x0ed8,
-  0xceca, 0x219c,
-  0xcecb, 0x0eda,
-  0xcece, 0x219d,
-  0xced2, 0x0ee1,
-  0xced8, 0x21a1,
-  0xcedb, 0x0eea,
-  0xcedc, 0x21a4,
-  0xcedd, 0x0eec,
-  0xcede, 0x21a5,
-  0xcee0, 0x0eef,
-  0xceeb, 0x21a7,
-  0xceec, 0x0efb,
-  0xceed, 0x21a8,
-  0xceee, 0x0efd,
-  0xcef1, 0x21a9,
-  0xcef2, 0x0f01,
-  0xcef3, 0x21aa,
-  0xcef4, 0x0f03,
-  0xcefd, 0x21ab,
-  0xcfa1, 0x0f0e,
-  0xcfae, 0x21ad,
-  0xcfaf, 0x0f1c,
-  0xcfb0, 0x21ae,
-  0xcfb1, 0x0f1e,
-  0xcfb3, 0x21af,
-  0xcfb4, 0x0f21,
-  0xcfb7, 0x21b0,
-  0xcfb9, 0x0f26,
-  0xcfba, 0x21b2,
-  0xcfbb, 0x0f28,
-  0xcfbd, 0x21b3,
-  0xcfbe, 0x0f2b,
-  0xcfbf, 0x21b4,
-  0xcfc2, 0x0f2f,
-  0xcfc5, 0x21b7,
-  0xcfc6, 0x0f33,
-  0xcfc7, 0x21b8,
-  0xcfc8, 0x0f35,
-  0xcfca, 0x21b9,
-  0xcfcc, 0x0f39,
-  0xcfcd, 0x21bb,
-  0xcfcf, 0x0f3c,
-  0xcfd0, 0x21bd,
-  0xcfd1, 0x0f3e,
-  0xcfd4, 0x21be,
-  0xcfd9, 0x0f46,
-  0xcfda, 0x21c3,
-  0xcfdb, 0x0f48,
-  0xcfdc, 0x21c4,
-  0xcfdd, 0x0f4a,
-  0xcfdf, 0x21c5,
-  0xcfe0, 0x0f4d,
-  0xcfe2, 0x21c6,
-  0xcfe3, 0x0f50,
-  0xcfe7, 0x21c7,
-  0xcfe8, 0x0f55,
-  0xcfea, 0x21c8,
-  0xcfeb, 0x0f58,
-  0xcfec, 0x21c9,
-  0xcfed, 0x0f5a,
-  0xcfee, 0x21ca,
-  0xcfef, 0x0f5c,
-  0xcff4, 0x21cb,
-  0xcff5, 0x0f62,
-  0xcff9, 0x21cc,
-  0xcffb, 0x0f68,
-  0xcffe, 0x21ce,
-  0xd0a1, 0x0f6c,
-  0xd0a5, 0x21cf,
-  0xd0a6, 0x0f71,
-  0xd0ad, 0x21d0,
-  0xd0af, 0x0f7a,
-  0xd0b2, 0x21d2,
-  0xd0b5, 0x0f80,
-  0xd0ba, 0x21d5,
-  0xd0bc, 0x0f87,
-  0xd0bf, 0x21d7,
-  0xd0c0, 0x0f8b,
-  0xd0c6, 0x21d8,
-  0xd0c7, 0x0f92,
-  0xd0cb, 0x21d9,
-  0xd0cc, 0x0f97,
-  0xd0e2, 0x21da,
-  0xd0e3, 0x0fae,
-  0xd0e5, 0x21db,
-  0xd0e6, 0x0fb1,
-  0xd0eb, 0x21dc,
-  0xd0ec, 0x0fb7,
-  0xd0ed, 0x21dd,
-  0xd0ee, 0x0fb9,
-  0xd0f7, 0x21de,
-  0xd0fa, 0x0fc5,
-  0xd0fc, 0x21e1,
-  0xd0fd, 0x0fc8,
-  0xd1a1, 0x21e2,
-  0xd1a3, 0x0fcc,
-  0xd1a4, 0x21e4,
-  0xd1a5, 0x0fce,
-  0xd1a7, 0x21e5,
-  0xd1a8, 0x0fd1,
-  0xd1ab, 0x21e6,
-  0xd1ac, 0x0fd5,
-  0xd1af, 0x21e7,
-  0xd1b2, 0x0fdb,
-  0xd1b5, 0x21ea,
-  0xd1b8, 0x0fe1,
-  0xd1b9, 0x21ed,
-  0xd1ba, 0x0fe3,
-  0xd1bb, 0x21ee,
-  0xd1bd, 0x0fe6,
-  0xd1c6, 0x21f0,
-  0xd1c9, 0x0ff2,
-  0xd1cb, 0x21f3,
-  0xd1cc, 0x0ff5,
-  0xd1ce, 0x21f4,
-  0xd1d0, 0x0ff9,
-  0xd1d5, 0x21f6,
-  0xd1d7, 0x1000,
-  0xd1de, 0x21f8,
-  0xd1df, 0x1008,
-  0xd1e1, 0x21f9,
-  0xd1e3, 0x100c,
-  0xd1e8, 0x21fb,
-  0xd1ea, 0x1013,
-  0xd1ec, 0x21fd,
-  0xd1ed, 0x1016,
-  0xd1ee, 0x21fe,
-  0xd1f0, 0x1019,
-  0xd1f1, 0x2200,
-  0xd1f2, 0x101b,
-  0xd1f4, 0x2201,
-  0xd1f5, 0x101e,
-  0xd1f7, 0x2202,
-  0xd1fa, 0x1023,
-  0xd2a1, 0x1028,
-  0xd2a2, 0x2205,
-  0xd2a3, 0x102a,
-  0xd2a5, 0x2206,
-  0xd2a6, 0x102d,
-  0xd2a9, 0x2207,
-  0xd2aa, 0x1031,
-  0xd2af, 0x2208,
-  0xd2b0, 0x1037,
-  0xd2b3, 0x2209,
-  0xd2b4, 0x103b,
-  0xd2b5, 0x220a,
-  0xd2b7, 0x103e,
-  0xd2bd, 0x220c,
-  0xd2be, 0x1045,
-  0xd2bf, 0x220d,
-  0xd2c0, 0x1047,
-  0xd2c3, 0x220e,
-  0xd2c4, 0x104b,
-  0xd2c5, 0x220f,
-  0xd2c6, 0x104d,
-  0xd2c7, 0x2210,
-  0xd2c8, 0x104f,
-  0xd2cf, 0x2211,
-  0xd2d0, 0x1057,
-  0xd2d5, 0x2212,
-  0xd2d6, 0x105d,
-  0xd2da, 0x2213,
-  0xd2db, 0x1062,
-  0xd2e4, 0x2214,
-  0xd2e6, 0x106d,
-  0xd2e8, 0x2216,
-  0xd2ec, 0x1073,
-  0xd2ef, 0x221a,
-  0xd2f0, 0x1077,
-  0xd2f1, 0x221b,
-  0xd2f2, 0x1079,
-  0xd2f5, 0x221c,
-  0xd2f6, 0x107d,
-  0xd2f8, 0x221d,
-  0xd2f9, 0x1080,
-  0xd2fb, 0x221e,
-  0xd2fc, 0x1083,
-  0xd2fe, 0x221f,
-  0xd3a1, 0x1086,
-  0xd3a3, 0x2220,
-  0xd3ad, 0x1092,
-  0xd3ae, 0x222a,
-  0xd3af, 0x1094,
-  0xd3b1, 0x222b,
-  0xd3b2, 0x1097,
-  0xd3b4, 0x222c,
-  0xd3b7, 0x109c,
-  0xd3b8, 0x222f,
-  0xd3b9, 0x109e,
-  0xd3bb, 0x2230,
-  0xd3bc, 0x10a1,
-  0xd3c5, 0x2231,
-  0xd3c6, 0x10ab,
-  0xd3c7, 0x2232,
-  0xd3c8, 0x10ad,
-  0xd3ca, 0x2233,
-  0xd3cd, 0x10b2,
-  0xd3d5, 0x2236,
-  0xd3d6, 0x10bb,
-  0xd3df, 0x2237,
-  0xd3e1, 0x10c6,
-  0xd3e3, 0x2239,
-  0xd3e4, 0x10c9,
-  0xd3e6, 0x223a,
-  0xd3e7, 0x10cc,
-  0xd3eb, 0x223b,
-  0xd3ed, 0x10d2,
-  0xd3ef, 0x223d,
-  0xd3f0, 0x10d5,
-  0xd3f4, 0x223e,
-  0xd3f5, 0x10da,
-  0xd3fc, 0x223f,
-  0xd3fd, 0x10e2,
-  0xd3fe, 0x2240,
-  0xd4a1, 0x10e4,
-  0xd4a4, 0x2241,
-  0xd4a5, 0x10e8,
-  0xd4a6, 0x2242,
-  0xd4a9, 0x10ec,
-  0xd4af, 0x2245,
-  0xd4b3, 0x10f6,
-  0xd4b5, 0x2249,
-  0xd4b7, 0x10fa,
-  0xd4b8, 0x224b,
-  0xd4b9, 0x10fc,
-  0xd4bc, 0x224c,
-  0xd4bd, 0x1100,
-  0xd4be, 0x224d,
-  0xd4c0, 0x1103,
-  0xd4c4, 0x224f,
-  0xd4c5, 0x1108,
-  0xd4c6, 0x2250,
-  0xd4c8, 0x110b,
-  0xd4c9, 0x2252,
-  0xd4ca, 0x110d,
-  0xd4cb, 0x2253,
-  0xd4cf, 0x1112,
-  0xd4d3, 0x2257,
-  0xd4d4, 0x1117,
-  0xd4d8, 0x2258,
-  0xd4d9, 0x111c,
-  0xd4dc, 0x2259,
-  0xd4e1, 0x1124,
-  0xd4e4, 0x225e,
-  0xd4e5, 0x1128,
-  0xd4e6, 0x225f,
-  0xd4e7, 0x112a,
-  0xd4ee, 0x2260,
-  0xd4ef, 0x1132,
-  0xd4f0, 0x2261,
-  0xd4f5, 0x1138,
-  0xd4f9, 0x2266,
-  0xd4fa, 0x113d,
-  0xd4fe, 0x2267,
-  0xd5a1, 0x2268,
-  0xd5a3, 0x1144,
-  0xd5a9, 0x226a,
-  0xd5aa, 0x114b,
-  0xd5ab, 0x226b,
-  0xd5ac, 0x114d,
-  0xd5ae, 0x226c,
-  0xd5af, 0x1150,
-  0xd5b1, 0x226d,
-  0xd5b2, 0x1153,
-  0xd5b5, 0x226e,
-  0xd5b9, 0x115a,
-  0xd5bb, 0x2272,
-  0xd5bc, 0x115d,
-  0xd5bd, 0x2273,
-  0xd5be, 0x115f,
-  0xd5c0, 0x2274,
-  0xd5c1, 0x1162,
-  0xd5c5, 0x2275,
-  0xd5c6, 0x1167,
-  0xd5c7, 0x2276,
-  0xd5c8, 0x1169,
-  0xd5ca, 0x2277,
-  0xd5cc, 0x116d,
-  0xd5cd, 0x2279,
-  0xd5ce, 0x116f,
-  0xd5d4, 0x227a,
-  0xd5d5, 0x1176,
-  0xd5dd, 0x227b,
-  0xd5df, 0x1180,
-  0xd5e0, 0x227d,
-  0xd5e1, 0x1182,
-  0xd5e2, 0x227e,
-  0xd5e3, 0x1184,
-  0xd5ea, 0x227f,
-  0xd5ed, 0x118e,
-  0xd5ef, 0x2282,
-  0xd5f0, 0x1191,
-  0xd5f2, 0x2283,
-  0xd5f4, 0x1195,
-  0xd5f7, 0x15eb,
-  0xd5f8, 0x1199,
-  0xd6a1, 0x2285,
-  0xd6a5, 0x11a4,
-  0xd6af, 0x2289,
-  0xd6b1, 0x11b0,
-  0xd6b4, 0x228b,
-  0xd6b5, 0x11b4,
-  0xd6bb, 0x228c,
-  0xd6bc, 0x11bb,
-  0xd6bd, 0x228d,
-  0xd6be, 0x11bd,
-  0xd6bf, 0x228e,
-  0xd6c1, 0x11c0,
-  0xd6c4, 0x2290,
-  0xd6c5, 0x11c4,
-  0xd6ca, 0x2291,
-  0xd6cb, 0x11ca,
-  0xd6cd, 0x2292,
-  0xd6ce, 0x11cd,
-  0xd6d3, 0x2293,
-  0xd6d4, 0x11d3,
-  0xd6d5, 0x2294,
-  0xd6d8, 0x11d7,
-  0xd6da, 0x2297,
-  0xd6db, 0x11da,
-  0xd6df, 0x2298,
-  0xd6e0, 0x11df,
-  0xd6e1, 0x2299,
-  0xd6e2, 0x11e1,
-  0xd6e5, 0x229a,
-  0xd6e6, 0x11e5,
-  0xd6e7, 0x229b,
-  0xd6e9, 0x11e8,
-  0xd6ee, 0x229d,
-  0xd6f0, 0x11ef,
-  0xd6f2, 0x229f,
-  0xd6f3, 0x11f2,
-  0xd6f5, 0x22a0,
-  0xd6f7, 0x11f6,
-  0xd6fc, 0x22a2,
-  0xd7a1, 0x11fe,
-  0xd7a4, 0x22a5,
-  0xd7a5, 0x1202,
-  0xd7a8, 0x22a6,
-  0xd7ab, 0x1208,
-  0xd7ac, 0x22a9,
-  0xd7ad, 0x120a,
-  0xd7ae, 0x22aa,
-  0xd7b2, 0x120f,
-  0xd7b3, 0x22ae,
-  0xd7b5, 0x1212,
-  0xd7b6, 0x22b0,
-  0xd7b7, 0x1214,
-  0xd7b8, 0x22b1,
-  0xd7bd, 0x121a,
-  0xd7c7, 0x22b6,
-  0xd7c8, 0x1225,
-  0xd7ca, 0x22b7,
-  0xd7cb, 0x1228,
-  0xd7d5, 0x22b8,
-  0xd7d6, 0x1233,
-  0xd7db, 0x22b9,
-  0xd7df, 0x123c,
-  0xd7e7, 0x22bd,
-  0xd7e8, 0x1245,
-  0xd7e9, 0x22be,
-  0xd7eb, 0x1248,
-  0xd8a1, 0x1257,
-  0xd8c4, 0x22c0,
-  0xd8c5, 0x127b,
-  0xd8c7, 0x22c1,
-  0xd8c8, 0x127e,
-  0xd8c9, 0x22c2,
-  0xd8ca, 0x1280,
-  0xd8cc, 0x22c3,
-  0xd8ce, 0x1284,
-  0xd8d0, 0x22c5,
-  0xd8d2, 0x1288,
-  0xd8d3, 0x22c7,
-  0xd8d4, 0x128a,
-  0xd8d9, 0x22c8,
-  0xd8da, 0x1290,
-  0xd8db, 0x22c9,
-  0xd8dd, 0x1293,
-  0xd8f1, 0x22cb,
-  0xd8f2, 0x12a8,
-  0xd8f6, 0x22cc,
-  0xd8f8, 0x12ae,
-  0xd9a1, 0x12b5,
-  0xd9ad, 0x22ce,
-  0xd9ae, 0x12c2,
-  0xd9af, 0x22cf,
-  0xd9b0, 0x12c4,
-  0xd9b1, 0x22d0,
-  0xd9b4, 0x12c8,
-  0xd9c7, 0x22d3,
-  0xd9c8, 0x12dc,
-  0xd9cd, 0x22d4,
-  0xd9d1, 0x12e5,
-  0xd9dd, 0x22d8,
-  0xd9de, 0x12f2,
-  0xd9e1, 0x22d9,
-  0xd9e2, 0x12f6,
-  0xd9e4, 0x22da,
-  0xd9e5, 0x12f9,
-  0xd9e6, 0x22db,
-  0xd9e7, 0x12fb,
-  0xd9ec, 0x22dc,
-  0xd9ed, 0x1301,
-  0xd9f4, 0x22dd,
-  0xd9f6, 0x130a,
-  0xdaa1, 0x1313,
-  0xdaa5, 0x22df,
-  0xdae0, 0x1352,
-  0xdaea, 0x231a,
-  0xdaeb, 0x135d,
-  0xdaf7, 0x231b,
-  0xdaf8, 0x136a,
-  0xdaf9, 0x231c,
-  0xdafa, 0x136c,
-  0xdafe, 0x231d,
-  0xdba1, 0x1371,
-  0xdba3, 0x231e,
-  0xdba4, 0x1374,
-  0xdba6, 0x231f,
-  0xdba7, 0x1377,
-  0xdba9, 0x2320,
-  0xdbab, 0x137b,
-  0xdbbb, 0x2322,
-  0xdbbc, 0x138c,
-  0xdbbd, 0x2323,
-  0xdbbe, 0x138e,
-  0xdbcf, 0x2324,
-  0xdbd0, 0x13a0,
-  0xdbd1, 0x2325,
-  0xdbd2, 0x13a2,
-  0xdbdb, 0x2326,
-  0xdbdc, 0x13ac,
-  0xdbde, 0x2327,
-  0xdbdf, 0x13af,
-  0xdbe2, 0x2328,
-  0xdbe3, 0x13b3,
-  0xdbe4, 0x2329,
-  0xdbe5, 0x13b5,
-  0xdbeb, 0x232a,
-  0xdbec, 0x13bc,
-  0xdbee, 0x232b,
-  0xdbef, 0x13bf,
-  0xdbf1, 0x232c,
-  0xdbf2, 0x13c2,
-  0xdbf5, 0x232d,
-  0xdbf8, 0x13c8,
-  0xdca1, 0x13cf,
-  0xdcbc, 0x2330,
-  0xdcbd, 0x13eb,
-  0xdcbf, 0x2331,
-  0xdcc0, 0x13ee,
-  0xdcc2, 0x2332,
-  0xdcc3, 0x13f1,
-  0xdcc8, 0x2333,
-  0xdccb, 0x13f9,
-  0xdcd1, 0x2336,
-  0xdcd2, 0x1400,
-  0xdcd7, 0x2337,
-  0xdcd8, 0x1406,
-  0xdce0, 0x2338,
-  0xdce1, 0x140f,
-  0xdce3, 0x2339,
-  0xdce5, 0x1413,
-  0xdce9, 0x233b,
-  0xdceb, 0x1419,
-  0xdcf1, 0x233d,
-  0xdcf2, 0x1420,
-  0xdcf6, 0x233e,
-  0xdcf7, 0x1425,
-  0xdcf9, 0x233f,
-  0xdcfa, 0x1428,
-  0xdcfd, 0x2340,
-  0xdda1, 0x2342,
-  0xdda2, 0x142e,
-  0xdda3, 0x2343,
-  0xdda8, 0x1434,
-  0xddaa, 0x2348,
-  0xddac, 0x1438,
-  0xddb2, 0x234a,
-  0xddb3, 0x143f,
-  0xddb5, 0x234b,
-  0xddb6, 0x1442,
-  0xddba, 0x234c,
-  0xddbc, 0x1448,
-  0xddd3, 0x234e,
-  0xddd4, 0x1460,
-  0xdddb, 0x234f,
-  0xdddc, 0x1468,
-  0xddde, 0x2350,
-  0xdddf, 0x146b,
-  0xdde4, 0x2351,
-  0xdde5, 0x1471,
-  0xddeb, 0x2352,
-  0xddec, 0x1478,
-  0xddf1, 0x2353,
-  0xddf2, 0x147e,
-  0xddf6, 0x2354,
-  0xddf8, 0x1484,
-  0xddfc, 0x2356,
-  0xddfd, 0x1489,
-  0xddfe, 0x2357,
-  0xdea1, 0x148b,
-  0xdead, 0x2358,
-  0xdeae, 0x1498,
-  0xdeb4, 0x2359,
-  0xdeb5, 0x149f,
-  0xdeba, 0x235a,
-  0xdebb, 0x14a5,
-  0xdec6, 0x235b,
-  0xdec7, 0x14b1,
-  0xdecf, 0x235c,
-  0xded0, 0x14ba,
-  0xded1, 0x235d,
-  0xded3, 0x14bd,
-  0xded8, 0x235f,
-  0xded9, 0x14c3,
-  0xdee2, 0x2360,
-  0xdee3, 0x14cd,
-  0xdee8, 0x2361,
-  0xdee9, 0x14d3,
-  0xdeec, 0x2362,
-  0xdeed, 0x14d7,
-  0xdef3, 0x2363,
-  0xdef4, 0x14de,
-  0xdefc, 0x2364,
-  0xdefd, 0x14e7,
-  0xdfa1, 0x14e9,
-  0xdfa2, 0x2365,
-  0xdfa4, 0x14ec,
-  0xdfa5, 0x2367,
-  0xdfa6, 0x14ee,
-  0xdfb4, 0x2368,
-  0xdfb5, 0x14fd,
-  0xdfbc, 0x2369,
-  0xdfbe, 0x1506,
-  0xdfbf, 0x236b,
-  0xdfc0, 0x1508,
-  0xdfc2, 0x236c,
-  0xdfc4, 0x150c,
-  0xdfcc, 0x236e,
-  0xdfcd, 0x1515,
-  0xdfd0, 0x236f,
-  0xdfd1, 0x1519,
-  0xdfd5, 0x2370,
-  0xdfd6, 0x151e,
-  0xdfd8, 0x2371,
-  0xdfda, 0x1522,
-  0xdfdc, 0x2373,
-  0xdfdd, 0x1525,
-  0xdfe0, 0x2374,
-  0xdfe1, 0x1529,
-  0xdfe2, 0x2375,
-  0xdfe3, 0x152b,
-  0xdfe6, 0x2376,
-  0xdfe7, 0x152f,
-  0xdfe9, 0x2377,
-  0xdfea, 0x1532,
-  0xdfeb, 0x2378,
-  0xdfec, 0x1534,
-  0xdfef, 0x2379,
-  0xdff0, 0x1538,
-  0xdff5, 0x237a,
-  0xdff6, 0x153e,
-  0xdff9, 0x237b,
-  0xdffa, 0x1542,
-  0xe0a1, 0x1547,
-  0xe0b6, 0x237c,
-  0xe0b8, 0x155e,
-  0xe0bf, 0x237e,
-  0xe0c0, 0x1566,
-  0xe0c8, 0x237f,
-  0xe0c9, 0x156f,
-  0xe0ce, 0x2380,
-  0xe0cf, 0x1575,
-  0xe0d3, 0x2381,
-  0xe0d4, 0x157a,
-  0xe0e0, 0x2382,
-  0xe0e1, 0x1587,
-  0xe0f0, 0x2383,
-  0xe0f1, 0x1597,
-  0xe0f8, 0x2384,
-  0xe0f9, 0x159f,
-  0xe0fc, 0x2385,
-  0xe1a1, 0x15a5,
-  0xe1ab, 0x2388,
-  0xe1ac, 0x15b0,
-  0xe1ad, 0x2389,
-  0xe1ae, 0x15b2,
-  0xe1b0, 0x238a,
-  0xe1b1, 0x15b5,
-  0xe1b4, 0x238b,
-  0xe1b5, 0x15b9,
-  0xe1bb, 0x238c,
-  0xe1bc, 0x15c0,
-  0xe1bd, 0x238d,
-  0xe1be, 0x15c2,
-  0xe1c0, 0x238e,
-  0xe1c2, 0x15c6,
-  0xe1c9, 0x2390,
-  0xe1ca, 0x15ce,
-  0xe1d0, 0x2391,
-  0xe1d1, 0x15d5,
-  0xe1db, 0x2392,
-  0xe1dc, 0x15e0,
-  0xe1e1, 0x07aa,
-  0xe1e2, 0x2393,
-  0xe1e3, 0x15e7,
-  0xe1e7, 0x1198,
-  0xe1e8, 0x15ec,
-  0xe1ee, 0x2394,
-  0xe1f0, 0x15f4,
-  0xe1f6, 0x2396,
-  0xe1f7, 0x15fb,
-  0xe1f8, 0x2397,
-  0xe1f9, 0x15fd,
-  0xe1fd, 0x2398,
-  0xe1fe, 0x1602,
-  0xe2a1, 0x1603,
-  0xe2a4, 0x2399,
-  0xe2a5, 0x1607,
-  0xe2a8, 0x239a,
-  0xe2a9, 0x160b,
-  0xe2bb, 0x239b,
-  0xe2c5, 0x10c5,
-  0xe2c6, 0x23a5,
-  0xe2cf, 0x1631,
-  0xe2d0, 0x23ae,
-  0xe2d1, 0x1633,
-  0xe2d9, 0x23af,
-  0xe2da, 0x163c,
-  0xe2e3, 0x23b0,
-  0xe2e5, 0x1647,
-  0xe2e6, 0x23b2,
-  0xe2e7, 0x1649,
-  0xe2e9, 0x23b3,
-  0xe2ec, 0x164e,
-  0xe2f8, 0x23b6,
-  0xe2f9, 0x165b,
-  0xe2fa, 0x23b7,
-  0xe2fe, 0x1660,
-  0xe3a1, 0x1661,
-  0xe3a2, 0x23bb,
-  0xe3a3, 0x1663,
-  0xe3a5, 0x23bc,
-  0xe3a6, 0x1666,
-  0xe3ab, 0x23bd,
-  0xe3ac, 0x166c,
-  0xe3b4, 0x23be,
-  0xe3b5, 0x1675,
-  0xe3c5, 0x23bf,
-  0xe3dc, 0x169c,
-  0xe3e3, 0x23d6,
-  0xe3e4, 0x16a4,
-  0xe3ed, 0x23d7,
-  0xe3ee, 0x16ae,
-  0xe3f1, 0x23d8,
-  0xe3f3, 0x16b3,
-  0xe3f8, 0x23da,
-  0xe3f9, 0x16b9,
-  0xe3fe, 0x23db,
-  0xe4a1, 0x16bf,
-  0xe4a4, 0x23dc,
-  0xe4a6, 0x16c4,
-  0xe4ab, 0x23de,
-  0xe4ac, 0x16ca,
-  0xe4af, 0x23df,
-  0xe4b2, 0x16d0,
-  0xe4b5, 0x23e2,
-  0xe4b7, 0x16d5,
-  0xe4c2, 0x23e4,
-  0xe4c3, 0x16e1,
-  0xe4c5, 0x23e5,
-  0xe4c6, 0x16e4,
-  0xe4c9, 0x23e6,
-  0xe4ca, 0x16e8,
-  0xe4d9, 0x23e7,
-  0xe4da, 0x16f8,
-  0xe4dc, 0x23e8,
-  0xe4dd, 0x16fb,
-  0xe4de, 0x23e9,
-  0xe4df, 0x16fd,
-  0xe4e4, 0x23ea,
-  0xe4e5, 0x1703,
-  0xe4eb, 0x23eb,
-  0xe4ed, 0x170b,
-  0xe4f2, 0x23ed,
-  0xe4f3, 0x1711,
-  0xe4fe, 0x23ee,
-  0xe5a1, 0x171d,
-  0xe5b0, 0x23ef,
-  0xe5b1, 0x172d,
-  0xe5b9, 0x23f0,
-  0xe5ba, 0x1736,
-  0xe5c7, 0x23f1,
-  0xe5c8, 0x1744,
-  0xe5c9, 0x23f2,
-  0xe5ca, 0x1746,
-  0xe5ce, 0x23f3,
-  0xe5cf, 0x174b,
-  0xe5f0, 0x23f4,
-  0xe5f1, 0x176d,
-  0xe5f2, 0x23f5,
-  0xe5f3, 0x176f,
-  0xe5fc, 0x23f6,
-  0xe5fe, 0x177a,
-  0xe6a1, 0x177b,
-  0xe6a3, 0x23f8,
-  0xe6a4, 0x177e,
-  0xe6ab, 0x23f9,
-  0xe6ad, 0x1787,
-  0xe6ae, 0x23fb,
-  0xe6af, 0x1789,
-  0xe6b4, 0x23fc,
-  0xe6b6, 0x1790,
-  0xe6bf, 0x23fe,
-  0xe6c0, 0x179a,
-  0xe6c8, 0x23ff,
-  0xe6ca, 0x17a4,
-  0xe6cd, 0x2401,
-  0xe6ce, 0x17a8,
-  0xe6e0, 0x2402,
-  0xe7a1, 0x2421,
-  0xe7db, 0x1813,
-  0xe7e1, 0x245b,
-  0xe7e3, 0x181b,
-  0xe7e7, 0x245d,
-  0xe7e8, 0x1820,
-  0xe7ef, 0x245e,
-  0xe7f0, 0x1828,
-  0xe7f4, 0x245f,
-  0xe7f7, 0x182f,
-  0xe8a1, 0x1837,
-  0xe8a8, 0x2462,
-  0xe8a9, 0x183f,
-  0xe8ac, 0x2463,
-  0xe8ad, 0x1843,
-  0xe8b6, 0x2464,
-  0xe8b7, 0x184d,
-  0xe8b8, 0x2465,
-  0xe8bb, 0x1851,
-  0xe8bf, 0x2468,
-  0xe8c1, 0x1857,
-  0xe8c5, 0x246a,
-  0xe8c6, 0x185c,
-  0xe8c7, 0x246b,
-  0xe8ca, 0x1860,
-  0xe8ce, 0x246e,
-  0xe8cf, 0x1865,
-  0xe8d0, 0x246f,
-  0xe8d1, 0x1867,
-  0xe8d3, 0x2470,
-  0xe8d4, 0x186a,
-  0xe8dd, 0x2471,
-  0xe8de, 0x1874,
-  0xe8df, 0x2472,
-  0xe8e0, 0x1876,
-  0xe8e2, 0x2473,
-  0xe8e4, 0x187a,
-  0xe8e5, 0x2475,
-  0xe8e6, 0x187c,
-  0xe8e7, 0x2476,
-  0xe8e8, 0x187e,
-  0xe8eb, 0x2477,
-  0xe8ec, 0x1882,
-  0xe8ed, 0x2478,
-  0xe8ee, 0x1884,
-  0xe8ef, 0x2479,
-  0xe8f0, 0x1886,
-  0xe8f9, 0x247a,
-  0xe8fa, 0x1890,
-  0xe8fc, 0x247b,
-  0xe8fe, 0x1894,
-  0xe9a1, 0x247d,
-  0xe9a2, 0x1896,
-  0xe9ad, 0x247e,
-  0xe9ae, 0x18a2,
-  0xe9b4, 0x247f,
-  0xe9b6, 0x18aa,
-  0xe9b7, 0x2481,
-  0xe9b8, 0x18ac,
-  0xe9c4, 0x2482,
-  0xe9c5, 0x18b9,
-  0xe9c6, 0x2483,
-  0xe9c7, 0x18bb,
-  0xe9c9, 0x2484,
-  0xe9ca, 0x18be,
-  0xe9d6, 0x2485,
-  0xe9d7, 0x18cb,
-  0xe9da, 0x2486,
-  0xe9db, 0x18cf,
-  0xe9e4, 0x2487,
-  0xe9e5, 0x18d9,
-  0xe9e6, 0x2488,
-  0xe9e8, 0x18dc,
-  0xe9e9, 0x248a,
-  0xe9ea, 0x18de,
-  0xe9eb, 0x248b,
-  0xe9ec, 0x18e0,
-  0xe9ed, 0x248c,
-  0xeaa1, 0x249e,
-  0xeaa6, 0x18f8,
-  0xeaa7, 0x24a3,
-  0xeaa9, 0x18fb,
-  0xeab1, 0x24a5,
-  0xeab2, 0x1904,
-  0xeabc, 0x24a6,
-  0xeabd, 0x190f,
-  0xeaca, 0x24a7,
-  0xeacb, 0x191d,
-  0xeacd, 0x24a8,
-  0xeace, 0x1920,
-  0xead3, 0x24a9,
-  0xead4, 0x1926,
-  0xeada, 0x24aa,
-  0xeaf0, 0x1942,
-  0xeba1, 0x1951,
-  0xeba7, 0x24c0,
-  0xeba8, 0x1958,
-  0xebaa, 0x24c1,
-  0xebab, 0x195b,
-  0xebb2, 0x24c2,
-  0xebb3, 0x1963,
-  0xebb9, 0x24c3,
-  0xebba, 0x196a,
-  0xebca, 0x24c4,
-  0xebcc, 0x197c,
-  0xebcd, 0x24c6,
-  0xebce, 0x197e,
-  0xebd6, 0x24c7,
-  0xebd7, 0x1987,
-  0xebda, 0x24c8,
-  0xebdb, 0x198b,
-  0xebe1, 0x24c9,
-  0xebe2, 0x1992,
-  0xebf7, 0x24ca,
-  0xebf8, 0x19a8,
-  0xeca1, 0x19af,
-  0xeca3, 0x24cb,
-  0xeca4, 0x19b2,
-  0xeca9, 0x24cc,
-  0xecaf, 0x19bd,
-  0xecb1, 0x24d2,
-  0xecb2, 0x19c0,
-  0xecb4, 0x24d3,
-  0xecb6, 0x19c4,
-  0xecbe, 0x24d5,
-  0xecc0, 0x19ce,
-  0xecc1, 0x24d7,
-  0xecc2, 0x19d0,
-  0xecc7, 0x24d8,
-  0xecc8, 0x19d6,
-  0xeccb, 0x24d9,
-  0xeccc, 0x19da,
-  0xece2, 0x24da,
-  0xece3, 0x19f1,
-  0xecf2, 0x24db,
-  0xecf3, 0x1a01,
-  0xecf5, 0x24dc,
-  0xecf6, 0x1a04,
-  0xecf8, 0x24dd,
-  0xecf9, 0x1a07,
-  0xeda1, 0x24de,
-  0xeda2, 0x1a0e,
-  0xeda8, 0x24df,
-  0xeda9, 0x1a15,
-  0xedaf, 0x24e0,
-  0xedb1, 0x1a1d,
-  0xedb4, 0x24e2,
-  0xedb5, 0x1a21,
-  0xedb6, 0x24e3,
-  0xedb7, 0x1a23,
-  0xedb8, 0x24e4,
-  0xedb9, 0x1a25,
-  0xedba, 0x24e5,
-  0xedbb, 0x1a27,
-  0xedbf, 0x24e6,
-  0xedc0, 0x1a2c,
-  0xedc2, 0x24e7,
-  0xedc4, 0x1a30,
-  0xedcc, 0x24e9,
-  0xedce, 0x1a3a,
-  0xedd3, 0x24eb,
-  0xedd4, 0x1a40,
-  0xedd7, 0x24ec,
-  0xedd8, 0x1a44,
-  0xede8, 0x24ed,
-  0xede9, 0x1a55,
-  0xedee, 0x24ee,
-  0xedef, 0x1a5b,
-  0xedf9, 0x24ef,
-  0xedfb, 0x1a67,
-  0xeea1, 0x1a6b,
-  0xeebc, 0x24f1,
-  0xeebd, 0x1a87,
-  0xeebf, 0x24f2,
-  0xeec0, 0x1a8a,
-  0xeec4, 0x24f3,
-  0xefa1, 0x252e,
-  0xeff2, 0x1b1a,
-  0xf0a1, 0x1b27,
-  0xf0a3, 0x257f,
-  0xf0a4, 0x1b2a,
-  0xf0af, 0x2580,
-  0xf0da, 0x1b60,
-  0xf0dc, 0x25ab,
-  0xf0de, 0x1b64,
-  0xf0df, 0x25ad,
-  0xf0e0, 0x1b66,
-  0xf0e9, 0x25ae,
-  0xf0ea, 0x1b70,
-  0xf0ec, 0x25af,
-  0xf0ed, 0x1b73,
-  0xf0ef, 0x25b0,
-  0xf0f0, 0x1b76,
-  0xf0f7, 0x25b1,
-  0xf0f8, 0x1b7e,
-  0xf0f9, 0x25b2,
-  0xf0fa, 0x1b80,
-  0xf0fc, 0x25b3,
-  0xf0fd, 0x1b83,
-  0xf1a1, 0x1b85,
-  0xf1a8, 0x25b4,
-  0xf1a9, 0x1b8d,
-  0xf1ab, 0x25b5,
-  0xf1ac, 0x1b90,
-  0xf1ae, 0x25b6,
-  0xf1af, 0x1b93,
-  0xf1b2, 0x25b7,
-  0xf1b3, 0x1b97,
-  0xf1bc, 0x25b8,
-  0xf1bd, 0x1ba1,
-  0xf1c0, 0x25b9,
-  0xf1c1, 0x1ba5,
-  0xf1c9, 0x25ba,
-  0xf1ca, 0x1bae,
-  0xf1cd, 0x25bb,
-  0xf1ce, 0x1bb2,
-  0xf1cf, 0x25bc,
-  0xf1d1, 0x1bb5,
-  0xf1da, 0x25be,
-  0xf1db, 0x1bbf,
-  0xf1dc, 0x25bf,
-  0xf1dd, 0x1bc1,
-  0xf1e4, 0x25c0,
-  0xf1e5, 0x1bc9,
-  0xf1ec, 0x25c1,
-  0xf1ed, 0x1bd1,
-  0xf1ef, 0x25c2,
-  0xf1f0, 0x1bd4,
-  0xf1f7, 0x25c3,
-  0xf1f8, 0x1bdc,
-  0xf1f9, 0x25c4,
-  0xf1fa, 0x1bde,
-  0xf1fc, 0x25c5,
-  0xf2a1, 0x25c8,
-  0xf2ae, 0x1bf0,
-  0xf2b1, 0x25d5,
-  0xf2b3, 0x1bf5,
-  0xf2b9, 0x25d7,
-  0xf2ba, 0x1bfc,
-  0xf2c3, 0x25d8,
-  0xf2c4, 0x1c06,
-  0xf2c9, 0x25d9,
-  0xf2ca, 0x1c0c,
-  0xf2cc, 0x25da,
-  0xf2ce, 0x1c10,
-  0xf2cf, 0x25dc,
-  0xf2d0, 0x1c12,
-  0xf2d3, 0x25dd,
-  0xf2d4, 0x1c16,
-  0xf2e5, 0x25de,
-  0xf2e6, 0x1c28,
-  0xf2ee, 0x25df,
-  0xf2ef, 0x1c31,
-  0xf2f7, 0x25e0,
-  0xf2f8, 0x1c3a,
-  0xf2fd, 0x25e1,
-  0xf2fe, 0x1c40,
-  0xf3a1, 0x1c41,
-  0xf3bf, 0x25e2,
-  0xf3c0, 0x1c60,
-  0xf3c6, 0x25e3,
-  0xf3c7, 0x1c67,
-  0xf3c8, 0x25e4,
-  0xf3c9, 0x1c69,
-  0xf3d6, 0x25e5,
-  0xf3d7, 0x1c77,
-  0xf3d9, 0x25e6,
-  0xf3da, 0x1c7a,
-  0xf3e5, 0x25e7,
-  0xf3e7, 0x1c87,
-  0xf3ea, 0x25e9,
-  0xf3eb, 0x1c8b,
-  0xf3ec, 0x25ea,
-  0xf3ed, 0x1c8d,
-  0xf3ef, 0x25eb,
-  0xf3f0, 0x1c90,
-  0xf3f1, 0x25ec,
-  0xf3f2, 0x1c92,
-  0xf3fd, 0x25ed,
-  0xf3fe, 0x1c9e,
-  0xf4a1, 0x1c9f,
-  0xf4a5, 0x25ee,
-  0xf4a6, 0x1ca4,
-  0xf4af, 0x25ef,
-  0xf4b0, 0x1cae,
-  0xf4b5, 0x25f0,
-  0xf4b6, 0x1cb4,
-  0xf4c1, 0x25f1,
-  0xf4c2, 0x1cc0,
-  0xf4c7, 0x25f2,
-  0xf4c8, 0x1cc6,
-  0xf4cf, 0x25f3,
-  0xf4d1, 0x1ccf,
-  0xf4d6, 0x25f5,
-  0xf4d7, 0x1cd5,
-  0xf4ea, 0x25f6,
-  0xf4eb, 0x1ce9,
-  0xf4ef, 0x25f7,
-  0xf4f0, 0x1cee,
-  0xf4f5, 0x25f8,
-  0xf4f6, 0x1cf4,
-  0xf5a1, 0x1cfd,
-  0xf5a6, 0x25f9,
-  0xf5a8, 0x1d04,
-  0xf5ba, 0x25fb,
-  0xf5bc, 0x1d18,
-  0xf5c4, 0x25fd,
-  0xf5c5, 0x1d21,
-  0xf5c8, 0x25fe,
-  0xf5c9, 0x1d25,
-  0xf5ce, 0x25ff,
-  0xf5d0, 0x1d2c,
-  0xf5d1, 0x2601,
-  0xf5d3, 0x1d2f,
-  0xf5d9, 0x2603,
-  0xf5da, 0x1d36,
-  0xf5dc, 0x2604,
-  0xf5dd, 0x1d39,
-  0xf5e6, 0x2605,
-  0xf5e8, 0x1d44,
-  0xf5ef, 0x2607,
-  0xf5f0, 0x1d4c,
-  0xf5f2, 0x2608,
-  0xf5f3, 0x1d4f,
-  0xf5fc, 0x2609,
-  0xf5fd, 0x1d59,
-  0xf6a1, 0x1d5b,
-  0xf6a3, 0x260a,
-  0xf6a4, 0x1d5e,
-  0xf6a6, 0x260b,
-  0xf6a7, 0x1d61,
-  0xf6a8, 0x260c,
-  0xf6a9, 0x1d63,
-  0xf6ab, 0x260d,
-  0xf6ac, 0x1d66,
-  0xf6b0, 0x260e,
-  0xf6b1, 0x1d6b,
-  0xf6b3, 0x260f,
-  0xf6bf, 0x1d79,
-  0xf6c5, 0x261b,
-  0xf6c6, 0x1d80,
-  0xf6c7, 0x261c,
-  0xf6c8, 0x1d82,
-  0xf6c9, 0x261d,
-  0xf6ca, 0x1d84,
-  0xf6cf, 0x261e,
-  0xf7a1, 0x264e,
-  0xf7b0, 0x1dc8,
-  0xf7b2, 0x265d,
-  0xf7b4, 0x1dcc,
-  0xf7b5, 0x265f,
-  0xf7b6, 0x1dce,
-  0xf7bd, 0x2660,
-  0xf7be, 0x1dd6,
-  0xf7c3, 0x2661,
-  0xf7c4, 0x1ddc,
-  0xf7c5, 0x2662,
-  0xf7c7, 0x1ddf,
-  0xf7ca, 0x2664,
-  0xf7cc, 0x1de4,
-  0xf7cf, 0x2666,
-  0xf7d1, 0x1de9,
-  0xf7de, 0x2668,
-  0xf7df, 0x1df7,
-  0xf7e1, 0x0ab9,
-  0xf7e2, 0x1dfa,
-  0xf7f2, 0x2669,
-  0xf7f3, 0x1e0b,
-  0xf7f5, 0x266a,
-  0xf7f6, 0x1e0e,
-  0xf8a1, 0x266b,
-  0xf8a7, 0x04cc,
-  0xf8a8, 0x050a,
-  0xf8a9, 0x0518,
-  0xf8aa, 0x2671,
-  0xf8ac, 0x0594,
-  0xf8ad, 0x05ce,
-  0xf8ae, 0x2673,
-  0xf8af, 0x05f6,
-  0xf8b0, 0x2674,
-  0xf8b2, 0x0653,
-  0xf8b3, 0x067e,
-  0xf8b4, 0x2676,
-  0xf8b5, 0x06c4,
-  0xf8b6, 0x2677,
-  0xf8b8, 0x073c,
-  0xf8b9, 0x2679,
-  0xf8bb, 0x07c3,
-  0xf8bc, 0x267b,
-  0xf8c0, 0x082b,
-  0xf8c1, 0x267f,
-  0xf8c2, 0x084e,
-  0xf8c3, 0x0869,
-  0xf8c4, 0x2680,
-  0xf8c6, 0x090c,
-  0xf8c7, 0x2682,
-  0xf8c9, 0x0971,
-  0xf8ca, 0x2684,
-  0xf8cb, 0x099a,
-  0xf8cd, 0x2685,
-  0xf8ce, 0x09da,
-  0xf8cf, 0x2686,
-  0xf8d0, 0x09fa,
-  0xf8d1, 0x2687,
-  0xf8dc, 0x0bda,
-  0xf8dd, 0x0bdd,
-  0xf8de, 0x0bea,
-  0xf8df, 0x0bec,
-  0xf8e0, 0x0bf2,
-  0xf8e1, 0x2692,
-  0xf8e6, 0x0c92,
-  0xf8e7, 0x0d1a,
-  0xf8e8, 0x0d8c,
-  0xf8e9, 0x0dbe,
-  0xf8ea, 0x2697,
-  0xf8eb, 0x0dfb,
-  0xf8ec, 0x2698,
-  0xf8ef, 0x0e70,
-  0xf8f0, 0x269b,
-  0xf8f1, 0x0ea3,
-  0xf8f2, 0x269c,
-  0xf8f8, 0x103d,
-  0xf8f9, 0x10d9,
-  0xf8fa, 0x26a2,
-  0xf8fc, 0x10fb,
-  0xf8fd, 0x1109,
-  0xf8fe, 0x26a4,
-  0xf9a1, 0x11a1,
-  0xf9a2, 0x26a5,
-  0xf9a3, 0x11ba,
-  0xf9a4, 0x26a6,
-  0xf9a6, 0x11d5,
-  0xf9a7, 0x26a8,
-  0xf9a8, 0x11fd,
-  0xf9a9, 0x1219,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBTpcEUCHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x1e20, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e21, 0x1e22, 0x1e23 },
-  gb12GBTpcEUCHMap2, 2283
-};
-
-static Gushort gb12GBTpcEUCVMap2[4606] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb0a8, 0x1e25,
-  0xb0a9, 0x03b4,
-  0xb0aa, 0x1e26,
-  0xb0ab, 0x03b6,
-  0xb0ad, 0x1e27,
-  0xb0af, 0x03ba,
-  0xb0b9, 0x1e29,
-  0xb0ba, 0x03c5,
-  0xb0c0, 0x1e2a,
-  0xb0c1, 0x03cc,
-  0xb0d3, 0x1e2b,
-  0xb0d4, 0x03df,
-  0xb0d5, 0x1e2c,
-  0xb0d6, 0x03e1,
-  0xb0da, 0x1e2d,
-  0xb0db, 0x03e6,
-  0xb0dc, 0x1e2e,
-  0xb0dd, 0x03e8,
-  0xb0e4, 0x1e2f,
-  0xb0e5, 0x03f0,
-  0xb0ec, 0x1e30,
-  0xb0ee, 0x03f9,
-  0xb0ef, 0x1e32,
-  0xb0f0, 0x03fb,
-  0xb0f3, 0x1e33,
-  0xb0f4, 0x03ff,
-  0xb0f7, 0x1e34,
-  0xb0f8, 0x0403,
-  0xb0f9, 0x1e35,
-  0xb0fa, 0x0405,
-  0xb1a1, 0x040a,
-  0xb1a5, 0x1e36,
-  0xb1a7, 0x0410,
-  0xb1a8, 0x1e38,
-  0xb1a9, 0x0412,
-  0xb1ab, 0x1e39,
-  0xb1ac, 0x0415,
-  0xb1b2, 0x1e3a,
-  0xb1b3, 0x041c,
-  0xb1b4, 0x1e3b,
-  0xb1b6, 0x041f,
-  0xb1b7, 0x1e3d,
-  0xb1ba, 0x0423,
-  0xb1c1, 0x1e40,
-  0xb1c2, 0x042b,
-  0xb1ca, 0x1e41,
-  0xb1cb, 0x0434,
-  0xb1cf, 0x1e42,
-  0xb1d1, 0x043a,
-  0xb1d2, 0x1e44,
-  0xb1d3, 0x043c,
-  0xb1d5, 0x1e45,
-  0xb1d6, 0x043f,
-  0xb1df, 0x1e46,
-  0xb1e2, 0x044b,
-  0xb1e4, 0x1e49,
-  0xb1e5, 0x044e,
-  0xb1e7, 0x1e4a,
-  0xb1e9, 0x0452,
-  0xb1ea, 0x1e4c,
-  0xb1eb, 0x0454,
-  0xb1ee, 0x1e4d,
-  0xb1ef, 0x0458,
-  0xb1f1, 0x1e4e,
-  0xb1f2, 0x045b,
-  0xb1f4, 0x1e4f,
-  0xb1f8, 0x0461,
-  0xb1fd, 0x1e53,
-  0xb1fe, 0x0467,
-  0xb2a1, 0x0468,
-  0xb2a6, 0x1e54,
-  0xb2a8, 0x046f,
-  0xb2ac, 0x1e56,
-  0xb2ad, 0x0474,
-  0xb2b5, 0x1e57,
-  0xb2b6, 0x047d,
-  0xb2b9, 0x1e58,
-  0xb2ba, 0x0481,
-  0xb2c6, 0x1e59,
-  0xb2c7, 0x048e,
-  0xb2ce, 0x1e5a,
-  0xb2d8, 0x049f,
-  0xb2de, 0x1e64,
-  0xb2df, 0x04a6,
-  0xb2e0, 0x1e65,
-  0xb2e1, 0x04a8,
-  0xb2e2, 0x1e66,
-  0xb2e4, 0x04ab,
-  0xb2ef, 0x1e68,
-  0xb2f0, 0x04b7,
-  0xb2f3, 0x1e69,
-  0xb2fd, 0x04c4,
-  0xb3a1, 0x1e73,
-  0xb3a3, 0x04c8,
-  0xb3a4, 0x1e75,
-  0xb3a8, 0x04cd,
-  0xb3a9, 0x1e79,
-  0xb3aa, 0x04cf,
-  0xb3ae, 0x1e7a,
-  0xb3af, 0x04d4,
-  0xb3b5, 0x1e7b,
-  0xb3b6, 0x04db,
-  0xb3b9, 0x1e7c,
-  0xb3ba, 0x04df,
-  0xb3be, 0x1e7d,
-  0xb3bf, 0x04e4,
-  0xb3c2, 0x1e7e,
-  0xb3c3, 0x04e8,
-  0xb3c4, 0x1e7f,
-  0xb3c5, 0x04ea,
-  0xb3c6, 0x1e80,
-  0xb3c7, 0x04ec,
-  0xb3cd, 0x1e81,
-  0xb3ce, 0x04f3,
-  0xb3cf, 0x1e82,
-  0xb3d0, 0x04f5,
-  0xb3d2, 0x1e83,
-  0xb3d3, 0x04f8,
-  0xb3d9, 0x1e84,
-  0xb3da, 0x04ff,
-  0xb3db, 0x1e85,
-  0xb3dc, 0x0501,
-  0xb3dd, 0x1e86,
-  0xb3de, 0x0503,
-  0xb3e3, 0x1e87,
-  0xb3e4, 0x0509,
-  0xb3e5, 0x1e88,
-  0xb3e7, 0x050c,
-  0xb3e8, 0x1e8a,
-  0xb3e9, 0x050e,
-  0xb3eb, 0x1e8b,
-  0xb3ed, 0x0512,
-  0xb3ef, 0x1e8d,
-  0xb3f0, 0x0515,
-  0xb3f1, 0x1e8e,
-  0xb3f2, 0x0517,
-  0xb3f3, 0x1e8f,
-  0xb3f4, 0x0519,
-  0xb3fa, 0x1e90,
-  0xb3fc, 0x0521,
-  0xb4a1, 0x1e92,
-  0xb4a3, 0x0526,
-  0xb4a5, 0x1e94,
-  0xb4a7, 0x052a,
-  0xb4ab, 0x1e96,
-  0xb4ac, 0x052f,
-  0xb4af, 0x1e97,
-  0xb4b0, 0x0533,
-  0xb4b3, 0x1e98,
-  0xb4b5, 0x0538,
-  0xb4b8, 0x1e9a,
-  0xb4b9, 0x053c,
-  0xb4bf, 0x1e9b,
-  0xb4c0, 0x0543,
-  0xb4c2, 0x1e9c,
-  0xb4c3, 0x0546,
-  0xb4c7, 0x1e9d,
-  0xb4c8, 0x054b,
-  0xb4ca, 0x1e9e,
-  0xb4cb, 0x054e,
-  0xb4cd, 0x1e9f,
-  0xb4ce, 0x0551,
-  0xb4cf, 0x1ea0,
-  0xb4d0, 0x0553,
-  0xb4d3, 0x1ea1,
-  0xb4d5, 0x0558,
-  0xb4da, 0x1ea3,
-  0xb4db, 0x055e,
-  0xb4dc, 0x1ea4,
-  0xb4dd, 0x0560,
-  0xb4ed, 0x1ea5,
-  0xb4ee, 0x0571,
-  0xb4ef, 0x1ea6,
-  0xb4f0, 0x0573,
-  0xb4f8, 0x1ea7,
-  0xb4f9, 0x057c,
-  0xb4fb, 0x1ea8,
-  0xb4fc, 0x057f,
-  0xb5a1, 0x0582,
-  0xb5a3, 0x1ea9,
-  0xb5a4, 0x0585,
-  0xb5a5, 0x1eaa,
-  0xb5a9, 0x058a,
-  0xb5ac, 0x1eae,
-  0xb5ad, 0x058e,
-  0xb5ae, 0x1eaf,
-  0xb5b0, 0x0591,
-  0xb5b1, 0x1eb1,
-  0xb5b6, 0x0597,
-  0xb5b7, 0x1eb6,
-  0xb5b8, 0x0599,
-  0xb5ba, 0x1eb7,
-  0xb5bd, 0x059e,
-  0xb5c6, 0x1eba,
-  0xb5c7, 0x05a8,
-  0xb5cb, 0x1ebb,
-  0xb5cc, 0x05ad,
-  0xb5d0, 0x1ebc,
-  0xb5d1, 0x05b2,
-  0xb5d3, 0x1ebd,
-  0xb5d4, 0x05b5,
-  0xb5dd, 0x1ebe,
-  0xb5e0, 0x05c1,
-  0xb5e3, 0x1ec1,
-  0xb5e4, 0x05c5,
-  0xb5e6, 0x1ec2,
-  0xb5e8, 0x05c9,
-  0xb5ed, 0x1ec4,
-  0xb5ee, 0x05cf,
-  0xb5f6, 0x1ec5,
-  0xb5f8, 0x05d9,
-  0xb5fd, 0x1ec7,
-  0xb5fe, 0x05df,
-  0xb6a1, 0x05e0,
-  0xb6a4, 0x1ec8,
-  0xb6a6, 0x05e5,
-  0xb6a7, 0x1eca,
-  0xb6a8, 0x05e7,
-  0xb6a9, 0x1ecb,
-  0xb6aa, 0x05e9,
-  0xb6ab, 0x1ecc,
-  0xb6ac, 0x05eb,
-  0xb6af, 0x1ecd,
-  0xb6b1, 0x05f0,
-  0xb6b3, 0x1ecf,
-  0xb6b4, 0x05f3,
-  0xb6b7, 0x1ed0,
-  0xb6b8, 0x05f7,
-  0xb6bf, 0x1ed1,
-  0xb6c2, 0x0601,
-  0xb6c4, 0x1ed4,
-  0xb6c5, 0x0604,
-  0xb6c6, 0x1ed5,
-  0xb6c7, 0x0606,
-  0xb6cd, 0x1ed6,
-  0xb6ce, 0x060d,
-  0xb6cf, 0x1ed7,
-  0xb6d1, 0x0610,
-  0xb6d3, 0x1ed9,
-  0xb6d5, 0x0614,
-  0xb6d6, 0x1edb,
-  0xb6d7, 0x0616,
-  0xb6d9, 0x1edc,
-  0xb6da, 0x0619,
-  0xb6db, 0x1edd,
-  0xb6dc, 0x061b,
-  0xb6e1, 0x1ede,
-  0xb6e2, 0x0621,
-  0xb6e9, 0x1edf,
-  0xb6ea, 0x0629,
-  0xb6ec, 0x1ee0,
-  0xb6ed, 0x062c,
-  0xb6ee, 0x1ee1,
-  0xb6f0, 0x062f,
-  0xb6f1, 0x1ee3,
-  0xb6f2, 0x0631,
-  0xb6f6, 0x1ee4,
-  0xb6f7, 0x0636,
-  0xb6f9, 0x1ee5,
-  0xb6fa, 0x0639,
-  0xb6fb, 0x1ee6,
-  0xb6fd, 0x063c,
-  0xb7a1, 0x1ee8,
-  0xb7a4, 0x0641,
-  0xb7a7, 0x1eeb,
-  0xb7a8, 0x0645,
-  0xb7af, 0x1eec,
-  0xb7b1, 0x064e,
-  0xb7b3, 0x1eee,
-  0xb7b4, 0x0651,
-  0xb7b6, 0x1eef,
-  0xb7b8, 0x0655,
-  0xb7b9, 0x1ef1,
-  0xb7ba, 0x0657,
-  0xb7c3, 0x1ef2,
-  0xb7c5, 0x0662,
-  0xb7c9, 0x1ef4,
-  0xb7ca, 0x0667,
-  0xb7cc, 0x1ef5,
-  0xb7cd, 0x066a,
-  0xb7cf, 0x1ef6,
-  0xb7d0, 0x066d,
-  0xb7d1, 0x1ef7,
-  0xb7d2, 0x066f,
-  0xb7d7, 0x1ef8,
-  0xb7d9, 0x0676,
-  0xb7dc, 0x1efa,
-  0xb7dd, 0x067a,
-  0xb7df, 0x1efb,
-  0xb7e2, 0x067f,
-  0xb7e3, 0x1efe,
-  0xb7e4, 0x0681,
-  0xb7e6, 0x1eff,
-  0xb7e9, 0x0686,
-  0xb7eb, 0x1f02,
-  0xb7ee, 0x068b,
-  0xb7ef, 0x1f05,
-  0xb7f0, 0x068d,
-  0xb7f4, 0x1f06,
-  0xb7f5, 0x0692,
-  0xb7f8, 0x1f07,
-  0xb7f9, 0x0696,
-  0xb8a1, 0x069c,
-  0xb8a7, 0x1f08,
-  0xb8a9, 0x06a4,
-  0xb8b3, 0x1f0a,
-  0xb8b5, 0x06b0,
-  0xb8ba, 0x1f0c,
-  0xb8bb, 0x06b6,
-  0xb8bc, 0x1f0d,
-  0xb8bd, 0x06b8,
-  0xb8be, 0x1f0e,
-  0xb8c0, 0x06bb,
-  0xb8c3, 0x1f10,
-  0xb8c4, 0x06bf,
-  0xb8c6, 0x1f11,
-  0xb8c8, 0x06c3,
-  0xb8c9, 0x1f13,
-  0xb8ca, 0x06c5,
-  0xb8cf, 0x1f14,
-  0xb8d0, 0x06cb,
-  0xb8d3, 0x1f15,
-  0xb8d7, 0x06d2,
-  0xb8d9, 0x1f19,
-  0xb8db, 0x06d6,
-  0xb8e4, 0x1f1b,
-  0xb8e5, 0x06e0,
-  0xb8e9, 0x1f1c,
-  0xb8ea, 0x06e5,
-  0xb8eb, 0x1f1d,
-  0xb8ec, 0x06e7,
-  0xb8f3, 0x1f1e,
-  0xb8f4, 0x06ef,
-  0xb8f5, 0x1f1f,
-  0xb8f7, 0x06f2,
-  0xb8f8, 0x1f21,
-  0xb8f9, 0x06f4,
-  0xb9a1, 0x06fa,
-  0xb9a8, 0x1f22,
-  0xb9a9, 0x0702,
-  0xb9ae, 0x1f23,
-  0xb9af, 0x0708,
-  0xb9b1, 0x1f24,
-  0xb9b2, 0x070b,
-  0xb9b3, 0x1f25,
-  0xb9b4, 0x070d,
-  0xb9b5, 0x1f26,
-  0xb9b6, 0x070f,
-  0xb9b9, 0x1f27,
-  0xb9bb, 0x0714,
-  0xb9c6, 0x1f29,
-  0xb9c7, 0x0720,
-  0xb9cb, 0x1f2a,
-  0xb9cc, 0x0725,
-  0xb9d0, 0x1f2b,
-  0xb9d1, 0x072a,
-  0xb9d8, 0x1f2c,
-  0xb9d9, 0x0732,
-  0xb9db, 0x1f2d,
-  0xb9dc, 0x0735,
-  0xb9dd, 0x1f2e,
-  0xb9de, 0x0737,
-  0xb9df, 0x1f2f,
-  0xb9e0, 0x0739,
-  0xb9e1, 0x1f30,
-  0xb9e2, 0x073b,
-  0xb9e3, 0x1f31,
-  0xb9e4, 0x073d,
-  0xb9e6, 0x1f32,
-  0xb9e7, 0x0740,
-  0xb9e9, 0x1f33,
-  0xb9ed, 0x0746,
-  0xb9ee, 0x1f37,
-  0xb9ef, 0x0748,
-  0xb9f1, 0x1f38,
-  0xb9f2, 0x074b,
-  0xb9f3, 0x1f39,
-  0xb9f6, 0x074f,
-  0xb9f8, 0x1f3c,
-  0xb9f9, 0x0752,
-  0xb9fa, 0x1f3d,
-  0xb9fb, 0x0754,
-  0xb9fd, 0x1f3e,
-  0xb9fe, 0x0757,
-  0xbaa1, 0x0758,
-  0xbaa7, 0x1f3f,
-  0xbaa8, 0x075f,
-  0xbaab, 0x1f40,
-  0xbaac, 0x0763,
-  0xbaba, 0x1f41,
-  0xbabb, 0x0772,
-  0xbac5, 0x1f42,
-  0xbac6, 0x077d,
-  0xbad2, 0x1f43,
-  0xbad3, 0x078a,
-  0xbad7, 0x1f44,
-  0xbad9, 0x0790,
-  0xbae4, 0x1f46,
-  0xbae5, 0x079c,
-  0xbae8, 0x1f47,
-  0xbae9, 0x07a0,
-  0xbaec, 0x1f48,
-  0xbaed, 0x07a4,
-  0xbaf3, 0x15e5,
-  0xbaf4, 0x07ab,
-  0xbaf8, 0x1f49,
-  0xbaf9, 0x07b0,
-  0xbba1, 0x07b6,
-  0xbba4, 0x1f4a,
-  0xbba5, 0x07ba,
-  0xbba6, 0x1f4b,
-  0xbba7, 0x07bc,
-  0xbba9, 0x1f4c,
-  0xbbab, 0x07c0,
-  0xbbad, 0x1f4e,
-  0xbbaf, 0x07c4,
-  0xbbb0, 0x1f50,
-  0xbbb1, 0x07c6,
-  0xbbb3, 0x1f51,
-  0xbbb4, 0x07c9,
-  0xbbb5, 0x1f52,
-  0xbbb8, 0x07cd,
-  0xbbb9, 0x1f55,
-  0xbbbb, 0x07d0,
-  0xbbd1, 0x1f57,
-  0xbbd2, 0x07e7,
-  0xbbd3, 0x1f58,
-  0xbbd5, 0x07ea,
-  0xbbdf, 0x1f5a,
-  0xbbe8, 0x07fd,
-  0xbbeb, 0x1f63,
-  0xbbec, 0x0801,
-  0xbbf1, 0x1f64,
-  0xbbf2, 0x0807,
-  0xbbf5, 0x1f65,
-  0xbbf8, 0x080d,
-  0xbbfa, 0x1f68,
-  0xbbfb, 0x0810,
-  0xbbfd, 0x1f69,
-  0xbbfe, 0x0813,
-  0xbca1, 0x0814,
-  0xbca2, 0x1f6a,
-  0xbca3, 0x0816,
-  0xbca5, 0x1f6b,
-  0xbca7, 0x081a,
-  0xbca8, 0x1f6d,
-  0xbcaa, 0x081d,
-  0xbcab, 0x1f6f,
-  0xbcac, 0x081f,
-  0xbcad, 0x1f70,
-  0xbcae, 0x0821,
-  0xbcb6, 0x1f71,
-  0xbcb9, 0x082c,
-  0xbcbb, 0x1f74,
-  0xbcbc, 0x082f,
-  0xbcc1, 0x1f75,
-  0xbcc2, 0x0835,
-  0xbcc3, 0x1f76,
-  0xbcc4, 0x0837,
-  0xbcc6, 0x1f77,
-  0xbcc8, 0x083b,
-  0xbcca, 0x1f79,
-  0xbccb, 0x083e,
-  0xbccc, 0x1f7a,
-  0xbcce, 0x0841,
-  0xbcd0, 0x1f7c,
-  0xbcd1, 0x0844,
-  0xbcd4, 0x1f7d,
-  0xbcd7, 0x084a,
-  0xbcd8, 0x1f80,
-  0xbcd9, 0x084c,
-  0xbcdb, 0x1f81,
-  0xbcdc, 0x084f,
-  0xbcdd, 0x1f82,
-  0xbcde, 0x0851,
-  0xbcdf, 0x1f83,
-  0xbce2, 0x0855,
-  0xbce3, 0x1f86,
-  0xbce5, 0x0858,
-  0xbce8, 0x1f88,
-  0xbce9, 0x085c,
-  0xbcea, 0x1f89,
-  0xbced, 0x0860,
-  0xbcef, 0x1f8c,
-  0xbcf4, 0x0867,
-  0xbcf6, 0x1f91,
-  0xbcfd, 0x0870,
-  0xbda1, 0x0872,
-  0xbda2, 0x1f98,
-  0xbda8, 0x0879,
-  0xbdab, 0x1f9e,
-  0xbdad, 0x087e,
-  0xbdaf, 0x1fa0,
-  0xbdb3, 0x0884,
-  0xbdb4, 0x1fa4,
-  0xbdb5, 0x0886,
-  0xbdba, 0x1fa5,
-  0xbdbb, 0x088c,
-  0xbdbd, 0x1fa6,
-  0xbdc0, 0x0891,
-  0xbdc1, 0x1fa9,
-  0xbdc5, 0x0896,
-  0xbdc8, 0x1fad,
-  0xbdcb, 0x089c,
-  0xbdce, 0x1fb0,
-  0xbdd0, 0x08a1,
-  0xbdd7, 0x1fb2,
-  0xbdd8, 0x08a9,
-  0xbdda, 0x1fb3,
-  0xbddb, 0x08ac,
-  0xbde0, 0x1fb4,
-  0xbde2, 0x08b3,
-  0xbdeb, 0x1fb6,
-  0xbdec, 0x08bd,
-  0xbdf4, 0x1fb7,
-  0xbdf9, 0x08ca,
-  0xbdfd, 0x1fbc,
-  0xbdfe, 0x08cf,
-  0xbea1, 0x1fbd,
-  0xbea3, 0x08d2,
-  0xbea5, 0x1fbf,
-  0xbea6, 0x08d5,
-  0xbea8, 0x1fc0,
-  0xbea9, 0x08d8,
-  0xbeaa, 0x1fc1,
-  0xbeab, 0x08da,
-  0xbead, 0x1fc2,
-  0xbeae, 0x08dd,
-  0xbeb1, 0x1fc3,
-  0xbeb2, 0x08e1,
-  0xbeb5, 0x1fc4,
-  0xbeb8, 0x08e7,
-  0xbeba, 0x1fc7,
-  0xbebb, 0x08ea,
-  0xbec0, 0x1fc8,
-  0xbec1, 0x08f0,
-  0xbec9, 0x1fc9,
-  0xbeca, 0x08f9,
-  0xbed4, 0x1fca,
-  0xbed5, 0x0904,
-  0xbed9, 0x1fcb,
-  0xbeda, 0x0909,
-  0xbedd, 0x1fcc,
-  0xbede, 0x090d,
-  0xbee2, 0x1fcd,
-  0xbee3, 0x0912,
-  0xbee5, 0x1fce,
-  0xbee6, 0x0915,
-  0xbee7, 0x1fcf,
-  0xbee8, 0x0917,
-  0xbee9, 0x1fd0,
-  0xbeea, 0x0919,
-  0xbeee, 0x1fd1,
-  0xbeef, 0x091e,
-  0xbef5, 0x1fd2,
-  0xbef6, 0x0925,
-  0xbef7, 0x1fd3,
-  0xbef9, 0x0928,
-  0xbefb, 0x1fd5,
-  0xbefd, 0x092c,
-  0xbfa1, 0x092e,
-  0xbfa5, 0x1fd7,
-  0xbfa6, 0x0933,
-  0xbfaa, 0x1fd8,
-  0xbfab, 0x0938,
-  0xbfad, 0x1fd9,
-  0xbfae, 0x093b,
-  0xbfc5, 0x1fda,
-  0xbfc6, 0x0953,
-  0xbfc7, 0x1fdb,
-  0xbfc8, 0x0955,
-  0xbfce, 0x1fdc,
-  0xbfcf, 0x095c,
-  0xbfd1, 0x1fdd,
-  0xbfd3, 0x0960,
-  0xbfd9, 0x1fdf,
-  0xbfda, 0x0967,
-  0xbfe2, 0x1fe0,
-  0xbfe5, 0x0972,
-  0xbfe9, 0x1fe3,
-  0xbfea, 0x0977,
-  0xbfeb, 0x1fe4,
-  0xbfec, 0x0979,
-  0xbfed, 0x1fe5,
-  0xbfee, 0x097b,
-  0xbff3, 0x1fe6,
-  0xbff4, 0x0981,
-  0xbff5, 0x1fe7,
-  0xbff6, 0x0983,
-  0xbff7, 0x1fe8,
-  0xbff8, 0x0985,
-  0xbff9, 0x1fe9,
-  0xbffb, 0x0988,
-  0xc0a1, 0x1feb,
-  0xc0a2, 0x098d,
-  0xc0a3, 0x1fec,
-  0xc0a4, 0x098f,
-  0xc0a9, 0x1fed,
-  0xc0aa, 0x0995,
-  0xc0ab, 0x1fee,
-  0xc0ac, 0x0997,
-  0xc0af, 0x1fef,
-  0xc0b1, 0x099c,
-  0xc0b3, 0x1ff1,
-  0xc0b7, 0x09a2,
-  0xc0b8, 0x1ff5,
-  0xc0c5, 0x09b0,
-  0xc0cc, 0x2002,
-  0xc0ce, 0x09b9,
-  0xc0d4, 0x2004,
-  0xc0d5, 0x09c0,
-  0xc0d6, 0x2005,
-  0xc0d7, 0x09c2,
-  0xc0d8, 0x2006,
-  0xc0d9, 0x09c4,
-  0xc0dd, 0x2007,
-  0xc0de, 0x09c9,
-  0xc0e0, 0x2008,
-  0xc0e1, 0x09cc,
-  0xc0e9, 0x2009,
-  0xc0ea, 0x09d5,
-  0xc0eb, 0x200a,
-  0xc0ed, 0x09d8,
-  0xc0ef, 0x200c,
-  0xc0f2, 0x09dd,
-  0xc0f6, 0x200f,
-  0xc0fb, 0x09e6,
-  0xc1a1, 0x09ea,
-  0xc1a4, 0x2014,
-  0xc1a6, 0x09ef,
-  0xc1a9, 0x2016,
-  0xc1ae, 0x09f7,
-  0xc1af, 0x201b,
-  0xc1b9, 0x0a02,
-  0xc1bd, 0x2025,
-  0xc1bf, 0x0a08,
-  0xc1c2, 0x2027,
-  0xc1c3, 0x0a0c,
-  0xc1c6, 0x2028,
-  0xc1c7, 0x0a10,
-  0xc1c9, 0x2029,
-  0xc1ca, 0x0a13,
-  0xc1cd, 0x202a,
-  0xc1ce, 0x0a17,
-  0xc1d4, 0x202b,
-  0xc1d5, 0x0a1e,
-  0xc1d9, 0x202c,
-  0xc1dc, 0x0a25,
-  0xc1de, 0x202f,
-  0xc1df, 0x0a28,
-  0xc1e4, 0x2030,
-  0xc1e6, 0x0a2f,
-  0xc1e9, 0x2032,
-  0xc1ea, 0x0a33,
-  0xc1eb, 0x2033,
-  0xc1ed, 0x0a36,
-  0xc1f3, 0x2035,
-  0xc1f4, 0x0a3d,
-  0xc1f5, 0x2036,
-  0xc1f6, 0x0a3f,
-  0xc1fa, 0x2037,
-  0xc1fe, 0x0a47,
-  0xc2a1, 0x0a48,
-  0xc2a2, 0x203b,
-  0xc2a9, 0x0a50,
-  0xc2ab, 0x2042,
-  0xc2b4, 0x0a5b,
-  0xc2b8, 0x204b,
-  0xc2b9, 0x0a60,
-  0xc2bc, 0x204c,
-  0xc2be, 0x0a65,
-  0xc2bf, 0x204e,
-  0xc2c0, 0x0a67,
-  0xc2c1, 0x204f,
-  0xc2c2, 0x0a69,
-  0xc2c5, 0x2050,
-  0xc2c8, 0x0a6f,
-  0xc2cb, 0x2053,
-  0xc2d1, 0x0a78,
-  0xc2d2, 0x2059,
-  0xc2d3, 0x0a7a,
-  0xc2d5, 0x205a,
-  0xc2dd, 0x0a84,
-  0xc2de, 0x2062,
-  0xc2e3, 0x0a8a,
-  0xc2e6, 0x2067,
-  0xc2e9, 0x0a90,
-  0xc2ea, 0x206a,
-  0xc2ef, 0x0a96,
-  0xc2f0, 0x206f,
-  0xc2f1, 0x0a98,
-  0xc2f2, 0x2070,
-  0xc2f6, 0x0a9d,
-  0xc2f7, 0x2074,
-  0xc2fb, 0x0aa2,
-  0xc3a1, 0x2078,
-  0xc3a2, 0x0aa7,
-  0xc3aa, 0x2079,
-  0xc3ab, 0x0ab0,
-  0xc3ad, 0x207a,
-  0xc3ae, 0x0ab3,
-  0xc3b3, 0x207b,
-  0xc3b4, 0x1df9,
-  0xc3b5, 0x0aba,
-  0xc3be, 0x207c,
-  0xc3bf, 0x0ac4,
-  0xc3c5, 0x207d,
-  0xc3c8, 0x0acd,
-  0xc3cc, 0x2080,
-  0xc3cd, 0x0ad2,
-  0xc3ce, 0x2081,
-  0xc3cf, 0x0ad4,
-  0xc3d5, 0x2082,
-  0xc3d7, 0x0adc,
-  0xc3d9, 0x2084,
-  0xc3da, 0x0adf,
-  0xc3e0, 0x2085,
-  0xc3e1, 0x0ae6,
-  0xc3e5, 0x2086,
-  0xc3e6, 0x0aeb,
-  0xc3ed, 0x2087,
-  0xc3ee, 0x0af3,
-  0xc3f0, 0x2088,
-  0xc3f1, 0x0af6,
-  0xc3f5, 0x2089,
-  0xc3f7, 0x0afc,
-  0xc3f9, 0x208b,
-  0xc3fb, 0x0b00,
-  0xc3fd, 0x208d,
-  0xc3fe, 0x0b03,
-  0xc4a1, 0x0b04,
-  0xc4b1, 0x208e,
-  0xc4b2, 0x0b15,
-  0xc4b6, 0x208f,
-  0xc4b7, 0x0b1a,
-  0xc4c6, 0x2090,
-  0xc4c7, 0x0b2a,
-  0xc4c9, 0x2091,
-  0xc4ca, 0x0b2d,
-  0xc4d1, 0x2092,
-  0xc4d2, 0x0b35,
-  0xc4d3, 0x2093,
-  0xc4d7, 0x0b3a,
-  0xc4d9, 0x2097,
-  0xc4da, 0x0b3d,
-  0xc4e2, 0x2098,
-  0xc4e3, 0x0b46,
-  0xc4e5, 0x2099,
-  0xc4e6, 0x0b49,
-  0xc4ec, 0x209a,
-  0xc4ed, 0x0b50,
-  0xc4f0, 0x209b,
-  0xc4f2, 0x0b55,
-  0xc4f4, 0x209d,
-  0xc4f5, 0x0b58,
-  0xc4f6, 0x209e,
-  0xc4f9, 0x0b5c,
-  0xc4fb, 0x20a1,
-  0xc4fd, 0x0b60,
-  0xc4fe, 0x20a3,
-  0xc5a1, 0x20a4,
-  0xc5a3, 0x0b64,
-  0xc5a5, 0x20a6,
-  0xc5aa, 0x0b6b,
-  0xc5b1, 0x20ab,
-  0xc5b2, 0x0b73,
-  0xc5b5, 0x20ac,
-  0xc5b6, 0x0b77,
-  0xc5b7, 0x20ad,
-  0xc5ba, 0x0b7b,
-  0xc5bb, 0x20b0,
-  0xc5bc, 0x0b7d,
-  0xc5bd, 0x20b1,
-  0xc5be, 0x0b7f,
-  0xc5cc, 0x20b2,
-  0xc5cd, 0x0b8e,
-  0xc5d3, 0x20b3,
-  0xc5d4, 0x0b95,
-  0xc5e2, 0x20b4,
-  0xc5e3, 0x0ba4,
-  0xc5e7, 0x20b5,
-  0xc5e8, 0x0ba9,
-  0xc5f4, 0x20b6,
-  0xc5f5, 0x0bb6,
-  0xc6a1, 0x0bc0,
-  0xc6ad, 0x20b7,
-  0xc6af, 0x0bce,
-  0xc6b5, 0x20b9,
-  0xc6b7, 0x0bd6,
-  0xc6bb, 0x20bb,
-  0xc6bc, 0x0bdb,
-  0xc6be, 0x20bc,
-  0xc6bf, 0x0bde,
-  0xc6c0, 0x20bd,
-  0xc6c1, 0x0be0,
-  0xc6c3, 0x20be,
-  0xc6c5, 0x0be4,
-  0xc6cb, 0x20c0,
-  0xc6ce, 0x0bed,
-  0xc6d3, 0x20c3,
-  0xc6d4, 0x0bf3,
-  0xc6d7, 0x20c4,
-  0xc6d8, 0x0bf7,
-  0xc6ea, 0x20c5,
-  0xc6ec, 0x0c0b,
-  0xc6ef, 0x20c7,
-  0xc6f0, 0x0c0f,
-  0xc6f1, 0x20c8,
-  0xc6f2, 0x0c11,
-  0xc6f4, 0x20c9,
-  0xc6f5, 0x0c14,
-  0xc6f8, 0x20ca,
-  0xc6f9, 0x0c18,
-  0xc6fd, 0x20cb,
-  0xc6fe, 0x0c1d,
-  0xc7a1, 0x0c1e,
-  0xc7a3, 0x20cc,
-  0xc7a4, 0x0c21,
-  0xc7a5, 0x20cd,
-  0xc7a7, 0x0c24,
-  0xc7a8, 0x20cf,
-  0xc7aa, 0x0c27,
-  0xc7ab, 0x20d1,
-  0xc7ac, 0x0c29,
-  0xc7ae, 0x20d2,
-  0xc7b0, 0x0c2d,
-  0xc7b3, 0x20d4,
-  0xc7b6, 0x0c33,
-  0xc7b9, 0x20d7,
-  0xc7bb, 0x0c38,
-  0xc7bd, 0x20d9,
-  0xc7bf, 0x0c3c,
-  0xc7c0, 0x20db,
-  0xc7c1, 0x0c3e,
-  0xc7c2, 0x20dc,
-  0xc7c3, 0x0c40,
-  0xc7c5, 0x20dd,
-  0xc7c6, 0x0c43,
-  0xc7c7, 0x20de,
-  0xc7c9, 0x0c46,
-  0xc7cc, 0x20e0,
-  0xc7cd, 0x0c4a,
-  0xc7cf, 0x20e1,
-  0xc7d0, 0x0c4d,
-  0xc7d4, 0x20e2,
-  0xc7d6, 0x0c53,
-  0xc7d7, 0x20e4,
-  0xc7d8, 0x0c55,
-  0xc7de, 0x20e5,
-  0xc7df, 0x0c5c,
-  0xc7e1, 0x20e6,
-  0xc7e4, 0x0c61,
-  0xc7ea, 0x20e9,
-  0xc7ef, 0x0c6c,
-  0xc7f7, 0x20ee,
-  0xc7f9, 0x0c76,
-  0xc7fb, 0x20f0,
-  0xc7fc, 0x0c79,
-  0xc7fd, 0x20f1,
-  0xc7fe, 0x0c7b,
-  0xc8a1, 0x0c7c,
-  0xc8a3, 0x20f2,
-  0xc8a4, 0x0c7f,
-  0xc8a7, 0x20f3,
-  0xc8a9, 0x0c84,
-  0xc8b0, 0x20f5,
-  0xc8b1, 0x0c8c,
-  0xc8b5, 0x20f6,
-  0xc8b6, 0x0c91,
-  0xc8b7, 0x20f7,
-  0xc8b8, 0x0c93,
-  0xc8c3, 0x20f8,
-  0xc8c7, 0x0ca2,
-  0xc8c8, 0x20fc,
-  0xc8c9, 0x0ca4,
-  0xc8cd, 0x20fd,
-  0xc8ce, 0x0ca9,
-  0xc8cf, 0x20fe,
-  0xc8d0, 0x0cab,
-  0xc8d2, 0x20ff,
-  0xc8d3, 0x0cae,
-  0xc8d9, 0x2100,
-  0xc8da, 0x0cb5,
-  0xc8de, 0x2101,
-  0xc8df, 0x0cba,
-  0xc8ed, 0x2102,
-  0xc8ee, 0x0cc9,
-  0xc8f1, 0x2103,
-  0xc8f4, 0x0ccf,
-  0xc8f7, 0x2106,
-  0xc8f9, 0x0cd4,
-  0xc8fa, 0x2108,
-  0xc8fb, 0x0cd6,
-  0xc8fc, 0x2109,
-  0xc8fd, 0x0cd8,
-  0xc9a1, 0x210a,
-  0xc9a2, 0x0cdb,
-  0xc9a5, 0x210b,
-  0xc9a6, 0x0cdf,
-  0xc9a7, 0x210c,
-  0xc9a9, 0x0ce2,
-  0xc9ac, 0x210e,
-  0xc9ad, 0x0ce6,
-  0xc9b1, 0x210f,
-  0xc9b2, 0x0ceb,
-  0xc9b4, 0x2110,
-  0xc9b5, 0x0cee,
-  0xc9b8, 0x2111,
-  0xc9ba, 0x0cf3,
-  0xc9c1, 0x2113,
-  0xc9c3, 0x0cfc,
-  0xc9c4, 0x2115,
-  0xc9c5, 0x0cfe,
-  0xc9c9, 0x2116,
-  0xc9ca, 0x0d03,
-  0xc9cb, 0x2117,
-  0xc9cc, 0x0d05,
-  0xc9cd, 0x2118,
-  0xc9ce, 0x0d07,
-  0xc9d5, 0x2119,
-  0xc9d6, 0x0d0f,
-  0xc9dc, 0x211a,
-  0xc9dd, 0x0d16,
-  0xc9de, 0x211b,
-  0xc9df, 0x0d18,
-  0xc9e1, 0x211c,
-  0xc9e2, 0x0d1b,
-  0xc9e3, 0x211d,
-  0xc9e4, 0x0d1d,
-  0xc9e5, 0x211e,
-  0xc9e6, 0x0d1f,
-  0xc9e8, 0x211f,
-  0xc9e9, 0x0d22,
-  0xc9f0, 0x2120,
-  0xc9f1, 0x0d2a,
-  0xc9f3, 0x2121,
-  0xc9f5, 0x0d2e,
-  0xc9f6, 0x2123,
-  0xc9f7, 0x0d30,
-  0xc9f8, 0x2124,
-  0xc9fa, 0x0d33,
-  0xc9fe, 0x2126,
-  0xcaa1, 0x0d38,
-  0xcaa4, 0x2127,
-  0xcaa7, 0x0d3e,
-  0xcaa8, 0x212a,
-  0xcaa9, 0x0d40,
-  0xcaaa, 0x212b,
-  0xcaac, 0x0d43,
-  0xcab1, 0x212d,
-  0xcab2, 0x0d49,
-  0xcab4, 0x212e,
-  0xcab7, 0x0d4e,
-  0xcabb, 0x2131,
-  0xcabc, 0x0d53,
-  0xcac6, 0x2132,
-  0xcac7, 0x0d5e,
-  0xcaca, 0x2133,
-  0xcacb, 0x0d62,
-  0xcacd, 0x2134,
-  0xcacf, 0x0d66,
-  0xcad3, 0x2136,
-  0xcad5, 0x0d6c,
-  0xcad9, 0x2138,
-  0xcada, 0x0d71,
-  0xcade, 0x2139,
-  0xcadf, 0x0d76,
-  0xcae0, 0x213a,
-  0xcae1, 0x0d78,
-  0xcae4, 0x213b,
-  0xcae5, 0x0d7c,
-  0xcae9, 0x213c,
-  0xcaeb, 0x0d82,
-  0xcaf4, 0x213e,
-  0xcaf6, 0x0d8d,
-  0xcaf7, 0x2140,
-  0xcaf8, 0x0d8f,
-  0xcafa, 0x2141,
-  0xcafb, 0x0d92,
-  0xcafd, 0x2142,
-  0xcafe, 0x0d95,
-  0xcba1, 0x0d96,
-  0xcba7, 0x2143,
-  0xcba8, 0x0d9d,
-  0xcbab, 0x2144,
-  0xcbac, 0x0da1,
-  0xcbad, 0x2145,
-  0xcbae, 0x0da3,
-  0xcbb3, 0x2146,
-  0xcbb4, 0x0da9,
-  0xcbb5, 0x2147,
-  0xcbb7, 0x0dac,
-  0xcbb8, 0x2149,
-  0xcbb9, 0x0dae,
-  0xcbbf, 0x214a,
-  0xcbc0, 0x0db5,
-  0xcbc7, 0x214b,
-  0xcbc8, 0x0dbd,
-  0xcbc9, 0x214c,
-  0xcbcd, 0x0dc2,
-  0xcbcf, 0x2150,
-  0xcbd1, 0x0dc6,
-  0xcbd3, 0x2152,
-  0xcbd4, 0x0dc9,
-  0xcbd5, 0x2153,
-  0xcbd6, 0x0dcb,
-  0xcbdf, 0x2154,
-  0xcbe1, 0x0dd6,
-  0xcbe4, 0x2156,
-  0xcbe5, 0x0dda,
-  0xcbe6, 0x2157,
-  0xcbe8, 0x0ddd,
-  0xcbea, 0x2159,
-  0xcbeb, 0x0de0,
-  0xcbef, 0x215a,
-  0xcbf1, 0x0de6,
-  0xcbf5, 0x215c,
-  0xcbf7, 0x0dec,
-  0xcbf8, 0x215e,
-  0xcbf9, 0x0dee,
-  0xcca1, 0x215f,
-  0xcca3, 0x0df6,
-  0xcca8, 0x2161,
-  0xcca9, 0x0dfc,
-  0xccac, 0x2162,
-  0xccad, 0x0e00,
-  0xccaf, 0x2163,
-  0xccb4, 0x0e07,
-  0xccb7, 0x2168,
-  0xccb9, 0x0e0c,
-  0xccbe, 0x216a,
-  0xccbf, 0x0e12,
-  0xccc0, 0x216b,
-  0xccc1, 0x0e14,
-  0xcccc, 0x216c,
-  0xcccd, 0x0e20,
-  0xccce, 0x216d,
-  0xcccf, 0x0e22,
-  0xccd0, 0x216e,
-  0xccd1, 0x0e24,
-  0xccd6, 0x216f,
-  0xccd7, 0x0e2a,
-  0xccda, 0x2170,
-  0xccdb, 0x0e2e,
-  0xccdc, 0x2171,
-  0xccdd, 0x0e30,
-  0xcce0, 0x2172,
-  0xcce1, 0x0e34,
-  0xcce2, 0x2173,
-  0xcce3, 0x0e36,
-  0xcce5, 0x2174,
-  0xcce6, 0x0e39,
-  0xccf5, 0x2175,
-  0xccf6, 0x0e49,
-  0xccf9, 0x2176,
-  0xccfb, 0x0e4e,
-  0xccfc, 0x2178,
-  0xcda1, 0x0e52,
-  0xcdad, 0x217b,
-  0xcdae, 0x0e5f,
-  0xcdb3, 0x217c,
-  0xcdb4, 0x0e65,
-  0xcdb7, 0x217d,
-  0xcdb8, 0x0e69,
-  0xcdbc, 0x217e,
-  0xcdbd, 0x0e6e,
-  0xcdbf, 0x217f,
-  0xcdc0, 0x0e71,
-  0xcdc5, 0x2180,
-  0xcdc6, 0x0e77,
-  0xcdc7, 0x2181,
-  0xcdc8, 0x0e79,
-  0xcdd2, 0x2182,
-  0xcdd3, 0x0e84,
-  0xcdd4, 0x2183,
-  0xcdd7, 0x0e88,
-  0xcddd, 0x2186,
-  0xcdde, 0x0e8f,
-  0xcde0, 0x2187,
-  0xcde1, 0x0e92,
-  0xcde4, 0x2188,
-  0xcde6, 0x0e97,
-  0xcde7, 0x218a,
-  0xcde8, 0x0e99,
-  0xcdf2, 0x218b,
-  0xcdf3, 0x0ea4,
-  0xcdf8, 0x218c,
-  0xcdf9, 0x0eaa,
-  0xcea1, 0x0eb0,
-  0xcea4, 0x218d,
-  0xcea6, 0x0eb5,
-  0xcea7, 0x218f,
-  0xcea8, 0x0eb7,
-  0xceaa, 0x2190,
-  0xceae, 0x0ebd,
-  0xceb0, 0x2194,
-  0xceb2, 0x0ec1,
-  0xceb3, 0x2196,
-  0xceb4, 0x0ec3,
-  0xcebd, 0x2197,
-  0xcebe, 0x0ecd,
-  0xcec0, 0x2198,
-  0xcec1, 0x0ed0,
-  0xcec5, 0x2199,
-  0xcec7, 0x0ed6,
-  0xcec8, 0x219b,
-  0xcec9, 0x0ed8,
-  0xceca, 0x219c,
-  0xcecb, 0x0eda,
-  0xcece, 0x219d,
-  0xced2, 0x0ee1,
-  0xced8, 0x21a1,
-  0xcedb, 0x0eea,
-  0xcedc, 0x21a4,
-  0xcedd, 0x0eec,
-  0xcede, 0x21a5,
-  0xcee0, 0x0eef,
-  0xceeb, 0x21a7,
-  0xceec, 0x0efb,
-  0xceed, 0x21a8,
-  0xceee, 0x0efd,
-  0xcef1, 0x21a9,
-  0xcef2, 0x0f01,
-  0xcef3, 0x21aa,
-  0xcef4, 0x0f03,
-  0xcefd, 0x21ab,
-  0xcfa1, 0x0f0e,
-  0xcfae, 0x21ad,
-  0xcfaf, 0x0f1c,
-  0xcfb0, 0x21ae,
-  0xcfb1, 0x0f1e,
-  0xcfb3, 0x21af,
-  0xcfb4, 0x0f21,
-  0xcfb7, 0x21b0,
-  0xcfb9, 0x0f26,
-  0xcfba, 0x21b2,
-  0xcfbb, 0x0f28,
-  0xcfbd, 0x21b3,
-  0xcfbe, 0x0f2b,
-  0xcfbf, 0x21b4,
-  0xcfc2, 0x0f2f,
-  0xcfc5, 0x21b7,
-  0xcfc6, 0x0f33,
-  0xcfc7, 0x21b8,
-  0xcfc8, 0x0f35,
-  0xcfca, 0x21b9,
-  0xcfcc, 0x0f39,
-  0xcfcd, 0x21bb,
-  0xcfcf, 0x0f3c,
-  0xcfd0, 0x21bd,
-  0xcfd1, 0x0f3e,
-  0xcfd4, 0x21be,
-  0xcfd9, 0x0f46,
-  0xcfda, 0x21c3,
-  0xcfdb, 0x0f48,
-  0xcfdc, 0x21c4,
-  0xcfdd, 0x0f4a,
-  0xcfdf, 0x21c5,
-  0xcfe0, 0x0f4d,
-  0xcfe2, 0x21c6,
-  0xcfe3, 0x0f50,
-  0xcfe7, 0x21c7,
-  0xcfe8, 0x0f55,
-  0xcfea, 0x21c8,
-  0xcfeb, 0x0f58,
-  0xcfec, 0x21c9,
-  0xcfed, 0x0f5a,
-  0xcfee, 0x21ca,
-  0xcfef, 0x0f5c,
-  0xcff4, 0x21cb,
-  0xcff5, 0x0f62,
-  0xcff9, 0x21cc,
-  0xcffb, 0x0f68,
-  0xcffe, 0x21ce,
-  0xd0a1, 0x0f6c,
-  0xd0a5, 0x21cf,
-  0xd0a6, 0x0f71,
-  0xd0ad, 0x21d0,
-  0xd0af, 0x0f7a,
-  0xd0b2, 0x21d2,
-  0xd0b5, 0x0f80,
-  0xd0ba, 0x21d5,
-  0xd0bc, 0x0f87,
-  0xd0bf, 0x21d7,
-  0xd0c0, 0x0f8b,
-  0xd0c6, 0x21d8,
-  0xd0c7, 0x0f92,
-  0xd0cb, 0x21d9,
-  0xd0cc, 0x0f97,
-  0xd0e2, 0x21da,
-  0xd0e3, 0x0fae,
-  0xd0e5, 0x21db,
-  0xd0e6, 0x0fb1,
-  0xd0eb, 0x21dc,
-  0xd0ec, 0x0fb7,
-  0xd0ed, 0x21dd,
-  0xd0ee, 0x0fb9,
-  0xd0f7, 0x21de,
-  0xd0fa, 0x0fc5,
-  0xd0fc, 0x21e1,
-  0xd0fd, 0x0fc8,
-  0xd1a1, 0x21e2,
-  0xd1a3, 0x0fcc,
-  0xd1a4, 0x21e4,
-  0xd1a5, 0x0fce,
-  0xd1a7, 0x21e5,
-  0xd1a8, 0x0fd1,
-  0xd1ab, 0x21e6,
-  0xd1ac, 0x0fd5,
-  0xd1af, 0x21e7,
-  0xd1b2, 0x0fdb,
-  0xd1b5, 0x21ea,
-  0xd1b8, 0x0fe1,
-  0xd1b9, 0x21ed,
-  0xd1ba, 0x0fe3,
-  0xd1bb, 0x21ee,
-  0xd1bd, 0x0fe6,
-  0xd1c6, 0x21f0,
-  0xd1c9, 0x0ff2,
-  0xd1cb, 0x21f3,
-  0xd1cc, 0x0ff5,
-  0xd1ce, 0x21f4,
-  0xd1d0, 0x0ff9,
-  0xd1d5, 0x21f6,
-  0xd1d7, 0x1000,
-  0xd1de, 0x21f8,
-  0xd1df, 0x1008,
-  0xd1e1, 0x21f9,
-  0xd1e3, 0x100c,
-  0xd1e8, 0x21fb,
-  0xd1ea, 0x1013,
-  0xd1ec, 0x21fd,
-  0xd1ed, 0x1016,
-  0xd1ee, 0x21fe,
-  0xd1f0, 0x1019,
-  0xd1f1, 0x2200,
-  0xd1f2, 0x101b,
-  0xd1f4, 0x2201,
-  0xd1f5, 0x101e,
-  0xd1f7, 0x2202,
-  0xd1fa, 0x1023,
-  0xd2a1, 0x1028,
-  0xd2a2, 0x2205,
-  0xd2a3, 0x102a,
-  0xd2a5, 0x2206,
-  0xd2a6, 0x102d,
-  0xd2a9, 0x2207,
-  0xd2aa, 0x1031,
-  0xd2af, 0x2208,
-  0xd2b0, 0x1037,
-  0xd2b3, 0x2209,
-  0xd2b4, 0x103b,
-  0xd2b5, 0x220a,
-  0xd2b7, 0x103e,
-  0xd2bd, 0x220c,
-  0xd2be, 0x1045,
-  0xd2bf, 0x220d,
-  0xd2c0, 0x1047,
-  0xd2c3, 0x220e,
-  0xd2c4, 0x104b,
-  0xd2c5, 0x220f,
-  0xd2c6, 0x104d,
-  0xd2c7, 0x2210,
-  0xd2c8, 0x104f,
-  0xd2cf, 0x2211,
-  0xd2d0, 0x1057,
-  0xd2d5, 0x2212,
-  0xd2d6, 0x105d,
-  0xd2da, 0x2213,
-  0xd2db, 0x1062,
-  0xd2e4, 0x2214,
-  0xd2e6, 0x106d,
-  0xd2e8, 0x2216,
-  0xd2ec, 0x1073,
-  0xd2ef, 0x221a,
-  0xd2f0, 0x1077,
-  0xd2f1, 0x221b,
-  0xd2f2, 0x1079,
-  0xd2f5, 0x221c,
-  0xd2f6, 0x107d,
-  0xd2f8, 0x221d,
-  0xd2f9, 0x1080,
-  0xd2fb, 0x221e,
-  0xd2fc, 0x1083,
-  0xd2fe, 0x221f,
-  0xd3a1, 0x1086,
-  0xd3a3, 0x2220,
-  0xd3ad, 0x1092,
-  0xd3ae, 0x222a,
-  0xd3af, 0x1094,
-  0xd3b1, 0x222b,
-  0xd3b2, 0x1097,
-  0xd3b4, 0x222c,
-  0xd3b7, 0x109c,
-  0xd3b8, 0x222f,
-  0xd3b9, 0x109e,
-  0xd3bb, 0x2230,
-  0xd3bc, 0x10a1,
-  0xd3c5, 0x2231,
-  0xd3c6, 0x10ab,
-  0xd3c7, 0x2232,
-  0xd3c8, 0x10ad,
-  0xd3ca, 0x2233,
-  0xd3cd, 0x10b2,
-  0xd3d5, 0x2236,
-  0xd3d6, 0x10bb,
-  0xd3df, 0x2237,
-  0xd3e1, 0x10c6,
-  0xd3e3, 0x2239,
-  0xd3e4, 0x10c9,
-  0xd3e6, 0x223a,
-  0xd3e7, 0x10cc,
-  0xd3eb, 0x223b,
-  0xd3ed, 0x10d2,
-  0xd3ef, 0x223d,
-  0xd3f0, 0x10d5,
-  0xd3f4, 0x223e,
-  0xd3f5, 0x10da,
-  0xd3fc, 0x223f,
-  0xd3fd, 0x10e2,
-  0xd3fe, 0x2240,
-  0xd4a1, 0x10e4,
-  0xd4a4, 0x2241,
-  0xd4a5, 0x10e8,
-  0xd4a6, 0x2242,
-  0xd4a9, 0x10ec,
-  0xd4af, 0x2245,
-  0xd4b3, 0x10f6,
-  0xd4b5, 0x2249,
-  0xd4b7, 0x10fa,
-  0xd4b8, 0x224b,
-  0xd4b9, 0x10fc,
-  0xd4bc, 0x224c,
-  0xd4bd, 0x1100,
-  0xd4be, 0x224d,
-  0xd4c0, 0x1103,
-  0xd4c4, 0x224f,
-  0xd4c5, 0x1108,
-  0xd4c6, 0x2250,
-  0xd4c8, 0x110b,
-  0xd4c9, 0x2252,
-  0xd4ca, 0x110d,
-  0xd4cb, 0x2253,
-  0xd4cf, 0x1112,
-  0xd4d3, 0x2257,
-  0xd4d4, 0x1117,
-  0xd4d8, 0x2258,
-  0xd4d9, 0x111c,
-  0xd4dc, 0x2259,
-  0xd4e1, 0x1124,
-  0xd4e4, 0x225e,
-  0xd4e5, 0x1128,
-  0xd4e6, 0x225f,
-  0xd4e7, 0x112a,
-  0xd4ee, 0x2260,
-  0xd4ef, 0x1132,
-  0xd4f0, 0x2261,
-  0xd4f5, 0x1138,
-  0xd4f9, 0x2266,
-  0xd4fa, 0x113d,
-  0xd4fe, 0x2267,
-  0xd5a1, 0x2268,
-  0xd5a3, 0x1144,
-  0xd5a9, 0x226a,
-  0xd5aa, 0x114b,
-  0xd5ab, 0x226b,
-  0xd5ac, 0x114d,
-  0xd5ae, 0x226c,
-  0xd5af, 0x1150,
-  0xd5b1, 0x226d,
-  0xd5b2, 0x1153,
-  0xd5b5, 0x226e,
-  0xd5b9, 0x115a,
-  0xd5bb, 0x2272,
-  0xd5bc, 0x115d,
-  0xd5bd, 0x2273,
-  0xd5be, 0x115f,
-  0xd5c0, 0x2274,
-  0xd5c1, 0x1162,
-  0xd5c5, 0x2275,
-  0xd5c6, 0x1167,
-  0xd5c7, 0x2276,
-  0xd5c8, 0x1169,
-  0xd5ca, 0x2277,
-  0xd5cc, 0x116d,
-  0xd5cd, 0x2279,
-  0xd5ce, 0x116f,
-  0xd5d4, 0x227a,
-  0xd5d5, 0x1176,
-  0xd5dd, 0x227b,
-  0xd5df, 0x1180,
-  0xd5e0, 0x227d,
-  0xd5e1, 0x1182,
-  0xd5e2, 0x227e,
-  0xd5e3, 0x1184,
-  0xd5ea, 0x227f,
-  0xd5ed, 0x118e,
-  0xd5ef, 0x2282,
-  0xd5f0, 0x1191,
-  0xd5f2, 0x2283,
-  0xd5f4, 0x1195,
-  0xd5f7, 0x15eb,
-  0xd5f8, 0x1199,
-  0xd6a1, 0x2285,
-  0xd6a5, 0x11a4,
-  0xd6af, 0x2289,
-  0xd6b1, 0x11b0,
-  0xd6b4, 0x228b,
-  0xd6b5, 0x11b4,
-  0xd6bb, 0x228c,
-  0xd6bc, 0x11bb,
-  0xd6bd, 0x228d,
-  0xd6be, 0x11bd,
-  0xd6bf, 0x228e,
-  0xd6c1, 0x11c0,
-  0xd6c4, 0x2290,
-  0xd6c5, 0x11c4,
-  0xd6ca, 0x2291,
-  0xd6cb, 0x11ca,
-  0xd6cd, 0x2292,
-  0xd6ce, 0x11cd,
-  0xd6d3, 0x2293,
-  0xd6d4, 0x11d3,
-  0xd6d5, 0x2294,
-  0xd6d8, 0x11d7,
-  0xd6da, 0x2297,
-  0xd6db, 0x11da,
-  0xd6df, 0x2298,
-  0xd6e0, 0x11df,
-  0xd6e1, 0x2299,
-  0xd6e2, 0x11e1,
-  0xd6e5, 0x229a,
-  0xd6e6, 0x11e5,
-  0xd6e7, 0x229b,
-  0xd6e9, 0x11e8,
-  0xd6ee, 0x229d,
-  0xd6f0, 0x11ef,
-  0xd6f2, 0x229f,
-  0xd6f3, 0x11f2,
-  0xd6f5, 0x22a0,
-  0xd6f7, 0x11f6,
-  0xd6fc, 0x22a2,
-  0xd7a1, 0x11fe,
-  0xd7a4, 0x22a5,
-  0xd7a5, 0x1202,
-  0xd7a8, 0x22a6,
-  0xd7ab, 0x1208,
-  0xd7ac, 0x22a9,
-  0xd7ad, 0x120a,
-  0xd7ae, 0x22aa,
-  0xd7b2, 0x120f,
-  0xd7b3, 0x22ae,
-  0xd7b5, 0x1212,
-  0xd7b6, 0x22b0,
-  0xd7b7, 0x1214,
-  0xd7b8, 0x22b1,
-  0xd7bd, 0x121a,
-  0xd7c7, 0x22b6,
-  0xd7c8, 0x1225,
-  0xd7ca, 0x22b7,
-  0xd7cb, 0x1228,
-  0xd7d5, 0x22b8,
-  0xd7d6, 0x1233,
-  0xd7db, 0x22b9,
-  0xd7df, 0x123c,
-  0xd7e7, 0x22bd,
-  0xd7e8, 0x1245,
-  0xd7e9, 0x22be,
-  0xd7eb, 0x1248,
-  0xd8a1, 0x1257,
-  0xd8c4, 0x22c0,
-  0xd8c5, 0x127b,
-  0xd8c7, 0x22c1,
-  0xd8c8, 0x127e,
-  0xd8c9, 0x22c2,
-  0xd8ca, 0x1280,
-  0xd8cc, 0x22c3,
-  0xd8ce, 0x1284,
-  0xd8d0, 0x22c5,
-  0xd8d2, 0x1288,
-  0xd8d3, 0x22c7,
-  0xd8d4, 0x128a,
-  0xd8d9, 0x22c8,
-  0xd8da, 0x1290,
-  0xd8db, 0x22c9,
-  0xd8dd, 0x1293,
-  0xd8f1, 0x22cb,
-  0xd8f2, 0x12a8,
-  0xd8f6, 0x22cc,
-  0xd8f8, 0x12ae,
-  0xd9a1, 0x12b5,
-  0xd9ad, 0x22ce,
-  0xd9ae, 0x12c2,
-  0xd9af, 0x22cf,
-  0xd9b0, 0x12c4,
-  0xd9b1, 0x22d0,
-  0xd9b4, 0x12c8,
-  0xd9c7, 0x22d3,
-  0xd9c8, 0x12dc,
-  0xd9cd, 0x22d4,
-  0xd9d1, 0x12e5,
-  0xd9dd, 0x22d8,
-  0xd9de, 0x12f2,
-  0xd9e1, 0x22d9,
-  0xd9e2, 0x12f6,
-  0xd9e4, 0x22da,
-  0xd9e5, 0x12f9,
-  0xd9e6, 0x22db,
-  0xd9e7, 0x12fb,
-  0xd9ec, 0x22dc,
-  0xd9ed, 0x1301,
-  0xd9f4, 0x22dd,
-  0xd9f6, 0x130a,
-  0xdaa1, 0x1313,
-  0xdaa5, 0x22df,
-  0xdae0, 0x1352,
-  0xdaea, 0x231a,
-  0xdaeb, 0x135d,
-  0xdaf7, 0x231b,
-  0xdaf8, 0x136a,
-  0xdaf9, 0x231c,
-  0xdafa, 0x136c,
-  0xdafe, 0x231d,
-  0xdba1, 0x1371,
-  0xdba3, 0x231e,
-  0xdba4, 0x1374,
-  0xdba6, 0x231f,
-  0xdba7, 0x1377,
-  0xdba9, 0x2320,
-  0xdbab, 0x137b,
-  0xdbbb, 0x2322,
-  0xdbbc, 0x138c,
-  0xdbbd, 0x2323,
-  0xdbbe, 0x138e,
-  0xdbcf, 0x2324,
-  0xdbd0, 0x13a0,
-  0xdbd1, 0x2325,
-  0xdbd2, 0x13a2,
-  0xdbdb, 0x2326,
-  0xdbdc, 0x13ac,
-  0xdbde, 0x2327,
-  0xdbdf, 0x13af,
-  0xdbe2, 0x2328,
-  0xdbe3, 0x13b3,
-  0xdbe4, 0x2329,
-  0xdbe5, 0x13b5,
-  0xdbeb, 0x232a,
-  0xdbec, 0x13bc,
-  0xdbee, 0x232b,
-  0xdbef, 0x13bf,
-  0xdbf1, 0x232c,
-  0xdbf2, 0x13c2,
-  0xdbf5, 0x232d,
-  0xdbf8, 0x13c8,
-  0xdca1, 0x13cf,
-  0xdcbc, 0x2330,
-  0xdcbd, 0x13eb,
-  0xdcbf, 0x2331,
-  0xdcc0, 0x13ee,
-  0xdcc2, 0x2332,
-  0xdcc3, 0x13f1,
-  0xdcc8, 0x2333,
-  0xdccb, 0x13f9,
-  0xdcd1, 0x2336,
-  0xdcd2, 0x1400,
-  0xdcd7, 0x2337,
-  0xdcd8, 0x1406,
-  0xdce0, 0x2338,
-  0xdce1, 0x140f,
-  0xdce3, 0x2339,
-  0xdce5, 0x1413,
-  0xdce9, 0x233b,
-  0xdceb, 0x1419,
-  0xdcf1, 0x233d,
-  0xdcf2, 0x1420,
-  0xdcf6, 0x233e,
-  0xdcf7, 0x1425,
-  0xdcf9, 0x233f,
-  0xdcfa, 0x1428,
-  0xdcfd, 0x2340,
-  0xdda1, 0x2342,
-  0xdda2, 0x142e,
-  0xdda3, 0x2343,
-  0xdda8, 0x1434,
-  0xddaa, 0x2348,
-  0xddac, 0x1438,
-  0xddb2, 0x234a,
-  0xddb3, 0x143f,
-  0xddb5, 0x234b,
-  0xddb6, 0x1442,
-  0xddba, 0x234c,
-  0xddbc, 0x1448,
-  0xddd3, 0x234e,
-  0xddd4, 0x1460,
-  0xdddb, 0x234f,
-  0xdddc, 0x1468,
-  0xddde, 0x2350,
-  0xdddf, 0x146b,
-  0xdde4, 0x2351,
-  0xdde5, 0x1471,
-  0xddeb, 0x2352,
-  0xddec, 0x1478,
-  0xddf1, 0x2353,
-  0xddf2, 0x147e,
-  0xddf6, 0x2354,
-  0xddf8, 0x1484,
-  0xddfc, 0x2356,
-  0xddfd, 0x1489,
-  0xddfe, 0x2357,
-  0xdea1, 0x148b,
-  0xdead, 0x2358,
-  0xdeae, 0x1498,
-  0xdeb4, 0x2359,
-  0xdeb5, 0x149f,
-  0xdeba, 0x235a,
-  0xdebb, 0x14a5,
-  0xdec6, 0x235b,
-  0xdec7, 0x14b1,
-  0xdecf, 0x235c,
-  0xded0, 0x14ba,
-  0xded1, 0x235d,
-  0xded3, 0x14bd,
-  0xded8, 0x235f,
-  0xded9, 0x14c3,
-  0xdee2, 0x2360,
-  0xdee3, 0x14cd,
-  0xdee8, 0x2361,
-  0xdee9, 0x14d3,
-  0xdeec, 0x2362,
-  0xdeed, 0x14d7,
-  0xdef3, 0x2363,
-  0xdef4, 0x14de,
-  0xdefc, 0x2364,
-  0xdefd, 0x14e7,
-  0xdfa1, 0x14e9,
-  0xdfa2, 0x2365,
-  0xdfa4, 0x14ec,
-  0xdfa5, 0x2367,
-  0xdfa6, 0x14ee,
-  0xdfb4, 0x2368,
-  0xdfb5, 0x14fd,
-  0xdfbc, 0x2369,
-  0xdfbe, 0x1506,
-  0xdfbf, 0x236b,
-  0xdfc0, 0x1508,
-  0xdfc2, 0x236c,
-  0xdfc4, 0x150c,
-  0xdfcc, 0x236e,
-  0xdfcd, 0x1515,
-  0xdfd0, 0x236f,
-  0xdfd1, 0x1519,
-  0xdfd5, 0x2370,
-  0xdfd6, 0x151e,
-  0xdfd8, 0x2371,
-  0xdfda, 0x1522,
-  0xdfdc, 0x2373,
-  0xdfdd, 0x1525,
-  0xdfe0, 0x2374,
-  0xdfe1, 0x1529,
-  0xdfe2, 0x2375,
-  0xdfe3, 0x152b,
-  0xdfe6, 0x2376,
-  0xdfe7, 0x152f,
-  0xdfe9, 0x2377,
-  0xdfea, 0x1532,
-  0xdfeb, 0x2378,
-  0xdfec, 0x1534,
-  0xdfef, 0x2379,
-  0xdff0, 0x1538,
-  0xdff5, 0x237a,
-  0xdff6, 0x153e,
-  0xdff9, 0x237b,
-  0xdffa, 0x1542,
-  0xe0a1, 0x1547,
-  0xe0b6, 0x237c,
-  0xe0b8, 0x155e,
-  0xe0bf, 0x237e,
-  0xe0c0, 0x1566,
-  0xe0c8, 0x237f,
-  0xe0c9, 0x156f,
-  0xe0ce, 0x2380,
-  0xe0cf, 0x1575,
-  0xe0d3, 0x2381,
-  0xe0d4, 0x157a,
-  0xe0e0, 0x2382,
-  0xe0e1, 0x1587,
-  0xe0f0, 0x2383,
-  0xe0f1, 0x1597,
-  0xe0f8, 0x2384,
-  0xe0f9, 0x159f,
-  0xe0fc, 0x2385,
-  0xe1a1, 0x15a5,
-  0xe1ab, 0x2388,
-  0xe1ac, 0x15b0,
-  0xe1ad, 0x2389,
-  0xe1ae, 0x15b2,
-  0xe1b0, 0x238a,
-  0xe1b1, 0x15b5,
-  0xe1b4, 0x238b,
-  0xe1b5, 0x15b9,
-  0xe1bb, 0x238c,
-  0xe1bc, 0x15c0,
-  0xe1bd, 0x238d,
-  0xe1be, 0x15c2,
-  0xe1c0, 0x238e,
-  0xe1c2, 0x15c6,
-  0xe1c9, 0x2390,
-  0xe1ca, 0x15ce,
-  0xe1d0, 0x2391,
-  0xe1d1, 0x15d5,
-  0xe1db, 0x2392,
-  0xe1dc, 0x15e0,
-  0xe1e1, 0x07aa,
-  0xe1e2, 0x2393,
-  0xe1e3, 0x15e7,
-  0xe1e7, 0x1198,
-  0xe1e8, 0x15ec,
-  0xe1ee, 0x2394,
-  0xe1f0, 0x15f4,
-  0xe1f6, 0x2396,
-  0xe1f7, 0x15fb,
-  0xe1f8, 0x2397,
-  0xe1f9, 0x15fd,
-  0xe1fd, 0x2398,
-  0xe1fe, 0x1602,
-  0xe2a1, 0x1603,
-  0xe2a4, 0x2399,
-  0xe2a5, 0x1607,
-  0xe2a8, 0x239a,
-  0xe2a9, 0x160b,
-  0xe2bb, 0x239b,
-  0xe2c5, 0x10c5,
-  0xe2c6, 0x23a5,
-  0xe2cf, 0x1631,
-  0xe2d0, 0x23ae,
-  0xe2d1, 0x1633,
-  0xe2d9, 0x23af,
-  0xe2da, 0x163c,
-  0xe2e3, 0x23b0,
-  0xe2e5, 0x1647,
-  0xe2e6, 0x23b2,
-  0xe2e7, 0x1649,
-  0xe2e9, 0x23b3,
-  0xe2ec, 0x164e,
-  0xe2f8, 0x23b6,
-  0xe2f9, 0x165b,
-  0xe2fa, 0x23b7,
-  0xe2fe, 0x1660,
-  0xe3a1, 0x1661,
-  0xe3a2, 0x23bb,
-  0xe3a3, 0x1663,
-  0xe3a5, 0x23bc,
-  0xe3a6, 0x1666,
-  0xe3ab, 0x23bd,
-  0xe3ac, 0x166c,
-  0xe3b4, 0x23be,
-  0xe3b5, 0x1675,
-  0xe3c5, 0x23bf,
-  0xe3dc, 0x169c,
-  0xe3e3, 0x23d6,
-  0xe3e4, 0x16a4,
-  0xe3ed, 0x23d7,
-  0xe3ee, 0x16ae,
-  0xe3f1, 0x23d8,
-  0xe3f3, 0x16b3,
-  0xe3f8, 0x23da,
-  0xe3f9, 0x16b9,
-  0xe3fe, 0x23db,
-  0xe4a1, 0x16bf,
-  0xe4a4, 0x23dc,
-  0xe4a6, 0x16c4,
-  0xe4ab, 0x23de,
-  0xe4ac, 0x16ca,
-  0xe4af, 0x23df,
-  0xe4b2, 0x16d0,
-  0xe4b5, 0x23e2,
-  0xe4b7, 0x16d5,
-  0xe4c2, 0x23e4,
-  0xe4c3, 0x16e1,
-  0xe4c5, 0x23e5,
-  0xe4c6, 0x16e4,
-  0xe4c9, 0x23e6,
-  0xe4ca, 0x16e8,
-  0xe4d9, 0x23e7,
-  0xe4da, 0x16f8,
-  0xe4dc, 0x23e8,
-  0xe4dd, 0x16fb,
-  0xe4de, 0x23e9,
-  0xe4df, 0x16fd,
-  0xe4e4, 0x23ea,
-  0xe4e5, 0x1703,
-  0xe4eb, 0x23eb,
-  0xe4ed, 0x170b,
-  0xe4f2, 0x23ed,
-  0xe4f3, 0x1711,
-  0xe4fe, 0x23ee,
-  0xe5a1, 0x171d,
-  0xe5b0, 0x23ef,
-  0xe5b1, 0x172d,
-  0xe5b9, 0x23f0,
-  0xe5ba, 0x1736,
-  0xe5c7, 0x23f1,
-  0xe5c8, 0x1744,
-  0xe5c9, 0x23f2,
-  0xe5ca, 0x1746,
-  0xe5ce, 0x23f3,
-  0xe5cf, 0x174b,
-  0xe5f0, 0x23f4,
-  0xe5f1, 0x176d,
-  0xe5f2, 0x23f5,
-  0xe5f3, 0x176f,
-  0xe5fc, 0x23f6,
-  0xe5fe, 0x177a,
-  0xe6a1, 0x177b,
-  0xe6a3, 0x23f8,
-  0xe6a4, 0x177e,
-  0xe6ab, 0x23f9,
-  0xe6ad, 0x1787,
-  0xe6ae, 0x23fb,
-  0xe6af, 0x1789,
-  0xe6b4, 0x23fc,
-  0xe6b6, 0x1790,
-  0xe6bf, 0x23fe,
-  0xe6c0, 0x179a,
-  0xe6c8, 0x23ff,
-  0xe6ca, 0x17a4,
-  0xe6cd, 0x2401,
-  0xe6ce, 0x17a8,
-  0xe6e0, 0x2402,
-  0xe7a1, 0x2421,
-  0xe7db, 0x1813,
-  0xe7e1, 0x245b,
-  0xe7e3, 0x181b,
-  0xe7e7, 0x245d,
-  0xe7e8, 0x1820,
-  0xe7ef, 0x245e,
-  0xe7f0, 0x1828,
-  0xe7f4, 0x245f,
-  0xe7f7, 0x182f,
-  0xe8a1, 0x1837,
-  0xe8a8, 0x2462,
-  0xe8a9, 0x183f,
-  0xe8ac, 0x2463,
-  0xe8ad, 0x1843,
-  0xe8b6, 0x2464,
-  0xe8b7, 0x184d,
-  0xe8b8, 0x2465,
-  0xe8bb, 0x1851,
-  0xe8bf, 0x2468,
-  0xe8c1, 0x1857,
-  0xe8c5, 0x246a,
-  0xe8c6, 0x185c,
-  0xe8c7, 0x246b,
-  0xe8ca, 0x1860,
-  0xe8ce, 0x246e,
-  0xe8cf, 0x1865,
-  0xe8d0, 0x246f,
-  0xe8d1, 0x1867,
-  0xe8d3, 0x2470,
-  0xe8d4, 0x186a,
-  0xe8dd, 0x2471,
-  0xe8de, 0x1874,
-  0xe8df, 0x2472,
-  0xe8e0, 0x1876,
-  0xe8e2, 0x2473,
-  0xe8e4, 0x187a,
-  0xe8e5, 0x2475,
-  0xe8e6, 0x187c,
-  0xe8e7, 0x2476,
-  0xe8e8, 0x187e,
-  0xe8eb, 0x2477,
-  0xe8ec, 0x1882,
-  0xe8ed, 0x2478,
-  0xe8ee, 0x1884,
-  0xe8ef, 0x2479,
-  0xe8f0, 0x1886,
-  0xe8f9, 0x247a,
-  0xe8fa, 0x1890,
-  0xe8fc, 0x247b,
-  0xe8fe, 0x1894,
-  0xe9a1, 0x247d,
-  0xe9a2, 0x1896,
-  0xe9ad, 0x247e,
-  0xe9ae, 0x18a2,
-  0xe9b4, 0x247f,
-  0xe9b6, 0x18aa,
-  0xe9b7, 0x2481,
-  0xe9b8, 0x18ac,
-  0xe9c4, 0x2482,
-  0xe9c5, 0x18b9,
-  0xe9c6, 0x2483,
-  0xe9c7, 0x18bb,
-  0xe9c9, 0x2484,
-  0xe9ca, 0x18be,
-  0xe9d6, 0x2485,
-  0xe9d7, 0x18cb,
-  0xe9da, 0x2486,
-  0xe9db, 0x18cf,
-  0xe9e4, 0x2487,
-  0xe9e5, 0x18d9,
-  0xe9e6, 0x2488,
-  0xe9e8, 0x18dc,
-  0xe9e9, 0x248a,
-  0xe9ea, 0x18de,
-  0xe9eb, 0x248b,
-  0xe9ec, 0x18e0,
-  0xe9ed, 0x248c,
-  0xeaa1, 0x249e,
-  0xeaa6, 0x18f8,
-  0xeaa7, 0x24a3,
-  0xeaa9, 0x18fb,
-  0xeab1, 0x24a5,
-  0xeab2, 0x1904,
-  0xeabc, 0x24a6,
-  0xeabd, 0x190f,
-  0xeaca, 0x24a7,
-  0xeacb, 0x191d,
-  0xeacd, 0x24a8,
-  0xeace, 0x1920,
-  0xead3, 0x24a9,
-  0xead4, 0x1926,
-  0xeada, 0x24aa,
-  0xeaf0, 0x1942,
-  0xeba1, 0x1951,
-  0xeba7, 0x24c0,
-  0xeba8, 0x1958,
-  0xebaa, 0x24c1,
-  0xebab, 0x195b,
-  0xebb2, 0x24c2,
-  0xebb3, 0x1963,
-  0xebb9, 0x24c3,
-  0xebba, 0x196a,
-  0xebca, 0x24c4,
-  0xebcc, 0x197c,
-  0xebcd, 0x24c6,
-  0xebce, 0x197e,
-  0xebd6, 0x24c7,
-  0xebd7, 0x1987,
-  0xebda, 0x24c8,
-  0xebdb, 0x198b,
-  0xebe1, 0x24c9,
-  0xebe2, 0x1992,
-  0xebf7, 0x24ca,
-  0xebf8, 0x19a8,
-  0xeca1, 0x19af,
-  0xeca3, 0x24cb,
-  0xeca4, 0x19b2,
-  0xeca9, 0x24cc,
-  0xecaf, 0x19bd,
-  0xecb1, 0x24d2,
-  0xecb2, 0x19c0,
-  0xecb4, 0x24d3,
-  0xecb6, 0x19c4,
-  0xecbe, 0x24d5,
-  0xecc0, 0x19ce,
-  0xecc1, 0x24d7,
-  0xecc2, 0x19d0,
-  0xecc7, 0x24d8,
-  0xecc8, 0x19d6,
-  0xeccb, 0x24d9,
-  0xeccc, 0x19da,
-  0xece2, 0x24da,
-  0xece3, 0x19f1,
-  0xecf2, 0x24db,
-  0xecf3, 0x1a01,
-  0xecf5, 0x24dc,
-  0xecf6, 0x1a04,
-  0xecf8, 0x24dd,
-  0xecf9, 0x1a07,
-  0xeda1, 0x24de,
-  0xeda2, 0x1a0e,
-  0xeda8, 0x24df,
-  0xeda9, 0x1a15,
-  0xedaf, 0x24e0,
-  0xedb1, 0x1a1d,
-  0xedb4, 0x24e2,
-  0xedb5, 0x1a21,
-  0xedb6, 0x24e3,
-  0xedb7, 0x1a23,
-  0xedb8, 0x24e4,
-  0xedb9, 0x1a25,
-  0xedba, 0x24e5,
-  0xedbb, 0x1a27,
-  0xedbf, 0x24e6,
-  0xedc0, 0x1a2c,
-  0xedc2, 0x24e7,
-  0xedc4, 0x1a30,
-  0xedcc, 0x24e9,
-  0xedce, 0x1a3a,
-  0xedd3, 0x24eb,
-  0xedd4, 0x1a40,
-  0xedd7, 0x24ec,
-  0xedd8, 0x1a44,
-  0xede8, 0x24ed,
-  0xede9, 0x1a55,
-  0xedee, 0x24ee,
-  0xedef, 0x1a5b,
-  0xedf9, 0x24ef,
-  0xedfb, 0x1a67,
-  0xeea1, 0x1a6b,
-  0xeebc, 0x24f1,
-  0xeebd, 0x1a87,
-  0xeebf, 0x24f2,
-  0xeec0, 0x1a8a,
-  0xeec4, 0x24f3,
-  0xefa1, 0x252e,
-  0xeff2, 0x1b1a,
-  0xf0a1, 0x1b27,
-  0xf0a3, 0x257f,
-  0xf0a4, 0x1b2a,
-  0xf0af, 0x2580,
-  0xf0da, 0x1b60,
-  0xf0dc, 0x25ab,
-  0xf0de, 0x1b64,
-  0xf0df, 0x25ad,
-  0xf0e0, 0x1b66,
-  0xf0e9, 0x25ae,
-  0xf0ea, 0x1b70,
-  0xf0ec, 0x25af,
-  0xf0ed, 0x1b73,
-  0xf0ef, 0x25b0,
-  0xf0f0, 0x1b76,
-  0xf0f7, 0x25b1,
-  0xf0f8, 0x1b7e,
-  0xf0f9, 0x25b2,
-  0xf0fa, 0x1b80,
-  0xf0fc, 0x25b3,
-  0xf0fd, 0x1b83,
-  0xf1a1, 0x1b85,
-  0xf1a8, 0x25b4,
-  0xf1a9, 0x1b8d,
-  0xf1ab, 0x25b5,
-  0xf1ac, 0x1b90,
-  0xf1ae, 0x25b6,
-  0xf1af, 0x1b93,
-  0xf1b2, 0x25b7,
-  0xf1b3, 0x1b97,
-  0xf1bc, 0x25b8,
-  0xf1bd, 0x1ba1,
-  0xf1c0, 0x25b9,
-  0xf1c1, 0x1ba5,
-  0xf1c9, 0x25ba,
-  0xf1ca, 0x1bae,
-  0xf1cd, 0x25bb,
-  0xf1ce, 0x1bb2,
-  0xf1cf, 0x25bc,
-  0xf1d1, 0x1bb5,
-  0xf1da, 0x25be,
-  0xf1db, 0x1bbf,
-  0xf1dc, 0x25bf,
-  0xf1dd, 0x1bc1,
-  0xf1e4, 0x25c0,
-  0xf1e5, 0x1bc9,
-  0xf1ec, 0x25c1,
-  0xf1ed, 0x1bd1,
-  0xf1ef, 0x25c2,
-  0xf1f0, 0x1bd4,
-  0xf1f7, 0x25c3,
-  0xf1f8, 0x1bdc,
-  0xf1f9, 0x25c4,
-  0xf1fa, 0x1bde,
-  0xf1fc, 0x25c5,
-  0xf2a1, 0x25c8,
-  0xf2ae, 0x1bf0,
-  0xf2b1, 0x25d5,
-  0xf2b3, 0x1bf5,
-  0xf2b9, 0x25d7,
-  0xf2ba, 0x1bfc,
-  0xf2c3, 0x25d8,
-  0xf2c4, 0x1c06,
-  0xf2c9, 0x25d9,
-  0xf2ca, 0x1c0c,
-  0xf2cc, 0x25da,
-  0xf2ce, 0x1c10,
-  0xf2cf, 0x25dc,
-  0xf2d0, 0x1c12,
-  0xf2d3, 0x25dd,
-  0xf2d4, 0x1c16,
-  0xf2e5, 0x25de,
-  0xf2e6, 0x1c28,
-  0xf2ee, 0x25df,
-  0xf2ef, 0x1c31,
-  0xf2f7, 0x25e0,
-  0xf2f8, 0x1c3a,
-  0xf2fd, 0x25e1,
-  0xf2fe, 0x1c40,
-  0xf3a1, 0x1c41,
-  0xf3bf, 0x25e2,
-  0xf3c0, 0x1c60,
-  0xf3c6, 0x25e3,
-  0xf3c7, 0x1c67,
-  0xf3c8, 0x25e4,
-  0xf3c9, 0x1c69,
-  0xf3d6, 0x25e5,
-  0xf3d7, 0x1c77,
-  0xf3d9, 0x25e6,
-  0xf3da, 0x1c7a,
-  0xf3e5, 0x25e7,
-  0xf3e7, 0x1c87,
-  0xf3ea, 0x25e9,
-  0xf3eb, 0x1c8b,
-  0xf3ec, 0x25ea,
-  0xf3ed, 0x1c8d,
-  0xf3ef, 0x25eb,
-  0xf3f0, 0x1c90,
-  0xf3f1, 0x25ec,
-  0xf3f2, 0x1c92,
-  0xf3fd, 0x25ed,
-  0xf3fe, 0x1c9e,
-  0xf4a1, 0x1c9f,
-  0xf4a5, 0x25ee,
-  0xf4a6, 0x1ca4,
-  0xf4af, 0x25ef,
-  0xf4b0, 0x1cae,
-  0xf4b5, 0x25f0,
-  0xf4b6, 0x1cb4,
-  0xf4c1, 0x25f1,
-  0xf4c2, 0x1cc0,
-  0xf4c7, 0x25f2,
-  0xf4c8, 0x1cc6,
-  0xf4cf, 0x25f3,
-  0xf4d1, 0x1ccf,
-  0xf4d6, 0x25f5,
-  0xf4d7, 0x1cd5,
-  0xf4ea, 0x25f6,
-  0xf4eb, 0x1ce9,
-  0xf4ef, 0x25f7,
-  0xf4f0, 0x1cee,
-  0xf4f5, 0x25f8,
-  0xf4f6, 0x1cf4,
-  0xf5a1, 0x1cfd,
-  0xf5a6, 0x25f9,
-  0xf5a8, 0x1d04,
-  0xf5ba, 0x25fb,
-  0xf5bc, 0x1d18,
-  0xf5c4, 0x25fd,
-  0xf5c5, 0x1d21,
-  0xf5c8, 0x25fe,
-  0xf5c9, 0x1d25,
-  0xf5ce, 0x25ff,
-  0xf5d0, 0x1d2c,
-  0xf5d1, 0x2601,
-  0xf5d3, 0x1d2f,
-  0xf5d9, 0x2603,
-  0xf5da, 0x1d36,
-  0xf5dc, 0x2604,
-  0xf5dd, 0x1d39,
-  0xf5e6, 0x2605,
-  0xf5e8, 0x1d44,
-  0xf5ef, 0x2607,
-  0xf5f0, 0x1d4c,
-  0xf5f2, 0x2608,
-  0xf5f3, 0x1d4f,
-  0xf5fc, 0x2609,
-  0xf5fd, 0x1d59,
-  0xf6a1, 0x1d5b,
-  0xf6a3, 0x260a,
-  0xf6a4, 0x1d5e,
-  0xf6a6, 0x260b,
-  0xf6a7, 0x1d61,
-  0xf6a8, 0x260c,
-  0xf6a9, 0x1d63,
-  0xf6ab, 0x260d,
-  0xf6ac, 0x1d66,
-  0xf6b0, 0x260e,
-  0xf6b1, 0x1d6b,
-  0xf6b3, 0x260f,
-  0xf6bf, 0x1d79,
-  0xf6c5, 0x261b,
-  0xf6c6, 0x1d80,
-  0xf6c7, 0x261c,
-  0xf6c8, 0x1d82,
-  0xf6c9, 0x261d,
-  0xf6ca, 0x1d84,
-  0xf6cf, 0x261e,
-  0xf7a1, 0x264e,
-  0xf7b0, 0x1dc8,
-  0xf7b2, 0x265d,
-  0xf7b4, 0x1dcc,
-  0xf7b5, 0x265f,
-  0xf7b6, 0x1dce,
-  0xf7bd, 0x2660,
-  0xf7be, 0x1dd6,
-  0xf7c3, 0x2661,
-  0xf7c4, 0x1ddc,
-  0xf7c5, 0x2662,
-  0xf7c7, 0x1ddf,
-  0xf7ca, 0x2664,
-  0xf7cc, 0x1de4,
-  0xf7cf, 0x2666,
-  0xf7d1, 0x1de9,
-  0xf7de, 0x2668,
-  0xf7df, 0x1df7,
-  0xf7e1, 0x0ab9,
-  0xf7e2, 0x1dfa,
-  0xf7f2, 0x2669,
-  0xf7f3, 0x1e0b,
-  0xf7f5, 0x266a,
-  0xf7f6, 0x1e0e,
-  0xf8a1, 0x266b,
-  0xf8a7, 0x04cc,
-  0xf8a8, 0x050a,
-  0xf8a9, 0x0518,
-  0xf8aa, 0x2671,
-  0xf8ac, 0x0594,
-  0xf8ad, 0x05ce,
-  0xf8ae, 0x2673,
-  0xf8af, 0x05f6,
-  0xf8b0, 0x2674,
-  0xf8b2, 0x0653,
-  0xf8b3, 0x067e,
-  0xf8b4, 0x2676,
-  0xf8b5, 0x06c4,
-  0xf8b6, 0x2677,
-  0xf8b8, 0x073c,
-  0xf8b9, 0x2679,
-  0xf8bb, 0x07c3,
-  0xf8bc, 0x267b,
-  0xf8c0, 0x082b,
-  0xf8c1, 0x267f,
-  0xf8c2, 0x084e,
-  0xf8c3, 0x0869,
-  0xf8c4, 0x2680,
-  0xf8c6, 0x090c,
-  0xf8c7, 0x2682,
-  0xf8c9, 0x0971,
-  0xf8ca, 0x2684,
-  0xf8cb, 0x099a,
-  0xf8cd, 0x2685,
-  0xf8ce, 0x09da,
-  0xf8cf, 0x2686,
-  0xf8d0, 0x09fa,
-  0xf8d1, 0x2687,
-  0xf8dc, 0x0bda,
-  0xf8dd, 0x0bdd,
-  0xf8de, 0x0bea,
-  0xf8df, 0x0bec,
-  0xf8e0, 0x0bf2,
-  0xf8e1, 0x2692,
-  0xf8e6, 0x0c92,
-  0xf8e7, 0x0d1a,
-  0xf8e8, 0x0d8c,
-  0xf8e9, 0x0dbe,
-  0xf8ea, 0x2697,
-  0xf8eb, 0x0dfb,
-  0xf8ec, 0x2698,
-  0xf8ef, 0x0e70,
-  0xf8f0, 0x269b,
-  0xf8f1, 0x0ea3,
-  0xf8f2, 0x269c,
-  0xf8f8, 0x103d,
-  0xf8f9, 0x10d9,
-  0xf8fa, 0x26a2,
-  0xf8fc, 0x10fb,
-  0xf8fd, 0x1109,
-  0xf8fe, 0x26a4,
-  0xf9a1, 0x11a1,
-  0xf9a2, 0x26a5,
-  0xf9a3, 0x11ba,
-  0xf9a4, 0x26a6,
-  0xf9a6, 0x11d5,
-  0xf9a7, 0x26a8,
-  0xf9a8, 0x11fd,
-  0xf9a9, 0x1219,
-  0xa1a2, 0x023f,
-  0xa1a3, 0x023e,
-  0xa1aa, 0x0256,
-  0xa1ab, 0x1e18,
-  0xa1ad, 0x0257,
-  0xa1b2, 0x0246,
-  0xa1fe, 0x1e1a,
-  0xa3a1, 0x0242,
-  0xa3a8, 0x0244,
-  0xa3ac, 0x023d,
-  0xa3ae, 0x1e1b,
-  0xa3ba, 0x0240,
-  0xa3bd, 0x1e1c,
-  0xa3bf, 0x0243,
-  0xa3db, 0x1e1d,
-  0xa3dd, 0x1e1e,
-  0xa3df, 0x0258,
-  0xa3fb, 0x0254,
-  0xa3fd, 0x0255,
-  0xa3fe, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBTpcEUCVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x1e20, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e21, 0x1e22, 0x1e23 },
-  gb12GBTpcEUCVMap2, 2303
-};
-
-static Gushort gb12GBpcEUCHMap2[180] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb1a1, 0x040a,
-  0xb2a1, 0x0468,
-  0xb3a1, 0x04c6,
-  0xb4a1, 0x0524,
-  0xb5a1, 0x0582,
-  0xb6a1, 0x05e0,
-  0xb7a1, 0x063e,
-  0xb8a1, 0x069c,
-  0xb9a1, 0x06fa,
-  0xbaa1, 0x0758,
-  0xbba1, 0x07b6,
-  0xbca1, 0x0814,
-  0xbda1, 0x0872,
-  0xbea1, 0x08d0,
-  0xbfa1, 0x092e,
-  0xc0a1, 0x098c,
-  0xc1a1, 0x09ea,
-  0xc2a1, 0x0a48,
-  0xc3a1, 0x0aa6,
-  0xc4a1, 0x0b04,
-  0xc5a1, 0x0b62,
-  0xc6a1, 0x0bc0,
-  0xc7a1, 0x0c1e,
-  0xc8a1, 0x0c7c,
-  0xc9a1, 0x0cda,
-  0xcaa1, 0x0d38,
-  0xcba1, 0x0d96,
-  0xcca1, 0x0df4,
-  0xcda1, 0x0e52,
-  0xcea1, 0x0eb0,
-  0xcfa1, 0x0f0e,
-  0xd0a1, 0x0f6c,
-  0xd1a1, 0x0fca,
-  0xd2a1, 0x1028,
-  0xd3a1, 0x1086,
-  0xd4a1, 0x10e4,
-  0xd5a1, 0x1142,
-  0xd6a1, 0x11a0,
-  0xd7a1, 0x11fe,
-  0xd8a1, 0x1257,
-  0xd9a1, 0x12b5,
-  0xdaa1, 0x1313,
-  0xdba1, 0x1371,
-  0xdca1, 0x13cf,
-  0xdda1, 0x142d,
-  0xdea1, 0x148b,
-  0xdfa1, 0x14e9,
-  0xe0a1, 0x1547,
-  0xe1a1, 0x15a5,
-  0xe2a1, 0x1603,
-  0xe3a1, 0x1661,
-  0xe4a1, 0x16bf,
-  0xe5a1, 0x171d,
-  0xe6a1, 0x177b,
-  0xe7a1, 0x17d9,
-  0xe8a1, 0x1837,
-  0xe9a1, 0x1895,
-  0xeaa1, 0x18f3,
-  0xeba1, 0x1951,
-  0xeca1, 0x19af,
-  0xeda1, 0x1a0d,
-  0xeea1, 0x1a6b,
-  0xefa1, 0x1ac9,
-  0xf0a1, 0x1b27,
-  0xf1a1, 0x1b85,
-  0xf2a1, 0x1be3,
-  0xf3a1, 0x1c41,
-  0xf4a1, 0x1c9f,
-  0xf5a1, 0x1cfd,
-  0xf6a1, 0x1d5b,
-  0xf7a1, 0x1db9,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBpcEUCHEnc16 = {
-  0,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x1e20, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e21, 0x1e22, 0x1e23 },
-  gb12GBpcEUCHMap2, 90
-};
-
-static Gushort gb12GBpcEUCVMap2[220] = {
-  0x0000, 0x0000,
-  0xa1a1, 0x0060,
-  0xa2b1, 0x00be,
-  0xa2e5, 0x00f0,
-  0xa2f1, 0x00fa,
-  0xa3a1, 0x0106,
-  0xa4a1, 0x0164,
-  0xa5a1, 0x01b7,
-  0xa6a1, 0x020d,
-  0xa6c1, 0x0225,
-  0xa7a1, 0x025a,
-  0xa7d1, 0x027b,
-  0xa8a1, 0x029c,
-  0xa8c5, 0x02bc,
-  0xa9a4, 0x02e2,
-  0xaaa1, 0x032e,
-  0xaba1, 0x038c,
-  0xb0a1, 0x03ac,
-  0xb1a1, 0x040a,
-  0xb2a1, 0x0468,
-  0xb3a1, 0x04c6,
-  0xb4a1, 0x0524,
-  0xb5a1, 0x0582,
-  0xb6a1, 0x05e0,
-  0xb7a1, 0x063e,
-  0xb8a1, 0x069c,
-  0xb9a1, 0x06fa,
-  0xbaa1, 0x0758,
-  0xbba1, 0x07b6,
-  0xbca1, 0x0814,
-  0xbda1, 0x0872,
-  0xbea1, 0x08d0,
-  0xbfa1, 0x092e,
-  0xc0a1, 0x098c,
-  0xc1a1, 0x09ea,
-  0xc2a1, 0x0a48,
-  0xc3a1, 0x0aa6,
-  0xc4a1, 0x0b04,
-  0xc5a1, 0x0b62,
-  0xc6a1, 0x0bc0,
-  0xc7a1, 0x0c1e,
-  0xc8a1, 0x0c7c,
-  0xc9a1, 0x0cda,
-  0xcaa1, 0x0d38,
-  0xcba1, 0x0d96,
-  0xcca1, 0x0df4,
-  0xcda1, 0x0e52,
-  0xcea1, 0x0eb0,
-  0xcfa1, 0x0f0e,
-  0xd0a1, 0x0f6c,
-  0xd1a1, 0x0fca,
-  0xd2a1, 0x1028,
-  0xd3a1, 0x1086,
-  0xd4a1, 0x10e4,
-  0xd5a1, 0x1142,
-  0xd6a1, 0x11a0,
-  0xd7a1, 0x11fe,
-  0xd8a1, 0x1257,
-  0xd9a1, 0x12b5,
-  0xdaa1, 0x1313,
-  0xdba1, 0x1371,
-  0xdca1, 0x13cf,
-  0xdda1, 0x142d,
-  0xdea1, 0x148b,
-  0xdfa1, 0x14e9,
-  0xe0a1, 0x1547,
-  0xe1a1, 0x15a5,
-  0xe2a1, 0x1603,
-  0xe3a1, 0x1661,
-  0xe4a1, 0x16bf,
-  0xe5a1, 0x171d,
-  0xe6a1, 0x177b,
-  0xe7a1, 0x17d9,
-  0xe8a1, 0x1837,
-  0xe9a1, 0x1895,
-  0xeaa1, 0x18f3,
-  0xeba1, 0x1951,
-  0xeca1, 0x19af,
-  0xeda1, 0x1a0d,
-  0xeea1, 0x1a6b,
-  0xefa1, 0x1ac9,
-  0xf0a1, 0x1b27,
-  0xf1a1, 0x1b85,
-  0xf2a1, 0x1be3,
-  0xf3a1, 0x1c41,
-  0xf4a1, 0x1c9f,
-  0xf5a1, 0x1cfd,
-  0xf6a1, 0x1d5b,
-  0xf7a1, 0x1db9,
-  0xa1a2, 0x023f,
-  0xa1a3, 0x023e,
-  0xa1aa, 0x0256,
-  0xa1ab, 0x1e18,
-  0xa1ad, 0x0257,
-  0xa1b2, 0x0246,
-  0xa1fe, 0x1e1a,
-  0xa3a1, 0x0242,
-  0xa3a8, 0x0244,
-  0xa3ac, 0x023d,
-  0xa3ae, 0x1e1b,
-  0xa3ba, 0x0240,
-  0xa3bd, 0x1e1c,
-  0xa3bf, 0x0243,
-  0xa3db, 0x1e1d,
-  0xa3dd, 0x1e1e,
-  0xa3df, 0x0258,
-  0xa3fb, 0x0254,
-  0xa3fd, 0x0255,
-  0xa3fe, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12GBpcEUCVEnc16 = {
-  1,
-  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000,
-    0x1e20, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e21, 0x1e22, 0x1e23 },
-  gb12GBpcEUCVMap2, 110
-};
-
-static Gushort gb12UniGBUCS2HMap2[26922] = {
-  0x0000, 0x0000,
-  0x0020, 0x0001,
-  0x00a4, 0x00a7,
-  0x00a7, 0x00ab,
-  0x00a8, 0x0066,
-  0x00b0, 0x00a2,
-  0x00b1, 0x007f,
-  0x00d7, 0x0080,
-  0x00e0, 0x029f,
-  0x00e1, 0x029d,
-  0x00e8, 0x02a3,
-  0x00e9, 0x02a1,
-  0x00ea, 0x02b5,
-  0x00ec, 0x02a7,
-  0x00ed, 0x02a5,
-  0x00f2, 0x02ab,
-  0x00f3, 0x02a9,
-  0x00f7, 0x0081,
-  0x00f9, 0x02af,
-  0x00fa, 0x02ad,
-  0x00fc, 0x02b4,
-  0x0101, 0x029c,
-  0x0113, 0x02a0,
-  0x011b, 0x02a2,
-  0x012b, 0x02a4,
-  0x014d, 0x02a8,
-  0x016b, 0x02ac,
-  0x01ce, 0x029e,
-  0x01d0, 0x02a6,
-  0x01d2, 0x02aa,
-  0x01d4, 0x02ae,
-  0x01d6, 0x02b0,
-  0x01d8, 0x02b1,
-  0x01da, 0x02b2,
-  0x01dc, 0x02b3,
-  0x02c7, 0x0065,
-  0x02c9, 0x0064,
-  0x02ca, 0x26b3,
-  0x02d9, 0x26b5,
-  0x0391, 0x020d,
-  0x03a3, 0x021e,
-  0x03b1, 0x0225,
-  0x03c3, 0x0236,
-  0x0401, 0x0260,
-  0x0410, 0x025a,
-  0x0416, 0x0261,
-  0x0436, 0x0282,
-  0x0451, 0x0281,
-  0x1e3f, 0x02b7,
-  0x2010, 0x2722,
-  0x2013, 0x26b6,
-  0x2014, 0x0069,
-  0x2015, 0x26b7,
-  0x2016, 0x006b,
-  0x2018, 0x006d,
-  0x201c, 0x006f,
-  0x2025, 0x26b8,
-  0x2026, 0x006c,
-  0x2030, 0x00aa,
-  0x2032, 0x00a3,
-  0x2035, 0x26b9,
-  0x203b, 0x00b8,
-  0x2103, 0x00a5,
-  0x2105, 0x26ba,
-  0x2109, 0x26bb,
-  0x2116, 0x00ac,
-  0x2121, 0x2720,
-  0x2160, 0x00fa,
-  0x2170, 0x26a9,
-  0x2190, 0x00ba,
-  0x2192, 0x00b9,
-  0x2193, 0x00bc,
-  0x2196, 0x26bc,
-  0x2208, 0x0089,
-  0x220f, 0x0086,
-  0x2211, 0x0085,
-  0x2215, 0x26c0,
-  0x221a, 0x008b,
-  0x221d, 0x0097,
-  0x221e, 0x009d,
-  0x221f, 0x26c1,
-  0x2220, 0x008e,
-  0x2223, 0x26c2,
-  0x2225, 0x008d,
-  0x2227, 0x0083,
-  0x2229, 0x0088,
-  0x222a, 0x0087,
-  0x222b, 0x0091,
-  0x222e, 0x0092,
-  0x2234, 0x009f,
-  0x2235, 0x009e,
-  0x2236, 0x0082,
-  0x2237, 0x008a,
-  0x223d, 0x0096,
-  0x2248, 0x0095,
-  0x224c, 0x0094,
-  0x2252, 0x26c3,
-  0x2260, 0x0098,
-  0x2261, 0x0093,
-  0x2264, 0x009b,
-  0x2266, 0x26c4,
-  0x226e, 0x0099,
-  0x2295, 0x2704,
-  0x2299, 0x0090,
-  0x22a5, 0x008c,
-  0x22bf, 0x26c6,
-  0x22ef, 0x006c,
-  0x2312, 0x008f,
-  0x2460, 0x00e6,
-  0x2474, 0x00d2,
-  0x2488, 0x00be,
-  0x2500, 0x02e2,
-  0x2550, 0x26c7,
-  0x2581, 0x26eb,
-  0x2593, 0x26fa,
-  0x25a0, 0x00b5,
-  0x25a1, 0x00b4,
-  0x25b2, 0x00b7,
-  0x25b3, 0x00b6,
-  0x25bc, 0x26fd,
-  0x25c6, 0x00b3,
-  0x25c7, 0x00b2,
-  0x25cb, 0x00af,
-  0x25ce, 0x00b1,
-  0x25cf, 0x00b0,
-  0x25e2, 0x26ff,
-  0x2605, 0x00ae,
-  0x2606, 0x00ad,
-  0x2609, 0x2703,
-  0x2640, 0x00a1,
-  0x2642, 0x00a0,
-  0x3000, 0x0060,
-  0x3003, 0x0067,
-  0x3005, 0x0068,
-  0x3006, 0x2728,
-  0x3007, 0x1e17,
-  0x3008, 0x0073,
-  0x3010, 0x007d,
-  0x3012, 0x2705,
-  0x3013, 0x00bd,
-  0x3014, 0x0071,
-  0x3016, 0x007b,
-  0x301d, 0x2706,
-  0x3021, 0x2708,
-  0x3041, 0x0164,
-  0x309b, 0x2724,
-  0x309d, 0x2729,
-  0x30a1, 0x01b7,
-  0x30fb, 0x0063,
-  0x30fc, 0x2723,
-  0x30fd, 0x2726,
-  0x3105, 0x02bc,
-  0x3220, 0x00f0,
-  0x3231, 0x2721,
-  0x32a3, 0x2711,
-  0x338e, 0x2712,
-  0x339c, 0x2714,
-  0x33a1, 0x2717,
-  0x33c4, 0x2718,
-  0x33ce, 0x2719,
-  0x33d1, 0x271a,
-  0x33d5, 0x271c,
-  0x4e00, 0x1042,
-  0x4e01, 0x05e0,
-  0x4e02, 0x2758,
-  0x4e03, 0x0bfe,
-  0x4e04, 0x2759,
-  0x4e07, 0x0ea3,
-  0x4e08, 0x116a,
-  0x4e09, 0x0cd8,
-  0x4e0a, 0x0d08,
-  0x4e0b, 0x0f2f,
-  0x4e0c, 0x1258,
-  0x4e0d, 0x0482,
-  0x4e0e, 0x10d0,
-  0x4e0f, 0x275c,
-  0x4e10, 0x125a,
-  0x4e11, 0x0518,
-  0x4e12, 0x275d,
-  0x4e13, 0x1205,
-  0x4e14, 0x0c4f,
-  0x4e15, 0x125d,
-  0x4e16, 0x0d57,
-  0x4e17, 0x275e,
-  0x4e18, 0x0c6d,
-  0x4e19, 0x0464,
-  0x4e1a, 0x103c,
-  0x4e1b, 0x0557,
-  0x4e1c, 0x05ea,
-  0x4e1d, 0x0db4,
-  0x4e1e, 0x125f,
-  0x4e1f, 0x275f,
-  0x4e22, 0x05e9,
-  0x4e23, 0x2762,
-  0x4e24, 0x0a06,
-  0x4e25, 0x0ff8,
-  0x4e26, 0x2763,
-  0x4e27, 0x0cde,
-  0x4e28, 0x1263,
-  0x4e29, 0x2764,
-  0x4e2a, 0x06f1,
-  0x4e2b, 0x0fe7,
-  0x4e2c, 0x169c,
-  0x4e2d, 0x11cf,
-  0x4e2e, 0x2765,
-  0x4e30, 0x067e,
-  0x4e31, 0x2767,
-  0x4e32, 0x0531,
-  0x4e33, 0x2768,
-  0x4e34, 0x0a22,
-  0x4e35, 0x2769,
-  0x4e36, 0x1272,
-  0x4e37, 0x276a,
-  0x4e38, 0x0e99,
-  0x4e39, 0x0585,
-  0x4e3a, 0x0eb9,
-  0x4e3b, 0x11f6,
-  0x4e3c, 0x276b,
-  0x4e3d, 0x09e1,
-  0x4e3e, 0x0908,
-  0x4e3f, 0x1265,
-  0x4e40, 0x276c,
-  0x4e43, 0x0b2e,
-  0x4e44, 0x276f,
-  0x4e45, 0x08f2,
-  0x4e46, 0x2770,
-  0x4e47, 0x1267,
-  0x4e48, 0x0ab9,
-  0x4e49, 0x106c,
-  0x4e4a, 0x2771,
-  0x4e4b, 0x11ad,
-  0x4e4c, 0x0ee9,
-  0x4e4d, 0x1148,
-  0x4e4e, 0x07ac,
-  0x4e4f, 0x0643,
-  0x4e50, 0x09c1,
-  0x4e51, 0x2772,
-  0x4e52, 0x0bd8,
-  0x4e53, 0x0b93,
-  0x4e54, 0x0c44,
-  0x4e55, 0x2773,
-  0x4e56, 0x072d,
-  0x4e57, 0x2774,
-  0x4e58, 0x04f0,
-  0x4e59, 0x1059,
-  0x4e5a, 0x2775,
-  0x4e5c, 0x1275,
-  0x4e5d, 0x08f4,
-  0x4e5e, 0x0c11,
-  0x4e5f, 0x1039,
-  0x4e60, 0x0f1d,
-  0x4e61, 0x0f54,
-  0x4e62, 0x2777,
-  0x4e66, 0x0d80,
-  0x4e67, 0x277b,
-  0x4e69, 0x1276,
-  0x4e6a, 0x277d,
-  0x4e70, 0x0a99,
-  0x4e71, 0x0a79,
-  0x4e72, 0x2783,
-  0x4e73, 0x0cc4,
-  0x4e74, 0x2784,
-  0x4e7e, 0x0c29,
-  0x4e7f, 0x278e,
-  0x4e82, 0x2059,
-  0x4e83, 0x2791,
-  0x4e86, 0x0a14,
-  0x4e87, 0x2794,
-  0x4e88, 0x10cd,
-  0x4e89, 0x119a,
-  0x4e8a, 0x2795,
-  0x4e8b, 0x0d59,
-  0x4e8c, 0x063d,
-  0x4e8d, 0x1257,
-  0x4e8e, 0x10bf,
-  0x4e8f, 0x0984,
-  0x4e90, 0x2796,
-  0x4e91, 0x1109,
-  0x4e92, 0x07ba,
-  0x4e93, 0x1277,
-  0x4e94, 0x0ef4,
-  0x4e95, 0x08dd,
-  0x4e96, 0x2797,
-  0x4e98, 0x125e,
-  0x4e99, 0x2799,
-  0x4e9a, 0x0ff0,
-  0x4e9b, 0x0f74,
-  0x4e9c, 0x279a,
-  0x4e9e, 0x21f1,
-  0x4e9f, 0x1273,
-  0x4ea0, 0x1303,
-  0x4ea1, 0x0ea7,
-  0x4ea2, 0x0947,
-  0x4ea3, 0x279c,
-  0x4ea4, 0x088c,
-  0x4ea5, 0x075c,
-  0x4ea6, 0x1067,
-  0x4ea7, 0x04c1,
-  0x4ea8, 0x0797,
-  0x4ea9, 0x0b19,
-  0x4eaa, 0x279d,
-  0x4eab, 0x0f5a,
-  0x4eac, 0x08d8,
-  0x4ead, 0x0e55,
-  0x4eae, 0x0a0a,
-  0x4eaf, 0x279e,
-  0x4eb2, 0x0c54,
-  0x4eb3, 0x1305,
-  0x4eb4, 0x27a1,
-  0x4eb5, 0x1308,
-  0x4eb6, 0x27a2,
-  0x4eba, 0x0ca6,
-  0x4ebb, 0x129f,
-  0x4ebc, 0x27a6,
-  0x4ebf, 0x1061,
-  0x4ec0, 0x0d49,
-  0x4ec1, 0x0ca5,
-  0x4ec2, 0x12a2,
-  0x4ec3, 0x12a0,
-  0x4ec4, 0x127c,
-  0x4ec5, 0x08c7,
-  0x4ec6, 0x0bec,
-  0x4ec7, 0x0515,
-  0x4ec8, 0x27a9,
-  0x4ec9, 0x12a1,
-  0x4eca, 0x08c2,
-  0x4ecb, 0x08ba,
-  0x4ecc, 0x27aa,
-  0x4ecd, 0x0caf,
-  0x4ece, 0x0556,
-  0x4ecf, 0x27ab,
-  0x4ed1, 0x0a7f,
-  0x4ed2, 0x27ad,
-  0x4ed3, 0x049d,
-  0x4ed4, 0x122d,
-  0x4ed5, 0x0d62,
-  0x4ed6, 0x0df0,
-  0x4ed7, 0x116d,
-  0x4ed8, 0x06b1,
-  0x4ed9, 0x0f36,
-  0x4eda, 0x27ae,
-  0x4edd, 0x12ee,
-  0x4ede, 0x12a6,
-  0x4edf, 0x0c27,
-  0x4ee0, 0x27b1,
-  0x4ee1, 0x12a4,
-  0x4ee2, 0x27b2,
-  0x4ee3, 0x057d,
-  0x4ee4, 0x0a37,
-  0x4ee5, 0x105b,
-  0x4ee6, 0x27b3,
-  0x4ee8, 0x12a3,
-  0x4ee9, 0x27b5,
-  0x4eea, 0x104e,
-  0x4eeb, 0x12a5,
-  0x4eec, 0x0acc,
-  0x4eed, 0x27b6,
-  0x4ef0, 0x101f,
-  0x4ef1, 0x27b9,
-  0x4ef2, 0x11d8,
-  0x4ef3, 0x12a8,
-  0x4ef4, 0x27ba,
-  0x4ef5, 0x12ab,
-  0x4ef6, 0x0871,
-  0x4ef7, 0x084e,
-  0x4ef8, 0x27bb,
-  0x4efb, 0x0ca9,
-  0x4efc, 0x27be,
-  0x4efd, 0x067a,
-  0x4efe, 0x27bf,
-  0x4eff, 0x065f,
-  0x4f00, 0x27c0,
-  0x4f01, 0x0c12,
-  0x4f02, 0x27c1,
-  0x4f09, 0x12ae,
-  0x4f0a, 0x1048,
-  0x4f0b, 0x27c8,
-  0x4f0d, 0x0ef8,
-  0x4f0e, 0x0832,
-  0x4f0f, 0x0699,
-  0x4f10, 0x0642,
-  0x4f11, 0x0fa8,
-  0x4f12, 0x27ca,
-  0x4f17, 0x11d9,
-  0x4f18, 0x10aa,
-  0x4f19, 0x0804,
-  0x4f1a, 0x07f6,
-  0x4f1b, 0x12a7,
-  0x4f1c, 0x27cf,
-  0x4f1e, 0x0cda,
-  0x4f1f, 0x0ebf,
-  0x4f20, 0x052e,
-  0x4f21, 0x27d1,
-  0x4f22, 0x12a9,
-  0x4f23, 0x27d2,
-  0x4f24, 0x0d04,
-  0x4f25, 0x12ac,
-  0x4f26, 0x0a7e,
-  0x4f27, 0x12ad,
-  0x4f28, 0x27d3,
-  0x4f2a, 0x0ec0,
-  0x4f2b, 0x12af,
-  0x4f2c, 0x27d5,
-  0x4f2f, 0x0475,
-  0x4f30, 0x0719,
-  0x4f31, 0x27d8,
-  0x4f32, 0x12b7,
-  0x4f33, 0x27d9,
-  0x4f34, 0x03f4,
-  0x4f35, 0x27da,
-  0x4f36, 0x0a2f,
-  0x4f37, 0x27db,
-  0x4f38, 0x0d25,
-  0x4f39, 0x27dc,
-  0x4f3a, 0x0dba,
-  0x4f3b, 0x27dd,
-  0x4f3c, 0x0dbb,
-  0x4f3d, 0x12b8,
-  0x4f3e, 0x27de,
-  0x4f43, 0x05c9,
-  0x4f44, 0x27e3,
-  0x4f46, 0x058c,
-  0x4f47, 0x27e5,
-  0x4f4d, 0x0eca,
-  0x4f4e, 0x05ae,
-  0x4f4f, 0x11fe,
-  0x4f50, 0x1251,
-  0x4f51, 0x10b8,
-  0x4f52, 0x27eb,
-  0x4f53, 0x0e38,
-  0x4f54, 0x27ec,
-  0x4f55, 0x0785,
-  0x4f56, 0x27ed,
-  0x4f57, 0x12b6,
-  0x4f58, 0x12f0,
-  0x4f59, 0x10c5,
-  0x4f5a, 0x12b3,
-  0x4f5b, 0x068d,
-  0x4f5c, 0x1254,
-  0x4f5d, 0x12b4,
-  0x4f5e, 0x12b0,
-  0x4f5f, 0x12b5,
-  0x4f60, 0x0b46,
-  0x4f61, 0x27ee,
-  0x4f63, 0x109b,
-  0x4f64, 0x12aa,
-  0x4f65, 0x12f1,
-  0x4f66, 0x27f0,
-  0x4f67, 0x12b1,
-  0x4f68, 0x27f1,
-  0x4f69, 0x0ba6,
-  0x4f6a, 0x27f2,
-  0x4f6c, 0x09bb,
-  0x4f6d, 0x27f4,
-  0x4f6f, 0x1019,
-  0x4f70, 0x03e6,
-  0x4f71, 0x27f6,
-  0x4f73, 0x0844,
-  0x4f74, 0x12ba,
-  0x4f75, 0x27f8,
-  0x4f76, 0x12b9,
-  0x4f77, 0x27f9,
-  0x4f7b, 0x12c0,
-  0x4f7c, 0x12c2,
-  0x4f7d, 0x27fd,
-  0x4f7e, 0x12bf,
-  0x4f7f, 0x0d50,
-  0x4f80, 0x27fe,
-  0x4f83, 0x12bd,
-  0x4f84, 0x11b5,
-  0x4f85, 0x2801,
-  0x4f86, 0x1ff2,
-  0x4f87, 0x2802,
-  0x4f88, 0x0503,
-  0x4f89, 0x12bc,
-  0x4f8a, 0x2803,
-  0x4f8b, 0x09e8,
-  0x4f8c, 0x2804,
-  0x4f8d, 0x0d63,
-  0x4f8e, 0x2805,
-  0x4f8f, 0x12be,
-  0x4f90, 0x2806,
-  0x4f91, 0x12bb,
-  0x4f92, 0x2807,
-  0x4f94, 0x12c4,
-  0x4f95, 0x2809,
-  0x4f96, 0x205d,
-  0x4f97, 0x05f0,
-  0x4f98, 0x280a,
-  0x4f9b, 0x0702,
-  0x4f9c, 0x280d,
-  0x4f9d, 0x1047,
-  0x4f9e, 0x280e,
-  0x4fa0, 0x0f2d,
-  0x4fa1, 0x2810,
-  0x4fa3, 0x0a69,
-  0x4fa4, 0x2812,
-  0x4fa5, 0x0895,
-  0x4fa6, 0x118d,
-  0x4fa7, 0x04a7,
-  0x4fa8, 0x0c45,
-  0x4fa9, 0x0978,
-  0x4faa, 0x12c1,
-  0x4fab, 0x2813,
-  0x4fac, 0x12c3,
-  0x4fad, 0x2814,
-  0x4fae, 0x0ef9,
-  0x4faf, 0x07a5,
-  0x4fb0, 0x2815,
-  0x4fb5, 0x0c53,
-  0x4fb6, 0x281a,
-  0x4fbf, 0x044c,
-  0x4fc0, 0x2823,
-  0x4fc2, 0x269c,
-  0x4fc3, 0x055c,
-  0x4fc4, 0x062c,
-  0x4fc5, 0x12c8,
-  0x4fc6, 0x2825,
-  0x4fca, 0x092e,
-  0x4fcb, 0x2829,
-  0x4fce, 0x12f2,
-  0x4fcf, 0x0c4b,
-  0x4fd0, 0x09e9,
-  0x4fd1, 0x12cc,
-  0x4fd2, 0x282c,
-  0x4fd7, 0x0dcc,
-  0x4fd8, 0x069a,
-  0x4fd9, 0x2831,
-  0x4fda, 0x12c9,
-  0x4fdb, 0x2832,
-  0x4fdc, 0x12cb,
-  0x4fdd, 0x040c,
-  0x4fde, 0x10c6,
-  0x4fdf, 0x12cd,
-  0x4fe0, 0x21b5,
-  0x4fe1, 0x0f90,
-  0x4fe2, 0x2833,
-  0x4fe3, 0x12ca,
-  0x4fe4, 0x2834,
-  0x4fe6, 0x12c5,
-  0x4fe7, 0x2836,
-  0x4fe8, 0x12c6,
-  0x4fe9, 0x09f2,
-  0x4fea, 0x12c7,
-  0x4feb, 0x2837,
-  0x4fed, 0x0866,
-  0x4fee, 0x0fa9,
-  0x4fef, 0x06a4,
-  0x4ff0, 0x2839,
-  0x4ff1, 0x0912,
-  0x4ff2, 0x283a,
-  0x4ff3, 0x12d1,
-  0x4ff4, 0x283b,
-  0x4ff8, 0x12ce,
-  0x4ff9, 0x283f,
-  0x4ffa, 0x03be,
-  0x4ffb, 0x2840,
-  0x4ffe, 0x12d6,
-  0x4fff, 0x2843,
-  0x5000, 0x22cc,
-  0x5001, 0x2844,
-  0x5006, 0x2016,
-  0x5007, 0x2849,
-  0x5009, 0x1e62,
-  0x500a, 0x284b,
-  0x500b, 0x1f20,
-  0x500c, 0x12d8,
-  0x500d, 0x041f,
-  0x500e, 0x284c,
-  0x500f, 0x12d3,
-  0x5010, 0x284d,
-  0x5011, 0x207f,
-  0x5012, 0x059a,
-  0x5013, 0x284e,
-  0x5014, 0x0922,
-  0x5015, 0x284f,
-  0x5018, 0x0e1b,
-  0x5019, 0x07a9,
-  0x501a, 0x1057,
-  0x501b, 0x2852,
-  0x501c, 0x12d7,
-  0x501d, 0x2853,
-  0x501f, 0x08b9,
-  0x5020, 0x2855,
-  0x5021, 0x04d0,
-  0x5022, 0x2856,
-  0x5025, 0x12d9,
-  0x5026, 0x091a,
-  0x5027, 0x2859,
-  0x5028, 0x12da,
-  0x5029, 0x12cf,
-  0x502a, 0x0b42,
-  0x502b, 0x205c,
-  0x502c, 0x12d2,
-  0x502d, 0x12d5,
-  0x502e, 0x12d4,
-  0x502f, 0x285a,
-  0x503a, 0x114f,
-  0x503b, 0x2865,
-  0x503c, 0x11b4,
-  0x503d, 0x2866,
-  0x503e, 0x0c60,
-  0x503f, 0x2867,
-  0x5043, 0x12dc,
-  0x5044, 0x286b,
-  0x5047, 0x084c,
-  0x5048, 0x12de,
-  0x5049, 0x2194,
-  0x504a, 0x286e,
-  0x504c, 0x12d0,
-  0x504d, 0x2870,
-  0x504e, 0x12df,
-  0x504f, 0x0bca,
-  0x5050, 0x2871,
-  0x5055, 0x12dd,
-  0x5056, 0x2876,
-  0x505a, 0x1253,
-  0x505b, 0x287a,
-  0x505c, 0x0e54,
-  0x505d, 0x287b,
-  0x5065, 0x0872,
-  0x5066, 0x2883,
-  0x506c, 0x12e0,
-  0x506d, 0x2889,
-  0x5074, 0x1e65,
-  0x5075, 0x2281,
-  0x5076, 0x0b7d,
-  0x5077, 0x0e66,
-  0x5078, 0x2890,
-  0x507b, 0x12e1,
-  0x507c, 0x2893,
-  0x507e, 0x12db,
-  0x507f, 0x04ca,
-  0x5080, 0x098b,
-  0x5081, 0x2895,
-  0x5085, 0x06b0,
-  0x5086, 0x2899,
-  0x5088, 0x09e7,
-  0x5089, 0x289b,
-  0x508d, 0x0403,
-  0x508e, 0x289f,
-  0x5096, 0x22cd,
-  0x5097, 0x28a7,
-  0x5098, 0x210a,
-  0x5099, 0x1e3e,
-  0x509a, 0x28a8,
-  0x50a2, 0x267f,
-  0x50a3, 0x0579,
-  0x50a4, 0x28b0,
-  0x50a5, 0x12e2,
-  0x50a6, 0x28b1,
-  0x50a7, 0x12e3,
-  0x50a8, 0x0525,
-  0x50a9, 0x12e4,
-  0x50aa, 0x28b2,
-  0x50ac, 0x0562,
-  0x50ad, 0x222e,
-  0x50ae, 0x28b4,
-  0x50b2, 0x03cc,
-  0x50b3, 0x1e96,
-  0x50b4, 0x22cb,
-  0x50b5, 0x226c,
-  0x50b6, 0x28b8,
-  0x50b7, 0x2117,
-  0x50b8, 0x28b9,
-  0x50ba, 0x12e5,
-  0x50bb, 0x0cee,
-  0x50bc, 0x28bb,
-  0x50be, 0x20e8,
-  0x50bf, 0x28bd,
-  0x50c2, 0x22d4,
-  0x50c3, 0x28c0,
-  0x50c5, 0x1fb9,
-  0x50c6, 0x28c2,
-  0x50c9, 0x22d8,
-  0x50ca, 0x28c5,
-  0x50cf, 0x0f5e,
-  0x50d0, 0x28ca,
-  0x50d1, 0x20df,
-  0x50d2, 0x28cb,
-  0x50d5, 0x20c2,
-  0x50d6, 0x12e6,
-  0x50d7, 0x28ce,
-  0x50da, 0x0a0e,
-  0x50db, 0x28d1,
-  0x50de, 0x2195,
-  0x50df, 0x28d4,
-  0x50e5, 0x1fac,
-  0x50e6, 0x12ea,
-  0x50e7, 0x0ce7,
-  0x50e8, 0x22d3,
-  0x50e9, 0x28da,
-  0x50ec, 0x12e9,
-  0x50ed, 0x12e8,
-  0x50ee, 0x12eb,
-  0x50ef, 0x28dd,
-  0x50f3, 0x0dd0,
-  0x50f4, 0x28e1,
-  0x50f5, 0x087a,
-  0x50f6, 0x28e2,
-  0x50f9, 0x1f81,
-  0x50fa, 0x28e5,
-  0x50fb, 0x0bc6,
-  0x50fc, 0x28e6,
-  0x5100, 0x2210,
-  0x5101, 0x28ea,
-  0x5102, 0x22cf,
-  0x5103, 0x28eb,
-  0x5104, 0x2213,
-  0x5105, 0x28ec,
-  0x5106, 0x12e7,
-  0x5107, 0x12ec,
-  0x5108, 0x1fe4,
-  0x5109, 0x1f90,
-  0x510a, 0x28ed,
-  0x510b, 0x12ed,
-  0x510c, 0x28ee,
-  0x5110, 0x22d6,
-  0x5111, 0x28f2,
-  0x5112, 0x0cc0,
-  0x5113, 0x28f3,
-  0x5114, 0x22d0,
-  0x5115, 0x22ce,
-  0x5116, 0x28f4,
-  0x5118, 0x2681,
-  0x5119, 0x28f6,
-  0x511f, 0x1e76,
-  0x5120, 0x28fc,
-  0x5121, 0x09c7,
-  0x5122, 0x28fd,
-  0x512a, 0x2231,
-  0x512b, 0x2905,
-  0x5132, 0x1e93,
-  0x5133, 0x290c,
-  0x5137, 0x22d2,
-  0x5138, 0x2910,
-  0x513a, 0x22d7,
-  0x513b, 0x22d5,
-  0x513c, 0x22d1,
-  0x513d, 0x2912,
-  0x513f, 0x0638,
-  0x5140, 0x1259,
-  0x5141, 0x110d,
-  0x5142, 0x2914,
-  0x5143, 0x10ed,
-  0x5144, 0x0fa1,
-  0x5145, 0x0509,
-  0x5146, 0x1178,
-  0x5147, 0x2915,
-  0x5148, 0x0f35,
-  0x5149, 0x073b,
-  0x514a, 0x2916,
-  0x514b, 0x0958,
-  0x514c, 0x2917,
-  0x514d, 0x0ae7,
-  0x514e, 0x2918,
-  0x5151, 0x0611,
-  0x5152, 0x1ee5,
-  0x5153, 0x291b,
-  0x5154, 0x0e74,
-  0x5155, 0x1302,
-  0x5156, 0x1304,
-  0x5157, 0x291c,
-  0x515a, 0x0594,
-  0x515b, 0x291f,
-  0x515c, 0x05f4,
-  0x515d, 0x2920,
-  0x5162, 0x08d3,
-  0x5163, 0x2925,
-  0x5165, 0x0cc6,
-  0x5166, 0x2927,
-  0x5168, 0x0c86,
-  0x5169, 0x2025,
-  0x516a, 0x2929,
-  0x516b, 0x03d6,
-  0x516c, 0x0704,
-  0x516d, 0x0a42,
-  0x516e, 0x12f6,
-  0x516f, 0x292a,
-  0x5170, 0x09a7,
-  0x5171, 0x070b,
-  0x5172, 0x292b,
-  0x5173, 0x0731,
-  0x5174, 0x0f96,
-  0x5175, 0x0461,
-  0x5176, 0x0c03,
-  0x5177, 0x090e,
-  0x5178, 0x05c5,
-  0x5179, 0x1225,
-  0x517a, 0x292c,
-  0x517b, 0x1021,
-  0x517c, 0x0859,
-  0x517d, 0x0d75,
-  0x517e, 0x292d,
-  0x5180, 0x0830,
-  0x5181, 0x12fa,
-  0x5182, 0x129d,
-  0x5183, 0x292f,
-  0x5185, 0x0b3d,
-  0x5186, 0x2931,
-  0x5188, 0x06cf,
-  0x5189, 0x0c98,
-  0x518a, 0x2933,
-  0x518c, 0x04a8,
-  0x518d, 0x111c,
-  0x518e, 0x2935,
-  0x5192, 0x0ab5,
-  0x5193, 0x2939,
-  0x5195, 0x0ae6,
-  0x5196, 0x1314,
-  0x5197, 0x0cba,
-  0x5198, 0x293b,
-  0x5199, 0x0f7f,
-  0x519a, 0x293c,
-  0x519b, 0x092b,
-  0x519c, 0x0b6a,
-  0x519d, 0x293d,
-  0x51a0, 0x0733,
-  0x51a1, 0x2940,
-  0x51a2, 0x1315,
-  0x51a3, 0x2941,
-  0x51a4, 0x10ec,
-  0x51a5, 0x1316,
-  0x51a6, 0x2942,
-  0x51ab, 0x130f,
-  0x51ac, 0x05eb,
-  0x51ad, 0x2947,
-  0x51af, 0x0688,
-  0x51b0, 0x0462,
-  0x51b1, 0x1310,
-  0x51b2, 0x050a,
-  0x51b3, 0x0925,
-  0x51b4, 0x2949,
-  0x51b5, 0x0983,
-  0x51b6, 0x1038,
-  0x51b7, 0x09cf,
-  0x51b8, 0x294a,
-  0x51bb, 0x05f2,
-  0x51bc, 0x1312,
-  0x51bd, 0x1311,
-  0x51be, 0x294d,
-  0x51c0, 0x08ea,
-  0x51c1, 0x294f,
-  0x51c4, 0x0bff,
-  0x51c5, 0x2952,
-  0x51c6, 0x1219,
-  0x51c7, 0x1313,
-  0x51c8, 0x2953,
-  0x51c9, 0x0a02,
-  0x51ca, 0x2954,
-  0x51cb, 0x05d3,
-  0x51cc, 0x0a31,
-  0x51cd, 0x1ecf,
-  0x51ce, 0x2955,
-  0x51cf, 0x0868,
-  0x51d0, 0x2956,
-  0x51d1, 0x0558,
-  0x51d2, 0x2957,
-  0x51db, 0x0a26,
-  0x51dc, 0x2960,
-  0x51dd, 0x0b60,
-  0x51de, 0x2961,
-  0x51e0, 0x082b,
-  0x51e1, 0x064f,
-  0x51e2, 0x2963,
-  0x51e4, 0x068c,
-  0x51e5, 0x2965,
-  0x51eb, 0x1300,
-  0x51ec, 0x296b,
-  0x51ed, 0x0bdd,
-  0x51ee, 0x296c,
-  0x51ef, 0x093a,
-  0x51f0, 0x07e0,
-  0x51f1, 0x1fd9,
-  0x51f2, 0x296d,
-  0x51f3, 0x05ab,
-  0x51f4, 0x296e,
-  0x51f5, 0x1399,
-  0x51f6, 0x0fa2,
-  0x51f7, 0x296f,
-  0x51f8, 0x0e6a,
-  0x51f9, 0x03c7,
-  0x51fa, 0x051b,
-  0x51fb, 0x080c,
-  0x51fc, 0x139a,
-  0x51fd, 0x0766,
-  0x51fe, 0x2970,
-  0x51ff, 0x1127,
-  0x5200, 0x0597,
-  0x5201, 0x05d4,
-  0x5202, 0x128c,
-  0x5203, 0x0cab,
-  0x5204, 0x2971,
-  0x5206, 0x0673,
-  0x5207, 0x0c4d,
-  0x5208, 0x128d,
-  0x5209, 0x2973,
-  0x520a, 0x093c,
-  0x520b, 0x2974,
-  0x520d, 0x138b,
-  0x520e, 0x128e,
-  0x520f, 0x2976,
-  0x5211, 0x0f97,
-  0x5212, 0x07c3,
-  0x5213, 0x2978,
-  0x5216, 0x196e,
-  0x5217, 0x0a19,
-  0x5218, 0x0a3e,
-  0x5219, 0x1135,
-  0x521a, 0x06d0,
-  0x521b, 0x0537,
-  0x521c, 0x297b,
-  0x521d, 0x051a,
-  0x521e, 0x297c,
-  0x5220, 0x0cf7,
-  0x5221, 0x297e,
-  0x5224, 0x0b91,
-  0x5225, 0x2981,
-  0x5228, 0x0b9a,
-  0x5229, 0x09e6,
-  0x522a, 0x2984,
-  0x522b, 0x0459,
-  0x522c, 0x2985,
-  0x522d, 0x128f,
-  0x522e, 0x0727,
-  0x522f, 0x2986,
-  0x5230, 0x059e,
-  0x5231, 0x2987,
-  0x5233, 0x1290,
-  0x5234, 0x2989,
-  0x5236, 0x11c5,
-  0x5237, 0x0d97,
-  0x5238, 0x0c8a,
-  0x5239, 0x0ceb,
-  0x523a, 0x054f,
-  0x523b, 0x0959,
-  0x523c, 0x298b,
-  0x523d, 0x074d,
-  0x523e, 0x298c,
-  0x523f, 0x1291,
-  0x5241, 0x0626,
-  0x5242, 0x0834,
-  0x5243, 0x0e3d,
-  0x5244, 0x22c8,
-  0x5245, 0x298d,
-  0x5247, 0x2263,
-  0x5248, 0x298f,
-  0x524a, 0x0f64,
-  0x524b, 0x2683,
-  0x524c, 0x1293,
-  0x524d, 0x0c2d,
-  0x524e, 0x2991,
-  0x5250, 0x0729,
-  0x5251, 0x0874,
-  0x5252, 0x2993,
-  0x5254, 0x0e31,
-  0x5255, 0x2995,
-  0x5256, 0x0be9,
-  0x5257, 0x2996,
-  0x525b, 0x1f17,
-  0x525c, 0x1296,
-  0x525d, 0x299a,
-  0x525e, 0x1294,
-  0x525f, 0x299b,
-  0x5261, 0x1295,
-  0x5262, 0x299d,
-  0x5265, 0x0409,
-  0x5266, 0x29a0,
-  0x5267, 0x0916,
-  0x5268, 0x29a1,
-  0x5269, 0x0d3a,
-  0x526a, 0x0867,
-  0x526b, 0x29a2,
-  0x526e, 0x1f2b,
-  0x526f, 0x06ac,
-  0x5270, 0x29a5,
-  0x5272, 0x06e9,
-  0x5273, 0x29a7,
-  0x5274, 0x22ca,
-  0x5275, 0x1e99,
-  0x5276, 0x29a8,
-  0x527d, 0x1298,
-  0x527e, 0x29af,
-  0x527f, 0x089c,
-  0x5280, 0x29b0,
-  0x5281, 0x129a,
-  0x5282, 0x1299,
-  0x5283, 0x1f4f,
-  0x5284, 0x29b1,
-  0x5287, 0x1fcf,
-  0x5288, 0x0bbd,
-  0x5289, 0x2036,
-  0x528a, 0x1f3a,
-  0x528b, 0x29b4,
-  0x528c, 0x22c9,
-  0x528d, 0x1f99,
-  0x528e, 0x29b5,
-  0x5290, 0x129b,
-  0x5291, 0x1f75,
-  0x5292, 0x29b7,
-  0x5293, 0x129c,
-  0x5294, 0x29b8,
-  0x529b, 0x09ef,
-  0x529c, 0x29bf,
-  0x529d, 0x0c8b,
-  0x529e, 0x03f7,
-  0x529f, 0x06ff,
-  0x52a0, 0x0846,
-  0x52a1, 0x0f00,
-  0x52a2, 0x138d,
-  0x52a3, 0x0a1c,
-  0x52a4, 0x29c0,
-  0x52a8, 0x05ee,
-  0x52a9, 0x11f9,
-  0x52aa, 0x0b6d,
-  0x52ab, 0x08aa,
-  0x52ac, 0x138e,
-  0x52ae, 0x29c4,
-  0x52b1, 0x09e3,
-  0x52b2, 0x08d1,
-  0x52b3, 0x09b8,
-  0x52b4, 0x29c7,
-  0x52be, 0x1390,
-  0x52bf, 0x0d5d,
-  0x52c0, 0x29d1,
-  0x52c1, 0x1fbe,
-  0x52c2, 0x29d2,
-  0x52c3, 0x0471,
-  0x52c4, 0x29d3,
-  0x52c7, 0x10a7,
-  0x52c8, 0x29d6,
-  0x52c9, 0x0ae8,
-  0x52ca, 0x29d7,
-  0x52cb, 0x0fd4,
-  0x52cc, 0x29d8,
-  0x52d0, 0x1392,
-  0x52d1, 0x29dc,
-  0x52d2, 0x09c0,
-  0x52d3, 0x29dd,
-  0x52d5, 0x1ecd,
-  0x52d6, 0x1393,
-  0x52d7, 0x29df,
-  0x52d8, 0x093e,
-  0x52d9, 0x21a9,
-  0x52da, 0x29e0,
-  0x52db, 0x21e6,
-  0x52dc, 0x29e1,
-  0x52dd, 0x2127,
-  0x52de, 0x2003,
-  0x52df, 0x0b1f,
-  0x52e0, 0x29e2,
-  0x52e2, 0x2132,
-  0x52e3, 0x29e4,
-  0x52e4, 0x0c57,
-  0x52e5, 0x29e5,
-  0x52f0, 0x1394,
-  0x52f1, 0x2323,
-  0x52f2, 0x29f0,
-  0x52f5, 0x2011,
-  0x52f6, 0x29f3,
-  0x52f8, 0x20f5,
-  0x52f9, 0x12fc,
-  0x52fa, 0x0d10,
-  0x52fb, 0x29f5,
-  0x52fe, 0x070d,
-  0x52ff, 0x0eff,
-  0x5300, 0x110b,
-  0x5301, 0x29f8,
-  0x5305, 0x0407,
-  0x5306, 0x0555,
-  0x5307, 0x29fc,
-  0x5308, 0x0fa4,
-  0x5309, 0x29fd,
-  0x530d, 0x12fd,
-  0x530e, 0x2a01,
-  0x530f, 0x14b5,
-  0x5310, 0x12ff,
-  0x5311, 0x2a02,
-  0x5315, 0x1266,
-  0x5316, 0x07c4,
-  0x5317, 0x041a,
-  0x5318, 0x2a06,
-  0x5319, 0x04fc,
-  0x531a, 0x1284,
-  0x531b, 0x2a07,
-  0x531d, 0x1114,
-  0x531e, 0x2a09,
-  0x5320, 0x0884,
-  0x5321, 0x097c,
-  0x5322, 0x2a0b,
-  0x5323, 0x0f28,
-  0x5324, 0x2a0c,
-  0x5326, 0x1286,
-  0x5327, 0x2a0e,
-  0x532a, 0x0668,
-  0x532b, 0x2a11,
-  0x532d, 0x22c5,
-  0x532e, 0x1287,
-  0x532f, 0x1f5e,
-  0x5330, 0x2a13,
-  0x5331, 0x22c6,
-  0x5332, 0x2a14,
-  0x5339, 0x0bc4,
-  0x533a, 0x0c75,
-  0x533b, 0x1044,
-  0x533c, 0x2a1b,
-  0x533e, 0x1288,
-  0x533f, 0x0b47,
-  0x5340, 0x20ef,
-  0x5341, 0x0d45,
-  0x5342, 0x2a1d,
-  0x5343, 0x0c24,
-  0x5344, 0x2a1e,
-  0x5345, 0x125c,
-  0x5346, 0x2a1f,
-  0x5347, 0x0d36,
-  0x5348, 0x0ef6,
-  0x5349, 0x07f1,
-  0x534a, 0x03f6,
-  0x534b, 0x2a20,
-  0x534e, 0x07bf,
-  0x534f, 0x0f78,
-  0x5350, 0x2a23,
-  0x5351, 0x0419,
-  0x5352, 0x1241,
-  0x5353, 0x121c,
-  0x5354, 0x21d0,
-  0x5355, 0x0586,
-  0x5356, 0x0a9b,
-  0x5357, 0x0b32,
-  0x5358, 0x2a24,
-  0x535a, 0x0470,
-  0x535b, 0x2a26,
-  0x535c, 0x047e,
-  0x535d, 0x2a27,
-  0x535e, 0x044e,
-  0x535f, 0x14fa,
-  0x5360, 0x115d,
-  0x5361, 0x0935,
-  0x5362, 0x0a53,
-  0x5363, 0x128b,
-  0x5364, 0x0a58,
-  0x5365, 0x2a28,
-  0x5366, 0x128a,
-  0x5367, 0x0ee3,
-  0x5368, 0x2a29,
-  0x5369, 0x1352,
-  0x536a, 0x2a2a,
-  0x536b, 0x0ecf,
-  0x536c, 0x2a2b,
-  0x536e, 0x126a,
-  0x536f, 0x0ab3,
-  0x5370, 0x1086,
-  0x5371, 0x0eb2,
-  0x5372, 0x2a2d,
-  0x5373, 0x0827,
-  0x5374, 0x0c8f,
-  0x5375, 0x0a78,
-  0x5376, 0x2a2e,
-  0x5377, 0x091c,
-  0x5378, 0x0f81,
-  0x5379, 0x2a2f,
-  0x537a, 0x1353,
-  0x537b, 0x2a30,
-  0x537f, 0x0c61,
-  0x5380, 0x2a34,
-  0x5382, 0x04cc,
-  0x5383, 0x2a36,
-  0x5384, 0x0631,
-  0x5385, 0x0e4f,
-  0x5386, 0x09e5,
-  0x5387, 0x2a37,
-  0x5389, 0x09e2,
-  0x538a, 0x2a39,
-  0x538b, 0x0fe2,
-  0x538c, 0x100a,
-  0x538d, 0x127d,
-  0x538e, 0x2a3a,
-  0x5395, 0x04a5,
-  0x5396, 0x2a41,
-  0x5398, 0x09d0,
-  0x5399, 0x22c1,
-  0x539a, 0x07a8,
-  0x539b, 0x2a43,
-  0x539d, 0x127e,
-  0x539e, 0x2a45,
-  0x539f, 0x10f0,
-  0x53a0, 0x1e64,
-  0x53a1, 0x2a46,
-  0x53a2, 0x0f4e,
-  0x53a3, 0x127f,
-  0x53a4, 0x2a47,
-  0x53a5, 0x1280,
-  0x53a6, 0x0f30,
-  0x53a7, 0x2a48,
-  0x53a8, 0x051d,
-  0x53a9, 0x08f6,
-  0x53aa, 0x2a49,
-  0x53ad, 0x21f9,
-  0x53ae, 0x1281,
-  0x53af, 0x2a4c,
-  0x53b2, 0x2010,
-  0x53b3, 0x2a4f,
-  0x53b4, 0x22c2,
-  0x53b5, 0x2a50,
-  0x53b6, 0x139c,
-  0x53b7, 0x2a51,
-  0x53bb, 0x0c80,
-  0x53bc, 0x2a55,
-  0x53bf, 0x0f45,
-  0x53c0, 0x2a58,
-  0x53c1, 0x0cd9,
-  0x53c2, 0x0495,
-  0x53c3, 0x1e5a,
-  0x53c4, 0x2a59,
-  0x53c8, 0x10bb,
-  0x53c9, 0x04ad,
-  0x53ca, 0x0823,
-  0x53cb, 0x10b6,
-  0x53cc, 0x0da0,
-  0x53cd, 0x0651,
-  0x53ce, 0x2a5d,
-  0x53d1, 0x063f,
-  0x53d2, 0x2a60,
-  0x53d4, 0x0d7c,
-  0x53d5, 0x2a62,
-  0x53d6, 0x0c7c,
-  0x53d7, 0x0d73,
-  0x53d8, 0x044d,
-  0x53d9, 0x0fbb,
-  0x53da, 0x2a63,
-  0x53db, 0x0b92,
-  0x53dc, 0x2a64,
-  0x53df, 0x1395,
-  0x53e0, 0x05df,
-  0x53e1, 0x2a67,
-  0x53e2, 0x1ea2,
-  0x53e3, 0x0967,
-  0x53e4, 0x071e,
-  0x53e5, 0x0913,
-  0x53e6, 0x0a36,
-  0x53e7, 0x2a68,
-  0x53e8, 0x14fe,
-  0x53e9, 0x14fd,
-  0x53ea, 0x11ba,
-  0x53eb, 0x08a1,
-  0x53ec, 0x117a,
-  0x53ed, 0x03d3,
-  0x53ee, 0x05e2,
-  0x53ef, 0x0956,
-  0x53f0, 0x0dfb,
-  0x53f1, 0x14fb,
-  0x53f2, 0x0d4e,
-  0x53f3, 0x10b7,
-  0x53f4, 0x2a69,
-  0x53f5, 0x1285,
-  0x53f6, 0x103d,
-  0x53f7, 0x077c,
-  0x53f8, 0x0db3,
-  0x53f9, 0x0e11,
-  0x53fa, 0x2a6a,
-  0x53fb, 0x14ff,
-  0x53fc, 0x05d1,
-  0x53fd, 0x14fc,
-  0x53fe, 0x2a6b,
-  0x5400, 0x2a6d,
-  0x5401, 0x10da,
-  0x5402, 0x2a6e,
-  0x5403, 0x04f9,
-  0x5404, 0x06f2,
-  0x5405, 0x2a6f,
-  0x5406, 0x1502,
-  0x5407, 0x2a70,
-  0x5408, 0x0786,
-  0x5409, 0x081d,
-  0x540a, 0x05d6,
-  0x540b, 0x2a71,
-  0x540c, 0x0e5d,
-  0x540d, 0x0b00,
-  0x540e, 0x07aa,
-  0x540f, 0x09df,
-  0x5410, 0x0e73,
-  0x5411, 0x0f5f,
-  0x5412, 0x1500,
-  0x5413, 0x0f32,
-  0x5414, 0x2a72,
-  0x5415, 0x0a67,
-  0x5416, 0x1501,
-  0x5417, 0x0a97,
-  0x5418, 0x2a73,
-  0x541b, 0x092c,
-  0x541c, 0x2a76,
-  0x541d, 0x0a28,
-  0x541e, 0x0e7d,
-  0x541f, 0x107e,
-  0x5420, 0x066a,
-  0x5421, 0x1509,
-  0x5422, 0x2a77,
-  0x5423, 0x150c,
-  0x5424, 0x2a78,
-  0x5426, 0x068e,
-  0x5427, 0x03d4,
-  0x5428, 0x0615,
-  0x5429, 0x0671,
-  0x542a, 0x2a7a,
-  0x542b, 0x0763,
-  0x542c, 0x0e50,
-  0x542d, 0x0961,
-  0x542e, 0x0da6,
-  0x542f, 0x0c13,
-  0x5430, 0x2a7b,
-  0x5431, 0x11a7,
-  0x5432, 0x150d,
-  0x5433, 0x2a7c,
-  0x5434, 0x0ef1,
-  0x5435, 0x04d8,
-  0x5436, 0x2a7d,
-  0x5438, 0x0f0b,
-  0x5439, 0x0538,
-  0x543a, 0x2a7f,
-  0x543b, 0x0ed6,
-  0x543c, 0x07a7,
-  0x543d, 0x2a80,
-  0x543e, 0x0ef0,
-  0x543f, 0x2a81,
-  0x5440, 0x0fe6,
-  0x5441, 0x2a82,
-  0x5443, 0x1508,
-  0x5444, 0x2a84,
-  0x5446, 0x0577,
-  0x5447, 0x2a86,
-  0x5448, 0x04ef,
-  0x5449, 0x2a87,
-  0x544a, 0x06e1,
-  0x544b, 0x1503,
-  0x544c, 0x2a88,
-  0x5450, 0x0b28,
-  0x5451, 0x2a8c,
-  0x5452, 0x1504,
-  0x5455, 0x0b7c,
-  0x5456, 0x1507,
-  0x5457, 0x150a,
-  0x5458, 0x10f4,
-  0x5459, 0x150b,
-  0x545a, 0x2a8d,
-  0x545b, 0x0c37,
-  0x545c, 0x0ee7,
-  0x545d, 0x2a8e,
-  0x5462, 0x0b3b,
-  0x5463, 0x2a93,
-  0x5464, 0x1512,
-  0x5465, 0x2a94,
-  0x5466, 0x1517,
-  0x5467, 0x2a95,
-  0x5468, 0x11db,
-  0x5469, 0x2a96,
-  0x5471, 0x1511,
-  0x5472, 0x1522,
-  0x5473, 0x0ec5,
-  0x5474, 0x2a9e,
-  0x5475, 0x077e,
-  0x5476, 0x1516,
-  0x5477, 0x1510,
-  0x5478, 0x0b9f,
-  0x5479, 0x2a9f,
-  0x547b, 0x0d24,
-  0x547c, 0x07ab,
-  0x547d, 0x0b01,
-  0x547e, 0x2aa1,
-  0x5480, 0x0906,
-  0x5481, 0x2aa3,
-  0x5482, 0x150e,
-  0x5483, 0x2aa4,
-  0x5484, 0x1515,
-  0x5485, 0x2aa5,
-  0x5486, 0x0b99,
-  0x5487, 0x2aa6,
-  0x548b, 0x1147,
-  0x548c, 0x0784,
-  0x548d, 0x2aaa,
-  0x548e, 0x08fb,
-  0x548f, 0x10a2,
-  0x5490, 0x06bb,
-  0x5491, 0x2aab,
-  0x5492, 0x11e3,
-  0x5493, 0x2aac,
-  0x5494, 0x150f,
-  0x5495, 0x0717,
-  0x5496, 0x0934,
-  0x5497, 0x2aad,
-  0x5499, 0x0a45,
-  0x549a, 0x1513,
-  0x549c, 0x2aaf,
-  0x549d, 0x1518,
-  0x549e, 0x2ab0,
-  0x54a3, 0x1523,
-  0x54a4, 0x152d,
-  0x54a5, 0x2ab5,
-  0x54a6, 0x151f,
-  0x54a7, 0x151e,
-  0x54a8, 0x1226,
-  0x54a9, 0x152b,
-  0x54ab, 0x1767,
-  0x54ac, 0x102e,
-  0x54ad, 0x151a,
-  0x54ae, 0x2ab6,
-  0x54af, 0x0936,
-  0x54b0, 0x2ab7,
-  0x54b1, 0x111e,
-  0x54b2, 0x2ab8,
-  0x54b3, 0x0955,
-  0x54b4, 0x151c,
-  0x54b5, 0x2ab9,
-  0x54b8, 0x0f39,
-  0x54b9, 0x2abc,
-  0x54bb, 0x1525,
-  0x54bc, 0x236d,
-  0x54bd, 0x0ff3,
-  0x54be, 0x2abe,
-  0x54bf, 0x1526,
-  0x54c0, 0x03b2,
-  0x54c1, 0x0bd6,
-  0x54c2, 0x151b,
-  0x54c3, 0x2abf,
-  0x54c4, 0x079c,
-  0x54c5, 0x2ac0,
-  0x54c6, 0x061e,
-  0x54c7, 0x0e8c,
-  0x54c8, 0x0757,
-  0x54c9, 0x1118,
-  0x54ca, 0x2ac1,
-  0x54cc, 0x1527,
-  0x54cd, 0x0f59,
-  0x54ce, 0x03b0,
-  0x54cf, 0x152f,
-  0x54d0, 0x1519,
-  0x54d1, 0x0fef,
-  0x54d2, 0x151d,
-  0x54d3, 0x1520,
-  0x54d5, 0x1524,
-  0x54d6, 0x2ac3,
-  0x54d7, 0x07be,
-  0x54d8, 0x2ac4,
-  0x54d9, 0x1528,
-  0x54db, 0x2ac5,
-  0x54dc, 0x152a,
-  0x54dd, 0x152e,
-  0x54de, 0x1530,
-  0x54df, 0x1099,
-  0x54e0, 0x2ac6,
-  0x54e1, 0x2247,
-  0x54e2, 0x2ac7,
-  0x54e5, 0x06e2,
-  0x54e6, 0x0b77,
-  0x54e7, 0x1532,
-  0x54e8, 0x0d13,
-  0x54e9, 0x09f1,
-  0x54ea, 0x0b27,
-  0x54eb, 0x2aca,
-  0x54ed, 0x096b,
-  0x54ee, 0x0f65,
-  0x54ef, 0x2acc,
-  0x54f2, 0x117d,
-  0x54f3, 0x1536,
-  0x54f4, 0x2acf,
-  0x54fa, 0x047f,
-  0x54fb, 0x2ad5,
-  0x54fc, 0x0796,
-  0x54fd, 0x1534,
-  0x54fe, 0x2ad6,
-  0x54ff, 0x1391,
-  0x5500, 0x2ad7,
-  0x5501, 0x100d,
-  0x5502, 0x2ad8,
-  0x5504, 0x236c,
-  0x5505, 0x2ada,
-  0x5506, 0x0de9,
-  0x5507, 0x0540,
-  0x5508, 0x2adb,
-  0x5509, 0x03b1,
-  0x550a, 0x2adc,
-  0x550f, 0x1539,
-  0x5510, 0x0e19,
-  0x5511, 0x153a,
-  0x5512, 0x2ae1,
-  0x5514, 0x1535,
-  0x5515, 0x2ae3,
-  0x551b, 0x1531,
-  0x551c, 0x2ae9,
-  0x5520, 0x1533,
-  0x5521, 0x2aed,
-  0x5522, 0x1537,
-  0x5524, 0x07d2,
-  0x5525, 0x2aee,
-  0x5527, 0x153b,
-  0x5528, 0x2af0,
-  0x552a, 0x153c,
-  0x552b, 0x2af2,
-  0x552c, 0x07b8,
-  0x552d, 0x2af3,
-  0x552e, 0x0d72,
-  0x552f, 0x0eb7,
-  0x5530, 0x154d,
-  0x5531, 0x04cf,
-  0x5532, 0x2af4,
-  0x5533, 0x154c,
-  0x5534, 0x2af5,
-  0x5537, 0x1547,
-  0x5538, 0x2af8,
-  0x553c, 0x1546,
-  0x553d, 0x2afc,
-  0x553e, 0x0e8a,
-  0x553f, 0x1544,
-  0x5540, 0x2afd,
-  0x5541, 0x1542,
-  0x5542, 0x2afe,
-  0x5543, 0x095d,
-  0x5544, 0x1221,
-  0x5545, 0x2aff,
-  0x5546, 0x0d05,
-  0x5547, 0x2b00,
-  0x5549, 0x1540,
-  0x554a, 0x03ac,
-  0x554b, 0x2b02,
-  0x554f, 0x219c,
-  0x5550, 0x1545,
-  0x5551, 0x2b06,
-  0x5553, 0x20c9,
-  0x5554, 0x2b08,
-  0x5555, 0x1543,
-  0x5556, 0x1548,
-  0x5557, 0x2b09,
-  0x555c, 0x154e,
-  0x555d, 0x2b0e,
-  0x555e, 0x21f0,
-  0x555f, 0x2b0f,
-  0x5561, 0x0665,
-  0x5562, 0x2b11,
-  0x5564, 0x0bc0,
-  0x5565, 0x0cef,
-  0x5566, 0x099d,
-  0x5567, 0x153d,
-  0x5568, 0x2b13,
-  0x556a, 0x0b7f,
-  0x556b, 0x2b15,
-  0x556c, 0x127a,
-  0x556d, 0x1541,
-  0x556e, 0x0b59,
-  0x556f, 0x2b16,
-  0x5575, 0x1549,
-  0x5578, 0x0f70,
-  0x5579, 0x2b1c,
-  0x557b, 0x155a,
-  0x557c, 0x0e37,
-  0x557d, 0x2b1e,
-  0x557e, 0x1557,
-  0x557f, 0x2b1f,
-  0x5580, 0x0933,
-  0x5581, 0x1555,
-  0x5582, 0x0ec8,
-  0x5583, 0x1551,
-  0x5584, 0x0cff,
-  0x5585, 0x2b20,
-  0x5587, 0x0999,
-  0x5588, 0x1554,
-  0x5589, 0x07a4,
-  0x558a, 0x0767,
-  0x558b, 0x154f,
-  0x558c, 0x2b22,
-  0x558f, 0x153e,
-  0x5590, 0x2b25,
-  0x5591, 0x1559,
-  0x5592, 0x2b26,
-  0x5594, 0x155e,
-  0x5595, 0x2b28,
-  0x5598, 0x0530,
-  0x5599, 0x155f,
-  0x559a, 0x2b2b,
-  0x559c, 0x0f1f,
-  0x559d, 0x077f,
-  0x559e, 0x2b2d,
-  0x559f, 0x1556,
-  0x55a0, 0x2b2e,
-  0x55a7, 0x0fc5,
-  0x55a8, 0x2b35,
-  0x55aa, 0x210b,
-  0x55ab, 0x2b37,
-  0x55ac, 0x20de,
-  0x55ad, 0x2b38,
-  0x55ae, 0x1eaa,
-  0x55af, 0x2b39,
-  0x55b1, 0x1552,
-  0x55b2, 0x222c,
-  0x55b3, 0x113e,
-  0x55b4, 0x2b3b,
-  0x55b5, 0x153f,
-  0x55b6, 0x2b3c,
-  0x55b7, 0x0ba8,
-  0x55b8, 0x2b3d,
-  0x55b9, 0x1553,
-  0x55ba, 0x2b3e,
-  0x55bb, 0x10dc,
-  0x55bc, 0x2b3f,
-  0x55bd, 0x155c,
-  0x55bf, 0x2b40,
-  0x55c4, 0x156a,
-  0x55c5, 0x0fac,
-  0x55c6, 0x20d8,
-  0x55c7, 0x22c0,
-  0x55c8, 0x2b45,
-  0x55c9, 0x1562,
-  0x55ca, 0x2b46,
-  0x55cc, 0x156f,
-  0x55ce, 0x206f,
-  0x55cf, 0x2b48,
-  0x55d1, 0x1564,
-  0x55d2, 0x1550,
-  0x55d3, 0x0cdd,
-  0x55d4, 0x1567,
-  0x55d5, 0x2b4a,
-  0x55d6, 0x1558,
-  0x55d7, 0x2b4b,
-  0x55da, 0x21a1,
-  0x55db, 0x2b4e,
-  0x55dc, 0x0d5f,
-  0x55dd, 0x1569,
-  0x55de, 0x2b4f,
-  0x55df, 0x155b,
-  0x55e0, 0x2b50,
-  0x55e1, 0x0eda,
-  0x55e2, 0x2b51,
-  0x55e3, 0x0db8,
-  0x55e4, 0x1573,
-  0x55e5, 0x156c,
-  0x55e6, 0x1568,
-  0x55e7, 0x2b52,
-  0x55e8, 0x1571,
-  0x55e9, 0x2379,
-  0x55ea, 0x1560,
-  0x55eb, 0x1565,
-  0x55ed, 0x2b53,
-  0x55ef, 0x156b,
-  0x55f0, 0x2b55,
-  0x55f2, 0x156d,
-  0x55f4, 0x2b57,
-  0x55f5, 0x1572,
-  0x55f6, 0x2372,
-  0x55f7, 0x1561,
-  0x55f8, 0x2b58,
-  0x55fd, 0x0dc9,
-  0x55fe, 0x157b,
-  0x55ff, 0x2b5d,
-  0x5600, 0x157c,
-  0x5601, 0x1578,
-  0x5602, 0x2b5e,
-  0x5606, 0x216a,
-  0x5607, 0x2b62,
-  0x5608, 0x1576,
-  0x5609, 0x0841,
-  0x560a, 0x2b63,
-  0x560c, 0x1577,
-  0x560d, 0x237c,
-  0x560e, 0x06bd,
-  0x560f, 0x127b,
-  0x5610, 0x2b65,
-  0x5614, 0x20b0,
-  0x5615, 0x2b69,
-  0x5616, 0x237a,
-  0x5617, 0x1e74,
-  0x5618, 0x0fb5,
-  0x5619, 0x2b6a,
-  0x561b, 0x0a96,
-  0x561c, 0x2377,
-  0x561d, 0x2b6c,
-  0x561e, 0x1575,
-  0x561f, 0x1563,
-  0x5620, 0x2b6d,
-  0x5623, 0x157a,
-  0x5624, 0x1579,
-  0x5625, 0x2b70,
-  0x5627, 0x157d,
-  0x5628, 0x2b72,
-  0x5629, 0x1f4c,
-  0x562a, 0x2b73,
-  0x562c, 0x1582,
-  0x562d, 0x157e,
-  0x562e, 0x2378,
-  0x562f, 0x21cf,
-  0x5630, 0x2368,
-  0x5631, 0x11f5,
-  0x5632, 0x04d5,
-  0x5633, 0x2b75,
-  0x5634, 0x1249,
-  0x5635, 0x2371,
-  0x5636, 0x0db0,
-  0x5637, 0x2b76,
-  0x5638, 0x2369,
-  0x5639, 0x1580,
-  0x563a, 0x2b77,
-  0x563b, 0x0f0a,
-  0x563c, 0x2b78,
-  0x563f, 0x0790,
-  0x5640, 0x2b7b,
-  0x5641, 0x2674,
-  0x5642, 0x2b7c,
-  0x564c, 0x1587,
-  0x564d, 0x1583,
-  0x564e, 0x1034,
-  0x564f, 0x2b86,
-  0x5654, 0x1588,
-  0x5655, 0x2b8b,
-  0x5657, 0x1581,
-  0x5658, 0x157f,
-  0x5659, 0x1585,
-  0x565a, 0x2b8d,
-  0x565c, 0x1586,
-  0x565d, 0x236f,
-  0x565e, 0x2b8f,
-  0x5660, 0x2370,
-  0x5661, 0x2b91,
-  0x5662, 0x1584,
-  0x5663, 0x2b92,
-  0x5664, 0x158a,
-  0x5665, 0x2376,
-  0x5666, 0x2373,
-  0x5667, 0x2b93,
-  0x5668, 0x0c16,
-  0x5669, 0x1262,
-  0x566a, 0x112e,
-  0x566b, 0x158c,
-  0x566c, 0x0d60,
-  0x566d, 0x2b94,
-  0x566f, 0x237f,
-  0x5670, 0x2b96,
-  0x5671, 0x158b,
-  0x5672, 0x2374,
-  0x5673, 0x2b97,
-  0x5674, 0x20b5,
-  0x5675, 0x2b98,
-  0x5676, 0x06bc,
-  0x5677, 0x2b99,
-  0x5678, 0x1edb,
-  0x5679, 0x2672,
-  0x567a, 0x2b9a,
-  0x567b, 0x158d,
-  0x567d, 0x2b9b,
-  0x5680, 0x236e,
-  0x5681, 0x2b9e,
-  0x5685, 0x158f,
-  0x5686, 0x1589,
-  0x5687, 0x21b7,
-  0x5688, 0x2ba2,
-  0x568c, 0x2375,
-  0x568d, 0x2ba6,
-  0x568e, 0x0776,
-  0x568f, 0x0e3a,
-  0x5690, 0x2ba7,
-  0x5693, 0x1590,
-  0x5694, 0x2baa,
-  0x5695, 0x2382,
-  0x5696, 0x2bab,
-  0x5699, 0x209e,
-  0x569a, 0x2bae,
-  0x56a3, 0x0f66,
-  0x56a4, 0x2bb7,
-  0x56a6, 0x236b,
-  0x56a7, 0x2bb9,
-  0x56a8, 0x2039,
-  0x56a9, 0x2bba,
-  0x56ae, 0x269f,
-  0x56af, 0x1591,
-  0x56b0, 0x2bbf,
-  0x56b3, 0x237d,
-  0x56b4, 0x21f5,
-  0x56b5, 0x2bc2,
-  0x56b6, 0x2381,
-  0x56b7, 0x0c9d,
-  0x56b8, 0x2bc3,
-  0x56bc, 0x0891,
-  0x56bd, 0x2bc7,
-  0x56c0, 0x237b,
-  0x56c1, 0x237e,
-  0x56c2, 0x21cc,
-  0x56c3, 0x2bca,
-  0x56c5, 0x22db,
-  0x56c6, 0x2bcc,
-  0x56c8, 0x236a,
-  0x56c9, 0x2689,
-  0x56ca, 0x0b35,
-  0x56cb, 0x2bce,
-  0x56cc, 0x2697,
-  0x56cd, 0x2bcf,
-  0x56d1, 0x22a1,
-  0x56d2, 0x2bd3,
-  0x56d4, 0x1592,
-  0x56d5, 0x2bd5,
-  0x56d7, 0x1593,
-  0x56d8, 0x2bd7,
-  0x56da, 0x0c71,
-  0x56db, 0x0db9,
-  0x56dc, 0x2bd9,
-  0x56dd, 0x1594,
-  0x56de, 0x07ed,
-  0x56df, 0x126c,
-  0x56e0, 0x1079,
-  0x56e1, 0x1595,
-  0x56e2, 0x0e76,
-  0x56e3, 0x2bda,
-  0x56e4, 0x0619,
-  0x56e5, 0x2bdb,
-  0x56eb, 0x1597,
-  0x56ec, 0x2be1,
-  0x56ed, 0x10f3,
-  0x56ee, 0x2be2,
-  0x56f0, 0x0992,
-  0x56f1, 0x0554,
-  0x56f2, 0x2be4,
-  0x56f4, 0x0eb6,
-  0x56f5, 0x1596,
-  0x56f6, 0x2be6,
-  0x56f9, 0x1598,
-  0x56fa, 0x0725,
-  0x56fb, 0x2be9,
-  0x56fd, 0x0753,
-  0x56fe, 0x0e6d,
-  0x56ff, 0x1599,
-  0x5700, 0x2beb,
-  0x5703, 0x0bf3,
-  0x5704, 0x159a,
-  0x5705, 0x2bee,
-  0x5706, 0x10f5,
-  0x5707, 0x2383,
-  0x5708, 0x0c81,
-  0x5709, 0x159c,
-  0x570a, 0x159b,
-  0x570b, 0x1f3d,
-  0x570c, 0x2bef,
-  0x570d, 0x218f,
-  0x570e, 0x2bf0,
-  0x5712, 0x2246,
-  0x5713, 0x2248,
-  0x5714, 0x2bf4,
-  0x5716, 0x217e,
-  0x5717, 0x2bf6,
-  0x5718, 0x2180,
-  0x5719, 0x2bf7,
-  0x571c, 0x159d,
-  0x571d, 0x2bfa,
-  0x571f, 0x0e72,
-  0x5720, 0x2bfc,
-  0x5723, 0x0d3c,
-  0x5724, 0x2bff,
-  0x5728, 0x111d,
-  0x5729, 0x13a7,
-  0x572a, 0x13a9,
-  0x572b, 0x2c03,
-  0x572c, 0x13a8,
-  0x572d, 0x0740,
-  0x572e, 0x13ac,
-  0x5730, 0x05b9,
-  0x5731, 0x2c04,
-  0x5733, 0x13aa,
-  0x5734, 0x2c06,
-  0x5739, 0x13ab,
-  0x573a, 0x04c6,
-  0x573b, 0x13af,
-  0x573c, 0x2c0b,
-  0x573e, 0x080d,
-  0x573f, 0x2c0d,
-  0x5740, 0x11b6,
-  0x5741, 0x2c0e,
-  0x5742, 0x13b0,
-  0x5743, 0x2c0f,
-  0x5747, 0x0928,
-  0x5748, 0x2c13,
-  0x574a, 0x0658,
-  0x574b, 0x2c15,
-  0x574c, 0x13a0,
-  0x574d, 0x0e01,
-  0x574e, 0x093f,
-  0x574f, 0x07ca,
-  0x5750, 0x1255,
-  0x5751, 0x0960,
-  0x5752, 0x2c16,
-  0x5757, 0x0976,
-  0x5758, 0x2c1b,
-  0x575a, 0x0854,
-  0x575b, 0x0e06,
-  0x575c, 0x13ae,
-  0x575d, 0x03de,
-  0x575e, 0x0efa,
-  0x575f, 0x0675,
-  0x5760, 0x1216,
-  0x5761, 0x0be1,
-  0x5762, 0x2c1d,
-  0x5764, 0x098f,
-  0x5765, 0x2c1f,
-  0x5766, 0x0e0c,
-  0x5767, 0x2c20,
-  0x5768, 0x13b7,
-  0x5769, 0x13b1,
-  0x576a, 0x0bd9,
-  0x576b, 0x13b3,
-  0x576c, 0x2c21,
-  0x576d, 0x13b8,
-  0x576e, 0x2c22,
-  0x576f, 0x0bb8,
-  0x5770, 0x2c23,
-  0x5773, 0x13ba,
-  0x5774, 0x2c26,
-  0x5776, 0x13b9,
-  0x5777, 0x094d,
-  0x5778, 0x2c28,
-  0x577b, 0x13b6,
-  0x577c, 0x13b5,
-  0x577d, 0x2c2b,
-  0x5782, 0x053c,
-  0x5783, 0x0997,
-  0x5784, 0x0a49,
-  0x5785, 0x13b2,
-  0x5786, 0x13b4,
-  0x5787, 0x2c30,
-  0x578b, 0x0f98,
-  0x578c, 0x13bd,
-  0x578d, 0x2c34,
-  0x5792, 0x09c8,
-  0x5793, 0x13c2,
-  0x5794, 0x2c39,
-  0x579b, 0x0621,
-  0x579c, 0x2c40,
-  0x57a0, 0x13c3,
-  0x57a1, 0x13a2,
-  0x57a2, 0x0711,
-  0x57a3, 0x10ee,
-  0x57a4, 0x13bc,
-  0x57a5, 0x2c44,
-  0x57a6, 0x095e,
-  0x57a7, 0x13c0,
-  0x57a8, 0x2c45,
-  0x57a9, 0x13a1,
-  0x57aa, 0x2c46,
-  0x57ab, 0x05c7,
-  0x57ac, 0x2c47,
-  0x57ad, 0x13bb,
-  0x57ae, 0x0972,
-  0x57af, 0x2c48,
-  0x57b2, 0x13be,
-  0x57b3, 0x2c4b,
-  0x57b4, 0x13c1,
-  0x57b5, 0x2c4c,
-  0x57b8, 0x13c9,
-  0x57b9, 0x2c4f,
-  0x57c2, 0x06fa,
-  0x57c3, 0x03ae,
-  0x57c4, 0x2c58,
-  0x57cb, 0x0a98,
-  0x57cc, 0x2c5f,
-  0x57ce, 0x04ec,
-  0x57cf, 0x13bf,
-  0x57d0, 0x2c61,
-  0x57d2, 0x13c8,
-  0x57d3, 0x2c63,
-  0x57d4, 0x0bf1,
-  0x57d5, 0x13c4,
-  0x57d6, 0x2c64,
-  0x57d8, 0x13c5,
-  0x57d9, 0x13c7,
-  0x57da, 0x13c6,
-  0x57db, 0x2c66,
-  0x57dd, 0x13ce,
-  0x57de, 0x2c68,
-  0x57df, 0x10d7,
-  0x57e0, 0x0481,
-  0x57e1, 0x232a,
-  0x57e2, 0x2c69,
-  0x57e4, 0x13cd,
-  0x57e5, 0x2c6b,
-  0x57ed, 0x13d2,
-  0x57ee, 0x2c73,
-  0x57ef, 0x13cb,
-  0x57f0, 0x2c74,
-  0x57f4, 0x13ca,
-  0x57f5, 0x2c78,
-  0x57f7, 0x228b,
-  0x57f8, 0x13cc,
-  0x57f9, 0x0ba1,
-  0x57fa, 0x080e,
-  0x57fb, 0x2c7a,
-  0x57fd, 0x13d1,
-  0x57fe, 0x2c7c,
-  0x5800, 0x13d3,
-  0x5801, 0x2c7e,
-  0x5802, 0x0e16,
-  0x5803, 0x2c7f,
-  0x5805, 0x1f85,
-  0x5806, 0x0610,
-  0x5807, 0x144c,
-  0x5808, 0x2c81,
-  0x580a, 0x2325,
-  0x580b, 0x13cf,
-  0x580c, 0x2c83,
-  0x580d, 0x13d0,
-  0x580e, 0x2c84,
-  0x5811, 0x0c32,
-  0x5812, 0x2c87,
-  0x5815, 0x0628,
-  0x5816, 0x232c,
-  0x5817, 0x2c8a,
-  0x5819, 0x13d5,
-  0x581a, 0x2c8c,
-  0x581d, 0x232e,
-  0x581e, 0x13d4,
-  0x581f, 0x2c8f,
-  0x5820, 0x13d7,
-  0x5821, 0x040d,
-  0x5822, 0x2c90,
-  0x5824, 0x05ad,
-  0x5825, 0x2c92,
-  0x582a, 0x093d,
-  0x582b, 0x2c97,
-  0x582f, 0x2205,
-  0x5830, 0x1008,
-  0x5831, 0x1e38,
-  0x5832, 0x2c9b,
-  0x5834, 0x1e73,
-  0x5835, 0x0601,
-  0x5836, 0x2c9d,
-  0x5844, 0x13d6,
-  0x5845, 0x2cab,
-  0x584a, 0x1fe3,
-  0x584b, 0x2339,
-  0x584c, 0x0def,
-  0x584d, 0x19a3,
-  0x584e, 0x2cb0,
-  0x584f, 0x232b,
-  0x5850, 0x2cb1,
-  0x5851, 0x0dd1,
-  0x5852, 0x232d,
-  0x5853, 0x2cb2,
-  0x5854, 0x0df3,
-  0x5855, 0x2cb3,
-  0x5857, 0x217f,
-  0x5858, 0x0e14,
-  0x5859, 0x2cb5,
-  0x585e, 0x0cd6,
-  0x585f, 0x2cba,
-  0x5862, 0x21a7,
-  0x5863, 0x2cbd,
-  0x5864, 0x232f,
-  0x5865, 0x13d8,
-  0x5866, 0x2cbe,
-  0x586b, 0x0e41,
-  0x586c, 0x13d9,
-  0x586d, 0x2cc3,
-  0x5875, 0x1e7d,
-  0x5876, 0x2ccb,
-  0x5879, 0x20d6,
-  0x587a, 0x2cce,
-  0x587e, 0x13a3,
-  0x587f, 0x2cd2,
-  0x5880, 0x13dd,
-  0x5881, 0x13da,
-  0x5882, 0x2cd3,
-  0x5883, 0x08e2,
-  0x5884, 0x2cd4,
-  0x5885, 0x0d92,
-  0x5886, 0x2cd5,
-  0x5889, 0x13db,
-  0x588a, 0x1ec2,
-  0x588b, 0x2cd8,
-  0x5892, 0x0d03,
-  0x5893, 0x0b1c,
-  0x5894, 0x2cdf,
-  0x5899, 0x0c3a,
-  0x589a, 0x13dc,
-  0x589b, 0x2ce4,
-  0x589c, 0x22b2,
-  0x589d, 0x2ce5,
-  0x589e, 0x1139,
-  0x589f, 0x0fb1,
-  0x58a0, 0x2ce6,
-  0x58a8, 0x0b0e,
-  0x58a9, 0x0614,
-  0x58aa, 0x2cee,
-  0x58ae, 0x1edf,
-  0x58af, 0x2cf2,
-  0x58b3, 0x1ef9,
-  0x58b4, 0x2cf6,
-  0x58bb, 0x20d9,
-  0x58bc, 0x13a4,
-  0x58bd, 0x2cfd,
-  0x58be, 0x1fdd,
-  0x58bf, 0x2cfe,
-  0x58c1, 0x0443,
-  0x58c2, 0x2d00,
-  0x58c5, 0x13a5,
-  0x58c6, 0x2d03,
-  0x58c7, 0x2167,
-  0x58c8, 0x2d04,
-  0x58d1, 0x13a6,
-  0x58d2, 0x2d0d,
-  0x58d3, 0x21ed,
-  0x58d4, 0x2d0e,
-  0x58d5, 0x0775,
-  0x58d6, 0x2d0f,
-  0x58d8, 0x2007,
-  0x58d9, 0x2326,
-  0x58da, 0x2329,
-  0x58db, 0x2d11,
-  0x58de, 0x1f52,
-  0x58df, 0x203b,
-  0x58e0, 0x2328,
-  0x58e1, 0x2d14,
-  0x58e2, 0x2327,
-  0x58e3, 0x2d15,
-  0x58e4, 0x0c9b,
-  0x58e5, 0x2d16,
-  0x58e9, 0x1e2b,
-  0x58ea, 0x2d1a,
-  0x58eb, 0x0d56,
-  0x58ec, 0x0ca4,
-  0x58ed, 0x2d1b,
-  0x58ee, 0x1210,
-  0x58ef, 0x22ae,
-  0x58f0, 0x0d32,
-  0x58f1, 0x2d1c,
-  0x58f3, 0x0954,
-  0x58f4, 0x2d1e,
-  0x58f6, 0x07af,
-  0x58f7, 0x2d20,
-  0x58f9, 0x1043,
-  0x58fa, 0x1f49,
-  0x58fb, 0x2d22,
-  0x58fd, 0x2138,
-  0x58fe, 0x2d24,
-  0x5900, 0x2d26,
-  0x5902, 0x161c,
-  0x5903, 0x2d28,
-  0x5904, 0x0529,
-  0x5905, 0x2d29,
-  0x5907, 0x0421,
-  0x5908, 0x2d2b,
-  0x590d, 0x06af,
-  0x590e, 0x2d30,
-  0x590f, 0x0f31,
-  0x5910, 0x2d31,
-  0x5914, 0x12fb,
-  0x5915, 0x0f13,
-  0x5916, 0x0e93,
-  0x5917, 0x2d35,
-  0x5919, 0x1301,
-  0x591a, 0x061f,
-  0x591b, 0x2d37,
-  0x591c, 0x1040,
-  0x591d, 0x2d38,
-  0x591f, 0x0714,
-  0x5920, 0x2d3a,
-  0x5922, 0x2081,
-  0x5923, 0x2d3c,
-  0x5924, 0x161b,
-  0x5925, 0x1619,
-  0x5926, 0x2d3d,
-  0x5927, 0x0576,
-  0x5928, 0x2d3e,
-  0x5929, 0x0e3f,
-  0x592a, 0x0dfe,
-  0x592b, 0x068f,
-  0x592c, 0x2d3f,
-  0x592d, 0x1268,
-  0x592e, 0x1014,
-  0x592f, 0x0772,
-  0x5930, 0x2d40,
-  0x5931, 0x0d3e,
-  0x5932, 0x2d41,
-  0x5934, 0x0e68,
-  0x5935, 0x2d43,
-  0x5937, 0x104b,
-  0x5938, 0x0971,
-  0x5939, 0x0843,
-  0x593a, 0x0620,
-  0x593b, 0x2d45,
-  0x593c, 0x14af,
-  0x593d, 0x2d46,
-  0x593e, 0x1f7c,
-  0x593f, 0x2d47,
-  0x5941, 0x14b0,
-  0x5942, 0x138c,
-  0x5943, 0x2d49,
-  0x5944, 0x1002,
-  0x5945, 0x2d4a,
-  0x5947, 0x0c05,
-  0x5948, 0x0b31,
-  0x5949, 0x068b,
-  0x594a, 0x2d4c,
-  0x594b, 0x0679,
-  0x594c, 0x2d4d,
-  0x594e, 0x0989,
-  0x594f, 0x123d,
-  0x5950, 0x2d4f,
-  0x5951, 0x0c14,
-  0x5952, 0x2d50,
-  0x5954, 0x0425,
-  0x5955, 0x14b2,
-  0x5956, 0x0882,
-  0x5957, 0x0e2a,
-  0x5958, 0x14b4,
-  0x5959, 0x2d52,
-  0x595a, 0x14b3,
-  0x595b, 0x2d53,
-  0x5960, 0x05cd,
-  0x5961, 0x2d58,
-  0x5962, 0x0d16,
-  0x5963, 0x2d59,
-  0x5965, 0x03cd,
-  0x5966, 0x2d5b,
-  0x5969, 0x235b,
-  0x596a, 0x1ede,
-  0x596b, 0x2d5e,
-  0x596c, 0x1fa2,
-  0x596d, 0x2d5f,
-  0x596e, 0x1efa,
-  0x596f, 0x2d60,
-  0x5973, 0x0b6f,
-  0x5974, 0x0b6c,
-  0x5975, 0x2d64,
-  0x5976, 0x0b2f,
-  0x5977, 0x2d65,
-  0x5978, 0x085c,
-  0x5979, 0x0df2,
-  0x597a, 0x2d66,
-  0x597d, 0x077a,
-  0x597e, 0x2d69,
-  0x5981, 0x1775,
-  0x5982, 0x0cc2,
-  0x5983, 0x1776,
-  0x5984, 0x0eae,
-  0x5985, 0x2d6c,
-  0x5986, 0x120e,
-  0x5987, 0x06b9,
-  0x5988, 0x0a8f,
-  0x5989, 0x2d6d,
-  0x598a, 0x0cac,
-  0x598b, 0x2d6e,
-  0x598d, 0x1777,
-  0x598e, 0x2d70,
-  0x5992, 0x0609,
-  0x5993, 0x083e,
-  0x5994, 0x2d74,
-  0x5996, 0x1026,
-  0x5997, 0x177b,
-  0x5998, 0x2d76,
-  0x5999, 0x0af3,
-  0x599a, 0x2d77,
-  0x599d, 0x22ad,
-  0x599e, 0x177e,
-  0x599f, 0x2d7a,
-  0x59a3, 0x177a,
-  0x59a4, 0x177f,
-  0x59a5, 0x0e88,
-  0x59a6, 0x2d7e,
-  0x59a8, 0x065e,
-  0x59a9, 0x1778,
-  0x59ab, 0x177d,
-  0x59ac, 0x2d80,
-  0x59ae, 0x0b40,
-  0x59af, 0x1782,
-  0x59b0, 0x2d82,
-  0x59b2, 0x1781,
-  0x59b3, 0x2d84,
-  0x59b9, 0x0ac8,
-  0x59ba, 0x2d8a,
-  0x59bb, 0x0bfd,
-  0x59bc, 0x2d8b,
-  0x59be, 0x1784,
-  0x59bf, 0x2d8d,
-  0x59c6, 0x0b1a,
-  0x59c7, 0x2d94,
-  0x59ca, 0x177c,
-  0x59cb, 0x0d53,
-  0x59cc, 0x2d97,
-  0x59d0, 0x08b4,
-  0x59d1, 0x071c,
-  0x59d2, 0x1780,
-  0x59d3, 0x0fa0,
-  0x59d4, 0x0ebe,
-  0x59d5, 0x2d9b,
-  0x59d7, 0x1783,
-  0x59d8, 0x178a,
-  0x59d9, 0x2d9d,
-  0x59da, 0x102d,
-  0x59db, 0x2d9e,
-  0x59dc, 0x087b,
-  0x59dd, 0x1787,
-  0x59de, 0x2d9f,
-  0x59e3, 0x1789,
-  0x59e4, 0x2da4,
-  0x59e5, 0x09bc,
-  0x59e6, 0x2da5,
-  0x59e8, 0x1053,
-  0x59e9, 0x2da7,
-  0x59ec, 0x081a,
-  0x59ed, 0x2daa,
-  0x59f9, 0x178b,
-  0x59fa, 0x2db6,
-  0x59fb, 0x107d,
-  0x59fc, 0x2db7,
-  0x59ff, 0x1228,
-  0x5a00, 0x2dba,
-  0x5a01, 0x0eaf,
-  0x5a02, 0x2dbb,
-  0x5a03, 0x0e8f,
-  0x5a04, 0x0a4d,
-  0x5a05, 0x1785,
-  0x5a07, 0x0890,
-  0x5a08, 0x1788,
-  0x5a09, 0x178d,
-  0x5a0a, 0x2dbc,
-  0x5a0c, 0x178c,
-  0x5a0d, 0x2dbe,
-  0x5a11, 0x1790,
-  0x5a12, 0x2dc2,
-  0x5a13, 0x1792,
-  0x5a14, 0x2dc3,
-  0x5a18, 0x0b52,
-  0x5a19, 0x2dc7,
-  0x5a1c, 0x0b2b,
-  0x5a1d, 0x2dca,
-  0x5a1f, 0x0919,
-  0x5a20, 0x0d28,
-  0x5a21, 0x2dcc,
-  0x5a23, 0x1791,
-  0x5a24, 0x2dce,
-  0x5a25, 0x062f,
-  0x5a26, 0x2dcf,
-  0x5a29, 0x0ae9,
-  0x5a2a, 0x2dd2,
-  0x5a31, 0x10ce,
-  0x5a32, 0x178e,
-  0x5a33, 0x2dd9,
-  0x5a34, 0x178f,
-  0x5a35, 0x2dda,
-  0x5a36, 0x0c7d,
-  0x5a37, 0x2ddb,
-  0x5a3c, 0x1797,
-  0x5a3d, 0x2de0,
-  0x5a40, 0x1793,
-  0x5a41, 0x203f,
-  0x5a42, 0x2de3,
-  0x5a46, 0x0be4,
-  0x5a47, 0x2de7,
-  0x5a49, 0x0ea2,
-  0x5a4a, 0x1795,
-  0x5a4b, 0x2de9,
-  0x5a55, 0x1796,
-  0x5a56, 0x2df3,
-  0x5a5a, 0x07fe,
-  0x5a5b, 0x2df7,
-  0x5a62, 0x1798,
-  0x5a63, 0x2dfe,
-  0x5a66, 0x1f0e,
-  0x5a67, 0x1794,
-  0x5a68, 0x2e01,
-  0x5a6a, 0x09a2,
-  0x5a6b, 0x2e03,
-  0x5a6d, 0x23f9,
-  0x5a6e, 0x2e05,
-  0x5a74, 0x1089,
-  0x5a75, 0x1799,
-  0x5a76, 0x0d2d,
-  0x5a77, 0x179d,
-  0x5a78, 0x2e0b,
-  0x5a7a, 0x179e,
-  0x5a7b, 0x2e0d,
-  0x5a7f, 0x0fc1,
-  0x5a80, 0x2e11,
-  0x5a92, 0x0ac2,
-  0x5a93, 0x2e23,
-  0x5a9a, 0x0ac9,
-  0x5a9b, 0x179c,
-  0x5a9c, 0x2e2a,
-  0x5aa7, 0x23fc,
-  0x5aa8, 0x2e35,
-  0x5aaa, 0x179b,
-  0x5aab, 0x2e37,
-  0x5ab2, 0x17a1,
-  0x5ab3, 0x0f1e,
-  0x5ab4, 0x2e3e,
-  0x5ab5, 0x19a4,
-  0x5ab6, 0x2e3f,
-  0x5ab8, 0x17a4,
-  0x5ab9, 0x2e41,
-  0x5abd, 0x2069,
-  0x5abe, 0x179f,
-  0x5abf, 0x2e45,
-  0x5ac1, 0x0851,
-  0x5ac2, 0x0ce2,
-  0x5ac3, 0x2e47,
-  0x5ac9, 0x0828,
-  0x5aca, 0x2e4d,
-  0x5acc, 0x0f40,
-  0x5acd, 0x2e4f,
-  0x5ad2, 0x17a2,
-  0x5ad3, 0x2e54,
-  0x5ad4, 0x17a3,
-  0x5ad5, 0x2e55,
-  0x5ad6, 0x17a8,
-  0x5ad7, 0x23f7,
-  0x5ad8, 0x17aa,
-  0x5ad9, 0x2e56,
-  0x5adc, 0x17ab,
-  0x5add, 0x2e59,
-  0x5ae0, 0x17a5,
-  0x5ae1, 0x05b6,
-  0x5ae2, 0x2e5c,
-  0x5ae3, 0x17a6,
-  0x5ae4, 0x2e5d,
-  0x5ae6, 0x17a9,
-  0x5ae7, 0x2e5f,
-  0x5ae9, 0x0b3e,
-  0x5aea, 0x2e61,
-  0x5aeb, 0x17a0,
-  0x5aec, 0x2e62,
-  0x5af1, 0x17a7,
-  0x5af2, 0x2e67,
-  0x5af5, 0x23f6,
-  0x5af6, 0x2e6a,
-  0x5afb, 0x23fd,
-  0x5afc, 0x2e6f,
-  0x5b00, 0x23f8,
-  0x5b01, 0x2e73,
-  0x5b08, 0x23fa,
-  0x5b09, 0x17ac,
-  0x5b0a, 0x2e7a,
-  0x5b0b, 0x23fe,
-  0x5b0c, 0x1fa8,
-  0x5b0d, 0x2e7b,
-  0x5b16, 0x17ae,
-  0x5b17, 0x17ad,
-  0x5b18, 0x2e84,
-  0x5b19, 0x2401,
-  0x5b1a, 0x2e85,
-  0x5b21, 0x23ff,
-  0x5b22, 0x2e8c,
-  0x5b2a, 0x2400,
-  0x5b2b, 0x2e94,
-  0x5b30, 0x2221,
-  0x5b31, 0x2e99,
-  0x5b32, 0x17af,
-  0x5b33, 0x2e9a,
-  0x5b34, 0x130c,
-  0x5b35, 0x2e9b,
-  0x5b37, 0x17b0,
-  0x5b38, 0x2122,
-  0x5b39, 0x2e9d,
-  0x5b40, 0x17b1,
-  0x5b41, 0x2ea4,
-  0x5b4c, 0x23fb,
-  0x5b4d, 0x2eaf,
-  0x5b50, 0x1230,
-  0x5b51, 0x17b7,
-  0x5b52, 0x2eb2,
-  0x5b53, 0x17b8,
-  0x5b54, 0x0964,
-  0x5b55, 0x1113,
-  0x5b56, 0x2eb3,
-  0x5b57, 0x1233,
-  0x5b58, 0x0569,
-  0x5b59, 0x0de4,
-  0x5b5a, 0x17b4,
-  0x5b5b, 0x1279,
-  0x5b5c, 0x122b,
-  0x5b5d, 0x0f6d,
-  0x5b5e, 0x2eb4,
-  0x5b5f, 0x0ad4,
-  0x5b60, 0x2eb5,
-  0x5b62, 0x17b9,
-  0x5b63, 0x0831,
-  0x5b64, 0x071b,
-  0x5b65, 0x17b5,
-  0x5b66, 0x0fd0,
-  0x5b67, 0x2eb7,
-  0x5b69, 0x0759,
-  0x5b6a, 0x0a76,
-  0x5b6b, 0x215a,
-  0x5b6c, 0x1261,
-  0x5b6d, 0x2eb9,
-  0x5b70, 0x0d82,
-  0x5b71, 0x176a,
-  0x5b72, 0x2ebc,
-  0x5b73, 0x17b6,
-  0x5b74, 0x2ebd,
-  0x5b75, 0x0692,
-  0x5b76, 0x2ebe,
-  0x5b78, 0x21e5,
-  0x5b79, 0x2ec0,
-  0x5b7a, 0x0cc1,
-  0x5b7b, 0x2ec1,
-  0x5b7d, 0x0b58,
-  0x5b7e, 0x2ec3,
-  0x5b7f, 0x2057,
-  0x5b80, 0x172e,
-  0x5b81, 0x0b61,
-  0x5b82, 0x2ec4,
-  0x5b83, 0x0df1,
-  0x5b84, 0x172f,
-  0x5b85, 0x114d,
-  0x5b86, 0x2ec5,
-  0x5b87, 0x10d3,
-  0x5b88, 0x0d6f,
-  0x5b89, 0x03bd,
-  0x5b8a, 0x2ec6,
-  0x5b8b, 0x0dc3,
-  0x5b8c, 0x0e9b,
-  0x5b8d, 0x2ec7,
-  0x5b8f, 0x07a1,
-  0x5b90, 0x2ec9,
-  0x5b93, 0x1731,
-  0x5b94, 0x2ecc,
-  0x5b95, 0x1730,
-  0x5b96, 0x2ecd,
-  0x5b97, 0x1237,
-  0x5b98, 0x0732,
-  0x5b99, 0x11e5,
-  0x5b9a, 0x05e7,
-  0x5b9b, 0x0ea1,
-  0x5b9c, 0x1052,
-  0x5b9d, 0x040f,
-  0x5b9e, 0x0d4c,
-  0x5b9f, 0x2ece,
-  0x5ba0, 0x050d,
-  0x5ba1, 0x0d2c,
-  0x5ba2, 0x095a,
-  0x5ba3, 0x0fc6,
-  0x5ba4, 0x0d69,
-  0x5ba5, 0x1732,
-  0x5ba6, 0x07d7,
-  0x5ba7, 0x2ecf,
-  0x5baa, 0x0f49,
-  0x5bab, 0x0705,
-  0x5bac, 0x2ed2,
-  0x5bb0, 0x111a,
-  0x5bb1, 0x2ed6,
-  0x5bb3, 0x075d,
-  0x5bb4, 0x1010,
-  0x5bb5, 0x0f69,
-  0x5bb6, 0x0845,
-  0x5bb7, 0x2ed8,
-  0x5bb8, 0x1733,
-  0x5bb9, 0x0cb8,
-  0x5bba, 0x2ed9,
-  0x5bbd, 0x097a,
-  0x5bbe, 0x045f,
-  0x5bbf, 0x0dd3,
-  0x5bc0, 0x2edc,
-  0x5bc2, 0x0838,
-  0x5bc3, 0x2ede,
-  0x5bc4, 0x0837,
-  0x5bc5, 0x1081,
-  0x5bc6, 0x0ae1,
-  0x5bc7, 0x0969,
-  0x5bc8, 0x2edf,
-  0x5bcc, 0x06b6,
-  0x5bcd, 0x2ee3,
-  0x5bd0, 0x0ac7,
-  0x5bd1, 0x2ee6,
-  0x5bd2, 0x0765,
-  0x5bd3, 0x10e5,
-  0x5bd4, 0x2ee7,
-  0x5bdd, 0x0c5b,
-  0x5bde, 0x0b12,
-  0x5bdf, 0x04b3,
-  0x5be0, 0x2ef0,
-  0x5be1, 0x072a,
-  0x5be2, 0x20e5,
-  0x5be3, 0x2ef1,
-  0x5be4, 0x1737,
-  0x5be5, 0x0a11,
-  0x5be6, 0x212f,
-  0x5be7, 0x20a3,
-  0x5be8, 0x1150,
-  0x5be9, 0x2121,
-  0x5bea, 0x2ef2,
-  0x5beb, 0x21d4,
-  0x5bec, 0x1fe5,
-  0x5bed, 0x2ef3,
-  0x5bee, 0x1738,
-  0x5bef, 0x2ef4,
-  0x5bf0, 0x173a,
-  0x5bf1, 0x2ef5,
-  0x5bf5, 0x1e8a,
-  0x5bf6, 0x1e37,
-  0x5bf7, 0x2ef9,
-  0x5bf8, 0x056a,
-  0x5bf9, 0x0613,
-  0x5bfa, 0x0db7,
-  0x5bfb, 0x0fd9,
-  0x5bfc, 0x059d,
-  0x5bfd, 0x2efa,
-  0x5bff, 0x0d70,
-  0x5c00, 0x2efc,
-  0x5c01, 0x067f,
-  0x5c02, 0x2efd,
-  0x5c04, 0x0d1d,
-  0x5c05, 0x2eff,
-  0x5c06, 0x087c,
-  0x5c07, 0x1f9e,
-  0x5c08, 0x22a6,
-  0x5c09, 0x0ecd,
-  0x5c0a, 0x124d,
-  0x5c0b, 0x21e8,
-  0x5c0c, 0x2f00,
-  0x5c0d, 0x1eda,
-  0x5c0e, 0x1eb9,
-  0x5c0f, 0x0f6c,
-  0x5c10, 0x2f01,
-  0x5c11, 0x0d12,
-  0x5c12, 0x2f02,
-  0x5c14, 0x063a,
-  0x5c15, 0x17b2,
-  0x5c16, 0x0855,
-  0x5c17, 0x2f04,
-  0x5c18, 0x04e3,
-  0x5c19, 0x2f05,
-  0x5c1a, 0x0d09,
-  0x5c1b, 0x2f06,
-  0x5c1c, 0x17b3,
-  0x5c1d, 0x04c7,
-  0x5c1e, 0x2f07,
-  0x5c22, 0x14b6,
-  0x5c23, 0x2f0b,
-  0x5c24, 0x10ad,
-  0x5c25, 0x14b7,
-  0x5c26, 0x2f0c,
-  0x5c27, 0x1029,
-  0x5c28, 0x2f0d,
-  0x5c2c, 0x14b8,
-  0x5c2d, 0x2f11,
-  0x5c31, 0x08fc,
-  0x5c32, 0x2f15,
-  0x5c34, 0x14b9,
-  0x5c35, 0x2f17,
-  0x5c37, 0x235c,
-  0x5c38, 0x0d43,
-  0x5c39, 0x1083,
-  0x5c3a, 0x0504,
-  0x5c3b, 0x1766,
-  0x5c3c, 0x0b44,
-  0x5c3d, 0x08d0,
-  0x5c3e, 0x0ec1,
-  0x5c3f, 0x0b55,
-  0x5c40, 0x0905,
-  0x5c41, 0x0bc7,
-  0x5c42, 0x04aa,
-  0x5c43, 0x2f19,
-  0x5c45, 0x0902,
-  0x5c46, 0x2f1b,
-  0x5c48, 0x0c79,
-  0x5c49, 0x0e3e,
-  0x5c4a, 0x08bd,
-  0x5c4b, 0x0eec,
-  0x5c4c, 0x2f1d,
-  0x5c4e, 0x0d51,
-  0x5c4f, 0x0be0,
-  0x5c50, 0x1768,
-  0x5c51, 0x0f87,
-  0x5c52, 0x2f1f,
-  0x5c55, 0x115a,
-  0x5c56, 0x2f22,
-  0x5c59, 0x1769,
-  0x5c5a, 0x2f25,
-  0x5c5e, 0x0d8b,
-  0x5c5f, 0x2f29,
-  0x5c60, 0x0e71,
-  0x5c61, 0x0a6c,
-  0x5c62, 0x2050,
-  0x5c63, 0x176b,
-  0x5c64, 0x1e67,
-  0x5c65, 0x0a6b,
-  0x5c66, 0x176c,
-  0x5c67, 0x2f2a,
-  0x5c68, 0x23f4,
-  0x5c69, 0x2f2b,
-  0x5c6c, 0x213e,
-  0x5c6d, 0x2f2e,
-  0x5c6e, 0x1774,
-  0x5c6f, 0x0e7e,
-  0x5c70, 0x2f2f,
-  0x5c71, 0x0cf6,
-  0x5c72, 0x2f30,
-  0x5c79, 0x1060,
-  0x5c7a, 0x15ac,
-  0x5c7b, 0x2f37,
-  0x5c7f, 0x10d1,
-  0x5c80, 0x2f3b,
-  0x5c81, 0x0ddf,
-  0x5c82, 0x0c10,
-  0x5c83, 0x2f3c,
-  0x5c88, 0x15b0,
-  0x5c89, 0x2f41,
-  0x5c8c, 0x15ab,
-  0x5c8d, 0x15ad,
-  0x5c8e, 0x2f44,
-  0x5c90, 0x15ae,
-  0x5c91, 0x15b3,
-  0x5c92, 0x2f46,
-  0x5c94, 0x04b4,
-  0x5c95, 0x2f48,
-  0x5c96, 0x15af,
-  0x5c97, 0x06d5,
-  0x5c98, 0x15b1,
-  0x5c9a, 0x15b4,
-  0x5c9b, 0x059b,
-  0x5c9c, 0x15b5,
-  0x5c9d, 0x2f49,
-  0x5ca1, 0x1f16,
-  0x5ca2, 0x15b7,
-  0x5ca3, 0x15bc,
-  0x5ca4, 0x2f4d,
-  0x5ca9, 0x0ffb,
-  0x5caa, 0x2f52,
-  0x5cab, 0x15ba,
-  0x5cac, 0x15b9,
-  0x5cad, 0x0a34,
-  0x5cae, 0x2f53,
-  0x5cb1, 0x15bb,
-  0x5cb2, 0x2f56,
-  0x5cb3, 0x1103,
-  0x5cb4, 0x2f57,
-  0x5cb5, 0x15b6,
-  0x5cb6, 0x2f58,
-  0x5cb7, 0x15be,
-  0x5cb8, 0x03c1,
-  0x5cb9, 0x2f59,
-  0x5cbd, 0x15b8,
-  0x5cbe, 0x2f5d,
-  0x5cbf, 0x0986,
-  0x5cc0, 0x2f5e,
-  0x5cc1, 0x15bd,
-  0x5cc2, 0x2f5f,
-  0x5cc4, 0x15bf,
-  0x5cc5, 0x2f61,
-  0x5ccb, 0x15c2,
-  0x5ccc, 0x2f67,
-  0x5cd2, 0x15c0,
-  0x5cd3, 0x2f6d,
-  0x5cd9, 0x11c4,
-  0x5cda, 0x2f73,
-  0x5ce1, 0x0f2c,
-  0x5ce2, 0x2f7a,
-  0x5ce4, 0x15c1,
-  0x5ce5, 0x15c3,
-  0x5ce6, 0x0a74,
-  0x5ce7, 0x2f7c,
-  0x5ce8, 0x062a,
-  0x5ce9, 0x2f7d,
-  0x5cea, 0x10dd,
-  0x5ceb, 0x2f7e,
-  0x5ced, 0x0c4a,
-  0x5cee, 0x2f80,
-  0x5cf0, 0x0682,
-  0x5cf1, 0x2f82,
-  0x5cf4, 0x2389,
-  0x5cf5, 0x2f85,
-  0x5cf6, 0x1eb7,
-  0x5cf7, 0x2f86,
-  0x5cfb, 0x092d,
-  0x5cfc, 0x2f8a,
-  0x5cfd, 0x21b4,
-  0x5cfe, 0x2f8b,
-  0x5d00, 0x2f8d,
-  0x5d02, 0x15c4,
-  0x5d04, 0x2f8f,
-  0x5d06, 0x15cb,
-  0x5d07, 0x050c,
-  0x5d08, 0x2f91,
-  0x5d0d, 0x238f,
-  0x5d0e, 0x0c08,
-  0x5d0f, 0x2f96,
-  0x5d14, 0x0561,
-  0x5d15, 0x2f9b,
-  0x5d16, 0x0feb,
-  0x5d17, 0x1f1a,
-  0x5d18, 0x2f9c,
-  0x5d1b, 0x15cc,
-  0x5d1c, 0x2f9f,
-  0x5d1e, 0x15ca,
-  0x5d1f, 0x2fa1,
-  0x5d24, 0x15c9,
-  0x5d25, 0x2fa6,
-  0x5d26, 0x15c7,
-  0x5d27, 0x15c6,
-  0x5d28, 0x2fa7,
-  0x5d29, 0x0429,
-  0x5d2a, 0x2fa8,
-  0x5d2c, 0x238b,
-  0x5d2d, 0x1159,
-  0x5d2e, 0x15c8,
-  0x5d2f, 0x2faa,
-  0x5d34, 0x15cf,
-  0x5d35, 0x2faf,
-  0x5d3d, 0x15d0,
-  0x5d3e, 0x15ce,
-  0x5d3f, 0x2fb7,
-  0x5d47, 0x1b22,
-  0x5d48, 0x2fbf,
-  0x5d4a, 0x15d7,
-  0x5d4b, 0x15d6,
-  0x5d4c, 0x0c33,
-  0x5d4d, 0x2fc1,
-  0x5d50, 0x238a,
-  0x5d51, 0x2fc4,
-  0x5d58, 0x15cd,
-  0x5d59, 0x2fcb,
-  0x5d5b, 0x15d2,
-  0x5d5c, 0x2fcd,
-  0x5d5d, 0x15d4,
-  0x5d5e, 0x2fce,
-  0x5d69, 0x15d8,
-  0x5d6a, 0x2fd9,
-  0x5d6b, 0x15d5,
-  0x5d6c, 0x15d1,
-  0x5d6d, 0x2fda,
-  0x5d6f, 0x15d3,
-  0x5d70, 0x2fdc,
-  0x5d74, 0x15d9,
-  0x5d75, 0x2fe0,
-  0x5d81, 0x2391,
-  0x5d82, 0x15da,
-  0x5d83, 0x2fec,
-  0x5d84, 0x2271,
-  0x5d85, 0x2fed,
-  0x5d87, 0x2388,
-  0x5d88, 0x2fef,
-  0x5d97, 0x238e,
-  0x5d98, 0x2ffe,
-  0x5d99, 0x15db,
-  0x5d9a, 0x2fff,
-  0x5d9d, 0x15dc,
-  0x5d9e, 0x3002,
-  0x5da0, 0x238d,
-  0x5da1, 0x3004,
-  0x5da7, 0x238c,
-  0x5da8, 0x300a,
-  0x5db7, 0x15de,
-  0x5db8, 0x2390,
-  0x5db9, 0x3019,
-  0x5dba, 0x2033,
-  0x5dbb, 0x301a,
-  0x5dbc, 0x223c,
-  0x5dbd, 0x301b,
-  0x5dc5, 0x15df,
-  0x5dc6, 0x3023,
-  0x5dcb, 0x1fe9,
-  0x5dcc, 0x3028,
-  0x5dcd, 0x0eb0,
-  0x5dce, 0x3029,
-  0x5dd2, 0x2055,
-  0x5dd3, 0x302d,
-  0x5dd4, 0x2392,
-  0x5dd5, 0x302e,
-  0x5ddb, 0x1815,
-  0x5ddc, 0x3034,
-  0x5ddd, 0x052b,
-  0x5dde, 0x11dc,
-  0x5ddf, 0x3035,
-  0x5de1, 0x0fdb,
-  0x5de2, 0x04d7,
-  0x5de3, 0x3037,
-  0x5de5, 0x06fd,
-  0x5de6, 0x1250,
-  0x5de7, 0x0c46,
-  0x5de8, 0x090d,
-  0x5de9, 0x0707,
-  0x5dea, 0x3039,
-  0x5deb, 0x0ee6,
-  0x5dec, 0x303a,
-  0x5dee, 0x04b5,
-  0x5def, 0x139f,
-  0x5df0, 0x2324,
-  0x5df1, 0x082d,
-  0x5df2, 0x1058,
-  0x5df3, 0x0dbd,
-  0x5df4, 0x03d8,
-  0x5df5, 0x303c,
-  0x5df7, 0x0f5c,
-  0x5df8, 0x303e,
-  0x5dfd, 0x12f7,
-  0x5dfe, 0x08be,
-  0x5dff, 0x3043,
-  0x5e00, 0x3044,
-  0x5e01, 0x043b,
-  0x5e02, 0x0d67,
-  0x5e03, 0x0483,
-  0x5e04, 0x3045,
-  0x5e05, 0x0d9c,
-  0x5e06, 0x0648,
-  0x5e07, 0x3046,
-  0x5e08, 0x0d3d,
-  0x5e09, 0x3047,
-  0x5e0c, 0x0f10,
-  0x5e0d, 0x304a,
-  0x5e0f, 0x159e,
-  0x5e10, 0x116b,
-  0x5e11, 0x15a1,
-  0x5e12, 0x304c,
-  0x5e14, 0x15a0,
-  0x5e15, 0x0b82,
-  0x5e16, 0x0e4e,
-  0x5e17, 0x304e,
-  0x5e18, 0x09fa,
-  0x5e19, 0x159f,
-  0x5e1a, 0x11e2,
-  0x5e1b, 0x0476,
-  0x5e1c, 0x11c3,
-  0x5e1d, 0x05bc,
-  0x5e1e, 0x304f,
-  0x5e25, 0x2143,
-  0x5e26, 0x057b,
-  0x5e27, 0x11a0,
-  0x5e28, 0x3056,
-  0x5e2b, 0x2129,
-  0x5e2c, 0x3059,
-  0x5e2d, 0x0f1c,
-  0x5e2e, 0x03fa,
-  0x5e2f, 0x305a,
-  0x5e31, 0x15a2,
-  0x5e32, 0x305c,
-  0x5e33, 0x2277,
-  0x5e34, 0x305d,
-  0x5e36, 0x1ea7,
-  0x5e37, 0x15a5,
-  0x5e38, 0x04c8,
-  0x5e39, 0x305f,
-  0x5e3b, 0x15a3,
-  0x5e3d, 0x0ab6,
-  0x5e3e, 0x3061,
-  0x5e40, 0x2285,
-  0x5e41, 0x3063,
-  0x5e42, 0x0ae2,
-  0x5e43, 0x2384,
-  0x5e44, 0x15a6,
-  0x5e45, 0x0696,
-  0x5e46, 0x3064,
-  0x5e4c, 0x07e4,
-  0x5e4d, 0x306a,
-  0x5e54, 0x15a7,
-  0x5e55, 0x0b1e,
-  0x5e56, 0x3071,
-  0x5e57, 0x2387,
-  0x5e58, 0x2386,
-  0x5e59, 0x3072,
-  0x5e5b, 0x15a8,
-  0x5e5c, 0x3074,
-  0x5e5e, 0x15a9,
-  0x5e5f, 0x2290,
-  0x5e60, 0x3076,
-  0x5e61, 0x15aa,
-  0x5e62, 0x0534,
-  0x5e63, 0x1e44,
-  0x5e64, 0x3077,
-  0x5e6b, 0x1e32,
-  0x5e6c, 0x2385,
-  0x5e6d, 0x307e,
-  0x5e72, 0x06c4,
-  0x5e73, 0x0bdc,
-  0x5e74, 0x0b4d,
-  0x5e75, 0x3083,
-  0x5e76, 0x0469,
-  0x5e77, 0x3084,
-  0x5e78, 0x0f9d,
-  0x5e79, 0x1f13,
-  0x5e7a, 0x1813,
-  0x5e7b, 0x07d8,
-  0x5e7c, 0x10bc,
-  0x5e7d, 0x10a9,
-  0x5e7e, 0x1f73,
-  0x5e7f, 0x073c,
-  0x5e80, 0x1631,
-  0x5e81, 0x3085,
-  0x5e84, 0x120c,
-  0x5e85, 0x3088,
-  0x5e86, 0x0c69,
-  0x5e87, 0x043c,
-  0x5e88, 0x3089,
-  0x5e8a, 0x0535,
-  0x5e8b, 0x1633,
-  0x5e8c, 0x308b,
-  0x5e8f, 0x0fbd,
-  0x5e90, 0x0a55,
-  0x5e91, 0x1632,
-  0x5e92, 0x308e,
-  0x5e93, 0x096f,
-  0x5e94, 0x108b,
-  0x5e95, 0x05b8,
-  0x5e96, 0x1634,
-  0x5e97, 0x05cb,
-  0x5e98, 0x308f,
-  0x5e99, 0x0af2,
-  0x5e9a, 0x06f8,
-  0x5e9b, 0x3090,
-  0x5e9c, 0x06a9,
-  0x5e9d, 0x3091,
-  0x5e9e, 0x0b94,
-  0x5e9f, 0x066c,
-  0x5ea0, 0x1636,
-  0x5ea1, 0x3092,
-  0x5ea5, 0x1635,
-  0x5ea6, 0x0607,
-  0x5ea7, 0x1256,
-  0x5ea8, 0x3096,
-  0x5eab, 0x1fe0,
-  0x5eac, 0x3099,
-  0x5ead, 0x0e56,
-  0x5eae, 0x309a,
-  0x5eb3, 0x163a,
-  0x5eb4, 0x309f,
-  0x5eb5, 0x1638,
-  0x5eb6, 0x0d93,
-  0x5eb7, 0x0942,
-  0x5eb8, 0x109e,
-  0x5eb9, 0x1637,
-  0x5eba, 0x30a0,
-  0x5ebe, 0x1639,
-  0x5ebf, 0x30a4,
-  0x5ec9, 0x09f7,
-  0x5eca, 0x09b3,
-  0x5ecb, 0x30ae,
-  0x5ed1, 0x163d,
-  0x5ed2, 0x163c,
-  0x5ed3, 0x0995,
-  0x5ed4, 0x30b4,
-  0x5ed6, 0x0a17,
-  0x5ed7, 0x30b6,
-  0x5edb, 0x163e,
-  0x5edc, 0x30ba,
-  0x5edf, 0x2087,
-  0x5ee0, 0x1e78,
-  0x5ee1, 0x23ae,
-  0x5ee2, 0x1ef6,
-  0x5ee3, 0x1f31,
-  0x5ee4, 0x30bd,
-  0x5ee8, 0x163f,
-  0x5ee9, 0x30c1,
-  0x5eea, 0x1640,
-  0x5eeb, 0x30c2,
-  0x5eec, 0x2045,
-  0x5eed, 0x30c3,
-  0x5ef3, 0x2178,
-  0x5ef4, 0x1398,
-  0x5ef5, 0x30c9,
-  0x5ef6, 0x0ffc,
-  0x5ef7, 0x0e53,
-  0x5ef8, 0x30ca,
-  0x5efa, 0x0879,
-  0x5efb, 0x30cc,
-  0x5efe, 0x14ad,
-  0x5eff, 0x125b,
-  0x5f00, 0x0937,
-  0x5f01, 0x139d,
-  0x5f02, 0x1073,
-  0x5f03, 0x0c19,
-  0x5f04, 0x0b6b,
-  0x5f05, 0x30cf,
-  0x5f08, 0x14ae,
-  0x5f09, 0x30d2,
-  0x5f0a, 0x0440,
-  0x5f0b, 0x14f6,
-  0x5f0c, 0x30d3,
-  0x5f0f, 0x0d54,
-  0x5f10, 0x30d6,
-  0x5f11, 0x14f9,
-  0x5f12, 0x30d7,
-  0x5f13, 0x0706,
-  0x5f14, 0x30d8,
-  0x5f15, 0x1084,
-  0x5f16, 0x30d9,
-  0x5f17, 0x06a0,
-  0x5f18, 0x07a2,
-  0x5f19, 0x30da,
-  0x5f1b, 0x04ff,
-  0x5f1c, 0x30dc,
-  0x5f1f, 0x05bd,
-  0x5f20, 0x1166,
-  0x5f21, 0x30df,
-  0x5f25, 0x0adb,
-  0x5f26, 0x0f3f,
-  0x5f27, 0x07b6,
-  0x5f28, 0x30e3,
-  0x5f29, 0x176f,
-  0x5f2a, 0x176e,
-  0x5f2b, 0x30e4,
-  0x5f2d, 0x1770,
-  0x5f2e, 0x30e6,
-  0x5f2f, 0x0e95,
-  0x5f30, 0x30e7,
-  0x5f31, 0x0cd0,
-  0x5f32, 0x30e8,
-  0x5f33, 0x23f5,
-  0x5f34, 0x30e9,
-  0x5f35, 0x2275,
-  0x5f36, 0x30ea,
-  0x5f39, 0x0590,
-  0x5f3a, 0x0c3c,
-  0x5f3b, 0x30ed,
-  0x5f3c, 0x1772,
-  0x5f3d, 0x30ee,
-  0x5f40, 0x19be,
-  0x5f41, 0x30f1,
-  0x5f46, 0x266e,
-  0x5f47, 0x30f6,
-  0x5f48, 0x1eb0,
-  0x5f49, 0x30f7,
-  0x5f4c, 0x2083,
-  0x5f4d, 0x30fa,
-  0x5f4e, 0x2188,
-  0x5f4f, 0x30fb,
-  0x5f50, 0x1762,
-  0x5f51, 0x30fc,
-  0x5f52, 0x0742,
-  0x5f53, 0x0592,
-  0x5f54, 0x30fd,
-  0x5f55, 0x0a63,
-  0x5f56, 0x1764,
-  0x5f57, 0x1763,
-  0x5f58, 0x1765,
-  0x5f59, 0x267c,
-  0x5f5a, 0x30fe,
-  0x5f5d, 0x1054,
-  0x5f5e, 0x3101,
-  0x5f61, 0x15ee,
-  0x5f62, 0x0f99,
-  0x5f63, 0x3104,
-  0x5f64, 0x0e5f,
-  0x5f65, 0x3105,
-  0x5f66, 0x100e,
-  0x5f67, 0x3106,
-  0x5f69, 0x0491,
-  0x5f6a, 0x0454,
-  0x5f6b, 0x3108,
-  0x5f6c, 0x045b,
-  0x5f6d, 0x0bae,
-  0x5f6e, 0x3109,
-  0x5f70, 0x1164,
-  0x5f71, 0x1095,
-  0x5f72, 0x310b,
-  0x5f73, 0x15e0,
-  0x5f74, 0x310c,
-  0x5f77, 0x15e1,
-  0x5f78, 0x310f,
-  0x5f79, 0x1062,
-  0x5f7a, 0x3110,
-  0x5f7b, 0x04de,
-  0x5f7c, 0x0434,
-  0x5f7d, 0x3111,
-  0x5f80, 0x0eaa,
-  0x5f81, 0x1198,
-  0x5f82, 0x15e2,
-  0x5f83, 0x3114,
-  0x5f84, 0x08e5,
-  0x5f85, 0x0580,
-  0x5f86, 0x3115,
-  0x5f87, 0x15e3,
-  0x5f88, 0x0793,
-  0x5f89, 0x15e4,
-  0x5f8a, 0x07c7,
-  0x5f8b, 0x0a70,
-  0x5f8c, 0x15e5,
-  0x5f8d, 0x3116,
-  0x5f90, 0x0fb7,
-  0x5f91, 0x1fc5,
-  0x5f92, 0x0e6e,
-  0x5f93, 0x3119,
-  0x5f95, 0x15e6,
-  0x5f96, 0x311b,
-  0x5f97, 0x05a4,
-  0x5f98, 0x0b88,
-  0x5f99, 0x15e7,
-  0x5f9a, 0x311c,
-  0x5f9c, 0x15e8,
-  0x5f9d, 0x311e,
-  0x5f9e, 0x1ea1,
-  0x5f9f, 0x311f,
-  0x5fa0, 0x2393,
-  0x5fa1, 0x10de,
-  0x5fa2, 0x3120,
-  0x5fa8, 0x15e9,
-  0x5fa9, 0x1f0b,
-  0x5faa, 0x0fd6,
-  0x5fab, 0x3126,
-  0x5fad, 0x15ea,
-  0x5fae, 0x0eb1,
-  0x5faf, 0x3128,
-  0x5fb5, 0x15eb,
-  0x5fb6, 0x312e,
-  0x5fb7, 0x05a3,
-  0x5fb8, 0x312f,
-  0x5fb9, 0x1e7c,
-  0x5fba, 0x3130,
-  0x5fbc, 0x15ec,
-  0x5fbd, 0x07ea,
-  0x5fbe, 0x3132,
-  0x5fc3, 0x0f8f,
-  0x5fc4, 0x1642,
-  0x5fc5, 0x0441,
-  0x5fc6, 0x106b,
-  0x5fc7, 0x3137,
-  0x5fc9, 0x1643,
-  0x5fca, 0x3139,
-  0x5fcc, 0x083c,
-  0x5fcd, 0x0ca7,
-  0x5fce, 0x313b,
-  0x5fcf, 0x1645,
-  0x5fd0, 0x1a0c,
-  0x5fd1, 0x1a0b,
-  0x5fd2, 0x14f7,
-  0x5fd3, 0x313c,
-  0x5fd6, 0x1644,
-  0x5fd7, 0x11bd,
-  0x5fd8, 0x0ead,
-  0x5fd9, 0x0aab,
-  0x5fda, 0x313f,
-  0x5fdd, 0x1683,
-  0x5fde, 0x3142,
-  0x5fe0, 0x11d1,
-  0x5fe1, 0x1649,
-  0x5fe2, 0x3144,
-  0x5fe4, 0x164a,
-  0x5fe5, 0x3146,
-  0x5fe7, 0x10ac,
-  0x5fe8, 0x3148,
-  0x5fea, 0x164e,
-  0x5feb, 0x0979,
-  0x5fec, 0x314a,
-  0x5fed, 0x164f,
-  0x5fee, 0x1647,
-  0x5fef, 0x314b,
-  0x5ff1, 0x04e5,
-  0x5ff2, 0x314d,
-  0x5ff5, 0x0b51,
-  0x5ff6, 0x3150,
-  0x5ff8, 0x1650,
-  0x5ff9, 0x3152,
-  0x5ffb, 0x0f8e,
-  0x5ffc, 0x3154,
-  0x5ffd, 0x07ad,
-  0x5ffe, 0x164b,
-  0x5fff, 0x067b,
-  0x6000, 0x07c8,
-  0x6001, 0x0dff,
-  0x6002, 0x0dc0,
-  0x6003, 0x1646,
-  0x6004, 0x1648,
-  0x6005, 0x164c,
-  0x6007, 0x3155,
-  0x600a, 0x1659,
-  0x600b, 0x3158,
-  0x600d, 0x1656,
-  0x600e, 0x1138,
-  0x600f, 0x1655,
-  0x6010, 0x315a,
-  0x6012, 0x0b6e,
-  0x6013, 0x315c,
-  0x6014, 0x119b,
-  0x6015, 0x0b83,
-  0x6016, 0x0487,
-  0x6017, 0x315d,
-  0x6019, 0x1651,
-  0x601a, 0x315f,
-  0x601b, 0x1654,
-  0x601c, 0x09f8,
-  0x601d, 0x0db1,
-  0x601e, 0x3160,
-  0x6020, 0x0582,
-  0x6021, 0x165b,
-  0x6022, 0x3162,
-  0x6025, 0x0824,
-  0x6026, 0x1653,
-  0x6027, 0x0f9f,
-  0x6028, 0x10fc,
-  0x6029, 0x1657,
-  0x602a, 0x072f,
-  0x602b, 0x1658,
-  0x602c, 0x3165,
-  0x602f, 0x0c50,
-  0x6030, 0x3168,
-  0x6035, 0x1652,
-  0x6036, 0x316d,
-  0x603b, 0x1239,
-  0x603c, 0x1a0d,
-  0x603d, 0x3172,
-  0x603f, 0x165a,
-  0x6040, 0x3174,
-  0x6041, 0x1a11,
-  0x6042, 0x1660,
-  0x6043, 0x0d68,
-  0x6044, 0x3175,
-  0x604b, 0x09fe,
-  0x604c, 0x317c,
-  0x604d, 0x07e5,
-  0x604e, 0x317d,
-  0x6050, 0x0963,
-  0x6051, 0x317f,
-  0x6052, 0x079a,
-  0x6053, 0x3180,
-  0x6055, 0x0d96,
-  0x6056, 0x3182,
-  0x6059, 0x1a12,
-  0x605a, 0x1a0f,
-  0x605b, 0x3185,
-  0x605d, 0x1a0e,
-  0x605e, 0x3187,
-  0x6062, 0x07eb,
-  0x6063, 0x1a13,
-  0x6064, 0x0fbf,
-  0x6065, 0x318b,
-  0x6067, 0x1a10,
-  0x6068, 0x0795,
-  0x6069, 0x0636,
-  0x606a, 0x1661,
-  0x606b, 0x05f1,
-  0x606c, 0x0e44,
-  0x606d, 0x0700,
-  0x606e, 0x318d,
-  0x606f, 0x0f0f,
-  0x6070, 0x0c1e,
-  0x6071, 0x318e,
-  0x6073, 0x095f,
-  0x6074, 0x3190,
-  0x6076, 0x0630,
-  0x6077, 0x3192,
-  0x6078, 0x165c,
-  0x607a, 0x165f,
-  0x607b, 0x165e,
-  0x607c, 0x0b38,
-  0x607d, 0x1662,
-  0x607e, 0x3193,
-  0x607f, 0x10a6,
-  0x6080, 0x3194,
-  0x6083, 0x1667,
-  0x6084, 0x0c41,
-  0x6085, 0x3197,
-  0x6089, 0x0f11,
-  0x608a, 0x319b,
-  0x608c, 0x1669,
-  0x608d, 0x076e,
-  0x608e, 0x319d,
-  0x6092, 0x1668,
-  0x6093, 0x31a1,
-  0x6094, 0x07ef,
-  0x6095, 0x31a2,
-  0x6096, 0x1663,
-  0x6097, 0x31a3,
-  0x609a, 0x1664,
-  0x609b, 0x166a,
-  0x609c, 0x31a6,
-  0x609d, 0x1666,
-  0x609e, 0x31a7,
-  0x609f, 0x0f01,
-  0x60a0, 0x10ab,
-  0x60a1, 0x31a8,
-  0x60a3, 0x07d1,
-  0x60a4, 0x31aa,
-  0x60a6, 0x1106,
-  0x60a7, 0x31ac,
-  0x60a8, 0x0b5d,
-  0x60a9, 0x31ad,
-  0x60ab, 0x1a14,
-  0x60ac, 0x0fc7,
-  0x60ad, 0x1665,
-  0x60ae, 0x31af,
-  0x60af, 0x0afa,
-  0x60b0, 0x31b0,
-  0x60b1, 0x166d,
-  0x60b2, 0x0418,
-  0x60b3, 0x31b1,
-  0x60b4, 0x1672,
-  0x60b5, 0x23b4,
-  0x60b6, 0x207e,
-  0x60b7, 0x31b2,
-  0x60b8, 0x0835,
-  0x60b9, 0x31b3,
-  0x60bb, 0x166c,
-  0x60bc, 0x05a0,
-  0x60bd, 0x31b5,
-  0x60c5, 0x0c66,
-  0x60c6, 0x1670,
-  0x60c7, 0x31bd,
-  0x60ca, 0x08d9,
-  0x60cb, 0x0ea0,
-  0x60cc, 0x31c0,
-  0x60d1, 0x0808,
-  0x60d2, 0x31c5,
-  0x60d5, 0x0e3b,
-  0x60d6, 0x31c8,
-  0x60d8, 0x166f,
-  0x60d9, 0x31ca,
-  0x60da, 0x1671,
-  0x60db, 0x31cb,
-  0x60dc, 0x0f14,
-  0x60dd, 0x166e,
-  0x60de, 0x31cc,
-  0x60df, 0x0eb8,
-  0x60e0, 0x07f2,
-  0x60e1, 0x1ee3,
-  0x60e2, 0x31cd,
-  0x60e6, 0x05cc,
-  0x60e7, 0x0914,
-  0x60e8, 0x0499,
-  0x60e9, 0x04f2,
-  0x60ea, 0x31d1,
-  0x60eb, 0x0422,
-  0x60ec, 0x166b,
-  0x60ed, 0x0498,
-  0x60ee, 0x058d,
-  0x60ef, 0x0738,
-  0x60f0, 0x0627,
-  0x60f1, 0x2095,
-  0x60f2, 0x23bb,
-  0x60f3, 0x0f58,
-  0x60f4, 0x1677,
-  0x60f5, 0x31d2,
-  0x60f6, 0x07e1,
-  0x60f7, 0x31d3,
-  0x60f9, 0x0ca2,
-  0x60fa, 0x0f95,
-  0x60fb, 0x23b9,
-  0x60fc, 0x31d5,
-  0x6100, 0x1678,
-  0x6101, 0x0513,
-  0x6102, 0x31d9,
-  0x6106, 0x1a15,
-  0x6107, 0x31dd,
-  0x6108, 0x10df,
-  0x6109, 0x10c9,
-  0x610a, 0x31de,
-  0x610d, 0x1a16,
-  0x610e, 0x1679,
-  0x610f, 0x1069,
-  0x6110, 0x31e1,
-  0x6115, 0x1675,
-  0x6116, 0x31e6,
-  0x611a, 0x10c3,
-  0x611b, 0x1e28,
-  0x611c, 0x23bd,
-  0x611d, 0x31ea,
-  0x611f, 0x06cb,
-  0x6120, 0x1673,
-  0x6121, 0x31ec,
-  0x6123, 0x1676,
-  0x6124, 0x067c,
-  0x6125, 0x31ee,
-  0x6126, 0x1674,
-  0x6127, 0x098d,
-  0x6128, 0x31ef,
-  0x612b, 0x167a,
-  0x612c, 0x31f2,
-  0x6134, 0x23b5,
-  0x6135, 0x31fa,
-  0x6137, 0x23ba,
-  0x6138, 0x31fc,
-  0x613e, 0x23b3,
-  0x613f, 0x10fb,
-  0x6140, 0x3202,
-  0x6148, 0x054b,
-  0x6149, 0x320a,
-  0x614a, 0x167b,
-  0x614b, 0x2162,
-  0x614c, 0x07da,
-  0x614d, 0x320b,
-  0x614e, 0x0d30,
-  0x614f, 0x320c,
-  0x6151, 0x0d1e,
-  0x6152, 0x320e,
-  0x6155, 0x0b20,
-  0x6156, 0x3211,
-  0x6158, 0x1e5e,
-  0x6159, 0x3213,
-  0x615a, 0x1e5d,
-  0x615b, 0x3214,
-  0x615d, 0x1a17,
-  0x615e, 0x3216,
-  0x615f, 0x23b7,
-  0x6160, 0x3217,
-  0x6162, 0x0aa4,
-  0x6163, 0x1f2f,
-  0x6164, 0x24df,
-  0x6165, 0x3219,
-  0x6167, 0x07f0,
-  0x6168, 0x093b,
-  0x6169, 0x321b,
-  0x616a, 0x23b2,
-  0x616b, 0x214e,
-  0x616c, 0x321c,
-  0x616e, 0x2052,
-  0x616f, 0x321e,
-  0x6170, 0x0ece,
-  0x6171, 0x321f,
-  0x6173, 0x23bc,
-  0x6174, 0x3221,
-  0x6175, 0x167c,
-  0x6176, 0x20eb,
-  0x6177, 0x0943,
-  0x6178, 0x3222,
-  0x6182, 0x2232,
-  0x6183, 0x322c,
-  0x618a, 0x1e3f,
-  0x618b, 0x0458,
-  0x618c, 0x3233,
-  0x618e, 0x113a,
-  0x618f, 0x3235,
-  0x6190, 0x201b,
-  0x6191, 0x20bc,
-  0x6192, 0x23be,
-  0x6193, 0x3236,
-  0x6194, 0x167e,
-  0x6195, 0x3237,
-  0x619a, 0x1eae,
-  0x619b, 0x323c,
-  0x619d, 0x1a19,
-  0x619e, 0x323e,
-  0x61a4, 0x1efb,
-  0x61a5, 0x3244,
-  0x61a7, 0x167f,
-  0x61a8, 0x0760,
-  0x61a9, 0x1a18,
-  0x61aa, 0x3246,
-  0x61ab, 0x2089,
-  0x61ac, 0x167d,
-  0x61ad, 0x3247,
-  0x61ae, 0x23b1,
-  0x61af, 0x3248,
-  0x61b2, 0x21c4,
-  0x61b3, 0x324b,
-  0x61b6, 0x2214,
-  0x61b7, 0x1680,
-  0x61b8, 0x324e,
-  0x61be, 0x076d,
-  0x61bf, 0x3254,
-  0x61c2, 0x05ed,
-  0x61c3, 0x3257,
-  0x61c7, 0x1fde,
-  0x61c8, 0x0f83,
-  0x61c9, 0x2223,
-  0x61ca, 0x03ce,
-  0x61cb, 0x1a1a,
-  0x61cc, 0x23b6,
-  0x61cd, 0x325b,
-  0x61d1, 0x1a1b,
-  0x61d2, 0x09ac,
-  0x61d3, 0x325f,
-  0x61d4, 0x1681,
-  0x61d5, 0x3260,
-  0x61de, 0x268c,
-  0x61df, 0x24de,
-  0x61e0, 0x3269,
-  0x61e3, 0x24e0,
-  0x61e4, 0x326c,
-  0x61e6, 0x0b74,
-  0x61e7, 0x326e,
-  0x61e8, 0x23b8,
-  0x61e9, 0x326f,
-  0x61f2, 0x1e81,
-  0x61f3, 0x3278,
-  0x61f5, 0x1682,
-  0x61f6, 0x1ffe,
-  0x61f7, 0x1f51,
-  0x61f8, 0x21e1,
-  0x61f9, 0x327a,
-  0x61fa, 0x23b0,
-  0x61fb, 0x327b,
-  0x61fc, 0x1fce,
-  0x61fd, 0x327c,
-  0x61fe, 0x211e,
-  0x61ff, 0x13e0,
-  0x6200, 0x2021,
-  0x6201, 0x327d,
-  0x6206, 0x1a1c,
-  0x6207, 0x24e1,
-  0x6208, 0x06e5,
-  0x6209, 0x3282,
-  0x620a, 0x0efb,
-  0x620b, 0x18f9,
-  0x620c, 0x0fb2,
-  0x620d, 0x0d90,
-  0x620e, 0x0cb1,
-  0x620f, 0x0f24,
-  0x6210, 0x04ee,
-  0x6211, 0x0ee1,
-  0x6212, 0x08b5,
-  0x6213, 0x3283,
-  0x6214, 0x24a3,
-  0x6215, 0x169e,
-  0x6216, 0x0807,
-  0x6217, 0x18fa,
-  0x6218, 0x115e,
-  0x6219, 0x3284,
-  0x621a, 0x0bfc,
-  0x621b, 0x18fb,
-  0x621c, 0x3285,
-  0x621f, 0x18fc,
-  0x6220, 0x3288,
-  0x6221, 0x18fe,
-  0x6222, 0x18fd,
-  0x6223, 0x3289,
-  0x6224, 0x1900,
-  0x6225, 0x18ff,
-  0x6226, 0x328a,
-  0x6227, 0x24a4,
-  0x6228, 0x328b,
-  0x622a, 0x08a9,
-  0x622b, 0x328d,
-  0x622c, 0x1901,
-  0x622d, 0x328e,
-  0x622e, 0x0a65,
-  0x622f, 0x328f,
-  0x6230, 0x2273,
-  0x6231, 0x3290,
-  0x6232, 0x21b0,
-  0x6233, 0x0544,
-  0x6234, 0x057a,
-  0x6235, 0x3291,
-  0x6237, 0x07bc,
-  0x6238, 0x3293,
-  0x623d, 0x19f4,
-  0x623e, 0x19f3,
-  0x623f, 0x065c,
-  0x6240, 0x0dee,
-  0x6241, 0x044b,
-  0x6242, 0x3298,
-  0x6243, 0x19f5,
-  0x6244, 0x3299,
-  0x6247, 0x0d01,
-  0x6248, 0x19f6,
-  0x624a, 0x329c,
-  0x624b, 0x0d6d,
-  0x624c, 0x14ba,
-  0x624d, 0x048c,
-  0x624e, 0x113d,
-  0x624f, 0x329d,
-  0x6251, 0x0bea,
-  0x6252, 0x03d2,
-  0x6253, 0x0575,
-  0x6254, 0x0cae,
-  0x6255, 0x329f,
-  0x6258, 0x0e81,
-  0x6259, 0x32a2,
-  0x625b, 0x0945,
-  0x625c, 0x32a4,
-  0x6263, 0x0968,
-  0x6264, 0x32ab,
-  0x6266, 0x0c21,
-  0x6267, 0x11b3,
-  0x6268, 0x32ad,
-  0x6269, 0x0994,
-  0x626a, 0x14bb,
-  0x626b, 0x0ce1,
-  0x626c, 0x1018,
-  0x626d, 0x0b65,
-  0x626e, 0x03f2,
-  0x626f, 0x04db,
-  0x6270, 0x0ca0,
-  0x6271, 0x32ae,
-  0x6273, 0x03ed,
-  0x6274, 0x32b0,
-  0x6276, 0x0693,
-  0x6277, 0x32b2,
-  0x6279, 0x0bbb,
-  0x627a, 0x32b4,
-  0x627c, 0x0632,
-  0x627d, 0x32b6,
-  0x627e, 0x1173,
-  0x627f, 0x04f5,
-  0x6280, 0x082f,
-  0x6281, 0x32b7,
-  0x6284, 0x04d2,
-  0x6285, 0x32ba,
-  0x6289, 0x0920,
-  0x628a, 0x03dc,
-  0x628b, 0x32be,
-  0x6291, 0x105d,
-  0x6292, 0x0d7a,
-  0x6293, 0x1202,
-  0x6294, 0x32c4,
-  0x6295, 0x0e67,
-  0x6296, 0x05f5,
-  0x6297, 0x0946,
-  0x6298, 0x117c,
-  0x6299, 0x32c5,
-  0x629a, 0x06a2,
-  0x629b, 0x0b98,
-  0x629c, 0x32c6,
-  0x629f, 0x14bc,
-  0x62a0, 0x0966,
-  0x62a1, 0x0a7c,
-  0x62a2, 0x0c3d,
-  0x62a3, 0x32c9,
-  0x62a4, 0x07b9,
-  0x62a5, 0x0411,
-  0x62a6, 0x32ca,
-  0x62a8, 0x0bab,
-  0x62a9, 0x32cc,
-  0x62ab, 0x0bbc,
-  0x62ac, 0x0dfa,
-  0x62ad, 0x32ce,
-  0x62b1, 0x0410,
-  0x62b2, 0x32d2,
-  0x62b5, 0x05b7,
-  0x62b6, 0x32d5,
-  0x62b9, 0x0b0b,
-  0x62ba, 0x32d8,
-  0x62bb, 0x14bd,
-  0x62bc, 0x0fe3,
-  0x62bd, 0x050e,
-  0x62be, 0x32d9,
-  0x62bf, 0x0af7,
-  0x62c0, 0x32da,
-  0x62c2, 0x0694,
-  0x62c3, 0x32dc,
-  0x62c4, 0x11f3,
-  0x62c5, 0x0584,
-  0x62c6, 0x04b7,
-  0x62c7, 0x0b17,
-  0x62c8, 0x0b4c,
-  0x62c9, 0x0998,
-  0x62ca, 0x14be,
-  0x62cb, 0x32dd,
-  0x62cc, 0x03f3,
-  0x62cd, 0x0b85,
-  0x62ce, 0x0a29,
-  0x62cf, 0x32de,
-  0x62d0, 0x072e,
-  0x62d1, 0x32df,
-  0x62d2, 0x090b,
-  0x62d3, 0x0e89,
-  0x62d4, 0x03d9,
-  0x62d5, 0x32e0,
-  0x62d6, 0x0e80,
-  0x62d7, 0x14c0,
-  0x62d8, 0x08ff,
-  0x62d9, 0x121b,
-  0x62da, 0x14bf,
-  0x62db, 0x1171,
-  0x62dc, 0x03e8,
-  0x62dd, 0x32e1,
-  0x62df, 0x0b45,
-  0x62e0, 0x32e3,
-  0x62e2, 0x0a4a,
-  0x62e3, 0x0863,
-  0x62e4, 0x32e5,
-  0x62e5, 0x109a,
-  0x62e6, 0x09a4,
-  0x62e7, 0x0b62,
-  0x62e8, 0x046d,
-  0x62e9, 0x1134,
-  0x62ea, 0x32e6,
-  0x62ec, 0x0993,
-  0x62ed, 0x0d5a,
-  0x62ee, 0x14c1,
-  0x62ef, 0x119d,
-  0x62f0, 0x32e8,
-  0x62f1, 0x0709,
-  0x62f2, 0x32e9,
-  0x62f3, 0x0c88,
-  0x62f4, 0x0d9e,
-  0x62f5, 0x32ea,
-  0x62f6, 0x14c3,
-  0x62f7, 0x094a,
-  0x62f8, 0x32eb,
-  0x62fc, 0x0bd3,
-  0x62fd, 0x1204,
-  0x62fe, 0x0d47,
-  0x62ff, 0x0b26,
-  0x6300, 0x32ef,
-  0x6301, 0x04fb,
-  0x6302, 0x072b,
-  0x6303, 0x32f0,
-  0x6307, 0x11b7,
-  0x6308, 0x194e,
-  0x6309, 0x03bf,
-  0x630a, 0x32f4,
-  0x630e, 0x0973,
-  0x630f, 0x32f8,
-  0x6311, 0x0e47,
-  0x6312, 0x32fa,
-  0x6316, 0x0e8b,
-  0x6317, 0x32fe,
-  0x631a, 0x11be,
-  0x631b, 0x0a75,
-  0x631c, 0x3301,
-  0x631d, 0x0edd,
-  0x631e, 0x0df5,
-  0x631f, 0x0f79,
-  0x6320, 0x0b36,
-  0x6321, 0x0593,
-  0x6322, 0x14c2,
-  0x6323, 0x1196,
-  0x6324, 0x082a,
-  0x6325, 0x07e8,
-  0x6326, 0x3302,
-  0x6328, 0x03af,
-  0x6329, 0x3304,
-  0x632a, 0x0b73,
-  0x632b, 0x056f,
-  0x632c, 0x3305,
-  0x632f, 0x1192,
-  0x6330, 0x3308,
-  0x6332, 0x194f,
-  0x6333, 0x330a,
-  0x6339, 0x14c4,
-  0x633a, 0x0e57,
-  0x633b, 0x3310,
-  0x633d, 0x0e9d,
-  0x633e, 0x21d1,
-  0x633f, 0x3312,
-  0x6342, 0x0ef5,
-  0x6343, 0x14c6,
-  0x6344, 0x3315,
-  0x6345, 0x0e62,
-  0x6346, 0x0991,
-  0x6347, 0x3316,
-  0x6349, 0x121a,
-  0x634a, 0x3318,
-  0x634b, 0x14c5,
-  0x634c, 0x03d1,
-  0x634d, 0x076b,
-  0x634e, 0x0d0c,
-  0x634f, 0x0b56,
-  0x6350, 0x0917,
-  0x6351, 0x3319,
-  0x6355, 0x047d,
-  0x6356, 0x331d,
-  0x635e, 0x09b7,
-  0x635f, 0x0de5,
-  0x6360, 0x3325,
-  0x6361, 0x0864,
-  0x6362, 0x07d0,
-  0x6363, 0x0598,
-  0x6364, 0x3326,
-  0x6367, 0x0bb6,
-  0x6368, 0x211c,
-  0x6369, 0x14d0,
-  0x636a, 0x3329,
-  0x636b, 0x235d,
-  0x636c, 0x332a,
-  0x636d, 0x14cd,
-  0x636e, 0x090c,
-  0x636f, 0x332b,
-  0x6371, 0x14c9,
-  0x6372, 0x2682,
-  0x6373, 0x332d,
-  0x6376, 0x053a,
-  0x6377, 0x08ae,
-  0x6378, 0x3330,
-  0x637a, 0x14ca,
-  0x637b, 0x0b50,
-  0x637c, 0x3332,
-  0x6380, 0x0f33,
-  0x6381, 0x3336,
-  0x6382, 0x05c1,
-  0x6383, 0x210d,
-  0x6384, 0x205a,
-  0x6385, 0x3337,
-  0x6387, 0x061d,
-  0x6388, 0x0d71,
-  0x6389, 0x05d5,
-  0x638a, 0x14cf,
-  0x638b, 0x3339,
-  0x638c, 0x1167,
-  0x638d, 0x333a,
-  0x638e, 0x14cb,
-  0x638f, 0x0e20,
-  0x6390, 0x0c1d,
-  0x6391, 0x333b,
-  0x6392, 0x0b86,
-  0x6393, 0x333c,
-  0x6396, 0x103b,
-  0x6397, 0x333f,
-  0x6398, 0x0921,
-  0x6399, 0x3340,
-  0x63a0, 0x0a7a,
-  0x63a1, 0x3347,
-  0x63a2, 0x0e10,
-  0x63a3, 0x04dd,
-  0x63a4, 0x3348,
-  0x63a5, 0x08a4,
-  0x63a6, 0x3349,
-  0x63a7, 0x0965,
-  0x63a8, 0x0e77,
-  0x63a9, 0x1003,
-  0x63aa, 0x056e,
-  0x63ab, 0x334a,
-  0x63ac, 0x14ce,
-  0x63ad, 0x14c7,
-  0x63ae, 0x14d1,
-  0x63af, 0x334b,
-  0x63b0, 0x1950,
-  0x63b1, 0x334c,
-  0x63b3, 0x0a57,
-  0x63b4, 0x14cc,
-  0x63b5, 0x334e,
-  0x63b7, 0x11bf,
-  0x63b8, 0x0588,
-  0x63b9, 0x3350,
-  0x63ba, 0x04bb,
-  0x63bb, 0x3351,
-  0x63bc, 0x14d2,
-  0x63bd, 0x3352,
-  0x63be, 0x14dc,
-  0x63bf, 0x3353,
-  0x63c0, 0x1f8d,
-  0x63c1, 0x3354,
-  0x63c4, 0x14d7,
-  0x63c5, 0x3357,
-  0x63c6, 0x14db,
-  0x63c7, 0x3358,
-  0x63c9, 0x0cbb,
-  0x63ca, 0x335a,
-  0x63cd, 0x123e,
-  0x63ce, 0x14d9,
-  0x63cf, 0x0aed,
-  0x63d0, 0x0e34,
-  0x63d1, 0x335d,
-  0x63d2, 0x04ac,
-  0x63d3, 0x335e,
-  0x63d6, 0x1045,
-  0x63d7, 0x3361,
-  0x63da, 0x21ff,
-  0x63db, 0x3364,
-  0x63de, 0x14d8,
-  0x63df, 0x3367,
-  0x63e0, 0x14d5,
-  0x63e1, 0x0ee4,
-  0x63e2, 0x3368,
-  0x63e3, 0x052a,
-  0x63e4, 0x3369,
-  0x63e9, 0x0938,
-  0x63ea, 0x08ed,
-  0x63eb, 0x336e,
-  0x63ed, 0x08a3,
-  0x63ee, 0x1f58,
-  0x63ef, 0x3370,
-  0x63f2, 0x14d3,
-  0x63f3, 0x3373,
-  0x63f4, 0x10f1,
-  0x63f5, 0x3374,
-  0x63f6, 0x14c8,
-  0x63f7, 0x3375,
-  0x63f8, 0x14d4,
-  0x63f9, 0x3376,
-  0x63fd, 0x09aa,
-  0x63fe, 0x337a,
-  0x63ff, 0x14d6,
-  0x6400, 0x04ba,
-  0x6401, 0x06e4,
-  0x6402, 0x0a4e,
-  0x6403, 0x337b,
-  0x6405, 0x0892,
-  0x6406, 0x337d,
-  0x640b, 0x14df,
-  0x640c, 0x14e2,
-  0x640d, 0x215b,
-  0x640e, 0x3382,
-  0x640f, 0x0472,
-  0x6410, 0x0527,
-  0x6411, 0x3383,
-  0x6413, 0x056d,
-  0x6414, 0x0cdf,
-  0x6415, 0x3385,
-  0x6417, 0x1eb6,
-  0x6418, 0x3387,
-  0x641b, 0x14e0,
-  0x641c, 0x0dc6,
-  0x641d, 0x338a,
-  0x641e, 0x06de,
-  0x641f, 0x338b,
-  0x6420, 0x14e1,
-  0x6421, 0x14e4,
-  0x6422, 0x338c,
-  0x6426, 0x14e3,
-  0x6427, 0x3390,
-  0x642a, 0x0e15,
-  0x642b, 0x3393,
-  0x642c, 0x03ec,
-  0x642d, 0x0571,
-  0x642e, 0x3394,
-  0x6434, 0x1736,
-  0x6435, 0x339a,
-  0x6436, 0x20db,
-  0x6437, 0x339b,
-  0x643a, 0x0f7a,
-  0x643b, 0x339e,
-  0x643d, 0x04b2,
-  0x643e, 0x33a0,
-  0x643f, 0x1951,
-  0x6440, 0x33a1,
-  0x6441, 0x14de,
-  0x6442, 0x33a2,
-  0x6444, 0x0d1c,
-  0x6445, 0x14dd,
-  0x6446, 0x03e5,
-  0x6447, 0x1028,
-  0x6448, 0x0460,
-  0x6449, 0x33a4,
-  0x644a, 0x0e02,
-  0x644b, 0x33a5,
-  0x6451, 0x2360,
-  0x6452, 0x14da,
-  0x6453, 0x33ab,
-  0x6454, 0x0d99,
-  0x6455, 0x33ac,
-  0x6458, 0x114b,
-  0x6459, 0x33af,
-  0x645c, 0x2361,
-  0x645d, 0x33b2,
-  0x645e, 0x14e5,
-  0x645f, 0x2040,
-  0x6460, 0x33b3,
-  0x6467, 0x0560,
-  0x6468, 0x33ba,
-  0x6469, 0x0b09,
-  0x646a, 0x33bb,
-  0x646d, 0x14e7,
-  0x646e, 0x33be,
-  0x646f, 0x228e,
-  0x6470, 0x33bf,
-  0x6473, 0x1fdf,
-  0x6474, 0x33c2,
-  0x6476, 0x235e,
-  0x6477, 0x33c4,
-  0x6478, 0x0b03,
-  0x647a, 0x14e9,
-  0x647b, 0x1e6a,
-  0x647c, 0x33c5,
-  0x6482, 0x0a15,
-  0x6483, 0x33cb,
-  0x6484, 0x14e6,
-  0x6485, 0x091e,
-  0x6486, 0x33cc,
-  0x6487, 0x0bd1,
-  0x6488, 0x2002,
-  0x6489, 0x33cd,
-  0x6491, 0x04ea,
-  0x6492, 0x0cd1,
-  0x6493, 0x2093,
-  0x6494, 0x33d5,
-  0x6495, 0x0daf,
-  0x6496, 0x14e8,
-  0x6497, 0x33d6,
-  0x6499, 0x14ec,
-  0x649a, 0x33d8,
-  0x649e, 0x120f,
-  0x649f, 0x235f,
-  0x64a0, 0x33dc,
-  0x64a3, 0x1eac,
-  0x64a4, 0x04dc,
-  0x64a5, 0x1e54,
-  0x64a6, 0x33df,
-  0x64a9, 0x0a0c,
-  0x64aa, 0x33e2,
-  0x64ab, 0x1f08,
-  0x64ac, 0x0c48,
-  0x64ad, 0x046c,
-  0x64ae, 0x056c,
-  0x64af, 0x33e3,
-  0x64b0, 0x1208,
-  0x64b1, 0x33e4,
-  0x64b2, 0x20c0,
-  0x64b3, 0x2362,
-  0x64b4, 0x33e5,
-  0x64b5, 0x0b4f,
-  0x64b6, 0x33e6,
-  0x64b7, 0x14ea,
-  0x64b9, 0x33e7,
-  0x64ba, 0x14ed,
-  0x64bb, 0x2160,
-  0x64bc, 0x076a,
-  0x64bd, 0x33e8,
-  0x64be, 0x219d,
-  0x64bf, 0x1f8e,
-  0x64c0, 0x14ee,
-  0x64c1, 0x222d,
-  0x64c2, 0x09c9,
-  0x64c3, 0x33e9,
-  0x64c4, 0x2047,
-  0x64c5, 0x0cfc,
-  0x64c6, 0x33ea,
-  0x64c7, 0x2262,
-  0x64c8, 0x33eb,
-  0x64ca, 0x1f67,
-  0x64cb, 0x1eb2,
-  0x64cc, 0x33ed,
-  0x64cd, 0x04a0,
-  0x64ce, 0x0c63,
-  0x64cf, 0x33ee,
-  0x64d0, 0x14ef,
-  0x64d1, 0x33ef,
-  0x64d2, 0x0c59,
-  0x64d3, 0x33f0,
-  0x64d4, 0x1ea9,
-  0x64d5, 0x33f1,
-  0x64d7, 0x14f0,
-  0x64d8, 0x1952,
-  0x64d9, 0x33f3,
-  0x64da, 0x1fcc,
-  0x64db, 0x33f4,
-  0x64de, 0x0dc8,
-  0x64df, 0x33f7,
-  0x64e0, 0x1f72,
-  0x64e1, 0x33f8,
-  0x64e2, 0x14f2,
-  0x64e3, 0x33f9,
-  0x64e4, 0x14f1,
-  0x64e5, 0x33fa,
-  0x64e6, 0x0488,
-  0x64e7, 0x33fb,
-  0x64ec, 0x2098,
-  0x64ed, 0x3400,
-  0x64ef, 0x1e52,
-  0x64f0, 0x20a4,
-  0x64f1, 0x1f1c,
-  0x64f2, 0x228f,
-  0x64f3, 0x3402,
-  0x64f4, 0x1fed,
-  0x64f5, 0x3403,
-  0x64f7, 0x2365,
-  0x64f8, 0x3405,
-  0x64fa, 0x1e2d,
-  0x64fb, 0x2152,
-  0x64fc, 0x2366,
-  0x64fd, 0x3407,
-  0x64fe, 0x20fa,
-  0x64ff, 0x3408,
-  0x6500, 0x0b8b,
-  0x6501, 0x3409,
-  0x6504, 0x2363,
-  0x6505, 0x340c,
-  0x6506, 0x209a,
-  0x6507, 0x340d,
-  0x6509, 0x14f3,
-  0x650a, 0x340f,
-  0x650f, 0x203c,
-  0x6510, 0x3414,
-  0x6512, 0x111f,
-  0x6513, 0x3416,
-  0x6514, 0x1ff6,
-  0x6515, 0x3417,
-  0x6516, 0x2364,
-  0x6517, 0x3418,
-  0x6518, 0x0c9c,
-  0x6519, 0x1e69,
-  0x651a, 0x3419,
-  0x651b, 0x2367,
-  0x651c, 0x341a,
-  0x651d, 0x211d,
-  0x651e, 0x341b,
-  0x6522, 0x2259,
-  0x6523, 0x2056,
-  0x6524, 0x2163,
-  0x6525, 0x14f4,
-  0x6526, 0x341f,
-  0x652a, 0x1fa9,
-  0x652b, 0x091f,
-  0x652c, 0x1ffc,
-  0x652d, 0x3423,
-  0x652e, 0x14f5,
-  0x652f, 0x11a6,
-  0x6530, 0x3424,
-  0x6534, 0x1909,
-  0x6535, 0x1966,
-  0x6536, 0x0d6c,
-  0x6537, 0x3428,
-  0x6538, 0x12b2,
-  0x6539, 0x06bf,
-  0x653a, 0x3429,
-  0x653b, 0x06fe,
-  0x653c, 0x342a,
-  0x653e, 0x0662,
-  0x653f, 0x119f,
-  0x6540, 0x342c,
-  0x6545, 0x0723,
-  0x6546, 0x3431,
-  0x6548, 0x0f72,
-  0x6549, 0x1ccb,
-  0x654a, 0x3433,
-  0x654c, 0x05b1,
-  0x654d, 0x3435,
-  0x654f, 0x0af9,
-  0x6550, 0x3437,
-  0x6551, 0x08f7,
-  0x6552, 0x3438,
-  0x6555, 0x1967,
-  0x6556, 0x03c8,
-  0x6557, 0x1e2e,
-  0x6558, 0x343b,
-  0x6559, 0x089d,
-  0x655a, 0x343c,
-  0x655b, 0x09fb,
-  0x655c, 0x343d,
-  0x655d, 0x043f,
-  0x655e, 0x04cd,
-  0x655f, 0x343e,
-  0x6562, 0x06cd,
-  0x6563, 0x0cdb,
-  0x6564, 0x3441,
-  0x6566, 0x0617,
-  0x6567, 0x3443,
-  0x656b, 0x1968,
-  0x656c, 0x08e3,
-  0x656d, 0x3447,
-  0x6570, 0x0d94,
-  0x6571, 0x344a,
-  0x6572, 0x0c40,
-  0x6573, 0x344b,
-  0x6574, 0x119c,
-  0x6575, 0x1ebc,
-  0x6576, 0x344c,
-  0x6577, 0x0690,
-  0x6578, 0x2142,
-  0x6579, 0x344d,
-  0x6582, 0x201e,
-  0x6583, 0x1e43,
-  0x6584, 0x3456,
-  0x6587, 0x0ed3,
-  0x6588, 0x3459,
-  0x658b, 0x114c,
-  0x658c, 0x045c,
-  0x658d, 0x345c,
-  0x6590, 0x19c1,
-  0x6591, 0x03ea,
-  0x6592, 0x345f,
-  0x6593, 0x19c3,
-  0x6594, 0x3460,
-  0x6595, 0x24d4,
-  0x6596, 0x3461,
-  0x6597, 0x05f6,
-  0x6598, 0x3462,
-  0x6599, 0x0a18,
-  0x659a, 0x3463,
-  0x659b, 0x1d56,
-  0x659c, 0x0f7c,
-  0x659d, 0x3464,
-  0x659f, 0x1186,
-  0x65a0, 0x3466,
-  0x65a1, 0x0ee2,
-  0x65a2, 0x3467,
-  0x65a4, 0x08c0,
-  0x65a5, 0x0507,
-  0x65a6, 0x3469,
-  0x65a7, 0x06a6,
-  0x65a8, 0x346a,
-  0x65a9, 0x1157,
-  0x65aa, 0x346b,
-  0x65ab, 0x1a29,
-  0x65ac, 0x226f,
-  0x65ad, 0x060e,
-  0x65ae, 0x346c,
-  0x65af, 0x0dae,
-  0x65b0, 0x0f8d,
-  0x65b1, 0x346d,
-  0x65b7, 0x1ed7,
-  0x65b8, 0x3473,
-  0x65b9, 0x065a,
-  0x65ba, 0x3474,
-  0x65bc, 0x19c4,
-  0x65bd, 0x0d40,
-  0x65be, 0x3476,
-  0x65c1, 0x0b95,
-  0x65c2, 0x3479,
-  0x65c3, 0x19c7,
-  0x65c4, 0x19c6,
-  0x65c5, 0x0a6a,
-  0x65c6, 0x19c5,
-  0x65c7, 0x347a,
-  0x65cb, 0x0fc8,
-  0x65cc, 0x19c8,
-  0x65cd, 0x347e,
-  0x65ce, 0x19c9,
-  0x65cf, 0x1242,
-  0x65d0, 0x347f,
-  0x65d2, 0x19ca,
-  0x65d3, 0x3481,
-  0x65d6, 0x19cb,
-  0x65d7, 0x0c0b,
-  0x65d8, 0x3484,
-  0x65e0, 0x0eed,
-  0x65e1, 0x348c,
-  0x65e2, 0x083b,
-  0x65e3, 0x348d,
-  0x65e5, 0x0cb0,
-  0x65e6, 0x058a,
-  0x65e7, 0x08f8,
-  0x65e8, 0x11bb,
-  0x65e9, 0x112a,
-  0x65ea, 0x348f,
-  0x65ec, 0x0fd7,
-  0x65ed, 0x0fbc,
-  0x65ee, 0x190a,
-  0x65f1, 0x076c,
-  0x65f2, 0x3491,
-  0x65f6, 0x0d48,
-  0x65f7, 0x0982,
-  0x65f8, 0x3495,
-  0x65fa, 0x0eab,
-  0x65fb, 0x3497,
-  0x6600, 0x1912,
-  0x6601, 0x349c,
-  0x6602, 0x03c5,
-  0x6603, 0x1910,
-  0x6604, 0x349d,
-  0x6606, 0x0990,
-  0x6607, 0x349f,
-  0x660a, 0x190d,
-  0x660b, 0x34a2,
-  0x660c, 0x04c4,
-  0x660d, 0x34a3,
-  0x660e, 0x0afc,
-  0x660f, 0x07fd,
-  0x6610, 0x34a4,
-  0x6613, 0x105e,
-  0x6614, 0x0f03,
-  0x6615, 0x1911,
-  0x6616, 0x34a7,
-  0x6619, 0x190e,
-  0x661a, 0x34aa,
-  0x661d, 0x1915,
-  0x661e, 0x34ad,
-  0x661f, 0x0f92,
-  0x6620, 0x1098,
-  0x6621, 0x34ae,
-  0x6625, 0x053d,
-  0x6626, 0x34b2,
-  0x6627, 0x0ac6,
-  0x6628, 0x124f,
-  0x6629, 0x34b3,
-  0x662d, 0x1172,
-  0x662e, 0x34b7,
-  0x662f, 0x0d5e,
-  0x6630, 0x34b8,
-  0x6631, 0x1917,
-  0x6632, 0x34b9,
-  0x6634, 0x1916,
-  0x6635, 0x1919,
-  0x6636, 0x1918,
-  0x6637, 0x34bb,
-  0x663c, 0x11e6,
-  0x663d, 0x34c0,
-  0x663e, 0x0f41,
-  0x663f, 0x34c1,
-  0x6641, 0x191d,
-  0x6642, 0x212d,
-  0x6643, 0x07e3,
-  0x6644, 0x34c3,
-  0x664b, 0x08cb,
-  0x664c, 0x0d07,
-  0x664d, 0x34ca,
-  0x664f, 0x191e,
-  0x6650, 0x34cc,
-  0x6652, 0x0cf2,
-  0x6653, 0x0f6b,
-  0x6654, 0x191c,
-  0x6655, 0x1111,
-  0x6656, 0x191f,
-  0x6657, 0x1921,
-  0x6658, 0x34ce,
-  0x665a, 0x0e9e,
-  0x665b, 0x34d0,
-  0x665d, 0x229b,
-  0x665e, 0x34d2,
-  0x665f, 0x191b,
-  0x6660, 0x34d3,
-  0x6661, 0x1920,
-  0x6662, 0x34d4,
-  0x6664, 0x0efd,
-  0x6665, 0x34d6,
-  0x6666, 0x07f3,
-  0x6667, 0x34d7,
-  0x6668, 0x04e4,
-  0x6669, 0x34d8,
-  0x666e, 0x0bf4,
-  0x666f, 0x08df,
-  0x6670, 0x0f09,
-  0x6671, 0x34dd,
-  0x6674, 0x0c64,
-  0x6675, 0x34e0,
-  0x6676, 0x08d6,
-  0x6677, 0x1922,
-  0x6678, 0x34e1,
-  0x667a, 0x11c6,
-  0x667b, 0x34e3,
-  0x667e, 0x0a09,
-  0x667f, 0x34e6,
-  0x6682, 0x1120,
-  0x6683, 0x34e9,
-  0x6684, 0x1923,
-  0x6685, 0x34ea,
-  0x6687, 0x0f2b,
-  0x6688, 0x2256,
-  0x6689, 0x24a8,
-  0x668a, 0x34ec,
-  0x668c, 0x1924,
-  0x668d, 0x34ee,
-  0x6691, 0x0d85,
-  0x6692, 0x34f2,
-  0x6696, 0x0b70,
-  0x6697, 0x03c0,
-  0x6698, 0x34f6,
-  0x669d, 0x1926,
-  0x669e, 0x34fb,
-  0x66a2, 0x1e79,
-  0x66a3, 0x34ff,
-  0x66a7, 0x1925,
-  0x66a8, 0x1cdd,
-  0x66a9, 0x3503,
-  0x66ab, 0x225a,
-  0x66ac, 0x3505,
-  0x66ae, 0x0b1d,
-  0x66af, 0x3507,
-  0x66b4, 0x0412,
-  0x66b5, 0x350c,
-  0x66b9, 0x175b,
-  0x66ba, 0x3510,
-  0x66be, 0x1927,
-  0x66bf, 0x3514,
-  0x66c4, 0x24a7,
-  0x66c5, 0x3519,
-  0x66c6, 0x2686,
-  0x66c7, 0x24a6,
-  0x66c8, 0x351a,
-  0x66c9, 0x21ce,
-  0x66ca, 0x351b,
-  0x66d6, 0x24a9,
-  0x66d7, 0x3527,
-  0x66d9, 0x0d86,
-  0x66da, 0x3529,
-  0x66db, 0x1928,
-  0x66dd, 0x0bf7,
-  0x66de, 0x352a,
-  0x66e0, 0x1fe7,
-  0x66e1, 0x352c,
-  0x66e6, 0x192a,
-  0x66e7, 0x3531,
-  0x66e9, 0x192b,
-  0x66ea, 0x3533,
-  0x66ec, 0x2112,
-  0x66ed, 0x3535,
-  0x66f0, 0x10fe,
-  0x66f1, 0x3538,
-  0x66f2, 0x0c77,
-  0x66f3, 0x103e,
-  0x66f4, 0x06f7,
-  0x66f5, 0x3539,
-  0x66f7, 0x1914,
-  0x66f8, 0x213c,
-  0x66f9, 0x04a3,
-  0x66fa, 0x353b,
-  0x66fc, 0x0aa3,
-  0x66fd, 0x353d,
-  0x66fe, 0x113b,
-  0x66ff, 0x0e39,
-  0x6700, 0x124b,
-  0x6701, 0x353e,
-  0x6703, 0x1f5c,
-  0x6704, 0x3540,
-  0x6708, 0x1105,
-  0x6709, 0x10b5,
-  0x670a, 0x1973,
-  0x670b, 0x0bb4,
-  0x670c, 0x3544,
-  0x670d, 0x069b,
-  0x670e, 0x3545,
-  0x6710, 0x1984,
-  0x6711, 0x3547,
-  0x6714, 0x0dac,
-  0x6715, 0x198e,
-  0x6716, 0x354a,
-  0x6717, 0x09b5,
-  0x6718, 0x354b,
-  0x671b, 0x0eac,
-  0x671c, 0x354e,
-  0x671d, 0x04d4,
-  0x671e, 0x354f,
-  0x671f, 0x0bf9,
-  0x6720, 0x3550,
-  0x6726, 0x19ac,
-  0x6727, 0x24c4,
-  0x6728, 0x0b21,
-  0x6729, 0x3556,
-  0x672a, 0x0ec3,
-  0x672b, 0x0b0c,
-  0x672c, 0x0427,
-  0x672d, 0x1140,
-  0x672e, 0x3557,
-  0x672f, 0x0d8c,
-  0x6730, 0x3558,
-  0x6731, 0x11eb,
-  0x6732, 0x3559,
-  0x6734, 0x0bf2,
-  0x6735, 0x0623,
-  0x6736, 0x355b,
-  0x673a, 0x080f,
-  0x673b, 0x355f,
-  0x673d, 0x0fab,
-  0x673e, 0x3561,
-  0x6740, 0x0cea,
-  0x6741, 0x3563,
-  0x6742, 0x1116,
-  0x6743, 0x0c83,
-  0x6744, 0x3564,
-  0x6746, 0x06c6,
-  0x6747, 0x3566,
-  0x6748, 0x1854,
-  0x6749, 0x0cf5,
-  0x674a, 0x3567,
-  0x674c, 0x1851,
-  0x674d, 0x3569,
-  0x674e, 0x09d9,
-  0x674f, 0x0f9e,
-  0x6750, 0x048b,
-  0x6751, 0x0568,
-  0x6752, 0x356a,
-  0x6753, 0x1852,
-  0x6754, 0x356b,
-  0x6756, 0x1169,
-  0x6757, 0x356d,
-  0x675c, 0x0604,
-  0x675d, 0x3572,
-  0x675e, 0x1853,
-  0x675f, 0x0d8f,
-  0x6760, 0x06d7,
-  0x6761, 0x0e48,
-  0x6762, 0x3573,
-  0x6765, 0x099f,
-  0x6766, 0x3576,
-  0x6768, 0x1017,
-  0x6769, 0x1855,
-  0x676a, 0x1858,
-  0x676b, 0x3578,
-  0x676d, 0x0773,
-  0x676e, 0x357a,
-  0x676f, 0x0416,
-  0x6770, 0x08ad,
-  0x6771, 0x1ecc,
-  0x6772, 0x190f,
-  0x6773, 0x1859,
-  0x6774, 0x357b,
-  0x6775, 0x185c,
-  0x6776, 0x357c,
-  0x6777, 0x1861,
-  0x6778, 0x357d,
-  0x677c, 0x1862,
-  0x677d, 0x3581,
-  0x677e, 0x0dbe,
-  0x677f, 0x03f0,
-  0x6780, 0x3582,
-  0x6781, 0x081e,
-  0x6782, 0x3583,
-  0x6784, 0x0712,
-  0x6785, 0x3585,
-  0x6787, 0x1857,
-  0x6788, 0x3587,
-  0x6789, 0x0ea8,
-  0x678a, 0x3588,
-  0x678b, 0x1860,
-  0x678c, 0x3589,
-  0x6790, 0x0f05,
-  0x6791, 0x358d,
-  0x6795, 0x118e,
-  0x6796, 0x3591,
-  0x6797, 0x0a1f,
-  0x6798, 0x185a,
-  0x6799, 0x3592,
-  0x679a, 0x0abb,
-  0x679b, 0x3593,
-  0x679c, 0x0754,
-  0x679d, 0x11a5,
-  0x679e, 0x185e,
-  0x679f, 0x3594,
-  0x67a2, 0x0d77,
-  0x67a3, 0x1129,
-  0x67a4, 0x3597,
-  0x67a5, 0x1856,
-  0x67a6, 0x3598,
-  0x67a7, 0x185b,
-  0x67a8, 0x185d,
-  0x67a9, 0x3599,
-  0x67aa, 0x0c36,
-  0x67ab, 0x0680,
-  0x67ac, 0x359a,
-  0x67ad, 0x185f,
-  0x67ae, 0x359b,
-  0x67af, 0x096a,
-  0x67b0, 0x1868,
-  0x67b1, 0x359c,
-  0x67b3, 0x186d,
-  0x67b4, 0x359e,
-  0x67b5, 0x186b,
-  0x67b6, 0x084f,
-  0x67b7, 0x0842,
-  0x67b8, 0x1871,
-  0x67b9, 0x359f,
-  0x67c1, 0x1874,
-  0x67c2, 0x35a7,
-  0x67c3, 0x1870,
-  0x67c4, 0x0463,
-  0x67c5, 0x35a8,
-  0x67cf, 0x03e3,
-  0x67d0, 0x0b16,
-  0x67d1, 0x06c7,
-  0x67d2, 0x0c01,
-  0x67d3, 0x0c99,
-  0x67d4, 0x0cbc,
-  0x67d5, 0x35b2,
-  0x67d8, 0x1865,
-  0x67d9, 0x186a,
-  0x67da, 0x186c,
-  0x67db, 0x35b5,
-  0x67dc, 0x074a,
-  0x67dd, 0x186e,
-  0x67de, 0x1252,
-  0x67df, 0x35b6,
-  0x67e0, 0x0b5e,
-  0x67e1, 0x35b7,
-  0x67e2, 0x1872,
-  0x67e3, 0x35b8,
-  0x67e5, 0x04b0,
-  0x67e6, 0x35ba,
-  0x67e9, 0x1867,
-  0x67ea, 0x35bd,
-  0x67ec, 0x0860,
-  0x67ed, 0x35bf,
-  0x67ef, 0x094f,
-  0x67f0, 0x1863,
-  0x67f1, 0x11f8,
-  0x67f2, 0x35c1,
-  0x67f3, 0x0a41,
-  0x67f4, 0x04b8,
-  0x67f5, 0x35c2,
-  0x67fd, 0x1875,
-  0x67fe, 0x35ca,
-  0x67ff, 0x0d58,
-  0x6800, 0x186f,
-  0x6801, 0x35cb,
-  0x6805, 0x1145,
-  0x6806, 0x35cf,
-  0x6807, 0x0453,
-  0x6808, 0x115c,
-  0x6809, 0x1864,
-  0x680a, 0x1866,
-  0x680b, 0x05ef,
-  0x680c, 0x1869,
-  0x680d, 0x35d0,
-  0x680e, 0x1873,
-  0x680f, 0x09a3,
-  0x6810, 0x35d1,
-  0x6811, 0x0d8e,
-  0x6812, 0x35d2,
-  0x6813, 0x0d9d,
-  0x6814, 0x35d3,
-  0x6816, 0x0bfb,
-  0x6817, 0x09e0,
-  0x6818, 0x35d5,
-  0x681d, 0x187f,
-  0x681e, 0x35da,
-  0x6821, 0x0f6e,
-  0x6822, 0x35dd,
-  0x6829, 0x1888,
-  0x682a, 0x11e9,
-  0x682b, 0x35e4,
-  0x6832, 0x1876,
-  0x6834, 0x35eb,
-  0x6837, 0x1022,
-  0x6838, 0x0782,
-  0x6839, 0x06f4,
-  0x683a, 0x35ee,
-  0x683c, 0x06ec,
-  0x683d, 0x1117,
-  0x683e, 0x1885,
-  0x683f, 0x35f0,
-  0x6840, 0x1884,
-  0x6841, 0x1882,
-  0x6842, 0x0749,
-  0x6843, 0x0e25,
-  0x6844, 0x187c,
-  0x6845, 0x0eb5,
-  0x6846, 0x097f,
-  0x6847, 0x35f1,
-  0x6848, 0x03c3,
-  0x6849, 0x1887,
-  0x684a, 0x1886,
-  0x684b, 0x35f2,
-  0x684c, 0x121d,
-  0x684d, 0x35f3,
-  0x684e, 0x187a,
-  0x684f, 0x35f4,
-  0x6850, 0x0e5a,
-  0x6851, 0x0cdc,
-  0x6852, 0x35f5,
-  0x6853, 0x07cd,
-  0x6854, 0x08ac,
-  0x6855, 0x1880,
-  0x6856, 0x35f6,
-  0x6860, 0x1878,
-  0x6862, 0x187b,
-  0x6863, 0x0596,
-  0x6864, 0x187d,
-  0x6865, 0x0c42,
-  0x6866, 0x1881,
-  0x6867, 0x1883,
-  0x6868, 0x0881,
-  0x6869, 0x120b,
-  0x686a, 0x3600,
-  0x686b, 0x188e,
-  0x686c, 0x3601,
-  0x6874, 0x188b,
-  0x6875, 0x3609,
-  0x6876, 0x0e61,
-  0x6877, 0x188c,
-  0x6878, 0x360a,
-  0x6881, 0x0a03,
-  0x6882, 0x3613,
-  0x6883, 0x187e,
-  0x6884, 0x3614,
-  0x6885, 0x0abc,
-  0x6886, 0x03fb,
-  0x6887, 0x3615,
-  0x688f, 0x188a,
-  0x6890, 0x361d,
-  0x6893, 0x188d,
-  0x6894, 0x3620,
-  0x6897, 0x06fc,
-  0x6898, 0x246a,
-  0x6899, 0x3623,
-  0x689d, 0x2175,
-  0x689e, 0x3627,
-  0x689f, 0x246d,
-  0x68a0, 0x3628,
-  0x68a2, 0x0d0b,
-  0x68a3, 0x362a,
-  0x68a6, 0x0ad3,
-  0x68a7, 0x0eef,
-  0x68a8, 0x09d1,
-  0x68a9, 0x362d,
-  0x68ad, 0x0de8,
-  0x68ae, 0x3631,
-  0x68af, 0x0e30,
-  0x68b0, 0x0f80,
-  0x68b1, 0x3632,
-  0x68b3, 0x0d78,
-  0x68b4, 0x3634,
-  0x68b5, 0x1889,
-  0x68b6, 0x3635,
-  0x68c0, 0x085f,
-  0x68c1, 0x363f,
-  0x68c2, 0x188f,
-  0x68c3, 0x3640,
-  0x68c9, 0x0ae3,
-  0x68ca, 0x3646,
-  0x68cb, 0x0c04,
-  0x68cc, 0x3647,
-  0x68cd, 0x0750,
-  0x68ce, 0x3648,
-  0x68d2, 0x03ff,
-  0x68d3, 0x364c,
-  0x68d5, 0x1235,
-  0x68d6, 0x246b,
-  0x68d7, 0x225f,
-  0x68d8, 0x081f,
-  0x68d9, 0x364e,
-  0x68da, 0x0bb0,
-  0x68db, 0x364f,
-  0x68df, 0x1ece,
-  0x68e0, 0x0e17,
-  0x68e1, 0x3653,
-  0x68e3, 0x189a,
-  0x68e4, 0x3655,
-  0x68e7, 0x2272,
-  0x68e8, 0x3658,
-  0x68ee, 0x0ce6,
-  0x68ef, 0x365e,
-  0x68f0, 0x1896,
-  0x68f1, 0x09cd,
-  0x68f2, 0x365f,
-  0x68f5, 0x0950,
-  0x68f6, 0x3662,
-  0x68f9, 0x1894,
-  0x68fa, 0x0730,
-  0x68fb, 0x3665,
-  0x68fc, 0x1891,
-  0x68fd, 0x3666,
-  0x6900, 0x3669,
-  0x6901, 0x1898,
-  0x6902, 0x366a,
-  0x6905, 0x1055,
-  0x6906, 0x366d,
-  0x690b, 0x1897,
-  0x690c, 0x3672,
-  0x690d, 0x11b1,
-  0x690e, 0x1212,
-  0x690f, 0x2473,
-  0x6910, 0x189b,
-  0x6911, 0x3673,
-  0x6912, 0x0888,
-  0x6913, 0x3674,
-  0x691f, 0x1892,
-  0x6921, 0x3680,
-  0x6924, 0x1895,
-  0x6925, 0x3683,
-  0x692d, 0x0e87,
-  0x692e, 0x368b,
-  0x6930, 0x1033,
-  0x6931, 0x368d,
-  0x6934, 0x18a6,
-  0x6935, 0x3690,
-  0x6939, 0x189d,
-  0x693a, 0x3694,
-  0x693d, 0x052d,
-  0x693e, 0x3697,
-  0x693f, 0x053e,
-  0x6940, 0x3698,
-  0x6942, 0x189f,
-  0x6943, 0x369a,
-  0x694a, 0x21fe,
-  0x694b, 0x36a1,
-  0x6953, 0x1efe,
-  0x6954, 0x0f73,
-  0x6955, 0x36a9,
-  0x6957, 0x1899,
-  0x6958, 0x36ab,
-  0x695a, 0x0523,
-  0x695b, 0x36ad,
-  0x695d, 0x18a0,
-  0x695e, 0x09ce,
-  0x695f, 0x36af,
-  0x6960, 0x189e,
-  0x6961, 0x36b0,
-  0x6963, 0x18ad,
-  0x6964, 0x36b2,
-  0x6966, 0x18ac,
-  0x6967, 0x36b4,
-  0x6968, 0x2475,
-  0x6969, 0x36b5,
-  0x696b, 0x18a2,
-  0x696c, 0x36b7,
-  0x696d, 0x220a,
-  0x696e, 0x1890,
-  0x696f, 0x36b8,
-  0x6971, 0x189c,
-  0x6972, 0x36ba,
-  0x6975, 0x1f6f,
-  0x6976, 0x36bd,
-  0x6977, 0x0939,
-  0x6978, 0x18a5,
-  0x6979, 0x18ae,
-  0x697a, 0x36be,
-  0x697c, 0x0a4c,
-  0x697d, 0x36c0,
-  0x6980, 0x18a3,
-  0x6981, 0x36c3,
-  0x6982, 0x06c0,
-  0x6983, 0x36c4,
-  0x6984, 0x18a1,
-  0x6985, 0x36c5,
-  0x6986, 0x10c1,
-  0x6987, 0x18a8,
-  0x6989, 0x18ab,
-  0x698a, 0x36c6,
-  0x698d, 0x18bb,
-  0x698e, 0x36c9,
-  0x6994, 0x09b1,
-  0x6995, 0x18b9,
-  0x6996, 0x36cf,
-  0x6998, 0x18a4,
-  0x6999, 0x36d1,
-  0x699b, 0x18af,
-  0x699c, 0x03fc,
-  0x699d, 0x36d3,
-  0x69a7, 0x18b0,
-  0x69a8, 0x1146,
-  0x69a9, 0x36dd,
-  0x69aa, 0x2468,
-  0x69ab, 0x18b2,
-  0x69ac, 0x36de,
-  0x69ad, 0x18b3,
-  0x69ae, 0x2100,
-  0x69af, 0x36df,
-  0x69b1, 0x18b5,
-  0x69b2, 0x36e1,
-  0x69b4, 0x0a3a,
-  0x69b5, 0x36e3,
-  0x69b7, 0x0c91,
-  0x69b8, 0x36e5,
-  0x69bb, 0x18b1,
-  0x69bc, 0x36e8,
-  0x69bf, 0x2476,
-  0x69c0, 0x36eb,
-  0x69c1, 0x18b6,
-  0x69c2, 0x36ec,
-  0x69ca, 0x18b7,
-  0x69cb, 0x1f27,
-  0x69cc, 0x18a7,
-  0x69cd, 0x20d7,
-  0x69ce, 0x18aa,
-  0x69cf, 0x36f4,
-  0x69d0, 0x07c6,
-  0x69d1, 0x36f5,
-  0x69d4, 0x18b4,
-  0x69d5, 0x36f8,
-  0x69db, 0x086a,
-  0x69dc, 0x36fe,
-  0x69df, 0x18b8,
-  0x69e0, 0x18ba,
-  0x69e1, 0x3701,
-  0x69e7, 0x247c,
-  0x69e8, 0x3707,
-  0x69ed, 0x18be,
-  0x69ee, 0x370c,
-  0x69f2, 0x18c2,
-  0x69f3, 0x1fa1,
-  0x69f4, 0x3710,
-  0x69fd, 0x04a2,
-  0x69fe, 0x3719,
-  0x69ff, 0x18bc,
-  0x6a00, 0x371a,
-  0x6a01, 0x22aa,
-  0x6a02, 0x2005,
-  0x6a03, 0x371b,
-  0x6a05, 0x246c,
-  0x6a06, 0x371d,
-  0x6a0a, 0x064b,
-  0x6a0b, 0x3721,
-  0x6a13, 0x203e,
-  0x6a14, 0x3729,
-  0x6a17, 0x18bf,
-  0x6a19, 0x1e4c,
-  0x6a1a, 0x372c,
-  0x6a1e, 0x213a,
-  0x6a1f, 0x1162,
-  0x6a20, 0x3730,
-  0x6a21, 0x0b06,
-  0x6a22, 0x3731,
-  0x6a23, 0x2204,
-  0x6a24, 0x3732,
-  0x6a28, 0x18cc,
-  0x6a29, 0x3736,
-  0x6a2a, 0x0798,
-  0x6a2b, 0x3737,
-  0x6a2f, 0x18bd,
-  0x6a30, 0x373b,
-  0x6a31, 0x1088,
-  0x6a32, 0x373c,
-  0x6a35, 0x18c8,
-  0x6a36, 0x373f,
-  0x6a38, 0x20c3,
-  0x6a39, 0x2140,
-  0x6a3a, 0x2477,
-  0x6a3b, 0x3741,
-  0x6a3d, 0x18cb,
-  0x6a3e, 0x18c4,
-  0x6a3f, 0x3743,
-  0x6a44, 0x18c3,
-  0x6a45, 0x3748,
-  0x6a47, 0x0c3e,
-  0x6a48, 0x2474,
-  0x6a49, 0x374a,
-  0x6a4b, 0x20dd,
-  0x6a4c, 0x374c,
-  0x6a50, 0x18c6,
-  0x6a51, 0x3750,
-  0x6a58, 0x18cd,
-  0x6a59, 0x04ed,
-  0x6a5a, 0x3757,
-  0x6a5b, 0x18c7,
-  0x6a5c, 0x3758,
-  0x6a5f, 0x1f68,
-  0x6a60, 0x375b,
-  0x6a61, 0x0f5d,
-  0x6a62, 0x2185,
-  0x6a63, 0x375c,
-  0x6a65, 0x18c1,
-  0x6a66, 0x375e,
-  0x6a71, 0x051c,
-  0x6a72, 0x3769,
-  0x6a79, 0x18ca,
-  0x6a7a, 0x3770,
-  0x6a7c, 0x18ce,
-  0x6a7d, 0x3772,
-  0x6a80, 0x0e07,
-  0x6a81, 0x3775,
-  0x6a84, 0x0f1a,
-  0x6a85, 0x3778,
-  0x6a89, 0x2472,
-  0x6a8a, 0x377c,
-  0x6a8e, 0x18c9,
-  0x6a8f, 0x3780,
-  0x6a90, 0x18d0,
-  0x6a91, 0x18cf,
-  0x6a92, 0x3781,
-  0x6a94, 0x1eb5,
-  0x6a95, 0x3783,
-  0x6a97, 0x18d2,
-  0x6a98, 0x3785,
-  0x6a9c, 0x2478,
-  0x6a9d, 0x3789,
-  0x6aa0, 0x18c5,
-  0x6aa1, 0x378c,
-  0x6aa2, 0x1f8b,
-  0x6aa3, 0x2484,
-  0x6aa4, 0x378d,
-  0x6aa9, 0x18d1,
-  0x6aaa, 0x3792,
-  0x6aab, 0x18d3,
-  0x6aac, 0x0acf,
-  0x6aad, 0x3793,
-  0x6aaf, 0x2699,
-  0x6ab0, 0x3795,
-  0x6ab3, 0x2482,
-  0x6ab4, 0x3798,
-  0x6ab8, 0x20a1,
-  0x6ab9, 0x379c,
-  0x6abb, 0x1f92,
-  0x6abc, 0x379e,
-  0x6ac3, 0x1f38,
-  0x6ac4, 0x37a5,
-  0x6ad3, 0x2485,
-  0x6ad4, 0x37b4,
-  0x6ada, 0x2480,
-  0x6adb, 0x246e,
-  0x6adc, 0x37ba,
-  0x6add, 0x247b,
-  0x6ade, 0x2486,
-  0x6adf, 0x2471,
-  0x6ae0, 0x37bb,
-  0x6ae7, 0x2483,
-  0x6ae8, 0x2470,
-  0x6ae9, 0x37c2,
-  0x6aea, 0x2469,
-  0x6aeb, 0x37c3,
-  0x6aec, 0x247f,
-  0x6aed, 0x37c4,
-  0x6af3, 0x246f,
-  0x6af4, 0x37ca,
-  0x6af8, 0x2481,
-  0x6af9, 0x37ce,
-  0x6afb, 0x2220,
-  0x6afc, 0x37d0,
-  0x6b00, 0x37d4,
-  0x6b04, 0x1ff5,
-  0x6b05, 0x37d8,
-  0x6b0a, 0x20f4,
-  0x6b0b, 0x37dd,
-  0x6b0f, 0x247d,
-  0x6b10, 0x37e1,
-  0x6b12, 0x2479,
-  0x6b13, 0x37e3,
-  0x6b16, 0x247e,
-  0x6b17, 0x37e6,
-  0x6b1e, 0x247a,
-  0x6b1f, 0x37ed,
-  0x6b20, 0x0c34,
-  0x6b21, 0x0551,
-  0x6b22, 0x07cb,
-  0x6b23, 0x0f8b,
-  0x6b24, 0x19b1,
-  0x6b25, 0x37ee,
-  0x6b27, 0x0b78,
-  0x6b28, 0x37f0,
-  0x6b32, 0x10e0,
-  0x6b33, 0x37fa,
-  0x6b37, 0x19b2,
-  0x6b38, 0x37fe,
-  0x6b39, 0x19b3,
-  0x6b3a, 0x0bfa,
-  0x6b3b, 0x37ff,
-  0x6b3d, 0x20e3,
-  0x6b3e, 0x097b,
-  0x6b3f, 0x3801,
-  0x6b43, 0x19b4,
-  0x6b44, 0x3805,
-  0x6b46, 0x19b5,
-  0x6b47, 0x0f75,
-  0x6b48, 0x3807,
-  0x6b49, 0x0c35,
-  0x6b4a, 0x3808,
-  0x6b4c, 0x06e3,
-  0x6b4d, 0x380a,
-  0x6b50, 0x20ad,
-  0x6b51, 0x380d,
-  0x6b59, 0x19b6,
-  0x6b5a, 0x3815,
-  0x6b5f, 0x24cb,
-  0x6b60, 0x381a,
-  0x6b61, 0x1f53,
-  0x6b62, 0x11b8,
-  0x6b63, 0x119e,
-  0x6b64, 0x054e,
-  0x6b65, 0x0484,
-  0x6b66, 0x0ef3,
-  0x6b67, 0x0c06,
-  0x6b68, 0x381b,
-  0x6b6a, 0x0e92,
-  0x6b6b, 0x381d,
-  0x6b72, 0x2159,
-  0x6b73, 0x3824,
-  0x6b77, 0x2013,
-  0x6b78, 0x1f33,
-  0x6b79, 0x0578,
-  0x6b7a, 0x3828,
-  0x6b7b, 0x0db5,
-  0x6b7c, 0x0852,
-  0x6b7d, 0x3829,
-  0x6b81, 0x18d6,
-  0x6b83, 0x1013,
-  0x6b84, 0x18d9,
-  0x6b85, 0x382d,
-  0x6b86, 0x057c,
-  0x6b87, 0x18d8,
-  0x6b88, 0x382e,
-  0x6b89, 0x0fdc,
-  0x6b8a, 0x0d79,
-  0x6b8b, 0x0497,
-  0x6b8c, 0x382f,
-  0x6b8d, 0x18dc,
-  0x6b8e, 0x3830,
-  0x6b92, 0x18da,
-  0x6b94, 0x3834,
-  0x6b96, 0x11b2,
-  0x6b97, 0x3836,
-  0x6b98, 0x1e5c,
-  0x6b99, 0x3837,
-  0x6b9a, 0x18dd,
-  0x6b9c, 0x3838,
-  0x6b9e, 0x2488,
-  0x6b9f, 0x383a,
-  0x6ba1, 0x18df,
-  0x6ba2, 0x383c,
-  0x6ba4, 0x2487,
-  0x6ba5, 0x383e,
-  0x6baa, 0x18e0,
-  0x6bab, 0x248a,
-  0x6bac, 0x3843,
-  0x6bae, 0x2489,
-  0x6baf, 0x248b,
-  0x6bb0, 0x3845,
-  0x6bb2, 0x1f83,
-  0x6bb3, 0x19bd,
-  0x6bb4, 0x0b7a,
-  0x6bb5, 0x060d,
-  0x6bb6, 0x3847,
-  0x6bb7, 0x107a,
-  0x6bb8, 0x3848,
-  0x6bba, 0x210f,
-  0x6bbb, 0x1fdb,
-  0x6bbc, 0x384a,
-  0x6bbf, 0x05cf,
-  0x6bc0, 0x384d,
-  0x6bc1, 0x07ee,
-  0x6bc2, 0x19bf,
-  0x6bc3, 0x384e,
-  0x6bc5, 0x106a,
-  0x6bc6, 0x20af,
-  0x6bc7, 0x3850,
-  0x6bcb, 0x0ef2,
-  0x6bcc, 0x3854,
-  0x6bcd, 0x0b1b,
-  0x6bce, 0x3855,
-  0x6bcf, 0x0ac4,
-  0x6bd0, 0x3856,
-  0x6bd2, 0x05fd,
-  0x6bd3, 0x126f,
-  0x6bd4, 0x0431,
-  0x6bd5, 0x0438,
-  0x6bd6, 0x043a,
-  0x6bd7, 0x0bbf,
-  0x6bd8, 0x3858,
-  0x6bd9, 0x0439,
-  0x6bda, 0x3859,
-  0x6bdb, 0x0ab0,
-  0x6bdc, 0x385a,
-  0x6be1, 0x1152,
-  0x6be2, 0x385f,
-  0x6bea, 0x1954,
-  0x6beb, 0x0778,
-  0x6bec, 0x3867,
-  0x6bef, 0x0e0d,
-  0x6bf0, 0x386a,
-  0x6bf3, 0x1955,
-  0x6bf4, 0x386d,
-  0x6bf5, 0x1957,
-  0x6bf6, 0x386e,
-  0x6bf9, 0x1958,
-  0x6bfa, 0x3871,
-  0x6bfd, 0x1956,
-  0x6bfe, 0x3874,
-  0x6bff, 0x24c0,
-  0x6c00, 0x3875,
-  0x6c05, 0x1959,
-  0x6c06, 0x195b,
-  0x6c07, 0x195a,
-  0x6c08, 0x226d,
-  0x6c09, 0x387a,
-  0x6c0c, 0x24c1,
-  0x6c0d, 0x195c,
-  0x6c0e, 0x387d,
-  0x6c0f, 0x0d66,
-  0x6c10, 0x126b,
-  0x6c11, 0x0af6,
-  0x6c12, 0x387e,
-  0x6c13, 0x0aaa,
-  0x6c14, 0x0c17,
-  0x6c15, 0x195d,
-  0x6c16, 0x0b2d,
-  0x6c17, 0x387f,
-  0x6c18, 0x195e,
-  0x6c1b, 0x0672,
-  0x6c1c, 0x3880,
-  0x6c1f, 0x0697,
-  0x6c20, 0x3883,
-  0x6c21, 0x1961,
-  0x6c22, 0x0c5f,
-  0x6c23, 0x20ca,
-  0x6c24, 0x1963,
-  0x6c25, 0x3884,
-  0x6c26, 0x075b,
-  0x6c27, 0x101e,
-  0x6c28, 0x03bc,
-  0x6c29, 0x1962,
-  0x6c2a, 0x1964,
-  0x6c2b, 0x20e7,
-  0x6c2c, 0x24c2,
-  0x6c2d, 0x3885,
-  0x6c2e, 0x058b,
-  0x6c2f, 0x0a6f,
-  0x6c30, 0x0c65,
-  0x6c31, 0x3886,
-  0x6c32, 0x1965,
-  0x6c33, 0x3887,
-  0x6c34, 0x0da3,
-  0x6c35, 0x169f,
-  0x6c36, 0x3888,
-  0x6c38, 0x10a5,
-  0x6c39, 0x388a,
-  0x6c3d, 0x12ef,
-  0x6c3e, 0x388e,
-  0x6c40, 0x0e52,
-  0x6c41, 0x11ac,
-  0x6c42, 0x0c70,
-  0x6c43, 0x3890,
-  0x6c46, 0x12f4,
-  0x6c47, 0x07f8,
-  0x6c48, 0x3893,
-  0x6c49, 0x0771,
-  0x6c4a, 0x16a2,
-  0x6c4b, 0x3894,
-  0x6c50, 0x0f18,
-  0x6c51, 0x3899,
-  0x6c54, 0x16a0,
-  0x6c55, 0x0d00,
-  0x6c56, 0x389c,
-  0x6c57, 0x0770,
-  0x6c58, 0x389d,
-  0x6c5b, 0x0fdd,
-  0x6c5c, 0x16a1,
-  0x6c5d, 0x0cc5,
-  0x6c5e, 0x0708,
-  0x6c5f, 0x087e,
-  0x6c60, 0x04fd,
-  0x6c61, 0x0eea,
-  0x6c62, 0x38a0,
-  0x6c64, 0x0e13,
-  0x6c65, 0x38a2,
-  0x6c68, 0x16a8,
-  0x6c6a, 0x0ea5,
-  0x6c6b, 0x38a5,
-  0x6c70, 0x0e00,
-  0x6c71, 0x38aa,
-  0x6c72, 0x0826,
-  0x6c73, 0x38ab,
-  0x6c74, 0x16aa,
-  0x6c75, 0x38ac,
-  0x6c76, 0x16ab,
-  0x6c77, 0x38ad,
-  0x6c79, 0x0fa5,
-  0x6c7a, 0x38af,
-  0x6c7d, 0x0c1a,
-  0x6c7e, 0x0677,
-  0x6c7f, 0x38b2,
-  0x6c81, 0x0c5c,
-  0x6c82, 0x1051,
-  0x6c83, 0x0ee5,
-  0x6c84, 0x38b4,
-  0x6c85, 0x16a4,
-  0x6c86, 0x16ac,
-  0x6c87, 0x38b5,
-  0x6c88, 0x0d2b,
-  0x6c89, 0x04e6,
-  0x6c8a, 0x38b6,
-  0x6c8c, 0x16a7,
-  0x6c8d, 0x38b8,
-  0x6c8f, 0x0c02,
-  0x6c90, 0x16a5,
-  0x6c91, 0x38ba,
-  0x6c93, 0x1a1f,
-  0x6c94, 0x16a6,
-  0x6c95, 0x38bc,
-  0x6c99, 0x0cec,
-  0x6c9a, 0x38c0,
-  0x6c9b, 0x0ba7,
-  0x6c9c, 0x38c1,
-  0x6c9f, 0x070e,
-  0x6ca0, 0x38c4,
-  0x6ca1, 0x0ac0,
-  0x6ca2, 0x38c5,
-  0x6ca3, 0x16a3,
-  0x6ca4, 0x0b7e,
-  0x6ca5, 0x09ed,
-  0x6ca6, 0x0a80,
-  0x6ca7, 0x049e,
-  0x6ca8, 0x38c6,
-  0x6ca9, 0x16ad,
-  0x6caa, 0x07bb,
-  0x6cab, 0x0b10,
-  0x6cac, 0x38c7,
-  0x6cad, 0x16b0,
-  0x6cae, 0x0909,
-  0x6caf, 0x38c8,
-  0x6cb1, 0x16bb,
-  0x6cb2, 0x16b5,
-  0x6cb3, 0x078a,
-  0x6cb4, 0x38ca,
-  0x6cb8, 0x066d,
-  0x6cb9, 0x10b2,
-  0x6cba, 0x38ce,
-  0x6cbb, 0x11cd,
-  0x6cbc, 0x1174,
-  0x6cbd, 0x071a,
-  0x6cbe, 0x1155,
-  0x6cbf, 0x1001,
-  0x6cc0, 0x38cf,
-  0x6cc4, 0x0f84,
-  0x6cc5, 0x0c73,
-  0x6cc6, 0x38d3,
-  0x6cc9, 0x0c85,
-  0x6cca, 0x047b,
-  0x6ccb, 0x38d6,
-  0x6ccc, 0x0adf,
-  0x6ccd, 0x38d7,
-  0x6cd0, 0x16ae,
-  0x6cd1, 0x38da,
-  0x6cd3, 0x16bc,
-  0x6cd4, 0x16af,
-  0x6cd5, 0x0645,
-  0x6cd6, 0x16b7,
-  0x6cd7, 0x16b4,
-  0x6cd8, 0x38dc,
-  0x6cdb, 0x0657,
-  0x6cdc, 0x38df,
-  0x6cde, 0x0b63,
-  0x6cdf, 0x38e1,
-  0x6ce0, 0x16b6,
-  0x6ce1, 0x0b9e,
-  0x6ce2, 0x046f,
-  0x6ce3, 0x0c1b,
-  0x6ce4, 0x38e2,
-  0x6ce5, 0x0b43,
-  0x6ce6, 0x38e3,
-  0x6ce8, 0x11ff,
-  0x6ce9, 0x38e5,
-  0x6cea, 0x09cc,
-  0x6ceb, 0x16b9,
-  0x6cec, 0x38e6,
-  0x6cee, 0x16ba,
-  0x6cef, 0x16bd,
-  0x6cf0, 0x0dfc,
-  0x6cf1, 0x16b3,
-  0x6cf2, 0x38e8,
-  0x6cf3, 0x10a3,
-  0x6cf4, 0x38e9,
-  0x6cf5, 0x042c,
-  0x6cf6, 0x1a20,
-  0x6cf7, 0x16b1,
-  0x6cf9, 0x38ea,
-  0x6cfa, 0x16b8,
-  0x6cfb, 0x0f85,
-  0x6cfc, 0x0be2,
-  0x6cfd, 0x1136,
-  0x6cfe, 0x16be,
-  0x6cff, 0x38eb,
-  0x6d00, 0x38ec,
-  0x6d01, 0x08b1,
-  0x6d02, 0x38ed,
-  0x6d04, 0x16c5,
-  0x6d05, 0x38ef,
-  0x6d07, 0x16c4,
-  0x6d08, 0x38f1,
-  0x6d0b, 0x101c,
-  0x6d0c, 0x16c1,
-  0x6d0d, 0x38f4,
-  0x6d0e, 0x16c7,
-  0x6d0f, 0x38f5,
-  0x6d12, 0x0cd2,
-  0x6d13, 0x38f8,
-  0x6d17, 0x0f21,
-  0x6d18, 0x38fc,
-  0x6d19, 0x16c6,
-  0x6d1a, 0x16cc,
-  0x6d1b, 0x0a8c,
-  0x6d1c, 0x38fd,
-  0x6d1e, 0x05f3,
-  0x6d1f, 0x38ff,
-  0x6d25, 0x08c3,
-  0x6d26, 0x3905,
-  0x6d27, 0x16c0,
-  0x6d28, 0x3906,
-  0x6d2a, 0x07a0,
-  0x6d2b, 0x16c8,
-  0x6d2c, 0x3908,
-  0x6d2e, 0x16ca,
-  0x6d2f, 0x390a,
-  0x6d31, 0x063c,
-  0x6d32, 0x11dd,
-  0x6d33, 0x16d0,
-  0x6d34, 0x390c,
-  0x6d35, 0x16cb,
-  0x6d36, 0x390d,
-  0x6d39, 0x16bf,
-  0x6d3a, 0x3910,
-  0x6d3b, 0x0803,
-  0x6d3c, 0x0e8e,
-  0x6d3d, 0x0c1f,
-  0x6d3e, 0x0b8a,
-  0x6d3f, 0x3911,
-  0x6d41, 0x0a40,
-  0x6d42, 0x3913,
-  0x6d43, 0x16c2,
-  0x6d44, 0x3914,
-  0x6d45, 0x0c30,
-  0x6d46, 0x087d,
-  0x6d47, 0x088e,
-  0x6d48, 0x16c3,
-  0x6d49, 0x3915,
-  0x6d4a, 0x1224,
-  0x6d4b, 0x04a9,
-  0x6d4c, 0x3916,
-  0x6d4d, 0x16c9,
-  0x6d4e, 0x0836,
-  0x6d4f, 0x16cd,
-  0x6d50, 0x3917,
-  0x6d51, 0x0800,
-  0x6d52, 0x16ce,
-  0x6d53, 0x0b69,
-  0x6d54, 0x16cf,
-  0x6d55, 0x3918,
-  0x6d59, 0x1184,
-  0x6d5a, 0x0930,
-  0x6d5b, 0x391c,
-  0x6d5c, 0x16d8,
-  0x6d5d, 0x391d,
-  0x6d5e, 0x16d5,
-  0x6d5f, 0x391e,
-  0x6d60, 0x16d9,
-  0x6d61, 0x391f,
-  0x6d63, 0x16db,
-  0x6d64, 0x3921,
-  0x6d66, 0x0bf5,
-  0x6d67, 0x3923,
-  0x6d69, 0x077d,
-  0x6d6a, 0x09b6,
-  0x6d6b, 0x3925,
-  0x6d6e, 0x069c,
-  0x6d6f, 0x16d2,
-  0x6d70, 0x3928,
-  0x6d74, 0x10e4,
-  0x6d75, 0x392c,
-  0x6d77, 0x075a,
-  0x6d78, 0x08cf,
-  0x6d79, 0x23dc,
-  0x6d7a, 0x392e,
-  0x6d7c, 0x16da,
-  0x6d7d, 0x3930,
-  0x6d82, 0x0e70,
-  0x6d83, 0x3935,
-  0x6d85, 0x0b5c,
-  0x6d86, 0x3937,
-  0x6d87, 0x23db,
-  0x6d88, 0x0f68,
-  0x6d89, 0x0d1f,
-  0x6d8a, 0x3938,
-  0x6d8c, 0x10a4,
-  0x6d8d, 0x393a,
-  0x6d8e, 0x0f3e,
-  0x6d8f, 0x393b,
-  0x6d91, 0x16d1,
-  0x6d92, 0x393d,
-  0x6d93, 0x16d6,
-  0x6d95, 0x0e3c,
-  0x6d96, 0x393e,
-  0x6d9b, 0x0e21,
-  0x6d9c, 0x3943,
-  0x6d9d, 0x09bf,
-  0x6d9e, 0x16d3,
-  0x6d9f, 0x09f9,
-  0x6da0, 0x16d4,
-  0x6da1, 0x0edf,
-  0x6da2, 0x3944,
-  0x6da3, 0x07d6,
-  0x6da4, 0x05b4,
-  0x6da5, 0x3945,
-  0x6da6, 0x0cce,
-  0x6da7, 0x0878,
-  0x6da8, 0x1168,
-  0x6da9, 0x0ce5,
-  0x6daa, 0x069d,
-  0x6dab, 0x16e8,
-  0x6dac, 0x3946,
-  0x6dae, 0x16ea,
-  0x6daf, 0x0fed,
-  0x6db0, 0x3948,
-  0x6db2, 0x1041,
-  0x6db3, 0x394a,
-  0x6db5, 0x0764,
-  0x6db6, 0x394c,
-  0x6db8, 0x078b,
-  0x6db9, 0x394e,
-  0x6dbf, 0x16e1,
-  0x6dc0, 0x05ce,
-  0x6dc1, 0x3954,
-  0x6dc4, 0x122a,
-  0x6dc5, 0x16de,
-  0x6dc6, 0x0f6a,
-  0x6dc7, 0x16dd,
-  0x6dc8, 0x3957,
-  0x6dcb, 0x0a25,
-  0x6dcc, 0x0e1d,
-  0x6dcd, 0x395a,
-  0x6dd1, 0x0d7e,
-  0x6dd2, 0x395e,
-  0x6dd6, 0x0b3a,
-  0x6dd7, 0x3962,
-  0x6dd8, 0x0e27,
-  0x6dd9, 0x16e6,
-  0x6dda, 0x3963,
-  0x6ddd, 0x16e5,
-  0x6dde, 0x16df,
-  0x6ddf, 0x3966,
-  0x6de0, 0x16e2,
-  0x6de1, 0x058e,
-  0x6de2, 0x3967,
-  0x6de4, 0x10be,
-  0x6de5, 0x3969,
-  0x6de6, 0x16e4,
-  0x6de7, 0x396a,
-  0x6dea, 0x205e,
-  0x6deb, 0x1080,
-  0x6dec, 0x0566,
-  0x6ded, 0x396d,
-  0x6dee, 0x07c9,
-  0x6def, 0x396e,
-  0x6df1, 0x0d27,
-  0x6df2, 0x3970,
-  0x6df3, 0x0541,
-  0x6df4, 0x3971,
-  0x6df5, 0x2244,
-  0x6df6, 0x23e2,
-  0x6df7, 0x0801,
-  0x6df8, 0x3972,
-  0x6df9, 0x0ff6,
-  0x6dfa, 0x20d4,
-  0x6dfb, 0x0e40,
-  0x6dfc, 0x1a21,
-  0x6dfd, 0x3973,
-  0x6e00, 0x3976,
-  0x6e05, 0x0c62,
-  0x6e06, 0x397b,
-  0x6e0a, 0x10eb,
-  0x6e0b, 0x397f,
-  0x6e0c, 0x16e9,
-  0x6e0d, 0x1232,
-  0x6e0e, 0x16e0,
-  0x6e0f, 0x3980,
-  0x6e10, 0x0876,
-  0x6e11, 0x16e3,
-  0x6e12, 0x3981,
-  0x6e14, 0x10cb,
-  0x6e15, 0x3983,
-  0x6e16, 0x16e7,
-  0x6e17, 0x0d31,
-  0x6e18, 0x3984,
-  0x6e1a, 0x16dc,
-  0x6e1b, 0x3986,
-  0x6e1d, 0x10ca,
-  0x6e1e, 0x3988,
-  0x6e20, 0x0c7b,
-  0x6e21, 0x0608,
-  0x6e22, 0x398a,
-  0x6e23, 0x113f,
-  0x6e24, 0x047a,
-  0x6e25, 0x16f5,
-  0x6e26, 0x219f,
-  0x6e27, 0x398b,
-  0x6e29, 0x0ed1,
-  0x6e2a, 0x398d,
-  0x6e2b, 0x16eb,
-  0x6e2c, 0x1e66,
-  0x6e2d, 0x0ecb,
-  0x6e2e, 0x398e,
-  0x6e2f, 0x06d6,
-  0x6e30, 0x398f,
-  0x6e32, 0x16f4,
-  0x6e33, 0x3991,
-  0x6e34, 0x0957,
-  0x6e35, 0x3992,
-  0x6e38, 0x10b3,
-  0x6e39, 0x3995,
-  0x6e3a, 0x0af1,
-  0x6e3b, 0x3996,
-  0x6e3e, 0x1f63,
-  0x6e3f, 0x3999,
-  0x6e43, 0x0b89,
-  0x6e44, 0x16f6,
-  0x6e45, 0x399d,
-  0x6e4d, 0x0e75,
-  0x6e4e, 0x16ed,
-  0x6e4f, 0x39a5,
-  0x6e53, 0x16f2,
-  0x6e55, 0x39a9,
-  0x6e56, 0x07b5,
-  0x6e57, 0x39aa,
-  0x6e58, 0x0f53,
-  0x6e59, 0x39ab,
-  0x6e5b, 0x1160,
-  0x6e5c, 0x39ad,
-  0x6e5e, 0x23dd,
-  0x6e5f, 0x16f0,
-  0x6e60, 0x39af,
-  0x6e6b, 0x16ee,
-  0x6e6c, 0x39ba,
-  0x6e6e, 0x16ec,
-  0x6e6f, 0x216b,
-  0x6e70, 0x39bc,
-  0x6e7e, 0x0e96,
-  0x6e7f, 0x0d41,
-  0x6e80, 0x39ca,
-  0x6e83, 0x098e,
-  0x6e84, 0x39cd,
-  0x6e85, 0x0877,
-  0x6e86, 0x16f1,
-  0x6e87, 0x39ce,
-  0x6e89, 0x06c3,
-  0x6e8a, 0x39d0,
-  0x6e8f, 0x1705,
-  0x6e90, 0x10f7,
-  0x6e91, 0x39d5,
-  0x6e96, 0x22b5,
-  0x6e97, 0x39da,
-  0x6e98, 0x16f9,
-  0x6e99, 0x39db,
-  0x6e9c, 0x0a38,
-  0x6e9d, 0x1f26,
-  0x6e9e, 0x39de,
-  0x6e9f, 0x1707,
-  0x6ea0, 0x39df,
-  0x6ea2, 0x106e,
-  0x6ea3, 0x39e1,
-  0x6ea5, 0x16fd,
-  0x6ea6, 0x39e3,
-  0x6ea7, 0x16fe,
-  0x6ea8, 0x39e4,
-  0x6eaa, 0x0f17,
-  0x6eab, 0x39e6,
-  0x6eaf, 0x0dd2,
-  0x6eb0, 0x39ea,
-  0x6eb1, 0x16f8,
-  0x6eb2, 0x16ef,
-  0x6eb3, 0x39eb,
-  0x6eb4, 0x1703,
-  0x6eb5, 0x39ec,
-  0x6eb6, 0x0cb7,
-  0x6eb7, 0x1701,
-  0x6eb8, 0x39ed,
-  0x6eba, 0x0b4a,
-  0x6ebb, 0x1700,
-  0x6ebc, 0x39ef,
-  0x6ebd, 0x16ff,
-  0x6ebe, 0x39f0,
-  0x6ec1, 0x0521,
-  0x6ec2, 0x1706,
-  0x6ec3, 0x39f3,
-  0x6ec4, 0x1e63,
-  0x6ec5, 0x2088,
-  0x6ec6, 0x39f4,
-  0x6ec7, 0x05c2,
-  0x6ec8, 0x39f5,
-  0x6ecb, 0x1229,
-  0x6ecc, 0x1ebd,
-  0x6ecd, 0x39f8,
-  0x6ece, 0x2341,
-  0x6ecf, 0x1704,
-  0x6ed0, 0x39f9,
-  0x6ed1, 0x07c1,
-  0x6ed2, 0x39fa,
-  0x6ed3, 0x122f,
-  0x6ed4, 0x0e22,
-  0x6ed5, 0x19a8,
-  0x6ed6, 0x39fb,
-  0x6ed7, 0x1702,
-  0x6ed8, 0x39fc,
-  0x6eda, 0x074f,
-  0x6edb, 0x39fe,
-  0x6ede, 0x11cc,
-  0x6edf, 0x16f7,
-  0x6ee0, 0x16fa,
-  0x6ee1, 0x0aa1,
-  0x6ee2, 0x16fc,
-  0x6ee3, 0x3a01,
-  0x6ee4, 0x0a72,
-  0x6ee5, 0x09af,
-  0x6ee6, 0x0a77,
-  0x6ee7, 0x3a02,
-  0x6ee8, 0x045e,
-  0x6ee9, 0x0e05,
-  0x6eea, 0x3a03,
-  0x6eec, 0x1f4b,
-  0x6eed, 0x3a05,
-  0x6eef, 0x2292,
-  0x6ef0, 0x3a07,
-  0x6ef2, 0x2124,
-  0x6ef3, 0x3a09,
-  0x6ef4, 0x05af,
-  0x6ef5, 0x3a0a,
-  0x6ef7, 0x2048,
-  0x6ef8, 0x23e0,
-  0x6ef9, 0x170d,
-  0x6efa, 0x3a0c,
-  0x6eff, 0x2077,
-  0x6f00, 0x3a11,
-  0x6f01, 0x223a,
-  0x6f02, 0x0bce,
-  0x6f03, 0x3a12,
-  0x6f06, 0x0c00,
-  0x6f07, 0x3a15,
-  0x6f09, 0x1713,
-  0x6f0a, 0x3a17,
-  0x6f0f, 0x0a50,
-  0x6f10, 0x3a1c,
-  0x6f13, 0x09d7,
-  0x6f14, 0x1006,
-  0x6f15, 0x170c,
-  0x6f16, 0x3a1f,
-  0x6f1a, 0x20b1,
-  0x6f1b, 0x3a23,
-  0x6f20, 0x0b11,
-  0x6f21, 0x3a28,
-  0x6f22, 0x1f41,
-  0x6f23, 0x201c,
-  0x6f24, 0x170b,
-  0x6f25, 0x3a29,
-  0x6f29, 0x1714,
-  0x6f2a, 0x1712,
-  0x6f2b, 0x0aa5,
-  0x6f2c, 0x22b8,
-  0x6f2d, 0x16fb,
-  0x6f2e, 0x3a2d,
-  0x6f2f, 0x170e,
-  0x6f30, 0x3a2e,
-  0x6f31, 0x0d95,
-  0x6f32, 0x2276,
-  0x6f33, 0x1165,
-  0x6f34, 0x3a2f,
-  0x6f36, 0x170f,
-  0x6f37, 0x3a31,
-  0x6f38, 0x1f9b,
-  0x6f39, 0x3a32,
-  0x6f3e, 0x1023,
-  0x6f3f, 0x1f9f,
-  0x6f40, 0x3a37,
-  0x6f41, 0x25ca,
-  0x6f42, 0x3a38,
-  0x6f46, 0x1709,
-  0x6f48, 0x3a3c,
-  0x6f4b, 0x1710,
-  0x6f4c, 0x3a3f,
-  0x6f4d, 0x0eba,
-  0x6f4e, 0x3a40,
-  0x6f51, 0x20be,
-  0x6f52, 0x3a43,
-  0x6f54, 0x1fb4,
-  0x6f55, 0x3a45,
-  0x6f58, 0x0b8c,
-  0x6f59, 0x23d7,
-  0x6f5a, 0x3a48,
-  0x6f5c, 0x0c2e,
-  0x6f5d, 0x3a4a,
-  0x6f5e, 0x0a61,
-  0x6f5f, 0x3a4b,
-  0x6f62, 0x1708,
-  0x6f63, 0x3a4e,
-  0x6f64, 0x2105,
-  0x6f65, 0x3a4f,
-  0x6f66, 0x0a13,
-  0x6f67, 0x3a50,
-  0x6f6d, 0x0e09,
-  0x6f6e, 0x04d6,
-  0x6f6f, 0x23e1,
-  0x6f70, 0x1fec,
-  0x6f71, 0x3a56,
-  0x6f72, 0x1719,
-  0x6f73, 0x3a57,
-  0x6f74, 0x1711,
-  0x6f75, 0x3a58,
-  0x6f77, 0x23ea,
-  0x6f78, 0x1718,
-  0x6f79, 0x3a5a,
-  0x6f7a, 0x171b,
-  0x6f7b, 0x3a5b,
-  0x6f7c, 0x171a,
-  0x6f7d, 0x3a5c,
-  0x6f7f, 0x23e3,
-  0x6f80, 0x210e,
-  0x6f81, 0x3a5e,
-  0x6f84, 0x04f3,
-  0x6f85, 0x3a61,
-  0x6f86, 0x1fa6,
-  0x6f87, 0x2004,
-  0x6f88, 0x04df,
-  0x6f89, 0x1715,
-  0x6f8a, 0x3a62,
-  0x6f8c, 0x1717,
-  0x6f8d, 0x1716,
-  0x6f8e, 0x0bad,
-  0x6f8f, 0x3a64,
-  0x6f97, 0x1f9d,
-  0x6f98, 0x3a6c,
-  0x6f9c, 0x09a8,
-  0x6f9d, 0x3a70,
-  0x6fa0, 0x23e5,
-  0x6fa1, 0x112b,
-  0x6fa2, 0x3a73,
-  0x6fa4, 0x2264,
-  0x6fa5, 0x3a75,
-  0x6fa7, 0x171e,
-  0x6fa8, 0x3a77,
-  0x6fa9, 0x24e2,
-  0x6faa, 0x3a78,
-  0x6fae, 0x23de,
-  0x6faf, 0x3a7c,
-  0x6fb1, 0x1ec4,
-  0x6fb2, 0x3a7e,
-  0x6fb3, 0x03cf,
-  0x6fb4, 0x3a7f,
-  0x6fb6, 0x1720,
-  0x6fb7, 0x3a81,
-  0x6fb9, 0x171f,
-  0x6fba, 0x3a83,
-  0x6fc0, 0x0817,
-  0x6fc1, 0x22b6,
-  0x6fc2, 0x1721,
-  0x6fc3, 0x20a9,
-  0x6fc4, 0x3a89,
-  0x6fc9, 0x171d,
-  0x6fca, 0x3a8e,
-  0x6fd1, 0x171c,
-  0x6fd2, 0x045d,
-  0x6fd3, 0x3a95,
-  0x6fd5, 0x212b,
-  0x6fd6, 0x3a97,
-  0x6fd8, 0x20a5,
-  0x6fd9, 0x3a99,
-  0x6fdb, 0x268b,
-  0x6fdc, 0x3a9b,
-  0x6fde, 0x1724,
-  0x6fdf, 0x1f76,
-  0x6fe0, 0x1725,
-  0x6fe1, 0x1722,
-  0x6fe2, 0x3a9d,
-  0x6fe4, 0x216d,
-  0x6fe5, 0x3a9f,
-  0x6feb, 0x2001,
-  0x6fec, 0x3aa5,
-  0x6fee, 0x1723,
-  0x6fef, 0x1726,
-  0x6ff0, 0x2191,
-  0x6ff1, 0x1e50,
-  0x6ff2, 0x3aa7,
-  0x6ffa, 0x1f9c,
-  0x6ffb, 0x3aaf,
-  0x6ffc, 0x23da,
-  0x6ffd, 0x3ab0,
-  0x6ffe, 0x2053,
-  0x6fff, 0x3ab1,
-  0x7000, 0x3ab2,
-  0x7005, 0x23e9,
-  0x7006, 0x23e4,
-  0x7007, 0x3ab7,
-  0x7009, 0x21d5,
-  0x700a, 0x3ab9,
-  0x700b, 0x23e6,
-  0x700c, 0x3aba,
-  0x700f, 0x23df,
-  0x7010, 0x3abd,
-  0x7011, 0x0bf8,
-  0x7012, 0x3abe,
-  0x7015, 0x1e4f,
-  0x7016, 0x3ac1,
-  0x7018, 0x23d9,
-  0x7019, 0x3ac3,
-  0x701a, 0x1727,
-  0x701b, 0x1729,
-  0x701c, 0x3ac4,
-  0x701d, 0x2014,
-  0x701e, 0x3ac5,
-  0x701f, 0x23ec,
-  0x7020, 0x23eb,
-  0x7021, 0x3ac6,
-  0x7023, 0x1728,
-  0x7024, 0x3ac8,
-  0x7027, 0x23d8,
-  0x7028, 0x23ee,
-  0x7029, 0x3acb,
-  0x7030, 0x268e,
-  0x7031, 0x3ad2,
-  0x7032, 0x23ed,
-  0x7033, 0x3ad3,
-  0x7035, 0x172b,
-  0x7036, 0x3ad5,
-  0x7039, 0x172a,
-  0x703a, 0x3ad8,
-  0x703e, 0x1ffa,
-  0x703f, 0x3adc,
-  0x7043, 0x23d6,
-  0x7044, 0x23e8,
-  0x7045, 0x3ae0,
-  0x704c, 0x0739,
-  0x704d, 0x3ae7,
-  0x704f, 0x172c,
-  0x7050, 0x3ae9,
-  0x7051, 0x2106,
-  0x7052, 0x3aea,
-  0x7055, 0x200b,
-  0x7056, 0x3aed,
-  0x7058, 0x2166,
-  0x7059, 0x3aef,
-  0x705d, 0x23ef,
-  0x705e, 0x172d,
-  0x705f, 0x3af3,
-  0x7063, 0x2189,
-  0x7064, 0x2058,
-  0x7065, 0x3af7,
-  0x7067, 0x23e7,
-  0x7068, 0x3af9,
-  0x706b, 0x0805,
-  0x706c, 0x19ef,
-  0x706d, 0x0af5,
-  0x706e, 0x3afc,
-  0x706f, 0x05a7,
-  0x7070, 0x07e7,
-  0x7071, 0x3afd,
-  0x7075, 0x0a32,
-  0x7076, 0x1131,
-  0x7077, 0x3b01,
-  0x7078, 0x08f3,
-  0x7079, 0x3b02,
-  0x707c, 0x1223,
-  0x707d, 0x3b05,
-  0x707e, 0x1119,
-  0x707f, 0x049a,
-  0x7080, 0x19cc,
-  0x7081, 0x3b06,
-  0x7085, 0x1913,
-  0x7086, 0x3b0a,
-  0x7089, 0x0a56,
-  0x708a, 0x0539,
-  0x708b, 0x3b0d,
-  0x708e, 0x1000,
-  0x708f, 0x3b10,
-  0x7092, 0x04d9,
-  0x7093, 0x3b13,
-  0x7094, 0x0c8d,
-  0x7095, 0x0948,
-  0x7096, 0x19ce,
-  0x7097, 0x3b14,
-  0x7099, 0x11ca,
-  0x709a, 0x3b16,
-  0x709c, 0x19cd,
-  0x709d, 0x19cf,
-  0x709e, 0x3b18,
-  0x70ab, 0x19d3,
-  0x70ac, 0x0915,
-  0x70ad, 0x0e12,
-  0x70ae, 0x0b9b,
-  0x70af, 0x08eb,
-  0x70b0, 0x3b25,
-  0x70b1, 0x19d4,
-  0x70b2, 0x3b26,
-  0x70b3, 0x0467,
-  0x70b4, 0x3b27,
-  0x70b7, 0x19d2,
-  0x70b8, 0x1149,
-  0x70b9, 0x05c4,
-  0x70ba, 0x3b2a,
-  0x70bb, 0x19d0,
-  0x70bc, 0x09ff,
-  0x70bd, 0x0508,
-  0x70be, 0x3b2b,
-  0x70c0, 0x19d1,
-  0x70c1, 0x0dad,
-  0x70c2, 0x09ae,
-  0x70c3, 0x0e51,
-  0x70c4, 0x3b2d,
-  0x70c8, 0x0a1b,
-  0x70c9, 0x3b31,
-  0x70ca, 0x19d6,
-  0x70cb, 0x3b32,
-  0x70cf, 0x21a3,
-  0x70d0, 0x3b36,
-  0x70d8, 0x079d,
-  0x70d9, 0x09be,
-  0x70da, 0x3b3e,
-  0x70db, 0x11f1,
-  0x70dc, 0x3b3f,
-  0x70df, 0x0ff5,
-  0x70e0, 0x3b42,
-  0x70e4, 0x094b,
-  0x70e5, 0x3b46,
-  0x70e6, 0x0650,
-  0x70e7, 0x0d0e,
-  0x70e8, 0x19d5,
-  0x70e9, 0x07f7,
-  0x70ea, 0x3b47,
-  0x70eb, 0x0e1f,
-  0x70ec, 0x08ce,
-  0x70ed, 0x0ca3,
-  0x70ee, 0x3b48,
-  0x70ef, 0x0f16,
-  0x70f0, 0x3b49,
-  0x70f4, 0x217a,
-  0x70f5, 0x3b4d,
-  0x70f7, 0x0e9a,
-  0x70f8, 0x3b4f,
-  0x70f9, 0x0bac,
-  0x70fa, 0x3b50,
-  0x70fd, 0x0686,
-  0x70fe, 0x3b53,
-  0x7100, 0x3b55,
-  0x7109, 0x0ff2,
-  0x710a, 0x076f,
-  0x710b, 0x3b5e,
-  0x7110, 0x19d7,
-  0x7111, 0x3b63,
-  0x7113, 0x19d8,
-  0x7114, 0x3b65,
-  0x7115, 0x07d5,
-  0x7116, 0x19d9,
-  0x7117, 0x3b66,
-  0x7118, 0x19f0,
-  0x7119, 0x0423,
-  0x711a, 0x0676,
-  0x711b, 0x3b67,
-  0x7121, 0x21a5,
-  0x7122, 0x3b6d,
-  0x7126, 0x088a,
-  0x7127, 0x3b71,
-  0x712f, 0x19da,
-  0x7130, 0x100f,
-  0x7131, 0x19db,
-  0x7132, 0x3b79,
-  0x7136, 0x0c96,
-  0x7137, 0x3b7d,
-  0x7145, 0x19df,
-  0x7146, 0x3b8b,
-  0x7149, 0x2022,
-  0x714a, 0x19e1,
-  0x714b, 0x3b8e,
-  0x714c, 0x07e2,
-  0x714d, 0x3b8f,
-  0x714e, 0x0858,
-  0x714f, 0x3b90,
-  0x7152, 0x24d6,
-  0x7153, 0x3b93,
-  0x715c, 0x19dd,
-  0x715d, 0x3b9c,
-  0x715e, 0x0cf0,
-  0x715f, 0x3b9d,
-  0x7162, 0x233a,
-  0x7163, 0x3ba0,
-  0x7164, 0x0abf,
-  0x7165, 0x3ba1,
-  0x7166, 0x19f1,
-  0x7167, 0x1176,
-  0x7168, 0x19de,
-  0x7169, 0x1eee,
-  0x716a, 0x3ba2,
-  0x716c, 0x24d5,
-  0x716d, 0x3ba4,
-  0x716e, 0x11f2,
-  0x716f, 0x3ba5,
-  0x7172, 0x19e0,
-  0x7173, 0x19dc,
-  0x7174, 0x3ba8,
-  0x7178, 0x19e2,
-  0x7179, 0x3bac,
-  0x717a, 0x19e3,
-  0x717b, 0x3bad,
-  0x717d, 0x0cf8,
-  0x717e, 0x3baf,
-  0x7184, 0x0f15,
-  0x7185, 0x3bb5,
-  0x718a, 0x0fa7,
-  0x718b, 0x3bba,
-  0x718f, 0x0fd5,
-  0x7190, 0x3bbe,
-  0x7192, 0x2228,
-  0x7193, 0x3bc0,
-  0x7194, 0x0cb6,
-  0x7195, 0x3bc1,
-  0x7197, 0x24d7,
-  0x7198, 0x19e4,
-  0x7199, 0x0f04,
-  0x719a, 0x3bc3,
-  0x719f, 0x0d83,
-  0x71a0, 0x19e8,
-  0x71a1, 0x3bc8,
-  0x71a8, 0x19e7,
-  0x71a9, 0x3bcf,
-  0x71ac, 0x03c9,
-  0x71ad, 0x3bd2,
-  0x71b1, 0x20fc,
-  0x71b2, 0x3bd6,
-  0x71b3, 0x19e5,
-  0x71b4, 0x3bd7,
-  0x71b5, 0x19e6,
-  0x71b6, 0x3bd8,
-  0x71b9, 0x19f2,
-  0x71ba, 0x3bdb,
-  0x71be, 0x1e87,
-  0x71bf, 0x3bdf,
-  0x71c1, 0x24d8,
-  0x71c2, 0x3be1,
-  0x71c3, 0x0c97,
-  0x71c4, 0x3be2,
-  0x71c8, 0x1eba,
-  0x71c9, 0x3be6,
-  0x71ce, 0x0a10,
-  0x71cf, 0x3beb,
-  0x71d2, 0x2119,
-  0x71d3, 0x3bee,
-  0x71d4, 0x19ea,
-  0x71d5, 0x1009,
-  0x71d6, 0x3bef,
-  0x71d9, 0x216c,
-  0x71da, 0x3bf2,
-  0x71dc, 0x24d9,
-  0x71dd, 0x3bf4,
-  0x71df, 0x2227,
-  0x71e0, 0x19e9,
-  0x71e1, 0x3bf6,
-  0x71e5, 0x1132,
-  0x71e6, 0x1e5f,
-  0x71e7, 0x19eb,
-  0x71e8, 0x3bfa,
-  0x71ed, 0x229f,
-  0x71ee, 0x1396,
-  0x71ef, 0x3bff,
-  0x71f4, 0x1f5d,
-  0x71f5, 0x3c04,
-  0x71f9, 0x19ec,
-  0x71fa, 0x3c08,
-  0x71fc, 0x1fbc,
-  0x71fd, 0x3c0a,
-  0x71fe, 0x24da,
-  0x71ff, 0x3c0b,
-  0x7200, 0x3c0c,
-  0x7206, 0x0415,
-  0x7207, 0x3c12,
-  0x720d, 0x2149,
-  0x720e, 0x3c18,
-  0x7210, 0x2046,
-  0x7211, 0x3c1a,
-  0x721b, 0x2000,
-  0x721c, 0x3c24,
-  0x721d, 0x19ed,
-  0x721e, 0x3c25,
-  0x7228, 0x19ee,
-  0x7229, 0x3c2f,
-  0x722a, 0x1203,
-  0x722b, 0x3c30,
-  0x722c, 0x0b81,
-  0x722d, 0x3c31,
-  0x7230, 0x196c,
-  0x7231, 0x03b9,
-  0x7232, 0x2190,
-  0x7233, 0x3c34,
-  0x7235, 0x0923,
-  0x7236, 0x06b3,
-  0x7237, 0x1036,
-  0x7238, 0x03e1,
-  0x7239, 0x05da,
-  0x723a, 0x2208,
-  0x723b, 0x1269,
-  0x723c, 0x3c36,
-  0x723d, 0x0da1,
-  0x723e, 0x1ee6,
-  0x723f, 0x169d,
-  0x7240, 0x3c37,
-  0x7247, 0x0bcb,
-  0x7248, 0x03f1,
-  0x7249, 0x3c3e,
-  0x724c, 0x0b87,
-  0x724d, 0x1969,
-  0x724e, 0x3c41,
-  0x7252, 0x196a,
-  0x7253, 0x3c45,
-  0x7256, 0x196b,
-  0x7257, 0x3c48,
-  0x7258, 0x24c3,
-  0x7259, 0x0fe9,
-  0x725a, 0x3c49,
-  0x725b, 0x0b64,
-  0x725c, 0x3c4a,
-  0x725d, 0x1944,
-  0x725e, 0x3c4b,
-  0x725f, 0x0b15,
-  0x7260, 0x3c4c,
-  0x7261, 0x0b18,
-  0x7262, 0x09b9,
-  0x7263, 0x3c4d,
-  0x7266, 0x1945,
-  0x7267, 0x0b24,
-  0x7268, 0x3c50,
-  0x7269, 0x0efe,
-  0x726a, 0x3c51,
-  0x726e, 0x1942,
-  0x726f, 0x1946,
-  0x7270, 0x3c55,
-  0x7272, 0x0d35,
-  0x7273, 0x3c57,
-  0x7275, 0x0c20,
-  0x7276, 0x3c59,
-  0x7279, 0x0e2b,
-  0x727a, 0x0f0d,
-  0x727b, 0x3c5c,
-  0x727d, 0x20cc,
-  0x727e, 0x1947,
-  0x7280, 0x0f19,
-  0x7281, 0x09d2,
-  0x7282, 0x3c5e,
-  0x7284, 0x1949,
-  0x7285, 0x3c60,
-  0x728a, 0x05fe,
-  0x728b, 0x194a,
-  0x728c, 0x3c65,
-  0x728d, 0x194b,
-  0x728e, 0x3c66,
-  0x728f, 0x194c,
-  0x7290, 0x3c67,
-  0x7292, 0x194d,
-  0x7293, 0x3c69,
-  0x7296, 0x2340,
-  0x7297, 0x3c6c,
-  0x729f, 0x1943,
-  0x72a0, 0x3c74,
-  0x72a2, 0x1ed1,
-  0x72a3, 0x3c76,
-  0x72a7, 0x21ac,
-  0x72a8, 0x3c7a,
-  0x72ac, 0x0c89,
-  0x72ad, 0x15ef,
-  0x72ae, 0x3c7e,
-  0x72af, 0x0655,
-  0x72b0, 0x15f0,
-  0x72b1, 0x3c7f,
-  0x72b4, 0x15f1,
-  0x72b5, 0x3c82,
-  0x72b6, 0x1211,
-  0x72b7, 0x15f2,
-  0x72b9, 0x10b1,
-  0x72ba, 0x3c83,
-  0x72c0, 0x22af,
-  0x72c1, 0x15f5,
-  0x72c2, 0x097e,
-  0x72c3, 0x15f4,
-  0x72c4, 0x05b3,
-  0x72c5, 0x3c89,
-  0x72c8, 0x0420,
-  0x72c9, 0x3c8c,
-  0x72cd, 0x15f7,
-  0x72ce, 0x15f6,
-  0x72cf, 0x3c90,
-  0x72d0, 0x07b3,
-  0x72d1, 0x3c91,
-  0x72d2, 0x15f8,
-  0x72d3, 0x3c92,
-  0x72d7, 0x0710,
-  0x72d8, 0x3c96,
-  0x72d9, 0x0900,
-  0x72da, 0x3c97,
-  0x72de, 0x0b5f,
-  0x72df, 0x3c9b,
-  0x72e0, 0x0794,
-  0x72e1, 0x0897,
-  0x72e2, 0x3c9c,
-  0x72e8, 0x15f9,
-  0x72e9, 0x15fb,
-  0x72ea, 0x3ca2,
-  0x72ec, 0x05ff,
-  0x72ed, 0x0f2e,
-  0x72ee, 0x0d3f,
-  0x72ef, 0x15fa,
-  0x72f0, 0x1199,
-  0x72f1, 0x10e1,
-  0x72f2, 0x15fc,
-  0x72f3, 0x1600,
-  0x72f4, 0x15fd,
-  0x72f5, 0x3ca4,
-  0x72f7, 0x15fe,
-  0x72f8, 0x09d5,
-  0x72f9, 0x21b6,
-  0x72fa, 0x1602,
-  0x72fc, 0x09b2,
-  0x72fd, 0x1e3d,
-  0x72fe, 0x3ca6,
-  0x7300, 0x3ca8,
-  0x7301, 0x15ff,
-  0x7302, 0x3ca9,
-  0x7303, 0x1601,
-  0x7304, 0x3caa,
-  0x730a, 0x1607,
-  0x730b, 0x3cb0,
-  0x730e, 0x0a1d,
-  0x730f, 0x3cb3,
-  0x7313, 0x1605,
-  0x7314, 0x3cb7,
-  0x7315, 0x160a,
-  0x7316, 0x04c5,
-  0x7317, 0x1604,
-  0x7318, 0x3cb8,
-  0x731b, 0x0ad2,
-  0x731c, 0x0489,
-  0x731d, 0x1609,
-  0x731e, 0x1608,
-  0x731f, 0x3cbb,
-  0x7321, 0x1606,
-  0x7322, 0x160b,
-  0x7323, 0x3cbd,
-  0x7325, 0x160d,
-  0x7326, 0x3cbf,
-  0x7329, 0x0f94,
-  0x732a, 0x11ec,
-  0x732b, 0x0aad,
-  0x732c, 0x160e,
-  0x732d, 0x3cc2,
-  0x732e, 0x0f44,
-  0x732f, 0x3cc3,
-  0x7331, 0x1610,
-  0x7332, 0x3cc5,
-  0x7334, 0x07a6,
-  0x7335, 0x3cc7,
-  0x7336, 0x2235,
-  0x7337, 0x18d4,
-  0x7338, 0x160f,
-  0x7339, 0x160c,
-  0x733a, 0x3cc8,
-  0x733b, 0x2397,
-  0x733c, 0x3cc9,
-  0x733e, 0x07c0,
-  0x733f, 0x10f6,
-  0x7340, 0x3ccb,
-  0x7341, 0x2395,
-  0x7342, 0x3ccc,
-  0x7344, 0x223f,
-  0x7345, 0x212a,
-  0x7346, 0x3cce,
-  0x734d, 0x1612,
-  0x734e, 0x3cd5,
-  0x7350, 0x1611,
-  0x7351, 0x3cd7,
-  0x7352, 0x18d5,
-  0x7353, 0x3cd8,
-  0x7357, 0x1613,
-  0x7358, 0x3cdc,
-  0x7360, 0x1614,
-  0x7361, 0x3ce4,
-  0x7368, 0x1ed2,
-  0x7369, 0x3ceb,
-  0x736a, 0x2396,
-  0x736b, 0x2398,
-  0x736c, 0x1615,
-  0x736d, 0x0df4,
-  0x736e, 0x3cec,
-  0x736f, 0x1616,
-  0x7370, 0x20a2,
-  0x7371, 0x3ced,
-  0x7372, 0x1f64,
-  0x7373, 0x3cee,
-  0x7375, 0x202b,
-  0x7376, 0x3cf0,
-  0x7377, 0x2394,
-  0x7378, 0x2139,
-  0x7379, 0x3cf1,
-  0x737a, 0x215f,
-  0x737b, 0x21c1,
-  0x737c, 0x239a,
-  0x737d, 0x3cf2,
-  0x737e, 0x1617,
-  0x737f, 0x3cf3,
-  0x7380, 0x2399,
-  0x7381, 0x3cf4,
-  0x7384, 0x0fc9,
-  0x7385, 0x3cf7,
-  0x7387, 0x0a71,
-  0x7388, 0x3cf9,
-  0x7389, 0x10d6,
-  0x738a, 0x3cfa,
-  0x738b, 0x0ea6,
-  0x738c, 0x3cfb,
-  0x738e, 0x1818,
-  0x738f, 0x3cfd,
-  0x7391, 0x1819,
-  0x7392, 0x3cff,
-  0x7396, 0x08f0,
-  0x7397, 0x3d03,
-  0x739b, 0x0a91,
-  0x739c, 0x3d07,
-  0x739f, 0x181c,
-  0x73a0, 0x3d0a,
-  0x73a2, 0x181b,
-  0x73a3, 0x3d0c,
-  0x73a9, 0x0e97,
-  0x73aa, 0x3d12,
-  0x73ab, 0x0aba,
-  0x73ac, 0x3d13,
-  0x73ae, 0x181a,
-  0x73af, 0x07cc,
-  0x73b0, 0x0f43,
-  0x73b1, 0x3d15,
-  0x73b2, 0x0a2a,
-  0x73b3, 0x1821,
-  0x73b4, 0x3d16,
-  0x73b7, 0x1820,
-  0x73b8, 0x3d19,
-  0x73ba, 0x182c,
-  0x73bb, 0x046a,
-  0x73bc, 0x3d1b,
-  0x73c0, 0x1822,
-  0x73c1, 0x3d1f,
-  0x73c2, 0x181e,
-  0x73c3, 0x3d20,
-  0x73c8, 0x1824,
-  0x73c9, 0x1823,
-  0x73ca, 0x0cf3,
-  0x73cb, 0x3d25,
-  0x73cd, 0x1185,
-  0x73ce, 0x3d27,
-  0x73cf, 0x181d,
-  0x73d0, 0x0646,
-  0x73d1, 0x181f,
-  0x73d2, 0x3d28,
-  0x73d9, 0x1826,
-  0x73da, 0x3d2f,
-  0x73de, 0x182b,
-  0x73df, 0x3d33,
-  0x73e0, 0x11e8,
-  0x73e1, 0x3d34,
-  0x73e5, 0x1825,
-  0x73e6, 0x3d38,
-  0x73e7, 0x182a,
-  0x73e8, 0x3d39,
-  0x73e9, 0x1829,
-  0x73ea, 0x3d3a,
-  0x73ed, 0x03eb,
-  0x73ee, 0x3d3d,
-  0x73f2, 0x182d,
-  0x73f3, 0x3d41,
-  0x73fe, 0x21c0,
-  0x73ff, 0x3d4c,
-  0x7400, 0x3d4d,
-  0x7403, 0x0c6f,
-  0x7404, 0x3d50,
-  0x7405, 0x09b0,
-  0x7406, 0x09d8,
-  0x7407, 0x3d51,
-  0x7409, 0x0a39,
-  0x740a, 0x1828,
-  0x740b, 0x3d53,
-  0x740f, 0x182e,
-  0x7410, 0x0deb,
-  0x7411, 0x3d57,
-  0x741a, 0x1838,
-  0x741b, 0x1837,
-  0x741c, 0x3d60,
-  0x7422, 0x121e,
-  0x7423, 0x3d66,
-  0x7425, 0x1832,
-  0x7426, 0x1831,
-  0x7427, 0x3d68,
-  0x7428, 0x1833,
-  0x7429, 0x3d69,
-  0x742a, 0x182f,
-  0x742b, 0x3d6a,
-  0x742c, 0x1836,
-  0x742d, 0x3d6b,
-  0x742e, 0x1835,
-  0x742f, 0x3d6c,
-  0x7430, 0x1834,
-  0x7431, 0x3d6d,
-  0x7433, 0x0a1e,
-  0x7434, 0x0c56,
-  0x7435, 0x0bbe,
-  0x7436, 0x0b84,
-  0x7437, 0x3d6f,
-  0x743c, 0x0c6a,
-  0x743d, 0x3d74,
-  0x743f, 0x2460,
-  0x7440, 0x3d76,
-  0x7441, 0x1839,
-  0x7442, 0x3d77,
-  0x744b, 0x245c,
-  0x744c, 0x3d80,
-  0x7455, 0x183c,
-  0x7456, 0x3d89,
-  0x7457, 0x183b,
-  0x7458, 0x3d8a,
-  0x7459, 0x183d,
-  0x745a, 0x07ae,
-  0x745b, 0x1830,
-  0x745c, 0x183a,
-  0x745d, 0x3d8b,
-  0x745e, 0x0ccb,
-  0x745f, 0x0ce3,
-  0x7460, 0x3d8c,
-  0x7463, 0x215d,
-  0x7464, 0x3d8f,
-  0x7469, 0x2225,
-  0x746a, 0x206a,
-  0x746b, 0x3d94,
-  0x746d, 0x183f,
-  0x746e, 0x3d96,
-  0x7470, 0x073e,
-  0x7471, 0x3d98,
-  0x7476, 0x1027,
-  0x7477, 0x183e,
-  0x7478, 0x3d9d,
-  0x747e, 0x1840,
-  0x747f, 0x3da3,
-  0x7480, 0x1843,
-  0x7482, 0x3da4,
-  0x7483, 0x09f0,
-  0x7484, 0x3da5,
-  0x7487, 0x1845,
-  0x7488, 0x3da8,
-  0x7489, 0x2461,
-  0x748a, 0x3da9,
-  0x748b, 0x1846,
-  0x748c, 0x3daa,
-  0x748e, 0x1842,
-  0x748f, 0x3dac,
-  0x7490, 0x184a,
-  0x7491, 0x3dad,
-  0x749c, 0x1841,
-  0x749d, 0x3db8,
-  0x749e, 0x1847,
-  0x749f, 0x3db9,
-  0x74a3, 0x245b,
-  0x74a4, 0x3dbd,
-  0x74a6, 0x2462,
-  0x74a7, 0x184b,
-  0x74a8, 0x1848,
-  0x74aa, 0x3dbf,
-  0x74b0, 0x1f54,
-  0x74b1, 0x3dc5,
-  0x74ba, 0x184d,
-  0x74bb, 0x3dce,
-  0x74bd, 0x245f,
-  0x74be, 0x3dd0,
-  0x74ca, 0x20ec,
-  0x74cb, 0x3ddc,
-  0x74cf, 0x245d,
-  0x74d0, 0x3de0,
-  0x74d2, 0x184c,
-  0x74d3, 0x3de2,
-  0x74d4, 0x2463,
-  0x74d5, 0x3de3,
-  0x74da, 0x2464,
-  0x74db, 0x3de8,
-  0x74dc, 0x0728,
-  0x74dd, 0x3de9,
-  0x74de, 0x1b32,
-  0x74df, 0x3dea,
-  0x74e0, 0x1b33,
-  0x74e1, 0x3deb,
-  0x74e2, 0x0bcf,
-  0x74e3, 0x03f5,
-  0x74e4, 0x0c9a,
-  0x74e5, 0x3dec,
-  0x74e6, 0x0e90,
-  0x74e7, 0x3ded,
-  0x74ee, 0x0edc,
-  0x74ef, 0x1903,
-  0x74f0, 0x3df4,
-  0x74f4, 0x1904,
-  0x74f5, 0x3df8,
-  0x74f6, 0x0bde,
-  0x74f7, 0x054c,
-  0x74f8, 0x3df9,
-  0x74ff, 0x1905,
-  0x7500, 0x3e00,
-  0x7504, 0x1188,
-  0x7505, 0x3e04,
-  0x750c, 0x24a5,
-  0x750d, 0x1485,
-  0x750e, 0x3e0b,
-  0x750f, 0x1906,
-  0x7510, 0x3e0c,
-  0x7511, 0x1907,
-  0x7512, 0x3e0d,
-  0x7513, 0x1908,
-  0x7514, 0x3e0e,
-  0x7518, 0x06c5,
-  0x7519, 0x14f8,
-  0x751a, 0x0d2e,
-  0x751b, 0x3e12,
-  0x751c, 0x0e43,
-  0x751d, 0x3e13,
-  0x751f, 0x0d33,
-  0x7520, 0x3e15,
-  0x7523, 0x1e70,
-  0x7524, 0x3e18,
-  0x7525, 0x0d34,
-  0x7526, 0x3e19,
-  0x7528, 0x10a8,
-  0x7529, 0x0d9b,
-  0x752a, 0x3e1b,
-  0x752b, 0x06a1,
-  0x752c, 0x1b34,
-  0x752d, 0x042b,
-  0x752e, 0x3e1c,
-  0x752f, 0x1734,
-  0x7530, 0x0e42,
-  0x7531, 0x10ae,
-  0x7532, 0x084a,
-  0x7533, 0x0d23,
-  0x7534, 0x3e1d,
-  0x7535, 0x05c8,
-  0x7536, 0x3e1e,
-  0x7537, 0x0b33,
-  0x7538, 0x05ca,
-  0x7539, 0x3e1f,
-  0x753a, 0x1a78,
-  0x753b, 0x07c2,
-  0x753c, 0x3e20,
-  0x753e, 0x1816,
-  0x753f, 0x3e22,
-  0x7540, 0x1a79,
-  0x7541, 0x3e23,
-  0x7545, 0x04ce,
-  0x7546, 0x3e27,
-  0x7548, 0x1a7c,
-  0x7549, 0x3e29,
-  0x754b, 0x1a7b,
-  0x754c, 0x08b8,
-  0x754d, 0x3e2b,
-  0x754e, 0x1a7a,
-  0x754f, 0x0ec6,
-  0x7550, 0x3e2c,
-  0x7554, 0x0b90,
-  0x7555, 0x3e30,
-  0x7559, 0x0a3d,
-  0x755a, 0x139e,
-  0x755b, 0x1a7d,
-  0x755c, 0x0fbe,
-  0x755d, 0x208f,
-  0x755e, 0x3e34,
-  0x7562, 0x1e42,
-  0x7563, 0x3e38,
-  0x7565, 0x0a7b,
-  0x7566, 0x0c07,
-  0x7567, 0x3e3a,
-  0x756a, 0x0649,
-  0x756b, 0x1f4e,
-  0x756c, 0x3e3d,
-  0x7572, 0x1a7e,
-  0x7573, 0x3e43,
-  0x7574, 0x0510,
-  0x7575, 0x3e44,
-  0x7576, 0x1eb1,
-  0x7577, 0x3e45,
-  0x7578, 0x0810,
-  0x7579, 0x1a7f,
-  0x757a, 0x3e46,
-  0x757f, 0x1814,
-  0x7580, 0x3e4b,
-  0x7583, 0x1a80,
-  0x7584, 0x3e4e,
-  0x7586, 0x087f,
-  0x7587, 0x1e8b,
-  0x7588, 0x3e50,
-  0x758b, 0x1bc6,
-  0x758c, 0x3e53,
-  0x758f, 0x0d7f,
-  0x7590, 0x3e56,
-  0x7591, 0x1050,
-  0x7592, 0x1b60,
-  0x7593, 0x3e57,
-  0x7594, 0x1b61,
-  0x7595, 0x3e58,
-  0x7596, 0x1b62,
-  0x7597, 0x0a0f,
-  0x7598, 0x3e59,
-  0x7599, 0x06e8,
-  0x759a, 0x08fd,
-  0x759b, 0x3e5a,
-  0x759d, 0x1b64,
-  0x759e, 0x3e5c,
-  0x759f, 0x0b72,
-  0x75a0, 0x1b63,
-  0x75a1, 0x101a,
-  0x75a2, 0x3e5d,
-  0x75a3, 0x1b66,
-  0x75a4, 0x03d7,
-  0x75a5, 0x08bb,
-  0x75a6, 0x3e5e,
-  0x75ab, 0x1066,
-  0x75ac, 0x1b65,
-  0x75ad, 0x3e63,
-  0x75ae, 0x0532,
-  0x75af, 0x0685,
-  0x75b0, 0x1b6c,
-  0x75b1, 0x1b6b,
-  0x75b2, 0x0bc2,
-  0x75b3, 0x1b67,
-  0x75b5, 0x0546,
-  0x75b6, 0x3e64,
-  0x75b8, 0x1b69,
-  0x75b9, 0x118f,
-  0x75ba, 0x3e66,
-  0x75bc, 0x0e2e,
-  0x75bd, 0x0901,
-  0x75be, 0x0825,
-  0x75bf, 0x3e68,
-  0x75c2, 0x1b6e,
-  0x75c3, 0x1b6d,
-  0x75c4, 0x1b6a,
-  0x75c5, 0x0468,
-  0x75c6, 0x3e6b,
-  0x75c7, 0x11a1,
-  0x75c8, 0x109d,
-  0x75c9, 0x08e6,
-  0x75ca, 0x0c87,
-  0x75cb, 0x3e6c,
-  0x75cd, 0x1b70,
-  0x75ce, 0x3e6e,
-  0x75d2, 0x1020,
-  0x75d3, 0x3e72,
-  0x75d4, 0x11cb,
-  0x75d5, 0x0792,
-  0x75d6, 0x1b6f,
-  0x75d7, 0x3e73,
-  0x75d8, 0x05fa,
-  0x75d9, 0x1fc6,
-  0x75da, 0x3e74,
-  0x75db, 0x0e65,
-  0x75dc, 0x3e75,
-  0x75de, 0x0bc5,
-  0x75df, 0x3e77,
-  0x75e2, 0x09ea,
-  0x75e3, 0x1b71,
-  0x75e4, 0x1b74,
-  0x75e5, 0x3e7a,
-  0x75e6, 0x1b73,
-  0x75e7, 0x1b76,
-  0x75e8, 0x1b72,
-  0x75e9, 0x3e7b,
-  0x75ea, 0x07d3,
-  0x75eb, 0x1b75,
-  0x75ec, 0x3e7c,
-  0x75f0, 0x0e08,
-  0x75f1, 0x1b78,
-  0x75f2, 0x3e80,
-  0x75f4, 0x04fa,
-  0x75f5, 0x3e82,
-  0x75f9, 0x043d,
-  0x75fa, 0x3e86,
-  0x75fc, 0x1b79,
-  0x75fd, 0x3e88,
-  0x75ff, 0x1b7a,
-  0x7600, 0x1b7c,
-  0x7601, 0x0564,
-  0x7602, 0x25ae,
-  0x7603, 0x1b77,
-  0x7604, 0x3e8a,
-  0x7605, 0x1b7d,
-  0x7606, 0x3e8b,
-  0x760a, 0x1b80,
-  0x760b, 0x1f01,
-  0x760c, 0x1b7e,
-  0x760d, 0x2200,
-  0x760e, 0x3e8f,
-  0x7610, 0x1b7b,
-  0x7611, 0x3e91,
-  0x7615, 0x1b83,
-  0x7616, 0x3e95,
-  0x7617, 0x1b7f,
-  0x7618, 0x1b82,
-  0x7619, 0x1b84,
-  0x761a, 0x3e96,
-  0x761b, 0x1b85,
-  0x761c, 0x3e97,
-  0x761e, 0x25b2,
-  0x761f, 0x0ed0,
-  0x7620, 0x1b88,
-  0x7621, 0x1e97,
-  0x7622, 0x1b87,
-  0x7623, 0x3e99,
-  0x7624, 0x0a3f,
-  0x7625, 0x1b81,
-  0x7626, 0x0d74,
-  0x7627, 0x20ab,
-  0x7628, 0x3e9a,
-  0x7629, 0x0574,
-  0x762a, 0x045a,
-  0x762b, 0x0e04,
-  0x762c, 0x3e9b,
-  0x762d, 0x1b8a,
-  0x762e, 0x3e9c,
-  0x7630, 0x1b8b,
-  0x7631, 0x3e9e,
-  0x7633, 0x1b90,
-  0x7634, 0x116f,
-  0x7635, 0x1b8d,
-  0x7636, 0x3ea0,
-  0x7638, 0x0c8e,
-  0x7639, 0x3ea2,
-  0x763b, 0x25b3,
-  0x763c, 0x1b86,
-  0x763d, 0x3ea4,
-  0x763e, 0x1b8f,
-  0x763f, 0x1b8c,
-  0x7640, 0x1b89,
-  0x7641, 0x3ea5,
-  0x7642, 0x2028,
-  0x7643, 0x1b8e,
-  0x7644, 0x3ea6,
-  0x7646, 0x25af,
-  0x7648, 0x3ea8,
-  0x7649, 0x25b1,
-  0x764a, 0x3ea9,
-  0x764c, 0x03b4,
-  0x764d, 0x1b91,
-  0x764e, 0x3eab,
-  0x7654, 0x1b93,
-  0x7655, 0x3eb1,
-  0x7656, 0x1b95,
-  0x7657, 0x3eb2,
-  0x7658, 0x25ac,
-  0x7659, 0x3eb3,
-  0x765c, 0x1b94,
-  0x765d, 0x3eb6,
-  0x765e, 0x1b92,
-  0x765f, 0x1e4e,
-  0x7660, 0x3eb7,
-  0x7662, 0x2202,
-  0x7663, 0x0fcb,
-  0x7664, 0x25ab,
-  0x7665, 0x2286,
-  0x7666, 0x3eb9,
-  0x7667, 0x25ad,
-  0x7668, 0x3eba,
-  0x7669, 0x25b6,
-  0x766a, 0x3ebb,
-  0x766b, 0x1b96,
-  0x766c, 0x21e3,
-  0x766d, 0x25b4,
-  0x766f, 0x1b97,
-  0x7670, 0x222f,
-  0x7671, 0x2165,
-  0x7672, 0x25b7,
-  0x7673, 0x3ebc,
-  0x7678, 0x0748,
-  0x7679, 0x3ec1,
-  0x767b, 0x05a8,
-  0x767c, 0x1ee9,
-  0x767d, 0x03e2,
-  0x767e, 0x03e4,
-  0x767f, 0x3ec3,
-  0x7682, 0x1130,
-  0x7683, 0x3ec6,
-  0x7684, 0x05a5,
-  0x7685, 0x3ec7,
-  0x7686, 0x08a5,
-  0x7687, 0x07df,
-  0x7688, 0x1b2d,
-  0x7689, 0x3ec8,
-  0x768b, 0x06d9,
-  0x768c, 0x3eca,
-  0x768e, 0x1b2e,
-  0x768f, 0x3ecc,
-  0x7691, 0x03b3,
-  0x7692, 0x3ece,
-  0x7693, 0x1b2f,
-  0x7694, 0x3ecf,
-  0x7696, 0x0e9f,
-  0x7697, 0x3ed1,
-  0x7699, 0x1b30,
-  0x769a, 0x1e25,
-  0x769b, 0x3ed3,
-  0x76a4, 0x1b31,
-  0x76a5, 0x3edc,
-  0x76ae, 0x0bc3,
-  0x76af, 0x3ee5,
-  0x76b1, 0x11e4,
-  0x76b2, 0x1bc8,
-  0x76b3, 0x3ee7,
-  0x76b4, 0x1bc9,
-  0x76b5, 0x3ee8,
-  0x76b8, 0x25c0,
-  0x76b9, 0x3eeb,
-  0x76ba, 0x229a,
-  0x76bb, 0x3eec,
-  0x76bf, 0x0af8,
-  0x76c0, 0x3ef0,
-  0x76c2, 0x10c0,
-  0x76c3, 0x3ef2,
-  0x76c5, 0x11d0,
-  0x76c6, 0x0ba9,
-  0x76c7, 0x3ef4,
-  0x76c8, 0x1094,
-  0x76c9, 0x3ef5,
-  0x76ca, 0x106d,
-  0x76cb, 0x3ef6,
-  0x76cd, 0x1a8b,
-  0x76ce, 0x03c6,
-  0x76cf, 0x1156,
-  0x76d0, 0x0ff7,
-  0x76d1, 0x0853,
-  0x76d2, 0x0787,
-  0x76d3, 0x3ef8,
-  0x76d4, 0x0985,
-  0x76d5, 0x3ef9,
-  0x76d6, 0x06c2,
-  0x76d7, 0x05a2,
-  0x76d8, 0x0b8d,
-  0x76d9, 0x3efa,
-  0x76db, 0x0d39,
-  0x76dc, 0x3efc,
-  0x76de, 0x226e,
-  0x76df, 0x0ad0,
-  0x76e0, 0x3efe,
-  0x76e1, 0x1fbd,
-  0x76e2, 0x3eff,
-  0x76e3, 0x1f84,
-  0x76e4, 0x20b2,
-  0x76e5, 0x1a8c,
-  0x76e6, 0x3f00,
-  0x76e7, 0x2043,
-  0x76e8, 0x3f01,
-  0x76ee, 0x0b22,
-  0x76ef, 0x05e1,
-  0x76f0, 0x3f07,
-  0x76f1, 0x1a58,
-  0x76f2, 0x0aa9,
-  0x76f3, 0x3f08,
-  0x76f4, 0x11b0,
-  0x76f5, 0x3f09,
-  0x76f8, 0x0f4d,
-  0x76f9, 0x1a5b,
-  0x76fa, 0x3f0c,
-  0x76fc, 0x0b8f,
-  0x76fd, 0x3f0e,
-  0x76fe, 0x061b,
-  0x76ff, 0x3f0f,
-  0x7700, 0x3f10,
-  0x7701, 0x0d38,
-  0x7702, 0x3f11,
-  0x7704, 0x1a59,
-  0x7705, 0x3f13,
-  0x7707, 0x1a5c,
-  0x7709, 0x0ac1,
-  0x770a, 0x3f15,
-  0x770b, 0x0941,
-  0x770c, 0x3f16,
-  0x770d, 0x1a5a,
-  0x770e, 0x3f17,
-  0x7719, 0x1a60,
-  0x771a, 0x1a5e,
-  0x771b, 0x3f22,
-  0x771f, 0x1187,
-  0x7720, 0x0ae4,
-  0x7721, 0x3f26,
-  0x7722, 0x1a5f,
-  0x7723, 0x3f27,
-  0x7726, 0x1a62,
-  0x7727, 0x3f2a,
-  0x7728, 0x1144,
-  0x7729, 0x0fcc,
-  0x772a, 0x3f2b,
-  0x772d, 0x1a61,
-  0x772e, 0x3f2e,
-  0x772f, 0x0ad5,
-  0x7730, 0x3f2f,
-  0x7735, 0x1a63,
-  0x7736, 0x0981,
-  0x7737, 0x091b,
-  0x7738, 0x1a64,
-  0x7739, 0x3f34,
-  0x773a, 0x0e4a,
-  0x773b, 0x3f35,
-  0x773c, 0x1004,
-  0x773d, 0x3f36,
-  0x7740, 0x1222,
-  0x7741, 0x1197,
-  0x7742, 0x3f39,
-  0x7743, 0x1a68,
-  0x7744, 0x3f3a,
-  0x7747, 0x1a67,
-  0x7748, 0x3f3d,
-  0x774f, 0x2684,
-  0x7750, 0x1a65,
-  0x7752, 0x3f44,
-  0x775a, 0x1a69,
-  0x775b, 0x08d5,
-  0x775c, 0x3f4c,
-  0x775e, 0x24ef,
-  0x775f, 0x3f4e,
-  0x7761, 0x0da4,
-  0x7762, 0x1a6b,
-  0x7763, 0x05fc,
-  0x7764, 0x3f50,
-  0x7765, 0x1a6c,
-  0x7766, 0x0b23,
-  0x7767, 0x3f51,
-  0x7768, 0x1a6a,
-  0x7769, 0x3f52,
-  0x776b, 0x08af,
-  0x776c, 0x048e,
-  0x776d, 0x3f54,
-  0x7779, 0x0602,
-  0x777a, 0x3f60,
-  0x777d, 0x1a6f,
-  0x777e, 0x1270,
-  0x777f, 0x1a6d,
-  0x7780, 0x1a70,
-  0x7781, 0x3f63,
-  0x7784, 0x0aee,
-  0x7785, 0x0517,
-  0x7786, 0x3f66,
-  0x778c, 0x1a71,
-  0x778d, 0x1a6e,
-  0x778e, 0x0f26,
-  0x778f, 0x3f6c,
-  0x7791, 0x1a72,
-  0x7792, 0x0a9e,
-  0x7793, 0x3f6e,
-  0x7798, 0x24ee,
-  0x7799, 0x3f73,
-  0x779e, 0x2074,
-  0x779f, 0x1a73,
-  0x77a1, 0x3f78,
-  0x77a2, 0x1495,
-  0x77a3, 0x3f79,
-  0x77a5, 0x0bd2,
-  0x77a6, 0x3f7b,
-  0x77a7, 0x0c43,
-  0x77a8, 0x3f7c,
-  0x77a9, 0x11f4,
-  0x77aa, 0x05aa,
-  0x77ab, 0x3f7d,
-  0x77ac, 0x0da7,
-  0x77ad, 0x2687,
-  0x77ae, 0x3f7e,
-  0x77b0, 0x1a75,
-  0x77b1, 0x3f80,
-  0x77b3, 0x0e5c,
-  0x77b4, 0x3f82,
-  0x77b5, 0x1a76,
-  0x77b6, 0x3f83,
-  0x77bb, 0x1151,
-  0x77bc, 0x24f0,
-  0x77bd, 0x1a77,
-  0x77be, 0x3f88,
-  0x77bf, 0x1d7e,
-  0x77c0, 0x3f89,
-  0x77c7, 0x268d,
-  0x77c8, 0x3f90,
-  0x77cd, 0x1397,
-  0x77ce, 0x3f95,
-  0x77d7, 0x0526,
-  0x77d8, 0x3f9e,
-  0x77da, 0x22a0,
-  0x77db, 0x0ab1,
-  0x77dc, 0x1bca,
-  0x77dd, 0x3fa0,
-  0x77e2, 0x0d4f,
-  0x77e3, 0x105a,
-  0x77e4, 0x3fa5,
-  0x77e5, 0x11a9,
-  0x77e6, 0x3fa6,
-  0x77e7, 0x1b1a,
-  0x77e8, 0x3fa7,
-  0x77e9, 0x0907,
-  0x77ea, 0x3fa8,
-  0x77eb, 0x0894,
-  0x77ec, 0x1b1b,
-  0x77ed, 0x060b,
-  0x77ee, 0x03b6,
-  0x77ef, 0x1fab,
-  0x77f0, 0x3fa9,
-  0x77f3, 0x0d46,
-  0x77f4, 0x3fac,
-  0x77f6, 0x1a22,
-  0x77f7, 0x3fae,
-  0x77f8, 0x1a23,
-  0x77f9, 0x3faf,
-  0x77fd, 0x0f08,
-  0x77fe, 0x064c,
-  0x77ff, 0x0980,
-  0x7800, 0x1a24,
-  0x7801, 0x0a92,
-  0x7802, 0x0ce9,
-  0x7803, 0x3fb3,
-  0x7809, 0x1a25,
-  0x780a, 0x3fb9,
-  0x780c, 0x0c15,
-  0x780d, 0x0940,
-  0x780e, 0x3fbb,
-  0x7811, 0x1a28,
-  0x7812, 0x0bb9,
-  0x7813, 0x3fbe,
-  0x7814, 0x0ff9,
-  0x7815, 0x3fbf,
-  0x7816, 0x1206,
-  0x7817, 0x1a26,
-  0x7819, 0x3fc0,
-  0x781a, 0x100b,
-  0x781b, 0x3fc1,
-  0x781c, 0x1a2b,
-  0x781e, 0x3fc2,
-  0x781f, 0x1a30,
-  0x7820, 0x3fc3,
-  0x7823, 0x1a34,
-  0x7824, 0x3fc6,
-  0x7825, 0x1a32,
-  0x7826, 0x1a3a,
-  0x7827, 0x1189,
-  0x7828, 0x3fc7,
-  0x7829, 0x1a35,
-  0x782a, 0x3fc8,
-  0x782c, 0x1a33,
-  0x782d, 0x1a2a,
-  0x782e, 0x3fca,
-  0x7830, 0x0baa,
-  0x7831, 0x3fcc,
-  0x7834, 0x0be5,
-  0x7835, 0x3fcf,
-  0x7837, 0x0d22,
-  0x7838, 0x1115,
-  0x7839, 0x1a2d,
-  0x783c, 0x1a31,
-  0x783d, 0x3fd1,
-  0x783e, 0x09e4,
-  0x783f, 0x3fd2,
-  0x7840, 0x0524,
-  0x7841, 0x3fd3,
-  0x7843, 0x26a8,
-  0x7844, 0x3fd5,
-  0x7845, 0x0741,
-  0x7846, 0x3fd6,
-  0x7847, 0x1a3c,
-  0x7848, 0x3fd7,
-  0x784c, 0x1a3d,
-  0x784d, 0x3fdb,
-  0x784e, 0x1a36,
-  0x784f, 0x3fdc,
-  0x7850, 0x1a3b,
-  0x7851, 0x3fdd,
-  0x7852, 0x0f07,
-  0x7853, 0x3fde,
-  0x7855, 0x0dab,
-  0x7856, 0x1a38,
-  0x7858, 0x3fe0,
-  0x785d, 0x0f62,
-  0x785e, 0x3fe5,
-  0x7864, 0x24e9,
-  0x7865, 0x3feb,
-  0x7868, 0x24e5,
-  0x7869, 0x3fee,
-  0x786a, 0x1a3e,
-  0x786b, 0x0a3b,
-  0x786c, 0x1097,
-  0x786d, 0x1a37,
-  0x786e, 0x0c92,
-  0x786f, 0x21fa,
-  0x7870, 0x3fef,
-  0x7877, 0x0862,
-  0x7878, 0x3ff6,
-  0x787c, 0x0bb1,
-  0x787d, 0x3ffa,
-  0x7887, 0x1a42,
-  0x7888, 0x4004,
-  0x7889, 0x05d0,
-  0x788a, 0x4005,
-  0x788c, 0x0a5c,
-  0x788d, 0x03b8,
-  0x788e, 0x0dde,
-  0x788f, 0x4007,
-  0x7891, 0x0417,
-  0x7892, 0x4009,
-  0x7893, 0x1a40,
-  0x7894, 0x400a,
-  0x7897, 0x0e9c,
-  0x7898, 0x05c3,
-  0x7899, 0x400d,
-  0x789a, 0x1a41,
-  0x789b, 0x1a3f,
-  0x789c, 0x1a43,
-  0x789d, 0x400e,
-  0x789f, 0x05db,
-  0x78a0, 0x4010,
-  0x78a1, 0x1a44,
-  0x78a2, 0x4011,
-  0x78a3, 0x1a45,
-  0x78a4, 0x4012,
-  0x78a5, 0x1a48,
-  0x78a6, 0x4013,
-  0x78a7, 0x0435,
-  0x78a8, 0x4014,
-  0x78a9, 0x2148,
-  0x78aa, 0x4015,
-  0x78ad, 0x24e4,
-  0x78ae, 0x4018,
-  0x78b0, 0x0bb7,
-  0x78b1, 0x0861,
-  0x78b2, 0x1a46,
-  0x78b3, 0x0e0f,
-  0x78b4, 0x04b1,
-  0x78b5, 0x401a,
-  0x78b8, 0x24e6,
-  0x78b9, 0x1a47,
-  0x78ba, 0x20f7,
-  0x78bb, 0x401d,
-  0x78bc, 0x206b,
-  0x78bd, 0x401e,
-  0x78be, 0x0b4e,
-  0x78bf, 0x401f,
-  0x78c1, 0x0548,
-  0x78c2, 0x4021,
-  0x78c5, 0x0400,
-  0x78c6, 0x4024,
-  0x78c9, 0x1a4b,
-  0x78ca, 0x09c5,
-  0x78cb, 0x056b,
-  0x78cc, 0x4027,
-  0x78d0, 0x0b8e,
-  0x78d1, 0x402b,
-  0x78d4, 0x1a49,
-  0x78d5, 0x0951,
-  0x78d6, 0x402e,
-  0x78d9, 0x1a4a,
-  0x78da, 0x22a7,
-  0x78db, 0x4031,
-  0x78e3, 0x24ec,
-  0x78e4, 0x4039,
-  0x78e7, 0x24eb,
-  0x78e8, 0x0b08,
-  0x78e9, 0x403c,
-  0x78ec, 0x1a4c,
-  0x78ed, 0x403f,
-  0x78ef, 0x24e3,
-  0x78f0, 0x4041,
-  0x78f2, 0x1a4d,
-  0x78f3, 0x4043,
-  0x78f4, 0x1a4f,
-  0x78f5, 0x4044,
-  0x78f7, 0x0a20,
-  0x78f8, 0x4046,
-  0x78fa, 0x07dc,
-  0x78fb, 0x4048,
-  0x78fd, 0x24ea,
-  0x78fe, 0x404a,
-  0x7900, 0x404c,
-  0x7901, 0x0889,
-  0x7902, 0x404d,
-  0x7905, 0x1a4e,
-  0x7906, 0x4050,
-  0x790e, 0x1e92,
-  0x790f, 0x4058,
-  0x7913, 0x1a50,
-  0x7914, 0x405c,
-  0x7919, 0x1e27,
-  0x791a, 0x4061,
-  0x791e, 0x1a52,
-  0x791f, 0x4065,
-  0x7924, 0x1a51,
-  0x7925, 0x406a,
-  0x7926, 0x1fe6,
-  0x7927, 0x406b,
-  0x792a, 0x24e7,
-  0x792b, 0x2012,
-  0x792c, 0x1eec,
-  0x792d, 0x406e,
-  0x7931, 0x24e8,
-  0x7932, 0x4072,
-  0x7934, 0x1a53,
-  0x7935, 0x4074,
-  0x793a, 0x0d55,
-  0x793b, 0x19f8,
-  0x793c, 0x09dc,
-  0x793d, 0x4079,
-  0x793e, 0x0d20,
-  0x793f, 0x407a,
-  0x7940, 0x19f9,
-  0x7941, 0x0c0d,
-  0x7942, 0x407b,
-  0x7946, 0x19fa,
-  0x7947, 0x407f,
-  0x7948, 0x0c0c,
-  0x7949, 0x19fb,
-  0x794a, 0x4080,
-  0x7953, 0x19fe,
-  0x7954, 0x4089,
-  0x7956, 0x1243,
-  0x7957, 0x1a01,
-  0x7958, 0x408b,
-  0x795a, 0x19ff,
-  0x795b, 0x19fc,
-  0x795d, 0x1200,
-  0x795e, 0x0d2a,
-  0x795f, 0x0de3,
-  0x7960, 0x1a02,
-  0x7961, 0x408d,
-  0x7962, 0x1a00,
-  0x7963, 0x408e,
-  0x7965, 0x0f56,
-  0x7966, 0x4090,
-  0x7967, 0x1a04,
-  0x7968, 0x0bd0,
-  0x7969, 0x4091,
-  0x796d, 0x0833,
-  0x796e, 0x4095,
-  0x796f, 0x1a03,
-  0x7970, 0x4096,
-  0x7977, 0x059c,
-  0x7978, 0x080b,
-  0x7979, 0x409d,
-  0x797a, 0x1a05,
-  0x797b, 0x409e,
-  0x7980, 0x130b,
-  0x7981, 0x08cc,
-  0x7982, 0x40a3,
-  0x7984, 0x0a62,
-  0x7985, 0x1a06,
-  0x7986, 0x40a5,
-  0x798a, 0x1a07,
-  0x798b, 0x40a9,
-  0x798d, 0x1f66,
-  0x798e, 0x24dc,
-  0x798f, 0x069e,
-  0x7990, 0x40ab,
-  0x799a, 0x1a08,
-  0x799b, 0x40b5,
-  0x79a6, 0x26a2,
-  0x79a7, 0x1a09,
-  0x79a8, 0x40c0,
-  0x79aa, 0x24dd,
-  0x79ab, 0x40c2,
-  0x79ae, 0x200e,
-  0x79af, 0x40c5,
-  0x79b0, 0x24db,
-  0x79b1, 0x1eb8,
-  0x79b2, 0x40c6,
-  0x79b3, 0x1a0a,
-  0x79b4, 0x40c7,
-  0x79b9, 0x10d2,
-  0x79ba, 0x1264,
-  0x79bb, 0x09d6,
-  0x79bc, 0x40cc,
-  0x79bd, 0x0c5a,
-  0x79be, 0x0783,
-  0x79bf, 0x40cd,
-  0x79c0, 0x0fae,
-  0x79c1, 0x0db2,
-  0x79c2, 0x40ce,
-  0x79c3, 0x0e6b,
-  0x79c4, 0x40cf,
-  0x79c6, 0x06cc,
-  0x79c7, 0x40d1,
-  0x79c9, 0x0465,
-  0x79ca, 0x40d3,
-  0x79cb, 0x0c6c,
-  0x79cc, 0x40d4,
-  0x79cd, 0x11d5,
-  0x79ce, 0x40d5,
-  0x79d1, 0x0953,
-  0x79d2, 0x0af0,
-  0x79d3, 0x40d8,
-  0x79d5, 0x1b1d,
-  0x79d6, 0x40da,
-  0x79d8, 0x0add,
-  0x79d9, 0x40dc,
-  0x79df, 0x123f,
-  0x79e0, 0x40e2,
-  0x79e3, 0x1b1f,
-  0x79e4, 0x04f8,
-  0x79e5, 0x40e5,
-  0x79e6, 0x0c55,
-  0x79e7, 0x1016,
-  0x79e8, 0x40e6,
-  0x79e9, 0x11c7,
-  0x79ea, 0x40e7,
-  0x79eb, 0x1b20,
-  0x79ec, 0x40e8,
-  0x79ed, 0x1b1e,
-  0x79ee, 0x40e9,
-  0x79ef, 0x0812,
-  0x79f0, 0x04eb,
-  0x79f1, 0x40ea,
-  0x79f8, 0x08a6,
-  0x79f9, 0x40f1,
-  0x79fb, 0x104d,
-  0x79fc, 0x40f3,
-  0x79fd, 0x07f5,
-  0x79fe, 0x40f4,
-  0x7a00, 0x0f0e,
-  0x7a01, 0x40f6,
-  0x7a02, 0x1b24,
-  0x7a03, 0x1b23,
-  0x7a04, 0x40f7,
-  0x7a06, 0x1b21,
-  0x7a07, 0x40f9,
-  0x7a0b, 0x04f1,
-  0x7a0c, 0x40fd,
-  0x7a0d, 0x0d0d,
-  0x7a0e, 0x0da5,
-  0x7a0f, 0x40fe,
-  0x7a14, 0x1b26,
-  0x7a15, 0x4103,
-  0x7a17, 0x03e9,
-  0x7a18, 0x4105,
-  0x7a1a, 0x11c8,
-  0x7a1b, 0x4107,
-  0x7a1e, 0x1b25,
-  0x7a1f, 0x410a,
-  0x7a20, 0x0512,
-  0x7a21, 0x410b,
-  0x7a23, 0x1d8f,
-  0x7a24, 0x410d,
-  0x7a2e, 0x2295,
-  0x7a2f, 0x4117,
-  0x7a31, 0x1e80,
-  0x7a32, 0x4119,
-  0x7a33, 0x0ed7,
-  0x7a34, 0x411a,
-  0x7a37, 0x1b28,
-  0x7a38, 0x411d,
-  0x7a39, 0x1b27,
-  0x7a3a, 0x411e,
-  0x7a3b, 0x059f,
-  0x7a3c, 0x084d,
-  0x7a3d, 0x0811,
-  0x7a3e, 0x411f,
-  0x7a3f, 0x06e0,
-  0x7a40, 0x2677,
-  0x7a41, 0x4120,
-  0x7a46, 0x0b25,
-  0x7a47, 0x4125,
-  0x7a4c, 0x2624,
-  0x7a4d, 0x1f69,
-  0x7a4e, 0x222b,
-  0x7a4f, 0x412a,
-  0x7a51, 0x1b29,
-  0x7a52, 0x412c,
-  0x7a57, 0x0de0,
-  0x7a58, 0x4131,
-  0x7a61, 0x257f,
-  0x7a62, 0x1f5b,
-  0x7a63, 0x413a,
-  0x7a69, 0x219b,
-  0x7a6a, 0x4140,
-  0x7a6b, 0x267d,
-  0x7a6c, 0x4141,
-  0x7a70, 0x1b2c,
-  0x7a71, 0x4145,
-  0x7a74, 0x0fd1,
-  0x7a75, 0x4148,
-  0x7a76, 0x08ee,
-  0x7a77, 0x0c6b,
-  0x7a78, 0x1b9a,
-  0x7a7a, 0x0962,
-  0x7a7b, 0x4149,
-  0x7a7f, 0x052c,
-  0x7a80, 0x1b9c,
-  0x7a81, 0x0e6c,
-  0x7a82, 0x414d,
-  0x7a83, 0x0c51,
-  0x7a84, 0x114e,
-  0x7a85, 0x414e,
-  0x7a86, 0x1b9d,
-  0x7a87, 0x414f,
-  0x7a88, 0x1b9e,
-  0x7a89, 0x4150,
-  0x7a8d, 0x0c4c,
-  0x7a8e, 0x4154,
-  0x7a91, 0x102b,
-  0x7a92, 0x11ce,
-  0x7a93, 0x4157,
-  0x7a95, 0x1b9f,
-  0x7a96, 0x08a2,
-  0x7a97, 0x0533,
-  0x7a98, 0x08ec,
-  0x7a99, 0x4159,
-  0x7a9c, 0x055f,
-  0x7a9d, 0x0ee0,
-  0x7a9e, 0x415c,
-  0x7a9f, 0x096c,
-  0x7aa0, 0x1ba1,
-  0x7aa1, 0x415d,
-  0x7aa5, 0x0987,
-  0x7aa6, 0x1ba0,
-  0x7aa7, 0x4161,
-  0x7aa8, 0x1ba3,
-  0x7aa9, 0x21a0,
-  0x7aaa, 0x2186,
-  0x7aab, 0x4162,
-  0x7aac, 0x1ba2,
-  0x7aad, 0x1ba4,
-  0x7aae, 0x20ed,
-  0x7aaf, 0x4163,
-  0x7ab3, 0x1ba5,
-  0x7ab4, 0x4167,
-  0x7ab6, 0x25b9,
-  0x7ab7, 0x4169,
-  0x7aba, 0x1fea,
-  0x7abb, 0x416c,
-  0x7abf, 0x0a47,
-  0x7ac0, 0x4170,
-  0x7ac4, 0x1ea4,
-  0x7ac5, 0x20e1,
-  0x7ac6, 0x4174,
-  0x7ac7, 0x25b8,
-  0x7ac8, 0x2260,
-  0x7ac9, 0x4175,
-  0x7aca, 0x20e2,
-  0x7acb, 0x09eb,
-  0x7acc, 0x4176,
-  0x7ad6, 0x0d91,
-  0x7ad7, 0x4180,
-  0x7ad9, 0x115f,
-  0x7ada, 0x4182,
-  0x7ade, 0x08e9,
-  0x7adf, 0x08e8,
-  0x7ae0, 0x1163,
-  0x7ae1, 0x4186,
-  0x7ae3, 0x092f,
-  0x7ae4, 0x4188,
-  0x7ae5, 0x0e60,
-  0x7ae6, 0x1b99,
-  0x7ae7, 0x4189,
-  0x7aea, 0x2141,
-  0x7aeb, 0x418c,
-  0x7aed, 0x08b0,
-  0x7aee, 0x418e,
-  0x7aef, 0x060a,
-  0x7af0, 0x418f,
-  0x7af6, 0x1fc7,
-  0x7af7, 0x4195,
-  0x7af9, 0x11f0,
-  0x7afa, 0x1c63,
-  0x7afb, 0x4197,
-  0x7afd, 0x1c64,
-  0x7afe, 0x4199,
-  0x7aff, 0x06c8,
-  0x7b00, 0x419a,
-  0x7b03, 0x1c66,
-  0x7b05, 0x419d,
-  0x7b06, 0x03d5,
-  0x7b07, 0x419e,
-  0x7b08, 0x1c65,
-  0x7b09, 0x419f,
-  0x7b0a, 0x1c69,
-  0x7b0b, 0x0de6,
-  0x7b0c, 0x41a0,
-  0x7b0f, 0x1c6b,
-  0x7b10, 0x41a3,
-  0x7b11, 0x0f71,
-  0x7b12, 0x41a4,
-  0x7b14, 0x0433,
-  0x7b15, 0x1c68,
-  0x7b16, 0x41a6,
-  0x7b19, 0x1c6f,
-  0x7b1a, 0x41a9,
-  0x7b1b, 0x05b2,
-  0x7b1c, 0x41aa,
-  0x7b1e, 0x1c77,
-  0x7b1f, 0x41ac,
-  0x7b20, 0x1c72,
-  0x7b21, 0x41ad,
-  0x7b24, 0x1c74,
-  0x7b25, 0x1c73,
-  0x7b26, 0x0698,
-  0x7b27, 0x41b0,
-  0x7b28, 0x0428,
-  0x7b29, 0x41b1,
-  0x7b2a, 0x1c6e,
-  0x7b2b, 0x1c6a,
-  0x7b2c, 0x05bb,
-  0x7b2d, 0x41b2,
-  0x7b2e, 0x1c70,
-  0x7b2f, 0x41b3,
-  0x7b31, 0x1c71,
-  0x7b32, 0x41b5,
-  0x7b33, 0x1c75,
-  0x7b34, 0x41b6,
-  0x7b38, 0x1c6d,
-  0x7b39, 0x41ba,
-  0x7b3a, 0x0856,
-  0x7b3b, 0x41bb,
-  0x7b3c, 0x0a46,
-  0x7b3d, 0x41bc,
-  0x7b3e, 0x1c76,
-  0x7b3f, 0x41bd,
-  0x7b45, 0x1c7a,
-  0x7b46, 0x1e41,
-  0x7b47, 0x1c6c,
-  0x7b48, 0x41c3,
-  0x7b49, 0x05a9,
-  0x7b4a, 0x41c4,
-  0x7b4b, 0x08bf,
-  0x7b4c, 0x1c7c,
-  0x7b4d, 0x41c5,
-  0x7b4f, 0x0641,
-  0x7b50, 0x097d,
-  0x7b51, 0x11fd,
-  0x7b52, 0x0e63,
-  0x7b53, 0x41c7,
-  0x7b54, 0x0573,
-  0x7b55, 0x41c8,
-  0x7b56, 0x04a6,
-  0x7b57, 0x41c9,
-  0x7b58, 0x1c78,
-  0x7b59, 0x41ca,
-  0x7b5a, 0x1c79,
-  0x7b5b, 0x0cf1,
-  0x7b5c, 0x41cb,
-  0x7b5d, 0x1c7d,
-  0x7b5e, 0x41cc,
-  0x7b60, 0x1c7e,
-  0x7b61, 0x41ce,
-  0x7b62, 0x1c81,
-  0x7b63, 0x41cf,
-  0x7b67, 0x25e4,
-  0x7b68, 0x41d3,
-  0x7b6e, 0x1c7f,
-  0x7b6f, 0x41d9,
-  0x7b71, 0x1c83,
-  0x7b72, 0x1c82,
-  0x7b73, 0x41db,
-  0x7b75, 0x1c7b,
-  0x7b76, 0x41dd,
-  0x7b77, 0x0977,
-  0x7b78, 0x41de,
-  0x7b79, 0x0514,
-  0x7b7a, 0x41df,
-  0x7b7b, 0x1c80,
-  0x7b7c, 0x41e0,
-  0x7b7e, 0x0c26,
-  0x7b7f, 0x41e2,
-  0x7b80, 0x0865,
-  0x7b81, 0x41e3,
-  0x7b85, 0x1c8b,
-  0x7b86, 0x41e7,
-  0x7b8b, 0x1f86,
-  0x7b8c, 0x41ec,
-  0x7b8d, 0x0718,
-  0x7b8e, 0x41ed,
-  0x7b90, 0x1c84,
-  0x7b91, 0x41ef,
-  0x7b94, 0x0474,
-  0x7b95, 0x0813,
-  0x7b96, 0x41f2,
-  0x7b97, 0x0dd8,
-  0x7b98, 0x41f3,
-  0x7b9c, 0x1c8d,
-  0x7b9d, 0x1c89,
-  0x7b9e, 0x41f7,
-  0x7ba1, 0x0735,
-  0x7ba2, 0x1c8e,
-  0x7ba3, 0x41fa,
-  0x7ba6, 0x1c85,
-  0x7ba8, 0x1c8a,
-  0x7ba9, 0x0a88,
-  0x7baa, 0x1c8c,
-  0x7bab, 0x1c8f,
-  0x7bac, 0x1c88,
-  0x7bad, 0x0870,
-  0x7bae, 0x41fd,
-  0x7bb1, 0x0f51,
-  0x7bb2, 0x4200,
-  0x7bb4, 0x1c90,
-  0x7bb5, 0x4202,
-  0x7bb8, 0x1c87,
-  0x7bb9, 0x4205,
-  0x7bc0, 0x1fb3,
-  0x7bc1, 0x1c92,
-  0x7bc2, 0x420c,
-  0x7bc4, 0x1eef,
-  0x7bc5, 0x420e,
-  0x7bc6, 0x120a,
-  0x7bc7, 0x0bc9,
-  0x7bc8, 0x420f,
-  0x7bc9, 0x22a4,
-  0x7bca, 0x4210,
-  0x7bcb, 0x25e8,
-  0x7bcc, 0x1c93,
-  0x7bcd, 0x4211,
-  0x7bd1, 0x1c91,
-  0x7bd2, 0x4215,
-  0x7bd3, 0x0a4f,
-  0x7bd4, 0x4216,
-  0x7bd9, 0x06d8,
-  0x7bda, 0x1c95,
-  0x7bdb, 0x421b,
-  0x7bdd, 0x1c94,
-  0x7bde, 0x421d,
-  0x7be1, 0x055e,
-  0x7be2, 0x4220,
-  0x7be4, 0x25e3,
-  0x7be5, 0x1c96,
-  0x7be7, 0x4222,
-  0x7be9, 0x2111,
-  0x7bea, 0x1c98,
-  0x7beb, 0x4224,
-  0x7bee, 0x09a5,
-  0x7bef, 0x4227,
-  0x7bf1, 0x09d4,
-  0x7bf2, 0x4229,
-  0x7bf3, 0x25e6,
-  0x7bf4, 0x422a,
-  0x7bf7, 0x0bb2,
-  0x7bf8, 0x422d,
-  0x7bfc, 0x1c9b,
-  0x7bfd, 0x4231,
-  0x7bfe, 0x1c9a,
-  0x7bff, 0x4232,
-  0x7c00, 0x25e7,
-  0x7c01, 0x4233,
-  0x7c07, 0x055b,
-  0x7c08, 0x4239,
-  0x7c0b, 0x1c9e,
-  0x7c0c, 0x1c99,
-  0x7c0d, 0x2041,
-  0x7c0e, 0x423c,
-  0x7c0f, 0x1c9c,
-  0x7c10, 0x423d,
-  0x7c16, 0x1c9d,
-  0x7c17, 0x4243,
-  0x7c1e, 0x25ea,
-  0x7c1f, 0x1c9f,
-  0x7c20, 0x424a,
-  0x7c21, 0x1f8f,
-  0x7c22, 0x424b,
-  0x7c23, 0x25ec,
-  0x7c24, 0x424c,
-  0x7c26, 0x1ca1,
-  0x7c27, 0x07de,
-  0x7c28, 0x424e,
-  0x7c2a, 0x1ca0,
-  0x7c2b, 0x25eb,
-  0x7c2c, 0x4250,
-  0x7c38, 0x1ca2,
-  0x7c39, 0x425c,
-  0x7c3d, 0x20d0,
-  0x7c3e, 0x201d,
-  0x7c3f, 0x0485,
-  0x7c40, 0x1ca4,
-  0x7c41, 0x1ca3,
-  0x7c42, 0x4260,
-  0x7c43, 0x1ff7,
-  0x7c44, 0x4261,
-  0x7c4c, 0x1e8d,
-  0x7c4d, 0x0821,
-  0x7c4e, 0x4269,
-  0x7c5c, 0x25e9,
-  0x7c5d, 0x4277,
-  0x7c5f, 0x25ee,
-  0x7c60, 0x203a,
-  0x7c61, 0x4279,
-  0x7c64, 0x2693,
-  0x7c65, 0x427c,
-  0x7c69, 0x25e5,
-  0x7c6a, 0x25ed,
-  0x7c6b, 0x4280,
-  0x7c6c, 0x2009,
-  0x7c6d, 0x4281,
-  0x7c6e, 0x2065,
-  0x7c6f, 0x4282,
-  0x7c72, 0x26a3,
-  0x7c73, 0x0adc,
-  0x7c74, 0x12f5,
-  0x7c75, 0x4285,
-  0x7c7b, 0x09cb,
-  0x7c7c, 0x1cca,
-  0x7c7d, 0x122e,
-  0x7c7e, 0x428b,
-  0x7c89, 0x0678,
-  0x7c8a, 0x4296,
-  0x7c91, 0x1ccc,
-  0x7c92, 0x09ec,
-  0x7c93, 0x429d,
-  0x7c95, 0x0be8,
-  0x7c96, 0x429f,
-  0x7c97, 0x0559,
-  0x7c98, 0x1154,
-  0x7c99, 0x42a0,
-  0x7c9c, 0x1cce,
-  0x7c9d, 0x1ccd,
-  0x7c9e, 0x1ccf,
-  0x7c9f, 0x0dcf,
-  0x7ca0, 0x42a3,
-  0x7ca2, 0x1cd0,
-  0x7ca3, 0x42a5,
-  0x7ca4, 0x1104,
-  0x7ca5, 0x11df,
-  0x7ca6, 0x42a6,
-  0x7caa, 0x067d,
-  0x7cab, 0x42aa,
-  0x7cae, 0x0a01,
-  0x7caf, 0x42ad,
-  0x7cb1, 0x0a04,
-  0x7cb2, 0x1cd1,
-  0x7cb3, 0x08db,
-  0x7cb4, 0x42af,
-  0x7cb9, 0x0565,
-  0x7cba, 0x42b4,
-  0x7cbc, 0x1cd2,
-  0x7cbe, 0x08da,
-  0x7cbf, 0x42b6,
-  0x7cc1, 0x1cd4,
-  0x7cc2, 0x42b8,
-  0x7cc5, 0x1cd9,
-  0x7cc6, 0x42bb,
-  0x7cc7, 0x1cd5,
-  0x7cc8, 0x1cd8,
-  0x7cc9, 0x42bc,
-  0x7cca, 0x07b4,
-  0x7ccb, 0x42bd,
-  0x7ccc, 0x1cd6,
-  0x7cce, 0x42be,
-  0x7cd5, 0x06dd,
-  0x7cd6, 0x0e1a,
-  0x7cd7, 0x1cda,
-  0x7cd8, 0x42c5,
-  0x7cd9, 0x04a1,
-  0x7cda, 0x42c6,
-  0x7cdc, 0x0ad8,
-  0x7cdd, 0x25f5,
-  0x7cde, 0x1efc,
-  0x7cdf, 0x1126,
-  0x7ce0, 0x0944,
-  0x7ce1, 0x42c8,
-  0x7ce7, 0x2024,
-  0x7ce8, 0x1cdb,
-  0x7ce9, 0x42ce,
-  0x7cef, 0x0b75,
-  0x7cf0, 0x269b,
-  0x7cf1, 0x42d4,
-  0x7cf2, 0x25f3,
-  0x7cf3, 0x42d5,
-  0x7cf4, 0x22d9,
-  0x7cf5, 0x42d6,
-  0x7cf6, 0x25f4,
-  0x7cf7, 0x42d7,
-  0x7cf8, 0x1ce7,
-  0x7cf9, 0x241b,
-  0x7cfa, 0x42d8,
-  0x7cfb, 0x0f22,
-  0x7cfc, 0x42d9,
-  0x7cfe, 0x1fc8,
-  0x7cff, 0x42db,
-  0x7d00, 0x1f7b,
-  0x7d01, 0x42dc,
-  0x7d02, 0x241d,
-  0x7d03, 0x42dd,
-  0x7d04, 0x224c,
-  0x7d05, 0x1f48,
-  0x7d06, 0x241c,
-  0x7d07, 0x241e,
-  0x7d09, 0x20ff,
-  0x7d0a, 0x0ed8,
-  0x7d0b, 0x219a,
-  0x7d0c, 0x42de,
-  0x7d0d, 0x2091,
-  0x7d0e, 0x42df,
-  0x7d10, 0x20a7,
-  0x7d11, 0x42e1,
-  0x7d13, 0x2423,
-  0x7d14, 0x1e9b,
-  0x7d15, 0x2422,
-  0x7d16, 0x42e3,
-  0x7d17, 0x2110,
-  0x7d18, 0x42e4,
-  0x7d19, 0x228d,
-  0x7d1a, 0x1f71,
-  0x7d1b, 0x1ef8,
-  0x7d1c, 0x2421,
-  0x7d1d, 0x42e5,
-  0x7d20, 0x0dcd,
-  0x7d21, 0x1ef3,
-  0x7d22, 0x0dec,
-  0x7d23, 0x42e8,
-  0x7d27, 0x08c5,
-  0x7d28, 0x42ec,
-  0x7d2b, 0x122c,
-  0x7d2c, 0x42ef,
-  0x7d2f, 0x09c6,
-  0x7d30, 0x21b1,
-  0x7d31, 0x2426,
-  0x7d32, 0x2425,
-  0x7d33, 0x2120,
-  0x7d34, 0x42f2,
-  0x7d39, 0x211a,
-  0x7d3a, 0x2424,
-  0x7d3b, 0x42f7,
-  0x7d3c, 0x2428,
-  0x7d3d, 0x42f8,
-  0x7d3f, 0x242a,
-  0x7d40, 0x2429,
-  0x7d41, 0x42fa,
-  0x7d42, 0x2294,
-  0x7d43, 0x42fb,
-  0x7d44, 0x22be,
-  0x7d45, 0x42fc,
-  0x7d46, 0x1e31,
-  0x7d47, 0x42fd,
-  0x7d4e, 0x242c,
-  0x7d4f, 0x4304,
-  0x7d50, 0x1fb5,
-  0x7d51, 0x4305,
-  0x7d5d, 0x242b,
-  0x7d5e, 0x1faf,
-  0x7d5f, 0x4311,
-  0x7d61, 0x2068,
-  0x7d62, 0x21e4,
-  0x7d63, 0x4313,
-  0x7d66, 0x1f21,
-  0x7d67, 0x4316,
-  0x7d68, 0x2101,
-  0x7d69, 0x4317,
-  0x7d6e, 0x0fc0,
-  0x7d6f, 0x431c,
-  0x7d71, 0x217c,
-  0x7d72, 0x214a,
-  0x7d73, 0x242d,
-  0x7d74, 0x431e,
-  0x7d76, 0x1fd4,
-  0x7d77, 0x1ce8,
-  0x7d78, 0x4320,
-  0x7d79, 0x1fd1,
-  0x7d7a, 0x4321,
-  0x7d81, 0x1e33,
-  0x7d82, 0x4328,
-  0x7d83, 0x242f,
-  0x7d84, 0x4329,
-  0x7d86, 0x242e,
-  0x7d87, 0x432b,
-  0x7d88, 0x2430,
-  0x7d89, 0x21db,
-  0x7d8a, 0x432c,
-  0x7d8f, 0x2158,
-  0x7d90, 0x4331,
-  0x7d93, 0x1fc2,
-  0x7d94, 0x4334,
-  0x7d9c, 0x22b9,
-  0x7d9d, 0x433c,
-  0x7d9e, 0x2436,
-  0x7d9f, 0x433d,
-  0x7da2, 0x1e8e,
-  0x7da3, 0x2439,
-  0x7da4, 0x4340,
-  0x7da6, 0x1ce9,
-  0x7da7, 0x4342,
-  0x7dab, 0x21c5,
-  0x7dac, 0x2437,
-  0x7dad, 0x2192,
-  0x7dae, 0x1cea,
-  0x7daf, 0x4346,
-  0x7db0, 0x243a,
-  0x7db1, 0x1f19,
-  0x7db2, 0x218c,
-  0x7db3, 0x1e40,
-  0x7db4, 0x22b3,
-  0x7db5, 0x4347,
-  0x7db8, 0x205f,
-  0x7db9, 0x2438,
-  0x7dba, 0x2432,
-  0x7dbb, 0x2274,
-  0x7dbc, 0x434a,
-  0x7dbd, 0x1e9c,
-  0x7dbe, 0x2431,
-  0x7dbf, 0x2085,
-  0x7dc0, 0x434b,
-  0x7dc4, 0x2435,
-  0x7dc5, 0x434f,
-  0x7dc7, 0x243b,
-  0x7dc8, 0x4351,
-  0x7dca, 0x1fb7,
-  0x7dcb, 0x2433,
-  0x7dcc, 0x4353,
-  0x7dd1, 0x2054,
-  0x7dd2, 0x21de,
-  0x7dd3, 0x4358,
-  0x7dd4, 0x2434,
-  0x7dd5, 0x4359,
-  0x7dd7, 0x243d,
-  0x7dd8, 0x1f89,
-  0x7dd9, 0x243c,
-  0x7dda, 0x435b,
-  0x7ddd, 0x1f6e,
-  0x7dde, 0x1ed8,
-  0x7ddf, 0x435e,
-  0x7de0, 0x1ebf,
-  0x7de1, 0x2445,
-  0x7de2, 0x435f,
-  0x7de3, 0x2249,
-  0x7de4, 0x4360,
-  0x7de6, 0x2441,
-  0x7de7, 0x4362,
-  0x7de8, 0x1e47,
-  0x7de9, 0x1f56,
-  0x7dea, 0x4363,
-  0x7dec, 0x2086,
-  0x7ded, 0x4365,
-  0x7def, 0x2196,
-  0x7df0, 0x4367,
-  0x7df1, 0x2443,
-  0x7df2, 0x243f,
-  0x7df3, 0x4368,
-  0x7df4, 0x2023,
-  0x7df5, 0x4369,
-  0x7df6, 0x2442,
-  0x7df7, 0x436a,
-  0x7df9, 0x243e,
-  0x7dfa, 0x436c,
-  0x7dfb, 0x26a6,
-  0x7dfc, 0x436d,
-  0x7e00, 0x4371,
-  0x7e08, 0x234e,
-  0x7e09, 0x2446,
-  0x7e0a, 0x244b,
-  0x7e0b, 0x2444,
-  0x7e0c, 0x4379,
-  0x7e10, 0x2427,
-  0x7e11, 0x244c,
-  0x7e12, 0x437d,
-  0x7e1b, 0x1f0f,
-  0x7e1c, 0x4386,
-  0x7e1d, 0x2447,
-  0x7e1e, 0x2449,
-  0x7e1f, 0x2448,
-  0x7e20, 0x4387,
-  0x7e23, 0x21c2,
-  0x7e24, 0x438a,
-  0x7e27, 0x216e,
-  0x7e28, 0x438d,
-  0x7e2b, 0x1f03,
-  0x7e2c, 0x4390,
-  0x7e2d, 0x244a,
-  0x7e2e, 0x215c,
-  0x7e2f, 0x4391,
-  0x7e31, 0x22bb,
-  0x7e32, 0x2450,
-  0x7e33, 0x4393,
-  0x7e34, 0x2694,
-  0x7e35, 0x244f,
-  0x7e36, 0x25f6,
-  0x7e37, 0x2051,
-  0x7e38, 0x4394,
-  0x7e39, 0x244e,
-  0x7e3a, 0x4395,
-  0x7e3b, 0x1dfb,
-  0x7e3c, 0x4396,
-  0x7e3d, 0x22ba,
-  0x7e3e, 0x1f6d,
-  0x7e3f, 0x4397,
-  0x7e41, 0x064e,
-  0x7e42, 0x4399,
-  0x7e45, 0x2452,
-  0x7e46, 0x2451,
-  0x7e47, 0x1ceb,
-  0x7e48, 0x439c,
-  0x7e52, 0x2455,
-  0x7e53, 0x43a6,
-  0x7e54, 0x2289,
-  0x7e55, 0x2116,
-  0x7e56, 0x43a7,
-  0x7e5a, 0x2454,
-  0x7e5b, 0x43ab,
-  0x7e5e, 0x20fb,
-  0x7e5f, 0x43ae,
-  0x7e62, 0x2440,
-  0x7e63, 0x43b1,
-  0x7e69, 0x2126,
-  0x7e6a, 0x1f61,
-  0x7e6b, 0x269d,
-  0x7e6c, 0x43b7,
-  0x7e6d, 0x1f8a,
-  0x7e6e, 0x2456,
-  0x7e6f, 0x2459,
-  0x7e70, 0x2458,
-  0x7e71, 0x43b8,
-  0x7e73, 0x1fae,
-  0x7e74, 0x43ba,
-  0x7e79, 0x221a,
-  0x7e7a, 0x43bf,
-  0x7e7c, 0x1f7a,
-  0x7e7d, 0x244d,
-  0x7e7e, 0x2457,
-  0x7e7f, 0x43c1,
-  0x7e82, 0x1248,
-  0x7e83, 0x43c4,
-  0x7e88, 0x2453,
-  0x7e89, 0x43c9,
-  0x7e8a, 0x2420,
-  0x7e8b, 0x43ca,
-  0x7e8c, 0x21df,
-  0x7e8d, 0x2685,
-  0x7e8e, 0x43cb,
-  0x7e8f, 0x1e6e,
-  0x7e90, 0x43cc,
-  0x7e93, 0x2224,
-  0x7e94, 0x2670,
-  0x7e95, 0x43cf,
-  0x7e96, 0x21ba,
-  0x7e97, 0x43d0,
-  0x7e98, 0x245a,
-  0x7e99, 0x43d1,
-  0x7e9b, 0x1cec,
-  0x7e9c, 0x1fff,
-  0x7e9d, 0x43d3,
-  0x7e9f, 0x17d3,
-  0x7ea0, 0x08ef,
-  0x7ea1, 0x17d4,
-  0x7ea2, 0x07a3,
-  0x7ea3, 0x17d5,
-  0x7ea4, 0x0f38,
-  0x7ea5, 0x17d6,
-  0x7ea6, 0x10ff,
-  0x7ea7, 0x0829,
-  0x7ea8, 0x17d7,
-  0x7eaa, 0x0840,
-  0x7eab, 0x0cad,
-  0x7eac, 0x0ec2,
-  0x7ead, 0x17d9,
-  0x7eae, 0x43d5,
-  0x7eaf, 0x0542,
-  0x7eb0, 0x17da,
-  0x7eb1, 0x0ced,
-  0x7eb2, 0x06d4,
-  0x7eb3, 0x0b2c,
-  0x7eb4, 0x43d6,
-  0x7eb5, 0x123a,
-  0x7eb6, 0x0a81,
-  0x7eb7, 0x0674,
-  0x7eb8, 0x11bc,
-  0x7eb9, 0x0ed5,
-  0x7eba, 0x0661,
-  0x7ebb, 0x43d7,
-  0x7ebd, 0x0b67,
-  0x7ebe, 0x17db,
-  0x7ebf, 0x0f4c,
-  0x7ec0, 0x17dc,
-  0x7ec3, 0x0a00,
-  0x7ec4, 0x1246,
-  0x7ec5, 0x0d29,
-  0x7ec6, 0x0f25,
-  0x7ec7, 0x11ae,
-  0x7ec8, 0x11d4,
-  0x7ec9, 0x17df,
-  0x7eca, 0x03f8,
-  0x7ecb, 0x17e0,
-  0x7ecd, 0x0d15,
-  0x7ece, 0x1076,
-  0x7ecf, 0x08dc,
-  0x7ed0, 0x17e2,
-  0x7ed1, 0x03fe,
-  0x7ed2, 0x0cb9,
-  0x7ed3, 0x08b2,
-  0x7ed4, 0x17e3,
-  0x7ed5, 0x0ca1,
-  0x7ed6, 0x43d9,
-  0x7ed7, 0x17e4,
-  0x7ed8, 0x07fb,
-  0x7ed9, 0x06f3,
-  0x7eda, 0x0fcd,
-  0x7edb, 0x17e5,
-  0x7edc, 0x0a8e,
-  0x7edd, 0x0927,
-  0x7ede, 0x089b,
-  0x7edf, 0x0e64,
-  0x7ee0, 0x17e6,
-  0x7ee2, 0x091d,
-  0x7ee3, 0x0fb0,
-  0x7ee4, 0x43da,
-  0x7ee5, 0x0ddc,
-  0x7ee6, 0x0e23,
-  0x7ee7, 0x083f,
-  0x7ee8, 0x17e8,
-  0x7ee9, 0x081b,
-  0x7eea, 0x0fc2,
-  0x7eeb, 0x17e9,
-  0x7eec, 0x43db,
-  0x7eed, 0x0fc3,
-  0x7eee, 0x17ea,
-  0x7ef0, 0x0545,
-  0x7ef1, 0x17ec,
-  0x7ef3, 0x0d37,
-  0x7ef4, 0x0ebb,
-  0x7ef5, 0x0ae5,
-  0x7ef6, 0x17ef,
-  0x7ef7, 0x042a,
-  0x7ef8, 0x0516,
-  0x7ef9, 0x43dc,
-  0x7efa, 0x17f0,
-  0x7efc, 0x1238,
-  0x7efd, 0x1161,
-  0x7efe, 0x17f2,
-  0x7eff, 0x0a73,
-  0x7f00, 0x1217,
-  0x7f01, 0x17f3,
-  0x7f04, 0x085d,
-  0x7f05, 0x0aea,
-  0x7f06, 0x09ad,
-  0x7f07, 0x17f6,
-  0x7f09, 0x081c,
-  0x7f0a, 0x43dd,
-  0x7f0b, 0x17f8,
-  0x7f0d, 0x17ee,
-  0x7f0e, 0x060f,
-  0x7f0f, 0x17fa,
-  0x7f10, 0x43de,
-  0x7f11, 0x17fb,
-  0x7f13, 0x07cf,
-  0x7f14, 0x05bf,
-  0x7f15, 0x0a6d,
-  0x7f16, 0x0449,
-  0x7f17, 0x17fd,
-  0x7f18, 0x10f8,
-  0x7f19, 0x17fe,
-  0x7f1a, 0x06ba,
-  0x7f1b, 0x1800,
-  0x7f1c, 0x17ff,
-  0x7f1d, 0x0689,
-  0x7f1e, 0x43df,
-  0x7f1f, 0x1801,
-  0x7f20, 0x04bf,
-  0x7f21, 0x1802,
-  0x7f28, 0x108c,
-  0x7f29, 0x0dea,
-  0x7f2a, 0x1809,
-  0x7f2e, 0x0d02,
-  0x7f2f, 0x180d,
-  0x7f34, 0x089a,
-  0x7f35, 0x1812,
-  0x7f36, 0x1c5e,
-  0x7f37, 0x43e0,
-  0x7f38, 0x06d2,
-  0x7f39, 0x43e1,
-  0x7f3a, 0x0c8c,
-  0x7f3b, 0x43e2,
-  0x7f42, 0x1c5f,
-  0x7f43, 0x43e9,
-  0x7f44, 0x1c60,
-  0x7f46, 0x43ea,
-  0x7f4c, 0x25e2,
-  0x7f4d, 0x43f0,
-  0x7f4e, 0x269a,
-  0x7f4f, 0x43f1,
-  0x7f50, 0x0737,
-  0x7f51, 0x0ea9,
-  0x7f52, 0x43f2,
-  0x7f54, 0x129e,
-  0x7f55, 0x0768,
-  0x7f56, 0x43f4,
-  0x7f57, 0x0a85,
-  0x7f58, 0x1a81,
-  0x7f59, 0x43f5,
-  0x7f5a, 0x0640,
-  0x7f5b, 0x43f6,
-  0x7f5f, 0x1a83,
-  0x7f60, 0x43fa,
-  0x7f61, 0x1a82,
-  0x7f62, 0x03e0,
-  0x7f63, 0x43fb,
-  0x7f68, 0x1a85,
-  0x7f69, 0x1177,
-  0x7f6a, 0x124c,
-  0x7f6b, 0x4400,
-  0x7f6e, 0x11c2,
-  0x7f6f, 0x4403,
-  0x7f70, 0x1eea,
-  0x7f71, 0x1a87,
-  0x7f72, 0x0d87,
-  0x7f73, 0x4404,
-  0x7f74, 0x1a86,
-  0x7f75, 0x4405,
-  0x7f77, 0x1e2c,
-  0x7f78, 0x4407,
-  0x7f79, 0x1a88,
-  0x7f7a, 0x4408,
-  0x7f7e, 0x1a8a,
-  0x7f7f, 0x440c,
-  0x7f81, 0x1a89,
-  0x7f82, 0x440e,
-  0x7f85, 0x2062,
-  0x7f86, 0x24f1,
-  0x7f87, 0x4411,
-  0x7f88, 0x24f2,
-  0x7f89, 0x4412,
-  0x7f8a, 0x101b,
-  0x7f8b, 0x4413,
-  0x7f8c, 0x0c39,
-  0x7f8d, 0x4414,
-  0x7f8e, 0x0ac5,
-  0x7f8f, 0x4415,
-  0x7f94, 0x06dc,
-  0x7f95, 0x441a,
-  0x7f9a, 0x0a30,
-  0x7f9b, 0x441f,
-  0x7f9d, 0x1cc4,
-  0x7f9e, 0x0faa,
-  0x7f9f, 0x1cc5,
-  0x7fa0, 0x4421,
-  0x7fa1, 0x0f48,
-  0x7fa2, 0x4422,
-  0x7fa4, 0x0c95,
-  0x7fa5, 0x25f2,
-  0x7fa6, 0x4424,
-  0x7fa7, 0x1cc6,
-  0x7fa8, 0x4425,
-  0x7fa9, 0x2215,
-  0x7faa, 0x4426,
-  0x7faf, 0x1cc7,
-  0x7fb1, 0x442b,
-  0x7fb2, 0x1cc9,
-  0x7fb3, 0x442c,
-  0x7fb8, 0x130e,
-  0x7fb9, 0x06f9,
-  0x7fba, 0x4431,
-  0x7fbc, 0x176d,
-  0x7fbd, 0x10d5,
-  0x7fbe, 0x4433,
-  0x7fbf, 0x1cde,
-  0x7fc0, 0x4434,
-  0x7fc1, 0x0edb,
-  0x7fc2, 0x4435,
-  0x7fc5, 0x0506,
-  0x7fc6, 0x4438,
-  0x7fca, 0x1b98,
-  0x7fcb, 0x443c,
-  0x7fcc, 0x1075,
-  0x7fcd, 0x443d,
-  0x7fce, 0x1cdf,
-  0x7fcf, 0x443e,
-  0x7fd2, 0x21ae,
-  0x7fd3, 0x4441,
-  0x7fd4, 0x0f55,
-  0x7fd5, 0x1ce0,
-  0x7fd6, 0x4442,
-  0x7fd8, 0x0c49,
-  0x7fd9, 0x4444,
-  0x7fdf, 0x05b5,
-  0x7fe0, 0x0567,
-  0x7fe1, 0x1ce2,
-  0x7fe2, 0x444a,
-  0x7fe5, 0x1ce1,
-  0x7fe6, 0x1ce3,
-  0x7fe7, 0x444d,
-  0x7fe9, 0x1ce4,
-  0x7fea, 0x444f,
-  0x7fee, 0x1ce5,
-  0x7fef, 0x4453,
-  0x7ff0, 0x0769,
-  0x7ff1, 0x03ca,
-  0x7ff2, 0x4454,
-  0x7ff3, 0x1ce6,
-  0x7ff4, 0x4455,
-  0x7ff9, 0x20e0,
-  0x7ffa, 0x445a,
-  0x7ffb, 0x064a,
-  0x7ffc, 0x1074,
-  0x7ffd, 0x445b,
-  0x8000, 0x1032,
-  0x8001, 0x09ba,
-  0x8002, 0x445e,
-  0x8003, 0x0949,
-  0x8004, 0x1953,
-  0x8005, 0x1180,
-  0x8006, 0x191a,
-  0x8007, 0x445f,
-  0x800b, 0x1bd7,
-  0x800c, 0x0637,
-  0x800d, 0x0d98,
-  0x800e, 0x4463,
-  0x8010, 0x0b30,
-  0x8011, 0x4465,
-  0x8012, 0x1bcb,
-  0x8013, 0x4466,
-  0x8014, 0x1bcc,
-  0x8015, 0x06f6,
-  0x8016, 0x1bcd,
-  0x8017, 0x077b,
-  0x8018, 0x1108,
-  0x8019, 0x03dd,
-  0x801a, 0x4467,
-  0x801c, 0x1bce,
-  0x801d, 0x4469,
-  0x8020, 0x1bcf,
-  0x8021, 0x446c,
-  0x8022, 0x1bd0,
-  0x8023, 0x446d,
-  0x8025, 0x1bd1,
-  0x8028, 0x1bd5,
-  0x8029, 0x1bd4,
-  0x802a, 0x0b96,
-  0x802b, 0x446f,
-  0x802c, 0x25c2,
-  0x802d, 0x4470,
-  0x802e, 0x25c1,
-  0x802f, 0x4471,
-  0x8031, 0x1bd6,
-  0x8032, 0x4473,
-  0x8033, 0x0639,
-  0x8034, 0x4474,
-  0x8035, 0x1bd8,
-  0x8036, 0x1035,
-  0x8037, 0x14b1,
-  0x8038, 0x0dbf,
-  0x8039, 0x4475,
-  0x803b, 0x0501,
-  0x803c, 0x4477,
-  0x803d, 0x0583,
-  0x803e, 0x4478,
-  0x803f, 0x06fb,
-  0x8040, 0x4479,
-  0x8042, 0x0b57,
-  0x8043, 0x1bd9,
-  0x8044, 0x447b,
-  0x8046, 0x1bda,
-  0x8047, 0x447d,
-  0x804a, 0x0a0d,
-  0x804b, 0x0a44,
-  0x804c, 0x11af,
-  0x804d, 0x1bdb,
-  0x804e, 0x4480,
-  0x8052, 0x1bdc,
-  0x8053, 0x4484,
-  0x8054, 0x09f3,
-  0x8055, 0x4485,
-  0x8056, 0x2128,
-  0x8057, 0x4486,
-  0x8058, 0x0bd7,
-  0x8059, 0x4487,
-  0x805a, 0x090a,
-  0x805b, 0x4488,
-  0x805e, 0x2199,
-  0x805f, 0x448b,
-  0x8069, 0x1bdd,
-  0x806a, 0x0552,
-  0x806b, 0x4495,
-  0x806f, 0x2017,
-  0x8070, 0x1ea0,
-  0x8071, 0x1bde,
-  0x8072, 0x2125,
-  0x8073, 0x214d,
-  0x8074, 0x4499,
-  0x8075, 0x25c4,
-  0x8076, 0x209d,
-  0x8077, 0x228a,
-  0x8078, 0x449a,
-  0x8079, 0x25c3,
-  0x807a, 0x449b,
-  0x807d, 0x2179,
-  0x807e, 0x2038,
-  0x807f, 0x1a1e,
-  0x8080, 0x1a1d,
-  0x8081, 0x449e,
-  0x8083, 0x0dd5,
-  0x8084, 0x1065,
-  0x8085, 0x2155,
-  0x8086, 0x0db6,
-  0x8087, 0x1179,
-  0x8088, 0x44a0,
-  0x8089, 0x0cbd,
-  0x808a, 0x44a1,
-  0x808b, 0x09ca,
-  0x808c, 0x0814,
-  0x808d, 0x44a2,
-  0x8093, 0x1971,
-  0x8094, 0x44a8,
-  0x8096, 0x0f6f,
-  0x8097, 0x44aa,
-  0x8098, 0x11e1,
-  0x8099, 0x44ab,
-  0x809a, 0x0606,
-  0x809b, 0x06d3,
-  0x809c, 0x1970,
-  0x809d, 0x06c9,
-  0x809e, 0x44ac,
-  0x809f, 0x196f,
-  0x80a0, 0x04cb,
-  0x80a1, 0x0722,
-  0x80a2, 0x11aa,
-  0x80a3, 0x44ad,
-  0x80a4, 0x0691,
-  0x80a5, 0x0667,
-  0x80a6, 0x44ae,
-  0x80a9, 0x085a,
-  0x80aa, 0x065b,
-  0x80ab, 0x1976,
-  0x80ac, 0x44b1,
-  0x80ad, 0x1977,
-  0x80ae, 0x03c4,
-  0x80af, 0x095c,
-  0x80b0, 0x44b2,
-  0x80b1, 0x1975,
-  0x80b2, 0x10e2,
-  0x80b3, 0x44b3,
-  0x80b4, 0x1978,
-  0x80b5, 0x44b4,
-  0x80b7, 0x1979,
-  0x80b8, 0x44b6,
-  0x80ba, 0x066b,
-  0x80bb, 0x44b8,
-  0x80bc, 0x1972,
-  0x80bd, 0x1974,
-  0x80be, 0x0d2f,
-  0x80bf, 0x11d6,
-  0x80c0, 0x116e,
-  0x80c1, 0x0f7d,
-  0x80c2, 0x197f,
-  0x80c3, 0x0ec7,
-  0x80c4, 0x1980,
-  0x80c5, 0x44b9,
-  0x80c6, 0x0589,
-  0x80c7, 0x44ba,
-  0x80cc, 0x041c,
-  0x80cd, 0x1982,
-  0x80ce, 0x0df8,
-  0x80cf, 0x44bf,
-  0x80d6, 0x0b97,
-  0x80d7, 0x1983,
-  0x80d8, 0x44c6,
-  0x80d9, 0x1981,
-  0x80da, 0x0ba0,
-  0x80db, 0x197e,
-  0x80dc, 0x0d3b,
-  0x80dd, 0x1985,
-  0x80de, 0x0406,
-  0x80df, 0x44c7,
-  0x80e1, 0x07b1,
-  0x80e2, 0x44c9,
-  0x80e4, 0x126d,
-  0x80e5, 0x1bc7,
-  0x80e6, 0x44cb,
-  0x80e7, 0x197a,
-  0x80eb, 0x1986,
-  0x80ec, 0x179a,
-  0x80ed, 0x1989,
-  0x80ee, 0x44cc,
-  0x80ef, 0x0975,
-  0x80f0, 0x104f,
-  0x80f1, 0x1987,
-  0x80f2, 0x198c,
-  0x80f3, 0x06e7,
-  0x80f4, 0x1988,
-  0x80f5, 0x44cd,
-  0x80f6, 0x088b,
-  0x80f7, 0x44ce,
-  0x80f8, 0x0fa3,
-  0x80f9, 0x44cf,
-  0x80fa, 0x03c2,
-  0x80fb, 0x44d0,
-  0x80fc, 0x198d,
-  0x80fd, 0x0b3f,
-  0x80fe, 0x44d1,
-  0x8100, 0x44d3,
-  0x8102, 0x11ab,
-  0x8103, 0x44d5,
-  0x8105, 0x21d2,
-  0x8106, 0x0563,
-  0x8107, 0x44d7,
-  0x8109, 0x0a9d,
-  0x810a, 0x082c,
-  0x810b, 0x44d9,
-  0x810d, 0x198a,
-  0x810f, 0x1123,
-  0x8110, 0x0c09,
-  0x8111, 0x0b37,
-  0x8112, 0x198f,
-  0x8113, 0x0b68,
-  0x8114, 0x1309,
-  0x8115, 0x44db,
-  0x8116, 0x0478,
-  0x8117, 0x44dc,
-  0x8118, 0x1994,
-  0x8119, 0x44dd,
-  0x811a, 0x0896,
-  0x811b, 0x24c7,
-  0x811c, 0x44de,
-  0x811e, 0x1992,
-  0x811f, 0x44e0,
-  0x812c, 0x1993,
-  0x812d, 0x44ed,
-  0x812f, 0x06a7,
-  0x8130, 0x44ef,
-  0x8131, 0x0e82,
-  0x8132, 0x1995,
-  0x8133, 0x44f0,
-  0x8136, 0x1991,
-  0x8137, 0x44f3,
-  0x8138, 0x09fc,
-  0x8139, 0x2279,
-  0x813a, 0x44f4,
-  0x813e, 0x0bc1,
-  0x813f, 0x44f8,
-  0x8146, 0x0e46,
-  0x8147, 0x44ff,
-  0x8148, 0x1996,
-  0x8149, 0x4500,
-  0x814a, 0x099b,
-  0x814b, 0x103f,
-  0x814c, 0x1997,
-  0x814d, 0x4501,
-  0x814e, 0x2123,
-  0x814f, 0x4502,
-  0x8150, 0x06aa,
-  0x8151, 0x06a8,
-  0x8152, 0x4503,
-  0x8153, 0x1998,
-  0x8154, 0x0c38,
-  0x8155, 0x0ea4,
-  0x8156, 0x24c5,
-  0x8157, 0x4504,
-  0x8159, 0x199a,
-  0x815b, 0x4506,
-  0x8160, 0x199d,
-  0x8161, 0x24c9,
-  0x8162, 0x450b,
-  0x8165, 0x0f93,
-  0x8166, 0x2094,
-  0x8167, 0x19a2,
-  0x8168, 0x450e,
-  0x8169, 0x199e,
-  0x816a, 0x450f,
-  0x816b, 0x2296,
-  0x816c, 0x4510,
-  0x816d, 0x19a1,
-  0x816e, 0x0cd4,
-  0x816f, 0x4511,
-  0x8170, 0x1025,
-  0x8171, 0x199c,
-  0x8172, 0x4512,
-  0x8174, 0x1999,
-  0x8175, 0x4514,
-  0x8178, 0x1e77,
-  0x8179, 0x06b4,
-  0x817a, 0x0f46,
-  0x817b, 0x0b48,
-  0x817c, 0x199f,
-  0x817e, 0x0e2d,
-  0x817f, 0x0e79,
-  0x8180, 0x03fd,
-  0x8181, 0x4517,
-  0x8182, 0x19a6,
-  0x8183, 0x4518,
-  0x8188, 0x19a5,
-  0x8189, 0x451d,
-  0x818a, 0x0479,
-  0x818b, 0x451e,
-  0x818f, 0x06db,
-  0x8190, 0x4522,
-  0x8191, 0x19a7,
-  0x8192, 0x4523,
-  0x8198, 0x0455,
-  0x8199, 0x4529,
-  0x819a, 0x1f06,
-  0x819b, 0x0e18,
-  0x819c, 0x0b07,
-  0x819d, 0x0f12,
-  0x819e, 0x452a,
-  0x81a0, 0x1fa5,
-  0x81a1, 0x452c,
-  0x81a3, 0x19a9,
-  0x81a4, 0x452e,
-  0x81a6, 0x19b0,
-  0x81a7, 0x4530,
-  0x81a8, 0x0bb3,
-  0x81a9, 0x2099,
-  0x81aa, 0x19aa,
-  0x81ab, 0x4531,
-  0x81b3, 0x0cfe,
-  0x81b4, 0x4539,
-  0x81ba, 0x1641,
-  0x81bb, 0x19ae,
-  0x81bc, 0x453f,
-  0x81bd, 0x1ead,
-  0x81be, 0x24c8,
-  0x81bf, 0x20a8,
-  0x81c0, 0x0e7f,
-  0x81c1, 0x19af,
-  0x81c2, 0x0444,
-  0x81c3, 0x109c,
-  0x81c4, 0x4540,
-  0x81c6, 0x1063,
-  0x81c7, 0x4542,
-  0x81c9, 0x201f,
-  0x81ca, 0x19ad,
-  0x81cb, 0x4544,
-  0x81cc, 0x19ab,
-  0x81cd, 0x20c5,
-  0x81ce, 0x4545,
-  0x81cf, 0x24ca,
-  0x81d0, 0x4546,
-  0x81d8, 0x1ff0,
-  0x81d9, 0x454e,
-  0x81da, 0x24c6,
-  0x81db, 0x454f,
-  0x81df, 0x225d,
-  0x81e0, 0x22de,
-  0x81e1, 0x4553,
-  0x81e3, 0x04e1,
-  0x81e4, 0x4555,
-  0x81e7, 0x1902,
-  0x81e8, 0x202c,
-  0x81e9, 0x4558,
-  0x81ea, 0x1231,
-  0x81eb, 0x4559,
-  0x81ec, 0x1ca9,
-  0x81ed, 0x0519,
-  0x81ee, 0x455a,
-  0x81f3, 0x11c0,
-  0x81f5, 0x455f,
-  0x81fa, 0x2161,
-  0x81fb, 0x118a,
-  0x81fc, 0x08f9,
-  0x81fd, 0x4564,
-  0x81fe, 0x1ca5,
-  0x81ff, 0x4565,
-  0x8200, 0x102f,
-  0x8201, 0x1ca6,
-  0x8203, 0x4566,
-  0x8204, 0x1ca8,
-  0x8205, 0x08fa,
-  0x8206, 0x10c4,
-  0x8207, 0x223b,
-  0x8208, 0x21d9,
-  0x8209, 0x1fcb,
-  0x820a, 0x1fc9,
-  0x820b, 0x4567,
-  0x820c, 0x0d19,
-  0x820e, 0x4568,
-  0x8210, 0x1c62,
-  0x8211, 0x456a,
-  0x8212, 0x0d7d,
-  0x8213, 0x456b,
-  0x8214, 0x0e45,
-  0x8215, 0x456c,
-  0x821b, 0x1618,
-  0x821c, 0x0da9,
-  0x821d, 0x4572,
-  0x821e, 0x0ef7,
-  0x821f, 0x11da,
-  0x8220, 0x4573,
-  0x8221, 0x1cab,
-  0x8224, 0x4574,
-  0x8228, 0x1cb0,
-  0x8229, 0x4578,
-  0x822a, 0x0774,
-  0x822b, 0x1cb1,
-  0x822c, 0x03ee,
-  0x822d, 0x1cae,
-  0x822e, 0x4579,
-  0x822f, 0x1caf,
-  0x8230, 0x0873,
-  0x8231, 0x049c,
-  0x8232, 0x457a,
-  0x8233, 0x1cb4,
-  0x8235, 0x0625,
-  0x8236, 0x0477,
-  0x8237, 0x0f3c,
-  0x8238, 0x1cb2,
-  0x8239, 0x052f,
-  0x823a, 0x457b,
-  0x823b, 0x1cb3,
-  0x823c, 0x457c,
-  0x823e, 0x1cb6,
-  0x823f, 0x457e,
-  0x8244, 0x1cb7,
-  0x8245, 0x4583,
-  0x8247, 0x0e58,
-  0x8248, 0x4585,
-  0x8249, 0x1cb8,
-  0x824a, 0x4586,
-  0x824b, 0x1cb9,
-  0x824c, 0x4587,
-  0x824f, 0x1cba,
-  0x8250, 0x458a,
-  0x8258, 0x0dc7,
-  0x8259, 0x1e61,
-  0x825a, 0x1cbb,
-  0x825b, 0x4592,
-  0x825f, 0x1cbc,
-  0x8260, 0x4596,
-  0x8264, 0x25ef,
-  0x8265, 0x459a,
-  0x8266, 0x1f98,
-  0x8267, 0x459b,
-  0x8268, 0x1cbd,
-  0x8269, 0x459c,
-  0x826b, 0x25f0,
-  0x826c, 0x459e,
-  0x826e, 0x1cdc,
-  0x826f, 0x0a05,
-  0x8270, 0x085b,
-  0x8271, 0x1f88,
-  0x8272, 0x0ce4,
-  0x8273, 0x1007,
-  0x8274, 0x1771,
-  0x8275, 0x45a0,
-  0x8277, 0x21f8,
-  0x8278, 0x45a2,
-  0x8279, 0x13e1,
-  0x827a, 0x105c,
-  0x827b, 0x45a3,
-  0x827d, 0x13e2,
-  0x827e, 0x03b7,
-  0x827f, 0x13e3,
-  0x8280, 0x45a5,
-  0x8282, 0x08ab,
-  0x8283, 0x45a7,
-  0x8284, 0x13e7,
-  0x8285, 0x45a8,
-  0x8288, 0x1278,
-  0x8289, 0x45ab,
-  0x828a, 0x13e5,
-  0x828b, 0x10d8,
-  0x828c, 0x45ac,
-  0x828d, 0x0d0f,
-  0x828e, 0x13e8,
-  0x828f, 0x13e4,
-  0x8290, 0x45ad,
-  0x8291, 0x13e9,
-  0x8292, 0x0aa7,
-  0x8293, 0x45ae,
-  0x8297, 0x13ea,
-  0x8298, 0x13f3,
-  0x8299, 0x13eb,
-  0x829a, 0x45b2,
-  0x829c, 0x0eee,
-  0x829d, 0x11a4,
-  0x829e, 0x45b4,
-  0x829f, 0x13fd,
-  0x82a0, 0x45b5,
-  0x82a1, 0x13fb,
-  0x82a2, 0x45b6,
-  0x82a4, 0x1400,
-  0x82a5, 0x08b7,
-  0x82a6, 0x0a52,
-  0x82a7, 0x45b8,
-  0x82a8, 0x13e6,
-  0x82a9, 0x13f9,
-  0x82aa, 0x13fc,
-  0x82ab, 0x13ec,
-  0x82ac, 0x066f,
-  0x82ad, 0x03d0,
-  0x82ae, 0x13f5,
-  0x82af, 0x0f89,
-  0x82b0, 0x13ef,
-  0x82b1, 0x07bd,
-  0x82b2, 0x45b9,
-  0x82b3, 0x0659,
-  0x82b4, 0x13fa,
-  0x82b5, 0x45ba,
-  0x82b7, 0x13f4,
-  0x82b8, 0x13ed,
-  0x82b9, 0x0c58,
-  0x82ba, 0x45bc,
-  0x82bb, 0x2322,
-  0x82bc, 0x45bd,
-  0x82bd, 0x0fe8,
-  0x82be, 0x13ee,
-  0x82bf, 0x45be,
-  0x82c1, 0x13f8,
-  0x82c2, 0x45c0,
-  0x82c4, 0x13fe,
-  0x82c5, 0x45c2,
-  0x82c7, 0x0ebc,
-  0x82c8, 0x13f0,
-  0x82c9, 0x45c4,
-  0x82ca, 0x13f1,
-  0x82cb, 0x13f6,
-  0x82cd, 0x049b,
-  0x82ce, 0x13ff,
-  0x82cf, 0x0dca,
-  0x82d0, 0x45c5,
-  0x82d1, 0x10fa,
-  0x82d2, 0x1409,
-  0x82d3, 0x140d,
-  0x82d4, 0x0df9,
-  0x82d5, 0x1414,
-  0x82d6, 0x45c6,
-  0x82d7, 0x0aec,
-  0x82d8, 0x140a,
-  0x82d9, 0x45c7,
-  0x82db, 0x094e,
-  0x82dc, 0x1407,
-  0x82dd, 0x45c9,
-  0x82de, 0x0405,
-  0x82df, 0x070f,
-  0x82e0, 0x1413,
-  0x82e1, 0x1401,
-  0x82e2, 0x45ca,
-  0x82e3, 0x13f2,
-  0x82e4, 0x1404,
-  0x82e5, 0x0ccf,
-  0x82e6, 0x096d,
-  0x82e7, 0x2336,
-  0x82e8, 0x45cb,
-  0x82eb, 0x0cf4,
-  0x82ec, 0x45ce,
-  0x82ef, 0x0426,
-  0x82f0, 0x45d1,
-  0x82f1, 0x1087,
-  0x82f2, 0x45d2,
-  0x82f4, 0x1408,
-  0x82f5, 0x45d4,
-  0x82f7, 0x1403,
-  0x82f8, 0x45d6,
-  0x82f9, 0x0bda,
-  0x82fa, 0x45d7,
-  0x82fb, 0x140c,
-  0x82fc, 0x45d8,
-  0x8300, 0x45dc,
-  0x8301, 0x121f,
-  0x8302, 0x0ab4,
-  0x8303, 0x0653,
-  0x8304, 0x0c4e,
-  0x8305, 0x0aae,
-  0x8306, 0x1410,
-  0x8307, 0x1406,
-  0x8308, 0x1419,
-  0x8309, 0x1402,
-  0x830a, 0x45dd,
-  0x830c, 0x140b,
-  0x830d, 0x45df,
-  0x830e, 0x08d4,
-  0x830f, 0x1405,
-  0x8310, 0x45e0,
-  0x8311, 0x140e,
-  0x8312, 0x45e1,
-  0x8314, 0x1411,
-  0x8316, 0x45e3,
-  0x8317, 0x1426,
-  0x8318, 0x45e4,
-  0x831a, 0x140f,
-  0x831b, 0x142e,
-  0x831c, 0x1415,
-  0x831d, 0x45e6,
-  0x8327, 0x085e,
-  0x8328, 0x0547,
-  0x8329, 0x45f0,
-  0x832b, 0x0aa8,
-  0x832c, 0x04ae,
-  0x832d, 0x1428,
-  0x832e, 0x45f2,
-  0x832f, 0x1420,
-  0x8330, 0x45f3,
-  0x8331, 0x141d,
-  0x8332, 0x45f4,
-  0x8333, 0x142a,
-  0x8334, 0x141c,
-  0x8335, 0x1077,
-  0x8336, 0x04af,
-  0x8337, 0x45f5,
-  0x8338, 0x0cb2,
-  0x8339, 0x0cbe,
-  0x833a, 0x1429,
-  0x833b, 0x45f6,
-  0x833c, 0x141b,
-  0x833d, 0x45f7,
-  0x8340, 0x1425,
-  0x8341, 0x45fa,
-  0x8343, 0x1423,
-  0x8344, 0x45fc,
-  0x8346, 0x08d2,
-  0x8347, 0x1422,
-  0x8348, 0x45fe,
-  0x8349, 0x04a4,
-  0x834a, 0x45ff,
-  0x834f, 0x1421,
-  0x8350, 0x0869,
-  0x8351, 0x1416,
-  0x8352, 0x07d9,
-  0x8353, 0x4604,
-  0x8354, 0x09de,
-  0x8355, 0x4605,
-  0x835a, 0x0847,
-  0x835b, 0x1417,
-  0x835d, 0x460a,
-  0x835e, 0x141f,
-  0x835f, 0x1424,
-  0x8360, 0x1427,
-  0x8361, 0x0595,
-  0x8362, 0x460b,
-  0x8363, 0x0cb4,
-  0x8364, 0x07fc,
-  0x8365, 0x142c,
-  0x8366, 0x142b,
-  0x8367, 0x1090,
-  0x8368, 0x142d,
-  0x8369, 0x142f,
-  0x836a, 0x1431,
-  0x836b, 0x1078,
-  0x836c, 0x1430,
-  0x836d, 0x1432,
-  0x836f, 0x1030,
-  0x8370, 0x460c,
-  0x8377, 0x0780,
-  0x8378, 0x1435,
-  0x8379, 0x4613,
-  0x837b, 0x1442,
-  0x837c, 0x143d,
-  0x837d, 0x1440,
-  0x837e, 0x4615,
-  0x8385, 0x143c,
-  0x8386, 0x0bed,
-  0x8387, 0x461c,
-  0x8389, 0x09dd,
-  0x838a, 0x22ab,
-  0x838b, 0x461e,
-  0x838e, 0x0ce8,
-  0x838f, 0x4621,
-  0x8392, 0x141a,
-  0x8393, 0x143a,
-  0x8394, 0x4624,
-  0x8396, 0x1fbf,
-  0x8397, 0x4626,
-  0x8398, 0x1443,
-  0x8399, 0x4627,
-  0x839b, 0x141e,
-  0x839c, 0x143b,
-  0x839d, 0x4629,
-  0x839e, 0x1444,
-  0x839f, 0x462a,
-  0x83a0, 0x1438,
-  0x83a1, 0x462b,
-  0x83a2, 0x1f7d,
-  0x83a3, 0x462c,
-  0x83a7, 0x2333,
-  0x83a8, 0x1445,
-  0x83a9, 0x143f,
-  0x83aa, 0x1439,
-  0x83ab, 0x0b0d,
-  0x83ac, 0x4630,
-  0x83b0, 0x1434,
-  0x83b1, 0x099e,
-  0x83b2, 0x09f4,
-  0x83b3, 0x1436,
-  0x83b5, 0x4634,
-  0x83b6, 0x143e,
-  0x83b7, 0x0806,
-  0x83b8, 0x1441,
-  0x83b9, 0x108d,
-  0x83ba, 0x1446,
-  0x83bb, 0x4635,
-  0x83bc, 0x1447,
-  0x83bd, 0x0aac,
-  0x83be, 0x4636,
-  0x83c0, 0x145e,
-  0x83c1, 0x1448,
-  0x83c2, 0x4638,
-  0x83c5, 0x145d,
-  0x83c6, 0x463b,
-  0x83c7, 0x0716,
-  0x83c8, 0x463c,
-  0x83ca, 0x0904,
-  0x83cb, 0x463e,
-  0x83cc, 0x0929,
-  0x83cd, 0x463f,
-  0x83cf, 0x0781,
-  0x83d0, 0x4641,
-  0x83d4, 0x1456,
-  0x83d5, 0x4645,
-  0x83d6, 0x1451,
-  0x83d7, 0x4646,
-  0x83d8, 0x144b,
-  0x83d9, 0x4647,
-  0x83dc, 0x0492,
-  0x83dd, 0x144f,
-  0x83de, 0x464a,
-  0x83df, 0x1457,
-  0x83e0, 0x046b,
-  0x83e1, 0x1461,
-  0x83e2, 0x464b,
-  0x83e5, 0x144a,
-  0x83e6, 0x464e,
-  0x83e9, 0x0bef,
-  0x83ea, 0x145c,
-  0x83eb, 0x4651,
-  0x83ef, 0x1f4d,
-  0x83f0, 0x1460,
-  0x83f1, 0x0a2b,
-  0x83f2, 0x0663,
-  0x83f3, 0x4655,
-  0x83f8, 0x145a,
-  0x83fa, 0x465a,
-  0x83fd, 0x1450,
-  0x83fe, 0x465d,
-  0x8400, 0x465f,
-  0x8401, 0x1449,
-  0x8402, 0x4660,
-  0x8403, 0x1459,
-  0x8404, 0x0e24,
-  0x8405, 0x4661,
-  0x8406, 0x1455,
-  0x8407, 0x2334,
-  0x8408, 0x4662,
-  0x840a, 0x1ff1,
-  0x840b, 0x144e,
-  0x840c, 0x0acd,
-  0x840d, 0x0bdb,
-  0x840e, 0x0ebd,
-  0x840f, 0x1458,
-  0x8410, 0x4664,
-  0x8411, 0x1454,
-  0x8412, 0x4665,
-  0x8418, 0x144d,
-  0x8419, 0x466b,
-  0x841c, 0x1452,
-  0x841d, 0x0a83,
-  0x841e, 0x466e,
-  0x8424, 0x108e,
-  0x8426, 0x145f,
-  0x8427, 0x0f61,
-  0x8428, 0x0cd3,
-  0x8429, 0x4674,
-  0x842c, 0x218b,
-  0x842d, 0x4677,
-  0x8431, 0x1472,
-  0x8432, 0x467b,
-  0x8435, 0x2349,
-  0x8436, 0x467e,
-  0x8438, 0x1453,
-  0x8439, 0x4680,
-  0x843c, 0x146c,
-  0x843d, 0x0a8b,
-  0x843e, 0x4683,
-  0x8446, 0x146d,
-  0x8447, 0x468b,
-  0x8449, 0x220b,
-  0x844a, 0x468d,
-  0x8451, 0x1463,
-  0x8452, 0x2346,
-  0x8453, 0x4694,
-  0x8457, 0x11f7,
-  0x8458, 0x4698,
-  0x8459, 0x1465,
-  0x845a, 0x1464,
-  0x845b, 0x06eb,
-  0x845c, 0x1462,
-  0x845d, 0x4699,
-  0x8461, 0x0bee,
-  0x8462, 0x469d,
-  0x8463, 0x05ec,
-  0x8464, 0x2347,
-  0x8465, 0x469e,
-  0x8466, 0x2193,
-  0x8467, 0x469f,
-  0x8469, 0x146e,
-  0x846a, 0x46a1,
-  0x846b, 0x07b0,
-  0x846c, 0x1124,
-  0x846d, 0x1473,
-  0x846e, 0x46a2,
-  0x846f, 0x26a1,
-  0x8470, 0x46a3,
-  0x8471, 0x0553,
-  0x8472, 0x46a4,
-  0x8473, 0x1466,
-  0x8474, 0x46a5,
-  0x8475, 0x0988,
-  0x8476, 0x146f,
-  0x8477, 0x1f62,
-  0x8478, 0x146b,
-  0x8479, 0x46a6,
-  0x847a, 0x1469,
-  0x847b, 0x46a7,
-  0x8482, 0x05ba,
-  0x8483, 0x46ae,
-  0x8487, 0x1467,
-  0x8489, 0x146a,
-  0x848a, 0x46b2,
-  0x848b, 0x0880,
-  0x848c, 0x1470,
-  0x848d, 0x46b3,
-  0x848e, 0x1471,
-  0x848f, 0x46b4,
-  0x8493, 0x234d,
-  0x8494, 0x2348,
-  0x8495, 0x46b8,
-  0x8497, 0x1481,
-  0x8498, 0x46ba,
-  0x8499, 0x0ace,
-  0x849a, 0x46bb,
-  0x849c, 0x0dd7,
-  0x849d, 0x46bd,
-  0x84a1, 0x147e,
-  0x84a2, 0x46c1,
-  0x84af, 0x1297,
-  0x84b0, 0x46ce,
-  0x84b2, 0x0bf0,
-  0x84b3, 0x46d0,
-  0x84b4, 0x1480,
-  0x84b5, 0x46d1,
-  0x84b8, 0x1195,
-  0x84b9, 0x147f,
-  0x84ba, 0x147c,
-  0x84bb, 0x46d4,
-  0x84bc, 0x1e60,
-  0x84bd, 0x1478,
-  0x84be, 0x46d5,
-  0x84bf, 0x147b,
-  0x84c0, 0x2345,
-  0x84c1, 0x1474,
-  0x84c2, 0x46d6,
-  0x84c4, 0x0fb9,
-  0x84c5, 0x46d8,
-  0x84c9, 0x0cb3,
-  0x84ca, 0x147a,
-  0x84cb, 0x1f12,
-  0x84cc, 0x46dc,
-  0x84cd, 0x1475,
-  0x84ce, 0x46dd,
-  0x84d0, 0x1476,
-  0x84d1, 0x0de7,
-  0x84d2, 0x46df,
-  0x84d3, 0x1479,
-  0x84d4, 0x46e0,
-  0x84d6, 0x0436,
-  0x84d7, 0x46e2,
-  0x84dd, 0x09a1,
-  0x84de, 0x46e8,
-  0x84df, 0x082e,
-  0x84e0, 0x147d,
-  0x84e1, 0x46e9,
-  0x84e3, 0x1483,
-  0x84e4, 0x46eb,
-  0x84e5, 0x1482,
-  0x84e6, 0x1477,
-  0x84e7, 0x46ec,
-  0x84ec, 0x0baf,
-  0x84ed, 0x46f1,
-  0x84ee, 0x2018,
-  0x84ef, 0x2335,
-  0x84f0, 0x1487,
-  0x84f1, 0x46f2,
-  0x84fc, 0x148e,
-  0x84fd, 0x233c,
-  0x84fe, 0x46fd,
-  0x84ff, 0x148d,
-  0x8500, 0x46fe,
-  0x850c, 0x1484,
-  0x850d, 0x470a,
-  0x8511, 0x0af4,
-  0x8512, 0x470e,
-  0x8513, 0x0aa2,
-  0x8514, 0x266f,
-  0x8515, 0x470f,
-  0x8517, 0x1182,
-  0x8518, 0x4711,
-  0x851a, 0x0ec4,
-  0x851b, 0x4713,
-  0x851e, 0x2351,
-  0x851f, 0x1489,
-  0x8520, 0x4716,
-  0x8521, 0x0493,
-  0x8522, 0x4717,
-  0x8523, 0x1fa0,
-  0x8524, 0x4718,
-  0x8526, 0x2338,
-  0x8527, 0x471a,
-  0x852b, 0x0b4b,
-  0x852c, 0x0d76,
-  0x852d, 0x221b,
-  0x852e, 0x471e,
-  0x8537, 0x0c3b,
-  0x8538, 0x1486,
-  0x8539, 0x1488,
-  0x853a, 0x148a,
-  0x853b, 0x148c,
-  0x853c, 0x03b5,
-  0x853d, 0x0437,
-  0x853e, 0x4727,
-  0x8541, 0x2342,
-  0x8542, 0x472a,
-  0x8543, 0x1496,
-  0x8544, 0x472b,
-  0x8546, 0x234f,
-  0x8547, 0x472d,
-  0x8548, 0x1490,
-  0x8549, 0x0887,
-  0x854a, 0x0cca,
-  0x854b, 0x472e,
-  0x854e, 0x233d,
-  0x854f, 0x4731,
-  0x8552, 0x2344,
-  0x8553, 0x2331,
-  0x8554, 0x4734,
-  0x8555, 0x234b,
-  0x8556, 0x148b,
-  0x8557, 0x4735,
-  0x8558, 0x233b,
-  0x8559, 0x148f,
-  0x855a, 0x4736,
-  0x855e, 0x1493,
-  0x855f, 0x473a,
-  0x8562, 0x2350,
-  0x8563, 0x473d,
-  0x8564, 0x1492,
-  0x8565, 0x473e,
-  0x8568, 0x1491,
-  0x8569, 0x1eb4,
-  0x856a, 0x21a6,
-  0x856b, 0x4741,
-  0x856d, 0x21cb,
-  0x856e, 0x4743,
-  0x8572, 0x1497,
-  0x8573, 0x4747,
-  0x8574, 0x110f,
-  0x8575, 0x4748,
-  0x8577, 0x2355,
-  0x8578, 0x474a,
-  0x8579, 0x149d,
-  0x857a, 0x1494,
-  0x857b, 0x1498,
-  0x857c, 0x474b,
-  0x857e, 0x09c4,
-  0x857f, 0x474d,
-  0x8584, 0x040a,
-  0x8585, 0x14a0,
-  0x8586, 0x4752,
-  0x8587, 0x149b,
-  0x8588, 0x233e,
-  0x8589, 0x4753,
-  0x858a, 0x1f74,
-  0x858b, 0x4754,
-  0x858c, 0x2330,
-  0x858d, 0x4755,
-  0x858f, 0x149c,
-  0x8590, 0x4757,
-  0x8591, 0x2680,
-  0x8592, 0x4758,
-  0x8594, 0x20da,
-  0x8595, 0x475a,
-  0x859b, 0x0fcf,
-  0x859c, 0x149f,
-  0x859d, 0x4760,
-  0x859f, 0x234a,
-  0x85a0, 0x4762,
-  0x85a4, 0x1499,
-  0x85a5, 0x4766,
-  0x85a6, 0x1f91,
-  0x85a7, 0x4767,
-  0x85a8, 0x149a,
-  0x85a9, 0x2107,
-  0x85aa, 0x0f88,
-  0x85ab, 0x4768,
-  0x85ae, 0x149e,
-  0x85af, 0x0d84,
-  0x85b0, 0x14a3,
-  0x85b1, 0x476b,
-  0x85b7, 0x14a2,
-  0x85b8, 0x4771,
-  0x85b9, 0x14a1,
-  0x85ba, 0x233f,
-  0x85bb, 0x4772,
-  0x85c1, 0x14a5,
-  0x85c2, 0x4778,
-  0x85c9, 0x08b6,
-  0x85ca, 0x477f,
-  0x85cd, 0x1ff4,
-  0x85ce, 0x2343,
-  0x85cf, 0x049f,
-  0x85d0, 0x0aef,
-  0x85d1, 0x4782,
-  0x85d3, 0x14a4,
-  0x85d4, 0x4784,
-  0x85d5, 0x0b7b,
-  0x85d6, 0x4785,
-  0x85dc, 0x14a6,
-  0x85dd, 0x2212,
-  0x85de, 0x478b,
-  0x85e4, 0x0e2c,
-  0x85e5, 0x2207,
-  0x85e6, 0x4791,
-  0x85e9, 0x0647,
-  0x85ea, 0x2359,
-  0x85eb, 0x4794,
-  0x85f4, 0x2254,
-  0x85f5, 0x479d,
-  0x85f6, 0x2332,
-  0x85f7, 0x479e,
-  0x85f9, 0x1e26,
-  0x85fa, 0x2357,
-  0x85fb, 0x1128,
-  0x85fc, 0x47a0,
-  0x85ff, 0x14a7,
-  0x8600, 0x47a3,
-  0x8604, 0x2358,
-  0x8605, 0x14a9,
-  0x8606, 0x2042,
-  0x8607, 0x2153,
-  0x8608, 0x47a7,
-  0x860b, 0x20bb,
-  0x860c, 0x47aa,
-  0x8611, 0x0b05,
-  0x8612, 0x47af,
-  0x8616, 0x14ab,
-  0x8617, 0x47b3,
-  0x861a, 0x235a,
-  0x861b, 0x47b6,
-  0x861e, 0x2356,
-  0x861f, 0x47b9,
-  0x8622, 0x2337,
-  0x8623, 0x47bc,
-  0x8627, 0x14a8,
-  0x8628, 0x47c0,
-  0x8629, 0x14aa,
-  0x862a, 0x47c1,
-  0x862d, 0x1ff9,
-  0x862e, 0x47c4,
-  0x8638, 0x115b,
-  0x8639, 0x47ce,
-  0x863a, 0x2353,
-  0x863b, 0x47cf,
-  0x863c, 0x14ac,
-  0x863d, 0x47d0,
-  0x863f, 0x2061,
-  0x8640, 0x47d2,
-  0x864d, 0x1bf0,
-  0x864e, 0x07b7,
-  0x864f, 0x0a59,
-  0x8650, 0x0b71,
-  0x8651, 0x0a6e,
-  0x8652, 0x47df,
-  0x8654, 0x1bf1,
-  0x8655, 0x1e95,
-  0x8656, 0x47e1,
-  0x865a, 0x0fb4,
-  0x865b, 0x47e5,
-  0x865c, 0x2049,
-  0x865d, 0x47e6,
-  0x865e, 0x10c2,
-  0x865f, 0x1f42,
-  0x8660, 0x47e7,
-  0x8662, 0x196d,
-  0x8663, 0x47e9,
-  0x8667, 0x1fe8,
-  0x8668, 0x47ed,
-  0x866b, 0x050b,
-  0x866c, 0x1bf2,
-  0x866d, 0x47f0,
-  0x866e, 0x1bf3,
-  0x866f, 0x47f1,
-  0x8671, 0x0d44,
-  0x8672, 0x47f3,
-  0x8679, 0x079e,
-  0x867a, 0x1bf5,
-  0x867b, 0x1bf7,
-  0x867c, 0x1bf6,
-  0x867d, 0x0dd9,
-  0x867e, 0x0f27,
-  0x867f, 0x1bf4,
-  0x8680, 0x0d4b,
-  0x8681, 0x1056,
-  0x8682, 0x0a93,
-  0x8683, 0x47fa,
-  0x868a, 0x0ed2,
-  0x868b, 0x1bfa,
-  0x868c, 0x0401,
-  0x868d, 0x1bf9,
-  0x868e, 0x4801,
-  0x8693, 0x1c00,
-  0x8694, 0x4806,
-  0x8695, 0x0496,
-  0x8696, 0x4807,
-  0x869c, 0x0fea,
-  0x869d, 0x1bfc,
-  0x869e, 0x480d,
-  0x86a3, 0x1bfe,
-  0x86a4, 0x112c,
-  0x86a5, 0x4812,
-  0x86a7, 0x1bfd,
-  0x86a8, 0x1bf8,
-  0x86a9, 0x1c01,
-  0x86aa, 0x1bff,
-  0x86ab, 0x4814,
-  0x86ac, 0x1bfb,
-  0x86ad, 0x4815,
-  0x86af, 0x1c09,
-  0x86b0, 0x1c06,
-  0x86b1, 0x1c08,
-  0x86b2, 0x4817,
-  0x86b4, 0x1c0c,
-  0x86b5, 0x1c04,
-  0x86b6, 0x1c02,
-  0x86b7, 0x4819,
-  0x86ba, 0x1c07,
-  0x86bb, 0x481c,
-  0x86c0, 0x11fa,
-  0x86c1, 0x4821,
-  0x86c4, 0x1c03,
-  0x86c5, 0x4824,
-  0x86c6, 0x0c76,
-  0x86c7, 0x0d18,
-  0x86c8, 0x4825,
-  0x86c9, 0x1c0a,
-  0x86ca, 0x071f,
-  0x86cb, 0x0591,
-  0x86cc, 0x4826,
-  0x86ce, 0x1c05,
-  0x86cf, 0x1c0b,
-  0x86d0, 0x1c12,
-  0x86d1, 0x1c18,
-  0x86d2, 0x4828,
-  0x86d4, 0x07ec,
-  0x86d5, 0x482a,
-  0x86d8, 0x1c17,
-  0x86d9, 0x0e8d,
-  0x86da, 0x482d,
-  0x86db, 0x11ea,
-  0x86dc, 0x482e,
-  0x86de, 0x1c14,
-  0x86df, 0x1c16,
-  0x86e0, 0x4830,
-  0x86e4, 0x06ed,
-  0x86e5, 0x4834,
-  0x86e9, 0x1c0d,
-  0x86ea, 0x4838,
-  0x86ed, 0x1c10,
-  0x86ee, 0x0aa0,
-  0x86ef, 0x483b,
-  0x86f0, 0x117e,
-  0x86f1, 0x1c0e,
-  0x86f3, 0x1c11,
-  0x86f4, 0x1c15,
-  0x86f5, 0x483c,
-  0x86f8, 0x1c1b,
-  0x86f9, 0x10a1,
-  0x86fa, 0x25da,
-  0x86fb, 0x483f,
-  0x86fe, 0x0629,
-  0x86ff, 0x4842,
-  0x8700, 0x0d88,
-  0x8701, 0x4843,
-  0x8702, 0x0681,
-  0x8703, 0x1c19,
-  0x8704, 0x4844,
-  0x8706, 0x25d7,
-  0x8707, 0x1c1a,
-  0x8708, 0x1c1c,
-  0x8709, 0x1c1f,
-  0x870a, 0x1c1d,
-  0x870b, 0x4846,
-  0x870d, 0x1c1e,
-  0x870e, 0x4848,
-  0x8712, 0x0ffa,
-  0x8713, 0x1c13,
-  0x8714, 0x484c,
-  0x8715, 0x0e7a,
-  0x8716, 0x484d,
-  0x8717, 0x0ede,
-  0x8718, 0x11a8,
-  0x8719, 0x484e,
-  0x871a, 0x1c25,
-  0x871b, 0x484f,
-  0x871c, 0x0ae0,
-  0x871d, 0x4850,
-  0x871e, 0x1c22,
-  0x871f, 0x4851,
-  0x8721, 0x099a,
-  0x8722, 0x1c2e,
-  0x8723, 0x1c20,
-  0x8724, 0x4853,
-  0x8725, 0x1c23,
-  0x8726, 0x4854,
-  0x8729, 0x1c2a,
-  0x872a, 0x4857,
-  0x872e, 0x1c24,
-  0x872f, 0x485b,
-  0x8731, 0x1c29,
-  0x8732, 0x485d,
-  0x8734, 0x1c28,
-  0x8735, 0x485f,
-  0x8737, 0x1c2b,
-  0x8738, 0x4861,
-  0x873b, 0x1c21,
-  0x873c, 0x4864,
-  0x873e, 0x1c26,
-  0x873f, 0x1c2c,
-  0x8740, 0x4866,
-  0x8747, 0x1091,
-  0x8748, 0x1c27,
-  0x8749, 0x04bc,
-  0x874a, 0x486d,
-  0x874c, 0x1c34,
-  0x874d, 0x486f,
-  0x874e, 0x0f76,
-  0x874f, 0x4870,
-  0x8753, 0x1c37,
-  0x8754, 0x4874,
-  0x8755, 0x212e,
-  0x8756, 0x4875,
-  0x8757, 0x07dd,
-  0x8758, 0x4876,
-  0x8759, 0x1c3b,
-  0x875a, 0x4877,
-  0x8760, 0x1c32,
-  0x8761, 0x487d,
-  0x8763, 0x1c38,
-  0x8764, 0x1c3a,
-  0x8765, 0x1c3c,
-  0x8766, 0x21b2,
-  0x8767, 0x487f,
-  0x876e, 0x1c35,
-  0x876f, 0x4886,
-  0x8770, 0x1c33,
-  0x8771, 0x4887,
-  0x8774, 0x07b2,
-  0x8775, 0x488a,
-  0x8776, 0x05dc,
-  0x8777, 0x488b,
-  0x8778, 0x219e,
-  0x8779, 0x488c,
-  0x877b, 0x1c31,
-  0x877c, 0x1c39,
-  0x877d, 0x1c2f,
-  0x877f, 0x488e,
-  0x8782, 0x1c2d,
-  0x8783, 0x1c46,
-  0x8784, 0x25dc,
-  0x8785, 0x1c43,
-  0x8786, 0x4891,
-  0x8788, 0x1c42,
-  0x8789, 0x4893,
-  0x878b, 0x1c36,
-  0x878c, 0x4895,
-  0x878d, 0x0cb5,
-  0x878e, 0x4896,
-  0x8793, 0x1c3d,
-  0x8794, 0x489b,
-  0x8797, 0x1c45,
-  0x8798, 0x489e,
-  0x879e, 0x206c,
-  0x879f, 0x0afd,
-  0x87a0, 0x48a4,
-  0x87a2, 0x2226,
-  0x87a3, 0x48a6,
-  0x87a8, 0x1c3f,
-  0x87a9, 0x48ab,
-  0x87ab, 0x1c47,
-  0x87ac, 0x1c49,
-  0x87ad, 0x1c44,
-  0x87ae, 0x48ad,
-  0x87af, 0x1c3e,
-  0x87b0, 0x48ae,
-  0x87b3, 0x1c4b,
-  0x87b4, 0x48b1,
-  0x87b5, 0x1c4a,
-  0x87b6, 0x48b2,
-  0x87ba, 0x0a84,
-  0x87bb, 0x25e0,
-  0x87bc, 0x48b6,
-  0x87bd, 0x1c4e,
-  0x87be, 0x48b7,
-  0x87c0, 0x1c50,
-  0x87c1, 0x48b9,
-  0x87c4, 0x227b,
-  0x87c5, 0x48bc,
-  0x87c6, 0x1c41,
-  0x87c7, 0x48bd,
-  0x87c8, 0x25de,
-  0x87c9, 0x48be,
-  0x87ca, 0x1c51,
-  0x87cb, 0x1c4c,
-  0x87cc, 0x48bf,
-  0x87ce, 0x25e1,
-  0x87cf, 0x48c1,
-  0x87d1, 0x1c4f,
-  0x87d2, 0x1c40,
-  0x87d3, 0x1c4d,
-  0x87d4, 0x48c3,
-  0x87db, 0x1c52,
-  0x87dc, 0x48ca,
-  0x87e0, 0x1c54,
-  0x87e1, 0x48ce,
-  0x87e3, 0x25d5,
-  0x87e4, 0x48d0,
-  0x87e5, 0x1c48,
-  0x87e6, 0x48d1,
-  0x87ea, 0x1c53,
-  0x87eb, 0x48d5,
-  0x87ec, 0x1e6b,
-  0x87ed, 0x48d6,
-  0x87ee, 0x1c55,
-  0x87ef, 0x25db,
-  0x87f0, 0x48d7,
-  0x87f2, 0x1e89,
-  0x87f3, 0x48d9,
-  0x87f6, 0x25d9,
-  0x87f7, 0x48dc,
-  0x87f9, 0x0f82,
-  0x87fa, 0x48de,
-  0x87fb, 0x2211,
-  0x87fc, 0x48df,
-  0x87fe, 0x1c58,
-  0x87ff, 0x48e1,
-  0x8800, 0x48e2,
-  0x8803, 0x130d,
-  0x8804, 0x48e5,
-  0x8805, 0x2229,
-  0x8806, 0x25d6,
-  0x8807, 0x48e6,
-  0x880a, 0x1c59,
-  0x880b, 0x48e9,
-  0x8810, 0x25dd,
-  0x8811, 0x25df,
-  0x8812, 0x48ee,
-  0x8813, 0x1c57,
-  0x8814, 0x48ef,
-  0x8815, 0x0cbf,
-  0x8816, 0x1c56,
-  0x8817, 0x48f0,
-  0x881b, 0x1c5a,
-  0x881c, 0x48f4,
-  0x881f, 0x1fef,
-  0x8820, 0x48f7,
-  0x8821, 0x1c5b,
-  0x8822, 0x0543,
-  0x8823, 0x25d8,
-  0x8824, 0x48f8,
-  0x8831, 0x1f29,
-  0x8832, 0x1a8d,
-  0x8833, 0x4905,
-  0x8836, 0x1e5b,
-  0x8837, 0x4908,
-  0x8839, 0x1c5c,
-  0x883a, 0x490a,
-  0x883b, 0x2076,
-  0x883c, 0x1c5d,
-  0x883d, 0x490b,
-  0x8840, 0x0fd3,
-  0x8841, 0x490e,
-  0x8844, 0x1caa,
-  0x8845, 0x0f91,
-  0x8846, 0x2297,
-  0x8847, 0x4911,
-  0x884a, 0x2690,
-  0x884b, 0x4914,
-  0x884c, 0x0f9b,
-  0x884d, 0x1005,
-  0x884e, 0x4915,
-  0x8853, 0x213f,
-  0x8854, 0x0f3b,
-  0x8855, 0x491a,
-  0x8857, 0x08a7,
-  0x8858, 0x491c,
-  0x8859, 0x0fec,
-  0x885a, 0x491d,
-  0x885b, 0x2198,
-  0x885c, 0x491e,
-  0x885d, 0x1e88,
-  0x885e, 0x491f,
-  0x8861, 0x0799,
-  0x8862, 0x15ed,
-  0x8863, 0x1049,
-  0x8864, 0x1ba6,
-  0x8865, 0x0480,
-  0x8866, 0x4922,
-  0x8868, 0x0456,
-  0x8869, 0x1ba7,
-  0x886a, 0x4924,
-  0x886b, 0x0cf9,
-  0x886c, 0x04e9,
-  0x886d, 0x4925,
-  0x886e, 0x1306,
-  0x886f, 0x4926,
-  0x8870, 0x0d9a,
-  0x8871, 0x4927,
-  0x8872, 0x1ba8,
-  0x8873, 0x4928,
-  0x8877, 0x11d3,
-  0x8878, 0x492c,
-  0x8879, 0x228c,
-  0x887a, 0x492d,
-  0x887d, 0x1ba9,
-  0x887e, 0x1cbe,
-  0x887f, 0x1baa,
-  0x8880, 0x4930,
-  0x8881, 0x10ef,
-  0x8882, 0x1bab,
-  0x8883, 0x4931,
-  0x8884, 0x03cb,
-  0x8885, 0x1cbf,
-  0x8886, 0x4932,
-  0x8888, 0x1cc0,
-  0x8889, 0x4934,
-  0x888b, 0x057f,
-  0x888c, 0x4936,
-  0x888d, 0x0b9c,
-  0x888e, 0x4937,
-  0x8892, 0x0e0e,
-  0x8893, 0x493b,
-  0x8896, 0x0faf,
-  0x8897, 0x493e,
-  0x889c, 0x0e91,
-  0x889d, 0x4943,
-  0x88a2, 0x1bac,
-  0x88a3, 0x4948,
-  0x88a4, 0x1307,
-  0x88a5, 0x4949,
-  0x88ab, 0x0424,
-  0x88ac, 0x494f,
-  0x88ad, 0x0f1b,
-  0x88ae, 0x4950,
-  0x88b1, 0x069f,
-  0x88b2, 0x4953,
-  0x88b7, 0x1bae,
-  0x88b8, 0x4958,
-  0x88bc, 0x1baf,
-  0x88bd, 0x495c,
-  0x88c1, 0x048a,
-  0x88c2, 0x0a1a,
-  0x88c3, 0x4960,
-  0x88c5, 0x120d,
-  0x88c6, 0x1bad,
-  0x88c7, 0x4962,
-  0x88c9, 0x1bb0,
-  0x88ca, 0x25f1,
-  0x88cb, 0x4964,
-  0x88ce, 0x1bb2,
-  0x88cf, 0x200c,
-  0x88d0, 0x4967,
-  0x88d2, 0x130a,
-  0x88d3, 0x4969,
-  0x88d4, 0x1068,
-  0x88d5, 0x10e6,
-  0x88d6, 0x496a,
-  0x88d8, 0x1cc1,
-  0x88d9, 0x0c94,
-  0x88da, 0x496c,
-  0x88dc, 0x1e58,
-  0x88dd, 0x22ac,
-  0x88de, 0x496e,
-  0x88df, 0x1cc2,
-  0x88e0, 0x496f,
-  0x88e2, 0x1bb1,
-  0x88e3, 0x1bb3,
-  0x88e4, 0x0970,
-  0x88e5, 0x1bb4,
-  0x88e6, 0x4971,
-  0x88e8, 0x1bb8,
-  0x88e9, 0x4973,
-  0x88f0, 0x1bba,
-  0x88f1, 0x1bb5,
-  0x88f2, 0x497a,
-  0x88f3, 0x0d0a,
-  0x88f4, 0x0ba2,
-  0x88f5, 0x497b,
-  0x88f8, 0x0a8a,
-  0x88f9, 0x0755,
-  0x88fa, 0x497e,
-  0x88fc, 0x1bb7,
-  0x88fd, 0x26a7,
-  0x88fe, 0x1bb9,
-  0x88ff, 0x4980,
-  0x8900, 0x4981,
-  0x8902, 0x072c,
-  0x8903, 0x4983,
-  0x8907, 0x2676,
-  0x8908, 0x4987,
-  0x890a, 0x1bbf,
-  0x890b, 0x4989,
-  0x8910, 0x078d,
-  0x8911, 0x498e,
-  0x8912, 0x0408,
-  0x8913, 0x1bbd,
-  0x8914, 0x498f,
-  0x8919, 0x1bbc,
-  0x891a, 0x1bb6,
-  0x891b, 0x1bbe,
-  0x891c, 0x4994,
-  0x8921, 0x1bbb,
-  0x8922, 0x4999,
-  0x8925, 0x0cc7,
-  0x8926, 0x499c,
-  0x892a, 0x0e7b,
-  0x892b, 0x1bc1,
-  0x892c, 0x49a0,
-  0x8930, 0x1739,
-  0x8931, 0x49a4,
-  0x8932, 0x1fe1,
-  0x8933, 0x25bb,
-  0x8934, 0x1bc0,
-  0x8935, 0x49a5,
-  0x8936, 0x1bc2,
-  0x8937, 0x49a6,
-  0x8938, 0x25be,
-  0x8939, 0x49a7,
-  0x893b, 0x22dd,
-  0x893c, 0x49a9,
-  0x8941, 0x1bc3,
-  0x8942, 0x49ae,
-  0x8944, 0x0f52,
-  0x8945, 0x49b0,
-  0x8947, 0x25bd,
-  0x8948, 0x49b2,
-  0x8956, 0x1e2a,
-  0x8957, 0x49c0,
-  0x895d, 0x25bc,
-  0x895e, 0x1cc3,
-  0x895f, 0x08c4,
-  0x8960, 0x25ba,
-  0x8961, 0x49c6,
-  0x8964, 0x25bf,
-  0x8965, 0x49c9,
-  0x8966, 0x1bc4,
-  0x8967, 0x49ca,
-  0x896a, 0x2187,
-  0x896b, 0x49cd,
-  0x896c, 0x266b,
-  0x896d, 0x49ce,
-  0x896f, 0x1e7f,
-  0x8970, 0x49d0,
-  0x8972, 0x21ad,
-  0x8973, 0x49d2,
-  0x897b, 0x1bc5,
-  0x897c, 0x49da,
-  0x897f, 0x0f06,
-  0x8980, 0x49dd,
-  0x8981, 0x1031,
-  0x8982, 0x49de,
-  0x8983, 0x1bdf,
-  0x8984, 0x49df,
-  0x8986, 0x06ad,
-  0x8987, 0x49e1,
-  0x898b, 0x1f96,
-  0x898c, 0x49e5,
-  0x898f, 0x1f32,
-  0x8990, 0x49e8,
-  0x8993, 0x2084,
-  0x8994, 0x49eb,
-  0x8996, 0x2136,
-  0x8997, 0x49ed,
-  0x8998, 0x24b8,
-  0x8999, 0x49ee,
-  0x89a1, 0x24ba,
-  0x89a2, 0x49f6,
-  0x89a6, 0x24bc,
-  0x89a7, 0x49fa,
-  0x89aa, 0x20e4,
-  0x89ab, 0x49fd,
-  0x89ac, 0x24b9,
-  0x89ad, 0x49fe,
-  0x89af, 0x24bd,
-  0x89b0, 0x4a00,
-  0x89b2, 0x24be,
-  0x89b3, 0x4a02,
-  0x89b7, 0x24bf,
-  0x89b8, 0x4a06,
-  0x89ba, 0x1fd2,
-  0x89bb, 0x4a08,
-  0x89bd, 0x1ffd,
-  0x89be, 0x4a0a,
-  0x89bf, 0x24bb,
-  0x89c0, 0x1f2d,
-  0x89c1, 0x086e,
-  0x89c2, 0x0734,
-  0x89c3, 0x4a0b,
-  0x89c4, 0x073f,
-  0x89c5, 0x0ade,
-  0x89c6, 0x0d6a,
-  0x89c7, 0x193a,
-  0x89c8, 0x09ab,
-  0x89c9, 0x0924,
-  0x89ca, 0x193b,
-  0x89cd, 0x4a0c,
-  0x89ce, 0x193e,
-  0x89d2, 0x0898,
-  0x89d3, 0x4a0d,
-  0x89d6, 0x1d57,
-  0x89d7, 0x4a10,
-  0x89da, 0x1d59,
-  0x89db, 0x4a13,
-  0x89dc, 0x1d5a,
-  0x89dd, 0x4a14,
-  0x89de, 0x1d58,
-  0x89df, 0x4a15,
-  0x89e3, 0x08b3,
-  0x89e4, 0x4a19,
-  0x89e5, 0x1d5b,
-  0x89e6, 0x0528,
-  0x89e7, 0x4a1a,
-  0x89eb, 0x1d5c,
-  0x89ec, 0x4a1e,
-  0x89ef, 0x1d5d,
-  0x89f0, 0x4a21,
-  0x89f3, 0x19c0,
-  0x89f4, 0x2609,
-  0x89f5, 0x4a24,
-  0x89f6, 0x260a,
-  0x89f7, 0x4a25,
-  0x89f8, 0x1e94,
-  0x89f9, 0x4a26,
-  0x8a00, 0x0ffd,
-  0x8a01, 0x22df,
-  0x8a02, 0x1ecb,
-  0x8a03, 0x1f0d,
-  0x8a04, 0x4a2d,
-  0x8a07, 0x12fe,
-  0x8a08, 0x1f77,
-  0x8a09, 0x4a30,
-  0x8a0a, 0x21eb,
-  0x8a0b, 0x4a31,
-  0x8a0c, 0x22e1,
-  0x8a0d, 0x4a32,
-  0x8a0e, 0x216f,
-  0x8a0f, 0x4a33,
-  0x8a10, 0x22e0,
-  0x8a11, 0x4a34,
-  0x8a13, 0x21ea,
-  0x8a14, 0x4a36,
-  0x8a15, 0x22e2,
-  0x8a16, 0x20cb,
-  0x8a17, 0x4a37,
-  0x8a18, 0x1f78,
-  0x8a19, 0x4a38,
-  0x8a1b, 0x1ee2,
-  0x8a1c, 0x4a3a,
-  0x8a1d, 0x21f2,
-  0x8a1e, 0x4a3b,
-  0x8a1f, 0x2150,
-  0x8a20, 0x4a3c,
-  0x8a23, 0x1fd3,
-  0x8a24, 0x4a3f,
-  0x8a25, 0x22e5,
-  0x8a26, 0x4a40,
-  0x8a2a, 0x1ef2,
-  0x8a2b, 0x4a44,
-  0x8a2d, 0x211f,
-  0x8a2e, 0x4a46,
-  0x8a31, 0x21dd,
-  0x8a32, 0x4a49,
-  0x8a34, 0x2154,
-  0x8a35, 0x4a4b,
-  0x8a36, 0x22e7,
-  0x8a37, 0x4a4c,
-  0x8a3a, 0x2282,
-  0x8a3b, 0x4a4f,
-  0x8a3e, 0x1d5e,
-  0x8a3f, 0x4a52,
-  0x8a41, 0x22e6,
-  0x8a42, 0x4a54,
-  0x8a46, 0x22e8,
-  0x8a47, 0x4a58,
-  0x8a48, 0x1a84,
-  0x8a49, 0x4a59,
-  0x8a4e, 0x22e4,
-  0x8a4f, 0x4a5e,
-  0x8a50, 0x226a,
-  0x8a51, 0x4a5f,
-  0x8a52, 0x22eb,
-  0x8a53, 0x4a60,
-  0x8a54, 0x22e9,
-  0x8a55, 0x20bd,
-  0x8a56, 0x4a61,
-  0x8a58, 0x22ea,
-  0x8a59, 0x4a63,
-  0x8a5b, 0x22bd,
-  0x8a5c, 0x4a65,
-  0x8a5e, 0x1e9e,
-  0x8a5f, 0x4a67,
-  0x8a61, 0x22f6,
-  0x8a62, 0x21e7,
-  0x8a63, 0x2216,
-  0x8a64, 0x4a69,
-  0x8a66, 0x2137,
-  0x8a67, 0x4a6b,
-  0x8a69, 0x212c,
-  0x8a6a, 0x4a6d,
-  0x8a6b, 0x1e68,
-  0x8a6c, 0x22f2,
-  0x8a6d, 0x1f37,
-  0x8a6e, 0x22f3,
-  0x8a6f, 0x4a6e,
-  0x8a70, 0x22ef,
-  0x8a71, 0x1f50,
-  0x8a72, 0x1f10,
-  0x8a73, 0x21c8,
-  0x8a74, 0x4a6f,
-  0x8a75, 0x22f1,
-  0x8a76, 0x4a70,
-  0x8a79, 0x1153,
-  0x8a7a, 0x4a73,
-  0x8a7c, 0x22f0,
-  0x8a7d, 0x4a75,
-  0x8a7f, 0x22ee,
-  0x8a80, 0x4a77,
-  0x8a84, 0x22ed,
-  0x8a85, 0x229e,
-  0x8a86, 0x22ec,
-  0x8a87, 0x1fe2,
-  0x8a88, 0x4a7b,
-  0x8a89, 0x10e3,
-  0x8a8a, 0x0e2f,
-  0x8a8b, 0x4a7c,
-  0x8a8d, 0x20fe,
-  0x8a8e, 0x4a7e,
-  0x8a91, 0x22f9,
-  0x8a93, 0x0d5b,
-  0x8a94, 0x4a81,
-  0x8a95, 0x1eaf,
-  0x8a96, 0x4a82,
-  0x8a98, 0x2236,
-  0x8a99, 0x4a84,
-  0x8a9a, 0x22f7,
-  0x8a9b, 0x4a85,
-  0x8a9e, 0x223d,
-  0x8a9f, 0x4a88,
-  0x8aa0, 0x1e82,
-  0x8aa1, 0x1fb6,
-  0x8aa2, 0x4a89,
-  0x8aa3, 0x21a4,
-  0x8aa4, 0x21aa,
-  0x8aa5, 0x22f8,
-  0x8aa6, 0x2151,
-  0x8aa7, 0x4a8a,
-  0x8aa8, 0x1f60,
-  0x8aa9, 0x4a8b,
-  0x8aac, 0x2147,
-  0x8aad, 0x4a8e,
-  0x8ab0, 0x2145,
-  0x8ab1, 0x4a91,
-  0x8ab2, 0x1fdc,
-  0x8ab3, 0x4a92,
-  0x8ab6, 0x2301,
-  0x8ab7, 0x4a95,
-  0x8ab9, 0x1ef5,
-  0x8aba, 0x4a97,
-  0x8abc, 0x2218,
-  0x8abd, 0x4a99,
-  0x8abf, 0x1ec6,
-  0x8ac0, 0x4a9b,
-  0x8ac2, 0x2300,
-  0x8ac3, 0x4a9d,
-  0x8ac4, 0x22b4,
-  0x8ac5, 0x4a9e,
-  0x8ac7, 0x2169,
-  0x8ac8, 0x4aa0,
-  0x8ac9, 0x22fd,
-  0x8aca, 0x4aa1,
-  0x8acb, 0x20ea,
-  0x8acc, 0x4aa2,
-  0x8acd, 0x22f4,
-  0x8ace, 0x4aa3,
-  0x8acf, 0x22fb,
-  0x8ad0, 0x4aa4,
-  0x8ad1, 0x22fc,
-  0x8ad2, 0x2027,
-  0x8ad3, 0x4aa5,
-  0x8ad6, 0x2060,
-  0x8ad7, 0x22ff,
-  0x8ad8, 0x4aa8,
-  0x8adb, 0x22fe,
-  0x8adc, 0x1ec7,
-  0x8add, 0x4aab,
-  0x8ade, 0x230c,
-  0x8adf, 0x4aac,
-  0x8ae2, 0x22f5,
-  0x8ae3, 0x4aaf,
-  0x8ae4, 0x2306,
-  0x8ae5, 0x4ab0,
-  0x8ae6, 0x230a,
-  0x8ae7, 0x21d3,
-  0x8ae8, 0x4ab1,
-  0x8aeb, 0x2303,
-  0x8aec, 0x4ab4,
-  0x8aed, 0x2307,
-  0x8aee, 0x230b,
-  0x8aef, 0x4ab5,
-  0x8af1, 0x1f5f,
-  0x8af2, 0x4ab7,
-  0x8af3, 0x2309,
-  0x8af4, 0x4ab8,
-  0x8af6, 0x2302,
-  0x8af7, 0x1f04,
-  0x8af8, 0x229d,
-  0x8af9, 0x4aba,
-  0x8afa, 0x21fb,
-  0x8afb, 0x4abb,
-  0x8afc, 0x2308,
-  0x8afd, 0x4abc,
-  0x8afe, 0x20ac,
-  0x8aff, 0x4abd,
-  0x8b00, 0x208e,
-  0x8b01, 0x2305,
-  0x8b02, 0x2197,
-  0x8b03, 0x4abe,
-  0x8b04, 0x2171,
-  0x8b05, 0x2298,
-  0x8b06, 0x4abf,
-  0x8b07, 0x173c,
-  0x8b08, 0x4ac0,
-  0x8b0a, 0x1f57,
-  0x8b0b, 0x4ac2,
-  0x8b0e, 0x2082,
-  0x8b0f, 0x4ac5,
-  0x8b10, 0x2311,
-  0x8b11, 0x4ac6,
-  0x8b14, 0x2304,
-  0x8b15, 0x4ac9,
-  0x8b16, 0x230f,
-  0x8b17, 0x1e35,
-  0x8b18, 0x4aca,
-  0x8b19, 0x20d1,
-  0x8b1a, 0x2310,
-  0x8b1b, 0x1fa3,
-  0x8b1c, 0x4acb,
-  0x8b1d, 0x21d6,
-  0x8b1e, 0x4acc,
-  0x8b21, 0x2206,
-  0x8b22, 0x4acf,
-  0x8b26, 0x1d5f,
-  0x8b27, 0x4ad3,
-  0x8b28, 0x230d,
-  0x8b29, 0x4ad4,
-  0x8b2b, 0x2312,
-  0x8b2c, 0x208d,
-  0x8b2d, 0x2313,
-  0x8b2e, 0x4ad6,
-  0x8b33, 0x22e3,
-  0x8b34, 0x4adb,
-  0x8b39, 0x1fba,
-  0x8b3a, 0x4ae0,
-  0x8b3e, 0x2078,
-  0x8b3f, 0x4ae4,
-  0x8b49, 0x2288,
-  0x8b4a, 0x4aee,
-  0x8b4e, 0x2316,
-  0x8b4f, 0x1f6b,
-  0x8b50, 0x4af2,
-  0x8b56, 0x2314,
-  0x8b57, 0x4af8,
-  0x8b58, 0x2130,
-  0x8b59, 0x2315,
-  0x8b5a, 0x2168,
-  0x8b5b, 0x4af9,
-  0x8b5c, 0x20c4,
-  0x8b5d, 0x4afa,
-  0x8b66, 0x08de,
-  0x8b67, 0x4b03,
-  0x8b6b, 0x2318,
-  0x8b6c, 0x0bc8,
-  0x8b6d, 0x4b07,
-  0x8b6f, 0x2219,
-  0x8b70, 0x2217,
-  0x8b71, 0x4b09,
-  0x8b74, 0x20d5,
-  0x8b75, 0x4b0c,
-  0x8b77, 0x1f4a,
-  0x8b78, 0x4b0e,
-  0x8b7d, 0x2240,
-  0x8b7e, 0x4b13,
-  0x8b80, 0x1ed3,
-  0x8b81, 0x4b15,
-  0x8b8a, 0x1e49,
-  0x8b8b, 0x4b1e,
-  0x8b8e, 0x261b,
-  0x8b8f, 0x4b21,
-  0x8b92, 0x1e6d,
-  0x8b93, 0x20f8,
-  0x8b94, 0x4b24,
-  0x8b95, 0x1ffb,
-  0x8b96, 0x2319,
-  0x8b97, 0x4b25,
-  0x8b9c, 0x230e,
-  0x8b9d, 0x4b2a,
-  0x8b9e, 0x2317,
-  0x8b9f, 0x4b2b,
-  0x8ba0, 0x1317,
-  0x8ba1, 0x0839,
-  0x8ba2, 0x05e8,
-  0x8ba3, 0x06b7,
-  0x8ba4, 0x0caa,
-  0x8ba5, 0x0818,
-  0x8ba6, 0x1318,
-  0x8ba8, 0x0e29,
-  0x8ba9, 0x0c9e,
-  0x8baa, 0x131a,
-  0x8bab, 0x0c1c,
-  0x8bac, 0x4b2c,
-  0x8bad, 0x0fde,
-  0x8bae, 0x1070,
-  0x8baf, 0x0fdf,
-  0x8bb0, 0x083a,
-  0x8bb1, 0x4b2d,
-  0x8bb2, 0x0883,
-  0x8bb3, 0x07f9,
-  0x8bb4, 0x131b,
-  0x8bb6, 0x0ff1,
-  0x8bb7, 0x131d,
-  0x8bb8, 0x0fb8,
-  0x8bb9, 0x062e,
-  0x8bba, 0x0a82,
-  0x8bbb, 0x4b2e,
-  0x8bbc, 0x0dc4,
-  0x8bbd, 0x068a,
-  0x8bbe, 0x0d21,
-  0x8bbf, 0x0660,
-  0x8bc0, 0x0926,
-  0x8bc1, 0x11a3,
-  0x8bc2, 0x131e,
-  0x8bc4, 0x0bdf,
-  0x8bc5, 0x1244,
-  0x8bc6, 0x0d4d,
-  0x8bc7, 0x4b2f,
-  0x8bc8, 0x114a,
-  0x8bc9, 0x0dd4,
-  0x8bca, 0x1190,
-  0x8bcb, 0x1320,
-  0x8bcc, 0x11de,
-  0x8bcd, 0x054d,
-  0x8bce, 0x1322,
-  0x8bcf, 0x1321,
-  0x8bd0, 0x4b30,
-  0x8bd1, 0x1072,
-  0x8bd2, 0x1323,
-  0x8bd5, 0x0d6b,
-  0x8bd6, 0x1326,
-  0x8bd7, 0x0d42,
-  0x8bd8, 0x1327,
-  0x8bda, 0x04f4,
-  0x8bdb, 0x11ee,
-  0x8bdc, 0x1329,
-  0x8bdd, 0x07c5,
-  0x8bde, 0x058f,
-  0x8bdf, 0x132a,
-  0x8be1, 0x0747,
-  0x8be2, 0x0fd8,
-  0x8be3, 0x106f,
-  0x8be4, 0x132c,
-  0x8be5, 0x06be,
-  0x8be6, 0x0f57,
-  0x8be7, 0x04b6,
-  0x8be8, 0x132d,
-  0x8bea, 0x4b31,
-  0x8beb, 0x08bc,
-  0x8bec, 0x0eeb,
-  0x8bed, 0x10d4,
-  0x8bee, 0x132f,
-  0x8bef, 0x0f02,
-  0x8bf0, 0x1330,
-  0x8bf1, 0x10ba,
-  0x8bf2, 0x07fa,
-  0x8bf3, 0x1331,
-  0x8bf4, 0x0daa,
-  0x8bf5, 0x0dc5,
-  0x8bf6, 0x1332,
-  0x8bf7, 0x0c68,
-  0x8bf8, 0x11ed,
-  0x8bf9, 0x1333,
-  0x8bfa, 0x0b76,
-  0x8bfb, 0x0600,
-  0x8bfc, 0x1334,
-  0x8bfd, 0x0669,
-  0x8bfe, 0x095b,
-  0x8bff, 0x1335,
-  0x8c00, 0x1336,
-  0x8c01, 0x0da2,
-  0x8c02, 0x1337,
-  0x8c03, 0x05d8,
-  0x8c04, 0x1338,
-  0x8c05, 0x0a0b,
-  0x8c06, 0x1218,
-  0x8c07, 0x1339,
-  0x8c08, 0x0e0b,
-  0x8c09, 0x4b32,
-  0x8c0a, 0x1071,
-  0x8c0b, 0x0b14,
-  0x8c0c, 0x133a,
-  0x8c0d, 0x05de,
-  0x8c0e, 0x07e6,
-  0x8c0f, 0x133b,
-  0x8c10, 0x0f7e,
-  0x8c11, 0x133c,
-  0x8c13, 0x0ecc,
-  0x8c14, 0x133e,
-  0x8c17, 0x04be,
-  0x8c18, 0x1343,
-  0x8c19, 0x1341,
-  0x8c1a, 0x1011,
-  0x8c1b, 0x1342,
-  0x8c1c, 0x0ada,
-  0x8c1d, 0x1344,
-  0x8c1e, 0x4b33,
-  0x8c1f, 0x1345,
-  0x8c22, 0x0f86,
-  0x8c23, 0x102c,
-  0x8c24, 0x0404,
-  0x8c25, 0x1348,
-  0x8c26, 0x0c28,
-  0x8c27, 0x1349,
-  0x8c28, 0x08c8,
-  0x8c29, 0x0aa6,
-  0x8c2a, 0x134a,
-  0x8c2c, 0x0b02,
-  0x8c2d, 0x0e0a,
-  0x8c2e, 0x134c,
-  0x8c30, 0x09a9,
-  0x8c31, 0x0bf6,
-  0x8c32, 0x134e,
-  0x8c34, 0x0c31,
-  0x8c35, 0x1350,
-  0x8c37, 0x0721,
-  0x8c38, 0x4b34,
-  0x8c41, 0x0802,
-  0x8c42, 0x4b3d,
-  0x8c46, 0x05f8,
-  0x8c47, 0x1cf6,
-  0x8c48, 0x20c8,
-  0x8c49, 0x1cf7,
-  0x8c4a, 0x4b41,
-  0x8c4c, 0x0e94,
-  0x8c4d, 0x4b43,
-  0x8c50, 0x1efd,
-  0x8c51, 0x4b46,
-  0x8c55, 0x1d15,
-  0x8c56, 0x4b4a,
-  0x8c5a, 0x1990,
-  0x8c5b, 0x4b4e,
-  0x8c61, 0x0f60,
-  0x8c62, 0x07d4,
-  0x8c63, 0x4b54,
-  0x8c6a, 0x0777,
-  0x8c6b, 0x10e8,
-  0x8c6c, 0x4b5b,
-  0x8c73, 0x15dd,
-  0x8c74, 0x4b62,
-  0x8c78, 0x1d50,
-  0x8c79, 0x0413,
-  0x8c7a, 0x04b9,
-  0x8c7b, 0x4b66,
-  0x8c82, 0x1d51,
-  0x8c83, 0x4b6d,
-  0x8c85, 0x1d53,
-  0x8c86, 0x4b6f,
-  0x8c89, 0x0788,
-  0x8c8a, 0x1d52,
-  0x8c8b, 0x4b72,
-  0x8c8c, 0x0ab7,
-  0x8c8d, 0x4b73,
-  0x8c94, 0x1d55,
-  0x8c95, 0x4b7a,
-  0x8c98, 0x1d54,
-  0x8c99, 0x4b7d,
-  0x8c9d, 0x1e3b,
-  0x8c9e, 0x227f,
-  0x8c9f, 0x4b81,
-  0x8ca0, 0x1f0c,
-  0x8ca1, 0x1e59,
-  0x8ca2, 0x1f24,
-  0x8ca3, 0x4b82,
-  0x8ca7, 0x20ba,
-  0x8ca8, 0x1f65,
-  0x8ca9, 0x1ef0,
-  0x8caa, 0x2164,
-  0x8cab, 0x1f30,
-  0x8cac, 0x2261,
-  0x8cad, 0x4b86,
-  0x8caf, 0x22a2,
-  0x8cb0, 0x24ab,
-  0x8cb1, 0x4b88,
-  0x8cb2, 0x24af,
-  0x8cb3, 0x1ee8,
-  0x8cb4, 0x1f39,
-  0x8cb5, 0x4b89,
-  0x8cb6, 0x1e48,
-  0x8cb7, 0x2070,
-  0x8cb8, 0x1ea8,
-  0x8cb9, 0x4b8a,
-  0x8cba, 0x24ac,
-  0x8cbb, 0x1ef7,
-  0x8cbc, 0x2176,
-  0x8cbd, 0x24ad,
-  0x8cbe, 0x4b8b,
-  0x8cbf, 0x207b,
-  0x8cc0, 0x1f45,
-  0x8cc1, 0x24aa,
-  0x8cc2, 0x204b,
-  0x8cc3, 0x202f,
-  0x8cc4, 0x1f5a,
-  0x8cc5, 0x24b0,
-  0x8cc6, 0x4b8c,
-  0x8cc7, 0x22b7,
-  0x8cc8, 0x1f7f,
-  0x8cc9, 0x4b8d,
-  0x8cca, 0x2265,
-  0x8ccb, 0x4b8e,
-  0x8cd1, 0x24b2,
-  0x8cd2, 0x211b,
-  0x8cd3, 0x1e51,
-  0x8cd4, 0x4b94,
-  0x8cd5, 0x24b4,
-  0x8cd6, 0x4b95,
-  0x8cda, 0x24b3,
-  0x8cdb, 0x4b99,
-  0x8cdc, 0x1e9f,
-  0x8cdd, 0x4b9a,
-  0x8cde, 0x2118,
-  0x8cdf, 0x4b9b,
-  0x8ce0, 0x20b4,
-  0x8ce1, 0x23af,
-  0x8ce2, 0x21bb,
-  0x8ce3, 0x2072,
-  0x8ce4, 0x1f95,
-  0x8ce5, 0x4b9c,
-  0x8ce6, 0x1f0a,
-  0x8ce7, 0x24b6,
-  0x8ce8, 0x4b9d,
-  0x8cea, 0x2291,
-  0x8ceb, 0x24b5,
-  0x8cec, 0x2278,
-  0x8ced, 0x1ed4,
-  0x8cee, 0x4b9f,
-  0x8cf4, 0x1ff3,
-  0x8cf5, 0x4ba5,
-  0x8cfa, 0x22a9,
-  0x8cfb, 0x24b7,
-  0x8cfc, 0x1f28,
-  0x8cfd, 0x2109,
-  0x8cfe, 0x22c7,
-  0x8cff, 0x4baa,
-  0x8d00, 0x4bab,
-  0x8d04, 0x24ae,
-  0x8d05, 0x22b1,
-  0x8d06, 0x4baf,
-  0x8d08, 0x2266,
-  0x8d09, 0x4bb1,
-  0x8d0a, 0x225b,
-  0x8d0b, 0x22c4,
-  0x8d0c, 0x4bb2,
-  0x8d0d, 0x2115,
-  0x8d0e, 0x4bb3,
-  0x8d0f, 0x222a,
-  0x8d10, 0x24b1,
-  0x8d11, 0x4bb4,
-  0x8d16, 0x213d,
-  0x8d17, 0x4bb9,
-  0x8d1b, 0x1f15,
-  0x8d1c, 0x225c,
-  0x8d1d, 0x041d,
-  0x8d1e, 0x118b,
-  0x8d1f, 0x06b5,
-  0x8d20, 0x4bbd,
-  0x8d21, 0x070a,
-  0x8d22, 0x048d,
-  0x8d23, 0x1133,
-  0x8d24, 0x0f3a,
-  0x8d25, 0x03e7,
-  0x8d26, 0x116c,
-  0x8d27, 0x080a,
-  0x8d28, 0x11c9,
-  0x8d29, 0x0654,
-  0x8d2a, 0x0e03,
-  0x8d2b, 0x0bd5,
-  0x8d2c, 0x044a,
-  0x8d2d, 0x0713,
-  0x8d2e, 0x11fb,
-  0x8d2f, 0x073a,
-  0x8d30, 0x063e,
-  0x8d31, 0x086d,
-  0x8d32, 0x192c,
-  0x8d34, 0x0e4c,
-  0x8d35, 0x074c,
-  0x8d36, 0x192e,
-  0x8d37, 0x057e,
-  0x8d38, 0x0ab8,
-  0x8d39, 0x066e,
-  0x8d3a, 0x078f,
-  0x8d3b, 0x192f,
-  0x8d3c, 0x1137,
-  0x8d3d, 0x1930,
-  0x8d3e, 0x0849,
-  0x8d3f, 0x07f4,
-  0x8d40, 0x1931,
-  0x8d41, 0x0a27,
-  0x8d42, 0x0a5f,
-  0x8d43, 0x1122,
-  0x8d44, 0x1227,
-  0x8d45, 0x1932,
-  0x8d47, 0x1936,
-  0x8d48, 0x1934,
-  0x8d4a, 0x0d17,
-  0x8d4b, 0x06ae,
-  0x8d4c, 0x0603,
-  0x8d4d, 0x1937,
-  0x8d4e, 0x0d81,
-  0x8d4f, 0x0d06,
-  0x8d50, 0x0550,
-  0x8d51, 0x4bbe,
-  0x8d53, 0x163b,
-  0x8d54, 0x0ba3,
-  0x8d55, 0x1938,
-  0x8d56, 0x09a0,
-  0x8d57, 0x4bc0,
-  0x8d58, 0x1215,
-  0x8d59, 0x1939,
-  0x8d5a, 0x1209,
-  0x8d5b, 0x0cd7,
-  0x8d5c, 0x1289,
-  0x8d5d, 0x1283,
-  0x8d5e, 0x1121,
-  0x8d5f, 0x4bc1,
-  0x8d60, 0x113c,
-  0x8d61, 0x0cfd,
-  0x8d62, 0x1093,
-  0x8d63, 0x06ce,
-  0x8d64, 0x0505,
-  0x8d65, 0x4bc2,
-  0x8d66, 0x0d1b,
-  0x8d67, 0x1cf4,
-  0x8d68, 0x4bc3,
-  0x8d6b, 0x078c,
-  0x8d6c, 0x4bc6,
-  0x8d6d, 0x1cf5,
-  0x8d6e, 0x4bc7,
-  0x8d70, 0x123c,
-  0x8d71, 0x4bc9,
-  0x8d73, 0x1cef,
-  0x8d74, 0x06ab,
-  0x8d75, 0x1175,
-  0x8d76, 0x06ca,
-  0x8d77, 0x0c0f,
-  0x8d78, 0x4bcb,
-  0x8d81, 0x04e8,
-  0x8d82, 0x4bd4,
-  0x8d84, 0x1cf0,
-  0x8d85, 0x04d1,
-  0x8d86, 0x4bd6,
-  0x8d8a, 0x1100,
-  0x8d8b, 0x0c74,
-  0x8d8c, 0x4bda,
-  0x8d91, 0x1cf2,
-  0x8d92, 0x4bdf,
-  0x8d94, 0x1cf1,
-  0x8d95, 0x1f14,
-  0x8d96, 0x4be1,
-  0x8d99, 0x227a,
-  0x8d9a, 0x4be4,
-  0x8d9f, 0x0e1e,
-  0x8da0, 0x4be9,
-  0x8da3, 0x0c7f,
-  0x8da4, 0x4bec,
-  0x8da8, 0x20ee,
-  0x8da9, 0x4bf0,
-  0x8db1, 0x1cf3,
-  0x8db2, 0x25f8,
-  0x8db3, 0x1240,
-  0x8db4, 0x0b80,
-  0x8db5, 0x1d1c,
-  0x8db6, 0x4bf8,
-  0x8db8, 0x1d17,
-  0x8db9, 0x4bfa,
-  0x8dba, 0x1d1f,
-  0x8dbb, 0x4bfb,
-  0x8dbc, 0x1d1e,
-  0x8dbd, 0x4bfc,
-  0x8dbe, 0x11b9,
-  0x8dbf, 0x1d1d,
-  0x8dc0, 0x4bfd,
-  0x8dc3, 0x1101,
-  0x8dc4, 0x1d20,
-  0x8dc5, 0x4c00,
-  0x8dc6, 0x1d28,
-  0x8dc7, 0x4c01,
-  0x8dcb, 0x03da,
-  0x8dcc, 0x05d9,
-  0x8dcd, 0x4c05,
-  0x8dce, 0x1d25,
-  0x8dd0, 0x4c06,
-  0x8dd1, 0x0b9d,
-  0x8dd2, 0x4c07,
-  0x8dd6, 0x1d21,
-  0x8dd8, 0x4c0b,
-  0x8dda, 0x1d23,
-  0x8ddb, 0x1d27,
-  0x8ddc, 0x4c0d,
-  0x8ddd, 0x090f,
-  0x8dde, 0x1d24,
-  0x8ddf, 0x06f5,
-  0x8de0, 0x4c0e,
-  0x8de3, 0x1d2c,
-  0x8de4, 0x1d2f,
-  0x8de5, 0x4c11,
-  0x8de8, 0x0974,
-  0x8de9, 0x4c14,
-  0x8dea, 0x074b,
-  0x8deb, 0x1d18,
-  0x8dec, 0x1d29,
-  0x8ded, 0x4c15,
-  0x8def, 0x0a5e,
-  0x8df0, 0x4c17,
-  0x8df3, 0x0e4b,
-  0x8df4, 0x4c1a,
-  0x8df5, 0x086c,
-  0x8df6, 0x4c1b,
-  0x8df7, 0x1d2a,
-  0x8df9, 0x1d2d,
-  0x8dfa, 0x0624,
-  0x8dfb, 0x1d2e,
-  0x8dfc, 0x4c1c,
-  0x8dfd, 0x1d31,
-  0x8dfe, 0x4c1d,
-  0x8e00, 0x4c1f,
-  0x8e05, 0x1d19,
-  0x8e06, 0x4c24,
-  0x8e09, 0x1d30,
-  0x8e0a, 0x10a0,
-  0x8e0b, 0x4c27,
-  0x8e0c, 0x0511,
-  0x8e0d, 0x4c28,
-  0x8e0f, 0x0df7,
-  0x8e10, 0x1f94,
-  0x8e11, 0x4c2a,
-  0x8e14, 0x1d32,
-  0x8e15, 0x4c2d,
-  0x8e1d, 0x1d33,
-  0x8e1e, 0x0910,
-  0x8e1f, 0x1d34,
-  0x8e20, 0x4c35,
-  0x8e22, 0x0e32,
-  0x8e23, 0x1d37,
-  0x8e24, 0x4c37,
-  0x8e29, 0x048f,
-  0x8e2a, 0x1236,
-  0x8e2b, 0x4c3c,
-  0x8e2c, 0x1d35,
-  0x8e2d, 0x4c3d,
-  0x8e2e, 0x1d36,
-  0x8e2f, 0x1d38,
-  0x8e30, 0x4c3e,
-  0x8e31, 0x1d3e,
-  0x8e32, 0x4c3f,
-  0x8e34, 0x2230,
-  0x8e35, 0x1d3c,
-  0x8e36, 0x4c41,
-  0x8e39, 0x1d3b,
-  0x8e3a, 0x1d39,
-  0x8e3b, 0x4c44,
-  0x8e3d, 0x1d3d,
-  0x8e3e, 0x4c46,
-  0x8e40, 0x1d3a,
-  0x8e41, 0x1d40,
-  0x8e43, 0x4c48,
-  0x8e44, 0x0e36,
-  0x8e45, 0x4c49,
-  0x8e47, 0x173b,
-  0x8e48, 0x0599,
-  0x8e49, 0x1d3f,
-  0x8e4a, 0x1d44,
-  0x8e4b, 0x0df6,
-  0x8e4c, 0x25fd,
-  0x8e4d, 0x4c4b,
-  0x8e51, 0x1d42,
-  0x8e53, 0x4c4f,
-  0x8e55, 0x2600,
-  0x8e56, 0x4c51,
-  0x8e59, 0x1d1a,
-  0x8e5a, 0x4c54,
-  0x8e63, 0x2606,
-  0x8e64, 0x4c5d,
-  0x8e66, 0x042d,
-  0x8e67, 0x4c5f,
-  0x8e69, 0x1d1b,
-  0x8e6a, 0x4c61,
-  0x8e6c, 0x05a6,
-  0x8e6d, 0x04ab,
-  0x8e6e, 0x4c63,
-  0x8e6f, 0x1d48,
-  0x8e70, 0x1d45,
-  0x8e71, 0x4c64,
-  0x8e72, 0x0616,
-  0x8e73, 0x4c65,
-  0x8e74, 0x1d49,
-  0x8e75, 0x4c66,
-  0x8e76, 0x1d46,
-  0x8e77, 0x4c67,
-  0x8e7a, 0x25ff,
-  0x8e7b, 0x4c6a,
-  0x8e7c, 0x1d47,
-  0x8e7d, 0x4c6b,
-  0x8e7f, 0x055d,
-  0x8e80, 0x4c6d,
-  0x8e81, 0x112d,
-  0x8e82, 0x4c6e,
-  0x8e85, 0x1d4a,
-  0x8e86, 0x4c71,
-  0x8e87, 0x051e,
-  0x8e88, 0x4c72,
-  0x8e89, 0x25fc,
-  0x8e8a, 0x1e8c,
-  0x8e8b, 0x2602,
-  0x8e8c, 0x4c73,
-  0x8e8d, 0x224d,
-  0x8e8e, 0x4c74,
-  0x8e8f, 0x1d4b,
-  0x8e90, 0x1d4d,
-  0x8e91, 0x2604,
-  0x8e92, 0x25fe,
-  0x8e93, 0x2603,
-  0x8e94, 0x1d4c,
-  0x8e95, 0x4c75,
-  0x8e9a, 0x2601,
-  0x8e9b, 0x4c7a,
-  0x8e9c, 0x1d4e,
-  0x8e9d, 0x4c7b,
-  0x8e9e, 0x1d4f,
-  0x8e9f, 0x4c7c,
-  0x8ea1, 0x2605,
-  0x8ea2, 0x4c7e,
-  0x8ea5, 0x1ea3,
-  0x8ea6, 0x2608,
-  0x8ea7, 0x4c81,
-  0x8eaa, 0x2607,
-  0x8eab, 0x0d26,
-  0x8eac, 0x0703,
-  0x8ead, 0x4c84,
-  0x8eaf, 0x0c78,
-  0x8eb0, 0x4c86,
-  0x8eb2, 0x0622,
-  0x8eb3, 0x4c88,
-  0x8eba, 0x0e1c,
-  0x8ebb, 0x4c8f,
-  0x8ec0, 0x20f0,
-  0x8ec1, 0x4c94,
-  0x8eca, 0x1e7b,
-  0x8ecb, 0x2267,
-  0x8ecc, 0x1f36,
-  0x8ecd, 0x1fd6,
-  0x8ece, 0x18f8,
-  0x8ecf, 0x4c9d,
-  0x8ed2, 0x21e0,
-  0x8ed3, 0x4ca0,
-  0x8ed4, 0x248c,
-  0x8ed5, 0x4ca1,
-  0x8edb, 0x248d,
-  0x8edc, 0x4ca7,
-  0x8edf, 0x2102,
-  0x8ee0, 0x4caa,
-  0x8ee4, 0x2494,
-  0x8ee5, 0x4cae,
-  0x8eeb, 0x2493,
-  0x8eec, 0x4cb4,
-  0x8ef2, 0x248e,
-  0x8ef3, 0x4cba,
-  0x8ef8, 0x2299,
-  0x8ef9, 0x2491,
-  0x8efa, 0x2496,
-  0x8efb, 0x248f,
-  0x8efc, 0x2492,
-  0x8efd, 0x4cbf,
-  0x8efe, 0x2497,
-  0x8eff, 0x4cc0,
-  0x8f00, 0x4cc1,
-  0x8f03, 0x1fb1,
-  0x8f04, 0x4cc4,
-  0x8f05, 0x249a,
-  0x8f06, 0x4cc5,
-  0x8f07, 0x2499,
-  0x8f08, 0x4cc6,
-  0x8f09, 0x2258,
-  0x8f0a, 0x2498,
-  0x8f0b, 0x4cc7,
-  0x8f12, 0x249b,
-  0x8f13, 0x4cce,
-  0x8f14, 0x1f09,
-  0x8f15, 0x20e6,
-  0x8f16, 0x4ccf,
-  0x8f1b, 0x2026,
-  0x8f1c, 0x249f,
-  0x8f1d, 0x1f59,
-  0x8f1e, 0x249d,
-  0x8f20, 0x4cd4,
-  0x8f25, 0x1f3b,
-  0x8f26, 0x249c,
-  0x8f27, 0x4cd9,
-  0x8f29, 0x1e3a,
-  0x8f2a, 0x205b,
-  0x8f2b, 0x4cdb,
-  0x8f2f, 0x1f70,
-  0x8f30, 0x4cdf,
-  0x8f33, 0x24a0,
-  0x8f34, 0x4ce2,
-  0x8f38, 0x213b,
-  0x8f39, 0x4ce6,
-  0x8f3b, 0x1f07,
-  0x8f3c, 0x4ce8,
-  0x8f3e, 0x2270,
-  0x8f3f, 0x2237,
-  0x8f40, 0x4cea,
-  0x8f42, 0x24d2,
-  0x8f43, 0x4cec,
-  0x8f44, 0x21b3,
-  0x8f45, 0x2245,
-  0x8f46, 0x24a1,
-  0x8f47, 0x4ced,
-  0x8f49, 0x22a8,
-  0x8f4a, 0x4cef,
-  0x8f4d, 0x227c,
-  0x8f4e, 0x1fb0,
-  0x8f4f, 0x4cf2,
-  0x8f54, 0x24a2,
-  0x8f55, 0x4cf7,
-  0x8f5f, 0x1f46,
-  0x8f60, 0x4d01,
-  0x8f61, 0x2380,
-  0x8f62, 0x2495,
-  0x8f63, 0x4d02,
-  0x8f64, 0x2490,
-  0x8f65, 0x4d03,
-  0x8f66, 0x04da,
-  0x8f67, 0x1141,
-  0x8f68, 0x0745,
-  0x8f69, 0x0fc4,
-  0x8f6a, 0x4d04,
-  0x8f6b, 0x18e1,
-  0x8f6c, 0x1207,
-  0x8f6d, 0x18e2,
-  0x8f6e, 0x0a7d,
-  0x8f6f, 0x0cc8,
-  0x8f70, 0x079b,
-  0x8f71, 0x18e3,
-  0x8f74, 0x11e0,
-  0x8f75, 0x18e6,
-  0x8f77, 0x18e9,
-  0x8f78, 0x18e8,
-  0x8f79, 0x18ea,
-  0x8f7b, 0x0c5e,
-  0x8f7c, 0x18ec,
-  0x8f7d, 0x111b,
-  0x8f7e, 0x18ed,
-  0x8f7f, 0x089f,
-  0x8f80, 0x4d05,
-  0x8f81, 0x18ee,
-  0x8f83, 0x08a0,
-  0x8f84, 0x18f0,
-  0x8f85, 0x06a3,
-  0x8f86, 0x0a07,
-  0x8f87, 0x18f1,
-  0x8f88, 0x041b,
-  0x8f89, 0x07e9,
-  0x8f8a, 0x074e,
-  0x8f8b, 0x18f2,
-  0x8f8c, 0x4d06,
-  0x8f8d, 0x18f3,
-  0x8f90, 0x0695,
-  0x8f91, 0x0820,
-  0x8f92, 0x4d07,
-  0x8f93, 0x0d7b,
-  0x8f94, 0x1574,
-  0x8f95, 0x10f2,
-  0x8f96, 0x0f2a,
-  0x8f97, 0x1158,
-  0x8f98, 0x18f6,
-  0x8f99, 0x117f,
-  0x8f9a, 0x18f7,
-  0x8f9b, 0x0f8c,
-  0x8f9c, 0x0715,
-  0x8f9d, 0x4d08,
-  0x8f9e, 0x054a,
-  0x8f9f, 0x0442,
-  0x8fa0, 0x4d09,
-  0x8fa3, 0x099c,
-  0x8fa4, 0x4d0c,
-  0x8fa6, 0x1e30,
-  0x8fa7, 0x4d0e,
-  0x8fa8, 0x044f,
-  0x8faa, 0x4d0f,
-  0x8fab, 0x0451,
-  0x8fac, 0x4d10,
-  0x8fad, 0x1e9d,
-  0x8fae, 0x1e4b,
-  0x8faf, 0x1e4a,
-  0x8fb0, 0x04e2,
-  0x8fb1, 0x0cc3,
-  0x8fb2, 0x20aa,
-  0x8fb3, 0x4d11,
-  0x8fb6, 0x173d,
-  0x8fb7, 0x4d14,
-  0x8fb9, 0x0448,
-  0x8fba, 0x4d16,
-  0x8fbd, 0x0a12,
-  0x8fbe, 0x0572,
-  0x8fbf, 0x4d19,
-  0x8fc1, 0x0c25,
-  0x8fc2, 0x10bd,
-  0x8fc3, 0x4d1b,
-  0x8fc4, 0x0c18,
-  0x8fc5, 0x0fe1,
-  0x8fc6, 0x4d1c,
-  0x8fc7, 0x0756,
-  0x8fc8, 0x0a9c,
-  0x8fc9, 0x4d1d,
-  0x8fce, 0x1092,
-  0x8fcf, 0x4d22,
-  0x8fd0, 0x110e,
-  0x8fd1, 0x08cd,
-  0x8fd2, 0x4d23,
-  0x8fd3, 0x173e,
-  0x8fd4, 0x0652,
-  0x8fd5, 0x173f,
-  0x8fd6, 0x4d24,
-  0x8fd8, 0x07ce,
-  0x8fd9, 0x1183,
-  0x8fda, 0x4d26,
-  0x8fdb, 0x08c9,
-  0x8fdc, 0x10f9,
-  0x8fdd, 0x0eb4,
-  0x8fde, 0x09f5,
-  0x8fdf, 0x04fe,
-  0x8fe0, 0x4d27,
-  0x8fe2, 0x0e49,
-  0x8fe3, 0x4d29,
-  0x8fe4, 0x1742,
-  0x8fe5, 0x1740,
-  0x8fe6, 0x1744,
-  0x8fe7, 0x4d2a,
-  0x8fe8, 0x1746,
-  0x8fe9, 0x1743,
-  0x8fea, 0x05b0,
-  0x8feb, 0x0be7,
-  0x8fec, 0x4d2b,
-  0x8fed, 0x05dd,
-  0x8fee, 0x1741,
-  0x8fef, 0x4d2c,
-  0x8ff0, 0x0d8d,
-  0x8ff1, 0x4d2d,
-  0x8ff3, 0x1745,
-  0x8ff4, 0x267b,
-  0x8ff5, 0x4d2f,
-  0x8ff7, 0x0ad9,
-  0x8ff8, 0x042e,
-  0x8ff9, 0x0816,
-  0x8ffa, 0x4d31,
-  0x8ffd, 0x1214,
-  0x8ffe, 0x4d34,
-  0x9000, 0x0e7c,
-  0x9001, 0x0dc2,
-  0x9002, 0x0d61,
-  0x9003, 0x0e26,
-  0x9004, 0x1748,
-  0x9005, 0x1747,
-  0x9006, 0x0b49,
-  0x9007, 0x4d36,
-  0x9009, 0x0fca,
-  0x900a, 0x0fe0,
-  0x900b, 0x1749,
-  0x900c, 0x4d38,
-  0x900d, 0x174c,
-  0x900e, 0x4d39,
-  0x900f, 0x0e69,
-  0x9010, 0x11ef,
-  0x9011, 0x174b,
-  0x9012, 0x05be,
-  0x9013, 0x4d3a,
-  0x9014, 0x0e6f,
-  0x9015, 0x23f2,
-  0x9016, 0x174d,
-  0x9017, 0x05f9,
-  0x9018, 0x4d3b,
-  0x9019, 0x227e,
-  0x901a, 0x0e59,
-  0x901b, 0x073d,
-  0x901c, 0x4d3c,
-  0x901d, 0x0d5c,
-  0x901e, 0x04f6,
-  0x901f, 0x0dce,
-  0x9020, 0x112f,
-  0x9021, 0x174e,
-  0x9022, 0x0687,
-  0x9023, 0x2019,
-  0x9024, 0x4d3d,
-  0x9026, 0x174a,
-  0x9027, 0x4d3f,
-  0x902d, 0x1751,
-  0x902e, 0x0581,
-  0x902f, 0x1752,
-  0x9030, 0x4d45,
-  0x9032, 0x1fbb,
-  0x9033, 0x4d47,
-  0x9035, 0x174f,
-  0x9037, 0x4d49,
-  0x9038, 0x1064,
-  0x9039, 0x4d4a,
-  0x903b, 0x0a86,
-  0x903c, 0x042f,
-  0x903d, 0x4d4c,
-  0x903e, 0x10c7,
-  0x903f, 0x4d4d,
-  0x9041, 0x061c,
-  0x9042, 0x0de1,
-  0x9043, 0x4d4f,
-  0x9044, 0x1753,
-  0x9045, 0x4d50,
-  0x9047, 0x10db,
-  0x9048, 0x4d52,
-  0x904b, 0x2253,
-  0x904c, 0x4d55,
-  0x904d, 0x0452,
-  0x904e, 0x1f3e,
-  0x904f, 0x0633,
-  0x9050, 0x1756,
-  0x9051, 0x1754,
-  0x9053, 0x05a1,
-  0x9054, 0x1ea6,
-  0x9055, 0x218e,
-  0x9056, 0x4d56,
-  0x9057, 0x104c,
-  0x9058, 0x1758,
-  0x9059, 0x4d57,
-  0x905b, 0x175a,
-  0x905c, 0x21ec,
-  0x905d, 0x4d59,
-  0x905e, 0x1ebe,
-  0x905f, 0x4d5a,
-  0x9060, 0x224a,
-  0x9061, 0x4d5b,
-  0x9062, 0x1759,
-  0x9063, 0x0c2f,
-  0x9064, 0x4d5c,
-  0x9065, 0x102a,
-  0x9066, 0x4d5d,
-  0x9068, 0x1757,
-  0x9069, 0x2133,
-  0x906a, 0x4d5f,
-  0x906d, 0x1125,
-  0x906e, 0x117b,
-  0x906f, 0x4d62,
-  0x9072, 0x1e84,
-  0x9073, 0x4d65,
-  0x9074, 0x175c,
-  0x9075, 0x124e,
-  0x9076, 0x4d66,
-  0x9077, 0x20cf,
-  0x9078, 0x21e2,
-  0x9079, 0x4d67,
-  0x907a, 0x220f,
-  0x907b, 0x4d68,
-  0x907c, 0x2029,
-  0x907d, 0x175d,
-  0x907e, 0x4d69,
-  0x907f, 0x0445,
-  0x9080, 0x1024,
-  0x9081, 0x2073,
-  0x9082, 0x175e,
-  0x9083, 0x1760,
-  0x9084, 0x1f55,
-  0x9085, 0x4d6a,
-  0x9087, 0x23f1,
-  0x9088, 0x175f,
-  0x9089, 0x4d6c,
-  0x908a, 0x1e46,
-  0x908b, 0x1761,
-  0x908c, 0x4d6d,
-  0x908f, 0x2063,
-  0x9090, 0x23f3,
-  0x9091, 0x105f,
-  0x9092, 0x4d70,
-  0x9093, 0x05ac,
-  0x9094, 0x4d71,
-  0x9095, 0x1817,
-  0x9096, 0x4d72,
-  0x9097, 0x1367,
-  0x9098, 0x4d73,
-  0x9099, 0x136a,
-  0x909a, 0x4d74,
-  0x909b, 0x1368,
-  0x909c, 0x4d75,
-  0x909d, 0x1369,
-  0x909e, 0x4d76,
-  0x90a1, 0x136c,
-  0x90a2, 0x0f9a,
-  0x90a3, 0x0b2a,
-  0x90a4, 0x4d79,
-  0x90a6, 0x03f9,
-  0x90a7, 0x4d7b,
-  0x90aa, 0x0f7b,
-  0x90ab, 0x4d7e,
-  0x90ac, 0x136b,
-  0x90ad, 0x4d7f,
-  0x90ae, 0x10af,
-  0x90af, 0x0761,
-  0x90b0, 0x1372,
-  0x90b1, 0x0c6e,
-  0x90b2, 0x4d80,
-  0x90b3, 0x136e,
-  0x90b4, 0x136d,
-  0x90b5, 0x0d14,
-  0x90b6, 0x136f,
-  0x90b7, 0x4d81,
-  0x90b8, 0x1371,
-  0x90b9, 0x123b,
-  0x90ba, 0x1370,
-  0x90bb, 0x0a23,
-  0x90bc, 0x4d82,
-  0x90be, 0x1375,
-  0x90bf, 0x4d84,
-  0x90c1, 0x10d9,
-  0x90c2, 0x4d86,
-  0x90c4, 0x1377,
-  0x90c5, 0x1374,
-  0x90c6, 0x4d88,
-  0x90c7, 0x1378,
-  0x90c8, 0x4d89,
-  0x90ca, 0x088d,
-  0x90cb, 0x4d8b,
-  0x90ce, 0x09b4,
-  0x90cf, 0x1373,
-  0x90d0, 0x1376,
-  0x90d1, 0x11a2,
-  0x90d2, 0x4d8e,
-  0x90d3, 0x1379,
-  0x90d4, 0x4d8f,
-  0x90d7, 0x137d,
-  0x90d8, 0x4d92,
-  0x90db, 0x137e,
-  0x90dc, 0x137c,
-  0x90dd, 0x0779,
-  0x90de, 0x4d95,
-  0x90df, 0x231e,
-  0x90e0, 0x4d96,
-  0x90e1, 0x0931,
-  0x90e2, 0x137b,
-  0x90e3, 0x4d97,
-  0x90e6, 0x137a,
-  0x90e7, 0x110a,
-  0x90e8, 0x0486,
-  0x90e9, 0x4d9a,
-  0x90eb, 0x137f,
-  0x90ec, 0x4d9c,
-  0x90ed, 0x0752,
-  0x90ee, 0x4d9d,
-  0x90ef, 0x1380,
-  0x90f0, 0x4d9e,
-  0x90f4, 0x04e0,
-  0x90f5, 0x2233,
-  0x90f6, 0x4da2,
-  0x90f8, 0x0587,
-  0x90f9, 0x4da4,
-  0x90fd, 0x05fb,
-  0x90fe, 0x1381,
-  0x90ff, 0x4da8,
-  0x9100, 0x4da9,
-  0x9102, 0x0634,
-  0x9103, 0x4dab,
-  0x9104, 0x1382,
-  0x9105, 0x4dac,
-  0x9106, 0x2320,
-  0x9107, 0x4dad,
-  0x9109, 0x21c7,
-  0x910a, 0x4daf,
-  0x9112, 0x22bc,
-  0x9113, 0x4db7,
-  0x9114, 0x231c,
-  0x9115, 0x4db8,
-  0x9116, 0x2251,
-  0x9117, 0x4db9,
-  0x9119, 0x0432,
-  0x911a, 0x4dbb,
-  0x911e, 0x1384,
-  0x911f, 0x4dbf,
-  0x9122, 0x1383,
-  0x9123, 0x1385,
-  0x9124, 0x4dc2,
-  0x9127, 0x1ebb,
-  0x9128, 0x4dc5,
-  0x912d, 0x2287,
-  0x912e, 0x4dca,
-  0x912f, 0x1387,
-  0x9130, 0x202d,
-  0x9131, 0x1386,
-  0x9132, 0x1eab,
-  0x9133, 0x4dcb,
-  0x9134, 0x231d,
-  0x9135, 0x4dcc,
-  0x9136, 0x231f,
-  0x9137, 0x4dcd,
-  0x9139, 0x1388,
-  0x913a, 0x231b,
-  0x913b, 0x4dcf,
-  0x9143, 0x1389,
-  0x9144, 0x4dd7,
-  0x9146, 0x138a,
-  0x9147, 0x4dd9,
-  0x9148, 0x2321,
-  0x9149, 0x10b4,
-  0x914a, 0x1cf8,
-  0x914b, 0x0c72,
-  0x914c, 0x1220,
-  0x914d, 0x0ba5,
-  0x914e, 0x1cfa,
-  0x9150, 0x1cf9,
-  0x9151, 0x4dda,
-  0x9152, 0x08f5,
-  0x9153, 0x4ddb,
-  0x9157, 0x0fba,
-  0x9158, 0x4ddf,
-  0x915a, 0x0670,
-  0x915b, 0x4de1,
-  0x915d, 0x1110,
-  0x915e, 0x0dfd,
-  0x915f, 0x4de3,
-  0x9161, 0x1cfe,
-  0x9162, 0x1cfd,
-  0x9163, 0x075f,
-  0x9164, 0x1cfc,
-  0x9165, 0x0dcb,
-  0x9166, 0x4de5,
-  0x9169, 0x1d00,
-  0x916a, 0x09bd,
-  0x916b, 0x4de8,
-  0x916c, 0x050f,
-  0x916d, 0x4de9,
-  0x916e, 0x0e5b,
-  0x916f, 0x1d01,
-  0x9170, 0x1cff,
-  0x9171, 0x0885,
-  0x9172, 0x1d04,
-  0x9173, 0x4dea,
-  0x9174, 0x1d05,
-  0x9175, 0x089e,
-  0x9176, 0x0abd,
-  0x9177, 0x096e,
-  0x9178, 0x0dd6,
-  0x9179, 0x1d06,
-  0x917a, 0x4deb,
-  0x917d, 0x1d02,
-  0x917f, 0x0b53,
-  0x9180, 0x4dee,
-  0x9185, 0x1d08,
-  0x9186, 0x4df3,
-  0x9187, 0x053f,
-  0x9188, 0x4df4,
-  0x9189, 0x124a,
-  0x918a, 0x4df5,
-  0x918b, 0x055a,
-  0x918c, 0x1d07,
-  0x918d, 0x1d0a,
-  0x918e, 0x4df6,
-  0x9190, 0x1d09,
-  0x9191, 0x1d0b,
-  0x9192, 0x0f9c,
-  0x9193, 0x4df8,
-  0x9196, 0x2255,
-  0x9197, 0x4dfb,
-  0x919a, 0x0ad6,
-  0x919b, 0x0c84,
-  0x919c, 0x1e8f,
-  0x919d, 0x4dfe,
-  0x91a2, 0x1d0c,
-  0x91a4, 0x4e03,
-  0x91aa, 0x1d0e,
-  0x91ab, 0x220c,
-  0x91ac, 0x1fa4,
-  0x91ad, 0x1d0f,
-  0x91b0, 0x4e09,
-  0x91b4, 0x1d13,
-  0x91b5, 0x1d12,
-  0x91b6, 0x4e0d,
-  0x91ba, 0x1d14,
-  0x91bb, 0x4e11,
-  0x91c0, 0x209b,
-  0x91c1, 0x21d8,
-  0x91c2, 0x4e16,
-  0x91c3, 0x25fa,
-  0x91c4, 0x4e17,
-  0x91c5, 0x25f9,
-  0x91c6, 0x4e18,
-  0x91c7, 0x0490,
-  0x91c8, 0x4e19,
-  0x91c9, 0x10b9,
-  0x91ca, 0x0d64,
-  0x91cb, 0x2134,
-  0x91cc, 0x09da,
-  0x91cd, 0x11d7,
-  0x91ce, 0x1037,
-  0x91cf, 0x0a08,
-  0x91d0, 0x4e1a,
-  0x91d1, 0x08c1,
-  0x91d2, 0x24f3,
-  0x91d5, 0x24f8,
-  0x91d6, 0x4e1b,
-  0x91d7, 0x24f7,
-  0x91d8, 0x1ec8,
-  0x91d9, 0x24f6,
-  0x91da, 0x4e1c,
-  0x91dc, 0x06a5,
-  0x91dd, 0x2280,
-  0x91de, 0x4e1e,
-  0x91e3, 0x1ec5,
-  0x91e4, 0x24fb,
-  0x91e5, 0x4e23,
-  0x91e7, 0x24fa,
-  0x91e8, 0x4e25,
-  0x91e9, 0x1eed,
-  0x91ea, 0x4e26,
-  0x91f5, 0x24fd,
-  0x91f6, 0x4e31,
-  0x91f7, 0x24f9,
-  0x91f8, 0x4e32,
-  0x91f9, 0x24fe,
-  0x91fa, 0x20cd,
-  0x91fb, 0x4e33,
-  0x9200, 0x2508,
-  0x9201, 0x2504,
-  0x9202, 0x4e38,
-  0x9204, 0x2506,
-  0x9205, 0x4e3a,
-  0x9208, 0x24ff,
-  0x9209, 0x2090,
-  0x920a, 0x4e3d,
-  0x920d, 0x1edd,
-  0x920e, 0x1f25,
-  0x920f, 0x4e40,
-  0x9210, 0x2503,
-  0x9211, 0x2502,
-  0x9212, 0x4e41,
-  0x9214, 0x1e7a,
-  0x9215, 0x20a6,
-  0x9216, 0x4e43,
-  0x921e, 0x1fd5,
-  0x921f, 0x4e4b,
-  0x9223, 0x1f11,
-  0x9224, 0x4e4f,
-  0x9225, 0x2507,
-  0x9226, 0x2500,
-  0x9227, 0x2505,
-  0x9228, 0x4e50,
-  0x922e, 0x2519,
-  0x922f, 0x4e56,
-  0x9230, 0x2515,
-  0x9231, 0x4e57,
-  0x9233, 0x250c,
-  0x9234, 0x2031,
-  0x9235, 0x4e59,
-  0x9237, 0x250b,
-  0x9238, 0x250f,
-  0x9239, 0x251a,
-  0x923a, 0x2509,
-  0x923b, 0x4e5b,
-  0x923d, 0x250e,
-  0x923e, 0x2234,
-  0x923f, 0x2513,
-  0x9240, 0x1f80,
-  0x9241, 0x4e5d,
-  0x9245, 0x2501,
-  0x9246, 0x4e61,
-  0x9248, 0x2517,
-  0x9249, 0x2516,
-  0x924a, 0x4e63,
-  0x924d, 0x2518,
-  0x924e, 0x4e66,
-  0x9251, 0x1e56,
-  0x9252, 0x4e69,
-  0x9255, 0x250d,
-  0x9256, 0x4e6c,
-  0x9257, 0x20d3,
-  0x9258, 0x4e6d,
-  0x925a, 0x207a,
-  0x925b, 0x20ce,
-  0x925c, 0x4e6f,
-  0x925e, 0x2510,
-  0x925f, 0x4e71,
-  0x9262, 0x1e55,
-  0x9263, 0x4e74,
-  0x9266, 0x250a,
-  0x9267, 0x4e77,
-  0x926c, 0x2511,
-  0x926e, 0x4e7c,
-  0x9274, 0x086b,
-  0x9275, 0x4e82,
-  0x9278, 0x1faa,
-  0x9279, 0x4e85,
-  0x927a, 0x251e,
-  0x927b, 0x1f1f,
-  0x927c, 0x4e86,
-  0x927f, 0x252d,
-  0x9280, 0x221d,
-  0x9281, 0x4e89,
-  0x9283, 0x2532,
-  0x9284, 0x4e8b,
-  0x9285, 0x217b,
-  0x9286, 0x4e8c,
-  0x928e, 0x1d80,
-  0x928f, 0x4e94,
-  0x9291, 0x21af,
-  0x9292, 0x4e96,
-  0x9293, 0x252c,
-  0x9294, 0x4e97,
-  0x9296, 0x2528,
-  0x9297, 0x4e99,
-  0x9298, 0x208c,
-  0x9299, 0x4e9a,
-  0x929a, 0x252f,
-  0x929b, 0x4e9b,
-  0x929c, 0x21bc,
-  0x929d, 0x4e9c,
-  0x92a0, 0x251d,
-  0x92a1, 0x4e9f,
-  0x92a3, 0x2535,
-  0x92a4, 0x4ea1,
-  0x92a5, 0x220d,
-  0x92a6, 0x2526,
-  0x92a7, 0x4ea2,
-  0x92a8, 0x2534,
-  0x92a9, 0x252a,
-  0x92aa, 0x251f,
-  0x92ab, 0x2531,
-  0x92ac, 0x251c,
-  0x92ad, 0x4ea3,
-  0x92ae, 0x1d81,
-  0x92af, 0x4ea4,
-  0x92b1, 0x2525,
-  0x92b2, 0x4ea6,
-  0x92b7, 0x21cd,
-  0x92b8, 0x4eab,
-  0x92b9, 0x21da,
-  0x92ba, 0x4eac,
-  0x92bb, 0x2172,
-  0x92bc, 0x253e,
-  0x92bd, 0x4ead,
-  0x92c1, 0x204f,
-  0x92c2, 0x4eb1,
-  0x92c3, 0x2543,
-  0x92c4, 0x4eb2,
-  0x92c5, 0x21d7,
-  0x92c6, 0x4eb3,
-  0x92c7, 0x1e3c,
-  0x92c8, 0x1d82,
-  0x92c9, 0x4eb4,
-  0x92cc, 0x2529,
-  0x92cd, 0x4eb7,
-  0x92cf, 0x2521,
-  0x92d0, 0x4eb9,
-  0x92d2, 0x1eff,
-  0x92d3, 0x4ebb,
-  0x92dd, 0x253f,
-  0x92de, 0x4ec5,
-  0x92df, 0x2544,
-  0x92e0, 0x4ec6,
-  0x92e3, 0x2523,
-  0x92e4, 0x1e90,
-  0x92e5, 0x253a,
-  0x92e6, 0x2545,
-  0x92e7, 0x4ec9,
-  0x92e8, 0x253d,
-  0x92e9, 0x4eca,
-  0x92ea, 0x20c1,
-  0x92eb, 0x4ecb,
-  0x92ed, 0x2103,
-  0x92ee, 0x2520,
-  0x92ef, 0x253c,
-  0x92f0, 0x253b,
-  0x92f1, 0x2538,
-  0x92f2, 0x4ecd,
-  0x92f6, 0x2540,
-  0x92f7, 0x4ed1,
-  0x92f8, 0x1fcd,
-  0x92f9, 0x4ed2,
-  0x92fc, 0x1f18,
-  0x92fd, 0x4ed5,
-  0x9300, 0x4ed8,
-  0x9301, 0x254b,
-  0x9302, 0x4ed9,
-  0x9306, 0x2547,
-  0x9307, 0x254f,
-  0x9309, 0x4edd,
-  0x9310, 0x22b0,
-  0x9311, 0x4ee4,
-  0x9312, 0x2546,
-  0x9313, 0x4ee5,
-  0x9315, 0x254c,
-  0x9316, 0x4ee7,
-  0x9318, 0x1e9a,
-  0x9319, 0x2552,
-  0x931a, 0x2530,
-  0x931b, 0x2549,
-  0x931c, 0x4ee9,
-  0x931f, 0x2551,
-  0x9320, 0x1eca,
-  0x9321, 0x4eec,
-  0x9322, 0x20d2,
-  0x9323, 0x4eed,
-  0x9326, 0x1fb8,
-  0x9327, 0x4ef0,
-  0x9328, 0x2079,
-  0x9329, 0x4ef1,
-  0x932b, 0x21ab,
-  0x932c, 0x4ef3,
-  0x932e, 0x254d,
-  0x932f, 0x1ea5,
-  0x9330, 0x4ef5,
-  0x9332, 0x204c,
-  0x9333, 0x2080,
-  0x9334, 0x4ef7,
-  0x9336, 0x266d,
-  0x9337, 0x4ef9,
-  0x9338, 0x2537,
-  0x9339, 0x4efa,
-  0x933e, 0x1d83,
-  0x933f, 0x4eff,
-  0x9340, 0x254a,
-  0x9341, 0x21b8,
-  0x9342, 0x4f00,
-  0x9343, 0x254e,
-  0x9344, 0x4f01,
-  0x9346, 0x24fc,
-  0x9347, 0x2554,
-  0x9348, 0x4f03,
-  0x934b, 0x1f3c,
-  0x934c, 0x4f06,
-  0x934d, 0x1ed5,
-  0x934e, 0x4f07,
-  0x9354, 0x2556,
-  0x9355, 0x4f0d,
-  0x9358, 0x2268,
-  0x9359, 0x4f10,
-  0x935b, 0x1ed6,
-  0x935c, 0x4f12,
-  0x9364, 0x2557,
-  0x9365, 0x2553,
-  0x9366, 0x4f1a,
-  0x9369, 0x2548,
-  0x936a, 0x1d84,
-  0x936b, 0x4f1d,
-  0x936c, 0x20dc,
-  0x936d, 0x4f1e,
-  0x9370, 0x2559,
-  0x9371, 0x4f21,
-  0x9375, 0x1f97,
-  0x9376, 0x2555,
-  0x9377, 0x4f25,
-  0x937a, 0x227d,
-  0x937b, 0x4f28,
-  0x937e, 0x257e,
-  0x937f, 0x4f2b,
-  0x9382, 0x207c,
-  0x9383, 0x4f2e,
-  0x9384, 0x255a,
-  0x9385, 0x4f2f,
-  0x9387, 0x255e,
-  0x9388, 0x4f31,
-  0x938a, 0x1e34,
-  0x938b, 0x4f33,
-  0x938f, 0x1d86,
-  0x9390, 0x4f37,
-  0x9396, 0x215e,
-  0x9397, 0x4f3d,
-  0x9398, 0x2560,
-  0x9399, 0x4f3e,
-  0x93a2, 0x21a2,
-  0x93a3, 0x2354,
-  0x93a4, 0x4f47,
-  0x93a6, 0x2563,
-  0x93a7, 0x2527,
-  0x93a8, 0x4f49,
-  0x93a9, 0x252e,
-  0x93aa, 0x2558,
-  0x93ab, 0x4f4a,
-  0x93ac, 0x1f1b,
-  0x93ad, 0x4f4b,
-  0x93ae, 0x2283,
-  0x93af, 0x4f4c,
-  0x93b0, 0x2564,
-  0x93b1, 0x4f4d,
-  0x93b3, 0x20a0,
-  0x93b4, 0x4f4f,
-  0x93b5, 0x2565,
-  0x93b6, 0x4f50,
-  0x93b8, 0x2561,
-  0x93b9, 0x4f52,
-  0x93bf, 0x2562,
-  0x93c0, 0x4f58,
-  0x93c3, 0x256c,
-  0x93c4, 0x4f5b,
-  0x93c7, 0x256d,
-  0x93c8, 0x2020,
-  0x93c9, 0x4f5e,
-  0x93ca, 0x1d85,
-  0x93cb, 0x4f5f,
-  0x93cc, 0x255f,
-  0x93cd, 0x256a,
-  0x93ce, 0x4f60,
-  0x93d1, 0x256e,
-  0x93d2, 0x4f63,
-  0x93d6, 0x1e01,
-  0x93d7, 0x2539,
-  0x93d8, 0x255c,
-  0x93d9, 0x4f67,
-  0x93dc, 0x2568,
-  0x93de, 0x256b,
-  0x93df, 0x1e6f,
-  0x93e0, 0x4f6a,
-  0x93e1, 0x1fc4,
-  0x93e2, 0x2567,
-  0x93e3, 0x4f6b,
-  0x93e4, 0x255b,
-  0x93e5, 0x4f6c,
-  0x93e8, 0x261d,
-  0x93e9, 0x4f6f,
-  0x93f5, 0x252b,
-  0x93f6, 0x4f7b,
-  0x93f7, 0x2571,
-  0x93f8, 0x4f7c,
-  0x93f9, 0x2577,
-  0x93fa, 0x4f7d,
-  0x9400, 0x4f83,
-  0x9403, 0x2522,
-  0x9404, 0x4f86,
-  0x940b, 0x2533,
-  0x940c, 0x4f8d,
-  0x9410, 0x202a,
-  0x9411, 0x4f91,
-  0x9412, 0x2536,
-  0x9413, 0x2573,
-  0x9414, 0x256f,
-  0x9415, 0x4f92,
-  0x9418, 0x2293,
-  0x9419, 0x2578,
-  0x941a, 0x4f95,
-  0x941d, 0x2570,
-  0x941e, 0x4f98,
-  0x9420, 0x2575,
-  0x9421, 0x4f9a,
-  0x9426, 0x2541,
-  0x9428, 0x255d,
-  0x9429, 0x4f9f,
-  0x942e, 0x201a,
-  0x942f, 0x4fa4,
-  0x9432, 0x257a,
-  0x9433, 0x2006,
-  0x9434, 0x4fa7,
-  0x9435, 0x2177,
-  0x9436, 0x4fa8,
-  0x9438, 0x251b,
-  0x9439, 0x4faa,
-  0x943a, 0x2524,
-  0x943b, 0x4fab,
-  0x943e, 0x1d87,
-  0x943f, 0x257b,
-  0x9440, 0x4fae,
-  0x9444, 0x22a3,
-  0x9445, 0x4fb2,
-  0x944a, 0x2579,
-  0x944b, 0x4fb7,
-  0x944c, 0x2566,
-  0x944d, 0x4fb8,
-  0x9452, 0x1f93,
-  0x9453, 0x4fbd,
-  0x9454, 0x257c,
-  0x9455, 0x4fbe,
-  0x9460, 0x2514,
-  0x9461, 0x4fc9,
-  0x9463, 0x257d,
-  0x9464, 0x4fcb,
-  0x9465, 0x2572,
-  0x9466, 0x4fcc,
-  0x946b, 0x1d88,
-  0x946c, 0x4fd1,
-  0x946d, 0x2574,
-  0x946e, 0x4fd2,
-  0x9470, 0x224e,
-  0x9471, 0x4fd4,
-  0x9472, 0x21c6,
-  0x9473, 0x4fd5,
-  0x9477, 0x209f,
-  0x9478, 0x4fd9,
-  0x9479, 0x2576,
-  0x947a, 0x4fda,
-  0x947c, 0x2064,
-  0x947d, 0x22bf,
-  0x947e, 0x261c,
-  0x947f, 0x225e,
-  0x9480, 0x4fdc,
-  0x9485, 0x1a8e,
-  0x9488, 0x118c,
-  0x9489, 0x05e3,
-  0x948a, 0x1a92,
-  0x948b, 0x1a91,
-  0x948c, 0x1a93,
-  0x948e, 0x0c22,
-  0x948f, 0x1a95,
-  0x9491, 0x4fe1,
-  0x9492, 0x064d,
-  0x9493, 0x05d7,
-  0x9494, 0x1a97,
-  0x9495, 0x1a99,
-  0x9496, 0x4fe2,
-  0x9497, 0x1a98,
-  0x9498, 0x4fe3,
-  0x9499, 0x06c1,
-  0x949a, 0x1a9a,
-  0x949d, 0x061a,
-  0x949e, 0x04d3,
-  0x949f, 0x11d2,
-  0x94a0, 0x0b29,
-  0x94a1, 0x041e,
-  0x94a2, 0x06d1,
-  0x94a3, 0x1a9d,
-  0x94a5, 0x1102,
-  0x94a6, 0x0c52,
-  0x94a7, 0x092a,
-  0x94a8, 0x0ee8,
-  0x94a9, 0x070c,
-  0x94aa, 0x1aa0,
-  0x94ab, 0x1a9f,
-  0x94ac, 0x1aa2,
-  0x94ad, 0x1aa1,
-  0x94ae, 0x0b66,
-  0x94af, 0x1aa3,
-  0x94b1, 0x0c2b,
-  0x94b2, 0x1aa5,
-  0x94b3, 0x0c2c,
-  0x94b4, 0x1aa6,
-  0x94b5, 0x046e,
-  0x94b6, 0x1aa7,
-  0x94bb, 0x1247,
-  0x94bc, 0x1aac,
-  0x94be, 0x084b,
-  0x94bf, 0x1aae,
-  0x94c0, 0x10b0,
-  0x94c1, 0x0e4d,
-  0x94c2, 0x0473,
-  0x94c3, 0x0a2e,
-  0x94c4, 0x1aaf,
-  0x94c5, 0x0c23,
-  0x94c6, 0x0ab2,
-  0x94c7, 0x4fe4,
-  0x94c8, 0x1ab0,
-  0x94cf, 0x4fe5,
-  0x94d0, 0x1ab7,
-  0x94d3, 0x4fe6,
-  0x94d5, 0x1aba,
-  0x94d8, 0x1abe,
-  0x94d9, 0x1abd,
-  0x94da, 0x4fe8,
-  0x94db, 0x1abf,
-  0x94dc, 0x0e5e,
-  0x94dd, 0x0a68,
-  0x94de, 0x1ac0,
-  0x94e1, 0x1142,
-  0x94e2, 0x1ac3,
-  0x94e3, 0x0f20,
-  0x94e4, 0x1ac4,
-  0x94e6, 0x4fe9,
-  0x94e7, 0x1ac6,
-  0x94e9, 0x1ac9,
-  0x94ea, 0x1ac8,
-  0x94eb, 0x1aca,
-  0x94ec, 0x06f0,
-  0x94ed, 0x0aff,
-  0x94ee, 0x1acb,
-  0x94f0, 0x0893,
-  0x94f1, 0x1046,
-  0x94f2, 0x04c0,
-  0x94f3, 0x1acd,
-  0x94f6, 0x107f,
-  0x94f7, 0x1ad0,
-  0x94f8, 0x11fc,
-  0x94f9, 0x1ad1,
-  0x94fa, 0x0beb,
-  0x94fb, 0x4fea,
-  0x94fc, 0x1ad2,
-  0x94fe, 0x09fd,
-  0x94ff, 0x1ad4,
-  0x9500, 0x0f67,
-  0x9501, 0x0ded,
-  0x9502, 0x1ad6,
-  0x9503, 0x1ad5,
-  0x9504, 0x051f,
-  0x9505, 0x0751,
-  0x9506, 0x1ad7,
-  0x9508, 0x0fad,
-  0x9509, 0x1ad9,
-  0x950b, 0x0683,
-  0x950c, 0x0f8a,
-  0x950d, 0x1adb,
-  0x9510, 0x0ccc,
-  0x9511, 0x0e33,
-  0x9512, 0x1ade,
-  0x9517, 0x1181,
-  0x9518, 0x1ae3,
-  0x9519, 0x0570,
-  0x951a, 0x0aaf,
-  0x951b, 0x1ae4,
-  0x951c, 0x4feb,
-  0x951d, 0x1ae5,
-  0x9520, 0x4fec,
-  0x9521, 0x0f0c,
-  0x9522, 0x1ae8,
-  0x9523, 0x0a87,
-  0x9524, 0x053b,
-  0x9525, 0x1213,
-  0x9526, 0x08c6,
-  0x9527, 0x4fed,
-  0x9528, 0x0f34,
-  0x9529, 0x1aeb,
-  0x952a, 0x1ae9,
-  0x952c, 0x1aec,
-  0x952d, 0x05e6,
-  0x952e, 0x086f,
-  0x952f, 0x0911,
-  0x9530, 0x0ad1,
-  0x9531, 0x1aed,
-  0x9533, 0x4fee,
-  0x9534, 0x1aef,
-  0x9535, 0x1af7,
-  0x9536, 0x1af0,
-  0x9539, 0x0c3f,
-  0x953a, 0x1b19,
-  0x953b, 0x060c,
-  0x953c, 0x1af3,
-  0x953d, 0x4fef,
-  0x953e, 0x1af4,
-  0x9540, 0x0605,
-  0x9541, 0x0ac3,
-  0x9542, 0x1af6,
-  0x9543, 0x4ff0,
-  0x9544, 0x1af8,
-  0x9547, 0x1193,
-  0x9548, 0x4ff1,
-  0x9549, 0x1afb,
-  0x954a, 0x0b5a,
-  0x954b, 0x4ff2,
-  0x954c, 0x1afc,
-  0x954d, 0x0b5b,
-  0x954e, 0x1afd,
-  0x9550, 0x06df,
-  0x9551, 0x0402,
-  0x9552, 0x1aff,
-  0x9555, 0x4ff3,
-  0x9556, 0x1b02,
-  0x955a, 0x4ff4,
-  0x955b, 0x1b06,
-  0x955c, 0x08e4,
-  0x955d, 0x1b09,
-  0x955e, 0x1b07,
-  0x9560, 0x4ff5,
-  0x9561, 0x1b0a,
-  0x9563, 0x0a16,
-  0x9564, 0x1b0c,
-  0x956d, 0x09c3,
-  0x956e, 0x4ff6,
-  0x956f, 0x1b15,
-  0x9570, 0x09f6,
-  0x9571, 0x1b16,
-  0x9574, 0x4ff7,
-  0x9576, 0x0f4f,
-  0x9577, 0x1e75,
-  0x9578, 0x4ff9,
-  0x957f, 0x04c9,
-  0x9580, 0x207d,
-  0x9581, 0x5000,
-  0x9582, 0x23bf,
-  0x9583, 0x2113,
-  0x9584, 0x5001,
-  0x9586, 0x23c0,
-  0x9587, 0x5003,
-  0x9589, 0x1e45,
-  0x958a, 0x5005,
-  0x958b, 0x1fd8,
-  0x958c, 0x23c4,
-  0x958d, 0x5006,
-  0x958e, 0x23c2,
-  0x958f, 0x2104,
-  0x9590, 0x5007,
-  0x9591, 0x21bd,
-  0x9592, 0x5008,
-  0x9593, 0x1f87,
-  0x9594, 0x23c3,
-  0x9595, 0x5009,
-  0x9598, 0x2269,
-  0x9599, 0x500c,
-  0x95a1, 0x1f43,
-  0x95a2, 0x5014,
-  0x95a3, 0x1f1e,
-  0x95a4, 0x2679,
-  0x95a5, 0x1eeb,
-  0x95a6, 0x5015,
-  0x95a8, 0x1f35,
-  0x95a9, 0x208a,
-  0x95aa, 0x5017,
-  0x95ab, 0x23c7,
-  0x95ac, 0x23c9,
-  0x95ad, 0x23c6,
-  0x95ae, 0x5018,
-  0x95b2, 0x224f,
-  0x95b3, 0x501c,
-  0x95b6, 0x23cb,
-  0x95b7, 0x501f,
-  0x95b9, 0x21f3,
-  0x95ba, 0x5021,
-  0x95bb, 0x21f7,
-  0x95bc, 0x23cf,
-  0x95bd, 0x23ce,
-  0x95be, 0x23ca,
-  0x95bf, 0x23cd,
-  0x95c0, 0x5022,
-  0x95c3, 0x23d0,
-  0x95c4, 0x5025,
-  0x95c6, 0x266c,
-  0x95c7, 0x5027,
-  0x95c8, 0x23c1,
-  0x95c9, 0x5028,
-  0x95ca, 0x1fee,
-  0x95cb, 0x23d1,
-  0x95cc, 0x1ff8,
-  0x95cd, 0x5029,
-  0x95d0, 0x23d3,
-  0x95d1, 0x502c,
-  0x95d4, 0x23d2,
-  0x95d5, 0x23d4,
-  0x95d6, 0x1e98,
-  0x95d7, 0x502f,
-  0x95dc, 0x1f2c,
-  0x95dd, 0x5034,
-  0x95de, 0x23d5,
-  0x95df, 0x5035,
-  0x95e1, 0x1e71,
-  0x95e2, 0x2691,
-  0x95e3, 0x5037,
-  0x95e5, 0x23c5,
-  0x95e6, 0x5039,
-  0x95e8, 0x0aca,
-  0x95e9, 0x1685,
-  0x95ea, 0x0cfa,
-  0x95eb, 0x1686,
-  0x95ec, 0x503b,
-  0x95ed, 0x043e,
-  0x95ee, 0x0ed9,
-  0x95ef, 0x0536,
-  0x95f0, 0x0ccd,
-  0x95f1, 0x1687,
-  0x95f2, 0x0f3d,
-  0x95f3, 0x1688,
-  0x95f4, 0x0857,
-  0x95f5, 0x1689,
-  0x95f7, 0x0acb,
-  0x95f8, 0x1143,
-  0x95f9, 0x0b39,
-  0x95fa, 0x0744,
-  0x95fb, 0x0ed4,
-  0x95fc, 0x168b,
-  0x95fd, 0x0afb,
-  0x95fe, 0x168c,
-  0x95ff, 0x503c,
-  0x9600, 0x0644,
-  0x9601, 0x06ee,
-  0x9602, 0x0789,
-  0x9603, 0x168d,
-  0x9605, 0x1107,
-  0x9606, 0x168f,
-  0x9607, 0x503d,
-  0x9608, 0x1690,
-  0x9609, 0x0ff4,
-  0x960a, 0x1691,
-  0x960e, 0x0fff,
-  0x960f, 0x1695,
-  0x9610, 0x04c2,
-  0x9611, 0x09a6,
-  0x9612, 0x1696,
-  0x9613, 0x503e,
-  0x9614, 0x0996,
-  0x9615, 0x1697,
-  0x9618, 0x503f,
-  0x9619, 0x169a,
-  0x961b, 0x5040,
-  0x961c, 0x06b2,
-  0x961d, 0x1354,
-  0x961e, 0x5041,
-  0x961f, 0x0612,
-  0x9620, 0x5042,
-  0x9621, 0x1356,
-  0x9622, 0x1355,
-  0x9623, 0x5043,
-  0x962a, 0x1358,
-  0x962b, 0x504a,
-  0x962e, 0x0cc9,
-  0x962f, 0x504d,
-  0x9631, 0x1357,
-  0x9632, 0x065d,
-  0x9633, 0x101d,
-  0x9634, 0x107c,
-  0x9635, 0x1194,
-  0x9636, 0x08a8,
-  0x9637, 0x504f,
-  0x963b, 0x1245,
-  0x963c, 0x135a,
-  0x963d, 0x1359,
-  0x963e, 0x5053,
-  0x963f, 0x03ad,
-  0x9640, 0x0e84,
-  0x9641, 0x5054,
-  0x9642, 0x135b,
-  0x9643, 0x5055,
-  0x9644, 0x06b8,
-  0x9645, 0x083d,
-  0x9646, 0x0a64,
-  0x9647, 0x0a4b,
-  0x9648, 0x04e7,
-  0x9649, 0x135c,
-  0x964a, 0x5056,
-  0x964b, 0x0a51,
-  0x964c, 0x0b13,
-  0x964d, 0x0886,
-  0x964e, 0x5057,
-  0x9650, 0x0f4b,
-  0x9651, 0x5059,
-  0x9654, 0x135d,
-  0x9655, 0x0cfb,
-  0x9656, 0x505c,
-  0x9658, 0x231a,
-  0x9659, 0x505e,
-  0x965b, 0x0446,
-  0x965c, 0x5060,
-  0x965d, 0x2114,
-  0x965e, 0x5061,
-  0x965f, 0x135e,
-  0x9660, 0x5062,
-  0x9661, 0x05f7,
-  0x9662, 0x10fd,
-  0x9663, 0x2284,
-  0x9664, 0x0522,
-  0x9665, 0x5063,
-  0x9667, 0x135f,
-  0x9668, 0x110c,
-  0x9669, 0x0f42,
-  0x966a, 0x0ba4,
-  0x966b, 0x5065,
-  0x966c, 0x1360,
-  0x966d, 0x5066,
-  0x9670, 0x221c,
-  0x9671, 0x5069,
-  0x9672, 0x1361,
-  0x9673, 0x1e7e,
-  0x9674, 0x1362,
-  0x9675, 0x0a33,
-  0x9676, 0x0e28,
-  0x9677, 0x0f4a,
-  0x9678, 0x204d,
-  0x9679, 0x506a,
-  0x967d, 0x2201,
-  0x967e, 0x506e,
-  0x9685, 0x10cc,
-  0x9686, 0x0a48,
-  0x9687, 0x5075,
-  0x9688, 0x1363,
-  0x9689, 0x5076,
-  0x968a, 0x1ed9,
-  0x968b, 0x0dda,
-  0x968c, 0x5077,
-  0x968d, 0x1364,
-  0x968e, 0x1fb2,
-  0x968f, 0x0ddb,
-  0x9690, 0x1085,
-  0x9691, 0x5078,
-  0x9694, 0x06ef,
-  0x9695, 0x2252,
-  0x9696, 0x507b,
-  0x9697, 0x1365,
-  0x9698, 0x03ba,
-  0x9699, 0x0f23,
-  0x969a, 0x507c,
-  0x969b, 0x1f79,
-  0x969c, 0x1170,
-  0x969d, 0x507d,
-  0x96a7, 0x0de2,
-  0x96a8, 0x2157,
-  0x96a9, 0x5087,
-  0x96aa, 0x21bf,
-  0x96ab, 0x5088,
-  0x96b0, 0x1366,
-  0x96b1, 0x221f,
-  0x96b2, 0x508d,
-  0x96b3, 0x1684,
-  0x96b4, 0x203d,
-  0x96b5, 0x508e,
-  0x96b6, 0x09ee,
-  0x96b7, 0x508f,
-  0x96b8, 0x2015,
-  0x96b9, 0x1d79,
-  0x96ba, 0x5090,
-  0x96bb, 0x26a5,
-  0x96bc, 0x1d7a,
-  0x96be, 0x0b34,
-  0x96bf, 0x5091,
-  0x96c0, 0x0c93,
-  0x96c1, 0x100c,
-  0x96c2, 0x5092,
-  0x96c4, 0x0fa6,
-  0x96c5, 0x0fee,
-  0x96c6, 0x0822,
-  0x96c7, 0x0726,
-  0x96c8, 0x5094,
-  0x96c9, 0x1b1c,
-  0x96ca, 0x5095,
-  0x96cc, 0x0549,
-  0x96cd, 0x109f,
-  0x96ce, 0x1d7c,
-  0x96cf, 0x0520,
-  0x96d0, 0x5097,
-  0x96d2, 0x1d7d,
-  0x96d3, 0x5099,
-  0x96d5, 0x05d2,
-  0x96d6, 0x2156,
-  0x96d7, 0x509b,
-  0x96d9, 0x2144,
-  0x96da, 0x509d,
-  0x96db, 0x1e91,
-  0x96dc, 0x2257,
-  0x96dd, 0x509e,
-  0x96e0, 0x1d7f,
-  0x96e1, 0x50a1,
-  0x96e2, 0x200a,
-  0x96e3, 0x2092,
-  0x96e4, 0x50a2,
-  0x96e8, 0x10cf,
-  0x96e9, 0x1d61,
-  0x96ea, 0x0fd2,
-  0x96eb, 0x50a6,
-  0x96ef, 0x1d63,
-  0x96f0, 0x50aa,
-  0x96f2, 0x2250,
-  0x96f3, 0x1d62,
-  0x96f4, 0x50ac,
-  0x96f6, 0x0a2c,
-  0x96f7, 0x09c2,
-  0x96f8, 0x50ae,
-  0x96f9, 0x040b,
-  0x96fa, 0x50af,
-  0x96fb, 0x1ec3,
-  0x96fc, 0x50b0,
-  0x96fe, 0x0efc,
-  0x96ff, 0x50b2,
-  0x9700, 0x0fb3,
-  0x9701, 0x1d65,
-  0x9702, 0x50b3,
-  0x9704, 0x0f63,
-  0x9705, 0x50b5,
-  0x9706, 0x1d64,
-  0x9707, 0x1191,
-  0x9708, 0x1d66,
-  0x9709, 0x0abe,
-  0x970a, 0x50b6,
-  0x970d, 0x0809,
-  0x970e, 0x1d68,
-  0x970f, 0x1d67,
-  0x9710, 0x50b9,
-  0x9713, 0x0b41,
-  0x9714, 0x50bc,
-  0x9716, 0x0a21,
-  0x9717, 0x50be,
-  0x971c, 0x0d9f,
-  0x971d, 0x50c3,
-  0x971e, 0x0f29,
-  0x971f, 0x50c4,
-  0x9727, 0x21a8,
-  0x9728, 0x50cc,
-  0x972a, 0x1d69,
-  0x972b, 0x50ce,
-  0x972d, 0x1d6a,
-  0x972e, 0x50d0,
-  0x9730, 0x1d6b,
-  0x9731, 0x50d2,
-  0x9732, 0x0a5d,
-  0x9733, 0x50d3,
-  0x9738, 0x03df,
-  0x9739, 0x0bba,
-  0x973a, 0x50d8,
-  0x973d, 0x260d,
-  0x973e, 0x1d6c,
-  0x973f, 0x50db,
-  0x9742, 0x260c,
-  0x9743, 0x50de,
-  0x9744, 0x260e,
-  0x9745, 0x50df,
-  0x9748, 0x2032,
-  0x9749, 0x50e2,
-  0x9752, 0x0c5d,
-  0x9753, 0x1d60,
-  0x9754, 0x50eb,
-  0x9756, 0x08e7,
-  0x9757, 0x50ed,
-  0x9759, 0x08e1,
-  0x975a, 0x260b,
-  0x975b, 0x05c6,
-  0x975c, 0x50ef,
-  0x975e, 0x0664,
-  0x975f, 0x50f1,
-  0x9760, 0x094c,
-  0x9761, 0x0ad7,
-  0x9762, 0x0aeb,
-  0x9763, 0x50f2,
-  0x9765, 0x1282,
-  0x9766, 0x50f4,
-  0x9768, 0x22c3,
-  0x9769, 0x06ea,
-  0x976a, 0x50f6,
-  0x9773, 0x08ca,
-  0x9774, 0x0fce,
-  0x9775, 0x50ff,
-  0x9776, 0x03db,
-  0x9777, 0x5100,
-  0x977c, 0x1dc8,
-  0x977d, 0x5105,
-  0x9785, 0x1dc9,
-  0x9786, 0x510d,
-  0x978b, 0x0f77,
-  0x978c, 0x5112,
-  0x978d, 0x03bb,
-  0x978e, 0x5113,
-  0x978f, 0x1f23,
-  0x9790, 0x5114,
-  0x9791, 0x1dca,
-  0x9793, 0x5115,
-  0x9794, 0x1dcc,
-  0x9795, 0x5116,
-  0x9798, 0x0c47,
-  0x9799, 0x5119,
-  0x97a0, 0x08fe,
-  0x97a1, 0x5120,
-  0x97a3, 0x1dcf,
-  0x97a4, 0x5122,
-  0x97a6, 0x2695,
-  0x97a7, 0x5124,
-  0x97ab, 0x1dce,
-  0x97ac, 0x5128,
-  0x97ad, 0x0447,
-  0x97ae, 0x5129,
-  0x97af, 0x1dcd,
-  0x97b0, 0x512a,
-  0x97b2, 0x1dd0,
-  0x97b3, 0x512c,
-  0x97b4, 0x1dd1,
-  0x97b5, 0x512d,
-  0x97bd, 0x265e,
-  0x97be, 0x5135,
-  0x97c3, 0x265d,
-  0x97c4, 0x513a,
-  0x97c6, 0x2692,
-  0x97c7, 0x513c,
-  0x97c9, 0x265f,
-  0x97ca, 0x513e,
-  0x97cb, 0x218d,
-  0x97cc, 0x20fd,
-  0x97cd, 0x513f,
-  0x97d3, 0x1f40,
-  0x97d4, 0x5145,
-  0x97d9, 0x2465,
-  0x97da, 0x514a,
-  0x97dc, 0x2467,
-  0x97dd, 0x514c,
-  0x97de, 0x2466,
-  0x97df, 0x514d,
-  0x97e6, 0x0eb3,
-  0x97e7, 0x0ca8,
-  0x97e8, 0x5154,
-  0x97e9, 0x0762,
-  0x97ea, 0x184e,
-  0x97ed, 0x08f1,
-  0x97ee, 0x5155,
-  0x97f3, 0x107b,
-  0x97f4, 0x515a,
-  0x97f5, 0x1112,
-  0x97f6, 0x0d11,
-  0x97f7, 0x515b,
-  0x97ff, 0x21c9,
-  0x9800, 0x5163,
-  0x9801, 0x2209,
-  0x9802, 0x1ec9,
-  0x9803, 0x20e9,
-  0x9804, 0x5164,
-  0x9805, 0x21ca,
-  0x9806, 0x2146,
-  0x9807, 0x25c5,
-  0x9808, 0x21dc,
-  0x9809, 0x5165,
-  0x980a, 0x245e,
-  0x980b, 0x5166,
-  0x980c, 0x214f,
-  0x980d, 0x5167,
-  0x980e, 0x25c6,
-  0x9810, 0x2241,
-  0x9811, 0x218a,
-  0x9812, 0x1e2f,
-  0x9813, 0x1edc,
-  0x9814, 0x5168,
-  0x9817, 0x20bf,
-  0x9818, 0x2034,
-  0x9819, 0x516b,
-  0x981c, 0x25c9,
-  0x981d, 0x516e,
-  0x9821, 0x25c8,
-  0x9822, 0x5172,
-  0x9824, 0x220e,
-  0x9825, 0x5174,
-  0x9826, 0x25cb,
-  0x9827, 0x5175,
-  0x982d, 0x217d,
-  0x982e, 0x517b,
-  0x9830, 0x1f7e,
-  0x9831, 0x517d,
-  0x9837, 0x25cc,
-  0x9838, 0x1fc3,
-  0x9839, 0x5183,
-  0x983b, 0x20b9,
-  0x983c, 0x5185,
-  0x983d, 0x2181,
-  0x983e, 0x5186,
-  0x9846, 0x1fda,
-  0x9847, 0x518e,
-  0x984c, 0x2173,
-  0x984d, 0x1ee1,
-  0x984e, 0x25cd,
-  0x984f, 0x5193,
-  0x9853, 0x25ce,
-  0x9854, 0x21f6,
-  0x9855, 0x5197,
-  0x9858, 0x224b,
-  0x9859, 0x25d1,
-  0x985a, 0x519a,
-  0x985b, 0x1ec0,
-  0x985c, 0x519b,
-  0x985e, 0x2008,
-  0x985f, 0x519d,
-  0x9862, 0x25d0,
-  0x9863, 0x51a0,
-  0x9865, 0x25d2,
-  0x9866, 0x51a2,
-  0x9867, 0x1f2a,
-  0x9868, 0x51a3,
-  0x986b, 0x1e72,
-  0x986c, 0x25d3,
-  0x986d, 0x51a6,
-  0x986f, 0x21be,
-  0x9870, 0x25d4,
-  0x9871, 0x2044,
-  0x9872, 0x51a8,
-  0x9873, 0x25cf,
-  0x9874, 0x20f3,
-  0x9875, 0x103a,
-  0x9876, 0x05e4,
-  0x9877, 0x0c67,
-  0x9878, 0x1be0,
-  0x9879, 0x0f5b,
-  0x987a, 0x0da8,
-  0x987b, 0x0fb6,
-  0x987c, 0x1827,
-  0x987d, 0x0e98,
-  0x987e, 0x0724,
-  0x987f, 0x0618,
-  0x9880, 0x1be1,
-  0x9881, 0x03ef,
-  0x9882, 0x0dc1,
-  0x9883, 0x1be2,
-  0x9884, 0x10e7,
-  0x9885, 0x0a54,
-  0x9886, 0x0a35,
-  0x9887, 0x0be3,
-  0x9888, 0x08e0,
-  0x9889, 0x1be3,
-  0x988a, 0x0848,
-  0x988b, 0x51a9,
-  0x988c, 0x1be4,
-  0x988e, 0x51aa,
-  0x988f, 0x1be6,
-  0x9890, 0x104a,
-  0x9891, 0x0bd4,
-  0x9892, 0x51ab,
-  0x9893, 0x0e78,
-  0x9894, 0x1be7,
-  0x9895, 0x51ac,
-  0x9896, 0x1096,
-  0x9897, 0x0952,
-  0x9898, 0x0e35,
-  0x9899, 0x51ad,
-  0x989a, 0x1be8,
-  0x989c, 0x0ffe,
-  0x989d, 0x062d,
-  0x989e, 0x1bea,
-  0x98a0, 0x05c0,
-  0x98a1, 0x1bec,
-  0x98a3, 0x51ae,
-  0x98a4, 0x04c3,
-  0x98a5, 0x1bee,
-  0x98a7, 0x0c82,
-  0x98a8, 0x1f00,
-  0x98a9, 0x51af,
-  0x98ae, 0x24cc,
-  0x98b0, 0x51b4,
-  0x98b1, 0x2698,
-  0x98b2, 0x51b5,
-  0x98b3, 0x2678,
-  0x98b4, 0x51b6,
-  0x98b6, 0x24ce,
-  0x98b7, 0x51b8,
-  0x98bc, 0x24cf,
-  0x98bd, 0x51bd,
-  0x98c4, 0x20b8,
-  0x98c5, 0x51c4,
-  0x98c6, 0x24d0,
-  0x98c7, 0x51c5,
-  0x98c8, 0x24d1,
-  0x98c9, 0x51c6,
-  0x98ce, 0x0684,
-  0x98cf, 0x51cb,
-  0x98d1, 0x19b7,
-  0x98d4, 0x51cd,
-  0x98d5, 0x19ba,
-  0x98d6, 0x51ce,
-  0x98d8, 0x0bcd,
-  0x98d9, 0x19bb,
-  0x98db, 0x1ef4,
-  0x98dc, 0x51d0,
-  0x98de, 0x0666,
-  0x98df, 0x0d4a,
-  0x98e0, 0x239b,
-  0x98e1, 0x51d2,
-  0x98e2, 0x267e,
-  0x98e3, 0x51d3,
-  0x98e7, 0x161a,
-  0x98e8, 0x1de7,
-  0x98e9, 0x239d,
-  0x98ea, 0x239f,
-  0x98ec, 0x51d7,
-  0x98ed, 0x23a1,
-  0x98ee, 0x51d8,
-  0x98ef, 0x1ef1,
-  0x98f0, 0x51d9,
-  0x98f2, 0x221e,
-  0x98f3, 0x51db,
-  0x98f4, 0x23a2,
-  0x98f5, 0x51dc,
-  0x98fc, 0x214b,
-  0x98fd, 0x1e36,
-  0x98fe, 0x2135,
-  0x98ff, 0x51e3,
-  0x9900, 0x51e4,
-  0x9903, 0x1fad,
-  0x9904, 0x51e7,
-  0x9905, 0x1e53,
-  0x9906, 0x51e8,
-  0x9909, 0x23a3,
-  0x990a, 0x2203,
-  0x990b, 0x51eb,
-  0x990c, 0x1ee7,
-  0x990d, 0x1de8,
-  0x990e, 0x51ec,
-  0x9910, 0x0494,
-  0x9911, 0x23a4,
-  0x9912, 0x2097,
-  0x9913, 0x1ee4,
-  0x9914, 0x51ee,
-  0x9918, 0x2238,
-  0x9919, 0x51f2,
-  0x991b, 0x23a5,
-  0x991c, 0x51f4,
-  0x991e, 0x1f9a,
-  0x991f, 0x51f6,
-  0x9921, 0x21c3,
-  0x9922, 0x51f8,
-  0x9928, 0x1f2e,
-  0x9929, 0x51fe,
-  0x992e, 0x1de9,
-  0x992f, 0x5203,
-  0x9933, 0x239c,
-  0x9934, 0x5207,
-  0x9937, 0x23a6,
-  0x9938, 0x520a,
-  0x993c, 0x239e,
-  0x993d, 0x520e,
-  0x993e, 0x2035,
-  0x993f, 0x23a7,
-  0x9940, 0x520f,
-  0x9943, 0x23a8,
-  0x9944, 0x5212,
-  0x9945, 0x2075,
-  0x9946, 0x5213,
-  0x9948, 0x23a9,
-  0x994b, 0x1feb,
-  0x994c, 0x23ac,
-  0x994d, 0x5215,
-  0x9951, 0x1f6a,
-  0x9952, 0x20f9,
-  0x9953, 0x5219,
-  0x9954, 0x1deb,
-  0x9955, 0x1dea,
-  0x9956, 0x521a,
-  0x9957, 0x2666,
-  0x9958, 0x521b,
-  0x995c, 0x2667,
-  0x995d, 0x521f,
-  0x995e, 0x1e6c,
-  0x995f, 0x5220,
-  0x9962, 0x23ad,
-  0x9963, 0x161d,
-  0x9964, 0x5223,
-  0x9965, 0x0815,
-  0x9966, 0x5224,
-  0x9967, 0x161e,
-  0x996d, 0x0656,
-  0x996e, 0x1082,
-  0x996f, 0x0875,
-  0x9970, 0x0d65,
-  0x9971, 0x040e,
-  0x9972, 0x0dbc,
-  0x9973, 0x5225,
-  0x9974, 0x1624,
-  0x9975, 0x063b,
-  0x9976, 0x0c9f,
-  0x9977, 0x1625,
-  0x9978, 0x5226,
-  0x997a, 0x0899,
-  0x997b, 0x5228,
-  0x997c, 0x0466,
-  0x997d, 0x1626,
-  0x997e, 0x5229,
-  0x997f, 0x0635,
-  0x9980, 0x1627,
-  0x9981, 0x0b3c,
-  0x9982, 0x522a,
-  0x9984, 0x1628,
-  0x9985, 0x0f47,
-  0x9986, 0x0736,
-  0x9987, 0x1629,
-  0x9988, 0x098c,
-  0x9989, 0x522c,
-  0x998a, 0x162a,
-  0x998b, 0x04bd,
-  0x998c, 0x522d,
-  0x998d, 0x162b,
-  0x998e, 0x522e,
-  0x998f, 0x0a3c,
-  0x9990, 0x162c,
-  0x9992, 0x0a9f,
-  0x9993, 0x162e,
-  0x9996, 0x0d6e,
-  0x9997, 0x126e,
-  0x9998, 0x12f9,
-  0x9999, 0x0f50,
-  0x999a, 0x522f,
-  0x99a5, 0x1b2b,
-  0x99a6, 0x523a,
-  0x99a8, 0x13de,
-  0x99a9, 0x523c,
-  0x99ac, 0x206d,
-  0x99ad, 0x2242,
-  0x99ae, 0x1f02,
-  0x99af, 0x523f,
-  0x99b1, 0x2183,
-  0x99b2, 0x5241,
-  0x99b3, 0x1e85,
-  0x99b4, 0x21e9,
-  0x99b5, 0x5242,
-  0x99c1, 0x1e57,
-  0x99c2, 0x524e,
-  0x99d0, 0x22a5,
-  0x99d1, 0x2407,
-  0x99d2, 0x1fca,
-  0x99d3, 0x525c,
-  0x99d4, 0x2402,
-  0x99d5, 0x1f82,
-  0x99d6, 0x525d,
-  0x99d8, 0x2408,
-  0x99d9, 0x2404,
-  0x99da, 0x525f,
-  0x99db, 0x2131,
-  0x99dc, 0x5260,
-  0x99dd, 0x2184,
-  0x99de, 0x5261,
-  0x99df, 0x2403,
-  0x99e0, 0x5262,
-  0x99e1, 0x206e,
-  0x99e2, 0x240b,
-  0x99e3, 0x5263,
-  0x99ed, 0x1f3f,
-  0x99ee, 0x526d,
-  0x99f1, 0x2067,
-  0x99f2, 0x5270,
-  0x99ff, 0x1fd7,
-  0x9a00, 0x527d,
-  0x9a01, 0x1e83,
-  0x9a02, 0x527e,
-  0x9a05, 0x240f,
-  0x9a06, 0x5281,
-  0x9a0d, 0x240e,
-  0x9a0e, 0x20c7,
-  0x9a0f, 0x240d,
-  0x9a10, 0x5288,
-  0x9a16, 0x2412,
-  0x9a17, 0x528e,
-  0x9a19, 0x20b7,
-  0x9a1a, 0x5290,
-  0x9a2b, 0x23f0,
-  0x9a2c, 0x52a1,
-  0x9a2d, 0x2411,
-  0x9a2e, 0x2414,
-  0x9a2f, 0x52a2,
-  0x9a30, 0x2170,
-  0x9a31, 0x52a3,
-  0x9a36, 0x2405,
-  0x9a37, 0x210c,
-  0x9a38, 0x2415,
-  0x9a39, 0x52a8,
-  0x9a3e, 0x2066,
-  0x9a3f, 0x52ad,
-  0x9a40, 0x2352,
-  0x9a41, 0x2413,
-  0x9a42, 0x2410,
-  0x9a43, 0x2416,
-  0x9a45, 0x20f1,
-  0x9a46, 0x52ae,
-  0x9a4a, 0x240a,
-  0x9a4b, 0x52b2,
-  0x9a4d, 0x2409,
-  0x9a4e, 0x52b4,
-  0x9a4f, 0x2418,
-  0x9a50, 0x52b5,
-  0x9a55, 0x1fa7,
-  0x9a56, 0x52ba,
-  0x9a57, 0x21fc,
-  0x9a58, 0x52bb,
-  0x9a5a, 0x1fc1,
-  0x9a5b, 0x2406,
-  0x9a5c, 0x52bd,
-  0x9a5f, 0x229c,
-  0x9a60, 0x52c0,
-  0x9a62, 0x204e,
-  0x9a63, 0x52c2,
-  0x9a64, 0x241a,
-  0x9a65, 0x2419,
-  0x9a66, 0x52c3,
-  0x9a6a, 0x240c,
-  0x9a6b, 0x52c7,
-  0x9a6c, 0x0a94,
-  0x9a6d, 0x10e9,
-  0x9a6e, 0x0e85,
-  0x9a6f, 0x0fda,
-  0x9a70, 0x0500,
-  0x9a71, 0x0c7a,
-  0x9a72, 0x52c8,
-  0x9a73, 0x047c,
-  0x9a74, 0x0a66,
-  0x9a75, 0x17ba,
-  0x9a76, 0x0d52,
-  0x9a77, 0x17bb,
-  0x9a79, 0x0903,
-  0x9a7a, 0x17bd,
-  0x9a7b, 0x1201,
-  0x9a7c, 0x0e86,
-  0x9a7d, 0x17bf,
-  0x9a7e, 0x0850,
-  0x9a7f, 0x17be,
-  0x9a80, 0x17c0,
-  0x9a82, 0x0a95,
-  0x9a83, 0x52c9,
-  0x9a84, 0x088f,
-  0x9a85, 0x17c2,
-  0x9a86, 0x0a8d,
-  0x9a87, 0x075e,
-  0x9a88, 0x17c3,
-  0x9a89, 0x52ca,
-  0x9a8a, 0x17c4,
-  0x9a8b, 0x04f7,
-  0x9a8c, 0x1012,
-  0x9a8d, 0x52cb,
-  0x9a8f, 0x0932,
-  0x9a90, 0x17c5,
-  0x9a91, 0x0c0e,
-  0x9a92, 0x17c6,
-  0x9a94, 0x52cd,
-  0x9a96, 0x17c8,
-  0x9a97, 0x0bcc,
-  0x9a98, 0x17c9,
-  0x9a99, 0x52cf,
-  0x9a9a, 0x0ce0,
-  0x9a9b, 0x17ca,
-  0x9a9e, 0x1735,
-  0x9a9f, 0x17cd,
-  0x9aa1, 0x0a89,
-  0x9aa2, 0x17cf,
-  0x9aa4, 0x11e7,
-  0x9aa5, 0x17d1,
-  0x9aa6, 0x52d0,
-  0x9aa7, 0x17d2,
-  0x9aa8, 0x0720,
-  0x9aa9, 0x52d1,
-  0x9aaf, 0x1e29,
-  0x9ab0, 0x1dd3,
-  0x9ab1, 0x1dd2,
-  0x9ab2, 0x52d7,
-  0x9ab6, 0x1dd6,
-  0x9ab7, 0x1dd4,
-  0x9ab8, 0x0758,
-  0x9ab9, 0x52db,
-  0x9aba, 0x1dd7,
-  0x9abb, 0x52dc,
-  0x9abc, 0x1dd8,
-  0x9abd, 0x52dd,
-  0x9ac0, 0x1dda,
-  0x9ac1, 0x1dd9,
-  0x9ac2, 0x1ddc,
-  0x9ac3, 0x52e0,
-  0x9ac5, 0x1ddb,
-  0x9ac6, 0x52e2,
-  0x9acb, 0x1ddd,
-  0x9acd, 0x52e7,
-  0x9acf, 0x2661,
-  0x9ad0, 0x52e9,
-  0x9ad1, 0x1ddf,
-  0x9ad2, 0x26a4,
-  0x9ad3, 0x0ddd,
-  0x9ad4, 0x2174,
-  0x9ad5, 0x2663,
-  0x9ad6, 0x2662,
-  0x9ad7, 0x52ea,
-  0x9ad8, 0x06da,
-  0x9ad9, 0x52eb,
-  0x9adf, 0x1dec,
-  0x9ae0, 0x52f1,
-  0x9ae1, 0x1ded,
-  0x9ae2, 0x52f2,
-  0x9ae6, 0x1dee,
-  0x9ae7, 0x52f6,
-  0x9aeb, 0x1df0,
-  0x9aec, 0x52fa,
-  0x9aed, 0x1df2,
-  0x9aee, 0x2675,
-  0x9aef, 0x1def,
-  0x9af0, 0x52fb,
-  0x9af9, 0x1df3,
-  0x9afa, 0x5304,
-  0x9afb, 0x1df1,
-  0x9afc, 0x5305,
-  0x9b00, 0x5309,
-  0x9b03, 0x1234,
-  0x9b04, 0x530c,
-  0x9b06, 0x214c,
-  0x9b07, 0x530e,
-  0x9b08, 0x1df4,
-  0x9b09, 0x530f,
-  0x9b0d, 0x267a,
-  0x9b0e, 0x5313,
-  0x9b0f, 0x1df5,
-  0x9b10, 0x5314,
-  0x9b13, 0x1df6,
-  0x9b14, 0x5317,
-  0x9b1a, 0x26a0,
-  0x9b1b, 0x531d,
-  0x9b1f, 0x1df7,
-  0x9b20, 0x5321,
-  0x9b22, 0x2668,
-  0x9b23, 0x1df8,
-  0x9b24, 0x5323,
-  0x9b25, 0x1ed0,
-  0x9b26, 0x5324,
-  0x9b27, 0x2096,
-  0x9b28, 0x5325,
-  0x9b29, 0x23cc,
-  0x9b2a, 0x5326,
-  0x9b2e, 0x23c8,
-  0x9b2f, 0x139b,
-  0x9b30, 0x532a,
-  0x9b31, 0x223e,
-  0x9b32, 0x1260,
-  0x9b33, 0x532b,
-  0x9b3b, 0x1773,
-  0x9b3c, 0x0746,
-  0x9b3d, 0x5333,
-  0x9b41, 0x098a,
-  0x9b42, 0x07ff,
-  0x9b43, 0x1de1,
-  0x9b44, 0x0be6,
-  0x9b45, 0x1de0,
-  0x9b46, 0x5337,
-  0x9b47, 0x1de2,
-  0x9b48, 0x1de4,
-  0x9b49, 0x1de3,
-  0x9b4a, 0x5338,
-  0x9b4d, 0x1de5,
-  0x9b4e, 0x2665,
-  0x9b4f, 0x0ec9,
-  0x9b50, 0x533b,
-  0x9b51, 0x1de6,
-  0x9b52, 0x533c,
-  0x9b54, 0x0b0a,
-  0x9b55, 0x533e,
-  0x9b58, 0x2664,
-  0x9b59, 0x5341,
-  0x9b5a, 0x2239,
-  0x9b5b, 0x5342,
-  0x9b6f, 0x204a,
-  0x9b70, 0x5356,
-  0x9b74, 0x261f,
-  0x9b75, 0x535a,
-  0x9b77, 0x261e,
-  0x9b78, 0x535c,
-  0x9b81, 0x2620,
-  0x9b82, 0x5365,
-  0x9b83, 0x2621,
-  0x9b84, 0x5366,
-  0x9b8e, 0x2622,
-  0x9b8f, 0x5370,
-  0x9b90, 0x2627,
-  0x9b91, 0x1e39,
-  0x9b92, 0x2625,
-  0x9b93, 0x5371,
-  0x9b9a, 0x2629,
-  0x9b9b, 0x5378,
-  0x9b9d, 0x262e,
-  0x9b9e, 0x262b,
-  0x9b9f, 0x537a,
-  0x9baa, 0x262a,
-  0x9bab, 0x262d,
-  0x9bac, 0x5385,
-  0x9bad, 0x2628,
-  0x9bae, 0x21b9,
-  0x9baf, 0x5386,
-  0x9bc0, 0x2636,
-  0x9bc1, 0x2630,
-  0x9bc2, 0x5397,
-  0x9bc7, 0x2638,
-  0x9bc8, 0x539c,
-  0x9bc9, 0x200d,
-  0x9bca, 0x2637,
-  0x9bcb, 0x539d,
-  0x9bd4, 0x2645,
-  0x9bd5, 0x53a6,
-  0x9bd6, 0x263a,
-  0x9bd7, 0x53a7,
-  0x9bdb, 0x2643,
-  0x9bdc, 0x53ab,
-  0x9bdd, 0x2640,
-  0x9bde, 0x53ac,
-  0x9be1, 0x263d,
-  0x9be2, 0x2641,
-  0x9be3, 0x53af,
-  0x9be4, 0x263e,
-  0x9be5, 0x53b0,
-  0x9be7, 0x263f,
-  0x9be8, 0x1fc0,
-  0x9be9, 0x53b2,
-  0x9bea, 0x263b,
-  0x9bec, 0x53b3,
-  0x9bf0, 0x2642,
-  0x9bf1, 0x53b7,
-  0x9bf4, 0x2644,
-  0x9bf5, 0x53ba,
-  0x9bfd, 0x2639,
-  0x9bfe, 0x53c2,
-  0x9bff, 0x264c,
-  0x9c00, 0x53c3,
-  0x9c08, 0x2647,
-  0x9c09, 0x264b,
-  0x9c0a, 0x53cb,
-  0x9c0d, 0x2649,
-  0x9c0e, 0x53ce,
-  0x9c10, 0x2648,
-  0x9c11, 0x53d0,
-  0x9c12, 0x264a,
-  0x9c13, 0x2108,
-  0x9c14, 0x53d1,
-  0x9c20, 0x264d,
-  0x9c21, 0x53dd,
-  0x9c23, 0x2634,
-  0x9c24, 0x53df,
-  0x9c25, 0x2651,
-  0x9c26, 0x53e0,
-  0x9c28, 0x2650,
-  0x9c29, 0x2652,
-  0x9c2a, 0x53e2,
-  0x9c2d, 0x264f,
-  0x9c2e, 0x53e5,
-  0x9c31, 0x2632,
-  0x9c32, 0x264e,
-  0x9c33, 0x2653,
-  0x9c34, 0x53e8,
-  0x9c35, 0x2657,
-  0x9c36, 0x53e9,
-  0x9c37, 0x2635,
-  0x9c38, 0x53ea,
-  0x9c39, 0x2633,
-  0x9c3a, 0x53eb,
-  0x9c3b, 0x2656,
-  0x9c3c, 0x53ec,
-  0x9c3e, 0x2654,
-  0x9c3f, 0x53ee,
-  0x9c45, 0x2658,
-  0x9c46, 0x53f4,
-  0x9c48, 0x2655,
-  0x9c49, 0x1e4d,
-  0x9c4a, 0x53f6,
-  0x9c52, 0x265b,
-  0x9c53, 0x53fe,
-  0x9c54, 0x265a,
-  0x9c55, 0x53ff,
-  0x9c56, 0x2659,
-  0x9c57, 0x202e,
-  0x9c58, 0x262f,
-  0x9c59, 0x5400,
-  0x9c5d, 0x2646,
-  0x9c5e, 0x5404,
-  0x9c5f, 0x2626,
-  0x9c60, 0x5405,
-  0x9c67, 0x265c,
-  0x9c68, 0x540c,
-  0x9c6d, 0x262c,
-  0x9c6e, 0x5411,
-  0x9c78, 0x2623,
-  0x9c79, 0x541b,
-  0x9c7a, 0x2631,
-  0x9c7b, 0x541c,
-  0x9c7c, 0x10c8,
-  0x9c7d, 0x541d,
-  0x9c7f, 0x1d89,
-  0x9c80, 0x541f,
-  0x9c81, 0x0a5a,
-  0x9c82, 0x1d8a,
-  0x9c83, 0x5420,
-  0x9c85, 0x1d8b,
-  0x9c89, 0x5422,
-  0x9c8b, 0x1d90,
-  0x9c8c, 0x5424,
-  0x9c8d, 0x0414,
-  0x9c8e, 0x1d91,
-  0x9c8f, 0x5425,
-  0x9c90, 0x1d92,
-  0x9c93, 0x5426,
-  0x9c94, 0x1d95,
-  0x9c96, 0x5427,
-  0x9c9a, 0x1d97,
-  0x9c9c, 0x0f37,
-  0x9c9d, 0x542b,
-  0x9c9e, 0x1d99,
-  0x9ca4, 0x09db,
-  0x9ca5, 0x1d9f,
-  0x9caa, 0x542c,
-  0x9cab, 0x1da4,
-  0x9cac, 0x542d,
-  0x9cad, 0x1da5,
-  0x9caf, 0x542e,
-  0x9cb0, 0x1da7,
-  0x9cb8, 0x08d7,
-  0x9cb9, 0x542f,
-  0x9cba, 0x1daf,
-  0x9cbe, 0x5430,
-  0x9cc3, 0x0cd5,
-  0x9cc4, 0x1db3,
-  0x9cc8, 0x5435,
-  0x9cca, 0x1db7,
-  0x9cd1, 0x5437,
-  0x9cd3, 0x1dbe,
-  0x9cd6, 0x0457,
-  0x9cd7, 0x1dc1,
-  0x9cda, 0x5439,
-  0x9cdc, 0x1dc4,
-  0x9cde, 0x0a24,
-  0x9cdf, 0x1dc6,
-  0x9ce0, 0x543b,
-  0x9ce2, 0x1dc7,
-  0x9ce3, 0x543d,
-  0x9ce5, 0x209c,
-  0x9ce6, 0x543f,
-  0x9ce9, 0x2580,
-  0x9cea, 0x5442,
-  0x9cec, 0x22dc,
-  0x9ced, 0x5444,
-  0x9cf3, 0x1f05,
-  0x9cf4, 0x208b,
-  0x9cf5, 0x544a,
-  0x9cf6, 0x2581,
-  0x9cf7, 0x544b,
-  0x9d00, 0x5454,
-  0x9d06, 0x2583,
-  0x9d07, 0x2582,
-  0x9d08, 0x545a,
-  0x9d09, 0x21ee,
-  0x9d0a, 0x545b,
-  0x9d15, 0x2182,
-  0x9d16, 0x5466,
-  0x9d1b, 0x2243,
-  0x9d1c, 0x546b,
-  0x9d1d, 0x2587,
-  0x9d1e, 0x546c,
-  0x9d1f, 0x2588,
-  0x9d20, 0x546d,
-  0x9d23, 0x2584,
-  0x9d24, 0x5470,
-  0x9d26, 0x21fd,
-  0x9d27, 0x5472,
-  0x9d28, 0x21ef,
-  0x9d29, 0x5473,
-  0x9d2f, 0x258a,
-  0x9d30, 0x258c,
-  0x9d31, 0x5479,
-  0x9d3b, 0x1f47,
-  0x9d3c, 0x5483,
-  0x9d3f, 0x1f1d,
-  0x9d40, 0x5486,
-  0x9d42, 0x258d,
-  0x9d43, 0x5488,
-  0x9d51, 0x1fd0,
-  0x9d52, 0x2592,
-  0x9d53, 0x258f,
-  0x9d54, 0x5496,
-  0x9d5c, 0x2594,
-  0x9d5d, 0x1ee0,
-  0x9d5e, 0x549e,
-  0x9d60, 0x2591,
-  0x9d61, 0x2595,
-  0x9d62, 0x54a0,
-  0x9d6a, 0x2597,
-  0x9d6b, 0x54a8,
-  0x9d6c, 0x20b6,
-  0x9d6d, 0x54a9,
-  0x9d6f, 0x2598,
-  0x9d70, 0x54ab,
-  0x9d72, 0x20f6,
-  0x9d73, 0x54ad,
-  0x9d87, 0x2585,
-  0x9d88, 0x54c1,
-  0x9d89, 0x2599,
-  0x9d8a, 0x54c2,
-  0x9d93, 0x2596,
-  0x9d94, 0x54cb,
-  0x9d98, 0x259a,
-  0x9d99, 0x54cf,
-  0x9d9a, 0x259b,
-  0x9d9b, 0x54d0,
-  0x9da5, 0x259d,
-  0x9da6, 0x54da,
-  0x9da9, 0x259e,
-  0x9daa, 0x54dd,
-  0x9daf, 0x234c,
-  0x9db0, 0x54e2,
-  0x9db4, 0x1f44,
-  0x9db5, 0x54e6,
-  0x9dbb, 0x2660,
-  0x9dbc, 0x25a0,
-  0x9dbd, 0x54ec,
-  0x9dc0, 0x259c,
-  0x9dc1, 0x54ef,
-  0x9dc2, 0x259f,
-  0x9dc3, 0x54f0,
-  0x9dc4, 0x1f6c,
-  0x9dc5, 0x54f1,
-  0x9dd3, 0x25a2,
-  0x9dd4, 0x54ff,
-  0x9dd7, 0x20ae,
-  0x9dd8, 0x5502,
-  0x9dd9, 0x258b,
-  0x9dda, 0x25a3,
-  0x9ddb, 0x5503,
-  0x9de5, 0x2589,
-  0x9de6, 0x25a5,
-  0x9de7, 0x550d,
-  0x9def, 0x25a4,
-  0x9df0, 0x5515,
-  0x9df2, 0x25a6,
-  0x9df3, 0x2593,
-  0x9df4, 0x5517,
-  0x9df8, 0x25a7,
-  0x9df9, 0x2222,
-  0x9dfa, 0x25a9,
-  0x9dfb, 0x551b,
-  0x9e00, 0x5520,
-  0x9e0c, 0x25a8,
-  0x9e0d, 0x552c,
-  0x9e15, 0x2586,
-  0x9e16, 0x5534,
-  0x9e1a, 0x25a1,
-  0x9e1b, 0x25aa,
-  0x9e1c, 0x5538,
-  0x9e1d, 0x2590,
-  0x9e1e, 0x258e,
-  0x9e1f, 0x0b54,
-  0x9e20, 0x1b35,
-  0x9e21, 0x0819,
-  0x9e22, 0x1b36,
-  0x9e23, 0x0afe,
-  0x9e24, 0x5539,
-  0x9e25, 0x0b79,
-  0x9e26, 0x0fe4,
-  0x9e27, 0x553a,
-  0x9e28, 0x1b37,
-  0x9e2d, 0x0fe5,
-  0x9e2e, 0x553b,
-  0x9e2f, 0x1015,
-  0x9e30, 0x553c,
-  0x9e31, 0x1b3d,
-  0x9e32, 0x1b3c,
-  0x9e33, 0x10ea,
-  0x9e34, 0x553d,
-  0x9e35, 0x0e83,
-  0x9e36, 0x1b3e,
-  0x9e37, 0x1b40,
-  0x9e38, 0x1b3f,
-  0x9e39, 0x1b41,
-  0x9e3b, 0x553e,
-  0x9e3d, 0x06e6,
-  0x9e3e, 0x1b43,
-  0x9e3f, 0x079f,
-  0x9e40, 0x5540,
-  0x9e41, 0x1b44,
-  0x9e43, 0x0918,
-  0x9e44, 0x1b46,
-  0x9e45, 0x062b,
-  0x9e46, 0x1b47,
-  0x9e4a, 0x0c90,
-  0x9e4b, 0x1b4b,
-  0x9e4d, 0x5541,
-  0x9e4e, 0x1b4d,
-  0x9e4f, 0x0bb5,
-  0x9e50, 0x5542,
-  0x9e51, 0x1b4e,
-  0x9e52, 0x5543,
-  0x9e55, 0x1b4f,
-  0x9e56, 0x5546,
-  0x9e57, 0x1b50,
-  0x9e58, 0x1dd5,
-  0x9e59, 0x5547,
-  0x9e5a, 0x1b51,
-  0x9e5d, 0x5548,
-  0x9e5e, 0x1b54,
-  0x9e5f, 0x5549,
-  0x9e63, 0x1b55,
-  0x9e64, 0x078e,
-  0x9e65, 0x554d,
-  0x9e66, 0x1b56,
-  0x9e6d, 0x1b5e,
-  0x9e6e, 0x554e,
-  0x9e70, 0x108a,
-  0x9e71, 0x1b5d,
-  0x9e72, 0x5550,
-  0x9e73, 0x1b5f,
-  0x9e74, 0x5551,
-  0x9e75, 0x2688,
-  0x9e76, 0x5552,
-  0x9e79, 0x269e,
-  0x9e7a, 0x25fb,
-  0x9e7b, 0x5555,
-  0x9e7c, 0x1f8c,
-  0x9e7d, 0x21f4,
-  0x9e7e, 0x1d16,
-  0x9e7f, 0x0a60,
-  0x9e80, 0x5556,
-  0x9e82, 0x1dfc,
-  0x9e83, 0x5558,
-  0x9e87, 0x1dfd,
-  0x9e89, 0x555c,
-  0x9e8b, 0x1dff,
-  0x9e8c, 0x555e,
-  0x9e92, 0x1e00,
-  0x9e93, 0x0a5b,
-  0x9e94, 0x5564,
-  0x9e97, 0x200f,
-  0x9e98, 0x5567,
-  0x9e9d, 0x1e02,
-  0x9e9e, 0x556c,
-  0x9e9f, 0x1e03,
-  0x9ea0, 0x556d,
-  0x9ea5, 0x2071,
-  0x9ea6, 0x0a9a,
-  0x9ea7, 0x5572,
-  0x9ea9, 0x25f7,
-  0x9eaa, 0x5574,
-  0x9eaf, 0x2696,
-  0x9eb0, 0x5579,
-  0x9eb4, 0x1cee,
-  0x9eb5, 0x268f,
-  0x9eb6, 0x557d,
-  0x9eb8, 0x1ced,
-  0x9eb9, 0x557f,
-  0x9ebb, 0x0a90,
-  0x9ebc, 0x5581,
-  0x9ebd, 0x1df9,
-  0x9ebf, 0x5582,
-  0x9ec4, 0x07db,
-  0x9ec5, 0x5587,
-  0x9ec9, 0x12f8,
-  0x9eca, 0x558b,
-  0x9ecc, 0x22da,
-  0x9ecd, 0x0d89,
-  0x9ece, 0x09d3,
-  0x9ecf, 0x1b2a,
-  0x9ed0, 0x558d,
-  0x9ed1, 0x0791,
-  0x9ed2, 0x558e,
-  0x9ed4, 0x0c2a,
-  0x9ed5, 0x5590,
-  0x9ed8, 0x0b0f,
-  0x9ed9, 0x5593,
-  0x9edb, 0x1e04,
-  0x9ede, 0x1ec1,
-  0x9edf, 0x1e08,
-  0x9ee0, 0x1e07,
-  0x9ee1, 0x5595,
-  0x9ee2, 0x1e09,
-  0x9ee3, 0x5596,
-  0x9ee5, 0x1e0c,
-  0x9ee6, 0x5598,
-  0x9ee7, 0x1e0b,
-  0x9ee8, 0x1eb3,
-  0x9ee9, 0x1e0a,
-  0x9eea, 0x1e0d,
-  0x9eeb, 0x5599,
-  0x9eef, 0x1e0e,
-  0x9ef0, 0x559d,
-  0x9ef2, 0x266a,
-  0x9ef3, 0x559f,
-  0x9ef4, 0x268a,
-  0x9ef5, 0x55a0,
-  0x9ef7, 0x2669,
-  0x9ef8, 0x55a2,
-  0x9ef9, 0x1a55,
-  0x9efa, 0x55a3,
-  0x9efb, 0x1a56,
-  0x9efd, 0x2618,
-  0x9efe, 0x1d76,
-  0x9eff, 0x2619,
-  0x9f00, 0x55a4,
-  0x9f09, 0x261a,
-  0x9f0a, 0x55ad,
-  0x9f0b, 0x1d77,
-  0x9f0c, 0x55ae,
-  0x9f0d, 0x1d78,
-  0x9f0e, 0x05e5,
-  0x9f0f, 0x55af,
-  0x9f10, 0x1274,
-  0x9f11, 0x55b0,
-  0x9f13, 0x071d,
-  0x9f14, 0x55b2,
-  0x9f15, 0x2673,
-  0x9f16, 0x55b3,
-  0x9f17, 0x1271,
-  0x9f18, 0x55b4,
-  0x9f19, 0x13df,
-  0x9f1a, 0x55b5,
-  0x9f20, 0x0d8a,
-  0x9f21, 0x55bb,
-  0x9f22, 0x1e0f,
-  0x9f23, 0x55bc,
-  0x9f2c, 0x1e10,
-  0x9f2d, 0x55c5,
-  0x9f2f, 0x1e11,
-  0x9f30, 0x55c7,
-  0x9f37, 0x1e13,
-  0x9f38, 0x55ce,
-  0x9f39, 0x1e12,
-  0x9f3a, 0x55cf,
-  0x9f3b, 0x0430,
-  0x9f3c, 0x55d0,
-  0x9f3d, 0x1e14,
-  0x9f3f, 0x55d1,
-  0x9f44, 0x1e16,
-  0x9f45, 0x55d6,
-  0x9f4a, 0x20c6,
-  0x9f4b, 0x226b,
-  0x9f4c, 0x55db,
-  0x9f4f, 0x24d3,
-  0x9f50, 0x0c0a,
-  0x9f51, 0x19c2,
-  0x9f52, 0x1e86,
-  0x9f53, 0x55de,
-  0x9f54, 0x260f,
-  0x9f55, 0x55df,
-  0x9f59, 0x2611,
-  0x9f5a, 0x55e3,
-  0x9f5c, 0x2613,
-  0x9f5d, 0x55e5,
-  0x9f5f, 0x2610,
-  0x9f60, 0x2612,
-  0x9f61, 0x2030,
-  0x9f62, 0x55e7,
-  0x9f63, 0x2671,
-  0x9f64, 0x55e8,
-  0x9f66, 0x2614,
-  0x9f67, 0x55ea,
-  0x9f6a, 0x2616,
-  0x9f6b, 0x55ed,
-  0x9f6c, 0x2615,
-  0x9f6d, 0x55ee,
-  0x9f72, 0x20f2,
-  0x9f73, 0x55f3,
-  0x9f77, 0x2617,
-  0x9f78, 0x55f7,
-  0x9f7f, 0x0502,
-  0x9f80, 0x1d6d,
-  0x9f81, 0x55fe,
-  0x9f83, 0x1d6e,
-  0x9f84, 0x0a2d,
-  0x9f85, 0x1d6f,
-  0x9f8b, 0x0c7e,
-  0x9f8c, 0x1d75,
-  0x9f8d, 0x2037,
-  0x9f8e, 0x5600,
-  0x9f90, 0x20b3,
-  0x9f91, 0x5602,
-  0x9f94, 0x1f22,
-  0x9f95, 0x24ed,
-  0x9f96, 0x5605,
-  0x9f99, 0x0a43,
-  0x9f9a, 0x0701,
-  0x9f9b, 0x1a54,
-  0x9f9c, 0x1f34,
-  0x9f9d, 0x5608,
-  0x9f9f, 0x0743,
-  0x9fa0, 0x12f3,
-  0x9fa1, 0x560a,
-  0xe7e7, 0x274b,
-  0xe815, 0x561f,
-  0xf92c, 0x560f,
-  0xfa0d, 0x5610,
-  0xfa11, 0x5613,
-  0xfa13, 0x5614,
-  0xfa18, 0x5616,
-  0xfa1f, 0x5617,
-  0xfa23, 0x561a,
-  0xfa27, 0x561c,
-  0xfe30, 0x271d,
-  0xfe49, 0x272b,
-  0xfe54, 0x2735,
-  0xfe59, 0x2739,
-  0xfe68, 0x2747,
-  0xff01, 0x0106,
-  0xff04, 0x00a6,
-  0xff05, 0x010a,
-  0xff5e, 0x006a,
-  0xffe0, 0x00a8,
-  0xffe2, 0x271e,
-  0xffe3, 0x0163,
-  0xffe4, 0x271f,
-  0xffe5, 0x0109,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12UniGBUCS2HEnc16 = {
-  0,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12UniGBUCS2HMap2, 13461
-};
-
-static Gushort gb12UniGBUCS2VMap2[26970] = {
-  0x0000, 0x0000,
-  0x0020, 0x0001,
-  0x00a4, 0x00a7,
-  0x00a7, 0x00ab,
-  0x00a8, 0x0066,
-  0x00b0, 0x00a2,
-  0x00b1, 0x007f,
-  0x00d7, 0x0080,
-  0x00e0, 0x029f,
-  0x00e1, 0x029d,
-  0x00e8, 0x02a3,
-  0x00e9, 0x02a1,
-  0x00ea, 0x02b5,
-  0x00ec, 0x02a7,
-  0x00ed, 0x02a5,
-  0x00f2, 0x02ab,
-  0x00f3, 0x02a9,
-  0x00f7, 0x0081,
-  0x00f9, 0x02af,
-  0x00fa, 0x02ad,
-  0x00fc, 0x02b4,
-  0x0101, 0x029c,
-  0x0113, 0x02a0,
-  0x011b, 0x02a2,
-  0x012b, 0x02a4,
-  0x014d, 0x02a8,
-  0x016b, 0x02ac,
-  0x01ce, 0x029e,
-  0x01d0, 0x02a6,
-  0x01d2, 0x02aa,
-  0x01d4, 0x02ae,
-  0x01d6, 0x02b0,
-  0x01d8, 0x02b1,
-  0x01da, 0x02b2,
-  0x01dc, 0x02b3,
-  0x02c7, 0x0065,
-  0x02c9, 0x0064,
-  0x02ca, 0x26b3,
-  0x02d9, 0x26b5,
-  0x0391, 0x020d,
-  0x03a3, 0x021e,
-  0x03b1, 0x0225,
-  0x03c3, 0x0236,
-  0x0401, 0x0260,
-  0x0410, 0x025a,
-  0x0416, 0x0261,
-  0x0436, 0x0282,
-  0x0451, 0x0281,
-  0x1e3f, 0x02b7,
-  0x2010, 0x2722,
-  0x2013, 0x26b6,
-  0x2014, 0x0069,
-  0x2015, 0x26b7,
-  0x2016, 0x006b,
-  0x2018, 0x006d,
-  0x201c, 0x006f,
-  0x2025, 0x26b8,
-  0x2026, 0x006c,
-  0x2030, 0x00aa,
-  0x2032, 0x00a3,
-  0x2035, 0x26b9,
-  0x203b, 0x00b8,
-  0x2103, 0x00a5,
-  0x2105, 0x26ba,
-  0x2109, 0x26bb,
-  0x2116, 0x00ac,
-  0x2121, 0x2720,
-  0x2160, 0x00fa,
-  0x2170, 0x26a9,
-  0x2190, 0x00ba,
-  0x2192, 0x00b9,
-  0x2193, 0x00bc,
-  0x2196, 0x26bc,
-  0x2208, 0x0089,
-  0x220f, 0x0086,
-  0x2211, 0x0085,
-  0x2215, 0x26c0,
-  0x221a, 0x008b,
-  0x221d, 0x0097,
-  0x221e, 0x009d,
-  0x221f, 0x26c1,
-  0x2220, 0x008e,
-  0x2223, 0x26c2,
-  0x2225, 0x008d,
-  0x2227, 0x0083,
-  0x2229, 0x0088,
-  0x222a, 0x0087,
-  0x222b, 0x0091,
-  0x222e, 0x0092,
-  0x2234, 0x009f,
-  0x2235, 0x009e,
-  0x2236, 0x0082,
-  0x2237, 0x008a,
-  0x223d, 0x0096,
-  0x2248, 0x0095,
-  0x224c, 0x0094,
-  0x2252, 0x26c3,
-  0x2260, 0x0098,
-  0x2261, 0x0093,
-  0x2264, 0x009b,
-  0x2266, 0x26c4,
-  0x226e, 0x0099,
-  0x2295, 0x2704,
-  0x2299, 0x0090,
-  0x22a5, 0x008c,
-  0x22bf, 0x26c6,
-  0x22ef, 0x006c,
-  0x2312, 0x008f,
-  0x2460, 0x00e6,
-  0x2474, 0x00d2,
-  0x2488, 0x00be,
-  0x2500, 0x02e2,
-  0x2550, 0x26c7,
-  0x2581, 0x26eb,
-  0x2593, 0x26fa,
-  0x25a0, 0x00b5,
-  0x25a1, 0x00b4,
-  0x25b2, 0x00b7,
-  0x25b3, 0x00b6,
-  0x25bc, 0x26fd,
-  0x25c6, 0x00b3,
-  0x25c7, 0x00b2,
-  0x25cb, 0x00af,
-  0x25ce, 0x00b1,
-  0x25cf, 0x00b0,
-  0x25e2, 0x26ff,
-  0x2605, 0x00ae,
-  0x2606, 0x00ad,
-  0x2609, 0x2703,
-  0x2640, 0x00a1,
-  0x2642, 0x00a0,
-  0x3000, 0x0060,
-  0x3003, 0x0067,
-  0x3005, 0x0068,
-  0x3006, 0x2728,
-  0x3007, 0x1e17,
-  0x3008, 0x0073,
-  0x3010, 0x007d,
-  0x3012, 0x2705,
-  0x3013, 0x00bd,
-  0x3014, 0x0071,
-  0x3016, 0x007b,
-  0x301d, 0x2706,
-  0x3021, 0x2708,
-  0x3041, 0x0164,
-  0x309b, 0x2724,
-  0x309d, 0x2729,
-  0x30a1, 0x01b7,
-  0x30fb, 0x0063,
-  0x30fc, 0x2723,
-  0x30fd, 0x2726,
-  0x3105, 0x02bc,
-  0x3220, 0x00f0,
-  0x3231, 0x2721,
-  0x32a3, 0x2711,
-  0x338e, 0x2712,
-  0x339c, 0x2714,
-  0x33a1, 0x2717,
-  0x33c4, 0x2718,
-  0x33ce, 0x2719,
-  0x33d1, 0x271a,
-  0x33d5, 0x271c,
-  0x4e00, 0x1042,
-  0x4e01, 0x05e0,
-  0x4e02, 0x2758,
-  0x4e03, 0x0bfe,
-  0x4e04, 0x2759,
-  0x4e07, 0x0ea3,
-  0x4e08, 0x116a,
-  0x4e09, 0x0cd8,
-  0x4e0a, 0x0d08,
-  0x4e0b, 0x0f2f,
-  0x4e0c, 0x1258,
-  0x4e0d, 0x0482,
-  0x4e0e, 0x10d0,
-  0x4e0f, 0x275c,
-  0x4e10, 0x125a,
-  0x4e11, 0x0518,
-  0x4e12, 0x275d,
-  0x4e13, 0x1205,
-  0x4e14, 0x0c4f,
-  0x4e15, 0x125d,
-  0x4e16, 0x0d57,
-  0x4e17, 0x275e,
-  0x4e18, 0x0c6d,
-  0x4e19, 0x0464,
-  0x4e1a, 0x103c,
-  0x4e1b, 0x0557,
-  0x4e1c, 0x05ea,
-  0x4e1d, 0x0db4,
-  0x4e1e, 0x125f,
-  0x4e1f, 0x275f,
-  0x4e22, 0x05e9,
-  0x4e23, 0x2762,
-  0x4e24, 0x0a06,
-  0x4e25, 0x0ff8,
-  0x4e26, 0x2763,
-  0x4e27, 0x0cde,
-  0x4e28, 0x1263,
-  0x4e29, 0x2764,
-  0x4e2a, 0x06f1,
-  0x4e2b, 0x0fe7,
-  0x4e2c, 0x169c,
-  0x4e2d, 0x11cf,
-  0x4e2e, 0x2765,
-  0x4e30, 0x067e,
-  0x4e31, 0x2767,
-  0x4e32, 0x0531,
-  0x4e33, 0x2768,
-  0x4e34, 0x0a22,
-  0x4e35, 0x2769,
-  0x4e36, 0x1272,
-  0x4e37, 0x276a,
-  0x4e38, 0x0e99,
-  0x4e39, 0x0585,
-  0x4e3a, 0x0eb9,
-  0x4e3b, 0x11f6,
-  0x4e3c, 0x276b,
-  0x4e3d, 0x09e1,
-  0x4e3e, 0x0908,
-  0x4e3f, 0x1265,
-  0x4e40, 0x276c,
-  0x4e43, 0x0b2e,
-  0x4e44, 0x276f,
-  0x4e45, 0x08f2,
-  0x4e46, 0x2770,
-  0x4e47, 0x1267,
-  0x4e48, 0x0ab9,
-  0x4e49, 0x106c,
-  0x4e4a, 0x2771,
-  0x4e4b, 0x11ad,
-  0x4e4c, 0x0ee9,
-  0x4e4d, 0x1148,
-  0x4e4e, 0x07ac,
-  0x4e4f, 0x0643,
-  0x4e50, 0x09c1,
-  0x4e51, 0x2772,
-  0x4e52, 0x0bd8,
-  0x4e53, 0x0b93,
-  0x4e54, 0x0c44,
-  0x4e55, 0x2773,
-  0x4e56, 0x072d,
-  0x4e57, 0x2774,
-  0x4e58, 0x04f0,
-  0x4e59, 0x1059,
-  0x4e5a, 0x2775,
-  0x4e5c, 0x1275,
-  0x4e5d, 0x08f4,
-  0x4e5e, 0x0c11,
-  0x4e5f, 0x1039,
-  0x4e60, 0x0f1d,
-  0x4e61, 0x0f54,
-  0x4e62, 0x2777,
-  0x4e66, 0x0d80,
-  0x4e67, 0x277b,
-  0x4e69, 0x1276,
-  0x4e6a, 0x277d,
-  0x4e70, 0x0a99,
-  0x4e71, 0x0a79,
-  0x4e72, 0x2783,
-  0x4e73, 0x0cc4,
-  0x4e74, 0x2784,
-  0x4e7e, 0x0c29,
-  0x4e7f, 0x278e,
-  0x4e82, 0x2059,
-  0x4e83, 0x2791,
-  0x4e86, 0x0a14,
-  0x4e87, 0x2794,
-  0x4e88, 0x10cd,
-  0x4e89, 0x119a,
-  0x4e8a, 0x2795,
-  0x4e8b, 0x0d59,
-  0x4e8c, 0x063d,
-  0x4e8d, 0x1257,
-  0x4e8e, 0x10bf,
-  0x4e8f, 0x0984,
-  0x4e90, 0x2796,
-  0x4e91, 0x1109,
-  0x4e92, 0x07ba,
-  0x4e93, 0x1277,
-  0x4e94, 0x0ef4,
-  0x4e95, 0x08dd,
-  0x4e96, 0x2797,
-  0x4e98, 0x125e,
-  0x4e99, 0x2799,
-  0x4e9a, 0x0ff0,
-  0x4e9b, 0x0f74,
-  0x4e9c, 0x279a,
-  0x4e9e, 0x21f1,
-  0x4e9f, 0x1273,
-  0x4ea0, 0x1303,
-  0x4ea1, 0x0ea7,
-  0x4ea2, 0x0947,
-  0x4ea3, 0x279c,
-  0x4ea4, 0x088c,
-  0x4ea5, 0x075c,
-  0x4ea6, 0x1067,
-  0x4ea7, 0x04c1,
-  0x4ea8, 0x0797,
-  0x4ea9, 0x0b19,
-  0x4eaa, 0x279d,
-  0x4eab, 0x0f5a,
-  0x4eac, 0x08d8,
-  0x4ead, 0x0e55,
-  0x4eae, 0x0a0a,
-  0x4eaf, 0x279e,
-  0x4eb2, 0x0c54,
-  0x4eb3, 0x1305,
-  0x4eb4, 0x27a1,
-  0x4eb5, 0x1308,
-  0x4eb6, 0x27a2,
-  0x4eba, 0x0ca6,
-  0x4ebb, 0x129f,
-  0x4ebc, 0x27a6,
-  0x4ebf, 0x1061,
-  0x4ec0, 0x0d49,
-  0x4ec1, 0x0ca5,
-  0x4ec2, 0x12a2,
-  0x4ec3, 0x12a0,
-  0x4ec4, 0x127c,
-  0x4ec5, 0x08c7,
-  0x4ec6, 0x0bec,
-  0x4ec7, 0x0515,
-  0x4ec8, 0x27a9,
-  0x4ec9, 0x12a1,
-  0x4eca, 0x08c2,
-  0x4ecb, 0x08ba,
-  0x4ecc, 0x27aa,
-  0x4ecd, 0x0caf,
-  0x4ece, 0x0556,
-  0x4ecf, 0x27ab,
-  0x4ed1, 0x0a7f,
-  0x4ed2, 0x27ad,
-  0x4ed3, 0x049d,
-  0x4ed4, 0x122d,
-  0x4ed5, 0x0d62,
-  0x4ed6, 0x0df0,
-  0x4ed7, 0x116d,
-  0x4ed8, 0x06b1,
-  0x4ed9, 0x0f36,
-  0x4eda, 0x27ae,
-  0x4edd, 0x12ee,
-  0x4ede, 0x12a6,
-  0x4edf, 0x0c27,
-  0x4ee0, 0x27b1,
-  0x4ee1, 0x12a4,
-  0x4ee2, 0x27b2,
-  0x4ee3, 0x057d,
-  0x4ee4, 0x0a37,
-  0x4ee5, 0x105b,
-  0x4ee6, 0x27b3,
-  0x4ee8, 0x12a3,
-  0x4ee9, 0x27b5,
-  0x4eea, 0x104e,
-  0x4eeb, 0x12a5,
-  0x4eec, 0x0acc,
-  0x4eed, 0x27b6,
-  0x4ef0, 0x101f,
-  0x4ef1, 0x27b9,
-  0x4ef2, 0x11d8,
-  0x4ef3, 0x12a8,
-  0x4ef4, 0x27ba,
-  0x4ef5, 0x12ab,
-  0x4ef6, 0x0871,
-  0x4ef7, 0x084e,
-  0x4ef8, 0x27bb,
-  0x4efb, 0x0ca9,
-  0x4efc, 0x27be,
-  0x4efd, 0x067a,
-  0x4efe, 0x27bf,
-  0x4eff, 0x065f,
-  0x4f00, 0x27c0,
-  0x4f01, 0x0c12,
-  0x4f02, 0x27c1,
-  0x4f09, 0x12ae,
-  0x4f0a, 0x1048,
-  0x4f0b, 0x27c8,
-  0x4f0d, 0x0ef8,
-  0x4f0e, 0x0832,
-  0x4f0f, 0x0699,
-  0x4f10, 0x0642,
-  0x4f11, 0x0fa8,
-  0x4f12, 0x27ca,
-  0x4f17, 0x11d9,
-  0x4f18, 0x10aa,
-  0x4f19, 0x0804,
-  0x4f1a, 0x07f6,
-  0x4f1b, 0x12a7,
-  0x4f1c, 0x27cf,
-  0x4f1e, 0x0cda,
-  0x4f1f, 0x0ebf,
-  0x4f20, 0x052e,
-  0x4f21, 0x27d1,
-  0x4f22, 0x12a9,
-  0x4f23, 0x27d2,
-  0x4f24, 0x0d04,
-  0x4f25, 0x12ac,
-  0x4f26, 0x0a7e,
-  0x4f27, 0x12ad,
-  0x4f28, 0x27d3,
-  0x4f2a, 0x0ec0,
-  0x4f2b, 0x12af,
-  0x4f2c, 0x27d5,
-  0x4f2f, 0x0475,
-  0x4f30, 0x0719,
-  0x4f31, 0x27d8,
-  0x4f32, 0x12b7,
-  0x4f33, 0x27d9,
-  0x4f34, 0x03f4,
-  0x4f35, 0x27da,
-  0x4f36, 0x0a2f,
-  0x4f37, 0x27db,
-  0x4f38, 0x0d25,
-  0x4f39, 0x27dc,
-  0x4f3a, 0x0dba,
-  0x4f3b, 0x27dd,
-  0x4f3c, 0x0dbb,
-  0x4f3d, 0x12b8,
-  0x4f3e, 0x27de,
-  0x4f43, 0x05c9,
-  0x4f44, 0x27e3,
-  0x4f46, 0x058c,
-  0x4f47, 0x27e5,
-  0x4f4d, 0x0eca,
-  0x4f4e, 0x05ae,
-  0x4f4f, 0x11fe,
-  0x4f50, 0x1251,
-  0x4f51, 0x10b8,
-  0x4f52, 0x27eb,
-  0x4f53, 0x0e38,
-  0x4f54, 0x27ec,
-  0x4f55, 0x0785,
-  0x4f56, 0x27ed,
-  0x4f57, 0x12b6,
-  0x4f58, 0x12f0,
-  0x4f59, 0x10c5,
-  0x4f5a, 0x12b3,
-  0x4f5b, 0x068d,
-  0x4f5c, 0x1254,
-  0x4f5d, 0x12b4,
-  0x4f5e, 0x12b0,
-  0x4f5f, 0x12b5,
-  0x4f60, 0x0b46,
-  0x4f61, 0x27ee,
-  0x4f63, 0x109b,
-  0x4f64, 0x12aa,
-  0x4f65, 0x12f1,
-  0x4f66, 0x27f0,
-  0x4f67, 0x12b1,
-  0x4f68, 0x27f1,
-  0x4f69, 0x0ba6,
-  0x4f6a, 0x27f2,
-  0x4f6c, 0x09bb,
-  0x4f6d, 0x27f4,
-  0x4f6f, 0x1019,
-  0x4f70, 0x03e6,
-  0x4f71, 0x27f6,
-  0x4f73, 0x0844,
-  0x4f74, 0x12ba,
-  0x4f75, 0x27f8,
-  0x4f76, 0x12b9,
-  0x4f77, 0x27f9,
-  0x4f7b, 0x12c0,
-  0x4f7c, 0x12c2,
-  0x4f7d, 0x27fd,
-  0x4f7e, 0x12bf,
-  0x4f7f, 0x0d50,
-  0x4f80, 0x27fe,
-  0x4f83, 0x12bd,
-  0x4f84, 0x11b5,
-  0x4f85, 0x2801,
-  0x4f86, 0x1ff2,
-  0x4f87, 0x2802,
-  0x4f88, 0x0503,
-  0x4f89, 0x12bc,
-  0x4f8a, 0x2803,
-  0x4f8b, 0x09e8,
-  0x4f8c, 0x2804,
-  0x4f8d, 0x0d63,
-  0x4f8e, 0x2805,
-  0x4f8f, 0x12be,
-  0x4f90, 0x2806,
-  0x4f91, 0x12bb,
-  0x4f92, 0x2807,
-  0x4f94, 0x12c4,
-  0x4f95, 0x2809,
-  0x4f96, 0x205d,
-  0x4f97, 0x05f0,
-  0x4f98, 0x280a,
-  0x4f9b, 0x0702,
-  0x4f9c, 0x280d,
-  0x4f9d, 0x1047,
-  0x4f9e, 0x280e,
-  0x4fa0, 0x0f2d,
-  0x4fa1, 0x2810,
-  0x4fa3, 0x0a69,
-  0x4fa4, 0x2812,
-  0x4fa5, 0x0895,
-  0x4fa6, 0x118d,
-  0x4fa7, 0x04a7,
-  0x4fa8, 0x0c45,
-  0x4fa9, 0x0978,
-  0x4faa, 0x12c1,
-  0x4fab, 0x2813,
-  0x4fac, 0x12c3,
-  0x4fad, 0x2814,
-  0x4fae, 0x0ef9,
-  0x4faf, 0x07a5,
-  0x4fb0, 0x2815,
-  0x4fb5, 0x0c53,
-  0x4fb6, 0x281a,
-  0x4fbf, 0x044c,
-  0x4fc0, 0x2823,
-  0x4fc2, 0x269c,
-  0x4fc3, 0x055c,
-  0x4fc4, 0x062c,
-  0x4fc5, 0x12c8,
-  0x4fc6, 0x2825,
-  0x4fca, 0x092e,
-  0x4fcb, 0x2829,
-  0x4fce, 0x12f2,
-  0x4fcf, 0x0c4b,
-  0x4fd0, 0x09e9,
-  0x4fd1, 0x12cc,
-  0x4fd2, 0x282c,
-  0x4fd7, 0x0dcc,
-  0x4fd8, 0x069a,
-  0x4fd9, 0x2831,
-  0x4fda, 0x12c9,
-  0x4fdb, 0x2832,
-  0x4fdc, 0x12cb,
-  0x4fdd, 0x040c,
-  0x4fde, 0x10c6,
-  0x4fdf, 0x12cd,
-  0x4fe0, 0x21b5,
-  0x4fe1, 0x0f90,
-  0x4fe2, 0x2833,
-  0x4fe3, 0x12ca,
-  0x4fe4, 0x2834,
-  0x4fe6, 0x12c5,
-  0x4fe7, 0x2836,
-  0x4fe8, 0x12c6,
-  0x4fe9, 0x09f2,
-  0x4fea, 0x12c7,
-  0x4feb, 0x2837,
-  0x4fed, 0x0866,
-  0x4fee, 0x0fa9,
-  0x4fef, 0x06a4,
-  0x4ff0, 0x2839,
-  0x4ff1, 0x0912,
-  0x4ff2, 0x283a,
-  0x4ff3, 0x12d1,
-  0x4ff4, 0x283b,
-  0x4ff8, 0x12ce,
-  0x4ff9, 0x283f,
-  0x4ffa, 0x03be,
-  0x4ffb, 0x2840,
-  0x4ffe, 0x12d6,
-  0x4fff, 0x2843,
-  0x5000, 0x22cc,
-  0x5001, 0x2844,
-  0x5006, 0x2016,
-  0x5007, 0x2849,
-  0x5009, 0x1e62,
-  0x500a, 0x284b,
-  0x500b, 0x1f20,
-  0x500c, 0x12d8,
-  0x500d, 0x041f,
-  0x500e, 0x284c,
-  0x500f, 0x12d3,
-  0x5010, 0x284d,
-  0x5011, 0x207f,
-  0x5012, 0x059a,
-  0x5013, 0x284e,
-  0x5014, 0x0922,
-  0x5015, 0x284f,
-  0x5018, 0x0e1b,
-  0x5019, 0x07a9,
-  0x501a, 0x1057,
-  0x501b, 0x2852,
-  0x501c, 0x12d7,
-  0x501d, 0x2853,
-  0x501f, 0x08b9,
-  0x5020, 0x2855,
-  0x5021, 0x04d0,
-  0x5022, 0x2856,
-  0x5025, 0x12d9,
-  0x5026, 0x091a,
-  0x5027, 0x2859,
-  0x5028, 0x12da,
-  0x5029, 0x12cf,
-  0x502a, 0x0b42,
-  0x502b, 0x205c,
-  0x502c, 0x12d2,
-  0x502d, 0x12d5,
-  0x502e, 0x12d4,
-  0x502f, 0x285a,
-  0x503a, 0x114f,
-  0x503b, 0x2865,
-  0x503c, 0x11b4,
-  0x503d, 0x2866,
-  0x503e, 0x0c60,
-  0x503f, 0x2867,
-  0x5043, 0x12dc,
-  0x5044, 0x286b,
-  0x5047, 0x084c,
-  0x5048, 0x12de,
-  0x5049, 0x2194,
-  0x504a, 0x286e,
-  0x504c, 0x12d0,
-  0x504d, 0x2870,
-  0x504e, 0x12df,
-  0x504f, 0x0bca,
-  0x5050, 0x2871,
-  0x5055, 0x12dd,
-  0x5056, 0x2876,
-  0x505a, 0x1253,
-  0x505b, 0x287a,
-  0x505c, 0x0e54,
-  0x505d, 0x287b,
-  0x5065, 0x0872,
-  0x5066, 0x2883,
-  0x506c, 0x12e0,
-  0x506d, 0x2889,
-  0x5074, 0x1e65,
-  0x5075, 0x2281,
-  0x5076, 0x0b7d,
-  0x5077, 0x0e66,
-  0x5078, 0x2890,
-  0x507b, 0x12e1,
-  0x507c, 0x2893,
-  0x507e, 0x12db,
-  0x507f, 0x04ca,
-  0x5080, 0x098b,
-  0x5081, 0x2895,
-  0x5085, 0x06b0,
-  0x5086, 0x2899,
-  0x5088, 0x09e7,
-  0x5089, 0x289b,
-  0x508d, 0x0403,
-  0x508e, 0x289f,
-  0x5096, 0x22cd,
-  0x5097, 0x28a7,
-  0x5098, 0x210a,
-  0x5099, 0x1e3e,
-  0x509a, 0x28a8,
-  0x50a2, 0x267f,
-  0x50a3, 0x0579,
-  0x50a4, 0x28b0,
-  0x50a5, 0x12e2,
-  0x50a6, 0x28b1,
-  0x50a7, 0x12e3,
-  0x50a8, 0x0525,
-  0x50a9, 0x12e4,
-  0x50aa, 0x28b2,
-  0x50ac, 0x0562,
-  0x50ad, 0x222e,
-  0x50ae, 0x28b4,
-  0x50b2, 0x03cc,
-  0x50b3, 0x1e96,
-  0x50b4, 0x22cb,
-  0x50b5, 0x226c,
-  0x50b6, 0x28b8,
-  0x50b7, 0x2117,
-  0x50b8, 0x28b9,
-  0x50ba, 0x12e5,
-  0x50bb, 0x0cee,
-  0x50bc, 0x28bb,
-  0x50be, 0x20e8,
-  0x50bf, 0x28bd,
-  0x50c2, 0x22d4,
-  0x50c3, 0x28c0,
-  0x50c5, 0x1fb9,
-  0x50c6, 0x28c2,
-  0x50c9, 0x22d8,
-  0x50ca, 0x28c5,
-  0x50cf, 0x0f5e,
-  0x50d0, 0x28ca,
-  0x50d1, 0x20df,
-  0x50d2, 0x28cb,
-  0x50d5, 0x20c2,
-  0x50d6, 0x12e6,
-  0x50d7, 0x28ce,
-  0x50da, 0x0a0e,
-  0x50db, 0x28d1,
-  0x50de, 0x2195,
-  0x50df, 0x28d4,
-  0x50e5, 0x1fac,
-  0x50e6, 0x12ea,
-  0x50e7, 0x0ce7,
-  0x50e8, 0x22d3,
-  0x50e9, 0x28da,
-  0x50ec, 0x12e9,
-  0x50ed, 0x12e8,
-  0x50ee, 0x12eb,
-  0x50ef, 0x28dd,
-  0x50f3, 0x0dd0,
-  0x50f4, 0x28e1,
-  0x50f5, 0x087a,
-  0x50f6, 0x28e2,
-  0x50f9, 0x1f81,
-  0x50fa, 0x28e5,
-  0x50fb, 0x0bc6,
-  0x50fc, 0x28e6,
-  0x5100, 0x2210,
-  0x5101, 0x28ea,
-  0x5102, 0x22cf,
-  0x5103, 0x28eb,
-  0x5104, 0x2213,
-  0x5105, 0x28ec,
-  0x5106, 0x12e7,
-  0x5107, 0x12ec,
-  0x5108, 0x1fe4,
-  0x5109, 0x1f90,
-  0x510a, 0x28ed,
-  0x510b, 0x12ed,
-  0x510c, 0x28ee,
-  0x5110, 0x22d6,
-  0x5111, 0x28f2,
-  0x5112, 0x0cc0,
-  0x5113, 0x28f3,
-  0x5114, 0x22d0,
-  0x5115, 0x22ce,
-  0x5116, 0x28f4,
-  0x5118, 0x2681,
-  0x5119, 0x28f6,
-  0x511f, 0x1e76,
-  0x5120, 0x28fc,
-  0x5121, 0x09c7,
-  0x5122, 0x28fd,
-  0x512a, 0x2231,
-  0x512b, 0x2905,
-  0x5132, 0x1e93,
-  0x5133, 0x290c,
-  0x5137, 0x22d2,
-  0x5138, 0x2910,
-  0x513a, 0x22d7,
-  0x513b, 0x22d5,
-  0x513c, 0x22d1,
-  0x513d, 0x2912,
-  0x513f, 0x0638,
-  0x5140, 0x1259,
-  0x5141, 0x110d,
-  0x5142, 0x2914,
-  0x5143, 0x10ed,
-  0x5144, 0x0fa1,
-  0x5145, 0x0509,
-  0x5146, 0x1178,
-  0x5147, 0x2915,
-  0x5148, 0x0f35,
-  0x5149, 0x073b,
-  0x514a, 0x2916,
-  0x514b, 0x0958,
-  0x514c, 0x2917,
-  0x514d, 0x0ae7,
-  0x514e, 0x2918,
-  0x5151, 0x0611,
-  0x5152, 0x1ee5,
-  0x5153, 0x291b,
-  0x5154, 0x0e74,
-  0x5155, 0x1302,
-  0x5156, 0x1304,
-  0x5157, 0x291c,
-  0x515a, 0x0594,
-  0x515b, 0x291f,
-  0x515c, 0x05f4,
-  0x515d, 0x2920,
-  0x5162, 0x08d3,
-  0x5163, 0x2925,
-  0x5165, 0x0cc6,
-  0x5166, 0x2927,
-  0x5168, 0x0c86,
-  0x5169, 0x2025,
-  0x516a, 0x2929,
-  0x516b, 0x03d6,
-  0x516c, 0x0704,
-  0x516d, 0x0a42,
-  0x516e, 0x12f6,
-  0x516f, 0x292a,
-  0x5170, 0x09a7,
-  0x5171, 0x070b,
-  0x5172, 0x292b,
-  0x5173, 0x0731,
-  0x5174, 0x0f96,
-  0x5175, 0x0461,
-  0x5176, 0x0c03,
-  0x5177, 0x090e,
-  0x5178, 0x05c5,
-  0x5179, 0x1225,
-  0x517a, 0x292c,
-  0x517b, 0x1021,
-  0x517c, 0x0859,
-  0x517d, 0x0d75,
-  0x517e, 0x292d,
-  0x5180, 0x0830,
-  0x5181, 0x12fa,
-  0x5182, 0x129d,
-  0x5183, 0x292f,
-  0x5185, 0x0b3d,
-  0x5186, 0x2931,
-  0x5188, 0x06cf,
-  0x5189, 0x0c98,
-  0x518a, 0x2933,
-  0x518c, 0x04a8,
-  0x518d, 0x111c,
-  0x518e, 0x2935,
-  0x5192, 0x0ab5,
-  0x5193, 0x2939,
-  0x5195, 0x0ae6,
-  0x5196, 0x1314,
-  0x5197, 0x0cba,
-  0x5198, 0x293b,
-  0x5199, 0x0f7f,
-  0x519a, 0x293c,
-  0x519b, 0x092b,
-  0x519c, 0x0b6a,
-  0x519d, 0x293d,
-  0x51a0, 0x0733,
-  0x51a1, 0x2940,
-  0x51a2, 0x1315,
-  0x51a3, 0x2941,
-  0x51a4, 0x10ec,
-  0x51a5, 0x1316,
-  0x51a6, 0x2942,
-  0x51ab, 0x130f,
-  0x51ac, 0x05eb,
-  0x51ad, 0x2947,
-  0x51af, 0x0688,
-  0x51b0, 0x0462,
-  0x51b1, 0x1310,
-  0x51b2, 0x050a,
-  0x51b3, 0x0925,
-  0x51b4, 0x2949,
-  0x51b5, 0x0983,
-  0x51b6, 0x1038,
-  0x51b7, 0x09cf,
-  0x51b8, 0x294a,
-  0x51bb, 0x05f2,
-  0x51bc, 0x1312,
-  0x51bd, 0x1311,
-  0x51be, 0x294d,
-  0x51c0, 0x08ea,
-  0x51c1, 0x294f,
-  0x51c4, 0x0bff,
-  0x51c5, 0x2952,
-  0x51c6, 0x1219,
-  0x51c7, 0x1313,
-  0x51c8, 0x2953,
-  0x51c9, 0x0a02,
-  0x51ca, 0x2954,
-  0x51cb, 0x05d3,
-  0x51cc, 0x0a31,
-  0x51cd, 0x1ecf,
-  0x51ce, 0x2955,
-  0x51cf, 0x0868,
-  0x51d0, 0x2956,
-  0x51d1, 0x0558,
-  0x51d2, 0x2957,
-  0x51db, 0x0a26,
-  0x51dc, 0x2960,
-  0x51dd, 0x0b60,
-  0x51de, 0x2961,
-  0x51e0, 0x082b,
-  0x51e1, 0x064f,
-  0x51e2, 0x2963,
-  0x51e4, 0x068c,
-  0x51e5, 0x2965,
-  0x51eb, 0x1300,
-  0x51ec, 0x296b,
-  0x51ed, 0x0bdd,
-  0x51ee, 0x296c,
-  0x51ef, 0x093a,
-  0x51f0, 0x07e0,
-  0x51f1, 0x1fd9,
-  0x51f2, 0x296d,
-  0x51f3, 0x05ab,
-  0x51f4, 0x296e,
-  0x51f5, 0x1399,
-  0x51f6, 0x0fa2,
-  0x51f7, 0x296f,
-  0x51f8, 0x0e6a,
-  0x51f9, 0x03c7,
-  0x51fa, 0x051b,
-  0x51fb, 0x080c,
-  0x51fc, 0x139a,
-  0x51fd, 0x0766,
-  0x51fe, 0x2970,
-  0x51ff, 0x1127,
-  0x5200, 0x0597,
-  0x5201, 0x05d4,
-  0x5202, 0x128c,
-  0x5203, 0x0cab,
-  0x5204, 0x2971,
-  0x5206, 0x0673,
-  0x5207, 0x0c4d,
-  0x5208, 0x128d,
-  0x5209, 0x2973,
-  0x520a, 0x093c,
-  0x520b, 0x2974,
-  0x520d, 0x138b,
-  0x520e, 0x128e,
-  0x520f, 0x2976,
-  0x5211, 0x0f97,
-  0x5212, 0x07c3,
-  0x5213, 0x2978,
-  0x5216, 0x196e,
-  0x5217, 0x0a19,
-  0x5218, 0x0a3e,
-  0x5219, 0x1135,
-  0x521a, 0x06d0,
-  0x521b, 0x0537,
-  0x521c, 0x297b,
-  0x521d, 0x051a,
-  0x521e, 0x297c,
-  0x5220, 0x0cf7,
-  0x5221, 0x297e,
-  0x5224, 0x0b91,
-  0x5225, 0x2981,
-  0x5228, 0x0b9a,
-  0x5229, 0x09e6,
-  0x522a, 0x2984,
-  0x522b, 0x0459,
-  0x522c, 0x2985,
-  0x522d, 0x128f,
-  0x522e, 0x0727,
-  0x522f, 0x2986,
-  0x5230, 0x059e,
-  0x5231, 0x2987,
-  0x5233, 0x1290,
-  0x5234, 0x2989,
-  0x5236, 0x11c5,
-  0x5237, 0x0d97,
-  0x5238, 0x0c8a,
-  0x5239, 0x0ceb,
-  0x523a, 0x054f,
-  0x523b, 0x0959,
-  0x523c, 0x298b,
-  0x523d, 0x074d,
-  0x523e, 0x298c,
-  0x523f, 0x1291,
-  0x5241, 0x0626,
-  0x5242, 0x0834,
-  0x5243, 0x0e3d,
-  0x5244, 0x22c8,
-  0x5245, 0x298d,
-  0x5247, 0x2263,
-  0x5248, 0x298f,
-  0x524a, 0x0f64,
-  0x524b, 0x2683,
-  0x524c, 0x1293,
-  0x524d, 0x0c2d,
-  0x524e, 0x2991,
-  0x5250, 0x0729,
-  0x5251, 0x0874,
-  0x5252, 0x2993,
-  0x5254, 0x0e31,
-  0x5255, 0x2995,
-  0x5256, 0x0be9,
-  0x5257, 0x2996,
-  0x525b, 0x1f17,
-  0x525c, 0x1296,
-  0x525d, 0x299a,
-  0x525e, 0x1294,
-  0x525f, 0x299b,
-  0x5261, 0x1295,
-  0x5262, 0x299d,
-  0x5265, 0x0409,
-  0x5266, 0x29a0,
-  0x5267, 0x0916,
-  0x5268, 0x29a1,
-  0x5269, 0x0d3a,
-  0x526a, 0x0867,
-  0x526b, 0x29a2,
-  0x526e, 0x1f2b,
-  0x526f, 0x06ac,
-  0x5270, 0x29a5,
-  0x5272, 0x06e9,
-  0x5273, 0x29a7,
-  0x5274, 0x22ca,
-  0x5275, 0x1e99,
-  0x5276, 0x29a8,
-  0x527d, 0x1298,
-  0x527e, 0x29af,
-  0x527f, 0x089c,
-  0x5280, 0x29b0,
-  0x5281, 0x129a,
-  0x5282, 0x1299,
-  0x5283, 0x1f4f,
-  0x5284, 0x29b1,
-  0x5287, 0x1fcf,
-  0x5288, 0x0bbd,
-  0x5289, 0x2036,
-  0x528a, 0x1f3a,
-  0x528b, 0x29b4,
-  0x528c, 0x22c9,
-  0x528d, 0x1f99,
-  0x528e, 0x29b5,
-  0x5290, 0x129b,
-  0x5291, 0x1f75,
-  0x5292, 0x29b7,
-  0x5293, 0x129c,
-  0x5294, 0x29b8,
-  0x529b, 0x09ef,
-  0x529c, 0x29bf,
-  0x529d, 0x0c8b,
-  0x529e, 0x03f7,
-  0x529f, 0x06ff,
-  0x52a0, 0x0846,
-  0x52a1, 0x0f00,
-  0x52a2, 0x138d,
-  0x52a3, 0x0a1c,
-  0x52a4, 0x29c0,
-  0x52a8, 0x05ee,
-  0x52a9, 0x11f9,
-  0x52aa, 0x0b6d,
-  0x52ab, 0x08aa,
-  0x52ac, 0x138e,
-  0x52ae, 0x29c4,
-  0x52b1, 0x09e3,
-  0x52b2, 0x08d1,
-  0x52b3, 0x09b8,
-  0x52b4, 0x29c7,
-  0x52be, 0x1390,
-  0x52bf, 0x0d5d,
-  0x52c0, 0x29d1,
-  0x52c1, 0x1fbe,
-  0x52c2, 0x29d2,
-  0x52c3, 0x0471,
-  0x52c4, 0x29d3,
-  0x52c7, 0x10a7,
-  0x52c8, 0x29d6,
-  0x52c9, 0x0ae8,
-  0x52ca, 0x29d7,
-  0x52cb, 0x0fd4,
-  0x52cc, 0x29d8,
-  0x52d0, 0x1392,
-  0x52d1, 0x29dc,
-  0x52d2, 0x09c0,
-  0x52d3, 0x29dd,
-  0x52d5, 0x1ecd,
-  0x52d6, 0x1393,
-  0x52d7, 0x29df,
-  0x52d8, 0x093e,
-  0x52d9, 0x21a9,
-  0x52da, 0x29e0,
-  0x52db, 0x21e6,
-  0x52dc, 0x29e1,
-  0x52dd, 0x2127,
-  0x52de, 0x2003,
-  0x52df, 0x0b1f,
-  0x52e0, 0x29e2,
-  0x52e2, 0x2132,
-  0x52e3, 0x29e4,
-  0x52e4, 0x0c57,
-  0x52e5, 0x29e5,
-  0x52f0, 0x1394,
-  0x52f1, 0x2323,
-  0x52f2, 0x29f0,
-  0x52f5, 0x2011,
-  0x52f6, 0x29f3,
-  0x52f8, 0x20f5,
-  0x52f9, 0x12fc,
-  0x52fa, 0x0d10,
-  0x52fb, 0x29f5,
-  0x52fe, 0x070d,
-  0x52ff, 0x0eff,
-  0x5300, 0x110b,
-  0x5301, 0x29f8,
-  0x5305, 0x0407,
-  0x5306, 0x0555,
-  0x5307, 0x29fc,
-  0x5308, 0x0fa4,
-  0x5309, 0x29fd,
-  0x530d, 0x12fd,
-  0x530e, 0x2a01,
-  0x530f, 0x14b5,
-  0x5310, 0x12ff,
-  0x5311, 0x2a02,
-  0x5315, 0x1266,
-  0x5316, 0x07c4,
-  0x5317, 0x041a,
-  0x5318, 0x2a06,
-  0x5319, 0x04fc,
-  0x531a, 0x1284,
-  0x531b, 0x2a07,
-  0x531d, 0x1114,
-  0x531e, 0x2a09,
-  0x5320, 0x0884,
-  0x5321, 0x097c,
-  0x5322, 0x2a0b,
-  0x5323, 0x0f28,
-  0x5324, 0x2a0c,
-  0x5326, 0x1286,
-  0x5327, 0x2a0e,
-  0x532a, 0x0668,
-  0x532b, 0x2a11,
-  0x532d, 0x22c5,
-  0x532e, 0x1287,
-  0x532f, 0x1f5e,
-  0x5330, 0x2a13,
-  0x5331, 0x22c6,
-  0x5332, 0x2a14,
-  0x5339, 0x0bc4,
-  0x533a, 0x0c75,
-  0x533b, 0x1044,
-  0x533c, 0x2a1b,
-  0x533e, 0x1288,
-  0x533f, 0x0b47,
-  0x5340, 0x20ef,
-  0x5341, 0x0d45,
-  0x5342, 0x2a1d,
-  0x5343, 0x0c24,
-  0x5344, 0x2a1e,
-  0x5345, 0x125c,
-  0x5346, 0x2a1f,
-  0x5347, 0x0d36,
-  0x5348, 0x0ef6,
-  0x5349, 0x07f1,
-  0x534a, 0x03f6,
-  0x534b, 0x2a20,
-  0x534e, 0x07bf,
-  0x534f, 0x0f78,
-  0x5350, 0x2a23,
-  0x5351, 0x0419,
-  0x5352, 0x1241,
-  0x5353, 0x121c,
-  0x5354, 0x21d0,
-  0x5355, 0x0586,
-  0x5356, 0x0a9b,
-  0x5357, 0x0b32,
-  0x5358, 0x2a24,
-  0x535a, 0x0470,
-  0x535b, 0x2a26,
-  0x535c, 0x047e,
-  0x535d, 0x2a27,
-  0x535e, 0x044e,
-  0x535f, 0x14fa,
-  0x5360, 0x115d,
-  0x5361, 0x0935,
-  0x5362, 0x0a53,
-  0x5363, 0x128b,
-  0x5364, 0x0a58,
-  0x5365, 0x2a28,
-  0x5366, 0x128a,
-  0x5367, 0x0ee3,
-  0x5368, 0x2a29,
-  0x5369, 0x1352,
-  0x536a, 0x2a2a,
-  0x536b, 0x0ecf,
-  0x536c, 0x2a2b,
-  0x536e, 0x126a,
-  0x536f, 0x0ab3,
-  0x5370, 0x1086,
-  0x5371, 0x0eb2,
-  0x5372, 0x2a2d,
-  0x5373, 0x0827,
-  0x5374, 0x0c8f,
-  0x5375, 0x0a78,
-  0x5376, 0x2a2e,
-  0x5377, 0x091c,
-  0x5378, 0x0f81,
-  0x5379, 0x2a2f,
-  0x537a, 0x1353,
-  0x537b, 0x2a30,
-  0x537f, 0x0c61,
-  0x5380, 0x2a34,
-  0x5382, 0x04cc,
-  0x5383, 0x2a36,
-  0x5384, 0x0631,
-  0x5385, 0x0e4f,
-  0x5386, 0x09e5,
-  0x5387, 0x2a37,
-  0x5389, 0x09e2,
-  0x538a, 0x2a39,
-  0x538b, 0x0fe2,
-  0x538c, 0x100a,
-  0x538d, 0x127d,
-  0x538e, 0x2a3a,
-  0x5395, 0x04a5,
-  0x5396, 0x2a41,
-  0x5398, 0x09d0,
-  0x5399, 0x22c1,
-  0x539a, 0x07a8,
-  0x539b, 0x2a43,
-  0x539d, 0x127e,
-  0x539e, 0x2a45,
-  0x539f, 0x10f0,
-  0x53a0, 0x1e64,
-  0x53a1, 0x2a46,
-  0x53a2, 0x0f4e,
-  0x53a3, 0x127f,
-  0x53a4, 0x2a47,
-  0x53a5, 0x1280,
-  0x53a6, 0x0f30,
-  0x53a7, 0x2a48,
-  0x53a8, 0x051d,
-  0x53a9, 0x08f6,
-  0x53aa, 0x2a49,
-  0x53ad, 0x21f9,
-  0x53ae, 0x1281,
-  0x53af, 0x2a4c,
-  0x53b2, 0x2010,
-  0x53b3, 0x2a4f,
-  0x53b4, 0x22c2,
-  0x53b5, 0x2a50,
-  0x53b6, 0x139c,
-  0x53b7, 0x2a51,
-  0x53bb, 0x0c80,
-  0x53bc, 0x2a55,
-  0x53bf, 0x0f45,
-  0x53c0, 0x2a58,
-  0x53c1, 0x0cd9,
-  0x53c2, 0x0495,
-  0x53c3, 0x1e5a,
-  0x53c4, 0x2a59,
-  0x53c8, 0x10bb,
-  0x53c9, 0x04ad,
-  0x53ca, 0x0823,
-  0x53cb, 0x10b6,
-  0x53cc, 0x0da0,
-  0x53cd, 0x0651,
-  0x53ce, 0x2a5d,
-  0x53d1, 0x063f,
-  0x53d2, 0x2a60,
-  0x53d4, 0x0d7c,
-  0x53d5, 0x2a62,
-  0x53d6, 0x0c7c,
-  0x53d7, 0x0d73,
-  0x53d8, 0x044d,
-  0x53d9, 0x0fbb,
-  0x53da, 0x2a63,
-  0x53db, 0x0b92,
-  0x53dc, 0x2a64,
-  0x53df, 0x1395,
-  0x53e0, 0x05df,
-  0x53e1, 0x2a67,
-  0x53e2, 0x1ea2,
-  0x53e3, 0x0967,
-  0x53e4, 0x071e,
-  0x53e5, 0x0913,
-  0x53e6, 0x0a36,
-  0x53e7, 0x2a68,
-  0x53e8, 0x14fe,
-  0x53e9, 0x14fd,
-  0x53ea, 0x11ba,
-  0x53eb, 0x08a1,
-  0x53ec, 0x117a,
-  0x53ed, 0x03d3,
-  0x53ee, 0x05e2,
-  0x53ef, 0x0956,
-  0x53f0, 0x0dfb,
-  0x53f1, 0x14fb,
-  0x53f2, 0x0d4e,
-  0x53f3, 0x10b7,
-  0x53f4, 0x2a69,
-  0x53f5, 0x1285,
-  0x53f6, 0x103d,
-  0x53f7, 0x077c,
-  0x53f8, 0x0db3,
-  0x53f9, 0x0e11,
-  0x53fa, 0x2a6a,
-  0x53fb, 0x14ff,
-  0x53fc, 0x05d1,
-  0x53fd, 0x14fc,
-  0x53fe, 0x2a6b,
-  0x5400, 0x2a6d,
-  0x5401, 0x10da,
-  0x5402, 0x2a6e,
-  0x5403, 0x04f9,
-  0x5404, 0x06f2,
-  0x5405, 0x2a6f,
-  0x5406, 0x1502,
-  0x5407, 0x2a70,
-  0x5408, 0x0786,
-  0x5409, 0x081d,
-  0x540a, 0x05d6,
-  0x540b, 0x2a71,
-  0x540c, 0x0e5d,
-  0x540d, 0x0b00,
-  0x540e, 0x07aa,
-  0x540f, 0x09df,
-  0x5410, 0x0e73,
-  0x5411, 0x0f5f,
-  0x5412, 0x1500,
-  0x5413, 0x0f32,
-  0x5414, 0x2a72,
-  0x5415, 0x0a67,
-  0x5416, 0x1501,
-  0x5417, 0x0a97,
-  0x5418, 0x2a73,
-  0x541b, 0x092c,
-  0x541c, 0x2a76,
-  0x541d, 0x0a28,
-  0x541e, 0x0e7d,
-  0x541f, 0x107e,
-  0x5420, 0x066a,
-  0x5421, 0x1509,
-  0x5422, 0x2a77,
-  0x5423, 0x150c,
-  0x5424, 0x2a78,
-  0x5426, 0x068e,
-  0x5427, 0x03d4,
-  0x5428, 0x0615,
-  0x5429, 0x0671,
-  0x542a, 0x2a7a,
-  0x542b, 0x0763,
-  0x542c, 0x0e50,
-  0x542d, 0x0961,
-  0x542e, 0x0da6,
-  0x542f, 0x0c13,
-  0x5430, 0x2a7b,
-  0x5431, 0x11a7,
-  0x5432, 0x150d,
-  0x5433, 0x2a7c,
-  0x5434, 0x0ef1,
-  0x5435, 0x04d8,
-  0x5436, 0x2a7d,
-  0x5438, 0x0f0b,
-  0x5439, 0x0538,
-  0x543a, 0x2a7f,
-  0x543b, 0x0ed6,
-  0x543c, 0x07a7,
-  0x543d, 0x2a80,
-  0x543e, 0x0ef0,
-  0x543f, 0x2a81,
-  0x5440, 0x0fe6,
-  0x5441, 0x2a82,
-  0x5443, 0x1508,
-  0x5444, 0x2a84,
-  0x5446, 0x0577,
-  0x5447, 0x2a86,
-  0x5448, 0x04ef,
-  0x5449, 0x2a87,
-  0x544a, 0x06e1,
-  0x544b, 0x1503,
-  0x544c, 0x2a88,
-  0x5450, 0x0b28,
-  0x5451, 0x2a8c,
-  0x5452, 0x1504,
-  0x5455, 0x0b7c,
-  0x5456, 0x1507,
-  0x5457, 0x150a,
-  0x5458, 0x10f4,
-  0x5459, 0x150b,
-  0x545a, 0x2a8d,
-  0x545b, 0x0c37,
-  0x545c, 0x0ee7,
-  0x545d, 0x2a8e,
-  0x5462, 0x0b3b,
-  0x5463, 0x2a93,
-  0x5464, 0x1512,
-  0x5465, 0x2a94,
-  0x5466, 0x1517,
-  0x5467, 0x2a95,
-  0x5468, 0x11db,
-  0x5469, 0x2a96,
-  0x5471, 0x1511,
-  0x5472, 0x1522,
-  0x5473, 0x0ec5,
-  0x5474, 0x2a9e,
-  0x5475, 0x077e,
-  0x5476, 0x1516,
-  0x5477, 0x1510,
-  0x5478, 0x0b9f,
-  0x5479, 0x2a9f,
-  0x547b, 0x0d24,
-  0x547c, 0x07ab,
-  0x547d, 0x0b01,
-  0x547e, 0x2aa1,
-  0x5480, 0x0906,
-  0x5481, 0x2aa3,
-  0x5482, 0x150e,
-  0x5483, 0x2aa4,
-  0x5484, 0x1515,
-  0x5485, 0x2aa5,
-  0x5486, 0x0b99,
-  0x5487, 0x2aa6,
-  0x548b, 0x1147,
-  0x548c, 0x0784,
-  0x548d, 0x2aaa,
-  0x548e, 0x08fb,
-  0x548f, 0x10a2,
-  0x5490, 0x06bb,
-  0x5491, 0x2aab,
-  0x5492, 0x11e3,
-  0x5493, 0x2aac,
-  0x5494, 0x150f,
-  0x5495, 0x0717,
-  0x5496, 0x0934,
-  0x5497, 0x2aad,
-  0x5499, 0x0a45,
-  0x549a, 0x1513,
-  0x549c, 0x2aaf,
-  0x549d, 0x1518,
-  0x549e, 0x2ab0,
-  0x54a3, 0x1523,
-  0x54a4, 0x152d,
-  0x54a5, 0x2ab5,
-  0x54a6, 0x151f,
-  0x54a7, 0x151e,
-  0x54a8, 0x1226,
-  0x54a9, 0x152b,
-  0x54ab, 0x1767,
-  0x54ac, 0x102e,
-  0x54ad, 0x151a,
-  0x54ae, 0x2ab6,
-  0x54af, 0x0936,
-  0x54b0, 0x2ab7,
-  0x54b1, 0x111e,
-  0x54b2, 0x2ab8,
-  0x54b3, 0x0955,
-  0x54b4, 0x151c,
-  0x54b5, 0x2ab9,
-  0x54b8, 0x0f39,
-  0x54b9, 0x2abc,
-  0x54bb, 0x1525,
-  0x54bc, 0x236d,
-  0x54bd, 0x0ff3,
-  0x54be, 0x2abe,
-  0x54bf, 0x1526,
-  0x54c0, 0x03b2,
-  0x54c1, 0x0bd6,
-  0x54c2, 0x151b,
-  0x54c3, 0x2abf,
-  0x54c4, 0x079c,
-  0x54c5, 0x2ac0,
-  0x54c6, 0x061e,
-  0x54c7, 0x0e8c,
-  0x54c8, 0x0757,
-  0x54c9, 0x1118,
-  0x54ca, 0x2ac1,
-  0x54cc, 0x1527,
-  0x54cd, 0x0f59,
-  0x54ce, 0x03b0,
-  0x54cf, 0x152f,
-  0x54d0, 0x1519,
-  0x54d1, 0x0fef,
-  0x54d2, 0x151d,
-  0x54d3, 0x1520,
-  0x54d5, 0x1524,
-  0x54d6, 0x2ac3,
-  0x54d7, 0x07be,
-  0x54d8, 0x2ac4,
-  0x54d9, 0x1528,
-  0x54db, 0x2ac5,
-  0x54dc, 0x152a,
-  0x54dd, 0x152e,
-  0x54de, 0x1530,
-  0x54df, 0x1099,
-  0x54e0, 0x2ac6,
-  0x54e1, 0x2247,
-  0x54e2, 0x2ac7,
-  0x54e5, 0x06e2,
-  0x54e6, 0x0b77,
-  0x54e7, 0x1532,
-  0x54e8, 0x0d13,
-  0x54e9, 0x09f1,
-  0x54ea, 0x0b27,
-  0x54eb, 0x2aca,
-  0x54ed, 0x096b,
-  0x54ee, 0x0f65,
-  0x54ef, 0x2acc,
-  0x54f2, 0x117d,
-  0x54f3, 0x1536,
-  0x54f4, 0x2acf,
-  0x54fa, 0x047f,
-  0x54fb, 0x2ad5,
-  0x54fc, 0x0796,
-  0x54fd, 0x1534,
-  0x54fe, 0x2ad6,
-  0x54ff, 0x1391,
-  0x5500, 0x2ad7,
-  0x5501, 0x100d,
-  0x5502, 0x2ad8,
-  0x5504, 0x236c,
-  0x5505, 0x2ada,
-  0x5506, 0x0de9,
-  0x5507, 0x0540,
-  0x5508, 0x2adb,
-  0x5509, 0x03b1,
-  0x550a, 0x2adc,
-  0x550f, 0x1539,
-  0x5510, 0x0e19,
-  0x5511, 0x153a,
-  0x5512, 0x2ae1,
-  0x5514, 0x1535,
-  0x5515, 0x2ae3,
-  0x551b, 0x1531,
-  0x551c, 0x2ae9,
-  0x5520, 0x1533,
-  0x5521, 0x2aed,
-  0x5522, 0x1537,
-  0x5524, 0x07d2,
-  0x5525, 0x2aee,
-  0x5527, 0x153b,
-  0x5528, 0x2af0,
-  0x552a, 0x153c,
-  0x552b, 0x2af2,
-  0x552c, 0x07b8,
-  0x552d, 0x2af3,
-  0x552e, 0x0d72,
-  0x552f, 0x0eb7,
-  0x5530, 0x154d,
-  0x5531, 0x04cf,
-  0x5532, 0x2af4,
-  0x5533, 0x154c,
-  0x5534, 0x2af5,
-  0x5537, 0x1547,
-  0x5538, 0x2af8,
-  0x553c, 0x1546,
-  0x553d, 0x2afc,
-  0x553e, 0x0e8a,
-  0x553f, 0x1544,
-  0x5540, 0x2afd,
-  0x5541, 0x1542,
-  0x5542, 0x2afe,
-  0x5543, 0x095d,
-  0x5544, 0x1221,
-  0x5545, 0x2aff,
-  0x5546, 0x0d05,
-  0x5547, 0x2b00,
-  0x5549, 0x1540,
-  0x554a, 0x03ac,
-  0x554b, 0x2b02,
-  0x554f, 0x219c,
-  0x5550, 0x1545,
-  0x5551, 0x2b06,
-  0x5553, 0x20c9,
-  0x5554, 0x2b08,
-  0x5555, 0x1543,
-  0x5556, 0x1548,
-  0x5557, 0x2b09,
-  0x555c, 0x154e,
-  0x555d, 0x2b0e,
-  0x555e, 0x21f0,
-  0x555f, 0x2b0f,
-  0x5561, 0x0665,
-  0x5562, 0x2b11,
-  0x5564, 0x0bc0,
-  0x5565, 0x0cef,
-  0x5566, 0x099d,
-  0x5567, 0x153d,
-  0x5568, 0x2b13,
-  0x556a, 0x0b7f,
-  0x556b, 0x2b15,
-  0x556c, 0x127a,
-  0x556d, 0x1541,
-  0x556e, 0x0b59,
-  0x556f, 0x2b16,
-  0x5575, 0x1549,
-  0x5578, 0x0f70,
-  0x5579, 0x2b1c,
-  0x557b, 0x155a,
-  0x557c, 0x0e37,
-  0x557d, 0x2b1e,
-  0x557e, 0x1557,
-  0x557f, 0x2b1f,
-  0x5580, 0x0933,
-  0x5581, 0x1555,
-  0x5582, 0x0ec8,
-  0x5583, 0x1551,
-  0x5584, 0x0cff,
-  0x5585, 0x2b20,
-  0x5587, 0x0999,
-  0x5588, 0x1554,
-  0x5589, 0x07a4,
-  0x558a, 0x0767,
-  0x558b, 0x154f,
-  0x558c, 0x2b22,
-  0x558f, 0x153e,
-  0x5590, 0x2b25,
-  0x5591, 0x1559,
-  0x5592, 0x2b26,
-  0x5594, 0x155e,
-  0x5595, 0x2b28,
-  0x5598, 0x0530,
-  0x5599, 0x155f,
-  0x559a, 0x2b2b,
-  0x559c, 0x0f1f,
-  0x559d, 0x077f,
-  0x559e, 0x2b2d,
-  0x559f, 0x1556,
-  0x55a0, 0x2b2e,
-  0x55a7, 0x0fc5,
-  0x55a8, 0x2b35,
-  0x55aa, 0x210b,
-  0x55ab, 0x2b37,
-  0x55ac, 0x20de,
-  0x55ad, 0x2b38,
-  0x55ae, 0x1eaa,
-  0x55af, 0x2b39,
-  0x55b1, 0x1552,
-  0x55b2, 0x222c,
-  0x55b3, 0x113e,
-  0x55b4, 0x2b3b,
-  0x55b5, 0x153f,
-  0x55b6, 0x2b3c,
-  0x55b7, 0x0ba8,
-  0x55b8, 0x2b3d,
-  0x55b9, 0x1553,
-  0x55ba, 0x2b3e,
-  0x55bb, 0x10dc,
-  0x55bc, 0x2b3f,
-  0x55bd, 0x155c,
-  0x55bf, 0x2b40,
-  0x55c4, 0x156a,
-  0x55c5, 0x0fac,
-  0x55c6, 0x20d8,
-  0x55c7, 0x22c0,
-  0x55c8, 0x2b45,
-  0x55c9, 0x1562,
-  0x55ca, 0x2b46,
-  0x55cc, 0x156f,
-  0x55ce, 0x206f,
-  0x55cf, 0x2b48,
-  0x55d1, 0x1564,
-  0x55d2, 0x1550,
-  0x55d3, 0x0cdd,
-  0x55d4, 0x1567,
-  0x55d5, 0x2b4a,
-  0x55d6, 0x1558,
-  0x55d7, 0x2b4b,
-  0x55da, 0x21a1,
-  0x55db, 0x2b4e,
-  0x55dc, 0x0d5f,
-  0x55dd, 0x1569,
-  0x55de, 0x2b4f,
-  0x55df, 0x155b,
-  0x55e0, 0x2b50,
-  0x55e1, 0x0eda,
-  0x55e2, 0x2b51,
-  0x55e3, 0x0db8,
-  0x55e4, 0x1573,
-  0x55e5, 0x156c,
-  0x55e6, 0x1568,
-  0x55e7, 0x2b52,
-  0x55e8, 0x1571,
-  0x55e9, 0x2379,
-  0x55ea, 0x1560,
-  0x55eb, 0x1565,
-  0x55ed, 0x2b53,
-  0x55ef, 0x156b,
-  0x55f0, 0x2b55,
-  0x55f2, 0x156d,
-  0x55f4, 0x2b57,
-  0x55f5, 0x1572,
-  0x55f6, 0x2372,
-  0x55f7, 0x1561,
-  0x55f8, 0x2b58,
-  0x55fd, 0x0dc9,
-  0x55fe, 0x157b,
-  0x55ff, 0x2b5d,
-  0x5600, 0x157c,
-  0x5601, 0x1578,
-  0x5602, 0x2b5e,
-  0x5606, 0x216a,
-  0x5607, 0x2b62,
-  0x5608, 0x1576,
-  0x5609, 0x0841,
-  0x560a, 0x2b63,
-  0x560c, 0x1577,
-  0x560d, 0x237c,
-  0x560e, 0x06bd,
-  0x560f, 0x127b,
-  0x5610, 0x2b65,
-  0x5614, 0x20b0,
-  0x5615, 0x2b69,
-  0x5616, 0x237a,
-  0x5617, 0x1e74,
-  0x5618, 0x0fb5,
-  0x5619, 0x2b6a,
-  0x561b, 0x0a96,
-  0x561c, 0x2377,
-  0x561d, 0x2b6c,
-  0x561e, 0x1575,
-  0x561f, 0x1563,
-  0x5620, 0x2b6d,
-  0x5623, 0x157a,
-  0x5624, 0x1579,
-  0x5625, 0x2b70,
-  0x5627, 0x157d,
-  0x5628, 0x2b72,
-  0x5629, 0x1f4c,
-  0x562a, 0x2b73,
-  0x562c, 0x1582,
-  0x562d, 0x157e,
-  0x562e, 0x2378,
-  0x562f, 0x21cf,
-  0x5630, 0x2368,
-  0x5631, 0x11f5,
-  0x5632, 0x04d5,
-  0x5633, 0x2b75,
-  0x5634, 0x1249,
-  0x5635, 0x2371,
-  0x5636, 0x0db0,
-  0x5637, 0x2b76,
-  0x5638, 0x2369,
-  0x5639, 0x1580,
-  0x563a, 0x2b77,
-  0x563b, 0x0f0a,
-  0x563c, 0x2b78,
-  0x563f, 0x0790,
-  0x5640, 0x2b7b,
-  0x5641, 0x2674,
-  0x5642, 0x2b7c,
-  0x564c, 0x1587,
-  0x564d, 0x1583,
-  0x564e, 0x1034,
-  0x564f, 0x2b86,
-  0x5654, 0x1588,
-  0x5655, 0x2b8b,
-  0x5657, 0x1581,
-  0x5658, 0x157f,
-  0x5659, 0x1585,
-  0x565a, 0x2b8d,
-  0x565c, 0x1586,
-  0x565d, 0x236f,
-  0x565e, 0x2b8f,
-  0x5660, 0x2370,
-  0x5661, 0x2b91,
-  0x5662, 0x1584,
-  0x5663, 0x2b92,
-  0x5664, 0x158a,
-  0x5665, 0x2376,
-  0x5666, 0x2373,
-  0x5667, 0x2b93,
-  0x5668, 0x0c16,
-  0x5669, 0x1262,
-  0x566a, 0x112e,
-  0x566b, 0x158c,
-  0x566c, 0x0d60,
-  0x566d, 0x2b94,
-  0x566f, 0x237f,
-  0x5670, 0x2b96,
-  0x5671, 0x158b,
-  0x5672, 0x2374,
-  0x5673, 0x2b97,
-  0x5674, 0x20b5,
-  0x5675, 0x2b98,
-  0x5676, 0x06bc,
-  0x5677, 0x2b99,
-  0x5678, 0x1edb,
-  0x5679, 0x2672,
-  0x567a, 0x2b9a,
-  0x567b, 0x158d,
-  0x567d, 0x2b9b,
-  0x5680, 0x236e,
-  0x5681, 0x2b9e,
-  0x5685, 0x158f,
-  0x5686, 0x1589,
-  0x5687, 0x21b7,
-  0x5688, 0x2ba2,
-  0x568c, 0x2375,
-  0x568d, 0x2ba6,
-  0x568e, 0x0776,
-  0x568f, 0x0e3a,
-  0x5690, 0x2ba7,
-  0x5693, 0x1590,
-  0x5694, 0x2baa,
-  0x5695, 0x2382,
-  0x5696, 0x2bab,
-  0x5699, 0x209e,
-  0x569a, 0x2bae,
-  0x56a3, 0x0f66,
-  0x56a4, 0x2bb7,
-  0x56a6, 0x236b,
-  0x56a7, 0x2bb9,
-  0x56a8, 0x2039,
-  0x56a9, 0x2bba,
-  0x56ae, 0x269f,
-  0x56af, 0x1591,
-  0x56b0, 0x2bbf,
-  0x56b3, 0x237d,
-  0x56b4, 0x21f5,
-  0x56b5, 0x2bc2,
-  0x56b6, 0x2381,
-  0x56b7, 0x0c9d,
-  0x56b8, 0x2bc3,
-  0x56bc, 0x0891,
-  0x56bd, 0x2bc7,
-  0x56c0, 0x237b,
-  0x56c1, 0x237e,
-  0x56c2, 0x21cc,
-  0x56c3, 0x2bca,
-  0x56c5, 0x22db,
-  0x56c6, 0x2bcc,
-  0x56c8, 0x236a,
-  0x56c9, 0x2689,
-  0x56ca, 0x0b35,
-  0x56cb, 0x2bce,
-  0x56cc, 0x2697,
-  0x56cd, 0x2bcf,
-  0x56d1, 0x22a1,
-  0x56d2, 0x2bd3,
-  0x56d4, 0x1592,
-  0x56d5, 0x2bd5,
-  0x56d7, 0x1593,
-  0x56d8, 0x2bd7,
-  0x56da, 0x0c71,
-  0x56db, 0x0db9,
-  0x56dc, 0x2bd9,
-  0x56dd, 0x1594,
-  0x56de, 0x07ed,
-  0x56df, 0x126c,
-  0x56e0, 0x1079,
-  0x56e1, 0x1595,
-  0x56e2, 0x0e76,
-  0x56e3, 0x2bda,
-  0x56e4, 0x0619,
-  0x56e5, 0x2bdb,
-  0x56eb, 0x1597,
-  0x56ec, 0x2be1,
-  0x56ed, 0x10f3,
-  0x56ee, 0x2be2,
-  0x56f0, 0x0992,
-  0x56f1, 0x0554,
-  0x56f2, 0x2be4,
-  0x56f4, 0x0eb6,
-  0x56f5, 0x1596,
-  0x56f6, 0x2be6,
-  0x56f9, 0x1598,
-  0x56fa, 0x0725,
-  0x56fb, 0x2be9,
-  0x56fd, 0x0753,
-  0x56fe, 0x0e6d,
-  0x56ff, 0x1599,
-  0x5700, 0x2beb,
-  0x5703, 0x0bf3,
-  0x5704, 0x159a,
-  0x5705, 0x2bee,
-  0x5706, 0x10f5,
-  0x5707, 0x2383,
-  0x5708, 0x0c81,
-  0x5709, 0x159c,
-  0x570a, 0x159b,
-  0x570b, 0x1f3d,
-  0x570c, 0x2bef,
-  0x570d, 0x218f,
-  0x570e, 0x2bf0,
-  0x5712, 0x2246,
-  0x5713, 0x2248,
-  0x5714, 0x2bf4,
-  0x5716, 0x217e,
-  0x5717, 0x2bf6,
-  0x5718, 0x2180,
-  0x5719, 0x2bf7,
-  0x571c, 0x159d,
-  0x571d, 0x2bfa,
-  0x571f, 0x0e72,
-  0x5720, 0x2bfc,
-  0x5723, 0x0d3c,
-  0x5724, 0x2bff,
-  0x5728, 0x111d,
-  0x5729, 0x13a7,
-  0x572a, 0x13a9,
-  0x572b, 0x2c03,
-  0x572c, 0x13a8,
-  0x572d, 0x0740,
-  0x572e, 0x13ac,
-  0x5730, 0x05b9,
-  0x5731, 0x2c04,
-  0x5733, 0x13aa,
-  0x5734, 0x2c06,
-  0x5739, 0x13ab,
-  0x573a, 0x04c6,
-  0x573b, 0x13af,
-  0x573c, 0x2c0b,
-  0x573e, 0x080d,
-  0x573f, 0x2c0d,
-  0x5740, 0x11b6,
-  0x5741, 0x2c0e,
-  0x5742, 0x13b0,
-  0x5743, 0x2c0f,
-  0x5747, 0x0928,
-  0x5748, 0x2c13,
-  0x574a, 0x0658,
-  0x574b, 0x2c15,
-  0x574c, 0x13a0,
-  0x574d, 0x0e01,
-  0x574e, 0x093f,
-  0x574f, 0x07ca,
-  0x5750, 0x1255,
-  0x5751, 0x0960,
-  0x5752, 0x2c16,
-  0x5757, 0x0976,
-  0x5758, 0x2c1b,
-  0x575a, 0x0854,
-  0x575b, 0x0e06,
-  0x575c, 0x13ae,
-  0x575d, 0x03de,
-  0x575e, 0x0efa,
-  0x575f, 0x0675,
-  0x5760, 0x1216,
-  0x5761, 0x0be1,
-  0x5762, 0x2c1d,
-  0x5764, 0x098f,
-  0x5765, 0x2c1f,
-  0x5766, 0x0e0c,
-  0x5767, 0x2c20,
-  0x5768, 0x13b7,
-  0x5769, 0x13b1,
-  0x576a, 0x0bd9,
-  0x576b, 0x13b3,
-  0x576c, 0x2c21,
-  0x576d, 0x13b8,
-  0x576e, 0x2c22,
-  0x576f, 0x0bb8,
-  0x5770, 0x2c23,
-  0x5773, 0x13ba,
-  0x5774, 0x2c26,
-  0x5776, 0x13b9,
-  0x5777, 0x094d,
-  0x5778, 0x2c28,
-  0x577b, 0x13b6,
-  0x577c, 0x13b5,
-  0x577d, 0x2c2b,
-  0x5782, 0x053c,
-  0x5783, 0x0997,
-  0x5784, 0x0a49,
-  0x5785, 0x13b2,
-  0x5786, 0x13b4,
-  0x5787, 0x2c30,
-  0x578b, 0x0f98,
-  0x578c, 0x13bd,
-  0x578d, 0x2c34,
-  0x5792, 0x09c8,
-  0x5793, 0x13c2,
-  0x5794, 0x2c39,
-  0x579b, 0x0621,
-  0x579c, 0x2c40,
-  0x57a0, 0x13c3,
-  0x57a1, 0x13a2,
-  0x57a2, 0x0711,
-  0x57a3, 0x10ee,
-  0x57a4, 0x13bc,
-  0x57a5, 0x2c44,
-  0x57a6, 0x095e,
-  0x57a7, 0x13c0,
-  0x57a8, 0x2c45,
-  0x57a9, 0x13a1,
-  0x57aa, 0x2c46,
-  0x57ab, 0x05c7,
-  0x57ac, 0x2c47,
-  0x57ad, 0x13bb,
-  0x57ae, 0x0972,
-  0x57af, 0x2c48,
-  0x57b2, 0x13be,
-  0x57b3, 0x2c4b,
-  0x57b4, 0x13c1,
-  0x57b5, 0x2c4c,
-  0x57b8, 0x13c9,
-  0x57b9, 0x2c4f,
-  0x57c2, 0x06fa,
-  0x57c3, 0x03ae,
-  0x57c4, 0x2c58,
-  0x57cb, 0x0a98,
-  0x57cc, 0x2c5f,
-  0x57ce, 0x04ec,
-  0x57cf, 0x13bf,
-  0x57d0, 0x2c61,
-  0x57d2, 0x13c8,
-  0x57d3, 0x2c63,
-  0x57d4, 0x0bf1,
-  0x57d5, 0x13c4,
-  0x57d6, 0x2c64,
-  0x57d8, 0x13c5,
-  0x57d9, 0x13c7,
-  0x57da, 0x13c6,
-  0x57db, 0x2c66,
-  0x57dd, 0x13ce,
-  0x57de, 0x2c68,
-  0x57df, 0x10d7,
-  0x57e0, 0x0481,
-  0x57e1, 0x232a,
-  0x57e2, 0x2c69,
-  0x57e4, 0x13cd,
-  0x57e5, 0x2c6b,
-  0x57ed, 0x13d2,
-  0x57ee, 0x2c73,
-  0x57ef, 0x13cb,
-  0x57f0, 0x2c74,
-  0x57f4, 0x13ca,
-  0x57f5, 0x2c78,
-  0x57f7, 0x228b,
-  0x57f8, 0x13cc,
-  0x57f9, 0x0ba1,
-  0x57fa, 0x080e,
-  0x57fb, 0x2c7a,
-  0x57fd, 0x13d1,
-  0x57fe, 0x2c7c,
-  0x5800, 0x13d3,
-  0x5801, 0x2c7e,
-  0x5802, 0x0e16,
-  0x5803, 0x2c7f,
-  0x5805, 0x1f85,
-  0x5806, 0x0610,
-  0x5807, 0x144c,
-  0x5808, 0x2c81,
-  0x580a, 0x2325,
-  0x580b, 0x13cf,
-  0x580c, 0x2c83,
-  0x580d, 0x13d0,
-  0x580e, 0x2c84,
-  0x5811, 0x0c32,
-  0x5812, 0x2c87,
-  0x5815, 0x0628,
-  0x5816, 0x232c,
-  0x5817, 0x2c8a,
-  0x5819, 0x13d5,
-  0x581a, 0x2c8c,
-  0x581d, 0x232e,
-  0x581e, 0x13d4,
-  0x581f, 0x2c8f,
-  0x5820, 0x13d7,
-  0x5821, 0x040d,
-  0x5822, 0x2c90,
-  0x5824, 0x05ad,
-  0x5825, 0x2c92,
-  0x582a, 0x093d,
-  0x582b, 0x2c97,
-  0x582f, 0x2205,
-  0x5830, 0x1008,
-  0x5831, 0x1e38,
-  0x5832, 0x2c9b,
-  0x5834, 0x1e73,
-  0x5835, 0x0601,
-  0x5836, 0x2c9d,
-  0x5844, 0x13d6,
-  0x5845, 0x2cab,
-  0x584a, 0x1fe3,
-  0x584b, 0x2339,
-  0x584c, 0x0def,
-  0x584d, 0x19a3,
-  0x584e, 0x2cb0,
-  0x584f, 0x232b,
-  0x5850, 0x2cb1,
-  0x5851, 0x0dd1,
-  0x5852, 0x232d,
-  0x5853, 0x2cb2,
-  0x5854, 0x0df3,
-  0x5855, 0x2cb3,
-  0x5857, 0x217f,
-  0x5858, 0x0e14,
-  0x5859, 0x2cb5,
-  0x585e, 0x0cd6,
-  0x585f, 0x2cba,
-  0x5862, 0x21a7,
-  0x5863, 0x2cbd,
-  0x5864, 0x232f,
-  0x5865, 0x13d8,
-  0x5866, 0x2cbe,
-  0x586b, 0x0e41,
-  0x586c, 0x13d9,
-  0x586d, 0x2cc3,
-  0x5875, 0x1e7d,
-  0x5876, 0x2ccb,
-  0x5879, 0x20d6,
-  0x587a, 0x2cce,
-  0x587e, 0x13a3,
-  0x587f, 0x2cd2,
-  0x5880, 0x13dd,
-  0x5881, 0x13da,
-  0x5882, 0x2cd3,
-  0x5883, 0x08e2,
-  0x5884, 0x2cd4,
-  0x5885, 0x0d92,
-  0x5886, 0x2cd5,
-  0x5889, 0x13db,
-  0x588a, 0x1ec2,
-  0x588b, 0x2cd8,
-  0x5892, 0x0d03,
-  0x5893, 0x0b1c,
-  0x5894, 0x2cdf,
-  0x5899, 0x0c3a,
-  0x589a, 0x13dc,
-  0x589b, 0x2ce4,
-  0x589c, 0x22b2,
-  0x589d, 0x2ce5,
-  0x589e, 0x1139,
-  0x589f, 0x0fb1,
-  0x58a0, 0x2ce6,
-  0x58a8, 0x0b0e,
-  0x58a9, 0x0614,
-  0x58aa, 0x2cee,
-  0x58ae, 0x1edf,
-  0x58af, 0x2cf2,
-  0x58b3, 0x1ef9,
-  0x58b4, 0x2cf6,
-  0x58bb, 0x20d9,
-  0x58bc, 0x13a4,
-  0x58bd, 0x2cfd,
-  0x58be, 0x1fdd,
-  0x58bf, 0x2cfe,
-  0x58c1, 0x0443,
-  0x58c2, 0x2d00,
-  0x58c5, 0x13a5,
-  0x58c6, 0x2d03,
-  0x58c7, 0x2167,
-  0x58c8, 0x2d04,
-  0x58d1, 0x13a6,
-  0x58d2, 0x2d0d,
-  0x58d3, 0x21ed,
-  0x58d4, 0x2d0e,
-  0x58d5, 0x0775,
-  0x58d6, 0x2d0f,
-  0x58d8, 0x2007,
-  0x58d9, 0x2326,
-  0x58da, 0x2329,
-  0x58db, 0x2d11,
-  0x58de, 0x1f52,
-  0x58df, 0x203b,
-  0x58e0, 0x2328,
-  0x58e1, 0x2d14,
-  0x58e2, 0x2327,
-  0x58e3, 0x2d15,
-  0x58e4, 0x0c9b,
-  0x58e5, 0x2d16,
-  0x58e9, 0x1e2b,
-  0x58ea, 0x2d1a,
-  0x58eb, 0x0d56,
-  0x58ec, 0x0ca4,
-  0x58ed, 0x2d1b,
-  0x58ee, 0x1210,
-  0x58ef, 0x22ae,
-  0x58f0, 0x0d32,
-  0x58f1, 0x2d1c,
-  0x58f3, 0x0954,
-  0x58f4, 0x2d1e,
-  0x58f6, 0x07af,
-  0x58f7, 0x2d20,
-  0x58f9, 0x1043,
-  0x58fa, 0x1f49,
-  0x58fb, 0x2d22,
-  0x58fd, 0x2138,
-  0x58fe, 0x2d24,
-  0x5900, 0x2d26,
-  0x5902, 0x161c,
-  0x5903, 0x2d28,
-  0x5904, 0x0529,
-  0x5905, 0x2d29,
-  0x5907, 0x0421,
-  0x5908, 0x2d2b,
-  0x590d, 0x06af,
-  0x590e, 0x2d30,
-  0x590f, 0x0f31,
-  0x5910, 0x2d31,
-  0x5914, 0x12fb,
-  0x5915, 0x0f13,
-  0x5916, 0x0e93,
-  0x5917, 0x2d35,
-  0x5919, 0x1301,
-  0x591a, 0x061f,
-  0x591b, 0x2d37,
-  0x591c, 0x1040,
-  0x591d, 0x2d38,
-  0x591f, 0x0714,
-  0x5920, 0x2d3a,
-  0x5922, 0x2081,
-  0x5923, 0x2d3c,
-  0x5924, 0x161b,
-  0x5925, 0x1619,
-  0x5926, 0x2d3d,
-  0x5927, 0x0576,
-  0x5928, 0x2d3e,
-  0x5929, 0x0e3f,
-  0x592a, 0x0dfe,
-  0x592b, 0x068f,
-  0x592c, 0x2d3f,
-  0x592d, 0x1268,
-  0x592e, 0x1014,
-  0x592f, 0x0772,
-  0x5930, 0x2d40,
-  0x5931, 0x0d3e,
-  0x5932, 0x2d41,
-  0x5934, 0x0e68,
-  0x5935, 0x2d43,
-  0x5937, 0x104b,
-  0x5938, 0x0971,
-  0x5939, 0x0843,
-  0x593a, 0x0620,
-  0x593b, 0x2d45,
-  0x593c, 0x14af,
-  0x593d, 0x2d46,
-  0x593e, 0x1f7c,
-  0x593f, 0x2d47,
-  0x5941, 0x14b0,
-  0x5942, 0x138c,
-  0x5943, 0x2d49,
-  0x5944, 0x1002,
-  0x5945, 0x2d4a,
-  0x5947, 0x0c05,
-  0x5948, 0x0b31,
-  0x5949, 0x068b,
-  0x594a, 0x2d4c,
-  0x594b, 0x0679,
-  0x594c, 0x2d4d,
-  0x594e, 0x0989,
-  0x594f, 0x123d,
-  0x5950, 0x2d4f,
-  0x5951, 0x0c14,
-  0x5952, 0x2d50,
-  0x5954, 0x0425,
-  0x5955, 0x14b2,
-  0x5956, 0x0882,
-  0x5957, 0x0e2a,
-  0x5958, 0x14b4,
-  0x5959, 0x2d52,
-  0x595a, 0x14b3,
-  0x595b, 0x2d53,
-  0x5960, 0x05cd,
-  0x5961, 0x2d58,
-  0x5962, 0x0d16,
-  0x5963, 0x2d59,
-  0x5965, 0x03cd,
-  0x5966, 0x2d5b,
-  0x5969, 0x235b,
-  0x596a, 0x1ede,
-  0x596b, 0x2d5e,
-  0x596c, 0x1fa2,
-  0x596d, 0x2d5f,
-  0x596e, 0x1efa,
-  0x596f, 0x2d60,
-  0x5973, 0x0b6f,
-  0x5974, 0x0b6c,
-  0x5975, 0x2d64,
-  0x5976, 0x0b2f,
-  0x5977, 0x2d65,
-  0x5978, 0x085c,
-  0x5979, 0x0df2,
-  0x597a, 0x2d66,
-  0x597d, 0x077a,
-  0x597e, 0x2d69,
-  0x5981, 0x1775,
-  0x5982, 0x0cc2,
-  0x5983, 0x1776,
-  0x5984, 0x0eae,
-  0x5985, 0x2d6c,
-  0x5986, 0x120e,
-  0x5987, 0x06b9,
-  0x5988, 0x0a8f,
-  0x5989, 0x2d6d,
-  0x598a, 0x0cac,
-  0x598b, 0x2d6e,
-  0x598d, 0x1777,
-  0x598e, 0x2d70,
-  0x5992, 0x0609,
-  0x5993, 0x083e,
-  0x5994, 0x2d74,
-  0x5996, 0x1026,
-  0x5997, 0x177b,
-  0x5998, 0x2d76,
-  0x5999, 0x0af3,
-  0x599a, 0x2d77,
-  0x599d, 0x22ad,
-  0x599e, 0x177e,
-  0x599f, 0x2d7a,
-  0x59a3, 0x177a,
-  0x59a4, 0x177f,
-  0x59a5, 0x0e88,
-  0x59a6, 0x2d7e,
-  0x59a8, 0x065e,
-  0x59a9, 0x1778,
-  0x59ab, 0x177d,
-  0x59ac, 0x2d80,
-  0x59ae, 0x0b40,
-  0x59af, 0x1782,
-  0x59b0, 0x2d82,
-  0x59b2, 0x1781,
-  0x59b3, 0x2d84,
-  0x59b9, 0x0ac8,
-  0x59ba, 0x2d8a,
-  0x59bb, 0x0bfd,
-  0x59bc, 0x2d8b,
-  0x59be, 0x1784,
-  0x59bf, 0x2d8d,
-  0x59c6, 0x0b1a,
-  0x59c7, 0x2d94,
-  0x59ca, 0x177c,
-  0x59cb, 0x0d53,
-  0x59cc, 0x2d97,
-  0x59d0, 0x08b4,
-  0x59d1, 0x071c,
-  0x59d2, 0x1780,
-  0x59d3, 0x0fa0,
-  0x59d4, 0x0ebe,
-  0x59d5, 0x2d9b,
-  0x59d7, 0x1783,
-  0x59d8, 0x178a,
-  0x59d9, 0x2d9d,
-  0x59da, 0x102d,
-  0x59db, 0x2d9e,
-  0x59dc, 0x087b,
-  0x59dd, 0x1787,
-  0x59de, 0x2d9f,
-  0x59e3, 0x1789,
-  0x59e4, 0x2da4,
-  0x59e5, 0x09bc,
-  0x59e6, 0x2da5,
-  0x59e8, 0x1053,
-  0x59e9, 0x2da7,
-  0x59ec, 0x081a,
-  0x59ed, 0x2daa,
-  0x59f9, 0x178b,
-  0x59fa, 0x2db6,
-  0x59fb, 0x107d,
-  0x59fc, 0x2db7,
-  0x59ff, 0x1228,
-  0x5a00, 0x2dba,
-  0x5a01, 0x0eaf,
-  0x5a02, 0x2dbb,
-  0x5a03, 0x0e8f,
-  0x5a04, 0x0a4d,
-  0x5a05, 0x1785,
-  0x5a07, 0x0890,
-  0x5a08, 0x1788,
-  0x5a09, 0x178d,
-  0x5a0a, 0x2dbc,
-  0x5a0c, 0x178c,
-  0x5a0d, 0x2dbe,
-  0x5a11, 0x1790,
-  0x5a12, 0x2dc2,
-  0x5a13, 0x1792,
-  0x5a14, 0x2dc3,
-  0x5a18, 0x0b52,
-  0x5a19, 0x2dc7,
-  0x5a1c, 0x0b2b,
-  0x5a1d, 0x2dca,
-  0x5a1f, 0x0919,
-  0x5a20, 0x0d28,
-  0x5a21, 0x2dcc,
-  0x5a23, 0x1791,
-  0x5a24, 0x2dce,
-  0x5a25, 0x062f,
-  0x5a26, 0x2dcf,
-  0x5a29, 0x0ae9,
-  0x5a2a, 0x2dd2,
-  0x5a31, 0x10ce,
-  0x5a32, 0x178e,
-  0x5a33, 0x2dd9,
-  0x5a34, 0x178f,
-  0x5a35, 0x2dda,
-  0x5a36, 0x0c7d,
-  0x5a37, 0x2ddb,
-  0x5a3c, 0x1797,
-  0x5a3d, 0x2de0,
-  0x5a40, 0x1793,
-  0x5a41, 0x203f,
-  0x5a42, 0x2de3,
-  0x5a46, 0x0be4,
-  0x5a47, 0x2de7,
-  0x5a49, 0x0ea2,
-  0x5a4a, 0x1795,
-  0x5a4b, 0x2de9,
-  0x5a55, 0x1796,
-  0x5a56, 0x2df3,
-  0x5a5a, 0x07fe,
-  0x5a5b, 0x2df7,
-  0x5a62, 0x1798,
-  0x5a63, 0x2dfe,
-  0x5a66, 0x1f0e,
-  0x5a67, 0x1794,
-  0x5a68, 0x2e01,
-  0x5a6a, 0x09a2,
-  0x5a6b, 0x2e03,
-  0x5a6d, 0x23f9,
-  0x5a6e, 0x2e05,
-  0x5a74, 0x1089,
-  0x5a75, 0x1799,
-  0x5a76, 0x0d2d,
-  0x5a77, 0x179d,
-  0x5a78, 0x2e0b,
-  0x5a7a, 0x179e,
-  0x5a7b, 0x2e0d,
-  0x5a7f, 0x0fc1,
-  0x5a80, 0x2e11,
-  0x5a92, 0x0ac2,
-  0x5a93, 0x2e23,
-  0x5a9a, 0x0ac9,
-  0x5a9b, 0x179c,
-  0x5a9c, 0x2e2a,
-  0x5aa7, 0x23fc,
-  0x5aa8, 0x2e35,
-  0x5aaa, 0x179b,
-  0x5aab, 0x2e37,
-  0x5ab2, 0x17a1,
-  0x5ab3, 0x0f1e,
-  0x5ab4, 0x2e3e,
-  0x5ab5, 0x19a4,
-  0x5ab6, 0x2e3f,
-  0x5ab8, 0x17a4,
-  0x5ab9, 0x2e41,
-  0x5abd, 0x2069,
-  0x5abe, 0x179f,
-  0x5abf, 0x2e45,
-  0x5ac1, 0x0851,
-  0x5ac2, 0x0ce2,
-  0x5ac3, 0x2e47,
-  0x5ac9, 0x0828,
-  0x5aca, 0x2e4d,
-  0x5acc, 0x0f40,
-  0x5acd, 0x2e4f,
-  0x5ad2, 0x17a2,
-  0x5ad3, 0x2e54,
-  0x5ad4, 0x17a3,
-  0x5ad5, 0x2e55,
-  0x5ad6, 0x17a8,
-  0x5ad7, 0x23f7,
-  0x5ad8, 0x17aa,
-  0x5ad9, 0x2e56,
-  0x5adc, 0x17ab,
-  0x5add, 0x2e59,
-  0x5ae0, 0x17a5,
-  0x5ae1, 0x05b6,
-  0x5ae2, 0x2e5c,
-  0x5ae3, 0x17a6,
-  0x5ae4, 0x2e5d,
-  0x5ae6, 0x17a9,
-  0x5ae7, 0x2e5f,
-  0x5ae9, 0x0b3e,
-  0x5aea, 0x2e61,
-  0x5aeb, 0x17a0,
-  0x5aec, 0x2e62,
-  0x5af1, 0x17a7,
-  0x5af2, 0x2e67,
-  0x5af5, 0x23f6,
-  0x5af6, 0x2e6a,
-  0x5afb, 0x23fd,
-  0x5afc, 0x2e6f,
-  0x5b00, 0x23f8,
-  0x5b01, 0x2e73,
-  0x5b08, 0x23fa,
-  0x5b09, 0x17ac,
-  0x5b0a, 0x2e7a,
-  0x5b0b, 0x23fe,
-  0x5b0c, 0x1fa8,
-  0x5b0d, 0x2e7b,
-  0x5b16, 0x17ae,
-  0x5b17, 0x17ad,
-  0x5b18, 0x2e84,
-  0x5b19, 0x2401,
-  0x5b1a, 0x2e85,
-  0x5b21, 0x23ff,
-  0x5b22, 0x2e8c,
-  0x5b2a, 0x2400,
-  0x5b2b, 0x2e94,
-  0x5b30, 0x2221,
-  0x5b31, 0x2e99,
-  0x5b32, 0x17af,
-  0x5b33, 0x2e9a,
-  0x5b34, 0x130c,
-  0x5b35, 0x2e9b,
-  0x5b37, 0x17b0,
-  0x5b38, 0x2122,
-  0x5b39, 0x2e9d,
-  0x5b40, 0x17b1,
-  0x5b41, 0x2ea4,
-  0x5b4c, 0x23fb,
-  0x5b4d, 0x2eaf,
-  0x5b50, 0x1230,
-  0x5b51, 0x17b7,
-  0x5b52, 0x2eb2,
-  0x5b53, 0x17b8,
-  0x5b54, 0x0964,
-  0x5b55, 0x1113,
-  0x5b56, 0x2eb3,
-  0x5b57, 0x1233,
-  0x5b58, 0x0569,
-  0x5b59, 0x0de4,
-  0x5b5a, 0x17b4,
-  0x5b5b, 0x1279,
-  0x5b5c, 0x122b,
-  0x5b5d, 0x0f6d,
-  0x5b5e, 0x2eb4,
-  0x5b5f, 0x0ad4,
-  0x5b60, 0x2eb5,
-  0x5b62, 0x17b9,
-  0x5b63, 0x0831,
-  0x5b64, 0x071b,
-  0x5b65, 0x17b5,
-  0x5b66, 0x0fd0,
-  0x5b67, 0x2eb7,
-  0x5b69, 0x0759,
-  0x5b6a, 0x0a76,
-  0x5b6b, 0x215a,
-  0x5b6c, 0x1261,
-  0x5b6d, 0x2eb9,
-  0x5b70, 0x0d82,
-  0x5b71, 0x176a,
-  0x5b72, 0x2ebc,
-  0x5b73, 0x17b6,
-  0x5b74, 0x2ebd,
-  0x5b75, 0x0692,
-  0x5b76, 0x2ebe,
-  0x5b78, 0x21e5,
-  0x5b79, 0x2ec0,
-  0x5b7a, 0x0cc1,
-  0x5b7b, 0x2ec1,
-  0x5b7d, 0x0b58,
-  0x5b7e, 0x2ec3,
-  0x5b7f, 0x2057,
-  0x5b80, 0x172e,
-  0x5b81, 0x0b61,
-  0x5b82, 0x2ec4,
-  0x5b83, 0x0df1,
-  0x5b84, 0x172f,
-  0x5b85, 0x114d,
-  0x5b86, 0x2ec5,
-  0x5b87, 0x10d3,
-  0x5b88, 0x0d6f,
-  0x5b89, 0x03bd,
-  0x5b8a, 0x2ec6,
-  0x5b8b, 0x0dc3,
-  0x5b8c, 0x0e9b,
-  0x5b8d, 0x2ec7,
-  0x5b8f, 0x07a1,
-  0x5b90, 0x2ec9,
-  0x5b93, 0x1731,
-  0x5b94, 0x2ecc,
-  0x5b95, 0x1730,
-  0x5b96, 0x2ecd,
-  0x5b97, 0x1237,
-  0x5b98, 0x0732,
-  0x5b99, 0x11e5,
-  0x5b9a, 0x05e7,
-  0x5b9b, 0x0ea1,
-  0x5b9c, 0x1052,
-  0x5b9d, 0x040f,
-  0x5b9e, 0x0d4c,
-  0x5b9f, 0x2ece,
-  0x5ba0, 0x050d,
-  0x5ba1, 0x0d2c,
-  0x5ba2, 0x095a,
-  0x5ba3, 0x0fc6,
-  0x5ba4, 0x0d69,
-  0x5ba5, 0x1732,
-  0x5ba6, 0x07d7,
-  0x5ba7, 0x2ecf,
-  0x5baa, 0x0f49,
-  0x5bab, 0x0705,
-  0x5bac, 0x2ed2,
-  0x5bb0, 0x111a,
-  0x5bb1, 0x2ed6,
-  0x5bb3, 0x075d,
-  0x5bb4, 0x1010,
-  0x5bb5, 0x0f69,
-  0x5bb6, 0x0845,
-  0x5bb7, 0x2ed8,
-  0x5bb8, 0x1733,
-  0x5bb9, 0x0cb8,
-  0x5bba, 0x2ed9,
-  0x5bbd, 0x097a,
-  0x5bbe, 0x045f,
-  0x5bbf, 0x0dd3,
-  0x5bc0, 0x2edc,
-  0x5bc2, 0x0838,
-  0x5bc3, 0x2ede,
-  0x5bc4, 0x0837,
-  0x5bc5, 0x1081,
-  0x5bc6, 0x0ae1,
-  0x5bc7, 0x0969,
-  0x5bc8, 0x2edf,
-  0x5bcc, 0x06b6,
-  0x5bcd, 0x2ee3,
-  0x5bd0, 0x0ac7,
-  0x5bd1, 0x2ee6,
-  0x5bd2, 0x0765,
-  0x5bd3, 0x10e5,
-  0x5bd4, 0x2ee7,
-  0x5bdd, 0x0c5b,
-  0x5bde, 0x0b12,
-  0x5bdf, 0x04b3,
-  0x5be0, 0x2ef0,
-  0x5be1, 0x072a,
-  0x5be2, 0x20e5,
-  0x5be3, 0x2ef1,
-  0x5be4, 0x1737,
-  0x5be5, 0x0a11,
-  0x5be6, 0x212f,
-  0x5be7, 0x20a3,
-  0x5be8, 0x1150,
-  0x5be9, 0x2121,
-  0x5bea, 0x2ef2,
-  0x5beb, 0x21d4,
-  0x5bec, 0x1fe5,
-  0x5bed, 0x2ef3,
-  0x5bee, 0x1738,
-  0x5bef, 0x2ef4,
-  0x5bf0, 0x173a,
-  0x5bf1, 0x2ef5,
-  0x5bf5, 0x1e8a,
-  0x5bf6, 0x1e37,
-  0x5bf7, 0x2ef9,
-  0x5bf8, 0x056a,
-  0x5bf9, 0x0613,
-  0x5bfa, 0x0db7,
-  0x5bfb, 0x0fd9,
-  0x5bfc, 0x059d,
-  0x5bfd, 0x2efa,
-  0x5bff, 0x0d70,
-  0x5c00, 0x2efc,
-  0x5c01, 0x067f,
-  0x5c02, 0x2efd,
-  0x5c04, 0x0d1d,
-  0x5c05, 0x2eff,
-  0x5c06, 0x087c,
-  0x5c07, 0x1f9e,
-  0x5c08, 0x22a6,
-  0x5c09, 0x0ecd,
-  0x5c0a, 0x124d,
-  0x5c0b, 0x21e8,
-  0x5c0c, 0x2f00,
-  0x5c0d, 0x1eda,
-  0x5c0e, 0x1eb9,
-  0x5c0f, 0x0f6c,
-  0x5c10, 0x2f01,
-  0x5c11, 0x0d12,
-  0x5c12, 0x2f02,
-  0x5c14, 0x063a,
-  0x5c15, 0x17b2,
-  0x5c16, 0x0855,
-  0x5c17, 0x2f04,
-  0x5c18, 0x04e3,
-  0x5c19, 0x2f05,
-  0x5c1a, 0x0d09,
-  0x5c1b, 0x2f06,
-  0x5c1c, 0x17b3,
-  0x5c1d, 0x04c7,
-  0x5c1e, 0x2f07,
-  0x5c22, 0x14b6,
-  0x5c23, 0x2f0b,
-  0x5c24, 0x10ad,
-  0x5c25, 0x14b7,
-  0x5c26, 0x2f0c,
-  0x5c27, 0x1029,
-  0x5c28, 0x2f0d,
-  0x5c2c, 0x14b8,
-  0x5c2d, 0x2f11,
-  0x5c31, 0x08fc,
-  0x5c32, 0x2f15,
-  0x5c34, 0x14b9,
-  0x5c35, 0x2f17,
-  0x5c37, 0x235c,
-  0x5c38, 0x0d43,
-  0x5c39, 0x1083,
-  0x5c3a, 0x0504,
-  0x5c3b, 0x1766,
-  0x5c3c, 0x0b44,
-  0x5c3d, 0x08d0,
-  0x5c3e, 0x0ec1,
-  0x5c3f, 0x0b55,
-  0x5c40, 0x0905,
-  0x5c41, 0x0bc7,
-  0x5c42, 0x04aa,
-  0x5c43, 0x2f19,
-  0x5c45, 0x0902,
-  0x5c46, 0x2f1b,
-  0x5c48, 0x0c79,
-  0x5c49, 0x0e3e,
-  0x5c4a, 0x08bd,
-  0x5c4b, 0x0eec,
-  0x5c4c, 0x2f1d,
-  0x5c4e, 0x0d51,
-  0x5c4f, 0x0be0,
-  0x5c50, 0x1768,
-  0x5c51, 0x0f87,
-  0x5c52, 0x2f1f,
-  0x5c55, 0x115a,
-  0x5c56, 0x2f22,
-  0x5c59, 0x1769,
-  0x5c5a, 0x2f25,
-  0x5c5e, 0x0d8b,
-  0x5c5f, 0x2f29,
-  0x5c60, 0x0e71,
-  0x5c61, 0x0a6c,
-  0x5c62, 0x2050,
-  0x5c63, 0x176b,
-  0x5c64, 0x1e67,
-  0x5c65, 0x0a6b,
-  0x5c66, 0x176c,
-  0x5c67, 0x2f2a,
-  0x5c68, 0x23f4,
-  0x5c69, 0x2f2b,
-  0x5c6c, 0x213e,
-  0x5c6d, 0x2f2e,
-  0x5c6e, 0x1774,
-  0x5c6f, 0x0e7e,
-  0x5c70, 0x2f2f,
-  0x5c71, 0x0cf6,
-  0x5c72, 0x2f30,
-  0x5c79, 0x1060,
-  0x5c7a, 0x15ac,
-  0x5c7b, 0x2f37,
-  0x5c7f, 0x10d1,
-  0x5c80, 0x2f3b,
-  0x5c81, 0x0ddf,
-  0x5c82, 0x0c10,
-  0x5c83, 0x2f3c,
-  0x5c88, 0x15b0,
-  0x5c89, 0x2f41,
-  0x5c8c, 0x15ab,
-  0x5c8d, 0x15ad,
-  0x5c8e, 0x2f44,
-  0x5c90, 0x15ae,
-  0x5c91, 0x15b3,
-  0x5c92, 0x2f46,
-  0x5c94, 0x04b4,
-  0x5c95, 0x2f48,
-  0x5c96, 0x15af,
-  0x5c97, 0x06d5,
-  0x5c98, 0x15b1,
-  0x5c9a, 0x15b4,
-  0x5c9b, 0x059b,
-  0x5c9c, 0x15b5,
-  0x5c9d, 0x2f49,
-  0x5ca1, 0x1f16,
-  0x5ca2, 0x15b7,
-  0x5ca3, 0x15bc,
-  0x5ca4, 0x2f4d,
-  0x5ca9, 0x0ffb,
-  0x5caa, 0x2f52,
-  0x5cab, 0x15ba,
-  0x5cac, 0x15b9,
-  0x5cad, 0x0a34,
-  0x5cae, 0x2f53,
-  0x5cb1, 0x15bb,
-  0x5cb2, 0x2f56,
-  0x5cb3, 0x1103,
-  0x5cb4, 0x2f57,
-  0x5cb5, 0x15b6,
-  0x5cb6, 0x2f58,
-  0x5cb7, 0x15be,
-  0x5cb8, 0x03c1,
-  0x5cb9, 0x2f59,
-  0x5cbd, 0x15b8,
-  0x5cbe, 0x2f5d,
-  0x5cbf, 0x0986,
-  0x5cc0, 0x2f5e,
-  0x5cc1, 0x15bd,
-  0x5cc2, 0x2f5f,
-  0x5cc4, 0x15bf,
-  0x5cc5, 0x2f61,
-  0x5ccb, 0x15c2,
-  0x5ccc, 0x2f67,
-  0x5cd2, 0x15c0,
-  0x5cd3, 0x2f6d,
-  0x5cd9, 0x11c4,
-  0x5cda, 0x2f73,
-  0x5ce1, 0x0f2c,
-  0x5ce2, 0x2f7a,
-  0x5ce4, 0x15c1,
-  0x5ce5, 0x15c3,
-  0x5ce6, 0x0a74,
-  0x5ce7, 0x2f7c,
-  0x5ce8, 0x062a,
-  0x5ce9, 0x2f7d,
-  0x5cea, 0x10dd,
-  0x5ceb, 0x2f7e,
-  0x5ced, 0x0c4a,
-  0x5cee, 0x2f80,
-  0x5cf0, 0x0682,
-  0x5cf1, 0x2f82,
-  0x5cf4, 0x2389,
-  0x5cf5, 0x2f85,
-  0x5cf6, 0x1eb7,
-  0x5cf7, 0x2f86,
-  0x5cfb, 0x092d,
-  0x5cfc, 0x2f8a,
-  0x5cfd, 0x21b4,
-  0x5cfe, 0x2f8b,
-  0x5d00, 0x2f8d,
-  0x5d02, 0x15c4,
-  0x5d04, 0x2f8f,
-  0x5d06, 0x15cb,
-  0x5d07, 0x050c,
-  0x5d08, 0x2f91,
-  0x5d0d, 0x238f,
-  0x5d0e, 0x0c08,
-  0x5d0f, 0x2f96,
-  0x5d14, 0x0561,
-  0x5d15, 0x2f9b,
-  0x5d16, 0x0feb,
-  0x5d17, 0x1f1a,
-  0x5d18, 0x2f9c,
-  0x5d1b, 0x15cc,
-  0x5d1c, 0x2f9f,
-  0x5d1e, 0x15ca,
-  0x5d1f, 0x2fa1,
-  0x5d24, 0x15c9,
-  0x5d25, 0x2fa6,
-  0x5d26, 0x15c7,
-  0x5d27, 0x15c6,
-  0x5d28, 0x2fa7,
-  0x5d29, 0x0429,
-  0x5d2a, 0x2fa8,
-  0x5d2c, 0x238b,
-  0x5d2d, 0x1159,
-  0x5d2e, 0x15c8,
-  0x5d2f, 0x2faa,
-  0x5d34, 0x15cf,
-  0x5d35, 0x2faf,
-  0x5d3d, 0x15d0,
-  0x5d3e, 0x15ce,
-  0x5d3f, 0x2fb7,
-  0x5d47, 0x1b22,
-  0x5d48, 0x2fbf,
-  0x5d4a, 0x15d7,
-  0x5d4b, 0x15d6,
-  0x5d4c, 0x0c33,
-  0x5d4d, 0x2fc1,
-  0x5d50, 0x238a,
-  0x5d51, 0x2fc4,
-  0x5d58, 0x15cd,
-  0x5d59, 0x2fcb,
-  0x5d5b, 0x15d2,
-  0x5d5c, 0x2fcd,
-  0x5d5d, 0x15d4,
-  0x5d5e, 0x2fce,
-  0x5d69, 0x15d8,
-  0x5d6a, 0x2fd9,
-  0x5d6b, 0x15d5,
-  0x5d6c, 0x15d1,
-  0x5d6d, 0x2fda,
-  0x5d6f, 0x15d3,
-  0x5d70, 0x2fdc,
-  0x5d74, 0x15d9,
-  0x5d75, 0x2fe0,
-  0x5d81, 0x2391,
-  0x5d82, 0x15da,
-  0x5d83, 0x2fec,
-  0x5d84, 0x2271,
-  0x5d85, 0x2fed,
-  0x5d87, 0x2388,
-  0x5d88, 0x2fef,
-  0x5d97, 0x238e,
-  0x5d98, 0x2ffe,
-  0x5d99, 0x15db,
-  0x5d9a, 0x2fff,
-  0x5d9d, 0x15dc,
-  0x5d9e, 0x3002,
-  0x5da0, 0x238d,
-  0x5da1, 0x3004,
-  0x5da7, 0x238c,
-  0x5da8, 0x300a,
-  0x5db7, 0x15de,
-  0x5db8, 0x2390,
-  0x5db9, 0x3019,
-  0x5dba, 0x2033,
-  0x5dbb, 0x301a,
-  0x5dbc, 0x223c,
-  0x5dbd, 0x301b,
-  0x5dc5, 0x15df,
-  0x5dc6, 0x3023,
-  0x5dcb, 0x1fe9,
-  0x5dcc, 0x3028,
-  0x5dcd, 0x0eb0,
-  0x5dce, 0x3029,
-  0x5dd2, 0x2055,
-  0x5dd3, 0x302d,
-  0x5dd4, 0x2392,
-  0x5dd5, 0x302e,
-  0x5ddb, 0x1815,
-  0x5ddc, 0x3034,
-  0x5ddd, 0x052b,
-  0x5dde, 0x11dc,
-  0x5ddf, 0x3035,
-  0x5de1, 0x0fdb,
-  0x5de2, 0x04d7,
-  0x5de3, 0x3037,
-  0x5de5, 0x06fd,
-  0x5de6, 0x1250,
-  0x5de7, 0x0c46,
-  0x5de8, 0x090d,
-  0x5de9, 0x0707,
-  0x5dea, 0x3039,
-  0x5deb, 0x0ee6,
-  0x5dec, 0x303a,
-  0x5dee, 0x04b5,
-  0x5def, 0x139f,
-  0x5df0, 0x2324,
-  0x5df1, 0x082d,
-  0x5df2, 0x1058,
-  0x5df3, 0x0dbd,
-  0x5df4, 0x03d8,
-  0x5df5, 0x303c,
-  0x5df7, 0x0f5c,
-  0x5df8, 0x303e,
-  0x5dfd, 0x12f7,
-  0x5dfe, 0x08be,
-  0x5dff, 0x3043,
-  0x5e00, 0x3044,
-  0x5e01, 0x043b,
-  0x5e02, 0x0d67,
-  0x5e03, 0x0483,
-  0x5e04, 0x3045,
-  0x5e05, 0x0d9c,
-  0x5e06, 0x0648,
-  0x5e07, 0x3046,
-  0x5e08, 0x0d3d,
-  0x5e09, 0x3047,
-  0x5e0c, 0x0f10,
-  0x5e0d, 0x304a,
-  0x5e0f, 0x159e,
-  0x5e10, 0x116b,
-  0x5e11, 0x15a1,
-  0x5e12, 0x304c,
-  0x5e14, 0x15a0,
-  0x5e15, 0x0b82,
-  0x5e16, 0x0e4e,
-  0x5e17, 0x304e,
-  0x5e18, 0x09fa,
-  0x5e19, 0x159f,
-  0x5e1a, 0x11e2,
-  0x5e1b, 0x0476,
-  0x5e1c, 0x11c3,
-  0x5e1d, 0x05bc,
-  0x5e1e, 0x304f,
-  0x5e25, 0x2143,
-  0x5e26, 0x057b,
-  0x5e27, 0x11a0,
-  0x5e28, 0x3056,
-  0x5e2b, 0x2129,
-  0x5e2c, 0x3059,
-  0x5e2d, 0x0f1c,
-  0x5e2e, 0x03fa,
-  0x5e2f, 0x305a,
-  0x5e31, 0x15a2,
-  0x5e32, 0x305c,
-  0x5e33, 0x2277,
-  0x5e34, 0x305d,
-  0x5e36, 0x1ea7,
-  0x5e37, 0x15a5,
-  0x5e38, 0x04c8,
-  0x5e39, 0x305f,
-  0x5e3b, 0x15a3,
-  0x5e3d, 0x0ab6,
-  0x5e3e, 0x3061,
-  0x5e40, 0x2285,
-  0x5e41, 0x3063,
-  0x5e42, 0x0ae2,
-  0x5e43, 0x2384,
-  0x5e44, 0x15a6,
-  0x5e45, 0x0696,
-  0x5e46, 0x3064,
-  0x5e4c, 0x07e4,
-  0x5e4d, 0x306a,
-  0x5e54, 0x15a7,
-  0x5e55, 0x0b1e,
-  0x5e56, 0x3071,
-  0x5e57, 0x2387,
-  0x5e58, 0x2386,
-  0x5e59, 0x3072,
-  0x5e5b, 0x15a8,
-  0x5e5c, 0x3074,
-  0x5e5e, 0x15a9,
-  0x5e5f, 0x2290,
-  0x5e60, 0x3076,
-  0x5e61, 0x15aa,
-  0x5e62, 0x0534,
-  0x5e63, 0x1e44,
-  0x5e64, 0x3077,
-  0x5e6b, 0x1e32,
-  0x5e6c, 0x2385,
-  0x5e6d, 0x307e,
-  0x5e72, 0x06c4,
-  0x5e73, 0x0bdc,
-  0x5e74, 0x0b4d,
-  0x5e75, 0x3083,
-  0x5e76, 0x0469,
-  0x5e77, 0x3084,
-  0x5e78, 0x0f9d,
-  0x5e79, 0x1f13,
-  0x5e7a, 0x1813,
-  0x5e7b, 0x07d8,
-  0x5e7c, 0x10bc,
-  0x5e7d, 0x10a9,
-  0x5e7e, 0x1f73,
-  0x5e7f, 0x073c,
-  0x5e80, 0x1631,
-  0x5e81, 0x3085,
-  0x5e84, 0x120c,
-  0x5e85, 0x3088,
-  0x5e86, 0x0c69,
-  0x5e87, 0x043c,
-  0x5e88, 0x3089,
-  0x5e8a, 0x0535,
-  0x5e8b, 0x1633,
-  0x5e8c, 0x308b,
-  0x5e8f, 0x0fbd,
-  0x5e90, 0x0a55,
-  0x5e91, 0x1632,
-  0x5e92, 0x308e,
-  0x5e93, 0x096f,
-  0x5e94, 0x108b,
-  0x5e95, 0x05b8,
-  0x5e96, 0x1634,
-  0x5e97, 0x05cb,
-  0x5e98, 0x308f,
-  0x5e99, 0x0af2,
-  0x5e9a, 0x06f8,
-  0x5e9b, 0x3090,
-  0x5e9c, 0x06a9,
-  0x5e9d, 0x3091,
-  0x5e9e, 0x0b94,
-  0x5e9f, 0x066c,
-  0x5ea0, 0x1636,
-  0x5ea1, 0x3092,
-  0x5ea5, 0x1635,
-  0x5ea6, 0x0607,
-  0x5ea7, 0x1256,
-  0x5ea8, 0x3096,
-  0x5eab, 0x1fe0,
-  0x5eac, 0x3099,
-  0x5ead, 0x0e56,
-  0x5eae, 0x309a,
-  0x5eb3, 0x163a,
-  0x5eb4, 0x309f,
-  0x5eb5, 0x1638,
-  0x5eb6, 0x0d93,
-  0x5eb7, 0x0942,
-  0x5eb8, 0x109e,
-  0x5eb9, 0x1637,
-  0x5eba, 0x30a0,
-  0x5ebe, 0x1639,
-  0x5ebf, 0x30a4,
-  0x5ec9, 0x09f7,
-  0x5eca, 0x09b3,
-  0x5ecb, 0x30ae,
-  0x5ed1, 0x163d,
-  0x5ed2, 0x163c,
-  0x5ed3, 0x0995,
-  0x5ed4, 0x30b4,
-  0x5ed6, 0x0a17,
-  0x5ed7, 0x30b6,
-  0x5edb, 0x163e,
-  0x5edc, 0x30ba,
-  0x5edf, 0x2087,
-  0x5ee0, 0x1e78,
-  0x5ee1, 0x23ae,
-  0x5ee2, 0x1ef6,
-  0x5ee3, 0x1f31,
-  0x5ee4, 0x30bd,
-  0x5ee8, 0x163f,
-  0x5ee9, 0x30c1,
-  0x5eea, 0x1640,
-  0x5eeb, 0x30c2,
-  0x5eec, 0x2045,
-  0x5eed, 0x30c3,
-  0x5ef3, 0x2178,
-  0x5ef4, 0x1398,
-  0x5ef5, 0x30c9,
-  0x5ef6, 0x0ffc,
-  0x5ef7, 0x0e53,
-  0x5ef8, 0x30ca,
-  0x5efa, 0x0879,
-  0x5efb, 0x30cc,
-  0x5efe, 0x14ad,
-  0x5eff, 0x125b,
-  0x5f00, 0x0937,
-  0x5f01, 0x139d,
-  0x5f02, 0x1073,
-  0x5f03, 0x0c19,
-  0x5f04, 0x0b6b,
-  0x5f05, 0x30cf,
-  0x5f08, 0x14ae,
-  0x5f09, 0x30d2,
-  0x5f0a, 0x0440,
-  0x5f0b, 0x14f6,
-  0x5f0c, 0x30d3,
-  0x5f0f, 0x0d54,
-  0x5f10, 0x30d6,
-  0x5f11, 0x14f9,
-  0x5f12, 0x30d7,
-  0x5f13, 0x0706,
-  0x5f14, 0x30d8,
-  0x5f15, 0x1084,
-  0x5f16, 0x30d9,
-  0x5f17, 0x06a0,
-  0x5f18, 0x07a2,
-  0x5f19, 0x30da,
-  0x5f1b, 0x04ff,
-  0x5f1c, 0x30dc,
-  0x5f1f, 0x05bd,
-  0x5f20, 0x1166,
-  0x5f21, 0x30df,
-  0x5f25, 0x0adb,
-  0x5f26, 0x0f3f,
-  0x5f27, 0x07b6,
-  0x5f28, 0x30e3,
-  0x5f29, 0x176f,
-  0x5f2a, 0x176e,
-  0x5f2b, 0x30e4,
-  0x5f2d, 0x1770,
-  0x5f2e, 0x30e6,
-  0x5f2f, 0x0e95,
-  0x5f30, 0x30e7,
-  0x5f31, 0x0cd0,
-  0x5f32, 0x30e8,
-  0x5f33, 0x23f5,
-  0x5f34, 0x30e9,
-  0x5f35, 0x2275,
-  0x5f36, 0x30ea,
-  0x5f39, 0x0590,
-  0x5f3a, 0x0c3c,
-  0x5f3b, 0x30ed,
-  0x5f3c, 0x1772,
-  0x5f3d, 0x30ee,
-  0x5f40, 0x19be,
-  0x5f41, 0x30f1,
-  0x5f46, 0x266e,
-  0x5f47, 0x30f6,
-  0x5f48, 0x1eb0,
-  0x5f49, 0x30f7,
-  0x5f4c, 0x2083,
-  0x5f4d, 0x30fa,
-  0x5f4e, 0x2188,
-  0x5f4f, 0x30fb,
-  0x5f50, 0x1762,
-  0x5f51, 0x30fc,
-  0x5f52, 0x0742,
-  0x5f53, 0x0592,
-  0x5f54, 0x30fd,
-  0x5f55, 0x0a63,
-  0x5f56, 0x1764,
-  0x5f57, 0x1763,
-  0x5f58, 0x1765,
-  0x5f59, 0x267c,
-  0x5f5a, 0x30fe,
-  0x5f5d, 0x1054,
-  0x5f5e, 0x3101,
-  0x5f61, 0x15ee,
-  0x5f62, 0x0f99,
-  0x5f63, 0x3104,
-  0x5f64, 0x0e5f,
-  0x5f65, 0x3105,
-  0x5f66, 0x100e,
-  0x5f67, 0x3106,
-  0x5f69, 0x0491,
-  0x5f6a, 0x0454,
-  0x5f6b, 0x3108,
-  0x5f6c, 0x045b,
-  0x5f6d, 0x0bae,
-  0x5f6e, 0x3109,
-  0x5f70, 0x1164,
-  0x5f71, 0x1095,
-  0x5f72, 0x310b,
-  0x5f73, 0x15e0,
-  0x5f74, 0x310c,
-  0x5f77, 0x15e1,
-  0x5f78, 0x310f,
-  0x5f79, 0x1062,
-  0x5f7a, 0x3110,
-  0x5f7b, 0x04de,
-  0x5f7c, 0x0434,
-  0x5f7d, 0x3111,
-  0x5f80, 0x0eaa,
-  0x5f81, 0x1198,
-  0x5f82, 0x15e2,
-  0x5f83, 0x3114,
-  0x5f84, 0x08e5,
-  0x5f85, 0x0580,
-  0x5f86, 0x3115,
-  0x5f87, 0x15e3,
-  0x5f88, 0x0793,
-  0x5f89, 0x15e4,
-  0x5f8a, 0x07c7,
-  0x5f8b, 0x0a70,
-  0x5f8c, 0x15e5,
-  0x5f8d, 0x3116,
-  0x5f90, 0x0fb7,
-  0x5f91, 0x1fc5,
-  0x5f92, 0x0e6e,
-  0x5f93, 0x3119,
-  0x5f95, 0x15e6,
-  0x5f96, 0x311b,
-  0x5f97, 0x05a4,
-  0x5f98, 0x0b88,
-  0x5f99, 0x15e7,
-  0x5f9a, 0x311c,
-  0x5f9c, 0x15e8,
-  0x5f9d, 0x311e,
-  0x5f9e, 0x1ea1,
-  0x5f9f, 0x311f,
-  0x5fa0, 0x2393,
-  0x5fa1, 0x10de,
-  0x5fa2, 0x3120,
-  0x5fa8, 0x15e9,
-  0x5fa9, 0x1f0b,
-  0x5faa, 0x0fd6,
-  0x5fab, 0x3126,
-  0x5fad, 0x15ea,
-  0x5fae, 0x0eb1,
-  0x5faf, 0x3128,
-  0x5fb5, 0x15eb,
-  0x5fb6, 0x312e,
-  0x5fb7, 0x05a3,
-  0x5fb8, 0x312f,
-  0x5fb9, 0x1e7c,
-  0x5fba, 0x3130,
-  0x5fbc, 0x15ec,
-  0x5fbd, 0x07ea,
-  0x5fbe, 0x3132,
-  0x5fc3, 0x0f8f,
-  0x5fc4, 0x1642,
-  0x5fc5, 0x0441,
-  0x5fc6, 0x106b,
-  0x5fc7, 0x3137,
-  0x5fc9, 0x1643,
-  0x5fca, 0x3139,
-  0x5fcc, 0x083c,
-  0x5fcd, 0x0ca7,
-  0x5fce, 0x313b,
-  0x5fcf, 0x1645,
-  0x5fd0, 0x1a0c,
-  0x5fd1, 0x1a0b,
-  0x5fd2, 0x14f7,
-  0x5fd3, 0x313c,
-  0x5fd6, 0x1644,
-  0x5fd7, 0x11bd,
-  0x5fd8, 0x0ead,
-  0x5fd9, 0x0aab,
-  0x5fda, 0x313f,
-  0x5fdd, 0x1683,
-  0x5fde, 0x3142,
-  0x5fe0, 0x11d1,
-  0x5fe1, 0x1649,
-  0x5fe2, 0x3144,
-  0x5fe4, 0x164a,
-  0x5fe5, 0x3146,
-  0x5fe7, 0x10ac,
-  0x5fe8, 0x3148,
-  0x5fea, 0x164e,
-  0x5feb, 0x0979,
-  0x5fec, 0x314a,
-  0x5fed, 0x164f,
-  0x5fee, 0x1647,
-  0x5fef, 0x314b,
-  0x5ff1, 0x04e5,
-  0x5ff2, 0x314d,
-  0x5ff5, 0x0b51,
-  0x5ff6, 0x3150,
-  0x5ff8, 0x1650,
-  0x5ff9, 0x3152,
-  0x5ffb, 0x0f8e,
-  0x5ffc, 0x3154,
-  0x5ffd, 0x07ad,
-  0x5ffe, 0x164b,
-  0x5fff, 0x067b,
-  0x6000, 0x07c8,
-  0x6001, 0x0dff,
-  0x6002, 0x0dc0,
-  0x6003, 0x1646,
-  0x6004, 0x1648,
-  0x6005, 0x164c,
-  0x6007, 0x3155,
-  0x600a, 0x1659,
-  0x600b, 0x3158,
-  0x600d, 0x1656,
-  0x600e, 0x1138,
-  0x600f, 0x1655,
-  0x6010, 0x315a,
-  0x6012, 0x0b6e,
-  0x6013, 0x315c,
-  0x6014, 0x119b,
-  0x6015, 0x0b83,
-  0x6016, 0x0487,
-  0x6017, 0x315d,
-  0x6019, 0x1651,
-  0x601a, 0x315f,
-  0x601b, 0x1654,
-  0x601c, 0x09f8,
-  0x601d, 0x0db1,
-  0x601e, 0x3160,
-  0x6020, 0x0582,
-  0x6021, 0x165b,
-  0x6022, 0x3162,
-  0x6025, 0x0824,
-  0x6026, 0x1653,
-  0x6027, 0x0f9f,
-  0x6028, 0x10fc,
-  0x6029, 0x1657,
-  0x602a, 0x072f,
-  0x602b, 0x1658,
-  0x602c, 0x3165,
-  0x602f, 0x0c50,
-  0x6030, 0x3168,
-  0x6035, 0x1652,
-  0x6036, 0x316d,
-  0x603b, 0x1239,
-  0x603c, 0x1a0d,
-  0x603d, 0x3172,
-  0x603f, 0x165a,
-  0x6040, 0x3174,
-  0x6041, 0x1a11,
-  0x6042, 0x1660,
-  0x6043, 0x0d68,
-  0x6044, 0x3175,
-  0x604b, 0x09fe,
-  0x604c, 0x317c,
-  0x604d, 0x07e5,
-  0x604e, 0x317d,
-  0x6050, 0x0963,
-  0x6051, 0x317f,
-  0x6052, 0x079a,
-  0x6053, 0x3180,
-  0x6055, 0x0d96,
-  0x6056, 0x3182,
-  0x6059, 0x1a12,
-  0x605a, 0x1a0f,
-  0x605b, 0x3185,
-  0x605d, 0x1a0e,
-  0x605e, 0x3187,
-  0x6062, 0x07eb,
-  0x6063, 0x1a13,
-  0x6064, 0x0fbf,
-  0x6065, 0x318b,
-  0x6067, 0x1a10,
-  0x6068, 0x0795,
-  0x6069, 0x0636,
-  0x606a, 0x1661,
-  0x606b, 0x05f1,
-  0x606c, 0x0e44,
-  0x606d, 0x0700,
-  0x606e, 0x318d,
-  0x606f, 0x0f0f,
-  0x6070, 0x0c1e,
-  0x6071, 0x318e,
-  0x6073, 0x095f,
-  0x6074, 0x3190,
-  0x6076, 0x0630,
-  0x6077, 0x3192,
-  0x6078, 0x165c,
-  0x607a, 0x165f,
-  0x607b, 0x165e,
-  0x607c, 0x0b38,
-  0x607d, 0x1662,
-  0x607e, 0x3193,
-  0x607f, 0x10a6,
-  0x6080, 0x3194,
-  0x6083, 0x1667,
-  0x6084, 0x0c41,
-  0x6085, 0x3197,
-  0x6089, 0x0f11,
-  0x608a, 0x319b,
-  0x608c, 0x1669,
-  0x608d, 0x076e,
-  0x608e, 0x319d,
-  0x6092, 0x1668,
-  0x6093, 0x31a1,
-  0x6094, 0x07ef,
-  0x6095, 0x31a2,
-  0x6096, 0x1663,
-  0x6097, 0x31a3,
-  0x609a, 0x1664,
-  0x609b, 0x166a,
-  0x609c, 0x31a6,
-  0x609d, 0x1666,
-  0x609e, 0x31a7,
-  0x609f, 0x0f01,
-  0x60a0, 0x10ab,
-  0x60a1, 0x31a8,
-  0x60a3, 0x07d1,
-  0x60a4, 0x31aa,
-  0x60a6, 0x1106,
-  0x60a7, 0x31ac,
-  0x60a8, 0x0b5d,
-  0x60a9, 0x31ad,
-  0x60ab, 0x1a14,
-  0x60ac, 0x0fc7,
-  0x60ad, 0x1665,
-  0x60ae, 0x31af,
-  0x60af, 0x0afa,
-  0x60b0, 0x31b0,
-  0x60b1, 0x166d,
-  0x60b2, 0x0418,
-  0x60b3, 0x31b1,
-  0x60b4, 0x1672,
-  0x60b5, 0x23b4,
-  0x60b6, 0x207e,
-  0x60b7, 0x31b2,
-  0x60b8, 0x0835,
-  0x60b9, 0x31b3,
-  0x60bb, 0x166c,
-  0x60bc, 0x05a0,
-  0x60bd, 0x31b5,
-  0x60c5, 0x0c66,
-  0x60c6, 0x1670,
-  0x60c7, 0x31bd,
-  0x60ca, 0x08d9,
-  0x60cb, 0x0ea0,
-  0x60cc, 0x31c0,
-  0x60d1, 0x0808,
-  0x60d2, 0x31c5,
-  0x60d5, 0x0e3b,
-  0x60d6, 0x31c8,
-  0x60d8, 0x166f,
-  0x60d9, 0x31ca,
-  0x60da, 0x1671,
-  0x60db, 0x31cb,
-  0x60dc, 0x0f14,
-  0x60dd, 0x166e,
-  0x60de, 0x31cc,
-  0x60df, 0x0eb8,
-  0x60e0, 0x07f2,
-  0x60e1, 0x1ee3,
-  0x60e2, 0x31cd,
-  0x60e6, 0x05cc,
-  0x60e7, 0x0914,
-  0x60e8, 0x0499,
-  0x60e9, 0x04f2,
-  0x60ea, 0x31d1,
-  0x60eb, 0x0422,
-  0x60ec, 0x166b,
-  0x60ed, 0x0498,
-  0x60ee, 0x058d,
-  0x60ef, 0x0738,
-  0x60f0, 0x0627,
-  0x60f1, 0x2095,
-  0x60f2, 0x23bb,
-  0x60f3, 0x0f58,
-  0x60f4, 0x1677,
-  0x60f5, 0x31d2,
-  0x60f6, 0x07e1,
-  0x60f7, 0x31d3,
-  0x60f9, 0x0ca2,
-  0x60fa, 0x0f95,
-  0x60fb, 0x23b9,
-  0x60fc, 0x31d5,
-  0x6100, 0x1678,
-  0x6101, 0x0513,
-  0x6102, 0x31d9,
-  0x6106, 0x1a15,
-  0x6107, 0x31dd,
-  0x6108, 0x10df,
-  0x6109, 0x10c9,
-  0x610a, 0x31de,
-  0x610d, 0x1a16,
-  0x610e, 0x1679,
-  0x610f, 0x1069,
-  0x6110, 0x31e1,
-  0x6115, 0x1675,
-  0x6116, 0x31e6,
-  0x611a, 0x10c3,
-  0x611b, 0x1e28,
-  0x611c, 0x23bd,
-  0x611d, 0x31ea,
-  0x611f, 0x06cb,
-  0x6120, 0x1673,
-  0x6121, 0x31ec,
-  0x6123, 0x1676,
-  0x6124, 0x067c,
-  0x6125, 0x31ee,
-  0x6126, 0x1674,
-  0x6127, 0x098d,
-  0x6128, 0x31ef,
-  0x612b, 0x167a,
-  0x612c, 0x31f2,
-  0x6134, 0x23b5,
-  0x6135, 0x31fa,
-  0x6137, 0x23ba,
-  0x6138, 0x31fc,
-  0x613e, 0x23b3,
-  0x613f, 0x10fb,
-  0x6140, 0x3202,
-  0x6148, 0x054b,
-  0x6149, 0x320a,
-  0x614a, 0x167b,
-  0x614b, 0x2162,
-  0x614c, 0x07da,
-  0x614d, 0x320b,
-  0x614e, 0x0d30,
-  0x614f, 0x320c,
-  0x6151, 0x0d1e,
-  0x6152, 0x320e,
-  0x6155, 0x0b20,
-  0x6156, 0x3211,
-  0x6158, 0x1e5e,
-  0x6159, 0x3213,
-  0x615a, 0x1e5d,
-  0x615b, 0x3214,
-  0x615d, 0x1a17,
-  0x615e, 0x3216,
-  0x615f, 0x23b7,
-  0x6160, 0x3217,
-  0x6162, 0x0aa4,
-  0x6163, 0x1f2f,
-  0x6164, 0x24df,
-  0x6165, 0x3219,
-  0x6167, 0x07f0,
-  0x6168, 0x093b,
-  0x6169, 0x321b,
-  0x616a, 0x23b2,
-  0x616b, 0x214e,
-  0x616c, 0x321c,
-  0x616e, 0x2052,
-  0x616f, 0x321e,
-  0x6170, 0x0ece,
-  0x6171, 0x321f,
-  0x6173, 0x23bc,
-  0x6174, 0x3221,
-  0x6175, 0x167c,
-  0x6176, 0x20eb,
-  0x6177, 0x0943,
-  0x6178, 0x3222,
-  0x6182, 0x2232,
-  0x6183, 0x322c,
-  0x618a, 0x1e3f,
-  0x618b, 0x0458,
-  0x618c, 0x3233,
-  0x618e, 0x113a,
-  0x618f, 0x3235,
-  0x6190, 0x201b,
-  0x6191, 0x20bc,
-  0x6192, 0x23be,
-  0x6193, 0x3236,
-  0x6194, 0x167e,
-  0x6195, 0x3237,
-  0x619a, 0x1eae,
-  0x619b, 0x323c,
-  0x619d, 0x1a19,
-  0x619e, 0x323e,
-  0x61a4, 0x1efb,
-  0x61a5, 0x3244,
-  0x61a7, 0x167f,
-  0x61a8, 0x0760,
-  0x61a9, 0x1a18,
-  0x61aa, 0x3246,
-  0x61ab, 0x2089,
-  0x61ac, 0x167d,
-  0x61ad, 0x3247,
-  0x61ae, 0x23b1,
-  0x61af, 0x3248,
-  0x61b2, 0x21c4,
-  0x61b3, 0x324b,
-  0x61b6, 0x2214,
-  0x61b7, 0x1680,
-  0x61b8, 0x324e,
-  0x61be, 0x076d,
-  0x61bf, 0x3254,
-  0x61c2, 0x05ed,
-  0x61c3, 0x3257,
-  0x61c7, 0x1fde,
-  0x61c8, 0x0f83,
-  0x61c9, 0x2223,
-  0x61ca, 0x03ce,
-  0x61cb, 0x1a1a,
-  0x61cc, 0x23b6,
-  0x61cd, 0x325b,
-  0x61d1, 0x1a1b,
-  0x61d2, 0x09ac,
-  0x61d3, 0x325f,
-  0x61d4, 0x1681,
-  0x61d5, 0x3260,
-  0x61de, 0x268c,
-  0x61df, 0x24de,
-  0x61e0, 0x3269,
-  0x61e3, 0x24e0,
-  0x61e4, 0x326c,
-  0x61e6, 0x0b74,
-  0x61e7, 0x326e,
-  0x61e8, 0x23b8,
-  0x61e9, 0x326f,
-  0x61f2, 0x1e81,
-  0x61f3, 0x3278,
-  0x61f5, 0x1682,
-  0x61f6, 0x1ffe,
-  0x61f7, 0x1f51,
-  0x61f8, 0x21e1,
-  0x61f9, 0x327a,
-  0x61fa, 0x23b0,
-  0x61fb, 0x327b,
-  0x61fc, 0x1fce,
-  0x61fd, 0x327c,
-  0x61fe, 0x211e,
-  0x61ff, 0x13e0,
-  0x6200, 0x2021,
-  0x6201, 0x327d,
-  0x6206, 0x1a1c,
-  0x6207, 0x24e1,
-  0x6208, 0x06e5,
-  0x6209, 0x3282,
-  0x620a, 0x0efb,
-  0x620b, 0x18f9,
-  0x620c, 0x0fb2,
-  0x620d, 0x0d90,
-  0x620e, 0x0cb1,
-  0x620f, 0x0f24,
-  0x6210, 0x04ee,
-  0x6211, 0x0ee1,
-  0x6212, 0x08b5,
-  0x6213, 0x3283,
-  0x6214, 0x24a3,
-  0x6215, 0x169e,
-  0x6216, 0x0807,
-  0x6217, 0x18fa,
-  0x6218, 0x115e,
-  0x6219, 0x3284,
-  0x621a, 0x0bfc,
-  0x621b, 0x18fb,
-  0x621c, 0x3285,
-  0x621f, 0x18fc,
-  0x6220, 0x3288,
-  0x6221, 0x18fe,
-  0x6222, 0x18fd,
-  0x6223, 0x3289,
-  0x6224, 0x1900,
-  0x6225, 0x18ff,
-  0x6226, 0x328a,
-  0x6227, 0x24a4,
-  0x6228, 0x328b,
-  0x622a, 0x08a9,
-  0x622b, 0x328d,
-  0x622c, 0x1901,
-  0x622d, 0x328e,
-  0x622e, 0x0a65,
-  0x622f, 0x328f,
-  0x6230, 0x2273,
-  0x6231, 0x3290,
-  0x6232, 0x21b0,
-  0x6233, 0x0544,
-  0x6234, 0x057a,
-  0x6235, 0x3291,
-  0x6237, 0x07bc,
-  0x6238, 0x3293,
-  0x623d, 0x19f4,
-  0x623e, 0x19f3,
-  0x623f, 0x065c,
-  0x6240, 0x0dee,
-  0x6241, 0x044b,
-  0x6242, 0x3298,
-  0x6243, 0x19f5,
-  0x6244, 0x3299,
-  0x6247, 0x0d01,
-  0x6248, 0x19f6,
-  0x624a, 0x329c,
-  0x624b, 0x0d6d,
-  0x624c, 0x14ba,
-  0x624d, 0x048c,
-  0x624e, 0x113d,
-  0x624f, 0x329d,
-  0x6251, 0x0bea,
-  0x6252, 0x03d2,
-  0x6253, 0x0575,
-  0x6254, 0x0cae,
-  0x6255, 0x329f,
-  0x6258, 0x0e81,
-  0x6259, 0x32a2,
-  0x625b, 0x0945,
-  0x625c, 0x32a4,
-  0x6263, 0x0968,
-  0x6264, 0x32ab,
-  0x6266, 0x0c21,
-  0x6267, 0x11b3,
-  0x6268, 0x32ad,
-  0x6269, 0x0994,
-  0x626a, 0x14bb,
-  0x626b, 0x0ce1,
-  0x626c, 0x1018,
-  0x626d, 0x0b65,
-  0x626e, 0x03f2,
-  0x626f, 0x04db,
-  0x6270, 0x0ca0,
-  0x6271, 0x32ae,
-  0x6273, 0x03ed,
-  0x6274, 0x32b0,
-  0x6276, 0x0693,
-  0x6277, 0x32b2,
-  0x6279, 0x0bbb,
-  0x627a, 0x32b4,
-  0x627c, 0x0632,
-  0x627d, 0x32b6,
-  0x627e, 0x1173,
-  0x627f, 0x04f5,
-  0x6280, 0x082f,
-  0x6281, 0x32b7,
-  0x6284, 0x04d2,
-  0x6285, 0x32ba,
-  0x6289, 0x0920,
-  0x628a, 0x03dc,
-  0x628b, 0x32be,
-  0x6291, 0x105d,
-  0x6292, 0x0d7a,
-  0x6293, 0x1202,
-  0x6294, 0x32c4,
-  0x6295, 0x0e67,
-  0x6296, 0x05f5,
-  0x6297, 0x0946,
-  0x6298, 0x117c,
-  0x6299, 0x32c5,
-  0x629a, 0x06a2,
-  0x629b, 0x0b98,
-  0x629c, 0x32c6,
-  0x629f, 0x14bc,
-  0x62a0, 0x0966,
-  0x62a1, 0x0a7c,
-  0x62a2, 0x0c3d,
-  0x62a3, 0x32c9,
-  0x62a4, 0x07b9,
-  0x62a5, 0x0411,
-  0x62a6, 0x32ca,
-  0x62a8, 0x0bab,
-  0x62a9, 0x32cc,
-  0x62ab, 0x0bbc,
-  0x62ac, 0x0dfa,
-  0x62ad, 0x32ce,
-  0x62b1, 0x0410,
-  0x62b2, 0x32d2,
-  0x62b5, 0x05b7,
-  0x62b6, 0x32d5,
-  0x62b9, 0x0b0b,
-  0x62ba, 0x32d8,
-  0x62bb, 0x14bd,
-  0x62bc, 0x0fe3,
-  0x62bd, 0x050e,
-  0x62be, 0x32d9,
-  0x62bf, 0x0af7,
-  0x62c0, 0x32da,
-  0x62c2, 0x0694,
-  0x62c3, 0x32dc,
-  0x62c4, 0x11f3,
-  0x62c5, 0x0584,
-  0x62c6, 0x04b7,
-  0x62c7, 0x0b17,
-  0x62c8, 0x0b4c,
-  0x62c9, 0x0998,
-  0x62ca, 0x14be,
-  0x62cb, 0x32dd,
-  0x62cc, 0x03f3,
-  0x62cd, 0x0b85,
-  0x62ce, 0x0a29,
-  0x62cf, 0x32de,
-  0x62d0, 0x072e,
-  0x62d1, 0x32df,
-  0x62d2, 0x090b,
-  0x62d3, 0x0e89,
-  0x62d4, 0x03d9,
-  0x62d5, 0x32e0,
-  0x62d6, 0x0e80,
-  0x62d7, 0x14c0,
-  0x62d8, 0x08ff,
-  0x62d9, 0x121b,
-  0x62da, 0x14bf,
-  0x62db, 0x1171,
-  0x62dc, 0x03e8,
-  0x62dd, 0x32e1,
-  0x62df, 0x0b45,
-  0x62e0, 0x32e3,
-  0x62e2, 0x0a4a,
-  0x62e3, 0x0863,
-  0x62e4, 0x32e5,
-  0x62e5, 0x109a,
-  0x62e6, 0x09a4,
-  0x62e7, 0x0b62,
-  0x62e8, 0x046d,
-  0x62e9, 0x1134,
-  0x62ea, 0x32e6,
-  0x62ec, 0x0993,
-  0x62ed, 0x0d5a,
-  0x62ee, 0x14c1,
-  0x62ef, 0x119d,
-  0x62f0, 0x32e8,
-  0x62f1, 0x0709,
-  0x62f2, 0x32e9,
-  0x62f3, 0x0c88,
-  0x62f4, 0x0d9e,
-  0x62f5, 0x32ea,
-  0x62f6, 0x14c3,
-  0x62f7, 0x094a,
-  0x62f8, 0x32eb,
-  0x62fc, 0x0bd3,
-  0x62fd, 0x1204,
-  0x62fe, 0x0d47,
-  0x62ff, 0x0b26,
-  0x6300, 0x32ef,
-  0x6301, 0x04fb,
-  0x6302, 0x072b,
-  0x6303, 0x32f0,
-  0x6307, 0x11b7,
-  0x6308, 0x194e,
-  0x6309, 0x03bf,
-  0x630a, 0x32f4,
-  0x630e, 0x0973,
-  0x630f, 0x32f8,
-  0x6311, 0x0e47,
-  0x6312, 0x32fa,
-  0x6316, 0x0e8b,
-  0x6317, 0x32fe,
-  0x631a, 0x11be,
-  0x631b, 0x0a75,
-  0x631c, 0x3301,
-  0x631d, 0x0edd,
-  0x631e, 0x0df5,
-  0x631f, 0x0f79,
-  0x6320, 0x0b36,
-  0x6321, 0x0593,
-  0x6322, 0x14c2,
-  0x6323, 0x1196,
-  0x6324, 0x082a,
-  0x6325, 0x07e8,
-  0x6326, 0x3302,
-  0x6328, 0x03af,
-  0x6329, 0x3304,
-  0x632a, 0x0b73,
-  0x632b, 0x056f,
-  0x632c, 0x3305,
-  0x632f, 0x1192,
-  0x6330, 0x3308,
-  0x6332, 0x194f,
-  0x6333, 0x330a,
-  0x6339, 0x14c4,
-  0x633a, 0x0e57,
-  0x633b, 0x3310,
-  0x633d, 0x0e9d,
-  0x633e, 0x21d1,
-  0x633f, 0x3312,
-  0x6342, 0x0ef5,
-  0x6343, 0x14c6,
-  0x6344, 0x3315,
-  0x6345, 0x0e62,
-  0x6346, 0x0991,
-  0x6347, 0x3316,
-  0x6349, 0x121a,
-  0x634a, 0x3318,
-  0x634b, 0x14c5,
-  0x634c, 0x03d1,
-  0x634d, 0x076b,
-  0x634e, 0x0d0c,
-  0x634f, 0x0b56,
-  0x6350, 0x0917,
-  0x6351, 0x3319,
-  0x6355, 0x047d,
-  0x6356, 0x331d,
-  0x635e, 0x09b7,
-  0x635f, 0x0de5,
-  0x6360, 0x3325,
-  0x6361, 0x0864,
-  0x6362, 0x07d0,
-  0x6363, 0x0598,
-  0x6364, 0x3326,
-  0x6367, 0x0bb6,
-  0x6368, 0x211c,
-  0x6369, 0x14d0,
-  0x636a, 0x3329,
-  0x636b, 0x235d,
-  0x636c, 0x332a,
-  0x636d, 0x14cd,
-  0x636e, 0x090c,
-  0x636f, 0x332b,
-  0x6371, 0x14c9,
-  0x6372, 0x2682,
-  0x6373, 0x332d,
-  0x6376, 0x053a,
-  0x6377, 0x08ae,
-  0x6378, 0x3330,
-  0x637a, 0x14ca,
-  0x637b, 0x0b50,
-  0x637c, 0x3332,
-  0x6380, 0x0f33,
-  0x6381, 0x3336,
-  0x6382, 0x05c1,
-  0x6383, 0x210d,
-  0x6384, 0x205a,
-  0x6385, 0x3337,
-  0x6387, 0x061d,
-  0x6388, 0x0d71,
-  0x6389, 0x05d5,
-  0x638a, 0x14cf,
-  0x638b, 0x3339,
-  0x638c, 0x1167,
-  0x638d, 0x333a,
-  0x638e, 0x14cb,
-  0x638f, 0x0e20,
-  0x6390, 0x0c1d,
-  0x6391, 0x333b,
-  0x6392, 0x0b86,
-  0x6393, 0x333c,
-  0x6396, 0x103b,
-  0x6397, 0x333f,
-  0x6398, 0x0921,
-  0x6399, 0x3340,
-  0x63a0, 0x0a7a,
-  0x63a1, 0x3347,
-  0x63a2, 0x0e10,
-  0x63a3, 0x04dd,
-  0x63a4, 0x3348,
-  0x63a5, 0x08a4,
-  0x63a6, 0x3349,
-  0x63a7, 0x0965,
-  0x63a8, 0x0e77,
-  0x63a9, 0x1003,
-  0x63aa, 0x056e,
-  0x63ab, 0x334a,
-  0x63ac, 0x14ce,
-  0x63ad, 0x14c7,
-  0x63ae, 0x14d1,
-  0x63af, 0x334b,
-  0x63b0, 0x1950,
-  0x63b1, 0x334c,
-  0x63b3, 0x0a57,
-  0x63b4, 0x14cc,
-  0x63b5, 0x334e,
-  0x63b7, 0x11bf,
-  0x63b8, 0x0588,
-  0x63b9, 0x3350,
-  0x63ba, 0x04bb,
-  0x63bb, 0x3351,
-  0x63bc, 0x14d2,
-  0x63bd, 0x3352,
-  0x63be, 0x14dc,
-  0x63bf, 0x3353,
-  0x63c0, 0x1f8d,
-  0x63c1, 0x3354,
-  0x63c4, 0x14d7,
-  0x63c5, 0x3357,
-  0x63c6, 0x14db,
-  0x63c7, 0x3358,
-  0x63c9, 0x0cbb,
-  0x63ca, 0x335a,
-  0x63cd, 0x123e,
-  0x63ce, 0x14d9,
-  0x63cf, 0x0aed,
-  0x63d0, 0x0e34,
-  0x63d1, 0x335d,
-  0x63d2, 0x04ac,
-  0x63d3, 0x335e,
-  0x63d6, 0x1045,
-  0x63d7, 0x3361,
-  0x63da, 0x21ff,
-  0x63db, 0x3364,
-  0x63de, 0x14d8,
-  0x63df, 0x3367,
-  0x63e0, 0x14d5,
-  0x63e1, 0x0ee4,
-  0x63e2, 0x3368,
-  0x63e3, 0x052a,
-  0x63e4, 0x3369,
-  0x63e9, 0x0938,
-  0x63ea, 0x08ed,
-  0x63eb, 0x336e,
-  0x63ed, 0x08a3,
-  0x63ee, 0x1f58,
-  0x63ef, 0x3370,
-  0x63f2, 0x14d3,
-  0x63f3, 0x3373,
-  0x63f4, 0x10f1,
-  0x63f5, 0x3374,
-  0x63f6, 0x14c8,
-  0x63f7, 0x3375,
-  0x63f8, 0x14d4,
-  0x63f9, 0x3376,
-  0x63fd, 0x09aa,
-  0x63fe, 0x337a,
-  0x63ff, 0x14d6,
-  0x6400, 0x04ba,
-  0x6401, 0x06e4,
-  0x6402, 0x0a4e,
-  0x6403, 0x337b,
-  0x6405, 0x0892,
-  0x6406, 0x337d,
-  0x640b, 0x14df,
-  0x640c, 0x14e2,
-  0x640d, 0x215b,
-  0x640e, 0x3382,
-  0x640f, 0x0472,
-  0x6410, 0x0527,
-  0x6411, 0x3383,
-  0x6413, 0x056d,
-  0x6414, 0x0cdf,
-  0x6415, 0x3385,
-  0x6417, 0x1eb6,
-  0x6418, 0x3387,
-  0x641b, 0x14e0,
-  0x641c, 0x0dc6,
-  0x641d, 0x338a,
-  0x641e, 0x06de,
-  0x641f, 0x338b,
-  0x6420, 0x14e1,
-  0x6421, 0x14e4,
-  0x6422, 0x338c,
-  0x6426, 0x14e3,
-  0x6427, 0x3390,
-  0x642a, 0x0e15,
-  0x642b, 0x3393,
-  0x642c, 0x03ec,
-  0x642d, 0x0571,
-  0x642e, 0x3394,
-  0x6434, 0x1736,
-  0x6435, 0x339a,
-  0x6436, 0x20db,
-  0x6437, 0x339b,
-  0x643a, 0x0f7a,
-  0x643b, 0x339e,
-  0x643d, 0x04b2,
-  0x643e, 0x33a0,
-  0x643f, 0x1951,
-  0x6440, 0x33a1,
-  0x6441, 0x14de,
-  0x6442, 0x33a2,
-  0x6444, 0x0d1c,
-  0x6445, 0x14dd,
-  0x6446, 0x03e5,
-  0x6447, 0x1028,
-  0x6448, 0x0460,
-  0x6449, 0x33a4,
-  0x644a, 0x0e02,
-  0x644b, 0x33a5,
-  0x6451, 0x2360,
-  0x6452, 0x14da,
-  0x6453, 0x33ab,
-  0x6454, 0x0d99,
-  0x6455, 0x33ac,
-  0x6458, 0x114b,
-  0x6459, 0x33af,
-  0x645c, 0x2361,
-  0x645d, 0x33b2,
-  0x645e, 0x14e5,
-  0x645f, 0x2040,
-  0x6460, 0x33b3,
-  0x6467, 0x0560,
-  0x6468, 0x33ba,
-  0x6469, 0x0b09,
-  0x646a, 0x33bb,
-  0x646d, 0x14e7,
-  0x646e, 0x33be,
-  0x646f, 0x228e,
-  0x6470, 0x33bf,
-  0x6473, 0x1fdf,
-  0x6474, 0x33c2,
-  0x6476, 0x235e,
-  0x6477, 0x33c4,
-  0x6478, 0x0b03,
-  0x647a, 0x14e9,
-  0x647b, 0x1e6a,
-  0x647c, 0x33c5,
-  0x6482, 0x0a15,
-  0x6483, 0x33cb,
-  0x6484, 0x14e6,
-  0x6485, 0x091e,
-  0x6486, 0x33cc,
-  0x6487, 0x0bd1,
-  0x6488, 0x2002,
-  0x6489, 0x33cd,
-  0x6491, 0x04ea,
-  0x6492, 0x0cd1,
-  0x6493, 0x2093,
-  0x6494, 0x33d5,
-  0x6495, 0x0daf,
-  0x6496, 0x14e8,
-  0x6497, 0x33d6,
-  0x6499, 0x14ec,
-  0x649a, 0x33d8,
-  0x649e, 0x120f,
-  0x649f, 0x235f,
-  0x64a0, 0x33dc,
-  0x64a3, 0x1eac,
-  0x64a4, 0x04dc,
-  0x64a5, 0x1e54,
-  0x64a6, 0x33df,
-  0x64a9, 0x0a0c,
-  0x64aa, 0x33e2,
-  0x64ab, 0x1f08,
-  0x64ac, 0x0c48,
-  0x64ad, 0x046c,
-  0x64ae, 0x056c,
-  0x64af, 0x33e3,
-  0x64b0, 0x1208,
-  0x64b1, 0x33e4,
-  0x64b2, 0x20c0,
-  0x64b3, 0x2362,
-  0x64b4, 0x33e5,
-  0x64b5, 0x0b4f,
-  0x64b6, 0x33e6,
-  0x64b7, 0x14ea,
-  0x64b9, 0x33e7,
-  0x64ba, 0x14ed,
-  0x64bb, 0x2160,
-  0x64bc, 0x076a,
-  0x64bd, 0x33e8,
-  0x64be, 0x219d,
-  0x64bf, 0x1f8e,
-  0x64c0, 0x14ee,
-  0x64c1, 0x222d,
-  0x64c2, 0x09c9,
-  0x64c3, 0x33e9,
-  0x64c4, 0x2047,
-  0x64c5, 0x0cfc,
-  0x64c6, 0x33ea,
-  0x64c7, 0x2262,
-  0x64c8, 0x33eb,
-  0x64ca, 0x1f67,
-  0x64cb, 0x1eb2,
-  0x64cc, 0x33ed,
-  0x64cd, 0x04a0,
-  0x64ce, 0x0c63,
-  0x64cf, 0x33ee,
-  0x64d0, 0x14ef,
-  0x64d1, 0x33ef,
-  0x64d2, 0x0c59,
-  0x64d3, 0x33f0,
-  0x64d4, 0x1ea9,
-  0x64d5, 0x33f1,
-  0x64d7, 0x14f0,
-  0x64d8, 0x1952,
-  0x64d9, 0x33f3,
-  0x64da, 0x1fcc,
-  0x64db, 0x33f4,
-  0x64de, 0x0dc8,
-  0x64df, 0x33f7,
-  0x64e0, 0x1f72,
-  0x64e1, 0x33f8,
-  0x64e2, 0x14f2,
-  0x64e3, 0x33f9,
-  0x64e4, 0x14f1,
-  0x64e5, 0x33fa,
-  0x64e6, 0x0488,
-  0x64e7, 0x33fb,
-  0x64ec, 0x2098,
-  0x64ed, 0x3400,
-  0x64ef, 0x1e52,
-  0x64f0, 0x20a4,
-  0x64f1, 0x1f1c,
-  0x64f2, 0x228f,
-  0x64f3, 0x3402,
-  0x64f4, 0x1fed,
-  0x64f5, 0x3403,
-  0x64f7, 0x2365,
-  0x64f8, 0x3405,
-  0x64fa, 0x1e2d,
-  0x64fb, 0x2152,
-  0x64fc, 0x2366,
-  0x64fd, 0x3407,
-  0x64fe, 0x20fa,
-  0x64ff, 0x3408,
-  0x6500, 0x0b8b,
-  0x6501, 0x3409,
-  0x6504, 0x2363,
-  0x6505, 0x340c,
-  0x6506, 0x209a,
-  0x6507, 0x340d,
-  0x6509, 0x14f3,
-  0x650a, 0x340f,
-  0x650f, 0x203c,
-  0x6510, 0x3414,
-  0x6512, 0x111f,
-  0x6513, 0x3416,
-  0x6514, 0x1ff6,
-  0x6515, 0x3417,
-  0x6516, 0x2364,
-  0x6517, 0x3418,
-  0x6518, 0x0c9c,
-  0x6519, 0x1e69,
-  0x651a, 0x3419,
-  0x651b, 0x2367,
-  0x651c, 0x341a,
-  0x651d, 0x211d,
-  0x651e, 0x341b,
-  0x6522, 0x2259,
-  0x6523, 0x2056,
-  0x6524, 0x2163,
-  0x6525, 0x14f4,
-  0x6526, 0x341f,
-  0x652a, 0x1fa9,
-  0x652b, 0x091f,
-  0x652c, 0x1ffc,
-  0x652d, 0x3423,
-  0x652e, 0x14f5,
-  0x652f, 0x11a6,
-  0x6530, 0x3424,
-  0x6534, 0x1909,
-  0x6535, 0x1966,
-  0x6536, 0x0d6c,
-  0x6537, 0x3428,
-  0x6538, 0x12b2,
-  0x6539, 0x06bf,
-  0x653a, 0x3429,
-  0x653b, 0x06fe,
-  0x653c, 0x342a,
-  0x653e, 0x0662,
-  0x653f, 0x119f,
-  0x6540, 0x342c,
-  0x6545, 0x0723,
-  0x6546, 0x3431,
-  0x6548, 0x0f72,
-  0x6549, 0x1ccb,
-  0x654a, 0x3433,
-  0x654c, 0x05b1,
-  0x654d, 0x3435,
-  0x654f, 0x0af9,
-  0x6550, 0x3437,
-  0x6551, 0x08f7,
-  0x6552, 0x3438,
-  0x6555, 0x1967,
-  0x6556, 0x03c8,
-  0x6557, 0x1e2e,
-  0x6558, 0x343b,
-  0x6559, 0x089d,
-  0x655a, 0x343c,
-  0x655b, 0x09fb,
-  0x655c, 0x343d,
-  0x655d, 0x043f,
-  0x655e, 0x04cd,
-  0x655f, 0x343e,
-  0x6562, 0x06cd,
-  0x6563, 0x0cdb,
-  0x6564, 0x3441,
-  0x6566, 0x0617,
-  0x6567, 0x3443,
-  0x656b, 0x1968,
-  0x656c, 0x08e3,
-  0x656d, 0x3447,
-  0x6570, 0x0d94,
-  0x6571, 0x344a,
-  0x6572, 0x0c40,
-  0x6573, 0x344b,
-  0x6574, 0x119c,
-  0x6575, 0x1ebc,
-  0x6576, 0x344c,
-  0x6577, 0x0690,
-  0x6578, 0x2142,
-  0x6579, 0x344d,
-  0x6582, 0x201e,
-  0x6583, 0x1e43,
-  0x6584, 0x3456,
-  0x6587, 0x0ed3,
-  0x6588, 0x3459,
-  0x658b, 0x114c,
-  0x658c, 0x045c,
-  0x658d, 0x345c,
-  0x6590, 0x19c1,
-  0x6591, 0x03ea,
-  0x6592, 0x345f,
-  0x6593, 0x19c3,
-  0x6594, 0x3460,
-  0x6595, 0x24d4,
-  0x6596, 0x3461,
-  0x6597, 0x05f6,
-  0x6598, 0x3462,
-  0x6599, 0x0a18,
-  0x659a, 0x3463,
-  0x659b, 0x1d56,
-  0x659c, 0x0f7c,
-  0x659d, 0x3464,
-  0x659f, 0x1186,
-  0x65a0, 0x3466,
-  0x65a1, 0x0ee2,
-  0x65a2, 0x3467,
-  0x65a4, 0x08c0,
-  0x65a5, 0x0507,
-  0x65a6, 0x3469,
-  0x65a7, 0x06a6,
-  0x65a8, 0x346a,
-  0x65a9, 0x1157,
-  0x65aa, 0x346b,
-  0x65ab, 0x1a29,
-  0x65ac, 0x226f,
-  0x65ad, 0x060e,
-  0x65ae, 0x346c,
-  0x65af, 0x0dae,
-  0x65b0, 0x0f8d,
-  0x65b1, 0x346d,
-  0x65b7, 0x1ed7,
-  0x65b8, 0x3473,
-  0x65b9, 0x065a,
-  0x65ba, 0x3474,
-  0x65bc, 0x19c4,
-  0x65bd, 0x0d40,
-  0x65be, 0x3476,
-  0x65c1, 0x0b95,
-  0x65c2, 0x3479,
-  0x65c3, 0x19c7,
-  0x65c4, 0x19c6,
-  0x65c5, 0x0a6a,
-  0x65c6, 0x19c5,
-  0x65c7, 0x347a,
-  0x65cb, 0x0fc8,
-  0x65cc, 0x19c8,
-  0x65cd, 0x347e,
-  0x65ce, 0x19c9,
-  0x65cf, 0x1242,
-  0x65d0, 0x347f,
-  0x65d2, 0x19ca,
-  0x65d3, 0x3481,
-  0x65d6, 0x19cb,
-  0x65d7, 0x0c0b,
-  0x65d8, 0x3484,
-  0x65e0, 0x0eed,
-  0x65e1, 0x348c,
-  0x65e2, 0x083b,
-  0x65e3, 0x348d,
-  0x65e5, 0x0cb0,
-  0x65e6, 0x058a,
-  0x65e7, 0x08f8,
-  0x65e8, 0x11bb,
-  0x65e9, 0x112a,
-  0x65ea, 0x348f,
-  0x65ec, 0x0fd7,
-  0x65ed, 0x0fbc,
-  0x65ee, 0x190a,
-  0x65f1, 0x076c,
-  0x65f2, 0x3491,
-  0x65f6, 0x0d48,
-  0x65f7, 0x0982,
-  0x65f8, 0x3495,
-  0x65fa, 0x0eab,
-  0x65fb, 0x3497,
-  0x6600, 0x1912,
-  0x6601, 0x349c,
-  0x6602, 0x03c5,
-  0x6603, 0x1910,
-  0x6604, 0x349d,
-  0x6606, 0x0990,
-  0x6607, 0x349f,
-  0x660a, 0x190d,
-  0x660b, 0x34a2,
-  0x660c, 0x04c4,
-  0x660d, 0x34a3,
-  0x660e, 0x0afc,
-  0x660f, 0x07fd,
-  0x6610, 0x34a4,
-  0x6613, 0x105e,
-  0x6614, 0x0f03,
-  0x6615, 0x1911,
-  0x6616, 0x34a7,
-  0x6619, 0x190e,
-  0x661a, 0x34aa,
-  0x661d, 0x1915,
-  0x661e, 0x34ad,
-  0x661f, 0x0f92,
-  0x6620, 0x1098,
-  0x6621, 0x34ae,
-  0x6625, 0x053d,
-  0x6626, 0x34b2,
-  0x6627, 0x0ac6,
-  0x6628, 0x124f,
-  0x6629, 0x34b3,
-  0x662d, 0x1172,
-  0x662e, 0x34b7,
-  0x662f, 0x0d5e,
-  0x6630, 0x34b8,
-  0x6631, 0x1917,
-  0x6632, 0x34b9,
-  0x6634, 0x1916,
-  0x6635, 0x1919,
-  0x6636, 0x1918,
-  0x6637, 0x34bb,
-  0x663c, 0x11e6,
-  0x663d, 0x34c0,
-  0x663e, 0x0f41,
-  0x663f, 0x34c1,
-  0x6641, 0x191d,
-  0x6642, 0x212d,
-  0x6643, 0x07e3,
-  0x6644, 0x34c3,
-  0x664b, 0x08cb,
-  0x664c, 0x0d07,
-  0x664d, 0x34ca,
-  0x664f, 0x191e,
-  0x6650, 0x34cc,
-  0x6652, 0x0cf2,
-  0x6653, 0x0f6b,
-  0x6654, 0x191c,
-  0x6655, 0x1111,
-  0x6656, 0x191f,
-  0x6657, 0x1921,
-  0x6658, 0x34ce,
-  0x665a, 0x0e9e,
-  0x665b, 0x34d0,
-  0x665d, 0x229b,
-  0x665e, 0x34d2,
-  0x665f, 0x191b,
-  0x6660, 0x34d3,
-  0x6661, 0x1920,
-  0x6662, 0x34d4,
-  0x6664, 0x0efd,
-  0x6665, 0x34d6,
-  0x6666, 0x07f3,
-  0x6667, 0x34d7,
-  0x6668, 0x04e4,
-  0x6669, 0x34d8,
-  0x666e, 0x0bf4,
-  0x666f, 0x08df,
-  0x6670, 0x0f09,
-  0x6671, 0x34dd,
-  0x6674, 0x0c64,
-  0x6675, 0x34e0,
-  0x6676, 0x08d6,
-  0x6677, 0x1922,
-  0x6678, 0x34e1,
-  0x667a, 0x11c6,
-  0x667b, 0x34e3,
-  0x667e, 0x0a09,
-  0x667f, 0x34e6,
-  0x6682, 0x1120,
-  0x6683, 0x34e9,
-  0x6684, 0x1923,
-  0x6685, 0x34ea,
-  0x6687, 0x0f2b,
-  0x6688, 0x2256,
-  0x6689, 0x24a8,
-  0x668a, 0x34ec,
-  0x668c, 0x1924,
-  0x668d, 0x34ee,
-  0x6691, 0x0d85,
-  0x6692, 0x34f2,
-  0x6696, 0x0b70,
-  0x6697, 0x03c0,
-  0x6698, 0x34f6,
-  0x669d, 0x1926,
-  0x669e, 0x34fb,
-  0x66a2, 0x1e79,
-  0x66a3, 0x34ff,
-  0x66a7, 0x1925,
-  0x66a8, 0x1cdd,
-  0x66a9, 0x3503,
-  0x66ab, 0x225a,
-  0x66ac, 0x3505,
-  0x66ae, 0x0b1d,
-  0x66af, 0x3507,
-  0x66b4, 0x0412,
-  0x66b5, 0x350c,
-  0x66b9, 0x175b,
-  0x66ba, 0x3510,
-  0x66be, 0x1927,
-  0x66bf, 0x3514,
-  0x66c4, 0x24a7,
-  0x66c5, 0x3519,
-  0x66c6, 0x2686,
-  0x66c7, 0x24a6,
-  0x66c8, 0x351a,
-  0x66c9, 0x21ce,
-  0x66ca, 0x351b,
-  0x66d6, 0x24a9,
-  0x66d7, 0x3527,
-  0x66d9, 0x0d86,
-  0x66da, 0x3529,
-  0x66db, 0x1928,
-  0x66dd, 0x0bf7,
-  0x66de, 0x352a,
-  0x66e0, 0x1fe7,
-  0x66e1, 0x352c,
-  0x66e6, 0x192a,
-  0x66e7, 0x3531,
-  0x66e9, 0x192b,
-  0x66ea, 0x3533,
-  0x66ec, 0x2112,
-  0x66ed, 0x3535,
-  0x66f0, 0x10fe,
-  0x66f1, 0x3538,
-  0x66f2, 0x0c77,
-  0x66f3, 0x103e,
-  0x66f4, 0x06f7,
-  0x66f5, 0x3539,
-  0x66f7, 0x1914,
-  0x66f8, 0x213c,
-  0x66f9, 0x04a3,
-  0x66fa, 0x353b,
-  0x66fc, 0x0aa3,
-  0x66fd, 0x353d,
-  0x66fe, 0x113b,
-  0x66ff, 0x0e39,
-  0x6700, 0x124b,
-  0x6701, 0x353e,
-  0x6703, 0x1f5c,
-  0x6704, 0x3540,
-  0x6708, 0x1105,
-  0x6709, 0x10b5,
-  0x670a, 0x1973,
-  0x670b, 0x0bb4,
-  0x670c, 0x3544,
-  0x670d, 0x069b,
-  0x670e, 0x3545,
-  0x6710, 0x1984,
-  0x6711, 0x3547,
-  0x6714, 0x0dac,
-  0x6715, 0x198e,
-  0x6716, 0x354a,
-  0x6717, 0x09b5,
-  0x6718, 0x354b,
-  0x671b, 0x0eac,
-  0x671c, 0x354e,
-  0x671d, 0x04d4,
-  0x671e, 0x354f,
-  0x671f, 0x0bf9,
-  0x6720, 0x3550,
-  0x6726, 0x19ac,
-  0x6727, 0x24c4,
-  0x6728, 0x0b21,
-  0x6729, 0x3556,
-  0x672a, 0x0ec3,
-  0x672b, 0x0b0c,
-  0x672c, 0x0427,
-  0x672d, 0x1140,
-  0x672e, 0x3557,
-  0x672f, 0x0d8c,
-  0x6730, 0x3558,
-  0x6731, 0x11eb,
-  0x6732, 0x3559,
-  0x6734, 0x0bf2,
-  0x6735, 0x0623,
-  0x6736, 0x355b,
-  0x673a, 0x080f,
-  0x673b, 0x355f,
-  0x673d, 0x0fab,
-  0x673e, 0x3561,
-  0x6740, 0x0cea,
-  0x6741, 0x3563,
-  0x6742, 0x1116,
-  0x6743, 0x0c83,
-  0x6744, 0x3564,
-  0x6746, 0x06c6,
-  0x6747, 0x3566,
-  0x6748, 0x1854,
-  0x6749, 0x0cf5,
-  0x674a, 0x3567,
-  0x674c, 0x1851,
-  0x674d, 0x3569,
-  0x674e, 0x09d9,
-  0x674f, 0x0f9e,
-  0x6750, 0x048b,
-  0x6751, 0x0568,
-  0x6752, 0x356a,
-  0x6753, 0x1852,
-  0x6754, 0x356b,
-  0x6756, 0x1169,
-  0x6757, 0x356d,
-  0x675c, 0x0604,
-  0x675d, 0x3572,
-  0x675e, 0x1853,
-  0x675f, 0x0d8f,
-  0x6760, 0x06d7,
-  0x6761, 0x0e48,
-  0x6762, 0x3573,
-  0x6765, 0x099f,
-  0x6766, 0x3576,
-  0x6768, 0x1017,
-  0x6769, 0x1855,
-  0x676a, 0x1858,
-  0x676b, 0x3578,
-  0x676d, 0x0773,
-  0x676e, 0x357a,
-  0x676f, 0x0416,
-  0x6770, 0x08ad,
-  0x6771, 0x1ecc,
-  0x6772, 0x190f,
-  0x6773, 0x1859,
-  0x6774, 0x357b,
-  0x6775, 0x185c,
-  0x6776, 0x357c,
-  0x6777, 0x1861,
-  0x6778, 0x357d,
-  0x677c, 0x1862,
-  0x677d, 0x3581,
-  0x677e, 0x0dbe,
-  0x677f, 0x03f0,
-  0x6780, 0x3582,
-  0x6781, 0x081e,
-  0x6782, 0x3583,
-  0x6784, 0x0712,
-  0x6785, 0x3585,
-  0x6787, 0x1857,
-  0x6788, 0x3587,
-  0x6789, 0x0ea8,
-  0x678a, 0x3588,
-  0x678b, 0x1860,
-  0x678c, 0x3589,
-  0x6790, 0x0f05,
-  0x6791, 0x358d,
-  0x6795, 0x118e,
-  0x6796, 0x3591,
-  0x6797, 0x0a1f,
-  0x6798, 0x185a,
-  0x6799, 0x3592,
-  0x679a, 0x0abb,
-  0x679b, 0x3593,
-  0x679c, 0x0754,
-  0x679d, 0x11a5,
-  0x679e, 0x185e,
-  0x679f, 0x3594,
-  0x67a2, 0x0d77,
-  0x67a3, 0x1129,
-  0x67a4, 0x3597,
-  0x67a5, 0x1856,
-  0x67a6, 0x3598,
-  0x67a7, 0x185b,
-  0x67a8, 0x185d,
-  0x67a9, 0x3599,
-  0x67aa, 0x0c36,
-  0x67ab, 0x0680,
-  0x67ac, 0x359a,
-  0x67ad, 0x185f,
-  0x67ae, 0x359b,
-  0x67af, 0x096a,
-  0x67b0, 0x1868,
-  0x67b1, 0x359c,
-  0x67b3, 0x186d,
-  0x67b4, 0x359e,
-  0x67b5, 0x186b,
-  0x67b6, 0x084f,
-  0x67b7, 0x0842,
-  0x67b8, 0x1871,
-  0x67b9, 0x359f,
-  0x67c1, 0x1874,
-  0x67c2, 0x35a7,
-  0x67c3, 0x1870,
-  0x67c4, 0x0463,
-  0x67c5, 0x35a8,
-  0x67cf, 0x03e3,
-  0x67d0, 0x0b16,
-  0x67d1, 0x06c7,
-  0x67d2, 0x0c01,
-  0x67d3, 0x0c99,
-  0x67d4, 0x0cbc,
-  0x67d5, 0x35b2,
-  0x67d8, 0x1865,
-  0x67d9, 0x186a,
-  0x67da, 0x186c,
-  0x67db, 0x35b5,
-  0x67dc, 0x074a,
-  0x67dd, 0x186e,
-  0x67de, 0x1252,
-  0x67df, 0x35b6,
-  0x67e0, 0x0b5e,
-  0x67e1, 0x35b7,
-  0x67e2, 0x1872,
-  0x67e3, 0x35b8,
-  0x67e5, 0x04b0,
-  0x67e6, 0x35ba,
-  0x67e9, 0x1867,
-  0x67ea, 0x35bd,
-  0x67ec, 0x0860,
-  0x67ed, 0x35bf,
-  0x67ef, 0x094f,
-  0x67f0, 0x1863,
-  0x67f1, 0x11f8,
-  0x67f2, 0x35c1,
-  0x67f3, 0x0a41,
-  0x67f4, 0x04b8,
-  0x67f5, 0x35c2,
-  0x67fd, 0x1875,
-  0x67fe, 0x35ca,
-  0x67ff, 0x0d58,
-  0x6800, 0x186f,
-  0x6801, 0x35cb,
-  0x6805, 0x1145,
-  0x6806, 0x35cf,
-  0x6807, 0x0453,
-  0x6808, 0x115c,
-  0x6809, 0x1864,
-  0x680a, 0x1866,
-  0x680b, 0x05ef,
-  0x680c, 0x1869,
-  0x680d, 0x35d0,
-  0x680e, 0x1873,
-  0x680f, 0x09a3,
-  0x6810, 0x35d1,
-  0x6811, 0x0d8e,
-  0x6812, 0x35d2,
-  0x6813, 0x0d9d,
-  0x6814, 0x35d3,
-  0x6816, 0x0bfb,
-  0x6817, 0x09e0,
-  0x6818, 0x35d5,
-  0x681d, 0x187f,
-  0x681e, 0x35da,
-  0x6821, 0x0f6e,
-  0x6822, 0x35dd,
-  0x6829, 0x1888,
-  0x682a, 0x11e9,
-  0x682b, 0x35e4,
-  0x6832, 0x1876,
-  0x6834, 0x35eb,
-  0x6837, 0x1022,
-  0x6838, 0x0782,
-  0x6839, 0x06f4,
-  0x683a, 0x35ee,
-  0x683c, 0x06ec,
-  0x683d, 0x1117,
-  0x683e, 0x1885,
-  0x683f, 0x35f0,
-  0x6840, 0x1884,
-  0x6841, 0x1882,
-  0x6842, 0x0749,
-  0x6843, 0x0e25,
-  0x6844, 0x187c,
-  0x6845, 0x0eb5,
-  0x6846, 0x097f,
-  0x6847, 0x35f1,
-  0x6848, 0x03c3,
-  0x6849, 0x1887,
-  0x684a, 0x1886,
-  0x684b, 0x35f2,
-  0x684c, 0x121d,
-  0x684d, 0x35f3,
-  0x684e, 0x187a,
-  0x684f, 0x35f4,
-  0x6850, 0x0e5a,
-  0x6851, 0x0cdc,
-  0x6852, 0x35f5,
-  0x6853, 0x07cd,
-  0x6854, 0x08ac,
-  0x6855, 0x1880,
-  0x6856, 0x35f6,
-  0x6860, 0x1878,
-  0x6862, 0x187b,
-  0x6863, 0x0596,
-  0x6864, 0x187d,
-  0x6865, 0x0c42,
-  0x6866, 0x1881,
-  0x6867, 0x1883,
-  0x6868, 0x0881,
-  0x6869, 0x120b,
-  0x686a, 0x3600,
-  0x686b, 0x188e,
-  0x686c, 0x3601,
-  0x6874, 0x188b,
-  0x6875, 0x3609,
-  0x6876, 0x0e61,
-  0x6877, 0x188c,
-  0x6878, 0x360a,
-  0x6881, 0x0a03,
-  0x6882, 0x3613,
-  0x6883, 0x187e,
-  0x6884, 0x3614,
-  0x6885, 0x0abc,
-  0x6886, 0x03fb,
-  0x6887, 0x3615,
-  0x688f, 0x188a,
-  0x6890, 0x361d,
-  0x6893, 0x188d,
-  0x6894, 0x3620,
-  0x6897, 0x06fc,
-  0x6898, 0x246a,
-  0x6899, 0x3623,
-  0x689d, 0x2175,
-  0x689e, 0x3627,
-  0x689f, 0x246d,
-  0x68a0, 0x3628,
-  0x68a2, 0x0d0b,
-  0x68a3, 0x362a,
-  0x68a6, 0x0ad3,
-  0x68a7, 0x0eef,
-  0x68a8, 0x09d1,
-  0x68a9, 0x362d,
-  0x68ad, 0x0de8,
-  0x68ae, 0x3631,
-  0x68af, 0x0e30,
-  0x68b0, 0x0f80,
-  0x68b1, 0x3632,
-  0x68b3, 0x0d78,
-  0x68b4, 0x3634,
-  0x68b5, 0x1889,
-  0x68b6, 0x3635,
-  0x68c0, 0x085f,
-  0x68c1, 0x363f,
-  0x68c2, 0x188f,
-  0x68c3, 0x3640,
-  0x68c9, 0x0ae3,
-  0x68ca, 0x3646,
-  0x68cb, 0x0c04,
-  0x68cc, 0x3647,
-  0x68cd, 0x0750,
-  0x68ce, 0x3648,
-  0x68d2, 0x03ff,
-  0x68d3, 0x364c,
-  0x68d5, 0x1235,
-  0x68d6, 0x246b,
-  0x68d7, 0x225f,
-  0x68d8, 0x081f,
-  0x68d9, 0x364e,
-  0x68da, 0x0bb0,
-  0x68db, 0x364f,
-  0x68df, 0x1ece,
-  0x68e0, 0x0e17,
-  0x68e1, 0x3653,
-  0x68e3, 0x189a,
-  0x68e4, 0x3655,
-  0x68e7, 0x2272,
-  0x68e8, 0x3658,
-  0x68ee, 0x0ce6,
-  0x68ef, 0x365e,
-  0x68f0, 0x1896,
-  0x68f1, 0x09cd,
-  0x68f2, 0x365f,
-  0x68f5, 0x0950,
-  0x68f6, 0x3662,
-  0x68f9, 0x1894,
-  0x68fa, 0x0730,
-  0x68fb, 0x3665,
-  0x68fc, 0x1891,
-  0x68fd, 0x3666,
-  0x6900, 0x3669,
-  0x6901, 0x1898,
-  0x6902, 0x366a,
-  0x6905, 0x1055,
-  0x6906, 0x366d,
-  0x690b, 0x1897,
-  0x690c, 0x3672,
-  0x690d, 0x11b1,
-  0x690e, 0x1212,
-  0x690f, 0x2473,
-  0x6910, 0x189b,
-  0x6911, 0x3673,
-  0x6912, 0x0888,
-  0x6913, 0x3674,
-  0x691f, 0x1892,
-  0x6921, 0x3680,
-  0x6924, 0x1895,
-  0x6925, 0x3683,
-  0x692d, 0x0e87,
-  0x692e, 0x368b,
-  0x6930, 0x1033,
-  0x6931, 0x368d,
-  0x6934, 0x18a6,
-  0x6935, 0x3690,
-  0x6939, 0x189d,
-  0x693a, 0x3694,
-  0x693d, 0x052d,
-  0x693e, 0x3697,
-  0x693f, 0x053e,
-  0x6940, 0x3698,
-  0x6942, 0x189f,
-  0x6943, 0x369a,
-  0x694a, 0x21fe,
-  0x694b, 0x36a1,
-  0x6953, 0x1efe,
-  0x6954, 0x0f73,
-  0x6955, 0x36a9,
-  0x6957, 0x1899,
-  0x6958, 0x36ab,
-  0x695a, 0x0523,
-  0x695b, 0x36ad,
-  0x695d, 0x18a0,
-  0x695e, 0x09ce,
-  0x695f, 0x36af,
-  0x6960, 0x189e,
-  0x6961, 0x36b0,
-  0x6963, 0x18ad,
-  0x6964, 0x36b2,
-  0x6966, 0x18ac,
-  0x6967, 0x36b4,
-  0x6968, 0x2475,
-  0x6969, 0x36b5,
-  0x696b, 0x18a2,
-  0x696c, 0x36b7,
-  0x696d, 0x220a,
-  0x696e, 0x1890,
-  0x696f, 0x36b8,
-  0x6971, 0x189c,
-  0x6972, 0x36ba,
-  0x6975, 0x1f6f,
-  0x6976, 0x36bd,
-  0x6977, 0x0939,
-  0x6978, 0x18a5,
-  0x6979, 0x18ae,
-  0x697a, 0x36be,
-  0x697c, 0x0a4c,
-  0x697d, 0x36c0,
-  0x6980, 0x18a3,
-  0x6981, 0x36c3,
-  0x6982, 0x06c0,
-  0x6983, 0x36c4,
-  0x6984, 0x18a1,
-  0x6985, 0x36c5,
-  0x6986, 0x10c1,
-  0x6987, 0x18a8,
-  0x6989, 0x18ab,
-  0x698a, 0x36c6,
-  0x698d, 0x18bb,
-  0x698e, 0x36c9,
-  0x6994, 0x09b1,
-  0x6995, 0x18b9,
-  0x6996, 0x36cf,
-  0x6998, 0x18a4,
-  0x6999, 0x36d1,
-  0x699b, 0x18af,
-  0x699c, 0x03fc,
-  0x699d, 0x36d3,
-  0x69a7, 0x18b0,
-  0x69a8, 0x1146,
-  0x69a9, 0x36dd,
-  0x69aa, 0x2468,
-  0x69ab, 0x18b2,
-  0x69ac, 0x36de,
-  0x69ad, 0x18b3,
-  0x69ae, 0x2100,
-  0x69af, 0x36df,
-  0x69b1, 0x18b5,
-  0x69b2, 0x36e1,
-  0x69b4, 0x0a3a,
-  0x69b5, 0x36e3,
-  0x69b7, 0x0c91,
-  0x69b8, 0x36e5,
-  0x69bb, 0x18b1,
-  0x69bc, 0x36e8,
-  0x69bf, 0x2476,
-  0x69c0, 0x36eb,
-  0x69c1, 0x18b6,
-  0x69c2, 0x36ec,
-  0x69ca, 0x18b7,
-  0x69cb, 0x1f27,
-  0x69cc, 0x18a7,
-  0x69cd, 0x20d7,
-  0x69ce, 0x18aa,
-  0x69cf, 0x36f4,
-  0x69d0, 0x07c6,
-  0x69d1, 0x36f5,
-  0x69d4, 0x18b4,
-  0x69d5, 0x36f8,
-  0x69db, 0x086a,
-  0x69dc, 0x36fe,
-  0x69df, 0x18b8,
-  0x69e0, 0x18ba,
-  0x69e1, 0x3701,
-  0x69e7, 0x247c,
-  0x69e8, 0x3707,
-  0x69ed, 0x18be,
-  0x69ee, 0x370c,
-  0x69f2, 0x18c2,
-  0x69f3, 0x1fa1,
-  0x69f4, 0x3710,
-  0x69fd, 0x04a2,
-  0x69fe, 0x3719,
-  0x69ff, 0x18bc,
-  0x6a00, 0x371a,
-  0x6a01, 0x22aa,
-  0x6a02, 0x2005,
-  0x6a03, 0x371b,
-  0x6a05, 0x246c,
-  0x6a06, 0x371d,
-  0x6a0a, 0x064b,
-  0x6a0b, 0x3721,
-  0x6a13, 0x203e,
-  0x6a14, 0x3729,
-  0x6a17, 0x18bf,
-  0x6a19, 0x1e4c,
-  0x6a1a, 0x372c,
-  0x6a1e, 0x213a,
-  0x6a1f, 0x1162,
-  0x6a20, 0x3730,
-  0x6a21, 0x0b06,
-  0x6a22, 0x3731,
-  0x6a23, 0x2204,
-  0x6a24, 0x3732,
-  0x6a28, 0x18cc,
-  0x6a29, 0x3736,
-  0x6a2a, 0x0798,
-  0x6a2b, 0x3737,
-  0x6a2f, 0x18bd,
-  0x6a30, 0x373b,
-  0x6a31, 0x1088,
-  0x6a32, 0x373c,
-  0x6a35, 0x18c8,
-  0x6a36, 0x373f,
-  0x6a38, 0x20c3,
-  0x6a39, 0x2140,
-  0x6a3a, 0x2477,
-  0x6a3b, 0x3741,
-  0x6a3d, 0x18cb,
-  0x6a3e, 0x18c4,
-  0x6a3f, 0x3743,
-  0x6a44, 0x18c3,
-  0x6a45, 0x3748,
-  0x6a47, 0x0c3e,
-  0x6a48, 0x2474,
-  0x6a49, 0x374a,
-  0x6a4b, 0x20dd,
-  0x6a4c, 0x374c,
-  0x6a50, 0x18c6,
-  0x6a51, 0x3750,
-  0x6a58, 0x18cd,
-  0x6a59, 0x04ed,
-  0x6a5a, 0x3757,
-  0x6a5b, 0x18c7,
-  0x6a5c, 0x3758,
-  0x6a5f, 0x1f68,
-  0x6a60, 0x375b,
-  0x6a61, 0x0f5d,
-  0x6a62, 0x2185,
-  0x6a63, 0x375c,
-  0x6a65, 0x18c1,
-  0x6a66, 0x375e,
-  0x6a71, 0x051c,
-  0x6a72, 0x3769,
-  0x6a79, 0x18ca,
-  0x6a7a, 0x3770,
-  0x6a7c, 0x18ce,
-  0x6a7d, 0x3772,
-  0x6a80, 0x0e07,
-  0x6a81, 0x3775,
-  0x6a84, 0x0f1a,
-  0x6a85, 0x3778,
-  0x6a89, 0x2472,
-  0x6a8a, 0x377c,
-  0x6a8e, 0x18c9,
-  0x6a8f, 0x3780,
-  0x6a90, 0x18d0,
-  0x6a91, 0x18cf,
-  0x6a92, 0x3781,
-  0x6a94, 0x1eb5,
-  0x6a95, 0x3783,
-  0x6a97, 0x18d2,
-  0x6a98, 0x3785,
-  0x6a9c, 0x2478,
-  0x6a9d, 0x3789,
-  0x6aa0, 0x18c5,
-  0x6aa1, 0x378c,
-  0x6aa2, 0x1f8b,
-  0x6aa3, 0x2484,
-  0x6aa4, 0x378d,
-  0x6aa9, 0x18d1,
-  0x6aaa, 0x3792,
-  0x6aab, 0x18d3,
-  0x6aac, 0x0acf,
-  0x6aad, 0x3793,
-  0x6aaf, 0x2699,
-  0x6ab0, 0x3795,
-  0x6ab3, 0x2482,
-  0x6ab4, 0x3798,
-  0x6ab8, 0x20a1,
-  0x6ab9, 0x379c,
-  0x6abb, 0x1f92,
-  0x6abc, 0x379e,
-  0x6ac3, 0x1f38,
-  0x6ac4, 0x37a5,
-  0x6ad3, 0x2485,
-  0x6ad4, 0x37b4,
-  0x6ada, 0x2480,
-  0x6adb, 0x246e,
-  0x6adc, 0x37ba,
-  0x6add, 0x247b,
-  0x6ade, 0x2486,
-  0x6adf, 0x2471,
-  0x6ae0, 0x37bb,
-  0x6ae7, 0x2483,
-  0x6ae8, 0x2470,
-  0x6ae9, 0x37c2,
-  0x6aea, 0x2469,
-  0x6aeb, 0x37c3,
-  0x6aec, 0x247f,
-  0x6aed, 0x37c4,
-  0x6af3, 0x246f,
-  0x6af4, 0x37ca,
-  0x6af8, 0x2481,
-  0x6af9, 0x37ce,
-  0x6afb, 0x2220,
-  0x6afc, 0x37d0,
-  0x6b00, 0x37d4,
-  0x6b04, 0x1ff5,
-  0x6b05, 0x37d8,
-  0x6b0a, 0x20f4,
-  0x6b0b, 0x37dd,
-  0x6b0f, 0x247d,
-  0x6b10, 0x37e1,
-  0x6b12, 0x2479,
-  0x6b13, 0x37e3,
-  0x6b16, 0x247e,
-  0x6b17, 0x37e6,
-  0x6b1e, 0x247a,
-  0x6b1f, 0x37ed,
-  0x6b20, 0x0c34,
-  0x6b21, 0x0551,
-  0x6b22, 0x07cb,
-  0x6b23, 0x0f8b,
-  0x6b24, 0x19b1,
-  0x6b25, 0x37ee,
-  0x6b27, 0x0b78,
-  0x6b28, 0x37f0,
-  0x6b32, 0x10e0,
-  0x6b33, 0x37fa,
-  0x6b37, 0x19b2,
-  0x6b38, 0x37fe,
-  0x6b39, 0x19b3,
-  0x6b3a, 0x0bfa,
-  0x6b3b, 0x37ff,
-  0x6b3d, 0x20e3,
-  0x6b3e, 0x097b,
-  0x6b3f, 0x3801,
-  0x6b43, 0x19b4,
-  0x6b44, 0x3805,
-  0x6b46, 0x19b5,
-  0x6b47, 0x0f75,
-  0x6b48, 0x3807,
-  0x6b49, 0x0c35,
-  0x6b4a, 0x3808,
-  0x6b4c, 0x06e3,
-  0x6b4d, 0x380a,
-  0x6b50, 0x20ad,
-  0x6b51, 0x380d,
-  0x6b59, 0x19b6,
-  0x6b5a, 0x3815,
-  0x6b5f, 0x24cb,
-  0x6b60, 0x381a,
-  0x6b61, 0x1f53,
-  0x6b62, 0x11b8,
-  0x6b63, 0x119e,
-  0x6b64, 0x054e,
-  0x6b65, 0x0484,
-  0x6b66, 0x0ef3,
-  0x6b67, 0x0c06,
-  0x6b68, 0x381b,
-  0x6b6a, 0x0e92,
-  0x6b6b, 0x381d,
-  0x6b72, 0x2159,
-  0x6b73, 0x3824,
-  0x6b77, 0x2013,
-  0x6b78, 0x1f33,
-  0x6b79, 0x0578,
-  0x6b7a, 0x3828,
-  0x6b7b, 0x0db5,
-  0x6b7c, 0x0852,
-  0x6b7d, 0x3829,
-  0x6b81, 0x18d6,
-  0x6b83, 0x1013,
-  0x6b84, 0x18d9,
-  0x6b85, 0x382d,
-  0x6b86, 0x057c,
-  0x6b87, 0x18d8,
-  0x6b88, 0x382e,
-  0x6b89, 0x0fdc,
-  0x6b8a, 0x0d79,
-  0x6b8b, 0x0497,
-  0x6b8c, 0x382f,
-  0x6b8d, 0x18dc,
-  0x6b8e, 0x3830,
-  0x6b92, 0x18da,
-  0x6b94, 0x3834,
-  0x6b96, 0x11b2,
-  0x6b97, 0x3836,
-  0x6b98, 0x1e5c,
-  0x6b99, 0x3837,
-  0x6b9a, 0x18dd,
-  0x6b9c, 0x3838,
-  0x6b9e, 0x2488,
-  0x6b9f, 0x383a,
-  0x6ba1, 0x18df,
-  0x6ba2, 0x383c,
-  0x6ba4, 0x2487,
-  0x6ba5, 0x383e,
-  0x6baa, 0x18e0,
-  0x6bab, 0x248a,
-  0x6bac, 0x3843,
-  0x6bae, 0x2489,
-  0x6baf, 0x248b,
-  0x6bb0, 0x3845,
-  0x6bb2, 0x1f83,
-  0x6bb3, 0x19bd,
-  0x6bb4, 0x0b7a,
-  0x6bb5, 0x060d,
-  0x6bb6, 0x3847,
-  0x6bb7, 0x107a,
-  0x6bb8, 0x3848,
-  0x6bba, 0x210f,
-  0x6bbb, 0x1fdb,
-  0x6bbc, 0x384a,
-  0x6bbf, 0x05cf,
-  0x6bc0, 0x384d,
-  0x6bc1, 0x07ee,
-  0x6bc2, 0x19bf,
-  0x6bc3, 0x384e,
-  0x6bc5, 0x106a,
-  0x6bc6, 0x20af,
-  0x6bc7, 0x3850,
-  0x6bcb, 0x0ef2,
-  0x6bcc, 0x3854,
-  0x6bcd, 0x0b1b,
-  0x6bce, 0x3855,
-  0x6bcf, 0x0ac4,
-  0x6bd0, 0x3856,
-  0x6bd2, 0x05fd,
-  0x6bd3, 0x126f,
-  0x6bd4, 0x0431,
-  0x6bd5, 0x0438,
-  0x6bd6, 0x043a,
-  0x6bd7, 0x0bbf,
-  0x6bd8, 0x3858,
-  0x6bd9, 0x0439,
-  0x6bda, 0x3859,
-  0x6bdb, 0x0ab0,
-  0x6bdc, 0x385a,
-  0x6be1, 0x1152,
-  0x6be2, 0x385f,
-  0x6bea, 0x1954,
-  0x6beb, 0x0778,
-  0x6bec, 0x3867,
-  0x6bef, 0x0e0d,
-  0x6bf0, 0x386a,
-  0x6bf3, 0x1955,
-  0x6bf4, 0x386d,
-  0x6bf5, 0x1957,
-  0x6bf6, 0x386e,
-  0x6bf9, 0x1958,
-  0x6bfa, 0x3871,
-  0x6bfd, 0x1956,
-  0x6bfe, 0x3874,
-  0x6bff, 0x24c0,
-  0x6c00, 0x3875,
-  0x6c05, 0x1959,
-  0x6c06, 0x195b,
-  0x6c07, 0x195a,
-  0x6c08, 0x226d,
-  0x6c09, 0x387a,
-  0x6c0c, 0x24c1,
-  0x6c0d, 0x195c,
-  0x6c0e, 0x387d,
-  0x6c0f, 0x0d66,
-  0x6c10, 0x126b,
-  0x6c11, 0x0af6,
-  0x6c12, 0x387e,
-  0x6c13, 0x0aaa,
-  0x6c14, 0x0c17,
-  0x6c15, 0x195d,
-  0x6c16, 0x0b2d,
-  0x6c17, 0x387f,
-  0x6c18, 0x195e,
-  0x6c1b, 0x0672,
-  0x6c1c, 0x3880,
-  0x6c1f, 0x0697,
-  0x6c20, 0x3883,
-  0x6c21, 0x1961,
-  0x6c22, 0x0c5f,
-  0x6c23, 0x20ca,
-  0x6c24, 0x1963,
-  0x6c25, 0x3884,
-  0x6c26, 0x075b,
-  0x6c27, 0x101e,
-  0x6c28, 0x03bc,
-  0x6c29, 0x1962,
-  0x6c2a, 0x1964,
-  0x6c2b, 0x20e7,
-  0x6c2c, 0x24c2,
-  0x6c2d, 0x3885,
-  0x6c2e, 0x058b,
-  0x6c2f, 0x0a6f,
-  0x6c30, 0x0c65,
-  0x6c31, 0x3886,
-  0x6c32, 0x1965,
-  0x6c33, 0x3887,
-  0x6c34, 0x0da3,
-  0x6c35, 0x169f,
-  0x6c36, 0x3888,
-  0x6c38, 0x10a5,
-  0x6c39, 0x388a,
-  0x6c3d, 0x12ef,
-  0x6c3e, 0x388e,
-  0x6c40, 0x0e52,
-  0x6c41, 0x11ac,
-  0x6c42, 0x0c70,
-  0x6c43, 0x3890,
-  0x6c46, 0x12f4,
-  0x6c47, 0x07f8,
-  0x6c48, 0x3893,
-  0x6c49, 0x0771,
-  0x6c4a, 0x16a2,
-  0x6c4b, 0x3894,
-  0x6c50, 0x0f18,
-  0x6c51, 0x3899,
-  0x6c54, 0x16a0,
-  0x6c55, 0x0d00,
-  0x6c56, 0x389c,
-  0x6c57, 0x0770,
-  0x6c58, 0x389d,
-  0x6c5b, 0x0fdd,
-  0x6c5c, 0x16a1,
-  0x6c5d, 0x0cc5,
-  0x6c5e, 0x0708,
-  0x6c5f, 0x087e,
-  0x6c60, 0x04fd,
-  0x6c61, 0x0eea,
-  0x6c62, 0x38a0,
-  0x6c64, 0x0e13,
-  0x6c65, 0x38a2,
-  0x6c68, 0x16a8,
-  0x6c6a, 0x0ea5,
-  0x6c6b, 0x38a5,
-  0x6c70, 0x0e00,
-  0x6c71, 0x38aa,
-  0x6c72, 0x0826,
-  0x6c73, 0x38ab,
-  0x6c74, 0x16aa,
-  0x6c75, 0x38ac,
-  0x6c76, 0x16ab,
-  0x6c77, 0x38ad,
-  0x6c79, 0x0fa5,
-  0x6c7a, 0x38af,
-  0x6c7d, 0x0c1a,
-  0x6c7e, 0x0677,
-  0x6c7f, 0x38b2,
-  0x6c81, 0x0c5c,
-  0x6c82, 0x1051,
-  0x6c83, 0x0ee5,
-  0x6c84, 0x38b4,
-  0x6c85, 0x16a4,
-  0x6c86, 0x16ac,
-  0x6c87, 0x38b5,
-  0x6c88, 0x0d2b,
-  0x6c89, 0x04e6,
-  0x6c8a, 0x38b6,
-  0x6c8c, 0x16a7,
-  0x6c8d, 0x38b8,
-  0x6c8f, 0x0c02,
-  0x6c90, 0x16a5,
-  0x6c91, 0x38ba,
-  0x6c93, 0x1a1f,
-  0x6c94, 0x16a6,
-  0x6c95, 0x38bc,
-  0x6c99, 0x0cec,
-  0x6c9a, 0x38c0,
-  0x6c9b, 0x0ba7,
-  0x6c9c, 0x38c1,
-  0x6c9f, 0x070e,
-  0x6ca0, 0x38c4,
-  0x6ca1, 0x0ac0,
-  0x6ca2, 0x38c5,
-  0x6ca3, 0x16a3,
-  0x6ca4, 0x0b7e,
-  0x6ca5, 0x09ed,
-  0x6ca6, 0x0a80,
-  0x6ca7, 0x049e,
-  0x6ca8, 0x38c6,
-  0x6ca9, 0x16ad,
-  0x6caa, 0x07bb,
-  0x6cab, 0x0b10,
-  0x6cac, 0x38c7,
-  0x6cad, 0x16b0,
-  0x6cae, 0x0909,
-  0x6caf, 0x38c8,
-  0x6cb1, 0x16bb,
-  0x6cb2, 0x16b5,
-  0x6cb3, 0x078a,
-  0x6cb4, 0x38ca,
-  0x6cb8, 0x066d,
-  0x6cb9, 0x10b2,
-  0x6cba, 0x38ce,
-  0x6cbb, 0x11cd,
-  0x6cbc, 0x1174,
-  0x6cbd, 0x071a,
-  0x6cbe, 0x1155,
-  0x6cbf, 0x1001,
-  0x6cc0, 0x38cf,
-  0x6cc4, 0x0f84,
-  0x6cc5, 0x0c73,
-  0x6cc6, 0x38d3,
-  0x6cc9, 0x0c85,
-  0x6cca, 0x047b,
-  0x6ccb, 0x38d6,
-  0x6ccc, 0x0adf,
-  0x6ccd, 0x38d7,
-  0x6cd0, 0x16ae,
-  0x6cd1, 0x38da,
-  0x6cd3, 0x16bc,
-  0x6cd4, 0x16af,
-  0x6cd5, 0x0645,
-  0x6cd6, 0x16b7,
-  0x6cd7, 0x16b4,
-  0x6cd8, 0x38dc,
-  0x6cdb, 0x0657,
-  0x6cdc, 0x38df,
-  0x6cde, 0x0b63,
-  0x6cdf, 0x38e1,
-  0x6ce0, 0x16b6,
-  0x6ce1, 0x0b9e,
-  0x6ce2, 0x046f,
-  0x6ce3, 0x0c1b,
-  0x6ce4, 0x38e2,
-  0x6ce5, 0x0b43,
-  0x6ce6, 0x38e3,
-  0x6ce8, 0x11ff,
-  0x6ce9, 0x38e5,
-  0x6cea, 0x09cc,
-  0x6ceb, 0x16b9,
-  0x6cec, 0x38e6,
-  0x6cee, 0x16ba,
-  0x6cef, 0x16bd,
-  0x6cf0, 0x0dfc,
-  0x6cf1, 0x16b3,
-  0x6cf2, 0x38e8,
-  0x6cf3, 0x10a3,
-  0x6cf4, 0x38e9,
-  0x6cf5, 0x042c,
-  0x6cf6, 0x1a20,
-  0x6cf7, 0x16b1,
-  0x6cf9, 0x38ea,
-  0x6cfa, 0x16b8,
-  0x6cfb, 0x0f85,
-  0x6cfc, 0x0be2,
-  0x6cfd, 0x1136,
-  0x6cfe, 0x16be,
-  0x6cff, 0x38eb,
-  0x6d00, 0x38ec,
-  0x6d01, 0x08b1,
-  0x6d02, 0x38ed,
-  0x6d04, 0x16c5,
-  0x6d05, 0x38ef,
-  0x6d07, 0x16c4,
-  0x6d08, 0x38f1,
-  0x6d0b, 0x101c,
-  0x6d0c, 0x16c1,
-  0x6d0d, 0x38f4,
-  0x6d0e, 0x16c7,
-  0x6d0f, 0x38f5,
-  0x6d12, 0x0cd2,
-  0x6d13, 0x38f8,
-  0x6d17, 0x0f21,
-  0x6d18, 0x38fc,
-  0x6d19, 0x16c6,
-  0x6d1a, 0x16cc,
-  0x6d1b, 0x0a8c,
-  0x6d1c, 0x38fd,
-  0x6d1e, 0x05f3,
-  0x6d1f, 0x38ff,
-  0x6d25, 0x08c3,
-  0x6d26, 0x3905,
-  0x6d27, 0x16c0,
-  0x6d28, 0x3906,
-  0x6d2a, 0x07a0,
-  0x6d2b, 0x16c8,
-  0x6d2c, 0x3908,
-  0x6d2e, 0x16ca,
-  0x6d2f, 0x390a,
-  0x6d31, 0x063c,
-  0x6d32, 0x11dd,
-  0x6d33, 0x16d0,
-  0x6d34, 0x390c,
-  0x6d35, 0x16cb,
-  0x6d36, 0x390d,
-  0x6d39, 0x16bf,
-  0x6d3a, 0x3910,
-  0x6d3b, 0x0803,
-  0x6d3c, 0x0e8e,
-  0x6d3d, 0x0c1f,
-  0x6d3e, 0x0b8a,
-  0x6d3f, 0x3911,
-  0x6d41, 0x0a40,
-  0x6d42, 0x3913,
-  0x6d43, 0x16c2,
-  0x6d44, 0x3914,
-  0x6d45, 0x0c30,
-  0x6d46, 0x087d,
-  0x6d47, 0x088e,
-  0x6d48, 0x16c3,
-  0x6d49, 0x3915,
-  0x6d4a, 0x1224,
-  0x6d4b, 0x04a9,
-  0x6d4c, 0x3916,
-  0x6d4d, 0x16c9,
-  0x6d4e, 0x0836,
-  0x6d4f, 0x16cd,
-  0x6d50, 0x3917,
-  0x6d51, 0x0800,
-  0x6d52, 0x16ce,
-  0x6d53, 0x0b69,
-  0x6d54, 0x16cf,
-  0x6d55, 0x3918,
-  0x6d59, 0x1184,
-  0x6d5a, 0x0930,
-  0x6d5b, 0x391c,
-  0x6d5c, 0x16d8,
-  0x6d5d, 0x391d,
-  0x6d5e, 0x16d5,
-  0x6d5f, 0x391e,
-  0x6d60, 0x16d9,
-  0x6d61, 0x391f,
-  0x6d63, 0x16db,
-  0x6d64, 0x3921,
-  0x6d66, 0x0bf5,
-  0x6d67, 0x3923,
-  0x6d69, 0x077d,
-  0x6d6a, 0x09b6,
-  0x6d6b, 0x3925,
-  0x6d6e, 0x069c,
-  0x6d6f, 0x16d2,
-  0x6d70, 0x3928,
-  0x6d74, 0x10e4,
-  0x6d75, 0x392c,
-  0x6d77, 0x075a,
-  0x6d78, 0x08cf,
-  0x6d79, 0x23dc,
-  0x6d7a, 0x392e,
-  0x6d7c, 0x16da,
-  0x6d7d, 0x3930,
-  0x6d82, 0x0e70,
-  0x6d83, 0x3935,
-  0x6d85, 0x0b5c,
-  0x6d86, 0x3937,
-  0x6d87, 0x23db,
-  0x6d88, 0x0f68,
-  0x6d89, 0x0d1f,
-  0x6d8a, 0x3938,
-  0x6d8c, 0x10a4,
-  0x6d8d, 0x393a,
-  0x6d8e, 0x0f3e,
-  0x6d8f, 0x393b,
-  0x6d91, 0x16d1,
-  0x6d92, 0x393d,
-  0x6d93, 0x16d6,
-  0x6d95, 0x0e3c,
-  0x6d96, 0x393e,
-  0x6d9b, 0x0e21,
-  0x6d9c, 0x3943,
-  0x6d9d, 0x09bf,
-  0x6d9e, 0x16d3,
-  0x6d9f, 0x09f9,
-  0x6da0, 0x16d4,
-  0x6da1, 0x0edf,
-  0x6da2, 0x3944,
-  0x6da3, 0x07d6,
-  0x6da4, 0x05b4,
-  0x6da5, 0x3945,
-  0x6da6, 0x0cce,
-  0x6da7, 0x0878,
-  0x6da8, 0x1168,
-  0x6da9, 0x0ce5,
-  0x6daa, 0x069d,
-  0x6dab, 0x16e8,
-  0x6dac, 0x3946,
-  0x6dae, 0x16ea,
-  0x6daf, 0x0fed,
-  0x6db0, 0x3948,
-  0x6db2, 0x1041,
-  0x6db3, 0x394a,
-  0x6db5, 0x0764,
-  0x6db6, 0x394c,
-  0x6db8, 0x078b,
-  0x6db9, 0x394e,
-  0x6dbf, 0x16e1,
-  0x6dc0, 0x05ce,
-  0x6dc1, 0x3954,
-  0x6dc4, 0x122a,
-  0x6dc5, 0x16de,
-  0x6dc6, 0x0f6a,
-  0x6dc7, 0x16dd,
-  0x6dc8, 0x3957,
-  0x6dcb, 0x0a25,
-  0x6dcc, 0x0e1d,
-  0x6dcd, 0x395a,
-  0x6dd1, 0x0d7e,
-  0x6dd2, 0x395e,
-  0x6dd6, 0x0b3a,
-  0x6dd7, 0x3962,
-  0x6dd8, 0x0e27,
-  0x6dd9, 0x16e6,
-  0x6dda, 0x3963,
-  0x6ddd, 0x16e5,
-  0x6dde, 0x16df,
-  0x6ddf, 0x3966,
-  0x6de0, 0x16e2,
-  0x6de1, 0x058e,
-  0x6de2, 0x3967,
-  0x6de4, 0x10be,
-  0x6de5, 0x3969,
-  0x6de6, 0x16e4,
-  0x6de7, 0x396a,
-  0x6dea, 0x205e,
-  0x6deb, 0x1080,
-  0x6dec, 0x0566,
-  0x6ded, 0x396d,
-  0x6dee, 0x07c9,
-  0x6def, 0x396e,
-  0x6df1, 0x0d27,
-  0x6df2, 0x3970,
-  0x6df3, 0x0541,
-  0x6df4, 0x3971,
-  0x6df5, 0x2244,
-  0x6df6, 0x23e2,
-  0x6df7, 0x0801,
-  0x6df8, 0x3972,
-  0x6df9, 0x0ff6,
-  0x6dfa, 0x20d4,
-  0x6dfb, 0x0e40,
-  0x6dfc, 0x1a21,
-  0x6dfd, 0x3973,
-  0x6e00, 0x3976,
-  0x6e05, 0x0c62,
-  0x6e06, 0x397b,
-  0x6e0a, 0x10eb,
-  0x6e0b, 0x397f,
-  0x6e0c, 0x16e9,
-  0x6e0d, 0x1232,
-  0x6e0e, 0x16e0,
-  0x6e0f, 0x3980,
-  0x6e10, 0x0876,
-  0x6e11, 0x16e3,
-  0x6e12, 0x3981,
-  0x6e14, 0x10cb,
-  0x6e15, 0x3983,
-  0x6e16, 0x16e7,
-  0x6e17, 0x0d31,
-  0x6e18, 0x3984,
-  0x6e1a, 0x16dc,
-  0x6e1b, 0x3986,
-  0x6e1d, 0x10ca,
-  0x6e1e, 0x3988,
-  0x6e20, 0x0c7b,
-  0x6e21, 0x0608,
-  0x6e22, 0x398a,
-  0x6e23, 0x113f,
-  0x6e24, 0x047a,
-  0x6e25, 0x16f5,
-  0x6e26, 0x219f,
-  0x6e27, 0x398b,
-  0x6e29, 0x0ed1,
-  0x6e2a, 0x398d,
-  0x6e2b, 0x16eb,
-  0x6e2c, 0x1e66,
-  0x6e2d, 0x0ecb,
-  0x6e2e, 0x398e,
-  0x6e2f, 0x06d6,
-  0x6e30, 0x398f,
-  0x6e32, 0x16f4,
-  0x6e33, 0x3991,
-  0x6e34, 0x0957,
-  0x6e35, 0x3992,
-  0x6e38, 0x10b3,
-  0x6e39, 0x3995,
-  0x6e3a, 0x0af1,
-  0x6e3b, 0x3996,
-  0x6e3e, 0x1f63,
-  0x6e3f, 0x3999,
-  0x6e43, 0x0b89,
-  0x6e44, 0x16f6,
-  0x6e45, 0x399d,
-  0x6e4d, 0x0e75,
-  0x6e4e, 0x16ed,
-  0x6e4f, 0x39a5,
-  0x6e53, 0x16f2,
-  0x6e55, 0x39a9,
-  0x6e56, 0x07b5,
-  0x6e57, 0x39aa,
-  0x6e58, 0x0f53,
-  0x6e59, 0x39ab,
-  0x6e5b, 0x1160,
-  0x6e5c, 0x39ad,
-  0x6e5e, 0x23dd,
-  0x6e5f, 0x16f0,
-  0x6e60, 0x39af,
-  0x6e6b, 0x16ee,
-  0x6e6c, 0x39ba,
-  0x6e6e, 0x16ec,
-  0x6e6f, 0x216b,
-  0x6e70, 0x39bc,
-  0x6e7e, 0x0e96,
-  0x6e7f, 0x0d41,
-  0x6e80, 0x39ca,
-  0x6e83, 0x098e,
-  0x6e84, 0x39cd,
-  0x6e85, 0x0877,
-  0x6e86, 0x16f1,
-  0x6e87, 0x39ce,
-  0x6e89, 0x06c3,
-  0x6e8a, 0x39d0,
-  0x6e8f, 0x1705,
-  0x6e90, 0x10f7,
-  0x6e91, 0x39d5,
-  0x6e96, 0x22b5,
-  0x6e97, 0x39da,
-  0x6e98, 0x16f9,
-  0x6e99, 0x39db,
-  0x6e9c, 0x0a38,
-  0x6e9d, 0x1f26,
-  0x6e9e, 0x39de,
-  0x6e9f, 0x1707,
-  0x6ea0, 0x39df,
-  0x6ea2, 0x106e,
-  0x6ea3, 0x39e1,
-  0x6ea5, 0x16fd,
-  0x6ea6, 0x39e3,
-  0x6ea7, 0x16fe,
-  0x6ea8, 0x39e4,
-  0x6eaa, 0x0f17,
-  0x6eab, 0x39e6,
-  0x6eaf, 0x0dd2,
-  0x6eb0, 0x39ea,
-  0x6eb1, 0x16f8,
-  0x6eb2, 0x16ef,
-  0x6eb3, 0x39eb,
-  0x6eb4, 0x1703,
-  0x6eb5, 0x39ec,
-  0x6eb6, 0x0cb7,
-  0x6eb7, 0x1701,
-  0x6eb8, 0x39ed,
-  0x6eba, 0x0b4a,
-  0x6ebb, 0x1700,
-  0x6ebc, 0x39ef,
-  0x6ebd, 0x16ff,
-  0x6ebe, 0x39f0,
-  0x6ec1, 0x0521,
-  0x6ec2, 0x1706,
-  0x6ec3, 0x39f3,
-  0x6ec4, 0x1e63,
-  0x6ec5, 0x2088,
-  0x6ec6, 0x39f4,
-  0x6ec7, 0x05c2,
-  0x6ec8, 0x39f5,
-  0x6ecb, 0x1229,
-  0x6ecc, 0x1ebd,
-  0x6ecd, 0x39f8,
-  0x6ece, 0x2341,
-  0x6ecf, 0x1704,
-  0x6ed0, 0x39f9,
-  0x6ed1, 0x07c1,
-  0x6ed2, 0x39fa,
-  0x6ed3, 0x122f,
-  0x6ed4, 0x0e22,
-  0x6ed5, 0x19a8,
-  0x6ed6, 0x39fb,
-  0x6ed7, 0x1702,
-  0x6ed8, 0x39fc,
-  0x6eda, 0x074f,
-  0x6edb, 0x39fe,
-  0x6ede, 0x11cc,
-  0x6edf, 0x16f7,
-  0x6ee0, 0x16fa,
-  0x6ee1, 0x0aa1,
-  0x6ee2, 0x16fc,
-  0x6ee3, 0x3a01,
-  0x6ee4, 0x0a72,
-  0x6ee5, 0x09af,
-  0x6ee6, 0x0a77,
-  0x6ee7, 0x3a02,
-  0x6ee8, 0x045e,
-  0x6ee9, 0x0e05,
-  0x6eea, 0x3a03,
-  0x6eec, 0x1f4b,
-  0x6eed, 0x3a05,
-  0x6eef, 0x2292,
-  0x6ef0, 0x3a07,
-  0x6ef2, 0x2124,
-  0x6ef3, 0x3a09,
-  0x6ef4, 0x05af,
-  0x6ef5, 0x3a0a,
-  0x6ef7, 0x2048,
-  0x6ef8, 0x23e0,
-  0x6ef9, 0x170d,
-  0x6efa, 0x3a0c,
-  0x6eff, 0x2077,
-  0x6f00, 0x3a11,
-  0x6f01, 0x223a,
-  0x6f02, 0x0bce,
-  0x6f03, 0x3a12,
-  0x6f06, 0x0c00,
-  0x6f07, 0x3a15,
-  0x6f09, 0x1713,
-  0x6f0a, 0x3a17,
-  0x6f0f, 0x0a50,
-  0x6f10, 0x3a1c,
-  0x6f13, 0x09d7,
-  0x6f14, 0x1006,
-  0x6f15, 0x170c,
-  0x6f16, 0x3a1f,
-  0x6f1a, 0x20b1,
-  0x6f1b, 0x3a23,
-  0x6f20, 0x0b11,
-  0x6f21, 0x3a28,
-  0x6f22, 0x1f41,
-  0x6f23, 0x201c,
-  0x6f24, 0x170b,
-  0x6f25, 0x3a29,
-  0x6f29, 0x1714,
-  0x6f2a, 0x1712,
-  0x6f2b, 0x0aa5,
-  0x6f2c, 0x22b8,
-  0x6f2d, 0x16fb,
-  0x6f2e, 0x3a2d,
-  0x6f2f, 0x170e,
-  0x6f30, 0x3a2e,
-  0x6f31, 0x0d95,
-  0x6f32, 0x2276,
-  0x6f33, 0x1165,
-  0x6f34, 0x3a2f,
-  0x6f36, 0x170f,
-  0x6f37, 0x3a31,
-  0x6f38, 0x1f9b,
-  0x6f39, 0x3a32,
-  0x6f3e, 0x1023,
-  0x6f3f, 0x1f9f,
-  0x6f40, 0x3a37,
-  0x6f41, 0x25ca,
-  0x6f42, 0x3a38,
-  0x6f46, 0x1709,
-  0x6f48, 0x3a3c,
-  0x6f4b, 0x1710,
-  0x6f4c, 0x3a3f,
-  0x6f4d, 0x0eba,
-  0x6f4e, 0x3a40,
-  0x6f51, 0x20be,
-  0x6f52, 0x3a43,
-  0x6f54, 0x1fb4,
-  0x6f55, 0x3a45,
-  0x6f58, 0x0b8c,
-  0x6f59, 0x23d7,
-  0x6f5a, 0x3a48,
-  0x6f5c, 0x0c2e,
-  0x6f5d, 0x3a4a,
-  0x6f5e, 0x0a61,
-  0x6f5f, 0x3a4b,
-  0x6f62, 0x1708,
-  0x6f63, 0x3a4e,
-  0x6f64, 0x2105,
-  0x6f65, 0x3a4f,
-  0x6f66, 0x0a13,
-  0x6f67, 0x3a50,
-  0x6f6d, 0x0e09,
-  0x6f6e, 0x04d6,
-  0x6f6f, 0x23e1,
-  0x6f70, 0x1fec,
-  0x6f71, 0x3a56,
-  0x6f72, 0x1719,
-  0x6f73, 0x3a57,
-  0x6f74, 0x1711,
-  0x6f75, 0x3a58,
-  0x6f77, 0x23ea,
-  0x6f78, 0x1718,
-  0x6f79, 0x3a5a,
-  0x6f7a, 0x171b,
-  0x6f7b, 0x3a5b,
-  0x6f7c, 0x171a,
-  0x6f7d, 0x3a5c,
-  0x6f7f, 0x23e3,
-  0x6f80, 0x210e,
-  0x6f81, 0x3a5e,
-  0x6f84, 0x04f3,
-  0x6f85, 0x3a61,
-  0x6f86, 0x1fa6,
-  0x6f87, 0x2004,
-  0x6f88, 0x04df,
-  0x6f89, 0x1715,
-  0x6f8a, 0x3a62,
-  0x6f8c, 0x1717,
-  0x6f8d, 0x1716,
-  0x6f8e, 0x0bad,
-  0x6f8f, 0x3a64,
-  0x6f97, 0x1f9d,
-  0x6f98, 0x3a6c,
-  0x6f9c, 0x09a8,
-  0x6f9d, 0x3a70,
-  0x6fa0, 0x23e5,
-  0x6fa1, 0x112b,
-  0x6fa2, 0x3a73,
-  0x6fa4, 0x2264,
-  0x6fa5, 0x3a75,
-  0x6fa7, 0x171e,
-  0x6fa8, 0x3a77,
-  0x6fa9, 0x24e2,
-  0x6faa, 0x3a78,
-  0x6fae, 0x23de,
-  0x6faf, 0x3a7c,
-  0x6fb1, 0x1ec4,
-  0x6fb2, 0x3a7e,
-  0x6fb3, 0x03cf,
-  0x6fb4, 0x3a7f,
-  0x6fb6, 0x1720,
-  0x6fb7, 0x3a81,
-  0x6fb9, 0x171f,
-  0x6fba, 0x3a83,
-  0x6fc0, 0x0817,
-  0x6fc1, 0x22b6,
-  0x6fc2, 0x1721,
-  0x6fc3, 0x20a9,
-  0x6fc4, 0x3a89,
-  0x6fc9, 0x171d,
-  0x6fca, 0x3a8e,
-  0x6fd1, 0x171c,
-  0x6fd2, 0x045d,
-  0x6fd3, 0x3a95,
-  0x6fd5, 0x212b,
-  0x6fd6, 0x3a97,
-  0x6fd8, 0x20a5,
-  0x6fd9, 0x3a99,
-  0x6fdb, 0x268b,
-  0x6fdc, 0x3a9b,
-  0x6fde, 0x1724,
-  0x6fdf, 0x1f76,
-  0x6fe0, 0x1725,
-  0x6fe1, 0x1722,
-  0x6fe2, 0x3a9d,
-  0x6fe4, 0x216d,
-  0x6fe5, 0x3a9f,
-  0x6feb, 0x2001,
-  0x6fec, 0x3aa5,
-  0x6fee, 0x1723,
-  0x6fef, 0x1726,
-  0x6ff0, 0x2191,
-  0x6ff1, 0x1e50,
-  0x6ff2, 0x3aa7,
-  0x6ffa, 0x1f9c,
-  0x6ffb, 0x3aaf,
-  0x6ffc, 0x23da,
-  0x6ffd, 0x3ab0,
-  0x6ffe, 0x2053,
-  0x6fff, 0x3ab1,
-  0x7000, 0x3ab2,
-  0x7005, 0x23e9,
-  0x7006, 0x23e4,
-  0x7007, 0x3ab7,
-  0x7009, 0x21d5,
-  0x700a, 0x3ab9,
-  0x700b, 0x23e6,
-  0x700c, 0x3aba,
-  0x700f, 0x23df,
-  0x7010, 0x3abd,
-  0x7011, 0x0bf8,
-  0x7012, 0x3abe,
-  0x7015, 0x1e4f,
-  0x7016, 0x3ac1,
-  0x7018, 0x23d9,
-  0x7019, 0x3ac3,
-  0x701a, 0x1727,
-  0x701b, 0x1729,
-  0x701c, 0x3ac4,
-  0x701d, 0x2014,
-  0x701e, 0x3ac5,
-  0x701f, 0x23ec,
-  0x7020, 0x23eb,
-  0x7021, 0x3ac6,
-  0x7023, 0x1728,
-  0x7024, 0x3ac8,
-  0x7027, 0x23d8,
-  0x7028, 0x23ee,
-  0x7029, 0x3acb,
-  0x7030, 0x268e,
-  0x7031, 0x3ad2,
-  0x7032, 0x23ed,
-  0x7033, 0x3ad3,
-  0x7035, 0x172b,
-  0x7036, 0x3ad5,
-  0x7039, 0x172a,
-  0x703a, 0x3ad8,
-  0x703e, 0x1ffa,
-  0x703f, 0x3adc,
-  0x7043, 0x23d6,
-  0x7044, 0x23e8,
-  0x7045, 0x3ae0,
-  0x704c, 0x0739,
-  0x704d, 0x3ae7,
-  0x704f, 0x172c,
-  0x7050, 0x3ae9,
-  0x7051, 0x2106,
-  0x7052, 0x3aea,
-  0x7055, 0x200b,
-  0x7056, 0x3aed,
-  0x7058, 0x2166,
-  0x7059, 0x3aef,
-  0x705d, 0x23ef,
-  0x705e, 0x172d,
-  0x705f, 0x3af3,
-  0x7063, 0x2189,
-  0x7064, 0x2058,
-  0x7065, 0x3af7,
-  0x7067, 0x23e7,
-  0x7068, 0x3af9,
-  0x706b, 0x0805,
-  0x706c, 0x19ef,
-  0x706d, 0x0af5,
-  0x706e, 0x3afc,
-  0x706f, 0x05a7,
-  0x7070, 0x07e7,
-  0x7071, 0x3afd,
-  0x7075, 0x0a32,
-  0x7076, 0x1131,
-  0x7077, 0x3b01,
-  0x7078, 0x08f3,
-  0x7079, 0x3b02,
-  0x707c, 0x1223,
-  0x707d, 0x3b05,
-  0x707e, 0x1119,
-  0x707f, 0x049a,
-  0x7080, 0x19cc,
-  0x7081, 0x3b06,
-  0x7085, 0x1913,
-  0x7086, 0x3b0a,
-  0x7089, 0x0a56,
-  0x708a, 0x0539,
-  0x708b, 0x3b0d,
-  0x708e, 0x1000,
-  0x708f, 0x3b10,
-  0x7092, 0x04d9,
-  0x7093, 0x3b13,
-  0x7094, 0x0c8d,
-  0x7095, 0x0948,
-  0x7096, 0x19ce,
-  0x7097, 0x3b14,
-  0x7099, 0x11ca,
-  0x709a, 0x3b16,
-  0x709c, 0x19cd,
-  0x709d, 0x19cf,
-  0x709e, 0x3b18,
-  0x70ab, 0x19d3,
-  0x70ac, 0x0915,
-  0x70ad, 0x0e12,
-  0x70ae, 0x0b9b,
-  0x70af, 0x08eb,
-  0x70b0, 0x3b25,
-  0x70b1, 0x19d4,
-  0x70b2, 0x3b26,
-  0x70b3, 0x0467,
-  0x70b4, 0x3b27,
-  0x70b7, 0x19d2,
-  0x70b8, 0x1149,
-  0x70b9, 0x05c4,
-  0x70ba, 0x3b2a,
-  0x70bb, 0x19d0,
-  0x70bc, 0x09ff,
-  0x70bd, 0x0508,
-  0x70be, 0x3b2b,
-  0x70c0, 0x19d1,
-  0x70c1, 0x0dad,
-  0x70c2, 0x09ae,
-  0x70c3, 0x0e51,
-  0x70c4, 0x3b2d,
-  0x70c8, 0x0a1b,
-  0x70c9, 0x3b31,
-  0x70ca, 0x19d6,
-  0x70cb, 0x3b32,
-  0x70cf, 0x21a3,
-  0x70d0, 0x3b36,
-  0x70d8, 0x079d,
-  0x70d9, 0x09be,
-  0x70da, 0x3b3e,
-  0x70db, 0x11f1,
-  0x70dc, 0x3b3f,
-  0x70df, 0x0ff5,
-  0x70e0, 0x3b42,
-  0x70e4, 0x094b,
-  0x70e5, 0x3b46,
-  0x70e6, 0x0650,
-  0x70e7, 0x0d0e,
-  0x70e8, 0x19d5,
-  0x70e9, 0x07f7,
-  0x70ea, 0x3b47,
-  0x70eb, 0x0e1f,
-  0x70ec, 0x08ce,
-  0x70ed, 0x0ca3,
-  0x70ee, 0x3b48,
-  0x70ef, 0x0f16,
-  0x70f0, 0x3b49,
-  0x70f4, 0x217a,
-  0x70f5, 0x3b4d,
-  0x70f7, 0x0e9a,
-  0x70f8, 0x3b4f,
-  0x70f9, 0x0bac,
-  0x70fa, 0x3b50,
-  0x70fd, 0x0686,
-  0x70fe, 0x3b53,
-  0x7100, 0x3b55,
-  0x7109, 0x0ff2,
-  0x710a, 0x076f,
-  0x710b, 0x3b5e,
-  0x7110, 0x19d7,
-  0x7111, 0x3b63,
-  0x7113, 0x19d8,
-  0x7114, 0x3b65,
-  0x7115, 0x07d5,
-  0x7116, 0x19d9,
-  0x7117, 0x3b66,
-  0x7118, 0x19f0,
-  0x7119, 0x0423,
-  0x711a, 0x0676,
-  0x711b, 0x3b67,
-  0x7121, 0x21a5,
-  0x7122, 0x3b6d,
-  0x7126, 0x088a,
-  0x7127, 0x3b71,
-  0x712f, 0x19da,
-  0x7130, 0x100f,
-  0x7131, 0x19db,
-  0x7132, 0x3b79,
-  0x7136, 0x0c96,
-  0x7137, 0x3b7d,
-  0x7145, 0x19df,
-  0x7146, 0x3b8b,
-  0x7149, 0x2022,
-  0x714a, 0x19e1,
-  0x714b, 0x3b8e,
-  0x714c, 0x07e2,
-  0x714d, 0x3b8f,
-  0x714e, 0x0858,
-  0x714f, 0x3b90,
-  0x7152, 0x24d6,
-  0x7153, 0x3b93,
-  0x715c, 0x19dd,
-  0x715d, 0x3b9c,
-  0x715e, 0x0cf0,
-  0x715f, 0x3b9d,
-  0x7162, 0x233a,
-  0x7163, 0x3ba0,
-  0x7164, 0x0abf,
-  0x7165, 0x3ba1,
-  0x7166, 0x19f1,
-  0x7167, 0x1176,
-  0x7168, 0x19de,
-  0x7169, 0x1eee,
-  0x716a, 0x3ba2,
-  0x716c, 0x24d5,
-  0x716d, 0x3ba4,
-  0x716e, 0x11f2,
-  0x716f, 0x3ba5,
-  0x7172, 0x19e0,
-  0x7173, 0x19dc,
-  0x7174, 0x3ba8,
-  0x7178, 0x19e2,
-  0x7179, 0x3bac,
-  0x717a, 0x19e3,
-  0x717b, 0x3bad,
-  0x717d, 0x0cf8,
-  0x717e, 0x3baf,
-  0x7184, 0x0f15,
-  0x7185, 0x3bb5,
-  0x718a, 0x0fa7,
-  0x718b, 0x3bba,
-  0x718f, 0x0fd5,
-  0x7190, 0x3bbe,
-  0x7192, 0x2228,
-  0x7193, 0x3bc0,
-  0x7194, 0x0cb6,
-  0x7195, 0x3bc1,
-  0x7197, 0x24d7,
-  0x7198, 0x19e4,
-  0x7199, 0x0f04,
-  0x719a, 0x3bc3,
-  0x719f, 0x0d83,
-  0x71a0, 0x19e8,
-  0x71a1, 0x3bc8,
-  0x71a8, 0x19e7,
-  0x71a9, 0x3bcf,
-  0x71ac, 0x03c9,
-  0x71ad, 0x3bd2,
-  0x71b1, 0x20fc,
-  0x71b2, 0x3bd6,
-  0x71b3, 0x19e5,
-  0x71b4, 0x3bd7,
-  0x71b5, 0x19e6,
-  0x71b6, 0x3bd8,
-  0x71b9, 0x19f2,
-  0x71ba, 0x3bdb,
-  0x71be, 0x1e87,
-  0x71bf, 0x3bdf,
-  0x71c1, 0x24d8,
-  0x71c2, 0x3be1,
-  0x71c3, 0x0c97,
-  0x71c4, 0x3be2,
-  0x71c8, 0x1eba,
-  0x71c9, 0x3be6,
-  0x71ce, 0x0a10,
-  0x71cf, 0x3beb,
-  0x71d2, 0x2119,
-  0x71d3, 0x3bee,
-  0x71d4, 0x19ea,
-  0x71d5, 0x1009,
-  0x71d6, 0x3bef,
-  0x71d9, 0x216c,
-  0x71da, 0x3bf2,
-  0x71dc, 0x24d9,
-  0x71dd, 0x3bf4,
-  0x71df, 0x2227,
-  0x71e0, 0x19e9,
-  0x71e1, 0x3bf6,
-  0x71e5, 0x1132,
-  0x71e6, 0x1e5f,
-  0x71e7, 0x19eb,
-  0x71e8, 0x3bfa,
-  0x71ed, 0x229f,
-  0x71ee, 0x1396,
-  0x71ef, 0x3bff,
-  0x71f4, 0x1f5d,
-  0x71f5, 0x3c04,
-  0x71f9, 0x19ec,
-  0x71fa, 0x3c08,
-  0x71fc, 0x1fbc,
-  0x71fd, 0x3c0a,
-  0x71fe, 0x24da,
-  0x71ff, 0x3c0b,
-  0x7200, 0x3c0c,
-  0x7206, 0x0415,
-  0x7207, 0x3c12,
-  0x720d, 0x2149,
-  0x720e, 0x3c18,
-  0x7210, 0x2046,
-  0x7211, 0x3c1a,
-  0x721b, 0x2000,
-  0x721c, 0x3c24,
-  0x721d, 0x19ed,
-  0x721e, 0x3c25,
-  0x7228, 0x19ee,
-  0x7229, 0x3c2f,
-  0x722a, 0x1203,
-  0x722b, 0x3c30,
-  0x722c, 0x0b81,
-  0x722d, 0x3c31,
-  0x7230, 0x196c,
-  0x7231, 0x03b9,
-  0x7232, 0x2190,
-  0x7233, 0x3c34,
-  0x7235, 0x0923,
-  0x7236, 0x06b3,
-  0x7237, 0x1036,
-  0x7238, 0x03e1,
-  0x7239, 0x05da,
-  0x723a, 0x2208,
-  0x723b, 0x1269,
-  0x723c, 0x3c36,
-  0x723d, 0x0da1,
-  0x723e, 0x1ee6,
-  0x723f, 0x169d,
-  0x7240, 0x3c37,
-  0x7247, 0x0bcb,
-  0x7248, 0x03f1,
-  0x7249, 0x3c3e,
-  0x724c, 0x0b87,
-  0x724d, 0x1969,
-  0x724e, 0x3c41,
-  0x7252, 0x196a,
-  0x7253, 0x3c45,
-  0x7256, 0x196b,
-  0x7257, 0x3c48,
-  0x7258, 0x24c3,
-  0x7259, 0x0fe9,
-  0x725a, 0x3c49,
-  0x725b, 0x0b64,
-  0x725c, 0x3c4a,
-  0x725d, 0x1944,
-  0x725e, 0x3c4b,
-  0x725f, 0x0b15,
-  0x7260, 0x3c4c,
-  0x7261, 0x0b18,
-  0x7262, 0x09b9,
-  0x7263, 0x3c4d,
-  0x7266, 0x1945,
-  0x7267, 0x0b24,
-  0x7268, 0x3c50,
-  0x7269, 0x0efe,
-  0x726a, 0x3c51,
-  0x726e, 0x1942,
-  0x726f, 0x1946,
-  0x7270, 0x3c55,
-  0x7272, 0x0d35,
-  0x7273, 0x3c57,
-  0x7275, 0x0c20,
-  0x7276, 0x3c59,
-  0x7279, 0x0e2b,
-  0x727a, 0x0f0d,
-  0x727b, 0x3c5c,
-  0x727d, 0x20cc,
-  0x727e, 0x1947,
-  0x7280, 0x0f19,
-  0x7281, 0x09d2,
-  0x7282, 0x3c5e,
-  0x7284, 0x1949,
-  0x7285, 0x3c60,
-  0x728a, 0x05fe,
-  0x728b, 0x194a,
-  0x728c, 0x3c65,
-  0x728d, 0x194b,
-  0x728e, 0x3c66,
-  0x728f, 0x194c,
-  0x7290, 0x3c67,
-  0x7292, 0x194d,
-  0x7293, 0x3c69,
-  0x7296, 0x2340,
-  0x7297, 0x3c6c,
-  0x729f, 0x1943,
-  0x72a0, 0x3c74,
-  0x72a2, 0x1ed1,
-  0x72a3, 0x3c76,
-  0x72a7, 0x21ac,
-  0x72a8, 0x3c7a,
-  0x72ac, 0x0c89,
-  0x72ad, 0x15ef,
-  0x72ae, 0x3c7e,
-  0x72af, 0x0655,
-  0x72b0, 0x15f0,
-  0x72b1, 0x3c7f,
-  0x72b4, 0x15f1,
-  0x72b5, 0x3c82,
-  0x72b6, 0x1211,
-  0x72b7, 0x15f2,
-  0x72b9, 0x10b1,
-  0x72ba, 0x3c83,
-  0x72c0, 0x22af,
-  0x72c1, 0x15f5,
-  0x72c2, 0x097e,
-  0x72c3, 0x15f4,
-  0x72c4, 0x05b3,
-  0x72c5, 0x3c89,
-  0x72c8, 0x0420,
-  0x72c9, 0x3c8c,
-  0x72cd, 0x15f7,
-  0x72ce, 0x15f6,
-  0x72cf, 0x3c90,
-  0x72d0, 0x07b3,
-  0x72d1, 0x3c91,
-  0x72d2, 0x15f8,
-  0x72d3, 0x3c92,
-  0x72d7, 0x0710,
-  0x72d8, 0x3c96,
-  0x72d9, 0x0900,
-  0x72da, 0x3c97,
-  0x72de, 0x0b5f,
-  0x72df, 0x3c9b,
-  0x72e0, 0x0794,
-  0x72e1, 0x0897,
-  0x72e2, 0x3c9c,
-  0x72e8, 0x15f9,
-  0x72e9, 0x15fb,
-  0x72ea, 0x3ca2,
-  0x72ec, 0x05ff,
-  0x72ed, 0x0f2e,
-  0x72ee, 0x0d3f,
-  0x72ef, 0x15fa,
-  0x72f0, 0x1199,
-  0x72f1, 0x10e1,
-  0x72f2, 0x15fc,
-  0x72f3, 0x1600,
-  0x72f4, 0x15fd,
-  0x72f5, 0x3ca4,
-  0x72f7, 0x15fe,
-  0x72f8, 0x09d5,
-  0x72f9, 0x21b6,
-  0x72fa, 0x1602,
-  0x72fc, 0x09b2,
-  0x72fd, 0x1e3d,
-  0x72fe, 0x3ca6,
-  0x7300, 0x3ca8,
-  0x7301, 0x15ff,
-  0x7302, 0x3ca9,
-  0x7303, 0x1601,
-  0x7304, 0x3caa,
-  0x730a, 0x1607,
-  0x730b, 0x3cb0,
-  0x730e, 0x0a1d,
-  0x730f, 0x3cb3,
-  0x7313, 0x1605,
-  0x7314, 0x3cb7,
-  0x7315, 0x160a,
-  0x7316, 0x04c5,
-  0x7317, 0x1604,
-  0x7318, 0x3cb8,
-  0x731b, 0x0ad2,
-  0x731c, 0x0489,
-  0x731d, 0x1609,
-  0x731e, 0x1608,
-  0x731f, 0x3cbb,
-  0x7321, 0x1606,
-  0x7322, 0x160b,
-  0x7323, 0x3cbd,
-  0x7325, 0x160d,
-  0x7326, 0x3cbf,
-  0x7329, 0x0f94,
-  0x732a, 0x11ec,
-  0x732b, 0x0aad,
-  0x732c, 0x160e,
-  0x732d, 0x3cc2,
-  0x732e, 0x0f44,
-  0x732f, 0x3cc3,
-  0x7331, 0x1610,
-  0x7332, 0x3cc5,
-  0x7334, 0x07a6,
-  0x7335, 0x3cc7,
-  0x7336, 0x2235,
-  0x7337, 0x18d4,
-  0x7338, 0x160f,
-  0x7339, 0x160c,
-  0x733a, 0x3cc8,
-  0x733b, 0x2397,
-  0x733c, 0x3cc9,
-  0x733e, 0x07c0,
-  0x733f, 0x10f6,
-  0x7340, 0x3ccb,
-  0x7341, 0x2395,
-  0x7342, 0x3ccc,
-  0x7344, 0x223f,
-  0x7345, 0x212a,
-  0x7346, 0x3cce,
-  0x734d, 0x1612,
-  0x734e, 0x3cd5,
-  0x7350, 0x1611,
-  0x7351, 0x3cd7,
-  0x7352, 0x18d5,
-  0x7353, 0x3cd8,
-  0x7357, 0x1613,
-  0x7358, 0x3cdc,
-  0x7360, 0x1614,
-  0x7361, 0x3ce4,
-  0x7368, 0x1ed2,
-  0x7369, 0x3ceb,
-  0x736a, 0x2396,
-  0x736b, 0x2398,
-  0x736c, 0x1615,
-  0x736d, 0x0df4,
-  0x736e, 0x3cec,
-  0x736f, 0x1616,
-  0x7370, 0x20a2,
-  0x7371, 0x3ced,
-  0x7372, 0x1f64,
-  0x7373, 0x3cee,
-  0x7375, 0x202b,
-  0x7376, 0x3cf0,
-  0x7377, 0x2394,
-  0x7378, 0x2139,
-  0x7379, 0x3cf1,
-  0x737a, 0x215f,
-  0x737b, 0x21c1,
-  0x737c, 0x239a,
-  0x737d, 0x3cf2,
-  0x737e, 0x1617,
-  0x737f, 0x3cf3,
-  0x7380, 0x2399,
-  0x7381, 0x3cf4,
-  0x7384, 0x0fc9,
-  0x7385, 0x3cf7,
-  0x7387, 0x0a71,
-  0x7388, 0x3cf9,
-  0x7389, 0x10d6,
-  0x738a, 0x3cfa,
-  0x738b, 0x0ea6,
-  0x738c, 0x3cfb,
-  0x738e, 0x1818,
-  0x738f, 0x3cfd,
-  0x7391, 0x1819,
-  0x7392, 0x3cff,
-  0x7396, 0x08f0,
-  0x7397, 0x3d03,
-  0x739b, 0x0a91,
-  0x739c, 0x3d07,
-  0x739f, 0x181c,
-  0x73a0, 0x3d0a,
-  0x73a2, 0x181b,
-  0x73a3, 0x3d0c,
-  0x73a9, 0x0e97,
-  0x73aa, 0x3d12,
-  0x73ab, 0x0aba,
-  0x73ac, 0x3d13,
-  0x73ae, 0x181a,
-  0x73af, 0x07cc,
-  0x73b0, 0x0f43,
-  0x73b1, 0x3d15,
-  0x73b2, 0x0a2a,
-  0x73b3, 0x1821,
-  0x73b4, 0x3d16,
-  0x73b7, 0x1820,
-  0x73b8, 0x3d19,
-  0x73ba, 0x182c,
-  0x73bb, 0x046a,
-  0x73bc, 0x3d1b,
-  0x73c0, 0x1822,
-  0x73c1, 0x3d1f,
-  0x73c2, 0x181e,
-  0x73c3, 0x3d20,
-  0x73c8, 0x1824,
-  0x73c9, 0x1823,
-  0x73ca, 0x0cf3,
-  0x73cb, 0x3d25,
-  0x73cd, 0x1185,
-  0x73ce, 0x3d27,
-  0x73cf, 0x181d,
-  0x73d0, 0x0646,
-  0x73d1, 0x181f,
-  0x73d2, 0x3d28,
-  0x73d9, 0x1826,
-  0x73da, 0x3d2f,
-  0x73de, 0x182b,
-  0x73df, 0x3d33,
-  0x73e0, 0x11e8,
-  0x73e1, 0x3d34,
-  0x73e5, 0x1825,
-  0x73e6, 0x3d38,
-  0x73e7, 0x182a,
-  0x73e8, 0x3d39,
-  0x73e9, 0x1829,
-  0x73ea, 0x3d3a,
-  0x73ed, 0x03eb,
-  0x73ee, 0x3d3d,
-  0x73f2, 0x182d,
-  0x73f3, 0x3d41,
-  0x73fe, 0x21c0,
-  0x73ff, 0x3d4c,
-  0x7400, 0x3d4d,
-  0x7403, 0x0c6f,
-  0x7404, 0x3d50,
-  0x7405, 0x09b0,
-  0x7406, 0x09d8,
-  0x7407, 0x3d51,
-  0x7409, 0x0a39,
-  0x740a, 0x1828,
-  0x740b, 0x3d53,
-  0x740f, 0x182e,
-  0x7410, 0x0deb,
-  0x7411, 0x3d57,
-  0x741a, 0x1838,
-  0x741b, 0x1837,
-  0x741c, 0x3d60,
-  0x7422, 0x121e,
-  0x7423, 0x3d66,
-  0x7425, 0x1832,
-  0x7426, 0x1831,
-  0x7427, 0x3d68,
-  0x7428, 0x1833,
-  0x7429, 0x3d69,
-  0x742a, 0x182f,
-  0x742b, 0x3d6a,
-  0x742c, 0x1836,
-  0x742d, 0x3d6b,
-  0x742e, 0x1835,
-  0x742f, 0x3d6c,
-  0x7430, 0x1834,
-  0x7431, 0x3d6d,
-  0x7433, 0x0a1e,
-  0x7434, 0x0c56,
-  0x7435, 0x0bbe,
-  0x7436, 0x0b84,
-  0x7437, 0x3d6f,
-  0x743c, 0x0c6a,
-  0x743d, 0x3d74,
-  0x743f, 0x2460,
-  0x7440, 0x3d76,
-  0x7441, 0x1839,
-  0x7442, 0x3d77,
-  0x744b, 0x245c,
-  0x744c, 0x3d80,
-  0x7455, 0x183c,
-  0x7456, 0x3d89,
-  0x7457, 0x183b,
-  0x7458, 0x3d8a,
-  0x7459, 0x183d,
-  0x745a, 0x07ae,
-  0x745b, 0x1830,
-  0x745c, 0x183a,
-  0x745d, 0x3d8b,
-  0x745e, 0x0ccb,
-  0x745f, 0x0ce3,
-  0x7460, 0x3d8c,
-  0x7463, 0x215d,
-  0x7464, 0x3d8f,
-  0x7469, 0x2225,
-  0x746a, 0x206a,
-  0x746b, 0x3d94,
-  0x746d, 0x183f,
-  0x746e, 0x3d96,
-  0x7470, 0x073e,
-  0x7471, 0x3d98,
-  0x7476, 0x1027,
-  0x7477, 0x183e,
-  0x7478, 0x3d9d,
-  0x747e, 0x1840,
-  0x747f, 0x3da3,
-  0x7480, 0x1843,
-  0x7482, 0x3da4,
-  0x7483, 0x09f0,
-  0x7484, 0x3da5,
-  0x7487, 0x1845,
-  0x7488, 0x3da8,
-  0x7489, 0x2461,
-  0x748a, 0x3da9,
-  0x748b, 0x1846,
-  0x748c, 0x3daa,
-  0x748e, 0x1842,
-  0x748f, 0x3dac,
-  0x7490, 0x184a,
-  0x7491, 0x3dad,
-  0x749c, 0x1841,
-  0x749d, 0x3db8,
-  0x749e, 0x1847,
-  0x749f, 0x3db9,
-  0x74a3, 0x245b,
-  0x74a4, 0x3dbd,
-  0x74a6, 0x2462,
-  0x74a7, 0x184b,
-  0x74a8, 0x1848,
-  0x74aa, 0x3dbf,
-  0x74b0, 0x1f54,
-  0x74b1, 0x3dc5,
-  0x74ba, 0x184d,
-  0x74bb, 0x3dce,
-  0x74bd, 0x245f,
-  0x74be, 0x3dd0,
-  0x74ca, 0x20ec,
-  0x74cb, 0x3ddc,
-  0x74cf, 0x245d,
-  0x74d0, 0x3de0,
-  0x74d2, 0x184c,
-  0x74d3, 0x3de2,
-  0x74d4, 0x2463,
-  0x74d5, 0x3de3,
-  0x74da, 0x2464,
-  0x74db, 0x3de8,
-  0x74dc, 0x0728,
-  0x74dd, 0x3de9,
-  0x74de, 0x1b32,
-  0x74df, 0x3dea,
-  0x74e0, 0x1b33,
-  0x74e1, 0x3deb,
-  0x74e2, 0x0bcf,
-  0x74e3, 0x03f5,
-  0x74e4, 0x0c9a,
-  0x74e5, 0x3dec,
-  0x74e6, 0x0e90,
-  0x74e7, 0x3ded,
-  0x74ee, 0x0edc,
-  0x74ef, 0x1903,
-  0x74f0, 0x3df4,
-  0x74f4, 0x1904,
-  0x74f5, 0x3df8,
-  0x74f6, 0x0bde,
-  0x74f7, 0x054c,
-  0x74f8, 0x3df9,
-  0x74ff, 0x1905,
-  0x7500, 0x3e00,
-  0x7504, 0x1188,
-  0x7505, 0x3e04,
-  0x750c, 0x24a5,
-  0x750d, 0x1485,
-  0x750e, 0x3e0b,
-  0x750f, 0x1906,
-  0x7510, 0x3e0c,
-  0x7511, 0x1907,
-  0x7512, 0x3e0d,
-  0x7513, 0x1908,
-  0x7514, 0x3e0e,
-  0x7518, 0x06c5,
-  0x7519, 0x14f8,
-  0x751a, 0x0d2e,
-  0x751b, 0x3e12,
-  0x751c, 0x0e43,
-  0x751d, 0x3e13,
-  0x751f, 0x0d33,
-  0x7520, 0x3e15,
-  0x7523, 0x1e70,
-  0x7524, 0x3e18,
-  0x7525, 0x0d34,
-  0x7526, 0x3e19,
-  0x7528, 0x10a8,
-  0x7529, 0x0d9b,
-  0x752a, 0x3e1b,
-  0x752b, 0x06a1,
-  0x752c, 0x1b34,
-  0x752d, 0x042b,
-  0x752e, 0x3e1c,
-  0x752f, 0x1734,
-  0x7530, 0x0e42,
-  0x7531, 0x10ae,
-  0x7532, 0x084a,
-  0x7533, 0x0d23,
-  0x7534, 0x3e1d,
-  0x7535, 0x05c8,
-  0x7536, 0x3e1e,
-  0x7537, 0x0b33,
-  0x7538, 0x05ca,
-  0x7539, 0x3e1f,
-  0x753a, 0x1a78,
-  0x753b, 0x07c2,
-  0x753c, 0x3e20,
-  0x753e, 0x1816,
-  0x753f, 0x3e22,
-  0x7540, 0x1a79,
-  0x7541, 0x3e23,
-  0x7545, 0x04ce,
-  0x7546, 0x3e27,
-  0x7548, 0x1a7c,
-  0x7549, 0x3e29,
-  0x754b, 0x1a7b,
-  0x754c, 0x08b8,
-  0x754d, 0x3e2b,
-  0x754e, 0x1a7a,
-  0x754f, 0x0ec6,
-  0x7550, 0x3e2c,
-  0x7554, 0x0b90,
-  0x7555, 0x3e30,
-  0x7559, 0x0a3d,
-  0x755a, 0x139e,
-  0x755b, 0x1a7d,
-  0x755c, 0x0fbe,
-  0x755d, 0x208f,
-  0x755e, 0x3e34,
-  0x7562, 0x1e42,
-  0x7563, 0x3e38,
-  0x7565, 0x0a7b,
-  0x7566, 0x0c07,
-  0x7567, 0x3e3a,
-  0x756a, 0x0649,
-  0x756b, 0x1f4e,
-  0x756c, 0x3e3d,
-  0x7572, 0x1a7e,
-  0x7573, 0x3e43,
-  0x7574, 0x0510,
-  0x7575, 0x3e44,
-  0x7576, 0x1eb1,
-  0x7577, 0x3e45,
-  0x7578, 0x0810,
-  0x7579, 0x1a7f,
-  0x757a, 0x3e46,
-  0x757f, 0x1814,
-  0x7580, 0x3e4b,
-  0x7583, 0x1a80,
-  0x7584, 0x3e4e,
-  0x7586, 0x087f,
-  0x7587, 0x1e8b,
-  0x7588, 0x3e50,
-  0x758b, 0x1bc6,
-  0x758c, 0x3e53,
-  0x758f, 0x0d7f,
-  0x7590, 0x3e56,
-  0x7591, 0x1050,
-  0x7592, 0x1b60,
-  0x7593, 0x3e57,
-  0x7594, 0x1b61,
-  0x7595, 0x3e58,
-  0x7596, 0x1b62,
-  0x7597, 0x0a0f,
-  0x7598, 0x3e59,
-  0x7599, 0x06e8,
-  0x759a, 0x08fd,
-  0x759b, 0x3e5a,
-  0x759d, 0x1b64,
-  0x759e, 0x3e5c,
-  0x759f, 0x0b72,
-  0x75a0, 0x1b63,
-  0x75a1, 0x101a,
-  0x75a2, 0x3e5d,
-  0x75a3, 0x1b66,
-  0x75a4, 0x03d7,
-  0x75a5, 0x08bb,
-  0x75a6, 0x3e5e,
-  0x75ab, 0x1066,
-  0x75ac, 0x1b65,
-  0x75ad, 0x3e63,
-  0x75ae, 0x0532,
-  0x75af, 0x0685,
-  0x75b0, 0x1b6c,
-  0x75b1, 0x1b6b,
-  0x75b2, 0x0bc2,
-  0x75b3, 0x1b67,
-  0x75b5, 0x0546,
-  0x75b6, 0x3e64,
-  0x75b8, 0x1b69,
-  0x75b9, 0x118f,
-  0x75ba, 0x3e66,
-  0x75bc, 0x0e2e,
-  0x75bd, 0x0901,
-  0x75be, 0x0825,
-  0x75bf, 0x3e68,
-  0x75c2, 0x1b6e,
-  0x75c3, 0x1b6d,
-  0x75c4, 0x1b6a,
-  0x75c5, 0x0468,
-  0x75c6, 0x3e6b,
-  0x75c7, 0x11a1,
-  0x75c8, 0x109d,
-  0x75c9, 0x08e6,
-  0x75ca, 0x0c87,
-  0x75cb, 0x3e6c,
-  0x75cd, 0x1b70,
-  0x75ce, 0x3e6e,
-  0x75d2, 0x1020,
-  0x75d3, 0x3e72,
-  0x75d4, 0x11cb,
-  0x75d5, 0x0792,
-  0x75d6, 0x1b6f,
-  0x75d7, 0x3e73,
-  0x75d8, 0x05fa,
-  0x75d9, 0x1fc6,
-  0x75da, 0x3e74,
-  0x75db, 0x0e65,
-  0x75dc, 0x3e75,
-  0x75de, 0x0bc5,
-  0x75df, 0x3e77,
-  0x75e2, 0x09ea,
-  0x75e3, 0x1b71,
-  0x75e4, 0x1b74,
-  0x75e5, 0x3e7a,
-  0x75e6, 0x1b73,
-  0x75e7, 0x1b76,
-  0x75e8, 0x1b72,
-  0x75e9, 0x3e7b,
-  0x75ea, 0x07d3,
-  0x75eb, 0x1b75,
-  0x75ec, 0x3e7c,
-  0x75f0, 0x0e08,
-  0x75f1, 0x1b78,
-  0x75f2, 0x3e80,
-  0x75f4, 0x04fa,
-  0x75f5, 0x3e82,
-  0x75f9, 0x043d,
-  0x75fa, 0x3e86,
-  0x75fc, 0x1b79,
-  0x75fd, 0x3e88,
-  0x75ff, 0x1b7a,
-  0x7600, 0x1b7c,
-  0x7601, 0x0564,
-  0x7602, 0x25ae,
-  0x7603, 0x1b77,
-  0x7604, 0x3e8a,
-  0x7605, 0x1b7d,
-  0x7606, 0x3e8b,
-  0x760a, 0x1b80,
-  0x760b, 0x1f01,
-  0x760c, 0x1b7e,
-  0x760d, 0x2200,
-  0x760e, 0x3e8f,
-  0x7610, 0x1b7b,
-  0x7611, 0x3e91,
-  0x7615, 0x1b83,
-  0x7616, 0x3e95,
-  0x7617, 0x1b7f,
-  0x7618, 0x1b82,
-  0x7619, 0x1b84,
-  0x761a, 0x3e96,
-  0x761b, 0x1b85,
-  0x761c, 0x3e97,
-  0x761e, 0x25b2,
-  0x761f, 0x0ed0,
-  0x7620, 0x1b88,
-  0x7621, 0x1e97,
-  0x7622, 0x1b87,
-  0x7623, 0x3e99,
-  0x7624, 0x0a3f,
-  0x7625, 0x1b81,
-  0x7626, 0x0d74,
-  0x7627, 0x20ab,
-  0x7628, 0x3e9a,
-  0x7629, 0x0574,
-  0x762a, 0x045a,
-  0x762b, 0x0e04,
-  0x762c, 0x3e9b,
-  0x762d, 0x1b8a,
-  0x762e, 0x3e9c,
-  0x7630, 0x1b8b,
-  0x7631, 0x3e9e,
-  0x7633, 0x1b90,
-  0x7634, 0x116f,
-  0x7635, 0x1b8d,
-  0x7636, 0x3ea0,
-  0x7638, 0x0c8e,
-  0x7639, 0x3ea2,
-  0x763b, 0x25b3,
-  0x763c, 0x1b86,
-  0x763d, 0x3ea4,
-  0x763e, 0x1b8f,
-  0x763f, 0x1b8c,
-  0x7640, 0x1b89,
-  0x7641, 0x3ea5,
-  0x7642, 0x2028,
-  0x7643, 0x1b8e,
-  0x7644, 0x3ea6,
-  0x7646, 0x25af,
-  0x7648, 0x3ea8,
-  0x7649, 0x25b1,
-  0x764a, 0x3ea9,
-  0x764c, 0x03b4,
-  0x764d, 0x1b91,
-  0x764e, 0x3eab,
-  0x7654, 0x1b93,
-  0x7655, 0x3eb1,
-  0x7656, 0x1b95,
-  0x7657, 0x3eb2,
-  0x7658, 0x25ac,
-  0x7659, 0x3eb3,
-  0x765c, 0x1b94,
-  0x765d, 0x3eb6,
-  0x765e, 0x1b92,
-  0x765f, 0x1e4e,
-  0x7660, 0x3eb7,
-  0x7662, 0x2202,
-  0x7663, 0x0fcb,
-  0x7664, 0x25ab,
-  0x7665, 0x2286,
-  0x7666, 0x3eb9,
-  0x7667, 0x25ad,
-  0x7668, 0x3eba,
-  0x7669, 0x25b6,
-  0x766a, 0x3ebb,
-  0x766b, 0x1b96,
-  0x766c, 0x21e3,
-  0x766d, 0x25b4,
-  0x766f, 0x1b97,
-  0x7670, 0x222f,
-  0x7671, 0x2165,
-  0x7672, 0x25b7,
-  0x7673, 0x3ebc,
-  0x7678, 0x0748,
-  0x7679, 0x3ec1,
-  0x767b, 0x05a8,
-  0x767c, 0x1ee9,
-  0x767d, 0x03e2,
-  0x767e, 0x03e4,
-  0x767f, 0x3ec3,
-  0x7682, 0x1130,
-  0x7683, 0x3ec6,
-  0x7684, 0x05a5,
-  0x7685, 0x3ec7,
-  0x7686, 0x08a5,
-  0x7687, 0x07df,
-  0x7688, 0x1b2d,
-  0x7689, 0x3ec8,
-  0x768b, 0x06d9,
-  0x768c, 0x3eca,
-  0x768e, 0x1b2e,
-  0x768f, 0x3ecc,
-  0x7691, 0x03b3,
-  0x7692, 0x3ece,
-  0x7693, 0x1b2f,
-  0x7694, 0x3ecf,
-  0x7696, 0x0e9f,
-  0x7697, 0x3ed1,
-  0x7699, 0x1b30,
-  0x769a, 0x1e25,
-  0x769b, 0x3ed3,
-  0x76a4, 0x1b31,
-  0x76a5, 0x3edc,
-  0x76ae, 0x0bc3,
-  0x76af, 0x3ee5,
-  0x76b1, 0x11e4,
-  0x76b2, 0x1bc8,
-  0x76b3, 0x3ee7,
-  0x76b4, 0x1bc9,
-  0x76b5, 0x3ee8,
-  0x76b8, 0x25c0,
-  0x76b9, 0x3eeb,
-  0x76ba, 0x229a,
-  0x76bb, 0x3eec,
-  0x76bf, 0x0af8,
-  0x76c0, 0x3ef0,
-  0x76c2, 0x10c0,
-  0x76c3, 0x3ef2,
-  0x76c5, 0x11d0,
-  0x76c6, 0x0ba9,
-  0x76c7, 0x3ef4,
-  0x76c8, 0x1094,
-  0x76c9, 0x3ef5,
-  0x76ca, 0x106d,
-  0x76cb, 0x3ef6,
-  0x76cd, 0x1a8b,
-  0x76ce, 0x03c6,
-  0x76cf, 0x1156,
-  0x76d0, 0x0ff7,
-  0x76d1, 0x0853,
-  0x76d2, 0x0787,
-  0x76d3, 0x3ef8,
-  0x76d4, 0x0985,
-  0x76d5, 0x3ef9,
-  0x76d6, 0x06c2,
-  0x76d7, 0x05a2,
-  0x76d8, 0x0b8d,
-  0x76d9, 0x3efa,
-  0x76db, 0x0d39,
-  0x76dc, 0x3efc,
-  0x76de, 0x226e,
-  0x76df, 0x0ad0,
-  0x76e0, 0x3efe,
-  0x76e1, 0x1fbd,
-  0x76e2, 0x3eff,
-  0x76e3, 0x1f84,
-  0x76e4, 0x20b2,
-  0x76e5, 0x1a8c,
-  0x76e6, 0x3f00,
-  0x76e7, 0x2043,
-  0x76e8, 0x3f01,
-  0x76ee, 0x0b22,
-  0x76ef, 0x05e1,
-  0x76f0, 0x3f07,
-  0x76f1, 0x1a58,
-  0x76f2, 0x0aa9,
-  0x76f3, 0x3f08,
-  0x76f4, 0x11b0,
-  0x76f5, 0x3f09,
-  0x76f8, 0x0f4d,
-  0x76f9, 0x1a5b,
-  0x76fa, 0x3f0c,
-  0x76fc, 0x0b8f,
-  0x76fd, 0x3f0e,
-  0x76fe, 0x061b,
-  0x76ff, 0x3f0f,
-  0x7700, 0x3f10,
-  0x7701, 0x0d38,
-  0x7702, 0x3f11,
-  0x7704, 0x1a59,
-  0x7705, 0x3f13,
-  0x7707, 0x1a5c,
-  0x7709, 0x0ac1,
-  0x770a, 0x3f15,
-  0x770b, 0x0941,
-  0x770c, 0x3f16,
-  0x770d, 0x1a5a,
-  0x770e, 0x3f17,
-  0x7719, 0x1a60,
-  0x771a, 0x1a5e,
-  0x771b, 0x3f22,
-  0x771f, 0x1187,
-  0x7720, 0x0ae4,
-  0x7721, 0x3f26,
-  0x7722, 0x1a5f,
-  0x7723, 0x3f27,
-  0x7726, 0x1a62,
-  0x7727, 0x3f2a,
-  0x7728, 0x1144,
-  0x7729, 0x0fcc,
-  0x772a, 0x3f2b,
-  0x772d, 0x1a61,
-  0x772e, 0x3f2e,
-  0x772f, 0x0ad5,
-  0x7730, 0x3f2f,
-  0x7735, 0x1a63,
-  0x7736, 0x0981,
-  0x7737, 0x091b,
-  0x7738, 0x1a64,
-  0x7739, 0x3f34,
-  0x773a, 0x0e4a,
-  0x773b, 0x3f35,
-  0x773c, 0x1004,
-  0x773d, 0x3f36,
-  0x7740, 0x1222,
-  0x7741, 0x1197,
-  0x7742, 0x3f39,
-  0x7743, 0x1a68,
-  0x7744, 0x3f3a,
-  0x7747, 0x1a67,
-  0x7748, 0x3f3d,
-  0x774f, 0x2684,
-  0x7750, 0x1a65,
-  0x7752, 0x3f44,
-  0x775a, 0x1a69,
-  0x775b, 0x08d5,
-  0x775c, 0x3f4c,
-  0x775e, 0x24ef,
-  0x775f, 0x3f4e,
-  0x7761, 0x0da4,
-  0x7762, 0x1a6b,
-  0x7763, 0x05fc,
-  0x7764, 0x3f50,
-  0x7765, 0x1a6c,
-  0x7766, 0x0b23,
-  0x7767, 0x3f51,
-  0x7768, 0x1a6a,
-  0x7769, 0x3f52,
-  0x776b, 0x08af,
-  0x776c, 0x048e,
-  0x776d, 0x3f54,
-  0x7779, 0x0602,
-  0x777a, 0x3f60,
-  0x777d, 0x1a6f,
-  0x777e, 0x1270,
-  0x777f, 0x1a6d,
-  0x7780, 0x1a70,
-  0x7781, 0x3f63,
-  0x7784, 0x0aee,
-  0x7785, 0x0517,
-  0x7786, 0x3f66,
-  0x778c, 0x1a71,
-  0x778d, 0x1a6e,
-  0x778e, 0x0f26,
-  0x778f, 0x3f6c,
-  0x7791, 0x1a72,
-  0x7792, 0x0a9e,
-  0x7793, 0x3f6e,
-  0x7798, 0x24ee,
-  0x7799, 0x3f73,
-  0x779e, 0x2074,
-  0x779f, 0x1a73,
-  0x77a1, 0x3f78,
-  0x77a2, 0x1495,
-  0x77a3, 0x3f79,
-  0x77a5, 0x0bd2,
-  0x77a6, 0x3f7b,
-  0x77a7, 0x0c43,
-  0x77a8, 0x3f7c,
-  0x77a9, 0x11f4,
-  0x77aa, 0x05aa,
-  0x77ab, 0x3f7d,
-  0x77ac, 0x0da7,
-  0x77ad, 0x2687,
-  0x77ae, 0x3f7e,
-  0x77b0, 0x1a75,
-  0x77b1, 0x3f80,
-  0x77b3, 0x0e5c,
-  0x77b4, 0x3f82,
-  0x77b5, 0x1a76,
-  0x77b6, 0x3f83,
-  0x77bb, 0x1151,
-  0x77bc, 0x24f0,
-  0x77bd, 0x1a77,
-  0x77be, 0x3f88,
-  0x77bf, 0x1d7e,
-  0x77c0, 0x3f89,
-  0x77c7, 0x268d,
-  0x77c8, 0x3f90,
-  0x77cd, 0x1397,
-  0x77ce, 0x3f95,
-  0x77d7, 0x0526,
-  0x77d8, 0x3f9e,
-  0x77da, 0x22a0,
-  0x77db, 0x0ab1,
-  0x77dc, 0x1bca,
-  0x77dd, 0x3fa0,
-  0x77e2, 0x0d4f,
-  0x77e3, 0x105a,
-  0x77e4, 0x3fa5,
-  0x77e5, 0x11a9,
-  0x77e6, 0x3fa6,
-  0x77e7, 0x1b1a,
-  0x77e8, 0x3fa7,
-  0x77e9, 0x0907,
-  0x77ea, 0x3fa8,
-  0x77eb, 0x0894,
-  0x77ec, 0x1b1b,
-  0x77ed, 0x060b,
-  0x77ee, 0x03b6,
-  0x77ef, 0x1fab,
-  0x77f0, 0x3fa9,
-  0x77f3, 0x0d46,
-  0x77f4, 0x3fac,
-  0x77f6, 0x1a22,
-  0x77f7, 0x3fae,
-  0x77f8, 0x1a23,
-  0x77f9, 0x3faf,
-  0x77fd, 0x0f08,
-  0x77fe, 0x064c,
-  0x77ff, 0x0980,
-  0x7800, 0x1a24,
-  0x7801, 0x0a92,
-  0x7802, 0x0ce9,
-  0x7803, 0x3fb3,
-  0x7809, 0x1a25,
-  0x780a, 0x3fb9,
-  0x780c, 0x0c15,
-  0x780d, 0x0940,
-  0x780e, 0x3fbb,
-  0x7811, 0x1a28,
-  0x7812, 0x0bb9,
-  0x7813, 0x3fbe,
-  0x7814, 0x0ff9,
-  0x7815, 0x3fbf,
-  0x7816, 0x1206,
-  0x7817, 0x1a26,
-  0x7819, 0x3fc0,
-  0x781a, 0x100b,
-  0x781b, 0x3fc1,
-  0x781c, 0x1a2b,
-  0x781e, 0x3fc2,
-  0x781f, 0x1a30,
-  0x7820, 0x3fc3,
-  0x7823, 0x1a34,
-  0x7824, 0x3fc6,
-  0x7825, 0x1a32,
-  0x7826, 0x1a3a,
-  0x7827, 0x1189,
-  0x7828, 0x3fc7,
-  0x7829, 0x1a35,
-  0x782a, 0x3fc8,
-  0x782c, 0x1a33,
-  0x782d, 0x1a2a,
-  0x782e, 0x3fca,
-  0x7830, 0x0baa,
-  0x7831, 0x3fcc,
-  0x7834, 0x0be5,
-  0x7835, 0x3fcf,
-  0x7837, 0x0d22,
-  0x7838, 0x1115,
-  0x7839, 0x1a2d,
-  0x783c, 0x1a31,
-  0x783d, 0x3fd1,
-  0x783e, 0x09e4,
-  0x783f, 0x3fd2,
-  0x7840, 0x0524,
-  0x7841, 0x3fd3,
-  0x7843, 0x26a8,
-  0x7844, 0x3fd5,
-  0x7845, 0x0741,
-  0x7846, 0x3fd6,
-  0x7847, 0x1a3c,
-  0x7848, 0x3fd7,
-  0x784c, 0x1a3d,
-  0x784d, 0x3fdb,
-  0x784e, 0x1a36,
-  0x784f, 0x3fdc,
-  0x7850, 0x1a3b,
-  0x7851, 0x3fdd,
-  0x7852, 0x0f07,
-  0x7853, 0x3fde,
-  0x7855, 0x0dab,
-  0x7856, 0x1a38,
-  0x7858, 0x3fe0,
-  0x785d, 0x0f62,
-  0x785e, 0x3fe5,
-  0x7864, 0x24e9,
-  0x7865, 0x3feb,
-  0x7868, 0x24e5,
-  0x7869, 0x3fee,
-  0x786a, 0x1a3e,
-  0x786b, 0x0a3b,
-  0x786c, 0x1097,
-  0x786d, 0x1a37,
-  0x786e, 0x0c92,
-  0x786f, 0x21fa,
-  0x7870, 0x3fef,
-  0x7877, 0x0862,
-  0x7878, 0x3ff6,
-  0x787c, 0x0bb1,
-  0x787d, 0x3ffa,
-  0x7887, 0x1a42,
-  0x7888, 0x4004,
-  0x7889, 0x05d0,
-  0x788a, 0x4005,
-  0x788c, 0x0a5c,
-  0x788d, 0x03b8,
-  0x788e, 0x0dde,
-  0x788f, 0x4007,
-  0x7891, 0x0417,
-  0x7892, 0x4009,
-  0x7893, 0x1a40,
-  0x7894, 0x400a,
-  0x7897, 0x0e9c,
-  0x7898, 0x05c3,
-  0x7899, 0x400d,
-  0x789a, 0x1a41,
-  0x789b, 0x1a3f,
-  0x789c, 0x1a43,
-  0x789d, 0x400e,
-  0x789f, 0x05db,
-  0x78a0, 0x4010,
-  0x78a1, 0x1a44,
-  0x78a2, 0x4011,
-  0x78a3, 0x1a45,
-  0x78a4, 0x4012,
-  0x78a5, 0x1a48,
-  0x78a6, 0x4013,
-  0x78a7, 0x0435,
-  0x78a8, 0x4014,
-  0x78a9, 0x2148,
-  0x78aa, 0x4015,
-  0x78ad, 0x24e4,
-  0x78ae, 0x4018,
-  0x78b0, 0x0bb7,
-  0x78b1, 0x0861,
-  0x78b2, 0x1a46,
-  0x78b3, 0x0e0f,
-  0x78b4, 0x04b1,
-  0x78b5, 0x401a,
-  0x78b8, 0x24e6,
-  0x78b9, 0x1a47,
-  0x78ba, 0x20f7,
-  0x78bb, 0x401d,
-  0x78bc, 0x206b,
-  0x78bd, 0x401e,
-  0x78be, 0x0b4e,
-  0x78bf, 0x401f,
-  0x78c1, 0x0548,
-  0x78c2, 0x4021,
-  0x78c5, 0x0400,
-  0x78c6, 0x4024,
-  0x78c9, 0x1a4b,
-  0x78ca, 0x09c5,
-  0x78cb, 0x056b,
-  0x78cc, 0x4027,
-  0x78d0, 0x0b8e,
-  0x78d1, 0x402b,
-  0x78d4, 0x1a49,
-  0x78d5, 0x0951,
-  0x78d6, 0x402e,
-  0x78d9, 0x1a4a,
-  0x78da, 0x22a7,
-  0x78db, 0x4031,
-  0x78e3, 0x24ec,
-  0x78e4, 0x4039,
-  0x78e7, 0x24eb,
-  0x78e8, 0x0b08,
-  0x78e9, 0x403c,
-  0x78ec, 0x1a4c,
-  0x78ed, 0x403f,
-  0x78ef, 0x24e3,
-  0x78f0, 0x4041,
-  0x78f2, 0x1a4d,
-  0x78f3, 0x4043,
-  0x78f4, 0x1a4f,
-  0x78f5, 0x4044,
-  0x78f7, 0x0a20,
-  0x78f8, 0x4046,
-  0x78fa, 0x07dc,
-  0x78fb, 0x4048,
-  0x78fd, 0x24ea,
-  0x78fe, 0x404a,
-  0x7900, 0x404c,
-  0x7901, 0x0889,
-  0x7902, 0x404d,
-  0x7905, 0x1a4e,
-  0x7906, 0x4050,
-  0x790e, 0x1e92,
-  0x790f, 0x4058,
-  0x7913, 0x1a50,
-  0x7914, 0x405c,
-  0x7919, 0x1e27,
-  0x791a, 0x4061,
-  0x791e, 0x1a52,
-  0x791f, 0x4065,
-  0x7924, 0x1a51,
-  0x7925, 0x406a,
-  0x7926, 0x1fe6,
-  0x7927, 0x406b,
-  0x792a, 0x24e7,
-  0x792b, 0x2012,
-  0x792c, 0x1eec,
-  0x792d, 0x406e,
-  0x7931, 0x24e8,
-  0x7932, 0x4072,
-  0x7934, 0x1a53,
-  0x7935, 0x4074,
-  0x793a, 0x0d55,
-  0x793b, 0x19f8,
-  0x793c, 0x09dc,
-  0x793d, 0x4079,
-  0x793e, 0x0d20,
-  0x793f, 0x407a,
-  0x7940, 0x19f9,
-  0x7941, 0x0c0d,
-  0x7942, 0x407b,
-  0x7946, 0x19fa,
-  0x7947, 0x407f,
-  0x7948, 0x0c0c,
-  0x7949, 0x19fb,
-  0x794a, 0x4080,
-  0x7953, 0x19fe,
-  0x7954, 0x4089,
-  0x7956, 0x1243,
-  0x7957, 0x1a01,
-  0x7958, 0x408b,
-  0x795a, 0x19ff,
-  0x795b, 0x19fc,
-  0x795d, 0x1200,
-  0x795e, 0x0d2a,
-  0x795f, 0x0de3,
-  0x7960, 0x1a02,
-  0x7961, 0x408d,
-  0x7962, 0x1a00,
-  0x7963, 0x408e,
-  0x7965, 0x0f56,
-  0x7966, 0x4090,
-  0x7967, 0x1a04,
-  0x7968, 0x0bd0,
-  0x7969, 0x4091,
-  0x796d, 0x0833,
-  0x796e, 0x4095,
-  0x796f, 0x1a03,
-  0x7970, 0x4096,
-  0x7977, 0x059c,
-  0x7978, 0x080b,
-  0x7979, 0x409d,
-  0x797a, 0x1a05,
-  0x797b, 0x409e,
-  0x7980, 0x130b,
-  0x7981, 0x08cc,
-  0x7982, 0x40a3,
-  0x7984, 0x0a62,
-  0x7985, 0x1a06,
-  0x7986, 0x40a5,
-  0x798a, 0x1a07,
-  0x798b, 0x40a9,
-  0x798d, 0x1f66,
-  0x798e, 0x24dc,
-  0x798f, 0x069e,
-  0x7990, 0x40ab,
-  0x799a, 0x1a08,
-  0x799b, 0x40b5,
-  0x79a6, 0x26a2,
-  0x79a7, 0x1a09,
-  0x79a8, 0x40c0,
-  0x79aa, 0x24dd,
-  0x79ab, 0x40c2,
-  0x79ae, 0x200e,
-  0x79af, 0x40c5,
-  0x79b0, 0x24db,
-  0x79b1, 0x1eb8,
-  0x79b2, 0x40c6,
-  0x79b3, 0x1a0a,
-  0x79b4, 0x40c7,
-  0x79b9, 0x10d2,
-  0x79ba, 0x1264,
-  0x79bb, 0x09d6,
-  0x79bc, 0x40cc,
-  0x79bd, 0x0c5a,
-  0x79be, 0x0783,
-  0x79bf, 0x40cd,
-  0x79c0, 0x0fae,
-  0x79c1, 0x0db2,
-  0x79c2, 0x40ce,
-  0x79c3, 0x0e6b,
-  0x79c4, 0x40cf,
-  0x79c6, 0x06cc,
-  0x79c7, 0x40d1,
-  0x79c9, 0x0465,
-  0x79ca, 0x40d3,
-  0x79cb, 0x0c6c,
-  0x79cc, 0x40d4,
-  0x79cd, 0x11d5,
-  0x79ce, 0x40d5,
-  0x79d1, 0x0953,
-  0x79d2, 0x0af0,
-  0x79d3, 0x40d8,
-  0x79d5, 0x1b1d,
-  0x79d6, 0x40da,
-  0x79d8, 0x0add,
-  0x79d9, 0x40dc,
-  0x79df, 0x123f,
-  0x79e0, 0x40e2,
-  0x79e3, 0x1b1f,
-  0x79e4, 0x04f8,
-  0x79e5, 0x40e5,
-  0x79e6, 0x0c55,
-  0x79e7, 0x1016,
-  0x79e8, 0x40e6,
-  0x79e9, 0x11c7,
-  0x79ea, 0x40e7,
-  0x79eb, 0x1b20,
-  0x79ec, 0x40e8,
-  0x79ed, 0x1b1e,
-  0x79ee, 0x40e9,
-  0x79ef, 0x0812,
-  0x79f0, 0x04eb,
-  0x79f1, 0x40ea,
-  0x79f8, 0x08a6,
-  0x79f9, 0x40f1,
-  0x79fb, 0x104d,
-  0x79fc, 0x40f3,
-  0x79fd, 0x07f5,
-  0x79fe, 0x40f4,
-  0x7a00, 0x0f0e,
-  0x7a01, 0x40f6,
-  0x7a02, 0x1b24,
-  0x7a03, 0x1b23,
-  0x7a04, 0x40f7,
-  0x7a06, 0x1b21,
-  0x7a07, 0x40f9,
-  0x7a0b, 0x04f1,
-  0x7a0c, 0x40fd,
-  0x7a0d, 0x0d0d,
-  0x7a0e, 0x0da5,
-  0x7a0f, 0x40fe,
-  0x7a14, 0x1b26,
-  0x7a15, 0x4103,
-  0x7a17, 0x03e9,
-  0x7a18, 0x4105,
-  0x7a1a, 0x11c8,
-  0x7a1b, 0x4107,
-  0x7a1e, 0x1b25,
-  0x7a1f, 0x410a,
-  0x7a20, 0x0512,
-  0x7a21, 0x410b,
-  0x7a23, 0x1d8f,
-  0x7a24, 0x410d,
-  0x7a2e, 0x2295,
-  0x7a2f, 0x4117,
-  0x7a31, 0x1e80,
-  0x7a32, 0x4119,
-  0x7a33, 0x0ed7,
-  0x7a34, 0x411a,
-  0x7a37, 0x1b28,
-  0x7a38, 0x411d,
-  0x7a39, 0x1b27,
-  0x7a3a, 0x411e,
-  0x7a3b, 0x059f,
-  0x7a3c, 0x084d,
-  0x7a3d, 0x0811,
-  0x7a3e, 0x411f,
-  0x7a3f, 0x06e0,
-  0x7a40, 0x2677,
-  0x7a41, 0x4120,
-  0x7a46, 0x0b25,
-  0x7a47, 0x4125,
-  0x7a4c, 0x2624,
-  0x7a4d, 0x1f69,
-  0x7a4e, 0x222b,
-  0x7a4f, 0x412a,
-  0x7a51, 0x1b29,
-  0x7a52, 0x412c,
-  0x7a57, 0x0de0,
-  0x7a58, 0x4131,
-  0x7a61, 0x257f,
-  0x7a62, 0x1f5b,
-  0x7a63, 0x413a,
-  0x7a69, 0x219b,
-  0x7a6a, 0x4140,
-  0x7a6b, 0x267d,
-  0x7a6c, 0x4141,
-  0x7a70, 0x1b2c,
-  0x7a71, 0x4145,
-  0x7a74, 0x0fd1,
-  0x7a75, 0x4148,
-  0x7a76, 0x08ee,
-  0x7a77, 0x0c6b,
-  0x7a78, 0x1b9a,
-  0x7a7a, 0x0962,
-  0x7a7b, 0x4149,
-  0x7a7f, 0x052c,
-  0x7a80, 0x1b9c,
-  0x7a81, 0x0e6c,
-  0x7a82, 0x414d,
-  0x7a83, 0x0c51,
-  0x7a84, 0x114e,
-  0x7a85, 0x414e,
-  0x7a86, 0x1b9d,
-  0x7a87, 0x414f,
-  0x7a88, 0x1b9e,
-  0x7a89, 0x4150,
-  0x7a8d, 0x0c4c,
-  0x7a8e, 0x4154,
-  0x7a91, 0x102b,
-  0x7a92, 0x11ce,
-  0x7a93, 0x4157,
-  0x7a95, 0x1b9f,
-  0x7a96, 0x08a2,
-  0x7a97, 0x0533,
-  0x7a98, 0x08ec,
-  0x7a99, 0x4159,
-  0x7a9c, 0x055f,
-  0x7a9d, 0x0ee0,
-  0x7a9e, 0x415c,
-  0x7a9f, 0x096c,
-  0x7aa0, 0x1ba1,
-  0x7aa1, 0x415d,
-  0x7aa5, 0x0987,
-  0x7aa6, 0x1ba0,
-  0x7aa7, 0x4161,
-  0x7aa8, 0x1ba3,
-  0x7aa9, 0x21a0,
-  0x7aaa, 0x2186,
-  0x7aab, 0x4162,
-  0x7aac, 0x1ba2,
-  0x7aad, 0x1ba4,
-  0x7aae, 0x20ed,
-  0x7aaf, 0x4163,
-  0x7ab3, 0x1ba5,
-  0x7ab4, 0x4167,
-  0x7ab6, 0x25b9,
-  0x7ab7, 0x4169,
-  0x7aba, 0x1fea,
-  0x7abb, 0x416c,
-  0x7abf, 0x0a47,
-  0x7ac0, 0x4170,
-  0x7ac4, 0x1ea4,
-  0x7ac5, 0x20e1,
-  0x7ac6, 0x4174,
-  0x7ac7, 0x25b8,
-  0x7ac8, 0x2260,
-  0x7ac9, 0x4175,
-  0x7aca, 0x20e2,
-  0x7acb, 0x09eb,
-  0x7acc, 0x4176,
-  0x7ad6, 0x0d91,
-  0x7ad7, 0x4180,
-  0x7ad9, 0x115f,
-  0x7ada, 0x4182,
-  0x7ade, 0x08e9,
-  0x7adf, 0x08e8,
-  0x7ae0, 0x1163,
-  0x7ae1, 0x4186,
-  0x7ae3, 0x092f,
-  0x7ae4, 0x4188,
-  0x7ae5, 0x0e60,
-  0x7ae6, 0x1b99,
-  0x7ae7, 0x4189,
-  0x7aea, 0x2141,
-  0x7aeb, 0x418c,
-  0x7aed, 0x08b0,
-  0x7aee, 0x418e,
-  0x7aef, 0x060a,
-  0x7af0, 0x418f,
-  0x7af6, 0x1fc7,
-  0x7af7, 0x4195,
-  0x7af9, 0x11f0,
-  0x7afa, 0x1c63,
-  0x7afb, 0x4197,
-  0x7afd, 0x1c64,
-  0x7afe, 0x4199,
-  0x7aff, 0x06c8,
-  0x7b00, 0x419a,
-  0x7b03, 0x1c66,
-  0x7b05, 0x419d,
-  0x7b06, 0x03d5,
-  0x7b07, 0x419e,
-  0x7b08, 0x1c65,
-  0x7b09, 0x419f,
-  0x7b0a, 0x1c69,
-  0x7b0b, 0x0de6,
-  0x7b0c, 0x41a0,
-  0x7b0f, 0x1c6b,
-  0x7b10, 0x41a3,
-  0x7b11, 0x0f71,
-  0x7b12, 0x41a4,
-  0x7b14, 0x0433,
-  0x7b15, 0x1c68,
-  0x7b16, 0x41a6,
-  0x7b19, 0x1c6f,
-  0x7b1a, 0x41a9,
-  0x7b1b, 0x05b2,
-  0x7b1c, 0x41aa,
-  0x7b1e, 0x1c77,
-  0x7b1f, 0x41ac,
-  0x7b20, 0x1c72,
-  0x7b21, 0x41ad,
-  0x7b24, 0x1c74,
-  0x7b25, 0x1c73,
-  0x7b26, 0x0698,
-  0x7b27, 0x41b0,
-  0x7b28, 0x0428,
-  0x7b29, 0x41b1,
-  0x7b2a, 0x1c6e,
-  0x7b2b, 0x1c6a,
-  0x7b2c, 0x05bb,
-  0x7b2d, 0x41b2,
-  0x7b2e, 0x1c70,
-  0x7b2f, 0x41b3,
-  0x7b31, 0x1c71,
-  0x7b32, 0x41b5,
-  0x7b33, 0x1c75,
-  0x7b34, 0x41b6,
-  0x7b38, 0x1c6d,
-  0x7b39, 0x41ba,
-  0x7b3a, 0x0856,
-  0x7b3b, 0x41bb,
-  0x7b3c, 0x0a46,
-  0x7b3d, 0x41bc,
-  0x7b3e, 0x1c76,
-  0x7b3f, 0x41bd,
-  0x7b45, 0x1c7a,
-  0x7b46, 0x1e41,
-  0x7b47, 0x1c6c,
-  0x7b48, 0x41c3,
-  0x7b49, 0x05a9,
-  0x7b4a, 0x41c4,
-  0x7b4b, 0x08bf,
-  0x7b4c, 0x1c7c,
-  0x7b4d, 0x41c5,
-  0x7b4f, 0x0641,
-  0x7b50, 0x097d,
-  0x7b51, 0x11fd,
-  0x7b52, 0x0e63,
-  0x7b53, 0x41c7,
-  0x7b54, 0x0573,
-  0x7b55, 0x41c8,
-  0x7b56, 0x04a6,
-  0x7b57, 0x41c9,
-  0x7b58, 0x1c78,
-  0x7b59, 0x41ca,
-  0x7b5a, 0x1c79,
-  0x7b5b, 0x0cf1,
-  0x7b5c, 0x41cb,
-  0x7b5d, 0x1c7d,
-  0x7b5e, 0x41cc,
-  0x7b60, 0x1c7e,
-  0x7b61, 0x41ce,
-  0x7b62, 0x1c81,
-  0x7b63, 0x41cf,
-  0x7b67, 0x25e4,
-  0x7b68, 0x41d3,
-  0x7b6e, 0x1c7f,
-  0x7b6f, 0x41d9,
-  0x7b71, 0x1c83,
-  0x7b72, 0x1c82,
-  0x7b73, 0x41db,
-  0x7b75, 0x1c7b,
-  0x7b76, 0x41dd,
-  0x7b77, 0x0977,
-  0x7b78, 0x41de,
-  0x7b79, 0x0514,
-  0x7b7a, 0x41df,
-  0x7b7b, 0x1c80,
-  0x7b7c, 0x41e0,
-  0x7b7e, 0x0c26,
-  0x7b7f, 0x41e2,
-  0x7b80, 0x0865,
-  0x7b81, 0x41e3,
-  0x7b85, 0x1c8b,
-  0x7b86, 0x41e7,
-  0x7b8b, 0x1f86,
-  0x7b8c, 0x41ec,
-  0x7b8d, 0x0718,
-  0x7b8e, 0x41ed,
-  0x7b90, 0x1c84,
-  0x7b91, 0x41ef,
-  0x7b94, 0x0474,
-  0x7b95, 0x0813,
-  0x7b96, 0x41f2,
-  0x7b97, 0x0dd8,
-  0x7b98, 0x41f3,
-  0x7b9c, 0x1c8d,
-  0x7b9d, 0x1c89,
-  0x7b9e, 0x41f7,
-  0x7ba1, 0x0735,
-  0x7ba2, 0x1c8e,
-  0x7ba3, 0x41fa,
-  0x7ba6, 0x1c85,
-  0x7ba8, 0x1c8a,
-  0x7ba9, 0x0a88,
-  0x7baa, 0x1c8c,
-  0x7bab, 0x1c8f,
-  0x7bac, 0x1c88,
-  0x7bad, 0x0870,
-  0x7bae, 0x41fd,
-  0x7bb1, 0x0f51,
-  0x7bb2, 0x4200,
-  0x7bb4, 0x1c90,
-  0x7bb5, 0x4202,
-  0x7bb8, 0x1c87,
-  0x7bb9, 0x4205,
-  0x7bc0, 0x1fb3,
-  0x7bc1, 0x1c92,
-  0x7bc2, 0x420c,
-  0x7bc4, 0x1eef,
-  0x7bc5, 0x420e,
-  0x7bc6, 0x120a,
-  0x7bc7, 0x0bc9,
-  0x7bc8, 0x420f,
-  0x7bc9, 0x22a4,
-  0x7bca, 0x4210,
-  0x7bcb, 0x25e8,
-  0x7bcc, 0x1c93,
-  0x7bcd, 0x4211,
-  0x7bd1, 0x1c91,
-  0x7bd2, 0x4215,
-  0x7bd3, 0x0a4f,
-  0x7bd4, 0x4216,
-  0x7bd9, 0x06d8,
-  0x7bda, 0x1c95,
-  0x7bdb, 0x421b,
-  0x7bdd, 0x1c94,
-  0x7bde, 0x421d,
-  0x7be1, 0x055e,
-  0x7be2, 0x4220,
-  0x7be4, 0x25e3,
-  0x7be5, 0x1c96,
-  0x7be7, 0x4222,
-  0x7be9, 0x2111,
-  0x7bea, 0x1c98,
-  0x7beb, 0x4224,
-  0x7bee, 0x09a5,
-  0x7bef, 0x4227,
-  0x7bf1, 0x09d4,
-  0x7bf2, 0x4229,
-  0x7bf3, 0x25e6,
-  0x7bf4, 0x422a,
-  0x7bf7, 0x0bb2,
-  0x7bf8, 0x422d,
-  0x7bfc, 0x1c9b,
-  0x7bfd, 0x4231,
-  0x7bfe, 0x1c9a,
-  0x7bff, 0x4232,
-  0x7c00, 0x25e7,
-  0x7c01, 0x4233,
-  0x7c07, 0x055b,
-  0x7c08, 0x4239,
-  0x7c0b, 0x1c9e,
-  0x7c0c, 0x1c99,
-  0x7c0d, 0x2041,
-  0x7c0e, 0x423c,
-  0x7c0f, 0x1c9c,
-  0x7c10, 0x423d,
-  0x7c16, 0x1c9d,
-  0x7c17, 0x4243,
-  0x7c1e, 0x25ea,
-  0x7c1f, 0x1c9f,
-  0x7c20, 0x424a,
-  0x7c21, 0x1f8f,
-  0x7c22, 0x424b,
-  0x7c23, 0x25ec,
-  0x7c24, 0x424c,
-  0x7c26, 0x1ca1,
-  0x7c27, 0x07de,
-  0x7c28, 0x424e,
-  0x7c2a, 0x1ca0,
-  0x7c2b, 0x25eb,
-  0x7c2c, 0x4250,
-  0x7c38, 0x1ca2,
-  0x7c39, 0x425c,
-  0x7c3d, 0x20d0,
-  0x7c3e, 0x201d,
-  0x7c3f, 0x0485,
-  0x7c40, 0x1ca4,
-  0x7c41, 0x1ca3,
-  0x7c42, 0x4260,
-  0x7c43, 0x1ff7,
-  0x7c44, 0x4261,
-  0x7c4c, 0x1e8d,
-  0x7c4d, 0x0821,
-  0x7c4e, 0x4269,
-  0x7c5c, 0x25e9,
-  0x7c5d, 0x4277,
-  0x7c5f, 0x25ee,
-  0x7c60, 0x203a,
-  0x7c61, 0x4279,
-  0x7c64, 0x2693,
-  0x7c65, 0x427c,
-  0x7c69, 0x25e5,
-  0x7c6a, 0x25ed,
-  0x7c6b, 0x4280,
-  0x7c6c, 0x2009,
-  0x7c6d, 0x4281,
-  0x7c6e, 0x2065,
-  0x7c6f, 0x4282,
-  0x7c72, 0x26a3,
-  0x7c73, 0x0adc,
-  0x7c74, 0x12f5,
-  0x7c75, 0x4285,
-  0x7c7b, 0x09cb,
-  0x7c7c, 0x1cca,
-  0x7c7d, 0x122e,
-  0x7c7e, 0x428b,
-  0x7c89, 0x0678,
-  0x7c8a, 0x4296,
-  0x7c91, 0x1ccc,
-  0x7c92, 0x09ec,
-  0x7c93, 0x429d,
-  0x7c95, 0x0be8,
-  0x7c96, 0x429f,
-  0x7c97, 0x0559,
-  0x7c98, 0x1154,
-  0x7c99, 0x42a0,
-  0x7c9c, 0x1cce,
-  0x7c9d, 0x1ccd,
-  0x7c9e, 0x1ccf,
-  0x7c9f, 0x0dcf,
-  0x7ca0, 0x42a3,
-  0x7ca2, 0x1cd0,
-  0x7ca3, 0x42a5,
-  0x7ca4, 0x1104,
-  0x7ca5, 0x11df,
-  0x7ca6, 0x42a6,
-  0x7caa, 0x067d,
-  0x7cab, 0x42aa,
-  0x7cae, 0x0a01,
-  0x7caf, 0x42ad,
-  0x7cb1, 0x0a04,
-  0x7cb2, 0x1cd1,
-  0x7cb3, 0x08db,
-  0x7cb4, 0x42af,
-  0x7cb9, 0x0565,
-  0x7cba, 0x42b4,
-  0x7cbc, 0x1cd2,
-  0x7cbe, 0x08da,
-  0x7cbf, 0x42b6,
-  0x7cc1, 0x1cd4,
-  0x7cc2, 0x42b8,
-  0x7cc5, 0x1cd9,
-  0x7cc6, 0x42bb,
-  0x7cc7, 0x1cd5,
-  0x7cc8, 0x1cd8,
-  0x7cc9, 0x42bc,
-  0x7cca, 0x07b4,
-  0x7ccb, 0x42bd,
-  0x7ccc, 0x1cd6,
-  0x7cce, 0x42be,
-  0x7cd5, 0x06dd,
-  0x7cd6, 0x0e1a,
-  0x7cd7, 0x1cda,
-  0x7cd8, 0x42c5,
-  0x7cd9, 0x04a1,
-  0x7cda, 0x42c6,
-  0x7cdc, 0x0ad8,
-  0x7cdd, 0x25f5,
-  0x7cde, 0x1efc,
-  0x7cdf, 0x1126,
-  0x7ce0, 0x0944,
-  0x7ce1, 0x42c8,
-  0x7ce7, 0x2024,
-  0x7ce8, 0x1cdb,
-  0x7ce9, 0x42ce,
-  0x7cef, 0x0b75,
-  0x7cf0, 0x269b,
-  0x7cf1, 0x42d4,
-  0x7cf2, 0x25f3,
-  0x7cf3, 0x42d5,
-  0x7cf4, 0x22d9,
-  0x7cf5, 0x42d6,
-  0x7cf6, 0x25f4,
-  0x7cf7, 0x42d7,
-  0x7cf8, 0x1ce7,
-  0x7cf9, 0x241b,
-  0x7cfa, 0x42d8,
-  0x7cfb, 0x0f22,
-  0x7cfc, 0x42d9,
-  0x7cfe, 0x1fc8,
-  0x7cff, 0x42db,
-  0x7d00, 0x1f7b,
-  0x7d01, 0x42dc,
-  0x7d02, 0x241d,
-  0x7d03, 0x42dd,
-  0x7d04, 0x224c,
-  0x7d05, 0x1f48,
-  0x7d06, 0x241c,
-  0x7d07, 0x241e,
-  0x7d09, 0x20ff,
-  0x7d0a, 0x0ed8,
-  0x7d0b, 0x219a,
-  0x7d0c, 0x42de,
-  0x7d0d, 0x2091,
-  0x7d0e, 0x42df,
-  0x7d10, 0x20a7,
-  0x7d11, 0x42e1,
-  0x7d13, 0x2423,
-  0x7d14, 0x1e9b,
-  0x7d15, 0x2422,
-  0x7d16, 0x42e3,
-  0x7d17, 0x2110,
-  0x7d18, 0x42e4,
-  0x7d19, 0x228d,
-  0x7d1a, 0x1f71,
-  0x7d1b, 0x1ef8,
-  0x7d1c, 0x2421,
-  0x7d1d, 0x42e5,
-  0x7d20, 0x0dcd,
-  0x7d21, 0x1ef3,
-  0x7d22, 0x0dec,
-  0x7d23, 0x42e8,
-  0x7d27, 0x08c5,
-  0x7d28, 0x42ec,
-  0x7d2b, 0x122c,
-  0x7d2c, 0x42ef,
-  0x7d2f, 0x09c6,
-  0x7d30, 0x21b1,
-  0x7d31, 0x2426,
-  0x7d32, 0x2425,
-  0x7d33, 0x2120,
-  0x7d34, 0x42f2,
-  0x7d39, 0x211a,
-  0x7d3a, 0x2424,
-  0x7d3b, 0x42f7,
-  0x7d3c, 0x2428,
-  0x7d3d, 0x42f8,
-  0x7d3f, 0x242a,
-  0x7d40, 0x2429,
-  0x7d41, 0x42fa,
-  0x7d42, 0x2294,
-  0x7d43, 0x42fb,
-  0x7d44, 0x22be,
-  0x7d45, 0x42fc,
-  0x7d46, 0x1e31,
-  0x7d47, 0x42fd,
-  0x7d4e, 0x242c,
-  0x7d4f, 0x4304,
-  0x7d50, 0x1fb5,
-  0x7d51, 0x4305,
-  0x7d5d, 0x242b,
-  0x7d5e, 0x1faf,
-  0x7d5f, 0x4311,
-  0x7d61, 0x2068,
-  0x7d62, 0x21e4,
-  0x7d63, 0x4313,
-  0x7d66, 0x1f21,
-  0x7d67, 0x4316,
-  0x7d68, 0x2101,
-  0x7d69, 0x4317,
-  0x7d6e, 0x0fc0,
-  0x7d6f, 0x431c,
-  0x7d71, 0x217c,
-  0x7d72, 0x214a,
-  0x7d73, 0x242d,
-  0x7d74, 0x431e,
-  0x7d76, 0x1fd4,
-  0x7d77, 0x1ce8,
-  0x7d78, 0x4320,
-  0x7d79, 0x1fd1,
-  0x7d7a, 0x4321,
-  0x7d81, 0x1e33,
-  0x7d82, 0x4328,
-  0x7d83, 0x242f,
-  0x7d84, 0x4329,
-  0x7d86, 0x242e,
-  0x7d87, 0x432b,
-  0x7d88, 0x2430,
-  0x7d89, 0x21db,
-  0x7d8a, 0x432c,
-  0x7d8f, 0x2158,
-  0x7d90, 0x4331,
-  0x7d93, 0x1fc2,
-  0x7d94, 0x4334,
-  0x7d9c, 0x22b9,
-  0x7d9d, 0x433c,
-  0x7d9e, 0x2436,
-  0x7d9f, 0x433d,
-  0x7da2, 0x1e8e,
-  0x7da3, 0x2439,
-  0x7da4, 0x4340,
-  0x7da6, 0x1ce9,
-  0x7da7, 0x4342,
-  0x7dab, 0x21c5,
-  0x7dac, 0x2437,
-  0x7dad, 0x2192,
-  0x7dae, 0x1cea,
-  0x7daf, 0x4346,
-  0x7db0, 0x243a,
-  0x7db1, 0x1f19,
-  0x7db2, 0x218c,
-  0x7db3, 0x1e40,
-  0x7db4, 0x22b3,
-  0x7db5, 0x4347,
-  0x7db8, 0x205f,
-  0x7db9, 0x2438,
-  0x7dba, 0x2432,
-  0x7dbb, 0x2274,
-  0x7dbc, 0x434a,
-  0x7dbd, 0x1e9c,
-  0x7dbe, 0x2431,
-  0x7dbf, 0x2085,
-  0x7dc0, 0x434b,
-  0x7dc4, 0x2435,
-  0x7dc5, 0x434f,
-  0x7dc7, 0x243b,
-  0x7dc8, 0x4351,
-  0x7dca, 0x1fb7,
-  0x7dcb, 0x2433,
-  0x7dcc, 0x4353,
-  0x7dd1, 0x2054,
-  0x7dd2, 0x21de,
-  0x7dd3, 0x4358,
-  0x7dd4, 0x2434,
-  0x7dd5, 0x4359,
-  0x7dd7, 0x243d,
-  0x7dd8, 0x1f89,
-  0x7dd9, 0x243c,
-  0x7dda, 0x435b,
-  0x7ddd, 0x1f6e,
-  0x7dde, 0x1ed8,
-  0x7ddf, 0x435e,
-  0x7de0, 0x1ebf,
-  0x7de1, 0x2445,
-  0x7de2, 0x435f,
-  0x7de3, 0x2249,
-  0x7de4, 0x4360,
-  0x7de6, 0x2441,
-  0x7de7, 0x4362,
-  0x7de8, 0x1e47,
-  0x7de9, 0x1f56,
-  0x7dea, 0x4363,
-  0x7dec, 0x2086,
-  0x7ded, 0x4365,
-  0x7def, 0x2196,
-  0x7df0, 0x4367,
-  0x7df1, 0x2443,
-  0x7df2, 0x243f,
-  0x7df3, 0x4368,
-  0x7df4, 0x2023,
-  0x7df5, 0x4369,
-  0x7df6, 0x2442,
-  0x7df7, 0x436a,
-  0x7df9, 0x243e,
-  0x7dfa, 0x436c,
-  0x7dfb, 0x26a6,
-  0x7dfc, 0x436d,
-  0x7e00, 0x4371,
-  0x7e08, 0x234e,
-  0x7e09, 0x2446,
-  0x7e0a, 0x244b,
-  0x7e0b, 0x2444,
-  0x7e0c, 0x4379,
-  0x7e10, 0x2427,
-  0x7e11, 0x244c,
-  0x7e12, 0x437d,
-  0x7e1b, 0x1f0f,
-  0x7e1c, 0x4386,
-  0x7e1d, 0x2447,
-  0x7e1e, 0x2449,
-  0x7e1f, 0x2448,
-  0x7e20, 0x4387,
-  0x7e23, 0x21c2,
-  0x7e24, 0x438a,
-  0x7e27, 0x216e,
-  0x7e28, 0x438d,
-  0x7e2b, 0x1f03,
-  0x7e2c, 0x4390,
-  0x7e2d, 0x244a,
-  0x7e2e, 0x215c,
-  0x7e2f, 0x4391,
-  0x7e31, 0x22bb,
-  0x7e32, 0x2450,
-  0x7e33, 0x4393,
-  0x7e34, 0x2694,
-  0x7e35, 0x244f,
-  0x7e36, 0x25f6,
-  0x7e37, 0x2051,
-  0x7e38, 0x4394,
-  0x7e39, 0x244e,
-  0x7e3a, 0x4395,
-  0x7e3b, 0x1dfb,
-  0x7e3c, 0x4396,
-  0x7e3d, 0x22ba,
-  0x7e3e, 0x1f6d,
-  0x7e3f, 0x4397,
-  0x7e41, 0x064e,
-  0x7e42, 0x4399,
-  0x7e45, 0x2452,
-  0x7e46, 0x2451,
-  0x7e47, 0x1ceb,
-  0x7e48, 0x439c,
-  0x7e52, 0x2455,
-  0x7e53, 0x43a6,
-  0x7e54, 0x2289,
-  0x7e55, 0x2116,
-  0x7e56, 0x43a7,
-  0x7e5a, 0x2454,
-  0x7e5b, 0x43ab,
-  0x7e5e, 0x20fb,
-  0x7e5f, 0x43ae,
-  0x7e62, 0x2440,
-  0x7e63, 0x43b1,
-  0x7e69, 0x2126,
-  0x7e6a, 0x1f61,
-  0x7e6b, 0x269d,
-  0x7e6c, 0x43b7,
-  0x7e6d, 0x1f8a,
-  0x7e6e, 0x2456,
-  0x7e6f, 0x2459,
-  0x7e70, 0x2458,
-  0x7e71, 0x43b8,
-  0x7e73, 0x1fae,
-  0x7e74, 0x43ba,
-  0x7e79, 0x221a,
-  0x7e7a, 0x43bf,
-  0x7e7c, 0x1f7a,
-  0x7e7d, 0x244d,
-  0x7e7e, 0x2457,
-  0x7e7f, 0x43c1,
-  0x7e82, 0x1248,
-  0x7e83, 0x43c4,
-  0x7e88, 0x2453,
-  0x7e89, 0x43c9,
-  0x7e8a, 0x2420,
-  0x7e8b, 0x43ca,
-  0x7e8c, 0x21df,
-  0x7e8d, 0x2685,
-  0x7e8e, 0x43cb,
-  0x7e8f, 0x1e6e,
-  0x7e90, 0x43cc,
-  0x7e93, 0x2224,
-  0x7e94, 0x2670,
-  0x7e95, 0x43cf,
-  0x7e96, 0x21ba,
-  0x7e97, 0x43d0,
-  0x7e98, 0x245a,
-  0x7e99, 0x43d1,
-  0x7e9b, 0x1cec,
-  0x7e9c, 0x1fff,
-  0x7e9d, 0x43d3,
-  0x7e9f, 0x17d3,
-  0x7ea0, 0x08ef,
-  0x7ea1, 0x17d4,
-  0x7ea2, 0x07a3,
-  0x7ea3, 0x17d5,
-  0x7ea4, 0x0f38,
-  0x7ea5, 0x17d6,
-  0x7ea6, 0x10ff,
-  0x7ea7, 0x0829,
-  0x7ea8, 0x17d7,
-  0x7eaa, 0x0840,
-  0x7eab, 0x0cad,
-  0x7eac, 0x0ec2,
-  0x7ead, 0x17d9,
-  0x7eae, 0x43d5,
-  0x7eaf, 0x0542,
-  0x7eb0, 0x17da,
-  0x7eb1, 0x0ced,
-  0x7eb2, 0x06d4,
-  0x7eb3, 0x0b2c,
-  0x7eb4, 0x43d6,
-  0x7eb5, 0x123a,
-  0x7eb6, 0x0a81,
-  0x7eb7, 0x0674,
-  0x7eb8, 0x11bc,
-  0x7eb9, 0x0ed5,
-  0x7eba, 0x0661,
-  0x7ebb, 0x43d7,
-  0x7ebd, 0x0b67,
-  0x7ebe, 0x17db,
-  0x7ebf, 0x0f4c,
-  0x7ec0, 0x17dc,
-  0x7ec3, 0x0a00,
-  0x7ec4, 0x1246,
-  0x7ec5, 0x0d29,
-  0x7ec6, 0x0f25,
-  0x7ec7, 0x11ae,
-  0x7ec8, 0x11d4,
-  0x7ec9, 0x17df,
-  0x7eca, 0x03f8,
-  0x7ecb, 0x17e0,
-  0x7ecd, 0x0d15,
-  0x7ece, 0x1076,
-  0x7ecf, 0x08dc,
-  0x7ed0, 0x17e2,
-  0x7ed1, 0x03fe,
-  0x7ed2, 0x0cb9,
-  0x7ed3, 0x08b2,
-  0x7ed4, 0x17e3,
-  0x7ed5, 0x0ca1,
-  0x7ed6, 0x43d9,
-  0x7ed7, 0x17e4,
-  0x7ed8, 0x07fb,
-  0x7ed9, 0x06f3,
-  0x7eda, 0x0fcd,
-  0x7edb, 0x17e5,
-  0x7edc, 0x0a8e,
-  0x7edd, 0x0927,
-  0x7ede, 0x089b,
-  0x7edf, 0x0e64,
-  0x7ee0, 0x17e6,
-  0x7ee2, 0x091d,
-  0x7ee3, 0x0fb0,
-  0x7ee4, 0x43da,
-  0x7ee5, 0x0ddc,
-  0x7ee6, 0x0e23,
-  0x7ee7, 0x083f,
-  0x7ee8, 0x17e8,
-  0x7ee9, 0x081b,
-  0x7eea, 0x0fc2,
-  0x7eeb, 0x17e9,
-  0x7eec, 0x43db,
-  0x7eed, 0x0fc3,
-  0x7eee, 0x17ea,
-  0x7ef0, 0x0545,
-  0x7ef1, 0x17ec,
-  0x7ef3, 0x0d37,
-  0x7ef4, 0x0ebb,
-  0x7ef5, 0x0ae5,
-  0x7ef6, 0x17ef,
-  0x7ef7, 0x042a,
-  0x7ef8, 0x0516,
-  0x7ef9, 0x43dc,
-  0x7efa, 0x17f0,
-  0x7efc, 0x1238,
-  0x7efd, 0x1161,
-  0x7efe, 0x17f2,
-  0x7eff, 0x0a73,
-  0x7f00, 0x1217,
-  0x7f01, 0x17f3,
-  0x7f04, 0x085d,
-  0x7f05, 0x0aea,
-  0x7f06, 0x09ad,
-  0x7f07, 0x17f6,
-  0x7f09, 0x081c,
-  0x7f0a, 0x43dd,
-  0x7f0b, 0x17f8,
-  0x7f0d, 0x17ee,
-  0x7f0e, 0x060f,
-  0x7f0f, 0x17fa,
-  0x7f10, 0x43de,
-  0x7f11, 0x17fb,
-  0x7f13, 0x07cf,
-  0x7f14, 0x05bf,
-  0x7f15, 0x0a6d,
-  0x7f16, 0x0449,
-  0x7f17, 0x17fd,
-  0x7f18, 0x10f8,
-  0x7f19, 0x17fe,
-  0x7f1a, 0x06ba,
-  0x7f1b, 0x1800,
-  0x7f1c, 0x17ff,
-  0x7f1d, 0x0689,
-  0x7f1e, 0x43df,
-  0x7f1f, 0x1801,
-  0x7f20, 0x04bf,
-  0x7f21, 0x1802,
-  0x7f28, 0x108c,
-  0x7f29, 0x0dea,
-  0x7f2a, 0x1809,
-  0x7f2e, 0x0d02,
-  0x7f2f, 0x180d,
-  0x7f34, 0x089a,
-  0x7f35, 0x1812,
-  0x7f36, 0x1c5e,
-  0x7f37, 0x43e0,
-  0x7f38, 0x06d2,
-  0x7f39, 0x43e1,
-  0x7f3a, 0x0c8c,
-  0x7f3b, 0x43e2,
-  0x7f42, 0x1c5f,
-  0x7f43, 0x43e9,
-  0x7f44, 0x1c60,
-  0x7f46, 0x43ea,
-  0x7f4c, 0x25e2,
-  0x7f4d, 0x43f0,
-  0x7f4e, 0x269a,
-  0x7f4f, 0x43f1,
-  0x7f50, 0x0737,
-  0x7f51, 0x0ea9,
-  0x7f52, 0x43f2,
-  0x7f54, 0x129e,
-  0x7f55, 0x0768,
-  0x7f56, 0x43f4,
-  0x7f57, 0x0a85,
-  0x7f58, 0x1a81,
-  0x7f59, 0x43f5,
-  0x7f5a, 0x0640,
-  0x7f5b, 0x43f6,
-  0x7f5f, 0x1a83,
-  0x7f60, 0x43fa,
-  0x7f61, 0x1a82,
-  0x7f62, 0x03e0,
-  0x7f63, 0x43fb,
-  0x7f68, 0x1a85,
-  0x7f69, 0x1177,
-  0x7f6a, 0x124c,
-  0x7f6b, 0x4400,
-  0x7f6e, 0x11c2,
-  0x7f6f, 0x4403,
-  0x7f70, 0x1eea,
-  0x7f71, 0x1a87,
-  0x7f72, 0x0d87,
-  0x7f73, 0x4404,
-  0x7f74, 0x1a86,
-  0x7f75, 0x4405,
-  0x7f77, 0x1e2c,
-  0x7f78, 0x4407,
-  0x7f79, 0x1a88,
-  0x7f7a, 0x4408,
-  0x7f7e, 0x1a8a,
-  0x7f7f, 0x440c,
-  0x7f81, 0x1a89,
-  0x7f82, 0x440e,
-  0x7f85, 0x2062,
-  0x7f86, 0x24f1,
-  0x7f87, 0x4411,
-  0x7f88, 0x24f2,
-  0x7f89, 0x4412,
-  0x7f8a, 0x101b,
-  0x7f8b, 0x4413,
-  0x7f8c, 0x0c39,
-  0x7f8d, 0x4414,
-  0x7f8e, 0x0ac5,
-  0x7f8f, 0x4415,
-  0x7f94, 0x06dc,
-  0x7f95, 0x441a,
-  0x7f9a, 0x0a30,
-  0x7f9b, 0x441f,
-  0x7f9d, 0x1cc4,
-  0x7f9e, 0x0faa,
-  0x7f9f, 0x1cc5,
-  0x7fa0, 0x4421,
-  0x7fa1, 0x0f48,
-  0x7fa2, 0x4422,
-  0x7fa4, 0x0c95,
-  0x7fa5, 0x25f2,
-  0x7fa6, 0x4424,
-  0x7fa7, 0x1cc6,
-  0x7fa8, 0x4425,
-  0x7fa9, 0x2215,
-  0x7faa, 0x4426,
-  0x7faf, 0x1cc7,
-  0x7fb1, 0x442b,
-  0x7fb2, 0x1cc9,
-  0x7fb3, 0x442c,
-  0x7fb8, 0x130e,
-  0x7fb9, 0x06f9,
-  0x7fba, 0x4431,
-  0x7fbc, 0x176d,
-  0x7fbd, 0x10d5,
-  0x7fbe, 0x4433,
-  0x7fbf, 0x1cde,
-  0x7fc0, 0x4434,
-  0x7fc1, 0x0edb,
-  0x7fc2, 0x4435,
-  0x7fc5, 0x0506,
-  0x7fc6, 0x4438,
-  0x7fca, 0x1b98,
-  0x7fcb, 0x443c,
-  0x7fcc, 0x1075,
-  0x7fcd, 0x443d,
-  0x7fce, 0x1cdf,
-  0x7fcf, 0x443e,
-  0x7fd2, 0x21ae,
-  0x7fd3, 0x4441,
-  0x7fd4, 0x0f55,
-  0x7fd5, 0x1ce0,
-  0x7fd6, 0x4442,
-  0x7fd8, 0x0c49,
-  0x7fd9, 0x4444,
-  0x7fdf, 0x05b5,
-  0x7fe0, 0x0567,
-  0x7fe1, 0x1ce2,
-  0x7fe2, 0x444a,
-  0x7fe5, 0x1ce1,
-  0x7fe6, 0x1ce3,
-  0x7fe7, 0x444d,
-  0x7fe9, 0x1ce4,
-  0x7fea, 0x444f,
-  0x7fee, 0x1ce5,
-  0x7fef, 0x4453,
-  0x7ff0, 0x0769,
-  0x7ff1, 0x03ca,
-  0x7ff2, 0x4454,
-  0x7ff3, 0x1ce6,
-  0x7ff4, 0x4455,
-  0x7ff9, 0x20e0,
-  0x7ffa, 0x445a,
-  0x7ffb, 0x064a,
-  0x7ffc, 0x1074,
-  0x7ffd, 0x445b,
-  0x8000, 0x1032,
-  0x8001, 0x09ba,
-  0x8002, 0x445e,
-  0x8003, 0x0949,
-  0x8004, 0x1953,
-  0x8005, 0x1180,
-  0x8006, 0x191a,
-  0x8007, 0x445f,
-  0x800b, 0x1bd7,
-  0x800c, 0x0637,
-  0x800d, 0x0d98,
-  0x800e, 0x4463,
-  0x8010, 0x0b30,
-  0x8011, 0x4465,
-  0x8012, 0x1bcb,
-  0x8013, 0x4466,
-  0x8014, 0x1bcc,
-  0x8015, 0x06f6,
-  0x8016, 0x1bcd,
-  0x8017, 0x077b,
-  0x8018, 0x1108,
-  0x8019, 0x03dd,
-  0x801a, 0x4467,
-  0x801c, 0x1bce,
-  0x801d, 0x4469,
-  0x8020, 0x1bcf,
-  0x8021, 0x446c,
-  0x8022, 0x1bd0,
-  0x8023, 0x446d,
-  0x8025, 0x1bd1,
-  0x8028, 0x1bd5,
-  0x8029, 0x1bd4,
-  0x802a, 0x0b96,
-  0x802b, 0x446f,
-  0x802c, 0x25c2,
-  0x802d, 0x4470,
-  0x802e, 0x25c1,
-  0x802f, 0x4471,
-  0x8031, 0x1bd6,
-  0x8032, 0x4473,
-  0x8033, 0x0639,
-  0x8034, 0x4474,
-  0x8035, 0x1bd8,
-  0x8036, 0x1035,
-  0x8037, 0x14b1,
-  0x8038, 0x0dbf,
-  0x8039, 0x4475,
-  0x803b, 0x0501,
-  0x803c, 0x4477,
-  0x803d, 0x0583,
-  0x803e, 0x4478,
-  0x803f, 0x06fb,
-  0x8040, 0x4479,
-  0x8042, 0x0b57,
-  0x8043, 0x1bd9,
-  0x8044, 0x447b,
-  0x8046, 0x1bda,
-  0x8047, 0x447d,
-  0x804a, 0x0a0d,
-  0x804b, 0x0a44,
-  0x804c, 0x11af,
-  0x804d, 0x1bdb,
-  0x804e, 0x4480,
-  0x8052, 0x1bdc,
-  0x8053, 0x4484,
-  0x8054, 0x09f3,
-  0x8055, 0x4485,
-  0x8056, 0x2128,
-  0x8057, 0x4486,
-  0x8058, 0x0bd7,
-  0x8059, 0x4487,
-  0x805a, 0x090a,
-  0x805b, 0x4488,
-  0x805e, 0x2199,
-  0x805f, 0x448b,
-  0x8069, 0x1bdd,
-  0x806a, 0x0552,
-  0x806b, 0x4495,
-  0x806f, 0x2017,
-  0x8070, 0x1ea0,
-  0x8071, 0x1bde,
-  0x8072, 0x2125,
-  0x8073, 0x214d,
-  0x8074, 0x4499,
-  0x8075, 0x25c4,
-  0x8076, 0x209d,
-  0x8077, 0x228a,
-  0x8078, 0x449a,
-  0x8079, 0x25c3,
-  0x807a, 0x449b,
-  0x807d, 0x2179,
-  0x807e, 0x2038,
-  0x807f, 0x1a1e,
-  0x8080, 0x1a1d,
-  0x8081, 0x449e,
-  0x8083, 0x0dd5,
-  0x8084, 0x1065,
-  0x8085, 0x2155,
-  0x8086, 0x0db6,
-  0x8087, 0x1179,
-  0x8088, 0x44a0,
-  0x8089, 0x0cbd,
-  0x808a, 0x44a1,
-  0x808b, 0x09ca,
-  0x808c, 0x0814,
-  0x808d, 0x44a2,
-  0x8093, 0x1971,
-  0x8094, 0x44a8,
-  0x8096, 0x0f6f,
-  0x8097, 0x44aa,
-  0x8098, 0x11e1,
-  0x8099, 0x44ab,
-  0x809a, 0x0606,
-  0x809b, 0x06d3,
-  0x809c, 0x1970,
-  0x809d, 0x06c9,
-  0x809e, 0x44ac,
-  0x809f, 0x196f,
-  0x80a0, 0x04cb,
-  0x80a1, 0x0722,
-  0x80a2, 0x11aa,
-  0x80a3, 0x44ad,
-  0x80a4, 0x0691,
-  0x80a5, 0x0667,
-  0x80a6, 0x44ae,
-  0x80a9, 0x085a,
-  0x80aa, 0x065b,
-  0x80ab, 0x1976,
-  0x80ac, 0x44b1,
-  0x80ad, 0x1977,
-  0x80ae, 0x03c4,
-  0x80af, 0x095c,
-  0x80b0, 0x44b2,
-  0x80b1, 0x1975,
-  0x80b2, 0x10e2,
-  0x80b3, 0x44b3,
-  0x80b4, 0x1978,
-  0x80b5, 0x44b4,
-  0x80b7, 0x1979,
-  0x80b8, 0x44b6,
-  0x80ba, 0x066b,
-  0x80bb, 0x44b8,
-  0x80bc, 0x1972,
-  0x80bd, 0x1974,
-  0x80be, 0x0d2f,
-  0x80bf, 0x11d6,
-  0x80c0, 0x116e,
-  0x80c1, 0x0f7d,
-  0x80c2, 0x197f,
-  0x80c3, 0x0ec7,
-  0x80c4, 0x1980,
-  0x80c5, 0x44b9,
-  0x80c6, 0x0589,
-  0x80c7, 0x44ba,
-  0x80cc, 0x041c,
-  0x80cd, 0x1982,
-  0x80ce, 0x0df8,
-  0x80cf, 0x44bf,
-  0x80d6, 0x0b97,
-  0x80d7, 0x1983,
-  0x80d8, 0x44c6,
-  0x80d9, 0x1981,
-  0x80da, 0x0ba0,
-  0x80db, 0x197e,
-  0x80dc, 0x0d3b,
-  0x80dd, 0x1985,
-  0x80de, 0x0406,
-  0x80df, 0x44c7,
-  0x80e1, 0x07b1,
-  0x80e2, 0x44c9,
-  0x80e4, 0x126d,
-  0x80e5, 0x1bc7,
-  0x80e6, 0x44cb,
-  0x80e7, 0x197a,
-  0x80eb, 0x1986,
-  0x80ec, 0x179a,
-  0x80ed, 0x1989,
-  0x80ee, 0x44cc,
-  0x80ef, 0x0975,
-  0x80f0, 0x104f,
-  0x80f1, 0x1987,
-  0x80f2, 0x198c,
-  0x80f3, 0x06e7,
-  0x80f4, 0x1988,
-  0x80f5, 0x44cd,
-  0x80f6, 0x088b,
-  0x80f7, 0x44ce,
-  0x80f8, 0x0fa3,
-  0x80f9, 0x44cf,
-  0x80fa, 0x03c2,
-  0x80fb, 0x44d0,
-  0x80fc, 0x198d,
-  0x80fd, 0x0b3f,
-  0x80fe, 0x44d1,
-  0x8100, 0x44d3,
-  0x8102, 0x11ab,
-  0x8103, 0x44d5,
-  0x8105, 0x21d2,
-  0x8106, 0x0563,
-  0x8107, 0x44d7,
-  0x8109, 0x0a9d,
-  0x810a, 0x082c,
-  0x810b, 0x44d9,
-  0x810d, 0x198a,
-  0x810f, 0x1123,
-  0x8110, 0x0c09,
-  0x8111, 0x0b37,
-  0x8112, 0x198f,
-  0x8113, 0x0b68,
-  0x8114, 0x1309,
-  0x8115, 0x44db,
-  0x8116, 0x0478,
-  0x8117, 0x44dc,
-  0x8118, 0x1994,
-  0x8119, 0x44dd,
-  0x811a, 0x0896,
-  0x811b, 0x24c7,
-  0x811c, 0x44de,
-  0x811e, 0x1992,
-  0x811f, 0x44e0,
-  0x812c, 0x1993,
-  0x812d, 0x44ed,
-  0x812f, 0x06a7,
-  0x8130, 0x44ef,
-  0x8131, 0x0e82,
-  0x8132, 0x1995,
-  0x8133, 0x44f0,
-  0x8136, 0x1991,
-  0x8137, 0x44f3,
-  0x8138, 0x09fc,
-  0x8139, 0x2279,
-  0x813a, 0x44f4,
-  0x813e, 0x0bc1,
-  0x813f, 0x44f8,
-  0x8146, 0x0e46,
-  0x8147, 0x44ff,
-  0x8148, 0x1996,
-  0x8149, 0x4500,
-  0x814a, 0x099b,
-  0x814b, 0x103f,
-  0x814c, 0x1997,
-  0x814d, 0x4501,
-  0x814e, 0x2123,
-  0x814f, 0x4502,
-  0x8150, 0x06aa,
-  0x8151, 0x06a8,
-  0x8152, 0x4503,
-  0x8153, 0x1998,
-  0x8154, 0x0c38,
-  0x8155, 0x0ea4,
-  0x8156, 0x24c5,
-  0x8157, 0x4504,
-  0x8159, 0x199a,
-  0x815b, 0x4506,
-  0x8160, 0x199d,
-  0x8161, 0x24c9,
-  0x8162, 0x450b,
-  0x8165, 0x0f93,
-  0x8166, 0x2094,
-  0x8167, 0x19a2,
-  0x8168, 0x450e,
-  0x8169, 0x199e,
-  0x816a, 0x450f,
-  0x816b, 0x2296,
-  0x816c, 0x4510,
-  0x816d, 0x19a1,
-  0x816e, 0x0cd4,
-  0x816f, 0x4511,
-  0x8170, 0x1025,
-  0x8171, 0x199c,
-  0x8172, 0x4512,
-  0x8174, 0x1999,
-  0x8175, 0x4514,
-  0x8178, 0x1e77,
-  0x8179, 0x06b4,
-  0x817a, 0x0f46,
-  0x817b, 0x0b48,
-  0x817c, 0x199f,
-  0x817e, 0x0e2d,
-  0x817f, 0x0e79,
-  0x8180, 0x03fd,
-  0x8181, 0x4517,
-  0x8182, 0x19a6,
-  0x8183, 0x4518,
-  0x8188, 0x19a5,
-  0x8189, 0x451d,
-  0x818a, 0x0479,
-  0x818b, 0x451e,
-  0x818f, 0x06db,
-  0x8190, 0x4522,
-  0x8191, 0x19a7,
-  0x8192, 0x4523,
-  0x8198, 0x0455,
-  0x8199, 0x4529,
-  0x819a, 0x1f06,
-  0x819b, 0x0e18,
-  0x819c, 0x0b07,
-  0x819d, 0x0f12,
-  0x819e, 0x452a,
-  0x81a0, 0x1fa5,
-  0x81a1, 0x452c,
-  0x81a3, 0x19a9,
-  0x81a4, 0x452e,
-  0x81a6, 0x19b0,
-  0x81a7, 0x4530,
-  0x81a8, 0x0bb3,
-  0x81a9, 0x2099,
-  0x81aa, 0x19aa,
-  0x81ab, 0x4531,
-  0x81b3, 0x0cfe,
-  0x81b4, 0x4539,
-  0x81ba, 0x1641,
-  0x81bb, 0x19ae,
-  0x81bc, 0x453f,
-  0x81bd, 0x1ead,
-  0x81be, 0x24c8,
-  0x81bf, 0x20a8,
-  0x81c0, 0x0e7f,
-  0x81c1, 0x19af,
-  0x81c2, 0x0444,
-  0x81c3, 0x109c,
-  0x81c4, 0x4540,
-  0x81c6, 0x1063,
-  0x81c7, 0x4542,
-  0x81c9, 0x201f,
-  0x81ca, 0x19ad,
-  0x81cb, 0x4544,
-  0x81cc, 0x19ab,
-  0x81cd, 0x20c5,
-  0x81ce, 0x4545,
-  0x81cf, 0x24ca,
-  0x81d0, 0x4546,
-  0x81d8, 0x1ff0,
-  0x81d9, 0x454e,
-  0x81da, 0x24c6,
-  0x81db, 0x454f,
-  0x81df, 0x225d,
-  0x81e0, 0x22de,
-  0x81e1, 0x4553,
-  0x81e3, 0x04e1,
-  0x81e4, 0x4555,
-  0x81e7, 0x1902,
-  0x81e8, 0x202c,
-  0x81e9, 0x4558,
-  0x81ea, 0x1231,
-  0x81eb, 0x4559,
-  0x81ec, 0x1ca9,
-  0x81ed, 0x0519,
-  0x81ee, 0x455a,
-  0x81f3, 0x11c0,
-  0x81f5, 0x455f,
-  0x81fa, 0x2161,
-  0x81fb, 0x118a,
-  0x81fc, 0x08f9,
-  0x81fd, 0x4564,
-  0x81fe, 0x1ca5,
-  0x81ff, 0x4565,
-  0x8200, 0x102f,
-  0x8201, 0x1ca6,
-  0x8203, 0x4566,
-  0x8204, 0x1ca8,
-  0x8205, 0x08fa,
-  0x8206, 0x10c4,
-  0x8207, 0x223b,
-  0x8208, 0x21d9,
-  0x8209, 0x1fcb,
-  0x820a, 0x1fc9,
-  0x820b, 0x4567,
-  0x820c, 0x0d19,
-  0x820e, 0x4568,
-  0x8210, 0x1c62,
-  0x8211, 0x456a,
-  0x8212, 0x0d7d,
-  0x8213, 0x456b,
-  0x8214, 0x0e45,
-  0x8215, 0x456c,
-  0x821b, 0x1618,
-  0x821c, 0x0da9,
-  0x821d, 0x4572,
-  0x821e, 0x0ef7,
-  0x821f, 0x11da,
-  0x8220, 0x4573,
-  0x8221, 0x1cab,
-  0x8224, 0x4574,
-  0x8228, 0x1cb0,
-  0x8229, 0x4578,
-  0x822a, 0x0774,
-  0x822b, 0x1cb1,
-  0x822c, 0x03ee,
-  0x822d, 0x1cae,
-  0x822e, 0x4579,
-  0x822f, 0x1caf,
-  0x8230, 0x0873,
-  0x8231, 0x049c,
-  0x8232, 0x457a,
-  0x8233, 0x1cb4,
-  0x8235, 0x0625,
-  0x8236, 0x0477,
-  0x8237, 0x0f3c,
-  0x8238, 0x1cb2,
-  0x8239, 0x052f,
-  0x823a, 0x457b,
-  0x823b, 0x1cb3,
-  0x823c, 0x457c,
-  0x823e, 0x1cb6,
-  0x823f, 0x457e,
-  0x8244, 0x1cb7,
-  0x8245, 0x4583,
-  0x8247, 0x0e58,
-  0x8248, 0x4585,
-  0x8249, 0x1cb8,
-  0x824a, 0x4586,
-  0x824b, 0x1cb9,
-  0x824c, 0x4587,
-  0x824f, 0x1cba,
-  0x8250, 0x458a,
-  0x8258, 0x0dc7,
-  0x8259, 0x1e61,
-  0x825a, 0x1cbb,
-  0x825b, 0x4592,
-  0x825f, 0x1cbc,
-  0x8260, 0x4596,
-  0x8264, 0x25ef,
-  0x8265, 0x459a,
-  0x8266, 0x1f98,
-  0x8267, 0x459b,
-  0x8268, 0x1cbd,
-  0x8269, 0x459c,
-  0x826b, 0x25f0,
-  0x826c, 0x459e,
-  0x826e, 0x1cdc,
-  0x826f, 0x0a05,
-  0x8270, 0x085b,
-  0x8271, 0x1f88,
-  0x8272, 0x0ce4,
-  0x8273, 0x1007,
-  0x8274, 0x1771,
-  0x8275, 0x45a0,
-  0x8277, 0x21f8,
-  0x8278, 0x45a2,
-  0x8279, 0x13e1,
-  0x827a, 0x105c,
-  0x827b, 0x45a3,
-  0x827d, 0x13e2,
-  0x827e, 0x03b7,
-  0x827f, 0x13e3,
-  0x8280, 0x45a5,
-  0x8282, 0x08ab,
-  0x8283, 0x45a7,
-  0x8284, 0x13e7,
-  0x8285, 0x45a8,
-  0x8288, 0x1278,
-  0x8289, 0x45ab,
-  0x828a, 0x13e5,
-  0x828b, 0x10d8,
-  0x828c, 0x45ac,
-  0x828d, 0x0d0f,
-  0x828e, 0x13e8,
-  0x828f, 0x13e4,
-  0x8290, 0x45ad,
-  0x8291, 0x13e9,
-  0x8292, 0x0aa7,
-  0x8293, 0x45ae,
-  0x8297, 0x13ea,
-  0x8298, 0x13f3,
-  0x8299, 0x13eb,
-  0x829a, 0x45b2,
-  0x829c, 0x0eee,
-  0x829d, 0x11a4,
-  0x829e, 0x45b4,
-  0x829f, 0x13fd,
-  0x82a0, 0x45b5,
-  0x82a1, 0x13fb,
-  0x82a2, 0x45b6,
-  0x82a4, 0x1400,
-  0x82a5, 0x08b7,
-  0x82a6, 0x0a52,
-  0x82a7, 0x45b8,
-  0x82a8, 0x13e6,
-  0x82a9, 0x13f9,
-  0x82aa, 0x13fc,
-  0x82ab, 0x13ec,
-  0x82ac, 0x066f,
-  0x82ad, 0x03d0,
-  0x82ae, 0x13f5,
-  0x82af, 0x0f89,
-  0x82b0, 0x13ef,
-  0x82b1, 0x07bd,
-  0x82b2, 0x45b9,
-  0x82b3, 0x0659,
-  0x82b4, 0x13fa,
-  0x82b5, 0x45ba,
-  0x82b7, 0x13f4,
-  0x82b8, 0x13ed,
-  0x82b9, 0x0c58,
-  0x82ba, 0x45bc,
-  0x82bb, 0x2322,
-  0x82bc, 0x45bd,
-  0x82bd, 0x0fe8,
-  0x82be, 0x13ee,
-  0x82bf, 0x45be,
-  0x82c1, 0x13f8,
-  0x82c2, 0x45c0,
-  0x82c4, 0x13fe,
-  0x82c5, 0x45c2,
-  0x82c7, 0x0ebc,
-  0x82c8, 0x13f0,
-  0x82c9, 0x45c4,
-  0x82ca, 0x13f1,
-  0x82cb, 0x13f6,
-  0x82cd, 0x049b,
-  0x82ce, 0x13ff,
-  0x82cf, 0x0dca,
-  0x82d0, 0x45c5,
-  0x82d1, 0x10fa,
-  0x82d2, 0x1409,
-  0x82d3, 0x140d,
-  0x82d4, 0x0df9,
-  0x82d5, 0x1414,
-  0x82d6, 0x45c6,
-  0x82d7, 0x0aec,
-  0x82d8, 0x140a,
-  0x82d9, 0x45c7,
-  0x82db, 0x094e,
-  0x82dc, 0x1407,
-  0x82dd, 0x45c9,
-  0x82de, 0x0405,
-  0x82df, 0x070f,
-  0x82e0, 0x1413,
-  0x82e1, 0x1401,
-  0x82e2, 0x45ca,
-  0x82e3, 0x13f2,
-  0x82e4, 0x1404,
-  0x82e5, 0x0ccf,
-  0x82e6, 0x096d,
-  0x82e7, 0x2336,
-  0x82e8, 0x45cb,
-  0x82eb, 0x0cf4,
-  0x82ec, 0x45ce,
-  0x82ef, 0x0426,
-  0x82f0, 0x45d1,
-  0x82f1, 0x1087,
-  0x82f2, 0x45d2,
-  0x82f4, 0x1408,
-  0x82f5, 0x45d4,
-  0x82f7, 0x1403,
-  0x82f8, 0x45d6,
-  0x82f9, 0x0bda,
-  0x82fa, 0x45d7,
-  0x82fb, 0x140c,
-  0x82fc, 0x45d8,
-  0x8300, 0x45dc,
-  0x8301, 0x121f,
-  0x8302, 0x0ab4,
-  0x8303, 0x0653,
-  0x8304, 0x0c4e,
-  0x8305, 0x0aae,
-  0x8306, 0x1410,
-  0x8307, 0x1406,
-  0x8308, 0x1419,
-  0x8309, 0x1402,
-  0x830a, 0x45dd,
-  0x830c, 0x140b,
-  0x830d, 0x45df,
-  0x830e, 0x08d4,
-  0x830f, 0x1405,
-  0x8310, 0x45e0,
-  0x8311, 0x140e,
-  0x8312, 0x45e1,
-  0x8314, 0x1411,
-  0x8316, 0x45e3,
-  0x8317, 0x1426,
-  0x8318, 0x45e4,
-  0x831a, 0x140f,
-  0x831b, 0x142e,
-  0x831c, 0x1415,
-  0x831d, 0x45e6,
-  0x8327, 0x085e,
-  0x8328, 0x0547,
-  0x8329, 0x45f0,
-  0x832b, 0x0aa8,
-  0x832c, 0x04ae,
-  0x832d, 0x1428,
-  0x832e, 0x45f2,
-  0x832f, 0x1420,
-  0x8330, 0x45f3,
-  0x8331, 0x141d,
-  0x8332, 0x45f4,
-  0x8333, 0x142a,
-  0x8334, 0x141c,
-  0x8335, 0x1077,
-  0x8336, 0x04af,
-  0x8337, 0x45f5,
-  0x8338, 0x0cb2,
-  0x8339, 0x0cbe,
-  0x833a, 0x1429,
-  0x833b, 0x45f6,
-  0x833c, 0x141b,
-  0x833d, 0x45f7,
-  0x8340, 0x1425,
-  0x8341, 0x45fa,
-  0x8343, 0x1423,
-  0x8344, 0x45fc,
-  0x8346, 0x08d2,
-  0x8347, 0x1422,
-  0x8348, 0x45fe,
-  0x8349, 0x04a4,
-  0x834a, 0x45ff,
-  0x834f, 0x1421,
-  0x8350, 0x0869,
-  0x8351, 0x1416,
-  0x8352, 0x07d9,
-  0x8353, 0x4604,
-  0x8354, 0x09de,
-  0x8355, 0x4605,
-  0x835a, 0x0847,
-  0x835b, 0x1417,
-  0x835d, 0x460a,
-  0x835e, 0x141f,
-  0x835f, 0x1424,
-  0x8360, 0x1427,
-  0x8361, 0x0595,
-  0x8362, 0x460b,
-  0x8363, 0x0cb4,
-  0x8364, 0x07fc,
-  0x8365, 0x142c,
-  0x8366, 0x142b,
-  0x8367, 0x1090,
-  0x8368, 0x142d,
-  0x8369, 0x142f,
-  0x836a, 0x1431,
-  0x836b, 0x1078,
-  0x836c, 0x1430,
-  0x836d, 0x1432,
-  0x836f, 0x1030,
-  0x8370, 0x460c,
-  0x8377, 0x0780,
-  0x8378, 0x1435,
-  0x8379, 0x4613,
-  0x837b, 0x1442,
-  0x837c, 0x143d,
-  0x837d, 0x1440,
-  0x837e, 0x4615,
-  0x8385, 0x143c,
-  0x8386, 0x0bed,
-  0x8387, 0x461c,
-  0x8389, 0x09dd,
-  0x838a, 0x22ab,
-  0x838b, 0x461e,
-  0x838e, 0x0ce8,
-  0x838f, 0x4621,
-  0x8392, 0x141a,
-  0x8393, 0x143a,
-  0x8394, 0x4624,
-  0x8396, 0x1fbf,
-  0x8397, 0x4626,
-  0x8398, 0x1443,
-  0x8399, 0x4627,
-  0x839b, 0x141e,
-  0x839c, 0x143b,
-  0x839d, 0x4629,
-  0x839e, 0x1444,
-  0x839f, 0x462a,
-  0x83a0, 0x1438,
-  0x83a1, 0x462b,
-  0x83a2, 0x1f7d,
-  0x83a3, 0x462c,
-  0x83a7, 0x2333,
-  0x83a8, 0x1445,
-  0x83a9, 0x143f,
-  0x83aa, 0x1439,
-  0x83ab, 0x0b0d,
-  0x83ac, 0x4630,
-  0x83b0, 0x1434,
-  0x83b1, 0x099e,
-  0x83b2, 0x09f4,
-  0x83b3, 0x1436,
-  0x83b5, 0x4634,
-  0x83b6, 0x143e,
-  0x83b7, 0x0806,
-  0x83b8, 0x1441,
-  0x83b9, 0x108d,
-  0x83ba, 0x1446,
-  0x83bb, 0x4635,
-  0x83bc, 0x1447,
-  0x83bd, 0x0aac,
-  0x83be, 0x4636,
-  0x83c0, 0x145e,
-  0x83c1, 0x1448,
-  0x83c2, 0x4638,
-  0x83c5, 0x145d,
-  0x83c6, 0x463b,
-  0x83c7, 0x0716,
-  0x83c8, 0x463c,
-  0x83ca, 0x0904,
-  0x83cb, 0x463e,
-  0x83cc, 0x0929,
-  0x83cd, 0x463f,
-  0x83cf, 0x0781,
-  0x83d0, 0x4641,
-  0x83d4, 0x1456,
-  0x83d5, 0x4645,
-  0x83d6, 0x1451,
-  0x83d7, 0x4646,
-  0x83d8, 0x144b,
-  0x83d9, 0x4647,
-  0x83dc, 0x0492,
-  0x83dd, 0x144f,
-  0x83de, 0x464a,
-  0x83df, 0x1457,
-  0x83e0, 0x046b,
-  0x83e1, 0x1461,
-  0x83e2, 0x464b,
-  0x83e5, 0x144a,
-  0x83e6, 0x464e,
-  0x83e9, 0x0bef,
-  0x83ea, 0x145c,
-  0x83eb, 0x4651,
-  0x83ef, 0x1f4d,
-  0x83f0, 0x1460,
-  0x83f1, 0x0a2b,
-  0x83f2, 0x0663,
-  0x83f3, 0x4655,
-  0x83f8, 0x145a,
-  0x83fa, 0x465a,
-  0x83fd, 0x1450,
-  0x83fe, 0x465d,
-  0x8400, 0x465f,
-  0x8401, 0x1449,
-  0x8402, 0x4660,
-  0x8403, 0x1459,
-  0x8404, 0x0e24,
-  0x8405, 0x4661,
-  0x8406, 0x1455,
-  0x8407, 0x2334,
-  0x8408, 0x4662,
-  0x840a, 0x1ff1,
-  0x840b, 0x144e,
-  0x840c, 0x0acd,
-  0x840d, 0x0bdb,
-  0x840e, 0x0ebd,
-  0x840f, 0x1458,
-  0x8410, 0x4664,
-  0x8411, 0x1454,
-  0x8412, 0x4665,
-  0x8418, 0x144d,
-  0x8419, 0x466b,
-  0x841c, 0x1452,
-  0x841d, 0x0a83,
-  0x841e, 0x466e,
-  0x8424, 0x108e,
-  0x8426, 0x145f,
-  0x8427, 0x0f61,
-  0x8428, 0x0cd3,
-  0x8429, 0x4674,
-  0x842c, 0x218b,
-  0x842d, 0x4677,
-  0x8431, 0x1472,
-  0x8432, 0x467b,
-  0x8435, 0x2349,
-  0x8436, 0x467e,
-  0x8438, 0x1453,
-  0x8439, 0x4680,
-  0x843c, 0x146c,
-  0x843d, 0x0a8b,
-  0x843e, 0x4683,
-  0x8446, 0x146d,
-  0x8447, 0x468b,
-  0x8449, 0x220b,
-  0x844a, 0x468d,
-  0x8451, 0x1463,
-  0x8452, 0x2346,
-  0x8453, 0x4694,
-  0x8457, 0x11f7,
-  0x8458, 0x4698,
-  0x8459, 0x1465,
-  0x845a, 0x1464,
-  0x845b, 0x06eb,
-  0x845c, 0x1462,
-  0x845d, 0x4699,
-  0x8461, 0x0bee,
-  0x8462, 0x469d,
-  0x8463, 0x05ec,
-  0x8464, 0x2347,
-  0x8465, 0x469e,
-  0x8466, 0x2193,
-  0x8467, 0x469f,
-  0x8469, 0x146e,
-  0x846a, 0x46a1,
-  0x846b, 0x07b0,
-  0x846c, 0x1124,
-  0x846d, 0x1473,
-  0x846e, 0x46a2,
-  0x846f, 0x26a1,
-  0x8470, 0x46a3,
-  0x8471, 0x0553,
-  0x8472, 0x46a4,
-  0x8473, 0x1466,
-  0x8474, 0x46a5,
-  0x8475, 0x0988,
-  0x8476, 0x146f,
-  0x8477, 0x1f62,
-  0x8478, 0x146b,
-  0x8479, 0x46a6,
-  0x847a, 0x1469,
-  0x847b, 0x46a7,
-  0x8482, 0x05ba,
-  0x8483, 0x46ae,
-  0x8487, 0x1467,
-  0x8489, 0x146a,
-  0x848a, 0x46b2,
-  0x848b, 0x0880,
-  0x848c, 0x1470,
-  0x848d, 0x46b3,
-  0x848e, 0x1471,
-  0x848f, 0x46b4,
-  0x8493, 0x234d,
-  0x8494, 0x2348,
-  0x8495, 0x46b8,
-  0x8497, 0x1481,
-  0x8498, 0x46ba,
-  0x8499, 0x0ace,
-  0x849a, 0x46bb,
-  0x849c, 0x0dd7,
-  0x849d, 0x46bd,
-  0x84a1, 0x147e,
-  0x84a2, 0x46c1,
-  0x84af, 0x1297,
-  0x84b0, 0x46ce,
-  0x84b2, 0x0bf0,
-  0x84b3, 0x46d0,
-  0x84b4, 0x1480,
-  0x84b5, 0x46d1,
-  0x84b8, 0x1195,
-  0x84b9, 0x147f,
-  0x84ba, 0x147c,
-  0x84bb, 0x46d4,
-  0x84bc, 0x1e60,
-  0x84bd, 0x1478,
-  0x84be, 0x46d5,
-  0x84bf, 0x147b,
-  0x84c0, 0x2345,
-  0x84c1, 0x1474,
-  0x84c2, 0x46d6,
-  0x84c4, 0x0fb9,
-  0x84c5, 0x46d8,
-  0x84c9, 0x0cb3,
-  0x84ca, 0x147a,
-  0x84cb, 0x1f12,
-  0x84cc, 0x46dc,
-  0x84cd, 0x1475,
-  0x84ce, 0x46dd,
-  0x84d0, 0x1476,
-  0x84d1, 0x0de7,
-  0x84d2, 0x46df,
-  0x84d3, 0x1479,
-  0x84d4, 0x46e0,
-  0x84d6, 0x0436,
-  0x84d7, 0x46e2,
-  0x84dd, 0x09a1,
-  0x84de, 0x46e8,
-  0x84df, 0x082e,
-  0x84e0, 0x147d,
-  0x84e1, 0x46e9,
-  0x84e3, 0x1483,
-  0x84e4, 0x46eb,
-  0x84e5, 0x1482,
-  0x84e6, 0x1477,
-  0x84e7, 0x46ec,
-  0x84ec, 0x0baf,
-  0x84ed, 0x46f1,
-  0x84ee, 0x2018,
-  0x84ef, 0x2335,
-  0x84f0, 0x1487,
-  0x84f1, 0x46f2,
-  0x84fc, 0x148e,
-  0x84fd, 0x233c,
-  0x84fe, 0x46fd,
-  0x84ff, 0x148d,
-  0x8500, 0x46fe,
-  0x850c, 0x1484,
-  0x850d, 0x470a,
-  0x8511, 0x0af4,
-  0x8512, 0x470e,
-  0x8513, 0x0aa2,
-  0x8514, 0x266f,
-  0x8515, 0x470f,
-  0x8517, 0x1182,
-  0x8518, 0x4711,
-  0x851a, 0x0ec4,
-  0x851b, 0x4713,
-  0x851e, 0x2351,
-  0x851f, 0x1489,
-  0x8520, 0x4716,
-  0x8521, 0x0493,
-  0x8522, 0x4717,
-  0x8523, 0x1fa0,
-  0x8524, 0x4718,
-  0x8526, 0x2338,
-  0x8527, 0x471a,
-  0x852b, 0x0b4b,
-  0x852c, 0x0d76,
-  0x852d, 0x221b,
-  0x852e, 0x471e,
-  0x8537, 0x0c3b,
-  0x8538, 0x1486,
-  0x8539, 0x1488,
-  0x853a, 0x148a,
-  0x853b, 0x148c,
-  0x853c, 0x03b5,
-  0x853d, 0x0437,
-  0x853e, 0x4727,
-  0x8541, 0x2342,
-  0x8542, 0x472a,
-  0x8543, 0x1496,
-  0x8544, 0x472b,
-  0x8546, 0x234f,
-  0x8547, 0x472d,
-  0x8548, 0x1490,
-  0x8549, 0x0887,
-  0x854a, 0x0cca,
-  0x854b, 0x472e,
-  0x854e, 0x233d,
-  0x854f, 0x4731,
-  0x8552, 0x2344,
-  0x8553, 0x2331,
-  0x8554, 0x4734,
-  0x8555, 0x234b,
-  0x8556, 0x148b,
-  0x8557, 0x4735,
-  0x8558, 0x233b,
-  0x8559, 0x148f,
-  0x855a, 0x4736,
-  0x855e, 0x1493,
-  0x855f, 0x473a,
-  0x8562, 0x2350,
-  0x8563, 0x473d,
-  0x8564, 0x1492,
-  0x8565, 0x473e,
-  0x8568, 0x1491,
-  0x8569, 0x1eb4,
-  0x856a, 0x21a6,
-  0x856b, 0x4741,
-  0x856d, 0x21cb,
-  0x856e, 0x4743,
-  0x8572, 0x1497,
-  0x8573, 0x4747,
-  0x8574, 0x110f,
-  0x8575, 0x4748,
-  0x8577, 0x2355,
-  0x8578, 0x474a,
-  0x8579, 0x149d,
-  0x857a, 0x1494,
-  0x857b, 0x1498,
-  0x857c, 0x474b,
-  0x857e, 0x09c4,
-  0x857f, 0x474d,
-  0x8584, 0x040a,
-  0x8585, 0x14a0,
-  0x8586, 0x4752,
-  0x8587, 0x149b,
-  0x8588, 0x233e,
-  0x8589, 0x4753,
-  0x858a, 0x1f74,
-  0x858b, 0x4754,
-  0x858c, 0x2330,
-  0x858d, 0x4755,
-  0x858f, 0x149c,
-  0x8590, 0x4757,
-  0x8591, 0x2680,
-  0x8592, 0x4758,
-  0x8594, 0x20da,
-  0x8595, 0x475a,
-  0x859b, 0x0fcf,
-  0x859c, 0x149f,
-  0x859d, 0x4760,
-  0x859f, 0x234a,
-  0x85a0, 0x4762,
-  0x85a4, 0x1499,
-  0x85a5, 0x4766,
-  0x85a6, 0x1f91,
-  0x85a7, 0x4767,
-  0x85a8, 0x149a,
-  0x85a9, 0x2107,
-  0x85aa, 0x0f88,
-  0x85ab, 0x4768,
-  0x85ae, 0x149e,
-  0x85af, 0x0d84,
-  0x85b0, 0x14a3,
-  0x85b1, 0x476b,
-  0x85b7, 0x14a2,
-  0x85b8, 0x4771,
-  0x85b9, 0x14a1,
-  0x85ba, 0x233f,
-  0x85bb, 0x4772,
-  0x85c1, 0x14a5,
-  0x85c2, 0x4778,
-  0x85c9, 0x08b6,
-  0x85ca, 0x477f,
-  0x85cd, 0x1ff4,
-  0x85ce, 0x2343,
-  0x85cf, 0x049f,
-  0x85d0, 0x0aef,
-  0x85d1, 0x4782,
-  0x85d3, 0x14a4,
-  0x85d4, 0x4784,
-  0x85d5, 0x0b7b,
-  0x85d6, 0x4785,
-  0x85dc, 0x14a6,
-  0x85dd, 0x2212,
-  0x85de, 0x478b,
-  0x85e4, 0x0e2c,
-  0x85e5, 0x2207,
-  0x85e6, 0x4791,
-  0x85e9, 0x0647,
-  0x85ea, 0x2359,
-  0x85eb, 0x4794,
-  0x85f4, 0x2254,
-  0x85f5, 0x479d,
-  0x85f6, 0x2332,
-  0x85f7, 0x479e,
-  0x85f9, 0x1e26,
-  0x85fa, 0x2357,
-  0x85fb, 0x1128,
-  0x85fc, 0x47a0,
-  0x85ff, 0x14a7,
-  0x8600, 0x47a3,
-  0x8604, 0x2358,
-  0x8605, 0x14a9,
-  0x8606, 0x2042,
-  0x8607, 0x2153,
-  0x8608, 0x47a7,
-  0x860b, 0x20bb,
-  0x860c, 0x47aa,
-  0x8611, 0x0b05,
-  0x8612, 0x47af,
-  0x8616, 0x14ab,
-  0x8617, 0x47b3,
-  0x861a, 0x235a,
-  0x861b, 0x47b6,
-  0x861e, 0x2356,
-  0x861f, 0x47b9,
-  0x8622, 0x2337,
-  0x8623, 0x47bc,
-  0x8627, 0x14a8,
-  0x8628, 0x47c0,
-  0x8629, 0x14aa,
-  0x862a, 0x47c1,
-  0x862d, 0x1ff9,
-  0x862e, 0x47c4,
-  0x8638, 0x115b,
-  0x8639, 0x47ce,
-  0x863a, 0x2353,
-  0x863b, 0x47cf,
-  0x863c, 0x14ac,
-  0x863d, 0x47d0,
-  0x863f, 0x2061,
-  0x8640, 0x47d2,
-  0x864d, 0x1bf0,
-  0x864e, 0x07b7,
-  0x864f, 0x0a59,
-  0x8650, 0x0b71,
-  0x8651, 0x0a6e,
-  0x8652, 0x47df,
-  0x8654, 0x1bf1,
-  0x8655, 0x1e95,
-  0x8656, 0x47e1,
-  0x865a, 0x0fb4,
-  0x865b, 0x47e5,
-  0x865c, 0x2049,
-  0x865d, 0x47e6,
-  0x865e, 0x10c2,
-  0x865f, 0x1f42,
-  0x8660, 0x47e7,
-  0x8662, 0x196d,
-  0x8663, 0x47e9,
-  0x8667, 0x1fe8,
-  0x8668, 0x47ed,
-  0x866b, 0x050b,
-  0x866c, 0x1bf2,
-  0x866d, 0x47f0,
-  0x866e, 0x1bf3,
-  0x866f, 0x47f1,
-  0x8671, 0x0d44,
-  0x8672, 0x47f3,
-  0x8679, 0x079e,
-  0x867a, 0x1bf5,
-  0x867b, 0x1bf7,
-  0x867c, 0x1bf6,
-  0x867d, 0x0dd9,
-  0x867e, 0x0f27,
-  0x867f, 0x1bf4,
-  0x8680, 0x0d4b,
-  0x8681, 0x1056,
-  0x8682, 0x0a93,
-  0x8683, 0x47fa,
-  0x868a, 0x0ed2,
-  0x868b, 0x1bfa,
-  0x868c, 0x0401,
-  0x868d, 0x1bf9,
-  0x868e, 0x4801,
-  0x8693, 0x1c00,
-  0x8694, 0x4806,
-  0x8695, 0x0496,
-  0x8696, 0x4807,
-  0x869c, 0x0fea,
-  0x869d, 0x1bfc,
-  0x869e, 0x480d,
-  0x86a3, 0x1bfe,
-  0x86a4, 0x112c,
-  0x86a5, 0x4812,
-  0x86a7, 0x1bfd,
-  0x86a8, 0x1bf8,
-  0x86a9, 0x1c01,
-  0x86aa, 0x1bff,
-  0x86ab, 0x4814,
-  0x86ac, 0x1bfb,
-  0x86ad, 0x4815,
-  0x86af, 0x1c09,
-  0x86b0, 0x1c06,
-  0x86b1, 0x1c08,
-  0x86b2, 0x4817,
-  0x86b4, 0x1c0c,
-  0x86b5, 0x1c04,
-  0x86b6, 0x1c02,
-  0x86b7, 0x4819,
-  0x86ba, 0x1c07,
-  0x86bb, 0x481c,
-  0x86c0, 0x11fa,
-  0x86c1, 0x4821,
-  0x86c4, 0x1c03,
-  0x86c5, 0x4824,
-  0x86c6, 0x0c76,
-  0x86c7, 0x0d18,
-  0x86c8, 0x4825,
-  0x86c9, 0x1c0a,
-  0x86ca, 0x071f,
-  0x86cb, 0x0591,
-  0x86cc, 0x4826,
-  0x86ce, 0x1c05,
-  0x86cf, 0x1c0b,
-  0x86d0, 0x1c12,
-  0x86d1, 0x1c18,
-  0x86d2, 0x4828,
-  0x86d4, 0x07ec,
-  0x86d5, 0x482a,
-  0x86d8, 0x1c17,
-  0x86d9, 0x0e8d,
-  0x86da, 0x482d,
-  0x86db, 0x11ea,
-  0x86dc, 0x482e,
-  0x86de, 0x1c14,
-  0x86df, 0x1c16,
-  0x86e0, 0x4830,
-  0x86e4, 0x06ed,
-  0x86e5, 0x4834,
-  0x86e9, 0x1c0d,
-  0x86ea, 0x4838,
-  0x86ed, 0x1c10,
-  0x86ee, 0x0aa0,
-  0x86ef, 0x483b,
-  0x86f0, 0x117e,
-  0x86f1, 0x1c0e,
-  0x86f3, 0x1c11,
-  0x86f4, 0x1c15,
-  0x86f5, 0x483c,
-  0x86f8, 0x1c1b,
-  0x86f9, 0x10a1,
-  0x86fa, 0x25da,
-  0x86fb, 0x483f,
-  0x86fe, 0x0629,
-  0x86ff, 0x4842,
-  0x8700, 0x0d88,
-  0x8701, 0x4843,
-  0x8702, 0x0681,
-  0x8703, 0x1c19,
-  0x8704, 0x4844,
-  0x8706, 0x25d7,
-  0x8707, 0x1c1a,
-  0x8708, 0x1c1c,
-  0x8709, 0x1c1f,
-  0x870a, 0x1c1d,
-  0x870b, 0x4846,
-  0x870d, 0x1c1e,
-  0x870e, 0x4848,
-  0x8712, 0x0ffa,
-  0x8713, 0x1c13,
-  0x8714, 0x484c,
-  0x8715, 0x0e7a,
-  0x8716, 0x484d,
-  0x8717, 0x0ede,
-  0x8718, 0x11a8,
-  0x8719, 0x484e,
-  0x871a, 0x1c25,
-  0x871b, 0x484f,
-  0x871c, 0x0ae0,
-  0x871d, 0x4850,
-  0x871e, 0x1c22,
-  0x871f, 0x4851,
-  0x8721, 0x099a,
-  0x8722, 0x1c2e,
-  0x8723, 0x1c20,
-  0x8724, 0x4853,
-  0x8725, 0x1c23,
-  0x8726, 0x4854,
-  0x8729, 0x1c2a,
-  0x872a, 0x4857,
-  0x872e, 0x1c24,
-  0x872f, 0x485b,
-  0x8731, 0x1c29,
-  0x8732, 0x485d,
-  0x8734, 0x1c28,
-  0x8735, 0x485f,
-  0x8737, 0x1c2b,
-  0x8738, 0x4861,
-  0x873b, 0x1c21,
-  0x873c, 0x4864,
-  0x873e, 0x1c26,
-  0x873f, 0x1c2c,
-  0x8740, 0x4866,
-  0x8747, 0x1091,
-  0x8748, 0x1c27,
-  0x8749, 0x04bc,
-  0x874a, 0x486d,
-  0x874c, 0x1c34,
-  0x874d, 0x486f,
-  0x874e, 0x0f76,
-  0x874f, 0x4870,
-  0x8753, 0x1c37,
-  0x8754, 0x4874,
-  0x8755, 0x212e,
-  0x8756, 0x4875,
-  0x8757, 0x07dd,
-  0x8758, 0x4876,
-  0x8759, 0x1c3b,
-  0x875a, 0x4877,
-  0x8760, 0x1c32,
-  0x8761, 0x487d,
-  0x8763, 0x1c38,
-  0x8764, 0x1c3a,
-  0x8765, 0x1c3c,
-  0x8766, 0x21b2,
-  0x8767, 0x487f,
-  0x876e, 0x1c35,
-  0x876f, 0x4886,
-  0x8770, 0x1c33,
-  0x8771, 0x4887,
-  0x8774, 0x07b2,
-  0x8775, 0x488a,
-  0x8776, 0x05dc,
-  0x8777, 0x488b,
-  0x8778, 0x219e,
-  0x8779, 0x488c,
-  0x877b, 0x1c31,
-  0x877c, 0x1c39,
-  0x877d, 0x1c2f,
-  0x877f, 0x488e,
-  0x8782, 0x1c2d,
-  0x8783, 0x1c46,
-  0x8784, 0x25dc,
-  0x8785, 0x1c43,
-  0x8786, 0x4891,
-  0x8788, 0x1c42,
-  0x8789, 0x4893,
-  0x878b, 0x1c36,
-  0x878c, 0x4895,
-  0x878d, 0x0cb5,
-  0x878e, 0x4896,
-  0x8793, 0x1c3d,
-  0x8794, 0x489b,
-  0x8797, 0x1c45,
-  0x8798, 0x489e,
-  0x879e, 0x206c,
-  0x879f, 0x0afd,
-  0x87a0, 0x48a4,
-  0x87a2, 0x2226,
-  0x87a3, 0x48a6,
-  0x87a8, 0x1c3f,
-  0x87a9, 0x48ab,
-  0x87ab, 0x1c47,
-  0x87ac, 0x1c49,
-  0x87ad, 0x1c44,
-  0x87ae, 0x48ad,
-  0x87af, 0x1c3e,
-  0x87b0, 0x48ae,
-  0x87b3, 0x1c4b,
-  0x87b4, 0x48b1,
-  0x87b5, 0x1c4a,
-  0x87b6, 0x48b2,
-  0x87ba, 0x0a84,
-  0x87bb, 0x25e0,
-  0x87bc, 0x48b6,
-  0x87bd, 0x1c4e,
-  0x87be, 0x48b7,
-  0x87c0, 0x1c50,
-  0x87c1, 0x48b9,
-  0x87c4, 0x227b,
-  0x87c5, 0x48bc,
-  0x87c6, 0x1c41,
-  0x87c7, 0x48bd,
-  0x87c8, 0x25de,
-  0x87c9, 0x48be,
-  0x87ca, 0x1c51,
-  0x87cb, 0x1c4c,
-  0x87cc, 0x48bf,
-  0x87ce, 0x25e1,
-  0x87cf, 0x48c1,
-  0x87d1, 0x1c4f,
-  0x87d2, 0x1c40,
-  0x87d3, 0x1c4d,
-  0x87d4, 0x48c3,
-  0x87db, 0x1c52,
-  0x87dc, 0x48ca,
-  0x87e0, 0x1c54,
-  0x87e1, 0x48ce,
-  0x87e3, 0x25d5,
-  0x87e4, 0x48d0,
-  0x87e5, 0x1c48,
-  0x87e6, 0x48d1,
-  0x87ea, 0x1c53,
-  0x87eb, 0x48d5,
-  0x87ec, 0x1e6b,
-  0x87ed, 0x48d6,
-  0x87ee, 0x1c55,
-  0x87ef, 0x25db,
-  0x87f0, 0x48d7,
-  0x87f2, 0x1e89,
-  0x87f3, 0x48d9,
-  0x87f6, 0x25d9,
-  0x87f7, 0x48dc,
-  0x87f9, 0x0f82,
-  0x87fa, 0x48de,
-  0x87fb, 0x2211,
-  0x87fc, 0x48df,
-  0x87fe, 0x1c58,
-  0x87ff, 0x48e1,
-  0x8800, 0x48e2,
-  0x8803, 0x130d,
-  0x8804, 0x48e5,
-  0x8805, 0x2229,
-  0x8806, 0x25d6,
-  0x8807, 0x48e6,
-  0x880a, 0x1c59,
-  0x880b, 0x48e9,
-  0x8810, 0x25dd,
-  0x8811, 0x25df,
-  0x8812, 0x48ee,
-  0x8813, 0x1c57,
-  0x8814, 0x48ef,
-  0x8815, 0x0cbf,
-  0x8816, 0x1c56,
-  0x8817, 0x48f0,
-  0x881b, 0x1c5a,
-  0x881c, 0x48f4,
-  0x881f, 0x1fef,
-  0x8820, 0x48f7,
-  0x8821, 0x1c5b,
-  0x8822, 0x0543,
-  0x8823, 0x25d8,
-  0x8824, 0x48f8,
-  0x8831, 0x1f29,
-  0x8832, 0x1a8d,
-  0x8833, 0x4905,
-  0x8836, 0x1e5b,
-  0x8837, 0x4908,
-  0x8839, 0x1c5c,
-  0x883a, 0x490a,
-  0x883b, 0x2076,
-  0x883c, 0x1c5d,
-  0x883d, 0x490b,
-  0x8840, 0x0fd3,
-  0x8841, 0x490e,
-  0x8844, 0x1caa,
-  0x8845, 0x0f91,
-  0x8846, 0x2297,
-  0x8847, 0x4911,
-  0x884a, 0x2690,
-  0x884b, 0x4914,
-  0x884c, 0x0f9b,
-  0x884d, 0x1005,
-  0x884e, 0x4915,
-  0x8853, 0x213f,
-  0x8854, 0x0f3b,
-  0x8855, 0x491a,
-  0x8857, 0x08a7,
-  0x8858, 0x491c,
-  0x8859, 0x0fec,
-  0x885a, 0x491d,
-  0x885b, 0x2198,
-  0x885c, 0x491e,
-  0x885d, 0x1e88,
-  0x885e, 0x491f,
-  0x8861, 0x0799,
-  0x8862, 0x15ed,
-  0x8863, 0x1049,
-  0x8864, 0x1ba6,
-  0x8865, 0x0480,
-  0x8866, 0x4922,
-  0x8868, 0x0456,
-  0x8869, 0x1ba7,
-  0x886a, 0x4924,
-  0x886b, 0x0cf9,
-  0x886c, 0x04e9,
-  0x886d, 0x4925,
-  0x886e, 0x1306,
-  0x886f, 0x4926,
-  0x8870, 0x0d9a,
-  0x8871, 0x4927,
-  0x8872, 0x1ba8,
-  0x8873, 0x4928,
-  0x8877, 0x11d3,
-  0x8878, 0x492c,
-  0x8879, 0x228c,
-  0x887a, 0x492d,
-  0x887d, 0x1ba9,
-  0x887e, 0x1cbe,
-  0x887f, 0x1baa,
-  0x8880, 0x4930,
-  0x8881, 0x10ef,
-  0x8882, 0x1bab,
-  0x8883, 0x4931,
-  0x8884, 0x03cb,
-  0x8885, 0x1cbf,
-  0x8886, 0x4932,
-  0x8888, 0x1cc0,
-  0x8889, 0x4934,
-  0x888b, 0x057f,
-  0x888c, 0x4936,
-  0x888d, 0x0b9c,
-  0x888e, 0x4937,
-  0x8892, 0x0e0e,
-  0x8893, 0x493b,
-  0x8896, 0x0faf,
-  0x8897, 0x493e,
-  0x889c, 0x0e91,
-  0x889d, 0x4943,
-  0x88a2, 0x1bac,
-  0x88a3, 0x4948,
-  0x88a4, 0x1307,
-  0x88a5, 0x4949,
-  0x88ab, 0x0424,
-  0x88ac, 0x494f,
-  0x88ad, 0x0f1b,
-  0x88ae, 0x4950,
-  0x88b1, 0x069f,
-  0x88b2, 0x4953,
-  0x88b7, 0x1bae,
-  0x88b8, 0x4958,
-  0x88bc, 0x1baf,
-  0x88bd, 0x495c,
-  0x88c1, 0x048a,
-  0x88c2, 0x0a1a,
-  0x88c3, 0x4960,
-  0x88c5, 0x120d,
-  0x88c6, 0x1bad,
-  0x88c7, 0x4962,
-  0x88c9, 0x1bb0,
-  0x88ca, 0x25f1,
-  0x88cb, 0x4964,
-  0x88ce, 0x1bb2,
-  0x88cf, 0x200c,
-  0x88d0, 0x4967,
-  0x88d2, 0x130a,
-  0x88d3, 0x4969,
-  0x88d4, 0x1068,
-  0x88d5, 0x10e6,
-  0x88d6, 0x496a,
-  0x88d8, 0x1cc1,
-  0x88d9, 0x0c94,
-  0x88da, 0x496c,
-  0x88dc, 0x1e58,
-  0x88dd, 0x22ac,
-  0x88de, 0x496e,
-  0x88df, 0x1cc2,
-  0x88e0, 0x496f,
-  0x88e2, 0x1bb1,
-  0x88e3, 0x1bb3,
-  0x88e4, 0x0970,
-  0x88e5, 0x1bb4,
-  0x88e6, 0x4971,
-  0x88e8, 0x1bb8,
-  0x88e9, 0x4973,
-  0x88f0, 0x1bba,
-  0x88f1, 0x1bb5,
-  0x88f2, 0x497a,
-  0x88f3, 0x0d0a,
-  0x88f4, 0x0ba2,
-  0x88f5, 0x497b,
-  0x88f8, 0x0a8a,
-  0x88f9, 0x0755,
-  0x88fa, 0x497e,
-  0x88fc, 0x1bb7,
-  0x88fd, 0x26a7,
-  0x88fe, 0x1bb9,
-  0x88ff, 0x4980,
-  0x8900, 0x4981,
-  0x8902, 0x072c,
-  0x8903, 0x4983,
-  0x8907, 0x2676,
-  0x8908, 0x4987,
-  0x890a, 0x1bbf,
-  0x890b, 0x4989,
-  0x8910, 0x078d,
-  0x8911, 0x498e,
-  0x8912, 0x0408,
-  0x8913, 0x1bbd,
-  0x8914, 0x498f,
-  0x8919, 0x1bbc,
-  0x891a, 0x1bb6,
-  0x891b, 0x1bbe,
-  0x891c, 0x4994,
-  0x8921, 0x1bbb,
-  0x8922, 0x4999,
-  0x8925, 0x0cc7,
-  0x8926, 0x499c,
-  0x892a, 0x0e7b,
-  0x892b, 0x1bc1,
-  0x892c, 0x49a0,
-  0x8930, 0x1739,
-  0x8931, 0x49a4,
-  0x8932, 0x1fe1,
-  0x8933, 0x25bb,
-  0x8934, 0x1bc0,
-  0x8935, 0x49a5,
-  0x8936, 0x1bc2,
-  0x8937, 0x49a6,
-  0x8938, 0x25be,
-  0x8939, 0x49a7,
-  0x893b, 0x22dd,
-  0x893c, 0x49a9,
-  0x8941, 0x1bc3,
-  0x8942, 0x49ae,
-  0x8944, 0x0f52,
-  0x8945, 0x49b0,
-  0x8947, 0x25bd,
-  0x8948, 0x49b2,
-  0x8956, 0x1e2a,
-  0x8957, 0x49c0,
-  0x895d, 0x25bc,
-  0x895e, 0x1cc3,
-  0x895f, 0x08c4,
-  0x8960, 0x25ba,
-  0x8961, 0x49c6,
-  0x8964, 0x25bf,
-  0x8965, 0x49c9,
-  0x8966, 0x1bc4,
-  0x8967, 0x49ca,
-  0x896a, 0x2187,
-  0x896b, 0x49cd,
-  0x896c, 0x266b,
-  0x896d, 0x49ce,
-  0x896f, 0x1e7f,
-  0x8970, 0x49d0,
-  0x8972, 0x21ad,
-  0x8973, 0x49d2,
-  0x897b, 0x1bc5,
-  0x897c, 0x49da,
-  0x897f, 0x0f06,
-  0x8980, 0x49dd,
-  0x8981, 0x1031,
-  0x8982, 0x49de,
-  0x8983, 0x1bdf,
-  0x8984, 0x49df,
-  0x8986, 0x06ad,
-  0x8987, 0x49e1,
-  0x898b, 0x1f96,
-  0x898c, 0x49e5,
-  0x898f, 0x1f32,
-  0x8990, 0x49e8,
-  0x8993, 0x2084,
-  0x8994, 0x49eb,
-  0x8996, 0x2136,
-  0x8997, 0x49ed,
-  0x8998, 0x24b8,
-  0x8999, 0x49ee,
-  0x89a1, 0x24ba,
-  0x89a2, 0x49f6,
-  0x89a6, 0x24bc,
-  0x89a7, 0x49fa,
-  0x89aa, 0x20e4,
-  0x89ab, 0x49fd,
-  0x89ac, 0x24b9,
-  0x89ad, 0x49fe,
-  0x89af, 0x24bd,
-  0x89b0, 0x4a00,
-  0x89b2, 0x24be,
-  0x89b3, 0x4a02,
-  0x89b7, 0x24bf,
-  0x89b8, 0x4a06,
-  0x89ba, 0x1fd2,
-  0x89bb, 0x4a08,
-  0x89bd, 0x1ffd,
-  0x89be, 0x4a0a,
-  0x89bf, 0x24bb,
-  0x89c0, 0x1f2d,
-  0x89c1, 0x086e,
-  0x89c2, 0x0734,
-  0x89c3, 0x4a0b,
-  0x89c4, 0x073f,
-  0x89c5, 0x0ade,
-  0x89c6, 0x0d6a,
-  0x89c7, 0x193a,
-  0x89c8, 0x09ab,
-  0x89c9, 0x0924,
-  0x89ca, 0x193b,
-  0x89cd, 0x4a0c,
-  0x89ce, 0x193e,
-  0x89d2, 0x0898,
-  0x89d3, 0x4a0d,
-  0x89d6, 0x1d57,
-  0x89d7, 0x4a10,
-  0x89da, 0x1d59,
-  0x89db, 0x4a13,
-  0x89dc, 0x1d5a,
-  0x89dd, 0x4a14,
-  0x89de, 0x1d58,
-  0x89df, 0x4a15,
-  0x89e3, 0x08b3,
-  0x89e4, 0x4a19,
-  0x89e5, 0x1d5b,
-  0x89e6, 0x0528,
-  0x89e7, 0x4a1a,
-  0x89eb, 0x1d5c,
-  0x89ec, 0x4a1e,
-  0x89ef, 0x1d5d,
-  0x89f0, 0x4a21,
-  0x89f3, 0x19c0,
-  0x89f4, 0x2609,
-  0x89f5, 0x4a24,
-  0x89f6, 0x260a,
-  0x89f7, 0x4a25,
-  0x89f8, 0x1e94,
-  0x89f9, 0x4a26,
-  0x8a00, 0x0ffd,
-  0x8a01, 0x22df,
-  0x8a02, 0x1ecb,
-  0x8a03, 0x1f0d,
-  0x8a04, 0x4a2d,
-  0x8a07, 0x12fe,
-  0x8a08, 0x1f77,
-  0x8a09, 0x4a30,
-  0x8a0a, 0x21eb,
-  0x8a0b, 0x4a31,
-  0x8a0c, 0x22e1,
-  0x8a0d, 0x4a32,
-  0x8a0e, 0x216f,
-  0x8a0f, 0x4a33,
-  0x8a10, 0x22e0,
-  0x8a11, 0x4a34,
-  0x8a13, 0x21ea,
-  0x8a14, 0x4a36,
-  0x8a15, 0x22e2,
-  0x8a16, 0x20cb,
-  0x8a17, 0x4a37,
-  0x8a18, 0x1f78,
-  0x8a19, 0x4a38,
-  0x8a1b, 0x1ee2,
-  0x8a1c, 0x4a3a,
-  0x8a1d, 0x21f2,
-  0x8a1e, 0x4a3b,
-  0x8a1f, 0x2150,
-  0x8a20, 0x4a3c,
-  0x8a23, 0x1fd3,
-  0x8a24, 0x4a3f,
-  0x8a25, 0x22e5,
-  0x8a26, 0x4a40,
-  0x8a2a, 0x1ef2,
-  0x8a2b, 0x4a44,
-  0x8a2d, 0x211f,
-  0x8a2e, 0x4a46,
-  0x8a31, 0x21dd,
-  0x8a32, 0x4a49,
-  0x8a34, 0x2154,
-  0x8a35, 0x4a4b,
-  0x8a36, 0x22e7,
-  0x8a37, 0x4a4c,
-  0x8a3a, 0x2282,
-  0x8a3b, 0x4a4f,
-  0x8a3e, 0x1d5e,
-  0x8a3f, 0x4a52,
-  0x8a41, 0x22e6,
-  0x8a42, 0x4a54,
-  0x8a46, 0x22e8,
-  0x8a47, 0x4a58,
-  0x8a48, 0x1a84,
-  0x8a49, 0x4a59,
-  0x8a4e, 0x22e4,
-  0x8a4f, 0x4a5e,
-  0x8a50, 0x226a,
-  0x8a51, 0x4a5f,
-  0x8a52, 0x22eb,
-  0x8a53, 0x4a60,
-  0x8a54, 0x22e9,
-  0x8a55, 0x20bd,
-  0x8a56, 0x4a61,
-  0x8a58, 0x22ea,
-  0x8a59, 0x4a63,
-  0x8a5b, 0x22bd,
-  0x8a5c, 0x4a65,
-  0x8a5e, 0x1e9e,
-  0x8a5f, 0x4a67,
-  0x8a61, 0x22f6,
-  0x8a62, 0x21e7,
-  0x8a63, 0x2216,
-  0x8a64, 0x4a69,
-  0x8a66, 0x2137,
-  0x8a67, 0x4a6b,
-  0x8a69, 0x212c,
-  0x8a6a, 0x4a6d,
-  0x8a6b, 0x1e68,
-  0x8a6c, 0x22f2,
-  0x8a6d, 0x1f37,
-  0x8a6e, 0x22f3,
-  0x8a6f, 0x4a6e,
-  0x8a70, 0x22ef,
-  0x8a71, 0x1f50,
-  0x8a72, 0x1f10,
-  0x8a73, 0x21c8,
-  0x8a74, 0x4a6f,
-  0x8a75, 0x22f1,
-  0x8a76, 0x4a70,
-  0x8a79, 0x1153,
-  0x8a7a, 0x4a73,
-  0x8a7c, 0x22f0,
-  0x8a7d, 0x4a75,
-  0x8a7f, 0x22ee,
-  0x8a80, 0x4a77,
-  0x8a84, 0x22ed,
-  0x8a85, 0x229e,
-  0x8a86, 0x22ec,
-  0x8a87, 0x1fe2,
-  0x8a88, 0x4a7b,
-  0x8a89, 0x10e3,
-  0x8a8a, 0x0e2f,
-  0x8a8b, 0x4a7c,
-  0x8a8d, 0x20fe,
-  0x8a8e, 0x4a7e,
-  0x8a91, 0x22f9,
-  0x8a93, 0x0d5b,
-  0x8a94, 0x4a81,
-  0x8a95, 0x1eaf,
-  0x8a96, 0x4a82,
-  0x8a98, 0x2236,
-  0x8a99, 0x4a84,
-  0x8a9a, 0x22f7,
-  0x8a9b, 0x4a85,
-  0x8a9e, 0x223d,
-  0x8a9f, 0x4a88,
-  0x8aa0, 0x1e82,
-  0x8aa1, 0x1fb6,
-  0x8aa2, 0x4a89,
-  0x8aa3, 0x21a4,
-  0x8aa4, 0x21aa,
-  0x8aa5, 0x22f8,
-  0x8aa6, 0x2151,
-  0x8aa7, 0x4a8a,
-  0x8aa8, 0x1f60,
-  0x8aa9, 0x4a8b,
-  0x8aac, 0x2147,
-  0x8aad, 0x4a8e,
-  0x8ab0, 0x2145,
-  0x8ab1, 0x4a91,
-  0x8ab2, 0x1fdc,
-  0x8ab3, 0x4a92,
-  0x8ab6, 0x2301,
-  0x8ab7, 0x4a95,
-  0x8ab9, 0x1ef5,
-  0x8aba, 0x4a97,
-  0x8abc, 0x2218,
-  0x8abd, 0x4a99,
-  0x8abf, 0x1ec6,
-  0x8ac0, 0x4a9b,
-  0x8ac2, 0x2300,
-  0x8ac3, 0x4a9d,
-  0x8ac4, 0x22b4,
-  0x8ac5, 0x4a9e,
-  0x8ac7, 0x2169,
-  0x8ac8, 0x4aa0,
-  0x8ac9, 0x22fd,
-  0x8aca, 0x4aa1,
-  0x8acb, 0x20ea,
-  0x8acc, 0x4aa2,
-  0x8acd, 0x22f4,
-  0x8ace, 0x4aa3,
-  0x8acf, 0x22fb,
-  0x8ad0, 0x4aa4,
-  0x8ad1, 0x22fc,
-  0x8ad2, 0x2027,
-  0x8ad3, 0x4aa5,
-  0x8ad6, 0x2060,
-  0x8ad7, 0x22ff,
-  0x8ad8, 0x4aa8,
-  0x8adb, 0x22fe,
-  0x8adc, 0x1ec7,
-  0x8add, 0x4aab,
-  0x8ade, 0x230c,
-  0x8adf, 0x4aac,
-  0x8ae2, 0x22f5,
-  0x8ae3, 0x4aaf,
-  0x8ae4, 0x2306,
-  0x8ae5, 0x4ab0,
-  0x8ae6, 0x230a,
-  0x8ae7, 0x21d3,
-  0x8ae8, 0x4ab1,
-  0x8aeb, 0x2303,
-  0x8aec, 0x4ab4,
-  0x8aed, 0x2307,
-  0x8aee, 0x230b,
-  0x8aef, 0x4ab5,
-  0x8af1, 0x1f5f,
-  0x8af2, 0x4ab7,
-  0x8af3, 0x2309,
-  0x8af4, 0x4ab8,
-  0x8af6, 0x2302,
-  0x8af7, 0x1f04,
-  0x8af8, 0x229d,
-  0x8af9, 0x4aba,
-  0x8afa, 0x21fb,
-  0x8afb, 0x4abb,
-  0x8afc, 0x2308,
-  0x8afd, 0x4abc,
-  0x8afe, 0x20ac,
-  0x8aff, 0x4abd,
-  0x8b00, 0x208e,
-  0x8b01, 0x2305,
-  0x8b02, 0x2197,
-  0x8b03, 0x4abe,
-  0x8b04, 0x2171,
-  0x8b05, 0x2298,
-  0x8b06, 0x4abf,
-  0x8b07, 0x173c,
-  0x8b08, 0x4ac0,
-  0x8b0a, 0x1f57,
-  0x8b0b, 0x4ac2,
-  0x8b0e, 0x2082,
-  0x8b0f, 0x4ac5,
-  0x8b10, 0x2311,
-  0x8b11, 0x4ac6,
-  0x8b14, 0x2304,
-  0x8b15, 0x4ac9,
-  0x8b16, 0x230f,
-  0x8b17, 0x1e35,
-  0x8b18, 0x4aca,
-  0x8b19, 0x20d1,
-  0x8b1a, 0x2310,
-  0x8b1b, 0x1fa3,
-  0x8b1c, 0x4acb,
-  0x8b1d, 0x21d6,
-  0x8b1e, 0x4acc,
-  0x8b21, 0x2206,
-  0x8b22, 0x4acf,
-  0x8b26, 0x1d5f,
-  0x8b27, 0x4ad3,
-  0x8b28, 0x230d,
-  0x8b29, 0x4ad4,
-  0x8b2b, 0x2312,
-  0x8b2c, 0x208d,
-  0x8b2d, 0x2313,
-  0x8b2e, 0x4ad6,
-  0x8b33, 0x22e3,
-  0x8b34, 0x4adb,
-  0x8b39, 0x1fba,
-  0x8b3a, 0x4ae0,
-  0x8b3e, 0x2078,
-  0x8b3f, 0x4ae4,
-  0x8b49, 0x2288,
-  0x8b4a, 0x4aee,
-  0x8b4e, 0x2316,
-  0x8b4f, 0x1f6b,
-  0x8b50, 0x4af2,
-  0x8b56, 0x2314,
-  0x8b57, 0x4af8,
-  0x8b58, 0x2130,
-  0x8b59, 0x2315,
-  0x8b5a, 0x2168,
-  0x8b5b, 0x4af9,
-  0x8b5c, 0x20c4,
-  0x8b5d, 0x4afa,
-  0x8b66, 0x08de,
-  0x8b67, 0x4b03,
-  0x8b6b, 0x2318,
-  0x8b6c, 0x0bc8,
-  0x8b6d, 0x4b07,
-  0x8b6f, 0x2219,
-  0x8b70, 0x2217,
-  0x8b71, 0x4b09,
-  0x8b74, 0x20d5,
-  0x8b75, 0x4b0c,
-  0x8b77, 0x1f4a,
-  0x8b78, 0x4b0e,
-  0x8b7d, 0x2240,
-  0x8b7e, 0x4b13,
-  0x8b80, 0x1ed3,
-  0x8b81, 0x4b15,
-  0x8b8a, 0x1e49,
-  0x8b8b, 0x4b1e,
-  0x8b8e, 0x261b,
-  0x8b8f, 0x4b21,
-  0x8b92, 0x1e6d,
-  0x8b93, 0x20f8,
-  0x8b94, 0x4b24,
-  0x8b95, 0x1ffb,
-  0x8b96, 0x2319,
-  0x8b97, 0x4b25,
-  0x8b9c, 0x230e,
-  0x8b9d, 0x4b2a,
-  0x8b9e, 0x2317,
-  0x8b9f, 0x4b2b,
-  0x8ba0, 0x1317,
-  0x8ba1, 0x0839,
-  0x8ba2, 0x05e8,
-  0x8ba3, 0x06b7,
-  0x8ba4, 0x0caa,
-  0x8ba5, 0x0818,
-  0x8ba6, 0x1318,
-  0x8ba8, 0x0e29,
-  0x8ba9, 0x0c9e,
-  0x8baa, 0x131a,
-  0x8bab, 0x0c1c,
-  0x8bac, 0x4b2c,
-  0x8bad, 0x0fde,
-  0x8bae, 0x1070,
-  0x8baf, 0x0fdf,
-  0x8bb0, 0x083a,
-  0x8bb1, 0x4b2d,
-  0x8bb2, 0x0883,
-  0x8bb3, 0x07f9,
-  0x8bb4, 0x131b,
-  0x8bb6, 0x0ff1,
-  0x8bb7, 0x131d,
-  0x8bb8, 0x0fb8,
-  0x8bb9, 0x062e,
-  0x8bba, 0x0a82,
-  0x8bbb, 0x4b2e,
-  0x8bbc, 0x0dc4,
-  0x8bbd, 0x068a,
-  0x8bbe, 0x0d21,
-  0x8bbf, 0x0660,
-  0x8bc0, 0x0926,
-  0x8bc1, 0x11a3,
-  0x8bc2, 0x131e,
-  0x8bc4, 0x0bdf,
-  0x8bc5, 0x1244,
-  0x8bc6, 0x0d4d,
-  0x8bc7, 0x4b2f,
-  0x8bc8, 0x114a,
-  0x8bc9, 0x0dd4,
-  0x8bca, 0x1190,
-  0x8bcb, 0x1320,
-  0x8bcc, 0x11de,
-  0x8bcd, 0x054d,
-  0x8bce, 0x1322,
-  0x8bcf, 0x1321,
-  0x8bd0, 0x4b30,
-  0x8bd1, 0x1072,
-  0x8bd2, 0x1323,
-  0x8bd5, 0x0d6b,
-  0x8bd6, 0x1326,
-  0x8bd7, 0x0d42,
-  0x8bd8, 0x1327,
-  0x8bda, 0x04f4,
-  0x8bdb, 0x11ee,
-  0x8bdc, 0x1329,
-  0x8bdd, 0x07c5,
-  0x8bde, 0x058f,
-  0x8bdf, 0x132a,
-  0x8be1, 0x0747,
-  0x8be2, 0x0fd8,
-  0x8be3, 0x106f,
-  0x8be4, 0x132c,
-  0x8be5, 0x06be,
-  0x8be6, 0x0f57,
-  0x8be7, 0x04b6,
-  0x8be8, 0x132d,
-  0x8bea, 0x4b31,
-  0x8beb, 0x08bc,
-  0x8bec, 0x0eeb,
-  0x8bed, 0x10d4,
-  0x8bee, 0x132f,
-  0x8bef, 0x0f02,
-  0x8bf0, 0x1330,
-  0x8bf1, 0x10ba,
-  0x8bf2, 0x07fa,
-  0x8bf3, 0x1331,
-  0x8bf4, 0x0daa,
-  0x8bf5, 0x0dc5,
-  0x8bf6, 0x1332,
-  0x8bf7, 0x0c68,
-  0x8bf8, 0x11ed,
-  0x8bf9, 0x1333,
-  0x8bfa, 0x0b76,
-  0x8bfb, 0x0600,
-  0x8bfc, 0x1334,
-  0x8bfd, 0x0669,
-  0x8bfe, 0x095b,
-  0x8bff, 0x1335,
-  0x8c00, 0x1336,
-  0x8c01, 0x0da2,
-  0x8c02, 0x1337,
-  0x8c03, 0x05d8,
-  0x8c04, 0x1338,
-  0x8c05, 0x0a0b,
-  0x8c06, 0x1218,
-  0x8c07, 0x1339,
-  0x8c08, 0x0e0b,
-  0x8c09, 0x4b32,
-  0x8c0a, 0x1071,
-  0x8c0b, 0x0b14,
-  0x8c0c, 0x133a,
-  0x8c0d, 0x05de,
-  0x8c0e, 0x07e6,
-  0x8c0f, 0x133b,
-  0x8c10, 0x0f7e,
-  0x8c11, 0x133c,
-  0x8c13, 0x0ecc,
-  0x8c14, 0x133e,
-  0x8c17, 0x04be,
-  0x8c18, 0x1343,
-  0x8c19, 0x1341,
-  0x8c1a, 0x1011,
-  0x8c1b, 0x1342,
-  0x8c1c, 0x0ada,
-  0x8c1d, 0x1344,
-  0x8c1e, 0x4b33,
-  0x8c1f, 0x1345,
-  0x8c22, 0x0f86,
-  0x8c23, 0x102c,
-  0x8c24, 0x0404,
-  0x8c25, 0x1348,
-  0x8c26, 0x0c28,
-  0x8c27, 0x1349,
-  0x8c28, 0x08c8,
-  0x8c29, 0x0aa6,
-  0x8c2a, 0x134a,
-  0x8c2c, 0x0b02,
-  0x8c2d, 0x0e0a,
-  0x8c2e, 0x134c,
-  0x8c30, 0x09a9,
-  0x8c31, 0x0bf6,
-  0x8c32, 0x134e,
-  0x8c34, 0x0c31,
-  0x8c35, 0x1350,
-  0x8c37, 0x0721,
-  0x8c38, 0x4b34,
-  0x8c41, 0x0802,
-  0x8c42, 0x4b3d,
-  0x8c46, 0x05f8,
-  0x8c47, 0x1cf6,
-  0x8c48, 0x20c8,
-  0x8c49, 0x1cf7,
-  0x8c4a, 0x4b41,
-  0x8c4c, 0x0e94,
-  0x8c4d, 0x4b43,
-  0x8c50, 0x1efd,
-  0x8c51, 0x4b46,
-  0x8c55, 0x1d15,
-  0x8c56, 0x4b4a,
-  0x8c5a, 0x1990,
-  0x8c5b, 0x4b4e,
-  0x8c61, 0x0f60,
-  0x8c62, 0x07d4,
-  0x8c63, 0x4b54,
-  0x8c6a, 0x0777,
-  0x8c6b, 0x10e8,
-  0x8c6c, 0x4b5b,
-  0x8c73, 0x15dd,
-  0x8c74, 0x4b62,
-  0x8c78, 0x1d50,
-  0x8c79, 0x0413,
-  0x8c7a, 0x04b9,
-  0x8c7b, 0x4b66,
-  0x8c82, 0x1d51,
-  0x8c83, 0x4b6d,
-  0x8c85, 0x1d53,
-  0x8c86, 0x4b6f,
-  0x8c89, 0x0788,
-  0x8c8a, 0x1d52,
-  0x8c8b, 0x4b72,
-  0x8c8c, 0x0ab7,
-  0x8c8d, 0x4b73,
-  0x8c94, 0x1d55,
-  0x8c95, 0x4b7a,
-  0x8c98, 0x1d54,
-  0x8c99, 0x4b7d,
-  0x8c9d, 0x1e3b,
-  0x8c9e, 0x227f,
-  0x8c9f, 0x4b81,
-  0x8ca0, 0x1f0c,
-  0x8ca1, 0x1e59,
-  0x8ca2, 0x1f24,
-  0x8ca3, 0x4b82,
-  0x8ca7, 0x20ba,
-  0x8ca8, 0x1f65,
-  0x8ca9, 0x1ef0,
-  0x8caa, 0x2164,
-  0x8cab, 0x1f30,
-  0x8cac, 0x2261,
-  0x8cad, 0x4b86,
-  0x8caf, 0x22a2,
-  0x8cb0, 0x24ab,
-  0x8cb1, 0x4b88,
-  0x8cb2, 0x24af,
-  0x8cb3, 0x1ee8,
-  0x8cb4, 0x1f39,
-  0x8cb5, 0x4b89,
-  0x8cb6, 0x1e48,
-  0x8cb7, 0x2070,
-  0x8cb8, 0x1ea8,
-  0x8cb9, 0x4b8a,
-  0x8cba, 0x24ac,
-  0x8cbb, 0x1ef7,
-  0x8cbc, 0x2176,
-  0x8cbd, 0x24ad,
-  0x8cbe, 0x4b8b,
-  0x8cbf, 0x207b,
-  0x8cc0, 0x1f45,
-  0x8cc1, 0x24aa,
-  0x8cc2, 0x204b,
-  0x8cc3, 0x202f,
-  0x8cc4, 0x1f5a,
-  0x8cc5, 0x24b0,
-  0x8cc6, 0x4b8c,
-  0x8cc7, 0x22b7,
-  0x8cc8, 0x1f7f,
-  0x8cc9, 0x4b8d,
-  0x8cca, 0x2265,
-  0x8ccb, 0x4b8e,
-  0x8cd1, 0x24b2,
-  0x8cd2, 0x211b,
-  0x8cd3, 0x1e51,
-  0x8cd4, 0x4b94,
-  0x8cd5, 0x24b4,
-  0x8cd6, 0x4b95,
-  0x8cda, 0x24b3,
-  0x8cdb, 0x4b99,
-  0x8cdc, 0x1e9f,
-  0x8cdd, 0x4b9a,
-  0x8cde, 0x2118,
-  0x8cdf, 0x4b9b,
-  0x8ce0, 0x20b4,
-  0x8ce1, 0x23af,
-  0x8ce2, 0x21bb,
-  0x8ce3, 0x2072,
-  0x8ce4, 0x1f95,
-  0x8ce5, 0x4b9c,
-  0x8ce6, 0x1f0a,
-  0x8ce7, 0x24b6,
-  0x8ce8, 0x4b9d,
-  0x8cea, 0x2291,
-  0x8ceb, 0x24b5,
-  0x8cec, 0x2278,
-  0x8ced, 0x1ed4,
-  0x8cee, 0x4b9f,
-  0x8cf4, 0x1ff3,
-  0x8cf5, 0x4ba5,
-  0x8cfa, 0x22a9,
-  0x8cfb, 0x24b7,
-  0x8cfc, 0x1f28,
-  0x8cfd, 0x2109,
-  0x8cfe, 0x22c7,
-  0x8cff, 0x4baa,
-  0x8d00, 0x4bab,
-  0x8d04, 0x24ae,
-  0x8d05, 0x22b1,
-  0x8d06, 0x4baf,
-  0x8d08, 0x2266,
-  0x8d09, 0x4bb1,
-  0x8d0a, 0x225b,
-  0x8d0b, 0x22c4,
-  0x8d0c, 0x4bb2,
-  0x8d0d, 0x2115,
-  0x8d0e, 0x4bb3,
-  0x8d0f, 0x222a,
-  0x8d10, 0x24b1,
-  0x8d11, 0x4bb4,
-  0x8d16, 0x213d,
-  0x8d17, 0x4bb9,
-  0x8d1b, 0x1f15,
-  0x8d1c, 0x225c,
-  0x8d1d, 0x041d,
-  0x8d1e, 0x118b,
-  0x8d1f, 0x06b5,
-  0x8d20, 0x4bbd,
-  0x8d21, 0x070a,
-  0x8d22, 0x048d,
-  0x8d23, 0x1133,
-  0x8d24, 0x0f3a,
-  0x8d25, 0x03e7,
-  0x8d26, 0x116c,
-  0x8d27, 0x080a,
-  0x8d28, 0x11c9,
-  0x8d29, 0x0654,
-  0x8d2a, 0x0e03,
-  0x8d2b, 0x0bd5,
-  0x8d2c, 0x044a,
-  0x8d2d, 0x0713,
-  0x8d2e, 0x11fb,
-  0x8d2f, 0x073a,
-  0x8d30, 0x063e,
-  0x8d31, 0x086d,
-  0x8d32, 0x192c,
-  0x8d34, 0x0e4c,
-  0x8d35, 0x074c,
-  0x8d36, 0x192e,
-  0x8d37, 0x057e,
-  0x8d38, 0x0ab8,
-  0x8d39, 0x066e,
-  0x8d3a, 0x078f,
-  0x8d3b, 0x192f,
-  0x8d3c, 0x1137,
-  0x8d3d, 0x1930,
-  0x8d3e, 0x0849,
-  0x8d3f, 0x07f4,
-  0x8d40, 0x1931,
-  0x8d41, 0x0a27,
-  0x8d42, 0x0a5f,
-  0x8d43, 0x1122,
-  0x8d44, 0x1227,
-  0x8d45, 0x1932,
-  0x8d47, 0x1936,
-  0x8d48, 0x1934,
-  0x8d4a, 0x0d17,
-  0x8d4b, 0x06ae,
-  0x8d4c, 0x0603,
-  0x8d4d, 0x1937,
-  0x8d4e, 0x0d81,
-  0x8d4f, 0x0d06,
-  0x8d50, 0x0550,
-  0x8d51, 0x4bbe,
-  0x8d53, 0x163b,
-  0x8d54, 0x0ba3,
-  0x8d55, 0x1938,
-  0x8d56, 0x09a0,
-  0x8d57, 0x4bc0,
-  0x8d58, 0x1215,
-  0x8d59, 0x1939,
-  0x8d5a, 0x1209,
-  0x8d5b, 0x0cd7,
-  0x8d5c, 0x1289,
-  0x8d5d, 0x1283,
-  0x8d5e, 0x1121,
-  0x8d5f, 0x4bc1,
-  0x8d60, 0x113c,
-  0x8d61, 0x0cfd,
-  0x8d62, 0x1093,
-  0x8d63, 0x06ce,
-  0x8d64, 0x0505,
-  0x8d65, 0x4bc2,
-  0x8d66, 0x0d1b,
-  0x8d67, 0x1cf4,
-  0x8d68, 0x4bc3,
-  0x8d6b, 0x078c,
-  0x8d6c, 0x4bc6,
-  0x8d6d, 0x1cf5,
-  0x8d6e, 0x4bc7,
-  0x8d70, 0x123c,
-  0x8d71, 0x4bc9,
-  0x8d73, 0x1cef,
-  0x8d74, 0x06ab,
-  0x8d75, 0x1175,
-  0x8d76, 0x06ca,
-  0x8d77, 0x0c0f,
-  0x8d78, 0x4bcb,
-  0x8d81, 0x04e8,
-  0x8d82, 0x4bd4,
-  0x8d84, 0x1cf0,
-  0x8d85, 0x04d1,
-  0x8d86, 0x4bd6,
-  0x8d8a, 0x1100,
-  0x8d8b, 0x0c74,
-  0x8d8c, 0x4bda,
-  0x8d91, 0x1cf2,
-  0x8d92, 0x4bdf,
-  0x8d94, 0x1cf1,
-  0x8d95, 0x1f14,
-  0x8d96, 0x4be1,
-  0x8d99, 0x227a,
-  0x8d9a, 0x4be4,
-  0x8d9f, 0x0e1e,
-  0x8da0, 0x4be9,
-  0x8da3, 0x0c7f,
-  0x8da4, 0x4bec,
-  0x8da8, 0x20ee,
-  0x8da9, 0x4bf0,
-  0x8db1, 0x1cf3,
-  0x8db2, 0x25f8,
-  0x8db3, 0x1240,
-  0x8db4, 0x0b80,
-  0x8db5, 0x1d1c,
-  0x8db6, 0x4bf8,
-  0x8db8, 0x1d17,
-  0x8db9, 0x4bfa,
-  0x8dba, 0x1d1f,
-  0x8dbb, 0x4bfb,
-  0x8dbc, 0x1d1e,
-  0x8dbd, 0x4bfc,
-  0x8dbe, 0x11b9,
-  0x8dbf, 0x1d1d,
-  0x8dc0, 0x4bfd,
-  0x8dc3, 0x1101,
-  0x8dc4, 0x1d20,
-  0x8dc5, 0x4c00,
-  0x8dc6, 0x1d28,
-  0x8dc7, 0x4c01,
-  0x8dcb, 0x03da,
-  0x8dcc, 0x05d9,
-  0x8dcd, 0x4c05,
-  0x8dce, 0x1d25,
-  0x8dd0, 0x4c06,
-  0x8dd1, 0x0b9d,
-  0x8dd2, 0x4c07,
-  0x8dd6, 0x1d21,
-  0x8dd8, 0x4c0b,
-  0x8dda, 0x1d23,
-  0x8ddb, 0x1d27,
-  0x8ddc, 0x4c0d,
-  0x8ddd, 0x090f,
-  0x8dde, 0x1d24,
-  0x8ddf, 0x06f5,
-  0x8de0, 0x4c0e,
-  0x8de3, 0x1d2c,
-  0x8de4, 0x1d2f,
-  0x8de5, 0x4c11,
-  0x8de8, 0x0974,
-  0x8de9, 0x4c14,
-  0x8dea, 0x074b,
-  0x8deb, 0x1d18,
-  0x8dec, 0x1d29,
-  0x8ded, 0x4c15,
-  0x8def, 0x0a5e,
-  0x8df0, 0x4c17,
-  0x8df3, 0x0e4b,
-  0x8df4, 0x4c1a,
-  0x8df5, 0x086c,
-  0x8df6, 0x4c1b,
-  0x8df7, 0x1d2a,
-  0x8df9, 0x1d2d,
-  0x8dfa, 0x0624,
-  0x8dfb, 0x1d2e,
-  0x8dfc, 0x4c1c,
-  0x8dfd, 0x1d31,
-  0x8dfe, 0x4c1d,
-  0x8e00, 0x4c1f,
-  0x8e05, 0x1d19,
-  0x8e06, 0x4c24,
-  0x8e09, 0x1d30,
-  0x8e0a, 0x10a0,
-  0x8e0b, 0x4c27,
-  0x8e0c, 0x0511,
-  0x8e0d, 0x4c28,
-  0x8e0f, 0x0df7,
-  0x8e10, 0x1f94,
-  0x8e11, 0x4c2a,
-  0x8e14, 0x1d32,
-  0x8e15, 0x4c2d,
-  0x8e1d, 0x1d33,
-  0x8e1e, 0x0910,
-  0x8e1f, 0x1d34,
-  0x8e20, 0x4c35,
-  0x8e22, 0x0e32,
-  0x8e23, 0x1d37,
-  0x8e24, 0x4c37,
-  0x8e29, 0x048f,
-  0x8e2a, 0x1236,
-  0x8e2b, 0x4c3c,
-  0x8e2c, 0x1d35,
-  0x8e2d, 0x4c3d,
-  0x8e2e, 0x1d36,
-  0x8e2f, 0x1d38,
-  0x8e30, 0x4c3e,
-  0x8e31, 0x1d3e,
-  0x8e32, 0x4c3f,
-  0x8e34, 0x2230,
-  0x8e35, 0x1d3c,
-  0x8e36, 0x4c41,
-  0x8e39, 0x1d3b,
-  0x8e3a, 0x1d39,
-  0x8e3b, 0x4c44,
-  0x8e3d, 0x1d3d,
-  0x8e3e, 0x4c46,
-  0x8e40, 0x1d3a,
-  0x8e41, 0x1d40,
-  0x8e43, 0x4c48,
-  0x8e44, 0x0e36,
-  0x8e45, 0x4c49,
-  0x8e47, 0x173b,
-  0x8e48, 0x0599,
-  0x8e49, 0x1d3f,
-  0x8e4a, 0x1d44,
-  0x8e4b, 0x0df6,
-  0x8e4c, 0x25fd,
-  0x8e4d, 0x4c4b,
-  0x8e51, 0x1d42,
-  0x8e53, 0x4c4f,
-  0x8e55, 0x2600,
-  0x8e56, 0x4c51,
-  0x8e59, 0x1d1a,
-  0x8e5a, 0x4c54,
-  0x8e63, 0x2606,
-  0x8e64, 0x4c5d,
-  0x8e66, 0x042d,
-  0x8e67, 0x4c5f,
-  0x8e69, 0x1d1b,
-  0x8e6a, 0x4c61,
-  0x8e6c, 0x05a6,
-  0x8e6d, 0x04ab,
-  0x8e6e, 0x4c63,
-  0x8e6f, 0x1d48,
-  0x8e70, 0x1d45,
-  0x8e71, 0x4c64,
-  0x8e72, 0x0616,
-  0x8e73, 0x4c65,
-  0x8e74, 0x1d49,
-  0x8e75, 0x4c66,
-  0x8e76, 0x1d46,
-  0x8e77, 0x4c67,
-  0x8e7a, 0x25ff,
-  0x8e7b, 0x4c6a,
-  0x8e7c, 0x1d47,
-  0x8e7d, 0x4c6b,
-  0x8e7f, 0x055d,
-  0x8e80, 0x4c6d,
-  0x8e81, 0x112d,
-  0x8e82, 0x4c6e,
-  0x8e85, 0x1d4a,
-  0x8e86, 0x4c71,
-  0x8e87, 0x051e,
-  0x8e88, 0x4c72,
-  0x8e89, 0x25fc,
-  0x8e8a, 0x1e8c,
-  0x8e8b, 0x2602,
-  0x8e8c, 0x4c73,
-  0x8e8d, 0x224d,
-  0x8e8e, 0x4c74,
-  0x8e8f, 0x1d4b,
-  0x8e90, 0x1d4d,
-  0x8e91, 0x2604,
-  0x8e92, 0x25fe,
-  0x8e93, 0x2603,
-  0x8e94, 0x1d4c,
-  0x8e95, 0x4c75,
-  0x8e9a, 0x2601,
-  0x8e9b, 0x4c7a,
-  0x8e9c, 0x1d4e,
-  0x8e9d, 0x4c7b,
-  0x8e9e, 0x1d4f,
-  0x8e9f, 0x4c7c,
-  0x8ea1, 0x2605,
-  0x8ea2, 0x4c7e,
-  0x8ea5, 0x1ea3,
-  0x8ea6, 0x2608,
-  0x8ea7, 0x4c81,
-  0x8eaa, 0x2607,
-  0x8eab, 0x0d26,
-  0x8eac, 0x0703,
-  0x8ead, 0x4c84,
-  0x8eaf, 0x0c78,
-  0x8eb0, 0x4c86,
-  0x8eb2, 0x0622,
-  0x8eb3, 0x4c88,
-  0x8eba, 0x0e1c,
-  0x8ebb, 0x4c8f,
-  0x8ec0, 0x20f0,
-  0x8ec1, 0x4c94,
-  0x8eca, 0x1e7b,
-  0x8ecb, 0x2267,
-  0x8ecc, 0x1f36,
-  0x8ecd, 0x1fd6,
-  0x8ece, 0x18f8,
-  0x8ecf, 0x4c9d,
-  0x8ed2, 0x21e0,
-  0x8ed3, 0x4ca0,
-  0x8ed4, 0x248c,
-  0x8ed5, 0x4ca1,
-  0x8edb, 0x248d,
-  0x8edc, 0x4ca7,
-  0x8edf, 0x2102,
-  0x8ee0, 0x4caa,
-  0x8ee4, 0x2494,
-  0x8ee5, 0x4cae,
-  0x8eeb, 0x2493,
-  0x8eec, 0x4cb4,
-  0x8ef2, 0x248e,
-  0x8ef3, 0x4cba,
-  0x8ef8, 0x2299,
-  0x8ef9, 0x2491,
-  0x8efa, 0x2496,
-  0x8efb, 0x248f,
-  0x8efc, 0x2492,
-  0x8efd, 0x4cbf,
-  0x8efe, 0x2497,
-  0x8eff, 0x4cc0,
-  0x8f00, 0x4cc1,
-  0x8f03, 0x1fb1,
-  0x8f04, 0x4cc4,
-  0x8f05, 0x249a,
-  0x8f06, 0x4cc5,
-  0x8f07, 0x2499,
-  0x8f08, 0x4cc6,
-  0x8f09, 0x2258,
-  0x8f0a, 0x2498,
-  0x8f0b, 0x4cc7,
-  0x8f12, 0x249b,
-  0x8f13, 0x4cce,
-  0x8f14, 0x1f09,
-  0x8f15, 0x20e6,
-  0x8f16, 0x4ccf,
-  0x8f1b, 0x2026,
-  0x8f1c, 0x249f,
-  0x8f1d, 0x1f59,
-  0x8f1e, 0x249d,
-  0x8f20, 0x4cd4,
-  0x8f25, 0x1f3b,
-  0x8f26, 0x249c,
-  0x8f27, 0x4cd9,
-  0x8f29, 0x1e3a,
-  0x8f2a, 0x205b,
-  0x8f2b, 0x4cdb,
-  0x8f2f, 0x1f70,
-  0x8f30, 0x4cdf,
-  0x8f33, 0x24a0,
-  0x8f34, 0x4ce2,
-  0x8f38, 0x213b,
-  0x8f39, 0x4ce6,
-  0x8f3b, 0x1f07,
-  0x8f3c, 0x4ce8,
-  0x8f3e, 0x2270,
-  0x8f3f, 0x2237,
-  0x8f40, 0x4cea,
-  0x8f42, 0x24d2,
-  0x8f43, 0x4cec,
-  0x8f44, 0x21b3,
-  0x8f45, 0x2245,
-  0x8f46, 0x24a1,
-  0x8f47, 0x4ced,
-  0x8f49, 0x22a8,
-  0x8f4a, 0x4cef,
-  0x8f4d, 0x227c,
-  0x8f4e, 0x1fb0,
-  0x8f4f, 0x4cf2,
-  0x8f54, 0x24a2,
-  0x8f55, 0x4cf7,
-  0x8f5f, 0x1f46,
-  0x8f60, 0x4d01,
-  0x8f61, 0x2380,
-  0x8f62, 0x2495,
-  0x8f63, 0x4d02,
-  0x8f64, 0x2490,
-  0x8f65, 0x4d03,
-  0x8f66, 0x04da,
-  0x8f67, 0x1141,
-  0x8f68, 0x0745,
-  0x8f69, 0x0fc4,
-  0x8f6a, 0x4d04,
-  0x8f6b, 0x18e1,
-  0x8f6c, 0x1207,
-  0x8f6d, 0x18e2,
-  0x8f6e, 0x0a7d,
-  0x8f6f, 0x0cc8,
-  0x8f70, 0x079b,
-  0x8f71, 0x18e3,
-  0x8f74, 0x11e0,
-  0x8f75, 0x18e6,
-  0x8f77, 0x18e9,
-  0x8f78, 0x18e8,
-  0x8f79, 0x18ea,
-  0x8f7b, 0x0c5e,
-  0x8f7c, 0x18ec,
-  0x8f7d, 0x111b,
-  0x8f7e, 0x18ed,
-  0x8f7f, 0x089f,
-  0x8f80, 0x4d05,
-  0x8f81, 0x18ee,
-  0x8f83, 0x08a0,
-  0x8f84, 0x18f0,
-  0x8f85, 0x06a3,
-  0x8f86, 0x0a07,
-  0x8f87, 0x18f1,
-  0x8f88, 0x041b,
-  0x8f89, 0x07e9,
-  0x8f8a, 0x074e,
-  0x8f8b, 0x18f2,
-  0x8f8c, 0x4d06,
-  0x8f8d, 0x18f3,
-  0x8f90, 0x0695,
-  0x8f91, 0x0820,
-  0x8f92, 0x4d07,
-  0x8f93, 0x0d7b,
-  0x8f94, 0x1574,
-  0x8f95, 0x10f2,
-  0x8f96, 0x0f2a,
-  0x8f97, 0x1158,
-  0x8f98, 0x18f6,
-  0x8f99, 0x117f,
-  0x8f9a, 0x18f7,
-  0x8f9b, 0x0f8c,
-  0x8f9c, 0x0715,
-  0x8f9d, 0x4d08,
-  0x8f9e, 0x054a,
-  0x8f9f, 0x0442,
-  0x8fa0, 0x4d09,
-  0x8fa3, 0x099c,
-  0x8fa4, 0x4d0c,
-  0x8fa6, 0x1e30,
-  0x8fa7, 0x4d0e,
-  0x8fa8, 0x044f,
-  0x8faa, 0x4d0f,
-  0x8fab, 0x0451,
-  0x8fac, 0x4d10,
-  0x8fad, 0x1e9d,
-  0x8fae, 0x1e4b,
-  0x8faf, 0x1e4a,
-  0x8fb0, 0x04e2,
-  0x8fb1, 0x0cc3,
-  0x8fb2, 0x20aa,
-  0x8fb3, 0x4d11,
-  0x8fb6, 0x173d,
-  0x8fb7, 0x4d14,
-  0x8fb9, 0x0448,
-  0x8fba, 0x4d16,
-  0x8fbd, 0x0a12,
-  0x8fbe, 0x0572,
-  0x8fbf, 0x4d19,
-  0x8fc1, 0x0c25,
-  0x8fc2, 0x10bd,
-  0x8fc3, 0x4d1b,
-  0x8fc4, 0x0c18,
-  0x8fc5, 0x0fe1,
-  0x8fc6, 0x4d1c,
-  0x8fc7, 0x0756,
-  0x8fc8, 0x0a9c,
-  0x8fc9, 0x4d1d,
-  0x8fce, 0x1092,
-  0x8fcf, 0x4d22,
-  0x8fd0, 0x110e,
-  0x8fd1, 0x08cd,
-  0x8fd2, 0x4d23,
-  0x8fd3, 0x173e,
-  0x8fd4, 0x0652,
-  0x8fd5, 0x173f,
-  0x8fd6, 0x4d24,
-  0x8fd8, 0x07ce,
-  0x8fd9, 0x1183,
-  0x8fda, 0x4d26,
-  0x8fdb, 0x08c9,
-  0x8fdc, 0x10f9,
-  0x8fdd, 0x0eb4,
-  0x8fde, 0x09f5,
-  0x8fdf, 0x04fe,
-  0x8fe0, 0x4d27,
-  0x8fe2, 0x0e49,
-  0x8fe3, 0x4d29,
-  0x8fe4, 0x1742,
-  0x8fe5, 0x1740,
-  0x8fe6, 0x1744,
-  0x8fe7, 0x4d2a,
-  0x8fe8, 0x1746,
-  0x8fe9, 0x1743,
-  0x8fea, 0x05b0,
-  0x8feb, 0x0be7,
-  0x8fec, 0x4d2b,
-  0x8fed, 0x05dd,
-  0x8fee, 0x1741,
-  0x8fef, 0x4d2c,
-  0x8ff0, 0x0d8d,
-  0x8ff1, 0x4d2d,
-  0x8ff3, 0x1745,
-  0x8ff4, 0x267b,
-  0x8ff5, 0x4d2f,
-  0x8ff7, 0x0ad9,
-  0x8ff8, 0x042e,
-  0x8ff9, 0x0816,
-  0x8ffa, 0x4d31,
-  0x8ffd, 0x1214,
-  0x8ffe, 0x4d34,
-  0x9000, 0x0e7c,
-  0x9001, 0x0dc2,
-  0x9002, 0x0d61,
-  0x9003, 0x0e26,
-  0x9004, 0x1748,
-  0x9005, 0x1747,
-  0x9006, 0x0b49,
-  0x9007, 0x4d36,
-  0x9009, 0x0fca,
-  0x900a, 0x0fe0,
-  0x900b, 0x1749,
-  0x900c, 0x4d38,
-  0x900d, 0x174c,
-  0x900e, 0x4d39,
-  0x900f, 0x0e69,
-  0x9010, 0x11ef,
-  0x9011, 0x174b,
-  0x9012, 0x05be,
-  0x9013, 0x4d3a,
-  0x9014, 0x0e6f,
-  0x9015, 0x23f2,
-  0x9016, 0x174d,
-  0x9017, 0x05f9,
-  0x9018, 0x4d3b,
-  0x9019, 0x227e,
-  0x901a, 0x0e59,
-  0x901b, 0x073d,
-  0x901c, 0x4d3c,
-  0x901d, 0x0d5c,
-  0x901e, 0x04f6,
-  0x901f, 0x0dce,
-  0x9020, 0x112f,
-  0x9021, 0x174e,
-  0x9022, 0x0687,
-  0x9023, 0x2019,
-  0x9024, 0x4d3d,
-  0x9026, 0x174a,
-  0x9027, 0x4d3f,
-  0x902d, 0x1751,
-  0x902e, 0x0581,
-  0x902f, 0x1752,
-  0x9030, 0x4d45,
-  0x9032, 0x1fbb,
-  0x9033, 0x4d47,
-  0x9035, 0x174f,
-  0x9037, 0x4d49,
-  0x9038, 0x1064,
-  0x9039, 0x4d4a,
-  0x903b, 0x0a86,
-  0x903c, 0x042f,
-  0x903d, 0x4d4c,
-  0x903e, 0x10c7,
-  0x903f, 0x4d4d,
-  0x9041, 0x061c,
-  0x9042, 0x0de1,
-  0x9043, 0x4d4f,
-  0x9044, 0x1753,
-  0x9045, 0x4d50,
-  0x9047, 0x10db,
-  0x9048, 0x4d52,
-  0x904b, 0x2253,
-  0x904c, 0x4d55,
-  0x904d, 0x0452,
-  0x904e, 0x1f3e,
-  0x904f, 0x0633,
-  0x9050, 0x1756,
-  0x9051, 0x1754,
-  0x9053, 0x05a1,
-  0x9054, 0x1ea6,
-  0x9055, 0x218e,
-  0x9056, 0x4d56,
-  0x9057, 0x104c,
-  0x9058, 0x1758,
-  0x9059, 0x4d57,
-  0x905b, 0x175a,
-  0x905c, 0x21ec,
-  0x905d, 0x4d59,
-  0x905e, 0x1ebe,
-  0x905f, 0x4d5a,
-  0x9060, 0x224a,
-  0x9061, 0x4d5b,
-  0x9062, 0x1759,
-  0x9063, 0x0c2f,
-  0x9064, 0x4d5c,
-  0x9065, 0x102a,
-  0x9066, 0x4d5d,
-  0x9068, 0x1757,
-  0x9069, 0x2133,
-  0x906a, 0x4d5f,
-  0x906d, 0x1125,
-  0x906e, 0x117b,
-  0x906f, 0x4d62,
-  0x9072, 0x1e84,
-  0x9073, 0x4d65,
-  0x9074, 0x175c,
-  0x9075, 0x124e,
-  0x9076, 0x4d66,
-  0x9077, 0x20cf,
-  0x9078, 0x21e2,
-  0x9079, 0x4d67,
-  0x907a, 0x220f,
-  0x907b, 0x4d68,
-  0x907c, 0x2029,
-  0x907d, 0x175d,
-  0x907e, 0x4d69,
-  0x907f, 0x0445,
-  0x9080, 0x1024,
-  0x9081, 0x2073,
-  0x9082, 0x175e,
-  0x9083, 0x1760,
-  0x9084, 0x1f55,
-  0x9085, 0x4d6a,
-  0x9087, 0x23f1,
-  0x9088, 0x175f,
-  0x9089, 0x4d6c,
-  0x908a, 0x1e46,
-  0x908b, 0x1761,
-  0x908c, 0x4d6d,
-  0x908f, 0x2063,
-  0x9090, 0x23f3,
-  0x9091, 0x105f,
-  0x9092, 0x4d70,
-  0x9093, 0x05ac,
-  0x9094, 0x4d71,
-  0x9095, 0x1817,
-  0x9096, 0x4d72,
-  0x9097, 0x1367,
-  0x9098, 0x4d73,
-  0x9099, 0x136a,
-  0x909a, 0x4d74,
-  0x909b, 0x1368,
-  0x909c, 0x4d75,
-  0x909d, 0x1369,
-  0x909e, 0x4d76,
-  0x90a1, 0x136c,
-  0x90a2, 0x0f9a,
-  0x90a3, 0x0b2a,
-  0x90a4, 0x4d79,
-  0x90a6, 0x03f9,
-  0x90a7, 0x4d7b,
-  0x90aa, 0x0f7b,
-  0x90ab, 0x4d7e,
-  0x90ac, 0x136b,
-  0x90ad, 0x4d7f,
-  0x90ae, 0x10af,
-  0x90af, 0x0761,
-  0x90b0, 0x1372,
-  0x90b1, 0x0c6e,
-  0x90b2, 0x4d80,
-  0x90b3, 0x136e,
-  0x90b4, 0x136d,
-  0x90b5, 0x0d14,
-  0x90b6, 0x136f,
-  0x90b7, 0x4d81,
-  0x90b8, 0x1371,
-  0x90b9, 0x123b,
-  0x90ba, 0x1370,
-  0x90bb, 0x0a23,
-  0x90bc, 0x4d82,
-  0x90be, 0x1375,
-  0x90bf, 0x4d84,
-  0x90c1, 0x10d9,
-  0x90c2, 0x4d86,
-  0x90c4, 0x1377,
-  0x90c5, 0x1374,
-  0x90c6, 0x4d88,
-  0x90c7, 0x1378,
-  0x90c8, 0x4d89,
-  0x90ca, 0x088d,
-  0x90cb, 0x4d8b,
-  0x90ce, 0x09b4,
-  0x90cf, 0x1373,
-  0x90d0, 0x1376,
-  0x90d1, 0x11a2,
-  0x90d2, 0x4d8e,
-  0x90d3, 0x1379,
-  0x90d4, 0x4d8f,
-  0x90d7, 0x137d,
-  0x90d8, 0x4d92,
-  0x90db, 0x137e,
-  0x90dc, 0x137c,
-  0x90dd, 0x0779,
-  0x90de, 0x4d95,
-  0x90df, 0x231e,
-  0x90e0, 0x4d96,
-  0x90e1, 0x0931,
-  0x90e2, 0x137b,
-  0x90e3, 0x4d97,
-  0x90e6, 0x137a,
-  0x90e7, 0x110a,
-  0x90e8, 0x0486,
-  0x90e9, 0x4d9a,
-  0x90eb, 0x137f,
-  0x90ec, 0x4d9c,
-  0x90ed, 0x0752,
-  0x90ee, 0x4d9d,
-  0x90ef, 0x1380,
-  0x90f0, 0x4d9e,
-  0x90f4, 0x04e0,
-  0x90f5, 0x2233,
-  0x90f6, 0x4da2,
-  0x90f8, 0x0587,
-  0x90f9, 0x4da4,
-  0x90fd, 0x05fb,
-  0x90fe, 0x1381,
-  0x90ff, 0x4da8,
-  0x9100, 0x4da9,
-  0x9102, 0x0634,
-  0x9103, 0x4dab,
-  0x9104, 0x1382,
-  0x9105, 0x4dac,
-  0x9106, 0x2320,
-  0x9107, 0x4dad,
-  0x9109, 0x21c7,
-  0x910a, 0x4daf,
-  0x9112, 0x22bc,
-  0x9113, 0x4db7,
-  0x9114, 0x231c,
-  0x9115, 0x4db8,
-  0x9116, 0x2251,
-  0x9117, 0x4db9,
-  0x9119, 0x0432,
-  0x911a, 0x4dbb,
-  0x911e, 0x1384,
-  0x911f, 0x4dbf,
-  0x9122, 0x1383,
-  0x9123, 0x1385,
-  0x9124, 0x4dc2,
-  0x9127, 0x1ebb,
-  0x9128, 0x4dc5,
-  0x912d, 0x2287,
-  0x912e, 0x4dca,
-  0x912f, 0x1387,
-  0x9130, 0x202d,
-  0x9131, 0x1386,
-  0x9132, 0x1eab,
-  0x9133, 0x4dcb,
-  0x9134, 0x231d,
-  0x9135, 0x4dcc,
-  0x9136, 0x231f,
-  0x9137, 0x4dcd,
-  0x9139, 0x1388,
-  0x913a, 0x231b,
-  0x913b, 0x4dcf,
-  0x9143, 0x1389,
-  0x9144, 0x4dd7,
-  0x9146, 0x138a,
-  0x9147, 0x4dd9,
-  0x9148, 0x2321,
-  0x9149, 0x10b4,
-  0x914a, 0x1cf8,
-  0x914b, 0x0c72,
-  0x914c, 0x1220,
-  0x914d, 0x0ba5,
-  0x914e, 0x1cfa,
-  0x9150, 0x1cf9,
-  0x9151, 0x4dda,
-  0x9152, 0x08f5,
-  0x9153, 0x4ddb,
-  0x9157, 0x0fba,
-  0x9158, 0x4ddf,
-  0x915a, 0x0670,
-  0x915b, 0x4de1,
-  0x915d, 0x1110,
-  0x915e, 0x0dfd,
-  0x915f, 0x4de3,
-  0x9161, 0x1cfe,
-  0x9162, 0x1cfd,
-  0x9163, 0x075f,
-  0x9164, 0x1cfc,
-  0x9165, 0x0dcb,
-  0x9166, 0x4de5,
-  0x9169, 0x1d00,
-  0x916a, 0x09bd,
-  0x916b, 0x4de8,
-  0x916c, 0x050f,
-  0x916d, 0x4de9,
-  0x916e, 0x0e5b,
-  0x916f, 0x1d01,
-  0x9170, 0x1cff,
-  0x9171, 0x0885,
-  0x9172, 0x1d04,
-  0x9173, 0x4dea,
-  0x9174, 0x1d05,
-  0x9175, 0x089e,
-  0x9176, 0x0abd,
-  0x9177, 0x096e,
-  0x9178, 0x0dd6,
-  0x9179, 0x1d06,
-  0x917a, 0x4deb,
-  0x917d, 0x1d02,
-  0x917f, 0x0b53,
-  0x9180, 0x4dee,
-  0x9185, 0x1d08,
-  0x9186, 0x4df3,
-  0x9187, 0x053f,
-  0x9188, 0x4df4,
-  0x9189, 0x124a,
-  0x918a, 0x4df5,
-  0x918b, 0x055a,
-  0x918c, 0x1d07,
-  0x918d, 0x1d0a,
-  0x918e, 0x4df6,
-  0x9190, 0x1d09,
-  0x9191, 0x1d0b,
-  0x9192, 0x0f9c,
-  0x9193, 0x4df8,
-  0x9196, 0x2255,
-  0x9197, 0x4dfb,
-  0x919a, 0x0ad6,
-  0x919b, 0x0c84,
-  0x919c, 0x1e8f,
-  0x919d, 0x4dfe,
-  0x91a2, 0x1d0c,
-  0x91a4, 0x4e03,
-  0x91aa, 0x1d0e,
-  0x91ab, 0x220c,
-  0x91ac, 0x1fa4,
-  0x91ad, 0x1d0f,
-  0x91b0, 0x4e09,
-  0x91b4, 0x1d13,
-  0x91b5, 0x1d12,
-  0x91b6, 0x4e0d,
-  0x91ba, 0x1d14,
-  0x91bb, 0x4e11,
-  0x91c0, 0x209b,
-  0x91c1, 0x21d8,
-  0x91c2, 0x4e16,
-  0x91c3, 0x25fa,
-  0x91c4, 0x4e17,
-  0x91c5, 0x25f9,
-  0x91c6, 0x4e18,
-  0x91c7, 0x0490,
-  0x91c8, 0x4e19,
-  0x91c9, 0x10b9,
-  0x91ca, 0x0d64,
-  0x91cb, 0x2134,
-  0x91cc, 0x09da,
-  0x91cd, 0x11d7,
-  0x91ce, 0x1037,
-  0x91cf, 0x0a08,
-  0x91d0, 0x4e1a,
-  0x91d1, 0x08c1,
-  0x91d2, 0x24f3,
-  0x91d5, 0x24f8,
-  0x91d6, 0x4e1b,
-  0x91d7, 0x24f7,
-  0x91d8, 0x1ec8,
-  0x91d9, 0x24f6,
-  0x91da, 0x4e1c,
-  0x91dc, 0x06a5,
-  0x91dd, 0x2280,
-  0x91de, 0x4e1e,
-  0x91e3, 0x1ec5,
-  0x91e4, 0x24fb,
-  0x91e5, 0x4e23,
-  0x91e7, 0x24fa,
-  0x91e8, 0x4e25,
-  0x91e9, 0x1eed,
-  0x91ea, 0x4e26,
-  0x91f5, 0x24fd,
-  0x91f6, 0x4e31,
-  0x91f7, 0x24f9,
-  0x91f8, 0x4e32,
-  0x91f9, 0x24fe,
-  0x91fa, 0x20cd,
-  0x91fb, 0x4e33,
-  0x9200, 0x2508,
-  0x9201, 0x2504,
-  0x9202, 0x4e38,
-  0x9204, 0x2506,
-  0x9205, 0x4e3a,
-  0x9208, 0x24ff,
-  0x9209, 0x2090,
-  0x920a, 0x4e3d,
-  0x920d, 0x1edd,
-  0x920e, 0x1f25,
-  0x920f, 0x4e40,
-  0x9210, 0x2503,
-  0x9211, 0x2502,
-  0x9212, 0x4e41,
-  0x9214, 0x1e7a,
-  0x9215, 0x20a6,
-  0x9216, 0x4e43,
-  0x921e, 0x1fd5,
-  0x921f, 0x4e4b,
-  0x9223, 0x1f11,
-  0x9224, 0x4e4f,
-  0x9225, 0x2507,
-  0x9226, 0x2500,
-  0x9227, 0x2505,
-  0x9228, 0x4e50,
-  0x922e, 0x2519,
-  0x922f, 0x4e56,
-  0x9230, 0x2515,
-  0x9231, 0x4e57,
-  0x9233, 0x250c,
-  0x9234, 0x2031,
-  0x9235, 0x4e59,
-  0x9237, 0x250b,
-  0x9238, 0x250f,
-  0x9239, 0x251a,
-  0x923a, 0x2509,
-  0x923b, 0x4e5b,
-  0x923d, 0x250e,
-  0x923e, 0x2234,
-  0x923f, 0x2513,
-  0x9240, 0x1f80,
-  0x9241, 0x4e5d,
-  0x9245, 0x2501,
-  0x9246, 0x4e61,
-  0x9248, 0x2517,
-  0x9249, 0x2516,
-  0x924a, 0x4e63,
-  0x924d, 0x2518,
-  0x924e, 0x4e66,
-  0x9251, 0x1e56,
-  0x9252, 0x4e69,
-  0x9255, 0x250d,
-  0x9256, 0x4e6c,
-  0x9257, 0x20d3,
-  0x9258, 0x4e6d,
-  0x925a, 0x207a,
-  0x925b, 0x20ce,
-  0x925c, 0x4e6f,
-  0x925e, 0x2510,
-  0x925f, 0x4e71,
-  0x9262, 0x1e55,
-  0x9263, 0x4e74,
-  0x9266, 0x250a,
-  0x9267, 0x4e77,
-  0x926c, 0x2511,
-  0x926e, 0x4e7c,
-  0x9274, 0x086b,
-  0x9275, 0x4e82,
-  0x9278, 0x1faa,
-  0x9279, 0x4e85,
-  0x927a, 0x251e,
-  0x927b, 0x1f1f,
-  0x927c, 0x4e86,
-  0x927f, 0x252d,
-  0x9280, 0x221d,
-  0x9281, 0x4e89,
-  0x9283, 0x2532,
-  0x9284, 0x4e8b,
-  0x9285, 0x217b,
-  0x9286, 0x4e8c,
-  0x928e, 0x1d80,
-  0x928f, 0x4e94,
-  0x9291, 0x21af,
-  0x9292, 0x4e96,
-  0x9293, 0x252c,
-  0x9294, 0x4e97,
-  0x9296, 0x2528,
-  0x9297, 0x4e99,
-  0x9298, 0x208c,
-  0x9299, 0x4e9a,
-  0x929a, 0x252f,
-  0x929b, 0x4e9b,
-  0x929c, 0x21bc,
-  0x929d, 0x4e9c,
-  0x92a0, 0x251d,
-  0x92a1, 0x4e9f,
-  0x92a3, 0x2535,
-  0x92a4, 0x4ea1,
-  0x92a5, 0x220d,
-  0x92a6, 0x2526,
-  0x92a7, 0x4ea2,
-  0x92a8, 0x2534,
-  0x92a9, 0x252a,
-  0x92aa, 0x251f,
-  0x92ab, 0x2531,
-  0x92ac, 0x251c,
-  0x92ad, 0x4ea3,
-  0x92ae, 0x1d81,
-  0x92af, 0x4ea4,
-  0x92b1, 0x2525,
-  0x92b2, 0x4ea6,
-  0x92b7, 0x21cd,
-  0x92b8, 0x4eab,
-  0x92b9, 0x21da,
-  0x92ba, 0x4eac,
-  0x92bb, 0x2172,
-  0x92bc, 0x253e,
-  0x92bd, 0x4ead,
-  0x92c1, 0x204f,
-  0x92c2, 0x4eb1,
-  0x92c3, 0x2543,
-  0x92c4, 0x4eb2,
-  0x92c5, 0x21d7,
-  0x92c6, 0x4eb3,
-  0x92c7, 0x1e3c,
-  0x92c8, 0x1d82,
-  0x92c9, 0x4eb4,
-  0x92cc, 0x2529,
-  0x92cd, 0x4eb7,
-  0x92cf, 0x2521,
-  0x92d0, 0x4eb9,
-  0x92d2, 0x1eff,
-  0x92d3, 0x4ebb,
-  0x92dd, 0x253f,
-  0x92de, 0x4ec5,
-  0x92df, 0x2544,
-  0x92e0, 0x4ec6,
-  0x92e3, 0x2523,
-  0x92e4, 0x1e90,
-  0x92e5, 0x253a,
-  0x92e6, 0x2545,
-  0x92e7, 0x4ec9,
-  0x92e8, 0x253d,
-  0x92e9, 0x4eca,
-  0x92ea, 0x20c1,
-  0x92eb, 0x4ecb,
-  0x92ed, 0x2103,
-  0x92ee, 0x2520,
-  0x92ef, 0x253c,
-  0x92f0, 0x253b,
-  0x92f1, 0x2538,
-  0x92f2, 0x4ecd,
-  0x92f6, 0x2540,
-  0x92f7, 0x4ed1,
-  0x92f8, 0x1fcd,
-  0x92f9, 0x4ed2,
-  0x92fc, 0x1f18,
-  0x92fd, 0x4ed5,
-  0x9300, 0x4ed8,
-  0x9301, 0x254b,
-  0x9302, 0x4ed9,
-  0x9306, 0x2547,
-  0x9307, 0x254f,
-  0x9309, 0x4edd,
-  0x9310, 0x22b0,
-  0x9311, 0x4ee4,
-  0x9312, 0x2546,
-  0x9313, 0x4ee5,
-  0x9315, 0x254c,
-  0x9316, 0x4ee7,
-  0x9318, 0x1e9a,
-  0x9319, 0x2552,
-  0x931a, 0x2530,
-  0x931b, 0x2549,
-  0x931c, 0x4ee9,
-  0x931f, 0x2551,
-  0x9320, 0x1eca,
-  0x9321, 0x4eec,
-  0x9322, 0x20d2,
-  0x9323, 0x4eed,
-  0x9326, 0x1fb8,
-  0x9327, 0x4ef0,
-  0x9328, 0x2079,
-  0x9329, 0x4ef1,
-  0x932b, 0x21ab,
-  0x932c, 0x4ef3,
-  0x932e, 0x254d,
-  0x932f, 0x1ea5,
-  0x9330, 0x4ef5,
-  0x9332, 0x204c,
-  0x9333, 0x2080,
-  0x9334, 0x4ef7,
-  0x9336, 0x266d,
-  0x9337, 0x4ef9,
-  0x9338, 0x2537,
-  0x9339, 0x4efa,
-  0x933e, 0x1d83,
-  0x933f, 0x4eff,
-  0x9340, 0x254a,
-  0x9341, 0x21b8,
-  0x9342, 0x4f00,
-  0x9343, 0x254e,
-  0x9344, 0x4f01,
-  0x9346, 0x24fc,
-  0x9347, 0x2554,
-  0x9348, 0x4f03,
-  0x934b, 0x1f3c,
-  0x934c, 0x4f06,
-  0x934d, 0x1ed5,
-  0x934e, 0x4f07,
-  0x9354, 0x2556,
-  0x9355, 0x4f0d,
-  0x9358, 0x2268,
-  0x9359, 0x4f10,
-  0x935b, 0x1ed6,
-  0x935c, 0x4f12,
-  0x9364, 0x2557,
-  0x9365, 0x2553,
-  0x9366, 0x4f1a,
-  0x9369, 0x2548,
-  0x936a, 0x1d84,
-  0x936b, 0x4f1d,
-  0x936c, 0x20dc,
-  0x936d, 0x4f1e,
-  0x9370, 0x2559,
-  0x9371, 0x4f21,
-  0x9375, 0x1f97,
-  0x9376, 0x2555,
-  0x9377, 0x4f25,
-  0x937a, 0x227d,
-  0x937b, 0x4f28,
-  0x937e, 0x257e,
-  0x937f, 0x4f2b,
-  0x9382, 0x207c,
-  0x9383, 0x4f2e,
-  0x9384, 0x255a,
-  0x9385, 0x4f2f,
-  0x9387, 0x255e,
-  0x9388, 0x4f31,
-  0x938a, 0x1e34,
-  0x938b, 0x4f33,
-  0x938f, 0x1d86,
-  0x9390, 0x4f37,
-  0x9396, 0x215e,
-  0x9397, 0x4f3d,
-  0x9398, 0x2560,
-  0x9399, 0x4f3e,
-  0x93a2, 0x21a2,
-  0x93a3, 0x2354,
-  0x93a4, 0x4f47,
-  0x93a6, 0x2563,
-  0x93a7, 0x2527,
-  0x93a8, 0x4f49,
-  0x93a9, 0x252e,
-  0x93aa, 0x2558,
-  0x93ab, 0x4f4a,
-  0x93ac, 0x1f1b,
-  0x93ad, 0x4f4b,
-  0x93ae, 0x2283,
-  0x93af, 0x4f4c,
-  0x93b0, 0x2564,
-  0x93b1, 0x4f4d,
-  0x93b3, 0x20a0,
-  0x93b4, 0x4f4f,
-  0x93b5, 0x2565,
-  0x93b6, 0x4f50,
-  0x93b8, 0x2561,
-  0x93b9, 0x4f52,
-  0x93bf, 0x2562,
-  0x93c0, 0x4f58,
-  0x93c3, 0x256c,
-  0x93c4, 0x4f5b,
-  0x93c7, 0x256d,
-  0x93c8, 0x2020,
-  0x93c9, 0x4f5e,
-  0x93ca, 0x1d85,
-  0x93cb, 0x4f5f,
-  0x93cc, 0x255f,
-  0x93cd, 0x256a,
-  0x93ce, 0x4f60,
-  0x93d1, 0x256e,
-  0x93d2, 0x4f63,
-  0x93d6, 0x1e01,
-  0x93d7, 0x2539,
-  0x93d8, 0x255c,
-  0x93d9, 0x4f67,
-  0x93dc, 0x2568,
-  0x93de, 0x256b,
-  0x93df, 0x1e6f,
-  0x93e0, 0x4f6a,
-  0x93e1, 0x1fc4,
-  0x93e2, 0x2567,
-  0x93e3, 0x4f6b,
-  0x93e4, 0x255b,
-  0x93e5, 0x4f6c,
-  0x93e8, 0x261d,
-  0x93e9, 0x4f6f,
-  0x93f5, 0x252b,
-  0x93f6, 0x4f7b,
-  0x93f7, 0x2571,
-  0x93f8, 0x4f7c,
-  0x93f9, 0x2577,
-  0x93fa, 0x4f7d,
-  0x9400, 0x4f83,
-  0x9403, 0x2522,
-  0x9404, 0x4f86,
-  0x940b, 0x2533,
-  0x940c, 0x4f8d,
-  0x9410, 0x202a,
-  0x9411, 0x4f91,
-  0x9412, 0x2536,
-  0x9413, 0x2573,
-  0x9414, 0x256f,
-  0x9415, 0x4f92,
-  0x9418, 0x2293,
-  0x9419, 0x2578,
-  0x941a, 0x4f95,
-  0x941d, 0x2570,
-  0x941e, 0x4f98,
-  0x9420, 0x2575,
-  0x9421, 0x4f9a,
-  0x9426, 0x2541,
-  0x9428, 0x255d,
-  0x9429, 0x4f9f,
-  0x942e, 0x201a,
-  0x942f, 0x4fa4,
-  0x9432, 0x257a,
-  0x9433, 0x2006,
-  0x9434, 0x4fa7,
-  0x9435, 0x2177,
-  0x9436, 0x4fa8,
-  0x9438, 0x251b,
-  0x9439, 0x4faa,
-  0x943a, 0x2524,
-  0x943b, 0x4fab,
-  0x943e, 0x1d87,
-  0x943f, 0x257b,
-  0x9440, 0x4fae,
-  0x9444, 0x22a3,
-  0x9445, 0x4fb2,
-  0x944a, 0x2579,
-  0x944b, 0x4fb7,
-  0x944c, 0x2566,
-  0x944d, 0x4fb8,
-  0x9452, 0x1f93,
-  0x9453, 0x4fbd,
-  0x9454, 0x257c,
-  0x9455, 0x4fbe,
-  0x9460, 0x2514,
-  0x9461, 0x4fc9,
-  0x9463, 0x257d,
-  0x9464, 0x4fcb,
-  0x9465, 0x2572,
-  0x9466, 0x4fcc,
-  0x946b, 0x1d88,
-  0x946c, 0x4fd1,
-  0x946d, 0x2574,
-  0x946e, 0x4fd2,
-  0x9470, 0x224e,
-  0x9471, 0x4fd4,
-  0x9472, 0x21c6,
-  0x9473, 0x4fd5,
-  0x9477, 0x209f,
-  0x9478, 0x4fd9,
-  0x9479, 0x2576,
-  0x947a, 0x4fda,
-  0x947c, 0x2064,
-  0x947d, 0x22bf,
-  0x947e, 0x261c,
-  0x947f, 0x225e,
-  0x9480, 0x4fdc,
-  0x9485, 0x1a8e,
-  0x9488, 0x118c,
-  0x9489, 0x05e3,
-  0x948a, 0x1a92,
-  0x948b, 0x1a91,
-  0x948c, 0x1a93,
-  0x948e, 0x0c22,
-  0x948f, 0x1a95,
-  0x9491, 0x4fe1,
-  0x9492, 0x064d,
-  0x9493, 0x05d7,
-  0x9494, 0x1a97,
-  0x9495, 0x1a99,
-  0x9496, 0x4fe2,
-  0x9497, 0x1a98,
-  0x9498, 0x4fe3,
-  0x9499, 0x06c1,
-  0x949a, 0x1a9a,
-  0x949d, 0x061a,
-  0x949e, 0x04d3,
-  0x949f, 0x11d2,
-  0x94a0, 0x0b29,
-  0x94a1, 0x041e,
-  0x94a2, 0x06d1,
-  0x94a3, 0x1a9d,
-  0x94a5, 0x1102,
-  0x94a6, 0x0c52,
-  0x94a7, 0x092a,
-  0x94a8, 0x0ee8,
-  0x94a9, 0x070c,
-  0x94aa, 0x1aa0,
-  0x94ab, 0x1a9f,
-  0x94ac, 0x1aa2,
-  0x94ad, 0x1aa1,
-  0x94ae, 0x0b66,
-  0x94af, 0x1aa3,
-  0x94b1, 0x0c2b,
-  0x94b2, 0x1aa5,
-  0x94b3, 0x0c2c,
-  0x94b4, 0x1aa6,
-  0x94b5, 0x046e,
-  0x94b6, 0x1aa7,
-  0x94bb, 0x1247,
-  0x94bc, 0x1aac,
-  0x94be, 0x084b,
-  0x94bf, 0x1aae,
-  0x94c0, 0x10b0,
-  0x94c1, 0x0e4d,
-  0x94c2, 0x0473,
-  0x94c3, 0x0a2e,
-  0x94c4, 0x1aaf,
-  0x94c5, 0x0c23,
-  0x94c6, 0x0ab2,
-  0x94c7, 0x4fe4,
-  0x94c8, 0x1ab0,
-  0x94cf, 0x4fe5,
-  0x94d0, 0x1ab7,
-  0x94d3, 0x4fe6,
-  0x94d5, 0x1aba,
-  0x94d8, 0x1abe,
-  0x94d9, 0x1abd,
-  0x94da, 0x4fe8,
-  0x94db, 0x1abf,
-  0x94dc, 0x0e5e,
-  0x94dd, 0x0a68,
-  0x94de, 0x1ac0,
-  0x94e1, 0x1142,
-  0x94e2, 0x1ac3,
-  0x94e3, 0x0f20,
-  0x94e4, 0x1ac4,
-  0x94e6, 0x4fe9,
-  0x94e7, 0x1ac6,
-  0x94e9, 0x1ac9,
-  0x94ea, 0x1ac8,
-  0x94eb, 0x1aca,
-  0x94ec, 0x06f0,
-  0x94ed, 0x0aff,
-  0x94ee, 0x1acb,
-  0x94f0, 0x0893,
-  0x94f1, 0x1046,
-  0x94f2, 0x04c0,
-  0x94f3, 0x1acd,
-  0x94f6, 0x107f,
-  0x94f7, 0x1ad0,
-  0x94f8, 0x11fc,
-  0x94f9, 0x1ad1,
-  0x94fa, 0x0beb,
-  0x94fb, 0x4fea,
-  0x94fc, 0x1ad2,
-  0x94fe, 0x09fd,
-  0x94ff, 0x1ad4,
-  0x9500, 0x0f67,
-  0x9501, 0x0ded,
-  0x9502, 0x1ad6,
-  0x9503, 0x1ad5,
-  0x9504, 0x051f,
-  0x9505, 0x0751,
-  0x9506, 0x1ad7,
-  0x9508, 0x0fad,
-  0x9509, 0x1ad9,
-  0x950b, 0x0683,
-  0x950c, 0x0f8a,
-  0x950d, 0x1adb,
-  0x9510, 0x0ccc,
-  0x9511, 0x0e33,
-  0x9512, 0x1ade,
-  0x9517, 0x1181,
-  0x9518, 0x1ae3,
-  0x9519, 0x0570,
-  0x951a, 0x0aaf,
-  0x951b, 0x1ae4,
-  0x951c, 0x4feb,
-  0x951d, 0x1ae5,
-  0x9520, 0x4fec,
-  0x9521, 0x0f0c,
-  0x9522, 0x1ae8,
-  0x9523, 0x0a87,
-  0x9524, 0x053b,
-  0x9525, 0x1213,
-  0x9526, 0x08c6,
-  0x9527, 0x4fed,
-  0x9528, 0x0f34,
-  0x9529, 0x1aeb,
-  0x952a, 0x1ae9,
-  0x952c, 0x1aec,
-  0x952d, 0x05e6,
-  0x952e, 0x086f,
-  0x952f, 0x0911,
-  0x9530, 0x0ad1,
-  0x9531, 0x1aed,
-  0x9533, 0x4fee,
-  0x9534, 0x1aef,
-  0x9535, 0x1af7,
-  0x9536, 0x1af0,
-  0x9539, 0x0c3f,
-  0x953a, 0x1b19,
-  0x953b, 0x060c,
-  0x953c, 0x1af3,
-  0x953d, 0x4fef,
-  0x953e, 0x1af4,
-  0x9540, 0x0605,
-  0x9541, 0x0ac3,
-  0x9542, 0x1af6,
-  0x9543, 0x4ff0,
-  0x9544, 0x1af8,
-  0x9547, 0x1193,
-  0x9548, 0x4ff1,
-  0x9549, 0x1afb,
-  0x954a, 0x0b5a,
-  0x954b, 0x4ff2,
-  0x954c, 0x1afc,
-  0x954d, 0x0b5b,
-  0x954e, 0x1afd,
-  0x9550, 0x06df,
-  0x9551, 0x0402,
-  0x9552, 0x1aff,
-  0x9555, 0x4ff3,
-  0x9556, 0x1b02,
-  0x955a, 0x4ff4,
-  0x955b, 0x1b06,
-  0x955c, 0x08e4,
-  0x955d, 0x1b09,
-  0x955e, 0x1b07,
-  0x9560, 0x4ff5,
-  0x9561, 0x1b0a,
-  0x9563, 0x0a16,
-  0x9564, 0x1b0c,
-  0x956d, 0x09c3,
-  0x956e, 0x4ff6,
-  0x956f, 0x1b15,
-  0x9570, 0x09f6,
-  0x9571, 0x1b16,
-  0x9574, 0x4ff7,
-  0x9576, 0x0f4f,
-  0x9577, 0x1e75,
-  0x9578, 0x4ff9,
-  0x957f, 0x04c9,
-  0x9580, 0x207d,
-  0x9581, 0x5000,
-  0x9582, 0x23bf,
-  0x9583, 0x2113,
-  0x9584, 0x5001,
-  0x9586, 0x23c0,
-  0x9587, 0x5003,
-  0x9589, 0x1e45,
-  0x958a, 0x5005,
-  0x958b, 0x1fd8,
-  0x958c, 0x23c4,
-  0x958d, 0x5006,
-  0x958e, 0x23c2,
-  0x958f, 0x2104,
-  0x9590, 0x5007,
-  0x9591, 0x21bd,
-  0x9592, 0x5008,
-  0x9593, 0x1f87,
-  0x9594, 0x23c3,
-  0x9595, 0x5009,
-  0x9598, 0x2269,
-  0x9599, 0x500c,
-  0x95a1, 0x1f43,
-  0x95a2, 0x5014,
-  0x95a3, 0x1f1e,
-  0x95a4, 0x2679,
-  0x95a5, 0x1eeb,
-  0x95a6, 0x5015,
-  0x95a8, 0x1f35,
-  0x95a9, 0x208a,
-  0x95aa, 0x5017,
-  0x95ab, 0x23c7,
-  0x95ac, 0x23c9,
-  0x95ad, 0x23c6,
-  0x95ae, 0x5018,
-  0x95b2, 0x224f,
-  0x95b3, 0x501c,
-  0x95b6, 0x23cb,
-  0x95b7, 0x501f,
-  0x95b9, 0x21f3,
-  0x95ba, 0x5021,
-  0x95bb, 0x21f7,
-  0x95bc, 0x23cf,
-  0x95bd, 0x23ce,
-  0x95be, 0x23ca,
-  0x95bf, 0x23cd,
-  0x95c0, 0x5022,
-  0x95c3, 0x23d0,
-  0x95c4, 0x5025,
-  0x95c6, 0x266c,
-  0x95c7, 0x5027,
-  0x95c8, 0x23c1,
-  0x95c9, 0x5028,
-  0x95ca, 0x1fee,
-  0x95cb, 0x23d1,
-  0x95cc, 0x1ff8,
-  0x95cd, 0x5029,
-  0x95d0, 0x23d3,
-  0x95d1, 0x502c,
-  0x95d4, 0x23d2,
-  0x95d5, 0x23d4,
-  0x95d6, 0x1e98,
-  0x95d7, 0x502f,
-  0x95dc, 0x1f2c,
-  0x95dd, 0x5034,
-  0x95de, 0x23d5,
-  0x95df, 0x5035,
-  0x95e1, 0x1e71,
-  0x95e2, 0x2691,
-  0x95e3, 0x5037,
-  0x95e5, 0x23c5,
-  0x95e6, 0x5039,
-  0x95e8, 0x0aca,
-  0x95e9, 0x1685,
-  0x95ea, 0x0cfa,
-  0x95eb, 0x1686,
-  0x95ec, 0x503b,
-  0x95ed, 0x043e,
-  0x95ee, 0x0ed9,
-  0x95ef, 0x0536,
-  0x95f0, 0x0ccd,
-  0x95f1, 0x1687,
-  0x95f2, 0x0f3d,
-  0x95f3, 0x1688,
-  0x95f4, 0x0857,
-  0x95f5, 0x1689,
-  0x95f7, 0x0acb,
-  0x95f8, 0x1143,
-  0x95f9, 0x0b39,
-  0x95fa, 0x0744,
-  0x95fb, 0x0ed4,
-  0x95fc, 0x168b,
-  0x95fd, 0x0afb,
-  0x95fe, 0x168c,
-  0x95ff, 0x503c,
-  0x9600, 0x0644,
-  0x9601, 0x06ee,
-  0x9602, 0x0789,
-  0x9603, 0x168d,
-  0x9605, 0x1107,
-  0x9606, 0x168f,
-  0x9607, 0x503d,
-  0x9608, 0x1690,
-  0x9609, 0x0ff4,
-  0x960a, 0x1691,
-  0x960e, 0x0fff,
-  0x960f, 0x1695,
-  0x9610, 0x04c2,
-  0x9611, 0x09a6,
-  0x9612, 0x1696,
-  0x9613, 0x503e,
-  0x9614, 0x0996,
-  0x9615, 0x1697,
-  0x9618, 0x503f,
-  0x9619, 0x169a,
-  0x961b, 0x5040,
-  0x961c, 0x06b2,
-  0x961d, 0x1354,
-  0x961e, 0x5041,
-  0x961f, 0x0612,
-  0x9620, 0x5042,
-  0x9621, 0x1356,
-  0x9622, 0x1355,
-  0x9623, 0x5043,
-  0x962a, 0x1358,
-  0x962b, 0x504a,
-  0x962e, 0x0cc9,
-  0x962f, 0x504d,
-  0x9631, 0x1357,
-  0x9632, 0x065d,
-  0x9633, 0x101d,
-  0x9634, 0x107c,
-  0x9635, 0x1194,
-  0x9636, 0x08a8,
-  0x9637, 0x504f,
-  0x963b, 0x1245,
-  0x963c, 0x135a,
-  0x963d, 0x1359,
-  0x963e, 0x5053,
-  0x963f, 0x03ad,
-  0x9640, 0x0e84,
-  0x9641, 0x5054,
-  0x9642, 0x135b,
-  0x9643, 0x5055,
-  0x9644, 0x06b8,
-  0x9645, 0x083d,
-  0x9646, 0x0a64,
-  0x9647, 0x0a4b,
-  0x9648, 0x04e7,
-  0x9649, 0x135c,
-  0x964a, 0x5056,
-  0x964b, 0x0a51,
-  0x964c, 0x0b13,
-  0x964d, 0x0886,
-  0x964e, 0x5057,
-  0x9650, 0x0f4b,
-  0x9651, 0x5059,
-  0x9654, 0x135d,
-  0x9655, 0x0cfb,
-  0x9656, 0x505c,
-  0x9658, 0x231a,
-  0x9659, 0x505e,
-  0x965b, 0x0446,
-  0x965c, 0x5060,
-  0x965d, 0x2114,
-  0x965e, 0x5061,
-  0x965f, 0x135e,
-  0x9660, 0x5062,
-  0x9661, 0x05f7,
-  0x9662, 0x10fd,
-  0x9663, 0x2284,
-  0x9664, 0x0522,
-  0x9665, 0x5063,
-  0x9667, 0x135f,
-  0x9668, 0x110c,
-  0x9669, 0x0f42,
-  0x966a, 0x0ba4,
-  0x966b, 0x5065,
-  0x966c, 0x1360,
-  0x966d, 0x5066,
-  0x9670, 0x221c,
-  0x9671, 0x5069,
-  0x9672, 0x1361,
-  0x9673, 0x1e7e,
-  0x9674, 0x1362,
-  0x9675, 0x0a33,
-  0x9676, 0x0e28,
-  0x9677, 0x0f4a,
-  0x9678, 0x204d,
-  0x9679, 0x506a,
-  0x967d, 0x2201,
-  0x967e, 0x506e,
-  0x9685, 0x10cc,
-  0x9686, 0x0a48,
-  0x9687, 0x5075,
-  0x9688, 0x1363,
-  0x9689, 0x5076,
-  0x968a, 0x1ed9,
-  0x968b, 0x0dda,
-  0x968c, 0x5077,
-  0x968d, 0x1364,
-  0x968e, 0x1fb2,
-  0x968f, 0x0ddb,
-  0x9690, 0x1085,
-  0x9691, 0x5078,
-  0x9694, 0x06ef,
-  0x9695, 0x2252,
-  0x9696, 0x507b,
-  0x9697, 0x1365,
-  0x9698, 0x03ba,
-  0x9699, 0x0f23,
-  0x969a, 0x507c,
-  0x969b, 0x1f79,
-  0x969c, 0x1170,
-  0x969d, 0x507d,
-  0x96a7, 0x0de2,
-  0x96a8, 0x2157,
-  0x96a9, 0x5087,
-  0x96aa, 0x21bf,
-  0x96ab, 0x5088,
-  0x96b0, 0x1366,
-  0x96b1, 0x221f,
-  0x96b2, 0x508d,
-  0x96b3, 0x1684,
-  0x96b4, 0x203d,
-  0x96b5, 0x508e,
-  0x96b6, 0x09ee,
-  0x96b7, 0x508f,
-  0x96b8, 0x2015,
-  0x96b9, 0x1d79,
-  0x96ba, 0x5090,
-  0x96bb, 0x26a5,
-  0x96bc, 0x1d7a,
-  0x96be, 0x0b34,
-  0x96bf, 0x5091,
-  0x96c0, 0x0c93,
-  0x96c1, 0x100c,
-  0x96c2, 0x5092,
-  0x96c4, 0x0fa6,
-  0x96c5, 0x0fee,
-  0x96c6, 0x0822,
-  0x96c7, 0x0726,
-  0x96c8, 0x5094,
-  0x96c9, 0x1b1c,
-  0x96ca, 0x5095,
-  0x96cc, 0x0549,
-  0x96cd, 0x109f,
-  0x96ce, 0x1d7c,
-  0x96cf, 0x0520,
-  0x96d0, 0x5097,
-  0x96d2, 0x1d7d,
-  0x96d3, 0x5099,
-  0x96d5, 0x05d2,
-  0x96d6, 0x2156,
-  0x96d7, 0x509b,
-  0x96d9, 0x2144,
-  0x96da, 0x509d,
-  0x96db, 0x1e91,
-  0x96dc, 0x2257,
-  0x96dd, 0x509e,
-  0x96e0, 0x1d7f,
-  0x96e1, 0x50a1,
-  0x96e2, 0x200a,
-  0x96e3, 0x2092,
-  0x96e4, 0x50a2,
-  0x96e8, 0x10cf,
-  0x96e9, 0x1d61,
-  0x96ea, 0x0fd2,
-  0x96eb, 0x50a6,
-  0x96ef, 0x1d63,
-  0x96f0, 0x50aa,
-  0x96f2, 0x2250,
-  0x96f3, 0x1d62,
-  0x96f4, 0x50ac,
-  0x96f6, 0x0a2c,
-  0x96f7, 0x09c2,
-  0x96f8, 0x50ae,
-  0x96f9, 0x040b,
-  0x96fa, 0x50af,
-  0x96fb, 0x1ec3,
-  0x96fc, 0x50b0,
-  0x96fe, 0x0efc,
-  0x96ff, 0x50b2,
-  0x9700, 0x0fb3,
-  0x9701, 0x1d65,
-  0x9702, 0x50b3,
-  0x9704, 0x0f63,
-  0x9705, 0x50b5,
-  0x9706, 0x1d64,
-  0x9707, 0x1191,
-  0x9708, 0x1d66,
-  0x9709, 0x0abe,
-  0x970a, 0x50b6,
-  0x970d, 0x0809,
-  0x970e, 0x1d68,
-  0x970f, 0x1d67,
-  0x9710, 0x50b9,
-  0x9713, 0x0b41,
-  0x9714, 0x50bc,
-  0x9716, 0x0a21,
-  0x9717, 0x50be,
-  0x971c, 0x0d9f,
-  0x971d, 0x50c3,
-  0x971e, 0x0f29,
-  0x971f, 0x50c4,
-  0x9727, 0x21a8,
-  0x9728, 0x50cc,
-  0x972a, 0x1d69,
-  0x972b, 0x50ce,
-  0x972d, 0x1d6a,
-  0x972e, 0x50d0,
-  0x9730, 0x1d6b,
-  0x9731, 0x50d2,
-  0x9732, 0x0a5d,
-  0x9733, 0x50d3,
-  0x9738, 0x03df,
-  0x9739, 0x0bba,
-  0x973a, 0x50d8,
-  0x973d, 0x260d,
-  0x973e, 0x1d6c,
-  0x973f, 0x50db,
-  0x9742, 0x260c,
-  0x9743, 0x50de,
-  0x9744, 0x260e,
-  0x9745, 0x50df,
-  0x9748, 0x2032,
-  0x9749, 0x50e2,
-  0x9752, 0x0c5d,
-  0x9753, 0x1d60,
-  0x9754, 0x50eb,
-  0x9756, 0x08e7,
-  0x9757, 0x50ed,
-  0x9759, 0x08e1,
-  0x975a, 0x260b,
-  0x975b, 0x05c6,
-  0x975c, 0x50ef,
-  0x975e, 0x0664,
-  0x975f, 0x50f1,
-  0x9760, 0x094c,
-  0x9761, 0x0ad7,
-  0x9762, 0x0aeb,
-  0x9763, 0x50f2,
-  0x9765, 0x1282,
-  0x9766, 0x50f4,
-  0x9768, 0x22c3,
-  0x9769, 0x06ea,
-  0x976a, 0x50f6,
-  0x9773, 0x08ca,
-  0x9774, 0x0fce,
-  0x9775, 0x50ff,
-  0x9776, 0x03db,
-  0x9777, 0x5100,
-  0x977c, 0x1dc8,
-  0x977d, 0x5105,
-  0x9785, 0x1dc9,
-  0x9786, 0x510d,
-  0x978b, 0x0f77,
-  0x978c, 0x5112,
-  0x978d, 0x03bb,
-  0x978e, 0x5113,
-  0x978f, 0x1f23,
-  0x9790, 0x5114,
-  0x9791, 0x1dca,
-  0x9793, 0x5115,
-  0x9794, 0x1dcc,
-  0x9795, 0x5116,
-  0x9798, 0x0c47,
-  0x9799, 0x5119,
-  0x97a0, 0x08fe,
-  0x97a1, 0x5120,
-  0x97a3, 0x1dcf,
-  0x97a4, 0x5122,
-  0x97a6, 0x2695,
-  0x97a7, 0x5124,
-  0x97ab, 0x1dce,
-  0x97ac, 0x5128,
-  0x97ad, 0x0447,
-  0x97ae, 0x5129,
-  0x97af, 0x1dcd,
-  0x97b0, 0x512a,
-  0x97b2, 0x1dd0,
-  0x97b3, 0x512c,
-  0x97b4, 0x1dd1,
-  0x97b5, 0x512d,
-  0x97bd, 0x265e,
-  0x97be, 0x5135,
-  0x97c3, 0x265d,
-  0x97c4, 0x513a,
-  0x97c6, 0x2692,
-  0x97c7, 0x513c,
-  0x97c9, 0x265f,
-  0x97ca, 0x513e,
-  0x97cb, 0x218d,
-  0x97cc, 0x20fd,
-  0x97cd, 0x513f,
-  0x97d3, 0x1f40,
-  0x97d4, 0x5145,
-  0x97d9, 0x2465,
-  0x97da, 0x514a,
-  0x97dc, 0x2467,
-  0x97dd, 0x514c,
-  0x97de, 0x2466,
-  0x97df, 0x514d,
-  0x97e6, 0x0eb3,
-  0x97e7, 0x0ca8,
-  0x97e8, 0x5154,
-  0x97e9, 0x0762,
-  0x97ea, 0x184e,
-  0x97ed, 0x08f1,
-  0x97ee, 0x5155,
-  0x97f3, 0x107b,
-  0x97f4, 0x515a,
-  0x97f5, 0x1112,
-  0x97f6, 0x0d11,
-  0x97f7, 0x515b,
-  0x97ff, 0x21c9,
-  0x9800, 0x5163,
-  0x9801, 0x2209,
-  0x9802, 0x1ec9,
-  0x9803, 0x20e9,
-  0x9804, 0x5164,
-  0x9805, 0x21ca,
-  0x9806, 0x2146,
-  0x9807, 0x25c5,
-  0x9808, 0x21dc,
-  0x9809, 0x5165,
-  0x980a, 0x245e,
-  0x980b, 0x5166,
-  0x980c, 0x214f,
-  0x980d, 0x5167,
-  0x980e, 0x25c6,
-  0x9810, 0x2241,
-  0x9811, 0x218a,
-  0x9812, 0x1e2f,
-  0x9813, 0x1edc,
-  0x9814, 0x5168,
-  0x9817, 0x20bf,
-  0x9818, 0x2034,
-  0x9819, 0x516b,
-  0x981c, 0x25c9,
-  0x981d, 0x516e,
-  0x9821, 0x25c8,
-  0x9822, 0x5172,
-  0x9824, 0x220e,
-  0x9825, 0x5174,
-  0x9826, 0x25cb,
-  0x9827, 0x5175,
-  0x982d, 0x217d,
-  0x982e, 0x517b,
-  0x9830, 0x1f7e,
-  0x9831, 0x517d,
-  0x9837, 0x25cc,
-  0x9838, 0x1fc3,
-  0x9839, 0x5183,
-  0x983b, 0x20b9,
-  0x983c, 0x5185,
-  0x983d, 0x2181,
-  0x983e, 0x5186,
-  0x9846, 0x1fda,
-  0x9847, 0x518e,
-  0x984c, 0x2173,
-  0x984d, 0x1ee1,
-  0x984e, 0x25cd,
-  0x984f, 0x5193,
-  0x9853, 0x25ce,
-  0x9854, 0x21f6,
-  0x9855, 0x5197,
-  0x9858, 0x224b,
-  0x9859, 0x25d1,
-  0x985a, 0x519a,
-  0x985b, 0x1ec0,
-  0x985c, 0x519b,
-  0x985e, 0x2008,
-  0x985f, 0x519d,
-  0x9862, 0x25d0,
-  0x9863, 0x51a0,
-  0x9865, 0x25d2,
-  0x9866, 0x51a2,
-  0x9867, 0x1f2a,
-  0x9868, 0x51a3,
-  0x986b, 0x1e72,
-  0x986c, 0x25d3,
-  0x986d, 0x51a6,
-  0x986f, 0x21be,
-  0x9870, 0x25d4,
-  0x9871, 0x2044,
-  0x9872, 0x51a8,
-  0x9873, 0x25cf,
-  0x9874, 0x20f3,
-  0x9875, 0x103a,
-  0x9876, 0x05e4,
-  0x9877, 0x0c67,
-  0x9878, 0x1be0,
-  0x9879, 0x0f5b,
-  0x987a, 0x0da8,
-  0x987b, 0x0fb6,
-  0x987c, 0x1827,
-  0x987d, 0x0e98,
-  0x987e, 0x0724,
-  0x987f, 0x0618,
-  0x9880, 0x1be1,
-  0x9881, 0x03ef,
-  0x9882, 0x0dc1,
-  0x9883, 0x1be2,
-  0x9884, 0x10e7,
-  0x9885, 0x0a54,
-  0x9886, 0x0a35,
-  0x9887, 0x0be3,
-  0x9888, 0x08e0,
-  0x9889, 0x1be3,
-  0x988a, 0x0848,
-  0x988b, 0x51a9,
-  0x988c, 0x1be4,
-  0x988e, 0x51aa,
-  0x988f, 0x1be6,
-  0x9890, 0x104a,
-  0x9891, 0x0bd4,
-  0x9892, 0x51ab,
-  0x9893, 0x0e78,
-  0x9894, 0x1be7,
-  0x9895, 0x51ac,
-  0x9896, 0x1096,
-  0x9897, 0x0952,
-  0x9898, 0x0e35,
-  0x9899, 0x51ad,
-  0x989a, 0x1be8,
-  0x989c, 0x0ffe,
-  0x989d, 0x062d,
-  0x989e, 0x1bea,
-  0x98a0, 0x05c0,
-  0x98a1, 0x1bec,
-  0x98a3, 0x51ae,
-  0x98a4, 0x04c3,
-  0x98a5, 0x1bee,
-  0x98a7, 0x0c82,
-  0x98a8, 0x1f00,
-  0x98a9, 0x51af,
-  0x98ae, 0x24cc,
-  0x98b0, 0x51b4,
-  0x98b1, 0x2698,
-  0x98b2, 0x51b5,
-  0x98b3, 0x2678,
-  0x98b4, 0x51b6,
-  0x98b6, 0x24ce,
-  0x98b7, 0x51b8,
-  0x98bc, 0x24cf,
-  0x98bd, 0x51bd,
-  0x98c4, 0x20b8,
-  0x98c5, 0x51c4,
-  0x98c6, 0x24d0,
-  0x98c7, 0x51c5,
-  0x98c8, 0x24d1,
-  0x98c9, 0x51c6,
-  0x98ce, 0x0684,
-  0x98cf, 0x51cb,
-  0x98d1, 0x19b7,
-  0x98d4, 0x51cd,
-  0x98d5, 0x19ba,
-  0x98d6, 0x51ce,
-  0x98d8, 0x0bcd,
-  0x98d9, 0x19bb,
-  0x98db, 0x1ef4,
-  0x98dc, 0x51d0,
-  0x98de, 0x0666,
-  0x98df, 0x0d4a,
-  0x98e0, 0x239b,
-  0x98e1, 0x51d2,
-  0x98e2, 0x267e,
-  0x98e3, 0x51d3,
-  0x98e7, 0x161a,
-  0x98e8, 0x1de7,
-  0x98e9, 0x239d,
-  0x98ea, 0x239f,
-  0x98ec, 0x51d7,
-  0x98ed, 0x23a1,
-  0x98ee, 0x51d8,
-  0x98ef, 0x1ef1,
-  0x98f0, 0x51d9,
-  0x98f2, 0x221e,
-  0x98f3, 0x51db,
-  0x98f4, 0x23a2,
-  0x98f5, 0x51dc,
-  0x98fc, 0x214b,
-  0x98fd, 0x1e36,
-  0x98fe, 0x2135,
-  0x98ff, 0x51e3,
-  0x9900, 0x51e4,
-  0x9903, 0x1fad,
-  0x9904, 0x51e7,
-  0x9905, 0x1e53,
-  0x9906, 0x51e8,
-  0x9909, 0x23a3,
-  0x990a, 0x2203,
-  0x990b, 0x51eb,
-  0x990c, 0x1ee7,
-  0x990d, 0x1de8,
-  0x990e, 0x51ec,
-  0x9910, 0x0494,
-  0x9911, 0x23a4,
-  0x9912, 0x2097,
-  0x9913, 0x1ee4,
-  0x9914, 0x51ee,
-  0x9918, 0x2238,
-  0x9919, 0x51f2,
-  0x991b, 0x23a5,
-  0x991c, 0x51f4,
-  0x991e, 0x1f9a,
-  0x991f, 0x51f6,
-  0x9921, 0x21c3,
-  0x9922, 0x51f8,
-  0x9928, 0x1f2e,
-  0x9929, 0x51fe,
-  0x992e, 0x1de9,
-  0x992f, 0x5203,
-  0x9933, 0x239c,
-  0x9934, 0x5207,
-  0x9937, 0x23a6,
-  0x9938, 0x520a,
-  0x993c, 0x239e,
-  0x993d, 0x520e,
-  0x993e, 0x2035,
-  0x993f, 0x23a7,
-  0x9940, 0x520f,
-  0x9943, 0x23a8,
-  0x9944, 0x5212,
-  0x9945, 0x2075,
-  0x9946, 0x5213,
-  0x9948, 0x23a9,
-  0x994b, 0x1feb,
-  0x994c, 0x23ac,
-  0x994d, 0x5215,
-  0x9951, 0x1f6a,
-  0x9952, 0x20f9,
-  0x9953, 0x5219,
-  0x9954, 0x1deb,
-  0x9955, 0x1dea,
-  0x9956, 0x521a,
-  0x9957, 0x2666,
-  0x9958, 0x521b,
-  0x995c, 0x2667,
-  0x995d, 0x521f,
-  0x995e, 0x1e6c,
-  0x995f, 0x5220,
-  0x9962, 0x23ad,
-  0x9963, 0x161d,
-  0x9964, 0x5223,
-  0x9965, 0x0815,
-  0x9966, 0x5224,
-  0x9967, 0x161e,
-  0x996d, 0x0656,
-  0x996e, 0x1082,
-  0x996f, 0x0875,
-  0x9970, 0x0d65,
-  0x9971, 0x040e,
-  0x9972, 0x0dbc,
-  0x9973, 0x5225,
-  0x9974, 0x1624,
-  0x9975, 0x063b,
-  0x9976, 0x0c9f,
-  0x9977, 0x1625,
-  0x9978, 0x5226,
-  0x997a, 0x0899,
-  0x997b, 0x5228,
-  0x997c, 0x0466,
-  0x997d, 0x1626,
-  0x997e, 0x5229,
-  0x997f, 0x0635,
-  0x9980, 0x1627,
-  0x9981, 0x0b3c,
-  0x9982, 0x522a,
-  0x9984, 0x1628,
-  0x9985, 0x0f47,
-  0x9986, 0x0736,
-  0x9987, 0x1629,
-  0x9988, 0x098c,
-  0x9989, 0x522c,
-  0x998a, 0x162a,
-  0x998b, 0x04bd,
-  0x998c, 0x522d,
-  0x998d, 0x162b,
-  0x998e, 0x522e,
-  0x998f, 0x0a3c,
-  0x9990, 0x162c,
-  0x9992, 0x0a9f,
-  0x9993, 0x162e,
-  0x9996, 0x0d6e,
-  0x9997, 0x126e,
-  0x9998, 0x12f9,
-  0x9999, 0x0f50,
-  0x999a, 0x522f,
-  0x99a5, 0x1b2b,
-  0x99a6, 0x523a,
-  0x99a8, 0x13de,
-  0x99a9, 0x523c,
-  0x99ac, 0x206d,
-  0x99ad, 0x2242,
-  0x99ae, 0x1f02,
-  0x99af, 0x523f,
-  0x99b1, 0x2183,
-  0x99b2, 0x5241,
-  0x99b3, 0x1e85,
-  0x99b4, 0x21e9,
-  0x99b5, 0x5242,
-  0x99c1, 0x1e57,
-  0x99c2, 0x524e,
-  0x99d0, 0x22a5,
-  0x99d1, 0x2407,
-  0x99d2, 0x1fca,
-  0x99d3, 0x525c,
-  0x99d4, 0x2402,
-  0x99d5, 0x1f82,
-  0x99d6, 0x525d,
-  0x99d8, 0x2408,
-  0x99d9, 0x2404,
-  0x99da, 0x525f,
-  0x99db, 0x2131,
-  0x99dc, 0x5260,
-  0x99dd, 0x2184,
-  0x99de, 0x5261,
-  0x99df, 0x2403,
-  0x99e0, 0x5262,
-  0x99e1, 0x206e,
-  0x99e2, 0x240b,
-  0x99e3, 0x5263,
-  0x99ed, 0x1f3f,
-  0x99ee, 0x526d,
-  0x99f1, 0x2067,
-  0x99f2, 0x5270,
-  0x99ff, 0x1fd7,
-  0x9a00, 0x527d,
-  0x9a01, 0x1e83,
-  0x9a02, 0x527e,
-  0x9a05, 0x240f,
-  0x9a06, 0x5281,
-  0x9a0d, 0x240e,
-  0x9a0e, 0x20c7,
-  0x9a0f, 0x240d,
-  0x9a10, 0x5288,
-  0x9a16, 0x2412,
-  0x9a17, 0x528e,
-  0x9a19, 0x20b7,
-  0x9a1a, 0x5290,
-  0x9a2b, 0x23f0,
-  0x9a2c, 0x52a1,
-  0x9a2d, 0x2411,
-  0x9a2e, 0x2414,
-  0x9a2f, 0x52a2,
-  0x9a30, 0x2170,
-  0x9a31, 0x52a3,
-  0x9a36, 0x2405,
-  0x9a37, 0x210c,
-  0x9a38, 0x2415,
-  0x9a39, 0x52a8,
-  0x9a3e, 0x2066,
-  0x9a3f, 0x52ad,
-  0x9a40, 0x2352,
-  0x9a41, 0x2413,
-  0x9a42, 0x2410,
-  0x9a43, 0x2416,
-  0x9a45, 0x20f1,
-  0x9a46, 0x52ae,
-  0x9a4a, 0x240a,
-  0x9a4b, 0x52b2,
-  0x9a4d, 0x2409,
-  0x9a4e, 0x52b4,
-  0x9a4f, 0x2418,
-  0x9a50, 0x52b5,
-  0x9a55, 0x1fa7,
-  0x9a56, 0x52ba,
-  0x9a57, 0x21fc,
-  0x9a58, 0x52bb,
-  0x9a5a, 0x1fc1,
-  0x9a5b, 0x2406,
-  0x9a5c, 0x52bd,
-  0x9a5f, 0x229c,
-  0x9a60, 0x52c0,
-  0x9a62, 0x204e,
-  0x9a63, 0x52c2,
-  0x9a64, 0x241a,
-  0x9a65, 0x2419,
-  0x9a66, 0x52c3,
-  0x9a6a, 0x240c,
-  0x9a6b, 0x52c7,
-  0x9a6c, 0x0a94,
-  0x9a6d, 0x10e9,
-  0x9a6e, 0x0e85,
-  0x9a6f, 0x0fda,
-  0x9a70, 0x0500,
-  0x9a71, 0x0c7a,
-  0x9a72, 0x52c8,
-  0x9a73, 0x047c,
-  0x9a74, 0x0a66,
-  0x9a75, 0x17ba,
-  0x9a76, 0x0d52,
-  0x9a77, 0x17bb,
-  0x9a79, 0x0903,
-  0x9a7a, 0x17bd,
-  0x9a7b, 0x1201,
-  0x9a7c, 0x0e86,
-  0x9a7d, 0x17bf,
-  0x9a7e, 0x0850,
-  0x9a7f, 0x17be,
-  0x9a80, 0x17c0,
-  0x9a82, 0x0a95,
-  0x9a83, 0x52c9,
-  0x9a84, 0x088f,
-  0x9a85, 0x17c2,
-  0x9a86, 0x0a8d,
-  0x9a87, 0x075e,
-  0x9a88, 0x17c3,
-  0x9a89, 0x52ca,
-  0x9a8a, 0x17c4,
-  0x9a8b, 0x04f7,
-  0x9a8c, 0x1012,
-  0x9a8d, 0x52cb,
-  0x9a8f, 0x0932,
-  0x9a90, 0x17c5,
-  0x9a91, 0x0c0e,
-  0x9a92, 0x17c6,
-  0x9a94, 0x52cd,
-  0x9a96, 0x17c8,
-  0x9a97, 0x0bcc,
-  0x9a98, 0x17c9,
-  0x9a99, 0x52cf,
-  0x9a9a, 0x0ce0,
-  0x9a9b, 0x17ca,
-  0x9a9e, 0x1735,
-  0x9a9f, 0x17cd,
-  0x9aa1, 0x0a89,
-  0x9aa2, 0x17cf,
-  0x9aa4, 0x11e7,
-  0x9aa5, 0x17d1,
-  0x9aa6, 0x52d0,
-  0x9aa7, 0x17d2,
-  0x9aa8, 0x0720,
-  0x9aa9, 0x52d1,
-  0x9aaf, 0x1e29,
-  0x9ab0, 0x1dd3,
-  0x9ab1, 0x1dd2,
-  0x9ab2, 0x52d7,
-  0x9ab6, 0x1dd6,
-  0x9ab7, 0x1dd4,
-  0x9ab8, 0x0758,
-  0x9ab9, 0x52db,
-  0x9aba, 0x1dd7,
-  0x9abb, 0x52dc,
-  0x9abc, 0x1dd8,
-  0x9abd, 0x52dd,
-  0x9ac0, 0x1dda,
-  0x9ac1, 0x1dd9,
-  0x9ac2, 0x1ddc,
-  0x9ac3, 0x52e0,
-  0x9ac5, 0x1ddb,
-  0x9ac6, 0x52e2,
-  0x9acb, 0x1ddd,
-  0x9acd, 0x52e7,
-  0x9acf, 0x2661,
-  0x9ad0, 0x52e9,
-  0x9ad1, 0x1ddf,
-  0x9ad2, 0x26a4,
-  0x9ad3, 0x0ddd,
-  0x9ad4, 0x2174,
-  0x9ad5, 0x2663,
-  0x9ad6, 0x2662,
-  0x9ad7, 0x52ea,
-  0x9ad8, 0x06da,
-  0x9ad9, 0x52eb,
-  0x9adf, 0x1dec,
-  0x9ae0, 0x52f1,
-  0x9ae1, 0x1ded,
-  0x9ae2, 0x52f2,
-  0x9ae6, 0x1dee,
-  0x9ae7, 0x52f6,
-  0x9aeb, 0x1df0,
-  0x9aec, 0x52fa,
-  0x9aed, 0x1df2,
-  0x9aee, 0x2675,
-  0x9aef, 0x1def,
-  0x9af0, 0x52fb,
-  0x9af9, 0x1df3,
-  0x9afa, 0x5304,
-  0x9afb, 0x1df1,
-  0x9afc, 0x5305,
-  0x9b00, 0x5309,
-  0x9b03, 0x1234,
-  0x9b04, 0x530c,
-  0x9b06, 0x214c,
-  0x9b07, 0x530e,
-  0x9b08, 0x1df4,
-  0x9b09, 0x530f,
-  0x9b0d, 0x267a,
-  0x9b0e, 0x5313,
-  0x9b0f, 0x1df5,
-  0x9b10, 0x5314,
-  0x9b13, 0x1df6,
-  0x9b14, 0x5317,
-  0x9b1a, 0x26a0,
-  0x9b1b, 0x531d,
-  0x9b1f, 0x1df7,
-  0x9b20, 0x5321,
-  0x9b22, 0x2668,
-  0x9b23, 0x1df8,
-  0x9b24, 0x5323,
-  0x9b25, 0x1ed0,
-  0x9b26, 0x5324,
-  0x9b27, 0x2096,
-  0x9b28, 0x5325,
-  0x9b29, 0x23cc,
-  0x9b2a, 0x5326,
-  0x9b2e, 0x23c8,
-  0x9b2f, 0x139b,
-  0x9b30, 0x532a,
-  0x9b31, 0x223e,
-  0x9b32, 0x1260,
-  0x9b33, 0x532b,
-  0x9b3b, 0x1773,
-  0x9b3c, 0x0746,
-  0x9b3d, 0x5333,
-  0x9b41, 0x098a,
-  0x9b42, 0x07ff,
-  0x9b43, 0x1de1,
-  0x9b44, 0x0be6,
-  0x9b45, 0x1de0,
-  0x9b46, 0x5337,
-  0x9b47, 0x1de2,
-  0x9b48, 0x1de4,
-  0x9b49, 0x1de3,
-  0x9b4a, 0x5338,
-  0x9b4d, 0x1de5,
-  0x9b4e, 0x2665,
-  0x9b4f, 0x0ec9,
-  0x9b50, 0x533b,
-  0x9b51, 0x1de6,
-  0x9b52, 0x533c,
-  0x9b54, 0x0b0a,
-  0x9b55, 0x533e,
-  0x9b58, 0x2664,
-  0x9b59, 0x5341,
-  0x9b5a, 0x2239,
-  0x9b5b, 0x5342,
-  0x9b6f, 0x204a,
-  0x9b70, 0x5356,
-  0x9b74, 0x261f,
-  0x9b75, 0x535a,
-  0x9b77, 0x261e,
-  0x9b78, 0x535c,
-  0x9b81, 0x2620,
-  0x9b82, 0x5365,
-  0x9b83, 0x2621,
-  0x9b84, 0x5366,
-  0x9b8e, 0x2622,
-  0x9b8f, 0x5370,
-  0x9b90, 0x2627,
-  0x9b91, 0x1e39,
-  0x9b92, 0x2625,
-  0x9b93, 0x5371,
-  0x9b9a, 0x2629,
-  0x9b9b, 0x5378,
-  0x9b9d, 0x262e,
-  0x9b9e, 0x262b,
-  0x9b9f, 0x537a,
-  0x9baa, 0x262a,
-  0x9bab, 0x262d,
-  0x9bac, 0x5385,
-  0x9bad, 0x2628,
-  0x9bae, 0x21b9,
-  0x9baf, 0x5386,
-  0x9bc0, 0x2636,
-  0x9bc1, 0x2630,
-  0x9bc2, 0x5397,
-  0x9bc7, 0x2638,
-  0x9bc8, 0x539c,
-  0x9bc9, 0x200d,
-  0x9bca, 0x2637,
-  0x9bcb, 0x539d,
-  0x9bd4, 0x2645,
-  0x9bd5, 0x53a6,
-  0x9bd6, 0x263a,
-  0x9bd7, 0x53a7,
-  0x9bdb, 0x2643,
-  0x9bdc, 0x53ab,
-  0x9bdd, 0x2640,
-  0x9bde, 0x53ac,
-  0x9be1, 0x263d,
-  0x9be2, 0x2641,
-  0x9be3, 0x53af,
-  0x9be4, 0x263e,
-  0x9be5, 0x53b0,
-  0x9be7, 0x263f,
-  0x9be8, 0x1fc0,
-  0x9be9, 0x53b2,
-  0x9bea, 0x263b,
-  0x9bec, 0x53b3,
-  0x9bf0, 0x2642,
-  0x9bf1, 0x53b7,
-  0x9bf4, 0x2644,
-  0x9bf5, 0x53ba,
-  0x9bfd, 0x2639,
-  0x9bfe, 0x53c2,
-  0x9bff, 0x264c,
-  0x9c00, 0x53c3,
-  0x9c08, 0x2647,
-  0x9c09, 0x264b,
-  0x9c0a, 0x53cb,
-  0x9c0d, 0x2649,
-  0x9c0e, 0x53ce,
-  0x9c10, 0x2648,
-  0x9c11, 0x53d0,
-  0x9c12, 0x264a,
-  0x9c13, 0x2108,
-  0x9c14, 0x53d1,
-  0x9c20, 0x264d,
-  0x9c21, 0x53dd,
-  0x9c23, 0x2634,
-  0x9c24, 0x53df,
-  0x9c25, 0x2651,
-  0x9c26, 0x53e0,
-  0x9c28, 0x2650,
-  0x9c29, 0x2652,
-  0x9c2a, 0x53e2,
-  0x9c2d, 0x264f,
-  0x9c2e, 0x53e5,
-  0x9c31, 0x2632,
-  0x9c32, 0x264e,
-  0x9c33, 0x2653,
-  0x9c34, 0x53e8,
-  0x9c35, 0x2657,
-  0x9c36, 0x53e9,
-  0x9c37, 0x2635,
-  0x9c38, 0x53ea,
-  0x9c39, 0x2633,
-  0x9c3a, 0x53eb,
-  0x9c3b, 0x2656,
-  0x9c3c, 0x53ec,
-  0x9c3e, 0x2654,
-  0x9c3f, 0x53ee,
-  0x9c45, 0x2658,
-  0x9c46, 0x53f4,
-  0x9c48, 0x2655,
-  0x9c49, 0x1e4d,
-  0x9c4a, 0x53f6,
-  0x9c52, 0x265b,
-  0x9c53, 0x53fe,
-  0x9c54, 0x265a,
-  0x9c55, 0x53ff,
-  0x9c56, 0x2659,
-  0x9c57, 0x202e,
-  0x9c58, 0x262f,
-  0x9c59, 0x5400,
-  0x9c5d, 0x2646,
-  0x9c5e, 0x5404,
-  0x9c5f, 0x2626,
-  0x9c60, 0x5405,
-  0x9c67, 0x265c,
-  0x9c68, 0x540c,
-  0x9c6d, 0x262c,
-  0x9c6e, 0x5411,
-  0x9c78, 0x2623,
-  0x9c79, 0x541b,
-  0x9c7a, 0x2631,
-  0x9c7b, 0x541c,
-  0x9c7c, 0x10c8,
-  0x9c7d, 0x541d,
-  0x9c7f, 0x1d89,
-  0x9c80, 0x541f,
-  0x9c81, 0x0a5a,
-  0x9c82, 0x1d8a,
-  0x9c83, 0x5420,
-  0x9c85, 0x1d8b,
-  0x9c89, 0x5422,
-  0x9c8b, 0x1d90,
-  0x9c8c, 0x5424,
-  0x9c8d, 0x0414,
-  0x9c8e, 0x1d91,
-  0x9c8f, 0x5425,
-  0x9c90, 0x1d92,
-  0x9c93, 0x5426,
-  0x9c94, 0x1d95,
-  0x9c96, 0x5427,
-  0x9c9a, 0x1d97,
-  0x9c9c, 0x0f37,
-  0x9c9d, 0x542b,
-  0x9c9e, 0x1d99,
-  0x9ca4, 0x09db,
-  0x9ca5, 0x1d9f,
-  0x9caa, 0x542c,
-  0x9cab, 0x1da4,
-  0x9cac, 0x542d,
-  0x9cad, 0x1da5,
-  0x9caf, 0x542e,
-  0x9cb0, 0x1da7,
-  0x9cb8, 0x08d7,
-  0x9cb9, 0x542f,
-  0x9cba, 0x1daf,
-  0x9cbe, 0x5430,
-  0x9cc3, 0x0cd5,
-  0x9cc4, 0x1db3,
-  0x9cc8, 0x5435,
-  0x9cca, 0x1db7,
-  0x9cd1, 0x5437,
-  0x9cd3, 0x1dbe,
-  0x9cd6, 0x0457,
-  0x9cd7, 0x1dc1,
-  0x9cda, 0x5439,
-  0x9cdc, 0x1dc4,
-  0x9cde, 0x0a24,
-  0x9cdf, 0x1dc6,
-  0x9ce0, 0x543b,
-  0x9ce2, 0x1dc7,
-  0x9ce3, 0x543d,
-  0x9ce5, 0x209c,
-  0x9ce6, 0x543f,
-  0x9ce9, 0x2580,
-  0x9cea, 0x5442,
-  0x9cec, 0x22dc,
-  0x9ced, 0x5444,
-  0x9cf3, 0x1f05,
-  0x9cf4, 0x208b,
-  0x9cf5, 0x544a,
-  0x9cf6, 0x2581,
-  0x9cf7, 0x544b,
-  0x9d00, 0x5454,
-  0x9d06, 0x2583,
-  0x9d07, 0x2582,
-  0x9d08, 0x545a,
-  0x9d09, 0x21ee,
-  0x9d0a, 0x545b,
-  0x9d15, 0x2182,
-  0x9d16, 0x5466,
-  0x9d1b, 0x2243,
-  0x9d1c, 0x546b,
-  0x9d1d, 0x2587,
-  0x9d1e, 0x546c,
-  0x9d1f, 0x2588,
-  0x9d20, 0x546d,
-  0x9d23, 0x2584,
-  0x9d24, 0x5470,
-  0x9d26, 0x21fd,
-  0x9d27, 0x5472,
-  0x9d28, 0x21ef,
-  0x9d29, 0x5473,
-  0x9d2f, 0x258a,
-  0x9d30, 0x258c,
-  0x9d31, 0x5479,
-  0x9d3b, 0x1f47,
-  0x9d3c, 0x5483,
-  0x9d3f, 0x1f1d,
-  0x9d40, 0x5486,
-  0x9d42, 0x258d,
-  0x9d43, 0x5488,
-  0x9d51, 0x1fd0,
-  0x9d52, 0x2592,
-  0x9d53, 0x258f,
-  0x9d54, 0x5496,
-  0x9d5c, 0x2594,
-  0x9d5d, 0x1ee0,
-  0x9d5e, 0x549e,
-  0x9d60, 0x2591,
-  0x9d61, 0x2595,
-  0x9d62, 0x54a0,
-  0x9d6a, 0x2597,
-  0x9d6b, 0x54a8,
-  0x9d6c, 0x20b6,
-  0x9d6d, 0x54a9,
-  0x9d6f, 0x2598,
-  0x9d70, 0x54ab,
-  0x9d72, 0x20f6,
-  0x9d73, 0x54ad,
-  0x9d87, 0x2585,
-  0x9d88, 0x54c1,
-  0x9d89, 0x2599,
-  0x9d8a, 0x54c2,
-  0x9d93, 0x2596,
-  0x9d94, 0x54cb,
-  0x9d98, 0x259a,
-  0x9d99, 0x54cf,
-  0x9d9a, 0x259b,
-  0x9d9b, 0x54d0,
-  0x9da5, 0x259d,
-  0x9da6, 0x54da,
-  0x9da9, 0x259e,
-  0x9daa, 0x54dd,
-  0x9daf, 0x234c,
-  0x9db0, 0x54e2,
-  0x9db4, 0x1f44,
-  0x9db5, 0x54e6,
-  0x9dbb, 0x2660,
-  0x9dbc, 0x25a0,
-  0x9dbd, 0x54ec,
-  0x9dc0, 0x259c,
-  0x9dc1, 0x54ef,
-  0x9dc2, 0x259f,
-  0x9dc3, 0x54f0,
-  0x9dc4, 0x1f6c,
-  0x9dc5, 0x54f1,
-  0x9dd3, 0x25a2,
-  0x9dd4, 0x54ff,
-  0x9dd7, 0x20ae,
-  0x9dd8, 0x5502,
-  0x9dd9, 0x258b,
-  0x9dda, 0x25a3,
-  0x9ddb, 0x5503,
-  0x9de5, 0x2589,
-  0x9de6, 0x25a5,
-  0x9de7, 0x550d,
-  0x9def, 0x25a4,
-  0x9df0, 0x5515,
-  0x9df2, 0x25a6,
-  0x9df3, 0x2593,
-  0x9df4, 0x5517,
-  0x9df8, 0x25a7,
-  0x9df9, 0x2222,
-  0x9dfa, 0x25a9,
-  0x9dfb, 0x551b,
-  0x9e00, 0x5520,
-  0x9e0c, 0x25a8,
-  0x9e0d, 0x552c,
-  0x9e15, 0x2586,
-  0x9e16, 0x5534,
-  0x9e1a, 0x25a1,
-  0x9e1b, 0x25aa,
-  0x9e1c, 0x5538,
-  0x9e1d, 0x2590,
-  0x9e1e, 0x258e,
-  0x9e1f, 0x0b54,
-  0x9e20, 0x1b35,
-  0x9e21, 0x0819,
-  0x9e22, 0x1b36,
-  0x9e23, 0x0afe,
-  0x9e24, 0x5539,
-  0x9e25, 0x0b79,
-  0x9e26, 0x0fe4,
-  0x9e27, 0x553a,
-  0x9e28, 0x1b37,
-  0x9e2d, 0x0fe5,
-  0x9e2e, 0x553b,
-  0x9e2f, 0x1015,
-  0x9e30, 0x553c,
-  0x9e31, 0x1b3d,
-  0x9e32, 0x1b3c,
-  0x9e33, 0x10ea,
-  0x9e34, 0x553d,
-  0x9e35, 0x0e83,
-  0x9e36, 0x1b3e,
-  0x9e37, 0x1b40,
-  0x9e38, 0x1b3f,
-  0x9e39, 0x1b41,
-  0x9e3b, 0x553e,
-  0x9e3d, 0x06e6,
-  0x9e3e, 0x1b43,
-  0x9e3f, 0x079f,
-  0x9e40, 0x5540,
-  0x9e41, 0x1b44,
-  0x9e43, 0x0918,
-  0x9e44, 0x1b46,
-  0x9e45, 0x062b,
-  0x9e46, 0x1b47,
-  0x9e4a, 0x0c90,
-  0x9e4b, 0x1b4b,
-  0x9e4d, 0x5541,
-  0x9e4e, 0x1b4d,
-  0x9e4f, 0x0bb5,
-  0x9e50, 0x5542,
-  0x9e51, 0x1b4e,
-  0x9e52, 0x5543,
-  0x9e55, 0x1b4f,
-  0x9e56, 0x5546,
-  0x9e57, 0x1b50,
-  0x9e58, 0x1dd5,
-  0x9e59, 0x5547,
-  0x9e5a, 0x1b51,
-  0x9e5d, 0x5548,
-  0x9e5e, 0x1b54,
-  0x9e5f, 0x5549,
-  0x9e63, 0x1b55,
-  0x9e64, 0x078e,
-  0x9e65, 0x554d,
-  0x9e66, 0x1b56,
-  0x9e6d, 0x1b5e,
-  0x9e6e, 0x554e,
-  0x9e70, 0x108a,
-  0x9e71, 0x1b5d,
-  0x9e72, 0x5550,
-  0x9e73, 0x1b5f,
-  0x9e74, 0x5551,
-  0x9e75, 0x2688,
-  0x9e76, 0x5552,
-  0x9e79, 0x269e,
-  0x9e7a, 0x25fb,
-  0x9e7b, 0x5555,
-  0x9e7c, 0x1f8c,
-  0x9e7d, 0x21f4,
-  0x9e7e, 0x1d16,
-  0x9e7f, 0x0a60,
-  0x9e80, 0x5556,
-  0x9e82, 0x1dfc,
-  0x9e83, 0x5558,
-  0x9e87, 0x1dfd,
-  0x9e89, 0x555c,
-  0x9e8b, 0x1dff,
-  0x9e8c, 0x555e,
-  0x9e92, 0x1e00,
-  0x9e93, 0x0a5b,
-  0x9e94, 0x5564,
-  0x9e97, 0x200f,
-  0x9e98, 0x5567,
-  0x9e9d, 0x1e02,
-  0x9e9e, 0x556c,
-  0x9e9f, 0x1e03,
-  0x9ea0, 0x556d,
-  0x9ea5, 0x2071,
-  0x9ea6, 0x0a9a,
-  0x9ea7, 0x5572,
-  0x9ea9, 0x25f7,
-  0x9eaa, 0x5574,
-  0x9eaf, 0x2696,
-  0x9eb0, 0x5579,
-  0x9eb4, 0x1cee,
-  0x9eb5, 0x268f,
-  0x9eb6, 0x557d,
-  0x9eb8, 0x1ced,
-  0x9eb9, 0x557f,
-  0x9ebb, 0x0a90,
-  0x9ebc, 0x5581,
-  0x9ebd, 0x1df9,
-  0x9ebf, 0x5582,
-  0x9ec4, 0x07db,
-  0x9ec5, 0x5587,
-  0x9ec9, 0x12f8,
-  0x9eca, 0x558b,
-  0x9ecc, 0x22da,
-  0x9ecd, 0x0d89,
-  0x9ece, 0x09d3,
-  0x9ecf, 0x1b2a,
-  0x9ed0, 0x558d,
-  0x9ed1, 0x0791,
-  0x9ed2, 0x558e,
-  0x9ed4, 0x0c2a,
-  0x9ed5, 0x5590,
-  0x9ed8, 0x0b0f,
-  0x9ed9, 0x5593,
-  0x9edb, 0x1e04,
-  0x9ede, 0x1ec1,
-  0x9edf, 0x1e08,
-  0x9ee0, 0x1e07,
-  0x9ee1, 0x5595,
-  0x9ee2, 0x1e09,
-  0x9ee3, 0x5596,
-  0x9ee5, 0x1e0c,
-  0x9ee6, 0x5598,
-  0x9ee7, 0x1e0b,
-  0x9ee8, 0x1eb3,
-  0x9ee9, 0x1e0a,
-  0x9eea, 0x1e0d,
-  0x9eeb, 0x5599,
-  0x9eef, 0x1e0e,
-  0x9ef0, 0x559d,
-  0x9ef2, 0x266a,
-  0x9ef3, 0x559f,
-  0x9ef4, 0x268a,
-  0x9ef5, 0x55a0,
-  0x9ef7, 0x2669,
-  0x9ef8, 0x55a2,
-  0x9ef9, 0x1a55,
-  0x9efa, 0x55a3,
-  0x9efb, 0x1a56,
-  0x9efd, 0x2618,
-  0x9efe, 0x1d76,
-  0x9eff, 0x2619,
-  0x9f00, 0x55a4,
-  0x9f09, 0x261a,
-  0x9f0a, 0x55ad,
-  0x9f0b, 0x1d77,
-  0x9f0c, 0x55ae,
-  0x9f0d, 0x1d78,
-  0x9f0e, 0x05e5,
-  0x9f0f, 0x55af,
-  0x9f10, 0x1274,
-  0x9f11, 0x55b0,
-  0x9f13, 0x071d,
-  0x9f14, 0x55b2,
-  0x9f15, 0x2673,
-  0x9f16, 0x55b3,
-  0x9f17, 0x1271,
-  0x9f18, 0x55b4,
-  0x9f19, 0x13df,
-  0x9f1a, 0x55b5,
-  0x9f20, 0x0d8a,
-  0x9f21, 0x55bb,
-  0x9f22, 0x1e0f,
-  0x9f23, 0x55bc,
-  0x9f2c, 0x1e10,
-  0x9f2d, 0x55c5,
-  0x9f2f, 0x1e11,
-  0x9f30, 0x55c7,
-  0x9f37, 0x1e13,
-  0x9f38, 0x55ce,
-  0x9f39, 0x1e12,
-  0x9f3a, 0x55cf,
-  0x9f3b, 0x0430,
-  0x9f3c, 0x55d0,
-  0x9f3d, 0x1e14,
-  0x9f3f, 0x55d1,
-  0x9f44, 0x1e16,
-  0x9f45, 0x55d6,
-  0x9f4a, 0x20c6,
-  0x9f4b, 0x226b,
-  0x9f4c, 0x55db,
-  0x9f4f, 0x24d3,
-  0x9f50, 0x0c0a,
-  0x9f51, 0x19c2,
-  0x9f52, 0x1e86,
-  0x9f53, 0x55de,
-  0x9f54, 0x260f,
-  0x9f55, 0x55df,
-  0x9f59, 0x2611,
-  0x9f5a, 0x55e3,
-  0x9f5c, 0x2613,
-  0x9f5d, 0x55e5,
-  0x9f5f, 0x2610,
-  0x9f60, 0x2612,
-  0x9f61, 0x2030,
-  0x9f62, 0x55e7,
-  0x9f63, 0x2671,
-  0x9f64, 0x55e8,
-  0x9f66, 0x2614,
-  0x9f67, 0x55ea,
-  0x9f6a, 0x2616,
-  0x9f6b, 0x55ed,
-  0x9f6c, 0x2615,
-  0x9f6d, 0x55ee,
-  0x9f72, 0x20f2,
-  0x9f73, 0x55f3,
-  0x9f77, 0x2617,
-  0x9f78, 0x55f7,
-  0x9f7f, 0x0502,
-  0x9f80, 0x1d6d,
-  0x9f81, 0x55fe,
-  0x9f83, 0x1d6e,
-  0x9f84, 0x0a2d,
-  0x9f85, 0x1d6f,
-  0x9f8b, 0x0c7e,
-  0x9f8c, 0x1d75,
-  0x9f8d, 0x2037,
-  0x9f8e, 0x5600,
-  0x9f90, 0x20b3,
-  0x9f91, 0x5602,
-  0x9f94, 0x1f22,
-  0x9f95, 0x24ed,
-  0x9f96, 0x5605,
-  0x9f99, 0x0a43,
-  0x9f9a, 0x0701,
-  0x9f9b, 0x1a54,
-  0x9f9c, 0x1f34,
-  0x9f9d, 0x5608,
-  0x9f9f, 0x0743,
-  0x9fa0, 0x12f3,
-  0x9fa1, 0x560a,
-  0xe7e7, 0x274b,
-  0xe815, 0x561f,
-  0xf92c, 0x560f,
-  0xfa0d, 0x5610,
-  0xfa11, 0x5613,
-  0xfa13, 0x5614,
-  0xfa18, 0x5616,
-  0xfa1f, 0x5617,
-  0xfa23, 0x561a,
-  0xfa27, 0x561c,
-  0xfe30, 0x271d,
-  0xfe49, 0x272b,
-  0xfe54, 0x2735,
-  0xfe59, 0x2739,
-  0xfe68, 0x2747,
-  0xff01, 0x0106,
-  0xff04, 0x00a6,
-  0xff05, 0x010a,
-  0xff5e, 0x006a,
-  0xffe0, 0x00a8,
-  0xffe2, 0x271e,
-  0xffe3, 0x0163,
-  0xffe4, 0x271f,
-  0xffe5, 0x0109,
-  0x2014, 0x0256,
-  0x2026, 0x0257,
-  0x2225, 0x1e1c,
-  0x3001, 0x023f,
-  0x3002, 0x023e,
-  0x3008, 0x0248,
-  0x3010, 0x0252,
-  0x3013, 0x1e1a,
-  0x3014, 0x0246,
-  0x3016, 0x0250,
-  0xff01, 0x0242,
-  0xff08, 0x0244,
-  0xff0c, 0x023d,
-  0xff0e, 0x1e1b,
-  0xff1a, 0x0240,
-  0xff1d, 0x1e1c,
-  0xff1f, 0x0243,
-  0xff3b, 0x1e1d,
-  0xff3d, 0x1e1e,
-  0xff3f, 0x0258,
-  0xff5b, 0x0254,
-  0xff5d, 0x0255,
-  0xff5e, 0x1e18,
-  0xffe3, 0x1e1f,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12UniGBUCS2VEnc16 = {
-  1,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12UniGBUCS2VMap2, 13485
-};
-
-static Gushort gb12AdobeGB12VMap2[178] = {
-  0x0000, 0x0000,
-  0x0000, 0x0000,
-  0x0100, 0x0100,
-  0x0200, 0x0200,
-  0x0300, 0x0300,
-  0x0400, 0x0400,
-  0x0500, 0x0500,
-  0x0600, 0x0600,
-  0x0700, 0x0700,
-  0x0800, 0x0800,
-  0x0900, 0x0900,
-  0x0a00, 0x0a00,
-  0x0b00, 0x0b00,
-  0x0c00, 0x0c00,
-  0x0d00, 0x0d00,
-  0x0e00, 0x0e00,
-  0x0f00, 0x0f00,
-  0x1000, 0x1000,
-  0x1100, 0x1100,
-  0x1200, 0x1200,
-  0x1300, 0x1300,
-  0x1400, 0x1400,
-  0x1500, 0x1500,
-  0x1600, 0x1600,
-  0x1700, 0x1700,
-  0x1800, 0x1800,
-  0x1900, 0x1900,
-  0x1a00, 0x1a00,
-  0x1b00, 0x1b00,
-  0x1c00, 0x1c00,
-  0x1d00, 0x1d00,
-  0x1e00, 0x1e00,
-  0x1f00, 0x1f00,
-  0x2000, 0x2000,
-  0x2100, 0x2100,
-  0x2200, 0x2200,
-  0x2300, 0x2300,
-  0x2400, 0x2400,
-  0x2500, 0x2500,
-  0x2600, 0x2600,
-  0x2700, 0x2700,
-  0x2800, 0x2800,
-  0x2900, 0x2900,
-  0x2a00, 0x2a00,
-  0x2b00, 0x2b00,
-  0x2c00, 0x2c00,
-  0x2d00, 0x2d00,
-  0x2e00, 0x2e00,
-  0x2f00, 0x2f00,
-  0x3000, 0x3000,
-  0x3100, 0x3100,
-  0x3200, 0x3200,
-  0x3300, 0x3300,
-  0x3400, 0x3400,
-  0x3500, 0x3500,
-  0x3600, 0x3600,
-  0x3700, 0x3700,
-  0x3800, 0x3800,
-  0x3900, 0x3900,
-  0x3a00, 0x3a00,
-  0x3b00, 0x3b00,
-  0x3c00, 0x3c00,
-  0x3d00, 0x3d00,
-  0x3e00, 0x3e00,
-  0x3f00, 0x3f00,
-  0x4000, 0x4000,
-  0x4100, 0x4100,
-  0x4200, 0x4200,
-  0x4300, 0x4300,
-  0x4400, 0x4400,
-  0x4500, 0x4500,
-  0x4600, 0x4600,
-  0x4700, 0x4700,
-  0x4800, 0x4800,
-  0x4900, 0x4900,
-  0x4a00, 0x4a00,
-  0x4b00, 0x4b00,
-  0x4c00, 0x4c00,
-  0x4d00, 0x4d00,
-  0x4e00, 0x4e00,
-  0x4f00, 0x4f00,
-  0x5000, 0x5000,
-  0x5100, 0x5100,
-  0x5200, 0x5200,
-  0x5300, 0x5300,
-  0x5400, 0x5400,
-  0x5500, 0x5500,
-  0x5600, 0x5600,
-  0xffff, 0x0000
-};
-
-static GfxFontEncoding16 gb12AdobeGB12VEnc16 = {
-  1,
-  { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
-  gb12AdobeGB12VMap2, 89
-};
-
-static struct {
-  char *name;
-  GfxFontEncoding16 *enc;
-} gfxGB12Tab[] = {
-  { "Adobe-GB1-0",                      &gb12AdobeGB10Enc16 },
-  { "Adobe-GB1-1",                      &gb12AdobeGB11Enc16 },
-  { "Adobe-GB1-2",                      &gb12AdobeGB12Enc16 },
-  { "GB-EUC-H",                         &gb12GBEUCHEnc16 },
-  { "GB-EUC-V",                         &gb12GBEUCVEnc16 },
-  { "GB-H",                             &gb12GBHEnc16 },
-  { "GB-V",                             &gb12GBVEnc16 },
-  { "GBK-EUC-H",                        &gb12GBKEUCHEnc16 },
-  { "GBK-EUC-V",                        &gb12GBKEUCVEnc16 },
-  { "GBT-EUC-H",                        &gb12GBTEUCHEnc16 },
-  { "GBT-EUC-V",                        &gb12GBTEUCVEnc16 },
-  { "GBT-H",                            &gb12GBTHEnc16 },
-  { "GBT-V",                            &gb12GBTVEnc16 },
-  { "GBTpc-EUC-H",                      &gb12GBTpcEUCHEnc16 },
-  { "GBTpc-EUC-V",                      &gb12GBTpcEUCVEnc16 },
-  { "GBpc-EUC-H",                       &gb12GBpcEUCHEnc16 },
-  { "GBpc-EUC-V",                       &gb12GBpcEUCVEnc16 },
-  { "UniGB-UCS2-H",                     &gb12UniGBUCS2HEnc16 },
-  { "UniGB-UCS2-V",                     &gb12UniGBUCS2VEnc16 },
-  { "Identity-H",                       &gb12AdobeGB12Enc16 },
-  { "Identity-V",                       &gb12AdobeGB12VEnc16 },
-  { NULL,                               NULL }
-};
-
-#endif
index 0096d4b3ee2ec5d951190e76f2e4ee9c15f7c901..0b00f9116d26d764a783057ade84fbb401c24e0c 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Gfx.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stddef.h>
 #include <string.h>
 #include <math.h>
 #include "gmem.h"
+#include "CharTypes.h"
 #include "Object.h"
 #include "Array.h"
 #include "Dict.h"
 #include "GfxFont.h"
 #include "GfxState.h"
 #include "OutputDev.h"
-#include "Params.h"
+#include "Page.h"
 #include "Error.h"
 #include "Gfx.h"
 
+// the MSVC math.h doesn't define this
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+//------------------------------------------------------------------------
+// constants
+//------------------------------------------------------------------------
+
+// Max number of splits along the t axis for an axial shading fill.
+#define axialMaxSplits 256
+
+// Max delta allowed in any color component for an axial shading fill.
+#define axialColorDelta (1 / 256.0)
+
+// Max number of splits along the t axis for a radial shading fill.
+#define radialMaxSplits 256
+
+// Max delta allowed in any color component for a radial shading fill.
+#define radialColorDelta (1 / 256.0)
+
 //------------------------------------------------------------------------
 // Operator table
 //------------------------------------------------------------------------
@@ -189,15 +212,11 @@ Operator Gfx::opTab[] = {
 
 #define numOps (sizeof(opTab) / sizeof(Operator))
 
-//------------------------------------------------------------------------
-
-GBool printCommands = gFalse;
-
 //------------------------------------------------------------------------
 // GfxResources
 //------------------------------------------------------------------------
 
-GfxResources::GfxResources(Dict *resDict, GfxResources *next) {
+GfxResources::GfxResources(XRef *xref, Dict *resDict, GfxResources *nextA) {
   Object obj1;
 
   if (resDict) {
@@ -206,7 +225,7 @@ GfxResources::GfxResources(Dict *resDict, GfxResources *next) {
     fonts = NULL;
     resDict->lookup("Font", &obj1);
     if (obj1.isDict()) {
-      fonts = new GfxFontDict(obj1.getDict());
+      fonts = new GfxFontDict(xref, obj1.getDict());
     }
     obj1.free();
 
@@ -219,6 +238,9 @@ GfxResources::GfxResources(Dict *resDict, GfxResources *next) {
     // get pattern dictionary
     resDict->lookup("Pattern", &patternDict);
 
+    // get shading dictionary
+    resDict->lookup("Shading", &shadingDict);
+
     // get graphics state parameter dictionary
     resDict->lookup("ExtGState", &gStateDict);
 
@@ -230,7 +252,7 @@ GfxResources::GfxResources(Dict *resDict, GfxResources *next) {
     gStateDict.initNull();
   }
 
-  this->next = next;
+  next = nextA;
 }
 
 GfxResources::~GfxResources() {
@@ -240,6 +262,7 @@ GfxResources::~GfxResources() {
   xObjDict.free();
   colorSpaceDict.free();
   patternDict.free();
+  shadingDict.free();
   gStateDict.free();
 }
 
@@ -318,6 +341,25 @@ GfxPattern *GfxResources::lookupPattern(char *name) {
   return NULL;
 }
 
+GfxShading *GfxResources::lookupShading(char *name) {
+  GfxResources *resPtr;
+  GfxShading *shading;
+  Object obj;
+
+  for (resPtr = this; resPtr; resPtr = resPtr->next) {
+    if (resPtr->shadingDict.isDict()) {
+      if (!resPtr->shadingDict.dictLookup(name, &obj)->isNull()) {
+       shading = GfxShading::parse(&obj);
+       obj.free();
+       return shading;
+      }
+      obj.free();
+    }
+  }
+  error(-1, "Unknown shading '%s'", name);
+  return NULL;
+}
+
 GBool GfxResources::lookupGState(char *name, Object *obj) {
   GfxResources *resPtr;
 
@@ -337,18 +379,21 @@ GBool GfxResources::lookupGState(char *name, Object *obj) {
 // Gfx
 //------------------------------------------------------------------------
 
-Gfx::Gfx(OutputDev *out1, int pageNum, Dict *resDict,
-        double dpi, double x1, double y1, double x2, double y2, GBool crop,
-        double cropX1, double cropY1, double cropX2, double cropY2,
-        int rotate) {
+Gfx::Gfx(XRef *xrefA, OutputDev *outA, int pageNum, Dict *resDict, double dpi,
+        PDFRectangle *box, GBool crop, PDFRectangle *cropBox, int rotate,
+        GBool printCommandsA) {
   int i;
 
+  xref = xrefA;
+  subPage = gFalse;
+  printCommands = printCommandsA;
+
   // start the resource stack
-  res = new GfxResources(resDict, NULL);
+  res = new GfxResources(xref, resDict, NULL);
 
   // initialize
-  out = out1;
-  state = new GfxState(dpi, x1, y1, x2, y2, rotate, out->upsideDown());
+  out = outA;
+  state = new GfxState(dpi, box, rotate, out->upsideDown());
   fontChanged = gFalse;
   clip = clipNone;
   ignoreUndef = 0;
@@ -361,31 +406,65 @@ Gfx::Gfx(OutputDev *out1, int pageNum, Dict *resDict,
 
   // set crop box
   if (crop) {
-    state->moveTo(cropX1, cropY1);
-    state->lineTo(cropX2, cropY1);
-    state->lineTo(cropX2, cropY2);
-    state->lineTo(cropX1, cropY2);
+    state->moveTo(cropBox->x1, cropBox->y1);
+    state->lineTo(cropBox->x2, cropBox->y1);
+    state->lineTo(cropBox->x2, cropBox->y2);
+    state->lineTo(cropBox->x1, cropBox->y2);
     state->closePath();
+    state->clip();
     out->clip(state);
     state->clearPath();
   }
 }
 
-Gfx::~Gfx() {
-  GfxResources *resPtr;
+Gfx::Gfx(XRef *xrefA, OutputDev *outA, Dict *resDict,
+        PDFRectangle *box, GBool crop, PDFRectangle *cropBox) {
+  int i;
+
+  xref = xrefA;
+  subPage = gTrue;
+  printCommands = gFalse;
+
+  // start the resource stack
+  res = new GfxResources(xref, resDict, NULL);
 
+  // initialize
+  out = outA;
+  state = new GfxState(72, box, 0, gFalse);
+  fontChanged = gFalse;
+  clip = clipNone;
+  ignoreUndef = 0;
+  for (i = 0; i < 6; ++i) {
+    baseMatrix[i] = state->getCTM()[i];
+  }
+
+  // set crop box
+  if (crop) {
+    state->moveTo(cropBox->x1, cropBox->y1);
+    state->lineTo(cropBox->x2, cropBox->y1);
+    state->lineTo(cropBox->x2, cropBox->y2);
+    state->lineTo(cropBox->x1, cropBox->y2);
+    state->closePath();
+    state->clip();
+    out->clip(state);
+    state->clearPath();
+  }
+}
+
+Gfx::~Gfx() {
   while (state->hasSaves()) {
     state = state->restore();
     out->restoreState(state);
   }
-  out->endPage();
+  if (!subPage) {
+    out->endPage();
+  }
   while (res) {
-    resPtr = res->getNext();
-    delete res;
-    res = resPtr;
+    popResources();
   }
-  if (state)
+  if (state) {
     delete state;
+  }
 }
 
 void Gfx::display(Object *obj, GBool topLevel) {
@@ -406,7 +485,7 @@ void Gfx::display(Object *obj, GBool topLevel) {
     error(-1, "Weird page contents");
     return;
   }
-  parser = new Parser(new Lexer(obj));
+  parser = new Parser(xref, new Lexer(xref, obj));
   go(topLevel);
   delete parser;
   parser = NULL;
@@ -415,11 +494,11 @@ void Gfx::display(Object *obj, GBool topLevel) {
 void Gfx::go(GBool topLevel) {
   Object obj;
   Object args[maxArgs];
-  int numCmds, numArgs;
+  int numArgs;
   int i;
 
   // scan a sequence of objects
-  numCmds = 0;
+  updateLevel = 0;
   numArgs = 0;
   parser->getObj(&obj);
   while (!obj.isEOF()) {
@@ -433,6 +512,7 @@ void Gfx::go(GBool topLevel) {
          args[i].print(stdout);
        }
        printf("\n");
+       fflush(stdout);
       }
       execOp(&obj, args, numArgs);
       obj.free();
@@ -441,9 +521,9 @@ void Gfx::go(GBool topLevel) {
       numArgs = 0;
 
       // periodically update display
-      if (++numCmds == 200) {
+      if (++updateLevel >= 20000) {
        out->dump();
-       numCmds = 0;
+       updateLevel = 0;
       }
 
     // got an argument - save it
@@ -457,6 +537,7 @@ void Gfx::go(GBool topLevel) {
        printf("throwing away arg: ");
        obj.print(stdout);
        printf("\n");
+       fflush(stdout);
       }
       obj.free();
     }
@@ -476,20 +557,16 @@ void Gfx::go(GBool topLevel) {
        args[i].print(stdout);
       }
       printf("\n");
+      fflush(stdout);
     }
     for (i = 0; i < numArgs; ++i)
       args[i].free();
   }
 
   // update display
-  if (topLevel && numCmds > 0) {
+  if (topLevel && updateLevel > 0) {
     out->dump();
   }
-
-  // clean up
-  if (printCommands) {
-    fflush(stdout);
-  }
 }
 
 void Gfx::execOp(Object *cmd, Object args[], int numArgs) {
@@ -583,12 +660,6 @@ void Gfx::opSave(Object args[], int numArgs) {
 void Gfx::opRestore(Object args[], int numArgs) {
   state = state->restore();
   out->restoreState(state);
-
-  // Some PDF producers (Macromedia FreeHand) generate a save (q) and
-  // restore (Q) inside a path sequence.  The PDF spec seems to imply
-  // that this is illegal.  Calling clearPath() here implements the
-  // behavior apparently expected by this software.
-  state->clearPath();
 }
 
 void Gfx::opConcat(Object args[], int numArgs) {
@@ -768,7 +839,7 @@ void Gfx::opSetFillColorSpace(Object args[], int numArgs) {
   if (colorSpace) {
     state->setFillColorSpace(colorSpace);
   } else {
-    error(getPos(), "Bad color space");
+    error(getPos(), "Bad color space (fill)");
   }
   for (i = 0; i < gfxColorMaxComps; ++i) {
     color.c[i] = 0;
@@ -794,7 +865,7 @@ void Gfx::opSetStrokeColorSpace(Object args[], int numArgs) {
   if (colorSpace) {
     state->setStrokeColorSpace(colorSpace);
   } else {
-    error(getPos(), "Bad color space");
+    error(getPos(), "Bad color space (stroke)");
   }
   for (i = 0; i < gfxColorMaxComps; ++i) {
     color.c[i] = 0;
@@ -970,7 +1041,7 @@ void Gfx::opRectangle(Object args[], int numArgs) {
 }
 
 void Gfx::opClosePath(Object args[], int numArgs) {
-  if (!state->isPath()) {
+  if (!state->isCurPt()) {
     error(getPos(), "No current point in closepath");
     return;
   }
@@ -1103,23 +1174,26 @@ void Gfx::opCloseEOFillStroke(Object args[], int numArgs) {
   doEndPath();
 }
 
-void Gfx::opShFill(Object args[], int numArgs) {
-}
-
 void Gfx::doPatternFill(GBool eoFill) {
   GfxPatternColorSpace *patCS;
   GfxPattern *pattern;
   GfxTilingPattern *tPat;
   GfxColorSpace *cs;
-  GfxPath *path;
-  GfxSubpath *subpath;
   double xMin, yMin, xMax, yMax, x, y, x1, y1;
+  double cxMin, cyMin, cxMax, cyMax;
   int xi0, yi0, xi1, yi1, xi, yi;
   double *ctm, *btm, *ptm;
-  double m[6], ictm[6], m1[6], im[6];
+  double m[6], ictm[6], m1[6], imb[6];
   double det;
   double xstep, ystep;
-  int i, j;
+  int i;
+
+  // this is a bit of a kludge -- patterns can be really slow, so we
+  // skip them if we're only doing text extraction, since they almost
+  // certainly don't contain any text
+  if (!out->needNonText()) {
+    return;
+  }
 
   // get color space
   patCS = (GfxPatternColorSpace *)state->getFillColorSpace();
@@ -1160,42 +1234,14 @@ void Gfx::doPatternFill(GBool eoFill) {
   m[4] = m1[4] * ictm[0] + m1[5] * ictm[2] + ictm[4];
   m[5] = m1[4] * ictm[1] + m1[5] * ictm[3] + ictm[5];
 
-  // construct a (current space) -> (pattern space) transform matrix
-  det = 1 / (m[0] * m[3] - m[1] * m[2]);
-  im[0] = m[3] * det;
-  im[1] = -m[1] * det;
-  im[2] = -m[2] * det;
-  im[3] = m[0] * det;
-  im[4] = (m[2] * m[5] - m[3] * m[4]) * det;
-  im[5] = (m[1] * m[4] - m[0] * m[5]) * det;
-
-  // compute bounding box of current path, in pattern space
-  xMin = xMax = yMin = yMax = 0; // make gcc happy
-  path = state->getPath();
-  for (i = 0; i < path->getNumSubpaths(); ++i) {
-    subpath = path->getSubpath(i);
-    for (j = 0; j < subpath->getNumPoints(); ++j) {
-      x = subpath->getX(j);
-      y = subpath->getY(j);
-      x1 = x * im[0] + y * im[2] + im[4];
-      y1 = x * im[1] + y * im[3] + im[5];
-      if (i == 0 && j == 0) {
-       xMin = xMax = x1;
-       yMin = yMax = y1;
-      } else {
-       if (x1 < xMin) {
-         xMin = x1;
-       } else if (x1 > xMax) {
-         xMax = x1;
-       }
-       if (y1 < yMin) {
-         yMin = y1;
-       } else if (y1 > yMax) {
-         yMax = y1;
-       }
-      }
-    }
-  }
+  // construct a (base space) -> (pattern space) transform matrix
+  det = 1 / (m1[0] * m1[3] - m1[1] * m1[2]);
+  imb[0] = m1[3] * det;
+  imb[1] = -m1[1] * det;
+  imb[2] = -m1[2] * det;
+  imb[3] = m1[0] * det;
+  imb[4] = (m1[2] * m1[5] - m1[3] * m1[4]) * det;
+  imb[5] = (m1[1] * m1[4] - m1[0] * m1[5]) * det;
 
   // save current graphics state
   out->saveState(state);
@@ -1211,6 +1257,7 @@ void Gfx::doPatternFill(GBool eoFill) {
   out->updateFillColor(state);
 
   // clip to current path
+  state->clip();
   if (eoFill) {
     out->eoClip(state);
   } else {
@@ -1218,6 +1265,47 @@ void Gfx::doPatternFill(GBool eoFill) {
   }
   state->clearPath();
 
+  // transform clip region bbox to pattern space
+  state->getClipBBox(&cxMin, &cyMin, &cxMax, &cyMax);
+  xMin = xMax = cxMin * imb[0] + cyMin * imb[2] + imb[4];
+  yMin = yMax = cxMin * imb[1] + cyMin * imb[3] + imb[5];
+  x1 = cxMin * imb[0] + cyMax * imb[2] + imb[4];
+  y1 = cxMin * imb[1] + cyMax * imb[3] + imb[5];
+  if (x1 < xMin) {
+    xMin = x1;
+  } else if (x1 > xMax) {
+    xMax = x1;
+  }
+  if (y1 < yMin) {
+    yMin = y1;
+  } else if (y1 > yMax) {
+    yMax = y1;
+  }
+  x1 = cxMax * imb[0] + cyMin * imb[2] + imb[4];
+  y1 = cxMax * imb[1] + cyMin * imb[3] + imb[5];
+  if (x1 < xMin) {
+    xMin = x1;
+  } else if (x1 > xMax) {
+    xMax = x1;
+  }
+  if (y1 < yMin) {
+    yMin = y1;
+  } else if (y1 > yMax) {
+    yMax = y1;
+  }
+  x1 = cxMax * imb[0] + cyMax * imb[2] + imb[4];
+  y1 = cxMax * imb[1] + cyMax * imb[3] + imb[5];
+  if (x1 < xMin) {
+    xMin = x1;
+  } else if (x1 > xMax) {
+    xMax = x1;
+  }
+  if (y1 < yMin) {
+    yMin = y1;
+  } else if (y1 > yMax) {
+    yMax = y1;
+  }
+
   // draw the pattern
   //~ this should treat negative steps differently -- start at right/top
   //~ edge instead of left/bottom (?)
@@ -1246,12 +1334,485 @@ void Gfx::doPatternFill(GBool eoFill) {
   out->restoreState(state);
 }
 
+void Gfx::opShFill(Object args[], int numArgs) {
+  GfxShading *shading;
+  double xMin, yMin, xMax, yMax;
+
+  if (!(shading = res->lookupShading(args[0].getName()))) {
+    return;
+  }
+
+  // save current graphics state
+  out->saveState(state);
+  state = state->save();
+
+  // clip to bbox
+  if (shading->getHasBBox()) {
+    shading->getBBox(&xMin, &yMin, &xMax, &yMax);
+    state->moveTo(xMin, yMin);
+    state->lineTo(xMax, yMin);
+    state->lineTo(xMax, yMax);
+    state->lineTo(xMin, yMax);
+    state->closePath();
+    state->clip();
+    out->clip(state);
+    state->clearPath();
+  }
+
+  // set the color space
+  state->setFillColorSpace(shading->getColorSpace()->copy());
+
+  // do shading type-specific operations
+  switch (shading->getType()) {
+  case 2:
+    doAxialShFill((GfxAxialShading *)shading);
+    break;
+  case 3:
+    doRadialShFill((GfxRadialShading *)shading);
+    break;
+  }
+
+  // restore graphics state
+  state = state->restore();
+  out->restoreState(state);
+
+  delete shading;
+}
+
+void Gfx::doAxialShFill(GfxAxialShading *shading) {
+  double xMin, yMin, xMax, yMax;
+  double x0, y0, x1, y1;
+  double dx, dy, mul;
+  double tMin, tMax, t, tx, ty;
+  double s[4], sMin, sMax, tmp;
+  double ux0, uy0, ux1, uy1, vx0, vy0, vx1, vy1;
+  double t0, t1, tt;
+  double ta[axialMaxSplits + 1];
+  int next[axialMaxSplits + 1];
+  GfxColor color0, color1;
+  int nComps;
+  int i, j, k, kk;
+
+  // get the clip region bbox
+  state->getUserClipBBox(&xMin, &yMin, &xMax, &yMax);
+
+  // compute min and max t values, based on the four corners of the
+  // clip region bbox
+  shading->getCoords(&x0, &y0, &x1, &y1);
+  dx = x1 - x0;
+  dy = y1 - y0;
+  mul = 1 / (dx * dx + dy * dy);
+  tMin = tMax = ((xMin - x0) * dx + (yMin - y0) * dy) * mul;
+  t = ((xMin - x0) * dx + (yMax - y0) * dy) * mul;
+  if (t < tMin) {
+    tMin = t;
+  } else if (t > tMax) {
+    tMax = t;
+  }
+  t = ((xMax - x0) * dx + (yMin - y0) * dy) * mul;
+  if (t < tMin) {
+    tMin = t;
+  } else if (t > tMax) {
+    tMax = t;
+  }
+  t = ((xMax - x0) * dx + (yMax - y0) * dy) * mul;
+  if (t < tMin) {
+    tMin = t;
+  } else if (t > tMax) {
+    tMax = t;
+  }
+  if (tMin < 0 && !shading->getExtend0()) {
+    tMin = 0;
+  }
+  if (tMax > 1 && !shading->getExtend1()) {
+    tMax = 1;
+  }
+
+  // get the function domain
+  t0 = shading->getDomain0();
+  t1 = shading->getDomain1();
+
+  // Traverse the t axis and do the shading.
+  //
+  // For each point (tx, ty) on the t axis, consider a line through
+  // that point perpendicular to the t axis:
+  //
+  //     x(s) = tx + s * -dy   -->   s = (x - tx) / -dy
+  //     y(s) = ty + s * dx    -->   s = (y - ty) / dx
+  //
+  // Then look at the intersection of this line with the bounding box
+  // (xMin, yMin, xMax, yMax).  In the general case, there are four
+  // intersection points:
+  //
+  //     s0 = (xMin - tx) / -dy
+  //     s1 = (xMax - tx) / -dy
+  //     s2 = (yMin - ty) / dx
+  //     s3 = (yMax - ty) / dx
+  //
+  // and we want the middle two s values.
+  //
+  // In the case where dx = 0, take s0 and s1; in the case where dy =
+  // 0, take s2 and s3.
+  //
+  // Each filled polygon is bounded by two of these line segments
+  // perpdendicular to the t axis.
+  //
+  // The t axis is bisected into smaller regions until the color
+  // difference across a region is small enough, and then the region
+  // is painted with a single color.
+
+  // set up
+  nComps = shading->getColorSpace()->getNComps();
+  ta[0] = tMin;
+  ta[axialMaxSplits] = tMax;
+  next[0] = axialMaxSplits;
+
+  // compute the color at t = tMin
+  if (tMin < 0) {
+    tt = t0;
+  } else if (tMin > 1) {
+    tt = t1;
+  } else {
+    tt = t0 + (t1 - t0) * tMin;
+  }
+  shading->getColor(tt, &color0);
+
+  // compute the coordinates of the point on the t axis at t = tMin;
+  // then compute the intersection of the perpendicular line with the
+  // bounding box
+  tx = x0 + tMin * dx;
+  ty = y0 + tMin * dy;
+  if (dx == 0 && dy == 0) {
+    sMin = sMax = 0;
+  } if (dx == 0) {
+    sMin = (xMin - tx) / -dy;
+    sMax = (xMax - tx) / -dy;
+    if (sMin > sMax) { tmp = sMin; sMin = sMax; sMax = tmp; }
+  } else if (dy == 0) {
+    sMin = (yMin - ty) / dx;
+    sMax = (yMax - ty) / dx;
+    if (sMin > sMax) { tmp = sMin; sMin = sMax; sMax = tmp; }
+  } else {
+    s[0] = (yMin - ty) / dx;
+    s[1] = (yMax - ty) / dx;
+    s[2] = (xMin - tx) / -dy;
+    s[3] = (xMax - tx) / -dy;
+    for (j = 0; j < 3; ++j) {
+      kk = j;
+      for (k = j + 1; k < 4; ++k) {
+       if (s[k] < s[kk]) {
+         kk = k;
+       }
+      }
+      tmp = s[j]; s[j] = s[kk]; s[kk] = tmp;
+    }
+    sMin = s[1];
+    sMax = s[2];
+  }
+  ux0 = tx - sMin * dy;
+  uy0 = ty + sMin * dx;
+  vx0 = tx - sMax * dy;
+  vy0 = ty + sMax * dx;
+
+  i = 0;
+  while (i < axialMaxSplits) {
+
+    // bisect until color difference is small enough or we hit the
+    // bisection limit
+    j = next[i];
+    while (j > i + 1) {
+      if (ta[j] < 0) {
+       tt = t0;
+      } else if (ta[j] > 1) {
+       tt = t1;
+      } else {
+       tt = t0 + (t1 - t0) * ta[j];
+      }
+      shading->getColor(tt, &color1);
+      for (k = 0; k < nComps; ++k) {
+       if (fabs(color1.c[k] - color0.c[k]) > axialColorDelta) {
+         break;
+       }
+      }
+      if (k == nComps) {
+       break;
+      }
+      k = (i + j) / 2;
+      ta[k] = 0.5 * (ta[i] + ta[j]);
+      next[i] = k;
+      next[k] = j;
+      j = k;
+    }
+
+    // use the average of the colors of the two sides of the region
+    for (k = 0; k < nComps; ++k) {
+      color0.c[k] = 0.5 * (color0.c[k] + color1.c[k]);
+    }
+
+    // compute the coordinates of the point on the t axis; then
+    // compute the intersection of the perpendicular line with the
+    // bounding box
+    tx = x0 + ta[j] * dx;
+    ty = y0 + ta[j] * dy;
+    if (dx == 0 && dy == 0) {
+      sMin = sMax = 0;
+    } if (dx == 0) {
+      sMin = (xMin - tx) / -dy;
+      sMax = (xMax - tx) / -dy;
+      if (sMin > sMax) { tmp = sMin; sMin = sMax; sMax = tmp; }
+    } else if (dy == 0) {
+      sMin = (yMin - ty) / dx;
+      sMax = (yMax - ty) / dx;
+      if (sMin > sMax) { tmp = sMin; sMin = sMax; sMax = tmp; }
+    } else {
+      s[0] = (yMin - ty) / dx;
+      s[1] = (yMax - ty) / dx;
+      s[2] = (xMin - tx) / -dy;
+      s[3] = (xMax - tx) / -dy;
+      for (j = 0; j < 3; ++j) {
+       kk = j;
+       for (k = j + 1; k < 4; ++k) {
+         if (s[k] < s[kk]) {
+           kk = k;
+         }
+       }
+       tmp = s[j]; s[j] = s[kk]; s[kk] = tmp;
+      }
+      sMin = s[1];
+      sMax = s[2];
+    }
+    ux1 = tx - sMin * dy;
+    uy1 = ty + sMin * dx;
+    vx1 = tx - sMax * dy;
+    vy1 = ty + sMax * dx;
+
+    // set the color
+    state->setFillColor(&color0);
+    out->updateFillColor(state);
+
+    // fill the region
+    state->moveTo(ux0, uy0);
+    state->lineTo(vx0, vy0);
+    state->lineTo(vx1, vy1);
+    state->lineTo(ux1, uy1);
+    state->closePath();
+    out->fill(state);
+    state->clearPath();
+
+    // set up for next region
+    ux0 = ux1;
+    uy0 = uy1;
+    vx0 = vx1;
+    vy0 = vy1;
+    color0 = color1;
+    i = next[i];
+  }
+}
+
+void Gfx::doRadialShFill(GfxRadialShading *shading) {
+  double sMin, sMax, xMin, yMin, xMax, yMax;
+  double x0, y0, r0, x1, y1, r1, t0, t1;
+  int nComps;
+  GfxColor colorA, colorB;
+  double xa, ya, xb, yb, ra, rb;
+  double ta, tb, sa, sb;
+  int ia, ib, k, n;
+  double *ctm;
+  double angle, t;
+
+  // get the shading info
+  shading->getCoords(&x0, &y0, &r0, &x1, &y1, &r1);
+  t0 = shading->getDomain0();
+  t1 = shading->getDomain1();
+  nComps = shading->getColorSpace()->getNComps();
+
+  // compute the (possibly extended) s range
+  sMin = 0;
+  sMax = 1;
+  if (shading->getExtend0()) {
+    if (r0 < r1) {
+      // extend the smaller end
+      sMin = -r0 / (r1 - r0);
+    } else {
+      // extend the larger end
+      //~ this computes the diagonal of the bounding box -- we should
+      //~ really compute the intersection of the moving/expanding
+      //~ circles with each of the four corners and look for the max
+      //~ radius
+      state->getUserClipBBox(&xMin, &yMin, &xMax, &yMax);
+      sMin = (sqrt((xMax - xMin) * (xMax - xMin) +
+                  (yMax - yMin) * (yMax - yMin)) - r0) / (r1 - r0);
+      if (sMin > 0) {
+       sMin = 0;
+      } else if (sMin < -20) {
+       // sanity check
+       sMin = -20;
+      }
+    }
+  }
+  if (shading->getExtend1()) {
+    if (r1 < r0) {
+      // extend the smaller end
+      sMax = -r0 / (r1 - r0);
+    } else if (r1 > r0) {
+      // extend the larger end
+      state->getUserClipBBox(&xMin, &yMin, &xMax, &yMax);
+      sMax = (sqrt((xMax - xMin) * (xMax - xMin) +
+                  (yMax - yMin) * (yMax - yMin)) - r0) / (r1 - r0);
+      if (sMax < 1) {
+       sMin = 1;
+      } else if (sMax > 20) {
+       // sanity check
+       sMax = 20;
+      }
+    }
+  }
+
+  // compute the number of steps into which circles must be divided to
+  // achieve a curve flatness of 0.1 pixel in device space for the
+  // largest circle (note that "device space" is 72 dpi when generating
+  // PostScript, hence the relatively small 0.1 pixel accuracy)
+  ctm = state->getCTM();
+  t = fabs(ctm[0]);
+  if (fabs(ctm[1]) > t) {
+    t = fabs(ctm[1]);
+  }
+  if (fabs(ctm[2]) > t) {
+    t = fabs(ctm[2]);
+  }
+  if (fabs(ctm[3]) > t) {
+    t = fabs(ctm[3]);
+  }
+  if (r0 > r1) {
+    t *= r0;
+  } else {
+    t *= r1;
+  }
+  if (t < 1) {
+    n = 3;
+  } else {
+    n = (int)(M_PI / acos(1 - 0.1 / t));
+    if (n < 3) {
+      n = 3;
+    } else if (n > 200) {
+      n = 200;
+    }
+  }
+
+  // Traverse the t axis and do the shading.
+  //
+  // This generates and fills a series of rings.  Each ring is defined
+  // by two circles:
+  //   sa, ta, xa, ya, ra, colorA
+  //   sb, tb, xb, yb, rb, colorB
+  //
+  // The s/t axis is divided into radialMaxSplits parts; these parts
+  // are combined as much as possible while respecting the
+  // radialColorDelta parameter.
+
+  // setup for the start circle
+  ia = 0;
+  sa = sMin;
+  ta = t0 + sa * (t1 - t0);
+  xa = x0 + sa * (x1 - x0);
+  ya = y0 + sa * (y1 - y0);
+  ra = r0 + sa * (r1 - r0);
+  if (ta < t0) {
+    shading->getColor(t0, &colorA);
+  } else if (ta > t1) {
+    shading->getColor(t1, &colorA);
+  } else {
+    shading->getColor(ta, &colorA);
+  }
+
+  while (ia < radialMaxSplits) {
+
+    // go as far along the t axis (toward t1) as we can, such that the
+    // color difference is within the tolerance (radialColorDelta) --
+    // this uses bisection (between the current value, t, and t1),
+    // limited to radialMaxSplits points along the t axis
+    ib = radialMaxSplits;
+    sb = sMin + ((double)ib / (double)radialMaxSplits) * (sMax - sMin);
+    tb = t0 + sb * (t1 - t0);
+    if (tb < t0) {
+      shading->getColor(t0, &colorB);
+    } else if (tb > t1) {
+      shading->getColor(t1, &colorB);
+    } else {
+      shading->getColor(tb, &colorB);
+    }
+    while (ib - ia > 1) {
+      for (k = 0; k < nComps; ++k) {
+       if (fabs(colorB.c[k] - colorA.c[k]) > radialColorDelta) {
+         break;
+       }
+      }
+      if (k == nComps) {
+       break;
+      }
+      ib = (ia + ib) / 2;
+      sb = sMin + ((double)ib / (double)radialMaxSplits) * (sMax - sMin);
+      tb = t0 + sb * (t1 - t0);
+      if (tb < t0) {
+       shading->getColor(t0, &colorB);
+      } else if (tb > t1) {
+       shading->getColor(t1, &colorB);
+      } else {
+       shading->getColor(tb, &colorB);
+      }
+    }
+
+    // compute center and radius of the circle
+    xb = x0 + sb * (x1 - x0);
+    yb = y0 + sb * (y1 - y0);
+    rb = r0 + sb * (r1 - r0);
+
+    // use the average of the colors at the two circles
+    for (k = 0; k < nComps; ++k) {
+      colorA.c[k] = 0.5 * (colorA.c[k] + colorB.c[k]);
+    }
+    state->setFillColor(&colorA);
+    out->updateFillColor(state);
+
+    // construct path for first circle
+    state->moveTo(xa + ra, ya);
+    for (k = 1; k < n; ++k) {
+      angle = ((double)k / (double)n) * 2 * M_PI;
+      state->lineTo(xa + ra * cos(angle), ya + ra * sin(angle));
+    }
+    state->closePath();
+
+    // construct and append path for second circle
+    state->moveTo(xb + rb, yb);
+    for (k = 1; k < n; ++k) {
+      angle = ((double)k / (double)n) * 2 * M_PI;
+      state->lineTo(xb + rb * cos(angle), yb + rb * sin(angle));
+    }
+    state->closePath();
+
+    // fill the ring
+    out->eoFill(state);
+    state->clearPath();
+
+    // step to the next value of t
+    ia = ib;
+    sa = sb;
+    ta = tb;
+    xa = xb;
+    ya = yb;
+    ra = rb;
+    colorA = colorB;
+  }
+}
+
 void Gfx::doEndPath() {
-  if (state->isPath()) {
-    if (clip == clipNormal)
+  if (state->isPath() && clip != clipNone) {
+    state->clip();
+    if (clip == clipNormal) {
       out->clip(state);
-    else if (clip == clipEO)
+    } else {
       out->eoClip(state);
+    }
   }
   clip = clipNone;
   state->clearPath();
@@ -1300,9 +1861,11 @@ void Gfx::opSetFont(Object args[], int numArgs) {
     return;
   }
   if (printCommands) {
-    printf("  font: '%s' %g\n",
+    printf("  font: tag=%s name='%s' %g\n",
+          font->getTag()->getCString(),
           font->getName() ? font->getName()->getCString() : "???",
           args[1].getNum());
+    fflush(stdout);
   }
   state->setFont(font, args[1].getNum());
   fontChanged = gTrue;
@@ -1330,6 +1893,7 @@ void Gfx::opSetWordSpacing(Object args[], int numArgs) {
 void Gfx::opSetHorizScaling(Object args[], int numArgs) {
   state->setHorizScaling(args[0].getNum());
   out->updateHorizScaling(state);
+  fontChanged = gTrue;
 }
 
 //------------------------------------------------------------------------
@@ -1422,17 +1986,23 @@ void Gfx::opMoveSetShowText(Object args[], int numArgs) {
 void Gfx::opShowSpaceText(Object args[], int numArgs) {
   Array *a;
   Object obj;
+  int wMode;
   int i;
 
   if (!state->getFont()) {
     error(getPos(), "No font in show/space");
     return;
   }
+  wMode = state->getFont()->getWMode();
   a = args[0].getArray();
   for (i = 0; i < a->getLength(); ++i) {
     a->get(i, &obj);
     if (obj.isNum()) {
-      state->textShift(-obj.getNum() * 0.001 * state->getFontSize());
+      if (wMode) {
+       state->textShift(0, -obj.getNum() * 0.001 * state->getFontSize());
+      } else {
+       state->textShift(-obj.getNum() * 0.001 * state->getFontSize(), 0);
+      }
       out->updateTextShift(state, obj.getNum());
     } else if (obj.isString()) {
       doShowText(obj.getString());
@@ -1445,188 +2015,174 @@ void Gfx::opShowSpaceText(Object args[], int numArgs) {
 
 void Gfx::doShowText(GString *s) {
   GfxFont *font;
-  GfxFontEncoding16 *enc;
-  Guchar *p;
-  Guchar c8;
-  int c16;
-  GString *s16;
-  char s16a[2];
-  int m, n;
-#if 0 //~type3
-  double dx, dy, width, height, w, h, x, y;
+  int wMode;
+  double riseX, riseY;
+  CharCode code;
+  Unicode u[8];
+  double x, y, dx, dy, dx2, dy2, curX, curY, tdx, tdy;
+  double originX, originY, tOriginX, tOriginY;
   double oldCTM[6], newCTM[6];
   double *mat;
   Object charProc;
+  Dict *resDict;
   Parser *oldParser;
-  int i;
-#else
-  double dx, dy, width, height, w, h, sWidth, sHeight;
-#endif
+  char *p;
+  int len, n, uLen, nChars, nSpaces, i;
 
   if (fontChanged) {
     out->updateFont(state);
     fontChanged = gFalse;
   }
   font = state->getFont();
+  wMode = font->getWMode();
 
-  //----- 16-bit font
-  if (font->is16Bit()) {
-    enc = font->getEncoding16();
-    if (out->useDrawChar()) {
-      out->beginString(state, s);
-      s16 = NULL;
-    } else {
-      s16 = new GString();
-    }
-    sWidth = sHeight = 0;
-    state->textTransformDelta(0, state->getRise(), &dx, &dy);
-    p = (Guchar *)s->getCString();
-    n = s->getLength();
-    while (n > 0) {
-      m = getNextChar16(enc, p, &c16);
-      if (enc->wMode == 0) {
-       width = state->getFontSize() * state->getHorizScaling() *
-               font->getWidth16(c16) +
-               state->getCharSpace();
-       if (c16 == ' ') {
-         width += state->getWordSpace();
-       }
-       height = 0;
-      } else {
-       width = 0;
-       height = state->getFontSize() * font->getHeight16(c16);
-      }
-      state->textTransformDelta(width, height, &w, &h);
-      if (out->useDrawChar()) {
-       out->drawChar16(state, state->getCurX() + dx, state->getCurY() + dy,
-                       w, h, c16);
-       state->textShift(width, height);
-      } else {
-       s16a[0] = (char)(c16 >> 8);
-       s16a[1] = (char)c16;
-       s16->append(s16a, 2);
-       sWidth += w;
-       sHeight += h;
-      }
-      n -= m;
-      p += m;
-    }
-    if (out->useDrawChar()) {
-      out->endString(state);
-    } else {
-      out->drawString16(state, s16);
-      delete s16;
-      state->textShift(sWidth, sHeight);
-    }
+  if (out->useDrawChar()) {
+    out->beginString(state, s);
+  }
 
-  //----- 8-bit font
-  } else {
-#if 0 //~type3
-    //~ also check out->renderType3()
-    if (font->getType() == fontType3) {
-      out->beginString(state, s);
-      mat = state->getCTM();
-      for (i = 0; i < 6; ++i) {
-       oldCTM[i] = mat[i];
+  // handle a Type 3 char
+  if (font->getType() == fontType3 && out->interpretType3Chars()) {
+    mat = state->getCTM();
+    for (i = 0; i < 6; ++i) {
+      oldCTM[i] = mat[i];
+    }
+    mat = state->getTextMat();
+    newCTM[0] = mat[0] * oldCTM[0] + mat[1] * oldCTM[2];
+    newCTM[1] = mat[0] * oldCTM[1] + mat[1] * oldCTM[3];
+    newCTM[2] = mat[2] * oldCTM[0] + mat[3] * oldCTM[2];
+    newCTM[3] = mat[2] * oldCTM[1] + mat[3] * oldCTM[3];
+    mat = font->getFontMatrix();
+    newCTM[0] = mat[0] * newCTM[0] + mat[1] * newCTM[2];
+    newCTM[1] = mat[0] * newCTM[1] + mat[1] * newCTM[3];
+    newCTM[2] = mat[2] * newCTM[0] + mat[3] * newCTM[2];
+    newCTM[3] = mat[2] * newCTM[1] + mat[3] * newCTM[3];
+    newCTM[0] *= state->getFontSize();
+    newCTM[3] *= state->getFontSize();
+    newCTM[0] *= state->getHorizScaling();
+    newCTM[2] *= state->getHorizScaling();
+    state->textTransformDelta(0, state->getRise(), &riseX, &riseY);
+    curX = state->getCurX();
+    curY = state->getCurY();
+    oldParser = parser;
+    p = s->getCString();
+    len = s->getLength();
+    while (len > 0) {
+      n = font->getNextChar(p, len, &code,
+                           u, (int)(sizeof(u) / sizeof(Unicode)), &uLen,
+                           &dx, &dy, &originX, &originY);
+      dx = dx * state->getFontSize() + state->getCharSpace();
+      if (n == 1 && *p == ' ') {
+       dx += state->getWordSpace();
       }
-      mat = state->getTextMat();
-      newCTM[0] = mat[0] * oldCTM[0] + mat[1] * oldCTM[2];
-      newCTM[1] = mat[0] * oldCTM[1] + mat[1] * oldCTM[3];
-      newCTM[2] = mat[2] * oldCTM[0] + mat[3] * oldCTM[2];
-      newCTM[3] = mat[2] * oldCTM[1] + mat[3] * oldCTM[3];
-      mat = font->getFontMatrix();
-      newCTM[0] = mat[0] * newCTM[0] + mat[1] * newCTM[2];
-      newCTM[1] = mat[0] * newCTM[1] + mat[1] * newCTM[3];
-      newCTM[2] = mat[2] * newCTM[0] + mat[3] * newCTM[2];
-      newCTM[3] = mat[2] * newCTM[1] + mat[3] * newCTM[3];
-      newCTM[0] *= state->getFontSize();
-      newCTM[3] *= state->getFontSize();
-      newCTM[0] *= state->getHorizScaling();
-      newCTM[2] *= state->getHorizScaling();
-      state->textTransformDelta(0, state->getRise(), &dx, &dy);
-      oldParser = parser;
-      for (p = (Guchar *)s->getCString(), n = s->getLength(); n; ++p, --n) {
-       c8 = *p;
-       font->getCharProc(c8, &charProc);
-       state->transform(state->getCurX() + dx, state->getCurY() + dy, &x, &y);
-       state->setCTM(newCTM[0], newCTM[1], newCTM[2], newCTM[3], x, y);
-       //~ out->updateCTM(???)
+      dx *= state->getHorizScaling();
+      dy *= state->getFontSize();
+      state->textTransformDelta(dx, dy, &tdx, &tdy);
+      state->transform(curX + riseX, curY + riseY, &x, &y);
+      out->saveState(state);
+      state = state->save();
+      state->setCTM(newCTM[0], newCTM[1], newCTM[2], newCTM[3], x, y);
+      //~ out->updateCTM(???)
+      if (!out->beginType3Char(state, code, u, uLen)) {
+       ((Gfx8BitFont *)font)->getCharProc(code, &charProc);
+       if ((resDict = ((Gfx8BitFont *)font)->getResources())) {
+         pushResources(resDict);
+       }
        if (charProc.isStream()) {
          display(&charProc, gFalse);
        } else {
          error(getPos(), "Missing or bad Type3 CharProc entry");
        }
-       state->setCTM(oldCTM[0], oldCTM[1], oldCTM[2],
-                     oldCTM[3], oldCTM[4], oldCTM[5]);
-       //~ out->updateCTM(???) - use gsave/grestore instead?
+       out->endType3Char(state);
+       if (resDict) {
+         popResources();
+       }
        charProc.free();
-       width = state->getFontSize() * state->getHorizScaling() *
-               font->getWidth(c8) +
-               state->getCharSpace();
-       if (c8 == ' ') {
-         width += state->getWordSpace();
+      }
+      state = state->restore();
+      out->restoreState(state);
+      // GfxState::restore() does *not* restore the current position,
+      // so we track it here with (curX, curY)
+      curX += tdx;
+      curY += tdy;
+      state->moveTo(curX, curY);
+      p += n;
+      len -= n;
+    }
+    parser = oldParser;
+
+  } else if (out->useDrawChar()) {
+    state->textTransformDelta(0, state->getRise(), &riseX, &riseY);
+    p = s->getCString();
+    len = s->getLength();
+    while (len > 0) {
+      n = font->getNextChar(p, len, &code,
+                           u, (int)(sizeof(u) / sizeof(Unicode)), &uLen,
+                           &dx, &dy, &originX, &originY);
+      if (wMode) {
+       dx *= state->getFontSize();
+       dy = dy * state->getFontSize() + state->getCharSpace();
+       if (n == 1 && *p == ' ') {
+         dy += state->getWordSpace();
+       }
+      } else {
+       dx = dx * state->getFontSize() + state->getCharSpace();
+       if (n == 1 && *p == ' ') {
+         dx += state->getWordSpace();
        }
-       state->textShift(width);
+       dx *= state->getHorizScaling();
+       dy *= state->getFontSize();
       }
-      parser = oldParser;
-      out->endString(state);
-    } else
-#endif
-    if (out->useDrawChar()) {
-      out->beginString(state, s);
-      state->textTransformDelta(0, state->getRise(), &dx, &dy);
-      for (p = (Guchar *)s->getCString(), n = s->getLength(); n; ++p, --n) {
-       c8 = *p;
-       width = state->getFontSize() * state->getHorizScaling() *
-               font->getWidth(c8) +
-               state->getCharSpace();
-       if (c8 == ' ')
-         width += state->getWordSpace();
-       state->textTransformDelta(width, 0, &w, &h);
-       out->drawChar(state, state->getCurX() + dx, state->getCurY() + dy,
-                     w, h, c8);
-       state->textShift(width);
+      state->textTransformDelta(dx, dy, &tdx, &tdy);
+      originX *= state->getFontSize();
+      originY *= state->getFontSize();
+      state->textTransformDelta(originX, originY, &tOriginX, &tOriginY);
+      out->drawChar(state, state->getCurX() + riseX, state->getCurY() + riseY,
+                   tdx, tdy, tOriginX, tOriginY, code, u, uLen);
+      state->shift(tdx, tdy);
+      p += n;
+      len -= n;
+    }
+
+  } else {
+    dx = dy = 0;
+    p = s->getCString();
+    len = s->getLength();
+    nChars = nSpaces = 0;
+    while (len > 0) {
+      n = font->getNextChar(p, len, &code,
+                           u, (int)(sizeof(u) / sizeof(Unicode)), &uLen,
+                           &dx2, &dy2, &originX, &originY);
+      dx += dx2;
+      dy += dy2;
+      if (n == 1 && *p == ' ') {
+       ++nSpaces;
       }
-      out->endString(state);
+      ++nChars;
+      p += n;
+      len -= n;
+    }
+    if (wMode) {
+      dx *= state->getFontSize();
+      dy = dy * state->getFontSize()
+          + nChars * state->getCharSpace()
+          + nSpaces * state->getWordSpace();
     } else {
-      out->drawString(state, s);
-      width = state->getFontSize() * state->getHorizScaling() *
-             font->getWidth(s) +
-             s->getLength() * state->getCharSpace();
-      for (p = (Guchar *)s->getCString(), n = s->getLength(); n; ++p, --n) {
-       if (*p == ' ')
-         width += state->getWordSpace();
-      }
-      state->textShift(width);
+      dx = dx * state->getFontSize()
+          + nChars * state->getCharSpace()
+          + nSpaces * state->getWordSpace();
+      dx *= state->getHorizScaling();
+      dy *= state->getFontSize();
     }
+    state->textTransformDelta(dx, dy, &tdx, &tdy);
+    out->drawString(state, s);
+    state->shift(tdx, tdy);
   }
-}
 
-int Gfx::getNextChar16(GfxFontEncoding16 *enc, Guchar *p, int *c16) {
-  int n;
-  int code;
-  int a, b, m;
-
-  n = enc->codeLen[*p];
-  if (n == 1) {
-    *c16 = enc->map1[*p];
-  } else {
-    code = (p[0] << 8) + p[1];
-    a = 0;
-    b = enc->map2Len;
-    // invariant: map2[2*a] <= code < map2[2*b]
-    while (b - a > 1) {
-      m = (a + b) / 2;
-      if (enc->map2[2*m] <= code)
-       a = m;
-      else if (enc->map2[2*m] > code)
-       b = m;
-      else
-       break;
-    }
-    *c16 = enc->map2[2*a+1] + (code - enc->map2[2*a]);
+  if (out->useDrawChar()) {
+    out->endString(state);
   }
-  return n;
+
+  updateLevel += 10 * s->getLength();
 }
 
 //------------------------------------------------------------------------
@@ -1634,7 +2190,7 @@ int Gfx::getNextChar16(GfxFontEncoding16 *enc, Guchar *p, int *c16) {
 //------------------------------------------------------------------------
 
 void Gfx::opXObject(Object args[], int numArgs) {
-  Object obj1, obj2, refObj;
+  Object obj1, obj2, obj3, refObj;
 #if OPI_SUPPORT
   Object opiDict;
 #endif
@@ -1660,6 +2216,10 @@ void Gfx::opXObject(Object args[], int numArgs) {
     refObj.free();
   } else if (obj2.isName("Form")) {
     doForm(&obj1);
+  } else if (obj2.isName("PS")) {
+    obj1.streamGetDict()->lookup("Level1", &obj3);
+    out->psXObject(obj1.getStream(),
+                  obj3.isStream() ? obj3.getStream() : (Stream *)NULL);
   } else if (obj2.isName()) {
     error(getPos(), "Unknown XObject subtype '%s'", obj2.getName());
   } else {
@@ -1677,13 +2237,17 @@ void Gfx::opXObject(Object args[], int numArgs) {
 
 void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) {
   Dict *dict;
-  Object obj1, obj2;
   int width, height;
   int bits;
   GBool mask;
+  GBool invert;
   GfxColorSpace *colorSpace;
   GfxImageColorMap *colorMap;
-  GBool invert;
+  Object maskObj;
+  GBool haveMask;
+  int maskColors[2*gfxColorMaxComps];
+  Object obj1, obj2;
+  int i;
 
   // get stream dict
   dict = str->getDict();
@@ -1791,11 +2355,30 @@ void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) {
       goto err1;
     }
 
+    // get the mask
+    haveMask = gFalse;
+    dict->lookup("Mask", &maskObj);
+    if (maskObj.isArray()) {
+      for (i = 0; i < maskObj.arrayGetLength(); ++i) {
+       maskObj.arrayGet(i, &obj1);
+       maskColors[i] = obj1.getInt();
+       obj1.free();
+      }
+      haveMask = gTrue;
+    }
+
     // draw it
-    out->drawImage(state, ref, str, width, height, colorMap, inlineImg);
+    out->drawImage(state, ref, str, width, height, colorMap,
+                  haveMask ? maskColors : (int *)NULL,  inlineImg);
     delete colorMap;
-    str->close();
+
+    maskObj.free();
+  }
+
+  if ((i = width * height) > 1000) {
+    i = 1000;
   }
+  updateLevel += i;
 
   return;
 
@@ -1856,7 +2439,7 @@ void Gfx::doForm(Object *str) {
 
   // get resources
   dict->lookup("Resources", &resObj);
-  resDict = resObj.isDict() ? resObj.getDict() : NULL;
+  resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL;
 
   // draw it
   doForm1(str, resDict, m, bbox);
@@ -1864,19 +2447,22 @@ void Gfx::doForm(Object *str) {
   resObj.free();
 }
 
-void Gfx::doWidgetForm(Object *str, double xMin, double yMin,
-                      double xMax, double yMax) {
+void Gfx::doAnnot(Object *str, double xMin, double yMin,
+                 double xMax, double yMax) {
   Dict *dict, *resDict;
   Object matrixObj, bboxObj, resObj;
   Object obj1;
-  double m[6], bbox[6];
-  double sx, sy;
+  double m[6], bbox[6], ictm[6];
+  double *ctm;
+  double formX0, formY0, formX1, formY1;
+  double annotX0, annotY0, annotX1, annotY1;
+  double det, x, y, sx, sy;
   int i;
 
   // get stream dict
   dict = str->streamGetDict();
 
-  // get bounding box
+  // get the form bounding box
   dict->lookup("BBox", &bboxObj);
   if (!bboxObj.isArray()) {
     bboxObj.free();
@@ -1890,7 +2476,7 @@ void Gfx::doWidgetForm(Object *str, double xMin, double yMin,
   }
   bboxObj.free();
 
-  // get matrix
+  // get the form matrix
   dict->lookup("Matrix", &matrixObj);
   if (matrixObj.isArray()) {
     for (i = 0; i < 6; ++i) {
@@ -1905,20 +2491,68 @@ void Gfx::doWidgetForm(Object *str, double xMin, double yMin,
   }
   matrixObj.free();
 
-  // scale form bbox to widget rectangle
-  sx = fabs((xMax - xMin) / (bbox[2] - bbox[0]));
-  sy = fabs((yMax - yMin) / (bbox[3] - bbox[1]));
-  m[0] *= sx;  m[1] *= sy;
-  m[2] *= sx;  m[3] *= sy;
-  m[4] *= sx;  m[5] *= sy;
+  // transform the form bbox from form space to user space
+  formX0 = bbox[0] * m[0] + bbox[1] * m[2] + m[4];
+  formY0 = bbox[0] * m[1] + bbox[1] * m[3] + m[5];
+  formX1 = bbox[2] * m[0] + bbox[3] * m[2] + m[4];
+  formY1 = bbox[2] * m[1] + bbox[3] * m[3] + m[5];
+
+  // transform the annotation bbox from default user space to user
+  // space: (bbox * baseMatrix) * iCTM
+  ctm = state->getCTM();
+  det = 1 / (ctm[0] * ctm[3] - ctm[1] * ctm[2]);
+  ictm[0] = ctm[3] * det;
+  ictm[1] = -ctm[1] * det;
+  ictm[2] = -ctm[2] * det;
+  ictm[3] = ctm[0] * det;
+  ictm[4] = (ctm[2] * ctm[5] - ctm[3] * ctm[4]) * det;
+  ictm[5] = (ctm[1] * ctm[4] - ctm[0] * ctm[5]) * det;
+  x = baseMatrix[0] * xMin + baseMatrix[2] * yMin + baseMatrix[4];
+  y = baseMatrix[1] * xMin + baseMatrix[3] * yMin + baseMatrix[5];
+  annotX0 = ictm[0] * x + ictm[2] * y + ictm[4];
+  annotY0 = ictm[1] * x + ictm[3] * y + ictm[5];
+  x = baseMatrix[0] * xMax + baseMatrix[2] * yMax + baseMatrix[4];
+  y = baseMatrix[1] * xMax + baseMatrix[3] * yMax + baseMatrix[5];
+  annotX1 = ictm[0] * x + ictm[2] * y + ictm[4];
+  annotY1 = ictm[1] * x + ictm[3] * y + ictm[5];
+
+  // swap min/max coords
+  if (formX0 > formX1) {
+    x = formX0; formX0 = formX1; formX1 = x;
+  }
+  if (formY0 > formY1) {
+    y = formY0; formY0 = formY1; formY1 = y;
+  }
+  if (annotX0 > annotX1) {
+    x = annotX0; annotX0 = annotX1; annotX1 = x;
+  }
+  if (annotY0 > annotY1) {
+    y = annotY0; annotY0 = annotY1; annotY1 = y;
+  }
 
-  // translate to widget rectangle
-  m[4] += xMin;
-  m[5] += yMin;
+  // scale the form to fit the annotation bbox
+  if (formX1 == formX0) {
+    // this shouldn't happen
+    sx = 1;
+  } else {
+    sx = (annotX1 - annotX0) / (formX1 - formX0);
+  }
+  if (formY1 == formY0) {
+    // this shouldn't happen
+    sy = 1;
+  } else {
+    sy = (annotY1 - annotY0) / (formY1 - formY0);
+  }
+  m[0] *= sx;
+  m[2] *= sx;
+  m[4] = (m[4] - formX0) * sx + annotX0;
+  m[1] *= sy;
+  m[3] *= sy;
+  m[5] = (m[5] - formY0) * sy + annotY0;
 
   // get resources
   dict->lookup("Resources", &resObj);
-  resDict = resObj.isDict() ? resObj.getDict() : NULL;
+  resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL;
 
   // draw it
   doForm1(str, resDict, m, bbox);
@@ -1930,11 +2564,10 @@ void Gfx::doWidgetForm(Object *str, double xMin, double yMin,
 void Gfx::doForm1(Object *str, Dict *resDict, double *matrix, double *bbox) {
   Parser *oldParser;
   double oldBaseMatrix[6];
-  GfxResources *resPtr;
   int i;
 
   // push new resources on stack
-  res = new GfxResources(resDict, res);
+  pushResources(resDict);
 
   // save current graphics state
   out->saveState(state);
@@ -1961,6 +2594,7 @@ void Gfx::doForm1(Object *str, Dict *resDict, double *matrix, double *bbox) {
   state->lineTo(bbox[2], bbox[3]);
   state->lineTo(bbox[0], bbox[3]);
   state->closePath();
+  state->clip();
   out->clip(state);
   state->clearPath();
 
@@ -1980,11 +2614,21 @@ void Gfx::doForm1(Object *str, Dict *resDict, double *matrix, double *bbox) {
   out->restoreState(state);
 
   // pop resource stack
+  popResources();
+
+  return;
+}
+
+void Gfx::pushResources(Dict *resDict) {
+  res = new GfxResources(xref, resDict, res);
+}
+
+void Gfx::popResources() {
+  GfxResources *resPtr;
+
   resPtr = res->getNext();
   delete res;
   res = resPtr;
-
-  return;
 }
 
 //------------------------------------------------------------------------
@@ -2020,25 +2664,30 @@ Stream *Gfx::buildImageStream() {
   Stream *str;
 
   // build dictionary
-  dict.initDict();
+  dict.initDict(xref);
   parser->getObj(&obj);
   while (!obj.isCmd("ID") && !obj.isEOF()) {
     if (!obj.isName()) {
       error(getPos(), "Inline image dictionary key must be a name object");
       obj.free();
-      parser->getObj(&obj);
     } else {
       key = copyString(obj.getName());
       obj.free();
       parser->getObj(&obj);
-      if (obj.isEOF() || obj.isError())
+      if (obj.isEOF() || obj.isError()) {
+       gfree(key);
        break;
+      }
       dict.dictAdd(key, &obj);
     }
     parser->getObj(&obj);
   }
-  if (obj.isEOF())
+  if (obj.isEOF()) {
     error(getPos(), "End of file in inline image");
+    obj.free();
+    dict.free();
+    return NULL;
+  }
   obj.free();
 
   // make stream
@@ -2061,11 +2710,13 @@ void Gfx::opEndImage(Object args[], int numArgs) {
 //------------------------------------------------------------------------
 
 void Gfx::opSetCharWidth(Object args[], int numArgs) {
-  error(getPos(), "Encountered 'd0' operator in content stream");
+  out->type3D0(state, args[0].getNum(), args[1].getNum());
 }
 
 void Gfx::opSetCacheDevice(Object args[], int numArgs) {
-  error(getPos(), "Encountered 'd1' operator in content stream");
+  out->type3D1(state, args[0].getNum(), args[1].getNum(),
+              args[2].getNum(), args[3].getNum(),
+              args[4].getNum(), args[5].getNum());
 }
 
 //------------------------------------------------------------------------
@@ -2091,6 +2742,7 @@ void Gfx::opBeginMarkedContent(Object args[], int numArgs) {
     if (numArgs == 2)
       args[2].print(stdout);
     printf("\n");
+    fflush(stdout);
   }
 }
 
@@ -2103,5 +2755,6 @@ void Gfx::opMarkPoint(Object args[], int numArgs) {
     if (numArgs == 2)
       args[2].print(stdout);
     printf("\n");
+    fflush(stdout);
   }
 }
index 34d8f992c6fa0da2bf5de8c99fea5b8d239d0961..b4da531cf47a068df0ed35313dad9c7d20fed6fe 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Gfx.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -16,6 +16,7 @@
 #include "gtypes.h"
 
 class GString;
+class XRef;
 class Array;
 class Stream;
 class Parser;
@@ -23,10 +24,13 @@ class Dict;
 class OutputDev;
 class GfxFontDict;
 class GfxFont;
-struct GfxFontEncoding16;
 class GfxPattern;
+class GfxShading;
+class GfxAxialShading;
+class GfxRadialShading;
 class GfxState;
 class Gfx;
+struct PDFRectangle;
 
 //------------------------------------------------------------------------
 // Gfx
@@ -62,7 +66,7 @@ struct Operator {
 class GfxResources {
 public:
 
-  GfxResources(Dict *resDict, GfxResources *next);
+  GfxResources(XRef *xref, Dict *resDict, GfxResources *nextA);
   ~GfxResources();
 
   GfxFont *lookupFont(char *name);
@@ -70,6 +74,7 @@ public:
   GBool lookupXObjectNF(char *name, Object *obj);
   void lookupColorSpace(char *name, Object *obj);
   GfxPattern *lookupPattern(char *name);
+  GfxShading *lookupShading(char *name);
   GBool lookupGState(char *name, Object *obj);
 
   GfxResources *getNext() { return next; }
@@ -80,6 +85,7 @@ private:
   Object xObjDict;
   Object colorSpaceDict;
   Object patternDict;
+  Object shadingDict;
   Object gStateDict;
   GfxResources *next;
 };
@@ -88,24 +94,35 @@ class Gfx {
 public:
 
   // Constructor for regular output.
-  Gfx(OutputDev *out1, int pageNum, Dict *resDict,
-      double dpi, double x1, double y1, double x2, double y2, GBool crop,
-      double cropX1, double cropY1, double cropX2, double cropY2,
-      int rotate);
+  Gfx(XRef *xrefA, OutputDev *outA, int pageNum, Dict *resDict, double dpi,
+      PDFRectangle *box, GBool crop, PDFRectangle *cropBox, int rotate,
+      GBool printCommandsA);
+
+  // Constructor for a sub-page object.
+  Gfx(XRef *xrefA, OutputDev *outA, Dict *resDict,
+      PDFRectangle *box, GBool crop, PDFRectangle *cropBox);
 
-  // Destructor.
   ~Gfx();
 
   // Interpret a stream or array of streams.
   void display(Object *obj, GBool topLevel = gTrue);
 
-  void doWidgetForm(Object *str, double xMin, double yMin,
-                   double xMax, double yMax);
+  // Display an annotation, given its appearance (a Form XObject) and
+  // bounding box (in default user space).
+  void doAnnot(Object *str, double xMin, double yMin,
+              double xMax, double yMax);
+
+  void pushResources(Dict *resDict);
+  void popResources();
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   OutputDev *out;              // output device
+  GBool subPage;               // is this a sub-page object?
+  GBool printCommands;         // print the drawing commands (for debugging)
   GfxResources *res;           // resource stack
+  int updateLevel;
 
   GfxState *state;             // current graphics state
   GBool fontChanged;           // set if font or text matrix has changed
@@ -170,8 +187,10 @@ private:
   void opCloseFillStroke(Object args[], int numArgs);
   void opEOFillStroke(Object args[], int numArgs);
   void opCloseEOFillStroke(Object args[], int numArgs);
-  void opShFill(Object args[], int numArgs);
   void doPatternFill(GBool eoFill);
+  void opShFill(Object args[], int numArgs);
+  void doAxialShFill(GfxAxialShading *shading);
+  void doRadialShFill(GfxRadialShading *shading);
   void doEndPath();
 
   // path clipping operators
@@ -203,7 +222,6 @@ private:
   void opMoveSetShowText(Object args[], int numArgs);
   void opShowSpaceText(Object args[], int numArgs);
   void doShowText(GString *s);
-  int getNextChar16(GfxFontEncoding16 *enc, Guchar *p, int *c16);
 
   // XObject operators
   void opXObject(Object args[], int numArgs);
index 16b311b3890fe156d66cfb14c9a1cc4e7d023267..8dcd8e78d01e3c20ac71fd3a40ef9c350f3c449e 100644 (file)
@@ -2,7 +2,7 @@
 //
 // GfxFont.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #pragma implementation
 #endif
 
-#include <stdlib.h>
-#include <stddef.h>
+#include <aconf.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
-#include "GString.h"
 #include "gmem.h"
-#include "gfile.h"
-#include "config.h"
+#include "Error.h"
 #include "Object.h"
-#include "Array.h"
 #include "Dict.h"
-#include "Error.h"
-#include "Params.h"
+#include "GlobalParams.h"
+#include "CMap.h"
+#include "CharCodeToUnicode.h"
+#include "FontEncodingTables.h"
+#include "BuiltinFontTables.h"
 #include "FontFile.h"
 #include "GfxFont.h"
 
-#include "FontInfo.h"
-#if JAPANESE_SUPPORT
-#include "Japan12CMapInfo.h"
-#endif
-#if CHINESE_GB_SUPPORT
-#include "GB12CMapInfo.h"
-#endif
-#if CHINESE_CNS_SUPPORT
-#include "CNS13CMapInfo.h"
-#endif
-
 //------------------------------------------------------------------------
 
-static int CDECL cmpWidthExcep(const void *w1, const void *w2);
-static int CDECL cmpWidthExcepV(const void *w1, const void *w2);
-
-//------------------------------------------------------------------------
+struct StdFontMapEntry {
+  char *altName;
+  char *properName;
+};
 
-static Gushort *defCharWidths[12] = {
-  courierWidths,
-  courierObliqueWidths,
-  courierBoldWidths,
-  courierBoldObliqueWidths,
-  helveticaWidths,
-  helveticaObliqueWidths,
-  helveticaBoldWidths,
-  helveticaBoldObliqueWidths,
-  timesRomanWidths,
-  timesItalicWidths,
-  timesBoldWidths,
-  timesBoldItalicWidths
+static StdFontMapEntry stdFontMap[] = {
+  { "Arial",                        "Helvetica" },
+  { "Arial,Bold",                   "Helvetica-Bold" },
+  { "Arial,BoldItalic",             "Helvetica-BoldOblique" },
+  { "Arial,Italic",                 "Helvetica-Oblique" },
+  { "Arial-Bold",                   "Helvetica-Bold" },
+  { "Arial-BoldItalic",             "Helvetica-BoldOblique" },
+  { "Arial-BoldItalicMT",           "Helvetica-BoldOblique" },
+  { "Arial-BoldMT",                 "Helvetica-Bold" },
+  { "Arial-Italic",                 "Helvetica-Oblique" },
+  { "Arial-ItalicMT",               "Helvetica-Oblique" },
+  { "ArialMT",                      "Helvetica" },
+  { "Courier,Bold",                 "Courier-Bold" },
+  { "Courier,Italic",               "Courier-Oblique" },
+  { "Courier,BoldItalic",           "Courier-BoldOblique" },
+  { "CourierNew",                   "Courier" },
+  { "CourierNew,Bold",              "Courier-Bold" },
+  { "CourierNew,BoldItalic",        "Courier-BoldOblique" },
+  { "CourierNew,Italic",            "Courier-Oblique" },
+  { "CourierNew-Bold",              "Courier-Bold" },
+  { "CourierNew-BoldItalic",        "Courier-BoldOblique" },
+  { "CourierNew-Italic",            "Courier-Oblique" },
+  { "CourierNewPS-BoldItalicMT",    "Courier-BoldOblique" },
+  { "CourierNewPS-BoldMT",          "Courier-Bold" },
+  { "CourierNewPS-ItalicMT",        "Courier-Oblique" },
+  { "CourierNewPSMT",               "Courier" },
+  { "Helvetica,Bold",               "Helvetica-Bold" },
+  { "Helvetica,BoldItalic",         "Helvetica-BoldOblique" },
+  { "Helvetica,Italic",             "Helvetica-Oblique" },
+  { "Helvetica-BoldItalic",         "Helvetica-BoldOblique" },
+  { "Helvetica-Italic",             "Helvetica-Oblique" },
+  { "TimesNewRoman",                "Times-Roman" },
+  { "TimesNewRoman,Bold",           "Times-Bold" },
+  { "TimesNewRoman,BoldItalic",     "Times-BoldItalic" },
+  { "TimesNewRoman,Italic",         "Times-Italic" },
+  { "TimesNewRoman-Bold",           "Times-Bold" },
+  { "TimesNewRoman-BoldItalic",     "Times-BoldItalic" },
+  { "TimesNewRoman-Italic",         "Times-Italic" },
+  { "TimesNewRomanPS",              "Times-Roman" },
+  { "TimesNewRomanPS-Bold",         "Times-Bold" },
+  { "TimesNewRomanPS-BoldItalic",   "Times-BoldItalic" },
+  { "TimesNewRomanPS-BoldItalicMT", "Times-BoldItalic" },
+  { "TimesNewRomanPS-BoldMT",       "Times-Bold" },
+  { "TimesNewRomanPS-Italic",       "Times-Italic" },
+  { "TimesNewRomanPS-ItalicMT",     "Times-Italic" },
+  { "TimesNewRomanPSMT",            "Times-Roman" }
 };
 
 //------------------------------------------------------------------------
 // GfxFont
 //------------------------------------------------------------------------
 
-GfxFont::GfxFont(char *tag1, Ref id1, Dict *fontDict) {
-  BuiltinFont *builtinFont;
-  Object obj1, obj2, obj3, obj4;
-  int missingWidth;
-  char *name2, *p;
-  int i;
+GfxFont *GfxFont::makeFont(XRef *xref, char *tagA, Ref idA, Dict *fontDict) {
+  GString *nameA;
+  GfxFont *font;
+  Object obj1;
 
-  // get font tag and ID
-  tag = new GString(tag1);
-  id = id1;
+  // get base font name
+  nameA = NULL;
+  fontDict->lookup("BaseFont", &obj1);
+  if (obj1.isName()) {
+    nameA = new GString(obj1.getName());
+  }
+  obj1.free();
 
   // get font type
-  type = fontUnknownType;
+  font = NULL;
   fontDict->lookup("Subtype", &obj1);
-  if (obj1.isName("Type1"))
-    type = fontType1;
-  else if (obj1.isName("Type1C"))
-    type = fontType1C;
-  else if (obj1.isName("Type3"))
-    type = fontType3;
-  else if (obj1.isName("TrueType"))
-    type = fontTrueType;
-  else if (obj1.isName("Type0"))
-    type = fontType0;
+  if (obj1.isName("Type1") || obj1.isName("MMType1")) {
+    font = new Gfx8BitFont(xref, tagA, idA, nameA, fontType1, fontDict);
+  } else if (obj1.isName("Type1C")) {
+    font = new Gfx8BitFont(xref, tagA, idA, nameA, fontType1C, fontDict);
+  } else if (obj1.isName("Type3")) {
+    font = new Gfx8BitFont(xref, tagA, idA, nameA, fontType3, fontDict);
+  } else if (obj1.isName("TrueType")) {
+    font = new Gfx8BitFont(xref, tagA, idA, nameA, fontTrueType, fontDict);
+  } else if (obj1.isName("Type0")) {
+    font = new GfxCIDFont(xref, tagA, idA, nameA, fontDict);
+  } else {
+    error(-1, "Unknown font type: '%s'",
+         obj1.isName() ? obj1.getName() : "???");
+    font = new Gfx8BitFont(xref, tagA, idA, nameA, fontUnknownType, fontDict);
+  }
   obj1.free();
-  is16 = gFalse;
 
-  // get base font name
-  name = NULL;
-  fontDict->lookup("BaseFont", &obj1);
-  if (obj1.isName())
-    name = new GString(obj1.getName());
-  obj1.free();
+  return font;
+}
 
-  // Newer Adobe tools are using Base14-compatible TrueType fonts
-  // without embedding them, so munge the names into the equivalent
-  // PostScript names.  This is a kludge -- it would be nice if Adobe
-  // followed their own spec.
-  if (type == fontTrueType) {
-    p = name->getCString();
-    name2 = NULL;
-    if (!strncmp(p, "Arial", 5)) {
-      if (!strcmp(p+5, ",Bold")) {
-       name2 = "Helvetica-Bold";
-      } else if (!strcmp(p+5, ",Italic")) {
-       name2 = "Helvetica-Oblique";
-      } else if (!strcmp(p+5, ",BoldItalic")) {
-       name2 = "Helvetica-BoldOblique";
-      } else {
-       name2 = "Helvetica";
-      }
-    } else if (!strncmp(p, "TimesNewRoman", 13)) {
-      if (!strcmp(p+13, ",Bold")) {
-       name2 = "Times-Bold";
-      } else if (!strcmp(p+13, ",Italic")) {
-       name2 = "Times-Italic";
-      } else if (!strcmp(p+13, ",BoldItalic")) {
-       name2 = "Times-BoldItalic";
-      } else {
-       name2 = "Times-Roman";
-      }
-    } else if (!strncmp(p, "CourierNew", 10)) {
-      if (!strcmp(p+10, ",Bold")) {
-       name2 = "Courier-Bold";
-      } else if (!strcmp(p+10, ",Italic")) {
-       name2 = "Courier-Oblique";
-      } else if (!strcmp(p+10, ",BoldItalic")) {
-       name2 = "Courier-BoldOblique";
-      } else {
-       name2 = "Courier";
-      }
-    }
-    if (name2) {
-      delete name;
-      name = new GString(name2);
-    }
-  }
+GfxFont::GfxFont(char *tagA, Ref idA, GString *nameA) {
+  ok = gFalse;
+  tag = new GString(tagA);
+  id = idA;
+  name = nameA;
+  embFontName = NULL;
+  extFontFile = NULL;
+}
 
-  // is it a built-in font?
-  builtinFont = NULL;
+GfxFont::~GfxFont() {
+  delete tag;
   if (name) {
-    for (i = 0; i < numBuiltinFonts; ++i) {
-      if (!strcmp(builtinFonts[i].name, name->getCString())) {
-       builtinFont = &builtinFonts[i];
-       break;
-      }
-    }
+    delete name;
+  }
+  if (embFontName) {
+    delete embFontName;
+  }
+  if (extFontFile) {
+    delete extFontFile;
   }
+}
+
+void GfxFont::readFontDescriptor(XRef *xref, Dict *fontDict) {
+  Object obj1, obj2, obj3, obj4;
+  double t;
+  int i;
 
   // assume Times-Roman by default (for substitution purposes)
   flags = fontSerif;
 
-  // get info from font descriptor
-  embFontName = NULL;
   embFontID.num = -1;
   embFontID.gen = -1;
   missingWidth = 0;
-  fontDict->lookup("FontDescriptor", &obj1);
-  if (obj1.isDict()) {
+
+  if (fontDict->lookup("FontDescriptor", &obj1)->isDict()) {
 
     // get flags
-    obj1.dictLookup("Flags", &obj2);
-    if (obj2.isInt())
+    if (obj1.dictLookup("Flags", &obj2)->isInt()) {
       flags = obj2.getInt();
+    }
     obj2.free();
 
     // get name
     obj1.dictLookup("FontName", &obj2);
-    if (obj2.isName())
+    if (obj2.isName()) {
       embFontName = new GString(obj2.getName());
+    }
     obj2.free();
 
     // look for embedded font file
-    if (type == fontType1) {
-      obj1.dictLookupNF("FontFile", &obj2);
-      if (obj2.isRef())
+    if (obj1.dictLookupNF("FontFile", &obj2)->isRef()) {
+      if (type == fontType1) {
        embFontID = obj2.getRef();
-      obj2.free();
+      } else {
+       error(-1, "Mismatch between font type and embedded font file");
+      }
     }
-    if (embFontID.num == -1 && type == fontTrueType) {
-      obj1.dictLookupNF("FontFile2", &obj2);
-      if (obj2.isRef())
+    obj2.free();
+    if (embFontID.num == -1 &&
+       obj1.dictLookupNF("FontFile2", &obj2)->isRef()) {
+      if (type == fontTrueType || type == fontCIDType2) {
        embFontID = obj2.getRef();
-      obj2.free();
+      } else {
+       error(-1, "Mismatch between font type and embedded font file");
+      }
     }
-    if (embFontID.num == -1) {
-      obj1.dictLookupNF("FontFile3", &obj2);
-      if (obj2.isRef()) {
-       embFontID = obj2.getRef();
-       obj2.fetch(&obj3);
-       if (obj3.isStream()) {
-         obj3.streamGetDict()->lookup("Subtype", &obj4);
-         if (obj4.isName("Type1"))
-           type = fontType1;
-         else if (obj4.isName("Type1C"))
+    obj2.free();
+    if (embFontID.num == -1 &&
+       obj1.dictLookupNF("FontFile3", &obj2)->isRef()) {
+      if (obj2.fetch(xref, &obj3)->isStream()) {
+       obj3.streamGetDict()->lookup("Subtype", &obj4);
+       if (obj4.isName("Type1")) {
+         if (type == fontType1) {
+           embFontID = obj2.getRef();
+         } else {
+           error(-1, "Mismatch between font type and embedded font file");
+         }
+       } else if (obj4.isName("Type1C")) {
+         if (type == fontType1) {
            type = fontType1C;
-         else if (obj4.isName("Type3"))
-           type = fontType3;
-         else if (obj4.isName("TrueType"))
-           type = fontTrueType;
-         else if (obj4.isName("Type0"))
-           type = fontType0;
-         obj4.free();
+           embFontID = obj2.getRef();
+         } else if (type == fontType1C) {
+           embFontID = obj2.getRef();
+         } else {
+           error(-1, "Mismatch between font type and embedded font file");
+         }
+       } else if (obj4.isName("TrueType")) {
+         if (type == fontTrueType) {
+           embFontID = obj2.getRef();
+         } else {
+           error(-1, "Mismatch between font type and embedded font file");
+         }
+       } else if (obj4.isName("CIDFontType0C")) {
+         if (type == fontCIDType0) {
+           type = fontCIDType0C;
+           embFontID = obj2.getRef();
+         } else {
+           error(-1, "Mismatch between font type and embedded font file");
+         }
+       } else {
+         error(-1, "Unknown embedded font type '%s'",
+               obj4.isName() ? obj4.getName() : "???");
        }
-       obj3.free();
+       obj4.free();
       }
-      obj2.free();
+      obj3.free();
     }
+    obj2.free();
 
     // look for MissingWidth
     obj1.dictLookup("MissingWidth", &obj2);
-    if (obj2.isInt()) {
-      missingWidth = obj2.getInt();
+    if (obj2.isNum()) {
+      missingWidth = obj2.getNum();
     }
     obj2.free();
-  }
-  obj1.free();
-
-  // get Type3 font definition
-  if (type == fontType3) {
-    fontDict->lookup("CharProcs", &charProcs);
-    if (!charProcs.isDict()) {
-      error(-1, "Missing or invalid CharProcs dictionary in Type 3 font");
-      charProcs.free();
-    }
-  }
-
-  // look for an external font file
-  extFontFile = NULL;
-  if (type == fontType1 && name)
-    findExtFontFile();
-
-  // get font matrix
-  fontMat[0] = fontMat[3] = 1;
-  fontMat[1] = fontMat[2] = fontMat[4] = fontMat[5] = 0;
-  if (fontDict->lookup("FontMatrix", &obj1)->isArray()) {
-    for (i = 0; i < 6 && i < obj1.arrayGetLength(); ++i) {
-      if (obj1.arrayGet(i, &obj2)->isNum())
-       fontMat[i] = obj2.getNum();
-      obj2.free();
-    }
-  }
-  obj1.free();
-
-  // get encoding and character widths
-  if (type == fontType0) {
-    getType0EncAndWidths(fontDict);
-  } else {
-    getEncAndWidths(fontDict, builtinFont, missingWidth);
-  }
-}
-
-GfxFont::~GfxFont() {
-  delete tag;
-  if (name) {
-    delete name;
-  }
-  if (!is16 && encoding) {
-    delete encoding;
-  }
-  if (embFontName) {
-    delete embFontName;
-  }
-  if (extFontFile) {
-    delete extFontFile;
-  }
-  if (charProcs.isDict()) {
-    charProcs.free();
-  }
-  if (is16) {
-    gfree(widths16.exceps);
-    gfree(widths16.excepsV);
-  }
-}
-
-double GfxFont::getWidth(GString *s) {
-  double w;
-  int i;
 
-  w = 0;
-  for (i = 0; i < s->getLength(); ++i)
-    w += widths[s->getChar(i) & 0xff];
-  return w;
-}
-
-double GfxFont::getWidth16(int c) {
-  double w;
-  int a, b, m;
-
-  w = widths16.defWidth;
-  a = -1;
-  b = widths16.numExceps;
-  // invariant: widths16.exceps[a].last < c < widths16.exceps[b].first
-  while (b - a > 1) {
-    m = (a + b) / 2;
-    if (widths16.exceps[m].last < c) {
-      a = m;
-    } else if (c < widths16.exceps[m].first) {
-      b = m;
-    } else {
-      w = widths16.exceps[m].width;
-      break;
-    }
-  }
-  return w;
-}
-
-double GfxFont::getHeight16(int c) {
-  double h;
-  int a, b, m;
-
-  h = widths16.defHeight;
-  a = -1;
-  b = widths16.numExcepsV;
-  // invariant: widths16.excepsV[a].last < c < widths16.excepsV[b].first
-  while (b - a > 1) {
-    m = (a + b) / 2;
-    if (widths16.excepsV[m].last < c) {
-      a = m;
-    } else if (c < widths16.excepsV[m].first) {
-      b = m;
-    } else {
-      h = widths16.excepsV[m].height;
-      break;
-    }
-  }
-  return h;
-}
-
-double GfxFont::getOriginX16(int c) {
-  double vx;
-  int a, b, m;
-
-  vx = widths16.defWidth / 2;
-  a = -1;
-  b = widths16.numExcepsV;
-  // invariant: widths16.excepsV[a].last < c < widths16.excepsV[b].first
-  while (b - a > 1) {
-    m = (a + b) / 2;
-    if (widths16.excepsV[m].last < c) {
-      a = m;
-    } else if (c < widths16.excepsV[m].first) {
-      b = m;
-    } else {
-      vx = widths16.excepsV[m].vx;
-      break;
-    }
-  }
-  return vx;
-}
-
-double GfxFont::getOriginY16(int c) {
-  double vy;
-  int a, b, m;
-
-  vy = widths16.defVY;
-  a = -1;
-  b = widths16.numExcepsV;
-  // invariant: widths16.excepsV[a].last < c < widths16.excepsV[b].first
-  while (b - a > 1) {
-    m = (a + b) / 2;
-    if (widths16.excepsV[m].last < c) {
-      a = m;
-    } else if (c < widths16.excepsV[m].first) {
-      b = m;
-    } else {
-      vy = widths16.excepsV[m].vy;
-      break;
-    }
-  }
-  return vy;
-}
-
-Object *GfxFont::getCharProc(int code, Object *proc) {
-  if (charProcs.isDict()) {
-    charProcs.dictLookup(encoding->getCharName(code), proc);
-  } else {
-    proc->initNull();
-  }
-  return proc;
-}
-
-void GfxFont::getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont,
-                             int missingWidth) {
-  Object obj1, obj2, obj3;
-  char *buf;
-  int len;
-  FontFile *fontFile;
-  int code, i;
-
-  // Encodings start with a base encoding, which can come from
-  // (in order of priority):
-  //   1. FontDict.Encoding or FontDict.Encoding.BaseEncoding
-  //        - MacRoman / WinAnsi / Standard
-  //   2. embedded font file
-  //   3. default:
-  //        - builtin --> builtin encoding
-  //        - TrueType --> MacRomanEncoding
-  //        - others --> StandardEncoding
-  // and then add a list of differences from
-  // FontDict.Encoding.Differences.
-
-  // check FontDict for base encoding
-  encoding = NULL;
-  fontDict->lookup("Encoding", &obj1);
-  if (obj1.isDict()) {
-    obj1.dictLookup("BaseEncoding", &obj2);
-    if (obj2.isName("MacRomanEncoding")) {
-      encoding = macRomanEncoding.copy();
-    } else if (obj2.isName("WinAnsiEncoding")) {
-      encoding = winAnsiEncoding.copy();
-    } else if (obj2.isName("StandardEncoding")) {
-      encoding = standardEncoding.copy();
+    // get Ascent and Descent
+    obj1.dictLookup("Ascent", &obj2);
+    if (obj2.isNum()) {
+      t = 0.001 * obj2.getNum();
+      // some broken font descriptors set ascent and descent to 0
+      if (t != 0) {
+       ascent = t;
+      }
     }
     obj2.free();
-  } else if (obj1.isName("MacRomanEncoding")) {
-    encoding = macRomanEncoding.copy();
-  } else if (obj1.isName("WinAnsiEncoding")) {
-    encoding = winAnsiEncoding.copy();
-  } else if (obj1.isName("StandardEncoding")) {
-    encoding = standardEncoding.copy();
-  }
-  obj1.free();
-
-  // check embedded or external font file for base encoding
-  if ((type == fontType1 || type == fontType1C) &&
-      (extFontFile || embFontID.num >= 0)) {
-    if (extFontFile)
-      buf = readExtFontFile(&len);
-    else
-      buf = readEmbFontFile(&len);
-    if (buf) {
-      if (type == fontType1)
-       fontFile = new Type1FontFile(buf, len);
-      else
-       fontFile = new Type1CFontFile(buf, len);
-      if (fontFile->getName()) {
-       if (embFontName)
-         delete embFontName;
-       embFontName = new GString(fontFile->getName());
+    obj1.dictLookup("Descent", &obj2);
+    if (obj2.isNum()) {
+      t = 0.001 * obj2.getNum();
+      // some broken font descriptors set ascent and descent to 0
+      if (t != 0) {
+       descent = t;
       }
-      if (!encoding)
-       encoding = fontFile->getEncoding(gTrue);
-      delete fontFile;
-      gfree(buf);
     }
-  }
-
-  // get default base encoding
-  if (!encoding) {
-    if (builtinFont)
-      encoding = builtinFont->encoding->copy();
-    else if (type == fontTrueType)
-      encoding = macRomanEncoding.copy();
-    else
-      encoding = standardEncoding.copy();
-  }
+    obj2.free();
 
-  // merge differences into encoding
-  fontDict->lookup("Encoding", &obj1);
-  if (obj1.isDict()) {
-    obj1.dictLookup("Differences", &obj2);
-    if (obj2.isArray()) {
-      code = 0;
-      for (i = 0; i < obj2.arrayGetLength(); ++i) {
-       obj2.arrayGet(i, &obj3);
-       if (obj3.isInt()) {
-         code = obj3.getInt();
-       } else if (obj3.isName()) {
-         if (code < 256)
-           encoding->addChar(code, copyString(obj3.getName()));
-         ++code;
-       } else {
-         error(-1, "Wrong type in font encoding resource differences (%s)",
-               obj3.getTypeName());
+    // font FontBBox
+    if (obj1.dictLookup("FontBBox", &obj2)->isArray()) {
+      for (i = 0; i < 4 && i < obj2.arrayGetLength(); ++i) {
+       if (obj2.arrayGet(i, &obj3)->isNum()) {
+         fontBBox[i] = 0.001 * obj3.getNum();
        }
        obj3.free();
       }
     }
     obj2.free();
+
   }
   obj1.free();
+}
+
+CharCodeToUnicode *GfxFont::readToUnicodeCMap(Dict *fontDict, int nBits) {
+  CharCodeToUnicode *ctu;
+  GString *buf;
+  Object obj1;
+  int c;
 
-  // get character widths
-  if (builtinFont)
-    makeWidths(fontDict, builtinFont->encoding, builtinFont->widths,
-              missingWidth);
-  else
-    makeWidths(fontDict, NULL, NULL, missingWidth);
+  if (!fontDict->lookup("ToUnicode", &obj1)->isStream()) {
+    obj1.free();
+    return NULL;
+  }
+  buf = new GString();
+  obj1.streamReset();
+  while ((c = obj1.streamGetChar()) != EOF) {
+    buf->append(c);
+  }
+  obj1.streamClose();
+  obj1.free();
+  ctu = CharCodeToUnicode::parseCMap(buf, nBits);
+  delete buf;
+  return ctu;
 }
 
 void GfxFont::findExtFontFile() {
-  char **path;
-  FILE *f;
-
-  for (path = fontPath; *path; ++path) {
-    extFontFile = appendToPath(new GString(*path), name->getCString());
-    f = fopen(extFontFile->getCString(), "rb");
-    if (!f) {
-      extFontFile->append(".pfb");
-      f = fopen(extFontFile->getCString(), "rb");
-    }
-    if (!f) {
-      extFontFile->del(extFontFile->getLength() - 4, 4);
-      extFontFile->append(".pfa");
-      f = fopen(extFontFile->getCString(), "rb");
-    }
-    if (f) {
-      fclose(f);
-      break;
+  if (name) {
+    if (type == fontType1) {
+      extFontFile = globalParams->findFontFile(name, ".pfa", ".pfb");
+    } else if (type == fontTrueType) {
+      extFontFile = globalParams->findFontFile(name, ".ttf", NULL);
     }
-    delete extFontFile;
-    extFontFile = NULL;
   }
 }
 
@@ -525,20 +310,21 @@ char *GfxFont::readExtFontFile(int *len) {
   char *buf;
 
   if (!(f = fopen(extFontFile->getCString(), "rb"))) {
-    error(-1, "Internal: external font file '%s' vanished", extFontFile);
+    error(-1, "External font file '%s' vanished", extFontFile->getCString());
     return NULL;
   }
   fseek(f, 0, SEEK_END);
   *len = (int)ftell(f);
   fseek(f, 0, SEEK_SET);
   buf = (char *)gmalloc(*len);
-  if ((int)fread(buf, 1, *len, f) != *len)
+  if ((int)fread(buf, 1, *len, f) != *len) {
     error(-1, "Error reading external font file '%s'", extFontFile);
+  }
   fclose(f);
   return buf;
 }
 
-char *GfxFont::readEmbFontFile(int *len) {
+char *GfxFont::readEmbFontFile(XRef *xref, int *len) {
   char *buf;
   Object obj1, obj2;
   Stream *str;
@@ -546,7 +332,7 @@ char *GfxFont::readEmbFontFile(int *len) {
   int size, i;
 
   obj1.initRef(embFontID.num, embFontID.gen);
-  obj1.fetch(&obj2);
+  obj1.fetch(xref, &obj2);
   if (!obj2.isStream()) {
     error(-1, "Embedded font file is not a stream");
     obj2.free();
@@ -575,410 +361,883 @@ char *GfxFont::readEmbFontFile(int *len) {
   return buf;
 }
 
-void GfxFont::makeWidths(Dict *fontDict, FontEncoding *builtinEncoding,
-                        Gushort *builtinWidths, int missingWidth) {
-  Object obj1, obj2;
-  int firstChar, lastChar;
+//------------------------------------------------------------------------
+// Gfx8BitFont
+//------------------------------------------------------------------------
+
+Gfx8BitFont::Gfx8BitFont(XRef *xref, char *tagA, Ref idA, GString *nameA,
+                        GfxFontType typeA, Dict *fontDict):
+  GfxFont(tagA, idA, nameA)
+{
+  BuiltinFont *builtinFont;
+  char **baseEnc;
+  GBool baseEncFromFontFile;
+  char *buf;
+  int len;
+  FontFile *fontFile;
   int code, code2;
   char *charName;
-  Gushort *defWidths;
-  int index;
-  double mult;
+  GBool missing, hex;
+  Unicode toUnicode[256];
+  double mul;
+  int firstChar, lastChar;
+  Gushort w;
+  Object obj1, obj2, obj3;
+  int n, i, a, b, m;
 
-  // initialize all widths
-  for (code = 0; code < 256; ++code) {
-    widths[code] = missingWidth * 0.001;
-  }
+  type = typeA;
+  ctu = NULL;
 
-  // use widths from built-in font
-  if (builtinEncoding) {
-    code2 = 0; // to make gcc happy
-    for (code = 0; code < 256; ++code) {
-      if ((charName = encoding->getCharName(code)) &&
-         (code2 = builtinEncoding->getCharCode(charName)) >= 0)
-       widths[code] = builtinWidths[code2] * 0.001;
+  // Acrobat 4.0 and earlier substituted Base14-compatible fonts
+  // without providing Widths and a FontDescriptor, so we munge the
+  // names into the proper Base14 names.  (This table is from
+  // implementation note 44 in the PDF 1.4 spec.)
+  if (name) {
+    a = 0;
+    b = sizeof(stdFontMap) / sizeof(StdFontMapEntry);
+    // invariant: stdFontMap[a].altName <= name < stdFontMap[b].altName
+    while (b - a > 1) {
+      m = (a + b) / 2;
+      if (name->cmp(stdFontMap[m].altName) >= 0) {
+       a = m;
+      } else {
+       b = m;
+      }
+    }
+    if (!name->cmp(stdFontMap[a].altName)) {
+      delete name;
+      name = new GString(stdFontMap[a].properName);
     }
+  }
 
-  // get widths from font dict
+  // is it a built-in font?
+  builtinFont = NULL;
+  if (name) {
+    for (i = 0; i < nBuiltinFonts; ++i) {
+      if (!name->cmp(builtinFonts[i].name)) {
+       builtinFont = &builtinFonts[i];
+       break;
+      }
+    }
+  }
+
+  // default ascent/descent values
+  if (builtinFont) {
+    ascent = 0.001 * builtinFont->ascent;
+    descent = 0.001 * builtinFont->descent;
+    fontBBox[0] = 0.001 * builtinFont->bbox[0];
+    fontBBox[1] = 0.001 * builtinFont->bbox[1];
+    fontBBox[2] = 0.001 * builtinFont->bbox[2];
+    fontBBox[3] = 0.001 * builtinFont->bbox[3];
   } else {
-    fontDict->lookup("FirstChar", &obj1);
-    firstChar = obj1.isInt() ? obj1.getInt() : 0;
-    obj1.free();
-    fontDict->lookup("LastChar", &obj1);
-    lastChar = obj1.isInt() ? obj1.getInt() : 255;
-    obj1.free();
-    if (type == fontType3)
-      mult = fontMat[0];
-    else
-      mult = 0.001;
-    fontDict->lookup("Widths", &obj1);
-    if (obj1.isArray()) {
-      for (code = firstChar; code <= lastChar; ++code) {
-       obj1.arrayGet(code - firstChar, &obj2);
-       if (obj2.isNum())
-         widths[code] = obj2.getNum() * mult;
+    ascent = 0.95;
+    descent = -0.35;
+    fontBBox[0] = fontBBox[1] = fontBBox[2] = fontBBox[3] = 0;
+  }
+
+  // get info from font descriptor
+  readFontDescriptor(xref, fontDict);
+
+  // look for an external font file
+  findExtFontFile();
+
+  // get font matrix
+  fontMat[0] = fontMat[3] = 1;
+  fontMat[1] = fontMat[2] = fontMat[4] = fontMat[5] = 0;
+  if (fontDict->lookup("FontMatrix", &obj1)->isArray()) {
+    for (i = 0; i < 6 && i < obj1.arrayGetLength(); ++i) {
+      if (obj1.arrayGet(i, &obj2)->isNum()) {
+       fontMat[i] = obj2.getNum();
+      }
+      obj2.free();
+    }
+  }
+  obj1.free();
+
+  // get Type 3 bounding box, font definition, and resources
+  if (type == fontType3) {
+    if (fontDict->lookup("FontBBox", &obj1)->isArray()) {
+      for (i = 0; i < 4 && i < obj1.arrayGetLength(); ++i) {
+       if (obj1.arrayGet(i, &obj2)->isNum()) {
+         fontBBox[i] = obj2.getNum();
+       }
        obj2.free();
       }
+    }
+    obj1.free();
+    if (!fontDict->lookup("CharProcs", &charProcs)->isDict()) {
+      error(-1, "Missing or invalid CharProcs dictionary in Type 3 font");
+      charProcs.free();
+    }
+    if (!fontDict->lookup("Resources", &resources)->isDict()) {
+      resources.free();
+    }
+  }
+
+  //----- build the font encoding -----
+
+  // Encodings start with a base encoding, which can come from
+  // (in order of priority):
+  //   1. FontDict.Encoding or FontDict.Encoding.BaseEncoding
+  //        - MacRoman / MacExpert / WinAnsi / Standard
+  //   2. embedded or external font file
+  //   3. default:
+  //        - builtin --> builtin encoding
+  //        - TrueType --> MacRomanEncoding
+  //        - others --> StandardEncoding
+  // and then add a list of differences (if any) from
+  // FontDict.Encoding.Differences.
+
+  // check FontDict for base encoding
+  hasEncoding = gFalse;
+  baseEnc = NULL;
+  baseEncFromFontFile = gFalse;
+  fontDict->lookup("Encoding", &obj1);
+  if (obj1.isDict()) {
+    obj1.dictLookup("BaseEncoding", &obj2);
+    if (obj2.isName("MacRomanEncoding")) {
+      hasEncoding = gTrue;
+      baseEnc = macRomanEncoding;
+    } else if (obj2.isName("MacExpertEncoding")) {
+      hasEncoding = gTrue;
+      baseEnc = macExpertEncoding;
+    } else if (obj2.isName("WinAnsiEncoding")) {
+      hasEncoding = gTrue;
+      baseEnc = winAnsiEncoding;
+    } else if (obj2.isName("StandardEncoding")) {
+      hasEncoding = gTrue;
+      baseEnc = standardEncoding;
+    }
+    obj2.free();
+  } else if (obj1.isName("MacRomanEncoding")) {
+    hasEncoding = gTrue;
+    baseEnc = macRomanEncoding;
+  } else if (obj1.isName("MacExpertEncoding")) {
+    hasEncoding = gTrue;
+    baseEnc = macExpertEncoding;
+  } else if (obj1.isName("WinAnsiEncoding")) {
+    hasEncoding = gTrue;
+    baseEnc = winAnsiEncoding;
+  } else if (obj1.isName("StandardEncoding")) {
+    hasEncoding = gTrue;
+    baseEnc = standardEncoding;
+  }
+
+  // check embedded or external font file for base encoding
+  // (only for Type 1 fonts - trying to get an encoding out of a
+  // TrueType font is a losing proposition)
+  fontFile = NULL;
+  buf = NULL;
+  if ((type == fontType1 || type == fontType1C) &&
+      (extFontFile || embFontID.num >= 0)) {
+    if (extFontFile) {
+      buf = readExtFontFile(&len);
+    } else {
+      buf = readEmbFontFile(xref, &len);
+    }
+    if (buf) {
+      if (type == fontType1C && !strncmp(buf, "%!", 2)) {
+       // various tools (including Adobe's) occasionally embed Type 1
+       // fonts but label them Type 1C
+       type = fontType1;
+      }
+      if (type == fontType1) {
+       fontFile = new Type1FontFile(buf, len);
+      } else {
+       fontFile = new Type1CFontFile(buf, len);
+      }
+      if (fontFile->getName()) {
+       if (embFontName) {
+         delete embFontName;
+       }
+       embFontName = new GString(fontFile->getName());
+      }
+      if (!baseEnc) {
+       baseEnc = fontFile->getEncoding();
+       baseEncFromFontFile = gTrue;
+      }
+      gfree(buf);
+    }
+  }
+
+  // get default base encoding
+  if (!baseEnc) {
+    if (builtinFont) {
+      baseEnc = builtinFont->defaultBaseEnc;
+    } else if (type == fontTrueType) {
+      baseEnc = macRomanEncoding;
     } else {
+      baseEnc = standardEncoding;
+    }
+  }
 
-      // couldn't find widths -- use defaults 
-#if 0 //~
-      //~ certain PDF generators apparently don't include widths
-      //~ for Arial and TimesNewRoman -- and this error message
-      //~ is a nuisance
-      error(-1, "No character widths resource for non-builtin font");
-#endif
-      if (isFixedWidth())
-       index = 0;
-      else if (isSerif())
-       index = 8;
-      else
-       index = 4;
-      if (isBold())
-       index += 2;
-      if (isItalic())
-       index += 1;
-      defWidths = defCharWidths[index];
-      code2 = 0; // to make gcc happy
+  // copy the base encoding
+  for (i = 0; i < 256; ++i) {
+    enc[i] = baseEnc[i];
+    if ((encFree[i] = baseEncFromFontFile) && enc[i]) {
+      enc[i] = copyString(baseEnc[i]);
+    }
+  }
+
+  // merge differences into encoding
+  if (obj1.isDict()) {
+    obj1.dictLookup("Differences", &obj2);
+    if (obj2.isArray()) {
+      hasEncoding = gTrue;
+      code = 0;
+      for (i = 0; i < obj2.arrayGetLength(); ++i) {
+       obj2.arrayGet(i, &obj3);
+       if (obj3.isInt()) {
+         code = obj3.getInt();
+       } else if (obj3.isName()) {
+         if (code < 256) {
+           if (encFree[code]) {
+             gfree(enc[code]);
+           }
+           enc[code] = copyString(obj3.getName());
+           encFree[code] = gTrue;
+         }
+         ++code;
+       } else {
+         error(-1, "Wrong type in font encoding resource differences (%s)",
+               obj3.getTypeName());
+       }
+       obj3.free();
+      }
+    }
+    obj2.free();
+  }
+  obj1.free();
+  if (fontFile) {
+    delete fontFile;
+  }
+
+  //----- build the mapping to Unicode -----
+
+  // look for a ToUnicode CMap
+  if (!(ctu = readToUnicodeCMap(fontDict, 8))) {
+
+    // no ToUnicode CMap, so use the char names
+
+    // pass 1: use the name-to-Unicode mapping table
+    missing = hex = gFalse;
+    for (code = 0; code < 256; ++code) {
+      if ((charName = enc[code])) {
+       if (!(toUnicode[code] = globalParams->mapNameToUnicode(charName)) &&
+           strcmp(charName, ".notdef")) {
+         // if it wasn't in the name-to-Unicode table, check for a
+         // name that looks like 'Axx' or 'xx', where 'A' is any letter
+         // and 'xx' is two hex digits
+         if ((strlen(charName) == 3 &&
+              isalpha(charName[0]) &&
+              isxdigit(charName[1]) && isxdigit(charName[2]) &&
+              ((charName[1] >= 'a' && charName[1] <= 'f') ||
+               (charName[1] >= 'A' && charName[1] <= 'F') ||
+               (charName[2] >= 'a' && charName[2] <= 'f') ||
+               (charName[2] >= 'A' && charName[2] <= 'F'))) ||
+             (strlen(charName) == 2 &&
+              isxdigit(charName[0]) && isxdigit(charName[1]) &&
+              ((charName[0] >= 'a' && charName[0] <= 'f') ||
+               (charName[0] >= 'A' && charName[0] <= 'F') ||
+               (charName[1] >= 'a' && charName[1] <= 'f') ||
+               (charName[1] >= 'A' && charName[1] <= 'F')))) {
+           hex = gTrue;
+         }
+         missing = gTrue;
+       }
+      } else {
+       toUnicode[code] = 0;
+      }
+    }
+
+    // pass 2: try to fill in the missing chars, looking for names of
+    // the form 'Axx', 'xx', 'Ann', 'ABnn', or 'nn', where 'A' and 'B'
+    // are any letters, 'xx' is two hex digits, and 'nn' is 2-4
+    // decimal digits
+    if (missing && globalParams->getMapNumericCharNames()) {
       for (code = 0; code < 256; ++code) {
-       if ((charName = encoding->getCharName(code)) &&
-           (code2 = standardEncoding.getCharCode(charName)) >= 0)
-         widths[code] = defWidths[code2] * 0.001;
+       if ((charName = enc[code]) && !toUnicode[code] &&
+           strcmp(charName, ".notdef")) {
+         n = strlen(charName);
+         code2 = -1;
+         if (hex && n == 3 && isalpha(charName[0]) &&
+             isxdigit(charName[1]) && isxdigit(charName[2])) {
+           sscanf(charName+1, "%x", &code2);
+         } else if (hex && n == 2 &&
+                    isxdigit(charName[0]) && isxdigit(charName[1])) {
+           sscanf(charName, "%x", &code2);
+         } else if (!hex && n >= 2 && n <= 4 &&
+                    isdigit(charName[0]) && isdigit(charName[1])) {
+           code2 = atoi(charName);
+         } else if (n >= 3 && n <= 5 &&
+                    isdigit(charName[1]) && isdigit(charName[2])) {
+           code2 = atoi(charName+1);
+         } else if (n >= 4 && n <= 6 &&
+                    isdigit(charName[2]) && isdigit(charName[3])) {
+           code2 = atoi(charName+2);
+         }
+         if (code2 >= 0 && code2 <= 0xff) {
+           toUnicode[code] = (Unicode)code2;
+         }
+       }
       }
     }
-    obj1.free();
+
+    ctu = CharCodeToUnicode::make8BitToUnicode(toUnicode);
+  }
+
+  //----- get the character widths -----
+
+  // initialize all widths
+  for (code = 0; code < 256; ++code) {
+    widths[code] = missingWidth * 0.001;
+  }
+
+  // use widths from font dict, if present
+  fontDict->lookup("FirstChar", &obj1);
+  firstChar = obj1.isInt() ? obj1.getInt() : 0;
+  obj1.free();
+  fontDict->lookup("LastChar", &obj1);
+  lastChar = obj1.isInt() ? obj1.getInt() : 255;
+  obj1.free();
+  mul = (type == fontType3) ? fontMat[0] : 0.001;
+  fontDict->lookup("Widths", &obj1);
+  if (obj1.isArray()) {
+    flags |= fontFixedWidth;
+    for (code = firstChar; code <= lastChar; ++code) {
+      obj1.arrayGet(code - firstChar, &obj2);
+      if (obj2.isNum()) {
+       widths[code] = obj2.getNum() * mul;
+       if (widths[code] != widths[firstChar]) {
+         flags &= ~fontFixedWidth;
+       }
+      }
+      obj2.free();
+    }
+
+  // use widths from built-in font
+  } else if (builtinFont) {
+    // this is a kludge for broken PDF files that encode char 32
+    // as .notdef
+    if (builtinFont->widths->getWidth("space", &w)) {
+      widths[32] = 0.001 * w;
+    }
+    for (code = 0; code < 256; ++code) {
+      if (enc[code] && builtinFont->widths->getWidth(enc[code], &w)) {
+       widths[code] = 0.001 * w;
+      }
+    }
+
+  // couldn't find widths -- use defaults 
+  } else {
+    // this is technically an error -- the Widths entry is required
+    // for all but the Base-14 fonts -- but certain PDF generators
+    // apparently don't include widths for Arial and TimesNewRoman
+    if (isFixedWidth()) {
+      i = 0;
+    } else if (isSerif()) {
+      i = 8;
+    } else {
+      i = 4;
+    }
+    if (isBold()) {
+      i += 2;
+    }
+    if (isItalic()) {
+      i += 1;
+    }
+    builtinFont = builtinFontSubst[i];
+    // this is a kludge for broken PDF files that encode char 32
+    // as .notdef
+    if (builtinFont->widths->getWidth("space", &w)) {
+      widths[32] = 0.001 * w;
+    }
+    for (code = 0; code < 256; ++code) {
+      if (enc[code] && builtinFont->widths->getWidth(enc[code], &w)) {
+       widths[code] = 0.001 * w;
+      }
+    }
+  }
+  obj1.free();
+
+  ok = gTrue;
+}
+
+Gfx8BitFont::~Gfx8BitFont() {
+  int i;
+
+  for (i = 0; i < 256; ++i) {
+    if (encFree[i] && enc[i]) {
+      gfree(enc[i]);
+    }
+  }
+  ctu->decRefCnt();
+  if (charProcs.isDict()) {
+    charProcs.free();
+  }
+  if (resources.isDict()) {
+    resources.free();
   }
 }
 
-void GfxFont::getType0EncAndWidths(Dict *fontDict) {
-  Object obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8;
-  int excepsSize;
-  int i, j, k, n;
+int Gfx8BitFont::getNextChar(char *s, int len, CharCode *code,
+                            Unicode *u, int uSize, int *uLen,
+                            double *dx, double *dy, double *ox, double *oy) {
+  CharCode c;
 
-  widths16.exceps = NULL;
-  widths16.excepsV = NULL;
+  *code = c = (CharCode)(*s & 0xff);
+  *uLen = ctu->mapToUnicode(c, u, uSize);
+  *dx = widths[c];
+  *dy = *ox = *oy = 0;
+  return 1;
+}
 
-  // get the CIDFont
-  fontDict->lookup("DescendantFonts", &obj1);
-  if (!obj1.isArray() || obj1.arrayGetLength() != 1) {
-    error(-1, "Bad DescendantFonts entry for Type 0 font");
+CharCodeToUnicode *Gfx8BitFont::getToUnicode() {
+  ctu->incRefCnt();
+  return ctu;
+}
+
+Dict *Gfx8BitFont::getCharProcs() {
+  return charProcs.isDict() ? charProcs.getDict() : (Dict *)NULL;
+}
+
+Object *Gfx8BitFont::getCharProc(int code, Object *proc) {
+  if (charProcs.isDict()) {
+    charProcs.dictLookup(enc[code], proc);
+  } else {
+    proc->initNull();
+  }
+  return proc;
+}
+
+Dict *Gfx8BitFont::getResources() {
+  return resources.isDict() ? resources.getDict() : (Dict *)NULL;
+}
+
+//------------------------------------------------------------------------
+// GfxCIDFont
+//------------------------------------------------------------------------
+
+static int cmpWidthExcep(const void *w1, const void *w2) {
+  return ((GfxFontCIDWidthExcep *)w1)->first -
+         ((GfxFontCIDWidthExcep *)w2)->first;
+}
+
+static int cmpWidthExcepV(const void *w1, const void *w2) {
+  return ((GfxFontCIDWidthExcepV *)w1)->first -
+         ((GfxFontCIDWidthExcepV *)w2)->first;
+}
+
+GfxCIDFont::GfxCIDFont(XRef *xref, char *tagA, Ref idA, GString *nameA,
+                      Dict *fontDict):
+  GfxFont(tagA, idA, nameA)
+{
+  Dict *desFontDict;
+  GString *collection, *cMapName;
+  Object desFontDictObj;
+  Object obj1, obj2, obj3, obj4, obj5, obj6;
+  int c1, c2;
+  int excepsSize, i, j, k;
+
+  ascent = 0.95;
+  descent = -0.35;
+  fontBBox[0] = fontBBox[1] = fontBBox[2] = fontBBox[3] = 0;
+  cMap = NULL;
+  ctu = NULL;
+  widths.defWidth = 1.0;
+  widths.defHeight = -1.0;
+  widths.defVY = 0.880;
+  widths.exceps = NULL;
+  widths.nExceps = 0;
+  widths.excepsV = NULL;
+  widths.nExcepsV = 0;
+  cidToGID = NULL;
+  cidToGIDLen = 0;
+
+  // get the descendant font
+  if (!fontDict->lookup("DescendantFonts", &obj1)->isArray()) {
+    error(-1, "Missing DescendantFonts entry in Type 0 font");
+    obj1.free();
     goto err1;
   }
-  obj1.arrayGet(0, &obj2);
-  if (!obj2.isDict()) {
-    error(-1, "Bad descendant font of Type 0 font");
-    goto err2;
+  if (!obj1.arrayGet(0, &desFontDictObj)->isDict()) {
+    error(-1, "Bad descendant font in Type 0 font");
+    goto err3;
   }
+  obj1.free();
+  desFontDict = desFontDictObj.getDict();
 
-  // get font info
-  obj2.dictLookup("CIDSystemInfo", &obj3);
-  if (!obj3.isDict()) {
-    error(-1, "Bad CIDSystemInfo in Type 0 font descendant");
+  // font type
+  if (!desFontDict->lookup("Subtype", &obj1)) {
+    error(-1, "Missing Subtype entry in Type 0 descendant font");
     goto err3;
   }
-  obj3.dictLookup("Registry", &obj4);
-  obj3.dictLookup("Ordering", &obj5);
-  if (obj4.isString() && obj5.isString()) {
-    if (obj4.getString()->cmp("Adobe") == 0 &&
-       obj5.getString()->cmp("Japan1") == 0) {
-#if JAPANESE_SUPPORT
-      is16 = gTrue;
-      enc16.charSet = font16AdobeJapan12;
-#else
-      error(-1, "Xpdf was compiled without Japanese font support");
-      goto err4;
-#endif
-    } else if (obj4.getString()->cmp("Adobe") == 0 &&
-              obj5.getString()->cmp("GB1") == 0) {
-#if CHINESE_GB_SUPPORT
-      is16 = gTrue;
-      enc16.charSet = font16AdobeGB12;
-#else
-      error(-1, "Xpdf was compiled without Chinese GB font support");
-      goto err4;
-#endif
-    } else if (obj4.getString()->cmp("Adobe") == 0 &&
-              obj5.getString()->cmp("CNS1") == 0) {
-#if CHINESE_CNS_SUPPORT
-      is16 = gTrue;
-      enc16.charSet = font16AdobeCNS13;
-#else
-      error(-1, "Xpdf was compiled without Chinese CNS font support");
-      goto err4;
-#endif
-    } else {
-      error(-1, "Uknown Type 0 character set: %s-%s",
-           obj4.getString()->getCString(), obj5.getString()->getCString());
-      goto err4;
-    }
+  if (obj1.isName("CIDFontType0")) {
+    type = fontCIDType0;
+  } else if (obj1.isName("CIDFontType2")) {
+    type = fontCIDType2;
   } else {
-    error(-1, "Unknown Type 0 character set");
+    error(-1, "Unknown Type 0 descendant font type '%s'",
+         obj1.isName() ? obj1.getName() : "???");
+    goto err3;
+  }
+  obj1.free();
+
+  // get info from font descriptor
+  readFontDescriptor(xref, desFontDict);
+
+  // look for an external font file
+  findExtFontFile();
+
+  //----- encoding info -----
+
+  // char collection
+  if (!desFontDict->lookup("CIDSystemInfo", &obj1)->isDict()) {
+    error(-1, "Missing CIDSystemInfo dictionary in Type 0 descendant font");
+    goto err3;
+  }
+  obj1.dictLookup("Registry", &obj2);
+  obj1.dictLookup("Ordering", &obj3);
+  if (!obj2.isString() || !obj3.isString()) {
+    error(-1, "Invalid CIDSystemInfo dictionary in Type 0 descendant font");
     goto err4;
   }
-  obj5.free();
-  obj4.free();
+  collection = obj2.getString()->copy()->append('-')->append(obj3.getString());
   obj3.free();
+  obj2.free();
+  obj1.free();
 
-  // get default char width
-  obj2.dictLookup("DW", &obj3);
-  if (obj3.isInt())
-    widths16.defWidth = obj3.getInt() * 0.001;
-  else
-    widths16.defWidth = 1.0;
-  obj3.free();
+  // look for a ToUnicode CMap
+  if (!(ctu = readToUnicodeCMap(fontDict, 16))) {
+
+    // the "Adobe-Identity" and "Adobe-UCS" collections don't have
+    // cidToUnicode files
+    if (collection->cmp("Adobe-Identity") &&
+       collection->cmp("Adobe-UCS")) {
 
-  // get default char metrics for vertical font
-  obj2.dictLookup("DW2", &obj3);
-  widths16.defVY = 0.880;
-  widths16.defHeight = -1;
-  if (obj3.isArray() && obj3.arrayGetLength() == 2) {
-    obj3.arrayGet(0, &obj4);
-    if (obj4.isInt()) {
-      widths16.defVY = obj4.getInt() * 0.001;
+      // look for a user-supplied .cidToUnicode file
+      if (!(ctu = globalParams->getCIDToUnicode(collection))) {
+       error(-1, "Unknown character collection '%s'",
+             collection->getCString());
+       delete collection;
+       goto err2;
+      }
     }
-    obj4.free();
-    obj3.arrayGet(1, &obj4);
-    if (obj4.isInt()) {
-      widths16.defHeight = obj4.getInt() * 0.001;
+  }
+
+  // encoding (i.e., CMap)
+  //~ need to handle a CMap stream here
+  //~ also need to deal with the UseCMap entry in the stream dict
+  if (!fontDict->lookup("Encoding", &obj1)->isName()) {
+    error(-1, "Missing or invalid Encoding entry in Type 0 font");
+    delete collection;
+    goto err3;
+  }
+  cMapName = new GString(obj1.getName());
+  obj1.free();
+  if (!(cMap = globalParams->getCMap(collection, cMapName))) {
+    error(-1, "Unknown CMap '%s' for character collection '%s'",
+         cMapName->getCString(), collection->getCString());
+    delete collection;
+    delete cMapName;
+    goto err2;
+  }
+  delete collection;
+  delete cMapName;
+
+  // CIDToGIDMap (for embedded TrueType fonts)
+  if (type == fontCIDType2) {
+    fontDict->lookup("CIDToGIDMap", &obj1);
+    if (obj1.isStream()) {
+      cidToGIDLen = 0;
+      i = 64;
+      cidToGID = (Gushort *)gmalloc(i * sizeof(Gushort));
+      obj1.streamReset();
+      while ((c1 = obj1.streamGetChar()) != EOF &&
+            (c2 = obj1.streamGetChar()) != EOF) {
+       if (cidToGIDLen == i) {
+         i *= 2;
+         cidToGID = (Gushort *)grealloc(cidToGID, i * sizeof(Gushort));
+       }
+       cidToGID[cidToGIDLen++] = (Gushort)((c1 << 8) + c2);
+      }
+    } else if (!obj1.isName("Identity") && !obj1.isNull()) {
+      error(-1, "Invalid CIDToGIDMap entry in CID font");
     }
-    obj4.free();
+    obj1.free();
   }
-  obj3.free();
 
-  // get char width exceptions
-  widths16.exceps = NULL;
-  widths16.numExceps = 0;
-  obj2.dictLookup("W", &obj3);
-  if (obj3.isArray()) {
+  //----- character metrics -----
+
+  // default char width
+  if (desFontDict->lookup("DW", &obj1)->isInt()) {
+    widths.defWidth = obj1.getInt() * 0.001;
+  }
+  obj1.free();
+
+  // char width exceptions
+  if (desFontDict->lookup("W", &obj1)->isArray()) {
     excepsSize = 0;
-    k = 0;
     i = 0;
-    while (i+1 < obj3.arrayGetLength()) {
-      obj3.arrayGet(i, &obj4);
-      obj3.arrayGet(i+1, &obj5);
-      if (obj4.isInt() && obj5.isInt()) {
-       obj3.arrayGet(i+2, &obj6);
-       if (!obj6.isNum()) {
+    while (i + 1 < obj1.arrayGetLength()) {
+      obj1.arrayGet(i, &obj2);
+      obj1.arrayGet(i + 1, &obj3);
+      if (obj2.isInt() && obj3.isInt() && i + 2 < obj1.arrayGetLength()) {
+       if (obj1.arrayGet(i + 2, &obj4)->isNum()) {
+         if (widths.nExceps == excepsSize) {
+           excepsSize += 16;
+           widths.exceps = (GfxFontCIDWidthExcep *)
+             grealloc(widths.exceps,
+                      excepsSize * sizeof(GfxFontCIDWidthExcep));
+         }
+         widths.exceps[widths.nExceps].first = obj2.getInt();
+         widths.exceps[widths.nExceps].last = obj3.getInt();
+         widths.exceps[widths.nExceps].width = obj4.getNum() * 0.001;
+         ++widths.nExceps;
+       } else {
          error(-1, "Bad widths array in Type 0 font");
-         obj6.free();
-         obj5.free();
-         obj4.free();
-         break;
-       }
-       if (k == excepsSize) {
-         excepsSize += 16;
-         widths16.exceps = (GfxFontWidthExcep *)
-                       grealloc(widths16.exceps,
-                                excepsSize * sizeof(GfxFontWidthExcep));
        }
-       widths16.exceps[k].first = obj4.getInt();
-       widths16.exceps[k].last = obj5.getInt();
-       widths16.exceps[k].width = obj6.getNum() * 0.001;
-       obj6.free();
-       ++k;
+       obj4.free();
        i += 3;
-      } else if (obj4.isInt() && obj5.isArray()) {
-       if (k + obj5.arrayGetLength() >= excepsSize) {
-         excepsSize = (k + obj5.arrayGetLength() + 15) & ~15;
-         widths16.exceps = (GfxFontWidthExcep *)
-                       grealloc(widths16.exceps,
-                                excepsSize * sizeof(GfxFontWidthExcep));
+      } else if (obj2.isInt() && obj3.isArray()) {
+       if (widths.nExceps + obj3.arrayGetLength() > excepsSize) {
+         excepsSize = (widths.nExceps + obj3.arrayGetLength() + 15) & ~15;
+         widths.exceps = (GfxFontCIDWidthExcep *)
+           grealloc(widths.exceps,
+                    excepsSize * sizeof(GfxFontCIDWidthExcep));
        }
-       n = obj4.getInt();
-       for (j = 0; j < obj5.arrayGetLength(); ++j) {
-         obj5.arrayGet(j, &obj6);
-         if (!obj6.isNum()) {
+       j = obj2.getInt();
+       for (k = 0; k < obj3.arrayGetLength(); ++k) {
+         if (obj3.arrayGet(k, &obj4)->isNum()) {
+           widths.exceps[widths.nExceps].first = j;
+           widths.exceps[widths.nExceps].last = j;
+           widths.exceps[widths.nExceps].width = obj4.getNum() * 0.001;
+           ++j;
+           ++widths.nExceps;
+         } else {
            error(-1, "Bad widths array in Type 0 font");
-           obj6.free();
-           break;
          }
-         widths16.exceps[k].first = widths16.exceps[k].last = n++;
-         widths16.exceps[k].width = obj6.getNum() * 0.001;
-         obj6.free();
-         ++k;
+         obj4.free();
        }
        i += 2;
       } else {
        error(-1, "Bad widths array in Type 0 font");
-       obj6.free();
-       obj5.free();
-       obj4.free();
-       break;
+       ++i;
       }
-      obj5.free();
-      obj4.free();
+      obj3.free();
+      obj2.free();
     }
-    widths16.numExceps = k;
-    if (k > 0)
-      qsort(widths16.exceps, k, sizeof(GfxFontWidthExcep), &cmpWidthExcep);
+    qsort(widths.exceps, widths.nExceps, sizeof(GfxFontCIDWidthExcep),
+         &cmpWidthExcep);
   }
-  obj3.free();
+  obj1.free();
 
-  // get char metric exceptions for vertical font
-  widths16.excepsV = NULL;
-  widths16.numExcepsV = 0;
-  obj2.dictLookup("W2", &obj3);
-  if (obj3.isArray()) {
+  // default metrics for vertical font
+  if (desFontDict->lookup("DW2", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2) {
+    if (obj1.arrayGet(0, &obj2)->isNum()) {
+      widths.defVY = obj1.getNum() * 0.001;
+    }
+    obj2.free();
+    if (obj1.arrayGet(1, &obj2)->isNum()) {
+      widths.defHeight = obj1.getNum() * 0.001;
+    }
+    obj2.free();
+  }
+  obj1.free();
+
+  // char metric exceptions for vertical font
+  if (desFontDict->lookup("W2", &obj1)->isArray()) {
     excepsSize = 0;
-    k = 0;
     i = 0;
-    while (i+1 < obj3.arrayGetLength()) {
-      obj3.arrayGet(i, &obj4);
-      obj3.arrayGet(i+1, &obj5);
-      if (obj4.isInt() && obj5.isInt()) {
-       obj3.arrayGet(i+2, &obj6);
-       obj3.arrayGet(i+3, &obj7);
-       obj3.arrayGet(i+4, &obj8);
-       if (!obj6.isNum() || !obj7.isNum() || !obj8.isNum()) {
+    while (i + 1 < obj1.arrayGetLength()) {
+      obj1.arrayGet(0, &obj2);
+      obj2.arrayGet(0, &obj3);
+      if (obj2.isInt() && obj3.isInt() && i + 4 < obj1.arrayGetLength()) {
+       if (obj1.arrayGet(i + 2, &obj4)->isNum() &&
+           obj1.arrayGet(i + 3, &obj5)->isNum() &&
+           obj1.arrayGet(i + 4, &obj6)->isNum()) {
+         if (widths.nExcepsV == excepsSize) {
+           excepsSize += 16;
+           widths.excepsV = (GfxFontCIDWidthExcepV *)
+             grealloc(widths.excepsV,
+                      excepsSize * sizeof(GfxFontCIDWidthExcepV));
+         }
+         widths.excepsV[widths.nExcepsV].first = obj2.getInt();
+         widths.excepsV[widths.nExcepsV].last = obj3.getInt();
+         widths.excepsV[widths.nExcepsV].height = obj4.getNum() * 0.001;
+         widths.excepsV[widths.nExcepsV].vx = obj5.getNum() * 0.001;
+         widths.excepsV[widths.nExcepsV].vy = obj6.getNum() * 0.001;
+         ++widths.nExcepsV;
+       } else {
          error(-1, "Bad widths (W2) array in Type 0 font");
-         obj8.free();
-         obj7.free();
-         obj6.free();
-         obj5.free();
-         obj4.free();
-         break;
-       }
-       if (k == excepsSize) {
-         excepsSize += 16;
-         widths16.excepsV = (GfxFontWidthExcepV *)
-                       grealloc(widths16.excepsV,
-                                excepsSize * sizeof(GfxFontWidthExcepV));
        }
-       widths16.excepsV[k].first = obj4.getInt();
-       widths16.excepsV[k].last = obj5.getInt();
-       widths16.excepsV[k].height = obj6.getNum() * 0.001;
-       widths16.excepsV[k].vx = obj7.getNum() * 0.001;
-       widths16.excepsV[k].vy = obj8.getNum() * 0.001;
-       obj8.free();
-       obj7.free();
        obj6.free();
-       ++k;
+       obj5.free();
+       obj4.free();
        i += 5;
-      } else if (obj4.isInt() && obj5.isArray()) {
-       if (k + obj5.arrayGetLength() / 3 >= excepsSize) {
-         excepsSize = (k + obj5.arrayGetLength() / 3 + 15) & ~15;
-         widths16.excepsV = (GfxFontWidthExcepV *)
-                       grealloc(widths16.excepsV,
-                                excepsSize * sizeof(GfxFontWidthExcepV));
+      } else if (obj2.isInt() && obj3.isArray()) {
+       if (widths.nExcepsV + obj3.arrayGetLength() / 3 > excepsSize) {
+         excepsSize =
+           (widths.nExcepsV + obj3.arrayGetLength() / 3 + 15) & ~15;
+         widths.excepsV = (GfxFontCIDWidthExcepV *)
+           grealloc(widths.excepsV,
+                    excepsSize * sizeof(GfxFontCIDWidthExcepV));
        }
-       n = obj4.getInt();
-       for (j = 0; j < obj5.arrayGetLength(); j += 3) {
-         obj5.arrayGet(j, &obj6);
-         obj5.arrayGet(j+1, &obj7);
-         obj5.arrayGet(j+1, &obj8);
-         if (!obj6.isNum() || !obj7.isNum() || !obj8.isNum()) {
+       j = obj2.getInt();
+       for (k = 0; k < obj3.arrayGetLength(); ++k) {
+         if (obj3.arrayGet(k, &obj4)->isNum() &&
+             obj3.arrayGet(k, &obj5)->isNum() &&
+             obj3.arrayGet(k, &obj6)->isNum()) {
+           widths.excepsV[widths.nExceps].first = j;
+           widths.excepsV[widths.nExceps].last = j;
+           widths.excepsV[widths.nExceps].height = obj4.getNum() * 0.001;
+           widths.excepsV[widths.nExceps].vx = obj5.getNum() * 0.001;
+           widths.excepsV[widths.nExceps].vy = obj6.getNum() * 0.001;
+           ++j;
+           ++widths.nExcepsV;
+         } else {
            error(-1, "Bad widths (W2) array in Type 0 font");
-           obj6.free();
-           break;
          }
-         widths16.excepsV[k].first = widths16.exceps[k].last = n++;
-         widths16.excepsV[k].height = obj6.getNum() * 0.001;
-         widths16.excepsV[k].vx = obj7.getNum() * 0.001;
-         widths16.excepsV[k].vy = obj8.getNum() * 0.001;
-         obj8.free();
-         obj7.free();
          obj6.free();
-         ++k;
+         obj5.free();
+         obj4.free();
        }
        i += 2;
       } else {
-       error(-1, "Bad widths array in Type 0 font");
-       obj5.free();
-       obj4.free();
-       break;
+       error(-1, "Bad widths (W2) array in Type 0 font");
+       ++i;
       }
-      obj5.free();
-      obj4.free();
-    }
-    widths16.numExcepsV = k;
-    if (k > 0) {
-      qsort(widths16.excepsV, k, sizeof(GfxFontWidthExcepV), &cmpWidthExcepV);
+      obj3.free();
+      obj2.free();
     }
+    qsort(widths.excepsV, widths.nExcepsV, sizeof(GfxFontCIDWidthExcepV),
+         &cmpWidthExcepV);
   }
-  obj3.free();
+  obj1.free();
 
+  desFontDictObj.free();
+  ok = gTrue;
+  return;
+
+ err4:
+  obj3.free();
   obj2.free();
+ err3:
   obj1.free();
+ err2:
+  desFontDictObj.free();
+ err1:;
+}
 
-  // get encoding (CMap)
-  fontDict->lookup("Encoding", &obj1);
-  if (!obj1.isName()) {
-    error(-1, "Bad encoding for Type 0 font");
-    goto err1;
+GfxCIDFont::~GfxCIDFont() {
+  if (cMap) {
+    cMap->decRefCnt();
   }
-#if JAPANESE_SUPPORT
-  if (enc16.charSet == font16AdobeJapan12) {
-    for (i = 0; gfxJapan12Tab[i].name; ++i) {
-      if (!strcmp(obj1.getName(), gfxJapan12Tab[i].name))
-       break;
-    }
-    if (!gfxJapan12Tab[i].name) {
-      error(-1, "Unknown encoding '%s' for Adobe-Japan1-2 font",
-           obj1.getName());
-      goto err1;
-    }
-    enc16.enc = gfxJapan12Tab[i].enc;
+  if (ctu) {
+    ctu->decRefCnt();
   }
-#endif
-#if CHINESE_GB_SUPPORT
-  if (enc16.charSet == font16AdobeGB12) {
-    for (i = 0; gfxGB12Tab[i].name; ++i) {
-      if (!strcmp(obj1.getName(), gfxGB12Tab[i].name))
-       break;
-    }
-    if (!gfxGB12Tab[i].name) {
-      error(-1, "Unknown encoding '%s' for Adobe-GB1-2 font",
-           obj1.getName());
-      goto err1;
-    }
-    enc16.enc = gfxGB12Tab[i].enc;
+  gfree(widths.exceps);
+  gfree(widths.excepsV);
+  if (cidToGID) {
+    gfree(cidToGID);
   }
-#endif
-#if CHINESE_CNS_SUPPORT
-  if (enc16.charSet == font16AdobeCNS13) {
-    for (i = 0; gfxCNS13Tab[i].name; ++i) {
-      if (!strcmp(obj1.getName(), gfxCNS13Tab[i].name))
-       break;
+}
+
+int GfxCIDFont::getNextChar(char *s, int len, CharCode *code,
+                           Unicode *u, int uSize, int *uLen,
+                           double *dx, double *dy, double *ox, double *oy) {
+  CID cid;
+  double w, h, vx, vy;
+  int n, a, b, m;
+
+  if (!cMap) {
+    *code = 0;
+    *uLen = 0;
+    *dx = *dy = 0;
+    return 1;
+  }
+
+  *code = (CharCode)(cid = cMap->getCID(s, len, &n));
+  if (ctu) {
+    *uLen = ctu->mapToUnicode(cid, u, uSize);
+  } else {
+    *uLen = 0;
+  }
+
+  // horizontal
+  if (cMap->getWMode() == 0) {
+    w = widths.defWidth;
+    h = vx = vy = 0;
+    if (widths.nExceps > 0 && cid >= widths.exceps[0].first) {
+      a = 0;
+      b = widths.nExceps;
+      // invariant: widths.exceps[a].first <= cid < widths.exceps[b].first
+      while (b - a > 1) {
+       m = (a + b) / 2;
+       if (widths.exceps[m].first <= cid) {
+         a = m;
+       } else {
+         b = m;
+       }
+      }
+      if (cid <= widths.exceps[a].last) {
+       w = widths.exceps[a].width;
+      }
     }
-    if (!gfxCNS13Tab[i].name) {
-      error(-1, "Unknown encoding '%s' for Adobe-CNS1-3 font",
-           obj1.getName());
-      goto err1;
+
+  // vertical
+  } else {
+    w = 0;
+    h = widths.defHeight;
+    vx = widths.defWidth / 2;
+    vy = widths.defVY;
+    if (widths.nExcepsV > 0 && cid >= widths.excepsV[0].first) {
+      a = 0;
+      b = widths.nExcepsV;
+      // invariant: widths.excepsV[a].first <= cid < widths.excepsV[b].first
+      while (b - a > 1) {
+       m = (a + b) / 2;
+       if (widths.excepsV[m].last <= cid) {
+         a = m;
+       } else {
+         b = m;
+       }
+      }
+      if (cid <= widths.excepsV[a].last) {
+       h = widths.excepsV[a].height;
+       vx = widths.excepsV[a].vx;
+       vy = widths.excepsV[a].vy;
+      }
     }
-    enc16.enc = gfxCNS13Tab[i].enc;
   }
-#endif
-  obj1.free();
 
-  return;
+  *dx = w;
+  *dy = h;
+  *ox = vx;
+  *oy = vy;
 
- err4:
-  obj5.free();
-  obj4.free();
- err3:
-  obj3.free();
- err2:
-  obj2.free();
- err1:
-  obj1.free();
-  //~ fix this --> add 16-bit font support to FontFile
-  encoding = new FontEncoding();
-  makeWidths(fontDict, NULL, NULL, 0);
+  return n;
+}
+
+int GfxCIDFont::getWMode() {
+  return cMap ? cMap->getWMode() : 0;
 }
 
-static int CDECL cmpWidthExcep(const void *w1, const void *w2) {
-  return ((GfxFontWidthExcep *)w1)->first - ((GfxFontWidthExcep *)w2)->first;
+CharCodeToUnicode *GfxCIDFont::getToUnicode() {
+  ctu->incRefCnt();
+  return ctu;
 }
 
-static int CDECL cmpWidthExcepV(const void *w1, const void *w2) {
-  return ((GfxFontWidthExcepV *)w1)->first - ((GfxFontWidthExcepV *)w2)->first;
+GString *GfxCIDFont::getCollection() {
+  return cMap ? cMap->getCollection() : (GString *)NULL;
 }
 
 //------------------------------------------------------------------------
 // GfxFontDict
 //------------------------------------------------------------------------
 
-GfxFontDict::GfxFontDict(Dict *fontDict) {
+GfxFontDict::GfxFontDict(XRef *xref, Dict *fontDict) {
   int i;
   Object obj1, obj2;
 
@@ -986,12 +1245,16 @@ GfxFontDict::GfxFontDict(Dict *fontDict) {
   fonts = (GfxFont **)gmalloc(numFonts * sizeof(GfxFont *));
   for (i = 0; i < numFonts; ++i) {
     fontDict->getValNF(i, &obj1);
-    obj1.fetch(&obj2);
+    obj1.fetch(xref, &obj2);
     if (obj1.isRef() && obj2.isDict()) {
-      fonts[i] = new GfxFont(fontDict->getKey(i), obj1.getRef(),
-                            obj2.getDict());
+      fonts[i] = GfxFont::makeFont(xref, fontDict->getKey(i),
+                                  obj1.getRef(), obj2.getDict());
+      if (fonts[i] && !fonts[i]->isOk()) {
+       delete fonts[i];
+       fonts[i] = NULL;
+      }
     } else {
-      error(-1, "font resource is not a dictionary");
+      error(-1, "font resource is not a dictionary reference");
       fonts[i] = NULL;
     }
     obj1.free();
@@ -1002,8 +1265,11 @@ GfxFontDict::GfxFontDict(Dict *fontDict) {
 GfxFontDict::~GfxFontDict() {
   int i;
 
-  for (i = 0; i < numFonts; ++i)
-    delete fonts[i];
+  for (i = 0; i < numFonts; ++i) {
+    if (fonts[i]) {
+      delete fonts[i];
+    }
+  }
   gfree(fonts);
 }
 
@@ -1011,8 +1277,9 @@ GfxFont *GfxFontDict::lookup(char *tag) {
   int i;
 
   for (i = 0; i < numFonts; ++i) {
-    if (fonts[i]->matches(tag))
+    if (fonts[i] && fonts[i]->matches(tag)) {
       return fonts[i];
+    }
   }
   return NULL;
 }
index 0435d90e90239b055f1453c4d3e15438f8a002d4..c67ac29a40a9aa12965eb5ed9cef0138861751c1 100644 (file)
@@ -2,7 +2,7 @@
 //
 // GfxFont.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #include "gtypes.h"
 #include "GString.h"
 #include "Object.h"
-#include "FontEncoding.h"
+#include "CharTypes.h"
 
 class Dict;
-struct BuiltinFont;
+class CMap;
+class CharCodeToUnicode;
+struct GfxFontCIDWidths;
 
 //------------------------------------------------------------------------
-// GfxFontCharSet16
+// GfxFontType
 //------------------------------------------------------------------------
 
-enum GfxFontCharSet16 {
-  font16AdobeJapan12,          // Adobe-Japan1-2
-  font16AdobeGB12,             // Adobe-GB1-2 (Chinese)
-  font16AdobeCNS13             // Adobe-CNS1-3 (Chinese)
-};
-
-//------------------------------------------------------------------------
-// GfxFontEncoding16
-//------------------------------------------------------------------------
-
-struct GfxFontEncoding16 {
-  int wMode;                   // writing mode (0=horizontal, 1=vertical)
-  Guchar codeLen[256];         // length of codes, in bytes, indexed by
-                               //   first byte of code
-  Gushort map1[256];           // one-byte code mapping:
-                               //   map1[code] --> 16-bit char selector
-  Gushort *map2;               // two-byte code mapping
-                               //   map2[2*i]   --> first code in range
-                               //   map2[2*i+1] --> 16-bit char selector
-                               //                   for map2[2*i]
-  int map2Len;                 // length of map2 array (divided by 2)
+enum GfxFontType {
+  //----- Gfx8BitFont
+  fontUnknownType,
+  fontType1,
+  fontType1C,
+  fontType3,
+  fontTrueType,
+  //----- GfxCIDFont
+  fontCIDType0,
+  fontCIDType0C,
+  fontCIDType2
 };
 
 //------------------------------------------------------------------------
-// GfxFontWidths16
+// GfxFontCIDWidths
 //------------------------------------------------------------------------
 
-struct GfxFontWidthExcep {
-  int first;                   // this record applies to
-  int last;                    //   chars <first>..<last>
+struct GfxFontCIDWidthExcep {
+  CID first;                   // this record applies to
+  CID last;                    //   CIDs <first>..<last>
   double width;                        // char width
 };
 
-struct GfxFontWidthExcepV {
-  int first;                   // this record applies to
-  int last;                    //   chars <first>..<last>
+struct GfxFontCIDWidthExcepV {
+  CID first;                   // this record applies to
+  CID last;                    //   CIDs <first>..<last>
   double height;               // char height
   double vx, vy;               // origin position
 };
 
-struct GfxFontWidths16 {
+struct GfxFontCIDWidths {
   double defWidth;             // default char width
   double defHeight;            // default char height
   double defVY;                        // default origin position
-  GfxFontWidthExcep *exceps;   // exceptions
-  int numExceps;               // number of valid entries in exceps
-  GfxFontWidthExcepV *excepsV; // exceptions for vertical font
-  int numExcepsV;              // number of valid entries in excepsV
+  GfxFontCIDWidthExcep *exceps;        // exceptions
+  int nExceps;                 // number of valid entries in exceps
+  GfxFontCIDWidthExcepV *      // exceptions for vertical font
+    excepsV;
+  int nExcepsV;                        // number of valid entries in excepsV
 };
 
 //------------------------------------------------------------------------
@@ -85,41 +78,33 @@ struct GfxFontWidths16 {
 #define fontItalic     (1 << 6)
 #define fontBold       (1 << 18)
 
-enum GfxFontType {
-  fontUnknownType,
-  fontType1,
-  fontType1C,
-  fontType3,
-  fontTrueType,
-  fontType0
-};
-
 class GfxFont {
 public:
 
-  // Constructor.
-  GfxFont(char *tag1, Ref id1, Dict *fontDict);
+  // Build a GfxFont object.
+  static GfxFont *makeFont(XRef *xref, char *tagA, Ref idA, Dict *fontDict);
 
-  // Destructor.
-  ~GfxFont();
+  GfxFont(char *tagA, Ref idA, GString *nameA);
+
+  virtual ~GfxFont();
+
+  GBool isOk() { return ok; }
 
   // Get font tag.
   GString *getTag() { return tag; }
 
   // Get font dictionary ID.
-  Ref getID() { return id; }
+  Ref *getID() { return &id; }
 
   // Does this font match the tag?
-  GBool matches(char *tag1) { return !tag->cmp(tag1); }
+  GBool matches(char *tagA) { return !tag->cmp(tagA); }
 
   // Get base font name.
   GString *getName() { return name; }
 
   // Get font type.
   GfxFontType getType() { return type; }
-
-  // Does this font use 16-bit characters?
-  GBool is16Bit() { return is16; }
+  virtual GBool isCIDFont() { return gFalse; }
 
   // Get embedded font ID, i.e., a ref for the font file stream.
   // Returns false if there is no embedded font.
@@ -128,8 +113,7 @@ public:
 
   // Get the PostScript font name for the embedded font.  Returns
   // NULL if there is no embedded font.
-  char *getEmbeddedFontName()
-    { return embFontName ? embFontName->getCString() : (char *)NULL; }
+  GString *getEmbeddedFontName() { return embFontName; }
 
   // Get the name of the external font file.  Returns NULL if there
   // is no external font file.
@@ -142,73 +126,147 @@ public:
   GBool isItalic() { return flags & fontItalic; }
   GBool isBold() { return flags & fontBold; }
 
-  // Get width of a character or string.
-  double getWidth(Guchar c) { return widths[c]; }
-  double getWidth(GString *s);
+  // Return the font matrix.
+  double *getFontMatrix() { return fontMat; }
+
+  // Return the font bounding box.
+  double *getFontBBox() { return fontBBox; }
+
+  // Return the ascent and descent values.
+  double getAscent() { return ascent; }
+  double getDescent() { return descent; }
+
+  // Return the writing mode (0=horizontal, 1=vertical).
+  virtual int getWMode() { return 0; }
+
+  // Read an external or embedded font file into a buffer.
+  char *readExtFontFile(int *len);
+  char *readEmbFontFile(XRef *xref, int *len);
+
+  // Get the next char from a string <s> of <len> bytes, returning the
+  // char <code>, its Unicode mapping <u>, its displacement vector
+  // (<dx>, <dy>), and its origin offset vector (<ox>, <oy>).  <uSize>
+  // is the number of entries available in <u>, and <uLen> is set to
+  // the number actually used.  Returns the number of bytes used by
+  // the char code.
+  virtual int getNextChar(char *s, int len, CharCode *code,
+                         Unicode *u, int uSize, int *uLen,
+                         double *dx, double *dy, double *ox, double *oy) = 0;
+
+protected:
+
+  void readFontDescriptor(XRef *xref, Dict *fontDict);
+  CharCodeToUnicode *readToUnicodeCMap(Dict *fontDict, int nBits);
+  void findExtFontFile();
+
+  GString *tag;                        // PDF font tag
+  Ref id;                      // reference (used as unique ID)
+  GString *name;               // font name
+  GfxFontType type;            // type of font
+  int flags;                   // font descriptor flags
+  GString *embFontName;                // name of embedded font
+  Ref embFontID;               // ref to embedded font file stream
+  GString *extFontFile;                // external font file name
+  double fontMat[6];           // font matrix (Type 3 only)
+  double fontBBox[4];          // font bounding box (Type 3 only)
+  double missingWidth;         // "default" width
+  double ascent;               // max height above baseline
+  double descent;              // max depth below baseline
+  GBool ok;
+};
+
+//------------------------------------------------------------------------
+// Gfx8BitFont
+//------------------------------------------------------------------------
 
-  // Get character metrics for 16-bit font.
-  double getWidth16(int c);
-  double getHeight16(int c);
-  double getOriginX16(int c);
-  double getOriginY16(int c);
+class Gfx8BitFont: public GfxFont {
+public:
+
+  Gfx8BitFont(XRef *xref, char *tagA, Ref idA, GString *nameA,
+             GfxFontType typeA, Dict *fontDict);
+
+  virtual ~Gfx8BitFont();
+
+  virtual int getNextChar(char *s, int len, CharCode *code,
+                         Unicode *u, int uSize, int *uLen,
+                         double *dx, double *dy, double *ox, double *oy);
 
   // Return the encoding.
-  FontEncoding *getEncoding() { return encoding; }
+  char **getEncoding() { return enc; }
+
+  // Return the Unicode map.
+  CharCodeToUnicode *getToUnicode();
 
   // Return the character name associated with <code>.
-  char *getCharName(int code) { return encoding->getCharName(code); }
+  char *getCharName(int code) { return enc[code]; }
 
-  // Return the code associated with <name>.
-  int getCharCode(char *charName) { return encoding->getCharCode(charName); }
+  // Returns true if the PDF font specified an encoding.
+  GBool getHasEncoding() { return hasEncoding; }
+
+  // Get width of a character or string.
+  double getWidth(Guchar c) { return widths[c]; }
+
+  // Return the Type 3 CharProc dictionary, or NULL if none.
+  Dict *getCharProcs();
 
   // Return the Type 3 CharProc for the character associated with <code>.
   Object *getCharProc(int code, Object *proc);
 
-  // Return the 16-bit character set and encoding.
-  GfxFontCharSet16 getCharSet16() { return enc16.charSet; }
-  GfxFontEncoding16 *getEncoding16() { return enc16.enc; }
+  // Return the Type 3 Resources dictionary, or NULL if none.
+  Dict *getResources();
 
-  // Get the writing mode (0=horizontal, 1=vertical).
-  int getWMode16() { return enc16.enc->wMode; }
+private:
 
-  // Return the font matrix.
-  double *getFontMatrix() { return fontMat; }
+  char *enc[256];              // char code --> char name
+  char encFree[256];           // boolean for each char name: if set,
+                               //   the string is malloc'ed
+  CharCodeToUnicode *ctu;      // char code --> Unicode
+  GBool hasEncoding;
+  double widths[256];          // character widths
+  Object charProcs;            // Type 3 CharProcs dictionary
+  Object resources;            // Type 3 Resources dictionary
+};
 
-  // Read an external or embedded font file into a buffer.
-  char *readExtFontFile(int *len);
-  char *readEmbFontFile(int *len);
+//------------------------------------------------------------------------
+// GfxCIDFont
+//------------------------------------------------------------------------
 
-private:
+class GfxCIDFont: public GfxFont {
+public:
 
-  void getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont,
-                      int missingWidth);
-  void findExtFontFile();
-  void makeWidths(Dict *fontDict, FontEncoding *builtinEncoding,
-                 Gushort *builtinWidths, int missingWidth);
-  void getType0EncAndWidths(Dict *fontDict);
+  GfxCIDFont(XRef *xref, char *tagA, Ref idA, GString *nameA,
+            Dict *fontDict);
 
-  GString *tag;                        // PDF font tag
-  Ref id;                      // reference (used as unique ID)
-  GString *name;               // font name
-  int flags;                   // font descriptor flags
-  GfxFontType type;            // type of font
-  GBool is16;                  // set if font uses 16-bit chars
-  GString *embFontName;                // name of embedded font
-  Ref embFontID;               // ref to embedded font file stream
-  GString *extFontFile;                // external font file name
-  Object charProcs;            // Type3 CharProcs dictionary
-  double fontMat[6];           // font matrix
-  union {
-    FontEncoding *encoding;    // 8-bit font encoding
-    struct {
-      GfxFontCharSet16 charSet;        // 16-bit character set
-      GfxFontEncoding16 *enc;  // 16-bit encoding (CMap)
-    } enc16;
-  };
-  union {
-    double widths[256];                // width of each char for 8-bit font
-    GfxFontWidths16 widths16;  // char widths for 16-bit font
-  };
+  virtual ~GfxCIDFont();
+
+  virtual GBool isCIDFont() { return gTrue; }
+
+  virtual int getNextChar(char *s, int len, CharCode *code,
+                         Unicode *u, int uSize, int *uLen,
+                         double *dx, double *dy, double *ox, double *oy);
+
+  // Return the writing mode (0=horizontal, 1=vertical).
+  virtual int getWMode();
+
+  // Return the Unicode map.
+  CharCodeToUnicode *getToUnicode();
+
+  // Get the collection name (<registry>-<ordering>).
+  GString *getCollection();
+
+  // Return the CID-to-GID mapping table.  These should only be called
+  // if type is fontCIDType2.
+  Gushort *getCIDToGID() { return cidToGID; }
+  int getCIDToGIDLen() { return cidToGIDLen; }
+
+private:
+
+  CMap *cMap;                  // char code --> CID
+  CharCodeToUnicode *ctu;      // CID --> Unicode
+  GfxFontCIDWidths widths;     // character widths
+  Gushort *cidToGID;           // CID --> GID mapping (for embedded
+                               //   TrueType fonts)
+  int cidToGIDLen;
 };
 
 //------------------------------------------------------------------------
@@ -219,7 +277,7 @@ class GfxFontDict {
 public:
 
   // Build the font dictionary, given the PDF font dictionary.
-  GfxFontDict(Dict *fontDict);
+  GfxFontDict(XRef *xref, Dict *fontDict);
 
   // Destructor.
   ~GfxFontDict();
index 1abf9a56ec47025632d26f02c6ad3f769bbccbde..1668c246796924c0431b6879c3fca50540cd4fec 100644 (file)
@@ -2,7 +2,7 @@
 //
 // GfxState.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include <math.h>
 #include <string.h> // for memcpy()
@@ -17,6 +18,7 @@
 #include "Error.h"
 #include "Object.h"
 #include "Array.h"
+#include "Page.h"
 #include "GfxState.h"
 
 //------------------------------------------------------------------------
@@ -261,9 +263,9 @@ GfxCalRGBColorSpace::GfxCalRGBColorSpace() {
   whiteX = whiteY = whiteZ = 1;
   blackX = blackY = blackZ = 0;
   gammaR = gammaG = gammaB = 1;
-  m[0] = 1; m[1] = 0; m[2] = 0;
-  m[3] = 0; m[4] = 1; m[5] = 0;
-  m[6] = 0; m[7] = 0; m[8] = 1;
+  mat[0] = 1; mat[1] = 0; mat[2] = 0;
+  mat[3] = 0; mat[4] = 1; mat[5] = 0;
+  mat[6] = 0; mat[7] = 0; mat[8] = 1;
 }
 
 GfxCalRGBColorSpace::~GfxCalRGBColorSpace() {
@@ -284,7 +286,7 @@ GfxColorSpace *GfxCalRGBColorSpace::copy() {
   cs->gammaG = gammaG;
   cs->gammaB = gammaB;
   for (i = 0; i < 9; ++i) {
-    cs->m[i] = m[i];
+    cs->mat[i] = mat[i];
   }
   return cs;
 }
@@ -344,7 +346,7 @@ GfxColorSpace *GfxCalRGBColorSpace::parse(Array *arr) {
       obj2.arrayGetLength() == 9) {
     for (i = 0; i < 9; ++i) {
       obj2.arrayGet(i, &obj3);
-      cs->m[i] = obj3.getNum();
+      cs->mat[i] = obj3.getNum();
       obj3.free();
     }
   }
@@ -406,9 +408,22 @@ void GfxDeviceCMYKColorSpace::getGray(GfxColor *color, double *gray) {
 }
 
 void GfxDeviceCMYKColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-  rgb->r = clip01(1 - (color->c[0] + color->c[3]));
-  rgb->g = clip01(1 - (color->c[1] + color->c[3]));
-  rgb->b = clip01(1 - (color->c[2] + color->c[3]));
+  double c, m, y, aw, ac, am, ay, ar, ag, ab;
+
+  c = clip01(color->c[0] + color->c[3]);
+  m = clip01(color->c[1] + color->c[3]);
+  y = clip01(color->c[2] + color->c[3]);
+  aw = (1-c) * (1-m) * (1-y);
+  ac = c * (1-m) * (1-y);
+  am = (1-c) * m * (1-y);
+  ay = (1-c) * (1-m) * y;
+  ar = (1-c) * m * y;
+  ag = c * (1-m) * y;
+  ab = c * m * (1-y);
+  rgb->r = clip01(aw + 0.9137*am + 0.9961*ay + 0.9882*ar);
+  rgb->g = clip01(aw + 0.6196*ac + ay + 0.5176*ag);
+  rgb->b = clip01(aw + 0.7804*ac + 0.5412*am + 0.0667*ar + 0.2118*ag +
+                 0.4863*ab);
 }
 
 void GfxDeviceCMYKColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
@@ -609,11 +624,11 @@ void GfxLabColorSpace::getDefaultRanges(double *decodeLow, double *decodeRange,
 // GfxICCBasedColorSpace
 //------------------------------------------------------------------------
 
-GfxICCBasedColorSpace::GfxICCBasedColorSpace(int nComps, GfxColorSpace *alt,
-                                            Ref *iccProfileStream) {
-  this->nComps = nComps;
-  this->alt = alt;
-  this->iccProfileStream = *iccProfileStream;
+GfxICCBasedColorSpace::GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA,
+                                            Ref *iccProfileStreamA) {
+  nComps = nCompsA;
+  alt = altA;
+  iccProfileStream = *iccProfileStreamA;
   rangeMin[0] = rangeMin[1] = rangeMin[2] = rangeMin[3] = 0;
   rangeMax[0] = rangeMax[1] = rangeMax[2] = rangeMax[3] = 1;
 }
@@ -636,19 +651,19 @@ GfxColorSpace *GfxICCBasedColorSpace::copy() {
 
 GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr) {
   GfxICCBasedColorSpace *cs;
-  Ref iccProfileStream;
-  int nComps;
-  GfxColorSpace *alt;
+  Ref iccProfileStreamA;
+  int nCompsA;
+  GfxColorSpace *altA;
   Dict *dict;
   Object obj1, obj2, obj3;
   int i;
 
   arr->getNF(1, &obj1);
   if (obj1.isRef()) {
-    iccProfileStream = obj1.getRef();
+    iccProfileStreamA = obj1.getRef();
   } else {
-    iccProfileStream.num = 0;
-    iccProfileStream.gen = 0;
+    iccProfileStreamA.num = 0;
+    iccProfileStreamA.gen = 0;
   }
   obj1.free();
   arr->get(1, &obj1);
@@ -664,19 +679,19 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr) {
     obj1.free();
     return NULL;
   }
-  nComps = obj2.getInt();
+  nCompsA = obj2.getInt();
   obj2.free();
   if (dict->lookup("Alternate", &obj2)->isNull() ||
-      !(alt = GfxColorSpace::parse(&obj2))) {
-    switch (nComps) {
+      !(altA = GfxColorSpace::parse(&obj2))) {
+    switch (nCompsA) {
     case 1:
-      alt = new GfxDeviceGrayColorSpace();
+      altA = new GfxDeviceGrayColorSpace();
       break;
     case 3:
-      alt = new GfxDeviceRGBColorSpace();
+      altA = new GfxDeviceRGBColorSpace();
       break;
     case 4:
-      alt = new GfxDeviceCMYKColorSpace();
+      altA = new GfxDeviceCMYKColorSpace();
       break;
     default:
       error(-1, "Bad ICCBased color space - invalid N");
@@ -686,10 +701,10 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr) {
     }
   }
   obj2.free();
-  cs = new GfxICCBasedColorSpace(nComps, alt, &iccProfileStream);
+  cs = new GfxICCBasedColorSpace(nCompsA, altA, &iccProfileStreamA);
   if (dict->lookup("Range", &obj2)->isArray() &&
-      obj2.arrayGetLength() == 2 * nComps) {
-    for (i = 0; i < nComps; ++i) {
+      obj2.arrayGetLength() == 2 * nCompsA) {
+    for (i = 0; i < nCompsA; ++i) {
       obj2.arrayGet(2*i, &obj3);
       cs->rangeMin[i] = obj3.getNum();
       obj3.free();
@@ -730,12 +745,12 @@ void GfxICCBasedColorSpace::getDefaultRanges(double *decodeLow,
 // GfxIndexedColorSpace
 //------------------------------------------------------------------------
 
-GfxIndexedColorSpace::GfxIndexedColorSpace(GfxColorSpace *base,
-                                          int indexHigh) {
-  this->base = base;
-  this->indexHigh = indexHigh;
-  this->lookup = (Guchar *)gmalloc((indexHigh + 1) * base->getNComps() *
-                                  sizeof(Guchar));
+GfxIndexedColorSpace::GfxIndexedColorSpace(GfxColorSpace *baseA,
+                                          int indexHighA) {
+  base = baseA;
+  indexHigh = indexHighA;
+  lookup = (Guchar *)gmalloc((indexHigh + 1) * base->getNComps() *
+                            sizeof(Guchar));
 }
 
 GfxIndexedColorSpace::~GfxIndexedColorSpace() {
@@ -754,8 +769,8 @@ GfxColorSpace *GfxIndexedColorSpace::copy() {
 
 GfxColorSpace *GfxIndexedColorSpace::parse(Array *arr) {
   GfxIndexedColorSpace *cs;
-  GfxColorSpace *base;
-  int indexHigh;
+  GfxColorSpace *baseA;
+  int indexHighA;
   Object obj1;
   int x;
   char *s;
@@ -766,7 +781,7 @@ GfxColorSpace *GfxIndexedColorSpace::parse(Array *arr) {
     goto err1;
   }
   arr->get(1, &obj1);
-  if (!(base = GfxColorSpace::parse(&obj1))) {
+  if (!(baseA = GfxColorSpace::parse(&obj1))) {
     error(-1, "Bad Indexed color space (base color space)");
     goto err2;
   }
@@ -775,14 +790,14 @@ GfxColorSpace *GfxIndexedColorSpace::parse(Array *arr) {
     error(-1, "Bad Indexed color space (hival)");
     goto err2;
   }
-  indexHigh = obj1.getInt();
+  indexHighA = obj1.getInt();
   obj1.free();
-  cs = new GfxIndexedColorSpace(base, indexHigh);
+  cs = new GfxIndexedColorSpace(baseA, indexHighA);
   arr->get(3, &obj1);
-  n = base->getNComps();
+  n = baseA->getNComps();
   if (obj1.isStream()) {
     obj1.streamReset();
-    for (i = 0; i <= indexHigh; ++i) {
+    for (i = 0; i <= indexHighA; ++i) {
       for (j = 0; j < n; ++j) {
        if ((x = obj1.streamGetChar()) == EOF) {
          error(-1, "Bad Indexed color space (lookup table stream too short)");
@@ -793,12 +808,12 @@ GfxColorSpace *GfxIndexedColorSpace::parse(Array *arr) {
     }
     obj1.streamClose();
   } else if (obj1.isString()) {
-    if (obj1.getString()->getLength() < (indexHigh + 1) * n) {
+    if (obj1.getString()->getLength() < (indexHighA + 1) * n) {
       error(-1, "Bad Indexed color space (lookup table string too short)");
       goto err3;
     }
     s = obj1.getString()->getCString();
-    for (i = 0; i <= indexHigh; ++i) {
+    for (i = 0; i <= indexHighA; ++i) {
       for (j = 0; j < n; ++j) {
        cs->lookup[i*n + j] = (Guchar)*s++;
       }
@@ -868,12 +883,12 @@ void GfxIndexedColorSpace::getDefaultRanges(double *decodeLow,
 // GfxSeparationColorSpace
 //------------------------------------------------------------------------
 
-GfxSeparationColorSpace::GfxSeparationColorSpace(GString *name,
-                                                GfxColorSpace *alt,
-                                                Function *func) {
-  this->name = name;
-  this->alt = alt;
-  this->func = func;
+GfxSeparationColorSpace::GfxSeparationColorSpace(GString *nameA,
+                                                GfxColorSpace *altA,
+                                                Function *funcA) {
+  name = nameA;
+  alt = altA;
+  func = funcA;
 }
 
 GfxSeparationColorSpace::~GfxSeparationColorSpace() {
@@ -889,9 +904,9 @@ GfxColorSpace *GfxSeparationColorSpace::copy() {
 //~ handle the 'All' and 'None' colorants
 GfxColorSpace *GfxSeparationColorSpace::parse(Array *arr) {
   GfxSeparationColorSpace *cs;
-  GString *name;
-  GfxColorSpace *alt;
-  Function *func;
+  GString *nameA;
+  GfxColorSpace *altA;
+  Function *funcA;
   Object obj1;
 
   if (arr->getLength() != 4) {
@@ -902,27 +917,26 @@ GfxColorSpace *GfxSeparationColorSpace::parse(Array *arr) {
     error(-1, "Bad Separation color space (name)");
     goto err2;
   }
-  name = new GString(obj1.getName());
+  nameA = new GString(obj1.getName());
   obj1.free();
   arr->get(2, &obj1);
-  if (!(alt = GfxColorSpace::parse(&obj1))) {
+  if (!(altA = GfxColorSpace::parse(&obj1))) {
     error(-1, "Bad Separation color space (alternate color space)");
     goto err3;
   }
   obj1.free();
-  func = Function::parse(arr->get(3, &obj1));
-  obj1.free();
-  if (!func->isOk()) {
+  arr->get(3, &obj1);
+  if (!(funcA = Function::parse(&obj1))) {
     goto err4;
   }
-  cs = new GfxSeparationColorSpace(name, alt, func);
+  obj1.free();
+  cs = new GfxSeparationColorSpace(nameA, altA, funcA);
   return cs;
 
  err4:
-  delete func;
-  delete alt;
+  delete altA;
  err3:
-  delete name;
+  delete nameA;
  err2:
   obj1.free();
  err1:
@@ -954,12 +968,12 @@ void GfxSeparationColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
 // GfxDeviceNColorSpace
 //------------------------------------------------------------------------
 
-GfxDeviceNColorSpace::GfxDeviceNColorSpace(int nComps,
-                                          GfxColorSpace *alt,
-                                          Function *func) {
-  this->nComps = nComps;
-  this->alt = alt;
-  this->func = func;
+GfxDeviceNColorSpace::GfxDeviceNColorSpace(int nCompsA,
+                                          GfxColorSpace *altA,
+                                          Function *funcA) {
+  nComps = nCompsA;
+  alt = altA;
+  func = funcA;
 }
 
 GfxDeviceNColorSpace::~GfxDeviceNColorSpace() {
@@ -986,10 +1000,10 @@ GfxColorSpace *GfxDeviceNColorSpace::copy() {
 //~ handle the 'None' colorant
 GfxColorSpace *GfxDeviceNColorSpace::parse(Array *arr) {
   GfxDeviceNColorSpace *cs;
-  int nComps;
-  GString *names[gfxColorMaxComps];
-  GfxColorSpace *alt;
-  Function *func;
+  int nCompsA;
+  GString *namesA[gfxColorMaxComps];
+  GfxColorSpace *altA;
+  Function *funcA;
   Object obj1, obj2;
   int i;
 
@@ -1001,40 +1015,39 @@ GfxColorSpace *GfxDeviceNColorSpace::parse(Array *arr) {
     error(-1, "Bad DeviceN color space (names)");
     goto err2;
   }
-  nComps = obj1.arrayGetLength();
-  for (i = 0; i < nComps; ++i) {
+  nCompsA = obj1.arrayGetLength();
+  for (i = 0; i < nCompsA; ++i) {
     if (!obj1.arrayGet(i, &obj2)->isName()) {
       error(-1, "Bad DeviceN color space (names)");
       obj2.free();
       goto err2;
     }
-    names[i] = new GString(obj2.getName());
+    namesA[i] = new GString(obj2.getName());
     obj2.free();
   }
   obj1.free();
   arr->get(2, &obj1);
-  if (!(alt = GfxColorSpace::parse(&obj1))) {
+  if (!(altA = GfxColorSpace::parse(&obj1))) {
     error(-1, "Bad DeviceN color space (alternate color space)");
     goto err3;
   }
   obj1.free();
-  func = Function::parse(arr->get(3, &obj1));
-  obj1.free();
-  if (!func->isOk()) {
+  arr->get(3, &obj1);
+  if (!(funcA = Function::parse(&obj1))) {
     goto err4;
   }
-  cs = new GfxDeviceNColorSpace(nComps, alt, func);
-  for (i = 0; i < nComps; ++i) {
-    cs->names[i] = names[i];
+  obj1.free();
+  cs = new GfxDeviceNColorSpace(nCompsA, altA, funcA);
+  for (i = 0; i < nCompsA; ++i) {
+    cs->names[i] = namesA[i];
   }
   return cs;
 
  err4:
-  delete func;
-  delete alt;
+  delete altA;
  err3:
-  for (i = 0; i < nComps; ++i) {
-    delete names[i];
+  for (i = 0; i < nCompsA; ++i) {
+    delete namesA[i];
   }
  err2:
   obj1.free();
@@ -1067,8 +1080,8 @@ void GfxDeviceNColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
 // GfxPatternColorSpace
 //------------------------------------------------------------------------
 
-GfxPatternColorSpace::GfxPatternColorSpace(GfxColorSpace *under) {
-  this->under = under;
+GfxPatternColorSpace::GfxPatternColorSpace(GfxColorSpace *underA) {
+  under = underA;
 }
 
 GfxPatternColorSpace::~GfxPatternColorSpace() {
@@ -1084,24 +1097,24 @@ GfxColorSpace *GfxPatternColorSpace::copy() {
 
 GfxColorSpace *GfxPatternColorSpace::parse(Array *arr) {
   GfxPatternColorSpace *cs;
-  GfxColorSpace *under;
+  GfxColorSpace *underA;
   Object obj1;
 
   if (arr->getLength() != 1 && arr->getLength() != 2) {
     error(-1, "Bad Pattern color space");
     return NULL;
   }
-  under = NULL;
+  underA = NULL;
   if (arr->getLength() == 2) {
     arr->get(1, &obj1);
-    if (!(under = GfxColorSpace::parse(&obj1))) {
+    if (!(underA = GfxColorSpace::parse(&obj1))) {
       error(-1, "Bad Pattern color space (underlying color space)");
       obj1.free();
       return NULL;
     }
     obj1.free();
   }
-  cs = new GfxPatternColorSpace(under);
+  cs = new GfxPatternColorSpace(underA);
   return cs;
 }
 
@@ -1122,8 +1135,8 @@ void GfxPatternColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
 // Pattern
 //------------------------------------------------------------------------
 
-GfxPattern::GfxPattern(int type) {
-  this->type = type;
+GfxPattern::GfxPattern(int typeA) {
+  type = typeA;
 }
 
 GfxPattern::~GfxPattern() {
@@ -1237,480 +1250,375 @@ GfxTilingPattern::GfxTilingPattern(GfxTilingPattern *pat):
 }
 
 //------------------------------------------------------------------------
-// Function
+// GfxShading
 //------------------------------------------------------------------------
 
-Function::Function() {
-}
-
-Function::~Function() {
+GfxShading::GfxShading() {
 }
 
-Function *Function::parse(Object *funcObj) {
-  Function *func;
-  Dict *dict;
-  int funcType;
-  Object obj1;
-
-  if (funcObj->isStream()) {
-    dict = funcObj->streamGetDict();
-  } else if (funcObj->isDict()) {
-    dict = funcObj->getDict();
-  } else {
-    error(-1, "Expected function dictionary or stream");
-    return NULL;
-  }
-
-  if (!dict->lookup("FunctionType", &obj1)->isInt()) {
-    error(-1, "Function type is missing or wrong type");
-    obj1.free();
-    return NULL;
-  }
-  funcType = obj1.getInt();
-  obj1.free();
-
-  if (funcType == 0) {
-    func = new SampledFunction(funcObj, dict);
-  } else if (funcType == 2) {
-    func = new ExponentialFunction(funcObj, dict);
-  } else {
-    error(-1, "Unimplemented function type");
-    return NULL;
-  }
-  if (!func->isOk()) {
-    delete func;
-    return NULL;
-  }
-
-  return func;
+GfxShading::~GfxShading() {
+  delete colorSpace;
 }
 
-GBool Function::init(Dict *dict) {
+GfxShading *GfxShading::parse(Object *obj) {
+  GfxShading *shading;
+  int typeA;
+  GfxColorSpace *colorSpaceA;
+  GfxColor backgroundA;
+  GBool hasBackgroundA;
+  double xMinA, yMinA, xMaxA, yMaxA;
+  GBool hasBBoxA;
   Object obj1, obj2;
   int i;
 
-  //----- Domain
-  if (!dict->lookup("Domain", &obj1)->isArray()) {
-    error(-1, "Function is missing domain");
-    goto err2;
-  }
-  m = obj1.arrayGetLength() / 2;
-  if (m > funcMaxInputs) {
-    error(-1, "Functions with more than %d inputs are unsupported",
-         funcMaxInputs);
-    goto err2;
-  }
-  for (i = 0; i < m; ++i) {
-    obj1.arrayGet(2*i, &obj2);
-    if (!obj2.isNum()) {
-      error(-1, "Illegal value in function domain array");
+  shading = NULL;
+  if (obj->isDict()) {
+
+    if (!obj->dictLookup("ShadingType", &obj1)->isInt()) {
+      error(-1, "Invalid ShadingType in shading dictionary");
+      obj1.free();
       goto err1;
     }
-    domain[i][0] = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(2*i+1, &obj2);
-    if (!obj2.isNum()) {
-      error(-1, "Illegal value in function domain array");
+    typeA = obj1.getInt();
+    obj1.free();
+
+    obj->dictLookup("ColorSpace", &obj1);
+    if (!(colorSpaceA = GfxColorSpace::parse(&obj1))) {
+      error(-1, "Bad color space in shading dictionary");
+      obj1.free();
       goto err1;
     }
-    domain[i][1] = obj2.getNum();
-    obj2.free();
-  }
-  obj1.free();
+    obj1.free();
 
-  //----- Range
-  hasRange = gFalse;
-  n = 0;
-  if (dict->lookup("Range", &obj1)->isArray()) {
-    hasRange = gTrue;
-    n = obj1.arrayGetLength() / 2;
-    if (n > funcMaxOutputs) {
-      error(-1, "Functions with more than %d outputs are unsupported",
-           funcMaxOutputs);
-      goto err2;
+    for (i = 0; i < gfxColorMaxComps; ++i) {
+      backgroundA.c[i] = 0;
     }
-    for (i = 0; i < n; ++i) {
-      obj1.arrayGet(2*i, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function range array");
-       goto err1;
+    hasBackgroundA = gFalse;
+    if (obj->dictLookup("Background", &obj1)->isArray()) {
+      if (obj1.arrayGetLength() == colorSpaceA->getNComps()) {
+       hasBackgroundA = gTrue;
+       for (i = 0; i < colorSpaceA->getNComps(); ++i) {
+         backgroundA.c[i] = obj1.arrayGet(i, &obj2)->getNum();
+         obj2.free();
+       }
+      } else {
+       error(-1, "Bad Background in shading dictionary");
       }
-      range[i][0] = obj2.getNum();
-      obj2.free();
-      obj1.arrayGet(2*i+1, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function range array");
-       goto err1;
+    }
+    obj1.free();
+
+    xMinA = yMinA = xMaxA = yMaxA = 0;
+    hasBBoxA = gFalse;
+    if (obj->dictLookup("BBox", &obj1)->isArray()) {
+      if (obj1.arrayGetLength() == 4) {
+       hasBBoxA = gTrue;
+       xMinA = obj1.arrayGet(0, &obj2)->getNum();
+       obj2.free();
+       yMinA = obj1.arrayGet(1, &obj2)->getNum();
+       obj2.free();
+       xMaxA = obj1.arrayGet(2, &obj2)->getNum();
+       obj2.free();
+       yMaxA = obj1.arrayGet(3, &obj2)->getNum();
+       obj2.free();
+      } else {
+       error(-1, "Bad BBox in shading dictionary");
       }
-      range[i][1] = obj2.getNum();
-      obj2.free();
     }
     obj1.free();
+
+    switch (typeA) {
+    case 2:
+      shading = GfxAxialShading::parse(obj->getDict());
+      break;
+    case 3:
+      shading = GfxRadialShading::parse(obj->getDict());
+      break;
+    default:
+      error(-1, "Unimplemented shading type %d", typeA);
+      goto err1;
+    }
+
+    if (shading) {
+      shading->type = typeA;
+      shading->colorSpace = colorSpaceA;
+      shading->background = backgroundA;
+      shading->hasBackground = hasBackgroundA;
+      shading->xMin = xMinA;
+      shading->yMin = yMinA;
+      shading->xMax = xMaxA;
+      shading->yMax = yMaxA;
+      shading->hasBBox = hasBBoxA;
+    } else {
+      delete colorSpaceA;
+    }
   }
 
-  return gTrue;
+  return shading;
 
  err1:
-  obj2.free();
- err2:
-  obj1.free();
-  return gFalse;
+  return NULL;
 }
 
 //------------------------------------------------------------------------
-// SampledFunction
+// GfxAxialShading
 //------------------------------------------------------------------------
 
-SampledFunction::SampledFunction(Object *funcObj, Dict *dict) {
-  Stream *str;
-  int nSamples, sampleBits;
-  double sampleMul;
-  Object obj1, obj2;
-  Guint buf, bitMask;
-  int bits;
-  int s;
+GfxAxialShading::GfxAxialShading(double x0A, double y0A,
+                                double x1A, double y1A,
+                                double t0A, double t1A,
+                                Function **funcsA, int nFuncsA,
+                                GBool extend0A, GBool extend1A) {
   int i;
 
-  samples = NULL;
-  ok = gFalse;
-
-  //----- initialize the generic stuff
-  if (!init(dict)) {
-    goto err1;
-  }
-  if (!hasRange) {
-    error(-1, "Type 0 function is missing range");
-    goto err1;
+  x0 = x0A;
+  y0 = y0A;
+  x1 = x1A;
+  y1 = y1A;
+  t0 = t0A;
+  t1 = t1A;
+  nFuncs = nFuncsA;
+  for (i = 0; i < nFuncs; ++i) {
+    funcs[i] = funcsA[i];
   }
+  extend0 = extend0A;
+  extend1 = extend1A;
+}
 
-  //----- get the stream
-  if (!funcObj->isStream()) {
-    error(-1, "Type 0 function isn't a stream");
-    goto err1;
-  }
-  str = funcObj->getStream();
+GfxAxialShading::~GfxAxialShading() {
+  int i;
 
-  //----- Size
-  if (!dict->lookup("Size", &obj1)->isArray() ||
-      obj1.arrayGetLength() != m) {
-    error(-1, "Function has missing or invalid size array");
-    goto err2;
+  for (i = 0; i < nFuncs; ++i) {
+    delete funcs[i];
   }
-  for (i = 0; i < m; ++i) {
-    obj1.arrayGet(i, &obj2);
-    if (!obj2.isInt()) {
-      error(-1, "Illegal value in function size array");
-      goto err3;
-    }
-    sampleSize[i] = obj2.getInt();
+}
+
+GfxAxialShading *GfxAxialShading::parse(Dict *dict) {
+  double x0A, y0A, x1A, y1A;
+  double t0A, t1A;
+  Function *funcsA[gfxColorMaxComps];
+  int nFuncsA;
+  GBool extend0A, extend1A;
+  Object obj1, obj2;
+  int i;
+
+  x0A = y0A = x1A = y1A = 0;
+  if (dict->lookup("Coords", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 4) {
+    x0A = obj1.arrayGet(0, &obj2)->getNum();
+    obj2.free();
+    y0A = obj1.arrayGet(1, &obj2)->getNum();
+    obj2.free();
+    x1A = obj1.arrayGet(2, &obj2)->getNum();
     obj2.free();
+    y1A = obj1.arrayGet(3, &obj2)->getNum();
+    obj2.free();
+  } else {
+    error(-1, "Missing or invalid Coords in shading dictionary");
+    goto err1;
   }
   obj1.free();
 
-  //----- BitsPerSample
-  if (!dict->lookup("BitsPerSample", &obj1)->isInt()) {
-    error(-1, "Function has missing or invalid BitsPerSample");
-    goto err2;
+  t0A = 0;
+  t1A = 1;
+  if (dict->lookup("Domain", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2) {
+    t0A = obj1.arrayGet(0, &obj2)->getNum();
+    obj2.free();
+    t1A = obj1.arrayGet(1, &obj2)->getNum();
+    obj2.free();
   }
-  sampleBits = obj1.getInt();
-  sampleMul = 1.0 / (double)((1 << sampleBits) - 1);
   obj1.free();
 
-  //----- Encode
-  if (dict->lookup("Encode", &obj1)->isArray() &&
-      obj1.arrayGetLength() == 2*m) {
-    for (i = 0; i < m; ++i) {
-      obj1.arrayGet(2*i, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function encode array");
-       goto err3;
-      }
-      encode[i][0] = obj2.getNum();
-      obj2.free();
-      obj1.arrayGet(2*i+1, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function encode array");
-       goto err3;
+  dict->lookup("Function", &obj1);
+  if (obj1.isArray()) {
+    nFuncsA = obj1.arrayGetLength();
+    for (i = 0; i < nFuncsA; ++i) {
+      obj1.arrayGet(i, &obj2);
+      if (!(funcsA[i] = Function::parse(&obj2))) {
+       obj1.free();
+       obj2.free();
+       goto err1;
       }
-      encode[i][1] = obj2.getNum();
       obj2.free();
     }
   } else {
-    for (i = 0; i < m; ++i) {
-      encode[i][0] = 0;
-      encode[i][1] = sampleSize[i] - 1;
+    nFuncsA = 1;
+    if (!(funcsA[0] = Function::parse(&obj1))) {
+      obj1.free();
+      goto err1;
     }
   }
   obj1.free();
 
-  //----- Decode
-  if (dict->lookup("Decode", &obj1)->isArray() &&
-      obj1.arrayGetLength() == 2*n) {
-    for (i = 0; i < n; ++i) {
-      obj1.arrayGet(2*i, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function decode array");
-       goto err3;
-      }
-      decode[i][0] = obj2.getNum();
-      obj2.free();
-      obj1.arrayGet(2*i+1, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function decode array");
-       goto err3;
-      }
-      decode[i][1] = obj2.getNum();
-      obj2.free();
-    }
-  } else {
-    for (i = 0; i < n; ++i) {
-      decode[i][0] = range[i][0];
-      decode[i][1] = range[i][1];
-    }
+  extend0A = extend1A = gFalse;
+  if (dict->lookup("Extend", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2) {
+    extend0A = obj1.arrayGet(0, &obj2)->getBool();
+    obj2.free();
+    extend1A = obj1.arrayGet(1, &obj2)->getBool();
+    obj2.free();
   }
   obj1.free();
 
-  //----- samples
-  nSamples = n;
-  for (i = 0; i < m; ++i)
-    nSamples *= sampleSize[i];
-  samples = (double *)gmalloc(nSamples * sizeof(double));
-  buf = 0;
-  bits = 0;
-  bitMask = (1 << sampleBits) - 1;
-  str->reset();
-  for (i = 0; i < nSamples; ++i) {
-    if (sampleBits == 8) {
-      s = str->getChar();
-    } else if (sampleBits == 16) {
-      s = str->getChar();
-      s = (s << 8) + str->getChar();
-    } else if (sampleBits == 32) {
-      s = str->getChar();
-      s = (s << 8) + str->getChar();
-      s = (s << 8) + str->getChar();
-      s = (s << 8) + str->getChar();
-    } else {
-      while (bits < sampleBits) {
-       buf = (buf << 8) | (str->getChar() & 0xff);
-       bits += 8;
-      }
-      s = (buf >> (bits - sampleBits)) & bitMask;
-      bits -= sampleBits;
-    }
-    samples[i] = (double)s * sampleMul;
-  }
-  str->close();
+  return new GfxAxialShading(x0A, y0A, x1A, y1A, t0A, t1A,
+                            funcsA, nFuncsA, extend0A, extend1A);
 
-  ok = gTrue;
-  return;
-
- err3:
-  obj2.free();
- err2:
-  obj1.free();
  err1:
-  return;
+  return NULL;
 }
 
-SampledFunction::~SampledFunction() {
-  if (samples) {
-    gfree(samples);
+void GfxAxialShading::getColor(double t, GfxColor *color) {
+  int i;
+
+  for (i = 0; i < nFuncs; ++i) {
+    funcs[i]->transform(&t, &color->c[i]);
   }
 }
 
-SampledFunction::SampledFunction(SampledFunction *func) {
-  int nSamples, i;
+//------------------------------------------------------------------------
+// GfxRadialShading
+//------------------------------------------------------------------------
 
-  memcpy(this, func, sizeof(SampledFunction));
+GfxRadialShading::GfxRadialShading(double x0A, double y0A, double r0A,
+                                  double x1A, double y1A, double r1A,
+                                  double t0A, double t1A,
+                                  Function **funcsA, int nFuncsA,
+                                  GBool extend0A, GBool extend1A) {
+  int i;
 
-  nSamples = n;
-  for (i = 0; i < m; ++i) {
-    nSamples *= sampleSize[i];
+  x0 = x0A;
+  y0 = y0A;
+  r0 = r0A;
+  x1 = x1A;
+  y1 = y1A;
+  r1 = r1A;
+  t0 = t0A;
+  t1 = t1A;
+  nFuncs = nFuncsA;
+  for (i = 0; i < nFuncs; ++i) {
+    funcs[i] = funcsA[i];
   }
-  samples = (double *)gmalloc(nSamples * sizeof(double));
-  memcpy(samples, func->samples, nSamples * sizeof(double));
+  extend0 = extend0A;
+  extend1 = extend1A;
 }
 
-void SampledFunction::transform(double *in, double *out) {
-  double e[4];
-  double s;
-  double x0, x1;
-  int e0, e1;
-  double efrac;
+GfxRadialShading::~GfxRadialShading() {
   int i;
 
-  // map input values into sample array
-  for (i = 0; i < m; ++i) {
-    e[i] = ((in[i] - domain[i][0]) / (domain[i][1] - domain[i][0])) *
-           (encode[i][1] - encode[i][0]) + encode[i][0];
-    if (e[i] < 0) {
-      e[i] = 0;
-    } else if (e[i] > sampleSize[i] - 1) {
-      e[i] = sampleSize[i] - 1;
-    }
-  }
-
-  for (i = 0; i < n; ++i) {
-
-    // m-linear interpolation
-    // (only m=1 is currently supported)
-    e0 = (int)floor(e[0]);
-    e1 = (int)ceil(e[0]);
-    efrac = e[0] - e0;
-    x0 = samples[e0 * n + i];
-    x1 = samples[e1 * n + i];
-    s = (1 - efrac) * x0 + efrac * x1;
-
-    // map output values to range
-    out[i] = s * (decode[i][1] - decode[i][0]) + decode[i][0];
-    if (out[i] < range[i][0]) {
-      out[i] = range[i][0];
-    } else if (out[i] > range[i][1]) {
-      out[i] = range[i][1];
-    }
+  for (i = 0; i < nFuncs; ++i) {
+    delete funcs[i];
   }
 }
 
-//------------------------------------------------------------------------
-// ExponentialFunction
-//------------------------------------------------------------------------
-
-ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) {
+GfxRadialShading *GfxRadialShading::parse(Dict *dict) {
+  double x0A, y0A, r0A, x1A, y1A, r1A;
+  double t0A, t1A;
+  Function *funcsA[gfxColorMaxComps];
+  int nFuncsA;
+  GBool extend0A, extend1A;
   Object obj1, obj2;
-  GBool hasN;
   int i;
 
-  ok = gFalse;
-  hasN = gFalse;
-
-  //----- initialize the generic stuff
-  if (!init(dict)) {
-    goto err1;
-  }
-  if (m != 1) {
-    error(-1, "Exponential function with more than one input");
+  x0A = y0A = r0A = x1A = y1A = r1A = 0;
+  if (dict->lookup("Coords", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 6) {
+    x0A = obj1.arrayGet(0, &obj2)->getNum();
+    obj2.free();
+    y0A = obj1.arrayGet(1, &obj2)->getNum();
+    obj2.free();
+    r0A = obj1.arrayGet(2, &obj2)->getNum();
+    obj2.free();
+    x1A = obj1.arrayGet(3, &obj2)->getNum();
+    obj2.free();
+    y1A = obj1.arrayGet(4, &obj2)->getNum();
+    obj2.free();
+    r1A = obj1.arrayGet(5, &obj2)->getNum();
+    obj2.free();
+  } else {
+    error(-1, "Missing or invalid Coords in shading dictionary");
     goto err1;
   }
+  obj1.free();
 
-  //----- default values
-  for (i = 0; i < funcMaxOutputs; ++i) {
-    c0[i] = 0;
-    c1[i] = 1;
+  t0A = 0;
+  t1A = 1;
+  if (dict->lookup("Domain", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2) {
+    t0A = obj1.arrayGet(0, &obj2)->getNum();
+    obj2.free();
+    t1A = obj1.arrayGet(1, &obj2)->getNum();
+    obj2.free();
   }
+  obj1.free();
 
-  //----- C0
-  if (dict->lookup("C0", &obj1)->isArray()) {
-    if (!hasN) {
-      n = obj1.arrayGetLength();
-    } else if (obj1.arrayGetLength() != n) {
-      error(-1, "Function's C0 array is wrong length");
-      goto err2;
-    }
-    for (i = 0; i < n; ++i) {
+  dict->lookup("Function", &obj1);
+  if (obj1.isArray()) {
+    nFuncsA = obj1.arrayGetLength();
+    for (i = 0; i < nFuncsA; ++i) {
       obj1.arrayGet(i, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function C0 array");
-       goto err3;
+      if (!(funcsA[i] = Function::parse(&obj2))) {
+       obj1.free();
+       obj2.free();
+       goto err1;
       }
-      c0[i] = obj2.getNum();
       obj2.free();
     }
-    obj1.free();
-  }
-
-  //----- C1
-  if (dict->lookup("C1", &obj1)->isArray()) {
-    if (!hasN) {
-      n = obj1.arrayGetLength();
-    } else if (obj1.arrayGetLength() != n) {
-      error(-1, "Function's C1 array is wrong length");
-      goto err2;
-    }
-    for (i = 0; i < n; ++i) {
-      obj1.arrayGet(i, &obj2);
-      if (!obj2.isNum()) {
-       error(-1, "Illegal value in function C1 array");
-       goto err3;
-      }
-      c1[i] = obj2.getNum();
-      obj2.free();
+  } else {
+    nFuncsA = 1;
+    if (!(funcsA[0] = Function::parse(&obj1))) {
+      obj1.free();
+      goto err1;
     }
-    obj1.free();
   }
+  obj1.free();
 
-  //----- N (exponent)
-  if (!dict->lookup("N", &obj1)->isNum()) {
-    error(-1, "Function has missing or invalid N");
-    goto err2;
+  extend0A = extend1A = gFalse;
+  if (dict->lookup("Extend", &obj1)->isArray() &&
+      obj1.arrayGetLength() == 2) {
+    extend0A = obj1.arrayGet(0, &obj2)->getBool();
+    obj2.free();
+    extend1A = obj1.arrayGet(1, &obj2)->getBool();
+    obj2.free();
   }
-  e = obj1.getNum();
   obj1.free();
 
-  ok = gTrue;
-  return;
+  return new GfxRadialShading(x0A, y0A, r0A, x1A, y1A, r1A, t0A, t1A,
+                             funcsA, nFuncsA, extend0A, extend1A);
 
- err3:
-  obj2.free();
- err2:
-  obj1.free();
  err1:
-  return;
-}
-
-ExponentialFunction::~ExponentialFunction() {
-}
-
-ExponentialFunction::ExponentialFunction(ExponentialFunction *func) {
-  memcpy(this, func, sizeof(ExponentialFunction));
+  return NULL;
 }
 
-void ExponentialFunction::transform(double *in, double *out) {
-  double x;
+void GfxRadialShading::getColor(double t, GfxColor *color) {
   int i;
 
-  if (in[0] < domain[0][0]) {
-    x = domain[0][0];
-  } else if (in[0] > domain[0][1]) {
-    x = domain[0][1];
-  } else {
-    x = in[0];
-  }
-  for (i = 0; i < n; ++i) {
-    out[i] = c0[i] + pow(x, e) * (c1[i] - c0[i]);
-    if (hasRange) {
-      if (out[i] < range[i][0]) {
-       out[i] = range[i][0];
-      } else if (out[i] > range[i][1]) {
-       out[i] = range[i][1];
-      }
-    }
+  for (i = 0; i < nFuncs; ++i) {
+    funcs[i]->transform(&t, &color->c[i]);
   }
-  return;
 }
 
 //------------------------------------------------------------------------
 // GfxImageColorMap
 //------------------------------------------------------------------------
 
-GfxImageColorMap::GfxImageColorMap(int bits, Object *decode,
-                                  GfxColorSpace *colorSpace) {
+GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode,
+                                  GfxColorSpace *colorSpaceA) {
   GfxIndexedColorSpace *indexedCS;
   GfxSeparationColorSpace *sepCS;
   int maxPixel, indexHigh;
   Guchar *lookup2;
   Function *sepFunc;
   Object obj;
-  double x;
+  double x[gfxColorMaxComps];
   double y[gfxColorMaxComps];
   int i, j, k;
 
   ok = gTrue;
 
   // bits per component and color space
-  this->bits = bits;
+  bits = bitsA;
   maxPixel = (1 << bits) - 1;
-  this->colorSpace = colorSpace;
+  colorSpace = colorSpaceA;
 
   // get decode map
   if (decode->isNull()) {
@@ -1739,18 +1647,6 @@ GfxImageColorMap::GfxImageColorMap(int bits, Object *decode,
     goto err1;
   }
 
-#if 0 //~
-  // handle the case where fewer than 2^n palette entries of an n-bit
-  // indexed color space are populated (this happens, e.g., in files
-  // optimized by Distiller)
-  if (colorSpace->getMode() == csIndexed) {
-    i = ((GfxIndexedColorSpace *)colorSpace)->getIndexHigh();
-    if (i < maxPixel) {
-      maxPixel = i;
-    }
-  }
-#endif
-
   // Construct a lookup table -- this stores pre-computed decoded
   // values for each component, i.e., the result of applying the
   // decode mapping to each possible image pixel component value.
@@ -1783,8 +1679,8 @@ GfxImageColorMap::GfxImageColorMap(int bits, Object *decode,
     lookup = (double *)gmalloc((maxPixel + 1) * nComps2 * sizeof(double));
     sepFunc = sepCS->getFunc();
     for (i = 0; i <= maxPixel; ++i) {
-      x = decodeLow[0] + (i * decodeRange[0]) / maxPixel;
-      sepFunc->transform(&x, y);
+      x[0] = decodeLow[0] + (i * decodeRange[0]) / maxPixel;
+      sepFunc->transform(x, y);
       for (k = 0; k < nComps2; ++k) {
        lookup[i*nComps2 + k] = y[k];
       }
@@ -2009,19 +1905,34 @@ void GfxPath::curveTo(double x1, double y1, double x2, double y2,
   subpaths[n-1]->curveTo(x1, y1, x2, y2, x3, y3);
 }
 
+void GfxPath::close() {
+  // this is necessary to handle the pathological case of
+  // moveto/closepath/clip, which defines an empty clipping region
+  if (justMoved) {
+    if (n >= size) {
+      size += 16;
+      subpaths = (GfxSubpath **)
+                  grealloc(subpaths, size * sizeof(GfxSubpath *));
+    }
+    subpaths[n] = new GfxSubpath(firstX, firstY);
+    ++n;
+    justMoved = gFalse;
+  }
+  subpaths[n-1]->close();
+}
 
 //------------------------------------------------------------------------
 // GfxState
 //------------------------------------------------------------------------
 
-GfxState::GfxState(double dpi, double px1a, double py1a,
-                  double px2a, double py2a, int rotate, GBool upsideDown) {
+GfxState::GfxState(double dpi, PDFRectangle *pageBox, int rotate,
+                  GBool upsideDown) {
   double k;
 
-  px1 = px1a;
-  py1 = py1a;
-  px2 = px2a;
-  py2 = py2a;
+  px1 = pageBox->x1;
+  py1 = pageBox->y1;
+  px2 = pageBox->x2;
+  py2 = pageBox->y2;
   k = dpi / 72.0;
   if (rotate == 90) {
     ctm[0] = 0;
@@ -2095,6 +2006,11 @@ GfxState::GfxState(double dpi, double px1a, double py1a,
   curX = curY = 0;
   lineX = lineY = 0;
 
+  clipXMin = 0;
+  clipYMin = 0;
+  clipXMax = pageWidth;
+  clipYMax = pageHeight;
+
   saved = NULL;
 }
 
@@ -2112,7 +2028,10 @@ GfxState::~GfxState() {
     delete strokePattern;
   }
   gfree(lineDash);
-  delete path;
+  if (path) {
+    // this gets set to NULL by restore()
+    delete path;
+  }
   if (saved) {
     delete saved;
   }
@@ -2137,10 +2056,70 @@ GfxState::GfxState(GfxState *state) {
     lineDash = (double *)gmalloc(lineDashLength * sizeof(double));
     memcpy(lineDash, state->lineDash, lineDashLength * sizeof(double));
   }
-  path = state->path->copy();
   saved = NULL;
 }
 
+void GfxState::getUserClipBBox(double *xMin, double *yMin,
+                              double *xMax, double *yMax) {
+  double ictm[6];
+  double xMin1, yMin1, xMax1, yMax1, det, tx, ty;
+
+  // invert the CTM
+  det = 1 / (ctm[0] * ctm[3] - ctm[1] * ctm[2]);
+  ictm[0] = ctm[3] * det;
+  ictm[1] = -ctm[1] * det;
+  ictm[2] = -ctm[2] * det;
+  ictm[3] = ctm[0] * det;
+  ictm[4] = (ctm[2] * ctm[5] - ctm[3] * ctm[4]) * det;
+  ictm[5] = (ctm[1] * ctm[4] - ctm[0] * ctm[5]) * det;
+
+  // transform all four corners of the clip bbox; find the min and max
+  // x and y values
+  xMin1 = xMax1 = clipXMin * ictm[0] + clipYMin * ictm[2] + ictm[4];
+  yMin1 = yMax1 = clipXMin * ictm[1] + clipYMin * ictm[3] + ictm[5];
+  tx = clipXMin * ictm[0] + clipYMax * ictm[2] + ictm[4];
+  ty = clipXMin * ictm[1] + clipYMax * ictm[3] + ictm[5];
+  if (tx < xMin1) {
+    xMin1 = tx;
+  } else if (tx > xMax1) {
+    xMax1 = tx;
+  }
+  if (ty < yMin1) {
+    yMin1 = ty;
+  } else if (ty > yMax1) {
+    yMax1 = ty;
+  }
+  tx = clipXMax * ictm[0] + clipYMin * ictm[2] + ictm[4];
+  ty = clipXMax * ictm[1] + clipYMin * ictm[3] + ictm[5];
+  if (tx < xMin1) {
+    xMin1 = tx;
+  } else if (tx > xMax1) {
+    xMax1 = tx;
+  }
+  if (ty < yMin1) {
+    yMin1 = ty;
+  } else if (ty > yMax1) {
+    yMax1 = ty;
+  }
+  tx = clipXMax * ictm[0] + clipYMax * ictm[2] + ictm[4];
+  ty = clipXMax * ictm[1] + clipYMax * ictm[3] + ictm[5];
+  if (tx < xMin1) {
+    xMin1 = tx;
+  } else if (tx > xMax1) {
+    xMax1 = tx;
+  }
+  if (ty < yMin1) {
+    yMin1 = ty;
+  } else if (ty > yMax1) {
+    yMax1 = ty;
+  }
+
+  *xMin = xMin1;
+  *yMin = yMin1;
+  *xMax = xMax1;
+  *yMax = yMax1;
+}
+
 double GfxState::transformWidth(double w) {
   double x, y;
 
@@ -2169,12 +2148,23 @@ void GfxState::getFontTransMat(double *m11, double *m12,
 
 void GfxState::setCTM(double a, double b, double c,
                      double d, double e, double f) {
+  int i;
+
   ctm[0] = a;
   ctm[1] = b;
   ctm[2] = c;
   ctm[3] = d;
   ctm[4] = e;
   ctm[5] = f;
+
+  // avoid FP exceptions on badly messed up PDF files
+  for (i = 0; i < 6; ++i) {
+    if (ctm[i] > 1e10) {
+      ctm[i] = 1e10;
+    } else if (ctm[i] < -1e10) {
+      ctm[i] = -1e10;
+    }
+  }
 }
 
 void GfxState::concatCTM(double a, double b, double c,
@@ -2183,6 +2173,7 @@ void GfxState::concatCTM(double a, double b, double c,
   double b1 = ctm[1];
   double c1 = ctm[2];
   double d1 = ctm[3];
+  int i;
 
   ctm[0] = a * a1 + b * c1;
   ctm[1] = a * b1 + b * d1;
@@ -2190,6 +2181,15 @@ void GfxState::concatCTM(double a, double b, double c,
   ctm[3] = c * b1 + d * d1;
   ctm[4] = e * a1 + f * c1 + ctm[4];
   ctm[5] = e * b1 + f * d1 + ctm[5];
+
+  // avoid FP exceptions on badly messed up PDF files
+  for (i = 0; i < 6; ++i) {
+    if (ctm[i] > 1e10) {
+      ctm[i] = 1e10;
+    } else if (ctm[i] < -1e10) {
+      ctm[i] = -1e10;
+    }
+  }
 }
 
 void GfxState::setFillColorSpace(GfxColorSpace *colorSpace) {
@@ -2233,12 +2233,45 @@ void GfxState::clearPath() {
   path = new GfxPath();
 }
 
-void GfxState::textShift(double tx) {
-  double dx, dy;
-
-  textTransformDelta(tx, 0, &dx, &dy);
-  curX += dx;
-  curY += dy;
+void GfxState::clip() {
+  double xMin, yMin, xMax, yMax, x, y;
+  GfxSubpath *subpath;
+  int i, j;
+
+  xMin = xMax = yMin = yMax = 0; // make gcc happy
+  for (i = 0; i < path->getNumSubpaths(); ++i) {
+    subpath = path->getSubpath(i);
+    for (j = 0; j < subpath->getNumPoints(); ++j) {
+      transform(subpath->getX(j), subpath->getY(j), &x, &y);
+      if (i == 0 && j == 0) {
+       xMin = xMax = x;
+       yMin = yMax = y;
+      } else {
+       if (x < xMin) {
+         xMin = x;
+       } else if (x > xMax) {
+         xMax = x;
+       }
+       if (y < yMin) {
+         yMin = y;
+       } else if (y > yMax) {
+         yMax = y;
+       }
+      }
+    }
+  }
+  if (xMin > clipXMin) {
+    clipXMin = xMin;
+  }
+  if (yMin > clipYMin) {
+    clipYMin = yMin;
+  }
+  if (xMax < clipXMax) {
+    clipXMax = xMax;
+  }
+  if (yMax < clipYMax) {
+    clipYMax = yMax;
+  }
 }
 
 void GfxState::textShift(double tx, double ty) {
@@ -2249,6 +2282,11 @@ void GfxState::textShift(double tx, double ty) {
   curY += dy;
 }
 
+void GfxState::shift(double dx, double dy) {
+  curX += dx;
+  curY += dy;
+}
+
 GfxState *GfxState::save() {
   GfxState *newState;
 
@@ -2262,10 +2300,21 @@ GfxState *GfxState::restore() {
 
   if (saved) {
     oldState = saved;
+
+    // these attributes aren't saved/restored by the q/Q operators
+    oldState->path = path;
+    oldState->curX = curX;
+    oldState->curY = curY;
+    oldState->lineX = lineX;
+    oldState->lineY = lineY;
+
+    path = NULL;
     saved = NULL;
     delete this;
+
   } else {
     oldState = this;
   }
+
   return oldState;
 }
index 2056c4d1fb36f6f110a82fbb08d103f3e3e64e4e..b1f6f28ec9d32954e9e2a5f456496ac2f7835d81 100644 (file)
@@ -2,7 +2,7 @@
 //
 // GfxState.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 
 #include "gtypes.h"
 #include "Object.h"
+#include "Function.h"
 
 class Array;
-class Function;
 class GfxFont;
+struct PDFRectangle;
 
 //------------------------------------------------------------------------
 // GfxColor
 //------------------------------------------------------------------------
 
-#define gfxColorMaxComps 8
+#define gfxColorMaxComps funcMaxOutputs
 
 struct GfxColor {
   double c[gfxColorMaxComps];
@@ -201,14 +202,14 @@ public:
   double getGammaR() { return gammaR; }
   double getGammaG() { return gammaG; }
   double getGammaB() { return gammaB; }
-  double *getMatrix() { return m; }
+  double *getMatrix() { return mat; }
 
 private:
 
   double whiteX, whiteY, whiteZ;    // white point
   double blackX, blackY, blackZ;    // black point
   double gammaR, gammaG, gammaB;    // gamma values
-  double m[9];                     // ABC -> XYZ transform matrix
+  double mat[9];               // ABC -> XYZ transform matrix
 };
 
 //------------------------------------------------------------------------
@@ -283,8 +284,8 @@ private:
 class GfxICCBasedColorSpace: public GfxColorSpace {
 public:
 
-  GfxICCBasedColorSpace(int nComps, GfxColorSpace *alt,
-                       Ref *iccProfileStream);
+  GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA,
+                       Ref *iccProfileStreamA);
   virtual ~GfxICCBasedColorSpace();
   virtual GfxColorSpace *copy();
   virtual GfxColorSpaceMode getMode() { return csICCBased; }
@@ -320,7 +321,7 @@ private:
 class GfxIndexedColorSpace: public GfxColorSpace {
 public:
 
-  GfxIndexedColorSpace(GfxColorSpace *base, int indexHigh);
+  GfxIndexedColorSpace(GfxColorSpace *baseA, int indexHighA);
   virtual ~GfxIndexedColorSpace();
   virtual GfxColorSpace *copy();
   virtual GfxColorSpaceMode getMode() { return csIndexed; }
@@ -356,8 +357,8 @@ private:
 class GfxSeparationColorSpace: public GfxColorSpace {
 public:
 
-  GfxSeparationColorSpace(GString *name, GfxColorSpace *alt,
-                         Function *func);
+  GfxSeparationColorSpace(GString *nameA, GfxColorSpace *altA,
+                         Function *funcA);
   virtual ~GfxSeparationColorSpace();
   virtual GfxColorSpace *copy();
   virtual GfxColorSpaceMode getMode() { return csSeparation; }
@@ -424,7 +425,7 @@ private:
 class GfxPatternColorSpace: public GfxColorSpace {
 public:
 
-  GfxPatternColorSpace(GfxColorSpace *under);
+  GfxPatternColorSpace(GfxColorSpace *underA);
   virtual ~GfxPatternColorSpace();
   virtual GfxColorSpace *copy();
   virtual GfxColorSpaceMode getMode() { return csPattern; }
@@ -454,7 +455,7 @@ private:
 class GfxPattern {
 public:
 
-  GfxPattern(int type);
+  GfxPattern(int typeA);
   virtual ~GfxPattern();
 
   static GfxPattern *parse(Object *obj);
@@ -504,94 +505,100 @@ private:
 };
 
 //------------------------------------------------------------------------
-// Function
+// GfxShading
 //------------------------------------------------------------------------
 
-#define funcMaxInputs  1
-#define funcMaxOutputs 8
-
-class Function {
+class GfxShading {
 public:
 
-  Function();
-
-  virtual ~Function();
-
-  // Construct a function.  Returns NULL if unsuccessful.
-  static Function *parse(Object *funcObj);
-
-  // Initialize the entries common to all function types.
-  GBool init(Dict *dict);
-
-  virtual Function *copy() = 0;
-
-  // Return size of input and output tuples.
-  int getInputSize() { return m; }
-  int getOutputSize() { return n; }
+  GfxShading();
+  virtual ~GfxShading();
 
-  // Transform an input tuple into an output tuple.
-  virtual void transform(double *in, double *out) = 0;
+  static GfxShading *parse(Object *obj);
 
-  virtual GBool isOk() = 0;
+  int getType() { return type; }
+  GfxColorSpace *getColorSpace() { return colorSpace; }
+  GfxColor *getBackground() { return &background; }
+  GBool getHasBackground() { return hasBackground; }
+  void getBBox(double *xMinA, double *yMinA, double *xMaxA, double *yMaxA)
+    { *xMinA = xMin; *yMinA = yMin; *xMaxA = xMax; *yMaxA = yMax; }
+  GBool getHasBBox() { return hasBBox; }
 
-protected:
+private:
 
-  int m, n;                    // size of input and output tuples
-  double                       // min and max values for function domain
-    domain[funcMaxInputs][2];
-  double                       // min and max values for function range
-    range[funcMaxOutputs][2];
-  GBool hasRange;              // set if range is defined
+  int type;
+  GfxColorSpace *colorSpace;
+  GfxColor background;
+  GBool hasBackground;
+  double xMin, yMin, xMax, yMax;
+  GBool hasBBox;
 };
 
 //------------------------------------------------------------------------
-// SampledFunction
+// GfxAxialShading
 //------------------------------------------------------------------------
 
-class SampledFunction: public Function {
+class GfxAxialShading: public GfxShading {
 public:
 
-  SampledFunction(Object *funcObj, Dict *dict);
-  virtual ~SampledFunction();
-  virtual Function *copy() { return new SampledFunction(this); }
-  virtual void transform(double *in, double *out);
-  virtual GBool isOk() { return ok; }
+  GfxAxialShading(double x0A, double y0A,
+                 double x1A, double y1A,
+                 double t0A, double t1A,
+                 Function **funcsA, int nFuncsA,
+                 GBool extend0A, GBool extend1A);
+  virtual ~GfxAxialShading();
 
-private:
+  static GfxAxialShading *parse(Dict *dict);
 
-  SampledFunction(SampledFunction *func);
+  void getCoords(double *x0A, double *y0A, double *x1A, double *y1A)
+    { *x0A = x0; *y0A = y0; *x1A = x1; *y1A = y1; }
+  double getDomain0() { return t0; }
+  double getDomain1() { return t1; }
+  void getColor(double t, GfxColor *color);
+  GBool getExtend0() { return extend0; }
+  GBool getExtend1() { return extend1; }
 
-  int                          // number of samples for each domain element
-    sampleSize[funcMaxInputs];
-  double                       // min and max values for domain encoder
-    encode[funcMaxInputs][2];
-  double                       // min and max values for range decoder
-    decode[funcMaxOutputs][2];
-  double *samples;             // the samples
-  GBool ok;
+private:
+
+  double x0, y0, x1, y1;
+  double t0, t1;
+  Function *funcs[gfxColorMaxComps];
+  int nFuncs;
+  GBool extend0, extend1;
 };
 
 //------------------------------------------------------------------------
-// ExponentialFunction
+// GfxRadialShading
 //------------------------------------------------------------------------
 
-class ExponentialFunction: public Function {
+class GfxRadialShading: public GfxShading {
 public:
 
-  ExponentialFunction(Object *funcObj, Dict *dict);
-  virtual ~ExponentialFunction();
-  virtual Function *copy() { return new ExponentialFunction(this); }
-  virtual void transform(double *in, double *out);
-  virtual GBool isOk() { return ok; }
+  GfxRadialShading(double x0A, double y0A, double r0A,
+                  double x1A, double y1A, double r1A,
+                  double t0A, double t1A,
+                  Function **funcsA, int nFuncsA,
+                  GBool extend0A, GBool extend1A);
+  virtual ~GfxRadialShading();
 
-private:
+  static GfxRadialShading *parse(Dict *dict);
 
-  ExponentialFunction(ExponentialFunction *func);
+  void getCoords(double *x0A, double *y0A, double *r0A,
+                double *x1A, double *y1A, double *r1A)
+    { *x0A = x0; *y0A = y0; *r0A = r0; *x1A = x1; *y1A = y1; *r1A = r1; }
+  double getDomain0() { return t0; }
+  double getDomain1() { return t1; }
+  void getColor(double t, GfxColor *color);
+  GBool getExtend0() { return extend0; }
+  GBool getExtend1() { return extend1; }
 
-  double c0[funcMaxOutputs];
-  double c1[funcMaxOutputs];
-  double e;
-  GBool ok;
+private:
+
+  double x0, y0, r0, x1, y1, r1;
+  double t0, t1;
+  Function *funcs[gfxColorMaxComps];
+  int nFuncs;
+  GBool extend0, extend1;
 };
 
 //------------------------------------------------------------------------
@@ -602,7 +609,7 @@ class GfxImageColorMap {
 public:
 
   // Constructor.
-  GfxImageColorMap(int bits, Object *decode, GfxColorSpace *colorSpace);
+  GfxImageColorMap(int bitsA, Object *decode, GfxColorSpace *colorSpaceA);
 
   // Destructor.
   ~GfxImageColorMap();
@@ -728,7 +735,7 @@ public:
               double x3, double y3);
 
   // Close the last subpath.
-  void close() { subpaths[n-1]->close(); }
+  void close();
 
 private:
 
@@ -750,10 +757,10 @@ class GfxState {
 public:
 
   // Construct a default GfxState, for a device with resolution <dpi>,
-  // page box (<x1>,<y1>)-(<x2>,<y2>), page rotation <rotate>, and
-  // coordinate system specified by <upsideDown>.
-  GfxState(double dpi, double px1a, double py1a,
-          double px2a, double py2a, int rotate, GBool upsideDown);
+  // page box <pageBox>, page rotation <rotate>, and coordinate system
+  // specified by <upsideDown>.
+  GfxState(double dpi, PDFRectangle *pageBox, int rotate,
+          GBool upsideDown);
 
   // Destructor.
   ~GfxState();
@@ -771,6 +778,10 @@ public:
   double getPageHeight() { return pageHeight; }
   GfxColor *getFillColor() { return &fillColor; }
   GfxColor *getStrokeColor() { return &strokeColor; }
+  void getFillGray(double *gray)
+    { fillColorSpace->getGray(&fillColor, gray); }
+  void getStrokeGray(double *gray)
+    { strokeColorSpace->getGray(&fillColor, gray); }
   void getFillRGB(GfxRGB *rgb)
     { fillColorSpace->getRGB(&fillColor, rgb); }
   void getStrokeRGB(GfxRGB *rgb)
@@ -804,6 +815,9 @@ public:
   GfxPath *getPath() { return path; }
   double getCurX() { return curX; }
   double getCurY() { return curY; }
+  void getClipBBox(double *xMin, double *yMin, double *xMax, double *yMax)
+    { *xMin = clipXMin; *yMin = clipYMin; *xMax = clipXMax; *yMax = clipYMax; }
+  void getUserClipBBox(double *xMin, double *yMin, double *xMax, double *yMax);
   double getLineX() { return lineX; }
   double getLineY() { return lineY; }
 
@@ -848,9 +862,9 @@ public:
   void setFlatness(int flatness1) { flatness = flatness1; }
   void setLineJoin(int lineJoin1) { lineJoin = lineJoin1; }
   void setLineCap(int lineCap1) { lineCap = lineCap1; }
-  void setMiterLimit(double miterLimit1) { miterLimit = miterLimit1; }
-  void setFont(GfxFont *font1, double fontSize1)
-    { font = font1; fontSize = fontSize1; }
+  void setMiterLimit(double limit) { miterLimit = limit; }
+  void setFont(GfxFont *fontA, double fontSizeA)
+    { font = fontA; fontSize = fontSizeA; }
   void setTextMat(double a, double b, double c,
                  double d, double e, double f)
     { textMat[0] = a; textMat[1] = b; textMat[2] = c;
@@ -861,12 +875,12 @@ public:
     { wordSpace = space; }
   void setHorizScaling(double scale)
     { horizScaling = 0.01 * scale; }
-  void setLeading(double leading1)
-    { leading = leading1; }
-  void setRise(double rise1)
-    { rise = rise1; }
-  void setRender(int render1)
-    { render = render1; }
+  void setLeading(double leadingA)
+    { leading = leadingA; }
+  void setRise(double riseA)
+    { rise = riseA; }
+  void setRender(int renderA)
+    { render = renderA; }
 
   // Add to path.
   void moveTo(double x, double y)
@@ -880,11 +894,14 @@ public:
     { path->close(); curX = path->getLastX(); curY = path->getLastY(); }
   void clearPath();
 
+  // Update clip region.
+  void clip();
+
   // Text position.
   void textMoveTo(double tx, double ty)
     { lineX = tx; lineY = ty; textTransform(tx, ty, &curX, &curY); }
-  void textShift(double tx);
   void textShift(double tx, double ty);
+  void shift(double dx, double dy);
 
   // Push/pop GfxState on/off stack.
   GfxState *save();
@@ -929,6 +946,9 @@ private:
   double curX, curY;           // current point (user coords)
   double lineX, lineY;         // start of current text line (text coords)
 
+  double clipXMin, clipYMin,   // bounding box for clip region
+         clipXMax, clipYMax;
+
   GfxState *saved;             // next GfxState on stack
 
   GfxState(GfxState *state);
diff --git a/pdf/xpdf/GlobalParams.cc b/pdf/xpdf/GlobalParams.cc
new file mode 100644 (file)
index 0000000..0bc908e
--- /dev/null
@@ -0,0 +1,1065 @@
+//========================================================================
+//
+// GlobalParams.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <string.h>
+#include <ctype.h>
+#if HAVE_PAPER_H
+#include <paper.h>
+#endif
+#include "gmem.h"
+#include "GString.h"
+#include "GList.h"
+#include "GHash.h"
+#include "gfile.h"
+#include "Error.h"
+#include "NameToCharCode.h"
+#include "CharCodeToUnicode.h"
+#include "UnicodeMap.h"
+#include "CMap.h"
+#include "BuiltinFontTables.h"
+#include "FontEncodingTables.h"
+#include "GlobalParams.h"
+
+#include "NameToUnicodeTable.h"
+#include "UnicodeMapTables.h"
+#include "DisplayFontTable.h"
+#include "UTF8.h"
+
+//------------------------------------------------------------------------
+
+GlobalParams *globalParams = NULL;
+
+//------------------------------------------------------------------------
+// DisplayFontParam
+//------------------------------------------------------------------------
+
+DisplayFontParam::DisplayFontParam(GString *nameA,
+                                  DisplayFontParamKind kindA) {
+  name = nameA;
+  kind = kindA;
+  switch (kind) {
+  case displayFontX:
+    x.xlfd = NULL;
+    x.encoding = NULL;
+    break;
+  case displayFontT1:
+    t1.fileName = NULL;
+    break;
+  case displayFontTT:
+    tt.fileName = NULL;
+    break;
+  }
+}
+
+DisplayFontParam::DisplayFontParam(char *nameA, char *xlfdA, char *encodingA) {
+  name = new GString(nameA);
+  kind = displayFontX;
+  x.xlfd = new GString(xlfdA);
+  x.encoding = new GString(encodingA);
+}
+
+DisplayFontParam::~DisplayFontParam() {
+  delete name;
+  switch (kind) {
+  case displayFontX:
+    if (x.xlfd) {
+      delete x.xlfd;
+    }
+    if (x.encoding) {
+      delete x.encoding;
+    }
+    break;
+  case displayFontT1:
+    if (t1.fileName) {
+      delete t1.fileName;
+    }
+    break;
+  case displayFontTT:
+    if (tt.fileName) {
+      delete tt.fileName;
+    }
+    break;
+  }
+}
+
+//------------------------------------------------------------------------
+// PSFontParam
+//------------------------------------------------------------------------
+
+PSFontParam::PSFontParam(GString *pdfFontNameA, int wModeA,
+                        GString *psFontNameA, GString *encodingA) {
+  pdfFontName = pdfFontNameA;
+  wMode = wModeA;
+  psFontName = psFontNameA;
+  encoding = encodingA;
+}
+
+PSFontParam::~PSFontParam() {
+  delete pdfFontName;
+  delete psFontName;
+  if (encoding) {
+    delete encoding;
+  }
+}
+
+//------------------------------------------------------------------------
+// parsing
+//------------------------------------------------------------------------
+
+GlobalParams::GlobalParams(char *cfgFileName) {
+  UnicodeMap *map;
+  DisplayFontParam *dfp;
+  GString *fileName;
+  FILE *f;
+  int i;
+
+  initBuiltinFontTables();
+
+  // scan the encoding in reverse because we want the lowest-numbered
+  // index for each char name ('space' is encoded twice)
+  macRomanReverseMap = new NameToCharCode();
+  for (i = 255; i >= 0; --i) {
+    if (macRomanEncoding[i]) {
+      macRomanReverseMap->add(macRomanEncoding[i], (CharCode)i);
+    }
+  }
+
+  nameToUnicode = new NameToCharCode();
+  cidToUnicodes = new GHash(gTrue);
+  residentUnicodeMaps = new GHash();
+  unicodeMaps = new GHash(gTrue);
+  cMapDirs = new GHash(gTrue);
+  toUnicodeDirs = new GList();
+  displayFonts = new GHash();
+  displayCIDFonts = new GHash();
+  displayNamedCIDFonts = new GHash();
+#if HAVE_PAPER_H
+  const struct paper *paperType;
+  paperinit();
+  paperType = paperinfo(systempapername());
+  psPaperWidth = (int)paperpswidth(paperType);
+  psPaperHeight = (int)paperpsheight(paperType);
+  paperdone();
+#else
+  psPaperWidth = defPaperWidth;
+  psPaperHeight = defPaperHeight;
+#endif
+  psDuplex = gFalse;
+  psLevel = psLevel2;
+  psFile = NULL;
+  psFonts = new GHash();
+  psNamedFonts16 = new GList();
+  psFonts16 = new GList();
+  psEmbedType1 = gTrue;
+  psEmbedTrueType = gTrue;
+  psEmbedCIDPostScript = gTrue;
+  psEmbedCIDTrueType = gTrue;
+  psOPI = gFalse;
+  psASCIIHex = gFalse;
+  textEncoding = new GString("Latin1");
+#if defined(WIN32)
+  textEOL = eolDOS;
+#elif defined(MACOS)
+  textEOL = eolMac;
+#else
+  textEOL = eolUnix;
+#endif
+  fontDirs = new GList();
+  initialZoom = new GString("1");
+  t1libControl = fontRastAALow;
+  freetypeControl = fontRastAALow;
+  urlCommand = NULL;
+  mapNumericCharNames = gTrue;
+  errQuiet = gFalse;
+
+  cidToUnicodeCache = new CIDToUnicodeCache();
+  unicodeMapCache = new UnicodeMapCache();
+  cMapCache = new CMapCache();
+
+  // set up the initial nameToUnicode table
+  for (i = 0; nameToUnicodeTab[i].name; ++i) {
+    nameToUnicode->add(nameToUnicodeTab[i].name, nameToUnicodeTab[i].u);
+  }
+
+  // set up the residentUnicodeMaps table
+  map = new UnicodeMap("Latin1", latin1UnicodeMapRanges, latin1UnicodeMapLen);
+  residentUnicodeMaps->add(map->getEncodingName(), map);
+  map = new UnicodeMap("ASCII7", ascii7UnicodeMapRanges, ascii7UnicodeMapLen);
+  residentUnicodeMaps->add(map->getEncodingName(), map);
+  map = new UnicodeMap("Symbol", symbolUnicodeMapRanges, symbolUnicodeMapLen);
+  residentUnicodeMaps->add(map->getEncodingName(), map);
+  map = new UnicodeMap("ZapfDingbats", zapfDingbatsUnicodeMapRanges,
+                      zapfDingbatsUnicodeMapLen);
+  residentUnicodeMaps->add(map->getEncodingName(), map);
+  map = new UnicodeMap("UTF-8", &mapUTF8);
+  residentUnicodeMaps->add(map->getEncodingName(), map);
+  map = new UnicodeMap("UCS-2", &mapUCS2);
+  residentUnicodeMaps->add(map->getEncodingName(), map);
+
+  // default displayFonts table
+  for (i = 0; displayFontTab[i].name; ++i) {
+    dfp = new DisplayFontParam(displayFontTab[i].name,
+                              displayFontTab[i].xlfd,
+                              displayFontTab[i].encoding);
+    displayFonts->add(dfp->name, dfp);
+  }
+
+  // look for a user config file, then a system-wide config file
+  f = NULL;
+  fileName = NULL;
+  if (cfgFileName && cfgFileName[0]) {
+    fileName = new GString(cfgFileName);
+    if (!(f = fopen(fileName->getCString(), "r"))) {
+      delete fileName;
+    }
+  }
+  if (!f) {
+    fileName = appendToPath(getHomeDir(), xpdfUserConfigFile);
+    if (!(f = fopen(fileName->getCString(), "r"))) {
+      delete fileName;
+    }
+  }
+  if (!f) {
+#if defined(WIN32) && !defined(__CYGWIN32__)
+    char buf[512];
+    i = GetModuleFileName(NULL, buf, sizeof(buf));
+    if (i <= 0 || i >= sizeof(buf)) {
+      // error or path too long for buffer - just use the current dir
+      buf[i] = '\0';
+    }
+    fileName = grabPath(buf);
+    appendToPath(fileName, xpdfSysConfigFile);
+#else
+    fileName = new GString(xpdfSysConfigFile);
+#endif
+    if (!(f = fopen(fileName->getCString(), "r"))) {
+      delete fileName;
+    }
+  }
+  if (f) {
+    parseFile(fileName, f);
+    delete fileName;
+  }
+}
+
+void GlobalParams::parseFile(GString *fileName, FILE *f) {
+  int line;
+  GList *tokens;
+  GString *cmd, *incFile;
+  char *p1, *p2;
+  char buf[512];
+  FILE *f2;
+
+  line = 1;
+  while (fgets(buf, sizeof(buf) - 1, f)) {
+
+    // break the line into tokens
+    tokens = new GList();
+    p1 = buf;
+    while (*p1) {
+      for (; *p1 && isspace(*p1); ++p1) ;
+      if (!*p1) {
+       break;
+      }
+      if (*p1 == '"' || *p1 == '\'') {
+       for (p2 = p1 + 1; *p2 && *p2 != *p1; ++p2) ;
+       ++p1;
+      } else {
+       for (p2 = p1 + 1; *p2 && !isspace(*p2); ++p2) ;
+      }
+      tokens->append(new GString(p1, p2 - p1));
+      p1 = p2 + 1;
+    }
+
+    if (tokens->getLength() > 0 &&
+       ((GString *)tokens->get(0))->getChar(0) != '#') {
+      cmd = (GString *)tokens->get(0);
+      if (!cmd->cmp("include")) {
+       if (tokens->getLength() == 2) {
+         incFile = (GString *)tokens->get(1);
+         if ((f2 = fopen(incFile->getCString(), "r"))) {
+           parseFile(incFile, f2);
+           fclose(f2);
+         } else {
+           error(-1, "Couldn't find included config file: '%s' (%s:%d)",
+                 incFile->getCString(), fileName->getCString(), line);
+         }
+       } else {
+         error(-1, "Bad 'include' config file command (%s:%d)",
+               fileName->getCString(), line);
+       }
+      } else if (!cmd->cmp("nameToUnicode")) {
+       parseNameToUnicode(tokens, fileName, line);
+      } else if (!cmd->cmp("cidToUnicode")) {
+       parseCIDToUnicode(tokens, fileName, line);
+      } else if (!cmd->cmp("unicodeMap")) {
+       parseUnicodeMap(tokens, fileName, line);
+      } else if (!cmd->cmp("cMapDir")) {
+       parseCMapDir(tokens, fileName, line);
+      } else if (!cmd->cmp("toUnicodeDir")) {
+       parseToUnicodeDir(tokens, fileName, line);
+      } else if (!cmd->cmp("displayFontX")) {
+       parseDisplayFont(tokens, displayFonts, displayFontX, fileName, line);
+      } else if (!cmd->cmp("displayFontT1")) {
+       parseDisplayFont(tokens, displayFonts, displayFontT1, fileName, line);
+      } else if (!cmd->cmp("displayFontTT")) {
+       parseDisplayFont(tokens, displayFonts, displayFontTT, fileName, line);
+      } else if (!cmd->cmp("displayCIDFontX")) {
+       parseDisplayFont(tokens, displayCIDFonts,
+                        displayFontX, fileName, line);
+      } else if (!cmd->cmp("displayNamedCIDFontX")) {
+       parseDisplayFont(tokens, displayNamedCIDFonts,
+                        displayFontX, fileName, line);
+      } else if (!cmd->cmp("psFile")) {
+       parsePSFile(tokens, fileName, line);
+      } else if (!cmd->cmp("psFont")) {
+       parsePSFont(tokens, fileName, line);
+      } else if (!cmd->cmp("psNamedFont16")) {
+       parsePSFont16("psNamedFont16", psNamedFonts16,
+                     tokens, fileName, line);
+      } else if (!cmd->cmp("psFont16")) {
+       parsePSFont16("psFont16", psFonts16, tokens, fileName, line);
+      } else if (!cmd->cmp("psPaperSize")) {
+       parsePSPaperSize(tokens, fileName, line);
+      } else if (!cmd->cmp("psDuplex")) {
+       parseYesNo("psDuplex", &psDuplex, tokens, fileName, line);
+      } else if (!cmd->cmp("psLevel")) {
+       parsePSLevel(tokens, fileName, line);
+      } else if (!cmd->cmp("psEmbedType1Fonts")) {
+       parseYesNo("psEmbedType1", &psEmbedType1, tokens, fileName, line);
+      } else if (!cmd->cmp("psEmbedTrueTypeFonts")) {
+       parseYesNo("psEmbedTrueType", &psEmbedTrueType,
+                  tokens, fileName, line);
+      } else if (!cmd->cmp("psEmbedCIDPostScriptFonts")) {
+       parseYesNo("psEmbedCIDPostScript", &psEmbedCIDPostScript,
+                  tokens, fileName, line);
+      } else if (!cmd->cmp("psEmbedCIDTrueTypeFonts")) {
+       parseYesNo("psEmbedCIDTrueType", &psEmbedCIDTrueType,
+                  tokens, fileName, line);
+      } else if (!cmd->cmp("psOPI")) {
+       parseYesNo("psOPI", &psOPI, tokens, fileName, line);
+      } else if (!cmd->cmp("psASCIIHex")) {
+       parseYesNo("psASCIIHex", &psASCIIHex, tokens, fileName, line);
+      } else if (!cmd->cmp("textEncoding")) {
+       parseTextEncoding(tokens, fileName, line);
+      } else if (!cmd->cmp("textEOL")) {
+       parseTextEOL(tokens, fileName, line);
+      } else if (!cmd->cmp("fontDir")) {
+       parseFontDir(tokens, fileName, line);
+      } else if (!cmd->cmp("initialZoom")) {
+       parseInitialZoom(tokens, fileName, line);
+      } else if (!cmd->cmp("t1libControl")) {
+       parseFontRastControl("t1libControl", &t1libControl,
+                            tokens, fileName, line);
+      } else if (!cmd->cmp("freetypeControl")) {
+       parseFontRastControl("freetypeControl", &freetypeControl,
+                            tokens, fileName, line);
+      } else if (!cmd->cmp("urlCommand")) {
+       parseURLCommand(tokens, fileName, line);
+      } else if (!cmd->cmp("mapNumericCharNames")) {
+       parseYesNo("mapNumericCharNames", &mapNumericCharNames,
+                  tokens, fileName, line);
+      } else if (!cmd->cmp("errQuiet")) {
+       parseYesNo("errQuiet", &errQuiet, tokens, fileName, line);
+      } else if (!cmd->cmp("fontpath") || !cmd->cmp("fontmap")) {
+       error(-1, "Unknown config file command");
+       error(-1, "-- the config file format has changed since Xpdf 0.9x");
+      } else {
+       error(-1, "Unknown config file command '%s' (%s:%d)",
+             cmd->getCString(), fileName->getCString(), line);
+      }
+    }
+
+    deleteGList(tokens, GString);
+    ++line;
+  }
+}
+
+void GlobalParams::parseNameToUnicode(GList *tokens, GString *fileName,
+                                        int line) {
+  GString *name;
+  char *tok1, *tok2;
+  FILE *f;
+  char buf[256];
+  int line2;
+  Unicode u;
+
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'nameToUnicode' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  name = (GString *)tokens->get(1);
+  if (!(f = fopen(name->getCString(), "r"))) {
+    error(-1, "Couldn't open 'nameToUnicode' file '%s'",
+         name->getCString());
+    return;
+  }
+  line2 = 1;
+  while (fgets(buf, sizeof(buf), f)) {
+    tok1 = strtok(buf, " \t\r\n");
+    tok2 = strtok(NULL, " \t\r\n");
+    if (tok1 && tok2) {
+      sscanf(tok1, "%x", &u);
+      nameToUnicode->add(tok2, u);
+    } else {
+      error(-1, "Bad line in 'nameToUnicode' file (%s:%d)", name, line2);
+    }
+    ++line2;
+  }
+  fclose(f);
+}
+
+void GlobalParams::parseCIDToUnicode(GList *tokens, GString *fileName,
+                                    int line) {
+  GString *collection, *name, *old;
+
+  if (tokens->getLength() != 3) {
+    error(-1, "Bad 'cidToUnicode' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  collection = (GString *)tokens->get(1);
+  name = (GString *)tokens->get(2);
+  if ((old = (GString *)cidToUnicodes->remove(collection))) {
+    delete old;
+  }
+  cidToUnicodes->add(collection->copy(), name->copy());
+}
+
+void GlobalParams::parseUnicodeMap(GList *tokens, GString *fileName,
+                                  int line) {
+  GString *encodingName, *name, *old;
+
+  if (tokens->getLength() != 3) {
+    error(-1, "Bad 'unicodeMap' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  encodingName = (GString *)tokens->get(1);
+  name = (GString *)tokens->get(2);
+  if ((old = (GString *)unicodeMaps->remove(encodingName))) {
+    delete old;
+  }
+  unicodeMaps->add(encodingName->copy(), name->copy());
+}
+
+void GlobalParams::parseCMapDir(GList *tokens, GString *fileName, int line) {
+  GString *collection, *dir;
+  GList *list;
+
+  if (tokens->getLength() != 3) {
+    error(-1, "Bad 'cMapDir' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  collection = (GString *)tokens->get(1);
+  dir = (GString *)tokens->get(2);
+  if (!(list = (GList *)cMapDirs->lookup(collection))) {
+    list = new GList();
+    cMapDirs->add(collection->copy(), list);
+  }
+  list->append(dir->copy());
+}
+
+void GlobalParams::parseToUnicodeDir(GList *tokens, GString *fileName,
+                                    int line) {
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'toUnicodeDir' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  toUnicodeDirs->append(((GString *)tokens->get(1))->copy());
+}
+
+void GlobalParams::parseDisplayFont(GList *tokens, GHash *fontHash,
+                                   DisplayFontParamKind kind,
+                                   GString *fileName, int line) {
+  DisplayFontParam *param, *old;
+
+  if (tokens->getLength() < 2) {
+    goto err1;
+  }
+  param = new DisplayFontParam(((GString *)tokens->get(1))->copy(), kind);
+  
+  switch (kind) {
+  case displayFontX:
+    if (tokens->getLength() != 4) {
+      goto err2;
+    }
+    param->x.xlfd = ((GString *)tokens->get(2))->copy();
+    param->x.encoding = ((GString *)tokens->get(3))->copy();
+    break;
+  case displayFontT1:
+    if (tokens->getLength() != 3) {
+      goto err2;
+    }
+    param->t1.fileName = ((GString *)tokens->get(2))->copy();
+    break;
+  case displayFontTT:
+    if (tokens->getLength() != 3) {
+      goto err2;
+    }
+    param->tt.fileName = ((GString *)tokens->get(2))->copy();
+    break;
+  }
+
+  if ((old = (DisplayFontParam *)fontHash->remove(param->name))) {
+    delete old;
+  }
+  fontHash->add(param->name, param);
+  return;
+
+ err2:
+  delete param;
+ err1:
+  error(-1, "Bad 'display*Font*' config file command (%s:%d)",
+       fileName->getCString(), line);
+}
+
+void GlobalParams::parsePSPaperSize(GList *tokens, GString *fileName,
+                                   int line) {
+  GString *tok;
+
+  if (tokens->getLength() == 2) {
+    tok = (GString *)tokens->get(1);
+    if (!setPSPaperSize(tok->getCString())) {
+      error(-1, "Bad 'psPaperSize' config file command (%s:%d)",
+           fileName->getCString(), line);
+    }
+  } else if (tokens->getLength() == 3) {
+    tok = (GString *)tokens->get(1);
+    psPaperWidth = atoi(tok->getCString());
+    tok = (GString *)tokens->get(2);
+    psPaperHeight = atoi(tok->getCString());
+  } else {
+    error(-1, "Bad 'psPaperSize' config file command (%s:%d)",
+         fileName->getCString(), line);
+  }
+}
+
+void GlobalParams::parsePSLevel(GList *tokens, GString *fileName, int line) {
+  GString *tok;
+
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'psLevel' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  tok = (GString *)tokens->get(1);
+  if (!tok->cmp("level1")) {
+    psLevel = psLevel1;
+  } else if (!tok->cmp("level1sep")) {
+    psLevel = psLevel1Sep;
+  } else if (!tok->cmp("level2")) {
+    psLevel = psLevel2;
+  } else if (!tok->cmp("level2sep")) {
+    psLevel = psLevel2Sep;
+  } else if (!tok->cmp("level3")) {
+    psLevel = psLevel3;
+  } else if (!tok->cmp("level3Sep")) {
+    psLevel = psLevel3Sep;
+  } else {
+    error(-1, "Bad 'psLevel' config file command (%s:%d)",
+         fileName->getCString(), line);
+  }
+}
+
+void GlobalParams::parsePSFile(GList *tokens, GString *fileName, int line) {
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'psFile' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  if (psFile) {
+    delete psFile;
+  }
+  psFile = ((GString *)tokens->get(1))->copy();
+}
+
+void GlobalParams::parsePSFont(GList *tokens, GString *fileName, int line) {
+  PSFontParam *param;
+
+  if (tokens->getLength() != 3) {
+    error(-1, "Bad 'psFont' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  param = new PSFontParam(((GString *)tokens->get(1))->copy(), 0,
+                         ((GString *)tokens->get(2))->copy(), NULL);
+  psFonts->add(param->pdfFontName, param);
+}
+
+void GlobalParams::parsePSFont16(char *cmdName, GList *fontList,
+                                GList *tokens, GString *fileName, int line) {
+  PSFontParam *param;
+  int wMode;
+  GString *tok;
+
+  if (tokens->getLength() != 5) {
+    error(-1, "Bad '%s' config file command (%s:%d)",
+         cmdName, fileName->getCString(), line);
+    return;
+  }
+  tok = (GString *)tokens->get(2);
+  if (!tok->cmp("H")) {
+    wMode = 0;
+  } else if (!tok->cmp("V")) {
+    wMode = 1;
+  } else {
+    error(-1, "Bad '%s' config file command (%s:%d)",
+         cmdName, fileName->getCString(), line);
+    return;
+  }
+  param = new PSFontParam(((GString *)tokens->get(1))->copy(),
+                         wMode,
+                         ((GString *)tokens->get(3))->copy(),
+                         ((GString *)tokens->get(4))->copy());
+  fontList->append(param);
+}
+
+void GlobalParams::parseTextEncoding(GList *tokens, GString *fileName,
+                                    int line) {
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'textEncoding' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  delete textEncoding;
+  textEncoding = ((GString *)tokens->get(1))->copy();
+}
+
+void GlobalParams::parseTextEOL(GList *tokens, GString *fileName, int line) {
+  GString *tok;
+
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'textEOL' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  tok = (GString *)tokens->get(1);
+  if (!tok->cmp("unix")) {
+    textEOL = eolUnix;
+  } else if (!tok->cmp("dos")) {
+    textEOL = eolDOS;
+  } else if (!tok->cmp("mac")) {
+    textEOL = eolMac;
+  } else {
+    error(-1, "Bad 'textEOL' config file command (%s:%d)",
+         fileName->getCString(), line);
+  }
+}
+
+void GlobalParams::parseFontDir(GList *tokens, GString *fileName, int line) {
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'fontDir' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  fontDirs->append(((GString *)tokens->get(1))->copy());
+}
+
+void GlobalParams::parseInitialZoom(GList *tokens,
+                                   GString *fileName, int line) {
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'initialZoom' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  delete initialZoom;
+  initialZoom = ((GString *)tokens->get(1))->copy();
+}
+
+void GlobalParams::parseFontRastControl(char *cmdName, FontRastControl *val,
+                                       GList *tokens, GString *fileName,
+                                       int line) {
+  GString *tok;
+
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad '%s' config file command (%s:%d)",
+         cmdName, fileName->getCString(), line);
+    return;
+  }
+  tok = (GString *)tokens->get(1);
+  if (!setFontRastControl(val, tok->getCString())) {
+    error(-1, "Bad '%s' config file command (%s:%d)",
+         cmdName, fileName->getCString(), line);
+  }
+}
+
+void GlobalParams::parseURLCommand(GList *tokens, GString *fileName,
+                                  int line) {
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad 'urlCommand' config file command (%s:%d)",
+         fileName->getCString(), line);
+    return;
+  }
+  if (urlCommand) {
+    delete urlCommand;
+  }
+  urlCommand = ((GString *)tokens->get(1))->copy();
+}
+
+void GlobalParams::parseYesNo(char *cmdName, GBool *flag,
+                             GList *tokens, GString *fileName, int line) {
+  GString *tok;
+
+  if (tokens->getLength() != 2) {
+    error(-1, "Bad '%s' config file command (%s:%d)",
+         cmdName, fileName->getCString(), line);
+    return;
+  }
+  tok = (GString *)tokens->get(1);
+  if (!tok->cmp("yes")) {
+    *flag = gTrue;
+  } else if (!tok->cmp("no")) {
+    *flag = gFalse;
+  } else {
+    error(-1, "Bad '%s' config file command (%s:%d)",
+         cmdName, fileName->getCString(), line);
+  }
+}
+
+GlobalParams::~GlobalParams() {
+  GHashIter *iter;
+  GString *key;
+  GList *list;
+
+  freeBuiltinFontTables();
+
+  delete macRomanReverseMap;
+
+  delete nameToUnicode;
+  deleteGHash(cidToUnicodes, GString);
+  deleteGHash(residentUnicodeMaps, UnicodeMap);
+  deleteGHash(unicodeMaps, GString);
+  deleteGList(toUnicodeDirs, GString);
+  deleteGHash(displayFonts, DisplayFontParam);
+  deleteGHash(displayCIDFonts, DisplayFontParam);
+  deleteGHash(displayNamedCIDFonts, DisplayFontParam);
+  if (psFile) {
+    delete psFile;
+  }
+  deleteGHash(psFonts, PSFontParam);
+  deleteGList(psNamedFonts16, PSFontParam);
+  deleteGList(psFonts16, PSFontParam);
+  delete textEncoding;
+  deleteGList(fontDirs, GString);
+  delete initialZoom;
+  if (urlCommand) {
+    delete urlCommand;
+  }
+
+  cMapDirs->startIter(&iter);
+  while (cMapDirs->getNext(&iter, &key, (void **)&list)) {
+    deleteGList(list, GString);
+  }
+  delete cMapDirs;
+
+  delete cidToUnicodeCache;
+  delete unicodeMapCache;
+  delete cMapCache;
+}
+
+//------------------------------------------------------------------------
+// accessors
+//------------------------------------------------------------------------
+
+CharCode GlobalParams::getMacRomanCharCode(char *charName) {
+  return macRomanReverseMap->lookup(charName);
+}
+
+Unicode GlobalParams::mapNameToUnicode(char *charName) {
+  return nameToUnicode->lookup(charName);
+}
+
+FILE *GlobalParams::getCIDToUnicodeFile(GString *collection) {
+  GString *fileName;
+
+  if (!(fileName = (GString *)cidToUnicodes->lookup(collection))) {
+    return NULL;
+  }
+  return fopen(fileName->getCString(), "r");
+}
+
+UnicodeMap *GlobalParams::getResidentUnicodeMap(GString *encodingName) {
+  return (UnicodeMap *)residentUnicodeMaps->lookup(encodingName);
+}
+
+FILE *GlobalParams::getUnicodeMapFile(GString *encodingName) {
+  GString *fileName;
+
+  if (!(fileName = (GString *)unicodeMaps->lookup(encodingName))) {
+    return NULL;
+  }
+  return fopen(fileName->getCString(), "r");
+}
+
+FILE *GlobalParams::findCMapFile(GString *collection, GString *cMapName) {
+  GList *list;
+  GString *dir;
+  GString *fileName;
+  FILE *f;
+  int i;
+
+  if (!(list = (GList *)cMapDirs->lookup(collection))) {
+    return NULL;
+  }
+  for (i = 0; i < list->getLength(); ++i) {
+    dir = (GString *)list->get(i);
+    fileName = appendToPath(dir->copy(), cMapName->getCString());
+    f = fopen(fileName->getCString(), "r");
+    delete fileName;
+    if (f) {
+      return f;
+    }
+  }
+  return NULL;
+}
+
+FILE *GlobalParams::findToUnicodeFile(GString *name) {
+  GString *dir, *fileName;
+  FILE *f;
+  int i;
+
+  for (i = 0; i < toUnicodeDirs->getLength(); ++i) {
+    dir = (GString *)toUnicodeDirs->get(i);
+    fileName = appendToPath(dir->copy(), name->getCString());
+    f = fopen(fileName->getCString(), "r");
+    delete fileName;
+    if (f) {
+      return f;
+    }
+  }
+  return NULL;
+}
+
+DisplayFontParam *GlobalParams::getDisplayFont(GString *fontName) {
+  return (DisplayFontParam *)displayFonts->lookup(fontName);
+}
+
+DisplayFontParam *GlobalParams::getDisplayCIDFont(GString *fontName,
+                                                 GString *collection) {
+  DisplayFontParam *dfp;
+
+  if (!fontName ||
+      !(dfp = (DisplayFontParam *)displayNamedCIDFonts->lookup(fontName))) {
+    dfp = (DisplayFontParam *)displayCIDFonts->lookup(collection);
+  }
+  return dfp;
+}
+
+PSFontParam *GlobalParams::getPSFont(GString *fontName) {
+  return (PSFontParam *)psFonts->lookup(fontName);
+}
+
+PSFontParam *GlobalParams::getPSFont16(GString *fontName,
+                                      GString *collection, int wMode) {
+  PSFontParam *p;
+  int i;
+
+  p = NULL;
+  if (fontName) {
+    for (i = 0; i < psNamedFonts16->getLength(); ++i) {
+      p = (PSFontParam *)psNamedFonts16->get(i);
+      if (!p->pdfFontName->cmp(fontName) &&
+         p->wMode == wMode) {
+       break;
+      }
+      p = NULL;
+    }
+  }
+  if (!p && collection) {
+    for (i = 0; i < psFonts16->getLength(); ++i) {
+      p = (PSFontParam *)psFonts16->get(i);
+      if (!p->pdfFontName->cmp(collection) &&
+         p->wMode == wMode) {
+       break;
+      }
+      p = NULL;
+    }
+  }
+  return p;
+}
+
+GString *GlobalParams::findFontFile(GString *fontName,
+                                   char *ext1, char *ext2) {
+  GString *dir, *fileName;
+  FILE *f;
+  int i;
+
+  for (i = 0; i < fontDirs->getLength(); ++i) {
+    dir = (GString *)fontDirs->get(i);
+    if (ext1) {
+      fileName = appendToPath(dir->copy(), fontName->getCString());
+      fileName->append(ext1);
+      if ((f = fopen(fileName->getCString(), "r"))) {
+       fclose(f);
+       return fileName;
+      }
+      delete fileName;
+    }
+    if (ext2) {
+      fileName = appendToPath(dir->copy(), fontName->getCString());
+      fileName->append(ext2);
+      if ((f = fopen(fileName->getCString(), "r"))) {
+       fclose(f);
+       return fileName;
+      }
+      delete fileName;
+    }
+  }
+  return NULL;
+}
+
+CharCodeToUnicode *GlobalParams::getCIDToUnicode(GString *collection) {
+  return cidToUnicodeCache->getCIDToUnicode(collection);
+}
+
+UnicodeMap *GlobalParams::getUnicodeMap(GString *encodingName) {
+  UnicodeMap *map;
+
+  if ((map = getResidentUnicodeMap(encodingName))) {
+    map->incRefCnt();
+    return map;
+  }
+  return unicodeMapCache->getUnicodeMap(encodingName);
+}
+
+CMap *GlobalParams::getCMap(GString *collection, GString *cMapName) {
+  return cMapCache->getCMap(collection, cMapName);
+}
+
+UnicodeMap *GlobalParams::getTextEncoding() {
+  return getUnicodeMap(textEncoding);
+}
+
+//------------------------------------------------------------------------
+// functions to set parameters
+//------------------------------------------------------------------------
+
+void GlobalParams::setPSFile(char *file) {
+  if (psFile) {
+    delete psFile;
+  }
+  psFile = new GString(file);
+}
+
+GBool GlobalParams::setPSPaperSize(char *size) {
+  if (!strcmp(size, "letter")) {
+    psPaperWidth = 612;
+    psPaperHeight = 792;
+  } else if (!strcmp(size, "legal")) {
+    psPaperWidth = 612;
+    psPaperHeight = 1008;
+  } else if (!strcmp(size, "A4")) {
+    psPaperWidth = 595;
+    psPaperHeight = 842;
+  } else if (!strcmp(size, "A3")) {
+    psPaperWidth = 842;
+    psPaperHeight = 1190;
+  } else {
+    return gFalse;
+  }
+  return gTrue;
+}
+
+void GlobalParams::setPSPaperWidth(int width) {
+  psPaperWidth = width;
+}
+
+void GlobalParams::setPSPaperHeight(int height) {
+  psPaperHeight = height;
+}
+
+void GlobalParams::setPSDuplex(GBool duplex) {
+  psDuplex = duplex;
+}
+
+void GlobalParams::setPSLevel(PSLevel level) {
+  psLevel = level;
+}
+
+void GlobalParams::setPSEmbedType1(GBool embed) {
+  psEmbedType1 = embed;
+}
+
+void GlobalParams::setPSEmbedTrueType(GBool embed) {
+  psEmbedTrueType = embed;
+}
+
+void GlobalParams::setPSEmbedCIDPostScript(GBool embed) {
+  psEmbedCIDPostScript = embed;
+}
+
+void GlobalParams::setPSEmbedCIDTrueType(GBool embed) {
+  psEmbedCIDTrueType = embed;
+}
+
+void GlobalParams::setPSOPI(GBool opi) {
+  psOPI = opi;
+}
+
+void GlobalParams::setPSASCIIHex(GBool hex) {
+  psASCIIHex = hex;
+}
+
+void GlobalParams::setTextEncoding(char *encodingName) {
+  delete textEncoding;
+  textEncoding = new GString(encodingName);
+}
+
+GBool GlobalParams::setTextEOL(char *s) {
+  if (!strcmp(s, "unix")) {
+    textEOL = eolUnix;
+  } else if (!strcmp(s, "dos")) {
+    textEOL = eolDOS;
+  } else if (!strcmp(s, "mac")) {
+    textEOL = eolMac;
+  } else {
+    return gFalse;
+  }
+  return gTrue;
+}
+
+void GlobalParams::setInitialZoom(char *s) {
+  delete initialZoom;
+  initialZoom = new GString(s);
+}
+
+GBool GlobalParams::setT1libControl(char *s) {
+  return setFontRastControl(&t1libControl, s);
+}
+
+GBool GlobalParams::setFreeTypeControl(char *s) {
+  return setFontRastControl(&freetypeControl, s);
+}
+
+GBool GlobalParams::setFontRastControl(FontRastControl *val, char *s) {
+  if (!strcmp(s, "none")) {
+    *val = fontRastNone;
+  } else if (!strcmp(s, "plain")) {
+    *val = fontRastPlain;
+  } else if (!strcmp(s, "low")) {
+    *val = fontRastAALow;
+  } else if (!strcmp(s, "high")) {
+    *val = fontRastAAHigh;
+  } else {
+    return gFalse;
+  }
+  return gTrue;
+}
+
+void GlobalParams::setErrQuiet(GBool errQuietA) {
+  errQuiet = errQuietA;
+}
diff --git a/pdf/xpdf/GlobalParams.h b/pdf/xpdf/GlobalParams.h
new file mode 100644 (file)
index 0000000..b651110
--- /dev/null
@@ -0,0 +1,273 @@
+//========================================================================
+//
+// GlobalParams.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef GLOBALPARAMS_H
+#define GLOBALPARAMS_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include <stdio.h>
+#include "gtypes.h"
+#include "CharTypes.h"
+
+class GString;
+class GList;
+class GHash;
+class NameToCharCode;
+class CharCodeToUnicode;
+class CIDToUnicodeCache;
+class UnicodeMap;
+class UnicodeMapCache;
+class CMap;
+class CMapCache;
+class GlobalParams;
+
+//------------------------------------------------------------------------
+
+// The global parameters object.
+extern GlobalParams *globalParams;
+
+//------------------------------------------------------------------------
+
+enum DisplayFontParamKind {
+  displayFontX,
+  displayFontT1,
+  displayFontTT
+};
+
+class DisplayFontParam {
+public:
+
+  GString *name;               // font name for 8-bit fonts and named
+                               //   CID fonts; collection name for
+                               //   generic CID fonts
+  DisplayFontParamKind kind;
+  union {
+    struct {
+      GString *xlfd;
+      GString *encoding;
+    } x;
+    struct {
+      GString *fileName;
+    } t1;
+    struct {
+      GString *fileName;
+    } tt;
+  };
+
+  DisplayFontParam(GString *nameA, DisplayFontParamKind kindA);
+  DisplayFontParam(char *nameA, char *xlfdA, char *encodingA);
+  ~DisplayFontParam();
+};
+
+// Font rasterizer control.
+enum FontRastControl {
+  fontRastNone,                        // don't use this rasterizer
+  fontRastPlain,               // use it, without anti-aliasing
+  fontRastAALow,               // use it, with low-level anti-aliasing
+  fontRastAAHigh               // use it, with high-level anti-aliasing
+};
+
+//------------------------------------------------------------------------
+
+class PSFontParam {
+public:
+
+  GString *pdfFontName;                // PDF font name for 8-bit fonts and
+                               //   named 16-bit fonts; char collection
+                               //   name for generic 16-bit fonts
+  int wMode;                   // writing mode (0=horiz, 1=vert) for
+                               //   16-bit fonts
+  GString *psFontName;         // PostScript font name
+  GString *encoding;           // encoding, for 16-bit fonts only
+
+  PSFontParam(GString *pdfFontNameA, int wModeA,
+             GString *psFontNameA, GString *encodingA);
+  ~PSFontParam();
+};
+
+//------------------------------------------------------------------------
+
+enum PSLevel {
+  psLevel1,
+  psLevel1Sep,
+  psLevel2,
+  psLevel2Sep,
+  psLevel3,
+  psLevel3Sep
+};
+
+//------------------------------------------------------------------------
+
+enum EndOfLineKind {
+  eolUnix,                     // LF
+  eolDOS,                      // CR+LF
+  eolMac                       // CR
+};
+
+//------------------------------------------------------------------------
+
+class GlobalParams {
+public:
+
+  // Initialize the global parameters by attempting to read a config
+  // file.
+  GlobalParams(char *cfgFileName);
+
+  ~GlobalParams();
+
+  //----- accessors
+
+  CharCode getMacRomanCharCode(char *charName);
+
+  Unicode mapNameToUnicode(char *charName);
+  FILE *getCIDToUnicodeFile(GString *collection);
+  UnicodeMap *getResidentUnicodeMap(GString *encodingName);
+  FILE *getUnicodeMapFile(GString *encodingName);
+  FILE *findCMapFile(GString *collection, GString *cMapName);
+  FILE *findToUnicodeFile(GString *name);
+  DisplayFontParam *getDisplayFont(GString *fontName);
+  DisplayFontParam *getDisplayCIDFont(GString *fontName, GString *collection);
+  GString *getPSFile() { return psFile; }
+  int getPSPaperWidth() { return psPaperWidth; }
+  int getPSPaperHeight() { return psPaperHeight; }
+  GBool getPSDuplex() { return psDuplex; }
+  PSLevel getPSLevel() { return psLevel; }
+  PSFontParam *getPSFont(GString *fontName);
+  PSFontParam *getPSFont16(GString *fontName, GString *collection, int wMode);
+  GBool getPSEmbedType1() { return psEmbedType1; }
+  GBool getPSEmbedTrueType() { return psEmbedTrueType; }
+  GBool getPSEmbedCIDPostScript() { return psEmbedCIDPostScript; }
+  GBool getPSEmbedCIDTrueType() { return psEmbedCIDTrueType; }
+  GBool getPSOPI() { return psOPI; }
+  GBool getPSASCIIHex() { return psASCIIHex; }
+  GString *getTextEncodingName() { return textEncoding; }
+  EndOfLineKind getTextEOL() { return textEOL; }
+  GString *findFontFile(GString *fontName, char *ext1, char *ext2);
+  GString *getInitialZoom() { return initialZoom; }
+  FontRastControl getT1libControl() { return t1libControl; }
+  FontRastControl getFreeTypeControl() { return freetypeControl; }
+  GString *getURLCommand() { return urlCommand; }
+  GBool getMapNumericCharNames() { return mapNumericCharNames; }
+  GBool getErrQuiet() { return errQuiet; }
+
+  CharCodeToUnicode *getCIDToUnicode(GString *collection);
+  UnicodeMap *getUnicodeMap(GString *encodingName);
+  CMap *getCMap(GString *collection, GString *cMapName);
+  UnicodeMap *getTextEncoding();
+
+  //----- functions to set parameters
+
+  void setPSFile(char *file);
+  GBool setPSPaperSize(char *size);
+  void setPSPaperWidth(int width);
+  void setPSPaperHeight(int height);
+  void setPSDuplex(GBool duplex);
+  void setPSLevel(PSLevel level);
+  void setPSEmbedType1(GBool embed);
+  void setPSEmbedTrueType(GBool embed);
+  void setPSEmbedCIDPostScript(GBool embed);
+  void setPSEmbedCIDTrueType(GBool embed);
+  void setPSOPI(GBool opi);
+  void setPSASCIIHex(GBool hex);
+  void setTextEncoding(char *encodingName);
+  GBool setTextEOL(char *s);
+  void setInitialZoom(char *s);
+  GBool setT1libControl(char *s);
+  GBool setFreeTypeControl(char *s);
+  void setErrQuiet(GBool errQuietA);
+
+private:
+
+  void parseFile(GString *fileName, FILE *f);
+  void parseNameToUnicode(GList *tokens, GString *fileName, int line);
+  void parseCIDToUnicode(GList *tokens, GString *fileName, int line);
+  void parseUnicodeMap(GList *tokens, GString *fileName, int line);
+  void parseCMapDir(GList *tokens, GString *fileName, int line);
+  void parseToUnicodeDir(GList *tokens, GString *fileName, int line);
+  void parseDisplayFont(GList *tokens, GHash *fontHash,
+                       DisplayFontParamKind kind,
+                       GString *fileName, int line);
+  void parsePSFile(GList *tokens, GString *fileName, int line);
+  void parsePSPaperSize(GList *tokens, GString *fileName, int line);
+  void parsePSLevel(GList *tokens, GString *fileName, int line);
+  void parsePSFont(GList *tokens, GString *fileName, int line);
+  void parsePSFont16(char *cmdName, GList *fontList,
+                    GList *tokens, GString *fileName, int line);
+  void parseTextEncoding(GList *tokens, GString *fileName, int line);
+  void parseTextEOL(GList *tokens, GString *fileName, int line);
+  void parseFontDir(GList *tokens, GString *fileName, int line);
+  void parseInitialZoom(GList *tokens, GString *fileName, int line);
+  void parseFontRastControl(char *cmdName, FontRastControl *val,
+                           GList *tokens, GString *fileName, int line);
+  void parseURLCommand(GList *tokens, GString *fileName, int line);
+  void parseYesNo(char *cmdName, GBool *flag,
+                 GList *tokens, GString *fileName, int line);
+  GBool setFontRastControl(FontRastControl *val, char *s);
+
+  //----- static tables
+
+  NameToCharCode *             // mapping from char name to
+    macRomanReverseMap;                //   MacRomanEncoding index
+
+  //----- user-modifiable settings
+
+  NameToCharCode *             // mapping from char name to Unicode
+    nameToUnicode;
+  GHash *cidToUnicodes;                // files for mappings from char collections
+                               //   to Unicode, indexed by collection name
+                               //   [GString]
+  GHash *residentUnicodeMaps;  // mappings from Unicode to char codes,
+                               //   indexed by encoding name [UnicodeMap]
+  GHash *unicodeMaps;          // files for mappings from Unicode to char
+                               //   codes, indexed by encoding name [GString]
+  GHash *cMapDirs;             // list of CMap dirs, indexed by collection
+                               //   name [GList[GString]]
+  GList *toUnicodeDirs;                // list of ToUnicode CMap dirs [GString]
+  GHash *displayFonts;         // display font info, indexed by font name
+                               //   [DisplayFontParam]
+  GHash *displayCIDFonts;      // display CID font info, indexed by
+                               //   collection [DisplayFontParam]
+  GHash *displayNamedCIDFonts; // display CID font info, indexed by
+                               //   font name [DisplayFontParam]
+  GString *psFile;             // PostScript file or command (for xpdf)
+  int psPaperWidth;            // paper size, in PostScript points, for
+  int psPaperHeight;           //   PostScript output
+  GBool psDuplex;              // enable duplexing in PostScript?
+  PSLevel psLevel;             // PostScript level to generate
+  GHash *psFonts;              // PostScript font info, indexed by PDF
+                               //   font name [PSFontParam]
+  GList *psNamedFonts16;       // named 16-bit fonts [PSFontParam]
+  GList *psFonts16;            // generic 16-bit fonts [PSFontParam]
+  GBool psEmbedType1;          // embed Type 1 fonts?
+  GBool psEmbedTrueType;       // embed TrueType fonts?
+  GBool psEmbedCIDPostScript;  // embed CID PostScript fonts?
+  GBool psEmbedCIDTrueType;    // embed CID TrueType fonts?
+  GBool psOPI;                 // generate PostScript OPI comments?
+  GBool psASCIIHex;            // use ASCIIHex instead of ASCII85?
+  GString *textEncoding;       // encoding (unicodeMap) to use for text
+                               //   output
+  EndOfLineKind textEOL;       // type of EOL marker to use for text
+                               //   output
+  GList *fontDirs;             // list of font dirs [GString]
+  GString *initialZoom;                // initial zoom level
+  FontRastControl t1libControl;        // t1lib rasterization mode
+  FontRastControl              // FreeType rasterization mode
+    freetypeControl;
+  GString *urlCommand;         // command executed for URL links
+  GBool mapNumericCharNames;   // map numeric char names (from font subsets)?
+  GBool errQuiet;              // suppress error messages?
+
+  CIDToUnicodeCache *cidToUnicodeCache;
+  UnicodeMapCache *unicodeMapCache;
+  CMapCache *cMapCache;
+};
+
+#endif
index 9cd128002ea2f0fb2d140ab2667b0ce15e983489..d6c2eb3e7fc8284393ff554c84e39e5edb58c48c 100644 (file)
@@ -2,7 +2,7 @@
 //
 // ImageOutputDev.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include "Stream.h"
 #include "ImageOutputDev.h"
 
-ImageOutputDev::ImageOutputDev(char *fileRoot1, GBool dumpJPEG1) {
-  fileRoot = copyString(fileRoot1);
+ImageOutputDev::ImageOutputDev(char *fileRootA, GBool dumpJPEGA) {
+  fileRoot = copyString(fileRootA);
   fileName = (char *)gmalloc(strlen(fileRoot) + 20);
-  dumpJPEG = dumpJPEG1;
+  dumpJPEG = dumpJPEGA;
   imgNum = 0;
   ok = gTrue;
 }
@@ -40,9 +41,10 @@ void ImageOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
                                   GBool inlineImg) {
   FILE *f;
   int c;
+  int size, i;
 
   // dump JPEG file
-  if (dumpJPEG && str->getKind() == strDCT) {
+  if (dumpJPEG && str->getKind() == strDCT && !inlineImg) {
 
     // open the image file
     sprintf(fileName, "%s-%03d.jpg", fileRoot, imgNum);
@@ -60,6 +62,7 @@ void ImageOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
     while ((c = str->getChar()) != EOF)
       fputc(c, f);
 
+    str->close();
     fclose(f);
 
   // dump PBM file
@@ -79,26 +82,32 @@ void ImageOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
     str->reset();
 
     // copy the stream
-    while ((c = str->getChar()) != EOF)
-      fputc(c, f);
+    size = height * ((width + 7) / 8);
+    for (i = 0; i < size; ++i) {
+      fputc(str->getChar(), f);
+    }
 
+    str->close();
     fclose(f);
   }
 }
 
 void ImageOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
                               int width, int height,
-                              GfxImageColorMap *colorMap, GBool inlineImg) {
+                              GfxImageColorMap *colorMap,
+                              int *maskColors, GBool inlineImg) {
   FILE *f;
   ImageStream *imgStr;
   Guchar pixBuf[4];
   GfxRGB rgb;
   int x, y;
   int c;
+  int size, i;
 
   // dump JPEG file
   if (dumpJPEG && str->getKind() == strDCT &&
-      colorMap->getNumPixelComps() == 3) {
+      colorMap->getNumPixelComps() == 3 &&
+      !inlineImg) {
 
     // open the image file
     sprintf(fileName, "%s-%03d.jpg", fileRoot, imgNum);
@@ -116,6 +125,33 @@ void ImageOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
     while ((c = str->getChar()) != EOF)
       fputc(c, f);
 
+    str->close();
+    fclose(f);
+
+  // dump PBM file
+  } else if (colorMap->getNumPixelComps() == 1 &&
+            colorMap->getBits() == 1) {
+
+    // open the image file and write the PBM header
+    sprintf(fileName, "%s-%03d.pbm", fileRoot, imgNum);
+    ++imgNum;
+    if (!(f = fopen(fileName, "wb"))) {
+      error(-1, "Couldn't open image file '%s'", fileName);
+      return;
+    }
+    fprintf(f, "P4\n");
+    fprintf(f, "%d %d\n", width, height);
+
+    // initialize stream
+    str->reset();
+
+    // copy the stream
+    size = height * ((width + 7) / 8);
+    for (i = 0; i < size; ++i) {
+      fputc(str->getChar(), f);
+    }
+
+    str->close();
     fclose(f);
 
   // dump PPM file
index 60e6224994bda2ebb3a55832fe469b178b32c591..5828841145c378d496a3a1b43f0cd4f361350147 100644 (file)
@@ -2,7 +2,7 @@
 //
 // ImageOutputDev.h
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -30,7 +30,7 @@ public:
   // <fileRoot>-NNN.<type>.  Normally, all images are written as PBM
   // (.pbm) or PPM (.ppm) files.  If <dumpJPEG> is set, JPEG images are
   // written as JPEG (.jpg) files.
-  ImageOutputDev(char *fileRoot1, GBool dumpJPEG1);
+  ImageOutputDev(char *fileRootA, GBool dumpJPEGA);
 
   // Destructor.
   virtual ~ImageOutputDev();
@@ -38,6 +38,13 @@ public:
   // Check if file was successfully created.
   virtual GBool isOk() { return ok; }
 
+  // Does this device use beginType3Char/endType3Char?  Otherwise,
+  // text in Type 3 fonts will be drawn with drawChar/drawString.
+  virtual GBool interpretType3Chars() { return gFalse; }
+
+  // Does this device need non-text content?
+  virtual GBool needNonText() { return gFalse; }
+
   //---- get info about output device
 
   // Does this device use upside-down coordinates?
@@ -53,7 +60,7 @@ public:
                             GBool inlineImg);
   virtual void drawImage(GfxState *state, Object *ref, Stream *str,
                         int width, int height, GfxImageColorMap *colorMap,
-                        GBool inlineImg);
+                        int *maskColors, GBool inlineImg);
 
 private:
 
index 8b376e419519aa57800d4b40d9ab6e588f0da5c6..ba5a332bc48fd2fa794fabb167617034b0591abc 100644 (file)
@@ -2,7 +2,7 @@
 //
 // LTKOutputDev.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include "GfxState.h"
 #include "GfxFont.h"
 #include "Error.h"
-#include "Params.h"
 #include "LTKOutputDev.h"
 
 //------------------------------------------------------------------------
 
-LTKOutputDev::LTKOutputDev(LTKWindow *win1, unsigned long paperColor):
-  XOutputDev(win1->getDisplay(),
-            ((LTKScrollingCanvas *)win1->findWidget("canvas"))->getPixmap(),
-            0, win1->getColormap(), paperColor)
+LTKOutputDev::LTKOutputDev(LTKWindow *winA, GBool reverseVideoA,
+                          unsigned long paperColor, GBool installCmap,
+                          GBool rgbCubeSize, GBool incrementalUpdateA):
+  XOutputDev(winA->getDisplay(),
+            ((LTKScrollingCanvas *)winA->findWidget("canvas"))->getPixmap(),
+            0, winA->getColormap(), reverseVideoA, paperColor,
+            installCmap, rgbCubeSize)
 {
-  win = win1;
+  win = winA;
   canvas = (LTKScrollingCanvas *)win->findWidget("canvas");
   setPixmap(canvas->getPixmap(),
            canvas->getRealWidth(), canvas->getRealHeight());
+  incrementalUpdate = incrementalUpdateA;
 }
 
 LTKOutputDev::~LTKOutputDev() {
@@ -48,10 +52,21 @@ void LTKOutputDev::startPage(int pageNum, GfxState *state) {
   setPixmap(canvas->getPixmap(),
            canvas->getRealWidth(), canvas->getRealHeight());
   XOutputDev::startPage(pageNum, state);
-  canvas->redraw();
+  if (incrementalUpdate) {
+    canvas->redraw();
+  }
+}
+
+void LTKOutputDev::endPage() {
+  if (!incrementalUpdate) {
+    canvas->redraw();
+  }
+  XOutputDev::endPage();
 }
 
 void LTKOutputDev::dump() {
-  canvas->redraw();
+  if (incrementalUpdate) {
+    canvas->redraw();
+  }
   XOutputDev::dump();
 }
index f8d7ddad9fd6b3cda818ea7baf4d20121e1d6546..7b996dc28cf081eab22c8b8867191e07e1c8532f 100644 (file)
@@ -2,7 +2,7 @@
 //
 // LTKOutputDev.h
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -25,7 +25,9 @@ class LTKWindow;
 class LTKOutputDev: public XOutputDev {
 public:
 
-  LTKOutputDev(LTKWindow *win1, unsigned long paperColor);
+  LTKOutputDev(LTKWindow *winA, GBool reverseVideoA,
+              unsigned long paperColor, GBool installCmap,
+              GBool rgbCubeSize, GBool incrementalUpdateA);
 
   ~LTKOutputDev();
 
@@ -34,6 +36,9 @@ public:
   // Start a page.
   virtual void startPage(int pageNum, GfxState *state);
 
+  // End a page.
+  virtual void endPage();
+
   // Dump page contents to display.
   virtual void dump();
 
@@ -41,6 +46,7 @@ private:
 
   LTKWindow *win;              // window
   LTKScrollingCanvas *canvas;  // drawing canvas
+  GBool incrementalUpdate;     // incrementally update the display?
 };
 
 #endif
index 4ca8cfe9f51e323d3fa41fd16bf6a7fddbcb0f8f..d037469113d31506e230ccea6cba54354c636277 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Lexer.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <string.h>
@@ -44,22 +45,22 @@ static char specialChars[256] = {
 // Lexer
 //------------------------------------------------------------------------
 
-Lexer::Lexer(Stream *str) {
+Lexer::Lexer(XRef *xref, Stream *str) {
   Object obj;
 
   curStr.initStream(str);
-  streams = new Array();
+  streams = new Array(xref);
   streams->add(curStr.copy(&obj));
   strPtr = 0;
   freeArray = gTrue;
   curStr.streamReset();
 }
 
-Lexer::Lexer(Object *obj) {
+Lexer::Lexer(XRef *xref, Object *obj) {
   Object obj2;
 
   if (obj->isStream()) {
-    streams = new Array();
+    streams = new Array(xref);
     freeArray = gTrue;
     streams->add(obj->copy(&obj2));
   } else {
@@ -204,11 +205,15 @@ Object *Lexer::getObj(Object *obj) {
 
       case '(':
        ++numParen;
+       c2 = c;
        break;
 
       case ')':
-       if (--numParen == 0)
+       if (--numParen == 0) {
          done = gTrue;
+       } else {
+         c2 = c;
+       }
        break;
 
       case '\\':
index 70144b86bc3216db4caacf0d4ce8e7aa19bd16e0..8a01ab25e9ae96e80863e6e15d24d15e5e530543 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Lexer.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -16,6 +16,8 @@
 #include "Object.h"
 #include "Stream.h"
 
+class XRef;
+
 #define tokBufSize 128         // size of token buffer
 
 //------------------------------------------------------------------------
@@ -27,11 +29,11 @@ public:
 
   // Construct a lexer for a single stream.  Deletes the stream when
   // lexer is deleted.
-  Lexer(Stream *str);
+  Lexer(XRef *xref, Stream *str);
 
   // Construct a lexer for a stream or array of streams (assumes obj
   // is either a stream or array of streams).
-  Lexer(Object *obj);
+  Lexer(XRef *xref, Object *obj);
 
   // Destructor.
   ~Lexer();
@@ -49,13 +51,14 @@ public:
   Stream *getStream()
     { return curStr.isNone() ? (Stream *)NULL : curStr.getStream(); }
 
-  // Get current position in file.
+  // Get current position in file.  This is only used for error
+  // messages, so it returns an int instead of a Guint.
   int getPos()
-    { return curStr.isNone() ? -1 : curStr.streamGetPos(); }
+    { return curStr.isNone() ? -1 : (int)curStr.streamGetPos(); }
 
   // Set position in file.
-  void setPos(int pos)
-    { if (!curStr.isNone()) curStr.streamSetPos(pos); }
+  void setPos(Guint pos, int dir = 0)
+    { if (!curStr.isNone()) curStr.streamSetPos(pos, dir); }
 
 private:
 
index adb8c97faa8e70b13a21594ecea8f27b8aa61df4..af64c8bef5d713977649ad9e2e0909ee4fbee81f 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Link.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include <string.h>
 #include "gmem.h"
@@ -28,31 +29,27 @@ static GString *getFileSpecName(Object *fileSpecObj);
 // LinkDest
 //------------------------------------------------------------------------
 
-LinkDest::LinkDest(Array *a, GBool pageIsRef1) {
+LinkDest::LinkDest(Array *a) {
   Object obj1, obj2;
 
   // initialize fields
-  pageIsRef = pageIsRef1;
   left = bottom = right = top = zoom = 0;
   ok = gFalse;
 
   // get page
-  if (pageIsRef) {
-    if (!a->getNF(0, &obj1)->isRef()) {
-      error(-1, "Bad annotation destination");
-      goto err2;
-    }
+  a->getNF(0, &obj1);
+  if (obj1.isInt()) {
+    pageNum = obj1.getInt() + 1;
+    pageIsRef = gFalse;
+  } else if (obj1.isRef()) {
     pageRef.num = obj1.getRefNum();
     pageRef.gen = obj1.getRefGen();
-    obj1.free();
+    pageIsRef = gTrue;
   } else {
-    if (!a->get(0, &obj1)->isInt()) {
-      error(-1, "Bad annotation destination");
-      goto err2;
-    }
-    pageNum = obj1.getInt() + 1;
-    obj1.free();
+    error(-1, "Bad annotation destination");
+    goto err2;
   }
+  obj1.free();
 
   // get destination type
   a->get(1, &obj1);
@@ -220,7 +217,7 @@ LinkGoTo::LinkGoTo(Object *destObj) {
 
   // destination dictionary
   } else if (destObj->isArray()) {
-    dest = new LinkDest(destObj->getArray(), gTrue);
+    dest = new LinkDest(destObj->getArray());
     if (!dest->isOk()) {
       delete dest;
       dest = NULL;
@@ -258,7 +255,7 @@ LinkGoToR::LinkGoToR(Object *fileSpecObj, Object *destObj) {
 
   // destination dictionary
   } else if (destObj->isArray()) {
-    dest = new LinkDest(destObj->getArray(), gFalse);
+    dest = new LinkDest(destObj->getArray());
     if (!dest->isOk()) {
       delete dest;
       dest = NULL;
@@ -384,8 +381,8 @@ LinkNamed::~LinkNamed() {
 // LinkUnknown
 //------------------------------------------------------------------------
 
-LinkUnknown::LinkUnknown(char *action1) {
-  action = new GString(action1);
+LinkUnknown::LinkUnknown(char *actionA) {
+  action = new GString(actionA);
 }
 
 LinkUnknown::~LinkUnknown() {
@@ -445,13 +442,16 @@ Link::Link(Dict *dict, GString *baseURI) {
   }
 
   // get border
-  borderW = 0;
+  borderW = 1;
   if (!dict->lookup("Border", &obj1)->isNull()) {
-    if (obj1.isArray() && obj1.arrayGet(2, &obj2)->isNum())
-      borderW = obj2.getNum();
-    else
-      error(-1, "Bad annotation border");
-    obj2.free();
+    if (obj1.isArray() && obj1.arrayGetLength() >= 3) {
+      if (obj1.arrayGet(2, &obj2)->isNum()) {
+       borderW = obj2.getNum();
+      } else {
+       error(-1, "Bad annotation border");
+      }
+      obj2.free();
+    }
   }
   obj1.free();
 
@@ -578,7 +578,7 @@ Links::~Links() {
 LinkAction *Links::find(double x, double y) {
   int i;
 
-  for (i = 0; i < numLinks; ++i) {
+  for (i = numLinks - 1; i >= 0; --i) {
     if (links[i]->inRect(x, y)) {
       return links[i]->getAction();
     }
index 7e00510c9273288c786e85eebe36c58c60b3e7a1..4c644b86b3ecc19c0b07dd0938239ee3a69d22d9 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Link.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -63,10 +63,8 @@ enum LinkDestKind {
 class LinkDest {
 public:
 
-  // Build a LinkDest from the array.  If <pageIsRef> is true, the
-  // page is specified by an object reference; otherwise the page is
-  // specified by a (zero-relative) page number.
-  LinkDest(Array *a, GBool pageIsRef1);
+  // Build a LinkDest from the array.
+  LinkDest(Array *a);
 
   // Copy a LinkDest.
   LinkDest *copy() { return new LinkDest(this); }
@@ -249,7 +247,7 @@ class LinkUnknown: public LinkAction {
 public:
 
   // Build a LinkUnknown with the specified action type.
-  LinkUnknown(char *action1);
+  LinkUnknown(char *actionA);
 
   // Destructor.
   virtual ~LinkUnknown();
index c3806120f6a1fb177eac0fafd1b71641f89e6107..ed2d451c2673033712c460e36fff31b066382bca 100644 (file)
@@ -5,7 +5,8 @@ INCLUDES =                                      \
        -DDATADIR=\""$(datadir)"\"              \
        -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
        $(EXTRA_GLIB_CFLAGS)                    \
-       $(EXTRA_GNOME_CFLAGS)
+       $(EXTRA_GNOME_CFLAGS)                   \
+       $(libpaper_CFLAGS)
 
 if WITH_GNOME
 gui = gpdf
@@ -20,54 +21,81 @@ bin_PROGRAMS =      $(gui)  bonobo-application-x-pdf
 
 
 common_sources =               \
+       Annot.cc                \
+       Annot.h                 \
        Array.cc                \
        Array.h                 \
        BaseFile.h              \
+       BuiltinFont.cc          \
+       BuiltinFont.h           \
+       BuiltinFontTables.cc    \
+       BuiltinFontTables.h     \
+       CMap.cc                 \
+       CMap.h                  \
        Catalog.cc              \
        Catalog.h               \
-       CompactFontInfo.h       \
+       CharCodeToUnicode.cc    \
+       CharCodeToUnicode.h     \
+       CharTypes.h             \
+       CompactFontTables.h     \
        Decrypt.cc              \
        Decrypt.h               \
        Dict.cc                 \
        Dict.h                  \
+       DisplayFontTable.h      \
        Error.cc                \
        Error.h                 \
-       FontEncoding.cc         \
-       FontEncoding.h          \
+       ErrorCodes.h            \
+       FTFont.cc               \
+       FTFont.h                \
+       FontEncodingTables.cc   \
+       FontEncodingTables.h    \
        FontFile.cc             \
        FontFile.h              \
-       FontInfo.h              \
-       FormWidget.cc           \
-       FormWidget.h            \
+       Function.cc             \
+       Function.h              \
        Gfx.cc                  \
        Gfx.h                   \
        GfxFont.cc              \
        GfxFont.h               \
        GfxState.cc             \
        GfxState.h              \
+       GlobalParams.cc         \
+       GlobalParams.h          \
        Lexer.cc                \
        Lexer.h                 \
        Link.cc                 \
        Link.h                  \
+       NameToCharCode.cc       \
+       NameToCharCode.h        \
+       NameToUnicodeTable.h    \
        Object.cc               \
        Object.h                \
        OutputDev.cc            \
        OutputDev.h             \
+       PDFDoc.cc               \
+       PDFDoc.h                \
+       PSTokenizer.cc          \
+       PSTokenizer.h           \
        Page.cc                 \
        Page.h                  \
-       Params.cc               \
-       Params.h                \
        Parser.cc               \
        Parser.h                \
-       PDFDoc.cc               \
-       PDFDoc.h                \
-       StdFontInfo.h           \
+       SFont.cc                \
+       SFont.h                 \
+       Stream-CCITT.h          \
        Stream.cc               \
        Stream.h                \
-       Stream-CCITT.h          \
-       TextOutputDev.h         \
-       TextOutputFontInfo.h    \
+       T1Font.cc               \
+       T1Font.h                \
+       TTFont.cc               \
+       TTFont.h                \
        TextOutputDev.cc        \
+       TextOutputDev.h         \
+       UTF8.h                  \
+       UnicodeMap.cc           \
+       UnicodeMap.h            \
+       UnicodeMapTables.h      \
        XRef.cc                 \
        XRef.h
 
@@ -100,24 +128,19 @@ bonobo_application_x_pdf_LDADD =  \
        $(GNOME_LIBDIR)                 \
        $(EXTRA_GNOME_LIBS)             \
        $(EXTRA_GLIB_LIBS)              \
-       $(INTLLIBS)
+       $(INTLLIBS)                     \
+       $(libpaper_CFLAGS)
 
 xpdf_SOURCES =                 \
        $(common_sources)       \
        XOutputDev.cc           \
-       SFont.cc                \
-       SFont.h                 \
-       T1Font.cc               \
-       T1Font.h                \
-       TTFont.cc               \
-       TTFont.h                \
        LTKOutputDev.cc         \
        PSOutputDev.cc          \
        PSOutputDev.h           \
        xpdf.cc
 
 xpdf_CFLAGS = $(X_CFLAGS)
-xpdf_LDADD = ../goo/libgoo.a ../ltk/libltk.a -lXpm $(EXTRA_GNOME_LIBS) 
+xpdf_LDADD = ../goo/libgoo.a ../ltk/libltk.a -lXpm $(EXTRA_GNOME_LIBS) $(libpaper_CFLAGS)
 
 #pdfimages_SOURCES =           
 #      $(common_sources)       
diff --git a/pdf/xpdf/NameToCharCode.cc b/pdf/xpdf/NameToCharCode.cc
new file mode 100644 (file)
index 0000000..b9cde77
--- /dev/null
@@ -0,0 +1,115 @@
+//========================================================================
+//
+// NameToCharCode.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <string.h>
+#include "gmem.h"
+#include "NameToCharCode.h"
+
+//------------------------------------------------------------------------
+
+struct NameToCharCodeEntry {
+  char *name;
+  CharCode c;
+};
+
+//------------------------------------------------------------------------
+
+NameToCharCode::NameToCharCode() {
+  int i;
+
+  size = 31;
+  len = 0;
+  tab = (NameToCharCodeEntry *)gmalloc(size * sizeof(NameToCharCodeEntry));
+  for (i = 0; i < size; ++i) {
+    tab[i].name = NULL;
+  }
+}
+
+NameToCharCode::~NameToCharCode() {
+  int i;
+
+  for (i = 0; i < size; ++i) {
+    if (tab[i].name) {
+      gfree(tab[i].name);
+    }
+  }
+  gfree(tab);
+}
+
+void NameToCharCode::add(char *name, CharCode c) {
+  NameToCharCodeEntry *oldTab;
+  int h, i, oldSize;
+
+  // expand the table if necessary
+  if (len >= size / 2) {
+    oldSize = size;
+    oldTab = tab;
+    size = 2*size + 1;
+    tab = (NameToCharCodeEntry *)gmalloc(size * sizeof(NameToCharCodeEntry));
+    for (h = 0; h < size; ++h) {
+      tab[h].name = NULL;
+    }
+    for (i = 0; i < oldSize; ++i) {
+      if (oldTab[i].name) {
+       h = hash(oldTab[i].name);
+       while (tab[h].name) {
+         if (++h == size) {
+           h = 0;
+         }
+       }
+       tab[h] = oldTab[i];
+      }
+    }
+    gfree(oldTab);
+  }
+
+  // add the new name
+  h = hash(name);
+  while (tab[h].name && strcmp(tab[h].name, name)) {
+    if (++h == size) {
+      h = 0;
+    }
+  }
+  if (!tab[h].name) {
+    tab[h].name = copyString(name);
+  }
+  tab[h].c = c;
+
+  ++len;
+}
+
+CharCode NameToCharCode::lookup(char *name) {
+  int h;
+
+  h = hash(name);
+  while (tab[h].name) {
+    if (!strcmp(tab[h].name, name)) {
+      return tab[h].c;
+    }
+    if (++h == size) {
+      h = 0;
+    }
+  }
+  return 0;
+}
+
+int NameToCharCode::hash(char *name) {
+  char *p;
+  unsigned int h;
+
+  h = 0;
+  for (p = name; *p; ++p) {
+    h = 17 * h + (int)(*p & 0xff);
+  }
+  return (int)(h % size);
+}
diff --git a/pdf/xpdf/NameToCharCode.h b/pdf/xpdf/NameToCharCode.h
new file mode 100644 (file)
index 0000000..22e41b6
--- /dev/null
@@ -0,0 +1,40 @@
+//========================================================================
+//
+// NameToCharCode.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef NAMETOCHARCODE_H
+#define NAMETOCHARCODE_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "CharTypes.h"
+
+struct NameToCharCodeEntry;
+
+//------------------------------------------------------------------------
+
+class NameToCharCode {
+public:
+
+  NameToCharCode();
+  ~NameToCharCode();
+
+  void add(char *name, CharCode c);
+  CharCode lookup(char *name);
+
+private:
+
+  int hash(char *name);
+
+  NameToCharCodeEntry *tab;
+  int size;
+  int len;
+};
+
+#endif
diff --git a/pdf/xpdf/NameToUnicodeTable.h b/pdf/xpdf/NameToUnicodeTable.h
new file mode 100644 (file)
index 0000000..432fafb
--- /dev/null
@@ -0,0 +1,1055 @@
+//========================================================================
+//
+// NameToUnicodeTable.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+static struct {
+  Unicode u;
+  char *name;
+} nameToUnicodeTab[] = {
+  {0x0041, "A"},
+  {0x00c6, "AE"},
+  {0x01fc, "AEacute"},
+  {0x00c6, "AEsmall"},
+  {0x00c1, "Aacute"},
+  {0x00c1, "Aacutesmall"},
+  {0x0102, "Abreve"},
+  {0x00c2, "Acircumflex"},
+  {0x00c2, "Acircumflexsmall"},
+  {0xf6c9, "Acute"},
+  {0xf6c9, "Acutesmall"},
+  {0x00c4, "Adieresis"},
+  {0x00c4, "Adieresissmall"},
+  {0x00c0, "Agrave"},
+  {0x00c0, "Agravesmall"},
+  {0x0391, "Alpha"},
+  {0x0386, "Alphatonos"},
+  {0x0100, "Amacron"},
+  {0x0104, "Aogonek"},
+  {0x00c5, "Aring"},
+  {0x01fa, "Aringacute"},
+  {0x00c5, "Aringsmall"},
+  {0x0041, "Asmall"},
+  {0x00c3, "Atilde"},
+  {0x00c3, "Atildesmall"},
+  {0x0042, "B"},
+  {0x0392, "Beta"},
+  {0xf6f4, "Brevesmall"},
+  {0x0042, "Bsmall"},
+  {0x0043, "C"},
+  {0x0106, "Cacute"},
+  {0xf6ca, "Caron"},
+  {0xf6ca, "Caronsmall"},
+  {0x010c, "Ccaron"},
+  {0x00c7, "Ccedilla"},
+  {0x00c7, "Ccedillasmall"},
+  {0x0108, "Ccircumflex"},
+  {0x010a, "Cdotaccent"},
+  {0xf7b8, "Cedillasmall"},
+  {0x03a7, "Chi"},
+  {0xf6f6, "Circumflexsmall"},
+  {0x0043, "Csmall"},
+  {0x0044, "D"},
+  {0x010e, "Dcaron"},
+  {0x0110, "Dcroat"},
+  {0x2206, "Delta"},
+  {0xf6cb, "Dieresis"},
+  {0xf6cc, "DieresisAcute"},
+  {0xf6cd, "DieresisGrave"},
+  {0xf6cb, "Dieresissmall"},
+  {0xf6f7, "Dotaccentsmall"},
+  {0x0044, "Dsmall"},
+  {0x0045, "E"},
+  {0x00c9, "Eacute"},
+  {0x00c9, "Eacutesmall"},
+  {0x0114, "Ebreve"},
+  {0x011a, "Ecaron"},
+  {0x00ca, "Ecircumflex"},
+  {0x00ca, "Ecircumflexsmall"},
+  {0x00cb, "Edieresis"},
+  {0x00cb, "Edieresissmall"},
+  {0x0116, "Edotaccent"},
+  {0x00c8, "Egrave"},
+  {0x00c8, "Egravesmall"},
+  {0x0112, "Emacron"},
+  {0x014a, "Eng"},
+  {0x0118, "Eogonek"},
+  {0x0395, "Epsilon"},
+  {0x0388, "Epsilontonos"},
+  {0x0045, "Esmall"},
+  {0x0397, "Eta"},
+  {0x0389, "Etatonos"},
+  {0x00d0, "Eth"},
+  {0x00d0, "Ethsmall"},
+  {0x20ac, "Euro"},
+  {0x0046, "F"},
+  {0x0046, "Fsmall"},
+  {0x0047, "G"},
+  {0x0393, "Gamma"},
+  {0x011e, "Gbreve"},
+  {0x01e6, "Gcaron"},
+  {0x011c, "Gcircumflex"},
+  {0x0122, "Gcommaaccent"},
+  {0x0120, "Gdotaccent"},
+  {0xf6ce, "Grave"},
+  {0xf6ce, "Gravesmall"},
+  {0x0047, "Gsmall"},
+  {0x0048, "H"},
+  {0x25cf, "H18533"},
+  {0x25aa, "H18543"},
+  {0x25ab, "H18551"},
+  {0x25a1, "H22073"},
+  {0x0126, "Hbar"},
+  {0x0124, "Hcircumflex"},
+  {0x0048, "Hsmall"},
+  {0xf6cf, "Hungarumlaut"},
+  {0xf6cf, "Hungarumlautsmall"},
+  {0x0049, "I"},
+  {0x0132, "IJ"},
+  {0x00cd, "Iacute"},
+  {0x00cd, "Iacutesmall"},
+  {0x012c, "Ibreve"},
+  {0x00ce, "Icircumflex"},
+  {0x00ce, "Icircumflexsmall"},
+  {0x00cf, "Idieresis"},
+  {0x00cf, "Idieresissmall"},
+  {0x0130, "Idotaccent"},
+  {0x2111, "Ifraktur"},
+  {0x00cc, "Igrave"},
+  {0x00cc, "Igravesmall"},
+  {0x012a, "Imacron"},
+  {0x012e, "Iogonek"},
+  {0x0399, "Iota"},
+  {0x03aa, "Iotadieresis"},
+  {0x038a, "Iotatonos"},
+  {0x0049, "Ismall"},
+  {0x0128, "Itilde"},
+  {0x004a, "J"},
+  {0x0134, "Jcircumflex"},
+  {0x004a, "Jsmall"},
+  {0x004b, "K"},
+  {0x039a, "Kappa"},
+  {0x0136, "Kcommaaccent"},
+  {0x004b, "Ksmall"},
+  {0x004c, "L"},
+  {0xf6bf, "LL"},
+  {0x0139, "Lacute"},
+  {0x039b, "Lambda"},
+  {0x013d, "Lcaron"},
+  {0x013b, "Lcommaaccent"},
+  {0x013f, "Ldot"},
+  {0x0141, "Lslash"},
+  {0x0141, "Lslashsmall"},
+  {0x004c, "Lsmall"},
+  {0x004d, "M"},
+  {0xf6d0, "Macron"},
+  {0xf6d0, "Macronsmall"},
+  {0x004d, "Msmall"},
+  {0x039c, "Mu"},
+  {0x004e, "N"},
+  {0x0143, "Nacute"},
+  {0x0147, "Ncaron"},
+  {0x0145, "Ncommaaccent"},
+  {0x004e, "Nsmall"},
+  {0x00d1, "Ntilde"},
+  {0x00d1, "Ntildesmall"},
+  {0x039d, "Nu"},
+  {0x004f, "O"},
+  {0x0152, "OE"},
+  {0x0152, "OEsmall"},
+  {0x00d3, "Oacute"},
+  {0x00d3, "Oacutesmall"},
+  {0x014e, "Obreve"},
+  {0x00d4, "Ocircumflex"},
+  {0x00d4, "Ocircumflexsmall"},
+  {0x00d6, "Odieresis"},
+  {0x00d6, "Odieresissmall"},
+  {0xf6fb, "Ogoneksmall"},
+  {0x00d2, "Ograve"},
+  {0x00d2, "Ogravesmall"},
+  {0x01a0, "Ohorn"},
+  {0x0150, "Ohungarumlaut"},
+  {0x014c, "Omacron"},
+  {0x2126, "Omega"},
+  {0x038f, "Omegatonos"},
+  {0x039f, "Omicron"},
+  {0x038c, "Omicrontonos"},
+  {0x00d8, "Oslash"},
+  {0x01fe, "Oslashacute"},
+  {0x00d8, "Oslashsmall"},
+  {0x004f, "Osmall"},
+  {0x00d5, "Otilde"},
+  {0x00d5, "Otildesmall"},
+  {0x0050, "P"},
+  {0x03a6, "Phi"},
+  {0x03a0, "Pi"},
+  {0x03a8, "Psi"},
+  {0x0050, "Psmall"},
+  {0x0051, "Q"},
+  {0x0051, "Qsmall"},
+  {0x0052, "R"},
+  {0x0154, "Racute"},
+  {0x0158, "Rcaron"},
+  {0x0156, "Rcommaaccent"},
+  {0x211c, "Rfraktur"},
+  {0x03a1, "Rho"},
+  {0xf6fc, "Ringsmall"},
+  {0x0052, "Rsmall"},
+  {0x0053, "S"},
+  {0x250c, "SF010000"},
+  {0x2514, "SF020000"},
+  {0x2510, "SF030000"},
+  {0x2518, "SF040000"},
+  {0x253c, "SF050000"},
+  {0x252c, "SF060000"},
+  {0x2534, "SF070000"},
+  {0x251c, "SF080000"},
+  {0x2524, "SF090000"},
+  {0x2500, "SF100000"},
+  {0x2502, "SF110000"},
+  {0x2561, "SF190000"},
+  {0x2562, "SF200000"},
+  {0x2556, "SF210000"},
+  {0x2555, "SF220000"},
+  {0x2563, "SF230000"},
+  {0x2551, "SF240000"},
+  {0x2557, "SF250000"},
+  {0x255d, "SF260000"},
+  {0x255c, "SF270000"},
+  {0x255b, "SF280000"},
+  {0x255e, "SF360000"},
+  {0x255f, "SF370000"},
+  {0x255a, "SF380000"},
+  {0x2554, "SF390000"},
+  {0x2569, "SF400000"},
+  {0x2566, "SF410000"},
+  {0x2560, "SF420000"},
+  {0x2550, "SF430000"},
+  {0x256c, "SF440000"},
+  {0x2567, "SF450000"},
+  {0x2568, "SF460000"},
+  {0x2564, "SF470000"},
+  {0x2565, "SF480000"},
+  {0x2559, "SF490000"},
+  {0x2558, "SF500000"},
+  {0x2552, "SF510000"},
+  {0x2553, "SF520000"},
+  {0x256b, "SF530000"},
+  {0x256a, "SF540000"},
+  {0x015a, "Sacute"},
+  {0x0160, "Scaron"},
+  {0x0160, "Scaronsmall"},
+  {0x015e, "Scedilla"},
+  {0x015c, "Scircumflex"},
+  {0x0218, "Scommaaccent"},
+  {0x03a3, "Sigma"},
+  {0x0053, "Ssmall"},
+  {0x0054, "T"},
+  {0x03a4, "Tau"},
+  {0x0166, "Tbar"},
+  {0x0164, "Tcaron"},
+  {0x0162, "Tcommaaccent"},
+  {0x0398, "Theta"},
+  {0x00de, "Thorn"},
+  {0x00de, "Thornsmall"},
+  {0xf6fe, "Tildesmall"},
+  {0x0054, "Tsmall"},
+  {0x0055, "U"},
+  {0x00da, "Uacute"},
+  {0x00da, "Uacutesmall"},
+  {0x016c, "Ubreve"},
+  {0x00db, "Ucircumflex"},
+  {0x00db, "Ucircumflexsmall"},
+  {0x00dc, "Udieresis"},
+  {0x00dc, "Udieresissmall"},
+  {0x00d9, "Ugrave"},
+  {0x00d9, "Ugravesmall"},
+  {0x01af, "Uhorn"},
+  {0x0170, "Uhungarumlaut"},
+  {0x016a, "Umacron"},
+  {0x0172, "Uogonek"},
+  {0x03a5, "Upsilon"},
+  {0x03d2, "Upsilon1"},
+  {0x03ab, "Upsilondieresis"},
+  {0x038e, "Upsilontonos"},
+  {0x016e, "Uring"},
+  {0x0055, "Usmall"},
+  {0x0168, "Utilde"},
+  {0x0056, "V"},
+  {0x0056, "Vsmall"},
+  {0x0057, "W"},
+  {0x1e82, "Wacute"},
+  {0x0174, "Wcircumflex"},
+  {0x1e84, "Wdieresis"},
+  {0x1e80, "Wgrave"},
+  {0x0057, "Wsmall"},
+  {0x0058, "X"},
+  {0x039e, "Xi"},
+  {0x0058, "Xsmall"},
+  {0x0059, "Y"},
+  {0x00dd, "Yacute"},
+  {0x00dd, "Yacutesmall"},
+  {0x0176, "Ycircumflex"},
+  {0x0178, "Ydieresis"},
+  {0x0178, "Ydieresissmall"},
+  {0x1ef2, "Ygrave"},
+  {0x0059, "Ysmall"},
+  {0x005a, "Z"},
+  {0x0179, "Zacute"},
+  {0x017d, "Zcaron"},
+  {0x017d, "Zcaronsmall"},
+  {0x017b, "Zdotaccent"},
+  {0x0396, "Zeta"},
+  {0x005a, "Zsmall"},
+  {0x0061, "a"},
+  {0x00e1, "aacute"},
+  {0x0103, "abreve"},
+  {0x00e2, "acircumflex"},
+  {0x00b4, "acute"},
+  {0x0301, "acutecomb"},
+  {0x00e4, "adieresis"},
+  {0x00e6, "ae"},
+  {0x01fd, "aeacute"},
+  {0x2015, "afii00208"},
+  {0x0410, "afii10017"},
+  {0x0411, "afii10018"},
+  {0x0412, "afii10019"},
+  {0x0413, "afii10020"},
+  {0x0414, "afii10021"},
+  {0x0415, "afii10022"},
+  {0x0401, "afii10023"},
+  {0x0416, "afii10024"},
+  {0x0417, "afii10025"},
+  {0x0418, "afii10026"},
+  {0x0419, "afii10027"},
+  {0x041a, "afii10028"},
+  {0x041b, "afii10029"},
+  {0x041c, "afii10030"},
+  {0x041d, "afii10031"},
+  {0x041e, "afii10032"},
+  {0x041f, "afii10033"},
+  {0x0420, "afii10034"},
+  {0x0421, "afii10035"},
+  {0x0422, "afii10036"},
+  {0x0423, "afii10037"},
+  {0x0424, "afii10038"},
+  {0x0425, "afii10039"},
+  {0x0426, "afii10040"},
+  {0x0427, "afii10041"},
+  {0x0428, "afii10042"},
+  {0x0429, "afii10043"},
+  {0x042a, "afii10044"},
+  {0x042b, "afii10045"},
+  {0x042c, "afii10046"},
+  {0x042d, "afii10047"},
+  {0x042e, "afii10048"},
+  {0x042f, "afii10049"},
+  {0x0490, "afii10050"},
+  {0x0402, "afii10051"},
+  {0x0403, "afii10052"},
+  {0x0404, "afii10053"},
+  {0x0405, "afii10054"},
+  {0x0406, "afii10055"},
+  {0x0407, "afii10056"},
+  {0x0408, "afii10057"},
+  {0x0409, "afii10058"},
+  {0x040a, "afii10059"},
+  {0x040b, "afii10060"},
+  {0x040c, "afii10061"},
+  {0x040e, "afii10062"},
+  {0xf6c4, "afii10063"},
+  {0xf6c5, "afii10064"},
+  {0x0430, "afii10065"},
+  {0x0431, "afii10066"},
+  {0x0432, "afii10067"},
+  {0x0433, "afii10068"},
+  {0x0434, "afii10069"},
+  {0x0435, "afii10070"},
+  {0x0451, "afii10071"},
+  {0x0436, "afii10072"},
+  {0x0437, "afii10073"},
+  {0x0438, "afii10074"},
+  {0x0439, "afii10075"},
+  {0x043a, "afii10076"},
+  {0x043b, "afii10077"},
+  {0x043c, "afii10078"},
+  {0x043d, "afii10079"},
+  {0x043e, "afii10080"},
+  {0x043f, "afii10081"},
+  {0x0440, "afii10082"},
+  {0x0441, "afii10083"},
+  {0x0442, "afii10084"},
+  {0x0443, "afii10085"},
+  {0x0444, "afii10086"},
+  {0x0445, "afii10087"},
+  {0x0446, "afii10088"},
+  {0x0447, "afii10089"},
+  {0x0448, "afii10090"},
+  {0x0449, "afii10091"},
+  {0x044a, "afii10092"},
+  {0x044b, "afii10093"},
+  {0x044c, "afii10094"},
+  {0x044d, "afii10095"},
+  {0x044e, "afii10096"},
+  {0x044f, "afii10097"},
+  {0x0491, "afii10098"},
+  {0x0452, "afii10099"},
+  {0x0453, "afii10100"},
+  {0x0454, "afii10101"},
+  {0x0455, "afii10102"},
+  {0x0456, "afii10103"},
+  {0x0457, "afii10104"},
+  {0x0458, "afii10105"},
+  {0x0459, "afii10106"},
+  {0x045a, "afii10107"},
+  {0x045b, "afii10108"},
+  {0x045c, "afii10109"},
+  {0x045e, "afii10110"},
+  {0x040f, "afii10145"},
+  {0x0462, "afii10146"},
+  {0x0472, "afii10147"},
+  {0x0474, "afii10148"},
+  {0xf6c6, "afii10192"},
+  {0x045f, "afii10193"},
+  {0x0463, "afii10194"},
+  {0x0473, "afii10195"},
+  {0x0475, "afii10196"},
+  {0xf6c7, "afii10831"},
+  {0xf6c8, "afii10832"},
+  {0x04d9, "afii10846"},
+  {0x200e, "afii299"},
+  {0x200f, "afii300"},
+  {0x200d, "afii301"},
+  {0x066a, "afii57381"},
+  {0x060c, "afii57388"},
+  {0x0660, "afii57392"},
+  {0x0661, "afii57393"},
+  {0x0662, "afii57394"},
+  {0x0663, "afii57395"},
+  {0x0664, "afii57396"},
+  {0x0665, "afii57397"},
+  {0x0666, "afii57398"},
+  {0x0667, "afii57399"},
+  {0x0668, "afii57400"},
+  {0x0669, "afii57401"},
+  {0x061b, "afii57403"},
+  {0x061f, "afii57407"},
+  {0x0621, "afii57409"},
+  {0x0622, "afii57410"},
+  {0x0623, "afii57411"},
+  {0x0624, "afii57412"},
+  {0x0625, "afii57413"},
+  {0x0626, "afii57414"},
+  {0x0627, "afii57415"},
+  {0x0628, "afii57416"},
+  {0x0629, "afii57417"},
+  {0x062a, "afii57418"},
+  {0x062b, "afii57419"},
+  {0x062c, "afii57420"},
+  {0x062d, "afii57421"},
+  {0x062e, "afii57422"},
+  {0x062f, "afii57423"},
+  {0x0630, "afii57424"},
+  {0x0631, "afii57425"},
+  {0x0632, "afii57426"},
+  {0x0633, "afii57427"},
+  {0x0634, "afii57428"},
+  {0x0635, "afii57429"},
+  {0x0636, "afii57430"},
+  {0x0637, "afii57431"},
+  {0x0638, "afii57432"},
+  {0x0639, "afii57433"},
+  {0x063a, "afii57434"},
+  {0x0640, "afii57440"},
+  {0x0641, "afii57441"},
+  {0x0642, "afii57442"},
+  {0x0643, "afii57443"},
+  {0x0644, "afii57444"},
+  {0x0645, "afii57445"},
+  {0x0646, "afii57446"},
+  {0x0648, "afii57448"},
+  {0x0649, "afii57449"},
+  {0x064a, "afii57450"},
+  {0x064b, "afii57451"},
+  {0x064c, "afii57452"},
+  {0x064d, "afii57453"},
+  {0x064e, "afii57454"},
+  {0x064f, "afii57455"},
+  {0x0650, "afii57456"},
+  {0x0651, "afii57457"},
+  {0x0652, "afii57458"},
+  {0x0647, "afii57470"},
+  {0x06a4, "afii57505"},
+  {0x067e, "afii57506"},
+  {0x0686, "afii57507"},
+  {0x0698, "afii57508"},
+  {0x06af, "afii57509"},
+  {0x0679, "afii57511"},
+  {0x0688, "afii57512"},
+  {0x0691, "afii57513"},
+  {0x06ba, "afii57514"},
+  {0x06d2, "afii57519"},
+  {0x06d5, "afii57534"},
+  {0x20aa, "afii57636"},
+  {0x05be, "afii57645"},
+  {0x05c3, "afii57658"},
+  {0x05d0, "afii57664"},
+  {0x05d1, "afii57665"},
+  {0x05d2, "afii57666"},
+  {0x05d3, "afii57667"},
+  {0x05d4, "afii57668"},
+  {0x05d5, "afii57669"},
+  {0x05d6, "afii57670"},
+  {0x05d7, "afii57671"},
+  {0x05d8, "afii57672"},
+  {0x05d9, "afii57673"},
+  {0x05da, "afii57674"},
+  {0x05db, "afii57675"},
+  {0x05dc, "afii57676"},
+  {0x05dd, "afii57677"},
+  {0x05de, "afii57678"},
+  {0x05df, "afii57679"},
+  {0x05e0, "afii57680"},
+  {0x05e1, "afii57681"},
+  {0x05e2, "afii57682"},
+  {0x05e3, "afii57683"},
+  {0x05e4, "afii57684"},
+  {0x05e5, "afii57685"},
+  {0x05e6, "afii57686"},
+  {0x05e7, "afii57687"},
+  {0x05e8, "afii57688"},
+  {0x05e9, "afii57689"},
+  {0x05ea, "afii57690"},
+  {0xfb2a, "afii57694"},
+  {0xfb2b, "afii57695"},
+  {0xfb4b, "afii57700"},
+  {0xfb1f, "afii57705"},
+  {0x05f0, "afii57716"},
+  {0x05f1, "afii57717"},
+  {0x05f2, "afii57718"},
+  {0xfb35, "afii57723"},
+  {0x05b4, "afii57793"},
+  {0x05b5, "afii57794"},
+  {0x05b6, "afii57795"},
+  {0x05bb, "afii57796"},
+  {0x05b8, "afii57797"},
+  {0x05b7, "afii57798"},
+  {0x05b0, "afii57799"},
+  {0x05b2, "afii57800"},
+  {0x05b1, "afii57801"},
+  {0x05b3, "afii57802"},
+  {0x05c2, "afii57803"},
+  {0x05c1, "afii57804"},
+  {0x05b9, "afii57806"},
+  {0x05bc, "afii57807"},
+  {0x05bd, "afii57839"},
+  {0x05bf, "afii57841"},
+  {0x05c0, "afii57842"},
+  {0x02bc, "afii57929"},
+  {0x2105, "afii61248"},
+  {0x2113, "afii61289"},
+  {0x2116, "afii61352"},
+  {0x202c, "afii61573"},
+  {0x202d, "afii61574"},
+  {0x202e, "afii61575"},
+  {0x200c, "afii61664"},
+  {0x066d, "afii63167"},
+  {0x02bd, "afii64937"},
+  {0x00e0, "agrave"},
+  {0x2135, "aleph"},
+  {0x03b1, "alpha"},
+  {0x03ac, "alphatonos"},
+  {0x0101, "amacron"},
+  {0x0026, "ampersand"},
+  {0x0026, "ampersandsmall"},
+  {0x2220, "angle"},
+  {0x2329, "angleleft"},
+  {0x232a, "angleright"},
+  {0x0387, "anoteleia"},
+  {0x0105, "aogonek"},
+  {0x2248, "approxequal"},
+  {0x00e5, "aring"},
+  {0x01fb, "aringacute"},
+  {0x2194, "arrowboth"},
+  {0x21d4, "arrowdblboth"},
+  {0x21d3, "arrowdbldown"},
+  {0x21d0, "arrowdblleft"},
+  {0x21d2, "arrowdblright"},
+  {0x21d1, "arrowdblup"},
+  {0x2193, "arrowdown"},
+  {0xf8e7, "arrowhorizex"},
+  {0x2190, "arrowleft"},
+  {0x2192, "arrowright"},
+  {0x2191, "arrowup"},
+  {0x2195, "arrowupdn"},
+  {0x21a8, "arrowupdnbse"},
+  {0xf8e6, "arrowvertex"},
+  {0x005e, "asciicircum"},
+  {0x007e, "asciitilde"},
+  {0x002a, "asterisk"},
+  {0x2217, "asteriskmath"},
+  {0xf6e9, "asuperior"},
+  {0x0040, "at"},
+  {0x00e3, "atilde"},
+  {0x0062, "b"},
+  {0x005c, "backslash"},
+  {0x007c, "bar"},
+  {0x03b2, "beta"},
+  {0x2588, "block"},
+  {0xf8f4, "braceex"},
+  {0x007b, "braceleft"},
+  {0xf8f3, "braceleftbt"},
+  {0xf8f2, "braceleftmid"},
+  {0xf8f1, "bracelefttp"},
+  {0x007d, "braceright"},
+  {0xf8fe, "bracerightbt"},
+  {0xf8fd, "bracerightmid"},
+  {0xf8fc, "bracerighttp"},
+  {0x005b, "bracketleft"},
+  {0xf8f0, "bracketleftbt"},
+  {0xf8ef, "bracketleftex"},
+  {0xf8ee, "bracketlefttp"},
+  {0x005d, "bracketright"},
+  {0xf8fb, "bracketrightbt"},
+  {0xf8fa, "bracketrightex"},
+  {0xf8f9, "bracketrighttp"},
+  {0x02d8, "breve"},
+  {0x00a6, "brokenbar"},
+  {0xf6ea, "bsuperior"},
+  {0x2022, "bullet"},
+  {0x0063, "c"},
+  {0x0107, "cacute"},
+  {0x02c7, "caron"},
+  {0x21b5, "carriagereturn"},
+  {0x010d, "ccaron"},
+  {0x00e7, "ccedilla"},
+  {0x0109, "ccircumflex"},
+  {0x010b, "cdotaccent"},
+  {0x00b8, "cedilla"},
+  {0x00a2, "cent"},
+  {0xf6df, "centinferior"},
+  {0x00a2, "centoldstyle"},
+  {0xf6e0, "centsuperior"},
+  {0x03c7, "chi"},
+  {0x25cb, "circle"},
+  {0x2297, "circlemultiply"},
+  {0x2295, "circleplus"},
+  {0x02c6, "circumflex"},
+  {0x2663, "club"},
+  {0x003a, "colon"},
+  {0x20a1, "colonmonetary"},
+  {0x002c, "comma"},
+  {0xf6c3, "commaaccent"},
+  {0xf6e1, "commainferior"},
+  {0xf6e2, "commasuperior"},
+  {0x2245, "congruent"},
+  {0x00a9, "copyright"},
+  {0xf8e9, "copyrightsans"},
+  {0xf6d9, "copyrightserif"},
+  {0x00a4, "currency"},
+  {0xf6d1, "cyrBreve"},
+  {0xf6d2, "cyrFlex"},
+  {0xf6d4, "cyrbreve"},
+  {0xf6d5, "cyrflex"},
+  {0x0064, "d"},
+  {0x2020, "dagger"},
+  {0x2021, "daggerdbl"},
+  {0xf6d3, "dblGrave"},
+  {0xf6d6, "dblgrave"},
+  {0x010f, "dcaron"},
+  {0x0111, "dcroat"},
+  {0x00b0, "degree"},
+  {0x03b4, "delta"},
+  {0x2666, "diamond"},
+  {0x00a8, "dieresis"},
+  {0xf6d7, "dieresisacute"},
+  {0xf6d8, "dieresisgrave"},
+  {0x0385, "dieresistonos"},
+  {0x00f7, "divide"},
+  {0x2593, "dkshade"},
+  {0x2584, "dnblock"},
+  {0x0024, "dollar"},
+  {0xf6e3, "dollarinferior"},
+  {0x0024, "dollaroldstyle"},
+  {0xf6e4, "dollarsuperior"},
+  {0x20ab, "dong"},
+  {0x02d9, "dotaccent"},
+  {0x0323, "dotbelowcomb"},
+  {0x0131, "dotlessi"},
+  {0xf6be, "dotlessj"},
+  {0x22c5, "dotmath"},
+  {0xf6eb, "dsuperior"},
+  {0x0065, "e"},
+  {0x00e9, "eacute"},
+  {0x0115, "ebreve"},
+  {0x011b, "ecaron"},
+  {0x00ea, "ecircumflex"},
+  {0x00eb, "edieresis"},
+  {0x0117, "edotaccent"},
+  {0x00e8, "egrave"},
+  {0x0038, "eight"},
+  {0x2088, "eightinferior"},
+  {0x0038, "eightoldstyle"},
+  {0x2078, "eightsuperior"},
+  {0x2208, "element"},
+  {0x2026, "ellipsis"},
+  {0x0113, "emacron"},
+  {0x2014, "emdash"},
+  {0x2205, "emptyset"},
+  {0x2013, "endash"},
+  {0x014b, "eng"},
+  {0x0119, "eogonek"},
+  {0x03b5, "epsilon"},
+  {0x03ad, "epsilontonos"},
+  {0x003d, "equal"},
+  {0x2261, "equivalence"},
+  {0x212e, "estimated"},
+  {0xf6ec, "esuperior"},
+  {0x03b7, "eta"},
+  {0x03ae, "etatonos"},
+  {0x00f0, "eth"},
+  {0x0021, "exclam"},
+  {0x203c, "exclamdbl"},
+  {0x00a1, "exclamdown"},
+  {0x00a1, "exclamdownsmall"},
+  {0x0021, "exclamsmall"},
+  {0x2203, "existential"},
+  {0x0066, "f"},
+  {0x2640, "female"},
+  {0xfb00, "ff"},
+  {0xfb03, "ffi"},
+  {0xfb04, "ffl"},
+  {0xfb01, "fi"},
+  {0x2012, "figuredash"},
+  {0x25a0, "filledbox"},
+  {0x25ac, "filledrect"},
+  {0x0035, "five"},
+  {0x215d, "fiveeighths"},
+  {0x2085, "fiveinferior"},
+  {0x0035, "fiveoldstyle"},
+  {0x2075, "fivesuperior"},
+  {0xfb02, "fl"},
+  {0x0192, "florin"},
+  {0x0034, "four"},
+  {0x2084, "fourinferior"},
+  {0x0034, "fouroldstyle"},
+  {0x2074, "foursuperior"},
+  {0x2044, "fraction"},
+  {0x20a3, "franc"},
+  {0x0067, "g"},
+  {0x03b3, "gamma"},
+  {0x011f, "gbreve"},
+  {0x01e7, "gcaron"},
+  {0x011d, "gcircumflex"},
+  {0x0123, "gcommaaccent"},
+  {0x0121, "gdotaccent"},
+  {0x00df, "germandbls"},
+  {0x2207, "gradient"},
+  {0x0060, "grave"},
+  {0x0300, "gravecomb"},
+  {0x003e, "greater"},
+  {0x2265, "greaterequal"},
+  {0x00ab, "guillemotleft"},
+  {0x00bb, "guillemotright"},
+  {0x2039, "guilsinglleft"},
+  {0x203a, "guilsinglright"},
+  {0x0068, "h"},
+  {0x0127, "hbar"},
+  {0x0125, "hcircumflex"},
+  {0x2665, "heart"},
+  {0x0309, "hookabovecomb"},
+  {0x2302, "house"},
+  {0x02dd, "hungarumlaut"},
+  {0x002d, "hyphen"},
+  {0xf6e5, "hypheninferior"},
+  {0xf6e6, "hyphensuperior"},
+  {0x0069, "i"},
+  {0x00ed, "iacute"},
+  {0x012d, "ibreve"},
+  {0x00ee, "icircumflex"},
+  {0x00ef, "idieresis"},
+  {0x00ec, "igrave"},
+  {0x0133, "ij"},
+  {0x012b, "imacron"},
+  {0x221e, "infinity"},
+  {0x222b, "integral"},
+  {0x2321, "integralbt"},
+  {0xf8f5, "integralex"},
+  {0x2320, "integraltp"},
+  {0x2229, "intersection"},
+  {0x25d8, "invbullet"},
+  {0x25d9, "invcircle"},
+  {0x263b, "invsmileface"},
+  {0x012f, "iogonek"},
+  {0x03b9, "iota"},
+  {0x03ca, "iotadieresis"},
+  {0x0390, "iotadieresistonos"},
+  {0x03af, "iotatonos"},
+  {0xf6ed, "isuperior"},
+  {0x0129, "itilde"},
+  {0x006a, "j"},
+  {0x0135, "jcircumflex"},
+  {0x006b, "k"},
+  {0x03ba, "kappa"},
+  {0x0137, "kcommaaccent"},
+  {0x0138, "kgreenlandic"},
+  {0x006c, "l"},
+  {0x013a, "lacute"},
+  {0x03bb, "lambda"},
+  {0x013e, "lcaron"},
+  {0x013c, "lcommaaccent"},
+  {0x0140, "ldot"},
+  {0x003c, "less"},
+  {0x2264, "lessequal"},
+  {0x258c, "lfblock"},
+  {0x20a4, "lira"},
+  {0xf6c0, "ll"},
+  {0x2227, "logicaland"},
+  {0x00ac, "logicalnot"},
+  {0x2228, "logicalor"},
+  {0x017f, "longs"},
+  {0x25ca, "lozenge"},
+  {0x0142, "lslash"},
+  {0xf6ee, "lsuperior"},
+  {0x2591, "ltshade"},
+  {0x006d, "m"},
+  {0x00af, "macron"},
+  {0x2642, "male"},
+  {0x2212, "minus"},
+  {0x2032, "minute"},
+  {0xf6ef, "msuperior"},
+  {0x00b5, "mu"},
+  {0x00d7, "multiply"},
+  {0x266a, "musicalnote"},
+  {0x266b, "musicalnotedbl"},
+  {0x006e, "n"},
+  {0x0144, "nacute"},
+  {0x0149, "napostrophe"},
+  {0x00a0, "nbspace"},
+  {0x0148, "ncaron"},
+  {0x0146, "ncommaaccent"},
+  {0x0039, "nine"},
+  {0x2089, "nineinferior"},
+  {0x0039, "nineoldstyle"},
+  {0x2079, "ninesuperior"},
+  {0x00a0, "nonbreakingspace"},
+  {0x2209, "notelement"},
+  {0x2260, "notequal"},
+  {0x2284, "notsubset"},
+  {0x207f, "nsuperior"},
+  {0x00f1, "ntilde"},
+  {0x03bd, "nu"},
+  {0x0023, "numbersign"},
+  {0x006f, "o"},
+  {0x00f3, "oacute"},
+  {0x014f, "obreve"},
+  {0x00f4, "ocircumflex"},
+  {0x00f6, "odieresis"},
+  {0x0153, "oe"},
+  {0x02db, "ogonek"},
+  {0x00f2, "ograve"},
+  {0x01a1, "ohorn"},
+  {0x0151, "ohungarumlaut"},
+  {0x014d, "omacron"},
+  {0x03c9, "omega"},
+  {0x03d6, "omega1"},
+  {0x03ce, "omegatonos"},
+  {0x03bf, "omicron"},
+  {0x03cc, "omicrontonos"},
+  {0x0031, "one"},
+  {0x2024, "onedotenleader"},
+  {0x215b, "oneeighth"},
+  {0xf6dc, "onefitted"},
+  {0x00bd, "onehalf"},
+  {0x2081, "oneinferior"},
+  {0x0031, "oneoldstyle"},
+  {0x00bc, "onequarter"},
+  {0x00b9, "onesuperior"},
+  {0x2153, "onethird"},
+  {0x25e6, "openbullet"},
+  {0x00aa, "ordfeminine"},
+  {0x00ba, "ordmasculine"},
+  {0x221f, "orthogonal"},
+  {0x00f8, "oslash"},
+  {0x01ff, "oslashacute"},
+  {0xf6f0, "osuperior"},
+  {0x00f5, "otilde"},
+  {0x0070, "p"},
+  {0x00b6, "paragraph"},
+  {0x0028, "parenleft"},
+  {0xf8ed, "parenleftbt"},
+  {0xf8ec, "parenleftex"},
+  {0x208d, "parenleftinferior"},
+  {0x207d, "parenleftsuperior"},
+  {0xf8eb, "parenlefttp"},
+  {0x0029, "parenright"},
+  {0xf8f8, "parenrightbt"},
+  {0xf8f7, "parenrightex"},
+  {0x208e, "parenrightinferior"},
+  {0x207e, "parenrightsuperior"},
+  {0xf8f6, "parenrighttp"},
+  {0x2202, "partialdiff"},
+  {0x0025, "percent"},
+  {0x002e, "period"},
+  {0x00b7, "periodcentered"},
+  {0xf6e7, "periodinferior"},
+  {0xf6e8, "periodsuperior"},
+  {0x22a5, "perpendicular"},
+  {0x2030, "perthousand"},
+  {0x20a7, "peseta"},
+  {0x03c6, "phi"},
+  {0x03d5, "phi1"},
+  {0x03c0, "pi"},
+  {0x002b, "plus"},
+  {0x00b1, "plusminus"},
+  {0x211e, "prescription"},
+  {0x220f, "product"},
+  {0x2282, "propersubset"},
+  {0x2283, "propersuperset"},
+  {0x221d, "proportional"},
+  {0x03c8, "psi"},
+  {0x0071, "q"},
+  {0x003f, "question"},
+  {0x00bf, "questiondown"},
+  {0x00bf, "questiondownsmall"},
+  {0x003f, "questionsmall"},
+  {0x0022, "quotedbl"},
+  {0x201e, "quotedblbase"},
+  {0x201c, "quotedblleft"},
+  {0x201d, "quotedblright"},
+  {0x2018, "quoteleft"},
+  {0x201b, "quotereversed"},
+  {0x2019, "quoteright"},
+  {0x201a, "quotesinglbase"},
+  {0x0027, "quotesingle"},
+  {0x0072, "r"},
+  {0x0155, "racute"},
+  {0x221a, "radical"},
+  {0xf8e5, "radicalex"},
+  {0x0159, "rcaron"},
+  {0x0157, "rcommaaccent"},
+  {0x2286, "reflexsubset"},
+  {0x2287, "reflexsuperset"},
+  {0x00ae, "registered"},
+  {0xf8e8, "registersans"},
+  {0xf6da, "registerserif"},
+  {0x2310, "revlogicalnot"},
+  {0x03c1, "rho"},
+  {0x02da, "ring"},
+  {0xf6f1, "rsuperior"},
+  {0x2590, "rtblock"},
+  {0xf6dd, "rupiah"},
+  {0x0073, "s"},
+  {0x015b, "sacute"},
+  {0x0161, "scaron"},
+  {0x015f, "scedilla"},
+  {0x015d, "scircumflex"},
+  {0x0219, "scommaaccent"},
+  {0x2033, "second"},
+  {0x00a7, "section"},
+  {0x003b, "semicolon"},
+  {0x0037, "seven"},
+  {0x215e, "seveneighths"},
+  {0x2087, "seveninferior"},
+  {0x0037, "sevenoldstyle"},
+  {0x2077, "sevensuperior"},
+  {0x2592, "shade"},
+  {0x03c3, "sigma"},
+  {0x03c2, "sigma1"},
+  {0x223c, "similar"},
+  {0x0036, "six"},
+  {0x2086, "sixinferior"},
+  {0x0036, "sixoldstyle"},
+  {0x2076, "sixsuperior"},
+  {0x002f, "slash"},
+  {0x263a, "smileface"},
+  {0x0020, "space"},
+  {0x2660, "spade"},
+  {0xf6f2, "ssuperior"},
+  {0x00a3, "sterling"},
+  {0x220b, "suchthat"},
+  {0x2211, "summation"},
+  {0x263c, "sun"},
+  {0x0074, "t"},
+  {0x03c4, "tau"},
+  {0x0167, "tbar"},
+  {0x0165, "tcaron"},
+  {0x0163, "tcommaaccent"},
+  {0x2234, "therefore"},
+  {0x03b8, "theta"},
+  {0x03d1, "theta1"},
+  {0x00fe, "thorn"},
+  {0x0033, "three"},
+  {0x215c, "threeeighths"},
+  {0x2083, "threeinferior"},
+  {0x0033, "threeoldstyle"},
+  {0x00be, "threequarters"},
+  {0xf6de, "threequartersemdash"},
+  {0x00b3, "threesuperior"},
+  {0x02dc, "tilde"},
+  {0x0303, "tildecomb"},
+  {0x0384, "tonos"},
+  {0x2122, "trademark"},
+  {0xf8ea, "trademarksans"},
+  {0xf6db, "trademarkserif"},
+  {0x25bc, "triagdn"},
+  {0x25c4, "triaglf"},
+  {0x25ba, "triagrt"},
+  {0x25b2, "triagup"},
+  {0xf6f3, "tsuperior"},
+  {0x0032, "two"},
+  {0x2025, "twodotenleader"},
+  {0x2082, "twoinferior"},
+  {0x0032, "twooldstyle"},
+  {0x00b2, "twosuperior"},
+  {0x2154, "twothirds"},
+  {0x0075, "u"},
+  {0x00fa, "uacute"},
+  {0x016d, "ubreve"},
+  {0x00fb, "ucircumflex"},
+  {0x00fc, "udieresis"},
+  {0x00f9, "ugrave"},
+  {0x01b0, "uhorn"},
+  {0x0171, "uhungarumlaut"},
+  {0x016b, "umacron"},
+  {0x005f, "underscore"},
+  {0x2017, "underscoredbl"},
+  {0x222a, "union"},
+  {0x2200, "universal"},
+  {0x0173, "uogonek"},
+  {0x2580, "upblock"},
+  {0x03c5, "upsilon"},
+  {0x03cb, "upsilondieresis"},
+  {0x03b0, "upsilondieresistonos"},
+  {0x03cd, "upsilontonos"},
+  {0x016f, "uring"},
+  {0x0169, "utilde"},
+  {0x0076, "v"},
+  {0x0077, "w"},
+  {0x1e83, "wacute"},
+  {0x0175, "wcircumflex"},
+  {0x1e85, "wdieresis"},
+  {0x2118, "weierstrass"},
+  {0x1e81, "wgrave"},
+  {0x0078, "x"},
+  {0x03be, "xi"},
+  {0x0079, "y"},
+  {0x00fd, "yacute"},
+  {0x0177, "ycircumflex"},
+  {0x00ff, "ydieresis"},
+  {0x00a5, "yen"},
+  {0x1ef3, "ygrave"},
+  {0x007a, "z"},
+  {0x017a, "zacute"},
+  {0x017e, "zcaron"},
+  {0x017c, "zdotaccent"},
+  {0x0030, "zero"},
+  {0x2080, "zeroinferior"},
+  {0x0030, "zerooldstyle"},
+  {0x2070, "zerosuperior"},
+  {0x03b6, "zeta"},
+  { 0, NULL }
+};
index f9c10674d8957aede9507c7aaefeace4afd71c98..6d92c6a3403edaeaa343d3fc7f37f2e0fe6b20b1 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Object.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include "Object.h"
 #include "Array.h"
@@ -44,21 +45,21 @@ int Object::numAlloc[numObjTypes] =
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 #endif
 
-Object *Object::initArray() {
+Object *Object::initArray(XRef *xref) {
   initObj(objArray);
-  array = new Array();
+  array = new Array(xref);
   return this;
 }
 
-Object *Object::initDict() {
+Object *Object::initDict(XRef *xref) {
   initObj(objDict);
-  dict = new Dict();
+  dict = new Dict(xref);
   return this;
 }
 
-Object *Object::initStream(Stream *stream1) {
+Object *Object::initStream(Stream *streamA) {
   initObj(objStream);
-  stream = stream1;
+  stream = streamA;
   return this;
 }
 
@@ -92,7 +93,7 @@ Object *Object::copy(Object *obj) {
   return obj;
 }
 
-Object *Object::fetch(Object *obj) {
+Object *Object::fetch(XRef *xref, Object *obj) {
   return (type == objRef && xref) ?
          xref->fetch(ref.num, ref.gen, obj) : copy(obj);
 }
@@ -151,7 +152,9 @@ void Object::print(FILE *f) {
     fprintf(f, "%g", real);
     break;
   case objString:
-    fprintf(f, "(%s)", string->getCString());
+    fprintf(f, "(");
+    fwrite(string->getCString(), 1, string->getLength(), stdout);
+    fprintf(f, ")");
     break;
   case objName:
     fprintf(f, "/%s", name);
index fa4f740b5ef45b85dbfe2d11df4eb57eafd8f6a1..65d0be0d57031207dd1d1635325b28645ee2f6b1 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Object.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -19,6 +19,7 @@
 #include "gmem.h"
 #include "GString.h"
 
+class XRef;
 class Array;
 class Dict;
 class Stream;
@@ -78,27 +79,25 @@ public:
     type(objNone) {}
 
   // Initialize an object.
-  Object *initBool(GBool booln1)
-    { initObj(objBool); booln = booln1; return this; }
-  Object *initInt(int intg1)
-    { initObj(objInt); intg = intg1; return this; }
-  Object *initReal(double real1)
-    { initObj(objReal); real = real1; return this; }
-  Object *initString(GString *string1)
-    { initObj(objString); string = string1; return this; }
-  Object *initName(char *name1)
-    { initObj(objName); name = copyString(name1); return this; }
+  Object *initBool(GBool boolnA)
+    { initObj(objBool); booln = boolnA; return this; }
+  Object *initInt(int intgA)
+    { initObj(objInt); intg = intgA; return this; }
+  Object *initReal(double realA)
+    { initObj(objReal); real = realA; return this; }
+  Object *initString(GString *stringA)
+    { initObj(objString); string = stringA; return this; }
+  Object *initName(char *nameA)
+    { initObj(objName); name = copyString(nameA); return this; }
   Object *initNull()
     { initObj(objNull); return this; }
-  Object *initArray();
-  Object *initDict();
-  Object *initDict(Dict *dict1)
-    { initObj(objDict); dict = dict1; return this; }
-  Object *initStream(Stream *stream1);
-  Object *initRef(int num1, int gen1)
-    { initObj(objRef); ref.num = num1; ref.gen = gen1; return this; }
-  Object *initCmd(char *cmd1)
-    { initObj(objCmd); cmd = copyString(cmd1); return this; }
+  Object *initArray(XRef *xref);
+  Object *initDict(XRef *xref);
+  Object *initStream(Stream *streamA);
+  Object *initRef(int numA, int genA)
+    { initObj(objRef); ref.num = numA; ref.gen = genA; return this; }
+  Object *initCmd(char *cmdA)
+    { initObj(objCmd); cmd = copyString(cmdA); return this; }
   Object *initError()
     { initObj(objError); return this; }
   Object *initEOF()
@@ -109,7 +108,7 @@ public:
 
   // If object is a Ref, fetch and return the referenced object.
   // Otherwise, return a copy of the object.
-  Object *fetch(Object *obj);
+  Object *fetch(XRef *xref, Object *obj);
 
   // Free object contents.
   void free();
@@ -133,12 +132,12 @@ public:
   GBool isNone() { return type == objNone; }
 
   // Special type checking.
-  GBool isName(char *name1)
-    { return type == objName && !strcmp(name, name1); }
+  GBool isName(char *nameA)
+    { return type == objName && !strcmp(name, nameA); }
   GBool isDict(char *dictType);
   GBool isStream(char *dictType);
-  GBool isCmd(char *cmd1)
-    { return type == objCmd && !strcmp(cmd, cmd1); }
+  GBool isCmd(char *cmdA)
+    { return type == objCmd && !strcmp(cmd, cmdA); }
 
   // Accessors.  NB: these assume object is of correct type.
   GBool getBool() { return booln; }
@@ -177,8 +176,8 @@ public:
   int streamGetChar();
   int streamLookChar();
   char *streamGetLine(char *buf, int size);
-  int streamGetPos();
-  void streamSetPos(int pos);
+  Guint streamGetPos();
+  void streamSetPos(Guint pos, int dir = 0);
   Dict *streamGetDict();
 
   // Output.
@@ -288,11 +287,11 @@ inline int Object::streamLookChar()
 inline char *Object::streamGetLine(char *buf, int size)
   { return stream->getLine(buf, size); }
 
-inline int Object::streamGetPos()
+inline Guint Object::streamGetPos()
   { return stream->getPos(); }
 
-inline void Object::streamSetPos(int pos)
-  { stream->setPos(pos); }
+inline void Object::streamSetPos(Guint pos, int dir)
+  { stream->setPos(pos, dir); }
 
 inline Dict *Object::streamGetDict()
   { return stream->getDict(); }
index eebf46055e6f1f12e4f886e664d03f60decba8da..6d465423b36be0e3ec29aaa7f9fc148c313c473d 100644 (file)
@@ -2,7 +2,7 @@
 //
 // OutputDev.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include "Object.h"
 #include "Stream.h"
 // OutputDev
 //------------------------------------------------------------------------
 
-void OutputDev::setDefaultCTM(double *ctm1) {
+void OutputDev::setDefaultCTM(double *ctm) {
   int i;
   double det;
 
-  for (i = 0; i < 6; ++i)
-    ctm[i] = ctm1[i];
-  det = 1 / (ctm[0] * ctm[3] - ctm[1] * ctm[2]);
-  ictm[0] = ctm[3] * det;
-  ictm[1] = -ctm[1] * det;
-  ictm[2] = -ctm[2] * det;
-  ictm[3] = ctm[0] * det;
-  ictm[4] = (ctm[2] * ctm[5] - ctm[3] * ctm[4]) * det;
-  ictm[5] = (ctm[1] * ctm[4] - ctm[0] * ctm[5]) * det;
+  for (i = 0; i < 6; ++i) {
+    defCTM[i] = ctm[i];
+  }
+  det = 1 / (defCTM[0] * defCTM[3] - defCTM[1] * defCTM[2]);
+  defICTM[0] = defCTM[3] * det;
+  defICTM[1] = -defCTM[1] * det;
+  defICTM[2] = -defCTM[2] * det;
+  defICTM[3] = defCTM[0] * det;
+  defICTM[4] = (defCTM[2] * defCTM[5] - defCTM[3] * defCTM[4]) * det;
+  defICTM[5] = (defCTM[1] * defCTM[4] - defCTM[0] * defCTM[5]) * det;
 }
 
 void OutputDev::cvtDevToUser(int dx, int dy, double *ux, double *uy) {
-  *ux = ictm[0] * dx + ictm[2] * dy + ictm[4];
-  *uy = ictm[1] * dx + ictm[3] * dy + ictm[5];
+  *ux = defICTM[0] * dx + defICTM[2] * dy + defICTM[4];
+  *uy = defICTM[1] * dx + defICTM[3] * dy + defICTM[5];
 }
 
 void OutputDev::cvtUserToDev(double ux, double uy, int *dx, int *dy) {
-  *dx = (int)(ctm[0] * ux + ctm[2] * uy + ctm[4] + 0.5);
-  *dy = (int)(ctm[1] * ux + ctm[3] * uy + ctm[5] + 0.5);
+  *dx = (int)(defCTM[0] * ux + defCTM[2] * uy + defCTM[4] + 0.5);
+  *dy = (int)(defCTM[1] * ux + defCTM[3] * uy + defCTM[5] + 0.5);
 }
 
 void OutputDev::updateAll(GfxState *state) {
@@ -57,6 +59,11 @@ void OutputDev::updateAll(GfxState *state) {
   updateFont(state);
 }
 
+GBool OutputDev::beginType3Char(GfxState *state,
+                               CharCode code, Unicode *u, int uLen) {
+  return gFalse;
+}
+
 void OutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
                              int width, int height, GBool invert,
                              GBool inlineImg) {
@@ -67,12 +74,13 @@ void OutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
     j = height * ((width + 7) / 8);
     for (i = 0; i < j; ++i)
       str->getChar();
+    str->close();
   }
 }
 
 void OutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
                          int width, int height, GfxImageColorMap *colorMap,
-                         GBool inlineImg) {
+                         int *maskColors, GBool inlineImg) {
   int i, j;
 
   if (inlineImg) {
@@ -81,6 +89,7 @@ void OutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
                   colorMap->getBits() + 7) / 8);
     for (i = 0; i < j; ++i)
       str->getChar();
+    str->close();
   }
 }
 
index d7de97abdf02fb104a535ec5ff129b2901ad56a6..cb825e0076e74073bcc318cc54b6136160b4bea9 100644 (file)
@@ -2,7 +2,7 @@
 //
 // OutputDev.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -14,6 +14,7 @@
 #endif
 
 #include "gtypes.h"
+#include "CharTypes.h"
 
 class GString;
 class GfxState;
@@ -45,10 +46,17 @@ public:
   // Does this device use drawChar() or drawString()?
   virtual GBool useDrawChar() = 0;
 
+  // Does this device use beginType3Char/endType3Char?  Otherwise,
+  // text in Type 3 fonts will be drawn with drawChar/drawString.
+  virtual GBool interpretType3Chars() = 0;
+
+  // Does this device need non-text content?
+  virtual GBool needNonText() { return gTrue; }
+
   //----- initialization and control
 
   // Set default transform matrix.
-  virtual void setDefaultCTM(double *ctm1);
+  virtual void setDefaultCTM(double *ctm);
 
   // Start a page.
   virtual void startPage(int pageNum, GfxState *state) {}
@@ -111,11 +119,13 @@ public:
   virtual void beginString(GfxState *state, GString *s) {}
   virtual void endString(GfxState *state) {}
   virtual void drawChar(GfxState *state, double x, double y,
-                       double dx, double dy, Guchar c) {}
-  virtual void drawChar16(GfxState *state, double x, double y,
-                         double dx, double dy, int c) {}
+                       double dx, double dy,
+                       double originX, double originY,
+                       CharCode code, Unicode *u, int uLen) {}
   virtual void drawString(GfxState *state, GString *s) {}
-  virtual void drawString16(GfxState *state, GString *s) {}
+  virtual GBool beginType3Char(GfxState *state,
+                              CharCode code, Unicode *u, int uLen);
+  virtual void endType3Char(GfxState *state) {}
 
   //----- image drawing
   virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
@@ -123,7 +133,7 @@ public:
                             GBool inlineImg);
   virtual void drawImage(GfxState *state, Object *ref, Stream *str,
                         int width, int height, GfxImageColorMap *colorMap,
-                        GBool inlineImg);
+                        int *maskColors, GBool inlineImg);
 
 #if OPI_SUPPORT
   //----- OPI functions
@@ -131,10 +141,18 @@ public:
   virtual void opiEnd(GfxState *state, Dict *opiDict);
 #endif
 
+  //----- Type 3 font operators
+  virtual void type3D0(GfxState *state, double wx, double wy) {}
+  virtual void type3D1(GfxState *state, double wx, double wy,
+                      double llx, double lly, double urx, double ury) {}
+
+  //----- PostScript XObjects
+  virtual void psXObject(Stream *psStream, Stream *level1Stream) {}
+
 private:
 
-  double ctm[6];               // coordinate transform matrix
-  double ictm[6];              // inverse CTM
+  double defCTM[6];            // default coordinate transform matrix
+  double defICTM[6];           // inverse of default CTM
 };
 
 #endif
index fadb366957b1f29c9166d33792c81cf5228af378..57782447f993d87f7f015ad8310bbc5e9dd7e655 100644 (file)
@@ -2,7 +2,7 @@
 //
 // PBMOutputDev.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include "GfxState.h"
 #include "GfxFont.h"
 #include "Error.h"
-#include "Params.h"
 #include "PBMOutputDev.h"
 
 //------------------------------------------------------------------------
 
 PBMOutputDev *PBMOutputDev::makePBMOutputDev(char *displayName,
-                                            char *fileRoot1) {
-  Display *display;
-  Pixmap pixmap;
-  Window dummyWin;
-  int screen;
-  int invert;
+                                            char *fileRootA) {
+  Display *displayA;
+  Pixmap pixmapA;
+  Window dummyWinA;
+  int screenA;
+  int invertA;
   unsigned long black, white;
   PBMOutputDev *out;
 
-  if (!(display = XOpenDisplay(displayName))) {
+  if (!(displayA = XOpenDisplay(displayName))) {
     fprintf(stderr, "Couldn't open display '%s'\n", displayName);
     exit(1);
   }
-  screen = DefaultScreen(display);
+  screenA = DefaultScreen(displayA);
 
-  black = BlackPixel(display, screen);
-  white = WhitePixel(display, screen);
+  black = BlackPixel(displayA, screenA);
+  white = WhitePixel(displayA, screenA);
   if ((black & 1) == (white & 1)) {
     fprintf(stderr, "Weird black/white pixel colors\n");
-    XCloseDisplay(display);
+    XCloseDisplay(displayA);
     return NULL;
   } 
-  invert = (white & 1) == 1 ? 0xff : 0x00;
-
-  dummyWin = XCreateSimpleWindow(display, RootWindow(display, screen),
-                                0, 0, 1, 1, 0,
-                                black, white);
-  pixmap = XCreatePixmap(display, dummyWin, 1, 1, 1);
-  out = new PBMOutputDev(display, screen, pixmap, dummyWin,
-                        invert, fileRoot1);
-  out->startDoc();
+  invertA = (white & 1) == 1 ? 0xff : 0x00;
+
+  dummyWinA = XCreateSimpleWindow(displayA, RootWindow(displayA, screenA),
+                                 0, 0, 1, 1, 0,
+                                 black, white);
+  pixmapA = XCreatePixmap(displayA, dummyWinA, 1, 1, 1);
+  out = new PBMOutputDev(displayA, screenA, pixmapA, dummyWinA,
+                        invertA, fileRootA);
   return out;
 }
 
 void PBMOutputDev::killPBMOutputDev(PBMOutputDev *out) {
-  Display *display;
-  Pixmap pixmap;
-  Window dummyWin;
+  Display *displayA;
+  Pixmap pixmapA;
+  Window dummyWinA;
 
-  display = out->display;
-  pixmap = out->pixmap;
-  dummyWin = out->dummyWin;
+  displayA = out->display;
+  pixmapA = out->pixmap;
+  dummyWinA = out->dummyWin;
 
   delete out;
 
   // these have to be done *after* the XOutputDev (parent of the
   // PBMOutputDev) is deleted, since XOutputDev::~XOutputDev() needs
   // them
-  XFreePixmap(display, pixmap);
-  XDestroyWindow(display, dummyWin);
-  XCloseDisplay(display);
+  XFreePixmap(displayA, pixmapA);
+  XDestroyWindow(displayA, dummyWinA);
+  XCloseDisplay(displayA);
 }
 
-PBMOutputDev::PBMOutputDev(Display *display1, int screen1,
-                          Pixmap pixmap1, Window dummyWin1,
-                          int invert1, char *fileRoot1):
-  XOutputDev(display1, pixmap1, 1,
-            DefaultColormap(display1, screen1),
-            WhitePixel(display1, DefaultScreen(display1)))
+PBMOutputDev::PBMOutputDev(Display *displayA, int screenA,
+                          Pixmap pixmapA, Window dummyWinA,
+                          int invertA, char *fileRootA):
+  XOutputDev(displayA, pixmapA, 1,
+            DefaultColormap(displayA, screenA), gFalse,
+            WhitePixel(displayA, DefaultScreen(displayA)),
+            gFalse, 1)
 {
-  display = display1;
-  screen = screen1;
-  pixmap = pixmap1;
-  dummyWin = dummyWin1;
-  invert = invert1;
-  fileRoot = fileRoot1;
+  display = displayA;
+  screen = screenA;
+  pixmap = pixmapA;
+  dummyWin = dummyWinA;
+  invert = invertA;
+  fileRoot = fileRootA;
   fileName = (char *)gmalloc(strlen(fileRoot) + 20);
 }
 
@@ -101,7 +101,6 @@ PBMOutputDev::~PBMOutputDev() {
 }
 
 void PBMOutputDev::startPage(int pageNum, GfxState *state) {
-
   curPage = pageNum;
   width = (int)(state->getPageWidth() + 0.5);
   height = (int)(state->getPageHeight() + 0.5);
index 5afe0d688b5c232dd3f7eeae4fed9db2fe408a45..5b28fc5a4de5b4cb01b62fa439281662f049bc42 100644 (file)
@@ -2,7 +2,7 @@
 //
 // PBMOutputDev.h
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -27,7 +27,7 @@ public:
   // constraints in the underlying XOutputDev object.)
 
   static PBMOutputDev *makePBMOutputDev(char *displayName,
-                                       char *fileRoot1);
+                                       char *fileRootA);
 
   static void killPBMOutputDev(PBMOutputDev *out);
 
@@ -43,9 +43,9 @@ public:
 
 private:
 
-  PBMOutputDev(Display *display1, int screen1,
-              Pixmap pixmap1, Window dummyWin1,
-              int invert1, char *fileRoot1);
+  PBMOutputDev(Display *displayA, int screenA,
+              Pixmap pixmapA, Window dummyWinA,
+              int invertA, char *fileRootA);
 
   char *fileRoot;
   char *fileName;
index ae55d231d88ced8d54c37c154388671180a8173b..29abba05cf254e608464a0ce40922d1370dab5db 100644 (file)
@@ -2,7 +2,7 @@
 //
 // PDFDoc.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -22,8 +23,8 @@
 #include "XRef.h"
 #include "Link.h"
 #include "OutputDev.h"
-#include "Params.h"
 #include "Error.h"
+#include "ErrorCodes.h"
 #include "Lexer.h"
 #include "Parser.h"
 #include "PDFDoc.h"
 // PDFDoc
 //------------------------------------------------------------------------
 
-PDFDoc::PDFDoc(GString *fileName1, GString *userPassword) {
+PDFDoc::PDFDoc(GString *fileNameA, GString *ownerPassword,
+              GString *userPassword, GBool printCommandsA) {
   Object obj;
   GString *fileName2;
 
   ok = gFalse;
+  errCode = errNone;
 
   file = NULL;
   str = NULL;
   xref = NULL;
   catalog = NULL;
   links = NULL;
+  printCommands = printCommandsA;
 
   // try to open file
-  fileName = fileName1;
+  fileName = fileNameA;
   fileName2 = NULL;
 #ifdef VMS
   if (!(file = fopen(fileName->getCString(), "rb", "ctx=stm"))) {
     error(-1, "Couldn't open file '%s'", fileName->getCString());
+    errCode = errOpenFile;
     return;
   }
 #else
@@ -66,6 +71,7 @@ PDFDoc::PDFDoc(GString *fileName1, GString *userPassword) {
       if (!(file = fopen(fileName2->getCString(), "rb"))) {
        error(-1, "Couldn't open file '%s'", fileName->getCString());
        delete fileName2;
+       errCode = errOpenFile;
        return;
       }
     }
@@ -75,40 +81,42 @@ PDFDoc::PDFDoc(GString *fileName1, GString *userPassword) {
 
   // create stream
   obj.initNull();
-  str = new FileStream(file, 0, -1, &obj);
+  str = new FileStream(file, 0, gFalse, 0, &obj);
 
-  ok = setup(userPassword);
+  ok = setup(ownerPassword, userPassword);
 }
 
-PDFDoc::PDFDoc(BaseStream *str, GString *userPassword) {
+PDFDoc::PDFDoc(BaseStream *strA, GString *ownerPassword,
+              GString *userPassword, GBool printCommandsA) {
   ok = gFalse;
+  errCode = errNone;
   fileName = NULL;
   file = NULL;
-  this->str = str;
+  str = strA;
   xref = NULL;
   catalog = NULL;
   links = NULL;
-  ok = setup(userPassword);
+  printCommands = printCommandsA;
+  ok = setup(ownerPassword, userPassword);
 }
 
-GBool PDFDoc::setup(GString *userPassword) {
-  Object catObj;
-
+GBool PDFDoc::setup(GString *ownerPassword, GString *userPassword) {
   // check header
   checkHeader();
 
   // read xref table
-  xref = new XRef(str, userPassword);
+  xref = new XRef(str, ownerPassword, userPassword);
   if (!xref->isOk()) {
     error(-1, "Couldn't read xref table");
+    errCode = xref->getErrorCode();
     return gFalse;
   }
 
   // read catalog
-  catalog = new Catalog(xref->getCatalog(&catObj));
-  catObj.free();
+  catalog = new Catalog(xref, printCommands);
   if (!catalog->isOk()) {
     error(-1, "Couldn't read page catalog");
+    errCode = errBadCatalog;
     return gFalse;
   }
 
@@ -203,8 +211,9 @@ GBool PDFDoc::isLinearized() {
 
   lin = gFalse;
   obj1.initNull();
-  parser = new Parser(new Lexer(str->makeSubStream(str->getStart(),
-                                                  -1, &obj1)));
+  parser = new Parser(xref,
+            new Lexer(xref,
+              str->makeSubStream(str->getStart(), gFalse, 0, &obj1)));
   parser->getObj(&obj1);
   parser->getObj(&obj2);
   parser->getObj(&obj3);
@@ -248,4 +257,3 @@ void PDFDoc::getLinks(Page *page) {
   links = new Links(page->getAnnots(&obj), catalog->getBaseURI());
   obj.free();
 }
-
index e679db9795edec920d234882c4ce902da48b732f..c12531e9387c76bf7c89c9a8e146cb1e9e5500e8 100644 (file)
@@ -2,7 +2,7 @@
 //
 // PDFDoc.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #endif
 
 #include <stdio.h>
+#include "XRef.h"
 #include "Link.h"
 #include "Catalog.h"
 #include "Page.h"
 
 class GString;
 class BaseStream;
-class XRef;
 class OutputDev;
 class Links;
 class LinkAction;
@@ -33,16 +33,24 @@ class LinkDest;
 class PDFDoc {
 public:
 
-  PDFDoc(GString *fileName1, GString *userPassword = NULL);
-  PDFDoc(BaseStream *str, GString *userPassword = NULL);
+  PDFDoc(GString *fileNameA, GString *ownerPassword = NULL,
+        GString *userPassword = NULL, GBool printCommandsA = gFalse);
+  PDFDoc(BaseStream *strA, GString *ownerPassword = NULL,
+        GString *userPassword = NULL, GBool printCommandsA = gFalse);
   ~PDFDoc();
 
   // Was PDF document successfully opened?
   GBool isOk() { return ok; }
 
+  // Get the error code (if isOk() returns false).
+  int getErrorCode() { return errCode; }
+
   // Get file name.
   GString *getFileName() { return fileName; }
 
+  // Get the xref table.
+  XRef *getXRef() { return xref; }
+
   // Get catalog.
   Catalog *getCatalog() { return catalog; }
 
@@ -60,6 +68,13 @@ public:
   // Get number of pages.
   int getNumPages() { return catalog->getNumPages(); }
 
+  // Return the contents of the metadata stream, or NULL if there is
+  // no metadata.
+  GString *readMetadata() { return catalog->readMetadata(); }
+
+  // Return the structure tree root object.
+  Object *getStructTreeRoot() { return catalog->getStructTreeRoot(); }
+
   // Display a page.
   void displayPage(OutputDev *out, int page, double zoom,
                   int rotate, GBool doLinks);
@@ -88,10 +103,14 @@ public:
   GBool isEncrypted() { return xref->isEncrypted(); }
 
   // Check various permissions.
-  GBool okToPrint() { return xref->okToPrint(); }
-  GBool okToChange() { return xref->okToChange(); }
-  GBool okToCopy() { return xref->okToCopy(); }
-  GBool okToAddNotes() { return xref->okToAddNotes(); }
+  GBool okToPrint(GBool ignoreOwnerPW = gFalse)
+    { return xref->okToPrint(ignoreOwnerPW); }
+  GBool okToChange(GBool ignoreOwnerPW = gFalse)
+    { return xref->okToChange(ignoreOwnerPW); }
+  GBool okToCopy(GBool ignoreOwnerPW = gFalse)
+    { return xref->okToCopy(ignoreOwnerPW); }
+  GBool okToAddNotes(GBool ignoreOwnerPW = gFalse)
+    { return xref->okToAddNotes(ignoreOwnerPW); }
 
   // Is this document linearized?
   GBool isLinearized();
@@ -107,7 +126,7 @@ public:
 
 private:
 
-  GBool setup(GString *userPassword);
+  GBool setup(GString *ownerPassword, GString *userPassword);
   void checkHeader();
   void getLinks(Page *page);
 
@@ -118,8 +137,10 @@ private:
   XRef *xref;
   Catalog *catalog;
   Links *links;
+  GBool printCommands;
 
   GBool ok;
+  int errCode;
 };
 
 #endif
index 53cf39daababcc245433b4b548720e7a287f3051..18359119617a158c28ea0a0b0245d0df0aadeac1 100644 (file)
@@ -2,7 +2,7 @@
 //
 // PSOutputDev.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stddef.h>
 #include <stdarg.h>
 #include <math.h>
 #include "GString.h"
 #include "config.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Error.h"
+#include "Function.h"
+#include "Gfx.h"
 #include "GfxState.h"
 #include "GfxFont.h"
+#include "CharCodeToUnicode.h"
+#include "UnicodeMap.h"
 #include "FontFile.h"
 #include "Catalog.h"
 #include "Page.h"
 #include "Stream.h"
-#include "FormWidget.h"
+#include "Annot.h"
 #include "PSOutputDev.h"
 
-#if JAPANESE_SUPPORT
-#include "Japan12ToRKSJ.h"
-#endif
-
 #ifdef MACOS
 // needed for setting type/creator of MacOS files
 #include "ICSupport.h"
 #endif
 
-//------------------------------------------------------------------------
-// Parameters
-//------------------------------------------------------------------------
-
-// Generate Level 1 PostScript?
-GBool psOutLevel1 = gFalse;
-
-// Generate Level 1 separable PostScript?
-GBool psOutLevel1Sep = gFalse;
-
-// Generate Encapsulated PostScript?
-GBool psOutEPS = gFalse;
-
-#if OPI_SUPPORT
-// Generate OPI comments?
-GBool psOutOPI = gFalse;
-#endif
-
-int paperWidth = defPaperWidth;
-int paperHeight = defPaperHeight;
-
 //------------------------------------------------------------------------
 // PostScript prolog and setup
 //------------------------------------------------------------------------
@@ -67,15 +48,16 @@ static char *prolog[] = {
   "% PDF special state",
   "/pdfDictSize 14 def",
   "/pdfSetup {",
-  "  2 array astore",
+  "  3 1 roll 2 array astore",
   "  /setpagedevice where {",
-  "    pop 3 dict dup begin",
-  "      exch /PageSize exch def",
+  "    pop 3 dict begin",
+  "      /PageSize exch def",
   "      /ImagingBBox null def",
   "      /Policies 1 dict dup begin /PageSize 3 def end def",
-  "    end setpagedevice",
+  "      /Duplex exch def",
+  "    currentdict end setpagedevice",
   "  } {",
-  "    pop",
+  "    pop pop",
   "  } ifelse",
   "} def",
   "/pdfStartPage {",
@@ -93,19 +75,83 @@ static char *prolog[] = {
   "  /pdfHorizScaling 1 def",
   "} def",
   "/pdfEndPage { end } def",
+  "% separation convention operators",
+  "/findcmykcustomcolor where {",
+  "  pop",
+  "}{",
+  "  /findcmykcustomcolor { 5 array astore } def",
+  "} ifelse",
+  "/setcustomcolor where {",
+  "  pop",
+  "}{",
+  "  /setcustomcolor {",
+  "    exch",
+  "    [ exch /Separation exch dup 4 get exch /DeviceCMYK exch",
+  "      0 4 getinterval cvx",
+  "      [ exch /dup load exch { mul exch dup } /forall load",
+  "        /pop load dup ] cvx",
+  "    ] setcolorspace setcolor",
+  "  } def",
+  "} ifelse",
+  "/customcolorimage where {",
+  "  pop",
+  "}{",
+  "  /customcolorimage {",
+  "    gsave",
+  "    [ exch /Separation exch dup 4 get exch /DeviceCMYK exch",
+  "      0 4 getinterval cvx",
+  "      [ exch /dup load exch { mul exch dup } /forall load",
+  "        /pop load dup ] cvx",
+  "    ] setcolorspace",
+  "    10 dict begin",
+  "      /ImageType 1 def",
+  "      /DataSource exch def",
+  "      /ImageMatrix exch def",
+  "      /BitsPerComponent exch def",
+  "      /Height exch def",
+  "      /Width exch def",
+  "      /Decode [1 0] def",
+  "    currentdict end",
+  "    image",
+  "    grestore",
+  "  } def",
+  "} ifelse",
+  "% PDF color state",
   "/sCol {",
   "  pdfLastStroke not {",
   "    pdfStroke aload length",
-  "    dup 1 eq { pop setgray }",
-  "      { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse",
+  "    dup 1 eq {",
+  "      pop setgray",
+  "    }{",
+  "      dup 3 eq {",
+  "        pop setrgbcolor",
+  "      }{",
+  "        4 eq {",
+  "          setcmykcolor",
+  "        }{",
+  "          findcmykcustomcolor exch setcustomcolor",
+  "        } ifelse",
+  "      } ifelse",
+  "    } ifelse",
   "    /pdfLastStroke true def /pdfLastFill false def",
   "  } if",
   "} def",
   "/fCol {",
   "  pdfLastFill not {",
   "    pdfFill aload length",
-  "    dup 1 eq { pop setgray }",
-  "      { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse",
+  "    dup 1 eq {",
+  "      pop setgray",
+  "    }{",
+  "      dup 3 eq {",
+  "        pop setrgbcolor",
+  "      }{",
+  "        4 eq {",
+  "          setcmykcolor",
+  "        }{",
+  "          findcmykcustomcolor exch setcustomcolor",
+  "        } ifelse",
+  "      } ifelse",
+  "    } ifelse",
   "    /pdfLastFill true def /pdfLastStroke false def",
   "  } if",
   "} def",
@@ -120,7 +166,28 @@ static char *prolog[] = {
   "  end",
   "  definefont pop",
   "} def",
-  "/pdfMakeFont16 { findfont definefont pop } def",
+  "/pdfMakeFont16 {",
+  "  exch findfont",
+  "  dup length dict begin",
+  "    { 1 index /FID ne { def } { pop pop } ifelse } forall",
+  "    /WMode exch def",
+  "    currentdict",
+  "  end",
+  "  definefont pop",
+  "} def",
+  "/pdfMakeFont16L3 {",
+  "  1 index /CIDFont resourcestatus {",
+  "    pop pop 1 index /CIDFont findresource /CIDFontType known",
+  "  } {",
+  "    false",
+  "  } ifelse",
+  "  {",
+  "    0 eq { /Identity-H } { /Identity-V } ifelse",
+  "    exch 1 array astore composefont pop",
+  "  } {",
+  "    pdfMakeFont16",
+  "  } ifelse",
+  "} def",
   "% graphics state operators",
   "/q { gsave pdfDictSize dict begin } def",
   "/Q { end grestore } def",
@@ -144,6 +211,12 @@ static char *prolog[] = {
   "     /pdfLastFill true def /pdfLastStroke false def } def",
   "/K { 4 copy 4 array astore /pdfStroke exch def setcmykcolor",
   "     /pdfLastStroke true def /pdfLastFill false def } def",
+  "/ck { 6 copy 6 array astore /pdfFill exch def",
+  "      findcmykcustomcolor exch setcustomcolor",
+  "      /pdfLastFill true def /pdfLastStroke false def } def",
+  "/CK { 6 copy 6 array astore /pdfStroke exch def",
+  "      findcmykcustomcolor exch setcustomcolor",
+  "      /pdfLastStroke true def /pdfLastFill false def } def",
   "% path segment operators",
   "/m { moveto } def",
   "/l { lineto } def",
@@ -153,6 +226,7 @@ static char *prolog[] = {
   "/h { closepath } def",
   "% path painting operators",
   "/S { sCol stroke } def",
+  "/Sf { fCol stroke } def",
   "/f { fCol fill } def",
   "/f* { fCol eofill } def",
   "% clipping operators",
@@ -172,17 +246,55 @@ static char *prolog[] = {
   "/Td { pdfTextMat transform moveto } def",
   "/Tm { /pdfTextMat exch def } def",
   "% text string operators",
-  "/Tj { pdfTextRender 1 and 0 eq { fCol } { sCol } ifelse",
+  "/awcp { % awidthcharpath",
+  "  exch {",
+  "    1 string dup 0 3 index put 2 index charpath",
+  "    3 index 3 index rmoveto",
+  "    4 index eq { 5 index 5 index rmoveto } if",
+  "  } forall",
+  "  6 {pop} repeat",
+  "} def",
+  "/Tj { fCol",  // because stringwidth has to draw Type 3 chars
   "      0 pdfTextRise pdfTextMat dtransform rmoveto",
-  "      pdfFontSize mul pdfHorizScaling mul",
   "      1 index stringwidth pdfTextMat idtransform pop",
   "      sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse",
-  "      pdfWordSpacing 0 pdfTextMat dtransform 32",
-  "      4 3 roll pdfCharSpacing add 0 pdfTextMat dtransform",
-  "      6 5 roll awidthshow",
+  "      pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32",
+  "      4 3 roll pdfCharSpacing pdfHorizScaling mul add 0",
+  "      pdfTextMat dtransform",
+  "      6 5 roll",
+  "      currentpoint 8 2 roll",
+  "      pdfTextRender 1 and 0 eq {",
+  "        6 copy awidthshow",
+  "      } if",
+  "      pdfTextRender 3 and dup 1 eq exch 2 eq or {",
+  "        8 6 roll moveto",
+  "        sCol false awcp currentpoint stroke moveto",
+  "      } {",
+  "        8 {pop} repeat",
+  "      } ifelse",
   "      0 pdfTextRise neg pdfTextMat dtransform rmoveto } def",
+  "/Tj16 { pdfTextRender 1 and 0 eq { fCol } { sCol } ifelse",
+  "        0 pdfTextRise pdfTextMat dtransform rmoveto",
+  "        2 index stringwidth pdfTextMat idtransform pop",
+  "        sub exch div",
+  "        pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32",
+  "        4 3 roll pdfCharSpacing pdfHorizScaling mul add 0",
+  "        pdfTextMat dtransform",
+  "        6 5 roll awidthshow",
+  "        0 pdfTextRise neg pdfTextMat dtransform rmoveto } def",
+  "/Tj16V { pdfTextRender 1 and 0 eq { fCol } { sCol } ifelse",
+  "         0 pdfTextRise pdfTextMat dtransform rmoveto",
+  "         2 index stringwidth pdfTextMat idtransform exch pop",
+  "         sub exch div",
+  "         0 pdfWordSpacing pdfTextMat dtransform 32",
+  "         4 3 roll pdfCharSpacing add 0 exch",
+  "         pdfTextMat dtransform",
+  "         6 5 roll awidthshow",
+  "         0 pdfTextRise neg pdfTextMat dtransform rmoveto } def",
   "/TJm { pdfFontSize 0.001 mul mul neg 0",
   "       pdfTextMat dtransform rmoveto } def",
+  "/TJmV { pdfFontSize 0.001 mul mul neg 0 exch",
+  "        pdfTextMat dtransform rmoveto } def",
   "% Level 1 image operators",
   "/pdfIm1 {",
   "  /pdfImBuf1 4 index string def",
@@ -211,6 +323,20 @@ static char *prolog[] = {
   "    not { pop exit } if",
   "    (%-EOD-) eq { exit } if } loop",
   "} def",
+  "/pdfImSep {",
+  "  findcmykcustomcolor exch",
+  "  dup /Width get /pdfImBuf1 exch string def",
+  "  begin Width Height BitsPerComponent ImageMatrix DataSource end",
+  "  /pdfImData exch def",
+  "  { pdfImData pdfImBuf1 readstring pop",
+  "    0 1 2 index length 1 sub {",
+  "      1 index exch 2 copy get 255 exch sub put",
+  "    } for }",
+  "  6 5 roll customcolorimage",
+  "  { currentfile pdfImBuf readline",
+  "    not { pop exit } if",
+  "    (%-EOD-) eq { exit } if } loop",
+  "} def",
   "/pdfImM {",
   "  fCol imagemask",
   "  { currentfile pdfImBuf readline",
@@ -221,36 +347,76 @@ static char *prolog[] = {
   NULL
 };
 
+static char *cmapProlog[] = {
+  "/CIDInit /ProcSet findresource begin",
+  "10 dict begin",
+  "  begincmap",
+  "  /CMapType 1 def",
+  "  /CMapName /Identity-H def",
+  "  /CIDSystemInfo 3 dict dup begin",
+  "    /Registry (Adobe) def",
+  "    /Ordering (Identity) def",
+  "    /Supplement 0 def",
+  "  end def",
+  "  1 begincodespacerange",
+  "    <0000> <ffff>",
+  "  endcodespacerange",
+  "  0 usefont",
+  "  1 begincidrange",
+  "    <0000> <ffff> 0",
+  "  endcidrange",
+  "  endcmap",
+  "  currentdict CMapName exch /CMap defineresource pop",
+  "end",
+  "10 dict begin",
+  "  begincmap",
+  "  /CMapType 1 def",
+  "  /CMapName /Identity-V def",
+  "  /CIDSystemInfo 3 dict dup begin",
+  "    /Registry (Adobe) def",
+  "    /Ordering (Identity) def",
+  "    /Supplement 0 def",
+  "  end def",
+  "  /WMode 1 def",
+  "  1 begincodespacerange",
+  "    <0000> <ffff>",
+  "  endcodespacerange",
+  "  0 usefont",
+  "  1 begincidrange",
+  "    <0000> <ffff> 0",
+  "  endcidrange",
+  "  endcmap",
+  "  currentdict CMapName exch /CMap defineresource pop",
+  "end",
+  "end",
+  NULL
+};
+
 //------------------------------------------------------------------------
 // Fonts
 //------------------------------------------------------------------------
 
-struct PSFont {
-  char *name;                  // PDF name
-  char *psName;                        // PostScript name
-};
-
 struct PSSubstFont {
   char *psName;                        // PostScript name
   double mWidth;               // width of 'm' character
 };
 
-static PSFont psFonts[] = {
-  {"Courier",               "Courier"},
-  {"Courier-Bold",          "Courier-Bold"},
-  {"Courier-Oblique",       "Courier-Bold"},
-  {"Courier-BoldOblique",   "Courier-BoldOblique"},
-  {"Helvetica",             "Helvetica"},
-  {"Helvetica-Bold",        "Helvetica-Bold"},
-  {"Helvetica-Oblique",     "Helvetica-Oblique"},
-  {"Helvetica-BoldOblique", "Helvetica-BoldOblique"},
-  {"Symbol",                "Symbol"},
-  {"Times-Roman",           "Times-Roman"},
-  {"Times-Bold",            "Times-Bold"},
-  {"Times-Italic",          "Times-Italic"},
-  {"Times-BoldItalic",      "Times-BoldItalic"},
-  {"ZapfDingbats",          "ZapfDingbats"},
-  {NULL}
+static char *psFonts[] = {
+  "Courier",
+  "Courier-Bold",
+  "Courier-Oblique",
+  "Courier-BoldOblique",
+  "Helvetica",
+  "Helvetica-Bold",
+  "Helvetica-Oblique",
+  "Helvetica-BoldOblique",
+  "Symbol",
+  "Times-Roman",
+  "Times-Bold",
+  "Times-Italic",
+  "Times-BoldItalic",
+  "ZapfDingbats",
+  NULL
 };
 
 static PSSubstFont psSubstFonts[] = {
@@ -268,31 +434,96 @@ static PSSubstFont psSubstFonts[] = {
   {"Courier-BoldOblique",   0.600}
 };
 
+// Encoding info for substitute 16-bit font
+struct PSFont16Enc {
+  Ref fontID;
+  GString *enc;
+};
+
+//------------------------------------------------------------------------
+// process colors
+//------------------------------------------------------------------------
+
+#define psProcessCyan     1
+#define psProcessMagenta  2
+#define psProcessYellow   4
+#define psProcessBlack    8
+#define psProcessCMYK    15
+
+//------------------------------------------------------------------------
+// PSOutCustomColor
+//------------------------------------------------------------------------
+
+class PSOutCustomColor {
+public:
+
+  PSOutCustomColor(double cA, double mA,
+                  double yA, double kA, GString *nameA);
+  ~PSOutCustomColor();
+
+  double c, m, y, k;
+  GString *name;
+  PSOutCustomColor *next;
+};
+
+PSOutCustomColor::PSOutCustomColor(double cA, double mA,
+                                  double yA, double kA, GString *nameA) {
+  c = cA;
+  m = mA;
+  y = yA;
+  k = kA;
+  name = nameA;
+  next = NULL;
+}
+
+PSOutCustomColor::~PSOutCustomColor() {
+  delete name;
+}
+
 //------------------------------------------------------------------------
 // PSOutputDev
 //------------------------------------------------------------------------
 
-PSOutputDev::PSOutputDev(char *fileName, Catalog *catalog,
-                        int firstPage, int lastPage,
-                        GBool embedType11, GBool doForm1) {
+extern "C" {
+typedef void (*SignalFunc)(int);
+}
+
+PSOutputDev::PSOutputDev(char *fileName, XRef *xrefA, Catalog *catalog,
+                        int firstPage, int lastPage, PSOutMode modeA) {
   Page *page;
+  PDFRectangle *box;
   Dict *resDict;
-  FormWidgets *formWidgets;
+  Annots *annots;
   char **p;
   int pg;
   Object obj1, obj2;
   int i;
 
   // initialize
-  embedType1 = embedType11;
-  doForm = doForm1;
+  xref = xrefA;
+  level = globalParams->getPSLevel();
+  mode = modeA;
+  paperWidth = globalParams->getPSPaperWidth();
+  paperHeight = globalParams->getPSPaperHeight();
   fontIDs = NULL;
   fontFileIDs = NULL;
   fontFileNames = NULL;
+  font16Enc = NULL;
   embFontList = NULL;
   f = NULL;
-  if (doForm)
+  if (mode == psModeForm) {
     lastPage = firstPage;
+  }
+  processColors = 0;
+  customColors = NULL;
+  inType3Char = gFalse;
+  t3String = NULL;
+
+#if OPI_SUPPORT
+  // initialize OPI nesting levels
+  opi13Nest = 0;
+  opi20Nest = 0;
+#endif
 
   // open file or pipe
   ok = gTrue;
@@ -303,7 +534,7 @@ PSOutputDev::PSOutputDev(char *fileName, Catalog *catalog,
     fileType = psPipe;
 #ifdef HAVE_POPEN
 #ifndef WIN32
-    signal(SIGPIPE, (void (*)(int))SIG_IGN);
+    signal(SIGPIPE, (SignalFunc)SIG_IGN);
 #endif
     if (!(f = popen(fileName + 1, "w"))) {
       error(-1, "Couldn't run print command '%s'", fileName);
@@ -334,68 +565,82 @@ PSOutputDev::PSOutputDev(char *fileName, Catalog *catalog,
   fontFileNameSize = 64;
   fontFileNameLen = 0;
   fontFileNames = (GString **)gmalloc(fontFileNameSize * sizeof(GString *));
+  font16EncLen = 0;
+  font16EncSize = 0;
 
   // initialize embedded font resource comment list
   embFontList = new GString();
 
   // write header
-  if (doForm) {
-    writePS("%%!PS-Adobe-3.0 Resource-Form\n");
+  switch (mode) {
+  case psModePS:
+    writePS("%%!PS-Adobe-3.0\n");
     writePS("%%%%Creator: xpdf/pdftops %s\n", xpdfVersion);
     writePS("%%%%LanguageLevel: %d\n",
-           (psOutLevel1 || psOutLevel1Sep) ? 1 : 2);
-    if (psOutLevel1Sep) {
-      writePS("%%%%DocumentProcessColors: Cyan Magenta Yellow Black\n");
+           (level == psLevel1 || level == psLevel1Sep) ? 1 :
+           (level == psLevel2 || level == psLevel2Sep) ? 2 : 3);
+    if (level == psLevel1Sep || level == psLevel2Sep || level == psLevel3Sep) {
+      writePS("%%%%DocumentProcessColors: (atend)\n");
+      writePS("%%%%DocumentCustomColors: (atend)\n");
     }
+    writePS("%%%%DocumentSuppliedResources: (atend)\n");
+    writePS("%%%%DocumentMedia: plain %d %d 0 () ()\n",
+           paperWidth, paperHeight);
+    writePS("%%%%Pages: %d\n", lastPage - firstPage + 1);
     writePS("%%%%EndComments\n");
-    page = catalog->getPage(firstPage);
-    writePS("32 dict dup begin\n");
-    writePS("/BBox [%d %d %d %d] def\n",
-           (int)page->getX1(), (int)page->getY1(),
-           (int)page->getX2(), (int)page->getY2());
-    writePS("/FormType 1 def\n");
-    writePS("/Matrix [1 0 0 1 0 0] def\n");
-  } else if (psOutEPS) {
+    writePS("%%%%BeginDefaults\n");
+    writePS("%%%%PageMedia: plain\n");
+    writePS("%%%%EndDefaults\n");
+    break;
+  case psModeEPS:
     writePS("%%!PS-Adobe-3.0 EPSF-3.0\n");
     writePS("%%%%Creator: xpdf/pdftops %s\n", xpdfVersion);
     writePS("%%%%LanguageLevel: %d\n",
-           (psOutLevel1 || psOutLevel1Sep) ? 1 : 2);
-    if (psOutLevel1Sep) {
-      writePS("%%%%DocumentProcessColors: Cyan Magenta Yellow Black\n");
+           (level == psLevel1 || level == psLevel1Sep) ? 1 :
+           (level == psLevel2 || level == psLevel2Sep) ? 2 : 3);
+    if (level == psLevel1Sep || level == psLevel2Sep || level == psLevel3Sep) {
+      writePS("%%%%DocumentProcessColors: (atend)\n");
+      writePS("%%%%DocumentCustomColors: (atend)\n");
     }
     page = catalog->getPage(firstPage);
+    box = page->getBox();
     writePS("%%%%BoundingBox: %d %d %d %d\n",
-           (int)floor(page->getX1()), (int)floor(page->getY1()),
-           (int)ceil(page->getX2()), (int)ceil(page->getY2()));
-    if (floor(page->getX1()) != ceil(page->getX1()) ||
-       floor(page->getY1()) != ceil(page->getY1()) ||
-       floor(page->getX2()) != ceil(page->getX2()) ||
-       floor(page->getY2()) != ceil(page->getY2())) {
+           (int)floor(box->x1), (int)floor(box->y1),
+           (int)ceil(box->x2), (int)ceil(box->y2));
+    if (floor(box->x1) != ceil(box->x1) ||
+       floor(box->y1) != ceil(box->y1) ||
+       floor(box->x2) != ceil(box->x2) ||
+       floor(box->y2) != ceil(box->y2)) {
       writePS("%%%%HiResBoundingBox: %g %g %g %g\n",
-             page->getX1(), page->getY1(),
-             page->getX2(), page->getY2());
+             box->x1, box->y1, box->x2, box->y2);
     }
     writePS("%%%%DocumentSuppliedResources: (atend)\n");
     writePS("%%%%EndComments\n");
-  } else {
-    writePS("%%!PS-Adobe-3.0\n");
+    break;
+  case psModeForm:
+    writePS("%%!PS-Adobe-3.0 Resource-Form\n");
     writePS("%%%%Creator: xpdf/pdftops %s\n", xpdfVersion);
     writePS("%%%%LanguageLevel: %d\n",
-           (psOutLevel1 || psOutLevel1Sep) ? 1 : 2);
-    if (psOutLevel1Sep) {
-      writePS("%%%%DocumentProcessColors: Cyan Magenta Yellow Black\n");
+           (level == psLevel1 || level == psLevel1Sep) ? 1 :
+           (level == psLevel2 || level == psLevel2Sep) ? 2 : 3);
+    if (level == psLevel1Sep || level == psLevel2Sep || level == psLevel3Sep) {
+      writePS("%%%%DocumentProcessColors: (atend)\n");
+      writePS("%%%%DocumentCustomColors: (atend)\n");
     }
-    writePS("%%%%DocumentMedia: plain %d %d 0 () ()\n",
-           paperWidth, paperHeight);
-    writePS("%%%%Pages: %d\n", lastPage - firstPage + 1);
+    writePS("%%%%DocumentSuppliedResources: (atend)\n");
     writePS("%%%%EndComments\n");
-    writePS("%%%%BeginDefaults\n");
-    writePS("%%%%PageMedia: plain\n");
-    writePS("%%%%EndDefaults\n");
+    page = catalog->getPage(firstPage);
+    box = page->getBox();
+    writePS("32 dict dup begin\n");
+    writePS("/BBox [%d %d %d %d] def\n",
+           (int)box->x1, (int)box->y1, (int)box->x2, (int)box->y2);
+    writePS("/FormType 1 def\n");
+    writePS("/Matrix [1 0 0 1 0 0] def\n");
+    break;
   }
 
   // write prolog
-  if (!doForm) {
+  if (mode != psModeForm) {
     writePS("%%%%BeginProlog\n");
   }
   writePS("%%%%BeginResource: procset xpdf %s 0\n", xpdfVersion);
@@ -403,13 +648,17 @@ PSOutputDev::PSOutputDev(char *fileName, Catalog *catalog,
     writePS("%s\n", *p);
   }
   writePS("%%%%EndResource\n");
-  if (!doForm) {
+  if (level >= psLevel3) {
+    for (p = cmapProlog; *p; ++p) {
+      writePS("%s\n", *p);
+    }
+  }
+  if (mode != psModeForm) {
     writePS("%%%%EndProlog\n");
   }
 
   // set up fonts and images
-  type3Warning = gFalse;
-  if (doForm) {
+  if (mode == psModeForm) {
     // swap the form and xpdf dicts
     writePS("xpdf end begin dup begin\n");
   } else {
@@ -421,10 +670,10 @@ PSOutputDev::PSOutputDev(char *fileName, Catalog *catalog,
     if ((resDict = page->getResourceDict())) {
       setupResources(resDict);
     }
-    formWidgets = new FormWidgets(page->getAnnots(&obj1));
+    annots = new Annots(xref, page->getAnnots(&obj1));
     obj1.free();
-    for (i = 0; i < formWidgets->getNumWidgets(); ++i) {
-      if (formWidgets->getWidget(i)->getAppearance(&obj1)->isStream()) {
+    for (i = 0; i < annots->getNumAnnots(); ++i) {
+      if (annots->getAnnot(i)->getAppearance(&obj1)->isStream()) {
        obj1.streamGetDict()->lookup("Resources", &obj2);
        if (obj2.isDict()) {
          setupResources(obj2.getDict());
@@ -433,45 +682,65 @@ PSOutputDev::PSOutputDev(char *fileName, Catalog *catalog,
       }
       obj1.free();
     }
-    delete formWidgets;
+    delete annots;
   }
-  if (!doForm) {
+  if (mode != psModeForm) {
+    if (mode != psModeEPS) {
+      writePS("%d %d %s pdfSetup\n",
+             paperWidth, paperHeight,
+             globalParams->getPSDuplex() ? "true" : "false");
+    }
 #if OPI_SUPPORT
-    if (psOutOPI) {
+    if (globalParams->getPSOPI()) {
       writePS("/opiMatrix matrix currentmatrix def\n");
     }
 #endif
-    if (!psOutEPS) {
-      writePS("%d %d pdfSetup\n", paperWidth, paperHeight);
-    }
     writePS("%%%%EndSetup\n");
   }
 
   // initialize sequential page number
   seqPage = 1;
-
-#if OPI_SUPPORT
-  // initialize OPI nesting levels
-  opi13Nest = 0;
-  opi20Nest = 0;
-#endif
 }
 
 PSOutputDev::~PSOutputDev() {
+  PSOutCustomColor *cc;
   int i;
 
   if (f) {
-    if (doForm) {
+    if (mode == psModeForm) {
       writePS("/Foo exch /Form defineresource pop\n");
-    } else if (psOutEPS) {
+    } else {
       writePS("%%%%Trailer\n");
       writePS("end\n");
       writePS("%%%%DocumentSuppliedResources:\n");
       writePS("%s", embFontList->getCString());
-      writePS("%%%%EOF\n");
-    } else {
-      writePS("%%%%Trailer\n");
-      writePS("end\n");
+      if (level == psLevel1Sep || level == psLevel2Sep ||
+         level == psLevel3Sep) {
+         writePS("%%%%DocumentProcessColors:");
+         if (processColors & psProcessCyan) {
+          writePS(" Cyan");
+        }
+         if (processColors & psProcessMagenta) {
+          writePS(" Magenta");
+        }
+         if (processColors & psProcessYellow) {
+          writePS(" Yellow");
+        }
+         if (processColors & psProcessBlack) {
+          writePS(" Black");
+        }
+         writePS("\n");
+         writePS("%%%%DocumentCustomColors:");
+        for (cc = customColors; cc; cc = cc->next) {
+          writePS(" (%s)", cc->name->getCString());
+        }
+         writePS("\n");
+         writePS("%%%%CMYKCustomColor:\n");
+        for (cc = customColors; cc; cc = cc->next) {
+          writePS("%%%%+ %g %g %g %g (%s)\n",
+                  cc->c, cc->m, cc->y, cc->k, cc->name->getCString());
+        }
+      }
       writePS("%%%%EOF\n");
     }
     if (fileType == psFile) {
@@ -484,7 +753,7 @@ PSOutputDev::~PSOutputDev() {
     else if (fileType == psPipe) {
       pclose(f);
 #ifndef WIN32
-      signal(SIGPIPE, (void (*)(int))SIG_DFL);
+      signal(SIGPIPE, (SignalFunc)SIG_DFL);
 #endif
     }
 #endif
@@ -504,6 +773,17 @@ PSOutputDev::~PSOutputDev() {
     }
     gfree(fontFileNames);
   }
+  if (font16Enc) {
+    for (i = 0; i < font16EncLen; ++i) {
+      delete font16Enc[i].enc;
+    }
+    gfree(font16Enc);
+  }
+  while (customColors) {
+    cc = customColors;
+    customColors = cc->next;
+    delete cc;
+  }
 }
 
 void PSOutputDev::setupResources(Dict *resDict) {
@@ -538,23 +818,26 @@ void PSOutputDev::setupFonts(Dict *resDict) {
 
   resDict->lookup("Font", &fontDict);
   if (fontDict.isDict()) {
-    gfxFontDict = new GfxFontDict(fontDict.getDict());
+    gfxFontDict = new GfxFontDict(xref, fontDict.getDict());
     for (i = 0; i < gfxFontDict->getNumFonts(); ++i) {
       font = gfxFontDict->getFont(i);
-      setupFont(font);
+      setupFont(font, resDict);
     }
     delete gfxFontDict;
   }
   fontDict.free();
 }
 
-void PSOutputDev::setupFont(GfxFont *font) {
+void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict) {
   Ref fontFileID;
   GString *name;
+  PSFontParam *fontParam;
+  GString *psNameStr;
   char *psName;
+  char type3Name[64];
+  UnicodeMap *uMap;
   char *charName;
   double xs, ys;
-  GBool do16Bit;
   int code;
   double w1, w2;
   double *fm;
@@ -562,9 +845,10 @@ void PSOutputDev::setupFont(GfxFont *font) {
 
   // check if font is already set up
   for (i = 0; i < fontIDLen; ++i) {
-    if (fontIDs[i].num == font->getID().num &&
-       fontIDs[i].gen == font->getID().gen)
+    if (fontIDs[i].num == font->getID()->num &&
+       fontIDs[i].gen == font->getID()->gen) {
       return;
+    }
   }
 
   // add entry to fontIDs list
@@ -572,64 +856,113 @@ void PSOutputDev::setupFont(GfxFont *font) {
     fontIDSize += 64;
     fontIDs = (Ref *)grealloc(fontIDs, fontIDSize * sizeof(Ref));
   }
-  fontIDs[fontIDLen++] = font->getID();
+  fontIDs[fontIDLen++] = *font->getID();
 
   xs = ys = 1;
-  do16Bit = gFalse;
+  psNameStr = NULL;
+
+  // check for resident 8-bit font
+  if (font->getName() &&
+      (fontParam = globalParams->getPSFont(font->getName()))) {
+    psName = fontParam->psFontName->getCString();
 
   // check for embedded Type 1 font
-  if (embedType1 && font->getType() == fontType1 &&
-      font->getEmbeddedFontID(&fontFileID)) {
-    psName = font->getEmbeddedFontName();
+  } else if (globalParams->getPSEmbedType1() &&
+            font->getType() == fontType1 &&
+            font->getEmbeddedFontID(&fontFileID)) {
+    psNameStr = filterPSName(font->getEmbeddedFontName());
+    psName = psNameStr->getCString();
     setupEmbeddedType1Font(&fontFileID, psName);
 
+  // check for embedded Type 1C font
+  } else if (globalParams->getPSEmbedType1() &&
+            font->getType() == fontType1C &&
+            font->getEmbeddedFontID(&fontFileID)) {
+    psNameStr = filterPSName(font->getEmbeddedFontName());
+    psName = psNameStr->getCString();
+    setupEmbeddedType1CFont(font, &fontFileID, psName);
+
   // check for external Type 1 font file
-  } else if (embedType1 && font->getType() == fontType1 &&
+  } else if (globalParams->getPSEmbedType1() &&
+            font->getType() == fontType1 &&
             font->getExtFontFile()) {
     // this assumes that the PS font name matches the PDF font name
     psName = font->getName()->getCString();
-    setupEmbeddedType1Font(font->getExtFontFile(), psName);
+    setupExternalType1Font(font->getExtFontFile(), psName);
 
-  // check for embedded Type 1C font
-  } else if (embedType1 && font->getType() == fontType1C &&
+  // check for embedded TrueType font
+  } else if (globalParams->getPSEmbedTrueType() &&
+            font->getType() == fontTrueType &&
             font->getEmbeddedFontID(&fontFileID)) {
-    psName = font->getEmbeddedFontName();
-    setupEmbeddedType1CFont(font, &fontFileID, psName);
+    psNameStr = filterPSName(font->getEmbeddedFontName());
+    psName = psNameStr->getCString();
+    setupEmbeddedTrueTypeFont(font, &fontFileID, psName);
 
-  } else if (font->is16Bit() && font->getCharSet16() == font16AdobeJapan12) {
-    psName = "Ryumin-Light-RKSJ";
-    do16Bit = gTrue;
+  // check for external TrueType font file
+  } else if (globalParams->getPSEmbedTrueType() &&
+            font->getType() == fontTrueType &&
+            font->getExtFontFile()) {
+    psNameStr = filterPSName(font->getName());
+    psName = psNameStr->getCString();
+    setupExternalTrueTypeFont(font, psName);
 
-  // do font substitution
-  } else {
-    if (!type3Warning && font->getType() == fontType3) {
-      error(-1, "This document uses Type 3 fonts - some text may not be correctly printed");
-      type3Warning = gTrue;
-    }
+  // check for embedded CID PostScript font
+  } else if (globalParams->getPSEmbedCIDPostScript() &&
+            font->getType() == fontCIDType0C &&
+            font->getEmbeddedFontID(&fontFileID)) {
+    psNameStr = filterPSName(font->getEmbeddedFontName());
+    psName = psNameStr->getCString();
+    setupEmbeddedCIDType0Font(font, &fontFileID, psName);
+
+  // check for embedded CID TrueType font
+  } else if (globalParams->getPSEmbedCIDTrueType() &&
+            font->getType() == fontCIDType2 &&
+            font->getEmbeddedFontID(&fontFileID)) {
+    psNameStr = filterPSName(font->getEmbeddedFontName());
+    psName = psNameStr->getCString();
+    setupEmbeddedCIDTrueTypeFont(font, &fontFileID, psName);
+
+  } else if (font->getType() == fontType3) {
+    sprintf(type3Name, "T3_%d_%d",
+           font->getID()->num, font->getID()->gen);
+    psName = type3Name;
+    setupType3Font(font, psName, parentResDict);
+
+  // do 8-bit font substitution
+  } else if (!font->isCIDFont()) {
     name = font->getName();
     psName = NULL;
     if (name) {
-      for (i = 0; psFonts[i].name; ++i) {
-       if (name->cmp(psFonts[i].name) == 0) {
-         psName = psFonts[i].psName;
+      for (i = 0; psFonts[i]; ++i) {
+       if (name->cmp(psFonts[i]) == 0) {
+         psName = psFonts[i];
          break;
        }
       }
     }
     if (!psName) {
-      if (font->isFixedWidth())
+      if (font->isFixedWidth()) {
        i = 8;
-      else if (font->isSerif())
+      } else if (font->isSerif()) {
        i = 4;
-      else
+      } else {
        i = 0;
-      if (font->isBold())
+      }
+      if (font->isBold()) {
        i += 2;
-      if (font->isItalic())
+      }
+      if (font->isItalic()) {
        i += 1;
+      }
       psName = psSubstFonts[i].psName;
-      if ((code = font->getCharCode("m")) >= 0) {
-       w1 = font->getWidth(code);
+      for (code = 0; code < 256; ++code) {
+       if ((charName = ((Gfx8BitFont *)font)->getCharName(code)) &&
+           charName[0] == 'm' && charName[1] == '\0') {
+         break;
+       }
+      }
+      if (code < 256) {
+       w1 = ((Gfx8BitFont *)font)->getWidth(code);
       } else {
        w1 = 0;
       }
@@ -652,25 +985,71 @@ void PSOutputDev::setupFont(GfxFont *font) {
        ys = 1;
       }
     }
+
+  // do 16-bit font substitution
+  } else if ((fontParam = globalParams->
+               getPSFont16(font->getName(),
+                           ((GfxCIDFont *)font)->getCollection(),
+                           font->getWMode()))) {
+    psName = fontParam->psFontName->getCString();
+    if (font16EncLen >= font16EncSize) {
+      font16EncSize += 16;
+      font16Enc = (PSFont16Enc *)grealloc(font16Enc,
+                                         font16EncSize * sizeof(PSFont16Enc));
+    }
+    font16Enc[font16EncLen].fontID = *font->getID();
+    font16Enc[font16EncLen].enc = fontParam->encoding->copy();
+    if ((uMap = globalParams->getUnicodeMap(font16Enc[font16EncLen].enc))) {
+      uMap->decRefCnt();
+      ++font16EncLen;
+    } else {
+      error(-1, "Couldn't find Unicode map for 16-bit font encoding '%s'",
+           font16Enc[font16EncLen].enc->getCString());
+    }
+
+  // give up - can't do anything with this font
+  } else {
+    error(-1, "Couldn't find a font to substitute for '%s' ('%s' character collection)",
+         font->getName() ? font->getName()->getCString() : "(unnamed)",
+         ((GfxCIDFont *)font)->getCollection()
+           ? ((GfxCIDFont *)font)->getCollection()->getCString()
+           : "(unknown)");
+    return;
   }
 
   // generate PostScript code to set up the font
-  if (do16Bit) {
-    writePS("/F%d_%d /%s pdfMakeFont16\n",
-           font->getID().num, font->getID().gen, psName);
+  if (font->isCIDFont()) {
+    if (level == psLevel3 || level == psLevel3Sep) {
+      writePS("/F%d_%d /%s %d pdfMakeFont16L3\n",
+             font->getID()->num, font->getID()->gen, psName,
+             font->getWMode());
+    } else {
+      writePS("/F%d_%d /%s %d pdfMakeFont16\n",
+             font->getID()->num, font->getID()->gen, psName,
+             font->getWMode());
+    }
   } else {
     writePS("/F%d_%d /%s %g %g\n",
-           font->getID().num, font->getID().gen, psName, xs, ys);
+           font->getID()->num, font->getID()->gen, psName, xs, ys);
     for (i = 0; i < 256; i += 8) {
       writePS((i == 0) ? "[ " : "  ");
       for (j = 0; j < 8; ++j) {
-       charName = font->getCharName(i+j);
+       charName = ((Gfx8BitFont *)font)->getCharName(i+j);
+       // this is a kludge for broken PDF files that encode char 32
+       // as .notdef
+       if (i+j == 32 && charName && !strcmp(charName, ".notdef")) {
+         charName = "space";
+       }
        writePS("/%s", charName ? charName : ".notdef");
       }
       writePS((i == 256-8) ? "]\n" : "\n");
     }
     writePS("pdfMakeFont\n");
   }
+
+  if (psNameStr) {
+    delete psNameStr;
+  }
 }
 
 void PSOutputDev::setupEmbeddedType1Font(Ref *id, char *psName) {
@@ -699,7 +1078,7 @@ void PSOutputDev::setupEmbeddedType1Font(Ref *id, char *psName) {
 
   // get the font stream and info
   refObj.initRef(id->num, id->gen);
-  refObj.fetch(&strObj);
+  refObj.fetch(xref, &strObj);
   refObj.free();
   if (!strObj.isStream()) {
     error(-1, "Embedded font file object is not a stream");
@@ -723,17 +1102,16 @@ void PSOutputDev::setupEmbeddedType1Font(Ref *id, char *psName) {
   obj2.free();
 
   // beginning comment
-  if (psOutEPS) {
-    writePS("%%%%BeginResource: font %s\n", psName);
-    embFontList->append("%%+ font ");
-    embFontList->append(psName);
-    embFontList->append("\n");
-  }
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
 
   // copy ASCII portion of font
   strObj.streamReset();
-  for (i = 0; i < length1 && (c = strObj.streamGetChar()) != EOF; ++i)
-    fputc(c, f);
+  for (i = 0; i < length1 && (c = strObj.streamGetChar()) != EOF; ++i) {
+    writePSChar(c);
+  }
 
   // figure out if encrypted portion is binary or ASCII
   binMode = gFalse;
@@ -752,41 +1130,45 @@ void PSOutputDev::setupEmbeddedType1Font(Ref *id, char *psName) {
   // convert binary data to ASCII
   if (binMode) {
     for (i = 0; i < 4; ++i) {
-      fputc(hexChar[(start[i] >> 4) & 0x0f], f);
-      fputc(hexChar[start[i] & 0x0f], f);
+      writePSChar(hexChar[(start[i] >> 4) & 0x0f]);
+      writePSChar(hexChar[start[i] & 0x0f]);
     }
     while (i < length2) {
-      if ((c = strObj.streamGetChar()) == EOF)
+      if ((c = strObj.streamGetChar()) == EOF) {
        break;
-      fputc(hexChar[(c >> 4) & 0x0f], f);
-      fputc(hexChar[c & 0x0f], f);
-      if (++i % 32 == 0)
-       fputc('\n', f);
+      }
+      writePSChar(hexChar[(c >> 4) & 0x0f]);
+      writePSChar(hexChar[c & 0x0f]);
+      if (++i % 32 == 0) {
+       writePSChar('\n');
+      }
+    }
+    if (i % 32 > 0) {
+      writePSChar('\n');
     }
-    if (i % 32 > 0)
-      fputc('\n', f);
 
   // already in ASCII format -- just copy it
   } else {
-    for (i = 0; i < 4; ++i)
-      fputc(start[i], f);
+    for (i = 0; i < 4; ++i) {
+      writePSChar(start[i]);
+    }
     for (i = 4; i < length2; ++i) {
-      if ((c = strObj.streamGetChar()) == EOF)
+      if ((c = strObj.streamGetChar()) == EOF) {
        break;
-      fputc(c, f);
+      }
+      writePSChar(c);
     }
   }
 
   // write padding and "cleartomark"
-  for (i = 0; i < 8; ++i)
+  for (i = 0; i < 8; ++i) {
     writePS("00000000000000000000000000000000"
            "00000000000000000000000000000000\n");
+  }
   writePS("cleartomark\n");
 
   // ending comment
-  if (psOutEPS) {
-    writePS("%%%%EndResource\n");
-  }
+  writePS("%%%%EndResource\n");
 
  err1:
   strObj.streamClose();
@@ -795,7 +1177,7 @@ void PSOutputDev::setupEmbeddedType1Font(Ref *id, char *psName) {
 
 //~ This doesn't handle .pfb files or binary eexec data (which only
 //~ happens in pfb files?).
-void PSOutputDev::setupEmbeddedType1Font(GString *fileName, char *psName) {
+void PSOutputDev::setupExternalType1Font(GString *fileName, char *psName) {
   FILE *fontFile;
   int c;
   int i;
@@ -816,33 +1198,30 @@ void PSOutputDev::setupEmbeddedType1Font(GString *fileName, char *psName) {
   fontFileNames[fontFileNameLen++] = fileName->copy();
 
   // beginning comment
-  if (psOutEPS) {
-    writePS("%%%%BeginResource: font %s\n", psName);
-    embFontList->append("%%+ font ");
-    embFontList->append(psName);
-    embFontList->append("\n");
-  }
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
 
   // copy the font file
   if (!(fontFile = fopen(fileName->getCString(), "rb"))) {
     error(-1, "Couldn't open external font file");
     return;
   }
-  while ((c = fgetc(fontFile)) != EOF)
-    fputc(c, f);
+  while ((c = fgetc(fontFile)) != EOF) {
+    writePSChar(c);
+  }
   fclose(fontFile);
 
   // ending comment
-  if (psOutEPS) {
-    writePS("%%%%EndResource\n");
-  }
+  writePS("%%%%EndResource\n");
 }
 
 void PSOutputDev::setupEmbeddedType1CFont(GfxFont *font, Ref *id,
                                          char *psName) {
   char *fontBuf;
   int fontLen;
-  Type1CFontConverter *cvt;
+  Type1CFontFile *t1cFile;
   int i;
 
   // check if font is already embedded
@@ -860,31 +1239,284 @@ void PSOutputDev::setupEmbeddedType1CFont(GfxFont *font, Ref *id,
   fontFileIDs[fontFileIDLen++] = *id;
 
   // beginning comment
-  if (psOutEPS) {
-    writePS("%%%%BeginResource: font %s\n", psName);
-    embFontList->append("%%+ font ");
-    embFontList->append(psName);
-    embFontList->append("\n");
-  }
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
 
   // convert it to a Type 1 font
-  fontBuf = font->readEmbFontFile(&fontLen);
-  cvt = new Type1CFontConverter(fontBuf, fontLen, f);
-  cvt->convert();
-  delete cvt;
+  fontBuf = font->readEmbFontFile(xref, &fontLen);
+  t1cFile = new Type1CFontFile(fontBuf, fontLen);
+  t1cFile->convertToType1(f);
+  delete t1cFile;
+  gfree(fontBuf);
+
+  // ending comment
+  writePS("%%%%EndResource\n");
+}
+
+void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id,
+                                           char *psName) {
+  char *fontBuf;
+  int fontLen;
+  TrueTypeFontFile *ttFile;
+  CharCodeToUnicode *ctu;
+  int i;
+
+  // check if font is already embedded
+  for (i = 0; i < fontFileIDLen; ++i) {
+    if (fontFileIDs[i].num == id->num &&
+       fontFileIDs[i].gen == id->gen)
+      return;
+  }
+
+  // add entry to fontFileIDs list
+  if (fontFileIDLen >= fontFileIDSize) {
+    fontFileIDSize += 64;
+    fontFileIDs = (Ref *)grealloc(fontFileIDs, fontFileIDSize * sizeof(Ref));
+  }
+  fontFileIDs[fontFileIDLen++] = *id;
+
+  // beginning comment
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
+
+  // convert it to a Type 42 font
+  fontBuf = font->readEmbFontFile(xref, &fontLen);
+  ttFile = new TrueTypeFontFile(fontBuf, fontLen);
+  ctu = ((Gfx8BitFont *)font)->getToUnicode();
+  ttFile->convertToType42(psName, ((Gfx8BitFont *)font)->getEncoding(),
+                         ctu, ((Gfx8BitFont *)font)->getHasEncoding(), f);
+  ctu->decRefCnt();
+  delete ttFile;
   gfree(fontBuf);
 
   // ending comment
-  if (psOutEPS) {
-    writePS("%%%%EndResource\n");
+  writePS("%%%%EndResource\n");
+}
+
+void PSOutputDev::setupExternalTrueTypeFont(GfxFont *font, char *psName) {
+  GString *fileName;
+  char *fontBuf;
+  int fontLen;
+  TrueTypeFontFile *ttFile;
+  CharCodeToUnicode *ctu;
+  int i;
+
+  // check if font is already embedded
+  fileName = font->getExtFontFile();
+  for (i = 0; i < fontFileNameLen; ++i) {
+    if (!fontFileNames[i]->cmp(fileName)) {
+      return;
+    }
+  }
+
+  // add entry to fontFileNames list
+  if (fontFileNameLen >= fontFileNameSize) {
+    fontFileNameSize += 64;
+    fontFileNames = (GString **)grealloc(fontFileNames,
+                                        fontFileNameSize * sizeof(GString *));
   }
+  fontFileNames[fontFileNameLen++] = fileName->copy();
+
+  // beginning comment
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
+
+  // convert it to a Type 42 font
+  fontBuf = font->readExtFontFile(&fontLen);
+  ttFile = new TrueTypeFontFile(fontBuf, fontLen);
+  ctu = ((Gfx8BitFont *)font)->getToUnicode();
+  ttFile->convertToType42(psName, ((Gfx8BitFont *)font)->getEncoding(),
+                         ctu, ((Gfx8BitFont *)font)->getHasEncoding(), f);
+  ctu->decRefCnt();
+  delete ttFile;
+  gfree(fontBuf);
+
+  // ending comment
+  writePS("%%%%EndResource\n");
+}
+
+void PSOutputDev::setupEmbeddedCIDType0Font(GfxFont *font, Ref *id,
+                                           char *psName) {
+  char *fontBuf;
+  int fontLen;
+  Type1CFontFile *t1cFile;
+  int i;
+
+  // check if font is already embedded
+  for (i = 0; i < fontFileIDLen; ++i) {
+    if (fontFileIDs[i].num == id->num &&
+       fontFileIDs[i].gen == id->gen)
+      return;
+  }
+
+  // add entry to fontFileIDs list
+  if (fontFileIDLen >= fontFileIDSize) {
+    fontFileIDSize += 64;
+    fontFileIDs = (Ref *)grealloc(fontFileIDs, fontFileIDSize * sizeof(Ref));
+  }
+  fontFileIDs[fontFileIDLen++] = *id;
+
+  // beginning comment
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
+
+  // convert it to a Type 0 font
+  fontBuf = font->readEmbFontFile(xref, &fontLen);
+  t1cFile = new Type1CFontFile(fontBuf, fontLen);
+  if (globalParams->getPSLevel() >= psLevel3) {
+    // Level 3: use a CID font
+    t1cFile->convertToCIDType0(psName, f);
+  } else {
+    // otherwise: use a non-CID composite font
+    t1cFile->convertToType0(psName, f);
+  }
+  delete t1cFile;
+  gfree(fontBuf);
+
+  // ending comment
+  writePS("%%%%EndResource\n");
+}
+
+void PSOutputDev::setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id,
+                                              char *psName) {
+  char *fontBuf;
+  int fontLen;
+  TrueTypeFontFile *ttFile;
+  int i;
+
+  // check if font is already embedded
+  for (i = 0; i < fontFileIDLen; ++i) {
+    if (fontFileIDs[i].num == id->num &&
+       fontFileIDs[i].gen == id->gen)
+      return;
+  }
+
+  // add entry to fontFileIDs list
+  if (fontFileIDLen >= fontFileIDSize) {
+    fontFileIDSize += 64;
+    fontFileIDs = (Ref *)grealloc(fontFileIDs, fontFileIDSize * sizeof(Ref));
+  }
+  fontFileIDs[fontFileIDLen++] = *id;
+
+  // beginning comment
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
+
+  // convert it to a Type 0 font
+  fontBuf = font->readEmbFontFile(xref, &fontLen);
+  ttFile = new TrueTypeFontFile(fontBuf, fontLen);
+  if (globalParams->getPSLevel() >= psLevel3) {
+    ttFile->convertToCIDType2(psName,
+                             ((GfxCIDFont *)font)->getCIDToGID(),
+                             ((GfxCIDFont *)font)->getCIDToGIDLen(), f);
+  } else {
+    // otherwise: use a non-CID composite font
+    ttFile->convertToType0(psName, ((GfxCIDFont *)font)->getCIDToGID(),
+                          ((GfxCIDFont *)font)->getCIDToGIDLen(), f);
+  }
+  delete ttFile;
+  gfree(fontBuf);
+
+  // ending comment
+  writePS("%%%%EndResource\n");
+}
+
+void PSOutputDev::setupType3Font(GfxFont *font, char *psName,
+                                Dict *parentResDict) {
+  Dict *resDict;
+  Dict *charProcs;
+  Object charProc;
+  Gfx *gfx;
+  PDFRectangle box;
+  double *m;
+  int i;
+
+  // set up resources used by font
+  if ((resDict = ((Gfx8BitFont *)font)->getResources())) {
+    setupResources(resDict);
+  } else {
+    resDict = parentResDict;
+  }
+
+  // beginning comment
+  writePS("%%%%BeginResource: font %s\n", psName);
+  embFontList->append("%%+ font ");
+  embFontList->append(psName);
+  embFontList->append("\n");
+
+  // font dictionary
+  writePS("7 dict begin\n");
+  writePS("/FontType 3 def\n");
+  m = font->getFontMatrix();
+  writePS("/FontMatrix [%g %g %g %g %g %g] def\n",
+         m[0], m[1], m[2], m[3], m[4], m[5]);
+  m = font->getFontBBox();
+  writePS("/FontBBox [%g %g %g %g] def\n",
+         m[0], m[1], m[2], m[3]);
+  writePS("/Encoding 256 array def\n");
+  writePS("  0 1 255 { Encoding exch /.notdef put } for\n");
+  writePS("/BuildGlyph {\n");
+  writePS("  exch /CharProcs get exch\n");
+  writePS("  2 copy known not { pop /.notdef } if\n");
+  writePS("  get exec\n");
+  writePS("} bind def\n");
+  writePS("/BuildChar {\n");
+  writePS("  1 index /Encoding get exch get\n");
+  writePS("  1 index /BuildGlyph get exec\n");
+  writePS("} bind def\n");
+  if ((charProcs = ((Gfx8BitFont *)font)->getCharProcs())) {
+    writePS("/CharProcs %d dict def\n", charProcs->getLength());
+    writePS("CharProcs begin\n");
+    box.x1 = m[0];
+    box.y1 = m[1];
+    box.x2 = m[2];
+    box.y2 = m[3];
+    gfx = new Gfx(xref, this, resDict, &box, gFalse, NULL);
+    inType3Char = gTrue;
+    for (i = 0; i < charProcs->getLength(); ++i) {
+      writePS("/%s {\n", charProcs->getKey(i));
+      gfx->display(charProcs->getVal(i, &charProc));
+      charProc.free();
+      if (t3String) {
+       if (t3Cacheable) {
+         fprintf(f, "%g %g %g %g %g %g setcachedevice\n",
+                 t3WX, t3WY, t3LLX, t3LLY, t3URX, t3URY);
+       } else {
+         fprintf(f, "%g %g setcharwidth\n", t3WX, t3WY);
+       }
+       fputs(t3String->getCString(), f);
+       delete t3String;
+       t3String = NULL;
+      }
+      fputs("Q\n", f);
+      writePS("} def\n");
+    }
+    inType3Char = gFalse;
+    delete gfx;
+    writePS("end\n");
+  }
+  writePS("currentdict end\n");
+  writePS("/%s exch definefont pop\n", psName);
+
+  // ending comment
+  writePS("%%%%EndResource\n");
 }
 
 void PSOutputDev::setupImages(Dict *resDict) {
   Object xObjDict, xObj, xObjRef, subtypeObj;
   int i;
 
-  if (!doForm) {
+  if (mode != psModeForm) {
     return;
   }
 
@@ -916,7 +1548,11 @@ void PSOutputDev::setupImage(Ref id, Stream *str) {
   int size, line, col, i;
 
   // construct an encoder stream
-  str = new ASCII85Encoder(str);
+  if (globalParams->getPSASCIIHex()) {
+    str = new ASCIIHexEncoder(str);
+  } else {
+    str = new ASCII85Encoder(str);
+  }
 
   // compute image data size
   str->reset();
@@ -962,10 +1598,10 @@ void PSOutputDev::setupImage(Ref id, Stream *str) {
       break;
     }
     if (c == 'z') {
-      fputc(c, f);
+      writePSChar(c);
       ++col;
     } else {
-      fputc(c, f);
+      writePSChar(c);
       ++col;
       for (i = 1; i <= 4; ++i) {
        do {
@@ -974,7 +1610,7 @@ void PSOutputDev::setupImage(Ref id, Stream *str) {
        if (c == '~' || c == EOF) {
          break;
        }
-       fputc(c, f);
+       writePSChar(c);
        ++col;
       }
     }
@@ -998,24 +1634,9 @@ void PSOutputDev::setupImage(Ref id, Stream *str) {
 void PSOutputDev::startPage(int pageNum, GfxState *state) {
   int x1, y1, x2, y2, width, height, t;
 
-  if (doForm) {
-
-    writePS("/PaintProc {\n");
-    writePS("begin xpdf begin\n");
-    writePS("pdfStartPage\n");
-    tx = ty = 0;
-    xScale = yScale = 1;
-    landscape = gFalse;
-
-  } else if (psOutEPS) {
-
-    writePS("pdfStartPage\n");
-    tx = ty = 0;
-    xScale = yScale = 1;
-    landscape = gFalse;
-
-  } else {
+  switch (mode) {
 
+  case psModePS:
     writePS("%%%%Page: %d %d\n", pageNum, seqPage);
     writePS("%%%%BeginPageSetup\n");
 
@@ -1028,7 +1649,8 @@ void PSOutputDev::startPage(int pageNum, GfxState *state) {
     height = y2 - y1;
     if (width > height && width > paperWidth) {
       landscape = gTrue;
-      writePS("%%%%PageOrientation: Landscape\n");
+      writePS("%%%%PageOrientation: %s\n",
+             state->getCTM()[0] ? "Landscape" : "Portrait");
       writePS("pdfStartPage\n");
       writePS("90 rotate\n");
       tx = -x1;
@@ -1038,7 +1660,8 @@ void PSOutputDev::startPage(int pageNum, GfxState *state) {
       height = t;
     } else {
       landscape = gFalse;
-      writePS("%%%%PageOrientation: Portrait\n");
+      writePS("%%%%PageOrientation: %s\n",
+             state->getCTM()[0] ? "Portrait" : "Landscape");
       writePS("pdfStartPage\n");
       tx = -x1;
       ty = -y1;
@@ -1057,6 +1680,8 @@ void PSOutputDev::startPage(int pageNum, GfxState *state) {
       yScale = (double)paperHeight / (double)height;
       if (yScale < xScale) {
        xScale = yScale;
+      } else {
+       yScale = xScale;
       }
       writePS("%0.4f %0.4f scale\n", xScale, xScale);
     } else {
@@ -1065,11 +1690,28 @@ void PSOutputDev::startPage(int pageNum, GfxState *state) {
 
     writePS("%%%%EndPageSetup\n");
     ++seqPage;
+    break;
+
+  case psModeEPS:
+    writePS("pdfStartPage\n");
+    tx = ty = 0;
+    xScale = yScale = 1;
+    landscape = gFalse;
+    break;
+
+  case psModeForm:
+    writePS("/PaintProc {\n");
+    writePS("begin xpdf begin\n");
+    writePS("pdfStartPage\n");
+    tx = ty = 0;
+    xScale = yScale = 1;
+    landscape = gFalse;
+    break;
   }
 }
 
 void PSOutputDev::endPage() {
-  if (doForm) {
+  if (mode == psModeForm) {
     writePS("pdfEndPage\n");
     writePS("end end\n");
     writePS("} def\n");
@@ -1127,43 +1769,144 @@ void PSOutputDev::updateLineWidth(GfxState *state) {
 }
 
 void PSOutputDev::updateFillColor(GfxState *state) {
+  GfxColor color;
+  double gray;
   GfxRGB rgb;
   GfxCMYK cmyk;
+  GfxSeparationColorSpace *sepCS;
 
-  if (psOutLevel1Sep) {
+  switch (level) {
+  case psLevel1:
+    state->getFillGray(&gray);
+    writePS("%g g\n", gray);
+    break;
+  case psLevel1Sep:
     state->getFillCMYK(&cmyk);
     writePS("%g %g %g %g k\n", cmyk.c, cmyk.m, cmyk.y, cmyk.k);
-  } else {
-    state->getFillRGB(&rgb);
-    if (rgb.r == rgb.g && rgb.g == rgb.b) {
-      writePS("%g g\n", rgb.r);
+    break;
+  case psLevel2:
+  case psLevel3:
+    if (state->getFillColorSpace()->getMode() == csDeviceCMYK) {
+      state->getFillCMYK(&cmyk);
+      writePS("%g %g %g %g k\n", cmyk.c, cmyk.m, cmyk.y, cmyk.k);
+    } else {
+      state->getFillRGB(&rgb);
+      if (rgb.r == rgb.g && rgb.g == rgb.b) {
+       writePS("%g g\n", rgb.r);
+      } else {
+       writePS("%g %g %g rg\n", rgb.r, rgb.g, rgb.b);
+      }
+    }
+    break;
+  case psLevel2Sep:
+  case psLevel3Sep:
+    if (state->getFillColorSpace()->getMode() == csSeparation) {
+      sepCS = (GfxSeparationColorSpace *)state->getFillColorSpace();
+      color.c[0] = 1;
+      sepCS->getCMYK(&color, &cmyk);
+      writePS("%g %g %g %g %g (%s) ck\n",
+             state->getFillColor()->c[0],
+             cmyk.c, cmyk.m, cmyk.y, cmyk.k,
+             sepCS->getName()->getCString());
+      addCustomColor(sepCS);
     } else {
-      writePS("%g %g %g rg\n", rgb.r, rgb.g, rgb.b);
+      state->getFillCMYK(&cmyk);
+      writePS("%g %g %g %g k\n", cmyk.c, cmyk.m, cmyk.y, cmyk.k);
+      addProcessColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k);
     }
+    break;
   }
+  t3Cacheable = gFalse;
 }
 
 void PSOutputDev::updateStrokeColor(GfxState *state) {
+  GfxColor color;
+  double gray;
   GfxRGB rgb;
   GfxCMYK cmyk;
+  GfxSeparationColorSpace *sepCS;
 
-  if (psOutLevel1Sep) {
+  switch (level) {
+  case psLevel1:
+    state->getStrokeGray(&gray);
+    writePS("%g G\n", gray);
+    break;
+  case psLevel1Sep:
     state->getStrokeCMYK(&cmyk);
     writePS("%g %g %g %g K\n", cmyk.c, cmyk.m, cmyk.y, cmyk.k);
-  } else {
-    state->getStrokeRGB(&rgb);
-    if (rgb.r == rgb.g && rgb.g == rgb.b) {
-      writePS("%g G\n", rgb.r);
+    break;
+  case psLevel2:
+  case psLevel3:
+    if (state->getStrokeColorSpace()->getMode() == csDeviceCMYK) {
+      state->getStrokeCMYK(&cmyk);
+      writePS("%g %g %g %g K\n", cmyk.c, cmyk.m, cmyk.y, cmyk.k);
     } else {
-      writePS("%g %g %g RG\n", rgb.r, rgb.g, rgb.b);
+      state->getStrokeRGB(&rgb);
+      if (rgb.r == rgb.g && rgb.g == rgb.b) {
+       writePS("%g G\n", rgb.r);
+      } else {
+       writePS("%g %g %g RG\n", rgb.r, rgb.g, rgb.b);
+      }
+    }
+    break;
+  case psLevel2Sep:
+  case psLevel3Sep:
+    if (state->getStrokeColorSpace()->getMode() == csSeparation) {
+      sepCS = (GfxSeparationColorSpace *)state->getStrokeColorSpace();
+      color.c[0] = 1;
+      sepCS->getCMYK(&color, &cmyk);
+      writePS("%g %g %g %g %g (%s) CK\n",
+             state->getStrokeColor()->c[0],
+             cmyk.c, cmyk.m, cmyk.y, cmyk.k,
+             sepCS->getName()->getCString());
+      addCustomColor(sepCS);
+    } else {
+      state->getStrokeCMYK(&cmyk);
+      writePS("%g %g %g %g K\n", cmyk.c, cmyk.m, cmyk.y, cmyk.k);
+      addProcessColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k);
+    }
+    break;
+  }
+  t3Cacheable = gFalse;
+}
+
+void PSOutputDev::addProcessColor(double c, double m, double y, double k) {
+  if (c > 0) {
+    processColors |= psProcessCyan;
+  }
+  if (m > 0) {
+    processColors |= psProcessMagenta;
+  }
+  if (y > 0) {
+    processColors |= psProcessYellow;
+  }
+  if (k > 0) {
+    processColors |= psProcessBlack;
+  }
+}
+
+void PSOutputDev::addCustomColor(GfxSeparationColorSpace *sepCS) {
+  PSOutCustomColor *cc;
+  GfxColor color;
+  GfxCMYK cmyk;
+
+  for (cc = customColors; cc; cc = cc->next) {
+    if (!cc->name->cmp(sepCS->getName())) {
+      return;
     }
   }
+  color.c[0] = 1;
+  sepCS->getCMYK(&color, &cmyk);
+  cc = new PSOutCustomColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k,
+                           sepCS->getName()->copy());
+  cc->next = customColors;
+  customColors = cc;
 }
 
 void PSOutputDev::updateFont(GfxState *state) {
   if (state->getFont()) {
     writePS("/F%d_%d %g Tf\n",
-           state->getFont()->getID().num, state->getFont()->getID().gen,
+           state->getFont()->getID()->num, state->getFont()->getID()->gen,
            state->getFontSize());
   }
 }
@@ -1181,7 +1924,14 @@ void PSOutputDev::updateCharSpace(GfxState *state) {
 }
 
 void PSOutputDev::updateRender(GfxState *state) {
-  writePS("%d Tr\n", state->getRender());
+  int rm;
+
+  rm = state->getRender();
+  writePS("%d Tr\n", rm);
+  rm &= 3;
+  if (rm != 0 && rm != 3) {
+    t3Cacheable = gFalse;
+  }
 }
 
 void PSOutputDev::updateRise(GfxState *state) {
@@ -1201,12 +1951,22 @@ void PSOutputDev::updateTextPos(GfxState *state) {
 }
 
 void PSOutputDev::updateTextShift(GfxState *state, double shift) {
-  writePS("%g TJm\n", shift);
+  if (state->getFont()->getWMode()) {
+    writePS("%g TJmV\n", shift);
+  } else {
+    writePS("%g TJm\n", shift);
+  }
 }
 
 void PSOutputDev::stroke(GfxState *state) {
   doPath(state->getPath());
-  writePS("S\n");
+  if (t3String) {
+    // if we're construct a cacheable Type 3 glyph, we need to do
+    // everything in the fill color
+    writePS("Sf\n");
+  } else {
+    writePS("S\n");
+  }
 }
 
 void PSOutputDev::fill(GfxState *state) {
@@ -1286,52 +2046,104 @@ void PSOutputDev::doPath(GfxPath *path) {
 }
 
 void PSOutputDev::drawString(GfxState *state, GString *s) {
+  GfxFont *font;
+  int wMode;
+  GString *s2;
+  double dx, dy, dx2, dy2, originX, originY;
+  char *p;
+  UnicodeMap *uMap;
+  CharCode code;
+  Unicode u[8];
+  char buf[8];
+  int len, nChars, uLen, n, m, i, j;
+
   // check for invisible text -- this is used by Acrobat Capture
-  if ((state->getRender() & 3) == 3)
+  if ((state->getRender() & 3) == 3) {
     return;
+  }
 
-  writePSString(s);
-  writePS(" %g Tj\n", state->getFont()->getWidth(s));
-}
-
-void PSOutputDev::drawString16(GfxState *state, GString *s) {
-  int c1, c2;
-  double w;
-  int i;
+  // ignore empty strings
+  if (s->getLength() == 0) {
+    return;
+  }
 
-  // check for invisible text -- this is used by Acrobat Capture
-  if ((state->getRender() & 3) == 3)
+  // get the font
+  if (!(font = state->getFont())) {
     return;
+  }
+  wMode = font->getWMode();
 
-  switch (state->getFont()->getCharSet16()) {
+  // check for a subtitute 16-bit font
+  uMap = NULL;
+  if (font->isCIDFont()) {
+    for (i = 0; i < font16EncLen; ++i) {
+      if (font->getID()->num == font16Enc[i].fontID.num &&
+         font->getID()->gen == font16Enc[i].fontID.gen) {
+       uMap = globalParams->getUnicodeMap(font16Enc[i].enc);
+       break;
+      }
+    }
+  }
 
-  case font16AdobeJapan12:
-#if JAPANESE_SUPPORT
-    writePS("<");
-    w = 0;
-    for (i = 0; i < s->getLength(); i += 2) {
-      c1 = ((s->getChar(i) & 0xff) << 8) + (s->getChar(i+1) & 0xff);
-      if (c1 <= 8285) {
-       c2 = japan12ToRKSJ[c1];
+  // compute width of chars in string, ignoring char spacing and word
+  // spacing -- the Tj operator will adjust for the metrics of the
+  // font that's actually used
+  dx = dy = 0;
+  nChars = 0;
+  p = s->getCString();
+  len = s->getLength();
+  if (font->isCIDFont()) {
+    s2 = new GString();
+  } else {
+    s2 = s;
+  }
+  while (len > 0) {
+    n = font->getNextChar(p, len, &code,
+                         u, (int)(sizeof(u) / sizeof(Unicode)), &uLen,
+                         &dx2, &dy2, &originX, &originY);
+    if (font->isCIDFont()) {
+      if (uMap) {
+       for (i = 0; i < uLen; ++i) {
+         m = uMap->mapUnicode(u[i], buf, (int)sizeof(buf));
+         for (j = 0; j < m; ++j) {
+           s2->append(buf[j]);
+         }
+       }
+       //~ this really needs to get the number of chars in the target
+       //~ encoding - which may be more than the number of Unicode
+       //~ chars
+       nChars += uLen;
       } else {
-       c2 = 0x20;
+       s2->append((char)((code >> 8) & 0xff));
+       s2->append((char)(code & 0xff));
+       ++nChars;
       }
-      if (c2 <= 0xff) {
-       writePS("%02x", c2);
+    }
+    dx += dx2;
+    dy += dy2;
+    p += n;
+    len -= n;
+  }
+  dx *= state->getFontSize() * state->getHorizScaling();
+  dy *= state->getFontSize();
+  if (uMap) {
+    uMap->decRefCnt();
+  }
+
+  if (s2->getLength() > 0) {
+    writePSString(s2);
+    if (font->isCIDFont()) {
+      if (wMode) {
+       writePS(" %d %g Tj16V\n", nChars, dy);
       } else {
-       writePS("%02x%02x", c2 >> 8, c2 & 0xff);
+       writePS(" %d %g Tj16\n", nChars, dx);
       }
-      w += state->getFont()->getWidth16(c1);
+    } else {
+      writePS(" %g Tj\n", dx);
     }
-    writePS("> %g Tj\n", w);
-#endif
-    break;
-
-  case font16AdobeGB12:
-    break;
-
-  case font16AdobeCNS13:
-    break;
+  }
+  if (font->isCIDFont()) {
+    delete s2;
   }
 }
 
@@ -1341,7 +2153,7 @@ void PSOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
   int len;
 
   len = height * ((width + 7) / 8);
-  if (psOutLevel1 || psOutLevel1Sep) {
+  if (level == psLevel1 || level == psLevel1Sep) {
     doImageL1(NULL, invert, inlineImg, str, width, height, len);
   } else {
     doImageL2(ref, NULL, invert, inlineImg, str, width, height, len);
@@ -1350,19 +2162,27 @@ void PSOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
 
 void PSOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
                            int width, int height, GfxImageColorMap *colorMap,
-                           GBool inlineImg) {
+                           int *maskColors, GBool inlineImg) {
   int len;
 
   len = height * ((width * colorMap->getNumPixelComps() *
                   colorMap->getBits() + 7) / 8);
-  if (psOutLevel1) {
+  switch (level) {
+  case psLevel1:
     doImageL1(colorMap, gFalse, inlineImg, str, width, height, len);
-  } else if (psOutLevel1Sep) {
+    break;
+  case psLevel1Sep:
     //~ handle indexed, separation, ... color spaces
     doImageL1Sep(colorMap, gFalse, inlineImg, str, width, height, len);
-  } else {
+    break;
+  case psLevel2:
+  case psLevel2Sep:
+  case psLevel3:
+  case psLevel3Sep:
     doImageL2(ref, colorMap, gFalse, inlineImg, str, width, height, len);
+    break;
   }
+  t3Cacheable = gFalse;
 }
 
 void PSOutputDev::doImageL1(GfxImageColorMap *colorMap,
@@ -1400,15 +2220,16 @@ void PSOutputDev::doImageL1(GfxImageColorMap *colorMap,
       for (x = 0; x < width; ++x) {
        imgStr->getPixel(pixBuf);
        colorMap->getGray(pixBuf, &gray);
-       fprintf(f, "%02x", (int)(gray * 255 + 0.5));
+       writePS("%02x", (int)(gray * 255 + 0.5));
        if (++i == 32) {
-         fputc('\n', f);
+         writePSChar('\n');
          i = 0;
        }
       }
     }
-    if (i != 0)
-      fputc('\n', f);
+    if (i != 0) {
+      writePSChar('\n');
+    }
     delete imgStr;
 
   // imagemask
@@ -1417,15 +2238,17 @@ void PSOutputDev::doImageL1(GfxImageColorMap *colorMap,
     i = 0;
     for (y = 0; y < height; ++y) {
       for (x = 0; x < width; x += 8) {
-       fprintf(f, "%02x", str->getChar() & 0xff);
+       writePS("%02x", str->getChar() & 0xff);
        if (++i == 32) {
-         fputc('\n', f);
+         writePSChar('\n');
          i = 0;
        }
       }
     }
-    if (i != 0)
-      fputc('\n', f);
+    if (i != 0) {
+      writePSChar('\n');
+    }
+    str->close();
   }
 }
 
@@ -1468,9 +2291,9 @@ void PSOutputDev::doImageL1Sep(GfxImageColorMap *colorMap,
     // write one line of each color component
     for (comp = 0; comp < 4; ++comp) {
       for (x = 0; x < width; ++x) {
-       fprintf(f, "%02x", lineBuf[4*x + comp]);
+       writePS("%02x", lineBuf[4*x + comp]);
        if (++i == 32) {
-         fputc('\n', f);
+         writePSChar('\n');
          i = 0;
        }
       }
@@ -1478,7 +2301,7 @@ void PSOutputDev::doImageL1Sep(GfxImageColorMap *colorMap,
   }
 
   if (i != 0) {
-    fputc('\n', f);
+    writePSChar('\n');
   }
 
   delete imgStr;
@@ -1490,7 +2313,10 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
                            Stream *str, int width, int height, int len) {
   GString *s;
   int n, numComps;
-  GBool useRLE, useA85;
+  GBool useRLE, useASCII, useCompressed;
+  GfxSeparationColorSpace *sepCS;
+  GfxColor color;
+  GfxCMYK cmyk;
   int c;
   int i;
 
@@ -1501,7 +2327,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
   }
 
   // set up to use the array created by setupImages()
-  if (doForm && !inlineImg) {
+  if ((mode == psModeForm || inType3Char) && !inlineImg) {
     writePS("ImData_%d_%d 0\n", ref->getRefNum(), ref->getRefGen());
   }
 
@@ -1538,7 +2364,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
     writePS("  /Decode [%d %d]\n", invert ? 1 : 0, invert ? 0 : 1);
   }
 
-  if (doForm) {
+  if (mode == psModeForm || inType3Char) {
 
     if (inlineImg) {
 
@@ -1547,12 +2373,16 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
 
       // write image data stream, using ASCII85 encode filter
       str = new FixedLengthEncoder(str, len);
-      str = new ASCII85Encoder(str);
+      if (globalParams->getPSASCIIHex()) {
+       str = new ASCIIHexEncoder(str);
+      } else {
+       str = new ASCII85Encoder(str);
+      }
       str->reset();
       while ((c = str->getChar()) != EOF) {
-       fputc(c, f);
+       writePSChar(c);
       }
-      fputc('\n', f);
+      writePSChar('\n');
       delete str;
 
     } else {
@@ -1574,31 +2404,45 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
     s = str->getPSFilter("    ");
     if (inlineImg || !s) {
       useRLE = gTrue;
-      useA85 = gTrue;
+      useASCII = gTrue;
+      useCompressed = gFalse;
     } else {
       useRLE = gFalse;
-      useA85 = str->isBinary();
+      useASCII = str->isBinary();
+      useCompressed = gTrue;
+    }
+    if (useASCII) {
+      writePS("    /ASCII%sDecode filter\n",
+             globalParams->getPSASCIIHex() ? "Hex" : "85");
     }
-    if (useA85)
-      writePS("    /ASCII85Decode filter\n");
-    if (useRLE)
+    if (useRLE) {
       writePS("    /RunLengthDecode filter\n");
-    else
+    }
+    if (useCompressed) {
       writePS("%s", s->getCString());
-    if (s)
+    }
+    if (s) {
       delete s;
+    }
 
     // cut off inline image streams at appropriate length
-    if (inlineImg)
+    if (inlineImg) {
       str = new FixedLengthEncoder(str, len);
-    else if (!useRLE)
+    } else if (useCompressed) {
       str = str->getBaseStream();
+    }
 
-    // add RunLengthEncode and ASCII85 encode filters
-    if (useRLE)
+    // add RunLengthEncode and ASCIIHex/85 encode filters
+    if (useRLE) {
       str = new RunLengthEncoder(str);
-    if (useA85)
-      str = new ASCII85Encoder(str);
+    }
+    if (useASCII) {
+      if (globalParams->getPSASCIIHex()) {
+       str = new ASCIIHexEncoder(str);
+      } else {
+       str = new ASCII85Encoder(str);
+      }
+    }
 
     // end of image dictionary
     writePS(">>\n");
@@ -1610,12 +2454,13 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
        n = 0;
       } else {
        // need to read the stream to count characters -- the length
-       // is data-dependent (because of A85 and RLE filters)
+       // is data-dependent (because of ASCII and RLE filters)
        str->reset();
        n = 0;
        while ((c = str->getChar()) != EOF) {
          ++n;
        }
+       str->close();
       }
       // +6/7 for "pdfIm\n" / "pdfImM\n"
       // +8 for newline + trailer
@@ -1623,16 +2468,27 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
       writePS("%%%%BeginData: %d Hex Bytes\n", n);
     }
 #endif
-    writePS("%s\n", colorMap ? "pdfIm" : "pdfImM");
+    if ((level == psLevel2Sep || level == psLevel3Sep) && colorMap &&
+       colorMap->getColorSpace()->getMode() == csSeparation) {
+      color.c[0] = 1;
+      sepCS = (GfxSeparationColorSpace *)colorMap->getColorSpace();
+      sepCS->getCMYK(&color, &cmyk);
+      writePS("%g %g %g %g (%s) pdfImSep\n",
+             cmyk.c, cmyk.m, cmyk.y, cmyk.k, sepCS->getName()->getCString());
+    } else {
+      writePS("%s\n", colorMap ? "pdfIm" : "pdfImM");
+    }
 
     // copy the stream data
     str->reset();
-    while ((c = str->getChar()) != EOF)
-      fputc(c, f);
+    while ((c = str->getChar()) != EOF) {
+      writePSChar(c);
+    }
+    str->close();
 
     // add newline and trailer to the end
-    fputc('\n', f);
-    fputs("%-EOD-\n", f);
+    writePSChar('\n');
+    writePS("%%-EOD-\n");
 #if OPI_SUPPORT
     if (opi13Nest) {
       writePS("%%%%EndData\n");
@@ -1640,8 +2496,9 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap,
 #endif
 
     // delete encoders
-    if (useRLE || useA85)
+    if (useRLE || useASCII || inlineImg) {
       delete str;
+    }
   }
 }
 
@@ -1652,7 +2509,9 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
   GfxIndexedColorSpace *indexedCS;
   GfxSeparationColorSpace *separationCS;
   Guchar *lookup;
-  double x[1], y[gfxColorMaxComps];
+  double x[gfxColorMaxComps], y[gfxColorMaxComps];
+  GfxColor color;
+  GfxCMYK cmyk;
   int n, numComps;
   int i, j, k;
 
@@ -1660,6 +2519,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
 
   case csDeviceGray:
     writePS("/DeviceGray");
+    processColors |= psProcessBlack;
     break;
 
   case csCalGray:
@@ -1676,10 +2536,12 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
            calGrayCS->getBlackX(), calGrayCS->getBlackY(),
            calGrayCS->getBlackZ());
     writePS(">>]");
+    processColors |= psProcessBlack;
     break;
 
   case csDeviceRGB:
     writePS("/DeviceRGB");
+    processColors |= psProcessCMYK;
     break;
 
   case csCalRGB:
@@ -1701,10 +2563,12 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
            calRGBCS->getBlackX(), calRGBCS->getBlackY(),
            calRGBCS->getBlackZ());
     writePS(">>]");
+    processColors |= psProcessCMYK;
     break;
 
   case csDeviceCMYK:
     writePS("/DeviceCMYK");
+    processColors |= psProcessCMYK;
     break;
 
   case csLab:
@@ -1730,6 +2594,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
     writePS(" /BlackPoint [%g %g %g]\n",
            labCS->getBlackX(), labCS->getBlackY(), labCS->getBlackZ());
     writePS(">>]");
+    processColors |= psProcessCMYK;
     break;
 
   case csICCBased:
@@ -1750,6 +2615,9 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
        for (k = 0; k < numComps; ++k) {
          writePS("%02x", lookup[j * numComps + k]);
        }
+       color.c[0] = j;
+       indexedCS->getCMYK(&color, &cmyk);
+       addProcessColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k);
       }
       writePS("\n");
     }
@@ -1761,7 +2629,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
     //~ separation color space, with the specified alternate color
     //~ space and tint transform
     separationCS = (GfxSeparationColorSpace *)colorSpace;
-    writePS(" [/Indexed ");
+    writePS("[/Indexed ");
     dumpColorSpaceL2(separationCS->getAlt());
     writePS(" 255 <\n");
     numComps = separationCS->getAlt()->getNComps();
@@ -1777,6 +2645,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
       writePS("\n");
     }
     writePS(">]");
+    addCustomColor(separationCS);
     break;
 
   case csDeviceN:
@@ -1795,7 +2664,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace) {
 void PSOutputDev::opiBegin(GfxState *state, Dict *opiDict) {
   Object dict;
 
-  if (psOutOPI) {
+  if (globalParams->getPSOPI()) {
     opiDict->lookup("2.0", &dict);
     if (dict.isDict()) {
       opiBegin20(state, dict.getDict());
@@ -2157,7 +3026,7 @@ void PSOutputDev::opiTransform(GfxState *state, double x0, double y0,
 void PSOutputDev::opiEnd(GfxState *state, Dict *opiDict) {
   Object dict;
 
-  if (psOutOPI) {
+  if (globalParams->getPSOPI()) {
     opiDict->lookup("2.0", &dict);
     if (dict.isDict()) {
       writePS("%%%%EndIncludedImage\n");
@@ -2209,26 +3078,104 @@ GBool PSOutputDev::getFileSpec(Object *fileSpec, Object *fileName) {
 }
 #endif // OPI_SUPPORT
 
+void PSOutputDev::type3D0(GfxState *state, double wx, double wy) {
+  writePS("%g %g setcharwidth\n", wx, wy);
+  writePS("q\n");
+}
+
+void PSOutputDev::type3D1(GfxState *state, double wx, double wy,
+                         double llx, double lly, double urx, double ury) {
+  t3WX = wx;
+  t3WY = wy;
+  t3LLX = llx;
+  t3LLY = lly;
+  t3URX = urx;
+  t3URY = ury;
+  t3String = new GString();
+  writePS("q\n");
+  t3Cacheable = gTrue;
+}
+
+void PSOutputDev::psXObject(Stream *psStream, Stream *level1Stream) {
+  Stream *str;
+  int c;
+
+  if ((level == psLevel1 || level == psLevel1Sep) && level1Stream) {
+    str = level1Stream;
+  } else {
+    str = psStream;
+  }
+  str->reset();
+  while ((c = str->getChar()) != EOF) {
+    writePSChar(c);
+  }
+  str->close();
+}
+
 void PSOutputDev::writePS(const char *fmt, ...) {
   va_list args;
+  char buf[512];
 
   va_start(args, fmt);
-  vfprintf(f, fmt, args);
+  if (t3String) {
+    vsprintf(buf, fmt, args);
+    t3String->append(buf);
+  } else {
+    vfprintf(f, fmt, args);
+  }
   va_end(args);
 }
 
 void PSOutputDev::writePSString(GString *s) {
   Guchar *p;
   int n;
+  char buf[8];
 
-  fputc('(', f);
+  writePSChar('(');
   for (p = (Guchar *)s->getCString(), n = s->getLength(); n; ++p, --n) {
-    if (*p == '(' || *p == ')' || *p == '\\')
-      fprintf(f, "\\%c", *p);
-    else if (*p < 0x20 || *p >= 0x80)
-      fprintf(f, "\\%03o", *p);
-    else
-      fputc(*p, f);
-  }
-  fputc(')', f);
+    if (*p == '(' || *p == ')' || *p == '\\') {
+      writePSChar('\\');
+      writePSChar((char)*p);
+    } else if (*p < 0x20 || *p >= 0x80) {
+      if (t3String) {
+       sprintf(buf, "\\%03o", *p);
+       t3String->append(buf);
+      } else {
+       fprintf(f, "\\%03o", *p);
+      }
+    } else {
+      writePSChar((char)*p);
+    }
+  }
+  writePSChar(')');
+}
+
+void PSOutputDev::writePSChar(char c) {
+  if (t3String) {
+    t3String->append(c);
+  } else {
+    fputc(c, f);
+  }
+}
+
+GString *PSOutputDev::filterPSName(GString *name) {
+  GString *name2;
+  char buf[8];
+  int i;
+  char c;
+
+  name2 = new GString();
+  for (i = 0; i < name->getLength(); ++i) {
+    c = name->getChar(i);
+    if (c <= (char)0x20 || c >= (char)0x7f ||
+       c == '(' || c == ')' || c == '<' || c == '>' ||
+       c == '[' || c == ']' || c == '{' || c == '}' ||
+       c == '/' || c == '%') {
+      sprintf(buf, "#%02x", c & 0xff);
+      name2->append(buf);
+    } else {
+      name2->append(c);
+    }
+  }
+  return name2;
 }
index d23d19eeb785cfd8fc8cd0d20b45536cbcb817dd..ba208dea439fcc4e4c00938e00ce6bb01dbe9bd9 100644 (file)
@@ -2,7 +2,7 @@
 //
 // PSOutputDev.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #include <stddef.h>
 #include "config.h"
 #include "Object.h"
+#include "GlobalParams.h"
 #include "OutputDev.h"
 
 class GfxPath;
 class GfxFont;
 class GfxColorSpace;
-
-//------------------------------------------------------------------------
-// Parameters
-//------------------------------------------------------------------------
-
-// Generate Level 1 PostScript?
-extern GBool psOutLevel1;
-
-// Generate Level 1 separable PostScript?
-extern GBool psOutLevel1Sep;
-
-// Generate Encapsulated PostScript?
-extern GBool psOutEPS;
-
-#if OPI_SUPPORT
-// Generate OPI comments?
-extern GBool psOutOPI;
-#endif
-
-// Paper size.
-extern int paperWidth;
-extern int paperHeight;
+class GfxSeparationColorSpace;
+struct PSFont16Enc;
+class PSOutCustomColor;
 
 //------------------------------------------------------------------------
 // PSOutputDev
 //------------------------------------------------------------------------
 
+enum PSOutMode {
+  psModePS,
+  psModeEPS,
+  psModeForm
+};
+
 enum PSFileType {
   psFile,                      // write to file
   psPipe,                      // write to pipe
@@ -58,9 +46,8 @@ class PSOutputDev: public OutputDev {
 public:
 
   // Open a PostScript output file, and write the prolog.
-  PSOutputDev(char *fileName, Catalog *catalog,
-             int firstPage, int lastPage,
-             GBool embedType11, GBool doForm1);
+  PSOutputDev(char *fileName, XRef *xrefA, Catalog *catalog,
+             int firstPage, int lastPage, PSOutMode modeA);
 
   // Destructor -- writes the trailer and closes the file.
   virtual ~PSOutputDev();
@@ -77,6 +64,10 @@ public:
   // Does this device use drawChar() or drawString()?
   virtual GBool useDrawChar() { return gFalse; }
 
+  // Does this device use beginType3Char/endType3Char?  Otherwise,
+  // text in Type 3 fonts will be drawn with drawChar/drawString.
+  virtual GBool interpretType3Chars() { return gFalse; }
+
   //----- initialization and control
 
   // Start a page.
@@ -123,7 +114,6 @@ public:
 
   //----- text drawing
   virtual void drawString(GfxState *state, GString *s);
-  virtual void drawString16(GfxState *state, GString *s);
 
   //----- image drawing
   virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
@@ -131,7 +121,7 @@ public:
                             GBool inlineImg);
   virtual void drawImage(GfxState *state, Object *ref, Stream *str,
                         int width, int height, GfxImageColorMap *colorMap,
-                        GBool inlineImg);
+                        int *maskColors, GBool inlineImg);
 
 #if OPI_SUPPORT
   //----- OPI functions
@@ -139,16 +129,31 @@ public:
   virtual void opiEnd(GfxState *state, Dict *opiDict);
 #endif
 
+  //----- Type 3 font operators
+  virtual void type3D0(GfxState *state, double wx, double wy);
+  virtual void type3D1(GfxState *state, double wx, double wy,
+                      double llx, double lly, double urx, double ury);
+
+  //----- PostScript XObjects
+  virtual void psXObject(Stream *psStream, Stream *level1Stream);
+
 private:
 
   void setupResources(Dict *resDict);
   void setupFonts(Dict *resDict);
-  void setupFont(GfxFont *font);
+  void setupFont(GfxFont *font, Dict *parentResDict);
   void setupEmbeddedType1Font(Ref *id, char *psName);
-  void setupEmbeddedType1Font(GString *fileName, char *psName);
+  void setupExternalType1Font(GString *fileName, char *psName);
   void setupEmbeddedType1CFont(GfxFont *font, Ref *id, char *psName);
+  void setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, char *psName);
+  void setupExternalTrueTypeFont(GfxFont *font, char *psName);
+  void setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, char *psName);
+  void setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, char *psName);
+  void setupType3Font(GfxFont *font, char *psName, Dict *parentResDict);
   void setupImages(Dict *resDict);
   void setupImage(Ref id, Stream *str);
+  void addProcessColor(double c, double m, double y, double k);
+  void addCustomColor(GfxSeparationColorSpace *sepCS);
   void doPath(GfxPath *path);
   void doImageL1(GfxImageColorMap *colorMap,
                 GBool invert, GBool inlineImg,
@@ -160,21 +165,29 @@ private:
                 GBool invert, GBool inlineImg,
                 Stream *str, int width, int height, int len);
   void dumpColorSpaceL2(GfxColorSpace *colorSpace);
+#if OPI_SUPPORT
   void opiBegin20(GfxState *state, Dict *dict);
   void opiBegin13(GfxState *state, Dict *dict);
   void opiTransform(GfxState *state, double x0, double y0,
                    double *x1, double *y1);
   GBool getFileSpec(Object *fileSpec, Object *fileName);
+#endif
   void writePS(const char *fmt, ...);
   void writePSString(GString *s);
+  void writePSChar(char c);
+  GString *filterPSName(GString *name);
 
-  GBool embedType1;            // embed Type 1 fonts?
-  GBool doForm;                        // generate a form?
+  PSLevel level;               // PostScript level (1, 2, separation)
+  PSOutMode mode;              // PostScript mode (PS, EPS, form)
+  int paperWidth;              // width of paper, in pts
+  int paperHeight;             // height of paper, in pts
 
   FILE *f;                     // PostScript file
   PSFileType fileType;         // file / pipe / stdout
   int seqPage;                 // current sequential page number
 
+  XRef *xref;                  // the xref table for this PDF file
+
   Ref *fontIDs;                        // list of object IDs of all used fonts
   int fontIDLen;               // number of entries in fontIDs array
   int fontIDSize;              // size of fontIDs array
@@ -184,6 +197,9 @@ private:
   GString **fontFileNames;     // list of names of all embedded external fonts
   int fontFileNameLen;         // number of entries in fontFileNames array
   int fontFileNameSize;                // size of fontFileNames array
+  PSFont16Enc *font16Enc;      // encodings for substitute 16-bit fonts
+  int font16EncLen;            // number of entries in font16Enc array
+  int font16EncSize;           // size of font16Enc array
 
   double tx, ty;               // global translation
   double xScale, yScale;       // global scaling
@@ -191,13 +207,21 @@ private:
 
   GString *embFontList;                // resource comments for embedded fonts
 
+  int processColors;           // used process colors
+  PSOutCustomColor             // used custom colors
+    *customColors;
+
+  GBool inType3Char;           // inside a Type 3 CharProc
+  GString *t3String;           // Type 3 content string
+  double t3WX, t3WY,           // Type 3 character parameters
+         t3LLX, t3LLY, t3URX, t3URY;
+  GBool t3Cacheable;           // cleared if char is not cacheable
+
 #if OPI_SUPPORT
   int opi13Nest;               // nesting level of OPI 1.3 objects
   int opi20Nest;               // nesting level of OPI 2.0 objects
 #endif
 
-  GBool type3Warning;          // only show the Type 3 font warning once
-
   GBool ok;                    // set up ok?
 };
 
diff --git a/pdf/xpdf/PSTokenizer.cc b/pdf/xpdf/PSTokenizer.cc
new file mode 100644 (file)
index 0000000..8d654bd
--- /dev/null
@@ -0,0 +1,133 @@
+//========================================================================
+//
+// PSTokenizer.cc
+//
+// Copyright 2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "PSTokenizer.h"
+
+//------------------------------------------------------------------------
+
+// A '1' in this array means the character is white space.  A '1' or
+// '2' means the character ends a name or command.
+static char specialChars[256] = {
+  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,   // 0x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 1x
+  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2,   // 2x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0,   // 3x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 4x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0,   // 5x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 6x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0,   // 7x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 8x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 9x
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // ax
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // bx
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // cx
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // dx
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // ex
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0    // fx
+};
+
+//------------------------------------------------------------------------
+
+PSTokenizer::PSTokenizer(int (*getCharFuncA)(void *), void *dataA) {
+  getCharFunc = getCharFuncA;
+  data = dataA;
+  charBuf = -1;
+}
+
+PSTokenizer::~PSTokenizer() {
+}
+
+GBool PSTokenizer::getToken(char *buf, int size, int *length) {
+  GBool comment, backslash;
+  int c;
+  int i;
+
+  // skip whitespace and comments
+  comment = gFalse;
+  while (1) {
+    if ((c = getChar()) == EOF) {
+      buf[0] = '\0';
+      *length = 0;
+      return gFalse;
+    }
+    if (comment) {
+      if (c == '\x0a' || c == '\x0d') {
+       comment = gFalse;
+      }
+    } else if (c == '%') {
+      comment = gTrue;
+    } else if (specialChars[c] != 1) {
+      break;
+    }
+  }
+
+  // read a token
+  i = 0;
+  buf[i++] = c;
+  if (c == '(') {
+    backslash = gFalse;
+    while ((c = lookChar()) != EOF) {
+      if (i < size - 1) {
+       buf[i++] = c;
+      }
+      getChar();
+      if (c == '\\') {
+       backslash = gTrue;
+      } else if (!backslash && c == ')') {
+       break;
+      } else {
+       backslash = gFalse;
+      }
+    }
+  } else if (c == '<') {
+    while ((c = lookChar()) != EOF) {
+      getChar();
+      if (i < size - 1) {
+       buf[i++] = c;
+      }
+      if (c == '>') {
+       break;
+      }
+    }
+  } else if (c != '[' && c != ']') {
+    while ((c = lookChar()) != EOF && !specialChars[c]) {
+      getChar();
+      if (i < size - 1) {
+       buf[i++] = c;
+      }
+    }
+  }
+  buf[i] = '\0';
+  *length = i;
+
+  return gTrue;
+}
+
+int PSTokenizer::lookChar() {
+  if (charBuf < 0) {
+    charBuf = (*getCharFunc)(data);
+  }
+  return charBuf;
+}
+
+int PSTokenizer::getChar() {
+  int c;
+
+  if (charBuf < 0) {
+    charBuf = (*getCharFunc)(data);
+  }
+  c = charBuf;
+  charBuf = -1;
+  return c;
+}
diff --git a/pdf/xpdf/PSTokenizer.h b/pdf/xpdf/PSTokenizer.h
new file mode 100644 (file)
index 0000000..1053c67
--- /dev/null
@@ -0,0 +1,39 @@
+//========================================================================
+//
+// PSTokenizer.h
+//
+// Copyright 2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef PSTOKENIZER_H
+#define PSTOKENIZER_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+
+//------------------------------------------------------------------------
+
+class PSTokenizer {
+public:
+
+  PSTokenizer(int (*getCharFuncA)(void *), void *dataA);
+  ~PSTokenizer();
+
+  // Get the next PostScript token.  Returns false at end-of-stream.
+  GBool getToken(char *buf, int size, int *length);
+
+private:
+
+  int lookChar();
+  int getChar();
+
+  int (*getCharFunc)(void *);
+  void *data;
+  int charBuf;
+};
+
+#endif
index c2ac6b190bdd2c1246d23ecb486ac8cf798dab72..c601857730d131a9e384083ed2f7a0fbb15c26ea 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Page.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include "Object.h"
 #include "Array.h"
 #include "OutputDev.h"
 #ifndef PDF_PARSER_ONLY
 #include "Gfx.h"
-#include "FormWidget.h"
+#include "Annot.h"
 #endif
 #include "Error.h"
-
-#include "Params.h"
 #include "Page.h"
 
 //------------------------------------------------------------------------
 //------------------------------------------------------------------------
 
 PageAttrs::PageAttrs(PageAttrs *attrs, Dict *dict) {
-  Object obj1, obj2;
+  Object obj1;
   double w, h;
 
   // get old/default values
   if (attrs) {
-    x1 = attrs->x1;
-    y1 = attrs->y1;
-    x2 = attrs->x2;
-    y2 = attrs->y2;
-    cropX1 = attrs->cropX1;
-    cropY1 = attrs->cropY1;
-    cropX2 = attrs->cropX2;
-    cropY2 = attrs->cropY2;
+    mediaBox = attrs->mediaBox;
+    cropBox = attrs->cropBox;
+    haveCropBox = attrs->haveCropBox;
     rotate = attrs->rotate;
     attrs->resources.copy(&resources);
   } else {
     // set default MediaBox to 8.5" x 11" -- this shouldn't be necessary
     // but some (non-compliant) PDF files don't specify a MediaBox
-    x1 = 0;
-    y1 = 0;
-    x2 = 612;
-    y2 = 792;
-    cropX1 = cropY1 = cropX2 = cropY2 = 0;
+    mediaBox.x1 = 0;
+    mediaBox.y1 = 0;
+    mediaBox.x2 = 612;
+    mediaBox.y2 = 792;
+    cropBox.x1 = cropBox.y1 = cropBox.x2 = cropBox.y2 = 0;
+    haveCropBox = gFalse;
     rotate = 0;
     resources.initNull();
   }
 
   // media box
-  dict->lookup("MediaBox", &obj1);
-  if (obj1.isArray() && obj1.arrayGetLength() == 4) {
-    obj1.arrayGet(0, &obj2);
-    if (obj2.isNum())
-      x1 = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(1, &obj2);
-    if (obj2.isNum())
-      y1 = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(2, &obj2);
-    if (obj2.isNum())
-      x2 = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(3, &obj2);
-    if (obj2.isNum())
-      y2 = obj2.getNum();
-    obj2.free();
-  }
-  obj1.free();
+  readBox(dict, "MediaBox", &mediaBox);
 
   // crop box
-  dict->lookup("CropBox", &obj1);
-  if (obj1.isArray() && obj1.arrayGetLength() == 4) {
-    obj1.arrayGet(0, &obj2);
-    if (obj2.isNum())
-      cropX1 = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(1, &obj2);
-    if (obj2.isNum())
-      cropY1 = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(2, &obj2);
-    if (obj2.isNum())
-      cropX2 = obj2.getNum();
-    obj2.free();
-    obj1.arrayGet(3, &obj2);
-    if (obj2.isNum())
-      cropY2 = obj2.getNum();
-    obj2.free();
-  }
-  obj1.free();
+  cropBox = mediaBox;
+  haveCropBox = readBox(dict, "CropBox", &cropBox);
 
   // if the MediaBox is excessively larger than the CropBox,
   // just use the CropBox
   limitToCropBox = gFalse;
-  w = 0.25 * (cropX2 - cropX1);
-  h = 0.25 * (cropY2 - cropY1);
-  if (cropX2 > cropX1 &&
-      ((cropX1 - x1) + (x2 - cropX2) > w ||
-       (cropY1 - y1) + (y2 - cropY2) > h)) {
-    limitToCropBox = gTrue;
+  if (haveCropBox) {
+    w = 0.25 * (cropBox.x2 - cropBox.x1);
+    h = 0.25 * (cropBox.y2 - cropBox.y1);
+    if ((cropBox.x1 - mediaBox.x1) + (mediaBox.x2 - cropBox.x2) > w ||
+       (cropBox.y1 - mediaBox.y1) + (mediaBox.y2 - cropBox.y2) > h) {
+      limitToCropBox = gTrue;
+    }
   }
 
+  // other boxes
+  bleedBox = cropBox;
+  readBox(dict, "BleedBox", &bleedBox);
+  trimBox = cropBox;
+  readBox(dict, "TrimBox", &trimBox);
+  artBox = cropBox;
+  readBox(dict, "ArtBox", &artBox);
+
   // rotate
   dict->lookup("Rotate", &obj1);
-  if (obj1.isInt())
+  if (obj1.isInt()) {
     rotate = obj1.getInt();
+  }
   obj1.free();
-  while (rotate < 0)
+  while (rotate < 0) {
     rotate += 360;
-  while (rotate >= 360)
+  }
+  while (rotate >= 360) {
     rotate -= 360;
+  }
+
+  // misc attributes
+  dict->lookup("LastModified", &lastModified);
+  dict->lookup("BoxColorInfo", &boxColorInfo);
+  dict->lookup("Group", &group);
+  dict->lookup("Metadata", &metadata);
+  dict->lookup("PieceInfo", &pieceInfo);
+  dict->lookup("SeparationInfo", &separationInfo);
 
   // resource dictionary
   dict->lookup("Resources", &obj1);
@@ -133,20 +111,75 @@ PageAttrs::PageAttrs(PageAttrs *attrs, Dict *dict) {
 }
 
 PageAttrs::~PageAttrs() {
+  lastModified.free();
+  boxColorInfo.free();
+  group.free();
+  metadata.free();
+  pieceInfo.free();
+  separationInfo.free();
   resources.free();
 }
 
+GBool PageAttrs::readBox(Dict *dict, char *key, PDFRectangle *box) {
+  PDFRectangle tmp;
+  Object obj1, obj2;
+  GBool ok;
+
+  dict->lookup(key, &obj1);
+  if (obj1.isArray() && obj1.arrayGetLength() == 4) {
+    ok = gTrue;
+    obj1.arrayGet(0, &obj2);
+    if (obj2.isNum()) {
+      tmp.x1 = obj2.getNum();
+    } else {
+      ok = gFalse;
+    }
+    obj2.free();
+    obj1.arrayGet(1, &obj2);
+    if (obj2.isNum()) {
+      tmp.y1 = obj2.getNum();
+    } else {
+      ok = gFalse;
+    }
+    obj2.free();
+    obj1.arrayGet(2, &obj2);
+    if (obj2.isNum()) {
+      tmp.x2 = obj2.getNum();
+    } else {
+      ok = gFalse;
+    }
+    obj2.free();
+    obj1.arrayGet(3, &obj2);
+    if (obj2.isNum()) {
+      tmp.y2 = obj2.getNum();
+    } else {
+      ok = gFalse;
+    }
+    obj2.free();
+    if (ok) {
+      *box = tmp;
+    }
+  } else {
+    ok = gFalse;
+  }
+  obj1.free();
+  return ok;
+}
+
 //------------------------------------------------------------------------
 // Page
 //------------------------------------------------------------------------
 
-Page::Page(int num1, Dict *pageDict, PageAttrs *attrs1) {
+Page::Page(XRef *xrefA, int numA, Dict *pageDict, PageAttrs *attrsA,
+          GBool printCommandsA) {
 
   ok = gTrue;
-  num = num1;
+  xref = xrefA;
+  num = numA;
+  printCommands = printCommandsA;
 
   // get attributes
-  attrs = attrs1;
+  attrs = attrsA;
 
   // annotations
   pageDict->lookupNF("Annots", &annots);
@@ -185,18 +218,22 @@ Page::~Page() {
 void Page::display(OutputDev *out, double dpi, int rotate,
                   Links *links, Catalog *catalog) {
 #ifndef PDF_PARSER_ONLY
+  PDFRectangle *box, *cropBox;
   Gfx *gfx;
   Object obj;
   Link *link;
   int i;
-  FormWidgets *formWidgets;
+  Annots *annotList;
+
+  box = getBox();
+  cropBox = getCropBox();
 
   if (printCommands) {
     printf("***** MediaBox = ll:%g,%g ur:%g,%g\n",
-          getX1(), getY1(), getX2(), getY2());
+          box->x1, box->y1, box->x2, box->y2);
     if (isCropped()) {
       printf("***** CropBox = ll:%g,%g ur:%g,%g\n",
-            getCropX1(), getCropY1(), getCropX2(), getCropY2());
+            cropBox->x1, cropBox->y1, cropBox->x2, cropBox->y2);
     }
     printf("***** Rotate = %d\n", attrs->getRotate());
   }
@@ -207,10 +244,9 @@ void Page::display(OutputDev *out, double dpi, int rotate,
   } else if (rotate < 0) {
     rotate += 360;
   }
-  gfx = new Gfx(out, num, attrs->getResourceDict(),
-               dpi, getX1(), getY1(), getX2(), getY2(), isCropped(),
-               getCropX1(), getCropY1(), getCropX2(), getCropY2(), rotate);
-  contents.fetch(&obj);
+  gfx = new Gfx(xref, out, num, attrs->getResourceDict(),
+               dpi, box, isCropped(), cropBox, rotate, printCommands);
+  contents.fetch(xref, &obj);
   if (!obj.isNull()) {
     gfx->display(&obj);
   }
@@ -225,20 +261,20 @@ void Page::display(OutputDev *out, double dpi, int rotate,
     out->dump();
   }
 
-  // draw AcroForm widgets
+  // draw non-link annotations
   //~ need to reset CTM ???
-  formWidgets = new FormWidgets(annots.fetch(&obj));
+  annotList = new Annots(xref, annots.fetch(xref, &obj));
   obj.free();
-  if (printCommands && formWidgets->getNumWidgets() > 0) {
-    printf("***** AcroForm widgets\n");
-  }
-  for (i = 0; i < formWidgets->getNumWidgets(); ++i) {
-    formWidgets->getWidget(i)->draw(gfx);
-  }
-  if (formWidgets->getNumWidgets() > 0) {
+  if (annotList->getNumAnnots() > 0) {
+    if (printCommands) {
+      printf("***** Annotations\n");
+    }
+    for (i = 0; i < annotList->getNumAnnots(); ++i) {
+      annotList->getAnnot(i)->draw(gfx);
+    }
     out->dump();
   }
-  delete formWidgets;
+  delete annotList;
 
   delete gfx;
 #endif
index a144d2cfa7195f5cf3cf757d7257d20eecffa326..7207b20687cad1e3e874e84695f2043afbf72875 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Page.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -21,6 +21,12 @@ class OutputDev;
 class Links;
 class Catalog;
 
+//------------------------------------------------------------------------
+
+struct PDFRectangle {
+  double x1, y1, x2, y2;
+};
+
 //------------------------------------------------------------------------
 // PageAttrs
 //------------------------------------------------------------------------
@@ -37,25 +43,49 @@ public:
   ~PageAttrs();
 
   // Accessors.
-  double getX1() { return limitToCropBox ? cropX1 : x1; }
-  double getY1() { return limitToCropBox ? cropY1 : y1; }
-  double getX2() { return limitToCropBox ? cropX2 : x2; }
-  double getY2() { return limitToCropBox ? cropY2 : y2; }
-  GBool isCropped() { return cropX2 > cropX1; }
-  double getCropX1() { return cropX1; }
-  double getCropY1() { return cropY1; }
-  double getCropX2() { return cropX2; }
-  double getCropY2() { return cropY2; }
+  PDFRectangle *getBox() { return limitToCropBox ? &cropBox : &mediaBox; }
+  PDFRectangle *getMediaBox() { return &mediaBox; }
+  PDFRectangle *getCropBox() { return &cropBox; }
+  GBool isCropped() { return haveCropBox; }
+  PDFRectangle *getBleedBox() { return &bleedBox; }
+  PDFRectangle *getTrimBox() { return &trimBox; }
+  PDFRectangle *getArtBox() { return &artBox; }
   int getRotate() { return rotate; }
+  GString *getLastModified()
+    { return lastModified.isString()
+       ? lastModified.getString() : (GString *)NULL; }
+  Dict *getBoxColorInfo()
+    { return boxColorInfo.isDict() ? boxColorInfo.getDict() : (Dict *)NULL; }
+  Dict *getGroup()
+    { return group.isDict() ? group.getDict() : (Dict *)NULL; }
+  Stream *getMetadata()
+    { return metadata.isStream() ? metadata.getStream() : (Stream *)NULL; }
+  Dict *getPieceInfo()
+    { return pieceInfo.isDict() ? pieceInfo.getDict() : (Dict *)NULL; }
+  Dict *getSeparationInfo()
+    { return separationInfo.isDict()
+       ? separationInfo.getDict() : (Dict *)NULL; }
   Dict *getResourceDict()
     { return resources.isDict() ? resources.getDict() : (Dict *)NULL; }
 
 private:
 
-  double x1, y1, x2, y2;
-  double cropX1, cropY1, cropX2, cropY2;
+  GBool readBox(Dict *dict, char *key, PDFRectangle *box);
+
+  PDFRectangle mediaBox;
+  PDFRectangle cropBox;
+  GBool haveCropBox;
   GBool limitToCropBox;
+  PDFRectangle bleedBox;
+  PDFRectangle trimBox;
+  PDFRectangle artBox;
   int rotate;
+  Object lastModified;
+  Object boxColorInfo;
+  Object group;
+  Object metadata;
+  Object pieceInfo;
+  Object separationInfo;
   Object resources;
 };
 
@@ -67,7 +97,8 @@ class Page {
 public:
 
   // Constructor.
-  Page(int num1, Dict *pageDict, PageAttrs *attrs1);
+  Page(XRef *xrefA, int numA, Dict *pageDict, PageAttrs *attrsA,
+       GBool printCommandsA);
 
   // Destructor.
   ~Page();
@@ -76,27 +107,31 @@ public:
   GBool isOk() { return ok; }
 
   // Get page parameters.
-  double getX1() { return attrs->getX1(); }
-  double getY1() { return attrs->getY1(); }
-  double getX2() { return attrs->getX2(); }
-  double getY2() { return attrs->getY2(); }
+  PDFRectangle *getBox() { return attrs->getBox(); }
+  PDFRectangle *getMediaBox() { return attrs->getMediaBox(); }
+  PDFRectangle *getCropBox() { return attrs->getCropBox(); }
   GBool isCropped() { return attrs->isCropped(); }
-  double getCropX1() { return attrs->getCropX1(); }
-  double getCropY1() { return attrs->getCropY1(); }
-  double getCropX2() { return attrs->getCropX2(); }
-  double getCropY2() { return attrs->getCropY2(); }
-  double getWidth() { return attrs->getX2() - attrs->getX1(); }
-  double getHeight() { return attrs->getY2() - attrs->getY1(); }
+  double getWidth() { return attrs->getBox()->x2 - attrs->getBox()->x1; }
+  double getHeight() { return attrs->getBox()->y2 - attrs->getBox()->y1; }
+  PDFRectangle *getBleedBox() { return attrs->getBleedBox(); }
+  PDFRectangle *getTrimBox() { return attrs->getTrimBox(); }
+  PDFRectangle *getArtBox() { return attrs->getArtBox(); }
   int getRotate() { return attrs->getRotate(); }
+  GString *getLastModified() { return attrs->getLastModified(); }
+  Dict *getBoxColorInfo() { return attrs->getBoxColorInfo(); }
+  Dict *getGroup() { return attrs->getGroup(); }
+  Stream *getMetadata() { return attrs->getMetadata(); }
+  Dict *getPieceInfo() { return attrs->getPieceInfo(); }
+  Dict *getSeparationInfo() { return attrs->getSeparationInfo(); }
 
   // Get resource dictionary.
   Dict *getResourceDict() { return attrs->getResourceDict(); }
 
   // Get annotations array.
-  Object *getAnnots(Object *obj) { return annots.fetch(obj); }
+  Object *getAnnots(Object *obj) { return annots.fetch(xref, obj); }
 
   // Get contents.
-  Object *getContents(Object *obj) { return contents.fetch(obj); }
+  Object *getContents(Object *obj) { return contents.fetch(xref, obj); }
 
   // Display a page.
   void display(OutputDev *out, double dpi, int rotate,
@@ -104,10 +139,12 @@ public:
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   int num;                     // page number
   PageAttrs *attrs;            // page attributes
   Object annots;               // annotations array
   Object contents;             // page contents
+  GBool printCommands;         // print the drawing commands (for debugging)
   GBool ok;                    // true if page is valid
 };
 
index 6ad0c5a7816afa4cb55fd565dfa3f6073669af76..4df53c986caae7dfc98811eed10290957259324d 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Parser.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stddef.h>
 #include "Object.h"
 #include "Array.h"
@@ -21,8 +22,9 @@
 #include "Decrypt.h"
 #endif
 
-Parser::Parser(Lexer *lexer1) {
-  lexer = lexer1;
+Parser::Parser(XRef *xrefA, Lexer *lexerA) {
+  xref = xrefA;
+  lexer = lexerA;
   inlineImg = 0;
   lexer->getObj(&buf1);
   lexer->getObj(&buf2);
@@ -36,7 +38,8 @@ Parser::~Parser() {
 
 #ifndef NO_DECRYPTION
 Object *Parser::getObj(Object *obj,
-                      Guchar *fileKey, int objNum, int objGen) {
+                      Guchar *fileKey, int keyLength,
+                      int objNum, int objGen) {
 #else
 Object *Parser::getObj(Object *obj) {
 #endif
@@ -63,10 +66,10 @@ Object *Parser::getObj(Object *obj) {
   // array
   if (buf1.isCmd("[")) {
     shift();
-    obj->initArray();
+    obj->initArray(xref);
     while (!buf1.isCmd("]") && !buf1.isEOF())
 #ifndef NO_DECRYPTION
-      obj->arrayAdd(getObj(&obj2, fileKey, objNum, objGen));
+      obj->arrayAdd(getObj(&obj2, fileKey, keyLength, objNum, objGen));
 #else
       obj->arrayAdd(getObj(&obj2));
 #endif
@@ -77,7 +80,7 @@ Object *Parser::getObj(Object *obj) {
   // dictionary or stream
   } else if (buf1.isCmd("<<")) {
     shift();
-    obj->initDict();
+    obj->initDict(xref);
     while (!buf1.isCmd(">>") && !buf1.isEOF()) {
       if (!buf1.isName()) {
        error(getPos(), "Dictionary key must be a name object");
@@ -88,7 +91,7 @@ Object *Parser::getObj(Object *obj) {
        if (buf1.isEOF() || buf1.isError())
          break;
 #ifndef NO_DECRYPTION
-       obj->dictAdd(key, getObj(&obj2, fileKey, objNum, objGen));
+       obj->dictAdd(key, getObj(&obj2, fileKey, keyLength, objNum, objGen));
 #else
        obj->dictAdd(key, getObj(&obj2));
 #endif
@@ -101,7 +104,8 @@ Object *Parser::getObj(Object *obj) {
        obj->initStream(str);
 #ifndef NO_DECRYPTION
        if (fileKey) {
-         str->getBaseStream()->doDecryption(fileKey, objNum, objGen);
+         str->getBaseStream()->doDecryption(fileKey, keyLength,
+                                            objNum, objGen);
        }
 #endif
       } else {
@@ -129,7 +133,7 @@ Object *Parser::getObj(Object *obj) {
   } else if (buf1.isString() && fileKey) {
     buf1.copy(obj);
     s = obj->getString();
-    decrypt = new Decrypt(fileKey, objNum, objGen);
+    decrypt = new Decrypt(fileKey, keyLength, objNum, objGen);
     for (i = 0, p = obj->getString()->getCString();
         i < s->getLength();
         ++i, ++p) {
@@ -151,7 +155,7 @@ Object *Parser::getObj(Object *obj) {
 Stream *Parser::makeStream(Object *dict) {
   Object obj;
   Stream *str;
-  int pos, endPos, length;
+  Guint pos, endPos, length;
 
   // get stream start position
   lexer->skipToNextLine();
@@ -160,7 +164,7 @@ Stream *Parser::makeStream(Object *dict) {
   // get length
   dict->dictLookup("Length", &obj);
   if (obj.isInt()) {
-    length = obj.getInt();
+    length = (Guint)obj.getInt();
     obj.free();
   } else {
     error(getPos(), "Bad 'Length' attribute in stream");
@@ -169,12 +173,13 @@ Stream *Parser::makeStream(Object *dict) {
   }
 
   // check for length in damaged file
-  if ((endPos = xref->getStreamEnd(pos)) >= 0) {
+  if (xref->getStreamEnd(pos, &endPos)) {
     length = endPos - pos;
   }
 
   // make base stream
-  str = lexer->getStream()->getBaseStream()->makeSubStream(pos, length, dict);
+  str = lexer->getStream()->getBaseStream()->makeSubStream(pos, gTrue,
+                                                          length, dict);
 
   // get filters
   str = str->addFilters(dict);
index 6e6184499e8003608af38c14b2df965d604cc610..c11475bfd94a5e4f9500b50861bd7979d037b849 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Parser.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -23,7 +23,7 @@ class Parser {
 public:
 
   // Constructor.
-  Parser(Lexer *lexer1);
+  Parser(XRef *xrefA, Lexer *lexerA);
 
   // Destructor.
   ~Parser();
@@ -31,7 +31,8 @@ public:
   // Get the next object from the input stream.
 #ifndef NO_DECRYPTION
   Object *getObj(Object *obj,
-                Guchar *fileKey = NULL, int objNum = 0, int objGen = 0);
+                Guchar *fileKey = NULL, int keyLength = 0,
+                int objNum = 0, int objGen = 0);
 #else
   Object *getObj(Object *obj);
 #endif
@@ -44,6 +45,7 @@ public:
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   Lexer *lexer;                        // input stream
   Object buf1, buf2;           // next two tokens
   int inlineImg;               // set when inline image data is encountered
index 5ffe315e2e03c7414b8a3af5b0881034aede0f07..69c1e4841c20131307a2d0a2d45706bd835e8f94 100644 (file)
@@ -2,42 +2,45 @@
 //
 // SFont.cc
 //
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
 //========================================================================
 
 #ifdef __GNUC__
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include "SFont.h"
 
 //------------------------------------------------------------------------
 
-SFontEngine::SFontEngine(Display *display, Visual *visual, int depth,
-                        Colormap colormap) {
-  this->display = display;
-  this->visual = visual;
-  this->depth = depth;
-  this->colormap = colormap;
-};
+SFontEngine::SFontEngine(Display *displayA, Visual *visualA, int depthA,
+                        Colormap colormapA) {
+  display = displayA;
+  visual = visualA;
+  depth = depthA;
+  colormap = colormapA;
+}
 
 SFontEngine::~SFontEngine() {
 }
 
-void SFontEngine::useTrueColor(int rMax, int rShift, int gMax, int gShift,
-                              int bMax, int bShift) {
+void SFontEngine::useTrueColor(int rMaxA, int rShiftA, int gMaxA, int gShiftA,
+                              int bMaxA, int bShiftA) {
   trueColor = gTrue;
-  this->rMax = rMax;
-  this->rShift = rShift;
-  this->gMax = gMax;
-  this->gShift = gShift;
-  this->bMax = bMax;
-  this->bShift = bShift;
+  rMax = rMaxA;
+  rShift = rShiftA;
+  gMax = gMaxA;
+  gShift = gShiftA;
+  bMax = bMaxA;
+  bShift = bShiftA;
 }
 
-void SFontEngine::useColorCube(Gulong *colors, int nRGB) {
+void SFontEngine::useColorCube(Gulong *colorsA, int nRGBA) {
   trueColor = gFalse;
-  this->colors = colors;
-  this->nRGB = nRGB;
+  colors = colorsA;
+  nRGB = nRGBA;
   rMax = gMax = bMax = nRGB - 1;
 }
 
@@ -71,3 +74,7 @@ SFont::SFont() {
 
 SFont::~SFont() {
 }
+
+GBool SFont::getCharPath(CharCode c, Unicode u, GfxState *state) {
+  return gFalse;
+}
index 4758664fa1327d817bcc4a02a3e492eb9282e8f1..c4fb341e05948552715280e35f1613418a8e6b4c 100644 (file)
@@ -4,6 +4,8 @@
 //
 // Base class for font rasterizers.
 //
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
 //========================================================================
 
 #ifndef SFONT_H
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include "gtypes.h"
+#include "CharTypes.h"
+
+class GfxState;
 
 //------------------------------------------------------------------------
 
 class SFontEngine {
 public:
 
-  SFontEngine(Display *display, Visual *visual, int depth,
-             Colormap colormap);
+  SFontEngine(Display *displayA, Visual *visualA, int depthA,
+             Colormap colormapA);
   virtual ~SFontEngine();
 
   // Use a TrueColor visual.  Pixel values are computed as:
@@ -32,8 +37,8 @@ public:
   //
   // where r, g, and b are scaled to the ranges [0,rMax], [0,gMax],
   // and [0,bMax], respectively.
-  virtual void useTrueColor(int rMax, int rShift, int gMax, int gShift,
-                           int bMax, int bShift);
+  virtual void useTrueColor(int rMaxA, int rShiftA, int gMaxA, int gShiftA,
+                           int bMaxA, int bShiftA);
 
   // Use an RGB color cube.  <colors> is an array containing
   // <nRGB>*<nRGB>*<nRGB> pixel values in red,green,blue order, e.g.,
@@ -53,7 +58,7 @@ public:
   //
   // The <colors> array is not copied and must remain valid for the
   // lifetime of this SFont object.
-  virtual void useColorCube(Gulong *colors, int nRGB);
+  virtual void useColorCube(Gulong *colorsA, int nRGBA);
 
 protected:
 
@@ -114,12 +119,20 @@ public:
 
   virtual ~SFont();
 
-  // Draw a character <c> at <x>,<y> in color (<r>,<g>,<b>).  The RGB
-  // values should each be in the range [0,65535].  Draws into <d>,
-  // clipped to the rectangle (0,0)-(<w>-1,<h>-1).  Returns true if
-  // the character was drawn successfully.
+  // Draw a character <c>/<u> at <x>,<y> in color (<r>,<g>,<b>).  The
+  // RGB values should each be in the range [0,65535].  Draws into
+  // <d>, clipped to the rectangle (0,0)-(<w>-1,<h>-1).  Returns true
+  // if the character was drawn successfully.
   virtual GBool drawChar(Drawable d, int w, int h, GC gc,
-                        int x, int y, int r, int g, int b, Gushort c) = 0;
+                        int x, int y, int r, int g, int b,
+                        CharCode c, Unicode u) = 0;
+
+  // Add the outline of the specified character to the current path by
+  // calling state->moveTo, lineTo, and curveTo.  Returns true if
+  // successful.  If this SFont subclass doesn't implement character
+  // paths, returns false immediately without modifying the current
+  // path.
+  virtual GBool getCharPath(CharCode c, Unicode u, GfxState *state);
 
 protected:
 };
index 1af874225de56f746696c9c2ff57e68981289b34..f5a77b0be4c27be9b1cd0711888523e7a54f0395 100644 (file)
@@ -4,7 +4,7 @@
 //
 // Tables for CCITT Fax decoding.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
index 0afcc94abc526347dcf0bda342c7483d8f92883e..9777940da3b70a4dcea3d15092a4857a189cd8f4 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Stream.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -265,8 +266,8 @@ Stream *Stream::makeFilter(char *name, Stream *str, Object *params) {
 // BaseStream
 //------------------------------------------------------------------------
 
-BaseStream::BaseStream(Object *dict) {
-  this->dict = *dict;
+BaseStream::BaseStream(Object *dictA) {
+  dict = *dictA;
 #ifndef NO_DECRYPTION
   decrypt = NULL;
 #endif
@@ -281,8 +282,9 @@ BaseStream::~BaseStream() {
 }
 
 #ifndef NO_DECRYPTION
-void BaseStream::doDecryption(Guchar *fileKey, int objNum, int objGen) {
-  decrypt = new Decrypt(fileKey, objNum, objGen);
+void BaseStream::doDecryption(Guchar *fileKey, int keyLength,
+                             int objNum, int objGen) {
+  decrypt = new Decrypt(fileKey, keyLength, objNum, objGen);
 }
 #endif
 
@@ -290,8 +292,8 @@ void BaseStream::doDecryption(Guchar *fileKey, int objNum, int objGen) {
 // FilterStream
 //------------------------------------------------------------------------
 
-FilterStream::FilterStream(Stream *str) {
-  this->str = str;
+FilterStream::FilterStream(Stream *strA) {
+  str = strA;
 }
 
 FilterStream::~FilterStream() {
@@ -301,7 +303,7 @@ void FilterStream::close() {
   str->close();
 }
 
-void FilterStream::setPos(int pos) {
+void FilterStream::setPos(Guint pos, int dir) {
   error(-1, "Internal: called setPos() on FilterStream");
 }
 
@@ -309,13 +311,13 @@ void FilterStream::setPos(int pos) {
 // ImageStream
 //------------------------------------------------------------------------
 
-ImageStream::ImageStream(Stream *str, int width, int nComps, int nBits) {
+ImageStream::ImageStream(Stream *strA, int widthA, int nCompsA, int nBitsA) {
   int imgLineSize;
 
-  this->str = str;
-  this->width = width;
-  this->nComps = nComps;
-  this->nBits = nBits;
+  str = strA;
+  width = widthA;
+  nComps = nCompsA;
+  nBits = nBitsA;
 
   nVals = width * nComps;
   if (nBits == 1) {
@@ -396,13 +398,13 @@ void ImageStream::skipLine() {
 // StreamPredictor
 //------------------------------------------------------------------------
 
-StreamPredictor::StreamPredictor(Stream *str, int predictor,
-                                int width, int nComps, int nBits) {
-  this->str = str;
-  this->predictor = predictor;
-  this->width = width;
-  this->nComps = nComps;
-  this->nBits = nBits;
+StreamPredictor::StreamPredictor(Stream *strA, int predictorA,
+                                int widthA, int nCompsA, int nBitsA) {
+  str = strA;
+  predictor = predictorA;
+  width = widthA;
+  nComps = nCompsA;
+  nBits = nBitsA;
 
   nVals = width * nComps;
   pixBytes = (nComps * nBits + 7) >> 3;
@@ -486,11 +488,11 @@ GBool StreamPredictor::getNextLine() {
       if ((pc = p - upLeft) < 0)
        pc = -pc;
       if (pa <= pb && pa <= pc)
-       predLine[i] = pa + (Guchar)c;
+       predLine[i] = left + (Guchar)c;
       else if (pb <= pc)
-       predLine[i] = pb + (Guchar)c;
+       predLine[i] = up + (Guchar)c;
       else
-       predLine[i] = pc + (Guchar)c;
+       predLine[i] = upLeft + (Guchar)c;
       break;
     case 10:                   // PNG none
     default:                   // no predictor or TIFF predictor
@@ -552,27 +554,37 @@ GBool StreamPredictor::getNextLine() {
 // FileStream
 //------------------------------------------------------------------------
 
-FileStream::FileStream(FILE *f, int start, int length, Object *dict):
-    BaseStream(dict) {
-  this->f = f;
-  this->start = start;
-  this->length = length;
+FileStream::FileStream(FILE *fA, Guint startA, GBool limitedA,
+                      Guint lengthA, Object *dictA):
+    BaseStream(dictA) {
+  f = fA;
+  start = startA;
+  limited = limitedA;
+  length = lengthA;
   bufPtr = bufEnd = buf;
   bufPos = start;
-  savePos = -1;
+  savePos = 0;
+  saved = gFalse;
 }
 
 FileStream::~FileStream() {
   close();
 }
 
-Stream *FileStream::makeSubStream(int start, int length, Object *dict) {
-  return new FileStream(f, start, length, dict);
+Stream *FileStream::makeSubStream(Guint startA, GBool limitedA,
+                                 Guint lengthA, Object *dictA) {
+  return new FileStream(f, startA, limitedA, lengthA, dictA);
 }
 
 void FileStream::reset() {
-  savePos = (int)ftell(f);
+#if HAVE_FSEEK64
+  savePos = (Guint)ftell64(f);
+  fseek64(f, start, SEEK_SET);
+#else
+  savePos = (Guint)ftell(f);
   fseek(f, start, SEEK_SET);
+#endif
+  saved = gTrue;
   bufPtr = bufEnd = buf;
   bufPos = start;
 #ifndef NO_DECRYPTION
@@ -582,9 +594,13 @@ void FileStream::reset() {
 }
 
 void FileStream::close() {
-  if (savePos >= 0) {
+  if (saved) {
+#if HAVE_FSEEK64
+    fseek64(f, savePos, SEEK_SET);
+#else
     fseek(f, savePos, SEEK_SET);
-    savePos = -1;
+#endif
+    saved = gFalse;
   }
 }
 
@@ -596,10 +612,10 @@ GBool FileStream::fillBuf() {
 
   bufPos += bufEnd - buf;
   bufPtr = bufEnd = buf;
-  if (length >= 0 && bufPos >= start + length) {
+  if (limited && bufPos >= start + length) {
     return gFalse;
   }
-  if (length >= 0 && bufPos + fileStreamBufSize > start + length) {
+  if (limited && bufPos + fileStreamBufSize > start + length) {
     n = start + length - bufPos;
   } else {
     n = fileStreamBufSize;
@@ -619,56 +635,159 @@ GBool FileStream::fillBuf() {
   return gTrue;
 }
 
-void FileStream::setPos(int pos1) {
-  long size;
+void FileStream::setPos(Guint pos, int dir) {
+  Guint size;
 
-  if (pos1 >= 0) {
-    fseek(f, pos1, SEEK_SET);
-    bufPos = pos1;
+  if (dir >= 0) {
+#if HAVE_FSEEK64
+    fseek64(f, pos, SEEK_SET);
+#else
+    fseek(f, pos, SEEK_SET);
+#endif
+    bufPos = pos;
   } else {
+#if HAVE_FSEEK64
+    fseek64(f, 0, SEEK_END);
+    size = (Guint)ftell64(f);
+#else
     fseek(f, 0, SEEK_END);
-    size = ftell(f);
-    if (pos1 < -size)
-      pos1 = (int)(-size);
-    fseek(f, pos1, SEEK_END);
-    bufPos = (int)ftell(f);
+    size = (Guint)ftell(f);
+#endif
+    if (pos > size)
+      pos = (Guint)size;
+#ifdef __CYGWIN32__
+    //~ work around a bug in cygwin's implementation of fseek
+    rewind(f);
+#endif
+#if HAVE_FSEEK64
+    fseek64(f, -(int)pos, SEEK_END);
+    bufPos = (Guint)ftell64(f);
+#else
+    fseek(f, -(int)pos, SEEK_END);
+    bufPos = (Guint)ftell(f);
+#endif
   }
   bufPtr = bufEnd = buf;
 }
 
 void FileStream::moveStart(int delta) {
-  this->start += delta;
+  start += delta;
   bufPtr = bufEnd = buf;
   bufPos = start;
 }
 
+//------------------------------------------------------------------------
+// MemStream
+//------------------------------------------------------------------------
+
+MemStream::MemStream(char *bufA, Guint lengthA, Object *dictA):
+    BaseStream(dictA) {
+  buf = bufA;
+  needFree = gFalse;
+  length = lengthA;
+  bufEnd = buf + length;
+  bufPtr = buf;
+}
+
+MemStream::~MemStream() {
+  if (needFree) {
+    gfree(buf);
+  }
+}
+
+Stream *MemStream::makeSubStream(Guint start, GBool limited,
+                                Guint lengthA, Object *dictA) {
+  Guint newLength;
+
+  if (!limited || start + lengthA > length) {
+    newLength = length - start;
+  } else {
+    newLength = lengthA;
+  }
+  return new MemStream(buf + start, newLength, dictA);
+}
+
+void MemStream::reset() {
+  bufPtr = buf;
+#ifndef NO_DECRYPTION
+  if (decrypt) {
+    decrypt->reset();
+  }
+#endif
+}
+
+void MemStream::close() {
+}
+
+void MemStream::setPos(Guint pos, int dir) {
+  if (dir >= 0) {
+    if (pos > length) {
+      bufPtr = bufEnd;
+    } else {
+      bufPtr = buf + pos;
+    }
+  } else {
+    if (pos > length) {
+      bufPtr = buf;
+    } else {
+      bufPtr = bufEnd - pos;
+    }
+  }
+}
+
+void MemStream::moveStart(int delta) {
+  buf += delta;
+  bufPtr = buf;
+}
+
+#ifndef NO_DECRYPTION
+void MemStream::doDecryption(Guchar *fileKey, int keyLength,
+                            int objNum, int objGen) {
+  char *newBuf;
+  char *p, *q;
+
+  this->BaseStream::doDecryption(fileKey, keyLength, objNum, objGen);
+  if (decrypt) {
+    newBuf = (char *)gmalloc(bufEnd - buf);
+    for (p = buf, q = newBuf; p < bufEnd; ++p, ++q) {
+      *q = (char)decrypt->decryptByte((Guchar)*p);
+    }
+    bufEnd = newBuf + (bufEnd - buf);
+    bufPtr = newBuf + (bufPtr - buf);
+    buf = newBuf;
+    needFree = gTrue;
+  }
+}
+#endif
+
 //------------------------------------------------------------------------
 // EmbedStream
 //------------------------------------------------------------------------
 
-EmbedStream::EmbedStream(Stream *str, Object *dict):
-    BaseStream(dict) {
-  this->str = str;
+EmbedStream::EmbedStream(Stream *strA, Object *dictA):
+    BaseStream(dictA) {
+  str = strA;
 }
 
 EmbedStream::~EmbedStream() {
 }
 
-Stream *EmbedStream::makeSubStream(int start, int length, Object *dict) {
+Stream *EmbedStream::makeSubStream(Guint start, GBool limited,
+                                  Guint length, Object *dictA) {
   error(-1, "Internal: called makeSubStream() on EmbedStream");
   return NULL;
 }
 
-void EmbedStream::setPos(int pos) {
+void EmbedStream::setPos(Guint pos, int dir) {
   error(-1, "Internal: called setPos() on EmbedStream");
 }
 
-int EmbedStream::getStart() {
+Guint EmbedStream::getStart() {
   error(-1, "Internal: called getStart() on EmbedStream");
   return 0;
 }
 
-void EmbedStream::moveStart(int start) {
+void EmbedStream::moveStart(int delta) {
   error(-1, "Internal: called moveStart() on EmbedStream");
 }
 
@@ -676,8 +795,8 @@ void EmbedStream::moveStart(int start) {
 // ASCIIHexStream
 //------------------------------------------------------------------------
 
-ASCIIHexStream::ASCIIHexStream(Stream *str):
-    FilterStream(str) {
+ASCIIHexStream::ASCIIHexStream(Stream *strA):
+    FilterStream(strA) {
   buf = EOF;
   eof = gFalse;
 }
@@ -748,7 +867,9 @@ int ASCIIHexStream::lookChar() {
 GString *ASCIIHexStream::getPSFilter(char *indent) {
   GString *s;
 
-  s = str->getPSFilter(indent);
+  if (!(s = str->getPSFilter(indent))) {
+    return NULL;
+  }
   s->append(indent)->append("/ASCIIHexDecode filter\n");
   return s;
 }
@@ -761,8 +882,8 @@ GBool ASCIIHexStream::isBinary(GBool last) {
 // ASCII85Stream
 //------------------------------------------------------------------------
 
-ASCII85Stream::ASCII85Stream(Stream *str):
-    FilterStream(str) {
+ASCII85Stream::ASCII85Stream(Stream *strA):
+    FilterStream(strA) {
   index = n = 0;
   eof = gFalse;
 }
@@ -824,7 +945,9 @@ int ASCII85Stream::lookChar() {
 GString *ASCII85Stream::getPSFilter(char *indent) {
   GString *s;
 
-  s = str->getPSFilter(indent);
+  if (!(s = str->getPSFilter(indent))) {
+    return NULL;
+  }
   s->append(indent)->append("/ASCII85Decode filter\n");
   return s;
 }
@@ -837,15 +960,15 @@ GBool ASCII85Stream::isBinary(GBool last) {
 // LZWStream
 //------------------------------------------------------------------------
 
-LZWStream::LZWStream(Stream *str, int predictor1, int columns1, int colors1,
-                    int bits1, int early1):
-    FilterStream(str) {
-  if (predictor1 != 1) {
-    pred = new StreamPredictor(this, predictor1, columns1, colors1, bits1);
+LZWStream::LZWStream(Stream *strA, int predictor, int columns, int colors,
+                    int bits, int earlyA):
+    FilterStream(strA) {
+  if (predictor != 1) {
+    pred = new StreamPredictor(this, predictor, columns, colors, bits);
   } else {
     pred = NULL;
   }
-  early = early1;
+  early = earlyA;
   zPipe = NULL;
   bufPtr = bufEnd = buf;
 }
@@ -949,11 +1072,7 @@ void LZWStream::reset() {
     return;
   }
 #else // HAVE_POPEN
-#ifdef VMS
-  if (!system(zCmd->getCString())) {
-#else
-  if (system(zCmd->getCString())) {
-#endif
+  if (!executeCommand(zCmd->getCString())) {
     error(getPos(), "Couldn't execute '%s'", zCmd->getCString());
     unlink(zName->getCString());
     delete zName;
@@ -1139,7 +1258,9 @@ GString *LZWStream::getPSFilter(char *indent) {
   if (pred) {
     return NULL;
   }
-  s = str->getPSFilter(indent);
+  if (!(s = str->getPSFilter(indent))) {
+    return NULL;
+  }
   s->append(indent)->append("/LZWDecode filter\n");
   return s;
 }
@@ -1152,8 +1273,8 @@ GBool LZWStream::isBinary(GBool last) {
 // RunLengthStream
 //------------------------------------------------------------------------
 
-RunLengthStream::RunLengthStream(Stream *str):
-    FilterStream(str) {
+RunLengthStream::RunLengthStream(Stream *strA):
+    FilterStream(strA) {
   bufPtr = bufEnd = buf;
   eof = gFalse;
 }
@@ -1171,7 +1292,9 @@ void RunLengthStream::reset() {
 GString *RunLengthStream::getPSFilter(char *indent) {
   GString *s;
 
-  s = str->getPSFilter(indent);
+  if (!(s = str->getPSFilter(indent))) {
+    return NULL;
+  }
   s->append(indent)->append("/RunLengthDecode filter\n");
   return s;
 }
@@ -1210,17 +1333,17 @@ GBool RunLengthStream::fillBuf() {
 // CCITTFaxStream
 //------------------------------------------------------------------------
 
-CCITTFaxStream::CCITTFaxStream(Stream *str, int encoding, GBool endOfLine,
-                              GBool byteAlign, int columns, int rows,
-                              GBool endOfBlock, GBool black):
-    FilterStream(str) {
-  this->encoding = encoding;
-  this->endOfLine = endOfLine;
-  this->byteAlign = byteAlign;
-  this->columns = columns;
-  this->rows = rows;
-  this->endOfBlock = endOfBlock;
-  this->black = black;
+CCITTFaxStream::CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA,
+                              GBool byteAlignA, int columnsA, int rowsA,
+                              GBool endOfBlockA, GBool blackA):
+    FilterStream(strA) {
+  encoding = encodingA;
+  endOfLine = endOfLineA;
+  byteAlign = byteAlignA;
+  columns = columnsA;
+  rows = rowsA;
+  endOfBlock = endOfBlockA;
+  black = blackA;
   refLine = (short *)gmalloc((columns + 3) * sizeof(short));
   codingLine = (short *)gmalloc((columns + 2) * sizeof(short));
 
@@ -1274,7 +1397,7 @@ void CCITTFaxStream::reset() {
 int CCITTFaxStream::lookChar() {
   short code1, code2, code3;
   int a0New;
-#if 0 //~
+#if 0
   GBool err;
 #endif
   GBool gotEOL;
@@ -1287,7 +1410,7 @@ int CCITTFaxStream::lookChar() {
   }
 
   // read the next row
-#if 0 //~
+#if 0
   err = gFalse;
 #endif
   if (codingLine[a0] >= columns) {
@@ -1389,7 +1512,7 @@ int CCITTFaxStream::lookChar() {
          return EOF;
        default:
          error(getPos(), "Bad 2D code %04x in CCITTFax stream", code1);
-#if 0 //~
+#if 0
          err = gTrue;
          break;
 #else
@@ -1424,7 +1547,7 @@ int CCITTFaxStream::lookChar() {
 
     if (codingLine[a0] != columns) {
       error(getPos(), "CCITTFax row is wrong length (%d)", codingLine[a0]);
-#if 0 //~
+#if 0
       err = gTrue;
 #endif
     }
@@ -1484,7 +1607,7 @@ int CCITTFaxStream::lookChar() {
       }
     }
 
-#if 0 //~
+#if 0
     // This looks for an end-of-line marker after an error, however
     // some (most?) CCITT streams in PDF files don't use end-of-line
     // markers, and the just-plow-on technique works better in those
@@ -1720,7 +1843,9 @@ GString *CCITTFaxStream::getPSFilter(char *indent) {
   GString *s;
   char s1[50];
 
-  s = str->getPSFilter(indent);
+  if (!(s = str->getPSFilter(indent))) {
+    return NULL;
+  }
   s->append(indent)->append("<< ");
   if (encoding != 0) {
     sprintf(s1, "/K %d ", encoding);
@@ -1810,8 +1935,8 @@ static int dctZigZag[64] = {
   63
 };
 
-DCTStream::DCTStream(Stream *str):
-    FilterStream(str) {
+DCTStream::DCTStream(Stream *strA):
+    FilterStream(strA) {
   int i, j;
 
   width = height = 0;
@@ -2001,7 +2126,7 @@ GBool DCTStream::readMCURow() {
            pCr = rowBuf[2][y2][x1+x2] - 128;
            pR = ((pY << 16) + dctCrToR * pCr + 32768) >> 16;
            rowBuf[0][y2][x1+x2] = 255 - dctClip[dctClipOffset + pR];
-           pG = ((pY << 16) + dctCbToG * pCb + dctCrToG * pCr + 32678) >> 16;
+           pG = ((pY << 16) + dctCbToG * pCb + dctCrToG * pCr + 32768) >> 16;
            rowBuf[1][y2][x1+x2] = 255 - dctClip[dctClipOffset + pG];
            pB = ((pY << 16) + dctCbToB * pCb + 32768) >> 16;
            rowBuf[2][y2][x1+x2] = 255 - dctClip[dctClipOffset + pB];
@@ -2710,7 +2835,9 @@ int DCTStream::read16() {
 GString *DCTStream::getPSFilter(char *indent) {
   GString *s;
 
-  s = str->getPSFilter(indent);
+  if (!(s = str->getPSFilter(indent))) {
+    return NULL;
+  }
   s->append(indent)->append("<< >> /DCTDecode filter\n");
   return s;
 }
@@ -2792,11 +2919,11 @@ FlateDecode FlateStream::distDecode[flateMaxDistCodes] = {
   {13, 24577}
 };
 
-FlateStream::FlateStream(Stream *str, int predictor1, int columns1,
-                        int colors1, int bits1):
-    FilterStream(str) {
-  if (predictor1 != 1) {
-    pred = new StreamPredictor(this, predictor1, columns1, colors1, bits1);
+FlateStream::FlateStream(Stream *strA, int predictor, int columns,
+                        int colors, int bits):
+    FilterStream(strA) {
+  if (predictor != 1) {
+    pred = new StreamPredictor(this, predictor, columns, colors, bits);
   } else {
     pred = NULL;
   }
@@ -3224,8 +3351,8 @@ int FlateStream::getCodeWord(int bits) {
 // EOFStream
 //------------------------------------------------------------------------
 
-EOFStream::EOFStream(Stream *str):
-    FilterStream(str) {
+EOFStream::EOFStream(Stream *strA):
+    FilterStream(strA) {
 }
 
 EOFStream::~EOFStream() {
@@ -3236,9 +3363,9 @@ EOFStream::~EOFStream() {
 // FixedLengthEncoder
 //------------------------------------------------------------------------
 
-FixedLengthEncoder::FixedLengthEncoder(Stream *str, int length1):
-    FilterStream(str) {
-  length = length1;
+FixedLengthEncoder::FixedLengthEncoder(Stream *strA, int lengthA):
+    FilterStream(strA) {
+  length = lengthA;
   count = 0;
 }
 
@@ -3268,12 +3395,62 @@ int FixedLengthEncoder::lookChar() {
   return str->getChar();
 }
 
+//------------------------------------------------------------------------
+// ASCIIHexEncoder
+//------------------------------------------------------------------------
+
+ASCIIHexEncoder::ASCIIHexEncoder(Stream *strA):
+    FilterStream(strA) {
+  bufPtr = bufEnd = buf;
+  lineLen = 0;
+  eof = gFalse;
+}
+
+ASCIIHexEncoder::~ASCIIHexEncoder() {
+  if (str->isEncoder()) {
+    delete str;
+  }
+}
+
+void ASCIIHexEncoder::reset() {
+  str->reset();
+  bufPtr = bufEnd = buf;
+  lineLen = 0;
+  eof = gFalse;
+}
+
+void ASCIIHexEncoder::close() {
+}
+
+GBool ASCIIHexEncoder::fillBuf() {
+  static char *hex = "0123456789abcdef";
+  int c;
+
+  if (eof) {
+    return gFalse;
+  }
+  bufPtr = bufEnd = buf;
+  if ((c = str->getChar()) == EOF) {
+    *bufEnd++ = '>';
+    eof = gTrue;
+  } else {
+    if (lineLen >= 64) {
+      *bufEnd++ = '\n';
+      lineLen = 0;
+    }
+    *bufEnd++ = hex[(c >> 4) & 0x0f];
+    *bufEnd++ = hex[c & 0x0f];
+    lineLen += 2;
+  }
+  return gTrue;
+}
+
 //------------------------------------------------------------------------
 // ASCII85Encoder
 //------------------------------------------------------------------------
 
-ASCII85Encoder::ASCII85Encoder(Stream *str):
-    FilterStream(str) {
+ASCII85Encoder::ASCII85Encoder(Stream *strA):
+    FilterStream(strA) {
   bufPtr = bufEnd = buf;
   lineLen = 0;
   eof = gFalse;
@@ -3344,8 +3521,8 @@ GBool ASCII85Encoder::fillBuf() {
 // RunLengthEncoder
 //------------------------------------------------------------------------
 
-RunLengthEncoder::RunLengthEncoder(Stream *str):
-    FilterStream(str) {
+RunLengthEncoder::RunLengthEncoder(Stream *strA):
+    FilterStream(strA) {
   bufPtr = bufEnd = nextEnd = buf;
   eof = gFalse;
 }
index 50345bb03e91b6c0174f054dc1226224da4873ed..3319dccd109130118b85867757ab41f97ca03bc2 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Stream.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -78,8 +78,10 @@ public:
   // Get current position in file.
   virtual int getPos() = 0;
 
-  // Go to a position in the stream.
-  virtual void setPos(int pos1) = 0;
+  // Go to a position in the stream.  If <dir> is negative, the
+  // position is from the end of the file; otherwise the position is
+  // from the start of the file.
+  virtual void setPos(Guint pos, int dir = 0) = 0;
 
   // Get PostScript command for the filter(s).
   virtual GString *getPSFilter(char *indent);
@@ -116,20 +118,22 @@ private:
 class BaseStream: public Stream {
 public:
 
-  BaseStream(Object *dict);
+  BaseStream(Object *dictA);
   virtual ~BaseStream();
-  virtual Stream *makeSubStream(int start, int length, Object *dict) = 0;
-  virtual void setPos(int pos1) = 0;
+  virtual Stream *makeSubStream(Guint start, GBool limited,
+                               Guint length, Object *dict) = 0;
+  virtual void setPos(Guint pos, int dir = 0) = 0;
   virtual BaseStream *getBaseStream() { return this; }
   virtual Dict *getDict() { return dict.getDict(); }
 
   // Get/set position of first byte of stream within the file.
-  virtual int getStart() = 0;
+  virtual Guint getStart() = 0;
   virtual void moveStart(int delta) = 0;
 
 #ifndef NO_DECRYPTION
   // Set decryption for this stream.
-  void doDecryption(Guchar *fileKey, int objNum, int objGen);
+  virtual void doDecryption(Guchar *fileKey, int keyLength,
+                           int objNum, int objGen);
 #endif
 
 #ifndef NO_DECRYPTION
@@ -152,11 +156,11 @@ private:
 class FilterStream: public Stream {
 public:
 
-  FilterStream(Stream *str);
+  FilterStream(Stream *strA);
   virtual ~FilterStream();
   virtual void close();
   virtual int getPos() { return str->getPos(); }
-  virtual void setPos(int pos);
+  virtual void setPos(Guint pos, int dir = 0);
   virtual BaseStream *getBaseStream() { return str->getBaseStream(); }
   virtual Dict *getDict() { return str->getDict(); }
 
@@ -175,7 +179,7 @@ public:
   // Create an image stream object for an image with the specified
   // parameters.  Note that these are the actual image parameters,
   // which may be different from the predictor parameters.
-  ImageStream(Stream *str, int width, int nComps, int nBits);
+  ImageStream(Stream *strA, int widthA, int nCompsA, int nBitsA);
 
   ~ImageStream();
 
@@ -209,8 +213,8 @@ public:
 
   // Create a predictor object.  Note that the parameters are for the
   // predictor, and may not match the actual image parameters.
-  StreamPredictor(Stream *str, int predictor,
-                 int width, int nComps, int nBits);
+  StreamPredictor(Stream *strA, int predictorA,
+                 int widthA, int nCompsA, int nBitsA);
 
   ~StreamPredictor();
 
@@ -242,9 +246,11 @@ private:
 class FileStream: public BaseStream {
 public:
 
-  FileStream(FILE *f, int start, int length, Object *dict);
+  FileStream(FILE *fA, Guint startA, GBool limitedA,
+            Guint lengthA, Object *dictA);
   virtual ~FileStream();
-  virtual Stream *makeSubStream(int start, int length, Object *dict);
+  virtual Stream *makeSubStream(Guint startA, GBool limitedA,
+                               Guint lengthA, Object *dictA);
   virtual StreamKind getKind() { return strFile; }
   virtual void reset();
   virtual void close();
@@ -253,9 +259,9 @@ public:
   virtual int lookChar()
     { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
   virtual int getPos() { return bufPos + (bufPtr - buf); }
-  virtual void setPos(int pos1);
+  virtual void setPos(Guint pos, int dir = 0);
   virtual GBool isBinary(GBool last = gTrue) { return last; }
-  virtual int getStart() { return start; }
+  virtual Guint getStart() { return start; }
   virtual void moveStart(int delta);
 
 private:
@@ -263,13 +269,52 @@ private:
   GBool fillBuf();
 
   FILE *f;
-  int start;
-  int length;
+  Guint start;
+  GBool limited;
+  Guint length;
   char buf[fileStreamBufSize];
   char *bufPtr;
   char *bufEnd;
-  int bufPos;
+  Guint bufPos;
   int savePos;
+  GBool saved;
+};
+
+//------------------------------------------------------------------------
+// MemStream
+//------------------------------------------------------------------------
+
+class MemStream: public BaseStream {
+public:
+
+  MemStream(char *bufA, Guint lengthA, Object *dictA);
+  virtual ~MemStream();
+  virtual Stream *makeSubStream(Guint start, GBool limited,
+                               Guint lengthA, Object *dictA);
+  virtual StreamKind getKind() { return strWeird; }
+  virtual void reset();
+  virtual void close();
+  virtual int getChar()
+    { return (bufPtr < bufEnd) ? (*bufPtr++ & 0xff) : EOF; }
+  virtual int lookChar()
+    { return (bufPtr < bufEnd) ? (*bufPtr & 0xff) : EOF; }
+  virtual int getPos() { return bufPtr - buf; }
+  virtual void setPos(Guint pos, int dir = 0);
+  virtual GBool isBinary(GBool last = gTrue) { return last; }
+  virtual Guint getStart() { return 0; }
+  virtual void moveStart(int delta);
+#ifndef NO_DECRYPTION
+  virtual void doDecryption(Guchar *fileKey, int keyLength,
+                           int objNum, int objGen);
+#endif
+
+private:
+
+  char *buf;
+  Guint length;
+  GBool needFree;
+  char *bufEnd;
+  char *bufPtr;
 };
 
 //------------------------------------------------------------------------
@@ -285,17 +330,18 @@ private:
 class EmbedStream: public BaseStream {
 public:
 
-  EmbedStream(Stream *str, Object *dict);
+  EmbedStream(Stream *strA, Object *dictA);
   virtual ~EmbedStream();
-  virtual Stream *makeSubStream(int start, int length, Object *dict);
+  virtual Stream *makeSubStream(Guint start, GBool limited,
+                               Guint length, Object *dictA);
   virtual StreamKind getKind() { return str->getKind(); }
   virtual void reset() {}
   virtual int getChar() { return str->getChar(); }
   virtual int lookChar() { return str->lookChar(); }
   virtual int getPos() { return str->getPos(); }
-  virtual void setPos(int pos);
+  virtual void setPos(Guint pos, int dir = 0);
   virtual GBool isBinary(GBool last = gTrue) { return last; }
-  virtual int getStart();
+  virtual Guint getStart();
   virtual void moveStart(int delta);
 
 private:
@@ -310,7 +356,7 @@ private:
 class ASCIIHexStream: public FilterStream {
 public:
 
-  ASCIIHexStream(Stream *str);
+  ASCIIHexStream(Stream *strA);
   virtual ~ASCIIHexStream();
   virtual StreamKind getKind() { return strASCIIHex; }
   virtual void reset();
@@ -333,7 +379,7 @@ private:
 class ASCII85Stream: public FilterStream {
 public:
 
-  ASCII85Stream(Stream *str);
+  ASCII85Stream(Stream *strA);
   virtual ~ASCII85Stream();
   virtual StreamKind getKind() { return strASCII85; }
   virtual void reset();
@@ -358,8 +404,8 @@ private:
 class LZWStream: public FilterStream {
 public:
 
-  LZWStream(Stream *str, int predictor1, int columns1, int colors1,
-           int bits1, int early1);
+  LZWStream(Stream *strA, int predictor, int columns, int colors,
+           int bits, int earlyA);
   virtual ~LZWStream();
   virtual StreamKind getKind() { return strLZW; }
   virtual void reset();
@@ -394,7 +440,7 @@ private:
 class RunLengthStream: public FilterStream {
 public:
 
-  RunLengthStream(Stream *str);
+  RunLengthStream(Stream *strA);
   virtual ~RunLengthStream();
   virtual StreamKind getKind() { return strRunLength; }
   virtual void reset();
@@ -424,9 +470,9 @@ struct CCITTCodeTable;
 class CCITTFaxStream: public FilterStream {
 public:
 
-  CCITTFaxStream(Stream *str, int encoding, GBool endOfLine,
-                GBool byteAlign, int columns, int rows,
-                GBool endOfBlock, GBool black);
+  CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA,
+                GBool byteAlignA, int columnsA, int rowsA,
+                GBool endOfBlockA, GBool blackA);
   virtual ~CCITTFaxStream();
   virtual StreamKind getKind() { return strCCITTFax; }
   virtual void reset();
@@ -489,7 +535,7 @@ struct DCTHuffTable {
 class DCTStream: public FilterStream {
 public:
 
-  DCTStream(Stream *str);
+  DCTStream(Stream *strA);
   virtual ~DCTStream();
   virtual StreamKind getKind() { return strDCT; }
   virtual void reset();
@@ -573,8 +619,8 @@ struct FlateDecode {
 class FlateStream: public FilterStream {
 public:
 
-  FlateStream(Stream *str, int predictor1, int columns1,
-             int colors1, int bits1);
+  FlateStream(Stream *strA, int predictor, int columns,
+             int colors, int bits);
   virtual ~FlateStream();
   virtual StreamKind getKind() { return strFlate; }
   virtual void reset();
@@ -624,7 +670,7 @@ private:
 class EOFStream: public FilterStream {
 public:
 
-  EOFStream(Stream *str);
+  EOFStream(Stream *strA);
   virtual ~EOFStream();
   virtual StreamKind getKind() { return strWeird; }
   virtual void reset() {}
@@ -641,7 +687,7 @@ public:
 class FixedLengthEncoder: public FilterStream {
 public:
 
-  FixedLengthEncoder(Stream *str, int length1);
+  FixedLengthEncoder(Stream *strA, int lengthA);
   ~FixedLengthEncoder();
   virtual StreamKind getKind() { return strWeird; }
   virtual void reset();
@@ -658,6 +704,37 @@ private:
   int count;
 };
 
+//------------------------------------------------------------------------
+// ASCIIHexEncoder
+//------------------------------------------------------------------------
+
+class ASCIIHexEncoder: public FilterStream {
+public:
+
+  ASCIIHexEncoder(Stream *strA);
+  virtual ~ASCIIHexEncoder();
+  virtual StreamKind getKind() { return strWeird; }
+  virtual void reset();
+  virtual void close();
+  virtual int getChar()
+    { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
+  virtual int lookChar()
+    { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
+  virtual GString *getPSFilter(char *indent) { return NULL; }
+  virtual GBool isBinary(GBool last = gTrue) { return gFalse; }
+  virtual GBool isEncoder() { return gTrue; }
+
+private:
+
+  char buf[4];
+  char *bufPtr;
+  char *bufEnd;
+  int lineLen;
+  GBool eof;
+
+  GBool fillBuf();
+};
+
 //------------------------------------------------------------------------
 // ASCII85Encoder
 //------------------------------------------------------------------------
@@ -665,7 +742,7 @@ private:
 class ASCII85Encoder: public FilterStream {
 public:
 
-  ASCII85Encoder(Stream *str);
+  ASCII85Encoder(Stream *strA);
   virtual ~ASCII85Encoder();
   virtual StreamKind getKind() { return strWeird; }
   virtual void reset();
@@ -696,7 +773,7 @@ private:
 class RunLengthEncoder: public FilterStream {
 public:
 
-  RunLengthEncoder(Stream *str);
+  RunLengthEncoder(Stream *strA);
   virtual ~RunLengthEncoder();
   virtual StreamKind getKind() { return strWeird; }
   virtual void reset();
index a9a67b64e6b3b03d0f7412534fb5f5ba9464c075..7b79d8747fe4a9e8685244ae1045e344b4f6a42a 100644 (file)
@@ -2,26 +2,30 @@
 //
 // T1Font.cc
 //
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
 //========================================================================
 
 #ifdef __GNUC__
 #pragma implementation
 #endif
 
+#include <aconf.h>
+
 #if HAVE_T1LIB_H
 
 #include <math.h>
 #include <string.h>
 #include <X11/Xlib.h>
 #include "gmem.h"
-#include "FontEncoding.h"
+#include "GfxState.h"
 #include "T1Font.h"
 
 //------------------------------------------------------------------------
 
-T1FontEngine::T1FontEngine(Display *display, Visual *visual, int depth,
-                          Colormap colormap, GBool aa, GBool aaHigh):
-  SFontEngine(display, visual, depth, colormap)
+T1FontEngine::T1FontEngine(Display *displayA, Visual *visualA, int depthA,
+                          Colormap colormapA, GBool aaA, GBool aaHighA):
+  SFontEngine(displayA, visualA, depthA, colormapA)
 {
   static unsigned long grayVals[17] = {
     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
@@ -33,8 +37,8 @@ T1FontEngine::T1FontEngine(Display *display, Visual *visual, int depth,
                  T1_NO_AFM)) {
     return;
   }
-  this->aa = aa;
-  this->aaHigh = aaHigh;
+  aa = aaA;
+  aaHigh = aaHighA;
   if (aa) {
     T1_AASetBitsPerPixel(8);
     if (aaHigh) {
@@ -56,14 +60,19 @@ T1FontEngine::~T1FontEngine() {
 
 //------------------------------------------------------------------------
 
-T1FontFile::T1FontFile(T1FontEngine *engine, char *fontFileName,
-                      FontEncoding *fontEnc) {
+T1FontFile::T1FontFile(T1FontEngine *engineA, char *fontFileName,
+                      char **fontEnc, double *bboxA) {
   int encStrSize;
   char *encPtr;
   int i;
 
   ok = gFalse;
-  this->engine = engine;
+  engine = engineA;
+  enc = NULL;
+  encStr = NULL;
+  for (i = 0; i < 4; ++i) {
+    bbox[i] = bboxA[i];
+  }
 
   // load the font file
   if ((id = T1_AddFont(fontFileName)) < 0) {
@@ -73,26 +82,23 @@ T1FontFile::T1FontFile(T1FontEngine *engine, char *fontFileName,
 
   // reencode it
   encStrSize = 0;
-  for (i = 0; i < 256 && i < fontEnc->getSize(); ++i) {
-    if (fontEnc->getCharName(i)) {
-      encStrSize += strlen(fontEnc->getCharName(i)) + 1;
+  for (i = 0; i < 256; ++i) {
+    if (fontEnc[i]) {
+      encStrSize += strlen(fontEnc[i]) + 1;
     }
   }
   enc = (char **)gmalloc(257 * sizeof(char *));
   encStr = (char *)gmalloc(encStrSize * sizeof(char));
   encPtr = encStr;
-  for (i = 0; i < 256 && i < fontEnc->getSize(); ++i) {
-    if (fontEnc->getCharName(i)) {
-      strcpy(encPtr, fontEnc->getCharName(i));
+  for (i = 0; i < 256; ++i) {
+    if (fontEnc[i]) {
+      strcpy(encPtr, fontEnc[i]);
       enc[i] = encPtr;
       encPtr += strlen(encPtr) + 1;
     } else {
       enc[i] = ".notdef";
     }
   }
-  for (; i < 256; ++i) {
-    enc[i] = ".notdef";
-  }
   enc[256] = "custom";
   T1_ReencodeFont(id, enc);
 
@@ -102,21 +108,24 @@ T1FontFile::T1FontFile(T1FontEngine *engine, char *fontFileName,
 T1FontFile::~T1FontFile() {
   gfree(enc);
   gfree(encStr);
-  T1_DeleteFont(id);
+  if (id >= 0) {
+    T1_DeleteFont(id);
+  }
 }
 
 //------------------------------------------------------------------------
 
-T1Font::T1Font(T1FontFile *fontFile, double *m) {
+T1Font::T1Font(T1FontFile *fontFileA, double *m) {
   T1FontEngine *engine;
   T1_TMATRIX matrix;
   BBox bbox;
+  double bbx0, bby0, bbx1, bby1;
   int x, y, xMin, xMax, yMin, yMax;
   int i;
 
   ok = gFalse;
+  fontFile = fontFileA;
   engine = fontFile->engine;
-  this->fontFile = fontFile;
 
   id = T1_CopyFont(fontFile->id);
 
@@ -125,50 +134,73 @@ T1Font::T1Font(T1FontFile *fontFile, double *m) {
 
   // transform the four corners of the font bounding box -- the min
   // and max values form the bounding box of the transformed font
+  bbx0 = fontFile->bbox[0];
+  bby0 = fontFile->bbox[1];
+  bbx1 = fontFile->bbox[2];
+  bby1 = fontFile->bbox[3];
+  // some fonts in PDF files have bboxes which are just plain wrong,
+  // so we check the font file's bbox too
   bbox = T1_GetFontBBox(id);
-  x = (int)((m[0] * bbox.llx + m[2] * bbox.lly) * 0.001);
+  if (0.001 * bbox.llx < bbx0) {
+    bbx0 = 0.001 * bbox.llx;
+  }
+  if (0.001 * bbox.lly < bby0) {
+    bby0 = 0.001 * bbox.lly;
+  }
+  if (0.001 * bbox.urx > bbx1) {
+    bbx1 = 0.001 * bbox.urx;
+  }
+  if (0.001 * bbox.ury > bby1) {
+    bby1 = 0.001 * bbox.ury;
+  }
+  // some fonts are completely broken, so we fake it (with values
+  // large enough that most glyphs should fit)
+  if (bbx0 == 0 && bby0 == 0 && bbx1 == 0 && bby1 == 0) {
+    bbx0 = bby0 = -0.5;
+    bbx1 = bby1 = 1.5;
+  }
+  x = (int)(m[0] * bbx0 + m[2] * bby0);
   xMin = xMax = x;
-  y = (int)((m[1] * bbox.llx + m[3] * bbox.lly) * 0.001);
+  y = (int)(m[1] * bbx0 + m[3] * bby0);
   yMin = yMax = y;
-  x = (int)((m[0] * bbox.llx + m[2] * bbox.ury) * 0.001);
+  x = (int)(m[0] * bbx0 + m[2] * bby1);
   if (x < xMin) {
     xMin = x;
   } else if (x > xMax) {
     xMax = x;
   }
-  y = (int)((m[1] * bbox.llx + m[3] * bbox.ury) * 0.001);
+  y = (int)(m[1] * bbx0 + m[3] * bby1);
   if (y < yMin) {
     yMin = y;
   } else if (y > yMax) {
     yMax = y;
   }
-  x = (int)((m[0] * bbox.urx + m[2] * bbox.lly) * 0.001);
+  x = (int)(m[0] * bbx1 + m[2] * bby0);
   if (x < xMin) {
     xMin = x;
   } else if (x > xMax) {
     xMax = x;
   }
-  y = (int)((m[1] * bbox.urx + m[3] * bbox.lly) * 0.001);
+  y = (int)(m[1] * bbx1 + m[3] * bby0);
   if (y < yMin) {
     yMin = y;
   } else if (y > yMax) {
     yMax = y;
   }
-  x = (int)((m[0] * bbox.urx + m[2] * bbox.ury) * 0.001);
+  x = (int)(m[0] * bbx1 + m[2] * bby1);
   if (x < xMin) {
     xMin = x;
   } else if (x > xMax) {
     xMax = x;
   }
-  y = (int)((m[1] * bbox.urx + m[3] * bbox.ury) * 0.001);
+  y = (int)(m[1] * bbx1 + m[3] * bby1);
   if (y < yMin) {
     yMin = y;
   } else if (y > yMax) {
     yMax = y;
   }
-#if 1 //~
-  //~ This is a kludge: some buggy PDF generators embed fonts with
-  //~ zero bounding boxes.
+  // This is a kludge: some buggy PDF generators embed fonts with
+  // zero bounding boxes.
   if (xMax == xMin) {
     xMin = 0;
     xMax = (int)size;
@@ -177,7 +209,24 @@ T1Font::T1Font(T1FontFile *fontFile, double *m) {
     yMin = 0;
     yMax = (int)(1.2 * size);
   }
-#endif
+  // Another kludge: an unusually large xMin or yMin coordinate is
+  // probably wrong.
+  if (xMin > 0) {
+    xMin = 0;
+  }
+  if (yMin > 0) {
+    yMin = 0;
+  }
+  // Another kludge: t1lib doesn't correctly handle fonts with
+  // real (non-integer) bounding box coordinates.
+  if (xMax - xMin > 5000) {
+    xMin = 0;
+    xMax = (int)size;
+  }
+  if (yMax - yMin > 5000) {
+    yMin = 0;
+    yMax = (int)(1.2 * size);
+  }
   // this should be (max - min + 1), but we add some padding to
   // deal with rounding errors
   glyphW = xMax - xMin + 3;
@@ -235,7 +284,8 @@ T1Font::~T1Font() {
 }
 
 GBool T1Font::drawChar(Drawable d, int w, int h, GC gc,
-                      int x, int y, int r, int g, int b, Gushort c) {
+                      int x, int y, int r, int g, int b,
+                      CharCode c, Unicode u) {
   T1FontEngine *engine;
   XColor xcolor;
   int bgR, bgG, bgB;
@@ -292,7 +342,7 @@ GBool T1Font::drawChar(Drawable d, int w, int h, GC gc,
   if (engine->aa) {
 
     // compute the colors
-    xcolor.pixel = XGetPixel(image, x1, y1);
+    xcolor.pixel = XGetPixel(image, x1 + w0/2, y1 + h0/2);
     XQueryColor(engine->display, engine->colormap, &xcolor);
     bgR = xcolor.red;
     bgG = xcolor.green;
@@ -357,7 +407,7 @@ GBool T1Font::drawChar(Drawable d, int w, int h, GC gc,
   return gTrue;
 }
 
-Guchar *T1Font::getGlyphPixmap(Gushort c, int *x, int *y, int *w, int *h) {
+Guchar *T1Font::getGlyphPixmap(CharCode c, int *x, int *y, int *w, int *h) {
   T1FontEngine *engine;
   GLYPH *glyph;
   int gSize;
@@ -399,7 +449,7 @@ Guchar *T1Font::getGlyphPixmap(Gushort c, int *x, int *y, int *w, int *h) {
   *w = glyph->metrics.rightSideBearing - glyph->metrics.leftSideBearing;
   *h = glyph->metrics.ascent - glyph->metrics.descent;
   if (*w > glyphW || *h > glyphH) {
-#if 1 //~
+#if 1 //~ debug
     fprintf(stderr, "Weird t1lib glyph size: %d > %d or %d > %d\n",
            *w, glyphW, *h, glyphH);
 #endif
@@ -434,4 +484,41 @@ Guchar *T1Font::getGlyphPixmap(Gushort c, int *x, int *y, int *w, int *h) {
   return ret;
 }
 
+GBool T1Font::getCharPath(CharCode c, Unicode u, GfxState *state) {
+  T1_OUTLINE *outline;
+  T1_PATHSEGMENT *seg;
+  T1_BEZIERSEGMENT *bez;
+  double x, y, x1, y1;
+
+  outline = T1_GetCharOutline(id, c, size, NULL);
+  x = 0;
+  y = 0;
+  for (seg = outline; seg; seg = seg->link) {
+    switch (seg->type) {
+    case T1_PATHTYPE_MOVE:
+      x += seg->dest.x / 65536.0;
+      y += seg->dest.y / 65536.0;
+      state->moveTo(x, y);
+      break;
+    case T1_PATHTYPE_LINE:
+      x += seg->dest.x / 65536.0;
+      y += seg->dest.y / 65536.0;
+      state->lineTo(x, y);
+      break;
+    case T1_PATHTYPE_BEZIER:
+      bez = (T1_BEZIERSEGMENT *)seg;
+      x1 = x + bez->dest.x / 65536.0;
+      y1 = y + bez->dest.y / 65536.0;
+      state->curveTo(x + bez->B.x / 65536.0, y + bez->B.y / 65536.0,
+                    x + bez->C.x / 65536.0, y + bez->C.y / 65536.0,
+                    x1, y1);
+      x = x1;
+      y = y1;
+      break;
+    }
+  }
+  T1_FreeOutline(outline);
+  return gTrue;
+}
+
 #endif // HAVE_T1LIB_H
index 6c1e8f81f7af53f72986ee2739afda0862439b07..5215c3a6e8e0e69e4404750a029fdebb805a272c 100644 (file)
@@ -4,6 +4,8 @@
 //
 // An X wrapper for the t1lib Type 1 font rasterizer.
 //
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
 //========================================================================
 
 #ifndef T1FONT_H
 #include <t1lib.h>
 #include "SFont.h"
 
-class FontEncoding;
+class GfxState;
 
 //------------------------------------------------------------------------
 
 class T1FontEngine: public SFontEngine {
 public:
 
-  T1FontEngine(Display *display, Visual *visual, int depth,
-              Colormap colormap, GBool aa, GBool aaHigh);
+  T1FontEngine(Display *displayA, Visual *visualA, int depthA,
+              Colormap colormapA, GBool aaA, GBool aaHighA);
   GBool isOk() { return ok; }
   virtual ~T1FontEngine();
 
@@ -46,8 +48,8 @@ private:
 class T1FontFile: public SFontFile {
 public:
 
-  T1FontFile(T1FontEngine *engine, char *fontFileName,
-            FontEncoding *fontEnc);
+  T1FontFile(T1FontEngine *engineA, char *fontFileName,
+            char **fontEnc, double *bboxA);
   GBool isOk() { return ok; }
   virtual ~T1FontFile();
 
@@ -57,6 +59,7 @@ private:
   int id;                      // t1lib font ID
   char **enc;
   char *encStr;
+  double bbox[4];
   GBool ok;
 
   friend class T1Font;
@@ -73,15 +76,17 @@ struct T1FontCacheTag {
 class T1Font: public SFont {
 public:
 
-  T1Font(T1FontFile *fontFile, double *m);
+  T1Font(T1FontFile *fontFileA, double *m);
   GBool isOk() { return ok; }
   virtual ~T1Font();
   virtual GBool drawChar(Drawable d, int w, int h, GC gc,
-                        int x, int y, int r, int g, int b, Gushort c);
+                        int x, int y, int r, int g, int b,
+                        CharCode c, Unicode u);
+  virtual GBool getCharPath(CharCode c, Unicode u, GfxState *state);
 
 private:
 
-  Guchar *getGlyphPixmap(Gushort c, int *x, int *y, int *w, int *h);
+  Guchar *getGlyphPixmap(CharCode c, int *x, int *y, int *w, int *h);
 
   T1FontFile *fontFile;
   int id;
index e06e892ccbe6de2750cb7d24589ec13d86fdb9f6..ea3fad2223b4fe66ed4a3dbd9229e808854cbeed 100644 (file)
@@ -2,30 +2,35 @@
 //
 // TTFont.cc
 //
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
 //========================================================================
 
 #ifdef __GNUC__
 #pragma implementation
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#include <aconf.h>
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 
 #include <string.h>
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "TTFont.h"
 
 //------------------------------------------------------------------------
 
-TTFontEngine::TTFontEngine(Display *display, Visual *visual, int depth,
-                          Colormap colormap, GBool aa):
-  SFontEngine(display, visual, depth, colormap) {
+TTFontEngine::TTFontEngine(Display *displayA, Visual *visualA, int depthA,
+                          Colormap colormapA, GBool aaA):
+  SFontEngine(displayA, visualA, depthA, colormapA) {
   static TT_Byte ttPalette[5] = {0, 1, 2, 3, 4};
 
   ok = gFalse;
   if (TT_Init_FreeType(&engine)) {
     return;
   }
-  this->aa = aa;
+  aa = aaA;
   if (aa) {
     if (TT_Set_Raster_Gray_Palette(engine, ttPalette)) {
       return;
@@ -40,12 +45,16 @@ TTFontEngine::~TTFontEngine() {
 
 //------------------------------------------------------------------------
 
-TTFontFile::TTFontFile(TTFontEngine *engine, char *fontFileName) {
+TTFontFile::TTFontFile(TTFontEngine *engineA, char *fontFileName,
+                      char **fontEnc, GBool pdfFontHasEncoding) {
   TT_Face_Properties props;
+  TT_UShort unicodeCmap, macRomanCmap, msSymbolCmap;
   TT_UShort platform, encoding, i;
+  int j;
 
   ok = gFalse;
-  this->engine = engine;
+  engine = engineA;
+  codeMap = NULL;
   if (TT_Open_Face(engine->engine, fontFileName, &face)) {
     return;
   }
@@ -53,41 +62,91 @@ TTFontFile::TTFontFile(TTFontEngine *engine, char *fontFileName) {
     return;
   }
 
-  // Choose a cmap:
-  // 1. If the font contains a Windows-symbol cmap, use it.
-  // 2. Otherwise, use the first cmap in the TTF file.
-  // 3. If the Windows-Symbol cmap is used (from either step 1 or step
-  //    2), offset all character indexes by 0xf000.
-  // This seems to match what acroread does, but may need further
-  // tweaking.
+  // To match up with the Adobe-defined behaviour, we choose a cmap
+  // like this:
+  // 1. If the PDF font has an encoding:
+  //    1a. If the TrueType font has a Microsoft Unicode cmap, use it,
+  //        and use the Unicode indexes, not the char codes.
+  //    1b. If the TrueType font has a Macintosh Roman cmap, use it,
+  //        and reverse map the char names through MacRomanEncoding to
+  //        get char codes.
+  // 2. If the PDF font does not have an encoding:
+  //    2a. If the TrueType font has a Macintosh Roman cmap, use it,
+  //        and use char codes directly.
+  //    2b. If the TrueType font has a Microsoft Symbol cmap, use it,
+  //        and use (0xf000 + char code).
+  // 3. If none of these rules apply, use the first cmap and hope for
+  //    the best (this shouldn't happen).
+  unicodeCmap = macRomanCmap = msSymbolCmap = 0xffff;
   for (i = 0; i < props.num_CharMaps; ++i) {
     if (!TT_Get_CharMap_ID(face, i, &platform, &encoding)) {
-      if (platform == 3 && encoding == 0) {
-       break;
+      if (platform == 3 && encoding == 1) {
+       unicodeCmap = i;
+      } else if (platform == 1 && encoding == 0) {
+       macRomanCmap = i;
+      } else if (platform == 3 && encoding == 0) {
+       msSymbolCmap = i;
       }
     }
   }
-  if (i >= props.num_CharMaps) {
-    i = 0;
-    TT_Get_CharMap_ID(face, i, &platform, &encoding);
-  }
-  if (platform == 3 && encoding == 0) {
-    charMapOffset = 0xf000;
+  i = 0;
+  mode = ttFontModeCharCode;
+  charMapOffset = 0;
+  if (pdfFontHasEncoding) {
+    if (unicodeCmap != 0xffff) {
+      i = unicodeCmap;
+      mode = ttFontModeUnicode;
+    } else if (macRomanCmap != 0xffff) {
+      i = macRomanCmap;
+      mode = ttFontModeCodeMap;
+      codeMap = (Guchar *)gmalloc(256 * sizeof(Guchar));
+      for (j = 0; j < 256; ++j) {
+       if (fontEnc[j]) {
+         codeMap[j] = (Guchar)globalParams->getMacRomanCharCode(fontEnc[j]);
+       } else {
+         codeMap[j] = 0;
+       }
+      }
+    }
   } else {
-    charMapOffset = 0;
+    if (macRomanCmap != 0xffff) {
+      i = macRomanCmap;
+      mode = ttFontModeCharCode;
+    } else if (msSymbolCmap != 0xffff) {
+      i = msSymbolCmap;
+      mode = ttFontModeCharCodeOffset;
+      charMapOffset = 0xf000;
+    }
   }
   TT_Get_CharMap(face, i, &charMap);
 
   ok = gTrue;
 }
 
+TTFontFile::TTFontFile(TTFontEngine *engineA, char *fontFileName,
+                      Gushort *cidToGIDA, int cidToGIDLenA) {
+  ok = gFalse;
+  engine = engineA;
+  codeMap = NULL;
+  cidToGID = cidToGIDA;
+  cidToGIDLen = cidToGIDLenA;
+  if (TT_Open_Face(engine->engine, fontFileName, &face)) {
+    return;
+  }
+  mode = ttFontModeCIDToGIDMap;
+  ok = gTrue;
+}
+
 TTFontFile::~TTFontFile() {
   TT_Close_Face(face);
+  if (codeMap) {
+    gfree(codeMap);
+  }
 }
 
 //------------------------------------------------------------------------
 
-TTFont::TTFont(TTFontFile *fontFile, double *m) {
+TTFont::TTFont(TTFontFile *fontFileA, double *m) {
   TTFontEngine *engine;
   TT_Face_Properties props;
   TT_Instance_Metrics metrics;
@@ -96,7 +155,7 @@ TTFont::TTFont(TTFontFile *fontFile, double *m) {
   int i;
 
   ok = gFalse;
-  this->fontFile = fontFile;
+  fontFile = fontFileA;
   engine = fontFile->engine;
   if (TT_New_Instance(fontFile->face, &instance) ||
       TT_Set_Instance_Resolutions(instance, 72, 72) ||
@@ -220,7 +279,8 @@ TTFont::~TTFont() {
 }
 
 GBool TTFont::drawChar(Drawable d, int w, int h, GC gc,
-                      int x, int y, int r, int g, int b, Gushort c) {
+                      int x, int y, int r, int g, int b,
+                      CharCode c, Unicode u) {
   TTFontEngine *engine;
   XColor xcolor;
   int bgR, bgG, bgB;
@@ -269,14 +329,14 @@ GBool TTFont::drawChar(Drawable d, int w, int h, GC gc,
               ZPixmap, image, x1, y1);
 
   // generate the glyph pixmap
-  if (!getGlyphPixmap(c)) {
+  if (!getGlyphPixmap(c, u)) {
     return gFalse;
   }
 
   if (engine->aa) {
 
     // compute the colors
-    xcolor.pixel = XGetPixel(image, x1, y1);
+    xcolor.pixel = XGetPixel(image, x1 + w0/2, y1 + h0/2);
     XQueryColor(engine->display, engine->colormap, &xcolor);
     bgR = xcolor.red;
     bgG = xcolor.green;
@@ -333,7 +393,7 @@ GBool TTFont::drawChar(Drawable d, int w, int h, GC gc,
   return gTrue;
 }
 
-GBool TTFont::getGlyphPixmap(Gushort c) {
+GBool TTFont::getGlyphPixmap(CharCode c, Unicode u) {
   TT_UShort idx;
   TT_Outline outline;
   int i, j, k;
@@ -355,7 +415,38 @@ GBool TTFont::getGlyphPixmap(Gushort c) {
   }
 
   // generate the glyph pixmap or bitmap
-  idx = TT_Char_Index(fontFile->charMap, fontFile->charMapOffset + c);
+  idx = 0; // make gcc happy
+  switch (fontFile->mode) {
+  case ttFontModeUnicode:
+    idx = TT_Char_Index(fontFile->charMap, (TT_UShort)u);
+    break;
+  case ttFontModeCharCode:
+    idx = TT_Char_Index(fontFile->charMap, (TT_UShort)c);
+    break;
+  case ttFontModeCharCodeOffset:
+    idx = TT_Char_Index(fontFile->charMap,
+                       (TT_UShort)(c + fontFile->charMapOffset));
+    break;
+  case ttFontModeCodeMap:
+    if (c <= 0xff) {
+      idx = TT_Char_Index(fontFile->charMap,
+                         (TT_UShort)(fontFile->codeMap[c] & 0xff));
+    } else {
+      idx = 0;
+    }
+    break;
+  case ttFontModeCIDToGIDMap:
+    if (fontFile->cidToGIDLen) {
+      if ((int)c < fontFile->cidToGIDLen) {
+       idx = (TT_UShort)fontFile->cidToGID[c];
+      } else {
+       idx = (TT_UShort)0;
+      }
+    } else {
+      idx = (TT_UShort)c;
+    }
+    break;
+  }
   if (TT_Load_Glyph(instance, glyph, idx, TTLOAD_DEFAULT) ||
       TT_Get_Glyph_Outline(glyph, &outline)) {
     return gFalse;
@@ -386,4 +477,4 @@ GBool TTFont::getGlyphPixmap(Gushort c) {
   return gTrue;
 }
 
-#endif // HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#endif // !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
index 36196d29ce2cea5a3c439192497491eeb16ee966..b4ebd96e10c50fde7c2dfa71667d4a2c4ef3bf6b 100644 (file)
@@ -4,12 +4,14 @@
 //
 // An X wrapper for the FreeType TrueType font rasterizer.
 //
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
 //========================================================================
 
 #ifndef TTFONT_H
 #define TTFONT_H
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 
 #ifdef __GNUC__
 #pragma interface
@@ -22,6 +24,7 @@
 #include <freetype.h>
 #include <ftxpost.h>
 #endif
+#include "gtypes.h"
 #include "SFont.h"
 
 //------------------------------------------------------------------------
@@ -29,8 +32,8 @@
 class TTFontEngine: public SFontEngine {
 public:
 
-  TTFontEngine(Display *display, Visual *visual, int depth,
-              Colormap colormap, GBool aa);
+  TTFontEngine(Display *displayA, Visual *visualA, int depthA,
+              Colormap colormapA, GBool aaA);
   GBool isOk() { return ok; }
   virtual ~TTFontEngine();
 
@@ -47,10 +50,25 @@ private:
 
 //------------------------------------------------------------------------
 
+enum TTFontIndexMode {
+  ttFontModeUnicode,
+  ttFontModeCharCode,
+  ttFontModeCharCodeOffset,
+  ttFontModeCodeMap,
+  ttFontModeCIDToGIDMap
+};
+
 class TTFontFile: public SFontFile {
 public:
 
-  TTFontFile(TTFontEngine *engine, char *fontFileName);
+  // 8-bit font, TrueType or Type 1/1C
+  TTFontFile(TTFontEngine *engineA, char *fontFileName,
+            char **fontEnc, GBool pdfFontHasEncoding);
+
+  // CID font, TrueType
+  TTFontFile(TTFontEngine *engineA, char *fontFileName,
+            Gushort *cidToGIDA, int cidToGIDLenA);
+
   GBool isOk() { return ok; }
   virtual ~TTFontFile();
 
@@ -59,7 +77,11 @@ private:
   TTFontEngine *engine;
   TT_Face face;
   TT_CharMap charMap;
+  TTFontIndexMode mode;
   int charMapOffset;
+  Guchar *codeMap;
+  Gushort *cidToGID;
+  int cidToGIDLen;
   GBool ok;
 
   friend class TTFont;
@@ -75,15 +97,16 @@ struct TTFontCacheTag {
 class TTFont: public SFont {
 public:
 
-  TTFont(TTFontFile *fontFile, double *m);
+  TTFont(TTFontFile *fontFileA, double *m);
   GBool isOk() { return ok; }
   virtual ~TTFont();
   virtual GBool drawChar(Drawable d, int w, int h, GC gc,
-                        int x, int y, int r, int g, int b, Gushort c);
+                        int x, int y, int r, int g, int b,
+                        CharCode c, Unicode u);
 
 private:
 
-  GBool getGlyphPixmap(Gushort c);
+  GBool getGlyphPixmap(CharCode c, Unicode u);
 
   TTFontFile *fontFile;
   TT_Instance instance;
@@ -99,6 +122,6 @@ private:
   GBool ok;
 };
 
-#endif // HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#endif // !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 
 #endif
index 754049238ead3fbfed6512e52a67d4f9258d0264..5e5761fe04c4076e571ae2e2e32cbeb1662603f4 100644 (file)
@@ -2,7 +2,7 @@
 //
 // TextOutputDev.cc
 //
-// Copyright 1997 Derek B. Noonburg
+// Copyright 1997-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
+#include <math.h>
 #include <ctype.h>
 #include "GString.h"
 #include "gmem.h"
 #include "config.h"
 #include "Error.h"
+#include "GlobalParams.h"
+#include "UnicodeMap.h"
 #include "GfxState.h"
-#include "FontEncoding.h"
 #include "TextOutputDev.h"
 
 #ifdef MACOS
 #include "ICSupport.h"
 #endif
 
-#include "TextOutputFontInfo.h"
-
-//------------------------------------------------------------------------
-// Character substitutions
-//------------------------------------------------------------------------
-
-static char *generalSubstNames[] = {
-  "zerooldstyle",
-  "oneoldstyle",
-  "twooldstyle",
-  "threeoldstyle",
-  "fouroldstyle",
-  "fiveoldstyle",
-  "sixoldstyle",
-  "sevenoldstyle",
-  "eightoldstyle",
-  "nineoldstyle",
-  "oldstylezero",
-  "oldstyleone",
-  "oldstyletwo",
-  "oldstylethree",
-  "oldstylefour",
-  "oldstylefive",
-  "oldstylesix",
-  "oldstyleseven",
-  "oldstyleeight",
-  "oldstylenine"
-};
-
-static FontEncoding generalSubstEncoding(generalSubstNames,
-                                        sizeof(generalSubstNames) /
-                                          sizeof(char *));
-
-static char *generalSubst[] = {
-  "zero",
-  "one",
-  "two",
-  "three",
-  "four",
-  "five",
-  "six",
-  "seven",
-  "eight",
-  "nine",
-  "zero",
-  "one",
-  "two",
-  "three",
-  "four",
-  "five",
-  "six",
-  "seven",
-  "eight",
-  "nine"
-};
-
-static char *ascii7Subst[] = {
-  "A", "A", "A", "A",          // A{acute,circumflex,dieresis,grave}
-  "A", "A",                    // A{ring,tilde}
-  "AE",                                // AE
-  "C",                         // Ccedilla
-  "E", "E", "E", "E",          // E{acute,circumflex,dieresis,grave}
-  "I", "I", "I", "I",          // I{acute,circumflex,dieresis,grave}
-  "L",                         // Lslash
-  "N",                         // Ntilde
-  "O", "O", "O", "O",          // O{acute,circumflex,dieresis,grave}
-  "O", "O",                    // O{slash,tilde}
-  "OE",                                // OE
-  "S",                         // Scaron
-  "U", "U", "U", "U",          // U{acute,circumflex,dieresis,grave}
-  "Y", "Y",                    // T{acute,dieresis}
-  "Z",                         // Zcaron
-  "a", "a", "a", "a",          // a{acute,circumflex,dieresis,grave}
-  "a", "a",                    // a{ring,tilde}
-  "ae",                                // ae
-  "c",                         // ccedilla
-  "e", "e", "e", "e",          // e{acute,circumflex,dieresis,grave}
-  "fi", "fl",                  // ligatures
-  "ff", "ffi", "ffl",          // ligatures
-  "i",                         // dotlessi
-  "i", "i", "i", "i",          // i{acute,circumflex,dieresis,grave}
-  "l",                         // lslash
-  "n",                         // ntilde
-  "o", "o", "o", "o",          // o{acute,circumflex,dieresis,grave}
-  "o", "o",                    // o{slash,tilde}
-  "oe",                                // oe
-  "s",                         // scaron
-  "u", "u", "u", "u",          // u{acute,circumflex,dieresis,grave}
-  "y", "y",                    // t{acute,dieresis}
-  "z",                         // zcaron
-  "|",                         // brokenbar
-  "*",                         // bullet
-  "...",                       // ellipsis
-  "-", "-", "-",               // emdash, endash, hyphen
-  "\"", "\"",                  // quotedblleft, quotedblright
-  "'",                         // quotesingle
-  "(R)",                       // registered
-  "TM"                         // trademark
-};
-
-static char *isoLatin1Subst[] = {
-  "L",                         // Lslash
-  "OE",                                // OE
-  "S",                         // Scaron
-  "Y",                         // Ydieresis
-  "Z",                         // Zcaron
-  "fi", "fl",                  // ligatures
-  "ff", "ffi", "ffl",          // ligatures
-  "i",                         // dotlessi
-  "l",                         // lslash
-  "oe",                                // oe
-  "s",                         // scaron
-  "z",                         // zcaron
-  "*",                         // bullet
-  "...",                       // ellipsis
-  "-", "-",                    // emdash, hyphen
-  "\"", "\"",                  // quotedblleft, quotedblright
-  "'",                         // quotesingle
-  "TM"                         // trademark
-};
-
-static char *isoLatin2Subst[] = {
-  "fi", "fl",                  // ligatures
-  "ff", "ffi", "ffl",          // ligatures
-  "*",                         // bullet
-  "...",                       // ellipsis
-  "-", "-",                    // emdash, hyphen
-  "\"", "\"",                  // quotedblleft, quotedblright
-  "'",                         // quotesingle
-  "TM"                         // trademark
-};
-
-static char **isoLatin5Subst = isoLatin1Subst;
-
-//------------------------------------------------------------------------
-// 16-bit fonts
-//------------------------------------------------------------------------
-
-#if JAPANESE_SUPPORT
-
-// CID 0 .. 96
-static Gushort japan12Map[96] = {
-  0x2121, 0x2121, 0x212a, 0x2149, 0x2174, 0x2170, 0x2173, 0x2175, // 00 .. 07
-  0x2147, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x213e, 0x2123, // 08 .. 0f
-  0x213f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, // 10 .. 17
-  0x2337, 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, // 18 .. 1f
-  0x2129, 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, // 20 .. 27
-  0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, // 28 .. 2f
-  0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, // 30 .. 37
-  0x2357, 0x2358, 0x2359, 0x235a, 0x214e, 0x216f, 0x214f, 0x2130, // 38 .. 3f
-  0x2132, 0x2146, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, // 40 .. 47
-  0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, // 48 .. 4f
-  0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, // 50 .. 57
-  0x2377, 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2141  // 58 .. 5f
-};
-
-// CID 325 .. 421
-static Gushort japan12KanaMap1[97] = {
-  0x2131, 0x2121, 0x2123, 0x2156, 0x2157, 0x2122, 0x2126, 0x2572,
-  0x2521, 0x2523, 0x2525, 0x2527, 0x2529, 0x2563, 0x2565, 0x2567,
-  0x2543, 0x213c, 0x2522, 0x2524, 0x2526, 0x2528, 0x252a, 0x252b,
-  0x252d, 0x252f, 0x2531, 0x2533, 0x2535, 0x2537, 0x2539, 0x253b,
-  0x253d, 0x253f, 0x2541, 0x2544, 0x2546, 0x2548, 0x254a, 0x254b,
-  0x254c, 0x254d, 0x254e, 0x254f, 0x2552, 0x2555, 0x2558, 0x255b,
-  0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2564, 0x2566, 0x2568,
-  0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256f, 0x2573, 0x212b,
-  0x212c, 0x212e, 0x2570, 0x2571, 0x256e, 0x2575, 0x2576, 0x2574,
-  0x252c, 0x252e, 0x2530, 0x2532, 0x2534, 0x2536, 0x2538, 0x253a,
-  0x253c, 0x253e, 0x2540, 0x2542, 0x2545, 0x2547, 0x2549, 0x2550,
-  0x2551, 0x2553, 0x2554, 0x2556, 0x2557, 0x2559, 0x255a, 0x255c,
-  0x255d
-};
-
-// CID 501 .. 598
-static Gushort japan12KanaMap2[98] = {
-  0x212d, 0x212f, 0x216d, 0x214c, 0x214d, 0x2152, 0x2153, 0x2154,
-  0x2155, 0x2158, 0x2159, 0x215a, 0x215b, 0x213d, 0x2121, 0x2472,
-  0x2421, 0x2423, 0x2425, 0x2427, 0x2429, 0x2463, 0x2465, 0x2467,
-  0x2443, 0x2422, 0x2424, 0x2426, 0x2428, 0x242a, 0x242b, 0x242d,
-  0x242f, 0x2431, 0x2433, 0x2435, 0x2437, 0x2439, 0x243b, 0x243d,
-  0x243f, 0x2441, 0x2444, 0x2446, 0x2448, 0x244a, 0x244b, 0x244c,
-  0x244d, 0x244e, 0x244f, 0x2452, 0x2455, 0x2458, 0x245b, 0x245e,
-  0x245f, 0x2460, 0x2461, 0x2462, 0x2464, 0x2466, 0x2468, 0x2469,
-  0x246a, 0x246b, 0x246c, 0x246d, 0x246f, 0x2473, 0x2470, 0x2471,
-  0x246e, 0x242c, 0x242e, 0x2430, 0x2432, 0x2434, 0x2436, 0x2438,
-  0x243a, 0x243c, 0x243e, 0x2440, 0x2442, 0x2445, 0x2447, 0x2449,
-  0x2450, 0x2451, 0x2453, 0x2454, 0x2456, 0x2457, 0x2459, 0x245a,
-  0x245c, 0x245d
-};
-
-static char *japan12Roman[10] = {
-  "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"
-};
-
-static char *japan12Abbrev1[6] = {
-  "mm", "cm", "km", "mg", "kg", "cc"
-};
-
-#endif
-
-#if CHINESE_CNS_SUPPORT
-
-static Gushort cns13Map1[99] = {
-  // 0-98
-  0,      0xa140, 0xa149, 0xa1a8, 0xa1ad, 0xa243, 0xa248, 0xa1ae,
-  0xa1a6, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1df, 0xa144,
-  0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5,
-  0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6,
-  0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4,
-  0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc,
-  0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4,
-  0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa165, 0xa242, 0xa166, 0xa173,
-  0xa15a, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee,
-  0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6,
-  0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe,
-  0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa159, 0xa162, 0xa1e3,
-  0,      0,      0xa14b
-};
-
-static Gushort cns13Map2[95] = {
-  // 13648-13742
-          0xa140, 0xa149, 0xa1a8, 0xa1ad, 0xa244, 0xa248, 0xa1ae,
-  0xa1a6, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1df, 0xa144,
-  0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5,
-  0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6,
-  0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4,
-  0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc,
-  0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4,
-  0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa165, 0xa242, 0xa166, 0xa173,
-  0xa15a, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee,
-  0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6,
-  0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe,
-  0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa159, 0xa162, 0xa1c3
-};
-
-#endif
-
 //------------------------------------------------------------------------
 // TextString
 //------------------------------------------------------------------------
 
-TextString::TextString(GfxState *state, GBool hexCodes1) {
-  double x, y, h;
+TextString::TextString(GfxState *state, double fontSize) {
+  GfxFont *font;
+  double x, y;
 
   state->transform(state->getCurX(), state->getCurY(), &x, &y);
-  h = state->getTransformedFontSize();
-  //~ yMin/yMax computation should use font ascent/descent values
-  yMin = y - 0.95 * h;
-  yMax = yMin + 1.3 * h;
+  if ((font = state->getFont())) {
+    yMin = y - font->getAscent() * fontSize;
+    yMax = y - font->getDescent() * fontSize;
+  } else {
+    // this means that the PDF file draws text without a current font,
+    // which should never happen
+    yMin = y - 0.95 * fontSize;
+    yMax = y + 0.35 * fontSize;
+  }
+  if (yMin == yMax) {
+    // this is a sanity check for a case that shouldn't happen -- but
+    // if it does happen, we want to avoid dividing by zero later
+    yMin = y;
+    yMax = y + 1;
+  }
   col = 0;
-  text = new GString();
+  text = NULL;
   xRight = NULL;
+  len = size = 0;
   yxNext = NULL;
   xyNext = NULL;
-  hexCodes = hexCodes1;
 }
 
 TextString::~TextString() {
-  delete text;
+  gfree(text);
   gfree(xRight);
 }
 
 void TextString::addChar(GfxState *state, double x, double y,
-                        double dx, double dy,
-                        Guchar c, TextOutputCharSet charSet) {
-  char *charName, *sub;
-  int c1;
-  int i, j, n, m;
-
-  // get current index
-  i = text->getLength();
-
-  // append translated character(s) to string
-  sub = NULL;
-  n = 1;
-  if ((charName = state->getFont()->getCharName(c))) {
-    if ((c1 = generalSubstEncoding.getCharCode(charName)) >= 0) {
-      charName = generalSubst[c1];
-    }
-    switch (charSet) {
-    case textOutASCII7:
-      c1 = ascii7Encoding.getCharCode(charName);
-      break;
-    case textOutLatin1:
-      c1 = isoLatin1Encoding.getCharCode(charName);
-      break;
-    case textOutLatin2:
-      c1 = isoLatin2Encoding.getCharCode(charName);
-      break;
-    case textOutLatin5:
-      c1 = isoLatin5Encoding.getCharCode(charName);
-      break;
-    }
-    if (c1 < 0) {
-      m = strlen(charName);
-      if (hexCodes && m == 3 &&
-         (charName[0] == 'B' || charName[0] == 'C' ||
-          charName[0] == 'G') &&
-         isxdigit(charName[1]) && isxdigit(charName[2])) {
-       sscanf(charName+1, "%x", &c1);
-      } else if (hexCodes && m == 2 &&
-                isxdigit(charName[0]) && isxdigit(charName[1])) {
-       sscanf(charName, "%x", &c1);
-      } else if (!hexCodes && m >= 2 && m <= 3 &&
-                isdigit(charName[0]) && isdigit(charName[1])) {
-       c1 = atoi(charName);
-       if (c1 >= 256) {
-         c1 = -1;
-       }
-      } else if (m >= 3 && m <= 5 && isdigit(charName[1])) {
-       c1 = atoi(charName+1);
-       if (c1 >= 256) {
-         c1 = -1;
-       }
-      }
-      //~ this is a kludge -- is there a standard internal encoding
-      //~ used by all/most Type 1 fonts?
-      if (c1 == 262)           // hyphen
-       c1 = 45;
-      else if (c1 == 266)      // emdash
-       c1 = 208;
-      if (c1 >= 0) {
-       charName = isoLatin1Encoding.getCharName(c1);
-       if (charName) {
-         switch (charSet) {
-         case textOutASCII7:
-           c1 = ascii7Encoding.getCharCode(charName);
-           break;
-         case textOutLatin1:
-           // no translation
-           break;
-         case textOutLatin2:
-           c1 = isoLatin2Encoding.getCharCode(charName);
-           break;
-         case textOutLatin5:
-           c1 = isoLatin5Encoding.getCharCode(charName);
-           break;
-         }
-       } else {
-         c1 = -1;
-       }
-      }
-    }
-    switch (charSet) {
-      case textOutASCII7:
-       if (c1 >= 128) {
-         sub = ascii7Subst[c1 - 128];
-         n = strlen(sub);
-       }
-       break;
-      case textOutLatin1:
-       if (c1 >= 256) {
-         sub = isoLatin1Subst[c1 - 256];
-         n = strlen(sub);
-       }
-       break;
-      case textOutLatin2:
-       if (c1 >= 256) {
-         sub = isoLatin2Subst[c1 - 256];
-         n = strlen(sub);
-       }
-       break;
-      case textOutLatin5:
-       if (c1 >= 256) {
-         sub = isoLatin5Subst[c1 - 256];
-         n = strlen(sub);
-       }
-       break;
-    }
-  } else {
-    c1 = -1;
+                        double dx, double dy, Unicode u) {
+  if (len == size) {
+    size += 16;
+    text = (Unicode *)grealloc(text, size * sizeof(Unicode));
+    xRight = (double *)grealloc(xRight, size * sizeof(double));
   }
-  if (sub)
-    text->append(sub);
-  else if (c1 >= ' ')
-    text->append((char)c1);
-  else
-    text->append(' ');
-
-  // update position information
-  if (i+n > ((i+15) & ~15))
-    xRight = (double *)grealloc(xRight, ((i+n+15) & ~15) * sizeof(double));
-  if (i == 0)
+  text[len] = u;
+  if (len == 0) {
     xMin = x;
-  for (j = 0; j < n; ++j)
-    xRight[i+j] = x + ((j+1) * dx) / n;
-  xMax = x + dx;
-}
-
-void TextString::addChar16(GfxState *state, double x, double y,
-                          double dx, double dy,
-                          int c, GfxFontCharSet16 charSet) {
-  int c1, t1, t2;
-  int sub[8];
-  char *p;
-  int *q;
-  int i, j, n;
-
-  // get current index
-  i = text->getLength();
-
-  // convert the 16-bit character
-  c1 = 0;
-  sub[0] = 0;
-  switch (charSet) {
-
-  // convert Adobe-Japan1-2 to JIS X 0208-1983
-  case font16AdobeJapan12:
-#if JAPANESE_SUPPORT
-    if (c <= 96) {
-      c1 = 0x8080 + japan12Map[c];
-    } else if (c <= 632) {
-      if (c <= 230)
-       c1 = 0;
-      else if (c <= 324)
-       c1 = 0x8080 + japan12Map[c - 230];
-      else if (c <= 421)
-       c1 = 0x8080 + japan12KanaMap1[c - 325];
-      else if (c <= 500)
-       c1 = 0;
-      else if (c <= 598)
-       c1 = 0x8080 + japan12KanaMap2[c - 501];
-      else
-       c1 = 0;
-    } else if (c <= 1124) {
-      if (c <= 779) {
-       if (c <= 726)
-         c1 = 0xa1a1 + (c - 633);
-       else if (c <= 740)
-         c1 = 0xa2a1 + (c - 727);
-       else if (c <= 748)
-         c1 = 0xa2ba + (c - 741);
-       else if (c <= 755)
-         c1 = 0xa2ca + (c - 749);
-       else if (c <= 770)
-         c1 = 0xa2dc + (c - 756);
-       else if (c <= 778)
-         c1 = 0xa2f2 + (c - 771);
-       else
-         c1 = 0xa2fe;
-      } else if (c <= 841) {
-       if (c <= 789)
-         c1 = 0xa3b0 + (c - 780);
-       else if (c <= 815)
-         c1 = 0xa3c1 + (c - 790);
-       else
-         c1 = 0xa3e1 + (c - 816);
-      } else if (c <= 1010) {
-       if (c <= 924)
-         c1 = 0xa4a1 + (c - 842);
-       else
-         c1 = 0xa5a1 + (c - 925);
-      } else {
-       if (c <= 1034)
-         c1 = 0xa6a1 + (c - 1011);
-       else if (c <= 1058)
-         c1 = 0xa6c1 + (c - 1035);
-       else if (c <= 1091)
-         c1 = 0xa7a1 + (c - 1059);
-       else
-         c1 = 0xa7d1 + (c - 1092);
-      }
-    } else if (c <= 4089) {
-      t1 = (c - 1125) / 94;
-      t2 = (c - 1125) % 94;
-      c1 = 0xb0a1 + (t1 << 8) + t2;
-    } else if (c <= 7477) {
-      t1 = (c - 4090) / 94;
-      t2 = (c - 4090) % 94;
-      c1 = 0xd0a1 + (t1 << 8) + t2;
-    } else if (c <= 7554) {
-      c1 = 0;
-    } else if (c <= 7563) {    // circled Arabic numbers 1..9
-      c1 = 0xa3b1 + (c - 7555);
-    } else if (c <= 7574) {    // circled Arabic numbers 10..20
-      t1 = c - 7564 + 10;
-      sub[0] = 0xa3b0 + (t1 / 10);
-      sub[1] = 0xa3b0 + (t1 % 10);
-      sub[2] = 0;
-      c1 = -1;
-    } else if (c <= 7584) {    // Roman numbers I..X
-      for (p = japan12Roman[c - 7575], q = sub; *p; ++p, ++q) {
-       *q = 0xa380 + *p;
-      }
-      *q = 0;
-      c1 = -1;
-    } else if (c <= 7632) {
-      if (c <= 7600) {
-       c1 = 0;
-      } else if (c <= 7606) {
-       for (p = japan12Abbrev1[c - 7601], q = sub; *p; ++p, ++q) {
-         *q = 0xa380 + *p;
-       }
-       *q = 0;
-       c1 = -1;
-      } else {
-       c1 = 0;
-      }
-    } else {
-      c1 = 0;
-    }
-#if 0 //~
-    if (c1 == 0) {
-      error(-1, "Unsupported Adobe-Japan1-2 character: %d", c);
-    }
-#endif
-#endif // JAPANESE_SUPPORT
-    break;
-
-  case font16AdobeGB12:
-#if CHINESE_GB_SUPPORT
-#endif
-    break;
-
-  case font16AdobeCNS13:
-#if CHINESE_CNS_SUPPORT
-    if (c <= 98) {
-      c1 = cns13Map1[c];
-    } else if (c <= 502) {
-      if (c == 247) {
-       c1 = 0xa1f7;
-      } else if (c == 248) {
-       c1 = 0xa1f6;
-      } else {
-       t1 = (c - 99) / 157;
-       t2 = (c - 99) % 157;
-       if (t2 <= 62) {
-         c1 = 0xa140 + (t1 << 8) + t2;
-       } else {
-         c1 = 0xa162 + (t1 << 8) + t2;
-       }
-      }
-    } else if (c <= 505) {
-      c1 = 0xa3bd + (c - 503);
-    } else if (c <= 594) {
-      c1 = 0;
-    } else if (c <= 5995) {
-      if (c == 2431) {
-       c1 = 0xacfe;
-      } else if (c == 4308) {
-       c1 = 0xbe52;
-      } else if (c == 5221) {
-       c1 = 0xc2cb;
-      } else if (c == 5495) {
-       c1 = 0xc456;
-      } else if (c == 5550) {
-       c1 = 0xc3ba;
-      } else if (c == 5551) {
-       c1 = 0xc3b9;
-      } else {
-       if (c >= 2007 && c <= 2430) {
-         t1 = c - 594;
-       } else if (c >= 4309 && c <= 4695) {
-         t1 = c - 596;
-       } else if (c >= 5222 && c <= 5410) {
-         t1 = c - 596;
-       } else if (c >= 5496 && c <= 5641) {
-         t1 = c - 596;
-       } else {
-         t1 = c - 595;
-       }
-       t2 = t1 % 157;
-       t1 /= 157;
-       if (t2 <= 62) {
-         c1 = 0xa440 + (t1 << 8) + t2;
-       } else {
-         c1 = 0xa462 + (t1 << 8) + t2;
-       }
-      }
-    } else if (c <= 13645) {
-      if (c == 6039) {
-       c1 = 0xc9be;
-      } else if (c == 6134) {
-       c1 = 0xcaf7;
-      } else if (c == 8142) {
-       c1 = 0xdadf;
-      } else if (c == 8788) {
-       c1 = 0xd6cc;
-      } else if (c == 8889) {
-       c1 = 0xd77a;
-      } else if (c == 10926) {
-       c1 = 0xebf1;
-      } else if (c == 11073) {
-       c1 = 0xecde;
-      } else if (c == 11361) {
-       c1 = 0xf0cb;
-      } else if (c == 11719) {
-       c1 = 0xf056;
-      } else if (c == 12308) {
-       c1 = 0xeeeb;
-      } else if (c == 12526) {
-       c1 = 0xf4b5;
-      } else if (c == 12640) {
-       c1 = 0xf16b;
-      } else if (c == 12783) {
-       c1 = 0xf268;
-      } else if (c == 12900) {
-       c1 = 0xf663;
-      } else if (c == 13585) {
-       c1 = 0xf9c4;
-      } else if (c == 13641) {
-       c1 = 0xf9c6;
-      } else {
-       if (c >= 6006 && c <= 6038) {
-         t1 = c - 5995;
-       } else if (c >= 6088 && c <= 6133) {
-         t1 = c - 5995;
-       } else if (c >= 6302 && c <= 8250) {
-         t1 = c - 5995;
-       } else if (c >= 8251 && c <= 8888) {
-         t1 = c - 5994;
-       } else if (c >= 8890 && c <= 9288) {
-         t1 = c - 5995;
-       } else if (c >= 9289 && c <= 10925) {
-         t1 = c - 5994;
-       } else if (c >= 10927 && c <= 11072) {
-         t1 = c - 5995;
-       } else if (c >= 11362 && c <= 11477) {
-         t1 = c - 5997;
-       } else if (c >= 11615 && c <= 11718) {
-         t1 = c - 5995;
-       } else if (c >= 11942 && c <= 12139) {
-         t1 = c - 5995;
-       } else if (c >= 12140 && c <= 12221) {
-         t1 = c - 5994;
-       } else if (c >= 12222 && c <= 12307) {
-         t1 = c - 5993;
-       } else if (c >= 12309 && c <= 12316) {
-         t1 = c - 5994;
-       } else if (c >= 12317 && c <= 12469) {
-         t1 = c - 5993;
-       } else if (c >= 12470 && c <= 12525) {
-         t1 = c - 5992;
-       } else if (c >= 12527 && c <= 12639) {
-         t1 = c - 5993;
-       } else if (c >= 12641 && c <= 12782) {
-         t1 = c - 5994;
-       } else if (c >= 12784 && c <= 12828) {
-         t1 = c - 5995;
-       } else if (c >= 12829 && c <= 12899) {
-         t1 = c - 5994;
-       } else if (c >= 12901 && c <= 13094) {
-         t1 = c - 5995;
-       } else if (c >= 13095 && c <= 13584) {
-         t1 = c - 5994;
-       } else if (c >= 13586 && c <= 13628) {
-         t1 = c - 5995;
-       } else if (c == 13629) {
-         t1 = c - 5994;
-       } else if (c >= 13630 && c <= 13640) {
-         t1 = c - 5993;
-       } else if (c >= 13642 && c <= 13645) {
-         t1 = c - 5994;
-       } else {
-         t1 = c - 5996;
-       }
-       t2 = t1 % 157;
-       t1 /= 157;
-       if (t2 <= 62) {
-         c1 = 0xc940 + (t1 << 8) + t2;
-       } else {
-         c1 = 0xc962 + (t1 << 8) + t2;
-       }
-      }
-    } else if (c == 13646) {
-      c1 = 0xa14b;
-    } else if (c == 13647) {
-      c1 = 0xa1e3;
-    } else if (c <= 13742) {
-      c1 = cns13Map2[c - 13648];
-    } else if (c <= 13746) {
-      c1 = 0xa159 + (c - 13743);
-    } else if (c <= 14055) {
-      c1 = 0;
-    } else if (c <= 14062) {
-      c1 = 0xf9d6 + (c - 14056);
-    }
-#if 1 //~
-    if (c1 == 0) {
-      error(-1, "Unsupported Adobe-CNS1-3 character: %d", c);
-    }
-#endif
-#endif
-    break;
   }
-
-  // append converted character to string
-  if (c1 == 0) {
-    text->append(' ');
-    n = 1;
-  } else if (c1 > 0) {
-    text->append(c1 >> 8);
-    text->append(c1 & 0xff);
-    n = 2;
-  } else {
-    n = 0;
-    for (q = sub; *q; ++q) {
-      text->append(*q >> 8);
-      text->append(*q & 0xff);
-      n += 2;
-    }
-  }
-
-  // update position information
-  if (i+n > ((i+15) & ~15)) {
-    xRight = (double *)grealloc(xRight, ((i+n+15) & ~15) * sizeof(double));
-  }
-  if (i == 0) {
-    xMin = x;
-  }
-  for (j = 0; j < n; ++j) {
-    xRight[i+j] = x + dx;
-  }
-  xMax = x + dx;
+  xMax = xRight[len] = x + dx;
+  ++len;
 }
 
 //------------------------------------------------------------------------
 // TextPage
 //------------------------------------------------------------------------
 
-TextPage::TextPage(TextOutputCharSet charSet, GBool rawOrder) {
-  this->charSet = charSet;
-  this->rawOrder = rawOrder;
+TextPage::TextPage(GBool rawOrderA) {
+  rawOrder = rawOrderA;
   curStr = NULL;
+  fontSize = 0;
   yxStrings = NULL;
   xyStrings = NULL;
   yxCur1 = yxCur2 = NULL;
@@ -761,7 +100,43 @@ TextPage::~TextPage() {
   clear();
 }
 
-void TextPage::beginString(GfxState *state, GString *s, GBool hexCodes) {
+void TextPage::updateFont(GfxState *state) {
+  GfxFont *font;
+  double *fm;
+  char *name;
+  int code;
+  double w;
+
+  // adjust the font size
+  fontSize = state->getTransformedFontSize();
+  if ((font = state->getFont()) && font->getType() == fontType3) {
+    // This is a hack which makes it possible to deal with some Type 3
+    // fonts.  The problem is that it's impossible to know what the
+    // base coordinate system used in the font is without actually
+    // rendering the font.  This code tries to guess by looking at the
+    // width of the character 'm' (which breaks if the font is a
+    // subset that doesn't contain 'm').
+    for (code = 0; code < 256; ++code) {
+      if ((name = ((Gfx8BitFont *)font)->getCharName(code)) &&
+         name[0] == 'm' && name[1] == '\0') {
+       break;
+      }
+    }
+    if (code < 256) {
+      w = ((Gfx8BitFont *)font)->getWidth(code);
+      if (w != 0) {
+       // 600 is a generic average 'm' width -- yes, this is a hack
+       fontSize *= w / 0.6;
+      }
+    }
+    fm = font->getFontMatrix();
+    if (fm[0] != 0) {
+      fontSize *= fabs(fm[3] / fm[0]);
+    }
+  }
+}
+
+void TextPage::beginString(GfxState *state) {
   // This check is needed because Type 3 characters can contain
   // text-drawing operations.
   if (curStr) {
@@ -769,56 +144,41 @@ void TextPage::beginString(GfxState *state, GString *s, GBool hexCodes) {
     return;
   }
 
-  curStr = new TextString(state, hexCodes);
+  curStr = new TextString(state, fontSize);
 }
 
 void TextPage::addChar(GfxState *state, double x, double y,
-                      double dx, double dy, Guchar c) {
+                      double dx, double dy, Unicode *u, int uLen) {
   double x1, y1, w1, h1, dx2, dy2;
-  int n;
-  GBool hexCodes;
+  int n, i;
 
   state->transform(x, y, &x1, &y1);
-  state->textTransformDelta(state->getCharSpace(), 0, &dx2, &dy2);
-  dx -= dx2;
-  dy -= dy2;
-  state->transformDelta(dx, dy, &w1, &h1);
-  n = curStr->text->getLength();
+  n = curStr->len;
   if (n > 0 &&
       x1 - curStr->xRight[n-1] > 0.1 * (curStr->yMax - curStr->yMin)) {
-    hexCodes = curStr->hexCodes;
     endString();
-    beginString(state, NULL, hexCodes);
+    beginString(state);
   }
-  curStr->addChar(state, x1, y1, w1, h1, c, charSet);
-}
-
-void TextPage::addChar16(GfxState *state, double x, double y,
-                        double dx, double dy, int c,
-                        GfxFontCharSet16 charSet) {
-  double x1, y1, w1, h1, dx2, dy2;
-  int n;
-  GBool hexCodes;
-
-  state->transform(x, y, &x1, &y1);
-  state->textTransformDelta(state->getCharSpace(), 0, &dx2, &dy2);
+  state->textTransformDelta(state->getCharSpace() * state->getHorizScaling(),
+                           0, &dx2, &dy2);
   dx -= dx2;
   dy -= dy2;
   state->transformDelta(dx, dy, &w1, &h1);
-  n = curStr->text->getLength();
-  if (n > 0 &&
-      x1 - curStr->xRight[n-1] > 0.1 * (curStr->yMax - curStr->yMin)) {
-    hexCodes = curStr->hexCodes;
-    endString();
-    beginString(state, NULL, hexCodes);
+  if (uLen != 0) {
+    w1 /= uLen;
+    h1 /= uLen;
+  }
+  for (i = 0; i < uLen; ++i) {
+    curStr->addChar(state, x1 + i*w1, y1 + i*h1, w1, h1, u[i]);
   }
-  curStr->addChar16(state, x1, y1, w1, h1, c, charSet);
 }
 
 void TextPage::endString() {
   TextString *p1, *p2;
   double h, y1, y2;
 
+  // This check is needed because Type 3 characters can contain
+  // text-drawing operations.
   if (nest > 0) {
     --nest;
     return;
@@ -826,7 +186,7 @@ void TextPage::endString() {
 
   // throw away zero-length strings -- they don't have valid xMin/xMax
   // values, and they're useless anyway
-  if (curStr->text->getLength() == 0) {
+  if (curStr->len == 0) {
     delete curStr;
     curStr = NULL;
     return;
@@ -849,16 +209,18 @@ void TextPage::endString() {
     p2 = yxCur2;
   } else {
     for (p1 = NULL, p2 = yxStrings; p2; p1 = p2, p2 = p2->yxNext) {
-      if (y1 < p2->yMin || (y2 < p2->yMax && curStr->xMax < p2->xMin))
+      if (y1 < p2->yMin || (y2 < p2->yMax && curStr->xMax < p2->xMin)) {
        break;
+      }
     }
     yxCur2 = p2;
   }
   yxCur1 = curStr;
-  if (p1)
+  if (p1) {
     p1->yxNext = curStr;
-  else
+  } else {
     yxStrings = curStr;
+  }
   curStr->yxNext = p2;
   curStr = NULL;
 }
@@ -866,13 +228,18 @@ void TextPage::endString() {
 void TextPage::coalesce() {
   TextString *str1, *str2;
   double space, d;
+  GBool addSpace;
   int n, i;
 
 #if 0 //~ for debugging
   for (str1 = yxStrings; str1; str1 = str1->yxNext) {
-    printf("x=%3d..%3d  y=%3d..%3d  size=%2d '%s'\n",
+    printf("x=%3d..%3d  y=%3d..%3d  size=%2d '",
           (int)str1->xMin, (int)str1->xMax, (int)str1->yMin, (int)str1->yMax,
-          (int)(str1->yMax - str1->yMin), str1->text->getCString());
+          (int)(str1->yMax - str1->yMin));
+    for (i = 0; i < str1->len; ++i) {
+      fputc(str1->text[i] & 0xff, stdout);
+    }
+    printf("'\n");
   }
   printf("\n------------------------------------------------------------\n\n");
 #endif
@@ -885,21 +252,31 @@ void TextPage::coalesce() {
           (str2->yMax >= str1->yMin && str2->yMax <= str1->yMax))) ||
         (!rawOrder && str2->yMin < str1->yMax)) &&
        d > -0.5 * space && d < space) {
-      n = str1->text->getLength();
-      if (d > 0.1 * space)
-       str1->text->append(' ');
-      str1->text->append(str2->text);
-      str1->xRight = (double *)
-       grealloc(str1->xRight,
-                ((str1->text->getLength() + 15) & ~15) * sizeof(double));
-      if (d > 0.1 * space)
-       str1->xRight[n++] = str2->xMin;
-      for (i = 0; i < str2->text->getLength(); ++i)
-       str1->xRight[n++] = str2->xRight[i];
-      if (str2->xMax > str1->xMax)
+      n = str1->len + str2->len;
+      if ((addSpace = d > 0.1 * space)) {
+       ++n;
+      }
+      str1->size = (n + 15) & ~15;
+      str1->text = (Unicode *)grealloc(str1->text,
+                                      str1->size * sizeof(Unicode));
+      str1->xRight = (double *)grealloc(str1->xRight,
+                                       str1->size * sizeof(double));
+      if (addSpace) {
+       str1->text[str1->len] = 0x20;
+       str1->xRight[str1->len] = str2->xMin;
+       ++str1->len;
+      }
+      for (i = 0; i < str2->len; ++i) {
+       str1->text[str1->len] = str2->text[i];
+       str1->xRight[str1->len] = str2->xRight[i];
+       ++str1->len;
+      }
+      if (str2->xMax > str1->xMax) {
        str1->xMax = str2->xMax;
-      if (str2->yMax > str1->yMax)
+      }
+      if (str2->yMax > str1->yMax) {
        str1->yMax = str2->yMax;
+      }
       str1->yxNext = str2->yxNext;
       delete str2;
     } else {
@@ -908,56 +285,75 @@ void TextPage::coalesce() {
   }
 }
 
-GBool TextPage::findText(char *s, GBool top, GBool bottom,
+GBool TextPage::findText(Unicode *s, int len,
+                        GBool top, GBool bottom,
                         double *xMin, double *yMin,
                         double *xMax, double *yMax) {
   TextString *str;
-  char *p, *p1, *q;
-  int n, m, i;
+  Unicode *p;
+  Unicode u1, u2;
+  int m, i, j;
   double x;
 
   // scan all strings on page
-  n = strlen(s);
   for (str = yxStrings; str; str = str->yxNext) {
 
     // check: above top limit?
     if (!top && (str->yMax < *yMin ||
-                (str->yMin < *yMin && str->xMax <= *xMin)))
+                (str->yMin < *yMin && str->xMax <= *xMin))) {
       continue;
+    }
 
     // check: below bottom limit?
     if (!bottom && (str->yMin > *yMax ||
-                   (str->yMax > *yMax && str->xMin >= *xMax)))
+                   (str->yMax > *yMax && str->xMin >= *xMax))) {
       return gFalse;
+    }
 
     // search each position in this string
-    m = str->text->getLength();
-    for (i = 0, p = str->text->getCString(); i <= m - n; ++i, ++p) {
+    m = str->len;
+    for (i = 0, p = str->text; i <= m - len; ++i, ++p) {
 
       // check: above top limit?
       if (!top && str->yMin < *yMin) {
        x = (((i == 0) ? str->xMin : str->xRight[i-1]) + str->xRight[i]) / 2;
-       if (x < *xMin)
+       if (x < *xMin) {
          continue;
+       }
       }
 
       // check: below bottom limit?
       if (!bottom && str->yMax > *yMax) {
        x = (((i == 0) ? str->xMin : str->xRight[i-1]) + str->xRight[i]) / 2;
-       if (x > *xMax)
+       if (x > *xMax) {
          return gFalse;
+       }
       }
 
       // compare the strings
-      for (p1 = p, q = s; *q; ++p1, ++q) {
-       if (tolower(*p1) != tolower(*q))
+      for (j = 0; j < len; ++j) {
+#if 1 //~ this lowercases Latin A-Z only -- this will eventually be
+      //~ extended to handle other character sets
+       if (p[j] >= 0x41 && p[j] <= 0x5a) {
+         u1 = p[j] + 0x20;
+       } else {
+         u1 = p[j];
+       }
+       if (s[j] >= 0x41 && s[j] <= 0x5a) {
+         u2 = s[j] + 0x20;
+       } else {
+         u2 = s[j];
+       }
+#endif
+       if (u1 != u2) {
          break;
+       }
       }
 
       // found it
-      if (!*q) {
+      if (j == len) {
        *xMin = (i == 0) ? str->xMin : str->xRight[i-1];
-       *xMax = str->xRight[i+n-1];
+       *xMax = str->xRight[i + len - 1];
        *yMin = str->yMin;
        *yMax = str->yMax;
        return gTrue;
@@ -970,65 +366,108 @@ GBool TextPage::findText(char *s, GBool top, GBool bottom,
 GString *TextPage::getText(double xMin, double yMin,
                           double xMax, double yMax) {
   GString *s;
+  UnicodeMap *uMap;
+  char space[8], eol[16], buf[8];
+  int spaceLen, eolLen, n;
   TextString *str1;
   double x0, x1, x2, y;
   double xPrev, yPrev;
-  int i1, i2;
+  int i1, i2, i;
   GBool multiLine;
 
   s = new GString();
+  if (!(uMap = globalParams->getTextEncoding())) {
+    return s;
+  }
+  spaceLen = uMap->mapUnicode(0x20, space, sizeof(space));
+  eolLen = 0; // make gcc happy
+  switch (globalParams->getTextEOL()) {
+  case eolUnix:
+    eolLen = uMap->mapUnicode(0x0a, eol, sizeof(eol));
+    break;
+  case eolDOS:
+    eolLen = uMap->mapUnicode(0x0d, eol, sizeof(eol));
+    eolLen += uMap->mapUnicode(0x0a, eol + eolLen, sizeof(eol) - eolLen);
+    break;
+  case eolMac:
+    eolLen = uMap->mapUnicode(0x0d, eol, sizeof(eol));
+    break;
+  }
   xPrev = yPrev = 0;
   multiLine = gFalse;
   for (str1 = yxStrings; str1; str1 = str1->yxNext) {
     y = 0.5 * (str1->yMin + str1->yMax);
-    if (y > yMax)
+    if (y > yMax) {
       break;
+    }
     if (y > yMin && str1->xMin < xMax && str1->xMax > xMin) {
       x0 = x1 = x2 = str1->xMin;
-      for (i1 = 0; i1 < str1->text->getLength(); ++i1) {
+      for (i1 = 0; i1 < str1->len; ++i1) {
        x0 = (i1==0) ? str1->xMin : str1->xRight[i1-1];
        x1 = str1->xRight[i1];
-       if (0.5 * (x0 + x1) >= xMin)
+       if (0.5 * (x0 + x1) >= xMin) {
          break;
+       }
       }
-      for (i2 = str1->text->getLength() - 1; i2 > i1; --i2) {
+      for (i2 = str1->len - 1; i2 > i1; --i2) {
        x1 = (i2==0) ? str1->xMin : str1->xRight[i2-1];
        x2 = str1->xRight[i2];
-       if (0.5 * (x1 + x2) <= xMax)
+       if (0.5 * (x1 + x2) <= xMax) {
          break;
+       }
       }
       if (s->getLength() > 0) {
        if (x0 < xPrev || str1->yMin > yPrev) {
-#ifdef MACOS
-         s->append('\r');
-#else
-         s->append('\n');
-#endif
+         s->append(eol, eolLen);
          multiLine = gTrue;
        } else {
-         s->append("    ");
+         for (i = 0; i < 4; ++i) {
+           s->append(space, spaceLen);
+         }
        }
       }
-      s->append(str1->text->getCString() + i1, i2 - i1 + 1);
+      for (i = i1; i <= i2; ++i) {
+       n = uMap->mapUnicode(str1->text[i], buf, sizeof(buf));
+       s->append(buf, n);
+      }
       xPrev = x2;
       yPrev = str1->yMax;
     }
   }
   if (multiLine) {
-#ifdef MACOS
-    s->append('\r');
-#else
-    s->append('\n');
-#endif
+    s->append(eol, eolLen);
   }
+  uMap->decRefCnt();
   return s;
 }
 
-void TextPage::dump(FILE *f) {
+void TextPage::dump(void *outputStream, TextOutputFunc outputFunc) {
+  UnicodeMap *uMap;
+  char space[8], eol[16], eop[8], buf[8];
+  int spaceLen, eolLen, eopLen, n;
   TextString *str1, *str2, *str3;
   double yMin, yMax;
-  int col1, col2;
-  double d;
+  int col1, col2, d, i;
+
+  // get the output encoding
+  if (!(uMap = globalParams->getTextEncoding())) {
+    return;
+  }
+  spaceLen = uMap->mapUnicode(0x20, space, sizeof(space));
+  eolLen = 0; // make gcc happy
+  switch (globalParams->getTextEOL()) {
+  case eolUnix:
+    eolLen = uMap->mapUnicode(0x0a, eol, sizeof(eol));
+    break;
+  case eolDOS:
+    eolLen = uMap->mapUnicode(0x0d, eol, sizeof(eol));
+    eolLen += uMap->mapUnicode(0x0a, eol + eolLen, sizeof(eol) - eolLen);
+    break;
+  case eolMac:
+    eolLen = uMap->mapUnicode(0x0d, eol, sizeof(eol));
+    break;
+  }
+  eopLen = uMap->mapUnicode(0x0c, eop, sizeof(eop));
 
   // build x-major list
   xyStrings = NULL;
@@ -1037,13 +476,15 @@ void TextPage::dump(FILE *f) {
         str3;
         str2 = str3, str3 = str3->xyNext) {
       if (str1->xMin < str3->xMin ||
-         (str1->xMin == str3->xMin && str1->yMin < str3->yMin))
+         (str1->xMin == str3->xMin && str1->yMin < str3->yMin)) {
        break;
+      }
     }
-    if (str2)
+    if (str2) {
       str2->xyNext = str1;
-    else
+    } else {
       xyStrings = str1;
+    }
     str1->xyNext = str3;
   }
 
@@ -1052,13 +493,14 @@ void TextPage::dump(FILE *f) {
     col1 = 0;
     for (str2 = xyStrings; str2 != str1; str2 = str2->xyNext) {
       if (str1->xMin >= str2->xMax) {
-       col2 = str2->col + str2->text->getLength() + 4;
-       if (col2 > col1)
+       col2 = str2->col + str2->len + 4;
+       if (col2 > col1) {
          col1 = col2;
+       }
       } else if (str1->xMin > str2->xMin) {
        col2 = str2->col +
               (int)(((str1->xMin - str2->xMin) / (str2->xMax - str2->xMin)) *
-                    str2->text->getLength());
+                    str2->len);
        if (col2 > col1) {
          col1 = col2;
        }
@@ -1068,13 +510,17 @@ void TextPage::dump(FILE *f) {
   }
 
 #if 0 //~ for debugging
-  fprintf(f, "~~~~~~~~~~\n");
+  fprintf((FILE *)outputStream, "~~~~~~~~~~\n");
   for (str1 = yxStrings; str1; str1 = str1->yxNext) {
-    fprintf(f, "(%4d,%4d) - (%4d,%4d) [%3d] %s\n",
-           (int)str1->xMin, (int)str1->yMin, (int)str1->xMax, (int)str1->yMax,
-           str1->col, str1->text->getCString());
+    fprintf((FILE *)outputStream, "(%4d,%4d) - (%4d,%4d) [%3d] '",
+           (int)str1->xMin, (int)str1->yMin,
+           (int)str1->xMax, (int)str1->yMax, str1->col);
+    for (i = 0; i < str1->len; ++i) {
+      fputc(str1->text[i] & 0xff, stdout);
+    }
+    printf("'\n");
   }
-  fprintf(f, "~~~~~~~~~~\n");
+  fprintf((FILE *)outputStream, "~~~~~~~~~~\n");
 #endif
 
   // output
@@ -1087,19 +533,24 @@ void TextPage::dump(FILE *f) {
       col1 = str1->col;
     } else {
       for (; col1 < str1->col; ++col1) {
-       fputc(' ', f);
+       (*outputFunc)(outputStream, space, spaceLen);
       }
     }
 
     // print the string
-    fputs(str1->text->getCString(), f);
+    for (i = 0; i < str1->len; ++i) {
+      if ((n = uMap->mapUnicode(str1->text[i], buf, sizeof(buf))) > 0) {
+       (*outputFunc)(outputStream, buf, n);
+      }
+    }
 
     // increment column
-    col1 += str1->text->getLength();
+    col1 += str1->len;
 
     // update yMax for this line
-    if (str1->yMax > yMax)
+    if (str1->yMax > yMax) {
       yMax = str1->yMax;
+    }
 
     // if we've hit the end of the line...
     if (!(str1->yxNext &&
@@ -1108,7 +559,7 @@ void TextPage::dump(FILE *f) {
          str1->yxNext->xMin >= str1->xMax)) {
 
       // print a return
-      fputc('\n', f);
+      (*outputFunc)(outputStream, eol, eolLen);
 
       // print extra vertical space if necessary
       if (str1->yxNext) {
@@ -1116,8 +567,9 @@ void TextPage::dump(FILE *f) {
        // find yMin for next line
        yMin = str1->yxNext->yMin;
        for (str2 = str1->yxNext; str2; str2 = str2->yxNext) {
-         if (str2->yMin < yMin)
+         if (str2->yMin < yMin) {
            yMin = str2->yMin;
+         }
          if (!(str2->yxNext && str2->yxNext->yMin < str2->yMax &&
                str2->yxNext->xMin >= str2->xMax))
            break;
@@ -1125,11 +577,15 @@ void TextPage::dump(FILE *f) {
          
        // print the space
        d = (int)((yMin - yMax) / (str1->yMax - str1->yMin) + 0.5);
+       // various things (weird font matrices) can result in bogus
+       // values here, so do a sanity check
        if (rawOrder && d > 2) {
          d = 2;
+       } else if (!rawOrder && d > 5) {
+         d = 5;
        }
        for (; d > 0; --d) {
-         fputc('\n', f);
+         (*outputFunc)(outputStream, eol, eolLen);
        }
       }
 
@@ -1138,6 +594,13 @@ void TextPage::dump(FILE *f) {
       yMax = str1->yxNext ? str1->yxNext->yMax : 0;
     }
   }
+
+  // end of page
+  (*outputFunc)(outputStream, eol, eolLen);
+  (*outputFunc)(outputStream, eop, eopLen);
+  (*outputFunc)(outputStream, eol, eolLen);
+
+  uMap->decRefCnt();
 }
 
 void TextPage::clear() {
@@ -1160,38 +623,52 @@ void TextPage::clear() {
 // TextOutputDev
 //------------------------------------------------------------------------
 
-TextOutputDev::TextOutputDev(char *fileName, TextOutputCharSet charSet,
-                            GBool rawOrder) {
+static void outputToFile(void *stream, char *text, int len) {
+  fwrite(text, 1, len, (FILE *)stream);
+}
+
+TextOutputDev::TextOutputDev(char *fileName, GBool rawOrderA, GBool append) {
   text = NULL;
-  this->rawOrder = rawOrder;
+  rawOrder = rawOrderA;
   ok = gTrue;
 
   // open file
   needClose = gFalse;
   if (fileName) {
     if (!strcmp(fileName, "-")) {
-      f = stdout;
-    } else if ((f = fopen(fileName, "w"))) {
+      outputStream = stdout;
+    } else if ((outputStream = fopen(fileName, append ? "ab" : "wb"))) {
       needClose = gTrue;
     } else {
       error(-1, "Couldn't open text file '%s'", fileName);
       ok = gFalse;
       return;
     }
+    outputFunc = &outputToFile;
   } else {
-    f = NULL;
+    outputStream = NULL;
   }
 
   // set up text object
-  text = new TextPage(charSet, rawOrder);
+  text = new TextPage(rawOrder);
+}
+
+TextOutputDev::TextOutputDev(TextOutputFunc func, void *stream,
+                            GBool rawOrderA) {
+  outputFunc = func;
+  outputStream = stream;
+  needClose = gFalse;
+  rawOrder = rawOrderA;
+  text = new TextPage(rawOrder);
+  ok = gTrue;
 }
 
 TextOutputDev::~TextOutputDev() {
   if (needClose) {
 #ifdef MACOS
-    ICS_MapRefNumAndAssign((short)f->handle);
+    ICS_MapRefNumAndAssign((short)((FILE *)outputStream)->handle);
 #endif
-    fclose(f);
+    fclose((FILE *)outputStream);
   }
   if (text) {
     delete text;
@@ -1204,50 +681,17 @@ void TextOutputDev::startPage(int pageNum, GfxState *state) {
 
 void TextOutputDev::endPage() {
   text->coalesce();
-  if (f) {
-    text->dump(f);
-    fputc('\n', f);
-    fputs("\f\n", f);
-    fputc('\n', f);
+  if (outputStream) {
+    text->dump(outputStream, outputFunc);
   }
 }
 
 void TextOutputDev::updateFont(GfxState *state) {
-  GfxFont *font;
-  char *charName;
-  int c;
-
-  // look for hex char codes in subsetted font
-  hexCodes = gFalse;
-  if ((font = state->getFont()) && !font->is16Bit()) {
-    for (c = 0; c < 256; ++c) {
-      if ((charName = font->getCharName(c))) {
-       if ((charName[0] == 'B' || charName[0] == 'C' ||
-            charName[0] == 'G') &&
-           strlen(charName) == 3 &&
-           isxdigit(charName[1]) && isxdigit(charName[2]) &&
-           ((charName[1] >= 'a' && charName[1] <= 'f') ||
-            (charName[1] >= 'A' && charName[1] <= 'F') ||
-            (charName[2] >= 'a' && charName[2] <= 'f') ||
-            (charName[2] >= 'A' && charName[2] <= 'F'))) {
-         hexCodes = gTrue;
-         break;
-       } else if ((strlen(charName) == 2) &&
-                  isxdigit(charName[0]) && isxdigit(charName[1]) &&
-                  ((charName[0] >= 'a' && charName[0] <= 'f') ||
-                   (charName[0] >= 'A' && charName[0] <= 'F') ||
-                   (charName[1] >= 'a' && charName[1] <= 'f') ||
-                   (charName[1] >= 'A' && charName[1] <= 'F'))) {
-         hexCodes = gTrue;
-         break;
-       }
-      }
-    }
-  }
+  text->updateFont(state);
 }
 
 void TextOutputDev::beginString(GfxState *state, GString *s) {
-  text->beginString(state, s, hexCodes);
+  text->beginString(state);
 }
 
 void TextOutputDev::endString(GfxState *state) {
@@ -1255,17 +699,15 @@ void TextOutputDev::endString(GfxState *state) {
 }
 
 void TextOutputDev::drawChar(GfxState *state, double x, double y,
-                            double dx, double dy, Guchar c) {
-  text->addChar(state, x, y, dx, dy, c);
-}
-
-void TextOutputDev::drawChar16(GfxState *state, double x, double y,
-                              double dx, double dy, int c) {
-  text->addChar16(state, x, y, dx, dy, c, state->getFont()->getCharSet16());
+                            double dx, double dy,
+                            double originX, double originY,
+                            CharCode c, Unicode *u, int uLen) {
+  text->addChar(state, x, y, dx, dy, u, uLen);
 }
 
-GBool TextOutputDev::findText(char *s, GBool top, GBool bottom,
+GBool TextOutputDev::findText(Unicode *s, int len,
+                             GBool top, GBool bottom,
                              double *xMin, double *yMin,
                              double *xMax, double *yMax) {
-  return text->findText(s, top, bottom, xMin, yMin, xMax, yMax);
+  return text->findText(s, len, top, bottom, xMin, yMin, xMax, yMax);
 }
index a041e23b5df6d75bc8356f2b0702a68e5b73aee0..daab3c4ebb93a05f669694d9f17b7b1f02a5d40a 100644 (file)
@@ -2,7 +2,7 @@
 //
 // TextOutputDev.h
 //
-// Copyright 1997 Derek B. Noonburg
+// Copyright 1997-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -23,12 +23,7 @@ class GString;
 
 //------------------------------------------------------------------------
 
-enum TextOutputCharSet {
-  textOutASCII7,
-  textOutLatin1,
-  textOutLatin2,
-  textOutLatin5
-};
+typedef void (*TextOutputFunc)(void *stream, char *text, int len);
 
 //------------------------------------------------------------------------
 // TextString
@@ -38,31 +33,26 @@ class TextString {
 public:
 
   // Constructor.
-  TextString(GfxState *state, GBool hexCodes1);
+  TextString(GfxState *state, double fontSize);
 
   // Destructor.
   ~TextString();
 
   // Add a character to the string.
   void addChar(GfxState *state, double x, double y,
-              double dx, double dy,
-              Guchar c, TextOutputCharSet charSet);
-
-  // Add a 16-bit character to the string.
-  void addChar16(GfxState *state, double x, double y,
-                double dx, double dy,
-                int c, GfxFontCharSet16 charSet);
+              double dx, double dy, Unicode u);
 
 private:
 
   double xMin, xMax;           // bounding box x coordinates
   double yMin, yMax;           // bounding box y coordinates
   int col;                     // starting column
-  GString *text;               // the text
+  Unicode *text;               // the text
   double *xRight;              // right-hand x coord of each char
+  int len;                     // length of text and xRight
+  int size;                    // size of text and xRight arrays
   TextString *yxNext;          // next string in y-major order
   TextString *xyNext;          // next string in x-major order
-  GBool hexCodes;              // subsetted font with hex char codes
 
   friend class TextPage;
 };
@@ -75,22 +65,20 @@ class TextPage {
 public:
 
   // Constructor.
-  TextPage(TextOutputCharSet charSet, GBool rawOrder);
+  TextPage(GBool rawOrderA);
 
   // Destructor.
   ~TextPage();
 
+  // Update the current font.
+  void updateFont(GfxState *state);
+
   // Begin a new string.
-  void beginString(GfxState *state, GString *s, GBool hex1);
+  void beginString(GfxState *state);
 
   // Add a character to the current string.
   void addChar(GfxState *state, double x, double y,
-              double dx, double dy, Guchar c);
-
-  // Add a 16-bit character to the current string.
-  void addChar16(GfxState *state, double x, double y,
-                double dx, double dy, int c,
-                GfxFontCharSet16 charSet);
+              double dx, double dy, Unicode *u, int uLen);
 
   // End the current string, sorting it into the list of strings.
   void endString();
@@ -103,7 +91,8 @@ public:
   // stops looking at bottom of page; otherwise stops looking at
   // <xMax>,<yMax>.  If found, sets the text bounding rectange and
   // returns true; otherwise returns false.
-  GBool findText(char *s, GBool top, GBool bottom,
+  GBool findText(Unicode *s, int len,
+                GBool top, GBool bottom,
                 double *xMin, double *yMin,
                 double *xMax, double *yMax);
 
@@ -112,17 +101,17 @@ public:
                   double xMax, double yMax);
 
   // Dump contents of page to a file.
-  void dump(FILE *f);
+  void dump(void *outputStream, TextOutputFunc outputFunc);
 
   // Clear the page.
   void clear();
 
 private:
 
-  TextOutputCharSet charSet;   // character set
   GBool rawOrder;              // keep strings in content stream order
 
   TextString *curStr;          // currently active string
+  double fontSize;             // current font size
 
   TextString *yxStrings;       // strings in y-major order
   TextString *xyStrings;       // strings in x-major order
@@ -139,12 +128,13 @@ class TextOutputDev: public OutputDev {
 public:
 
   // Open a text output file.  If <fileName> is NULL, no file is
-  // written (this is useful, e.g., for searching text).  Text is
-  // converted to the character set specified by <charSet>.  This
-  // should be set to textOutASCII7 for Japanese (EUC-JP) text.  If
+  // written (this is useful, e.g., for searching text).  If
   // <rawOrder> is true, the text is kept in content stream order.
-  TextOutputDev(char *fileName, TextOutputCharSet charSet,
-               GBool rawOrder);
+  TextOutputDev(char *fileName, GBool rawOrderA, GBool append);
+
+  // Create a TextOutputDev which will write to a generic stream.  If
+  // <rawOrder> is true, the text is kept in content stream order.
+  TextOutputDev(TextOutputFunc func, void *stream, GBool rawOrderA);
 
   // Destructor.
   virtual ~TextOutputDev();
@@ -161,6 +151,13 @@ public:
   // Does this device use drawChar() or drawString()?
   virtual GBool useDrawChar() { return gTrue; }
 
+  // Does this device use beginType3Char/endType3Char?  Otherwise,
+  // text in Type 3 fonts will be drawn with drawChar/drawString.
+  virtual GBool interpretType3Chars() { return gFalse; }
+
+  // Does this device need non-text content?
+  virtual GBool needNonText() { return gFalse; }
+
   //----- initialization and control
 
   // Start a page.
@@ -176,9 +173,9 @@ public:
   virtual void beginString(GfxState *state, GString *s);
   virtual void endString(GfxState *state);
   virtual void drawChar(GfxState *state, double x, double y,
-                       double dx, double dy, Guchar c);
-  virtual void drawChar16(GfxState *state, double x, double y,
-                         double dx, double dy, int c);
+                       double dx, double dy,
+                       double originX, double originY,
+                       CharCode c, Unicode *u, int uLen);
 
   //----- special access
 
@@ -187,17 +184,19 @@ public:
   // stops looking at bottom of page; otherwise stops looking at
   // <xMax>,<yMax>.  If found, sets the text bounding rectange and
   // returns true; otherwise returns false.
-  GBool findText(char *s, GBool top, GBool bottom,
+  GBool findText(Unicode *s, int len,
+                GBool top, GBool bottom,
                 double *xMin, double *yMin,
                 double *xMax, double *yMax);
 
 private:
 
-  FILE *f;                     // text file
-  GBool needClose;             // need to close the file?
+  TextOutputFunc outputFunc;   // output function
+  void *outputStream;          // output stream
+  GBool needClose;             // need to close the output file?
+                               //   (only if outputStream is a FILE*)
   TextPage *text;              // text for the current page
   GBool rawOrder;              // keep text in content stream order
-  GBool hexCodes;              // subsetted font with hex char codes
   GBool ok;                    // set up ok?
 };
 
diff --git a/pdf/xpdf/UTF8.h b/pdf/xpdf/UTF8.h
new file mode 100644 (file)
index 0000000..d707e2f
--- /dev/null
@@ -0,0 +1,56 @@
+//========================================================================
+//
+// UTF8.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+static int mapUTF8(Unicode u, char *buf, int bufSize) {
+  if        (u <= 0x0000007f) {
+    if (bufSize < 1) {
+      return 0;
+    }
+    buf[0] = (char)u;
+    return 1;
+  } else if (u <= 0x000007ff) {
+    if (bufSize < 2) {
+      return 0;
+    }
+    buf[0] = (char)(0xc0 + (u >> 6));
+    buf[1] = (char)(0x80 + (u & 0x3f));
+    return 2;
+  } else if (u <= 0x0000ffff) {
+    if (bufSize < 3) {
+      return 0;
+    }
+    buf[0] = (char)(0xe0 + (u >> 12));
+    buf[1] = (char)(0x80 + ((u >> 6) & 0x3f));
+    buf[2] = (char)(0x80 + (u & 0x3f));
+    return 3;
+  } else if (u <= 0x0010ffff) {
+    if (bufSize < 4) {
+      return 0;
+    }
+    buf[0] = (char)(0xf0 + (u >> 18));
+    buf[1] = (char)(0x80 + ((u >> 12) & 0x3f));
+    buf[2] = (char)(0x80 + ((u >> 6) & 0x3f));
+    buf[3] = (char)(0x80 + (u & 0x3f));
+    return 4;
+  } else {
+    return 0;
+  }
+}
+
+static int mapUCS2(Unicode u, char *buf, int bufSize) {
+  if (u <= 0xffff) {
+    if (bufSize < 2) {
+      return 0;
+    }
+    buf[0] = (char)((u >> 8) & 0xff);
+    buf[1] = (char)(u & 0xff);
+    return 2;
+  } else {
+    return 0;
+  }
+}
diff --git a/pdf/xpdf/UnicodeMap.cc b/pdf/xpdf/UnicodeMap.cc
new file mode 100644 (file)
index 0000000..75f23d2
--- /dev/null
@@ -0,0 +1,260 @@
+//========================================================================
+//
+// UnicodeMap.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifdef __GNUC__
+#pragma implementation
+#endif
+
+#include <aconf.h>
+#include <stdio.h>
+#include <string.h>
+#include "gmem.h"
+#include "gfile.h"
+#include "GString.h"
+#include "GList.h"
+#include "Error.h"
+#include "GlobalParams.h"
+#include "UnicodeMap.h"
+
+//------------------------------------------------------------------------
+
+#define maxExtCode 16
+
+struct UnicodeMapExt {
+  Unicode u;                   // Unicode char
+  char code[maxExtCode];
+  Guint nBytes;
+};
+
+//------------------------------------------------------------------------
+
+UnicodeMap *UnicodeMap::parse(GString *encodingNameA) {
+  FILE *f;
+  UnicodeMap *map;
+  UnicodeMapRange *range;
+  UnicodeMapExt *eMap;
+  int size, eMapsSize;
+  char buf[256];
+  int line, nBytes, i, x;
+  char *tok1, *tok2, *tok3;
+
+  if (!(f = globalParams->getUnicodeMapFile(encodingNameA))) {
+    error(-1, "Couldn't find unicodeMap file for the '%s' encoding",
+         encodingNameA->getCString());
+    return NULL;
+  }
+
+  map = new UnicodeMap(encodingNameA->copy());
+
+  size = 8;
+  map->ranges = (UnicodeMapRange *)gmalloc(size * sizeof(UnicodeMapRange));
+  eMapsSize = 0;
+
+  line = 1;
+  while (getLine(buf, sizeof(buf), f)) {
+    if ((tok1 = strtok(buf, " \t\r\n")) &&
+       (tok2 = strtok(NULL, " \t\r\n"))) {
+      if (!(tok3 = strtok(NULL, " \t\r\n"))) {
+       tok3 = tok2;
+       tok2 = tok1;
+      }
+      nBytes = strlen(tok3) / 2;
+      if (nBytes <= 4) {
+       if (map->len == size) {
+         size *= 2;
+         map->ranges = (UnicodeMapRange *)
+           grealloc(map->ranges, size * sizeof(UnicodeMapRange));
+       }
+       range = &map->ranges[map->len];
+       sscanf(tok1, "%x", &range->start);
+       sscanf(tok2, "%x", &range->end);
+       sscanf(tok3, "%x", &range->code);
+       range->nBytes = nBytes;
+       ++map->len;
+      } else if (tok2 == tok1) {
+       if (map->eMapsLen == eMapsSize) {
+         eMapsSize += 16;
+         map->eMaps = (UnicodeMapExt *)
+           grealloc(map->eMaps, eMapsSize * sizeof(UnicodeMapExt));
+       }
+       eMap = &map->eMaps[map->eMapsLen];
+       sscanf(tok1, "%x", &eMap->u);
+       for (i = 0; i < nBytes; ++i) {
+         sscanf(tok3 + i*2, "%2x", &x);
+         eMap->code[i] = (char)x;
+       }
+       eMap->nBytes = nBytes;
+       ++map->eMapsLen;
+      } else {
+       error(-1, "Bad line (%d) in unicodeMap file for the '%s' encoding",
+             line, encodingNameA->getCString());
+      }
+    } else {
+      error(-1, "Bad line (%d) in unicodeMap file for the '%s' encoding",
+           line, encodingNameA->getCString());
+    }
+    ++line;
+  }
+
+  return map;
+}
+
+UnicodeMap::UnicodeMap(GString *encodingNameA) {
+  encodingName = encodingNameA;
+  kind = unicodeMapUser;
+  ranges = NULL;
+  len = 0;
+  eMaps = NULL;
+  eMapsLen = 0;
+  refCnt = 1;
+}
+
+UnicodeMap::UnicodeMap(char *encodingNameA,
+                      UnicodeMapRange *rangesA, int lenA) {
+  encodingName = new GString(encodingNameA);
+  kind = unicodeMapResident;
+  ranges = rangesA;
+  len = lenA;
+  eMaps = NULL;
+  eMapsLen = 0;
+  refCnt = 1;
+}
+
+UnicodeMap::UnicodeMap(char *encodingNameA, UnicodeMapFunc funcA) {
+  encodingName = new GString(encodingNameA);
+  kind = unicodeMapFunc;
+  func = funcA;
+  eMaps = NULL;
+  eMapsLen = 0;
+  refCnt = 1;
+}
+
+UnicodeMap::~UnicodeMap() {
+  delete encodingName;
+  if (kind == unicodeMapUser && ranges) {
+    gfree(ranges);
+  }
+  if (eMaps) {
+    gfree(eMaps);
+  }
+}
+
+void UnicodeMap::incRefCnt() {
+  ++refCnt;
+}
+
+void UnicodeMap::decRefCnt() {
+  if (--refCnt == 0) {
+    delete this;
+  }
+}
+
+GBool UnicodeMap::match(GString *encodingNameA) {
+  return !encodingName->cmp(encodingNameA);
+}
+
+int UnicodeMap::mapUnicode(Unicode u, char *buf, int bufSize) {
+  int a, b, m, n, i, j;
+  Guint code;
+
+  if (kind == unicodeMapFunc) {
+    return (*func)(u, buf, bufSize);
+  }
+
+  a = 0;
+  b = len;
+  if (u < ranges[a].start) {
+    return 0;
+  }
+  // invariant: ranges[a].start <= u < ranges[b].start
+  while (b - a > 1) {
+    m = (a + b) / 2;
+    if (u >= ranges[m].start) {
+      a = m;
+    } else if (u < ranges[m].start) {
+      b = m;
+    }
+  }
+  if (u <= ranges[a].end) {
+    n = ranges[a].nBytes;
+    if (n > bufSize) {
+      return 0;
+    }
+    code = ranges[a].code + (u - ranges[a].start);
+    for (i = n - 1; i >= 0; --i) {
+      buf[i] = (char)(code & 0xff);
+      code >>= 8;
+    }
+    return n;
+  }
+
+  for (i = 0; i < eMapsLen; ++i) {
+    if (eMaps[i].u == u) {
+      n = eMaps[i].nBytes;
+      for (j = 0; j < n; ++j) {
+       buf[j] = eMaps[i].code[j];
+      }
+      return n;
+    }
+  }
+
+  return 0;
+}
+
+//------------------------------------------------------------------------
+
+UnicodeMapCache::UnicodeMapCache() {
+  int i;
+
+  for (i = 0; i < unicodeMapCacheSize; ++i) {
+    cache[i] = NULL;
+  }
+}
+
+UnicodeMapCache::~UnicodeMapCache() {
+  int i;
+
+  for (i = 0; i < unicodeMapCacheSize; ++i) {
+    if (cache[i]) {
+      cache[i]->decRefCnt();
+    }
+  }
+}
+
+UnicodeMap *UnicodeMapCache::getUnicodeMap(GString *encodingName) {
+  UnicodeMap *map;
+  int i, j;
+
+  if (cache[0] && cache[0]->match(encodingName)) {
+    cache[0]->incRefCnt();
+    return cache[0];
+  }
+  for (i = 1; i < unicodeMapCacheSize; ++i) {
+    if (cache[i] && cache[i]->match(encodingName)) {
+      map = cache[i];
+      for (j = i; j >= 1; --j) {
+       cache[j] = cache[j - 1];
+      }
+      cache[0] = map;
+      map->incRefCnt();
+      return map;
+    }
+  }
+  if ((map = UnicodeMap::parse(encodingName))) {
+    if (cache[unicodeMapCacheSize - 1]) {
+      cache[unicodeMapCacheSize - 1]->decRefCnt();
+    }
+    for (j = unicodeMapCacheSize - 1; j >= 1; --j) {
+      cache[j] = cache[j - 1];
+    }
+    cache[0] = map;
+    map->incRefCnt();
+    return map;
+  }
+  return NULL;
+}
diff --git a/pdf/xpdf/UnicodeMap.h b/pdf/xpdf/UnicodeMap.h
new file mode 100644 (file)
index 0000000..274c447
--- /dev/null
@@ -0,0 +1,110 @@
+//========================================================================
+//
+// UnicodeMap.h
+//
+// Mapping from Unicode to an encoding.
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef UNICODEMAP_H
+#define UNICODEMAP_H
+
+#ifdef __GNUC__
+#pragma interface
+#endif
+
+#include "gtypes.h"
+#include "CharTypes.h"
+
+class GString;
+
+//------------------------------------------------------------------------
+
+enum UnicodeMapKind {
+  unicodeMapUser,              // read from a file
+  unicodeMapResident,          // static list of ranges
+  unicodeMapFunc               // function pointer
+};
+
+typedef int (*UnicodeMapFunc)(Unicode u, char *buf, int bufSize);
+
+struct UnicodeMapRange {
+  Unicode start, end;          // range of Unicode chars
+  Guint code, nBytes;          // first output code
+};
+
+struct UnicodeMapExt;
+
+//------------------------------------------------------------------------
+
+class UnicodeMap {
+public:
+
+  // Create the UnicodeMap specified by <encodingName>.  Sets the
+  // initial reference count to 1.  Returns NULL on failure.
+  static UnicodeMap *parse(GString *encodingNameA);
+
+  // Create a resident UnicodeMap.
+  UnicodeMap(char *encodingNameA,
+            UnicodeMapRange *rangesA, int lenA);
+
+  // Create a resident UnicodeMap that uses a function instead of a
+  // list of ranges.
+  UnicodeMap(char *encodingNameA, UnicodeMapFunc funcA);
+
+  ~UnicodeMap();
+
+  void incRefCnt();
+  void decRefCnt();
+
+  GString *getEncodingName() { return encodingName; }
+
+  // Return true if this UnicodeMap matches the specified
+  // <encodingNameA>.
+  GBool match(GString *encodingNameA);
+
+  // Map Unicode to the target encoding.  Fills in <buf> with the
+  // output and returns the number of bytes used.  Output will be
+  // truncated at <bufSize> bytes.  No string terminator is written.
+  // Returns 0 if no mapping is found.
+  int mapUnicode(Unicode u, char *buf, int bufSize);
+
+private:
+
+  UnicodeMap(GString *encodingNameA);
+
+  GString *encodingName;
+  UnicodeMapKind kind;
+  union {
+    UnicodeMapRange *ranges;   // (user, resident)
+    UnicodeMapFunc func;       // (func)
+  };
+  int len;                     // (user, resident)
+  UnicodeMapExt *eMaps;                // (user)
+  int eMapsLen;                        // (user)
+  int refCnt;
+};
+
+//------------------------------------------------------------------------
+
+#define unicodeMapCacheSize 4
+
+class UnicodeMapCache {
+public:
+
+  UnicodeMapCache();
+  ~UnicodeMapCache();
+
+  // Get the UnicodeMap for <encodingName>.  Increments its reference
+  // count; there will be one reference for the cache plus one for the
+  // caller of this function.  Returns NULL on failure.
+  UnicodeMap *getUnicodeMap(GString *encodingName);
+
+private:
+
+  UnicodeMap *cache[unicodeMapCacheSize];
+};
+
+#endif
diff --git a/pdf/xpdf/UnicodeMapTables.h b/pdf/xpdf/UnicodeMapTables.h
new file mode 100644 (file)
index 0000000..51dee98
--- /dev/null
@@ -0,0 +1,361 @@
+//========================================================================
+//
+// UnicodeMapTables.h
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+static UnicodeMapRange latin1UnicodeMapRanges[] = {
+  { 0x000a, 0x000a, 0x0a, 1 },
+  { 0x000c, 0x000d, 0x0c, 1 },
+  { 0x0020, 0x007e, 0x20, 1 },
+  { 0x00a0, 0x00a0, 0x20, 1 },
+  { 0x00a1, 0x00ac, 0xa1, 1 },
+  { 0x00ae, 0x00ff, 0xae, 1 },
+  { 0x010c, 0x010c, 0x43, 1 },
+  { 0x010d, 0x010d, 0x63, 1 },
+  { 0x0131, 0x0131, 0x69, 1 },
+  { 0x0141, 0x0141, 0x4c, 1 },
+  { 0x0142, 0x0142, 0x6c, 1 },
+  { 0x0152, 0x0152, 0x4f45, 2 },
+  { 0x0153, 0x0153, 0x6f65, 2 },
+  { 0x0160, 0x0160, 0x53, 1 },
+  { 0x0161, 0x0161, 0x73, 1 },
+  { 0x0178, 0x0178, 0x59, 1 },
+  { 0x017d, 0x017d, 0x5a, 1 },
+  { 0x017e, 0x017e, 0x7a, 1 },
+  { 0x02c6, 0x02c6, 0x5e, 1 },
+  { 0x02da, 0x02da, 0xb0, 1 },
+  { 0x02dc, 0x02dc, 0x7e, 1 },
+  { 0x2013, 0x2013, 0xad, 1 },
+  { 0x2014, 0x2014, 0x2d2d, 2 },
+  { 0x2018, 0x2018, 0x60, 1 },
+  { 0x2019, 0x2019, 0x27, 1 },
+  { 0x201a, 0x201a, 0x2c, 1 },
+  { 0x201c, 0x201c, 0x22, 1 },
+  { 0x201d, 0x201d, 0x22, 1 },
+  { 0x201e, 0x201e, 0x2c2c, 2 },
+  { 0x2022, 0x2022, 0xb7, 1 },
+  { 0x2026, 0x2026, 0x2e2e2e, 3 },
+  { 0x2039, 0x2039, 0x3c, 1 },
+  { 0x203a, 0x203a, 0x3e, 1 },
+  { 0x2044, 0x2044, 0x2f, 1 },
+  { 0x2122, 0x2122, 0x544d, 2 },
+  { 0x2212, 0x2212, 0x2d, 1 },
+  { 0xf6f9, 0xf6f9, 0x4c, 1 },
+  { 0xf6fa, 0xf6fa, 0x4f45, 2 },
+  { 0xf6fc, 0xf6fc, 0xb0, 1 },
+  { 0xf6fd, 0xf6fd, 0x53, 1 },
+  { 0xf6fe, 0xf6fe, 0x7e, 1 },
+  { 0xf6ff, 0xf6ff, 0x5a, 1 },
+  { 0xf721, 0xf721, 0x21, 1 },
+  { 0xf724, 0xf724, 0x24, 1 },
+  { 0xf726, 0xf726, 0x26, 1 },
+  { 0xf730, 0xf739, 0x30, 1 },
+  { 0xf73f, 0xf73f, 0x3f, 1 },
+  { 0xf761, 0xf77a, 0x41, 1 },
+  { 0xf7a1, 0xf7a2, 0xa1, 1 },
+  { 0xf7bf, 0xf7bf, 0xbf, 1 },
+  { 0xf7e0, 0xf7f6, 0xc0, 1 },
+  { 0xf7f8, 0xf7fe, 0xd8, 1 },
+  { 0xf7ff, 0xf7ff, 0x59, 1 },
+  { 0xfb00, 0xfb00, 0x6666, 2 },
+  { 0xfb01, 0xfb01, 0x6669, 2 },
+  { 0xfb02, 0xfb02, 0x666c, 2 },
+  { 0xfb03, 0xfb03, 0x666669, 3 },
+  { 0xfb04, 0xfb04, 0x66666c, 3 }
+};
+#define latin1UnicodeMapLen (sizeof(latin1UnicodeMapRanges) / sizeof(UnicodeMapRange))
+
+static UnicodeMapRange ascii7UnicodeMapRanges[] = {
+  { 0x000a, 0x000a, 0x0a, 1 },
+  { 0x000c, 0x000d, 0x0c, 1 },
+  { 0x0020, 0x005f, 0x20, 1 },
+  { 0x0061, 0x007e, 0x61, 1 },
+  { 0x00a6, 0x00a6, 0x7c, 1 },
+  { 0x00a9, 0x00a9, 0x286329, 3 },
+  { 0x00ae, 0x00ae, 0x285229, 3 },
+  { 0x00b7, 0x00b7, 0x2a, 1 },
+  { 0x00bc, 0x00bc, 0x312f34, 3 },
+  { 0x00bd, 0x00bd, 0x312f32, 3 },
+  { 0x00be, 0x00be, 0x332f34, 3 },
+  { 0x00c0, 0x00c0, 0x41, 1 },
+  { 0x00c1, 0x00c1, 0x41, 1 },
+  { 0x00c2, 0x00c2, 0x41, 1 },
+  { 0x00c3, 0x00c3, 0x41, 1 },
+  { 0x00c4, 0x00c4, 0x41, 1 },
+  { 0x00c5, 0x00c5, 0x41, 1 },
+  { 0x00c6, 0x00c6, 0x4145, 2 },
+  { 0x00c7, 0x00c7, 0x43, 1 },
+  { 0x00c8, 0x00c8, 0x45, 1 },
+  { 0x00c9, 0x00c9, 0x45, 1 },
+  { 0x00ca, 0x00ca, 0x45, 1 },
+  { 0x00cb, 0x00cb, 0x45, 1 },
+  { 0x00cc, 0x00cc, 0x49, 1 },
+  { 0x00cd, 0x00cd, 0x49, 1 },
+  { 0x00ce, 0x00ce, 0x49, 1 },
+  { 0x00cf, 0x00cf, 0x49, 1 },
+  { 0x00d1, 0x00d2, 0x4e, 1 },
+  { 0x00d3, 0x00d3, 0x4f, 1 },
+  { 0x00d4, 0x00d4, 0x4f, 1 },
+  { 0x00d5, 0x00d5, 0x4f, 1 },
+  { 0x00d6, 0x00d6, 0x4f, 1 },
+  { 0x00d7, 0x00d7, 0x78, 1 },
+  { 0x00d8, 0x00d8, 0x4f, 1 },
+  { 0x00d9, 0x00d9, 0x55, 1 },
+  { 0x00da, 0x00da, 0x55, 1 },
+  { 0x00db, 0x00db, 0x55, 1 },
+  { 0x00dc, 0x00dc, 0x55, 1 },
+  { 0x00dd, 0x00dd, 0x59, 1 },
+  { 0x00e0, 0x00e0, 0x61, 1 },
+  { 0x00e1, 0x00e1, 0x61, 1 },
+  { 0x00e2, 0x00e2, 0x61, 1 },
+  { 0x00e3, 0x00e3, 0x61, 1 },
+  { 0x00e4, 0x00e4, 0x61, 1 },
+  { 0x00e5, 0x00e5, 0x61, 1 },
+  { 0x00e6, 0x00e6, 0x6165, 2 },
+  { 0x00e7, 0x00e7, 0x63, 1 },
+  { 0x00e8, 0x00e8, 0x65, 1 },
+  { 0x00e9, 0x00e9, 0x65, 1 },
+  { 0x00ea, 0x00ea, 0x65, 1 },
+  { 0x00eb, 0x00eb, 0x65, 1 },
+  { 0x00ec, 0x00ec, 0x69, 1 },
+  { 0x00ed, 0x00ed, 0x69, 1 },
+  { 0x00ee, 0x00ee, 0x69, 1 },
+  { 0x00ef, 0x00ef, 0x69, 1 },
+  { 0x00f1, 0x00f2, 0x6e, 1 },
+  { 0x00f3, 0x00f3, 0x6f, 1 },
+  { 0x00f4, 0x00f4, 0x6f, 1 },
+  { 0x00f5, 0x00f5, 0x6f, 1 },
+  { 0x00f6, 0x00f6, 0x6f, 1 },
+  { 0x00f7, 0x00f7, 0x2f, 1 },
+  { 0x00f8, 0x00f8, 0x6f, 1 },
+  { 0x00f9, 0x00f9, 0x75, 1 },
+  { 0x00fa, 0x00fa, 0x75, 1 },
+  { 0x00fb, 0x00fb, 0x75, 1 },
+  { 0x00fc, 0x00fc, 0x75, 1 },
+  { 0x00fd, 0x00fd, 0x79, 1 },
+  { 0x00ff, 0x00ff, 0x79, 1 },
+  { 0x0131, 0x0131, 0x69, 1 },
+  { 0x0141, 0x0141, 0x4c, 1 },
+  { 0x0152, 0x0152, 0x4f45, 2 },
+  { 0x0153, 0x0153, 0x6f65, 2 },
+  { 0x0160, 0x0160, 0x53, 1 },
+  { 0x0178, 0x0178, 0x59, 1 },
+  { 0x017d, 0x017d, 0x5a, 1 },
+  { 0x2013, 0x2013, 0x2d, 1 },
+  { 0x2014, 0x2014, 0x2d2d, 2 },
+  { 0x2018, 0x2018, 0x60, 1 },
+  { 0x2019, 0x2019, 0x27, 1 },
+  { 0x201c, 0x201c, 0x22, 1 },
+  { 0x201d, 0x201d, 0x22, 1 },
+  { 0x2022, 0x2022, 0x2a, 1 },
+  { 0x2026, 0x2026, 0x2e2e2e, 3 },
+  { 0x2122, 0x2122, 0x544d, 2 },
+  { 0x2212, 0x2212, 0x2d, 1 },
+  { 0xf6f9, 0xf6f9, 0x4c, 1 },
+  { 0xf6fa, 0xf6fa, 0x4f45, 2 },
+  { 0xf6fd, 0xf6fd, 0x53, 1 },
+  { 0xf6fe, 0xf6fe, 0x7e, 1 },
+  { 0xf6ff, 0xf6ff, 0x5a, 1 },
+  { 0xf721, 0xf721, 0x21, 1 },
+  { 0xf724, 0xf724, 0x24, 1 },
+  { 0xf726, 0xf726, 0x26, 1 },
+  { 0xf730, 0xf739, 0x30, 1 },
+  { 0xf73f, 0xf73f, 0x3f, 1 },
+  { 0xf761, 0xf77a, 0x41, 1 },
+  { 0xf7e0, 0xf7e0, 0x41, 1 },
+  { 0xf7e1, 0xf7e1, 0x41, 1 },
+  { 0xf7e2, 0xf7e2, 0x41, 1 },
+  { 0xf7e3, 0xf7e3, 0x41, 1 },
+  { 0xf7e4, 0xf7e4, 0x41, 1 },
+  { 0xf7e5, 0xf7e5, 0x41, 1 },
+  { 0xf7e6, 0xf7e6, 0x4145, 2 },
+  { 0xf7e7, 0xf7e7, 0x43, 1 },
+  { 0xf7e8, 0xf7e8, 0x45, 1 },
+  { 0xf7e9, 0xf7e9, 0x45, 1 },
+  { 0xf7ea, 0xf7ea, 0x45, 1 },
+  { 0xf7eb, 0xf7eb, 0x45, 1 },
+  { 0xf7ec, 0xf7ec, 0x49, 1 },
+  { 0xf7ed, 0xf7ed, 0x49, 1 },
+  { 0xf7ee, 0xf7ee, 0x49, 1 },
+  { 0xf7ef, 0xf7ef, 0x49, 1 },
+  { 0xf7f1, 0xf7f2, 0x4e, 1 },
+  { 0xf7f3, 0xf7f3, 0x4f, 1 },
+  { 0xf7f4, 0xf7f4, 0x4f, 1 },
+  { 0xf7f5, 0xf7f5, 0x4f, 1 },
+  { 0xf7f6, 0xf7f6, 0x4f, 1 },
+  { 0xf7f8, 0xf7f8, 0x4f, 1 },
+  { 0xf7f9, 0xf7f9, 0x55, 1 },
+  { 0xf7fa, 0xf7fa, 0x55, 1 },
+  { 0xf7fb, 0xf7fb, 0x55, 1 },
+  { 0xf7fc, 0xf7fc, 0x55, 1 },
+  { 0xf7fd, 0xf7fd, 0x59, 1 },
+  { 0xf7ff, 0xf7ff, 0x59, 1 },
+  { 0xfb00, 0xfb00, 0x6666, 2 },
+  { 0xfb01, 0xfb01, 0x6669, 2 },
+  { 0xfb02, 0xfb02, 0x666c, 2 },
+  { 0xfb03, 0xfb03, 0x666669, 3 },
+  { 0xfb04, 0xfb04, 0x66666c, 3 }
+};
+#define ascii7UnicodeMapLen (sizeof(ascii7UnicodeMapRanges) / sizeof(UnicodeMapRange))
+
+static UnicodeMapRange symbolUnicodeMapRanges[] = {
+  { 0x0020, 0x0021, 0x20, 1 },
+  { 0x0023, 0x0023, 0x23, 1 },
+  { 0x0025, 0x0026, 0x25, 1 },
+  { 0x0028, 0x0029, 0x28, 1 },
+  { 0x002b, 0x002c, 0x2b, 1 },
+  { 0x002e, 0x003f, 0x2e, 1 },
+  { 0x005b, 0x005b, 0x5b, 1 },
+  { 0x005d, 0x005d, 0x5d, 1 },
+  { 0x005f, 0x005f, 0x5f, 1 },
+  { 0x007b, 0x007d, 0x7b, 1 },
+  { 0x00ac, 0x00ac, 0xd8, 1 },
+  { 0x00b0, 0x00b1, 0xb0, 1 },
+  { 0x00b5, 0x00b5, 0x6d, 1 },
+  { 0x00d7, 0x00d7, 0xb4, 1 },
+  { 0x00f7, 0x00f7, 0xb8, 1 },
+  { 0x0192, 0x0192, 0xa6, 1 },
+  { 0x0391, 0x0392, 0x41, 1 },
+  { 0x0393, 0x0393, 0x47, 1 },
+  { 0x0395, 0x0395, 0x45, 1 },
+  { 0x0396, 0x0396, 0x5a, 1 },
+  { 0x0397, 0x0397, 0x48, 1 },
+  { 0x0398, 0x0398, 0x51, 1 },
+  { 0x0399, 0x0399, 0x49, 1 },
+  { 0x039a, 0x039d, 0x4b, 1 },
+  { 0x039e, 0x039e, 0x58, 1 },
+  { 0x039f, 0x03a0, 0x4f, 1 },
+  { 0x03a1, 0x03a1, 0x52, 1 },
+  { 0x03a3, 0x03a5, 0x53, 1 },
+  { 0x03a6, 0x03a6, 0x46, 1 },
+  { 0x03a7, 0x03a7, 0x43, 1 },
+  { 0x03a8, 0x03a8, 0x59, 1 },
+  { 0x03b1, 0x03b2, 0x61, 1 },
+  { 0x03b3, 0x03b3, 0x67, 1 },
+  { 0x03b4, 0x03b5, 0x64, 1 },
+  { 0x03b6, 0x03b6, 0x7a, 1 },
+  { 0x03b7, 0x03b7, 0x68, 1 },
+  { 0x03b8, 0x03b8, 0x71, 1 },
+  { 0x03b9, 0x03b9, 0x69, 1 },
+  { 0x03ba, 0x03bb, 0x6b, 1 },
+  { 0x03bd, 0x03bd, 0x6e, 1 },
+  { 0x03be, 0x03be, 0x78, 1 },
+  { 0x03bf, 0x03c0, 0x6f, 1 },
+  { 0x03c1, 0x03c1, 0x72, 1 },
+  { 0x03c2, 0x03c2, 0x56, 1 },
+  { 0x03c3, 0x03c5, 0x73, 1 },
+  { 0x03c6, 0x03c6, 0x66, 1 },
+  { 0x03c7, 0x03c7, 0x63, 1 },
+  { 0x03c8, 0x03c8, 0x79, 1 },
+  { 0x03c9, 0x03c9, 0x77, 1 },
+  { 0x03d1, 0x03d1, 0x4a, 1 },
+  { 0x03d2, 0x03d2, 0xa1, 1 },
+  { 0x03d5, 0x03d5, 0x6a, 1 },
+  { 0x03d6, 0x03d6, 0x76, 1 },
+  { 0x2022, 0x2022, 0xb7, 1 },
+  { 0x2026, 0x2026, 0xbc, 1 },
+  { 0x2032, 0x2032, 0xa2, 1 },
+  { 0x2033, 0x2033, 0xb2, 1 },
+  { 0x2044, 0x2044, 0xa4, 1 },
+  { 0x2111, 0x2111, 0xc1, 1 },
+  { 0x2118, 0x2118, 0xc3, 1 },
+  { 0x211c, 0x211c, 0xc2, 1 },
+  { 0x2126, 0x2126, 0x57, 1 },
+  { 0x2135, 0x2135, 0xc0, 1 },
+  { 0x2190, 0x2193, 0xac, 1 },
+  { 0x2194, 0x2194, 0xab, 1 },
+  { 0x21b5, 0x21b5, 0xbf, 1 },
+  { 0x21d0, 0x21d3, 0xdc, 1 },
+  { 0x21d4, 0x21d4, 0xdb, 1 },
+  { 0x2200, 0x2200, 0x22, 1 },
+  { 0x2202, 0x2202, 0xb6, 1 },
+  { 0x2203, 0x2203, 0x24, 1 },
+  { 0x2205, 0x2205, 0xc6, 1 },
+  { 0x2206, 0x2206, 0x44, 1 },
+  { 0x2207, 0x2207, 0xd1, 1 },
+  { 0x2208, 0x2209, 0xce, 1 },
+  { 0x220b, 0x220b, 0x27, 1 },
+  { 0x220f, 0x220f, 0xd5, 1 },
+  { 0x2211, 0x2211, 0xe5, 1 },
+  { 0x2212, 0x2212, 0x2d, 1 },
+  { 0x2217, 0x2217, 0x2a, 1 },
+  { 0x221a, 0x221a, 0xd6, 1 },
+  { 0x221d, 0x221d, 0xb5, 1 },
+  { 0x221e, 0x221e, 0xa5, 1 },
+  { 0x2220, 0x2220, 0xd0, 1 },
+  { 0x2227, 0x2228, 0xd9, 1 },
+  { 0x2229, 0x222a, 0xc7, 1 },
+  { 0x222b, 0x222b, 0xf2, 1 },
+  { 0x2234, 0x2234, 0x5c, 1 },
+  { 0x223c, 0x223c, 0x7e, 1 },
+  { 0x2245, 0x2245, 0x40, 1 },
+  { 0x2248, 0x2248, 0xbb, 1 },
+  { 0x2260, 0x2261, 0xb9, 1 },
+  { 0x2264, 0x2264, 0xa3, 1 },
+  { 0x2265, 0x2265, 0xb3, 1 },
+  { 0x2282, 0x2282, 0xcc, 1 },
+  { 0x2283, 0x2283, 0xc9, 1 },
+  { 0x2284, 0x2284, 0xcb, 1 },
+  { 0x2286, 0x2286, 0xcd, 1 },
+  { 0x2287, 0x2287, 0xca, 1 },
+  { 0x2295, 0x2295, 0xc5, 1 },
+  { 0x2297, 0x2297, 0xc4, 1 },
+  { 0x22a5, 0x22a5, 0x5e, 1 },
+  { 0x22c5, 0x22c5, 0xd7, 1 },
+  { 0x2320, 0x2320, 0xf3, 1 },
+  { 0x2321, 0x2321, 0xf5, 1 },
+  { 0x2329, 0x2329, 0xe1, 1 },
+  { 0x232a, 0x232a, 0xf1, 1 },
+  { 0x25ca, 0x25ca, 0xe0, 1 },
+  { 0x2660, 0x2660, 0xaa, 1 },
+  { 0x2663, 0x2663, 0xa7, 1 },
+  { 0x2665, 0x2665, 0xa9, 1 },
+  { 0x2666, 0x2666, 0xa8, 1 },
+  { 0xf6d9, 0xf6d9, 0xd3, 1 },
+  { 0xf6da, 0xf6da, 0xd2, 1 },
+  { 0xf6db, 0xf6db, 0xd4, 1 },
+  { 0xf8e5, 0xf8e5, 0x60, 1 },
+  { 0xf8e6, 0xf8e7, 0xbd, 1 },
+  { 0xf8e8, 0xf8ea, 0xe2, 1 },
+  { 0xf8eb, 0xf8f4, 0xe6, 1 },
+  { 0xf8f5, 0xf8f5, 0xf4, 1 },
+  { 0xf8f6, 0xf8fe, 0xf6, 1 }
+};
+#define symbolUnicodeMapLen (sizeof(symbolUnicodeMapRanges) / sizeof(UnicodeMapRange))
+
+static UnicodeMapRange zapfDingbatsUnicodeMapRanges[] = {
+  { 0x0020, 0x0020, 0x20, 1 },
+  { 0x2192, 0x2192, 0xd5, 1 },
+  { 0x2194, 0x2195, 0xd6, 1 },
+  { 0x2460, 0x2469, 0xac, 1 },
+  { 0x25a0, 0x25a0, 0x6e, 1 },
+  { 0x25b2, 0x25b2, 0x73, 1 },
+  { 0x25bc, 0x25bc, 0x74, 1 },
+  { 0x25c6, 0x25c6, 0x75, 1 },
+  { 0x25cf, 0x25cf, 0x6c, 1 },
+  { 0x25d7, 0x25d7, 0x77, 1 },
+  { 0x2605, 0x2605, 0x48, 1 },
+  { 0x260e, 0x260e, 0x25, 1 },
+  { 0x261b, 0x261b, 0x2a, 1 },
+  { 0x261e, 0x261e, 0x2b, 1 },
+  { 0x2660, 0x2660, 0xab, 1 },
+  { 0x2663, 0x2663, 0xa8, 1 },
+  { 0x2665, 0x2665, 0xaa, 1 },
+  { 0x2666, 0x2666, 0xa9, 1 },
+  { 0x2701, 0x2704, 0x21, 1 },
+  { 0x2706, 0x2709, 0x26, 1 },
+  { 0x270c, 0x2727, 0x2c, 1 },
+  { 0x2729, 0x274b, 0x49, 1 },
+  { 0x274d, 0x274d, 0x6d, 1 },
+  { 0x274f, 0x2752, 0x6f, 1 },
+  { 0x2756, 0x2756, 0x76, 1 },
+  { 0x2758, 0x275e, 0x78, 1 },
+  { 0x2761, 0x2767, 0xa1, 1 },
+  { 0x2776, 0x2794, 0xb6, 1 },
+  { 0x2798, 0x27af, 0xd8, 1 },
+  { 0x27b1, 0x27be, 0xf1, 1 }
+};
+#define zapfDingbatsUnicodeMapLen (sizeof(zapfDingbatsUnicodeMapRanges) / sizeof(UnicodeMapRange))
index 0913ed350b7745b63c2f286c1e63fca189480d82..6f207d8e45e0fe976c16bbb384bf1fef68fe709d 100644 (file)
@@ -2,7 +2,7 @@
 //
 // XOutputDev.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include "gmem.h"
 #include "gfile.h"
 #include "GString.h"
+#include "GList.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Link.h"
 #include "GfxState.h"
 #include "GfxFont.h"
+#include "UnicodeMap.h"
+#include "CharCodeToUnicode.h"
 #include "FontFile.h"
-#include "FontEncoding.h"
 #include "Error.h"
-#include "Params.h"
 #include "TextOutputDev.h"
 #include "XOutputDev.h"
 #if HAVE_T1LIB_H
 #include "T1Font.h"
 #endif
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+#include "FTFont.h"
+#endif
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 #include "TTFont.h"
 #endif
 
-#include "XOutputFontInfo.h"
-
 #ifdef VMS
 #if (__VMS_VER < 70000000)
 extern "C" int unlink(char *filename);
@@ -63,518 +66,80 @@ typedef char *XPointer;
 #define maxCurveSplits 6       // max number of splits when recursively
                                //   drawing Bezier curves
 
-//------------------------------------------------------------------------
-// Parameters
-//------------------------------------------------------------------------
-
-GBool installCmap = gFalse;
-
-int rgbCubeSize = defaultRGBCube;
-
-#if HAVE_T1LIB_H
-GString *t1libControl = NULL;
-#endif
-
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-GString *freeTypeControl = NULL;
-#endif
-
-GString *t1Courier = NULL;
-GString *t1CourierBold = NULL;
-GString *t1CourierBoldOblique = NULL;
-GString *t1CourierOblique = NULL;
-GString *t1Helvetica = NULL;
-GString *t1HelveticaBold = NULL;
-GString *t1HelveticaBoldOblique = NULL;
-GString *t1HelveticaOblique = NULL;
-GString *t1Symbol = NULL;
-GString *t1TimesBold = NULL;
-GString *t1TimesBoldItalic = NULL;
-GString *t1TimesItalic = NULL;
-GString *t1TimesRoman = NULL;
-GString *t1ZapfDingbats = NULL;
-
-GBool useEUCJP = gFalse;
-#if JAPANESE_SUPPORT
-GString *japan12Font = NULL;
-#endif
-#if CHINESE_GB_SUPPORT
-GString *gb12Font = NULL;
-#endif
-#if CHINESE_CNS_SUPPORT
-GString *cns13Font = NULL;
-#endif
-
-//------------------------------------------------------------------------
-// Font map
-//------------------------------------------------------------------------
-
-struct FontMapEntry {
-  char *pdfFont;
-  char *xFont;
-  GString **t1Font;
-  FontEncoding *encoding;
-};
-
-static FontMapEntry fontMap[] = {
-  {"Courier",               "-*-courier-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",          &t1Courier,              &isoLatin1Encoding},
-  {"Courier-Bold",          "-*-courier-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",            &t1CourierBold,          &isoLatin1Encoding},
-  {"Courier-BoldOblique",   "-*-courier-bold-o-normal-*-%s-*-*-*-*-*-iso8859-1",            &t1CourierBoldOblique,   &isoLatin1Encoding},
-  {"Courier-Oblique",       "-*-courier-medium-o-normal-*-%s-*-*-*-*-*-iso8859-1",          &t1CourierOblique,       &isoLatin1Encoding},
-  {"Helvetica",             "-*-helvetica-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",        &t1Helvetica,            &isoLatin1Encoding},
-  {"Helvetica-Bold",        "-*-helvetica-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",          &t1HelveticaBold,        &isoLatin1Encoding},
-  {"Helvetica-BoldOblique", "-*-helvetica-bold-o-normal-*-%s-*-*-*-*-*-iso8859-1",          &t1HelveticaBoldOblique, &isoLatin1Encoding},
-  {"Helvetica-Oblique",     "-*-helvetica-medium-o-normal-*-%s-*-*-*-*-*-iso8859-1",        &t1HelveticaOblique,     &isoLatin1Encoding},
-  {"Symbol",                "-*-symbol-medium-r-normal-*-%s-*-*-*-*-*-adobe-fontspecific",  &t1Symbol,               &symbolEncoding},
-  {"Times-Bold",            "-*-times-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",              &t1TimesBold,            &isoLatin1Encoding},
-  {"Times-BoldItalic",      "-*-times-bold-i-normal-*-%s-*-*-*-*-*-iso8859-1",              &t1TimesBoldItalic,      &isoLatin1Encoding},
-  {"Times-Italic",          "-*-times-medium-i-normal-*-%s-*-*-*-*-*-iso8859-1",            &t1TimesItalic,          &isoLatin1Encoding},
-  {"Times-Roman",           "-*-times-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",            &t1TimesRoman,           &isoLatin1Encoding},
-  {"ZapfDingbats",          "-*-zapfdingbats-medium-r-normal-*-%s-*-*-*-*-*-*-*",           &t1ZapfDingbats,         &zapfDingbatsEncoding},
-  {NULL}
-};
-
-static FontMapEntry *userFontMap;
-
 //------------------------------------------------------------------------
 // Font substitutions
 //------------------------------------------------------------------------
 
-struct FontSubst {
-  char *xFont;
-  GString **t1Font;
+struct XOutFontSubst {
+  char *name;
   double mWidth;
 };
 
 // index: {symbolic:12, fixed:8, serif:4, sans-serif:0} + bold*2 + italic
-static FontSubst fontSubst[16] = {
-  {"-*-helvetica-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",       &t1Helvetica,            0.833},
-  {"-*-helvetica-medium-o-normal-*-%s-*-*-*-*-*-iso8859-1",       &t1HelveticaOblique,     0.833},
-  {"-*-helvetica-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",         &t1HelveticaBold,        0.889},
-  {"-*-helvetica-bold-o-normal-*-%s-*-*-*-*-*-iso8859-1",         &t1HelveticaBoldOblique, 0.889},
-  {"-*-times-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",           &t1TimesRoman,           0.788},
-  {"-*-times-medium-i-normal-*-%s-*-*-*-*-*-iso8859-1",           &t1TimesItalic,          0.722},
-  {"-*-times-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",             &t1TimesBold,            0.833},
-  {"-*-times-bold-i-normal-*-%s-*-*-*-*-*-iso8859-1",             &t1TimesBoldItalic,      0.778},
-  {"-*-courier-medium-r-normal-*-%s-*-*-*-*-*-iso8859-1",         &t1Courier,              0.600},
-  {"-*-courier-medium-o-normal-*-%s-*-*-*-*-*-iso8859-1",         &t1CourierOblique,       0.600},
-  {"-*-courier-bold-r-normal-*-%s-*-*-*-*-*-iso8859-1",           &t1CourierBold,          0.600},
-  {"-*-courier-bold-o-normal-*-%s-*-*-*-*-*-iso8859-1",           &t1CourierBoldOblique,   0.600},
-  {"-*-symbol-medium-r-normal-*-%s-*-*-*-*-*-adobe-fontspecific", &t1Symbol,               0.576},
-  {"-*-symbol-medium-r-normal-*-%s-*-*-*-*-*-adobe-fontspecific", &t1Symbol,               0.576},
-  {"-*-symbol-medium-r-normal-*-%s-*-*-*-*-*-adobe-fontspecific", &t1Symbol,               0.576},
-  {"-*-symbol-medium-r-normal-*-%s-*-*-*-*-*-adobe-fontspecific", &t1Symbol,               0.576}
-};
-
-//------------------------------------------------------------------------
-// 16-bit fonts
-//------------------------------------------------------------------------
-
-#if JAPANESE_SUPPORT
-
-static char *japan12DefFont =
-    "-*-fixed-medium-r-normal-*-%s-*-*-*-*-*-jisx0208.1983-0";
-
-// CID 0 .. 96
-static Gushort japan12Map[96] = {
-  0x2121, 0x2121, 0x212a, 0x2149, 0x2174, 0x2170, 0x2173, 0x2175, // 00 .. 07
-  0x2147, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x213e, 0x2123, // 08 .. 0f
-  0x213f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, // 10 .. 17
-  0x2337, 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, // 18 .. 1f
-  0x2129, 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, // 20 .. 27
-  0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, // 28 .. 2f
-  0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, // 30 .. 37
-  0x2357, 0x2358, 0x2359, 0x235a, 0x214e, 0x216f, 0x214f, 0x2130, // 38 .. 3f
-  0x2132, 0x2146, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, // 40 .. 47
-  0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, // 48 .. 4f
-  0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, // 50 .. 57
-  0x2377, 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2141  // 58 .. 5f
-};
-
-// CID 325 .. 421
-static Gushort japan12KanaMap1[97] = {
-  0x2131, 0x2121, 0x2123, 0x2156, 0x2157, 0x2122, 0x2126, 0x2572,
-  0x2521, 0x2523, 0x2525, 0x2527, 0x2529, 0x2563, 0x2565, 0x2567,
-  0x2543, 0x213c, 0x2522, 0x2524, 0x2526, 0x2528, 0x252a, 0x252b,
-  0x252d, 0x252f, 0x2531, 0x2533, 0x2535, 0x2537, 0x2539, 0x253b,
-  0x253d, 0x253f, 0x2541, 0x2544, 0x2546, 0x2548, 0x254a, 0x254b,
-  0x254c, 0x254d, 0x254e, 0x254f, 0x2552, 0x2555, 0x2558, 0x255b,
-  0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2564, 0x2566, 0x2568,
-  0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256f, 0x2573, 0x212b,
-  0x212c, 0x212e, 0x2570, 0x2571, 0x256e, 0x2575, 0x2576, 0x2574,
-  0x252c, 0x252e, 0x2530, 0x2532, 0x2534, 0x2536, 0x2538, 0x253a,
-  0x253c, 0x253e, 0x2540, 0x2542, 0x2545, 0x2547, 0x2549, 0x2550,
-  0x2551, 0x2553, 0x2554, 0x2556, 0x2557, 0x2559, 0x255a, 0x255c,
-  0x255d
+static XOutFontSubst xOutSubstFonts[16] = {
+  {"Helvetica",             0.833},
+  {"Helvetica-Oblique",     0.833},
+  {"Helvetica-Bold",        0.889},
+  {"Helvetica-BoldOblique", 0.889},
+  {"Times-Roman",           0.788},
+  {"Times-Italic",          0.722},
+  {"Times-Bold",            0.833},
+  {"Times-BoldItalic",      0.778},
+  {"Courier",               0.600},
+  {"Courier-Oblique",       0.600},
+  {"Courier-Bold",          0.600},
+  {"Courier-BoldOblique",   0.600},
+  {"Symbol",                0.576},
+  {"Symbol",                0.576},
+  {"Symbol",                0.576},
+  {"Symbol",                0.576}
 };
 
-// CID 501 .. 598
-static Gushort japan12KanaMap2[98] = {
-  0x212d, 0x212f, 0x216d, 0x214c, 0x214d, 0x2152, 0x2153, 0x2154,
-  0x2155, 0x2158, 0x2159, 0x215a, 0x215b, 0x213d, 0x2121, 0x2472,
-  0x2421, 0x2423, 0x2425, 0x2427, 0x2429, 0x2463, 0x2465, 0x2467,
-  0x2443, 0x2422, 0x2424, 0x2426, 0x2428, 0x242a, 0x242b, 0x242d,
-  0x242f, 0x2431, 0x2433, 0x2435, 0x2437, 0x2439, 0x243b, 0x243d,
-  0x243f, 0x2441, 0x2444, 0x2446, 0x2448, 0x244a, 0x244b, 0x244c,
-  0x244d, 0x244e, 0x244f, 0x2452, 0x2455, 0x2458, 0x245b, 0x245e,
-  0x245f, 0x2460, 0x2461, 0x2462, 0x2464, 0x2466, 0x2468, 0x2469,
-  0x246a, 0x246b, 0x246c, 0x246d, 0x246f, 0x2473, 0x2470, 0x2471,
-  0x246e, 0x242c, 0x242e, 0x2430, 0x2432, 0x2434, 0x2436, 0x2438,
-  0x243a, 0x243c, 0x243e, 0x2440, 0x2442, 0x2445, 0x2447, 0x2449,
-  0x2450, 0x2451, 0x2453, 0x2454, 0x2456, 0x2457, 0x2459, 0x245a,
-  0x245c, 0x245d
-};
-
-static char *japan12Roman[10] = {
-  "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"
-};
-
-static char *japan12Abbrev1[6] = {
-  "mm", "cm", "km", "mg", "kg", "cc"
-};
-
-#endif // JAPANESE_SUPPORT
-
-#if CHINESE_GB_SUPPORT
-
-static char *gb12DefFont =
-    "-*-fangsong ti-medium-r-normal-*-%s-*-*-*-*-*-gb2312.1980-0";
-
-static Gushort gb12Map[940] = {
-  // 0 - 95
-  0x0000, 0x2121, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325, 0x2326,
-  0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e,
-  0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336,
-  0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e,
-  0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346,
-  0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e,
-  0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356,
-  0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e,
-  0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366,
-  0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e,
-  0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376,
-  0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x212b,
-
-  // 96-355
-  0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127, 0x2128,
-  0x2129, 0x212a, 0x212b, 0x212c, 0x212d, 0x212e, 0x212f, 0x2130,
-  0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137, 0x2138,
-  0x2139, 0x213a, 0x213b, 0x213c, 0x213d, 0x213e, 0x213f, 0x2140,
-  0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147, 0x2148,
-  0x2149, 0x214a, 0x214b, 0x214c, 0x214d, 0x214e, 0x214f, 0x2150,
-  0x2151, 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158,
-  0x2159, 0x215a, 0x215b, 0x215c, 0x215d, 0x215e, 0x215f, 0x2160,
-  0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
-  0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, 0x2170,
-  0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178,
-  0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x2231, 0x2232,
-  0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a,
-  0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242,
-  0x2243, 0x2244, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a,
-  0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252,
-  0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2259, 0x225a,
-  0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260, 0x2261, 0x2262,
-  0x2265, 0x2266, 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c,
-  0x226d, 0x226e, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276,
-  0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x2321, 0x2322,
-  0x2323, 0x2324, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a,
-  0x232b, 0x232c, 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332,
-  0x2333, 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a,
-  0x233b, 0x233c, 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342,
-  0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a,
-  0x234b, 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352,
-  0x2353, 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a,
-  0x235b, 0x235c, 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362,
-  0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a,
-  0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372,
-  0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a,
-  0x237b, 0x237c, 0x237d, 0x237e,
-
-  // 356-524
-                                  0x2421, 0x2422, 0x2423, 0x2424,
-  0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a, 0x242b, 0x242c,
-  0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432, 0x2433, 0x2434,
-  0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a, 0x243b, 0x243c,
-  0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442, 0x2443, 0x2444,
-  0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a, 0x244b, 0x244c,
-  0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454,
-  0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a, 0x245b, 0x245c,
-  0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464,
-  0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c,
-  0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 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, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551,
-  0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559,
-  0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561,
-  0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569,
-  0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571,
-  0x2572, 0x2573, 0x2574, 0x2575, 0x2576,
-
-  // 525-572
-                                          0x2621, 0x2622, 0x2623,
-  0x2624, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b,
-  0x262c, 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633,
-  0x2634, 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643,
-  0x2644, 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b,
-  0x264c, 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653,
-  0x2654, 0x2655, 0x2656, 0x2657, 0x2658,
-
-  // 573-601
-                                          0,      0,      0,
-  0,      0,      0,      0,      0,      0,      0,      0,
-  0,      0,      0,      0,      0,      0,      0,      0,
-  0,      0,      0,      0,      0,      0,      0,      0,
-  0,      0,
-
-  // 602-667
-                  0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726,
-  0x2727, 0x2728, 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, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755,
-  0x2756, 0x2757, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d,
-  0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
-  0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d,
-  0x276e, 0x276f, 0x2770, 0x2771,
-
-  // 668-699
-                                  0x2821, 0x2822, 0x2823, 0x2824,
-  0x2825, 0x2826, 0x2827, 0x2828, 0x2829, 0x282a, 0x282b, 0x282c,
-  0x282d, 0x282e, 0x282f, 0x2830, 0x2831, 0x2832, 0x2833, 0x2834,
-  0x2835, 0x2836, 0x2837, 0x2838, 0x2839, 0x283a, 0,      0,
-  0,      0,      0,      0,
-
-  // 700-737
-                                  0x2845, 0x2846, 0x2847, 0x2848,
-  0x2849, 0x284a, 0x284b, 0x284c, 0x284d, 0x284e, 0x284f, 0x2850,
-  0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857, 0x2858,
-  0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f, 0x2860,
-  0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2867, 0x2868,
-  0x2869, 0,
-
-  // 738-813
-                  0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
-  0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931,
-  0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939,
-  0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941,
-  0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
-  0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951,
-  0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959,
-  0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961,
-  0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
-  0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f,
-
-  // 814-939
-                                                  0x2321, 0x2322,
-  0x2323, 0x2324, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a,
-  0x232b, 0x232c, 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332,
-  0x2333, 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a,
-  0x233b, 0x233c, 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342,
-  0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a,
-  0x234b, 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352,
-  0x2353, 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a,
-  0x235b, 0x235c, 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362,
-  0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a,
-  0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372,
-  0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a,
-  0x237b, 0x237c, 0x237d, 0x237e, 0x2821, 0x2822, 0x2823, 0x2824,
-  0x2825, 0x2826, 0x2827, 0x2828, 0x2829, 0x282a, 0x282b, 0x282c,
-  0x282d, 0x282e, 0x282f, 0x2830, 0x2831, 0x2832, 0x2833, 0x2834,
-  0x2835, 0x2836, 0x2837, 0x2838, 0x2839, 0x283a, 0,      0,
-  0,      0,      0,      0
-};
-
-#endif // CHINESE_GB_SUPPORT
-
-#if CHINESE_CNS_SUPPORT
-
-static char *cns13DefFont =
-    "-*-fixed-medium-r-normal-*-%s-*-*-*-*-*-big5-0";
-
-static Gushort cns13Map1[99] = {
-  // 0-98
-  0,      0xa140, 0xa149, 0xa1a8, 0xa1ad, 0xa243, 0xa248, 0xa1ae,
-  0xa1a6, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1df, 0xa144,
-  0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5,
-  0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6,
-  0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4,
-  0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc,
-  0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4,
-  0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa165, 0xa242, 0xa166, 0xa173,
-  0xa15a, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee,
-  0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6,
-  0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe,
-  0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa159, 0xa162, 0xa1e3,
-  0,      0,      0xa14b
-};
-
-static Gushort cns13Map2[95] = {
-  // 13648-13742
-          0xa140, 0xa149, 0xa1a8, 0xa1ad, 0xa244, 0xa248, 0xa1ae,
-  0xa1a6, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1df, 0xa144,
-  0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5,
-  0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6,
-  0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4,
-  0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc,
-  0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4,
-  0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa165, 0xa242, 0xa166, 0xa173,
-  0xa15a, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee,
-  0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6,
-  0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe,
-  0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa159, 0xa162, 0xa1c3
-};
-
-#endif
-
-//------------------------------------------------------------------------
-// Constructed characters
-//------------------------------------------------------------------------
-
-#define lastRegularChar 0x0ff
-#define firstSubstChar  0x100
-#define lastSubstChar   0x104
-#define firstConstrChar 0x105
-#define lastConstrChar  0x106
-#define firstMultiChar  0x107
-#define lastMultiChar   0x110
-
-// substituted chars
-static Guchar substChars[] = {
-  0x27,                                // 100: quotesingle --> quoteright
-  0x2d,                                // 101: emdash --> hyphen
-  0xad,                                // 102: hyphen --> endash
-  0x2f,                                // 103: fraction --> slash
-  0xb0,                                // 104: ring --> degree
-};
-
-// constructed chars
-// 105: bullet
-// 106: trademark
-
-// built-up chars
-static char *multiChars[] = {
-  "fi",                                // 107: fi
-  "fl",                                // 108: fl
-  "ff",                                // 109: ff
-  "ffi",                       // 10a: ffi
-  "ffl",                       // 10b: ffl
-  "OE",                                // 10c: OE
-  "oe",                                // 10d: oe
-  "...",                       // 10e: ellipsis
-  "``",                                // 10f: quotedblleft
-  "''"                         // 110: quotedblright
-};
-
-// ignored chars
-// 111: Lslash
-//    : Scaron
-//    : Zcaron
-//    : Ydieresis
-//    : breve
-//    : caron
-//    : circumflex
-//    : dagger
-//    : daggerdbl
-//    : dotaccent
-//    : dotlessi
-//    : florin
-//    : grave
-//    : guilsinglleft
-//    : guilsinglright
-//    : hungarumlaut
-//    : lslash
-//    : ogonek
-//    : perthousand
-//    : quotedblbase
-//    : quotesinglbase
-//    : scaron
-//    : tilde
-//    : zcaron
-
 //------------------------------------------------------------------------
 // XOutputFont
 //------------------------------------------------------------------------
 
-XOutputFont::XOutputFont(GfxFont *gfxFont, double m11, double m12,
-                        double m21, double m22, Display *display,
-                        XOutputFontCache *cache) {
-  int code;
-  char *charName;
-
-  id = gfxFont->getID();
-  this->display = display;
-  tm11 = m11;
-  tm12 = m12;
-  tm21 = m21;
-  tm22 = m22;
-
-  // check for hex char names
-  hex = gFalse;
-  if (!gfxFont->is16Bit()) {
-    for (code = 0; code < 256; ++code) {
-      if ((charName = gfxFont->getCharName(code))) {
-       if ((charName[0] == 'B' || charName[0] == 'C' ||
-            charName[0] == 'G') &&
-           strlen(charName) == 3 &&
-           isxdigit(charName[1]) && isxdigit(charName[2]) &&
-           ((charName[1] >= 'a' && charName[1] <= 'f') ||
-            (charName[1] >= 'A' && charName[1] <= 'F') ||
-            (charName[2] >= 'a' && charName[2] <= 'f') ||
-            (charName[2] >= 'A' && charName[2] <= 'F'))) {
-         hex = gTrue;
-         break;
-       } else if ((strlen(charName) == 2) &&
-                  isxdigit(charName[0]) && isxdigit(charName[1]) &&
-                  ((charName[0] >= 'a' && charName[0] <= 'f') ||
-                   (charName[0] >= 'A' && charName[0] <= 'F') ||
-                   (charName[1] >= 'a' && charName[1] <= 'f') ||
-                   (charName[1] >= 'A' && charName[1] <= 'F'))) {
-         hex = gTrue;
-         break;
-       }
-      }
-    }
-  }
+XOutputFont::XOutputFont(Ref *idA, double m11OrigA, double m12OrigA,
+                        double m21OrigA, double m22OrigA,
+                        double m11A, double m12A, double m21A, double m22A,
+                        Display *displayA, XOutputDev *xOutA) {
+  id = *idA;
+  display = displayA;
+  xOut = xOutA;
+  m11Orig = m11OrigA;
+  m12Orig = m12OrigA;
+  m21Orig = m21OrigA;
+  m22Orig = m22OrigA;
+  m11 = m11A;
+  m12 = m12A;
+  m21 = m21A;
+  m22 = m22A;
 }
 
 XOutputFont::~XOutputFont() {
 }
 
+void XOutputFont::getCharPath(GfxState *state,
+                             CharCode c, Unicode *u, int ulen) {
+}
+
 #if HAVE_T1LIB_H
 //------------------------------------------------------------------------
 // XOutputT1Font
 //------------------------------------------------------------------------
 
-XOutputT1Font::XOutputT1Font(GfxFont *gfxFont, GString *pdfBaseFont,
-                            double m11, double m12, double m21, double m22,
-                            Display *display, XOutputFontCache *cache):
-  XOutputFont(gfxFont, m11, m12, m21, m22, display, cache)
+XOutputT1Font::XOutputT1Font(Ref *idA, T1FontFile *fontFileA,
+                            double m11OrigA, double m12OrigA,
+                            double m21OrigA, double m22OrigA,
+                            double m11A, double m12A,
+                            double m21A, double m22A,
+                            Display *displayA, XOutputDev *xOutA):
+  XOutputFont(idA, m11OrigA, m12OrigA, m21OrigA, m22OrigA,
+             m11A, m12A, m21A, m22A, displayA, xOutA)
 {
-  Ref embRef;
   double matrix[4];
 
-  fontFile = NULL;
-  font = NULL;
-
-  // we can only handle 8-bit, Type 1/1C, with embedded font file
-  // or user-specified base fonts
-  //~ also look for external font files
-  if (!(pdfBaseFont ||
-       (!gfxFont->is16Bit() &&
-        (gfxFont->getType() == fontType1 ||
-         gfxFont->getType() == fontType1C) &&
-        gfxFont->getEmbeddedFontID(&embRef)))) {
-    return;
-  }
-
-  // load the font
-  if (!(fontFile = cache->getT1Font(gfxFont, pdfBaseFont))) {
-    return;
-  }
+  fontFile = fontFileA;
 
   // create the transformed instance
   matrix[0] = m11;
@@ -598,47 +163,91 @@ void XOutputT1Font::updateGC(GC gc) {
 }
 
 void XOutputT1Font::drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                            GC gc, double x, double y, int c) {
-  GfxRGB rgb;
-
-  if (state->getRender() & 1) {
-    state->getStrokeRGB(&rgb);
-  } else {
-    state->getFillRGB(&rgb);
-  }
+                            GC gc, GfxRGB *rgb,
+                            double x, double y, double dx, double dy,
+                            CharCode c, Unicode *u, int uLen) {
   font->drawChar(pixmap, w, h, gc, xoutRound(x), xoutRound(y),
-                (int)(rgb.r * 65535), (int)(rgb.g * 65535),
-                (int)(rgb.b * 65535), c);
+                (int)(rgb->r * 65535), (int)(rgb->g * 65535),
+                (int)(rgb->b * 65535), c, u[0]);
+}
+
+void XOutputT1Font::getCharPath(GfxState *state,
+                               CharCode c, Unicode *u, int uLen) {
+  font->getCharPath(c, u[0], state);
 }
 #endif // HAVE_T1LIB_H
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 //------------------------------------------------------------------------
-// XOutputTTFont
+// XOutputFTFont
 //------------------------------------------------------------------------
 
-XOutputTTFont::XOutputTTFont(GfxFont *gfxFont, double m11, double m12,
-                            double m21, double m22, Display *display,
-                            XOutputFontCache *cache):
-  XOutputFont(gfxFont, m11, m12, m21, m22, display, cache)
+XOutputFTFont::XOutputFTFont(Ref *idA, FTFontFile *fontFileA,
+                            double m11OrigA, double m12OrigA,
+                            double m21OrigA, double m22OrigA,
+                            double m11A, double m12A,
+                            double m21A, double m22A,
+                            Display *displayA, XOutputDev *xOutA):
+  XOutputFont(idA, m11OrigA, m12OrigA, m21OrigA, m22OrigA,
+             m11A, m12A, m21A, m22A, displayA, xOutA)
 {
-  Ref embRef;
   double matrix[4];
 
-  fontFile = NULL;
-  font = NULL;
+  fontFile = fontFileA;
 
-  // we can only handle 8-bit, TrueType, with embedded font file
-  if (!(!gfxFont->is16Bit() &&
-       gfxFont->getType() == fontTrueType &&
-       gfxFont->getEmbeddedFontID(&embRef))) {
-    return;
-  }
+  // create the transformed instance
+  matrix[0] = m11;
+  matrix[1] = -m12;
+  matrix[2] = m21;
+  matrix[3] = -m22;
+  font = new FTFont(fontFile, matrix);
+}
 
-  // load the font
-  if (!(fontFile = cache->getTTFont(gfxFont))) {
-    return;
+XOutputFTFont::~XOutputFTFont() {
+  if (font) {
+    delete font;
   }
+}
+
+GBool XOutputFTFont::isOk() {
+  return font != NULL;
+}
+
+void XOutputFTFont::updateGC(GC gc) {
+}
+
+void XOutputFTFont::drawChar(GfxState *state, Pixmap pixmap, int w, int h,
+                            GC gc, GfxRGB *rgb,
+                            double x, double y, double dx, double dy,
+                            CharCode c, Unicode *u, int uLen) {
+  font->drawChar(pixmap, w, h, gc, xoutRound(x), xoutRound(y),
+                (int)(rgb->r * 65535), (int)(rgb->g * 65535),
+                (int)(rgb->b * 65535), c, uLen > 0 ? u[0] : 0);
+}
+
+void XOutputFTFont::getCharPath(GfxState *state,
+                               CharCode c, Unicode *u, int uLen) {
+  font->getCharPath(c, u[0], state);
+}
+#endif // FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+//------------------------------------------------------------------------
+// XOutputTTFont
+//------------------------------------------------------------------------
+
+XOutputTTFont::XOutputTTFont(Ref *idA, TTFontFile *fontFileA,
+                            double m11OrigA, double m12OrigA,
+                            double m21OrigA, double m22OrigA,
+                            double m11A, double m12A,
+                            double m21A, double m22A,
+                            Display *displayA, XOutputDev *xOutA):
+  XOutputFont(idA, m11OrigA, m12OrigA, m21OrigA, m22OrigA,
+             m11A, m12A, m21A, m22A, displayA, xOutA)
+{
+  double matrix[4];
+
+  fontFile = fontFileA;
 
   // create the transformed instance
   matrix[0] = m11;
@@ -662,114 +271,211 @@ void XOutputTTFont::updateGC(GC gc) {
 }
 
 void XOutputTTFont::drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                            GC gc, double x, double y, int c) {
-  GfxRGB rgb;
-
-  if (state->getRender() & 1) {
-    state->getStrokeRGB(&rgb);
-  } else {
-    state->getFillRGB(&rgb);
-  }
+                            GC gc, GfxRGB *rgb,
+                            double x, double y, double dx, double dy,
+                            CharCode c, Unicode *u, int uLen) {
   font->drawChar(pixmap, w, h, gc, xoutRound(x), xoutRound(y),
-                (int)(rgb.r * 65535), (int)(rgb.g * 65535),
-                (int)(rgb.b * 65535), c);
+                (int)(rgb->r * 65535), (int)(rgb->g * 65535),
+                (int)(rgb->b * 65535), c, u[0]);
 }
-#endif // HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#endif // !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 
 //------------------------------------------------------------------------
-// XOutputServerFont
+// XOutputServer8BitFont
 //------------------------------------------------------------------------
 
-XOutputServerFont::XOutputServerFont(GfxFont *gfxFont, char *fontNameFmt,
-                                    FontEncoding *encoding,
-                                    double m11, double m12,
-                                    double m21, double m22,
-                                    double size,
-                                    double ntm11, double ntm12,
-                                    double ntm21, double ntm22,
-                                    Display *display,
-                                    XOutputFontCache *cache):
-  XOutputFont(gfxFont, m11, m12, m21, m22, display, cache)
+// Copy <fmt>, substituting <val> for one occurrence of "%s", into
+// <buf>.
+static void stringSubst(char *buf, int bufSize, char *fmt, char *val) {
+  char *p, *q;
+  int i;
+
+  i = 0;
+  p = fmt;
+  while (*p) {
+    if (p[0] == '%' && p[1] == 's') {
+      q = val;
+      while (*q && i < bufSize - 1) {
+       buf[i++] = *q++;
+      }
+      p += 2;
+    } else {
+      if (i < bufSize - 1) {
+       buf[i++] = *p;
+      }
+      ++p;
+    }
+  }
+  buf[i] = '\0';
+}
+
+XOutputServer8BitFont::XOutputServer8BitFont(Ref *idA, GString *xlfdFmt, 
+                                            UnicodeMap *xUMapA,
+                                            CharCodeToUnicode *fontUMap,
+                                            double m11OrigA, double m12OrigA,
+                                            double m21OrigA, double m22OrigA,
+                                            double m11A, double m12A,
+                                            double m21A, double m22A,
+                                            Display *displayA,
+                                            XOutputDev *xOutA):
+  XOutputFont(idA, m11OrigA, m12OrigA, m21OrigA, m22OrigA,
+             m11A, m12A, m21A, m22A, displayA, xOutA)
 {
-  char fontName[200], fontSize[100];
+  double size, ntm11, ntm12, ntm21, ntm22;
   GBool rotated;
   int startSize, sz;
-  int code, code2;
-  char *charName;
-  int n;
-
-  xFont = NULL;
-
-  // Construct forward and reverse map.
-  // This tries to deal with font subset character names of the form
-  // 'Bxx', 'Cxx', 'Gxx', or 'xx' with decimal or hex numbering.
-  if (!gfxFont->is16Bit()) {
-    for (code = 0; code < 256; ++code)
-      revMap[code] = 0;
-    if (encoding) {
-      for (code = 0; code < 256; ++code) {
-       if ((charName = gfxFont->getCharName(code))) {
-         if ((code2 = encoding->getCharCode(charName)) < 0) {
-           n = strlen(charName);
-           if (hex && n == 3 &&
-               (charName[0] == 'B' || charName[0] == 'C' ||
-                charName[0] == 'G') &&
-               isxdigit(charName[1]) && isxdigit(charName[2])) {
-             sscanf(charName+1, "%x", &code2);
-           } else if (hex && n == 2 &&
-                      isxdigit(charName[0]) && isxdigit(charName[1])) {
-             sscanf(charName, "%x", &code2);
-           } else if (!hex && n >= 2 && n <= 3 &&
-                      isdigit(charName[0]) && isdigit(charName[1])) {
-             code2 = atoi(charName);
-             if (code2 >= 256)
-               code2 = -1;
-           } else if (n >= 3 && n <= 5 && isdigit(charName[1])) {
-             code2 = atoi(charName+1);
-             if (code2 >= 256)
-               code2 = -1;
-           }
-           //~ this is a kludge -- is there a standard internal encoding
-           //~ used by all/most Type 1 fonts?
-           if (code2 == 262)           // hyphen
-             code2 = 45;
-           else if (code2 == 266)      // emdash
-             code2 = 208;
-         }
-         if (code2 >= 0) {
-           map[code] = (Gushort)code2;
-           if (code2 < 256)
-             revMap[code2] = (Guchar)code;
-         } else {
-           map[code] = 0;
-         }
-       } else {
-         map[code] = 0;
+  char fontName[500], fontSize[100];
+  Unicode u;
+  char buf;
+  int i;
+
+  // compute size and normalized transform matrix
+  size = sqrt(m21*m21 + m22*m22);
+  ntm11 = m11 / size;
+  ntm12 = -m12 / size;
+  ntm21 = m21 / size;
+  ntm22 = -m22 / size;
+
+  // try to get a rotated font?
+  rotated = !(ntm11 > 0 && ntm22 > 0 &&
+             fabs(ntm11 / ntm22 - 1) < 0.2 &&
+             fabs(ntm12) < 0.01 &&
+             fabs(ntm21) < 0.01);
+
+  // open X font -- if font is not found (which means the server can't
+  // scale fonts), try progressively smaller and then larger sizes
+  startSize = (int)size;
+  if (rotated) {
+    sprintf(fontSize, "[%s%0.2f %s%0.2f %s%0.2f %s%0.2f]",
+           ntm11<0 ? "~" : "", fabs(ntm11 * size),
+           ntm12<0 ? "~" : "", fabs(ntm12 * size),
+           ntm21<0 ? "~" : "", fabs(ntm21 * size),
+           ntm22<0 ? "~" : "", fabs(ntm22 * size));
+  } else {
+    sprintf(fontSize, "%d", startSize);
+  }
+  stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(), fontSize);
+  xFont = XLoadQueryFont(display, fontName);
+  if (!xFont) {
+    for (sz = startSize; sz >= startSize/2 && sz >= 1; --sz) {
+      sprintf(fontSize, "%d", sz);
+      stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(), fontSize);
+      if ((xFont = XLoadQueryFont(display, fontName)))
+       break;
+    }
+    if (!xFont) {
+      for (sz = startSize + 1; sz < startSize + 10; ++sz) {
+       sprintf(fontSize, "%d", sz);
+       stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(),
+                   fontSize);
+       if ((xFont = XLoadQueryFont(display, fontName))) {
+         break;
        }
       }
+      if (!xFont) {
+       sprintf(fontSize, "%d", startSize);
+       stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(),
+                   fontSize);
+       error(-1, "Failed to open font: '%s'", fontName);
+       return;
+      }
+    }
+  }
+
+  // Construct char code map.
+  xUMap = xUMapA;
+  for (i = 0; i < 256; ++i) {
+    if (fontUMap->mapToUnicode((CID)i, &u, 1) == 1 &&
+       xUMap->mapUnicode(u, &buf, 1) == 1) {
+      map[i] = buf & 0xff;
     } else {
-      code2 = 0; // to make gcc happy
-      //~ this is a hack to get around the fact that X won't draw
-      //~ chars 0..31; this works when the fonts have duplicate encodings
-      //~ for those chars
-      for (code = 0; code < 32; ++code) {
-       if ((charName = gfxFont->getCharName(code)) &&
-           (code2 = gfxFont->getCharCode(charName)) >= 0) {
-         map[code] = (Gushort)code2;
-         if (code2 < 256)
-           revMap[code2] = (Guchar)code;
+      map[i] = 0;
+    }
+  }
+}
+
+XOutputServer8BitFont::~XOutputServer8BitFont() {
+  if (xFont) {
+    XFreeFont(display, xFont);
+  }
+}
+
+GBool XOutputServer8BitFont::isOk() {
+  return xFont != NULL;
+}
+
+void XOutputServer8BitFont::updateGC(GC gc) {
+  XSetFont(display, gc, xFont->fid);
+}
+
+void XOutputServer8BitFont::drawChar(GfxState *state, Pixmap pixmap,
+                                    int w, int h, GC gc, GfxRGB *rgb,
+                                    double x, double y, double dx, double dy,
+                                    CharCode c, Unicode *u, int uLen) {
+  Gushort c1;
+  char buf[8];
+  double dx1, dy1;
+  int m, n, i, j, k;
+
+  c1 = map[c];
+  if (c1 > 0) {
+    buf[0] = (char)c1;
+    XDrawString(display, pixmap, gc, xoutRound(x), xoutRound(y), buf, 1);
+  } else {
+    // substituted character, using more than one character
+    n = 0;
+    for (i = 0; i < uLen; ++i) {
+      n += xUMap->mapUnicode(u[i], buf, sizeof(buf));
+    }
+    if (n > 0) {
+      dx1 = dx / n;
+      dy1 = dy / n;
+      k = 0;
+      for (i = 0; i < uLen; ++i) {
+       m = xUMap->mapUnicode(u[i], buf, sizeof(buf));
+       for (j = 0; j < m; ++j) {
+         XDrawString(display, pixmap, gc,
+                     xoutRound(x + k*dx1), xoutRound(y + k*dy1),
+                     buf + j, 1);
+         ++k;
        }
       }
-      for (code = 32; code < 256; ++code) {
-       map[code] = (Gushort)code;
-       revMap[code] = (Guchar)code;
-      }
     }
   }
+}
 
-  // adjust transform for the X transform convention
-  ntm12 = -ntm12;
-  ntm22 = -ntm22;
+//------------------------------------------------------------------------
+// XOutputServer16BitFont
+//------------------------------------------------------------------------
+
+XOutputServer16BitFont::XOutputServer16BitFont(Ref *idA, GString *xlfdFmt, 
+                                              UnicodeMap *xUMapA,
+                                              CharCodeToUnicode *fontUMap,
+                                              double m11OrigA,
+                                              double m12OrigA,
+                                              double m21OrigA,
+                                              double m22OrigA,
+                                              double m11A, double m12A,
+                                              double m21A, double m22A,
+                                              Display *displayA,
+                                              XOutputDev *xOutA):
+  XOutputFont(idA, m11OrigA, m12OrigA, m21OrigA, m22OrigA,
+             m11A, m12A, m21A, m22A, displayA, xOutA)
+{
+  double size, ntm11, ntm12, ntm21, ntm22;
+  GBool rotated;
+  int startSize, sz;
+  char fontName[500], fontSize[100];
+
+  xUMap = xUMapA;
+  xUMap->incRefCnt();
+
+  // compute size and normalized transform matrix
+  size = sqrt(m21*m21 + m22*m22);
+  ntm11 = m11 / size;
+  ntm12 = -m12 / size;
+  ntm21 = m21 / size;
+  ntm22 = -m22 / size;
 
   // try to get a rotated font?
   rotated = !(ntm11 > 0 && ntm22 > 0 &&
@@ -779,36 +485,38 @@ XOutputServerFont::XOutputServerFont(GfxFont *gfxFont, char *fontNameFmt,
 
   // open X font -- if font is not found (which means the server can't
   // scale fonts), try progressively smaller and then larger sizes
-  //~ This does a linear search -- it should get a list of fonts from
-  //~ the server and pick the closest.
   startSize = (int)size;
-  if (rotated)
+  if (rotated) {
     sprintf(fontSize, "[%s%0.2f %s%0.2f %s%0.2f %s%0.2f]",
            ntm11<0 ? "~" : "", fabs(ntm11 * size),
            ntm12<0 ? "~" : "", fabs(ntm12 * size),
            ntm21<0 ? "~" : "", fabs(ntm21 * size),
            ntm22<0 ? "~" : "", fabs(ntm22 * size));
-  else
+  } else {
     sprintf(fontSize, "%d", startSize);
-  sprintf(fontName, fontNameFmt, fontSize);
+  }
+  stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(), fontSize);
   xFont = XLoadQueryFont(display, fontName);
   if (!xFont) {
     for (sz = startSize; sz >= startSize/2 && sz >= 1; --sz) {
       sprintf(fontSize, "%d", sz);
-      sprintf(fontName, fontNameFmt, fontSize);
+      stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(), fontSize);
       if ((xFont = XLoadQueryFont(display, fontName)))
        break;
     }
     if (!xFont) {
       for (sz = startSize + 1; sz < startSize + 10; ++sz) {
        sprintf(fontSize, "%d", sz);
-       sprintf(fontName, fontNameFmt, fontSize);
-       if ((xFont = XLoadQueryFont(display, fontName)))
+       stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(),
+                   fontSize);
+       if ((xFont = XLoadQueryFont(display, fontName))) {
          break;
+       }
       }
       if (!xFont) {
        sprintf(fontSize, "%d", startSize);
-       sprintf(fontName, fontNameFmt, fontSize);
+       stringSubst(fontName, sizeof(fontName), xlfdFmt->getCString(),
+                   fontSize);
        error(-1, "Failed to open font: '%s'", fontName);
        return;
       }
@@ -816,75 +524,53 @@ XOutputServerFont::XOutputServerFont(GfxFont *gfxFont, char *fontNameFmt,
   }
 }
 
-XOutputServerFont::~XOutputServerFont() {
-  if (xFont)
+XOutputServer16BitFont::~XOutputServer16BitFont() {
+  xUMap->decRefCnt();
+  if (xFont) {
     XFreeFont(display, xFont);
+  }
 }
 
-GBool XOutputServerFont::isOk() {
+GBool XOutputServer16BitFont::isOk() {
   return xFont != NULL;
 }
 
-void XOutputServerFont::updateGC(GC gc) {
+void XOutputServer16BitFont::updateGC(GC gc) {
   XSetFont(display, gc, xFont->fid);
 }
 
-void XOutputServerFont::drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                                GC gc, double x, double y, int c) {
-  GfxFont *gfxFont;
-  Gushort c1;
-  char buf;
-  char *p;
-  int n, i;
-  double tx;
+void XOutputServer16BitFont::drawChar(GfxState *state, Pixmap pixmap,
+                                     int w, int h, GC gc, GfxRGB *rgb,
+                                     double x, double y, double dx, double dy,
+                                     CharCode c, Unicode *u, int uLen) {
+  char buf[16];
+  XChar2b c1;
+  double dx1, dy1;
+  int m, n, i, j, k;
 
-  c1 = map[c];
-  if (c1 <= lastRegularChar) {
-    buf = (char)c1;
-    XDrawString(display, pixmap, gc, xoutRound(x), xoutRound(y), &buf, 1);
-  } else if (c1 <= lastSubstChar) {
-    buf = (char)substChars[c1 - firstSubstChar];
-    XDrawString(display, pixmap, gc, xoutRound(x), xoutRound(y), &buf, 1);
-  } else if (c1 <= lastConstrChar) {
-    gfxFont = state->getFont();
-    //~ need to deal with rotated text here
-    switch (c1 - firstConstrChar) {
-    case 0: // bullet
-      tx = 0.25 * state->getTransformedFontSize() * gfxFont->getWidth(c);
-      XFillRectangle(display, pixmap, gc,
-                    xoutRound(x + tx),
-                    xoutRound(y - 0.4 * xFont->ascent - tx),
-                    xoutRound(2 * tx), xoutRound(2 * tx));
-      break;
-    case 1: // trademark
-//~ this should use a smaller font
-//      tx = state->getTransformedFontSize() *
-//           (gfxFont->getWidth(c) -
-//            gfxFont->getWidth(font->revMap['M']));
-      tx = 0.9 * state->getTransformedFontSize() *
-           gfxFont->getWidth(revMap['T']);
-      y -= 0.33 * (double)xFont->ascent;
-      buf = 'T';
-      XDrawString(display, pixmap, gc,
-                 xoutRound(x), xoutRound(y), &buf, 1);
-      x += tx;
-      buf = 'M';
-      XDrawString(display, pixmap, gc,
-                 xoutRound(x), xoutRound(y), &buf, 1);
-      break;
-    }
-  } else if (c1 <= lastMultiChar) {
-    gfxFont = state->getFont();
-    p = multiChars[c1 - firstMultiChar];
-    n = strlen(p);
-    tx = gfxFont->getWidth(c);
-    tx -= gfxFont->getWidth(revMap[p[n-1]]);
-    tx = tx * state->getTransformedFontSize() / (double)(n - 1);
-    for (i = 0; i < n; ++i) {
-      XDrawString(display, pixmap, gc,
-                 xoutRound(x), xoutRound(y), p + i, 1);
-      x += tx;
+  n = 0;
+  for (i = 0; i < uLen; ++i) {
+    n += xUMap->mapUnicode(u[i], buf, sizeof(buf));
+  }
+  if (n > 0) {
+    dx1 = dx / n;
+    dy1 = dy / n;
+    k = 0;
+    for (i = 0; i < uLen; ++i) {
+      m = xUMap->mapUnicode(u[i], buf, sizeof(buf));
+      for (j = 0; j+1 < m; j += 2) {
+       c1.byte1 = buf[j];
+       c1.byte2 = buf[j+1];
+       XDrawString16(display, pixmap, gc,
+                     xoutRound(x + k*dx1), xoutRound(y + k*dy1),
+                     &c1, 1);
+       ++k;
+      }
     }
+  } else if (c != 0) {
+    // some PDF files use CID 0, which is .notdef, so just ignore it
+    error(-1, "Unknown character (CID=%d Unicode=%04x)",
+         c, uLen > 0 ? u[0] : (Unicode)0);
   }
 }
 
@@ -892,32 +578,45 @@ void XOutputServerFont::drawChar(GfxState *state, Pixmap pixmap, int w, int h,
 // XOutputFontCache
 //------------------------------------------------------------------------
 
-XOutputFontCache::XOutputFontCache(Display *display, Guint depth) {
-  this->display = display;
-  this->depth = depth;
+#if HAVE_T1LIB_H
+XOutputT1FontFile::~XOutputT1FontFile() {
+  delete fontFile;
+}
+#endif
+
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+XOutputFTFontFile::~XOutputFTFontFile() {
+  delete fontFile;
+}
+#endif
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+XOutputTTFontFile::~XOutputTTFontFile() {
+  delete fontFile;
+}
+#endif
+
+XOutputFontCache::XOutputFontCache(Display *displayA, Guint depthA,
+                                  XOutputDev *xOutA,
+                                  FontRastControl t1libControlA,
+                                  FontRastControl freetypeControlA) {
+  display = displayA;
+  depth = depthA;
+  xOut = xOutA;
 
 #if HAVE_T1LIB_H
   t1Engine = NULL;
-  if (t1libControl) {
-    useT1lib = t1libControl->cmp("none") != 0;
-    t1libAA = t1libControl->cmp("plain") != 0;
-    t1libAAHigh = t1libControl->cmp("high") == 0;
-  } else {
-    useT1lib = gFalse;
-    t1libAA = gFalse;
-    t1libAAHigh = gFalse;
-  }
+  t1libControl = t1libControlA;
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  ftEngine = NULL;
+#endif
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
   ttEngine = NULL;
-  if (freeTypeControl) {
-    useFreeType = freeTypeControl->cmp("none") != 0;
-    freeTypeAA = freeTypeControl->cmp("plain") != 0;
-  } else {
-    useFreeType = gFalse;
-    freeTypeAA = gFalse;
-  }
+#endif
+#if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
+  freetypeControl = freetypeControlA;
 #endif
 
   clear();
@@ -936,9 +635,12 @@ void XOutputFontCache::startDoc(int screenNum, Colormap colormap,
   clear();
 
 #if HAVE_T1LIB_H
-  if (useT1lib) {
+  if (t1libControl != fontRastNone) {
     t1Engine = new T1FontEngine(display, DefaultVisual(display, screenNum),
-                               depth, colormap, t1libAA, t1libAAHigh);
+                               depth, colormap,
+                               t1libControl == fontRastAALow ||
+                                 t1libControl == fontRastAAHigh,
+                               t1libControl == fontRastAAHigh);
     if (t1Engine->isOk()) {
       if (trueColor) {
        t1Engine->useTrueColor(rMul, rShift, gMul, gShift, bMul, bShift);
@@ -952,10 +654,31 @@ void XOutputFontCache::startDoc(int screenNum, Colormap colormap,
   }
 #endif // HAVE_T1LIB_H
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  if (useFreeType) {
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  if (freetypeControl != fontRastNone) {
+    ftEngine = new FTFontEngine(display, DefaultVisual(display, screenNum),
+                               depth, colormap,
+                               freetypeControl == fontRastAALow ||
+                                 freetypeControl == fontRastAAHigh);
+    if (ftEngine->isOk()) {
+      if (trueColor) {
+       ftEngine->useTrueColor(rMul, rShift, gMul, gShift, bMul, bShift);
+      } else {
+       ftEngine->useColorCube(colors, numColors);
+      }
+    } else {
+      delete ftEngine;
+      ftEngine = NULL;
+    }
+  }
+#endif // FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  if (freetypeControl != fontRastNone) {
     ttEngine = new TTFontEngine(display, DefaultVisual(display, screenNum),
-                               depth, colormap, freeTypeAA);
+                               depth, colormap,
+                               freetypeControl == fontRastAALow ||
+                                 freetypeControl == fontRastAAHigh);
     if (ttEngine->isOk()) {
       if (trueColor) {
        ttEngine->useTrueColor(rMul, rShift, gMul, gShift, bMul, bShift);
@@ -967,208 +690,166 @@ void XOutputFontCache::startDoc(int screenNum, Colormap colormap,
       ttEngine = NULL;
     }
   }
-#endif
+#endif // !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 }
 
 void XOutputFontCache::delFonts() {
   int i;
 
-#if HAVE_T1LIB_H
-  // delete Type 1 fonts
-  for (i = 0; i < nT1Fonts; ++i) {
-    delete t1Fonts[i];
+  for (i = 0; i < nFonts; ++i) {
+    delete fonts[i];
   }
-  for (i = 0; i < t1FontFilesSize && t1FontFiles[i].num >= 0; ++i) {
-    delete t1FontFiles[i].fontFile;
-  }
-  gfree(t1FontFiles);
+
+#if HAVE_T1LIB_H
+  // delete Type 1 font files
+  deleteGList(t1FontFiles, XOutputT1FontFile);
   if (t1Engine) {
     delete t1Engine;
   }
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  // delete TrueType fonts
-  for (i = 0; i < nTTFonts; ++i) {
-    delete ttFonts[i];
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  // delete FreeType font files
+  deleteGList(ftFontFiles, XOutputFTFontFile);
+  if (ftEngine) {
+    delete ftEngine;
   }
-  for (i = 0; i < ttFontFilesSize && ttFontFiles[i].num >= 0; ++i) {
-    delete ttFontFiles[i].fontFile;
-  }
-  gfree(ttFontFiles);
+#endif
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  // delete TrueType fonts
+  deleteGList(ttFontFiles, XOutputTTFontFile);
   if (ttEngine) {
     delete ttEngine;
   }
 #endif
-
-  // delete server fonts
-  for (i = 0; i < nServerFonts; ++i) {
-    delete serverFonts[i];
-  }
 }
 
 void XOutputFontCache::clear() {
   int i;
 
-#if HAVE_T1LIB_H
-  // clear Type 1 font cache
-  for (i = 0; i < t1FontCacheSize; ++i) {
-    t1Fonts[i] = NULL;
+  for (i = 0; i < xOutFontCacheSize; ++i) {
+    fonts[i] = NULL;
   }
-  nT1Fonts = 0;
-  t1FontFiles = NULL;
-  t1FontFilesSize = 0;
+  nFonts = 0;
+
+#if HAVE_T1LIB_H
+  // clear Type 1 font files
+  t1FontFiles = new GList();
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  // clear TrueType font cache
-  for (i = 0; i < ttFontCacheSize; ++i) {
-    ttFonts[i] = NULL;
-  }
-  nTTFonts = 0;
-  ttFontFiles = NULL;
-  ttFontFilesSize = 0;
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  // clear FreeType font cache
+  ftFontFiles = new GList();
 #endif
 
-  // clear server font cache
-  for (i = 0; i < serverFontCacheSize; ++i) {
-    serverFonts[i] = NULL;
-  }
-  nServerFonts = 0;
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  // clear TrueType font cache
+  ttFontFiles = new GList();
+#endif
 }
 
-XOutputFont *XOutputFontCache::getFont(GfxFont *gfxFont,
+XOutputFont *XOutputFontCache::getFont(XRef *xref, GfxFont *gfxFont,
                                       double m11, double m12,
                                       double m21, double m22) {
-#if HAVE_T1LIB_H
-  XOutputT1Font *t1Font;
-#endif
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  XOutputTTFont *ttFont;
-#endif
-  XOutputServerFont *serverFont;
-  FontMapEntry *fme;
-  GString *t1FontName;
-  char *xFontName;
-  FontEncoding *xEncoding;
-  double size;
-  double ntm11, ntm12, ntm21, ntm22;
+  XOutputFont *font;
+  DisplayFontParam *dfp;
+  GString *substName;
+  double m11New, m12New, m21New, m22New;
   double w1, w2, v;
   double *fm;
+  char *name;
   int index;
   int code;
   int i, j;
 
-  // is it the most recently used Type 1, TrueType, or server font?
-#if HAVE_T1LIB_H
-  if (useT1lib && nT1Fonts > 0 &&
-      t1Fonts[0]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
-    return t1Fonts[0];
-  }
-#endif
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  if (useFreeType && nTTFonts > 0 &&
-      ttFonts[0]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
-    return ttFonts[0];
-  }
-#endif
-  if (nServerFonts > 0 && serverFonts[0]->matches(gfxFont->getID(),
-                                                 m11, m12, m21, m22)) {
-    return serverFonts[0];
+  // is it the most recently used font?
+  if (nFonts > 0 && fonts[0]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
+    return fonts[0];
   }
 
-#if HAVE_T1LIB_H
-  // is it in the Type 1 cache?
-  if (useT1lib) {
-    for (i = 1; i < nT1Fonts; ++i) {
-      if (t1Fonts[i]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
-       t1Font = t1Fonts[i];
-       for (j = i; j > 0; --j) {
-         t1Fonts[j] = t1Fonts[j-1];
-       }
-       t1Fonts[0] = t1Font;
-       return t1Font;
+  // is it in the cache?
+  for (i = 1; i < nFonts; ++i) {
+    if (fonts[i]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
+      font = fonts[i];
+      for (j = i; j > 0; --j) {
+       fonts[j] = fonts[j-1];
       }
+      fonts[0] = font;
+      return font;
     }
   }
-#endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  // is it in the TrueType cache?
-  if (useFreeType) {
-    for (i = 1; i < nTTFonts; ++i) {
-      if (ttFonts[i]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
-       ttFont = ttFonts[i];
-       for (j = i; j > 0; --j) {
-         ttFonts[j] = ttFonts[j-1];
-       }
-       ttFonts[0] = ttFont;
-       return ttFont;
-      }
+  // try for a cached FontFile, an embedded font, or an external font
+  // file
+  font = NULL;
+  switch (gfxFont->getType()) {
+  case fontType1:
+  case fontType1C:
+#if HAVE_T1LIB_H
+    if (t1libControl != fontRastNone) {
+      font = tryGetT1Font(xref, gfxFont, m11, m12, m21, m22);
     }
-  }
 #endif
-
-  // is it in the server cache?
-  for (i = 1; i < nServerFonts; ++i) {
-    if (serverFonts[i]->matches(gfxFont->getID(), m11, m12, m21, m22)) {
-      serverFont = serverFonts[i];
-      for (j = i; j > 0; --j)
-       serverFonts[j] = serverFonts[j-1];
-      serverFonts[0] = serverFont;
-      return serverFont;
-    }
-  }
-
-  // search for a font map entry
-  t1FontName = NULL;
-  xFontName = NULL;
-  xEncoding = NULL;
-  if (!gfxFont->is16Bit() && gfxFont->getName()) {
-    for (fme = userFontMap; fme->pdfFont; ++fme) {
-      if (!gfxFont->getName()->cmp(fme->pdfFont)) {
-       break;
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (!font) {
+      if (freetypeControl != fontRastNone) {
+       font = tryGetFTFont(xref, gfxFont, m11, m12, m21, m22);
       }
     }
-    if (!fme->pdfFont) {
-      for (fme = fontMap; fme->pdfFont; ++fme) {
-       if (!gfxFont->getName()->cmp(fme->pdfFont)) {
-         break;
-       }
-      }
+#endif
+    break;
+  case fontTrueType:
+  case fontCIDType2:
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (freetypeControl != fontRastNone) {
+      font = tryGetFTFont(xref, gfxFont, m11, m12, m21, m22);
     }
-    if (fme && fme->t1Font) {
-      t1FontName = *fme->t1Font;
+#endif
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (freetypeControl != fontRastNone) {
+      font = tryGetTTFont(xref, gfxFont, m11, m12, m21, m22);
     }
-    if (fme && fme->xFont && fme->encoding) {
-      xFontName = fme->xFont;
-      xEncoding = fme->encoding;
+#endif
+    break;
+  case fontCIDType0C:
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (freetypeControl != fontRastNone) {
+      font = tryGetFTFont(xref, gfxFont, m11, m12, m21, m22);
     }
+#endif
+    break;
+  default:
+    break;
   }
 
-  // no font map entry found, so substitute a font
-  if (!t1FontName && !xFontName) {
-    if (gfxFont->is16Bit()) {
-      xFontName = fontSubst[0].xFont;
-      t1FontName = NULL;
-      switch (gfxFont->getCharSet16()) {
-      case font16AdobeJapan12:
-#if JAPANESE_SUPPORT
-       xFontName = japan12Font ? japan12Font->getCString() : japan12DefFont;
-#endif
-       break;
-      case font16AdobeGB12:
-#if CHINESE_GB_SUPPORT
-       xFontName = gb12Font ? gb12Font->getCString() : gb12DefFont;
-#endif
-       break;
-      case font16AdobeCNS13:
-#if CHINESE_CNS_SUPPORT
-       xFontName = cns13Font ? cns13Font->getCString() : cns13DefFont;
-#endif
-       break;
+  if (!font) {
+
+    // search for a display font mapping
+    dfp = NULL;
+    if (gfxFont->isCIDFont()) {
+      if (((GfxCIDFont *)gfxFont)->getCollection()) {
+       dfp = globalParams->
+               getDisplayCIDFont(gfxFont->getName(),
+                                 ((GfxCIDFont *)gfxFont)->getCollection());
+      } else {
+       // this error (no CMap file) was already reported by GfxFont
+       return NULL;
       }
     } else {
+      if (gfxFont->getName()) {
+       dfp = globalParams->getDisplayFont(gfxFont->getName());
+      }
+    }
+    if (dfp) {
+      font = tryGetFont(xref, dfp, gfxFont, m11, m12, m21, m22,
+                       m11, m12, m21, m22, gFalse);
+    }
+
+    // substitute a font (8-bit fonts only)
+    if (!font && !gfxFont->isCIDFont()) {
+
+      // choose a substitute font
       if (gfxFont->isFixedWidth()) {
        index = 8;
       } else if (gfxFont->isSerif()) {
@@ -1176,280 +857,502 @@ XOutputFont *XOutputFontCache::getFont(GfxFont *gfxFont,
       } else {
        index = 0;
       }
-      if (gfxFont->isBold())
+      if (gfxFont->isBold()) {
        index += 2;
-      if (gfxFont->isItalic())
+      }
+      if (gfxFont->isItalic()) {
        index += 1;
-      xFontName = fontSubst[index].xFont;
-      t1FontName = *fontSubst[index].t1Font;
-      xEncoding = &isoLatin1Encoding;
-      // get width of 'm' in real font and substituted font
-      if ((code = gfxFont->getCharCode("m")) >= 0)
-       w1 = gfxFont->getWidth(code);
-      else
-       w1 = 0;
-      w2 = fontSubst[index].mWidth;
-      if (gfxFont->getType() == fontType3) {
-       // This is a hack which makes it possible to substitute for some
-       // Type 3 fonts.  The problem is that it's impossible to know what
-       // the base coordinate system used in the font is without actually
-       // rendering the font.  This code tries to guess by looking at the
-       // width of the character 'm' (which breaks if the font is a
-       // subset that doesn't contain 'm').
-       if (w1 > 0 && (w1 > 1.1 * w2 || w1 < 0.9 * w2)) {
-         w1 /= w2;
-         m11 *= w1;
-         m12 *= w1;
-         m21 *= w1;
-         m22 *= w1;
+      }
+      substName = new GString(xOutSubstFonts[index].name);
+
+      // adjust the font matrix -- compare the width of 'm' in the
+      // original font and the substituted font
+      m11New = m11;
+      m12New = m12;
+      m21New = m21;
+      m22New = m22;
+      for (code = 0; code < 256; ++code) {
+       if ((name = ((Gfx8BitFont *)gfxFont)->getCharName(code)) &&
+           name[0] == 'm' && name[1] == '\0') {
+         break;
        }
-       fm = gfxFont->getFontMatrix();
-       v = (fm[0] == 0) ? 1 : (fm[3] / fm[0]);
-       m21 *= v;
-       m22 *= v;
-      } else if (!gfxFont->isSymbolic()) {
-       // if real font is substantially narrower than substituted
-       // font, reduce the font size accordingly
-       if (w1 > 0.01 && w1 < 0.9 * w2) {
-         w1 /= w2;
-         if (w1 < 0.8) {
-           w1 = 0.8;
+      }
+      if (code < 256) {
+       w1 = ((Gfx8BitFont *)gfxFont)->getWidth(code);
+       w2 = xOutSubstFonts[index].mWidth;
+       if (gfxFont->getType() == fontType3) {
+         // This is a hack which makes it possible to substitute for some
+         // Type 3 fonts.  The problem is that it's impossible to know what
+         // the base coordinate system used in the font is without actually
+         // rendering the font.  This code tries to guess by looking at the
+         // width of the character 'm' (which breaks if the font is a
+         // subset that doesn't contain 'm').
+         if (w1 > 0 && (w1 > 1.1 * w2 || w1 < 0.9 * w2)) {
+           w1 /= w2;
+           m11New *= w1;
+           m12New *= w1;
+           m21New *= w1;
+           m22New *= w1;
+         }
+         fm = gfxFont->getFontMatrix();
+         v = (fm[0] == 0) ? 1 : (fm[3] / fm[0]);
+         m21New *= v;
+         m22New *= v;
+       } else if (!gfxFont->isSymbolic()) {
+         // if real font is substantially narrower than substituted
+         // font, reduce the font size accordingly
+         if (w1 > 0.01 && w1 < 0.9 * w2) {
+           w1 /= w2;
+           m11New *= w1;
+           m21New *= w1;
          }
-         m11 *= w1;
-         m12 *= w1;
-         m21 *= w1;
-         m22 *= w1;
        }
       }
+
+      // get the font
+      dfp = globalParams->getDisplayFont(substName);
+      delete substName;
+      if (!dfp) {
+       // this should never happen since GlobalParams sets up default
+       // mappings for the Base-14 fonts
+       error(-1, "Couldn't find a font for '%s'",
+             gfxFont->getName()->getCString());
+       return NULL;
+      }
+      font = tryGetFont(xref, dfp, gfxFont, m11, m12, m21, m22,
+                       m11New, m12New, m21New, m22New, gTrue);
+    }
+  }
+
+  // check for error
+  if (!font) {
+    // This will happen if the user specifies a bogus font in the
+    // config file (a non-existent font file or a font that requires a
+    // rasterizer that is disabled or wasn't built in), or if a CID
+    // font has no associated font in the config file.
+    if (gfxFont->isCIDFont()) {
+      error(-1, "Couldn't find a font for the '%s' character collection",
+           ((GfxCIDFont *)gfxFont)->getCollection()->getCString());
+    } else {
+      error(-1, "Couldn't find a font for '%s'",
+           gfxFont->getName() ?
+               gfxFont->getName()->getCString() : "[unnamed]");
     }
+    return NULL;
   }
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  // try to create a new TrueType font
-  if (useFreeType) {
-    ttFont = new XOutputTTFont(gfxFont, m11, m12, m21, m22, display, this);
-    if (ttFont->isOk()) {
+  // insert font in cache
+  if (nFonts == xOutFontCacheSize) {
+    --nFonts;
+    delete fonts[nFonts];
+  }
+  for (j = nFonts; j > 0; --j) {
+    fonts[j] = fonts[j-1];
+  }
+  fonts[0] = font;
+  ++nFonts;
 
-      // insert in cache
-      if (nTTFonts == ttFontCacheSize) {
-       --nTTFonts;
-       delete ttFonts[nTTFonts];
-      }
-      for (j = nTTFonts; j > 0; --j) {
-       ttFonts[j] = ttFonts[j-1];
+  return font;
+}
+
+XOutputFont *XOutputFontCache::tryGetFont(XRef *xref, DisplayFontParam *dfp,
+                                         GfxFont *gfxFont,
+                                         double m11Orig, double m12Orig,
+                                         double m21Orig, double m22Orig,
+                                         double m11, double m12,
+                                         double m21, double m22,
+                                         GBool subst) {
+  XOutputFont *font;
+
+  font = NULL;
+
+  // create the new font
+  switch (dfp->kind) {
+
+  case displayFontX:
+    font = tryGetServerFont(dfp->x.xlfd, dfp->x.encoding, gfxFont,
+                           m11Orig, m12Orig, m21Orig, m22Orig,
+                           m11, m12, m21, m22);
+    break;
+
+  case displayFontT1:
+#if HAVE_T1LIB_H
+    if (t1libControl != fontRastNone) {
+      font = tryGetT1FontFromFile(xref, dfp->t1.fileName, gfxFont,
+                                 m11Orig, m12Orig, m21Orig, m22Orig,
+                                 m11, m12, m21, m22, subst);
+    }
+#endif
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (!font) {
+      if (freetypeControl != fontRastNone) {
+       font = tryGetFTFontFromFile(xref, dfp->t1.fileName, gfxFont,
+                                   m11Orig, m12Orig, m21Orig, m22Orig,
+                                   m11, m12, m21, m22, subst);
       }
-      ttFonts[0] = ttFont;
-      ++nTTFonts;
+    }
+#endif
+#if !((FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)) || defined(HAVE_T1LIB_H))
+    error(-1, "Config file specifies a Type 1 font,");
+    error(-1, "but xpdf was not built with t1lib or FreeType2 support");
+#endif
+    break;
 
-      return ttFont;
+  case displayFontTT:
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (freetypeControl != fontRastNone) {
+      font = tryGetFTFontFromFile(xref, dfp->tt.fileName, gfxFont,
+                                 m11Orig, m12Orig, m21Orig, m22Orig,
+                                 m11, m12, m21, m22, subst);
     }
-    delete ttFont;
-  }
 #endif
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    if (freetypeControl != fontRastNone) {
+      font = tryGetTTFontFromFile(xref, dfp->tt.fileName, gfxFont,
+                                 m11Orig, m12Orig, m21Orig, m22Orig,
+                                 m11, m12, m21, m22, subst);
+    }
+#endif
+#if !(HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+    error(-1, "Config file specifies a TrueType font,");
+    error(-1, "but xpdf was not built with FreeType support");
+    dfp = NULL;
+#endif
+    break;
+  }
+
+  return font;
+}
 
 #if HAVE_T1LIB_H
-  // try to create a new Type 1 font
-  if (useT1lib) {
-    t1Font = new XOutputT1Font(gfxFont, t1FontName, m11, m12, m21, m22,
-                              display, this);
-    if (t1Font->isOk()) {
-
-      // insert in cache
-      if (nT1Fonts == t1FontCacheSize) {
-       --nT1Fonts;
-       delete t1Fonts[nT1Fonts];
-      }
-      for (j = nT1Fonts; j > 0; --j) {
-       t1Fonts[j] = t1Fonts[j-1];
-      }
-      t1Fonts[0] = t1Font;
-      ++nT1Fonts;
+XOutputFont *XOutputFontCache::tryGetT1Font(XRef *xref,
+                                           GfxFont *gfxFont,
+                                           double m11, double m12,
+                                           double m21, double m22) {
+  Ref *id;
+  XOutputT1FontFile *xFontFile;
+  XOutputFont *font;
+  Ref embRef;
+  GString *fileName;
+  FILE *f;
+  char *fontBuf;
+  int fontLen;
+  Type1CFontFile *ff;
+  Object refObj, strObj;
+  int c;
+  int i;
 
-      return t1Font;
+  // check the already available font files
+  id = gfxFont->getID();
+  for (i = 0; i < t1FontFiles->getLength(); ++i) {
+    xFontFile = (XOutputT1FontFile *)t1FontFiles->get(i);
+    if (xFontFile->num == id->num && xFontFile->gen == id->gen &&
+       !xFontFile->subst) {
+      font = new XOutputT1Font(id, xFontFile->fontFile,
+                              m11, m12, m21, m22,
+                              m11, m12, m21, m22, display, xOut);
+      if (!font->isOk()) {
+       delete font;
+       return NULL;
+      }
+      return font;
     }
-    delete t1Font;
   }
-#endif
 
-  // compute size and normalized transform matrix
-  size = sqrt(m21*m21 + m22*m22);
-  ntm11 = m11 / size;
-  ntm12 = m12 / size;
-  ntm21 = m21 / size;
-  ntm22 = m22 / size;
+  // check for an embedded font
+  if (gfxFont->getEmbeddedFontID(&embRef)) {
 
-  // create a new server font
-  serverFont = new XOutputServerFont(gfxFont, xFontName, xEncoding,
-                                    m11, m12, m21, m22,
-                                    size, ntm11, ntm12, ntm21, ntm22,
-                                    display, this);
-  if (serverFont->isOk()) {
-
-    // insert in cache
-    if (nServerFonts == serverFontCacheSize) {
-      --nServerFonts;
-      delete serverFonts[nServerFonts];
+    // create the font file
+    fileName = NULL;
+    if (!openTempFile(&fileName, &f, "wb", NULL)) {
+      error(-1, "Couldn't create temporary Type 1 font file");
+      return NULL;
+    }
+    if (gfxFont->getType() == fontType1C) {
+      if (!(fontBuf = gfxFont->readEmbFontFile(xref, &fontLen))) {
+       fclose(f);
+       return NULL;
+      }
+      ff = new Type1CFontFile(fontBuf, fontLen);
+      ff->convertToType1(f);
+      delete ff;
+      gfree(fontBuf);
+    } else { // fontType1
+      refObj.initRef(embRef.num, embRef.gen);
+      refObj.fetch(xref, &strObj);
+      refObj.free();
+      strObj.streamReset();
+      while ((c = strObj.streamGetChar()) != EOF) {
+       fputc(c, f);
+      }
+      strObj.streamClose();
+      strObj.free();
     }
-    for (j = nServerFonts; j > 0; --j)
-      serverFonts[j] = serverFonts[j-1];
-    serverFonts[0] = serverFont;
-    ++nServerFonts;
+    fclose(f);
 
-    return serverFont;
+    // create the Font
+    font = tryGetT1FontFromFile(xref, fileName, gfxFont,
+                               m11, m12, m21, m22,
+                               m11, m12, m21, m22, gFalse);
+
+    // remove the temporary file
+    unlink(fileName->getCString());
+    delete fileName;
+
+  // check for an external font file
+  } else if ((fileName = gfxFont->getExtFontFile())) {
+    font = tryGetT1FontFromFile(xref, fileName, gfxFont,
+                               m11, m12, m21, m22,
+                               m11, m12, m21, m22, gFalse);
+
+  } else {
+    font = NULL;
   }
-  delete serverFont;
 
-  return NULL;
+  return font;
 }
 
-#if HAVE_T1LIB_H
-T1FontFile *XOutputFontCache::getT1Font(GfxFont *gfxFont,
-                                       GString *pdfBaseFont) {
-  Ref id;
+XOutputFont *XOutputFontCache::tryGetT1FontFromFile(XRef *xref,
+                                                   GString *fileName,
+                                                   GfxFont *gfxFont,
+                                                   double m11Orig,
+                                                   double m12Orig,
+                                                   double m21Orig,
+                                                   double m22Orig,
+                                                   double m11, double m12,
+                                                   double m21, double m22,
+                                                   GBool subst) {
+  Ref *id;
   T1FontFile *fontFile;
+  XOutputFont *font;
+
+  // create the t1lib font file
+  fontFile = new T1FontFile(t1Engine, fileName->getCString(),
+                           ((Gfx8BitFont *)gfxFont)->getEncoding(),
+                           gfxFont->getFontBBox());
+  if (!fontFile->isOk()) {
+    error(-1, "Couldn't create t1lib font from '%s'",
+         fileName->getCString());
+    delete fontFile;
+    return NULL;
+  }
+
+  // add to list
+  id = gfxFont->getID();
+  t1FontFiles->append(new XOutputT1FontFile(id->num, id->gen,
+                                           subst, fontFile));
+
+  // create the Font
+  font = new XOutputT1Font(gfxFont->getID(), fontFile,
+                          m11Orig, m12Orig, m21Orig, m22Orig,
+                          m11, m12, m21, m22, display, xOut);
+  if (!font->isOk()) {
+    delete font;
+    return NULL;
+  }
+  return font;
+}
+#endif // HAVE_T1LIB_H
+
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+XOutputFont *XOutputFontCache::tryGetFTFont(XRef *xref,
+                                           GfxFont *gfxFont,
+                                           double m11, double m12,
+                                           double m21, double m22) {
+  Ref *id;
+  XOutputFTFontFile *xFontFile;
+  XOutputFont *font;
+  Ref embRef;
   GString *fileName;
-  GString *tmpFileName;
   FILE *f;
+#if 1 //~ need this until FT can handle fonts with missing tables
   char *fontBuf;
   int fontLen;
-  Type1CFontConverter *cvt;
-  Ref embRef;
+  TrueTypeFontFile *ff;
+#endif
   Object refObj, strObj;
   int c;
-  int i, j;
+  int i;
 
+  // check the already available font files
   id = gfxFont->getID();
-
-  // check available fonts
-  fontFile = NULL;
-  for (i = 0; i < t1FontFilesSize && t1FontFiles[i].num >= 0; ++i) {
-    if (t1FontFiles[i].num == id.num && t1FontFiles[i].gen == id.gen) {
-      fontFile = t1FontFiles[i].fontFile;
+  for (i = 0; i < ftFontFiles->getLength(); ++i) {
+    xFontFile = (XOutputFTFontFile *)ftFontFiles->get(i);
+    if (xFontFile->num == id->num && xFontFile->gen == id->gen &&
+       !xFontFile->subst) {
+      font = new XOutputFTFont(id, xFontFile->fontFile,
+                              m11, m12, m21, m22,
+                              m11, m12, m21, m22, display, xOut);
+      if (!font->isOk()) {
+       delete font;
+       return NULL;
+      }
+      return font;
     }
   }
 
-  // create a new font file
-  if (!fontFile) {
-
-    // resize t1FontFiles if necessary
-    if (i == t1FontFilesSize) {
-      t1FontFiles = (XOutputT1FontFile *)
-       grealloc(t1FontFiles,
-                (t1FontFilesSize + 16) * sizeof(XOutputT1FontFile));
-      for (j = 0; j < 16; ++j) {
-       t1FontFiles[t1FontFilesSize + j].num = -1;
-      }
-      t1FontFilesSize += 16;
-    }
+  // check for an embedded font
+  if (gfxFont->getEmbeddedFontID(&embRef)) {
 
     // create the font file
-    tmpFileName = NULL;
-    if (!gfxFont->is16Bit() &&
-       (gfxFont->getType() == fontType1 ||
-        gfxFont->getType() == fontType1C) &&
-       gfxFont->getEmbeddedFontID(&embRef)) {
-      if (!openTempFile(&tmpFileName, &f, "wb", NULL)) {
-       error(-1, "Couldn't create temporary Type 1 font file");
+    fileName = NULL;
+    if (!openTempFile(&fileName, &f, "wb", NULL)) {
+      error(-1, "Couldn't create temporary TrueType font file");
+      return NULL;
+    }
+#if 1 //~ need this until FT can handle fonts with missing tables
+    if (gfxFont->getType() == fontTrueType ||
+       gfxFont->getType() == fontCIDType2) {
+      if (!(fontBuf = gfxFont->readEmbFontFile(xref, &fontLen))) {
+       fclose(f);
        return NULL;
       }
-      if (gfxFont->getType() == fontType1C) {
-       if (!(fontBuf = gfxFont->readEmbFontFile(&fontLen))) {
-         fclose(f);
-         return NULL;
-       }
-       cvt = new Type1CFontConverter(fontBuf, fontLen, f);
-       cvt->convert();
-       delete cvt;
-       gfree(fontBuf);
-      } else {
-       gfxFont->getEmbeddedFontID(&embRef);
-       refObj.initRef(embRef.num, embRef.gen);
-       refObj.fetch(&strObj);
-       refObj.free();
-       strObj.streamReset();
-       while ((c = strObj.streamGetChar()) != EOF) {
-         fputc(c, f);
-       }
-       strObj.streamClose();
-       strObj.free();
-      }
-      fclose(f);
-      fileName = tmpFileName;
-    } else if (!gfxFont->is16Bit() &&
-              gfxFont->getType() == fontType1 &&
-              gfxFont->getExtFontFile()) {
-      fileName = gfxFont->getExtFontFile();
+      ff = new TrueTypeFontFile(fontBuf, fontLen);
+      ff->writeTTF(f);
+      delete ff;
+      gfree(fontBuf);
     } else {
-      fileName = pdfBaseFont;
+      refObj.initRef(embRef.num, embRef.gen);
+      refObj.fetch(xref, &strObj);
+      refObj.free();
+      strObj.streamReset();
+      while ((c = strObj.streamGetChar()) != EOF) {
+       fputc(c, f);
+      }
+      strObj.streamClose();
+      strObj.free();
     }
-
-    // create the t1lib font
-    fontFile = new T1FontFile(t1Engine, fileName->getCString(),
-                             gfxFont->getEncoding());
-    if (!fontFile->isOk()) {
-      error(-1, "Couldn't create t1lib font from '%s'",
-           fileName->getCString());
-      delete fontFile;
-      return NULL;
+#else
+    refObj.initRef(embRef.num, embRef.gen);
+    refObj.fetch(xref, &strObj);
+    refObj.free();
+    strObj.streamReset();
+    while ((c = strObj.streamGetChar()) != EOF) {
+      fputc(c, f);
     }
-    t1FontFiles[i].num = id.num;
-    t1FontFiles[i].gen = id.gen;
-    t1FontFiles[i].fontFile = fontFile;
+    strObj.streamClose();
+    strObj.free();
+#endif
+    fclose(f);
+
+    // create the Font
+    font = tryGetFTFontFromFile(xref, fileName, gfxFont,
+                               m11, m12, m21, m22,
+                               m11, m12, m21, m22, gFalse);
+
+    // remove the temporary file
+    unlink(fileName->getCString());
+    delete fileName;
+
+  // check for an external font file
+  } else if ((fileName = gfxFont->getExtFontFile())) {
+    font = tryGetFTFontFromFile(xref, fileName, gfxFont,
+                               m11, m12, m21, m22,
+                               m11, m12, m21, m22, gFalse);
+
+  } else {
+    font = NULL;
+  }
 
-    // remove the font file
-    if (tmpFileName) {
-      unlink(tmpFileName->getCString());
-      delete tmpFileName;
+  return font;
+}
+
+XOutputFont *XOutputFontCache::tryGetFTFontFromFile(XRef *xref,
+                                                   GString *fileName,
+                                                   GfxFont *gfxFont,
+                                                   double m11Orig,
+                                                   double m12Orig,
+                                                   double m21Orig,
+                                                   double m22Orig,
+                                                   double m11, double m12,
+                                                   double m21, double m22,
+                                                   GBool subst) {
+  Ref *id;
+  FTFontFile *fontFile;
+  XOutputFont *font;
+
+  // create the FreeType font file
+  if (gfxFont->isCIDFont()) {
+    if (gfxFont->getType() == fontCIDType2) {
+      fontFile = new FTFontFile(ftEngine, fileName->getCString(),
+                               ((GfxCIDFont *)gfxFont)->getCIDToGID(),
+                               ((GfxCIDFont *)gfxFont)->getCIDToGIDLen());
+    } else { // fontCIDType0C
+      fontFile = new FTFontFile(ftEngine, fileName->getCString());
     }
+  } else {
+    fontFile = new FTFontFile(ftEngine, fileName->getCString(),
+                             ((Gfx8BitFont *)gfxFont)->getEncoding(),
+                             ((Gfx8BitFont *)gfxFont)->getHasEncoding());
+  }
+  if (!fontFile->isOk()) {
+    error(-1, "Couldn't create FreeType font from '%s'",
+         fileName->getCString());
+    delete fontFile;
+    return NULL;
   }
 
-  return fontFile;
+  // add to list
+  id = gfxFont->getID();
+  ftFontFiles->append(new XOutputFTFontFile(id->num, id->gen,
+                                           subst, fontFile));
+
+  // create the Font
+  font = new XOutputFTFont(gfxFont->getID(), fontFile,
+                          m11Orig, m12Orig, m21Orig, m22Orig,
+                          m11, m12, m21, m22, display, xOut);
+  if (!font->isOk()) {
+    delete font;
+    return NULL;
+  }
+  return font;
 }
-#endif
+#endif // FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-TTFontFile *XOutputFontCache::getTTFont(GfxFont *gfxFont) {
-  Ref id;
-  TTFontFile *fontFile;
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+XOutputFont *XOutputFontCache::tryGetTTFont(XRef *xref,
+                                           GfxFont *gfxFont,
+                                           double m11, double m12,
+                                           double m21, double m22) {
+  Ref *id;
+  XOutputTTFontFile *xFontFile;
+  XOutputFont *font;
+  Ref embRef;
   GString *fileName;
   FILE *f;
-  Ref embRef;
   Object refObj, strObj;
   int c;
-  int i, j;
+  int i;
 
+  // check the already available font files
   id = gfxFont->getID();
-
-  // check available fonts
-  fontFile = NULL;
-  for (i = 0; i < ttFontFilesSize && ttFontFiles[i].num >= 0; ++i) {
-    if (ttFontFiles[i].num == id.num && ttFontFiles[i].gen == id.gen) {
-      fontFile = ttFontFiles[i].fontFile;
+  xFontFile = NULL;
+  for (i = 0; i < ttFontFiles->getLength(); ++i) {
+    xFontFile = (XOutputTTFontFile *)ttFontFiles->get(i);
+    if (xFontFile->num == id->num && xFontFile->gen == id->gen &&
+       !xFontFile->subst) {
+      font = new XOutputTTFont(id, xFontFile->fontFile,
+                              m11, m12, m21, m22,
+                              m11, m12, m21, m22, display, xOut);
+      if (!font->isOk()) {
+       delete font;
+       return NULL;
+      }
+      return font;
     }
   }
 
-  // create a new font file
-  if (!fontFile) {
-
-    // resize ttFontFiles if necessary
-    if (i == ttFontFilesSize) {
-      ttFontFiles = (XOutputTTFontFile *)
-       grealloc(ttFontFiles,
-                (ttFontFilesSize + 16) * sizeof(XOutputTTFontFile));
-      for (j = 0; j < 16; ++j) {
-       ttFontFiles[ttFontFilesSize + j].num = -1;
-      }
-      ttFontFilesSize += 16;
-    }
+  // check for an embedded font
+  if (gfxFont->getEmbeddedFontID(&embRef)) {
 
     // create the font file
+    fileName = NULL;
     if (!openTempFile(&fileName, &f, "wb", NULL)) {
       error(-1, "Couldn't create temporary TrueType font file");
       return NULL;
     }
-    gfxFont->getEmbeddedFontID(&embRef);
     refObj.initRef(embRef.num, embRef.gen);
-    refObj.fetch(&strObj);
+    refObj.fetch(xref, &strObj);
     refObj.free();
     strObj.streamReset();
     while ((c = strObj.streamGetChar()) != EOF) {
@@ -1459,33 +1362,226 @@ TTFontFile *XOutputFontCache::getTTFont(GfxFont *gfxFont) {
     strObj.free();
     fclose(f);
 
-    // create the FreeType font file
-    fontFile = new TTFontFile(ttEngine, fileName->getCString());
-    if (!fontFile->isOk()) {
-      error(-1, "Couldn't create FreeType font from '%s'",
-           fileName->getCString());
-      delete fontFile;
-      return NULL;
-    }
-    ttFontFiles[i].num = id.num;
-    ttFontFiles[i].gen = id.gen;
-    ttFontFiles[i].fontFile = fontFile;
+    // create the Font
+    font = tryGetTTFontFromFile(xref, fileName, gfxFont,
+                               m11, m12, m21, m22,
+                               m11, m12, m21, m22, gFalse);
 
-    // remove the font file
+    // remove the temporary file
     unlink(fileName->getCString());
     delete fileName;
+
+  } else if ((fileName = gfxFont->getExtFontFile())) {
+    font = tryGetTTFontFromFile(xref, fileName, gfxFont,
+                               m11, m12, m21, m22,
+                               m11, m12, m21, m22, gFalse);
+
+  } else {
+    font = NULL;
+  }
+
+  return font;
+}
+
+XOutputFont *XOutputFontCache::tryGetTTFontFromFile(XRef *xref,
+                                                   GString *fileName,
+                                                   GfxFont *gfxFont,
+                                                   double m11Orig,
+                                                   double m12Orig,
+                                                   double m21Orig,
+                                                   double m22Orig,
+                                                   double m11, double m12,
+                                                   double m21, double m22,
+                                                   GBool subst) {
+  Ref *id;
+  TTFontFile *fontFile;
+  XOutputFont *font;
+
+  // create the FreeType font file
+  if (gfxFont->isCIDFont()) {
+    // fontCIDType2
+    fontFile = new TTFontFile(ttEngine, fileName->getCString(),
+                             ((GfxCIDFont *)gfxFont)->getCIDToGID(),
+                             ((GfxCIDFont *)gfxFont)->getCIDToGIDLen());
+  } else {
+    fontFile = new TTFontFile(ttEngine, fileName->getCString(),
+                             ((Gfx8BitFont *)gfxFont)->getEncoding(),
+                             ((Gfx8BitFont *)gfxFont)->getHasEncoding());
+  }
+  if (!fontFile->isOk()) {
+    error(-1, "Couldn't create FreeType font from '%s'",
+         fileName->getCString());
+    delete fontFile;
+    return NULL;
+  }
+
+  // add to list
+  id = gfxFont->getID();
+  ttFontFiles->append(new XOutputTTFontFile(id->num, id->gen,
+                                           subst, fontFile));
+
+  // create the Font
+  font = new XOutputTTFont(gfxFont->getID(), fontFile,
+                          m11Orig, m12Orig, m21Orig, m22Orig,
+                          m11, m12, m21, m22, display, xOut);
+  if (!font->isOk()) {
+    delete font;
+    return NULL;
+  }
+  return font;
+}
+#endif // !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+XOutputFont *XOutputFontCache::tryGetServerFont(GString *xlfd,
+                                               GString *encodingName,
+                                               GfxFont *gfxFont,
+                                               double m11Orig, double m12Orig,
+                                               double m21Orig, double m22Orig,
+                                               double m11, double m12,
+                                               double m21, double m22) {
+  XOutputFont *font;
+  UnicodeMap *uMap;
+  CharCodeToUnicode *ctu;
+
+  uMap = globalParams->getUnicodeMap(encodingName);
+  if (gfxFont->isCIDFont()) {
+    ctu = ((GfxCIDFont *)gfxFont)->getToUnicode();
+    font = new XOutputServer16BitFont(gfxFont->getID(), xlfd, uMap, ctu,
+                                     m11Orig, m12Orig, m21Orig, m22Orig,
+                                     m11, m12, m21, m22,
+                                     display, xOut);
+    ctu->decRefCnt();
+  } else {
+    ctu = ((Gfx8BitFont *)gfxFont)->getToUnicode();
+    font = new XOutputServer8BitFont(gfxFont->getID(), xlfd, uMap, ctu,
+                                    m11Orig, m12Orig, m21Orig, m22Orig,
+                                    m11, m12, m21, m22,
+                                    display, xOut);
+    ctu->decRefCnt();
+  }
+  uMap->decRefCnt();
+  if (!font->isOk()) {
+    delete font;
+    return NULL;
+  }
+  return font;
+}
+
+//------------------------------------------------------------------------
+// T3FontCache
+//------------------------------------------------------------------------
+
+struct T3FontCacheTag {
+  Gushort code;
+  Gushort mru;                 // valid bit (0x8000) and MRU index
+  double wx, wy;               // untransformed glyph metrics
+};
+
+class T3FontCache {
+public:
+
+  T3FontCache(Ref *fontID, double m11A, double m12A,
+             double m21A, double m22A,
+             int glyphXA, int glyphYA, int glyphWA, int glyphHA,
+             Display *displayA, Visual *visual, Guint depth,
+             Pixmap origPixmap);
+  ~T3FontCache();
+  GBool matches(Ref *idA, double m11A, double m12A,
+               double m21A, double m22A)
+    { return fontID.num == idA->num && fontID.gen == idA->gen &&
+            m11 == m11A && m12 == m12A && m21 == m21A && m22 == m22A; }
+
+  Ref fontID;                  // PDF font ID
+  double m11, m12, m21, m22;   // transform matrix
+  int glyphX, glyphY;          // pixel offset of glyph pixmaps
+  int glyphW, glyphH;          // size of glyph pixmaps, in pixels
+  int glyphSize;               // size of glyph pixmaps, in bytes
+  int cacheSets;               // number of sets in cache
+  int cacheAssoc;              // cache associativity (glyphs per set)
+  Guchar *cacheData;           // glyph pixmap cache
+  T3FontCacheTag *cacheTags;   // cache tags, i.e., char codes
+  Display *display;
+  Pixmap pixmap;
+  XImage *image;
+};
+
+T3FontCache::T3FontCache(Ref *fontIDA, double m11A, double m12A,
+                        double m21A, double m22A,
+                        int glyphXA, int glyphYA, int glyphWA, int glyphHA,
+                        Display *displayA, Visual *visual, Guint depth,
+                        Pixmap origPixmap) {
+  int i;
+
+  fontID = *fontIDA;
+  m11 = m11A;
+  m12 = m12A;
+  m21 = m21A;
+  m22 = m22A;
+  glyphX = glyphXA;
+  glyphY = glyphYA;
+  glyphW = glyphWA;
+  glyphH = glyphHA;
+  glyphSize = glyphW * glyphH;
+  cacheAssoc = 8;
+  if (glyphSize <= 256) {
+    cacheSets = 8;
+  } else if (glyphSize <= 512) {
+    cacheSets = 4;
+  } else if (glyphSize <= 1024) {
+    cacheSets = 2;
+  } else {
+    cacheSets = 1;
   }
+  cacheData = (Guchar *)gmalloc(cacheSets * cacheAssoc * glyphSize);
+  cacheTags = (T3FontCacheTag *)gmalloc(cacheSets * cacheAssoc *
+                                       sizeof(T3FontCacheTag));
+  for (i = 0; i < cacheSets * cacheAssoc; ++i) {
+    cacheTags[i].mru = i & (cacheAssoc - 1);
+  }
+  display = displayA;
+  pixmap = XCreatePixmap(display, origPixmap, glyphW, glyphH, depth);
+  image = XCreateImage(display, visual, depth, ZPixmap, 0, NULL,
+                      glyphW, glyphH, 8, 0);
+  image->data = (char *)gmalloc(glyphH * image->bytes_per_line);
+}
 
-  return fontFile;
+T3FontCache::~T3FontCache() {
+  gfree(cacheData);
+  gfree(cacheTags);
+  XFreePixmap(display, pixmap);
+  gfree(image->data);
+  image->data = NULL;
+  XDestroyImage(image);
 }
-#endif
+
+struct T3GlyphStack {
+  GBool cacheable;
+  Gushort code;
+  T3FontCache *cache;
+  int cacheIdx;
+  T3FontCacheTag *cacheTag;
+  Guchar *cacheData;
+  double x, y;
+  Unicode *u;
+  int uLen;
+  GfxRGB color;
+  int origPixmapW, origPixmapH;
+  Pixmap origPixmap;
+  GC origStrokeGC;
+  GC origFillGC;
+  Region origClipRegion;
+  double wx, wy;               // untransformed glyph metrics
+  T3GlyphStack *next;
+};
 
 //------------------------------------------------------------------------
 // XOutputDev
 //------------------------------------------------------------------------
 
-XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
-                      Colormap colormap, unsigned long paperColor) {
+XOutputDev::XOutputDev(Display *displayA, Pixmap pixmapA, Guint depthA,
+                      Colormap colormapA, GBool reverseVideoA,
+                      unsigned long paperColor, GBool installCmap,
+                      int rgbCubeSize) {
   XVisualInfo visualTempl;
   XVisualInfo *visualList;
   int nVisuals;
@@ -1496,17 +1592,19 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
   int r, g, b, n, m, i;
   GBool ok;
 
+  xref = NULL;
+
   // get display/pixmap info
-  this->display = display;
+  display = displayA;
   screenNum = DefaultScreen(display);
-  this->pixmap = pixmap;
-  this->depth = depth;
-  this->colormap = colormap;
+  pixmap = pixmapA;
+  depth = depthA;
+  colormap = colormapA;
 
   // check for TrueColor visual
   trueColor = gFalse;
   if (depth == 0) {
-    this->depth = DefaultDepth(display, screenNum);
+    depth = DefaultDepth(display, screenNum);
     visualList = XGetVisualInfo(display, 0, &visualTempl, &nVisuals);
     for (i = 0; i < nVisuals; ++i) {
       if (visualList[i].visual == DefaultVisual(display, screenNum)) {
@@ -1533,13 +1631,16 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
 
   // allocate a color cube
   if (!trueColor) {
+    redMap[BlackPixel(display, screenNum) & 0xff] = 0;
+    redMap[WhitePixel(display, screenNum) & 0xff] = 1;
 
     // set colors in private colormap
     if (installCmap) {
       for (numColors = 6; numColors >= 2; --numColors) {
        m = numColors * numColors * numColors;
-       if (XAllocColorCells(display, colormap, False, NULL, 0, colors, m))
+       if (XAllocColorCells(display, colormap, False, NULL, 0, colors, m)) {
          break;
+       }
       }
       if (numColors >= 2) {
        m = numColors * numColors * numColors;
@@ -1553,6 +1654,7 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
              xcolors[n].green = (g * 65535) / (numColors - 1);
              xcolors[n].blue = (b * 65535) / (numColors - 1);
              xcolors[n].flags = DoRed | DoGreen | DoBlue;
+             redMap[xcolors[n].pixel & 0xff] = xcolors[n].red / 65535.0;
              ++n;
            }
          }
@@ -1567,8 +1669,9 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
 
     // allocate colors in shared colormap
     } else {
-      if (rgbCubeSize > maxRGBCube)
+      if (rgbCubeSize > maxRGBCube) {
        rgbCubeSize = maxRGBCube;
+      }
       ok = gFalse;
       for (numColors = rgbCubeSize; numColors >= 2; --numColors) {
        ok = gTrue;
@@ -1577,21 +1680,26 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
          for (g = 0; g < numColors && ok; ++g) {
            for (b = 0; b < numColors && ok; ++b) {
              if (n == 0) {
-               colors[n++] = BlackPixel(display, screenNum);
+               colors[n] = BlackPixel(display, screenNum);
+               redMap[colors[n] & 0xff] = 0;
+               ++n;
              } else {
                xcolor.red = (r * 65535) / (numColors - 1);
                xcolor.green = (g * 65535) / (numColors - 1);
                xcolor.blue = (b * 65535) / (numColors - 1);
-               if (XAllocColor(display, colormap, &xcolor))
+               if (XAllocColor(display, colormap, &xcolor)) {
                  colors[n++] = xcolor.pixel;
-               else
+                 redMap[xcolor.pixel & 0xff] = xcolor.red / 65535.0;
+               } else {
                  ok = gFalse;
+               }
              }
            }
          }
        }
-       if (ok)
+       if (ok) {
          break;
+       }
        XFreeColors(display, colormap, &colors[1], n-1, 0);
       }
       if (!ok) {
@@ -1602,6 +1710,9 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
     }
   }
 
+  // reverse video mode
+  reverseVideo = reverseVideoA;
+
   // allocate GCs
   gcValues.foreground = BlackPixel(display, screenNum);
   gcValues.background = WhitePixel(display, screenNum);
@@ -1621,52 +1732,48 @@ XOutputDev::XOutputDev(Display *display, Pixmap pixmap, Guint depth,
   // no clip region yet
   clipRegion = NULL;
 
-  // get user font map
-  for (n = 0; devFontMap[n].pdfFont; ++n) ;
-  userFontMap = (FontMapEntry *)gmalloc((n+1) * sizeof(FontMapEntry));
-  for (i = 0; i < n; ++i) {
-    userFontMap[i].pdfFont = devFontMap[i].pdfFont;
-    userFontMap[i].xFont = devFontMap[i].devFont;
-    m = strlen(userFontMap[i].xFont);
-    if (m >= 10 && !strcmp(userFontMap[i].xFont + m - 10, "-iso8859-2"))
-      userFontMap[i].encoding = &isoLatin2Encoding;
-    else if (m >= 13 && !strcmp(userFontMap[i].xFont + m - 13,
-                               "-fontspecific"))
-      userFontMap[i].encoding = NULL;
-    else
-      userFontMap[i].encoding = &isoLatin1Encoding;
-    userFontMap[i].t1Font = NULL;
-  }
-  userFontMap[n].pdfFont = NULL;
-
   // set up the font cache and fonts
   gfxFont = NULL;
   font = NULL;
-  fontCache = new XOutputFontCache(display, this->depth);
+  fontCache = new XOutputFontCache(display, depth, this,
+                                  globalParams->getT1libControl(),
+                                  globalParams->getFreeTypeControl());
+  nT3Fonts = 0;
+  t3GlyphStack = NULL;
 
   // empty state stack
   save = NULL;
 
   // create text object
-  text = new TextPage(useEUCJP ? textOutASCII7 : textOutLatin1, gFalse);
-
-  type3Warning = gFalse;
+  text = new TextPage(gFalse);
 }
 
 XOutputDev::~XOutputDev() {
-  gfree(userFontMap);
+  int i;
+
   delete fontCache;
+  for (i = 0; i < nT3Fonts; ++i) {
+    delete t3FontCache[i];
+  }
   XFreeGC(display, strokeGC);
   XFreeGC(display, fillGC);
   XFreeGC(display, paperGC);
-  if (clipRegion)
+  if (clipRegion) {
     XDestroyRegion(clipRegion);
+  }
   delete text;
 }
 
-void XOutputDev::startDoc() {
+void XOutputDev::startDoc(XRef *xrefA) {
+  int i;
+
+  xref = xrefA;
   fontCache->startDoc(screenNum, colormap, trueColor, rMul, gMul, bMul,
                      rShift, gShift, bShift, colors, numColors);
+  for (i = 0; i < nT3Fonts; ++i) {
+    delete t3FontCache[i];
+  }
+  nT3Fonts = 0;
 }
 
 void XOutputDev::startPage(int pageNum, GfxState *state) {
@@ -1896,6 +2003,11 @@ void XOutputDev::updateFillColor(GfxState *state) {
   GfxRGB rgb;
 
   state->getFillRGB(&rgb);
+  if (reverseVideo) {
+    rgb.r = 1 - rgb.r;
+    rgb.g = 1 - rgb.g;
+    rgb.b = 1 - rgb.b;
+  }
   XSetForeground(display, fillGC, findColor(&rgb));
 }
 
@@ -1903,6 +2015,11 @@ void XOutputDev::updateStrokeColor(GfxState *state) {
   GfxRGB rgb;
 
   state->getStrokeRGB(&rgb);
+  if (reverseVideo) {
+    rgb.r = 1 - rgb.r;
+    rgb.g = 1 - rgb.g;
+    rgb.b = 1 - rgb.b;
+  }
   XSetForeground(display, strokeGC, findColor(&rgb));
 }
 
@@ -1913,20 +2030,20 @@ void XOutputDev::updateFont(GfxState *state) {
     font = NULL;
     return;
   }
+  if (gfxFont->getType() == fontType3) {
+    font = NULL;
+    return;
+  }
   state->getFontTransMat(&m11, &m12, &m21, &m22);
   m11 *= state->getHorizScaling();
-  m21 *= state->getHorizScaling();
-  font = fontCache->getFont(gfxFont, m11, m12, m21, m22);
+  m12 *= state->getHorizScaling();
+  font = fontCache->getFont(xref, gfxFont, m11, m12, m21, m22);
   if (font) {
     font->updateGC(fillGC);
     font->updateGC(strokeGC);
   }
 
-  // look for Type 3 font
-  if (!type3Warning && gfxFont->getType() == fontType3) {
-    error(-1, "This document uses Type 3 fonts - some text may not be correctly displayed");
-    type3Warning = gTrue;
-  }
+  text->updateFont(state);
 }
 
 void XOutputDev::stroke(GfxState *state) {
@@ -2017,10 +2134,21 @@ void XOutputDev::doClip(GfxState *state, int rule) {
   n = convertPath(state, &points, &size, &numPoints, &lengths, gTrue);
 
   // construct union of subpath regions
-  region = XPolygonRegion(points, lengths[0], rule);
+  // (XPolygonRegion chokes if there aren't at least three points --
+  // this happens if the PDF file does moveto/closepath/clip, which
+  // sets an empty clipping region)
+  if (lengths[0] > 2) {
+    region = XPolygonRegion(points, lengths[0], rule);
+  } else {
+    region = XCreateRegion();
+  }
   j = lengths[0] + 1;
   for (i = 1; i < n; ++i) {
-    region2 = XPolygonRegion(points + j, lengths[i], rule);
+    if (lengths[i] > 2) {
+      region2 = XPolygonRegion(points + j, lengths[i], rule);
+    } else {
+      region2 = XCreateRegion();
+    }
     XUnionRegion(region2, region, region);
     XDestroyRegion(region2);
     j += lengths[i] + 1;
@@ -2103,7 +2231,7 @@ int XOutputDev::convertPath(GfxState *state, XPoint **points, int *size,
 
     // close subpath if necessary
     if (fillHack && ((*points)[*numPoints-1].x != (*points)[j].x ||
-                  (*points)[*numPoints-1].y != (*points)[j].y)) {
+                    (*points)[*numPoints-1].y != (*points)[j].y)) {
       addPoint(points, size, numPoints, (*points)[j].x, (*points)[j].y);
     }
 
@@ -2115,6 +2243,21 @@ int XOutputDev::convertPath(GfxState *state, XPoint **points, int *size,
       addPoint(points, size, numPoints, 0, 0);
   }
 
+  // kludge: munge any points that are *way* out of bounds - these can
+  // crash certain (buggy) X servers
+  for (i = 0; i < *numPoints; ++i) {
+    if ((*points)[i].x < -pixmapW) {
+      (*points)[i].x = -pixmapW;
+    } else if ((*points)[i].x > 2 * pixmapW) {
+      (*points)[i].x = 2 * pixmapW;
+    }
+    if ((*points)[i].y < -pixmapH) {
+      (*points)[i].y = -pixmapH;
+    } else if ((*points)[i].y > 2 * pixmapH) {
+      (*points)[i].y = 2 * pixmapH;
+    }
+  }
+
   // combine compound polygons
   if (fillHack) {
     i = j = k = 0;
@@ -2133,13 +2276,12 @@ int XOutputDev::convertPath(GfxState *state, XPoint **points, int *size,
 
        // look for the first subsequent subpath, if any, which overlaps
        for (ii = i; ii < n; ++ii) {
-         if (((rects[ii].xMin > rect.xMin && rects[ii].xMin < rect.xMax) ||
-              (rects[ii].xMax > rect.xMin && rects[ii].xMax < rect.xMax) ||
-              (rects[ii].xMin < rect.xMin && rects[ii].xMax > rect.xMax)) &&
-             ((rects[ii].yMin > rect.yMin && rects[ii].yMin < rect.yMax) ||
-              (rects[ii].yMax > rect.yMin && rects[ii].yMax < rect.yMax) ||
-              (rects[ii].yMin < rect.yMin && rects[ii].yMax > rect.yMax)))
+         if (rects[ii].xMax > rects[i].xMin &&
+             rects[ii].xMin < rects[i].xMax &&
+             rects[ii].yMax > rects[i].yMin &&
+             rects[ii].yMin < rects[i].yMax) {
            break;
+         }
        }
 
        // if there is an overlap, combine the polygons
@@ -2308,7 +2450,7 @@ void XOutputDev::addPoint(XPoint **points, int *size, int *k, int x, int y) {
 }
 
 void XOutputDev::beginString(GfxState *state, GString *s) {
-  text->beginString(state, s, font ? font->isHex() : gFalse);
+  text->beginString(state);
 }
 
 void XOutputDev::endString(GfxState *state) {
@@ -2316,418 +2458,428 @@ void XOutputDev::endString(GfxState *state) {
 }
 
 void XOutputDev::drawChar(GfxState *state, double x, double y,
-                         double dx, double dy, Guchar c) {
-  double x1, y1;
+                         double dx, double dy,
+                         double originX, double originY,
+                         CharCode code, Unicode *u, int uLen) {
+  int render;
+  double x1, y1, dx1, dy1;
+  GfxRGB rgb;
+  double saveCurX, saveCurY;
+  double *ctm;
+  double saveCTM[6];
 
-  text->addChar(state, x, y, dx, dy, c);
+  text->addChar(state, x, y, dx, dy, u, uLen);
 
-  if (!font)
+  if (!font) {
     return;
+  }
 
   // check for invisible text -- this is used by Acrobat Capture
-  if ((state->getRender() & 3) == 3)
+  render = state->getRender();
+  if ((render & 3) == 3) {
     return;
+  }
 
+  x -= originX;
+  y -= originY;
   state->transform(x, y, &x1, &y1);
+  state->transformDelta(dx, dy, &dx1, &dy1);
 
-  font->drawChar(state, pixmap, pixmapW, pixmapH,
-                (state->getRender() & 1) ? strokeGC : fillGC,
-                xoutRound(x1), xoutRound(y1), c);
-}
-
-void XOutputDev::drawChar16(GfxState *state, double x, double y,
-                           double dx, double dy, int c) {
-  int c1;
-  XChar2b c2[4];
-  double x1, y1;
-#if JAPANESE_SUPPORT | CHINESE_GB_SUPPORT | CHINESE_CNS_SUPPORT
-  int t1, t2;
-#endif
-#if JAPANESE_SUPPORT
-  double x2;
-  char *p;
-  int n, i;
-#endif
-
-  if (gfxFont) {
-    text->addChar16(state, x, y, dx, dy, c, gfxFont->getCharSet16());
+  // fill
+  if (!(render & 1)) {
+    state->getFillRGB(&rgb);
+    if (reverseVideo) {
+      rgb.r = 1 - rgb.r;
+      rgb.g = 1 - rgb.g;
+      rgb.b = 1 - rgb.b;
+    }
+    font->drawChar(state, pixmap, pixmapW, pixmapH, fillGC, &rgb,
+                  x1, y1, dx1, dy1, code, u, uLen);
+  }
+
+  // stroke
+  if ((render & 3) == 1 || (render & 3) == 2) {
+    if (font->hasGetCharPath()) {
+      saveCurX = state->getCurX();
+      saveCurY = state->getCurY();
+      ctm = state->getCTM();
+      memcpy(saveCTM, ctm, 6 * sizeof(double));
+      state->setCTM(1, 0, 0, 1, x1, y1);
+      font->getCharPath(state, code, u, uLen);
+      stroke(state);
+      state->clearPath();
+      state->setCTM(saveCTM[0], saveCTM[1], saveCTM[2], saveCTM[3],
+                   saveCTM[4], saveCTM[5]);
+      state->moveTo(saveCurX, saveCurY);
+    } else {
+      // can't stroke the outline, so just fill it using the stroke
+      // color
+      state->getStrokeRGB(&rgb);
+      if (reverseVideo) {
+       rgb.r = 1 - rgb.r;
+       rgb.g = 1 - rgb.g;
+       rgb.b = 1 - rgb.b;
+      }
+      font->drawChar(state, pixmap, pixmapW, pixmapH, strokeGC, &rgb,
+                    x1, y1, dx1, dy1, code, u, uLen);
+    }
   }
 
-  //~ assumes font is an XOutputServerFont
-
-  if (!font)
-    return;
+#if 0 //~ unimplemented: clipping to char path
+  // clip
+  if (render & 4) {
+  }
+#endif
+}
 
-  // check for invisible text -- this is used by Acrobat Capture
-  if ((state->getRender() & 3) == 3)
-    return;
+GBool XOutputDev::beginType3Char(GfxState *state,
+                                CharCode code, Unicode *u, int uLen) {
+  Ref *fontID;
+  double *ctm, *bbox;
+  GfxRGB color;
+  T3FontCache *t3Font;
+  T3GlyphStack *t3gs;
+  double x1, y1, xMin, yMin, xMax, yMax, xt, yt;
+  int i, j;
 
-  // handle origin offset for vertical fonts
-  if (gfxFont->getWMode16() == 1) {
-    x -= gfxFont->getOriginX16(c) * state->getFontSize();
-    y -= gfxFont->getOriginY16(c) * state->getFontSize();
+  if (!gfxFont) {
+    return gFalse;
   }
+  fontID = gfxFont->getID();
+  ctm = state->getCTM();
+  state->transform(0, 0, &xt, &yt);
 
-  state->transform(x, y, &x1, &y1);
+  // is it the first (MRU) font in the cache?
+  if (!(nT3Fonts > 0 &&
+       t3FontCache[0]->matches(fontID, ctm[0], ctm[1], ctm[2], ctm[3]))) {
 
-  c1 = 0;
-  switch (gfxFont->getCharSet16()) {
-
-  // convert Adobe-Japan1-2 to JIS X 0208-1983
-  case font16AdobeJapan12:
-#if JAPANESE_SUPPORT
-    if (c <= 96) {
-      c1 = japan12Map[c];
-    } else if (c <= 632) {
-      if (c <= 230)
-       c1 = 0;
-      else if (c <= 324)
-       c1 = japan12Map[c - 230];
-      else if (c <= 421)
-       c1 = japan12KanaMap1[c - 325];
-      else if (c <= 500)
-       c1 = 0;
-      else if (c <= 598)
-       c1 = japan12KanaMap2[c - 501];
-      else
-       c1 = 0;
-    } else if (c <= 1124) {
-      if (c <= 779) {
-       if (c <= 726)
-         c1 = 0x2121 + (c - 633);
-       else if (c <= 740)
-         c1 = 0x2221 + (c - 727);
-       else if (c <= 748)
-         c1 = 0x223a + (c - 741);
-       else if (c <= 755)
-         c1 = 0x224a + (c - 749);
-       else if (c <= 770)
-         c1 = 0x225c + (c - 756);
-       else if (c <= 778)
-         c1 = 0x2272 + (c - 771);
-       else
-         c1 = 0x227e;
-      } else if (c <= 841) {
-       if (c <= 789)
-         c1 = 0x2330 + (c - 780);
-       else if (c <= 815)
-         c1 = 0x2341 + (c - 790);
-       else
-         c1 = 0x2361 + (c - 816);
-      } else if (c <= 1010) {
-       if (c <= 924)
-         c1 = 0x2421 + (c - 842);
-       else
-         c1 = 0x2521 + (c - 925);
-      } else {
-       if (c <= 1034)
-         c1 = 0x2621 + (c - 1011);
-       else if (c <= 1058)
-         c1 = 0x2641 + (c - 1035);
-       else if (c <= 1091)
-         c1 = 0x2721 + (c - 1059);
-       else
-         c1 = 0x2751 + (c - 1092);
-      }
-    } else if (c <= 4089) {
-      t1 = (c - 1125) / 94;
-      t2 = (c - 1125) % 94;
-      c1 = 0x3021 + (t1 << 8) + t2;
-    } else if (c <= 7477) {
-      t1 = (c - 4090) / 94;
-      t2 = (c - 4090) % 94;
-      c1 = 0x5021 + (t1 << 8) + t2;
-    } else if (c <= 7554) {
-      c1 = 0;
-    } else if (c <= 7563) {    // circled Arabic numbers 1..9
-      c1 = 0x2331 + (c - 7555);
-      c2[0].byte1 = c1 >> 8;
-      c2[0].byte2 = c1 & 0xff;
-      XDrawString16(display, pixmap,
-                   (state->getRender() & 1) ? strokeGC : fillGC,
-                   xoutRound(x1), xoutRound(y1), c2, 1);
-      c1 = 0x227e;
-      c2[0].byte1 = c1 >> 8;
-      c2[0].byte2 = c1 & 0xff;
-      XDrawString16(display, pixmap,
-                   (state->getRender() & 1) ? strokeGC : fillGC,
-                   xoutRound(x1), xoutRound(y1), c2, 1);
-      c1 = -1;
-    } else if (c <= 7574) {    // circled Arabic numbers 10..20
-      n = c - 7564 + 10;
-      x2 = x1;
-      for (i = 0; i < 2; ++i) {
-       c1 = 0x2330 + (i == 0 ? (n / 10) : (n % 10));
-       c2[0].byte1 = c1 >> 8;
-       c2[0].byte2 = c1 & 0xff;
-       XDrawString16(display, pixmap,
-                     (state->getRender() & 1) ? strokeGC : fillGC,
-                     xoutRound(x2), xoutRound(y1), c2, 1);
-       x2 += 0.5 * state->getTransformedFontSize();
-      }
-      c1 = 0x227e;
-      c2[0].byte1 = c1 >> 8;
-      c2[0].byte2 = c1 & 0xff;
-      XDrawString16(display, pixmap,
-                   (state->getRender() & 1) ? strokeGC : fillGC,
-                   xoutRound(x1), xoutRound(y1), c2, 1);
-      c1 = -1;
-    } else if (c <= 7584) {    // Roman numbers I..X
-      p = japan12Roman[c - 7575];
-      n = strlen(p);
-      for (; *p; ++p) {
-       if (*p == 'I')
-         c1 = 0x2349;
-       else if (*p == 'V')
-         c1 = 0x2356;
-       else // 'X'
-         c1 = 0x2358;
-       c2[0].byte1 = c1 >> 8;
-       c2[0].byte2 = c1 & 0xff;
-       XDrawString16(display, pixmap,
-                     (state->getRender() & 1) ? strokeGC : fillGC,
-                     xoutRound(x1), xoutRound(y1), c2, 1);
-       if (*p == 'I')
-         x1 += 0.2 * state->getTransformedFontSize();
-       else
-         x1 += 0.5 * state->getTransformedFontSize();
-      }
-      c1 = -1;
-    } else if (c <= 7632) {
-      if (c <= 7600) {
-       c1 = 0;
-      } else if (c <= 7606) {
-       p = japan12Abbrev1[c - 7601];
-       n = strlen(p);
-       for (; *p; ++p) {
-         c1 = 0x2300 + *p;
-         c2[0].byte1 = c1 >> 8;
-         c2[0].byte2 = c1 & 0xff;
-         XDrawString16(display, pixmap,
-                       (state->getRender() & 1) ? strokeGC : fillGC,
-                       xoutRound(x1), xoutRound(y1), c2, 1);
-         x1 += 0.5 * state->getTransformedFontSize();
+    // is the font elsewhere in the cache?
+    for (i = 1; i < nT3Fonts; ++i) {
+      if (t3FontCache[i]->matches(fontID, ctm[0], ctm[1], ctm[2], ctm[3])) {
+       t3Font = t3FontCache[i];
+       for (j = i; j > 0; --j) {
+         t3FontCache[j] = t3FontCache[j - 1];
        }
-       c1 = -1;
-      } else {
-       c1 = 0;
+       t3FontCache[0] = t3Font;
+       break;
       }
-    } else {
-      c1 = 0;
-    }
-#if 0 //~
-    if (c1 == 0)
-      error(-1, "Unsupported Adobe-Japan1-2 character: %d", c);
-#endif
-#endif // JAPANESE_SUPPORT
-    break;
-
-  // convert Adobe-GB1-2 to GB 2312-80
-  case font16AdobeGB12:
-#if CHINESE_GB_SUPPORT
-    if (c <= 939) {
-      c1 = gb12Map[c];
-    } else if (c <= 4605) {
-      t1 = (c - 940) / 94;
-      t2 = (c - 940) % 94;
-      c1 = 0x3021 + (t1 << 8) + t2;
-    } else if (c <= 4694) {
-      c1 = c - 4606 + 0x5721;
-    } else if (c <= 7702) {
-      t1 = (c - 4695) / 94;
-      t2 = (c - 4695) % 94;
-      c1 = 0x5821 + (t1 << 8) + t2;
-    } else if (c == 7716) {
-      c1 = 0x2121;
-    }
-#if 1 //~
-    if (c1 == 0) {
-      error(-1, "Unsupported Adobe-GB1-2 character: %d", c);
     }
-#endif
-#endif // CHINESE_GB_SUPPORT
-    break;
+    if (i >= nT3Fonts) {
 
-  // convert Adobe-CNS1-3 to Big5
-  case font16AdobeCNS13:
-#if CHINESE_CNS_SUPPORT
-    if (c <= 98) {
-      c1 = cns13Map1[c];
-    } else if (c <= 502) {
-      if (c == 247) {
-       c1 = 0xa1f7;
-      } else if (c == 248) {
-       c1 = 0xa1f6;
-      } else {
-       t1 = (c - 99) / 157;
-       t2 = (c - 99) % 157;
-       if (t2 <= 62) {
-         c1 = 0xa140 + (t1 << 8) + t2;
-       } else {
-         c1 = 0xa162 + (t1 << 8) + t2;
-       }
+      // create new entry in the font cache
+      if (nT3Fonts == xOutT3FontCacheSize) {
+       delete t3FontCache[nT3Fonts - 1];
+       --nT3Fonts;
+      }
+      for (j = nT3Fonts; j > 0; --j) {
+       t3FontCache[j] = t3FontCache[j - 1];
       }
-    } else if (c <= 505) {
-      c1 = 0xa3bd + (c - 503);
-    } else if (c <= 594) {
-      c1 = 0;
-    } else if (c <= 5995) {
-      if (c == 2431) {
-       c1 = 0xacfe;
-      } else if (c == 4308) {
-       c1 = 0xbe52;
-      } else if (c == 5221) {
-       c1 = 0xc2cb;
-      } else if (c == 5495) {
-       c1 = 0xc456;
-      } else if (c == 5550) {
-       c1 = 0xc3ba;
-      } else if (c == 5551) {
-       c1 = 0xc3b9;
+      ++nT3Fonts;
+      bbox = gfxFont->getFontBBox();
+      if (bbox[0] == 0 && bbox[1] == 0 && bbox[2] == 0 && bbox[3] == 0) {
+       // broken bounding box -- just take a guess
+       xMin = xt - 5;
+       xMax = xMin + 30;
+       yMax = yt + 15;
+       yMin = yMax - 45;
       } else {
-       if (c >= 2007 && c <= 2430) {
-         t1 = c - 594;
-       } else if (c >= 4309 && c <= 4695) {
-         t1 = c - 596;
-       } else if (c >= 5222 && c <= 5410) {
-         t1 = c - 596;
-       } else if (c >= 5496 && c <= 5641) {
-         t1 = c - 596;
-       } else {
-         t1 = c - 595;
+       state->transform(bbox[0], bbox[1], &x1, &y1);
+       xMin = xMax = x1;
+       yMin = yMax = y1;
+       state->transform(bbox[0], bbox[3], &x1, &y1);
+       if (x1 < xMin) {
+         xMin = x1;
+       } else if (x1 > xMax) {
+         xMax = x1;
        }
-       t2 = t1 % 157;
-       t1 /= 157;
-       if (t2 <= 62) {
-         c1 = 0xa440 + (t1 << 8) + t2;
-       } else {
-         c1 = 0xa462 + (t1 << 8) + t2;
+       if (y1 < yMin) {
+         yMin = y1;
+       } else if (y1 > yMax) {
+         yMax = y1;
+       }
+       state->transform(bbox[2], bbox[1], &x1, &y1);
+       if (x1 < xMin) {
+         xMin = x1;
+       } else if (x1 > xMax) {
+         xMax = x1;
+       }
+       if (y1 < yMin) {
+         yMin = y1;
+       } else if (y1 > yMax) {
+         yMax = y1;
+       }
+       state->transform(bbox[2], bbox[3], &x1, &y1);
+       if (x1 < xMin) {
+         xMin = x1;
+       } else if (x1 > xMax) {
+         xMax = x1;
+       }
+       if (y1 < yMin) {
+         yMin = y1;
+       } else if (y1 > yMax) {
+         yMax = y1;
        }
       }
-    } else if (c <= 13645) {
-      if (c == 6039) {
-       c1 = 0xc9be;
-      } else if (c == 6134) {
-       c1 = 0xcaf7;
-      } else if (c == 8142) {
-       c1 = 0xdadf;
-      } else if (c == 8788) {
-       c1 = 0xd6cc;
-      } else if (c == 8889) {
-       c1 = 0xd77a;
-      } else if (c == 10926) {
-       c1 = 0xebf1;
-      } else if (c == 11073) {
-       c1 = 0xecde;
-      } else if (c == 11361) {
-       c1 = 0xf0cb;
-      } else if (c == 11719) {
-       c1 = 0xf056;
-      } else if (c == 12308) {
-       c1 = 0xeeeb;
-      } else if (c == 12526) {
-       c1 = 0xf4b5;
-      } else if (c == 12640) {
-       c1 = 0xf16b;
-      } else if (c == 12783) {
-       c1 = 0xf268;
-      } else if (c == 12900) {
-       c1 = 0xf663;
-      } else if (c == 13585) {
-       c1 = 0xf9c4;
-      } else if (c == 13641) {
-       c1 = 0xf9c6;
-      } else {
-       if (c >= 6006 && c <= 6038) {
-         t1 = c - 5995;
-       } else if (c >= 6088 && c <= 6133) {
-         t1 = c - 5995;
-       } else if (c >= 6302 && c <= 8250) {
-         t1 = c - 5995;
-       } else if (c >= 8251 && c <= 8888) {
-         t1 = c - 5994;
-       } else if (c >= 8890 && c <= 9288) {
-         t1 = c - 5995;
-       } else if (c >= 9289 && c <= 10925) {
-         t1 = c - 5994;
-       } else if (c >= 10927 && c <= 11072) {
-         t1 = c - 5995;
-       } else if (c >= 11362 && c <= 11477) {
-         t1 = c - 5997;
-       } else if (c >= 11615 && c <= 11718) {
-         t1 = c - 5995;
-       } else if (c >= 11942 && c <= 12139) {
-         t1 = c - 5995;
-       } else if (c >= 12140 && c <= 12221) {
-         t1 = c - 5994;
-       } else if (c >= 12222 && c <= 12307) {
-         t1 = c - 5993;
-       } else if (c >= 12309 && c <= 12316) {
-         t1 = c - 5994;
-       } else if (c >= 12317 && c <= 12469) {
-         t1 = c - 5993;
-       } else if (c >= 12470 && c <= 12525) {
-         t1 = c - 5992;
-       } else if (c >= 12527 && c <= 12639) {
-         t1 = c - 5993;
-       } else if (c >= 12641 && c <= 12782) {
-         t1 = c - 5994;
-       } else if (c >= 12784 && c <= 12828) {
-         t1 = c - 5995;
-       } else if (c >= 12829 && c <= 12899) {
-         t1 = c - 5994;
-       } else if (c >= 12901 && c <= 13094) {
-         t1 = c - 5995;
-       } else if (c >= 13095 && c <= 13584) {
-         t1 = c - 5994;
-       } else if (c >= 13586 && c <= 13628) {
-         t1 = c - 5995;
-       } else if (c == 13629) {
-         t1 = c - 5994;
-       } else if (c >= 13630 && c <= 13640) {
-         t1 = c - 5993;
-       } else if (c >= 13642 && c <= 13645) {
-         t1 = c - 5994;
+      t3FontCache[0] = new T3FontCache(fontID, ctm[0], ctm[1], ctm[2], ctm[3],
+                                      (int)floor(xMin - xt),
+                                      (int)floor(yMin - yt),
+                                      (int)ceil(xMax) - (int)floor(xMin) + 3,
+                                      (int)ceil(yMax) - (int)floor(yMin) + 3,
+                                      display,
+                                      DefaultVisual(display, screenNum),
+                                      depth, pixmap);
+    }
+  }
+  t3Font = t3FontCache[0];
+
+  // is the glyph in the cache?
+  i = (code & (t3Font->cacheSets - 1)) * t3Font->cacheAssoc;
+  for (j = 0; j < t3Font->cacheAssoc; ++j) {
+    if ((t3Font->cacheTags[i+j].mru & 0x8000) &&
+       t3Font->cacheTags[i+j].code == code) {
+      state->getFillRGB(&color);
+      if (reverseVideo) {
+       color.r = 1 - color.r;
+       color.g = 1 - color.g;
+       color.b = 1 - color.b;
+      }
+      text->addChar(state, 0, 0,
+                   t3Font->cacheTags[i+j].wx, t3Font->cacheTags[i+j].wy,
+                   u, uLen);
+      drawType3Glyph(t3Font, &t3Font->cacheTags[i+j],
+                    t3Font->cacheData + (i+j) * t3Font->glyphSize,
+                    xt, yt, &color);
+      return gTrue;
+    }
+  }
+
+  // push a new Type 3 glyph record
+  t3gs = new T3GlyphStack();
+  t3gs->next = t3GlyphStack;
+  t3GlyphStack = t3gs;
+  t3GlyphStack->cacheable = gFalse;
+  t3GlyphStack->code = code;
+  t3GlyphStack->cache = t3Font;
+  t3GlyphStack->cacheIdx = i;
+  t3GlyphStack->x = xt;
+  t3GlyphStack->y = yt;
+  t3GlyphStack->u = u;
+  t3GlyphStack->uLen = uLen;
+
+  return gFalse;
+}
+
+void XOutputDev::endType3Char(GfxState *state) {
+  XImage *image;
+  Guchar *p;
+  int x, y;
+  Gulong pixel;
+  double alpha;
+  T3GlyphStack *t3gs;
+
+  if (t3GlyphStack->cacheable) {
+    image = t3GlyphStack->cache->image;
+    XGetSubImage(display, pixmap, 0, 0,
+                t3GlyphStack->cache->glyphW, t3GlyphStack->cache->glyphH,
+                (1 << depth) - 1, ZPixmap, image, 0, 0);
+    p = t3GlyphStack->cacheData;
+    for (y = 0; y < t3GlyphStack->cache->glyphH; ++y) {
+      for (x = 0; x < t3GlyphStack->cache->glyphW; ++x) {
+       pixel = XGetPixel(image, x, y);
+       if (trueColor) {
+         alpha = (double)((pixel >> rShift) & rMul) / (double)rMul;
        } else {
-         t1 = c - 5996;
+         alpha = redMap[pixel & 0xff];
        }
-       t2 = t1 % 157;
-       t1 /= 157;
-       if (t2 <= 62) {
-         c1 = 0xc940 + (t1 << 8) + t2;
+       if (alpha <= 0.2) {
+         *p++ = 4;
+       } else if (alpha <= 0.4) {
+         *p++ = 3;
+       } else if (alpha <= 0.6) {
+         *p++ = 2;
+       } else if (alpha <= 0.8) {
+         *p++ = 1;
        } else {
-         c1 = 0xc962 + (t1 << 8) + t2;
+         *p++ = 0;
        }
       }
-    } else if (c == 13646) {
-      c1 = 0xa14b;
-    } else if (c == 13647) {
-      c1 = 0xa1e3;
-    } else if (c <= 13742) {
-      c1 = cns13Map2[c - 13648];
-    } else if (c <= 13746) {
-      c1 = 0xa159 + (c - 13743);
-    } else if (c <= 14055) {
-      c1 = 0;
-    } else if (c <= 14062) {
-      c1 = 0xf9d6 + (c - 14056);
-    }
-#if 1 //~
-    if (c1 == 0) {
-      error(-1, "Unsupported Adobe-CNS1-3 character: %d", c);
     }
-#endif
-#endif
-    break;
+    XDestroyRegion(clipRegion);
+    XFreeGC(display, strokeGC);
+    XFreeGC(display, fillGC);
+    pixmapW = t3GlyphStack->origPixmapW;
+    pixmapH = t3GlyphStack->origPixmapH;
+    pixmap = t3GlyphStack->origPixmap;
+    strokeGC = t3GlyphStack->origStrokeGC;
+    fillGC = t3GlyphStack->origFillGC;
+    clipRegion = t3GlyphStack->origClipRegion;
+    drawType3Glyph(t3GlyphStack->cache,
+                  t3GlyphStack->cacheTag, t3GlyphStack->cacheData,
+                  t3GlyphStack->x, t3GlyphStack->y, &t3GlyphStack->color);
+  }
+  text->addChar(state, 0, 0, t3GlyphStack->wx, t3GlyphStack->wy,
+               t3GlyphStack->u, t3GlyphStack->uLen);
+  t3gs = t3GlyphStack;
+  t3GlyphStack = t3gs->next;
+  delete t3gs;
+}
+
+void XOutputDev::drawType3Glyph(T3FontCache *t3Font,
+                               T3FontCacheTag *tag, Guchar *data,
+                               double x, double y, GfxRGB *color) {
+  XImage *image;
+  XColor xcolor;
+  GfxRGB bg, rgb;
+  Gulong map[5];
+  Gulong pixel;
+  Guchar *p;
+  int x0, y0, w0, h0, x1, y1;
+  int ix, iy;
+
+  // compute: (x0,y0) = position in destination pixmap
+  //          (x1,y1) = position in the XImage
+  //          (w0,h0) = size of XImage transfer
+  x0 = xoutRound(x + t3Font->glyphX);
+  y0 = xoutRound(y + t3Font->glyphY);
+  x1 = 0;
+  y1 = 0;
+  w0 = t3Font->glyphW;
+  h0 = t3Font->glyphH;
+  if (x0 < 0) {
+    x1 = -x0;
+    w0 += x0;
+    x0 = 0;
+  }
+  if (x0 + w0 > pixmapW) {
+    w0 = pixmapW - x0;
+  }
+  if (w0 <= 0) {
+    return;
+  }
+  if (y0 < 0) {
+    y1 = -y0;
+    h0 += y0;
+    y0 = 0;
+  }
+  if (y0 + h0 > pixmapH) {
+    h0 = pixmapH - y0;
+  }
+  if (h0 <= 0) {
+    return;
   }
 
-  if (c1 > 0) {
-    c2[0].byte1 = c1 >> 8;
-    c2[0].byte2 = c1 & 0xff;
-    XDrawString16(display, pixmap,
-                 (state->getRender() & 1) ? strokeGC : fillGC,
-                 xoutRound(x1), xoutRound(y1), c2, 1);
+  image = t3Font->image;
+  XGetSubImage(display, pixmap, x0, y0, w0, h0,
+              (1 << depth) - 1, ZPixmap, image, x1, y1);
+  xcolor.pixel = XGetPixel(image, t3Font->glyphW / 2, t3Font->glyphH / 2);
+  XQueryColor(display, colormap, &xcolor);
+  bg.r = xcolor.red / 65535.0;
+  bg.g = xcolor.green / 65535.0;
+  bg.b = xcolor.blue / 65535.0;
+  rgb.r = 0.25 * (color->r + 3 * bg.r);
+  rgb.g = 0.25 * (color->g + 3 * bg.g);
+  rgb.b = 0.25 * (color->b + 3 * bg.b);
+  map[1] = findColor(&rgb);
+  rgb.r = 0.5 * (color->r + bg.r);
+  rgb.g = 0.5 * (color->g + bg.g);
+  rgb.b = 0.5 * (color->b + bg.b);
+  map[2] = findColor(&rgb);
+  rgb.r = 0.25 * (3 * color->r + bg.r);
+  rgb.g = 0.25 * (3 * color->g + bg.g);
+  rgb.b = 0.25 * (3 * color->b + bg.b);
+  map[3] = findColor(&rgb);
+  map[4] = findColor(color);
+  p = data;
+  for (iy = 0; iy < t3Font->glyphH; ++iy) {
+    for (ix = 0; ix < t3Font->glyphW; ++ix) {
+      pixel = *p++;
+      if (pixel > 0) {
+       XPutPixel(image, ix, iy, map[pixel]);
+      }
+    }
+  }
+  XPutImage(display, pixmap, fillGC, image, x1, y1, x0, y0, w0, h0);
+}
+
+void XOutputDev::type3D0(GfxState *state, double wx, double wy) {
+  t3GlyphStack->wx = wx;
+  t3GlyphStack->wy = wy;
+}
+
+void XOutputDev::type3D1(GfxState *state, double wx, double wy,
+                        double llx, double lly, double urx, double ury) {
+  GfxColor fgColor;
+  XGCValues gcValues;
+  XRectangle rect;
+  double *ctm;
+  T3FontCache *t3Font;
+  int i, j;
+
+  // allocate a cache entry
+  t3GlyphStack->cacheable = gTrue;
+  t3Font = t3GlyphStack->cache;
+  i = t3GlyphStack->cacheIdx;
+  for (j = 0; j < t3Font->cacheAssoc; ++j) {
+    if ((t3Font->cacheTags[i+j].mru & 0x7fff) == t3Font->cacheAssoc - 1) {
+      t3Font->cacheTags[i+j].mru = 0x8000;
+      t3Font->cacheTags[i+j].code = t3GlyphStack->code;
+      t3GlyphStack->cacheTag = &t3Font->cacheTags[i+j];
+      t3GlyphStack->cacheData = t3Font->cacheData + (i+j) * t3Font->glyphSize;
+    } else {
+      ++t3Font->cacheTags[i+j].mru;
+    }
   }
+  t3GlyphStack->wx = wx;
+  t3GlyphStack->wy = wy;
+  t3GlyphStack->cacheTag->wx = wx;
+  t3GlyphStack->cacheTag->wy = wy;
+
+  // prepare to rasterize the glyph
+  //~ do we need to handle both fill and stroke color?
+  state->getFillRGB(&t3GlyphStack->color);
+  if (reverseVideo) {
+    t3GlyphStack->color.r = 1 - t3GlyphStack->color.r;
+    t3GlyphStack->color.g = 1 - t3GlyphStack->color.g;
+    t3GlyphStack->color.b = 1 - t3GlyphStack->color.b;
+  }
+  fgColor.c[0] = reverseVideo ? 1 : 0;
+  state->setFillColorSpace(new GfxDeviceGrayColorSpace());
+  state->setFillColor(&fgColor);
+  state->setStrokeColorSpace(new GfxDeviceGrayColorSpace());
+  state->setStrokeColor(&fgColor);
+  t3GlyphStack->origPixmapW = pixmapW;
+  t3GlyphStack->origPixmapH = pixmapH;
+  t3GlyphStack->origPixmap = pixmap;
+  t3GlyphStack->origStrokeGC = strokeGC;
+  t3GlyphStack->origFillGC = fillGC;
+  t3GlyphStack->origClipRegion = clipRegion;
+  pixmapW = t3GlyphStack->cache->glyphW;
+  pixmapH = t3GlyphStack->cache->glyphH;
+  pixmap = t3GlyphStack->cache->pixmap;
+  gcValues.foreground = BlackPixel(display, screenNum);
+  gcValues.background = WhitePixel(display, screenNum);
+  gcValues.line_width = 0;
+  gcValues.line_style = LineSolid;
+  strokeGC = XCreateGC(display, pixmap,
+                      GCForeground | GCBackground | GCLineWidth | GCLineStyle,
+                      &gcValues);
+  updateLineAttrs(state, gTrue);
+  gcValues.foreground = WhitePixel(display, screenNum);
+  fillGC = XCreateGC(display, pixmap,
+                    GCForeground | GCBackground | GCLineWidth | GCLineStyle,
+                    &gcValues);
+  XFillRectangle(display, pixmap, fillGC, 0, 0, pixmapW, pixmapH);
+  XSetForeground(display, fillGC, BlackPixel(display, screenNum));
+  clipRegion = XCreateRegion();
+  rect.x = rect.y = 0;
+  rect.width = pixmapW;
+  rect.height = pixmapH;
+  XUnionRectWithRegion(&rect, clipRegion, clipRegion);
+  XSetRegion(display, strokeGC, clipRegion);
+  XSetRegion(display, fillGC, clipRegion);
+  ctm = state->getCTM();
+  state->setCTM(ctm[0], ctm[1], ctm[2], ctm[3], 
+               -t3GlyphStack->cache->glyphX, -t3GlyphStack->cache->glyphY);
 }
 
 inline Gulong XOutputDev::findColor(GfxRGB *x, GfxRGB *err) {
@@ -2792,7 +2944,7 @@ Gulong XOutputDev::findColor(GfxRGB *rgb) {
     r = xoutRound(rgb->r * (numColors - 1));
     g = xoutRound(rgb->g * (numColors - 1));
     b = xoutRound(rgb->b * (numColors - 1));
-#if 0 //~ this makes things worse as often as better
+#if 0 // this makes things worse as often as better
     // even a very light color shouldn't map to white
     if (r == numColors - 1 && g == numColors - 1 && b == numColors - 1) {
       if (color->getR() < 0.95)
@@ -2813,20 +2965,16 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
                               GBool inlineImg) {
   ImageStream *imgStr;
   XImage *image;
-  double xt, yt;
+  double *ctm;
+  GBool rot;
+  double xScale, yScale, xShear, yShear;
+  int tx, ty, scaledWidth, scaledHeight, xSign, ySign;
   int ulx, uly, llx, lly, urx, ury, lrx, lry;
-  int hx, hy;
+  int ulx1, uly1, llx1, lly1, urx1, ury1, lrx1, lry1;
   int bx0, by0, bx1, by1, bw, bh;
   int cx0, cy0, cx1, cy1, cw, ch;
-  int dx, dy;
-  int dvx, dvdx, dvpx, dvqx, dvdx2, dvtx;
-  int dvy, dvdy, dvpy, dvqy, dvdy2, dvty;
-  int dhx, dhdx, dhpx, dhqx, dhdx2, dhtx, dhtx0;
-  int dhy, dhdy, dhpy, dhqy, dhdy2, dhty, dhty0;
-  int ivy, ivdy, ivpy, ivqy, ivty;
-  int ihx, ihdx, ihpx, ihqx, ihtx;
-  int vn, vi, hn, hi;
-  int bufy;
+  int yp, yq, yt, yStep, lastYStep;
+  int xp, xq, xt, xStep, xSrc;
   GfxRGB rgb;
   Guchar *pixBuf;
   int imgPix;
@@ -2837,80 +2985,97 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
   double r0, g0, b0, r1, g1, b1;
   Gulong pix;
   Guchar *p;
+  int x, y, x1, y1, x2, y2;
   int n, m, i, j;
 
-  // corners in device space
-  state->transform(0, 0, &xt, &yt);
-  llx = xoutRound(xt);
-  lly = xoutRound(yt);
-  state->transform(0, 1, &xt, &yt);
-  ulx = xoutRound(xt);
-  uly = xoutRound(yt);
-  state->transform(1, 0, &xt, &yt);
-  lrx = xoutRound(xt);
-  lry = xoutRound(yt);
-  state->transform(1, 1, &xt, &yt);
-  urx = xoutRound(xt);
-  ury = xoutRound(yt);
-
-  // horizontal traversal
-  hx = urx - ulx;
-  if (abs(lrx - llx) < abs(hx)) {
-    hx = lrx - llx;
-  }
-  hy = ury - uly;
-  if (abs(lry - lly) < abs(hy)) {
-    hy = lry - lly;
+  // get CTM, check for singular matrix
+  ctm = state->getCTM();
+  if (fabs(ctm[0] * ctm[3] - ctm[1] * ctm[2]) < 0.000001) {
+    error(-1, "Singular CTM in drawImage");
+    if (inlineImg) {
+      j = height * ((width + 7) / 8);
+      str->reset();
+      for (i = 0; i < j; ++i) {
+       str->getChar();
+      }
+      str->close();
+    }
+    return;
+  }
+
+  // compute scale, shear, rotation, translation parameters
+  rot = fabs(ctm[1]) > fabs(ctm[0]);
+  if (rot) {
+    xScale = -ctm[1];
+    yScale = -ctm[2] + (ctm[0] * ctm[3]) / ctm[1];
+    xShear = ctm[3] / yScale;
+    yShear = -ctm[0] / ctm[1];
+  } else {
+    xScale = ctm[0];
+    yScale = -ctm[3] + (ctm[1] * ctm[2]) / ctm[0];
+    xShear = -ctm[2] / yScale;
+    yShear = ctm[1] / ctm[0];
+  }
+  tx = xoutRound(ctm[2] + ctm[4]);
+  ty = xoutRound(ctm[3] + ctm[5]);
+  // use ceil() to avoid gaps between "striped" images
+  scaledWidth = (int)ceil(fabs(xScale));
+  xSign = (xScale < 0) ? -1 : 1;
+  scaledHeight = (int)ceil(fabs(yScale));
+  ySign = (yScale < 0) ? -1 : 1;
+
+  // compute corners in device space
+  ulx1 = 0;
+  uly1 = 0;
+  urx1 = xSign * (scaledWidth - 1);
+  ury1 = xoutRound(yShear * urx1);
+  llx1 = xoutRound(xShear * ySign * (scaledHeight - 1));
+  lly1 = ySign * (scaledHeight - 1) + xoutRound(yShear * llx1);
+  lrx1 = xSign * (scaledWidth - 1) +
+           xoutRound(xShear * ySign * (scaledHeight - 1));
+  lry1 = ySign * (scaledHeight - 1) + xoutRound(yShear * lrx1);
+  if (rot) {
+    ulx = tx + uly1;    uly = ty - ulx1;
+    urx = tx + ury1;    ury = ty - urx1;
+    llx = tx + lly1;    lly = ty - llx1;
+    lrx = tx + lry1;    lry = ty - lrx1;
+  } else {
+    ulx = tx + ulx1;    uly = ty + uly1;
+    urx = tx + urx1;    ury = ty + ury1;
+    llx = tx + llx1;    lly = ty + lly1;
+    lrx = tx + lrx1;    lry = ty + lry1;
   }
 
   // bounding box:
   //   (bx0, by0) = upper-left corner
   //   (bx1, by1) = lower-right corner
   //   (bw, bh) = size
-  bx0 = bx1 = ulx;
-  if (llx < bx0) {
-    bx0 = llx;
-  } else if (llx > bx1) {
-    bx1 = llx;
-  }
-  if (urx < bx0) {
-    bx0 = urx;
-  } else if (urx > bx1) {
-    bx1 = urx;
-  }
-  if (lrx < bx0) {
-    bx0 = lrx;
-  } else if (lrx > bx1) {
-    bx1 = lrx;
-  }
-  by0 = by1 = uly;
-  if (lly < by0) {
-    by0 = lly;
-  } else if (lly > by1) {
-    by1 = lly;
-  }
-  if (ury < by0) {
-    by0 = ury;
-  } else if (ury > by1) {
-    by1 = ury;
-  }
-  if (lry < by0) {
-    by0 = lry;
-  } else if (lry > by1) {
-    by1 = lry;
-  }
+  bx0 = (ulx < urx) ? (ulx < llx) ? (ulx < lrx) ? ulx : lrx
+                                  : (llx < lrx) ? llx : lrx
+                   : (urx < llx) ? (urx < lrx) ? urx : lrx
+                                  : (llx < lrx) ? llx : lrx;
+  bx1 = (ulx > urx) ? (ulx > llx) ? (ulx > lrx) ? ulx : lrx
+                                  : (llx > lrx) ? llx : lrx
+                   : (urx > llx) ? (urx > lrx) ? urx : lrx
+                                  : (llx > lrx) ? llx : lrx;
+  by0 = (uly < ury) ? (uly < lly) ? (uly < lry) ? uly : lry
+                                  : (lly < lry) ? lly : lry
+                   : (ury < lly) ? (ury < lry) ? ury : lry
+                                  : (lly < lry) ? lly : lry;
+  by1 = (uly > ury) ? (uly > lly) ? (uly > lry) ? uly : lry
+                                  : (lly > lry) ? lly : lry
+                   : (ury > lly) ? (ury > lry) ? ury : lry
+                                  : (lly > lry) ? lly : lry;
   bw = bx1 - bx0 + 1;
   bh = by1 - by0 + 1;
 
-  // bounding box clipped to pixmap, i.e., "valid" rectangle:
-  //   (cx0, cy0) = upper-left corner of valid rectangle in page pixmap
-  //   (cx1, cy1) = upper-left corner of valid rectangle in image pixmap
+  // Bounding box clipped to pixmap, i.e., "valid" rectangle:
+  //   (cx0, cy0) = upper-left corner of valid rectangle in Pixmap
+  //   (cx1, cy1) = upper-left corner of valid rectangle in XImage
   //   (cw, ch) = size of valid rectangle
-  if (bx1 >= pixmapW) {
-    cw = pixmapW - bx0;
-  } else {
-    cw = bw;
-  }
+  // These values will be used to transfer the XImage from/to the
+  // Pixmap.
+  cw = (bx1 >= pixmapW) ? pixmapW - bx0 : bw;
   if (bx0 < 0) {
     cx0 = 0;
     cx1 = -bx0;
@@ -2919,11 +3084,7 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
     cx0 = bx0;
     cx1 = 0;
   }
-  if (by1 >= pixmapH) {
-    ch = pixmapH - by0;
-  } else {
-    ch = bh;
-  }
+  ch = (by1 >= pixmapH) ? pixmapH - by0 : bh;
   if (by0 < 0) {
     cy0 = 0;
     cy1 = -by0;
@@ -2935,70 +3096,26 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
 
   // check for tiny (zero width or height) images
   // and off-page images
-  if (cw <= 0 || ch <= 0) {
+  if (scaledWidth <= 0 || scaledHeight <= 0 || cw <= 0 || ch <= 0) {
     if (inlineImg) {
       j = height * ((width + 7) / 8);
       str->reset();
       for (i = 0; i < j; ++i) {
        str->getChar();
       }
+      str->close();
     }
     return;
   }
 
-  // Bresenham parameters for vertical traversal
-  // (device coordinates and image coordinates)
-  dx = llx - ulx;
-  dy = lly - uly;
-  if (abs(dx) > abs(dy)) {
-    vn = abs(dx);
-    dvdx = dx > 0 ? 1 : -1;
-    dvpx = 0;
-    dvdx2 = 0;
-    dvdy = 0;
-    dvpy = abs(dy);
-    dvdy2 = dy > 0 ? 1 : -1;
-  } else {
-    vn = abs(dy);
-    dvdx = 0;
-    dvpx = abs(dx);
-    dvdx2 = dx > 0 ? 1 : -1;
-    dvdy = dy > 0 ? 1 : -1;
-    dvpy = 0;
-    dvdy2 = 0;
-  }
-  dvqx = dvqy = vn;
-  ivqy = vn + 1;
-  ivdy = height / ivqy;
-  ivpy = height % ivqy;
-
-  // Bresenham parameters for horizontal traversal
-  // (device coordinates and image coordinates)
-  if (abs(hx) > abs(hy)) {
-    hn = abs(hx);
-    dhdx = hx > 0 ? 1 : -1;
-    dhpx = 0;
-    dhdx2 = 0;
-    dhdy = 0;
-    dhpy = abs(hy);
-    dhdy2 = hy > 0 ? 1 : -1;
-  } else {
-    hn = abs(hy);
-    dhdx = 0;
-    dhpx = abs(hx);
-    dhdx2 = hx > 0 ? 1 : -1;
-    dhdy = hy > 0 ? 1 : -1;
-    dhpy = 0;
-    dhdy2 = 0;
-  }
-  dhqx = dhqy = hn;
-  ihqx = hn + 1;
-  ihdx = width / ihqx;
-  ihpx = width % ihqx;
+  // compute Bresenham parameters for x and y scaling
+  yp = height / scaledHeight;
+  yq = height % scaledHeight;
+  xp = width / scaledWidth;
+  xq = width % scaledWidth;
 
   // allocate pixel buffer
-  n = ivdy + (ivpy > 0 ? 1 : 0);
-  pixBuf = (Guchar *)gmalloc(n * width * sizeof(Guchar));
+  pixBuf = (Guchar *)gmalloc((yp + 1) * width * sizeof(Guchar));
 
   // allocate XImage and read from page pixmap
   image = XCreateImage(display, DefaultVisual(display, screenNum),
@@ -3009,6 +3126,11 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
 
   // get mask color
   state->getFillRGB(&rgb);
+  if (reverseVideo) {
+    rgb.r = 1 - rgb.r;
+    rgb.g = 1 - rgb.g;
+    rgb.b = 1 - rgb.b;
+  }
   r0 = rgb.r;
   g0 = rgb.g;
   b0 = rgb.b;
@@ -3026,26 +3148,23 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
   imgStr = new ImageStream(str, width, 1, 1);
   imgStr->reset();
 
-  // traverse left edge of image
-  dvx = ulx;
-  dvtx = 0;
-  dvy = uly;
-  dvty = 0;
-  ivy = 0;
-  ivty = 0;
-  dhtx0 = 0;
-  dhty0 = 0;
-  n = 0;
-  bufy = -1;
-  for (vi = 0; vi <= vn; ++vi) {
+  // init y scale Bresenham
+  yt = 0;
+  lastYStep = 1;
+
+  for (y = 0; y < scaledHeight; ++y) {
+
+    // y scale Bresenham
+    yStep = yp;
+    yt += yq;
+    if (yt >= scaledHeight) {
+      yt -= scaledHeight;
+      ++yStep;
+    }
 
     // read row(s) from image
-    if (ivy > bufy) {
-      if (ivdy == 0) {
-       n = 1;
-      } else {
-       n = ivdy + (ivty + ivpy >= ivqy ? 1 : 0);
-      }
+    n = (yp > 0) ? yStep : lastYStep;
+    if (n > 0) {
       p = pixBuf;
       for (i = 0; i < n; ++i) {
        for (j = 0; j < width; ++j) {
@@ -3056,26 +3175,44 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
          ++p;
        }
       }
-      bufy = ivy;
     }
+    lastYStep = yStep;
 
-    // traverse a horizontal stripe
-    dhx = 0;
-    dhy = 0;
-    dhtx = dhtx0;
-    dhty = dhty0;
-    ihx = 0;
-    ihtx = 0;
-    for (hi = 0; hi <= hn; ++hi) {
+    // init x scale Bresenham
+    xt = 0;
+    xSrc = 0;
 
-      // compute filtered pixel value
-      imgPix = 0;
-      if (ihdx == 0) {
-       m = 1;
+    for (x = 0; x < scaledWidth; ++x) {
+
+      // x scale Bresenham
+      xStep = xp;
+      xt += xq;
+      if (xt >= scaledWidth) {
+       xt -= scaledWidth;
+       ++xStep;
+      }
+
+      // x shear
+      x1 = xSign * x + xoutRound(xShear * ySign * y);
+
+      // y shear
+      y1 = ySign * y + xoutRound(yShear * x1);
+
+      // rotation
+      if (rot) {
+       x2 = y1;
+       y2 = -x1;
       } else {
-       m = ihdx + (ihtx + ihpx >= ihqx ? 1 : 0);
+       x2 = x1;
+       y2 = y1;
       }
-      p = pixBuf + ihx * sizeof(Guchar);
+
+      // compute the filtered pixel at (x,y) after the
+      // x and y scaling operations
+      n = yStep > 0 ? yStep : 1;
+      m = xStep > 0 ? xStep : 1;
+      p = pixBuf + xSrc;
+      imgPix = 0;
       for (i = 0; i < n; ++i) {
        for (j = 0; j < m; ++j) {
          imgPix += *p++;
@@ -3083,9 +3220,12 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
        p += width - m;
       }
 
+      // x scale Bresenham
+      xSrc += xStep;
+
       // blend image pixel with background
       alpha = (double)imgPix / (double)(n * m);
-      xcolor.pixel = XGetPixel(image, dvx + dhx - bx0, dvy + dhy - by0);
+      xcolor.pixel = XGetPixel(image, tx + x2 - bx0, ty + y2 - by0);
       if (xcolor.pixel != lastPixel) {
        XQueryColor(display, colormap, &xcolor);
        r1 = (double)xcolor.red / 65535.0;
@@ -3099,64 +3239,10 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
       pix = findColor(&rgb2);
 
       // set pixel
-      XPutPixel(image, dvx + dhx - bx0, dvy + dhy - by0, pix);
-
-      // Bresenham increment (horizontal stripe)
-      dhx += dhdx;
-      dhtx += dhpx;
-      if (dhtx >= dhqx) {
-       dhx += dhdx2;
-       dhtx -= dhqx;
-      }
-      dhy += dhdy;
-      dhty += dhpy;
-      if (dhty >= dhqy) {
-       dhy += dhdy2;
-       dhty -= dhqy;
-      }
-      ihx += ihdx;
-      ihtx += ihpx;
-      if (ihtx >= ihqx) {
-       ++ihx;
-       ihtx -= ihqx;
-      }
-    }
-
-    // Bresenham increment (left edge)
-    dvx += dvdx;
-    dvtx += dvpx;
-    dhty0 += dvdx * dhdx * dhpy;
-    if (dvtx >= dvqx) {
-      dvx += dvdx2;
-      dvtx -= dvqx;
-      dhty0 += dvdx2 * dhdx * dhpy;
-    }
-    dvy += dvdy;
-    dvty += dvpy;
-    dhtx0 += dvdy * dhdy * dhpx;
-    if (dvty >= dvqy) {
-      dvy += dvdy2;
-      dvty -= dvqy;
-      dhtx0 += dvdy2 * dhdy * dhpx;
-    }
-    ivy += ivdy;
-    ivty += ivpy;
-    if (ivty >= ivqy) {
-      ++ivy;
-      ivty -= ivqy;
-    }
-    if (dhtx0 >= dhqy) {
-      dhtx0 -= dhqx;
-    } else if (dhtx0 < 0) {
-      dhtx0 += dhqx;
-    }
-    if (dhty0 >= dhqx) {
-      dhty0 -= dhqy;
-    } else if (dhty0 < 0) {
-      dhty0 += dhqy;
+      XPutPixel(image, tx + x2 - bx0, ty + y2 - by0, pix);
     }
   }
-  
+
   // blit the image into the pixmap
   XPutImage(display, pixmap, fillGC, image, cx1, cy1, cx0, cy0, cw, ch);
 
@@ -3170,33 +3256,34 @@ void XOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
 
 void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
                           int width, int height, GfxImageColorMap *colorMap,
-                          GBool inlineImg) {
+                          int *maskColors, GBool inlineImg) {
   ImageStream *imgStr;
   XImage *image;
   int nComps, nVals, nBits;
   GBool dither;
-  double xt, yt;
+  double *ctm;
+  GBool rot;
+  double xScale, yScale, xShear, yShear;
+  int tx, ty, scaledWidth, scaledHeight, xSign, ySign;
   int ulx, uly, llx, lly, urx, ury, lrx, lry;
-  int hx, hy;
+  int ulx1, uly1, llx1, lly1, urx1, ury1, lrx1, lry1;
   int bx0, by0, bx1, by1, bw, bh;
   int cx0, cy0, cx1, cy1, cw, ch;
-  int dx, dy;
-  int dvx, dvdx, dvpx, dvqx, dvdx2, dvtx;
-  int dvy, dvdy, dvpy, dvqy, dvdy2, dvty;
-  int dhx, dhdx, dhpx, dhqx, dhdx2, dhtx, dhtx0;
-  int dhy, dhdy, dhpy, dhqy, dhdy2, dhty, dhty0;
-  int ivy, ivdy, ivpy, ivqy, ivty;
-  int ihx, ihdx, ihpx, ihqx, ihtx;
-  int vn, vi, hn, hi;
-  int bufy;
+  int yp, yq, yt, yStep, lastYStep;
+  int xp, xq, xt, xStep, xSrc;
   GfxRGB *pixBuf;
+  Guchar *alphaBuf;
   Guchar pixBuf2[gfxColorMaxComps];
   GfxRGB color2, err, errRight;
   GfxRGB *errDown;
-  double r0, g0, b0;
+  double r0, g0, b0, alpha, mul;
   Gulong pix;
   GfxRGB *p;
-  int n, m, i, j;
+  Guchar *q;
+  GBool oneBitMode;
+  GfxRGB oneBitRGB[2];
+  int x, y, x1, y1, x2, y2;
+  int n, m, i, j, k;
 
   // image parameters
   nComps = colorMap->getNumPixelComps();
@@ -3204,66 +3291,84 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
   nBits = colorMap->getBits();
   dither = nComps > 1 || nBits > 1;
 
-  // corners in device space
-  state->transform(0, 0, &xt, &yt);
-  llx = xoutRound(xt);
-  lly = xoutRound(yt);
-  state->transform(0, 1, &xt, &yt);
-  ulx = xoutRound(xt);
-  uly = xoutRound(yt);
-  state->transform(1, 0, &xt, &yt);
-  lrx = xoutRound(xt);
-  lry = xoutRound(yt);
-  state->transform(1, 1, &xt, &yt);
-  urx = xoutRound(xt);
-  ury = xoutRound(yt);
-
-  // horizontal traversal
-  hx = urx - ulx;
-  if (abs(lrx - llx) < abs(hx)) {
-    hx = lrx - llx;
-  }
-  hy = ury - uly;
-  if (abs(lry - lly) < abs(hy)) {
-    hy = lry - lly;
+  // get CTM, check for singular matrix
+  ctm = state->getCTM();
+  if (fabs(ctm[0] * ctm[3] - ctm[1] * ctm[2]) < 0.000001) {
+    error(-1, "Singular CTM in drawImage");
+    if (inlineImg) {
+      str->reset();
+      j = height * ((nVals * nBits + 7) / 8);
+      for (i = 0; i < j; ++i) {
+       str->getChar();
+      }
+      str->close();
+    }
+    return;
+  }
+
+  // compute scale, shear, rotation, translation parameters
+  rot = fabs(ctm[1]) > fabs(ctm[0]);
+  if (rot) {
+    xScale = -ctm[1];
+    yScale = -ctm[2] + (ctm[0] * ctm[3]) / ctm[1];
+    xShear = ctm[3] / yScale;
+    yShear = -ctm[0] / ctm[1];
+  } else {
+    xScale = ctm[0];
+    yScale = -ctm[3] + (ctm[1] * ctm[2]) / ctm[0];
+    xShear = -ctm[2] / yScale;
+    yShear = ctm[1] / ctm[0];
+  }
+  tx = xoutRound(ctm[2] + ctm[4]);
+  ty = xoutRound(ctm[3] + ctm[5]);
+  // use ceil() to avoid gaps between "striped" images
+  scaledWidth = (int)ceil(fabs(xScale));
+  xSign = (xScale < 0) ? -1 : 1;
+  scaledHeight = (int)ceil(fabs(yScale));
+  ySign = (yScale < 0) ? -1 : 1;
+
+  // compute corners in device space
+  ulx1 = 0;
+  uly1 = 0;
+  urx1 = xSign * (scaledWidth - 1);
+  ury1 = xoutRound(yShear * urx1);
+  llx1 = xoutRound(xShear * ySign * (scaledHeight - 1));
+  lly1 = ySign * (scaledHeight - 1) + xoutRound(yShear * llx1);
+  lrx1 = xSign * (scaledWidth - 1) +
+           xoutRound(xShear * ySign * (scaledHeight - 1));
+  lry1 = ySign * (scaledHeight - 1) + xoutRound(yShear * lrx1);
+  if (rot) {
+    ulx = tx + uly1;    uly = ty - ulx1;
+    urx = tx + ury1;    ury = ty - urx1;
+    llx = tx + lly1;    lly = ty - llx1;
+    lrx = tx + lry1;    lry = ty - lrx1;
+  } else {
+    ulx = tx + ulx1;    uly = ty + uly1;
+    urx = tx + urx1;    ury = ty + ury1;
+    llx = tx + llx1;    lly = ty + lly1;
+    lrx = tx + lrx1;    lry = ty + lry1;
   }
 
   // bounding box:
   //   (bx0, by0) = upper-left corner
   //   (bx1, by1) = lower-right corner
   //   (bw, bh) = size
-  bx0 = bx1 = ulx;
-  if (llx < bx0) {
-    bx0 = llx;
-  } else if (llx > bx1) {
-    bx1 = llx;
-  }
-  if (urx < bx0) {
-    bx0 = urx;
-  } else if (urx > bx1) {
-    bx1 = urx;
-  }
-  if (lrx < bx0) {
-    bx0 = lrx;
-  } else if (lrx > bx1) {
-    bx1 = lrx;
-  }
-  by0 = by1 = uly;
-  if (lly < by0) {
-    by0 = lly;
-  } else if (lly > by1) {
-    by1 = lly;
-  }
-  if (ury < by0) {
-    by0 = ury;
-  } else if (ury > by1) {
-    by1 = ury;
-  }
-  if (lry < by0) {
-    by0 = lry;
-  } else if (lry > by1) {
-    by1 = lry;
-  }
+  bx0 = (ulx < urx) ? (ulx < llx) ? (ulx < lrx) ? ulx : lrx
+                                  : (llx < lrx) ? llx : lrx
+                   : (urx < llx) ? (urx < lrx) ? urx : lrx
+                                  : (llx < lrx) ? llx : lrx;
+  bx1 = (ulx > urx) ? (ulx > llx) ? (ulx > lrx) ? ulx : lrx
+                                  : (llx > lrx) ? llx : lrx
+                   : (urx > llx) ? (urx > lrx) ? urx : lrx
+                                  : (llx > lrx) ? llx : lrx;
+  by0 = (uly < ury) ? (uly < lly) ? (uly < lry) ? uly : lry
+                                  : (lly < lry) ? lly : lry
+                   : (ury < lly) ? (ury < lry) ? ury : lry
+                                  : (lly < lry) ? lly : lry;
+  by1 = (uly > ury) ? (uly > lly) ? (uly > lry) ? uly : lry
+                                  : (lly > lry) ? lly : lry
+                   : (ury > lly) ? (ury > lry) ? ury : lry
+                                  : (lly > lry) ? lly : lry;
   bw = bx1 - bx0 + 1;
   bh = by1 - by0 + 1;
 
@@ -3273,11 +3378,7 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
   //   (cw, ch) = size of valid rectangle
   // These values will be used to transfer the XImage from/to the
   // Pixmap.
-  if (bx1 >= pixmapW) {
-    cw = pixmapW - bx0;
-  } else {
-    cw = bw;
-  }
+  cw = (bx1 >= pixmapW) ? pixmapW - bx0 : bw;
   if (bx0 < 0) {
     cx0 = 0;
     cx1 = -bx0;
@@ -3286,11 +3387,7 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
     cx0 = bx0;
     cx1 = 0;
   }
-  if (by1 >= pixmapH) {
-    ch = pixmapH - by0;
-  } else {
-    ch = bh;
-  }
+  ch = (by1 >= pixmapH) ? pixmapH - by0 : bh;
   if (by0 < 0) {
     cy0 = 0;
     cy1 = -by0;
@@ -3302,69 +3399,30 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
 
   // check for tiny (zero width or height) images
   // and off-page images
-  if (cw <= 0 || ch <= 0) {
+  if (scaledWidth <= 0 || scaledHeight <= 0 || cw <= 0 || ch <= 0) {
     if (inlineImg) {
       str->reset();
       j = height * ((nVals * nBits + 7) / 8);
       for (i = 0; i < j; ++i)
        str->getChar();
+      str->close();
     }
     return;
   }
 
-  // Bresenham parameters for vertical traversal
-  // (device coordinates and image coordinates)
-  dx = llx - ulx;
-  dy = lly - uly;
-  if (abs(dx) > abs(dy)) {
-    vn = abs(dx);
-    dvdx = dx > 0 ? 1 : -1;
-    dvpx = 0;
-    dvdx2 = 0;
-    dvdy = 0;
-    dvpy = abs(dy);
-    dvdy2 = dy > 0 ? 1 : -1;
-  } else {
-    vn = abs(dy);
-    dvdx = 0;
-    dvpx = abs(dx);
-    dvdx2 = dx > 0 ? 1 : -1;
-    dvdy = dy > 0 ? 1 : -1;
-    dvpy = 0;
-    dvdy2 = 0;
-  }
-  dvqx = dvqy = vn;
-  ivqy = vn + 1;
-  ivdy = height / ivqy;
-  ivpy = height % ivqy;
-
-  // Bresenham parameters for horizontal traversal
-  // (device coordinates and image coordinates)
-  if (abs(hx) > abs(hy)) {
-    hn = abs(hx);
-    dhdx = hx > 0 ? 1 : -1;
-    dhpx = 0;
-    dhdx2 = 0;
-    dhdy = 0;
-    dhpy = abs(hy);
-    dhdy2 = hy > 0 ? 1 : -1;
-  } else {
-    hn = abs(hy);
-    dhdx = 0;
-    dhpx = abs(hx);
-    dhdx2 = hx > 0 ? 1 : -1;
-    dhdy = hy > 0 ? 1 : -1;
-    dhpy = 0;
-    dhdy2 = 0;
-  }
-  dhqx = dhqy = hn;
-  ihqx = hn + 1;
-  ihdx = width / ihqx;
-  ihpx = width % ihqx;
+  // compute Bresenham parameters for x and y scaling
+  yp = height / scaledHeight;
+  yq = height % scaledHeight;
+  xp = width / scaledWidth;
+  xq = width % scaledWidth;
 
   // allocate pixel buffer
-  n = ivdy + (ivpy > 0 ? 1 : 0);
-  pixBuf = (GfxRGB *)gmalloc(n * width * sizeof(GfxRGB));
+  pixBuf = (GfxRGB *)gmalloc((yp + 1) * width * sizeof(GfxRGB));
+  if (maskColors) {
+    alphaBuf = (Guchar *)gmalloc((yp + 1) * width * sizeof(Guchar));
+  } else {
+    alphaBuf = NULL;
+  }
 
   // allocate XImage
   image = XCreateImage(display, DefaultVisual(display, screenNum),
@@ -3372,9 +3430,11 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
   image->data = (char *)gmalloc(bh * image->bytes_per_line);
 
   // if the transform is anything other than a 0/90/180/270 degree
-  // rotation/flip, read the backgound pixmap to fill in the corners
+  // rotation/flip, or if there is color key masking, read the
+  // backgound pixmap to fill in the corners
   if (!((ulx == llx && uly == ury) ||
-       (uly == lly && ulx == urx))) {
+       (uly == lly && ulx == urx)) ||
+      maskColors) {
     XGetSubImage(display, pixmap, cx0, cy0, cw, ch, (1 << depth) - 1, ZPixmap,
                 image, cx1, cy1);
   }
@@ -3389,98 +3449,147 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
     errDown = NULL;
   }
 
+  // optimize the one-bit-deep image case
+  if ((oneBitMode = nComps == 1 && nBits == 1)) {
+    pixBuf2[0] = 0;
+    colorMap->getRGB(pixBuf2, &oneBitRGB[0]);
+    pixBuf2[0] = 1;
+    colorMap->getRGB(pixBuf2, &oneBitRGB[1]);
+  }
+
   // initialize the image stream
   imgStr = new ImageStream(str, width, nComps, nBits);
   imgStr->reset();
 
-  // traverse left edge of image
-  dvx = ulx;
-  dvtx = 0;
-  dvy = uly;
-  dvty = 0;
-  ivy = 0;
-  ivty = 0;
-  dhtx0 = 0;
-  dhty0 = 0;
-  n = 0;
-  bufy = -1;
-  for (vi = 0; vi <= vn; ++vi) {
+  // init y scale Bresenham
+  yt = 0;
+  lastYStep = 1;
+
+  for (y = 0; y < scaledHeight; ++y) {
+
+    // initialize error diffusion accumulator
+    errRight.r = errRight.g = errRight.b = 0;
+
+    // y scale Bresenham
+    yStep = yp;
+    yt += yq;
+    if (yt >= scaledHeight) {
+      yt -= scaledHeight;
+      ++yStep;
+    }
 
     // read row(s) from image
-    if (ivy > bufy) {
-      if (ivdy == 0) {
-       n = 1;
-      } else {
-       n = ivdy + (ivty + ivpy >= ivqy ? 1 : 0);
-      }
+    n = (yp > 0) ? yStep : lastYStep;
+    if (n > 0) {
       p = pixBuf;
+      q = alphaBuf;
       for (i = 0; i < n; ++i) {
        for (j = 0; j < width; ++j) {
          imgStr->getPixel(pixBuf2);
-         colorMap->getRGB(pixBuf2, p);
-         ++p;
+         if (oneBitMode) {
+           *p++ = oneBitRGB[pixBuf2[0]];
+         } else {
+           colorMap->getRGB(pixBuf2, p);
+           ++p;
+         }
+         if (q) {
+           *q = 1;
+           for (k = 0; k < nComps; ++k) {
+             if (pixBuf2[k] < maskColors[2*k] ||
+                 pixBuf2[k] > maskColors[2*k]) {
+               *q = 0;
+               break;
+             }
+           }
+           ++q;
+         }
        }
       }
-      bufy = ivy;
     }
+    lastYStep = yStep;
 
-    // clear error accumulator
-    errRight.r = errRight.g = errRight.b = 0;
+    // init x scale Bresenham
+    xt = 0;
+    xSrc = 0;
+
+    for (x = 0; x < scaledWidth; ++x) {
+
+      // x scale Bresenham
+      xStep = xp;
+      xt += xq;
+      if (xt >= scaledWidth) {
+       xt -= scaledWidth;
+       ++xStep;
+      }
 
-    // traverse a horizontal stripe
-    dhx = 0;
-    dhy = 0;
-    dhtx = dhtx0;
-    dhty = dhty0;
-    ihx = 0;
-    ihtx = 0;
-    for (hi = 0; hi <= hn; ++hi) {
-
-      // compute filtered pixel value
-      if (ihdx == 0) {
-       m = 1;
+      // x shear
+      x1 = xSign * x + xoutRound(xShear * ySign * y);
+
+      // y shear
+      y1 = ySign * y + xoutRound(yShear * x1);
+
+      // rotation
+      if (rot) {
+       x2 = y1;
+       y2 = -x1;
       } else {
-       m = ihdx + (ihtx + ihpx >= ihqx ? 1 : 0);
+       x2 = x1;
+       y2 = y1;
       }
-      p = pixBuf + ihx * sizeof(Guchar);
+
+      // compute the filtered pixel at (x,y) after the
+      // x and y scaling operations
+      n = yStep > 0 ? yStep : 1;
+      m = xStep > 0 ? xStep : 1;
+      p = pixBuf + xSrc;
       r0 = g0 = b0 = 0;
+      q = alphaBuf ? alphaBuf + xSrc : (Guchar *)NULL;
+      alpha = 0;
       for (i = 0; i < n; ++i) {
        for (j = 0; j < m; ++j) {
          r0 += p->r;
          g0 += p->g;
          b0 += p->b;
          ++p;
+         if (q) {
+           alpha += *q++;
+         }
        }
        p += width - m;
       }
-      r0 /= n * m;
-      g0 /= n * m;
-      b0 /= n * m;
+      mul = 1 / (double)(n * m);
+      r0 *= mul;
+      g0 *= mul;
+      b0 *= mul;
+      alpha *= mul;
+
+      // x scale Bresenham
+      xSrc += xStep;
 
       // compute pixel
       if (dither) {
-       color2.r = r0 + errRight.r + errDown[dvx + dhx - bx0].r;
+       color2.r = r0 + errRight.r + errDown[tx + x2 - bx0].r;
        if (color2.r > 1) {
          color2.r = 1;
        } else if (color2.r < 0) {
          color2.r = 0;
        }
-       color2.g = g0 + errRight.g + errDown[dvx + dhx - bx0].g;
+       color2.g = g0 + errRight.g + errDown[tx + x2 - bx0].g;
        if (color2.g > 1) {
          color2.g = 1;
        } else if (color2.g < 0) {
          color2.g = 0;
        }
-       color2.b = b0 + errRight.b + errDown[dvx + dhx - bx0].b;
+       color2.b = b0 + errRight.b + errDown[tx + x2 - bx0].b;
        if (color2.b > 1) {
          color2.b = 1;
        } else if (color2.b < 0) {
          color2.b = 0;
        }
        pix = findColor(&color2, &err);
-       errRight.r = errDown[dvx + dhx - bx0].r = err.r / 2;
-       errRight.g = errDown[dvx + dhx - bx0].g = err.g / 2;
-       errRight.b = errDown[dvx + dhx - bx0].b = err.b / 2;
+       errRight.r = errDown[tx + x2 - bx0].r = err.r / 2;
+       errRight.g = errDown[tx + x2 - bx0].g = err.g / 2;
+       errRight.b = errDown[tx + x2 - bx0].b = err.b / 2;
       } else {
        color2.r = r0;
        color2.g = g0;
@@ -3489,77 +3598,29 @@ void XOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
       }
 
       // set pixel
-      XPutPixel(image, dvx + dhx - bx0, dvy + dhy - by0, pix);
-
-      // Bresenham increment (horizontal stripe)
-      dhx += dhdx;
-      dhtx += dhpx;
-      if (dhtx >= dhqx) {
-       dhx += dhdx2;
-       dhtx -= dhqx;
-      }
-      dhy += dhdy;
-      dhty += dhpy;
-      if (dhty >= dhqy) {
-       dhy += dhdy2;
-       dhty -= dhqy;
+      //~ this should do a blend when 0 < alpha < 1
+      if (alpha < 0.75) {
+       XPutPixel(image, tx + x2 - bx0, ty + y2 - by0, pix);
       }
-      ihx += ihdx;
-      ihtx += ihpx;
-      if (ihtx >= ihqx) {
-       ++ihx;
-       ihtx -= ihqx;
-      }
-    }
-
-    // Bresenham increment (left edge)
-    dvx += dvdx;
-    dvtx += dvpx;
-    dhty0 += dvdx * dhdx * dhpy;
-    if (dvtx >= dvqx) {
-      dvx += dvdx2;
-      dvtx -= dvqx;
-      dhty0 += dvdx2 * dhdx * dhpy;
-    }
-    dvy += dvdy;
-    dvty += dvpy;
-    dhtx0 += dvdy * dhdy * dhpx;
-    if (dvty >= dvqy) {
-      dvy += dvdy2;
-      dvty -= dvqy;
-      dhtx0 += dvdy2 * dhdy * dhpx;
-    }
-    ivy += ivdy;
-    ivty += ivpy;
-    if (ivty >= ivqy) {
-      ++ivy;
-      ivty -= ivqy;
-    }
-    if (dhtx0 >= dhqy) {
-      dhtx0 -= dhqx;
-    } else if (dhtx0 < 0) {
-      dhtx0 += dhqx;
-    }
-    if (dhty0 >= dhqx) {
-      dhty0 -= dhqy;
-    } else if (dhty0 < 0) {
-      dhty0 += dhqy;
     }
   }
-  
+
   // blit the image into the pixmap
   XPutImage(display, pixmap, fillGC, image, cx1, cy1, cx0, cy0, cw, ch);
 
   // free memory
   delete imgStr;
   gfree(pixBuf);
+  if (maskColors) {
+    gfree(alphaBuf);
+  }
   gfree(image->data);
   image->data = NULL;
   XDestroyImage(image);
   gfree(errDown);
 }
 
-GBool XOutputDev::findText(char *s, GBool top, GBool bottom,
+GBool XOutputDev::findText(Unicode *s, int len, GBool top, GBool bottom,
                           int *xMin, int *yMin, int *xMax, int *yMax) {
   double xMin1, yMin1, xMax1, yMax1;
   
@@ -3567,7 +3628,7 @@ GBool XOutputDev::findText(char *s, GBool top, GBool bottom,
   yMin1 = (double)*yMin;
   xMax1 = (double)*xMax;
   yMax1 = (double)*yMax;
-  if (text->findText(s, top, bottom, &xMin1, &yMin1, &xMax1, &yMax1)) {
+  if (text->findText(s, len, top, bottom, &xMin1, &yMin1, &xMax1, &yMax1)) {
     *xMin = xoutRound(xMin1);
     *xMax = xoutRound(xMax1);
     *yMin = xoutRound(yMin1);
index 57b2fe0913c0f09e42e1b3d84ca90dc760702ba6..4d1ff6440cae211e3164dbd101c2aedc45ff0e05 100644 (file)
@@ -2,7 +2,7 @@
 //
 // XOutputDev.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include "config.h"
+#include "CharTypes.h"
+#include "GlobalParams.h"
 #include "OutputDev.h"
 
 class GString;
+class GList;
 struct GfxRGB;
 class GfxFont;
 class GfxSubpath;
 class TextPage;
-class FontEncoding;
 class XOutputFontCache;
+struct T3FontCacheTag;
+class T3FontCache;
+struct T3GlyphStack;
+class XOutputDev;
 class Link;
 class Catalog;
+class DisplayFontParam;
+class UnicodeMap;
+class CharCodeToUnicode;
 
 #if HAVE_T1LIB_H
 class T1FontEngine;
@@ -35,7 +44,13 @@ class T1FontFile;
 class T1Font;
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+class FTFontEngine;
+class FTFontFile;
+class FTFont;
+#endif
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 class TTFontEngine;
 class TTFontFile;
 class TTFont;
@@ -45,7 +60,7 @@ class TTFont;
 // Constants
 //------------------------------------------------------------------------
 
-#define maxRGBCube 8           // max size of RGB color cube
+#define maxRGBCube 7           // max size of RGB color cube
 
 #define numTmpPoints 256       // number of XPoints in temporary array
 #define numTmpSubpaths 16      // number of elements in temporary arrays
@@ -60,68 +75,6 @@ struct BoundingRect {
   short yMin, yMax;            // min/max y values
 };
 
-//------------------------------------------------------------------------
-// Parameters
-//------------------------------------------------------------------------
-
-// Install a private colormap.
-extern GBool installCmap;
-
-// Size of RGB color cube.
-extern int rgbCubeSize;
-
-#if HAVE_T1LIB_H
-// Type of t1lib font rendering to use:
-//     "none"   -- don't use t1lib
-//     "plain"  -- t1lib, without anti-aliasing
-//     "low"    -- t1lib, with low-level anti-aliasing
-//     "high"   -- t1lib, with high-level anti-aliasing
-extern GString *t1libControl;
-#endif
-
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-// Type of FreeType font rendering to use:
-//     "none"   -- don't use FreeType
-//     "plain"  -- FreeType, without anti-aliasing
-//     "aa"     -- FreeType, with anti-aliasing
-extern GString *freeTypeControl;
-#endif
-
-// If any of these are set, xpdf will use t1lib to render those font(s)
-// instead of using the X server font(s).
-extern GString *t1Courier;
-extern GString *t1CourierBold;
-extern GString *t1CourierBoldOblique;
-extern GString *t1CourierOblique;
-extern GString *t1Helvetica;
-extern GString *t1HelveticaBold;
-extern GString *t1HelveticaBoldOblique;
-extern GString *t1HelveticaOblique;
-extern GString *t1Symbol;
-extern GString *t1TimesBold;
-extern GString *t1TimesBoldItalic;
-extern GString *t1TimesItalic;
-extern GString *t1TimesRoman;
-extern GString *t1ZapfDingbats;
-
-// Use the EUC-JP encoding.
-extern GBool useEUCJP;
-
-#if JAPANESE_SUPPORT
-// X font name pattern to use for Japanese text.
-extern GString *japan12Font;
-#endif
-
-#if CHINESE_GB_SUPPORT
-// X font name pattern to use for Chinese GB text.
-extern GString *gb12Font;
-#endif
-
-#if CHINESE_CNS_SUPPORT
-// X font name pattern to use for Chinese CNS text.
-extern GString *cns13Font;
-#endif
-
 //------------------------------------------------------------------------
 // XOutputFont
 //------------------------------------------------------------------------
@@ -129,16 +82,19 @@ extern GString *cns13Font;
 class XOutputFont {
 public:
 
-  XOutputFont(GfxFont *gfxFont, double m11, double m12,
-             double m21, double m22, Display *display,
-             XOutputFontCache *cache);
+  XOutputFont(Ref *idA, double m11OrigA, double m12OrigA,
+             double m21OrigA, double m22OrigA,
+             double m11A, double m12A, double m21A, double m22A,
+             Display *displayA, XOutputDev *xOutA);
 
   virtual ~XOutputFont();
 
   // Does this font match the ID and transform?
-  GBool matches(Ref id1, double m11, double m12, double m21, double m22)
-    { return id.num == id1.num && id.gen == id1.gen &&
-            m11 == tm11 && m12 == tm12 && m21 == tm21 && m22 == tm22; }
+  GBool matches(Ref *idA, double m11OrigA, double m12OrigA,
+               double m21OrigA, double m22OrigA)
+    { return id.num == idA->num && id.gen == idA->gen &&
+            m11Orig == m11OrigA && m12Orig == m12OrigA &&
+            m21Orig == m21OrigA && m22Orig == m22OrigA; }
 
   // Was font created successfully?
   virtual GBool isOk() = 0;
@@ -146,21 +102,29 @@ public:
   // Update <gc> with this font.
   virtual void updateGC(GC gc) = 0;
 
-  // Draw character <c> at <x>,<y>.
+  // Draw character <c>/<u> at <x>,<y> (in device space).
   virtual void drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                       GC gc, double x, double y, int c) = 0;
+                       GC gc, GfxRGB *rgb,
+                       double x, double y, double dx, double dy,
+                       CharCode c, Unicode *u, int uLen) = 0;
 
-  // Does this font use hex char codes?
-  GBool isHex() { return hex; }
+  // Returns true if this XOutputFont subclass provides the
+  // getCharPath function.
+  virtual GBool hasGetCharPath() { return gFalse; }
+
+  // Add the character outline for <c>/<u> to the current path.
+  virtual void getCharPath(GfxState *state,
+                          CharCode c, Unicode *u, int ulen);
 
 protected:
 
   Ref id;                      // font ID
-  double tm11, tm12,           // original transform matrix
-         tm21, tm22;
+  double m11Orig, m12Orig,     // original transform matrix
+         m21Orig, m22Orig;
+  double m11, m12, m21, m22;   // actual transform matrix (possibly
+                               //   modified for font substitution)
   Display *display;            // X display
-  GBool hex;                   // subsetted font with hex char codes
-                               //   (this flag is used for text output)
+  XOutputDev *xOut;
 };
 
 #if HAVE_T1LIB_H
@@ -171,9 +135,12 @@ protected:
 class XOutputT1Font: public XOutputFont {
 public:
 
-  XOutputT1Font(GfxFont *gfxFont, GString *pdfBaseFont,
-               double m11, double m12, double m21, double m22,
-               Display *display, XOutputFontCache *cache);
+  XOutputT1Font(Ref *idA, T1FontFile *fontFileA,
+               double m11OrigA, double m12OrigA,
+               double m21OrigA, double m22OrigA,
+               double m11A, double m12A,
+               double m21A, double m22A,
+               Display *displayA, XOutputDev *xOutA);
 
   virtual ~XOutputT1Font();
 
@@ -183,18 +150,72 @@ public:
   // Update <gc> with this font.
   virtual void updateGC(GC gc);
 
-  // Draw character <c> at <x>,<y>.
+  // Draw character <c>/<u> at <x>,<y>.
   virtual void drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                       GC gc, double x, double y, int c);
+                       GC gc, GfxRGB *rgb,
+                       double x, double y, double dx, double dy,
+                       CharCode c, Unicode *u, int uLen);
+
+  // Returns true if this XOutputFont subclass provides the
+  // getCharPath function.
+  virtual GBool hasGetCharPath() { return gTrue; }
+
+  // Add the character outline for <c>/<u> to the current path.
+  virtual void getCharPath(GfxState *state,
+                          CharCode c, Unicode *u, int ulen);
 
 private:
 
   T1FontFile *fontFile;
   T1Font *font;
 };
-#endif
+#endif // HAVE_T1LIB_H
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+//------------------------------------------------------------------------
+// XOutputFTFont
+//------------------------------------------------------------------------
+
+class XOutputFTFont: public XOutputFont {
+public:
+
+  XOutputFTFont(Ref *idA, FTFontFile *fontFileA,
+               double m11OrigA, double m12OrigA,
+               double m21OrigA, double m22OrigA,
+               double m11A, double m12A,
+               double m21A, double m22A,
+               Display *displayA, XOutputDev *xOutA);
+
+  virtual ~XOutputFTFont();
+
+  // Was font created successfully?
+  virtual GBool isOk();
+
+  // Update <gc> with this font.
+  virtual void updateGC(GC gc);
+
+  // Draw character <c>/<u> at <x>,<y>.
+  virtual void drawChar(GfxState *state, Pixmap pixmap, int w, int h,
+                       GC gc, GfxRGB *rgb,
+                       double x, double y, double dx, double dy,
+                       CharCode c, Unicode *u, int uLen);
+
+  // Returns true if this XOutputFont subclass provides the
+  // getCharPath function.
+  virtual GBool hasGetCharPath() { return gTrue; }
+
+  // Add the character outline for <c>/<u> to the current path.
+  virtual void getCharPath(GfxState *state,
+                          CharCode c, Unicode *u, int ulen);
+
+private:
+
+  FTFontFile *fontFile;
+  FTFont *font;
+};
+#endif // FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 //------------------------------------------------------------------------
 // XOutputTTFont
 //------------------------------------------------------------------------
@@ -202,9 +223,12 @@ private:
 class XOutputTTFont: public XOutputFont {
 public:
 
-  XOutputTTFont(GfxFont *gfxFont, double m11, double m12,
-               double m21, double m22, Display *display,
-               XOutputFontCache *cache);
+  XOutputTTFont(Ref *idA, TTFontFile *fontFileA,
+               double m11OrigA, double m12OrigA,
+               double m21OrigA, double m22OrigA,
+               double m11A, double m12A,
+               double m21A, double m22A,
+               Display *displayA, XOutputDev *xOutA);
 
   virtual ~XOutputTTFont();
 
@@ -214,32 +238,34 @@ public:
   // Update <gc> with this font.
   virtual void updateGC(GC gc);
 
-  // Draw character <c> at <x>,<y>.
+  // Draw character <c>/<u> at <x>,<y>.
   virtual void drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                       GC gc, double x, double y, int c);
+                       GC gc, GfxRGB *rgb,
+                       double x, double y, double dx, double dy,
+                       CharCode c, Unicode *u, int uLen);
 
 private:
 
   TTFontFile *fontFile;
   TTFont *font;
 };
-#endif
+#endif // !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
 
 //------------------------------------------------------------------------
-// XOutputServerFont
+// XOutputServer8BitFont
 //------------------------------------------------------------------------
 
-class XOutputServerFont: public XOutputFont {
+class XOutputServer8BitFont: public XOutputFont {
 public:
 
-  XOutputServerFont(GfxFont *gfxFont, char *fontNameFmt,
-                   FontEncoding *encoding,
-                   double m11, double m12, double m21, double m22,
-                   double size, double ntm11, double ntm12,
-                   double ntm21, double ntm22,
-                   Display *display, XOutputFontCache *cache);
+  XOutputServer8BitFont(Ref *idA, GString *xlfdFmt,
+                       UnicodeMap *xUMapA, CharCodeToUnicode *fontUMap,
+                       double m11OrigA, double m12OrigA,
+                       double m21OrigA, double m22OrigA,
+                       double m11A, double m12A, double m21A, double m22A,
+                       Display *displayA, XOutputDev *xOutA);
 
-  virtual ~XOutputServerFont();
+  virtual ~XOutputServer8BitFont();
 
   // Was font created successfully?
   virtual GBool isOk();
@@ -247,15 +273,51 @@ public:
   // Update <gc> with this font.
   virtual void updateGC(GC gc);
 
-  // Draw character <c> at <x>,<y>.
+  // Draw character <c>/<u> at <x>,<y>.
   virtual void drawChar(GfxState *state, Pixmap pixmap, int w, int h,
-                       GC gc, double x, double y, int c);
+                       GC gc, GfxRGB *rgb,
+                       double x, double y, double dx, double dy,
+                       CharCode c, Unicode *u, int uLen);
 
 private:
 
   XFontStruct *xFont;          // the X font
-  Gushort map[256];            // forward map (PDF code -> font code)
-  Guchar revMap[256];          // reverese map (font code -> PDF code)
+  Gushort map[256];            // forward map (char code -> X font code)
+  UnicodeMap *xUMap;
+};
+
+//------------------------------------------------------------------------
+// XOutputServer16BitFont
+//------------------------------------------------------------------------
+
+class XOutputServer16BitFont: public XOutputFont {
+public:
+
+  XOutputServer16BitFont(Ref *idA, GString *xlfdFmt,
+                        UnicodeMap *xUMapA, CharCodeToUnicode *fontUMap,
+                        double m11OrigA, double m12OrigA,
+                        double m21OrigA, double m22OrigA,
+                        double m11A, double m12A, double m21A, double m22A,
+                        Display *displayA, XOutputDev *xOutA);
+
+  virtual ~XOutputServer16BitFont();
+
+  // Was font created successfully?
+  virtual GBool isOk();
+
+  // Update <gc> with this font.
+  virtual void updateGC(GC gc);
+
+  // Draw character <c>/<u> at <x>,<y>.
+  virtual void drawChar(GfxState *state, Pixmap pixmap, int w, int h,
+                       GC gc, GfxRGB *rgb,
+                       double x, double y, double dx, double dy,
+                       CharCode c, Unicode *u, int uLen);
+
+private:
+
+  XFontStruct *xFont;          // the X font
+  UnicodeMap *xUMap;
 };
 
 //------------------------------------------------------------------------
@@ -263,15 +325,37 @@ private:
 //------------------------------------------------------------------------
 
 #if HAVE_T1LIB_H
-struct XOutputT1FontFile {
+class XOutputT1FontFile {
+public:
+  XOutputT1FontFile(int numA, int genA, GBool substA, T1FontFile *fontFileA)
+    { num = numA; gen = genA; subst = substA; fontFile = fontFileA; }
+  ~XOutputT1FontFile();
   int num, gen;
+  GBool subst;
   T1FontFile *fontFile;
 };
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-struct XOutputTTFontFile {
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+class XOutputFTFontFile {
+public:
+  XOutputFTFontFile(int numA, int genA, GBool substA, FTFontFile *fontFileA)
+    { num = numA; gen = genA; subst = substA; fontFile = fontFileA; }
+  ~XOutputFTFontFile();
+  int num, gen;
+  GBool subst;
+  FTFontFile *fontFile;
+};
+#endif
+
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+class XOutputTTFontFile {
+public:
+  XOutputTTFontFile(int numA, int genA, GBool substA, TTFontFile *fontFileA)
+    { num = numA; gen = genA; subst = substA; fontFile = fontFileA; }
+  ~XOutputTTFontFile();
   int num, gen;
+  GBool subst;
   TTFontFile *fontFile;
 };
 #endif
@@ -280,7 +364,10 @@ class XOutputFontCache {
 public:
 
   // Constructor.
-  XOutputFontCache(Display *display, Guint depth);
+  XOutputFontCache(Display *displayA, Guint depthA,
+                  XOutputDev *xOutA,
+                  FontRastControl t1libControlA,
+                  FontRastControl freetypeControlA);
 
   // Destructor.
   ~XOutputFontCache();
@@ -293,58 +380,84 @@ public:
                Gulong *colors, int numColors);
 
   // Get a font.  This creates a new font if necessary.
-  XOutputFont *getFont(GfxFont *gfxFont, double m11, double m12,
+  XOutputFont *getFont(XRef *xref, GfxFont *gfxFont, double m11, double m12,
                       double m21, double m22);
 
-#if HAVE_T1LIB_H
-  // Get a t1lib font file.
-  T1FontFile *getT1Font(GfxFont *gfxFont, GString *pdfBaseFont);
-
-  // Use anti-aliased Type 1 fonts?
-  GBool getT1libAA() { return t1libAA; }
-#endif
-
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  // Get a FreeType font file.
-  TTFontFile *getTTFont(GfxFont *gfxFont);
-#endif
-
 private:
 
   void delFonts();
   void clear();
+  XOutputFont *tryGetFont(XRef *xref, DisplayFontParam *dfp, GfxFont *gfxFont,
+                         double m11Orig, double m12Orig,
+                         double m21Orig, double m22Orig,
+                         double m11, double m12, double m21, double m22,
+                         GBool subst);
+#if HAVE_T1LIB_H
+  XOutputFont *tryGetT1Font(XRef *xref, GfxFont *gfxFont,
+                           double m11, double m12, double m21, double m22);
+  XOutputFont *tryGetT1FontFromFile(XRef *xref, GString *fileName,
+                                   GfxFont *gfxFont,
+                                   double m11Orig, double m12Orig,
+                                   double m21Orig, double m22Orig,
+                                   double m11, double m12,
+                                   double m21, double m22, GBool subst);
+#endif
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  XOutputFont *tryGetFTFont(XRef *xref, GfxFont *gfxFont,
+                           double m11, double m12, double m21, double m22);
+  XOutputFont *tryGetFTFontFromFile(XRef *xref, GString *fileName,
+                                   GfxFont *gfxFont,
+                                   double m11Orig, double m12Orig,
+                                   double m21Orig, double m22Orig,
+                                   double m11, double m12,
+                                   double m21, double m22, GBool subst);
+#endif
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  XOutputFont *tryGetTTFont(XRef *xref, GfxFont *gfxFont,
+                           double m11, double m12, double m21, double m22);
+  XOutputFont *tryGetTTFontFromFile(XRef *xref, GString *fileName,
+                                   GfxFont *gfxFont,
+                                   double m11Orig, double m12Orig,
+                                   double m21Orig, double m22Orig,
+                                   double m11, double m12,
+                                   double m21, double m22, GBool subst);
+#endif
+  XOutputFont *tryGetServerFont(GString *xlfd, GString *encodingName,
+                               GfxFont *gfxFont,
+                               double m11Orig, double m12Orig,
+                               double m21Orig, double m22Orig,
+                               double m11, double m12,
+                               double m21, double m22);
 
   Display *display;            // X display pointer
+  XOutputDev *xOut;
   Guint depth;                 // pixmap depth
 
+  XOutputFont *
+    fonts[xOutFontCacheSize];
+  int nFonts;
+
 #if HAVE_T1LIB_H
-  GBool useT1lib;              // if false, t1lib is not used at all
-  GBool t1libAA;               // true for anti-aliased fonts
-  GBool t1libAAHigh;           // low or high-level anti-aliasing
+  FontRastControl t1libControl;        // t1lib settings
   T1FontEngine *t1Engine;      // Type 1 font engine
-  XOutputT1Font *              // Type 1 fonts in reverse-LRU order
-    t1Fonts[t1FontCacheSize];
-  int nT1Fonts;                        // number of valid entries in t1Fonts[]
-  XOutputT1FontFile *          // list of Type 1 font files
-    t1FontFiles;
-  int t1FontFilesSize;         // size of t1FontFiles array
+  GList *t1FontFiles;          // list of Type 1 font files
+                               //   [XOutputT1FontFile]
 #endif
 
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  GBool useFreeType;           // if false, FreeType is not used at all
-  GBool freeTypeAA;            // true for anti-aliased fonts
+#if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
+  FontRastControl              // FreeType settings
+    freetypeControl;
+#endif
+#if FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
+  FTFontEngine *ftEngine;      // FreeType font engine
+  GList *ftFontFiles;          // list of FreeType font files
+                               //   [XOutputFTFontFile]
+#endif
+#if !FREETYPE2 && (HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H)
   TTFontEngine *ttEngine;      // TrueType font engine
-  XOutputTTFont *              // TrueType fonts in reverse-LRU order
-    ttFonts[ttFontCacheSize];
-  int nTTFonts;                        // number of valid entries in ttFonts[]
-  XOutputTTFontFile *          // list of TrueType font files
-    ttFontFiles;
-  int ttFontFilesSize;         // size of ttFontFiles array
+  GList *ttFontFiles;          // list of TrueType font files
+                               //   [XOutputTTFontFile]
 #endif
-
-  XOutputServerFont *          // X server fonts in reverse-LRU order
-    serverFonts[serverFontCacheSize];
-  int nServerFonts;            // number of valid entries in serverFonts[]
 };
 
 //------------------------------------------------------------------------
@@ -366,8 +479,10 @@ class XOutputDev: public OutputDev {
 public:
 
   // Constructor.
-  XOutputDev(Display *display1, Pixmap pixmap1, Guint depth1,
-            Colormap colormap, unsigned long paperColor);
+  XOutputDev(Display *displayA, Pixmap pixmapA, Guint depthA,
+            Colormap colormapA, GBool reverseVideoA,
+            unsigned long paperColor, GBool installCmap,
+            int rgbCubeSize);
 
   // Destructor.
   virtual ~XOutputDev();
@@ -381,6 +496,10 @@ public:
   // Does this device use drawChar() or drawString()?
   virtual GBool useDrawChar() { return gTrue; }
 
+  // Does this device use beginType3Char/endType3Char?  Otherwise,
+  // text in Type 3 fonts will be drawn with drawChar/drawString.
+  virtual GBool interpretType3Chars() { return gTrue; }
+
   //----- initialization and control
 
   // Start a page.
@@ -425,9 +544,12 @@ public:
   virtual void beginString(GfxState *state, GString *s);
   virtual void endString(GfxState *state);
   virtual void drawChar(GfxState *state, double x, double y,
-                       double dx, double dy, Guchar c);
-  virtual void drawChar16(GfxState *state, double x, double y,
-                         double dx, double dy, int c);
+                       double dx, double dy,
+                       double originX, double originY,
+                       CharCode code, Unicode *u, int uLen);
+  virtual GBool beginType3Char(GfxState *state,
+                              CharCode code, Unicode *u, int uLen);
+  virtual void endType3Char(GfxState *state);
 
   //----- image drawing
   virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
@@ -435,24 +557,31 @@ public:
                             GBool inlineImg);
   virtual void drawImage(GfxState *state, Object *ref, Stream *str,
                         int width, int height, GfxImageColorMap *colorMap,
-                        GBool inlineImg);
+                        int *maskColors, GBool inlineImg);
+
+  //----- Type 3 font operators
+  virtual void type3D0(GfxState *state, double wx, double wy);
+  virtual void type3D1(GfxState *state, double wx, double wy,
+                      double llx, double lly, double urx, double ury);
 
   //----- special access
 
   // Called to indicate that a new PDF document has been loaded.
-  void startDoc();
+  void startDoc(XRef *xrefA);
 
   // Find a string.  If <top> is true, starts looking at <xMin>,<yMin>;
   // otherwise starts looking at top of page.  If <bottom> is true,
   // stops looking at <xMax>,<yMax>; otherwise stops looking at bottom
   // of page.  If found, sets the text bounding rectange and returns
   // true; otherwise returns false.
-  GBool findText(char *s, GBool top, GBool bottom,
+  GBool findText(Unicode *s, int len, GBool top, GBool bottom,
                 int *xMin, int *yMin, int *xMax, int *yMax);
 
   // Get the text which is inside the specified rectangle.
   GString *getText(int xMin, int yMin, int xMax, int yMax);
 
+  GBool isReverseVideo() { return reverseVideo; }
+
 protected:
 
   // Update pixmap ID after a page change.
@@ -461,6 +590,7 @@ protected:
 
 private:
 
+  XRef *xref;                  // the xref table for this PDF file
   Display *display;            // X display pointer
   int screenNum;               // X screen number
   Pixmap pixmap;               // pixmap to draw into
@@ -478,6 +608,8 @@ private:
   Gulong                       // color cube
     colors[maxRGBCube * maxRGBCube * maxRGBCube];
   int numColors;               // size of color cube
+  double redMap[256];          // map pixel (from color cube) to red value
+  GBool reverseVideo;          // reverse video mode
   XPoint                       // temporary points array
     tmpPoints[numTmpPoints];
   int                          // temporary arrays for fill/clip
@@ -487,9 +619,13 @@ private:
   GfxFont *gfxFont;            // current PDF font
   XOutputFont *font;           // current font
   XOutputFontCache *fontCache; // font cache
+  T3FontCache *                        // Type 3 font cache
+    t3FontCache[xOutT3FontCacheSize];
+  int nT3Fonts;                        // number of valid entries in t3FontCache
+  T3GlyphStack *t3GlyphStack;  // Type 3 glyph context stack
   XOutputState *save;          // stack of saved states
+
   TextPage *text;              // text from the current page
-  GBool type3Warning;          // only show the Type 3 font warning once
 
   void updateLineAttrs(GfxState *state, GBool updateDash);
   void doFill(GfxState *state, int rule);
@@ -502,6 +638,9 @@ private:
               double x0, double y0, double x1, double y1,
               double x2, double y2, double x3, double y3);
   void addPoint(XPoint **points, int *size, int *k, int x, int y);
+  void drawType3Glyph(T3FontCache *t3Font,
+                     T3FontCacheTag *tag, Guchar *data,
+                     double x, double y, GfxRGB *color);
   Gulong findColor(GfxRGB *rgb);
   Gulong findColor(GfxRGB *x, GfxRGB *err);
 };
index d70b9f2097c48e6ce37fb9c1f12617b533be8c6b..0e1bbc9c6c620a4162cc2e7609fcad89bc1122e1 100644 (file)
@@ -2,7 +2,7 @@
 //
 // XRef.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -10,6 +10,7 @@
 #pragma implementation
 #endif
 
+#include <aconf.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <string.h>
@@ -24,6 +25,7 @@
 #include "Decrypt.h"
 #endif
 #include "Error.h"
+#include "ErrorCodes.h"
 #include "XRef.h"
 
 //------------------------------------------------------------------------
 #define defPermFlags 0xfffc
 #endif
 
-//------------------------------------------------------------------------
-// The global xref table
-//------------------------------------------------------------------------
-
-XRef *xref = NULL;
-
 //------------------------------------------------------------------------
 // XRef
 //------------------------------------------------------------------------
 
-XRef::XRef(BaseStream *str, GString *userPassword) {
-  XRef *oldXref;
-  int pos;
+XRef::XRef(BaseStream *strA, GString *ownerPassword, GString *userPassword) {
+  Guint pos;
   int i;
 
   ok = gTrue;
+  errCode = errNone;
   size = 0;
   entries = NULL;
   streamEnds = NULL;
   streamEndsLen = 0;
 
-  // get rid of old xref (otherwise it will try to fetch the Root object
-  // in the new document, using the old xref)
-  oldXref = xref;
-  xref = NULL;
-
   // read the trailer
-  this->str = str;
+  str = strA;
   start = str->getStart();
   pos = readTrailer();
 
@@ -78,7 +69,7 @@ XRef::XRef(BaseStream *str, GString *userPassword) {
   // try to reconstruct the xref table
   if (pos == 0) {
     if (!(ok = constructXRef())) {
-      xref = oldXref;
+      errCode = errDamaged;
       return;
     }
 
@@ -86,7 +77,7 @@ XRef::XRef(BaseStream *str, GString *userPassword) {
   } else {
     entries = (XRefEntry *)gmalloc(size * sizeof(XRefEntry));
     for (i = 0; i < size; ++i) {
-      entries[i].offset = -1;
+      entries[i].offset = 0xffffffff;
       entries[i].used = gFalse;
     }
     while (readXRef(&pos)) ;
@@ -98,22 +89,23 @@ XRef::XRef(BaseStream *str, GString *userPassword) {
       size = 0;
       entries = NULL;
       if (!(ok = constructXRef())) {
-       xref = oldXref;
+       errCode = errDamaged;
        return;
       }
     }
   }
 
-  // set up new xref table
-  xref = this;
+  // now set the trailer dictionary's xref pointer so we can fetch
+  // indirect objects from it
+  trailerDict.getDict()->setXRef(this);
 
   // check for encryption
 #ifndef NO_DECRYPTION
   encrypted = gFalse;
 #endif
-  if (checkEncrypted(userPassword)) {
+  if (checkEncrypted(ownerPassword, userPassword)) {
     ok = gFalse;
-    xref = oldXref;
+    errCode = errEncrypted;
     return;
   }
 }
@@ -128,17 +120,18 @@ XRef::~XRef() {
 
 // Read startxref position, xref table size, and root.  Returns
 // first xref position.
-int XRef::readTrailer() {
+Guint XRef::readTrailer() {
   Parser *parser;
   Object obj;
   char buf[xrefSearchSize+1];
-  int n, pos, pos1;
+  int n;
+  Guint pos, pos1;
   char *p;
   int c;
   int i;
 
   // read last xrefSearchSize bytes
-  str->setPos(-xrefSearchSize);
+  str->setPos(xrefSearchSize, -1);
   for (n = 0; n < xrefSearchSize; ++n) {
     if ((c = str->getChar()) == EOF)
       break;
@@ -154,7 +147,7 @@ int XRef::readTrailer() {
   if (i < 0)
     return 0;
   for (p = &buf[i+9]; isspace(*p); ++p) ;
-  pos = lastXRefPos = atoi(p);
+  pos = lastXRefPos = strToUnsigned(p);
 
   // find trailer dict by looking after first xref table
   // (NB: we can't just use the trailer dict at the end of the file --
@@ -189,7 +182,9 @@ int XRef::readTrailer() {
 
   // read trailer dict
   obj.initNull();
-  parser = new Parser(new Lexer(str->makeSubStream(start + pos1, -1, &obj)));
+  parser = new Parser(NULL,
+            new Lexer(NULL,
+              str->makeSubStream(start + pos1, gFalse, 0, &obj)));
   parser->getObj(&trailerDict);
   if (trailerDict.isDict()) {
     trailerDict.dictLookupNF("Size", &obj);
@@ -216,12 +211,12 @@ int XRef::readTrailer() {
 }
 
 // Read an xref table and the prev pointer from the trailer.
-GBool XRef::readXRef(int *pos) {
+GBool XRef::readXRef(Guint *pos) {
   Parser *parser;
   Object obj, obj2;
   char s[20];
   GBool more;
-  int first, n, i, j;
+  int first, newSize, n, i, j;
   int c;
 
   // seek to xref in stream
@@ -233,77 +228,101 @@ GBool XRef::readXRef(int *pos) {
   s[1] = (char)str->getChar();
   s[2] = (char)str->getChar();
   s[3] = (char)str->getChar();
-  if (!(s[0] == 'x' && s[1] == 'r' && s[2] == 'e' && s[3] == 'f'))
+  if (!(s[0] == 'x' && s[1] == 'r' && s[2] == 'e' && s[3] == 'f')) {
     goto err2;
+  }
 
   // read xref
   while (1) {
-    while ((c = str->lookChar()) != EOF && isspace(c))
+    while ((c = str->lookChar()) != EOF && isspace(c)) {
       str->getChar();
-    if (c == 't')
+    }
+    if (c == 't') {
       break;
-    for (i = 0; (c = str->getChar()) != EOF && isdigit(c) && i < 20; ++i)
+    }
+    for (i = 0; (c = str->getChar()) != EOF && isdigit(c) && i < 20; ++i) {
       s[i] = (char)c;
-    if (i == 0)
+    }
+    if (i == 0) {
       goto err2;
+    }
     s[i] = '\0';
     first = atoi(s);
-    while ((c = str->lookChar()) != EOF && isspace(c))
+    while ((c = str->lookChar()) != EOF && isspace(c)) {
       str->getChar();
-    for (i = 0; (c = str->getChar()) != EOF && isdigit(c) && i < 20; ++i)
+    }
+    for (i = 0; (c = str->getChar()) != EOF && isdigit(c) && i < 20; ++i) {
       s[i] = (char)c;
-    if (i == 0)
+    }
+    if (i == 0) {
       goto err2;
+    }
     s[i] = '\0';
     n = atoi(s);
-    while ((c = str->lookChar()) != EOF && isspace(c))
+    while ((c = str->lookChar()) != EOF && isspace(c)) {
       str->getChar();
+    }
+    // check for buggy PDF files with an incorrect (too small) xref
+    // table size
+    if (first + n > size) {
+      newSize = size + 256;
+      entries = (XRefEntry *)grealloc(entries, newSize * sizeof(XRefEntry));
+      for (i = size; i < newSize; ++i) {
+       entries[i].offset = 0xffffffff;
+       entries[i].used = gFalse;
+      }
+      size = newSize;
+    }
     for (i = first; i < first + n; ++i) {
       for (j = 0; j < 20; ++j) {
-       if ((c = str->getChar()) == EOF)
+       if ((c = str->getChar()) == EOF) {
          goto err2;
+       }
        s[j] = (char)c;
       }
-      if (entries[i].offset < 0) {
+      if (entries[i].offset == 0xffffffff) {
        s[10] = '\0';
-       entries[i].offset = atoi(s);
+       entries[i].offset = strToUnsigned(s);
        s[16] = '\0';
        entries[i].gen = atoi(&s[11]);
-       if (s[17] == 'n')
+       if (s[17] == 'n') {
          entries[i].used = gTrue;
-       else if (s[17] == 'f')
+       } else if (s[17] == 'f') {
          entries[i].used = gFalse;
-       else
+       } else {
          goto err2;
-#if 1 //~
-       //~ PDF files of patents from the IBM Intellectual Property
-       //~ Network have a bug: the xref table claims to start at 1
-       //~ instead of 0.
+       }
+       // PDF files of patents from the IBM Intellectual Property
+       // Network have a bug: the xref table claims to start at 1
+       // instead of 0.
        if (i == 1 && first == 1 &&
            entries[1].offset == 0 && entries[1].gen == 65535 &&
            !entries[1].used) {
          i = first = 0;
          entries[0] = entries[1];
-         entries[1].offset = -1;
+         entries[1].offset = 0xffffffff;
        }
-#endif
       }
     }
   }
 
   // read prev pointer from trailer dictionary
   obj.initNull();
-  parser = new Parser(new Lexer(str->makeSubStream(str->getPos(), -1, &obj)));
+  parser = new Parser(NULL,
+            new Lexer(NULL,
+              str->makeSubStream(str->getPos(), gFalse, 0, &obj)));
   parser->getObj(&obj);
-  if (!obj.isCmd("trailer"))
+  if (!obj.isCmd("trailer")) {
     goto err1;
+  }
   obj.free();
   parser->getObj(&obj);
-  if (!obj.isDict())
+  if (!obj.isDict()) {
     goto err1;
+  }
   obj.getDict()->lookupNF("Prev", &obj2);
   if (obj2.isInt()) {
-    *pos = obj2.getInt();
+    *pos = (Guint)obj2.getInt();
     more = gTrue;
   } else {
     more = gFalse;
@@ -326,7 +345,7 @@ GBool XRef::constructXRef() {
   Parser *parser;
   Object obj;
   char buf[256];
-  int pos;
+  Guint pos;
   int num, gen;
   int newSize;
   int streamEndsSize;
@@ -349,8 +368,9 @@ GBool XRef::constructXRef() {
     // got trailer dictionary
     if (!strncmp(p, "trailer", 7)) {
       obj.initNull();
-      parser = new Parser(new Lexer(
-                     str->makeSubStream(start + pos + 7, -1, &obj)));
+      parser = new Parser(NULL,
+                new Lexer(NULL,
+                  str->makeSubStream(start + pos + 7, gFalse, 0, &obj)));
       if (!trailerDict.isNone())
        trailerDict.free();
       parser->getObj(&trailerDict);
@@ -392,7 +412,7 @@ GBool XRef::constructXRef() {
                entries = (XRefEntry *)
                            grealloc(entries, newSize * sizeof(XRefEntry));
                for (i = size; i < newSize; ++i) {
-                 entries[i].offset = -1;
+                 entries[i].offset = 0xffffffff;
                  entries[i].used = gFalse;
                }
                size = newSize;
@@ -410,7 +430,8 @@ GBool XRef::constructXRef() {
     } else if (!strncmp(p, "endstream", 9)) {
       if (streamEndsLen == streamEndsSize) {
        streamEndsSize += 64;
-       streamEnds = (int *)grealloc(streamEnds, streamEndsSize * sizeof(int));
+       streamEnds = (Guint *)grealloc(streamEnds,
+                                      streamEndsSize * sizeof(int));
       }
       streamEnds[streamEndsLen++] = pos;
     }
@@ -424,8 +445,9 @@ GBool XRef::constructXRef() {
 }
 
 #ifndef NO_DECRYPTION
-GBool XRef::checkEncrypted(GString *userPassword) {
-  Object encrypt, ownerKey, userKey, permissions, fileID, fileID1;
+GBool XRef::checkEncrypted(GString *ownerPassword, GString *userPassword) {
+  Object encrypt, filterObj, versionObj, revisionObj, lengthObj;
+  Object ownerKey, userKey, permissions, fileID, fileID1;
   GBool encrypted1;
   GBool ret;
 
@@ -435,35 +457,68 @@ GBool XRef::checkEncrypted(GString *userPassword) {
   trailerDict.dictLookup("Encrypt", &encrypt);
   if ((encrypted1 = encrypt.isDict())) {
     ret = gTrue;
-    encrypt.dictLookup("O", &ownerKey);
-    encrypt.dictLookup("U", &userKey);
-    encrypt.dictLookup("P", &permissions);
-    trailerDict.dictLookup("ID", &fileID);
-    if (ownerKey.isString() && ownerKey.getString()->getLength() == 32 &&
-       userKey.isString() && userKey.getString()->getLength() == 32 &&
-       permissions.isInt() &&
-       fileID.isArray()) {
-      permFlags = permissions.getInt();
-      fileID.arrayGet(0, &fileID1);
-      if (fileID1.isString()) {
-       if (Decrypt::makeFileKey(ownerKey.getString(), userKey.getString(),
-                                permFlags, fileID1.getString(),
-                                userPassword, fileKey)) {
-         ret = gFalse;
+    encrypt.dictLookup("Filter", &filterObj);
+    if (filterObj.isName("Standard")) {
+      encrypt.dictLookup("V", &versionObj);
+      encrypt.dictLookup("R", &revisionObj);
+      encrypt.dictLookup("Length", &lengthObj);
+      encrypt.dictLookup("O", &ownerKey);
+      encrypt.dictLookup("U", &userKey);
+      encrypt.dictLookup("P", &permissions);
+      trailerDict.dictLookup("ID", &fileID);
+      if (versionObj.isInt() &&
+         revisionObj.isInt() &&
+         ownerKey.isString() && ownerKey.getString()->getLength() == 32 &&
+         userKey.isString() && userKey.getString()->getLength() == 32 &&
+         permissions.isInt() &&
+         fileID.isArray()) {
+       encVersion = versionObj.getInt();
+       encRevision = revisionObj.getInt();
+       if (lengthObj.isInt()) {
+         keyLength = lengthObj.getInt() / 8;
        } else {
-         error(-1, "Incorrect user password");
+         keyLength = 5;
+       }
+       permFlags = permissions.getInt();
+       if (encVersion >= 1 && encVersion <= 2 &&
+           encRevision >= 2 && encRevision <= 3) {
+         fileID.arrayGet(0, &fileID1);
+         if (fileID1.isString()) {
+           if (Decrypt::makeFileKey(encVersion, encRevision, keyLength,
+                                    ownerKey.getString(), userKey.getString(),
+                                    permFlags, fileID1.getString(),
+                                    ownerPassword, userPassword, fileKey,
+                                    &ownerPasswordOk)) {
+             if (ownerPassword && !ownerPasswordOk) {
+               error(-1, "Incorrect owner password");
+             }
+             ret = gFalse;
+           } else {
+             error(-1, "Incorrect password");
+           }
+         } else {
+           error(-1, "Weird encryption info");
+         }
+         fileID1.free();
+       } else {
+         error(-1, "Unsupported version/revision (%d/%d) of Standard security handler",
+               encVersion, encRevision);
        }
       } else {
        error(-1, "Weird encryption info");
       }
-      fileID1.free();
+      fileID.free();
+      permissions.free();
+      userKey.free();
+      ownerKey.free();
+      lengthObj.free();
+      revisionObj.free();
+      versionObj.free();
     } else {
-      error(-1, "Weird encryption info");
+      error(-1, "Unknown security handler '%s'",
+           filterObj.isName() ? filterObj.getName() : "???");
     }
-    ownerKey.free();
-    userKey.free();
-    permissions.free();
-    fileID.free();
+    filterObj.free();
   }
   encrypt.free();
 
@@ -473,52 +528,50 @@ GBool XRef::checkEncrypted(GString *userPassword) {
   return ret;
 }
 #else
-GBool XRef::checkEncrypted(GString *userPassword) {
+GBool XRef::checkEncrypted(GString *ownerPassword, GString *userPassword) {
   Object obj;
   GBool encrypted;
 
   trailerDict.dictLookup("Encrypt", &obj);
   if ((encrypted = !obj.isNull())) {
-    error(-1, "PDF file is encrypted and cannot be displayed");
-    error(-1, "* Decryption support is currently not included in xpdf");
-    error(-1, "* due to legal restrictions: the U.S.A. still has bogus");
-    error(-1, "* export controls on cryptography software.");
+    error(-1, "PDF file is encrypted and this version of the Xpdf tools");
+    error(-1, "was built without decryption support.");
   }
   obj.free();
   return encrypted;
 }
 #endif
 
-GBool XRef::okToPrint() {
+GBool XRef::okToPrint(GBool ignoreOwnerPW) {
 #ifndef NO_DECRYPTION
-  if (!(permFlags & permPrint)) {
+  if ((ignoreOwnerPW || !ownerPasswordOk) && !(permFlags & permPrint)) {
     return gFalse;
   }
 #endif
   return gTrue;
 }
 
-GBool XRef::okToChange() {
+GBool XRef::okToChange(GBool ignoreOwnerPW) {
 #ifndef NO_DECRYPTION
-  if (!(permFlags & permChange)) {
+  if ((ignoreOwnerPW || !ownerPasswordOk) && !(permFlags & permChange)) {
     return gFalse;
   }
 #endif
   return gTrue;
 }
 
-GBool XRef::okToCopy() {
+GBool XRef::okToCopy(GBool ignoreOwnerPW) {
 #ifndef NO_DECRYPTION
-  if (!(permFlags & permCopy)) {
+  if ((ignoreOwnerPW || !ownerPasswordOk) && !(permFlags & permCopy)) {
     return gFalse;
   }
 #endif
   return gTrue;
 }
 
-GBool XRef::okToAddNotes() {
+GBool XRef::okToAddNotes(GBool ignoreOwnerPW) {
 #ifndef NO_DECRYPTION
-  if (!(permFlags & permNotes)) {
+  if ((ignoreOwnerPW || !ownerPasswordOk) && !(permFlags & permNotes)) {
     return gFalse;
   }
 #endif
@@ -537,10 +590,11 @@ Object *XRef::fetch(int num, int gen, Object *obj) {
   }
 
   e = &entries[num];
-  if (e->gen == gen && e->offset >= 0) {
+  if (e->gen == gen && e->offset != 0xffffffff) {
     obj1.initNull();
-    parser = new Parser(new Lexer(
-                  str->makeSubStream(start + e->offset, -1, &obj1)));
+    parser = new Parser(this,
+              new Lexer(this,
+                str->makeSubStream(start + e->offset, gFalse, 0, &obj1)));
     parser->getObj(&obj1);
     parser->getObj(&obj2);
     parser->getObj(&obj3);
@@ -548,7 +602,8 @@ Object *XRef::fetch(int num, int gen, Object *obj) {
        obj2.isInt() && obj2.getInt() == gen &&
        obj3.isCmd("obj")) {
 #ifndef NO_DECRYPTION
-      parser->getObj(obj, encrypted ? fileKey : (Guchar *)NULL, num, gen);
+      parser->getObj(obj, encrypted ? fileKey : (Guchar *)NULL, keyLength,
+                    num, gen);
 #else
       parser->getObj(obj);
 #endif
@@ -569,24 +624,42 @@ Object *XRef::getDocInfo(Object *obj) {
   return trailerDict.dictLookup("Info", obj);
 }
 
-int XRef::getStreamEnd(int start) {
+// Added for the pdftex project.
+Object *XRef::getDocInfoNF(Object *obj) {
+  return trailerDict.dictLookupNF("Info", obj);
+}
+
+GBool XRef::getStreamEnd(Guint streamStart, Guint *streamEnd) {
   int a, b, m;
 
   if (streamEndsLen == 0 ||
-      start > streamEnds[streamEndsLen - 1]) {
-    return -1;
+      streamStart > streamEnds[streamEndsLen - 1]) {
+    return gFalse;
   }
 
   a = -1;
   b = streamEndsLen - 1;
-  // invariant: streamEnds[a] < start <= streamEnds[b]
+  // invariant: streamEnds[a] < streamStart <= streamEnds[b]
   while (b - a > 1) {
     m = (a + b) / 2;
-    if (start <= streamEnds[m]) {
+    if (streamStart <= streamEnds[m]) {
       b = m;
     } else {
       a = m;
     }
   }
-  return streamEnds[b];
+  *streamEnd = streamEnds[b];
+  return gTrue;
+}
+
+Guint XRef::strToUnsigned(char *s) {
+  Guint x;
+  char *p;
+  int i;
+
+  x = 0;
+  for (p = s, i = 0; *p && isdigit(*p) && i < 10; ++p, ++i) {
+    x = 10 * x + (*p - '0');
+  }
+  return x;
 }
index e2260d0c33cf9ded044ac83ee41d9f18ab74172b..7876fa6c5807473a69ad69e9c181fcd14d499abd 100644 (file)
@@ -2,7 +2,7 @@
 //
 // XRef.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -24,7 +24,7 @@ class Stream;
 //------------------------------------------------------------------------
 
 struct XRefEntry {
-  int offset;
+  Guint offset;
   int gen;
   GBool used;
 };
@@ -33,7 +33,7 @@ class XRef {
 public:
 
   // Constructor.  Read xref table from stream.
-  XRef(BaseStream *str, GString *userPassword);
+  XRef(BaseStream *strA, GString *ownerPassword, GString *userPassword);
 
   // Destructor.
   ~XRef();
@@ -41,6 +41,9 @@ public:
   // Is xref table valid?
   GBool isOk() { return ok; }
 
+  // Get the error code (if isOk() returns false).
+  int getErrorCode() { return errCode; }
+
   // Is the file encrypted?
 #ifndef NO_DECRYPTION
   GBool isEncrypted() { return encrypted; }
@@ -49,10 +52,10 @@ public:
 #endif
 
   // Check various permissions.
-  GBool okToPrint();
-  GBool okToChange();
-  GBool okToCopy();
-  GBool okToAddNotes();
+  GBool okToPrint(GBool ignoreOwnerPW = gFalse);
+  GBool okToChange(GBool ignoreOwnerPW = gFalse);
+  GBool okToCopy(GBool ignoreOwnerPW = gFalse);
+  GBool okToAddNotes(GBool ignoreOwnerPW = gFalse);
 
   // Get catalog object.
   Object *getCatalog(Object *obj) { return fetch(rootNum, rootGen, obj); }
@@ -62,51 +65,52 @@ public:
 
   // Return the document's Info dictionary (if any).
   Object *getDocInfo(Object *obj);
+  Object *getDocInfoNF(Object *obj);
 
   // Return the number of objects in the xref table.
   int getNumObjects() { return size; }
 
   // Return the offset of the last xref table.
-  int getLastXRefPos() { return lastXRefPos; }
+  Guint getLastXRefPos() { return lastXRefPos; }
 
   // Return the catalog object reference.
   int getRootNum() { return rootNum; }
   int getRootGen() { return rootGen; }
 
   // Get end position for a stream in a damaged file.
-  // Returns -1 if unknown or file is not damaged.
-  int getStreamEnd(int start);
+  // Returns false if unknown or file is not damaged.
+  GBool getStreamEnd(Guint streamStart, Guint *streamEnd);
 
 private:
 
   BaseStream *str;             // input stream
-  int start;                   // offset in file (to allow for garbage
+  Guint start;                 // offset in file (to allow for garbage
                                //   at beginning of file)
   XRefEntry *entries;          // xref entries
   int size;                    // size of <entries> array
   int rootNum, rootGen;                // catalog dict
   GBool ok;                    // true if xref table is valid
+  int errCode;                 // error code (if <ok> is false)
   Object trailerDict;          // trailer dictionary
-  int lastXRefPos;             // offset of last xref table
-  int *streamEnds;             // 'endstream' positions - only used in
+  Guint lastXRefPos;           // offset of last xref table
+  Guint *streamEnds;           // 'endstream' positions - only used in
                                //   damaged files
   int streamEndsLen;           // number of valid entries in streamEnds
 #ifndef NO_DECRYPTION
   GBool encrypted;             // true if file is encrypted
+  int encVersion;              // encryption algorithm
+  int encRevision;             // security handler revision
+  int keyLength;               // length of key, in bytes
   int permFlags;               // permission bits
   Guchar fileKey[16];          // file decryption key
+  GBool ownerPasswordOk;       // true if owner password is correct
 #endif
 
-  int readTrailer();
-  GBool readXRef(int *pos);
+  Guint readTrailer();
+  GBool readXRef(Guint *pos);
   GBool constructXRef();
-  GBool checkEncrypted(GString *userPassword);
+  GBool checkEncrypted(GString *ownerPassword, GString *userPassword);
+  Guint strToUnsigned(char *s);
 };
 
-//------------------------------------------------------------------------
-// The global xref table
-//------------------------------------------------------------------------
-
-extern XRef *xref;
-
 #endif
index a4f64a2e059c8fcf4f26dadaef3fda83990453a4..5b26d389e8b02d87e9fdbd969f29019b09b76eaf 100644 (file)
@@ -4,6 +4,7 @@
  * Author:
  *   Michael Meeks <michael@imaginator.com>
  */
+#include <aconf.h>
 #include "config.h"
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/pdf/xpdf/pdffonts.cc b/pdf/xpdf/pdffonts.cc
new file mode 100644 (file)
index 0000000..4a6ed40
--- /dev/null
@@ -0,0 +1,269 @@
+//========================================================================
+//
+// pdffonts.cc
+//
+// Copyright 2001-2002 Glyph & Cog, LLC
+//
+//========================================================================
+
+#include <aconf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <math.h>
+#include "parseargs.h"
+#include "GString.h"
+#include "gmem.h"
+#include "GlobalParams.h"
+#include "Error.h"
+#include "Object.h"
+#include "Dict.h"
+#include "GfxFont.h"
+#include "Annot.h"
+#include "PDFDoc.h"
+#include "config.h"
+
+static char *fontTypeNames[] = {
+  "unknown",
+  "Type 1",
+  "Type 1C",
+  "Type 3",
+  "TrueType",
+  "CID Type 0",
+  "CID Type 0C",
+  "CID TrueType"
+};
+
+static void scanFonts(Dict *resDict, PDFDoc *doc);
+static void scanFont(GfxFont *font, PDFDoc *doc);
+
+static int firstPage = 1;
+static int lastPage = 0;
+static char ownerPassword[33] = "";
+static char userPassword[33] = "";
+static char cfgFileName[256] = "";
+static GBool printVersion = gFalse;
+static GBool printHelp = gFalse;
+
+static ArgDesc argDesc[] = {
+  {"-f",      argInt,      &firstPage,     0,
+   "first page to examine"},
+  {"-l",      argInt,      &lastPage,      0,
+   "last page to examine"},
+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
+  {"-upw",    argString,   userPassword,   sizeof(userPassword),
+   "user password (for encrypted files)"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
+  {"-v",      argFlag,     &printVersion,  0,
+   "print copyright and version info"},
+  {"-h",      argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-help",   argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
+  {NULL}
+};
+
+static Ref *fonts;
+static int fontsLen;
+static int fontsSize;
+
+int main(int argc, char *argv[]) {
+  PDFDoc *doc;
+  GString *fileName;
+  GString *ownerPW, *userPW;
+  GBool ok;
+  Page *page;
+  Dict *resDict;
+  Annots *annots;
+  Object obj1, obj2;
+  int pg, i;
+
+  // parse args
+  ok = parseArgs(argDesc, &argc, argv);
+  if (!ok || argc != 2 || printVersion || printHelp) {
+    fprintf(stderr, "pdfinfo version %s\n", xpdfVersion);
+    fprintf(stderr, "%s\n", xpdfCopyright);
+    if (!printVersion) {
+      printUsage("pdfinfo", "<PDF-file>", argDesc);
+    }
+    exit(1);
+  }
+  fileName = new GString(argv[1]);
+
+  // read config file
+  globalParams = new GlobalParams(cfgFileName);
+
+  // open PDF file
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
+  if (userPassword[0]) {
+    userPW = new GString(userPassword);
+  } else {
+    userPW = NULL;
+  }
+  doc = new PDFDoc(fileName, ownerPW, userPW);
+  if (userPW) {
+    delete userPW;
+  }
+  if (ownerPW) {
+    delete ownerPW;
+  }
+  if (!doc->isOk()) {
+    exit(1);
+  }
+
+  // get page range
+  if (firstPage < 1) {
+    firstPage = 1;
+  }
+  if (lastPage < 1 || lastPage > doc->getNumPages()) {
+    lastPage = doc->getNumPages();
+  }
+
+  // scan the fonts
+  printf("name                                 type         emb sub uni object ID\n");
+  printf("------------------------------------ ------------ --- --- --- ---------\n");
+  fonts = NULL;
+  fontsLen = fontsSize = 0;
+  for (pg = firstPage; pg <= lastPage; ++pg) {
+    page = doc->getCatalog()->getPage(pg);
+    if ((resDict = page->getResourceDict())) {
+      scanFonts(resDict, doc);
+    }
+    annots = new Annots(doc->getXRef(), page->getAnnots(&obj1));
+    obj1.free();
+    for (i = 0; i < annots->getNumAnnots(); ++i) {
+      if (annots->getAnnot(i)->getAppearance(&obj1)->isStream()) {
+       obj1.streamGetDict()->lookup("Resources", &obj2);
+       if (obj2.isDict()) {
+         scanFonts(obj2.getDict(), doc);
+       }
+       obj2.free();
+      }
+      obj1.free();
+    }
+    delete annots;
+  }
+
+  // clean up
+  gfree(fonts);
+  delete doc;
+  delete globalParams;
+
+  // check for memory leaks
+  Object::memCheck(stderr);
+  gMemReport(stderr);
+
+  return 0;
+}
+
+static void scanFonts(Dict *resDict, PDFDoc *doc) {
+  GfxFontDict *gfxFontDict;
+  GfxFont *font;
+  Object fontDict, xObjDict, xObj, resObj;
+  int i;
+
+  // scan the fonts in this resource dictionary
+  resDict->lookup("Font", &fontDict);
+  if (fontDict.isDict()) {
+    gfxFontDict = new GfxFontDict(doc->getXRef(), fontDict.getDict());
+    for (i = 0; i < gfxFontDict->getNumFonts(); ++i) {
+      font = gfxFontDict->getFont(i);
+      scanFont(font, doc);
+    }
+    delete gfxFontDict;
+  }
+  fontDict.free();
+
+  // recursively scan any resource dictionaries in objects in this
+  // resource dictionary
+  resDict->lookup("XObject", &xObjDict);
+  if (xObjDict.isDict()) {
+    for (i = 0; i < xObjDict.dictGetLength(); ++i) {
+      xObjDict.dictGetVal(i, &xObj);
+      if (xObj.isStream()) {
+       xObj.streamGetDict()->lookup("Resources", &resObj);
+       if (resObj.isDict()) {
+         scanFonts(resObj.getDict(), doc);
+       }
+       resObj.free();
+      }
+      xObj.free();
+    }
+  }
+  xObjDict.free();
+}
+
+static void scanFont(GfxFont *font, PDFDoc *doc) {
+  Ref fontRef, embRef;
+  Object fontObj, nameObj, toUnicodeObj;
+  GString *name;
+  GBool subset, hasToUnicode;
+  int i;
+
+  fontRef = *font->getID();
+
+  // check for an already-seen font
+  for (i = 0; i < fontsLen; ++i) {
+    if (fontRef.num == fonts[i].num && fontRef.gen == fonts[i].gen) {
+      return;
+    }
+  }
+
+  // get the original font name -- the GfxFont class munges substitute
+  // Base-14 font names into proper form, so this code grabs the
+  // original name from the font dictionary; also look for a ToUnicode
+  // map
+  name = NULL;
+  hasToUnicode = gFalse;
+  if (doc->getXRef()->fetch(fontRef.num, fontRef.gen, &fontObj)->isDict()) {
+    if (fontObj.dictLookup("BaseFont", &nameObj)->isName()) {
+      name = new GString(nameObj.getName());
+    }
+    nameObj.free();
+    hasToUnicode = fontObj.dictLookup("ToUnicode", &toUnicodeObj)->isStream();
+    toUnicodeObj.free();
+  }
+  fontObj.free();
+
+  // check for a font subset name: capital letters followed by a '+'
+  // sign
+  subset = gFalse;
+  if (name) {
+    for (i = 0; i < name->getLength(); ++i) {
+      if (name->getChar(i) < 'A' || name->getChar(i) > 'Z') {
+       break;
+      }
+    }
+    subset = i > 0 && i < name->getLength() && name->getChar(i) == '+';
+  }
+
+  // print the font info
+  printf("%-36s %-12s %-3s %-3s %-3s %6d %2d\n",
+        name ? name->getCString() : "[none]",
+        fontTypeNames[font->getType()],
+        font->getEmbeddedFontID(&embRef) ? "yes" : "no",
+        subset ? "yes" : "no",
+        hasToUnicode ? "yes" : "no",
+        fontRef.num, fontRef.gen);
+  if (name) {
+    delete name;
+  }
+
+  // add this font to the list
+  if (fontsLen == fontsSize) {
+    fontsSize += 32;
+    fonts = (Ref *)grealloc(fonts, fontsSize * sizeof(Ref));
+  }
+  fonts[fontsLen++] = *font->getID();
+}
index cd218ff71e4ba812f9513a9db91d146f8f45dda0..898ad00ed5f5ea951f51e17e0dea99b495543c8a 100644 (file)
@@ -2,10 +2,11 @@
 //
 // pdfimages.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -13,6 +14,7 @@
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "ImageOutputDev.h"
-#include "Params.h"
 #include "Error.h"
 #include "config.h"
 
 static int firstPage = 1;
 static int lastPage = 0;
 static GBool dumpJPEG = gFalse;
+static char ownerPassword[33] = "";
 static char userPassword[33] = "";
+static GBool quiet = gFalse;
+static char cfgFileName[256] = "";
 static GBool printVersion = gFalse;
 static GBool printHelp = gFalse;
 
@@ -40,16 +44,24 @@ static ArgDesc argDesc[] = {
    "last page to convert"},
   {"-j",      argFlag,     &dumpJPEG,      0,
    "write JPEG images as JPEG files"},
+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
   {"-upw",    argString,   userPassword,   sizeof(userPassword),
    "user password (for encrypted files)"},
-  {"-q",      argFlag,     &errQuiet,      0,
+  {"-q",      argFlag,     &quiet,         0,
    "don't print any messages or errors"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
   {"-v",      argFlag,     &printVersion,  0,
    "print copyright and version info"},
   {"-h",      argFlag,     &printHelp,     0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,     0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
   {NULL}
 };
 
@@ -57,7 +69,7 @@ int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
   char *imgRoot;
-  GString *userPW;
+  GString *ownerPW, *userPW;
   ImageOutputDev *imgOut;
   GBool ok;
 
@@ -74,23 +86,30 @@ int main(int argc, char *argv[]) {
   fileName = new GString(argv[1]);
   imgRoot = argv[2];
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
 
   // open PDF file
-  xref = NULL;
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
   if (userPassword[0]) {
     userPW = new GString(userPassword);
   } else {
     userPW = NULL;
   }
-  doc = new PDFDoc(fileName, userPW);
+  doc = new PDFDoc(fileName, ownerPW, userPW);
   if (userPW) {
     delete userPW;
   }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!doc->isOk()) {
     goto err;
   }
@@ -116,7 +135,7 @@ int main(int argc, char *argv[]) {
   // clean up
  err:
   delete doc;
-  freeParams();
+  delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
index d45599bd9c8f90c3a79eb302cdb601ad989f2fc2..ea70afe93d8803a3702de673f08e07b0203b6530 100644 (file)
@@ -2,17 +2,21 @@
 //
 // pdfinfo.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <string.h>
+#include <time.h>
+#include <math.h>
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Catalog.h"
 #include "Page.h"
 #include "PDFDoc.h"
-#include "Params.h"
+#include "CharTypes.h"
+#include "UnicodeMap.h"
 #include "Error.h"
 #include "config.h"
 
-static void printInfoString(Dict *infoDict, char *key, char *fmt);
-static void printInfoDate(Dict *infoDict, char *key, char *fmt);
+static void printInfoString(Dict *infoDict, char *key, char *text,
+                           UnicodeMap *uMap);
+static void printInfoDate(Dict *infoDict, char *key, char *text);
 
+static GBool printMetadata = gFalse;
+static char textEncName[128] = "";
+static char ownerPassword[33] = "";
 static char userPassword[33] = "";
+static char cfgFileName[256] = "";
 static GBool printVersion = gFalse;
 static GBool printHelp = gFalse;
 
 static ArgDesc argDesc[] = {
+  {"-meta",   argFlag,     &printMetadata,    0,
+   "print the document metadata (XML)"},
+  {"-enc",    argString,   textEncName,    sizeof(textEncName),
+   "output text encoding name"},
+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
   {"-upw",    argString,   userPassword,   sizeof(userPassword),
    "user password (for encrypted files)"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
   {"-v",      argFlag,     &printVersion,  0,
    "print copyright and version info"},
   {"-h",      argFlag,     &printHelp,     0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,     0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
   {NULL}
 };
 
 int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
-  GString *userPW;
+  GString *ownerPW, *userPW;
+  UnicodeMap *uMap;
   Object info;
+  double w, h;
+  FILE *f;
+  GString *metadata;
   GBool ok;
 
   // parse args
@@ -63,41 +89,59 @@ int main(int argc, char *argv[]) {
   }
   fileName = new GString(argv[1]);
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (textEncName[0]) {
+    globalParams->setTextEncoding(textEncName);
+  }
+
+  // get mapping to output encoding
+  if (!(uMap = globalParams->getTextEncoding())) {
+    error(-1, "Couldn't get text encoding");
+    delete fileName;
+    goto err1;
+  }
 
   // open PDF file
-  xref = NULL;
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
   if (userPassword[0]) {
     userPW = new GString(userPassword);
   } else {
     userPW = NULL;
   }
-  doc = new PDFDoc(fileName, userPW);
+  doc = new PDFDoc(fileName, ownerPW, userPW);
   if (userPW) {
     delete userPW;
   }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!doc->isOk()) {
-    exit(1);
+    goto err2;
   }
 
   // print doc info
   doc->getDocInfo(&info);
   if (info.isDict()) {
-    printInfoString(info.getDict(), "Title",        "Title:        %s\n");
-    printInfoString(info.getDict(), "Subject",      "Subject:      %s\n");
-    printInfoString(info.getDict(), "Keywords",     "Keywords:     %s\n");
-    printInfoString(info.getDict(), "Author",       "Author:       %s\n");
-    printInfoString(info.getDict(), "Creator",      "Creator:      %s\n");
-    printInfoString(info.getDict(), "Producer",     "Producer:     %s\n");
-    printInfoDate(info.getDict(),   "CreationDate", "CreationDate: %s\n");
-    printInfoDate(info.getDict(),   "ModDate",      "ModDate:      %s\n");
+    printInfoString(info.getDict(), "Title",        "Title:        ", uMap);
+    printInfoString(info.getDict(), "Subject",      "Subject:      ", uMap);
+    printInfoString(info.getDict(), "Keywords",     "Keywords:     ", uMap);
+    printInfoString(info.getDict(), "Author",       "Author:       ", uMap);
+    printInfoString(info.getDict(), "Creator",      "Creator:      ", uMap);
+    printInfoString(info.getDict(), "Producer",     "Producer:     ", uMap);
+    printInfoDate(info.getDict(),   "CreationDate", "CreationDate: ");
+    printInfoDate(info.getDict(),   "ModDate",      "ModDate:      ");
   }
   info.free();
 
+  // print tagging info
+  printf("Tagged:       %s\n",
+        doc->getStructTreeRoot()->isDict() ? "yes" : "no");
+
   // print page count
   printf("Pages:        %d\n", doc->getNumPages());
 
@@ -105,20 +149,66 @@ int main(int argc, char *argv[]) {
   printf("Encrypted:    ");
   if (doc->isEncrypted()) {
     printf("yes (print:%s copy:%s change:%s addNotes:%s)\n",
-          doc->okToPrint() ? "yes" : "no",
-          doc->okToCopy() ? "yes" : "no",
-          doc->okToChange() ? "yes" : "no",
-          doc->okToAddNotes() ? "yes" : "no");
+          doc->okToPrint(gTrue) ? "yes" : "no",
+          doc->okToCopy(gTrue) ? "yes" : "no",
+          doc->okToChange(gTrue) ? "yes" : "no",
+          doc->okToAddNotes(gTrue) ? "yes" : "no");
   } else {
     printf("no\n");
   }
 
+  // print page size
+  if (doc->getNumPages() >= 1) {
+    w = doc->getPageWidth(1);
+    h = doc->getPageHeight(1);
+    printf("Page size:    %g x %g pts", w, h);
+    if ((fabs(w - 612) < 0.1 && fabs(h - 792) < 0.1) ||
+       (fabs(w - 792) < 0.1 && fabs(h - 612) < 0.1)) {
+      printf(" (letter)");
+    } else if ((fabs(w - 595) < 0.1 && fabs(h - 842) < 0.1) ||
+              (fabs(w - 842) < 0.1 && fabs(h - 595) < 0.1)) {
+      printf(" (A4)");
+    }
+    printf("\n");
+  } 
+
+  // print file size
+#ifdef VMS
+  f = fopen(fileName->getCString(), "rb", "ctx=stm");
+#else
+  f = fopen(fileName->getCString(), "rb");
+#endif
+  if (f) {
+#if HAVE_FSEEK64
+    fseek64(f, 0, SEEK_END);
+    printf("File size:    %u bytes\n", (Guint)ftell64(f));
+#else
+    fseek(f, 0, SEEK_END);
+    printf("File size:    %d bytes\n", (int)ftell(f));
+#endif
+    fclose(f);
+  }
+
   // print linearization info
-  printf("Linearized:   %s\n", doc->isLinearized() ? "yes" : "no");
+  printf("Optimized:    %s\n", doc->isLinearized() ? "yes" : "no");
+
+  // print PDF version
+  printf("PDF version:  %.1f\n", doc->getPDFVersion());
+
+  // print the metadata
+  if (printMetadata && (metadata = doc->readMetadata())) {
+    fputs("Metadata:\n", stdout);
+    fputs(metadata->getCString(), stdout);
+    fputc('\n', stdout);
+    delete metadata;
+  }
 
   // clean up
+ err2:
+  uMap->decRefCnt();
   delete doc;
-  freeParams();
+ err1:
+  delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
@@ -127,44 +217,77 @@ int main(int argc, char *argv[]) {
   return 0;
 }
 
-static void printInfoString(Dict *infoDict, char *key, char *fmt) {
+static void printInfoString(Dict *infoDict, char *key, char *text,
+                           UnicodeMap *uMap) {
   Object obj;
-  GString *s1, *s2;
-  int i;
+  GString *s1;
+  GBool isUnicode;
+  Unicode u;
+  char buf[8];
+  int i, n;
 
   if (infoDict->lookup(key, &obj)->isString()) {
+    fputs(text, stdout);
     s1 = obj.getString();
     if ((s1->getChar(0) & 0xff) == 0xfe &&
        (s1->getChar(1) & 0xff) == 0xff) {
-      s2 = new GString();
-      for (i = 2; i < obj.getString()->getLength(); i += 2) {
-       if (s1->getChar(i) == '\0') {
-         s2->append(s1->getChar(i+1));
-       } else {
-         delete s2;
-         s2 = new GString("<unicode>");
-         break;
-       }
-      }
-      printf(fmt, s2->getCString());
-      delete s2;
+      isUnicode = gTrue;
+      i = 2;
     } else {
-      printf(fmt, s1->getCString());
+      isUnicode = gFalse;
+      i = 0;
+    }
+    while (i < obj.getString()->getLength()) {
+      if (isUnicode) {
+       u = ((s1->getChar(i) & 0xff) << 8) |
+           (s1->getChar(i+1) & 0xff);
+       i += 2;
+      } else {
+       u = s1->getChar(i) & 0xff;
+       ++i;
+      }
+      n = uMap->mapUnicode(u, buf, sizeof(buf));
+      fwrite(buf, 1, n, stdout);
     }
+    fputc('\n', stdout);
   }
   obj.free();
 }
 
-static void printInfoDate(Dict *infoDict, char *key, char *fmt) {
+static void printInfoDate(Dict *infoDict, char *key, char *text) {
   Object obj;
   char *s;
+  int year, mon, day, hour, min, sec;
+  struct tm tmStruct;
+  char buf[256];
 
   if (infoDict->lookup(key, &obj)->isString()) {
+    fputs(text, stdout);
     s = obj.getString()->getCString();
     if (s[0] == 'D' && s[1] == ':') {
       s += 2;
     }
-    printf(fmt, s);
+    if (sscanf(s, "%4d%2d%2d%2d%2d%2d",
+              &year, &mon, &day, &hour, &min, &sec) == 6) {
+      tmStruct.tm_year = year - 1900;
+      tmStruct.tm_mon = mon - 1;
+      tmStruct.tm_mday = day;
+      tmStruct.tm_hour = hour;
+      tmStruct.tm_min = min;
+      tmStruct.tm_sec = sec;
+      tmStruct.tm_wday = -1;
+      tmStruct.tm_yday = -1;
+      tmStruct.tm_isdst = -1;
+      mktime(&tmStruct); // compute the tm_wday and tm_yday fields
+      if (strftime(buf, sizeof(buf), "%c", &tmStruct)) {
+       fputs(buf, stdout);
+      } else {
+       fputs(s, stdout);
+      }
+    } else {
+      fputs(s, stdout);
+    }
+    fputc('\n', stdout);
   }
   obj.free();
 }
index 549b57b4becf6bab9c21b2a6201b5d6a2863836f..460377ffac6bc040637cf80ae1271b2ee78660f5 100644 (file)
@@ -2,10 +2,11 @@
 //
 // pdftopbm.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -13,6 +14,7 @@
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "PBMOutputDev.h"
-#include "Params.h"
 #include "Error.h"
 #include "config.h"
 
 static int firstPage = 1;
 static int lastPage = 0;
 static int resolution = 150;
+static char ownerPassword[33] = "";
 static char userPassword[33] = "";
+static GBool quiet = gFalse;
+static char cfgFileName[256] = "";
 static GBool printVersion = gFalse;
 static GBool printHelp = gFalse;
 
@@ -40,16 +44,24 @@ static ArgDesc argDesc[] = {
    "last page to print"},
   {"-r",      argInt,      &resolution,    0,
    "resolution, in DPI (default is 150)"},
+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
   {"-upw",    argString,   userPassword,   sizeof(userPassword),
    "user password (for encrypted files)"},
-  {"-q",      argFlag,     &errQuiet,      0,
+  {"-q",      argFlag,     &quiet,         0,
    "don't print any messages or errors"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
   {"-v",      argFlag,     &printVersion,  0,
    "print copyright and version info"},
   {"-h",      argFlag,     &printHelp,     0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,     0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
   {NULL}
 };
 
@@ -57,7 +69,7 @@ int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
   char *pbmRoot;
-  GString *userPW;
+  GString *ownerPW, *userPW;
   PBMOutputDev *pbmOut;
   GBool ok;
 
@@ -74,23 +86,30 @@ int main(int argc, char *argv[]) {
   fileName = new GString(argv[1]);
   pbmRoot = argv[2];
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
 
   // open PDF file
-  xref = NULL;
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
   if (userPassword[0]) {
     userPW = new GString(userPassword);
   } else {
     userPW = NULL;
   }
-  doc = new PDFDoc(fileName, userPW);
+  doc = new PDFDoc(fileName, ownerPW, userPW);
   if (userPW) {
     delete userPW;
   }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!doc->isOk()) {
     goto err;
   }
@@ -102,15 +121,15 @@ int main(int argc, char *argv[]) {
     lastPage = doc->getNumPages();
 
   // write PBM files
-  rgbCubeSize = 1;
   pbmOut = PBMOutputDev::makePBMOutputDev(NULL, pbmRoot);
+  pbmOut->startDoc(doc->getXRef());
   doc->displayPages(pbmOut, firstPage, lastPage, resolution, 0, gFalse);
   PBMOutputDev::killPBMOutputDev(pbmOut);
 
   // clean up
  err:
   delete doc;
-  freeParams();
+  delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
index e3e495d947063053e075737e05980b8eecc6dac6..7f60be024f9063f20ffd1a3b50b8eb8be227c2c8 100644 (file)
@@ -2,10 +2,11 @@
 //
 // pdftops.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -13,6 +14,7 @@
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "PSOutputDev.h"
-#include "Params.h"
 #include "Error.h"
 #include "config.h"
 
 static int firstPage = 1;
 static int lastPage = 0;
-static GBool noEmbedFonts = gFalse;
+static GBool level1 = gFalse;
+static GBool level1Sep = gFalse;
+static GBool level2 = gFalse;
+static GBool level2Sep = gFalse;
+static GBool level3 = gFalse;
+static GBool level3Sep = gFalse;
+static GBool doEPS = gFalse;
 static GBool doForm = gFalse;
+#if OPI_SUPPORT
+static GBool doOPI = gFalse;
+#endif
+static GBool noEmbedT1Fonts = gFalse;
+static GBool noEmbedTTFonts = gFalse;
+static GBool noEmbedCIDPSFonts = gFalse;
+static GBool noEmbedCIDTTFonts = gFalse;
+static char paperSize[15] = "";
+static int paperWidth = 0;
+static int paperHeight = 0;
+static GBool duplex = gFalse;
+static char ownerPassword[33] = "";
 static char userPassword[33] = "";
+static GBool quiet = gFalse;
+static char cfgFileName[256] = "";
 static GBool printVersion = gFalse;
 static GBool printHelp = gFalse;
 
@@ -39,34 +60,60 @@ static ArgDesc argDesc[] = {
    "first page to print"},
   {"-l",      argInt,      &lastPage,       0,
    "last page to print"},
-  {"-paperw", argInt,      &paperWidth,     0,
-   "paper width, in points"},
-  {"-paperh", argInt,      &paperHeight,    0,
-   "paper height, in points"},
-  {"-level1", argFlag,     &psOutLevel1,    0,
+  {"-level1", argFlag,     &level1,         0,
    "generate Level 1 PostScript"},
-  {"-level1sep", argFlag,  &psOutLevel1Sep, 0,
+  {"-level1sep", argFlag,  &level1Sep,      0,
    "generate Level 1 separable PostScript"},
-  {"-eps",    argFlag,     &psOutEPS,       0,
+  {"-level2", argFlag,     &level2,         0,
+   "generate Level 2 PostScript"},
+  {"-level2sep", argFlag,  &level2Sep,      0,
+   "generate Level 2 separable PostScript"},
+  {"-level3", argFlag,     &level3,         0,
+   "generate Level 3 PostScript"},
+  {"-level3sep", argFlag,  &level3Sep,      0,
+   "generate Level 3 separable PostScript"},
+  {"-eps",    argFlag,     &doEPS,          0,
    "generate Encapsulated PostScript (EPS)"},
+  {"-form",   argFlag,     &doForm,         0,
+   "generate a PostScript form"},
 #if OPI_SUPPORT
-  {"-opi",    argFlag,     &psOutOPI,       0,
+  {"-opi",    argFlag,     &doOPI,          0,
    "generate OPI comments"},
 #endif
-  {"-noemb",  argFlag,     &noEmbedFonts,   0,
+  {"-noembt1", argFlag,     &noEmbedT1Fonts, 0,
    "don't embed Type 1 fonts"},
-  {"-form",   argFlag,     &doForm,         0,
-   "generate a PostScript form"},
+  {"-noembtt", argFlag,    &noEmbedTTFonts, 0,
+   "don't embed TrueType fonts"},
+  {"-noembcidps", argFlag, &noEmbedCIDPSFonts, 0,
+   "don't embed CID PostScript fonts"},
+  {"-noembcidtt", argFlag, &noEmbedCIDTTFonts, 0,
+   "don't embed CID TrueType fonts"},
+  {"-paper",  argString,   paperSize,       sizeof(paperSize),
+   "paper size (letter, legal, A4, A3)"},
+  {"-paperw", argInt,      &paperWidth,     0,
+   "paper width, in points"},
+  {"-paperh", argInt,      &paperHeight,    0,
+   "paper height, in points"},
+  {"-duplex", argFlag,     &duplex,         0,
+   "enable duplex printing"},
+  {"-opw",    argString,   ownerPassword,   sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
   {"-upw",    argString,   userPassword,    sizeof(userPassword),
    "user password (for encrypted files)"},
-  {"-q",      argFlag,     &errQuiet,       0,
+  {"-q",      argFlag,     &quiet,          0,
    "don't print any messages or errors"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
   {"-v",      argFlag,     &printVersion,   0,
    "print copyright and version info"},
   {"-h",      argFlag,     &printHelp,      0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,      0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,      0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,      0,
+   "print usage information"},
   {NULL}
 };
 
@@ -74,7 +121,9 @@ int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
   GString *psFileName;
-  GString *userPW;
+  PSLevel level;
+  PSOutMode mode;
+  GString *ownerPW, *userPW;
   PSOutputDev *psOut;
   GBool ok;
   char *p;
@@ -89,33 +138,101 @@ int main(int argc, char *argv[]) {
     }
     exit(1);
   }
-  if (psOutLevel1 && psOutLevel1Sep) {
-    fprintf(stderr, "Error: use -level1 or -level1sep, not both.\n");
+  if ((level1 ? 1 : 0) +
+      (level1Sep ? 1 : 0) +
+      (level2 ? 1 : 0) +
+      (level2Sep ? 1 : 0) +
+      (level3 ? 1 : 0) +
+      (level3Sep ? 1 : 0) > 1) {
+    fprintf(stderr, "Error: use only one of the 'level' options.\n");
     exit(1);
   }
-  if (doForm && (psOutLevel1 || psOutLevel1Sep)) {
+  if (doEPS && doForm) {
+    fprintf(stderr, "Error: use only one of -eps and -form\n");
+    exit(1);
+  }
+  if (level1) {
+    level = psLevel1;
+  } else if (level1Sep) {
+    level = psLevel1Sep;
+  } else if (level2Sep) {
+    level = psLevel2Sep;
+  } else if (level3) {
+    level = psLevel3;
+  } else if (level3Sep) {
+    level = psLevel3Sep;
+  } else {
+    level = psLevel2;
+  }
+  if (doForm && level < psLevel2) {
     fprintf(stderr, "Error: forms are only available with Level 2 output.\n");
     exit(1);
   }
+  mode = doEPS ? psModeEPS
+               : doForm ? psModeForm
+                        : psModePS;
   fileName = new GString(argv[1]);
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (paperSize[0]) {
+    if (!globalParams->setPSPaperSize(paperSize)) {
+      fprintf(stderr, "Invalid paper size\n");
+      exit(1);
+    }
+  } else {
+    if (paperWidth) {
+      globalParams->setPSPaperWidth(paperWidth);
+    }
+    if (paperHeight) {
+      globalParams->setPSPaperHeight(paperHeight);
+    }
+  }
+  if (duplex) {
+    globalParams->setPSDuplex(duplex);
+  }
+  if (level1 || level1Sep || level2 || level2Sep || level3 || level3Sep) {
+    globalParams->setPSLevel(level);
+  }
+  if (noEmbedT1Fonts) {
+    globalParams->setPSEmbedType1(!noEmbedT1Fonts);
+  }
+  if (noEmbedTTFonts) {
+    globalParams->setPSEmbedTrueType(!noEmbedTTFonts);
+  }
+  if (noEmbedCIDPSFonts) {
+    globalParams->setPSEmbedCIDPostScript(!noEmbedCIDPSFonts);
+  }
+  if (noEmbedCIDTTFonts) {
+    globalParams->setPSEmbedCIDTrueType(!noEmbedCIDTTFonts);
+  }
+#if OPI_SUPPORT
+  if (doOPI) {
+    globalParams->setPSOPI(doOPI);
+  }
+#endif
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
 
   // open PDF file
-  xref = NULL;
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
   if (userPassword[0]) {
     userPW = new GString(userPassword);
   } else {
     userPW = NULL;
   }
-  doc = new PDFDoc(fileName, userPW);
+  doc = new PDFDoc(fileName, ownerPW, userPW);
   if (userPW) {
     delete userPW;
   }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!doc->isOk()) {
     goto err1;
   }
@@ -131,33 +248,35 @@ int main(int argc, char *argv[]) {
     psFileName = new GString(argv[2]);
   } else {
     p = fileName->getCString() + fileName->getLength() - 4;
-    if (!strcmp(p, ".pdf") || !strcmp(p, ".PDF"))
+    if (!strcmp(p, ".pdf") || !strcmp(p, ".PDF")) {
       psFileName = new GString(fileName->getCString(),
                               fileName->getLength() - 4);
-    else
+    } else {
       psFileName = fileName->copy();
-    psFileName->append(psOutEPS ? ".eps" : ".ps");
+    }
+    psFileName->append(doEPS ? ".eps" : ".ps");
   }
 
   // get page range
-  if (firstPage < 1)
+  if (firstPage < 1) {
     firstPage = 1;
-  if (lastPage < 1 || lastPage > doc->getNumPages())
+  }
+  if (lastPage < 1 || lastPage > doc->getNumPages()) {
     lastPage = doc->getNumPages();
-  if (doForm)
-    lastPage = firstPage;
+  }
 
-  // check for multi-page EPS
-  if (psOutEPS && firstPage != lastPage) {
-    error(-1, "EPS files can only contain one page.");
+  // check for multi-page EPS or form
+  if ((doEPS || doForm) && firstPage != lastPage) {
+    error(-1, "EPS and form files can only contain one page.");
     goto err2;
   }
 
   // write PostScript file
-  psOut = new PSOutputDev(psFileName->getCString(), doc->getCatalog(),
-                         firstPage, lastPage, !noEmbedFonts, doForm);
-  if (psOut->isOk())
+  psOut = new PSOutputDev(psFileName->getCString(), doc->getXRef(),
+                         doc->getCatalog(), firstPage, lastPage, mode);
+  if (psOut->isOk()) {
     doc->displayPages(psOut, firstPage, lastPage, 72, 0, gFalse);
+  }
   delete psOut;
 
   // clean up
@@ -165,7 +284,7 @@ int main(int argc, char *argv[]) {
   delete psFileName;
  err1:
   delete doc;
-  freeParams();
+  delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
index 2d293b461a9197b80288ef3e1c1a47ed4387595a..f4b39ce9452ffc2e150bdd5b283cccf66b4a6650 100644 (file)
@@ -2,10 +2,11 @@
 //
 // pdftotext.cc
 //
-// Copyright 1997 Derek B. Noonburg
+// Copyright 1997-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -13,6 +14,7 @@
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "TextOutputDev.h"
-#include "Params.h"
+#include "CharTypes.h"
+#include "UnicodeMap.h"
 #include "Error.h"
 #include "config.h"
 
+static void printInfoString(FILE *f, Dict *infoDict, char *key,
+                           char *text1, char *text2, UnicodeMap *uMap);
+static void printInfoDate(FILE *f, Dict *infoDict, char *key, char *fmt);
+
 static int firstPage = 1;
 static int lastPage = 0;
-static GBool useASCII7 = gFalse;
-static GBool useLatin2 = gFalse;
-static GBool useLatin5 = gFalse;
-#if JAPANESE_SUPPORT
-static GBool useEUCJP = gFalse;
-#endif
 static GBool rawOrder = gFalse;
+static GBool htmlMeta = gFalse;
+static char textEncName[128] = "";
+static char textEOL[16] = "";
+static char ownerPassword[33] = "";
 static char userPassword[33] = "";
+static GBool quiet = gFalse;
+static char cfgFileName[256] = "";
 static GBool printVersion = gFalse;
 static GBool printHelp = gFalse;
 
@@ -44,28 +51,32 @@ static ArgDesc argDesc[] = {
    "first page to convert"},
   {"-l",      argInt,      &lastPage,      0,
    "last page to convert"},
-  {"-ascii7", argFlag,     &useASCII7,     0,
-   "convert to 7-bit ASCII (default is 8-bit ISO Latin-1)"},
-  {"-latin2", argFlag,     &useLatin2,     0,
-   "convert to ISO Latin-2 character set"},
-  {"-latin5", argFlag,     &useLatin5,     0,
-   "convert to ISO Latin-5 character set"},
-#if JAPANESE_SUPPORT
-  {"-eucjp",  argFlag,     &useEUCJP,      0,
-   "convert Japanese text to EUC-JP"},
-#endif
   {"-raw",    argFlag,     &rawOrder,      0,
    "keep strings in content stream order"},
+  {"-htmlmeta", argFlag,   &htmlMeta,      0,
+   "generate a simple HTML file, including the meta information"},
+  {"-enc",    argString,   textEncName,    sizeof(textEncName),
+   "output text encoding name"},
+  {"-eol",    argString,   textEOL,        sizeof(textEOL),
+   "output end-of-line convention (unix, dos, or mac)"},
+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
   {"-upw",    argString,   userPassword,   sizeof(userPassword),
    "user password (for encrypted files)"},
-  {"-q",      argFlag,     &errQuiet,      0,
+  {"-q",      argFlag,     &quiet,         0,
    "don't print any messages or errors"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
   {"-v",      argFlag,     &printVersion,  0,
    "print copyright and version info"},
   {"-h",      argFlag,     &printHelp,     0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,     0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
   {NULL}
 };
 
@@ -73,9 +84,11 @@ int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
   GString *textFileName;
-  GString *userPW;
+  GString *ownerPW, *userPW;
   TextOutputDev *textOut;
-  TextOutputCharSet charSet;
+  FILE *f;
+  UnicodeMap *uMap;
+  Object info;
   GBool ok;
   char *p;
 
@@ -91,31 +104,53 @@ int main(int argc, char *argv[]) {
   }
   fileName = new GString(argv[1]);
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (textEncName[0]) {
+    globalParams->setTextEncoding(textEncName);
+  }
+  if (textEOL[0]) {
+    if (!globalParams->setTextEOL(textEOL)) {
+      fprintf(stderr, "Bad '-eol' value on command line\n");
+    }
+  }
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
+
+  // get mapping to output encoding
+  if (!(uMap = globalParams->getTextEncoding())) {
+    error(-1, "Couldn't get text encoding");
+    delete fileName;
+    goto err1;
+  }
 
   // open PDF file
-  xref = NULL;
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
   if (userPassword[0]) {
     userPW = new GString(userPassword);
   } else {
     userPW = NULL;
   }
-  doc = new PDFDoc(fileName, userPW);
+  doc = new PDFDoc(fileName, ownerPW, userPW);
   if (userPW) {
     delete userPW;
   }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!doc->isOk()) {
-    goto err;
+    goto err2;
   }
 
   // check for copy permission
   if (!doc->okToCopy()) {
     error(-1, "Copying of text from this document is not allowed.");
-    goto err;
+    goto err2;
   }
 
   // construct text file name
@@ -129,7 +164,7 @@ int main(int argc, char *argv[]) {
     } else {
       textFileName = fileName->copy();
     }
-    textFileName->append(".txt");
+    textFileName->append(htmlMeta ? ".html" : ".txt");
   }
 
   // get page range
@@ -140,29 +175,79 @@ int main(int argc, char *argv[]) {
     lastPage = doc->getNumPages();
   }
 
+  // write HTML header
+  if (htmlMeta) {
+    if (!textFileName->cmp("-")) {
+      f = stdout;
+    } else {
+      if (!(f = fopen(textFileName->getCString(), "wb"))) {
+       error(-1, "Couldn't open text file '%s'", textFileName->getCString());
+       goto err3;
+      }
+    }
+    fputs("<html>\n", f);
+    fputs("<head>\n", f);
+    doc->getDocInfo(&info);
+    if (info.isDict()) {
+      printInfoString(f, info.getDict(), "Title", "<title>", "</title>\n",
+                     uMap);
+      printInfoString(f, info.getDict(), "Subject",
+                     "<meta name=\"Subject\" content=\"", "\">\n", uMap);
+      printInfoString(f, info.getDict(), "Keywords",
+                     "<meta name=\"Keywords\" content=\"", "\">\n", uMap);
+      printInfoString(f, info.getDict(), "Author",
+                     "<meta name=\"Author\" content=\"", "\">\n", uMap);
+      printInfoString(f, info.getDict(), "Creator",
+                     "<meta name=\"Creator\" content=\"", "\">\n", uMap);
+      printInfoString(f, info.getDict(), "Producer",
+                     "<meta name=\"Producer\" content=\"", "\">\n", uMap);
+      printInfoDate(f, info.getDict(), "CreationDate",
+                   "<meta name=\"CreationDate\" content=\"\">\n");
+      printInfoDate(f, info.getDict(), "LastModifiedDate",
+                   "<meta name=\"ModDate\" content=\"\">\n");
+    }
+    info.free();
+    fputs("</head>\n", f);
+    fputs("<body>\n", f);
+    fputs("<pre>\n", f);
+    if (f != stdout) {
+      fclose(f);
+    }
+  }
+
   // write text file
-#if JAPANESE_SUPPORT
-  useASCII7 |= useEUCJP;
-#endif
-  charSet = textOutLatin1;
-  if (useASCII7) {
-    charSet = textOutASCII7;
-  } else if (useLatin2) {
-    charSet = textOutLatin2;
-  } else if (useLatin5) {
-    charSet = textOutLatin5;
-  }
-  textOut = new TextOutputDev(textFileName->getCString(), charSet, rawOrder);
+  textOut = new TextOutputDev(textFileName->getCString(), rawOrder, htmlMeta);
   if (textOut->isOk()) {
     doc->displayPages(textOut, firstPage, lastPage, 72, 0, gFalse);
   }
   delete textOut;
 
+  // write end of HTML file
+  if (htmlMeta) {
+    if (!textFileName->cmp("-")) {
+      f = stdout;
+    } else {
+      if (!(f = fopen(textFileName->getCString(), "ab"))) {
+       error(-1, "Couldn't open text file '%s'", textFileName->getCString());
+       goto err3;
+      }
+    }
+    fputs("</pre>\n", f);
+    fputs("</body>\n", f);
+    fputs("</html>\n", f);
+    if (f != stdout) {
+      fclose(f);
+    }
+  }
+
   // clean up
+ err3:
   delete textFileName;
- err:
+ err2:
   delete doc;
-  freeParams();
+  uMap->decRefCnt();
+ err1:
+  delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
@@ -170,3 +255,54 @@ int main(int argc, char *argv[]) {
 
   return 0;
 }
+
+static void printInfoString(FILE *f, Dict *infoDict, char *key,
+                           char *text1, char *text2, UnicodeMap *uMap) {
+  Object obj;
+  GString *s1;
+  GBool isUnicode;
+  Unicode u;
+  char buf[8];
+  int i, n;
+
+  if (infoDict->lookup(key, &obj)->isString()) {
+    fputs(text1, f);
+    s1 = obj.getString();
+    if ((s1->getChar(0) & 0xff) == 0xfe &&
+       (s1->getChar(1) & 0xff) == 0xff) {
+      isUnicode = gTrue;
+      i = 2;
+    } else {
+      isUnicode = gFalse;
+      i = 0;
+    }
+    while (i < obj.getString()->getLength()) {
+      if (isUnicode) {
+       u = ((s1->getChar(i) & 0xff) << 8) |
+           (s1->getChar(i+1) & 0xff);
+       i += 2;
+      } else {
+       u = s1->getChar(i) & 0xff;
+       ++i;
+      }
+      n = uMap->mapUnicode(u, buf, sizeof(buf));
+      fwrite(buf, 1, n, f);
+    }
+    fputs(text2, f);
+  }
+  obj.free();
+}
+
+static void printInfoDate(FILE *f, Dict *infoDict, char *key, char *fmt) {
+  Object obj;
+  char *s;
+
+  if (infoDict->lookup(key, &obj)->isString()) {
+    s = obj.getString()->getCString();
+    if (s[0] == 'D' && s[1] == ':') {
+      s += 2;
+    }
+    fprintf(f, fmt, s);
+  }
+  obj.free();
+}
index 3046fa6bf19d05727d1cffc1b40ab4a5e83458ab..c46f50f1d8efe958e1b2b6335981ef62c09483f5 100644 (file)
@@ -4,45 +4,53 @@ $! Xpdf compile script for VMS.
 $!
 $! Written by Patrick Moreau, Martin P.J. Zinser.
 $!
-$! Copyright 1996 Derek B. Noonburg
+$! Copyright 1996-2002 Glyph & Cog, LLC
 $!
 $!========================================================================
 $!
 $ i = 0
 $ j = 0
-$ APPS = "XPDF,PDFTOPS,PDFTOTEXT,PDFINFO,PDFTOPBM,PDFIMAGES"
+$ APPS = "XPDF,PDFTOPS,PDFTOTEXT,PDFINFO,PDFTOPBM,PDFIMAGES,PDFFONTS"
 $ if f$search("COMMON.OLB").eqs."" then lib/create common.olb
 $!
-$ COMMON_OBJS = "Array.obj,Catalog.obj,Decrypt.obj,Dict.obj,Error.obj," + -
-                "FontEncoding.obj,FontFile.obj,FormWidget.obj,Gfx.obj," + -
-                "GfxFont.obj,GfxState.obj,Lexer.obj,Link.obj,Object.obj," + -
-                "OutputDev.obj,Page.obj,Params.obj,Parser.obj,PDFdoc.obj," + -
-               "Stream.obj,XRef.obj"
+$ COMMON_OBJS = "Annot.obj,Array.obj,BuiltinFont.obj," + - 
+                "BuiltinFontTables.obj,Catalog.obj,CharCodeToUnicode.obj," + - 
+               "CMap.obj,Decrypt.obj,Dict.obj,Error.obj," + -
+                "FontEncodingTables.obj,FontFile.obj," + -
+                "Function.obj,Gfx.obj,GfxFont.obj,GfxState.obj,"+ - 
+               "GlobalParams.obj,Lexer.obj," + -
+                "Link.obj,NameToCharCode.obj,Object.obj,OutputDev.obj," + -
+               "Page.obj,Parser.obj,PDFdoc.obj,PSTokenizer.obj," + -
+                "Stream.obj,UnicodeMap.obj,XRef.obj"
 $ COMMON_LIBS = "[]common.olb/lib,[-.goo]libgoo.olb/lib"
 $!
-$ XPDF_OBJS = "xpdf.obj,LTKOutputDev.obj,PSOutputDev.obj,SFont.obj," + - 
-              "T1Font.obj,TextOutputDev.obj,TTFont.obj,XOutputDev.obj"
+$ XPDF_OBJS = "xpdf.obj,FTFont.obj,LTKOutputDev.obj,PSOutputDev.obj," + -
+              "SFont.obj,T1Font.obj,TextOutputDev.obj,TTFont.obj," + -
+              "XOutputDev.obj"
 $ XPDF_LIBS = "[-.ltk]libltk.olb/lib"
 $!
-$ PDFTOPS_OBJS = "pdftops.obj,PSOutputDev.obj" 
-$ PDFTOPS_LIBS = ""
+$ PDFTOPS_OBJS   = "pdftops.obj,PSOutputDev.obj" 
+$ PDFTOPS_LIBS   = ""
 $!
 $ PDFTOTEXT_OBJS = "pdftotext.obj,TextOutputDev.obj"
 $ PDFTOTEXT_LIBS = ""
 $!
-$ PDFINFO_OBJS =  "pdfinfo.obj"
-$ PDFINFO_LIBS = ""
+$ PDFINFO_OBJS   =  "pdfinfo.obj"
+$ PDFINFO_LIBS   = ""
 $!
-$ PDFTOPBM_OBJS = "pdftopbm.obj,PBMOutputDev.obj,SFont.obj,T1Font.obj," + -
-                  "TextOutputDev.obj,TTFont.obj,XOutputDev.obj"
-$ PDFTOPBM_LIBS = ""
+$ PDFTOPBM_OBJS  = "pdftopbm.obj,FTFont.obj,PBMOutputDev.obj,SFont.obj," + -
+                   "T1Font.obj,TextOutputDev.obj,TTFont.obj,XOutputDev.obj"
+$ PDFTOPBM_LIBS  = ""
 $!
 $ PDFIMAGES_OBJS = "pdfimages.obj,ImageOutputDev.obj"
 $ PDFIMAGES_LIBS = ""
 $!
+$ PDFFONTS_OBJS  = "pdffonts.obj"
+$ PDFFONTS_LIBS  = ""
 $! Build xpdf-ltk.h
-$ def/user sys$input xpdf.ltk
-$ def/user sys$output xpdf-ltk.h
+$ close sys$input 
+$ define/user sys$input xpdf.ltk
+$ define/user sys$output xpdf-ltk.h
 $ run [-.ltk]ltkbuild
 $!
 $COMPILE_CXX_LOOP:
@@ -77,6 +85,7 @@ $ else
 $   LIBS = COMMON_LIBS 
 $ endif
 $ OBJS = 'curr_app'_OBJS
+$ write sys$output "Linking ''curr_app'..."
 $ xpdf_link/exe='curr_app'.exe 'OBJS','libs',[-]xpdf.opt/opt
 $!  
 $ goto BUILD_APPS
index 97c7cc6dc8cf13dd50cfde4afaa9533b58054943..4a249f8989d3b1f46cc62b60e76425910637a187 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xpdf-flip.ltk
 #
-# Copyright 1997 Derek B. Noonburg
+# Copyright 1997-2002 Glyph & Cog, LLC
 #
 #========================================================================
 
@@ -100,9 +100,9 @@ Menu(func:makeMenu title:"xpdf" n:9) {
   MenuItem(text:"Find"         shortcut:"F"     num:menuFind
            select:&menuCbk)
   MenuItem(text:NULL)
-  MenuItem(text:"Rotate left"                   num:menuRotateLeft
+  MenuItem(text:"Rotate counterclockwise"       num:menuRotateCCW
            select:&menuCbk)
-  MenuItem(text:"Rotate right"                  num:menuRotateRight
+  MenuItem(text:"Rotate clockwise"              num:menuRotateCW
            select:&menuCbk)
   MenuItem(text:NULL)
   MenuItem(text:"Quit"         shortcut:"Q"     num:menuQuit
index 01eacdaf0c116ea9dd525aa4380d9b12688d27fa..5665ee7ae1ae5886ac00bf203402baa3c2f42764 100644 (file)
@@ -1,4 +1,4 @@
-// This file was generated by ltkbuild 0.92
+// This file was generated by ltkbuild 1.01
 
 LTKWindow *makeWindow(LTKApp *a) {
   return new LTKWindow(a, gFalse, "xpdf", xpdfIcon, NULL,
@@ -82,8 +82,8 @@ LTKMenu *makeMenu() {
     new LTKMenuItem("Reload", "R", menuReload, &menuCbk, NULL),
     new LTKMenuItem("Save as...", NULL, menuSavePDF, &menuCbk, NULL),
     new LTKMenuItem(NULL, NULL, 0, NULL, NULL),
-    new LTKMenuItem("Rotate left", NULL, menuRotateLeft, &menuCbk, NULL),
-    new LTKMenuItem("Rotate right", NULL, menuRotateRight, &menuCbk, NULL),
+    new LTKMenuItem("Rotate counterclockwise", NULL, menuRotateCCW, &menuCbk, NULL),
+    new LTKMenuItem("Rotate clockwise", NULL, menuRotateCW, &menuCbk, NULL),
     new LTKMenuItem(NULL, NULL, 0, NULL, NULL),
     new LTKMenuItem("Quit", "Q", menuQuit, &menuCbk, NULL)
 
@@ -104,8 +104,8 @@ LTKMenu *makeZoomMenu() {
     new LTKMenuItem("+4", NULL, 4, &zoomMenuCbk, NULL),
     new LTKMenuItem("+5", NULL, 5, &zoomMenuCbk, NULL),
     new LTKMenuItem(NULL, NULL, 0, NULL, NULL),
-    new LTKMenuItem("fit page", NULL, 100, &zoomMenuCbk, NULL),
-    new LTKMenuItem("fit width", NULL, 101, &zoomMenuCbk, NULL)
+    new LTKMenuItem("fit page", "z", 100, &zoomMenuCbk, NULL),
+    new LTKMenuItem("fit width", "w", 101, &zoomMenuCbk, NULL)
 
   );
 }
@@ -223,40 +223,19 @@ LTKWindow *makeFindWindow(LTKApp *a) {
 
 LTKWindow *makeAboutWindow(LTKApp *a) {
   return new LTKWindow(a, gFalse, "About xpdf", NULL, "close",
-    new LTKBox(NULL, 1, 2, 0, 0, 0, 0, ltkBorderNone, 0, 0,
-      new LTKBox(NULL, 1, 11, 2, 2, 2, 2, ltkBorderSunken, 0, 0,
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 0, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, "-*-times-bold-i-normal-*-24-*-*-*-*-*-*-*", "xpdf")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 12, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "Version " xpdfVersion)
+    new LTKBox(NULL, 1, 2, 0, 0, 0, 0, ltkBorderNone, 1, 1,
+      new LTKBox(NULL, 2, 2, 0, 0, 0, 0, ltkBorderNone, 1, 1,
+        new LTKBox(NULL, 1, 1, 2, 2, 2, 2, ltkBorderSunken, 1, 1,
+          new LTKList("list", 0, 400, 30, gFalse, "-*-courier-medium-r-normal-*-12-*-*-*-*-*-*-*")
         ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 0, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, xpdfCopyright)
+        new LTKBox(NULL, 1, 1, 2, 2, 2, 2, ltkBorderNone, 0, 1,
+          new LTKScrollbar("vScrollbar", 0, gTrue, 0, 100, &aboutScrollVertCbk)
         ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 12, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "derekn@foolabs.com")
+        new LTKBox(NULL, 1, 1, 2, 2, 2, 2, ltkBorderNone, 1, 0,
+          new LTKScrollbar("hScrollbar", 0, gFalse, 0, 100, &aboutScrollHorizCbk)
         ),
         new LTKBox(NULL, 1, 1, 2, 2, 2, 2, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "Supports PDF version " supportedPDFVersionStr ".")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 0, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "The PDF data structures, operators, and specification")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 12, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "are copyright 1995 Adobe Systems Inc.")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 0, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "Mouse button 1: select text / follow link")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 0, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "Mouse button 2: pan window")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 12, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "Mouse button 3: menu")
-        ),
-        new LTKBox(NULL, 1, 1, 2, 2, 2, 12, ltkBorderNone, 0, 0,
-          new LTKLabel(NULL, 0, ltkLabelStatic, 8, NULL, "http://www.foolabs.com/xpdf/")
+          new LTKEmpty()
         )
       ),
       new LTKBox(NULL, 2, 1, 0, 0, 0, 0, ltkBorderNone, 0, 0,
index 4d789f2a45259249f9040c3d76630673ba67c7dd..e00a385639e00523ff5ec5e32f23757f79f1a3f7 100644 (file)
@@ -1,8 +1,8 @@
 #========================================================================
 #
-# xpdf.ltk
+# xpdf-top.ltk
 #
-# Copyright 1996 Derek B. Noonburg
+# Copyright 1996-2002 Glyph & Cog, LLC
 #
 #========================================================================
 
@@ -96,9 +96,9 @@ Menu(func:makeMenu title:"xpdf" n:7) {
   MenuItem(text:"Save as..."                    num:menuSavePDF
            select:&menuCbk)
   MenuItem(text:NULL)
-  MenuItem(text:"Rotate left"                   num:menuRotateLeft
+  MenuItem(text:"Rotate counterclockwise"       num:menuRotateCCW
            select:&menuCbk)
-  MenuItem(text:"Rotate right"                  num:menuRotateRight
+  MenuItem(text:"Rotate clockwise"              num:menuRotateCW
            select:&menuCbk)
   MenuItem(text:NULL)
   MenuItem(text:"Quit"         shortcut:"Q"     num:menuQuit
index 90a16f949c72a0113a22fe740f3c9d3dfd89d48c..ff5455031535202237a758ff383dab047c40cfa6 100644 (file)
@@ -2,10 +2,11 @@
 //
 // xpdf.cc
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -19,6 +20,7 @@
 #include "parseargs.h"
 #include "gfile.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "LTKAll.h"
 #include "Object.h"
 #include "Stream.h"
@@ -33,7 +35,6 @@
 #include "LTKOutputDev.h"
 #include "PSOutputDev.h"
 #include "TextOutputDev.h"
-#include "Params.h"
 #include "Error.h"
 #include "config.h"
 
@@ -96,14 +97,14 @@ typedef char *XPointer;
 // misc constants / enums
 //------------------------------------------------------------------------
 
-#define remoteCmdLength 256
+#define remoteCmdLength 512
 
 enum XpdfMenuItem {
   menuOpen,
   menuReload,
   menuSavePDF,
-  menuRotateLeft,
-  menuRotateRight,
+  menuRotateCCW,
+  menuRotateCW,
   menuQuit
 };
 
@@ -113,7 +114,9 @@ enum XpdfMenuItem {
 
 // loadFile / displayPage
 static GBool loadFile(GString *fileName);
-static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist);
+static void displayPage(int page1, int zoomA, int rotateA, GBool addToHist);
+static void displayDest(LinkDest *dest, int zoomA, int rotateA,
+                       GBool addToHist);
 
 // key press and menu callbacks
 static void keyPressCbk(LTKWindow *win1, KeySym key, Guint modifiers,
@@ -177,6 +180,9 @@ static void psButtonCbk(LTKWidget *button, int n, GBool on);
 // "About" window
 static void mapAboutWin();
 static void closeAboutCbk(LTKWidget *button, int n, GBool on);
+static void aboutLayoutCbk(LTKWindow *winA);
+static void aboutScrollVertCbk(LTKWidget *scrollbar, int n, int val);
+static void aboutScrollHorizCbk(LTKWidget *scrollbar, int n, int val);
 
 // "Find" window
 static void findCbk(LTKWidget *button, int n, GBool on);
@@ -188,104 +194,172 @@ static void doFind(char *s);
 static void killCbk(LTKWindow *win1);
 
 //------------------------------------------------------------------------
-// command line options
+// "About" window text
 //------------------------------------------------------------------------
 
-static XrmOptionDescRec opts[] = {
-  {"-display",       ".display",         XrmoptionSepArg,  NULL},
-  {"-foreground",    ".foreground",      XrmoptionSepArg,  NULL},
-  {"-fg",            ".foreground",      XrmoptionSepArg,  NULL},
-  {"-background",    ".background",      XrmoptionSepArg,  NULL},
-  {"-bg",            ".background",      XrmoptionSepArg,  NULL},
-  {"-geometry",      ".geometry",        XrmoptionSepArg,  NULL},
-  {"-g",             ".geometry",        XrmoptionSepArg,  NULL},
-  {"-font",          ".font",            XrmoptionSepArg,  NULL},
-  {"-fn",            ".font",            XrmoptionSepArg,  NULL},
-  {"-title",         ".title",           XrmoptionSepArg,  NULL},
-  {"-cmap",          ".installCmap",     XrmoptionNoArg,   (XPointer)"on"},
-  {"-rgb",           ".rgbCubeSize",     XrmoptionSepArg,  NULL},
-  {"-papercolor",    ".paperColor",      XrmoptionSepArg,  NULL},
-#if JAPANESE_SUPPORT
-  {"-eucjp",         ".eucjp",           XrmoptionNoArg,   (XPointer)"off"},
-#endif
-#if HAVE_T1LIB_H
-  {"-t1lib",         ".t1libControl",    XrmoptionSepArg,  NULL},
-#endif
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  {"-freetype",      ".freeTypeControl", XrmoptionSepArg,  NULL},
-#endif
-  {"-z",             ".initialZoom",     XrmoptionSepArg,  NULL},
-  {"-ps",            ".psFile",          XrmoptionSepArg,  NULL},
-  {"-paperw",        ".psPaperWidth",    XrmoptionSepArg,  NULL},
-  {"-paperh",        ".psPaperHeight",   XrmoptionSepArg,  NULL},
-  {"-level1",        ".psLevel1",        XrmoptionNoArg,   (XPointer)"false"},
-  {NULL}
+static char *aboutWinText[] = {
+  "X     X           d   fff",
+  " X   X            d  f   f",
+  "  X X             d  f",
+  "   X    pppp   dddd ffff",
+  "  X X   p   p d   d  f",
+  " X   X  p   p d   d  f",
+  "X     X pppp   dddd  f      Version " xpdfVersion,
+  "        p",
+  "        p",
+  "        p",
+  "",
+  xpdfCopyright,
+  "",
+  "http://www.foolabs.com/xpdf/",
+  "derekn@foolabs.com",
+  "",
+  "Licensed under the GNU General Public License (GPL).",
+  "See the 'COPYING' file for details.",
+  "",
+  "Supports PDF version " supportedPDFVersionStr ".",
+  "",
+  "The PDF data structures, operators, and specification",
+  "are copyright 1985-2001 Adobe Systems Inc.",
+  "",
+  "Mouse bindings:",
+  "  button 1: select text / follow link",
+  "  button 2: pan window",
+  "  button 3: menu",
+  "",
+  "Key bindings:",
+  "  o              = open file",
+  "  r              = reload",
+  "  f              = find text",
+  "  n = <PgDn>     = next page",
+  "  p = <PgUp>     = previous page",
+  "  <space>        = scroll down",
+  "  <backspace>    = <delete> = scroll up",
+  "  v              = forward (history path)",
+  "  b              = backward (history path)",
+  "  0 / + / -      = zoom zero / in / out",
+  "  z / w          = zoom page / page width",
+  "  ctrl-L         = redraw",
+  "  q              = quit",
+  "  <home> / <end> = top / bottom of page",
+  "  <arrows>       = scroll",
+  "",
+  "For more information, please read the xpdf(1) man page.",
+  NULL
 };
 
-static GBool printVersion = gFalse;
-static GBool printHelp = gFalse;
+//------------------------------------------------------------------------
+// command line options
+//------------------------------------------------------------------------
+
+static char initialZoomStr[32] = "";
+static char t1libControlStr[16] = "";
+static char freetypeControlStr[16] = "";
+static char psFileArg[256];
+static char paperSize[15] = "";
+static int paperWidth = 0;
+static int paperHeight = 0;
+static GBool level1 = gFalse;
+static char textEncName[128] = "";
+static char textEOL[16] = "";
+static char ownerPassword[33] = "";
+static char userPassword[33] = "";
+static GBool fullScreen = gFalse;
 static char remoteName[100] = "xpdf_";
 static GBool doRemoteRaise = gFalse;
 static GBool doRemoteQuit = gFalse;
+static GBool printCommands = gFalse;
+static GBool quiet = gFalse;
+static char cfgFileName[256] = "";
+static GBool printVersion = gFalse;
+static GBool printHelp = gFalse;
 static GBool viKeys = gFalse;
-static char userPassword[33] = "";
-static GBool fullScreen = gFalse;
 
 static ArgDesc argDesc[] = {
-  {"-z",          argStringDummy, NULL,           0,
-   "initial zoom level (-5..5, page, width)"},
   {"-g",          argStringDummy, NULL,           0,
    "initial window geometry"},
   {"-geometry",   argStringDummy, NULL,           0,
    "initial window geometry"},
   {"-title",      argStringDummy, NULL,           0,
    "window title"},
-  {"-remote",     argString,      remoteName + 5, sizeof(remoteName) - 5,
-   "start/contact xpdf remote server with specified name"},
-  {"-raise",      argFlag,        &doRemoteRaise, 0,
-   "raise xpdf remote server window (with -remote only)"},
-  {"-quit",       argFlag,        &doRemoteQuit,  0,
-   "kill xpdf remote server (with -remote only)"},
   {"-cmap",       argFlagDummy,   NULL,           0,
    "install a private colormap"},
   {"-rgb",        argIntDummy,    NULL,           0,
    "biggest RGB cube to allocate (default is 5)"},
+  {"-rv",         argFlagDummy,   NULL,           0,
+   "reverse video"},
   {"-papercolor", argStringDummy, NULL,           0,
    "color of paper background"},
-#if JAPANESE_SUPPORT
-  {"-eucjp",      argStringDummy, NULL,           0,
-   "convert Japanese text to EUC-JP"},
-#endif
+  {"-z",          argString,      initialZoomStr, sizeof(initialZoomStr),
+   "initial zoom level (-5..5, page, width)"},
 #if HAVE_T1LIB_H
-  {"-t1lib",      argStringDummy, NULL,           0,
-   "t1lib font control: none, plain, low, high"},
+  {"-t1lib",      argString,      t1libControlStr, sizeof(t1libControlStr),
+   "t1lib font rasterizer control: none, plain, low, high"},
 #endif
 #if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  {"-freetype",   argStringDummy, NULL,           0,
-   "FreeType font control: none, plain, aa"},
+  {"-freetype",   argString,      freetypeControlStr, sizeof(freetypeControlStr),
+   "FreeType font rasterizer control: none, plain, low, high"},
 #endif
-  {"-ps",         argStringDummy, NULL,           0,
-   "default PostScript file/command name"},
-  {"-paperw",     argIntDummy,    NULL,           0,
+  {"-ps",         argString,      psFileArg,      sizeof(psFileArg),
+   "default PostScript file name or command"},
+  {"-paper",      argString,      paperSize,      sizeof(paperSize),
+   "paper size (letter, legal, A4, A3)"},
+  {"-paperw",     argInt,         &paperWidth,    0,
    "paper width, in points"},
-  {"-paperh",     argIntDummy,    NULL,           0,
+  {"-paperh",     argInt,         &paperHeight,   0,
    "paper height, in points"},
-  {"-level1",     argFlagDummy,   NULL,           0,
+  {"-level1",     argFlag,        &level1,        0,
    "generate Level 1 PostScript"},
+  {"-enc",    argString,   textEncName,    sizeof(textEncName),
+   "output text encoding name"},
+  {"-eol",    argString,   textEOL,        sizeof(textEOL),
+   "output end-of-line convention (unix, dos, or mac)"},
+  {"-opw",        argString,      ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
   {"-upw",        argString,      userPassword,   sizeof(userPassword),
    "user password (for encrypted files)"},
   {"-fullscreen", argFlag,        &fullScreen,    0,
    "run in full-screen (presentation) mode"},
+  {"-remote",     argString,      remoteName + 5, sizeof(remoteName) - 5,
+   "start/contact xpdf remote server with specified name"},
+  {"-raise",      argFlag,        &doRemoteRaise, 0,
+   "raise xpdf remote server window (with -remote only)"},
+  {"-quit",       argFlag,        &doRemoteQuit,  0,
+   "kill xpdf remote server (with -remote only)"},
   {"-cmd",        argFlag,        &printCommands, 0,
    "print commands as they're executed"},
-  {"-q",          argFlag,        &errQuiet,      0,
+  {"-q",          argFlag,        &quiet,         0,
    "don't print any messages or errors"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
   {"-v",          argFlag,        &printVersion,  0,
    "print copyright and version info"},
   {"-h",          argFlag,        &printHelp,     0,
    "print usage information"},
   {"-help",       argFlag,        &printHelp,     0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
+  {NULL}
+};
+
+static XrmOptionDescRec opts[] = {
+  {"-display",       ".display",         XrmoptionSepArg,  NULL},
+  {"-foreground",    ".foreground",      XrmoptionSepArg,  NULL},
+  {"-fg",            ".foreground",      XrmoptionSepArg,  NULL},
+  {"-background",    ".background",      XrmoptionSepArg,  NULL},
+  {"-bg",            ".background",      XrmoptionSepArg,  NULL},
+  {"-geometry",      ".geometry",        XrmoptionSepArg,  NULL},
+  {"-g",             ".geometry",        XrmoptionSepArg,  NULL},
+  {"-font",          ".font",            XrmoptionSepArg,  NULL},
+  {"-fn",            ".font",            XrmoptionSepArg,  NULL},
+  {"-title",         ".title",           XrmoptionSepArg,  NULL},
+  {"-cmap",          ".installCmap",     XrmoptionNoArg,   (XPointer)"on"},
+  {"-rgb",           ".rgbCubeSize",     XrmoptionSepArg,  NULL},
+  {"-rv",            ".reverseVideo",    XrmoptionNoArg,   (XPointer)"true"},
+  {"-papercolor",    ".paperColor",      XrmoptionSepArg,  NULL},
   {NULL}
 };
 
@@ -298,13 +372,12 @@ static ArgDesc argDesc[] = {
 #define maxZoom     5
 #define zoomPage  100
 #define zoomWidth 101
+#define defZoom     1
 static int zoomDPI[maxZoom - minZoom + 1] = {
   29, 35, 42, 50, 60,
   72,
   86, 104, 124, 149, 179
 };
-#define defZoom     1
-#define defZoomStr "1"
 
 static PDFDoc *doc;
 
@@ -338,7 +411,6 @@ static int historyBLen;             // number of valid entries backward from
 static int historyFLen;                // number of valid entries forward from
                                //   current entry
 
-static GString *defPSFileName;
 static GString *psFileName;
 static int psFirstPage, psLastPage;
 
@@ -359,10 +431,13 @@ static LTKLabel *numPagesLabel;
 static LTKLabel *linkLabel;
 static LTKMenuButton *zoomMenuBtn;
 static LTKWindow *aboutWin;
+static LTKList *aboutList;
+static LTKScrollbar *aboutHScrollbar, *aboutVScrollbar;
 static LTKWindow *psDialog;
 static LTKWindow *openDialog;
 static LTKWindow *saveDialog;
 static LTKWindow *findWin;
+static LTKTextIn *findTextIn;
 static Atom remoteAtom;
 static GC selectGC;
 
@@ -393,12 +468,17 @@ int main(int argc, char *argv[]) {
   LTKMenu *menu;
   GString *name;
   GString *title;
+  GString *initialZoom;
+  GBool reverseVideo;
   unsigned long paperColor;
+  GBool installCmap;
+  int rgbCubeSize;
   int pg;
+  GString *destName;
+  LinkDest *dest;
   int x, y;
   Guint width, height;
   double width1, height1;
-  GString *zoomStr;
   GBool ok;
   char s[20];
   int i;
@@ -410,23 +490,60 @@ int main(int argc, char *argv[]) {
   out = NULL;
   remoteAtom = None;
   doc = NULL;
-  xref = NULL;
   psFileName = NULL;
   fileReqDir = getCurrentDir();
   ret = 0;
 
   // parse args
-  paperWidth = paperHeight = -1;
   ok = parseArgs(argDesc, &argc, argv);
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (psFileArg[0]) {
+    globalParams->setPSFile(psFileArg);
+  }
+  if (paperSize[0]) {
+    if (!globalParams->setPSPaperSize(paperSize)) {
+      fprintf(stderr, "Invalid paper size\n");
+    }
+  } else {
+    if (paperWidth) {
+      globalParams->setPSPaperWidth(paperWidth);
+    }
+    if (paperHeight) {
+      globalParams->setPSPaperHeight(paperHeight);
+    }
+  }
+  if (level1) {
+    globalParams->setPSLevel(psLevel1);
+  }
+  if (textEncName[0]) {
+    globalParams->setTextEncoding(textEncName);
+  }
+  if (textEOL[0]) {
+    if (!globalParams->setTextEOL(textEOL)) {
+      fprintf(stderr, "Bad '-eol' value on command line\n");
+    }
+  }
+  if (initialZoomStr[0]) {
+    globalParams->setInitialZoom(initialZoomStr);
+  }
+  if (t1libControlStr[0]) {
+    if (!globalParams->setT1libControl(t1libControlStr)) {
+      fprintf(stderr, "Bad '-t1lib' value on command line\n");
+    }
+  }
+  if (freetypeControlStr[0]) {
+    if (!globalParams->setFreeTypeControl(freetypeControlStr)) {
+      fprintf(stderr, "Bad '-freetype' value on command line\n");
+    }
+  }
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
 
   // create LTKApp (and parse X-related args)
-  app = new LTKApp("xpdf", opts, &argc, argv);
+  app = new LTKApp("xpdf", "Xpdf", opts, &argc, argv);
   app->setKillCbk(&killCbk);
   display = app->getDisplay();
 
@@ -441,19 +558,25 @@ int main(int argc, char *argv[]) {
     fprintf(stderr, "xpdf version %s\n", xpdfVersion);
     fprintf(stderr, "%s\n", xpdfCopyright);
     if (!printVersion) {
-      printUsage("xpdf", "[<PDF-file> [<page>]]", argDesc);
+      printUsage("xpdf", "[<PDF-file> [<page> | +<dest>]]", argDesc);
     }
     ret = 1;
     goto done2;
   }
-  if (argc >= 2)
+  if (argc >= 2) {
     name = new GString(argv[1]);
-  else
+  } else {
     name = NULL;
-  if (argc == 3)
-    pg = atoi(argv[2]);
-  else
-    pg = 1;
+  }
+  pg = 1;
+  destName = NULL;
+  if (argc == 3) {
+    if (argv[2][0] == '+') {
+      destName = new GString(&argv[2][1]);
+    } else {
+      pg = atoi(argv[2]);
+    }
+  }
 
   // look for already-running remote server
   if (remoteName[5]) {
@@ -461,8 +584,14 @@ int main(int argc, char *argv[]) {
     xwin = XGetSelectionOwner(display, remoteAtom);
     if (xwin != None) {
       if (name) {
-       sprintf(cmd, "%c %d %.200s", doRemoteRaise ? 'D' : 'd',
-               pg, name->getCString());
+       if (destName) {
+         sprintf(cmd, "%c +%.256s %.200s", doRemoteRaise ? 'D' : 'd',
+                 destName->getCString(), name->getCString());
+         delete destName;
+       } else {
+         sprintf(cmd, "%c %d %.200s", doRemoteRaise ? 'D' : 'd',
+                 pg, name->getCString());
+       }
        XChangeProperty(display, xwin, remoteAtom, remoteAtom, 8,
                        PropModeReplace, (Guchar *)cmd, strlen(cmd) + 1);
        delete name;
@@ -475,8 +604,12 @@ int main(int argc, char *argv[]) {
       }
       goto done2;
     }
-    if (doRemoteQuit)
+    if (doRemoteQuit) {
+      if (destName) {
+       delete destName;
+      }
       goto done2;
+    }
   }
 
   // no history yet
@@ -486,7 +619,6 @@ int main(int argc, char *argv[]) {
     history[i].fileName = NULL;
 
   // open PDF file
-  defPSFileName = app->getStringResource("psFile", NULL);
   if (name) {
     if (!loadFile(name)) {
       ret = 1;
@@ -497,8 +629,9 @@ int main(int argc, char *argv[]) {
   }
 
   // check for legal page number
-  if (doc && (pg < 1 || pg > doc->getNumPages()))
+  if (doc && (pg < 1 || pg > doc->getNumPages())) {
     pg = 1;
+  }
 
   // create window
   menu = makeMenu();
@@ -529,73 +662,42 @@ int main(int argc, char *argv[]) {
     vScrollbar->setRepeatPeriod(0);
   }
 
+  // get parameters
+  urlCommand = globalParams->getURLCommand();
+
   // get X resources
-  paperWidth = app->getIntResource("psPaperWidth", defPaperWidth);
-  paperHeight = app->getIntResource("psPaperHeight", defPaperHeight);
-  psOutLevel1 = app->getBoolResource("psLevel1", gFalse);
-  urlCommand = app->getStringResource("urlCommand", NULL);
   windowTitle = app->getStringResource("title", NULL);
   installCmap = app->getBoolResource("installCmap", gFalse);
-  if (installCmap)
+  if (installCmap) {
     win->setInstallCmap(gTrue);
+  }
   rgbCubeSize = app->getIntResource("rgbCubeSize", defaultRGBCube);
-  paperColor = app->getColorResource("paperColor", "white",
-                                    WhitePixel(display, app->getScreenNum()),
-                                    NULL);
-#if JAPANESE_SUPPORT
-  useEUCJP = app->getBoolResource("eucjp", gFalse);
-#else
-  useEUCJP = gFalse;
-#endif
-#if HAVE_T1LIB_H
-  t1libControl = app->getStringResource("t1libControl", "low");
-#endif
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  freeTypeControl = app->getStringResource("freeTypeControl", "aa");
-#endif
-  t1Courier = app->getStringResource("t1Courier", NULL);
-  t1CourierBold = app->getStringResource("t1CourierBold", NULL);
-  t1CourierBoldOblique = app->getStringResource("t1CourierBoldOblique", NULL);
-  t1CourierOblique = app->getStringResource("t1CourierOblique", NULL);
-  t1Helvetica = app->getStringResource("t1Helvetica", NULL);
-  t1HelveticaBold = app->getStringResource("t1HelveticaBold", NULL);
-  t1HelveticaBoldOblique =
-    app->getStringResource("t1HelveticaBoldOblique", NULL);
-  t1HelveticaOblique = app->getStringResource("t1HelveticaOblique", NULL);
-  t1Symbol = app->getStringResource("t1Symbol", NULL);
-  t1TimesBold = app->getStringResource("t1TimesBold", NULL);
-  t1TimesBoldItalic = app->getStringResource("t1TimesBoldItalic", NULL);
-  t1TimesItalic = app->getStringResource("t1TimesItalic", NULL);
-  t1TimesRoman = app->getStringResource("t1TimesRoman", NULL);
-  t1ZapfDingbats = app->getStringResource("t1ZapfDingbats", NULL);
-#if JAPANESE_SUPPORT
-  japan12Font = app->getStringResource("japaneseFont", NULL);
-#endif
-#if CHINESE_GB_SUPPORT
-  gb12Font = app->getStringResource("chineseGBFont", NULL);
-#endif
-#if CHINESE_CNS_SUPPORT
-  cns13Font = app->getStringResource("chineseCNSFont", NULL);
-#endif
+  reverseVideo = app->getBoolResource("reverseVideo", gFalse);
+  paperColor = app->getColorResource(
+                 "paperColor",
+                 reverseVideo ? (char *)"black" : (char *)"white",
+                 reverseVideo ? BlackPixel(display, app->getScreenNum())
+                              : WhitePixel(display, app->getScreenNum()),
+                 NULL);
   if (fullScreen) {
     zoom = zoomPage;
   } else {
-    zoomStr = app->getStringResource("initialZoom", defZoomStr);
-    if (!zoomStr->cmp("page")) {
+    initialZoom = globalParams->getInitialZoom();
+    if (!initialZoom->cmp("page")) {
       zoom = zoomPage;
       i = maxZoom - minZoom + 2;
-    } else if (!zoomStr->cmp("width")) {
+    } else if (!initialZoom->cmp("width")) {
       zoom = zoomWidth;
       i = maxZoom - minZoom + 3;
     } else {
-      zoom = atoi(zoomStr->getCString());
-      if (zoom < minZoom)
+      zoom = atoi(initialZoom->getCString());
+      if (zoom < minZoom) {
        zoom = minZoom;
-      else if (zoom > maxZoom)
+      } else if (zoom > maxZoom) {
        zoom = maxZoom;
+      }
       i = zoom - minZoom;
     }
-    delete zoomStr;
     zoomMenuBtn->setInitialMenuItem(zoomMenu->getItem(i));
   }
   viKeys = app->getBoolResource("viKeys", gFalse);
@@ -674,11 +776,25 @@ int main(int argc, char *argv[]) {
   }
 
   // create output device
-  out = new LTKOutputDev(win, paperColor);
-  out->startDoc();
+  out = new LTKOutputDev(win, reverseVideo, paperColor,
+                        installCmap, rgbCubeSize, !fullScreen);
+  out->startDoc(doc ? doc->getXRef() : (XRef *)NULL);
 
   // display first page
-  displayPage(pg, zoom, 0, gTrue);
+  if (destName) {
+    if (doc) {
+      if ((dest = doc->findDest(destName))) {
+       displayDest(dest, zoom, 0, gTrue);
+       delete dest;
+      } else {
+       error(-1, "Unknown named destination '%s'", destName->getCString());
+       displayPage(1, zoom, 0, gTrue);
+      }
+    }
+    delete destName;
+  } else {
+    displayPage(pg, zoom, 0, gTrue);
+  }
 
   // event loop
   quit = gFalse;
@@ -714,107 +830,34 @@ int main(int argc, char *argv[]) {
   if (psFileName) {
     delete psFileName;
   }
-  if (defPSFileName) {
-    delete defPSFileName;
-  }
   if (fileReqDir) {
     delete fileReqDir;
   }
-  if (urlCommand) {
-    delete urlCommand;
-  }
   if (windowTitle) {
     delete windowTitle;
   }
-#if HAVE_T1LIB_H
-  if (t1libControl) {
-    delete t1libControl;
-  }
-#endif
-#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-  if (freeTypeControl) {
-    delete freeTypeControl;
-  }
-#endif
-  if (t1Courier) {
-    delete t1Courier;
-  }
-  if (t1CourierBold) {
-    delete t1CourierBold;
-  }
-  if (t1CourierBoldOblique) {
-    delete t1CourierBoldOblique;
-  }
-  if (t1CourierOblique) {
-    delete t1CourierOblique;
-  }
-  if (t1Helvetica) {
-    delete t1Helvetica;
-  }
-  if (t1HelveticaBold) {
-    delete t1HelveticaBold;
-  }
-  if (t1HelveticaBoldOblique) {
-    delete t1HelveticaBoldOblique;
-  }
-  if (t1HelveticaOblique) {
-    delete t1HelveticaOblique;
-  }
-  if (t1Symbol) {
-    delete t1Symbol;
-  }
-  if (t1TimesBold) {
-    delete t1TimesBold;
-  }
-  if (t1TimesBoldItalic) {
-    delete t1TimesBoldItalic;
-  }
-  if (t1TimesItalic) {
-    delete t1TimesItalic;
-  }
-  if (t1TimesRoman) {
-    delete t1TimesRoman;
-  }
-  if (t1ZapfDingbats) {
-    delete t1ZapfDingbats;
-  }
-#if JAPANESE_SUPPORT
-  if (japan12Font) {
-    delete japan12Font;
-  }
-#endif
-#if CHINESE_GB_SUPPORT
-  if (gb12Font) {
-    delete gb12Font;
-  }
-#endif
-#if CHINESE_CNS_SUPPORT
-  if (cns13Font) {
-    delete cns13Font;
-  }
-#endif
   for (i = 0; i < historySize; ++i) {
     if (history[i].fileName) {
       delete history[i].fileName;
     }
   }
-  freeParams();
+  delete globalParams;
 
   // check for memory leaks
-  Object::memCheck(errFile ? errFile : stderr);
-  gMemReport(errFile ? errFile : stderr);
+  Object::memCheck(stderr);
+  gMemReport(stderr);
 
   return ret;
 }
 
 //------------------------------------------------------------------------
-// loadFile / displayPage
+// loadFile / displayPage / displayDest
 //------------------------------------------------------------------------
 
 static GBool loadFile(GString *fileName) {
   GString *title;
   PDFDoc *newDoc;
-  GString *userPW;
+  GString *ownerPW, *userPW;
   char s[20];
   char *p;
 
@@ -823,15 +866,23 @@ static GBool loadFile(GString *fileName) {
     win->setBusyCursor(gTrue);
 
   // open PDF file
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
   if (userPassword[0]) {
     userPW = new GString(userPassword);
   } else {
     userPW = NULL;
   }
-  newDoc = new PDFDoc(fileName, userPW);
+  newDoc = new PDFDoc(fileName, ownerPW, userPW, printCommands);
   if (userPW) {
     delete userPW;
   }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!newDoc->isOk()) {
     delete newDoc;
     if (win)
@@ -843,8 +894,9 @@ static GBool loadFile(GString *fileName) {
   if (doc)
     delete doc;
   doc = newDoc;
-  if (out)
-    out->startDoc();
+  if (out) {
+    out->startDoc(doc->getXRef());
+  }
 
   // nothing displayed yet
   page = -99;
@@ -855,8 +907,8 @@ static GBool loadFile(GString *fileName) {
   // init PostScript output params
   if (psFileName)
     delete psFileName;
-  if (defPSFileName) {
-    psFileName = defPSFileName->copy();
+  if (globalParams->getPSFile()) {
+    psFileName = globalParams->getPSFile()->copy();
   } else {
     p = fileName->getCString() + fileName->getLength() - 4;
     if (!strcmp(p, ".pdf") || !strcmp(p, ".PDF"))
@@ -887,7 +939,7 @@ static GBool loadFile(GString *fileName) {
   return gTrue;
 }
 
-static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist) {
+static void displayPage(int pageA, int zoomA, int rotateA, GBool addToHist) {
   time_t modTime1;
   double hDPI, vDPI, dpi;
   int rot;
@@ -902,8 +954,8 @@ static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist) {
   modTime1 = getModTime(doc->getFileName()->getCString());
   if (modTime1 != modTime) {
     if (loadFile(doc->getFileName()->copy())) {
-      if (page1 > doc->getNumPages()) {
-       page1 = doc->getNumPages();
+      if (pageA > doc->getNumPages()) {
+       pageA = doc->getNumPages();
       }
     }
     modTime = modTime1;
@@ -914,9 +966,9 @@ static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist) {
     win->setBusyCursor(gTrue);
 
   // new page/zoom/rotate values
-  page = page1;
-  zoom = zoom1;
-  rotate = rotate1;
+  page = pageA;
+  zoom = zoomA;
+  rotate = rotateA;
 
   // initialize mouse-related stuff
   linkAction = NULL;
@@ -945,18 +997,18 @@ static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist) {
     dpi = (hDPI < vDPI) ? hDPI : vDPI;
   } else if (zoom == zoomPage) {
     if (rot == 90 || rot == 270) {
-      hDPI = ((win->getWidth() - 28) / doc->getPageHeight(page)) * 72;
-      vDPI = ((win->getHeight() - 56) / doc->getPageWidth(page)) * 72;
+      hDPI = (canvas->getWidth() / doc->getPageHeight(page)) * 72;
+      vDPI = (canvas->getHeight() / doc->getPageWidth(page)) * 72;
     } else {
-      hDPI = ((win->getWidth() - 28) / doc->getPageWidth(page)) * 72;
-      vDPI = ((win->getHeight() - 56) / doc->getPageHeight(page)) * 72;
+      hDPI = (canvas->getWidth() / doc->getPageWidth(page)) * 72;
+      vDPI = (canvas->getHeight() / doc->getPageHeight(page)) * 72;
     }
     dpi = (hDPI < vDPI) ? hDPI : vDPI;
   } else if (zoom == zoomWidth) {
     if (rot == 90 || rot == 270) {
-      dpi = ((win->getWidth() - 28) / doc->getPageHeight(page)) * 72;
+      dpi = (canvas->getWidth() / doc->getPageHeight(page)) * 72;
     } else {
-      dpi = ((win->getWidth() - 28) / doc->getPageWidth(page)) * 72;
+      dpi = (canvas->getWidth() / doc->getPageWidth(page)) * 72;
     }
   } else {
     dpi = zoomDPI[zoom - minZoom];
@@ -988,6 +1040,75 @@ static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist) {
   win->setBusyCursor(gFalse);
 }
 
+static void displayDest(LinkDest *dest, int zoomA, int rotateA,
+                       GBool addToHist) {
+  Ref pageRef;
+  int pg;
+  int dx, dy;
+
+  if (dest->isPageRef()) {
+    pageRef = dest->getPageRef();
+    pg = doc->findPage(pageRef.num, pageRef.gen);
+  } else {
+    pg = dest->getPageNum();
+  }
+  if (pg <= 0 || pg > doc->getNumPages()) {
+    pg = 1;
+  }
+  if (pg != page) {
+    displayPage(pg, zoomA, rotateA, addToHist);
+  }
+
+  if (fullScreen) {
+    return;
+  }
+  switch (dest->getKind()) {
+  case destXYZ:
+    out->cvtUserToDev(dest->getLeft(), dest->getTop(), &dx, &dy);
+    if (dest->getChangeLeft() || dest->getChangeTop()) {
+      if (dest->getChangeLeft()) {
+       hScrollbar->setPos(dx, canvas->getWidth());
+      }
+      if (dest->getChangeTop()) {
+       vScrollbar->setPos(dy, canvas->getHeight());
+      }
+      canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    }
+    //~ what is the zoom parameter?
+    break;
+  case destFit:
+  case destFitB:
+    //~ do fit
+    hScrollbar->setPos(0, canvas->getWidth());
+    vScrollbar->setPos(0, canvas->getHeight());
+    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    break;
+  case destFitH:
+  case destFitBH:
+    //~ do fit
+    out->cvtUserToDev(0, dest->getTop(), &dx, &dy);
+    hScrollbar->setPos(0, canvas->getWidth());
+    vScrollbar->setPos(dy, canvas->getHeight());
+    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    break;
+  case destFitV:
+  case destFitBV:
+    //~ do fit
+    out->cvtUserToDev(dest->getLeft(), 0, &dx, &dy);
+    hScrollbar->setPos(dx, canvas->getWidth());
+    vScrollbar->setPos(0, canvas->getHeight());
+    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    break;
+  case destFitR:
+    //~ do fit
+    out->cvtUserToDev(dest->getLeft(), dest->getTop(), &dx, &dy);
+    hScrollbar->setPos(dx, canvas->getWidth());
+    vScrollbar->setPos(dy, canvas->getHeight());
+    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    break;
+  }
+}
+
 //------------------------------------------------------------------------
 // key press and menu callbacks
 //------------------------------------------------------------------------
@@ -1039,6 +1160,19 @@ static void keyPressCbk(LTKWindow *win1, KeySym key, Guint modifiers,
        canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
       }
       break;
+    case 'v':
+      forwardCbk(NULL, 0, gTrue);
+      break;
+    case 'b':
+      backCbk(NULL, 0, gTrue);
+      break;
+    case 'g':
+      if (fullScreen) {
+       break;
+      }
+      pageNumText->selectAll();
+      pageNumText->activate(gTrue);
+      break;
     case 'h':                  // vi-style left
       if (fullScreen) {
        break;
@@ -1075,6 +1209,42 @@ static void keyPressCbk(LTKWindow *win1, KeySym key, Guint modifiers,
        canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
       }
       break;
+    case '0':
+      if (fullScreen) {
+       break;
+      }
+      if (zoom != defZoom) {
+       zoomMenuBtn->setMenuItem(zoomMenu->getItem(defZoom - minZoom));
+      }
+      break;
+    case '+':
+      if (fullScreen) {
+       break;
+      }
+      if (zoom >= minZoom && zoom < maxZoom) {
+       zoomMenuBtn->setMenuItem(zoomMenu->getItem(zoom + 1 - minZoom));
+      }
+      break;
+    case '-':
+      if (fullScreen) {
+       break;
+      }
+      if (zoom > minZoom && zoom <= maxZoom) {
+       zoomMenuBtn->setMenuItem(zoomMenu->getItem(zoom - 1 - minZoom));
+      }
+      break;
+    case 'z':
+      if (fullScreen) {
+       break;
+      }
+      zoomMenuBtn->setMenuItem(zoomMenu->getItem(maxZoom - minZoom + 2));
+      break;
+    case 'w':
+      if (fullScreen) {
+       break;
+      }
+      zoomMenuBtn->setMenuItem(zoomMenu->getItem(maxZoom - minZoom + 3));
+      break;
     case '\014':               // ^L
       win->redraw();
       displayPage(page, zoom, rotate, gFalse);
@@ -1180,13 +1350,13 @@ static void menuCbk(LTKMenuItem *item) {
     if (doc)
       mapSaveDialog();
     break;
-  case menuRotateLeft:
+  case menuRotateCCW:
     if (doc) {
       r = (rotate == 0) ? 270 : rotate - 90;
       displayPage(page, zoom, r, gFalse);
     }
     break;
-  case menuRotateRight:
+  case menuRotateCW:
     if (doc) {
       r = (rotate == 270) ? 0 : rotate + 90;
       displayPage(page, zoom, r, gFalse);
@@ -1204,13 +1374,53 @@ static void menuCbk(LTKMenuItem *item) {
 
 static void buttonPressCbk(LTKWidget *canvas1, int n,
                           int mx, int my, int button, GBool dblClick) {
-  if (!doc || doc->getNumPages() == 0)
+  if (!doc || doc->getNumPages() == 0) {
     return;
-  if (button == 1) {
+  }
+  switch (button) {
+  case 1:
     setSelection(mx, my, mx, my);
-  } else if (!fullScreen && button == 2) {
-    panMX = mx - hScrollbar->getPos();
-    panMY = my - vScrollbar->getPos();
+    break;
+  case 2:
+    if (!fullScreen) {
+      panMX = mx - hScrollbar->getPos();
+      panMY = my - vScrollbar->getPos();
+    }
+    break;
+  case 4: // mouse wheel up
+    if (fullScreen) {
+      gotoPrevPage(1, gTrue, gFalse);
+    } else if (vScrollbar->getPos() == 0) {
+      gotoPrevPage(1, gFalse, gTrue);
+    } else {
+      vScrollbar->setPos(vScrollbar->getPos() - 16, canvas->getHeight());
+      canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    }
+    break;
+  case 5: // mouse wheel down
+    if (fullScreen ||
+       vScrollbar->getPos() >=
+       canvas->getRealHeight() - canvas->getHeight()) {
+      gotoNextPage(1, gTrue);
+    } else {
+      vScrollbar->setPos(vScrollbar->getPos() + 16, canvas->getHeight());
+      canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    }
+    break;
+  case 6: // second mouse wheel right
+    if (fullScreen) {
+      return;
+    }
+    hScrollbar->setPos(hScrollbar->getPos() + 16, canvas->getWidth());
+    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    break;
+  case 7: // second mouse wheel left
+    if (fullScreen) {
+      return;
+    }
+    hScrollbar->setPos(hScrollbar->getPos() - 16, canvas->getWidth());
+    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    break;
   }
 }
 
@@ -1249,10 +1459,7 @@ static void doLink(int mx, int my) {
   char *s;
   GString *fileName;
   GString *actionName;
-  Ref pageRef;
-  int pg;
   double x, y;
-  int dx, dy;
   LTKButtonDialog *dialog;
   int i;
 
@@ -1297,68 +1504,13 @@ static void doLink(int mx, int my) {
        dest = doc->findDest(namedDest);
        delete namedDest;
       }
-      if (!dest) {
-       if (kind == actionGoToR)
-         displayPage(1, zoom, 0, gTrue);
+      if (dest) {
+       displayDest(dest, zoom, rotate, gTrue);
+       delete dest;
       } else {
-       if (dest->isPageRef()) {
-         pageRef = dest->getPageRef();
-         pg = doc->findPage(pageRef.num, pageRef.gen);
-       } else {
-         pg = dest->getPageNum();
-       }
-       if (pg > 0 && pg != page)
-         displayPage(pg, zoom, rotate, gTrue);
-       else if (pg <= 0)
-         displayPage(1, zoom, rotate, gTrue);
-       if (fullScreen) {
-         delete dest;
-         break;
-       }
-       switch (dest->getKind()) {
-       case destXYZ:
-         out->cvtUserToDev(dest->getLeft(), dest->getTop(), &dx, &dy);
-         if (dest->getChangeLeft() || dest->getChangeTop()) {
-           if (dest->getChangeLeft())
-             hScrollbar->setPos(dx, canvas->getWidth());
-           if (dest->getChangeTop())
-             vScrollbar->setPos(dy, canvas->getHeight());
-           canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
-         }
-         //~ what is the zoom parameter?
-         break;
-       case destFit:
-       case destFitB:
-         //~ do fit
-         hScrollbar->setPos(0, canvas->getWidth());
-         vScrollbar->setPos(0, canvas->getHeight());
-         canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
-         break;
-       case destFitH:
-       case destFitBH:
-         //~ do fit
-         out->cvtUserToDev(0, dest->getTop(), &dx, &dy);
-         hScrollbar->setPos(0, canvas->getWidth());
-         vScrollbar->setPos(dy, canvas->getHeight());
-         canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
-         break;
-       case destFitV:
-       case destFitBV:
-         //~ do fit
-         out->cvtUserToDev(dest->getLeft(), 0, &dx, &dy);
-         hScrollbar->setPos(dx, canvas->getWidth());
-         vScrollbar->setPos(0, canvas->getHeight());
-         canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
-         break;
-       case destFitR:
-         //~ do fit
-         out->cvtUserToDev(dest->getLeft(), dest->getTop(), &dx, &dy);
-         hScrollbar->setPos(dx, canvas->getWidth());
-         vScrollbar->setPos(dy, canvas->getHeight());
-         canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
-         break;
+       if (kind == actionGoToR) {
+         displayPage(1, zoom, 0, gTrue);
        }
-       delete dest;
       }
       break;
 
@@ -1443,8 +1595,7 @@ static void doLink(int mx, int my) {
        system(fileName->getCString());
        delete fileName;
       } else {
-       fprintf(errFile, "URI: %s\n",
-               ((LinkURI *)action)->getURI()->getCString());
+       printf("URI: %s\n", ((LinkURI *)action)->getURI()->getCString());
       }
       break;
 
@@ -1631,7 +1782,7 @@ static void gotoNextPage(int inc, GBool top) {
   if (page < doc->getNumPages()) {
     if (top && !fullScreen) {
       vScrollbar->setPos(0, canvas->getHeight());
-      canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+      canvas->setScrollPos(hScrollbar->getPos(), vScrollbar->getPos());
     }
     if ((pg = page + inc) > doc->getNumPages()) {
       pg = doc->getNumPages();
@@ -1659,7 +1810,7 @@ static void gotoPrevPage(int dec, GBool top, GBool bottom) {
   if (page > 1) {
     if (top && !fullScreen) {
       vScrollbar->setPos(0, canvas->getHeight());
-      canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+      canvas->setScrollPos(hScrollbar->getPos(), vScrollbar->getPos());
     } else if (bottom && !fullScreen) {
       vScrollbar->setPos(canvas->getRealHeight() - canvas->getHeight(),
                         canvas->getHeight());
@@ -1798,19 +1949,23 @@ static void propChangeCbk(LTKWindow *win1, Atom atom) {
   Atom type;
   int format;
   Gulong size, remain;
-  char *p;
+  char *p, *q;
   GString *newFileName;
   int newPage;
+  GString *destName;
+  LinkDest *dest;
 
   // get command
   xwin = win1->getXWindow();
   if (XGetWindowProperty(display, xwin, remoteAtom,
                         0, remoteCmdLength/4, True, remoteAtom,
                         &type, &format, &size, &remain,
-                        (Guchar **)&cmd) != Success)
+                        (Guchar **)&cmd) != Success) {
     return;
-  if (size == 0)
+  }
+  if (size == 0) {
     return;
+  }
 
   // raise window
   if (cmd[0] == 'D' || cmd[0] == 'r'){
@@ -1821,10 +1976,22 @@ static void propChangeCbk(LTKWindow *win1, Atom atom) {
   // display file / page
   if (cmd[0] == 'd' || cmd[0] == 'D') {
     p = cmd + 2;
-    newPage = atoi(p);
-    if (!(p = strchr(p, ' ')))
+    q = strchr(p, ' ');
+    if (!q) {
+      return;
+    }
+    *q++ = '\0';
+    newPage = 1;
+    destName = NULL;
+    if (*p == '+') {
+      destName = new GString(p + 1);
+    } else {
+      newPage = atoi(p);
+    }
+    if (!q) {
       return;
-    newFileName = new GString(p + 1);
+    }
+    newFileName = new GString(q);
     XFree((XPointer)cmd);
     if (!doc || newFileName->cmp(doc->getFileName())) {
       if (!loadFile(newFileName))
@@ -1832,8 +1999,16 @@ static void propChangeCbk(LTKWindow *win1, Atom atom) {
     } else {
       delete newFileName;
     }
-    if (newPage != page && newPage >= 1 && newPage <= doc->getNumPages())
+    if (destName) {
+      if ((dest = doc->findDest(destName))) {
+       displayDest(dest, zoom, rotate, gTrue);
+       delete dest;
+      }
+      delete destName;
+    } else if (newPage != page &&
+              newPage >= 1 && newPage <= doc->getNumPages()) {
       displayPage(newPage, zoom, rotate, gTrue);
+    }
 
   // quit
   } else if (cmd[0] == 'q') {
@@ -1993,8 +2168,10 @@ static void openSelectCbk(LTKWidget *widget, int n, GString *name) {
     openDialog = NULL;
   }
   if (loadFile(name1)) {
-    vScrollbar->setPos(0, canvas->getHeight());
-    canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    if (!fullScreen) {
+      vScrollbar->setPos(0, canvas->getHeight());
+      canvas->scroll(hScrollbar->getPos(), vScrollbar->getPos());
+    }
     displayPage(1, zoom, rotate, gTrue);
   }
 }
@@ -2122,8 +2299,9 @@ static void psButtonCbk(LTKWidget *button, int n, GBool on) {
     psDialog->setBusyCursor(gTrue);
     win->setBusyCursor(gTrue);
     if (doc->okToPrint()) {
-      psOut = new PSOutputDev(psFileName->getCString(), doc->getCatalog(),
-                             psFirstPage, psLastPage, gTrue, gFalse);
+      psOut = new PSOutputDev(psFileName->getCString(), doc->getXRef(),
+                             doc->getCatalog(), psFirstPage, psLastPage,
+                             psModePS);
       if (psOut->isOk()) {
        doc->displayPages(psOut, psFirstPage, psLastPage, 72, 0, gFalse);
       }
@@ -2146,10 +2324,19 @@ static void psButtonCbk(LTKWidget *button, int n, GBool on) {
 //------------------------------------------------------------------------
 
 static void mapAboutWin() {
+  int i;
+
   if (aboutWin) {
     aboutWin->raise();
   } else {
     aboutWin = makeAboutWindow(app);
+    aboutWin->setLayoutCbk(&aboutLayoutCbk);
+    aboutList = (LTKList *)aboutWin->findWidget("list");
+    aboutHScrollbar = (LTKScrollbar *)aboutWin->findWidget("hScrollbar");
+    aboutVScrollbar = (LTKScrollbar *)aboutWin->findWidget("vScrollbar");
+    for (i = 0; aboutWinText[i]; ++i) {
+      aboutList->addLine(aboutWinText[i]);
+    }
     aboutWin->layout(-1, -1, -1, -1);
     aboutWin->map();
   }
@@ -2160,6 +2347,24 @@ static void closeAboutCbk(LTKWidget *button, int n, GBool on) {
   aboutWin = NULL;
 }
 
+static void aboutLayoutCbk(LTKWindow *winA) {
+  aboutHScrollbar->setLimits(0, aboutList->getMaxWidth() - 1);
+  aboutHScrollbar->setPos(aboutHScrollbar->getPos(), aboutList->getWidth());
+  aboutVScrollbar->setLimits(0, aboutList->getNumLines() - 1);
+  aboutVScrollbar->setPos(aboutVScrollbar->getPos(),
+                         aboutList->getDisplayedLines());
+}
+
+static void aboutScrollVertCbk(LTKWidget *scrollbar, int n, int val) {
+  aboutList->scrollTo(val, aboutHScrollbar->getPos());
+  XSync(display, False);
+}
+
+static void aboutScrollHorizCbk(LTKWidget *scrollbar, int n, int val) {
+  aboutList->scrollTo(aboutVScrollbar->getPos(), val);
+  XSync(display, False);
+}
+
 //------------------------------------------------------------------------
 // "Find" window
 //------------------------------------------------------------------------
@@ -2177,17 +2382,16 @@ static void mapFindWin() {
     findWin = makeFindWindow(app);
     findWin->layout(-1, -1, -1, -1);
     findWin->map();
+    findTextIn = (LTKTextIn *)findWin->findWidget("text");
   }
+  findTextIn->activate(gTrue);
 }
 
 static void findButtonCbk(LTKWidget *button, int n, GBool on) {
-  LTKTextIn *textIn;
-
   if (!doc || doc->getNumPages() == 0)
     return;
   if (n == 1) {
-    textIn = (LTKTextIn *)findWin->findWidget("text");
-    doFind(textIn->getText()->getCString());
+    doFind(findTextIn->getText()->getCString());
   } else {
     delete findWin;
     findWin = NULL;
@@ -2195,12 +2399,14 @@ static void findButtonCbk(LTKWidget *button, int n, GBool on) {
 }
 
 static void doFind(char *s) {
+  Unicode *u;
   TextOutputDev *textOut;
   int xMin, yMin, xMax, yMax;
   double xMin1, yMin1, xMax1, yMax1;
   int pg;
   GBool top;
   GString *s1;
+  int len, i;
 
   // check for zero-length string
   if (!s[0]) {
@@ -2212,6 +2418,15 @@ static void doFind(char *s) {
   win->setBusyCursor(gTrue);
   findWin->setBusyCursor(gTrue);
 
+  // convert to Unicode
+#if 1 //~ should do something more intelligent here
+  len = strlen(s);
+  u = (Unicode *)gmalloc(len * sizeof(Unicode));
+  for (i = 0; i < len; ++i) {
+    u[i] = (Unicode)(s[i] & 0xff);
+  }
+#endif
+
   // search current page starting at current selection or top of page
   xMin = yMin = xMax = yMax = 0;
   if (selectXMin < selectXMax && selectYMin < selectYMax) {
@@ -2221,28 +2436,31 @@ static void doFind(char *s) {
   } else {
     top = gTrue;
   }
-  if (out->findText(s, top, gTrue, &xMin, &yMin, &xMax, &yMax))
+  if (out->findText(u, len, top, gTrue, &xMin, &yMin, &xMax, &yMax)) {
     goto found;
+  }
 
   // search following pages
-  textOut = new TextOutputDev(NULL,
-                             useEUCJP ? textOutASCII7 : textOutLatin1,
-                             gFalse);
+  textOut = new TextOutputDev(NULL, gFalse, gFalse);
   if (!textOut->isOk()) {
     delete textOut;
     goto done;
   }
   for (pg = page+1; pg <= doc->getNumPages(); ++pg) {
     doc->displayPage(textOut, pg, 72, 0, gFalse);
-    if (textOut->findText(s, gTrue, gTrue, &xMin1, &yMin1, &xMax1, &yMax1))
+    if (textOut->findText(u, len, gTrue, gTrue,
+                         &xMin1, &yMin1, &xMax1, &yMax1)) {
       goto foundPage;
+    }
   }
 
   // search previous pages
   for (pg = 1; pg < page; ++pg) {
     doc->displayPage(textOut, pg, 72, 0, gFalse);
-    if (textOut->findText(s, gTrue, gTrue, &xMin1, &yMin1, &xMax1, &yMax1))
+    if (textOut->findText(u, len, gTrue, gTrue,
+                         &xMin1, &yMin1, &xMax1, &yMax1)) {
       goto foundPage;
+    }
   }
   delete textOut;
 
@@ -2250,8 +2468,9 @@ static void doFind(char *s) {
   if (selectXMin < selectXMax && selectYMin < selectYMax) {
     xMax = selectXMin;
     yMax = (selectYMin + selectYMax) / 2;
-    if (out->findText(s, gTrue, gFalse, &xMin, &yMin, &xMax, &yMax))
+    if (out->findText(u, len, gTrue, gFalse, &xMin, &yMin, &xMax, &yMax)) {
       goto found;
+    }
   }
 
   // not found
@@ -2262,8 +2481,10 @@ static void doFind(char *s) {
  foundPage:
   delete textOut;
   displayPage(pg, zoom, rotate, gTrue);
-  if (!out->findText(s, gTrue, gTrue, &xMin, &yMin, &xMax, &yMax))
-    goto done; // this can happen if coalescing is bad
+  if (!out->findText(u, len, gTrue, gTrue, &xMin, &yMin, &xMax, &yMax)) {
+    // this can happen if coalescing is bad
+    goto done;
+  }
 
   // found: change the selection
  found:
@@ -2276,6 +2497,8 @@ static void doFind(char *s) {
 #endif
 
  done:
+  gfree(u);
+
   // reset cursors to normal
   win->setBusyCursor(gFalse);
   findWin->setBusyCursor(gFalse);
index 91a5247dc95782f4ccb1e0ba1a7ad942c10c8176..1e210327f4a50e4ea03bd03fa0c3a1a489315de8 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xpdf.ltk
 #
-# Copyright 1996 Derek B. Noonburg
+# Copyright 1996-2002 Glyph & Cog, LLC
 #
 #========================================================================
 
@@ -111,9 +111,9 @@ Menu(func:makeMenu title:"xpdf" n:8) {
   MenuItem(text:"Save as..."                    num:menuSavePDF
            select:&menuCbk)
   MenuItem(text:NULL)
-  MenuItem(text:"Rotate left"                   num:menuRotateLeft
+  MenuItem(text:"Rotate counterclockwise"       num:menuRotateCCW
            select:&menuCbk)
-  MenuItem(text:"Rotate right"                  num:menuRotateRight
+  MenuItem(text:"Rotate clockwise"              num:menuRotateCW
            select:&menuCbk)
   MenuItem(text:NULL)
   MenuItem(text:"Quit"         shortcut:"Q"     num:menuQuit
@@ -137,8 +137,8 @@ Menu(func:makeZoomMenu title:"zoom" n:14) {
   MenuItem(text:"+4" num: 4 select:&zoomMenuCbk)
   MenuItem(text:"+5" num: 5 select:&zoomMenuCbk)
   MenuItem(text:NULL)
-  MenuItem(text:"fit page"  num:100 select:&zoomMenuCbk)
-  MenuItem(text:"fit width" num:101 select:&zoomMenuCbk)
+  MenuItem(text:"fit page"  shortcut:"z" num:100 select:&zoomMenuCbk)
+  MenuItem(text:"fit width" shortcut:"w" num:101 select:&zoomMenuCbk)
 }
 
 #------------------------------------------------------------------------
@@ -243,42 +243,21 @@ Window(func:makeFindWindow defWidget:"find" title:"xpdf: Find") {
 #------------------------------------------------------------------------
 
 Window(func:makeAboutWindow defWidget:"close" title:"About xpdf") {
-  Box(x:1 y:2) {
-    Box(x:1 y:11 left:2 right:2 top:2 bottom:2 sunken) {
-      Box1(bottom:0) {
-        Label(text:"xpdf"
-              font:"-*-times-bold-i-normal-*-24-*-*-*-*-*-*-*")
-      }
-      Box1(bottom:12) {
-        Label(text:["Version " xpdfVersion])
-      }
-      Box1(bottom:0) {
-        Label(text:xpdfCopyright)
-      }
-      Box1(bottom:12) {
-        Label(text:"derekn@foolabs.com")
-      }
-      Box1(bottom:2) {
-        Label(text:["Supports PDF version " supportedPDFVersionStr "."])
-      }
-      Box1(bottom:0) {
-        Label(text:"The PDF data structures, operators, and specification")
-      }
-      Box1(bottom:12) {
-        Label(text:"are copyright 1995 Adobe Systems Inc.")
-      }
-      Box1(bottom:0) {
-        Label(text:"Mouse button 1: select text / follow link")
-      }
-      Box1(bottom:0) {
-        Label(text:"Mouse button 2: pan window")
+  Box(x:1 y:2 xfill:1 yfill:1) {
+    Box(x:2 y:2 xfill:1 yfill:1) {
+      Box1(xfill:1 yfill:1 sunken) {
+        List(name:"list" w:400 h:30
+             font:"-*-courier-medium-r-normal-*-12-*-*-*-*-*-*-*")
       }
-      Box1(bottom:12) {
-        Label(text:"Mouse button 3: menu")
+      Box1(yfill:1) {
+        Scrollbar(name:"vScrollbar" vert min:0 max:100
+                  move:&aboutScrollVertCbk)
       }
-      Box1(bottom:12) {
-        Label(text:"http://www.foolabs.com/xpdf/")
+      Box1(xfill:1) {
+        Scrollbar(name:"hScrollbar" horiz min:0 max:100
+                  move:&aboutScrollHorizCbk)
       }
+      Box1() { Empty() }
     }
     Box(x:2 y:1) {
       Box1(xfill:1) { Empty() }
index eb56cb4d7ab85c77bbd8a41eb8a059e45f68a638..c814b88550b945781b17b9fd3979f378a51a719d 100644 (file)
@@ -2,7 +2,7 @@
 //
 // config.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 #define CONFIG_H
 
 //------------------------------------------------------------------------
-// general constants
+// version
 //------------------------------------------------------------------------
 
 // xpdf version
-#define xpdfVersion "0.92.1"
+
+#define xpdfVersion "1.01.1"
 
 // supported PDF version
-#define supportedPDFVersionStr "1.3"
-#define supportedPDFVersionNum 1.3
+#define supportedPDFVersionStr "1.4"
+#define supportedPDFVersionNum 1.4
 
 // copyright notice
-#define xpdfCopyright "Copyright 1996-2000 Derek B. Noonburg"
+#define xpdfCopyright "Copyright 1996-2002 Glyph & Cog, LLC"
+
+//------------------------------------------------------------------------
+// paper size
+//------------------------------------------------------------------------
 
 // default paper size (in points) for PostScript output
 #ifdef A4_PAPER
 #define defPaperHeight 792
 #endif
 
-// config file name
-#if defined(VMS)
-#define xpdfConfigFile "xpdfrc"
+//------------------------------------------------------------------------
+// config file (xpdfrc) path
+//------------------------------------------------------------------------
+
+// user config file name, relative to the user's home directory
+#if defined(VMS) || (defined(WIN32) && !defined(__CYGWIN32__))
+#define xpdfUserConfigFile "xpdfrc"
 #else
-#define xpdfConfigFile ".xpdfrc"
+#define xpdfUserConfigFile ".xpdfrc"
+#endif
+
+// system config file name (set via the configure script)
+#ifdef SYSTEM_XPDFRC
+#define xpdfSysConfigFile SYSTEM_XPDFRC
+#else
+// under Windows, we get the directory with the executable and then
+// append this file name
+#define xpdfSysConfigFile "xpdfrc"
 #endif
 
 //------------------------------------------------------------------------
 // default maximum size of color cube to allocate
 #define defaultRGBCube 5
 
-// number of X server fonts to cache
-#define serverFontCacheSize 16
-
-// number of Type 1 (t1lib) fonts to cache
-#define t1FontCacheSize 32
+// number of fonts (combined t1lib, FreeType, X server) to cache
+#define xOutFontCacheSize 64
 
-// number of TrueType (FreeType) fonts to cache
-#define ttFontCacheSize 32
+// number of Type 3 fonts to cache
+#define xOutT3FontCacheSize 8
 
 //------------------------------------------------------------------------
 // popen
@@ -64,7 +79,7 @@
 #define pclose _pclose
 #endif
 
-#if defined(VMS) || defined(VMCMS) || defined(DOS) || defined(OS2) || defined(WIN32) || defined(__DJGPP__) || defined(__CYGWIN32) || defined(MACOS)
+#if defined(VMS) || defined(VMCMS) || defined(DOS) || defined(OS2) || defined(__EMX__) || defined(WIN32) || defined(__DJGPP__) || defined(__CYGWIN32__) || defined(MACOS)
 #define POPEN_READ_MODE "rb"
 #else
 #define POPEN_READ_MODE "r"