[PATCH 4/6] libport: Add support for compatibility decomposition.

Huw Davies huw at codeweavers.com
Fri Feb 8 04:41:25 CST 2019


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/kernel32/tests/locale.c |   12 +-
 libs/port/decompose.c        | 1308 +++++++++++++++++++++++++++++++++-
 tools/make_unicode           |  150 +++-
 3 files changed, 1452 insertions(+), 18 deletions(-)

diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index 851da7febf..1e25122c23 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -5703,16 +5703,16 @@ static void test_NormalizeString(void)
         { part0_str10, { part0_str10, part0_nfd10, part0_str10, part0_nfd10 }, { 1, 0, 1, 0 } },
         { part0_str11, { part0_str11, part0_nfd11, part0_str11, part0_nfd11 }, { 1, 0, 1, 0 } },
         { part0_str12, { part0_nfc12, part0_nfd12, part0_nfc12, part0_nfd12 }, { 1, 0, 1, 0 } },
-        { part1_str1, { part1_str1, part1_str1, part1_nfkc1, part1_nfkc1 }, { 1, 0, 1, 1 } },
-        { part1_str2, { part1_str2, part1_str2, part1_nfkc2, part1_nfkc2 }, { 1, 0, 1, 1 } },
+        { part1_str1, { part1_str1, part1_str1, part1_nfkc1, part1_nfkc1 }, { 1, 0, 1, 0 } },
+        { part1_str2, { part1_str2, part1_str2, part1_nfkc2, part1_nfkc2 }, { 1, 0, 1, 0 } },
         { part1_str3, { part1_str3, part1_nfd3, part1_str3, part1_nfd3 }, { 1, 0, 1, 0 } },
-        { part1_str4, { part1_str4, part1_str4, part1_nfkc4, part1_nfkc4 }, { 1, 0, 1, 1 } },
+        { part1_str4, { part1_str4, part1_str4, part1_nfkc4, part1_nfkc4 }, { 1, 0, 1, 0 } },
         { part1_str5, { part1_str5, part1_nfd5, part1_str5, part1_nfd5 }, { 1, 0, 1, 0 } },
         { part1_str6, { part1_str6, part1_nfd6, part1_str6, part1_nfd6 }, { 1, 0, 1, 0 } },
-        { part1_str7, { part1_str7, part1_str7, part1_nfkc7, part1_nfkc7 }, { 1, 0, 1, 1 } },
+        { part1_str7, { part1_str7, part1_str7, part1_nfkc7, part1_nfkc7 }, { 1, 0, 1, 0 } },
         { part1_str8, { part1_str8, part1_nfd8, part1_str8, part1_nfd8 }, { 1, 0, 1, 0 } },
-        { part1_str9, { part1_str9, part1_str9, part1_nfkc9, part1_nfkc9 }, { 1, 0, 1, 1 } },
-        { part1_str10, { part1_str10, part1_str10, part1_nfkc10, part1_nfkc10 }, { 1, 0, 1, 1 } },
+        { part1_str9, { part1_str9, part1_str9, part1_nfkc9, part1_nfkc9 }, { 1, 0, 1, 0 } },
+        { part1_str10, { part1_str10, part1_str10, part1_nfkc10, part1_nfkc10 }, { 1, 0, 1, 0 } },
         { 0 }
     };
     const struct test_data_normal *ptest = test_arr;
diff --git a/libs/port/decompose.c b/libs/port/decompose.c
index c7568a01ea..c46906921a 100644
--- a/libs/port/decompose.c
+++ b/libs/port/decompose.c
@@ -747,15 +747,1311 @@ static const WCHAR table[4704] =
     0x05d1, 0x05bf, 0x05db, 0x05bf, 0x05e4, 0x05bf, 0x0000, 0x0000
 };
 
+static const WCHAR compatmap_table[8152] =
+{
+    /* index */
+    0x0110, 0x0120, 0x0130, 0x0140, 0x0100, 0x0150, 0x0160, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0170, 0x0180,
+    0x0190, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x01a0, 0x01b0, 0x01c0,
+    0x01d0, 0x01e0, 0x01f0, 0x0100, 0x0200, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0210, 0x0100, 0x0220, 0x0230, 0x0240, 0x0250,
+    0x0260, 0x0270, 0x0280, 0x0290, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x02a0, 0x02b0,
+    0x0100, 0x0100, 0x0100, 0x02c0, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x02d0, 0x02e0, 0x02f0, 0x0300, 0x0310,
+    /* null sub-index */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 00 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0330, 0x0340, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 01 */
+    0x0320, 0x0320, 0x0320, 0x0350, 0x0360, 0x0320, 0x0320, 0x0370,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0380, 0x0320, 0x0320, 0x0390,
+    /* sub-index 02 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x03a0, 0x0320, 0x03b0, 0x03c0, 0x0320,
+    /* sub-index 03 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x03d0,
+    0x03e0, 0x0320, 0x0320, 0x0320, 0x0320, 0x03f0, 0x0320, 0x0400,
+    /* sub-index 05 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0410, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 06 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0420,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 0e */
+    0x0320, 0x0320, 0x0320, 0x0430, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0440, 0x0320, 0x0450, 0x0320, 0x0320,
+    /* sub-index 0f */
+    0x0460, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0470,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 10 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0480,
+    /* sub-index 1d */
+    0x0320, 0x0320, 0x0490, 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x04e0,
+    0x0320, 0x04f0, 0x0500, 0x0510, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 1e */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0520, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 1f */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0530, 0x0540, 0x0320, 0x0320, 0x0550,
+    /* sub-index 20 */
+    0x0560, 0x0570, 0x0580, 0x0590, 0x05a0, 0x05b0, 0x0320, 0x05c0,
+    0x05d0, 0x05e0, 0x05f0, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 21 */
+    0x0600, 0x0610, 0x0620, 0x0630, 0x0640, 0x0650, 0x0660, 0x0670,
+    0x0680, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 22 */
+    0x0320, 0x0320, 0x0690, 0x06a0, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 24 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x06b0, 0x06c0,
+    0x06d0, 0x06e0, 0x06f0, 0x0700, 0x0710, 0x0720, 0x0730, 0x0320,
+    /* sub-index 2a */
+    0x0740, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0750,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 2c */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0760,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 2d */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0770, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 2e */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0780, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0790,
+    /* sub-index 2f */
+    0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, 0x07f0, 0x0800, 0x0810,
+    0x0820, 0x0830, 0x0840, 0x0850, 0x0860, 0x0870, 0x0320, 0x0320,
+    /* sub-index 30 */
+    0x0880, 0x0320, 0x0320, 0x0890, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x08a0, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x08b0,
+    /* sub-index 31 */
+    0x0320, 0x0320, 0x0320, 0x08c0, 0x08d0, 0x08e0, 0x08f0, 0x0900,
+    0x0910, 0x0920, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index 32 */
+    0x0930, 0x0940, 0x0950, 0x0960, 0x0970, 0x0980, 0x0990, 0x09a0,
+    0x09b0, 0x09c0, 0x09d0, 0x09e0, 0x09f0, 0x0a00, 0x0a10, 0x0a20,
+    /* sub-index 33 */
+    0x0a30, 0x0a40, 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0,
+    0x0ab0, 0x0ac0, 0x0ad0, 0x0ae0, 0x0af0, 0x0b00, 0x0b10, 0x0b20,
+    /* sub-index a6 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    0x0320, 0x0b30, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index a7 */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0b40,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0b50,
+    /* sub-index ab */
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0b60, 0x0320, 0x0320,
+    0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320,
+    /* sub-index fb */
+    0x0b70, 0x0b80, 0x0b90, 0x0320, 0x0ba0, 0x0bb0, 0x0bc0, 0x0bd0,
+    0x0be0, 0x0bf0, 0x0c00, 0x0c10, 0x0320, 0x0c20, 0x0c30, 0x0c40,
+    /* sub-index fc */
+    0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0cc0,
+    0x0cd0, 0x0ce0, 0x0cf0, 0x0d00, 0x0d10, 0x0d20, 0x0d30, 0x0d40,
+    /* sub-index fd */
+    0x0d50, 0x0d60, 0x0d70, 0x0d80, 0x0320, 0x0d90, 0x0da0, 0x0db0,
+    0x0dc0, 0x0dd0, 0x0de0, 0x0df0, 0x0e00, 0x0320, 0x0320, 0x0e10,
+    /* sub-index fe */
+    0x0320, 0x0e20, 0x0320, 0x0e30, 0x0e40, 0x0e50, 0x0e60, 0x0e70,
+    0x0e80, 0x0e90, 0x0ea0, 0x0eb0, 0x0ec0, 0x0ed0, 0x0ee0, 0x0ef0,
+    /* sub-index ff */
+    0x0f00, 0x0f10, 0x0f20, 0x0f30, 0x0f40, 0x0f50, 0x0f60, 0x0f70,
+    0x0f80, 0x0f90, 0x0fa0, 0x0fb0, 0x0fc0, 0x0fd0, 0x0fe0, 0x0320,
+    /* null offsets */
+    0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1,
+    0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1,
+    /* offsets 0x00a0 .. 0x00af */
+    0x0ff1, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2,
+    0x0ff2, 0x0ff4, 0x0ff4, 0x0ff5, 0x0ff5, 0x0ff5, 0x0ff5, 0x0ff5,
+    /* offsets 0x00b0 .. 0x00bf */
+    0x0ff7, 0x0ff7, 0x0ff7, 0x0ff8, 0x0ff9, 0x0ffb, 0x0ffc, 0x0ffc,
+    0x0ffc, 0x0ffe, 0x0fff, 0x1000, 0x1000, 0x1003, 0x1006, 0x1009,
+    /* offsets 0x0130 .. 0x013f */
+    0x1009, 0x1009, 0x1009, 0x100b, 0x100d, 0x100d, 0x100d, 0x100d,
+    0x100d, 0x100d, 0x100d, 0x100d, 0x100d, 0x100d, 0x100d, 0x100d,
+    /* offsets 0x0140 .. 0x014f */
+    0x100f, 0x1011, 0x1011, 0x1011, 0x1011, 0x1011, 0x1011, 0x1011,
+    0x1011, 0x1011, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013,
+    /* offsets 0x0170 .. 0x017f */
+    0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013,
+    0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013,
+    /* offsets 0x01c0 .. 0x01cf */
+    0x1014, 0x1014, 0x1014, 0x1014, 0x1014, 0x1016, 0x1018, 0x101a,
+    0x101c, 0x101e, 0x1020, 0x1022, 0x1024, 0x1026, 0x1026, 0x1026,
+    /* offsets 0x01f0 .. 0x01ff */
+    0x1026, 0x1026, 0x1028, 0x102a, 0x102c, 0x102c, 0x102c, 0x102c,
+    0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c,
+    /* offsets 0x02b0 .. 0x02bf */
+    0x102c, 0x102d, 0x102e, 0x102f, 0x1030, 0x1031, 0x1032, 0x1033,
+    0x1034, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035,
+    /* offsets 0x02d0 .. 0x02df */
+    0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035,
+    0x1035, 0x1037, 0x1039, 0x103b, 0x103d, 0x103f, 0x1041, 0x1041,
+    /* offsets 0x02e0 .. 0x02ef */
+    0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1046, 0x1046,
+    0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046,
+    /* offsets 0x0370 .. 0x037f */
+    0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046,
+    0x1046, 0x1046, 0x1046, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048,
+    /* offsets 0x0380 .. 0x038f */
+    0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x104a, 0x104a, 0x104a,
+    0x104a, 0x104a, 0x104a, 0x104a, 0x104a, 0x104a, 0x104a, 0x104a,
+    /* offsets 0x03d0 .. 0x03df */
+    0x104a, 0x104b, 0x104c, 0x104d, 0x104d, 0x104d, 0x104e, 0x104f,
+    0x104f, 0x104f, 0x104f, 0x104f, 0x104f, 0x104f, 0x104f, 0x104f,
+    /* offsets 0x03f0 .. 0x03ff */
+    0x104f, 0x1050, 0x1051, 0x1052, 0x1052, 0x1053, 0x1054, 0x1054,
+    0x1054, 0x1054, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055,
+    /* offsets 0x0580 .. 0x058f */
+    0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055,
+    0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057,
+    /* offsets 0x0670 .. 0x067f */
+    0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1059, 0x105b,
+    0x105d, 0x105f, 0x105f, 0x105f, 0x105f, 0x105f, 0x105f, 0x105f,
+    /* offsets 0x0e30 .. 0x0e3f */
+    0x105f, 0x105f, 0x105f, 0x105f, 0x1061, 0x1061, 0x1061, 0x1061,
+    0x1061, 0x1061, 0x1061, 0x1061, 0x1061, 0x1061, 0x1061, 0x1061,
+    /* offsets 0x0eb0 .. 0x0ebf */
+    0x1061, 0x1061, 0x1061, 0x1061, 0x1063, 0x1063, 0x1063, 0x1063,
+    0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063,
+    /* offsets 0x0ed0 .. 0x0edf */
+    0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063,
+    0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1065, 0x1067, 0x1067,
+    /* offsets 0x0f00 .. 0x0f0f */
+    0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1067,
+    0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1068, 0x1068, 0x1068,
+    /* offsets 0x0f70 .. 0x0f7f */
+    0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068,
+    0x106a, 0x106a, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c,
+    /* offsets 0x10f0 .. 0x10ff */
+    0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c,
+    0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106d, 0x106d, 0x106d,
+    /* offsets 0x1d20 .. 0x1d2f */
+    0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106d,
+    0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106e, 0x106f, 0x1070,
+    /* offsets 0x1d30 .. 0x1d3f */
+    0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075, 0x1076, 0x1077,
+    0x1078, 0x1079, 0x107a, 0x107b, 0x107b, 0x107c, 0x107d, 0x107e,
+    /* offsets 0x1d40 .. 0x1d4f */
+    0x107f, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
+    0x1087, 0x1088, 0x1089, 0x108a, 0x108b, 0x108c, 0x108d, 0x108d,
+    /* offsets 0x1d50 .. 0x1d5f */
+    0x108e, 0x108f, 0x1090, 0x1091, 0x1092, 0x1093, 0x1094, 0x1095,
+    0x1096, 0x1097, 0x1098, 0x1099, 0x109a, 0x109b, 0x109c, 0x109d,
+    /* offsets 0x1d60 .. 0x1d6f */
+    0x109e, 0x109f, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5,
+    0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9,
+    /* offsets 0x1d70 .. 0x1d7f */
+    0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9,
+    0x10a9, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa,
+    /* offsets 0x1d90 .. 0x1d9f */
+    0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa,
+    0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae,
+    /* offsets 0x1da0 .. 0x1daf */
+    0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6,
+    0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be,
+    /* offsets 0x1db0 .. 0x1dbf */
+    0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c6,
+    0x10c7, 0x10c8, 0x10c9, 0x10ca, 0x10cb, 0x10cc, 0x10cd, 0x10ce,
+    /* offsets 0x1e90 .. 0x1e9f */
+    0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf,
+    0x10cf, 0x10cf, 0x10cf, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1,
+    /* offsets 0x1fb0 .. 0x1fbf */
+    0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1,
+    0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d3, 0x10d3,
+    /* offsets 0x1fc0 .. 0x1fcf */
+    0x10d5, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7,
+    0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7,
+    /* offsets 0x1ff0 .. 0x1fff */
+    0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7,
+    0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d9,
+    /* offsets 0x2000 .. 0x200f */
+    0x10d9, 0x10d9, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de,
+    0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2,
+    /* offsets 0x2010 .. 0x201f */
+    0x10e2, 0x10e2, 0x10e3, 0x10e3, 0x10e3, 0x10e3, 0x10e3, 0x10e3,
+    0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5,
+    /* offsets 0x2020 .. 0x202f */
+    0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e6, 0x10e8, 0x10eb,
+    0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb,
+    /* offsets 0x2030 .. 0x203f */
+    0x10ec, 0x10ec, 0x10ec, 0x10ec, 0x10ee, 0x10f1, 0x10f1, 0x10f3,
+    0x10f6, 0x10f6, 0x10f6, 0x10f6, 0x10f6, 0x10f8, 0x10f8, 0x10fa,
+    /* offsets 0x2040 .. 0x204f */
+    0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa,
+    0x10fc, 0x10fe, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    /* offsets 0x2050 .. 0x205f */
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1104, 0x1104, 0x1104, 0x1104, 0x1104, 0x1104, 0x1104, 0x1104,
+    /* offsets 0x2070 .. 0x207f */
+    0x1105, 0x1106, 0x1107, 0x1107, 0x1107, 0x1108, 0x1109, 0x110a,
+    0x110b, 0x110c, 0x110d, 0x110e, 0x110f, 0x1110, 0x1111, 0x1112,
+    /* offsets 0x2080 .. 0x208f */
+    0x1113, 0x1114, 0x1115, 0x1116, 0x1117, 0x1118, 0x1119, 0x111a,
+    0x111b, 0x111c, 0x111d, 0x111e, 0x111f, 0x1120, 0x1121, 0x1122,
+    /* offsets 0x2090 .. 0x209f */
+    0x1122, 0x1123, 0x1124, 0x1125, 0x1126, 0x1127, 0x1128, 0x1129,
+    0x112a, 0x112b, 0x112c, 0x112d, 0x112e, 0x112f, 0x112f, 0x112f,
+    /* offsets 0x20a0 .. 0x20af */
+    0x112f, 0x112f, 0x112f, 0x112f, 0x112f, 0x112f, 0x112f, 0x112f,
+    0x112f, 0x1131, 0x1131, 0x1131, 0x1131, 0x1131, 0x1131, 0x1131,
+    /* offsets 0x2100 .. 0x210f */
+    0x1131, 0x1134, 0x1137, 0x1138, 0x113a, 0x113a, 0x113d, 0x1140,
+    0x1141, 0x1141, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, 0x1148,
+    /* offsets 0x2110 .. 0x211f */
+    0x1149, 0x114a, 0x114b, 0x114c, 0x114d, 0x114d, 0x114e, 0x1150,
+    0x1150, 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1155,
+    /* offsets 0x2120 .. 0x212f */
+    0x1155, 0x1157, 0x115a, 0x115c, 0x115c, 0x115d, 0x115d, 0x115d,
+    0x115d, 0x115e, 0x115e, 0x115e, 0x115e, 0x115f, 0x1160, 0x1160,
+    /* offsets 0x2130 .. 0x213f */
+    0x1161, 0x1162, 0x1163, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167,
+    0x1168, 0x1169, 0x116a, 0x116a, 0x116d, 0x116e, 0x116f, 0x1170,
+    /* offsets 0x2140 .. 0x214f */
+    0x1171, 0x1172, 0x1172, 0x1172, 0x1172, 0x1172, 0x1173, 0x1174,
+    0x1175, 0x1176, 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, 0x1177,
+    /* offsets 0x2150 .. 0x215f */
+    0x1177, 0x117a, 0x117d, 0x1181, 0x1184, 0x1187, 0x118a, 0x118d,
+    0x1190, 0x1193, 0x1196, 0x1199, 0x119c, 0x119f, 0x11a2, 0x11a5,
+    /* offsets 0x2160 .. 0x216f */
+    0x11a7, 0x11a8, 0x11aa, 0x11ad, 0x11af, 0x11b0, 0x11b2, 0x11b5,
+    0x11b9, 0x11bb, 0x11bc, 0x11be, 0x11c1, 0x11c2, 0x11c3, 0x11c4,
+    /* offsets 0x2170 .. 0x217f */
+    0x11c5, 0x11c6, 0x11c8, 0x11cb, 0x11cd, 0x11ce, 0x11d0, 0x11d3,
+    0x11d7, 0x11d9, 0x11da, 0x11dc, 0x11df, 0x11e0, 0x11e1, 0x11e2,
+    /* offsets 0x2180 .. 0x218f */
+    0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3,
+    0x11e3, 0x11e3, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6,
+    /* offsets 0x2220 .. 0x222f */
+    0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6,
+    0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e8, 0x11eb, 0x11eb,
+    /* offsets 0x2230 .. 0x223f */
+    0x11ed, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0,
+    0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0,
+    /* offsets 0x2460 .. 0x246f */
+    0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, 0x11f7,
+    0x11f8, 0x11f9, 0x11fb, 0x11fd, 0x11ff, 0x1201, 0x1203, 0x1205,
+    /* offsets 0x2470 .. 0x247f */
+    0x1207, 0x1209, 0x120b, 0x120d, 0x120f, 0x1212, 0x1215, 0x1218,
+    0x121b, 0x121e, 0x1221, 0x1224, 0x1227, 0x122a, 0x122e, 0x1232,
+    /* offsets 0x2480 .. 0x248f */
+    0x1236, 0x123a, 0x123e, 0x1242, 0x1246, 0x124a, 0x124e, 0x1252,
+    0x1256, 0x1258, 0x125a, 0x125c, 0x125e, 0x1260, 0x1262, 0x1264,
+    /* offsets 0x2490 .. 0x249f */
+    0x1266, 0x1268, 0x126b, 0x126e, 0x1271, 0x1274, 0x1277, 0x127a,
+    0x127d, 0x1280, 0x1283, 0x1286, 0x1289, 0x128c, 0x128f, 0x1292,
+    /* offsets 0x24a0 .. 0x24af */
+    0x1295, 0x1298, 0x129b, 0x129e, 0x12a1, 0x12a4, 0x12a7, 0x12aa,
+    0x12ad, 0x12b0, 0x12b3, 0x12b6, 0x12b9, 0x12bc, 0x12bf, 0x12c2,
+    /* offsets 0x24b0 .. 0x24bf */
+    0x12c5, 0x12c8, 0x12cb, 0x12ce, 0x12d1, 0x12d4, 0x12d7, 0x12d8,
+    0x12d9, 0x12da, 0x12db, 0x12dc, 0x12dd, 0x12de, 0x12df, 0x12e0,
+    /* offsets 0x24c0 .. 0x24cf */
+    0x12e1, 0x12e2, 0x12e3, 0x12e4, 0x12e5, 0x12e6, 0x12e7, 0x12e8,
+    0x12e9, 0x12ea, 0x12eb, 0x12ec, 0x12ed, 0x12ee, 0x12ef, 0x12f0,
+    /* offsets 0x24d0 .. 0x24df */
+    0x12f1, 0x12f2, 0x12f3, 0x12f4, 0x12f5, 0x12f6, 0x12f7, 0x12f8,
+    0x12f9, 0x12fa, 0x12fb, 0x12fc, 0x12fd, 0x12fe, 0x12ff, 0x1300,
+    /* offsets 0x24e0 .. 0x24ef */
+    0x1301, 0x1302, 0x1303, 0x1304, 0x1305, 0x1306, 0x1307, 0x1308,
+    0x1309, 0x130a, 0x130b, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c,
+    /* offsets 0x2a00 .. 0x2a0f */
+    0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c,
+    0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x1310, 0x1310, 0x1310,
+    /* offsets 0x2a70 .. 0x2a7f */
+    0x1310, 0x1310, 0x1310, 0x1310, 0x1310, 0x1313, 0x1315, 0x1318,
+    0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318,
+    /* offsets 0x2c70 .. 0x2c7f */
+    0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318,
+    0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1319, 0x131a, 0x131a,
+    /* offsets 0x2d60 .. 0x2d6f */
+    0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a,
+    0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a,
+    /* offsets 0x2e90 .. 0x2e9f */
+    0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b,
+    0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b,
+    /* offsets 0x2ef0 .. 0x2eff */
+    0x131c, 0x131c, 0x131c, 0x131c, 0x131d, 0x131d, 0x131d, 0x131d,
+    0x131d, 0x131d, 0x131d, 0x131d, 0x131d, 0x131d, 0x131d, 0x131d,
+    /* offsets 0x2f00 .. 0x2f0f */
+    0x131d, 0x131e, 0x131f, 0x1320, 0x1321, 0x1322, 0x1323, 0x1324,
+    0x1325, 0x1326, 0x1327, 0x1328, 0x1329, 0x132a, 0x132b, 0x132c,
+    /* offsets 0x2f10 .. 0x2f1f */
+    0x132d, 0x132e, 0x132f, 0x1330, 0x1331, 0x1332, 0x1333, 0x1334,
+    0x1335, 0x1336, 0x1337, 0x1338, 0x1339, 0x133a, 0x133b, 0x133c,
+    /* offsets 0x2f20 .. 0x2f2f */
+    0x133d, 0x133e, 0x133f, 0x1340, 0x1341, 0x1342, 0x1343, 0x1344,
+    0x1345, 0x1346, 0x1347, 0x1348, 0x1349, 0x134a, 0x134b, 0x134c,
+    /* offsets 0x2f30 .. 0x2f3f */
+    0x134d, 0x134e, 0x134f, 0x1350, 0x1351, 0x1352, 0x1353, 0x1354,
+    0x1355, 0x1356, 0x1357, 0x1358, 0x1359, 0x135a, 0x135b, 0x135c,
+    /* offsets 0x2f40 .. 0x2f4f */
+    0x135d, 0x135e, 0x135f, 0x1360, 0x1361, 0x1362, 0x1363, 0x1364,
+    0x1365, 0x1366, 0x1367, 0x1368, 0x1369, 0x136a, 0x136b, 0x136c,
+    /* offsets 0x2f50 .. 0x2f5f */
+    0x136d, 0x136e, 0x136f, 0x1370, 0x1371, 0x1372, 0x1373, 0x1374,
+    0x1375, 0x1376, 0x1377, 0x1378, 0x1379, 0x137a, 0x137b, 0x137c,
+    /* offsets 0x2f60 .. 0x2f6f */
+    0x137d, 0x137e, 0x137f, 0x1380, 0x1381, 0x1382, 0x1383, 0x1384,
+    0x1385, 0x1386, 0x1387, 0x1388, 0x1389, 0x138a, 0x138b, 0x138c,
+    /* offsets 0x2f70 .. 0x2f7f */
+    0x138d, 0x138e, 0x138f, 0x1390, 0x1391, 0x1392, 0x1393, 0x1394,
+    0x1395, 0x1396, 0x1397, 0x1398, 0x1399, 0x139a, 0x139b, 0x139c,
+    /* offsets 0x2f80 .. 0x2f8f */
+    0x139d, 0x139e, 0x139f, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4,
+    0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac,
+    /* offsets 0x2f90 .. 0x2f9f */
+    0x13ad, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4,
+    0x13b5, 0x13b6, 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc,
+    /* offsets 0x2fa0 .. 0x2faf */
+    0x13bd, 0x13be, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4,
+    0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc,
+    /* offsets 0x2fb0 .. 0x2fbf */
+    0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4,
+    0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc,
+    /* offsets 0x2fc0 .. 0x2fcf */
+    0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4,
+    0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec,
+    /* offsets 0x2fd0 .. 0x2fdf */
+    0x13ed, 0x13ee, 0x13ef, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f3,
+    0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3,
+    /* offsets 0x3000 .. 0x300f */
+    0x13f3, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4,
+    0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4,
+    /* offsets 0x3030 .. 0x303f */
+    0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f5,
+    0x13f5, 0x13f6, 0x13f7, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8,
+    /* offsets 0x3090 .. 0x309f */
+    0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8,
+    0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13fa, 0x13fc, 0x13fc, 0x13fc,
+    /* offsets 0x30f0 .. 0x30ff */
+    0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe,
+    0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe,
+    /* offsets 0x3130 .. 0x313f */
+    0x1400, 0x1400, 0x1401, 0x1402, 0x1403, 0x1404, 0x1405, 0x1406,
+    0x1407, 0x1408, 0x1409, 0x140a, 0x140b, 0x140c, 0x140d, 0x140e,
+    /* offsets 0x3140 .. 0x314f */
+    0x140f, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 0x1415, 0x1416,
+    0x1417, 0x1418, 0x1419, 0x141a, 0x141b, 0x141c, 0x141d, 0x141e,
+    /* offsets 0x3150 .. 0x315f */
+    0x141f, 0x1420, 0x1421, 0x1422, 0x1423, 0x1424, 0x1425, 0x1426,
+    0x1427, 0x1428, 0x1429, 0x142a, 0x142b, 0x142c, 0x142d, 0x142e,
+    /* offsets 0x3160 .. 0x316f */
+    0x142f, 0x1430, 0x1431, 0x1432, 0x1433, 0x1434, 0x1435, 0x1436,
+    0x1437, 0x1438, 0x1439, 0x143a, 0x143b, 0x143c, 0x143d, 0x143e,
+    /* offsets 0x3170 .. 0x317f */
+    0x143f, 0x1440, 0x1441, 0x1442, 0x1443, 0x1444, 0x1445, 0x1446,
+    0x1447, 0x1448, 0x1449, 0x144a, 0x144b, 0x144c, 0x144d, 0x144e,
+    /* offsets 0x3180 .. 0x318f */
+    0x144f, 0x1450, 0x1451, 0x1452, 0x1453, 0x1454, 0x1455, 0x1456,
+    0x1457, 0x1458, 0x1459, 0x145a, 0x145b, 0x145c, 0x145d, 0x145e,
+    /* offsets 0x3190 .. 0x319f */
+    0x145e, 0x145e, 0x145e, 0x145f, 0x1460, 0x1461, 0x1462, 0x1463,
+    0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469, 0x146a, 0x146b,
+    /* offsets 0x3200 .. 0x320f */
+    0x146c, 0x146f, 0x1472, 0x1475, 0x1478, 0x147b, 0x147e, 0x1481,
+    0x1484, 0x1487, 0x148a, 0x148d, 0x1490, 0x1493, 0x1496, 0x149a,
+    /* offsets 0x3210 .. 0x321f */
+    0x149e, 0x14a2, 0x14a6, 0x14aa, 0x14ae, 0x14b2, 0x14b6, 0x14ba,
+    0x14be, 0x14c2, 0x14c6, 0x14ca, 0x14ce, 0x14d2, 0x14d9, 0x14df,
+    /* offsets 0x3220 .. 0x322f */
+    0x14df, 0x14e2, 0x14e5, 0x14e8, 0x14eb, 0x14ee, 0x14f1, 0x14f4,
+    0x14f7, 0x14fa, 0x14fd, 0x1500, 0x1503, 0x1506, 0x1509, 0x150c,
+    /* offsets 0x3230 .. 0x323f */
+    0x150f, 0x1512, 0x1515, 0x1518, 0x151b, 0x151e, 0x1521, 0x1524,
+    0x1527, 0x152a, 0x152d, 0x1530, 0x1533, 0x1536, 0x1539, 0x153c,
+    /* offsets 0x3240 .. 0x324f */
+    0x153f, 0x1542, 0x1545, 0x1548, 0x154b, 0x154c, 0x154d, 0x154e,
+    0x154f, 0x154f, 0x154f, 0x154f, 0x154f, 0x154f, 0x154f, 0x154f,
+    /* offsets 0x3250 .. 0x325f */
+    0x154f, 0x1552, 0x1554, 0x1556, 0x1558, 0x155a, 0x155c, 0x155e,
+    0x1560, 0x1562, 0x1564, 0x1566, 0x1568, 0x156a, 0x156c, 0x156e,
+    /* offsets 0x3260 .. 0x326f */
+    0x1570, 0x1571, 0x1572, 0x1573, 0x1574, 0x1575, 0x1576, 0x1577,
+    0x1578, 0x1579, 0x157a, 0x157b, 0x157c, 0x157d, 0x157e, 0x1580,
+    /* offsets 0x3270 .. 0x327f */
+    0x1582, 0x1584, 0x1586, 0x1588, 0x158a, 0x158c, 0x158e, 0x1590,
+    0x1592, 0x1594, 0x1596, 0x1598, 0x159a, 0x159f, 0x15a3, 0x15a5,
+    /* offsets 0x3280 .. 0x328f */
+    0x15a5, 0x15a6, 0x15a7, 0x15a8, 0x15a9, 0x15aa, 0x15ab, 0x15ac,
+    0x15ad, 0x15ae, 0x15af, 0x15b0, 0x15b1, 0x15b2, 0x15b3, 0x15b4,
+    /* offsets 0x3290 .. 0x329f */
+    0x15b5, 0x15b6, 0x15b7, 0x15b8, 0x15b9, 0x15ba, 0x15bb, 0x15bc,
+    0x15bd, 0x15be, 0x15bf, 0x15c0, 0x15c1, 0x15c2, 0x15c3, 0x15c4,
+    /* offsets 0x32a0 .. 0x32af */
+    0x15c5, 0x15c6, 0x15c7, 0x15c8, 0x15c9, 0x15ca, 0x15cb, 0x15cc,
+    0x15cd, 0x15ce, 0x15cf, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
+    /* offsets 0x32b0 .. 0x32bf */
+    0x15d5, 0x15d6, 0x15d8, 0x15da, 0x15dc, 0x15de, 0x15e0, 0x15e2,
+    0x15e4, 0x15e6, 0x15e8, 0x15ea, 0x15ec, 0x15ee, 0x15f0, 0x15f2,
+    /* offsets 0x32c0 .. 0x32cf */
+    0x15f4, 0x15f6, 0x15f8, 0x15fa, 0x15fc, 0x15fe, 0x1600, 0x1602,
+    0x1604, 0x1606, 0x1609, 0x160c, 0x160f, 0x1611, 0x1614, 0x1616,
+    /* offsets 0x32d0 .. 0x32df */
+    0x1619, 0x161a, 0x161b, 0x161c, 0x161d, 0x161e, 0x161f, 0x1620,
+    0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
+    /* offsets 0x32e0 .. 0x32ef */
+    0x1629, 0x162a, 0x162b, 0x162c, 0x162d, 0x162e, 0x162f, 0x1630,
+    0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637, 0x1638,
+    /* offsets 0x32f0 .. 0x32ff */
+    0x1639, 0x163a, 0x163b, 0x163c, 0x163d, 0x163e, 0x163f, 0x1640,
+    0x1641, 0x1642, 0x1643, 0x1644, 0x1645, 0x1646, 0x1647, 0x1648,
+    /* offsets 0x3300 .. 0x330f */
+    0x1648, 0x164c, 0x1650, 0x1654, 0x1657, 0x165b, 0x165e, 0x1661,
+    0x1666, 0x166a, 0x166d, 0x1670, 0x1673, 0x1677, 0x167b, 0x167e,
+    /* offsets 0x3310 .. 0x331f */
+    0x1681, 0x1683, 0x1686, 0x168a, 0x168e, 0x1690, 0x1695, 0x169b,
+    0x16a0, 0x16a3, 0x16a8, 0x16ad, 0x16b1, 0x16b4, 0x16b7, 0x16ba,
+    /* offsets 0x3320 .. 0x332f */
+    0x16be, 0x16c3, 0x16c7, 0x16ca, 0x16cd, 0x16d0, 0x16d2, 0x16d4,
+    0x16d6, 0x16d8, 0x16db, 0x16de, 0x16e3, 0x16e6, 0x16ea, 0x16ef,
+    /* offsets 0x3330 .. 0x333f */
+    0x16f2, 0x16f4, 0x16f6, 0x16fb, 0x16ff, 0x1704, 0x1707, 0x170c,
+    0x170e, 0x1711, 0x1714, 0x1717, 0x171a, 0x171d, 0x1721, 0x1724,
+    /* offsets 0x3340 .. 0x334f */
+    0x1726, 0x1729, 0x172c, 0x172f, 0x1733, 0x1736, 0x1739, 0x173c,
+    0x1741, 0x1745, 0x1747, 0x174c, 0x174e, 0x1752, 0x1756, 0x1759,
+    /* offsets 0x3350 .. 0x335f */
+    0x175c, 0x175f, 0x1763, 0x1765, 0x1768, 0x176c, 0x176e, 0x1773,
+    0x1776, 0x1778, 0x177a, 0x177c, 0x177e, 0x1780, 0x1782, 0x1784,
+    /* offsets 0x3360 .. 0x336f */
+    0x1786, 0x1788, 0x178a, 0x178d, 0x1790, 0x1793, 0x1796, 0x1799,
+    0x179c, 0x179f, 0x17a2, 0x17a5, 0x17a8, 0x17ab, 0x17ae, 0x17b1,
+    /* offsets 0x3370 .. 0x337f */
+    0x17b4, 0x17b7, 0x17ba, 0x17bc, 0x17be, 0x17c1, 0x17c3, 0x17c5,
+    0x17c7, 0x17ca, 0x17cd, 0x17cf, 0x17d1, 0x17d3, 0x17d5, 0x17d7,
+    /* offsets 0x3380 .. 0x338f */
+    0x17db, 0x17dd, 0x17df, 0x17e1, 0x17e3, 0x17e5, 0x17e7, 0x17e9,
+    0x17eb, 0x17ee, 0x17f2, 0x17f4, 0x17f6, 0x17f8, 0x17fa, 0x17fc,
+    /* offsets 0x3390 .. 0x339f */
+    0x17fe, 0x1800, 0x1803, 0x1806, 0x1809, 0x180c, 0x180e, 0x1810,
+    0x1812, 0x1814, 0x1816, 0x1818, 0x181a, 0x181c, 0x181e, 0x1820,
+    /* offsets 0x33a0 .. 0x33af */
+    0x1823, 0x1826, 0x1828, 0x182b, 0x182e, 0x1831, 0x1833, 0x1836,
+    0x1839, 0x183d, 0x183f, 0x1842, 0x1845, 0x1848, 0x184b, 0x1850,
+    /* offsets 0x33b0 .. 0x33bf */
+    0x1856, 0x1858, 0x185a, 0x185c, 0x185e, 0x1860, 0x1862, 0x1864,
+    0x1866, 0x1868, 0x186a, 0x186c, 0x186e, 0x1870, 0x1872, 0x1874,
+    /* offsets 0x33c0 .. 0x33cf */
+    0x1876, 0x1878, 0x187a, 0x187e, 0x1880, 0x1882, 0x1884, 0x1888,
+    0x188b, 0x188d, 0x188f, 0x1891, 0x1893, 0x1895, 0x1897, 0x1899,
+    /* offsets 0x33d0 .. 0x33df */
+    0x189b, 0x189d, 0x189f, 0x18a2, 0x18a4, 0x18a6, 0x18a9, 0x18ac,
+    0x18ae, 0x18b2, 0x18b5, 0x18b7, 0x18b9, 0x18bb, 0x18bd, 0x18c0,
+    /* offsets 0x33e0 .. 0x33ef */
+    0x18c3, 0x18c5, 0x18c7, 0x18c9, 0x18cb, 0x18cd, 0x18cf, 0x18d1,
+    0x18d3, 0x18d5, 0x18d8, 0x18db, 0x18de, 0x18e1, 0x18e4, 0x18e7,
+    /* offsets 0x33f0 .. 0x33ff */
+    0x18ea, 0x18ed, 0x18f0, 0x18f3, 0x18f6, 0x18f9, 0x18fc, 0x18ff,
+    0x1902, 0x1905, 0x1908, 0x190b, 0x190e, 0x1911, 0x1914, 0x1917,
+    /* offsets 0xa690 .. 0xa69f */
+    0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191a,
+    0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191b, 0x191c, 0x191c,
+    /* offsets 0xa770 .. 0xa77f */
+    0x191c, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d,
+    0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d,
+    /* offsets 0xa7f0 .. 0xa7ff */
+    0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d,
+    0x191d, 0x191e, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f,
+    /* offsets 0xab50 .. 0xab5f */
+    0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f,
+    0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x1920, 0x1921, 0x1922,
+    /* offsets 0xfb00 .. 0xfb0f */
+    0x1923, 0x1925, 0x1927, 0x1929, 0x192c, 0x192f, 0x1931, 0x1933,
+    0x1933, 0x1933, 0x1933, 0x1933, 0x1933, 0x1933, 0x1933, 0x1933,
+    /* offsets 0xfb10 .. 0xfb1f */
+    0x1933, 0x1933, 0x1933, 0x1933, 0x1935, 0x1937, 0x1939, 0x193b,
+    0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d,
+    /* offsets 0xfb20 .. 0xfb2f */
+    0x193d, 0x193e, 0x193f, 0x1940, 0x1941, 0x1942, 0x1943, 0x1944,
+    0x1945, 0x1946, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947,
+    /* offsets 0xfb40 .. 0xfb4f */
+    0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947,
+    0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947,
+    /* offsets 0xfb50 .. 0xfb5f */
+    0x1949, 0x194a, 0x194b, 0x194c, 0x194d, 0x194e, 0x194f, 0x1950,
+    0x1951, 0x1952, 0x1953, 0x1954, 0x1955, 0x1956, 0x1957, 0x1958,
+    /* offsets 0xfb60 .. 0xfb6f */
+    0x1959, 0x195a, 0x195b, 0x195c, 0x195d, 0x195e, 0x195f, 0x1960,
+    0x1961, 0x1962, 0x1963, 0x1964, 0x1965, 0x1966, 0x1967, 0x1968,
+    /* offsets 0xfb70 .. 0xfb7f */
+    0x1969, 0x196a, 0x196b, 0x196c, 0x196d, 0x196e, 0x196f, 0x1970,
+    0x1971, 0x1972, 0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978,
+    /* offsets 0xfb80 .. 0xfb8f */
+    0x1979, 0x197a, 0x197b, 0x197c, 0x197d, 0x197e, 0x197f, 0x1980,
+    0x1981, 0x1982, 0x1983, 0x1984, 0x1985, 0x1986, 0x1987, 0x1988,
+    /* offsets 0xfb90 .. 0xfb9f */
+    0x1989, 0x198a, 0x198b, 0x198c, 0x198d, 0x198e, 0x198f, 0x1990,
+    0x1991, 0x1992, 0x1993, 0x1994, 0x1995, 0x1996, 0x1997, 0x1998,
+    /* offsets 0xfba0 .. 0xfbaf */
+    0x1999, 0x199a, 0x199b, 0x199c, 0x199d, 0x199e, 0x199f, 0x19a0,
+    0x19a1, 0x19a2, 0x19a3, 0x19a4, 0x19a5, 0x19a6, 0x19a7, 0x19a8,
+    /* offsets 0xfbb0 .. 0xfbbf */
+    0x19a9, 0x19aa, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab,
+    0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab,
+    /* offsets 0xfbd0 .. 0xfbdf */
+    0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ac, 0x19ad, 0x19ae, 0x19af,
+    0x19b0, 0x19b1, 0x19b2, 0x19b3, 0x19b4, 0x19b5, 0x19b6, 0x19b7,
+    /* offsets 0xfbe0 .. 0xfbef */
+    0x19b8, 0x19b9, 0x19ba, 0x19bb, 0x19bc, 0x19bd, 0x19be, 0x19bf,
+    0x19c0, 0x19c1, 0x19c2, 0x19c4, 0x19c6, 0x19c8, 0x19ca, 0x19cc,
+    /* offsets 0xfbf0 .. 0xfbff */
+    0x19ce, 0x19d0, 0x19d2, 0x19d4, 0x19d6, 0x19d8, 0x19da, 0x19dc,
+    0x19de, 0x19e0, 0x19e2, 0x19e4, 0x19e6, 0x19e7, 0x19e8, 0x19e9,
+    /* offsets 0xfc00 .. 0xfc0f */
+    0x19ea, 0x19ec, 0x19ee, 0x19f0, 0x19f2, 0x19f4, 0x19f6, 0x19f8,
+    0x19fa, 0x19fc, 0x19fe, 0x1a00, 0x1a02, 0x1a04, 0x1a06, 0x1a08,
+    /* offsets 0xfc10 .. 0xfc1f */
+    0x1a0a, 0x1a0c, 0x1a0e, 0x1a10, 0x1a12, 0x1a14, 0x1a16, 0x1a18,
+    0x1a1a, 0x1a1c, 0x1a1e, 0x1a20, 0x1a22, 0x1a24, 0x1a26, 0x1a28,
+    /* offsets 0xfc20 .. 0xfc2f */
+    0x1a2a, 0x1a2c, 0x1a2e, 0x1a30, 0x1a32, 0x1a34, 0x1a36, 0x1a38,
+    0x1a3a, 0x1a3c, 0x1a3e, 0x1a40, 0x1a42, 0x1a44, 0x1a46, 0x1a48,
+    /* offsets 0xfc30 .. 0xfc3f */
+    0x1a4a, 0x1a4c, 0x1a4e, 0x1a50, 0x1a52, 0x1a54, 0x1a56, 0x1a58,
+    0x1a5a, 0x1a5c, 0x1a5e, 0x1a60, 0x1a62, 0x1a64, 0x1a66, 0x1a68,
+    /* offsets 0xfc40 .. 0xfc4f */
+    0x1a6a, 0x1a6c, 0x1a6e, 0x1a70, 0x1a72, 0x1a74, 0x1a76, 0x1a78,
+    0x1a7a, 0x1a7c, 0x1a7e, 0x1a80, 0x1a82, 0x1a84, 0x1a86, 0x1a88,
+    /* offsets 0xfc50 .. 0xfc5f */
+    0x1a8a, 0x1a8c, 0x1a8e, 0x1a90, 0x1a92, 0x1a94, 0x1a96, 0x1a98,
+    0x1a9a, 0x1a9c, 0x1a9e, 0x1aa0, 0x1aa2, 0x1aa4, 0x1aa6, 0x1aa9,
+    /* offsets 0xfc60 .. 0xfc6f */
+    0x1aac, 0x1aaf, 0x1ab2, 0x1ab5, 0x1ab8, 0x1aba, 0x1abc, 0x1abe,
+    0x1ac0, 0x1ac2, 0x1ac4, 0x1ac6, 0x1ac8, 0x1aca, 0x1acc, 0x1ace,
+    /* offsets 0xfc70 .. 0xfc7f */
+    0x1ad0, 0x1ad2, 0x1ad4, 0x1ad6, 0x1ad8, 0x1ada, 0x1adc, 0x1ade,
+    0x1ae0, 0x1ae2, 0x1ae4, 0x1ae6, 0x1ae8, 0x1aea, 0x1aec, 0x1aee,
+    /* offsets 0xfc80 .. 0xfc8f */
+    0x1af0, 0x1af2, 0x1af4, 0x1af6, 0x1af8, 0x1afa, 0x1afc, 0x1afe,
+    0x1b00, 0x1b02, 0x1b04, 0x1b06, 0x1b08, 0x1b0a, 0x1b0c, 0x1b0e,
+    /* offsets 0xfc90 .. 0xfc9f */
+    0x1b10, 0x1b12, 0x1b14, 0x1b16, 0x1b18, 0x1b1a, 0x1b1c, 0x1b1e,
+    0x1b20, 0x1b22, 0x1b24, 0x1b26, 0x1b28, 0x1b2a, 0x1b2c, 0x1b2e,
+    /* offsets 0xfca0 .. 0xfcaf */
+    0x1b30, 0x1b32, 0x1b34, 0x1b36, 0x1b38, 0x1b3a, 0x1b3c, 0x1b3e,
+    0x1b40, 0x1b42, 0x1b44, 0x1b46, 0x1b48, 0x1b4a, 0x1b4c, 0x1b4e,
+    /* offsets 0xfcb0 .. 0xfcbf */
+    0x1b50, 0x1b52, 0x1b54, 0x1b56, 0x1b58, 0x1b5a, 0x1b5c, 0x1b5e,
+    0x1b60, 0x1b62, 0x1b64, 0x1b66, 0x1b68, 0x1b6a, 0x1b6c, 0x1b6e,
+    /* offsets 0xfcc0 .. 0xfccf */
+    0x1b70, 0x1b72, 0x1b74, 0x1b76, 0x1b78, 0x1b7a, 0x1b7c, 0x1b7e,
+    0x1b80, 0x1b82, 0x1b84, 0x1b86, 0x1b88, 0x1b8a, 0x1b8c, 0x1b8e,
+    /* offsets 0xfcd0 .. 0xfcdf */
+    0x1b90, 0x1b92, 0x1b94, 0x1b96, 0x1b98, 0x1b9a, 0x1b9c, 0x1b9e,
+    0x1ba0, 0x1ba2, 0x1ba4, 0x1ba6, 0x1ba8, 0x1baa, 0x1bac, 0x1bae,
+    /* offsets 0xfce0 .. 0xfcef */
+    0x1bb0, 0x1bb2, 0x1bb4, 0x1bb6, 0x1bb8, 0x1bba, 0x1bbc, 0x1bbe,
+    0x1bc0, 0x1bc2, 0x1bc4, 0x1bc6, 0x1bc8, 0x1bca, 0x1bcc, 0x1bce,
+    /* offsets 0xfcf0 .. 0xfcff */
+    0x1bd0, 0x1bd2, 0x1bd4, 0x1bd7, 0x1bda, 0x1bdd, 0x1bdf, 0x1be1,
+    0x1be3, 0x1be5, 0x1be7, 0x1be9, 0x1beb, 0x1bed, 0x1bef, 0x1bf1,
+    /* offsets 0xfd00 .. 0xfd0f */
+    0x1bf3, 0x1bf5, 0x1bf7, 0x1bf9, 0x1bfb, 0x1bfd, 0x1bff, 0x1c01,
+    0x1c03, 0x1c05, 0x1c07, 0x1c09, 0x1c0b, 0x1c0d, 0x1c0f, 0x1c11,
+    /* offsets 0xfd10 .. 0xfd1f */
+    0x1c13, 0x1c15, 0x1c17, 0x1c19, 0x1c1b, 0x1c1d, 0x1c1f, 0x1c21,
+    0x1c23, 0x1c25, 0x1c27, 0x1c29, 0x1c2b, 0x1c2d, 0x1c2f, 0x1c31,
+    /* offsets 0xfd20 .. 0xfd2f */
+    0x1c33, 0x1c35, 0x1c37, 0x1c39, 0x1c3b, 0x1c3d, 0x1c3f, 0x1c41,
+    0x1c43, 0x1c45, 0x1c47, 0x1c49, 0x1c4b, 0x1c4d, 0x1c4f, 0x1c51,
+    /* offsets 0xfd30 .. 0xfd3f */
+    0x1c53, 0x1c55, 0x1c57, 0x1c59, 0x1c5b, 0x1c5d, 0x1c5f, 0x1c61,
+    0x1c63, 0x1c65, 0x1c67, 0x1c69, 0x1c6b, 0x1c6d, 0x1c6f, 0x1c6f,
+    /* offsets 0xfd50 .. 0xfd5f */
+    0x1c6f, 0x1c72, 0x1c75, 0x1c78, 0x1c7b, 0x1c7e, 0x1c81, 0x1c84,
+    0x1c87, 0x1c8a, 0x1c8d, 0x1c90, 0x1c93, 0x1c96, 0x1c99, 0x1c9c,
+    /* offsets 0xfd60 .. 0xfd6f */
+    0x1c9f, 0x1ca2, 0x1ca5, 0x1ca8, 0x1cab, 0x1cae, 0x1cb1, 0x1cb4,
+    0x1cb7, 0x1cba, 0x1cbd, 0x1cc0, 0x1cc3, 0x1cc6, 0x1cc9, 0x1ccc,
+    /* offsets 0xfd70 .. 0xfd7f */
+    0x1ccf, 0x1cd2, 0x1cd5, 0x1cd8, 0x1cdb, 0x1cde, 0x1ce1, 0x1ce4,
+    0x1ce7, 0x1cea, 0x1ced, 0x1cf0, 0x1cf3, 0x1cf6, 0x1cf9, 0x1cfc,
+    /* offsets 0xfd80 .. 0xfd8f */
+    0x1cff, 0x1d02, 0x1d05, 0x1d08, 0x1d0b, 0x1d0e, 0x1d11, 0x1d14,
+    0x1d17, 0x1d1a, 0x1d1d, 0x1d20, 0x1d23, 0x1d26, 0x1d29, 0x1d2c,
+    /* offsets 0xfd90 .. 0xfd9f */
+    0x1d2f, 0x1d2f, 0x1d2f, 0x1d32, 0x1d35, 0x1d38, 0x1d3b, 0x1d3e,
+    0x1d41, 0x1d44, 0x1d47, 0x1d4a, 0x1d4d, 0x1d50, 0x1d53, 0x1d56,
+    /* offsets 0xfda0 .. 0xfdaf */
+    0x1d59, 0x1d5c, 0x1d5f, 0x1d62, 0x1d65, 0x1d68, 0x1d6b, 0x1d6e,
+    0x1d71, 0x1d74, 0x1d77, 0x1d7a, 0x1d7d, 0x1d80, 0x1d83, 0x1d86,
+    /* offsets 0xfdb0 .. 0xfdbf */
+    0x1d89, 0x1d8c, 0x1d8f, 0x1d92, 0x1d95, 0x1d98, 0x1d9b, 0x1d9e,
+    0x1da1, 0x1da4, 0x1da7, 0x1daa, 0x1dad, 0x1db0, 0x1db3, 0x1db6,
+    /* offsets 0xfdc0 .. 0xfdcf */
+    0x1db9, 0x1dbc, 0x1dbf, 0x1dc2, 0x1dc5, 0x1dc8, 0x1dcb, 0x1dce,
+    0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1,
+    /* offsets 0xfdf0 .. 0xfdff */
+    0x1dd1, 0x1dd4, 0x1dd7, 0x1ddb, 0x1ddf, 0x1de3, 0x1de7, 0x1deb,
+    0x1def, 0x1df3, 0x1df6, 0x1e08, 0x1e10, 0x1e14, 0x1e14, 0x1e14,
+    /* offsets 0xfe10 .. 0xfe1f */
+    0x1e14, 0x1e15, 0x1e16, 0x1e17, 0x1e18, 0x1e19, 0x1e1a, 0x1e1b,
+    0x1e1c, 0x1e1d, 0x1e1e, 0x1e1e, 0x1e1e, 0x1e1e, 0x1e1e, 0x1e1e,
+    /* offsets 0xfe30 .. 0xfe3f */
+    0x1e1e, 0x1e1f, 0x1e20, 0x1e21, 0x1e22, 0x1e23, 0x1e24, 0x1e25,
+    0x1e26, 0x1e27, 0x1e28, 0x1e29, 0x1e2a, 0x1e2b, 0x1e2c, 0x1e2d,
+    /* offsets 0xfe40 .. 0xfe4f */
+    0x1e2e, 0x1e2f, 0x1e30, 0x1e31, 0x1e32, 0x1e33, 0x1e33, 0x1e33,
+    0x1e34, 0x1e35, 0x1e36, 0x1e37, 0x1e38, 0x1e39, 0x1e3a, 0x1e3b,
+    /* offsets 0xfe50 .. 0xfe5f */
+    0x1e3c, 0x1e3d, 0x1e3e, 0x1e3f, 0x1e3f, 0x1e40, 0x1e41, 0x1e42,
+    0x1e43, 0x1e44, 0x1e45, 0x1e46, 0x1e47, 0x1e48, 0x1e49, 0x1e4a,
+    /* offsets 0xfe60 .. 0xfe6f */
+    0x1e4b, 0x1e4c, 0x1e4d, 0x1e4e, 0x1e4f, 0x1e50, 0x1e51, 0x1e52,
+    0x1e52, 0x1e53, 0x1e54, 0x1e55, 0x1e56, 0x1e56, 0x1e56, 0x1e56,
+    /* offsets 0xfe70 .. 0xfe7f */
+    0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5c, 0x1e5e, 0x1e5e, 0x1e60,
+    0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70,
+    /* offsets 0xfe80 .. 0xfe8f */
+    0x1e72, 0x1e73, 0x1e74, 0x1e75, 0x1e76, 0x1e77, 0x1e78, 0x1e79,
+    0x1e7a, 0x1e7b, 0x1e7c, 0x1e7d, 0x1e7e, 0x1e7f, 0x1e80, 0x1e81,
+    /* offsets 0xfe90 .. 0xfe9f */
+    0x1e82, 0x1e83, 0x1e84, 0x1e85, 0x1e86, 0x1e87, 0x1e88, 0x1e89,
+    0x1e8a, 0x1e8b, 0x1e8c, 0x1e8d, 0x1e8e, 0x1e8f, 0x1e90, 0x1e91,
+    /* offsets 0xfea0 .. 0xfeaf */
+    0x1e92, 0x1e93, 0x1e94, 0x1e95, 0x1e96, 0x1e97, 0x1e98, 0x1e99,
+    0x1e9a, 0x1e9b, 0x1e9c, 0x1e9d, 0x1e9e, 0x1e9f, 0x1ea0, 0x1ea1,
+    /* offsets 0xfeb0 .. 0xfebf */
+    0x1ea2, 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea6, 0x1ea7, 0x1ea8, 0x1ea9,
+    0x1eaa, 0x1eab, 0x1eac, 0x1ead, 0x1eae, 0x1eaf, 0x1eb0, 0x1eb1,
+    /* offsets 0xfec0 .. 0xfecf */
+    0x1eb2, 0x1eb3, 0x1eb4, 0x1eb5, 0x1eb6, 0x1eb7, 0x1eb8, 0x1eb9,
+    0x1eba, 0x1ebb, 0x1ebc, 0x1ebd, 0x1ebe, 0x1ebf, 0x1ec0, 0x1ec1,
+    /* offsets 0xfed0 .. 0xfedf */
+    0x1ec2, 0x1ec3, 0x1ec4, 0x1ec5, 0x1ec6, 0x1ec7, 0x1ec8, 0x1ec9,
+    0x1eca, 0x1ecb, 0x1ecc, 0x1ecd, 0x1ece, 0x1ecf, 0x1ed0, 0x1ed1,
+    /* offsets 0xfee0 .. 0xfeef */
+    0x1ed2, 0x1ed3, 0x1ed4, 0x1ed5, 0x1ed6, 0x1ed7, 0x1ed8, 0x1ed9,
+    0x1eda, 0x1edb, 0x1edc, 0x1edd, 0x1ede, 0x1edf, 0x1ee0, 0x1ee1,
+    /* offsets 0xfef0 .. 0xfeff */
+    0x1ee2, 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee6, 0x1ee7, 0x1ee9, 0x1eeb,
+    0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef7, 0x1ef7,
+    /* offsets 0xff00 .. 0xff0f */
+    0x1ef7, 0x1ef7, 0x1ef8, 0x1ef9, 0x1efa, 0x1efb, 0x1efc, 0x1efd,
+    0x1efe, 0x1eff, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05,
+    /* offsets 0xff10 .. 0xff1f */
+    0x1f06, 0x1f07, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d,
+    0x1f0e, 0x1f0f, 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15,
+    /* offsets 0xff20 .. 0xff2f */
+    0x1f16, 0x1f17, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d,
+    0x1f1e, 0x1f1f, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25,
+    /* offsets 0xff30 .. 0xff3f */
+    0x1f26, 0x1f27, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d,
+    0x1f2e, 0x1f2f, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35,
+    /* offsets 0xff40 .. 0xff4f */
+    0x1f36, 0x1f37, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d,
+    0x1f3e, 0x1f3f, 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45,
+    /* offsets 0xff50 .. 0xff5f */
+    0x1f46, 0x1f47, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d,
+    0x1f4e, 0x1f4f, 0x1f50, 0x1f51, 0x1f52, 0x1f53, 0x1f54, 0x1f55,
+    /* offsets 0xff60 .. 0xff6f */
+    0x1f56, 0x1f57, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, 0x1f5d,
+    0x1f5e, 0x1f5f, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65,
+    /* offsets 0xff70 .. 0xff7f */
+    0x1f66, 0x1f67, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d,
+    0x1f6e, 0x1f6f, 0x1f70, 0x1f71, 0x1f72, 0x1f73, 0x1f74, 0x1f75,
+    /* offsets 0xff80 .. 0xff8f */
+    0x1f76, 0x1f77, 0x1f78, 0x1f79, 0x1f7a, 0x1f7b, 0x1f7c, 0x1f7d,
+    0x1f7e, 0x1f7f, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85,
+    /* offsets 0xff90 .. 0xff9f */
+    0x1f86, 0x1f87, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d,
+    0x1f8e, 0x1f8f, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95,
+    /* offsets 0xffa0 .. 0xffaf */
+    0x1f96, 0x1f97, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d,
+    0x1f9e, 0x1f9f, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5,
+    /* offsets 0xffb0 .. 0xffbf */
+    0x1fa6, 0x1fa7, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad,
+    0x1fae, 0x1faf, 0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb5,
+    /* offsets 0xffc0 .. 0xffcf */
+    0x1fb5, 0x1fb5, 0x1fb5, 0x1fb6, 0x1fb7, 0x1fb8, 0x1fb9, 0x1fba,
+    0x1fbb, 0x1fbb, 0x1fbb, 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc0,
+    /* offsets 0xffd0 .. 0xffdf */
+    0x1fc1, 0x1fc1, 0x1fc1, 0x1fc2, 0x1fc3, 0x1fc4, 0x1fc5, 0x1fc6,
+    0x1fc7, 0x1fc7, 0x1fc7, 0x1fc8, 0x1fc9, 0x1fca, 0x1fca, 0x1fca,
+    /* offsets 0xffe0 .. 0xffef */
+    0x1fca, 0x1fcb, 0x1fcc, 0x1fcd, 0x1fce, 0x1fcf, 0x1fd0, 0x1fd1,
+    0x1fd1, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, 0x1fd6, 0x1fd7, 0x1fd8,
+    /* offset sentinel */
+    0x1fd8,
+    /* data */
+    0x0020, 0x0020, 0x0308, 0x0061, 0x0020, 0x0304, 0x0032, 0x0033,
+    0x0020, 0x0301, 0x03bc, 0x0020, 0x0327, 0x0031, 0x006f, 0x0031,
+    0x2044, 0x0034, 0x0031, 0x2044, 0x0032, 0x0033, 0x2044, 0x0034,
+    0x0049, 0x004a, 0x0069, 0x006a, 0x004c, 0x00b7, 0x006c, 0x00b7,
+    0x02bc, 0x006e, 0x0073, 0x0044, 0x017d, 0x0044, 0x017e, 0x0064,
+    0x017e, 0x004c, 0x004a, 0x004c, 0x006a, 0x006c, 0x006a, 0x004e,
+    0x004a, 0x004e, 0x006a, 0x006e, 0x006a, 0x0044, 0x005a, 0x0044,
+    0x007a, 0x0064, 0x007a, 0x0068, 0x0266, 0x006a, 0x0072, 0x0279,
+    0x027b, 0x0281, 0x0077, 0x0079, 0x0020, 0x0306, 0x0020, 0x0307,
+    0x0020, 0x030a, 0x0020, 0x0328, 0x0020, 0x0303, 0x0020, 0x030b,
+    0x0263, 0x006c, 0x0073, 0x0078, 0x0295, 0x0020, 0x0345, 0x0020,
+    0x0301, 0x03b2, 0x03b8, 0x03a5, 0x03c6, 0x03c0, 0x03ba, 0x03c1,
+    0x03c2, 0x0398, 0x03b5, 0x03a3, 0x0565, 0x0582, 0x0627, 0x0674,
+    0x0648, 0x0674, 0x06c7, 0x0674, 0x064a, 0x0674, 0x0e4d, 0x0e32,
+    0x0ecd, 0x0eb2, 0x0eab, 0x0e99, 0x0eab, 0x0ea1, 0x0f0b, 0x0fb2,
+    0x0f81, 0x0fb3, 0x0f81, 0x10dc, 0x0041, 0x00c6, 0x0042, 0x0044,
+    0x0045, 0x018e, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c,
+    0x004d, 0x004e, 0x004f, 0x0222, 0x0050, 0x0052, 0x0054, 0x0055,
+    0x0057, 0x0061, 0x0250, 0x0251, 0x1d02, 0x0062, 0x0064, 0x0065,
+    0x0259, 0x025b, 0x025c, 0x0067, 0x006b, 0x006d, 0x014b, 0x006f,
+    0x0254, 0x1d16, 0x1d17, 0x0070, 0x0074, 0x0075, 0x1d1d, 0x026f,
+    0x0076, 0x1d25, 0x03b2, 0x03b3, 0x03b4, 0x03c6, 0x03c7, 0x0069,
+    0x0072, 0x0075, 0x0076, 0x03b2, 0x03b3, 0x03c1, 0x03c6, 0x03c7,
+    0x043d, 0x0252, 0x0063, 0x0255, 0x00f0, 0x025c, 0x0066, 0x025f,
+    0x0261, 0x0265, 0x0268, 0x0269, 0x026a, 0x1d7b, 0x029d, 0x026d,
+    0x1d85, 0x029f, 0x0271, 0x0270, 0x0272, 0x0273, 0x0274, 0x0275,
+    0x0278, 0x0282, 0x0283, 0x01ab, 0x0289, 0x028a, 0x1d1c, 0x028b,
+    0x028c, 0x007a, 0x0290, 0x0291, 0x0292, 0x03b8, 0x0061, 0x02be,
+    0x0020, 0x0313, 0x0020, 0x0313, 0x0020, 0x0342, 0x0020, 0x0314,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x2010, 0x0020, 0x0333, 0x002e, 0x002e, 0x002e, 0x002e,
+    0x002e, 0x002e, 0x0020, 0x2032, 0x2032, 0x2032, 0x2032, 0x2032,
+    0x2035, 0x2035, 0x2035, 0x2035, 0x2035, 0x0021, 0x0021, 0x0020,
+    0x0305, 0x003f, 0x003f, 0x003f, 0x0021, 0x0021, 0x003f, 0x2032,
+    0x2032, 0x2032, 0x2032, 0x0020, 0x0030, 0x0069, 0x0034, 0x0035,
+    0x0036, 0x0037, 0x0038, 0x0039, 0x002b, 0x2212, 0x003d, 0x0028,
+    0x0029, 0x006e, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+    0x0036, 0x0037, 0x0038, 0x0039, 0x002b, 0x2212, 0x003d, 0x0028,
+    0x0029, 0x0061, 0x0065, 0x006f, 0x0078, 0x0259, 0x0068, 0x006b,
+    0x006c, 0x006d, 0x006e, 0x0070, 0x0073, 0x0074, 0x0052, 0x0073,
+    0x0061, 0x002f, 0x0063, 0x0061, 0x002f, 0x0073, 0x0043, 0x00b0,
+    0x0043, 0x0063, 0x002f, 0x006f, 0x0063, 0x002f, 0x0075, 0x0190,
+    0x00b0, 0x0046, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0x0127,
+    0x0049, 0x0049, 0x004c, 0x006c, 0x004e, 0x004e, 0x006f, 0x0050,
+    0x0051, 0x0052, 0x0052, 0x0052, 0x0053, 0x004d, 0x0054, 0x0045,
+    0x004c, 0x0054, 0x004d, 0x005a, 0x005a, 0x0042, 0x0043, 0x0065,
+    0x0045, 0x0046, 0x004d, 0x006f, 0x05d0, 0x05d1, 0x05d2, 0x05d3,
+    0x0069, 0x0046, 0x0041, 0x0058, 0x03c0, 0x03b3, 0x0393, 0x03a0,
+    0x2211, 0x0044, 0x0064, 0x0065, 0x0069, 0x006a, 0x0031, 0x2044,
+    0x0037, 0x0031, 0x2044, 0x0039, 0x0031, 0x2044, 0x0031, 0x0030,
+    0x0031, 0x2044, 0x0033, 0x0032, 0x2044, 0x0033, 0x0031, 0x2044,
+    0x0035, 0x0032, 0x2044, 0x0035, 0x0033, 0x2044, 0x0035, 0x0034,
+    0x2044, 0x0035, 0x0031, 0x2044, 0x0036, 0x0035, 0x2044, 0x0036,
+    0x0031, 0x2044, 0x0038, 0x0033, 0x2044, 0x0038, 0x0035, 0x2044,
+    0x0038, 0x0037, 0x2044, 0x0038, 0x0031, 0x2044, 0x0049, 0x0049,
+    0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0056, 0x0056, 0x0056,
+    0x0049, 0x0056, 0x0049, 0x0049, 0x0056, 0x0049, 0x0049, 0x0049,
+    0x0049, 0x0058, 0x0058, 0x0058, 0x0049, 0x0058, 0x0049, 0x0049,
+    0x004c, 0x0043, 0x0044, 0x004d, 0x0069, 0x0069, 0x0069, 0x0069,
+    0x0069, 0x0069, 0x0069, 0x0076, 0x0076, 0x0076, 0x0069, 0x0076,
+    0x0069, 0x0069, 0x0076, 0x0069, 0x0069, 0x0069, 0x0069, 0x0078,
+    0x0078, 0x0078, 0x0069, 0x0078, 0x0069, 0x0069, 0x006c, 0x0063,
+    0x0064, 0x006d, 0x0030, 0x2044, 0x0033, 0x222b, 0x222b, 0x222b,
+    0x222b, 0x222b, 0x222e, 0x222e, 0x222e, 0x222e, 0x222e, 0x0031,
+    0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+    0x0031, 0x0030, 0x0031, 0x0031, 0x0031, 0x0032, 0x0031, 0x0033,
+    0x0031, 0x0034, 0x0031, 0x0035, 0x0031, 0x0036, 0x0031, 0x0037,
+    0x0031, 0x0038, 0x0031, 0x0039, 0x0032, 0x0030, 0x0028, 0x0031,
+    0x0029, 0x0028, 0x0032, 0x0029, 0x0028, 0x0033, 0x0029, 0x0028,
+    0x0034, 0x0029, 0x0028, 0x0035, 0x0029, 0x0028, 0x0036, 0x0029,
+    0x0028, 0x0037, 0x0029, 0x0028, 0x0038, 0x0029, 0x0028, 0x0039,
+    0x0029, 0x0028, 0x0031, 0x0030, 0x0029, 0x0028, 0x0031, 0x0031,
+    0x0029, 0x0028, 0x0031, 0x0032, 0x0029, 0x0028, 0x0031, 0x0033,
+    0x0029, 0x0028, 0x0031, 0x0034, 0x0029, 0x0028, 0x0031, 0x0035,
+    0x0029, 0x0028, 0x0031, 0x0036, 0x0029, 0x0028, 0x0031, 0x0037,
+    0x0029, 0x0028, 0x0031, 0x0038, 0x0029, 0x0028, 0x0031, 0x0039,
+    0x0029, 0x0028, 0x0032, 0x0030, 0x0029, 0x0031, 0x002e, 0x0032,
+    0x002e, 0x0033, 0x002e, 0x0034, 0x002e, 0x0035, 0x002e, 0x0036,
+    0x002e, 0x0037, 0x002e, 0x0038, 0x002e, 0x0039, 0x002e, 0x0031,
+    0x0030, 0x002e, 0x0031, 0x0031, 0x002e, 0x0031, 0x0032, 0x002e,
+    0x0031, 0x0033, 0x002e, 0x0031, 0x0034, 0x002e, 0x0031, 0x0035,
+    0x002e, 0x0031, 0x0036, 0x002e, 0x0031, 0x0037, 0x002e, 0x0031,
+    0x0038, 0x002e, 0x0031, 0x0039, 0x002e, 0x0032, 0x0030, 0x002e,
+    0x0028, 0x0061, 0x0029, 0x0028, 0x0062, 0x0029, 0x0028, 0x0063,
+    0x0029, 0x0028, 0x0064, 0x0029, 0x0028, 0x0065, 0x0029, 0x0028,
+    0x0066, 0x0029, 0x0028, 0x0067, 0x0029, 0x0028, 0x0068, 0x0029,
+    0x0028, 0x0069, 0x0029, 0x0028, 0x006a, 0x0029, 0x0028, 0x006b,
+    0x0029, 0x0028, 0x006c, 0x0029, 0x0028, 0x006d, 0x0029, 0x0028,
+    0x006e, 0x0029, 0x0028, 0x006f, 0x0029, 0x0028, 0x0070, 0x0029,
+    0x0028, 0x0071, 0x0029, 0x0028, 0x0072, 0x0029, 0x0028, 0x0073,
+    0x0029, 0x0028, 0x0074, 0x0029, 0x0028, 0x0075, 0x0029, 0x0028,
+    0x0076, 0x0029, 0x0028, 0x0077, 0x0029, 0x0028, 0x0078, 0x0029,
+    0x0028, 0x0079, 0x0029, 0x0028, 0x007a, 0x0029, 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,
+    0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068,
+    0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x0030, 0x222b, 0x222b, 0x222b, 0x222b, 0x003a,
+    0x003a, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x006a,
+    0x0056, 0x2d61, 0x6bcd, 0x9f9f, 0x4e00, 0x4e28, 0x4e36, 0x4e3f,
+    0x4e59, 0x4e85, 0x4e8c, 0x4ea0, 0x4eba, 0x513f, 0x5165, 0x516b,
+    0x5182, 0x5196, 0x51ab, 0x51e0, 0x51f5, 0x5200, 0x529b, 0x52f9,
+    0x5315, 0x531a, 0x5338, 0x5341, 0x535c, 0x5369, 0x5382, 0x53b6,
+    0x53c8, 0x53e3, 0x56d7, 0x571f, 0x58eb, 0x5902, 0x590a, 0x5915,
+    0x5927, 0x5973, 0x5b50, 0x5b80, 0x5bf8, 0x5c0f, 0x5c22, 0x5c38,
+    0x5c6e, 0x5c71, 0x5ddb, 0x5de5, 0x5df1, 0x5dfe, 0x5e72, 0x5e7a,
+    0x5e7f, 0x5ef4, 0x5efe, 0x5f0b, 0x5f13, 0x5f50, 0x5f61, 0x5f73,
+    0x5fc3, 0x6208, 0x6236, 0x624b, 0x652f, 0x6534, 0x6587, 0x6597,
+    0x65a4, 0x65b9, 0x65e0, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20,
+    0x6b62, 0x6b79, 0x6bb3, 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c14,
+    0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x723f, 0x7247, 0x7259,
+    0x725b, 0x72ac, 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f,
+    0x7528, 0x7530, 0x758b, 0x7592, 0x7676, 0x767d, 0x76ae, 0x76bf,
+    0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79b8, 0x79be, 0x7a74,
+    0x7acb, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f51, 0x7f8a, 0x7fbd,
+    0x8001, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x81e3, 0x81ea,
+    0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e, 0x8272, 0x8278,
+    0x864d, 0x866b, 0x8840, 0x884c, 0x8863, 0x897e, 0x898b, 0x89d2,
+    0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c78, 0x8c9d, 0x8d64, 0x8d70,
+    0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fb5, 0x9091, 0x9149,
+    0x91c6, 0x91cc, 0x91d1, 0x9577, 0x9580, 0x961c, 0x96b6, 0x96b9,
+    0x96e8, 0x9751, 0x975e, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3,
+    0x9801, 0x98a8, 0x98db, 0x98df, 0x9996, 0x9999, 0x99ac, 0x9aa8,
+    0x9ad8, 0x9adf, 0x9b25, 0x9b2f, 0x9b32, 0x9b3c, 0x9b5a, 0x9ce5,
+    0x9e75, 0x9e7f, 0x9ea5, 0x9ebb, 0x9ec3, 0x9ecd, 0x9ed1, 0x9ef9,
+    0x9efd, 0x9f0e, 0x9f13, 0x9f20, 0x9f3b, 0x9f4a, 0x9f52, 0x9f8d,
+    0x9f9c, 0x9fa0, 0x0020, 0x3012, 0x5341, 0x5344, 0x5345, 0x0020,
+    0x3099, 0x0020, 0x309a, 0x3088, 0x308a, 0x30b3, 0x30c8, 0x1100,
+    0x1101, 0x11aa, 0x1102, 0x11ac, 0x11ad, 0x1103, 0x1104, 0x1105,
+    0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, 0x111a, 0x1106,
+    0x1107, 0x1108, 0x1121, 0x1109, 0x110a, 0x110b, 0x110c, 0x110d,
+    0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1161, 0x1162, 0x1163,
+    0x1164, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, 0x116a, 0x116b,
+    0x116c, 0x116d, 0x116e, 0x116f, 0x1170, 0x1171, 0x1172, 0x1173,
+    0x1174, 0x1175, 0x1160, 0x1114, 0x1115, 0x11c7, 0x11c8, 0x11cc,
+    0x11ce, 0x11d3, 0x11d7, 0x11d9, 0x111c, 0x11dd, 0x11df, 0x111d,
+    0x111e, 0x1120, 0x1122, 0x1123, 0x1127, 0x1129, 0x112b, 0x112c,
+    0x112d, 0x112e, 0x112f, 0x1132, 0x1136, 0x1140, 0x1147, 0x114c,
+    0x11f1, 0x11f2, 0x1157, 0x1158, 0x1159, 0x1184, 0x1185, 0x1188,
+    0x1191, 0x1192, 0x1194, 0x119e, 0x11a1, 0x4e00, 0x4e8c, 0x4e09,
+    0x56db, 0x4e0a, 0x4e2d, 0x4e0b, 0x7532, 0x4e59, 0x4e19, 0x4e01,
+    0x5929, 0x5730, 0x4eba, 0x0028, 0x1100, 0x0029, 0x0028, 0x1102,
+    0x0029, 0x0028, 0x1103, 0x0029, 0x0028, 0x1105, 0x0029, 0x0028,
+    0x1106, 0x0029, 0x0028, 0x1107, 0x0029, 0x0028, 0x1109, 0x0029,
+    0x0028, 0x110b, 0x0029, 0x0028, 0x110c, 0x0029, 0x0028, 0x110e,
+    0x0029, 0x0028, 0x110f, 0x0029, 0x0028, 0x1110, 0x0029, 0x0028,
+    0x1111, 0x0029, 0x0028, 0x1112, 0x0029, 0x0028, 0x1100, 0x1161,
+    0x0029, 0x0028, 0x1102, 0x1161, 0x0029, 0x0028, 0x1103, 0x1161,
+    0x0029, 0x0028, 0x1105, 0x1161, 0x0029, 0x0028, 0x1106, 0x1161,
+    0x0029, 0x0028, 0x1107, 0x1161, 0x0029, 0x0028, 0x1109, 0x1161,
+    0x0029, 0x0028, 0x110b, 0x1161, 0x0029, 0x0028, 0x110c, 0x1161,
+    0x0029, 0x0028, 0x110e, 0x1161, 0x0029, 0x0028, 0x110f, 0x1161,
+    0x0029, 0x0028, 0x1110, 0x1161, 0x0029, 0x0028, 0x1111, 0x1161,
+    0x0029, 0x0028, 0x1112, 0x1161, 0x0029, 0x0028, 0x110c, 0x116e,
+    0x0029, 0x0028, 0x110b, 0x1169, 0x110c, 0x1165, 0x11ab, 0x0029,
+    0x0028, 0x110b, 0x1169, 0x1112, 0x116e, 0x0029, 0x0028, 0x4e00,
+    0x0029, 0x0028, 0x4e8c, 0x0029, 0x0028, 0x4e09, 0x0029, 0x0028,
+    0x56db, 0x0029, 0x0028, 0x4e94, 0x0029, 0x0028, 0x516d, 0x0029,
+    0x0028, 0x4e03, 0x0029, 0x0028, 0x516b, 0x0029, 0x0028, 0x4e5d,
+    0x0029, 0x0028, 0x5341, 0x0029, 0x0028, 0x6708, 0x0029, 0x0028,
+    0x706b, 0x0029, 0x0028, 0x6c34, 0x0029, 0x0028, 0x6728, 0x0029,
+    0x0028, 0x91d1, 0x0029, 0x0028, 0x571f, 0x0029, 0x0028, 0x65e5,
+    0x0029, 0x0028, 0x682a, 0x0029, 0x0028, 0x6709, 0x0029, 0x0028,
+    0x793e, 0x0029, 0x0028, 0x540d, 0x0029, 0x0028, 0x7279, 0x0029,
+    0x0028, 0x8ca1, 0x0029, 0x0028, 0x795d, 0x0029, 0x0028, 0x52b4,
+    0x0029, 0x0028, 0x4ee3, 0x0029, 0x0028, 0x547c, 0x0029, 0x0028,
+    0x5b66, 0x0029, 0x0028, 0x76e3, 0x0029, 0x0028, 0x4f01, 0x0029,
+    0x0028, 0x8cc7, 0x0029, 0x0028, 0x5354, 0x0029, 0x0028, 0x796d,
+    0x0029, 0x0028, 0x4f11, 0x0029, 0x0028, 0x81ea, 0x0029, 0x0028,
+    0x81f3, 0x0029, 0x554f, 0x5e7c, 0x6587, 0x7b8f, 0x0050, 0x0054,
+    0x0045, 0x0032, 0x0031, 0x0032, 0x0032, 0x0032, 0x0033, 0x0032,
+    0x0034, 0x0032, 0x0035, 0x0032, 0x0036, 0x0032, 0x0037, 0x0032,
+    0x0038, 0x0032, 0x0039, 0x0033, 0x0030, 0x0033, 0x0031, 0x0033,
+    0x0032, 0x0033, 0x0033, 0x0033, 0x0034, 0x0033, 0x0035, 0x1100,
+    0x1102, 0x1103, 0x1105, 0x1106, 0x1107, 0x1109, 0x110b, 0x110c,
+    0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1100, 0x1161, 0x1102,
+    0x1161, 0x1103, 0x1161, 0x1105, 0x1161, 0x1106, 0x1161, 0x1107,
+    0x1161, 0x1109, 0x1161, 0x110b, 0x1161, 0x110c, 0x1161, 0x110e,
+    0x1161, 0x110f, 0x1161, 0x1110, 0x1161, 0x1111, 0x1161, 0x1112,
+    0x1161, 0x110e, 0x1161, 0x11b7, 0x1100, 0x1169, 0x110c, 0x116e,
+    0x110b, 0x1174, 0x110b, 0x116e, 0x4e00, 0x4e8c, 0x4e09, 0x56db,
+    0x4e94, 0x516d, 0x4e03, 0x516b, 0x4e5d, 0x5341, 0x6708, 0x706b,
+    0x6c34, 0x6728, 0x91d1, 0x571f, 0x65e5, 0x682a, 0x6709, 0x793e,
+    0x540d, 0x7279, 0x8ca1, 0x795d, 0x52b4, 0x79d8, 0x7537, 0x5973,
+    0x9069, 0x512a, 0x5370, 0x6ce8, 0x9805, 0x4f11, 0x5199, 0x6b63,
+    0x4e0a, 0x4e2d, 0x4e0b, 0x5de6, 0x53f3, 0x533b, 0x5b97, 0x5b66,
+    0x76e3, 0x4f01, 0x8cc7, 0x5354, 0x591c, 0x0033, 0x0036, 0x0033,
+    0x0037, 0x0033, 0x0038, 0x0033, 0x0039, 0x0034, 0x0030, 0x0034,
+    0x0031, 0x0034, 0x0032, 0x0034, 0x0033, 0x0034, 0x0034, 0x0034,
+    0x0035, 0x0034, 0x0036, 0x0034, 0x0037, 0x0034, 0x0038, 0x0034,
+    0x0039, 0x0035, 0x0030, 0x0031, 0x6708, 0x0032, 0x6708, 0x0033,
+    0x6708, 0x0034, 0x6708, 0x0035, 0x6708, 0x0036, 0x6708, 0x0037,
+    0x6708, 0x0038, 0x6708, 0x0039, 0x6708, 0x0031, 0x0030, 0x6708,
+    0x0031, 0x0031, 0x6708, 0x0031, 0x0032, 0x6708, 0x0048, 0x0067,
+    0x0065, 0x0072, 0x0067, 0x0065, 0x0056, 0x004c, 0x0054, 0x0044,
+    0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, 0x30af,
+    0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, 0x30bf,
+    0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, 0x30cd,
+    0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, 0x30df,
+    0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, 0x30ea,
+    0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30a2,
+    0x30d1, 0x30fc, 0x30c8, 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0x30a2,
+    0x30f3, 0x30da, 0x30a2, 0x30a2, 0x30fc, 0x30eb, 0x30a4, 0x30cb,
+    0x30f3, 0x30b0, 0x30a4, 0x30f3, 0x30c1, 0x30a6, 0x30a9, 0x30f3,
+    0x30a8, 0x30b9, 0x30af, 0x30fc, 0x30c9, 0x30a8, 0x30fc, 0x30ab,
+    0x30fc, 0x30aa, 0x30f3, 0x30b9, 0x30aa, 0x30fc, 0x30e0, 0x30ab,
+    0x30a4, 0x30ea, 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0x30ab, 0x30ed,
+    0x30ea, 0x30fc, 0x30ac, 0x30ed, 0x30f3, 0x30ac, 0x30f3, 0x30de,
+    0x30ae, 0x30ac, 0x30ae, 0x30cb, 0x30fc, 0x30ad, 0x30e5, 0x30ea,
+    0x30fc, 0x30ae, 0x30eb, 0x30c0, 0x30fc, 0x30ad, 0x30ed, 0x30ad,
+    0x30ed, 0x30b0, 0x30e9, 0x30e0, 0x30ad, 0x30ed, 0x30e1, 0x30fc,
+    0x30c8, 0x30eb, 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0x30b0,
+    0x30e9, 0x30e0, 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0x30af,
+    0x30eb, 0x30bc, 0x30a4, 0x30ed, 0x30af, 0x30ed, 0x30fc, 0x30cd,
+    0x30b1, 0x30fc, 0x30b9, 0x30b3, 0x30eb, 0x30ca, 0x30b3, 0x30fc,
+    0x30dd, 0x30b5, 0x30a4, 0x30af, 0x30eb, 0x30b5, 0x30f3, 0x30c1,
+    0x30fc, 0x30e0, 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0x30bb, 0x30f3,
+    0x30c1, 0x30bb, 0x30f3, 0x30c8, 0x30c0, 0x30fc, 0x30b9, 0x30c7,
+    0x30b7, 0x30c9, 0x30eb, 0x30c8, 0x30f3, 0x30ca, 0x30ce, 0x30ce,
+    0x30c3, 0x30c8, 0x30cf, 0x30a4, 0x30c4, 0x30d1, 0x30fc, 0x30bb,
+    0x30f3, 0x30c8, 0x30d1, 0x30fc, 0x30c4, 0x30d0, 0x30fc, 0x30ec,
+    0x30eb, 0x30d4, 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0x30d4, 0x30af,
+    0x30eb, 0x30d4, 0x30b3, 0x30d3, 0x30eb, 0x30d5, 0x30a1, 0x30e9,
+    0x30c3, 0x30c9, 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0x30d6, 0x30c3,
+    0x30b7, 0x30a7, 0x30eb, 0x30d5, 0x30e9, 0x30f3, 0x30d8, 0x30af,
+    0x30bf, 0x30fc, 0x30eb, 0x30da, 0x30bd, 0x30da, 0x30cb, 0x30d2,
+    0x30d8, 0x30eb, 0x30c4, 0x30da, 0x30f3, 0x30b9, 0x30da, 0x30fc,
+    0x30b8, 0x30d9, 0x30fc, 0x30bf, 0x30dd, 0x30a4, 0x30f3, 0x30c8,
+    0x30dc, 0x30eb, 0x30c8, 0x30db, 0x30f3, 0x30dd, 0x30f3, 0x30c9,
+    0x30db, 0x30fc, 0x30eb, 0x30db, 0x30fc, 0x30f3, 0x30de, 0x30a4,
+    0x30af, 0x30ed, 0x30de, 0x30a4, 0x30eb, 0x30de, 0x30c3, 0x30cf,
+    0x30de, 0x30eb, 0x30af, 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3,
+    0x30df, 0x30af, 0x30ed, 0x30f3, 0x30df, 0x30ea, 0x30df, 0x30ea,
+    0x30d0, 0x30fc, 0x30eb, 0x30e1, 0x30ac, 0x30e1, 0x30ac, 0x30c8,
+    0x30f3, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x30e4, 0x30fc, 0x30c9,
+    0x30e4, 0x30fc, 0x30eb, 0x30e6, 0x30a2, 0x30f3, 0x30ea, 0x30c3,
+    0x30c8, 0x30eb, 0x30ea, 0x30e9, 0x30eb, 0x30d4, 0x30fc, 0x30eb,
+    0x30fc, 0x30d6, 0x30eb, 0x30ec, 0x30e0, 0x30ec, 0x30f3, 0x30c8,
+    0x30b2, 0x30f3, 0x30ef, 0x30c3, 0x30c8, 0x0030, 0x70b9, 0x0031,
+    0x70b9, 0x0032, 0x70b9, 0x0033, 0x70b9, 0x0034, 0x70b9, 0x0035,
+    0x70b9, 0x0036, 0x70b9, 0x0037, 0x70b9, 0x0038, 0x70b9, 0x0039,
+    0x70b9, 0x0031, 0x0030, 0x70b9, 0x0031, 0x0031, 0x70b9, 0x0031,
+    0x0032, 0x70b9, 0x0031, 0x0033, 0x70b9, 0x0031, 0x0034, 0x70b9,
+    0x0031, 0x0035, 0x70b9, 0x0031, 0x0036, 0x70b9, 0x0031, 0x0037,
+    0x70b9, 0x0031, 0x0038, 0x70b9, 0x0031, 0x0039, 0x70b9, 0x0032,
+    0x0030, 0x70b9, 0x0032, 0x0031, 0x70b9, 0x0032, 0x0032, 0x70b9,
+    0x0032, 0x0033, 0x70b9, 0x0032, 0x0034, 0x70b9, 0x0068, 0x0050,
+    0x0061, 0x0064, 0x0061, 0x0041, 0x0055, 0x0062, 0x0061, 0x0072,
+    0x006f, 0x0056, 0x0070, 0x0063, 0x0064, 0x006d, 0x0064, 0x006d,
+    0x00b2, 0x0064, 0x006d, 0x00b3, 0x0049, 0x0055, 0x5e73, 0x6210,
+    0x662d, 0x548c, 0x5927, 0x6b63, 0x660e, 0x6cbb, 0x682a, 0x5f0f,
+    0x4f1a, 0x793e, 0x0070, 0x0041, 0x006e, 0x0041, 0x03bc, 0x0041,
+    0x006d, 0x0041, 0x006b, 0x0041, 0x004b, 0x0042, 0x004d, 0x0042,
+    0x0047, 0x0042, 0x0063, 0x0061, 0x006c, 0x006b, 0x0063, 0x0061,
+    0x006c, 0x0070, 0x0046, 0x006e, 0x0046, 0x03bc, 0x0046, 0x03bc,
+    0x0067, 0x006d, 0x0067, 0x006b, 0x0067, 0x0048, 0x007a, 0x006b,
+    0x0048, 0x007a, 0x004d, 0x0048, 0x007a, 0x0047, 0x0048, 0x007a,
+    0x0054, 0x0048, 0x007a, 0x03bc, 0x2113, 0x006d, 0x2113, 0x0064,
+    0x2113, 0x006b, 0x2113, 0x0066, 0x006d, 0x006e, 0x006d, 0x03bc,
+    0x006d, 0x006d, 0x006d, 0x0063, 0x006d, 0x006b, 0x006d, 0x006d,
+    0x006d, 0x00b2, 0x0063, 0x006d, 0x00b2, 0x006d, 0x00b2, 0x006b,
+    0x006d, 0x00b2, 0x006d, 0x006d, 0x00b3, 0x0063, 0x006d, 0x00b3,
+    0x006d, 0x00b3, 0x006b, 0x006d, 0x00b3, 0x006d, 0x2215, 0x0073,
+    0x006d, 0x2215, 0x0073, 0x00b2, 0x0050, 0x0061, 0x006b, 0x0050,
+    0x0061, 0x004d, 0x0050, 0x0061, 0x0047, 0x0050, 0x0061, 0x0072,
+    0x0061, 0x0064, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x0072,
+    0x0061, 0x0064, 0x2215, 0x0073, 0x00b2, 0x0070, 0x0073, 0x006e,
+    0x0073, 0x03bc, 0x0073, 0x006d, 0x0073, 0x0070, 0x0056, 0x006e,
+    0x0056, 0x03bc, 0x0056, 0x006d, 0x0056, 0x006b, 0x0056, 0x004d,
+    0x0056, 0x0070, 0x0057, 0x006e, 0x0057, 0x03bc, 0x0057, 0x006d,
+    0x0057, 0x006b, 0x0057, 0x004d, 0x0057, 0x006b, 0x03a9, 0x004d,
+    0x03a9, 0x0061, 0x002e, 0x006d, 0x002e, 0x0042, 0x0071, 0x0063,
+    0x0063, 0x0063, 0x0064, 0x0043, 0x2215, 0x006b, 0x0067, 0x0043,
+    0x006f, 0x002e, 0x0064, 0x0042, 0x0047, 0x0079, 0x0068, 0x0061,
+    0x0048, 0x0050, 0x0069, 0x006e, 0x004b, 0x004b, 0x004b, 0x004d,
+    0x006b, 0x0074, 0x006c, 0x006d, 0x006c, 0x006e, 0x006c, 0x006f,
+    0x0067, 0x006c, 0x0078, 0x006d, 0x0062, 0x006d, 0x0069, 0x006c,
+    0x006d, 0x006f, 0x006c, 0x0050, 0x0048, 0x0070, 0x002e, 0x006d,
+    0x002e, 0x0050, 0x0050, 0x004d, 0x0050, 0x0052, 0x0073, 0x0072,
+    0x0053, 0x0076, 0x0057, 0x0062, 0x0056, 0x2215, 0x006d, 0x0041,
+    0x2215, 0x006d, 0x0031, 0x65e5, 0x0032, 0x65e5, 0x0033, 0x65e5,
+    0x0034, 0x65e5, 0x0035, 0x65e5, 0x0036, 0x65e5, 0x0037, 0x65e5,
+    0x0038, 0x65e5, 0x0039, 0x65e5, 0x0031, 0x0030, 0x65e5, 0x0031,
+    0x0031, 0x65e5, 0x0031, 0x0032, 0x65e5, 0x0031, 0x0033, 0x65e5,
+    0x0031, 0x0034, 0x65e5, 0x0031, 0x0035, 0x65e5, 0x0031, 0x0036,
+    0x65e5, 0x0031, 0x0037, 0x65e5, 0x0031, 0x0038, 0x65e5, 0x0031,
+    0x0039, 0x65e5, 0x0032, 0x0030, 0x65e5, 0x0032, 0x0031, 0x65e5,
+    0x0032, 0x0032, 0x65e5, 0x0032, 0x0033, 0x65e5, 0x0032, 0x0034,
+    0x65e5, 0x0032, 0x0035, 0x65e5, 0x0032, 0x0036, 0x65e5, 0x0032,
+    0x0037, 0x65e5, 0x0032, 0x0038, 0x65e5, 0x0032, 0x0039, 0x65e5,
+    0x0033, 0x0030, 0x65e5, 0x0033, 0x0031, 0x65e5, 0x0067, 0x0061,
+    0x006c, 0x044a, 0x044c, 0xa76f, 0x0126, 0x0153, 0xa727, 0xab37,
+    0x026b, 0xab52, 0x0066, 0x0066, 0x0066, 0x0069, 0x0066, 0x006c,
+    0x0066, 0x0066, 0x0069, 0x0066, 0x0066, 0x006c, 0x017f, 0x0074,
+    0x0073, 0x0074, 0x0574, 0x0576, 0x0574, 0x0565, 0x0574, 0x056b,
+    0x057e, 0x0576, 0x0574, 0x056d, 0x05e2, 0x05d0, 0x05d3, 0x05d4,
+    0x05db, 0x05dc, 0x05dd, 0x05e8, 0x05ea, 0x002b, 0x05d0, 0x05dc,
+    0x0671, 0x0671, 0x067b, 0x067b, 0x067b, 0x067b, 0x067e, 0x067e,
+    0x067e, 0x067e, 0x0680, 0x0680, 0x0680, 0x0680, 0x067a, 0x067a,
+    0x067a, 0x067a, 0x067f, 0x067f, 0x067f, 0x067f, 0x0679, 0x0679,
+    0x0679, 0x0679, 0x06a4, 0x06a4, 0x06a4, 0x06a4, 0x06a6, 0x06a6,
+    0x06a6, 0x06a6, 0x0684, 0x0684, 0x0684, 0x0684, 0x0683, 0x0683,
+    0x0683, 0x0683, 0x0686, 0x0686, 0x0686, 0x0686, 0x0687, 0x0687,
+    0x0687, 0x0687, 0x068d, 0x068d, 0x068c, 0x068c, 0x068e, 0x068e,
+    0x0688, 0x0688, 0x0698, 0x0698, 0x0691, 0x0691, 0x06a9, 0x06a9,
+    0x06a9, 0x06a9, 0x06af, 0x06af, 0x06af, 0x06af, 0x06b3, 0x06b3,
+    0x06b3, 0x06b3, 0x06b1, 0x06b1, 0x06b1, 0x06b1, 0x06ba, 0x06ba,
+    0x06bb, 0x06bb, 0x06bb, 0x06bb, 0x06c0, 0x06c0, 0x06c1, 0x06c1,
+    0x06c1, 0x06c1, 0x06be, 0x06be, 0x06be, 0x06be, 0x06d2, 0x06d2,
+    0x06d3, 0x06d3, 0x06ad, 0x06ad, 0x06ad, 0x06ad, 0x06c7, 0x06c7,
+    0x06c6, 0x06c6, 0x06c8, 0x06c8, 0x0677, 0x06cb, 0x06cb, 0x06c5,
+    0x06c5, 0x06c9, 0x06c9, 0x06d0, 0x06d0, 0x06d0, 0x06d0, 0x0649,
+    0x0649, 0x0626, 0x0627, 0x0626, 0x0627, 0x0626, 0x06d5, 0x0626,
+    0x06d5, 0x0626, 0x0648, 0x0626, 0x0648, 0x0626, 0x06c7, 0x0626,
+    0x06c7, 0x0626, 0x06c6, 0x0626, 0x06c6, 0x0626, 0x06c8, 0x0626,
+    0x06c8, 0x0626, 0x06d0, 0x0626, 0x06d0, 0x0626, 0x06d0, 0x0626,
+    0x0649, 0x0626, 0x0649, 0x0626, 0x0649, 0x06cc, 0x06cc, 0x06cc,
+    0x06cc, 0x0626, 0x062c, 0x0626, 0x062d, 0x0626, 0x0645, 0x0626,
+    0x0649, 0x0626, 0x064a, 0x0628, 0x062c, 0x0628, 0x062d, 0x0628,
+    0x062e, 0x0628, 0x0645, 0x0628, 0x0649, 0x0628, 0x064a, 0x062a,
+    0x062c, 0x062a, 0x062d, 0x062a, 0x062e, 0x062a, 0x0645, 0x062a,
+    0x0649, 0x062a, 0x064a, 0x062b, 0x062c, 0x062b, 0x0645, 0x062b,
+    0x0649, 0x062b, 0x064a, 0x062c, 0x062d, 0x062c, 0x0645, 0x062d,
+    0x062c, 0x062d, 0x0645, 0x062e, 0x062c, 0x062e, 0x062d, 0x062e,
+    0x0645, 0x0633, 0x062c, 0x0633, 0x062d, 0x0633, 0x062e, 0x0633,
+    0x0645, 0x0635, 0x062d, 0x0635, 0x0645, 0x0636, 0x062c, 0x0636,
+    0x062d, 0x0636, 0x062e, 0x0636, 0x0645, 0x0637, 0x062d, 0x0637,
+    0x0645, 0x0638, 0x0645, 0x0639, 0x062c, 0x0639, 0x0645, 0x063a,
+    0x062c, 0x063a, 0x0645, 0x0641, 0x062c, 0x0641, 0x062d, 0x0641,
+    0x062e, 0x0641, 0x0645, 0x0641, 0x0649, 0x0641, 0x064a, 0x0642,
+    0x062d, 0x0642, 0x0645, 0x0642, 0x0649, 0x0642, 0x064a, 0x0643,
+    0x0627, 0x0643, 0x062c, 0x0643, 0x062d, 0x0643, 0x062e, 0x0643,
+    0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643, 0x064a, 0x0644,
+    0x062c, 0x0644, 0x062d, 0x0644, 0x062e, 0x0644, 0x0645, 0x0644,
+    0x0649, 0x0644, 0x064a, 0x0645, 0x062c, 0x0645, 0x062d, 0x0645,
+    0x062e, 0x0645, 0x0645, 0x0645, 0x0649, 0x0645, 0x064a, 0x0646,
+    0x062c, 0x0646, 0x062d, 0x0646, 0x062e, 0x0646, 0x0645, 0x0646,
+    0x0649, 0x0646, 0x064a, 0x0647, 0x062c, 0x0647, 0x0645, 0x0647,
+    0x0649, 0x0647, 0x064a, 0x064a, 0x062c, 0x064a, 0x062d, 0x064a,
+    0x062e, 0x064a, 0x0645, 0x064a, 0x0649, 0x064a, 0x064a, 0x0630,
+    0x0670, 0x0631, 0x0670, 0x0649, 0x0670, 0x0020, 0x064c, 0x0651,
+    0x0020, 0x064d, 0x0651, 0x0020, 0x064e, 0x0651, 0x0020, 0x064f,
+    0x0651, 0x0020, 0x0650, 0x0651, 0x0020, 0x0651, 0x0670, 0x0626,
+    0x0631, 0x0626, 0x0632, 0x0626, 0x0645, 0x0626, 0x0646, 0x0626,
+    0x0649, 0x0626, 0x064a, 0x0628, 0x0631, 0x0628, 0x0632, 0x0628,
+    0x0645, 0x0628, 0x0646, 0x0628, 0x0649, 0x0628, 0x064a, 0x062a,
+    0x0631, 0x062a, 0x0632, 0x062a, 0x0645, 0x062a, 0x0646, 0x062a,
+    0x0649, 0x062a, 0x064a, 0x062b, 0x0631, 0x062b, 0x0632, 0x062b,
+    0x0645, 0x062b, 0x0646, 0x062b, 0x0649, 0x062b, 0x064a, 0x0641,
+    0x0649, 0x0641, 0x064a, 0x0642, 0x0649, 0x0642, 0x064a, 0x0643,
+    0x0627, 0x0643, 0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643,
+    0x064a, 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064a, 0x0645,
+    0x0627, 0x0645, 0x0645, 0x0646, 0x0631, 0x0646, 0x0632, 0x0646,
+    0x0645, 0x0646, 0x0646, 0x0646, 0x0649, 0x0646, 0x064a, 0x0649,
+    0x0670, 0x064a, 0x0631, 0x064a, 0x0632, 0x064a, 0x0645, 0x064a,
+    0x0646, 0x064a, 0x0649, 0x064a, 0x064a, 0x0626, 0x062c, 0x0626,
+    0x062d, 0x0626, 0x062e, 0x0626, 0x0645, 0x0626, 0x0647, 0x0628,
+    0x062c, 0x0628, 0x062d, 0x0628, 0x062e, 0x0628, 0x0645, 0x0628,
+    0x0647, 0x062a, 0x062c, 0x062a, 0x062d, 0x062a, 0x062e, 0x062a,
+    0x0645, 0x062a, 0x0647, 0x062b, 0x0645, 0x062c, 0x062d, 0x062c,
+    0x0645, 0x062d, 0x062c, 0x062d, 0x0645, 0x062e, 0x062c, 0x062e,
+    0x0645, 0x0633, 0x062c, 0x0633, 0x062d, 0x0633, 0x062e, 0x0633,
+    0x0645, 0x0635, 0x062d, 0x0635, 0x062e, 0x0635, 0x0645, 0x0636,
+    0x062c, 0x0636, 0x062d, 0x0636, 0x062e, 0x0636, 0x0645, 0x0637,
+    0x062d, 0x0638, 0x0645, 0x0639, 0x062c, 0x0639, 0x0645, 0x063a,
+    0x062c, 0x063a, 0x0645, 0x0641, 0x062c, 0x0641, 0x062d, 0x0641,
+    0x062e, 0x0641, 0x0645, 0x0642, 0x062d, 0x0642, 0x0645, 0x0643,
+    0x062c, 0x0643, 0x062d, 0x0643, 0x062e, 0x0643, 0x0644, 0x0643,
+    0x0645, 0x0644, 0x062c, 0x0644, 0x062d, 0x0644, 0x062e, 0x0644,
+    0x0645, 0x0644, 0x0647, 0x0645, 0x062c, 0x0645, 0x062d, 0x0645,
+    0x062e, 0x0645, 0x0645, 0x0646, 0x062c, 0x0646, 0x062d, 0x0646,
+    0x062e, 0x0646, 0x0645, 0x0646, 0x0647, 0x0647, 0x062c, 0x0647,
+    0x0645, 0x0647, 0x0670, 0x064a, 0x062c, 0x064a, 0x062d, 0x064a,
+    0x062e, 0x064a, 0x0645, 0x064a, 0x0647, 0x0626, 0x0645, 0x0626,
+    0x0647, 0x0628, 0x0645, 0x0628, 0x0647, 0x062a, 0x0645, 0x062a,
+    0x0647, 0x062b, 0x0645, 0x062b, 0x0647, 0x0633, 0x0645, 0x0633,
+    0x0647, 0x0634, 0x0645, 0x0634, 0x0647, 0x0643, 0x0644, 0x0643,
+    0x0645, 0x0644, 0x0645, 0x0646, 0x0645, 0x0646, 0x0647, 0x064a,
+    0x0645, 0x064a, 0x0647, 0x0640, 0x064e, 0x0651, 0x0640, 0x064f,
+    0x0651, 0x0640, 0x0650, 0x0651, 0x0637, 0x0649, 0x0637, 0x064a,
+    0x0639, 0x0649, 0x0639, 0x064a, 0x063a, 0x0649, 0x063a, 0x064a,
+    0x0633, 0x0649, 0x0633, 0x064a, 0x0634, 0x0649, 0x0634, 0x064a,
+    0x062d, 0x0649, 0x062d, 0x064a, 0x062c, 0x0649, 0x062c, 0x064a,
+    0x062e, 0x0649, 0x062e, 0x064a, 0x0635, 0x0649, 0x0635, 0x064a,
+    0x0636, 0x0649, 0x0636, 0x064a, 0x0634, 0x062c, 0x0634, 0x062d,
+    0x0634, 0x062e, 0x0634, 0x0645, 0x0634, 0x0631, 0x0633, 0x0631,
+    0x0635, 0x0631, 0x0636, 0x0631, 0x0637, 0x0649, 0x0637, 0x064a,
+    0x0639, 0x0649, 0x0639, 0x064a, 0x063a, 0x0649, 0x063a, 0x064a,
+    0x0633, 0x0649, 0x0633, 0x064a, 0x0634, 0x0649, 0x0634, 0x064a,
+    0x062d, 0x0649, 0x062d, 0x064a, 0x062c, 0x0649, 0x062c, 0x064a,
+    0x062e, 0x0649, 0x062e, 0x064a, 0x0635, 0x0649, 0x0635, 0x064a,
+    0x0636, 0x0649, 0x0636, 0x064a, 0x0634, 0x062c, 0x0634, 0x062d,
+    0x0634, 0x062e, 0x0634, 0x0645, 0x0634, 0x0631, 0x0633, 0x0631,
+    0x0635, 0x0631, 0x0636, 0x0631, 0x0634, 0x062c, 0x0634, 0x062d,
+    0x0634, 0x062e, 0x0634, 0x0645, 0x0633, 0x0647, 0x0634, 0x0647,
+    0x0637, 0x0645, 0x0633, 0x062c, 0x0633, 0x062d, 0x0633, 0x062e,
+    0x0634, 0x062c, 0x0634, 0x062d, 0x0634, 0x062e, 0x0637, 0x0645,
+    0x0638, 0x0645, 0x0627, 0x064b, 0x0627, 0x064b, 0x062a, 0x062c,
+    0x0645, 0x062a, 0x062d, 0x062c, 0x062a, 0x062d, 0x062c, 0x062a,
+    0x062d, 0x0645, 0x062a, 0x062e, 0x0645, 0x062a, 0x0645, 0x062c,
+    0x062a, 0x0645, 0x062d, 0x062a, 0x0645, 0x062e, 0x062c, 0x0645,
+    0x062d, 0x062c, 0x0645, 0x062d, 0x062d, 0x0645, 0x064a, 0x062d,
+    0x0645, 0x0649, 0x0633, 0x062d, 0x062c, 0x0633, 0x062c, 0x062d,
+    0x0633, 0x062c, 0x0649, 0x0633, 0x0645, 0x062d, 0x0633, 0x0645,
+    0x062d, 0x0633, 0x0645, 0x062c, 0x0633, 0x0645, 0x0645, 0x0633,
+    0x0645, 0x0645, 0x0635, 0x062d, 0x062d, 0x0635, 0x062d, 0x062d,
+    0x0635, 0x0645, 0x0645, 0x0634, 0x062d, 0x0645, 0x0634, 0x062d,
+    0x0645, 0x0634, 0x062c, 0x064a, 0x0634, 0x0645, 0x062e, 0x0634,
+    0x0645, 0x062e, 0x0634, 0x0645, 0x0645, 0x0634, 0x0645, 0x0645,
+    0x0636, 0x062d, 0x0649, 0x0636, 0x062e, 0x0645, 0x0636, 0x062e,
+    0x0645, 0x0637, 0x0645, 0x062d, 0x0637, 0x0645, 0x062d, 0x0637,
+    0x0645, 0x0645, 0x0637, 0x0645, 0x064a, 0x0639, 0x062c, 0x0645,
+    0x0639, 0x0645, 0x0645, 0x0639, 0x0645, 0x0645, 0x0639, 0x0645,
+    0x0649, 0x063a, 0x0645, 0x0645, 0x063a, 0x0645, 0x064a, 0x063a,
+    0x0645, 0x0649, 0x0641, 0x062e, 0x0645, 0x0641, 0x062e, 0x0645,
+    0x0642, 0x0645, 0x062d, 0x0642, 0x0645, 0x0645, 0x0644, 0x062d,
+    0x0645, 0x0644, 0x062d, 0x064a, 0x0644, 0x062d, 0x0649, 0x0644,
+    0x062c, 0x062c, 0x0644, 0x062c, 0x062c, 0x0644, 0x062e, 0x0645,
+    0x0644, 0x062e, 0x0645, 0x0644, 0x0645, 0x062d, 0x0644, 0x0645,
+    0x062d, 0x0645, 0x062d, 0x062c, 0x0645, 0x062d, 0x0645, 0x0645,
+    0x062d, 0x064a, 0x0645, 0x062c, 0x062d, 0x0645, 0x062c, 0x0645,
+    0x0645, 0x062e, 0x062c, 0x0645, 0x062e, 0x0645, 0x0645, 0x062c,
+    0x062e, 0x0647, 0x0645, 0x062c, 0x0647, 0x0645, 0x0645, 0x0646,
+    0x062d, 0x0645, 0x0646, 0x062d, 0x0649, 0x0646, 0x062c, 0x0645,
+    0x0646, 0x062c, 0x0645, 0x0646, 0x062c, 0x0649, 0x0646, 0x0645,
+    0x064a, 0x0646, 0x0645, 0x0649, 0x064a, 0x0645, 0x0645, 0x064a,
+    0x0645, 0x0645, 0x0628, 0x062e, 0x064a, 0x062a, 0x062c, 0x064a,
+    0x062a, 0x062c, 0x0649, 0x062a, 0x062e, 0x064a, 0x062a, 0x062e,
+    0x0649, 0x062a, 0x0645, 0x064a, 0x062a, 0x0645, 0x0649, 0x062c,
+    0x0645, 0x064a, 0x062c, 0x062d, 0x0649, 0x062c, 0x0645, 0x0649,
+    0x0633, 0x062e, 0x0649, 0x0635, 0x062d, 0x064a, 0x0634, 0x062d,
+    0x064a, 0x0636, 0x062d, 0x064a, 0x0644, 0x062c, 0x064a, 0x0644,
+    0x0645, 0x064a, 0x064a, 0x062d, 0x064a, 0x064a, 0x062c, 0x064a,
+    0x064a, 0x0645, 0x064a, 0x0645, 0x0645, 0x064a, 0x0642, 0x0645,
+    0x064a, 0x0646, 0x062d, 0x064a, 0x0642, 0x0645, 0x062d, 0x0644,
+    0x062d, 0x0645, 0x0639, 0x0645, 0x064a, 0x0643, 0x0645, 0x064a,
+    0x0646, 0x062c, 0x062d, 0x0645, 0x062e, 0x064a, 0x0644, 0x062c,
+    0x0645, 0x0643, 0x0645, 0x0645, 0x0644, 0x062c, 0x0645, 0x0646,
+    0x062c, 0x062d, 0x062c, 0x062d, 0x064a, 0x062d, 0x062c, 0x064a,
+    0x0645, 0x062c, 0x064a, 0x0641, 0x0645, 0x064a, 0x0628, 0x062d,
+    0x064a, 0x0643, 0x0645, 0x0645, 0x0639, 0x062c, 0x0645, 0x0635,
+    0x0645, 0x0645, 0x0633, 0x062e, 0x064a, 0x0646, 0x062c, 0x064a,
+    0x0635, 0x0644, 0x06d2, 0x0642, 0x0644, 0x06d2, 0x0627, 0x0644,
+    0x0644, 0x0647, 0x0627, 0x0643, 0x0628, 0x0631, 0x0645, 0x062d,
+    0x0645, 0x062f, 0x0635, 0x0644, 0x0639, 0x0645, 0x0631, 0x0633,
+    0x0648, 0x0644, 0x0639, 0x0644, 0x064a, 0x0647, 0x0648, 0x0633,
+    0x0644, 0x0645, 0x0635, 0x0644, 0x0649, 0x0635, 0x0644, 0x0649,
+    0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644,
+    0x064a, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0x062c,
+    0x0644, 0x0020, 0x062c, 0x0644, 0x0627, 0x0644, 0x0647, 0x0631,
+    0x06cc, 0x0627, 0x0644, 0x002c, 0x3001, 0x3002, 0x003a, 0x003b,
+    0x0021, 0x003f, 0x3016, 0x3017, 0x2026, 0x2025, 0x2014, 0x2013,
+    0x005f, 0x005f, 0x0028, 0x0029, 0x007b, 0x007d, 0x3014, 0x3015,
+    0x3010, 0x3011, 0x300a, 0x300b, 0x3008, 0x3009, 0x300c, 0x300d,
+    0x300e, 0x300f, 0x005b, 0x005d, 0x203e, 0x203e, 0x203e, 0x203e,
+    0x005f, 0x005f, 0x005f, 0x002c, 0x3001, 0x002e, 0x003b, 0x003a,
+    0x003f, 0x0021, 0x2014, 0x0028, 0x0029, 0x007b, 0x007d, 0x3014,
+    0x3015, 0x0023, 0x0026, 0x002a, 0x002b, 0x002d, 0x003c, 0x003e,
+    0x003d, 0x005c, 0x0024, 0x0025, 0x0040, 0x0020, 0x064b, 0x0640,
+    0x064b, 0x0020, 0x064c, 0x0020, 0x064d, 0x0020, 0x064e, 0x0640,
+    0x064e, 0x0020, 0x064f, 0x0640, 0x064f, 0x0020, 0x0650, 0x0640,
+    0x0650, 0x0020, 0x0651, 0x0640, 0x0651, 0x0020, 0x0652, 0x0640,
+    0x0652, 0x0621, 0x0622, 0x0622, 0x0623, 0x0623, 0x0624, 0x0624,
+    0x0625, 0x0625, 0x0626, 0x0626, 0x0626, 0x0626, 0x0627, 0x0627,
+    0x0628, 0x0628, 0x0628, 0x0628, 0x0629, 0x0629, 0x062a, 0x062a,
+    0x062a, 0x062a, 0x062b, 0x062b, 0x062b, 0x062b, 0x062c, 0x062c,
+    0x062c, 0x062c, 0x062d, 0x062d, 0x062d, 0x062d, 0x062e, 0x062e,
+    0x062e, 0x062e, 0x062f, 0x062f, 0x0630, 0x0630, 0x0631, 0x0631,
+    0x0632, 0x0632, 0x0633, 0x0633, 0x0633, 0x0633, 0x0634, 0x0634,
+    0x0634, 0x0634, 0x0635, 0x0635, 0x0635, 0x0635, 0x0636, 0x0636,
+    0x0636, 0x0636, 0x0637, 0x0637, 0x0637, 0x0637, 0x0638, 0x0638,
+    0x0638, 0x0638, 0x0639, 0x0639, 0x0639, 0x0639, 0x063a, 0x063a,
+    0x063a, 0x063a, 0x0641, 0x0641, 0x0641, 0x0641, 0x0642, 0x0642,
+    0x0642, 0x0642, 0x0643, 0x0643, 0x0643, 0x0643, 0x0644, 0x0644,
+    0x0644, 0x0644, 0x0645, 0x0645, 0x0645, 0x0645, 0x0646, 0x0646,
+    0x0646, 0x0646, 0x0647, 0x0647, 0x0647, 0x0647, 0x0648, 0x0648,
+    0x0649, 0x0649, 0x064a, 0x064a, 0x064a, 0x064a, 0x0644, 0x0622,
+    0x0644, 0x0622, 0x0644, 0x0623, 0x0644, 0x0623, 0x0644, 0x0625,
+    0x0644, 0x0625, 0x0644, 0x0627, 0x0644, 0x0627, 0x0021, 0x0022,
+    0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a,
+    0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032,
+    0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a,
+    0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
+    0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a,
+    0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072,
+    0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a,
+    0x007b, 0x007c, 0x007d, 0x007e, 0x2985, 0x2986, 0x3002, 0x300c,
+    0x300d, 0x3001, 0x30fb, 0x30f2, 0x30a1, 0x30a3, 0x30a5, 0x30a7,
+    0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, 0x30fc, 0x30a2, 0x30a4,
+    0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, 0x30af, 0x30b1, 0x30b3,
+    0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, 0x30bf, 0x30c1, 0x30c4,
+    0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+    0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, 0x30df, 0x30e0, 0x30e1,
+    0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec,
+    0x30ed, 0x30ef, 0x30f3, 0x3099, 0x309a, 0x3164, 0x3131, 0x3132,
+    0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313a,
+    0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142,
+    0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a,
+    0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150, 0x3151, 0x3152,
+    0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a,
+    0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162,
+    0x3163, 0x00a2, 0x00a3, 0x00ac, 0x00af, 0x00a6, 0x00a5, 0x20a9,
+    0x2502, 0x2190, 0x2191, 0x2192, 0x2193, 0x25a0, 0x25cb
+};
+
+static const WCHAR *get_compatmap_entry( WCHAR ch, unsigned int *len )
+{
+    unsigned short offset_offs = compatmap_table[compatmap_table[ch >> 8] + ((ch >> 4) & 0xf)] + (ch & 0xf);
+    unsigned short start = compatmap_table[offset_offs];
+    unsigned short end = compatmap_table[offset_offs + 1];
+
+    if (end > start)
+    {
+        *len = end - start;
+        return compatmap_table + start;
+    }
+
+    return NULL;
+}
+
 unsigned int DECLSPEC_HIDDEN wine_decompose( int flags, WCHAR ch, WCHAR *dst, unsigned int dstlen )
 {
-    const WCHAR *ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf);
-    unsigned int res;
+    const WCHAR *ptr = NULL;
+    unsigned int res, len, dst_pos = 0;
 
     *dst = ch;
+
+    if (flags & WINE_DECOMPOSE_COMPAT)
+        ptr = get_compatmap_entry( ch, &len );
+
+    if (!ptr)
+    {
+        ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf);
+        len = 2;
+    }
+
     if (!*ptr) return 1;
-    if (dstlen <= 1) return 0;
-    /* apply the decomposition recursively to the first char */
-    if ((res = wine_decompose( flags, *ptr, dst, dstlen-1 ))) dst[res++] = ptr[1];
-    return res;
+    if (dstlen < len) return 0;
+    /* apply the decomposition recursively */
+    while (len--)
+    {
+        if (!(res = wine_decompose( flags, *ptr++, dst + dst_pos, dstlen - dst_pos - len ))) return 0;
+        dst_pos += res;
+    }
+
+    return dst_pos;
 }
diff --git a/tools/make_unicode b/tools/make_unicode
index f0056d09f3..3a9fefe474 100755
--- a/tools/make_unicode
+++ b/tools/make_unicode
@@ -361,6 +361,7 @@ my @direction_table = ();
 my @decomp_table = ();
 my @compose_table = ();
 my @combining_class_table = ();
+my @full_compatmap_table = ();
 my $default_char;
 my $default_wchar;
 
@@ -477,6 +478,16 @@ sub READ_DEFAULTS($)
 
         next if $decomp eq "";  # no decomposition, skip it
 
+        if ($decomp =~ /^<([a-zA-Z]+)>\s+([0-9a-fA-F]+)/)
+        {
+            my @seq = ();
+            for my $ch (split /\s+/, (split /\s+/, $decomp, 2)[1])
+            {
+                push @seq, (hex $ch);
+            }
+            $full_compatmap_table[$src] = \@seq;
+        }
+
         if ($decomp =~ /^<([a-zA-Z]+)>\s+([0-9a-fA-F]+)$/)
         {
             # decomposition of the form "<foo> 1234" -> use char if type is known
@@ -2269,6 +2280,100 @@ EOF
     save_file($filename);
 }
 
+sub dump_full_compat_table()
+{
+    # first determine all the 16-char subsets that contain something
+
+    my @filled = (0) x 4096;
+    my $pos = 16;  # for the null subset
+    my $data_total = 0;
+    for (my $i = 0; $i < 65536; $i++)
+    {
+        next unless defined $full_compatmap_table[$i];
+        if ($filled[$i >> 4] == 0)
+        {
+            $filled[$i >> 4] = $pos;
+            $pos += 16;
+        }
+        $data_total += $#{$full_compatmap_table[$i]} + 1;
+    }
+    my $total = $pos;
+
+    # now count the 256-char subsets that contain something
+
+    my @filled_idx = (256) x 256;
+    $pos = 256 + 16;
+    for (my $i = 0; $i < 4096; $i++)
+    {
+        next unless $filled[$i];
+        $filled_idx[$i >> 4] = $pos;
+        $pos += 16;
+        $i |= 15;
+    }
+    my $null_offset = $pos;  # null mapping
+    $total += $pos + 1; # add the offset sentinel
+
+    # add the index offsets to the subsets positions
+
+    for (my $i = 0; $i < 4096; $i++)
+    {
+        next unless $filled[$i];
+        $filled[$i] += $null_offset;
+    }
+
+    # dump the main index
+
+    printf OUTPUT "static const WCHAR compatmap_table[%d] =\n", $total + $data_total;
+    printf OUTPUT "{\n    /* index */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @filled_idx );
+    printf OUTPUT ",\n    /* null sub-index */\n%s", DUMP_ARRAY( "0x%04x", 0, ($null_offset) x 16 );
+
+    # dump the second-level indexes
+
+    for (my $i = 0; $i < 256; $i++)
+    {
+        next unless ($filled_idx[$i] > 256);
+        my @table = @filled[($i<<4)..($i<<4)+15];
+        for (my $j = 0; $j < 16; $j++) { $table[$j] ||= $null_offset; }
+        printf OUTPUT ",\n    /* sub-index %02x */\n", $i;
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @table );
+    }
+
+    # dump the 16-char offsets
+
+    printf OUTPUT ",\n    /* null offsets */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, ($total) x (16) );
+
+    $pos = $total;
+
+    my @data;
+    for (my $i = 0; $i < 4096; $i++)
+    {
+        next unless $filled[$i];
+        my @table = (0) x (16);
+        for (my $j = 0; $j < 16; $j++)
+        {
+            $table[$j] = $pos;
+            if (defined $full_compatmap_table[($i<<4) + $j])
+            {
+                $pos += $#{$full_compatmap_table[($i<<4) + $j]} + 1;
+                push @data, @{$full_compatmap_table[($i<<4) + $j]};
+            }
+        }
+        printf OUTPUT ",\n    /* offsets 0x%03x0 .. 0x%03xf */\n", $i, $i;
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @table );
+    }
+
+    my @sentinel = $pos;
+    printf OUTPUT ",\n    /* offset sentinel */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @sentinel );
+
+    printf OUTPUT ",\n    /* data */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @data );
+
+    printf OUTPUT "\n};\n\n";
+}
+
 ################################################################
 # dump the char decomposition table
 sub dump_decompose_table($)
@@ -2357,18 +2462,51 @@ sub dump_decompose_table($)
     }
 
     printf OUTPUT "\n};\n\n";
+
+    dump_full_compat_table();
+
     print OUTPUT <<"EOF";
+static const WCHAR *get_compatmap_entry( WCHAR ch, unsigned int *len )
+{
+    unsigned short offset_offs = compatmap_table[compatmap_table[ch >> 8] + ((ch >> 4) & 0xf)] + (ch & 0xf);
+    unsigned short start = compatmap_table[offset_offs];
+    unsigned short end = compatmap_table[offset_offs + 1];
+
+    if (end > start)
+    {
+        *len = end - start;
+        return compatmap_table + start;
+    }
+
+    return NULL;
+}
+
 unsigned int DECLSPEC_HIDDEN wine_decompose( int flags, WCHAR ch, WCHAR *dst, unsigned int dstlen )
 {
-    const WCHAR *ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf);
-    unsigned int res;
+    const WCHAR *ptr = NULL;
+    unsigned int res, len, dst_pos = 0;
 
     *dst = ch;
+
+    if (flags & WINE_DECOMPOSE_COMPAT)
+        ptr = get_compatmap_entry( ch, &len );
+
+    if (!ptr)
+    {
+        ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf);
+        len = 2;
+    }
+
     if (!*ptr) return 1;
-    if (dstlen <= 1) return 0;
-    /* apply the decomposition recursively to the first char */
-    if ((res = wine_decompose( flags, *ptr, dst, dstlen-1 ))) dst[res++] = ptr[1];
-    return res;
+    if (dstlen < len) return 0;
+    /* apply the decomposition recursively */
+    while (len--)
+    {
+        if (!(res = wine_decompose( flags, *ptr++, dst + dst_pos, dstlen - dst_pos - len ))) return 0;
+        dst_pos += res;
+    }
+
+    return dst_pos;
 }
 EOF
     close OUTPUT;
-- 
2.18.0




More information about the wine-devel mailing list