Merge
authorddehaven
Mon, 03 Aug 2015 16:33:06 -0700
changeset 32134 91e37aced110
parent 32129 51464cf078d5 (current diff)
parent 32014 262d30f45454 (diff)
child 32135 36d881124ca1
Merge
jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/ClassPath.java
jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java
jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/Hashtree2Node.java
jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/GB18030.java
nashorn/samples/time_color.fx
--- a/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -317,3 +317,4 @@
 61d2d0629b6dbf4c091dc86151ade1b3ef34fffe jdk9-b72
 9b3a9d72f07b40c648de79961679f42283af1bb5 jdk9-b73
 7c577fda1855d03c04546694d514678f596508c9 jdk9-b74
+f55df5cfe11c97e4b58998b76f5bd00a73cde12d jdk9-b75
--- a/.hgtags-top-repo	Mon Aug 03 15:48:33 2015 -0500
+++ b/.hgtags-top-repo	Mon Aug 03 16:33:06 2015 -0700
@@ -317,3 +317,4 @@
 8582c35016fb6211b373810b6b172feccf9c483b jdk9-b72
 4c2cbaae528bce970dabbb5676005d379357f4b6 jdk9-b73
 57f3134853ecdd4a3ee2d4d26f22ba981d653d79 jdk9-b74
+8fd6eeb878606e39c908f12535f34ebbfd225a4a jdk9-b75
--- a/corba/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/corba/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -317,3 +317,4 @@
 f9f3706bd24c42c07cb260fe05730a749b8e52f4 jdk9-b72
 29096b78d93b01a2f8882509cd40755e3d6b8cd9 jdk9-b73
 622fe934e351e89107edf3c667d6b57f543f58f1 jdk9-b74
+960b56805abd8460598897481820bd6a75f979e7 jdk9-b75
--- a/hotspot/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -477,3 +477,4 @@
 c1b2825ef47e75cb34dd18450d1c4280b7c5853c jdk9-b72
 e37d432868be0aa7cb5e0f3d7caff1e825d8ead3 jdk9-b73
 fff6b54e9770ac4c12c2fb4cab5aa7672affa4bd jdk9-b74
+2f354281e9915275693c4e519a959b8a6f22d3a3 jdk9-b75
--- a/hotspot/src/cpu/aarch64/vm/aarch64.ad	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/aarch64/vm/aarch64.ad	Mon Aug 03 16:33:06 2015 -0700
@@ -14101,7 +14101,7 @@
 instruct vsub2F(vecD dst, vecD src1, vecD src2)
 %{
   predicate(n->as_Vector()->length() == 2);
-  match(Set dst (AddVF src1 src2));
+  match(Set dst (SubVF src1 src2));
   ins_cost(INSN_COST);
   format %{ "fsub  $dst,$src1,$src2\t# vector (2S)" %}
   ins_encode %{
--- a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -261,7 +261,7 @@
 
 // LoadStoreExclusiveOp
     __ stxr(r20, r21, r2);                             //       stxr    w20, x21, [x2]
-    __ stlxr(r7, r29, r7);                             //       stlxr   w7, x29, [x7]
+    __ stlxr(r5, r29, r7);                             //       stlxr   w5, x29, [x7]
     __ ldxr(r5, r16);                                  //       ldxr    x5, [x16]
     __ ldaxr(r27, r29);                                //       ldaxr   x27, [x29]
     __ stlr(r0, r29);                                  //       stlr    x0, [x29]
@@ -295,7 +295,7 @@
     __ ldxp(r8, r2, r19);                              //       ldxp    x8, x2, [x19]
     __ ldaxp(r7, r19, r14);                            //       ldaxp   x7, x19, [x14]
     __ stxp(r8, r27, r28, r5);                         //       stxp    w8, x27, x28, [x5]
-    __ stlxp(r6, r8, r14, r6);                         //       stlxp   w6, x8, x14, [x6]
+    __ stlxp(r5, r8, r14, r6);                         //       stlxp   w5, x8, x14, [x6]
 
 // LoadStoreExclusiveOp
     __ ldxpw(r25, r4, r22);                            //       ldxp    w25, w4, [x22]
@@ -768,7 +768,7 @@
  24c:   d61f0040        br      x2
  250:   d63f00a0        blr     x5
  254:   c8147c55        stxr    w20, x21, [x2]
- 258:   c807fcfd        stlxr   w7, x29, [x7]
+ 258:   c805fcfd        stlxr   w5, x29, [x7]
  25c:   c85f7e05        ldxr    x5, [x16]
  260:   c85fffbb        ldaxr   x27, [x29]
  264:   c89fffa0        stlr    x0, [x29]
@@ -794,7 +794,7 @@
  2b4:   c87f0a68        ldxp    x8, x2, [x19]
  2b8:   c87fcdc7        ldaxp   x7, x19, [x14]
  2bc:   c82870bb        stxp    w8, x27, x28, [x5]
- 2c0:   c826b8c8        stlxp   w6, x8, x14, [x6]
+ 2c0:   c825b8c8        stlxp   w5, x8, x14, [x6]
  2c4:   887f12d9        ldxp    w25, w4, [x22]
  2c8:   887fb9ee        ldaxp   w14, w14, [x15]
  2cc:   8834215a        stxp    w20, w26, w8, [x10]
@@ -1084,14 +1084,14 @@
     0xd4063721,     0xd4035082,     0xd400bfe3,     0xd4282fc0,
     0xd444c320,     0xd503201f,     0xd69f03e0,     0xd6bf03e0,
     0xd5033fdf,     0xd5033f9f,     0xd5033abf,     0xd61f0040,
-    0xd63f00a0,     0xc8147c55,     0xc807fcfd,     0xc85f7e05,
+    0xd63f00a0,     0xc8147c55,     0xc805fcfd,     0xc85f7e05,
     0xc85fffbb,     0xc89fffa0,     0xc8dfff95,     0x88187cf8,
     0x8815ff9a,     0x885f7cd5,     0x885fffcf,     0x889ffc73,
     0x88dffc56,     0x48127c0f,     0x480bff85,     0x485f7cdd,
     0x485ffcf2,     0x489fff99,     0x48dffe62,     0x080a7c3e,
     0x0814fed5,     0x085f7c59,     0x085ffcb8,     0x089ffc70,
     0x08dfffb6,     0xc87f0a68,     0xc87fcdc7,     0xc82870bb,
-    0xc826b8c8,     0x887f12d9,     0x887fb9ee,     0x8834215a,
+    0xc825b8c8,     0x887f12d9,     0x887fb9ee,     0x8834215a,
     0x8837ca52,     0xf806317e,     0xb81b3337,     0x39000dc2,
     0x78005149,     0xf84391f4,     0xb85b220c,     0x385fd356,
     0x785d127e,     0x389f4149,     0x79801e3c,     0x79c014a3,
--- a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1106,11 +1106,13 @@
 
 #define INSN4(NAME, sz, op, o0) /* Four registers */                    \
   void NAME(Register Rs, Register Rt1, Register Rt2, Register Rn) {     \
+    assert(Rs != Rn, "unpredictable instruction");                  \
     load_store_exclusive(Rs, Rt1, Rt2, Rn, sz, op, o0);                 \
   }
 
 #define INSN3(NAME, sz, op, o0) /* Three registers */                   \
   void NAME(Register Rs, Register Rt, Register Rn) {                    \
+    assert(Rs != Rn, "unpredictable instruction");                  \
     load_store_exclusive(Rs, Rt, (Register)0b11111, Rn, sz, op, o0);    \
   }
 
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -33,6 +33,7 @@
 #include "compiler/disassembler.hpp"
 #include "memory/resourceArea.hpp"
 #include "nativeInst_aarch64.hpp"
+#include "oops/klass.inline.hpp"
 #include "opto/compile.hpp"
 #include "opto/node.hpp"
 #include "runtime/biasedLocking.hpp"
@@ -3791,8 +3792,8 @@
     br(Assembler::HI, slow_case);
 
     // If heap_top hasn't been changed by some other thread, update it.
-    stlxr(rscratch1, end, rscratch1);
-    cbnzw(rscratch1, retry);
+    stlxr(rscratch2, end, rscratch1);
+    cbnzw(rscratch2, retry);
   }
 }
 
--- a/hotspot/src/cpu/ppc/vm/interpreterGenerator_ppc.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/interpreterGenerator_ppc.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2013 SAP AG. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2012, 2015 SAP AG. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,7 +36,7 @@
   address generate_empty_entry(void) { return generate_jump_to_normal_entry(); }
   address generate_Reference_get_entry(void);
 
-  // Not supported
-  address generate_CRC32_update_entry() { return NULL; }
-  address generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind) { return NULL; }
+  address generate_CRC32_update_entry();
+  address generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind);
+
 #endif // CPU_PPC_VM_INTERPRETERGENERATOR_PPC_HPP
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -50,6 +50,7 @@
 #else
 #define BLOCK_COMMENT(str) block_comment(str)
 #endif
+#define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
 
 #ifdef ASSERT
 // On RISC, there's no benefit to verifying instruction boundaries.
@@ -3433,6 +3434,418 @@
   bind(Ldone_false);
 }
 
+// Helpers for Intrinsic Emitters
+//
+// Revert the byte order of a 32bit value in a register
+//   src: 0x44556677
+//   dst: 0x77665544
+// Three steps to obtain the result:
+//  1) Rotate src (as doubleword) left 5 bytes. That puts the leftmost byte of the src word
+//     into the rightmost byte position. Afterwards, everything left of the rightmost byte is cleared.
+//     This value initializes dst.
+//  2) Rotate src (as word) left 3 bytes. That puts the rightmost byte of the src word into the leftmost
+//     byte position. Furthermore, byte 5 is rotated into byte 6 position where it is supposed to go.
+//     This value is mask inserted into dst with a [0..23] mask of 1s.
+//  3) Rotate src (as word) left 1 byte. That puts byte 6 into byte 5 position.
+//     This value is mask inserted into dst with a [8..15] mask of 1s.
+void MacroAssembler::load_reverse_32(Register dst, Register src) {
+  assert_different_registers(dst, src);
+
+  rldicl(dst, src, (4+1)*8, 56);       // Rotate byte 4 into position 7 (rightmost), clear all to the left.
+  rlwimi(dst, src,     3*8,  0, 23);   // Insert byte 5 into position 6, 7 into 4, leave pos 7 alone.
+  rlwimi(dst, src,     1*8,  8, 15);   // Insert byte 6 into position 5, leave the rest alone.
+}
+
+// Calculate the column addresses of the crc32 lookup table into distinct registers.
+// This loop-invariant calculation is moved out of the loop body, reducing the loop
+// body size from 20 to 16 instructions.
+// Returns the offset that was used to calculate the address of column tc3.
+// Due to register shortage, setting tc3 may overwrite table. With the return offset
+// at hand, the original table address can be easily reconstructed.
+int MacroAssembler::crc32_table_columns(Register table, Register tc0, Register tc1, Register tc2, Register tc3) {
+
+#ifdef VM_LITTLE_ENDIAN
+  // This is what we implement (the DOLIT4 part):
+  // ========================================================================= */
+  // #define DOLIT4 c ^= *buf4++; \
+  //         c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
+  //             crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
+  // #define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
+  // ========================================================================= */
+  const int ix0 = 3*(4*CRC32_COLUMN_SIZE);
+  const int ix1 = 2*(4*CRC32_COLUMN_SIZE);
+  const int ix2 = 1*(4*CRC32_COLUMN_SIZE);
+  const int ix3 = 0*(4*CRC32_COLUMN_SIZE);
+#else
+  // This is what we implement (the DOBIG4 part):
+  // =========================================================================
+  // #define DOBIG4 c ^= *++buf4; \
+  //         c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
+  //             crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
+  // #define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
+  // =========================================================================
+  const int ix0 = 4*(4*CRC32_COLUMN_SIZE);
+  const int ix1 = 5*(4*CRC32_COLUMN_SIZE);
+  const int ix2 = 6*(4*CRC32_COLUMN_SIZE);
+  const int ix3 = 7*(4*CRC32_COLUMN_SIZE);
+#endif
+  assert_different_registers(table, tc0, tc1, tc2);
+  assert(table == tc3, "must be!");
+
+  if (ix0 != 0) addi(tc0, table, ix0);
+  if (ix1 != 0) addi(tc1, table, ix1);
+  if (ix2 != 0) addi(tc2, table, ix2);
+  if (ix3 != 0) addi(tc3, table, ix3);
+
+  return ix3;
+}
+
+/**
+ * uint32_t crc;
+ * timesXtoThe32[crc & 0xFF] ^ (crc >> 8);
+ */
+void MacroAssembler::fold_byte_crc32(Register crc, Register val, Register table, Register tmp) {
+  assert_different_registers(crc, table, tmp);
+  assert_different_registers(val, table);
+
+  if (crc == val) {                   // Must rotate first to use the unmodified value.
+    rlwinm(tmp, val, 2, 24-2, 31-2);  // Insert (rightmost) byte 7 of val, shifted left by 2, into byte 6..7 of tmp, clear the rest.
+                                      // As we use a word (4-byte) instruction, we have to adapt the mask bit positions.
+    srwi(crc, crc, 8);                // Unsigned shift, clear leftmost 8 bits.
+  } else {
+    srwi(crc, crc, 8);                // Unsigned shift, clear leftmost 8 bits.
+    rlwinm(tmp, val, 2, 24-2, 31-2);  // Insert (rightmost) byte 7 of val, shifted left by 2, into byte 6..7 of tmp, clear the rest.
+  }
+  lwzx(tmp, table, tmp);
+  xorr(crc, crc, tmp);
+}
+
+/**
+ * uint32_t crc;
+ * timesXtoThe32[crc & 0xFF] ^ (crc >> 8);
+ */
+void MacroAssembler::fold_8bit_crc32(Register crc, Register table, Register tmp) {
+  fold_byte_crc32(crc, crc, table, tmp);
+}
+
+/**
+ * Emits code to update CRC-32 with a byte value according to constants in table.
+ *
+ * @param [in,out]crc   Register containing the crc.
+ * @param [in]val       Register containing the byte to fold into the CRC.
+ * @param [in]table     Register containing the table of crc constants.
+ *
+ * uint32_t crc;
+ * val = crc_table[(val ^ crc) & 0xFF];
+ * crc = val ^ (crc >> 8);
+ */
+void MacroAssembler::update_byte_crc32(Register crc, Register val, Register table) {
+  BLOCK_COMMENT("update_byte_crc32:");
+  xorr(val, val, crc);
+  fold_byte_crc32(crc, val, table, val);
+}
+
+/**
+ * @param crc   register containing existing CRC (32-bit)
+ * @param buf   register pointing to input byte buffer (byte*)
+ * @param len   register containing number of bytes
+ * @param table register pointing to CRC table
+ */
+void MacroAssembler::update_byteLoop_crc32(Register crc, Register buf, Register len, Register table,
+                                           Register data, bool loopAlignment, bool invertCRC) {
+  assert_different_registers(crc, buf, len, table, data);
+
+  Label L_mainLoop, L_done;
+  const int mainLoop_stepping  = 1;
+  const int mainLoop_alignment = loopAlignment ? 32 : 4; // (InputForNewCode > 4 ? InputForNewCode : 32) : 4;
+
+  // Process all bytes in a single-byte loop.
+  cmpdi(CCR0, len, 0);                           // Anything to do?
+  mtctr(len);
+  beq(CCR0, L_done);
+
+  if (invertCRC) {
+    nand(crc, crc, crc);                         // ~c
+  }
+
+  align(mainLoop_alignment);
+  BIND(L_mainLoop);
+    lbz(data, 0, buf);                           // Byte from buffer, zero-extended.
+    addi(buf, buf, mainLoop_stepping);           // Advance buffer position.
+    update_byte_crc32(crc, data, table);
+    bdnz(L_mainLoop);                            // Iterate.
+
+  if (invertCRC) {
+    nand(crc, crc, crc);                         // ~c
+  }
+
+  bind(L_done);
+}
+
+/**
+ * Emits code to update CRC-32 with a 4-byte value according to constants in table
+ * Implementation according to jdk/src/share/native/java/util/zip/zlib-1.2.8/crc32.c
+ */
+// A not on the lookup table address(es):
+// The lookup table consists of two sets of four columns each.
+// The columns {0..3} are used for little-endian machines.
+// The columns {4..7} are used for big-endian machines.
+// To save the effort of adding the column offset to the table address each time
+// a table element is looked up, it is possible to pass the pre-calculated
+// column addresses.
+// Uses R9..R12 as work register. Must be saved/restored by caller, if necessary.
+void MacroAssembler::update_1word_crc32(Register crc, Register buf, Register table, int bufDisp, int bufInc,
+                                        Register t0,  Register t1,  Register t2,  Register t3,
+                                        Register tc0, Register tc1, Register tc2, Register tc3) {
+  assert_different_registers(crc, t3);
+
+  // XOR crc with next four bytes of buffer.
+  lwz(t3, bufDisp, buf);
+  if (bufInc != 0) {
+    addi(buf, buf, bufInc);
+  }
+  xorr(t3, t3, crc);
+
+  // Chop crc into 4 single-byte pieces, shifted left 2 bits, to form the table indices.
+  rlwinm(t0, t3,  2,         24-2, 31-2);  // ((t1 >>  0) & 0xff) << 2
+  rlwinm(t1, t3,  32+(2- 8), 24-2, 31-2);  // ((t1 >>  8) & 0xff) << 2
+  rlwinm(t2, t3,  32+(2-16), 24-2, 31-2);  // ((t1 >> 16) & 0xff) << 2
+  rlwinm(t3, t3,  32+(2-24), 24-2, 31-2);  // ((t1 >> 24) & 0xff) << 2
+
+  // Use the pre-calculated column addresses.
+  // Load pre-calculated table values.
+  lwzx(t0, tc0, t0);
+  lwzx(t1, tc1, t1);
+  lwzx(t2, tc2, t2);
+  lwzx(t3, tc3, t3);
+
+  // Calculate new crc from table values.
+  xorr(t0,  t0, t1);
+  xorr(t2,  t2, t3);
+  xorr(crc, t0, t2);  // Now crc contains the final checksum value.
+}
+
+/**
+ * @param crc   register containing existing CRC (32-bit)
+ * @param buf   register pointing to input byte buffer (byte*)
+ * @param len   register containing number of bytes
+ * @param table register pointing to CRC table
+ *
+ * Uses R9..R12 as work register. Must be saved/restored by caller!
+ */
+void MacroAssembler::kernel_crc32_2word(Register crc, Register buf, Register len, Register table,
+                                        Register t0,  Register t1,  Register t2,  Register t3,
+                                        Register tc0, Register tc1, Register tc2, Register tc3) {
+  assert_different_registers(crc, buf, len, table);
+
+  Label L_mainLoop, L_tail;
+  Register  tmp  = t0;
+  Register  data = t0;
+  Register  tmp2 = t1;
+  const int mainLoop_stepping  = 8;
+  const int tailLoop_stepping  = 1;
+  const int log_stepping       = exact_log2(mainLoop_stepping);
+  const int mainLoop_alignment = 32; // InputForNewCode > 4 ? InputForNewCode : 32;
+  const int complexThreshold   = 2*mainLoop_stepping;
+
+  // Don't test for len <= 0 here. This pathological case should not occur anyway.
+  // Optimizing for it by adding a test and a branch seems to be a waste of CPU cycles.
+  // The situation itself is detected and handled correctly by the conditional branches
+  // following  aghi(len, -stepping) and aghi(len, +stepping).
+  assert(tailLoop_stepping == 1, "check tailLoop_stepping!");
+
+  BLOCK_COMMENT("kernel_crc32_2word {");
+
+  nand(crc, crc, crc);                           // ~c
+
+  // Check for short (<mainLoop_stepping) buffer.
+  cmpdi(CCR0, len, complexThreshold);
+  blt(CCR0, L_tail);
+
+  // Pre-mainLoop alignment did show a slight (1%) positive effect on performance.
+  // We leave the code in for reference. Maybe we need alignment when we exploit vector instructions.
+  {
+    // Align buf addr to mainLoop_stepping boundary.
+    neg(tmp2, buf);                           // Calculate # preLoop iterations for alignment.
+    rldicl(tmp2, tmp2, 0, 64-log_stepping);   // Rotate tmp2 0 bits, insert into tmp2, anding with mask with 1s from 62..63.
+
+    if (complexThreshold > mainLoop_stepping) {
+      sub(len, len, tmp2);                       // Remaining bytes for main loop (>=mainLoop_stepping is guaranteed).
+    } else {
+      sub(tmp, len, tmp2);                       // Remaining bytes for main loop.
+      cmpdi(CCR0, tmp, mainLoop_stepping);
+      blt(CCR0, L_tail);                         // For less than one mainloop_stepping left, do only tail processing
+      mr(len, tmp);                              // remaining bytes for main loop (>=mainLoop_stepping is guaranteed).
+    }
+    update_byteLoop_crc32(crc, buf, tmp2, table, data, false, false);
+  }
+
+  srdi(tmp2, len, log_stepping);                 // #iterations for mainLoop
+  andi(len, len, mainLoop_stepping-1);           // remaining bytes for tailLoop
+  mtctr(tmp2);
+
+#ifdef VM_LITTLE_ENDIAN
+  Register crc_rv = crc;
+#else
+  Register crc_rv = tmp;                         // Load_reverse needs separate registers to work on.
+                                                 // Occupies tmp, but frees up crc.
+  load_reverse_32(crc_rv, crc);                  // Revert byte order because we are dealing with big-endian data.
+  tmp = crc;
+#endif
+
+  int reconstructTableOffset = crc32_table_columns(table, tc0, tc1, tc2, tc3);
+
+  align(mainLoop_alignment);                     // Octoword-aligned loop address. Shows 2% improvement.
+  BIND(L_mainLoop);
+    update_1word_crc32(crc_rv, buf, table, 0, 0, crc_rv, t1, t2, t3, tc0, tc1, tc2, tc3);
+    update_1word_crc32(crc_rv, buf, table, 4, mainLoop_stepping, crc_rv, t1, t2, t3, tc0, tc1, tc2, tc3);
+    bdnz(L_mainLoop);
+
+#ifndef VM_LITTLE_ENDIAN
+  load_reverse_32(crc, crc_rv);                  // Revert byte order because we are dealing with big-endian data.
+  tmp = crc_rv;                                  // Tmp uses it's original register again.
+#endif
+
+  // Restore original table address for tailLoop.
+  if (reconstructTableOffset != 0) {
+    addi(table, table, -reconstructTableOffset);
+  }
+
+  // Process last few (<complexThreshold) bytes of buffer.
+  BIND(L_tail);
+  update_byteLoop_crc32(crc, buf, len, table, data, false, false);
+
+  nand(crc, crc, crc);                           // ~c
+  BLOCK_COMMENT("} kernel_crc32_2word");
+}
+
+/**
+ * @param crc   register containing existing CRC (32-bit)
+ * @param buf   register pointing to input byte buffer (byte*)
+ * @param len   register containing number of bytes
+ * @param table register pointing to CRC table
+ *
+ * uses R9..R12 as work register. Must be saved/restored by caller!
+ */
+void MacroAssembler::kernel_crc32_1word(Register crc, Register buf, Register len, Register table,
+                                        Register t0,  Register t1,  Register t2,  Register t3,
+                                        Register tc0, Register tc1, Register tc2, Register tc3) {
+  assert_different_registers(crc, buf, len, table);
+
+  Label L_mainLoop, L_tail;
+  Register  tmp          = t0;
+  Register  data         = t0;
+  Register  tmp2         = t1;
+  const int mainLoop_stepping  = 4;
+  const int tailLoop_stepping  = 1;
+  const int log_stepping       = exact_log2(mainLoop_stepping);
+  const int mainLoop_alignment = 32; // InputForNewCode > 4 ? InputForNewCode : 32;
+  const int complexThreshold   = 2*mainLoop_stepping;
+
+  // Don't test for len <= 0 here. This pathological case should not occur anyway.
+  // Optimizing for it by adding a test and a branch seems to be a waste of CPU cycles.
+  // The situation itself is detected and handled correctly by the conditional branches
+  // following  aghi(len, -stepping) and aghi(len, +stepping).
+  assert(tailLoop_stepping == 1, "check tailLoop_stepping!");
+
+  BLOCK_COMMENT("kernel_crc32_1word {");
+
+  nand(crc, crc, crc);                           // ~c
+
+  // Check for short (<mainLoop_stepping) buffer.
+  cmpdi(CCR0, len, complexThreshold);
+  blt(CCR0, L_tail);
+
+  // Pre-mainLoop alignment did show a slight (1%) positive effect on performance.
+  // We leave the code in for reference. Maybe we need alignment when we exploit vector instructions.
+  {
+    // Align buf addr to mainLoop_stepping boundary.
+    neg(tmp2, buf);                              // Calculate # preLoop iterations for alignment.
+    rldicl(tmp2, tmp2, 0, 64-log_stepping);      // Rotate tmp2 0 bits, insert into tmp2, anding with mask with 1s from 62..63.
+
+    if (complexThreshold > mainLoop_stepping) {
+      sub(len, len, tmp2);                       // Remaining bytes for main loop (>=mainLoop_stepping is guaranteed).
+    } else {
+      sub(tmp, len, tmp2);                       // Remaining bytes for main loop.
+      cmpdi(CCR0, tmp, mainLoop_stepping);
+      blt(CCR0, L_tail);                         // For less than one mainloop_stepping left, do only tail processing
+      mr(len, tmp);                              // remaining bytes for main loop (>=mainLoop_stepping is guaranteed).
+    }
+    update_byteLoop_crc32(crc, buf, tmp2, table, data, false, false);
+  }
+
+  srdi(tmp2, len, log_stepping);                 // #iterations for mainLoop
+  andi(len, len, mainLoop_stepping-1);           // remaining bytes for tailLoop
+  mtctr(tmp2);
+
+#ifdef VM_LITTLE_ENDIAN
+  Register crc_rv = crc;
+#else
+  Register crc_rv = tmp;                         // Load_reverse needs separate registers to work on.
+                                                 // Occupies tmp, but frees up crc.
+  load_reverse_32(crc_rv, crc);                  // evert byte order because we are dealing with big-endian data.
+  tmp = crc;
+#endif
+
+  int reconstructTableOffset = crc32_table_columns(table, tc0, tc1, tc2, tc3);
+
+  align(mainLoop_alignment);                     // Octoword-aligned loop address. Shows 2% improvement.
+  BIND(L_mainLoop);
+    update_1word_crc32(crc_rv, buf, table, 0, mainLoop_stepping, crc_rv, t1, t2, t3, tc0, tc1, tc2, tc3);
+    bdnz(L_mainLoop);
+
+#ifndef VM_LITTLE_ENDIAN
+  load_reverse_32(crc, crc_rv);                  // Revert byte order because we are dealing with big-endian data.
+  tmp = crc_rv;                                  // Tmp uses it's original register again.
+#endif
+
+  // Restore original table address for tailLoop.
+  if (reconstructTableOffset != 0) {
+    addi(table, table, -reconstructTableOffset);
+  }
+
+  // Process last few (<complexThreshold) bytes of buffer.
+  BIND(L_tail);
+  update_byteLoop_crc32(crc, buf, len, table, data, false, false);
+
+  nand(crc, crc, crc);                           // ~c
+  BLOCK_COMMENT("} kernel_crc32_1word");
+}
+
+/**
+ * @param crc   register containing existing CRC (32-bit)
+ * @param buf   register pointing to input byte buffer (byte*)
+ * @param len   register containing number of bytes
+ * @param table register pointing to CRC table
+ *
+ * Uses R7_ARG5, R8_ARG6 as work registers.
+ */
+void MacroAssembler::kernel_crc32_1byte(Register crc, Register buf, Register len, Register table,
+                                        Register t0,  Register t1,  Register t2,  Register t3) {
+  assert_different_registers(crc, buf, len, table);
+
+  Register  data = t0;                   // Holds the current byte to be folded into crc.
+
+  BLOCK_COMMENT("kernel_crc32_1byte {");
+
+  // Process all bytes in a single-byte loop.
+  update_byteLoop_crc32(crc, buf, len, table, data, true, true);
+
+  BLOCK_COMMENT("} kernel_crc32_1byte");
+}
+
+void MacroAssembler::kernel_crc32_singleByte(Register crc, Register buf, Register len, Register table, Register tmp) {
+  assert_different_registers(crc, buf, /* len,  not used!! */ table, tmp);
+
+  BLOCK_COMMENT("kernel_crc32_singleByte:");
+  nand(crc, crc, crc);       // ~c
+
+  lbz(tmp, 0, buf);          // Byte from buffer, zero-extended.
+  update_byte_crc32(crc, tmp, table);
+
+  nand(crc, crc, crc);       // ~c
+}
+
 // dest_lo += src1 + src2
 // dest_hi += carry1 + carry2
 void MacroAssembler::add2_with_carry(Register dest_hi,
@@ -3515,7 +3928,7 @@
   b(L_multiply);
 
 
-  bind( L_one_x ); // Load one 32 bit portion of x as (0,value).
+  bind(L_one_x); // Load one 32 bit portion of x as (0,value).
 
   lwz(x_xstart, 0, x);
   b(L_first_loop);
@@ -3534,7 +3947,7 @@
   //  z[kdx] = (jlong)product;
 
   sldi(tmp, idx, LogBytesPerInt);
-  if ( offset ) {
+  if (offset) {
     addi(tmp, tmp, offset);
   }
   ldx(yz_idx, y, tmp);
@@ -3551,7 +3964,7 @@
   add2_with_carry(product_high, product, carry, yz_idx);
 
   sldi(tmp, idx, LogBytesPerInt);
-  if ( offset ) {
+  if (offset) {
     addi(tmp, tmp, offset);
   }
 #ifdef VM_LITTLE_ENDIAN
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -702,6 +702,27 @@
                        Register tmp6, Register tmp7, Register tmp8, Register tmp9, Register tmp10,
                        Register tmp11, Register tmp12, Register tmp13);
 
+  // CRC32 Intrinsics.
+  void load_reverse_32(Register dst, Register src);
+  int  crc32_table_columns(Register table, Register tc0, Register tc1, Register tc2, Register tc3);
+  void fold_byte_crc32(Register crc, Register val, Register table, Register tmp);
+  void fold_8bit_crc32(Register crc, Register table, Register tmp);
+  void update_byte_crc32(Register crc, Register val, Register table);
+  void update_byteLoop_crc32(Register crc, Register buf, Register len, Register table,
+                             Register data, bool loopAlignment, bool invertCRC);
+  void update_1word_crc32(Register crc, Register buf, Register table, int bufDisp, int bufInc,
+                          Register t0,  Register t1,  Register t2,  Register t3,
+                          Register tc0, Register tc1, Register tc2, Register tc3);
+  void kernel_crc32_2word(Register crc, Register buf, Register len, Register table,
+                          Register t0,  Register t1,  Register t2,  Register t3,
+                          Register tc0, Register tc1, Register tc2, Register tc3);
+  void kernel_crc32_1word(Register crc, Register buf, Register len, Register table,
+                          Register t0,  Register t1,  Register t2,  Register t3,
+                          Register tc0, Register tc1, Register tc2, Register tc3);
+  void kernel_crc32_1byte(Register crc, Register buf, Register len, Register table,
+                          Register t0,  Register t1,  Register t2,  Register t3);
+  void kernel_crc32_singleByte(Register crc, Register buf, Register len, Register table, Register tmp);
+
   //
   // Debugging
   //
--- a/hotspot/src/cpu/ppc/vm/relocInfo_ppc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/relocInfo_ppc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -27,6 +27,7 @@
 #include "asm/assembler.inline.hpp"
 #include "code/relocInfo.hpp"
 #include "nativeInst_ppc.hpp"
+#include "oops/klass.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/safepoint.hpp"
 
--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -2126,6 +2126,54 @@
     return start;
   }
 
+  /**
+   * Arguments:
+   *
+   * Inputs:
+   *   R3_ARG1    - int   crc
+   *   R4_ARG2    - byte* buf
+   *   R5_ARG3    - int   length (of buffer)
+   *
+   * scratch:
+   *   R6_ARG4    - crc table address
+   *   R7_ARG5    - tmp1
+   *   R8_ARG6    - tmp2
+   *
+   * Ouput:
+   *   R3_RET     - int   crc result
+   */
+  // Compute CRC32 function.
+  address generate_CRC32_updateBytes(const char* name) {
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", name);
+    address start = __ function_entry();  // Remember stub start address (is rtn value).
+
+    // arguments to kernel_crc32:
+    Register       crc     = R3_ARG1;  // Current checksum, preset by caller or result from previous call.
+    Register       data    = R4_ARG2;  // source byte array
+    Register       dataLen = R5_ARG3;  // #bytes to process
+    Register       table   = R6_ARG4;  // crc table address
+
+    Register       t0      = R9;       // work reg for kernel* emitters
+    Register       t1      = R10;      // work reg for kernel* emitters
+    Register       t2      = R11;      // work reg for kernel* emitters
+    Register       t3      = R12;      // work reg for kernel* emitters
+
+    BLOCK_COMMENT("Stub body {");
+    assert_different_registers(crc, data, dataLen, table);
+
+    StubRoutines::ppc64::generate_load_crc_table_addr(_masm, table);
+
+    __ kernel_crc32_1byte(crc, data, dataLen, table, t0, t1, t2, t3);
+
+    BLOCK_COMMENT("return");
+    __ mr_if_needed(R3_RET, crc);      // Updated crc is function result. No copying required (R3_ARG1 == R3_RET).
+    __ blr();
+
+    BLOCK_COMMENT("} Stub body");
+    return start;
+  }
+
   // Initialization
   void generate_initial() {
     // Generates all stubs and initializes the entry points
@@ -2144,6 +2192,12 @@
     StubRoutines::_throw_StackOverflowError_entry   =
       generate_throw_exception("StackOverflowError throw_exception",
                                CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError), false);
+
+    // CRC32 Intrinsics.
+    if (UseCRC32Intrinsics) {
+      StubRoutines::_crc_table_adr    = (address)StubRoutines::ppc64::_crc_table;
+      StubRoutines::_updateBytesCRC32 = generate_CRC32_updateBytes("CRC32_updateBytes");
+    }
   }
 
   void generate_all() {
--- a/hotspot/src/cpu/ppc/vm/stubRoutines_ppc_64.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/stubRoutines_ppc_64.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2014 SAP AG. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2012, 2015 SAP AG. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,457 @@
  *
  */
 
+#include "asm/macroAssembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+
 // Implementation of the platform-specific part of StubRoutines - for
 // a description of how to extend it, see the stubRoutines.hpp file.
 
 
+#define __ masm->
+
+// CRC32 Intrinsics.
+void StubRoutines::ppc64::generate_load_crc_table_addr(MacroAssembler* masm, Register table) {
+  __ load_const(table, StubRoutines::_crc_table_adr);
+}
+
+// CRC32 Intrinsics.
+/**
+ *  crc_table[] from jdk/src/share/native/java/util/zip/zlib-1.2.8/crc32.h
+ */
+juint StubRoutines::ppc64::_crc_table[CRC32_TABLES][CRC32_COLUMN_SIZE] = {
+  {
+    0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
+    0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
+    0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
+    0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
+    0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
+    0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
+    0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
+    0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
+    0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
+    0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
+    0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
+    0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
+    0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
+    0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
+    0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
+    0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
+    0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
+    0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
+    0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
+    0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
+    0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
+    0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
+    0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
+    0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
+    0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
+    0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
+    0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
+    0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
+    0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
+    0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
+    0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
+    0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
+    0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
+    0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
+    0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
+    0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
+    0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
+    0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
+    0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
+    0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
+    0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
+    0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
+    0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
+    0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
+    0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
+    0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
+    0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
+    0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
+    0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
+    0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
+    0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
+    0x2d02ef8dUL
+#ifdef  CRC32_BYFOUR
+  },
+  {
+    0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
+    0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
+    0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
+    0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
+    0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
+    0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
+    0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
+    0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
+    0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
+    0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
+    0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
+    0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
+    0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
+    0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
+    0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
+    0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
+    0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
+    0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
+    0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
+    0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
+    0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
+    0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
+    0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
+    0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
+    0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
+    0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
+    0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
+    0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
+    0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
+    0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
+    0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
+    0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
+    0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
+    0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
+    0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
+    0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
+    0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
+    0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
+    0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
+    0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
+    0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
+    0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
+    0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
+    0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
+    0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
+    0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
+    0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
+    0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
+    0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
+    0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
+    0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
+    0x9324fd72UL
+  },
+  {
+    0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
+    0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
+    0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
+    0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
+    0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
+    0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
+    0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
+    0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
+    0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
+    0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
+    0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
+    0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
+    0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
+    0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
+    0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
+    0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
+    0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
+    0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
+    0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
+    0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
+    0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
+    0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
+    0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
+    0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
+    0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
+    0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
+    0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
+    0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
+    0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
+    0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
+    0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
+    0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
+    0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
+    0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
+    0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
+    0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
+    0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
+    0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
+    0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
+    0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
+    0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
+    0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
+    0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
+    0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
+    0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
+    0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
+    0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
+    0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
+    0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
+    0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
+    0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
+    0xbe9834edUL
+  },
+  {
+    0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
+    0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
+    0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
+    0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
+    0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
+    0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
+    0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
+    0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
+    0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
+    0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
+    0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
+    0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
+    0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
+    0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
+    0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
+    0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
+    0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
+    0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
+    0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
+    0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
+    0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
+    0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
+    0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
+    0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
+    0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
+    0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
+    0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
+    0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
+    0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
+    0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
+    0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
+    0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
+    0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
+    0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
+    0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
+    0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
+    0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
+    0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
+    0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
+    0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
+    0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
+    0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
+    0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
+    0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
+    0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
+    0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
+    0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
+    0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
+    0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
+    0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
+    0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
+    0xde0506f1UL
+  },
+  {
+    0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
+    0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
+    0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
+    0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
+    0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
+    0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
+    0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
+    0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
+    0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
+    0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
+    0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
+    0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
+    0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
+    0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
+    0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
+    0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
+    0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
+    0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
+    0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
+    0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
+    0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
+    0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
+    0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
+    0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
+    0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
+    0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
+    0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
+    0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
+    0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
+    0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
+    0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
+    0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
+    0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
+    0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
+    0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
+    0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
+    0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
+    0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
+    0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
+    0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
+    0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
+    0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
+    0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
+    0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
+    0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
+    0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
+    0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
+    0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
+    0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
+    0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
+    0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
+    0x8def022dUL
+  },
+  {
+    0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
+    0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
+    0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
+    0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
+    0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
+    0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
+    0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
+    0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
+    0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
+    0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
+    0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
+    0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
+    0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
+    0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
+    0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
+    0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
+    0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
+    0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
+    0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
+    0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
+    0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
+    0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
+    0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
+    0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
+    0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
+    0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
+    0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
+    0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
+    0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
+    0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
+    0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
+    0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
+    0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
+    0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
+    0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
+    0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
+    0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
+    0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
+    0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
+    0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
+    0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
+    0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
+    0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
+    0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
+    0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
+    0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
+    0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
+    0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
+    0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
+    0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
+    0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
+    0x72fd2493UL
+  },
+  {
+    0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
+    0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
+    0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
+    0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
+    0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
+    0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
+    0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
+    0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
+    0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
+    0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
+    0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
+    0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
+    0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
+    0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
+    0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
+    0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
+    0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
+    0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
+    0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
+    0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
+    0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
+    0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
+    0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
+    0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
+    0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
+    0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
+    0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
+    0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
+    0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
+    0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
+    0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
+    0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
+    0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
+    0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
+    0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
+    0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
+    0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
+    0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
+    0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
+    0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
+    0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
+    0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
+    0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
+    0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
+    0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
+    0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
+    0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
+    0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
+    0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
+    0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
+    0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
+    0xed3498beUL
+  },
+  {
+    0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
+    0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
+    0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
+    0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
+    0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
+    0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
+    0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
+    0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
+    0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
+    0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
+    0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
+    0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
+    0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
+    0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
+    0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
+    0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
+    0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
+    0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
+    0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
+    0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
+    0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
+    0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
+    0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
+    0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
+    0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
+    0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
+    0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
+    0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
+    0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
+    0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
+    0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
+    0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
+    0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
+    0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
+    0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
+    0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
+    0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
+    0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
+    0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
+    0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
+    0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
+    0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
+    0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
+    0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
+    0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
+    0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
+    0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
+    0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
+    0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
+    0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
+    0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
+    0xf10605deUL
+#endif
+  }
+};
--- a/hotspot/src/cpu/ppc/vm/stubRoutines_ppc_64.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/stubRoutines_ppc_64.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2013 SAP AG. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2012, 2015 SAP AG. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,11 +30,35 @@
 // definition. See stubRoutines.hpp for a description on how to
 // extend it.
 
-static bool    returns_to_call_stub(address return_pc)   { return return_pc == _call_stub_return_address; }
+static bool returns_to_call_stub(address return_pc) { return return_pc == _call_stub_return_address; }
 
 enum platform_dependent_constants {
   code_size1 = 20000,          // simply increase if too small (assembler will crash if too small)
   code_size2 = 20000           // simply increase if too small (assembler will crash if too small)
 };
 
+// CRC32 Intrinsics.
+#define CRC32_COLUMN_SIZE 256
+#define CRC32_BYFOUR
+#ifdef  CRC32_BYFOUR
+  #define CRC32_TABLES 8
+#else
+  #define CRC32_TABLES 1
+#endif
+
+class ppc64 {
+ friend class StubGenerator;
+
+ private:
+
+  // CRC32 Intrinsics.
+  static juint _crc_table[CRC32_TABLES][CRC32_COLUMN_SIZE];
+
+ public:
+
+  // CRC32 Intrinsics.
+  static void generate_load_crc_table_addr(MacroAssembler* masm, Register table);
+
+};
+
 #endif // CPU_PPC_VM_STUBROUTINES_PPC_64_HPP
--- a/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -58,7 +58,7 @@
 #define BLOCK_COMMENT(str) __ block_comment(str)
 #endif
 
-#define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
+#define BIND(label)        __ bind(label); BLOCK_COMMENT(#label ":")
 
 //-----------------------------------------------------------------------------
 
@@ -725,7 +725,7 @@
     }
     generate_counter_incr(&invocation_counter_overflow, NULL, NULL);
 
-    __ BIND(continue_after_compile);
+    BIND(continue_after_compile);
     // Reset the _do_not_unlock_if_synchronized flag.
     if (synchronized) {
       __ li(R0, 0);
@@ -785,7 +785,7 @@
   __ ld(signature_handler_fd, method_(signature_handler));
   __ twi_0(signature_handler_fd); // Order wrt. load of klass mirror and entry point (isync is below).
 
-  __ BIND(call_signature_handler);
+  BIND(call_signature_handler);
 
   // Before we call the signature handler we push a new frame to
   // protect the interpreter frame volatile registers when we return
@@ -855,7 +855,7 @@
     __ std(R0/*mirror*/, _ijava_state_neg(oop_tmp), R11_scratch1);
     // R4_ARG2 = &state->_oop_temp;
     __ addi(R4_ARG2, R11_scratch1, _ijava_state_neg(oop_tmp));
-    __ BIND(method_is_not_static);
+    BIND(method_is_not_static);
   }
 
   // At this point, arguments have been copied off the stack into
@@ -1068,14 +1068,14 @@
   // interpreter will do the correct thing. If it isn't interpreted
   // (call stub/compiled code) we will change our return and continue.
 
-  __ BIND(exception_return_sync_check);
+  BIND(exception_return_sync_check);
 
   if (synchronized) {
     // Don't check for exceptions since we're still in the i2n frame. Do that
     // manually afterwards.
     unlock_method(false);
   }
-  __ BIND(exception_return_sync_check_already_unlocked);
+  BIND(exception_return_sync_check_already_unlocked);
 
   const Register return_pc = R31;
 
@@ -1240,6 +1240,179 @@
   return entry;
 }
 
+// CRC32 Intrinsics.
+//
+// Contract on scratch and work registers.
+// =======================================
+//
+// On ppc, the register set {R2..R12} is available in the interpreter as scratch/work registers.
+// You should, however, keep in mind that {R3_ARG1..R10_ARG8} is the C-ABI argument register set.
+// You can't rely on these registers across calls.
+//
+// The generators for CRC32_update and for CRC32_updateBytes use the
+// scratch/work register set internally, passing the work registers
+// as arguments to the MacroAssembler emitters as required.
+//
+// R3_ARG1..R6_ARG4 are preset to hold the incoming java arguments.
+// Their contents is not constant but may change according to the requirements
+// of the emitted code.
+//
+// All other registers from the scratch/work register set are used "internally"
+// and contain garbage (i.e. unpredictable values) once blr() is reached.
+// Basically, only R3_RET contains a defined value which is the function result.
+//
+/**
+ * Method entry for static native methods:
+ *   int java.util.zip.CRC32.update(int crc, int b)
+ */
+address InterpreterGenerator::generate_CRC32_update_entry() {
+  address start = __ pc();  // Remember stub start address (is rtn value).
+
+  if (UseCRC32Intrinsics) {
+    Label slow_path;
+
+    // Safepoint check
+    const Register sync_state = R11_scratch1;
+    int sync_state_offs = __ load_const_optimized(sync_state, SafepointSynchronize::address_of_state(), /*temp*/R0, true);
+    __ lwz(sync_state, sync_state_offs, sync_state);
+    __ cmpwi(CCR0, sync_state, SafepointSynchronize::_not_synchronized);
+    __ bne(CCR0, slow_path);
+
+    // We don't generate local frame and don't align stack because
+    // we not even call stub code (we generate the code inline)
+    // and there is no safepoint on this path.
+
+    // Load java parameters.
+    // R15_esp is callers operand stack pointer, i.e. it points to the parameters.
+    const Register argP    = R15_esp;
+    const Register crc     = R3_ARG1;  // crc value
+    const Register data    = R4_ARG2;  // address of java byte value (kernel_crc32 needs address)
+    const Register dataLen = R5_ARG3;  // source data len (1 byte). Not used because calling the single-byte emitter.
+    const Register table   = R6_ARG4;  // address of crc32 table
+    const Register tmp     = dataLen;  // Reuse unused len register to show we don't actually need a separate tmp here.
+
+    BLOCK_COMMENT("CRC32_update {");
+
+    // Arguments are reversed on java expression stack
+#ifdef VM_LITTLE_ENDIAN
+    __ addi(data, argP, 0+1*wordSize); // (stack) address of byte value. Emitter expects address, not value.
+                                       // Being passed as an int, the single byte is at offset +0.
+#else
+    __ addi(data, argP, 3+1*wordSize); // (stack) address of byte value. Emitter expects address, not value.
+                                       // Being passed from java as an int, the single byte is at offset +3.
+#endif
+    __ lwz(crc,  2*wordSize, argP);    // Current crc state, zero extend to 64 bit to have a clean register.
+
+    StubRoutines::ppc64::generate_load_crc_table_addr(_masm, table);
+    __ kernel_crc32_singleByte(crc, data, dataLen, table, tmp);
+
+    // Restore caller sp for c2i case and return.
+    __ mr(R1_SP, R21_sender_SP); // Cut the stack back to where the caller started.
+    __ blr();
+
+    // Generate a vanilla native entry as the slow path.
+    BLOCK_COMMENT("} CRC32_update");
+    BIND(slow_path);
+  }
+
+  (void) generate_native_entry(false);
+
+  return start;
+}
+
+// CRC32 Intrinsics.
+/**
+ * Method entry for static native methods:
+ *   int java.util.zip.CRC32.updateBytes(     int crc, byte[] b,  int off, int len)
+ *   int java.util.zip.CRC32.updateByteBuffer(int crc, long* buf, int off, int len)
+ */
+address InterpreterGenerator::generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind) {
+  address start = __ pc();  // Remember stub start address (is rtn value).
+
+  if (UseCRC32Intrinsics) {
+    Label slow_path;
+
+    // Safepoint check
+    const Register sync_state = R11_scratch1;
+    int sync_state_offs = __ load_const_optimized(sync_state, SafepointSynchronize::address_of_state(), /*temp*/R0, true);
+    __ lwz(sync_state, sync_state_offs, sync_state);
+    __ cmpwi(CCR0, sync_state, SafepointSynchronize::_not_synchronized);
+    __ bne(CCR0, slow_path);
+
+    // We don't generate local frame and don't align stack because
+    // we not even call stub code (we generate the code inline)
+    // and there is no safepoint on this path.
+
+    // Load parameters.
+    // Z_esp is callers operand stack pointer, i.e. it points to the parameters.
+    const Register argP    = R15_esp;
+    const Register crc     = R3_ARG1;  // crc value
+    const Register data    = R4_ARG2;  // address of java byte array
+    const Register dataLen = R5_ARG3;  // source data len
+    const Register table   = R6_ARG4;  // address of crc32 table
+
+    const Register t0      = R9;       // scratch registers for crc calculation
+    const Register t1      = R10;
+    const Register t2      = R11;
+    const Register t3      = R12;
+
+    const Register tc0     = R2;       // registers to hold pre-calculated column addresses
+    const Register tc1     = R7;
+    const Register tc2     = R8;
+    const Register tc3     = table;    // table address is reconstructed at the end of kernel_crc32_* emitters
+
+    const Register tmp     = t0;       // Only used very locally to calculate byte buffer address.
+
+    // Arguments are reversed on java expression stack.
+    // Calculate address of start element.
+    if (kind == Interpreter::java_util_zip_CRC32_updateByteBuffer) { // Used for "updateByteBuffer direct".
+      BLOCK_COMMENT("CRC32_updateByteBuffer {");
+      // crc     @ (SP + 5W) (32bit)
+      // buf     @ (SP + 3W) (64bit ptr to long array)
+      // off     @ (SP + 2W) (32bit)
+      // dataLen @ (SP + 1W) (32bit)
+      // data = buf + off
+      __ ld(  data,    3*wordSize, argP);  // start of byte buffer
+      __ lwa( tmp,     2*wordSize, argP);  // byte buffer offset
+      __ lwa( dataLen, 1*wordSize, argP);  // #bytes to process
+      __ lwz( crc,     5*wordSize, argP);  // current crc state
+      __ add( data, data, tmp);            // Add byte buffer offset.
+    } else {                                                         // Used for "updateBytes update".
+      BLOCK_COMMENT("CRC32_updateBytes {");
+      // crc     @ (SP + 4W) (32bit)
+      // buf     @ (SP + 3W) (64bit ptr to byte array)
+      // off     @ (SP + 2W) (32bit)
+      // dataLen @ (SP + 1W) (32bit)
+      // data = buf + off + base_offset
+      __ ld(  data,    3*wordSize, argP);  // start of byte buffer
+      __ lwa( tmp,     2*wordSize, argP);  // byte buffer offset
+      __ lwa( dataLen, 1*wordSize, argP);  // #bytes to process
+      __ add( data, data, tmp);            // add byte buffer offset
+      __ lwz( crc,     4*wordSize, argP);  // current crc state
+      __ addi(data, data, arrayOopDesc::base_offset_in_bytes(T_BYTE));
+    }
+
+    StubRoutines::ppc64::generate_load_crc_table_addr(_masm, table);
+
+    // Performance measurements show the 1word and 2word variants to be almost equivalent,
+    // with very light advantages for the 1word variant. We chose the 1word variant for
+    // code compactness.
+    __ kernel_crc32_1word(crc, data, dataLen, table, t0, t1, t2, t3, tc0, tc1, tc2, tc3);
+
+    // Restore caller sp for c2i case and return.
+    __ mr(R1_SP, R21_sender_SP); // Cut the stack back to where the caller started.
+    __ blr();
+
+    // Generate a vanilla native entry as the slow path.
+    BLOCK_COMMENT("} CRC32_updateBytes(Buffer)");
+    BIND(slow_path);
+  }
+
+  (void) generate_native_entry(false);
+
+  return start;
+}
+
 // These should never be compiled since the interpreter will prefer
 // the compiled version to the intrinsic version.
 bool AbstractInterpreter::can_be_compiled(methodHandle m) {
--- a/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -159,10 +159,18 @@
 
   assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
 
-  if (UseCRC32Intrinsics) {
-    if (!FLAG_IS_DEFAULT(UseCRC32Intrinsics))
-      warning("CRC32 intrinsics  are not available on this CPU");
-    FLAG_SET_DEFAULT(UseCRC32Intrinsics, false);
+  // Implementation does not use any of the vector instructions
+  // available with Power8. Their exploitation is still pending.
+  if (!UseCRC32Intrinsics) {
+    if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
+      FLAG_SET_DEFAULT(UseCRC32Intrinsics, true);
+    }
+  }
+
+  if (UseCRC32CIntrinsics) {
+    if (!FLAG_IS_DEFAULT(UseCRC32CIntrinsics))
+      warning("CRC32C intrinsics are not available on this CPU");
+    FLAG_SET_DEFAULT(UseCRC32CIntrinsics, false);
   }
 
   // The AES intrinsic stubs require AES instruction support.
@@ -192,12 +200,6 @@
     FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
   }
 
-  if (UseCRC32CIntrinsics) {
-    if (!FLAG_IS_DEFAULT(UseCRC32CIntrinsics))
-      warning("CRC32C intrinsics are not available on this CPU");
-    FLAG_SET_DEFAULT(UseCRC32CIntrinsics, false);
-  }
-
   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
     UseMultiplyToLenIntrinsic = true;
   }
--- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -30,6 +30,7 @@
 #include "interpreter/interpreter.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.hpp"
+#include "oops/klass.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/interfaceSupport.hpp"
--- a/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -26,6 +26,7 @@
 #include "asm/assembler.hpp"
 #include "code/relocInfo.hpp"
 #include "nativeInst_sparc.hpp"
+#include "oops/klass.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/safepoint.hpp"
 
--- a/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -31,6 +31,7 @@
 #include "interpreter/interpreter.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.hpp"
+#include "oops/klass.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/interfaceSupport.hpp"
--- a/hotspot/src/cpu/x86/vm/relocInfo_x86.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/x86/vm/relocInfo_x86.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -26,6 +26,7 @@
 #include "asm/macroAssembler.hpp"
 #include "code/relocInfo.hpp"
 #include "nativeInst_x86.hpp"
+#include "oops/klass.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/safepoint.hpp"
 
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -285,7 +285,7 @@
     CPU_AVX512BW = (1 << 31)
   } cpuFeatureFlags;
 
-#define CPU_AVX512VL 0x100000000 // EVEX instructions with smaller vector length : enums are limited to 32bit
+#define CPU_AVX512VL UCONST64(0x100000000) // EVEX instructions with smaller vector length : enums are limited to 32bit
 
   enum {
     // AMD
--- a/hotspot/src/os/aix/vm/os_aix.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/os/aix/vm/os_aix.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1655,13 +1655,6 @@
 }
 
 void os::pd_print_cpu_info(outputStream* st, char* buf, size_t buflen) {
-  // cpu
-  st->print("CPU:");
-  st->print("total %d", os::processor_count());
-  // It's not safe to query number of active processors after crash
-  // st->print("(active %d)", os::active_processor_count());
-  st->print(" %s", VM_Version::cpu_features());
-  st->cr();
 }
 
 void os::print_siginfo(outputStream* st, void* siginfo) {
@@ -3483,7 +3476,6 @@
   // For now UseLargePages is just ignored.
   FLAG_SET_ERGO(bool, UseLargePages, false);
   _page_sizes[0] = 0;
-  _large_page_size = -1;
 
   // debug trace
   trcVerbose("os::vm_page_size %s\n", describe_pagesize(os::vm_page_size()));
--- a/hotspot/src/share/vm/ci/ciField.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/ci/ciField.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -181,6 +181,17 @@
     return (holder()->is_subclass_of(callsite_klass) && (name() == ciSymbol::target_name()));
   }
 
+  bool is_autobox_cache() {
+    ciSymbol* klass_name = holder()->name();
+    return (name() == ciSymbol::cache_field_name() &&
+            holder()->uses_default_loader() &&
+            (klass_name == ciSymbol::java_lang_Character_CharacterCache() ||
+             klass_name == ciSymbol::java_lang_Byte_ByteCache() ||
+             klass_name == ciSymbol::java_lang_Short_ShortCache() ||
+             klass_name == ciSymbol::java_lang_Integer_IntegerCache() ||
+             klass_name == ciSymbol::java_lang_Long_LongCache()));
+  }
+
   // Debugging output
   void print();
   void print_name_on(outputStream* st);
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -2023,10 +2023,10 @@
   bool lvt_allocated = false;
   u2 max_lvt_cnt = INITIAL_MAX_LVT_NUMBER;
   u2 max_lvtt_cnt = INITIAL_MAX_LVT_NUMBER;
-  u2* localvariable_table_length;
-  u2** localvariable_table_start;
-  u2* localvariable_type_table_length;
-  u2** localvariable_type_table_start;
+  u2* localvariable_table_length = NULL;
+  u2** localvariable_table_start = NULL;
+  u2* localvariable_type_table_length = NULL;
+  u2** localvariable_type_table_start = NULL;
   int method_parameters_length = -1;
   u1* method_parameters_data = NULL;
   bool method_parameters_seen = false;
@@ -4171,10 +4171,13 @@
         }
       }
 
+#ifdef ASSERT
       if (CheckIntrinsics) {
         // Check for orphan methods in the current class. A method m
         // of a class C is orphan if an intrinsic is defined for method m,
         // but class C does not declare m.
+        // The check is potentially expensive, therefore it is available
+        // only in debug builds.
 
         for (int id = vmIntrinsics::FIRST_ID; id < (int)vmIntrinsics::ID_LIMIT; id++) {
           if (id == vmIntrinsics::_compiledLambdaForm) {
@@ -4210,8 +4213,10 @@
           }
         }
       }
+#endif // ASSERT
     }
 
+
     if (cached_class_file != NULL) {
       // JVMTI: we have an InstanceKlass now, tell it about the cached bytes
       this_klass->set_cached_class_file(cached_class_file);
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -658,7 +658,10 @@
 // annotation. If CheckIntrinsics is enabled, the VM performs the following
 // checks when a class C is loaded: (1) all intrinsics defined by the VM for
 // class C are present in the loaded class file and are marked;
-// (2) an intrinsic is defined by the VM for all marked methods of class C.
+// (2) an intrinsic is defined by the VM for all marked methods of class C;
+// (3) check for orphan methods in class C (i.e., methods for which the VM
+// declares an intrinsic but that are not declared for the loaded class C.
+// Check (3) is available only in debug builds.
 //
 // If a mismatch is detected for a method, the VM behaves differently depending
 // on the type of build. A fastdebug build exits and reports an error on a mismatch.
@@ -679,6 +682,10 @@
    do_name(     getClass_name,                                   "getClass")                                            \
   do_intrinsic(_clone,                    java_lang_Object,       clone_name, void_object_signature,             F_R)   \
    do_name(     clone_name,                                      "clone")                                               \
+  do_intrinsic(_notify,                   java_lang_Object,       notify_name, void_method_signature,            F_R)   \
+   do_name(     notify_name,                                     "notify")                                              \
+  do_intrinsic(_notifyAll,                java_lang_Object,       notifyAll_name, void_method_signature,         F_R)   \
+   do_name(     notifyAll_name,                                  "notifyAll")                                           \
                                                                                                                         \
   /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */                                     \
   do_class(java_lang_Math,                "java/lang/Math")                                                             \
--- a/hotspot/src/share/vm/gc/g1/g1Allocator.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/gc/g1/g1Allocator.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -44,52 +44,52 @@
   size_t _summary_bytes_used;
 
 public:
-   G1Allocator(G1CollectedHeap* heap) :
-     _g1h(heap), _summary_bytes_used(0) { }
+  G1Allocator(G1CollectedHeap* heap) :
+    _g1h(heap), _summary_bytes_used(0) { }
 
-   static G1Allocator* create_allocator(G1CollectedHeap* g1h);
+  static G1Allocator* create_allocator(G1CollectedHeap* g1h);
 
-   virtual void init_mutator_alloc_region() = 0;
-   virtual void release_mutator_alloc_region() = 0;
+  virtual void init_mutator_alloc_region() = 0;
+  virtual void release_mutator_alloc_region() = 0;
 
-   virtual void init_gc_alloc_regions(EvacuationInfo& evacuation_info) = 0;
-   virtual void release_gc_alloc_regions(EvacuationInfo& evacuation_info) = 0;
-   virtual void abandon_gc_alloc_regions() = 0;
+  virtual void init_gc_alloc_regions(EvacuationInfo& evacuation_info) = 0;
+  virtual void release_gc_alloc_regions(EvacuationInfo& evacuation_info) = 0;
+  virtual void abandon_gc_alloc_regions() = 0;
 
-   virtual MutatorAllocRegion*    mutator_alloc_region(AllocationContext_t context) = 0;
-   virtual SurvivorGCAllocRegion* survivor_gc_alloc_region(AllocationContext_t context) = 0;
-   virtual OldGCAllocRegion*      old_gc_alloc_region(AllocationContext_t context) = 0;
-   virtual size_t                 used() = 0;
-   virtual bool                   is_retained_old_region(HeapRegion* hr) = 0;
+  virtual MutatorAllocRegion*    mutator_alloc_region(AllocationContext_t context) = 0;
+  virtual SurvivorGCAllocRegion* survivor_gc_alloc_region(AllocationContext_t context) = 0;
+  virtual OldGCAllocRegion*      old_gc_alloc_region(AllocationContext_t context) = 0;
+  virtual size_t                 used() = 0;
+  virtual bool                   is_retained_old_region(HeapRegion* hr) = 0;
 
-   void                           reuse_retained_old_region(EvacuationInfo& evacuation_info,
-                                                            OldGCAllocRegion* old,
-                                                            HeapRegion** retained);
+  void                           reuse_retained_old_region(EvacuationInfo& evacuation_info,
+                                                           OldGCAllocRegion* old,
+                                                           HeapRegion** retained);
 
-   size_t used_unlocked() const {
-     return _summary_bytes_used;
-   }
+  size_t used_unlocked() const {
+    return _summary_bytes_used;
+  }
 
-   void increase_used(size_t bytes) {
-     _summary_bytes_used += bytes;
-   }
+  void increase_used(size_t bytes) {
+    _summary_bytes_used += bytes;
+  }
 
-   void decrease_used(size_t bytes) {
-     assert(_summary_bytes_used >= bytes,
-            err_msg("invariant: _summary_bytes_used: " SIZE_FORMAT " should be >= bytes: " SIZE_FORMAT,
-                _summary_bytes_used, bytes));
-     _summary_bytes_used -= bytes;
-   }
+  void decrease_used(size_t bytes) {
+    assert(_summary_bytes_used >= bytes,
+           err_msg("invariant: _summary_bytes_used: " SIZE_FORMAT " should be >= bytes: " SIZE_FORMAT,
+               _summary_bytes_used, bytes));
+    _summary_bytes_used -= bytes;
+  }
 
-   void set_used(size_t bytes) {
-     _summary_bytes_used = bytes;
-   }
+  void set_used(size_t bytes) {
+    _summary_bytes_used = bytes;
+  }
 
-   virtual HeapRegion* new_heap_region(uint hrs_index,
-                                       G1BlockOffsetSharedArray* sharedOffsetArray,
-                                       MemRegion mr) {
-     return new HeapRegion(hrs_index, sharedOffsetArray, mr);
-   }
+  virtual HeapRegion* new_heap_region(uint hrs_index,
+                                      G1BlockOffsetSharedArray* sharedOffsetArray,
+                                      MemRegion mr) {
+    return new HeapRegion(hrs_index, sharedOffsetArray, mr);
+  }
 };
 
 // The default allocator for G1.
--- a/hotspot/src/share/vm/opto/compile.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/compile.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -140,6 +140,9 @@
   bool is_debug()                 const          { return _debug; }
   void set_debug(bool debug)                     { _debug = debug; }
   static const char* debug_option_name;
+
+  bool same_idx(node_idx_t k1, node_idx_t k2)  const { return idx(k1) == idx(k2); }
+  bool same_gen(node_idx_t k1, node_idx_t k2)  const { return gen(k1) == gen(k2); }
 };
 
 //------------------------------Compile----------------------------------------
--- a/hotspot/src/share/vm/opto/escape.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/escape.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -526,7 +526,7 @@
         if (adr->is_BoxLock())
           break;
         // Stored value escapes in unsafe access.
-        if ((opcode == Op_StoreP) && (adr_type == TypeRawPtr::BOTTOM)) {
+        if ((opcode == Op_StoreP) && adr_type->isa_rawptr()) {
           // Pointer stores in G1 barriers looks like unsafe access.
           // Ignore such stores to be able scalar replace non-escaping
           // allocations.
@@ -540,11 +540,11 @@
                 int offs = (int)igvn->find_intptr_t_con(adr->in(AddPNode::Offset), Type::OffsetBot);
                 if (offs == in_bytes(JavaThread::satb_mark_queue_offset() +
                                      PtrQueue::byte_offset_of_buf())) {
-                  break; // G1 pre barier previous oop value store.
+                  break; // G1 pre barrier previous oop value store.
                 }
                 if (offs == in_bytes(JavaThread::dirty_card_queue_offset() +
                                      PtrQueue::byte_offset_of_buf())) {
-                  break; // G1 post barier card address store.
+                  break; // G1 post barrier card address store.
                 }
               }
             }
@@ -725,7 +725,7 @@
         assert(ptn != NULL, "node should be registered");
         add_edge(adr_ptn, ptn);
         break;
-      } else if ((opcode == Op_StoreP) && (adr_type == TypeRawPtr::BOTTOM)) {
+      } else if ((opcode == Op_StoreP) && adr_type->isa_rawptr()) {
         // Stored value escapes in unsafe access.
         Node *val = n->in(MemNode::ValueIn);
         PointsToNode* ptn = ptnode_adr(val->_idx);
--- a/hotspot/src/share/vm/opto/library_call.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -225,6 +225,7 @@
   bool inline_pow();
   Node* finish_pow_exp(Node* result, Node* x, Node* y, const TypeFunc* call_type, address funcAddr, const char* funcName);
   bool inline_min_max(vmIntrinsics::ID id);
+  bool inline_notify(vmIntrinsics::ID id);
   Node* generate_min_max(vmIntrinsics::ID id, Node* x, Node* y);
   // This returns Type::AnyPtr, RawPtr, or OopPtr.
   int classify_unsafe_addr(Node* &base, Node* &offset);
@@ -776,6 +777,13 @@
   case vmIntrinsics::_min:
   case vmIntrinsics::_max:                      return inline_min_max(intrinsic_id());
 
+  case vmIntrinsics::_notify:
+  case vmIntrinsics::_notifyAll:
+    if (InlineNotify) {
+      return inline_notify(intrinsic_id());
+    }
+    return false;
+
   case vmIntrinsics::_addExactI:                return inline_math_addExactI(false /* add */);
   case vmIntrinsics::_addExactL:                return inline_math_addExactL(false /* add */);
   case vmIntrinsics::_decrementExactI:          return inline_math_subtractExactI(true /* decrement */);
@@ -2075,6 +2083,21 @@
           );
 }
 
+//----------------------------inline_notify-----------------------------------*
+bool LibraryCallKit::inline_notify(vmIntrinsics::ID id) {
+  const TypeFunc* ftype = OptoRuntime::monitor_notify_Type();
+  address func;
+  if (id == vmIntrinsics::_notify) {
+    func = OptoRuntime::monitor_notify_Java();
+  } else {
+    func = OptoRuntime::monitor_notifyAll_Java();
+  }
+  Node* call = make_runtime_call(RC_NO_LEAF, ftype, func, NULL, TypeRawPtr::BOTTOM, argument(0));
+  make_slow_call_ex(call, env()->Throwable_klass(), false);
+  return true;
+}
+
+
 //----------------------------inline_min_max-----------------------------------
 bool LibraryCallKit::inline_min_max(vmIntrinsics::ID id) {
   set_result(generate_min_max(id, argument(0), argument(1)));
@@ -2687,35 +2710,48 @@
   // of safe & unsafe memory.
   if (need_mem_bar) insert_mem_bar(Op_MemBarCPUOrder);
 
-  if (!is_store) {
-    MemNode::MemOrd mo = is_volatile ? MemNode::acquire : MemNode::unordered;
-    // To be valid, unsafe loads may depend on other conditions than
-    // the one that guards them: pin the Load node
-    Node* p = make_load(control(), adr, value_type, type, adr_type, mo, LoadNode::Pinned, is_volatile);
-    // load value
-    switch (type) {
-    case T_BOOLEAN:
-    case T_CHAR:
-    case T_BYTE:
-    case T_SHORT:
-    case T_INT:
-    case T_LONG:
-    case T_FLOAT:
-    case T_DOUBLE:
-      break;
-    case T_OBJECT:
-      if (need_read_barrier) {
-        insert_pre_barrier(heap_base_oop, offset, p, !(is_volatile || need_mem_bar));
+   if (!is_store) {
+    Node* p = NULL;
+    // Try to constant fold a load from a constant field
+    ciField* field = alias_type->field();
+    if (heap_base_oop != top() &&
+        field != NULL && field->is_constant() && field->layout_type() == type) {
+      // final or stable field
+      const Type* con_type = Type::make_constant(alias_type->field(), heap_base_oop);
+      if (con_type != NULL) {
+        p = makecon(con_type);
       }
-      break;
-    case T_ADDRESS:
-      // Cast to an int type.
-      p = _gvn.transform(new CastP2XNode(NULL, p));
-      p = ConvX2UL(p);
-      break;
-    default:
-      fatal(err_msg_res("unexpected type %d: %s", type, type2name(type)));
-      break;
+    }
+    if (p == NULL) {
+      MemNode::MemOrd mo = is_volatile ? MemNode::acquire : MemNode::unordered;
+      // To be valid, unsafe loads may depend on other conditions than
+      // the one that guards them: pin the Load node
+      p = make_load(control(), adr, value_type, type, adr_type, mo, LoadNode::Pinned, is_volatile);
+      // load value
+      switch (type) {
+      case T_BOOLEAN:
+      case T_CHAR:
+      case T_BYTE:
+      case T_SHORT:
+      case T_INT:
+      case T_LONG:
+      case T_FLOAT:
+      case T_DOUBLE:
+        break;
+      case T_OBJECT:
+        if (need_read_barrier) {
+          insert_pre_barrier(heap_base_oop, offset, p, !(is_volatile || need_mem_bar));
+        }
+        break;
+      case T_ADDRESS:
+        // Cast to an int type.
+        p = _gvn.transform(new CastP2XNode(NULL, p));
+        p = ConvX2UL(p);
+        break;
+      default:
+        fatal(err_msg_res("unexpected type %d: %s", type, type2name(type)));
+        break;
+      }
     }
     // The load node has the control of the preceding MemBarCPUOrder.  All
     // following nodes will have the control of the MemBarCPUOrder inserted at
--- a/hotspot/src/share/vm/opto/loopnode.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/loopnode.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -3682,7 +3682,6 @@
 }
 
 void PhaseIdealLoop::dump( IdealLoopTree *loop, uint idx, Node_List &rpo_list ) const {
-  CloneMap& cm = C->clone_map();
   loop->dump_head();
 
   // Now scan for CFG nodes in the same loop
@@ -3714,7 +3713,6 @@
         cached_idom = find_non_split_ctrl(cached_idom);
       }
       tty->print(" ID:%d",computed_idom->_idx);
-      cm.dump(n->_idx);
       n->dump();
       if( cached_idom != computed_idom ) {
         tty->print_cr("*** BROKEN IDOM!  Computed as: %d, cached as: %d",
@@ -3734,7 +3732,6 @@
           for( uint j = 0; j < loop->_nest; j++ )
             tty->print("  ");
           tty->print(" ");
-          cm.dump(m->_idx);
           m->dump();
         }
       }
--- a/hotspot/src/share/vm/opto/parse.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/parse.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -539,10 +539,6 @@
   void do_get_xxx(Node* obj, ciField* field, bool is_field);
   void do_put_xxx(Node* obj, ciField* field, bool is_field);
 
-  // loading from a constant field or the constant pool
-  // returns false if push failed (non-perm field constants only, not ldcs)
-  bool push_constant(ciConstant con, bool require_constant = false, bool is_autobox_cache = false, const Type* basic_type = NULL);
-
   // implementation of object creation bytecodes
   void emit_guard_for_new(ciInstanceKlass* klass);
   void do_new();
--- a/hotspot/src/share/vm/opto/parse2.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/parse2.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1478,8 +1478,10 @@
       }
       assert(constant.basic_type() != T_OBJECT || constant.as_object()->is_instance(),
              "must be java_mirror of klass");
-      bool pushed = push_constant(constant, true);
-      guarantee(pushed, "must be possible to push this constant");
+      const Type* con_type = Type::make_from_constant(constant);
+      if (con_type != NULL) {
+        push_node(con_type->basic_type(), makecon(con_type));
+      }
     }
 
     break;
--- a/hotspot/src/share/vm/opto/parse3.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/parse3.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -149,51 +149,10 @@
   // Does this field have a constant value?  If so, just push the value.
   if (field->is_constant()) {
     // final or stable field
-    const Type* stable_type = NULL;
-    if (FoldStableValues && field->is_stable()) {
-      stable_type = Type::get_const_type(field->type());
-      if (field->type()->is_array_klass()) {
-        int stable_dimension = field->type()->as_array_klass()->dimension();
-        stable_type = stable_type->is_aryptr()->cast_to_stable(true, stable_dimension);
-      }
-    }
-    if (field->is_static()) {
-      // final static field
-      if (C->eliminate_boxing()) {
-        // The pointers in the autobox arrays are always non-null.
-        ciSymbol* klass_name = field->holder()->name();
-        if (field->name() == ciSymbol::cache_field_name() &&
-            field->holder()->uses_default_loader() &&
-            (klass_name == ciSymbol::java_lang_Character_CharacterCache() ||
-             klass_name == ciSymbol::java_lang_Byte_ByteCache() ||
-             klass_name == ciSymbol::java_lang_Short_ShortCache() ||
-             klass_name == ciSymbol::java_lang_Integer_IntegerCache() ||
-             klass_name == ciSymbol::java_lang_Long_LongCache())) {
-          bool require_const = true;
-          bool autobox_cache = true;
-          if (push_constant(field->constant_value(), require_const, autobox_cache)) {
-            return;
-          }
-        }
-      }
-      if (push_constant(field->constant_value(), false, false, stable_type))
-        return;
-    } else {
-      // final or stable non-static field
-      // Treat final non-static fields of trusted classes (classes in
-      // java.lang.invoke and sun.invoke packages and subpackages) as
-      // compile time constants.
-      if (obj->is_Con()) {
-        const TypeOopPtr* oop_ptr = obj->bottom_type()->isa_oopptr();
-        ciObject* constant_oop = oop_ptr->const_oop();
-        ciConstant constant = field->constant_value_of(constant_oop);
-        if (FoldStableValues && field->is_stable() && constant.is_null_or_zero()) {
-          // fall through to field load; the field is not yet initialized
-        } else {
-          if (push_constant(constant, true, false, stable_type))
-            return;
-        }
-      }
+    const Type* con_type = Type::make_constant(field, obj);
+    if (con_type != NULL) {
+      push_node(con_type->basic_type(), makecon(con_type));
+      return;
     }
   }
 
@@ -362,39 +321,6 @@
   }
 }
 
-
-
-bool Parse::push_constant(ciConstant constant, bool require_constant, bool is_autobox_cache, const Type* stable_type) {
-  const Type* con_type = Type::make_from_constant(constant, require_constant, is_autobox_cache);
-  switch (constant.basic_type()) {
-  case T_ARRAY:
-  case T_OBJECT:
-    // cases:
-    //   can_be_constant    = (oop not scavengable || ScavengeRootsInCode != 0)
-    //   should_be_constant = (oop not scavengable || ScavengeRootsInCode >= 2)
-    // An oop is not scavengable if it is in the perm gen.
-    if (stable_type != NULL && con_type != NULL && con_type->isa_oopptr())
-      con_type = con_type->join_speculative(stable_type);
-    break;
-
-  case T_ILLEGAL:
-    // Invalid ciConstant returned due to OutOfMemoryError in the CI
-    assert(C->env()->failing(), "otherwise should not see this");
-    // These always occur because of object types; we are going to
-    // bail out anyway, so make the stack depths match up
-    push( zerocon(T_OBJECT) );
-    return false;
-  }
-
-  if (con_type == NULL)
-    // we cannot inline the oop, but we can use it later to narrow a type
-    return false;
-
-  push_node(constant.basic_type(), makecon(con_type));
-  return true;
-}
-
-
 //=============================================================================
 void Parse::do_anewarray() {
   bool will_link;
--- a/hotspot/src/share/vm/opto/runtime.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/runtime.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -96,6 +96,8 @@
 address OptoRuntime::_g1_wb_post_Java                             = NULL;
 address OptoRuntime::_vtable_must_compile_Java                    = NULL;
 address OptoRuntime::_complete_monitor_locking_Java               = NULL;
+address OptoRuntime::_monitor_notify_Java                         = NULL;
+address OptoRuntime::_monitor_notifyAll_Java                      = NULL;
 address OptoRuntime::_rethrow_Java                                = NULL;
 
 address OptoRuntime::_slow_arraycopy_Java                         = NULL;
@@ -144,6 +146,8 @@
   gen(env, _g1_wb_pre_Java                 , g1_wb_pre_Type               , SharedRuntime::g1_wb_pre        ,    0 , false, false, false);
   gen(env, _g1_wb_post_Java                , g1_wb_post_Type              , SharedRuntime::g1_wb_post       ,    0 , false, false, false);
   gen(env, _complete_monitor_locking_Java  , complete_monitor_enter_Type  , SharedRuntime::complete_monitor_locking_C, 0, false, false, false);
+  gen(env, _monitor_notify_Java            , monitor_notify_Type          , monitor_notify_C                ,    0 , false, false, false);
+  gen(env, _monitor_notifyAll_Java         , monitor_notify_Type          , monitor_notifyAll_C             ,    0 , false, false, false);
   gen(env, _rethrow_Java                   , rethrow_Type                 , rethrow_C                       ,    2 , true , false, true );
 
   gen(env, _slow_arraycopy_Java            , slow_arraycopy_Type          , SharedRuntime::slow_arraycopy_C ,    0 , false, false, false);
@@ -426,6 +430,45 @@
   thread->set_vm_result(obj);
 JRT_END
 
+JRT_BLOCK_ENTRY(void, OptoRuntime::monitor_notify_C(oopDesc* obj, JavaThread *thread))
+
+  // Very few notify/notifyAll operations find any threads on the waitset, so
+  // the dominant fast-path is to simply return.
+  // Relatedly, it's critical that notify/notifyAll be fast in order to
+  // reduce lock hold times.
+  if (!SafepointSynchronize::is_synchronizing()) {
+    if (ObjectSynchronizer::quick_notify(obj, thread, false)) {
+      return;
+    }
+  }
+
+  // This is the case the fast-path above isn't provisioned to handle.
+  // The fast-path is designed to handle frequently arising cases in an efficient manner.
+  // (The fast-path is just a degenerate variant of the slow-path).
+  // Perform the dreaded state transition and pass control into the slow-path.
+  JRT_BLOCK;
+  Handle h_obj(THREAD, obj);
+  ObjectSynchronizer::notify(h_obj, CHECK);
+  JRT_BLOCK_END;
+JRT_END
+
+JRT_BLOCK_ENTRY(void, OptoRuntime::monitor_notifyAll_C(oopDesc* obj, JavaThread *thread))
+
+  if (!SafepointSynchronize::is_synchronizing() ) {
+    if (ObjectSynchronizer::quick_notify(obj, thread, true)) {
+      return;
+    }
+  }
+
+  // This is the case the fast-path above isn't provisioned to handle.
+  // The fast-path is designed to handle frequently arising cases in an efficient manner.
+  // (The fast-path is just a degenerate variant of the slow-path).
+  // Perform the dreaded state transition and pass control into the slow-path.
+  JRT_BLOCK;
+  Handle h_obj(THREAD, obj);
+  ObjectSynchronizer::notifyall(h_obj, CHECK);
+  JRT_BLOCK_END;
+JRT_END
 
 const TypeFunc *OptoRuntime::new_instance_Type() {
   // create input type (domain)
@@ -604,14 +647,26 @@
   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL;  // Object to be Locked
   fields[TypeFunc::Parms+1] = TypeRawPtr::BOTTOM;    // Address of stack location for lock - BasicLock
   fields[TypeFunc::Parms+2] = TypeRawPtr::BOTTOM;    // Thread pointer (Self)
-  const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+3,fields);
+  const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+3, fields);
 
   // create result type (range)
   fields = TypeTuple::fields(0);
 
-  const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0,fields);
+  const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
+
+  return TypeFunc::make(domain, range);
+}
 
-  return TypeFunc::make(domain,range);
+const TypeFunc *OptoRuntime::monitor_notify_Type() {
+  // create input type (domain)
+  const Type **fields = TypeTuple::fields(1);
+  fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL;  // Object to be Locked
+  const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
+
+  // create result type (range)
+  fields = TypeTuple::fields(0);
+  const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
+  return TypeFunc::make(domain, range);
 }
 
 const TypeFunc* OptoRuntime::flush_windows_Type() {
--- a/hotspot/src/share/vm/opto/runtime.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/runtime.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -146,6 +146,8 @@
   static address _vtable_must_compile_Java;
   static address _complete_monitor_locking_Java;
   static address _rethrow_Java;
+  static address _monitor_notify_Java;
+  static address _monitor_notifyAll_Java;
 
   static address _slow_arraycopy_Java;
   static address _register_finalizer_Java;
@@ -186,6 +188,9 @@
   static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
   static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
 
+  static void monitor_notify_C(oopDesc* obj, JavaThread* thread);
+  static void monitor_notifyAll_C(oopDesc* obj, JavaThread* thread);
+
 private:
 
   // Implicit exception support
@@ -244,7 +249,9 @@
   static address g1_wb_pre_Java()                        { return _g1_wb_pre_Java; }
   static address g1_wb_post_Java()                       { return _g1_wb_post_Java; }
   static address vtable_must_compile_stub()              { return _vtable_must_compile_Java; }
-  static address complete_monitor_locking_Java()         { return _complete_monitor_locking_Java;   }
+  static address complete_monitor_locking_Java()         { return _complete_monitor_locking_Java; }
+  static address monitor_notify_Java()                   { return _monitor_notify_Java; }
+  static address monitor_notifyAll_Java()                { return _monitor_notifyAll_Java; }
 
   static address slow_arraycopy_Java()                   { return _slow_arraycopy_Java; }
   static address register_finalizer_Java()               { return _register_finalizer_Java; }
@@ -285,6 +292,7 @@
   static const TypeFunc* g1_wb_post_Type();
   static const TypeFunc* complete_monitor_enter_Type();
   static const TypeFunc* complete_monitor_exit_Type();
+  static const TypeFunc* monitor_notify_Type();
   static const TypeFunc* uncommon_trap_Type();
   static const TypeFunc* athrow_Type();
   static const TypeFunc* rethrow_Type();
--- a/hotspot/src/share/vm/opto/superword.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/superword.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -74,9 +74,15 @@
   _do_vector_loop(phase->C->do_vector_loop()),  // whether to do vectorization/simd style
   _ii_first(-1),                          // first loop generation index - only if do_vector_loop()
   _ii_last(-1),                           // last loop generation index - only if do_vector_loop()
-  _ii_order(arena(), 8, 0, 0),
-  _vector_loop_debug(phase->C->has_method() && phase->C->method_has_option("VectorizeDebug"))
-{}
+  _ii_order(arena(), 8, 0, 0)
+{
+#ifndef PRODUCT
+  _vector_loop_debug = 0;
+  if (_phase->C->method() != NULL) {
+    _phase->C->method()->has_option_value("VectorizeDebug", _vector_loop_debug);
+  }
+#endif
+}
 
 //------------------------------transform_loop---------------------------
 void SuperWord::transform_loop(IdealLoopTree* lpt, bool do_optimization) {
@@ -90,7 +96,6 @@
   if (!cl->is_valid_counted_loop()) return; // skip malformed counted loop
 
   if (!cl->is_main_loop() ) return; // skip normal, pre, and post loops
-
   // Check for no control flow in body (other than exit)
   Node *cl_exit = cl->loopexit();
   if (cl_exit->in(0) != lpt->_head) return;
@@ -425,13 +430,15 @@
       // this reference to a vector-aligned address.
       best_align_to_mem_ref = mem_ref;
       best_iv_adjustment = iv_adjustment;
+      NOT_PRODUCT(find_adjacent_refs_trace_1(best_align_to_mem_ref, best_iv_adjustment);)
     }
 
     SWPointer align_to_ref_p(mem_ref, this, NULL, false);
     // Set alignment relative to "align_to_ref" for all related memory operations.
     for (int i = memops.size() - 1; i >= 0; i--) {
       MemNode* s = memops.at(i)->as_Mem();
-      if (isomorphic(s, mem_ref)) {
+      if (isomorphic(s, mem_ref) &&
+           (!_do_vector_loop || same_origin_idx(s, mem_ref))) {
         SWPointer p2(s, this, NULL, false);
         if (p2.comparable(align_to_ref_p)) {
           int align = memory_alignment(s, iv_adjustment);
@@ -496,7 +503,7 @@
               Node_List* pair = new Node_List();
               pair->push(s1);
               pair->push(s2);
-              if (!_do_vector_loop || _clone_map.idx(s1->_idx) == _clone_map.idx(s2->_idx)) {
+              if (!_do_vector_loop || same_origin_idx(s1, s2)) {
                 _packset.append(pair);
               }
             }
@@ -533,8 +540,12 @@
           memops.push(s);
         }
         MemNode* best_align_to_mem_ref = find_align_to_ref(memops);
-        if (best_align_to_mem_ref == NULL) break;
+        if (best_align_to_mem_ref == NULL) {
+          NOT_PRODUCT(if (TraceSuperWord) tty->print_cr("SuperWord::find_adjacent_refs(): best_align_to_mem_ref == NULL");)
+          break;
+        }
         best_iv_adjustment = get_iv_adjustment(best_align_to_mem_ref);
+        NOT_PRODUCT(find_adjacent_refs_trace_1(best_align_to_mem_ref, best_iv_adjustment);)
         // Restore list.
         while (memops.size() > orig_msize)
           (void)memops.pop();
@@ -560,6 +571,16 @@
 #endif
 }
 
+#ifndef PRODUCT
+void SuperWord::find_adjacent_refs_trace_1(Node* best_align_to_mem_ref, int best_iv_adjustment) {
+  if (is_trace_adjacent()) {
+    tty->print("SuperWord::find_adjacent_refs best_align_to_mem_ref = %d, best_iv_adjustment = %d",
+       best_align_to_mem_ref->_idx, best_iv_adjustment);
+       best_align_to_mem_ref->dump();
+  }
+}
+#endif
+
 //------------------------------find_align_to_ref---------------------------
 // Find a memory reference to align the loop induction variable to.
 // Looks first at stores then at loads, looking for a memory reference
@@ -756,9 +777,11 @@
   }
 
 #ifndef PRODUCT
-  if (TraceSuperWord)
-    tty->print_cr("\noffset = %d iv_adjust = %d elt_size = %d scale = %d iv_stride = %d vect_size %d",
-                  offset, iv_adjustment, elt_size, scale, iv_stride(), vw);
+  if (TraceSuperWord) {
+    tty->print("SuperWord::get_iv_adjustment: n = %d, noffset = %d iv_adjust = %d elt_size = %d scale = %d iv_stride = %d vect_size %d: ",
+      mem_ref->_idx, offset, iv_adjustment, elt_size, scale, iv_stride(), vw);
+    mem_ref->dump();
+  }
 #endif
   return iv_adjustment;
 }
@@ -863,12 +886,14 @@
   Node* n = start;
   Node* prev = NULL;
   while (true) {
+    NOT_PRODUCT( if(is_trace_mem_slice()) tty->print_cr("SuperWord::mem_slice_preds: n %d", n->_idx);)
     assert(in_bb(n), "must be in block");
     for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
       Node* out = n->fast_out(i);
       if (out->is_Load()) {
         if (in_bb(out)) {
           preds.push(out);
+          NOT_PRODUCT(if (TraceSuperWord && Verbose) tty->print_cr("SuperWord::mem_slice_preds: added pred(%d)", out->_idx);)
         }
       } else {
         // FIXME
@@ -883,10 +908,11 @@
         } else {
           assert(out == prev || prev == NULL, "no branches off of store slice");
         }
-      }
-    }
+      }//else
+    }//for
     if (n == stop) break;
     preds.push(n);
+    NOT_PRODUCT(if (TraceSuperWord && Verbose) tty->print_cr("SuperWord::mem_slice_preds: added pred(%d)", n->_idx);)
     prev = n;
     assert(n->is_Mem(), err_msg_res("unexpected node %s", n->Name()));
     n = n->in(MemNode::Memory);
@@ -2140,18 +2166,38 @@
     } else {
       _stk.pop(); // Remove post-visited node from stack
     }
-  }
-
+  }//while
+
+  int ii_current = -1;
+  unsigned int load_idx = (unsigned int)-1;
+  _ii_order.clear();
   // Create real map of block indices for nodes
   for (int j = 0; j < _block.length(); j++) {
     Node* n = _block.at(j);
     set_bb_idx(n, j);
-  }
+    if (_do_vector_loop && n->is_Load()) {
+      if (ii_current == -1) {
+        ii_current = _clone_map.gen(n->_idx);
+        _ii_order.push(ii_current);
+        load_idx = _clone_map.idx(n->_idx);
+      } else if (_clone_map.idx(n->_idx) == load_idx && _clone_map.gen(n->_idx) != ii_current) {
+        ii_current = _clone_map.gen(n->_idx);
+        _ii_order.push(ii_current);
+      }
+    }
+  }//for
 
   // Ensure extra info is allocated.
   initialize_bb();
 
 #ifndef PRODUCT
+  if (_vector_loop_debug && _ii_order.length() > 0) {
+    tty->print("SuperWord::construct_bb: List of generations: ");
+    for (int jj = 0; jj < _ii_order.length(); ++jj) {
+      tty->print("  %d:%d", jj, _ii_order.at(jj));
+    }
+    tty->print_cr(" ");
+  }
   if (TraceSuperWord) {
     print_bb();
     tty->print_cr("\ndata entry nodes: %s", _data_entry.length() > 0 ? "" : "NONE");
@@ -2312,18 +2358,27 @@
 //------------------------------memory_alignment---------------------------
 // Alignment within a vector memory reference
 int SuperWord::memory_alignment(MemNode* s, int iv_adjust) {
+  #ifndef PRODUCT
+    if(TraceSuperWord && Verbose) {
+      tty->print("SuperWord::memory_alignment within a vector memory reference for %d:  ", s->_idx); s->dump();
+    }
+  #endif
+  NOT_PRODUCT(SWPointer::Tracer::Depth ddd(0);)
   SWPointer p(s, this, NULL, false);
   if (!p.valid()) {
+    NOT_PRODUCT(if(is_trace_alignment()) tty->print("SWPointer::memory_alignment: SWPointer p invalid, return bottom_align");)
     return bottom_align;
   }
   int vw = vector_width_in_bytes(s);
   if (vw < 2) {
+    NOT_PRODUCT(if(is_trace_alignment()) tty->print_cr("SWPointer::memory_alignment: vector_width_in_bytes < 2, return bottom_align");)
     return bottom_align; // No vectors for this type
   }
   int offset  = p.offset_in_bytes();
   offset     += iv_adjust*p.memory_size();
   int off_rem = offset % vw;
   int off_mod = off_rem >= 0 ? off_rem : off_rem + vw;
+  NOT_PRODUCT(if(TraceSuperWord && Verbose) tty->print_cr("SWPointer::memory_alignment: off_rem = %d, off_mod = %d", off_rem, off_mod);)
   return off_mod;
 }
 
@@ -2732,13 +2787,20 @@
 
 
 //==============================SWPointer===========================
-
+#ifndef PRODUCT
+int SWPointer::Tracer::_depth = 0;
+#endif
 //----------------------------SWPointer------------------------
 SWPointer::SWPointer(MemNode* mem, SuperWord* slp, Node_Stack *nstack, bool analyze_only) :
   _mem(mem), _slp(slp),  _base(NULL),  _adr(NULL),
   _scale(0), _offset(0), _invar(NULL), _negate_invar(false),
   _nstack(nstack), _analyze_only(analyze_only),
-  _stack_idx(0) {
+  _stack_idx(0)
+#ifndef PRODUCT
+  , _tracer(slp)
+#endif
+{
+  NOT_PRODUCT(_tracer.ctor_1(mem);)
 
   Node* adr = mem->in(MemNode::Address);
   if (!adr->is_AddP()) {
@@ -2757,16 +2819,29 @@
     assert(!valid(), "unsafe access");
     return;
   }
-  for (int i = 0; i < 3; i++) {
+
+  NOT_PRODUCT(if(_slp->is_trace_alignment()) _tracer.store_depth();)
+  NOT_PRODUCT(_tracer.ctor_2(adr);)
+
+  int i;
+  for (i = 0; i < 3; i++) {
+    NOT_PRODUCT(_tracer.ctor_3(adr, i);)
+
     if (!scaled_iv_plus_offset(adr->in(AddPNode::Offset))) {
       assert(!valid(), "too complex");
       return;
     }
     adr = adr->in(AddPNode::Address);
+    NOT_PRODUCT(_tracer.ctor_4(adr, i);)
+
     if (base == adr || !adr->is_AddP()) {
+      NOT_PRODUCT(_tracer.ctor_5(adr, base, i);)
       break; // stop looking at addp's
     }
   }
+  NOT_PRODUCT(if(_slp->is_trace_alignment()) _tracer.restore_depth();)
+  NOT_PRODUCT(_tracer.ctor_6(mem);)
+
   _base = base;
   _adr  = adr;
   assert(valid(), "Usable");
@@ -2778,68 +2853,103 @@
   _mem(p->_mem), _slp(p->_slp),  _base(NULL),  _adr(NULL),
   _scale(0), _offset(0), _invar(NULL), _negate_invar(false),
   _nstack(p->_nstack), _analyze_only(p->_analyze_only),
-  _stack_idx(p->_stack_idx) {}
-
+  _stack_idx(p->_stack_idx)
+  #ifndef PRODUCT
+  , _tracer(p->_slp)
+  #endif
+{}
+
+
+bool SWPointer::invariant(Node* n) {
+  NOT_PRODUCT(Tracer::Depth dd;)
+  Node *n_c = phase()->get_ctrl(n);
+  NOT_PRODUCT(_tracer.invariant_1(n, n_c);)
+  return !lpt()->is_member(phase()->get_loop(n_c));
+}
 //------------------------scaled_iv_plus_offset--------------------
 // Match: k*iv + offset
 // where: k is a constant that maybe zero, and
 //        offset is (k2 [+/- invariant]) where k2 maybe zero and invariant is optional
 bool SWPointer::scaled_iv_plus_offset(Node* n) {
+  NOT_PRODUCT(Tracer::Depth ddd;)
+  NOT_PRODUCT(_tracer.scaled_iv_plus_offset_1(n);)
+
   if (scaled_iv(n)) {
+    NOT_PRODUCT(_tracer.scaled_iv_plus_offset_2(n);)
     return true;
   }
+
   if (offset_plus_k(n)) {
+    NOT_PRODUCT(_tracer.scaled_iv_plus_offset_3(n);)
     return true;
   }
+
   int opc = n->Opcode();
   if (opc == Op_AddI) {
     if (scaled_iv(n->in(1)) && offset_plus_k(n->in(2))) {
+      NOT_PRODUCT(_tracer.scaled_iv_plus_offset_4(n);)
       return true;
     }
     if (scaled_iv(n->in(2)) && offset_plus_k(n->in(1))) {
+      NOT_PRODUCT(_tracer.scaled_iv_plus_offset_5(n);)
       return true;
     }
   } else if (opc == Op_SubI) {
     if (scaled_iv(n->in(1)) && offset_plus_k(n->in(2), true)) {
+      NOT_PRODUCT(_tracer.scaled_iv_plus_offset_6(n);)
       return true;
     }
     if (scaled_iv(n->in(2)) && offset_plus_k(n->in(1))) {
       _scale *= -1;
+      NOT_PRODUCT(_tracer.scaled_iv_plus_offset_7(n);)
       return true;
     }
   }
+
+  NOT_PRODUCT(_tracer.scaled_iv_plus_offset_8(n);)
   return false;
 }
 
 //----------------------------scaled_iv------------------------
 // Match: k*iv where k is a constant that's not zero
 bool SWPointer::scaled_iv(Node* n) {
-  if (_scale != 0) {
-    return false;  // already found a scale
+  NOT_PRODUCT(Tracer::Depth ddd;)
+  NOT_PRODUCT(_tracer.scaled_iv_1(n);)
+
+  if (_scale != 0) { // already found a scale
+    NOT_PRODUCT(_tracer.scaled_iv_2(n, _scale);)
+    return false;
   }
+
   if (n == iv()) {
     _scale = 1;
+    NOT_PRODUCT(_tracer.scaled_iv_3(n, _scale);)
     return true;
   }
   if (_analyze_only && (invariant(n) == false)) {
     _nstack->push(n, _stack_idx++);
   }
+
   int opc = n->Opcode();
   if (opc == Op_MulI) {
     if (n->in(1) == iv() && n->in(2)->is_Con()) {
       _scale = n->in(2)->get_int();
+      NOT_PRODUCT(_tracer.scaled_iv_4(n, _scale);)
       return true;
     } else if (n->in(2) == iv() && n->in(1)->is_Con()) {
       _scale = n->in(1)->get_int();
+      NOT_PRODUCT(_tracer.scaled_iv_5(n, _scale);)
       return true;
     }
   } else if (opc == Op_LShiftI) {
     if (n->in(1) == iv() && n->in(2)->is_Con()) {
       _scale = 1 << n->in(2)->get_int();
+      NOT_PRODUCT(_tracer.scaled_iv_6(n, _scale);)
       return true;
     }
   } else if (opc == Op_ConvI2L) {
     if (scaled_iv_plus_offset(n->in(1))) {
+      NOT_PRODUCT(_tracer.scaled_iv_7(n);)
       return true;
     }
   } else if (opc == Op_LShiftL) {
@@ -2847,17 +2957,22 @@
       // Need to preserve the current _offset value, so
       // create a temporary object for this expression subtree.
       // Hacky, so should re-engineer the address pattern match.
+      NOT_PRODUCT(Tracer::Depth dddd;)
       SWPointer tmp(this);
+      NOT_PRODUCT(_tracer.scaled_iv_8(n, &tmp);)
+
       if (tmp.scaled_iv_plus_offset(n->in(1))) {
-        if (tmp._invar == NULL) {
+        if (tmp._invar == NULL || _slp->do_vector_loop()) {
           int mult = 1 << n->in(2)->get_int();
           _scale   = tmp._scale  * mult;
           _offset += tmp._offset * mult;
+          NOT_PRODUCT(_tracer.scaled_iv_9(n, _scale, _offset, mult);)
           return true;
         }
       }
     }
   }
+  NOT_PRODUCT(_tracer.scaled_iv_10(n);)
   return false;
 }
 
@@ -2865,9 +2980,13 @@
 // Match: offset is (k [+/- invariant])
 // where k maybe zero and invariant is optional, but not both.
 bool SWPointer::offset_plus_k(Node* n, bool negate) {
+  NOT_PRODUCT(Tracer::Depth ddd;)
+  NOT_PRODUCT(_tracer.offset_plus_k_1(n);)
+
   int opc = n->Opcode();
   if (opc == Op_ConI) {
     _offset += negate ? -(n->get_int()) : n->get_int();
+    NOT_PRODUCT(_tracer.offset_plus_k_2(n, _offset);)
     return true;
   } else if (opc == Op_ConL) {
     // Okay if value fits into an int
@@ -2876,11 +2995,17 @@
       jlong loff = n->get_long();
       jint  off  = (jint)loff;
       _offset += negate ? -off : loff;
+      NOT_PRODUCT(_tracer.offset_plus_k_3(n, _offset);)
       return true;
     }
+    NOT_PRODUCT(_tracer.offset_plus_k_4(n);)
     return false;
   }
-  if (_invar != NULL) return false; // already have an invariant
+  if (_invar != NULL) { // already has an invariant
+    NOT_PRODUCT(_tracer.offset_plus_k_5(n, _invar);)
+    return false;
+  }
+
   if (_analyze_only && (invariant(n) == false)) {
     _nstack->push(n, _stack_idx++);
   }
@@ -2889,11 +3014,13 @@
       _negate_invar = negate;
       _invar = n->in(1);
       _offset += negate ? -(n->in(2)->get_int()) : n->in(2)->get_int();
+      NOT_PRODUCT(_tracer.offset_plus_k_6(n, _invar, _negate_invar, _offset);)
       return true;
     } else if (n->in(1)->is_Con() && invariant(n->in(2))) {
       _offset += negate ? -(n->in(1)->get_int()) : n->in(1)->get_int();
       _negate_invar = negate;
       _invar = n->in(2);
+      NOT_PRODUCT(_tracer.offset_plus_k_7(n, _invar, _negate_invar, _offset);)
       return true;
     }
   }
@@ -2902,19 +3029,24 @@
       _negate_invar = negate;
       _invar = n->in(1);
       _offset += !negate ? -(n->in(2)->get_int()) : n->in(2)->get_int();
+      NOT_PRODUCT(_tracer.offset_plus_k_8(n, _invar, _negate_invar, _offset);)
       return true;
     } else if (n->in(1)->is_Con() && invariant(n->in(2))) {
       _offset += negate ? -(n->in(1)->get_int()) : n->in(1)->get_int();
       _negate_invar = !negate;
       _invar = n->in(2);
+      NOT_PRODUCT(_tracer.offset_plus_k_9(n, _invar, _negate_invar, _offset);)
       return true;
     }
   }
   if (invariant(n)) {
     _negate_invar = negate;
     _invar = n;
+    NOT_PRODUCT(_tracer.offset_plus_k_10(n, _invar, _negate_invar, _offset);)
     return true;
   }
+
+  NOT_PRODUCT(_tracer.offset_plus_k_11(n);)
   return false;
 }
 
@@ -2930,6 +3062,287 @@
 #endif
 }
 
+//----------------------------tracing------------------------
+#ifndef PRODUCT
+void SWPointer::Tracer::print_depth() {
+  for (int ii = 0; ii<_depth; ++ii) tty->print("  ");
+}
+
+void SWPointer::Tracer::ctor_1 (Node* mem) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print(" %d SWPointer::SWPointer: start alignment analysis", mem->_idx); mem->dump();
+  }
+}
+
+void SWPointer::Tracer::ctor_2(Node* adr) {
+  if(_slp->is_trace_alignment()) {
+    //store_depth();
+    inc_depth();
+    print_depth(); tty->print(" %d (adr) SWPointer::SWPointer: ", adr->_idx); adr->dump();
+    inc_depth();
+    print_depth(); tty->print(" %d (base) SWPointer::SWPointer: ", adr->in(AddPNode::Base)->_idx); adr->in(AddPNode::Base)->dump();
+  }
+}
+
+void SWPointer::Tracer::ctor_3(Node* adr, int i) {
+  if(_slp->is_trace_alignment()) {
+    inc_depth();
+    Node* offset = adr->in(AddPNode::Offset);
+    print_depth(); tty->print(" %d (offset) SWPointer::SWPointer: i = %d: ", offset->_idx, i); offset->dump();
+  }
+}
+
+void SWPointer::Tracer::ctor_4(Node* adr, int i) {
+  if(_slp->is_trace_alignment()) {
+    inc_depth();
+    print_depth(); tty->print(" %d (adr) SWPointer::SWPointer: i = %d: ", adr->_idx, i); adr->dump();
+  }
+}
+
+void SWPointer::Tracer::ctor_5(Node* adr, Node* base, int i) {
+  if(_slp->is_trace_alignment()) {
+    inc_depth();
+    if (base == adr) {
+      print_depth(); tty->print_cr("  \\ %d (adr) == %d (base) SWPointer::SWPointer: breaking analysis at i = %d", adr->_idx, base->_idx, i);
+    } else if (!adr->is_AddP()) {
+      print_depth(); tty->print_cr("  \\ %d (adr) is NOT Addp SWPointer::SWPointer: breaking analysis at i = %d", adr->_idx, i);
+    }
+  }
+}
+
+void SWPointer::Tracer::ctor_6(Node* mem) {
+  if(_slp->is_trace_alignment()) {
+    //restore_depth();
+    print_depth(); tty->print_cr(" %d (adr) SWPointer::SWPointer: stop analysis", mem->_idx);
+  }
+}
+
+void SWPointer::Tracer::invariant_1(Node *n, Node *n_c) {
+  if (_slp->do_vector_loop() && _slp->is_debug() && _slp->_lpt->is_member(_slp->_phase->get_loop(n_c)) != (int)_slp->in_bb(n)) {
+    int is_member =  _slp->_lpt->is_member(_slp->_phase->get_loop(n_c));
+    int in_bb     =  _slp->in_bb(n);
+    print_depth(); tty->print("  \\ ");  tty->print_cr(" %d SWPointer::invariant  conditions differ: n_c %d", n->_idx, n_c->_idx);
+    print_depth(); tty->print("  \\ ");  tty->print_cr("is_member %d, in_bb %d", is_member, in_bb);
+    print_depth(); tty->print("  \\ ");  n->dump();
+    print_depth(); tty->print("  \\ ");  n_c->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_1(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print(" %d SWPointer::scaled_iv_plus_offset testing node: ", n->_idx);
+    n->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_2(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: PASSED", n->_idx);
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_3(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: PASSED", n->_idx);
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_4(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: Op_AddI PASSED", n->_idx);
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(1) is scaled_iv: ", n->in(1)->_idx); n->in(1)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(2) is offset_plus_k: ", n->in(2)->_idx); n->in(2)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_5(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: Op_AddI PASSED", n->_idx);
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(2) is scaled_iv: ", n->in(2)->_idx); n->in(2)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(1) is offset_plus_k: ", n->in(1)->_idx); n->in(1)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_6(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: Op_SubI PASSED", n->_idx);
+    print_depth(); tty->print("  \\  %d SWPointer::scaled_iv_plus_offset: in(1) is scaled_iv: ", n->in(1)->_idx); n->in(1)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(2) is offset_plus_k: ", n->in(2)->_idx); n->in(2)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_7(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: Op_SubI PASSED", n->_idx);
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(2) is scaled_iv: ", n->in(2)->_idx); n->in(2)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv_plus_offset: in(1) is offset_plus_k: ", n->in(1)->_idx); n->in(1)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_plus_offset_8(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv_plus_offset: FAILED", n->_idx);
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_1(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print(" %d SWPointer::scaled_iv: testing node: ", n->_idx); n->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_2(Node* n, int scale) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: FAILED since another _scale has been detected before", n->_idx);
+    print_depth(); tty->print_cr("  \\ SWPointer::scaled_iv: _scale (%d) != 0", scale);
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_3(Node* n, int scale) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: is iv, setting _scale = %d", n->_idx, scale);
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_4(Node* n, int scale) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: Op_MulI PASSED, setting _scale = %d", n->_idx, scale);
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv: in(1) is iv: ", n->in(1)->_idx); n->in(1)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv: in(2) is Con: ", n->in(2)->_idx); n->in(2)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_5(Node* n, int scale) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: Op_MulI PASSED, setting _scale = %d", n->_idx, scale);
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv: in(2) is iv: ", n->in(2)->_idx); n->in(2)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv: in(1) is Con: ", n->in(1)->_idx); n->in(1)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_6(Node* n, int scale) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: Op_LShiftI PASSED, setting _scale = %d", n->_idx, scale);
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv: in(1) is iv: ", n->in(1)->_idx); n->in(1)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::scaled_iv: in(2) is Con: ", n->in(2)->_idx); n->in(2)->dump();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_7(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: Op_ConvI2L PASSED", n->_idx);
+    print_depth(); tty->print_cr("  \\ SWPointer::scaled_iv: in(1) %d is scaled_iv_plus_offset: ", n->in(1)->_idx);
+    inc_depth(); inc_depth();
+    print_depth(); n->in(1)->dump();
+    dec_depth(); dec_depth();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_8(Node* n, SWPointer* tmp) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print(" %d SWPointer::scaled_iv: Op_LShiftL, creating tmp SWPointer: ", n->_idx); tmp->print();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_9(Node* n, int scale, int _offset, int mult) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: Op_LShiftL PASSED, setting _scale = %d, _offset = %d", n->_idx, scale, _offset);
+    print_depth(); tty->print_cr("  \\ SWPointer::scaled_iv: in(1) %d is scaled_iv_plus_offset, in(2) %d used to get mult = %d: _scale = %d, _offset = %d",
+    n->in(1)->_idx, n->in(2)->_idx, mult, scale, _offset);
+    inc_depth(); inc_depth();
+    print_depth(); n->in(1)->dump();
+    print_depth(); n->in(2)->dump();
+    dec_depth(); dec_depth();
+  }
+}
+
+void SWPointer::Tracer::scaled_iv_10(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::scaled_iv: FAILED", n->_idx);
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_1(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print(" %d SWPointer::offset_plus_k: testing node: ", n->_idx); n->dump();
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_2(Node* n, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: Op_ConI PASSED, setting _offset = %d", n->_idx, _offset);
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_3(Node* n, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: Op_ConL PASSED, setting _offset = %d", n->_idx, _offset);
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_4(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: FAILED", n->_idx);
+    print_depth(); tty->print_cr("  \\ " JLONG_FORMAT " SWPointer::offset_plus_k: Op_ConL FAILED, k is too big", n->get_long());
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_5(Node* n, Node* _invar) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: FAILED since another invariant has been detected before", n->_idx);
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: _invar != NULL: ", _invar->_idx); _invar->dump();
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_6(Node* n, Node* _invar, bool _negate_invar, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: Op_AddI PASSED, setting _negate_invar = %d, _invar = %d, _offset = %d",
+    n->_idx, _negate_invar, _invar->_idx, _offset);
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(2) is Con: ", n->in(2)->_idx); n->in(2)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(1) is invariant: ", _invar->_idx); _invar->dump();
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_7(Node* n, Node* _invar, bool _negate_invar, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: Op_AddI PASSED, setting _negate_invar = %d, _invar = %d, _offset = %d",
+    n->_idx, _negate_invar, _invar->_idx, _offset);
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(1) is Con: ", n->in(1)->_idx); n->in(1)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(2) is invariant: ", _invar->_idx); _invar->dump();
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_8(Node* n, Node* _invar, bool _negate_invar, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: Op_SubI is PASSED, setting _negate_invar = %d, _invar = %d, _offset = %d",
+    n->_idx, _negate_invar, _invar->_idx, _offset);
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(2) is Con: ", n->in(2)->_idx); n->in(2)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(1) is invariant: ", _invar->_idx); _invar->dump();
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_9(Node* n, Node* _invar, bool _negate_invar, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: Op_SubI PASSED, setting _negate_invar = %d, _invar = %d, _offset = %d", n->_idx, _negate_invar, _invar->_idx, _offset);
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(1) is Con: ", n->in(1)->_idx); n->in(1)->dump();
+    print_depth(); tty->print("  \\ %d SWPointer::offset_plus_k: in(2) is invariant: ", _invar->_idx); _invar->dump();
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_10(Node* n, Node* _invar, bool _negate_invar, int _offset) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: PASSED, setting _negate_invar = %d, _invar = %d, _offset = %d", n->_idx, _negate_invar, _invar->_idx, _offset);
+    print_depth(); tty->print_cr("  \\ %d SWPointer::offset_plus_k: is invariant", n->_idx);
+  }
+}
+
+void SWPointer::Tracer::offset_plus_k_11(Node* n) {
+  if(_slp->is_trace_alignment()) {
+    print_depth(); tty->print_cr(" %d SWPointer::offset_plus_k: FAILED", n->_idx);
+  }
+}
+
+#endif
 // ========================= OrderedPair =====================
 
 const OrderedPair OrderedPair::initial;
@@ -3076,13 +3489,20 @@
 //
 // --------------------------------- vectorization/simd -----------------------------------
 //
+bool SuperWord::same_origin_idx(Node* a, Node* b) const {
+  return a != NULL && b != NULL && _clone_map.same_idx(a->_idx, b->_idx);
+}
+bool SuperWord::same_generation(Node* a, Node* b) const {
+  return a != NULL && b != NULL && _clone_map.same_gen(a->_idx, b->_idx);
+}
+
 Node*  SuperWord::find_phi_for_mem_dep(LoadNode* ld) {
   assert(in_bb(ld), "must be in block");
   if (_clone_map.gen(ld->_idx) == _ii_first) {
 #ifndef PRODUCT
     if (_vector_loop_debug) {
       tty->print_cr("SuperWord::find_phi_for_mem_dep _clone_map.gen(ld->_idx)=%d",
-                    _clone_map.gen(ld->_idx));
+        _clone_map.gen(ld->_idx));
     }
 #endif
     return NULL; //we think that any ld in the first gen being vectorizable
@@ -3094,18 +3514,18 @@
 #ifndef PRODUCT
     if (_vector_loop_debug) {
       tty->print_cr("SuperWord::find_phi_for_mem_dep input node %d to load %d has no other outputs and edge mem->load cannot be removed",
-                    mem->_idx, ld->_idx);
+        mem->_idx, ld->_idx);
       ld->dump();
       mem->dump();
     }
 #endif
     return NULL;
   }
-  if (!in_bb(mem) || _clone_map.gen(mem->_idx) == _clone_map.gen(ld->_idx)) {
+  if (!in_bb(mem) || same_generation(mem, ld)) {
 #ifndef PRODUCT
     if (_vector_loop_debug) {
       tty->print_cr("SuperWord::find_phi_for_mem_dep _clone_map.gen(mem->_idx)=%d",
-                    _clone_map.gen(mem->_idx));
+        _clone_map.gen(mem->_idx));
     }
 #endif
     return NULL; // does not depend on loop volatile node or depends on the same generation
@@ -3136,7 +3556,7 @@
 #ifndef PRODUCT
     if (_vector_loop_debug) {
       tty->print_cr("SuperWord::find_phi_for_mem_dep load %d is not vectorizable node, its phi %d is not _mem_slice_head",
-                    ld->_idx, phi->_idx);
+        ld->_idx, phi->_idx);
       ld->dump();
       phi->dump();
     }
@@ -3151,11 +3571,11 @@
 Node* SuperWord::first_node(Node* nd) {
   for (int ii = 0; ii < _iteration_first.length(); ii++) {
     Node* nnn = _iteration_first.at(ii);
-    if (_clone_map.idx(nnn->_idx) == _clone_map.idx(nd->_idx)) {
+    if (same_origin_idx(nnn, nd)) {
 #ifndef PRODUCT
       if (_vector_loop_debug) {
         tty->print_cr("SuperWord::first_node: %d is the first iteration node for %d (_clone_map.idx(nnn->_idx) = %d)",
-                      nnn->_idx, nd->_idx, _clone_map.idx(nnn->_idx));
+          nnn->_idx, nd->_idx, _clone_map.idx(nnn->_idx));
       }
 #endif
       return nnn;
@@ -3165,7 +3585,7 @@
 #ifndef PRODUCT
   if (_vector_loop_debug) {
     tty->print_cr("SuperWord::first_node: did not find first iteration node for %d (_clone_map.idx(nd->_idx)=%d)",
-                  nd->_idx, _clone_map.idx(nd->_idx));
+      nd->_idx, _clone_map.idx(nd->_idx));
   }
 #endif
   return 0;
@@ -3174,11 +3594,11 @@
 Node* SuperWord::last_node(Node* nd) {
   for (int ii = 0; ii < _iteration_last.length(); ii++) {
     Node* nnn = _iteration_last.at(ii);
-    if (_clone_map.idx(nnn->_idx) == _clone_map.idx(nd->_idx)) {
+    if (same_origin_idx(nnn, nd)) {
 #ifndef PRODUCT
       if (_vector_loop_debug) {
         tty->print_cr("SuperWord::last_node _clone_map.idx(nnn->_idx)=%d, _clone_map.idx(nd->_idx)=%d",
-                      _clone_map.idx(nnn->_idx), _clone_map.idx(nd->_idx));
+          _clone_map.idx(nnn->_idx), _clone_map.idx(nd->_idx));
       }
 #endif
       return nnn;
@@ -3219,9 +3639,11 @@
         } else if (_ii_first != _clone_map.gen(ii->_idx)) {
 #ifndef PRODUCT
           if (TraceSuperWord && Verbose) {
-            tty->print_cr("SuperWord::mark_generations _ii_first error - found different generations in two nodes ");
+            tty->print_cr("SuperWord::mark_generations: _ii_first was found before and not equal to one in this node (%d)", _ii_first);
             ii->dump();
-            ii_err->dump();
+            if (ii_err!= 0) {
+              ii_err->dump();
+            }
           }
 #endif
           return -1; // this phi has Stores from different generations of unroll and cannot be simd/vectorized
@@ -3252,8 +3674,7 @@
   }
 
   // building order of iterations
-  assert(_ii_order.length() == 0, "should be empty");
-  if (ii_err != 0) {
+  if (_ii_order.length() == 0 && ii_err != 0) {
     assert(in_bb(ii_err) && ii_err->is_Store(), "should be Store in bb");
     Node* nd = ii_err;
     while(_clone_map.gen(nd->_idx) != _ii_last) {
@@ -3261,7 +3682,7 @@
       bool found = false;
       for (DUIterator_Fast imax, i = nd->fast_outs(imax); i < imax; i++) {
         Node* use = nd->fast_out(i);
-        if (_clone_map.idx(use->_idx) == _clone_map.idx(nd->_idx) && use->as_Store()->in(MemNode::Memory) == nd) {
+        if (same_origin_idx(use, nd) && use->as_Store()->in(MemNode::Memory) == nd) {
           found = true;
           nd = use;
           break;
@@ -3303,7 +3724,7 @@
 
 bool SuperWord::fix_commutative_inputs(Node* gold, Node* fix) {
   assert(gold->is_Add() && fix->is_Add() || gold->is_Mul() && fix->is_Mul(), "should be only Add or Mul nodes");
-  assert(_clone_map.idx(gold->_idx) == _clone_map.idx(fix->_idx), "should be clones of the same node");
+  assert(same_origin_idx(gold, fix), "should be clones of the same node");
   Node* gin1 = gold->in(1);
   Node* gin2 = gold->in(2);
   Node* fin1 = fix->in(1);
@@ -3311,12 +3732,12 @@
   bool swapped = false;
 
   if (in_bb(gin1) && in_bb(gin2) && in_bb(fin1) && in_bb(fin1)) {
-    if (_clone_map.idx(gin1->_idx) == _clone_map.idx(fin1->_idx) &&
-        _clone_map.idx(gin2->_idx) == _clone_map.idx(fin2->_idx)) {
+    if (same_origin_idx(gin1, fin1) &&
+        same_origin_idx(gin2, fin2)) {
       return true; // nothing to fix
     }
-    if (_clone_map.idx(gin1->_idx) == _clone_map.idx(fin2->_idx) &&
-        _clone_map.idx(gin2->_idx) == _clone_map.idx(fin1->_idx)) {
+    if (same_origin_idx(gin1, fin2) &&
+        same_origin_idx(gin2, fin1)) {
       fix->swap_edges(1, 2);
       swapped = true;
     }
@@ -3364,7 +3785,7 @@
       for (int gen = 1; gen < _ii_order.length(); ++gen) {
         for (int kk = 0; kk < _block.length(); kk++) {
           Node* clone = _block.at(kk);
-          if (_clone_map.idx(clone->_idx) == _clone_map.idx(nd->_idx) &&
+          if (same_origin_idx(clone, nd) &&
               _clone_map.gen(clone->_idx) == _ii_order.at(gen)) {
             if (nd->is_Add() || nd->is_Mul()) {
               fix_commutative_inputs(nd, clone);
@@ -3429,13 +3850,12 @@
       if (ld->is_Load() && ld->as_Load()->in(MemNode::Memory) == n && in_bb(ld)) {
         for (int i = 0; i < _block.length(); i++) {
           Node* ld2 = _block.at(i);
-          if (ld2->is_Load() &&
-              _clone_map.idx(ld->_idx) == _clone_map.idx(ld2->_idx) &&
-              _clone_map.gen(ld->_idx) != _clone_map.gen(ld2->_idx)) { // <= do not collect the first generation ld
+          if (ld2->is_Load() && same_origin_idx(ld, ld2) &&
+              !same_generation(ld, ld2)) { // <= do not collect the first generation ld
 #ifndef PRODUCT
             if (_vector_loop_debug) {
               tty->print_cr("SuperWord::hoist_loads_in_graph: will try to hoist load ld2->_idx=%d, cloned from %d (ld->_idx=%d)",
-                            ld2->_idx, _clone_map.idx(ld->_idx), ld->_idx);
+                ld2->_idx, _clone_map.idx(ld->_idx), ld->_idx);
             }
 #endif
             // could not do on-the-fly, since iterator is immutable
@@ -3453,7 +3873,7 @@
 #ifndef PRODUCT
       if (_vector_loop_debug) {
         tty->print_cr("SuperWord::hoist_loads_in_graph replacing MemNode::Memory(%d) edge in %d with one from %d",
-                      MemNode::Memory, ld->_idx, phi->_idx);
+          MemNode::Memory, ld->_idx, phi->_idx);
       }
 #endif
       _igvn.replace_input_of(ld, MemNode::Memory, phi);
--- a/hotspot/src/share/vm/opto/superword.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/superword.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -203,6 +203,7 @@
 // -----------------------------SuperWord---------------------------------
 // Transforms scalar operations into packed (superword) operations.
 class SuperWord : public ResourceObj {
+ friend class SWPointer;
  private:
   PhaseIdealLoop* _phase;
   Arena*          _arena;
@@ -247,8 +248,17 @@
   PhaseIdealLoop* phase()          { return _phase; }
   IdealLoopTree* lpt()             { return _lpt; }
   PhiNode* iv()                    { return _iv; }
+
   bool early_return()              { return _early_return; }
 
+#ifndef PRODUCT
+  bool     is_debug()              { return _vector_loop_debug > 0; }
+  bool     is_trace_alignment()    { return (_vector_loop_debug & 2) > 0; }
+  bool     is_trace_mem_slice()    { return (_vector_loop_debug & 4) > 0; }
+  bool     is_trace_loop()         { return (_vector_loop_debug & 8) > 0; }
+  bool     is_trace_adjacent()     { return (_vector_loop_debug & 16) > 0; }
+#endif
+  bool     do_vector_loop()        { return _do_vector_loop; }
  private:
   IdealLoopTree* _lpt;             // Current loop tree node
   LoopNode*      _lp;              // Current LoopNode
@@ -257,12 +267,14 @@
   bool           _race_possible;   // In cases where SDMU is true
   bool           _early_return;    // True if we do not initialize
   bool           _do_vector_loop;  // whether to do vectorization/simd style
-  bool           _vector_loop_debug; // provide more printing in debug mode
   int            _num_work_vecs;   // Number of non memory vector operations
   int            _num_reductions;  // Number of reduction expressions applied
   int            _ii_first;        // generation with direct deps from mem phi
   int            _ii_last;         // generation with direct deps to   mem phi
   GrowableArray<int> _ii_order;
+#ifndef PRODUCT
+  uintx          _vector_loop_debug; // provide more printing in debug mode
+#endif
 
   // Accessors
   Arena* arena()                   { return _arena; }
@@ -325,12 +337,20 @@
   Node_List* my_pack(Node* n)                { return !in_bb(n) ? NULL : _node_info.adr_at(bb_idx(n))->_my_pack; }
   void set_my_pack(Node* n, Node_List* p)    { int i = bb_idx(n); grow_node_info(i); _node_info.adr_at(i)->_my_pack = p; }
 
+  // CloneMap utilities
+  bool same_origin_idx(Node* a, Node* b) const;
+  bool same_generation(Node* a, Node* b) const;
+
   // methods
 
   // Extract the superword level parallelism
   void SLP_extract();
   // Find the adjacent memory references and create pack pairs for them.
   void find_adjacent_refs();
+  // Tracing support
+  #ifndef PRODUCT
+  void find_adjacent_refs_trace_1(Node* best_align_to_mem_ref, int best_iv_adjustment);
+  #endif
   // Find a memory reference to align the loop induction variable to.
   MemNode* find_align_to_ref(Node_List &memops);
   // Calculate loop's iv adjustment for this memory ops.
@@ -340,13 +360,13 @@
   // rebuild the graph so all loads in different iterations of cloned loop become dependant on phi node (in _do_vector_loop only)
   bool hoist_loads_in_graph();
   // Test whether MemNode::Memory dependency to the same load but in the first iteration of this loop is coming from memory phi
-  // Return false if failed.
+  // Return false if failed
   Node* find_phi_for_mem_dep(LoadNode* ld);
   // Return same node but from the first generation. Return 0, if not found
   Node* first_node(Node* nd);
   // Return same node as this but from the last generation. Return 0, if not found
   Node* last_node(Node* n);
-  // Mark nodes belonging to first and last generation,
+  // Mark nodes belonging to first and last generation
   // returns first generation index or -1 if vectorization/simd is impossible
   int mark_generations();
   // swapping inputs of commutative instruction (Add or Mul)
@@ -483,10 +503,7 @@
   IdealLoopTree*  lpt()   { return _slp->lpt(); }
   PhiNode*        iv()    { return _slp->iv();  } // Induction var
 
-  bool invariant(Node* n) {
-    Node *n_c = phase()->get_ctrl(n);
-    return !lpt()->is_member(phase()->get_loop(n_c));
-  }
+  bool invariant(Node* n);
 
   // Match: k*iv + offset
   bool scaled_iv_plus_offset(Node* n);
@@ -545,6 +562,76 @@
   static bool comparable(int cmp) { return cmp < NotComparable; }
 
   void print();
+
+#ifndef PRODUCT
+  class Tracer {
+    friend class SuperWord;
+    friend class SWPointer;
+    SuperWord*   _slp;
+    static int   _depth;
+    int _depth_save;
+    void print_depth();
+    int  depth() const    { return _depth; }
+    void set_depth(int d) { _depth = d; }
+    void inc_depth()      { _depth++;}
+    void dec_depth()      { if (_depth > 0) _depth--;}
+    void store_depth()    {_depth_save = _depth;}
+    void restore_depth()  {_depth = _depth_save;}
+
+    class Depth {
+      friend class Tracer;
+      friend class SWPointer;
+      friend class SuperWord;
+      Depth()  { ++_depth; }
+      Depth(int x)  { _depth = 0; }
+      ~Depth() { if (_depth > 0) --_depth;}
+    };
+    Tracer (SuperWord* slp) : _slp(slp) {}
+
+    // tracing functions
+    void ctor_1(Node* mem);
+    void ctor_2(Node* adr);
+    void ctor_3(Node* adr, int i);
+    void ctor_4(Node* adr, int i);
+    void ctor_5(Node* adr, Node* base,  int i);
+    void ctor_6(Node* mem);
+
+    void invariant_1(Node *n, Node *n_c);
+
+    void scaled_iv_plus_offset_1(Node* n);
+    void scaled_iv_plus_offset_2(Node* n);
+    void scaled_iv_plus_offset_3(Node* n);
+    void scaled_iv_plus_offset_4(Node* n);
+    void scaled_iv_plus_offset_5(Node* n);
+    void scaled_iv_plus_offset_6(Node* n);
+    void scaled_iv_plus_offset_7(Node* n);
+    void scaled_iv_plus_offset_8(Node* n);
+
+    void scaled_iv_1(Node* n);
+    void scaled_iv_2(Node* n, int scale);
+    void scaled_iv_3(Node* n, int scale);
+    void scaled_iv_4(Node* n, int scale);
+    void scaled_iv_5(Node* n, int scale);
+    void scaled_iv_6(Node* n, int scale);
+    void scaled_iv_7(Node* n);
+    void scaled_iv_8(Node* n, SWPointer* tmp);
+    void scaled_iv_9(Node* n, int _scale, int _offset, int mult);
+    void scaled_iv_10(Node* n);
+
+    void offset_plus_k_1(Node* n);
+    void offset_plus_k_2(Node* n, int _offset);
+    void offset_plus_k_3(Node* n, int _offset);
+    void offset_plus_k_4(Node* n);
+    void offset_plus_k_5(Node* n, Node* _invar);
+    void offset_plus_k_6(Node* n, Node* _invar, bool _negate_invar, int _offset);
+    void offset_plus_k_7(Node* n, Node* _invar, bool _negate_invar, int _offset);
+    void offset_plus_k_8(Node* n, Node* _invar, bool _negate_invar, int _offset);
+    void offset_plus_k_9(Node* n, Node* _invar, bool _negate_invar, int _offset);
+    void offset_plus_k_10(Node* n, Node* _invar, bool _negate_invar, int _offset);
+    void offset_plus_k_11(Node* n);
+
+  } _tracer;//TRacer;
+#endif
 };
 
 
--- a/hotspot/src/share/vm/opto/type.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/type.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -200,8 +200,7 @@
 
 
 //-----------------------make_from_constant------------------------------------
-const Type* Type::make_from_constant(ciConstant constant,
-                                     bool require_constant, bool is_autobox_cache) {
+const Type* Type::make_from_constant(ciConstant constant, bool require_constant) {
   switch (constant.basic_type()) {
   case T_BOOLEAN:  return TypeInt::make(constant.as_boolean());
   case T_CHAR:     return TypeInt::make(constant.as_char());
@@ -222,14 +221,57 @@
       if (oop_constant->is_null_object()) {
         return Type::get_zero_type(T_OBJECT);
       } else if (require_constant || oop_constant->should_be_constant()) {
-        return TypeOopPtr::make_from_constant(oop_constant, require_constant, is_autobox_cache);
+        return TypeOopPtr::make_from_constant(oop_constant, require_constant);
+      }
+    }
+  case T_ILLEGAL:
+    // Invalid ciConstant returned due to OutOfMemoryError in the CI
+    assert(Compile::current()->env()->failing(), "otherwise should not see this");
+    return NULL;
+  }
+  // Fall through to failure
+  return NULL;
+}
+
+
+const Type* Type::make_constant(ciField* field, Node* obj) {
+  if (!field->is_constant())  return NULL;
+
+  const Type* con_type = NULL;
+  if (field->is_static()) {
+    // final static field
+    con_type = Type::make_from_constant(field->constant_value(), /*require_const=*/true);
+    if (Compile::current()->eliminate_boxing() && field->is_autobox_cache() && con_type != NULL) {
+      con_type = con_type->is_aryptr()->cast_to_autobox_cache(true);
+    }
+  } else {
+    // final or stable non-static field
+    // Treat final non-static fields of trusted classes (classes in
+    // java.lang.invoke and sun.invoke packages and subpackages) as
+    // compile time constants.
+    if (obj->is_Con()) {
+      const TypeOopPtr* oop_ptr = obj->bottom_type()->isa_oopptr();
+      ciObject* constant_oop = oop_ptr->const_oop();
+      ciConstant constant = field->constant_value_of(constant_oop);
+      con_type = Type::make_from_constant(constant, /*require_const=*/true);
+    }
+  }
+  if (FoldStableValues && field->is_stable() && con_type != NULL) {
+    if (con_type->is_zero_type()) {
+      return NULL; // the field hasn't been initialized yet
+    } else if (con_type->isa_oopptr()) {
+      const Type* stable_type = Type::get_const_type(field->type());
+      if (field->type()->is_array_klass()) {
+        int stable_dimension = field->type()->as_array_klass()->dimension();
+        stable_type = stable_type->is_aryptr()->cast_to_stable(true, stable_dimension);
+      }
+      if (stable_type != NULL) {
+        con_type = con_type->join_speculative(stable_type);
       }
     }
   }
-  // Fall through to failure
-  return NULL;
-}
-
+  return con_type;
+}
 
 //------------------------------make-------------------------------------------
 // Create a simple Type, with default empty symbol sets.  Then hashcons it
@@ -3009,9 +3051,7 @@
 
 //------------------------------make_from_constant-----------------------------
 // Make a java pointer from an oop constant
-const TypeOopPtr* TypeOopPtr::make_from_constant(ciObject* o,
-                                                 bool require_constant,
-                                                 bool is_autobox_cache) {
+const TypeOopPtr* TypeOopPtr::make_from_constant(ciObject* o, bool require_constant) {
   assert(!o->is_null_object(), "null object not yet handled here.");
   ciKlass* klass = o->klass();
   if (klass->is_instance_klass()) {
@@ -3026,10 +3066,6 @@
     // Element is an object array. Recursively call ourself.
     const TypeOopPtr *etype =
       TypeOopPtr::make_from_klass_raw(klass->as_obj_array_klass()->element_klass());
-    if (is_autobox_cache) {
-      // The pointers in the autobox arrays are always non-null.
-      etype = etype->cast_to_ptr_type(TypePtr::NotNull)->is_oopptr();
-    }
     const TypeAry* arr0 = TypeAry::make(etype, TypeInt::make(o->as_array()->length()));
     // We used to pass NotNull in here, asserting that the sub-arrays
     // are all not-null.  This is not true in generally, as code can
@@ -3039,7 +3075,7 @@
     } else if (!o->should_be_constant()) {
       return TypeAryPtr::make(TypePtr::NotNull, arr0, klass, true, 0);
     }
-    const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0, InstanceBot, NULL, InlineDepthBottom, is_autobox_cache);
+    const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
     return arr;
   } else if (klass->is_type_array_klass()) {
     // Element is an typeArray
@@ -3940,7 +3976,6 @@
   return make(ptr(), const_oop(), new_ary, klass(), klass_is_exact(), _offset, _instance_id, _speculative, _inline_depth);
 }
 
-
 //------------------------------cast_to_stable---------------------------------
 const TypeAryPtr* TypeAryPtr::cast_to_stable(bool stable, int stable_dimension) const {
   if (stable_dimension <= 0 || (stable_dimension == 1 && stable == this->is_stable()))
@@ -3969,6 +4004,18 @@
   return dim;
 }
 
+//----------------------cast_to_autobox_cache-----------------------------------
+const TypeAryPtr* TypeAryPtr::cast_to_autobox_cache(bool cache) const {
+  if (is_autobox_cache() == cache)  return this;
+  const TypeOopPtr* etype = elem()->make_oopptr();
+  if (etype == NULL)  return this;
+  // The pointers in the autobox arrays are always non-null.
+  TypePtr::PTR ptr_type = cache ? TypePtr::NotNull : TypePtr::AnyNull;
+  etype = etype->cast_to_ptr_type(TypePtr::NotNull)->is_oopptr();
+  const TypeAry* new_ary = TypeAry::make(etype, size(), is_stable());
+  return make(ptr(), const_oop(), new_ary, klass(), klass_is_exact(), _offset, _instance_id, _speculative, _inline_depth, cache);
+}
+
 //------------------------------eq---------------------------------------------
 // Structural equality check for Type representations
 bool TypeAryPtr::eq( const Type *t ) const {
@@ -4455,7 +4502,7 @@
 // TRUE if Type is a singleton type, FALSE otherwise.   Singletons are simple
 // constants
 bool TypeMetadataPtr::singleton(void) const {
-  // detune optimizer to not generate constant metadta + constant offset as a constant!
+  // detune optimizer to not generate constant metadata + constant offset as a constant!
   // TopPTR, Null, AnyNull, Constant are all singletons
   return (_offset == 0) && !below_centerline(_ptr);
 }
--- a/hotspot/src/share/vm/opto/type.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/opto/type.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -412,8 +412,9 @@
   static const Type* get_typeflow_type(ciType* type);
 
   static const Type* make_from_constant(ciConstant constant,
-                                        bool require_constant = false,
-                                        bool is_autobox_cache = false);
+                                        bool require_constant = false);
+
+  static const Type* make_constant(ciField* field, Node* obj);
 
   // Speculative type helper methods. See TypePtr.
   virtual const TypePtr* speculative() const                                  { return NULL; }
@@ -973,8 +974,7 @@
   // may return a non-singleton type.
   // If require_constant, produce a NULL if a singleton is not possible.
   static const TypeOopPtr* make_from_constant(ciObject* o,
-                                              bool require_constant = false,
-                                              bool not_null_elements = false);
+                                              bool require_constant = false);
 
   // Make a generic (unclassed) pointer to an oop.
   static const TypeOopPtr* make(PTR ptr, int offset, int instance_id,
@@ -1184,6 +1184,8 @@
   const TypeAryPtr* cast_to_stable(bool stable, int stable_dimension = 1) const;
   int stable_dimension() const;
 
+  const TypeAryPtr* cast_to_autobox_cache(bool cache) const;
+
   // Convenience common pre-built types.
   static const TypeAryPtr *RANGE;
   static const TypeAryPtr *OOPS;
@@ -1674,12 +1676,12 @@
 
 inline const TypePtr* Type::make_ptr() const {
   return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype() :
-    ((_base == NarrowKlass) ? is_narrowklass()->get_ptrtype() :
-     (isa_ptr() ? is_ptr() : NULL));
+                              ((_base == NarrowKlass) ? is_narrowklass()->get_ptrtype() :
+                                                       isa_ptr());
 }
 
 inline const TypeOopPtr* Type::make_oopptr() const {
-  return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype()->is_oopptr() : is_oopptr();
+  return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype()->isa_oopptr() : isa_oopptr();
 }
 
 inline const TypeNarrowOop* Type::make_narrowoop() const {
@@ -1689,7 +1691,7 @@
 
 inline const TypeNarrowKlass* Type::make_narrowklass() const {
   return (_base == NarrowKlass) ? is_narrowklass() :
-                                (isa_ptr() ? TypeNarrowKlass::make(is_ptr()) : NULL);
+                                  (isa_ptr() ? TypeNarrowKlass::make(is_ptr()) : NULL);
 }
 
 inline bool Type::is_floatingpoint() const {
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -91,7 +91,7 @@
 int    Arguments::_sun_java_launcher_pid        = -1;
 bool   Arguments::_sun_java_launcher_is_altjvm  = false;
 
-// These parameters are reset in method parse_vm_init_args(JavaVMInitArgs*)
+// These parameters are reset in method parse_vm_init_args()
 bool   Arguments::_AlwaysCompileLoopMethods     = AlwaysCompileLoopMethods;
 bool   Arguments::_UseOnStackReplacement        = UseOnStackReplacement;
 bool   Arguments::_BackgroundCompilation        = BackgroundCompilation;
@@ -2251,7 +2251,9 @@
 
 // Parse JavaVMInitArgs structure
 
-jint Arguments::parse_vm_init_args(const JavaVMInitArgs* args) {
+jint Arguments::parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
+                                   const JavaVMInitArgs *java_options_args,
+                                   const JavaVMInitArgs *cmd_line_args) {
   // For components of the system classpath.
   SysClassPath scp(Arguments::get_sysclasspath());
   bool scp_assembly_required = false;
@@ -2269,20 +2271,25 @@
   // Setup flags for mixed which is the default
   set_mode_flags(_mixed);
 
-  // Parse JAVA_TOOL_OPTIONS environment variable (if present)
-  jint result = parse_java_tool_options_environment_variable(&scp, &scp_assembly_required);
+  // Parse args structure generated from JAVA_TOOL_OPTIONS environment
+  // variable (if present).
+  jint result = parse_each_vm_init_arg(
+      java_tool_options_args, &scp, &scp_assembly_required, Flag::ENVIRON_VAR);
   if (result != JNI_OK) {
     return result;
   }
 
-  // Parse JavaVMInitArgs structure passed in
-  result = parse_each_vm_init_arg(args, &scp, &scp_assembly_required, Flag::COMMAND_LINE);
+  // Parse args structure generated from the command line flags.
+  result = parse_each_vm_init_arg(cmd_line_args, &scp, &scp_assembly_required,
+                                  Flag::COMMAND_LINE);
   if (result != JNI_OK) {
     return result;
   }
 
-  // Parse _JAVA_OPTIONS environment variable (if present) (mimics classic VM)
-  result = parse_java_options_environment_variable(&scp, &scp_assembly_required);
+  // Parse args structure generated from the _JAVA_OPTIONS environment
+  // variable (if present) (mimics classic VM)
+  result = parse_each_vm_init_arg(
+      java_options_args, &scp, &scp_assembly_required, Flag::ENVIRON_VAR);
   if (result != JNI_OK) {
     return result;
   }
@@ -3385,20 +3392,73 @@
   return JNI_OK;
 }
 
-jint Arguments::parse_java_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p) {
-  return parse_options_environment_variable("_JAVA_OPTIONS", scp_p,
-                                            scp_assembly_required_p);
+// Helper class for controlling the lifetime of JavaVMInitArgs
+// objects.  The contents of the JavaVMInitArgs are guaranteed to be
+// deleted on the destruction of the ScopedVMInitArgs object.
+class ScopedVMInitArgs : public StackObj {
+ private:
+  JavaVMInitArgs _args;
+
+ public:
+  ScopedVMInitArgs() {
+    _args.version = JNI_VERSION_1_2;
+    _args.nOptions = 0;
+    _args.options = NULL;
+    _args.ignoreUnrecognized = false;
+  }
+
+  // Populates the JavaVMInitArgs object represented by this
+  // ScopedVMInitArgs object with the arguments in options.  The
+  // allocated memory is deleted by the destructor.  If this method
+  // returns anything other than JNI_OK, then this object is in a
+  // partially constructed state, and should be abandoned.
+  jint set_args(GrowableArray<JavaVMOption>* options) {
+    JavaVMOption* options_arr = NEW_C_HEAP_ARRAY_RETURN_NULL(
+        JavaVMOption, options->length(), mtInternal);
+    if (options_arr == NULL) {
+      return JNI_ENOMEM;
+    }
+    _args.options = options_arr;
+
+    for (int i = 0; i < options->length(); i++) {
+      options_arr[i] = options->at(i);
+      options_arr[i].optionString = os::strdup(options_arr[i].optionString);
+      if (options_arr[i].optionString == NULL) {
+        // Rely on the destructor to do cleanup.
+        _args.nOptions = i;
+        return JNI_ENOMEM;
+      }
+    }
+
+    _args.nOptions = options->length();
+    _args.ignoreUnrecognized = IgnoreUnrecognizedVMOptions;
+    return JNI_OK;
+  }
+
+  JavaVMInitArgs* get() { return &_args; }
+
+  ~ScopedVMInitArgs() {
+    if (_args.options == NULL) return;
+    for (int i = 0; i < _args.nOptions; i++) {
+      os::free(_args.options[i].optionString);
+    }
+    FREE_C_HEAP_ARRAY(JavaVMOption, _args.options);
+  }
+};
+
+jint Arguments::parse_java_options_environment_variable(ScopedVMInitArgs* args) {
+  return parse_options_environment_variable("_JAVA_OPTIONS", args);
 }
 
-jint Arguments::parse_java_tool_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p) {
-  return parse_options_environment_variable("JAVA_TOOL_OPTIONS", scp_p,
-                                            scp_assembly_required_p);
+jint Arguments::parse_java_tool_options_environment_variable(ScopedVMInitArgs* args) {
+  return parse_options_environment_variable("JAVA_TOOL_OPTIONS", args);
 }
 
-jint Arguments::parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p) {
+jint Arguments::parse_options_environment_variable(const char* name,
+                                                   ScopedVMInitArgs* vm_args) {
   char *buffer = ::getenv(name);
 
-  // Don't check this variable if user has special privileges
+  // Don't check this environment variable if user has special privileges
   // (e.g. unix su command).
   if (buffer == NULL || os::have_special_privileges()) {
     return JNI_OK;
@@ -3443,48 +3503,20 @@
         *wrt++ = *rd++;                     // copy to option string
       }
     }
-    // Need to check if we're done before writing a NULL,
-    // because the write could be to the byte that rd is pointing to.
-    if (*rd++ == 0) {
-      *wrt = 0;
-      break;
+    if (*rd != 0) {
+      // In this case, the assignment to wrt below will make *rd nul,
+      // which will interfere with the next loop iteration.
+      rd++;
     }
     *wrt = 0;                               // Zero terminate option
   }
-  JavaVMOption* options_arr =
-      NEW_C_HEAP_ARRAY_RETURN_NULL(JavaVMOption, options->length(), mtInternal);
-  if (options_arr == NULL) {
-    delete options;
-    os::free(buffer);
-    return JNI_ENOMEM;
-  }
-  for (int i = 0; i < options->length(); i++) {
-    options_arr[i] = options->at(i);
-  }
-
-  // Construct JavaVMInitArgs structure and parse as if it was part of the command line
-  JavaVMInitArgs vm_args;
-  vm_args.version = JNI_VERSION_1_2;
-  vm_args.options = options_arr;
-  vm_args.nOptions = options->length();
-  vm_args.ignoreUnrecognized = IgnoreUnrecognizedVMOptions;
-
-  if (PrintVMOptions) {
-    const char* tail;
-    for (int i = 0; i < vm_args.nOptions; i++) {
-      const JavaVMOption *option = vm_args.options + i;
-      if (match_option(option, "-XX:", &tail)) {
-        logOption(tail);
-      }
-    }
-  }
-
-  jint result = parse_each_vm_init_arg(&vm_args, scp_p, scp_assembly_required_p,
-                                       Flag::ENVIRON_VAR);
-  FREE_C_HEAP_ARRAY(JavaVMOption, options_arr);
+
+  // Fill out JavaVMInitArgs structure.
+  jint status = vm_args->set_args(options);
+
   delete options;
   os::free(buffer);
-  return result;
+  return status;
 }
 
 void Arguments::set_shared_spaces_flags() {
@@ -3567,32 +3599,18 @@
 }
 #endif // PRODUCT
 
-// Parse entry point called from JNI_CreateJavaVM
-
-jint Arguments::parse(const JavaVMInitArgs* args) {
-
-  // Initialize ranges and constraints
-  CommandLineFlagRangeList::init();
-  CommandLineFlagConstraintList::init();
-
+static jint match_special_option_and_act(const JavaVMInitArgs* args,
+                                        char** flags_file) {
   // Remaining part of option string
   const char* tail;
 
-  // If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
-  const char* hotspotrc = ".hotspotrc";
-  bool settings_file_specified = false;
-  bool needs_hotspotrc_warning = false;
-
-  const char* flags_file;
-  int index;
-  for (index = 0; index < args->nOptions; index++) {
-    const JavaVMOption *option = args->options + index;
+  for (int index = 0; index < args->nOptions; index++) {
+    const JavaVMOption* option = args->options + index;
     if (ArgumentsExt::process_options(option)) {
       continue;
     }
     if (match_option(option, "-XX:Flags=", &tail)) {
-      flags_file = tail;
-      settings_file_specified = true;
+      *flags_file = (char *) tail;
       continue;
     }
     if (match_option(option, "-XX:+PrintVMOptions")) {
@@ -3646,10 +3664,69 @@
     }
 #endif
   }
+  return JNI_OK;
+}
+
+static void print_options(const JavaVMInitArgs *args) {
+  const char* tail;
+  for (int index = 0; index < args->nOptions; index++) {
+    const JavaVMOption *option = args->options + index;
+    if (match_option(option, "-XX:", &tail)) {
+      logOption(tail);
+    }
+  }
+}
+
+// Parse entry point called from JNI_CreateJavaVM
+
+jint Arguments::parse(const JavaVMInitArgs* args) {
+
+  // Initialize ranges and constraints
+  CommandLineFlagRangeList::init();
+  CommandLineFlagConstraintList::init();
+
+  // If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
+  const char* hotspotrc = ".hotspotrc";
+  char* flags_file = NULL;
+  bool settings_file_specified = false;
+  bool needs_hotspotrc_warning = false;
+  ScopedVMInitArgs java_tool_options_args;
+  ScopedVMInitArgs java_options_args;
+
+  jint code =
+      parse_java_tool_options_environment_variable(&java_tool_options_args);
+  if (code != JNI_OK) {
+    return code;
+  }
+
+  code = parse_java_options_environment_variable(&java_options_args);
+  if (code != JNI_OK) {
+    return code;
+  }
+
+  code =
+      match_special_option_and_act(java_tool_options_args.get(), &flags_file);
+  if (code != JNI_OK) {
+    return code;
+  }
+
+  code = match_special_option_and_act(args, &flags_file);
+  if (code != JNI_OK) {
+    return code;
+  }
+
+  code = match_special_option_and_act(java_options_args.get(), &flags_file);
+  if (code != JNI_OK) {
+    return code;
+  }
+
+  settings_file_specified = (flags_file != NULL);
 
   if (IgnoreUnrecognizedVMOptions) {
     // uncast const to modify the flag args->ignoreUnrecognized
     *(jboolean*)(&args->ignoreUnrecognized) = true;
+    java_tool_options_args.get()->ignoreUnrecognized = true;
+    java_options_args.get()->ignoreUnrecognized = true;
   }
 
   // Parse specified settings file
@@ -3672,16 +3749,15 @@
   }
 
   if (PrintVMOptions) {
-    for (index = 0; index < args->nOptions; index++) {
-      const JavaVMOption *option = args->options + index;
-      if (match_option(option, "-XX:", &tail)) {
-        logOption(tail);
-      }
-    }
+    print_options(java_tool_options_args.get());
+    print_options(args);
+    print_options(java_options_args.get());
   }
 
   // Parse JavaVMInitArgs structure passed in, as well as JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
-  jint result = parse_vm_init_args(args);
+  jint result = parse_vm_init_args(java_tool_options_args.get(),
+                                   java_options_args.get(), args);
+
   if (result != JNI_OK) {
     return result;
   }
--- a/hotspot/src/share/vm/runtime/arguments.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/arguments.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -220,6 +220,8 @@
   }
 };
 
+// Helper class for controlling the lifetime of JavaVMInitArgs objects.
+class ScopedVMInitArgs;
 
 class Arguments : AllStatic {
   friend class VMStructs;
@@ -374,10 +376,12 @@
   static bool process_argument(const char* arg, jboolean ignore_unrecognized, Flag::Flags origin);
   static void process_java_launcher_argument(const char*, void*);
   static void process_java_compiler_argument(char* arg);
-  static jint parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p);
-  static jint parse_java_tool_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p);
-  static jint parse_java_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p);
-  static jint parse_vm_init_args(const JavaVMInitArgs* args);
+  static jint parse_options_environment_variable(const char* name, ScopedVMInitArgs* vm_args);
+  static jint parse_java_tool_options_environment_variable(ScopedVMInitArgs* vm_args);
+  static jint parse_java_options_environment_variable(ScopedVMInitArgs* vm_args);
+  static jint parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
+                                 const JavaVMInitArgs *java_options_args,
+                                 const JavaVMInitArgs *cmd_line_args);
   static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, SysClassPath* scp_p, bool* scp_assembly_required_p, Flag::Flags origin);
   static jint finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_required);
   static bool is_bad_option(const JavaVMOption* option, jboolean ignore, const char* option_type);
--- a/hotspot/src/share/vm/runtime/globals.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1286,6 +1286,8 @@
                                                                             \
   experimental(intx, SyncVerbose, 0, "(Unstable)")                          \
                                                                             \
+  product(bool, InlineNotify, true, "intrinsify subset of notify" )         \
+                                                                            \
   experimental(intx, ClearFPUAtPark, 0, "(Unsafe, Unstable)")               \
                                                                             \
   experimental(intx, hashCode, 5,                                           \
@@ -4127,14 +4129,18 @@
              "Use the FP register for holding the frame pointer "           \
              "and not as a general purpose register.")                      \
                                                                             \
-  diagnostic(bool, CheckIntrinsics, trueInDebug,                            \
+  diagnostic(bool, CheckIntrinsics, true,                                   \
              "When a class C is loaded, check that "                        \
              "(1) all intrinsics defined by the VM for class C are present "\
              "in the loaded class file and are marked with the "            \
-             "@HotSpotIntrinsicCandidate annotation and also that "         \
+             "@HotSpotIntrinsicCandidate annotation, that "                 \
              "(2) there is an intrinsic registered for all loaded methods " \
              "that are annotated with the @HotSpotIntrinsicCandidate "      \
-             "annotation.")
+             "annotation, and that "                                        \
+             "(3) no orphan methods exist for class C (i.e., methods for "  \
+             "which the VM declares an intrinsic but that are not declared "\
+             "in the loaded class C. "                                      \
+             "Check (3) is available only in debug builds.")
 
 /*
  *  Macros for factoring of globals
--- a/hotspot/src/share/vm/runtime/objectMonitor.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/objectMonitor.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -430,6 +430,8 @@
   return -1;
 }
 
+#define MAX_RECHECK_INTERVAL 1000
+
 void NOINLINE ObjectMonitor::EnterI(TRAPS) {
   Thread * const Self = THREAD;
   assert(Self->is_Java_thread(), "invariant");
@@ -539,7 +541,7 @@
 
   TEVENT(Inflated enter - Contention);
   int nWakeups = 0;
-  int RecheckInterval = 1;
+  int recheckInterval = 1;
 
   for (;;) {
 
@@ -553,10 +555,12 @@
     // park self
     if (_Responsible == Self || (SyncFlags & 1)) {
       TEVENT(Inflated enter - park TIMED);
-      Self->_ParkEvent->park((jlong) RecheckInterval);
-      // Increase the RecheckInterval, but clamp the value.
-      RecheckInterval *= 8;
-      if (RecheckInterval > 1000) RecheckInterval = 1000;
+      Self->_ParkEvent->park((jlong) recheckInterval);
+      // Increase the recheckInterval, but clamp the value.
+      recheckInterval *= 8;
+      if (recheckInterval > MAX_RECHECK_INTERVAL) {
+        recheckInterval = MAX_RECHECK_INTERVAL;
+      }
     } else {
       TEVENT(Inflated enter - park UNTIMED);
       Self->_ParkEvent->park();
@@ -709,7 +713,7 @@
       // or java_suspend_self()
       jt->set_suspend_equivalent();
       if (SyncFlags & 1) {
-        Self->_ParkEvent->park((jlong)1000);
+        Self->_ParkEvent->park((jlong)MAX_RECHECK_INTERVAL);
       } else {
         Self->_ParkEvent->park();
       }
@@ -1636,15 +1640,8 @@
 // then instead of transferring a thread from the WaitSet to the EntryList
 // we might just dequeue a thread from the WaitSet and directly unpark() it.
 
-void ObjectMonitor::notify(TRAPS) {
-  CHECK_OWNER();
-  if (_WaitSet == NULL) {
-    TEVENT(Empty-Notify);
-    return;
-  }
-  DTRACE_MONITOR_PROBE(notify, this, object(), THREAD);
-
-  int Policy = Knob_MoveNotifyee;
+void ObjectMonitor::INotify(Thread * Self) {
+  const int policy = Knob_MoveNotifyee;
 
   Thread::SpinAcquire(&_WaitSetLock, "WaitSet - notify");
   ObjectWaiter * iterator = DequeueWaiter();
@@ -1652,74 +1649,76 @@
     TEVENT(Notify1 - Transfer);
     guarantee(iterator->TState == ObjectWaiter::TS_WAIT, "invariant");
     guarantee(iterator->_notified == 0, "invariant");
-    if (Policy != 4) {
+    // Disposition - what might we do with iterator ?
+    // a.  add it directly to the EntryList - either tail (policy == 1)
+    //     or head (policy == 0).
+    // b.  push it onto the front of the _cxq (policy == 2).
+    // For now we use (b).
+    if (policy != 4) {
       iterator->TState = ObjectWaiter::TS_ENTER;
     }
     iterator->_notified = 1;
-    Thread * Self = THREAD;
     iterator->_notifier_tid = Self->osthread()->thread_id();
 
-    ObjectWaiter * List = _EntryList;
-    if (List != NULL) {
-      assert(List->_prev == NULL, "invariant");
-      assert(List->TState == ObjectWaiter::TS_ENTER, "invariant");
-      assert(List != iterator, "invariant");
+    ObjectWaiter * list = _EntryList;
+    if (list != NULL) {
+      assert(list->_prev == NULL, "invariant");
+      assert(list->TState == ObjectWaiter::TS_ENTER, "invariant");
+      assert(list != iterator, "invariant");
     }
 
-    if (Policy == 0) {       // prepend to EntryList
-      if (List == NULL) {
+    if (policy == 0) {       // prepend to EntryList
+      if (list == NULL) {
         iterator->_next = iterator->_prev = NULL;
         _EntryList = iterator;
       } else {
-        List->_prev = iterator;
-        iterator->_next = List;
+        list->_prev = iterator;
+        iterator->_next = list;
         iterator->_prev = NULL;
         _EntryList = iterator;
       }
-    } else if (Policy == 1) {      // append to EntryList
-      if (List == NULL) {
+    } else if (policy == 1) {      // append to EntryList
+      if (list == NULL) {
         iterator->_next = iterator->_prev = NULL;
         _EntryList = iterator;
       } else {
         // CONSIDER:  finding the tail currently requires a linear-time walk of
         // the EntryList.  We can make tail access constant-time by converting to
         // a CDLL instead of using our current DLL.
-        ObjectWaiter * Tail;
-        for (Tail = List; Tail->_next != NULL; Tail = Tail->_next) /* empty */;
-        assert(Tail != NULL && Tail->_next == NULL, "invariant");
-        Tail->_next = iterator;
-        iterator->_prev = Tail;
+        ObjectWaiter * tail;
+        for (tail = list; tail->_next != NULL; tail = tail->_next) /* empty */;
+        assert(tail != NULL && tail->_next == NULL, "invariant");
+        tail->_next = iterator;
+        iterator->_prev = tail;
         iterator->_next = NULL;
       }
-    } else if (Policy == 2) {      // prepend to cxq
-      // prepend to cxq
-      if (List == NULL) {
+    } else if (policy == 2) {      // prepend to cxq
+      if (list == NULL) {
         iterator->_next = iterator->_prev = NULL;
         _EntryList = iterator;
       } else {
         iterator->TState = ObjectWaiter::TS_CXQ;
         for (;;) {
-          ObjectWaiter * Front = _cxq;
-          iterator->_next = Front;
-          if (Atomic::cmpxchg_ptr (iterator, &_cxq, Front) == Front) {
+          ObjectWaiter * front = _cxq;
+          iterator->_next = front;
+          if (Atomic::cmpxchg_ptr(iterator, &_cxq, front) == front) {
             break;
           }
         }
       }
-    } else if (Policy == 3) {      // append to cxq
+    } else if (policy == 3) {      // append to cxq
       iterator->TState = ObjectWaiter::TS_CXQ;
       for (;;) {
-        ObjectWaiter * Tail;
-        Tail = _cxq;
-        if (Tail == NULL) {
+        ObjectWaiter * tail = _cxq;
+        if (tail == NULL) {
           iterator->_next = NULL;
-          if (Atomic::cmpxchg_ptr (iterator, &_cxq, NULL) == NULL) {
+          if (Atomic::cmpxchg_ptr(iterator, &_cxq, NULL) == NULL) {
             break;
           }
         } else {
-          while (Tail->_next != NULL) Tail = Tail->_next;
-          Tail->_next = iterator;
-          iterator->_prev = Tail;
+          while (tail->_next != NULL) tail = tail->_next;
+          tail->_next = iterator;
+          iterator->_prev = tail;
           iterator->_next = NULL;
           break;
         }
@@ -1731,10 +1730,6 @@
       ev->unpark();
     }
 
-    if (Policy < 4) {
-      iterator->wait_reenter_begin(this);
-    }
-
     // _WaitSetLock protects the wait queue, not the EntryList.  We could
     // move the add-to-EntryList operation, above, outside the critical section
     // protected by _WaitSetLock.  In practice that's not useful.  With the
@@ -1742,133 +1737,63 @@
     // is the only thread that grabs _WaitSetLock.  There's almost no contention
     // on _WaitSetLock so it's not profitable to reduce the length of the
     // critical section.
+
+    if (policy < 4) {
+      iterator->wait_reenter_begin(this);
+    }
   }
-
   Thread::SpinRelease(&_WaitSetLock);
+}
 
-  if (iterator != NULL && ObjectMonitor::_sync_Notifications != NULL) {
-    ObjectMonitor::_sync_Notifications->inc();
+// Consider: a not-uncommon synchronization bug is to use notify() when
+// notifyAll() is more appropriate, potentially resulting in stranded
+// threads; this is one example of a lost wakeup. A useful diagnostic
+// option is to force all notify() operations to behave as notifyAll().
+//
+// Note: We can also detect many such problems with a "minimum wait".
+// When the "minimum wait" is set to a small non-zero timeout value
+// and the program does not hang whereas it did absent "minimum wait",
+// that suggests a lost wakeup bug. The '-XX:SyncFlags=1' option uses
+// a "minimum wait" for all park() operations; see the recheckInterval
+// variable and MAX_RECHECK_INTERVAL.
+
+void ObjectMonitor::notify(TRAPS) {
+  CHECK_OWNER();
+  if (_WaitSet == NULL) {
+    TEVENT(Empty-Notify);
+    return;
+  }
+  DTRACE_MONITOR_PROBE(notify, this, object(), THREAD);
+  INotify(THREAD);
+  if (ObjectMonitor::_sync_Notifications != NULL) {
+    ObjectMonitor::_sync_Notifications->inc(1);
   }
 }
 
 
+// The current implementation of notifyAll() transfers the waiters one-at-a-time
+// from the waitset to the EntryList. This could be done more efficiently with a
+// single bulk transfer but in practice it's not time-critical. Beware too,
+// that in prepend-mode we invert the order of the waiters. Let's say that the
+// waitset is "ABCD" and the EntryList is "XYZ". After a notifyAll() in prepend
+// mode the waitset will be empty and the EntryList will be "DCBAXYZ".
+
 void ObjectMonitor::notifyAll(TRAPS) {
   CHECK_OWNER();
-  ObjectWaiter* iterator;
   if (_WaitSet == NULL) {
     TEVENT(Empty-NotifyAll);
     return;
   }
+
   DTRACE_MONITOR_PROBE(notifyAll, this, object(), THREAD);
-
-  int Policy = Knob_MoveNotifyee;
-  int Tally = 0;
-  Thread::SpinAcquire(&_WaitSetLock, "WaitSet - notifyall");
-
-  for (;;) {
-    iterator = DequeueWaiter();
-    if (iterator == NULL) break;
-    TEVENT(NotifyAll - Transfer1);
-    ++Tally;
-
-    // Disposition - what might we do with iterator ?
-    // a.  add it directly to the EntryList - either tail or head.
-    // b.  push it onto the front of the _cxq.
-    // For now we use (a).
-
-    guarantee(iterator->TState == ObjectWaiter::TS_WAIT, "invariant");
-    guarantee(iterator->_notified == 0, "invariant");
-    iterator->_notified = 1;
-    Thread * Self = THREAD;
-    iterator->_notifier_tid = Self->osthread()->thread_id();
-    if (Policy != 4) {
-      iterator->TState = ObjectWaiter::TS_ENTER;
-    }
-
-    ObjectWaiter * List = _EntryList;
-    if (List != NULL) {
-      assert(List->_prev == NULL, "invariant");
-      assert(List->TState == ObjectWaiter::TS_ENTER, "invariant");
-      assert(List != iterator, "invariant");
-    }
-
-    if (Policy == 0) {       // prepend to EntryList
-      if (List == NULL) {
-        iterator->_next = iterator->_prev = NULL;
-        _EntryList = iterator;
-      } else {
-        List->_prev = iterator;
-        iterator->_next = List;
-        iterator->_prev = NULL;
-        _EntryList = iterator;
-      }
-    } else if (Policy == 1) {      // append to EntryList
-      if (List == NULL) {
-        iterator->_next = iterator->_prev = NULL;
-        _EntryList = iterator;
-      } else {
-        // CONSIDER:  finding the tail currently requires a linear-time walk of
-        // the EntryList.  We can make tail access constant-time by converting to
-        // a CDLL instead of using our current DLL.
-        ObjectWaiter * Tail;
-        for (Tail = List; Tail->_next != NULL; Tail = Tail->_next) /* empty */;
-        assert(Tail != NULL && Tail->_next == NULL, "invariant");
-        Tail->_next = iterator;
-        iterator->_prev = Tail;
-        iterator->_next = NULL;
-      }
-    } else if (Policy == 2) {      // prepend to cxq
-      // prepend to cxq
-      iterator->TState = ObjectWaiter::TS_CXQ;
-      for (;;) {
-        ObjectWaiter * Front = _cxq;
-        iterator->_next = Front;
-        if (Atomic::cmpxchg_ptr (iterator, &_cxq, Front) == Front) {
-          break;
-        }
-      }
-    } else if (Policy == 3) {      // append to cxq
-      iterator->TState = ObjectWaiter::TS_CXQ;
-      for (;;) {
-        ObjectWaiter * Tail;
-        Tail = _cxq;
-        if (Tail == NULL) {
-          iterator->_next = NULL;
-          if (Atomic::cmpxchg_ptr (iterator, &_cxq, NULL) == NULL) {
-            break;
-          }
-        } else {
-          while (Tail->_next != NULL) Tail = Tail->_next;
-          Tail->_next = iterator;
-          iterator->_prev = Tail;
-          iterator->_next = NULL;
-          break;
-        }
-      }
-    } else {
-      ParkEvent * ev = iterator->_event;
-      iterator->TState = ObjectWaiter::TS_RUN;
-      OrderAccess::fence();
-      ev->unpark();
-    }
-
-    if (Policy < 4) {
-      iterator->wait_reenter_begin(this);
-    }
-
-    // _WaitSetLock protects the wait queue, not the EntryList.  We could
-    // move the add-to-EntryList operation, above, outside the critical section
-    // protected by _WaitSetLock.  In practice that's not useful.  With the
-    // exception of  wait() timeouts and interrupts the monitor owner
-    // is the only thread that grabs _WaitSetLock.  There's almost no contention
-    // on _WaitSetLock so it's not profitable to reduce the length of the
-    // critical section.
+  int tally = 0;
+  while (_WaitSet != NULL) {
+    tally++;
+    INotify(THREAD);
   }
 
-  Thread::SpinRelease(&_WaitSetLock);
-
-  if (Tally != 0 && ObjectMonitor::_sync_Notifications != NULL) {
-    ObjectMonitor::_sync_Notifications->inc(Tally);
+  if (tally != 0 && ObjectMonitor::_sync_Notifications != NULL) {
+    ObjectMonitor::_sync_Notifications->inc(tally);
   }
 }
 
--- a/hotspot/src/share/vm/runtime/objectMonitor.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/objectMonitor.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -332,7 +332,7 @@
  private:
   void      AddWaiter(ObjectWaiter * waiter);
   static    void DeferredInitialize();
-
+  void      INotify(Thread * Self);
   ObjectWaiter * DequeueWaiter();
   void      DequeueSpecificWaiter(ObjectWaiter * waiter);
   void      EnterI(TRAPS);
--- a/hotspot/src/share/vm/runtime/rframe.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/rframe.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -81,7 +81,7 @@
 : InterpretedRFrame(fr, thread, callee) {}
 
 RFrame* RFrame::new_RFrame(frame fr, JavaThread* thread, RFrame*const  callee) {
-  RFrame* rf;
+  RFrame* rf = NULL;
   int dist = callee ? callee->distance() : -1;
   if (fr.is_interpreted_frame()) {
     rf = new InterpretedRFrame(fr, thread, callee);
@@ -93,8 +93,10 @@
   } else {
     assert(false, "Unhandled frame type");
   }
-  rf->set_distance(dist);
-  rf->init();
+  if (rf != NULL) {
+    rf->set_distance(dist);
+    rf->init();
+  }
   return rf;
 }
 
--- a/hotspot/src/share/vm/runtime/synchronizer.cpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/synchronizer.cpp	Mon Aug 03 16:33:06 2015 -0700
@@ -86,6 +86,8 @@
     }                                                                      \
   }
 
+#define HOTSPOT_MONITOR_PROBE_notify HOTSPOT_MONITOR_NOTIFY
+#define HOTSPOT_MONITOR_PROBE_notifyAll HOTSPOT_MONITOR_NOTIFYALL
 #define HOTSPOT_MONITOR_PROBE_waited HOTSPOT_MONITOR_WAITED
 
 #define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread)                  \
@@ -146,6 +148,58 @@
 // operators: safepoints or indefinite blocking (blocking that might span a
 // safepoint) are forbidden. Generally the thread_state() is _in_Java upon
 // entry.
+//
+// Consider: An interesting optimization is to have the JIT recognize the
+// following common idiom:
+//   synchronized (someobj) { .... ; notify(); }
+// That is, we find a notify() or notifyAll() call that immediately precedes
+// the monitorexit operation.  In that case the JIT could fuse the operations
+// into a single notifyAndExit() runtime primitive.
+
+bool ObjectSynchronizer::quick_notify(oopDesc * obj, Thread * self, bool all) {
+  assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
+  assert(self->is_Java_thread(), "invariant");
+  assert(((JavaThread *) self)->thread_state() == _thread_in_Java, "invariant");
+  No_Safepoint_Verifier nsv;
+  if (obj == NULL) return false;  // slow-path for invalid obj
+  const markOop mark = obj->mark();
+
+  if (mark->has_locker() && self->is_lock_owned((address)mark->locker())) {
+    // Degenerate notify
+    // stack-locked by caller so by definition the implied waitset is empty.
+    return true;
+  }
+
+  if (mark->has_monitor()) {
+    ObjectMonitor * const mon = mark->monitor();
+    assert(mon->object() == obj, "invariant");
+    if (mon->owner() != self) return false;  // slow-path for IMS exception
+
+    if (mon->first_waiter() != NULL) {
+      // We have one or more waiters. Since this is an inflated monitor
+      // that we own, we can transfer one or more threads from the waitset
+      // to the entrylist here and now, avoiding the slow-path.
+      if (all) {
+        DTRACE_MONITOR_PROBE(notifyAll, mon, obj, self);
+      } else {
+        DTRACE_MONITOR_PROBE(notify, mon, obj, self);
+      }
+      int tally = 0;
+      do {
+        mon->INotify(self);
+        ++tally;
+      } while (mon->first_waiter() != NULL && all);
+      if (ObjectMonitor::_sync_Notifications != NULL) {
+        ObjectMonitor::_sync_Notifications->inc(tally);
+      }
+    }
+    return true;
+  }
+
+  // biased locking and any other IMS exception states take the slow-path
+  return false;
+}
+
 
 // The LockNode emitted directly at the synchronization site would have
 // been too big if it were to have included support for the cases of inflated
@@ -1451,8 +1505,7 @@
 // This is an unfortunate aspect of this design.
 
 enum ManifestConstants {
-  ClearResponsibleAtSTW   = 0,
-  MaximumRecheckInterval  = 1000
+  ClearResponsibleAtSTW = 0
 };
 
 // Deflate a single monitor if not in-use
--- a/hotspot/src/share/vm/runtime/synchronizer.hpp	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/src/share/vm/runtime/synchronizer.hpp	Mon Aug 03 16:33:06 2015 -0700
@@ -72,6 +72,7 @@
   static void notify(Handle obj, TRAPS);
   static void notifyall(Handle obj, TRAPS);
 
+  static bool quick_notify(oopDesc* obj, Thread* Self, bool All);
   static bool quick_enter(oop obj, Thread* Self, BasicLock* Lock);
 
   // Special internal-use-only method for use by JVM infrastructure
--- a/hotspot/test/compiler/dependencies/MonomorphicObjectCall/java/lang/Object.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/hotspot/test/compiler/dependencies/MonomorphicObjectCall/java/lang/Object.java	Mon Aug 03 16:33:06 2015 -0700
@@ -58,8 +58,10 @@
         return getClass().getName() + "@" + Integer.toHexString(hashCode());
     }
 
+    @HotSpotIntrinsicCandidate
     public final native void notify();
 
+    @HotSpotIntrinsicCandidate
     public final native void notifyAll();
 
     public final native void wait(long timeout) throws InterruptedException;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/unsafe/UnsafeGetConstantField.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,370 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary tests on constant folding of unsafe get operations
+ * @library /testlibrary /../../test/lib
+ * @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
+ *                   -Xbatch -XX:-TieredCompilation
+ *                   -XX:+FoldStableValues
+ *                   -XX:+UseUnalignedAccesses
+ *                   java.lang.invoke.UnsafeGetConstantField
+ * @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
+ *                   -Xbatch -XX:-TieredCompilation
+ *                   -XX:+FoldStableValues
+ *                   -XX:-UseUnalignedAccesses
+ *                   java.lang.invoke.UnsafeGetConstantField
+ */
+package java.lang.invoke;
+
+import jdk.internal.org.objectweb.asm.*;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.Utils;
+import sun.misc.Unsafe;
+import static jdk.internal.org.objectweb.asm.Opcodes.*;
+
+public class UnsafeGetConstantField {
+    static final Class<?> THIS_CLASS = UnsafeGetConstantField.class;
+
+    static final Unsafe U = Utils.getUnsafe();
+
+    public static void main(String[] args) {
+        testUnsafeGetAddress();
+        testUnsafeGetField();
+        testUnsafeGetFieldUnaligned();
+        System.out.println("TEST PASSED");
+    }
+
+    static final long nativeAddr = U.allocateMemory(16);
+    static void testUnsafeGetAddress() {
+        long cookie = 0x12345678L;
+        U.putAddress(nativeAddr, cookie);
+        for (int i = 0; i < 20_000; i++) {
+            Asserts.assertEquals(checkGetAddress(), cookie);
+        }
+    }
+    @DontInline
+    static long checkGetAddress() {
+        return U.getAddress(nativeAddr);
+    }
+
+    static void testUnsafeGetField() {
+        int[] testedFlags = new int[] { 0, ACC_STATIC, ACC_FINAL, (ACC_STATIC | ACC_FINAL) };
+        boolean[] boolValues = new boolean[] { false, true };
+        String[] modes = new String[] { "", "Volatile" };
+
+        for (JavaType t : JavaType.values()) {
+            for (int flags : testedFlags) {
+                for (boolean stable : boolValues) {
+                    for (boolean hasDefaultValue : boolValues) {
+                        for (String suffix : modes) {
+                            runTest(t, flags, stable, hasDefaultValue, suffix);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    static void testUnsafeGetFieldUnaligned() {
+        JavaType[] types = new JavaType[] { JavaType.S, JavaType.C, JavaType.I, JavaType.J };
+        int[] testedFlags = new int[] { 0, ACC_STATIC, ACC_FINAL, (ACC_STATIC | ACC_FINAL) };
+        boolean[] boolValues = new boolean[] { false, true };
+
+        for (JavaType t : types) {
+            for (int flags : testedFlags) {
+                for (boolean stable : boolValues) {
+                    for (boolean hasDefaultValue : boolValues) {
+                        runTest(t, flags, stable, hasDefaultValue, "Unaligned");
+                    }
+                }
+            }
+        }
+    }
+
+    static void runTest(JavaType t, int flags, boolean stable, boolean hasDefaultValue, String postfix) {
+        Generator g = new Generator(t, flags, stable, hasDefaultValue, postfix);
+        Test test = g.generate();
+        System.out.printf("type=%s flags=%d stable=%b default=%b post=%s\n",
+                          t.typeName, flags, stable, hasDefaultValue, postfix);
+        // Trigger compilation
+        for (int i = 0; i < 20_000; i++) {
+            Asserts.assertEQ(test.testDirect(), test.testUnsafe());
+        }
+    }
+
+    interface Test {
+        Object testDirect();
+        Object testUnsafe();
+    }
+
+    enum JavaType {
+        Z("Boolean", true),
+        B("Byte", new Byte((byte)-1)),
+        S("Short", new Short((short)-1)),
+        C("Char", Character.MAX_VALUE),
+        I("Int", -1),
+        J("Long", -1L),
+        F("Float", -1F),
+        D("Double", -1D),
+        L("Object", new Object());
+
+        String typeName;
+        Object value;
+        String wrapper;
+        JavaType(String name, Object value) {
+            this.typeName = name;
+            this.value = value;
+            this.wrapper = internalName(value.getClass());
+        }
+
+        String desc() {
+            if (this == JavaType.L) {
+                return "Ljava/lang/Object;";
+            } else {
+                return toString();
+            }
+        }
+    }
+
+    static String internalName(Class cls) {
+        return cls.getName().replace('.', '/');
+    }
+    static String descriptor(Class cls) {
+        return String.format("L%s;", internalName(cls));
+    }
+
+    /**
+     * Sample generated class:
+     * static class T1 implements Test {
+     *   final int f = -1;
+     *   static final long FIELD_OFFSET;
+     *   static final T1 t = new T1();
+     *   static {
+     *     FIELD_OFFSET = U.objectFieldOffset(T1.class.getDeclaredField("f"));
+     *   }
+     *   public Object testDirect()  { return t.f; }
+     *   public Object testUnsafe()  { return U.getInt(t, FIELD_OFFSET); }
+     * }
+     */
+    static class Generator {
+        static final String FIELD_NAME = "f";
+        static final String UNSAFE_NAME = internalName(Unsafe.class);
+        static final String UNSAFE_DESC = descriptor(Unsafe.class);
+
+        final JavaType type;
+        final int flags;
+        final boolean stable;
+        final boolean hasDefaultValue;
+        final String nameSuffix;
+
+        final String className;
+        final String classDesc;
+        final String fieldDesc;
+
+        Generator(JavaType t, int flags, boolean stable, boolean hasDefaultValue, String suffix) {
+            this.type = t;
+            this.flags = flags;
+            this.stable = stable;
+            this.hasDefaultValue = hasDefaultValue;
+            this.nameSuffix = suffix;
+
+            fieldDesc = type.desc();
+            className = String.format("%s$Test%s%s__f=%d__s=%b__d=%b", internalName(THIS_CLASS), type.typeName,
+                                      suffix, flags, stable, hasDefaultValue);
+            classDesc = String.format("L%s;", className);
+        }
+
+        byte[] generateClassFile() {
+            ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
+            cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC | Opcodes.ACC_SUPER, className, null, "java/lang/Object",
+                    new String[]{ internalName(Test.class) });
+
+            // Declare fields
+            cw.visitField(ACC_FINAL | ACC_STATIC, "t", classDesc, null, null).visitEnd();
+            cw.visitField(ACC_FINAL | ACC_STATIC, "FIELD_OFFSET", "J", null, null).visitEnd();
+            cw.visitField(ACC_FINAL | ACC_STATIC, "U", UNSAFE_DESC, null, null).visitEnd();
+            if (isStatic()) {
+                cw.visitField(ACC_FINAL | ACC_STATIC, "STATIC_BASE", "Ljava/lang/Object;", null, null).visitEnd();
+            }
+
+            FieldVisitor fv = cw.visitField(flags, FIELD_NAME, fieldDesc, null, null);
+            if (stable) {
+                fv.visitAnnotation(descriptor(Stable.class), true);
+            }
+            fv.visitEnd();
+
+            // Methods
+            {   // <init>
+                MethodVisitor mv = cw.visitMethod(0, "<init>", "()V", null, null);
+                mv.visitCode();
+
+                mv.visitVarInsn(ALOAD, 0);
+                mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
+                if (!isStatic()) {
+                    initField(mv);
+                }
+                mv.visitInsn(RETURN);
+
+                mv.visitMaxs(0, 0);
+                mv.visitEnd();
+            }
+
+            {   // public Object testDirect() { return t.f; }
+                MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "testDirect", "()Ljava/lang/Object;", null, null);
+                mv.visitCode();
+
+                getFieldValue(mv);
+                wrapResult(mv);
+                mv.visitInsn(ARETURN);
+
+                mv.visitMaxs(0, 0);
+                mv.visitEnd();
+            }
+
+            {   // public Object testUnsafe() { return U.getInt(t, FIELD_OFFSET); }
+                MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "testUnsafe", "()Ljava/lang/Object;", null, null);
+                mv.visitCode();
+
+                getFieldValueUnsafe(mv);
+                wrapResult(mv);
+                mv.visitInsn(ARETURN);
+
+                mv.visitMaxs(0, 0);
+                mv.visitEnd();
+            }
+
+            {   // <clinit>
+                MethodVisitor mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
+                mv.visitCode();
+
+                // Cache Unsafe instance
+                mv.visitMethodInsn(INVOKESTATIC, UNSAFE_NAME, "getUnsafe", "()"+UNSAFE_DESC, false);
+                mv.visitFieldInsn(PUTSTATIC, className, "U", UNSAFE_DESC);
+
+                // Create test object instance
+                mv.visitTypeInsn(NEW, className);
+                mv.visitInsn(DUP);
+                mv.visitMethodInsn(INVOKESPECIAL, className, "<init>", "()V", false);
+                mv.visitFieldInsn(PUTSTATIC, className, "t", classDesc);
+
+                // Compute field offset
+                getUnsafe(mv);
+                getField(mv);
+                mv.visitMethodInsn(INVOKEVIRTUAL, UNSAFE_NAME, (isStatic() ? "staticFieldOffset" : "objectFieldOffset"),
+                        "(Ljava/lang/reflect/Field;)J", false);
+                mv.visitFieldInsn(PUTSTATIC, className, "FIELD_OFFSET", "J");
+
+                // Compute base offset for static field
+                if (isStatic()) {
+                    getUnsafe(mv);
+                    getField(mv);
+                    mv.visitMethodInsn(INVOKEVIRTUAL, UNSAFE_NAME, "staticFieldBase", "(Ljava/lang/reflect/Field;)Ljava/lang/Object;", false);
+                    mv.visitFieldInsn(PUTSTATIC, className, "STATIC_BASE", "Ljava/lang/Object;");
+                    initField(mv);
+                }
+
+                mv.visitInsn(RETURN);
+                mv.visitMaxs(0, 0);
+                mv.visitEnd();
+            }
+
+            return cw.toByteArray();
+        }
+
+        Test generate() {
+            byte[] classFile = generateClassFile();
+            Class<?> c = U.defineClass(className, classFile, 0, classFile.length, THIS_CLASS.getClassLoader(), null);
+            try {
+                return (Test) c.newInstance();
+            } catch(Exception e) {
+                throw new Error(e);
+            }
+        }
+
+        boolean isStatic() {
+            return (flags & ACC_STATIC) > 0;
+        }
+        boolean isFinal() {
+            return (flags & ACC_FINAL) > 0;
+        }
+        void getUnsafe(MethodVisitor mv) {
+            mv.visitFieldInsn(GETSTATIC, className, "U", UNSAFE_DESC);
+        }
+        void getField(MethodVisitor mv) {
+            mv.visitLdcInsn(Type.getType(classDesc));
+            mv.visitLdcInsn(FIELD_NAME);
+            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "getDeclaredField", "(Ljava/lang/String;)Ljava/lang/reflect/Field;", false);
+        }
+        void getFieldValue(MethodVisitor mv) {
+            if (isStatic()) {
+                mv.visitFieldInsn(GETSTATIC, className, FIELD_NAME, fieldDesc);
+            } else {
+                mv.visitFieldInsn(GETSTATIC, className, "t", classDesc);
+                mv.visitFieldInsn(GETFIELD, className, FIELD_NAME, fieldDesc);
+            }
+        }
+        void getFieldValueUnsafe(MethodVisitor mv) {
+            getUnsafe(mv);
+            if (isStatic()) {
+                mv.visitFieldInsn(GETSTATIC, className, "STATIC_BASE", "Ljava/lang/Object;");
+            } else {
+                mv.visitFieldInsn(GETSTATIC, className, "t", classDesc);
+            }
+            mv.visitFieldInsn(GETSTATIC, className, "FIELD_OFFSET", "J");
+            String name = "get" + type.typeName + nameSuffix;
+            mv.visitMethodInsn(INVOKEVIRTUAL, UNSAFE_NAME, name, "(Ljava/lang/Object;J)" + type.desc(), false);
+        }
+        void wrapResult(MethodVisitor mv) {
+            if (type != JavaType.L) {
+                String desc = String.format("(%s)L%s;", type.desc(), type.wrapper);
+                mv.visitMethodInsn(INVOKESTATIC, type.wrapper, "valueOf", desc, false);
+            }
+        }
+        void initField(MethodVisitor mv) {
+            if (hasDefaultValue) {
+                return; // Nothing to do
+            }
+            if (!isStatic()) {
+                mv.visitVarInsn(ALOAD, 0);
+            }
+            switch (type) {
+                case L: {
+                    mv.visitTypeInsn(NEW, "java/lang/Object");
+                    mv.visitInsn(DUP);
+                    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
+
+                    break;
+                }
+                default: {
+                    mv.visitLdcInsn(type.value);
+                    break;
+                }
+            }
+            mv.visitFieldInsn((isStatic() ? PUTSTATIC : PUTFIELD), className, FIELD_NAME, fieldDesc);
+        }
+    }
+}
--- a/jaxp/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/jaxp/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -317,3 +317,4 @@
 81e85f3b6174314155991048767452a9931e12e2 jdk9-b72
 be5efc34a43bdd982d1cbe11cb2f6d6a060dde60 jdk9-b73
 eadcb2b55cd1daf77625813aad0f6f3967b1528a jdk9-b74
+16b5e696f948cd8aa9b3afdb686ddffd48bd17a8 jdk9-b75
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/Repository.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/Repository.java	Mon Aug 03 16:33:06 2015 -0700
@@ -117,14 +117,6 @@
     } catch(ClassNotFoundException ex) { return null; }
   }
 
-  /** @return class file object for given Java class.
-   */
-  public static ClassPath.ClassFile lookupClassFile(String class_name) {
-    try {
-      return ClassPath.SYSTEM_CLASS_PATH.getClassFile(class_name);
-    } catch(IOException e) { return null; }
-  }
-
   /** Clear the repository.
    */
   public static void clearCache() {
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/ClassPath.java	Mon Aug 03 15:48:33 2015 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,365 +0,0 @@
-/*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
- */
-package com.sun.org.apache.bcel.internal.util;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgment may appear in the software itself,
- *    if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- *    "Apache BCEL" must not be used to endorse or promote products
- *    derived from this software without prior written permission. For
- *    written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- *    "Apache BCEL", nor may "Apache" appear in their name, without
- *    prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-import java.util.*;
-import java.util.zip.*;
-import java.io.*;
-
-/**
- * Responsible for loading (class) files from the CLASSPATH. Inspired by
- * sun.tools.ClassPath.
- *
- * @author  <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
- */
-public class ClassPath implements Serializable {
-  public static final ClassPath SYSTEM_CLASS_PATH = new ClassPath();
-
-  private PathEntry[] paths;
-  private String      class_path;
-
-  /**
-   * Search for classes in given path.
-   */
-  public ClassPath(String class_path) {
-    this.class_path = class_path;
-
-    ArrayList vec = new ArrayList();
-
-    for(StringTokenizer tok=new StringTokenizer(class_path,
-                            SecuritySupport.getSystemProperty("path.separator"));
-        tok.hasMoreTokens();)
-    {
-      String path = tok.nextToken();
-
-      if(!path.equals("")) {
-        File file = new File(path);
-
-        try {
-          if(SecuritySupport.getFileExists(file)) {
-            if(file.isDirectory())
-              vec.add(new Dir(path));
-            else
-              vec.add(new Zip(new ZipFile(file)));
-          }
-        } catch(IOException e) {
-          System.err.println("CLASSPATH component " + file + ": " + e);
-        }
-      }
-    }
-
-    paths = new PathEntry[vec.size()];
-    vec.toArray(paths);
-  }
-
-  /**
-   * Search for classes in CLASSPATH.
-   * @deprecated Use SYSTEM_CLASS_PATH constant
-   */
-  public ClassPath() {
-    // this(getClassPath());
-    this("");
-  }
-
-  /** @return used class path string
-   */
-  public String toString() {
-    return class_path;
-  }
-
-  public int hashCode() {
-    return class_path.hashCode();
-  }
-
-  public boolean equals(Object o) {
-    if(o instanceof ClassPath) {
-      return class_path.equals(((ClassPath)o).class_path);
-    }
-
-    return false;
-  }
-
-  private static final void getPathComponents(String path, ArrayList list) {
-    if(path != null) {
-      StringTokenizer tok = new StringTokenizer(path, File.pathSeparator);
-
-      while(tok.hasMoreTokens()) {
-        String name = tok.nextToken();
-        File   file = new File(name);
-
-        if(SecuritySupport.getFileExists(file)) {
-          list.add(name);
-        }
-      }
-    }
-  }
-
-  /** Checks for class path components in the following properties:
-   * "java.class.path", "sun.boot.class.path"
-   *
-   * @return class path as used by default by BCEL
-   */
-  public static final String getClassPath() {
-
-    String class_path, boot_path;
-
-    try {
-      class_path = SecuritySupport.getSystemProperty("java.class.path");
-      boot_path  = SecuritySupport.getSystemProperty("sun.boot.class.path");
-    }
-    catch (SecurityException e) {
-        return "";
-    }
-
-    ArrayList list = new ArrayList();
-
-    getPathComponents(class_path, list);
-    getPathComponents(boot_path, list);
-
-    StringBuffer buf = new StringBuffer();
-
-    for(Iterator e = list.iterator(); e.hasNext(); ) {
-      buf.append((String)e.next());
-
-      if(e.hasNext())
-        buf.append(File.pathSeparatorChar);
-    }
-
-    return buf.toString().intern();
-  }
-
-  /**
-   * @param name fully qualified class name, e.g. java.lang.String
-   * @return input stream for class
-   */
-  public InputStream getInputStream(String name) throws IOException {
-    return getInputStream(name, ".class");
-  }
-
-  /**
-   * Return stream for class or resource on CLASSPATH.
-   *
-   * @param name fully qualified file name, e.g. java/lang/String
-   * @param suffix file name ends with suff, e.g. .java
-   * @return input stream for file on class path
-   */
-  public InputStream getInputStream(String name, String suffix) throws IOException {
-    InputStream is = null;
-
-    try {
-      is = getClass().getClassLoader().getResourceAsStream(name + suffix);
-    } catch(Exception e) { }
-
-    if(is != null)
-      return is;
-
-    return getClassFile(name, suffix).getInputStream();
-  }
-
-  /**
-   * @param name fully qualified file name, e.g. java/lang/String
-   * @param suffix file name ends with suff, e.g. .java
-   * @return class file for the java class
-   */
-  public ClassFile getClassFile(String name, String suffix) throws IOException {
-    for(int i=0; i < paths.length; i++) {
-      ClassFile cf;
-
-      if((cf = paths[i].getClassFile(name, suffix)) != null)
-        return cf;
-    }
-
-    throw new IOException("Couldn't find: " + name + suffix);
-  }
-
-  /**
-   * @param name fully qualified class name, e.g. java.lang.String
-   * @return input stream for class
-   */
-  public ClassFile getClassFile(String name) throws IOException {
-    return getClassFile(name, ".class");
-  }
-
-  /**
-   * @param name fully qualified file name, e.g. java/lang/String
-   * @param suffix file name ends with suffix, e.g. .java
-   * @return byte array for file on class path
-   */
-  public byte[] getBytes(String name, String suffix) throws IOException {
-    InputStream is = getInputStream(name, suffix);
-
-    if(is == null)
-      throw new IOException("Couldn't find: " + name + suffix);
-
-    DataInputStream dis   = new DataInputStream(is);
-    byte[]          bytes = new byte[is.available()];
-    dis.readFully(bytes);
-    dis.close(); is.close();
-
-    return bytes;
-  }
-
-  /**
-   * @return byte array for class
-   */
-  public byte[] getBytes(String name) throws IOException {
-    return getBytes(name, ".class");
-  }
-
-  /**
-   * @param name name of file to search for, e.g. java/lang/String.java
-   * @return full (canonical) path for file
-   */
-  public String getPath(String name) throws IOException {
-    int    index  = name.lastIndexOf('.');
-    String suffix = "";
-
-    if(index > 0) {
-      suffix = name.substring(index);
-      name   = name.substring(0, index);
-    }
-
-    return getPath(name, suffix);
-  }
-
-  /**
-   * @param name name of file to search for, e.g. java/lang/String
-   * @param suffix file name suffix, e.g. .java
-   * @return full (canonical) path for file, if it exists
-   */
-  public String getPath(String name, String suffix) throws IOException {
-    return getClassFile(name, suffix).getPath();
-  }
-
-  private static abstract class PathEntry implements Serializable {
-    abstract ClassFile getClassFile(String name, String suffix) throws IOException;
-  }
-
-  /** Contains information about file/ZIP entry of the Java class.
-   */
-  public interface ClassFile {
-    /** @return input stream for class file.
-     */
-    public abstract InputStream getInputStream() throws IOException;
-
-    /** @return canonical path to class file.
-     */
-    public abstract String getPath();
-
-    /** @return base path of found class, i.e. class is contained relative
-     * to that path, which may either denote a directory, or zip file
-     */
-    public abstract String getBase();
-
-    /** @return modification time of class file.
-     */
-    public abstract long getTime();
-
-    /** @return size of class file.
-     */
-    public abstract long getSize();
-  }
-
-  private static class Dir extends PathEntry {
-    private String dir;
-
-    Dir(String d) { dir = d; }
-
-    ClassFile getClassFile(String name, String suffix) throws IOException {
-      final File file = new File(dir + File.separatorChar +
-                                 name.replace('.', File.separatorChar) + suffix);
-
-      return SecuritySupport.getFileExists(file)? new ClassFile() {
-        public InputStream getInputStream() throws IOException { return new FileInputStream(file); }
-
-        public String      getPath()        { try {
-          return file.getCanonicalPath();
-        } catch(IOException e) { return null; }
-
-        }
-        public long        getTime()        { return file.lastModified(); }
-        public long        getSize()        { return file.length(); }
-        public String getBase() {  return dir;  }
-
-      } : null;
-    }
-
-    public String toString() { return dir; }
-  }
-
-  private static class Zip extends PathEntry {
-    private ZipFile zip;
-
-    Zip(ZipFile z) { zip = z; }
-
-    ClassFile getClassFile(String name, String suffix) throws IOException {
-      final ZipEntry entry = zip.getEntry(name.replace('.', '/') + suffix);
-
-      return (entry != null)? new ClassFile() {
-        public InputStream getInputStream() throws IOException { return zip.getInputStream(entry); }
-        public String      getPath()        { return entry.toString(); }
-        public long        getTime()        { return entry.getTime(); }
-        public long        getSize()       { return entry.getSize(); }
-        public String getBase() {
-          return zip.getName();
-        }
-      } : null;
-    }
-  }
-}
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/SyntheticRepository.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/SyntheticRepository.java	Mon Aug 03 16:33:06 2015 -0700
@@ -60,7 +60,6 @@
 
 import java.io.*;
 
-import java.util.Map;
 import java.util.HashMap;
 
 import com.sun.org.apache.bcel.internal.classfile.*;
@@ -86,30 +85,16 @@
  * @author David Dixon-Peugh
  */
 public class SyntheticRepository implements Repository {
-  private static final String DEFAULT_PATH = ClassPath.getClassPath();
 
   private static HashMap _instances = new HashMap(); // CLASSPATH X REPOSITORY
 
-  private ClassPath _path = null;
   private HashMap   _loadedClasses = new HashMap(); // CLASSNAME X JAVACLASS
 
-  private SyntheticRepository(ClassPath path) {
-    _path = path;
-  }
+    private SyntheticRepository() {
+    }
 
   public static SyntheticRepository getInstance() {
-    return getInstance(ClassPath.SYSTEM_CLASS_PATH);
-  }
-
-  public static SyntheticRepository getInstance(ClassPath classPath) {
-    SyntheticRepository rep = (SyntheticRepository)_instances.get(classPath);
-
-    if(rep == null) {
-      rep = new SyntheticRepository(classPath);
-      _instances.put(classPath, rep);
-    }
-
-    return rep;
+      return new SyntheticRepository();
   }
 
   /**
@@ -147,12 +132,9 @@
 
     className = className.replace('/', '.'); // Just in case, canonical form
 
-    try {
-      return loadClass(_path.getInputStream(className), className);
-    } catch(IOException e) {
-      throw new ClassNotFoundException("Exception while looking for class " +
+    IOException e = new IOException("Couldn't find: " + className + ".class");
+    throw new ClassNotFoundException("Exception while looking for class " +
                                        className + ": " + e.toString());
-    }
   }
 
   /**
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java	Mon Aug 03 15:48:33 2015 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1285 +0,0 @@
-/*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
- */
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * $Id: EnvironmentCheck.java,v 1.2.4.1 2005/09/09 07:13:59 pvedula Exp $
- */
-package com.sun.org.apache.xalan.internal.xslt;
-
-import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
-import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * Utility class to report simple information about the environment.
- * Simplistic reporting about certain classes found in your JVM may
- * help answer some FAQs for simple problems.
- *
- * <p>Usage-command line:
- * <code>
- * java com.sun.org.apache.xalan.internal.xslt.EnvironmentCheck [-out outFile]
- * </code></p>
- *
- * <p>Usage-from program:
- * <code>
- * boolean environmentOK =
- * (new EnvironmentCheck()).checkEnvironment(yourPrintWriter);
- * </code></p>
- *
- * <p>Usage-from stylesheet:
- * <code><pre>
- *    &lt;?xml version="1.0"?&gt;
- *    &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- *        xmlns:xalan="http://xml.apache.org/xalan"
- *        exclude-result-prefixes="xalan"&gt;
- *    &lt;xsl:output indent="yes"/&gt;
- *    &lt;xsl:template match="/"&gt;
- *      &lt;xsl:copy-of select="xalan:checkEnvironment()"/&gt;
- *    &lt;/xsl:template&gt;
- *    &lt;/xsl:stylesheet&gt;
- * </pre></code></p>
- *
- * <p>Xalan users reporting problems are encouraged to use this class
- * to see if there are potential problems with their actual
- * Java environment <b>before</b> reporting a bug.  Note that you
- * should both check from the JVM/JRE's command line as well as
- * temporarily calling checkEnvironment() directly from your code,
- * since the classpath may differ (especially for servlets, etc).</p>
- *
- * <p>Also see http://xml.apache.org/xalan-j/faq.html</p>
- *
- * <p>Note: This class is pretty simplistic:
- * results are not necessarily definitive nor will it find all
- * problems related to environment setup.  Also, you should avoid
- * calling this in deployed production code, both because it is
- * quite slow and because it forces classes to get loaded.</p>
- *
- * <p>Note: This class explicitly has very limited compile-time
- * dependencies to enable easy compilation and usage even when
- * Xalan, DOM/SAX/JAXP, etc. are not present.</p>
- *
- * <p>Note: for an improved version of this utility, please see
- * the xml-commons' project Which utility which does the same kind
- * of thing but in a much simpler manner.</p>
- *
- * @author Shane_Curcuru@us.ibm.com
- */
-public class EnvironmentCheck
-{
-
-  /**
-   * Command line runnability: checks for [-out outFilename] arg.
-   * <p>Command line entrypoint; Sets output and calls
-   * {@link #checkEnvironment(PrintWriter)}.</p>
-   * @param args command line args
-   */
-  public static void main(String[] args)
-  {
-    // Default to System.out, autoflushing
-    PrintWriter sendOutputTo = new PrintWriter(System.out, true);
-
-    // Read our simplistic input args, if supplied
-    for (int i = 0; i < args.length; i++)
-    {
-      if ("-out".equalsIgnoreCase(args[i]))
-      {
-        i++;
-
-        if (i < args.length)
-        {
-          try
-          {
-            sendOutputTo = new PrintWriter(new FileWriter(args[i], true));
-          }
-          catch (Exception e)
-          {
-            System.err.println("# WARNING: -out " + args[i] + " threw "
-                               + e.toString());
-          }
-        }
-        else
-        {
-          System.err.println(
-            "# WARNING: -out argument should have a filename, output sent to console");
-        }
-      }
-    }
-
-    EnvironmentCheck app = new EnvironmentCheck();
-    app.checkEnvironment(sendOutputTo);
-  }
-
-  /**
-   * Programmatic entrypoint: Report on basic Java environment
-   * and CLASSPATH settings that affect Xalan.
-   *
-   * <p>Note that this class is not advanced enough to tell you
-   * everything about the environment that affects Xalan, and
-   * sometimes reports errors that will not actually affect
-   * Xalan's behavior.  Currently, it very simplistically
-   * checks the JVM's environment for some basic properties and
-   * logs them out; it will report a problem if it finds a setting
-   * or .jar file that is <i>likely</i> to cause problems.</p>
-   *
-   * <p>Advanced users can peruse the code herein to help them
-   * investigate potential environment problems found; other users
-   * may simply send the output from this tool along with any bugs
-   * they submit to help us in the debugging process.</p>
-   *
-   * @param pw PrintWriter to send output to; can be sent to a
-   * file that will look similar to a Properties file; defaults
-   * to System.out if null
-   * @return true if your environment appears to have no major
-   * problems; false if potential environment problems found
-   * @see #getEnvironmentHash()
-   */
-  public boolean checkEnvironment(PrintWriter pw)
-  {
-
-    // Use user-specified output writer if non-null
-    if (null != pw)
-      outWriter = pw;
-
-    // Setup a hash to store various environment information in
-    Hashtable hash = getEnvironmentHash();
-
-    // Check for ERROR keys in the hashtable, and print report
-    boolean environmentHasErrors = writeEnvironmentReport(hash);
-
-    if (environmentHasErrors)
-    {
-      // Note: many logMsg calls have # at the start to
-      //  fake a property-file like output
-      logMsg("# WARNING: Potential problems found in your environment!");
-      logMsg("#    Check any 'ERROR' items above against the Xalan FAQs");
-      logMsg("#    to correct potential problems with your classes/jars");
-      logMsg("#    http://xml.apache.org/xalan-j/faq.html");
-      if (null != outWriter)
-        outWriter.flush();
-      return false;
-    }
-    else
-    {
-      logMsg("# YAHOO! Your environment seems to be OK.");
-      if (null != outWriter)
-        outWriter.flush();
-      return true;
-    }
-  }
-
-  /**
-   * Fill a hash with basic environment settings that affect Xalan.
-   *
-   * <p>Worker method called from various places.</p>
-   * <p>Various system and CLASSPATH, etc. properties are put into
-   * the hash as keys with a brief description of the current state
-   * of that item as the value.  Any serious problems will be put in
-   * with a key that is prefixed with {@link #ERROR 'ERROR.'} so it
-   * stands out in any resulting report; also a key with just that
-   * constant will be set as well for any error.</p>
-   * <p>Note that some legitimate cases are flaged as potential
-   * errors - namely when a developer recompiles xalan.jar on their
-   * own - and even a non-error state doesn't guaruntee that
-   * everything in the environment is correct.  But this will help
-   * point out the most common classpath and system property
-   * problems that we've seen.</p>
-   *
-   * @return Hashtable full of useful environment info about Xalan
-   * and related system properties, etc.
-   */
-  public Hashtable getEnvironmentHash()
-  {
-    // Setup a hash to store various environment information in
-    Hashtable hash = new Hashtable();
-
-    // Call various worker methods to fill in the hash
-    //  These are explicitly separate for maintenance and so
-    //  advanced users could call them standalone
-    checkJAXPVersion(hash);
-    checkProcessorVersion(hash);
-    checkParserVersion(hash);
-    checkAntVersion(hash);
-    if (!checkDOML3(hash)) {
-    checkDOMVersion(hash);
-    }
-    checkSAXVersion(hash);
-    checkSystemProperties(hash);
-
-    return hash;
-  }
-
-  /**
-   * Dump a basic Xalan environment report to outWriter.
-   *
-   * <p>This dumps a simple header and then each of the entries in
-   * the Hashtable to our PrintWriter; it does special processing
-   * for entries that are .jars found in the classpath.</p>
-   *
-   * @param h Hashtable of items to report on; presumably
-   * filled in by our various check*() methods
-   * @return true if your environment appears to have no major
-   * problems; false if potential environment problems found
-   * @see #appendEnvironmentReport(Node, Document, Hashtable)
-   * for an equivalent that appends to a Node instead
-   */
-  protected boolean writeEnvironmentReport(Hashtable h)
-  {
-
-    if (null == h)
-    {
-      logMsg("# ERROR: writeEnvironmentReport called with null Hashtable");
-      return false;
-    }
-
-    boolean errors = false;
-
-    logMsg(
-      "#---- BEGIN writeEnvironmentReport($Revision: 1.10 $): Useful stuff found: ----");
-
-    // Fake the Properties-like output
-    for (Enumeration keys = h.keys();
-         keys.hasMoreElements();
-        /* no increment portion */
-        )
-    {
-      Object key = keys.nextElement();
-      String keyStr = (String) key;
-      try
-      {
-        // Special processing for classes found..
-        if (keyStr.startsWith(FOUNDCLASSES))
-        {
-          Vector v = (Vector) h.get(keyStr);
-          errors |= logFoundJars(v, keyStr);
-        }
-        // ..normal processing for all other entries
-        else
-        {
-          // Note: we could just check for the ERROR key by itself,
-          //    since we now set that, but since we have to go
-          //    through the whole hash anyway, do it this way,
-          //    which is safer for maintenance
-          if (keyStr.startsWith(ERROR))
-          {
-            errors = true;
-          }
-          logMsg(keyStr + "=" + h.get(keyStr));
-        }
-      }
-      catch (Exception e)
-      {
-        logMsg("Reading-" + key + "= threw: " + e.toString());
-      }
-    }
-
-    logMsg(
-      "#----- END writeEnvironmentReport: Useful properties found: -----");
-
-    return errors;
-  }
-
-  /** Prefixed to hash keys that signify serious problems.  */
-  public static final String ERROR = "ERROR.";
-
-  /** Added to descriptions that signify potential problems.  */
-  public static final String WARNING = "WARNING.";
-
-  /** Value for any error found.  */
-  public static final String ERROR_FOUND = "At least one error was found!";
-
-  /** Prefixed to hash keys that signify version numbers.  */
-  public static final String VERSION = "version.";
-
-  /** Prefixed to hash keys that signify .jars found in classpath.  */
-  public static final String FOUNDCLASSES = "foundclasses.";
-
-  /** Marker that a class or .jar was found.  */
-  public static final String CLASS_PRESENT = "present-unknown-version";
-
-  /** Marker that a class or .jar was not found.  */
-  public static final String CLASS_NOTPRESENT = "not-present";
-
-  /** Listing of common .jar files that include Xalan-related classes.  */
-  public String[] jarNames =
-  {
-    "xalan.jar", "xalansamples.jar", "xalanj1compat.jar", "xalanservlet.jar",
-    "serializer.jar",   // Serializer (shared between Xalan & Xerces)
-    "xerces.jar",       // Xerces-J 1.x
-    "xercesImpl.jar",   // Xerces-J 2.x
-    "testxsl.jar",
-    "crimson.jar",
-    "lotusxsl.jar",
-    "jaxp.jar", "parser.jar", "dom.jar", "sax.jar", "xml.jar",
-    "xml-apis.jar",
-    "xsltc.jar"
-  };
-
-  /**
-   * Print out report of .jars found in a classpath.
-   *
-   * Takes the information encoded from a checkPathForJars()
-   * call and dumps it out to our PrintWriter.
-   *
-   * @param v Vector of Hashtables of .jar file info
-   * @param desc description to print out in header
-   *
-   * @return false if OK, true if any .jars were reported
-   * as having errors
-   * @see #checkPathForJars(String, String[])
-   */
-  protected boolean logFoundJars(Vector v, String desc)
-  {
-
-    if ((null == v) || (v.size() < 1))
-      return false;
-
-    boolean errors = false;
-
-    logMsg("#---- BEGIN Listing XML-related jars in: " + desc + " ----");
-
-    for (int i = 0; i < v.size(); i++)
-    {
-      Hashtable subhash = (Hashtable) v.elementAt(i);
-
-      for (Enumeration keys = subhash.keys();
-           keys.hasMoreElements();
-           /* no increment portion */
-          )
-      {
-        Object key = keys.nextElement();
-        String keyStr = (String) key;
-        try
-        {
-          if (keyStr.startsWith(ERROR))
-          {
-            errors = true;
-          }
-          logMsg(keyStr + "=" + subhash.get(keyStr));
-
-        }
-        catch (Exception e)
-        {
-          errors = true;
-          logMsg("Reading-" + key + "= threw: " + e.toString());
-        }
-      }
-    }
-
-    logMsg("#----- END Listing XML-related jars in: " + desc + " -----");
-
-    return errors;
-  }
-
-  /**
-   * Stylesheet extension entrypoint: Dump a basic Xalan
-   * environment report from getEnvironmentHash() to a Node.
-   *
-   * <p>Copy of writeEnvironmentReport that creates a Node suitable
-   * for other processing instead of a properties-like text output.
-   * </p>
-   * @param container Node to append our report to
-   * @param factory Document providing createElement, etc. services
-   * @param h Hash presumably from {@link #getEnvironmentHash()}
-   * @see #writeEnvironmentReport(Hashtable)
-   * for an equivalent that writes to a PrintWriter instead
-   */
-  public void appendEnvironmentReport(Node container, Document factory, Hashtable h)
-  {
-    if ((null == container) || (null == factory))
-    {
-      return;
-    }
-
-    try
-    {
-      Element envCheckNode = factory.createElement("EnvironmentCheck");
-      envCheckNode.setAttribute("version", "$Revision: 1.10 $");
-      container.appendChild(envCheckNode);
-
-      if (null == h)
-      {
-        Element statusNode = factory.createElement("status");
-        statusNode.setAttribute("result", "ERROR");
-        statusNode.appendChild(factory.createTextNode("appendEnvironmentReport called with null Hashtable!"));
-        envCheckNode.appendChild(statusNode);
-        return;
-      }
-
-      boolean errors = false;
-
-      Element hashNode = factory.createElement("environment");
-      envCheckNode.appendChild(hashNode);
-
-      for (Enumeration keys = h.keys();
-           keys.hasMoreElements();
-          /* no increment portion */
-          )
-      {
-        Object key = keys.nextElement();
-        String keyStr = (String) key;
-        try
-        {
-          // Special processing for classes found..
-          if (keyStr.startsWith(FOUNDCLASSES))
-          {
-            Vector v = (Vector) h.get(keyStr);
-            // errors |= logFoundJars(v, keyStr);
-            errors |= appendFoundJars(hashNode, factory, v, keyStr);
-          }
-          // ..normal processing for all other entries
-          else
-          {
-            // Note: we could just check for the ERROR key by itself,
-            //    since we now set that, but since we have to go
-            //    through the whole hash anyway, do it this way,
-            //    which is safer for maintenance
-            if (keyStr.startsWith(ERROR))
-            {
-              errors = true;
-            }
-            Element node = factory.createElement("item");
-            node.setAttribute("key", keyStr);
-            node.appendChild(factory.createTextNode((String)h.get(keyStr)));
-            hashNode.appendChild(node);
-          }
-        }
-        catch (Exception e)
-        {
-          errors = true;
-          Element node = factory.createElement("item");
-          node.setAttribute("key", keyStr);
-          node.appendChild(factory.createTextNode(ERROR + " Reading " + key + " threw: " + e.toString()));
-          hashNode.appendChild(node);
-        }
-      } // end of for...
-
-      Element statusNode = factory.createElement("status");
-      statusNode.setAttribute("result", (errors ? "ERROR" : "OK" ));
-      envCheckNode.appendChild(statusNode);
-    }
-    catch (Exception e2)
-    {
-      System.err.println("appendEnvironmentReport threw: " + e2.toString());
-      e2.printStackTrace();
-    }
-  }
-
-  /**
-   * Print out report of .jars found in a classpath.
-   *
-   * Takes the information encoded from a checkPathForJars()
-   * call and dumps it out to our PrintWriter.
-   *
-   * @param container Node to append our report to
-   * @param factory Document providing createElement, etc. services
-   * @param v Vector of Hashtables of .jar file info
-   * @param desc description to print out in header
-   *
-   * @return false if OK, true if any .jars were reported
-   * as having errors
-   * @see #checkPathForJars(String, String[])
-   */
-  protected boolean appendFoundJars(Node container, Document factory,
-        Vector v, String desc)
-  {
-
-    if ((null == v) || (v.size() < 1))
-      return false;
-
-    boolean errors = false;
-
-    for (int i = 0; i < v.size(); i++)
-    {
-      Hashtable subhash = (Hashtable) v.elementAt(i);
-
-      for (Enumeration keys = subhash.keys();
-           keys.hasMoreElements();
-           /* no increment portion */
-          )
-      {
-        Object key = keys.nextElement();
-        try
-        {
-          String keyStr = (String) key;
-          if (keyStr.startsWith(ERROR))
-          {
-            errors = true;
-          }
-          Element node = factory.createElement("foundJar");
-          node.setAttribute("name", keyStr.substring(0, keyStr.indexOf("-")));
-          node.setAttribute("desc", keyStr.substring(keyStr.indexOf("-") + 1));
-          node.appendChild(factory.createTextNode((String)subhash.get(keyStr)));
-          container.appendChild(node);
-        }
-        catch (Exception e)
-        {
-          errors = true;
-          Element node = factory.createElement("foundJar");
-          node.appendChild(factory.createTextNode(ERROR + " Reading " + key + " threw: " + e.toString()));
-          container.appendChild(node);
-        }
-      }
-    }
-    return errors;
-  }
-
-  /**
-   * Fillin hash with info about SystemProperties.
-   *
-   * Logs java.class.path and other likely paths; then attempts
-   * to search those paths for .jar files with Xalan-related classes.
-   *
-   * @param h Hashtable to put information in
-   * @see #jarNames
-   * @see #checkPathForJars(String, String[])
-   */
-  protected void checkSystemProperties(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    // Grab java version for later use
-    try
-    {
-      String javaVersion = SecuritySupport.getSystemProperty("java.version");
-
-      h.put("java.version", javaVersion);
-    }
-    catch (SecurityException se)
-    {
-
-      // For applet context, etc.
-      h.put(
-        "java.version",
-        "WARNING: SecurityException thrown accessing system version properties");
-    }
-
-    // Printout jar files on classpath(s) that may affect operation
-    //  Do this in order
-    try
-    {
-
-      // This is present in all JVM's
-      String cp = SecuritySupport.getSystemProperty("java.class.path");
-
-      h.put("java.class.path", cp);
-
-      Vector classpathJars = checkPathForJars(cp, jarNames);
-
-      if (null != classpathJars)
-        h.put(FOUNDCLASSES + "java.class.path", classpathJars);
-
-      // Also check for JDK 1.2+ type classpaths
-      String othercp = SecuritySupport.getSystemProperty("sun.boot.class.path");
-
-      if (null != othercp)
-      {
-        h.put("sun.boot.class.path", othercp);
-
-        classpathJars = checkPathForJars(othercp, jarNames);
-
-        if (null != classpathJars)
-          h.put(FOUNDCLASSES + "sun.boot.class.path", classpathJars);
-      }
-
-      //@todo also check other System properties' paths?
-      //  v2 = checkPathForJars(System.getProperty("sun.boot.library.path"), jarNames);   // ?? may not be needed
-      //  v3 = checkPathForJars(System.getProperty("java.library.path"), jarNames);   // ?? may not be needed
-    }
-    catch (SecurityException se2)
-    {
-      // For applet context, etc.
-      h.put(
-        "java.class.path",
-        "WARNING: SecurityException thrown accessing system classpath properties");
-    }
-  }
-
-  /**
-   * Cheap-o listing of specified .jars found in the classpath.
-   *
-   * cp should be separated by the usual File.pathSeparator.  We
-   * then do a simplistic search of the path for any requested
-   * .jar filenames, and return a listing of their names and
-   * where (apparently) they came from.
-   *
-   * @param cp classpath to search
-   * @param jars array of .jar base filenames to look for
-   *
-   * @return Vector of Hashtables filled with info about found .jars
-   * @see #jarNames
-   * @see #logFoundJars(Vector, String)
-   * @see #appendFoundJars(Node, Document, Vector, String )
-   * @see #getApparentVersion(String, long)
-   */
-  protected Vector checkPathForJars(String cp, String[] jars)
-  {
-
-    if ((null == cp) || (null == jars) || (0 == cp.length())
-            || (0 == jars.length))
-      return null;
-
-    Vector v = new Vector();
-    StringTokenizer st = new StringTokenizer(cp, File.pathSeparator);
-
-    while (st.hasMoreTokens())
-    {
-
-      // Look at each classpath entry for each of our requested jarNames
-      String filename = st.nextToken();
-
-      for (int i = 0; i < jars.length; i++)
-      {
-        if (filename.indexOf(jars[i]) > -1)
-        {
-          File f = new File(filename);
-
-          if (f.exists())
-          {
-
-            // If any requested jarName exists, report on
-            //  the details of that .jar file
-            try
-            {
-              Hashtable h = new Hashtable(2);
-              // Note "-" char is looked for in appendFoundJars
-              h.put(jars[i] + "-path", f.getAbsolutePath());
-
-              // We won't bother reporting on the xalan.jar apparent version
-              // since this requires knowing the jar size of the xalan.jar
-              // before we build it.
-              // For other jars, eg. xml-apis.jar and xercesImpl.jar, we
-              // report the apparent version of the file we've found
-              if (!("xalan.jar".equalsIgnoreCase(jars[i]))) {
-                h.put(jars[i] + "-apparent.version",
-                    getApparentVersion(jars[i], f.length()));
-              }
-              v.addElement(h);
-            }
-            catch (Exception e)
-            {
-
-              /* no-op, don't add it  */
-            }
-          }
-          else
-          {
-            Hashtable h = new Hashtable(2);
-            // Note "-" char is looked for in appendFoundJars
-            h.put(jars[i] + "-path", WARNING + " Classpath entry: "
-                  + filename + " does not exist");
-            h.put(jars[i] + "-apparent.version", CLASS_NOTPRESENT);
-            v.addElement(h);
-          }
-        }
-      }
-    }
-
-    return v;
-  }
-
-  /**
-   * Cheap-o method to determine the product version of a .jar.
-   *
-   * Currently does a lookup into a local table of some recent
-   * shipped Xalan builds to determine where the .jar probably
-   * came from.  Note that if you recompile Xalan or Xerces
-   * yourself this will likely report a potential error, since
-   * we can't certify builds other than the ones we ship.
-   * Only reports against selected posted Xalan-J builds.
-   *
-   * //@todo actually look up version info in manifests
-   *
-   * @param jarName base filename of the .jarfile
-   * @param jarSize size of the .jarfile
-   *
-   * @return String describing where the .jar file probably
-   * came from
-   */
-  protected String getApparentVersion(String jarName, long jarSize)
-  {
-    // If we found a matching size and it's for our
-    //  jar, then return it's description
-    // Lookup in static jarVersions Hashtable
-    String foundSize = (String) jarVersions.get(new Long(jarSize));
-
-    if ((null != foundSize) && (foundSize.startsWith(jarName)))
-    {
-      return foundSize;
-    }
-    else
-    {
-      if ("xerces.jar".equalsIgnoreCase(jarName)
-              || "xercesImpl.jar".equalsIgnoreCase(jarName))
-//              || "xalan.jar".equalsIgnoreCase(jarName))
-      {
-
-        // For xalan.jar and xerces.jar/xercesImpl.jar, which we ship together:
-        // The jar is not from a shipped copy of xalan-j, so
-        //  it's up to the user to ensure that it's compatible
-        return jarName + " " + WARNING + CLASS_PRESENT;
-      }
-      else
-      {
-
-        // Otherwise, it's just a jar we don't have the version info calculated for
-        return jarName + " " + CLASS_PRESENT;
-      }
-    }
-  }
-
-  /**
-   * Report version information about JAXP interfaces.
-   *
-   * Currently distinguishes between JAXP 1.0.1 and JAXP 1.1,
-   * and not found; only tests the interfaces, and does not
-   * check for reference implementation versions.
-   *
-   * @param h Hashtable to put information in
-   */
-  protected void checkJAXPVersion(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    Class clazz = null;
-
-    try
-    {
-      final String JAXP1_CLASS = "javax.xml.stream.XMLStreamConstants";
-
-      clazz = ObjectFactory.findProviderClass(JAXP1_CLASS, true);
-
-      // If we succeeded, we have JAXP 1.4 available
-      h.put(VERSION + "JAXP", "1.4");
-    }
-    catch (Exception e)
-    {
-        h.put(ERROR + VERSION + "JAXP", "1.3");
-        h.put(ERROR, ERROR_FOUND);
-      }
-      }
-
-  /**
-   * Report product version information from Xalan-J.
-   *
-   * Looks for version info in xalan.jar from Xalan-J products.
-   *
-   * @param h Hashtable to put information in
-   */
-  protected void checkProcessorVersion(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    try
-    {
-      final String XALAN1_VERSION_CLASS =
-        "com.sun.org.apache.xalan.internal.xslt.XSLProcessorVersion";
-
-      Class clazz = ObjectFactory.findProviderClass(XALAN1_VERSION_CLASS, true);
-
-      // Found Xalan-J 1.x, grab it's version fields
-      StringBuffer buf = new StringBuffer();
-      Field f = clazz.getField("PRODUCT");
-
-      buf.append(f.get(null));
-      buf.append(';');
-
-      f = clazz.getField("LANGUAGE");
-
-      buf.append(f.get(null));
-      buf.append(';');
-
-      f = clazz.getField("S_VERSION");
-
-      buf.append(f.get(null));
-      buf.append(';');
-      h.put(VERSION + "xalan1", buf.toString());
-    }
-    catch (Exception e1)
-    {
-      h.put(VERSION + "xalan1", CLASS_NOTPRESENT);
-    }
-
-    try
-    {
-      // NOTE: This is the old Xalan 2.0, 2.1, 2.2 version class,
-      //    is being replaced by class below
-      final String XALAN2_VERSION_CLASS =
-        "com.sun.org.apache.xalan.internal.processor.XSLProcessorVersion";
-
-      Class clazz = ObjectFactory.findProviderClass(XALAN2_VERSION_CLASS, true);
-
-      // Found Xalan-J 2.x, grab it's version fields
-      StringBuffer buf = new StringBuffer();
-      Field f = clazz.getField("S_VERSION");
-      buf.append(f.get(null));
-
-      h.put(VERSION + "xalan2x", buf.toString());
-    }
-    catch (Exception e2)
-    {
-      h.put(VERSION + "xalan2x", CLASS_NOTPRESENT);
-    }
-    try
-    {
-      // NOTE: This is the new Xalan 2.2+ version class
-      final String XALAN2_2_VERSION_CLASS =
-        "com.sun.org.apache.xalan.internal.Version";
-      final String XALAN2_2_VERSION_METHOD = "getVersion";
-      final Class noArgs[] = new Class[0];
-
-      Class clazz = ObjectFactory.findProviderClass(XALAN2_2_VERSION_CLASS, true);
-
-      Method method = clazz.getMethod(XALAN2_2_VERSION_METHOD, noArgs);
-      Object returnValue = method.invoke(null, new Object[0]);
-
-      h.put(VERSION + "xalan2_2", (String)returnValue);
-    }
-    catch (Exception e2)
-    {
-      h.put(VERSION + "xalan2_2", CLASS_NOTPRESENT);
-    }
-  }
-
-  /**
-   * Report product version information from common parsers.
-   *
-   * Looks for version info in xerces.jar/xercesImpl.jar/crimson.jar.
-   *
-   * //@todo actually look up version info in crimson manifest
-   *
-   * @param h Hashtable to put information in
-   */
-  protected void checkParserVersion(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    try
-    {
-      final String XERCES1_VERSION_CLASS = "com.sun.org.apache.xerces.internal.framework.Version";
-
-      Class clazz = ObjectFactory.findProviderClass(XERCES1_VERSION_CLASS, true);
-
-      // Found Xerces-J 1.x, grab it's version fields
-      Field f = clazz.getField("fVersion");
-      String parserVersion = (String) f.get(null);
-
-      h.put(VERSION + "xerces1", parserVersion);
-    }
-    catch (Exception e)
-    {
-      h.put(VERSION + "xerces1", CLASS_NOTPRESENT);
-    }
-
-    // Look for xerces1 and xerces2 parsers separately
-    try
-    {
-      final String XERCES2_VERSION_CLASS = "com.sun.org.apache.xerces.internal.impl.Version";
-
-      Class clazz = ObjectFactory.findProviderClass(XERCES2_VERSION_CLASS, true);
-
-      // Found Xerces-J 2.x, grab it's version fields
-      Field f = clazz.getField("fVersion");
-      String parserVersion = (String) f.get(null);
-
-      h.put(VERSION + "xerces2", parserVersion);
-    }
-    catch (Exception e)
-    {
-      h.put(VERSION + "xerces2", CLASS_NOTPRESENT);
-    }
-
-    try
-    {
-      final String CRIMSON_CLASS = "org.apache.crimson.parser.Parser2";
-
-      Class clazz = ObjectFactory.findProviderClass(CRIMSON_CLASS, true);
-
-      //@todo determine specific crimson version
-      h.put(VERSION + "crimson", CLASS_PRESENT);
-    }
-    catch (Exception e)
-    {
-      h.put(VERSION + "crimson", CLASS_NOTPRESENT);
-    }
-  }
-
-  /**
-   * Report product version information from Ant.
-   *
-   * @param h Hashtable to put information in
-   */
-  protected void checkAntVersion(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    try
-    {
-      final String ANT_VERSION_CLASS = "org.apache.tools.ant.Main";
-      final String ANT_VERSION_METHOD = "getAntVersion"; // noArgs
-      final Class noArgs[] = new Class[0];
-
-      Class clazz = ObjectFactory.findProviderClass(ANT_VERSION_CLASS, true);
-
-      Method method = clazz.getMethod(ANT_VERSION_METHOD, noArgs);
-      Object returnValue = method.invoke(null, new Object[0]);
-
-      h.put(VERSION + "ant", (String)returnValue);
-    }
-    catch (Exception e)
-    {
-      h.put(VERSION + "ant", CLASS_NOTPRESENT);
-    }
-  }
-
-  /**
-   * Report version info from DOM interfaces.
-   *
-   * @param h Hashtable to put information in
-   */
-  protected boolean checkDOML3(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    final String DOM_CLASS = "org.w3c.dom.Document";
-    final String DOM_LEVEL3_METHOD = "getDoctype";  // no parameter
-
-    try
-    {
-      Class clazz = ObjectFactory.findProviderClass(DOM_CLASS, true);
-
-      Method method = clazz.getMethod(DOM_LEVEL3_METHOD, (Class<?>[])null);
-
-      // If we succeeded, we have loaded interfaces from a
-      //  level 3 DOM somewhere
-      h.put(VERSION + "DOM", "3.0");
-      return true;
-    }
-    catch (Exception e)
-    {
-      return false;
-    }
-  }
-
-  /**
-   * Report version info from DOM interfaces.
-   *
-   * Currently distinguishes between pre-DOM level 2, the DOM
-   * level 2 working draft, the DOM level 2 final draft,
-   * and not found.
-   *
-   * @param h Hashtable to put information in
-   */
-  protected void checkDOMVersion(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    final String DOM_LEVEL2_CLASS = "org.w3c.dom.Document";
-    final String DOM_LEVEL2_METHOD = "createElementNS";  // String, String
-    final String DOM_LEVEL3_METHOD = "getDoctype";  // no parameter
-    final String DOM_LEVEL2WD_CLASS = "org.w3c.dom.Node";
-    final String DOM_LEVEL2WD_METHOD = "supported";  // String, String
-    final String DOM_LEVEL2FD_CLASS = "org.w3c.dom.Node";
-    final String DOM_LEVEL2FD_METHOD = "isSupported";  // String, String
-    final Class twoStringArgs[] = { java.lang.String.class,
-                                    java.lang.String.class };
-
-    try
-    {
-      Class clazz = ObjectFactory.findProviderClass(DOM_LEVEL2_CLASS, true);
-
-      Method method = clazz.getMethod(DOM_LEVEL2_METHOD, twoStringArgs);
-
-      // If we succeeded, we have loaded interfaces from a
-      //  level 2 DOM somewhere
-      h.put(VERSION + "DOM", "2.0");
-
-      try
-      {
-        // Check for the working draft version, which is
-        //  commonly found, but won't work anymore
-        clazz = ObjectFactory.findProviderClass(DOM_LEVEL2WD_CLASS, true);
-
-        method = clazz.getMethod(DOM_LEVEL2WD_METHOD, twoStringArgs);
-
-        h.put(ERROR + VERSION + "DOM.draftlevel", "2.0wd");
-        h.put(ERROR, ERROR_FOUND);
-      }
-      catch (Exception e2)
-      {
-        try
-        {
-          // Check for the final draft version as well
-          clazz = ObjectFactory.findProviderClass(DOM_LEVEL2FD_CLASS, true);
-
-          method = clazz.getMethod(DOM_LEVEL2FD_METHOD, twoStringArgs);
-
-          h.put(VERSION + "DOM.draftlevel", "2.0fd");
-        }
-        catch (Exception e3)
-        {
-          h.put(ERROR + VERSION + "DOM.draftlevel", "2.0unknown");
-          h.put(ERROR, ERROR_FOUND);
-        }
-      }
-    }
-    catch (Exception e)
-    {
-      h.put(ERROR + VERSION + "DOM",
-            "ERROR attempting to load DOM level 2 class: " + e.toString());
-      h.put(ERROR, ERROR_FOUND);
-    }
-
-    //@todo load an actual DOM implmementation and query it as well
-    //@todo load an actual DOM implmementation and check if
-    //  isNamespaceAware() == true, which is needed to parse
-    //  xsl stylesheet files into a DOM
-  }
-
-  /**
-   * Report version info from SAX interfaces.
-   *
-   * Currently distinguishes between SAX 2, SAX 2.0beta2,
-   * SAX1, and not found.
-   *
-   * @param h Hashtable to put information in
-   */
-  protected void checkSAXVersion(Hashtable h)
-  {
-
-    if (null == h)
-      h = new Hashtable();
-
-    final String SAX_VERSION1_CLASS = "org.xml.sax.Parser";
-    final String SAX_VERSION1_METHOD = "parse";  // String
-    final String SAX_VERSION2_CLASS = "org.xml.sax.XMLReader";
-    final String SAX_VERSION2_METHOD = "parse";  // String
-    final String SAX_VERSION2BETA_CLASSNF = "org.xml.sax.helpers.AttributesImpl";
-    final String SAX_VERSION2BETA_METHODNF = "setAttributes";  // Attributes
-    final Class oneStringArg[] = { java.lang.String.class };
-    // Note this introduces a minor compile dependency on SAX...
-    final Class attributesArg[] = { org.xml.sax.Attributes.class };
-
-    try
-    {
-      // This method was only added in the final SAX 2.0 release;
-      //  see changes.html "Changes from SAX 2.0beta2 to SAX 2.0prerelease"
-      Class clazz = ObjectFactory.findProviderClass(SAX_VERSION2BETA_CLASSNF, true);
-
-      Method method = clazz.getMethod(SAX_VERSION2BETA_METHODNF, attributesArg);
-
-      // If we succeeded, we have loaded interfaces from a
-      //  real, final SAX version 2.0 somewhere
-      h.put(VERSION + "SAX", "2.0");
-    }
-    catch (Exception e)
-    {
-      // If we didn't find the SAX 2.0 class, look for a 2.0beta2
-      h.put(ERROR + VERSION + "SAX",
-            "ERROR attempting to load SAX version 2 class: " + e.toString());
-      h.put(ERROR, ERROR_FOUND);
-
-      try
-      {
-        Class clazz = ObjectFactory.findProviderClass(SAX_VERSION2_CLASS, true);
-
-        Method method = clazz.getMethod(SAX_VERSION2_METHOD, oneStringArg);
-
-        // If we succeeded, we have loaded interfaces from a
-        //  SAX version 2.0beta2 or earlier; these might work but
-        //  you should really have the final SAX 2.0
-        h.put(VERSION + "SAX-backlevel", "2.0beta2-or-earlier");
-      }
-      catch (Exception e2)
-      {
-        // If we didn't find the SAX 2.0beta2 class, look for a 1.0 one
-        h.put(ERROR + VERSION + "SAX",
-              "ERROR attempting to load SAX version 2 class: " + e.toString());
-        h.put(ERROR, ERROR_FOUND);
-
-        try
-        {
-          Class clazz = ObjectFactory.findProviderClass(SAX_VERSION1_CLASS, true);
-
-          Method method = clazz.getMethod(SAX_VERSION1_METHOD, oneStringArg);
-
-          // If we succeeded, we have loaded interfaces from a
-          //  SAX version 1.0 somewhere; which won't work very
-          //  well for JAXP 1.1 or beyond!
-          h.put(VERSION + "SAX-backlevel", "1.0");
-        }
-        catch (Exception e3)
-        {
-          // If we didn't find the SAX 2.0 class, look for a 1.0 one
-          // Note that either 1.0 or no SAX are both errors
-          h.put(ERROR + VERSION + "SAX-backlevel",
-                "ERROR attempting to load SAX version 1 class: " + e3.toString());
-
-        }
-      }
-    }
-  }
-
-  /**
-   * Manual table of known .jar sizes.
-   * Only includes shipped versions of certain projects.
-   * key=jarsize, value=jarname ' from ' distro name
-   * Note assumption: two jars cannot have the same size!
-   *
-   * @see #getApparentVersion(String, long)
-   */
-  private static Hashtable jarVersions = new Hashtable();
-
-  /**
-   * Static initializer for jarVersions table.
-   * Doing this just once saves time and space.
-   *
-   * @see #getApparentVersion(String, long)
-   */
-  static
-  {
-    // Note: hackish Hashtable, this could use improvement
-    jarVersions.put(new Long(857192), "xalan.jar from xalan-j_1_1");
-    jarVersions.put(new Long(440237), "xalan.jar from xalan-j_1_2");
-    jarVersions.put(new Long(436094), "xalan.jar from xalan-j_1_2_1");
-    jarVersions.put(new Long(426249), "xalan.jar from xalan-j_1_2_2");
-    jarVersions.put(new Long(702536), "xalan.jar from xalan-j_2_0_0");
-    jarVersions.put(new Long(720930), "xalan.jar from xalan-j_2_0_1");
-    jarVersions.put(new Long(732330), "xalan.jar from xalan-j_2_1_0");
-    jarVersions.put(new Long(872241), "xalan.jar from xalan-j_2_2_D10");
-    jarVersions.put(new Long(882739), "xalan.jar from xalan-j_2_2_D11");
-    jarVersions.put(new Long(923866), "xalan.jar from xalan-j_2_2_0");
-    jarVersions.put(new Long(905872), "xalan.jar from xalan-j_2_3_D1");
-    jarVersions.put(new Long(906122), "xalan.jar from xalan-j_2_3_0");
-    jarVersions.put(new Long(906248), "xalan.jar from xalan-j_2_3_1");
-    jarVersions.put(new Long(983377), "xalan.jar from xalan-j_2_4_D1");
-    jarVersions.put(new Long(997276), "xalan.jar from xalan-j_2_4_0");
-    jarVersions.put(new Long(1031036), "xalan.jar from xalan-j_2_4_1");
-    // Stop recording xalan.jar sizes as of Xalan Java 2.5.0
-
-    jarVersions.put(new Long(596540), "xsltc.jar from xalan-j_2_2_0");
-    jarVersions.put(new Long(590247), "xsltc.jar from xalan-j_2_3_D1");
-    jarVersions.put(new Long(589914), "xsltc.jar from xalan-j_2_3_0");
-    jarVersions.put(new Long(589915), "xsltc.jar from xalan-j_2_3_1");
-    jarVersions.put(new Long(1306667), "xsltc.jar from xalan-j_2_4_D1");
-    jarVersions.put(new Long(1328227), "xsltc.jar from xalan-j_2_4_0");
-    jarVersions.put(new Long(1344009), "xsltc.jar from xalan-j_2_4_1");
-    jarVersions.put(new Long(1348361), "xsltc.jar from xalan-j_2_5_D1");
-    // Stop recording xsltc.jar sizes as of Xalan Java 2.5.0
-
-    jarVersions.put(new Long(1268634), "xsltc.jar-bundled from xalan-j_2_3_0");
-
-    jarVersions.put(new Long(100196), "xml-apis.jar from xalan-j_2_2_0 or xalan-j_2_3_D1");
-    jarVersions.put(new Long(108484), "xml-apis.jar from xalan-j_2_3_0, or xalan-j_2_3_1 from xml-commons-1.0.b2");
-    jarVersions.put(new Long(109049), "xml-apis.jar from xalan-j_2_4_0 from xml-commons RIVERCOURT1 branch");
-    jarVersions.put(new Long(113749), "xml-apis.jar from xalan-j_2_4_1 from factoryfinder-build of xml-commons RIVERCOURT1");
-    jarVersions.put(new Long(124704), "xml-apis.jar from tck-jaxp-1_2_0 branch of xml-commons");
-    jarVersions.put(new Long(124724), "xml-apis.jar from tck-jaxp-1_2_0 branch of xml-commons, tag: xml-commons-external_1_2_01");
-    jarVersions.put(new Long(194205), "xml-apis.jar from head branch of xml-commons, tag: xml-commons-external_1_3_02");
-
-    // If the below were more common I would update it to report
-    //  errors better; but this is so old hardly anyone has it
-    jarVersions.put(new Long(424490), "xalan.jar from Xerces Tools releases - ERROR:DO NOT USE!");
-
-    jarVersions.put(new Long(1591855), "xerces.jar from xalan-j_1_1 from xerces-1...");
-    jarVersions.put(new Long(1498679), "xerces.jar from xalan-j_1_2 from xerces-1_2_0.bin");
-    jarVersions.put(new Long(1484896), "xerces.jar from xalan-j_1_2_1 from xerces-1_2_1.bin");
-    jarVersions.put(new Long(804460),  "xerces.jar from xalan-j_1_2_2 from xerces-1_2_2.bin");
-    jarVersions.put(new Long(1499244), "xerces.jar from xalan-j_2_0_0 from xerces-1_2_3.bin");
-    jarVersions.put(new Long(1605266), "xerces.jar from xalan-j_2_0_1 from xerces-1_3_0.bin");
-    jarVersions.put(new Long(904030), "xerces.jar from xalan-j_2_1_0 from xerces-1_4.bin");
-    jarVersions.put(new Long(904030), "xerces.jar from xerces-1_4_0.bin");
-    jarVersions.put(new Long(1802885), "xerces.jar from xerces-1_4_2.bin");
-    jarVersions.put(new Long(1734594), "xerces.jar from Xerces-J-bin.2.0.0.beta3");
-    jarVersions.put(new Long(1808883), "xerces.jar from xalan-j_2_2_D10,D11,D12 or xerces-1_4_3.bin");
-    jarVersions.put(new Long(1812019), "xerces.jar from xalan-j_2_2_0");
-    jarVersions.put(new Long(1720292), "xercesImpl.jar from xalan-j_2_3_D1");
-    jarVersions.put(new Long(1730053), "xercesImpl.jar from xalan-j_2_3_0 or xalan-j_2_3_1 from xerces-2_0_0");
-    jarVersions.put(new Long(1728861), "xercesImpl.jar from xalan-j_2_4_D1 from xerces-2_0_1");
-    jarVersions.put(new Long(972027), "xercesImpl.jar from xalan-j_2_4_0 from xerces-2_1");
-    jarVersions.put(new Long(831587), "xercesImpl.jar from xalan-j_2_4_1 from xerces-2_2");
-    jarVersions.put(new Long(891817), "xercesImpl.jar from xalan-j_2_5_D1 from xerces-2_3");
-    jarVersions.put(new Long(895924), "xercesImpl.jar from xerces-2_4");
-    jarVersions.put(new Long(1010806), "xercesImpl.jar from Xerces-J-bin.2.6.2");
-    jarVersions.put(new Long(1203860), "xercesImpl.jar from Xerces-J-bin.2.7.1");
-
-    jarVersions.put(new Long(37485), "xalanj1compat.jar from xalan-j_2_0_0");
-    jarVersions.put(new Long(38100), "xalanj1compat.jar from xalan-j_2_0_1");
-
-    jarVersions.put(new Long(18779), "xalanservlet.jar from xalan-j_2_0_0");
-    jarVersions.put(new Long(21453), "xalanservlet.jar from xalan-j_2_0_1");
-    jarVersions.put(new Long(24826), "xalanservlet.jar from xalan-j_2_3_1 or xalan-j_2_4_1");
-    jarVersions.put(new Long(24831), "xalanservlet.jar from xalan-j_2_4_1");
-    // Stop recording xalanservlet.jar sizes as of Xalan Java 2.5.0; now a .war file
-
-    // For those who've downloaded JAXP from sun
-    jarVersions.put(new Long(5618), "jaxp.jar from jaxp1.0.1");
-    jarVersions.put(new Long(136133), "parser.jar from jaxp1.0.1");
-    jarVersions.put(new Long(28404), "jaxp.jar from jaxp-1.1");
-    jarVersions.put(new Long(187162), "crimson.jar from jaxp-1.1");
-    jarVersions.put(new Long(801714), "xalan.jar from jaxp-1.1");
-    jarVersions.put(new Long(196399), "crimson.jar from crimson-1.1.1");
-    jarVersions.put(new Long(33323), "jaxp.jar from crimson-1.1.1 or jakarta-ant-1.4.1b1");
-    jarVersions.put(new Long(152717), "crimson.jar from crimson-1.1.2beta2");
-    jarVersions.put(new Long(88143), "xml-apis.jar from crimson-1.1.2beta2");
-    jarVersions.put(new Long(206384), "crimson.jar from crimson-1.1.3 or jakarta-ant-1.4.1b1");
-
-    // jakarta-ant: since many people use ant these days
-    jarVersions.put(new Long(136198), "parser.jar from jakarta-ant-1.3 or 1.2");
-    jarVersions.put(new Long(5537), "jaxp.jar from jakarta-ant-1.3 or 1.2");
-  }
-
-  /** Simple PrintWriter we send output to; defaults to System.out.  */
-  protected PrintWriter outWriter = new PrintWriter(System.out, true);
-
-  /**
-   * Bottleneck output: calls outWriter.println(s).
-   * @param s String to print
-   */
-  protected void logMsg(String s)
-  {
-    outWriter.println(s);
-  }
-}
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/Hashtree2Node.java	Mon Aug 03 15:48:33 2015 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
- */
-/*
- * Copyright 2002-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * $Id: Hashtree2Node.java,v 1.2.4.1 2005/09/15 08:15:45 suresh_emailid Exp $
- */
-
-package com.sun.org.apache.xml.internal.utils;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * Simple static utility to convert Hashtable to a Node.
- *
- * Please maintain JDK 1.1.x compatibility; no Collections!
- *
- * @see com.sun.org.apache.xalan.internal.xslt.EnvironmentCheck
- * @see com.sun.org.apache.xalan.internal.lib.Extensions
- * @author shane_curcuru@us.ibm.com
- * @xsl.usage general
- */
-public abstract class Hashtree2Node
-{
-
-    /**
-     * Convert a Hashtable into a Node tree.
-     *
-     * <p>The hash may have either Hashtables as values (in which
-     * case we recurse) or other values, in which case we print them
-     * as &lt;item> elements, with a 'key' attribute with the value
-     * of the key, and the element contents as the value.</p>
-     *
-     * <p>If args are null we simply return without doing anything.
-     * If we encounter an error, we will attempt to add an 'ERROR'
-     * Element with exception info; if that doesn't work we simply
-     * return without doing anything else byt printStackTrace().</p>
-     *
-     * @param hash to get info from (may have sub-hashtables)
-     * @param name to use as parent element for appended node
-     * futurework could have namespace and prefix as well
-     * @param container Node to append our report to
-     * @param factory Document providing createElement, etc. services
-     */
-    public static void appendHashToNode(Hashtable hash, String name,
-            Node container, Document factory)
-    {
-        // Required arguments must not be null
-        if ((null == container) || (null == factory) || (null == hash))
-        {
-            return;
-        }
-
-        // name we will provide a default value for
-        String elemName = null;
-        if ((null == name) || ("".equals(name)))
-            elemName = "appendHashToNode";
-        else
-            elemName = name;
-
-        try
-        {
-            Element hashNode = factory.createElement(elemName);
-            container.appendChild(hashNode);
-
-            Enumeration keys = hash.keys();
-            Vector v = new Vector();
-
-            while (keys.hasMoreElements())
-            {
-                Object key = keys.nextElement();
-                String keyStr = key.toString();
-                Object item = hash.get(key);
-
-                if (item instanceof Hashtable)
-                {
-                    // Ensure a pre-order traversal; add this hashes
-                    //  items before recursing to child hashes
-                    // Save name and hash in two steps
-                    v.addElement(keyStr);
-                    v.addElement((Hashtable) item);
-                }
-                else
-                {
-                    try
-                    {
-                        // Add item to node
-                        Element node = factory.createElement("item");
-                        node.setAttribute("key", keyStr);
-                        node.appendChild(factory.createTextNode((String)item));
-                        hashNode.appendChild(node);
-                    }
-                    catch (Exception e)
-                    {
-                        Element node = factory.createElement("item");
-                        node.setAttribute("key", keyStr);
-                        node.appendChild(factory.createTextNode("ERROR: Reading " + key + " threw: " + e.toString()));
-                        hashNode.appendChild(node);
-                    }
-                }
-            }
-
-            // Now go back and do the saved hashes
-            keys = v.elements();
-            while (keys.hasMoreElements())
-            {
-                // Retrieve name and hash in two steps
-                String n = (String) keys.nextElement();
-                Hashtable h = (Hashtable) keys.nextElement();
-
-                appendHashToNode(h, n, hashNode, factory);
-            }
-        }
-        catch (Exception e2)
-        {
-            // Ooops, just bail (suggestions for a safe thing
-            //  to do in this case appreciated)
-            e2.printStackTrace();
-        }
-    }
-}
--- a/jaxp/test/javax/xml/jaxp/internaltest/javax/xml/common/bug6979306/Bug6979306Test.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jaxp/test/javax/xml/jaxp/internaltest/javax/xml/common/bug6979306/Bug6979306Test.java	Mon Aug 03 16:33:06 2015 -0700
@@ -25,21 +25,17 @@
  * @test
  * @modules java.xml/com.sun.org.apache.xerces.internal.impl
  *          java.xml/com.sun.org.apache.xalan.internal
- *          java.xml/com.sun.org.apache.xalan.internal.xslt
  * @bug 6979306
  * @summary Test JAXP component version.
  */
 
 import org.testng.annotations.Test;
 
-import com.sun.org.apache.xalan.internal.xslt.EnvironmentCheck;
-
 public class Bug6979306Test {
 
     @Test
     public void test() {
         String[] input = {};
-        EnvironmentCheck.main(input);
         com.sun.org.apache.xerces.internal.impl.Version.main(input);
         com.sun.org.apache.xalan.internal.Version._main(input);
     }
--- a/jaxws/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/jaxws/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -320,3 +320,4 @@
 1d87054e2d2f405c114f0061b97cbf8214bddf0a jdk9-b72
 285939df908721cdb2b18a119638114306b8dca7 jdk9-b73
 6232472e51418757f7b2bf05332678ea78096e6b jdk9-b74
+086bcd5e4a531a350c84668c8dc019461588ee3d jdk9-b75
--- a/jdk/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -317,3 +317,4 @@
 f376824d4940f45719d91838f3f6249f873440db jdk9-b72
 1c8bca2ebba13948199de33a1b71e2d6f1c7a8a6 jdk9-b73
 6dd82d2e4a104f4d204b2890f33ef11ec3e3f8d0 jdk9-b74
+4dd09cb5f7c2a2a23a9958ea7a602dd74d5709b2 jdk9-b75
--- a/jdk/make/data/charsetmapping/charsets	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/make/data/charsetmapping/charsets	Mon Aug 03 16:33:06 2015 -0700
@@ -547,7 +547,7 @@
 
 charset GB18030 GB18030
     package sun.nio.cs.ext
-    type    source
+    type    template
     alias   gb18030-2000
 
 charset GB2312 EUC_CN
--- a/jdk/make/data/charsetmapping/stdcs-linux	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/make/data/charsetmapping/stdcs-linux	Mon Aug 03 16:33:06 2015 -0700
@@ -9,9 +9,16 @@
 EUC_JP
 EUC_JP_LINUX
 EUC_JP_Open
+EUC_TW
 GBK
+GB18030
+ISO_8859_11
+ISO_8859_3
+ISO_8859_6
+ISO_8859_8
 Johab
 PCK
+TIS_620
 JIS_X_0201
 JIS_X_0208
 JIS_X_0212
--- a/jdk/make/data/charsetmapping/stdcs-solaris	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/make/data/charsetmapping/stdcs-solaris	Mon Aug 03 16:33:06 2015 -0700
@@ -11,12 +11,14 @@
 EUC_JP_Open
 EUC_TW
 GBK
+GB18030
 ISO_8859_11
 ISO_8859_3
 ISO_8859_6
 ISO_8859_8
 Johab
 PCK
+TIS_620
 JIS_X_0201
 JIS_X_0208
 JIS_X_0212
--- a/jdk/make/data/currency/CurrencyData.properties	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/make/data/currency/CurrencyData.properties	Mon Aug 03 16:33:06 2015 -0700
@@ -31,7 +31,7 @@
 # Version of the currency code information in this class.
 # It is a serial number that accompanies with each amendment.
 
-dataVersion=159
+dataVersion=160
 
 # List of all valid ISO 4217 currency codes.
 # To ensure compatibility, do not remove codes.
@@ -109,7 +109,7 @@
 AT=EUR
 # AZERBAIJAN
 AZ=AZN
-# BAHAMAS
+# BAHAMAS (THE)
 BS=BSD
 # BAHRAIN
 BH=BHD
@@ -131,7 +131,7 @@
 BQ=USD
 # BHUTAN
 BT=BTN
-# BOLIVIA
+# BOLIVIA (PLURINATIONAL STATE OF)
 BO=BOB
 # BOSNIA AND HERZEGOVINA
 BA=BAM
@@ -141,7 +141,7 @@
 BV=NOK
 # BRAZIL
 BR=BRL
-# BRITISH INDIAN OCEAN TERRITORY
+# BRITISH INDIAN OCEAN TERRITORY (THE)
 IO=USD
 # BRUNEI DARUSSALAM
 BN=BND
@@ -159,9 +159,9 @@
 CA=CAD
 # CAPE VERDE
 CV=CVE
-# CAYMAN ISLANDS
+# CAYMAN ISLANDS (THE)
 KY=KYD
-# CENTRAL AFRICAN REPUBLIC
+# CENTRAL AFRICAN REPUBLIC (THE)
 CF=XAF
 # CHAD
 TD=XAF
@@ -171,17 +171,17 @@
 CN=CNY
 # CHRISTMAS ISLAND
 CX=AUD
-# COCOS (KEELING) ISLANDS
+# COCOS (KEELING) ISLANDS (THE)
 CC=AUD
 # COLOMBIA
 CO=COP
-# COMOROS
+# COMOROS (THE)
 KM=KMF
-# CONGO
+# CONGO (THE)
 CG=XAF
-# CONGO, THE DEMOCRATIC REPUBLIC OF THE
+# CONGO (THE DEMOCRATIC REPUBLIC OF THE)
 CD=CDF
-# COOK ISLANDS
+# COOK ISLANDS (THE)
 CK=NZD
 # COSTA RICA
 CR=CRC
@@ -195,7 +195,7 @@
 CW=ANG
 # CYPRUS
 CY=EUR
-# CZECH REPUBLIC
+# CZECH REPUBLIC (THE)
 CZ=CZK
 # DENMARK
 DK=DKK
@@ -203,7 +203,7 @@
 DJ=DJF
 # DOMINICA
 DM=XCD
-# DOMINICAN REPUBLIC
+# DOMINICAN REPUBLIC (THE)
 DO=DOP
 # ECUADOR
 EC=USD
@@ -220,9 +220,9 @@
 EE=EUR
 # ETHIOPIA
 ET=ETB
-# FALKLAND ISLANDS (MALVINAS)
+# FALKLAND ISLANDS (THE) [MALVINAS]
 FK=FKP
-# FAROE ISLANDS
+# FAROE ISLANDS (THE)
 FO=DKK
 # FIJI
 FJ=FJD
@@ -234,11 +234,11 @@
 GF=EUR
 # FRENCH POLYNESIA
 PF=XPF
-# FRENCH SOUTHERN TERRITORIES
+# FRENCH SOUTHERN TERRITORIES (THE)
 TF=EUR
 # GABON
 GA=XAF
-# GAMBIA
+# GAMBIA (THE)
 GM=GMD
 # GEORGIA
 GE=GEL
@@ -272,7 +272,7 @@
 HT=HTG
 # HEARD ISLAND AND MCDONALD ISLANDS
 HM=AUD
-# HOLY SEE (VATICAN CITY STATE)
+# HOLY SEE (THE)
 VA=EUR
 # HONDURAS
 HN=HNL
@@ -286,7 +286,7 @@
 IN=INR
 # INDONESIA
 ID=IDR
-# IRAN, ISLAMIC REPUBLIC OF
+# IRAN (ISLAMIC REPUBLIC OF)
 IR=IRR
 # IRAQ
 IQ=IQD
@@ -312,15 +312,15 @@
 KE=KES
 # KIRIBATI
 KI=AUD
-# KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF
+# KOREA (THE DEMOCRATIC PEOPLE'S REPUBLIC OF)
 KP=KPW
-# KOREA, REPUBLIC OF
+# KOREA (THE REPUBLIC OF)
 KR=KRW
 # KUWAIT
 KW=KWD
 # KYRGYZSTAN
 KG=KGS
-# LAO PEOPLE'S DEMOCRATIC REPUBLIC
+# LAO PEOPLE'S DEMOCRATIC REPUBLIC (THE)
 LA=LAK
 # LATVIA
 LV=LVL;2013-12-31-22-00-00;EUR
@@ -340,7 +340,7 @@
 LU=EUR
 # MACAU
 MO=MOP
-# MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF
+# MACEDONIA (THE FORMER YUGOSLAV REPUBLIC OF)
 MK=MKD
 # MADAGASCAR
 MG=MGA
@@ -354,7 +354,7 @@
 ML=XOF
 # MALTA
 MT=EUR
-# MARSHALL ISLANDS
+# MARSHALL ISLANDS (THE)
 MH=USD
 # MARTINIQUE
 MQ=EUR
@@ -366,9 +366,9 @@
 YT=EUR
 # MEXICO
 MX=MXN
-# MICRONESIA, FEDERATED STATES OF
+# MICRONESIA (FEDERATED STATES OF)
 FM=USD
-# MOLDOVA, REPUBLIC OF
+# MOLDOVA (THE REPUBLIC OF)
 MD=MDL
 # MONACO
 MC=EUR
@@ -390,7 +390,7 @@
 NR=AUD
 # NEPAL
 NP=NPR
-# NETHERLANDS
+# NETHERLANDS (THE)
 NL=EUR
 # NETHERLANDS ANTILLES
 AN=ANG
@@ -400,7 +400,7 @@
 NZ=NZD
 # NICARAGUA
 NI=NIO
-# NIGER
+# NIGER (THE)
 NE=XOF
 # NIGERIA
 NG=NGN
@@ -408,7 +408,7 @@
 NU=NZD
 # NORFOLK ISLAND
 NF=AUD
-# NORTHERN MARIANA ISLANDS
+# NORTHERN MARIANA ISLANDS (THE)
 MP=USD
 # NORWAY
 NO=NOK
@@ -428,7 +428,7 @@
 PY=PYG
 # PERU
 PE=PEN
-# PHILIPPINES
+# PHILIPPINES (THE)
 PH=PHP
 # PITCAIRN
 PN=NZD
@@ -444,7 +444,7 @@
 RE=EUR
 # ROMANIA
 RO=RON
-# RUSSIAN FEDERATION
+# RUSSIAN FEDERATION (THE)
 RU=RUB
 # RWANDA
 RW=RWF
@@ -500,7 +500,7 @@
 ES=EUR
 # SRI LANKA
 LK=LKR
-# SUDAN
+# SUDAN (THE)
 SD=SDG
 # SURINAME
 SR=SRD
@@ -516,7 +516,7 @@
 CH=CHF
 # SYRIAN ARAB REPUBLIC
 SY=SYP
-# TAIWAN
+# TAIWAN (PROVINCE OF CHINA)
 TW=TWD
 # TAJIKISTAN
 TJ=TJS
@@ -540,7 +540,7 @@
 TR=TRY
 # TURKMENISTAN
 TM=TMT
-# TURKS AND CAICOS ISLANDS
+# TURKS AND CAICOS ISLANDS (THE)
 TC=USD
 # TUVALU
 TV=AUD
@@ -548,13 +548,13 @@
 UG=UGX
 # UKRAINE
 UA=UAH
-# UNITED ARAB EMIRATES
+# UNITED ARAB EMIRATES (THE)
 AE=AED
-# UNITED KINGDOM
+# UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)
 GB=GBP
-# UNITED STATES
+# UNITED STATES OF AMERICA (THE)
 US=USD
-# UNITED STATES MINOR OUTLYING ISLANDS
+# UNITED STATES MINOR OUTLYING ISLANDS (THE)
 UM=USD
 # URUGUAY
 UY=UYU
@@ -562,7 +562,7 @@
 UZ=UZS
 # VANUATU
 VU=VUV
-# VENEZUELA
+# VENEZUELA (BOLIVARIAN REPUBLIC OF)
 VE=VEF
 # VIET NAM
 VN=VND
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/BlowfishCipher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/BlowfishCipher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -82,7 +82,7 @@
     /**
      * Sets the padding mechanism of this cipher.
      *
-     * @param padding the padding mechanism
+     * @param paddingScheme the padding mechanism
      *
      * @exception NoSuchPaddingException if the requested padding mechanism
      * does not exist
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/DESCipher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/DESCipher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -77,7 +77,7 @@
     /**
      * Sets the padding mechanism of this cipher.
      *
-     * @param padding the padding mechanism
+     * @param paddingScheme the padding mechanism
      *
      * @exception NoSuchPaddingException if the requested padding mechanism
      * does not exist
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/DESedeCipher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/DESedeCipher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -74,7 +74,7 @@
     /**
      * Sets the padding mechanism of this cipher.
      *
-     * @param padding the padding mechanism
+     * @param paddingScheme the padding mechanism
      *
      * @exception NoSuchPaddingException if the requested padding mechanism
      * does not exist
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/DESedeWrapCipher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/DESedeWrapCipher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -32,7 +32,7 @@
 
 /**
  * This class implements the CMS DESede KeyWrap algorithm as defined
- * in <a href=http://www.w3.org/TR/xmlenc-core/#sec-Alg-SymmetricKeyWrap>
+ * in <a href=http://www.w3.org/TR/xmlenc-core/#sec-Alg-SymmetricKeyWrap></a>
  * "XML Encryption Syntax and Processing" section 5.6.2
  * "CMS Triple DES Key Wrap".
  * Note: only <code>CBC</code> mode and <code>NoPadding</code> padding
@@ -159,9 +159,8 @@
     /**
      * Initializes this cipher with a key and a source of randomness.
      *
-     * <p>The cipher only supports the following two operation modes:<b>
-     * Cipher.WRAP_MODE, and <b>
-     * Cipher.UNWRAP_MODE.
+     * <p>The cipher only supports the following two operation modes:
+     * {@code Cipher.WRAP_MODE}, and {@code Cipher.UNWRAP_MODE}.
      * <p>For modes other than the above two, UnsupportedOperationException
      * will be thrown.
      * <p>If this cipher requires an initialization vector (IV), it will get
@@ -192,9 +191,8 @@
      * Initializes this cipher with a key, a set of algorithm parameters,
      * and a source of randomness.
      *
-     * <p>The cipher only supports the following two operation modes:<b>
-     * Cipher.WRAP_MODE, and <b>
-     * Cipher.UNWRAP_MODE.
+     * <p>The cipher only supports the following two operation modes:
+     * {@code Cipher.WRAP_MODE}, and {@code Cipher.UNWRAP_MODE}.
      * <p>For modes other than the above two, UnsupportedOperationException
      * will be thrown.
      * <p>If this cipher requires an initialization vector (IV), it will get
@@ -252,9 +250,8 @@
      * Initializes this cipher with a key, a set of algorithm parameters,
      * and a source of randomness.
      *
-     * <p>The cipher only supports the following two operation modes:<b>
-     * Cipher.WRAP_MODE, and <b>
-     * Cipher.UNWRAP_MODE.
+     * <p>The cipher only supports the following two operation modes:
+     * {@code Cipher.WRAP_MODE}, and {@code Cipher.UNWRAP_MODE}.
      * <p>For modes other than the above two, UnsupportedOperationException
      * will be thrown.
      * <p>If this cipher requires an initialization vector (IV), it will get
@@ -360,15 +357,15 @@
      * current Cipher.engineInit(...) implementation,
      * IllegalStateException will always be thrown upon invocation.
      *
-     * @param in the input buffer.
-     * @param inOffset the offset in <code>in</code> where the input
+     * @param input the input buffer.
+     * @param inputOffset the offset in {@code input} where the input
      * starts.
-     * @param inLen the input length.
-     * @param out the buffer for the result.
-     * @param outOffset the ofset in <code>out</code> where the result
+     * @param inputLen the input length.
+     * @param output the buffer for the result.
+     * @param outputOffset the ofset in {@code output} where the result
      * is stored.
      *
-     * @return the number of bytes stored in <code>out</code>.
+     * @return the number of bytes stored in {@code out}.
      *
      * @exception IllegalStateException upon invocation of this method.
      */
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java	Mon Aug 03 16:33:06 2015 -0700
@@ -100,7 +100,7 @@
      * generator, and optionally the requested size in bits of the random
      * exponent (private value).
      *
-     * @param params the parameter set used to generate the key pair
+     * @param algParams the parameter set used to generate the key pair
      * @param random the source of randomness
      *
      * @exception InvalidAlgorithmParameterException if the given parameters
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/DHParameterGenerator.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/DHParameterGenerator.java	Mon Aug 03 16:33:06 2015 -0700
@@ -92,7 +92,7 @@
      * generation values, which specify the size of the prime modulus and
      * the size of the random exponent, both in bits.
      *
-     * @param params the set of parameter generation values
+     * @param genParamSpec the set of parameter generation values
      * @param random the source of randomness
      *
      * @exception InvalidAlgorithmParameterException if the given parameter
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndDESCipher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndDESCipher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -80,7 +80,7 @@
      * Sets the padding mechanism of this cipher. This algorithm only uses
      * PKCS #5 padding.
      *
-     * @param padding the padding mechanism
+     * @param paddingScheme the padding mechanism
      *
      * @exception NoSuchPaddingException if the requested padding mechanism
      * is invalid
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -92,7 +92,7 @@
      * Sets the padding mechanism of this cipher. This algorithm only uses
      * PKCS #5 padding.
      *
-     * @param padding the padding mechanism
+     * @param paddingScheme the padding mechanism
      *
      * @exception NoSuchPaddingException if the requested padding mechanism
      * is invalid
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBKDF2HmacSHA1Factory.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBKDF2HmacSHA1Factory.java	Mon Aug 03 16:33:06 2015 -0700
@@ -75,7 +75,7 @@
      *
      * @param key the key
      *
-     * @param keySpec the requested format in which the key material shall be
+     * @param keySpecCl the requested format in which the key material shall be
      * returned
      *
      * @return the underlying key specification (key material) in the
--- a/jdk/src/java.base/share/classes/java/lang/Object.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/lang/Object.java	Mon Aug 03 16:33:06 2015 -0700
@@ -278,6 +278,7 @@
      * @see        java.lang.Object#notifyAll()
      * @see        java.lang.Object#wait()
      */
+    @HotSpotIntrinsicCandidate
     public final native void notify();
 
     /**
@@ -302,6 +303,7 @@
      * @see        java.lang.Object#notify()
      * @see        java.lang.Object#wait()
      */
+    @HotSpotIntrinsicCandidate
     public final native void notifyAll();
 
     /**
--- a/jdk/src/java.base/share/classes/java/net/InetAddress.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/InetAddress.java	Mon Aug 03 16:33:06 2015 -0700
@@ -297,6 +297,13 @@
                     return null;
                 }
             });
+        sun.misc.SharedSecrets.setJavaNetInetAddressAccess(
+                new sun.misc.JavaNetInetAddressAccess() {
+                    public String getOriginalHostName(InetAddress ia) {
+                        return ia.holder.getOriginalHostName();
+                    }
+                }
+        );
         init();
     }
 
--- a/jdk/src/java.base/share/classes/java/net/URLClassLoader.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/URLClassLoader.java	Mon Aug 03 16:33:06 2015 -0700
@@ -774,10 +774,6 @@
                 public URLClassPath getURLClassPath (URLClassLoader u) {
                     return u.ucp;
                 }
-
-                public String getOriginalHostName(InetAddress ia) {
-                    return ia.holder.getOriginalHostName();
-                }
             }
         );
         ClassLoader.registerAsParallelCapable();
--- a/jdk/src/java.base/share/classes/java/security/KeyStoreSpi.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/security/KeyStoreSpi.java	Mon Aug 03 16:33:06 2015 -0700
@@ -360,6 +360,22 @@
      *          that specifies how to load the keystore,
      *          which may be {@code null}
      *
+     * @implSpec
+     * The default implementation examines {@code KeyStore.LoadStoreParameter}
+     * to extract its password and pass it to
+     * {@link KeyStoreSpi#engineLoad(InputStream, char[])} along with a
+     * {@code null} {@code InputStream}.
+     * <p>
+     * If {@code KeyStore.LoadStoreParameter} is {@code null} then
+     * the password parameter will also be {@code null}.
+     * Otherwise the {@code KeyStore.ProtectionParameter} of
+     * {@code KeyStore.LoadStoreParameter} must be either a
+     * {@code KeyStore.PasswordProtection} or a
+     * {@code KeyStore.CallbackHandlerProtection} that supports
+     * {@code PasswordCallback} so that the password parameter can be
+     * extracted. If the {@code KeyStore.ProtectionParameter} is neither
+     * of those classes then a {@code NoSuchAlgorithmException} is thrown.
+     *
      * @exception IllegalArgumentException if the given
      *          {@code KeyStore.LoadStoreParameter}
      *          input is not recognized
@@ -385,37 +401,32 @@
             return;
         }
 
-        if (param instanceof KeyStore.SimpleLoadStoreParameter) {
-            ProtectionParameter protection = param.getProtectionParameter();
-            char[] password;
-            if (protection instanceof PasswordProtection) {
-                password = ((PasswordProtection)protection).getPassword();
-            } else if (protection instanceof CallbackHandlerProtection) {
-                CallbackHandler handler =
-                    ((CallbackHandlerProtection)protection).getCallbackHandler();
-                PasswordCallback callback =
-                    new PasswordCallback("Password: ", false);
-                try {
-                    handler.handle(new Callback[] {callback});
-                } catch (UnsupportedCallbackException e) {
-                    throw new NoSuchAlgorithmException
-                        ("Could not obtain password", e);
-                }
-                password = callback.getPassword();
-                callback.clearPassword();
-                if (password == null) {
-                    throw new NoSuchAlgorithmException
-                        ("No password provided");
-                }
-            } else {
-                throw new NoSuchAlgorithmException("ProtectionParameter must"
-                    + " be PasswordProtection or CallbackHandlerProtection");
+        ProtectionParameter protection = param.getProtectionParameter();
+        char[] password;
+        if (protection instanceof PasswordProtection) {
+            password = ((PasswordProtection)protection).getPassword();
+        } else if (protection instanceof CallbackHandlerProtection) {
+            CallbackHandler handler =
+                ((CallbackHandlerProtection)protection).getCallbackHandler();
+            PasswordCallback callback =
+                new PasswordCallback("Password: ", false);
+            try {
+                handler.handle(new Callback[] {callback});
+            } catch (UnsupportedCallbackException e) {
+                throw new NoSuchAlgorithmException
+                    ("Could not obtain password", e);
             }
-            engineLoad(null, password);
-            return;
+            password = callback.getPassword();
+            callback.clearPassword();
+            if (password == null) {
+                throw new NoSuchAlgorithmException("No password provided");
+            }
+        } else {
+            throw new NoSuchAlgorithmException("ProtectionParameter must"
+                + " be PasswordProtection or CallbackHandlerProtection");
         }
-
-        throw new UnsupportedOperationException();
+        engineLoad(null, password);
+        return;
     }
 
     /**
--- a/jdk/src/java.base/share/classes/java/util/EnumMap.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/EnumMap.java	Mon Aug 03 16:33:06 2015 -0700
@@ -681,8 +681,11 @@
     }
 
     private boolean equals(EnumMap<?,?> em) {
+        if (em.size != size)
+            return false;
+
         if (em.keyType != keyType)
-            return size == 0 && em.size == 0;
+            return size == 0;
 
         // Key types match, compare each value
         for (int i = 0; i < keyUniverse.length; i++) {
--- a/jdk/src/java.base/share/classes/java/util/PropertyResourceBundle.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/PropertyResourceBundle.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,8 +40,17 @@
 package java.util;
 
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.charset.MalformedInputException;
+import java.nio.charset.StandardCharsets;
+import java.nio.charset.UnmappableCharacterException;
+import java.security.AccessController;
+import java.util.Locale;
+import sun.security.action.GetPropertyAction;
+import sun.util.PropertyResourceBundleCharset;
 import sun.util.ResourceBundleEnumeration;
 
 /**
@@ -108,11 +117,20 @@
  * <strong>Note:</strong> PropertyResourceBundle can be constructed either
  * from an InputStream or a Reader, which represents a property file.
  * Constructing a PropertyResourceBundle instance from an InputStream requires
- * that the input stream be encoded in ISO-8859-1.  In that case, characters
- * that cannot be represented in ISO-8859-1 encoding must be represented by Unicode Escapes
- * as defined in section 3.3 of
- * <cite>The Java&trade; Language Specification</cite>
+ * that the input stream be encoded in UTF-8. By default, if a
+ * {@link java.nio.charset.MalformedInputException} or an
+ * {@link java.nio.charset.UnmappableCharacterException} occurs on reading the
+ * input stream, then the PropertyResourceBundle instance resets to the state
+ * before the exception, re-reads the input stream in {@code ISO-8859-1}, and
+ * continues reading. If the system property
+ * {@code java.util.PropertyResourceBundle.encoding} is set to either
+ * "ISO-8859-1" or "UTF-8", the input stream is solely read in that encoding,
+ * and throws the exception if it encounters an invalid sequence.
+ * If "ISO-8859-1" is specified, characters that cannot be represented in
+ * ISO-8859-1 encoding must be represented by Unicode Escapes as defined in section
+ * 3.3 of <cite>The Java&trade; Language Specification</cite>
  * whereas the other constructor which takes a Reader does not have that limitation.
+ * Other encoding values are ignored for this system property.
  *
  * @see ResourceBundle
  * @see ListResourceBundle
@@ -120,10 +138,26 @@
  * @since 1.1
  */
 public class PropertyResourceBundle extends ResourceBundle {
+
+    // Check whether the strict encoding is specified.
+    // The possible encoding is either "ISO-8859-1" or "UTF-8".
+    private static final String encoding =
+        AccessController.doPrivileged(
+            new GetPropertyAction("java.util.PropertyResourceBundle.encoding", ""))
+        .toUpperCase(Locale.ROOT);
+
     /**
      * Creates a property resource bundle from an {@link java.io.InputStream
-     * InputStream}.  The property file read with this constructor
-     * must be encoded in ISO-8859-1.
+    * InputStream}. This constructor reads the property file in UTF-8 by default.
+    * If a {@link java.nio.charset.MalformedInputException} or an
+    * {@link java.nio.charset.UnmappableCharacterException} occurs on reading the
+    * input stream, then the PropertyResourceBundle instance resets to the state
+    * before the exception, re-reads the input stream in {@code ISO-8859-1} and
+    * continues reading. If the system property
+    * {@code java.util.PropertyResourceBundle.encoding} is set to either
+    * "ISO-8859-1" or "UTF-8", the input stream is solely read in that encoding,
+    * and throws the exception if it encounters an invalid sequence. Other
+    * encoding values are ignored for this system property.
      *
      * @param stream an InputStream that represents a property file
      *        to read from.
@@ -131,12 +165,19 @@
      * @throws NullPointerException if <code>stream</code> is null
      * @throws IllegalArgumentException if {@code stream} contains a
      *     malformed Unicode escape sequence.
+     * @throws MalformedInputException if the system property
+     *     {@code java.util.PropertyResourceBundle.encoding} is set to "UTF-8"
+     *     and {@code stream} contains an invalid UTF-8 byte sequence.
+     * @throws UnmappableCharacterException if the system property
+     *     {@code java.util.PropertyResourceBundle.encoding} is set to "UTF-8"
+     *     and {@code stream} contains an unmappable UTF-8 byte sequence.
      */
     @SuppressWarnings({"unchecked", "rawtypes"})
     public PropertyResourceBundle (InputStream stream) throws IOException {
-        Properties properties = new Properties();
-        properties.load(stream);
-        lookup = new HashMap(properties);
+        this(new InputStreamReader(stream,
+            "ISO-8859-1".equals(encoding) ?
+                StandardCharsets.ISO_8859_1.newDecoder() :
+                new PropertyResourceBundleCharset("UTF-8".equals(encoding)).newDecoder()));
     }
 
     /**
--- a/jdk/src/java.base/share/classes/java/util/regex/Matcher.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/regex/Matcher.java	Mon Aug 03 16:33:06 2015 -0700
@@ -63,7 +63,7 @@
  *
  * <p> A matcher finds matches in a subset of its input called the
  * <i>region</i>. By default, the region contains all of the matcher's input.
- * The region can be modified via the{@link #region region} method and queried
+ * The region can be modified via the {@link #region region} method and queried
  * via the {@link #regionStart regionStart} and {@link #regionEnd regionEnd}
  * methods. The way that the region boundaries interact with some pattern
  * constructs can be changed. See {@link #useAnchoringBounds
@@ -1639,15 +1639,15 @@
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("java.util.regex.Matcher");
-        sb.append("[pattern=" + pattern());
-        sb.append(" region=");
-        sb.append(regionStart() + "," + regionEnd());
-        sb.append(" lastmatch=");
+        sb.append("java.util.regex.Matcher")
+                .append("[pattern=").append(pattern())
+                .append(" region=")
+                .append(regionStart()).append(',').append(regionEnd())
+                .append(" lastmatch=");
         if ((first >= 0) && (group() != null)) {
             sb.append(group());
         }
-        sb.append("]");
+        sb.append(']');
         return sb.toString();
     }
 
--- a/jdk/src/java.base/share/classes/java/util/regex/Pattern.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/regex/Pattern.java	Mon Aug 03 16:33:06 2015 -0700
@@ -565,7 +565,7 @@
  * <p>
  * <b><a name="usc">Scripts</a></b> are specified either with the prefix {@code Is}, as in
  * {@code IsHiragana}, or by using  the {@code script} keyword (or its short
- * form {@code sc})as in {@code script=Hiragana} or {@code sc=Hiragana}.
+ * form {@code sc}) as in {@code script=Hiragana} or {@code sc=Hiragana}.
  * <p>
  * The script names supported by <code>Pattern</code> are the valid script names
  * accepted and defined by
@@ -1299,18 +1299,22 @@
         if (slashEIndex == -1)
             return "\\Q" + s + "\\E";
 
-        StringBuilder sb = new StringBuilder(s.length() * 2);
+        int lenHint = s.length();
+        lenHint = (lenHint < Integer.MAX_VALUE - 8 - lenHint) ?
+                (lenHint << 1) : (Integer.MAX_VALUE - 8);
+
+        StringBuilder sb = new StringBuilder(lenHint);
         sb.append("\\Q");
-        slashEIndex = 0;
         int current = 0;
-        while ((slashEIndex = s.indexOf("\\E", current)) != -1) {
-            sb.append(s.substring(current, slashEIndex));
+        do {
+            sb.append(s, current, slashEIndex)
+                    .append("\\E\\\\E\\Q");
             current = slashEIndex + 2;
-            sb.append("\\E\\\\E\\Q");
-        }
-        sb.append(s.substring(current, s.length()));
-        sb.append("\\E");
-        return sb.toString();
+        } while ((slashEIndex = s.indexOf("\\E", current)) != -1);
+
+        return sb.append(s, current, s.length())
+                .append("\\E")
+                .toString();
     }
 
     /**
@@ -1367,14 +1371,16 @@
     }
 
     /**
-     * The pattern is converted to normalizedD form and then a pure group
-     * is constructed to match canonical equivalences of the characters.
+     * The pattern is converted to normalized form ({@linkplain
+     * java.text.Normalizer.Form.NFD NFD}, canonical decomposition)
+     * and then a pure group is constructed to match canonical
+     * equivalences of the characters.
      */
     private void normalize() {
         boolean inCharClass = false;
         int lastCodePoint = -1;
 
-        // Convert pattern into normalizedD form
+        // Convert pattern into normalized form
         normalizedPattern = Normalizer.normalize(pattern, Normalizer.Form.NFD);
         patternLength = normalizedPattern.length();
 
--- a/jdk/src/java.base/share/classes/java/util/stream/Collector.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/Collector.java	Mon Aug 03 16:33:06 2015 -0700
@@ -223,7 +223,7 @@
      * Perform the final transformation from the intermediate accumulation type
      * {@code A} to the final result type {@code R}.
      *
-     * <p>If the characteristic {@code IDENTITY_TRANSFORM} is
+     * <p>If the characteristic {@code IDENTITY_FINISH} is
      * set, this function may be presumed to be an identity transform with an
      * unchecked cast from {@code A} to {@code R}.
      *
--- a/jdk/src/java.base/share/classes/java/util/stream/DoubleStream.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/DoubleStream.java	Mon Aug 03 16:33:06 2015 -0700
@@ -293,7 +293,7 @@
      *
      * <p>Independent of whether this stream is ordered or unordered if all
      * elements of this stream match the given predicate then this operation
-     * takes all elements (the result is the same is the input), or if no
+     * takes all elements (the result is the same as the input), or if no
      * elements of the stream match the given predicate then no elements are
      * taken (the result is an empty stream).
      *
@@ -329,6 +329,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default DoubleStream takeWhile(DoublePredicate predicate) {
         Objects.requireNonNull(predicate);
@@ -361,7 +362,7 @@
      * elements of this stream match the given predicate then this operation
      * drops all elements (the result is an empty stream), or if no elements of
      * the stream match the given predicate then no elements are dropped (the
-     * result is the same is the input).
+     * result is the same as the input).
      *
      * <p>This is a <a href="package-summary.html#StreamOps">stateful
      * intermediate operation</a>.
@@ -395,6 +396,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default DoubleStream dropWhile(DoublePredicate predicate) {
         Objects.requireNonNull(predicate);
--- a/jdk/src/java.base/share/classes/java/util/stream/IntStream.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/IntStream.java	Mon Aug 03 16:33:06 2015 -0700
@@ -291,7 +291,7 @@
      *
      * <p>Independent of whether this stream is ordered or unordered if all
      * elements of this stream match the given predicate then this operation
-     * takes all elements (the result is the same is the input), or if no
+     * takes all elements (the result is the same as the input), or if no
      * elements of the stream match the given predicate then no elements are
      * taken (the result is an empty stream).
      *
@@ -326,6 +326,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default IntStream takeWhile(IntPredicate predicate) {
         Objects.requireNonNull(predicate);
@@ -358,7 +359,7 @@
      * elements of this stream match the given predicate then this operation
      * drops all elements (the result is an empty stream), or if no elements of
      * the stream match the given predicate then no elements are dropped (the
-     * result is the same is the input).
+     * result is the same as the input).
      *
      * <p>This is a <a href="package-summary.html#StreamOps">stateful
      * intermediate operation</a>.
@@ -391,6 +392,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default IntStream dropWhile(IntPredicate predicate) {
         Objects.requireNonNull(predicate);
--- a/jdk/src/java.base/share/classes/java/util/stream/LongStream.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/LongStream.java	Mon Aug 03 16:33:06 2015 -0700
@@ -291,7 +291,7 @@
      *
      * <p>Independent of whether this stream is ordered or unordered if all
      * elements of this stream match the given predicate then this operation
-     * takes all elements (the result is the same is the input), or if no
+     * takes all elements (the result is the same as the input), or if no
      * elements of the stream match the given predicate then no elements are
      * taken (the result is an empty stream).
      *
@@ -327,6 +327,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default LongStream takeWhile(LongPredicate predicate) {
         Objects.requireNonNull(predicate);
@@ -359,7 +360,7 @@
      * elements of this stream match the given predicate then this operation
      * drops all elements (the result is an empty stream), or if no elements of
      * the stream match the given predicate then no elements are dropped (the
-     * result is the same is the input).
+     * result is the same as the input).
      *
      * <p>This is a <a href="package-summary.html#StreamOps">stateful
      * intermediate operation</a>.
@@ -393,6 +394,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default LongStream dropWhile(LongPredicate predicate) {
         Objects.requireNonNull(predicate);
--- a/jdk/src/java.base/share/classes/java/util/stream/SliceOps.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/SliceOps.java	Mon Aug 03 16:33:06 2015 -0700
@@ -138,7 +138,7 @@
                             skip, limit, size);
                 }
                 else {
-                    // @@@ OOMEs will occur for LongStream.longs().filter(i -> true).limit(n)
+                    // @@@ OOMEs will occur for LongStream.range(0, Long.MAX_VALUE).filter(i -> true).limit(n)
                     //     regardless of the value of n
                     //     Need to adjust the target size of splitting for the
                     //     SliceTask from say (size / k) to say min(size / k, 1 << 14)
--- a/jdk/src/java.base/share/classes/java/util/stream/Stream.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/Stream.java	Mon Aug 03 16:33:06 2015 -0700
@@ -498,7 +498,7 @@
      *
      * <p>Independent of whether this stream is ordered or unordered if all
      * elements of this stream match the given predicate then this operation
-     * takes all elements (the result is the same is the input), or if no
+     * takes all elements (the result is the same as the input), or if no
      * elements of the stream match the given predicate then no elements are
      * taken (the result is an empty stream).
      *
@@ -533,6 +533,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default Stream<T> takeWhile(Predicate<? super T> predicate) {
         Objects.requireNonNull(predicate);
@@ -565,7 +566,7 @@
      * elements of this stream match the given predicate then this operation
      * drops all elements (the result is an empty stream), or if no elements of
      * the stream match the given predicate then no elements are dropped (the
-     * result is the same is the input).
+     * result is the same as the input).
      *
      * <p>This is a <a href="package-summary.html#StreamOps">stateful
      * intermediate operation</a>.
@@ -598,6 +599,7 @@
      *                  predicate to apply to elements to determine the longest
      *                  prefix of elements.
      * @return the new stream
+     * @since 1.9
      */
     default Stream<T> dropWhile(Predicate<? super T> predicate) {
         Objects.requireNonNull(predicate);
--- a/jdk/src/java.base/share/classes/java/util/stream/Streams.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/util/stream/Streams.java	Mon Aug 03 16:33:06 2015 -0700
@@ -156,10 +156,9 @@
          * than a balanced tree at the expense of a higher-depth for the right
          * side of the range.
          *
-         * <p>This is optimized for cases such as IntStream.ints() that is
-         * implemented as range of 0 to Integer.MAX_VALUE but is likely to be
-         * augmented with a limit operation that limits the number of elements
-         * to a count lower than this threshold.
+         * <p>This is optimized for cases such as IntStream.range(0, Integer.MAX_VALUE)
+         * that is likely to be augmented with a limit operation that limits the
+         * number of elements to a count lower than this threshold.
          */
         private static final int BALANCED_SPLIT_THRESHOLD = 1 << 24;
 
@@ -280,10 +279,9 @@
          * than a balanced tree at the expense of a higher-depth for the right
          * side of the range.
          *
-         * <p>This is optimized for cases such as LongStream.longs() that is
-         * implemented as range of 0 to Long.MAX_VALUE but is likely to be
-         * augmented with a limit operation that limits the number of elements
-         * to a count lower than this threshold.
+         * <p>This is optimized for cases such as LongStream.range(0, Long.MAX_VALUE)
+         * that is likely to be augmented with a limit operation that limits the
+         * number of elements to a count lower than this threshold.
          */
         private static final long BALANCED_SPLIT_THRESHOLD = 1 << 24;
 
--- a/jdk/src/java.base/share/classes/jdk/internal/jimage/ExternalFilesWriter.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/jdk/internal/jimage/ExternalFilesWriter.java	Mon Aug 03 16:33:06 2015 -0700
@@ -58,7 +58,7 @@
                     case NATIVE_CMD:
                         Path path = destFile("bin", filename);
                         writeEntry(in, path);
-                        path.toFile().setExecutable(true);
+                        path.toFile().setExecutable(true, false);
                         break;
                     case CONFIG:
                         writeEntry(in, destFile("conf", filename));
--- a/jdk/src/java.base/share/classes/sun/misc/JavaNetAccess.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/sun/misc/JavaNetAccess.java	Mon Aug 03 16:33:06 2015 -0700
@@ -26,17 +26,10 @@
 package sun.misc;
 
 import java.net.URLClassLoader;
-import java.net.InetAddress;
 
 public interface JavaNetAccess {
     /**
      * return the URLClassPath belonging to the given loader
      */
     URLClassPath getURLClassPath (URLClassLoader u);
-
-    /**
-     * Return the original application specified hostname of
-     * the given InetAddress object.
-     */
-    String getOriginalHostName(InetAddress ia);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/sun/misc/JavaNetInetAddressAccess.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.misc;
+
+import java.net.InetAddress;
+
+public interface JavaNetInetAddressAccess {
+    /**
+     * Return the original application specified hostname of
+     * the given InetAddress object.
+     */
+    String getOriginalHostName(InetAddress ia);
+}
--- a/jdk/src/java.base/share/classes/sun/misc/SharedSecrets.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/sun/misc/SharedSecrets.java	Mon Aug 03 16:33:06 2015 -0700
@@ -48,6 +48,7 @@
     private static JavaLangRefAccess javaLangRefAccess;
     private static JavaIOAccess javaIOAccess;
     private static JavaNetAccess javaNetAccess;
+    private static JavaNetInetAddressAccess javaNetInetAddressAccess;
     private static JavaNetHttpCookieAccess javaNetHttpCookieAccess;
     private static JavaNioAccess javaNioAccess;
     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
@@ -92,9 +93,19 @@
     }
 
     public static JavaNetAccess getJavaNetAccess() {
+        if (javaNetAccess == null)
+            unsafe.ensureClassInitialized(java.net.URLClassLoader.class);
         return javaNetAccess;
     }
 
+    public static void setJavaNetInetAddressAccess(JavaNetInetAddressAccess jna) {
+        javaNetInetAddressAccess = jna;
+    }
+
+    public static JavaNetInetAddressAccess getJavaNetInetAddressAccess() {
+        return javaNetInetAddressAccess;
+    }
+
     public static void setJavaNetHttpCookieAccess(JavaNetHttpCookieAccess a) {
         javaNetHttpCookieAccess = a;
     }
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -42,7 +42,7 @@
 import javax.net.ssl.*;
 import sun.misc.ManagedLocalsThread;
 
-import sun.misc.JavaNetAccess;
+import sun.misc.JavaNetInetAddressAccess;
 import sun.misc.SharedSecrets;
 
 /**
@@ -2096,7 +2096,7 @@
         /*
          * Get the original hostname via sun.misc.SharedSecrets.
          */
-        JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
+        JavaNetInetAddressAccess jna = SharedSecrets.getJavaNetInetAddressAccess();
         String originalHostname = jna.getOriginalHostName(inetAddress);
 
         /*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/sun/util/PropertyResourceBundleCharset.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.util;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+import sun.util.logging.PlatformLogger;
+
+/**
+ * A Charset implementation for reading PropertyResourceBundle, in order
+ * for loading properties files. This first tries to load the properties
+ * file with UTF-8 encoding). If it fails, then load the file with ISO-8859-1
+ */
+public class PropertyResourceBundleCharset extends Charset {
+
+    private boolean strictUTF8 = false;
+
+    public PropertyResourceBundleCharset(boolean strictUTF8) {
+        this(PropertyResourceBundleCharset.class.getCanonicalName(), null);
+        this.strictUTF8 = strictUTF8;
+    }
+
+    public PropertyResourceBundleCharset(String canonicalName, String[] aliases) {
+        super(canonicalName, aliases);
+    }
+
+    @Override
+    public boolean contains(Charset cs) {
+        return false;
+    }
+
+    @Override
+    public CharsetDecoder newDecoder() {
+        return new PropertiesFileDecoder(this, 1.0f, 1.0f);
+    }
+
+    @Override
+    public CharsetEncoder newEncoder() {
+        throw new UnsupportedOperationException("Encoding is not supported");
+    }
+
+    private final class PropertiesFileDecoder extends CharsetDecoder {
+
+        private CharsetDecoder cdUTF_8 = StandardCharsets.UTF_8.newDecoder()
+                                .onMalformedInput(CodingErrorAction.REPORT)
+                                .onUnmappableCharacter(CodingErrorAction.REPORT);
+        private CharsetDecoder cdISO_8859_1 = null;
+
+        protected PropertiesFileDecoder(Charset cs,
+                float averageCharsPerByte, float maxCharsPerByte) {
+            super(cs, averageCharsPerByte, maxCharsPerByte);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) {
+            if (Objects.nonNull(cdISO_8859_1)) {
+                return cdISO_8859_1.decode(in, out, false);
+            }
+            in.mark();
+            out.mark();
+
+            CoderResult cr = cdUTF_8.decode(in, out, false);
+            if (cr.isUnderflow() || cr.isOverflow() ||
+                PropertyResourceBundleCharset.this.strictUTF8) {
+                return cr;
+            }
+
+            in.reset();
+            out.reset();
+
+            PlatformLogger.getLogger(getClass().getCanonicalName()).info(
+                "Invalid or unmappable UTF-8 sequence detected. " +
+                "Switching encoding from UTF-8 to ISO-8859-1");
+            cdISO_8859_1 = StandardCharsets.ISO_8859_1.newDecoder();
+            return cdISO_8859_1.decode(in, out, false);
+        }
+    }
+}
--- a/jdk/src/java.base/share/classes/sun/util/resources/CurrencyNames.properties	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/share/classes/sun/util/resources/CurrencyNames.properties	Mon Aug 03 16:33:06 2015 -0700
@@ -60,9 +60,6 @@
 # or other dealings in these Data Files or Software without prior
 # written authorization of the copyright holder.
 
-#
-# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-#
 ADP=ADP
 AED=AED
 AFA=AFA
@@ -358,7 +355,7 @@
 gyd=Guyanaese Dollar
 hkd=Hong Kong Dollar
 hnl=Honduran Lempira
-hrk=Croatian Kuna
+hrk=Kuna
 htg=Haitian Gourde
 huf=Hungarian Forint
 idr=Indonesian Rupiah
--- a/jdk/src/java.base/unix/classes/sun/nio/fs/UnixFileStore.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/unix/classes/sun/nio/fs/UnixFileStore.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -186,7 +186,8 @@
             return false;
         UnixFileStore other = (UnixFileStore)ob;
         return (this.dev == other.dev) &&
-               Arrays.equals(this.entry.dir(), other.entry.dir());
+               Arrays.equals(this.entry.dir(), other.entry.dir()) &&
+               this.entry.name().equals(other.entry.name());
     }
 
     @Override
--- a/jdk/src/java.base/unix/native/libnio/ch/Net.c	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.base/unix/native/libnio/ch/Net.c	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
 #include <string.h>
 #include <netinet/in.h>
 #include <netinet/tcp.h>
+#include <limits.h>
 
 #include "jni.h"
 #include "jni_util.h"
@@ -186,7 +187,7 @@
 #endif
 }
 
-JNIEXPORT int JNICALL
+JNIEXPORT jint JNICALL
 Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean preferIPv6,
                             jboolean stream, jboolean reuse, jboolean ignored)
 {
@@ -709,7 +710,12 @@
     int rv;
     pfd.fd = fdval(env, fdo);
     pfd.events = events;
-    rv = poll(&pfd, 1, timeout);
+    if (timeout < -1) {
+        timeout = -1;
+    } else if (timeout > INT_MAX) {
+        timeout = INT_MAX;
+    }
+    rv = poll(&pfd, 1, (int)timeout);
 
     if (rv >= 0) {
         return pfd.revents;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java	Mon Aug 03 16:33:06 2015 -0700
@@ -84,6 +84,8 @@
         java.security.AccessController.doPrivileged(
                                     new java.security.PrivilegedAction<Object>() {
             public Object run() {
+                String osName = System.getProperty("os.name");
+                if ("SunOS".equals(osName)) {
                     String version = System.getProperty("os.version", "0.0");
                     try {
                         float ver = Float.parseFloat(version);
@@ -117,7 +119,7 @@
                         }
                     } catch (Exception e) {
                     }
-
+                }
                 /* Establish the default font to be used by SG2D etc */
                 defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12);
 
--- a/jdk/src/java.prefs/macosx/classes/java/util/prefs/MacOSXPreferences.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.prefs/macosx/classes/java/util/prefs/MacOSXPreferences.java	Mon Aug 03 16:33:06 2015 -0700
@@ -37,9 +37,6 @@
     // true if this node is a child of userRoot or is userRoot
     private final boolean isUser;
 
-    // true if this node is userRoot or systemRoot
-    private final boolean isRoot;
-
     // CF's storage location for this node and its keys
     private final MacOSXPreferencesFile file;
 
@@ -94,7 +91,6 @@
                               boolean isNew, boolean isRoot, boolean isUser)
     {
         super(parent, name);
-        this.isRoot = isRoot;
         if (isRoot)
             this.isUser = isUser;
         else
@@ -115,7 +111,6 @@
         // /one/two/three/four/five/
         // The fourth slash is the end of the first three components.
         // If there is no fourth slash, the name has fewer than 3 components
-        int componentCount = 0;
         int pos = -1;
         for (int i = 0; i < 4; i++) {
             pos = name.indexOf('/', pos+1);
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/GSSCredentialImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/GSSCredentialImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -547,8 +547,8 @@
     /**
      * Returns the specified mechanism's credential-element.
      *
-     * @param mechOid - the oid for mechanism to retrieve
-     * @param throwExcep - boolean indicating if the function is
+     * @param mechOid the oid for mechanism to retrieve
+     * @param initiate boolean indicating if the function is
      *    to throw exception or return null when element is not
      *    found.
      * @return mechanism credential object
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/GSSToken.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/GSSToken.java	Mon Aug 03 16:33:06 2015 -0700
@@ -84,7 +84,7 @@
      *
      * @param data the array containing the bytes of the integer value
      * @param pos the offset in the array
-     * @size the number of bytes to read from the array.
+     * @param size the number of bytes to read from the array.
      * @return the integer value
      */
     public static final int readLittleEndian(byte[] data, int pos, int size) {
@@ -141,7 +141,7 @@
      * Reads a two byte integer value from an InputStream.
      *
      * @param is the InputStream to read from
-     * @returns the integer value
+     * @return the integer value
      * @throws IOException if some errors occurs while reading the integer
      * bytes.
      */
@@ -155,7 +155,7 @@
      *
      * @param src the byte arra to read from
      * @param pos the offset to start reading from
-     * @returns the integer value
+     * @return the integer value
      */
     public static final int readInt(byte[] src, int pos) {
         return ((0xFF & src[pos])<<8 | (0xFF & src[pos+1]));
@@ -167,8 +167,8 @@
      *
      * @param is the InputStream to read from
      * @param buffer the buffer to store the bytes into
-     * @param throws EOFException if EOF is reached before all bytes are
-     * read.
+     * @throws EOFException if EOF is reached before all bytes are
+     *         read.
      * @throws IOException is an error occurs while reading
      */
     public static final void readFully(InputStream is, byte[] buffer)
@@ -184,8 +184,8 @@
      * @param buffer the buffer to store the bytes into
      * @param offset the offset to start storing at
      * @param len the number of bytes to read
-     * @param throws EOFException if EOF is reached before all bytes are
-     * read.
+     * @throws EOFException if EOF is reached before all bytes are
+     *         read.
      * @throws IOException is an error occurs while reading
      */
     public static final void readFully(InputStream is,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/LoginConfigImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/LoginConfigImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -48,7 +48,7 @@
      * A new instance of LoginConfigImpl must be created for each login request
      * since it's only used by a single (caller, mech) pair
      * @param caller defined in GSSUtil as CALLER_XXX final fields
-     * @param oid defined in GSSUtil as XXX_MECH_OID final fields
+     * @param mech defined in GSSUtil as XXX_MECH_OID final fields
      */
     public LoginConfigImpl(GSSCaller caller, Oid mech) {
 
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/ProviderList.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/ProviderList.java	Mon Aug 03 16:33:06 2015 -0700
@@ -46,7 +46,7 @@
  * queries this class whenever it needs a mechanism's factory.<p>
  *
  * This class stores an ordered list of pairs of the form
- * <provider, oid>. When it attempts to instantiate a mechanism
+ * {@code <provider, oid>}. When it attempts to instantiate a mechanism
  * defined by oid o, it steps through the list looking for an entry
  * with oid=o, or with oid=null. (An entry with oid=null matches all
  * mechanisms.) When it finds such an entry, the corresponding
@@ -74,12 +74,12 @@
  * the system ones don't suffice.<p>
  *
  * If a mechanism's factory is being obtained from a provider as a
- * result of encountering a entryof the form <provider, oid> where
+ * result of encountering a entryof the form {@code <provider, oid>} where
  * oid is non-null, then the assumption is that the application added
  * this entry and it wants this mechanism to be obtained from this
  * provider. Thus is the provider does not actually contain the
  * requested mechanism, an exception will be thrown. However, if the
- * entry were of the form <provider, null>, then it is viewed more
+ * entry were of the form {@code <provider, null>}, then it is viewed more
  * liberally and is simply skipped over if the provider does not claim to
  * support the requested mechanism.
  */
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/krb5/Krb5NameElement.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/krb5/Krb5NameElement.java	Mon Aug 03 16:33:06 2015 -0700
@@ -198,8 +198,8 @@
      * If either name denotes an anonymous principal, the call should
      * return false.
      *
-     * @param name to be compared with
-     * @returns true if they both refer to the same entity, else false
+     * @param other to be compared with
+     * @return true if they both refer to the same entity, else false
      * @exception GSSException with major codes of BAD_NAMETYPE,
      *  BAD_NAME, FAILURE
      */
@@ -224,7 +224,7 @@
      * situation where an error occurs.
      *
      * @param another the object to be compared to
-     * @returns true if they both refer to the same entity, else false
+     * @return true if they both refer to the same entity, else false
      * @see #equals(GSSNameSpi)
      */
     public boolean equals(Object another) {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/spi/GSSContextSpi.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/spi/GSSContextSpi.java	Mon Aug 03 16:33:06 2015 -0700
@@ -51,14 +51,14 @@
  * and the context flags before the context is fully established. The
  * isProtReady method is used to indicate that these services are
  * available.
- *<p>
+ * <p>
  * <strong>
  * Context establishment tokens are defined in a mechanism independent
  * format in section 3.1 of RFC 2743. The GSS-Framework will add
  * and remove the mechanism independent header portion of this token format
  * depending on whether a token is received or is being sent. The mechanism
- * should only generate or expect to read the inner-context token portion..
- * <p>
+ * should only generate or expect to read the inner-context token portion.
+ * <br>
  * On the other hands, tokens used for per-message calls are generated
  * entirely by the mechanism. It is possible that the mechanism chooses to
  * encase inner-level per-message tokens in a header similar to that used
@@ -239,7 +239,7 @@
      *    asked to provide.
      * @param confReq a flag indicating whether confidentiality will be
      *    requested or not
-     * @param outputSize the maximum size of the output token
+     * @param maxTokSize the maximum size of the output token
      * @return the maximum size for the input message that can be
      *    provided to the wrap() method in order to guarantee that these
      *    requirements are met.
@@ -254,7 +254,7 @@
      * @param is the user-provided message to be protected
      * @param os the token to be sent to the peer. It includes
      *    the message from <i>is</i> with the requested protection.
-     * @param msgPro on input it contains the requested qop and
+     * @param msgProp on input it contains the requested qop and
      *    confidentiality state, on output, the applied values
      * @exception GSSException may be thrown
      * @see unwrap
@@ -365,7 +365,7 @@
      *
      * @param is token generated by getMIC
      * @param msgStr the message to check integrity for
-     * @param msgProp will contain the applied QOP and confidentiality
+     * @param mProp will contain the applied QOP and confidentiality
      *    states of the token as well as any informatory status codes
      * @exception GSSException may be thrown
      */
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/spi/GSSNameSpi.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/spi/GSSNameSpi.java	Mon Aug 03 16:33:06 2015 -0700
@@ -46,7 +46,7 @@
      * return false.
      *
      * @param name to be compared with
-     * @returns true if they both refer to the same entity, else false
+     * @return true if they both refer to the same entity, else false
      * @exception GSSException with major codes of BAD_NAMETYPE,
      *    BAD_NAME, FAILURE
      */
@@ -60,7 +60,7 @@
      * situation where an error occurs.
      *
      * @param another the object to be compared to
-     * @returns true if they both refer to the same entity, else false
+     * @return true if they both refer to the same entity, else false
      * @see #equals(GSSNameSpi)
      */
     public boolean equals(Object another);
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/spi/MechanismFactory.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/spi/MechanismFactory.java	Mon Aug 03 16:33:06 2015 -0700
@@ -147,7 +147,7 @@
      * <p>
      * An exported name will generally be passed in using this method.
      *
-     * @param nameBytes the bytes describing this entity to the mechanism
+     * @param name the bytes describing this entity to the mechanism
      * @param nameType an Oid serving as a clue as to how the mechanism should
      * interpret the nameStr
      * @throws GSSException if any of the errors described in RFC 2743 for
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Checksum.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Checksum.java	Mon Aug 03 16:33:06 2015 -0700
@@ -128,8 +128,8 @@
 
     /**
      * Constructs a new Checksum using the raw data and type.
-     * @data the byte array of checksum.
-     * @new_cksumType the type of checksum.
+     * @param data the byte array of checksum.
+     * @param new_cksumType the type of checksum.
      *
      */
          // used in InitialToken
@@ -141,8 +141,8 @@
     /**
      * Constructs a new Checksum by calculating the checksum over the data
      * using specified checksum type.
-     * @new_cksumType the type of checksum.
-     * @data the data that needs to be performed a checksum calculation on.
+     * @param new_cksumType the type of checksum.
+     * @param data the data that needs to be performed a checksum calculation on.
      */
     public Checksum(int new_cksumType, byte[] data)
         throws KdcErrException, KrbCryptoException {
@@ -159,8 +159,8 @@
     /**
      * Constructs a new Checksum by calculating the keyed checksum
      * over the data using specified checksum type.
-     * @new_cksumType the type of checksum.
-     * @data the data that needs to be performed a checksum calculation on.
+     * @param new_cksumType the type of checksum.
+     * @param data the data that needs to be performed a checksum calculation on.
      */
          // KrbSafe, KrbTgsReq
     public Checksum(int new_cksumType, byte[] data,
@@ -238,12 +238,12 @@
 
     /**
      * Encodes a Checksum object.
-     * <xmp>
+     * <pre>{@code
      * Checksum    ::= SEQUENCE {
      *         cksumtype   [0] Int32,
      *         checksum    [1] OCTET STRING
      * }
-     * </xmp>
+     * }</pre>
      *
      * <p>
      * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java	Mon Aug 03 16:33:06 2015 -0700
@@ -330,7 +330,7 @@
      *
      * @param s the string duration
      * @return time in seconds
-     * @throw KrbException if format is illegal
+     * @throws KrbException if format is illegal
      */
     public static int duration(String s) throws KrbException {
 
@@ -392,7 +392,7 @@
      * @param keys the keys
      * @return the int value, Integer.MIN_VALUE is returned if it cannot be
      * found or the value is not a legal integer.
-     * @throw IllegalArgumentException if any of the keys is illegal
+     * @throws IllegalArgumentException if any of the keys is illegal
      * @see #get(java.lang.String[])
      */
     public int getIntValue(String... keys) {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Credentials.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Credentials.java	Mon Aug 03 16:33:06 2015 -0700
@@ -279,7 +279,7 @@
      * @param ticketCache the path to the tickets file. A value
      * of null will be accepted to indicate that the default
      * path should be searched
-     * @returns the TGT credentials or null if none were found. If the tgt
+     * @return the TGT credentials or null if none were found. If the tgt
      * expired, it is the responsibility of the caller to determine this.
      */
     public static Credentials acquireTGTFromCache(PrincipalName princ,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/EncryptedData.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/EncryptedData.java	Mon Aug 03 16:33:06 2015 -0700
@@ -259,20 +259,20 @@
     /**
      * Returns an ASN.1 encoded EncryptedData type.
      *
-     * <xmp>
+     * <pre>{@code
      * EncryptedData   ::= SEQUENCE {
      *     etype   [0] Int32 -- EncryptionType --,
      *     kvno    [1] UInt32 OPTIONAL,
      *     cipher  [2] OCTET STRING -- ciphertext
      * }
-     * </xmp>
+     * }</pre>
      *
      * <p>
      * This definition reflects the Network Working Group RFC 4120
      * specification available at
      * <a href="http://www.ietf.org/rfc/rfc4120.txt">
      * http://www.ietf.org/rfc/rfc4120.txt</a>.
-     * <p>
+     *
      * @return byte array of encoded EncryptedData object.
      * @exception Asn1Exception if an error occurs while decoding an
      * ASN1 encoded data.
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/EncryptionKey.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/EncryptionKey.java	Mon Aug 03 16:33:06 2015 -0700
@@ -101,11 +101,11 @@
      * Obtains all versions of the secret key of the principal from a
      * keytab.
      *
-     * @Param princ the principal whose secret key is desired
+     * @param princ the principal whose secret key is desired
      * @param keytab the path to the keytab file. A value of null
      * will be accepted to indicate that the default path should be
      * searched.
-     * @returns an array of secret keys or null if none were found.
+     * @return an array of secret keys or null if none were found.
      */
     public static EncryptionKey[] acquireSecretKeys(PrincipalName princ,
                                                     String keytab) {
@@ -127,7 +127,7 @@
      * @param password NOT null
      * @param etype
      * @param snp can be NULL
-     * @returns never null
+     * @return never null
      */
     public static EncryptionKey acquireSecretKey(PrincipalName cname,
             char[] password, int etype, PAData.SaltAndParams snp)
@@ -150,7 +150,7 @@
      * @param salt NOT null
      * @param etype
      * @param s2kparams can be NULL
-     * @returns never null
+     * @return never null
      */
     public static EncryptionKey acquireSecretKey(char[] password,
             String salt, int etype, byte[] s2kparams)
@@ -388,11 +388,11 @@
     /**
      * Returns the ASN.1 encoding of this EncryptionKey.
      *
-     * <xmp>
+     * <pre>{@code
      * EncryptionKey ::=   SEQUENCE {
      *                             keytype[0]    INTEGER,
      *                             keyvalue[1]   OCTET STRING }
-     * </xmp>
+     * }</pre>
      *
      * <p>
      * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/KrbAsReqBuilder.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/KrbAsReqBuilder.java	Mon Aug 03 16:33:06 2015 -0700
@@ -110,7 +110,7 @@
      * realm, where default realm will be used. This realm will be the target
      * realm for AS-REQ. I believe a client should only get initial TGT from
      * its own realm.
-     * @param keys must not be null. if empty, might be quite useless.
+     * @param ktab must not be null. If empty, might be quite useless.
      * This argument will neither be modified nor stored by the method.
      * @throws KrbException
      */
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/KrbCred.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/KrbCred.java	Mon Aug 03 16:33:06 2015 -0700
@@ -34,8 +34,6 @@
 import sun.security.krb5.internal.*;
 import sun.security.krb5.internal.crypto.KeyUsage;
 import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
 
 import sun.security.util.DerValue;
 
@@ -65,7 +63,6 @@
 
         PrincipalName client = tgt.getClient();
         PrincipalName tgService = tgt.getServer();
-        PrincipalName server = serviceTicket.getServer();
         if (!serviceTicket.getClient().equals(client))
             throw new KrbException(Krb5.KRB_ERR_GENERIC,
                                 "Client principal does not match");
@@ -78,28 +75,10 @@
         options.set(KDCOptions.FORWARDED, true);
         options.set(KDCOptions.FORWARDABLE, true);
 
-        HostAddresses sAddrs = null;
-
-        // GSSName.NT_HOSTBASED_SERVICE should display with KRB_NT_SRV_HST
-        if (server.getNameType() == PrincipalName.KRB_NT_SRV_HST) {
-            sAddrs = new HostAddresses(server);
-        } else if (server.getNameType() == PrincipalName.KRB_NT_UNKNOWN) {
-            // Sometimes this is also a server
-            if (server.getNameStrings().length >= 2) {
-                String host = server.getNameStrings()[1];
-                try {
-                    InetAddress[] addr = InetAddress.getAllByName(host);
-                    if (addr != null && addr.length > 0) {
-                        sAddrs = new HostAddresses(addr);
-                    }
-                } catch (UnknownHostException ioe) {
-                    // maybe we guessed wrong, let sAddrs be null
-                }
-            }
-        }
-
         KrbTgsReq tgsReq = new KrbTgsReq(options, tgt, tgService,
-                                         null, null, null, null, sAddrs, null, null, null);
+                null, null, null, null,
+                null,   // No easy way to get addresses right
+                null, null, null);
         credMessg = createMessage(tgsReq.sendAndGetCreds(), key);
 
         obuf = credMessg.asn1Encode();
@@ -111,7 +90,6 @@
         EncryptionKey sessionKey
             = delegatedCreds.getSessionKey();
         PrincipalName princ = delegatedCreds.getClient();
-        Realm realm = princ.getRealm();
         PrincipalName tgService = delegatedCreds.getServer();
 
         KrbCredInfo credInfo = new KrbCredInfo(sessionKey,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/PrincipalName.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/PrincipalName.java	Mon Aug 03 16:33:06 2015 -0700
@@ -45,14 +45,14 @@
 
 /**
  * Implements the ASN.1 PrincipalName type and its realm in a single class.
- * <xmp>
+ * <pre>{@code
  *    Realm           ::= KerberosString
  *
  *    PrincipalName   ::= SEQUENCE {
  *            name-type       [0] Int32,
  *            name-string     [1] SEQUENCE OF KerberosString
  *    }
- * </xmp>
+ * }</pre>
  * This class is immutable.
  * @see Realm
  */
@@ -211,14 +211,14 @@
 
     /**
      * Returns the ASN.1 encoding of the
-     * <xmp>
+     * <pre>{@code
      * PrincipalName    ::= SEQUENCE {
      *          name-type       [0] Int32,
      *          name-string     [1] SEQUENCE OF KerberosString
      * }
      *
      * KerberosString   ::= GeneralString (IA5String)
-     * </xmp>
+     * }</pre>
      *
      * <p>
      * This definition reflects the Network Working Group RFC 4120
@@ -638,7 +638,8 @@
      * name, the second component is returned.
      * Null is returned if there are not two or more
      * components in the name.
-     * @returns instance component of a multi-component name.
+     *
+     * @return instance component of a multi-component name.
      */
     public String getInstanceComponent()
     {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Realm.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Realm.java	Mon Aug 03 16:33:06 2015 -0700
@@ -41,9 +41,8 @@
 /**
  * Implements the ASN.1 Realm type.
  *
- * <xmp>
- * Realm ::= GeneralString
- * </xmp>
+ * {@code Realm ::= GeneralString}
+ *
  * This class is immutable.
  */
 public class Realm implements Cloneable {
@@ -244,8 +243,8 @@
      *
      * @param cRealm the initiating realm, not null
      * @param sRealm the target realm, not null, not equals to cRealm
-     * @returns array of realms including at least cRealm as the first
-     *          element
+     * @return array of realms including at least cRealm as the first
+     *         element
      */
     public static String[] getRealmsList(String cRealm, String sRealm) {
         try {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/APOptions.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/APOptions.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,17 +38,17 @@
 /**
  * Implements the ASN.1 APOptions type.
  *
- * <xmp>
+ * <pre>{@code
  * APOptions    ::= KerberosFlags
  *      -- reserved(0),
  *      -- use-session-key(1),
  *      -- mutual-required(2)
- * </xmp>
  *
  * KerberosFlags   ::= BIT STRING (SIZE (32..MAX))
  *              -- minimum number of bits shall be sent,
  *              -- but no fewer than 32
  *
+ * }</pre>
  * <p>
  * This definition reflects the Network Working Group RFC4120
  * specification available at
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/APRep.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/APRep.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,13 +39,13 @@
 /**
  * Implements the ASN.1 AP-REP type.
  *
- * <xmp>
+ * <pre>{@code
  * AP-REP          ::= [APPLICATION 15] SEQUENCE {
  *         pvno            [0] INTEGER (5),
  *         msg-type        [1] INTEGER (15),
  *         enc-part        [2] EncryptedData -- EncAPRepPart
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/APReq.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/APReq.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,7 +38,7 @@
 /**
  * Implements the ASN.1 AP-REQ type.
  *
- * <xmp>
+ * <pre>{@code
  * AP-REQ               ::= [APPLICATION 14] SEQUENCE {
  *      pvno            [0] INTEGER (5),
  *      msg-type        [1] INTEGER (14),
@@ -46,7 +46,7 @@
  *      ticket          [3] Ticket,
  *      authenticator   [4] EncryptedData -- Authenticator
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/Authenticator.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/Authenticator.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,7 +38,7 @@
 /**
  * Implements the ASN.1 Authenticator type.
  *
- * <xmp>
+ * <pre>{@code
  * Authenticator   ::= [APPLICATION 2] SEQUENCE  {
  *         authenticator-vno       [0] INTEGER (5),
  *         crealm                  [1] Realm,
@@ -50,7 +50,7 @@
  *         seq-number              [7] UInt32 OPTIONAL,
  *         authorization-data      [8] AuthorizationData OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncAPRepPart.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncAPRepPart.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,14 +39,14 @@
 /**
  * Implements the ASN.1 EncAPRepPart type.
  *
- * <xmp>
+ * <pre>{@code
  * EncAPRepPart ::= [APPLICATION 27] SEQUENCE {
  *      ctime           [0] KerberosTime,
  *      cusec           [1] Microseconds,
  *      subkey          [2] EncryptionKey OPTIONAL,
  *      seq-number      [3] UInt32 OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKDCRepPart.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKDCRepPart.java	Mon Aug 03 16:33:06 2015 -0700
@@ -40,7 +40,7 @@
 /**
  * Implements the ASN.1 EncKDCRepPart type.
  *
- * <xmp>
+ * <pre>{@code
  * EncKDCRepPart        ::= SEQUENCE {
  *      key             [0] EncryptionKey,
  *      last-req        [1] LastReq,
@@ -55,7 +55,7 @@
  *      sname           [10] PrincipalName,
  *      caddr           [11] HostAddresses OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKrbCredPart.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKrbCredPart.java	Mon Aug 03 16:33:06 2015 -0700
@@ -40,7 +40,7 @@
 /**
  * Implements the ASN.1 EncKrbCredPart type.
  *
- * <xmp>
+ * <pre>{@code
  * EncKrbCredPart  ::= [APPLICATION 29] SEQUENCE {
  *         ticket-info     [0] SEQUENCE OF KrbCredInfo,
  *         nonce           [1] UInt32 OPTIONAL,
@@ -49,7 +49,7 @@
  *         s-address       [4] HostAddress OPTIONAL,
  *         r-address       [5] HostAddress OPTIONAL
  *   }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKrbPrivPart.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKrbPrivPart.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,7 +38,7 @@
 /**
  * Implements the ASN.1 EncKrbPrivPart type.
  *
- * <xmp>
+ * <pre>{@code
  * EncKrbPrivPart  ::= [APPLICATION 28] SEQUENCE {
  *         user-data       [0] OCTET STRING,
  *         timestamp       [1] KerberosTime OPTIONAL,
@@ -47,7 +47,7 @@
  *         s-address       [4] HostAddress -- sender's addr --,
  *         r-address       [5] HostAddress OPTIONAL -- recip's addr
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncTicketPart.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/EncTicketPart.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,7 +39,7 @@
 /**
  * Implements the ASN.1 EncTicketPart type.
  *
- * <xmp>
+ * <pre>{@code
  * EncTicketPart   ::= [APPLICATION 3] SEQUENCE {
  *         flags                   [0] TicketFlags,
  *         key                     [1] EncryptionKey,
@@ -53,7 +53,7 @@
  *         caddr                   [9] HostAddresses OPTIONAL,
  *         authorization-data      [10] AuthorizationData OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/HostAddress.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/HostAddress.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,16 +39,17 @@
 import java.net.Inet6Address;
 import java.net.UnknownHostException;
 import java.io.IOException;
+import java.util.Arrays;
 
 /**
  * Implements the ASN.1 HostAddress type.
  *
- * <xmp>
+ * <pre>{@code
  * HostAddress     ::= SEQUENCE  {
  *         addr-type       [0] Int32,
  *         address         [1] OCTET STRING
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
@@ -131,7 +132,7 @@
     /**
      * Gets the InetAddress of this HostAddress.
      * @return the IP address for this specified host.
-     * @exception if no IP address for the host could be found.
+     * @exception UnknownHostException if no IP address for the host could be found.
      *
      */
     public InetAddress getInetAddress() throws UnknownHostException {
@@ -295,4 +296,11 @@
         }
     }
 
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Arrays.toString(address));
+        sb.append('(').append(addrType).append(')');
+        return sb.toString();
+    }
 }
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/HostAddresses.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/HostAddresses.java	Mon Aug 03 16:33:06 2015 -0700
@@ -45,7 +45,7 @@
 /**
  * Implements the ASN.1 HostAddresses type.
  *
- * <xmp>
+ * <pre>{@code
  * HostAddresses   -- NOTE: subtly different from rfc1510,
  *                 -- but has a value mapping and encodes the same
  *         ::= SEQUENCE OF HostAddress
@@ -54,7 +54,7 @@
  *         addr-type       [0] Int32,
  *         address         [1] OCTET STRING
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
@@ -338,4 +338,9 @@
         for (int i = 0; i < inetAddresses.length; i++)
             addresses[i] = new HostAddress(inetAddresses[i]);
     }
+
+    @Override
+    public String toString() {
+        return Arrays.toString(addresses);
+    }
 }
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCOptions.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCOptions.java	Mon Aug 03 16:33:06 2015 -0700
@@ -40,7 +40,7 @@
 /**
  * Implements the ASN.1 KDCOptions type.
  *
- * <xmp>
+ * <pre>{@code
  * KDCOptions   ::= KerberosFlags
  *      -- reserved(0),
  *      -- forwardable(1),
@@ -69,7 +69,7 @@
  *                      -- minimum number of bits shall be sent,
  *                      -- but no fewer than 32
  *
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
@@ -115,7 +115,7 @@
  * in the addresses field of the request.
  * <li>FORWARDED, PROXY, ENC_TKT_IN_SKEY, RENEW, VALIDATE are used only in
  * subsequent requests.
- * </ol><p>
+ * </ol>
  */
 
 public class KDCOptions extends KerberosFlags {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCRep.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCRep.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,7 +38,7 @@
 /**
  * Implements the ASN.1 KDC-REP type.
  *
- * <xmp>
+ * <pre>{@code
  * KDC-REP         ::= SEQUENCE {
  *         pvno            [0] INTEGER (5),
  *         msg-type        [1] INTEGER (11 -- AS -- | 13 -- TGS --),
@@ -51,7 +51,7 @@
  *                                   -- EncASRepPart or EncTGSRepPart,
  *                                   -- as appropriate
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCReq.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCReq.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,7 +39,7 @@
 /**
  * Implements the ASN.1 KRB_KDC_REQ type.
  *
- * <xmp>
+ * <pre>{@code
  * KDC-REQ              ::= SEQUENCE {
  *      -- NOTE: first tag is [1], not [0]
  *      pvno            [1] INTEGER (5) ,
@@ -48,7 +48,7 @@
  *                            -- NOTE: not empty --,
  *      req-body        [4] KDC-REQ-BODY
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
@@ -95,7 +95,7 @@
      * @param req_type a encoded asn1 type value.
      * @exception Asn1Exception if an error occurs while decoding an ASN1 encoded data.
      * @exception IOException if an I/O error occurs while reading encoded data.
-     * @exceptoin KrbErrException
+     * @exception KrbErrException
      */
     public KDCReq(DerValue der, int req_type) throws Asn1Exception,
             IOException, KrbException {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCReqBody.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCReqBody.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,7 +39,7 @@
 /**
  * Implements the ASN.1 KDC-REQ-BODY type.
  *
- * <xmp>
+ * <pre>{@code
  * KDC-REQ-BODY ::= SEQUENCE {
  *      kdc-options             [0] KDCOptions,
  *      cname                   [1] PrincipalName OPTIONAL
@@ -60,7 +60,7 @@
  *      additional-tickets      [11] SEQUENCE OF Ticket OPTIONAL
  *                                       -- NOTE: not empty
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBCred.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBCred.java	Mon Aug 03 16:33:06 2015 -0700
@@ -41,14 +41,14 @@
 /**
  * Implements the ASN.1 Authenticator type.
  *
- * <xmp>
+ * <pre>{@code
  * KRB-CRED     ::= [APPLICATION 22] SEQUENCE {
  *      pvno            [0] INTEGER (5),
  *      msg-type        [1] INTEGER (22),
  *      tickets         [2] SEQUENCE OF Ticket,
  *      enc-part        [3] EncryptedData -- EncKrbCredPart
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBError.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBError.java	Mon Aug 03 16:33:06 2015 -0700
@@ -48,7 +48,7 @@
 /**
  * Implements the ASN.1 KRBError type.
  *
- * <xmp>
+ * <pre>{@code
  * KRB-ERROR       ::= [APPLICATION 30] SEQUENCE {
  *         pvno            [0] INTEGER (5),
  *         msg-type        [1] INTEGER (30),
@@ -71,7 +71,7 @@
  *         data-type       [0] Int32,
  *         data-value      [1] OCTET STRING OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBPriv.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBPriv.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,14 +39,14 @@
 /**
  * Implements the ASN.1 KRB-PRIV type.
  *
- * <xmp>
+ * <pre>{@code
  * KRB-PRIV        ::= [APPLICATION 21] SEQUENCE {
  *         pvno            [0] INTEGER (5),
  *         msg-type        [1] INTEGER (21),
  *                           -- NOTE: there is no [2] tag
  *         enc-part        [3] EncryptedData -- EncKrbPrivPart
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBSafe.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBSafe.java	Mon Aug 03 16:33:06 2015 -0700
@@ -40,14 +40,14 @@
 /**
  * Implements the ASN.1 KRBSafe type.
  *
- * <xmp>
+ * <pre>{@code
  * KRB-SAFE        ::= [APPLICATION 20] SEQUENCE {
  *         pvno            [0] INTEGER (5),
  *         msg-type        [1] INTEGER (20),
  *         safe-body       [2] KRB-SAFE-BODY,
  *         cksum           [3] Checksum
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBSafeBody.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBSafeBody.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,7 +39,7 @@
 /**
  * Implements the ASN.1 KRBSafeBody type.
  *
- * <xmp>
+ * <pre>{@code
  * KRB-SAFE-BODY   ::= SEQUENCE {
  *         user-data       [0] OCTET STRING,
  *         timestamp       [1] KerberosTime OPTIONAL,
@@ -48,7 +48,7 @@
  *         s-address       [4] HostAddress,
  *         r-address       [5] HostAddress OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KerberosTime.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KerberosTime.java	Mon Aug 03 16:33:06 2015 -0700
@@ -46,9 +46,7 @@
 /**
  * Implements the ASN.1 KerberosTime type. This is an immutable class.
  *
- * <xmp>
- * KerberosTime    ::= GeneralizedTime -- with no fractional seconds
- * </xmp>
+ * {@code KerberosTime ::= GeneralizedTime} -- with no fractional seconds
  *
  * The timestamps used in Kerberos are encoded as GeneralizedTimes. A
  * KerberosTime value shall not include any fractional portions of the
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KrbCredInfo.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/KrbCredInfo.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,7 +38,7 @@
 /**
  * Implements the ASN.1 KrbCredInfo type.
  *
- * <xmp>
+ * <pre>{@code
  * KrbCredInfo  ::= SEQUENCE {
  *      key             [0] EncryptionKey,
  *      prealm          [1] Realm OPTIONAL,
@@ -52,7 +52,7 @@
  *      sname           [9] PrincipalName OPTIONAL,
  *      caddr           [10] HostAddresses OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/LastReq.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/LastReq.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,12 +38,12 @@
 /**
  * Implements the ASN.1 LastReq type.
  *
- * <xmp>
+ * <pre>{@code
  * LastReq         ::=     SEQUENCE OF SEQUENCE {
  *         lr-type         [0] Int32,
  *         lr-value        [1] KerberosTime
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/LoginOptions.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/LoginOptions.java	Mon Aug 03 16:33:06 2015 -0700
@@ -36,7 +36,7 @@
 /**
  * Implements the ASN.1 KDCOptions type.
  *
- * <xmp>
+ * <pre>{@code
  * KDCOptions   ::= KerberosFlags
  *      -- reserved(0),
  *      -- forwardable(1),
@@ -64,7 +64,7 @@
  * KerberosFlags ::= BIT STRING (SIZE (32..MAX))
  *                   -- minimum number of bits shall be sent,
  *                   -- but no fewer than 32
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/MethodData.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/MethodData.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,12 +38,12 @@
 /**
  * Implements the ASN.1 EncKrbPrivPart type.
  *
- * <xmp>
+ * <pre>{@code
  *     METHOD-DATA ::=    SEQUENCE {
  *                        method-type[0]   INTEGER,
  *                        method-data[1]   OCTET STRING OPTIONAL
  *  }
- * </xmp>
+ * }</pre>
  */
 public class MethodData {
     private int methodType;
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/PAData.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/PAData.java	Mon Aug 03 16:33:06 2015 -0700
@@ -39,13 +39,13 @@
 /**
  * Implements the ASN.1 PA-DATA type.
  *
- * <xmp>
+ * <pre>{@code
  * PA-DATA         ::= SEQUENCE {
  *         -- NOTE: first tag is [1], not [0]
  *         padata-type     [1] Int32,
  *         padata-value    [2] OCTET STRING -- might be encoded AP-REQ
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
@@ -140,11 +140,14 @@
 
     /**
      * Gets the preferred etype from the PAData array.
-     * 1. ETYPE-INFO2-ENTRY with unknown s2kparams ignored
-     * 2. ETYPE-INFO2 preferred to ETYPE-INFO
-     * 3. multiple entries for same etype in one PA-DATA, use the first one.
-     * 4. Multiple PA-DATA with same type, choose the last one
+     * <ol>
+     * <li>ETYPE-INFO2-ENTRY with unknown s2kparams ignored</li>
+     * <li>ETYPE-INFO2 preferred to ETYPE-INFO</li>
+     * <li>Multiple entries for same etype in one PA-DATA, use the first one.</li>
+     * <li>Multiple PA-DATA with same type, choose the last one.</li>
+     * </ol>
      * (This is useful when PA-DATAs from KRB-ERROR and AS-REP are combined).
+     *
      * @return the etype, or defaultEType if not enough info
      * @throws Asn1Exception|IOException if there is an encoding error
      */
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/PAEncTSEnc.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/PAEncTSEnc.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,12 +38,12 @@
 /**
  * Implements the ASN.1 PAEncTSEnc type.
  *
- * <xmp>
+ * <pre>{@code
  * PA-ENC-TS-ENC                ::= SEQUENCE {
  *      patimestamp     [0] KerberosTime -- client's time --,
  *      pausec          [1] Microseconds OPTIONAL
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/PAForUserEnc.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/PAForUserEnc.java	Mon Aug 03 16:33:06 2015 -0700
@@ -36,7 +36,7 @@
 /**
  * Implements the ASN.1 PA-FOR-USER type.
  *
- * <xmp>
+ * <pre>{@code
  * padata-type  ::= PA-FOR-USER
  *                  -- value 129
  * padata-value ::= EncryptedData
@@ -47,7 +47,7 @@
  *     cksum[2] Checksum,
  *     auth-package[3] KerberosString
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects MS-SFU.
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/Ticket.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/Ticket.java	Mon Aug 03 16:33:06 2015 -0700
@@ -42,14 +42,14 @@
 /**
  * Implements the ASN.1 Ticket type.
  *
- * <xmp>
+ * <pre>{@code
  * Ticket               ::= [APPLICATION 1] SEQUENCE {
  *      tkt-vno         [0] INTEGER (5),
  *      realm           [1] Realm,
  *      sname           [2] PrincipalName,
  *      enc-part        [3] EncryptedData -- EncTicketPart
  * }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/TransitedEncoding.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/TransitedEncoding.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,12 +38,12 @@
 /**
  * Implements the ASN.1 TransitedEncoding type.
  *
- * <xmp>
+ * <pre>{@code
  *  TransitedEncoding      ::= SEQUENCE {
  *         tr-type         [0] Int32 -- must be registered --,
  *         contents        [1] OCTET STRING
  *  }
- * </xmp>
+ * }</pre>
  *
  * <p>
  * This definition reflects the Network Working Group RFC 4120
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/Des.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/Des.java	Mon Aug 03 16:33:06 2015 -0700
@@ -226,7 +226,7 @@
 
     /**
      * Generates DES key from the password.
-     * @param password a char[] used to create the key.
+     * @param passwdChars a char[] used to create the key.
      * @return DES key.
      *
      * @modified by Yanni Zhang, Dec 6, 99
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/DesMacCksumType.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/DesMacCksumType.java	Mon Aug 03 16:33:06 2015 -0700
@@ -125,7 +125,7 @@
      * @param data the data.
      * @param size the length of data.
      * @param key the key used to encrypt the checksum.
-     * @param checksum
+     * @param checksum the checksum.
      * @return true if verification is successful.
      *
      * @modified by Yanni Zhang, 12/08/99.
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacMd5ArcFourCksumType.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacMd5ArcFourCksumType.java	Mon Aug 03 16:33:06 2015 -0700
@@ -95,7 +95,7 @@
      * @param data the data.
      * @param size the length of data.
      * @param key the key used to encrypt the checksum.
-     * @param checksum
+     * @param checksum the checksum.
      * @return true if verification is successful.
      */
     public boolean verifyKeyedChecksum(byte[] data, int size,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacSha1Aes128CksumType.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacSha1Aes128CksumType.java	Mon Aug 03 16:33:06 2015 -0700
@@ -95,7 +95,7 @@
      * @param data the data.
      * @param size the length of data.
      * @param key the key used to encrypt the checksum.
-     * @param checksum
+     * @param checksum the checksum.
      * @return true if verification is successful.
      */
     public boolean verifyKeyedChecksum(byte[] data, int size,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacSha1Aes256CksumType.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacSha1Aes256CksumType.java	Mon Aug 03 16:33:06 2015 -0700
@@ -95,7 +95,7 @@
      * @param data the data.
      * @param size the length of data.
      * @param key the key used to encrypt the checksum.
-     * @param checksum
+     * @param checksum the checksum.
      * @return true if verification is successful.
      */
     public boolean verifyKeyedChecksum(byte[] data, int size,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacSha1Des3KdCksumType.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/HmacSha1Des3KdCksumType.java	Mon Aug 03 16:33:06 2015 -0700
@@ -89,7 +89,7 @@
      * @param data the data.
      * @param size the length of data.
      * @param key the key used to encrypt the checksum.
-     * @param checksum
+     * @param checksum the checksum.
      * @return true if verification is successful.
      */
     public boolean verifyKeyedChecksum(byte[] data, int size,
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/RsaMd5DesCksumType.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/RsaMd5DesCksumType.java	Mon Aug 03 16:33:06 2015 -0700
@@ -120,7 +120,7 @@
      * @param data the data.
      * @param size the length of data.
      * @param key the key used to encrypt the checksum.
-     * @param checksum
+     * @param checksum the checksum.
      * @return true if verification is successful.
      *
      * @modified by Yanni Zhang, 12/08/99.
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Mon Aug 03 16:33:06 2015 -0700
@@ -513,7 +513,7 @@
     /**
      * Creates key table file version.
      * @param file the key table file.
-     * @exception IOException.
+     * @exception IOException
      */
     public synchronized void createVersion(File file) throws IOException {
         try (KeyTabOutputStream kos =
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/rcache/AuthList.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/rcache/AuthList.java	Mon Aug 03 16:33:06 2015 -0700
@@ -45,7 +45,7 @@
  * self-cleanup of expired items in the cache.
  *
  * AuthTimeWithHash objects inside a cache are always sorted from big (new) to
- * small (old) as determined by {@see AuthTimeWithHash#compareTo}. In the most
+ * small (old) as determined by {@link AuthTimeWithHash#compareTo}. In the most
  * common case a newcomer should be newer than the first element.
  *
  * @author Yanni Zhang
--- a/jdk/src/java.security.jgss/windows/classes/sun/security/krb5/internal/tools/Kinit.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/windows/classes/sun/security/krb5/internal/tools/Kinit.java	Mon Aug 03 16:33:06 2015 -0700
@@ -59,26 +59,25 @@
      * We currently support only file-based credentials cache to
      * store the tickets obtained from the KDC.
      * By default, for all Unix platforms a cache file named
-     * /tmp/krb5cc_&lt;uid&gt will be generated. The &lt;uid&gt is the
+     * {@code /tmp/krb5cc_<uid>} will be generated. The {@code <uid>} is the
      * numeric user identifier.
      * For all other platforms, a cache file named
-     * &lt;USER_HOME&gt/krb5cc_&lt;USER_NAME&gt would be generated.
+     * {@code <USER_HOME>/krb5cc_<USER_NAME>} would be generated.
      * <p>
-     * &lt;USER_HOME&gt is obtained from <code>java.lang.System</code>
+     * {@code <USER_HOME>} is obtained from {@code java.lang.System}
      * property <i>user.home</i>.
-     * &lt;USER_NAME&gt is obtained from <code>java.lang.System</code>
+     * {@code <USER_NAME>} is obtained from {@code java.lang.System}
      * property <i>user.name</i>.
-     * If &lt;USER_HOME&gt is null the cache file would be stored in
+     * If {@code <USER_HOME>} is null the cache file would be stored in
      * the current directory that the program is running from.
-     * &lt;USER_NAME&gt is operating system's login username.
+     * {@code <USER_NAME>} is operating system's login username.
      * It could be different from user's principal name.
-     *</p>
-     *<p>
+     * <p>
      * For instance, on Windows NT, it could be
-     * c:\winnt\profiles\duke\krb5cc_duke, in
-     * which duke is the &lt;USER_NAME&gt, and c:\winnt\profile\duke is the
-     * &lt;USER_HOME&gt.
-     *<p>
+     * {@code c:\winnt\profiles\duke\krb5cc_duke}, in
+     * which duke is the {@code <USER_NAME>} and {@code c:\winnt\profile\duke} is the
+     * {@code <USER_HOME>}.
+     * <p>
      * A single user could have multiple principal names,
      * but the primary principal of the credentials cache could only be one,
      * which means one cache file could only store tickets for one
@@ -88,10 +87,8 @@
      * To avoid overwriting, you need to specify
      * a different cache file name when you request a
      * new ticket.
-     *</p>
-     *<p>
+     * <p>
      * You can specify the location of the cache file by using the -c option
-     *
      */
 
     public static void main(String[] args) {
--- a/jdk/src/java.security.jgss/windows/classes/sun/security/krb5/internal/tools/Klist.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.jgss/windows/classes/sun/security/krb5/internal/tools/Klist.java	Mon Aug 03 16:33:06 2015 -0700
@@ -69,8 +69,10 @@
      * <li><b>-n</b>  do not reverse-resolve addresses
      * </ul>
      * available options for keytabs:
+     * <ul>
      * <li><b>-t</b> shows keytab entry timestamps
      * <li><b>-K</b> shows keytab entry DES keys
+     * </ul>
      */
     public static void main(String[] args) {
         Klist klist = new Klist();
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest/FactoryImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest/FactoryImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -60,7 +60,7 @@
      *
      * @throws SaslException If there is an error creating the DigestMD5
      * SASL client.
-     * @returns a new SaslClient ; otherwise null if unsuccessful.
+     * @return a new SaslClient; otherwise null if unsuccessful.
      */
     public SaslClient createSaslClient(String[] mechs,
          String authorizationId, String protocol, String serverName,
@@ -90,7 +90,7 @@
      *
      * @throws SaslException If there is an error creating the DigestMD5
      * SASL server.
-     * @returns a new SaslServer ; otherwise null if unsuccessful.
+     * @return a new SaslServer; otherwise null if unsuccessful.
      */
     public SaslServer createSaslServer(String mech,
          String protocol, String serverName, Map<String,?> props, CallbackHandler cbh)
@@ -114,7 +114,7 @@
     /**
       * Returns the authentication mechanisms that this factory can produce.
       *
-      * @returns String[] {"DigestMD5"} if policies in env match those of this
+      * @return String[] {"DigestMD5"} if policies in env match those of this
       * factory.
       */
     public String[] getMechanismNames(Map<String,?> env) {
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ntlm/FactoryImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ntlm/FactoryImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -57,7 +57,7 @@
     /**
      * Returns a new instance of the NTLM SASL client mechanism.
      * Argument checks are performed in SaslClient's constructor.
-     * @returns a new SaslClient ; otherwise null if unsuccessful.
+     * @return a new SaslClient; otherwise null if unsuccessful.
      * @throws SaslException If there is an error creating the NTLM
      * SASL client.
      */
@@ -86,7 +86,7 @@
     /**
      * Returns a new instance of the NTLM SASL server mechanism.
      * Argument checks are performed in SaslServer's constructor.
-     * @returns a new SaslServer ; otherwise null if unsuccessful.
+     * @return a new SaslServer; otherwise null if unsuccessful.
      * @throws SaslException If there is an error creating the NTLM
      * SASL server.
      */
@@ -116,7 +116,7 @@
     /**
       * Returns the authentication mechanisms that this factory can produce.
       *
-      * @returns String[] {"NTLM"} if policies in env match those of this
+      * @return String[] {"NTLM"} if policies in env match those of this
       * factory.
       */
     public String[] getMechanismNames(Map<String,?> env) {
--- a/jdk/src/java.sql/share/classes/javax/sql/RowSet.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.sql/share/classes/javax/sql/RowSet.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1477,7 +1477,7 @@
 
   /**
      * Sets the designated parameter to a <code>InputStream</code> object.
-     * The "{@code InputStream} must contain  the number
+     * The {@code InputStream} must contain  the number
      * of characters specified by length, otherwise a <code>SQLException</code> will be
      * generated when the <code>CallableStatement</code> is executed.
      * This method differs from the <code>setBinaryStream (int, InputStream, int)</code>
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java	Mon Aug 03 16:33:06 2015 -0700
@@ -41,12 +41,12 @@
  * as defined in the W3C specification for XML-Signature Syntax and Processing.
  * The XML Schema Definition is defined as:
  *
- * <xmp>
+ * <pre>{@code
  * <simpleType name="CryptoBinary">
  *   <restriction base = "base64Binary">
  *   </restriction>
  * </simpleType>
- * </xmp>
+ * }</pre>
  *
  * @author Sean Mullan
  */
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java	Mon Aug 03 16:33:06 2015 -0700
@@ -57,7 +57,7 @@
      * and optional list of external elements.
      *
      * @param keyPacket a PGP Key Material Packet as defined in section 5.5 of
-     *    <a href="http://www.ietf.org/rfc/rfc2440.txt"/>RFC 2440</a>. The
+     *    <a href="http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>. The
      *    array is cloned to prevent subsequent modification.
      * @param other a list of {@link XMLStructure}s representing elements from
      *    an external namespace. The list is defensively copied to prevent
@@ -90,10 +90,10 @@
      * optional key packet and list of external elements.
      *
      * @param keyId a PGP public key id as defined in section 11.2 of
-     *    <a href="http://www.ietf.org/rfc/rfc2440.txt"/>RFC 2440</a>. The
+     *    <a href="http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>. The
      *    array is cloned to prevent subsequent modification.
      * @param keyPacket a PGP Key Material Packet as defined in section 5.5 of
-     *    <a href="http://www.ietf.org/rfc/rfc2440.txt"/>RFC 2440</a> (may
+     *    <a href="http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a> (may
      *    be <code>null</code>). The array is cloned to prevent subsequent
      *    modification.
      * @param other a list of {@link XMLStructure}s representing elements from
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java	Mon Aug 03 16:33:06 2015 -0700
@@ -118,7 +118,6 @@
      *    is defensively copied to protect against subsequent modification.
      *    May be <code>null</code> or empty.
      * @param id the reference ID (may be <code>null</code>)
-     * @return a <code>Reference</code>
      * @throws NullPointerException if <code>dm</code> is <code>null</code>
      * @throws ClassCastException if any of the <code>transforms</code> are
      *    not of type <code>Transform</code>
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java	Mon Aug 03 16:33:06 2015 -0700
@@ -58,7 +58,6 @@
      * @param properties a list of one or more {@link SignatureProperty}s. The
      *    list is defensively copied to protect against subsequent modification.
      * @param id the Id (may be <code>null</code>)
-     * @return a <code>DOMSignatureProperties</code>
      * @throws ClassCastException if <code>properties</code> contains any
      *    entries that are not of type {@link SignatureProperty}
      * @throws IllegalArgumentException if <code>properties</code> is empty
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java	Mon Aug 03 16:33:06 2015 -0700
@@ -59,7 +59,6 @@
      *    is defensively copied to protect against subsequent modification.
      * @param target the target URI
      * @param id the Id (may be <code>null</code>)
-     * @return a <code>SignatureProperty</code>
      * @throws ClassCastException if <code>content</code> contains any
      *    entries that are not of type {@link XMLStructure}
      * @throws IllegalArgumentException if <code>content</code> is empty
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java	Mon Aug 03 16:33:06 2015 -0700
@@ -53,7 +53,7 @@
     protected TransformService spi;
 
     /**
-     * Creates a <code>DOMTransform</code>.
+     * Creates a {@code DOMTransform}.
      *
      * @param spi the TransformService
      */
@@ -62,7 +62,7 @@
     }
 
     /**
-     * Creates a <code>DOMTransform</code> from an element. This constructor
+     * Creates a {@code DOMTransform} from an element. This constructor
      * invokes the abstract {@link #unmarshalParams unmarshalParams} method to
      * unmarshal any algorithm-specific input parameters.
      *
@@ -138,12 +138,12 @@
      * Transforms the specified data using the underlying transform algorithm.
      *
      * @param data the data to be transformed
-     * @param sc the <code>XMLCryptoContext</code> containing
-     *    additional context (may be <code>null</code> if not applicable)
+     * @param xc the {@code XMLCryptoContext} containing
+     *     additional context (may be {@code null} if not applicable)
      * @return the transformed data
-     * @throws NullPointerException if <code>data</code> is <code>null</code>
+     * @throws NullPointerException if {@code data} is {@code null}
      * @throws XMLSignatureException if an unexpected error occurs while
-     *    executing the transform
+     *     executing the transform
      */
     public Data transform(Data data, XMLCryptoContext xc)
         throws TransformException
@@ -155,14 +155,14 @@
      * Transforms the specified data using the underlying transform algorithm.
      *
      * @param data the data to be transformed
-     * @param sc the <code>XMLCryptoContext</code> containing
-     *    additional context (may be <code>null</code> if not applicable)
-     * @param os the <code>OutputStream</code> that should be used to write
-     *    the transformed data to
+     * @param xc the {@code XMLCryptoContext} containing
+     *     additional context (may be {@code null} if not applicable)
+     * @param os the {@code OutputStream} that should be used to write
+     *     the transformed data to
      * @return the transformed data
-     * @throws NullPointerException if <code>data</code> is <code>null</code>
+     * @throws NullPointerException if {@code data} is {@code null}
      * @throws XMLSignatureException if an unexpected error occurs while
-     *    executing the transform
+     *     executing the transform
      */
     public Data transform(Data data, XMLCryptoContext xc, OutputStream os)
         throws TransformException
@@ -201,16 +201,16 @@
     /**
      * Transforms the specified data using the underlying transform algorithm.
      * This method invokes the {@link #marshal marshal} method and passes it
-     * the specified <code>DOMSignContext</code> before transforming the data.
+     * the specified {@code DOMSignContext} before transforming the data.
      *
      * @param data the data to be transformed
-     * @param sc the <code>XMLCryptoContext</code> containing
-     *    additional context (may be <code>null</code> if not applicable)
+     * @param sc the {@code XMLCryptoContext} containing
+     *    additional context (may be {@code null} if not applicable)
      * @param context the marshalling context
      * @return the transformed data
      * @throws MarshalException if an exception occurs while marshalling
-     * @throws NullPointerException if <code>data</code> or <code>context</code>
-     *    is <code>null</code>
+     * @throws NullPointerException if {@code data} or {@code context}
+     *    is {@code null}
      * @throws XMLSignatureException if an unexpected error occurs while
      *    executing the transform
      */
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java	Mon Aug 03 16:33:06 2015 -0700
@@ -65,7 +65,6 @@
      *    or {@link javax.xml.dsig.XMLStructure} ({@link X509IssuerSerial}
      *    objects or elements from an external namespace). The list is
      *    defensively copied to protect against subsequent modification.
-     * @return a <code>X509Data</code>
      * @throws NullPointerException if <code>content</code> is <code>null</code>
      * @throws IllegalArgumentException if <code>content</code> is empty
      * @throws ClassCastException if <code>content</code> contains any entries
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java	Mon Aug 03 16:33:06 2015 -0700
@@ -63,7 +63,6 @@
      * @param id the Id (may be <code>null</code>)
      * @param mimeType the mime type (may be <code>null</code>)
      * @param encoding the encoding (may be <code>null</code>)
-     * @return an <code>XMLObject</code>
      * @throws ClassCastException if <code>content</code> contains any
      *    entries that are not of type {@link XMLStructure}
      */
--- a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/GB18030.java	Mon Aug 03 15:48:33 2015 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12778 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import sun.nio.cs.Surrogate;
-
-public class GB18030
-    extends Charset
-{
-    private static final int GB18030_SINGLE_BYTE = 1;
-    private static final int GB18030_DOUBLE_BYTE = 2;
-    private static final int GB18030_FOUR_BYTE = 3;
-
-    public GB18030() {
-        super("GB18030", ExtendedCharsets.aliasesFor("GB18030"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs.name().equals("GBK"))
-                || (cs.name().equals("ISO-8859-1"))
-                || (cs.name().equals("ISO-8859-2"))
-                || (cs.name().equals("ISO-8859-3"))
-                || (cs.name().equals("ISO-8859-4"))
-                || (cs.name().equals("ISO-8859-5"))
-                || (cs.name().equals("ISO-8859-6"))
-                || (cs.name().equals("ISO-8859-7"))
-                || (cs.name().equals("ISO-8859-8"))
-                || (cs.name().equals("ISO-8859-9"))
-                || (cs.name().equals("ISO-8859-13"))
-                || (cs.name().equals("UTF-8"))
-                || (cs.name().equals("UTF-16"))
-                || (cs.name().equals("UTF-16LE"))
-                || (cs.name().equals("UTF-16BE"))
-                || (cs.name().equals("ISO-8859-15"))
-                || (cs.name().equals("windows-1251"))
-                || (cs.name().equals("windows-1252"))
-                || (cs.name().equals("windows-1253"))
-                || (cs.name().equals("windows-1254"))
-                || (cs.name().equals("windows-1255"))
-                || (cs.name().equals("windows-1256"))
-                || (cs.name().equals("windows-1257"))
-                || (cs.name().equals("windows-1258"))
-                || (cs.name().equals("windows-932"))
-                || (cs.name().equals("x-mswin-936"))
-                || (cs.name().equals("x-windows-949"))
-                || (cs.name().equals("x-windows-950"))
-                || (cs.name().equals("windows-31j"))
-                || (cs.name().equals("JIS_X0201"))
-                || (cs.name().equals("JIS_X0208-1990"))
-                || (cs.name().equals("JIS_X0212"))
-                || (cs.name().equals("Shift_JIS"))
-                || (cs.name().equals("GB2312"))
-                || (cs.name().equals("EUC-KR"))
-                || (cs.name().equals("x-EUC-TW"))
-                || (cs.name().equals("EUC-JP"))
-                || (cs.name().equals("euc-jp-linux"))
-                || (cs.name().equals("KOI8-R"))
-                || (cs.name().equals("TIS-620"))
-                || (cs.name().equals("x-ISCII91"))
-                || (cs.name().equals("Big5"))
-                || (cs.name().equals("Big5-HKSCS"))
-                || (cs.name().equals("x-MS950-HKSCS"))
-                || (cs.name().equals("ISO-2022-JP"))
-                || (cs.name().equals("ISO-2022-KR"))
-                || (cs.name().equals("x-ISO-2022-CN-CNS"))
-                || (cs.name().equals("x-ISO-2022-CN-GB"))
-                || (cs.name().equals("x-Johab"))
-                || (cs instanceof GB18030));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    private final static String innerDecoderIndex0=
-        "\u0080"+
-        "\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088"+
-        "\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090"+
-        "\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098"+
-        "\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0"+
-        "\u00A1\u00A2\u00A3\u00A5\u00A6\u00A9\u00AA\u00AB"+
-        "\u00AC\u00AD\u00AE\u00AF\u00B2\u00B3\u00B4\u00B5"+
-        "\u00B6\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE"+
-        "\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6"+
-        "\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE"+
-        "\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6"+
-        "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF"+
-        "\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00EB\u00EE"+
-        "\u00EF\u00F0\u00F1\u00F4\u00F5\u00F6\u00F8\u00FB"+
-        "\u00FD\u00FE\u00FF\u0100\u0102\u0103\u0104\u0105"+
-        "\u0106\u0107\u0108\u0109\u010A\u010B\u010C\u010D"+
-        "\u010E\u010F\u0110\u0111\u0112\u0114\u0115\u0116"+
-        "\u0117\u0118\u0119\u011A\u011C\u011D\u011E\u011F"+
-        "\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127"+
-        "\u0128\u0129\u012A\u012C\u012D\u012E\u012F\u0130"+
-        "\u0131\u0132\u0133\u0134\u0135\u0136\u0137\u0138"+
-        "\u0139\u013A\u013B\u013C\u013D\u013E\u013F\u0140"+
-        "\u0141\u0142\u0143\u0145\u0146\u0147\u0149\u014A"+
-        "\u014B\u014C\u014E\u014F\u0150\u0151\u0152\u0153"+
-        "\u0154\u0155\u0156\u0157\u0158\u0159\u015A\u015B"+
-        "\u015C\u015D\u015E\u015F\u0160\u0161\u0162\u0163"+
-        "\u0164\u0165\u0166\u0167\u0168\u0169\u016A\u016C"+
-        "\u016D\u016E\u016F\u0170\u0171\u0172\u0173\u0174"+
-        "\u0175\u0176\u0177\u0178\u0179\u017A\u017B\u017C"+
-        "\u017D\u017E\u017F\u0180\u0181\u0182\u0183\u0184"+
-        "\u0185\u0186\u0187\u0188\u0189\u018A\u018B\u018C"+
-        "\u018D\u018E\u018F\u0190\u0191\u0192\u0193\u0194"+
-        "\u0195\u0196\u0197\u0198\u0199\u019A\u019B"+
-        "\u019C\u019D\u019E\u019F\u01A0\u01A1\u01A2\u01A3"+
-        "\u01A4\u01A5\u01A6\u01A7\u01A8\u01A9\u01AA\u01AB"+
-        "\u01AC\u01AD\u01AE\u01AF\u01B0\u01B1\u01B2\u01B3"+
-        "\u01B4\u01B5\u01B6\u01B7\u01B8\u01B9\u01BA\u01BB"+
-        "\u01BC\u01BD\u01BE\u01BF\u01C0\u01C1\u01C2\u01C3"+
-        "\u01C4\u01C5\u01C6\u01C7\u01C8\u01C9\u01CA\u01CB"+
-        "\u01CC\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9"+
-        "\u01DB\u01DD\u01DE\u01DF\u01E0\u01E1\u01E2\u01E3"+
-        "\u01E4\u01E5\u01E6\u01E7\u01E8\u01E9\u01EA\u01EB"+
-        "\u01EC\u01ED\u01EE\u01EF\u01F0\u01F1\u01F2\u01F3"+
-        "\u01F4\u01F5\u01F6\u01F7\u01F8\u01FA\u01FB\u01FC"+
-        "\u01FD\u01FE\u01FF\u0200\u0201\u0202\u0203\u0204"+
-        "\u0205\u0206\u0207\u0208\u0209\u020A\u020B\u020C"+
-        "\u020D\u020E\u020F\u0210\u0211\u0212\u0213\u0214"+
-        "\u0215\u0216\u0217\u0218\u0219\u021A\u021B\u021C"+
-        "\u021D\u021E\u021F\u0220\u0221\u0222\u0223\u0224"+
-        "\u0225\u0226\u0227\u0228\u0229\u022A\u022B\u022C"+
-        "\u022D\u022E\u022F\u0230\u0231\u0232\u0233\u0234"+
-        "\u0235\u0236\u0237\u0238\u0239\u023A\u023B\u023C"+
-        "\u023D\u023E\u023F\u0240\u0241\u0242\u0243\u0244"+
-        "\u0245\u0246\u0247\u0248\u0249\u024A\u024B\u024C"+
-        "\u024D\u024E\u024F\u0250\u0252\u0253\u0254\u0255"+
-        "\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D"+
-        "\u025E\u025F\u0260\u0262\u0263\u0264\u0265\u0266"+
-        "\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E"+
-        "\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276"+
-        "\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E"+
-        "\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286"+
-        "\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E"+
-        "\u028F\u0290\u0291\u0292\u0293\u0294\u0295\u0296"+
-        "\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E"+
-        "\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6"+
-        "\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE"+
-        "\u02AF\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6"+
-        "\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE"+
-        "\u02BF\u02C0\u02C1\u02C2\u02C3\u02C4\u02C5\u02C6"+
-        "\u02C8\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02D2"+
-        "\u02D3\u02D4\u02D5\u02D6\u02D7\u02D8\u02DA\u02DB"+
-        "\u02DC\u02DD\u02DE\u02DF\u02E0\u02E1\u02E2\u02E3"+
-        "\u02E4\u02E5\u02E6\u02E7\u02E8\u02E9\u02EA\u02EB"+
-        "\u02EC\u02ED\u02EE\u02EF\u02F0\u02F1\u02F2\u02F3"+
-        "\u02F4\u02F5\u02F6\u02F7\u02F8\u02F9\u02FA\u02FB"+
-        "\u02FC\u02FD\u02FE\u02FF\u0300\u0301\u0302\u0303"+
-        "\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B"+
-        "\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313"+
-        "\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B"+
-        "\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323"+
-        "\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B"+
-        "\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333"+
-        "\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B"+
-        "\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343"+
-        "\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B"+
-        "\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353"+
-        "\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B"+
-        "\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363"+
-        "\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B"+
-        "\u036C\u036D\u036E\u036F\u0370\u0371\u0372\u0373"+
-        "\u0374\u0375\u0376\u0377\u0378\u0379\u037A\u037B"+
-        "\u037C\u037D\u037E\u037F\u0380\u0381\u0382\u0383"+
-        "\u0384\u0385\u0386\u0387\u0388\u0389\u038A\u038B"+
-        "\u038C\u038D\u038E\u038F\u0390\u03A2\u03AA\u03AB"+
-        "\u03AC\u03AD\u03AE\u03AF\u03B0\u03C2\u03CA\u03CB"+
-        "\u03CC\u03CD\u03CE\u03CF\u03D0\u03D1\u03D2\u03D3"+
-        "\u03D4\u03D5\u03D6\u03D7\u03D8\u03D9\u03DA\u03DB"+
-        "\u03DC\u03DD\u03DE\u03DF\u03E0\u03E1\u03E2\u03E3"+
-        "\u03E4\u03E5\u03E6\u03E7\u03E8\u03E9\u03EA\u03EB"+
-        "\u03EC\u03ED\u03EE\u03EF\u03F0\u03F1\u03F2\u03F3"+
-        "\u03F4\u03F5\u03F6\u03F7\u03F8\u03F9\u03FA\u03FB"+
-        "\u03FC\u03FD\u03FE\u03FF\u0400\u0402\u0403\u0404"+
-        "\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C"+
-        "\u040D\u040E\u040F\u0450\u0452\u0453\u0454\u0455"+
-        "\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D"+
-        "\u045E\u045F\u0460\u0461\u0462\u0463\u0464\u0465"+
-        "\u0466\u0467\u0468\u0469\u046A\u046B\u046C\u046D"+
-        "\u046E\u046F\u0470\u0471\u0472\u0473\u0474\u0475"+
-        "\u0476\u0477\u0478\u0479\u047A\u047B\u047C\u047D"+
-        "\u047E\u047F\u0480\u0481\u0482\u0483\u0484\u0485"+
-        "\u0486\u0487\u0488\u0489\u048A\u048B\u048C\u048D"+
-        "\u048E\u048F\u0490\u0491\u0492\u0493\u0494\u0495"+
-        "\u0496\u0497\u0498\u0499\u049A\u049B\u049C\u049D"+
-        "\u049E\u049F\u04A0\u04A1\u04A2\u04A3\u04A4\u04A5"+
-        "\u04A6\u04A7\u04A8\u04A9\u04AA\u04AB\u04AC\u04AD"+
-        "\u04AE\u04AF\u04B0\u04B1\u04B2\u04B3\u04B4\u04B5"+
-        "\u04B6\u04B7\u04B8\u04B9\u04BA\u04BB\u04BC\u04BD"+
-        "\u04BE\u04BF\u04C0\u04C1\u04C2\u04C3\u04C4\u04C5"+
-        "\u04C6\u04C7\u04C8\u04C9\u04CA\u04CB\u04CC\u04CD"+
-        "\u04CE\u04CF\u04D0\u04D1\u04D2\u04D3\u04D4\u04D5"+
-        "\u04D6\u04D7\u04D8\u04D9\u04DA\u04DB\u04DC\u04DD"+
-        "\u04DE\u04DF\u04E0\u04E1\u04E2\u04E3\u04E4\u04E5"+
-        "\u04E6\u04E7\u04E8\u04E9\u04EA\u04EB\u04EC\u04ED"+
-        "\u04EE\u04EF\u04F0\u04F1\u04F2\u04F3\u04F4\u04F5"+
-        "\u04F6\u04F7\u04F8\u04F9\u04FA\u04FB\u04FC\u04FD"+
-        "\u04FE\u04FF\u0500\u0501\u0502\u0503\u0504\u0505"+
-        "\u0506\u0507\u0508\u0509\u050A\u050B\u050C\u050D"+
-        "\u050E\u050F\u0510\u0511\u0512\u0513\u0514\u0515"+
-        "\u0516\u0517\u0518\u0519\u051A\u051B\u051C\u051D"+
-        "\u051E\u051F\u0520\u0521\u0522\u0523\u0524\u0525"+
-        "\u0526\u0527\u0528\u0529\u052A\u052B\u052C\u052D"+
-        "\u052E\u052F\u0530\u0531\u0532\u0533\u0534\u0535"+
-        "\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D"+
-        "\u053E\u053F\u0540\u0541\u0542\u0543\u0544\u0545"+
-        "\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D"+
-        "\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555"+
-        "\u0556\u0557\u0558\u0559\u055A\u055B\u055C\u055D"+
-        "\u055E\u055F\u0560\u0561\u0562\u0563\u0564\u0565"+
-        "\u0566\u0567\u0568\u0569\u056A\u056B\u056C\u056D"+
-        "\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575"+
-        "\u0576\u0577\u0578\u0579\u057A\u057B\u057C\u057D"+
-        "\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585"+
-        "\u0586\u0587\u0588\u0589\u058A\u058B\u058C\u058D"+
-        "\u058E\u058F\u0590\u0591\u0592\u0593\u0594\u0595"+
-        "\u0596\u0597\u0598\u0599\u059A\u059B\u059C\u059D"+
-        "\u059E\u059F\u05A0\u05A1\u05A2\u05A3\u05A4\u05A5"+
-        "\u05A6\u05A7\u05A8\u05A9\u05AA\u05AB\u05AC\u05AD"+
-        "\u05AE\u05AF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5"+
-        "\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD"+
-        "\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05C4\u05C5"+
-        "\u05C6\u05C7\u05C8\u05C9\u05CA\u05CB\u05CC\u05CD"+
-        "\u05CE\u05CF\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5"+
-        "\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD"+
-        "\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5"+
-        "\u05E6\u05E7\u05E8\u05E9\u05EA\u05EB\u05EC\u05ED"+
-        "\u05EE\u05EF\u05F0\u05F1\u05F2\u05F3\u05F4\u05F5"+
-        "\u05F6\u05F7\u05F8\u05F9\u05FA\u05FB\u05FC\u05FD"+
-        "\u05FE\u05FF\u0600\u0601\u0602\u0603\u0604\u0605"+
-        "\u0606\u0607\u0608\u0609\u060A\u060B\u060C\u060D"+
-        "\u060E\u060F\u0610\u0611\u0612\u0613\u0614\u0615"+
-        "\u0616\u0617\u0618\u0619\u061A\u061B\u061C\u061D"+
-        "\u061E\u061F\u0620\u0621\u0622\u0623\u0624\u0625"+
-        "\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D"+
-        "\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635"+
-        "\u0636\u0637\u0638\u0639\u063A\u063B\u063C\u063D"+
-        "\u063E\u063F\u0640\u0641\u0642\u0643\u0644\u0645"+
-        "\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D"+
-        "\u064E\u064F\u0650\u0651\u0652\u0653\u0654\u0655"+
-        "\u0656\u0657\u0658\u0659\u065A\u065B\u065C\u065D"+
-        "\u065E\u065F\u0660\u0661\u0662\u0663\u0664\u0665"+
-        "\u0666\u0667\u0668\u0669\u066A\u066B\u066C\u066D"+
-        "\u066E\u066F\u0670\u0671\u0672\u0673\u0674\u0675"+
-        "\u0676\u0677\u0678\u0679\u067A\u067B\u067C\u067D"+
-        "\u067E\u067F\u0680\u0681\u0682\u0683\u0684\u0685"+
-        "\u0686\u0687\u0688\u0689\u068A\u068B\u068C\u068D"+
-        "\u068E\u068F\u0690\u0691\u0692\u0693\u0694\u0695"+
-        "\u0696\u0697\u0698\u0699\u069A\u069B\u069C\u069D"+
-        "\u069E\u069F\u06A0\u06A1\u06A2\u06A3\u06A4\u06A5"+
-        "\u06A6\u06A7\u06A8\u06A9\u06AA\u06AB\u06AC\u06AD"+
-        "\u06AE\u06AF\u06B0\u06B1\u06B2\u06B3\u06B4\u06B5"+
-        "\u06B6\u06B7\u06B8\u06B9\u06BA\u06BB\u06BC\u06BD"+
-        "\u06BE\u06BF\u06C0\u06C1\u06C2\u06C3\u06C4\u06C5"+
-        "\u06C6\u06C7\u06C8\u06C9\u06CA\u06CB\u06CC\u06CD"+
-        "\u06CE\u06CF\u06D0\u06D1\u06D2\u06D3\u06D4\u06D5"+
-        "\u06D6\u06D7\u06D8\u06D9\u06DA\u06DB\u06DC\u06DD"+
-        "\u06DE\u06DF\u06E0\u06E1\u06E2\u06E3\u06E4\u06E5"+
-        "\u06E6\u06E7\u06E8\u06E9\u06EA\u06EB\u06EC\u06ED"+
-        "\u06EE\u06EF\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5"+
-        "\u06F6\u06F7\u06F8\u06F9\u06FA\u06FB\u06FC\u06FD"+
-        "\u06FE\u06FF\u0700\u0701\u0702\u0703\u0704\u0705"+
-        "\u0706\u0707\u0708\u0709\u070A\u070B\u070C\u070D"+
-        "\u070E\u070F\u0710\u0711\u0712\u0713\u0714\u0715"+
-        "\u0716\u0717\u0718\u0719\u071A\u071B\u071C\u071D"+
-        "\u071E\u071F\u0720\u0721\u0722\u0723\u0724\u0725"+
-        "\u0726\u0727\u0728\u0729\u072A\u072B\u072C\u072D"+
-        "\u072E\u072F\u0730\u0731\u0732\u0733\u0734\u0735"+
-        "\u0736\u0737\u0738\u0739\u073A\u073B\u073C\u073D"+
-        "\u073E\u073F\u0740\u0741\u0742\u0743\u0744\u0745"+
-        "\u0746\u0747\u0748\u0749\u074A\u074B\u074C\u074D"+
-        "\u074E\u074F\u0750\u0751\u0752\u0753\u0754\u0755"+
-        "\u0756\u0757\u0758\u0759\u075A\u075B\u075C\u075D"+
-        "\u075E\u075F\u0760\u0761\u0762\u0763\u0764\u0765"+
-        "\u0766\u0767\u0768\u0769\u076A\u076B\u076C\u076D"+
-        "\u076E\u076F\u0770\u0771\u0772\u0773\u0774\u0775"+
-        "\u0776\u0777\u0778\u0779\u077A\u077B\u077C\u077D"+
-        "\u077E\u077F\u0780\u0781\u0782\u0783\u0784\u0785"+
-        "\u0786\u0787\u0788\u0789\u078A\u078B\u078C\u078D"+
-        "\u078E\u078F\u0790\u0791\u0792\u0793\u0794\u0795"+
-        "\u0796\u0797\u0798\u0799\u079A\u079B\u079C\u079D"+
-        "\u079E\u079F\u07A0\u07A1\u07A2\u07A3\u07A4\u07A5"+
-        "\u07A6\u07A7\u07A8\u07A9\u07AA\u07AB\u07AC\u07AD"+
-        "\u07AE\u07AF\u07B0\u07B1\u07B2\u07B3\u07B4\u07B5"+
-        "\u07B6\u07B7\u07B8\u07B9\u07BA\u07BB\u07BC\u07BD"+
-        "\u07BE\u07BF\u07C0\u07C1\u07C2\u07C3\u07C4\u07C5"+
-        "\u07C6\u07C7\u07C8\u07C9\u07CA\u07CB\u07CC\u07CD"+
-        "\u07CE\u07CF\u07D0\u07D1\u07D2\u07D3\u07D4\u07D5"+
-        "\u07D6\u07D7\u07D8\u07D9\u07DA\u07DB\u07DC\u07DD"+
-        "\u07DE\u07DF\u07E0\u07E1\u07E2\u07E3\u07E4\u07E5"+
-        "\u07E6\u07E7\u07E8\u07E9\u07EA\u07EB\u07EC\u07ED"+
-        "\u07EE\u07EF\u07F0\u07F1\u07F2\u07F3\u07F4\u07F5"+
-        "\u07F6\u07F7\u07F8\u07F9\u07FA\u07FB\u07FC\u07FD"+
-        "\u07FE\u07FF\u0800\u0801\u0802\u0803\u0804\u0805"+
-        "\u0806\u0807\u0808\u0809\u080A\u080B\u080C\u080D"+
-        "\u080E\u080F\u0810\u0811\u0812\u0813\u0814\u0815"+
-        "\u0816\u0817\u0818\u0819\u081A\u081B\u081C\u081D"+
-        "\u081E\u081F\u0820\u0821\u0822\u0823\u0824\u0825"+
-        "\u0826\u0827\u0828\u0829\u082A\u082B\u082C\u082D"+
-        "\u082E\u082F\u0830\u0831\u0832\u0833\u0834\u0835"+
-        "\u0836\u0837\u0838\u0839\u083A\u083B\u083C\u083D"+
-        "\u083E\u083F\u0840\u0841\u0842\u0843\u0844\u0845"+
-        "\u0846\u0847\u0848\u0849\u084A\u084B\u084C\u084D"+
-        "\u084E\u084F\u0850\u0851\u0852\u0853\u0854\u0855"+
-        "\u0856\u0857\u0858\u0859\u085A\u085B\u085C\u085D"+
-        "\u085E\u085F\u0860\u0861\u0862\u0863\u0864\u0865"+
-        "\u0866\u0867\u0868\u0869\u086A\u086B\u086C\u086D"+
-        "\u086E\u086F\u0870\u0871\u0872\u0873\u0874\u0875"+
-        "\u0876\u0877\u0878\u0879\u087A\u087B\u087C\u087D"+
-        "\u087E\u087F\u0880\u0881\u0882\u0883\u0884\u0885"+
-        "\u0886\u0887\u0888\u0889\u088A\u088B\u088C\u088D"+
-        "\u088E\u088F\u0890\u0891\u0892\u0893\u0894\u0895"+
-        "\u0896\u0897\u0898\u0899\u089A\u089B\u089C\u089D"+
-        "\u089E\u089F\u08A0\u08A1\u08A2\u08A3\u08A4\u08A5"+
-        "\u08A6\u08A7\u08A8\u08A9\u08AA\u08AB\u08AC\u08AD"+
-        "\u08AE\u08AF\u08B0\u08B1\u08B2\u08B3\u08B4\u08B5"+
-        "\u08B6\u08B7\u08B8\u08B9\u08BA\u08BB\u08BC\u08BD"+
-        "\u08BE\u08BF\u08C0\u08C1\u08C2\u08C3\u08C4\u08C5"+
-        "\u08C6\u08C7\u08C8\u08C9\u08CA\u08CB\u08CC\u08CD"+
-        "\u08CE\u08CF\u08D0\u08D1\u08D2\u08D3\u08D4\u08D5"+
-        "\u08D6\u08D7\u08D8\u08D9\u08DA\u08DB\u08DC\u08DD"+
-        "\u08DE\u08DF\u08E0\u08E1\u08E2\u08E3\u08E4\u08E5"+
-        "\u08E6\u08E7\u08E8\u08E9\u08EA\u08EB\u08EC\u08ED"+
-        "\u08EE\u08EF\u08F0\u08F1\u08F2\u08F3\u08F4\u08F5"+
-        "\u08F6\u08F7\u08F8\u08F9\u08FA\u08FB\u08FC\u08FD"+
-        "\u08FE\u08FF\u0900\u0901\u0902\u0903\u0904\u0905"+
-        "\u0906\u0907\u0908\u0909\u090A\u090B\u090C\u090D"+
-        "\u090E\u090F\u0910\u0911\u0912\u0913\u0914\u0915"+
-        "\u0916\u0917\u0918\u0919\u091A\u091B\u091C\u091D"+
-        "\u091E\u091F\u0920\u0921\u0922\u0923\u0924\u0925"+
-        "\u0926\u0927\u0928\u0929\u092A\u092B\u092C\u092D"+
-        "\u092E\u092F\u0930\u0931\u0932\u0933\u0934\u0935"+
-        "\u0936\u0937\u0938\u0939\u093A\u093B\u093C\u093D"+
-        "\u093E\u093F\u0940\u0941\u0942\u0943\u0944\u0945"+
-        "\u0946\u0947\u0948\u0949\u094A\u094B\u094C\u094D"+
-        "\u094E\u094F\u0950\u0951\u0952\u0953\u0954\u0955"+
-        "\u0956\u0957\u0958\u0959\u095A\u095B\u095C\u095D"+
-        "\u095E\u095F\u0960\u0961\u0962\u0963\u0964\u0965"+
-        "\u0966\u0967\u0968\u0969\u096A\u096B\u096C\u096D"+
-        "\u096E\u096F\u0970\u0971\u0972\u0973\u0974\u0975"+
-        "\u0976\u0977\u0978\u0979\u097A\u097B\u097C\u097D"+
-        "\u097E\u097F\u0980\u0981\u0982\u0983\u0984\u0985"+
-        "\u0986\u0987\u0988\u0989\u098A\u098B\u098C\u098D"+
-        "\u098E\u098F\u0990\u0991\u0992\u0993\u0994\u0995"+
-        "\u0996\u0997\u0998\u0999\u099A\u099B\u099C\u099D"+
-        "\u099E\u099F\u09A0\u09A1\u09A2\u09A3\u09A4\u09A5"+
-        "\u09A6\u09A7\u09A8\u09A9\u09AA\u09AB\u09AC\u09AD"+
-        "\u09AE\u09AF\u09B0\u09B1\u09B2\u09B3\u09B4\u09B5"+
-        "\u09B6\u09B7\u09B8\u09B9\u09BA\u09BB\u09BC\u09BD"+
-        "\u09BE\u09BF\u09C0\u09C1\u09C2\u09C3\u09C4\u09C5"+
-        "\u09C6\u09C7\u09C8\u09C9\u09CA\u09CB\u09CC\u09CD"+
-        "\u09CE\u09CF\u09D0\u09D1\u09D2\u09D3\u09D4\u09D5"+
-        "\u09D6\u09D7\u09D8\u09D9\u09DA\u09DB\u09DC\u09DD"+
-        "\u09DE\u09DF\u09E0\u09E1\u09E2\u09E3\u09E4\u09E5"+
-        "\u09E6\u09E7\u09E8\u09E9\u09EA\u09EB\u09EC\u09ED"+
-        "\u09EE\u09EF\u09F0\u09F1\u09F2\u09F3\u09F4\u09F5"+
-        "\u09F6\u09F7\u09F8\u09F9\u09FA\u09FB\u09FC\u09FD"+
-        "\u09FE\u09FF\u0A00\u0A01\u0A02\u0A03\u0A04\u0A05"+
-        "\u0A06\u0A07\u0A08\u0A09\u0A0A\u0A0B\u0A0C\u0A0D"+
-        "\u0A0E\u0A0F\u0A10\u0A11\u0A12\u0A13\u0A14\u0A15"+
-        "\u0A16\u0A17\u0A18\u0A19\u0A1A\u0A1B\u0A1C\u0A1D"+
-        "\u0A1E\u0A1F\u0A20\u0A21\u0A22\u0A23\u0A24\u0A25"+
-        "\u0A26\u0A27\u0A28\u0A29\u0A2A\u0A2B\u0A2C\u0A2D"+
-        "\u0A2E\u0A2F\u0A30\u0A31\u0A32\u0A33\u0A34\u0A35"+
-        "\u0A36\u0A37\u0A38\u0A39\u0A3A\u0A3B\u0A3C\u0A3D"+
-        "\u0A3E\u0A3F\u0A40\u0A41\u0A42\u0A43\u0A44\u0A45"+
-        "\u0A46\u0A47\u0A48\u0A49\u0A4A\u0A4B\u0A4C\u0A4D"+
-        "\u0A4E\u0A4F\u0A50\u0A51\u0A52\u0A53\u0A54\u0A55"+
-        "\u0A56\u0A57\u0A58\u0A59\u0A5A\u0A5B\u0A5C\u0A5D"+
-        "\u0A5E\u0A5F\u0A60\u0A61\u0A62\u0A63\u0A64\u0A65"+
-        "\u0A66\u0A67\u0A68\u0A69\u0A6A\u0A6B\u0A6C\u0A6D"+
-        "\u0A6E\u0A6F\u0A70\u0A71\u0A72\u0A73\u0A74\u0A75"+
-        "\u0A76\u0A77\u0A78\u0A79\u0A7A\u0A7B\u0A7C\u0A7D"+
-        "\u0A7E\u0A7F\u0A80\u0A81\u0A82\u0A83\u0A84\u0A85"+
-        "\u0A86\u0A87\u0A88\u0A89\u0A8A\u0A8B\u0A8C\u0A8D"+
-        "\u0A8E\u0A8F\u0A90\u0A91\u0A92\u0A93\u0A94\u0A95"+
-        "\u0A96\u0A97\u0A98\u0A99\u0A9A\u0A9B\u0A9C\u0A9D"+
-        "\u0A9E\u0A9F\u0AA0\u0AA1\u0AA2\u0AA3\u0AA4\u0AA5"+
-        "\u0AA6\u0AA7\u0AA8\u0AA9\u0AAA\u0AAB\u0AAC\u0AAD"+
-        "\u0AAE\u0AAF\u0AB0\u0AB1\u0AB2\u0AB3\u0AB4\u0AB5"+
-        "\u0AB6\u0AB7\u0AB8\u0AB9\u0ABA\u0ABB\u0ABC\u0ABD"+
-        "\u0ABE\u0ABF\u0AC0\u0AC1\u0AC2\u0AC3\u0AC4\u0AC5"+
-        "\u0AC6\u0AC7\u0AC8\u0AC9\u0ACA\u0ACB\u0ACC\u0ACD"+
-        "\u0ACE\u0ACF\u0AD0\u0AD1\u0AD2\u0AD3\u0AD4\u0AD5"+
-        "\u0AD6\u0AD7\u0AD8\u0AD9\u0ADA\u0ADB\u0ADC\u0ADD"+
-        "\u0ADE\u0ADF\u0AE0\u0AE1\u0AE2\u0AE3\u0AE4\u0AE5"+
-        "\u0AE6\u0AE7\u0AE8\u0AE9\u0AEA\u0AEB\u0AEC\u0AED"+
-        "\u0AEE\u0AEF\u0AF0\u0AF1\u0AF2\u0AF3\u0AF4\u0AF5"+
-        "\u0AF6\u0AF7\u0AF8\u0AF9\u0AFA\u0AFB\u0AFC\u0AFD"+
-        "\u0AFE\u0AFF\u0B00\u0B01\u0B02\u0B03\u0B04\u0B05"+
-        "\u0B06\u0B07\u0B08\u0B09\u0B0A\u0B0B\u0B0C\u0B0D"+
-        "\u0B0E\u0B0F\u0B10\u0B11\u0B12\u0B13\u0B14\u0B15"+
-        "\u0B16\u0B17\u0B18\u0B19\u0B1A\u0B1B\u0B1C\u0B1D"+
-        "\u0B1E\u0B1F\u0B20\u0B21\u0B22\u0B23\u0B24\u0B25"+
-        "\u0B26\u0B27\u0B28\u0B29\u0B2A\u0B2B\u0B2C\u0B2D"+
-        "\u0B2E\u0B2F\u0B30\u0B31\u0B32\u0B33\u0B34\u0B35"+
-        "\u0B36\u0B37\u0B38\u0B39\u0B3A\u0B3B\u0B3C\u0B3D"+
-        "\u0B3E\u0B3F\u0B40\u0B41\u0B42\u0B43\u0B44\u0B45"+
-        "\u0B46\u0B47\u0B48\u0B49\u0B4A\u0B4B\u0B4C\u0B4D"+
-        "\u0B4E\u0B4F\u0B50\u0B51\u0B52\u0B53\u0B54\u0B55"+
-        "\u0B56\u0B57\u0B58\u0B59\u0B5A\u0B5B\u0B5C\u0B5D"+
-        "\u0B5E\u0B5F\u0B60\u0B61\u0B62\u0B63\u0B64\u0B65"+
-        "\u0B66\u0B67\u0B68\u0B69\u0B6A\u0B6B\u0B6C\u0B6D"+
-        "\u0B6E\u0B6F\u0B70\u0B71\u0B72\u0B73\u0B74\u0B75"+
-        "\u0B76\u0B77\u0B78\u0B79\u0B7A\u0B7B\u0B7C\u0B7D"+
-        "\u0B7E\u0B7F\u0B80\u0B81\u0B82\u0B83\u0B84\u0B85"+
-        "\u0B86\u0B87\u0B88\u0B89\u0B8A\u0B8B\u0B8C\u0B8D"+
-        "\u0B8E\u0B8F\u0B90\u0B91\u0B92\u0B93\u0B94\u0B95"+
-        "\u0B96\u0B97\u0B98\u0B99\u0B9A\u0B9B\u0B9C\u0B9D"+
-        "\u0B9E\u0B9F\u0BA0\u0BA1\u0BA2\u0BA3\u0BA4\u0BA5"+
-        "\u0BA6\u0BA7\u0BA8\u0BA9\u0BAA\u0BAB\u0BAC\u0BAD"+
-        "\u0BAE\u0BAF\u0BB0\u0BB1\u0BB2\u0BB3\u0BB4\u0BB5"+
-        "\u0BB6\u0BB7\u0BB8\u0BB9\u0BBA\u0BBB\u0BBC\u0BBD"+
-        "\u0BBE\u0BBF\u0BC0\u0BC1\u0BC2\u0BC3\u0BC4\u0BC5"+
-        "\u0BC6\u0BC7\u0BC8\u0BC9\u0BCA\u0BCB\u0BCC\u0BCD"+
-        "\u0BCE\u0BCF\u0BD0\u0BD1\u0BD2\u0BD3\u0BD4\u0BD5"+
-        "\u0BD6\u0BD7\u0BD8\u0BD9\u0BDA\u0BDB\u0BDC\u0BDD"+
-        "\u0BDE\u0BDF\u0BE0\u0BE1\u0BE2\u0BE3\u0BE4\u0BE5"+
-        "\u0BE6\u0BE7\u0BE8\u0BE9\u0BEA\u0BEB\u0BEC\u0BED"+
-        "\u0BEE\u0BEF\u0BF0\u0BF1\u0BF2\u0BF3\u0BF4\u0BF5"+
-        "\u0BF6\u0BF7\u0BF8\u0BF9\u0BFA\u0BFB\u0BFC\u0BFD"+
-        "\u0BFE\u0BFF\u0C00\u0C01\u0C02\u0C03\u0C04\u0C05"+
-        "\u0C06\u0C07\u0C08\u0C09\u0C0A\u0C0B\u0C0C\u0C0D"+
-        "\u0C0E\u0C0F\u0C10\u0C11\u0C12\u0C13\u0C14\u0C15"+
-        "\u0C16\u0C17\u0C18\u0C19\u0C1A\u0C1B\u0C1C\u0C1D"+
-        "\u0C1E\u0C1F\u0C20\u0C21\u0C22\u0C23\u0C24\u0C25"+
-        "\u0C26\u0C27\u0C28\u0C29\u0C2A\u0C2B\u0C2C\u0C2D"+
-        "\u0C2E\u0C2F\u0C30\u0C31\u0C32\u0C33\u0C34\u0C35"+
-        "\u0C36\u0C37\u0C38\u0C39\u0C3A\u0C3B\u0C3C\u0C3D"+
-        "\u0C3E\u0C3F\u0C40\u0C41\u0C42\u0C43\u0C44\u0C45"+
-        "\u0C46\u0C47\u0C48\u0C49\u0C4A\u0C4B\u0C4C\u0C4D"+
-        "\u0C4E\u0C4F\u0C50\u0C51\u0C52\u0C53\u0C54\u0C55"+
-        "\u0C56\u0C57\u0C58\u0C59\u0C5A\u0C5B\u0C5C\u0C5D"+
-        "\u0C5E\u0C5F\u0C60\u0C61\u0C62\u0C63\u0C64\u0C65"+
-        "\u0C66\u0C67\u0C68\u0C69\u0C6A\u0C6B\u0C6C\u0C6D"+
-        "\u0C6E\u0C6F\u0C70\u0C71\u0C72\u0C73\u0C74\u0C75"+
-        "\u0C76\u0C77\u0C78\u0C79\u0C7A\u0C7B\u0C7C\u0C7D"+
-        "\u0C7E\u0C7F\u0C80\u0C81\u0C82\u0C83\u0C84\u0C85"+
-        "\u0C86\u0C87\u0C88\u0C89\u0C8A\u0C8B\u0C8C\u0C8D"+
-        "\u0C8E\u0C8F\u0C90\u0C91\u0C92\u0C93\u0C94\u0C95"+
-        "\u0C96\u0C97\u0C98\u0C99\u0C9A\u0C9B\u0C9C\u0C9D"+
-        "\u0C9E\u0C9F\u0CA0\u0CA1\u0CA2\u0CA3\u0CA4\u0CA5"+
-        "\u0CA6\u0CA7\u0CA8\u0CA9\u0CAA\u0CAB\u0CAC\u0CAD"+
-        "\u0CAE\u0CAF\u0CB0\u0CB1\u0CB2\u0CB3\u0CB4\u0CB5"+
-        "\u0CB6\u0CB7\u0CB8\u0CB9\u0CBA\u0CBB\u0CBC\u0CBD"+
-        "\u0CBE\u0CBF\u0CC0\u0CC1\u0CC2\u0CC3\u0CC4\u0CC5"+
-        "\u0CC6\u0CC7\u0CC8\u0CC9\u0CCA\u0CCB\u0CCC\u0CCD"+
-        "\u0CCE\u0CCF\u0CD0\u0CD1\u0CD2\u0CD3\u0CD4\u0CD5"+
-        "\u0CD6\u0CD7\u0CD8\u0CD9\u0CDA\u0CDB\u0CDC\u0CDD"+
-        "\u0CDE\u0CDF\u0CE0\u0CE1\u0CE2\u0CE3\u0CE4\u0CE5"+
-        "\u0CE6\u0CE7\u0CE8\u0CE9\u0CEA\u0CEB\u0CEC\u0CED"+
-        "\u0CEE\u0CEF\u0CF0\u0CF1\u0CF2\u0CF3\u0CF4\u0CF5"+
-        "\u0CF6\u0CF7\u0CF8\u0CF9\u0CFA\u0CFB\u0CFC\u0CFD"+
-        "\u0CFE\u0CFF\u0D00\u0D01\u0D02\u0D03\u0D04\u0D05"+
-        "\u0D06\u0D07\u0D08\u0D09\u0D0A\u0D0B\u0D0C\u0D0D"+
-        "\u0D0E\u0D0F\u0D10\u0D11\u0D12\u0D13\u0D14\u0D15"+
-        "\u0D16\u0D17\u0D18\u0D19\u0D1A\u0D1B\u0D1C\u0D1D"+
-        "\u0D1E\u0D1F\u0D20\u0D21\u0D22\u0D23\u0D24\u0D25"+
-        "\u0D26\u0D27\u0D28\u0D29\u0D2A\u0D2B\u0D2C\u0D2D"+
-        "\u0D2E\u0D2F\u0D30\u0D31\u0D32\u0D33\u0D34\u0D35"+
-        "\u0D36\u0D37\u0D38\u0D39\u0D3A\u0D3B\u0D3C\u0D3D"+
-        "\u0D3E\u0D3F\u0D40\u0D41\u0D42\u0D43\u0D44\u0D45"+
-        "\u0D46\u0D47\u0D48\u0D49\u0D4A\u0D4B\u0D4C\u0D4D"+
-        "\u0D4E\u0D4F\u0D50\u0D51\u0D52\u0D53\u0D54\u0D55"+
-        "\u0D56\u0D57\u0D58\u0D59\u0D5A\u0D5B\u0D5C\u0D5D"+
-        "\u0D5E\u0D5F\u0D60\u0D61\u0D62\u0D63\u0D64\u0D65"+
-        "\u0D66\u0D67\u0D68\u0D69\u0D6A\u0D6B\u0D6C\u0D6D"+
-        "\u0D6E\u0D6F\u0D70\u0D71\u0D72\u0D73\u0D74\u0D75"+
-        "\u0D76\u0D77\u0D78\u0D79\u0D7A\u0D7B\u0D7C\u0D7D"+
-        "\u0D7E\u0D7F\u0D80\u0D81\u0D82\u0D83\u0D84\u0D85"+
-        "\u0D86\u0D87\u0D88\u0D89\u0D8A\u0D8B\u0D8C\u0D8D"+
-        "\u0D8E\u0D8F\u0D90\u0D91\u0D92\u0D93\u0D94\u0D95"+
-        "\u0D96\u0D97\u0D98\u0D99\u0D9A\u0D9B\u0D9C\u0D9D"+
-        "\u0D9E\u0D9F\u0DA0\u0DA1\u0DA2\u0DA3\u0DA4\u0DA5"+
-        "\u0DA6\u0DA7\u0DA8\u0DA9\u0DAA\u0DAB\u0DAC\u0DAD"+
-        "\u0DAE\u0DAF\u0DB0\u0DB1\u0DB2\u0DB3\u0DB4\u0DB5"+
-        "\u0DB6\u0DB7\u0DB8\u0DB9\u0DBA\u0DBB\u0DBC\u0DBD"+
-        "\u0DBE\u0DBF\u0DC0\u0DC1\u0DC2\u0DC3\u0DC4\u0DC5"+
-        "\u0DC6\u0DC7\u0DC8\u0DC9\u0DCA\u0DCB\u0DCC\u0DCD"+
-        "\u0DCE\u0DCF\u0DD0\u0DD1\u0DD2\u0DD3\u0DD4\u0DD5"+
-        "\u0DD6\u0DD7\u0DD8\u0DD9\u0DDA\u0DDB\u0DDC\u0DDD"+
-        "\u0DDE\u0DDF\u0DE0\u0DE1\u0DE2\u0DE3\u0DE4\u0DE5"+
-        "\u0DE6\u0DE7\u0DE8\u0DE9\u0DEA\u0DEB\u0DEC\u0DED"+
-        "\u0DEE\u0DEF\u0DF0\u0DF1\u0DF2\u0DF3\u0DF4\u0DF5"+
-        "\u0DF6\u0DF7\u0DF8\u0DF9\u0DFA\u0DFB\u0DFC\u0DFD"+
-        "\u0DFE\u0DFF\u0E00\u0E01\u0E02\u0E03\u0E04\u0E05"+
-        "\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D"+
-        "\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15"+
-        "\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D"+
-        "\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25"+
-        "\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D"+
-        "\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35"+
-        "\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E3B\u0E3C\u0E3D"+
-        "\u0E3E\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45"+
-        "\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D"+
-        "\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55"+
-        "\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u0E5C\u0E5D"+
-        "\u0E5E\u0E5F\u0E60\u0E61\u0E62\u0E63\u0E64\u0E65"+
-        "\u0E66\u0E67\u0E68\u0E69\u0E6A\u0E6B\u0E6C\u0E6D"+
-        "\u0E6E\u0E6F\u0E70\u0E71\u0E72\u0E73\u0E74\u0E75"+
-        "\u0E76\u0E77\u0E78\u0E79\u0E7A\u0E7B\u0E7C\u0E7D"+
-        "\u0E7E\u0E7F\u0E80\u0E81\u0E82\u0E83\u0E84\u0E85"+
-        "\u0E86\u0E87\u0E88\u0E89\u0E8A\u0E8B\u0E8C\u0E8D"+
-        "\u0E8E\u0E8F\u0E90\u0E91\u0E92\u0E93\u0E94\u0E95"+
-        "\u0E96\u0E97\u0E98\u0E99\u0E9A\u0E9B\u0E9C\u0E9D"+
-        "\u0E9E\u0E9F\u0EA0\u0EA1\u0EA2\u0EA3\u0EA4\u0EA5"+
-        "\u0EA6\u0EA7\u0EA8\u0EA9\u0EAA\u0EAB\u0EAC\u0EAD"+
-        "\u0EAE\u0EAF\u0EB0\u0EB1\u0EB2\u0EB3\u0EB4\u0EB5"+
-        "\u0EB6\u0EB7\u0EB8\u0EB9\u0EBA\u0EBB\u0EBC\u0EBD"+
-        "\u0EBE\u0EBF\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC5"+
-        "\u0EC6\u0EC7\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD"+
-        "\u0ECE\u0ECF\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5"+
-        "\u0ED6\u0ED7\u0ED8\u0ED9\u0EDA\u0EDB\u0EDC\u0EDD"+
-        "\u0EDE\u0EDF\u0EE0\u0EE1\u0EE2\u0EE3\u0EE4\u0EE5"+
-        "\u0EE6\u0EE7\u0EE8\u0EE9\u0EEA\u0EEB\u0EEC\u0EED"+
-        "\u0EEE\u0EEF\u0EF0\u0EF1\u0EF2\u0EF3\u0EF4\u0EF5"+
-        "\u0EF6\u0EF7\u0EF8\u0EF9\u0EFA\u0EFB\u0EFC\u0EFD"+
-        "\u0EFE\u0EFF\u0F00\u0F01\u0F02\u0F03\u0F04\u0F05"+
-        "\u0F06\u0F07\u0F08\u0F09\u0F0A\u0F0B\u0F0C\u0F0D"+
-        "\u0F0E\u0F0F\u0F10\u0F11\u0F12\u0F13\u0F14\u0F15"+
-        "\u0F16\u0F17\u0F18\u0F19\u0F1A\u0F1B\u0F1C\u0F1D"+
-        "\u0F1E\u0F1F\u0F20\u0F21\u0F22\u0F23\u0F24\u0F25"+
-        "\u0F26\u0F27\u0F28\u0F29\u0F2A\u0F2B\u0F2C\u0F2D"+
-        "\u0F2E\u0F2F\u0F30\u0F31\u0F32\u0F33\u0F34\u0F35"+
-        "\u0F36\u0F37\u0F38\u0F39\u0F3A\u0F3B\u0F3C\u0F3D"+
-        "\u0F3E\u0F3F\u0F40\u0F41\u0F42\u0F43\u0F44\u0F45"+
-        "\u0F46\u0F47\u0F48\u0F49\u0F4A\u0F4B\u0F4C\u0F4D"+
-        "\u0F4E\u0F4F\u0F50\u0F51\u0F52\u0F53\u0F54\u0F55"+
-        "\u0F56\u0F57\u0F58\u0F59\u0F5A\u0F5B\u0F5C\u0F5D"+
-        "\u0F5E\u0F5F\u0F60\u0F61\u0F62\u0F63\u0F64\u0F65"+
-        "\u0F66\u0F67\u0F68\u0F69\u0F6A\u0F6B\u0F6C\u0F6D"+
-        "\u0F6E\u0F6F\u0F70\u0F71\u0F72\u0F73\u0F74\u0F75"+
-        "\u0F76\u0F77\u0F78\u0F79\u0F7A\u0F7B\u0F7C\u0F7D"+
-        "\u0F7E\u0F7F\u0F80\u0F81\u0F82\u0F83\u0F84\u0F85"+
-        "\u0F86\u0F87\u0F88\u0F89\u0F8A\u0F8B\u0F8C\u0F8D"+
-        "\u0F8E\u0F8F\u0F90\u0F91\u0F92\u0F93\u0F94\u0F95"+
-        "\u0F96\u0F97\u0F98\u0F99\u0F9A\u0F9B\u0F9C\u0F9D"+
-        "\u0F9E\u0F9F\u0FA0\u0FA1\u0FA2\u0FA3\u0FA4\u0FA5"+
-        "\u0FA6\u0FA7\u0FA8\u0FA9\u0FAA\u0FAB\u0FAC\u0FAD"+
-        "\u0FAE\u0FAF\u0FB0\u0FB1\u0FB2\u0FB3\u0FB4\u0FB5"+
-        "\u0FB6\u0FB7\u0FB8\u0FB9\u0FBA\u0FBB\u0FBC\u0FBD"+
-        "\u0FBE\u0FBF\u0FC0\u0FC1\u0FC2\u0FC3\u0FC4\u0FC5"+
-        "\u0FC6\u0FC7\u0FC8\u0FC9\u0FCA\u0FCB\u0FCC\u0FCD"+
-        "\u0FCE\u0FCF\u0FD0\u0FD1\u0FD2\u0FD3\u0FD4\u0FD5"+
-        "\u0FD6\u0FD7\u0FD8\u0FD9\u0FDA\u0FDB\u0FDC\u0FDD"+
-        "\u0FDE\u0FDF\u0FE0\u0FE1\u0FE2\u0FE3\u0FE4\u0FE5"+
-        "\u0FE6\u0FE7\u0FE8\u0FE9\u0FEA\u0FEB\u0FEC\u0FED"+
-        "\u0FEE\u0FEF\u0FF0\u0FF1\u0FF2\u0FF3\u0FF4\u0FF5"+
-        "\u0FF6\u0FF7\u0FF8\u0FF9\u0FFA\u0FFB\u0FFC\u0FFD"+
-        "\u0FFE\u0FFF\u1000\u1001\u1002\u1003\u1004\u1005"+
-        "\u1006\u1007\u1008\u1009\u100A\u100B\u100C\u100D"+
-        "\u100E\u100F\u1010\u1011\u1012\u1013\u1014\u1015"+
-        "\u1016\u1017\u1018\u1019\u101A\u101B\u101C\u101D"+
-        "\u101E\u101F\u1020\u1021\u1022\u1023\u1024\u1025"+
-        "\u1026\u1027\u1028\u1029\u102A\u102B\u102C\u102D"+
-        "\u102E\u102F\u1030\u1031\u1032\u1033\u1034\u1035"+
-        "\u1036\u1037\u1038\u1039\u103A\u103B\u103C\u103D"+
-        "\u103E\u103F\u1040\u1041\u1042\u1043\u1044\u1045"+
-        "\u1046\u1047\u1048\u1049\u104A\u104B\u104C\u104D"+
-        "\u104E\u104F\u1050\u1051\u1052\u1053\u1054\u1055"+
-        "\u1056\u1057\u1058\u1059\u105A\u105B\u105C\u105D"+
-        "\u105E\u105F\u1060\u1061\u1062\u1063\u1064\u1065"+
-        "\u1066\u1067\u1068\u1069\u106A\u106B\u106C\u106D"+
-        "\u106E\u106F\u1070\u1071\u1072\u1073\u1074\u1075"+
-        "\u1076\u1077\u1078\u1079\u107A\u107B\u107C\u107D"+
-        "\u107E\u107F\u1080\u1081\u1082\u1083\u1084\u1085"+
-        "\u1086\u1087\u1088\u1089\u108A\u108B\u108C\u108D"+
-        "\u108E\u108F\u1090\u1091\u1092\u1093\u1094\u1095"+
-        "\u1096\u1097\u1098\u1099\u109A\u109B\u109C\u109D"+
-        "\u109E\u109F\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5"+
-        "\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD"+
-        "\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5"+
-        "\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD"+
-        "\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5"+
-        "\u10C6\u10C7\u10C8\u10C9\u10CA\u10CB\u10CC\u10CD"+
-        "\u10CE\u10CF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5"+
-        "\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD"+
-        "\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5"+
-        "\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED"+
-        "\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5"+
-        "\u10F6\u10F7\u10F8\u10F9\u10FA\u10FB\u10FC\u10FD"+
-        "\u10FE\u10FF\u1100\u1101\u1102\u1103\u1104\u1105"+
-        "\u1106\u1107\u1108\u1109\u110A\u110B\u110C\u110D"+
-        "\u110E\u110F\u1110\u1111\u1112\u1113\u1114\u1115"+
-        "\u1116\u1117\u1118\u1119\u111A\u111B\u111C\u111D";
-
-    private final static String innerDecoderIndex1=
-        "\u111E\u111F\u1120\u1121\u1122\u1123\u1124\u1125"+
-        "\u1126\u1127\u1128\u1129\u112A\u112B\u112C\u112D"+
-        "\u112E\u112F\u1130\u1131\u1132\u1133\u1134\u1135"+
-        "\u1136\u1137\u1138\u1139\u113A\u113B\u113C\u113D"+
-        "\u113E\u113F\u1140\u1141\u1142\u1143\u1144\u1145"+
-        "\u1146\u1147\u1148\u1149\u114A\u114B\u114C\u114D"+
-        "\u114E\u114F\u1150\u1151\u1152\u1153\u1154\u1155"+
-        "\u1156\u1157\u1158\u1159\u115A\u115B\u115C\u115D"+
-        "\u115E\u115F\u1160\u1161\u1162\u1163\u1164\u1165"+
-        "\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D"+
-        "\u116E\u116F\u1170\u1171\u1172\u1173\u1174\u1175"+
-        "\u1176\u1177\u1178\u1179\u117A\u117B\u117C\u117D"+
-        "\u117E\u117F\u1180\u1181\u1182\u1183\u1184\u1185"+
-        "\u1186\u1187\u1188\u1189\u118A\u118B\u118C\u118D"+
-        "\u118E\u118F\u1190\u1191\u1192\u1193\u1194\u1195"+
-        "\u1196\u1197\u1198\u1199\u119A\u119B\u119C\u119D"+
-        "\u119E\u119F\u11A0\u11A1\u11A2\u11A3\u11A4\u11A5"+
-        "\u11A6\u11A7\u11A8\u11A9\u11AA\u11AB\u11AC\u11AD"+
-        "\u11AE\u11AF\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5"+
-        "\u11B6\u11B7\u11B8\u11B9\u11BA\u11BB\u11BC\u11BD"+
-        "\u11BE\u11BF\u11C0\u11C1\u11C2\u11C3\u11C4\u11C5"+
-        "\u11C6\u11C7\u11C8\u11C9\u11CA\u11CB\u11CC\u11CD"+
-        "\u11CE\u11CF\u11D0\u11D1\u11D2\u11D3\u11D4\u11D5"+
-        "\u11D6\u11D7\u11D8\u11D9\u11DA\u11DB\u11DC\u11DD"+
-        "\u11DE\u11DF\u11E0\u11E1\u11E2\u11E3\u11E4\u11E5"+
-        "\u11E6\u11E7\u11E8\u11E9\u11EA\u11EB\u11EC\u11ED"+
-        "\u11EE\u11EF\u11F0\u11F1\u11F2\u11F3\u11F4\u11F5"+
-        "\u11F6\u11F7\u11F8\u11F9\u11FA\u11FB\u11FC\u11FD"+
-        "\u11FE\u11FF\u1200\u1201\u1202\u1203\u1204\u1205"+
-        "\u1206\u1207\u1208\u1209\u120A\u120B\u120C\u120D"+
-        "\u120E\u120F\u1210\u1211\u1212\u1213\u1214\u1215"+
-        "\u1216\u1217\u1218\u1219\u121A\u121B\u121C\u121D"+
-        "\u121E\u121F\u1220\u1221\u1222\u1223\u1224\u1225"+
-        "\u1226\u1227\u1228\u1229\u122A\u122B\u122C\u122D"+
-        "\u122E\u122F\u1230\u1231\u1232\u1233\u1234\u1235"+
-        "\u1236\u1237\u1238\u1239\u123A\u123B\u123C\u123D"+
-        "\u123E\u123F\u1240\u1241\u1242\u1243\u1244\u1245"+
-        "\u1246\u1247\u1248\u1249\u124A\u124B\u124C\u124D"+
-        "\u124E\u124F\u1250\u1251\u1252\u1253\u1254\u1255"+
-        "\u1256\u1257\u1258\u1259\u125A\u125B\u125C\u125D"+
-        "\u125E\u125F\u1260\u1261\u1262\u1263\u1264\u1265"+
-        "\u1266\u1267\u1268\u1269\u126A\u126B\u126C\u126D"+
-        "\u126E\u126F\u1270\u1271\u1272\u1273\u1274\u1275"+
-        "\u1276\u1277\u1278\u1279\u127A\u127B\u127C\u127D"+
-        "\u127E\u127F\u1280\u1281\u1282\u1283\u1284\u1285"+
-        "\u1286\u1287\u1288\u1289\u128A\u128B\u128C\u128D"+
-        "\u128E\u128F\u1290\u1291\u1292\u1293\u1294\u1295"+
-        "\u1296\u1297\u1298\u1299\u129A\u129B\u129C\u129D"+
-        "\u129E\u129F\u12A0\u12A1\u12A2\u12A3\u12A4\u12A5"+
-        "\u12A6\u12A7\u12A8\u12A9\u12AA\u12AB\u12AC\u12AD"+
-        "\u12AE\u12AF\u12B0\u12B1\u12B2\u12B3\u12B4\u12B5"+
-        "\u12B6\u12B7\u12B8\u12B9\u12BA\u12BB\u12BC\u12BD"+
-        "\u12BE\u12BF\u12C0\u12C1\u12C2\u12C3\u12C4\u12C5"+
-        "\u12C6\u12C7\u12C8\u12C9\u12CA\u12CB\u12CC\u12CD"+
-        "\u12CE\u12CF\u12D0\u12D1\u12D2\u12D3\u12D4\u12D5"+
-        "\u12D6\u12D7\u12D8\u12D9\u12DA\u12DB\u12DC\u12DD"+
-        "\u12DE\u12DF\u12E0\u12E1\u12E2\u12E3\u12E4\u12E5"+
-        "\u12E6\u12E7\u12E8\u12E9\u12EA\u12EB\u12EC\u12ED"+
-        "\u12EE\u12EF\u12F0\u12F1\u12F2\u12F3\u12F4\u12F5"+
-        "\u12F6\u12F7\u12F8\u12F9\u12FA\u12FB\u12FC\u12FD"+
-        "\u12FE\u12FF\u1300\u1301\u1302\u1303\u1304\u1305"+
-        "\u1306\u1307\u1308\u1309\u130A\u130B\u130C\u130D"+
-        "\u130E\u130F\u1310\u1311\u1312\u1313\u1314\u1315"+
-        "\u1316\u1317\u1318\u1319\u131A\u131B\u131C\u131D"+
-        "\u131E\u131F\u1320\u1321\u1322\u1323\u1324\u1325"+
-        "\u1326\u1327\u1328\u1329\u132A\u132B\u132C\u132D"+
-        "\u132E\u132F\u1330\u1331\u1332\u1333\u1334\u1335"+
-        "\u1336\u1337\u1338\u1339\u133A\u133B\u133C\u133D"+
-        "\u133E\u133F\u1340\u1341\u1342\u1343\u1344\u1345"+
-        "\u1346\u1347\u1348\u1349\u134A\u134B\u134C\u134D"+
-        "\u134E\u134F\u1350\u1351\u1352\u1353\u1354\u1355"+
-        "\u1356\u1357\u1358\u1359\u135A\u135B\u135C\u135D"+
-        "\u135E\u135F\u1360\u1361\u1362\u1363\u1364\u1365"+
-        "\u1366\u1367\u1368\u1369\u136A\u136B\u136C\u136D"+
-        "\u136E\u136F\u1370\u1371\u1372\u1373\u1374\u1375"+
-        "\u1376\u1377\u1378\u1379\u137A\u137B\u137C\u137D"+
-        "\u137E\u137F\u1380\u1381\u1382\u1383\u1384\u1385"+
-        "\u1386\u1387\u1388\u1389\u138A\u138B\u138C\u138D"+
-        "\u138E\u138F\u1390\u1391\u1392\u1393\u1394\u1395"+
-        "\u1396\u1397\u1398\u1399\u139A\u139B\u139C\u139D"+
-        "\u139E\u139F\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5"+
-        "\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD"+
-        "\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5"+
-        "\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD"+
-        "\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4\u13C5"+
-        "\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD"+
-        "\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5"+
-        "\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD"+
-        "\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5"+
-        "\u13E6\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED"+
-        "\u13EE\u13EF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5"+
-        "\u13F6\u13F7\u13F8\u13F9\u13FA\u13FB\u13FC\u13FD"+
-        "\u13FE\u13FF\u1400\u1401\u1402\u1403\u1404\u1405"+
-        "\u1406\u1407\u1408\u1409\u140A\u140B\u140C\u140D"+
-        "\u140E\u140F\u1410\u1411\u1412\u1413\u1414\u1415"+
-        "\u1416\u1417\u1418\u1419\u141A\u141B\u141C\u141D"+
-        "\u141E\u141F\u1420\u1421\u1422\u1423\u1424\u1425"+
-        "\u1426\u1427\u1428\u1429\u142A\u142B\u142C\u142D"+
-        "\u142E\u142F\u1430\u1431\u1432\u1433\u1434\u1435"+
-        "\u1436\u1437\u1438\u1439\u143A\u143B\u143C\u143D"+
-        "\u143E\u143F\u1440\u1441\u1442\u1443\u1444\u1445"+
-        "\u1446\u1447\u1448\u1449\u144A\u144B\u144C\u144D"+
-        "\u144E\u144F\u1450\u1451\u1452\u1453\u1454\u1455"+
-        "\u1456\u1457\u1458\u1459\u145A\u145B\u145C\u145D"+
-        "\u145E\u145F\u1460\u1461\u1462\u1463\u1464\u1465"+
-        "\u1466\u1467\u1468\u1469\u146A\u146B\u146C\u146D"+
-        "\u146E\u146F\u1470\u1471\u1472\u1473\u1474\u1475"+
-        "\u1476\u1477\u1478\u1479\u147A\u147B\u147C\u147D"+
-        "\u147E\u147F\u1480\u1481\u1482\u1483\u1484\u1485"+
-        "\u1486\u1487\u1488\u1489\u148A\u148B\u148C\u148D"+
-        "\u148E\u148F\u1490\u1491\u1492\u1493\u1494\u1495"+
-        "\u1496\u1497\u1498\u1499\u149A\u149B\u149C\u149D"+
-        "\u149E\u149F\u14A0\u14A1\u14A2\u14A3\u14A4\u14A5"+
-        "\u14A6\u14A7\u14A8\u14A9\u14AA\u14AB\u14AC\u14AD"+
-        "\u14AE\u14AF\u14B0\u14B1\u14B2\u14B3\u14B4\u14B5"+
-        "\u14B6\u14B7\u14B8\u14B9\u14BA\u14BB\u14BC\u14BD"+
-        "\u14BE\u14BF\u14C0\u14C1\u14C2\u14C3\u14C4\u14C5"+
-        "\u14C6\u14C7\u14C8\u14C9\u14CA\u14CB\u14CC\u14CD"+
-        "\u14CE\u14CF\u14D0\u14D1\u14D2\u14D3\u14D4\u14D5"+
-        "\u14D6\u14D7\u14D8\u14D9\u14DA\u14DB\u14DC\u14DD"+
-        "\u14DE\u14DF\u14E0\u14E1\u14E2\u14E3\u14E4\u14E5"+
-        "\u14E6\u14E7\u14E8\u14E9\u14EA\u14EB\u14EC\u14ED"+
-        "\u14EE\u14EF\u14F0\u14F1\u14F2\u14F3\u14F4\u14F5"+
-        "\u14F6\u14F7\u14F8\u14F9\u14FA\u14FB\u14FC\u14FD"+
-        "\u14FE\u14FF\u1500\u1501\u1502\u1503\u1504\u1505"+
-        "\u1506\u1507\u1508\u1509\u150A\u150B\u150C\u150D"+
-        "\u150E\u150F\u1510\u1511\u1512\u1513\u1514\u1515"+
-        "\u1516\u1517\u1518\u1519\u151A\u151B\u151C\u151D"+
-        "\u151E\u151F\u1520\u1521\u1522\u1523\u1524\u1525"+
-        "\u1526\u1527\u1528\u1529\u152A\u152B\u152C\u152D"+
-        "\u152E\u152F\u1530\u1531\u1532\u1533\u1534\u1535"+
-        "\u1536\u1537\u1538\u1539\u153A\u153B\u153C\u153D"+
-        "\u153E\u153F\u1540\u1541\u1542\u1543\u1544\u1545"+
-        "\u1546\u1547\u1548\u1549\u154A\u154B\u154C\u154D"+
-        "\u154E\u154F\u1550\u1551\u1552\u1553\u1554\u1555"+
-        "\u1556\u1557\u1558\u1559\u155A\u155B\u155C\u155D"+
-        "\u155E\u155F\u1560\u1561\u1562\u1563\u1564\u1565"+
-        "\u1566\u1567\u1568\u1569\u156A\u156B\u156C\u156D"+
-        "\u156E\u156F\u1570\u1571\u1572\u1573\u1574\u1575"+
-        "\u1576\u1577\u1578\u1579\u157A\u157B\u157C\u157D"+
-        "\u157E\u157F\u1580\u1581\u1582\u1583\u1584\u1585"+
-        "\u1586\u1587\u1588\u1589\u158A\u158B\u158C\u158D"+
-        "\u158E\u158F\u1590\u1591\u1592\u1593\u1594\u1595"+
-        "\u1596\u1597\u1598\u1599\u159A\u159B\u159C\u159D"+
-        "\u159E\u159F\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5"+
-        "\u15A6\u15A7\u15A8\u15A9\u15AA\u15AB\u15AC\u15AD"+
-        "\u15AE\u15AF\u15B0\u15B1\u15B2\u15B3\u15B4\u15B5"+
-        "\u15B6\u15B7\u15B8\u15B9\u15BA\u15BB\u15BC\u15BD"+
-        "\u15BE\u15BF\u15C0\u15C1\u15C2\u15C3\u15C4\u15C5"+
-        "\u15C6\u15C7\u15C8\u15C9\u15CA\u15CB\u15CC\u15CD"+
-        "\u15CE\u15CF\u15D0\u15D1\u15D2\u15D3\u15D4\u15D5"+
-        "\u15D6\u15D7\u15D8\u15D9\u15DA\u15DB\u15DC\u15DD"+
-        "\u15DE\u15DF\u15E0\u15E1\u15E2\u15E3\u15E4\u15E5"+
-        "\u15E6\u15E7\u15E8\u15E9\u15EA\u15EB\u15EC\u15ED"+
-        "\u15EE\u15EF\u15F0\u15F1\u15F2\u15F3\u15F4\u15F5"+
-        "\u15F6\u15F7\u15F8\u15F9\u15FA\u15FB\u15FC\u15FD"+
-        "\u15FE\u15FF\u1600\u1601\u1602\u1603\u1604\u1605"+
-        "\u1606\u1607\u1608\u1609\u160A\u160B\u160C\u160D"+
-        "\u160E\u160F\u1610\u1611\u1612\u1613\u1614\u1615"+
-        "\u1616\u1617\u1618\u1619\u161A\u161B\u161C\u161D"+
-        "\u161E\u161F\u1620\u1621\u1622\u1623\u1624\u1625"+
-        "\u1626\u1627\u1628\u1629\u162A\u162B\u162C\u162D"+
-        "\u162E\u162F\u1630\u1631\u1632\u1633\u1634\u1635"+
-        "\u1636\u1637\u1638\u1639\u163A\u163B\u163C\u163D"+
-        "\u163E\u163F\u1640\u1641\u1642\u1643\u1644\u1645"+
-        "\u1646\u1647\u1648\u1649\u164A\u164B\u164C\u164D"+
-        "\u164E\u164F\u1650\u1651\u1652\u1653\u1654\u1655"+
-        "\u1656\u1657\u1658\u1659\u165A\u165B\u165C\u165D"+
-        "\u165E\u165F\u1660\u1661\u1662\u1663\u1664\u1665"+
-        "\u1666\u1667\u1668\u1669\u166A\u166B\u166C\u166D"+
-        "\u166E\u166F\u1670\u1671\u1672\u1673\u1674\u1675"+
-        "\u1676\u1677\u1678\u1679\u167A\u167B\u167C\u167D"+
-        "\u167E\u167F\u1680\u1681\u1682\u1683\u1684\u1685"+
-        "\u1686\u1687\u1688\u1689\u168A\u168B\u168C\u168D"+
-        "\u168E\u168F\u1690\u1691\u1692\u1693\u1694\u1695"+
-        "\u1696\u1697\u1698\u1699\u169A\u169B\u169C\u169D"+
-        "\u169E\u169F\u16A0\u16A1\u16A2\u16A3\u16A4\u16A5"+
-        "\u16A6\u16A7\u16A8\u16A9\u16AA\u16AB\u16AC\u16AD"+
-        "\u16AE\u16AF\u16B0\u16B1\u16B2\u16B3\u16B4\u16B5"+
-        "\u16B6\u16B7\u16B8\u16B9\u16BA\u16BB\u16BC\u16BD"+
-        "\u16BE\u16BF\u16C0\u16C1\u16C2\u16C3\u16C4\u16C5"+
-        "\u16C6\u16C7\u16C8\u16C9\u16CA\u16CB\u16CC\u16CD"+
-        "\u16CE\u16CF\u16D0\u16D1\u16D2\u16D3\u16D4\u16D5"+
-        "\u16D6\u16D7\u16D8\u16D9\u16DA\u16DB\u16DC\u16DD"+
-        "\u16DE\u16DF\u16E0\u16E1\u16E2\u16E3\u16E4\u16E5"+
-        "\u16E6\u16E7\u16E8\u16E9\u16EA\u16EB\u16EC\u16ED"+
-        "\u16EE\u16EF\u16F0\u16F1\u16F2\u16F3\u16F4\u16F5"+
-        "\u16F6\u16F7\u16F8\u16F9\u16FA\u16FB\u16FC\u16FD"+
-        "\u16FE\u16FF\u1700\u1701\u1702\u1703\u1704\u1705"+
-        "\u1706\u1707\u1708\u1709\u170A\u170B\u170C\u170D"+
-        "\u170E\u170F\u1710\u1711\u1712\u1713\u1714\u1715"+
-        "\u1716\u1717\u1718\u1719\u171A\u171B\u171C\u171D"+
-        "\u171E\u171F\u1720\u1721\u1722\u1723\u1724\u1725"+
-        "\u1726\u1727\u1728\u1729\u172A\u172B\u172C\u172D"+
-        "\u172E\u172F\u1730\u1731\u1732\u1733\u1734\u1735"+
-        "\u1736\u1737\u1738\u1739\u173A\u173B\u173C\u173D"+
-        "\u173E\u173F\u1740\u1741\u1742\u1743\u1744\u1745"+
-        "\u1746\u1747\u1748\u1749\u174A\u174B\u174C\u174D"+
-        "\u174E\u174F\u1750\u1751\u1752\u1753\u1754\u1755"+
-        "\u1756\u1757\u1758\u1759\u175A\u175B\u175C\u175D"+
-        "\u175E\u175F\u1760\u1761\u1762\u1763\u1764\u1765"+
-        "\u1766\u1767\u1768\u1769\u176A\u176B\u176C\u176D"+
-        "\u176E\u176F\u1770\u1771\u1772\u1773\u1774\u1775"+
-        "\u1776\u1777\u1778\u1779\u177A\u177B\u177C\u177D"+
-        "\u177E\u177F\u1780\u1781\u1782\u1783\u1784\u1785"+
-        "\u1786\u1787\u1788\u1789\u178A\u178B\u178C\u178D"+
-        "\u178E\u178F\u1790\u1791\u1792\u1793\u1794\u1795"+
-        "\u1796\u1797\u1798\u1799\u179A\u179B\u179C\u179D"+
-        "\u179E\u179F\u17A0\u17A1\u17A2\u17A3\u17A4\u17A5"+
-        "\u17A6\u17A7\u17A8\u17A9\u17AA\u17AB\u17AC\u17AD"+
-        "\u17AE\u17AF\u17B0\u17B1\u17B2\u17B3\u17B4\u17B5"+
-        "\u17B6\u17B7\u17B8\u17B9\u17BA\u17BB\u17BC\u17BD"+
-        "\u17BE\u17BF\u17C0\u17C1\u17C2\u17C3\u17C4\u17C5"+
-        "\u17C6\u17C7\u17C8\u17C9\u17CA\u17CB\u17CC\u17CD"+
-        "\u17CE\u17CF\u17D0\u17D1\u17D2\u17D3\u17D4\u17D5"+
-        "\u17D6\u17D7\u17D8\u17D9\u17DA\u17DB\u17DC\u17DD"+
-        "\u17DE\u17DF\u17E0\u17E1\u17E2\u17E3\u17E4\u17E5"+
-        "\u17E6\u17E7\u17E8\u17E9\u17EA\u17EB\u17EC\u17ED"+
-        "\u17EE\u17EF\u17F0\u17F1\u17F2\u17F3\u17F4\u17F5"+
-        "\u17F6\u17F7\u17F8\u17F9\u17FA\u17FB\u17FC\u17FD"+
-        "\u17FE\u17FF\u1800\u1801\u1802\u1803\u1804\u1805"+
-        "\u1806\u1807\u1808\u1809\u180A\u180B\u180C\u180D"+
-        "\u180E\u180F\u1810\u1811\u1812\u1813\u1814\u1815"+
-        "\u1816\u1817\u1818\u1819\u181A\u181B\u181C\u181D"+
-        "\u181E\u181F\u1820\u1821\u1822\u1823\u1824\u1825"+
-        "\u1826\u1827\u1828\u1829\u182A\u182B\u182C\u182D"+
-        "\u182E\u182F\u1830\u1831\u1832\u1833\u1834\u1835"+
-        "\u1836\u1837\u1838\u1839\u183A\u183B\u183C\u183D"+
-        "\u183E\u183F\u1840\u1841\u1842\u1843\u1844\u1845"+
-        "\u1846\u1847\u1848\u1849\u184A\u184B\u184C\u184D"+
-        "\u184E\u184F\u1850\u1851\u1852\u1853\u1854\u1855"+
-        "\u1856\u1857\u1858\u1859\u185A\u185B\u185C\u185D"+
-        "\u185E\u185F\u1860\u1861\u1862\u1863\u1864\u1865"+
-        "\u1866\u1867\u1868\u1869\u186A\u186B\u186C\u186D"+
-        "\u186E\u186F\u1870\u1871\u1872\u1873\u1874\u1875"+
-        "\u1876\u1877\u1878\u1879\u187A\u187B\u187C\u187D"+
-        "\u187E\u187F\u1880\u1881\u1882\u1883\u1884\u1885"+
-        "\u1886\u1887\u1888\u1889\u188A\u188B\u188C\u188D"+
-        "\u188E\u188F\u1890\u1891\u1892\u1893\u1894\u1895"+
-        "\u1896\u1897\u1898\u1899\u189A\u189B\u189C\u189D"+
-        "\u189E\u189F\u18A0\u18A1\u18A2\u18A3\u18A4\u18A5"+
-        "\u18A6\u18A7\u18A8\u18A9\u18AA\u18AB\u18AC\u18AD"+
-        "\u18AE\u18AF\u18B0\u18B1\u18B2\u18B3\u18B4\u18B5"+
-        "\u18B6\u18B7\u18B8\u18B9\u18BA\u18BB\u18BC\u18BD"+
-        "\u18BE\u18BF\u18C0\u18C1\u18C2\u18C3\u18C4\u18C5"+
-        "\u18C6\u18C7\u18C8\u18C9\u18CA\u18CB\u18CC\u18CD"+
-        "\u18CE\u18CF\u18D0\u18D1\u18D2\u18D3\u18D4\u18D5"+
-        "\u18D6\u18D7\u18D8\u18D9\u18DA\u18DB\u18DC\u18DD"+
-        "\u18DE\u18DF\u18E0\u18E1\u18E2\u18E3\u18E4\u18E5"+
-        "\u18E6\u18E7\u18E8\u18E9\u18EA\u18EB\u18EC\u18ED"+
-        "\u18EE\u18EF\u18F0\u18F1\u18F2\u18F3\u18F4\u18F5"+
-        "\u18F6\u18F7\u18F8\u18F9\u18FA\u18FB\u18FC\u18FD"+
-        "\u18FE\u18FF\u1900\u1901\u1902\u1903\u1904\u1905"+
-        "\u1906\u1907\u1908\u1909\u190A\u190B\u190C\u190D"+
-        "\u190E\u190F\u1910\u1911\u1912\u1913\u1914\u1915"+
-        "\u1916\u1917\u1918\u1919\u191A\u191B\u191C\u191D"+
-        "\u191E\u191F\u1920\u1921\u1922\u1923\u1924\u1925"+
-        "\u1926\u1927\u1928\u1929\u192A\u192B\u192C\u192D"+
-        "\u192E\u192F\u1930\u1931\u1932\u1933\u1934\u1935"+
-        "\u1936\u1937\u1938\u1939\u193A\u193B\u193C\u193D"+
-        "\u193E\u193F\u1940\u1941\u1942\u1943\u1944\u1945"+
-        "\u1946\u1947\u1948\u1949\u194A\u194B\u194C\u194D"+
-        "\u194E\u194F\u1950\u1951\u1952\u1953\u1954\u1955"+
-        "\u1956\u1957\u1958\u1959\u195A\u195B\u195C\u195D"+
-        "\u195E\u195F\u1960\u1961\u1962\u1963\u1964\u1965"+
-        "\u1966\u1967\u1968\u1969\u196A\u196B\u196C\u196D"+
-        "\u196E\u196F\u1970\u1971\u1972\u1973\u1974\u1975"+
-        "\u1976\u1977\u1978\u1979\u197A\u197B\u197C\u197D"+
-        "\u197E\u197F\u1980\u1981\u1982\u1983\u1984\u1985"+
-        "\u1986\u1987\u1988\u1989\u198A\u198B\u198C\u198D"+
-        "\u198E\u198F\u1990\u1991\u1992\u1993\u1994\u1995"+
-        "\u1996\u1997\u1998\u1999\u199A\u199B\u199C\u199D"+
-        "\u199E\u199F\u19A0\u19A1\u19A2\u19A3\u19A4\u19A5"+
-        "\u19A6\u19A7\u19A8\u19A9\u19AA\u19AB\u19AC\u19AD"+
-        "\u19AE\u19AF\u19B0\u19B1\u19B2\u19B3\u19B4\u19B5"+
-        "\u19B6\u19B7\u19B8\u19B9\u19BA\u19BB\u19BC\u19BD"+
-        "\u19BE\u19BF\u19C0\u19C1\u19C2\u19C3\u19C4\u19C5"+
-        "\u19C6\u19C7\u19C8\u19C9\u19CA\u19CB\u19CC\u19CD"+
-        "\u19CE\u19CF\u19D0\u19D1\u19D2\u19D3\u19D4\u19D5"+
-        "\u19D6\u19D7\u19D8\u19D9\u19DA\u19DB\u19DC\u19DD"+
-        "\u19DE\u19DF\u19E0\u19E1\u19E2\u19E3\u19E4\u19E5"+
-        "\u19E6\u19E7\u19E8\u19E9\u19EA\u19EB\u19EC\u19ED"+
-        "\u19EE\u19EF\u19F0\u19F1\u19F2\u19F3\u19F4\u19F5"+
-        "\u19F6\u19F7\u19F8\u19F9\u19FA\u19FB\u19FC\u19FD"+
-        "\u19FE\u19FF\u1A00\u1A01\u1A02\u1A03\u1A04\u1A05"+
-        "\u1A06\u1A07\u1A08\u1A09\u1A0A\u1A0B\u1A0C\u1A0D"+
-        "\u1A0E\u1A0F\u1A10\u1A11\u1A12\u1A13\u1A14\u1A15"+
-        "\u1A16\u1A17\u1A18\u1A19\u1A1A\u1A1B\u1A1C\u1A1D"+
-        "\u1A1E\u1A1F\u1A20\u1A21\u1A22\u1A23\u1A24\u1A25"+
-        "\u1A26\u1A27\u1A28\u1A29\u1A2A\u1A2B\u1A2C\u1A2D"+
-        "\u1A2E\u1A2F\u1A30\u1A31\u1A32\u1A33\u1A34\u1A35"+
-        "\u1A36\u1A37\u1A38\u1A39\u1A3A\u1A3B\u1A3C\u1A3D"+
-        "\u1A3E\u1A3F\u1A40\u1A41\u1A42\u1A43\u1A44\u1A45"+
-        "\u1A46\u1A47\u1A48\u1A49\u1A4A\u1A4B\u1A4C\u1A4D"+
-        "\u1A4E\u1A4F\u1A50\u1A51\u1A52\u1A53\u1A54\u1A55"+
-        "\u1A56\u1A57\u1A58\u1A59\u1A5A\u1A5B\u1A5C\u1A5D"+
-        "\u1A5E\u1A5F\u1A60\u1A61\u1A62\u1A63\u1A64\u1A65"+
-        "\u1A66\u1A67\u1A68\u1A69\u1A6A\u1A6B\u1A6C\u1A6D"+
-        "\u1A6E\u1A6F\u1A70\u1A71\u1A72\u1A73\u1A74\u1A75"+
-        "\u1A76\u1A77\u1A78\u1A79\u1A7A\u1A7B\u1A7C\u1A7D"+
-        "\u1A7E\u1A7F\u1A80\u1A81\u1A82\u1A83\u1A84\u1A85"+
-        "\u1A86\u1A87\u1A88\u1A89\u1A8A\u1A8B\u1A8C\u1A8D"+
-        "\u1A8E\u1A8F\u1A90\u1A91\u1A92\u1A93\u1A94\u1A95"+
-        "\u1A96\u1A97\u1A98\u1A99\u1A9A\u1A9B\u1A9C\u1A9D"+
-        "\u1A9E\u1A9F\u1AA0\u1AA1\u1AA2\u1AA3\u1AA4\u1AA5"+
-        "\u1AA6\u1AA7\u1AA8\u1AA9\u1AAA\u1AAB\u1AAC\u1AAD"+
-        "\u1AAE\u1AAF\u1AB0\u1AB1\u1AB2\u1AB3\u1AB4\u1AB5"+
-        "\u1AB6\u1AB7\u1AB8\u1AB9\u1ABA\u1ABB\u1ABC\u1ABD"+
-        "\u1ABE\u1ABF\u1AC0\u1AC1\u1AC2\u1AC3\u1AC4\u1AC5"+
-        "\u1AC6\u1AC7\u1AC8\u1AC9\u1ACA\u1ACB\u1ACC\u1ACD"+
-        "\u1ACE\u1ACF\u1AD0\u1AD1\u1AD2\u1AD3\u1AD4\u1AD5"+
-        "\u1AD6\u1AD7\u1AD8\u1AD9\u1ADA\u1ADB\u1ADC\u1ADD"+
-        "\u1ADE\u1ADF\u1AE0\u1AE1\u1AE2\u1AE3\u1AE4\u1AE5"+
-        "\u1AE6\u1AE7\u1AE8\u1AE9\u1AEA\u1AEB\u1AEC\u1AED"+
-        "\u1AEE\u1AEF\u1AF0\u1AF1\u1AF2\u1AF3\u1AF4\u1AF5"+
-        "\u1AF6\u1AF7\u1AF8\u1AF9\u1AFA\u1AFB\u1AFC\u1AFD"+
-        "\u1AFE\u1AFF\u1B00\u1B01\u1B02\u1B03\u1B04\u1B05"+
-        "\u1B06\u1B07\u1B08\u1B09\u1B0A\u1B0B\u1B0C\u1B0D"+
-        "\u1B0E\u1B0F\u1B10\u1B11\u1B12\u1B13\u1B14\u1B15"+
-        "\u1B16\u1B17\u1B18\u1B19\u1B1A\u1B1B\u1B1C\u1B1D"+
-        "\u1B1E\u1B1F\u1B20\u1B21\u1B22\u1B23\u1B24\u1B25"+
-        "\u1B26\u1B27\u1B28\u1B29\u1B2A\u1B2B\u1B2C\u1B2D"+
-        "\u1B2E\u1B2F\u1B30\u1B31\u1B32\u1B33\u1B34\u1B35"+
-        "\u1B36\u1B37\u1B38\u1B39\u1B3A\u1B3B\u1B3C\u1B3D"+
-        "\u1B3E\u1B3F\u1B40\u1B41\u1B42\u1B43\u1B44\u1B45"+
-        "\u1B46\u1B47\u1B48\u1B49\u1B4A\u1B4B\u1B4C\u1B4D"+
-        "\u1B4E\u1B4F\u1B50\u1B51\u1B52\u1B53\u1B54\u1B55"+
-        "\u1B56\u1B57\u1B58\u1B59\u1B5A\u1B5B\u1B5C\u1B5D"+
-        "\u1B5E\u1B5F\u1B60\u1B61\u1B62\u1B63\u1B64\u1B65"+
-        "\u1B66\u1B67\u1B68\u1B69\u1B6A\u1B6B\u1B6C\u1B6D"+
-        "\u1B6E\u1B6F\u1B70\u1B71\u1B72\u1B73\u1B74\u1B75"+
-        "\u1B76\u1B77\u1B78\u1B79\u1B7A\u1B7B\u1B7C\u1B7D"+
-        "\u1B7E\u1B7F\u1B80\u1B81\u1B82\u1B83\u1B84\u1B85"+
-        "\u1B86\u1B87\u1B88\u1B89\u1B8A\u1B8B\u1B8C\u1B8D"+
-        "\u1B8E\u1B8F\u1B90\u1B91\u1B92\u1B93\u1B94\u1B95"+
-        "\u1B96\u1B97\u1B98\u1B99\u1B9A\u1B9B\u1B9C\u1B9D"+
-        "\u1B9E\u1B9F\u1BA0\u1BA1\u1BA2\u1BA3\u1BA4\u1BA5"+
-        "\u1BA6\u1BA7\u1BA8\u1BA9\u1BAA\u1BAB\u1BAC\u1BAD"+
-        "\u1BAE\u1BAF\u1BB0\u1BB1\u1BB2\u1BB3\u1BB4\u1BB5"+
-        "\u1BB6\u1BB7\u1BB8\u1BB9\u1BBA\u1BBB\u1BBC\u1BBD"+
-        "\u1BBE\u1BBF\u1BC0\u1BC1\u1BC2\u1BC3\u1BC4\u1BC5"+
-        "\u1BC6\u1BC7\u1BC8\u1BC9\u1BCA\u1BCB\u1BCC\u1BCD"+
-        "\u1BCE\u1BCF\u1BD0\u1BD1\u1BD2\u1BD3\u1BD4\u1BD5"+
-        "\u1BD6\u1BD7\u1BD8\u1BD9\u1BDA\u1BDB\u1BDC\u1BDD"+
-        "\u1BDE\u1BDF\u1BE0\u1BE1\u1BE2\u1BE3\u1BE4\u1BE5"+
-        "\u1BE6\u1BE7\u1BE8\u1BE9\u1BEA\u1BEB\u1BEC\u1BED"+
-        "\u1BEE\u1BEF\u1BF0\u1BF1\u1BF2\u1BF3\u1BF4\u1BF5"+
-        "\u1BF6\u1BF7\u1BF8\u1BF9\u1BFA\u1BFB\u1BFC\u1BFD"+
-        "\u1BFE\u1BFF\u1C00\u1C01\u1C02\u1C03\u1C04\u1C05"+
-        "\u1C06\u1C07\u1C08\u1C09\u1C0A\u1C0B\u1C0C\u1C0D"+
-        "\u1C0E\u1C0F\u1C10\u1C11\u1C12\u1C13\u1C14\u1C15"+
-        "\u1C16\u1C17\u1C18\u1C19\u1C1A\u1C1B\u1C1C\u1C1D"+
-        "\u1C1E\u1C1F\u1C20\u1C21\u1C22\u1C23\u1C24\u1C25"+
-        "\u1C26\u1C27\u1C28\u1C29\u1C2A\u1C2B\u1C2C\u1C2D"+
-        "\u1C2E\u1C2F\u1C30\u1C31\u1C32\u1C33\u1C34\u1C35"+
-        "\u1C36\u1C37\u1C38\u1C39\u1C3A\u1C3B\u1C3C\u1C3D"+
-        "\u1C3E\u1C3F\u1C40\u1C41\u1C42\u1C43\u1C44\u1C45"+
-        "\u1C46\u1C47\u1C48\u1C49\u1C4A\u1C4B\u1C4C\u1C4D"+
-        "\u1C4E\u1C4F\u1C50\u1C51\u1C52\u1C53\u1C54\u1C55"+
-        "\u1C56\u1C57\u1C58\u1C59\u1C5A\u1C5B\u1C5C\u1C5D"+
-        "\u1C5E\u1C5F\u1C60\u1C61\u1C62\u1C63\u1C64\u1C65"+
-        "\u1C66\u1C67\u1C68\u1C69\u1C6A\u1C6B\u1C6C\u1C6D"+
-        "\u1C6E\u1C6F\u1C70\u1C71\u1C72\u1C73\u1C74\u1C75"+
-        "\u1C76\u1C77\u1C78\u1C79\u1C7A\u1C7B\u1C7C\u1C7D"+
-        "\u1C7E\u1C7F\u1C80\u1C81\u1C82\u1C83\u1C84\u1C85"+
-        "\u1C86\u1C87\u1C88\u1C89\u1C8A\u1C8B\u1C8C\u1C8D"+
-        "\u1C8E\u1C8F\u1C90\u1C91\u1C92\u1C93\u1C94\u1C95"+
-        "\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D"+
-        "\u1C9E\u1C9F\u1CA0\u1CA1\u1CA2\u1CA3\u1CA4\u1CA5"+
-        "\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD"+
-        "\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2\u1CB3\u1CB4\u1CB5"+
-        "\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBB\u1CBC\u1CBD"+
-        "\u1CBE\u1CBF\u1CC0\u1CC1\u1CC2\u1CC3\u1CC4\u1CC5"+
-        "\u1CC6\u1CC7\u1CC8\u1CC9\u1CCA\u1CCB\u1CCC\u1CCD"+
-        "\u1CCE\u1CCF\u1CD0\u1CD1\u1CD2\u1CD3\u1CD4\u1CD5"+
-        "\u1CD6\u1CD7\u1CD8\u1CD9\u1CDA\u1CDB\u1CDC\u1CDD"+
-        "\u1CDE\u1CDF\u1CE0\u1CE1\u1CE2\u1CE3\u1CE4\u1CE5"+
-        "\u1CE6\u1CE7\u1CE8\u1CE9\u1CEA\u1CEB\u1CEC\u1CED"+
-        "\u1CEE\u1CEF\u1CF0\u1CF1\u1CF2\u1CF3\u1CF4\u1CF5"+
-        "\u1CF6\u1CF7\u1CF8\u1CF9\u1CFA\u1CFB\u1CFC\u1CFD"+
-        "\u1CFE\u1CFF\u1D00\u1D01\u1D02\u1D03\u1D04\u1D05"+
-        "\u1D06\u1D07\u1D08\u1D09\u1D0A\u1D0B\u1D0C\u1D0D"+
-        "\u1D0E\u1D0F\u1D10\u1D11\u1D12\u1D13\u1D14\u1D15"+
-        "\u1D16\u1D17\u1D18\u1D19\u1D1A\u1D1B\u1D1C\u1D1D"+
-        "\u1D1E\u1D1F\u1D20\u1D21\u1D22\u1D23\u1D24\u1D25"+
-        "\u1D26\u1D27\u1D28\u1D29\u1D2A\u1D2B\u1D2C\u1D2D"+
-        "\u1D2E\u1D2F\u1D30\u1D31\u1D32\u1D33\u1D34\u1D35"+
-        "\u1D36\u1D37\u1D38\u1D39\u1D3A\u1D3B\u1D3C\u1D3D"+
-        "\u1D3E\u1D3F\u1D40\u1D41\u1D42\u1D43\u1D44\u1D45"+
-        "\u1D46\u1D47\u1D48\u1D49\u1D4A\u1D4B\u1D4C\u1D4D"+
-        "\u1D4E\u1D4F\u1D50\u1D51\u1D52\u1D53\u1D54\u1D55"+
-        "\u1D56\u1D57\u1D58\u1D59\u1D5A\u1D5B\u1D5C\u1D5D"+
-        "\u1D5E\u1D5F\u1D60\u1D61\u1D62\u1D63\u1D64\u1D65"+
-        "\u1D66\u1D67\u1D68\u1D69\u1D6A\u1D6B\u1D6C\u1D6D"+
-        "\u1D6E\u1D6F\u1D70\u1D71\u1D72\u1D73\u1D74\u1D75"+
-        "\u1D76\u1D77\u1D78\u1D79\u1D7A\u1D7B\u1D7C\u1D7D"+
-        "\u1D7E\u1D7F\u1D80\u1D81\u1D82\u1D83\u1D84\u1D85"+
-        "\u1D86\u1D87\u1D88\u1D89\u1D8A\u1D8B\u1D8C\u1D8D"+
-        "\u1D8E\u1D8F\u1D90\u1D91\u1D92\u1D93\u1D94\u1D95"+
-        "\u1D96\u1D97\u1D98\u1D99\u1D9A\u1D9B\u1D9C\u1D9D"+
-        "\u1D9E\u1D9F\u1DA0\u1DA1\u1DA2\u1DA3\u1DA4\u1DA5"+
-        "\u1DA6\u1DA7\u1DA8\u1DA9\u1DAA\u1DAB\u1DAC\u1DAD"+
-        "\u1DAE\u1DAF\u1DB0\u1DB1\u1DB2\u1DB3\u1DB4\u1DB5"+
-        "\u1DB6\u1DB7\u1DB8\u1DB9\u1DBA\u1DBB\u1DBC\u1DBD"+
-        "\u1DBE\u1DBF\u1DC0\u1DC1\u1DC2\u1DC3\u1DC4\u1DC5"+
-        "\u1DC6\u1DC7\u1DC8\u1DC9\u1DCA\u1DCB\u1DCC\u1DCD"+
-        "\u1DCE\u1DCF\u1DD0\u1DD1\u1DD2\u1DD3\u1DD4\u1DD5"+
-        "\u1DD6\u1DD7\u1DD8\u1DD9\u1DDA\u1DDB\u1DDC\u1DDD"+
-        "\u1DDE\u1DDF\u1DE0\u1DE1\u1DE2\u1DE3\u1DE4\u1DE5"+
-        "\u1DE6\u1DE7\u1DE8\u1DE9\u1DEA\u1DEB\u1DEC\u1DED"+
-        "\u1DEE\u1DEF\u1DF0\u1DF1\u1DF2\u1DF3\u1DF4\u1DF5"+
-        "\u1DF6\u1DF7\u1DF8\u1DF9\u1DFA\u1DFB\u1DFC\u1DFD"+
-        "\u1DFE\u1DFF\u1E00\u1E01\u1E02\u1E03\u1E04\u1E05"+
-        "\u1E06\u1E07\u1E08\u1E09\u1E0A\u1E0B\u1E0C\u1E0D"+
-        "\u1E0E\u1E0F\u1E10\u1E11\u1E12\u1E13\u1E14\u1E15"+
-        "\u1E16\u1E17\u1E18\u1E19\u1E1A\u1E1B\u1E1C\u1E1D"+
-        "\u1E1E\u1E1F\u1E20\u1E21\u1E22\u1E23\u1E24\u1E25"+
-        "\u1E26\u1E27\u1E28\u1E29\u1E2A\u1E2B\u1E2C\u1E2D"+
-        "\u1E2E\u1E2F\u1E30\u1E31\u1E32\u1E33\u1E34\u1E35"+
-        "\u1E36\u1E37\u1E38\u1E39\u1E3A\u1E3B\u1E3C\u1E3D"+
-        "\u1E3E\u1E3F\u1E40\u1E41\u1E42\u1E43\u1E44\u1E45"+
-        "\u1E46\u1E47\u1E48\u1E49\u1E4A\u1E4B\u1E4C\u1E4D"+
-        "\u1E4E\u1E4F\u1E50\u1E51\u1E52\u1E53\u1E54\u1E55"+
-        "\u1E56\u1E57\u1E58\u1E59\u1E5A\u1E5B\u1E5C\u1E5D"+
-        "\u1E5E\u1E5F\u1E60\u1E61\u1E62\u1E63\u1E64\u1E65"+
-        "\u1E66\u1E67\u1E68\u1E69\u1E6A\u1E6B\u1E6C\u1E6D"+
-        "\u1E6E\u1E6F\u1E70\u1E71\u1E72\u1E73\u1E74\u1E75"+
-        "\u1E76\u1E77\u1E78\u1E79\u1E7A\u1E7B\u1E7C\u1E7D"+
-        "\u1E7E\u1E7F\u1E80\u1E81\u1E82\u1E83\u1E84\u1E85"+
-        "\u1E86\u1E87\u1E88\u1E89\u1E8A\u1E8B\u1E8C\u1E8D"+
-        "\u1E8E\u1E8F\u1E90\u1E91\u1E92\u1E93\u1E94\u1E95"+
-        "\u1E96\u1E97\u1E98\u1E99\u1E9A\u1E9B\u1E9C\u1E9D"+
-        "\u1E9E\u1E9F\u1EA0\u1EA1\u1EA2\u1EA3\u1EA4\u1EA5"+
-        "\u1EA6\u1EA7\u1EA8\u1EA9\u1EAA\u1EAB\u1EAC\u1EAD"+
-        "\u1EAE\u1EAF\u1EB0\u1EB1\u1EB2\u1EB3\u1EB4\u1EB5"+
-        "\u1EB6\u1EB7\u1EB8\u1EB9\u1EBA\u1EBB\u1EBC\u1EBD"+
-        "\u1EBE\u1EBF\u1EC0\u1EC1\u1EC2\u1EC3\u1EC4\u1EC5"+
-        "\u1EC6\u1EC7\u1EC8\u1EC9\u1ECA\u1ECB\u1ECC\u1ECD"+
-        "\u1ECE\u1ECF\u1ED0\u1ED1\u1ED2\u1ED3\u1ED4\u1ED5"+
-        "\u1ED6\u1ED7\u1ED8\u1ED9\u1EDA\u1EDB\u1EDC\u1EDD"+
-        "\u1EDE\u1EDF\u1EE0\u1EE1\u1EE2\u1EE3\u1EE4\u1EE5"+
-        "\u1EE6\u1EE7\u1EE8\u1EE9\u1EEA\u1EEB\u1EEC\u1EED"+
-        "\u1EEE\u1EEF\u1EF0\u1EF1\u1EF2\u1EF3\u1EF4\u1EF5"+
-        "\u1EF6\u1EF7\u1EF8\u1EF9\u1EFA\u1EFB\u1EFC\u1EFD"+
-        "\u1EFE\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05"+
-        "\u1F06\u1F07\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D"+
-        "\u1F0E\u1F0F\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15"+
-        "\u1F16\u1F17\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D"+
-        "\u1F1E\u1F1F\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25"+
-        "\u1F26\u1F27\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D"+
-        "\u1F2E\u1F2F\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35"+
-        "\u1F36\u1F37\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D"+
-        "\u1F3E\u1F3F\u1F40\u1F41\u1F42\u1F43\u1F44\u1F45"+
-        "\u1F46\u1F47\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D"+
-        "\u1F4E\u1F4F\u1F50\u1F51\u1F52\u1F53\u1F54\u1F55"+
-        "\u1F56\u1F57\u1F58\u1F59\u1F5A\u1F5B\u1F5C\u1F5D"+
-        "\u1F5E\u1F5F\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65"+
-        "\u1F66\u1F67\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D"+
-        "\u1F6E\u1F6F\u1F70\u1F71\u1F72\u1F73\u1F74\u1F75"+
-        "\u1F76\u1F77\u1F78\u1F79\u1F7A\u1F7B\u1F7C\u1F7D"+
-        "\u1F7E\u1F7F\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85"+
-        "\u1F86\u1F87\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D"+
-        "\u1F8E\u1F8F\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95"+
-        "\u1F96\u1F97\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D"+
-        "\u1F9E\u1F9F\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5"+
-        "\u1FA6\u1FA7\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD"+
-        "\u1FAE\u1FAF\u1FB0\u1FB1\u1FB2\u1FB3\u1FB4\u1FB5"+
-        "\u1FB6\u1FB7\u1FB8\u1FB9\u1FBA\u1FBB\u1FBC\u1FBD"+
-        "\u1FBE\u1FBF\u1FC0\u1FC1\u1FC2\u1FC3\u1FC4\u1FC5"+
-        "\u1FC6\u1FC7\u1FC8\u1FC9\u1FCA\u1FCB\u1FCC\u1FCD"+
-        "\u1FCE\u1FCF\u1FD0\u1FD1\u1FD2\u1FD3\u1FD4\u1FD5"+
-        "\u1FD6\u1FD7\u1FD8\u1FD9\u1FDA\u1FDB\u1FDC\u1FDD"+
-        "\u1FDE\u1FDF\u1FE0\u1FE1\u1FE2\u1FE3\u1FE4\u1FE5"+
-        "\u1FE6\u1FE7\u1FE8\u1FE9\u1FEA\u1FEB\u1FEC\u1FED"+
-        "\u1FEE\u1FEF\u1FF0\u1FF1\u1FF2\u1FF3\u1FF4\u1FF5"+
-        "\u1FF6\u1FF7\u1FF8\u1FF9\u1FFA\u1FFB\u1FFC\u1FFD"+
-        "\u1FFE\u1FFF\u2000\u2001\u2002\u2003\u2004\u2005"+
-        "\u2006\u2007\u2008\u2009\u200A\u200B\u200C\u200D"+
-        "\u200E\u200F\u2011\u2012\u2017\u201A\u201B\u201E"+
-        "\u201F\u2020\u2021\u2022\u2023\u2024\u2027\u2028"+
-        "\u2029\u202A\u202B\u202C\u202D\u202E\u202F\u2031"+
-        "\u2034\u2036\u2037\u2038\u2039\u203A\u203C\u203D"+
-        "\u203E\u203F\u2040\u2041\u2042\u2043\u2044\u2045"+
-        "\u2046\u2047\u2048\u2049\u204A\u204B\u204C\u204D"+
-        "\u204E\u204F\u2050\u2051\u2052\u2053\u2054\u2055"+
-        "\u2056\u2057\u2058\u2059\u205A\u205B\u205C\u205D"+
-        "\u205E\u205F\u2060\u2061\u2062\u2063\u2064\u2065"+
-        "\u2066\u2067\u2068\u2069\u206A\u206B\u206C\u206D"+
-        "\u206E\u206F\u2070\u2071\u2072\u2073\u2074\u2075"+
-        "\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D"+
-        "\u207E\u207F\u2080\u2081\u2082\u2083\u2084\u2085"+
-        "\u2086\u2087\u2088\u2089\u208A\u208B\u208C\u208D"+
-        "\u208E\u208F\u2090\u2091\u2092\u2093\u2094\u2095"+
-        "\u2096\u2097\u2098\u2099\u209A\u209B\u209C\u209D"+
-        "\u209E\u209F\u20A0\u20A1\u20A2\u20A3\u20A4\u20A5"+
-        "\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB\u20AD\u20AE"+
-        "\u20AF\u20B0\u20B1\u20B2\u20B3\u20B4\u20B5\u20B6"+
-        "\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC\u20BD\u20BE"+
-        "\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4\u20C5\u20C6"+
-        "\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC\u20CD\u20CE"+
-        "\u20CF\u20D0\u20D1\u20D2\u20D3\u20D4\u20D5\u20D6"+
-        "\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC\u20DD\u20DE"+
-        "\u20DF\u20E0\u20E1\u20E2\u20E3\u20E4\u20E5\u20E6"+
-        "\u20E7\u20E8\u20E9\u20EA\u20EB\u20EC\u20ED\u20EE"+
-        "\u20EF\u20F0\u20F1\u20F2\u20F3\u20F4\u20F5\u20F6"+
-        "\u20F7\u20F8\u20F9\u20FA\u20FB\u20FC\u20FD\u20FE"+
-        "\u20FF\u2100\u2101\u2102\u2104\u2106\u2107\u2108"+
-        "\u210A\u210B\u210C\u210D\u210E\u210F\u2110\u2111"+
-        "\u2112\u2113\u2114\u2115\u2117\u2118\u2119\u211A"+
-        "\u211B\u211C\u211D\u211E\u211F\u2120\u2122\u2123"+
-        "\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B"+
-        "\u212C\u212D\u212E\u212F\u2130\u2131\u2132\u2133";
-
-    private final static String innerDecoderIndex2=
-        "\u2134\u2135\u2136\u2137\u2138\u2139\u213A\u213B"+
-        "\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143"+
-        "\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B"+
-        "\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153"+
-        "\u2154\u2155\u2156\u2157\u2158\u2159\u215A\u215B"+
-        "\u215C\u215D\u215E\u215F\u216C\u216D\u216E\u216F"+
-        "\u217A\u217B\u217C\u217D\u217E\u217F\u2180\u2181"+
-        "\u2182\u2183\u2184\u2185\u2186\u2187\u2188\u2189"+
-        "\u218A\u218B\u218C\u218D\u218E\u218F\u2194\u2195"+
-        "\u219A\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1"+
-        "\u21A2\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9"+
-        "\u21AA\u21AB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1"+
-        "\u21B2\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9"+
-        "\u21BA\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1"+
-        "\u21C2\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9"+
-        "\u21CA\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1"+
-        "\u21D2\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9"+
-        "\u21DA\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1"+
-        "\u21E2\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9"+
-        "\u21EA\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1"+
-        "\u21F2\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9"+
-        "\u21FA\u21FB\u21FC\u21FD\u21FE\u21FF\u2200\u2201"+
-        "\u2202\u2203\u2204\u2205\u2206\u2207\u2209\u220A"+
-        "\u220B\u220C\u220D\u220E\u2210\u2212\u2213\u2214"+
-        "\u2216\u2217\u2218\u2219\u221B\u221C\u2221\u2222"+
-        "\u2224\u2226\u222C\u222D\u222F\u2230\u2231\u2232"+
-        "\u2233\u2238\u2239\u223A\u223B\u223C\u223E\u223F"+
-        "\u2240\u2241\u2242\u2243\u2244\u2245\u2246\u2247"+
-        "\u2249\u224A\u224B\u224D\u224E\u224F\u2250\u2251"+
-        "\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A"+
-        "\u225B\u225C\u225D\u225E\u225F\u2262\u2263\u2268"+
-        "\u2269\u226A\u226B\u226C\u226D\u2270\u2271\u2272"+
-        "\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A"+
-        "\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282"+
-        "\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A"+
-        "\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292"+
-        "\u2293\u2294\u2296\u2297\u2298\u229A\u229B\u229C"+
-        "\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3\u22A4"+
-        "\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB\u22AC\u22AD"+
-        "\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3\u22B4\u22B5"+
-        "\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB\u22BC\u22BD"+
-        "\u22BE\u22C0\u22C1\u22C2\u22C3\u22C4\u22C5\u22C6"+
-        "\u22C7\u22C8\u22C9\u22CA\u22CB\u22CC\u22CD\u22CE"+
-        "\u22CF\u22D0\u22D1\u22D2\u22D3\u22D4\u22D5\u22D6"+
-        "\u22D7\u22D8\u22D9\u22DA\u22DB\u22DC\u22DD\u22DE"+
-        "\u22DF\u22E0\u22E1\u22E2\u22E3\u22E4\u22E5\u22E6"+
-        "\u22E7\u22E8\u22E9\u22EA\u22EB\u22EC\u22ED\u22EE"+
-        "\u22EF\u22F0\u22F1\u22F2\u22F3\u22F4\u22F5\u22F6"+
-        "\u22F7\u22F8\u22F9\u22FA\u22FB\u22FC\u22FD\u22FE"+
-        "\u22FF\u2300\u2301\u2302\u2303\u2304\u2305\u2306"+
-        "\u2307\u2308\u2309\u230A\u230B\u230C\u230D\u230E"+
-        "\u230F\u2310\u2311\u2313\u2314\u2315\u2316\u2317"+
-        "\u2318\u2319\u231A\u231B\u231C\u231D\u231E\u231F"+
-        "\u2320\u2321\u2322\u2323\u2324\u2325\u2326\u2327"+
-        "\u2328\u2329\u232A\u232B\u232C\u232D\u232E\u232F"+
-        "\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337"+
-        "\u2338\u2339\u233A\u233B\u233C\u233D\u233E\u233F"+
-        "\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347"+
-        "\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F"+
-        "\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357"+
-        "\u2358\u2359\u235A\u235B\u235C\u235D\u235E\u235F"+
-        "\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367"+
-        "\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F"+
-        "\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377"+
-        "\u2378\u2379\u237A\u237B\u237C\u237D\u237E\u237F"+
-        "\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387"+
-        "\u2388\u2389\u238A\u238B\u238C\u238D\u238E\u238F"+
-        "\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397"+
-        "\u2398\u2399\u239A\u239B\u239C\u239D\u239E\u239F"+
-        "\u23A0\u23A1\u23A2\u23A3\u23A4\u23A5\u23A6\u23A7"+
-        "\u23A8\u23A9\u23AA\u23AB\u23AC\u23AD\u23AE\u23AF"+
-        "\u23B0\u23B1\u23B2\u23B3\u23B4\u23B5\u23B6\u23B7"+
-        "\u23B8\u23B9\u23BA\u23BB\u23BC\u23BD\u23BE\u23BF"+
-        "\u23C0\u23C1\u23C2\u23C3\u23C4\u23C5\u23C6\u23C7"+
-        "\u23C8\u23C9\u23CA\u23CB\u23CC\u23CD\u23CE\u23CF"+
-        "\u23D0\u23D1\u23D2\u23D3\u23D4\u23D5\u23D6\u23D7"+
-        "\u23D8\u23D9\u23DA\u23DB\u23DC\u23DD\u23DE\u23DF"+
-        "\u23E0\u23E1\u23E2\u23E3\u23E4\u23E5\u23E6\u23E7"+
-        "\u23E8\u23E9\u23EA\u23EB\u23EC\u23ED\u23EE\u23EF"+
-        "\u23F0\u23F1\u23F2\u23F3\u23F4\u23F5\u23F6\u23F7"+
-        "\u23F8\u23F9\u23FA\u23FB\u23FC\u23FD\u23FE\u23FF"+
-        "\u2400\u2401\u2402\u2403\u2404\u2405\u2406\u2407"+
-        "\u2408\u2409\u240A\u240B\u240C\u240D\u240E\u240F"+
-        "\u2410\u2411\u2412\u2413\u2414\u2415\u2416\u2417"+
-        "\u2418\u2419\u241A\u241B\u241C\u241D\u241E\u241F"+
-        "\u2420\u2421\u2422\u2423\u2424\u2425\u2426\u2427"+
-        "\u2428\u2429\u242A\u242B\u242C\u242D\u242E\u242F"+
-        "\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437"+
-        "\u2438\u2439\u243A\u243B\u243C\u243D\u243E\u243F"+
-        "\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447"+
-        "\u2448\u2449\u244A\u244B\u244C\u244D\u244E\u244F"+
-        "\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457"+
-        "\u2458\u2459\u245A\u245B\u245C\u245D\u245E\u245F"+
-        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
-        "\u2472\u2473\u249C\u249D\u249E\u249F\u24A0\u24A1"+
-        "\u24A2\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9"+
-        "\u24AA\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1"+
-        "\u24B2\u24B3\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9"+
-        "\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1"+
-        "\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9"+
-        "\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1"+
-        "\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9"+
-        "\u24DA\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1"+
-        "\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9"+
-        "\u24EA\u24EB\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1"+
-        "\u24F2\u24F3\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9"+
-        "\u24FA\u24FB\u24FC\u24FD\u24FE\u24FF\u254C\u254D"+
-        "\u254E\u254F\u2574\u2575\u2576\u2577\u2578\u2579"+
-        "\u257A\u257B\u257C\u257D\u257E\u257F\u2580\u2590"+
-        "\u2591\u2592\u2596\u2597\u2598\u2599\u259A\u259B"+
-        "\u259C\u259D\u259E\u259F\u25A2\u25A3\u25A4\u25A5"+
-        "\u25A6\u25A7\u25A8\u25A9\u25AA\u25AB\u25AC\u25AD"+
-        "\u25AE\u25AF\u25B0\u25B1\u25B4\u25B5\u25B6\u25B7"+
-        "\u25B8\u25B9\u25BA\u25BB\u25BE\u25BF\u25C0\u25C1"+
-        "\u25C2\u25C3\u25C4\u25C5\u25C8\u25C9\u25CA\u25CC"+
-        "\u25CD\u25D0\u25D1\u25D2\u25D3\u25D4\u25D5\u25D6"+
-        "\u25D7\u25D8\u25D9\u25DA\u25DB\u25DC\u25DD\u25DE"+
-        "\u25DF\u25E0\u25E1\u25E6\u25E7\u25E8\u25E9\u25EA"+
-        "\u25EB\u25EC\u25ED\u25EE\u25EF\u25F0\u25F1\u25F2"+
-        "\u25F3\u25F4\u25F5\u25F6\u25F7\u25F8\u25F9\u25FA"+
-        "\u25FB\u25FC\u25FD\u25FE\u25FF\u2600\u2601\u2602"+
-        "\u2603\u2604\u2607\u2608\u260A\u260B\u260C\u260D"+
-        "\u260E\u260F\u2610\u2611\u2612\u2613\u2614\u2615"+
-        "\u2616\u2617\u2618\u2619\u261A\u261B\u261C\u261D"+
-        "\u261E\u261F\u2620\u2621\u2622\u2623\u2624\u2625"+
-        "\u2626\u2627\u2628\u2629\u262A\u262B\u262C\u262D"+
-        "\u262E\u262F\u2630\u2631\u2632\u2633\u2634\u2635"+
-        "\u2636\u2637\u2638\u2639\u263A\u263B\u263C\u263D"+
-        "\u263E\u263F\u2641\u2643\u2644\u2645\u2646\u2647"+
-        "\u2648\u2649\u264A\u264B\u264C\u264D\u264E\u264F"+
-        "\u2650\u2651\u2652\u2653\u2654\u2655\u2656\u2657"+
-        "\u2658\u2659\u265A\u265B\u265C\u265D\u265E\u265F"+
-        "\u2660\u2661\u2662\u2663\u2664\u2665\u2666\u2667"+
-        "\u2668\u2669\u266A\u266B\u266C\u266D\u266E\u266F"+
-        "\u2670\u2671\u2672\u2673\u2674\u2675\u2676\u2677"+
-        "\u2678\u2679\u267A\u267B\u267C\u267D\u267E\u267F"+
-        "\u2680\u2681\u2682\u2683\u2684\u2685\u2686\u2687"+
-        "\u2688\u2689\u268A\u268B\u268C\u268D\u268E\u268F"+
-        "\u2690\u2691\u2692\u2693\u2694\u2695\u2696\u2697"+
-        "\u2698\u2699\u269A\u269B\u269C\u269D\u269E\u269F"+
-        "\u26A0\u26A1\u26A2\u26A3\u26A4\u26A5\u26A6\u26A7"+
-        "\u26A8\u26A9\u26AA\u26AB\u26AC\u26AD\u26AE\u26AF"+
-        "\u26B0\u26B1\u26B2\u26B3\u26B4\u26B5\u26B6\u26B7"+
-        "\u26B8\u26B9\u26BA\u26BB\u26BC\u26BD\u26BE\u26BF"+
-        "\u26C0\u26C1\u26C2\u26C3\u26C4\u26C5\u26C6\u26C7"+
-        "\u26C8\u26C9\u26CA\u26CB\u26CC\u26CD\u26CE\u26CF"+
-        "\u26D0\u26D1\u26D2\u26D3\u26D4\u26D5\u26D6\u26D7"+
-        "\u26D8\u26D9\u26DA\u26DB\u26DC\u26DD\u26DE\u26DF"+
-        "\u26E0\u26E1\u26E2\u26E3\u26E4\u26E5\u26E6\u26E7"+
-        "\u26E8\u26E9\u26EA\u26EB\u26EC\u26ED\u26EE\u26EF"+
-        "\u26F0\u26F1\u26F2\u26F3\u26F4\u26F5\u26F6\u26F7"+
-        "\u26F8\u26F9\u26FA\u26FB\u26FC\u26FD\u26FE\u26FF"+
-        "\u2700\u2701\u2702\u2703\u2704\u2705\u2706\u2707"+
-        "\u2708\u2709\u270A\u270B\u270C\u270D\u270E\u270F"+
-        "\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717"+
-        "\u2718\u2719\u271A\u271B\u271C\u271D\u271E\u271F"+
-        "\u2720\u2721\u2722\u2723\u2724\u2725\u2726\u2727"+
-        "\u2728\u2729\u272A\u272B\u272C\u272D\u272E\u272F"+
-        "\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737"+
-        "\u2738\u2739\u273A\u273B\u273C\u273D\u273E\u273F"+
-        "\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747"+
-        "\u2748\u2749\u274A\u274B\u274C\u274D\u274E\u274F"+
-        "\u2750\u2751\u2752\u2753\u2754\u2755\u2756\u2757"+
-        "\u2758\u2759\u275A\u275B\u275C\u275D\u275E\u275F"+
-        "\u2760\u2761\u2762\u2763\u2764\u2765\u2766\u2767"+
-        "\u2768\u2769\u276A\u276B\u276C\u276D\u276E\u276F"+
-        "\u2770\u2771\u2772\u2773\u2774\u2775\u2776\u2777"+
-        "\u2778\u2779\u277A\u277B\u277C\u277D\u277E\u277F"+
-        "\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787"+
-        "\u2788\u2789\u278A\u278B\u278C\u278D\u278E\u278F"+
-        "\u2790\u2791\u2792\u2793\u2794\u2795\u2796\u2797"+
-        "\u2798\u2799\u279A\u279B\u279C\u279D\u279E\u279F"+
-        "\u27A0\u27A1\u27A2\u27A3\u27A4\u27A5\u27A6\u27A7"+
-        "\u27A8\u27A9\u27AA\u27AB\u27AC\u27AD\u27AE\u27AF"+
-        "\u27B0\u27B1\u27B2\u27B3\u27B4\u27B5\u27B6\u27B7"+
-        "\u27B8\u27B9\u27BA\u27BB\u27BC\u27BD\u27BE\u27BF"+
-        "\u27C0\u27C1\u27C2\u27C3\u27C4\u27C5\u27C6\u27C7"+
-        "\u27C8\u27C9\u27CA\u27CB\u27CC\u27CD\u27CE\u27CF"+
-        "\u27D0\u27D1\u27D2\u27D3\u27D4\u27D5\u27D6\u27D7"+
-        "\u27D8\u27D9\u27DA\u27DB\u27DC\u27DD\u27DE\u27DF"+
-        "\u27E0\u27E1\u27E2\u27E3\u27E4\u27E5\u27E6\u27E7"+
-        "\u27E8\u27E9\u27EA\u27EB\u27EC\u27ED\u27EE\u27EF"+
-        "\u27F0\u27F1\u27F2\u27F3\u27F4\u27F5\u27F6\u27F7"+
-        "\u27F8\u27F9\u27FA\u27FB\u27FC\u27FD\u27FE\u27FF"+
-        "\u2800\u2801\u2802\u2803\u2804\u2805\u2806\u2807"+
-        "\u2808\u2809\u280A\u280B\u280C\u280D\u280E\u280F"+
-        "\u2810\u2811\u2812\u2813\u2814\u2815\u2816\u2817"+
-        "\u2818\u2819\u281A\u281B\u281C\u281D\u281E\u281F"+
-        "\u2820\u2821\u2822\u2823\u2824\u2825\u2826\u2827"+
-        "\u2828\u2829\u282A\u282B\u282C\u282D\u282E\u282F"+
-        "\u2830\u2831\u2832\u2833\u2834\u2835\u2836\u2837"+
-        "\u2838\u2839\u283A\u283B\u283C\u283D\u283E\u283F"+
-        "\u2840\u2841\u2842\u2843\u2844\u2845\u2846\u2847"+
-        "\u2848\u2849\u284A\u284B\u284C\u284D\u284E\u284F"+
-        "\u2850\u2851\u2852\u2853\u2854\u2855\u2856\u2857"+
-        "\u2858\u2859\u285A\u285B\u285C\u285D\u285E\u285F"+
-        "\u2860\u2861\u2862\u2863\u2864\u2865\u2866\u2867"+
-        "\u2868\u2869\u286A\u286B\u286C\u286D\u286E\u286F"+
-        "\u2870\u2871\u2872\u2873\u2874\u2875\u2876\u2877"+
-        "\u2878\u2879\u287A\u287B\u287C\u287D\u287E\u287F"+
-        "\u2880\u2881\u2882\u2883\u2884\u2885\u2886\u2887"+
-        "\u2888\u2889\u288A\u288B\u288C\u288D\u288E\u288F"+
-        "\u2890\u2891\u2892\u2893\u2894\u2895\u2896\u2897"+
-        "\u2898\u2899\u289A\u289B\u289C\u289D\u289E\u289F"+
-        "\u28A0\u28A1\u28A2\u28A3\u28A4\u28A5\u28A6\u28A7"+
-        "\u28A8\u28A9\u28AA\u28AB\u28AC\u28AD\u28AE\u28AF"+
-        "\u28B0\u28B1\u28B2\u28B3\u28B4\u28B5\u28B6\u28B7"+
-        "\u28B8\u28B9\u28BA\u28BB\u28BC\u28BD\u28BE\u28BF"+
-        "\u28C0\u28C1\u28C2\u28C3\u28C4\u28C5\u28C6\u28C7"+
-        "\u28C8\u28C9\u28CA\u28CB\u28CC\u28CD\u28CE\u28CF"+
-        "\u28D0\u28D1\u28D2\u28D3\u28D4\u28D5\u28D6\u28D7"+
-        "\u28D8\u28D9\u28DA\u28DB\u28DC\u28DD\u28DE\u28DF"+
-        "\u28E0\u28E1\u28E2\u28E3\u28E4\u28E5\u28E6\u28E7"+
-        "\u28E8\u28E9\u28EA\u28EB\u28EC\u28ED\u28EE\u28EF"+
-        "\u28F0\u28F1\u28F2\u28F3\u28F4\u28F5\u28F6\u28F7"+
-        "\u28F8\u28F9\u28FA\u28FB\u28FC\u28FD\u28FE\u28FF"+
-        "\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907"+
-        "\u2908\u2909\u290A\u290B\u290C\u290D\u290E\u290F"+
-        "\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917"+
-        "\u2918\u2919\u291A\u291B\u291C\u291D\u291E\u291F"+
-        "\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927"+
-        "\u2928\u2929\u292A\u292B\u292C\u292D\u292E\u292F"+
-        "\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937"+
-        "\u2938\u2939\u293A\u293B\u293C\u293D\u293E\u293F"+
-        "\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947"+
-        "\u2948\u2949\u294A\u294B\u294C\u294D\u294E\u294F"+
-        "\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957"+
-        "\u2958\u2959\u295A\u295B\u295C\u295D\u295E\u295F"+
-        "\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967"+
-        "\u2968\u2969\u296A\u296B\u296C\u296D\u296E\u296F"+
-        "\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977"+
-        "\u2978\u2979\u297A\u297B\u297C\u297D\u297E\u297F"+
-        "\u2980\u2981\u2982\u2983\u2984\u2985\u2986\u2987"+
-        "\u2988\u2989\u298A\u298B\u298C\u298D\u298E\u298F"+
-        "\u2990\u2991\u2992\u2993\u2994\u2995\u2996\u2997"+
-        "\u2998\u2999\u299A\u299B\u299C\u299D\u299E\u299F"+
-        "\u29A0\u29A1\u29A2\u29A3\u29A4\u29A5\u29A6\u29A7"+
-        "\u29A8\u29A9\u29AA\u29AB\u29AC\u29AD\u29AE\u29AF"+
-        "\u29B0\u29B1\u29B2\u29B3\u29B4\u29B5\u29B6\u29B7"+
-        "\u29B8\u29B9\u29BA\u29BB\u29BC\u29BD\u29BE\u29BF"+
-        "\u29C0\u29C1\u29C2\u29C3\u29C4\u29C5\u29C6\u29C7"+
-        "\u29C8\u29C9\u29CA\u29CB\u29CC\u29CD\u29CE\u29CF"+
-        "\u29D0\u29D1\u29D2\u29D3\u29D4\u29D5\u29D6\u29D7"+
-        "\u29D8\u29D9\u29DA\u29DB\u29DC\u29DD\u29DE\u29DF"+
-        "\u29E0\u29E1\u29E2\u29E3\u29E4\u29E5\u29E6\u29E7"+
-        "\u29E8\u29E9\u29EA\u29EB\u29EC\u29ED\u29EE\u29EF"+
-        "\u29F0\u29F1\u29F2\u29F3\u29F4\u29F5\u29F6\u29F7"+
-        "\u29F8\u29F9\u29FA\u29FB\u29FC\u29FD\u29FE\u29FF"+
-        "\u2A00\u2A01\u2A02\u2A03\u2A04\u2A05\u2A06\u2A07"+
-        "\u2A08\u2A09\u2A0A\u2A0B\u2A0C\u2A0D\u2A0E\u2A0F"+
-        "\u2A10\u2A11\u2A12\u2A13\u2A14\u2A15\u2A16\u2A17"+
-        "\u2A18\u2A19\u2A1A\u2A1B\u2A1C\u2A1D\u2A1E\u2A1F"+
-        "\u2A20\u2A21\u2A22\u2A23\u2A24\u2A25\u2A26\u2A27"+
-        "\u2A28\u2A29\u2A2A\u2A2B\u2A2C\u2A2D\u2A2E\u2A2F"+
-        "\u2A30\u2A31\u2A32\u2A33\u2A34\u2A35\u2A36\u2A37"+
-        "\u2A38\u2A39\u2A3A\u2A3B\u2A3C\u2A3D\u2A3E\u2A3F"+
-        "\u2A40\u2A41\u2A42\u2A43\u2A44\u2A45\u2A46\u2A47"+
-        "\u2A48\u2A49\u2A4A\u2A4B\u2A4C\u2A4D\u2A4E\u2A4F"+
-        "\u2A50\u2A51\u2A52\u2A53\u2A54\u2A55\u2A56\u2A57"+
-        "\u2A58\u2A59\u2A5A\u2A5B\u2A5C\u2A5D\u2A5E\u2A5F"+
-        "\u2A60\u2A61\u2A62\u2A63\u2A64\u2A65\u2A66\u2A67"+
-        "\u2A68\u2A69\u2A6A\u2A6B\u2A6C\u2A6D\u2A6E\u2A6F"+
-        "\u2A70\u2A71\u2A72\u2A73\u2A74\u2A75\u2A76\u2A77"+
-        "\u2A78\u2A79\u2A7A\u2A7B\u2A7C\u2A7D\u2A7E\u2A7F"+
-        "\u2A80\u2A81\u2A82\u2A83\u2A84\u2A85\u2A86\u2A87"+
-        "\u2A88\u2A89\u2A8A\u2A8B\u2A8C\u2A8D\u2A8E\u2A8F"+
-        "\u2A90\u2A91\u2A92\u2A93\u2A94\u2A95\u2A96\u2A97"+
-        "\u2A98\u2A99\u2A9A\u2A9B\u2A9C\u2A9D\u2A9E\u2A9F"+
-        "\u2AA0\u2AA1\u2AA2\u2AA3\u2AA4\u2AA5\u2AA6\u2AA7"+
-        "\u2AA8\u2AA9\u2AAA\u2AAB\u2AAC\u2AAD\u2AAE\u2AAF"+
-        "\u2AB0\u2AB1\u2AB2\u2AB3\u2AB4\u2AB5\u2AB6\u2AB7"+
-        "\u2AB8\u2AB9\u2ABA\u2ABB\u2ABC\u2ABD\u2ABE\u2ABF"+
-        "\u2AC0\u2AC1\u2AC2\u2AC3\u2AC4\u2AC5\u2AC6\u2AC7"+
-        "\u2AC8\u2AC9\u2ACA\u2ACB\u2ACC\u2ACD\u2ACE\u2ACF"+
-        "\u2AD0\u2AD1\u2AD2\u2AD3\u2AD4\u2AD5\u2AD6\u2AD7"+
-        "\u2AD8\u2AD9\u2ADA\u2ADB\u2ADC\u2ADD\u2ADE\u2ADF"+
-        "\u2AE0\u2AE1\u2AE2\u2AE3\u2AE4\u2AE5\u2AE6\u2AE7"+
-        "\u2AE8\u2AE9\u2AEA\u2AEB\u2AEC\u2AED\u2AEE\u2AEF"+
-        "\u2AF0\u2AF1\u2AF2\u2AF3\u2AF4\u2AF5\u2AF6\u2AF7"+
-        "\u2AF8\u2AF9\u2AFA\u2AFB\u2AFC\u2AFD\u2AFE\u2AFF"+
-        "\u2B00\u2B01\u2B02\u2B03\u2B04\u2B05\u2B06\u2B07"+
-        "\u2B08\u2B09\u2B0A\u2B0B\u2B0C\u2B0D\u2B0E\u2B0F"+
-        "\u2B10\u2B11\u2B12\u2B13\u2B14\u2B15\u2B16\u2B17"+
-        "\u2B18\u2B19\u2B1A\u2B1B\u2B1C\u2B1D\u2B1E\u2B1F"+
-        "\u2B20\u2B21\u2B22\u2B23\u2B24\u2B25\u2B26\u2B27"+
-        "\u2B28\u2B29\u2B2A\u2B2B\u2B2C\u2B2D\u2B2E\u2B2F"+
-        "\u2B30\u2B31\u2B32\u2B33\u2B34\u2B35\u2B36\u2B37"+
-        "\u2B38\u2B39\u2B3A\u2B3B\u2B3C\u2B3D\u2B3E\u2B3F"+
-        "\u2B40\u2B41\u2B42\u2B43\u2B44\u2B45\u2B46\u2B47"+
-        "\u2B48\u2B49\u2B4A\u2B4B\u2B4C\u2B4D\u2B4E\u2B4F"+
-        "\u2B50\u2B51\u2B52\u2B53\u2B54\u2B55\u2B56\u2B57"+
-        "\u2B58\u2B59\u2B5A\u2B5B\u2B5C\u2B5D\u2B5E\u2B5F"+
-        "\u2B60\u2B61\u2B62\u2B63\u2B64\u2B65\u2B66\u2B67"+
-        "\u2B68\u2B69\u2B6A\u2B6B\u2B6C\u2B6D\u2B6E\u2B6F"+
-        "\u2B70\u2B71\u2B72\u2B73\u2B74\u2B75\u2B76\u2B77"+
-        "\u2B78\u2B79\u2B7A\u2B7B\u2B7C\u2B7D\u2B7E\u2B7F"+
-        "\u2B80\u2B81\u2B82\u2B83\u2B84\u2B85\u2B86\u2B87"+
-        "\u2B88\u2B89\u2B8A\u2B8B\u2B8C\u2B8D\u2B8E\u2B8F"+
-        "\u2B90\u2B91\u2B92\u2B93\u2B94\u2B95\u2B96\u2B97"+
-        "\u2B98\u2B99\u2B9A\u2B9B\u2B9C\u2B9D\u2B9E\u2B9F"+
-        "\u2BA0\u2BA1\u2BA2\u2BA3\u2BA4\u2BA5\u2BA6\u2BA7"+
-        "\u2BA8\u2BA9\u2BAA\u2BAB\u2BAC\u2BAD\u2BAE\u2BAF"+
-        "\u2BB0\u2BB1\u2BB2\u2BB3\u2BB4\u2BB5\u2BB6\u2BB7"+
-        "\u2BB8\u2BB9\u2BBA\u2BBB\u2BBC\u2BBD\u2BBE\u2BBF"+
-        "\u2BC0\u2BC1\u2BC2\u2BC3\u2BC4\u2BC5\u2BC6\u2BC7"+
-        "\u2BC8\u2BC9\u2BCA\u2BCB\u2BCC\u2BCD\u2BCE\u2BCF"+
-        "\u2BD0\u2BD1\u2BD2\u2BD3\u2BD4\u2BD5\u2BD6\u2BD7"+
-        "\u2BD8\u2BD9\u2BDA\u2BDB\u2BDC\u2BDD\u2BDE\u2BDF"+
-        "\u2BE0\u2BE1\u2BE2\u2BE3\u2BE4\u2BE5\u2BE6\u2BE7"+
-        "\u2BE8\u2BE9\u2BEA\u2BEB\u2BEC\u2BED\u2BEE\u2BEF"+
-        "\u2BF0\u2BF1\u2BF2\u2BF3\u2BF4\u2BF5\u2BF6\u2BF7"+
-        "\u2BF8\u2BF9\u2BFA\u2BFB\u2BFC\u2BFD\u2BFE\u2BFF"+
-        "\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07"+
-        "\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F"+
-        "\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17"+
-        "\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F"+
-        "\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27"+
-        "\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F"+
-        "\u2C30\u2C31\u2C32\u2C33\u2C34\u2C35\u2C36\u2C37"+
-        "\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F"+
-        "\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46\u2C47"+
-        "\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F"+
-        "\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57"+
-        "\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F"+
-        "\u2C60\u2C61\u2C62\u2C63\u2C64\u2C65\u2C66\u2C67"+
-        "\u2C68\u2C69\u2C6A\u2C6B\u2C6C\u2C6D\u2C6E\u2C6F"+
-        "\u2C70\u2C71\u2C72\u2C73\u2C74\u2C75\u2C76\u2C77"+
-        "\u2C78\u2C79\u2C7A\u2C7B\u2C7C\u2C7D\u2C7E\u2C7F"+
-        "\u2C80\u2C81\u2C82\u2C83\u2C84\u2C85\u2C86\u2C87"+
-        "\u2C88\u2C89\u2C8A\u2C8B\u2C8C\u2C8D\u2C8E\u2C8F"+
-        "\u2C90\u2C91\u2C92\u2C93\u2C94\u2C95\u2C96\u2C97"+
-        "\u2C98\u2C99\u2C9A\u2C9B\u2C9C\u2C9D\u2C9E\u2C9F"+
-        "\u2CA0\u2CA1\u2CA2\u2CA3\u2CA4\u2CA5\u2CA6\u2CA7"+
-        "\u2CA8\u2CA9\u2CAA\u2CAB\u2CAC\u2CAD\u2CAE\u2CAF"+
-        "\u2CB0\u2CB1\u2CB2\u2CB3\u2CB4\u2CB5\u2CB6\u2CB7"+
-        "\u2CB8\u2CB9\u2CBA\u2CBB\u2CBC\u2CBD\u2CBE\u2CBF"+
-        "\u2CC0\u2CC1\u2CC2\u2CC3\u2CC4\u2CC5\u2CC6\u2CC7"+
-        "\u2CC8\u2CC9\u2CCA\u2CCB\u2CCC\u2CCD\u2CCE\u2CCF"+
-        "\u2CD0\u2CD1\u2CD2\u2CD3\u2CD4\u2CD5\u2CD6\u2CD7"+
-        "\u2CD8\u2CD9\u2CDA\u2CDB\u2CDC\u2CDD\u2CDE\u2CDF"+
-        "\u2CE0\u2CE1\u2CE2\u2CE3\u2CE4\u2CE5\u2CE6\u2CE7"+
-        "\u2CE8\u2CE9\u2CEA\u2CEB\u2CEC\u2CED\u2CEE\u2CEF"+
-        "\u2CF0\u2CF1\u2CF2\u2CF3\u2CF4\u2CF5\u2CF6\u2CF7"+
-        "\u2CF8\u2CF9\u2CFA\u2CFB\u2CFC\u2CFD\u2CFE\u2CFF"+
-        "\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05\u2D06\u2D07"+
-        "\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F"+
-        "\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17"+
-        "\u2D18\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F"+
-        "\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27"+
-        "\u2D28\u2D29\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F"+
-        "\u2D30\u2D31\u2D32\u2D33\u2D34\u2D35\u2D36\u2D37"+
-        "\u2D38\u2D39\u2D3A\u2D3B\u2D3C\u2D3D\u2D3E\u2D3F"+
-        "\u2D40\u2D41\u2D42\u2D43\u2D44\u2D45\u2D46\u2D47"+
-        "\u2D48\u2D49\u2D4A\u2D4B\u2D4C\u2D4D\u2D4E\u2D4F"+
-        "\u2D50\u2D51\u2D52\u2D53\u2D54\u2D55\u2D56\u2D57"+
-        "\u2D58\u2D59\u2D5A\u2D5B\u2D5C\u2D5D\u2D5E\u2D5F"+
-        "\u2D60\u2D61\u2D62\u2D63\u2D64\u2D65\u2D66\u2D67"+
-        "\u2D68\u2D69\u2D6A\u2D6B\u2D6C\u2D6D\u2D6E\u2D6F"+
-        "\u2D70\u2D71\u2D72\u2D73\u2D74\u2D75\u2D76\u2D77"+
-        "\u2D78\u2D79\u2D7A\u2D7B\u2D7C\u2D7D\u2D7E\u2D7F"+
-        "\u2D80\u2D81\u2D82\u2D83\u2D84\u2D85\u2D86\u2D87"+
-        "\u2D88\u2D89\u2D8A\u2D8B\u2D8C\u2D8D\u2D8E\u2D8F"+
-        "\u2D90\u2D91\u2D92\u2D93\u2D94\u2D95\u2D96\u2D97"+
-        "\u2D98\u2D99\u2D9A\u2D9B\u2D9C\u2D9D\u2D9E\u2D9F"+
-        "\u2DA0\u2DA1\u2DA2\u2DA3\u2DA4\u2DA5\u2DA6\u2DA7"+
-        "\u2DA8\u2DA9\u2DAA\u2DAB\u2DAC\u2DAD\u2DAE\u2DAF"+
-        "\u2DB0\u2DB1\u2DB2\u2DB3\u2DB4\u2DB5\u2DB6\u2DB7"+
-        "\u2DB8\u2DB9\u2DBA\u2DBB\u2DBC\u2DBD\u2DBE\u2DBF"+
-        "\u2DC0\u2DC1\u2DC2\u2DC3\u2DC4\u2DC5\u2DC6\u2DC7"+
-        "\u2DC8\u2DC9\u2DCA\u2DCB\u2DCC\u2DCD\u2DCE\u2DCF"+
-        "\u2DD0\u2DD1\u2DD2\u2DD3\u2DD4\u2DD5\u2DD6\u2DD7"+
-        "\u2DD8\u2DD9\u2DDA\u2DDB\u2DDC\u2DDD\u2DDE\u2DDF"+
-        "\u2DE0\u2DE1\u2DE2\u2DE3\u2DE4\u2DE5\u2DE6\u2DE7"+
-        "\u2DE8\u2DE9\u2DEA\u2DEB\u2DEC\u2DED\u2DEE\u2DEF"+
-        "\u2DF0\u2DF1\u2DF2\u2DF3\u2DF4\u2DF5\u2DF6\u2DF7"+
-        "\u2DF8\u2DF9\u2DFA\u2DFB\u2DFC\u2DFD\u2DFE\u2DFF"+
-        "\u2E00\u2E01\u2E02\u2E03\u2E04\u2E05\u2E06\u2E07"+
-        "\u2E08\u2E09\u2E0A\u2E0B\u2E0C\u2E0D\u2E0E\u2E0F"+
-        "\u2E10\u2E11\u2E12\u2E13\u2E14\u2E15\u2E16\u2E17"+
-        "\u2E18\u2E19\u2E1A\u2E1B\u2E1C\u2E1D\u2E1E\u2E1F"+
-        "\u2E20\u2E21\u2E22\u2E23\u2E24\u2E25\u2E26\u2E27"+
-        "\u2E28\u2E29\u2E2A\u2E2B\u2E2C\u2E2D\u2E2E\u2E2F"+
-        "\u2E30\u2E31\u2E32\u2E33\u2E34\u2E35\u2E36\u2E37"+
-        "\u2E38\u2E39\u2E3A\u2E3B\u2E3C\u2E3D\u2E3E\u2E3F"+
-        "\u2E40\u2E41\u2E42\u2E43\u2E44\u2E45\u2E46\u2E47"+
-        "\u2E48\u2E49\u2E4A\u2E4B\u2E4C\u2E4D\u2E4E\u2E4F"+
-        "\u2E50\u2E51\u2E52\u2E53\u2E54\u2E55\u2E56\u2E57"+
-        "\u2E58\u2E59\u2E5A\u2E5B\u2E5C\u2E5D\u2E5E\u2E5F"+
-        "\u2E60\u2E61\u2E62\u2E63\u2E64\u2E65\u2E66\u2E67"+
-        "\u2E68\u2E69\u2E6A\u2E6B\u2E6C\u2E6D\u2E6E\u2E6F"+
-        "\u2E70\u2E71\u2E72\u2E73\u2E74\u2E75\u2E76\u2E77"+
-        "\u2E78\u2E79\u2E7A\u2E7B\u2E7C\u2E7D\u2E7E\u2E7F"+
-        "\u2E80\u2E82\u2E83\u2E85\u2E86\u2E87\u2E89\u2E8A"+
-        "\u2E8D\u2E8E\u2E8F\u2E90\u2E91\u2E92\u2E93\u2E94"+
-        "\u2E95\u2E96\u2E98\u2E99\u2E9A\u2E9B\u2E9C\u2E9D"+
-        "\u2E9E\u2E9F\u2EA0\u2EA1\u2EA2\u2EA3\u2EA4\u2EA5"+
-        "\u2EA6\u2EA8\u2EA9\u2EAB\u2EAC\u2EAD\u2EAF\u2EB0"+
-        "\u2EB1\u2EB2\u2EB4\u2EB5\u2EB8\u2EB9\u2EBA\u2EBC"+
-        "\u2EBD\u2EBE\u2EBF\u2EC0\u2EC1\u2EC2\u2EC3\u2EC4"+
-        "\u2EC5\u2EC6\u2EC7\u2EC8\u2EC9\u2ECB\u2ECC\u2ECD"+
-        "\u2ECE\u2ECF\u2ED0\u2ED1\u2ED2\u2ED3\u2ED4\u2ED5"+
-        "\u2ED6\u2ED7\u2ED8\u2ED9\u2EDA\u2EDB\u2EDC\u2EDD"+
-        "\u2EDE\u2EDF\u2EE0\u2EE1\u2EE2\u2EE3\u2EE4\u2EE5"+
-        "\u2EE6\u2EE7\u2EE8\u2EE9\u2EEA\u2EEB\u2EEC\u2EED"+
-        "\u2EEE\u2EEF\u2EF0\u2EF1\u2EF2\u2EF3\u2EF4\u2EF5"+
-        "\u2EF6\u2EF7\u2EF8\u2EF9\u2EFA\u2EFB\u2EFC\u2EFD"+
-        "\u2EFE\u2EFF\u2F00\u2F01\u2F02\u2F03\u2F04\u2F05"+
-        "\u2F06\u2F07\u2F08\u2F09\u2F0A\u2F0B\u2F0C\u2F0D"+
-        "\u2F0E\u2F0F\u2F10\u2F11\u2F12\u2F13\u2F14\u2F15"+
-        "\u2F16\u2F17\u2F18\u2F19\u2F1A\u2F1B\u2F1C\u2F1D"+
-        "\u2F1E\u2F1F\u2F20\u2F21\u2F22\u2F23\u2F24\u2F25"+
-        "\u2F26\u2F27\u2F28\u2F29\u2F2A\u2F2B\u2F2C\u2F2D"+
-        "\u2F2E\u2F2F\u2F30\u2F31\u2F32\u2F33\u2F34\u2F35"+
-        "\u2F36\u2F37\u2F38\u2F39\u2F3A\u2F3B\u2F3C\u2F3D"+
-        "\u2F3E\u2F3F\u2F40\u2F41\u2F42\u2F43\u2F44\u2F45"+
-        "\u2F46\u2F47\u2F48\u2F49\u2F4A\u2F4B\u2F4C\u2F4D"+
-        "\u2F4E\u2F4F\u2F50\u2F51\u2F52\u2F53\u2F54\u2F55"+
-        "\u2F56\u2F57\u2F58\u2F59\u2F5A\u2F5B\u2F5C\u2F5D"+
-        "\u2F5E\u2F5F\u2F60\u2F61\u2F62\u2F63\u2F64\u2F65"+
-        "\u2F66\u2F67\u2F68\u2F69\u2F6A\u2F6B\u2F6C\u2F6D"+
-        "\u2F6E\u2F6F\u2F70\u2F71\u2F72\u2F73\u2F74\u2F75"+
-        "\u2F76\u2F77\u2F78\u2F79\u2F7A\u2F7B\u2F7C\u2F7D"+
-        "\u2F7E\u2F7F\u2F80\u2F81\u2F82\u2F83\u2F84\u2F85"+
-        "\u2F86\u2F87\u2F88\u2F89\u2F8A\u2F8B\u2F8C\u2F8D"+
-        "\u2F8E\u2F8F\u2F90\u2F91\u2F92\u2F93\u2F94\u2F95"+
-        "\u2F96\u2F97\u2F98\u2F99\u2F9A\u2F9B\u2F9C\u2F9D"+
-        "\u2F9E\u2F9F\u2FA0\u2FA1\u2FA2\u2FA3\u2FA4\u2FA5"+
-        "\u2FA6\u2FA7\u2FA8\u2FA9\u2FAA\u2FAB\u2FAC\u2FAD"+
-        "\u2FAE\u2FAF\u2FB0\u2FB1\u2FB2\u2FB3\u2FB4\u2FB5"+
-        "\u2FB6\u2FB7\u2FB8\u2FB9\u2FBA\u2FBB\u2FBC\u2FBD"+
-        "\u2FBE\u2FBF\u2FC0\u2FC1\u2FC2\u2FC3\u2FC4\u2FC5"+
-        "\u2FC6\u2FC7\u2FC8\u2FC9\u2FCA\u2FCB\u2FCC\u2FCD"+
-        "\u2FCE\u2FCF\u2FD0\u2FD1\u2FD2\u2FD3\u2FD4\u2FD5"+
-        "\u2FD6\u2FD7\u2FD8\u2FD9\u2FDA\u2FDB\u2FDC\u2FDD"+
-        "\u2FDE\u2FDF\u2FE0\u2FE1\u2FE2\u2FE3\u2FE4\u2FE5"+
-        "\u2FE6\u2FE7\u2FE8\u2FE9\u2FEA\u2FEB\u2FEC\u2FED"+
-        "\u2FEE\u2FEF\u2FFC\u2FFD\u2FFE\u2FFF\u3004\u3018"+
-        "\u3019\u301A\u301B\u301C\u301F\u3020\u302A\u302B"+
-        "\u302C\u302D\u302E\u302F\u3030\u3031\u3032\u3033"+
-        "\u3034\u3035\u3036\u3037\u3038\u3039\u303A\u303B"+
-        "\u303C\u303D\u303F\u3040\u3094\u3095\u3096\u3097"+
-        "\u3098\u3099\u309A\u309F\u30A0\u30F7\u30F8\u30F9"+
-        "\u30FA\u30FB\u30FF\u3100\u3101\u3102\u3103\u3104"+
-        "\u312A\u312B\u312C\u312D\u312E\u312F\u3130\u3131"+
-        "\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139"+
-        "\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141"+
-        "\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149"+
-        "\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151"+
-        "\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159"+
-        "\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161"+
-        "\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169"+
-        "\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171"+
-        "\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179"+
-        "\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181"+
-        "\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189"+
-        "\u318A\u318B\u318C\u318D\u318E\u318F\u3190\u3191"+
-        "\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199"+
-        "\u319A\u319B\u319C\u319D\u319E\u319F\u31A0\u31A1"+
-        "\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9"+
-        "\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1"+
-        "\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31B8\u31B9"+
-        "\u31BA\u31BB\u31BC\u31BD\u31BE\u31BF\u31C0\u31C1"+
-        "\u31C2\u31C3\u31C4\u31C5\u31C6\u31C7\u31C8\u31C9"+
-        "\u31CA\u31CB\u31CC\u31CD\u31CE\u31CF\u31D0\u31D1"+
-        "\u31D2\u31D3\u31D4\u31D5\u31D6\u31D7\u31D8\u31D9"+
-        "\u31DA\u31DB\u31DC\u31DD\u31DE\u31DF\u31E0\u31E1"+
-        "\u31E2\u31E3\u31E4\u31E5\u31E6\u31E7\u31E8\u31E9"+
-        "\u31EA\u31EB\u31EC\u31ED\u31EE\u31EF\u31F0\u31F1"+
-        "\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9"+
-        "\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3200\u3201"+
-        "\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209"+
-        "\u320A\u320B\u320C\u320D\u320E\u320F\u3210\u3211"+
-        "\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219"+
-        "\u321A\u321B\u321C\u321D\u321E\u321F\u322A\u322B"+
-        "\u322C\u322D\u322E\u322F\u3230\u3232\u3233\u3234"+
-        "\u3235\u3236\u3237\u3238\u3239\u323A\u323B\u323C"+
-        "\u323D\u323E\u323F\u3240\u3241\u3242\u3243\u3244"+
-        "\u3245\u3246\u3247\u3248\u3249\u324A\u324B\u324C"+
-        "\u324D\u324E\u324F\u3250\u3251\u3252\u3253\u3254"+
-        "\u3255\u3256\u3257\u3258\u3259\u325A\u325B\u325C"+
-        "\u325D\u325E\u325F\u3260\u3261\u3262\u3263\u3264"+
-        "\u3265\u3266\u3267\u3268\u3269\u326A\u326B\u326C"+
-        "\u326D\u326E\u326F\u3270\u3271\u3272\u3273\u3274"+
-        "\u3275\u3276\u3277\u3278\u3279\u327A\u327B\u327C"+
-        "\u327D\u327E\u327F\u3280\u3281\u3282\u3283\u3284"+
-        "\u3285\u3286\u3287\u3288\u3289\u328A\u328B\u328C"+
-        "\u328D\u328E\u328F\u3290\u3291\u3292\u3293\u3294"+
-        "\u3295\u3296\u3297\u3298\u3299\u329A\u329B\u329C"+
-        "\u329D\u329E\u329F\u32A0\u32A1\u32A2\u32A4\u32A5"+
-        "\u32A6\u32A7\u32A8\u32A9\u32AA\u32AB\u32AC\u32AD"+
-        "\u32AE\u32AF\u32B0\u32B1\u32B2\u32B3\u32B4\u32B5"+
-        "\u32B6\u32B7\u32B8\u32B9\u32BA\u32BB\u32BC\u32BD"+
-        "\u32BE\u32BF\u32C0\u32C1\u32C2\u32C3\u32C4\u32C5"+
-        "\u32C6\u32C7\u32C8\u32C9\u32CA\u32CB\u32CC\u32CD"+
-        "\u32CE\u32CF\u32D0\u32D1\u32D2\u32D3\u32D4\u32D5"+
-        "\u32D6\u32D7\u32D8\u32D9\u32DA\u32DB\u32DC\u32DD"+
-        "\u32DE\u32DF\u32E0\u32E1\u32E2\u32E3\u32E4\u32E5"+
-        "\u32E6\u32E7\u32E8\u32E9\u32EA\u32EB\u32EC\u32ED"+
-        "\u32EE\u32EF\u32F0\u32F1\u32F2\u32F3\u32F4\u32F5"+
-        "\u32F6\u32F7\u32F8\u32F9\u32FA\u32FB\u32FC\u32FD"+
-        "\u32FE\u32FF\u3300\u3301\u3302\u3303\u3304\u3305"+
-        "\u3306\u3307\u3308\u3309\u330A\u330B\u330C\u330D"+
-        "\u330E\u330F\u3310\u3311\u3312\u3313\u3314\u3315"+
-        "\u3316\u3317\u3318\u3319\u331A\u331B\u331C\u331D"+
-        "\u331E\u331F\u3320\u3321\u3322\u3323\u3324\u3325"+
-        "\u3326\u3327\u3328\u3329\u332A\u332B\u332C\u332D"+
-        "\u332E\u332F\u3330\u3331\u3332\u3333\u3334\u3335"+
-        "\u3336\u3337\u3338\u3339\u333A\u333B\u333C\u333D"+
-        "\u333E\u333F\u3340\u3341\u3342\u3343\u3344\u3345"+
-        "\u3346\u3347\u3348\u3349\u334A\u334B\u334C\u334D"+
-        "\u334E\u334F\u3350\u3351\u3352\u3353\u3354\u3355"+
-        "\u3356\u3357\u3358\u3359\u335A\u335B\u335C\u335D";
-
-    private final static String innerDecoderIndex3=
-        "\u335E\u335F\u3360\u3361\u3362\u3363\u3364\u3365"+
-        "\u3366\u3367\u3368\u3369\u336A\u336B\u336C\u336D"+
-        "\u336E\u336F\u3370\u3371\u3372\u3373\u3374\u3375"+
-        "\u3376\u3377\u3378\u3379\u337A\u337B\u337C\u337D"+
-        "\u337E\u337F\u3380\u3381\u3382\u3383\u3384\u3385"+
-        "\u3386\u3387\u3388\u3389\u338A\u338B\u338C\u338D"+
-        "\u3390\u3391\u3392\u3393\u3394\u3395\u3396\u3397"+
-        "\u3398\u3399\u339A\u339B\u339F\u33A0\u33A2\u33A3"+
-        "\u33A4\u33A5\u33A6\u33A7\u33A8\u33A9\u33AA\u33AB"+
-        "\u33AC\u33AD\u33AE\u33AF\u33B0\u33B1\u33B2\u33B3"+
-        "\u33B4\u33B5\u33B6\u33B7\u33B8\u33B9\u33BA\u33BB"+
-        "\u33BC\u33BD\u33BE\u33BF\u33C0\u33C1\u33C2\u33C3"+
-        "\u33C5\u33C6\u33C7\u33C8\u33C9\u33CA\u33CB\u33CC"+
-        "\u33CD\u33CF\u33D0\u33D3\u33D4\u33D6\u33D7\u33D8"+
-        "\u33D9\u33DA\u33DB\u33DC\u33DD\u33DE\u33DF\u33E0"+
-        "\u33E1\u33E2\u33E3\u33E4\u33E5\u33E6\u33E7\u33E8"+
-        "\u33E9\u33EA\u33EB\u33EC\u33ED\u33EE\u33EF\u33F0"+
-        "\u33F1\u33F2\u33F3\u33F4\u33F5\u33F6\u33F7\u33F8"+
-        "\u33F9\u33FA\u33FB\u33FC\u33FD\u33FE\u33FF\u3400"+
-        "\u3401\u3402\u3403\u3404\u3405\u3406\u3407\u3408"+
-        "\u3409\u340A\u340B\u340C\u340D\u340E\u340F\u3410"+
-        "\u3411\u3412\u3413\u3414\u3415\u3416\u3417\u3418"+
-        "\u3419\u341A\u341B\u341C\u341D\u341E\u341F\u3420"+
-        "\u3421\u3422\u3423\u3424\u3425\u3426\u3427\u3428"+
-        "\u3429\u342A\u342B\u342C\u342D\u342E\u342F\u3430"+
-        "\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u3438"+
-        "\u3439\u343A\u343B\u343C\u343D\u343E\u343F\u3440"+
-        "\u3441\u3442\u3443\u3444\u3445\u3446\u3448\u3449"+
-        "\u344A\u344B\u344C\u344D\u344E\u344F\u3450\u3451"+
-        "\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459"+
-        "\u345A\u345B\u345C\u345D\u345E\u345F\u3460\u3461"+
-        "\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469"+
-        "\u346A\u346B\u346C\u346D\u346E\u346F\u3470\u3471"+
-        "\u3472\u3474\u3475\u3476\u3477\u3478\u3479\u347A"+
-        "\u347B\u347C\u347D\u347E\u347F\u3480\u3481\u3482"+
-        "\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348A"+
-        "\u348B\u348C\u348D\u348E\u348F\u3490\u3491\u3492"+
-        "\u3493\u3494\u3495\u3496\u3497\u3498\u3499\u349A"+
-        "\u349B\u349C\u349D\u349E\u349F\u34A0\u34A1\u34A2"+
-        "\u34A3\u34A4\u34A5\u34A6\u34A7\u34A8\u34A9\u34AA"+
-        "\u34AB\u34AC\u34AD\u34AE\u34AF\u34B0\u34B1\u34B2"+
-        "\u34B3\u34B4\u34B5\u34B6\u34B7\u34B8\u34B9\u34BA"+
-        "\u34BB\u34BC\u34BD\u34BE\u34BF\u34C0\u34C1\u34C2"+
-        "\u34C3\u34C4\u34C5\u34C6\u34C7\u34C8\u34C9\u34CA"+
-        "\u34CB\u34CC\u34CD\u34CE\u34CF\u34D0\u34D1\u34D2"+
-        "\u34D3\u34D4\u34D5\u34D6\u34D7\u34D8\u34D9\u34DA"+
-        "\u34DB\u34DC\u34DD\u34DE\u34DF\u34E0\u34E1\u34E2"+
-        "\u34E3\u34E4\u34E5\u34E6\u34E7\u34E8\u34E9\u34EA"+
-        "\u34EB\u34EC\u34ED\u34EE\u34EF\u34F0\u34F1\u34F2"+
-        "\u34F3\u34F4\u34F5\u34F6\u34F7\u34F8\u34F9\u34FA"+
-        "\u34FB\u34FC\u34FD\u34FE\u34FF\u3500\u3501\u3502"+
-        "\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u350A"+
-        "\u350B\u350C\u350D\u350E\u350F\u3510\u3511\u3512"+
-        "\u3513\u3514\u3515\u3516\u3517\u3518\u3519\u351A"+
-        "\u351B\u351C\u351D\u351E\u351F\u3520\u3521\u3522"+
-        "\u3523\u3524\u3525\u3526\u3527\u3528\u3529\u352A"+
-        "\u352B\u352C\u352D\u352E\u352F\u3530\u3531\u3532"+
-        "\u3533\u3534\u3535\u3536\u3537\u3538\u3539\u353A"+
-        "\u353B\u353C\u353D\u353E\u353F\u3540\u3541\u3542"+
-        "\u3543\u3544\u3545\u3546\u3547\u3548\u3549\u354A"+
-        "\u354B\u354C\u354D\u354E\u354F\u3550\u3551\u3552"+
-        "\u3553\u3554\u3555\u3556\u3557\u3558\u3559\u355A"+
-        "\u355B\u355C\u355D\u355E\u355F\u3560\u3561\u3562"+
-        "\u3563\u3564\u3565\u3566\u3567\u3568\u3569\u356A"+
-        "\u356B\u356C\u356D\u356E\u356F\u3570\u3571\u3572"+
-        "\u3573\u3574\u3575\u3576\u3577\u3578\u3579\u357A"+
-        "\u357B\u357C\u357D\u357E\u357F\u3580\u3581\u3582"+
-        "\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358A"+
-        "\u358B\u358C\u358D\u358E\u358F\u3590\u3591\u3592"+
-        "\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359A"+
-        "\u359B\u359C\u359D\u359F\u35A0\u35A1\u35A2\u35A3"+
-        "\u35A4\u35A5\u35A6\u35A7\u35A8\u35A9\u35AA\u35AB"+
-        "\u35AC\u35AD\u35AE\u35AF\u35B0\u35B1\u35B2\u35B3"+
-        "\u35B4\u35B5\u35B6\u35B7\u35B8\u35B9\u35BA\u35BB"+
-        "\u35BC\u35BD\u35BE\u35BF\u35C0\u35C1\u35C2\u35C3"+
-        "\u35C4\u35C5\u35C6\u35C7\u35C8\u35C9\u35CA\u35CB"+
-        "\u35CC\u35CD\u35CE\u35CF\u35D0\u35D1\u35D2\u35D3"+
-        "\u35D4\u35D5\u35D6\u35D7\u35D8\u35D9\u35DA\u35DB"+
-        "\u35DC\u35DD\u35DE\u35DF\u35E0\u35E1\u35E2\u35E3"+
-        "\u35E4\u35E5\u35E6\u35E7\u35E8\u35E9\u35EA\u35EB"+
-        "\u35EC\u35ED\u35EE\u35EF\u35F0\u35F1\u35F2\u35F3"+
-        "\u35F4\u35F5\u35F6\u35F7\u35F8\u35F9\u35FA\u35FB"+
-        "\u35FC\u35FD\u35FE\u35FF\u3600\u3601\u3602\u3603"+
-        "\u3604\u3605\u3606\u3607\u3608\u3609\u360A\u360B"+
-        "\u360C\u360D\u360F\u3610\u3611\u3612\u3613\u3614"+
-        "\u3615\u3616\u3617\u3618\u3619\u361B\u361C\u361D"+
-        "\u361E\u361F\u3620\u3621\u3622\u3623\u3624\u3625"+
-        "\u3626\u3627\u3628\u3629\u362A\u362B\u362C\u362D"+
-        "\u362E\u362F\u3630\u3631\u3632\u3633\u3634\u3635"+
-        "\u3636\u3637\u3638\u3639\u363A\u363B\u363C\u363D"+
-        "\u363E\u363F\u3640\u3641\u3642\u3643\u3644\u3645"+
-        "\u3646\u3647\u3648\u3649\u364A\u364B\u364C\u364D"+
-        "\u364E\u364F\u3650\u3651\u3652\u3653\u3654\u3655"+
-        "\u3656\u3657\u3658\u3659\u365A\u365B\u365C\u365D"+
-        "\u365E\u365F\u3660\u3661\u3662\u3663\u3664\u3665"+
-        "\u3666\u3667\u3668\u3669\u366A\u366B\u366C\u366D"+
-        "\u366E\u366F\u3670\u3671\u3672\u3673\u3674\u3675"+
-        "\u3676\u3677\u3678\u3679\u367A\u367B\u367C\u367D"+
-        "\u367E\u367F\u3680\u3681\u3682\u3683\u3684\u3685"+
-        "\u3686\u3687\u3688\u3689\u368A\u368B\u368C\u368D"+
-        "\u368E\u368F\u3690\u3691\u3692\u3693\u3694\u3695"+
-        "\u3696\u3697\u3698\u3699\u369A\u369B\u369C\u369D"+
-        "\u369E\u369F\u36A0\u36A1\u36A2\u36A3\u36A4\u36A5"+
-        "\u36A6\u36A7\u36A8\u36A9\u36AA\u36AB\u36AC\u36AD"+
-        "\u36AE\u36AF\u36B0\u36B1\u36B2\u36B3\u36B4\u36B5"+
-        "\u36B6\u36B7\u36B8\u36B9\u36BA\u36BB\u36BC\u36BD"+
-        "\u36BE\u36BF\u36C0\u36C1\u36C2\u36C3\u36C4\u36C5"+
-        "\u36C6\u36C7\u36C8\u36C9\u36CA\u36CB\u36CC\u36CD"+
-        "\u36CE\u36CF\u36D0\u36D1\u36D2\u36D3\u36D4\u36D5"+
-        "\u36D6\u36D7\u36D8\u36D9\u36DA\u36DB\u36DC\u36DD"+
-        "\u36DE\u36DF\u36E0\u36E1\u36E2\u36E3\u36E4\u36E5"+
-        "\u36E6\u36E7\u36E8\u36E9\u36EA\u36EB\u36EC\u36ED"+
-        "\u36EE\u36EF\u36F0\u36F1\u36F2\u36F3\u36F4\u36F5"+
-        "\u36F6\u36F7\u36F8\u36F9\u36FA\u36FB\u36FC\u36FD"+
-        "\u36FE\u36FF\u3700\u3701\u3702\u3703\u3704\u3705"+
-        "\u3706\u3707\u3708\u3709\u370A\u370B\u370C\u370D"+
-        "\u370E\u370F\u3710\u3711\u3712\u3713\u3714\u3715"+
-        "\u3716\u3717\u3718\u3719\u371A\u371B\u371C\u371D"+
-        "\u371E\u371F\u3720\u3721\u3722\u3723\u3724\u3725"+
-        "\u3726\u3727\u3728\u3729\u372A\u372B\u372C\u372D"+
-        "\u372E\u372F\u3730\u3731\u3732\u3733\u3734\u3735"+
-        "\u3736\u3737\u3738\u3739\u373A\u373B\u373C\u373D"+
-        "\u373E\u373F\u3740\u3741\u3742\u3743\u3744\u3745"+
-        "\u3746\u3747\u3748\u3749\u374A\u374B\u374C\u374D"+
-        "\u374E\u374F\u3750\u3751\u3752\u3753\u3754\u3755"+
-        "\u3756\u3757\u3758\u3759\u375A\u375B\u375C\u375D"+
-        "\u375E\u375F\u3760\u3761\u3762\u3763\u3764\u3765"+
-        "\u3766\u3767\u3768\u3769\u376A\u376B\u376C\u376D"+
-        "\u376E\u376F\u3770\u3771\u3772\u3773\u3774\u3775"+
-        "\u3776\u3777\u3778\u3779\u377A\u377B\u377C\u377D"+
-        "\u377E\u377F\u3780\u3781\u3782\u3783\u3784\u3785"+
-        "\u3786\u3787\u3788\u3789\u378A\u378B\u378C\u378D"+
-        "\u378E\u378F\u3790\u3791\u3792\u3793\u3794\u3795"+
-        "\u3796\u3797\u3798\u3799\u379A\u379B\u379C\u379D"+
-        "\u379E\u379F\u37A0\u37A1\u37A2\u37A3\u37A4\u37A5"+
-        "\u37A6\u37A7\u37A8\u37A9\u37AA\u37AB\u37AC\u37AD"+
-        "\u37AE\u37AF\u37B0\u37B1\u37B2\u37B3\u37B4\u37B5"+
-        "\u37B6\u37B7\u37B8\u37B9\u37BA\u37BB\u37BC\u37BD"+
-        "\u37BE\u37BF\u37C0\u37C1\u37C2\u37C3\u37C4\u37C5"+
-        "\u37C6\u37C7\u37C8\u37C9\u37CA\u37CB\u37CC\u37CD"+
-        "\u37CE\u37CF\u37D0\u37D1\u37D2\u37D3\u37D4\u37D5"+
-        "\u37D6\u37D7\u37D8\u37D9\u37DA\u37DB\u37DC\u37DD"+
-        "\u37DE\u37DF\u37E0\u37E1\u37E2\u37E3\u37E4\u37E5"+
-        "\u37E6\u37E7\u37E8\u37E9\u37EA\u37EB\u37EC\u37ED"+
-        "\u37EE\u37EF\u37F0\u37F1\u37F2\u37F3\u37F4\u37F5"+
-        "\u37F6\u37F7\u37F8\u37F9\u37FA\u37FB\u37FC\u37FD"+
-        "\u37FE\u37FF\u3800\u3801\u3802\u3803\u3804\u3805"+
-        "\u3806\u3807\u3808\u3809\u380A\u380B\u380C\u380D"+
-        "\u380E\u380F\u3810\u3811\u3812\u3813\u3814\u3815"+
-        "\u3816\u3817\u3818\u3819\u381A\u381B\u381C\u381D"+
-        "\u381E\u381F\u3820\u3821\u3822\u3823\u3824\u3825"+
-        "\u3826\u3827\u3828\u3829\u382A\u382B\u382C\u382D"+
-        "\u382E\u382F\u3830\u3831\u3832\u3833\u3834\u3835"+
-        "\u3836\u3837\u3838\u3839\u383A\u383B\u383C\u383D"+
-        "\u383E\u383F\u3840\u3841\u3842\u3843\u3844\u3845"+
-        "\u3846\u3847\u3848\u3849\u384A\u384B\u384C\u384D"+
-        "\u384E\u384F\u3850\u3851\u3852\u3853\u3854\u3855"+
-        "\u3856\u3857\u3858\u3859\u385A\u385B\u385C\u385D"+
-        "\u385E\u385F\u3860\u3861\u3862\u3863\u3864\u3865"+
-        "\u3866\u3867\u3868\u3869\u386A\u386B\u386C\u386D"+
-        "\u386E\u386F\u3870\u3871\u3872\u3873\u3874\u3875"+
-        "\u3876\u3877\u3878\u3879\u387A\u387B\u387C\u387D"+
-        "\u387E\u387F\u3880\u3881\u3882\u3883\u3884\u3885"+
-        "\u3886\u3887\u3888\u3889\u388A\u388B\u388C\u388D"+
-        "\u388E\u388F\u3890\u3891\u3892\u3893\u3894\u3895"+
-        "\u3896\u3897\u3898\u3899\u389A\u389B\u389C\u389D"+
-        "\u389E\u389F\u38A0\u38A1\u38A2\u38A3\u38A4\u38A5"+
-        "\u38A6\u38A7\u38A8\u38A9\u38AA\u38AB\u38AC\u38AD"+
-        "\u38AE\u38AF\u38B0\u38B1\u38B2\u38B3\u38B4\u38B5"+
-        "\u38B6\u38B7\u38B8\u38B9\u38BA\u38BB\u38BC\u38BD"+
-        "\u38BE\u38BF\u38C0\u38C1\u38C2\u38C3\u38C4\u38C5"+
-        "\u38C6\u38C7\u38C8\u38C9\u38CA\u38CB\u38CC\u38CD"+
-        "\u38CE\u38CF\u38D0\u38D1\u38D2\u38D3\u38D4\u38D5"+
-        "\u38D6\u38D7\u38D8\u38D9\u38DA\u38DB\u38DC\u38DD"+
-        "\u38DE\u38DF\u38E0\u38E1\u38E2\u38E3\u38E4\u38E5"+
-        "\u38E6\u38E7\u38E8\u38E9\u38EA\u38EB\u38EC\u38ED"+
-        "\u38EE\u38EF\u38F0\u38F1\u38F2\u38F3\u38F4\u38F5"+
-        "\u38F6\u38F7\u38F8\u38F9\u38FA\u38FB\u38FC\u38FD"+
-        "\u38FE\u38FF\u3900\u3901\u3902\u3903\u3904\u3905"+
-        "\u3906\u3907\u3908\u3909\u390A\u390B\u390C\u390D"+
-        "\u390E\u390F\u3910\u3911\u3912\u3913\u3914\u3915"+
-        "\u3916\u3917\u3919\u391A\u391B\u391C\u391D\u391E"+
-        "\u391F\u3920\u3921\u3922\u3923\u3924\u3925\u3926"+
-        "\u3927\u3928\u3929\u392A\u392B\u392C\u392D\u392E"+
-        "\u392F\u3930\u3931\u3932\u3933\u3934\u3935\u3936"+
-        "\u3937\u3938\u3939\u393A\u393B\u393C\u393D\u393E"+
-        "\u393F\u3940\u3941\u3942\u3943\u3944\u3945\u3946"+
-        "\u3947\u3948\u3949\u394A\u394B\u394C\u394D\u394E"+
-        "\u394F\u3950\u3951\u3952\u3953\u3954\u3955\u3956"+
-        "\u3957\u3958\u3959\u395A\u395B\u395C\u395D\u395E"+
-        "\u395F\u3960\u3961\u3962\u3963\u3964\u3965\u3966"+
-        "\u3967\u3968\u3969\u396A\u396B\u396C\u396D\u396F"+
-        "\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977"+
-        "\u3978\u3979\u397A\u397B\u397C\u397D\u397E\u397F"+
-        "\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987"+
-        "\u3988\u3989\u398A\u398B\u398C\u398D\u398E\u398F"+
-        "\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u3997"+
-        "\u3998\u3999\u399A\u399B\u399C\u399D\u399E\u399F"+
-        "\u39A0\u39A1\u39A2\u39A3\u39A4\u39A5\u39A6\u39A7"+
-        "\u39A8\u39A9\u39AA\u39AB\u39AC\u39AD\u39AE\u39AF"+
-        "\u39B0\u39B1\u39B2\u39B3\u39B4\u39B5\u39B6\u39B7"+
-        "\u39B8\u39B9\u39BA\u39BB\u39BC\u39BD\u39BE\u39BF"+
-        "\u39C0\u39C1\u39C2\u39C3\u39C4\u39C5\u39C6\u39C7"+
-        "\u39C8\u39C9\u39CA\u39CB\u39CC\u39CD\u39CE\u39D1"+
-        "\u39D2\u39D3\u39D4\u39D5\u39D6\u39D7\u39D8\u39D9"+
-        "\u39DA\u39DB\u39DC\u39DD\u39DE\u39E0\u39E1\u39E2"+
-        "\u39E3\u39E4\u39E5\u39E6\u39E7\u39E8\u39E9\u39EA"+
-        "\u39EB\u39EC\u39ED\u39EE\u39EF\u39F0\u39F1\u39F2"+
-        "\u39F3\u39F4\u39F5\u39F6\u39F7\u39F8\u39F9\u39FA"+
-        "\u39FB\u39FC\u39FD\u39FE\u39FF\u3A00\u3A01\u3A02"+
-        "\u3A03\u3A04\u3A05\u3A06\u3A07\u3A08\u3A09\u3A0A"+
-        "\u3A0B\u3A0C\u3A0D\u3A0E\u3A0F\u3A10\u3A11\u3A12"+
-        "\u3A13\u3A14\u3A15\u3A16\u3A17\u3A18\u3A19\u3A1A"+
-        "\u3A1B\u3A1C\u3A1D\u3A1E\u3A1F\u3A20\u3A21\u3A22"+
-        "\u3A23\u3A24\u3A25\u3A26\u3A27\u3A28\u3A29\u3A2A"+
-        "\u3A2B\u3A2C\u3A2D\u3A2E\u3A2F\u3A30\u3A31\u3A32"+
-        "\u3A33\u3A34\u3A35\u3A36\u3A37\u3A38\u3A39\u3A3A"+
-        "\u3A3B\u3A3C\u3A3D\u3A3E\u3A3F\u3A40\u3A41\u3A42"+
-        "\u3A43\u3A44\u3A45\u3A46\u3A47\u3A48\u3A49\u3A4A"+
-        "\u3A4B\u3A4C\u3A4D\u3A4E\u3A4F\u3A50\u3A51\u3A52"+
-        "\u3A53\u3A54\u3A55\u3A56\u3A57\u3A58\u3A59\u3A5A"+
-        "\u3A5B\u3A5C\u3A5D\u3A5E\u3A5F\u3A60\u3A61\u3A62"+
-        "\u3A63\u3A64\u3A65\u3A66\u3A67\u3A68\u3A69\u3A6A"+
-        "\u3A6B\u3A6C\u3A6D\u3A6E\u3A6F\u3A70\u3A71\u3A72"+
-        "\u3A74\u3A75\u3A76\u3A77\u3A78\u3A79\u3A7A\u3A7B"+
-        "\u3A7C\u3A7D\u3A7E\u3A7F\u3A80\u3A81\u3A82\u3A83"+
-        "\u3A84\u3A85\u3A86\u3A87\u3A88\u3A89\u3A8A\u3A8B"+
-        "\u3A8C\u3A8D\u3A8E\u3A8F\u3A90\u3A91\u3A92\u3A93"+
-        "\u3A94\u3A95\u3A96\u3A97\u3A98\u3A99\u3A9A\u3A9B"+
-        "\u3A9C\u3A9D\u3A9E\u3A9F\u3AA0\u3AA1\u3AA2\u3AA3"+
-        "\u3AA4\u3AA5\u3AA6\u3AA7\u3AA8\u3AA9\u3AAA\u3AAB"+
-        "\u3AAC\u3AAD\u3AAE\u3AAF\u3AB0\u3AB1\u3AB2\u3AB3"+
-        "\u3AB4\u3AB5\u3AB6\u3AB7\u3AB8\u3AB9\u3ABA\u3ABB"+
-        "\u3ABC\u3ABD\u3ABE\u3ABF\u3AC0\u3AC1\u3AC2\u3AC3"+
-        "\u3AC4\u3AC5\u3AC6\u3AC7\u3AC8\u3AC9\u3ACA\u3ACB"+
-        "\u3ACC\u3ACD\u3ACE\u3ACF\u3AD0\u3AD1\u3AD2\u3AD3"+
-        "\u3AD4\u3AD5\u3AD6\u3AD7\u3AD8\u3AD9\u3ADA\u3ADB"+
-        "\u3ADC\u3ADD\u3ADE\u3ADF\u3AE0\u3AE1\u3AE2\u3AE3"+
-        "\u3AE4\u3AE5\u3AE6\u3AE7\u3AE8\u3AE9\u3AEA\u3AEB"+
-        "\u3AEC\u3AED\u3AEE\u3AEF\u3AF0\u3AF1\u3AF2\u3AF3"+
-        "\u3AF4\u3AF5\u3AF6\u3AF7\u3AF8\u3AF9\u3AFA\u3AFB"+
-        "\u3AFC\u3AFD\u3AFE\u3AFF\u3B00\u3B01\u3B02\u3B03"+
-        "\u3B04\u3B05\u3B06\u3B07\u3B08\u3B09\u3B0A\u3B0B"+
-        "\u3B0C\u3B0D\u3B0E\u3B0F\u3B10\u3B11\u3B12\u3B13"+
-        "\u3B14\u3B15\u3B16\u3B17\u3B18\u3B19\u3B1A\u3B1B"+
-        "\u3B1C\u3B1D\u3B1E\u3B1F\u3B20\u3B21\u3B22\u3B23"+
-        "\u3B24\u3B25\u3B26\u3B27\u3B28\u3B29\u3B2A\u3B2B"+
-        "\u3B2C\u3B2D\u3B2E\u3B2F\u3B30\u3B31\u3B32\u3B33"+
-        "\u3B34\u3B35\u3B36\u3B37\u3B38\u3B39\u3B3A\u3B3B"+
-        "\u3B3C\u3B3D\u3B3E\u3B3F\u3B40\u3B41\u3B42\u3B43"+
-        "\u3B44\u3B45\u3B46\u3B47\u3B48\u3B49\u3B4A\u3B4B"+
-        "\u3B4C\u3B4D\u3B4F\u3B50\u3B51\u3B52\u3B53\u3B54"+
-        "\u3B55\u3B56\u3B57\u3B58\u3B59\u3B5A\u3B5B\u3B5C"+
-        "\u3B5D\u3B5E\u3B5F\u3B60\u3B61\u3B62\u3B63\u3B64"+
-        "\u3B65\u3B66\u3B67\u3B68\u3B69\u3B6A\u3B6B\u3B6C"+
-        "\u3B6D\u3B6E\u3B6F\u3B70\u3B71\u3B72\u3B73\u3B74"+
-        "\u3B75\u3B76\u3B77\u3B78\u3B79\u3B7A\u3B7B\u3B7C"+
-        "\u3B7D\u3B7E\u3B7F\u3B80\u3B81\u3B82\u3B83\u3B84"+
-        "\u3B85\u3B86\u3B87\u3B88\u3B89\u3B8A\u3B8B\u3B8C"+
-        "\u3B8D\u3B8E\u3B8F\u3B90\u3B91\u3B92\u3B93\u3B94"+
-        "\u3B95\u3B96\u3B97\u3B98\u3B99\u3B9A\u3B9B\u3B9C"+
-        "\u3B9D\u3B9E\u3B9F\u3BA0\u3BA1\u3BA2\u3BA3\u3BA4"+
-        "\u3BA5\u3BA6\u3BA7\u3BA8\u3BA9\u3BAA\u3BAB\u3BAC"+
-        "\u3BAD\u3BAE\u3BAF\u3BB0\u3BB1\u3BB2\u3BB3\u3BB4"+
-        "\u3BB5\u3BB6\u3BB7\u3BB8\u3BB9\u3BBA\u3BBB\u3BBC"+
-        "\u3BBD\u3BBE\u3BBF\u3BC0\u3BC1\u3BC2\u3BC3\u3BC4"+
-        "\u3BC5\u3BC6\u3BC7\u3BC8\u3BC9\u3BCA\u3BCB\u3BCC"+
-        "\u3BCD\u3BCE\u3BCF\u3BD0\u3BD1\u3BD2\u3BD3\u3BD4"+
-        "\u3BD5\u3BD6\u3BD7\u3BD8\u3BD9\u3BDA\u3BDB\u3BDC"+
-        "\u3BDD\u3BDE\u3BDF\u3BE0\u3BE1\u3BE2\u3BE3\u3BE4"+
-        "\u3BE5\u3BE6\u3BE7\u3BE8\u3BE9\u3BEA\u3BEB\u3BEC"+
-        "\u3BED\u3BEE\u3BEF\u3BF0\u3BF1\u3BF2\u3BF3\u3BF4"+
-        "\u3BF5\u3BF6\u3BF7\u3BF8\u3BF9\u3BFA\u3BFB\u3BFC"+
-        "\u3BFD\u3BFE\u3BFF\u3C00\u3C01\u3C02\u3C03\u3C04"+
-        "\u3C05\u3C06\u3C07\u3C08\u3C09\u3C0A\u3C0B\u3C0C"+
-        "\u3C0D\u3C0E\u3C0F\u3C10\u3C11\u3C12\u3C13\u3C14"+
-        "\u3C15\u3C16\u3C17\u3C18\u3C19\u3C1A\u3C1B\u3C1C"+
-        "\u3C1D\u3C1E\u3C1F\u3C20\u3C21\u3C22\u3C23\u3C24"+
-        "\u3C25\u3C26\u3C27\u3C28\u3C29\u3C2A\u3C2B\u3C2C"+
-        "\u3C2D\u3C2E\u3C2F\u3C30\u3C31\u3C32\u3C33\u3C34"+
-        "\u3C35\u3C36\u3C37\u3C38\u3C39\u3C3A\u3C3B\u3C3C"+
-        "\u3C3D\u3C3E\u3C3F\u3C40\u3C41\u3C42\u3C43\u3C44"+
-        "\u3C45\u3C46\u3C47\u3C48\u3C49\u3C4A\u3C4B\u3C4C"+
-        "\u3C4D\u3C4E\u3C4F\u3C50\u3C51\u3C52\u3C53\u3C54"+
-        "\u3C55\u3C56\u3C57\u3C58\u3C59\u3C5A\u3C5B\u3C5C"+
-        "\u3C5D\u3C5E\u3C5F\u3C60\u3C61\u3C62\u3C63\u3C64"+
-        "\u3C65\u3C66\u3C67\u3C68\u3C69\u3C6A\u3C6B\u3C6C"+
-        "\u3C6D\u3C6F\u3C70\u3C71\u3C72\u3C73\u3C74\u3C75"+
-        "\u3C76\u3C77\u3C78\u3C79\u3C7A\u3C7B\u3C7C\u3C7D"+
-        "\u3C7E\u3C7F\u3C80\u3C81\u3C82\u3C83\u3C84\u3C85"+
-        "\u3C86\u3C87\u3C88\u3C89\u3C8A\u3C8B\u3C8C\u3C8D"+
-        "\u3C8E\u3C8F\u3C90\u3C91\u3C92\u3C93\u3C94\u3C95"+
-        "\u3C96\u3C97\u3C98\u3C99\u3C9A\u3C9B\u3C9C\u3C9D"+
-        "\u3C9E\u3C9F\u3CA0\u3CA1\u3CA2\u3CA3\u3CA4\u3CA5"+
-        "\u3CA6\u3CA7\u3CA8\u3CA9\u3CAA\u3CAB\u3CAC\u3CAD"+
-        "\u3CAE\u3CAF\u3CB0\u3CB1\u3CB2\u3CB3\u3CB4\u3CB5"+
-        "\u3CB6\u3CB7\u3CB8\u3CB9\u3CBA\u3CBB\u3CBC\u3CBD"+
-        "\u3CBE\u3CBF\u3CC0\u3CC1\u3CC2\u3CC3\u3CC4\u3CC5"+
-        "\u3CC6\u3CC7\u3CC8\u3CC9\u3CCA\u3CCB\u3CCC\u3CCD"+
-        "\u3CCE\u3CCF\u3CD0\u3CD1\u3CD2\u3CD3\u3CD4\u3CD5"+
-        "\u3CD6\u3CD7\u3CD8\u3CD9\u3CDA\u3CDB\u3CDC\u3CDD"+
-        "\u3CDE\u3CDF\u3CE1\u3CE2\u3CE3\u3CE4\u3CE5\u3CE6"+
-        "\u3CE7\u3CE8\u3CE9\u3CEA\u3CEB\u3CEC\u3CED\u3CEE"+
-        "\u3CEF\u3CF0\u3CF1\u3CF2\u3CF3\u3CF4\u3CF5\u3CF6"+
-        "\u3CF7\u3CF8\u3CF9\u3CFA\u3CFB\u3CFC\u3CFD\u3CFE"+
-        "\u3CFF\u3D00\u3D01\u3D02\u3D03\u3D04\u3D05\u3D06"+
-        "\u3D07\u3D08\u3D09\u3D0A\u3D0B\u3D0C\u3D0D\u3D0E"+
-        "\u3D0F\u3D10\u3D11\u3D12\u3D13\u3D14\u3D15\u3D16"+
-        "\u3D17\u3D18\u3D19\u3D1A\u3D1B\u3D1C\u3D1D\u3D1E"+
-        "\u3D1F\u3D20\u3D21\u3D22\u3D23\u3D24\u3D25\u3D26"+
-        "\u3D27\u3D28\u3D29\u3D2A\u3D2B\u3D2C\u3D2D\u3D2E"+
-        "\u3D2F\u3D30\u3D31\u3D32\u3D33\u3D34\u3D35\u3D36"+
-        "\u3D37\u3D38\u3D39\u3D3A\u3D3B\u3D3C\u3D3D\u3D3E"+
-        "\u3D3F\u3D40\u3D41\u3D42\u3D43\u3D44\u3D45\u3D46"+
-        "\u3D47\u3D48\u3D49\u3D4A\u3D4B\u3D4C\u3D4D\u3D4E"+
-        "\u3D4F\u3D50\u3D51\u3D52\u3D53\u3D54\u3D55\u3D56"+
-        "\u3D57\u3D58\u3D59\u3D5A\u3D5B\u3D5C\u3D5D\u3D5E"+
-        "\u3D5F\u3D60\u3D61\u3D62\u3D63\u3D64\u3D65\u3D66"+
-        "\u3D67\u3D68\u3D69\u3D6A\u3D6B\u3D6C\u3D6D\u3D6E"+
-        "\u3D6F\u3D70\u3D71\u3D72\u3D73\u3D74\u3D75\u3D76"+
-        "\u3D77\u3D78\u3D79\u3D7A\u3D7B\u3D7C\u3D7D\u3D7E"+
-        "\u3D7F\u3D80\u3D81\u3D82\u3D83\u3D84\u3D85\u3D86"+
-        "\u3D87\u3D88\u3D89\u3D8A\u3D8B\u3D8C\u3D8D\u3D8E"+
-        "\u3D8F\u3D90\u3D91\u3D92\u3D93\u3D94\u3D95\u3D96"+
-        "\u3D97\u3D98\u3D99\u3D9A\u3D9B\u3D9C\u3D9D\u3D9E"+
-        "\u3D9F\u3DA0\u3DA1\u3DA2\u3DA3\u3DA4\u3DA5\u3DA6"+
-        "\u3DA7\u3DA8\u3DA9\u3DAA\u3DAB\u3DAC\u3DAD\u3DAE"+
-        "\u3DAF\u3DB0\u3DB1\u3DB2\u3DB3\u3DB4\u3DB5\u3DB6"+
-        "\u3DB7\u3DB8\u3DB9\u3DBA\u3DBB\u3DBC\u3DBD\u3DBE"+
-        "\u3DBF\u3DC0\u3DC1\u3DC2\u3DC3\u3DC4\u3DC5\u3DC6"+
-        "\u3DC7\u3DC8\u3DC9\u3DCA\u3DCB\u3DCC\u3DCD\u3DCE"+
-        "\u3DCF\u3DD0\u3DD1\u3DD2\u3DD3\u3DD4\u3DD5\u3DD6"+
-        "\u3DD7\u3DD8\u3DD9\u3DDA\u3DDB\u3DDC\u3DDD\u3DDE"+
-        "\u3DDF\u3DE0\u3DE1\u3DE2\u3DE3\u3DE4\u3DE5\u3DE6"+
-        "\u3DE7\u3DE8\u3DE9\u3DEA\u3DEB\u3DEC\u3DED\u3DEE"+
-        "\u3DEF\u3DF0\u3DF1\u3DF2\u3DF3\u3DF4\u3DF5\u3DF6"+
-        "\u3DF7\u3DF8\u3DF9\u3DFA\u3DFB\u3DFC\u3DFD\u3DFE"+
-        "\u3DFF\u3E00\u3E01\u3E02\u3E03\u3E04\u3E05\u3E06"+
-        "\u3E07\u3E08\u3E09\u3E0A\u3E0B\u3E0C\u3E0D\u3E0E"+
-        "\u3E0F\u3E10\u3E11\u3E12\u3E13\u3E14\u3E15\u3E16"+
-        "\u3E17\u3E18\u3E19\u3E1A\u3E1B\u3E1C\u3E1D\u3E1E"+
-        "\u3E1F\u3E20\u3E21\u3E22\u3E23\u3E24\u3E25\u3E26"+
-        "\u3E27\u3E28\u3E29\u3E2A\u3E2B\u3E2C\u3E2D\u3E2E"+
-        "\u3E2F\u3E30\u3E31\u3E32\u3E33\u3E34\u3E35\u3E36"+
-        "\u3E37\u3E38\u3E39\u3E3A\u3E3B\u3E3C\u3E3D\u3E3E"+
-        "\u3E3F\u3E40\u3E41\u3E42\u3E43\u3E44\u3E45\u3E46"+
-        "\u3E47\u3E48\u3E49\u3E4A\u3E4B\u3E4C\u3E4D\u3E4E"+
-        "\u3E4F\u3E50\u3E51\u3E52\u3E53\u3E54\u3E55\u3E56"+
-        "\u3E57\u3E58\u3E59\u3E5A\u3E5B\u3E5C\u3E5D\u3E5E"+
-        "\u3E5F\u3E60\u3E61\u3E62\u3E63\u3E64\u3E65\u3E66"+
-        "\u3E67\u3E68\u3E69\u3E6A\u3E6B\u3E6C\u3E6D\u3E6E"+
-        "\u3E6F\u3E70\u3E71\u3E72\u3E73\u3E74\u3E75\u3E76"+
-        "\u3E77\u3E78\u3E79\u3E7A\u3E7B\u3E7C\u3E7D\u3E7E"+
-        "\u3E7F\u3E80\u3E81\u3E82\u3E83\u3E84\u3E85\u3E86"+
-        "\u3E87\u3E88\u3E89\u3E8A\u3E8B\u3E8C\u3E8D\u3E8E"+
-        "\u3E8F\u3E90\u3E91\u3E92\u3E93\u3E94\u3E95\u3E96"+
-        "\u3E97\u3E98\u3E99\u3E9A\u3E9B\u3E9C\u3E9D\u3E9E"+
-        "\u3E9F\u3EA0\u3EA1\u3EA2\u3EA3\u3EA4\u3EA5\u3EA6"+
-        "\u3EA7\u3EA8\u3EA9\u3EAA\u3EAB\u3EAC\u3EAD\u3EAE"+
-        "\u3EAF\u3EB0\u3EB1\u3EB2\u3EB3\u3EB4\u3EB5\u3EB6"+
-        "\u3EB7\u3EB8\u3EB9\u3EBA\u3EBB\u3EBC\u3EBD\u3EBE"+
-        "\u3EBF\u3EC0\u3EC1\u3EC2\u3EC3\u3EC4\u3EC5\u3EC6"+
-        "\u3EC7\u3EC8\u3EC9\u3ECA\u3ECB\u3ECC\u3ECD\u3ECE"+
-        "\u3ECF\u3ED0\u3ED1\u3ED2\u3ED3\u3ED4\u3ED5\u3ED6"+
-        "\u3ED7\u3ED8\u3ED9\u3EDA\u3EDB\u3EDC\u3EDD\u3EDE"+
-        "\u3EDF\u3EE0\u3EE1\u3EE2\u3EE3\u3EE4\u3EE5\u3EE6"+
-        "\u3EE7\u3EE8\u3EE9\u3EEA\u3EEB\u3EEC\u3EED\u3EEE"+
-        "\u3EEF\u3EF0\u3EF1\u3EF2\u3EF3\u3EF4\u3EF5\u3EF6"+
-        "\u3EF7\u3EF8\u3EF9\u3EFA\u3EFB\u3EFC\u3EFD\u3EFE"+
-        "\u3EFF\u3F00\u3F01\u3F02\u3F03\u3F04\u3F05\u3F06"+
-        "\u3F07\u3F08\u3F09\u3F0A\u3F0B\u3F0C\u3F0D\u3F0E"+
-        "\u3F0F\u3F10\u3F11\u3F12\u3F13\u3F14\u3F15\u3F16"+
-        "\u3F17\u3F18\u3F19\u3F1A\u3F1B\u3F1C\u3F1D\u3F1E"+
-        "\u3F1F\u3F20\u3F21\u3F22\u3F23\u3F24\u3F25\u3F26"+
-        "\u3F27\u3F28\u3F29\u3F2A\u3F2B\u3F2C\u3F2D\u3F2E"+
-        "\u3F2F\u3F30\u3F31\u3F32\u3F33\u3F34\u3F35\u3F36"+
-        "\u3F37\u3F38\u3F39\u3F3A\u3F3B\u3F3C\u3F3D\u3F3E"+
-        "\u3F3F\u3F40\u3F41\u3F42\u3F43\u3F44\u3F45\u3F46"+
-        "\u3F47\u3F48\u3F49\u3F4A\u3F4B\u3F4C\u3F4D\u3F4E"+
-        "\u3F4F\u3F50\u3F51\u3F52\u3F53\u3F54\u3F55\u3F56"+
-        "\u3F57\u3F58\u3F59\u3F5A\u3F5B\u3F5C\u3F5D\u3F5E"+
-        "\u3F5F\u3F60\u3F61\u3F62\u3F63\u3F64\u3F65\u3F66"+
-        "\u3F67\u3F68\u3F69\u3F6A\u3F6B\u3F6C\u3F6D\u3F6E"+
-        "\u3F6F\u3F70\u3F71\u3F72\u3F73\u3F74\u3F75\u3F76"+
-        "\u3F77\u3F78\u3F79\u3F7A\u3F7B\u3F7C\u3F7D\u3F7E"+
-        "\u3F7F\u3F80\u3F81\u3F82\u3F83\u3F84\u3F85\u3F86"+
-        "\u3F87\u3F88\u3F89\u3F8A\u3F8B\u3F8C\u3F8D\u3F8E"+
-        "\u3F8F\u3F90\u3F91\u3F92\u3F93\u3F94\u3F95\u3F96"+
-        "\u3F97\u3F98\u3F99\u3F9A\u3F9B\u3F9C\u3F9D\u3F9E"+
-        "\u3F9F\u3FA0\u3FA1\u3FA2\u3FA3\u3FA4\u3FA5\u3FA6"+
-        "\u3FA7\u3FA8\u3FA9\u3FAA\u3FAB\u3FAC\u3FAD\u3FAE"+
-        "\u3FAF\u3FB0\u3FB1\u3FB2\u3FB3\u3FB4\u3FB5\u3FB6"+
-        "\u3FB7\u3FB8\u3FB9\u3FBA\u3FBB\u3FBC\u3FBD\u3FBE"+
-        "\u3FBF\u3FC0\u3FC1\u3FC2\u3FC3\u3FC4\u3FC5\u3FC6"+
-        "\u3FC7\u3FC8\u3FC9\u3FCA\u3FCB\u3FCC\u3FCD\u3FCE"+
-        "\u3FCF\u3FD0\u3FD1\u3FD2\u3FD3\u3FD4\u3FD5\u3FD6"+
-        "\u3FD7\u3FD8\u3FD9\u3FDA\u3FDB\u3FDC\u3FDD\u3FDE"+
-        "\u3FDF\u3FE0\u3FE1\u3FE2\u3FE3\u3FE4\u3FE5\u3FE6"+
-        "\u3FE7\u3FE8\u3FE9\u3FEA\u3FEB\u3FEC\u3FED\u3FEE"+
-        "\u3FEF\u3FF0\u3FF1\u3FF2\u3FF3\u3FF4\u3FF5\u3FF6"+
-        "\u3FF7\u3FF8\u3FF9\u3FFA\u3FFB\u3FFC\u3FFD\u3FFE"+
-        "\u3FFF\u4000\u4001\u4002\u4003\u4004\u4005\u4006"+
-        "\u4007\u4008\u4009\u400A\u400B\u400C\u400D\u400E"+
-        "\u400F\u4010\u4011\u4012\u4013\u4014\u4015\u4016"+
-        "\u4017\u4018\u4019\u401A\u401B\u401C\u401D\u401E"+
-        "\u401F\u4020\u4021\u4022\u4023\u4024\u4025\u4026"+
-        "\u4027\u4028\u4029\u402A\u402B\u402C\u402D\u402E"+
-        "\u402F\u4030\u4031\u4032\u4033\u4034\u4035\u4036"+
-        "\u4037\u4038\u4039\u403A\u403B\u403C\u403D\u403E"+
-        "\u403F\u4040\u4041\u4042\u4043\u4044\u4045\u4046"+
-        "\u4047\u4048\u4049\u404A\u404B\u404C\u404D\u404E"+
-        "\u404F\u4050\u4051\u4052\u4053\u4054\u4055\u4057"+
-        "\u4058\u4059\u405A\u405B\u405C\u405D\u405E\u405F"+
-        "\u4060\u4061\u4062\u4063\u4064\u4065\u4066\u4067"+
-        "\u4068\u4069\u406A\u406B\u406C\u406D\u406E\u406F"+
-        "\u4070\u4071\u4072\u4073\u4074\u4075\u4076\u4077"+
-        "\u4078\u4079\u407A\u407B\u407C\u407D\u407E\u407F"+
-        "\u4080\u4081\u4082\u4083\u4084\u4085\u4086\u4087"+
-        "\u4088\u4089\u408A\u408B\u408C\u408D\u408E\u408F"+
-        "\u4090\u4091\u4092\u4093\u4094\u4095\u4096\u4097"+
-        "\u4098\u4099\u409A\u409B\u409C\u409D\u409E\u409F"+
-        "\u40A0\u40A1\u40A2\u40A3\u40A4\u40A5\u40A6\u40A7"+
-        "\u40A8\u40A9\u40AA\u40AB\u40AC\u40AD\u40AE\u40AF"+
-        "\u40B0\u40B1\u40B2\u40B3\u40B4\u40B5\u40B6\u40B7"+
-        "\u40B8\u40B9\u40BA\u40BB\u40BC\u40BD\u40BE\u40BF"+
-        "\u40C0\u40C1\u40C2\u40C3\u40C4\u40C5\u40C6\u40C7"+
-        "\u40C8\u40C9\u40CA\u40CB\u40CC\u40CD\u40CE\u40CF"+
-        "\u40D0\u40D1\u40D2\u40D3\u40D4\u40D5\u40D6\u40D7"+
-        "\u40D8\u40D9\u40DA\u40DB\u40DC\u40DD\u40DE\u40DF"+
-        "\u40E0\u40E1\u40E2\u40E3\u40E4\u40E5\u40E6\u40E7"+
-        "\u40E8\u40E9\u40EA\u40EB\u40EC\u40ED\u40EE\u40EF"+
-        "\u40F0\u40F1\u40F2\u40F3\u40F4\u40F5\u40F6\u40F7"+
-        "\u40F8\u40F9\u40FA\u40FB\u40FC\u40FD\u40FE\u40FF"+
-        "\u4100\u4101\u4102\u4103\u4104\u4105\u4106\u4107"+
-        "\u4108\u4109\u410A\u410B\u410C\u410D\u410E\u410F"+
-        "\u4110\u4111\u4112\u4113\u4114\u4115\u4116\u4117"+
-        "\u4118\u4119\u411A\u411B\u411C\u411D\u411E\u411F"+
-        "\u4120\u4121\u4122\u4123\u4124\u4125\u4126\u4127"+
-        "\u4128\u4129\u412A\u412B\u412C\u412D\u412E\u412F"+
-        "\u4130\u4131\u4132\u4133\u4134\u4135\u4136\u4137"+
-        "\u4138\u4139\u413A\u413B\u413C\u413D\u413E\u413F"+
-        "\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147"+
-        "\u4148\u4149\u414A\u414B\u414C\u414D\u414E\u414F"+
-        "\u4150\u4151\u4152\u4153\u4154\u4155\u4156\u4157"+
-        "\u4158\u4159\u415A\u415B\u415C\u415D\u415E\u4160"+
-        "\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168"+
-        "\u4169\u416A\u416B\u416C\u416D\u416E\u416F\u4170"+
-        "\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178"+
-        "\u4179\u417A\u417B\u417C\u417D\u417E\u417F\u4180"+
-        "\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188"+
-        "\u4189\u418A\u418B\u418C\u418D\u418E\u418F\u4190"+
-        "\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198"+
-        "\u4199\u419A\u419B\u419C\u419D\u419E\u419F\u41A0"+
-        "\u41A1\u41A2\u41A3\u41A4\u41A5\u41A6\u41A7\u41A8"+
-        "\u41A9\u41AA\u41AB\u41AC\u41AD\u41AE\u41AF\u41B0"+
-        "\u41B1\u41B2\u41B3\u41B4\u41B5\u41B6\u41B7\u41B8"+
-        "\u41B9\u41BA\u41BB\u41BC\u41BD\u41BE\u41BF\u41C0"+
-        "\u41C1\u41C2\u41C3\u41C4\u41C5\u41C6\u41C7\u41C8"+
-        "\u41C9\u41CA\u41CB\u41CC\u41CD\u41CE\u41CF\u41D0"+
-        "\u41D1\u41D2\u41D3\u41D4\u41D5\u41D6\u41D7\u41D8"+
-        "\u41D9\u41DA\u41DB\u41DC\u41DD\u41DE\u41DF\u41E0"+
-        "\u41E1\u41E2\u41E3\u41E4\u41E5\u41E6\u41E7\u41E8"+
-        "\u41E9\u41EA\u41EB\u41EC\u41ED\u41EE\u41EF\u41F0"+
-        "\u41F1\u41F2\u41F3\u41F4\u41F5\u41F6\u41F7\u41F8"+
-        "\u41F9\u41FA\u41FB\u41FC\u41FD\u41FE\u41FF\u4200"+
-        "\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208"+
-        "\u4209\u420A\u420B\u420C\u420D\u420E\u420F\u4210"+
-        "\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218"+
-        "\u4219\u421A\u421B\u421C\u421D\u421E\u421F\u4220"+
-        "\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228"+
-        "\u4229\u422A\u422B\u422C\u422D\u422E\u422F\u4230"+
-        "\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u4238"+
-        "\u4239\u423A\u423B\u423C\u423D\u423E\u423F\u4240"+
-        "\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u4248"+
-        "\u4249\u424A\u424B\u424C\u424D\u424E\u424F\u4250"+
-        "\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258"+
-        "\u4259\u425A\u425B\u425C\u425D\u425E\u425F\u4260"+
-        "\u4261\u4262\u4263\u4264\u4265\u4266\u4267\u4268"+
-        "\u4269\u426A\u426B\u426C\u426D\u426E\u426F\u4270"+
-        "\u4271\u4272\u4273\u4274\u4275\u4276\u4277\u4278"+
-        "\u4279\u427A\u427B\u427C\u427D\u427E\u427F\u4280"+
-        "\u4281\u4282\u4283\u4284\u4285\u4286\u4287\u4288"+
-        "\u4289\u428A\u428B\u428C\u428D\u428E\u428F\u4290"+
-        "\u4291\u4292\u4293\u4294\u4295\u4296\u4297\u4298"+
-        "\u4299\u429A\u429B\u429C\u429D\u429E\u429F\u42A0"+
-        "\u42A1\u42A2\u42A3\u42A4\u42A5\u42A6\u42A7\u42A8"+
-        "\u42A9\u42AA\u42AB\u42AC\u42AD\u42AE\u42AF\u42B0"+
-        "\u42B1\u42B2\u42B3\u42B4\u42B5\u42B6\u42B7\u42B8"+
-        "\u42B9\u42BA\u42BB\u42BC\u42BD\u42BE\u42BF\u42C0"+
-        "\u42C1\u42C2\u42C3\u42C4\u42C5\u42C6\u42C7\u42C8"+
-        "\u42C9\u42CA\u42CB\u42CC\u42CD\u42CE\u42CF\u42D0"+
-        "\u42D1\u42D2\u42D3\u42D4\u42D5\u42D6\u42D7\u42D8"+
-        "\u42D9\u42DA\u42DB\u42DC\u42DD\u42DE\u42DF\u42E0"+
-        "\u42E1\u42E2\u42E3\u42E4\u42E5\u42E6\u42E7\u42E8"+
-        "\u42E9\u42EA\u42EB\u42EC\u42ED\u42EE\u42EF\u42F0"+
-        "\u42F1\u42F2\u42F3\u42F4\u42F5\u42F6\u42F7\u42F8"+
-        "\u42F9\u42FA\u42FB\u42FC\u42FD\u42FE\u42FF\u4300"+
-        "\u4301\u4302\u4303\u4304\u4305\u4306\u4307\u4308"+
-        "\u4309\u430A\u430B\u430C\u430D\u430E\u430F\u4310"+
-        "\u4311\u4312\u4313\u4314\u4315\u4316\u4317\u4318"+
-        "\u4319\u431A\u431B\u431C\u431D\u431E\u431F\u4320"+
-        "\u4321\u4322\u4323\u4324\u4325\u4326\u4327\u4328"+
-        "\u4329\u432A\u432B\u432C\u432D\u432E\u432F\u4330"+
-        "\u4331\u4332\u4333\u4334\u4335\u4336\u4338\u4339"+
-        "\u433A\u433B\u433C\u433D\u433E\u433F\u4340\u4341"+
-        "\u4342\u4343\u4344\u4345\u4346\u4347\u4348\u4349"+
-        "\u434A\u434B\u434C\u434D\u434E\u434F\u4350\u4351"+
-        "\u4352\u4353\u4354\u4355\u4356\u4357\u4358\u4359"+
-        "\u435A\u435B\u435C\u435D\u435E\u435F\u4360\u4361"+
-        "\u4362\u4363\u4364\u4365\u4366\u4367\u4368\u4369"+
-        "\u436A\u436B\u436C\u436D\u436E\u436F\u4370\u4371"+
-        "\u4372\u4373\u4374\u4375\u4376\u4377\u4378\u4379";
-
-    private final static String innerDecoderIndex4=
-        "\u437A\u437B\u437C\u437D\u437E\u437F\u4380\u4381"+
-        "\u4382\u4383\u4384\u4385\u4386\u4387\u4388\u4389"+
-        "\u438A\u438B\u438C\u438D\u438E\u438F\u4390\u4391"+
-        "\u4392\u4393\u4394\u4395\u4396\u4397\u4398\u4399"+
-        "\u439A\u439B\u439C\u439D\u439E\u439F\u43A0\u43A1"+
-        "\u43A2\u43A3\u43A4\u43A5\u43A6\u43A7\u43A8\u43A9"+
-        "\u43AA\u43AB\u43AD\u43AE\u43AF\u43B0\u43B2\u43B3"+
-        "\u43B4\u43B5\u43B6\u43B7\u43B8\u43B9\u43BA\u43BB"+
-        "\u43BC\u43BD\u43BE\u43BF\u43C0\u43C1\u43C2\u43C3"+
-        "\u43C4\u43C5\u43C6\u43C7\u43C8\u43C9\u43CA\u43CB"+
-        "\u43CC\u43CD\u43CE\u43CF\u43D0\u43D1\u43D2\u43D3"+
-        "\u43D4\u43D5\u43D6\u43D7\u43D8\u43D9\u43DA\u43DB"+
-        "\u43DC\u43DE\u43DF\u43E0\u43E1\u43E2\u43E3\u43E4"+
-        "\u43E5\u43E6\u43E7\u43E8\u43E9\u43EA\u43EB\u43EC"+
-        "\u43ED\u43EE\u43EF\u43F0\u43F1\u43F2\u43F3\u43F4"+
-        "\u43F5\u43F6\u43F7\u43F8\u43F9\u43FA\u43FB\u43FC"+
-        "\u43FD\u43FE\u43FF\u4400\u4401\u4402\u4403\u4404"+
-        "\u4405\u4406\u4407\u4408\u4409\u440A\u440B\u440C"+
-        "\u440D\u440E\u440F\u4410\u4411\u4412\u4413\u4414"+
-        "\u4415\u4416\u4417\u4418\u4419\u441A\u441B\u441C"+
-        "\u441D\u441E\u441F\u4420\u4421\u4422\u4423\u4424"+
-        "\u4425\u4426\u4427\u4428\u4429\u442A\u442B\u442C"+
-        "\u442D\u442E\u442F\u4430\u4431\u4432\u4433\u4434"+
-        "\u4435\u4436\u4437\u4438\u4439\u443A\u443B\u443C"+
-        "\u443D\u443E\u443F\u4440\u4441\u4442\u4443\u4444"+
-        "\u4445\u4446\u4447\u4448\u4449\u444A\u444B\u444C"+
-        "\u444D\u444E\u444F\u4450\u4451\u4452\u4453\u4454"+
-        "\u4455\u4456\u4457\u4458\u4459\u445A\u445B\u445C"+
-        "\u445D\u445E\u445F\u4460\u4461\u4462\u4463\u4464"+
-        "\u4465\u4466\u4467\u4468\u4469\u446A\u446B\u446C"+
-        "\u446D\u446E\u446F\u4470\u4471\u4472\u4473\u4474"+
-        "\u4475\u4476\u4477\u4478\u4479\u447A\u447B\u447C"+
-        "\u447D\u447E\u447F\u4480\u4481\u4482\u4483\u4484"+
-        "\u4485\u4486\u4487\u4488\u4489\u448A\u448B\u448C"+
-        "\u448D\u448E\u448F\u4490\u4491\u4492\u4493\u4494"+
-        "\u4495\u4496\u4497\u4498\u4499\u449A\u449B\u449C"+
-        "\u449D\u449E\u449F\u44A0\u44A1\u44A2\u44A3\u44A4"+
-        "\u44A5\u44A6\u44A7\u44A8\u44A9\u44AA\u44AB\u44AC"+
-        "\u44AD\u44AE\u44AF\u44B0\u44B1\u44B2\u44B3\u44B4"+
-        "\u44B5\u44B6\u44B7\u44B8\u44B9\u44BA\u44BB\u44BC"+
-        "\u44BD\u44BE\u44BF\u44C0\u44C1\u44C2\u44C3\u44C4"+
-        "\u44C5\u44C6\u44C7\u44C8\u44C9\u44CA\u44CB\u44CC"+
-        "\u44CD\u44CE\u44CF\u44D0\u44D1\u44D2\u44D3\u44D4"+
-        "\u44D5\u44D7\u44D8\u44D9\u44DA\u44DB\u44DC\u44DD"+
-        "\u44DE\u44DF\u44E0\u44E1\u44E2\u44E3\u44E4\u44E5"+
-        "\u44E6\u44E7\u44E8\u44E9\u44EA\u44EB\u44EC\u44ED"+
-        "\u44EE\u44EF\u44F0\u44F1\u44F2\u44F3\u44F4\u44F5"+
-        "\u44F6\u44F7\u44F8\u44F9\u44FA\u44FB\u44FC\u44FD"+
-        "\u44FE\u44FF\u4500\u4501\u4502\u4503\u4504\u4505"+
-        "\u4506\u4507\u4508\u4509\u450A\u450B\u450C\u450D"+
-        "\u450E\u450F\u4510\u4511\u4512\u4513\u4514\u4515"+
-        "\u4516\u4517\u4518\u4519\u451A\u451B\u451C\u451D"+
-        "\u451E\u451F\u4520\u4521\u4522\u4523\u4524\u4525"+
-        "\u4526\u4527\u4528\u4529\u452A\u452B\u452C\u452D"+
-        "\u452E\u452F\u4530\u4531\u4532\u4533\u4534\u4535"+
-        "\u4536\u4537\u4538\u4539\u453A\u453B\u453C\u453D"+
-        "\u453E\u453F\u4540\u4541\u4542\u4543\u4544\u4545"+
-        "\u4546\u4547\u4548\u4549\u454A\u454B\u454C\u454D"+
-        "\u454E\u454F\u4550\u4551\u4552\u4553\u4554\u4555"+
-        "\u4556\u4557\u4558\u4559\u455A\u455B\u455C\u455D"+
-        "\u455E\u455F\u4560\u4561\u4562\u4563\u4564\u4565"+
-        "\u4566\u4567\u4568\u4569\u456A\u456B\u456C\u456D"+
-        "\u456E\u456F\u4570\u4571\u4572\u4573\u4574\u4575"+
-        "\u4576\u4577\u4578\u4579\u457A\u457B\u457C\u457D"+
-        "\u457E\u457F\u4580\u4581\u4582\u4583\u4584\u4585"+
-        "\u4586\u4587\u4588\u4589\u458A\u458B\u458C\u458D"+
-        "\u458E\u458F\u4590\u4591\u4592\u4593\u4594\u4595"+
-        "\u4596\u4597\u4598\u4599\u459A\u459B\u459C\u459D"+
-        "\u459E\u459F\u45A0\u45A1\u45A2\u45A3\u45A4\u45A5"+
-        "\u45A6\u45A7\u45A8\u45A9\u45AA\u45AB\u45AC\u45AD"+
-        "\u45AE\u45AF\u45B0\u45B1\u45B2\u45B3\u45B4\u45B5"+
-        "\u45B6\u45B7\u45B8\u45B9\u45BA\u45BB\u45BC\u45BD"+
-        "\u45BE\u45BF\u45C0\u45C1\u45C2\u45C3\u45C4\u45C5"+
-        "\u45C6\u45C7\u45C8\u45C9\u45CA\u45CB\u45CC\u45CD"+
-        "\u45CE\u45CF\u45D0\u45D1\u45D2\u45D3\u45D4\u45D5"+
-        "\u45D6\u45D7\u45D8\u45D9\u45DA\u45DB\u45DC\u45DD"+
-        "\u45DE\u45DF\u45E0\u45E1\u45E2\u45E3\u45E4\u45E5"+
-        "\u45E6\u45E7\u45E8\u45E9\u45EA\u45EB\u45EC\u45ED"+
-        "\u45EE\u45EF\u45F0\u45F1\u45F2\u45F3\u45F4\u45F5"+
-        "\u45F6\u45F7\u45F8\u45F9\u45FA\u45FB\u45FC\u45FD"+
-        "\u45FE\u45FF\u4600\u4601\u4602\u4603\u4604\u4605"+
-        "\u4606\u4607\u4608\u4609\u460A\u460B\u460C\u460D"+
-        "\u460E\u460F\u4610\u4611\u4612\u4613\u4614\u4615"+
-        "\u4616\u4617\u4618\u4619\u461A\u461B\u461C\u461D"+
-        "\u461E\u461F\u4620\u4621\u4622\u4623\u4624\u4625"+
-        "\u4626\u4627\u4628\u4629\u462A\u462B\u462C\u462D"+
-        "\u462E\u462F\u4630\u4631\u4632\u4633\u4634\u4635"+
-        "\u4636\u4637\u4638\u4639\u463A\u463B\u463C\u463D"+
-        "\u463E\u463F\u4640\u4641\u4642\u4643\u4644\u4645"+
-        "\u4646\u4647\u4648\u4649\u464A\u464B\u464D\u464E"+
-        "\u464F\u4650\u4651\u4652\u4653\u4654\u4655\u4656"+
-        "\u4657\u4658\u4659\u465A\u465B\u465C\u465D\u465E"+
-        "\u465F\u4660\u4662\u4663\u4664\u4665\u4666\u4667"+
-        "\u4668\u4669\u466A\u466B\u466C\u466D\u466E\u466F"+
-        "\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677"+
-        "\u4678\u4679\u467A\u467B\u467C\u467D\u467E\u467F"+
-        "\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687"+
-        "\u4688\u4689\u468A\u468B\u468C\u468D\u468E\u468F"+
-        "\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697"+
-        "\u4698\u4699\u469A\u469B\u469C\u469D\u469E\u469F"+
-        "\u46A0\u46A1\u46A2\u46A3\u46A4\u46A5\u46A6\u46A7"+
-        "\u46A8\u46A9\u46AA\u46AB\u46AC\u46AD\u46AE\u46AF"+
-        "\u46B0\u46B1\u46B2\u46B3\u46B4\u46B5\u46B6\u46B7"+
-        "\u46B8\u46B9\u46BA\u46BB\u46BC\u46BD\u46BE\u46BF"+
-        "\u46C0\u46C1\u46C2\u46C3\u46C4\u46C5\u46C6\u46C7"+
-        "\u46C8\u46C9\u46CA\u46CB\u46CC\u46CD\u46CE\u46CF"+
-        "\u46D0\u46D1\u46D2\u46D3\u46D4\u46D5\u46D6\u46D7"+
-        "\u46D8\u46D9\u46DA\u46DB\u46DC\u46DD\u46DE\u46DF"+
-        "\u46E0\u46E1\u46E2\u46E3\u46E4\u46E5\u46E6\u46E7"+
-        "\u46E8\u46E9\u46EA\u46EB\u46EC\u46ED\u46EE\u46EF"+
-        "\u46F0\u46F1\u46F2\u46F3\u46F4\u46F5\u46F6\u46F7"+
-        "\u46F8\u46F9\u46FA\u46FB\u46FC\u46FD\u46FE\u46FF"+
-        "\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707"+
-        "\u4708\u4709\u470A\u470B\u470C\u470D\u470E\u470F"+
-        "\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717"+
-        "\u4718\u4719\u471A\u471B\u471C\u471D\u471E\u471F"+
-        "\u4720\u4721\u4722\u4724\u4725\u4726\u4727\u4728"+
-        "\u472A\u472B\u472C\u472D\u472E\u472F\u4730\u4731"+
-        "\u4732\u4733\u4734\u4735\u4736\u4737\u4738\u4739"+
-        "\u473A\u473B\u473C\u473D\u473E\u473F\u4740\u4741"+
-        "\u4742\u4743\u4744\u4745\u4746\u4747\u4748\u4749"+
-        "\u474A\u474B\u474C\u474D\u474E\u474F\u4750\u4751"+
-        "\u4752\u4753\u4754\u4755\u4756\u4757\u4758\u4759"+
-        "\u475A\u475B\u475C\u475D\u475E\u475F\u4760\u4761"+
-        "\u4762\u4763\u4764\u4765\u4766\u4767\u4768\u4769"+
-        "\u476A\u476B\u476C\u476D\u476E\u476F\u4770\u4771"+
-        "\u4772\u4773\u4774\u4775\u4776\u4777\u4778\u4779"+
-        "\u477A\u477B\u477D\u477E\u477F\u4780\u4781\u4782"+
-        "\u4783\u4784\u4785\u4786\u4787\u4788\u4789\u478A"+
-        "\u478B\u478C\u478E\u478F\u4790\u4791\u4792\u4793"+
-        "\u4794\u4795\u4796\u4797\u4798\u4799\u479A\u479B"+
-        "\u479C\u479D\u479E\u479F\u47A0\u47A1\u47A2\u47A3"+
-        "\u47A4\u47A5\u47A6\u47A7\u47A8\u47A9\u47AA\u47AB"+
-        "\u47AC\u47AD\u47AE\u47AF\u47B0\u47B1\u47B2\u47B3"+
-        "\u47B4\u47B5\u47B6\u47B7\u47B8\u47B9\u47BA\u47BB"+
-        "\u47BC\u47BD\u47BE\u47BF\u47C0\u47C1\u47C2\u47C3"+
-        "\u47C4\u47C5\u47C6\u47C7\u47C8\u47C9\u47CA\u47CB"+
-        "\u47CC\u47CD\u47CE\u47CF\u47D0\u47D1\u47D2\u47D3"+
-        "\u47D4\u47D5\u47D6\u47D7\u47D8\u47D9\u47DA\u47DB"+
-        "\u47DC\u47DD\u47DE\u47DF\u47E0\u47E1\u47E2\u47E3"+
-        "\u47E4\u47E5\u47E6\u47E7\u47E8\u47E9\u47EA\u47EB"+
-        "\u47EC\u47ED\u47EE\u47EF\u47F0\u47F1\u47F2\u47F3"+
-        "\u47F4\u47F5\u47F6\u47F7\u47F8\u47F9\u47FA\u47FB"+
-        "\u47FC\u47FD\u47FE\u47FF\u4800\u4801\u4802\u4803"+
-        "\u4804\u4805\u4806\u4807\u4808\u4809\u480A\u480B"+
-        "\u480C\u480D\u480E\u480F\u4810\u4811\u4812\u4813"+
-        "\u4814\u4815\u4816\u4817\u4818\u4819\u481A\u481B"+
-        "\u481C\u481D\u481E\u481F\u4820\u4821\u4822\u4823"+
-        "\u4824\u4825\u4826\u4827\u4828\u4829\u482A\u482B"+
-        "\u482C\u482D\u482E\u482F\u4830\u4831\u4832\u4833"+
-        "\u4834\u4835\u4836\u4837\u4838\u4839\u483A\u483B"+
-        "\u483C\u483D\u483E\u483F\u4840\u4841\u4842\u4843"+
-        "\u4844\u4845\u4846\u4847\u4848\u4849\u484A\u484B"+
-        "\u484C\u484D\u484E\u484F\u4850\u4851\u4852\u4853"+
-        "\u4854\u4855\u4856\u4857\u4858\u4859\u485A\u485B"+
-        "\u485C\u485D\u485E\u485F\u4860\u4861\u4862\u4863"+
-        "\u4864\u4865\u4866\u4867\u4868\u4869\u486A\u486B"+
-        "\u486C\u486D\u486E\u486F\u4870\u4871\u4872\u4873"+
-        "\u4874\u4875\u4876\u4877\u4878\u4879\u487A\u487B"+
-        "\u487C\u487D\u487E\u487F\u4880\u4881\u4882\u4883"+
-        "\u4884\u4885\u4886\u4887\u4888\u4889\u488A\u488B"+
-        "\u488C\u488D\u488E\u488F\u4890\u4891\u4892\u4893"+
-        "\u4894\u4895\u4896\u4897\u4898\u4899\u489A\u489B"+
-        "\u489C\u489D\u489E\u489F\u48A0\u48A1\u48A2\u48A3"+
-        "\u48A4\u48A5\u48A6\u48A7\u48A8\u48A9\u48AA\u48AB"+
-        "\u48AC\u48AD\u48AE\u48AF\u48B0\u48B1\u48B2\u48B3"+
-        "\u48B4\u48B5\u48B6\u48B7\u48B8\u48B9\u48BA\u48BB"+
-        "\u48BC\u48BD\u48BE\u48BF\u48C0\u48C1\u48C2\u48C3"+
-        "\u48C4\u48C5\u48C6\u48C7\u48C8\u48C9\u48CA\u48CB"+
-        "\u48CC\u48CD\u48CE\u48CF\u48D0\u48D1\u48D2\u48D3"+
-        "\u48D4\u48D5\u48D6\u48D7\u48D8\u48D9\u48DA\u48DB"+
-        "\u48DC\u48DD\u48DE\u48DF\u48E0\u48E1\u48E2\u48E3"+
-        "\u48E4\u48E5\u48E6\u48E7\u48E8\u48E9\u48EA\u48EB"+
-        "\u48EC\u48ED\u48EE\u48EF\u48F0\u48F1\u48F2\u48F3"+
-        "\u48F4\u48F5\u48F6\u48F7\u48F8\u48F9\u48FA\u48FB"+
-        "\u48FC\u48FD\u48FE\u48FF\u4900\u4901\u4902\u4903"+
-        "\u4904\u4905\u4906\u4907\u4908\u4909\u490A\u490B"+
-        "\u490C\u490D\u490E\u490F\u4910\u4911\u4912\u4913"+
-        "\u4914\u4915\u4916\u4917\u4918\u4919\u491A\u491B"+
-        "\u491C\u491D\u491E\u491F\u4920\u4921\u4922\u4923"+
-        "\u4924\u4925\u4926\u4927\u4928\u4929\u492A\u492B"+
-        "\u492C\u492D\u492E\u492F\u4930\u4931\u4932\u4933"+
-        "\u4934\u4935\u4936\u4937\u4938\u4939\u493A\u493B"+
-        "\u493C\u493D\u493E\u493F\u4940\u4941\u4942\u4943"+
-        "\u4944\u4945\u4946\u4948\u4949\u494A\u494B\u494C"+
-        "\u494D\u494E\u494F\u4950\u4951\u4952\u4953\u4954"+
-        "\u4955\u4956\u4957\u4958\u4959\u495A\u495B\u495C"+
-        "\u495D\u495E\u495F\u4960\u4961\u4962\u4963\u4964"+
-        "\u4965\u4966\u4967\u4968\u4969\u496A\u496B\u496C"+
-        "\u496D\u496E\u496F\u4970\u4971\u4972\u4973\u4974"+
-        "\u4975\u4976\u4977\u4978\u4979\u497B\u497C\u497E"+
-        "\u497F\u4980\u4981\u4984\u4987\u4988\u4989\u498A"+
-        "\u498B\u498C\u498D\u498E\u498F\u4990\u4991\u4992"+
-        "\u4993\u4994\u4995\u4996\u4997\u4998\u4999\u499A"+
-        "\u499C\u499D\u499E\u49A0\u49A1\u49A2\u49A3\u49A4"+
-        "\u49A5\u49A6\u49A7\u49A8\u49A9\u49AA\u49AB\u49AC"+
-        "\u49AD\u49AE\u49AF\u49B0\u49B1\u49B2\u49B3\u49B4"+
-        "\u49B5\u49B8\u49B9\u49BA\u49BB\u49BC\u49BD\u49BE"+
-        "\u49BF\u49C0\u49C1\u49C2\u49C3\u49C4\u49C5\u49C6"+
-        "\u49C7\u49C8\u49C9\u49CA\u49CB\u49CC\u49CD\u49CE"+
-        "\u49CF\u49D0\u49D1\u49D2\u49D3\u49D4\u49D5\u49D6"+
-        "\u49D7\u49D8\u49D9\u49DA\u49DB\u49DC\u49DD\u49DE"+
-        "\u49DF\u49E0\u49E1\u49E2\u49E3\u49E4\u49E5\u49E6"+
-        "\u49E7\u49E8\u49E9\u49EA\u49EB\u49EC\u49ED\u49EE"+
-        "\u49EF\u49F0\u49F1\u49F2\u49F3\u49F4\u49F5\u49F6"+
-        "\u49F7\u49F8\u49F9\u49FA\u49FB\u49FC\u49FD\u49FE"+
-        "\u49FF\u4A00\u4A01\u4A02\u4A03\u4A04\u4A05\u4A06"+
-        "\u4A07\u4A08\u4A09\u4A0A\u4A0B\u4A0C\u4A0D\u4A0E"+
-        "\u4A0F\u4A10\u4A11\u4A12\u4A13\u4A14\u4A15\u4A16"+
-        "\u4A17\u4A18\u4A19\u4A1A\u4A1B\u4A1C\u4A1D\u4A1E"+
-        "\u4A1F\u4A20\u4A21\u4A22\u4A23\u4A24\u4A25\u4A26"+
-        "\u4A27\u4A28\u4A29\u4A2A\u4A2B\u4A2C\u4A2D\u4A2E"+
-        "\u4A2F\u4A30\u4A31\u4A32\u4A33\u4A34\u4A35\u4A36"+
-        "\u4A37\u4A38\u4A39\u4A3A\u4A3B\u4A3C\u4A3D\u4A3E"+
-        "\u4A3F\u4A40\u4A41\u4A42\u4A43\u4A44\u4A45\u4A46"+
-        "\u4A47\u4A48\u4A49\u4A4A\u4A4B\u4A4C\u4A4D\u4A4E"+
-        "\u4A4F\u4A50\u4A51\u4A52\u4A53\u4A54\u4A55\u4A56"+
-        "\u4A57\u4A58\u4A59\u4A5A\u4A5B\u4A5C\u4A5D\u4A5E"+
-        "\u4A5F\u4A60\u4A61\u4A62\u4A63\u4A64\u4A65\u4A66"+
-        "\u4A67\u4A68\u4A69\u4A6A\u4A6B\u4A6C\u4A6D\u4A6E"+
-        "\u4A6F\u4A70\u4A71\u4A72\u4A73\u4A74\u4A75\u4A76"+
-        "\u4A77\u4A78\u4A79\u4A7A\u4A7B\u4A7C\u4A7D\u4A7E"+
-        "\u4A7F\u4A80\u4A81\u4A82\u4A83\u4A84\u4A85\u4A86"+
-        "\u4A87\u4A88\u4A89\u4A8A\u4A8B\u4A8C\u4A8D\u4A8E"+
-        "\u4A8F\u4A90\u4A91\u4A92\u4A93\u4A94\u4A95\u4A96"+
-        "\u4A97\u4A98\u4A99\u4A9A\u4A9B\u4A9C\u4A9D\u4A9E"+
-        "\u4A9F\u4AA0\u4AA1\u4AA2\u4AA3\u4AA4\u4AA5\u4AA6"+
-        "\u4AA7\u4AA8\u4AA9\u4AAA\u4AAB\u4AAC\u4AAD\u4AAE"+
-        "\u4AAF\u4AB0\u4AB1\u4AB2\u4AB3\u4AB4\u4AB5\u4AB6"+
-        "\u4AB7\u4AB8\u4AB9\u4ABA\u4ABB\u4ABC\u4ABD\u4ABE"+
-        "\u4ABF\u4AC0\u4AC1\u4AC2\u4AC3\u4AC4\u4AC5\u4AC6"+
-        "\u4AC7\u4AC8\u4AC9\u4ACA\u4ACB\u4ACC\u4ACD\u4ACE"+
-        "\u4ACF\u4AD0\u4AD1\u4AD2\u4AD3\u4AD4\u4AD5\u4AD6"+
-        "\u4AD7\u4AD8\u4AD9\u4ADA\u4ADB\u4ADC\u4ADD\u4ADE"+
-        "\u4ADF\u4AE0\u4AE1\u4AE2\u4AE3\u4AE4\u4AE5\u4AE6"+
-        "\u4AE7\u4AE8\u4AE9\u4AEA\u4AEB\u4AEC\u4AED\u4AEE"+
-        "\u4AEF\u4AF0\u4AF1\u4AF2\u4AF3\u4AF4\u4AF5\u4AF6"+
-        "\u4AF7\u4AF8\u4AF9\u4AFA\u4AFB\u4AFC\u4AFD\u4AFE"+
-        "\u4AFF\u4B00\u4B01\u4B02\u4B03\u4B04\u4B05\u4B06"+
-        "\u4B07\u4B08\u4B09\u4B0A\u4B0B\u4B0C\u4B0D\u4B0E"+
-        "\u4B0F\u4B10\u4B11\u4B12\u4B13\u4B14\u4B15\u4B16"+
-        "\u4B17\u4B18\u4B19\u4B1A\u4B1B\u4B1C\u4B1D\u4B1E"+
-        "\u4B1F\u4B20\u4B21\u4B22\u4B23\u4B24\u4B25\u4B26"+
-        "\u4B27\u4B28\u4B29\u4B2A\u4B2B\u4B2C\u4B2D\u4B2E"+
-        "\u4B2F\u4B30\u4B31\u4B32\u4B33\u4B34\u4B35\u4B36"+
-        "\u4B37\u4B38\u4B39\u4B3A\u4B3B\u4B3C\u4B3D\u4B3E"+
-        "\u4B3F\u4B40\u4B41\u4B42\u4B43\u4B44\u4B45\u4B46"+
-        "\u4B47\u4B48\u4B49\u4B4A\u4B4B\u4B4C\u4B4D\u4B4E"+
-        "\u4B4F\u4B50\u4B51\u4B52\u4B53\u4B54\u4B55\u4B56"+
-        "\u4B57\u4B58\u4B59\u4B5A\u4B5B\u4B5C\u4B5D\u4B5E"+
-        "\u4B5F\u4B60\u4B61\u4B62\u4B63\u4B64\u4B65\u4B66"+
-        "\u4B67\u4B68\u4B69\u4B6A\u4B6B\u4B6C\u4B6D\u4B6E"+
-        "\u4B6F\u4B70\u4B71\u4B72\u4B73\u4B74\u4B75\u4B76"+
-        "\u4B77\u4B78\u4B79\u4B7A\u4B7B\u4B7C\u4B7D\u4B7E"+
-        "\u4B7F\u4B80\u4B81\u4B82\u4B83\u4B84\u4B85\u4B86"+
-        "\u4B87\u4B88\u4B89\u4B8A\u4B8B\u4B8C\u4B8D\u4B8E"+
-        "\u4B8F\u4B90\u4B91\u4B92\u4B93\u4B94\u4B95\u4B96"+
-        "\u4B97\u4B98\u4B99\u4B9A\u4B9B\u4B9C\u4B9D\u4B9E"+
-        "\u4B9F\u4BA0\u4BA1\u4BA2\u4BA3\u4BA4\u4BA5\u4BA6"+
-        "\u4BA7\u4BA8\u4BA9\u4BAA\u4BAB\u4BAC\u4BAD\u4BAE"+
-        "\u4BAF\u4BB0\u4BB1\u4BB2\u4BB3\u4BB4\u4BB5\u4BB6"+
-        "\u4BB7\u4BB8\u4BB9\u4BBA\u4BBB\u4BBC\u4BBD\u4BBE"+
-        "\u4BBF\u4BC0\u4BC1\u4BC2\u4BC3\u4BC4\u4BC5\u4BC6"+
-        "\u4BC7\u4BC8\u4BC9\u4BCA\u4BCB\u4BCC\u4BCD\u4BCE"+
-        "\u4BCF\u4BD0\u4BD1\u4BD2\u4BD3\u4BD4\u4BD5\u4BD6"+
-        "\u4BD7\u4BD8\u4BD9\u4BDA\u4BDB\u4BDC\u4BDD\u4BDE"+
-        "\u4BDF\u4BE0\u4BE1\u4BE2\u4BE3\u4BE4\u4BE5\u4BE6"+
-        "\u4BE7\u4BE8\u4BE9\u4BEA\u4BEB\u4BEC\u4BED\u4BEE"+
-        "\u4BEF\u4BF0\u4BF1\u4BF2\u4BF3\u4BF4\u4BF5\u4BF6"+
-        "\u4BF7\u4BF8\u4BF9\u4BFA\u4BFB\u4BFC\u4BFD\u4BFE"+
-        "\u4BFF\u4C00\u4C01\u4C02\u4C03\u4C04\u4C05\u4C06"+
-        "\u4C07\u4C08\u4C09\u4C0A\u4C0B\u4C0C\u4C0D\u4C0E"+
-        "\u4C0F\u4C10\u4C11\u4C12\u4C13\u4C14\u4C15\u4C16"+
-        "\u4C17\u4C18\u4C19\u4C1A\u4C1B\u4C1C\u4C1D\u4C1E"+
-        "\u4C1F\u4C20\u4C21\u4C22\u4C23\u4C24\u4C25\u4C26"+
-        "\u4C27\u4C28\u4C29\u4C2A\u4C2B\u4C2C\u4C2D\u4C2E"+
-        "\u4C2F\u4C30\u4C31\u4C32\u4C33\u4C34\u4C35\u4C36"+
-        "\u4C37\u4C38\u4C39\u4C3A\u4C3B\u4C3C\u4C3D\u4C3E"+
-        "\u4C3F\u4C40\u4C41\u4C42\u4C43\u4C44\u4C45\u4C46"+
-        "\u4C47\u4C48\u4C49\u4C4A\u4C4B\u4C4C\u4C4D\u4C4E"+
-        "\u4C4F\u4C50\u4C51\u4C52\u4C53\u4C54\u4C55\u4C56"+
-        "\u4C57\u4C58\u4C59\u4C5A\u4C5B\u4C5C\u4C5D\u4C5E"+
-        "\u4C5F\u4C60\u4C61\u4C62\u4C63\u4C64\u4C65\u4C66"+
-        "\u4C67\u4C68\u4C69\u4C6A\u4C6B\u4C6C\u4C6D\u4C6E"+
-        "\u4C6F\u4C70\u4C71\u4C72\u4C73\u4C74\u4C75\u4C76"+
-        "\u4C78\u4C79\u4C7A\u4C7B\u4C7C\u4C7D\u4C7E\u4C7F"+
-        "\u4C80\u4C81\u4C82\u4C83\u4C84\u4C85\u4C86\u4C87"+
-        "\u4C88\u4C89\u4C8A\u4C8B\u4C8C\u4C8D\u4C8E\u4C8F"+
-        "\u4C90\u4C91\u4C92\u4C93\u4C94\u4C95\u4C96\u4C97"+
-        "\u4C98\u4C99\u4C9A\u4C9B\u4C9C\u4C9D\u4C9E\u4CA4"+
-        "\u4CA5\u4CA6\u4CA7\u4CA8\u4CA9\u4CAA\u4CAB\u4CAC"+
-        "\u4CAD\u4CAE\u4CAF\u4CB0\u4CB1\u4CB2\u4CB3\u4CB4"+
-        "\u4CB5\u4CB6\u4CB7\u4CB8\u4CB9\u4CBA\u4CBB\u4CBC"+
-        "\u4CBD\u4CBE\u4CBF\u4CC0\u4CC1\u4CC2\u4CC3\u4CC4"+
-        "\u4CC5\u4CC6\u4CC7\u4CC8\u4CC9\u4CCA\u4CCB\u4CCC"+
-        "\u4CCD\u4CCE\u4CCF\u4CD0\u4CD1\u4CD2\u4CD3\u4CD4"+
-        "\u4CD5\u4CD6\u4CD7\u4CD8\u4CD9\u4CDA\u4CDB\u4CDC"+
-        "\u4CDD\u4CDE\u4CDF\u4CE0\u4CE1\u4CE2\u4CE3\u4CE4"+
-        "\u4CE5\u4CE6\u4CE7\u4CE8\u4CE9\u4CEA\u4CEB\u4CEC"+
-        "\u4CED\u4CEE\u4CEF\u4CF0\u4CF1\u4CF2\u4CF3\u4CF4"+
-        "\u4CF5\u4CF6\u4CF7\u4CF8\u4CF9\u4CFA\u4CFB\u4CFC"+
-        "\u4CFD\u4CFE\u4CFF\u4D00\u4D01\u4D02\u4D03\u4D04"+
-        "\u4D05\u4D06\u4D07\u4D08\u4D09\u4D0A\u4D0B\u4D0C"+
-        "\u4D0D\u4D0E\u4D0F\u4D10\u4D11\u4D12\u4D1A\u4D1B"+
-        "\u4D1C\u4D1D\u4D1E\u4D1F\u4D20\u4D21\u4D22\u4D23"+
-        "\u4D24\u4D25\u4D26\u4D27\u4D28\u4D29\u4D2A\u4D2B"+
-        "\u4D2C\u4D2D\u4D2E\u4D2F\u4D30\u4D31\u4D32\u4D33"+
-        "\u4D34\u4D35\u4D36\u4D37\u4D38\u4D39\u4D3A\u4D3B"+
-        "\u4D3C\u4D3D\u4D3E\u4D3F\u4D40\u4D41\u4D42\u4D43"+
-        "\u4D44\u4D45\u4D46\u4D47\u4D48\u4D49\u4D4A\u4D4B"+
-        "\u4D4C\u4D4D\u4D4E\u4D4F\u4D50\u4D51\u4D52\u4D53"+
-        "\u4D54\u4D55\u4D56\u4D57\u4D58\u4D59\u4D5A\u4D5B"+
-        "\u4D5C\u4D5D\u4D5E\u4D5F\u4D60\u4D61\u4D62\u4D63"+
-        "\u4D64\u4D65\u4D66\u4D67\u4D68\u4D69\u4D6A\u4D6B"+
-        "\u4D6C\u4D6D\u4D6E\u4D6F\u4D70\u4D71\u4D72\u4D73"+
-        "\u4D74\u4D75\u4D76\u4D77\u4D78\u4D79\u4D7A\u4D7B"+
-        "\u4D7C\u4D7D\u4D7E\u4D7F\u4D80\u4D81\u4D82\u4D83"+
-        "\u4D84\u4D85\u4D86\u4D87\u4D88\u4D89\u4D8A\u4D8B"+
-        "\u4D8C\u4D8D\u4D8E\u4D8F\u4D90\u4D91\u4D92\u4D93"+
-        "\u4D94\u4D95\u4D96\u4D97\u4D98\u4D99\u4D9A\u4D9B"+
-        "\u4D9C\u4D9D\u4D9E\u4D9F\u4DA0\u4DA1\u4DA2\u4DA3"+
-        "\u4DA4\u4DA5\u4DA6\u4DA7\u4DA8\u4DA9\u4DAA\u4DAB"+
-        "\u4DAC\u4DAD\u4DAF\u4DB0\u4DB1\u4DB2\u4DB3\u4DB4"+
-        "\u4DB5\u4DB6\u4DB7\u4DB8\u4DB9\u4DBA\u4DBB\u4DBC"+
-        "\u4DBD\u4DBE\u4DBF\u4DC0\u4DC1\u4DC2\u4DC3\u4DC4"+
-        "\u4DC5\u4DC6\u4DC7\u4DC8\u4DC9\u4DCA\u4DCB\u4DCC"+
-        "\u4DCD\u4DCE\u4DCF\u4DD0\u4DD1\u4DD2\u4DD3\u4DD4"+
-        "\u4DD5\u4DD6\u4DD7\u4DD8\u4DD9\u4DDA\u4DDB\u4DDC"+
-        "\u4DDD\u4DDE\u4DDF\u4DE0\u4DE1\u4DE2\u4DE3\u4DE4"+
-        "\u4DE5\u4DE6\u4DE7\u4DE8\u4DE9\u4DEA\u4DEB\u4DEC"+
-        "\u4DED\u4DEE\u4DEF\u4DF0\u4DF1\u4DF2\u4DF3\u4DF4"+
-        "\u4DF5\u4DF6\u4DF7\u4DF8\u4DF9\u4DFA\u4DFB\u4DFC"+
-        "\u4DFD\u4DFE\u4DFF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uE76C\uE7C8\uE7E7"+
-        "\uE7E8\uE7E9\uE7EA\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF"+
-        "\uE7F0\uE7F1\uE7F2\uE7F3\uE815\uE819\uE81A\uE81B"+
-        "\uE81C\uE81D\uE81F\uE820\uE821\uE822\uE823\uE824"+
-        "\uE825\uE827\uE828\uE829\uE82A\uE82D\uE82E\uE82F"+
-        "\uE830\uE833\uE834\uE835\uE836\uE837\uE838\uE839"+
-        "\uE83A\uE83C\uE83D\uE83E\uE83F\uE840\uE841\uE842"+
-        "\uE844\uE845\uE846\uE847\uE848\uE849\uE84A\uE84B"+
-        "\uE84C\uE84D\uE84E\uE84F\uE850\uE851\uE852\uE853"+
-        "\uE856\uE857\uE858\uE859\uE85A\uE85B\uE85C\uE85D"+
-        "\uE85E\uE85F\uE860\uE861\uE862\uE863\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uF900\uF901\uF902\uF903\uF904\uF905\uF906"+
-        "\uF907\uF908\uF909\uF90A\uF90B\uF90C\uF90D\uF90E"+
-        "\uF90F\uF910\uF911\uF912\uF913\uF914\uF915\uF916"+
-        "\uF917\uF918\uF919\uF91A\uF91B\uF91C\uF91D\uF91E"+
-        "\uF91F\uF920\uF921\uF922\uF923\uF924\uF925\uF926"+
-        "\uF927\uF928\uF929\uF92A\uF92B\uF92D\uF92E\uF92F"+
-        "\uF930\uF931\uF932\uF933\uF934\uF935\uF936\uF937"+
-        "\uF938\uF939\uF93A\uF93B\uF93C\uF93D\uF93E\uF93F"+
-        "\uF940\uF941\uF942\uF943\uF944\uF945\uF946\uF947"+
-        "\uF948\uF949\uF94A\uF94B\uF94C\uF94D\uF94E\uF94F"+
-        "\uF950\uF951\uF952\uF953\uF954\uF955\uF956\uF957"+
-        "\uF958\uF959\uF95A\uF95B\uF95C\uF95D\uF95E\uF95F"+
-        "\uF960\uF961\uF962\uF963\uF964\uF965\uF966\uF967"+
-        "\uF968\uF969\uF96A\uF96B\uF96C\uF96D\uF96E\uF96F"+
-        "\uF970\uF971\uF972\uF973\uF974\uF975\uF976\uF977"+
-        "\uF978\uF97A\uF97B\uF97C\uF97D\uF97E\uF97F\uF980"+
-        "\uF981\uF982\uF983\uF984\uF985\uF986\uF987\uF988"+
-        "\uF989\uF98A\uF98B\uF98C\uF98D\uF98E\uF98F\uF990"+
-        "\uF991\uF992\uF993\uF994\uF996\uF997\uF998\uF999"+
-        "\uF99A\uF99B\uF99C\uF99D\uF99E\uF99F\uF9A0\uF9A1"+
-        "\uF9A2\uF9A3\uF9A4\uF9A5\uF9A6\uF9A7\uF9A8\uF9A9"+
-        "\uF9AA\uF9AB\uF9AC\uF9AD\uF9AE\uF9AF\uF9B0\uF9B1"+
-        "\uF9B2\uF9B3\uF9B4\uF9B5\uF9B6\uF9B7\uF9B8\uF9B9"+
-        "\uF9BA\uF9BB\uF9BC\uF9BD\uF9BE\uF9BF\uF9C0\uF9C1"+
-        "\uF9C2\uF9C3\uF9C4\uF9C5\uF9C6\uF9C7\uF9C8\uF9C9"+
-        "\uF9CA\uF9CB\uF9CC\uF9CD\uF9CE\uF9CF\uF9D0\uF9D1"+
-        "\uF9D2\uF9D3\uF9D4\uF9D5\uF9D6\uF9D7\uF9D8\uF9D9"+
-        "\uF9DA\uF9DB\uF9DC\uF9DD\uF9DE\uF9DF\uF9E0\uF9E1"+
-        "\uF9E2\uF9E3\uF9E4\uF9E5\uF9E6\uF9E8\uF9E9\uF9EA"+
-        "\uF9EB\uF9EC\uF9ED\uF9EE\uF9EF\uF9F0\uF9F2\uF9F3"+
-        "\uF9F4\uF9F5\uF9F6\uF9F7\uF9F8\uF9F9\uF9FA\uF9FB"+
-        "\uF9FC\uF9FD\uF9FE\uF9FF\uFA00\uFA01\uFA02\uFA03"+
-        "\uFA04\uFA05\uFA06\uFA07\uFA08\uFA09\uFA0A\uFA0B"+
-        "\uFA10\uFA12\uFA15\uFA16\uFA17\uFA19\uFA1A\uFA1B"+
-        "\uFA1C\uFA1D\uFA1E\uFA22\uFA25\uFA26\uFA2A\uFA2B"+
-        "\uFA2C\uFA2D\uFA2E\uFA2F\uFA30\uFA31\uFA32\uFA33"+
-        "\uFA34\uFA35\uFA36\uFA37\uFA38\uFA39\uFA3A\uFA3B"+
-        "\uFA3C\uFA3D\uFA3E\uFA3F\uFA40\uFA41\uFA42\uFA43"+
-        "\uFA44\uFA45\uFA46\uFA47\uFA48\uFA49\uFA4A\uFA4B"+
-        "\uFA4C\uFA4D\uFA4E\uFA4F\uFA50\uFA51\uFA52\uFA53"+
-        "\uFA54\uFA55\uFA56\uFA57\uFA58\uFA59\uFA5A\uFA5B"+
-        "\uFA5C\uFA5D\uFA5E\uFA5F\uFA60\uFA61\uFA62\uFA63"+
-        "\uFA64\uFA65\uFA66\uFA67\uFA68\uFA69\uFA6A\uFA6B"+
-        "\uFA6C\uFA6D\uFA6E\uFA6F\uFA70\uFA71\uFA72\uFA73"+
-        "\uFA74\uFA75\uFA76\uFA77\uFA78\uFA79\uFA7A\uFA7B"+
-        "\uFA7C\uFA7D\uFA7E\uFA7F\uFA80\uFA81\uFA82\uFA83"+
-        "\uFA84\uFA85\uFA86\uFA87\uFA88\uFA89\uFA8A\uFA8B"+
-        "\uFA8C\uFA8D\uFA8E\uFA8F\uFA90\uFA91\uFA92\uFA93"+
-        "\uFA94\uFA95\uFA96\uFA97\uFA98\uFA99\uFA9A\uFA9B"+
-        "\uFA9C\uFA9D\uFA9E\uFA9F\uFAA0\uFAA1\uFAA2\uFAA3"+
-        "\uFAA4\uFAA5\uFAA6\uFAA7\uFAA8\uFAA9\uFAAA\uFAAB"+
-        "\uFAAC\uFAAD\uFAAE\uFAAF\uFAB0\uFAB1\uFAB2\uFAB3"+
-        "\uFAB4\uFAB5\uFAB6\uFAB7\uFAB8\uFAB9\uFABA\uFABB"+
-        "\uFABC\uFABD\uFABE\uFABF\uFAC0\uFAC1\uFAC2\uFAC3"+
-        "\uFAC4\uFAC5\uFAC6\uFAC7\uFAC8\uFAC9\uFACA\uFACB"+
-        "\uFACC\uFACD\uFACE\uFACF\uFAD0\uFAD1\uFAD2\uFAD3"+
-        "\uFAD4\uFAD5\uFAD6\uFAD7\uFAD8\uFAD9\uFADA\uFADB"+
-        "\uFADC\uFADD\uFADE\uFADF\uFAE0\uFAE1\uFAE2\uFAE3"+
-        "\uFAE4\uFAE5\uFAE6\uFAE7\uFAE8\uFAE9\uFAEA\uFAEB"+
-        "\uFAEC\uFAED\uFAEE\uFAEF\uFAF0\uFAF1\uFAF2\uFAF3"+
-        "\uFAF4\uFAF5\uFAF6\uFAF7\uFAF8\uFAF9\uFAFA\uFAFB"+
-        "\uFAFC\uFAFD\uFAFE\uFAFF\uFB00\uFB01\uFB02\uFB03"+
-        "\uFB04\uFB05\uFB06\uFB07\uFB08\uFB09\uFB0A\uFB0B"+
-        "\uFB0C\uFB0D\uFB0E\uFB0F\uFB10\uFB11\uFB12\uFB13"+
-        "\uFB14\uFB15\uFB16\uFB17\uFB18\uFB19\uFB1A\uFB1B"+
-        "\uFB1C\uFB1D\uFB1E\uFB1F\uFB20\uFB21\uFB22\uFB23"+
-        "\uFB24\uFB25\uFB26\uFB27\uFB28\uFB29\uFB2A\uFB2B"+
-        "\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31\uFB32\uFB33"+
-        "\uFB34\uFB35\uFB36\uFB37\uFB38\uFB39\uFB3A\uFB3B"+
-        "\uFB3C\uFB3D\uFB3E\uFB3F\uFB40\uFB41\uFB42\uFB43"+
-        "\uFB44\uFB45\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B"+
-        "\uFB4C\uFB4D\uFB4E\uFB4F\uFB50\uFB51\uFB52\uFB53"+
-        "\uFB54\uFB55\uFB56\uFB57\uFB58\uFB59\uFB5A\uFB5B"+
-        "\uFB5C\uFB5D\uFB5E\uFB5F\uFB60\uFB61\uFB62\uFB63"+
-        "\uFB64\uFB65\uFB66\uFB67\uFB68\uFB69\uFB6A\uFB6B";
-
-    private final static String innerDecoderIndex5=
-        "\uFB6C\uFB6D\uFB6E\uFB6F\uFB70\uFB71\uFB72\uFB73"+
-        "\uFB74\uFB75\uFB76\uFB77\uFB78\uFB79\uFB7A\uFB7B"+
-        "\uFB7C\uFB7D\uFB7E\uFB7F\uFB80\uFB81\uFB82\uFB83"+
-        "\uFB84\uFB85\uFB86\uFB87\uFB88\uFB89\uFB8A\uFB8B"+
-        "\uFB8C\uFB8D\uFB8E\uFB8F\uFB90\uFB91\uFB92\uFB93"+
-        "\uFB94\uFB95\uFB96\uFB97\uFB98\uFB99\uFB9A\uFB9B"+
-        "\uFB9C\uFB9D\uFB9E\uFB9F\uFBA0\uFBA1\uFBA2\uFBA3"+
-        "\uFBA4\uFBA5\uFBA6\uFBA7\uFBA8\uFBA9\uFBAA\uFBAB"+
-        "\uFBAC\uFBAD\uFBAE\uFBAF\uFBB0\uFBB1\uFBB2\uFBB3"+
-        "\uFBB4\uFBB5\uFBB6\uFBB7\uFBB8\uFBB9\uFBBA\uFBBB"+
-        "\uFBBC\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2\uFBC3"+
-        "\uFBC4\uFBC5\uFBC6\uFBC7\uFBC8\uFBC9\uFBCA\uFBCB"+
-        "\uFBCC\uFBCD\uFBCE\uFBCF\uFBD0\uFBD1\uFBD2\uFBD3"+
-        "\uFBD4\uFBD5\uFBD6\uFBD7\uFBD8\uFBD9\uFBDA\uFBDB"+
-        "\uFBDC\uFBDD\uFBDE\uFBDF\uFBE0\uFBE1\uFBE2\uFBE3"+
-        "\uFBE4\uFBE5\uFBE6\uFBE7\uFBE8\uFBE9\uFBEA\uFBEB"+
-        "\uFBEC\uFBED\uFBEE\uFBEF\uFBF0\uFBF1\uFBF2\uFBF3"+
-        "\uFBF4\uFBF5\uFBF6\uFBF7\uFBF8\uFBF9\uFBFA\uFBFB"+
-        "\uFBFC\uFBFD\uFBFE\uFBFF\uFC00\uFC01\uFC02\uFC03"+
-        "\uFC04\uFC05\uFC06\uFC07\uFC08\uFC09\uFC0A\uFC0B"+
-        "\uFC0C\uFC0D\uFC0E\uFC0F\uFC10\uFC11\uFC12\uFC13"+
-        "\uFC14\uFC15\uFC16\uFC17\uFC18\uFC19\uFC1A\uFC1B"+
-        "\uFC1C\uFC1D\uFC1E\uFC1F\uFC20\uFC21\uFC22\uFC23"+
-        "\uFC24\uFC25\uFC26\uFC27\uFC28\uFC29\uFC2A\uFC2B"+
-        "\uFC2C\uFC2D\uFC2E\uFC2F\uFC30\uFC31\uFC32\uFC33"+
-        "\uFC34\uFC35\uFC36\uFC37\uFC38\uFC39\uFC3A\uFC3B"+
-        "\uFC3C\uFC3D\uFC3E\uFC3F\uFC40\uFC41\uFC42\uFC43"+
-        "\uFC44\uFC45\uFC46\uFC47\uFC48\uFC49\uFC4A\uFC4B"+
-        "\uFC4C\uFC4D\uFC4E\uFC4F\uFC50\uFC51\uFC52\uFC53"+
-        "\uFC54\uFC55\uFC56\uFC57\uFC58\uFC59\uFC5A\uFC5B"+
-        "\uFC5C\uFC5D\uFC5E\uFC5F\uFC60\uFC61\uFC62\uFC63"+
-        "\uFC64\uFC65\uFC66\uFC67\uFC68\uFC69\uFC6A\uFC6B"+
-        "\uFC6C\uFC6D\uFC6E\uFC6F\uFC70\uFC71\uFC72\uFC73"+
-        "\uFC74\uFC75\uFC76\uFC77\uFC78\uFC79\uFC7A\uFC7B"+
-        "\uFC7C\uFC7D\uFC7E\uFC7F\uFC80\uFC81\uFC82\uFC83"+
-        "\uFC84\uFC85\uFC86\uFC87\uFC88\uFC89\uFC8A\uFC8B"+
-        "\uFC8C\uFC8D\uFC8E\uFC8F\uFC90\uFC91\uFC92\uFC93"+
-        "\uFC94\uFC95\uFC96\uFC97\uFC98\uFC99\uFC9A\uFC9B"+
-        "\uFC9C\uFC9D\uFC9E\uFC9F\uFCA0\uFCA1\uFCA2\uFCA3"+
-        "\uFCA4\uFCA5\uFCA6\uFCA7\uFCA8\uFCA9\uFCAA\uFCAB"+
-        "\uFCAC\uFCAD\uFCAE\uFCAF\uFCB0\uFCB1\uFCB2\uFCB3"+
-        "\uFCB4\uFCB5\uFCB6\uFCB7\uFCB8\uFCB9\uFCBA\uFCBB"+
-        "\uFCBC\uFCBD\uFCBE\uFCBF\uFCC0\uFCC1\uFCC2\uFCC3"+
-        "\uFCC4\uFCC5\uFCC6\uFCC7\uFCC8\uFCC9\uFCCA\uFCCB"+
-        "\uFCCC\uFCCD\uFCCE\uFCCF\uFCD0\uFCD1\uFCD2\uFCD3"+
-        "\uFCD4\uFCD5\uFCD6\uFCD7\uFCD8\uFCD9\uFCDA\uFCDB"+
-        "\uFCDC\uFCDD\uFCDE\uFCDF\uFCE0\uFCE1\uFCE2\uFCE3"+
-        "\uFCE4\uFCE5\uFCE6\uFCE7\uFCE8\uFCE9\uFCEA\uFCEB"+
-        "\uFCEC\uFCED\uFCEE\uFCEF\uFCF0\uFCF1\uFCF2\uFCF3"+
-        "\uFCF4\uFCF5\uFCF6\uFCF7\uFCF8\uFCF9\uFCFA\uFCFB"+
-        "\uFCFC\uFCFD\uFCFE\uFCFF\uFD00\uFD01\uFD02\uFD03"+
-        "\uFD04\uFD05\uFD06\uFD07\uFD08\uFD09\uFD0A\uFD0B"+
-        "\uFD0C\uFD0D\uFD0E\uFD0F\uFD10\uFD11\uFD12\uFD13"+
-        "\uFD14\uFD15\uFD16\uFD17\uFD18\uFD19\uFD1A\uFD1B"+
-        "\uFD1C\uFD1D\uFD1E\uFD1F\uFD20\uFD21\uFD22\uFD23"+
-        "\uFD24\uFD25\uFD26\uFD27\uFD28\uFD29\uFD2A\uFD2B"+
-        "\uFD2C\uFD2D\uFD2E\uFD2F\uFD30\uFD31\uFD32\uFD33"+
-        "\uFD34\uFD35\uFD36\uFD37\uFD38\uFD39\uFD3A\uFD3B"+
-        "\uFD3C\uFD3D\uFD3E\uFD3F\uFD40\uFD41\uFD42\uFD43"+
-        "\uFD44\uFD45\uFD46\uFD47\uFD48\uFD49\uFD4A\uFD4B"+
-        "\uFD4C\uFD4D\uFD4E\uFD4F\uFD50\uFD51\uFD52\uFD53"+
-        "\uFD54\uFD55\uFD56\uFD57\uFD58\uFD59\uFD5A\uFD5B"+
-        "\uFD5C\uFD5D\uFD5E\uFD5F\uFD60\uFD61\uFD62\uFD63"+
-        "\uFD64\uFD65\uFD66\uFD67\uFD68\uFD69\uFD6A\uFD6B"+
-        "\uFD6C\uFD6D\uFD6E\uFD6F\uFD70\uFD71\uFD72\uFD73"+
-        "\uFD74\uFD75\uFD76\uFD77\uFD78\uFD79\uFD7A\uFD7B"+
-        "\uFD7C\uFD7D\uFD7E\uFD7F\uFD80\uFD81\uFD82\uFD83"+
-        "\uFD84\uFD85\uFD86\uFD87\uFD88\uFD89\uFD8A\uFD8B"+
-        "\uFD8C\uFD8D\uFD8E\uFD8F\uFD90\uFD91\uFD92\uFD93"+
-        "\uFD94\uFD95\uFD96\uFD97\uFD98\uFD99\uFD9A\uFD9B"+
-        "\uFD9C\uFD9D\uFD9E\uFD9F\uFDA0\uFDA1\uFDA2\uFDA3"+
-        "\uFDA4\uFDA5\uFDA6\uFDA7\uFDA8\uFDA9\uFDAA\uFDAB"+
-        "\uFDAC\uFDAD\uFDAE\uFDAF\uFDB0\uFDB1\uFDB2\uFDB3"+
-        "\uFDB4\uFDB5\uFDB6\uFDB7\uFDB8\uFDB9\uFDBA\uFDBB"+
-        "\uFDBC\uFDBD\uFDBE\uFDBF\uFDC0\uFDC1\uFDC2\uFDC3"+
-        "\uFDC4\uFDC5\uFDC6\uFDC7\uFDC8\uFDC9\uFDCA\uFDCB"+
-        "\uFDCC\uFDCD\uFDCE\uFDCF\uFDD0\uFDD1\uFDD2\uFDD3"+
-        "\uFDD4\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA\uFDDB"+
-        "\uFDDC\uFDDD\uFDDE\uFDDF\uFDE0\uFDE1\uFDE2\uFDE3"+
-        "\uFDE4\uFDE5\uFDE6\uFDE7\uFDE8\uFDE9\uFDEA\uFDEB"+
-        "\uFDEC\uFDED\uFDEE\uFDEF\uFDF0\uFDF1\uFDF2\uFDF3"+
-        "\uFDF4\uFDF5\uFDF6\uFDF7\uFDF8\uFDF9\uFDFA\uFDFB"+
-        "\uFDFC\uFDFD\uFDFE\uFDFF\uFE00\uFE01\uFE02\uFE03"+
-        "\uFE04\uFE05\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B"+
-        "\uFE0C\uFE0D\uFE0E\uFE0F\uFE10\uFE11\uFE12\uFE13"+
-        "\uFE14\uFE15\uFE16\uFE17\uFE18\uFE19\uFE1A\uFE1B"+
-        "\uFE1C\uFE1D\uFE1E\uFE1F\uFE20\uFE21\uFE22\uFE23"+
-        "\uFE24\uFE25\uFE26\uFE27\uFE28\uFE29\uFE2A\uFE2B"+
-        "\uFE2C\uFE2D\uFE2E\uFE2F\uFE32\uFE45\uFE46\uFE47"+
-        "\uFE48\uFE53\uFE58\uFE67\uFE6C\uFE6D\uFE6E\uFE6F"+
-        "\uFE70\uFE71\uFE72\uFE73\uFE74\uFE75\uFE76\uFE77"+
-        "\uFE78\uFE79\uFE7A\uFE7B\uFE7C\uFE7D\uFE7E\uFE7F"+
-        "\uFE80\uFE81\uFE82\uFE83\uFE84\uFE85\uFE86\uFE87"+
-        "\uFE88\uFE89\uFE8A\uFE8B\uFE8C\uFE8D\uFE8E\uFE8F"+
-        "\uFE90\uFE91\uFE92\uFE93\uFE94\uFE95\uFE96\uFE97"+
-        "\uFE98\uFE99\uFE9A\uFE9B\uFE9C\uFE9D\uFE9E\uFE9F"+
-        "\uFEA0\uFEA1\uFEA2\uFEA3\uFEA4\uFEA5\uFEA6\uFEA7"+
-        "\uFEA8\uFEA9\uFEAA\uFEAB\uFEAC\uFEAD\uFEAE\uFEAF"+
-        "\uFEB0\uFEB1\uFEB2\uFEB3\uFEB4\uFEB5\uFEB6\uFEB7"+
-        "\uFEB8\uFEB9\uFEBA\uFEBB\uFEBC\uFEBD\uFEBE\uFEBF"+
-        "\uFEC0\uFEC1\uFEC2\uFEC3\uFEC4\uFEC5\uFEC6\uFEC7"+
-        "\uFEC8\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF"+
-        "\uFED0\uFED1\uFED2\uFED3\uFED4\uFED5\uFED6\uFED7"+
-        "\uFED8\uFED9\uFEDA\uFEDB\uFEDC\uFEDD\uFEDE\uFEDF"+
-        "\uFEE0\uFEE1\uFEE2\uFEE3\uFEE4\uFEE5\uFEE6\uFEE7"+
-        "\uFEE8\uFEE9\uFEEA\uFEEB\uFEEC\uFEED\uFEEE\uFEEF"+
-        "\uFEF0\uFEF1\uFEF2\uFEF3\uFEF4\uFEF5\uFEF6\uFEF7"+
-        "\uFEF8\uFEF9\uFEFA\uFEFB\uFEFC\uFEFD\uFEFE\uFEFF"+
-        "\uFF00\uFF5F\uFF60\uFF61\uFF62\uFF63\uFF64\uFF65"+
-        "\uFF66\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D"+
-        "\uFF6E\uFF6F\uFF70\uFF71\uFF72\uFF73\uFF74\uFF75"+
-        "\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D"+
-        "\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85"+
-        "\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D"+
-        "\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95"+
-        "\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF9D"+
-        "\uFF9E\uFF9F\uFFA0\uFFA1\uFFA2\uFFA3\uFFA4\uFFA5"+
-        "\uFFA6\uFFA7\uFFA8\uFFA9\uFFAA\uFFAB\uFFAC\uFFAD"+
-        "\uFFAE\uFFAF\uFFB0\uFFB1\uFFB2\uFFB3\uFFB4\uFFB5"+
-        "\uFFB6\uFFB7\uFFB8\uFFB9\uFFBA\uFFBB\uFFBC\uFFBD"+
-        "\uFFBE\uFFBF\uFFC0\uFFC1\uFFC2\uFFC3\uFFC4\uFFC5"+
-        "\uFFC6\uFFC7\uFFC8\uFFC9\uFFCA\uFFCB\uFFCC\uFFCD"+
-        "\uFFCE\uFFCF\uFFD0\uFFD1\uFFD2\uFFD3\uFFD4\uFFD5"+
-        "\uFFD6\uFFD7\uFFD8\uFFD9\uFFDA\uFFDB\uFFDC\uFFDD"+
-        "\uFFDE\uFFDF\uFFE6\uFFE7\uFFE8\uFFE9\uFFEA\uFFEB"+
-        "\uFFEC\uFFED\uFFEE\uFFEF\uFFF0\uFFF1\uFFF2\uFFF3"+
-        "\uFFF4\uFFF5\uFFF6\uFFF7\uFFF8\uFFF9\uFFFA\uFFFB"+
-        "\uFFFC\uFFFD\uFFFE\uFFFF\uFFFD\uFFFD\uFFFD\uFFFD";
-
-    private final static short decoderIndex1[] = {
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
-        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
-        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 77, 78, 79, 80, 81, 82, 83, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    static String decoderIndex2[] = {
-        innerDecoderIndex0,
-        innerDecoderIndex1,
-        innerDecoderIndex2,
-        innerDecoderIndex3,
-        innerDecoderIndex4,
-        innerDecoderIndex5
-    };
-
-/*
- *
- */
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4E02"+
-        "\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20"+
-        "\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33"+
-        "\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46"+
-        "\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63"+
-        "\u4E64\u4E65\u4E67\u4E68\u4E6A\u4E6B\u4E6C\u4E6D"+
-        "\u4E6E\u4E6F\u4E72\u4E74\u4E75\u4E76\u4E77\u4E78"+
-        "\u4E79\u4E7A\u4E7B\u4E7C\u4E7D\u4E7F\u4E80\u4E81"+
-        "\u4E82\u4E83\u4E84\u4E85\u4E87\u4E8A\uFFFD\u4E90"+
-        "\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA"+
-        "\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9"+
-        "\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2"+
-        "\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9"+
-        "\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA"+
-        "\u4EFC\u4EFE\u4F00\u4F02\u4F03\u4F04\u4F05\u4F06"+
-        "\u4F07\u4F08\u4F0B\u4F0C\u4F12\u4F13\u4F14\u4F15"+
-        "\u4F16\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C"+
-        "\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B"+
-        "\u4F3E\u4F3F\u4F40\u4F41\u4F42\u4F44\u4F45\u4F47"+
-        "\u4F48\u4F49\u4F4A\u4F4B\u4F4C\u4F52\u4F54\u4F56"+
-        "\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E"+
-        "\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D"+
-        "\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C"+
-        "\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99"+
-        "\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\u4FA4\u4FAB"+
-        "\u4FAD\u4FB0\u4FB1\u4FB2\u4FB3\u4FB4\u4FB6\u4FB7"+
-        "\u4FB8\u4FB9\u4FBA\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0"+
-        "\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC"+
-        "\u4FCD\u4FD2\u4FD3\u4FD4\u4FD5\u4FD6\u4FD9\u4FDB"+
-        "\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0"+
-        "\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC"+
-        "\u4FFD\u4FFF\u5000\u5001\u5002\u5003\u5004\u5005"+
-        "\u5006\u5007\u5008\u5009\u500A\uFFFD\u500B\u500E"+
-        "\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D"+
-        "\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F"+
-        "\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037"+
-        "\u5038\u5039\u503B\u503D\u503F\u5040\u5041\u5042"+
-        "\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050"+
-        "\u5051\u5052\u5053\u5054\u5056\u5057\u5058\u5059"+
-        "\u505B\u505D\u505E\u505F\u5060\u5061\u5062\u5063"+
-        "\u5064\u5066\u5067\u5068\u5069\u506A\u506B\u506D"+
-        "\u506E\u506F\u5070\u5071\u5072\u5073\u5074\u5075"+
-        "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083"+
-        "\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E"+
-        "\u508F\u5090\u5091\u5092\u5093\u5094\u5095\u5096"+
-        "\u5097\u5098\u5099\u509A\u509B\u509C\u509D\u509E"+
-        "\u509F\u50A0\u50A1\u50A2\u50A4\u50A6\u50AA\u50AB"+
-        "\u50AD\u50AE\u50AF\u50B0\u50B1\u50B3\u50B4\u50B5"+
-        "\u50B6\u50B7\u50B8\u50B9\u50BC\u50BD\u50BE\u50BF"+
-        "\u50C0\u50C1\u50C2\u50C3\u50C4\u50C5\u50C6\u50C7"+
-        "\u50C8\u50C9\u50CA\u50CB\u50CC\u50CD\u50CE\u50D0"+
-        "\u50D1\u50D2\u50D3\u50D4\u50D5\u50D7\u50D8\u50D9"+
-        "\u50DB\u50DC\u50DD\u50DE\u50DF\u50E0\u50E1\u50E2"+
-        "\u50E3\u50E4\u50E5\u50E8\u50E9\u50EA\u50EB\u50EF"+
-        "\u50F0\u50F1\u50F2\u50F4\u50F6\u50F7\u50F8\u50F9"+
-        "\u50FA\u50FC\u50FD\u50FE\u50FF\u5100\u5101\u5102"+
-        "\u5103\u5104\u5105\u5108\uFFFD\u5109\u510A\u510C"+
-        "\u510D\u510E\u510F\u5110\u5111\u5113\u5114\u5115"+
-        "\u5116\u5117\u5118\u5119\u511A\u511B\u511C\u511D"+
-        "\u511E\u511F\u5120\u5122\u5123\u5124\u5125\u5126"+
-        "\u5127\u5128\u5129\u512A\u512B\u512C\u512D\u512E"+
-        "\u512F\u5130\u5131\u5132\u5133\u5134\u5135\u5136"+
-        "\u5137\u5138\u5139\u513A\u513B\u513C\u513D\u513E"+
-        "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152"+
-        "\u5153\u5157\u5158\u5159\u515B\u515D\u515E\u515F"+
-        "\u5160\u5161\u5163\u5164\u5166\u5167\u5169\u516A"+
-        "\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186"+
-        "\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193"+
-        "\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3"+
-        "\u51A6\u51A7\u51A8\u51A9\u51AA\u51AD\u51AE\u51B4"+
-        "\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3"+
-        "\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\u51D3"+
-        "\u51D4\u51D5\u51D6\u51D7\u51D8\u51D9\u51DA\u51DC"+
-        "\u51DE\u51DF\u51E2\u51E3\u51E5\u51E6\u51E7\u51E8"+
-        "\u51E9\u51EA\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7"+
-        "\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210"+
-        "\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222"+
-        "\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231"+
-        "\u5232\u5234\u5235\u523C\u523E\u5244\u5245\u5246"+
-        "\u5247\u5248\u5249\u524B\u524E\u524F\u5252\u5253"+
-        "\u5255\u5257\u5258\uFFFD\u5259\u525A\u525B\u525D"+
-        "\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B"+
-        "\u526C\u526D\u526E\u5270\u5271\u5273\u5274\u5275"+
-        "\u5276\u5277\u5278\u5279\u527A\u527B\u527C\u527E"+
-        "\u5280\u5283\u5284\u5285\u5286\u5287\u5289\u528A"+
-        "\u528B\u528C\u528D\u528E\u528F\u5291\u5292\u5294"+
-        "\u5295\u5296\u5297\u5298\u5299\u529A\u529C\u52A4"+
-        "\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\u52B5"+
-        "\u52B6\u52B7\u52B8\u52B9\u52BA\u52BB\u52BC\u52BD"+
-        "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA"+
-        "\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5"+
-        "\u52D7\u52D9\u52DA\u52DB\u52DC\u52DD\u52DE\u52E0"+
-        "\u52E1\u52E2\u52E3\u52E5\u52E6\u52E7\u52E8\u52E9"+
-        "\u52EA\u52EB\u52EC\u52ED\u52EE\u52EF\u52F1\u52F2"+
-        "\u52F3\u52F4\u52F5\u52F6\u52F7\u52F8\u52FB\u52FC"+
-        "\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A"+
-        "\u530B\u530C\u530E\u5311\u5312\u5313\u5314\u5318"+
-        "\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327"+
-        "\u5328\u5329\u532B\u532C\u532D\u532F\u5330\u5331"+
-        "\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u533C"+
-        "\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D"+
-        "\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368"+
-        "\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C"+
-        "\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A"+
-        "\u538E\u538F\uFFFD\u5390\u5391\u5392\u5393\u5394"+
-        "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1"+
-        "\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\u53B0"+
-        "\u53B1\u53B2\u53B3\u53B4\u53B5\u53B7\u53B8\u53B9"+
-        "\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\u53C4\u53C5"+
-        "\u53C6\u53C7\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5"+
-        "\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4"+
-        "\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B"+
-        "\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425"+
-        "\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F"+
-        "\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D"+
-        "\u544E\u544F\u5451\u545A\u545D\u545E\u545F\u5460"+
-        "\u5461\u5463\u5465\u5467\u5469\u546A\u546B\u546C"+
-        "\u546D\u546E\u546F\u5470\u5474\u5479\u547A\u547E"+
-        "\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A"+
-        "\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F"+
-        "\u54A0\u54A1\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5"+
-        "\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5"+
-        "\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\u54E1\u54E2"+
-        "\u54E3\u54E4\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4"+
-        "\u54F5\u54F6\u54F7\u54F8\u54F9\u54FB\u54FE\u5500"+
-        "\u5502\u5503\u5504\u5505\u5508\u550A\u550B\u550C"+
-        "\u550D\u550E\u5512\u5513\u5515\u5516\u5517\u5518"+
-        "\u5519\u551A\u551C\u551D\u551E\u551F\u5521\u5525"+
-        "\u5526\uFFFD\u5528\u5529\u552B\u552D\u5532\u5534"+
-        "\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540"+
-        "\u5542\u5545\u5547\u5548\u554B\u554C\u554D\u554E"+
-        "\u554F\u5551\u5552\u5553\u5554\u5557\u5558\u5559"+
-        "\u555A\u555B\u555D\u555E\u555F\u5560\u5562\u5563"+
-        "\u5568\u5569\u556B\u556F\u5570\u5571\u5572\u5573"+
-        "\u5574\u5579\u557A\u557D\u557F\u5585\u5586\u558C"+
-        "\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597"+
-        "\u559A\u559B\u559E\u55A0\u55A1\u55A2\u55A3\u55A4"+
-        "\u55A5\u55A6\u55A8\u55A9\u55AA\u55AB\u55AC\u55AD"+
-        "\u55AE\u55AF\u55B0\u55B2\u55B4\u55B6\u55B8\u55BA"+
-        "\u55BC\u55BF\u55C0\u55C1\u55C2\u55C3\u55C6\u55C7"+
-        "\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7"+
-        "\u55D8\u55D9\u55DA\u55DB\u55DE\u55E0\u55E2\u55E7"+
-        "\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8"+
-        "\u55F9\u55FA\u55FB\u55FC\u55FF\u5602\u5603\u5604"+
-        "\u5605\u5606\u5607\u560A\u560B\u560D\u5610\u5611"+
-        "\u5612\u5613\u5614\u5615\u5616\u5617\u5619\u561A"+
-        "\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628"+
-        "\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635"+
-        "\u5637\u5638\u563A\u563C\u563D\u563E\u5640\u5641"+
-        "\u5642\u5643\u5644\u5645\u5646\u5647\u5648\u5649"+
-        "\u564A\u564B\u564F\u5650\u5651\u5652\u5653\u5655"+
-        "\u5656\u565A\u565B\u565D\u565E\u565F\u5660\u5661"+
-        "\uFFFD\u5663\u5665\u5666\u5667\u566D\u566E\u566F"+
-        "\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679"+
-        "\u567A\u567D\u567E\u567F\u5680\u5681\u5682\u5683"+
-        "\u5684\u5687\u5688\u5689\u568A\u568B\u568C\u568D"+
-        "\u5690\u5691\u5692\u5694\u5695\u5696\u5697\u5698"+
-        "\u5699\u569A\u569B\u569C\u569D\u569E\u569F\u56A0"+
-        "\u56A1\u56A2\u56A4\u56A5\u56A6\u56A7\u56A8\u56A9"+
-        "\u56AA\u56AB\u56AC\u56AD\u56AE\u56B0\u56B1\u56B2"+
-        "\u56B3\u56B4\u56B5\u56B6\u56B8\u56B9\u56BA\u56BB"+
-        "\u56BD\u56BE\u56BF\u56C0\u56C1\u56C2\u56C3\u56C4"+
-        "\u56C5\u56C6\u56C7\u56C8\u56C9\u56CB\u56CC\u56CD"+
-        "\u56CE\u56CF\u56D0\u56D1\u56D2\u56D3\u56D5\u56D6"+
-        "\u56D8\u56D9\u56DC\u56E3\u56E5\u56E6\u56E7\u56E8"+
-        "\u56E9\u56EA\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6"+
-        "\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705"+
-        "\u5707\u570B\u570C\u570D\u570E\u570F\u5710\u5711"+
-        "\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719"+
-        "\u571A\u571B\u571D\u571E\u5720\u5721\u5722\u5724"+
-        "\u5725\u5726\u5727\u572B\u5731\u5732\u5734\u5735"+
-        "\u5736\u5737\u5738\u573C\u573D\u573F\u5741\u5743"+
-        "\u5744\u5745\u5746\u5748\u5749\u574B\u5752\u5753"+
-        "\u5754\u5755\u5756\u5758\u5759\u5762\u5763\u5765"+
-        "\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775"+
-        "\u5778\u5779\u577A\u577D\u577E\u577F\u5780\uFFFD"+
-        "\u5781\u5787\u5788\u5789\u578A\u578D\u578E\u578F"+
-        "\u5790\u5791\u5794\u5795\u5796\u5797\u5798\u5799"+
-        "\u579A\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA"+
-        "\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7"+
-        "\u57B9\u57BA\u57BB\u57BC\u57BD\u57BE\u57BF\u57C0"+
-        "\u57C1\u57C4\u57C5\u57C6\u57C7\u57C8\u57C9\u57CA"+
-        "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB"+
-        "\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\u57E6\u57E7"+
-        "\u57E8\u57E9\u57EA\u57EB\u57EC\u57EE\u57F0\u57F1"+
-        "\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE"+
-        "\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A"+
-        "\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816"+
-        "\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822"+
-        "\u5823\u5825\u5826\u5827\u5828\u5829\u582B\u582C"+
-        "\u582D\u582E\u582F\u5831\u5832\u5833\u5834\u5836"+
-        "\u5837\u5838\u5839\u583A\u583B\u583C\u583D\u583E"+
-        "\u583F\u5840\u5841\u5842\u5843\u5845\u5846\u5847"+
-        "\u5848\u5849\u584A\u584B\u584E\u584F\u5850\u5852"+
-        "\u5853\u5855\u5856\u5857\u5859\u585A\u585B\u585C"+
-        "\u585D\u585F\u5860\u5861\u5862\u5863\u5864\u5866"+
-        "\u5867\u5868\u5869\u586A\u586D\u586E\u586F\u5870"+
-        "\u5871\u5872\u5873\u5874\u5875\u5876\u5877\u5878"+
-        "\u5879\u587A\u587B\u587C\u587D\u587F\u5882\u5884"+
-        "\u5886\u5887\u5888\u588A\u588B\u588C\uFFFD\u588D"+
-        "\u588E\u588F\u5890\u5891\u5894\u5895\u5896\u5897"+
-        "\u5898\u589B\u589C\u589D\u58A0\u58A1\u58A2\u58A3"+
-        "\u58A4\u58A5\u58A6\u58A7\u58AA\u58AB\u58AC\u58AD"+
-        "\u58AE\u58AF\u58B0\u58B1\u58B2\u58B3\u58B4\u58B5"+
-        "\u58B6\u58B7\u58B8\u58B9\u58BA\u58BB\u58BD\u58BE"+
-        "\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\u58C7\u58C8"+
-        "\u58C9\u58CA\u58CB\u58CC\u58CD\u58CE\u58CF\u58D0"+
-        "\u58D2\u58D3\u58D4\u58D6\u58D7\u58D8\u58D9\u58DA"+
-        "\u58DB\u58DC\u58DD\u58DE\u58DF\u58E0\u58E1\u58E2"+
-        "\u58E3\u58E5\u58E6\u58E7\u58E8\u58E9\u58EA\u58ED"+
-        "\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA"+
-        "\u58FB\u58FC\u58FD\u58FE\u58FF\u5900\u5901\u5903"+
-        "\u5905\u5906\u5908\u5909\u590A\u590B\u590C\u590E"+
-        "\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D"+
-        "\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C"+
-        "\u5930\u5932\u5933\u5935\u5936\u593B\u593D\u593E"+
-        "\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D"+
-        "\u5950\u5952\u5953\u5959\u595B\u595C\u595D\u595E"+
-        "\u595F\u5961\u5963\u5964\u5966\u5967\u5968\u5969"+
-        "\u596A\u596B\u596C\u596D\u596E\u596F\u5970\u5971"+
-        "\u5972\u5975\u5977\u597A\u597B\u597C\u597E\u597F"+
-        "\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990"+
-        "\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D"+
-        "\u599F\u59A0\u59A1\u59A2\u59A6\uFFFD\u59A7\u59AC"+
-        "\u59AD\u59B0\u59B1\u59B3\u59B4\u59B5\u59B6\u59B7"+
-        "\u59B8\u59BA\u59BC\u59BD\u59BF\u59C0\u59C1\u59C2"+
-        "\u59C3\u59C4\u59C5\u59C7\u59C8\u59C9\u59CC\u59CD"+
-        "\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\u59DF"+
-        "\u59E0\u59E1\u59E2\u59E4\u59E6\u59E7\u59E9\u59EA"+
-        "\u59EB\u59ED\u59EE\u59EF\u59F0\u59F1\u59F2\u59F3"+
-        "\u59F4\u59F5\u59F6\u59F7\u59F8\u59FA\u59FC\u59FD"+
-        "\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F"+
-        "\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A"+
-        "\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27"+
-        "\u5A28\u5A2A\u5A2B\u5A2C\u5A2D\u5A2E\u5A2F\u5A30"+
-        "\u5A33\u5A35\u5A37\u5A38\u5A39\u5A3A\u5A3B\u5A3D"+
-        "\u5A3E\u5A3F\u5A41\u5A42\u5A43\u5A44\u5A45\u5A47"+
-        "\u5A48\u5A4B\u5A4C\u5A4D\u5A4E\u5A4F\u5A50\u5A51"+
-        "\u5A52\u5A53\u5A54\u5A56\u5A57\u5A58\u5A59\u5A5B"+
-        "\u5A5C\u5A5D\u5A5E\u5A5F\u5A60\u5A61\u5A63\u5A64"+
-        "\u5A65\u5A66\u5A68\u5A69\u5A6B\u5A6C\u5A6D\u5A6E"+
-        "\u5A6F\u5A70\u5A71\u5A72\u5A73\u5A78\u5A79\u5A7B"+
-        "\u5A7C\u5A7D\u5A7E\u5A80\u5A81\u5A82\u5A83\u5A84"+
-        "\u5A85\u5A86\u5A87\u5A88\u5A89\u5A8A\u5A8B\u5A8C"+
-        "\u5A8D\u5A8E\u5A8F\u5A90\u5A91\u5A93\u5A94\u5A95"+
-        "\u5A96\u5A97\u5A98\u5A99\u5A9C\u5A9D\u5A9E\u5A9F"+
-        "\u5AA0\u5AA1\u5AA2\u5AA3\u5AA4\u5AA5\u5AA6\u5AA7"+
-        "\u5AA8\u5AA9\u5AAB\u5AAC\uFFFD\u5AAD\u5AAE\u5AAF"+
-        "\u5AB0\u5AB1\u5AB4\u5AB6\u5AB7\u5AB9\u5ABA\u5ABB"+
-        "\u5ABC\u5ABD\u5ABF\u5AC0\u5AC3\u5AC4\u5AC5\u5AC6"+
-        "\u5AC7\u5AC8\u5ACA\u5ACB\u5ACD\u5ACE\u5ACF\u5AD0"+
-        "\u5AD1\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD"+
-        "\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA"+
-        "\u5AEC\u5AED\u5AEE\u5AEF\u5AF0\u5AF2\u5AF3\u5AF4"+
-        "\u5AF5\u5AF6\u5AF7\u5AF8\u5AF9\u5AFA\u5AFB\u5AFC"+
-        "\u5AFD\u5AFE\u5AFF\u5B00\u5B01\u5B02\u5B03\u5B04"+
-        "\u5B05\u5B06\u5B07\u5B08\u5B0A\u5B0B\u5B0C\u5B0D"+
-        "\u5B0E\u5B0F\u5B10\u5B11\u5B12\u5B13\u5B14\u5B15"+
-        "\u5B18\u5B19\u5B1A\u5B1B\u5B1C\u5B1D\u5B1E\u5B1F"+
-        "\u5B20\u5B21\u5B22\u5B23\u5B24\u5B25\u5B26\u5B27"+
-        "\u5B28\u5B29\u5B2A\u5B2B\u5B2C\u5B2D\u5B2E\u5B2F"+
-        "\u5B30\u5B31\u5B33\u5B35\u5B36\u5B38\u5B39\u5B3A"+
-        "\u5B3B\u5B3C\u5B3D\u5B3E\u5B3F\u5B41\u5B42\u5B43"+
-        "\u5B44\u5B45\u5B46\u5B47\u5B48\u5B49\u5B4A\u5B4B"+
-        "\u5B4C\u5B4D\u5B4E\u5B4F\u5B52\u5B56\u5B5E\u5B60"+
-        "\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72"+
-        "\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E"+
-        "\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91"+
-        "\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC"+
-        "\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB"+
-        "\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB"+
-        "\u5BCD\u5BCE\u5BCF\uFFFD\u5BD1\u5BD4\u5BD5\u5BD6"+
-        "\u5BD7\u5BD8\u5BD9\u5BDA\u5BDB\u5BDC\u5BE0\u5BE2"+
-        "\u5BE3\u5BE6\u5BE7\u5BE9\u5BEA\u5BEB\u5BEC\u5BED"+
-        "\u5BEF\u5BF1\u5BF2\u5BF3\u5BF4\u5BF5\u5BF6\u5BF7"+
-        "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08"+
-        "\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17"+
-        "\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26"+
-        "\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30"+
-        "\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46"+
-        "\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57"+
-        "\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64"+
-        "\u5C67\u5C68\u5C69\u5C6A\u5C6B\u5C6C\u5C6D\u5C70"+
-        "\u5C72\u5C73\u5C74\u5C75\u5C76\u5C77\u5C78\u5C7B"+
-        "\u5C7C\u5C7D\u5C7E\u5C80\u5C83\u5C84\u5C85\u5C86"+
-        "\u5C87\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93"+
-        "\u5C95\u5C9D\u5C9E\u5C9F\u5CA0\u5CA1\u5CA4\u5CA5"+
-        "\u5CA6\u5CA7\u5CA8\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2"+
-        "\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0"+
-        "\u5CC2\u5CC3\u5CC5\u5CC6\u5CC7\u5CC8\u5CC9\u5CCA"+
-        "\u5CCC\u5CCD\u5CCE\u5CCF\u5CD0\u5CD1\u5CD3\u5CD4"+
-        "\u5CD5\u5CD6\u5CD7\u5CD8\u5CDA\u5CDB\u5CDC\u5CDD"+
-        "\u5CDE\u5CDF\u5CE0\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB"+
-        "\u5CEC\u5CEE\u5CEF\u5CF1\u5CF2\u5CF3\u5CF4\u5CF5"+
-        "\u5CF6\u5CF7\u5CF8\u5CF9\u5CFA\u5CFC\u5CFD\u5CFE"+
-        "\u5CFF\u5D00\uFFFD\u5D01\u5D04\u5D05\u5D08\u5D09"+
-        "\u5D0A\u5D0B\u5D0C\u5D0D\u5D0F\u5D10\u5D11\u5D12"+
-        "\u5D13\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D"+
-        "\u5D1F\u5D20\u5D21\u5D22\u5D23\u5D25\u5D28\u5D2A"+
-        "\u5D2B\u5D2C\u5D2F\u5D30\u5D31\u5D32\u5D33\u5D35"+
-        "\u5D36\u5D37\u5D38\u5D39\u5D3A\u5D3B\u5D3C\u5D3F"+
-        "\u5D40\u5D41\u5D42\u5D43\u5D44\u5D45\u5D46\u5D48"+
-        "\u5D49\u5D4D\u5D4E\u5D4F\u5D50\u5D51\u5D52\u5D53"+
-        "\u5D54\u5D55\u5D56\u5D57\u5D59\u5D5A\u5D5C\u5D5E"+
-        "\u5D5F\u5D60\u5D61\u5D62\u5D63\u5D64\u5D65\u5D66"+
-        "\u5D67\u5D68\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72"+
-        "\u5D73\u5D75\u5D76\u5D77\u5D78\u5D79\u5D7A\u5D7B"+
-        "\u5D7C\u5D7D\u5D7E\u5D7F\u5D80\u5D81\u5D83\u5D84"+
-        "\u5D85\u5D86\u5D87\u5D88\u5D89\u5D8A\u5D8B\u5D8C"+
-        "\u5D8D\u5D8E\u5D8F\u5D90\u5D91\u5D92\u5D93\u5D94"+
-        "\u5D95\u5D96\u5D97\u5D98\u5D9A\u5D9B\u5D9C\u5D9E"+
-        "\u5D9F\u5DA0\u5DA1\u5DA2\u5DA3\u5DA4\u5DA5\u5DA6"+
-        "\u5DA7\u5DA8\u5DA9\u5DAA\u5DAB\u5DAC\u5DAD\u5DAE"+
-        "\u5DAF\u5DB0\u5DB1\u5DB2\u5DB3\u5DB4\u5DB5\u5DB6"+
-        "\u5DB8\u5DB9\u5DBA\u5DBB\u5DBC\u5DBD\u5DBE\u5DBF"+
-        "\u5DC0\u5DC1\u5DC2\u5DC3\u5DC4\u5DC6\u5DC7\u5DC8"+
-        "\u5DC9\u5DCA\u5DCB\u5DCC\u5DCE\u5DCF\u5DD0\u5DD1"+
-        "\u5DD2\u5DD3\u5DD4\u5DD5\u5DD6\u5DD7\u5DD8\u5DD9"+
-        "\u5DDA\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC"+
-        "\u5DED\uFFFD\u5DF0\u5DF5\u5DF6\u5DF8\u5DF9\u5DFA"+
-        "\u5DFB\u5DFC\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A"+
-        "\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\u5E1F"+
-        "\u5E20\u5E21\u5E22\u5E23\u5E24\u5E25\u5E28\u5E29"+
-        "\u5E2A\u5E2B\u5E2C\u5E2F\u5E30\u5E32\u5E33\u5E34"+
-        "\u5E35\u5E36\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41"+
-        "\u5E43\u5E46\u5E47\u5E48\u5E49\u5E4A\u5E4B\u5E4D"+
-        "\u5E4E\u5E4F\u5E50\u5E51\u5E52\u5E53\u5E56\u5E57"+
-        "\u5E58\u5E59\u5E5A\u5E5C\u5E5D\u5E5F\u5E60\u5E63"+
-        "\u5E64\u5E65\u5E66\u5E67\u5E68\u5E69\u5E6A\u5E6B"+
-        "\u5E6C\u5E6D\u5E6E\u5E6F\u5E70\u5E71\u5E75\u5E77"+
-        "\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89"+
-        "\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1"+
-        "\u5EA2\u5EA3\u5EA4\u5EA8\u5EA9\u5EAA\u5EAB\u5EAC"+
-        "\u5EAE\u5EAF\u5EB0\u5EB1\u5EB2\u5EB4\u5EBA\u5EBB"+
-        "\u5EBC\u5EBD\u5EBF\u5EC0\u5EC1\u5EC2\u5EC3\u5EC4"+
-        "\u5EC5\u5EC6\u5EC7\u5EC8\u5ECB\u5ECC\u5ECD\u5ECE"+
-        "\u5ECF\u5ED0\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA"+
-        "\u5EDC\u5EDD\u5EDE\u5EDF\u5EE0\u5EE1\u5EE2\u5EE3"+
-        "\u5EE4\u5EE5\u5EE6\u5EE7\u5EE9\u5EEB\u5EEC\u5EED"+
-        "\u5EEE\u5EEF\u5EF0\u5EF1\u5EF2\u5EF3\u5EF5\u5EF8"+
-        "\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09"+
-        "\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19"+
-        "\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"+
-        "\uFFFD\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\u5F33"+
-        "\u5F34\u5F35\u5F36\u5F37\u5F38\u5F3B\u5F3D\u5F3E"+
-        "\u5F3F\u5F41\u5F42\u5F43\u5F44\u5F45\u5F46\u5F47"+
-        "\u5F48\u5F49\u5F4A\u5F4B\u5F4C\u5F4D\u5F4E\u5F4F"+
-        "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F"+
-        "\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F"+
-        "\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E"+
-        "\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93"+
-        "\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0"+
-        "\u5FA2\u5FA3\u5FA4\u5FA5\u5FA6\u5FA7\u5FA9\u5FAB"+
-        "\u5FAC\u5FAF\u5FB0\u5FB1\u5FB2\u5FB3\u5FB4\u5FB6"+
-        "\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\u5FBF\u5FC0\u5FC1"+
-        "\u5FC2\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4"+
-        "\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3"+
-        "\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2"+
-        "\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007";
-
-    private final static String innerIndex1=
-        "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017"+
-        "\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C"+
-        "\u602D\u602E\u6030\u6031\u6032\u6033\u6034\u6036"+
-        "\u6037\u6038\u6039\u603A\u603D\u603E\u6040\u6044"+
-        "\u6045\u6046\u6047\u6048\u6049\u604A\u604C\u604E"+
-        "\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B"+
-        "\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E"+
-        "\u6071\u6072\u6074\u6075\u6077\u607E\u6080\uFFFD"+
-        "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B"+
-        "\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098"+
-        "\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7"+
-        "\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7"+
-        "\u60B9\u60BA\u60BD\u60BE\u60BF\u60C0\u60C1\u60C2"+
-        "\u60C3\u60C4\u60C7\u60C8\u60C9\u60CC\u60CD\u60CE"+
-        "\u60CF\u60D0\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9"+
-        "\u60DB\u60DE\u60E1\u60E2\u60E3\u60E4\u60E5\u60EA"+
-        "\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\u60FC\u60FD"+
-        "\u60FE\u60FF\u6102\u6103\u6104\u6105\u6107\u610A"+
-        "\u610B\u610C\u6110\u6111\u6112\u6113\u6114\u6116"+
-        "\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121"+
-        "\u6122\u6125\u6128\u6129\u612A\u612C\u612D\u612E"+
-        "\u612F\u6130\u6131\u6132\u6133\u6134\u6135\u6136"+
-        "\u6137\u6138\u6139\u613A\u613B\u613C\u613D\u613E"+
-        "\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147"+
-        "\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154"+
-        "\u6156\u6157\u6158\u6159\u615A\u615B\u615C\u615E"+
-        "\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169"+
-        "\u616A\u616B\u616C\u616D\u616E\u616F\u6171\u6172"+
-        "\u6173\u6174\u6176\u6178\u6179\u617A\u617B\u617C"+
-        "\u617D\u617E\u617F\u6180\u6181\u6182\u6183\u6184"+
-        "\u6185\u6186\u6187\u6188\u6189\u618A\u618C\u618D"+
-        "\u618F\u6190\u6191\u6192\u6193\u6195\uFFFD\u6196"+
-        "\u6197\u6198\u6199\u619A\u619B\u619C\u619E\u619F"+
-        "\u61A0\u61A1\u61A2\u61A3\u61A4\u61A5\u61A6\u61AA"+
-        "\u61AB\u61AD\u61AE\u61AF\u61B0\u61B1\u61B2\u61B3"+
-        "\u61B4\u61B5\u61B6\u61B8\u61B9\u61BA\u61BB\u61BC"+
-        "\u61BD\u61BF\u61C0\u61C1\u61C3\u61C4\u61C5\u61C6"+
-        "\u61C7\u61C9\u61CC\u61CD\u61CE\u61CF\u61D0\u61D3"+
-        "\u61D5\u61D6\u61D7\u61D8\u61D9\u61DA\u61DB\u61DC"+
-        "\u61DD\u61DE\u61DF\u61E0\u61E1\u61E2\u61E3\u61E4"+
-        "\u61E5\u61E7\u61E8\u61E9\u61EA\u61EB\u61EC\u61ED"+
-        "\u61EE\u61EF\u61F0\u61F1\u61F2\u61F3\u61F4\u61F6"+
-        "\u61F7\u61F8\u61F9\u61FA\u61FB\u61FC\u61FD\u61FE"+
-        "\u6200\u6201\u6202\u6203\u6204\u6205\u6207\u6209"+
-        "\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223"+
-        "\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230"+
-        "\u6231\u6232\u6235\u6236\u6238\u6239\u623A\u623B"+
-        "\u623C\u6242\u6244\u6245\u6246\u624A\u624F\u6250"+
-        "\u6255\u6256\u6257\u6259\u625A\u625C\u625D\u625E"+
-        "\u625F\u6260\u6261\u6262\u6264\u6265\u6268\u6271"+
-        "\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D"+
-        "\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B"+
-        "\u628C\u628D\u628E\u628F\u6290\u6294\u6299\u629C"+
-        "\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD"+
-        "\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7"+
-        "\u62B8\u62BA\u62BE\u62C0\u62C1\uFFFD\u62C3\u62CB"+
-        "\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4"+
-        "\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA"+
-        "\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B"+
-        "\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315"+
-        "\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C"+
-        "\u632D\u632E\u6330\u6331\u6333\u6334\u6335\u6336"+
-        "\u6337\u6338\u633B\u633C\u633E\u633F\u6340\u6341"+
-        "\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354"+
-        "\u6356\u6357\u6358\u6359\u635A\u635B\u635C\u635D"+
-        "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C"+
-        "\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379"+
-        "\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385"+
-        "\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397"+
-        "\u6399\u639A\u639B\u639C\u639D\u639E\u639F\u63A1"+
-        "\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6"+
-        "\u63B9\u63BB\u63BD\u63BF\u63C0\u63C1\u63C2\u63C3"+
-        "\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3"+
-        "\u63D4\u63D5\u63D7\u63D8\u63D9\u63DA\u63DB\u63DC"+
-        "\u63DD\u63DF\u63E2\u63E4\u63E5\u63E6\u63E7\u63E8"+
-        "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5"+
-        "\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404"+
-        "\u6406\u6407\u6408\u6409\u640A\u640D\u640E\u6411"+
-        "\u6412\u6415\u6416\u6417\u6418\u6419\u641A\u641D"+
-        "\u641F\u6422\u6423\u6424\uFFFD\u6425\u6427\u6428"+
-        "\u6429\u642B\u642E\u642F\u6430\u6431\u6432\u6433"+
-        "\u6435\u6436\u6437\u6438\u6439\u643B\u643C\u643E"+
-        "\u6440\u6442\u6443\u6449\u644B\u644C\u644D\u644E"+
-        "\u644F\u6450\u6451\u6453\u6455\u6456\u6457\u6459"+
-        "\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6462"+
-        "\u6463\u6464\u6465\u6466\u6468\u646A\u646B\u646C"+
-        "\u646E\u646F\u6470\u6471\u6472\u6473\u6474\u6475"+
-        "\u6476\u6477\u647B\u647C\u647D\u647E\u647F\u6480"+
-        "\u6481\u6483\u6486\u6488\u6489\u648A\u648B\u648C"+
-        "\u648D\u648E\u648F\u6490\u6493\u6494\u6497\u6498"+
-        "\u649A\u649B\u649C\u649D\u649F\u64A0\u64A1\u64A2"+
-        "\u64A3\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF"+
-        "\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD"+
-        "\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\u64C7\u64C8"+
-        "\u64C9\u64CA\u64CB\u64CC\u64CF\u64D1\u64D3\u64D4"+
-        "\u64D5\u64D6\u64D9\u64DA\u64DB\u64DC\u64DD\u64DF"+
-        "\u64E0\u64E1\u64E3\u64E5\u64E7\u64E8\u64E9\u64EA"+
-        "\u64EB\u64EC\u64ED\u64EE\u64EF\u64F0\u64F1\u64F2"+
-        "\u64F3\u64F4\u64F5\u64F6\u64F7\u64F8\u64F9\u64FA"+
-        "\u64FB\u64FC\u64FD\u64FE\u64FF\u6501\u6502\u6503"+
-        "\u6504\u6505\u6506\u6507\u6508\u650A\u650B\u650C"+
-        "\u650D\u650E\u650F\u6510\u6511\u6513\u6514\u6515"+
-        "\u6516\u6517\u6519\u651A\u651B\u651C\u651D\u651E"+
-        "\u651F\u6520\u6521\uFFFD\u6522\u6523\u6524\u6526"+
-        "\u6527\u6528\u6529\u652A\u652C\u652D\u6530\u6531"+
-        "\u6532\u6533\u6537\u653A\u653C\u653D\u6540\u6541"+
-        "\u6542\u6543\u6544\u6546\u6547\u654A\u654B\u654D"+
-        "\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A"+
-        "\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568"+
-        "\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575"+
-        "\u6576\u6578\u6579\u657A\u657B\u657C\u657D\u657E"+
-        "\u657F\u6580\u6581\u6582\u6583\u6584\u6585\u6586"+
-        "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594"+
-        "\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2"+
-        "\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\u65B2"+
-        "\u65B3\u65B4\u65B5\u65B6\u65B7\u65B8\u65BA\u65BB"+
-        "\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA"+
-        "\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\u65D9"+
-        "\u65DA\u65DB\u65DC\u65DD\u65DE\u65DF\u65E1\u65E3"+
-        "\u65E4\u65EA\u65EB\u65F2\u65F3\u65F4\u65F5\u65F8"+
-        "\u65F9\u65FB\u65FC\u65FD\u65FE\u65FF\u6601\u6604"+
-        "\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611"+
-        "\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E"+
-        "\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B"+
-        "\u662C\u662E\u6630\u6632\u6633\u6637\u6638\u6639"+
-        "\u663A\u663B\u663D\u663F\u6640\u6642\u6644\u6645"+
-        "\u6646\u6647\u6648\u6649\u664A\u664D\u664E\u6650"+
-        "\u6651\u6658\uFFFD\u6659\u665B\u665C\u665D\u665E"+
-        "\u6660\u6662\u6663\u6665\u6667\u6669\u666A\u666B"+
-        "\u666C\u666D\u6671\u6672\u6673\u6675\u6678\u6679"+
-        "\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685"+
-        "\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F"+
-        "\u6690\u6692\u6693\u6694\u6695\u6698\u6699\u669A"+
-        "\u669B\u669C\u669E\u669F\u66A0\u66A1\u66A2\u66A3"+
-        "\u66A4\u66A5\u66A6\u66A9\u66AA\u66AB\u66AC\u66AD"+
-        "\u66AF\u66B0\u66B1\u66B2\u66B3\u66B5\u66B6\u66B7"+
-        "\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\u66C0\u66C1"+
-        "\u66C2\u66C3\u66C4\u66C5\u66C6\u66C7\u66C8\u66C9"+
-        "\u66CA\u66CB\u66CC\u66CD\u66CE\u66CF\u66D0\u66D1"+
-        "\u66D2\u66D3\u66D4\u66D5\u66D6\u66D7\u66D8\u66DA"+
-        "\u66DE\u66DF\u66E0\u66E1\u66E2\u66E3\u66E4\u66E5"+
-        "\u66E7\u66E8\u66EA\u66EB\u66EC\u66ED\u66EE\u66EF"+
-        "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701"+
-        "\u6702\u6703\u6704\u6705\u6706\u6707\u670C\u670E"+
-        "\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A"+
-        "\u671C\u671E\u6720\u6721\u6722\u6723\u6724\u6725"+
-        "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737"+
-        "\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744"+
-        "\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755"+
-        "\u6757\u6758\u6759\u675A\u675B\u675D\u6762\u6763"+
-        "\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774"+
-        "\u6776\uFFFD\u6778\u6779\u677A\u677B\u677D\u6780"+
-        "\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D"+
-        "\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799"+
-        "\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC"+
-        "\u67AE\u67B1\u67B2\u67B4\u67B9\u67BA\u67BB\u67BC"+
-        "\u67BD\u67BE\u67BF\u67C0\u67C2\u67C5\u67C6\u67C7"+
-        "\u67C8\u67C9\u67CA\u67CB\u67CC\u67CD\u67CE\u67D5"+
-        "\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6"+
-        "\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5"+
-        "\u67F6\u67F7\u67F8\u67F9\u67FA\u67FB\u67FC\u67FE"+
-        "\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812"+
-        "\u6814\u6815\u6818\u6819\u681A\u681B\u681C\u681E"+
-        "\u681F\u6820\u6822\u6823\u6824\u6825\u6826\u6827"+
-        "\u6828\u682B\u682C\u682D\u682E\u682F\u6830\u6831"+
-        "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B"+
-        "\u684D\u684F\u6852\u6856\u6857\u6858\u6859\u685A"+
-        "\u685B\u685C\u685D\u685E\u685F\u686A\u686C\u686D"+
-        "\u686E\u686F\u6870\u6871\u6872\u6873\u6875\u6878"+
-        "\u6879\u687A\u687B\u687C\u687D\u687E\u687F\u6880"+
-        "\u6882\u6884\u6887\u6888\u6889\u688A\u688B\u688C"+
-        "\u688D\u688E\u6890\u6891\u6892\u6894\u6895\u6896"+
-        "\u6898\u6899\u689A\u689B\u689C\u689D\u689E\u689F"+
-        "\u68A0\u68A1\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB"+
-        "\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"+
-        "\uFFFD\u68B9\u68BA\u68BB\u68BC\u68BD\u68BE\u68BF"+
-        "\u68C1\u68C3\u68C4\u68C5\u68C6\u68C7\u68C8\u68CA"+
-        "\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6"+
-        "\u68D7\u68D9\u68DB\u68DC\u68DD\u68DE\u68DF\u68E1"+
-        "\u68E2\u68E4\u68E5\u68E6\u68E7\u68E8\u68E9\u68EA"+
-        "\u68EB\u68EC\u68ED\u68EF\u68F2\u68F3\u68F4\u68F6"+
-        "\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902"+
-        "\u6903\u6904\u6906\u6907\u6908\u6909\u690A\u690C"+
-        "\u690F\u6911\u6913\u6914\u6915\u6916\u6917\u6918"+
-        "\u6919\u691A\u691B\u691C\u691D\u691E\u6921\u6922"+
-        "\u6923\u6925\u6926\u6927\u6928\u6929\u692A\u692B"+
-        "\u692C\u692E\u692F\u6931\u6932\u6933\u6935\u6936"+
-        "\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941"+
-        "\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694A"+
-        "\u694B\u694C\u694D\u694E\u694F\u6950\u6951\u6952"+
-        "\u6953\u6955\u6956\u6958\u6959\u695B\u695C\u695F"+
-        "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A"+
-        "\u696C\u696D\u696F\u6970\u6972\u6973\u6974\u6975"+
-        "\u6976\u697A\u697B\u697D\u697E\u697F\u6981\u6983"+
-        "\u6985\u698A\u698B\u698C\u698E\u698F\u6990\u6991"+
-        "\u6992\u6993\u6996\u6997\u6999\u699A\u699D\u699E"+
-        "\u699F\u69A0\u69A1\u69A2\u69A3\u69A4\u69A5\u69A6"+
-        "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3"+
-        "\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\uFFFD"+
-        "\u69BE\u69BF\u69C0\u69C2\u69C3\u69C4\u69C5\u69C6"+
-        "\u69C7\u69C8\u69C9\u69CB\u69CD\u69CF\u69D1\u69D2"+
-        "\u69D3\u69D5\u69D6\u69D7\u69D8\u69D9\u69DA\u69DC"+
-        "\u69DD\u69DE\u69E1\u69E2\u69E3\u69E4\u69E5\u69E6"+
-        "\u69E7\u69E8\u69E9\u69EA\u69EB\u69EC\u69EE\u69EF"+
-        "\u69F0\u69F1\u69F3\u69F4\u69F5\u69F6\u69F7\u69F8"+
-        "\u69F9\u69FA\u69FB\u69FC\u69FE\u6A00\u6A01\u6A02"+
-        "\u6A03\u6A04\u6A05\u6A06\u6A07\u6A08\u6A09\u6A0B"+
-        "\u6A0C\u6A0D\u6A0E\u6A0F\u6A10\u6A11\u6A12\u6A13"+
-        "\u6A14\u6A15\u6A16\u6A19\u6A1A\u6A1B\u6A1C\u6A1D"+
-        "\u6A1E\u6A20\u6A22\u6A23\u6A24\u6A25\u6A26\u6A27"+
-        "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33"+
-        "\u6A34\u6A36\u6A37\u6A38\u6A39\u6A3A\u6A3B\u6A3C"+
-        "\u6A3F\u6A40\u6A41\u6A42\u6A43\u6A45\u6A46\u6A48"+
-        "\u6A49\u6A4A\u6A4B\u6A4C\u6A4D\u6A4E\u6A4F\u6A51"+
-        "\u6A52\u6A53\u6A54\u6A55\u6A56\u6A57\u6A5A\u6A5C"+
-        "\u6A5D\u6A5E\u6A5F\u6A60\u6A62\u6A63\u6A64\u6A66"+
-        "\u6A67\u6A68\u6A69\u6A6A\u6A6B\u6A6C\u6A6D\u6A6E"+
-        "\u6A6F\u6A70\u6A72\u6A73\u6A74\u6A75\u6A76\u6A77"+
-        "\u6A78\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82"+
-        "\u6A83\u6A85\u6A86\u6A87\u6A88\u6A89\u6A8A\u6A8B"+
-        "\u6A8C\u6A8D\u6A8F\u6A92\u6A93\u6A94\u6A95\u6A96"+
-        "\u6A98\u6A99\u6A9A\u6A9B\u6A9C\u6A9D\u6A9E\u6A9F"+
-        "\u6AA1\u6AA2\u6AA3\u6AA4\u6AA5\u6AA6\uFFFD\u6AA7"+
-        "\u6AA8\u6AAA\u6AAD\u6AAE\u6AAF\u6AB0\u6AB1\u6AB2"+
-        "\u6AB3\u6AB4\u6AB5\u6AB6\u6AB7\u6AB8\u6AB9\u6ABA"+
-        "\u6ABB\u6ABC\u6ABD\u6ABE\u6ABF\u6AC0\u6AC1\u6AC2"+
-        "\u6AC3\u6AC4\u6AC5\u6AC6\u6AC7\u6AC8\u6AC9\u6ACA"+
-        "\u6ACB\u6ACC\u6ACD\u6ACE\u6ACF\u6AD0\u6AD1\u6AD2"+
-        "\u6AD3\u6AD4\u6AD5\u6AD6\u6AD7\u6AD8\u6AD9\u6ADA"+
-        "\u6ADB\u6ADC\u6ADD\u6ADE\u6ADF\u6AE0\u6AE1\u6AE2"+
-        "\u6AE3\u6AE4\u6AE5\u6AE6\u6AE7\u6AE8\u6AE9\u6AEA"+
-        "\u6AEB\u6AEC\u6AED\u6AEE\u6AEF\u6AF0\u6AF1\u6AF2"+
-        "\u6AF3\u6AF4\u6AF5\u6AF6\u6AF7\u6AF8\u6AF9\u6AFA"+
-        "\u6AFB\u6AFC\u6AFD\u6AFE\u6AFF\u6B00\u6B01\u6B02"+
-        "\u6B03\u6B04\u6B05\u6B06\u6B07\u6B08\u6B09\u6B0A"+
-        "\u6B0B\u6B0C\u6B0D\u6B0E\u6B0F\u6B10\u6B11\u6B12"+
-        "\u6B13\u6B14\u6B15\u6B16\u6B17\u6B18\u6B19\u6B1A"+
-        "\u6B1B\u6B1C\u6B1D\u6B1E\u6B1F\u6B25\u6B26\u6B28"+
-        "\u6B29\u6B2A\u6B2B\u6B2C\u6B2D\u6B2E\u6B2F\u6B30"+
-        "\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C"+
-        "\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48"+
-        "\u6B4A\u6B4B\u6B4D\u6B4E\u6B4F\u6B50\u6B51\u6B52"+
-        "\u6B53\u6B54\u6B55\u6B56\u6B57\u6B58\u6B5A\u6B5B"+
-        "\u6B5C\u6B5D\u6B5E\u6B5F\u6B60\u6B61\u6B68\u6B69"+
-        "\u6B6B\u6B6C\u6B6D\u6B6E\u6B6F\u6B70\u6B71\u6B72"+
-        "\u6B73\u6B74\u6B75\u6B76\u6B77\u6B78\u6B7A\u6B7D"+
-        "\u6B7E\u6B7F\u6B80\u6B85\u6B88\uFFFD\u6B8C\u6B8E"+
-        "\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99"+
-        "\u6B9C\u6B9D\u6B9E\u6B9F\u6BA0\u6BA2\u6BA3\u6BA4"+
-        "\u6BA5\u6BA6\u6BA7\u6BA8\u6BA9\u6BAB\u6BAC\u6BAD"+
-        "\u6BAE\u6BAF\u6BB0\u6BB1\u6BB2\u6BB6\u6BB8\u6BB9"+
-        "\u6BBA\u6BBB\u6BBC\u6BBD\u6BBE\u6BC0\u6BC3\u6BC4"+
-        "\u6BC6\u6BC7\u6BC8\u6BC9\u6BCA\u6BCC\u6BCE\u6BD0"+
-        "\u6BD1\u6BD8\u6BDA\u6BDC\u6BDD\u6BDE\u6BDF\u6BE0"+
-        "\u6BE2\u6BE3\u6BE4\u6BE5\u6BE6\u6BE7\u6BE8\u6BE9"+
-        "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6"+
-        "\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\u6BFF\u6C00"+
-        "\u6C01\u6C02\u6C03\u6C04\u6C08\u6C09\u6C0A\u6C0B"+
-        "\u6C0C\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20"+
-        "\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36"+
-        "\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43"+
-        "\u6C44\u6C45\u6C48\u6C4B\u6C4C\u6C4D\u6C4E\u6C4F"+
-        "\u6C51\u6C52\u6C53\u6C56\u6C58\u6C59\u6C5A\u6C62"+
-        "\u6C63\u6C65\u6C66\u6C67\u6C6B\u6C6C\u6C6D\u6C6E"+
-        "\u6C6F\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B"+
-        "\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D"+
-        "\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A"+
-        "\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF"+
-        "\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1"+
-        "\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE"+
-        "\u6CCF\u6CD1\u6CD2\u6CD8\uFFFD\u6CD9\u6CDA\u6CDC"+
-        "\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED"+
-        "\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05"+
-        "\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11"+
-        "\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F"+
-        "\u6D20\u6D21\u6D22\u6D23\u6D24\u6D26\u6D28\u6D29"+
-        "\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38"+
-        "\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50"+
-        "\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61"+
-        "\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D"+
-        "\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A"+
-        "\u6D7B\u6D7D\u6D7E\u6D7F\u6D80\u6D81\u6D83\u6D84"+
-        "\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92"+
-        "\u6D96\u6D97\u6D98\u6D99\u6D9A\u6D9C\u6DA2\u6DA5"+
-        "\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7"+
-        "\u6DB9\u6DBA\u6DBB\u6DBC\u6DBD\u6DBE\u6DC1\u6DC2"+
-        "\u6DC3\u6DC8\u6DC9\u6DCA\u6DCD\u6DCE\u6DCF\u6DD0"+
-        "\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC"+
-        "\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA"+
-        "\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8"+
-        "\u6DFA\u6DFD\u6DFE\u6DFF\u6E00\u6E01\u6E02\u6E03"+
-        "\u6E04\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12"+
-        "\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F"+
-        "\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30"+
-        "\u6E31\u6E33\u6E35\uFFFD\u6E36\u6E37\u6E39\u6E3B"+
-        "\u6E3C\u6E3D\u6E3E\u6E3F\u6E40\u6E41\u6E42\u6E45"+
-        "\u6E46\u6E47\u6E48\u6E49\u6E4A\u6E4B\u6E4C\u6E4F"+
-        "\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C"+
-        "\u6E5D\u6E5E\u6E60\u6E61\u6E62\u6E63\u6E64\u6E65"+
-        "\u6E66\u6E67\u6E68\u6E69\u6E6A\u6E6C\u6E6D\u6E6F"+
-        "\u6E70\u6E71\u6E72\u6E73\u6E74\u6E75\u6E76\u6E77"+
-        "\u6E78\u6E79\u6E7A\u6E7B\u6E7C\u6E7D\u6E80\u6E81"+
-        "\u6E82\u6E84\u6E87\u6E88\u6E8A\u6E8B\u6E8C\u6E8D"+
-        "\u6E8E\u6E91\u6E92\u6E93\u6E94\u6E95\u6E96\u6E97"+
-        "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3"+
-        "\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE"+
-        "\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF"+
-        "\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA"+
-        "\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9"+
-        "\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\u6EEB\u6EEC"+
-        "\u6EED\u6EEE\u6EEF\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5"+
-        "\u6EF6\u6EF7\u6EF8\u6EFA\u6EFB\u6EFC\u6EFD\u6EFE"+
-        "\u6EFF\u6F00\u6F01\u6F03\u6F04\u6F05\u6F07\u6F08"+
-        "\u6F0A\u6F0B\u6F0C\u6F0D\u6F0E\u6F10\u6F11\u6F12"+
-        "\u6F16\u6F17\u6F18\u6F19\u6F1A\u6F1B\u6F1C\u6F1D"+
-        "\u6F1E\u6F1F\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27"+
-        "\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37"+
-        "\u6F38\u6F39\u6F3A\u6F3B\u6F3C\u6F3D\u6F3F\u6F40"+
-        "\u6F41\u6F42\uFFFD\u6F43\u6F44\u6F45\u6F48\u6F49"+
-        "\u6F4A\u6F4C\u6F4E\u6F4F\u6F50\u6F51\u6F52\u6F53"+
-        "\u6F54\u6F55\u6F56\u6F57\u6F59\u6F5A\u6F5B\u6F5D"+
-        "\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\u6F68"+
-        "\u6F69\u6F6A\u6F6B\u6F6C\u6F6F\u6F70\u6F71\u6F73"+
-        "\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\u6F7E\u6F7F"+
-        "\u6F80\u6F81\u6F82\u6F83\u6F85\u6F86\u6F87\u6F8A"+
-        "\u6F8B\u6F8F\u6F90\u6F91\u6F92\u6F93\u6F94\u6F95"+
-        "\u6F96\u6F97\u6F98\u6F99\u6F9A\u6F9B\u6F9D\u6F9E"+
-        "\u6F9F\u6FA0\u6FA2\u6FA3\u6FA4\u6FA5\u6FA6\u6FA8"+
-        "\u6FA9\u6FAA\u6FAB\u6FAC\u6FAD\u6FAE\u6FAF\u6FB0"+
-        "\u6FB1\u6FB2\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\u6FBB"+
-        "\u6FBC\u6FBD\u6FBE\u6FBF\u6FC1\u6FC3\u6FC4\u6FC5"+
-        "\u6FC6\u6FC7\u6FC8\u6FCA\u6FCB\u6FCC\u6FCD\u6FCE"+
-        "\u6FCF\u6FD0\u6FD3\u6FD4\u6FD5\u6FD6\u6FD7\u6FD8"+
-        "\u6FD9\u6FDA\u6FDB\u6FDC\u6FDD\u6FDF\u6FE2\u6FE3"+
-        "\u6FE4\u6FE5\u6FE6\u6FE7\u6FE8\u6FE9\u6FEA\u6FEB"+
-        "\u6FEC\u6FED\u6FF0\u6FF1\u6FF2\u6FF3\u6FF4\u6FF5"+
-        "\u6FF6\u6FF7\u6FF8\u6FF9\u6FFA\u6FFB\u6FFC\u6FFD"+
-        "\u6FFE\u6FFF\u7000\u7001\u7002\u7003\u7004\u7005"+
-        "\u7006\u7007\u7008\u7009\u700A\u700B\u700C\u700D"+
-        "\u700E\u700F\u7010\u7012\u7013\u7014\u7015\u7016"+
-        "\u7017\u7018\u7019\u701C\u701D\u701E\u701F\u7020"+
-        "\u7021\u7022\u7024\u7025\u7026\u7027\u7028\u7029"+
-        "\u702A\uFFFD\u702B\u702C\u702D\u702E\u702F\u7030"+
-        "\u7031\u7032\u7033\u7034\u7036\u7037\u7038\u703A"+
-        "\u703B\u703C\u703D\u703E\u703F\u7040\u7041\u7042"+
-        "\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704A"+
-        "\u704B\u704D\u704E\u7050\u7051\u7052\u7053\u7054"+
-        "\u7055\u7056\u7057\u7058\u7059\u705A\u705B\u705C"+
-        "\u705D\u705F\u7060\u7061\u7062\u7063\u7064\u7065"+
-        "\u7066\u7067\u7068\u7069\u706A\u706E\u7071\u7072"+
-        "\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081"+
-        "\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C"+
-        "\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A"+
-        "\u709B\u709E\u709F\u70A0\u70A1\u70A2\u70A3\u70A4"+
-        "\u70A5\u70A6\u70A7\u70A8\u70A9\u70AA\u70B0\u70B2"+
-        "\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5"+
-        "\u70C6\u70C7\u70C9\u70CB\u70CC\u70CD\u70CE\u70CF"+
-        "\u70D0\u70D1\u70D2\u70D3\u70D4\u70D5\u70D6\u70D7"+
-        "\u70DA\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3"+
-        "\u70E5\u70EA\u70EE\u70F0\u70F1\u70F2\u70F3\u70F4"+
-        "\u70F5\u70F6\u70F8\u70FA\u70FB\u70FC\u70FE\u70FF"+
-        "\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107"+
-        "\u7108\u710B\u710C\u710D\u710E\u710F\u7111\u7112"+
-        "\u7114\u7117\u711B\u711C\u711D\u711E\u711F\u7120"+
-        "\u7121\u7122\u7123\u7124\u7125\u7127\u7128\u7129"+
-        "\u712A\u712B\u712C\u712D\u712E\u7132\u7133\u7134"+
-        "\uFFFD\u7135\u7137\u7138\u7139\u713A\u713B\u713C"+
-        "\u713D\u713E\u713F\u7140\u7141\u7142\u7143\u7144"+
-        "\u7146\u7147\u7148\u7149\u714B\u714D\u714F\u7150"+
-        "\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158"+
-        "\u7159\u715A\u715B\u715D\u715F\u7160\u7161\u7162"+
-        "\u7163\u7165\u7169\u716A\u716B\u716C\u716D\u716F"+
-        "\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B"+
-        "\u717C\u717E\u717F\u7180\u7181\u7182\u7183\u7185"+
-        "\u7186\u7187\u7188\u7189\u718B\u718C\u718D\u718E"+
-        "\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A"+
-        "\u719B\u719C\u719D\u719E\u71A1\u71A2\u71A3\u71A4"+
-        "\u71A5\u71A6\u71A7\u71A9\u71AA\u71AB\u71AD\u71AE"+
-        "\u71AF\u71B0\u71B1\u71B2\u71B4\u71B6\u71B7\u71B8"+
-        "\u71BA\u71BB\u71BC\u71BD\u71BE\u71BF\u71C0\u71C1"+
-        "\u71C2\u71C4\u71C5\u71C6\u71C7\u71C8\u71C9\u71CA"+
-        "\u71CB\u71CC\u71CD\u71CF\u71D0\u71D1\u71D2\u71D3";
-
-    private final static String innerIndex2=
-        "\u71D6\u71D7\u71D8\u71D9\u71DA\u71DB\u71DC\u71DD"+
-        "\u71DE\u71DF\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8"+
-        "\u71E9\u71EA\u71EB\u71EC\u71ED\u71EF\u71F0\u71F1"+
-        "\u71F2\u71F3\u71F4\u71F5\u71F6\u71F7\u71F8\u71FA"+
-        "\u71FB\u71FC\u71FD\u71FE\u71FF\u7200\u7201\u7202"+
-        "\u7203\u7204\u7205\u7207\u7208\u7209\u720A\u720B"+
-        "\u720C\u720D\u720E\u720F\u7210\u7211\u7212\u7213"+
-        "\u7214\u7215\u7216\u7217\u7218\u7219\u721A\uFFFD"+
-        "\u721B\u721C\u721E\u721F\u7220\u7221\u7222\u7223"+
-        "\u7224\u7225\u7226\u7227\u7229\u722B\u722D\u722E"+
-        "\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240"+
-        "\u7241\u7242\u7243\u7244\u7245\u7246\u7249\u724A"+
-        "\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255"+
-        "\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264"+
-        "\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271"+
-        "\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D"+
-        "\u7282\u7283\u7285\u7286\u7287\u7288\u7289\u728C"+
-        "\u728E\u7290\u7291\u7293\u7294\u7295\u7296\u7297"+
-        "\u7298\u7299\u729A\u729B\u729C\u729D\u729E\u72A0"+
-        "\u72A1\u72A2\u72A3\u72A4\u72A5\u72A6\u72A7\u72A8"+
-        "\u72A9\u72AA\u72AB\u72AE\u72B1\u72B2\u72B3\u72B5"+
-        "\u72BA\u72BB\u72BC\u72BD\u72BE\u72BF\u72C0\u72C5"+
-        "\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1"+
-        "\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\uE4C6"+
-        "\uE4C7\uE4C8\uE4C9\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE"+
-        "\uE4CF\uE4D0\uE4D1\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6"+
-        "\uE4D7\uE4D8\uE4D9\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE"+
-        "\uE4DF\uE4E0\uE4E1\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6"+
-        "\uE4E7\uE4E8\uE4E9\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE"+
-        "\uE4EF\uE4F0\uE4F1\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6"+
-        "\uE4F7\uE4F8\uE4F9\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE"+
-        "\uE4FF\uE500\uE501\uE502\uE503\uE504\uFFFD\uE505"+
-        "\uE506\uE507\uE508\uE509\uE50A\uE50B\uE50C\uE50D"+
-        "\uE50E\uE50F\uE510\uE511\uE512\uE513\uE514\uE515"+
-        "\uE516\uE517\uE518\uE519\uE51A\uE51B\uE51C\uE51D"+
-        "\uE51E\uE51F\uE520\uE521\uE522\uE523\uE524\uE525"+
-        "\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003"+
-        "\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C"+
-        "\u201D\u3014\u3015\u3008\u3009\u300A\u300B\u300C"+
-        "\u300D\u300E\u300F\u3016\u3017\u3010\u3011\u00B1"+
-        "\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A"+
-        "\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312"+
-        "\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D"+
-        "\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234"+
-        "\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4"+
-        "\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB"+
-        "\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2"+
-        "\u203B\u2192\u2190\u2191\u2193\u3013\uE526\uE527"+
-        "\uE528\uE529\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F"+
-        "\uE530\uE531\uE532\uE533\uE534\uE535\uE536\uE537"+
-        "\uE538\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F"+
-        "\uE540\uE541\uE542\uE543\uE544\uE545\uE546\uE547"+
-        "\uE548\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F"+
-        "\uE550\uE551\uE552\uE553\uE554\uE555\uE556\uE557"+
-        "\uE558\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F"+
-        "\uE560\uE561\uE562\uE563\uE564\uFFFD\uE565\uE566"+
-        "\uE567\uE568\uE569\uE56A\uE56B\uE56C\uE56D\uE56E"+
-        "\uE56F\uE570\uE571\uE572\uE573\uE574\uE575\uE576"+
-        "\uE577\uE578\uE579\uE57A\uE57B\uE57C\uE57D\uE57E"+
-        "\uE57F\uE580\uE581\uE582\uE583\uE584\uE585\u2170"+
-        "\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178"+
-        "\u2179\uE766\uE767\uE768\uE769\uE76A\uE76B\u2488"+
-        "\u2489\u248A\u248B\u248C\u248D\u248E\u248F\u2490"+
-        "\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498"+
-        "\u2499\u249A\u249B\u2474\u2475\u2476\u2477\u2478"+
-        "\u2479\u247A\u247B\u247C\u247D\u247E\u247F\u2480"+
-        "\u2481\u2482\u2483\u2484\u2485\u2486\u2487\u2460"+
-        "\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468"+
-        "\u2469\u20AC\uE76D\u3220\u3221\u3222\u3223\u3224"+
-        "\u3225\u3226\u3227\u3228\u3229\uE76E\uE76F\u2160"+
-        "\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168"+
-        "\u2169\u216A\u216B\uE770\uE771\uE586\uE587\uE588"+
-        "\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F\uE590"+
-        "\uE591\uE592\uE593\uE594\uE595\uE596\uE597\uE598"+
-        "\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F\uE5A0"+
-        "\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7\uE5A8"+
-        "\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF\uE5B0"+
-        "\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7\uE5B8"+
-        "\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF\uE5C0"+
-        "\uE5C1\uE5C2\uE5C3\uE5C4\uFFFD\uE5C5\uE5C6\uE5C7"+
-        "\uE5C8\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF"+
-        "\uE5D0\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7"+
-        "\uE5D8\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF"+
-        "\uE5E0\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uFF01\uFF02"+
-        "\uFF03\uFFE5\uFF05\uFF06\uFF07\uFF08\uFF09\uFF0A"+
-        "\uFF0B\uFF0C\uFF0D\uFF0E\uFF0F\uFF10\uFF11\uFF12"+
-        "\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19\uFF1A"+
-        "\uFF1B\uFF1C\uFF1D\uFF1E\uFF1F\uFF20\uFF21\uFF22"+
-        "\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A"+
-        "\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32"+
-        "\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A"+
-        "\uFF3B\uFF3C\uFF3D\uFF3E\uFF3F\uFF40\uFF41\uFF42"+
-        "\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A"+
-        "\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52"+
-        "\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A"+
-        "\uFF5B\uFF5C\uFF5D\uFFE3\uE5E6\uE5E7\uE5E8\uE5E9"+
-        "\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF\uE5F0\uE5F1"+
-        "\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7\uE5F8\uE5F9"+
-        "\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF\uE600\uE601"+
-        "\uE602\uE603\uE604\uE605\uE606\uE607\uE608\uE609"+
-        "\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F\uE610\uE611"+
-        "\uE612\uE613\uE614\uE615\uE616\uE617\uE618\uE619"+
-        "\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F\uE620\uE621"+
-        "\uE622\uE623\uE624\uFFFD\uE625\uE626\uE627\uE628"+
-        "\uE629\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F\uE630"+
-        "\uE631\uE632\uE633\uE634\uE635\uE636\uE637\uE638"+
-        "\uE639\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F\uE640"+
-        "\uE641\uE642\uE643\uE644\uE645\u3041\u3042\u3043"+
-        "\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B"+
-        "\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053"+
-        "\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B"+
-        "\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063"+
-        "\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B"+
-        "\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073"+
-        "\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B"+
-        "\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083"+
-        "\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B"+
-        "\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093"+
-        "\uE772\uE773\uE774\uE775\uE776\uE777\uE778\uE779"+
-        "\uE77A\uE77B\uE77C\uE646\uE647\uE648\uE649\uE64A"+
-        "\uE64B\uE64C\uE64D\uE64E\uE64F\uE650\uE651\uE652"+
-        "\uE653\uE654\uE655\uE656\uE657\uE658\uE659\uE65A"+
-        "\uE65B\uE65C\uE65D\uE65E\uE65F\uE660\uE661\uE662"+
-        "\uE663\uE664\uE665\uE666\uE667\uE668\uE669\uE66A"+
-        "\uE66B\uE66C\uE66D\uE66E\uE66F\uE670\uE671\uE672"+
-        "\uE673\uE674\uE675\uE676\uE677\uE678\uE679\uE67A"+
-        "\uE67B\uE67C\uE67D\uE67E\uE67F\uE680\uE681\uE682"+
-        "\uE683\uE684\uFFFD\uE685\uE686\uE687\uE688\uE689"+
-        "\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F\uE690\uE691"+
-        "\uE692\uE693\uE694\uE695\uE696\uE697\uE698\uE699"+
-        "\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F\uE6A0\uE6A1"+
-        "\uE6A2\uE6A3\uE6A4\uE6A5\u30A1\u30A2\u30A3\u30A4"+
-        "\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC"+
-        "\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4"+
-        "\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC"+
-        "\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4"+
-        "\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC"+
-        "\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4"+
-        "\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC"+
-        "\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4"+
-        "\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC"+
-        "\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4"+
-        "\u30F5\u30F6\uE77D\uE77E\uE77F\uE780\uE781\uE782"+
-        "\uE783\uE784\uE6A6\uE6A7\uE6A8\uE6A9\uE6AA\uE6AB"+
-        "\uE6AC\uE6AD\uE6AE\uE6AF\uE6B0\uE6B1\uE6B2\uE6B3"+
-        "\uE6B4\uE6B5\uE6B6\uE6B7\uE6B8\uE6B9\uE6BA\uE6BB"+
-        "\uE6BC\uE6BD\uE6BE\uE6BF\uE6C0\uE6C1\uE6C2\uE6C3"+
-        "\uE6C4\uE6C5\uE6C6\uE6C7\uE6C8\uE6C9\uE6CA\uE6CB"+
-        "\uE6CC\uE6CD\uE6CE\uE6CF\uE6D0\uE6D1\uE6D2\uE6D3"+
-        "\uE6D4\uE6D5\uE6D6\uE6D7\uE6D8\uE6D9\uE6DA\uE6DB"+
-        "\uE6DC\uE6DD\uE6DE\uE6DF\uE6E0\uE6E1\uE6E2\uE6E3"+
-        "\uE6E4\uFFFD\uE6E5\uE6E6\uE6E7\uE6E8\uE6E9\uE6EA"+
-        "\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF\uE6F0\uE6F1\uE6F2"+
-        "\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7\uE6F8\uE6F9\uE6FA"+
-        "\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF\uE700\uE701\uE702"+
-        "\uE703\uE704\uE705\u0391\u0392\u0393\u0394\u0395"+
-        "\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D"+
-        "\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6"+
-        "\u03A7\u03A8\u03A9\uE785\uE786\uE787\uE788\uE789"+
-        "\uE78A\uE78B\uE78C\u03B1\u03B2\u03B3\u03B4\u03B5"+
-        "\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD"+
-        "\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6"+
-        "\u03C7\u03C8\u03C9\uE78D\uE78E\uE78F\uE790\uE791"+
-        "\uE792\uE793\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40"+
-        "\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\uE794\uE795"+
-        "\uFE3B\uFE3C\uFE37\uFE38\uFE31\uE796\uFE33\uFE34"+
-        "\uE797\uE798\uE799\uE79A\uE79B\uE79C\uE79D\uE79E"+
-        "\uE79F\uE706\uE707\uE708\uE709\uE70A\uE70B\uE70C"+
-        "\uE70D\uE70E\uE70F\uE710\uE711\uE712\uE713\uE714"+
-        "\uE715\uE716\uE717\uE718\uE719\uE71A\uE71B\uE71C"+
-        "\uE71D\uE71E\uE71F\uE720\uE721\uE722\uE723\uE724"+
-        "\uE725\uE726\uE727\uE728\uE729\uE72A\uE72B\uE72C"+
-        "\uE72D\uE72E\uE72F\uE730\uE731\uE732\uE733\uE734"+
-        "\uE735\uE736\uE737\uE738\uE739\uE73A\uE73B\uE73C"+
-        "\uE73D\uE73E\uE73F\uE740\uE741\uE742\uE743\uE744"+
-        "\uFFFD\uE745\uE746\uE747\uE748\uE749\uE74A\uE74B"+
-        "\uE74C\uE74D\uE74E\uE74F\uE750\uE751\uE752\uE753"+
-        "\uE754\uE755\uE756\uE757\uE758\uE759\uE75A\uE75B"+
-        "\uE75C\uE75D\uE75E\uE75F\uE760\uE761\uE762\uE763"+
-        "\uE764\uE765\u0410\u0411\u0412\u0413\u0414\u0415"+
-        "\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C"+
-        "\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424"+
-        "\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"+
-        "\u042D\u042E\u042F\uE7A0\uE7A1\uE7A2\uE7A3\uE7A4"+
-        "\uE7A5\uE7A6\uE7A7\uE7A8\uE7A9\uE7AA\uE7AB\uE7AC"+
-        "\uE7AD\uE7AE\u0430\u0431\u0432\u0433\u0434\u0435"+
-        "\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C"+
-        "\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444"+
-        "\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C"+
-        "\u044D\u044E\u044F\uE7AF\uE7B0\uE7B1\uE7B2\uE7B3"+
-        "\uE7B4\uE7B5\uE7B6\uE7B7\uE7B8\uE7B9\uE7BA\uE7BB"+
-        "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105"+
-        "\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223"+
-        "\u2252\u2266\u2267\u22BF\u2550\u2551\u2552\u2553"+
-        "\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B"+
-        "\u255C\u255D\u255E\u255F\u2560\u2561\u2562\u2563"+
-        "\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B"+
-        "\u256C\u256D\u256E\u256F\u2570\u2571\u2572\u2573"+
-        "\u2581\u2582\u2583\u2584\u2585\u2586\u2587\uFFFD"+
-        "\u2588\u2589\u258A\u258B\u258C\u258D\u258E\u258F"+
-        "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4"+
-        "\u25E5\u2609\u2295\u3012\u301D\u301E\uE7BC\uE7BD"+
-        "\uE7BE\uE7BF\uE7C0\uE7C1\uE7C2\uE7C3\uE7C4\uE7C5"+
-        "\uE7C6\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B"+
-        "\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2"+
-        "\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA"+
-        "\u01DC\u00FC\u00EA\u0251\uE7C7\u0144\u0148\u01F9"+
-        "\u0261\uE7C9\uE7CA\uE7CB\uE7CC\u3105\u3106\u3107"+
-        "\u3108\u3109\u310A\u310B\u310C\u310D\u310E\u310F"+
-        "\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117"+
-        "\u3118\u3119\u311A\u311B\u311C\u311D\u311E\u311F"+
-        "\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127"+
-        "\u3128\u3129\uE7CD\uE7CE\uE7CF\uE7D0\uE7D1\uE7D2"+
-        "\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7\uE7D8\uE7D9\uE7DA"+
-        "\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF\uE7E0\uE7E1\u3021"+
-        "\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029"+
-        "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4"+
-        "\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\uE7E2"+
-        "\u2121\u3231\uE7E3\u2010\uE7E4\uE7E5\uE7E6\u30FC"+
-        "\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49"+
-        "\uFE4A\uFE4B\uFE4C\uFE4D\uFE4E\uFE4F\uFE50\uFE51"+
-        "\uFE52\uFE54\uFE55\uFE56\uFE57\uFE59\uFE5A\uFE5B"+
-        "\uFE5C\uFE5D\uFE5E\uFE5F\uFE60\uFE61\uFFFD\uFE62"+
-        "\uFE63\uFE64\uFE65\uFE66\uFE68\uFE69\uFE6A\uFE6B"+
-        "\u303E\u2FF0\u2FF1\u2FF2\u2FF3\u2FF4\u2FF5\u2FF6"+
-        "\u2FF7\u2FF8\u2FF9\u2FFA\u2FFB\u3007\uE7F4\uE7F5"+
-        "\uE7F6\uE7F7\uE7F8\uE7F9\uE7FA\uE7FB\uE7FC\uE7FD"+
-        "\uE7FE\uE7FF\uE800\u2500\u2501\u2502\u2503\u2504"+
-        "\u2505\u2506\u2507\u2508\u2509\u250A\u250B\u250C"+
-        "\u250D\u250E\u250F\u2510\u2511\u2512\u2513\u2514"+
-        "\u2515\u2516\u2517\u2518\u2519\u251A\u251B\u251C"+
-        "\u251D\u251E\u251F\u2520\u2521\u2522\u2523\u2524"+
-        "\u2525\u2526\u2527\u2528\u2529\u252A\u252B\u252C"+
-        "\u252D\u252E\u252F\u2530\u2531\u2532\u2533\u2534"+
-        "\u2535\u2536\u2537\u2538\u2539\u253A\u253B\u253C"+
-        "\u253D\u253E\u253F\u2540\u2541\u2542\u2543\u2544"+
-        "\u2545\u2546\u2547\u2548\u2549\u254A\u254B\uE801"+
-        "\uE802\uE803\uE804\uE805\uE806\uE807\uE808\uE809"+
-        "\uE80A\uE80B\uE80C\uE80D\uE80E\uE80F\u72DC\u72DD"+
-        "\u72DF\u72E2\u72E3\u72E4\u72E5\u72E6\u72E7\u72EA"+
-        "\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300"+
-        "\u7302\u7304\u7305\u7306\u7307\u7308\u7309\u730B"+
-        "\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318"+
-        "\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327"+
-        "\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336"+
-        "\u733A\u733B\u733C\u733D\u7340\u7341\u7342\u7343"+
-        "\u7344\u7345\u7346\u7347\u7348\uFFFD\u7349\u734A"+
-        "\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355"+
-        "\u7356\u7358\u7359\u735A\u735B\u735C\u735D\u735E"+
-        "\u735F\u7361\u7362\u7363\u7364\u7365\u7366\u7367"+
-        "\u7368\u7369\u736A\u736B\u736E\u7370\u7371\uE000"+
-        "\uE001\uE002\uE003\uE004\uE005\uE006\uE007\uE008"+
-        "\uE009\uE00A\uE00B\uE00C\uE00D\uE00E\uE00F\uE010"+
-        "\uE011\uE012\uE013\uE014\uE015\uE016\uE017\uE018"+
-        "\uE019\uE01A\uE01B\uE01C\uE01D\uE01E\uE01F\uE020"+
-        "\uE021\uE022\uE023\uE024\uE025\uE026\uE027\uE028"+
-        "\uE029\uE02A\uE02B\uE02C\uE02D\uE02E\uE02F\uE030"+
-        "\uE031\uE032\uE033\uE034\uE035\uE036\uE037\uE038"+
-        "\uE039\uE03A\uE03B\uE03C\uE03D\uE03E\uE03F\uE040"+
-        "\uE041\uE042\uE043\uE044\uE045\uE046\uE047\uE048"+
-        "\uE049\uE04A\uE04B\uE04C\uE04D\uE04E\uE04F\uE050"+
-        "\uE051\uE052\uE053\uE054\uE055\uE056\uE057\uE058"+
-        "\uE059\uE05A\uE05B\uE05C\uE05D\u7372\u7373\u7374"+
-        "\u7375\u7376\u7377\u7378\u7379\u737A\u737B\u737C"+
-        "\u737D\u737F\u7380\u7381\u7382\u7383\u7385\u7386"+
-        "\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393"+
-        "\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D"+
-        "\u739E\u73A0\u73A1\u73A3\u73A4\u73A5\u73A6\u73A7"+
-        "\u73A8\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6"+
-        "\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3"+
-        "\u73C4\u73C5\u73C6\u73C7\uFFFD\u73CB\u73CC\u73CE"+
-        "\u73D2\u73D3\u73D4\u73D5\u73D6\u73D7\u73D8\u73DA"+
-        "\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4"+
-        "\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0"+
-        "\u73F1\u73F3\u73F4\u73F5\u73F6\u73F7\uE05E\uE05F"+
-        "\uE060\uE061\uE062\uE063\uE064\uE065\uE066\uE067"+
-        "\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E\uE06F"+
-        "\uE070\uE071\uE072\uE073\uE074\uE075\uE076\uE077"+
-        "\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E\uE07F"+
-        "\uE080\uE081\uE082\uE083\uE084\uE085\uE086\uE087"+
-        "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uE08F"+
-        "\uE090\uE091\uE092\uE093\uE094\uE095\uE096\uE097"+
-        "\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E\uE09F"+
-        "\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6\uE0A7"+
-        "\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE\uE0AF"+
-        "\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6\uE0B7"+
-        "\uE0B8\uE0B9\uE0BA\uE0BB\u73F8\u73F9\u73FA\u73FB"+
-        "\u73FC\u73FD\u73FE\u73FF\u7400\u7401\u7402\u7404"+
-        "\u7407\u7408\u740B\u740C\u740D\u740E\u7411\u7412"+
-        "\u7413\u7414\u7415\u7416\u7417\u7418\u7419\u741C"+
-        "\u741D\u741E\u741F\u7420\u7421\u7423\u7424\u7427"+
-        "\u7429\u742B\u742D\u742F\u7431\u7432\u7437\u7438"+
-        "\u7439\u743A\u743B\u743D\u743E\u743F\u7440\u7442"+
-        "\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744A"+
-        "\u744B\u744C\u744D\uFFFD\u744E\u744F\u7450\u7451"+
-        "\u7452\u7453\u7454\u7456\u7458\u745D\u7460\u7461"+
-        "\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469"+
-        "\u746A\u746B\u746C\u746E\u746F\u7471\u7472\u7473"+
-        "\u7474\u7475\u7478\u7479\u747A\uE0BC\uE0BD\uE0BE"+
-        "\uE0BF\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5\uE0C6"+
-        "\uE0C7\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD\uE0CE"+
-        "\uE0CF\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5\uE0D6"+
-        "\uE0D7\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD\uE0DE"+
-        "\uE0DF\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5\uE0E6"+
-        "\uE0E7\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED\uE0EE"+
-        "\uE0EF\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5\uE0F6"+
-        "\uE0F7\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD\uE0FE"+
-        "\uE0FF\uE100\uE101\uE102\uE103\uE104\uE105\uE106"+
-        "\uE107\uE108\uE109\uE10A\uE10B\uE10C\uE10D\uE10E"+
-        "\uE10F\uE110\uE111\uE112\uE113\uE114\uE115\uE116"+
-        "\uE117\uE118\uE119\u747B\u747C\u747D\u747F\u7482"+
-        "\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D"+
-        "\u748F\u7491\u7492\u7493\u7494\u7495\u7496\u7497"+
-        "\u7498\u7499\u749A\u749B\u749D\u749F\u74A0\u74A1"+
-        "\u74A2\u74A3\u74A4\u74A5\u74A6\u74AA\u74AB\u74AC"+
-        "\u74AD\u74AE\u74AF\u74B0\u74B1\u74B2\u74B3\u74B4"+
-        "\u74B5\u74B6\u74B7\u74B8\u74B9\u74BB\u74BC\u74BD"+
-        "\u74BE\u74BF\u74C0\u74C1\u74C2\u74C3\u74C4\u74C5"+
-        "\u74C6\u74C7\uFFFD\u74C8\u74C9\u74CA\u74CB\u74CC"+
-        "\u74CD\u74CE\u74CF\u74D0\u74D1\u74D3\u74D4\u74D5"+
-        "\u74D6\u74D7\u74D8\u74D9\u74DA\u74DB\u74DD\u74DF"+
-        "\u74E1\u74E5\u74E7\u74E8\u74E9\u74EA\u74EB\u74EC"+
-        "\u74ED\u74F0\u74F1\u74F2\uE11A\uE11B\uE11C\uE11D"+
-        "\uE11E\uE11F\uE120\uE121\uE122\uE123\uE124\uE125"+
-        "\uE126\uE127\uE128\uE129\uE12A\uE12B\uE12C\uE12D"+
-        "\uE12E\uE12F\uE130\uE131\uE132\uE133\uE134\uE135"+
-        "\uE136\uE137\uE138\uE139\uE13A\uE13B\uE13C\uE13D"+
-        "\uE13E\uE13F\uE140\uE141\uE142\uE143\uE144\uE145"+
-        "\uE146\uE147\uE148\uE149\uE14A\uE14B\uE14C\uE14D"+
-        "\uE14E\uE14F\uE150\uE151\uE152\uE153\uE154\uE155"+
-        "\uE156\uE157\uE158\uE159\uE15A\uE15B\uE15C\uE15D"+
-        "\uE15E\uE15F\uE160\uE161\uE162\uE163\uE164\uE165"+
-        "\uE166\uE167\uE168\uE169\uE16A\uE16B\uE16C\uE16D"+
-        "\uE16E\uE16F\uE170\uE171\uE172\uE173\uE174\uE175"+
-        "\uE176\uE177\u74F3\u74F5\u74F8\u74F9\u74FA\u74FB"+
-        "\u74FC\u74FD\u74FE\u7500\u7501\u7502\u7503\u7505"+
-        "\u7506\u7507\u7508\u7509\u750A\u750B\u750C\u750E"+
-        "\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D"+
-        "\u751E\u7520\u7521\u7522\u7523\u7524\u7526\u7527"+
-        "\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F"+
-        "\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A"+
-        "\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557"+
-        "\u7558\uFFFD\u755D\u755E\u755F\u7560\u7561\u7562"+
-        "\u7563\u7564\u7567\u7568\u7569\u756B\u756C\u756D"+
-        "\u756E\u756F\u7570\u7571\u7573\u7575\u7576\u7577"+
-        "\u757A\u757B\u757C\u757D\u757E\u7580\u7581\u7582"+
-        "\u7584\u7585\u7587\uE178\uE179\uE17A\uE17B\uE17C"+
-        "\uE17D\uE17E\uE17F\uE180\uE181\uE182\uE183\uE184"+
-        "\uE185\uE186\uE187\uE188\uE189\uE18A\uE18B\uE18C"+
-        "\uE18D\uE18E\uE18F\uE190\uE191\uE192\uE193\uE194"+
-        "\uE195\uE196\uE197\uE198\uE199\uE19A\uE19B\uE19C"+
-        "\uE19D\uE19E\uE19F\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4"+
-        "\uE1A5\uE1A6\uE1A7\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC"+
-        "\uE1AD\uE1AE\uE1AF\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4"+
-        "\uE1B5\uE1B6\uE1B7\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC"+
-        "\uE1BD\uE1BE\uE1BF\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4"+
-        "\uE1C5\uE1C6\uE1C7\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC"+
-        "\uE1CD\uE1CE\uE1CF\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4"+
-        "\uE1D5\u7588\u7589\u758A\u758C\u758D\u758E\u7590"+
-        "\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6"+
-        "\u75A7\u75A8\u75A9\u75AA\u75AD\u75B6\u75B7\u75BA"+
-        "\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE"+
-        "\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC"+
-        "\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED"+
-        "\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8"+
-        "\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"+
-        "\uFFFD\u7608\u7609\u760B\u760D\u760E\u760F\u7611"+
-        "\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E"+
-        "\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631"+
-        "\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641"+
-        "\u7642\u7644\uE1D6\uE1D7\uE1D8\uE1D9\uE1DA\uE1DB"+
-        "\uE1DC\uE1DD\uE1DE\uE1DF\uE1E0\uE1E1\uE1E2\uE1E3"+
-        "\uE1E4\uE1E5\uE1E6\uE1E7\uE1E8\uE1E9\uE1EA\uE1EB"+
-        "\uE1EC\uE1ED\uE1EE\uE1EF\uE1F0\uE1F1\uE1F2\uE1F3"+
-        "\uE1F4\uE1F5\uE1F6\uE1F7\uE1F8\uE1F9\uE1FA\uE1FB"+
-        "\uE1FC\uE1FD\uE1FE\uE1FF\uE200\uE201\uE202\uE203"+
-        "\uE204\uE205\uE206\uE207\uE208\uE209\uE20A\uE20B"+
-        "\uE20C\uE20D\uE20E\uE20F\uE210\uE211\uE212\uE213"+
-        "\uE214\uE215\uE216\uE217\uE218\uE219\uE21A\uE21B"+
-        "\uE21C\uE21D\uE21E\uE21F\uE220\uE221\uE222\uE223"+
-        "\uE224\uE225\uE226\uE227\uE228\uE229\uE22A\uE22B"+
-        "\uE22C\uE22D\uE22E\uE22F\uE230\uE231\uE232\uE233";
-
-    private final static String innerIndex3=
-        "\u7645\u7646\u7647\u7648\u7649\u764A\u764B\u764E"+
-        "\u764F\u7650\u7651\u7652\u7653\u7655\u7657\u7658"+
-        "\u7659\u765A\u765B\u765D\u765F\u7660\u7661\u7662"+
-        "\u7664\u7665\u7666\u7667\u7668\u7669\u766A\u766C"+
-        "\u766D\u766E\u7670\u7671\u7672\u7673\u7674\u7675"+
-        "\u7676\u7677\u7679\u767A\u767C\u767F\u7680\u7681"+
-        "\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690"+
-        "\u7692\u7694\u7695\u7697\u7698\u769A\u769B\uFFFD"+
-        "\u769C\u769D\u769E\u769F\u76A0\u76A1\u76A2\u76A3"+
-        "\u76A5\u76A6\u76A7\u76A8\u76A9\u76AA\u76AB\u76AC"+
-        "\u76AD\u76AF\u76B0\u76B3\u76B5\u76B6\u76B7\u76B8"+
-        "\u76B9\u76BA\u76BB\u76BC\u76BD\u76BE\u76C0\u76C1"+
-        "\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0"+
-        "\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698"+
-        "\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA"+
-        "\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1"+
-        "\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252"+
-        "\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB"+
-        "\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D"+
-        "\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591"+
-        "\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E"+
-        "\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E"+
-        "\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551"+
-        "\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\u76C4"+
-        "\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA"+
-        "\u76DC\u76DD\u76DE\u76E0\u76E1\u76E2\u76E3\u76E4"+
-        "\u76E6\u76E7\u76E8\u76E9\u76EA\u76EB\u76EC\u76ED"+
-        "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD"+
-        "\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C"+
-        "\u770E\u770F\u7710\u7711\u7712\u7713\u7714\u7715"+
-        "\u7716\u7717\u7718\u771B\u771C\u771D\u771E\u7721"+
-        "\u7723\u7724\u7725\u7727\u772A\u772B\uFFFD\u772C"+
-        "\u772E\u7730\u7731\u7732\u7733\u7734\u7739\u773B"+
-        "\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748"+
-        "\u7749\u774A\u774B\u774C\u774D\u774E\u774F\u7752"+
-        "\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775C"+
-        "\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5"+
-        "\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351"+
-        "\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907"+
-        "\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29"+
-        "\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4"+
-        "\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9"+
-        "\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5"+
-        "\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16"+
-        "\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB"+
-        "\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B"+
-        "\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175"+
-        "\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\u775D\u775E"+
-        "\u775F\u7760\u7764\u7767\u7769\u776A\u776D\u776E"+
-        "\u776F\u7770\u7771\u7772\u7773\u7774\u7775\u7776"+
-        "\u7777\u7778\u777A\u777B\u777C\u7781\u7782\u7783"+
-        "\u7786\u7787\u7788\u7789\u778A\u778B\u778F\u7790"+
-        "\u7793\u7794\u7795\u7796\u7797\u7798\u7799\u779A"+
-        "\u779B\u779C\u779D\u779E\u77A1\u77A3\u77A4\u77A6"+
-        "\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4"+
-        "\u77B6\u77B7\u77B8\u77B9\u77BA\uFFFD\u77BC\u77BE"+
-        "\u77C0\u77C1\u77C2\u77C3\u77C4\u77C5\u77C6\u77C7"+
-        "\u77C8\u77C9\u77CA\u77CB\u77CC\u77CE\u77CF\u77D0"+
-        "\u77D1\u77D2\u77D3\u77D4\u77D5\u77D6\u77D8\u77D9"+
-        "\u77DA\u77DD\u77DE\u77DF\u77E0\u77E1\u77E4\u75C5"+
-        "\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A"+
-        "\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116"+
-        "\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865"+
-        "\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6"+
-        "\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7"+
-        "\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED"+
-        "\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD"+
-        "\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C"+
-        "\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5"+
-        "\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4"+
-        "\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2"+
-        "\u4EA7\u9610\u98A4\u660C\u7316\u77E6\u77E8\u77EA"+
-        "\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9"+
-        "\u77FA\u77FB\u77FC\u7803\u7804\u7805\u7806\u7807"+
-        "\u7808\u780A\u780B\u780E\u780F\u7810\u7813\u7815"+
-        "\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828"+
-        "\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835"+
-        "\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846"+
-        "\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853"+
-        "\u7854\u7858\u7859\u785A\uFFFD\u785B\u785C\u785E"+
-        "\u785F\u7860\u7861\u7862\u7863\u7864\u7865\u7866"+
-        "\u7867\u7868\u7869\u786F\u7870\u7871\u7872\u7873"+
-        "\u7874\u7875\u7876\u7878\u7879\u787A\u787B\u787D"+
-        "\u787E\u787F\u7880\u7881\u7882\u7883\u573A\u5C1D"+
-        "\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531"+
-        "\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2"+
-        "\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88"+
-        "\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648"+
-        "\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448"+
-        "\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B"+
-        "\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B"+
-        "\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5"+
-        "\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C"+
-        "\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785"+
-        "\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504"+
-        "\u96CF\u6EC1\u9664\u695A\u7884\u7885\u7886\u7888"+
-        "\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896"+
-        "\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8"+
-        "\u78A9\u78AA\u78AB\u78AC\u78AD\u78AE\u78AF\u78B5"+
-        "\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF"+
-        "\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC"+
-        "\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7"+
-        "\u78D8\u78DA\u78DB\u78DC\u78DD\u78DE\u78DF\u78E0"+
-        "\u78E1\u78E2\u78E3\uFFFD\u78E4\u78E5\u78E6\u78E7"+
-        "\u78E9\u78EA\u78EB\u78ED\u78EE\u78EF\u78F0\u78F1"+
-        "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\u78FC\u78FD"+
-        "\u78FE\u78FF\u7900\u7902\u7903\u7904\u7906\u7907"+
-        "\u7908\u7909\u790A\u790B\u790C\u7840\u50A8\u77D7"+
-        "\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20"+
-        "\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF"+
-        "\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F"+
-        "\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5"+
-        "\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64"+
-        "\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE"+
-        "\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1"+
-        "\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC"+
-        "\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA"+
-        "\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927"+
-        "\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37"+
-        "\u888B\u5F85\u902E\u790D\u790E\u790F\u7910\u7911"+
-        "\u7912\u7914\u7915\u7916\u7917\u7918\u7919\u791A"+
-        "\u791B\u791C\u791D\u791F\u7920\u7921\u7922\u7923"+
-        "\u7925\u7926\u7927\u7928\u7929\u792A\u792B\u792C"+
-        "\u792D\u792E\u792F\u7930\u7931\u7932\u7933\u7935"+
-        "\u7936\u7937\u7938\u7939\u793D\u793F\u7942\u7943"+
-        "\u7944\u7945\u7947\u794A\u794B\u794C\u794D\u794E"+
-        "\u794F\u7950\u7951\u7952\u7954\u7955\u7958\u7959"+
-        "\u7961\u7963\uFFFD\u7964\u7966\u7969\u796A\u796B"+
-        "\u796C\u796E\u7970\u7971\u7972\u7973\u7974\u7975"+
-        "\u7976\u7979\u797B\u797C\u797D\u797E\u797F\u7982"+
-        "\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D"+
-        "\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39"+
-        "\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE"+
-        "\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361"+
-        "\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC"+
-        "\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684"+
-        "\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824"+
-        "\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF"+
-        "\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F"+
-        "\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178"+
-        "\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960"+
-        "\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389"+
-        "\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED"+
-        "\u8C0D\u53E0\u7993\u7994\u7995\u7996\u7997\u7998"+
-        "\u7999\u799B\u799C\u799D\u799E\u799F\u79A0\u79A1"+
-        "\u79A2\u79A3\u79A4\u79A5\u79A6\u79A8\u79A9\u79AA"+
-        "\u79AB\u79AC\u79AD\u79AE\u79AF\u79B0\u79B1\u79B2"+
-        "\u79B4\u79B5\u79B6\u79B7\u79B8\u79BC\u79BF\u79C2"+
-        "\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF"+
-        "\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\u79DA\u79DB"+
-        "\u79DC\u79DD\u79DE\u79E0\u79E1\u79E2\u79E5\u79E8"+
-        "\u79EA\uFFFD\u79EC\u79EE\u79F1\u79F2\u79F3\u79F4"+
-        "\u79F5\u79F6\u79F7\u79F9\u79FA\u79FC\u79FE\u79FF"+
-        "\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C"+
-        "\u7A0F\u7A10\u7A11\u7A12\u7A13\u7A15\u7A16\u7A18"+
-        "\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876"+
-        "\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463"+
-        "\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C"+
-        "\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763"+
-        "\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C"+
-        "\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B"+
-        "\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9"+
-        "\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041"+
-        "\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA"+
-        "\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4"+
-        "\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102"+
-        "\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31"+
-        "\u4E8C\u7A1D\u7A1F\u7A21\u7A22\u7A24\u7A25\u7A26"+
-        "\u7A27\u7A28\u7A29\u7A2A\u7A2B\u7A2C\u7A2D\u7A2E"+
-        "\u7A2F\u7A30\u7A31\u7A32\u7A34\u7A35\u7A36\u7A38"+
-        "\u7A3A\u7A3E\u7A40\u7A41\u7A42\u7A43\u7A44\u7A45"+
-        "\u7A47\u7A48\u7A49\u7A4A\u7A4B\u7A4C\u7A4D\u7A4E"+
-        "\u7A4F\u7A50\u7A52\u7A53\u7A54\u7A55\u7A56\u7A58"+
-        "\u7A59\u7A5A\u7A5B\u7A5C\u7A5D\u7A5E\u7A5F\u7A60"+
-        "\u7A61\u7A62\u7A63\u7A64\u7A65\u7A66\u7A67\u7A68"+
-        "\uFFFD\u7A69\u7A6A\u7A6B\u7A6C\u7A6D\u7A6E\u7A6F"+
-        "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E"+
-        "\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E"+
-        "\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E"+
-        "\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F"+
-        "\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A"+
-        "\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303"+
-        "\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA"+
-        "\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2"+
-        "\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA"+
-        "\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206"+
-        "\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF"+
-        "\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B"+
-        "\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949"+
-        "\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276"+
-        "\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"+
-        "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\u7AAF"+
-        "\u7AB0\u7AB1\u7AB2\u7AB4\u7AB5\u7AB6\u7AB7\u7AB8"+
-        "\u7AB9\u7ABA\u7ABB\u7ABC\u7ABD\u7ABE\u7AC0\u7AC1"+
-        "\u7AC2\u7AC3\u7AC4\u7AC5\u7AC6\u7AC7\u7AC8\u7AC9"+
-        "\u7ACA\u7ACC\u7ACD\u7ACE\u7ACF\u7AD0\u7AD1\u7AD2"+
-        "\u7AD3\u7AD4\u7AD5\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC"+
-        "\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\u7AE8\u7AE9\u7AEA"+
-        "\u7AEB\u7AEC\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\uFFFD"+
-        "\u7AF4\u7AF5\u7AF6\u7AF7\u7AF8\u7AFB\u7AFC\u7AFE"+
-        "\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D"+
-        "\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A"+
-        "\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29"+
-        "\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A"+
-        "\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150"+
-        "\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C"+
-        "\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A"+
-        "\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6"+
-        "\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76"+
-        "\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38"+
-        "\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8"+
-        "\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5"+
-        "\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769"+
-        "\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404"+
-        "\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\u7B2F"+
-        "\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B"+
-        "\u7B3D\u7B3F\u7B40\u7B41\u7B42\u7B43\u7B44\u7B46"+
-        "\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59"+
-        "\u7B5C\u7B5E\u7B5F\u7B61\u7B63\u7B64\u7B65\u7B66"+
-        "\u7B67\u7B68\u7B69\u7B6A\u7B6B\u7B6C\u7B6D\u7B6F"+
-        "\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D"+
-        "\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\u7B87\u7B88"+
-        "\u7B89\u7B8A\u7B8B\u7B8C\u7B8E\u7B8F\uFFFD\u7B91"+
-        "\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E"+
-        "\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0"+
-        "\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\u7BBA\u7BBB"+
-        "\u7BBC\u7BBD\u7BBE\u7BBF\u7BC0\u7BC2\u7BC3\u7BC4"+
-        "\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A"+
-        "\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1"+
-        "\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2"+
-        "\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30"+
-        "\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37"+
-        "\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250"+
-        "\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173"+
-        "\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C"+
-        "\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845"+
-        "\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842"+
-        "\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505"+
-        "\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\u7BC5\u7BC8"+
-        "\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2"+
-        "\u7BD4\u7BD5\u7BD6\u7BD7\u7BD8\u7BDB\u7BDC\u7BDE"+
-        "\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9"+
-        "\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\u7BF3\u7BF4"+
-        "\u7BF5\u7BF6\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF"+
-        "\u7C00\u7C01\u7C02\u7C03\u7C04\u7C05\u7C06\u7C08"+
-        "\u7C09\u7C0A\u7C0D\u7C0E\u7C10\u7C11\u7C12\u7C13"+
-        "\u7C14\u7C15\u7C17\u7C18\u7C19\uFFFD\u7C1A\u7C1B"+
-        "\u7C1C\u7C1D\u7C1E\u7C20\u7C21\u7C22\u7C23\u7C24"+
-        "\u7C25\u7C28\u7C29\u7C2B\u7C2C\u7C2D\u7C2E\u7C2F"+
-        "\u7C30\u7C31\u7C32\u7C33\u7C34\u7C35\u7C36\u7C37"+
-        "\u7C39\u7C3A\u7C3B\u7C3C\u7C3D\u7C3E\u7C42\u9AB8"+
-        "\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8"+
-        "\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55"+
-        "\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57"+
-        "\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB"+
-        "\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377"+
-        "\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89"+
-        "\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F"+
-        "\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A"+
-        "\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A"+
-        "\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A"+
-        "\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B"+
-        "\u80E1\u8774\u72D0\u7CCA\u6E56\u7C43\u7C44\u7C45"+
-        "\u7C46\u7C47\u7C48\u7C49\u7C4A\u7C4B\u7C4C\u7C4E"+
-        "\u7C4F\u7C50\u7C51\u7C52\u7C53\u7C54\u7C55\u7C56"+
-        "\u7C57\u7C58\u7C59\u7C5A\u7C5B\u7C5C\u7C5D\u7C5E"+
-        "\u7C5F\u7C60\u7C61\u7C62\u7C63\u7C64\u7C65\u7C66"+
-        "\u7C67\u7C68\u7C69\u7C6A\u7C6B\u7C6C\u7C6D\u7C6E"+
-        "\u7C6F\u7C70\u7C71\u7C72\u7C75\u7C76\u7C77\u7C78"+
-        "\u7C79\u7C7A\u7C7E\u7C7F\u7C80\u7C81\u7C82\u7C83"+
-        "\u7C84\u7C85\u7C86\u7C87\uFFFD\u7C88\u7C8A\u7C8B"+
-        "\u7C8C\u7C8D\u7C8E\u7C8F\u7C90\u7C93\u7C94\u7C96"+
-        "\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7"+
-        "\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4"+
-        "\u7CB5\u7CB6\u7CB7\u7CB8\u7CBA\u7CBB\u5F27\u864E"+
-        "\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E"+
-        "\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A"+
-        "\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13"+
-        "\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6"+
-        "\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687"+
-        "\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070"+
-        "\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094"+
-        "\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9"+
-        "\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42"+
-        "\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216"+
-        "\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A"+
-        "\u7578\u7A3D\u79EF\u7B95\u7CBF\u7CC0\u7CC2\u7CC3"+
-        "\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\u7CCF\u7CD0\u7CD1"+
-        "\u7CD2\u7CD3\u7CD4\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE"+
-        "\u7CE1\u7CE2\u7CE3\u7CE4\u7CE5\u7CE6\u7CE7\u7CE9"+
-        "\u7CEA\u7CEB\u7CEC\u7CED\u7CEE\u7CF0\u7CF1\u7CF2"+
-        "\u7CF3\u7CF4\u7CF5\u7CF6\u7CF7\u7CF9\u7CFA\u7CFC"+
-        "\u7CFD\u7CFE\u7CFF\u7D00\u7D01\u7D02\u7D03\u7D04"+
-        "\u7D05\u7D06\u7D07\u7D08\u7D09\u7D0B\u7D0C\u7D0D"+
-        "\u7D0E\u7D0F\u7D10\uFFFD\u7D11\u7D12\u7D13\u7D14"+
-        "\u7D15\u7D16\u7D17\u7D18\u7D19\u7D1A\u7D1B\u7D1C"+
-        "\u7D1D\u7D1E\u7D1F\u7D21\u7D23\u7D24\u7D25\u7D26"+
-        "\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\u7D31"+
-        "\u7D32\u7D33\u7D34\u7D35\u7D36\u808C\u9965\u8FF9"+
-        "\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781"+
-        "\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72"+
-        "\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF"+
-        "\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E"+
-        "\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993"+
-        "\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0"+
-        "\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7"+
-        "\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A"+
-        "\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327"+
-        "\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED"+
-        "\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1"+
-        "\u952E\u7BAD\u4EF6\u7D37\u7D38\u7D39\u7D3A\u7D3B"+
-        "\u7D3C\u7D3D\u7D3E\u7D3F\u7D40\u7D41\u7D42\u7D43"+
-        "\u7D44\u7D45\u7D46\u7D47\u7D48\u7D49\u7D4A\u7D4B"+
-        "\u7D4C\u7D4D\u7D4E\u7D4F\u7D50\u7D51\u7D52\u7D53"+
-        "\u7D54\u7D55\u7D56\u7D57\u7D58\u7D59\u7D5A\u7D5B"+
-        "\u7D5C\u7D5D\u7D5E\u7D5F\u7D60\u7D61\u7D62\u7D63"+
-        "\u7D64\u7D65\u7D66\u7D67\u7D68\u7D69\u7D6A\u7D6B"+
-        "\u7D6C\u7D6D\u7D6F\u7D70\u7D71\u7D72\u7D73\u7D74"+
-        "\u7D75\u7D76\uFFFD\u7D78\u7D79\u7D7A\u7D7B\u7D7C"+
-        "\u7D7D\u7D7E\u7D7F\u7D80\u7D81\u7D82\u7D83\u7D84"+
-        "\u7D85\u7D86\u7D87\u7D88\u7D89\u7D8A\u7D8B\u7D8C"+
-        "\u7D8D\u7D8E\u7D8F\u7D90\u7D91\u7D92\u7D93\u7D94"+
-        "\u7D95\u7D96\u7D97\u7D98\u5065\u8230\u5251\u996F"+
-        "\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46"+
-        "\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171"+
-        "\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA"+
-        "\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5"+
-        "\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559"+
-        "\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686"+
-        "\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770"+
-        "\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212"+
-        "\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A"+
-        "\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27"+
-        "\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1"+
-        "\u70EC\u6D78\u7D99\u7D9A\u7D9B\u7D9C\u7D9D\u7D9E"+
-        "\u7D9F\u7DA0\u7DA1\u7DA2\u7DA3\u7DA4\u7DA5\u7DA7"+
-        "\u7DA8\u7DA9\u7DAA\u7DAB\u7DAC\u7DAD\u7DAF\u7DB0"+
-        "\u7DB1\u7DB2\u7DB3\u7DB4\u7DB5\u7DB6\u7DB7\u7DB8"+
-        "\u7DB9\u7DBA\u7DBB\u7DBC\u7DBD\u7DBE\u7DBF\u7DC0"+
-        "\u7DC1\u7DC2\u7DC3\u7DC4\u7DC5\u7DC6\u7DC7\u7DC8"+
-        "\u7DC9\u7DCA\u7DCB\u7DCC\u7DCD\u7DCE\u7DCF\u7DD0"+
-        "\u7DD1\u7DD2\u7DD3\u7DD4\u7DD5\u7DD6\u7DD7\u7DD8"+
-        "\u7DD9\uFFFD\u7DDA\u7DDB\u7DDC\u7DDD\u7DDE\u7DDF"+
-        "\u7DE0\u7DE1\u7DE2\u7DE3\u7DE4\u7DE5\u7DE6\u7DE7"+
-        "\u7DE8\u7DE9\u7DEA\u7DEB\u7DEC\u7DED\u7DEE\u7DEF"+
-        "\u7DF0\u7DF1\u7DF2\u7DF3\u7DF4\u7DF5\u7DF6\u7DF7"+
-        "\u7DF8\u7DF9\u7DFA\u5C3D\u52B2\u8346\u5162\u830E"+
-        "\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF"+
-        "\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C"+
-        "\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98"+
-        "\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D"+
-        "\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31"+
-        "\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA"+
-        "\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E"+
-        "\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7"+
-        "\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377"+
-        "\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9"+
-        "\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B"+
-        "\u5CFB\u7DFB\u7DFC\u7DFD\u7DFE\u7DFF\u7E00\u7E01"+
-        "\u7E02\u7E03\u7E04\u7E05\u7E06\u7E07\u7E08\u7E09"+
-        "\u7E0A\u7E0B\u7E0C\u7E0D\u7E0E\u7E0F\u7E10\u7E11"+
-        "\u7E12\u7E13\u7E14\u7E15\u7E16\u7E17\u7E18\u7E19"+
-        "\u7E1A\u7E1B\u7E1C\u7E1D\u7E1E\u7E1F\u7E20\u7E21"+
-        "\u7E22\u7E23\u7E24\u7E25\u7E26\u7E27\u7E28\u7E29"+
-        "\u7E2A\u7E2B\u7E2C\u7E2D\u7E2E\u7E2F\u7E30\u7E31"+
-        "\u7E32\u7E33\u7E34\u7E35\u7E36\u7E37\u7E38\u7E39"+
-        "\uFFFD\u7E3A\u7E3C\u7E3D\u7E3E\u7E3F\u7E40\u7E42"+
-        "\u7E43\u7E44\u7E45\u7E46\u7E48\u7E49\u7E4A\u7E4B"+
-        "\u7E4C\u7E4D\u7E4E\u7E4F\u7E50\u7E51\u7E52\u7E53"+
-        "\u7E54\u7E55\u7E56\u7E57\u7E58\u7E59\u7E5A\u7E5B"+
-        "\u7E5C\u7E5D\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580"+
-        "\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168"+
-        "\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177"+
-        "\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4"+
-        "\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1"+
-        "\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE"+
-        "\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050"+
-        "\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED"+
-        "\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E"+
-        "\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E"+
-        "\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5"+
-        "\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080";
-
-    private final static String innerIndex4=
-        "\u7E5E\u7E5F\u7E60\u7E61\u7E62\u7E63\u7E64\u7E65"+
-        "\u7E66\u7E67\u7E68\u7E69\u7E6A\u7E6B\u7E6C\u7E6D"+
-        "\u7E6E\u7E6F\u7E70\u7E71\u7E72\u7E73\u7E74\u7E75"+
-        "\u7E76\u7E77\u7E78\u7E79\u7E7A\u7E7B\u7E7C\u7E7D"+
-        "\u7E7E\u7E7F\u7E80\u7E81\u7E83\u7E84\u7E85\u7E86"+
-        "\u7E87\u7E88\u7E89\u7E8A\u7E8B\u7E8C\u7E8D\u7E8E"+
-        "\u7E8F\u7E90\u7E91\u7E92\u7E93\u7E94\u7E95\u7E96"+
-        "\u7E97\u7E98\u7E99\u7E9A\u7E9C\u7E9D\u7E9E\uFFFD"+
-        "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9"+
-        "\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\u7F3C\u7F3D"+
-        "\u7F3E\u7F3F\u7F40\u7F41\u7F43\u7F46\u7F47\u7F48"+
-        "\u7F49\u7F4A\u7F4B\u7F4C\u7F4D\u7F4E\u7F4F\u7F52"+
-        "\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0"+
-        "\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721"+
-        "\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A"+
-        "\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD"+
-        "\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC"+
-        "\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001"+
-        "\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7"+
-        "\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B"+
-        "\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281"+
-        "\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC"+
-        "\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389"+
-        "\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\u7F56"+
-        "\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\u7F64"+
-        "\u7F65\u7F66\u7F67\u7F6B\u7F6C\u7F6D\u7F6F\u7F70"+
-        "\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C"+
-        "\u7F7D\u7F7F\u7F80\u7F82\u7F83\u7F84\u7F85\u7F86"+
-        "\u7F87\u7F88\u7F89\u7F8B\u7F8D\u7F8F\u7F90\u7F91"+
-        "\u7F92\u7F93\u7F95\u7F96\u7F97\u7F98\u7F99\u7F9B"+
-        "\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\u7FA9"+
-        "\u7FAA\u7FAB\u7FAC\u7FAD\u7FAE\u7FB1\uFFFD\u7FB3"+
-        "\u7FB4\u7FB5\u7FB6\u7FB7\u7FBA\u7FBB\u7FBE\u7FC0"+
-        "\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB"+
-        "\u7FCD\u7FCF\u7FD0\u7FD1\u7FD2\u7FD3\u7FD6\u7FD7"+
-        "\u7FD9\u7FDA\u7FDB\u7FDC\u7FDD\u7FDE\u7FE2\u7FE3"+
-        "\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9"+
-        "\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F"+
-        "\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE"+
-        "\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E"+
-        "\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5"+
-        "\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217"+
-        "\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716"+
-        "\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE"+
-        "\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC"+
-        "\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409"+
-        "\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3"+
-        "\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\u7FE4\u7FE7"+
-        "\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4"+
-        "\u7FF5\u7FF6\u7FF7\u7FF8\u7FF9\u7FFA\u7FFD\u7FFE"+
-        "\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F"+
-        "\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021"+
-        "\u8023\u8024\u802B\u802C\u802D\u802E\u802F\u8030"+
-        "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041"+
-        "\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050"+
-        "\u8051\u8053\u8055\u8056\u8057\uFFFD\u8059\u805B"+
-        "\u805C\u805D\u805E\u805F\u8060\u8061\u8062\u8063"+
-        "\u8064\u8065\u8066\u8067\u8068\u806B\u806C\u806D"+
-        "\u806E\u806F\u8070\u8072\u8073\u8074\u8075\u8076"+
-        "\u8077\u8078\u8079\u807A\u807B\u807C\u807D\u9686"+
-        "\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F"+
-        "\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364"+
-        "\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F"+
-        "\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD"+
-        "\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B"+
-        "\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375"+
-        "\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6"+
-        "\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9"+
-        "\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB"+
-        "\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB"+
-        "\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE"+
-        "\u6EE1\u8513\u66FC\u6162\u6F2B\u807E\u8081\u8082"+
-        "\u8085\u8088\u808A\u808D\u808E\u808F\u8090\u8091"+
-        "\u8092\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6"+
-        "\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8"+
-        "\u80B9\u80BB\u80C5\u80C7\u80C8\u80C9\u80CA\u80CB"+
-        "\u80CF\u80D0\u80D1\u80D2\u80D3\u80D4\u80D5\u80D8"+
-        "\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7"+
-        "\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104"+
-        "\u8105\u8107\u8108\u810B\uFFFD\u810C\u8115\u8117"+
-        "\u8119\u811B\u811C\u811D\u811F\u8120\u8121\u8122"+
-        "\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812A"+
-        "\u812B\u812D\u812E\u8130\u8133\u8134\u8135\u8137"+
-        "\u8139\u813A\u813B\u813C\u813D\u813F\u8C29\u8292"+
-        "\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A"+
-        "\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C"+
-        "\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164"+
-        "\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0"+
-        "\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC"+
-        "\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761"+
-        "\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC"+
-        "\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D"+
-        "\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0"+
-        "\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF"+
-        "\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED"+
-        "\u540D\u547D\u8C2C\u6478\u8140\u8141\u8142\u8143"+
-        "\u8144\u8145\u8147\u8149\u814D\u814E\u814F\u8152"+
-        "\u8156\u8157\u8158\u815B\u815C\u815D\u815E\u815F"+
-        "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B"+
-        "\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178"+
-        "\u8181\u8183\u8184\u8185\u8186\u8187\u8189\u818B"+
-        "\u818C\u818D\u818E\u8190\u8192\u8193\u8194\u8195"+
-        "\u8196\u8197\u8199\u819A\u819E\u819F\u81A0\u81A1"+
-        "\u81A2\u81A4\u81A5\uFFFD\u81A7\u81A9\u81AB\u81AC"+
-        "\u81AD\u81AE\u81AF\u81B0\u81B1\u81B2\u81B4\u81B5"+
-        "\u81B6\u81B7\u81B8\u81B9\u81BC\u81BD\u81BE\u81BF"+
-        "\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\u81CE"+
-        "\u81CF\u81D0\u81D1\u81D2\u81D3\u6479\u8611\u6A21"+
-        "\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8"+
-        "\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0"+
-        "\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55"+
-        "\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF"+
-        "\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43"+
-        "\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320"+
-        "\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9"+
-        "\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60"+
-        "\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE"+
-        "\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F"+
-        "\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0"+
-        "\u72DE\u51DD\u5B81\u81D4\u81D5\u81D6\u81D7\u81D8"+
-        "\u81D9\u81DA\u81DB\u81DC\u81DD\u81DE\u81DF\u81E0"+
-        "\u81E1\u81E2\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB"+
-        "\u81EE\u81EF\u81F0\u81F1\u81F2\u81F5\u81F6\u81F7"+
-        "\u81F8\u81F9\u81FA\u81FD\u81FF\u8203\u8207\u8208"+
-        "\u8209\u820A\u820B\u820E\u820F\u8211\u8213\u8215"+
-        "\u8216\u8217\u8218\u8219\u821A\u821D\u8220\u8224"+
-        "\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C"+
-        "\u823D\u823F\uFFFD\u8240\u8241\u8242\u8243\u8245"+
-        "\u8246\u8248\u824A\u824C\u824D\u824E\u8250\u8251"+
-        "\u8252\u8253\u8254\u8255\u8256\u8257\u8259\u825B"+
-        "\u825C\u825D\u825E\u8260\u8261\u8262\u8263\u8264"+
-        "\u8265\u8266\u8267\u8269\u62E7\u6CDE\u725B\u626D"+
-        "\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA"+
-        "\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF"+
-        "\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076"+
-        "\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD"+
-        "\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8"+
-        "\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1"+
-        "\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1"+
-        "\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D"+
-        "\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E"+
-        "\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F"+
-        "\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288"+
-        "\u7435\u6BD7\u826A\u826B\u826C\u826D\u8271\u8275"+
-        "\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283"+
-        "\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294"+
-        "\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3"+
-        "\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF"+
-        "\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6"+
-        "\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA"+
-        "\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6"+
-        "\u82F8\uFFFD\u82FA\u82FC\u82FD\u82FE\u82FF\u8300"+
-        "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318"+
-        "\u8319\u831D\u831E\u831F\u8320\u8321\u8322\u8323"+
-        "\u8324\u8325\u8326\u8329\u832A\u832E\u8330\u8332"+
-        "\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339"+
-        "\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97"+
-        "\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891"+
-        "\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73"+
-        "\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46"+
-        "\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6"+
-        "\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E"+
-        "\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A"+
-        "\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB"+
-        "\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948"+
-        "\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951"+
-        "\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB"+
-        "\u6390\u833E\u833F\u8341\u8342\u8344\u8345\u8348"+
-        "\u834A\u834B\u834C\u834D\u834E\u8353\u8355\u8356"+
-        "\u8357\u8358\u8359\u835D\u8362\u8370\u8371\u8372"+
-        "\u8373\u8374\u8375\u8376\u8379\u837A\u837E\u837F"+
-        "\u8380\u8381\u8382\u8383\u8384\u8387\u8388\u838A"+
-        "\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395"+
-        "\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\u83A2"+
-        "\u83A3\u83A4\u83A5\u83A6\u83A7\u83AC\u83AD\u83AE"+
-        "\uFFFD\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3"+
-        "\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0"+
-        "\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB"+
-        "\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB"+
-        "\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5"+
-        "\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1"+
-        "\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C"+
-        "\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537"+
-        "\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7"+
-        "\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF"+
-        "\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5"+
-        "\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD"+
-        "\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE"+
-        "\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77"+
-        "\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5"+
-        "\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"+
-        "\u83EE\u83EF\u83F3\u83F4\u83F5\u83F6\u83F7\u83FA"+
-        "\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407"+
-        "\u8408\u8409\u840A\u8410\u8412\u8413\u8414\u8415"+
-        "\u8416\u8417\u8419\u841A\u841B\u841E\u841F\u8420"+
-        "\u8421\u8422\u8423\u8429\u842A\u842B\u842C\u842D"+
-        "\u842E\u842F\u8430\u8432\u8433\u8434\u8435\u8436"+
-        "\u8437\u8439\u843A\u843B\u843E\u843F\u8440\u8441"+
-        "\u8442\u8443\u8444\u8445\u8447\u8448\u8449\uFFFD"+
-        "\u844A\u844B\u844C\u844D\u844E\u844F\u8450\u8452"+
-        "\u8453\u8454\u8455\u8456\u8458\u845D\u845E\u845F"+
-        "\u8460\u8462\u8464\u8465\u8466\u8467\u8468\u846A"+
-        "\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B"+
-        "\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7"+
-        "\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238"+
-        "\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E"+
-        "\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4"+
-        "\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9"+
-        "\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4"+
-        "\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338"+
-        "\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197"+
-        "\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982"+
-        "\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A"+
-        "\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12"+
-        "\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\u847D"+
-        "\u847E\u847F\u8480\u8481\u8483\u8484\u8485\u8486"+
-        "\u848A\u848D\u848F\u8490\u8491\u8492\u8493\u8494"+
-        "\u8495\u8496\u8498\u849A\u849B\u849D\u849E\u849F"+
-        "\u84A0\u84A2\u84A3\u84A4\u84A5\u84A6\u84A7\u84A8"+
-        "\u84A9\u84AA\u84AB\u84AC\u84AD\u84AE\u84B0\u84B1"+
-        "\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0"+
-        "\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC"+
-        "\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\uFFFD\u84D8"+
-        "\u84D9\u84DA\u84DB\u84DC\u84DE\u84E1\u84E2\u84E4"+
-        "\u84E7\u84E8\u84E9\u84EA\u84EB\u84ED\u84EE\u84EF"+
-        "\u84F1\u84F2\u84F3\u84F4\u84F5\u84F6\u84F7\u84F8"+
-        "\u84F9\u84FA\u84FB\u84FD\u84FE\u8500\u8501\u8502"+
-        "\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B"+
-        "\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802"+
-        "\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B"+
-        "\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B"+
-        "\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247"+
-        "\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A"+
-        "\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6"+
-        "\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C"+
-        "\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE"+
-        "\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5"+
-        "\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17"+
-        "\u58F0\u751F\u7525\u7272\u5347\u7EF3\u8503\u8504"+
-        "\u8505\u8506\u8507\u8508\u8509\u850A\u850B\u850D"+
-        "\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518"+
-        "\u8519\u851B\u851C\u851D\u851E\u8520\u8522\u8523"+
-        "\u8524\u8525\u8526\u8527\u8528\u8529\u852A\u852D"+
-        "\u852E\u852F\u8530\u8531\u8532\u8533\u8534\u8535"+
-        "\u8536\u853E\u853F\u8540\u8541\u8542\u8544\u8545"+
-        "\u8546\u8547\u854B\u854C\u854D\u854E\u854F\u8550"+
-        "\u8551\u8552\u8553\u8554\u8555\uFFFD\u8557\u8558"+
-        "\u855A\u855B\u855C\u855D\u855F\u8560\u8561\u8562"+
-        "\u8563\u8565\u8566\u8567\u8569\u856A\u856B\u856C"+
-        "\u856D\u856E\u856F\u8570\u8571\u8573\u8575\u8576"+
-        "\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701"+
-        "\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD"+
-        "\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6"+
-        "\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F"+
-        "\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF"+
-        "\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C"+
-        "\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043"+
-        "\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF"+
-        "\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3"+
-        "\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66"+
-        "\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700"+
-        "\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D"+
-        "\u7AD6\u5885\u5EB6\u6570\u6F31\u8582\u8583\u8586"+
-        "\u8588\u8589\u858A\u858B\u858C\u858D\u858E\u8590"+
-        "\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598"+
-        "\u8599\u859A\u859D\u859E\u859F\u85A0\u85A1\u85A2"+
-        "\u85A3\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD"+
-        "\u85B1\u85B2\u85B3\u85B4\u85B5\u85B6\u85B8\u85BA"+
-        "\u85BB\u85BC\u85BD\u85BE\u85BF\u85C0\u85C2\u85C3"+
-        "\u85C4\u85C5\u85C6\u85C7\u85C8\u85CA\u85CB\u85CC"+
-        "\u85CD\u85CE\u85D1\u85D2\uFFFD\u85D4\u85D6\u85D7"+
-        "\u85D8\u85D9\u85DA\u85DB\u85DD\u85DE\u85DF\u85E0"+
-        "\u85E1\u85E2\u85E3\u85E5\u85E6\u85E7\u85E8\u85EA"+
-        "\u85EB\u85EC\u85ED\u85EE\u85EF\u85F0\u85F1\u85F2"+
-        "\u85F3\u85F4\u85F5\u85F6\u85F7\u85F8\u6055\u5237"+
-        "\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C"+
-        "\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC"+
-        "\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495"+
-        "\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA"+
-        "\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038"+
-        "\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258"+
-        "\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F"+
-        "\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C"+
-        "\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81"+
-        "\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1"+
-        "\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C"+
-        "\u4ED6\u5B83\u5979\u5854\u85F9\u85FA\u85FC\u85FD"+
-        "\u85FE\u8600\u8601\u8602\u8603\u8604\u8606\u8607"+
-        "\u8608\u8609\u860A\u860B\u860C\u860D\u860E\u860F"+
-        "\u8610\u8612\u8613\u8614\u8615\u8617\u8618\u8619"+
-        "\u861A\u861B\u861C\u861D\u861E\u861F\u8620\u8621"+
-        "\u8622\u8623\u8624\u8625\u8626\u8628\u862A\u862B"+
-        "\u862C\u862D\u862E\u862F\u8630\u8631\u8632\u8633"+
-        "\u8634\u8635\u8636\u8637\u8639\u863A\u863B\u863D"+
-        "\u863E\u863F\u8640\uFFFD\u8641\u8642\u8643\u8644"+
-        "\u8645\u8646\u8647\u8648\u8649\u864A\u864B\u864C"+
-        "\u8652\u8653\u8655\u8656\u8657\u8658\u8659\u865B"+
-        "\u865C\u865D\u865F\u8660\u8661\u8663\u8664\u8665"+
-        "\u8666\u8667\u8668\u8669\u866A\u736D\u631E\u8E4B"+
-        "\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A"+
-        "\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B"+
-        "\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892"+
-        "\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802"+
-        "\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F"+
-        "\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003"+
-        "\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC"+
-        "\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44"+
-        "\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49"+
-        "\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146"+
-        "\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16"+
-        "\u5385\u542C\u70C3\u866D\u866F\u8670\u8672\u8673"+
-        "\u8674\u8675\u8676\u8677\u8678\u8683\u8684\u8685"+
-        "\u8686\u8687\u8688\u8689\u868E\u868F\u8690\u8691"+
-        "\u8692\u8694\u8696\u8697\u8698\u8699\u869A\u869B"+
-        "\u869E\u869F\u86A0\u86A1\u86A2\u86A5\u86A6\u86AB"+
-        "\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB"+
-        "\u86BC\u86BD\u86BE\u86BF\u86C1\u86C2\u86C3\u86C5"+
-        "\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7"+
-        "\u86DA\u86DC\uFFFD\u86DD\u86E0\u86E1\u86E2\u86E3"+
-        "\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF"+
-        "\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF"+
-        "\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F"+
-        "\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD"+
-        "\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C"+
-        "\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB"+
-        "\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE"+
-        "\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D"+
-        "\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E"+
-        "\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E"+
-        "\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9"+
-        "\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F"+
-        "\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D"+
-        "\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A"+
-        "\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8"+
-        "\u5984\u5A01\u8719\u871B\u871D\u871F\u8720\u8724"+
-        "\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F"+
-        "\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A"+
-        "\u873C\u873D\u8740\u8741\u8742\u8743\u8744\u8745"+
-        "\u8746\u874A\u874B\u874D\u874F\u8750\u8751\u8752"+
-        "\u8754\u8755\u8756\u8758\u875A\u875B\u875C\u875D"+
-        "\u875E\u875F\u8761\u8762\u8766\u8767\u8768\u8769"+
-        "\u876A\u876B\u876C\u876D\u876F\u8771\u8772\u8773"+
-        "\u8775\uFFFD\u8777\u8778\u8779\u877A\u877F\u8780"+
-        "\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E"+
-        "\u878F\u8790\u8791\u8792\u8794\u8795\u8796\u8798"+
-        "\u8799\u879A\u879B\u879C\u879D\u879E\u87A0\u87A1"+
-        "\u87A2\u87A3\u87A4\u5DCD\u5FAE\u5371\u97E6\u8FDD"+
-        "\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7"+
-        "\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A"+
-        "\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13"+
-        "\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB"+
-        "\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE"+
-        "\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1"+
-        "\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B"+
-        "\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94"+
-        "\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE"+
-        "\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199"+
-        "\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521"+
-        "\u727A\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0"+
-        "\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB"+
-        "\u87BC\u87BE\u87BF\u87C1\u87C2\u87C3\u87C4\u87C5"+
-        "\u87C7\u87C8\u87C9\u87CC\u87CD\u87CE\u87CF\u87D0"+
-        "\u87D4\u87D5\u87D6\u87D7\u87D8\u87D9\u87DA\u87DC"+
-        "\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6"+
-        "\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\u87F0"+
-        "\u87F1\u87F2\u87F3\u87F4\u87F5\u87F6\u87F7\u87F8"+
-        "\uFFFD\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801"+
-        "\u8802\u8804\u8805\u8806\u8807\u8808\u8809\u880B"+
-        "\u880C\u880D\u880E\u880F\u8810\u8811\u8812\u8814"+
-        "\u8817\u8818\u8819\u881A\u881C\u881D\u881E\u881F"+
-        "\u8820\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915"+
-        "\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD"+
-        "\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699"+
-        "\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687"+
-        "\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380"+
-        "\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854"+
-        "\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0"+
-        "\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650"+
-        "\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58"+
-        "\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879"+
-        "\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704"+
-        "\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653";
-
-    private final static String innerIndex5=
-        "\u8824\u8825\u8826\u8827\u8828\u8829\u882A\u882B"+
-        "\u882C\u882D\u882E\u882F\u8830\u8831\u8833\u8834"+
-        "\u8835\u8836\u8837\u8838\u883A\u883B\u883D\u883E"+
-        "\u883F\u8841\u8842\u8843\u8846\u8847\u8848\u8849"+
-        "\u884A\u884B\u884E\u884F\u8850\u8851\u8852\u8853"+
-        "\u8855\u8856\u8858\u885A\u885B\u885C\u885D\u885E"+
-        "\u885F\u8860\u8866\u8867\u886A\u886D\u886F\u8871"+
-        "\u8873\u8874\u8875\u8876\u8878\u8879\u887A\uFFFD"+
-        "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A"+
-        "\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895"+
-        "\u8897\u8898\u8899\u889A\u889B\u889D\u889E\u889F"+
-        "\u88A0\u88A1\u88A3\u88A5\u88A6\u88A7\u88A8\u88A9"+
-        "\u88AA\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548"+
-        "\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A"+
-        "\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9"+
-        "\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C"+
-        "\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F"+
-        "\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2"+
-        "\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6"+
-        "\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E"+
-        "\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C"+
-        "\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157"+
-        "\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA"+
-        "\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\u88AC"+
-        "\u88AE\u88AF\u88B0\u88B2\u88B3\u88B4\u88B5\u88B6"+
-        "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0"+
-        "\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD"+
-        "\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\u88DB"+
-        "\u88DC\u88DD\u88DE\u88E0\u88E1\u88E6\u88E7\u88E9"+
-        "\u88EA\u88EB\u88EC\u88ED\u88EE\u88EF\u88F2\u88F5"+
-        "\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901"+
-        "\u8903\u8904\u8905\u8906\u8907\u8908\uFFFD\u8909"+
-        "\u890B\u890C\u890D\u890E\u890F\u8911\u8914\u8915"+
-        "\u8916\u8917\u8918\u891C\u891D\u891E\u891F\u8920"+
-        "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C"+
-        "\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937"+
-        "\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74"+
-        "\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB"+
-        "\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5"+
-        "\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259"+
-        "\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6"+
-        "\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814"+
-        "\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF"+
-        "\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5"+
-        "\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A"+
-        "\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F"+
-        "\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B"+
-        "\u6837\u6F3E\u9080\u8170\u5996\u7476\u8938\u8939"+
-        "\u893A\u893B\u893C\u893D\u893E\u893F\u8940\u8942"+
-        "\u8943\u8945\u8946\u8947\u8948\u8949\u894A\u894B"+
-        "\u894C\u894D\u894E\u894F\u8950\u8951\u8952\u8953"+
-        "\u8954\u8955\u8956\u8957\u8958\u8959\u895A\u895B"+
-        "\u895C\u895D\u8960\u8961\u8962\u8963\u8964\u8965"+
-        "\u8967\u8968\u8969\u896A\u896B\u896C\u896D\u896E"+
-        "\u896F\u8970\u8971\u8972\u8973\u8974\u8975\u8976"+
-        "\u8977\u8978\u8979\u897A\u897C\uFFFD\u897D\u897E"+
-        "\u8980\u8982\u8984\u8985\u8987\u8988\u8989\u898A"+
-        "\u898B\u898C\u898D\u898E\u898F\u8990\u8991\u8992"+
-        "\u8993\u8994\u8995\u8996\u8997\u8998\u8999\u899A"+
-        "\u899B\u899C\u899D\u899E\u899F\u89A0\u89A1\u6447"+
-        "\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F"+
-        "\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6"+
-        "\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C"+
-        "\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A"+
-        "\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591"+
-        "\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2"+
-        "\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79"+
-        "\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4"+
-        "\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE"+
-        "\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B"+
-        "\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB"+
-        "\u5BC5\u996E\u5C39\u5F15\u9690\u89A2\u89A3\u89A4"+
-        "\u89A5\u89A6\u89A7\u89A8\u89A9\u89AA\u89AB\u89AC"+
-        "\u89AD\u89AE\u89AF\u89B0\u89B1\u89B2\u89B3\u89B4"+
-        "\u89B5\u89B6\u89B7\u89B8\u89B9\u89BA\u89BB\u89BC"+
-        "\u89BD\u89BE\u89BF\u89C0\u89C3\u89CD\u89D3\u89D4"+
-        "\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0"+
-        "\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC"+
-        "\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\u89F5\u89F6"+
-        "\u89F7\u89F8\u89F9\u89FA\uFFFD\u89FB\u89FC\u89FD"+
-        "\u89FE\u89FF\u8A01\u8A02\u8A03\u8A04\u8A05\u8A06"+
-        "\u8A08\u8A09\u8A0A\u8A0B\u8A0C\u8A0D\u8A0E\u8A0F"+
-        "\u8A10\u8A11\u8A12\u8A13\u8A14\u8A15\u8A16\u8A17"+
-        "\u8A18\u8A19\u8A1A\u8A1B\u8A1C\u8A1D\u5370\u82F1"+
-        "\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425"+
-        "\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C"+
-        "\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD"+
-        "\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7"+
-        "\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE"+
-        "\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3"+
-        "\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E"+
-        "\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E"+
-        "\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8"+
-        "\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF"+
-        "\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108"+
-        "\u6B32\u72F1\u80B2\u8A89\u8A1E\u8A1F\u8A20\u8A21"+
-        "\u8A22\u8A23\u8A24\u8A25\u8A26\u8A27\u8A28\u8A29"+
-        "\u8A2A\u8A2B\u8A2C\u8A2D\u8A2E\u8A2F\u8A30\u8A31"+
-        "\u8A32\u8A33\u8A34\u8A35\u8A36\u8A37\u8A38\u8A39"+
-        "\u8A3A\u8A3B\u8A3C\u8A3D\u8A3F\u8A40\u8A41\u8A42"+
-        "\u8A43\u8A44\u8A45\u8A46\u8A47\u8A49\u8A4A\u8A4B"+
-        "\u8A4C\u8A4D\u8A4E\u8A4F\u8A50\u8A51\u8A52\u8A53"+
-        "\u8A54\u8A55\u8A56\u8A57\u8A58\u8A59\u8A5A\u8A5B"+
-        "\u8A5C\u8A5D\u8A5E\uFFFD\u8A5F\u8A60\u8A61\u8A62"+
-        "\u8A63\u8A64\u8A65\u8A66\u8A67\u8A68\u8A69\u8A6A"+
-        "\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70\u8A71\u8A72"+
-        "\u8A73\u8A74\u8A75\u8A76\u8A77\u8A78\u8A7A\u8A7B"+
-        "\u8A7C\u8A7D\u8A7E\u8A7F\u8A80\u6D74\u5BD3\u88D5"+
-        "\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3"+
-        "\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F"+
-        "\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0"+
-        "\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6"+
-        "\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0"+
-        "\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742"+
-        "\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1"+
-        "\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF"+
-        "\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A"+
-        "\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD"+
-        "\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3"+
-        "\u6E23\u672D\u8F67\u8A81\u8A82\u8A83\u8A84\u8A85"+
-        "\u8A86\u8A87\u8A88\u8A8B\u8A8C\u8A8D\u8A8E\u8A8F"+
-        "\u8A90\u8A91\u8A92\u8A94\u8A95\u8A96\u8A97\u8A98"+
-        "\u8A99\u8A9A\u8A9B\u8A9C\u8A9D\u8A9E\u8A9F\u8AA0"+
-        "\u8AA1\u8AA2\u8AA3\u8AA4\u8AA5\u8AA6\u8AA7\u8AA8"+
-        "\u8AA9\u8AAA\u8AAB\u8AAC\u8AAD\u8AAE\u8AAF\u8AB0"+
-        "\u8AB1\u8AB2\u8AB3\u8AB4\u8AB5\u8AB6\u8AB7\u8AB8"+
-        "\u8AB9\u8ABA\u8ABB\u8ABC\u8ABD\u8ABE\u8ABF\u8AC0"+
-        "\u8AC1\u8AC2\uFFFD\u8AC3\u8AC4\u8AC5\u8AC6\u8AC7"+
-        "\u8AC8\u8AC9\u8ACA\u8ACB\u8ACC\u8ACD\u8ACE\u8ACF"+
-        "\u8AD0\u8AD1\u8AD2\u8AD3\u8AD4\u8AD5\u8AD6\u8AD7"+
-        "\u8AD8\u8AD9\u8ADA\u8ADB\u8ADC\u8ADD\u8ADE\u8ADF"+
-        "\u8AE0\u8AE1\u8AE2\u8AE3\u94E1\u95F8\u7728\u6805"+
-        "\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85"+
-        "\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE"+
-        "\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360"+
-        "\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33"+
-        "\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7"+
-        "\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75"+
-        "\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2"+
-        "\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD"+
-        "\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6"+
-        "\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8"+
-        "\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF"+
-        "\u6B63\u653F\u8AE4\u8AE5\u8AE6\u8AE7\u8AE8\u8AE9"+
-        "\u8AEA\u8AEB\u8AEC\u8AED\u8AEE\u8AEF\u8AF0\u8AF1"+
-        "\u8AF2\u8AF3\u8AF4\u8AF5\u8AF6\u8AF7\u8AF8\u8AF9"+
-        "\u8AFA\u8AFB\u8AFC\u8AFD\u8AFE\u8AFF\u8B00\u8B01"+
-        "\u8B02\u8B03\u8B04\u8B05\u8B06\u8B08\u8B09\u8B0A"+
-        "\u8B0B\u8B0C\u8B0D\u8B0E\u8B0F\u8B10\u8B11\u8B12"+
-        "\u8B13\u8B14\u8B15\u8B16\u8B17\u8B18\u8B19\u8B1A"+
-        "\u8B1B\u8B1C\u8B1D\u8B1E\u8B1F\u8B20\u8B21\u8B22"+
-        "\u8B23\uFFFD\u8B24\u8B25\u8B27\u8B28\u8B29\u8B2A"+
-        "\u8B2B\u8B2C\u8B2D\u8B2E\u8B2F\u8B30\u8B31\u8B32"+
-        "\u8B33\u8B34\u8B35\u8B36\u8B37\u8B38\u8B39\u8B3A"+
-        "\u8B3B\u8B3C\u8B3D\u8B3E\u8B3F\u8B40\u8B41\u8B42"+
-        "\u8B43\u8B44\u8B45\u5E27\u75C7\u90D1\u8BC1\u829D"+
-        "\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41"+
-        "\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C"+
-        "\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8"+
-        "\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9"+
-        "\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE"+
-        "\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8"+
-        "\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE"+
-        "\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1"+
-        "\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A"+
-        "\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9"+
-        "\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8"+
-        "\u7B51\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C"+
-        "\u8B4D\u8B4E\u8B4F\u8B50\u8B51\u8B52\u8B53\u8B54"+
-        "\u8B55\u8B56\u8B57\u8B58\u8B59\u8B5A\u8B5B\u8B5C"+
-        "\u8B5D\u8B5E\u8B5F\u8B60\u8B61\u8B62\u8B63\u8B64"+
-        "\u8B65\u8B67\u8B68\u8B69\u8B6A\u8B6B\u8B6D\u8B6E"+
-        "\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75\u8B76"+
-        "\u8B77\u8B78\u8B79\u8B7A\u8B7B\u8B7C\u8B7D\u8B7E"+
-        "\u8B7F\u8B80\u8B81\u8B82\u8B83\u8B84\u8B85\u8B86"+
-        "\uFFFD\u8B87\u8B88\u8B89\u8B8A\u8B8B\u8B8C\u8B8D"+
-        "\u8B8E\u8B8F\u8B90\u8B91\u8B92\u8B93\u8B94\u8B95"+
-        "\u8B96\u8B97\u8B98\u8B99\u8B9A\u8B9B\u8B9C\u8B9D"+
-        "\u8B9E\u8B9F\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA"+
-        "\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A"+
-        "\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869"+
-        "\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525"+
-        "\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9"+
-        "\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C"+
-        "\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C"+
-        "\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57"+
-        "\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9"+
-        "\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956"+
-        "\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700"+
-        "\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A"+
-        "\u4F5C\u5750\u5EA7\uE810\uE811\uE812\uE813\uE814"+
-        "\u8C38\u8C39\u8C3A\u8C3B\u8C3C\u8C3D\u8C3E\u8C3F"+
-        "\u8C40\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B"+
-        "\u8C4D\u8C4E\u8C4F\u8C50\u8C51\u8C52\u8C53\u8C54"+
-        "\u8C56\u8C57\u8C58\u8C59\u8C5B\u8C5C\u8C5D\u8C5E"+
-        "\u8C5F\u8C60\u8C63\u8C64\u8C65\u8C66\u8C67\u8C68"+
-        "\u8C69\u8C6C\u8C6D\u8C6E\u8C6F\u8C70\u8C71\u8C72"+
-        "\u8C74\u8C75\u8C76\u8C77\u8C7B\u8C7C\u8C7D\u8C7E"+
-        "\u8C7F\u8C80\u8C81\u8C83\u8C84\u8C86\u8C87\uFFFD"+
-        "\u8C88\u8C8B\u8C8D\u8C8E\u8C8F\u8C90\u8C91\u8C92"+
-        "\u8C93\u8C95\u8C96\u8C97\u8C99\u8C9A\u8C9B\u8C9C"+
-        "\u8C9D\u8C9E\u8C9F\u8CA0\u8CA1\u8CA2\u8CA3\u8CA4"+
-        "\u8CA5\u8CA6\u8CA7\u8CA8\u8CA9\u8CAA\u8CAB\u8CAC"+
-        "\u8CAD\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15"+
-        "\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F"+
-        "\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4"+
-        "\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C"+
-        "\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D"+
-        "\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5"+
-        "\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208"+
-        "\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261"+
-        "\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182"+
-        "\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB"+
-        "\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27"+
-        "\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\u8CAE"+
-        "\u8CAF\u8CB0\u8CB1\u8CB2\u8CB3\u8CB4\u8CB5\u8CB6"+
-        "\u8CB7\u8CB8\u8CB9\u8CBA\u8CBB\u8CBC\u8CBD\u8CBE"+
-        "\u8CBF\u8CC0\u8CC1\u8CC2\u8CC3\u8CC4\u8CC5\u8CC6"+
-        "\u8CC7\u8CC8\u8CC9\u8CCA\u8CCB\u8CCC\u8CCD\u8CCE"+
-        "\u8CCF\u8CD0\u8CD1\u8CD2\u8CD3\u8CD4\u8CD5\u8CD6"+
-        "\u8CD7\u8CD8\u8CD9\u8CDA\u8CDB\u8CDC\u8CDD\u8CDE"+
-        "\u8CDF\u8CE0\u8CE1\u8CE2\u8CE3\u8CE4\u8CE5\u8CE6"+
-        "\u8CE7\u8CE8\u8CE9\u8CEA\u8CEB\u8CEC\uFFFD\u8CED"+
-        "\u8CEE\u8CEF\u8CF0\u8CF1\u8CF2\u8CF3\u8CF4\u8CF5"+
-        "\u8CF6\u8CF7\u8CF8\u8CF9\u8CFA\u8CFB\u8CFC\u8CFD"+
-        "\u8CFE\u8CFF\u8D00\u8D01\u8D02\u8D03\u8D04\u8D05"+
-        "\u8D06\u8D07\u8D08\u8D09\u8D0A\u8D0B\u8D0C\u8D0D"+
-        "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89"+
-        "\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94"+
-        "\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1"+
-        "\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E"+
-        "\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043"+
-        "\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9"+
-        "\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107"+
-        "\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46"+
-        "\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9"+
-        "\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156"+
-        "\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34"+
-        "\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\u8D0E\u8D0F"+
-        "\u8D10\u8D11\u8D12\u8D13\u8D14\u8D15\u8D16\u8D17"+
-        "\u8D18\u8D19\u8D1A\u8D1B\u8D1C\u8D20\u8D51\u8D52"+
-        "\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E"+
-        "\u8D6F\u8D71\u8D72\u8D78\u8D79\u8D7A\u8D7B\u8D7C"+
-        "\u8D7D\u8D7E\u8D7F\u8D80\u8D82\u8D83\u8D86\u8D87"+
-        "\u8D88\u8D89\u8D8C\u8D8D\u8D8E\u8D8F\u8D90\u8D92"+
-        "\u8D93\u8D95\u8D96\u8D97\u8D98\u8D99\u8D9A\u8D9B"+
-        "\u8D9C\u8D9D\u8D9E\u8DA0\u8DA1\uFFFD\u8DA2\u8DA4"+
-        "\u8DA5\u8DA6\u8DA7\u8DA8\u8DA9\u8DAA\u8DAB\u8DAC"+
-        "\u8DAD\u8DAE\u8DAF\u8DB0\u8DB2\u8DB6\u8DB7\u8DB9"+
-        "\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8"+
-        "\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7"+
-        "\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4"+
-        "\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2"+
-        "\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0"+
-        "\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9"+
-        "\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F"+
-        "\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18"+
-        "\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B"+
-        "\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A"+
-        "\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642"+
-        "\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688"+
-        "\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC"+
-        "\u90A1\u90B4\u90B3\u90B6\u90BA\u8DD5\u8DD8\u8DD9"+
-        "\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9"+
-        "\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC"+
-        "\u8DFE\u8DFF\u8E00\u8E01\u8E02\u8E03\u8E04\u8E06"+
-        "\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12"+
-        "\u8E13\u8E15\u8E16\u8E17\u8E18\u8E19\u8E1A\u8E1B"+
-        "\u8E1C\u8E20\u8E21\u8E24\u8E25\u8E26\u8E27\u8E28"+
-        "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37"+
-        "\u8E38\u8E3B\u8E3C\u8E3E\uFFFD\u8E3F\u8E43\u8E45"+
-        "\u8E46\u8E4C\u8E4D\u8E4E\u8E4F\u8E50\u8E53\u8E54"+
-        "\u8E55\u8E56\u8E57\u8E58\u8E5A\u8E5B\u8E5C\u8E5D"+
-        "\u8E5E\u8E5F\u8E60\u8E61\u8E62\u8E63\u8E64\u8E65"+
-        "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0"+
-        "\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6"+
-        "\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104"+
-        "\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146"+
-        "\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0"+
-        "\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC"+
-        "\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1"+
-        "\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733"+
-        "\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785"+
-        "\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773"+
-        "\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793"+
-        "\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4"+
-        "\u57EF\u57F8\u57E4\u57DD\u8E73\u8E75\u8E77\u8E78"+
-        "\u8E79\u8E7A\u8E7B\u8E7D\u8E7E\u8E80\u8E82\u8E83"+
-        "\u8E84\u8E86\u8E88\u8E89\u8E8A\u8E8B\u8E8C\u8E8D"+
-        "\u8E8E\u8E91\u8E92\u8E93\u8E95\u8E96\u8E97\u8E98"+
-        "\u8E99\u8E9A\u8E9B\u8E9D\u8E9F\u8EA0\u8EA1\u8EA2"+
-        "\u8EA3\u8EA4\u8EA5\u8EA6\u8EA7\u8EA8\u8EA9\u8EAA"+
-        "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\u8EB4\u8EB5\u8EB6"+
-        "\u8EB7\u8EB8\u8EB9\u8EBB\u8EBC\u8EBD\u8EBE\u8EBF"+
-        "\u8EC0\u8EC1\u8EC2\uFFFD\u8EC3\u8EC4\u8EC5\u8EC6"+
-        "\u8EC7\u8EC8\u8EC9\u8ECA\u8ECB\u8ECC\u8ECD\u8ECF"+
-        "\u8ED0\u8ED1\u8ED2\u8ED3\u8ED4\u8ED5\u8ED6\u8ED7"+
-        "\u8ED8\u8ED9\u8EDA\u8EDB\u8EDC\u8EDD\u8EDE\u8EDF"+
-        "\u8EE0\u8EE1\u8EE2\u8EE3\u8EE4\u580B\u580D\u57FD"+
-        "\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C"+
-        "\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279"+
-        "\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291"+
-        "\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA"+
-        "\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9"+
-        "\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1"+
-        "\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2"+
-        "\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314"+
-        "\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308"+
-        "\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F"+
-        "\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A"+
-        "\u8333\u8366\u8365\u8EE5\u8EE6\u8EE7\u8EE8\u8EE9"+
-        "\u8EEA\u8EEB\u8EEC\u8EED\u8EEE\u8EEF\u8EF0\u8EF1"+
-        "\u8EF2\u8EF3\u8EF4\u8EF5\u8EF6\u8EF7\u8EF8\u8EF9"+
-        "\u8EFA\u8EFB\u8EFC\u8EFD\u8EFE\u8EFF\u8F00\u8F01"+
-        "\u8F02\u8F03\u8F04\u8F05\u8F06\u8F07\u8F08\u8F09"+
-        "\u8F0A\u8F0B\u8F0C\u8F0D\u8F0E\u8F0F\u8F10\u8F11"+
-        "\u8F12\u8F13\u8F14\u8F15\u8F16\u8F17\u8F18\u8F19"+
-        "\u8F1A\u8F1B\u8F1C\u8F1D\u8F1E\u8F1F\u8F20\u8F21"+
-        "\u8F22\u8F23\uFFFD\u8F24\u8F25\u8F26\u8F27\u8F28"+
-        "\u8F29\u8F2A\u8F2B\u8F2C\u8F2D\u8F2E\u8F2F\u8F30"+
-        "\u8F31\u8F32\u8F33\u8F34\u8F35\u8F36\u8F37\u8F38"+
-        "\u8F39\u8F3A\u8F3B\u8F3C\u8F3D\u8F3E\u8F3F\u8F40"+
-        "\u8F41\u8F42\u8F43\u8F44\u8368\u831B\u8369\u836C"+
-        "\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0"+
-        "\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D"+
-        "\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1"+
-        "\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD"+
-        "\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F"+
-        "\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0"+
-        "\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488"+
-        "\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C"+
-        "\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD"+
-        "\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4"+
-        "\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539"+
-        "\u851F\u853A\u8F45\u8F46\u8F47\u8F48\u8F49\u8F4A"+
-        "\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50\u8F51\u8F52"+
-        "\u8F53\u8F54\u8F55\u8F56\u8F57\u8F58\u8F59\u8F5A"+
-        "\u8F5B\u8F5C\u8F5D\u8F5E\u8F5F\u8F60\u8F61\u8F62"+
-        "\u8F63\u8F64\u8F65\u8F6A\u8F80\u8F8C\u8F92\u8F9D"+
-        "\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA"+
-        "\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5"+
-        "\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3"+
-        "\u8FC6\uFFFD\u8FC9\u8FCA\u8FCB\u8FCC\u8FCD\u8FCF"+
-        "\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7"+
-        "\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA"+
-        "\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E"+
-        "\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559"+
-        "\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572"+
-        "\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C"+
-        "\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF"+
-        "\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C"+
-        "\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25"+
-        "\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA"+
-        "\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD"+
-        "\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A"+
-        "\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4"+
-        "\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B"+
-        "\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D"+
-        "\u6496\u9019\u901C\u9023\u9024\u9025\u9027\u9028"+
-        "\u9029\u902A\u902B\u902C\u9030\u9031\u9032\u9033"+
-        "\u9034\u9037\u9039\u903A\u903D\u903F\u9040\u9043"+
-        "\u9045\u9046\u9048\u9049\u904A\u904B\u904C\u904E"+
-        "\u9054\u9055\u9056\u9059\u905A\u905C\u905D\u905E"+
-        "\u905F\u9060\u9061\u9064\u9066\u9067\u9069\u906A"+
-        "\u906B\u906C\u906F\u9070\u9071\u9072\u9073\u9076"+
-        "\u9077\u9078\u9079\u907A\u907B\u907C\u907E\u9081"+
-        "\uFFFD\u9084\u9085\u9086\u9087\u9089\u908A\u908C"+
-        "\u908D\u908E\u908F\u9090\u9092\u9094\u9096\u9098"+
-        "\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7"+
-        "\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD"+
-        "\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0"+
-        "\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B"+
-        "\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8"+
-        "\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454"+
-        "\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482"+
-        "\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476"+
-        "\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7"+
-        "\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF"+
-        "\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD"+
-        "\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3"+
-        "\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F"+
-        "\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C";
-
-    private final static String innerIndex6=
-        "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD"+
-        "\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE"+
-        "\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC"+
-        "\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7"+
-        "\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103"+
-        "\u9105\u9106\u9107\u9108\u9109\u910A\u910B\u910C"+
-        "\u910D\u910E\u910F\u9110\u9111\u9112\u9113\u9114"+
-        "\u9115\u9116\u9117\u9118\u911A\u911B\u911C\uFFFD"+
-        "\u911D\u911F\u9120\u9121\u9124\u9125\u9126\u9127"+
-        "\u9128\u9129\u912A\u912B\u912C\u912D\u912E\u9130"+
-        "\u9132\u9133\u9134\u9135\u9136\u9137\u9138\u913A"+
-        "\u913B\u913C\u913D\u913E\u913F\u9140\u9141\u9142"+
-        "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530"+
-        "\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581"+
-        "\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE"+
-        "\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB"+
-        "\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2"+
-        "\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E"+
-        "\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627"+
-        "\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659"+
-        "\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B"+
-        "\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1"+
-        "\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C"+
-        "\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\u9145"+
-        "\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158"+
-        "\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168"+
-        "\u916B\u916D\u9173\u917A\u917B\u917C\u9180\u9181"+
-        "\u9182\u9183\u9184\u9186\u9188\u918A\u918E\u918F"+
-        "\u9193\u9194\u9195\u9196\u9197\u9198\u9199\u919C"+
-        "\u919D\u919E\u919F\u91A0\u91A1\u91A4\u91A5\u91A6"+
-        "\u91A7\u91A8\u91A9\u91AB\u91AC\u91B0\u91B1\u91B2"+
-        "\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\uFFFD\u91BC"+
-        "\u91BD\u91BE\u91BF\u91C0\u91C1\u91C2\u91C3\u91C4"+
-        "\u91C5\u91C6\u91C8\u91CB\u91D0\u91D2\u91D3\u91D4"+
-        "\u91D5\u91D6\u91D7\u91D8\u91D9\u91DA\u91DB\u91DD"+
-        "\u91DE\u91DF\u91E0\u91E1\u91E2\u91E3\u91E4\u91E5"+
-        "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A"+
-        "\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A"+
-        "\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3"+
-        "\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02"+
-        "\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B"+
-        "\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D"+
-        "\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D"+
-        "\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89"+
-        "\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC"+
-        "\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3"+
-        "\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2"+
-        "\u72F4\u72F7\u7301\u72F3\u7303\u72FA\u91E6\u91E7"+
-        "\u91E8\u91E9\u91EA\u91EB\u91EC\u91ED\u91EE\u91EF"+
-        "\u91F0\u91F1\u91F2\u91F3\u91F4\u91F5\u91F6\u91F7"+
-        "\u91F8\u91F9\u91FA\u91FB\u91FC\u91FD\u91FE\u91FF"+
-        "\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207"+
-        "\u9208\u9209\u920A\u920B\u920C\u920D\u920E\u920F"+
-        "\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217"+
-        "\u9218\u9219\u921A\u921B\u921C\u921D\u921E\u921F"+
-        "\u9220\u9221\u9222\u9223\u9224\uFFFD\u9225\u9226"+
-        "\u9227\u9228\u9229\u922A\u922B\u922C\u922D\u922E"+
-        "\u922F\u9230\u9231\u9232\u9233\u9234\u9235\u9236"+
-        "\u9237\u9238\u9239\u923A\u923B\u923C\u923D\u923E"+
-        "\u923F\u9240\u9241\u9242\u9243\u9244\u9245\u72FB"+
-        "\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322"+
-        "\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357"+
-        "\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924"+
-        "\u5902\u9963\u9967\u9968\u9969\u996A\u996B\u996C"+
-        "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D"+
-        "\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B"+
-        "\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53"+
-        "\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9"+
-        "\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE"+
-        "\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026"+
-        "\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021"+
-        "\u6078\u6079\u607B\u607A\u6042\u9246\u9247\u9248"+
-        "\u9249\u924A\u924B\u924C\u924D\u924E\u924F\u9250"+
-        "\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258"+
-        "\u9259\u925A\u925B\u925C\u925D\u925E\u925F\u9260"+
-        "\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268"+
-        "\u9269\u926A\u926B\u926C\u926D\u926E\u926F\u9270"+
-        "\u9271\u9272\u9273\u9275\u9276\u9277\u9278\u9279"+
-        "\u927A\u927B\u927C\u927D\u927E\u927F\u9280\u9281"+
-        "\u9282\u9283\u9284\u9285\uFFFD\u9286\u9287\u9288"+
-        "\u9289\u928A\u928B\u928C\u928D\u928F\u9290\u9291"+
-        "\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299"+
-        "\u929A\u929B\u929C\u929D\u929E\u929F\u92A0\u92A1"+
-        "\u92A2\u92A3\u92A4\u92A5\u92A6\u92A7\u606A\u607D"+
-        "\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B"+
-        "\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4"+
-        "\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B"+
-        "\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5"+
-        "\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6"+
-        "\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B"+
-        "\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619"+
-        "\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A"+
-        "\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74"+
-        "\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8"+
-        "\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE"+
-        "\u6CB1\u6CD3\u6CEF\u6CFE\u92A8\u92A9\u92AA\u92AB"+
-        "\u92AC\u92AD\u92AF\u92B0\u92B1\u92B2\u92B3\u92B4"+
-        "\u92B5\u92B6\u92B7\u92B8\u92B9\u92BA\u92BB\u92BC"+
-        "\u92BD\u92BE\u92BF\u92C0\u92C1\u92C2\u92C3\u92C4"+
-        "\u92C5\u92C6\u92C7\u92C9\u92CA\u92CB\u92CC\u92CD"+
-        "\u92CE\u92CF\u92D0\u92D1\u92D2\u92D3\u92D4\u92D5"+
-        "\u92D6\u92D7\u92D8\u92D9\u92DA\u92DB\u92DC\u92DD"+
-        "\u92DE\u92DF\u92E0\u92E1\u92E2\u92E3\u92E4\u92E5"+
-        "\u92E6\u92E7\u92E8\uFFFD\u92E9\u92EA\u92EB\u92EC"+
-        "\u92ED\u92EE\u92EF\u92F0\u92F1\u92F2\u92F3\u92F4"+
-        "\u92F5\u92F6\u92F7\u92F8\u92F9\u92FA\u92FB\u92FC"+
-        "\u92FD\u92FE\u92FF\u9300\u9301\u9302\u9303\u9304"+
-        "\u9305\u9306\u9307\u9308\u9309\u6D39\u6D27\u6D0C"+
-        "\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D"+
-        "\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91"+
-        "\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60"+
-        "\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF"+
-        "\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C"+
-        "\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86"+
-        "\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98"+
-        "\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7"+
-        "\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46"+
-        "\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74"+
-        "\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72"+
-        "\u6F7C\u6F7A\u6FD1\u930A\u930B\u930C\u930D\u930E"+
-        "\u930F\u9310\u9311\u9312\u9313\u9314\u9315\u9316"+
-        "\u9317\u9318\u9319\u931A\u931B\u931C\u931D\u931E"+
-        "\u931F\u9320\u9321\u9322\u9323\u9324\u9325\u9326"+
-        "\u9327\u9328\u9329\u932A\u932B\u932C\u932D\u932E"+
-        "\u932F\u9330\u9331\u9332\u9333\u9334\u9335\u9336"+
-        "\u9337\u9338\u9339\u933A\u933B\u933C\u933D\u933F"+
-        "\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347"+
-        "\u9348\u9349\uFFFD\u934A\u934B\u934C\u934D\u934E"+
-        "\u934F\u9350\u9351\u9352\u9353\u9354\u9355\u9356"+
-        "\u9357\u9358\u9359\u935A\u935B\u935C\u935D\u935E"+
-        "\u935F\u9360\u9361\u9362\u9363\u9364\u9365\u9366"+
-        "\u9367\u9368\u9369\u936B\u6FC9\u6FA7\u6FB9\u6FB6"+
-        "\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023"+
-        "\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95"+
-        "\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE"+
-        "\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5"+
-        "\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004"+
-        "\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036"+
-        "\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058"+
-        "\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083"+
-        "\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50"+
-        "\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D"+
-        "\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9"+
-        "\u59AA\u59A3\u936C\u936D\u936E\u936F\u9370\u9371"+
-        "\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379"+
-        "\u937A\u937B\u937C\u937D\u937E\u937F\u9380\u9381"+
-        "\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389"+
-        "\u938A\u938B\u938C\u938D\u938E\u9390\u9391\u9392"+
-        "\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939A"+
-        "\u939B\u939C\u939D\u939E\u939F\u93A0\u93A1\u93A2"+
-        "\u93A3\u93A4\u93A5\u93A6\u93A7\u93A8\u93A9\u93AA"+
-        "\u93AB\uFFFD\u93AC\u93AD\u93AE\u93AF\u93B0\u93B1"+
-        "\u93B2\u93B3\u93B4\u93B5\u93B6\u93B7\u93B8\u93B9"+
-        "\u93BA\u93BB\u93BC\u93BD\u93BE\u93BF\u93C0\u93C1"+
-        "\u93C2\u93C3\u93C4\u93C5\u93C6\u93C7\u93C8\u93C9"+
-        "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4"+
-        "\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD"+
-        "\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34"+
-        "\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C"+
-        "\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE"+
-        "\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1"+
-        "\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32"+
-        "\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51"+
-        "\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D"+
-        "\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93"+
-        "\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2"+
-        "\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8"+
-        "\u7EA9\u93CE\u93CF\u93D0\u93D1\u93D2\u93D3\u93D4"+
-        "\u93D5\u93D7\u93D8\u93D9\u93DA\u93DB\u93DC\u93DD"+
-        "\u93DE\u93DF\u93E0\u93E1\u93E2\u93E3\u93E4\u93E5"+
-        "\u93E6\u93E7\u93E8\u93E9\u93EA\u93EB\u93EC\u93ED"+
-        "\u93EE\u93EF\u93F0\u93F1\u93F2\u93F3\u93F4\u93F5"+
-        "\u93F6\u93F7\u93F8\u93F9\u93FA\u93FB\u93FC\u93FD"+
-        "\u93FE\u93FF\u9400\u9401\u9402\u9403\u9404\u9405"+
-        "\u9406\u9407\u9408\u9409\u940A\u940B\u940C\u940D"+
-        "\uFFFD\u940E\u940F\u9410\u9411\u9412\u9413\u9414"+
-        "\u9415\u9416\u9417\u9418\u9419\u941A\u941B\u941C"+
-        "\u941D\u941E\u941F\u9420\u9421\u9422\u9423\u9424"+
-        "\u9425\u9426\u9427\u9428\u9429\u942A\u942B\u942C"+
-        "\u942D\u942E\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2"+
-        "\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0"+
-        "\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D"+
-        "\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07"+
-        "\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19"+
-        "\u7F1C\u7F1B\u7F1F\u7F21\u7F22\u7F23\u7F24\u7F25"+
-        "\u7F26\u7F27\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\u7F30"+
-        "\u7F31\u7F32\u7F33\u7F35\u5E7A\u757F\u5DDB\u753E"+
-        "\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2"+
-        "\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9"+
-        "\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F"+
-        "\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"+
-        "\u942F\u9430\u9431\u9432\u9433\u9434\u9435\u9436"+
-        "\u9437\u9438\u9439\u943A\u943B\u943C\u943D\u943F"+
-        "\u9440\u9441\u9442\u9443\u9444\u9445\u9446\u9447"+
-        "\u9448\u9449\u944A\u944B\u944C\u944D\u944E\u944F"+
-        "\u9450\u9451\u9452\u9453\u9454\u9455\u9456\u9457"+
-        "\u9458\u9459\u945A\u945B\u945C\u945D\u945E\u945F"+
-        "\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u9467"+
-        "\u9468\u9469\u946A\u946C\u946D\u946E\u946F\uFFFD"+
-        "\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477"+
-        "\u9478\u9479\u947A\u947B\u947C\u947D\u947E\u947F"+
-        "\u9480\u9481\u9482\u9483\u9484\u9491\u9496\u9498"+
-        "\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C"+
-        "\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459"+
-        "\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487"+
-        "\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA"+
-        "\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769"+
-        "\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8"+
-        "\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8"+
-        "\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3"+
-        "\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD"+
-        "\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864"+
-        "\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E"+
-        "\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893"+
-        "\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\u9527"+
-        "\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560"+
-        "\u956E\u9574\u9575\u9577\u9578\u9579\u957A\u957B"+
-        "\u957C\u957D\u957E\u9580\u9581\u9582\u9583\u9584"+
-        "\u9585\u9586\u9587\u9588\u9589\u958A\u958B\u958C"+
-        "\u958D\u958E\u958F\u9590\u9591\u9592\u9593\u9594"+
-        "\u9595\u9596\u9597\u9598\u9599\u959A\u959B\u959C"+
-        "\u959D\u959E\u959F\u95A0\u95A1\u95A2\u95A3\u95A4"+
-        "\u95A5\u95A6\u95A7\u95A8\u95A9\u95AA\uFFFD\u95AB"+
-        "\u95AC\u95AD\u95AE\u95AF\u95B0\u95B1\u95B2\u95B3"+
-        "\u95B4\u95B5\u95B6\u95B7\u95B8\u95B9\u95BA\u95BB"+
-        "\u95BC\u95BD\u95BE\u95BF\u95C0\u95C1\u95C2\u95C3"+
-        "\u95C4\u95C5\u95C6\u95C7\u95C8\u95C9\u95CA\u95CB"+
-        "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971"+
-        "\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998"+
-        "\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966"+
-        "\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4"+
-        "\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF"+
-        "\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E"+
-        "\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28"+
-        "\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337"+
-        "\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D"+
-        "\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72"+
-        "\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C"+
-        "\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\u95CC\u95CD"+
-        "\u95CE\u95CF\u95D0\u95D1\u95D2\u95D3\u95D4\u95D5"+
-        "\u95D6\u95D7\u95D8\u95D9\u95DA\u95DB\u95DC\u95DD"+
-        "\u95DE\u95DF\u95E0\u95E1\u95E2\u95E3\u95E4\u95E5"+
-        "\u95E6\u95E7\u95EC\u95FF\u9607\u9613\u9618\u961B"+
-        "\u961E\u9620\u9623\u9624\u9625\u9626\u9627\u9628"+
-        "\u9629\u962B\u962C\u962D\u962F\u9630\u9637\u9638"+
-        "\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F"+
-        "\u9651\u9652\u9653\u9656\u9657\uFFFD\u9658\u9659"+
-        "\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666"+
-        "\u966B\u966D\u966E\u966F\u9670\u9671\u9673\u9678"+
-        "\u9679\u967A\u967B\u967C\u967D\u967E\u967F\u9680"+
-        "\u9681\u9682\u9683\u9684\u9687\u9689\u968A\u8F8D"+
-        "\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B"+
-        "\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF"+
-        "\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF"+
-        "\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085"+
-        "\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F"+
-        "\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684"+
-        "\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9"+
-        "\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46"+
-        "\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA"+
-        "\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F"+
-        "\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D"+
-        "\u728F\u7292\u6308\u6332\u63B0\u968C\u968E\u9691"+
-        "\u9692\u9693\u9695\u9696\u969A\u969B\u969D\u969E"+
-        "\u969F\u96A0\u96A1\u96A2\u96A3\u96A4\u96A5\u96A6"+
-        "\u96A8\u96A9\u96AA\u96AB\u96AC\u96AD\u96AE\u96AF"+
-        "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB"+
-        "\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1"+
-        "\u96D3\u96D4\u96D6\u96D7\u96D8\u96D9\u96DA\u96DB"+
-        "\u96DC\u96DD\u96DE\u96DF\u96E1\u96E2\u96E3\u96E4"+
-        "\u96E5\u96E6\u96E7\u96EB\uFFFD\u96EC\u96ED\u96EE"+
-        "\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB"+
-        "\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B"+
-        "\u970C\u9710\u9711\u9712\u9714\u9715\u9717\u9718"+
-        "\u9719\u971A\u971B\u971D\u971F\u9720\u643F\u64D8"+
-        "\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07"+
-        "\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29"+
-        "\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252"+
-        "\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC"+
-        "\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7"+
-        "\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD"+
-        "\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D"+
-        "\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E"+
-        "\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159"+
-        "\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167"+
-        "\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA"+
-        "\u81CC\u6726\u81CA\u81BB\u9721\u9722\u9723\u9724"+
-        "\u9725\u9726\u9727\u9728\u9729\u972B\u972C\u972E"+
-        "\u972F\u9731\u9733\u9734\u9735\u9736\u9737\u973A"+
-        "\u973B\u973C\u973D\u973F\u9740\u9741\u9742\u9743"+
-        "\u9744\u9745\u9746\u9747\u9748\u9749\u974A\u974B"+
-        "\u974C\u974D\u974E\u974F\u9750\u9751\u9754\u9755"+
-        "\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764"+
-        "\u9766\u9767\u9768\u976A\u976B\u976C\u976D\u976E"+
-        "\u976F\u9770\u9771\uFFFD\u9772\u9775\u9777\u9778"+
-        "\u9779\u977A\u977B\u977D\u977E\u977F\u9780\u9781"+
-        "\u9782\u9783\u9784\u9786\u9787\u9788\u9789\u978A"+
-        "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797"+
-        "\u9799\u979A\u979B\u979C\u979D\u81C1\u81A6\u6B24"+
-        "\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3"+
-        "\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590"+
-        "\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE"+
-        "\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0"+
-        "\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116"+
-        "\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A"+
-        "\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0"+
-        "\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166"+
-        "\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940"+
-        "\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957"+
-        "\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7"+
-        "\u79B3\u5FD1\u5FD0\u979E\u979F\u97A1\u97A2\u97A4"+
-        "\u97A5\u97A6\u97A7\u97A8\u97A9\u97AA\u97AC\u97AE"+
-        "\u97B0\u97B1\u97B3\u97B5\u97B6\u97B7\u97B8\u97B9"+
-        "\u97BA\u97BB\u97BC\u97BD\u97BE\u97BF\u97C0\u97C1"+
-        "\u97C2\u97C3\u97C4\u97C5\u97C6\u97C7\u97C8\u97C9"+
-        "\u97CA\u97CB\u97CC\u97CD\u97CE\u97CF\u97D0\u97D1"+
-        "\u97D2\u97D3\u97D4\u97D5\u97D6\u97D7\u97D8\u97D9"+
-        "\u97DA\u97DB\u97DC\u97DD\u97DE\u97DF\u97E0\u97E1"+
-        "\u97E2\u97E3\uFFFD\u97E4\u97E5\u97E8\u97EE\u97EF"+
-        "\u97F0\u97F1\u97F2\u97F4\u97F7\u97F8\u97F9\u97FA"+
-        "\u97FB\u97FC\u97FD\u97FE\u97FF\u9800\u9801\u9802"+
-        "\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u980A"+
-        "\u980B\u980C\u980D\u980E\u603C\u605D\u605A\u6067"+
-        "\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9"+
-        "\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6"+
-        "\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811"+
-        "\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F"+
-        "\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856"+
-        "\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893"+
-        "\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5"+
-        "\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913"+
-        "\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1"+
-        "\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719"+
-        "\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743"+
-        "\u775A\u7768\u980F\u9810\u9811\u9812\u9813\u9814"+
-        "\u9815\u9816\u9817\u9818\u9819\u981A\u981B\u981C"+
-        "\u981D\u981E\u981F\u9820\u9821\u9822\u9823\u9824"+
-        "\u9825\u9826\u9827\u9828\u9829\u982A\u982B\u982C"+
-        "\u982D\u982E\u982F\u9830\u9831\u9832\u9833\u9834"+
-        "\u9835\u9836\u9837\u9838\u9839\u983A\u983B\u983C"+
-        "\u983D\u983E\u983F\u9840\u9841\u9842\u9843\u9844"+
-        "\u9845\u9846\u9847\u9848\u9849\u984A\u984B\u984C"+
-        "\u984D\uFFFD\u984E\u984F\u9850\u9851\u9852\u9853"+
-        "\u9854\u9855\u9856\u9857\u9858\u9859\u985A\u985B"+
-        "\u985C\u985D\u985E\u985F\u9860\u9861\u9862\u9863"+
-        "\u9864\u9865\u9866\u9867\u9868\u9869\u986A\u986B"+
-        "\u986C\u986D\u986E\u7762\u7765\u777F\u778D\u777D"+
-        "\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD"+
-        "\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579"+
-        "\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71"+
-        "\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486"+
-        "\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494"+
-        "\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB"+
-        "\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6"+
-        "\u94B7\u94B8\u94B9\u94BA\u94BC\u94BD\u94BF\u94C4"+
-        "\u94C8\u94C9\u94CA\u94CB\u94CC\u94CD\u94CE\u94D0"+
-        "\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB"+
-        "\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8"+
-        "\u94EA\u986F\u9870\u9871\u9872\u9873\u9874\u988B"+
-        "\u988E\u9892\u9895\u9899\u98A3\u98A8\u98A9\u98AA"+
-        "\u98AB\u98AC\u98AD\u98AE\u98AF\u98B0\u98B1\u98B2"+
-        "\u98B3\u98B4\u98B5\u98B6\u98B7\u98B8\u98B9\u98BA"+
-        "\u98BB\u98BC\u98BD\u98BE\u98BF\u98C0\u98C1\u98C2"+
-        "\u98C3\u98C4\u98C5\u98C6\u98C7\u98C8\u98C9\u98CA"+
-        "\u98CB\u98CC\u98CD\u98CF\u98D0\u98D4\u98D6\u98D7"+
-        "\u98DB\u98DC\u98DD\u98E0\u98E1\u98E2\u98E3\u98E4"+
-        "\uFFFD\u98E5\u98E6\u98E9\u98EA\u98EB\u98EC\u98ED"+
-        "\u98EE\u98EF\u98F0\u98F1\u98F2\u98F3\u98F4\u98F5"+
-        "\u98F6\u98F7\u98F8\u98F9\u98FA\u98FB\u98FC\u98FD"+
-        "\u98FE\u98FF\u9900\u9901\u9902\u9903\u9904\u9905"+
-        "\u9906\u9907\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4"+
-        "\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502"+
-        "\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512"+
-        "\u9513\u9514\u9515\u9516\u9518\u951B\u951D\u951E"+
-        "\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532"+
-        "\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542"+
-        "\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F"+
-        "\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B"+
-        "\u955E\u955F\u955D\u9561\u9562\u9564\u9565\u9566"+
-        "\u9567\u9568\u9569\u956A\u956B\u956C\u956F\u9571"+
-        "\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED"+
-        "\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14";
-
-    private final static String innerIndex7=
-        "\u9908\u9909\u990A\u990B\u990C\u990E\u990F\u9911"+
-        "\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919"+
-        "\u991A\u991B\u991C\u991D\u991E\u991F\u9920\u9921"+
-        "\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929"+
-        "\u992A\u992B\u992C\u992D\u992F\u9930\u9931\u9932"+
-        "\u9933\u9934\u9935\u9936\u9937\u9938\u9939\u993A"+
-        "\u993B\u993C\u993D\u993E\u993F\u9940\u9941\u9942"+
-        "\u9943\u9944\u9945\u9946\u9947\u9948\u9949\uFFFD"+
-        "\u994A\u994B\u994C\u994D\u994E\u994F\u9950\u9951"+
-        "\u9952\u9953\u9956\u9957\u9958\u9959\u995A\u995B"+
-        "\u995C\u995D\u995E\u995F\u9960\u9961\u9962\u9964"+
-        "\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983"+
-        "\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688"+
-        "\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20"+
-        "\u9E22\u9E28\u9E29\u9E2A\u9E2B\u9E2C\u9E32\u9E31"+
-        "\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42"+
-        "\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E"+
-        "\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63"+
-        "\u9E66\u9E67\u9E68\u9E69\u9E6A\u9E6B\u9E6C\u9E71"+
-        "\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC"+
-        "\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3"+
-        "\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB"+
-        "\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605"+
-        "\u760C\u7617\u760A\u7625\u7618\u7615\u7619\u998C"+
-        "\u998E\u999A\u999B\u999C\u999D\u999E\u999F\u99A0"+
-        "\u99A1\u99A2\u99A3\u99A4\u99A6\u99A7\u99A9\u99AA"+
-        "\u99AB\u99AC\u99AD\u99AE\u99AF\u99B0\u99B1\u99B2"+
-        "\u99B3\u99B4\u99B5\u99B6\u99B7\u99B8\u99B9\u99BA"+
-        "\u99BB\u99BC\u99BD\u99BE\u99BF\u99C0\u99C1\u99C2"+
-        "\u99C3\u99C4\u99C5\u99C6\u99C7\u99C8\u99C9\u99CA"+
-        "\u99CB\u99CC\u99CD\u99CE\u99CF\u99D0\u99D1\u99D2"+
-        "\u99D3\u99D4\u99D5\u99D6\u99D7\u99D8\uFFFD\u99D9"+
-        "\u99DA\u99DB\u99DC\u99DD\u99DE\u99DF\u99E0\u99E1"+
-        "\u99E2\u99E3\u99E4\u99E5\u99E6\u99E7\u99E8\u99E9"+
-        "\u99EA\u99EB\u99EC\u99ED\u99EE\u99EF\u99F0\u99F1"+
-        "\u99F2\u99F3\u99F4\u99F5\u99F6\u99F7\u99F8\u99F9"+
-        "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F"+
-        "\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C"+
-        "\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80"+
-        "\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD"+
-        "\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2"+
-        "\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5"+
-        "\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919"+
-        "\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966"+
-        "\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014"+
-        "\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029"+
-        "\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052"+
-        "\u8069\u8071\u8983\u9878\u9880\u9883\u99FA\u99FB"+
-        "\u99FC\u99FD\u99FE\u99FF\u9A00\u9A01\u9A02\u9A03"+
-        "\u9A04\u9A05\u9A06\u9A07\u9A08\u9A09\u9A0A\u9A0B"+
-        "\u9A0C\u9A0D\u9A0E\u9A0F\u9A10\u9A11\u9A12\u9A13"+
-        "\u9A14\u9A15\u9A16\u9A17\u9A18\u9A19\u9A1A\u9A1B"+
-        "\u9A1C\u9A1D\u9A1E\u9A1F\u9A20\u9A21\u9A22\u9A23"+
-        "\u9A24\u9A25\u9A26\u9A27\u9A28\u9A29\u9A2A\u9A2B"+
-        "\u9A2C\u9A2D\u9A2E\u9A2F\u9A30\u9A31\u9A32\u9A33"+
-        "\u9A34\u9A35\u9A36\u9A37\u9A38\uFFFD\u9A39\u9A3A"+
-        "\u9A3B\u9A3C\u9A3D\u9A3E\u9A3F\u9A40\u9A41\u9A42"+
-        "\u9A43\u9A44\u9A45\u9A46\u9A47\u9A48\u9A49\u9A4A"+
-        "\u9A4B\u9A4C\u9A4D\u9A4E\u9A4F\u9A50\u9A51\u9A52"+
-        "\u9A53\u9A54\u9A55\u9A56\u9A57\u9A58\u9A59\u9889"+
-        "\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F"+
-        "\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E"+
-        "\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC"+
-        "\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4"+
-        "\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF"+
-        "\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713"+
-        "\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8"+
-        "\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725"+
-        "\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737"+
-        "\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770"+
-        "\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759"+
-        "\u8765\u8793\u87AF\u87A8\u87D2\u9A5A\u9A5B\u9A5C"+
-        "\u9A5D\u9A5E\u9A5F\u9A60\u9A61\u9A62\u9A63\u9A64"+
-        "\u9A65\u9A66\u9A67\u9A68\u9A69\u9A6A\u9A6B\u9A72"+
-        "\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6"+
-        "\u9AA9\u9AAA\u9AAB\u9AAC\u9AAD\u9AAE\u9AAF\u9AB2"+
-        "\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF"+
-        "\u9AC3\u9AC4\u9AC6\u9AC7\u9AC8\u9AC9\u9ACA\u9ACD"+
-        "\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7"+
-        "\u9AD9\u9ADA\u9ADB\u9ADC\uFFFD\u9ADD\u9ADE\u9AE0"+
-        "\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA"+
-        "\u9AEC\u9AEE\u9AF0\u9AF1\u9AF2\u9AF3\u9AF4\u9AF5"+
-        "\u9AF6\u9AF7\u9AF8\u9AFA\u9AFC\u9AFD\u9AFE\u9AFF"+
-        "\u9B00\u9B01\u9B02\u9B04\u9B05\u9B06\u87C6\u8788"+
-        "\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5"+
-        "\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB"+
-        "\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B"+
-        "\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210"+
-        "\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B"+
-        "\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20"+
-        "\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45"+
-        "\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72"+
-        "\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8"+
-        "\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1"+
-        "\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE"+
-        "\u7BFC\u7C0F\u7C16\u7C0B\u9B07\u9B09\u9B0A\u9B0B"+
-        "\u9B0C\u9B0D\u9B0E\u9B10\u9B11\u9B12\u9B14\u9B15"+
-        "\u9B16\u9B17\u9B18\u9B19\u9B1A\u9B1B\u9B1C\u9B1D"+
-        "\u9B1E\u9B20\u9B21\u9B22\u9B24\u9B25\u9B26\u9B27"+
-        "\u9B28\u9B29\u9B2A\u9B2B\u9B2C\u9B2D\u9B2E\u9B30"+
-        "\u9B31\u9B33\u9B34\u9B35\u9B36\u9B37\u9B38\u9B39"+
-        "\u9B3A\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B"+
-        "\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\u9B56\u9B57"+
-        "\u9B58\u9B59\u9B5A\uFFFD\u9B5B\u9B5C\u9B5D\u9B5E"+
-        "\u9B5F\u9B60\u9B61\u9B62\u9B63\u9B64\u9B65\u9B66"+
-        "\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D\u9B6E"+
-        "\u9B6F\u9B70\u9B71\u9B72\u9B73\u9B74\u9B75\u9B76"+
-        "\u9B77\u9B78\u9B79\u9B7A\u9B7B\u7C1F\u7C2A\u7C26"+
-        "\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC"+
-        "\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B"+
-        "\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B"+
-        "\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8"+
-        "\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2"+
-        "\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2"+
-        "\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5"+
-        "\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5"+
-        "\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6"+
-        "\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94"+
-        "\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150"+
-        "\u914E\u914F\u9164\u9B7C\u9B7D\u9B7E\u9B7F\u9B80"+
-        "\u9B81\u9B82\u9B83\u9B84\u9B85\u9B86\u9B87\u9B88"+
-        "\u9B89\u9B8A\u9B8B\u9B8C\u9B8D\u9B8E\u9B8F\u9B90"+
-        "\u9B91\u9B92\u9B93\u9B94\u9B95\u9B96\u9B97\u9B98"+
-        "\u9B99\u9B9A\u9B9B\u9B9C\u9B9D\u9B9E\u9B9F\u9BA0"+
-        "\u9BA1\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7\u9BA8"+
-        "\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF\u9BB0"+
-        "\u9BB1\u9BB2\u9BB3\u9BB4\u9BB5\u9BB6\u9BB7\u9BB8"+
-        "\u9BB9\u9BBA\uFFFD\u9BBB\u9BBC\u9BBD\u9BBE\u9BBF"+
-        "\u9BC0\u9BC1\u9BC2\u9BC3\u9BC4\u9BC5\u9BC6\u9BC7"+
-        "\u9BC8\u9BC9\u9BCA\u9BCB\u9BCC\u9BCD\u9BCE\u9BCF"+
-        "\u9BD0\u9BD1\u9BD2\u9BD3\u9BD4\u9BD5\u9BD6\u9BD7"+
-        "\u9BD8\u9BD9\u9BDA\u9BDB\u9162\u9161\u9170\u9169"+
-        "\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185"+
-        "\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE"+
-        "\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB"+
-        "\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4"+
-        "\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6"+
-        "\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09"+
-        "\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F"+
-        "\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41"+
-        "\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F"+
-        "\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78"+
-        "\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE"+
-        "\u89DA\u89DC\u9BDC\u9BDD\u9BDE\u9BDF\u9BE0\u9BE1"+
-        "\u9BE2\u9BE3\u9BE4\u9BE5\u9BE6\u9BE7\u9BE8\u9BE9"+
-        "\u9BEA\u9BEB\u9BEC\u9BED\u9BEE\u9BEF\u9BF0\u9BF1"+
-        "\u9BF2\u9BF3\u9BF4\u9BF5\u9BF6\u9BF7\u9BF8\u9BF9"+
-        "\u9BFA\u9BFB\u9BFC\u9BFD\u9BFE\u9BFF\u9C00\u9C01"+
-        "\u9C02\u9C03\u9C04\u9C05\u9C06\u9C07\u9C08\u9C09"+
-        "\u9C0A\u9C0B\u9C0C\u9C0D\u9C0E\u9C0F\u9C10\u9C11"+
-        "\u9C12\u9C13\u9C14\u9C15\u9C16\u9C17\u9C18\u9C19"+
-        "\u9C1A\uFFFD\u9C1B\u9C1C\u9C1D\u9C1E\u9C1F\u9C20"+
-        "\u9C21\u9C22\u9C23\u9C24\u9C25\u9C26\u9C27\u9C28"+
-        "\u9C29\u9C2A\u9C2B\u9C2C\u9C2D\u9C2E\u9C2F\u9C30"+
-        "\u9C31\u9C32\u9C33\u9C34\u9C35\u9C36\u9C37\u9C38"+
-        "\u9C39\u9C3A\u9C3B\u89E5\u89EB\u89EF\u8A3E\u8B26"+
-        "\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F"+
-        "\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85"+
-        "\u9F86\u9F87\u9F88\u9F89\u9F8A\u9F8C\u9EFE\u9F0B"+
-        "\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0"+
-        "\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E"+
-        "\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23"+
-        "\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A"+
-        "\u9C9B\u9C9E\u9C9F\u9CA0\u9CA1\u9CA2\u9CA3\u9CA5"+
-        "\u9CA6\u9CA7\u9CA8\u9CA9\u9CAB\u9CAD\u9CAE\u9CB0"+
-        "\u9CB1\u9CB2\u9CB3\u9CB4\u9CB5\u9CB6\u9CB7\u9CBA"+
-        "\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA"+
-        "\u9CCB\u9C3C\u9C3D\u9C3E\u9C3F\u9C40\u9C41\u9C42"+
-        "\u9C43\u9C44\u9C45\u9C46\u9C47\u9C48\u9C49\u9C4A"+
-        "\u9C4B\u9C4C\u9C4D\u9C4E\u9C4F\u9C50\u9C51\u9C52"+
-        "\u9C53\u9C54\u9C55\u9C56\u9C57\u9C58\u9C59\u9C5A"+
-        "\u9C5B\u9C5C\u9C5D\u9C5E\u9C5F\u9C60\u9C61\u9C62"+
-        "\u9C63\u9C64\u9C65\u9C66\u9C67\u9C68\u9C69\u9C6A"+
-        "\u9C6B\u9C6C\u9C6D\u9C6E\u9C6F\u9C70\u9C71\u9C72"+
-        "\u9C73\u9C74\u9C75\u9C76\u9C77\u9C78\u9C79\u9C7A"+
-        "\uFFFD\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89"+
-        "\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99"+
-        "\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\u9CBF\u9CC0"+
-        "\u9CC1\u9CC2\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB"+
-        "\u9CE0\u9CE1\u9CCC\u9CCD\u9CCE\u9CCF\u9CD0\u9CD3"+
-        "\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF"+
-        "\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB"+
-        "\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6"+
-        "\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC"+
-        "\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51"+
-        "\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6"+
-        "\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13"+
-        "\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88"+
-        "\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD"+
-        "\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF"+
-        "\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"+
-        "\u9CE3\u9CE4\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+
-        "\u9CEB\u9CEC\u9CED\u9CEE\u9CEF\u9CF0\u9CF1\u9CF2"+
-        "\u9CF3\u9CF4\u9CF5\u9CF6\u9CF7\u9CF8\u9CF9\u9CFA"+
-        "\u9CFB\u9CFC\u9CFD\u9CFE\u9CFF\u9D00\u9D01\u9D02"+
-        "\u9D03\u9D04\u9D05\u9D06\u9D07\u9D08\u9D09\u9D0A"+
-        "\u9D0B\u9D0C\u9D0D\u9D0E\u9D0F\u9D10\u9D11\u9D12"+
-        "\u9D13\u9D14\u9D15\u9D16\u9D17\u9D18\u9D19\u9D1A"+
-        "\u9D1B\u9D1C\u9D1D\u9D1E\u9D1F\u9D20\u9D21\uFFFD"+
-        "\u9D22\u9D23\u9D24\u9D25\u9D26\u9D27\u9D28\u9D29"+
-        "\u9D2A\u9D2B\u9D2C\u9D2D\u9D2E\u9D2F\u9D30\u9D31"+
-        "\u9D32\u9D33\u9D34\u9D35\u9D36\u9D37\u9D38\u9D39"+
-        "\u9D3A\u9D3B\u9D3C\u9D3D\u9D3E\u9D3F\u9D40\u9D41"+
-        "\u9D42\uE234\uE235\uE236\uE237\uE238\uE239\uE23A"+
-        "\uE23B\uE23C\uE23D\uE23E\uE23F\uE240\uE241\uE242"+
-        "\uE243\uE244\uE245\uE246\uE247\uE248\uE249\uE24A"+
-        "\uE24B\uE24C\uE24D\uE24E\uE24F\uE250\uE251\uE252"+
-        "\uE253\uE254\uE255\uE256\uE257\uE258\uE259\uE25A"+
-        "\uE25B\uE25C\uE25D\uE25E\uE25F\uE260\uE261\uE262"+
-        "\uE263\uE264\uE265\uE266\uE267\uE268\uE269\uE26A"+
-        "\uE26B\uE26C\uE26D\uE26E\uE26F\uE270\uE271\uE272"+
-        "\uE273\uE274\uE275\uE276\uE277\uE278\uE279\uE27A"+
-        "\uE27B\uE27C\uE27D\uE27E\uE27F\uE280\uE281\uE282"+
-        "\uE283\uE284\uE285\uE286\uE287\uE288\uE289\uE28A"+
-        "\uE28B\uE28C\uE28D\uE28E\uE28F\uE290\uE291\u9D43"+
-        "\u9D44\u9D45\u9D46\u9D47\u9D48\u9D49\u9D4A\u9D4B"+
-        "\u9D4C\u9D4D\u9D4E\u9D4F\u9D50\u9D51\u9D52\u9D53"+
-        "\u9D54\u9D55\u9D56\u9D57\u9D58\u9D59\u9D5A\u9D5B"+
-        "\u9D5C\u9D5D\u9D5E\u9D5F\u9D60\u9D61\u9D62\u9D63"+
-        "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+
-        "\u9D6C\u9D6D\u9D6E\u9D6F\u9D70\u9D71\u9D72\u9D73"+
-        "\u9D74\u9D75\u9D76\u9D77\u9D78\u9D79\u9D7A\u9D7B"+
-        "\u9D7C\u9D7D\u9D7E\u9D7F\u9D80\u9D81\uFFFD\u9D82"+
-        "\u9D83\u9D84\u9D85\u9D86\u9D87\u9D88\u9D89\u9D8A"+
-        "\u9D8B\u9D8C\u9D8D\u9D8E\u9D8F\u9D90\u9D91\u9D92"+
-        "\u9D93\u9D94\u9D95\u9D96\u9D97\u9D98\u9D99\u9D9A"+
-        "\u9D9B\u9D9C\u9D9D\u9D9E\u9D9F\u9DA0\u9DA1\u9DA2"+
-        "\uE292\uE293\uE294\uE295\uE296\uE297\uE298\uE299"+
-        "\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F\uE2A0\uE2A1"+
-        "\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7\uE2A8\uE2A9"+
-        "\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF\uE2B0\uE2B1"+
-        "\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7\uE2B8\uE2B9"+
-        "\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF\uE2C0\uE2C1"+
-        "\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7\uE2C8\uE2C9"+
-        "\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF\uE2D0\uE2D1"+
-        "\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7\uE2D8\uE2D9"+
-        "\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF\uE2E0\uE2E1"+
-        "\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7\uE2E8\uE2E9"+
-        "\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF\u9DA3\u9DA4"+
-        "\u9DA5\u9DA6\u9DA7\u9DA8\u9DA9\u9DAA\u9DAB\u9DAC"+
-        "\u9DAD\u9DAE\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4"+
-        "\u9DB5\u9DB6\u9DB7\u9DB8\u9DB9\u9DBA\u9DBB\u9DBC"+
-        "\u9DBD\u9DBE\u9DBF\u9DC0\u9DC1\u9DC2\u9DC3\u9DC4"+
-        "\u9DC5\u9DC6\u9DC7\u9DC8\u9DC9\u9DCA\u9DCB\u9DCC"+
-        "\u9DCD\u9DCE\u9DCF\u9DD0\u9DD1\u9DD2\u9DD3\u9DD4"+
-        "\u9DD5\u9DD6\u9DD7\u9DD8\u9DD9\u9DDA\u9DDB\u9DDC"+
-        "\u9DDD\u9DDE\u9DDF\u9DE0\u9DE1\uFFFD\u9DE2\u9DE3"+
-        "\u9DE4\u9DE5\u9DE6\u9DE7\u9DE8\u9DE9\u9DEA\u9DEB"+
-        "\u9DEC\u9DED\u9DEE\u9DEF\u9DF0\u9DF1\u9DF2\u9DF3"+
-        "\u9DF4\u9DF5\u9DF6\u9DF7\u9DF8\u9DF9\u9DFA\u9DFB"+
-        "\u9DFC\u9DFD\u9DFE\u9DFF\u9E00\u9E01\u9E02\uE2F0"+
-        "\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7\uE2F8"+
-        "\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE\uE2FF\uE300"+
-        "\uE301\uE302\uE303\uE304\uE305\uE306\uE307\uE308"+
-        "\uE309\uE30A\uE30B\uE30C\uE30D\uE30E\uE30F\uE310"+
-        "\uE311\uE312\uE313\uE314\uE315\uE316\uE317\uE318"+
-        "\uE319\uE31A\uE31B\uE31C\uE31D\uE31E\uE31F\uE320"+
-        "\uE321\uE322\uE323\uE324\uE325\uE326\uE327\uE328"+
-        "\uE329\uE32A\uE32B\uE32C\uE32D\uE32E\uE32F\uE330"+
-        "\uE331\uE332\uE333\uE334\uE335\uE336\uE337\uE338"+
-        "\uE339\uE33A\uE33B\uE33C\uE33D\uE33E\uE33F\uE340"+
-        "\uE341\uE342\uE343\uE344\uE345\uE346\uE347\uE348"+
-        "\uE349\uE34A\uE34B\uE34C\uE34D\u9E03\u9E04\u9E05"+
-        "\u9E06\u9E07\u9E08\u9E09\u9E0A\u9E0B\u9E0C\u9E0D"+
-        "\u9E0E\u9E0F\u9E10\u9E11\u9E12\u9E13\u9E14\u9E15"+
-        "\u9E16\u9E17\u9E18\u9E19\u9E1A\u9E1B\u9E1C\u9E1D"+
-        "\u9E1E\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C"+
-        "\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59"+
-        "\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F"+
-        "\u9E72\u9E74\u9E75\u9E76\u9E77\u9E78\u9E79\u9E7A"+
-        "\u9E7B\u9E7C\u9E7D\u9E80\uFFFD\u9E81\u9E83\u9E84"+
-        "\u9E85\u9E86\u9E89\u9E8A\u9E8C\u9E8D\u9E8E\u9E8F"+
-        "\u9E90\u9E91\u9E94\u9E95\u9E96\u9E97\u9E98\u9E99"+
-        "\u9E9A\u9E9B\u9E9C\u9E9E\u9EA0\u9EA1\u9EA2\u9EA3"+
-        "\u9EA4\u9EA5\u9EA7\u9EA8\u9EA9\u9EAA\uE34E\uE34F"+
-        "\uE350\uE351\uE352\uE353\uE354\uE355\uE356\uE357"+
-        "\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F"+
-        "\uE360\uE361\uE362\uE363\uE364\uE365\uE366\uE367"+
-        "\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E\uE36F"+
-        "\uE370\uE371\uE372\uE373\uE374\uE375\uE376\uE377"+
-        "\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE37F"+
-        "\uE380\uE381\uE382\uE383\uE384\uE385\uE386\uE387"+
-        "\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F"+
-        "\uE390\uE391\uE392\uE393\uE394\uE395\uE396\uE397"+
-        "\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F"+
-        "\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6\uE3A7"+
-        "\uE3A8\uE3A9\uE3AA\uE3AB\u9EAB\u9EAC\u9EAD\u9EAE"+
-        "\u9EAF\u9EB0\u9EB1\u9EB2\u9EB3\u9EB5\u9EB6\u9EB7"+
-        "\u9EB9\u9EBA\u9EBC\u9EBF\u9EC0\u9EC1\u9EC2\u9EC3"+
-        "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0"+
-        "\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE"+
-        "\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED"+
-        "\u9EEE\u9EF0\u9EF1\u9EF2\u9EF3\u9EF4\u9EF5\u9EF6"+
-        "\u9EF7\u9EF8\u9EFA\u9EFD\u9EFF\u9F00\u9F01\u9F02"+
-        "\u9F03\u9F04\u9F05\uFFFD\u9F06\u9F07\u9F08\u9F09"+
-        "\u9F0A\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16"+
-        "\u9F18\u9F1A\u9F1B\u9F1C\u9F1D\u9F1E\u9F1F\u9F21"+
-        "\u9F23\u9F24\u9F25\u9F26\u9F27\u9F28\u9F29\u9F2A"+
-        "\u9F2B\u9F2D\u9F2E\u9F30\u9F31\uE3AC\uE3AD\uE3AE"+
-        "\uE3AF\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6"+
-        "\uE3B7\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE"+
-        "\uE3BF\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6"+
-        "\uE3C7\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE"+
-        "\uE3CF\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6"+
-        "\uE3D7\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE"+
-        "\uE3DF\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6"+
-        "\uE3E7\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE"+
-        "\uE3EF\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6"+
-        "\uE3F7\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE"+
-        "\uE3FF\uE400\uE401\uE402\uE403\uE404\uE405\uE406"+
-        "\uE407\uE408\uE409\u9F32\u9F33\u9F34\u9F35\u9F36"+
-        "\u9F38\u9F3A\u9F3C\u9F3F\u9F40\u9F41\u9F42\u9F43"+
-        "\u9F45\u9F46\u9F47\u9F48\u9F49\u9F4A\u9F4B\u9F4C"+
-        "\u9F4D\u9F4E\u9F4F\u9F52\u9F53\u9F54\u9F55\u9F56"+
-        "\u9F57\u9F58\u9F59\u9F5A\u9F5B\u9F5C\u9F5D\u9F5E"+
-        "\u9F5F\u9F60\u9F61\u9F62\u9F63\u9F64\u9F65\u9F66"+
-        "\u9F67\u9F68\u9F69\u9F6A\u9F6B\u9F6C\u9F6D\u9F6E"+
-        "\u9F6F\u9F70\u9F71\u9F72\u9F73\u9F74\u9F75\u9F76"+
-        "\u9F77\u9F78\uFFFD\u9F79\u9F7A\u9F7B\u9F7C\u9F7D"+
-        "\u9F7E\u9F81\u9F82\u9F8D\u9F8E\u9F8F\u9F90\u9F91"+
-        "\u9F92\u9F93\u9F94\u9F95\u9F96\u9F97\u9F98\u9F9C"+
-        "\u9F9D\u9F9E\u9FA1\u9FA2\u9FA3\u9FA4\u9FA5\uF92C"+
-        "\uF979\uF995\uF9E7\uF9F1\uE40A\uE40B\uE40C\uE40D"+
-        "\uE40E\uE40F\uE410\uE411\uE412\uE413\uE414\uE415"+
-        "\uE416\uE417\uE418\uE419\uE41A\uE41B\uE41C\uE41D"+
-        "\uE41E\uE41F\uE420\uE421\uE422\uE423\uE424\uE425"+
-        "\uE426\uE427\uE428\uE429\uE42A\uE42B\uE42C\uE42D"+
-        "\uE42E\uE42F\uE430\uE431\uE432\uE433\uE434\uE435"+
-        "\uE436\uE437\uE438\uE439\uE43A\uE43B\uE43C\uE43D"+
-        "\uE43E\uE43F\uE440\uE441\uE442\uE443\uE444\uE445"+
-        "\uE446\uE447\uE448\uE449\uE44A\uE44B\uE44C\uE44D"+
-        "\uE44E\uE44F\uE450\uE451\uE452\uE453\uE454\uE455"+
-        "\uE456\uE457\uE458\uE459\uE45A\uE45B\uE45C\uE45D"+
-        "\uE45E\uE45F\uE460\uE461\uE462\uE463\uE464\uE465"+
-        "\uE466\uE467\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13"+
-        "\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27"+
-        "\uFA28\uFA29\u2E81\uE816\uE817\uE818\u2E84\u3473"+
-        "\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C"+
-        "\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0"+
-        "\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832"+
-        "\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7"+
-        "\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C"+
-        "\uE843\uFFFD\u4723\u4729\u477C\u478D\u2ECA\u4947"+
-        "\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B"+
-        "\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1"+
-        "\u4C77\u4CA2\u4D13\u4D14\u4D15\u4D16\u4D17\u4D18"+
-        "\u4D19\u4DAE\uE864\uE468\uE469\uE46A\uE46B\uE46C"+
-        "\uE46D\uE46E\uE46F\uE470\uE471\uE472\uE473\uE474"+
-        "\uE475\uE476\uE477\uE478\uE479\uE47A\uE47B\uE47C"+
-        "\uE47D\uE47E\uE47F\uE480\uE481\uE482\uE483\uE484"+
-        "\uE485\uE486\uE487\uE488\uE489\uE48A\uE48B\uE48C"+
-        "\uE48D\uE48E\uE48F\uE490\uE491\uE492\uE493\uE494"+
-        "\uE495\uE496\uE497\uE498\uE499\uE49A\uE49B\uE49C"+
-        "\uE49D\uE49E\uE49F\uE4A0\uE4A1\uE4A2\uE4A3\uE4A4"+
-        "\uE4A5\uE4A6\uE4A7\uE4A8\uE4A9\uE4AA\uE4AB\uE4AC"+
-        "\uE4AD\uE4AE\uE4AF\uE4B0\uE4B1\uE4B2\uE4B3\uE4B4"+
-        "\uE4B5\uE4B6\uE4B7\uE4B8\uE4B9\uE4BA\uE4BB\uE4BC"+
-        "\uE4BD\uE4BE\uE4BF\uE4C0\uE4C1\uE4C2\uE4C3\uE4C4"+
-        "\uE4C5";
-
-    final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
-        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
-        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
-        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-        96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
-        112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 0
-    };
-
-    static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5,
-        innerIndex6,
-        innerIndex7
-    };
-
-
-
-
-
-    private final static String innerEncoderIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007"+
-        "\u2008\u2009\u200A\u200B\u200C\u200D\u200E\u200F"+
-        "\u2010\u2011\u2012\u2013\u2014\u2015\u2016\u2017"+
-        "\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F"+
-        "\u2020\u2021\u2022\u2023\uA1E8\u2024\u2025\uA1EC"+
-        "\uA1A7\u2026\u2027\u2028\u2029\u202A\u202B\u202C"+
-        "\uA1E3\uA1C0\u202D\u202E\u202F\u2030\u2031\uA1A4"+
-        "\u2032\u2033\u2034\u2035\u2036\u2037\u2038\u2039"+
-        "\u203A\u203B\u203C\u203D\u203E\u203F\u2040\u2041"+
-        "\u2042\u2043\u2044\u2045\u2046\u2047\u2048\u2049"+
-        "\u204A\u204B\u204C\u204D\u204E\u204F\u2050\uA1C1"+
-        "\u2051\u2052\u2053\u2054\u2055\u2056\u2057\u2058"+
-        "\uA8A4\uA8A2\u2059\u205A\u205B\u205C\u205D\u205E"+
-        "\uA8A8\uA8A6\uA8BA\u205F\uA8AC\uA8AA\u2060\u2061"+
-        "\u2062\u2063\uA8B0\uA8AE\u2064\u2065\u2066\uA1C2"+
-        "\u2067\uA8B4\uA8B2\u2068\uA8B9\u2069\u206A\u206B"+
-        "\u206C\uA8A1\u206D\u206E\u206F\u2070\u2071\u2072"+
-        "\u2073\u2074\u2075\u2076\u2077\u2078\u2079\u207A"+
-        "\u207B\u207C\u207D\uA8A5\u207E\u207F\u2080\u2081"+
-        "\u2082\u2083\u2084\uA8A7\u2085\u2086\u2087\u2088"+
-        "\u2089\u208A\u208B\u208C\u208D\u208E\u208F\u2090"+
-        "\u2091\u2092\u2093\uA8A9\u2094\u2095\u2096\u2097"+
-        "\u2098\u2099\u209A\u209B\u209C\u209D\u209E\u209F"+
-        "\u20A0\u20A1\u20A2\u20A3\u20A4\u20A5\u20A6\u20A7"+
-        "\u20A8\u20A9\u20AA\u20AB\uA8BD\u20AC\u20AD\u20AE"+
-        "\uA8BE\u20AF\u20B0\u20B1\u20B2\uA8AD\u20B3\u20B4"+
-        "\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC"+
-        "\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4"+
-        "\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC"+
-        "\u20CD\u20CE\u20CF\uA8B1\u20D0\u20D1\u20D2\u20D3"+
-        "\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB"+
-        "\u20DC\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3"+
-        "\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB"+
-        "\u20EC\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2\u20F3"+
-        "\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA\u20FB"+
-        "\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102\u2103"+
-        "\u2104\u2105\u2106\u2107\u2108\u2109\u210A\u210B"+
-        "\u210C\u210D\u210E\u210F\u2110\u2111\u2112\u2113"+
-        "\u2114\u2115\u2116\u2117\u2118\u2119\u211A\u211B"+
-        "\u211C\u211D\u211E\u211F\u2120\u2121\u2122\u2123"+
-        "\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B"+
-        "\u212C\u212D\u212E\u212F\u2130\u2131\uA8A3\u2132"+
-        "\uA8AB\u2133\uA8AF\u2134\uA8B3\u2135\uA8B5\u2136"+
-        "\uA8B6\u2137\uA8B7\u2138\uA8B8\u2139\u213A\u213B"+
-        "\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143"+
-        "\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B"+
-        "\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153"+
-        "\u2154\uA8BF\u2155\u2156\u2157\u2158\u2159\u215A"+
-        "\u215B\u215C\u215D\u215E\u215F\u2160\u2161\u2162"+
-        "\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A"+
-        "\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172"+
-        "\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A"+
-        "\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182"+
-        "\u2183\u2184\u2185\u2186\u2187\u2188\u2189\u218A"+
-        "\u218B\u218C\u218D\u218E\u218F\u2190\u2191\u2192"+
-        "\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219A"+
-        "\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2"+
-        "\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA"+
-        "\u21AB\uA8BB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1"+
-        "\u21B2\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9"+
-        "\u21BA\uA8C0\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0"+
-        "\u21C1\u21C2\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8"+
-        "\u21C9\u21CA\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0"+
-        "\u21D1\u21D2\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8"+
-        "\u21D9\u21DA\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0"+
-        "\u21E1\u21E2\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8"+
-        "\u21E9\u21EA\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0"+
-        "\u21F1\u21F2\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8"+
-        "\u21F9\u21FA\u21FB\u21FC\u21FD\u21FE\u21FF\u2200"+
-        "\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208"+
-        "\u2209\u220A\u220B\u220C\u220D\u220E\u220F\u2210"+
-        "\u2211\u2212\u2213\u2214\u2215\u2216\u2217\u2218"+
-        "\u2219\u221A\u221B\u221C\u221D\u221E\u221F\uA1A6"+
-        "\u2220\uA1A5\uA840\uA841\u2221\u2222\u2223\u2224"+
-        "\u2225\u2226\u2227\u2228\u2229\u222A\u222B\u222C"+
-        "\u222D\uA842\u222E\u222F\u2230\u2231\u2232\u2233"+
-        "\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B"+
-        "\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243"+
-        "\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B"+
-        "\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253"+
-        "\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B"+
-        "\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263"+
-        "\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B"+
-        "\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273"+
-        "\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B"+
-        "\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283"+
-        "\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B"+
-        "\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293"+
-        "\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B"+
-        "\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3"+
-        "\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB"+
-        "\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3"+
-        "\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB"+
-        "\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2\u22C3"+
-        "\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB"+
-        "\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3"+
-        "\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB"+
-        "\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3"+
-        "\u22E4\uA6A1\uA6A2\uA6A3\uA6A4\uA6A5\uA6A6\uA6A7"+
-        "\uA6A8\uA6A9\uA6AA\uA6AB\uA6AC\uA6AD\uA6AE\uA6AF"+
-        "\uA6B0\uA6B1\u22E5\uA6B2\uA6B3\uA6B4\uA6B5\uA6B6"+
-        "\uA6B7\uA6B8\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB"+
-        "\u22EC\uA6C1\uA6C2\uA6C3\uA6C4\uA6C5\uA6C6\uA6C7"+
-        "\uA6C8\uA6C9\uA6CA\uA6CB\uA6CC\uA6CD\uA6CE\uA6CF"+
-        "\uA6D0\uA6D1\u22ED\uA6D2\uA6D3\uA6D4\uA6D5\uA6D6"+
-        "\uA6D7\uA6D8\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3"+
-        "\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB"+
-        "\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302\u2303"+
-        "\u2304\u2305\u2306\u2307\u2308\u2309\u230A\u230B"+
-        "\u230C\u230D\u230E\u230F\u2310\u2311\u2312\u2313"+
-        "\u2314\u2315\u2316\u2317\u2318\u2319\u231A\u231B"+
-        "\u231C\u231D\u231E\u231F\u2320\u2321\u2322\u2323"+
-        "\u2324\uA7A7\u2325\u2326\u2327\u2328\u2329\u232A"+
-        "\u232B\u232C\u232D\u232E\u232F\u2330\u2331\u2332"+
-        "\uA7A1\uA7A2\uA7A3\uA7A4\uA7A5\uA7A6\uA7A8\uA7A9"+
-        "\uA7AA\uA7AB\uA7AC\uA7AD\uA7AE\uA7AF\uA7B0\uA7B1"+
-        "\uA7B2\uA7B3\uA7B4\uA7B5\uA7B6\uA7B7\uA7B8\uA7B9"+
-        "\uA7BA\uA7BB\uA7BC\uA7BD\uA7BE\uA7BF\uA7C0\uA7C1"+
-        "\uA7D1\uA7D2\uA7D3\uA7D4\uA7D5\uA7D6\uA7D8\uA7D9"+
-        "\uA7DA\uA7DB\uA7DC\uA7DD\uA7DE\uA7DF\uA7E0\uA7E1"+
-        "\uA7E2\uA7E3\uA7E4\uA7E5\uA7E6\uA7E7\uA7E8\uA7E9"+
-        "\uA7EA\uA7EB\uA7EC\uA7ED\uA7EE\uA7EF\uA7F0\uA7F1"+
-        "\u2333\uA7D7\u2334\u2335\u2336\u2337\u2338\u2339"+
-        "\u233A\u233B\u233C\u233D\u233E\u233F\u2340\u2341"+
-        "\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349"+
-        "\u234A\u234B\u234C\u234D\u234E\u234F\u2350\u2351"+
-        "\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359"+
-        "\u235A\u235B\u235C\u235D\u235E\u235F\u2360\u2361"+
-        "\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369"+
-        "\u236A\u236B\u236C\u236D\u236E\u236F\u2370\u2371"+
-        "\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379"+
-        "\u237A\u237B\u237C\u237D\u237E\u237F\u2380\u2381"+
-        "\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389"+
-        "\u238A\u238B\u238C\u238D\u238E\u238F\u2390\u2391"+
-        "\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399"+
-        "\u239A\u239B\u239C\u239D\u239E\u239F\u23A0\u23A1"+
-        "\u23A2\u23A3\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9"+
-        "\u23AA\u23AB\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1"+
-        "\u23B2\u23B3\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9"+
-        "\u23BA\u23BB\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1"+
-        "\u23C2\u23C3\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9"+
-        "\u23CA\u23CB\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1"+
-        "\u23D2\u23D3\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9"+
-        "\u23DA\u23DB\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1"+
-        "\u23E2\u23E3\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9"+
-        "\u23EA\u23EB\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1"+
-        "\u23F2\u23F3\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9"+
-        "\u23FA\u23FB\u23FC\u23FD\u23FE\u23FF\u2400\u2401"+
-        "\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409"+
-        "\u240A\u240B\u240C\u240D\u240E\u240F\u2410\u2411"+
-        "\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419"+
-        "\u241A\u241B\u241C\u241D\u241E\u241F\u2420\u2421"+
-        "\u2422\u2423\u2424\u2425\u2426\u2427\u2428\u2429"+
-        "\u242A\u242B\u242C\u242D\u242E\u242F\u2430\u2431"+
-        "\u2432\u2433\u2434\u2435\u2436\u2437\u2438\u2439"+
-        "\u243A\u243B\u243C\u243D\u243E\u243F\u2440\u2441"+
-        "\u2442\u2443\u2444\u2445\u2446\u2447\u2448\u2449"+
-        "\u244A\u244B\u244C\u244D\u244E\u244F\u2450\u2451"+
-        "\u2452\u2453\u2454\u2455\u2456\u2457\u2458\u2459"+
-        "\u245A\u245B\u245C\u245D\u245E\u245F\u2460\u2461"+
-        "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469"+
-        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
-        "\u2472\u2473\u2474\u2475\u2476\u2477\u2478\u2479"+
-        "\u247A\u247B\u247C\u247D\u247E\u247F\u2480\u2481"+
-        "\u2482\u2483\u2484\u2485\u2486\u2487\u2488\u2489"+
-        "\u248A\u248B\u248C\u248D\u248E\u248F\u2490\u2491"+
-        "\u2492\u2493\u2494\u2495\u2496\u2497\u2498\u2499"+
-        "\u249A\u249B\u249C\u249D\u249E\u249F\u24A0\u24A1"+
-        "\u24A2\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9"+
-        "\u24AA\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1"+
-        "\u24B2\u24B3\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9"+
-        "\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1"+
-        "\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9"+
-        "\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1"+
-        "\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9"+
-        "\u24DA\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1"+
-        "\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9"+
-        "\u24EA\u24EB\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1"+
-        "\u24F2\u24F3\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9"+
-        "\u24FA\u24FB\u24FC\u24FD\u24FE\u24FF\u2500\u2501"+
-        "\u2502\u2503\u2504\u2505\u2506\u2507\u2508\u2509"+
-        "\u250A\u250B\u250C\u250D\u250E\u250F\u2510\u2511"+
-        "\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519"+
-        "\u251A\u251B\u251C\u251D\u251E\u251F\u2520\u2521"+
-        "\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529"+
-        "\u252A\u252B\u252C\u252D\u252E\u252F\u2530\u2531"+
-        "\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539"+
-        "\u253A\u253B\u253C\u253D\u253E\u253F\u2540\u2541"+
-        "\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549"+
-        "\u254A\u254B\u254C\u254D\u254E\u254F\u2550\u2551"+
-        "\u2552\u2553\u2554\u2555\u2556\u2557\u2558\u2559"+
-        "\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561"+
-        "\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569"+
-        "\u256A\u256B\u256C\u256D\u256E\u256F\u2570\u2571"+
-        "\u2572\u2573\u2574\u2575\u2576\u2577\u2578\u2579"+
-        "\u257A\u257B\u257C\u257D\u257E\u257F\u2580\u2581"+
-        "\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u2589"+
-        "\u258A\u258B\u258C\u258D\u258E\u258F\u2590\u2591"+
-        "\u2592\u2593\u2594\u2595\u2596\u2597\u2598\u2599"+
-        "\u259A\u259B\u259C\u259D\u259E\u259F\u25A0\u25A1"+
-        "\u25A2\u25A3\u25A4\u25A5\u25A6\u25A7\u25A8\u25A9"+
-        "\u25AA\u25AB\u25AC\u25AD\u25AE\u25AF\u25B0\u25B1"+
-        "\u25B2\u25B3\u25B4\u25B5\u25B6\u25B7\u25B8\u25B9"+
-        "\u25BA\u25BB\u25BC\u25BD\u25BE\u25BF\u25C0\u25C1"+
-        "\u25C2\u25C3\u25C4\u25C5\u25C6\u25C7\u25C8\u25C9"+
-        "\u25CA\u25CB\u25CC\u25CD\u25CE\u25CF\u25D0\u25D1"+
-        "\u25D2\u25D3\u25D4\u25D5\u25D6\u25D7\u25D8\u25D9"+
-        "\u25DA\u25DB\u25DC\u25DD\u25DE\u25DF\u25E0\u25E1"+
-        "\u25E2\u25E3\u25E4\u25E5\u25E6\u25E7\u25E8\u25E9"+
-        "\u25EA\u25EB\u25EC\u25ED\u25EE\u25EF\u25F0\u25F1"+
-        "\u25F2\u25F3\u25F4\u25F5\u25F6\u25F7\u25F8\u25F9"+
-        "\u25FA\u25FB\u25FC\u25FD\u25FE\u25FF\u2600\u2601"+
-        "\u2602\u2603\u2604\u2605\u2606\u2607\u2608\u2609"+
-        "\u260A\u260B\u260C\u260D\u260E\u260F\u2610\u2611"+
-        "\u2612\u2613\u2614\u2615\u2616\u2617\u2618\u2619"+
-        "\u261A\u261B\u261C\u261D\u261E\u261F\u2620\u2621"+
-        "\u2622\u2623\u2624\u2625\u2626\u2627\u2628\u2629"+
-        "\u262A\u262B\u262C\u262D\u262E\u262F\u2630\u2631"+
-        "\u2632\u2633\u2634\u2635\u2636\u2637\u2638\u2639"+
-        "\u263A\u263B\u263C\u263D\u263E\u263F\u2640\u2641"+
-        "\u2642\u2643\u2644\u2645\u2646\u2647\u2648\u2649"+
-        "\u264A\u264B\u264C\u264D\u264E\u264F\u2650\u2651"+
-        "\u2652\u2653\u2654\u2655\u2656\u2657\u2658\u2659"+
-        "\u265A\u265B\u265C\u265D\u265E\u265F\u2660\u2661"+
-        "\u2662\u2663\u2664\u2665\u2666\u2667\u2668\u2669"+
-        "\u266A\u266B\u266C\u266D\u266E\u266F\u2670\u2671"+
-        "\u2672\u2673\u2674\u2675\u2676\u2677\u2678\u2679"+
-        "\u267A\u267B\u267C\u267D\u267E\u267F\u2680\u2681"+
-        "\u2682\u2683\u2684\u2685\u2686\u2687\u2688\u2689"+
-        "\u268A\u268B\u268C\u268D\u268E\u268F\u2690\u2691"+
-        "\u2692\u2693\u2694\u2695\u2696\u2697\u2698\u2699"+
-        "\u269A\u269B\u269C\u269D\u269E\u269F\u26A0\u26A1"+
-        "\u26A2\u26A3\u26A4\u26A5\u26A6\u26A7\u26A8\u26A9"+
-        "\u26AA\u26AB\u26AC\u26AD\u26AE\u26AF\u26B0\u26B1"+
-        "\u26B2\u26B3\u26B4\u26B5\u26B6\u26B7\u26B8\u26B9"+
-        "\u26BA\u26BB\u26BC\u26BD\u26BE\u26BF\u26C0\u26C1"+
-        "\u26C2\u26C3\u26C4\u26C5\u26C6\u26C7\u26C8\u26C9"+
-        "\u26CA\u26CB\u26CC\u26CD\u26CE\u26CF\u26D0\u26D1"+
-        "\u26D2\u26D3\u26D4\u26D5\u26D6\u26D7\u26D8\u26D9"+
-        "\u26DA\u26DB\u26DC\u26DD\u26DE\u26DF\u26E0\u26E1"+
-        "\u26E2\u26E3\u26E4\u26E5\u26E6\u26E7\u26E8\u26E9"+
-        "\u26EA\u26EB\u26EC\u26ED\u26EE\u26EF\u26F0\u26F1"+
-        "\u26F2\u26F3\u26F4\u26F5\u26F6\u26F7\u26F8\u26F9"+
-        "\u26FA\u26FB\u26FC\u26FD\u26FE\u26FF\u2700\u2701"+
-        "\u2702\u2703\u2704\u2705\u2706\u2707\u2708\u2709"+
-        "\u270A\u270B\u270C\u270D\u270E\u270F\u2710\u2711"+
-        "\u2712\u2713\u2714\u2715\u2716\u2717\u2718\u2719"+
-        "\u271A\u271B\u271C\u271D\u271E\u271F\u2720\u2721"+
-        "\u2722\u2723\u2724\u2725\u2726\u2727\u2728\u2729"+
-        "\u272A\u272B\u272C\u272D\u272E\u272F\u2730\u2731"+
-        "\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739"+
-        "\u273A\u273B\u273C\u273D\u273E\u273F\u2740\u2741"+
-        "\u2742\u2743\u2744\u2745\u2746\u2747\u2748\u2749"+
-        "\u274A\u274B\u274C\u274D\u274E\u274F\u2750\u2751"+
-        "\u2752\u2753\u2754\u2755\u2756\u2757\u2758\u2759"+
-        "\u275A\u275B\u275C\u275D\u275E\u275F\u2760\u2761"+
-        "\u2762\u2763\u2764\u2765\u2766\u2767\u2768\u2769"+
-        "\u276A\u276B\u276C\u276D\u276E\u276F\u2770\u2771"+
-        "\u2772\u2773\u2774\u2775\u2776\u2777\u2778\u2779"+
-        "\u277A\u277B\u277C\u277D\u277E\u277F\u2780\u2781"+
-        "\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789"+
-        "\u278A\u278B\u278C\u278D\u278E\u278F\u2790\u2791"+
-        "\u2792\u2793\u2794\u2795\u2796\u2797\u2798\u2799"+
-        "\u279A\u279B\u279C\u279D\u279E\u279F\u27A0\u27A1"+
-        "\u27A2\u27A3\u27A4\u27A5\u27A6\u27A7\u27A8\u27A9"+
-        "\u27AA\u27AB\u27AC\u27AD\u27AE\u27AF\u27B0\u27B1"+
-        "\u27B2\u27B3\u27B4\u27B5\u27B6\u27B7\u27B8\u27B9"+
-        "\u27BA\u27BB\u27BC\u27BD\u27BE\u27BF\u27C0\u27C1"+
-        "\u27C2\u27C3\u27C4\u27C5\u27C6\u27C7\u27C8\u27C9"+
-        "\u27CA\u27CB\u27CC\u27CD\u27CE\u27CF\u27D0\u27D1"+
-        "\u27D2\u27D3\u27D4\u27D5\u27D6\u27D7\u27D8\u27D9"+
-        "\u27DA\u27DB\u27DC\u27DD\u27DE\u27DF\u27E0\u27E1"+
-        "\u27E2\u27E3\u27E4\u27E5\u27E6\u27E7\u27E8\u27E9"+
-        "\u27EA\u27EB\u27EC\u27ED\u27EE\u27EF\u27F0\u27F1"+
-        "\u27F2\u27F3\u27F4\u27F5\u27F6\u27F7\u27F8\u27F9"+
-        "\u27FA\u27FB\u27FC\u27FD\u27FE\u27FF\u2800\u2801"+
-        "\u2802\u2803\u2804\u2805\u2806\u2807\u2808\u2809"+
-        "\u280A\u280B\u280C\u280D\u280E\u280F\u2810\u2811"+
-        "\u2812\u2813\u2814\u2815\u2816\u2817\u2818\u2819"+
-        "\u281A\u281B\u281C\u281D\u281E\u281F\u2820\u2821"+
-        "\u2822\u2823\u2824\u2825\u2826\u2827\u2828\u2829"+
-        "\u282A\u282B\u282C\u282D\u282E\u282F\u2830\u2831"+
-        "\u2832\u2833\u2834\u2835\u2836\u2837\u2838\u2839"+
-        "\u283A\u283B\u283C\u283D\u283E\u283F\u2840\u2841"+
-        "\u2842\u2843\u2844\u2845\u2846\u2847\u2848\u2849"+
-        "\u284A\u284B\u284C\u284D\u284E\u284F\u2850\u2851"+
-        "\u2852\u2853\u2854\u2855\u2856\u2857\u2858\u2859"+
-        "\u285A\u285B\u285C\u285D\u285E\u285F\u2860\u2861"+
-        "\u2862\u2863\u2864\u2865\u2866\u2867\u2868\u2869"+
-        "\u286A\u286B\u286C\u286D\u286E\u286F\u2870\u2871"+
-        "\u2872\u2873\u2874\u2875\u2876\u2877\u2878\u2879"+
-        "\u287A\u287B\u287C\u287D\u287E\u287F\u2880\u2881"+
-        "\u2882\u2883\u2884\u2885\u2886\u2887\u2888\u2889"+
-        "\u288A\u288B\u288C\u288D\u288E\u288F\u2890\u2891"+
-        "\u2892\u2893\u2894\u2895\u2896\u2897\u2898\u2899"+
-        "\u289A\u289B\u289C\u289D\u289E\u289F\u28A0\u28A1"+
-        "\u28A2\u28A3\u28A4\u28A5\u28A6\u28A7\u28A8\u28A9"+
-        "\u28AA\u28AB\u28AC\u28AD\u28AE\u28AF\u28B0\u28B1"+
-        "\u28B2\u28B3\u28B4\u28B5\u28B6\u28B7\u28B8\u28B9"+
-        "\u28BA\u28BB\u28BC\u28BD\u28BE\u28BF\u28C0\u28C1"+
-        "\u28C2\u28C3\u28C4\u28C5\u28C6\u28C7\u28C8\u28C9"+
-        "\u28CA\u28CB\u28CC\u28CD\u28CE\u28CF\u28D0\u28D1"+
-        "\u28D2\u28D3\u28D4\u28D5\u28D6\u28D7\u28D8\u28D9"+
-        "\u28DA\u28DB\u28DC\u28DD\u28DE\u28DF\u28E0\u28E1"+
-        "\u28E2\u28E3\u28E4\u28E5\u28E6\u28E7\u28E8\u28E9"+
-        "\u28EA\u28EB\u28EC\u28ED\u28EE\u28EF\u28F0\u28F1"+
-        "\u28F2\u28F3\u28F4\u28F5\u28F6\u28F7\u28F8\u28F9"+
-        "\u28FA\u28FB\u28FC\u28FD\u28FE\u28FF\u2900\u2901"+
-        "\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909"+
-        "\u290A\u290B\u290C\u290D\u290E\u290F\u2910\u2911"+
-        "\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919"+
-        "\u291A\u291B\u291C\u291D\u291E\u291F\u2920\u2921"+
-        "\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929"+
-        "\u292A\u292B\u292C\u292D\u292E\u292F\u2930\u2931"+
-        "\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939"+
-        "\u293A\u293B\u293C\u293D\u293E\u293F\u2940\u2941"+
-        "\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949"+
-        "\u294A\u294B\u294C\u294D\u294E\u294F\u2950\u2951"+
-        "\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959"+
-        "\u295A\u295B\u295C\u295D\u295E\u295F\u2960\u2961"+
-        "\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969"+
-        "\u296A\u296B\u296C\u296D\u296E\u296F\u2970\u2971"+
-        "\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979"+
-        "\u297A\u297B\u297C\u297D\u297E\u297F\u2980\u2981"+
-        "\u2982\u2983\u2984\u2985\u2986\u2987\u2988\u2989"+
-        "\u298A\u298B\u298C\u298D\u298E\u298F\u2990\u2991"+
-        "\u2992\u2993\u2994\u2995\u2996\u2997\u2998\u2999"+
-        "\u299A\u299B\u299C\u299D\u299E\u299F\u29A0\u29A1"+
-        "\u29A2\u29A3\u29A4\u29A5\u29A6\u29A7\u29A8\u29A9"+
-        "\u29AA\u29AB\u29AC\u29AD\u29AE\u29AF\u29B0\u29B1"+
-        "\u29B2\u29B3\u29B4\u29B5\u29B6\u29B7\u29B8\u29B9"+
-        "\u29BA\u29BB\u29BC\u29BD\u29BE\u29BF\u29C0\u29C1"+
-        "\u29C2\u29C3\u29C4\u29C5\u29C6\u29C7\u29C8\u29C9"+
-        "\u29CA\u29CB\u29CC\u29CD\u29CE\u29CF\u29D0\u29D1"+
-        "\u29D2\u29D3\u29D4\u29D5\u29D6\u29D7\u29D8\u29D9"+
-        "\u29DA\u29DB\u29DC\u29DD\u29DE\u29DF\u29E0\u29E1"+
-        "\u29E2\u29E3\u29E4\u29E5\u29E6\u29E7\u29E8\u29E9"+
-        "\u29EA\u29EB\u29EC\u29ED\u29EE\u29EF\u29F0\u29F1"+
-        "\u29F2\u29F3\u29F4\u29F5\u29F6\u29F7\u29F8\u29F9"+
-        "\u29FA\u29FB\u29FC\u29FD\u29FE\u29FF\u2A00\u2A01"+
-        "\u2A02\u2A03\u2A04\u2A05\u2A06\u2A07\u2A08\u2A09"+
-        "\u2A0A\u2A0B\u2A0C\u2A0D\u2A0E\u2A0F\u2A10\u2A11"+
-        "\u2A12\u2A13\u2A14\u2A15\u2A16\u2A17\u2A18\u2A19"+
-        "\u2A1A\u2A1B\u2A1C\u2A1D\u2A1E\u2A1F\u2A20\u2A21"+
-        "\u2A22\u2A23\u2A24\u2A25\u2A26\u2A27\u2A28\u2A29"+
-        "\u2A2A\u2A2B\u2A2C\u2A2D\u2A2E\u2A2F\u2A30\u2A31"+
-        "\u2A32\u2A33\u2A34\u2A35\u2A36\u2A37\u2A38\u2A39"+
-        "\u2A3A\u2A3B\u2A3C\u2A3D\u2A3E\u2A3F\u2A40\u2A41"+
-        "\u2A42\u2A43\u2A44\u2A45\u2A46\u2A47\u2A48\u2A49"+
-        "\u2A4A\u2A4B\u2A4C\u2A4D\u2A4E\u2A4F\u2A50\u2A51"+
-        "\u2A52\u2A53\u2A54\u2A55\u2A56\u2A57\u2A58\u2A59"+
-        "\u2A5A\u2A5B\u2A5C\u2A5D\u2A5E\u2A5F\u2A60\u2A61"+
-        "\u2A62\u2A63\u2A64\u2A65\u2A66\u2A67\u2A68\u2A69"+
-        "\u2A6A\u2A6B\u2A6C\u2A6D\u2A6E\u2A6F\u2A70\u2A71"+
-        "\u2A72\u2A73\u2A74\u2A75\u2A76\u2A77\u2A78\u2A79"+
-        "\u2A7A\u2A7B\u2A7C\u2A7D\u2A7E\u2A7F\u2A80\u2A81"+
-        "\u2A82\u2A83\u2A84\u2A85\u2A86\u2A87\u2A88\u2A89"+
-        "\u2A8A\u2A8B\u2A8C\u2A8D\u2A8E\u2A8F\u2A90\u2A91"+
-        "\u2A92\u2A93\u2A94\u2A95\u2A96\u2A97\u2A98\u2A99"+
-        "\u2A9A\u2A9B\u2A9C\u2A9D\u2A9E\u2A9F\u2AA0\u2AA1"+
-        "\u2AA2\u2AA3\u2AA4\u2AA5\u2AA6\u2AA7\u2AA8\u2AA9"+
-        "\u2AAA\u2AAB\u2AAC\u2AAD\u2AAE\u2AAF\u2AB0\u2AB1"+
-        "\u2AB2\u2AB3\u2AB4\u2AB5\u2AB6\u2AB7\u2AB8\u2AB9"+
-        "\u2ABA\u2ABB\u2ABC\u2ABD\u2ABE\u2ABF\u2AC0\u2AC1"+
-        "\u2AC2\u2AC3\u2AC4\u2AC5\u2AC6\u2AC7\u2AC8\u2AC9"+
-        "\u2ACA\u2ACB\u2ACC\u2ACD\u2ACE\u2ACF\u2AD0\u2AD1"+
-        "\u2AD2\u2AD3\u2AD4\u2AD5\u2AD6\u2AD7\u2AD8\u2AD9"+
-        "\u2ADA\u2ADB\u2ADC\u2ADD\u2ADE\u2ADF\u2AE0\u2AE1"+
-        "\u2AE2\u2AE3\u2AE4\u2AE5\u2AE6\u2AE7\u2AE8\u2AE9"+
-        "\u2AEA\u2AEB\u2AEC\u2AED\u2AEE\u2AEF\u2AF0\u2AF1"+
-        "\u2AF2\u2AF3\u2AF4\u2AF5\u2AF6\u2AF7\u2AF8\u2AF9"+
-        "\u2AFA\u2AFB\u2AFC\u2AFD\u2AFE\u2AFF\u2B00\u2B01"+
-        "\u2B02\u2B03\u2B04\u2B05\u2B06\u2B07\u2B08\u2B09"+
-        "\u2B0A\u2B0B\u2B0C\u2B0D\u2B0E\u2B0F\u2B10\u2B11"+
-        "\u2B12\u2B13\u2B14\u2B15\u2B16\u2B17\u2B18\u2B19"+
-        "\u2B1A\u2B1B\u2B1C\u2B1D\u2B1E\u2B1F\u2B20\u2B21"+
-        "\u2B22\u2B23\u2B24\u2B25\u2B26\u2B27\u2B28\u2B29"+
-        "\u2B2A\u2B2B\u2B2C\u2B2D\u2B2E\u2B2F\u2B30\u2B31"+
-        "\u2B32\u2B33\u2B34\u2B35\u2B36\u2B37\u2B38\u2B39"+
-        "\u2B3A\u2B3B\u2B3C\u2B3D\u2B3E\u2B3F\u2B40\u2B41"+
-        "\u2B42\u2B43\u2B44\u2B45\u2B46\u2B47\u2B48\u2B49"+
-        "\u2B4A\u2B4B\u2B4C\u2B4D\u2B4E\u2B4F\u2B50\u2B51"+
-        "\u2B52\u2B53\u2B54\u2B55\u2B56\u2B57\u2B58\u2B59"+
-        "\u2B5A\u2B5B\u2B5C\u2B5D\u2B5E\u2B5F\u2B60\u2B61"+
-        "\u2B62\u2B63\u2B64\u2B65\u2B66\u2B67\u2B68\u2B69"+
-        "\u2B6A\u2B6B\u2B6C\u2B6D\u2B6E\u2B6F\u2B70\u2B71"+
-        "\u2B72\u2B73\u2B74\u2B75\u2B76\u2B77\u2B78\u2B79"+
-        "\u2B7A\u2B7B\u2B7C\u2B7D\u2B7E\u2B7F\u2B80\u2B81"+
-        "\u2B82\u2B83\u2B84\u2B85\u2B86\u2B87\u2B88\u2B89"+
-        "\u2B8A\u2B8B\u2B8C\u2B8D\u2B8E\u2B8F\u2B90\u2B91"+
-        "\u2B92\u2B93\u2B94\u2B95\u2B96\u2B97\u2B98\u2B99"+
-        "\u2B9A\u2B9B\u2B9C\u2B9D\u2B9E\u2B9F\u2BA0\u2BA1"+
-        "\u2BA2\u2BA3\u2BA4\u2BA5\u2BA6\u2BA7\u2BA8\u2BA9"+
-        "\u2BAA\u2BAB\u2BAC\u2BAD\u2BAE\u2BAF\u2BB0\u2BB1"+
-        "\u2BB2\u2BB3\u2BB4\u2BB5\u2BB6\u2BB7\u2BB8\u2BB9"+
-        "\u2BBA\u2BBB\u2BBC\u2BBD\u2BBE\u2BBF\u2BC0\u2BC1"+
-        "\u2BC2\u2BC3\u2BC4\u2BC5\u2BC6\u2BC7\u2BC8\u2BC9"+
-        "\u2BCA\u2BCB\u2BCC\u2BCD\u2BCE\u2BCF\u2BD0\u2BD1"+
-        "\u2BD2\u2BD3\u2BD4\u2BD5\u2BD6\u2BD7\u2BD8\u2BD9"+
-        "\u2BDA\u2BDB\u2BDC\u2BDD\u2BDE\u2BDF\u2BE0\u2BE1"+
-        "\u2BE2\u2BE3\u2BE4\u2BE5\u2BE6\u2BE7\u2BE8\u2BE9"+
-        "\u2BEA\u2BEB\u2BEC\u2BED\u2BEE\u2BEF\u2BF0\u2BF1"+
-        "\u2BF2\u2BF3\u2BF4\u2BF5\u2BF6\u2BF7\u2BF8\u2BF9"+
-        "\u2BFA\u2BFB\u2BFC\u2BFD\u2BFE\u2BFF\u2C00\u2C01"+
-        "\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09"+
-        "\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11"+
-        "\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19"+
-        "\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21"+
-        "\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29"+
-        "\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F\u2C30\u2C31"+
-        "\u2C32\u2C33\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39"+
-        "\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41"+
-        "\u2C42\u2C43\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49"+
-        "\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51"+
-        "\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59"+
-        "\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C60\u2C61"+
-        "\u2C62\u2C63\u2C64\u2C65\u2C66\u2C67\u2C68\u2C69"+
-        "\u2C6A\u2C6B\u2C6C\u2C6D\u2C6E\u2C6F\u2C70\u2C71"+
-        "\u2C72\u2C73\u2C74\u2C75\u2C76\u2C77\u2C78\u2C79"+
-        "\u2C7A\u2C7B\u2C7C\u2C7D\u2C7E\u2C7F\u2C80\u2C81"+
-        "\u2C82\u2C83\u2C84\u2C85\u2C86\u2C87\u2C88\u2C89"+
-        "\u2C8A\u2C8B\u2C8C\u2C8D\u2C8E\u2C8F\u2C90\u2C91"+
-        "\u2C92\u2C93\u2C94\u2C95\u2C96\u2C97\u2C98\u2C99"+
-        "\u2C9A\u2C9B\u2C9C\u2C9D\u2C9E\u2C9F\u2CA0\u2CA1"+
-        "\u2CA2\u2CA3\u2CA4\u2CA5\u2CA6\u2CA7\u2CA8\u2CA9"+
-        "\u2CAA\u2CAB\u2CAC\u2CAD\u2CAE\u2CAF\u2CB0\u2CB1"+
-        "\u2CB2\u2CB3\u2CB4\u2CB5\u2CB6\u2CB7\u2CB8\u2CB9"+
-        "\u2CBA\u2CBB\u2CBC\u2CBD\u2CBE\u2CBF\u2CC0\u2CC1"+
-        "\u2CC2\u2CC3\u2CC4\u2CC5\u2CC6\u2CC7\u2CC8\u2CC9"+
-        "\u2CCA\u2CCB\u2CCC\u2CCD\u2CCE\u2CCF\u2CD0\u2CD1"+
-        "\u2CD2\u2CD3\u2CD4\u2CD5\u2CD6\u2CD7\u2CD8\u2CD9"+
-        "\u2CDA\u2CDB\u2CDC\u2CDD\u2CDE\u2CDF\u2CE0\u2CE1"+
-        "\u2CE2\u2CE3\u2CE4\u2CE5\u2CE6\u2CE7\u2CE8\u2CE9"+
-        "\u2CEA\u2CEB\u2CEC\u2CED\u2CEE\u2CEF\u2CF0\u2CF1"+
-        "\u2CF2\u2CF3\u2CF4\u2CF5\u2CF6\u2CF7\u2CF8\u2CF9"+
-        "\u2CFA\u2CFB\u2CFC\u2CFD\u2CFE\u2CFF\u2D00\u2D01"+
-        "\u2D02\u2D03\u2D04\u2D05\u2D06\u2D07\u2D08\u2D09"+
-        "\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11"+
-        "\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18\u2D19"+
-        "\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21"+
-        "\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27\u2D28\u2D29"+
-        "\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F\u2D30\u2D31"+
-        "\u2D32\u2D33\u2D34\u2D35\u2D36\u2D37\u2D38\u2D39"+
-        "\u2D3A\u2D3B\u2D3C\u2D3D\u2D3E\u2D3F\u2D40\u2D41"+
-        "\u2D42\u2D43\u2D44\u2D45\u2D46\u2D47\u2D48\u2D49"+
-        "\u2D4A\u2D4B\u2D4C\u2D4D\u2D4E\u2D4F\u2D50\u2D51"+
-        "\u2D52\u2D53\u2D54\u2D55\u2D56\u2D57\u2D58\u2D59"+
-        "\u2D5A\u2D5B\u2D5C\u2D5D\u2D5E\u2D5F\u2D60\u2D61"+
-        "\u2D62\u2D63\u2D64\u2D65\u2D66\u2D67\u2D68\u2D69"+
-        "\u2D6A\u2D6B\u2D6C\u2D6D\u2D6E\u2D6F\u2D70\u2D71"+
-        "\u2D72\u2D73\u2D74\u2D75\u2D76\u2D77\u2D78\u2D79"+
-        "\u2D7A\u2D7B\u2D7C\u2D7D\u2D7E\u2D7F\u2D80\u2D81"+
-        "\u2D82\u2D83\u2D84\u2D85\u2D86\u2D87\u2D88\u2D89"+
-        "\u2D8A\u2D8B\u2D8C\u2D8D\u2D8E\u2D8F\u2D90\u2D91"+
-        "\u2D92\u2D93\u2D94\u2D95\u2D96\u2D97\u2D98\u2D99"+
-        "\u2D9A\u2D9B\u2D9C\u2D9D\u2D9E\u2D9F\u2DA0\u2DA1"+
-        "\u2DA2\u2DA3\u2DA4\u2DA5\u2DA6\u2DA7\u2DA8\u2DA9"+
-        "\u2DAA\u2DAB\u2DAC\u2DAD\u2DAE\u2DAF\u2DB0\u2DB1"+
-        "\u2DB2\u2DB3\u2DB4\u2DB5\u2DB6\u2DB7\u2DB8\u2DB9"+
-        "\u2DBA\u2DBB\u2DBC\u2DBD\u2DBE\u2DBF\u2DC0\u2DC1"+
-        "\u2DC2\u2DC3\u2DC4\u2DC5\u2DC6\u2DC7\u2DC8\u2DC9"+
-        "\u2DCA\u2DCB\u2DCC\u2DCD\u2DCE\u2DCF\u2DD0\u2DD1"+
-        "\u2DD2\u2DD3\u2DD4\u2DD5\u2DD6\u2DD7\u2DD8\u2DD9"+
-        "\u2DDA\u2DDB\u2DDC\u2DDD\u2DDE\u2DDF\u2DE0\u2DE1"+
-        "\u2DE2\u2DE3\u2DE4\u2DE5\u2DE6\u2DE7\u2DE8\u2DE9"+
-        "\u2DEA\u2DEB\u2DEC\u2DED\u2DEE\u2DEF\u2DF0\u2DF1"+
-        "\u2DF2\u2DF3\u2DF4\u2DF5\u2DF6\u2DF7\u2DF8\u2DF9"+
-        "\u2DFA\u2DFB\u2DFC\u2DFD\u2DFE\u2DFF\u2E00\u2E01"+
-        "\u2E02\u2E03\u2E04\u2E05\u2E06\u2E07\u2E08\u2E09"+
-        "\u2E0A\u2E0B\u2E0C\u2E0D\u2E0E\u2E0F\u2E10\u2E11"+
-        "\u2E12\u2E13\u2E14\u2E15\u2E16\u2E17\u2E18\u2E19"+
-        "\u2E1A\u2E1B\u2E1C\u2E1D\u2E1E\u2E1F\u2E20\u2E21"+
-        "\u2E22\u2E23\u2E24\u2E25\u2E26\u2E27\u2E28\u2E29"+
-        "\u2E2A\u2E2B\u2E2C\u2E2D\u2E2E\u2E2F\u2E30\u2E31"+
-        "\u2E32\u2E33\u2E34\u2E35\u2E36\u2E37\u2E38\u2E39"+
-        "\u2E3A\u2E3B\u2E3C\u2E3D\u2E3E\u2E3F\u2E40\u2E41"+
-        "\u2E42\u2E43\u2E44\u2E45\u2E46\u2E47\u2E48\u2E49"+
-        "\u2E4A\u2E4B\u2E4C\u2E4D\u2E4E\u2E4F\u2E50\u2E51"+
-        "\u2E52\u2E53\u2E54\u2E55\u2E56\u2E57\u2E58\u2E59"+
-        "\u2E5A\u2E5B\u2E5C\u2E5D\u2E5E\u2E5F\u2E60\u2E61"+
-        "\u2E62\u2E63\u2E64\u2E65\u2E66\u2E67\u2E68\u2E69"+
-        "\u2E6A\u2E6B\u2E6C\u2E6D\u2E6E\u2E6F\u2E70\u2E71"+
-        "\u2E72\u2E73\u2E74\u2E75\u2E76\u2E77\u2E78\u2E79"+
-        "\u2E7A\u2E7B\u2E7C\u2E7D\u2E7E\u2E7F\u2E80\u2E81"+
-        "\u2E82\u2E83\u2E84\u2E85\u2E86\u2E87\u2E88\u2E89"+
-        "\u2E8A\u2E8B\u2E8C\u2E8D\u2E8E\u2E8F\u2E90\u2E91"+
-        "\u2E92\u2E93\u2E94\u2E95\u2E96\u2E97\u2E98\u2E99"+
-        "\u2E9A\u2E9B\u2E9C\u2E9D\u2E9E\u2E9F\u2EA0\u2EA1"+
-        "\u2EA2\u2EA3\u2EA4\u2EA5\u2EA6\u2EA7\u2EA8\u2EA9"+
-        "\u2EAA\u2EAB\u2EAC\u2EAD\u2EAE\u2EAF\u2EB0\u2EB1"+
-        "\u2EB2\u2EB3\u2EB4\u2EB5\u2EB6\u2EB7\u2EB8\u2EB9"+
-        "\u2EBA\u2EBB\u2EBC\u2EBD\u2EBE\u2EBF\u2EC0\u2EC1"+
-        "\u2EC2\u2EC3\u2EC4\u2EC5\u2EC6\u2EC7\u2EC8\u2EC9"+
-        "\u2ECA\u2ECB\u2ECC\u2ECD\u2ECE\u2ECF\u2ED0\u2ED1"+
-        "\u2ED2\u2ED3\u2ED4\u2ED5\u2ED6\u2ED7\u2ED8\u2ED9"+
-        "\u2EDA\u2EDB\u2EDC\u2EDD\u2EDE\u2EDF\u2EE0\u2EE1";
-
-    private final static String innerEncoderIndex1=
-        "\u2EE2\u2EE3\u2EE4\u2EE5\u2EE6\u2EE7\u2EE8\u2EE9"+
-        "\u2EEA\u2EEB\u2EEC\u2EED\u2EEE\u2EEF\u2EF0\u2EF1"+
-        "\u2EF2\u2EF3\u2EF4\u2EF5\u2EF6\u2EF7\u2EF8\u2EF9"+
-        "\u2EFA\u2EFB\u2EFC\u2EFD\u2EFE\u2EFF\u2F00\u2F01"+
-        "\u2F02\u2F03\u2F04\u2F05\u2F06\u2F07\u2F08\u2F09"+
-        "\u2F0A\u2F0B\u2F0C\u2F0D\u2F0E\u2F0F\u2F10\u2F11"+
-        "\u2F12\u2F13\u2F14\u2F15\u2F16\u2F17\u2F18\u2F19"+
-        "\u2F1A\u2F1B\u2F1C\u2F1D\u2F1E\u2F1F\u2F20\u2F21"+
-        "\u2F22\u2F23\u2F24\u2F25\u2F26\u2F27\u2F28\u2F29"+
-        "\u2F2A\u2F2B\u2F2C\u2F2D\u2F2E\u2F2F\u2F30\u2F31"+
-        "\u2F32\u2F33\u2F34\u2F35\u2F36\u2F37\u2F38\u2F39"+
-        "\u2F3A\u2F3B\u2F3C\u2F3D\u2F3E\u2F3F\u2F40\u2F41"+
-        "\u2F42\u2F43\u2F44\u2F45\u2F46\u2F47\u2F48\u2F49"+
-        "\u2F4A\u2F4B\u2F4C\u2F4D\u2F4E\u2F4F\u2F50\u2F51"+
-        "\u2F52\u2F53\u2F54\u2F55\u2F56\u2F57\u2F58\u2F59"+
-        "\u2F5A\u2F5B\u2F5C\u2F5D\u2F5E\u2F5F\u2F60\u2F61"+
-        "\u2F62\u2F63\u2F64\u2F65\u2F66\u2F67\u2F68\u2F69"+
-        "\u2F6A\u2F6B\u2F6C\u2F6D\u2F6E\u2F6F\u2F70\u2F71"+
-        "\u2F72\u2F73\u2F74\u2F75\u2F76\u2F77\u2F78\u2F79"+
-        "\u2F7A\u2F7B\u2F7C\u2F7D\u2F7E\u2F7F\u2F80\u2F81"+
-        "\u2F82\u2F83\u2F84\u2F85\u2F86\u2F87\u2F88\u2F89"+
-        "\u2F8A\u2F8B\u2F8C\u2F8D\u2F8E\u2F8F\u2F90\u2F91"+
-        "\u2F92\u2F93\u2F94\u2F95\u2F96\u2F97\u2F98\u2F99"+
-        "\u2F9A\u2F9B\u2F9C\u2F9D\u2F9E\u2F9F\u2FA0\u2FA1"+
-        "\u2FA2\u2FA3\u2FA4\u2FA5\u2FA6\u2FA7\u2FA8\u2FA9"+
-        "\u2FAA\u2FAB\u2FAC\u2FAD\u2FAE\u2FAF\u2FB0\u2FB1"+
-        "\u2FB2\u2FB3\u2FB4\u2FB5\u2FB6\u2FB7\u2FB8\u2FB9"+
-        "\u2FBA\u2FBB\u2FBC\u2FBD\u2FBE\u2FBF\u2FC0\u2FC1"+
-        "\u2FC2\u2FC3\u2FC4\u2FC5\u2FC6\u2FC7\u2FC8\u2FC9"+
-        "\u2FCA\u2FCB\u2FCC\u2FCD\u2FCE\u2FCF\u2FD0\u2FD1"+
-        "\u2FD2\u2FD3\u2FD4\u2FD5\u2FD6\u2FD7\u2FD8\u2FD9"+
-        "\u2FDA\u2FDB\u2FDC\u2FDD\u2FDE\u2FDF\u2FE0\u2FE1"+
-        "\u2FE2\u2FE3\u2FE4\u2FE5\u2FE6\u2FE7\u2FE8\u2FE9"+
-        "\u2FEA\u2FEB\u2FEC\u2FED\u2FEE\u2FEF\u2FF0\u2FF1"+
-        "\u2FF2\u2FF3\u2FF4\u2FF5\u2FF6\u2FF7\u2FF8\u2FF9"+
-        "\u2FFA\u2FFB\u2FFC\u2FFD\u2FFE\u2FFF\u3000\u3001"+
-        "\u3002\u3003\u3004\u3005\u3006\u3007\u3008\u3009"+
-        "\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011"+
-        "\u3012\u3013\u3014\u3015\u3016\u3017\u3018\u3019"+
-        "\u301A\u301B\u301C\u301D\u301E\u301F\u3020\u3021"+
-        "\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029"+
-        "\u302A\u302B\u302C\u302D\u302E\u302F\u3030\u3031"+
-        "\u3032\u3033\u3034\u3035\u3036\u3037\u3038\u3039"+
-        "\u303A\u303B\u303C\u303D\u303E\u303F\u3040\u3041"+
-        "\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049"+
-        "\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051"+
-        "\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059"+
-        "\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061"+
-        "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069"+
-        "\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071"+
-        "\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079"+
-        "\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081"+
-        "\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089"+
-        "\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091"+
-        "\u3092\u3093\u3094\u3095\u3096\u3097\u3098\u3099"+
-        "\u309A\u309B\u309C\u309D\u309E\u309F\u30A0\u30A1"+
-        "\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9"+
-        "\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1"+
-        "\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9"+
-        "\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1"+
-        "\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9"+
-        "\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1"+
-        "\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9"+
-        "\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1"+
-        "\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9"+
-        "\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1"+
-        "\u30F2\u30F3\u30F4\u30F5\u30F6\u30F7\u30F8\u30F9"+
-        "\u30FA\u30FB\u30FC\u30FD\u30FE\u30FF\u3100\u3101"+
-        "\u3102\u3103\u3104\u3105\u3106\u3107\u3108\u3109"+
-        "\u310A\u310B\u310C\u310D\u310E\u310F\u3110\u3111"+
-        "\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119"+
-        "\u311A\u311B\u311C\u311D\u311E\u311F\u3120\u3121"+
-        "\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129"+
-        "\u312A\u312B\u312C\u312D\u312E\u312F\u3130\u3131"+
-        "\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139"+
-        "\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141"+
-        "\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149"+
-        "\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151"+
-        "\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159"+
-        "\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161"+
-        "\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169"+
-        "\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171"+
-        "\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179"+
-        "\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181"+
-        "\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189"+
-        "\u318A\u318B\u318C\u318D\u318E\u318F\u3190\u3191"+
-        "\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199"+
-        "\u319A\u319B\u319C\u319D\u319E\u319F\u31A0\u31A1"+
-        "\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9"+
-        "\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1"+
-        "\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31B8\u31B9"+
-        "\u31BA\u31BB\u31BC\u31BD\u31BE\u31BF\u31C0\u31C1"+
-        "\u31C2\u31C3\u31C4\u31C5\u31C6\u31C7\u31C8\u31C9"+
-        "\u31CA\u31CB\u31CC\u31CD\u31CE\u31CF\u31D0\u31D1"+
-        "\u31D2\u31D3\u31D4\u31D5\u31D6\u31D7\u31D8\u31D9"+
-        "\u31DA\u31DB\u31DC\u31DD\u31DE\u31DF\u31E0\u31E1"+
-        "\u31E2\u31E3\u31E4\u31E5\u31E6\u31E7\u31E8\u31E9"+
-        "\u31EA\u31EB\u31EC\u31ED\u31EE\u31EF\u31F0\u31F1"+
-        "\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9"+
-        "\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3200\u3201"+
-        "\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209"+
-        "\u320A\u320B\u320C\u320D\u320E\u320F\u3210\u3211"+
-        "\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219"+
-        "\u321A\u321B\u321C\u321D\u321E\u321F\u3220\u3221"+
-        "\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229"+
-        "\u322A\u322B\u322C\u322D\u322E\u322F\u3230\u3231"+
-        "\u3232\u3233\u3234\u3235\u3236\u3237\u3238\u3239"+
-        "\u323A\u323B\u323C\u323D\u323E\u323F\u3240\u3241"+
-        "\u3242\u3243\u3244\u3245\u3246\u3247\u3248\u3249"+
-        "\u324A\u324B\u324C\u324D\u324E\u324F\u3250\u3251"+
-        "\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259"+
-        "\u325A\u325B\u325C\u325D\u325E\u325F\u3260\u3261"+
-        "\u3262\u3263\u3264\u3265\u3266\u3267\u3268\u3269"+
-        "\u326A\u326B\u326C\u326D\u326E\u326F\u3270\u3271"+
-        "\u3272\u3273\u3274\u3275\u3276\u3277\u3278\u3279"+
-        "\u327A\u327B\u327C\u327D\u327E\u327F\u3280\u3281"+
-        "\u3282\u3283\u3284\u3285\u3286\u3287\u3288\u3289"+
-        "\u328A\u328B\u328C\u328D\u328E\u328F\u3290\u3291"+
-        "\u3292\u3293\u3294\u3295\u3296\u3297\u3298\u3299"+
-        "\u329A\u329B\u329C\u329D\u329E\u329F\u32A0\u32A1"+
-        "\u32A2\u32A3\u32A4\u32A5\u32A6\u32A7\u32A8\u32A9"+
-        "\u32AA\u32AB\u32AC\u32AD\u32AE\u32AF\u32B0\u32B1"+
-        "\u32B2\u32B3\u32B4\u32B5\u32B6\u32B7\u32B8\u32B9"+
-        "\u32BA\u32BB\u32BC\u32BD\u32BE\u32BF\u32C0\u32C1"+
-        "\u32C2\u32C3\u32C4\u32C5\u32C6\u32C7\u32C8\u32C9"+
-        "\u32CA\u32CB\u32CC\u32CD\u32CE\u32CF\u32D0\u32D1"+
-        "\u32D2\u32D3\u32D4\u32D5\u32D6\u32D7\u32D8\u32D9"+
-        "\u32DA\u32DB\u32DC\u32DD\u32DE\u32DF\u32E0\u32E1"+
-        "\u32E2\u32E3\u32E4\u32E5\u32E6\u32E7\u32E8\u32E9"+
-        "\u32EA\u32EB\u32EC\u32ED\u32EE\u32EF\u32F0\u32F1"+
-        "\u32F2\u32F3\u32F4\u32F5\u32F6\u32F7\u32F8\u32F9"+
-        "\u32FA\u32FB\u32FC\u32FD\u32FE\u32FF\u3300\u3301"+
-        "\u3302\u3303\u3304\u3305\u3306\u3307\u3308\u3309"+
-        "\u330A\u330B\u330C\u330D\u330E\u330F\u3310\u3311"+
-        "\u3312\u3313\u3314\u3315\u3316\u3317\u3318\u3319"+
-        "\u331A\u331B\u331C\u331D\u331E\u331F\u3320\u3321"+
-        "\u3322\u3323\u3324\u3325\u3326\u3327\u3328\u3329"+
-        "\u332A\u332B\u332C\u332D\u332E\u332F\u3330\u3331"+
-        "\u3332\u3333\u3334\u3335\u3336\u3337\u3338\u3339"+
-        "\u333A\u333B\u333C\u333D\u333E\u333F\u3340\u3341"+
-        "\u3342\u3343\u3344\u3345\u3346\u3347\u3348\u3349"+
-        "\u334A\u334B\u334C\u334D\u334E\u334F\u3350\u3351"+
-        "\u3352\u3353\u3354\u3355\u3356\u3357\u3358\u3359"+
-        "\u335A\u335B\u335C\u335D\u335E\u335F\u3360\u3361"+
-        "\u3362\u3363\u3364\u3365\u3366\u3367\u3368\u3369"+
-        "\u336A\u336B\u336C\u336D\u336E\u336F\u3370\u3371"+
-        "\u3372\u3373\u3374\u3375\u3376\u3377\u3378\u3379"+
-        "\u337A\u337B\u337C\u337D\u337E\u337F\u3380\u3381"+
-        "\u3382\u3383\u3384\u3385\u3386\u3387\u3388\u3389"+
-        "\u338A\u338B\u338C\u338D\u338E\u338F\u3390\u3391"+
-        "\u3392\u3393\u3394\u3395\u3396\u3397\u3398\u3399"+
-        "\u339A\u339B\u339C\u339D\u339E\u339F\u33A0\u33A1"+
-        "\u33A2\u33A3\u33A4\u33A5\u33A6\u33A7\u33A8\u33A9"+
-        "\u33AA\u33AB\u33AC\u33AD\u33AE\u33AF\u33B0\u33B1"+
-        "\u33B2\u33B3\u33B4\u33B5\u33B6\u33B7\u33B8\u33B9"+
-        "\u33BA\u33BB\u33BC\u33BD\u33BE\u33BF\u33C0\u33C1"+
-        "\u33C2\u33C3\u33C4\u33C5\u33C6\u33C7\u33C8\u33C9"+
-        "\u33CA\u33CB\u33CC\u33CD\u33CE\u33CF\u33D0\u33D1"+
-        "\u33D2\u33D3\u33D4\u33D5\u33D6\u33D7\u33D8\u33D9"+
-        "\u33DA\u33DB\u33DC\u33DD\u33DE\u33DF\u33E0\u33E1"+
-        "\u33E2\u33E3\u33E4\u33E5\u33E6\u33E7\u33E8\u33E9"+
-        "\u33EA\u33EB\u33EC\u33ED\u33EE\u33EF\u33F0\u33F1"+
-        "\u33F2\u33F3\u33F4\u33F5\u33F6\u33F7\u33F8\u33F9"+
-        "\u33FA\u33FB\u33FC\u33FD\u33FE\u33FF\u3400\u3401"+
-        "\u3402\u3403\u3404\u3405\u3406\u3407\u3408\u3409"+
-        "\u340A\u340B\u340C\u340D\u340E\u340F\u3410\u3411"+
-        "\u3412\u3413\u3414\u3415\u3416\u3417\u3418\u3419"+
-        "\u341A\u341B\u341C\u341D\u341E\u341F\u3420\u3421"+
-        "\u3422\u3423\u3424\u3425\u3426\u3427\u3428\u3429"+
-        "\u342A\u342B\u342C\u342D\u342E\u342F\u3430\u3431"+
-        "\u3432\u3433\u3434\u3435\u3436\u3437\u3438\u3439"+
-        "\u343A\u343B\u343C\u343D\u343E\u343F\u3440\u3441"+
-        "\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u3449"+
-        "\u344A\u344B\u344C\u344D\u344E\u344F\u3450\u3451"+
-        "\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459"+
-        "\u345A\u345B\u345C\u345D\u345E\u345F\u3460\u3461"+
-        "\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469"+
-        "\u346A\u346B\u346C\u346D\u346E\u346F\u3470\u3471"+
-        "\u3472\u3473\u3474\u3475\u3476\u3477\u3478\u3479"+
-        "\u347A\u347B\u347C\u347D\u347E\u347F\u3480\u3481"+
-        "\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489"+
-        "\u348A\u348B\u348C\u348D\u348E\u348F\u3490\u3491"+
-        "\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u3499"+
-        "\u349A\u349B\u349C\u349D\u349E\u349F\u34A0\u34A1"+
-        "\u34A2\u34A3\u34A4\u34A5\u34A6\u34A7\u34A8\u34A9"+
-        "\u34AA\u34AB\u34AC\u34AD\u34AE\u34AF\u34B0\u34B1"+
-        "\u34B2\u34B3\u34B4\u34B5\u34B6\u34B7\u34B8\u34B9"+
-        "\u34BA\u34BB\u34BC\u34BD\u34BE\u34BF\u34C0\u34C1"+
-        "\u34C2\u34C3\u34C4\u34C5\u34C6\u34C7\u34C8\u34C9"+
-        "\u34CA\u34CB\u34CC\u34CD\u34CE\u34CF\u34D0\u34D1"+
-        "\u34D2\u34D3\u34D4\u34D5\u34D6\u34D7\u34D8\u34D9"+
-        "\u34DA\u34DB\u34DC\u34DD\u34DE\u34DF\u34E0\u34E1"+
-        "\u34E2\u34E3\u34E4\u34E5\u34E6\u34E7\u34E8\u34E9"+
-        "\u34EA\u34EB\u34EC\u34ED\u34EE\u34EF\u34F0\u34F1"+
-        "\u34F2\u34F3\u34F4\u34F5\u34F6\u34F7\u34F8\u34F9"+
-        "\u34FA\u34FB\u34FC\u34FD\u34FE\u34FF\u3500\u3501"+
-        "\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509"+
-        "\u350A\u350B\u350C\u350D\u350E\u350F\u3510\u3511"+
-        "\u3512\u3513\u3514\u3515\u3516\u3517\u3518\u3519"+
-        "\u351A\u351B\u351C\u351D\u351E\u351F\u3520\u3521"+
-        "\u3522\u3523\u3524\u3525\u3526\u3527\u3528\u3529"+
-        "\u352A\u352B\u352C\u352D\u352E\u352F\u3530\u3531"+
-        "\u3532\u3533\u3534\u3535\u3536\u3537\u3538\u3539"+
-        "\u353A\u353B\u353C\u353D\u353E\u353F\u3540\u3541"+
-        "\u3542\u3543\u3544\u3545\u3546\u3547\u3548\u3549"+
-        "\u354A\u354B\u354C\u354D\u354E\u354F\u3550\u3551"+
-        "\u3552\u3553\u3554\u3555\u3556\u3557\u3558\u3559"+
-        "\u355A\u355B\u355C\u355D\u355E\u355F\u3560\u3561"+
-        "\u3562\u3563\u3564\u3565\u3566\u3567\u3568\u3569"+
-        "\u356A\u356B\u356C\u356D\u356E\u356F\u3570\u3571"+
-        "\u3572\u3573\u3574\u3575\u3576\u3577\u3578\u3579"+
-        "\u357A\u357B\u357C\u357D\u357E\u357F\u3580\u3581"+
-        "\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589"+
-        "\u358A\u358B\u358C\u358D\u358E\u358F\u3590\u3591"+
-        "\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599"+
-        "\u359A\u359B\u359C\u359D\u359E\u359F\u35A0\u35A1"+
-        "\u35A2\u35A3\u35A4\u35A5\u35A6\u35A7\u35A8\u35A9"+
-        "\u35AA\u35AB\u35AC\u35AD\u35AE\u35AF\u35B0\u35B1"+
-        "\u35B2\u35B3\u35B4\u35B5\u35B6\u35B7\u35B8\u35B9"+
-        "\u35BA\u35BB\u35BC\u35BD\u35BE\u35BF\u35C0\u35C1"+
-        "\u35C2\u35C3\u35C4\u35C5\u35C6\u35C7\u35C8\u35C9"+
-        "\u35CA\u35CB\u35CC\u35CD\u35CE\u35CF\u35D0\u35D1"+
-        "\u35D2\u35D3\u35D4\u35D5\u35D6\u35D7\u35D8\u35D9"+
-        "\u35DA\u35DB\u35DC\u35DD\u35DE\u35DF\u35E0\u35E1"+
-        "\u35E2\u35E3\u35E4\u35E5\u35E6\u35E7\u35E8\u35E9"+
-        "\u35EA\u35EB\u35EC\u35ED\u35EE\u35EF\u35F0\u35F1"+
-        "\u35F2\u35F3\u35F4\u35F5\u35F6\u35F7\u35F8\u35F9"+
-        "\u35FA\u35FB\u35FC\u35FD\u35FE\u35FF\u3600\u3601"+
-        "\u3602\u3603\u3604\u3605\u3606\u3607\u3608\u3609"+
-        "\u360A\u360B\u360C\u360D\u360E\u360F\u3610\u3611"+
-        "\u3612\u3613\u3614\u3615\u3616\u3617\u3618\u3619"+
-        "\u361A\u361B\u361C\u361D\u361E\u361F\u3620\u3621"+
-        "\u3622\u3623\u3624\u3625\u3626\u3627\u3628\u3629"+
-        "\u362A\u362B\u362C\u362D\u362E\u362F\u3630\u3631"+
-        "\u3632\u3633\u3634\u3635\u3636\u3637\u3638\u3639"+
-        "\u363A\u363B\u363C\u363D\u363E\u363F\u3640\u3641"+
-        "\u3642\u3643\u3644\u3645\u3646\u3647\u3648\u3649"+
-        "\u364A\u364B\u364C\u364D\u364E\u364F\u3650\u3651"+
-        "\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u3659"+
-        "\u365A\u365B\u365C\u365D\u365E\u365F\u3660\u3661"+
-        "\u3662\u3663\u3664\u3665\u3666\u3667\u3668\u3669"+
-        "\u366A\u366B\u366C\u366D\u366E\u366F\u3670\u3671"+
-        "\u3672\u3673\u3674\u3675\u3676\u3677\u3678\u3679"+
-        "\u367A\u367B\u367C\u367D\u367E\u367F\u3680\u3681"+
-        "\u3682\u3683\u3684\u3685\u3686\u3687\u3688\u3689"+
-        "\u368A\u368B\u368C\u368D\u368E\u368F\u3690\u3691"+
-        "\u3692\u3693\u3694\u3695\u3696\u3697\u3698\u3699"+
-        "\u369A\u369B\u369C\u369D\u369E\u369F\u36A0\u36A1"+
-        "\u36A2\u36A3\u36A4\u36A5\u36A6\u36A7\u36A8\u36A9"+
-        "\u36AA\u36AB\u36AC\u36AD\u36AE\u36AF\u36B0\u36B1"+
-        "\u36B2\u36B3\u36B4\u36B5\u36B6\u36B7\u36B8\u36B9"+
-        "\u36BA\u36BB\u36BC\u36BD\u36BE\u36BF\u36C0\u36C1"+
-        "\u36C2\u36C3\u36C4\u36C5\u36C6\u36C7\u36C8\u36C9"+
-        "\u36CA\u36CB\u36CC\u36CD\u36CE\u36CF\u36D0\u36D1"+
-        "\u36D2\u36D3\u36D4\u36D5\u36D6\u36D7\u36D8\u36D9"+
-        "\u36DA\u36DB\u36DC\u36DD\u36DE\u36DF\u36E0\u36E1"+
-        "\u36E2\u36E3\u36E4\u36E5\u36E6\u36E7\u36E8\u36E9"+
-        "\u36EA\u36EB\u36EC\u36ED\u36EE\u36EF\u36F0\u36F1"+
-        "\u36F2\u36F3\u36F4\u36F5\u36F6\u36F7\u36F8\u36F9"+
-        "\u36FA\u36FB\u36FC\u36FD\u36FE\u36FF\u3700\u3701"+
-        "\u3702\u3703\u3704\u3705\u3706\u3707\u3708\u3709"+
-        "\u370A\u370B\u370C\u370D\u370E\u370F\u3710\u3711"+
-        "\u3712\u3713\u3714\u3715\u3716\u3717\u3718\u3719"+
-        "\u371A\u371B\u371C\u371D\u371E\u371F\u3720\u3721"+
-        "\u3722\u3723\u3724\u3725\u3726\u3727\u3728\u3729"+
-        "\u372A\u372B\u372C\u372D\u372E\u372F\u3730\u3731"+
-        "\u3732\u3733\u3734\u3735\u3736\u3737\u3738\u3739"+
-        "\u373A\u373B\u373C\u373D\u373E\u373F\u3740\u3741"+
-        "\u3742\u3743\u3744\u3745\u3746\u3747\u3748\u3749"+
-        "\u374A\u374B\u374C\u374D\u374E\u374F\u3750\u3751"+
-        "\u3752\u3753\u3754\u3755\u3756\u3757\u3758\u3759"+
-        "\u375A\u375B\u375C\u375D\u375E\u375F\u3760\u3761"+
-        "\u3762\u3763\u3764\u3765\u3766\u3767\u3768\u3769"+
-        "\u376A\u376B\u376C\u376D\u376E\u376F\u3770\u3771"+
-        "\u3772\u3773\u3774\u3775\u3776\u3777\u3778\u3779"+
-        "\u377A\u377B\u377C\u377D\u377E\u377F\u3780\u3781"+
-        "\u3782\u3783\u3784\u3785\u3786\u3787\u3788\u3789"+
-        "\u378A\u378B\u378C\u378D\u378E\u378F\u3790\u3791"+
-        "\u3792\u3793\u3794\u3795\u3796\u3797\u3798\u3799"+
-        "\u379A\u379B\u379C\u379D\u379E\u379F\u37A0\u37A1"+
-        "\u37A2\u37A3\u37A4\u37A5\u37A6\u37A7\u37A8\u37A9"+
-        "\u37AA\u37AB\u37AC\u37AD\u37AE\u37AF\u37B0\u37B1"+
-        "\u37B2\u37B3\u37B4\u37B5\u37B6\u37B7\u37B8\u37B9"+
-        "\u37BA\u37BB\u37BC\u37BD\u37BE\u37BF\u37C0\u37C1"+
-        "\u37C2\u37C3\u37C4\u37C5\u37C6\u37C7\u37C8\u37C9"+
-        "\u37CA\u37CB\u37CC\u37CD\u37CE\u37CF\u37D0\u37D1"+
-        "\u37D2\u37D3\u37D4\u37D5\u37D6\u37D7\u37D8\u37D9"+
-        "\u37DA\u37DB\u37DC\u37DD\u37DE\u37DF\u37E0\u37E1"+
-        "\u37E2\u37E3\u37E4\u37E5\u37E6\u37E7\u37E8\u37E9"+
-        "\u37EA\u37EB\u37EC\u37ED\u37EE\u37EF\u37F0\u37F1"+
-        "\u37F2\u37F3\u37F4\u37F5\u37F6\u37F7\u37F8\u37F9"+
-        "\u37FA\u37FB\u37FC\u37FD\u37FE\u37FF\u3800\u3801"+
-        "\u3802\u3803\u3804\u3805\u3806\u3807\u3808\u3809"+
-        "\u380A\u380B\u380C\u380D\u380E\u380F\u3810\u3811"+
-        "\u3812\u3813\u3814\u3815\u3816\u3817\u3818\u3819"+
-        "\u381A\u381B\u381C\u381D\u381E\u381F\u3820\u3821"+
-        "\u3822\u3823\u3824\u3825\u3826\u3827\u3828\u3829"+
-        "\u382A\u382B\u382C\u382D\u382E\u382F\u3830\u3831"+
-        "\u3832\u3833\u3834\u3835\u3836\u3837\u3838\u3839"+
-        "\u383A\u383B\u383C\u383D\u383E\u383F\u3840\u3841"+
-        "\u3842\u3843\u3844\u3845\u3846\u3847\u3848\u3849"+
-        "\u384A\u384B\u384C\u384D\u384E\u384F\u3850\u3851"+
-        "\u3852\u3853\u3854\u3855\u3856\u3857\u3858\u3859"+
-        "\u385A\u385B\u385C\u385D\u385E\u385F\u3860\u3861"+
-        "\u3862\u3863\u3864\u3865\u3866\u3867\u3868\u3869"+
-        "\u386A\u386B\u386C\u386D\u386E\u386F\u3870\u3871"+
-        "\u3872\u3873\u3874\u3875\u3876\u3877\u3878\u3879"+
-        "\u387A\u387B\u387C\u387D\u387E\u387F\u3880\u3881"+
-        "\u3882\u3883\u3884\u3885\u3886\u3887\u3888\u3889"+
-        "\u388A\u388B\u388C\u388D\u388E\u388F\u3890\u3891"+
-        "\u3892\u3893\u3894\u3895\u3896\u3897\u3898\u3899"+
-        "\u389A\u389B\u389C\u389D\u389E\u389F\u38A0\u38A1"+
-        "\u38A2\u38A3\u38A4\u38A5\u38A6\u38A7\u38A8\u38A9"+
-        "\u38AA\u38AB\u38AC\u38AD\u38AE\u38AF\u38B0\u38B1"+
-        "\u38B2\u38B3\u38B4\u38B5\u38B6\u38B7\u38B8\u38B9"+
-        "\u38BA\u38BB\u38BC\u38BD\u38BE\u38BF\u38C0\u38C1"+
-        "\u38C2\u38C3\u38C4\u38C5\u38C6\u38C7\u38C8\u38C9"+
-        "\u38CA\u38CB\u38CC\u38CD\u38CE\u38CF\u38D0\u38D1"+
-        "\u38D2\u38D3\u38D4\u38D5\u38D6\u38D7\u38D8\u38D9"+
-        "\u38DA\u38DB\u38DC\u38DD\u38DE\u38DF\u38E0\u38E1"+
-        "\u38E2\u38E3\u38E4\u38E5\u38E6\u38E7\u38E8\u38E9"+
-        "\u38EA\u38EB\u38EC\u38ED\u38EE\u38EF\u38F0\u38F1"+
-        "\u38F2\u38F3\u38F4\u38F5\u38F6\u38F7\u38F8\u38F9"+
-        "\u38FA\u38FB\u38FC\u38FD\u38FE\u38FF\u3900\u3901"+
-        "\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909"+
-        "\u390A\u390B\u390C\u390D\u390E\u390F\u3910\u3911"+
-        "\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919"+
-        "\u391A\u391B\u391C\u391D\u391E\u391F\u3920\u3921"+
-        "\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929"+
-        "\u392A\u392B\u392C\u392D\u392E\u392F\u3930\u3931"+
-        "\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939"+
-        "\u393A\u393B\u393C\u393D\u393E\u393F\u3940\u3941"+
-        "\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949"+
-        "\u394A\u394B\u394C\u394D\u394E\u394F\u3950\u3951"+
-        "\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959"+
-        "\u395A\u395B\u395C\u395D\u395E\u395F\u3960\u3961"+
-        "\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969"+
-        "\u396A\u396B\u396C\u396D\u396E\u396F\u3970\u3971"+
-        "\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979"+
-        "\u397A\u397B\u397C\u397D\u397E\u397F\u3980\u3981"+
-        "\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u3989"+
-        "\u398A\u398B\u398C\u398D\u398E\u398F\u3990\u3991"+
-        "\u3992\u3993\u3994\u3995\u3996\u3997\u3998\u3999"+
-        "\u399A\u399B\u399C\u399D\u399E\u399F\u39A0\u39A1"+
-        "\u39A2\u39A3\u39A4\u39A5\u39A6\u39A7\u39A8\u39A9"+
-        "\u39AA\u39AB\u39AC\u39AD\u39AE\u39AF\u39B0\u39B1"+
-        "\u39B2\u39B3\u39B4\u39B5\u39B6\u39B7\u39B8\u39B9"+
-        "\u39BA\u39BB\u39BC\u39BD\u39BE\u39BF\u39C0\u39C1"+
-        "\u39C2\u39C3\u39C4\u39C5\u39C6\u39C7\u39C8\u39C9"+
-        "\u39CA\u39CB\u39CC\u39CD\u39CE\u39CF\u39D0\u39D1"+
-        "\u39D2\u39D3\u39D4\u39D5\u39D6\u39D7\u39D8\u39D9"+
-        "\u39DA\u39DB\u39DC\u39DD\u39DE\u39DF\u39E0\u39E1"+
-        "\u39E2\u39E3\u39E4\u39E5\u39E6\u39E7\u39E8\u39E9"+
-        "\u39EA\u39EB\u39EC\u39ED\u39EE\u39EF\u39F0\u39F1"+
-        "\u39F2\u39F3\u39F4\u39F5\u39F6\u39F7\u39F8\u39F9"+
-        "\u39FA\u39FB\u39FC\u39FD\u39FE\u39FF\u3A00\u3A01"+
-        "\u3A02\u3A03\u3A04\u3A05\u3A06\u3A07\u3A08\u3A09"+
-        "\u3A0A\u3A0B\u3A0C\u3A0D\u3A0E\u3A0F\u3A10\u3A11"+
-        "\u3A12\u3A13\u3A14\u3A15\u3A16\u3A17\u3A18\u3A19"+
-        "\u3A1A\u3A1B\u3A1C\u3A1D\u3A1E\u3A1F\u3A20\u3A21"+
-        "\u3A22\u3A23\u3A24\u3A25\u3A26\u3A27\u3A28\u3A29"+
-        "\u3A2A\u3A2B\u3A2C\u3A2D\u3A2E\u3A2F\u3A30\u3A31"+
-        "\u3A32\u3A33\u3A34\u3A35\u3A36\u3A37\u3A38\u3A39"+
-        "\u3A3A\u3A3B\u3A3C\u3A3D\u3A3E\u3A3F\u3A40\u3A41"+
-        "\u3A42\u3A43\u3A44\u3A45\u3A46\u3A47\u3A48\u3A49"+
-        "\u3A4A\u3A4B\u3A4C\u3A4D\u3A4E\u3A4F\u3A50\u3A51"+
-        "\u3A52\u3A53\u3A54\u3A55\u3A56\u3A57\u3A58\u3A59"+
-        "\u3A5A\u3A5B\u3A5C\u3A5D\u3A5E\u3A5F\u3A60\u3A61"+
-        "\u3A62\u3A63\u3A64\u3A65\u3A66\u3A67\u3A68\u3A69"+
-        "\u3A6A\u3A6B\u3A6C\u3A6D\u3A6E\u3A6F\u3A70\u3A71"+
-        "\u3A72\u3A73\u3A74\u3A75\u3A76\u3A77\u3A78\u3A79"+
-        "\u3A7A\u3A7B\u3A7C\u3A7D\u3A7E\u3A7F\u3A80\u3A81"+
-        "\u3A82\u3A83\u3A84\u3A85\u3A86\u3A87\u3A88\u3A89"+
-        "\u3A8A\u3A8B\u3A8C\u3A8D\u3A8E\u3A8F\u3A90\u3A91"+
-        "\u3A92\u3A93\u3A94\u3A95\u3A96\u3A97\u3A98\u3A99"+
-        "\u3A9A\u3A9B\u3A9C\u3A9D\u3A9E\u3A9F\u3AA0\u3AA1"+
-        "\u3AA2\u3AA3\u3AA4\u3AA5\u3AA6\u3AA7\u3AA8\u3AA9"+
-        "\u3AAA\u3AAB\u3AAC\u3AAD\u3AAE\u3AAF\u3AB0\u3AB1"+
-        "\u3AB2\u3AB3\u3AB4\u3AB5\u3AB6\u3AB7\u3AB8\u3AB9"+
-        "\u3ABA\u3ABB\u3ABC\u3ABD\u3ABE\u3ABF\u3AC0\u3AC1"+
-        "\u3AC2\u3AC3\u3AC4\u3AC5\u3AC6\u3AC7\u3AC8\u3AC9"+
-        "\u3ACA\u3ACB\u3ACC\u3ACD\u3ACE\u3ACF\u3AD0\u3AD1"+
-        "\u3AD2\u3AD3\u3AD4\u3AD5\u3AD6\u3AD7\u3AD8\u3AD9"+
-        "\u3ADA\u3ADB\u3ADC\u3ADD\u3ADE\u3ADF\u3AE0\u3AE1"+
-        "\u3AE2\u3AE3\u3AE4\u3AE5\u3AE6\u3AE7\u3AE8\u3AE9"+
-        "\u3AEA\u3AEB\u3AEC\u3AED\u3AEE\u3AEF\u3AF0\u3AF1"+
-        "\u3AF2\u3AF3\u3AF4\u3AF5\u3AF6\u3AF7\u3AF8\u3AF9"+
-        "\u3AFA\u3AFB\u3AFC\u3AFD\u3AFE\u3AFF\u3B00\u3B01"+
-        "\u3B02\u3B03\u3B04\u3B05\u3B06\u3B07\u3B08\u3B09"+
-        "\u3B0A\u3B0B\u3B0C\u3B0D\u3B0E\u3B0F\u3B10\u3B11"+
-        "\u3B12\u3B13\u3B14\u3B15\u3B16\u3B17\u3B18\u3B19"+
-        "\u3B1A\u3B1B\u3B1C\u3B1D\u3B1E\u3B1F\u3B20\u3B21"+
-        "\u3B22\u3B23\u3B24\u3B25\u3B26\u3B27\u3B28\u3B29"+
-        "\u3B2A\u3B2B\u3B2C\u3B2D\u3B2E\u3B2F\u3B30\u3B31"+
-        "\u3B32\u3B33\u3B34\u3B35\u3B36\u3B37\u3B38\u3B39"+
-        "\u3B3A\u3B3B\u3B3C\u3B3D\u3B3E\u3B3F\u3B40\u3B41"+
-        "\u3B42\u3B43\u3B44\u3B45\u3B46\u3B47\u3B48\u3B49"+
-        "\u3B4A\u3B4B\u3B4C\u3B4D\u3B4E\u3B4F\u3B50\u3B51"+
-        "\u3B52\u3B53\u3B54\u3B55\u3B56\u3B57\u3B58\u3B59"+
-        "\u3B5A\u3B5B\u3B5C\u3B5D\u3B5E\u3B5F\u3B60\u3B61"+
-        "\u3B62\u3B63\u3B64\u3B65\u3B66\u3B67\u3B68\u3B69"+
-        "\u3B6A\u3B6B\u3B6C\u3B6D\u3B6E\u3B6F\u3B70\u3B71"+
-        "\u3B72\u3B73\u3B74\u3B75\u3B76\u3B77\u3B78\u3B79"+
-        "\u3B7A\u3B7B\u3B7C\u3B7D\u3B7E\u3B7F\u3B80\u3B81"+
-        "\u3B82\u3B83\u3B84\u3B85\u3B86\u3B87\u3B88\u3B89"+
-        "\u3B8A\u3B8B\u3B8C\u3B8D\u3B8E\u3B8F\u3B90\u3B91"+
-        "\u3B92\u3B93\u3B94\u3B95\u3B96\u3B97\u3B98\u3B99"+
-        "\u3B9A\u3B9B\u3B9C\u3B9D\u3B9E\u3B9F\u3BA0\u3BA1"+
-        "\u3BA2\u3BA3\u3BA4\u3BA5\u3BA6\u3BA7\u3BA8\u3BA9"+
-        "\u3BAA\u3BAB\u3BAC\u3BAD\u3BAE\u3BAF\u3BB0\u3BB1"+
-        "\u3BB2\u3BB3\u3BB4\u3BB5\u3BB6\u3BB7\u3BB8\u3BB9"+
-        "\u3BBA\u3BBB\u3BBC\u3BBD\u3BBE\u3BBF\u3BC0\u3BC1"+
-        "\u3BC2\u3BC3\u3BC4\u3BC5\u3BC6\u3BC7\u3BC8\u3BC9"+
-        "\u3BCA\u3BCB\u3BCC\u3BCD\u3BCE\u3BCF\u3BD0\u3BD1"+
-        "\u3BD2\u3BD3\u3BD4\u3BD5\u3BD6\u3BD7\u3BD8\u3BD9"+
-        "\u3BDA\u3BDB\u3BDC\u3BDD\u3BDE\u3BDF\u3BE0\u3BE1"+
-        "\u3BE2\u3BE3\u3BE4\u3BE5\u3BE6\u3BE7\u3BE8\u3BE9"+
-        "\u3BEA\u3BEB\u3BEC\u3BED\u3BEE\u3BEF\u3BF0\u3BF1"+
-        "\u3BF2\u3BF3\u3BF4\u3BF5\u3BF6\u3BF7\u3BF8\u3BF9"+
-        "\u3BFA\u3BFB\u3BFC\u3BFD\u3BFE\u3BFF\u3C00\u3C01"+
-        "\u3C02\u3C03\u3C04\u3C05\u3C06\u3C07\u3C08\u3C09"+
-        "\u3C0A\u3C0B\u3C0C\u3C0D\u3C0E\u3C0F\u3C10\u3C11"+
-        "\u3C12\u3C13\u3C14\u3C15\u3C16\u3C17\u3C18\u3C19"+
-        "\u3C1A\u3C1B\u3C1C\u3C1D\u3C1E\u3C1F\u3C20\u3C21"+
-        "\u3C22\u3C23\u3C24\u3C25\u3C26\u3C27\u3C28\u3C29"+
-        "\u3C2A\u3C2B\u3C2C\u3C2D\u3C2E\u3C2F\u3C30\u3C31"+
-        "\u3C32\u3C33\u3C34\u3C35\u3C36\u3C37\u3C38\u3C39"+
-        "\u3C3A\u3C3B\u3C3C\u3C3D\u3C3E\u3C3F\u3C40\u3C41"+
-        "\u3C42\u3C43\u3C44\u3C45\u3C46\u3C47\u3C48\u3C49"+
-        "\u3C4A\u3C4B\u3C4C\u3C4D\u3C4E\u3C4F\u3C50\u3C51"+
-        "\u3C52\u3C53\u3C54\u3C55\u3C56\u3C57\u3C58\u3C59"+
-        "\u3C5A\u3C5B\u3C5C\u3C5D\u3C5E\u3C5F\u3C60\u3C61"+
-        "\u3C62\u3C63\u3C64\u3C65\u3C66\u3C67\u3C68\u3C69"+
-        "\u3C6A\u3C6B\u3C6C\u3C6D\u3C6E\u3C6F\u3C70\u3C71"+
-        "\u3C72\u3C73\u3C74\u3C75\u3C76\u3C77\u3C78\u3C79"+
-        "\u3C7A\u3C7B\u3C7C\u3C7D\u3C7E\u3C7F\u3C80\u3C81"+
-        "\u3C82\u3C83\u3C84\u3C85\u3C86\u3C87\u3C88\u3C89"+
-        "\u3C8A\u3C8B\u3C8C\u3C8D\u3C8E\u3C8F\u3C90\u3C91"+
-        "\u3C92\u3C93\u3C94\u3C95\u3C96\u3C97\u3C98\u3C99"+
-        "\u3C9A\u3C9B\u3C9C\u3C9D\u3C9E\u3C9F\u3CA0\u3CA1"+
-        "\u3CA2\u3CA3\u3CA4\u3CA5\u3CA6\u3CA7\u3CA8\u3CA9"+
-        "\u3CAA\u3CAB\u3CAC\u3CAD\u3CAE\u3CAF\u3CB0\u3CB1"+
-        "\u3CB2\u3CB3\u3CB4\u3CB5\u3CB6\u3CB7\u3CB8\u3CB9"+
-        "\u3CBA\u3CBB\u3CBC\u3CBD\u3CBE\u3CBF\u3CC0\u3CC1"+
-        "\u3CC2\u3CC3\u3CC4\u3CC5\u3CC6\u3CC7\u3CC8\u3CC9"+
-        "\u3CCA\u3CCB\u3CCC\u3CCD\u3CCE\u3CCF\u3CD0\u3CD1"+
-        "\u3CD2\u3CD3\u3CD4\u3CD5\u3CD6\u3CD7\u3CD8\u3CD9"+
-        "\u3CDA\u3CDB\u3CDC\u3CDD\u3CDE\u3CDF\u3CE0\u3CE1"+
-        "\u3CE2\u3CE3\u3CE4\u3CE5\u3CE6\u3CE7\u3CE8\u3CE9"+
-        "\u3CEA\u3CEB\u3CEC\u3CED\u3CEE\u3CEF\u3CF0\u3CF1"+
-        "\u3CF2\u3CF3\u3CF4\u3CF5\u3CF6\u3CF7\u3CF8\u3CF9"+
-        "\u3CFA\u3CFB\u3CFC\u3CFD\u3CFE\u3CFF\u3D00\u3D01"+
-        "\u3D02\u3D03\u3D04\u3D05\u3D06\u3D07\u3D08\u3D09"+
-        "\u3D0A\u3D0B\u3D0C\u3D0D\u3D0E\u3D0F\u3D10\u3D11"+
-        "\u3D12\u3D13\u3D14\u3D15\u3D16\u3D17\u3D18\u3D19"+
-        "\u3D1A\u3D1B\u3D1C\u3D1D\u3D1E\u3D1F\u3D20\u3D21"+
-        "\u3D22\u3D23\u3D24\u3D25\u3D26\u3D27\u3D28\u3D29"+
-        "\u3D2A\u3D2B\u3D2C\u3D2D\u3D2E\u3D2F\u3D30\u3D31"+
-        "\u3D32\u3D33\u3D34\u3D35\u3D36\u3D37\u3D38\u3D39"+
-        "\u3D3A\u3D3B\u3D3C\u3D3D\u3D3E\u3D3F\u3D40\u3D41"+
-        "\u3D42\u3D43\u3D44\u3D45\u3D46\u3D47\u3D48\u3D49"+
-        "\u3D4A\u3D4B\u3D4C\u3D4D\u3D4E\u3D4F\u3D50\u3D51"+
-        "\u3D52\u3D53\u3D54\u3D55\u3D56\u3D57\u3D58\u3D59"+
-        "\u3D5A\u3D5B\u3D5C\u3D5D\u3D5E\u3D5F\u3D60\u3D61"+
-        "\u3D62\u3D63\u3D64\u3D65\u3D66\u3D67\u3D68\u3D69"+
-        "\u3D6A\u3D6B\u3D6C\u3D6D\u3D6E\u3D6F\u3D70\u3D71"+
-        "\u3D72\u3D73\u3D74\u3D75\u3D76\u3D77\u3D78\u3D79"+
-        "\u3D7A\u3D7B\u3D7C\u3D7D\u3D7E\u3D7F\u3D80\u3D81"+
-        "\u3D82\u3D83\u3D84\u3D85\u3D86\u3D87\u3D88\u3D89"+
-        "\u3D8A\u3D8B\u3D8C\u3D8D\u3D8E\u3D8F\u3D90\u3D91"+
-        "\u3D92\u3D93\u3D94\u3D95\u3D96\u3D97\u3D98\u3D99"+
-        "\u3D9A\u3D9B\u3D9C\u3D9D\u3D9E\u3D9F\u3DA0\u3DA1"+
-        "\u3DA2\u3DA3\u3DA4\u3DA5\u3DA6\u3DA7\u3DA8\u3DA9"+
-        "\u3DAA\u3DAB\u3DAC\u3DAD\u3DAE\u3DAF\u3DB0\u3DB1"+
-        "\u3DB2\u3DB3\u3DB4\u3DB5\u3DB6\u3DB7\u3DB8\u3DB9"+
-        "\u3DBA\u3DBB\u3DBC\u3DBD\u3DBE\u3DBF\u3DC0\u3DC1"+
-        "\u3DC2\u3DC3\u3DC4\u3DC5\u3DC6\u3DC7\u3DC8\u3DC9"+
-        "\u3DCA\u3DCB\u3DCC\u3DCD\u3DCE\u3DCF\u3DD0\u3DD1"+
-        "\u3DD2\u3DD3\u3DD4\u3DD5\u3DD6\u3DD7\u3DD8\u3DD9"+
-        "\u3DDA\u3DDB\u3DDC\u3DDD\u3DDE\u3DDF\u3DE0\u3DE1"+
-        "\u3DE2\u3DE3\u3DE4\u3DE5\u3DE6\u3DE7\u3DE8\u3DE9"+
-        "\u3DEA\u3DEB\u3DEC\u3DED\u3DEE\u3DEF\u3DF0\u3DF1"+
-        "\u3DF2\u3DF3\u3DF4\u3DF5\u3DF6\u3DF7\u3DF8\u3DF9"+
-        "\u3DFA\u3DFB\u3DFC\u3DFD\u3DFE\u3DFF\u3E00\u3E01"+
-        "\u3E02\u3E03\u3E04\u3E05\u3E06\u3E07\u3E08\u3E09"+
-        "\u3E0A\u3E0B\u3E0C\u3E0D\u3E0E\u3E0F\u3E10\u3E11"+
-        "\u3E12\u3E13\u3E14\u3E15\u3E16\u3E17\u3E18\u3E19"+
-        "\u3E1A\u3E1B\u3E1C\u3E1D\u3E1E\u3E1F\u3E20\u3E21"+
-        "\u3E22\u3E23\u3E24\u3E25\u3E26\u3E27\u3E28\u3E29"+
-        "\u3E2A\u3E2B\u3E2C\u3E2D\u3E2E\u3E2F\u3E30\u3E31"+
-        "\u3E32\u3E33\u3E34\u3E35\u3E36\u3E37\u3E38\u3E39"+
-        "\u3E3A\u3E3B\u3E3C\u3E3D\u3E3E\u3E3F\u3E40\u3E41"+
-        "\u3E42\u3E43\u3E44\u3E45\u3E46\u3E47\u3E48\u3E49"+
-        "\u3E4A\u3E4B\u3E4C\u3E4D\u3E4E\u3E4F\u3E50\u3E51"+
-        "\u3E52\u3E53\u3E54\u3E55\u3E56\u3E57\u3E58\u3E59"+
-        "\u3E5A\u3E5B\u3E5C\u3E5D\u3E5E\u3E5F\u3E60\u3E61"+
-        "\u3E62\u3E63\u3E64\u3E65\u3E66\u3E67\u3E68\u3E69"+
-        "\u3E6A\u3E6B\u3E6C\u3E6D\u3E6E\u3E6F\u3E70\u3E71"+
-        "\u3E72\u3E73\u3E74\u3E75\u3E76\u3E77\u3E78\u3E79"+
-        "\u3E7A\u3E7B\u3E7C\u3E7D\u3E7E\u3E7F\u3E80\u3E81"+
-        "\u3E82\u3E83\u3E84\u3E85\u3E86\u3E87\u3E88\u3E89"+
-        "\u3E8A\u3E8B\u3E8C\u3E8D\u3E8E\u3E8F\u3E90\u3E91"+
-        "\u3E92\u3E93\u3E94\u3E95\u3E96\u3E97\u3E98\u3E99"+
-        "\u3E9A\u3E9B\u3E9C\u3E9D\u3E9E\u3E9F\u3EA0\u3EA1"+
-        "\u3EA2\u3EA3\u3EA4\u3EA5\u3EA6\u3EA7\u3EA8\u3EA9"+
-        "\u3EAA\u3EAB\u3EAC\u3EAD\u3EAE\u3EAF\u3EB0\u3EB1"+
-        "\u3EB2\u3EB3\u3EB4\u3EB5\u3EB6\u3EB7\u3EB8\u3EB9"+
-        "\u3EBA\u3EBB\u3EBC\u3EBD\u3EBE\u3EBF\u3EC0\u3EC1"+
-        "\u3EC2\u3EC3\u3EC4\u3EC5\u3EC6\u3EC7\u3EC8\u3EC9"+
-        "\u3ECA\u3ECB\u3ECC\u3ECD\u3ECE\u3ECF\u3ED0\u3ED1"+
-        "\u3ED2\u3ED3\u3ED4\u3ED5\u3ED6\u3ED7\u3ED8\u3ED9"+
-        "\u3EDA\u3EDB\u3EDC\u3EDD\u3EDE\u3EDF\u3EE0\u3EE1";
-
-    private final static String innerEncoderIndex2=
-        "\u3EE2\u3EE3\u3EE4\u3EE5\u3EE6\u3EE7\u3EE8\u3EE9"+
-        "\u3EEA\u3EEB\u3EEC\u3EED\u3EEE\u3EEF\u3EF0\u3EF1"+
-        "\uA95C\u3EF2\u3EF3\uA843\uA1AA\uA844\uA1AC\u3EF4"+
-        "\uA1AE\uA1AF\u3EF5\u3EF6\uA1B0\uA1B1\u3EF7\u3EF8"+
-        "\u3EF9\u3EFA\u3EFB\u3EFC\u3EFD\uA845\uA1AD\u3EFE"+
-        "\u3EFF\u3F00\u3F01\u3F02\u3F03\u3F04\u3F05\u3F06"+
-        "\uA1EB\u3F07\uA1E4\uA1E5\u3F08\uA846\u3F09\u3F0A"+
-        "\u3F0B\u3F0C\u3F0D\uA1F9\u3F0E\u3F0F\u3F10\u3F11"+
-        "\u3F12\u3F13\u3F14\u3F15\u3F16\u3F17\u3F18\u3F19"+
-        "\u3F1A\u3F1B\u3F1C\u3F1D\u3F1E\u3F1F\u3F20\u3F21"+
-        "\u3F22\u3F23\u3F24\u3F25\u3F26\u3F27\u3F28\u3F29"+
-        "\u3F2A\u3F2B\u3F2C\u3F2D\u3F2E\u3F2F\u3F30\u3F31"+
-        "\u3F32\u3F33\u3F34\u3F35\u3F36\u3F37\u3F38\u3F39"+
-        "\u3F3A\u3F3B\u3F3C\u3F3D\u3F3E\u3F3F\u3F40\u3F41"+
-        "\u3F42\u3F43\u3F44\u3F45\u3F46\u3F47\u3F48\u3F49"+
-        "\u3F4A\u3F4B\u3F4C\u3F4D\u3F4E\u3F4F\u3F50\u3F51"+
-        "\u3F52\u3F53\u3F54\u3F55\u3F56\u3F57\u3F58\u3F59"+
-        "\u3F5A\u3F5B\u3F5C\u3F5D\u3F5E\u3F5F\u3F60\u3F61"+
-        "\u3F62\u3F63\u3F64\u3F65\u3F66\u3F67\u3F68\u3F69"+
-        "\u3F6A\u3F6B\u3F6C\u3F6D\u3F6E\u3F6F\u3F70\u3F71"+
-        "\u3F72\u3F73\u3F74\u3F75\u3F76\u3F77\u3F78\u3F79"+
-        "\u3F7A\u3F7B\u3F7C\u3F7D\uA2E3\u3F7E\u3F7F\u3F80"+
-        "\u3F81\u3F82\u3F83\u3F84\u3F85\u3F86\u3F87\u3F88"+
-        "\u3F89\u3F8A\u3F8B\u3F8C\u3F8D\u3F8E\u3F8F\u3F90"+
-        "\u3F91\u3F92\u3F93\u3F94\u3F95\u3F96\u3F97\u3F98"+
-        "\u3F99\u3F9A\u3F9B\u3F9C\u3F9D\u3F9E\u3F9F\u3FA0"+
-        "\u3FA1\u3FA2\u3FA3\u3FA4\u3FA5\u3FA6\u3FA7\u3FA8"+
-        "\u3FA9\u3FAA\u3FAB\u3FAC\u3FAD\u3FAE\u3FAF\u3FB0"+
-        "\u3FB1\u3FB2\u3FB3\u3FB4\u3FB5\u3FB6\u3FB7\u3FB8"+
-        "\u3FB9\u3FBA\u3FBB\u3FBC\u3FBD\u3FBE\u3FBF\u3FC0"+
-        "\u3FC1\u3FC2\u3FC3\u3FC4\u3FC5\u3FC6\u3FC7\u3FC8"+
-        "\u3FC9\u3FCA\u3FCB\u3FCC\u3FCD\u3FCE\u3FCF\u3FD0"+
-        "\u3FD1\u3FD2\u3FD3\uA1E6\u3FD4\uA847\u3FD5\u3FD6"+
-        "\u3FD7\uA848\u3FD8\u3FD9\u3FDA\u3FDB\u3FDC\u3FDD"+
-        "\u3FDE\u3FDF\u3FE0\u3FE1\u3FE2\u3FE3\uA1ED\u3FE4"+
-        "\u3FE5\u3FE6\u3FE7\u3FE8\u3FE9\u3FEA\u3FEB\u3FEC"+
-        "\u3FED\uA959\u3FEE\u3FEF\u3FF0\u3FF1\u3FF2\u3FF3"+
-        "\u3FF4\u3FF5\u3FF6\u3FF7\u3FF8\u3FF9\u3FFA\u3FFB"+
-        "\u3FFC\u3FFD\u3FFE\u3FFF\u4000\u4001\u4002\u4003"+
-        "\u4004\u4005\u4006\u4007\u4008\u4009\u400A\u400B"+
-        "\u400C\u400D\u400E\u400F\u4010\u4011\u4012\u4013"+
-        "\u4014\u4015\u4016\u4017\u4018\u4019\u401A\u401B"+
-        "\u401C\u401D\u401E\u401F\u4020\u4021\u4022\u4023"+
-        "\u4024\u4025\u4026\u4027\u4028\u4029\u402A\u402B"+
-        "\uA2F1\uA2F2\uA2F3\uA2F4\uA2F5\uA2F6\uA2F7\uA2F8"+
-        "\uA2F9\uA2FA\uA2FB\uA2FC\u402C\u402D\u402E\u402F"+
-        "\uA2A1\uA2A2\uA2A3\uA2A4\uA2A5\uA2A6\uA2A7\uA2A8"+
-        "\uA2A9\uA2AA\u4030\u4031\u4032\u4033\u4034\u4035"+
-        "\u4036\u4037\u4038\u4039\u403A\u403B\u403C\u403D"+
-        "\u403E\u403F\u4040\u4041\u4042\u4043\u4044\u4045"+
-        "\uA1FB\uA1FC\uA1FA\uA1FD\u4046\u4047\uA849\uA84A"+
-        "\uA84B\uA84C\u4048\u4049\u404A\u404B\u404C\u404D"+
-        "\u404E\u404F\u4050\u4051\u4052\u4053\u4054\u4055"+
-        "\u4056\u4057\u4058\u4059\u405A\u405B\u405C\u405D"+
-        "\u405E\u405F\u4060\u4061\u4062\u4063\u4064\u4065"+
-        "\u4066\u4067\u4068\u4069\u406A\u406B\u406C\u406D"+
-        "\u406E\u406F\u4070\u4071\u4072\u4073\u4074\u4075"+
-        "\u4076\u4077\u4078\u4079\u407A\u407B\u407C\u407D"+
-        "\u407E\u407F\u4080\u4081\u4082\u4083\u4084\u4085"+
-        "\u4086\u4087\u4088\u4089\u408A\u408B\u408C\u408D"+
-        "\u408E\u408F\u4090\u4091\u4092\u4093\u4094\u4095"+
-        "\u4096\u4097\u4098\u4099\u409A\u409B\u409C\u409D"+
-        "\u409E\u409F\u40A0\u40A1\u40A2\u40A3\u40A4\u40A5"+
-        "\u40A6\u40A7\u40A8\u40A9\u40AA\u40AB\u40AC\u40AD"+
-        "\u40AE\u40AF\u40B0\u40B1\u40B2\u40B3\u40B4\u40B5"+
-        "\uA1CA\u40B6\u40B7\u40B8\u40B9\u40BA\u40BB\uA1C7"+
-        "\u40BC\uA1C6\u40BD\u40BE\u40BF\uA84D\u40C0\u40C1"+
-        "\u40C2\u40C3\uA1CC\u40C4\u40C5\uA1D8\uA1DE\uA84E"+
-        "\uA1CF\u40C6\u40C7\uA84F\u40C8\uA1CE\u40C9\uA1C4"+
-        "\uA1C5\uA1C9\uA1C8\uA1D2\u40CA\u40CB\uA1D3\u40CC"+
-        "\u40CD\u40CE\u40CF\u40D0\uA1E0\uA1DF\uA1C3\uA1CB"+
-        "\u40D1\u40D2\u40D3\u40D4\u40D5\uA1D7\u40D6\u40D7"+
-        "\u40D8\u40D9\u40DA\u40DB\u40DC\u40DD\u40DE\u40DF"+
-        "\uA1D6\u40E0\u40E1\u40E2\uA1D5\u40E3\u40E4\u40E5"+
-        "\u40E6\u40E7\uA850\u40E8\u40E9\u40EA\u40EB\u40EC"+
-        "\u40ED\u40EE\u40EF\u40F0\u40F1\u40F2\u40F3\u40F4"+
-        "\uA1D9\uA1D4\u40F5\u40F6\uA1DC\uA1DD\uA851\uA852"+
-        "\u40F7\u40F8\u40F9\u40FA\u40FB\u40FC\uA1DA\uA1DB"+
-        "\u40FD\u40FE\u40FF\u4100\u4101\u4102\u4103\u4104"+
-        "\u4105\u4106\u4107\u4108\u4109\u410A\u410B\u410C"+
-        "\u410D\u410E\u410F\u4110\u4111\u4112\u4113\u4114"+
-        "\u4115\u4116\u4117\u4118\u4119\u411A\u411B\u411C"+
-        "\u411D\u411E\u411F\u4120\u4121\uA892\u4122\u4123"+
-        "\u4124\uA1D1\u4125\u4126\u4127\u4128\u4129\u412A"+
-        "\u412B\u412C\u412D\u412E\u412F\uA1CD\u4130\u4131"+
-        "\u4132\u4133\u4134\u4135\u4136\u4137\u4138\u4139"+
-        "\u413A\u413B\u413C\u413D\u413E\u413F\u4140\u4141"+
-        "\u4142\u4143\u4144\u4145\u4146\u4147\u4148\uA853"+
-        "\u4149\u414A\u414B\u414C\u414D\u414E\u414F\u4150"+
-        "\u4151\u4152\u4153\u4154\u4155\u4156\u4157\u4158"+
-        "\u4159\u415A\u415B\u415C\u415D\u415E\u415F\u4160"+
-        "\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168"+
-        "\u4169\u416A\u416B\u416C\u416D\u416E\u416F\u4170"+
-        "\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178"+
-        "\u4179\u417A\u417B\u417C\u417D\u417E\u417F\u4180"+
-        "\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188"+
-        "\u4189\u418A\u418B\u418C\u418D\u418E\u418F\u4190"+
-        "\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198"+
-        "\u4199\u419A\uA1D0\u419B\u419C\u419D\u419E\u419F"+
-        "\u41A0\u41A1\u41A2\u41A3\u41A4\u41A5\u41A6\u41A7"+
-        "\u41A8\u41A9\u41AA\u41AB\u41AC\u41AD\u41AE\u41AF"+
-        "\u41B0\u41B1\u41B2\u41B3\u41B4\u41B5\u41B6\u41B7"+
-        "\u41B8\u41B9\u41BA\u41BB\u41BC\u41BD\u41BE\u41BF"+
-        "\u41C0\u41C1\u41C2\u41C3\u41C4\u41C5\u41C6\u41C7"+
-        "\u41C8\u41C9\u41CA\u41CB\u41CC\u41CD\u41CE\u41CF"+
-        "\u41D0\u41D1\u41D2\u41D3\u41D4\u41D5\u41D6\u41D7"+
-        "\u41D8\u41D9\u41DA\u41DB\u41DC\u41DD\u41DE\u41DF"+
-        "\u41E0\u41E1\u41E2\u41E3\u41E4\u41E5\u41E6\u41E7"+
-        "\u41E8\u41E9\u41EA\u41EB\u41EC\u41ED\u41EE\u41EF"+
-        "\u41F0\u41F1\u41F2\u41F3\u41F4\u41F5\u41F6\u41F7"+
-        "\u41F8\u41F9\u41FA\u41FB\u41FC\u41FD\u41FE\u41FF"+
-        "\u4200\u4201\u4202\u4203\u4204\u4205\u4206\u4207"+
-        "\u4208\u4209\u420A\u420B\u420C\u420D\u420E\u420F"+
-        "\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217"+
-        "\u4218\u4219\u421A\u421B\u421C\u421D\u421E\u421F"+
-        "\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227"+
-        "\u4228\u4229\u422A\u422B\u422C\u422D\u422E\u422F"+
-        "\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237"+
-        "\u4238\u4239\u423A\u423B\u423C\u423D\u423E\u423F"+
-        "\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247"+
-        "\u4248\u4249\u424A\u424B\u424C\u424D\u424E\u424F"+
-        "\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257"+
-        "\u4258\u4259\u425A\u425B\u425C\u425D\u425E\u425F"+
-        "\u4260\u4261\u4262\u4263\u4264\u4265\u4266\u4267"+
-        "\u4268\u4269\u426A\u426B\u426C\u426D\u426E\u426F"+
-        "\u4270\u4271\u4272\u4273\u4274\u4275\u4276\u4277"+
-        "\u4278\u4279\u427A\u427B\u427C\u427D\u427E\u427F"+
-        "\u4280\u4281\u4282\u4283\u4284\u4285\u4286\u4287"+
-        "\u4288\u4289\u428A\u428B\u428C\u428D\u428E\u428F"+
-        "\u4290\u4291\u4292\u4293\u4294\u4295\u4296\u4297"+
-        "\u4298\u4299\u429A\u429B\u429C\u429D\u429E\u429F"+
-        "\u42A0\u42A1\u42A2\u42A3\u42A4\u42A5\u42A6\u42A7"+
-        "\u42A8\u42A9\u42AA\u42AB\u42AC\u42AD\u42AE\u42AF"+
-        "\u42B0\u42B1\u42B2\u42B3\u42B4\u42B5\u42B6\u42B7"+
-        "\u42B8\u42B9\u42BA\u42BB\u42BC\u42BD\u42BE\u42BF"+
-        "\u42C0\u42C1\u42C2\u42C3\u42C4\u42C5\u42C6\u42C7"+
-        "\u42C8\u42C9\u42CA\u42CB\u42CC\u42CD\u42CE\u42CF"+
-        "\u42D0\u42D1\u42D2\u42D3\u42D4\u42D5\u42D6\u42D7"+
-        "\u42D8\u42D9\u42DA\u42DB\u42DC\u42DD\u42DE\u42DF"+
-        "\u42E0\u42E1\u42E2\u42E3\u42E4\u42E5\u42E6\u42E7"+
-        "\uA2D9\uA2DA\uA2DB\uA2DC\uA2DD\uA2DE\uA2DF\uA2E0"+
-        "\uA2E1\uA2E2\u42E8\u42E9\u42EA\u42EB\u42EC\u42ED"+
-        "\u42EE\u42EF\u42F0\u42F1\uA2C5\uA2C6\uA2C7\uA2C8"+
-        "\uA2C9\uA2CA\uA2CB\uA2CC\uA2CD\uA2CE\uA2CF\uA2D0"+
-        "\uA2D1\uA2D2\uA2D3\uA2D4\uA2D5\uA2D6\uA2D7\uA2D8"+
-        "\uA2B1\uA2B2\uA2B3\uA2B4\uA2B5\uA2B6\uA2B7\uA2B8"+
-        "\uA2B9\uA2BA\uA2BB\uA2BC\uA2BD\uA2BE\uA2BF\uA2C0"+
-        "\uA2C1\uA2C2\uA2C3\uA2C4\u42F2\u42F3\u42F4\u42F5"+
-        "\u42F6\u42F7\u42F8\u42F9\u42FA\u42FB\u42FC\u42FD"+
-        "\u42FE\u42FF\u4300\u4301\u4302\u4303\u4304\u4305"+
-        "\u4306\u4307\u4308\u4309\u430A\u430B\u430C\u430D"+
-        "\u430E\u430F\u4310\u4311\u4312\u4313\u4314\u4315"+
-        "\u4316\u4317\u4318\u4319\u431A\u431B\u431C\u431D"+
-        "\u431E\u431F\u4320\u4321\u4322\u4323\u4324\u4325"+
-        "\u4326\u4327\u4328\u4329\u432A\u432B\u432C\u432D"+
-        "\u432E\u432F\u4330\u4331\u4332\u4333\u4334\u4335"+
-        "\u4336\u4337\u4338\u4339\u433A\u433B\u433C\u433D"+
-        "\u433E\u433F\u4340\u4341\u4342\u4343\u4344\u4345"+
-        "\u4346\u4347\u4348\u4349\u434A\u434B\u434C\u434D"+
-        "\u434E\u434F\u4350\u4351\u4352\u4353\u4354\u4355"+
-        "\uA9A4\uA9A5\uA9A6\uA9A7\uA9A8\uA9A9\uA9AA\uA9AB"+
-        "\uA9AC\uA9AD\uA9AE\uA9AF\uA9B0\uA9B1\uA9B2\uA9B3"+
-        "\uA9B4\uA9B5\uA9B6\uA9B7\uA9B8\uA9B9\uA9BA\uA9BB"+
-        "\uA9BC\uA9BD\uA9BE\uA9BF\uA9C0\uA9C1\uA9C2\uA9C3"+
-        "\uA9C4\uA9C5\uA9C6\uA9C7\uA9C8\uA9C9\uA9CA\uA9CB"+
-        "\uA9CC\uA9CD\uA9CE\uA9CF\uA9D0\uA9D1\uA9D2\uA9D3"+
-        "\uA9D4\uA9D5\uA9D6\uA9D7\uA9D8\uA9D9\uA9DA\uA9DB"+
-        "\uA9DC\uA9DD\uA9DE\uA9DF\uA9E0\uA9E1\uA9E2\uA9E3"+
-        "\uA9E4\uA9E5\uA9E6\uA9E7\uA9E8\uA9E9\uA9EA\uA9EB"+
-        "\uA9EC\uA9ED\uA9EE\uA9EF\u4356\u4357\u4358\u4359"+
-        "\uA854\uA855\uA856\uA857\uA858\uA859\uA85A\uA85B"+
-        "\uA85C\uA85D\uA85E\uA85F\uA860\uA861\uA862\uA863"+
-        "\uA864\uA865\uA866\uA867\uA868\uA869\uA86A\uA86B"+
-        "\uA86C\uA86D\uA86E\uA86F\uA870\uA871\uA872\uA873"+
-        "\uA874\uA875\uA876\uA877\u435A\u435B\u435C\u435D"+
-        "\u435E\u435F\u4360\u4361\u4362\u4363\u4364\u4365"+
-        "\u4366\uA878\uA879\uA87A\uA87B\uA87C\uA87D\uA87E"+
-        "\uA880\uA881\uA882\uA883\uA884\uA885\uA886\uA887"+
-        "\u4367\u4368\u4369\uA888\uA889\uA88A\u436A\u436B"+
-        "\u436C\u436D\u436E\u436F\u4370\u4371\u4372\u4373"+
-        "\uA1F6\uA1F5\u4374\u4375\u4376\u4377\u4378\u4379"+
-        "\u437A\u437B\u437C\u437D\u437E\u437F\u4380\u4381"+
-        "\u4382\u4383\uA1F8\uA1F7\u4384\u4385\u4386\u4387"+
-        "\u4388\u4389\u438A\u438B\uA88B\uA88C\u438C\u438D"+
-        "\u438E\u438F\u4390\u4391\u4392\u4393\uA1F4\uA1F3"+
-        "\u4394\u4395\u4396\uA1F0\u4397\u4398\uA1F2\uA1F1"+
-        "\u4399\u439A\u439B\u439C\u439D\u439E\u439F\u43A0"+
-        "\u43A1\u43A2\u43A3\u43A4\u43A5\u43A6\u43A7\u43A8"+
-        "\u43A9\u43AA\uA88D\uA88E\uA88F\uA890\u43AB\u43AC"+
-        "\u43AD\u43AE\u43AF\u43B0\u43B1\u43B2\u43B3\u43B4"+
-        "\u43B5\u43B6\u43B7\u43B8\u43B9\u43BA\u43BB\u43BC"+
-        "\u43BD\u43BE\u43BF\u43C0\u43C1\u43C2\u43C3\u43C4"+
-        "\u43C5\u43C6\u43C7\u43C8\u43C9\uA1EF\uA1EE\u43CA"+
-        "\u43CB\uA891\u43CC\u43CD\u43CE\u43CF\u43D0\u43D1"+
-        "\u43D2\u43D3\u43D4\u43D5\u43D6\u43D7\u43D8\u43D9"+
-        "\u43DA\u43DB\u43DC\u43DD\u43DE\u43DF\u43E0\u43E1"+
-        "\u43E2\u43E3\u43E4\u43E5\u43E6\u43E7\u43E8\u43E9"+
-        "\u43EA\u43EB\u43EC\u43ED\u43EE\u43EF\u43F0\u43F1"+
-        "\u43F2\u43F3\u43F4\u43F5\u43F6\u43F7\u43F8\u43F9"+
-        "\u43FA\u43FB\u43FC\u43FD\u43FE\u43FF\u4400\u4401"+
-        "\uA1E2\u4402\uA1E1\u4403\u4404\u4405\u4406\u4407"+
-        "\u4408\u4409\u440A\u440B\u440C\u440D\u440E\u440F"+
-        "\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417"+
-        "\u4418\u4419\u441A\u441B\u441C\u441D\u441E\u441F"+
-        "\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427"+
-        "\u4428\u4429\u442A\u442B\u442C\u442D\u442E\u442F"+
-        "\u4430\u4431\u4432\u4433\u4434\u4435\u4436\u4437"+
-        "\u4438\u4439\u443A\u443B\u443C\u443D\u443E\u443F"+
-        "\u4440\u4441\u4442\u4443\u4444\u4445\u4446\u4447"+
-        "\u4448\u4449\u444A\u444B\u444C\u444D\u444E\u444F"+
-        "\u4450\u4451\u4452\u4453\u4454\u4455\u4456\u4457"+
-        "\u4458\u4459\u445A\u445B\u445C\u445D\u445E\u445F"+
-        "\u4460\u4461\u4462\u4463\u4464\u4465\u4466\u4467"+
-        "\u4468\u4469\u446A\u446B\u446C\u446D\u446E\u446F"+
-        "\u4470\u4471\u4472\u4473\u4474\u4475\u4476\u4477"+
-        "\u4478\u4479\u447A\u447B\u447C\u447D\u447E\u447F"+
-        "\u4480\u4481\u4482\u4483\u4484\u4485\u4486\u4487"+
-        "\u4488\u4489\u448A\u448B\u448C\u448D\u448E\u448F"+
-        "\u4490\u4491\u4492\u4493\u4494\u4495\u4496\u4497"+
-        "\u4498\u4499\u449A\u449B\u449C\u449D\u449E\u449F"+
-        "\u44A0\u44A1\u44A2\u44A3\u44A4\u44A5\u44A6\u44A7"+
-        "\u44A8\u44A9\u44AA\u44AB\u44AC\u44AD\u44AE\u44AF"+
-        "\u44B0\u44B1\u44B2\u44B3\u44B4\u44B5\u44B6\u44B7"+
-        "\u44B8\u44B9\u44BA\u44BB\u44BC\u44BD\u44BE\u44BF"+
-        "\u44C0\u44C1\u44C2\u44C3\u44C4\u44C5\u44C6\u44C7"+
-        "\u44C8\u44C9\u44CA\u44CB\u44CC\u44CD\u44CE\u44CF"+
-        "\u44D0\u44D1\u44D2\u44D3\u44D4\u44D5\u44D6\u44D7"+
-        "\u44D8\u44D9\u44DA\u44DB\u44DC\u44DD\u44DE\u44DF"+
-        "\u44E0\u44E1\u44E2\u44E3\u44E4\u44E5\u44E6\u44E7"+
-        "\u44E8\u44E9\u44EA\u44EB\u44EC\u44ED\u44EE\u44EF"+
-        "\u44F0\u44F1\u44F2\u44F3\u44F4\u44F5\u44F6\u44F7"+
-        "\u44F8\u44F9\u44FA\u44FB\u44FC\u44FD\u44FE\u44FF"+
-        "\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507"+
-        "\u4508\u4509\u450A\u450B\u450C\u450D\u450E\u450F"+
-        "\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517"+
-        "\u4518\u4519\u451A\u451B\u451C\u451D\u451E\u451F"+
-        "\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527"+
-        "\u4528\u4529\u452A\u452B\u452C\u452D\u452E\u452F"+
-        "\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537"+
-        "\u4538\u4539\u453A\u453B\u453C\u453D\u453E\u453F"+
-        "\u4540\u4541\u4542\u4543\u4544\u4545\u4546\u4547"+
-        "\u4548\u4549\u454A\u454B\u454C\u454D\u454E\u454F"+
-        "\u4550\u4551\u4552\u4553\u4554\u4555\u4556\u4557"+
-        "\u4558\u4559\u455A\u455B\u455C\u455D\u455E\u455F"+
-        "\u4560\u4561\u4562\u4563\u4564\u4565\u4566\u4567"+
-        "\u4568\u4569\u456A\u456B\u456C\u456D\u456E\u456F"+
-        "\u4570\u4571\u4572\u4573\u4574\u4575\u4576\u4577"+
-        "\u4578\u4579\u457A\u457B\u457C\u457D\u457E\u457F"+
-        "\u4580\u4581\u4582\u4583\u4584\u4585\u4586\u4587"+
-        "\u4588\u4589\u458A\u458B\u458C\u458D\u458E\u458F"+
-        "\u4590\u4591\u4592\u4593\u4594\u4595\u4596\u4597"+
-        "\u4598\u4599\u459A\u459B\u459C\u459D\u459E\u459F"+
-        "\u45A0\u45A1\u45A2\u45A3\u45A4\u45A5\u45A6\u45A7"+
-        "\u45A8\u45A9\u45AA\u45AB\u45AC\u45AD\u45AE\u45AF"+
-        "\u45B0\u45B1\u45B2\u45B3\u45B4\u45B5\u45B6\u45B7"+
-        "\u45B8\u45B9\u45BA\u45BB\u45BC\u45BD\u45BE\u45BF"+
-        "\u45C0\u45C1\u45C2\u45C3\u45C4\u45C5\u45C6\u45C7"+
-        "\u45C8\u45C9\u45CA\u45CB\u45CC\u45CD\u45CE\u45CF"+
-        "\u45D0\u45D1\u45D2\u45D3\u45D4\u45D5\u45D6\u45D7"+
-        "\u45D8\u45D9\u45DA\u45DB\u45DC\u45DD\u45DE\u45DF"+
-        "\u45E0\u45E1\u45E2\u45E3\u45E4\u45E5\u45E6\u45E7"+
-        "\u45E8\u45E9\u45EA\u45EB\u45EC\u45ED\u45EE\u45EF"+
-        "\u45F0\u45F1\u45F2\u45F3\u45F4\u45F5\u45F6\u45F7"+
-        "\u45F8\u45F9\u45FA\u45FB\u45FC\u45FD\u45FE\u45FF"+
-        "\u4600\u4601\u4602\u4603\u4604\u4605\u4606\u4607"+
-        "\u4608\u4609\u460A\u460B\u460C\u460D\u460E\u460F"+
-        "\u4610\u4611\u4612\u4613\u4614\u4615\u4616\u4617"+
-        "\u4618\u4619\u461A\u461B\u461C\u461D\u461E\u461F"+
-        "\u4620\u4621\u4622\u4623\u4624\u4625\u4626\u4627"+
-        "\u4628\u4629\u462A\u462B\u462C\u462D\u462E\u462F"+
-        "\u4630\u4631\u4632\u4633\u4634\u4635\u4636\u4637"+
-        "\u4638\u4639\u463A\u463B\u463C\u463D\u463E\u463F"+
-        "\u4640\u4641\u4642\u4643\u4644\u4645\u4646\u4647"+
-        "\u4648\u4649\u464A\u464B\u464C\u464D\u464E\u464F"+
-        "\u4650\u4651\u4652\u4653\u4654\u4655\u4656\u4657"+
-        "\u4658\u4659\u465A\u465B\u465C\u465D\u465E\u465F"+
-        "\u4660\u4661\u4662\u4663\u4664\u4665\u4666\u4667"+
-        "\u4668\u4669\u466A\u466B\u466C\u466D\u466E\u466F"+
-        "\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677"+
-        "\u4678\u4679\u467A\u467B\u467C\u467D\u467E\u467F"+
-        "\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687"+
-        "\u4688\u4689\u468A\u468B\u468C\u468D\u468E\u468F"+
-        "\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697"+
-        "\u4698\u4699\u469A\u469B\u469C\u469D\u469E\u469F"+
-        "\u46A0\u46A1\u46A2\u46A3\u46A4\u46A5\u46A6\u46A7"+
-        "\u46A8\u46A9\u46AA\u46AB\u46AC\u46AD\u46AE\u46AF"+
-        "\u46B0\u46B1\u46B2\u46B3\u46B4\u46B5\u46B6\u46B7"+
-        "\u46B8\u46B9\u46BA\u46BB\u46BC\u46BD\u46BE\u46BF"+
-        "\u46C0\u46C1\u46C2\u46C3\u46C4\u46C5\u46C6\u46C7"+
-        "\u46C8\u46C9\u46CA\u46CB\u46CC\u46CD\u46CE\u46CF"+
-        "\u46D0\u46D1\u46D2\u46D3\u46D4\u46D5\u46D6\u46D7"+
-        "\u46D8\u46D9\u46DA\u46DB\u46DC\u46DD\u46DE\u46DF"+
-        "\u46E0\u46E1\u46E2\u46E3\u46E4\u46E5\u46E6\u46E7"+
-        "\u46E8\u46E9\u46EA\u46EB\u46EC\u46ED\u46EE\u46EF"+
-        "\u46F0\u46F1\u46F2\u46F3\u46F4\u46F5\u46F6\u46F7"+
-        "\u46F8\u46F9\u46FA\u46FB\u46FC\u46FD\u46FE\u46FF"+
-        "\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707"+
-        "\u4708\u4709\u470A\u470B\u470C\u470D\u470E\u470F"+
-        "\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717"+
-        "\u4718\u4719\u471A\u471B\u471C\u471D\u471E\u471F"+
-        "\u4720\u4721\u4722\u4723\u4724\u4725\u4726\u4727"+
-        "\u4728\u4729\u472A\u472B\u472C\u472D\u472E\u472F"+
-        "\u4730\u4731\u4732\u4733\u4734\u4735\u4736\u4737"+
-        "\u4738\u4739\u473A\u473B\u473C\u473D\u473E\u473F"+
-        "\u4740\u4741\u4742\u4743\u4744\u4745\u4746\u4747"+
-        "\u4748\u4749\u474A\u474B\u474C\u474D\u474E\u474F"+
-        "\u4750\u4751\u4752\u4753\u4754\u4755\u4756\u4757"+
-        "\u4758\u4759\u475A\u475B\u475C\u475D\u475E\u475F"+
-        "\u4760\u4761\u4762\u4763\u4764\u4765\u4766\u4767"+
-        "\u4768\u4769\u476A\u476B\u476C\u476D\u476E\u476F"+
-        "\u4770\u4771\u4772\u4773\u4774\u4775\u4776\u4777"+
-        "\u4778\u4779\u477A\u477B\u477C\u477D\u477E\u477F"+
-        "\u4780\u4781\u4782\u4783\u4784\u4785\u4786\u4787"+
-        "\u4788\u4789\u478A\u478B\u478C\u478D\u478E\u478F"+
-        "\u4790\u4791\u4792\u4793\u4794\u4795\u4796\u4797"+
-        "\u4798\u4799\u479A\u479B\u479C\u479D\u479E\u479F"+
-        "\u47A0\u47A1\u47A2\u47A3\u47A4\u47A5\u47A6\u47A7"+
-        "\u47A8\u47A9\u47AA\u47AB\u47AC\u47AD\u47AE\u47AF"+
-        "\u47B0\u47B1\u47B2\u47B3\u47B4\u47B5\u47B6\u47B7"+
-        "\u47B8\u47B9\u47BA\u47BB\u47BC\u47BD\u47BE\u47BF"+
-        "\u47C0\u47C1\u47C2\u47C3\u47C4\u47C5\u47C6\u47C7"+
-        "\u47C8\u47C9\u47CA\u47CB\u47CC\u47CD\u47CE\u47CF"+
-        "\u47D0\u47D1\u47D2\u47D3\u47D4\u47D5\u47D6\u47D7"+
-        "\u47D8\u47D9\u47DA\u47DB\u47DC\u47DD\u47DE\u47DF"+
-        "\u47E0\u47E1\u47E2\u47E3\u47E4\u47E5\u47E6\u47E7"+
-        "\u47E8\u47E9\u47EA\u47EB\u47EC\u47ED\u47EE\u47EF"+
-        "\u47F0\u47F1\u47F2\u47F3\u47F4\u47F5\u47F6\u47F7"+
-        "\u47F8\u47F9\u47FA\u47FB\u47FC\u47FD\u47FE\u47FF"+
-        "\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807"+
-        "\u4808\u4809\u480A\u480B\u480C\u480D\u480E\u480F"+
-        "\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u4817"+
-        "\u4818\u4819\u481A\u481B\u481C\u481D\u481E\u481F"+
-        "\u4820\u4821\u4822\u4823\u4824\u4825\u4826\u4827"+
-        "\u4828\u4829\u482A\u482B\u482C\u482D\u482E\u482F"+
-        "\u4830\u4831\u4832\u4833\u4834\u4835\u4836\u4837"+
-        "\u4838\u4839\u483A\u483B\u483C\u483D\u483E\u483F"+
-        "\u4840\u4841\u4842\u4843\u4844\u4845\u4846\u4847"+
-        "\u4848\u4849\u484A\u484B\u484C\u484D\u484E\u484F"+
-        "\u4850\u4851\u4852\u4853\u4854\u4855\u4856\u4857"+
-        "\u4858\u4859\u485A\u485B\u485C\u485D\u485E\u485F"+
-        "\u4860\u4861\u4862\u4863\u4864\u4865\u4866\u4867"+
-        "\u4868\u4869\u486A\u486B\u486C\u486D\u486E\u486F"+
-        "\u4870\u4871\u4872\u4873\u4874\u4875\u4876\u4877"+
-        "\u4878\u4879\u487A\u487B\u487C\u487D\u487E\u487F"+
-        "\u4880\u4881\u4882\u4883\u4884\u4885\u4886\u4887"+
-        "\u4888\u4889\u488A\u488B\u488C\u488D\u488E\u488F"+
-        "\u4890\u4891\u4892\u4893\u4894\u4895\u4896\u4897"+
-        "\u4898\u4899\u489A\u489B\u489C\u489D\u489E\u489F"+
-        "\u48A0\u48A1\u48A2\u48A3\u48A4\u48A5\u48A6\u48A7"+
-        "\u48A8\u48A9\u48AA\u48AB\u48AC\u48AD\u48AE\u48AF"+
-        "\u48B0\u48B1\u48B2\u48B3\u48B4\u48B5\u48B6\u48B7"+
-        "\u48B8\u48B9\u48BA\u48BB\u48BC\u48BD\u48BE\u48BF"+
-        "\u48C0\u48C1\u48C2\u48C3\u48C4\u48C5\u48C6\u48C7"+
-        "\u48C8\u48C9\u48CA\u48CB\u48CC\u48CD\u48CE\u48CF"+
-        "\u48D0\u48D1\u48D2\u48D3\u48D4\u48D5\u48D6\u48D7"+
-        "\u48D8\u48D9\u48DA\u48DB\u48DC\u48DD\u48DE\u48DF"+
-        "\u48E0\u48E1\u48E2\u48E3\u48E4\u48E5\u48E6\u48E7"+
-        "\u48E8\u48E9\u48EA\u48EB\u48EC\u48ED\u48EE\u48EF"+
-        "\u48F0\u48F1\u48F2\u48F3\u48F4\u48F5\u48F6\u48F7"+
-        "\u48F8\u48F9\u48FA\u48FB\u48FC\u48FD\u48FE\u48FF"+
-        "\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907"+
-        "\u4908\u4909\u490A\u490B\u490C\u490D\u490E\u490F"+
-        "\u4910\u4911\u4912\u4913\u4914\u4915\u4916\u4917"+
-        "\u4918\u4919\u491A\u491B\u491C\u491D\u491E\u491F"+
-        "\u4920\u4921\u4922\u4923\u4924\u4925\u4926\u4927"+
-        "\u4928\u4929\u492A\u492B\u492C\u492D\u492E\u492F"+
-        "\u4930\u4931\u4932\u4933\u4934\u4935\u4936\u4937"+
-        "\u4938\u4939\u493A\u493B\u493C\u493D\u493E\u493F"+
-        "\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947"+
-        "\u4948\u4949\u494A\u494B\u494C\u494D\u494E\u494F"+
-        "\u4950\u4951\u4952\u4953\u4954\u4955\u4956\u4957"+
-        "\u4958\u4959\u495A\u495B\u495C\u495D\u495E\u495F"+
-        "\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u4967"+
-        "\u4968\u4969\u496A\u496B\u496C\u496D\u496E\u496F"+
-        "\u4970\u4971\u4972\u4973\u4974\u4975\u4976\u4977"+
-        "\u4978\u4979\u497A\u497B\u497C\u497D\u497E\u497F"+
-        "\u4980\u4981\u4982\u4983\u4984\u4985\u4986\u4987"+
-        "\u4988\u4989\u498A\u498B\u498C\u498D\u498E\u498F"+
-        "\u4990\u4991\u4992\u4993\u4994\u4995\u4996\u4997"+
-        "\u4998\u4999\u499A\u499B\u499C\u499D\u499E\u499F"+
-        "\u49A0\u49A1\u49A2\u49A3\u49A4\u49A5\u49A6\u49A7"+
-        "\u49A8\u49A9\u49AA\u49AB\u49AC\u49AD\u49AE\u49AF"+
-        "\u49B0\u49B1\u49B2\u49B3\u49B4\u49B5\u49B6\u49B7"+
-        "\u49B8\u49B9\u49BA\u49BB\u49BC\u49BD\u49BE\u49BF"+
-        "\u49C0\u49C1\u49C2\u49C3\u49C4\u49C5\u49C6\u49C7"+
-        "\u49C8\u49C9\u49CA\u49CB\u49CC\u49CD\u49CE\u49CF"+
-        "\u49D0\u49D1\u49D2\u49D3\u49D4\u49D5\u49D6\u49D7"+
-        "\u49D8\u49D9\u49DA\u49DB\u49DC\u49DD\u49DE\u49DF"+
-        "\u49E0\u49E1\u49E2\u49E3\u49E4\u49E5\u49E6\u49E7"+
-        "\u49E8\u49E9\u49EA\u49EB\u49EC\u49ED\u49EE\u49EF"+
-        "\u49F0\u49F1\u49F2\u49F3\u49F4\u49F5\u49F6\u49F7"+
-        "\u49F8\u49F9\u49FA\u49FB\u49FC\u49FD\u49FE\u49FF"+
-        "\u4A00\u4A01\u4A02\u4A03\u4A04\u4A05\u4A06\u4A07"+
-        "\u4A08\u4A09\u4A0A\u4A0B\u4A0C\u4A0D\u4A0E\u4A0F"+
-        "\u4A10\u4A11\u4A12\u4A13\u4A14\u4A15\u4A16\u4A17"+
-        "\u4A18\u4A19\u4A1A\u4A1B\u4A1C\u4A1D\u4A1E\u4A1F"+
-        "\u4A20\u4A21\u4A22\u4A23\u4A24\u4A25\u4A26\u4A27"+
-        "\u4A28\u4A29\u4A2A\u4A2B\u4A2C\u4A2D\u4A2E\u4A2F"+
-        "\u4A30\u4A31\u4A32\u4A33\u4A34\u4A35\u4A36\u4A37"+
-        "\u4A38\u4A39\u4A3A\u4A3B\u4A3C\u4A3D\u4A3E\u4A3F"+
-        "\u4A40\u4A41\u4A42\u4A43\u4A44\u4A45\u4A46\u4A47"+
-        "\u4A48\u4A49\u4A4A\u4A4B\u4A4C\u4A4D\u4A4E\u4A4F"+
-        "\u4A50\u4A51\u4A52\u4A53\u4A54\u4A55\u4A56\u4A57"+
-        "\u4A58\u4A59\u4A5A\u4A5B\u4A5C\u4A5D\u4A5E\u4A5F"+
-        "\u4A60\u4A61\u4A62\u4A63\u4A64\u4A65\u4A66\u4A67"+
-        "\u4A68\u4A69\u4A6A\u4A6B\u4A6C\u4A6D\u4A6E\u4A6F"+
-        "\u4A70\u4A71\u4A72\u4A73\u4A74\u4A75\u4A76\u4A77"+
-        "\u4A78\u4A79\u4A7A\u4A7B\u4A7C\u4A7D\u4A7E\u4A7F"+
-        "\u4A80\u4A81\u4A82\u4A83\u4A84\u4A85\u4A86\u4A87"+
-        "\u4A88\u4A89\u4A8A\u4A8B\u4A8C\u4A8D\u4A8E\u4A8F"+
-        "\u4A90\u4A91\u4A92\u4A93\u4A94\u4A95\u4A96\u4A97"+
-        "\u4A98\u4A99\u4A9A\u4A9B\u4A9C\u4A9D\u4A9E\u4A9F"+
-        "\u4AA0\u4AA1\u4AA2\u4AA3\u4AA4\u4AA5\u4AA6\u4AA7"+
-        "\u4AA8\u4AA9\u4AAA\u4AAB\u4AAC\u4AAD\u4AAE\u4AAF"+
-        "\u4AB0\u4AB1\u4AB2\u4AB3\u4AB4\u4AB5\u4AB6\u4AB7"+
-        "\u4AB8\u4AB9\u4ABA\u4ABB\u4ABC\u4ABD\u4ABE\u4ABF"+
-        "\u4AC0\u4AC1\u4AC2\u4AC3\u4AC4\u4AC5\u4AC6\u4AC7"+
-        "\u4AC8\u4AC9\u4ACA\u4ACB\u4ACC\u4ACD\u4ACE\u4ACF"+
-        "\u4AD0\u4AD1\u4AD2\u4AD3\u4AD4\u4AD5\u4AD6\u4AD7"+
-        "\u4AD8\u4AD9\u4ADA\u4ADB\u4ADC\u4ADD\u4ADE\u4ADF"+
-        "\u4AE0\u4AE1\u4AE2\u4AE3\u4AE4\u4AE5\u4AE6\u4AE7"+
-        "\u4AE8\u4AE9\u4AEA\u4AEB\u4AEC\u4AED\u4AEE\u4AEF"+
-        "\u4AF0\u4AF1\u4AF2\u4AF3\u4AF4\u4AF5\u4AF6\u4AF7"+
-        "\u4AF8\u4AF9\u4AFA\u4AFB\u4AFC\u4AFD\u4AFE\u4AFF"+
-        "\u4B00\u4B01\u4B02\u4B03\u4B04\u4B05\u4B06\u4B07"+
-        "\u4B08\u4B09\u4B0A\u4B0B\u4B0C\u4B0D\u4B0E\u4B0F"+
-        "\u4B10\u4B11\u4B12\u4B13\u4B14\u4B15\u4B16\u4B17"+
-        "\u4B18\u4B19\u4B1A\u4B1B\u4B1C\u4B1D\u4B1E\u4B1F"+
-        "\u4B20\u4B21\u4B22\u4B23\u4B24\u4B25\u4B26\u4B27"+
-        "\u4B28\u4B29\u4B2A\u4B2B\u4B2C\u4B2D\u4B2E\u4B2F"+
-        "\u4B30\u4B31\u4B32\u4B33\u4B34\u4B35\u4B36\u4B37"+
-        "\u4B38\u4B39\u4B3A\u4B3B\u4B3C\u4B3D\u4B3E\u4B3F"+
-        "\u4B40\u4B41\u4B42\u4B43\u4B44\u4B45\u4B46\u4B47"+
-        "\u4B48\u4B49\u4B4A\u4B4B\u4B4C\u4B4D\u4B4E\u4B4F"+
-        "\u4B50\u4B51\u4B52\u4B53\u4B54\u4B55\u4B56\u4B57"+
-        "\u4B58\u4B59\u4B5A\u4B5B\u4B5C\u4B5D\u4B5E\u4B5F"+
-        "\u4B60\u4B61\u4B62\u4B63\u4B64\u4B65\u4B66\u4B67"+
-        "\u4B68\u4B69\u4B6A\u4B6B\u4B6C\u4B6D\u4B6E\u4B6F"+
-        "\u4B70\u4B71\u4B72\u4B73\u4B74\u4B75\u4B76\u4B77"+
-        "\u4B78\u4B79\u4B7A\u4B7B\u4B7C\u4B7D\u4B7E\u4B7F"+
-        "\u4B80\u4B81\u4B82\u4B83\u4B84\u4B85\u4B86\u4B87"+
-        "\u4B88\u4B89\u4B8A\u4B8B\u4B8C\u4B8D\u4B8E\u4B8F"+
-        "\u4B90\u4B91\u4B92\u4B93\u4B94\u4B95\u4B96\u4B97"+
-        "\u4B98\u4B99\u4B9A\u4B9B\u4B9C\u4B9D\u4B9E\u4B9F"+
-        "\u4BA0\u4BA1\u4BA2\u4BA3\u4BA4\u4BA5\u4BA6\u4BA7"+
-        "\u4BA8\u4BA9\u4BAA\u4BAB\u4BAC\u4BAD\u4BAE\u4BAF"+
-        "\u4BB0\u4BB1\u4BB2\u4BB3\u4BB4\u4BB5\u4BB6\u4BB7"+
-        "\u4BB8\u4BB9\u4BBA\u4BBB\u4BBC\u4BBD\u4BBE\u4BBF"+
-        "\u4BC0\u4BC1\u4BC2\u4BC3\u4BC4\u4BC5\u4BC6\u4BC7"+
-        "\u4BC8\u4BC9\u4BCA\u4BCB\u4BCC\u4BCD\u4BCE\u4BCF"+
-        "\u4BD0\u4BD1\u4BD2\u4BD3\u4BD4\u4BD5\u4BD6\u4BD7"+
-        "\u4BD8\u4BD9\u4BDA\u4BDB\u4BDC\u4BDD\u4BDE\u4BDF"+
-        "\u4BE0\u4BE1\u4BE2\u4BE3\u4BE4\u4BE5\u4BE6\u4BE7"+
-        "\u4BE8\u4BE9\u4BEA\u4BEB\u4BEC\u4BED\u4BEE\u4BEF"+
-        "\u4BF0\u4BF1\u4BF2\u4BF3\u4BF4\u4BF5\u4BF6\u4BF7"+
-        "\u4BF8\u4BF9\u4BFA\u4BFB\u4BFC\u4BFD\u4BFE\u4BFF"+
-        "\u4C00\u4C01\u4C02\u4C03\u4C04\u4C05\u4C06\u4C07"+
-        "\u4C08\u4C09\u4C0A\u4C0B\u4C0C\u4C0D\u4C0E\u4C0F"+
-        "\u4C10\u4C11\u4C12\u4C13\u4C14\u4C15\u4C16\u4C17"+
-        "\u4C18\u4C19\u4C1A\u4C1B\u4C1C\u4C1D\u4C1E\u4C1F"+
-        "\u4C20\u4C21\u4C22\u4C23\u4C24\u4C25\u4C26\u4C27"+
-        "\u4C28\u4C29\u4C2A\u4C2B\u4C2C\u4C2D\u4C2E\u4C2F"+
-        "\u4C30\u4C31\u4C32\u4C33\u4C34\u4C35\u4C36\u4C37"+
-        "\u4C38\u4C39\u4C3A\u4C3B\u4C3C\u4C3D\u4C3E\u4C3F"+
-        "\u4C40\uFE50\u4C41\u4C42\uFE54\u4C43\u4C44\u4C45"+
-        "\uFE57\u4C46\u4C47\uFE58\uFE5D\u4C48\u4C49\u4C4A"+
-        "\u4C4B\u4C4C\u4C4D\u4C4E\u4C4F\u4C50\u4C51\uFE5E"+
-        "\u4C52\u4C53\u4C54\u4C55\u4C56\u4C57\u4C58\u4C59"+
-        "\u4C5A\u4C5B\u4C5C\u4C5D\u4C5E\u4C5F\u4C60\uFE6B"+
-        "\u4C61\u4C62\uFE6E\u4C63\u4C64\u4C65\uFE71\u4C66"+
-        "\u4C67\u4C68\u4C69\uFE73\u4C6A\u4C6B\uFE74\uFE75"+
-        "\u4C6C\u4C6D\u4C6E\uFE79\u4C6F\u4C70\u4C71\u4C72"+
-        "\u4C73\u4C74\u4C75\u4C76\u4C77\u4C78\u4C79\u4C7A"+
-        "\u4C7B\u4C7C\uFE84\u4C7D\u4C7E\u4C7F\u4C80\u4C81"+
-        "\u4C82\u4C83\u4C84\u4C85\u4C86\u4C87\u4C88\u4C89"+
-        "\u4C8A\u4C8B\u4C8C\u4C8D\u4C8E\u4C8F\u4C90\u4C91"+
-        "\u4C92\u4C93\u4C94\u4C95\u4C96\u4C97\u4C98\u4C99"+
-        "\u4C9A\u4C9B\u4C9C\u4C9D\u4C9E\u4C9F\u4CA0\u4CA1"+
-        "\u4CA2\u4CA3\u4CA4\u4CA5\u4CA6\u4CA7\u4CA8\u4CA9"+
-        "\u4CAA\u4CAB\u4CAC\u4CAD\u4CAE\u4CAF\u4CB0\u4CB1"+
-        "\u4CB2\u4CB3\u4CB4\u4CB5\u4CB6\u4CB7\u4CB8\u4CB9"+
-        "\u4CBA\u4CBB\u4CBC\u4CBD\u4CBE\u4CBF\u4CC0\u4CC1"+
-        "\u4CC2\u4CC3\u4CC4\u4CC5\u4CC6\u4CC7\u4CC8\u4CC9"+
-        "\u4CCA\u4CCB\u4CCC\u4CCD\u4CCE\u4CCF\u4CD0\u4CD1"+
-        "\u4CD2\u4CD3\u4CD4\u4CD5\u4CD6\u4CD7\u4CD8\u4CD9"+
-        "\u4CDA\u4CDB\u4CDC\u4CDD\u4CDE\u4CDF\u4CE0\u4CE1"+
-        "\u4CE2\u4CE3\u4CE4\u4CE5\u4CE6\u4CE7\u4CE8\u4CE9"+
-        "\u4CEA\u4CEB\u4CEC\u4CED\u4CEE\u4CEF\u4CF0\u4CF1"+
-        "\u4CF2\u4CF3\u4CF4\u4CF5\u4CF6\u4CF7\u4CF8\u4CF9"+
-        "\u4CFA\u4CFB\u4CFC\u4CFD\u4CFE\u4CFF\u4D00\u4D01"+
-        "\u4D02\u4D03\u4D04\u4D05\u4D06\u4D07\u4D08\u4D09"+
-        "\u4D0A\u4D0B\u4D0C\u4D0D\u4D0E\u4D0F\u4D10\u4D11"+
-        "\u4D12\u4D13\u4D14\u4D15\u4D16\u4D17\u4D18\u4D19"+
-        "\u4D1A\u4D1B\u4D1C\u4D1D\u4D1E\u4D1F\u4D20\u4D21"+
-        "\u4D22\u4D23\u4D24\u4D25\u4D26\u4D27\u4D28\u4D29"+
-        "\u4D2A\u4D2B\u4D2C\u4D2D\u4D2E\u4D2F\u4D30\u4D31"+
-        "\u4D32\u4D33\u4D34\u4D35\u4D36\u4D37\u4D38\u4D39"+
-        "\u4D3A\u4D3B\u4D3C\u4D3D\u4D3E\u4D3F\u4D40\u4D41"+
-        "\u4D42\u4D43\u4D44\u4D45\u4D46\u4D47\u4D48\u4D49"+
-        "\u4D4A\u4D4B\u4D4C\u4D4D\u4D4E\u4D4F\u4D50\u4D51"+
-        "\u4D52\u4D53\u4D54\u4D55\u4D56\u4D57\u4D58\u4D59"+
-        "\u4D5A\u4D5B\u4D5C\u4D5D\u4D5E\u4D5F\u4D60\u4D61"+
-        "\u4D62\u4D63\u4D64\u4D65\u4D66\u4D67\u4D68\u4D69"+
-        "\u4D6A\u4D6B\u4D6C\u4D6D\u4D6E\u4D6F\u4D70\u4D71"+
-        "\u4D72\u4D73\u4D74\u4D75\u4D76\u4D77\u4D78\u4D79"+
-        "\u4D7A\u4D7B\u4D7C\u4D7D\u4D7E\u4D7F\u4D80\u4D81"+
-        "\u4D82\u4D83\u4D84\u4D85\u4D86\u4D87\u4D88\u4D89"+
-        "\u4D8A\u4D8B\u4D8C\u4D8D\u4D8E\u4D8F\u4D90\u4D91"+
-        "\u4D92\u4D93\u4D94\u4D95\u4D96\u4D97\u4D98\u4D99"+
-        "\u4D9A\u4D9B\u4D9C\u4D9D\u4D9E\u4D9F\u4DA0\u4DA1"+
-        "\uA98A\uA98B\uA98C\uA98D\uA98E\uA98F\uA990\uA991"+
-        "\uA992\uA993\uA994\uA995\u4DA2\u4DA3\u4DA4\u4DA5";
-
-    private final static String innerEncoderIndex3=
-        "\uA1A1\uA1A2\uA1A3\uA1A8\u4DA6\uA1A9\uA965\uA996"+
-        "\uA1B4\uA1B5\uA1B6\uA1B7\uA1B8\uA1B9\uA1BA\uA1BB"+
-        "\uA1BE\uA1BF\uA893\uA1FE\uA1B2\uA1B3\uA1BC\uA1BD"+
-        "\u4DA7\u4DA8\u4DA9\u4DAA\u4DAB\uA894\uA895\u4DAC"+
-        "\u4DAD\uA940\uA941\uA942\uA943\uA944\uA945\uA946"+
-        "\uA947\uA948\u4DAE\u4DAF\u4DB0\u4DB1\u4DB2\u4DB3"+
-        "\u4DB4\u4DB5\u4DB6\u4DB7\u4DB8\u4DB9\u4DBA\u4DBB"+
-        "\u4DBC\u4DBD\u4DBE\u4DBF\u4DC0\u4DC1\uA989\u4DC2"+
-        "\u4DC3\uA4A1\uA4A2\uA4A3\uA4A4\uA4A5\uA4A6\uA4A7"+
-        "\uA4A8\uA4A9\uA4AA\uA4AB\uA4AC\uA4AD\uA4AE\uA4AF"+
-        "\uA4B0\uA4B1\uA4B2\uA4B3\uA4B4\uA4B5\uA4B6\uA4B7"+
-        "\uA4B8\uA4B9\uA4BA\uA4BB\uA4BC\uA4BD\uA4BE\uA4BF"+
-        "\uA4C0\uA4C1\uA4C2\uA4C3\uA4C4\uA4C5\uA4C6\uA4C7"+
-        "\uA4C8\uA4C9\uA4CA\uA4CB\uA4CC\uA4CD\uA4CE\uA4CF"+
-        "\uA4D0\uA4D1\uA4D2\uA4D3\uA4D4\uA4D5\uA4D6\uA4D7"+
-        "\uA4D8\uA4D9\uA4DA\uA4DB\uA4DC\uA4DD\uA4DE\uA4DF"+
-        "\uA4E0\uA4E1\uA4E2\uA4E3\uA4E4\uA4E5\uA4E6\uA4E7"+
-        "\uA4E8\uA4E9\uA4EA\uA4EB\uA4EC\uA4ED\uA4EE\uA4EF"+
-        "\uA4F0\uA4F1\uA4F2\uA4F3\u4DC4\u4DC5\u4DC6\u4DC7"+
-        "\u4DC8\u4DC9\u4DCA\uA961\uA962\uA966\uA967\u4DCB"+
-        "\u4DCC\uA5A1\uA5A2\uA5A3\uA5A4\uA5A5\uA5A6\uA5A7"+
-        "\uA5A8\uA5A9\uA5AA\uA5AB\uA5AC\uA5AD\uA5AE\uA5AF"+
-        "\uA5B0\uA5B1\uA5B2\uA5B3\uA5B4\uA5B5\uA5B6\uA5B7"+
-        "\uA5B8\uA5B9\uA5BA\uA5BB\uA5BC\uA5BD\uA5BE\uA5BF"+
-        "\uA5C0\uA5C1\uA5C2\uA5C3\uA5C4\uA5C5\uA5C6\uA5C7"+
-        "\uA5C8\uA5C9\uA5CA\uA5CB\uA5CC\uA5CD\uA5CE\uA5CF"+
-        "\uA5D0\uA5D1\uA5D2\uA5D3\uA5D4\uA5D5\uA5D6\uA5D7"+
-        "\uA5D8\uA5D9\uA5DA\uA5DB\uA5DC\uA5DD\uA5DE\uA5DF"+
-        "\uA5E0\uA5E1\uA5E2\uA5E3\uA5E4\uA5E5\uA5E6\uA5E7"+
-        "\uA5E8\uA5E9\uA5EA\uA5EB\uA5EC\uA5ED\uA5EE\uA5EF"+
-        "\uA5F0\uA5F1\uA5F2\uA5F3\uA5F4\uA5F5\uA5F6\u4DCD"+
-        "\u4DCE\u4DCF\u4DD0\u4DD1\uA960\uA963\uA964\u4DD2"+
-        "\u4DD3\u4DD4\u4DD5\u4DD6\u4DD7\uA8C5\uA8C6\uA8C7"+
-        "\uA8C8\uA8C9\uA8CA\uA8CB\uA8CC\uA8CD\uA8CE\uA8CF"+
-        "\uA8D0\uA8D1\uA8D2\uA8D3\uA8D4\uA8D5\uA8D6\uA8D7"+
-        "\uA8D8\uA8D9\uA8DA\uA8DB\uA8DC\uA8DD\uA8DE\uA8DF"+
-        "\uA8E0\uA8E1\uA8E2\uA8E3\uA8E4\uA8E5\uA8E6\uA8E7"+
-        "\uA8E8\uA8E9\u4DD8\u4DD9\u4DDA\u4DDB\u4DDC\u4DDD"+
-        "\u4DDE\u4DDF\u4DE0\u4DE1\u4DE2\u4DE3\u4DE4\u4DE5"+
-        "\u4DE6\u4DE7\u4DE8\u4DE9\u4DEA\u4DEB\u4DEC\u4DED"+
-        "\u4DEE\u4DEF\u4DF0\u4DF1\u4DF2\u4DF3\u4DF4\u4DF5"+
-        "\u4DF6\u4DF7\u4DF8\u4DF9\u4DFA\u4DFB\u4DFC\u4DFD"+
-        "\u4DFE\u4DFF\u4E00\u4E01\u4E02\u4E03\u4E04\u4E05"+
-        "\u4E06\u4E07\u4E08\u4E09\u4E0A\u4E0B\u4E0C\u4E0D"+
-        "\u4E0E\u4E0F\u4E10\u4E11\u4E12\u4E13\u4E14\u4E15"+
-        "\u4E16\u4E17\u4E18\u4E19\u4E1A\u4E1B\u4E1C\u4E1D"+
-        "\u4E1E\u4E1F\u4E20\u4E21\u4E22\u4E23\u4E24\u4E25"+
-        "\u4E26\u4E27\u4E28\u4E29\u4E2A\u4E2B\u4E2C\u4E2D"+
-        "\u4E2E\u4E2F\u4E30\u4E31\u4E32\u4E33\u4E34\u4E35"+
-        "\u4E36\u4E37\u4E38\u4E39\u4E3A\u4E3B\u4E3C\u4E3D"+
-        "\u4E3E\u4E3F\u4E40\u4E41\u4E42\u4E43\u4E44\u4E45"+
-        "\u4E46\u4E47\u4E48\u4E49\u4E4A\u4E4B\u4E4C\u4E4D"+
-        "\u4E4E\u4E4F\u4E50\u4E51\u4E52\u4E53\u4E54\u4E55"+
-        "\u4E56\u4E57\u4E58\u4E59\u4E5A\u4E5B\u4E5C\u4E5D"+
-        "\u4E5E\u4E5F\u4E60\u4E61\u4E62\u4E63\u4E64\u4E65"+
-        "\u4E66\u4E67\u4E68\u4E69\u4E6A\u4E6B\u4E6C\u4E6D"+
-        "\u4E6E\u4E6F\u4E70\u4E71\u4E72\u4E73\u4E74\u4E75"+
-        "\u4E76\u4E77\u4E78\u4E79\u4E7A\u4E7B\u4E7C\u4E7D"+
-        "\u4E7E\u4E7F\u4E80\u4E81\u4E82\u4E83\u4E84\u4E85"+
-        "\u4E86\u4E87\u4E88\u4E89\u4E8A\u4E8B\u4E8C\u4E8D"+
-        "\u4E8E\u4E8F\u4E90\u4E91\u4E92\u4E93\u4E94\u4E95"+
-        "\u4E96\u4E97\u4E98\u4E99\u4E9A\u4E9B\u4E9C\u4E9D"+
-        "\u4E9E\u4E9F\u4EA0\u4EA1\u4EA2\u4EA3\u4EA4\u4EA5"+
-        "\u4EA6\u4EA7\u4EA8\u4EA9\u4EAA\u4EAB\u4EAC\u4EAD"+
-        "\u4EAE\u4EAF\u4EB0\u4EB1\u4EB2\u4EB3\u4EB4\u4EB5"+
-        "\u4EB6\u4EB7\u4EB8\u4EB9\u4EBA\u4EBB\u4EBC\u4EBD"+
-        "\u4EBE\u4EBF\u4EC0\u4EC1\u4EC2\u4EC3\u4EC4\u4EC5"+
-        "\u4EC6\u4EC7\u4EC8\u4EC9\u4ECA\u4ECB\u4ECC\u4ECD"+
-        "\uA2E5\uA2E6\uA2E7\uA2E8\uA2E9\uA2EA\uA2EB\uA2EC"+
-        "\uA2ED\uA2EE\u4ECE\u4ECF\u4ED0\u4ED1\u4ED2\u4ED3"+
-        "\u4ED4\uA95A\u4ED5\u4ED6\u4ED7\u4ED8\u4ED9\u4EDA"+
-        "\u4EDB\u4EDC\u4EDD\u4EDE\u4EDF\u4EE0\u4EE1\u4EE2"+
-        "\u4EE3\u4EE4\u4EE5\u4EE6\u4EE7\u4EE8\u4EE9\u4EEA"+
-        "\u4EEB\u4EEC\u4EED\u4EEE\u4EEF\u4EF0\u4EF1\u4EF2"+
-        "\u4EF3\u4EF4\u4EF5\u4EF6\u4EF7\u4EF8\u4EF9\u4EFA"+
-        "\u4EFB\u4EFC\u4EFD\u4EFE\u4EFF\u4F00\u4F01\u4F02"+
-        "\u4F03\u4F04\u4F05\u4F06\u4F07\u4F08\u4F09\u4F0A"+
-        "\u4F0B\u4F0C\u4F0D\u4F0E\u4F0F\u4F10\u4F11\u4F12"+
-        "\u4F13\u4F14\u4F15\u4F16\u4F17\u4F18\u4F19\u4F1A"+
-        "\u4F1B\u4F1C\u4F1D\u4F1E\u4F1F\u4F20\u4F21\u4F22"+
-        "\u4F23\u4F24\u4F25\u4F26\u4F27\u4F28\u4F29\u4F2A"+
-        "\u4F2B\u4F2C\u4F2D\u4F2E\u4F2F\u4F30\u4F31\u4F32"+
-        "\u4F33\u4F34\u4F35\u4F36\u4F37\u4F38\u4F39\u4F3A"+
-        "\u4F3B\u4F3C\u4F3D\u4F3E\u4F3F\u4F40\u4F41\u4F42"+
-        "\u4F43\u4F44\u4F45\uA949\u4F46\u4F47\u4F48\u4F49"+
-        "\u4F4A\u4F4B\u4F4C\u4F4D\u4F4E\u4F4F\u4F50\u4F51"+
-        "\u4F52\u4F53\u4F54\u4F55\u4F56\u4F57\u4F58\u4F59"+
-        "\u4F5A\u4F5B\u4F5C\u4F5D\u4F5E\u4F5F\u4F60\u4F61"+
-        "\u4F62\u4F63\u4F64\u4F65\u4F66\u4F67\u4F68\u4F69"+
-        "\u4F6A\u4F6B\u4F6C\u4F6D\u4F6E\u4F6F\u4F70\u4F71"+
-        "\u4F72\u4F73\u4F74\u4F75\u4F76\u4F77\u4F78\u4F79"+
-        "\u4F7A\u4F7B\u4F7C\u4F7D\u4F7E\u4F7F\u4F80\u4F81"+
-        "\u4F82\u4F83\u4F84\u4F85\u4F86\u4F87\u4F88\u4F89"+
-        "\u4F8A\u4F8B\u4F8C\u4F8D\u4F8E\u4F8F\u4F90\u4F91"+
-        "\u4F92\u4F93\u4F94\u4F95\u4F96\u4F97\u4F98\u4F99"+
-        "\u4F9A\u4F9B\u4F9C\u4F9D\u4F9E\u4F9F\u4FA0\u4FA1"+
-        "\u4FA2\u4FA3\u4FA4\u4FA5\u4FA6\u4FA7\u4FA8\u4FA9"+
-        "\u4FAA\u4FAB\u4FAC\u4FAD\u4FAE\u4FAF\u4FB0\u4FB1"+
-        "\u4FB2\u4FB3\u4FB4\u4FB5\u4FB6\u4FB7\u4FB8\u4FB9"+
-        "\u4FBA\u4FBB\u4FBC\u4FBD\u4FBE\u4FBF\u4FC0\u4FC1"+
-        "\u4FC2\u4FC3\u4FC4\u4FC5\u4FC6\u4FC7\u4FC8\u4FC9"+
-        "\u4FCA\u4FCB\u4FCC\u4FCD\u4FCE\u4FCF\u4FD0\u4FD1"+
-        "\u4FD2\u4FD3\u4FD4\u4FD5\u4FD6\u4FD7\u4FD8\u4FD9"+
-        "\u4FDA\u4FDB\u4FDC\u4FDD\u4FDE\u4FDF\u4FE0\u4FE1"+
-        "\u4FE2\u4FE3\u4FE4\u4FE5\u4FE6\u4FE7\u4FE8\u4FE9"+
-        "\u4FEA\u4FEB\u4FEC\u4FED\u4FEE\u4FEF\u4FF0\u4FF1"+
-        "\u4FF2\u4FF3\u4FF4\u4FF5\u4FF6\u4FF7\u4FF8\u4FF9"+
-        "\u4FFA\u4FFB\u4FFC\u4FFD\u4FFE\u4FFF\u5000\u5001"+
-        "\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009"+
-        "\u500A\u500B\u500C\u500D\u500E\u500F\u5010\u5011"+
-        "\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019"+
-        "\u501A\u501B\u501C\u501D\u501E\u501F\u5020\u5021"+
-        "\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029"+
-        "\u502A\u502B\u502C\u502D\u502E\u502F\uA94A\uA94B"+
-        "\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037"+
-        "\u5038\u5039\u503A\u503B\uA94C\uA94D\uA94E\u503C"+
-        "\u503D\uA94F\u503E\u503F\u5040\u5041\u5042\u5043"+
-        "\u5044\u5045\u5046\u5047\u5048\u5049\u504A\u504B"+
-        "\u504C\u504D\u504E\u504F\u5050\u5051\u5052\u5053"+
-        "\u5054\u5055\u5056\u5057\u5058\u5059\u505A\u505B"+
-        "\u505C\u505D\u505E\u505F\uA950\u5060\u5061\u5062"+
-        "\u5063\u5064\u5065\u5066\u5067\u5068\uA951\u5069"+
-        "\u506A\uA952\uA953\u506B\u506C\uA954\u506D\u506E"+
-        "\u506F\u5070\u5071\u5072\u5073\u5074\u5075\u5076"+
-        "\u5077\u5078\u5079\u507A\u507B\u507C\u507D\u507E"+
-        "\u507F\u5080\u5081\u5082\u5083\u5084\u5085\u5086"+
-        "\u5087\u5088\u5089\u508A\u508B\u508C\u508D\u508E"+
-        "\u508F\u5090\u5091\u5092\u5093\u5094\u5095\u5096"+
-        "\u5097\u5098\u5099\u509A\u509B\u509C\u509D\u509E"+
-        "\u509F\u50A0\u50A1\u50A2\u50A3\u50A4\u50A5\u50A6"+
-        "\u50A7\u50A8\u50A9\u50AA\u50AB\u50AC\u50AD\u50AE"+
-        "\u50AF\u50B0\u50B1\u50B2\u50B3\u50B4\u50B5\u50B6"+
-        "\u50B7\u50B8\u50B9\u50BA\u50BB\u50BC\u50BD\u50BE"+
-        "\u50BF\u50C0\u50C1\u50C2\u50C3\u50C4\u50C5\u50C6"+
-        "\u50C7\u50C8\u50C9\u50CA\u50CB\u50CC\u50CD\u50CE"+
-        "\u50CF\u50D0\u50D1\u50D2\u50D3\u50D4\u50D5\u50D6"+
-        "\u50D7\u50D8\u50D9\u50DA\u50DB\u50DC\u50DD\uFE56"+
-        "\u50DE\u50DF\u50E0\u50E1\u50E2\u50E3\u50E4\u50E5"+
-        "\u50E6\u50E7\u50E8\u50E9\u50EA\u50EB\u50EC\u50ED"+
-        "\u50EE\u50EF\u50F0\u50F1\u50F2\u50F3\u50F4\u50F5"+
-        "\u50F6\u50F7\u50F8\u50F9\u50FA\u50FB\u50FC\u50FD"+
-        "\u50FE\u50FF\u5100\u5101\u5102\u5103\u5104\u5105"+
-        "\u5106\u5107\u5108\uFE55\u5109\u510A\u510B\u510C"+
-        "\u510D\u510E\u510F\u5110\u5111\u5112\u5113\u5114"+
-        "\u5115\u5116\u5117\u5118\u5119\u511A\u511B\u511C"+
-        "\u511D\u511E\u511F\u5120\u5121\u5122\u5123\u5124"+
-        "\u5125\u5126\u5127\u5128\u5129\u512A\u512B\u512C"+
-        "\u512D\u512E\u512F\u5130\u5131\u5132\u5133\u5134"+
-        "\u5135\u5136\u5137\u5138\u5139\u513A\u513B\u513C"+
-        "\u513D\u513E\u513F\u5140\u5141\u5142\u5143\u5144"+
-        "\u5145\u5146\u5147\u5148\u5149\u514A\u514B\u514C"+
-        "\u514D\u514E\u514F\u5150\u5151\u5152\u5153\u5154"+
-        "\u5155\u5156\u5157\u5158\u5159\u515A\u515B\u515C"+
-        "\u515D\u515E\u515F\u5160\u5161\u5162\u5163\u5164"+
-        "\u5165\u5166\u5167\u5168\u5169\u516A\u516B\u516C"+
-        "\u516D\u516E\u516F\u5170\u5171\u5172\u5173\u5174"+
-        "\u5175\u5176\u5177\u5178\u5179\u517A\u517B\u517C"+
-        "\u517D\u517E\u517F\u5180\u5181\u5182\u5183\u5184"+
-        "\u5185\u5186\u5187\u5188\u5189\u518A\u518B\u518C"+
-        "\u518D\u518E\u518F\u5190\u5191\u5192\u5193\u5194"+
-        "\u5195\u5196\u5197\u5198\u5199\u519A\u519B\u519C"+
-        "\u519D\u519E\u519F\u51A0\u51A1\u51A2\u51A3\u51A4"+
-        "\u51A5\u51A6\u51A7\u51A8\u51A9\u51AA\u51AB\u51AC"+
-        "\u51AD\u51AE\u51AF\u51B0\u51B1\u51B2\u51B3\u51B4"+
-        "\u51B5\u51B6\u51B7\u51B8\u51B9\u51BA\u51BB\u51BC"+
-        "\u51BD\u51BE\u51BF\u51C0\u51C1\u51C2\u51C3\u51C4"+
-        "\u51C5\u51C6\u51C7\u51C8\u51C9\u51CA\u51CB\u51CC"+
-        "\u51CD\u51CE\u51CF\u51D0\u51D1\u51D2\u51D3\u51D4"+
-        "\u51D5\u51D6\u51D7\u51D8\u51D9\u51DA\u51DB\u51DC"+
-        "\u51DD\u51DE\u51DF\u51E0\u51E1\u51E2\u51E3\u51E4"+
-        "\u51E5\u51E6\u51E7\u51E8\u51E9\u51EA\u51EB\u51EC"+
-        "\u51ED\u51EE\u51EF\u51F0\u51F1\u51F2\u51F3\u51F4"+
-        "\u51F5\u51F6\u51F7\u51F8\u51F9\u51FA\u51FB\u51FC"+
-        "\u51FD\u51FE\u51FF\u5200\u5201\u5202\u5203\u5204"+
-        "\u5205\u5206\u5207\u5208\u5209\u520A\u520B\u520C"+
-        "\u520D\u520E\u520F\u5210\u5211\u5212\u5213\u5214"+
-        "\u5215\u5216\u5217\u5218\u5219\u521A\u521B\u521C"+
-        "\u521D\u521E\u521F\u5220\u5221\u5222\u5223\u5224"+
-        "\u5225\u5226\u5227\u5228\u5229\u522A\u522B\u522C"+
-        "\u522D\u522E\u522F\u5230\u5231\u5232\uFE5A\u5233"+
-        "\u5234\u5235\u5236\u5237\u5238\u5239\u523A\u523B"+
-        "\u523C\u523D\u523E\u523F\u5240\u5241\u5242\u5243"+
-        "\u5244\u5245\u5246\u5247\u5248\u5249\u524A\u524B"+
-        "\u524C\u524D\u524E\u524F\u5250\u5251\u5252\u5253"+
-        "\u5254\u5255\u5256\u5257\u5258\u5259\u525A\u525B"+
-        "\u525C\u525D\u525E\u525F\u5260\u5261\u5262\u5263"+
-        "\u5264\u5265\u5266\u5267\u5268\u5269\u526A\u526B"+
-        "\u526C\u526D\u526E\u526F\u5270\u5271\u5272\u5273"+
-        "\u5274\u5275\u5276\u5277\u5278\u5279\u527A\u527B"+
-        "\u527C\u527D\u527E\u527F\u5280\u5281\u5282\u5283"+
-        "\u5284\u5285\u5286\u5287\u5288\u5289\u528A\u528B"+
-        "\u528C\u528D\u528E\u528F\u5290\u5291\u5292\u5293"+
-        "\u5294\u5295\u5296\u5297\u5298\u5299\u529A\u529B"+
-        "\u529C\u529D\u529E\u529F\u52A0\u52A1\uFE5C\u52A2"+
-        "\u52A3\u52A4\u52A5\u52A6\u52A7\u52A8\u52A9\u52AA"+
-        "\u52AB\u52AC\uFE5B\u52AD\u52AE\u52AF\u52B0\u52B1"+
-        "\u52B2\u52B3\u52B4\u52B5\u52B6\u52B7\u52B8\u52B9"+
-        "\u52BA\u52BB\u52BC\u52BD\u52BE\u52BF\u52C0\u52C1"+
-        "\u52C2\u52C3\u52C4\u52C5\u52C6\u52C7\u52C8\u52C9"+
-        "\u52CA\u52CB\u52CC\u52CD\u52CE\u52CF\u52D0\u52D1"+
-        "\u52D2\u52D3\u52D4\u52D5\u52D6\u52D7\u52D8\u52D9"+
-        "\u52DA\u52DB\u52DC\u52DD\u52DE\u52DF\u52E0\u52E1"+
-        "\u52E2\u52E3\u52E4\u52E5\u52E6\u52E7\u52E8\u52E9"+
-        "\u52EA\u52EB\u52EC\u52ED\u52EE\u52EF\u52F0\u52F1"+
-        "\u52F2\u52F3\u52F4\u52F5\u52F6\u52F7\u52F8\u52F9"+
-        "\u52FA\u52FB\u52FC\u52FD\u52FE\u52FF\u5300\u5301"+
-        "\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309"+
-        "\u530A\u530B\u530C\u530D\u530E\u530F\u5310\u5311"+
-        "\u5312\u5313\u5314\u5315\u5316\u5317\u5318\u5319"+
-        "\u531A\u531B\u531C\u531D\u531E\u531F\u5320\u5321"+
-        "\u5322\u5323\u5324\u5325\u5326\u5327\u5328\u5329"+
-        "\u532A\u532B\u532C\u532D\u532E\u532F\u5330\u5331"+
-        "\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u5339"+
-        "\u533A\u533B\u533C\u533D\u533E\u533F\u5340\u5341"+
-        "\u5342\u5343\u5344\u5345\u5346\u5347\u5348\u5349"+
-        "\u534A\u534B\u534C\u534D\u534E\u534F\u5350\u5351"+
-        "\u5352\u5353\u5354\u5355\u5356\u5357\u5358\u5359"+
-        "\u535A\u535B\u535C\u535D\u535E\u535F\u5360\u5361"+
-        "\u5362\u5363\u5364\u5365\u5366\u5367\u5368\u5369"+
-        "\u536A\u536B\u536C\u536D\u536E\u536F\u5370\u5371"+
-        "\u5372\u5373\u5374\u5375\u5376\u5377\u5378\u5379"+
-        "\u537A\u537B\u537C\u537D\u537E\u537F\u5380\u5381"+
-        "\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389"+
-        "\u538A\u538B\u538C\u538D\u538E\u538F\u5390\u5391"+
-        "\u5392\u5393\u5394\u5395\u5396\u5397\u5398\u5399"+
-        "\u539A\u539B\u539C\u539D\u539E\u539F\u53A0\u53A1"+
-        "\u53A2\u53A3\u53A4\u53A5\u53A6\u53A7\u53A8\u53A9"+
-        "\u53AA\u53AB\u53AC\u53AD\u53AE\u53AF\u53B0\u53B1"+
-        "\u53B2\u53B3\u53B4\u53B5\u53B6\u53B7\u53B8\u53B9"+
-        "\u53BA\u53BB\u53BC\u53BD\u53BE\u53BF\u53C0\u53C1"+
-        "\u53C2\u53C3\u53C4\u53C5\u53C6\u53C7\u53C8\u53C9"+
-        "\u53CA\u53CB\u53CC\u53CD\u53CE\u53CF\u53D0\u53D1"+
-        "\u53D2\u53D3\u53D4\u53D5\u53D6\u53D7\u53D8\u53D9"+
-        "\u53DA\u53DB\u53DC\u53DD\u53DE\u53DF\u53E0\u53E1"+
-        "\u53E2\u53E3\u53E4\u53E5\u53E6\u53E7\u53E8\u53E9"+
-        "\u53EA\u53EB\u53EC\u53ED\u53EE\u53EF\u53F0\u53F1"+
-        "\u53F2\u53F3\u53F4\u53F5\u53F6\u53F7\u53F8\u53F9"+
-        "\u53FA\u53FB\u53FC\u53FD\u53FE\u53FF\u5400\u5401"+
-        "\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409"+
-        "\u540A\u540B\u540C\u540D\u540E\u540F\u5410\u5411"+
-        "\u5412\u5413\u5414\u5415\u5416\u5417\u5418\u5419"+
-        "\u541A\u541B\u541C\u541D\u541E\u541F\u5420\u5421"+
-        "\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429"+
-        "\u542A\u542B\u542C\u542D\u542E\u542F\u5430\u5431"+
-        "\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439"+
-        "\u543A\u543B\u543C\u543D\u543E\u543F\u5440\u5441"+
-        "\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449"+
-        "\u544A\u544B\u544C\u544D\u544E\u544F\u5450\u5451"+
-        "\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459"+
-        "\u545A\u545B\u545C\u545D\u545E\u545F\u5460\u5461"+
-        "\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469"+
-        "\u546A\u546B\u546C\u546D\u546E\u546F\u5470\u5471"+
-        "\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479"+
-        "\u547A\u547B\u547C\u547D\u547E\u547F\u5480\u5481"+
-        "\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489"+
-        "\u548A\u548B\u548C\u548D\u548E\u548F\u5490\u5491"+
-        "\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499"+
-        "\u549A\u549B\u549C\u549D\u549E\u549F\u54A0\u54A1"+
-        "\u54A2\u54A3\u54A4\u54A5\u54A6\u54A7\u54A8\u54A9"+
-        "\u54AA\u54AB\u54AC\u54AD\u54AE\u54AF\u54B0\u54B1"+
-        "\u54B2\u54B3\u54B4\u54B5\u54B6\u54B7\u54B8\u54B9"+
-        "\u54BA\u54BB\u54BC\u54BD\u54BE\u54BF\u54C0\u54C1"+
-        "\u54C2\u54C3\u54C4\u54C5\u54C6\u54C7\u54C8\u54C9"+
-        "\u54CA\u54CB\u54CC\u54CD\u54CE\u54CF\u54D0\u54D1"+
-        "\u54D2\u54D3\u54D4\u54D5\u54D6\u54D7\u54D8\u54D9"+
-        "\u54DA\u54DB\u54DC\u54DD\u54DE\u54DF\u54E0\u54E1"+
-        "\u54E2\u54E3\u54E4\u54E5\u54E6\u54E7\u54E8\u54E9"+
-        "\u54EA\u54EB\u54EC\u54ED\u54EE\u54EF\u54F0\u54F1"+
-        "\u54F2\u54F3\u54F4\u54F5\u54F6\u54F7\u54F8\u54F9"+
-        "\u54FA\u54FB\u54FC\u54FD\u54FE\u54FF\u5500\u5501"+
-        "\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509"+
-        "\u550A\u550B\u550C\u550D\u550E\u550F\u5510\u5511"+
-        "\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519"+
-        "\u551A\u551B\u551C\u551D\u551E\u551F\u5520\u5521"+
-        "\u5522\u5523\u5524\u5525\u5526\u5527\u5528\u5529"+
-        "\u552A\u552B\u552C\u552D\u552E\u552F\u5530\u5531"+
-        "\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539"+
-        "\u553A\u553B\u553C\u553D\u553E\u553F\u5540\u5541"+
-        "\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549"+
-        "\u554A\u554B\u554C\u554D\u554E\u554F\u5550\u5551"+
-        "\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u5559"+
-        "\u555A\u555B\u555C\u555D\u555E\u555F\u5560\u5561"+
-        "\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569"+
-        "\u556A\u556B\u556C\u556D\u556E\u556F\u5570\u5571"+
-        "\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579"+
-        "\u557A\u557B\u557C\u557D\u557E\u557F\u5580\u5581"+
-        "\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589"+
-        "\u558A\u558B\u558C\u558D\u558E\u558F\u5590\u5591"+
-        "\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599"+
-        "\u559A\u559B\u559C\u559D\u559E\u559F\u55A0\u55A1"+
-        "\u55A2\u55A3\u55A4\u55A5\u55A6\u55A7\u55A8\u55A9"+
-        "\uFE60\u55AA\u55AB\u55AC\u55AD\u55AE\u55AF\u55B0"+
-        "\u55B1\u55B2\u55B3\u55B4\u55B5\u55B6\u55B7\u55B8"+
-        "\u55B9\u55BA\u55BB\u55BC\u55BD\u55BE\u55BF\u55C0"+
-        "\u55C1\u55C2\u55C3\u55C4\u55C5\u55C6\u55C7\u55C8"+
-        "\u55C9\u55CA\u55CB\u55CC\u55CD\u55CE\u55CF\u55D0"+
-        "\u55D1\u55D2\u55D3\u55D4\u55D5\u55D6\u55D7\u55D8"+
-        "\u55D9\u55DA\u55DB\u55DC\u55DD\u55DE\u55DF\u55E0"+
-        "\u55E1\u55E2\u55E3\u55E4\u55E5\u55E6\u55E7\u55E8"+
-        "\u55E9\u55EA\u55EB\u55EC\u55ED\u55EE\u55EF\u55F0"+
-        "\u55F1\u55F2\u55F3\u55F4\u55F5\u55F6\u55F7\u55F8"+
-        "\u55F9\u55FA\u55FB\u55FC\u55FD\u55FE\uFE5F\u55FF"+
-        "\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607"+
-        "\u5608\u5609\u560A\u560B\u560C\u560D\u560E\u560F"+
-        "\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617"+
-        "\u5618\u5619\u561A\u561B\u561C\u561D\u561E\u561F"+
-        "\u5620\u5621\u5622\u5623\u5624\u5625\u5626\u5627"+
-        "\u5628\u5629\u562A\u562B\u562C\u562D\u562E\u562F"+
-        "\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637"+
-        "\u5638\u5639\u563A\u563B\u563C\u563D\u563E\u563F"+
-        "\u5640\u5641\u5642\u5643\u5644\u5645\u5646\u5647"+
-        "\u5648\u5649\u564A\u564B\u564C\u564D\u564E\u564F"+
-        "\u5650\u5651\u5652\u5653\u5654\u5655\u5656\u5657"+
-        "\u5658\u5659\u565A\u565B\u565C\u565D\u565E\uFE62"+
-        "\uFE65\u565F\u5660\u5661\u5662\u5663\u5664\u5665"+
-        "\u5666\u5667\u5668\u5669\u566A\u566B\u566C\uFE63"+
-        "\u566D\u566E\u566F\u5670\u5671\u5672\u5673\u5674"+
-        "\u5675\u5676\u5677\u5678\u5679\u567A\u567B\u567C"+
-        "\u567D\u567E\u567F\u5680\u5681\u5682\u5683\u5684"+
-        "\u5685\u5686\u5687\u5688\u5689\u568A\u568B\u568C"+
-        "\u568D\u568E\u568F\u5690\u5691\u5692\u5693\u5694"+
-        "\u5695\u5696\u5697\u5698\u5699\u569A\u569B\u569C"+
-        "\u569D\u569E\u569F\u56A0\u56A1\u56A2\u56A3\u56A4"+
-        "\u56A5\u56A6\u56A7\u56A8\u56A9\u56AA\u56AB\u56AC"+
-        "\u56AD\u56AE\u56AF\u56B0\u56B1\u56B2\u56B3\u56B4"+
-        "\u56B5\u56B6\u56B7\u56B8\u56B9\u56BA\u56BB\u56BC"+
-        "\u56BD\u56BE\u56BF\u56C0\u56C1\u56C2\u56C3\u56C4"+
-        "\u56C5\u56C6\u56C7\u56C8\u56C9\u56CA\u56CB\u56CC"+
-        "\u56CD\u56CE\u56CF\u56D0\u56D1\u56D2\u56D3\u56D4"+
-        "\u56D5\u56D6\u56D7\u56D8\u56D9\u56DA\u56DB\u56DC"+
-        "\u56DD\u56DE\u56DF\u56E0\u56E1\u56E2\u56E3\u56E4"+
-        "\u56E5\u56E6\u56E7\u56E8\u56E9\u56EA\u56EB\u56EC"+
-        "\u56ED\u56EE\u56EF\u56F0\u56F1\u56F2\u56F3\u56F4"+
-        "\u56F5\u56F6\u56F7\u56F8\u56F9\u56FA\u56FB\u56FC"+
-        "\u56FD\u56FE\u56FF\uFE64\u5700\u5701\u5702\u5703"+
-        "\u5704\u5705\u5706\u5707\u5708\u5709\u570A\u570B"+
-        "\u570C\u570D\u570E\u570F\u5710\u5711\u5712\u5713"+
-        "\u5714\u5715\u5716\u5717\u5718\u5719\u571A\u571B"+
-        "\u571C\u571D\u571E\u571F\u5720\u5721\u5722\u5723"+
-        "\u5724\u5725\u5726\u5727\u5728\u5729\u572A\u572B"+
-        "\u572C\u572D\u572E\u572F\u5730\u5731\u5732\u5733"+
-        "\u5734\u5735\u5736\u5737\u5738\u5739\u573A\u573B"+
-        "\u573C\u573D\u573E\u573F\u5740\u5741\u5742\u5743"+
-        "\u5744\u5745\u5746\u5747\u5748\u5749\u574A\u574B"+
-        "\u574C\u574D\u574E\u574F\u5750\u5751\u5752\u5753"+
-        "\u5754\u5755\u5756\u5757\u5758\u5759\u575A\u575B"+
-        "\u575C\u575D\u575E\u575F\u5760\u5761\u5762\u5763"+
-        "\u5764\u5765\u5766\u5767\u5768\u5769\u576A\u576B"+
-        "\u576C\u576D\u576E\u576F\u5770\u5771\u5772\u5773"+
-        "\u5774\u5775\u5776\u5777\u5778\u5779\u577A\u577B"+
-        "\u577C\u577D\u577E\u577F\u5780\u5781\u5782\u5783"+
-        "\u5784\u5785\u5786\u5787\u5788\u5789\u578A\u578B"+
-        "\u578C\u578D\u578E\u578F\u5790\u5791\u5792\u5793"+
-        "\u5794\u5795\u5796\u5797\u5798\u5799\u579A\u579B"+
-        "\u579C\u579D\u579E\u579F\u57A0\u57A1\u57A2\u57A3"+
-        "\u57A4\u57A5\u57A6\u57A7\u57A8\u57A9\u57AA\u57AB"+
-        "\u57AC\u57AD\u57AE\u57AF\u57B0\u57B1\u57B2\u57B3"+
-        "\u57B4\u57B5\u57B6\u57B7\u57B8\u57B9\u57BA\u57BB"+
-        "\u57BC\u57BD\u57BE\u57BF\u57C0\u57C1\u57C2\u57C3"+
-        "\u57C4\u57C5\u57C6\u57C7\u57C8\u57C9\u57CA\u57CB"+
-        "\u57CC\u57CD\u57CE\u57CF\u57D0\u57D1\u57D2\u57D3"+
-        "\u57D4\u57D5\u57D6\u57D7\u57D8\u57D9\uFE68\u57DA"+
-        "\u57DB\u57DC\u57DD\u57DE\u57DF\u57E0\u57E1\u57E2"+
-        "\u57E3\u57E4\u57E5\u57E6\u57E7\u57E8\u57E9\u57EA"+
-        "\u57EB\u57EC\u57ED\u57EE\u57EF\u57F0\u57F1\u57F2"+
-        "\u57F3\u57F4\u57F5\u57F6\u57F7\u57F8\u57F9\u57FA"+
-        "\u57FB\u57FC\u57FD\u57FE\u57FF\u5800\u5801\u5802"+
-        "\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580A"+
-        "\u580B\u580C\u580D\u580E\u580F\u5810\u5811\u5812"+
-        "\u5813\u5814\u5815\u5816\u5817\u5818\u5819\u581A"+
-        "\u581B\u581C\u581D\u581E\u581F\u5820\u5821\u5822"+
-        "\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582A"+
-        "\u582B\u582C\u582D\u582E\u582F\u5830\u5831\u5832"+
-        "\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583A"+
-        "\u583B\u583C\u583D\u583E\u583F\u5840\u5841\u5842"+
-        "\u5843\u5844\u5845\u5846\u5847\u5848\u5849\u584A"+
-        "\u584B\u584C\u584D\u584E\u584F\u5850\u5851\u5852"+
-        "\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585A"+
-        "\u585B\u585C\u585D\u585E\u585F\u5860\u5861\u5862"+
-        "\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586A"+
-        "\u586B\u586C\u586D\u586E\u586F\u5870\u5871\u5872"+
-        "\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587A"+
-        "\u587B\u587C\u587D\u587E\u587F\u5880\u5881\u5882"+
-        "\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588A"+
-        "\u588B\u588C\u588D\u588E\u588F\u5890\u5891\u5892"+
-        "\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589A"+
-        "\u589B\u589C\u589D\u589E\u589F\u58A0\u58A1\u58A2"+
-        "\u58A3\u58A4\u58A5\u58A6\u58A7\u58A8\u58A9\u58AA"+
-        "\u58AB\u58AC\u58AD\u58AE\u58AF\u58B0\u58B1\u58B2"+
-        "\u58B3\u58B4\u58B5\u58B6\u58B7\u58B8\u58B9\u58BA"+
-        "\u58BB\u58BC\u58BD\u58BE\u58BF\u58C0\u58C1\u58C2"+
-        "\u58C3\u58C4\u58C5\u58C6\u58C7\u58C8\u58C9\u58CA"+
-        "\u58CB\u58CC\u58CD\u58CE\u58CF\u58D0\u58D1\u58D2"+
-        "\u58D3\u58D4\u58D5\u58D6\u58D7\u58D8\u58D9\u58DA"+
-        "\u58DB\u58DC\u58DD\u58DE\u58DF\u58E0\u58E1\u58E2"+
-        "\u58E3\u58E4\u58E5\u58E6\u58E7\u58E8\u58E9\u58EA"+
-        "\u58EB\u58EC\u58ED\u58EE\u58EF\u58F0\u58F1\u58F2"+
-        "\u58F3\u58F4\u58F5\u58F6\u58F7\u58F8\uFE69\u58F9"+
-        "\u58FA\u58FB\u58FC\u58FD\u58FE\u58FF\u5900\u5901"+
-        "\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u5909"+
-        "\u590A\u590B\u590C\u590D\u590E\u590F\u5910\u5911"+
-        "\u5912\u5913\u5914\u5915\u5916\u5917\u5918\u5919"+
-        "\u591A\u591B\u591C\u591D\u591E\u591F\u5920\u5921"+
-        "\u5922\u5923\u5924\u5925\u5926\u5927\u5928\u5929"+
-        "\u592A\u592B\u592C\u592D\u592E\u592F\u5930\u5931"+
-        "\u5932\u5933\u5934\u5935\u5936\u5937\u5938\u5939"+
-        "\u593A\u593B\u593C\u593D\u593E\u593F\u5940\u5941"+
-        "\u5942\u5943\u5944\u5945\u5946\u5947\u5948\u5949"+
-        "\u594A\u594B\u594C\u594D\u594E\u594F\u5950\u5951"+
-        "\u5952\u5953\u5954\u5955\u5956\u5957\u5958\u5959"+
-        "\u595A\u595B\u595C\u595D\u595E\u595F\u5960\u5961"+
-        "\u5962\u5963\u5964\u5965\u5966\u5967\u5968\u5969"+
-        "\uFE6A\u596A\u596B\u596C\u596D\u596E\u596F\u5970"+
-        "\u5971\u5972\u5973\u5974\u5975\u5976\u5977\u5978"+
-        "\u5979\u597A\u597B\u597C\u597D\u597E\u597F\u5980"+
-        "\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988"+
-        "\u5989\u598A\u598B\u598C\u598D\u598E\u598F\u5990"+
-        "\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998"+
-        "\u5999\u599A\u599B\u599C\u599D\u599E\u599F\u59A0"+
-        "\u59A1\u59A2\u59A3\u59A4\u59A5\u59A6\u59A7\u59A8"+
-        "\u59A9\u59AA\u59AB\u59AC\u59AD\u59AE\u59AF\u59B0"+
-        "\u59B1\u59B2\u59B3\u59B4\u59B5\u59B6\u59B7\u59B8"+
-        "\u59B9\u59BA\u59BB\u59BC\u59BD\u59BE\u59BF\u59C0"+
-        "\u59C1\u59C2\u59C3\u59C4\u59C5\u59C6\u59C7\u59C8"+
-        "\u59C9\u59CA\u59CB\u59CC\u59CD\u59CE\u59CF\u59D0"+
-        "\u59D1\u59D2\u59D3\u59D4\u59D5\u59D6\u59D7\u59D8"+
-        "\u59D9\u59DA\u59DB\u59DC\u59DD\u59DE\u59DF\u59E0"+
-        "\u59E1\u59E2\u59E3\u59E4\u59E5\u59E6\u59E7\u59E8"+
-        "\u59E9\u59EA\u59EB\u59EC\u59ED\u59EE\u59EF\u59F0"+
-        "\u59F1\u59F2\u59F3\u59F4\u59F5\u59F6\u59F7\u59F8"+
-        "\u59F9\u59FA\u59FB\u59FC\u59FD\u59FE\u59FF\u5A00"+
-        "\u5A01\u5A02\u5A03\u5A04\u5A05\u5A06\u5A07\u5A08"+
-        "\u5A09\u5A0A\u5A0B\u5A0C\u5A0D\u5A0E\u5A0F\u5A10"+
-        "\u5A11\u5A12\u5A13\u5A14\u5A15\u5A16\u5A17\u5A18"+
-        "\u5A19\u5A1A\u5A1B\u5A1C\u5A1D\u5A1E\u5A1F\u5A20"+
-        "\u5A21\u5A22\u5A23\u5A24\u5A25\u5A26\u5A27\u5A28"+
-        "\u5A29\u5A2A\u5A2B\u5A2C\u5A2D\u5A2E\u5A2F\u5A30"+
-        "\u5A31\u5A32\u5A33\u5A34\u5A35\u5A36\u5A37\u5A38"+
-        "\u5A39\u5A3A\u5A3B\u5A3C\u5A3D\u5A3E\u5A3F\u5A40"+
-        "\u5A41\u5A42\u5A43\u5A44\u5A45\u5A46\u5A47\u5A48"+
-        "\u5A49\u5A4A\u5A4B\u5A4C\u5A4D\u5A4E\u5A4F\u5A50"+
-        "\u5A51\u5A52\u5A53\u5A54\u5A55\u5A56\u5A57\u5A58"+
-        "\u5A59\u5A5A\u5A5B\u5A5C\u5A5D\u5A5E\u5A5F\u5A60"+
-        "\u5A61\u5A62\u5A63\u5A64\u5A65\u5A66\u5A67\u5A68"+
-        "\u5A69\u5A6A\u5A6B\u5A6C\u5A6D\u5A6E\u5A6F\u5A70"+
-        "\u5A71\u5A72\u5A73\u5A74\u5A75\u5A76\u5A77\u5A78"+
-        "\u5A79\u5A7A\u5A7B\u5A7C\u5A7D\u5A7E\u5A7F\u5A80"+
-        "\u5A81\u5A82\u5A83\u5A84\u5A85\u5A86\u5A87\u5A88"+
-        "\u5A89\u5A8A\u5A8B\u5A8C\u5A8D\u5A8E\u5A8F\u5A90"+
-        "\u5A91\u5A92\u5A93\u5A94\u5A95\u5A96\u5A97\u5A98"+
-        "\u5A99\u5A9A\u5A9B\u5A9C\u5A9D\u5A9E\u5A9F\u5AA0"+
-        "\u5AA1\u5AA2\u5AA3\u5AA4\u5AA5\u5AA6\u5AA7\u5AA8"+
-        "\u5AA9\u5AAA\u5AAB\u5AAC\u5AAD\u5AAE\u5AAF\u5AB0"+
-        "\u5AB1\u5AB2\u5AB3\u5AB4\u5AB5\u5AB6\u5AB7\u5AB8"+
-        "\u5AB9\u5ABA\u5ABB\u5ABC\u5ABD\u5ABE\u5ABF\u5AC0"+
-        "\u5AC1\u5AC2\u5AC3\u5AC4\u5AC5\u5AC6\u5AC7\u5AC8"+
-        "\u5AC9\u5ACA\u5ACB\u5ACC\u5ACD\u5ACE\u5ACF\u5AD0"+
-        "\u5AD1\u5AD2\u5AD3\u5AD4\u5AD5\u5AD6\u5AD7\u5AD8"+
-        "\u5AD9\u5ADA\u5ADB\u5ADC\u5ADD\u5ADE\u5ADF\u5AE0"+
-        "\u5AE1\u5AE2\u5AE3\u5AE4\u5AE5\u5AE6\u5AE7\u5AE8"+
-        "\u5AE9\u5AEA\u5AEB\u5AEC\u5AED\u5AEE\u5AEF\u5AF0"+
-        "\u5AF1\u5AF2\u5AF3\u5AF4\u5AF5\u5AF6\u5AF7\u5AF8"+
-        "\u5AF9\u5AFA\u5AFB\u5AFC\u5AFD\u5AFE\u5AFF\u5B00"+
-        "\u5B01\u5B02\u5B03\u5B04\u5B05\u5B06\u5B07\u5B08"+
-        "\u5B09\u5B0A\u5B0B\u5B0C\u5B0D\u5B0E\u5B0F\u5B10"+
-        "\u5B11\u5B12\u5B13\u5B14\u5B15\u5B16\u5B17\u5B18"+
-        "\u5B19\u5B1A\u5B1B\u5B1C\u5B1D\u5B1E\u5B1F\u5B20"+
-        "\u5B21\u5B22\u5B23\u5B24\u5B25\u5B26\u5B27\u5B28"+
-        "\u5B29\u5B2A\u5B2B\u5B2C\u5B2D\u5B2E\u5B2F\u5B30"+
-        "\u5B31\u5B32\u5B33\u5B34\u5B35\u5B36\u5B37\u5B38"+
-        "\u5B39\u5B3A\u5B3B\u5B3C\u5B3D\u5B3E\u5B3F\u5B40"+
-        "\u5B41\u5B42\u5B43\u5B44\u5B45\u5B46\u5B47\u5B48"+
-        "\u5B49\u5B4A\u5B4B\u5B4C\u5B4D\u5B4E\u5B4F\u5B50"+
-        "\u5B51\u5B52\u5B53\u5B54\u5B55\u5B56\u5B57\u5B58"+
-        "\u5B59\u5B5A\u5B5B\u5B5C\u5B5D\u5B5E\u5B5F\u5B60"+
-        "\u5B61\u5B62\u5B63\u5B64\u5B65\u5B66\u5B67\u5B68"+
-        "\u5B69\u5B6A\u5B6B\u5B6C\u5B6D\u5B6E\u5B6F\u5B70"+
-        "\u5B71\u5B72\u5B73\u5B74\u5B75\u5B76\u5B77\u5B78"+
-        "\u5B79\u5B7A\u5B7B\u5B7C\u5B7D\u5B7E\u5B7F\u5B80"+
-        "\u5B81\u5B82\u5B83\u5B84\u5B85\u5B86\u5B87\u5B88"+
-        "\u5B89\u5B8A\u5B8B\u5B8C\u5B8D\u5B8E\u5B8F\u5B90"+
-        "\u5B91\u5B92\u5B93\u5B94\u5B95\u5B96\u5B97\u5B98"+
-        "\u5B99\u5B9A\u5B9B\u5B9C\u5B9D\u5B9E\u5B9F\u5BA0"+
-        "\u5BA1\u5BA2\u5BA3\u5BA4\u5BA5\u5BA6\u5BA7\u5BA8"+
-        "\u5BA9\u5BAA\u5BAB\u5BAC\u5BAD\u5BAE\u5BAF\u5BB0"+
-        "\u5BB1\u5BB2\u5BB3\u5BB4\u5BB5\u5BB6\u5BB7\u5BB8"+
-        "\u5BB9\u5BBA\u5BBB\u5BBC\u5BBD\u5BBE\u5BBF\u5BC0"+
-        "\u5BC1\u5BC2\u5BC3\u5BC4\u5BC5\u5BC6\u5BC7\u5BC8"+
-        "\u5BC9\u5BCA\u5BCB\u5BCC\u5BCD\u5BCE\u5BCF\u5BD0"+
-        "\u5BD1\u5BD2\u5BD3\u5BD4\u5BD5\u5BD6\u5BD7\u5BD8"+
-        "\u5BD9\u5BDA\u5BDB\u5BDC\u5BDD\u5BDE\u5BDF\u5BE0"+
-        "\u5BE1\u5BE2\u5BE3\u5BE4\u5BE5\u5BE6\u5BE7\u5BE8"+
-        "\u5BE9\u5BEA\u5BEB\u5BEC\u5BED\u5BEE\u5BEF\u5BF0"+
-        "\u5BF1\u5BF2\u5BF3\u5BF4\u5BF5\u5BF6\u5BF7\u5BF8"+
-        "\u5BF9\u5BFA\u5BFB\u5BFC\u5BFD\u5BFE\u5BFF\u5C00"+
-        "\u5C01\u5C02\u5C03\u5C04\u5C05\u5C06\u5C07\u5C08"+
-        "\u5C09\u5C0A\u5C0B\u5C0C\u5C0D\u5C0E\u5C0F\u5C10"+
-        "\u5C11\u5C12\u5C13\u5C14\u5C15\u5C16\u5C17\u5C18"+
-        "\u5C19\u5C1A\u5C1B\u5C1C\u5C1D\u5C1E\u5C1F\u5C20"+
-        "\u5C21\u5C22\u5C23\u5C24\u5C25\u5C26\u5C27\u5C28"+
-        "\u5C29\u5C2A\u5C2B\u5C2C\u5C2D\u5C2E\u5C2F\u5C30"+
-        "\u5C31\u5C32\u5C33\u5C34\u5C35\u5C36\u5C37\u5C38"+
-        "\u5C39\u5C3A\u5C3B\u5C3C\u5C3D\u5C3E\u5C3F\u5C40"+
-        "\u5C41\u5C42\u5C43\u5C44\u5C45\u5C46\u5C47\u5C48"+
-        "\u5C49\u5C4A\u5C4B\u5C4C\u5C4D\u5C4E\u5C4F\u5C50"+
-        "\u5C51\u5C52\u5C53\u5C54\u5C55\u5C56\u5C57\u5C58"+
-        "\u5C59\u5C5A\u5C5B\u5C5C\u5C5D\u5C5E\u5C5F\u5C60"+
-        "\u5C61\u5C62\u5C63\u5C64\u5C65\u5C66\u5C67\u5C68"+
-        "\u5C69\u5C6A\u5C6B\u5C6C\u5C6D\u5C6E\u5C6F\u5C70"+
-        "\u5C71\u5C72\u5C73\u5C74\u5C75\u5C76\u5C77\u5C78"+
-        "\u5C79\u5C7A\u5C7B\u5C7C\u5C7D\u5C7E\u5C7F\u5C80"+
-        "\u5C81\u5C82\u5C83\u5C84\u5C85\u5C86\u5C87\u5C88";
-
-    private final static String innerEncoderIndex4=
-        "\u5C89\u5C8A\u5C8B\u5C8C\u5C8D\u5C8E\u5C8F\u5C90"+
-        "\u5C91\u5C92\u5C93\u5C94\u5C95\u5C96\u5C97\u5C98"+
-        "\u5C99\u5C9A\u5C9B\u5C9C\u5C9D\u5C9E\u5C9F\u5CA0"+
-        "\u5CA1\u5CA2\u5CA3\u5CA4\u5CA5\u5CA6\u5CA7\u5CA8"+
-        "\u5CA9\u5CAA\u5CAB\u5CAC\u5CAD\u5CAE\u5CAF\u5CB0"+
-        "\u5CB1\u5CB2\u5CB3\u5CB4\u5CB5\u5CB6\u5CB7\u5CB8"+
-        "\u5CB9\u5CBA\u5CBB\u5CBC\u5CBD\u5CBE\u5CBF\u5CC0"+
-        "\u5CC1\u5CC2\u5CC3\u5CC4\u5CC5\u5CC6\u5CC7\u5CC8"+
-        "\u5CC9\u5CCA\u5CCB\u5CCC\u5CCD\u5CCE\u5CCF\u5CD0"+
-        "\u5CD1\u5CD2\u5CD3\u5CD4\u5CD5\u5CD6\u5CD7\u5CD8"+
-        "\u5CD9\u5CDA\u5CDB\u5CDC\u5CDD\u5CDE\uFE6F\u5CDF"+
-        "\u5CE0\u5CE1\u5CE2\u5CE3\u5CE4\u5CE5\u5CE6\u5CE7"+
-        "\u5CE8\u5CE9\u5CEA\u5CEB\u5CEC\u5CED\u5CEE\u5CEF"+
-        "\u5CF0\u5CF1\u5CF2\u5CF3\u5CF4\u5CF5\u5CF6\u5CF7"+
-        "\u5CF8\u5CF9\u5CFA\u5CFB\u5CFC\u5CFD\u5CFE\u5CFF"+
-        "\u5D00\u5D01\u5D02\u5D03\u5D04\u5D05\u5D06\u5D07"+
-        "\u5D08\u5D09\u5D0A\u5D0B\u5D0C\u5D0D\u5D0E\u5D0F"+
-        "\u5D10\u5D11\u5D12\u5D13\u5D14\u5D15\u5D16\u5D17"+
-        "\u5D18\u5D19\u5D1A\u5D1B\u5D1C\u5D1D\u5D1E\u5D1F"+
-        "\u5D20\u5D21\u5D22\u5D23\u5D24\u5D25\u5D26\u5D27"+
-        "\u5D28\u5D29\u5D2A\u5D2B\u5D2C\u5D2D\u5D2E\u5D2F"+
-        "\u5D30\u5D31\u5D32\u5D33\u5D34\u5D35\u5D36\u5D37"+
-        "\u5D38\u5D39\u5D3A\u5D3B\u5D3C\u5D3D\u5D3E\u5D3F"+
-        "\u5D40\u5D41\u5D42\u5D43\u5D44\u5D45\u5D46\u5D47"+
-        "\u5D48\u5D49\u5D4A\u5D4B\u5D4C\u5D4D\u5D4E\u5D4F"+
-        "\u5D50\u5D51\u5D52\u5D53\u5D54\u5D55\u5D56\u5D57"+
-        "\u5D58\u5D59\u5D5A\u5D5B\u5D5C\u5D5D\u5D5E\u5D5F"+
-        "\u5D60\u5D61\u5D62\u5D63\u5D64\u5D65\u5D66\u5D67"+
-        "\u5D68\u5D69\u5D6A\u5D6B\u5D6C\u5D6D\u5D6E\u5D6F"+
-        "\u5D70\u5D71\u5D72\u5D73\u5D74\u5D75\u5D76\u5D77"+
-        "\u5D78\u5D79\u5D7A\u5D7B\u5D7C\u5D7D\u5D7E\u5D7F"+
-        "\u5D80\u5D81\u5D82\u5D83\u5D84\u5D85\u5D86\u5D87"+
-        "\u5D88\u5D89\u5D8A\u5D8B\u5D8C\u5D8D\u5D8E\u5D8F"+
-        "\u5D90\u5D91\u5D92\u5D93\u5D94\u5D95\u5D96\u5D97"+
-        "\u5D98\u5D99\u5D9A\u5D9B\u5D9C\u5D9D\u5D9E\u5D9F"+
-        "\u5DA0\u5DA1\u5DA2\u5DA3\u5DA4\u5DA5\u5DA6\u5DA7"+
-        "\u5DA8\u5DA9\u5DAA\u5DAB\u5DAC\u5DAD\u5DAE\u5DAF"+
-        "\u5DB0\u5DB1\u5DB2\u5DB3\u5DB4\u5DB5\u5DB6\u5DB7"+
-        "\u5DB8\u5DB9\u5DBA\u5DBB\u5DBC\u5DBD\u5DBE\u5DBF"+
-        "\u5DC0\u5DC1\u5DC2\u5DC3\u5DC4\u5DC5\u5DC6\u5DC7"+
-        "\u5DC8\u5DC9\u5DCA\u5DCB\u5DCC\u5DCD\u5DCE\u5DCF"+
-        "\u5DD0\u5DD1\u5DD2\u5DD3\u5DD4\u5DD5\u5DD6\u5DD7"+
-        "\u5DD8\u5DD9\u5DDA\u5DDB\u5DDC\u5DDD\u5DDE\u5DDF"+
-        "\u5DE0\u5DE1\u5DE2\u5DE3\u5DE4\u5DE5\u5DE6\uFE70"+
-        "\u5DE7\u5DE8\u5DE9\u5DEA\u5DEB\u5DEC\u5DED\u5DEE"+
-        "\u5DEF\u5DF0\u5DF1\u5DF2\u5DF3\u5DF4\u5DF5\u5DF6"+
-        "\u5DF7\u5DF8\u5DF9\u5DFA\u5DFB\u5DFC\u5DFD\u5DFE"+
-        "\u5DFF\u5E00\u5E01\u5E02\u5E03\u5E04\u5E05\u5E06"+
-        "\u5E07\u5E08\u5E09\u5E0A\u5E0B\u5E0C\u5E0D\u5E0E"+
-        "\u5E0F\u5E10\u5E11\u5E12\u5E13\u5E14\u5E15\u5E16"+
-        "\u5E17\u5E18\u5E19\u5E1A\u5E1B\u5E1C\u5E1D\u5E1E"+
-        "\u5E1F\u5E20\u5E21\u5E22\u5E23\u5E24\u5E25\u5E26"+
-        "\u5E27\u5E28\u5E29\u5E2A\u5E2B\u5E2C\u5E2D\u5E2E"+
-        "\u5E2F\u5E30\u5E31\u5E32\u5E33\u5E34\u5E35\u5E36"+
-        "\u5E37\u5E38\u5E39\u5E3A\u5E3B\u5E3C\u5E3D\u5E3E"+
-        "\u5E3F\u5E40\u5E41\u5E42\u5E43\u5E44\u5E45\u5E46"+
-        "\u5E47\u5E48\u5E49\u5E4A\u5E4B\u5E4C\u5E4D\u5E4E"+
-        "\u5E4F\u5E50\u5E51\u5E52\u5E53\u5E54\u5E55\u5E56"+
-        "\u5E57\u5E58\u5E59\u5E5A\u5E5B\u5E5C\u5E5D\u5E5E"+
-        "\u5E5F\u5E60\u5E61\u5E62\u5E63\u5E64\u5E65\u5E66"+
-        "\u5E67\u5E68\u5E69\u5E6A\u5E6B\u5E6C\u5E6D\u5E6E"+
-        "\u5E6F\u5E70\u5E71\u5E72\u5E73\u5E74\u5E75\u5E76"+
-        "\u5E77\u5E78\u5E79\u5E7A\u5E7B\u5E7C\u5E7D\u5E7E"+
-        "\u5E7F\u5E80\u5E81\u5E82\u5E83\u5E84\u5E85\u5E86"+
-        "\u5E87\u5E88\u5E89\u5E8A\u5E8B\u5E8C\u5E8D\u5E8E"+
-        "\u5E8F\u5E90\u5E91\u5E92\u5E93\u5E94\u5E95\u5E96"+
-        "\u5E97\u5E98\u5E99\u5E9A\u5E9B\u5E9C\u5E9D\u5E9E"+
-        "\u5E9F\u5EA0\u5EA1\u5EA2\u5EA3\u5EA4\u5EA5\u5EA6"+
-        "\u5EA7\u5EA8\u5EA9\u5EAA\u5EAB\u5EAC\u5EAD\u5EAE"+
-        "\u5EAF\u5EB0\u5EB1\u5EB2\u5EB3\u5EB4\u5EB5\u5EB6"+
-        "\u5EB7\u5EB8\u5EB9\u5EBA\u5EBB\u5EBC\u5EBD\u5EBE"+
-        "\u5EBF\u5EC0\u5EC1\u5EC2\u5EC3\u5EC4\u5EC5\u5EC6"+
-        "\u5EC7\u5EC8\u5EC9\u5ECA\u5ECB\u5ECC\u5ECD\u5ECE"+
-        "\u5ECF\u5ED0\u5ED1\u5ED2\u5ED3\u5ED4\u5ED5\u5ED6"+
-        "\u5ED7\u5ED8\u5ED9\u5EDA\u5EDB\u5EDC\u5EDD\u5EDE"+
-        "\u5EDF\u5EE0\u5EE1\u5EE2\u5EE3\u5EE4\u5EE5\u5EE6"+
-        "\u5EE7\u5EE8\u5EE9\u5EEA\u5EEB\u5EEC\u5EED\u5EEE"+
-        "\u5EEF\u5EF0\u5EF1\u5EF2\u5EF3\u5EF4\u5EF5\u5EF6"+
-        "\u5EF7\u5EF8\u5EF9\u5EFA\u5EFB\u5EFC\u5EFD\u5EFE"+
-        "\u5EFF\u5F00\u5F01\u5F02\u5F03\u5F04\u5F05\u5F06"+
-        "\u5F07\u5F08\u5F09\u5F0A\u5F0B\u5F0C\u5F0D\u5F0E"+
-        "\u5F0F\u5F10\u5F11\u5F12\u5F13\u5F14\u5F15\u5F16"+
-        "\u5F17\u5F18\u5F19\u5F1A\u5F1B\u5F1C\u5F1D\u5F1E"+
-        "\u5F1F\u5F20\u5F21\u5F22\u5F23\u5F24\u5F25\u5F26"+
-        "\u5F27\u5F28\u5F29\u5F2A\u5F2B\u5F2C\u5F2D\u5F2E"+
-        "\u5F2F\u5F30\u5F31\u5F32\u5F33\u5F34\u5F35\u5F36"+
-        "\u5F37\u5F38\u5F39\u5F3A\u5F3B\u5F3C\u5F3D\u5F3E"+
-        "\u5F3F\u5F40\u5F41\u5F42\u5F43\u5F44\u5F45\u5F46"+
-        "\u5F47\u5F48\u5F49\u5F4A\u5F4B\u5F4C\u5F4D\u5F4E"+
-        "\u5F4F\u5F50\u5F51\u5F52\u5F53\u5F54\u5F55\u5F56"+
-        "\u5F57\u5F58\u5F59\u5F5A\u5F5B\u5F5C\u5F5D\u5F5E"+
-        "\u5F5F\u5F60\u5F61\u5F62\u5F63\u5F64\u5F65\u5F66"+
-        "\u5F67\u5F68\u5F69\u5F6A\u5F6B\u5F6C\u5F6D\u5F6E"+
-        "\u5F6F\u5F70\u5F71\u5F72\u5F73\u5F74\u5F75\u5F76"+
-        "\u5F77\u5F78\u5F79\u5F7A\u5F7B\u5F7C\u5F7D\u5F7E"+
-        "\u5F7F\u5F80\u5F81\u5F82\u5F83\u5F84\u5F85\u5F86"+
-        "\u5F87\u5F88\u5F89\u5F8A\u5F8B\u5F8C\u5F8D\u5F8E"+
-        "\u5F8F\u5F90\u5F91\u5F92\u5F93\u5F94\u5F95\u5F96"+
-        "\u5F97\u5F98\u5F99\u5F9A\u5F9B\u5F9C\u5F9D\u5F9E"+
-        "\u5F9F\u5FA0\u5FA1\u5FA2\u5FA3\u5FA4\u5FA5\u5FA6"+
-        "\u5FA7\u5FA8\u5FA9\u5FAA\u5FAB\u5FAC\u5FAD\u5FAE"+
-        "\u5FAF\u5FB0\u5FB1\u5FB2\u5FB3\u5FB4\u5FB5\u5FB6"+
-        "\u5FB7\u5FB8\u5FB9\u5FBA\u5FBB\u5FBC\u5FBD\uFE72"+
-        "\u5FBE\u5FBF\u5FC0\u5FC1\u5FC2\u5FC3\u5FC4\u5FC5"+
-        "\u5FC6\u5FC7\u5FC8\u5FC9\u5FCA\u5FCB\u5FCC\u5FCD"+
-        "\u5FCE\u5FCF\u5FD0\u5FD1\u5FD2\u5FD3\u5FD4\u5FD5"+
-        "\u5FD6\u5FD7\u5FD8\u5FD9\u5FDA\u5FDB\u5FDC\u5FDD"+
-        "\u5FDE\u5FDF\u5FE0\u5FE1\u5FE2\u5FE3\u5FE4\u5FE5"+
-        "\u5FE6\u5FE7\u5FE8\u5FE9\u5FEA\u5FEB\u5FEC\u5FED"+
-        "\u5FEE\u5FEF\u5FF0\u5FF1\u5FF2\u5FF3\u5FF4\u5FF5"+
-        "\u5FF6\u5FF7\u5FF8\u5FF9\u5FFA\u5FFB\u5FFC\u5FFD"+
-        "\u5FFE\u5FFF\u6000\u6001\u6002\u6003\u6004\u6005"+
-        "\u6006\u6007\u6008\u6009\u600A\u600B\u600C\u600D"+
-        "\u600E\u600F\u6010\u6011\u6012\u6013\u6014\u6015"+
-        "\u6016\u6017\u6018\u6019\u601A\u601B\u601C\u601D"+
-        "\u601E\u601F\u6020\u6021\u6022\u6023\u6024\u6025"+
-        "\u6026\u6027\u6028\u6029\u602A\u602B\u602C\u602D"+
-        "\u602E\u602F\u6030\u6031\uFE78\u6032\u6033\u6034"+
-        "\u6035\uFE77\u6036\u6037\u6038\u6039\u603A\u603B"+
-        "\u603C\u603D\u603E\u603F\u6040\u6041\u6042\u6043"+
-        "\u6044\u6045\u6046\u6047\u6048\u6049\u604A\u604B"+
-        "\u604C\u604D\u604E\u604F\u6050\u6051\u6052\u6053"+
-        "\u6054\u6055\u6056\u6057\u6058\u6059\u605A\u605B"+
-        "\u605C\u605D\u605E\u605F\u6060\uFE7A\u6061\u6062"+
-        "\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606A"+
-        "\u606B\u606C\u606D\u606E\u606F\u6070\u6071\u6072"+
-        "\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607A"+
-        "\u607B\u607C\u607D\u607E\u607F\u6080\u6081\u6082"+
-        "\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608A"+
-        "\u608B\u608C\u608D\u608E\u608F\u6090\u6091\u6092"+
-        "\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609A"+
-        "\u609B\u609C\u609D\u609E\u609F\u60A0\u60A1\u60A2"+
-        "\u60A3\u60A4\u60A5\u60A6\u60A7\u60A8\u60A9\u60AA"+
-        "\u60AB\u60AC\u60AD\u60AE\u60AF\u60B0\u60B1\u60B2"+
-        "\u60B3\u60B4\u60B5\u60B6\u60B7\u60B8\u60B9\u60BA"+
-        "\u60BB\u60BC\u60BD\u60BE\u60BF\u60C0\u60C1\u60C2"+
-        "\u60C3\u60C4\u60C5\u60C6\u60C7\u60C8\u60C9\u60CA"+
-        "\u60CB\u60CC\u60CD\u60CE\u60CF\u60D0\u60D1\u60D2"+
-        "\u60D3\u60D4\u60D5\u60D6\u60D7\u60D8\u60D9\u60DA"+
-        "\u60DB\u60DC\u60DD\u60DE\u60DF\u60E0\u60E1\u60E2"+
-        "\u60E3\u60E4\u60E5\u60E6\u60E7\u60E8\u60E9\u60EA"+
-        "\u60EB\u60EC\u60ED\u60EE\u60EF\u60F0\u60F1\u60F2"+
-        "\u60F3\u60F4\u60F5\u60F6\u60F7\u60F8\u60F9\u60FA"+
-        "\u60FB\u60FC\u60FD\u60FE\u60FF\u6100\u6101\u6102"+
-        "\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610A"+
-        "\u610B\u610C\u610D\u610E\u610F\u6110\u6111\u6112"+
-        "\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611A"+
-        "\u611B\u611C\u611D\u611E\u611F\u6120\u6121\u6122"+
-        "\u6123\u6124\u6125\u6126\u6127\u6128\u6129\u612A"+
-        "\u612B\u612C\u612D\u612E\u612F\u6130\u6131\u6132"+
-        "\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613A"+
-        "\u613B\u613C\u613D\u613E\u613F\u6140\u6141\u6142"+
-        "\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614A"+
-        "\u614B\u614C\u614D\u614E\u614F\u6150\u6151\u6152"+
-        "\u6153\u6154\u6155\u6156\u6157\u6158\uFE7B\u6159"+
-        "\u615A\u615B\u615C\u615D\u615E\u615F\u6160\u6161"+
-        "\u6162\u6163\u6164\u6165\u6166\u6167\u6168\u6169"+
-        "\u616A\u616B\u616C\u616D\u616E\u616F\u6170\u6171"+
-        "\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179"+
-        "\u617A\u617B\u617C\u617D\u617E\u617F\u6180\u6181"+
-        "\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u6189"+
-        "\u618A\u618B\u618C\u618D\u618E\u618F\u6190\u6191"+
-        "\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199"+
-        "\u619A\u619B\u619C\u619D\u619E\u619F\u61A0\u61A1"+
-        "\u61A2\u61A3\u61A4\u61A5\u61A6\u61A7\u61A8\u61A9"+
-        "\u61AA\u61AB\u61AC\u61AD\u61AE\u61AF\u61B0\u61B1"+
-        "\u61B2\u61B3\u61B4\u61B5\u61B6\u61B7\u61B8\u61B9"+
-        "\u61BA\u61BB\u61BC\u61BD\u61BE\u61BF\u61C0\u61C1"+
-        "\u61C2\u61C3\u61C4\u61C5\u61C6\u61C7\u61C8\u61C9"+
-        "\u61CA\u61CB\u61CC\u61CD\u61CE\u61CF\u61D0\u61D1"+
-        "\u61D2\u61D3\u61D4\u61D5\u61D6\u61D7\u61D8\u61D9"+
-        "\u61DA\u61DB\u61DC\u61DD\u61DE\u61DF\u61E0\u61E1"+
-        "\u61E2\u61E3\u61E4\u61E5\u61E6\u61E7\u61E8\u61E9"+
-        "\u61EA\u61EB\u61EC\u61ED\u61EE\u61EF\u61F0\u61F1"+
-        "\u61F2\u61F3\u61F4\u61F5\u61F6\u61F7\u61F8\u61F9"+
-        "\u61FA\u61FB\u61FC\u61FD\u61FE\u61FF\u6200\u6201"+
-        "\u6202\u6203\u6204\u6205\u6206\u6207\u6208\u6209"+
-        "\u620A\u620B\u620C\u620D\u620E\u620F\u6210\u6211"+
-        "\u6212\u6213\u6214\u6215\u6216\u6217\u6218\u6219"+
-        "\u621A\u621B\u621C\u621D\u621E\u621F\u6220\u6221"+
-        "\u6222\u6223\u6224\u6225\u6226\u6227\u6228\u6229"+
-        "\u622A\u622B\u622C\u622D\u622E\u622F\u6230\u6231"+
-        "\u6232\u6233\u6234\u6235\u6236\u6237\u6238\u6239"+
-        "\u623A\u623B\u623C\u623D\u623E\u623F\u6240\u6241"+
-        "\u6242\u6243\u6244\u6245\u6246\u6247\u6248\u6249"+
-        "\u624A\u624B\u624C\u624D\u624E\u624F\u6250\u6251"+
-        "\u6252\u6253\u6254\u6255\u6256\u6257\u6258\u6259"+
-        "\u625A\u625B\u625C\u625D\u625E\u625F\u6260\u6261"+
-        "\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269"+
-        "\u626A\u626B\u626C\u626D\u626E\u626F\u6270\u6271"+
-        "\u6272\u6273\u6274\u6275\u6276\u6277\u6278\u6279"+
-        "\u627A\u627B\u627C\u627D\u627E\u627F\u6280\u6281"+
-        "\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289"+
-        "\u628A\u628B\u628C\u628D\u628E\u628F\u6290\u6291"+
-        "\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299"+
-        "\u629A\u629B\u629C\u629D\u629E\u629F\u62A0\u62A1"+
-        "\u62A2\u62A3\u62A4\u62A5\u62A6\u62A7\u62A8\u62A9"+
-        "\u62AA\u62AB\u62AC\u62AD\u62AE\u62AF\u62B0\u62B1"+
-        "\u62B2\u62B3\u62B4\u62B5\u62B6\u62B7\u62B8\u62B9"+
-        "\u62BA\u62BB\u62BC\u62BD\u62BE\u62BF\u62C0\u62C1"+
-        "\u62C2\u62C3\u62C4\u62C5\u62C6\u62C7\u62C8\u62C9"+
-        "\u62CA\u62CB\u62CC\u62CD\uFE7D\u62CE\u62CF\u62D0"+
-        "\u62D1\u62D2\u62D3\u62D4\u62D5\u62D6\u62D7\u62D8"+
-        "\u62D9\u62DA\u62DB\u62DC\u62DD\u62DE\u62DF\u62E0"+
-        "\u62E1\uFE7C\u62E2\u62E3\u62E4\u62E5\u62E6\u62E7"+
-        "\u62E8\u62E9\u62EA\u62EB\u62EC\u62ED\u62EE\u62EF"+
-        "\u62F0\u62F1\u62F2\u62F3\u62F4\u62F5\u62F6\u62F7"+
-        "\u62F8\u62F9\u62FA\u62FB\u62FC\u62FD\u62FE\u62FF"+
-        "\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307"+
-        "\u6308\u6309\u630A\u630B\u630C\u630D\u630E\u630F"+
-        "\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317"+
-        "\u6318\u6319\u631A\u631B\u631C\u631D\u631E\u631F"+
-        "\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327"+
-        "\u6328\u6329\u632A\u632B\u632C\u632D\u632E\u632F"+
-        "\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337"+
-        "\u6338\u6339\u633A\u633B\u633C\u633D\u633E\u633F"+
-        "\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347"+
-        "\u6348\u6349\u634A\u634B\u634C\u634D\u634E\u634F"+
-        "\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357"+
-        "\u6358\u6359\u635A\u635B\u635C\u635D\u635E\u635F"+
-        "\u6360\u6361\u6362\u6363\u6364\u6365\u6366\u6367"+
-        "\u6368\u6369\u636A\u636B\u636C\u636D\u636E\u636F"+
-        "\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377"+
-        "\u6378\u6379\u637A\u637B\u637C\u637D\u637E\u637F"+
-        "\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387"+
-        "\u6388\u6389\u638A\u638B\u638C\u638D\u638E\u638F"+
-        "\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397"+
-        "\u6398\u6399\u639A\u639B\u639C\u639D\u639E\u639F"+
-        "\u63A0\u63A1\u63A2\uFE80\u63A3\u63A4\u63A5\u63A6"+
-        "\u63A7\uFE81\u63A8\u63A9\u63AA\u63AB\u63AC\u63AD"+
-        "\u63AE\u63AF\u63B0\u63B1\u63B2\u63B3\u63B4\u63B5"+
-        "\u63B6\u63B7\u63B8\u63B9\u63BA\u63BB\u63BC\u63BD"+
-        "\u63BE\u63BF\u63C0\u63C1\u63C2\u63C3\u63C4\u63C5"+
-        "\u63C6\u63C7\u63C8\u63C9\u63CA\u63CB\u63CC\u63CD"+
-        "\u63CE\u63CF\u63D0\u63D1\u63D2\u63D3\u63D4\u63D5"+
-        "\u63D6\u63D7\u63D8\u63D9\u63DA\u63DB\u63DC\u63DD"+
-        "\u63DE\u63DF\u63E0\u63E1\u63E2\u63E3\u63E4\u63E5"+
-        "\u63E6\u63E7\u63E8\u63E9\u63EA\u63EB\u63EC\u63ED"+
-        "\u63EE\u63EF\u63F0\u63F1\u63F2\u63F3\u63F4\u63F5"+
-        "\u63F6\u63F7\u63F8\u63F9\uFE82\u63FA\u63FB\u63FC"+
-        "\u63FD\u63FE\u63FF\u6400\u6401\u6402\u6403\u6404"+
-        "\u6405\u6406\u6407\u6408\u6409\uFE83\u640A\u640B"+
-        "\u640C\u640D\u640E\u640F\u6410\u6411\u6412\u6413"+
-        "\u6414\u6415\u6416\u6417\u6418\u6419\u641A\u641B"+
-        "\u641C\u641D\u641E\u641F\u6420\u6421\u6422\u6423"+
-        "\u6424\u6425\u6426\u6427\u6428\u6429\u642A\u642B"+
-        "\u642C\u642D\u642E\u642F\u6430\u6431\u6432\u6433"+
-        "\u6434\u6435\u6436\u6437\u6438\u6439\u643A\u643B"+
-        "\u643C\u643D\u643E\u643F\u6440\u6441\u6442\u6443"+
-        "\u6444\u6445\u6446\u6447\u6448\u6449\u644A\u644B"+
-        "\u644C\u644D\u644E\u644F\u6450\u6451\u6452\u6453"+
-        "\u6454\u6455\u6456\u6457\u6458\u6459\u645A\u645B"+
-        "\u645C\u645D\u645E\u645F\u6460\u6461\u6462\u6463"+
-        "\u6464\u6465\u6466\u6467\u6468\u6469\u646A\u646B"+
-        "\u646C\u646D\u646E\u646F\u6470\u6471\u6472\u6473"+
-        "\u6474\u6475\u6476\u6477\u6478\u6479\u647A\u647B"+
-        "\u647C\u647D\u647E\u647F\u6480\u6481\u6482\u6483"+
-        "\u6484\u6485\u6486\u6487\u6488\u6489\u648A\u648B"+
-        "\u648C\u648D\u648E\u648F\u6490\u6491\u6492\u6493"+
-        "\u6494\u6495\u6496\u6497\u6498\u6499\u649A\u649B"+
-        "\u649C\u649D\u649E\u649F\u64A0\u64A1\u64A2\u64A3"+
-        "\u64A4\u64A5\u64A6\u64A7\u64A8\u64A9\u64AA\u64AB"+
-        "\u64AC\u64AD\u64AE\u64AF\u64B0\u64B1\u64B2\u64B3"+
-        "\u64B4\u64B5\u64B6\u64B7\u64B8\u64B9\u64BA\u64BB"+
-        "\u64BC\u64BD\u64BE\u64BF\u64C0\u64C1\u64C2\u64C3"+
-        "\u64C4\u64C5\u64C6\u64C7\u64C8\u64C9\u64CA\u64CB"+
-        "\u64CC\u64CD\u64CE\u64CF\u64D0\u64D1\u64D2\u64D3"+
-        "\u64D4\u64D5\u64D6\u64D7\u64D8\u64D9\u64DA\u64DB"+
-        "\u64DC\u64DD\u64DE\u64DF\u64E0\u64E1\u64E2\u64E3"+
-        "\u64E4\u64E5\u64E6\u64E7\u64E8\u64E9\u64EA\u64EB"+
-        "\u64EC\u64ED\u64EE\u64EF\u64F0\u64F1\u64F2\u64F3"+
-        "\u64F4\u64F5\u64F6\u64F7\u64F8\u64F9\u64FA\u64FB"+
-        "\u64FC\u64FD\u64FE\u64FF\u6500\u6501\u6502\u6503"+
-        "\u6504\u6505\u6506\u6507\u6508\u6509\u650A\u650B"+
-        "\u650C\u650D\u650E\u650F\u6510\u6511\u6512\u6513"+
-        "\u6514\u6515\u6516\u6517\u6518\u6519\u651A\u651B"+
-        "\u651C\u651D\u651E\u651F\u6520\u6521\u6522\u6523"+
-        "\u6524\u6525\u6526\u6527\u6528\u6529\u652A\u652B"+
-        "\u652C\u652D\u652E\u652F\u6530\u6531\u6532\u6533"+
-        "\u6534\u6535\u6536\u6537\u6538\u6539\u653A\u653B"+
-        "\u653C\u653D\u653E\u653F\u6540\u6541\u6542\u6543"+
-        "\u6544\u6545\u6546\u6547\u6548\u6549\u654A\u654B"+
-        "\u654C\u654D\u654E\u654F\u6550\u6551\u6552\u6553"+
-        "\u6554\u6555\u6556\u6557\u6558\u6559\u655A\u655B"+
-        "\u655C\u655D\u655E\u655F\u6560\u6561\u6562\u6563"+
-        "\u6564\u6565\u6566\u6567\u6568\u6569\u656A\u656B"+
-        "\u656C\u656D\u656E\u656F\u6570\u6571\u6572\u6573"+
-        "\u6574\u6575\u6576\u6577\u6578\u6579\u657A\u657B"+
-        "\u657C\u657D\u657E\u657F\u6580\u6581\u6582\u6583"+
-        "\u6584\u6585\u6586\u6587\u6588\u6589\u658A\u658B"+
-        "\u658C\u658D\u658E\u658F\u6590\u6591\u6592\u6593"+
-        "\u6594\u6595\u6596\u6597\u6598\u6599\u659A\u659B"+
-        "\u659C\u659D\u659E\u659F\u65A0\u65A1\u65A2\u65A3"+
-        "\u65A4\u65A5\u65A6\u65A7\u65A8\u65A9\u65AA\u65AB"+
-        "\u65AC\u65AD\u65AE\u65AF\u65B0\u65B1\u65B2\u65B3"+
-        "\u65B4\u65B5\u65B6\u65B7\u65B8\u65B9\u65BA\u65BB"+
-        "\u65BC\u65BD\u65BE\u65BF\u65C0\u65C1\u65C2\uFE85"+
-        "\u65C3\u65C4\u65C5\u65C6\u65C7\u65C8\u65C9\u65CA"+
-        "\u65CB\u65CC\u65CD\u65CE\u65CF\u65D0\u65D1\u65D2"+
-        "\u65D3\u65D4\u65D5\u65D6\u65D7\u65D8\u65D9\u65DA"+
-        "\u65DB\u65DC\u65DD\u65DE\u65DF\u65E0\u65E1\u65E2"+
-        "\u65E3\u65E4\u65E5\u65E6\u65E7\u65E8\u65E9\u65EA"+
-        "\u65EB\u65EC\u65ED\u65EE\u65EF\u65F0\u65F1\u65F2"+
-        "\u65F3\u65F4\uFE86\u65F5\u65F6\uFE87\u65F7\u65F8"+
-        "\u65F9\u65FA\uFE88\uFE89\u65FB\uFE8A\uFE8B\u65FC"+
-        "\u65FD\u65FE\u65FF\u6600\u6601\u6602\u6603\u6604"+
-        "\u6605\u6606\u6607\u6608\u6609\u660A\u660B\u660C"+
-        "\u660D\u660E\u660F\uFE8D\u6610\u6611\u6612\uFE8C"+
-        "\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u661A"+
-        "\u661B\u661C\u661D\u661E\u661F\u6620\u6621\u6622"+
-        "\u6623\u6624\u6625\u6626\u6627\u6628\uFE8F\uFE8E"+
-        "\u6629\u662A\u662B\u662C\u662D\u662E\u662F\u6630"+
-        "\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638"+
-        "\u6639\u663A\u663B\u663C\u663D\u663E\u663F\u6640"+
-        "\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648"+
-        "\u6649\u664A\u664B\u664C\u664D\u664E\u664F\u6650"+
-        "\u6651\u6652\u6653\u6654\u6655\u6656\u6657\u6658"+
-        "\u6659\u665A\u665B\u665C\u665D\u665E\u665F\u6660"+
-        "\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668"+
-        "\u6669\u666A\u666B\u666C\u666D\u666E\u666F\u6670"+
-        "\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678"+
-        "\u6679\u667A\u667B\u667C\u667D\u667E\u667F\u6680"+
-        "\u6681\u6682\u6683\u6684\u6685\u6686\u6687\u6688"+
-        "\u6689\u668A\u668B\u668C\u668D\u668E\u668F\u6690"+
-        "\u6691\u6692\u6693\u6694\u6695\u6696\u6697\u6698"+
-        "\u6699\u669A\u669B\u669C\u669D\u669E\u669F\u66A0"+
-        "\u66A1\u66A2\u66A3\u66A4\u66A5\u66A6\u66A7\u66A8"+
-        "\u66A9\u66AA\u66AB\u66AC\u66AD\u66AE\u66AF\u66B0"+
-        "\u66B1\u66B2\u66B3\u66B4\u66B5\u66B6\u66B7\u66B8"+
-        "\u66B9\u66BA\u66BB\u66BC\u66BD\u66BE\u66BF\u66C0"+
-        "\u66C1\u66C2\u66C3\u66C4\u66C5\u66C6\u66C7\u66C8"+
-        "\u66C9\u66CA\u66CB\u66CC\u66CD\u66CE\u66CF\u66D0"+
-        "\u66D1\u66D2\u66D3\u66D4\u66D5\u66D6\u66D7\u66D8"+
-        "\u66D9\u66DA\u66DB\u66DC\u66DD\u66DE\u66DF\u66E0"+
-        "\u66E1\u66E2\u66E3\u66E4\u66E5\u66E6\u66E7\u66E8"+
-        "\u66E9\u66EA\u66EB\u66EC\u66ED\u66EE\u66EF\u66F0"+
-        "\u66F1\u66F2\u66F3\u66F4\u66F5\u66F6\u66F7\u66F8"+
-        "\u66F9\u66FA\u66FB\u66FC\u66FD\u66FE\u66FF\u6700"+
-        "\u6701\u6702\u6703\u6704\u6705\u6706\u6707\u6708"+
-        "\u6709\u670A\u670B\u670C\u670D\u670E\u670F\u6710"+
-        "\u6711\u6712\u6713\u6714\u6715\u6716\u6717\u6718"+
-        "\u6719\u671A\u671B\u671C\u671D\u671E\u671F\u6720"+
-        "\u6721\u6722\u6723\u6724\u6725\u6726\u6727\u6728"+
-        "\u6729\u672A\u672B\u672C\u672D\u672E\u672F\u6730"+
-        "\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738"+
-        "\u6739\u673A\u673B\u673C\u673D\u673E\u673F\u6740"+
-        "\u6741\u6742\u6743\u6744\u6745\u6746\u6747\u6748"+
-        "\u6749\u674A\u674B\u674C\u674D\u674E\u674F\u6750"+
-        "\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758"+
-        "\u6759\u675A\u675B\u675C\u675D\u675E\u675F\u6760"+
-        "\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768"+
-        "\u6769\u676A\u676B\u676C\u676D\u676E\u676F\u6770"+
-        "\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778"+
-        "\u6779\u677A\u677B\u677C\u677D\u677E\u677F\u6780"+
-        "\u6781\u6782\u6783\u6784\u6785\u6786\u6787\u6788"+
-        "\u6789\u678A\u678B\u678C\u678D\u678E\u678F\u6790"+
-        "\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798"+
-        "\u6799\u679A\u679B\u679C\u679D\u679E\u679F\u67A0"+
-        "\u67A1\u67A2\u67A3\u67A4\u67A5\u67A6\u67A7\u67A8"+
-        "\u67A9\u67AA\u67AB\u67AC\u67AD\u67AE\u67AF\u67B0"+
-        "\u67B1\u67B2\u67B3\u67B4\u67B5\u67B6\u67B7\u67B8"+
-        "\u67B9\u67BA\u67BB\u67BC\u67BD\u67BE\u67BF\u67C0"+
-        "\u67C1\u67C2\u67C3\u67C4\u67C5\u67C6\u67C7\u67C8"+
-        "\u67C9\u67CA\u67CB\u67CC\u67CD\u67CE\u67CF\u67D0"+
-        "\u67D1\u67D2\u67D3\u67D4\u67D5\u67D6\u67D7\u67D8"+
-        "\u67D9\u67DA\u67DB\u67DC\u67DD\u67DE\u67DF\u67E0"+
-        "\u67E1\u67E2\u67E3\u67E4\u67E5\u67E6\u67E7\u67E8"+
-        "\u67E9\u67EA\u67EB\u67EC\u67ED\u67EE\u67EF\u67F0"+
-        "\u67F1\u67F2\u67F3\u67F4\u67F5\u67F6\u67F7\u67F8"+
-        "\u67F9\u67FA\u67FB\u67FC\u67FD\u67FE\u67FF\u6800"+
-        "\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808"+
-        "\u6809\u680A\u680B\u680C\u680D\u680E\u680F\u6810"+
-        "\u6811\u6812\u6813\u6814\u6815\u6816\u6817\u6818"+
-        "\u6819\u681A\u681B\u681C\u681D\u681E\u681F\u6820"+
-        "\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828"+
-        "\u6829\u682A\u682B\u682C\u682D\u682E\u682F\u6830"+
-        "\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838"+
-        "\u6839\u683A\u683B\u683C\u683D\u683E\u683F\u6840"+
-        "\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848"+
-        "\u6849\u684A\u684B\u684C\u684D\u684E\u684F\u6850"+
-        "\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858"+
-        "\u6859\u685A\u685B\u685C\u685D\u685E\u685F\u6860"+
-        "\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868"+
-        "\u6869\u686A\u686B\u686C\u686D\u686E\u686F\u6870"+
-        "\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878"+
-        "\u6879\u687A\u687B\u687C\u687D\u687E\u687F\u6880"+
-        "\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888"+
-        "\u6889\u688A\u688B\u688C\u688D\u688E\u688F\u6890"+
-        "\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898"+
-        "\u6899\u689A\u689B\u689C\u689D\u689E\u689F\u68A0"+
-        "\u68A1\u68A2\u68A3\u68A4\u68A5\u68A6\u68A7\u68A8"+
-        "\u68A9\u68AA\u68AB\u68AC\u68AD\u68AE\u68AF\u68B0"+
-        "\u68B1\u68B2\u68B3\u68B4\u68B5\u68B6\u68B7\u68B8"+
-        "\u68B9\u68BA\u68BB\u68BC\u68BD\u68BE\u68BF\u68C0"+
-        "\u68C1\u68C2\u68C3\u68C4\u68C5\u68C6\u68C7\u68C8"+
-        "\u68C9\u68CA\u68CB\u68CC\u68CD\u68CE\u68CF\u68D0"+
-        "\u68D1\u68D2\u68D3\u68D4\u68D5\u68D6\u68D7\u68D8"+
-        "\u68D9\u68DA\u68DB\u68DC\u68DD\u68DE\u68DF\u68E0"+
-        "\u68E1\u68E2\u68E3\u68E4\u68E5\u68E6\u68E7\uFE96"+
-        "\u68E8\u68E9\u68EA\u68EB\u68EC\u68ED\u68EE\u68EF"+
-        "\u68F0\u68F1\u68F2\u68F3\u68F4\u68F5\u68F6\u68F7"+
-        "\u68F8\u68F9\u68FA\u68FB\u68FC\u68FD\u68FE\u68FF"+
-        "\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907"+
-        "\u6908\u6909\u690A\u690B\u690C\u690D\u690E\uFE93"+
-        "\uFE94\uFE95\uFE97\uFE92\u690F\u6910\u6911\u6912"+
-        "\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691A"+
-        "\u691B\u691C\u691D\u691E\u691F\u6920\u6921\u6922"+
-        "\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692A"+
-        "\u692B\u692C\u692D\u692E\u692F\u6930\u6931\u6932"+
-        "\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693A"+
-        "\u693B\u693C\u693D\u693E\u693F\u6940\u6941\u6942"+
-        "\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694A"+
-        "\u694B\u694C\u694D\u694E\u694F\u6950\u6951\u6952"+
-        "\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695A"+
-        "\u695B\u695C\u695D\u695E\u695F\u6960\u6961\u6962"+
-        "\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696A"+
-        "\u696B\u696C\u696D\u696E\u696F\u6970\u6971\u6972"+
-        "\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697A"+
-        "\u697B\u697C\u697D\uFE98\uFE99\uFE9A\uFE9B\uFE9C"+
-        "\uFE9D\uFE9E\u697E\u697F\u6980\u6981\u6982\u6983"+
-        "\u6984\u6985\u6986\u6987\u6988\u6989\u698A\u698B"+
-        "\u698C\u698D\u698E\u698F\u6990\u6991\u6992\u6993"+
-        "\u6994\u6995\u6996\u6997\u6998\u6999\u699A\u699B"+
-        "\u699C\u699D\u699E\u699F\u69A0\u69A1\u69A2\u69A3"+
-        "\u69A4\u69A5\u69A6\u69A7\u69A8\u69A9\u69AA\u69AB"+
-        "\u69AC\u69AD\u69AE\u69AF\u69B0\u69B1\u69B2\u69B3"+
-        "\u69B4\u69B5\u69B6\u69B7\u69B8\u69B9\u69BA\u69BB"+
-        "\u69BC\u69BD\u69BE\u69BF\u69C0\u69C1\u69C2\u69C3"+
-        "\u69C4\u69C5\u69C6\u69C7\u69C8\u69C9\u69CA\u69CB"+
-        "\u69CC\u69CD\u69CE\u69CF\u69D0\u69D1\u69D2\u69D3"+
-        "\u69D4\u69D5\u69D6\u69D7\u69D8\u69D9\u69DA\u69DB"+
-        "\u69DC\u69DD\u69DE\u69DF\u69E0\u69E1\u69E2\u69E3"+
-        "\u69E4\u69E5\u69E6\u69E7\u69E8\u69E9\u69EA\u69EB"+
-        "\u69EC\u69ED\u69EE\u69EF\u69F0\u69F1\u69F2\u69F3"+
-        "\u69F4\u69F5\u69F6\u69F7\u69F8\u69F9\u69FA\u69FB"+
-        "\u69FC\u69FD\u69FE\u69FF\u6A00\u6A01\u6A02\u6A03"+
-        "\u6A04\u6A05\u6A06\u6A07\u6A08\u6A09\u6A0A\u6A0B"+
-        "\u6A0C\u6A0D\u6A0E\u6A0F\u6A10\u6A11\uFE9F\u6A12"+
-        "\u6A13\u6A14\u6A15\u6A16\u6A17\u6A18\u6A19\u6A1A"+
-        "\u6A1B\u6A1C\u6A1D\u6A1E\u6A1F\u6A20\u6A21\u6A22"+
-        "\u6A23\u6A24\u6A25\u6A26\u6A27\u6A28\u6A29\u6A2A"+
-        "\u6A2B\u6A2C\u6A2D\u6A2E\u6A2F\u6A30\u6A31\u6A32"+
-        "\u6A33\u6A34\u6A35\u6A36\u6A37\u6A38\u6A39\u6A3A"+
-        "\u6A3B\u6A3C\u6A3D\u6A3E\u6A3F\u6A40\u6A41\u6A42"+
-        "\u6A43\u6A44\u6A45\u6A46\u6A47\u6A48\u6A49\u6A4A"+
-        "\u6A4B\u6A4C\u6A4D\u6A4E\u6A4F\u6A50\u6A51\u6A52"+
-        "\u6A53\u6A54\u6A55\u6A56\u6A57\u6A58\u6A59\u6A5A"+
-        "\u6A5B\u6A5C\u6A5D\u6A5E\u6A5F\u6A60\u6A61\u6A62"+
-        "\uD2BB\uB6A1\u8140\uC6DF\u8141\u8142\u8143\uCDF2"+
-        "\uD5C9\uC8FD\uC9CF\uCFC2\uD8A2\uB2BB\uD3EB\u8144"+
-        "\uD8A4\uB3F3\u8145\uD7A8\uC7D2\uD8A7\uCAC0\u8146"+
-        "\uC7F0\uB1FB\uD2B5\uB4D4\uB6AB\uCBBF\uD8A9\u8147"+
-        "\u8148\u8149\uB6AA\u814A\uC1BD\uD1CF\u814B\uC9A5"+
-        "\uD8AD\u814C\uB8F6\uD1BE\uE3DC\uD6D0\u814D\u814E"+
-        "\uB7E1\u814F\uB4AE\u8150\uC1D9\u8151\uD8BC\u8152"+
-        "\uCDE8\uB5A4\uCEAA\uD6F7\u8153\uC0F6\uBED9\uD8AF"+
-        "\u8154\u8155\u8156\uC4CB\u8157\uBEC3\u8158\uD8B1"+
-        "\uC3B4\uD2E5\u8159\uD6AE\uCEDA\uD5A7\uBAF5\uB7A6"+
-        "\uC0D6\u815A\uC6B9\uC5D2\uC7C7\u815B\uB9D4\u815C"+
-        "\uB3CB\uD2D2\u815D\u815E\uD8BF\uBEC5\uC6F2\uD2B2"+
-        "\uCFB0\uCFE7\u815F\u8160\u8161\u8162\uCAE9\u8163"+
-        "\u8164\uD8C0\u8165\u8166\u8167\u8168\u8169\u816A"+
-        "\uC2F2\uC2D2\u816B\uC8E9\u816C\u816D\u816E\u816F"+
-        "\u8170\u8171\u8172\u8173\u8174\u8175\uC7AC\u8176"+
-        "\u8177\u8178\u8179\u817A\u817B\u817C\uC1CB\u817D"+
-        "\uD3E8\uD5F9\u817E\uCAC2\uB6FE\uD8A1\uD3DA\uBFF7"+
-        "\u8180\uD4C6\uBBA5\uD8C1\uCEE5\uBEAE\u8181\u8182"+
-        "\uD8A8\u8183\uD1C7\uD0A9\u8184\u8185\u8186\uD8BD"+
-        "\uD9EF\uCDF6\uBFBA\u8187\uBDBB\uBAA5\uD2E0\uB2FA"+
-        "\uBAE0\uC4B6\u8188\uCFED\uBEA9\uCDA4\uC1C1\u8189"+
-        "\u818A\u818B\uC7D7\uD9F1\u818C\uD9F4\u818D\u818E"+
-        "\u818F\u8190\uC8CB\uD8E9\u8191\u8192\u8193\uD2DA"+
-        "\uCAB2\uC8CA\uD8EC\uD8EA\uD8C6\uBDF6\uC6CD\uB3F0"+
-        "\u8194\uD8EB\uBDF1\uBDE9\u8195\uC8D4\uB4D3\u8196"+
-        "\u8197\uC2D8\u8198\uB2D6\uD7D0\uCACB\uCBFB\uD5CC"+
-        "\uB8B6\uCFC9\u8199\u819A\u819B\uD9DA\uD8F0\uC7AA"+
-        "\u819C\uD8EE\u819D\uB4FA\uC1EE\uD2D4\u819E\u819F"+
-        "\uD8ED\u81A0\uD2C7\uD8EF\uC3C7\u81A1\u81A2\u81A3"+
-        "\uD1F6\u81A4\uD6D9\uD8F2\u81A5\uD8F5\uBCFE\uBCDB"+
-        "\u81A6\u81A7\u81A8\uC8CE\u81A9\uB7DD\u81AA\uB7C2"+
-        "\u81AB\uC6F3\u81AC\u81AD\u81AE\u81AF\u81B0\u81B1"+
-        "\u81B2\uD8F8\uD2C1\u81B3\u81B4\uCEE9\uBCBF\uB7FC"+
-        "\uB7A5\uD0DD\u81B5\u81B6\u81B7\u81B8\u81B9\uD6DA"+
-        "\uD3C5\uBBEF\uBBE1\uD8F1\u81BA\u81BB\uC9A1\uCEB0"+
-        "\uB4AB\u81BC\uD8F3\u81BD\uC9CB\uD8F6\uC2D7\uD8F7"+
-        "\u81BE\u81BF\uCEB1\uD8F9\u81C0\u81C1\u81C2\uB2AE"+
-        "\uB9C0\u81C3\uD9A3\u81C4\uB0E9\u81C5\uC1E6\u81C6"+
-        "\uC9EC\u81C7\uCBC5\u81C8\uCBC6\uD9A4\u81C9\u81CA"+
-        "\u81CB\u81CC\u81CD\uB5E8\u81CE\u81CF\uB5AB\u81D0"+
-        "\u81D1\u81D2\u81D3\u81D4\u81D5\uCEBB\uB5CD\uD7A1"+
-        "\uD7F4\uD3D3\u81D6\uCCE5\u81D7\uBACE\u81D8\uD9A2"+
-        "\uD9DC\uD3E0\uD8FD\uB7F0\uD7F7\uD8FE\uD8FA\uD9A1"+
-        "\uC4E3\u81D9\u81DA\uD3B6\uD8F4\uD9DD\u81DB\uD8FB"+
-        "\u81DC\uC5E5\u81DD\u81DE\uC0D0\u81DF\u81E0\uD1F0"+
-        "\uB0DB\u81E1\u81E2\uBCD1\uD9A6\u81E3\uD9A5\u81E4"+
-        "\u81E5\u81E6\u81E7\uD9AC\uD9AE\u81E8\uD9AB\uCAB9"+
-        "\u81E9\u81EA\u81EB\uD9A9\uD6B6\u81EC\u81ED\u81EE"+
-        "\uB3DE\uD9A8\u81EF\uC0FD\u81F0\uCACC\u81F1\uD9AA"+
-        "\u81F2\uD9A7\u81F3\u81F4\uD9B0\u81F5\u81F6\uB6B1"+
-        "\u81F7\u81F8\u81F9\uB9A9\u81FA\uD2C0\u81FB\u81FC"+
-        "\uCFC0\u81FD\u81FE\uC2C2\u8240\uBDC4\uD5EC\uB2E0"+
-        "\uC7C8\uBFEB\uD9AD\u8241\uD9AF\u8242\uCEEA\uBAEE"+
-        "\u8243\u8244\u8245\u8246\u8247\uC7D6\u8248\u8249"+
-        "\u824A\u824B\u824C\u824D\u824E\u824F\u8250\uB1E3"+
-        "\u8251\u8252\u8253\uB4D9\uB6ED\uD9B4\u8254\u8255"+
-        "\u8256\u8257\uBFA1\u8258\u8259\u825A\uD9DE\uC7CE"+
-        "\uC0FE\uD9B8\u825B\u825C\u825D\u825E\u825F\uCBD7"+
-        "\uB7FD\u8260\uD9B5\u8261\uD9B7\uB1A3\uD3E1\uD9B9"+
-        "\u8262\uD0C5\u8263\uD9B6\u8264\u8265\uD9B1\u8266"+
-        "\uD9B2\uC1A9\uD9B3\u8267\u8268\uBCF3\uD0DE\uB8A9"+
-        "\u8269\uBEE3\u826A\uD9BD\u826B\u826C\u826D\u826E"+
-        "\uD9BA\u826F\uB0B3\u8270\u8271\u8272\uD9C2\u8273";
-
-    private final static String innerEncoderIndex5=
-        "\u8274\u8275\u8276\u8277\u8278\u8279\u827A\u827B"+
-        "\u827C\u827D\u827E\u8280\uD9C4\uB1B6\u8281\uD9BF"+
-        "\u8282\u8283\uB5B9\u8284\uBEF3\u8285\u8286\u8287"+
-        "\uCCC8\uBAF2\uD2D0\u8288\uD9C3\u8289\u828A\uBDE8"+
-        "\u828B\uB3AB\u828C\u828D\u828E\uD9C5\uBEEB\u828F"+
-        "\uD9C6\uD9BB\uC4DF\u8290\uD9BE\uD9C1\uD9C0\u8291"+
-        "\u8292\u8293\u8294\u8295\u8296\u8297\u8298\u8299"+
-        "\u829A\u829B\uD5AE\u829C\uD6B5\u829D\uC7E3\u829E"+
-        "\u829F\u82A0\u82A1\uD9C8\u82A2\u82A3\u82A4\uBCD9"+
-        "\uD9CA\u82A5\u82A6\u82A7\uD9BC\u82A8\uD9CB\uC6AB"+
-        "\u82A9\u82AA\u82AB\u82AC\u82AD\uD9C9\u82AE\u82AF"+
-        "\u82B0\u82B1\uD7F6\u82B2\uCDA3\u82B3\u82B4\u82B5"+
-        "\u82B6\u82B7\u82B8\u82B9\u82BA\uBDA1\u82BB\u82BC"+
-        "\u82BD\u82BE\u82BF\u82C0\uD9CC\u82C1\u82C2\u82C3"+
-        "\u82C4\u82C5\u82C6\u82C7\u82C8\u82C9\uC5BC\uCDB5"+
-        "\u82CA\u82CB\u82CC\uD9CD\u82CD\u82CE\uD9C7\uB3A5"+
-        "\uBFFE\u82CF\u82D0\u82D1\u82D2\uB8B5\u82D3\u82D4"+
-        "\uC0FC\u82D5\u82D6\u82D7\u82D8\uB0F8\u82D9\u82DA"+
-        "\u82DB\u82DC\u82DD\u82DE\u82DF\u82E0\u82E1\u82E2"+
-        "\u82E3\u82E4\u82E5\u82E6\u82E7\u82E8\u82E9\u82EA"+
-        "\u82EB\u82EC\u82ED\uB4F6\u82EE\uD9CE\u82EF\uD9CF"+
-        "\uB4A2\uD9D0\u82F0\u82F1\uB4DF\u82F2\u82F3\u82F4"+
-        "\u82F5\u82F6\uB0C1\u82F7\u82F8\u82F9\u82FA\u82FB"+
-        "\u82FC\u82FD\uD9D1\uC9B5\u82FE\u8340\u8341\u8342"+
-        "\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834A"+
-        "\u834B\u834C\u834D\u834E\u834F\u8350\u8351\uCFF1"+
-        "\u8352\u8353\u8354\u8355\u8356\u8357\uD9D2\u8358"+
-        "\u8359\u835A\uC1C5\u835B\u835C\u835D\u835E\u835F"+
-        "\u8360\u8361\u8362\u8363\u8364\u8365\uD9D6\uC9AE"+
-        "\u8366\u8367\u8368\u8369\uD9D5\uD9D4\uD9D7\u836A"+
-        "\u836B\u836C\u836D\uCBDB\u836E\uBDA9\u836F\u8370"+
-        "\u8371\u8372\u8373\uC6A7\u8374\u8375\u8376\u8377"+
-        "\u8378\u8379\u837A\u837B\u837C\u837D\uD9D3\uD9D8"+
-        "\u837E\u8380\u8381\uD9D9\u8382\u8383\u8384\u8385"+
-        "\u8386\u8387\uC8E5\u8388\u8389\u838A\u838B\u838C"+
-        "\u838D\u838E\u838F\u8390\u8391\u8392\u8393\u8394"+
-        "\u8395\uC0DC\u8396\u8397\u8398\u8399\u839A\u839B"+
-        "\u839C\u839D\u839E\u839F\u83A0\u83A1\u83A2\u83A3"+
-        "\u83A4\u83A5\u83A6\u83A7\u83A8\u83A9\u83AA\u83AB"+
-        "\u83AC\u83AD\u83AE\u83AF\u83B0\u83B1\u83B2\uB6F9"+
-        "\uD8A3\uD4CA\u83B3\uD4AA\uD0D6\uB3E4\uD5D7\u83B4"+
-        "\uCFC8\uB9E2\u83B5\uBFCB\u83B6\uC3E2\u83B7\u83B8"+
-        "\u83B9\uB6D2\u83BA\u83BB\uCDC3\uD9EE\uD9F0\u83BC"+
-        "\u83BD\u83BE\uB5B3\u83BF\uB6B5\u83C0\u83C1\u83C2"+
-        "\u83C3\u83C4\uBEA4\u83C5\u83C6\uC8EB\u83C7\u83C8"+
-        "\uC8AB\u83C9\u83CA\uB0CB\uB9AB\uC1F9\uD9E2\u83CB"+
-        "\uC0BC\uB9B2\u83CC\uB9D8\uD0CB\uB1F8\uC6E4\uBEDF"+
-        "\uB5E4\uD7C8\u83CD\uD1F8\uBCE6\uCADE\u83CE\u83CF"+
-        "\uBCBD\uD9E6\uD8E7\u83D0\u83D1\uC4DA\u83D2\u83D3"+
-        "\uB8D4\uC8BD\u83D4\u83D5\uB2E1\uD4D9\u83D6\u83D7"+
-        "\u83D8\u83D9\uC3B0\u83DA\u83DB\uC3E1\uDAA2\uC8DF"+
-        "\u83DC\uD0B4\u83DD\uBEFC\uC5A9\u83DE\u83DF\u83E0"+
-        "\uB9DA\u83E1\uDAA3\u83E2\uD4A9\uDAA4\u83E3\u83E4"+
-        "\u83E5\u83E6\u83E7\uD9FB\uB6AC\u83E8\u83E9\uB7EB"+
-        "\uB1F9\uD9FC\uB3E5\uBEF6\u83EA\uBFF6\uD2B1\uC0E4"+
-        "\u83EB\u83EC\u83ED\uB6B3\uD9FE\uD9FD\u83EE\u83EF"+
-        "\uBEBB\u83F0\u83F1\u83F2\uC6E0\u83F3\uD7BC\uDAA1"+
-        "\u83F4\uC1B9\u83F5\uB5F2\uC1E8\u83F6\u83F7\uBCF5"+
-        "\u83F8\uB4D5\u83F9\u83FA\u83FB\u83FC\u83FD\u83FE"+
-        "\u8440\u8441\u8442\uC1DD\u8443\uC4FD\u8444\u8445"+
-        "\uBCB8\uB7B2\u8446\u8447\uB7EF\u8448\u8449\u844A"+
-        "\u844B\u844C\u844D\uD9EC\u844E\uC6BE\u844F\uBFAD"+
-        "\uBBCB\u8450\u8451\uB5CA\u8452\uDBC9\uD0D7\u8453"+
-        "\uCDB9\uB0BC\uB3F6\uBBF7\uDBCA\uBAAF\u8454\uD4E4"+
-        "\uB5B6\uB5F3\uD8D6\uC8D0\u8455\u8456\uB7D6\uC7D0"+
-        "\uD8D7\u8457\uBFAF\u8458\u8459\uDBBB\uD8D8\u845A"+
-        "\u845B\uD0CC\uBBAE\u845C\u845D\u845E\uEBBE\uC1D0"+
-        "\uC1F5\uD4F2\uB8D5\uB4B4\u845F\uB3F5\u8460\u8461"+
-        "\uC9BE\u8462\u8463\u8464\uC5D0\u8465\u8466\u8467"+
-        "\uC5D9\uC0FB\u8468\uB1F0\u8469\uD8D9\uB9CE\u846A"+
-        "\uB5BD\u846B\u846C\uD8DA\u846D\u846E\uD6C6\uCBA2"+
-        "\uC8AF\uC9B2\uB4CC\uBFCC\u846F\uB9F4\u8470\uD8DB"+
-        "\uD8DC\uB6E7\uBCC1\uCCEA\u8471\u8472\u8473\u8474"+
-        "\u8475\u8476\uCFF7\u8477\uD8DD\uC7B0\u8478\u8479"+
-        "\uB9D0\uBDA3\u847A\u847B\uCCDE\u847C\uC6CA\u847D"+
-        "\u847E\u8480\u8481\u8482\uD8E0\u8483\uD8DE\u8484"+
-        "\u8485\uD8DF\u8486\u8487\u8488\uB0FE\u8489\uBEE7"+
-        "\u848A\uCAA3\uBCF4\u848B\u848C\u848D\u848E\uB8B1"+
-        "\u848F\u8490\uB8EE\u8491\u8492\u8493\u8494\u8495"+
-        "\u8496\u8497\u8498\u8499\u849A\uD8E2\u849B\uBDCB"+
-        "\u849C\uD8E4\uD8E3\u849D\u849E\u849F\u84A0\u84A1"+
-        "\uC5FC\u84A2\u84A3\u84A4\u84A5\u84A6\u84A7\u84A8"+
-        "\uD8E5\u84A9\u84AA\uD8E6\u84AB\u84AC\u84AD\u84AE"+
-        "\u84AF\u84B0\u84B1\uC1A6\u84B2\uC8B0\uB0EC\uB9A6"+
-        "\uBCD3\uCEF1\uDBBD\uC1D3\u84B3\u84B4\u84B5\u84B6"+
-        "\uB6AF\uD6FA\uC5AC\uBDD9\uDBBE\uDBBF\u84B7\u84B8"+
-        "\u84B9\uC0F8\uBEA2\uC0CD\u84BA\u84BB\u84BC\u84BD"+
-        "\u84BE\u84BF\u84C0\u84C1\u84C2\u84C3\uDBC0\uCAC6"+
-        "\u84C4\u84C5\u84C6\uB2AA\u84C7\u84C8\u84C9\uD3C2"+
-        "\u84CA\uC3E3\u84CB\uD1AB\u84CC\u84CD\u84CE\u84CF"+
-        "\uDBC2\u84D0\uC0D5\u84D1\u84D2\u84D3\uDBC3\u84D4"+
-        "\uBFB1\u84D5\u84D6\u84D7\u84D8\u84D9\u84DA\uC4BC"+
-        "\u84DB\u84DC\u84DD\u84DE\uC7DA\u84DF\u84E0\u84E1"+
-        "\u84E2\u84E3\u84E4\u84E5\u84E6\u84E7\u84E8\u84E9"+
-        "\uDBC4\u84EA\u84EB\u84EC\u84ED\u84EE\u84EF\u84F0"+
-        "\u84F1\uD9E8\uC9D7\u84F2\u84F3\u84F4\uB9B4\uCEF0"+
-        "\uD4C8\u84F5\u84F6\u84F7\u84F8\uB0FC\uB4D2\u84F9"+
-        "\uD0D9\u84FA\u84FB\u84FC\u84FD\uD9E9\u84FE\uDECB"+
-        "\uD9EB\u8540\u8541\u8542\u8543\uD8B0\uBBAF\uB1B1"+
-        "\u8544\uB3D7\uD8CE\u8545\u8546\uD4D1\u8547\u8548"+
-        "\uBDB3\uBFEF\u8549\uCFBB\u854A\u854B\uD8D0\u854C"+
-        "\u854D\u854E\uB7CB\u854F\u8550\u8551\uD8D1\u8552"+
-        "\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855A"+
-        "\u855B\uC6A5\uC7F8\uD2BD\u855C\u855D\uD8D2\uC4E4"+
-        "\u855E\uCAAE\u855F\uC7A7\u8560\uD8A6\u8561\uC9FD"+
-        "\uCEE7\uBBDC\uB0EB\u8562\u8563\u8564\uBBAA\uD0AD"+
-        "\u8565\uB1B0\uD7E4\uD7BF\u8566\uB5A5\uC2F4\uC4CF"+
-        "\u8567\u8568\uB2A9\u8569\uB2B7\u856A\uB1E5\uDFB2"+
-        "\uD5BC\uBFA8\uC2AC\uD8D5\uC2B1\u856B\uD8D4\uCED4"+
-        "\u856C\uDAE0\u856D\uCEC0\u856E\u856F\uD8B4\uC3AE"+
-        "\uD3A1\uCEA3\u8570\uBCB4\uC8B4\uC2D1\u8571\uBEED"+
-        "\uD0B6\u8572\uDAE1\u8573\u8574\u8575\u8576\uC7E4"+
-        "\u8577\u8578\uB3A7\u8579\uB6F2\uCCFC\uC0FA\u857A"+
-        "\u857B\uC0F7\u857C\uD1B9\uD1E1\uD8C7\u857D\u857E"+
-        "\u8580\u8581\u8582\u8583\u8584\uB2DE\u8585\u8586"+
-        "\uC0E5\u8587\uBAF1\u8588\u8589\uD8C8\u858A\uD4AD"+
-        "\u858B\u858C\uCFE1\uD8C9\u858D\uD8CA\uCFC3\u858E"+
-        "\uB3F8\uBEC7\u858F\u8590\u8591\u8592\uD8CB\u8593"+
-        "\u8594\u8595\u8596\u8597\u8598\u8599\uDBCC\u859A"+
-        "\u859B\u859C\u859D\uC8A5\u859E\u859F\u85A0\uCFD8"+
-        "\u85A1\uC8FE\uB2CE\u85A2\u85A3\u85A4\u85A5\u85A6"+
-        "\uD3D6\uB2E6\uBCB0\uD3D1\uCBAB\uB7B4\u85A7\u85A8"+
-        "\u85A9\uB7A2\u85AA\u85AB\uCAE5\u85AC\uC8A1\uCADC"+
-        "\uB1E4\uD0F0\u85AD\uC5D1\u85AE\u85AF\u85B0\uDBC5"+
-        "\uB5FE\u85B1\u85B2\uBFDA\uB9C5\uBEE4\uC1ED\u85B3"+
-        "\uDFB6\uDFB5\uD6BB\uBDD0\uD5D9\uB0C8\uB6A3\uBFC9"+
-        "\uCCA8\uDFB3\uCAB7\uD3D2\u85B4\uD8CF\uD2B6\uBAC5"+
-        "\uCBBE\uCCBE\u85B5\uDFB7\uB5F0\uDFB4\u85B6\u85B7"+
-        "\u85B8\uD3F5\u85B9\uB3D4\uB8F7\u85BA\uDFBA\u85BB"+
-        "\uBACF\uBCAA\uB5F5\u85BC\uCDAC\uC3FB\uBAF3\uC0F4"+
-        "\uCDC2\uCFF2\uDFB8\uCFC5\u85BD\uC2C0\uDFB9\uC2F0"+
-        "\u85BE\u85BF\u85C0\uBEFD\u85C1\uC1DF\uCDCC\uD2F7"+
-        "\uB7CD\uDFC1\u85C2\uDFC4\u85C3\u85C4\uB7F1\uB0C9"+
-        "\uB6D6\uB7D4\u85C5\uBAAC\uCCFD\uBFD4\uCBB1\uC6F4"+
-        "\u85C6\uD6A8\uDFC5\u85C7\uCEE2\uB3B3\u85C8\u85C9"+
-        "\uCEFC\uB4B5\u85CA\uCEC7\uBAF0\u85CB\uCEE1\u85CC"+
-        "\uD1BD\u85CD\u85CE\uDFC0\u85CF\u85D0\uB4F4\u85D1"+
-        "\uB3CA\u85D2\uB8E6\uDFBB\u85D3\u85D4\u85D5\u85D6"+
-        "\uC4C5\u85D7\uDFBC\uDFBD\uDFBE\uC5BB\uDFBF\uDFC2"+
-        "\uD4B1\uDFC3\u85D8\uC7BA\uCED8\u85D9\u85DA\u85DB"+
-        "\u85DC\u85DD\uC4D8\u85DE\uDFCA\u85DF\uDFCF\u85E0"+
-        "\uD6DC\u85E1\u85E2\u85E3\u85E4\u85E5\u85E6\u85E7"+
-        "\u85E8\uDFC9\uDFDA\uCEB6\u85E9\uBAC7\uDFCE\uDFC8"+
-        "\uC5DE\u85EA\u85EB\uC9EB\uBAF4\uC3FC\u85EC\u85ED"+
-        "\uBED7\u85EE\uDFC6\u85EF\uDFCD\u85F0\uC5D8\u85F1"+
-        "\u85F2\u85F3\u85F4\uD5A6\uBACD\u85F5\uBECC\uD3BD"+
-        "\uB8C0\u85F6\uD6E4\u85F7\uDFC7\uB9BE\uBFA7\u85F8"+
-        "\u85F9\uC1FC\uDFCB\uDFCC\u85FA\uDFD0\u85FB\u85FC"+
-        "\u85FD\u85FE\u8640\uDFDB\uDFE5\u8641\uDFD7\uDFD6"+
-        "\uD7C9\uDFE3\uDFE4\uE5EB\uD2A7\uDFD2\u8642\uBFA9"+
-        "\u8643\uD4DB\u8644\uBFC8\uDFD4\u8645\u8646\u8647"+
-        "\uCFCC\u8648\u8649\uDFDD\u864A\uD1CA\u864B\uDFDE"+
-        "\uB0A7\uC6B7\uDFD3\u864C\uBAE5\u864D\uB6DF\uCDDB"+
-        "\uB9FE\uD4D5\u864E\u864F\uDFDF\uCFEC\uB0A5\uDFE7"+
-        "\uDFD1\uD1C6\uDFD5\uDFD8\uDFD9\uDFDC\u8650\uBBA9"+
-        "\u8651\uDFE0\uDFE1\u8652\uDFE2\uDFE6\uDFE8\uD3B4"+
-        "\u8653\u8654\u8655\u8656\u8657\uB8E7\uC5B6\uDFEA"+
-        "\uC9DA\uC1A8\uC4C4\u8658\u8659\uBFDE\uCFF8\u865A"+
-        "\u865B\u865C\uD5DC\uDFEE\u865D\u865E\u865F\u8660"+
-        "\u8661\u8662\uB2B8\u8663\uBADF\uDFEC\u8664\uDBC1"+
-        "\u8665\uD1E4\u8666\u8667\u8668\u8669\uCBF4\uB4BD"+
-        "\u866A\uB0A6\u866B\u866C\u866D\u866E\u866F\uDFF1"+
-        "\uCCC6\uDFF2\u8670\u8671\uDFED\u8672\u8673\u8674"+
-        "\u8675\u8676\u8677\uDFE9\u8678\u8679\u867A\u867B"+
-        "\uDFEB\u867C\uDFEF\uDFF0\uBBBD\u867D\u867E\uDFF3"+
-        "\u8680\u8681\uDFF4\u8682\uBBA3\u8683\uCADB\uCEA8"+
-        "\uE0A7\uB3AA\u8684\uE0A6\u8685\u8686\u8687\uE0A1"+
-        "\u8688\u8689\u868A\u868B\uDFFE\u868C\uCDD9\uDFFC"+
-        "\u868D\uDFFA\u868E\uBFD0\uD7C4\u868F\uC9CC\u8690"+
-        "\u8691\uDFF8\uB0A1\u8692\u8693\u8694\u8695\u8696"+
-        "\uDFFD\u8697\u8698\u8699\u869A\uDFFB\uE0A2\u869B"+
-        "\u869C\u869D\u869E\u869F\uE0A8\u86A0\u86A1\u86A2"+
-        "\u86A3\uB7C8\u86A4\u86A5\uC6A1\uC9B6\uC0B2\uDFF5"+
-        "\u86A6\u86A7\uC5BE\u86A8\uD8C4\uDFF9\uC4F6\u86A9"+
-        "\u86AA\u86AB\u86AC\u86AD\u86AE\uE0A3\uE0A4\uE0A5"+
-        "\uD0A5\u86AF\u86B0\uE0B4\uCCE4\u86B1\uE0B1\u86B2"+
-        "\uBFA6\uE0AF\uCEB9\uE0AB\uC9C6\u86B3\u86B4\uC0AE"+
-        "\uE0AE\uBAED\uBAB0\uE0A9\u86B5\u86B6\u86B7\uDFF6"+
-        "\u86B8\uE0B3\u86B9\u86BA\uE0B8\u86BB\u86BC\u86BD"+
-        "\uB4AD\uE0B9\u86BE\u86BF\uCFB2\uBAC8\u86C0\uE0B0"+
-        "\u86C1\u86C2\u86C3\u86C4\u86C5\u86C6\u86C7\uD0FA"+
-        "\u86C8\u86C9\u86CA\u86CB\u86CC\u86CD\u86CE\u86CF"+
-        "\u86D0\uE0AC\u86D1\uD4FB\u86D2\uDFF7\u86D3\uC5E7"+
-        "\u86D4\uE0AD\u86D5\uD3F7\u86D6\uE0B6\uE0B7\u86D7"+
-        "\u86D8\u86D9\u86DA\u86DB\uE0C4\uD0E1\u86DC\u86DD"+
-        "\u86DE\uE0BC\u86DF\u86E0\uE0C9\uE0CA\u86E1\u86E2"+
-        "\u86E3\uE0BE\uE0AA\uC9A4\uE0C1\u86E4\uE0B2\u86E5"+
-        "\u86E6\u86E7\u86E8\u86E9\uCAC8\uE0C3\u86EA\uE0B5"+
-        "\u86EB\uCECB\u86EC\uCBC3\uE0CD\uE0C6\uE0C2\u86ED"+
-        "\uE0CB\u86EE\uE0BA\uE0BF\uE0C0\u86EF\u86F0\uE0C5"+
-        "\u86F1\u86F2\uE0C7\uE0C8\u86F3\uE0CC\u86F4\uE0BB"+
-        "\u86F5\u86F6\u86F7\u86F8\u86F9\uCBD4\uE0D5\u86FA"+
-        "\uE0D6\uE0D2\u86FB\u86FC\u86FD\u86FE\u8740\u8741"+
-        "\uE0D0\uBCCE\u8742\u8743\uE0D1\u8744\uB8C2\uD8C5"+
-        "\u8745\u8746\u8747\u8748\u8749\u874A\u874B\u874C"+
-        "\uD0EA\u874D\u874E\uC2EF\u874F\u8750\uE0CF\uE0BD"+
-        "\u8751\u8752\u8753\uE0D4\uE0D3\u8754\u8755\uE0D7"+
-        "\u8756\u8757\u8758\u8759\uE0DC\uE0D8\u875A\u875B"+
-        "\u875C\uD6F6\uB3B0\u875D\uD7EC\u875E\uCBBB\u875F"+
-        "\u8760\uE0DA\u8761\uCEFB\u8762\u8763\u8764\uBAD9"+
-        "\u8765\u8766\u8767\u8768\u8769\u876A\u876B\u876C"+
-        "\u876D\u876E\u876F\u8770\uE0E1\uE0DD\uD2AD\u8771"+
-        "\u8772\u8773\u8774\u8775\uE0E2\u8776\u8777\uE0DB"+
-        "\uE0D9\uE0DF\u8778\u8779\uE0E0\u877A\u877B\u877C"+
-        "\u877D\u877E\uE0DE\u8780\uE0E4\u8781\u8782\u8783"+
-        "\uC6F7\uD8AC\uD4EB\uE0E6\uCAC9\u8784\u8785\u8786"+
-        "\u8787\uE0E5\u8788\u8789\u878A\u878B\uB8C1\u878C"+
-        "\u878D\u878E\u878F\uE0E7\uE0E8\u8790\u8791\u8792"+
-        "\u8793\u8794\u8795\u8796\u8797\uE0E9\uE0E3\u8798"+
-        "\u8799\u879A\u879B\u879C\u879D\u879E\uBABF\uCCE7"+
-        "\u879F\u87A0\u87A1\uE0EA\u87A2\u87A3\u87A4\u87A5"+
-        "\u87A6\u87A7\u87A8\u87A9\u87AA\u87AB\u87AC\u87AD"+
-        "\u87AE\u87AF\u87B0\uCFF9\u87B1\u87B2\u87B3\u87B4"+
-        "\u87B5\u87B6\u87B7\u87B8\u87B9\u87BA\u87BB\uE0EB"+
-        "\u87BC\u87BD\u87BE\u87BF\u87C0\u87C1\u87C2\uC8C2"+
-        "\u87C3\u87C4\u87C5\u87C6\uBDC0\u87C7\u87C8\u87C9"+
-        "\u87CA\u87CB\u87CC\u87CD\u87CE\u87CF\u87D0\u87D1"+
-        "\u87D2\u87D3\uC4D2\u87D4\u87D5\u87D6\u87D7\u87D8"+
-        "\u87D9\u87DA\u87DB\u87DC\uE0EC\u87DD\u87DE\uE0ED"+
-        "\u87DF\u87E0\uC7F4\uCBC4\u87E1\uE0EE\uBBD8\uD8B6"+
-        "\uD2F2\uE0EF\uCDC5\u87E2\uB6DA\u87E3\u87E4\u87E5"+
-        "\u87E6\u87E7\u87E8\uE0F1\u87E9\uD4B0\u87EA\u87EB"+
-        "\uC0A7\uB4D1\u87EC\u87ED\uCEA7\uE0F0\u87EE\u87EF"+
-        "\u87F0\uE0F2\uB9CC\u87F1\u87F2\uB9FA\uCDBC\uE0F3"+
-        "\u87F3\u87F4\u87F5\uC6D4\uE0F4\u87F6\uD4B2\u87F7"+
-        "\uC8A6\uE0F6\uE0F5\u87F8\u87F9\u87FA\u87FB\u87FC"+
-        "\u87FD\u87FE\u8840\u8841\u8842\u8843\u8844\u8845"+
-        "\u8846\u8847\u8848\u8849\uE0F7\u884A\u884B\uCDC1"+
-        "\u884C\u884D\u884E\uCAA5\u884F\u8850\u8851\u8852"+
-        "\uD4DA\uDBD7\uDBD9\u8853\uDBD8\uB9E7\uDBDC\uDBDD"+
-        "\uB5D8\u8854\u8855\uDBDA\u8856\u8857\u8858\u8859"+
-        "\u885A\uDBDB\uB3A1\uDBDF\u885B\u885C\uBBF8\u885D"+
-        "\uD6B7\u885E\uDBE0\u885F\u8860\u8861\u8862\uBEF9"+
-        "\u8863\u8864\uB7BB\u8865\uDBD0\uCCAE\uBFB2\uBBB5"+
-        "\uD7F8\uBFD3\u8866\u8867\u8868\u8869\u886A\uBFE9"+
-        "\u886B\u886C\uBCE1\uCCB3\uDBDE\uB0D3\uCEEB\uB7D8"+
-        "\uD7B9\uC6C2\u886D\u886E\uC0A4\u886F\uCCB9\u8870"+
-        "\uDBE7\uDBE1\uC6BA\uDBE3\u8871\uDBE8\u8872\uC5F7"+
-        "\u8873\u8874\u8875\uDBEA\u8876\u8877\uDBE9\uBFC0"+
-        "\u8878\u8879\u887A\uDBE6\uDBE5\u887B\u887C\u887D"+
-        "\u887E\u8880\uB4B9\uC0AC\uC2A2\uDBE2\uDBE4\u8881"+
-        "\u8882\u8883\u8884\uD0CD\uDBED\u8885\u8886\u8887"+
-        "\u8888\u8889\uC0DD\uDBF2\u888A\u888B\u888C\u888D"+
-        "\u888E\u888F\u8890\uB6E2\u8891\u8892\u8893\u8894"+
-        "\uDBF3\uDBD2\uB9B8\uD4AB\uDBEC\u8895\uBFD1\uDBF0"+
-        "\u8896\uDBD1\u8897\uB5E6\u8898\uDBEB\uBFE5\u8899"+
-        "\u889A\u889B\uDBEE\u889C\uDBF1\u889D\u889E\u889F"+
-        "\uDBF9\u88A0\u88A1\u88A2\u88A3\u88A4\u88A5\u88A6"+
-        "\u88A7\u88A8\uB9A1\uB0A3\u88A9\u88AA\u88AB\u88AC"+
-        "\u88AD\u88AE\u88AF\uC2F1\u88B0\u88B1\uB3C7\uDBEF"+
-        "\u88B2\u88B3\uDBF8\u88B4\uC6D2\uDBF4\u88B5\u88B6"+
-        "\uDBF5\uDBF7\uDBF6\u88B7\u88B8\uDBFE\u88B9\uD3F2"+
-        "\uB2BA\u88BA\u88BB\u88BC\uDBFD\u88BD\u88BE\u88BF"+
-        "\u88C0\u88C1\u88C2\u88C3\u88C4\uDCA4\u88C5\uDBFB"+
-        "\u88C6\u88C7\u88C8\u88C9\uDBFA\u88CA\u88CB\u88CC"+
-        "\uDBFC\uC5E0\uBBF9\u88CD\u88CE\uDCA3\u88CF\u88D0"+
-        "\uDCA5\u88D1\uCCC3\u88D2\u88D3\u88D4\uB6D1\uDDC0"+
-        "\u88D5\u88D6\u88D7\uDCA1\u88D8\uDCA2\u88D9\u88DA"+
-        "\u88DB\uC7B5\u88DC\u88DD\u88DE\uB6E9\u88DF\u88E0"+
-        "\u88E1\uDCA7\u88E2\u88E3\u88E4\u88E5\uDCA6\u88E6"+
-        "\uDCA9\uB1A4\u88E7\u88E8\uB5CC\u88E9\u88EA\u88EB"+
-        "\u88EC\u88ED\uBFB0\u88EE\u88EF\u88F0\u88F1\u88F2"+
-        "\uD1DF\u88F3\u88F4\u88F5\u88F6\uB6C2\u88F7\u88F8"+
-        "\u88F9\u88FA\u88FB\u88FC\u88FD\u88FE\u8940\u8941"+
-        "\u8942\u8943\u8944\u8945\uDCA8\u8946\u8947\u8948"+
-        "\u8949\u894A\u894B\u894C\uCBFA\uEBF3\u894D\u894E"+
-        "\u894F\uCBDC\u8950\u8951\uCBFE\u8952\u8953\u8954"+
-        "\uCCC1\u8955\u8956\u8957\u8958\u8959\uC8FB\u895A"+
-        "\u895B\u895C\u895D\u895E\u895F\uDCAA\u8960\u8961"+
-        "\u8962\u8963\u8964\uCCEE\uDCAB\u8965\u8966\u8967"+
-        "\u8968\u8969\u896A\u896B\u896C\u896D\u896E\u896F"+
-        "\u8970\u8971\u8972\u8973\u8974\u8975\uDBD3\u8976"+
-        "\uDCAF\uDCAC\u8977\uBEB3\u8978\uCAFB\u8979\u897A"+
-        "\u897B\uDCAD\u897C\u897D\u897E\u8980\u8981\u8982"+
-        "\u8983\u8984\uC9CA\uC4B9\u8985\u8986\u8987\u8988"+
-        "\u8989\uC7BD\uDCAE\u898A\u898B\u898C\uD4F6\uD0E6"+
-        "\u898D\u898E\u898F\u8990\u8991\u8992\u8993\u8994"+
-        "\uC4AB\uB6D5\u8995\u8996\u8997\u8998\u8999\u899A"+
-        "\u899B\u899C\u899D\u899E\u899F\u89A0\u89A1\u89A2"+
-        "\u89A3\u89A4\u89A5\u89A6\uDBD4\u89A7\u89A8\u89A9"+
-        "\u89AA\uB1DA\u89AB\u89AC\u89AD\uDBD5\u89AE\u89AF"+
-        "\u89B0\u89B1\u89B2\u89B3\u89B4\u89B5\u89B6\u89B7"+
-        "\u89B8\uDBD6\u89B9\u89BA\u89BB\uBABE\u89BC\u89BD"+
-        "\u89BE\u89BF\u89C0\u89C1\u89C2\u89C3\u89C4\u89C5"+
-        "\u89C6\u89C7\u89C8\u89C9\uC8C0\u89CA\u89CB\u89CC"+
-        "\u89CD\u89CE\u89CF\uCABF\uC8C9\u89D0\uD7B3\u89D1"+
-        "\uC9F9\u89D2\u89D3\uBFC7\u89D4\u89D5\uBAF8\u89D6"+
-        "\u89D7\uD2BC\u89D8\u89D9\u89DA\u89DB\u89DC\u89DD"+
-        "\u89DE\u89DF\uE2BA\u89E0\uB4A6\u89E1\u89E2\uB1B8"+
-        "\u89E3\u89E4\u89E5\u89E6\u89E7\uB8B4\u89E8\uCFC4"+
-        "\u89E9\u89EA\u89EB\u89EC\uD9E7\uCFA6\uCDE2\u89ED"+
-        "\u89EE\uD9ED\uB6E0\u89EF\uD2B9\u89F0\u89F1\uB9BB"+
-        "\u89F2\u89F3\u89F4\u89F5\uE2B9\uE2B7\u89F6\uB4F3"+
-        "\u89F7\uCCEC\uCCAB\uB7F2\u89F8\uD8B2\uD1EB\uBABB"+
-        "\u89F9\uCAA7\u89FA\u89FB\uCDB7\u89FC\u89FD\uD2C4"+
-        "\uBFE4\uBCD0\uB6E1\u89FE\uDEC5\u8A40\u8A41\u8A42"+
-        "\u8A43\uDEC6\uDBBC\u8A44\uD1D9\u8A45\u8A46\uC6E6"+
-        "\uC4CE\uB7EE\u8A47\uB7DC\u8A48\u8A49\uBFFC\uD7E0"+
-        "\u8A4A\uC6F5\u8A4B\u8A4C\uB1BC\uDEC8\uBDB1\uCCD7"+
-        "\uDECA\u8A4D\uDEC9\u8A4E\u8A4F\u8A50\u8A51\u8A52"+
-        "\uB5EC\u8A53\uC9DD\u8A54\u8A55\uB0C2\u8A56\u8A57"+
-        "\u8A58\u8A59\u8A5A\u8A5B\u8A5C\u8A5D\u8A5E\u8A5F"+
-        "\u8A60\u8A61\u8A62\uC5AE\uC5AB\u8A63\uC4CC\u8A64"+
-        "\uBCE9\uCBFD\u8A65\u8A66\u8A67\uBAC3\u8A68\u8A69"+
-        "\u8A6A\uE5F9\uC8E7\uE5FA\uCDFD\u8A6B\uD7B1\uB8BE"+
-        "\uC2E8\u8A6C\uC8D1\u8A6D\u8A6E\uE5FB\u8A6F\u8A70"+
-        "\u8A71\u8A72\uB6CA\uBCCB\u8A73\u8A74\uD1FD\uE6A1"+
-        "\u8A75\uC3EE\u8A76\u8A77\u8A78\u8A79\uE6A4\u8A7A"+
-        "\u8A7B\u8A7C\u8A7D\uE5FE\uE6A5\uCDD7\u8A7E\u8A80"+
-        "\uB7C1\uE5FC\uE5FD\uE6A3\u8A81\u8A82\uC4DD\uE6A8"+
-        "\u8A83\u8A84\uE6A7\u8A85\u8A86\u8A87\u8A88\u8A89"+
-        "\u8A8A\uC3C3\u8A8B\uC6DE\u8A8C\u8A8D\uE6AA\u8A8E"+
-        "\u8A8F\u8A90\u8A91\u8A92\u8A93\u8A94\uC4B7\u8A95"+
-        "\u8A96\u8A97\uE6A2\uCABC\u8A98\u8A99\u8A9A\u8A9B"+
-        "\uBDE3\uB9C3\uE6A6\uD0D5\uCEAF\u8A9C\u8A9D\uE6A9"+
-        "\uE6B0\u8A9E\uD2A6\u8A9F\uBDAA\uE6AD\u8AA0\u8AA1"+
-        "\u8AA2\u8AA3\u8AA4\uE6AF\u8AA5\uC0D1\u8AA6\u8AA7"+
-        "\uD2CC\u8AA8\u8AA9\u8AAA\uBCA7\u8AAB\u8AAC\u8AAD"+
-        "\u8AAE\u8AAF\u8AB0\u8AB1\u8AB2\u8AB3\u8AB4\u8AB5"+
-        "\u8AB6\uE6B1\u8AB7\uD2F6\u8AB8\u8AB9\u8ABA\uD7CB"+
-        "\u8ABB\uCDFE\u8ABC\uCDDE\uC2A6\uE6AB\uE6AC\uBDBF"+
-        "\uE6AE\uE6B3\u8ABD\u8ABE\uE6B2\u8ABF\u8AC0\u8AC1"+
-        "\u8AC2\uE6B6\u8AC3\uE6B8\u8AC4\u8AC5\u8AC6\u8AC7"+
-        "\uC4EF\u8AC8\u8AC9\u8ACA\uC4C8\u8ACB\u8ACC\uBEEA"+
-        "\uC9EF\u8ACD\u8ACE\uE6B7\u8ACF\uB6F0\u8AD0\u8AD1"+
-        "\u8AD2\uC3E4\u8AD3\u8AD4\u8AD5\u8AD6\u8AD7\u8AD8"+
-        "\u8AD9\uD3E9\uE6B4\u8ADA\uE6B5\u8ADB\uC8A2\u8ADC"+
-        "\u8ADD\u8ADE\u8ADF\u8AE0\uE6BD\u8AE1\u8AE2\u8AE3"+
-        "\uE6B9\u8AE4\u8AE5\u8AE6\u8AE7\u8AE8\uC6C5\u8AE9"+
-        "\u8AEA\uCDF1\uE6BB\u8AEB\u8AEC\u8AED\u8AEE\u8AEF"+
-        "\u8AF0\u8AF1\u8AF2\u8AF3\u8AF4\uE6BC\u8AF5\u8AF6"+
-        "\u8AF7\u8AF8\uBBE9\u8AF9\u8AFA\u8AFB\u8AFC\u8AFD"+
-        "\u8AFE\u8B40\uE6BE\u8B41\u8B42\u8B43\u8B44\uE6BA"+
-        "\u8B45\u8B46\uC0B7\u8B47\u8B48\u8B49\u8B4A\u8B4B"+
-        "\u8B4C\u8B4D\u8B4E\u8B4F\uD3A4\uE6BF\uC9F4\uE6C3"+
-        "\u8B50\u8B51\uE6C4\u8B52\u8B53\u8B54\u8B55\uD0F6"+
-        "\u8B56\u8B57\u8B58\u8B59\u8B5A\u8B5B\u8B5C\u8B5D"+
-        "\u8B5E\u8B5F\u8B60\u8B61\u8B62\u8B63\u8B64\u8B65"+
-        "\u8B66\u8B67\uC3BD\u8B68\u8B69\u8B6A\u8B6B\u8B6C"+
-        "\u8B6D\u8B6E\uC3C4\uE6C2\u8B6F\u8B70\u8B71\u8B72"+
-        "\u8B73\u8B74\u8B75\u8B76\u8B77\u8B78\u8B79\u8B7A"+
-        "\u8B7B\u8B7C\uE6C1\u8B7D\u8B7E\u8B80\u8B81\u8B82"+
-        "\u8B83\u8B84\uE6C7\uCFB1\u8B85\uEBF4\u8B86\u8B87"+
-        "\uE6CA\u8B88\u8B89\u8B8A\u8B8B\u8B8C\uE6C5\u8B8D"+
-        "\u8B8E\uBCDE\uC9A9\u8B8F\u8B90\u8B91\u8B92\u8B93"+
-        "\u8B94\uBCB5\u8B95\u8B96\uCFD3\u8B97\u8B98\u8B99"+
-        "\u8B9A\u8B9B\uE6C8\u8B9C\uE6C9\u8B9D\uE6CE\u8B9E"+
-        "\uE6D0\u8B9F\u8BA0\u8BA1\uE6D1\u8BA2\u8BA3\u8BA4"+
-        "\uE6CB\uB5D5\u8BA5\uE6CC\u8BA6\u8BA7\uE6CF\u8BA8"+
-        "\u8BA9\uC4DB\u8BAA\uE6C6\u8BAB\u8BAC\u8BAD\u8BAE"+
-        "\u8BAF\uE6CD\u8BB0\u8BB1\u8BB2\u8BB3\u8BB4\u8BB5"+
-        "\u8BB6\u8BB7\u8BB8\u8BB9\u8BBA\u8BBB\u8BBC\u8BBD"+
-        "\u8BBE\u8BBF\u8BC0\u8BC1\u8BC2\u8BC3\u8BC4\u8BC5"+
-        "\u8BC6\uE6D2\u8BC7\u8BC8\u8BC9\u8BCA\u8BCB\u8BCC"+
-        "\u8BCD\u8BCE\u8BCF\u8BD0\u8BD1\u8BD2\uE6D4\uE6D3"+
-        "\u8BD3\u8BD4\u8BD5\u8BD6\u8BD7\u8BD8\u8BD9\u8BDA"+
-        "\u8BDB\u8BDC\u8BDD\u8BDE\u8BDF\u8BE0\u8BE1\u8BE2"+
-        "\u8BE3\u8BE4\u8BE5\u8BE6\u8BE7\u8BE8\u8BE9\u8BEA"+
-        "\u8BEB\u8BEC\uE6D5\u8BED\uD9F8\u8BEE\u8BEF\uE6D6"+
-        "\u8BF0\u8BF1\u8BF2\u8BF3\u8BF4\u8BF5\u8BF6\u8BF7"+
-        "\uE6D7\u8BF8\u8BF9\u8BFA\u8BFB\u8BFC\u8BFD\u8BFE"+
-        "\u8C40\u8C41\u8C42\u8C43\u8C44\u8C45\u8C46\u8C47"+
-        "\uD7D3\uE6DD\u8C48\uE6DE\uBFD7\uD4D0\u8C49\uD7D6"+
-        "\uB4E6\uCBEF\uE6DA\uD8C3\uD7CE\uD0A2\u8C4A\uC3CF"+
-        "\u8C4B\u8C4C\uE6DF\uBCBE\uB9C2\uE6DB\uD1A7\u8C4D"+
-        "\u8C4E\uBAA2\uC2CF\u8C4F\uD8AB\u8C50\u8C51\u8C52"+
-        "\uCAEB\uE5EE\u8C53\uE6DC\u8C54\uB7F5\u8C55\u8C56"+
-        "\u8C57\u8C58\uC8E6\u8C59\u8C5A\uC4F5\u8C5B\u8C5C"+
-        "\uE5B2\uC4FE\u8C5D\uCBFC\uE5B3\uD5AC\u8C5E\uD3EE"+
-        "\uCAD8\uB0B2\u8C5F\uCBCE\uCDEA\u8C60\u8C61\uBAEA"+
-        "\u8C62\u8C63\u8C64\uE5B5\u8C65\uE5B4\u8C66\uD7DA"+
-        "\uB9D9\uD6E6\uB6A8\uCDF0\uD2CB\uB1A6\uCAB5\u8C67"+
-        "\uB3E8\uC9F3\uBFCD\uD0FB\uCAD2\uE5B6\uBBC2\u8C68"+
-        "\u8C69\u8C6A\uCFDC\uB9AC\u8C6B\u8C6C\u8C6D\u8C6E"+
-        "\uD4D7\u8C6F\u8C70\uBAA6\uD1E7\uCFFC\uBCD2\u8C71"+
-        "\uE5B7\uC8DD\u8C72\u8C73\u8C74\uBFED\uB1F6\uCBDE"+
-        "\u8C75\u8C76\uBCC5\u8C77\uBCC4\uD2FA\uC3DC\uBFDC"+
-        "\u8C78\u8C79\u8C7A\u8C7B\uB8BB\u8C7C\u8C7D\u8C7E"+
-        "\uC3C2\u8C80\uBAAE\uD4A2\u8C81\u8C82\u8C83\u8C84"+
-        "\u8C85\u8C86\u8C87\u8C88\u8C89\uC7DE\uC4AF\uB2EC"+
-        "\u8C8A\uB9D1\u8C8B\u8C8C\uE5BB\uC1C8\u8C8D\u8C8E"+
-        "\uD5AF\u8C8F\u8C90\u8C91\u8C92\u8C93\uE5BC\u8C94"+
-        "\uE5BE\u8C95\u8C96\u8C97\u8C98\u8C99\u8C9A\u8C9B"+
-        "\uB4E7\uB6D4\uCBC2\uD1B0\uB5BC\u8C9C\u8C9D\uCAD9"+
-        "\u8C9E\uB7E2\u8C9F\u8CA0\uC9E4\u8CA1\uBDAB\u8CA2"+
-        "\u8CA3\uCEBE\uD7F0\u8CA4\u8CA5\u8CA6\u8CA7\uD0A1"+
-        "\u8CA8\uC9D9\u8CA9\u8CAA\uB6FB\uE6D8\uBCE2\u8CAB"+
-        "\uB3BE\u8CAC\uC9D0\u8CAD\uE6D9\uB3A2\u8CAE\u8CAF"+
-        "\u8CB0\u8CB1\uDECC\u8CB2\uD3C8\uDECD\u8CB3\uD2A2"+
-        "\u8CB4\u8CB5\u8CB6\u8CB7\uDECE\u8CB8\u8CB9\u8CBA"+
-        "\u8CBB\uBECD\u8CBC\u8CBD\uDECF\u8CBE\u8CBF\u8CC0"+
-        "\uCAAC\uD2FC\uB3DF\uE5EA\uC4E1\uBEA1\uCEB2\uC4F2"+
-        "\uBED6\uC6A8\uB2E3\u8CC1\u8CC2\uBED3\u8CC3\u8CC4"+
-        "\uC7FC\uCCEB\uBDEC\uCEDD\u8CC5\u8CC6\uCABA\uC6C1"+
-        "\uE5EC\uD0BC\u8CC7\u8CC8\u8CC9\uD5B9\u8CCA\u8CCB"+
-        "\u8CCC\uE5ED\u8CCD\u8CCE\u8CCF\u8CD0\uCAF4\u8CD1"+
-        "\uCDC0\uC2C5\u8CD2\uE5EF\u8CD3\uC2C4\uE5F0\u8CD4"+
-        "\u8CD5\u8CD6\u8CD7\u8CD8\u8CD9\u8CDA\uE5F8\uCDCD"+
-        "\u8CDB\uC9BD\u8CDC\u8CDD\u8CDE\u8CDF\u8CE0\u8CE1"+
-        "\u8CE2\uD2D9\uE1A8\u8CE3\u8CE4\u8CE5\u8CE6\uD3EC"+
-        "\u8CE7\uCBEA\uC6F1\u8CE8\u8CE9\u8CEA\u8CEB\u8CEC"+
-        "\uE1AC\u8CED\u8CEE\u8CEF\uE1A7\uE1A9\u8CF0\u8CF1"+
-        "\uE1AA\uE1AF\u8CF2\u8CF3\uB2ED\u8CF4\uE1AB\uB8DA"+
-        "\uE1AD\uE1AE\uE1B0\uB5BA\uE1B1\u8CF5\u8CF6\u8CF7"+
-        "\u8CF8\u8CF9\uE1B3\uE1B8\u8CFA\u8CFB\u8CFC\u8CFD"+
-        "\u8CFE\uD1D2\u8D40\uE1B6\uE1B5\uC1EB\u8D41\u8D42"+
-        "\u8D43\uE1B7\u8D44\uD4C0\u8D45\uE1B2\u8D46\uE1BA"+
-        "\uB0B6\u8D47\u8D48\u8D49\u8D4A\uE1B4\u8D4B\uBFF9"+
-        "\u8D4C\uE1B9\u8D4D\u8D4E\uE1BB\u8D4F\u8D50\u8D51"+
-        "\u8D52\u8D53\u8D54\uE1BE\u8D55\u8D56\u8D57\u8D58"+
-        "\u8D59\u8D5A\uE1BC\u8D5B\u8D5C\u8D5D\u8D5E\u8D5F"+
-        "\u8D60\uD6C5\u8D61\u8D62\u8D63\u8D64\u8D65\u8D66"+
-        "\u8D67\uCFBF\u8D68\u8D69\uE1BD\uE1BF\uC2CD\u8D6A"+
-        "\uB6EB\u8D6B\uD3F8\u8D6C\u8D6D\uC7CD\u8D6E\u8D6F"+
-        "\uB7E5\u8D70\u8D71\u8D72\u8D73\u8D74\u8D75\u8D76"+
-        "\u8D77\u8D78\u8D79\uBEFE\u8D7A\u8D7B\u8D7C\u8D7D"+
-        "\u8D7E\u8D80\uE1C0\uE1C1\u8D81\u8D82\uE1C7\uB3E7"+
-        "\u8D83\u8D84\u8D85\u8D86\u8D87\u8D88\uC6E9\u8D89"+
-        "\u8D8A\u8D8B\u8D8C\u8D8D\uB4DE\u8D8E\uD1C2\u8D8F"+
-        "\u8D90\u8D91\u8D92\uE1C8\u8D93\u8D94\uE1C6\u8D95"+
-        "\u8D96\u8D97\u8D98\u8D99\uE1C5\u8D9A\uE1C3\uE1C2"+
-        "\u8D9B\uB1C0\u8D9C\u8D9D\u8D9E\uD5B8\uE1C4\u8D9F"+
-        "\u8DA0\u8DA1\u8DA2\u8DA3\uE1CB\u8DA4\u8DA5\u8DA6"+
-        "\u8DA7\u8DA8\u8DA9\u8DAA\u8DAB\uE1CC\uE1CA\u8DAC"+
-        "\u8DAD\u8DAE\u8DAF\u8DB0\u8DB1\u8DB2\u8DB3\uEFFA"+
-        "\u8DB4\u8DB5\uE1D3\uE1D2\uC7B6\u8DB6\u8DB7\u8DB8"+
-        "\u8DB9\u8DBA\u8DBB\u8DBC\u8DBD\u8DBE\u8DBF\u8DC0"+
-        "\uE1C9\u8DC1\u8DC2\uE1CE\u8DC3\uE1D0\u8DC4\u8DC5"+
-        "\u8DC6\u8DC7\u8DC8\u8DC9\u8DCA\u8DCB\u8DCC\u8DCD"+
-        "\u8DCE\uE1D4\u8DCF\uE1D1\uE1CD\u8DD0\u8DD1\uE1CF"+
-        "\u8DD2\u8DD3\u8DD4\u8DD5\uE1D5\u8DD6\u8DD7\u8DD8"+
-        "\u8DD9\u8DDA\u8DDB\u8DDC\u8DDD\u8DDE\u8DDF\u8DE0"+
-        "\u8DE1\u8DE2\uE1D6\u8DE3\u8DE4\u8DE5\u8DE6\u8DE7"+
-        "\u8DE8\u8DE9\u8DEA\u8DEB\u8DEC\u8DED\u8DEE\u8DEF"+
-        "\u8DF0\u8DF1\u8DF2\u8DF3\u8DF4\u8DF5\u8DF6\u8DF7"+
-        "\u8DF8\uE1D7\u8DF9\u8DFA\u8DFB\uE1D8\u8DFC\u8DFD"+
-        "\u8DFE\u8E40\u8E41\u8E42\u8E43\u8E44\u8E45\u8E46"+
-        "\u8E47\u8E48\u8E49\u8E4A\u8E4B\u8E4C\u8E4D\u8E4E"+
-        "\u8E4F\u8E50\u8E51\u8E52\u8E53\u8E54\u8E55\uE1DA"+
-        "\u8E56\u8E57\u8E58\u8E59\u8E5A\u8E5B\u8E5C\u8E5D"+
-        "\u8E5E\u8E5F\u8E60\u8E61\u8E62\uE1DB\u8E63\u8E64"+
-        "\u8E65\u8E66\u8E67\u8E68\u8E69\uCEA1\u8E6A\u8E6B"+
-        "\u8E6C\u8E6D\u8E6E\u8E6F\u8E70\u8E71\u8E72\u8E73"+
-        "\u8E74\u8E75\u8E76\uE7DD\u8E77\uB4A8\uD6DD\u8E78"+
-        "\u8E79\uD1B2\uB3B2\u8E7A\u8E7B\uB9A4\uD7F3\uC7C9"+
-        "\uBEDE\uB9AE\u8E7C\uCED7\u8E7D\u8E7E\uB2EE\uDBCF"+
-        "\u8E80\uBCBA\uD2D1\uCBC8\uB0CD\u8E81\u8E82\uCFEF"+
-        "\u8E83\u8E84\u8E85\u8E86\u8E87\uD9E3\uBDED\u8E88"+
-        "\u8E89\uB1D2\uCAD0\uB2BC\u8E8A\uCBA7\uB7AB\u8E8B"+
-        "\uCAA6\u8E8C\u8E8D\u8E8E\uCFA3\u8E8F\u8E90\uE0F8"+
-        "\uD5CA\uE0FB\u8E91\u8E92\uE0FA\uC5C1\uCCFB\u8E93"+
-        "\uC1B1\uE0F9\uD6E3\uB2AF\uD6C4\uB5DB\u8E94\u8E95"+
-        "\u8E96\u8E97\u8E98\u8E99\u8E9A\u8E9B\uB4F8\uD6A1"+
-        "\u8E9C\u8E9D\u8E9E\u8E9F\u8EA0\uCFAF\uB0EF\u8EA1"+
-        "\u8EA2\uE0FC\u8EA3\u8EA4\u8EA5\u8EA6\u8EA7\uE1A1"+
-        "\uB3A3\u8EA8\u8EA9\uE0FD\uE0FE\uC3B1\u8EAA\u8EAB"+
-        "\u8EAC\u8EAD\uC3DD\u8EAE\uE1A2\uB7F9\u8EAF\u8EB0"+
-        "\u8EB1\u8EB2\u8EB3\u8EB4\uBBCF\u8EB5\u8EB6\u8EB7"+
-        "\u8EB8\u8EB9\u8EBA\u8EBB\uE1A3\uC4BB\u8EBC\u8EBD"+
-        "\u8EBE\u8EBF\u8EC0\uE1A4\u8EC1\u8EC2\uE1A5\u8EC3"+
-        "\u8EC4\uE1A6\uB4B1\u8EC5\u8EC6\u8EC7\u8EC8\u8EC9"+
-        "\u8ECA\u8ECB\u8ECC\u8ECD\u8ECE\u8ECF\u8ED0\u8ED1"+
-        "\u8ED2\u8ED3\uB8C9\uC6BD\uC4EA\u8ED4\uB2A2\u8ED5"+
-        "\uD0D2\u8ED6\uE7DB\uBBC3\uD3D7\uD3C4\u8ED7\uB9E3"+
-        "\uE2CF\u8ED8\u8ED9\u8EDA\uD7AF\u8EDB\uC7EC\uB1D3"+
-        "\u8EDC\u8EDD\uB4B2\uE2D1\u8EDE\u8EDF\u8EE0\uD0F2"+
-        "\uC2AE\uE2D0\u8EE1\uBFE2\uD3A6\uB5D7\uE2D2\uB5EA"+
-        "\u8EE2\uC3ED\uB8FD\u8EE3\uB8AE\u8EE4\uC5D3\uB7CF"+
-        "\uE2D4\u8EE5\u8EE6\u8EE7\u8EE8\uE2D3\uB6C8\uD7F9"+
-        "\u8EE9\u8EEA\u8EEB\u8EEC\u8EED\uCDA5\u8EEE\u8EEF"+
-        "\u8EF0\u8EF1\u8EF2\uE2D8\u8EF3\uE2D6\uCAFC\uBFB5"+
-        "\uD3B9\uE2D5\u8EF4\u8EF5\u8EF6\u8EF7\uE2D7\u8EF8"+
-        "\u8EF9\u8EFA\u8EFB\u8EFC\u8EFD\u8EFE\u8F40\u8F41"+
-        "\u8F42\uC1AE\uC0C8\u8F43\u8F44\u8F45\u8F46\u8F47"+
-        "\u8F48\uE2DB\uE2DA\uC0AA\u8F49\u8F4A\uC1CE\u8F4B"+
-        "\u8F4C\u8F4D\u8F4E\uE2DC\u8F4F\u8F50\u8F51\u8F52"+
-        "\u8F53\u8F54\u8F55\u8F56\u8F57\u8F58\u8F59\u8F5A"+
-        "\uE2DD\u8F5B\uE2DE\u8F5C\u8F5D\u8F5E\u8F5F\u8F60"+
-        "\u8F61\u8F62\u8F63\u8F64\uDBC8\u8F65\uD1D3\uCDA2"+
-        "\u8F66\u8F67\uBDA8\u8F68\u8F69\u8F6A\uDEC3\uD8A5"+
-        "\uBFAA\uDBCD\uD2EC\uC6FA\uC5AA\u8F6B\u8F6C\u8F6D"+
-        "\uDEC4\u8F6E\uB1D7\uDFAE\u8F6F\u8F70\u8F71\uCABD"+
-        "\u8F72\uDFB1\u8F73\uB9AD\u8F74\uD2FD\u8F75\uB8A5"+
-        "\uBAEB\u8F76\u8F77\uB3DA\u8F78\u8F79\u8F7A\uB5DC"+
-        "\uD5C5\u8F7B\u8F7C\u8F7D\u8F7E\uC3D6\uCFD2\uBBA1"+
-        "\u8F80\uE5F3\uE5F2\u8F81\u8F82\uE5F4\u8F83\uCDE4"+
-        "\u8F84\uC8F5\u8F85\u8F86\u8F87\u8F88\u8F89\u8F8A"+
-        "\u8F8B\uB5AF\uC7BF\u8F8C\uE5F6\u8F8D\u8F8E\u8F8F"+
-        "\uECB0\u8F90\u8F91\u8F92\u8F93\u8F94\u8F95\u8F96"+
-        "\u8F97\u8F98\u8F99\u8F9A\u8F9B\u8F9C\u8F9D\u8F9E"+
-        "\uE5E6\u8F9F\uB9E9\uB5B1\u8FA0\uC2BC\uE5E8\uE5E7"+
-        "\uE5E9\u8FA1\u8FA2\u8FA3\u8FA4\uD2CD\u8FA5\u8FA6"+
-        "\u8FA7\uE1EA\uD0CE\u8FA8\uCDAE\u8FA9\uD1E5\u8FAA"+
-        "\u8FAB\uB2CA\uB1EB\u8FAC\uB1F2\uC5ED\u8FAD\u8FAE"+
-        "\uD5C3\uD3B0\u8FAF\uE1DC\u8FB0\u8FB1\u8FB2\uE1DD"+
-        "\u8FB3\uD2DB\u8FB4\uB3B9\uB1CB\u8FB5\u8FB6\u8FB7"+
-        "\uCDF9\uD5F7\uE1DE\u8FB8\uBEB6\uB4FD\u8FB9\uE1DF"+
-        "\uBADC\uE1E0\uBBB2\uC2C9\uE1E1\u8FBA\u8FBB\u8FBC"+
-        "\uD0EC\u8FBD\uCDBD\u8FBE\u8FBF\uE1E2\u8FC0\uB5C3"+
-        "\uC5C7\uE1E3\u8FC1\u8FC2\uE1E4\u8FC3\u8FC4\u8FC5"+
-        "\u8FC6\uD3F9\u8FC7\u8FC8\u8FC9\u8FCA\u8FCB\u8FCC"+
-        "\uE1E5\u8FCD\uD1AD\u8FCE\u8FCF\uE1E6\uCEA2\u8FD0"+
-        "\u8FD1\u8FD2\u8FD3\u8FD4\u8FD5\uE1E7\u8FD6\uB5C2"+
-        "\u8FD7\u8FD8\u8FD9\u8FDA\uE1E8\uBBD5\u8FDB\u8FDC"+
-        "\u8FDD\u8FDE\u8FDF\uD0C4\uE2E0\uB1D8\uD2E4\u8FE0"+
-        "\u8FE1\uE2E1\u8FE2\u8FE3\uBCC9\uC8CC\u8FE4\uE2E3"+
-        "\uECFE\uECFD\uDFAF\u8FE5\u8FE6\u8FE7\uE2E2\uD6BE"+
-        "\uCDFC\uC3A6\u8FE8\u8FE9\u8FEA\uE3C3\u8FEB\u8FEC"+
-        "\uD6D2\uE2E7\u8FED\u8FEE\uE2E8\u8FEF\u8FF0\uD3C7"+
-        "\u8FF1\u8FF2\uE2EC\uBFEC\u8FF3\uE2ED\uE2E5\u8FF4"+
-        "\u8FF5\uB3C0\u8FF6\u8FF7\u8FF8\uC4EE\u8FF9\u8FFA"+
-        "\uE2EE\u8FFB\u8FFC\uD0C3\u8FFD\uBAF6\uE2E9\uB7DE";
-
-    private final static String innerEncoderIndex6=
-        "\uBBB3\uCCAC\uCBCB\uE2E4\uE2E6\uE2EA\uE2EB\u8FFE"+
-        "\u9040\u9041\uE2F7\u9042\u9043\uE2F4\uD4F5\uE2F3"+
-        "\u9044\u9045\uC5AD\u9046\uD5FA\uC5C2\uB2C0\u9047"+
-        "\u9048\uE2EF\u9049\uE2F2\uC1AF\uCBBC\u904A\u904B"+
-        "\uB5A1\uE2F9\u904C\u904D\u904E\uBCB1\uE2F1\uD0D4"+
-        "\uD4B9\uE2F5\uB9D6\uE2F6\u904F\u9050\u9051\uC7D3"+
-        "\u9052\u9053\u9054\u9055\u9056\uE2F0\u9057\u9058"+
-        "\u9059\u905A\u905B\uD7DC\uEDA1\u905C\u905D\uE2F8"+
-        "\u905E\uEDA5\uE2FE\uCAD1\u905F\u9060\u9061\u9062"+
-        "\u9063\u9064\u9065\uC1B5\u9066\uBBD0\u9067\u9068"+
-        "\uBFD6\u9069\uBAE3\u906A\u906B\uCBA1\u906C\u906D"+
-        "\u906E\uEDA6\uEDA3\u906F\u9070\uEDA2\u9071\u9072"+
-        "\u9073\u9074\uBBD6\uEDA7\uD0F4\u9075\u9076\uEDA4"+
-        "\uBADE\uB6F7\uE3A1\uB6B2\uCCF1\uB9A7\u9077\uCFA2"+
-        "\uC7A1\u9078\u9079\uBFD2\u907A\u907B\uB6F1\u907C"+
-        "\uE2FA\uE2FB\uE2FD\uE2FC\uC4D5\uE3A2\u907D\uD3C1"+
-        "\u907E\u9080\u9081\uE3A7\uC7C4\u9082\u9083\u9084"+
-        "\u9085\uCFA4\u9086\u9087\uE3A9\uBAB7\u9088\u9089"+
-        "\u908A\u908B\uE3A8\u908C\uBBDA\u908D\uE3A3\u908E"+
-        "\u908F\u9090\uE3A4\uE3AA\u9091\uE3A6\u9092\uCEF2"+
-        "\uD3C6\u9093\u9094\uBBBC\u9095\u9096\uD4C3\u9097"+
-        "\uC4FA\u9098\u9099\uEDA8\uD0FC\uE3A5\u909A\uC3F5"+
-        "\u909B\uE3AD\uB1AF\u909C\uE3B2\u909D\u909E\u909F"+
-        "\uBCC2\u90A0\u90A1\uE3AC\uB5BF\u90A2\u90A3\u90A4"+
-        "\u90A5\u90A6\u90A7\u90A8\u90A9\uC7E9\uE3B0\u90AA"+
-        "\u90AB\u90AC\uBEAA\uCDEF\u90AD\u90AE\u90AF\u90B0"+
-        "\u90B1\uBBF3\u90B2\u90B3\u90B4\uCCE8\u90B5\u90B6"+
-        "\uE3AF\u90B7\uE3B1\u90B8\uCFA7\uE3AE\u90B9\uCEA9"+
-        "\uBBDD\u90BA\u90BB\u90BC\u90BD\u90BE\uB5EB\uBEE5"+
-        "\uB2D2\uB3CD\u90BF\uB1B9\uE3AB\uB2D1\uB5AC\uB9DF"+
-        "\uB6E8\u90C0\u90C1\uCFEB\uE3B7\u90C2\uBBCC\u90C3"+
-        "\u90C4\uC8C7\uD0CA\u90C5\u90C6\u90C7\u90C8\u90C9"+
-        "\uE3B8\uB3EE\u90CA\u90CB\u90CC\u90CD\uEDA9\u90CE"+
-        "\uD3FA\uD3E4\u90CF\u90D0\u90D1\uEDAA\uE3B9\uD2E2"+
-        "\u90D2\u90D3\u90D4\u90D5\u90D6\uE3B5\u90D7\u90D8"+
-        "\u90D9\u90DA\uD3DE\u90DB\u90DC\u90DD\u90DE\uB8D0"+
-        "\uE3B3\u90DF\u90E0\uE3B6\uB7DF\u90E1\uE3B4\uC0A2"+
-        "\u90E2\u90E3\u90E4\uE3BA\u90E5\u90E6\u90E7\u90E8"+
-        "\u90E9\u90EA\u90EB\u90EC\u90ED\u90EE\u90EF\u90F0"+
-        "\u90F1\u90F2\u90F3\u90F4\u90F5\u90F6\u90F7\uD4B8"+
-        "\u90F8\u90F9\u90FA\u90FB\u90FC\u90FD\u90FE\u9140"+
-        "\uB4C8\u9141\uE3BB\u9142\uBBC5\u9143\uC9F7\u9144"+
-        "\u9145\uC9E5\u9146\u9147\u9148\uC4BD\u9149\u914A"+
-        "\u914B\u914C\u914D\u914E\u914F\uEDAB\u9150\u9151"+
-        "\u9152\u9153\uC2FD\u9154\u9155\u9156\u9157\uBBDB"+
-        "\uBFAE\u9158\u9159\u915A\u915B\u915C\u915D\u915E"+
-        "\uCEBF\u915F\u9160\u9161\u9162\uE3BC\u9163\uBFB6"+
-        "\u9164\u9165\u9166\u9167\u9168\u9169\u916A\u916B"+
-        "\u916C\u916D\u916E\u916F\u9170\u9171\u9172\u9173"+
-        "\u9174\u9175\u9176\uB1EF\u9177\u9178\uD4F7\u9179"+
-        "\u917A\u917B\u917C\u917D\uE3BE\u917E\u9180\u9181"+
-        "\u9182\u9183\u9184\u9185\u9186\uEDAD\u9187\u9188"+
-        "\u9189\u918A\u918B\u918C\u918D\u918E\u918F\uE3BF"+
-        "\uBAA9\uEDAC\u9190\u9191\uE3BD\u9192\u9193\u9194"+
-        "\u9195\u9196\u9197\u9198\u9199\u919A\u919B\uE3C0"+
-        "\u919C\u919D\u919E\u919F\u91A0\u91A1\uBAB6\u91A2"+
-        "\u91A3\u91A4\uB6AE\u91A5\u91A6\u91A7\u91A8\u91A9"+
-        "\uD0B8\u91AA\uB0C3\uEDAE\u91AB\u91AC\u91AD\u91AE"+
-        "\u91AF\uEDAF\uC0C1\u91B0\uE3C1\u91B1\u91B2\u91B3"+
-        "\u91B4\u91B5\u91B6\u91B7\u91B8\u91B9\u91BA\u91BB"+
-        "\u91BC\u91BD\u91BE\u91BF\u91C0\u91C1\uC5B3\u91C2"+
-        "\u91C3\u91C4\u91C5\u91C6\u91C7\u91C8\u91C9\u91CA"+
-        "\u91CB\u91CC\u91CD\u91CE\u91CF\uE3C2\u91D0\u91D1"+
-        "\u91D2\u91D3\u91D4\u91D5\u91D6\u91D7\u91D8\uDCB2"+
-        "\u91D9\u91DA\u91DB\u91DC\u91DD\u91DE\uEDB0\u91DF"+
-        "\uB8EA\u91E0\uCEEC\uEAA7\uD0E7\uCAF9\uC8D6\uCFB7"+
-        "\uB3C9\uCED2\uBDE4\u91E1\u91E2\uE3DE\uBBF2\uEAA8"+
-        "\uD5BD\u91E3\uC6DD\uEAA9\u91E4\u91E5\u91E6\uEAAA"+
-        "\u91E7\uEAAC\uEAAB\u91E8\uEAAE\uEAAD\u91E9\u91EA"+
-        "\u91EB\u91EC\uBDD8\u91ED\uEAAF\u91EE\uC2BE\u91EF"+
-        "\u91F0\u91F1\u91F2\uB4C1\uB4F7\u91F3\u91F4\uBBA7"+
-        "\u91F5\u91F6\u91F7\u91F8\u91F9\uECE6\uECE5\uB7BF"+
-        "\uCBF9\uB1E2\u91FA\uECE7\u91FB\u91FC\u91FD\uC9C8"+
-        "\uECE8\uECE9\u91FE\uCAD6\uDED0\uB2C5\uD4FA\u9240"+
-        "\u9241\uC6CB\uB0C7\uB4F2\uC8D3\u9242\u9243\u9244"+
-        "\uCDD0\u9245\u9246\uBFB8\u9247\u9248\u9249\u924A"+
-        "\u924B\u924C\u924D\uBFDB\u924E\u924F\uC7A4\uD6B4"+
-        "\u9250\uC0A9\uDED1\uC9A8\uD1EF\uC5A4\uB0E7\uB3B6"+
-        "\uC8C5\u9251\u9252\uB0E2\u9253\u9254\uB7F6\u9255"+
-        "\u9256\uC5FA\u9257\u9258\uB6F3\u9259\uD5D2\uB3D0"+
-        "\uBCBC\u925A\u925B\u925C\uB3AD\u925D\u925E\u925F"+
-        "\u9260\uBEF1\uB0D1\u9261\u9262\u9263\u9264\u9265"+
-        "\u9266\uD2D6\uCAE3\uD7A5\u9267\uCDB6\uB6B6\uBFB9"+
-        "\uD5DB\u9268\uB8A7\uC5D7\u9269\u926A\u926B\uDED2"+
-        "\uBFD9\uC2D5\uC7C0\u926C\uBBA4\uB1A8\u926D\u926E"+
-        "\uC5EA\u926F\u9270\uC5FB\uCCA7\u9271\u9272\u9273"+
-        "\u9274\uB1A7\u9275\u9276\u9277\uB5D6\u9278\u9279"+
-        "\u927A\uC4A8\u927B\uDED3\uD1BA\uB3E9\u927C\uC3F2"+
-        "\u927D\u927E\uB7F7\u9280\uD6F4\uB5A3\uB2F0\uC4B4"+
-        "\uC4E9\uC0AD\uDED4\u9281\uB0E8\uC5C4\uC1E0\u9282"+
-        "\uB9D5\u9283\uBEDC\uCDD8\uB0CE\u9284\uCDCF\uDED6"+
-        "\uBED0\uD7BE\uDED5\uD5D0\uB0DD\u9285\u9286\uC4E2"+
-        "\u9287\u9288\uC2A3\uBCF0\u9289\uD3B5\uC0B9\uC5A1"+
-        "\uB2A6\uD4F1\u928A\u928B\uC0A8\uCAC3\uDED7\uD5FC"+
-        "\u928C\uB9B0\u928D\uC8AD\uCBA9\u928E\uDED9\uBFBD"+
-        "\u928F\u9290\u9291\u9292\uC6B4\uD7A7\uCAB0\uC4C3"+
-        "\u9293\uB3D6\uB9D2\u9294\u9295\u9296\u9297\uD6B8"+
-        "\uEAFC\uB0B4\u9298\u9299\u929A\u929B\uBFE6\u929C"+
-        "\u929D\uCCF4\u929E\u929F\u92A0\u92A1\uCDDA\u92A2"+
-        "\u92A3\u92A4\uD6BF\uC2CE\u92A5\uCECE\uCCA2\uD0AE"+
-        "\uC4D3\uB5B2\uDED8\uD5F5\uBCB7\uBBD3\u92A6\u92A7"+
-        "\uB0A4\u92A8\uC5B2\uB4EC\u92A9\u92AA\u92AB\uD5F1"+
-        "\u92AC\u92AD\uEAFD\u92AE\u92AF\u92B0\u92B1\u92B2"+
-        "\u92B3\uDEDA\uCDA6\u92B4\u92B5\uCDEC\u92B6\u92B7"+
-        "\u92B8\u92B9\uCEE6\uDEDC\u92BA\uCDB1\uC0A6\u92BB"+
-        "\u92BC\uD7BD\u92BD\uDEDB\uB0C6\uBAB4\uC9D3\uC4F3"+
-        "\uBEE8\u92BE\u92BF\u92C0\u92C1\uB2B6\u92C2\u92C3"+
-        "\u92C4\u92C5\u92C6\u92C7\u92C8\u92C9\uC0CC\uCBF0"+
-        "\u92CA\uBCF1\uBBBB\uB5B7\u92CB\u92CC\u92CD\uC5F5"+
-        "\u92CE\uDEE6\u92CF\u92D0\u92D1\uDEE3\uBEDD\u92D2"+
-        "\u92D3\uDEDF\u92D4\u92D5\u92D6\u92D7\uB4B7\uBDDD"+
-        "\u92D8\u92D9\uDEE0\uC4ED\u92DA\u92DB\u92DC\u92DD"+
-        "\uCFC6\u92DE\uB5E0\u92DF\u92E0\u92E1\u92E2\uB6DE"+
-        "\uCADA\uB5F4\uDEE5\u92E3\uD5C6\u92E4\uDEE1\uCCCD"+
-        "\uC6FE\u92E5\uC5C5\u92E6\u92E7\u92E8\uD2B4\u92E9"+
-        "\uBEF2\u92EA\u92EB\u92EC\u92ED\u92EE\u92EF\u92F0"+
-        "\uC2D3\u92F1\uCCBD\uB3B8\u92F2\uBDD3\u92F3\uBFD8"+
-        "\uCDC6\uD1DA\uB4EB\u92F4\uDEE4\uDEDD\uDEE7\u92F5"+
-        "\uEAFE\u92F6\u92F7\uC2B0\uDEE2\u92F8\u92F9\uD6C0"+
-        "\uB5A7\u92FA\uB2F4\u92FB\uDEE8\u92FC\uDEF2\u92FD"+
-        "\u92FE\u9340\u9341\u9342\uDEED\u9343\uDEF1\u9344"+
-        "\u9345\uC8E0\u9346\u9347\u9348\uD7E1\uDEEF\uC3E8"+
-        "\uCCE1\u9349\uB2E5\u934A\u934B\u934C\uD2BE\u934D"+
-        "\u934E\u934F\u9350\u9351\u9352\u9353\uDEEE\u9354"+
-        "\uDEEB\uCED5\u9355\uB4A7\u9356\u9357\u9358\u9359"+
-        "\u935A\uBFAB\uBEBE\u935B\u935C\uBDD2\u935D\u935E"+
-        "\u935F\u9360\uDEE9\u9361\uD4AE\u9362\uDEDE\u9363"+
-        "\uDEEA\u9364\u9365\u9366\u9367\uC0BF\u9368\uDEEC"+
-        "\uB2F3\uB8E9\uC2A7\u9369\u936A\uBDC1\u936B\u936C"+
-        "\u936D\u936E\u936F\uDEF5\uDEF8\u9370\u9371\uB2AB"+
-        "\uB4A4\u9372\u9373\uB4EA\uC9A6\u9374\u9375\u9376"+
-        "\u9377\u9378\u9379\uDEF6\uCBD1\u937A\uB8E3\u937B"+
-        "\uDEF7\uDEFA\u937C\u937D\u937E\u9380\uDEF9\u9381"+
-        "\u9382\u9383\uCCC2\u9384\uB0E1\uB4EE\u9385\u9386"+
-        "\u9387\u9388\u9389\u938A\uE5BA\u938B\u938C\u938D"+
-        "\u938E\u938F\uD0AF\u9390\u9391\uB2EB\u9392\uEBA1"+
-        "\u9393\uDEF4\u9394\u9395\uC9E3\uDEF3\uB0DA\uD2A1"+
-        "\uB1F7\u9396\uCCAF\u9397\u9398\u9399\u939A\u939B"+
-        "\u939C\u939D\uDEF0\u939E\uCBA4\u939F\u93A0\u93A1"+
-        "\uD5AA\u93A2\u93A3\u93A4\u93A5\u93A6\uDEFB\u93A7"+
-        "\u93A8\u93A9\u93AA\u93AB\u93AC\u93AD\u93AE\uB4DD"+
-        "\u93AF\uC4A6\u93B0\u93B1\u93B2\uDEFD\u93B3\u93B4"+
-        "\u93B5\u93B6\u93B7\u93B8\u93B9\u93BA\u93BB\u93BC"+
-        "\uC3FE\uC4A1\uDFA1\u93BD\u93BE\u93BF\u93C0\u93C1"+
-        "\u93C2\u93C3\uC1CC\u93C4\uDEFC\uBEEF\u93C5\uC6B2"+
-        "\u93C6\u93C7\u93C8\u93C9\u93CA\u93CB\u93CC\u93CD"+
-        "\u93CE\uB3C5\uC8F6\u93CF\u93D0\uCBBA\uDEFE\u93D1"+
-        "\u93D2\uDFA4\u93D3\u93D4\u93D5\u93D6\uD7B2\u93D7"+
-        "\u93D8\u93D9\u93DA\u93DB\uB3B7\u93DC\u93DD\u93DE"+
-        "\u93DF\uC1C3\u93E0\u93E1\uC7CB\uB2A5\uB4E9\u93E2"+
-        "\uD7AB\u93E3\u93E4\u93E5\u93E6\uC4EC\u93E7\uDFA2"+
-        "\uDFA3\u93E8\uDFA5\u93E9\uBAB3\u93EA\u93EB\u93EC"+
-        "\uDFA6\u93ED\uC0DE\u93EE\u93EF\uC9C3\u93F0\u93F1"+
-        "\u93F2\u93F3\u93F4\u93F5\u93F6\uB2D9\uC7E6\u93F7"+
-        "\uDFA7\u93F8\uC7DC\u93F9\u93FA\u93FB\u93FC\uDFA8"+
-        "\uEBA2\u93FD\u93FE\u9440\u9441\u9442\uCBD3\u9443"+
-        "\u9444\u9445\uDFAA\u9446\uDFA9\u9447\uB2C1\u9448"+
-        "\u9449\u944A\u944B\u944C\u944D\u944E\u944F\u9450"+
-        "\u9451\u9452\u9453\u9454\u9455\u9456\u9457\u9458"+
-        "\u9459\u945A\u945B\u945C\u945D\u945E\u945F\u9460"+
-        "\uC5CA\u9461\u9462\u9463\u9464\u9465\u9466\u9467"+
-        "\u9468\uDFAB\u9469\u946A\u946B\u946C\u946D\u946E"+
-        "\u946F\u9470\uD4DC\u9471\u9472\u9473\u9474\u9475"+
-        "\uC8C1\u9476\u9477\u9478\u9479\u947A\u947B\u947C"+
-        "\u947D\u947E\u9480\u9481\u9482\uDFAC\u9483\u9484"+
-        "\u9485\u9486\u9487\uBEF0\u9488\u9489\uDFAD\uD6A7"+
-        "\u948A\u948B\u948C\u948D\uEAB7\uEBB6\uCAD5\u948E"+
-        "\uD8FC\uB8C4\u948F\uB9A5\u9490\u9491\uB7C5\uD5FE"+
-        "\u9492\u9493\u9494\u9495\u9496\uB9CA\u9497\u9498"+
-        "\uD0A7\uF4CD\u9499\u949A\uB5D0\u949B\u949C\uC3F4"+
-        "\u949D\uBEC8\u949E\u949F\u94A0\uEBB7\uB0BD\u94A1"+
-        "\u94A2\uBDCC\u94A3\uC1B2\u94A4\uB1D6\uB3A8\u94A5"+
-        "\u94A6\u94A7\uB8D2\uC9A2\u94A8\u94A9\uB6D8\u94AA"+
-        "\u94AB\u94AC\u94AD\uEBB8\uBEB4\u94AE\u94AF\u94B0"+
-        "\uCAFD\u94B1\uC7C3\u94B2\uD5FB\u94B3\u94B4\uB7F3"+
-        "\u94B5\u94B6\u94B7\u94B8\u94B9\u94BA\u94BB\u94BC"+
-        "\u94BD\u94BE\u94BF\u94C0\u94C1\u94C2\u94C3\uCEC4"+
-        "\u94C4\u94C5\u94C6\uD5AB\uB1F3\u94C7\u94C8\u94C9"+
-        "\uECB3\uB0DF\u94CA\uECB5\u94CB\u94CC\u94CD\uB6B7"+
-        "\u94CE\uC1CF\u94CF\uF5FA\uD0B1\u94D0\u94D1\uD5E5"+
-        "\u94D2\uCED3\u94D3\u94D4\uBDEF\uB3E2\u94D5\uB8AB"+
-        "\u94D6\uD5B6\u94D7\uEDBD\u94D8\uB6CF\u94D9\uCBB9"+
-        "\uD0C2\u94DA\u94DB\u94DC\u94DD\u94DE\u94DF\u94E0"+
-        "\u94E1\uB7BD\u94E2\u94E3\uECB6\uCAA9\u94E4\u94E5"+
-        "\u94E6\uC5D4\u94E7\uECB9\uECB8\uC2C3\uECB7\u94E8"+
-        "\u94E9\u94EA\u94EB\uD0FD\uECBA\u94EC\uECBB\uD7E5"+
-        "\u94ED\u94EE\uECBC\u94EF\u94F0\u94F1\uECBD\uC6EC"+
-        "\u94F2\u94F3\u94F4\u94F5\u94F6\u94F7\u94F8\u94F9"+
-        "\uCEDE\u94FA\uBCC8\u94FB\u94FC\uC8D5\uB5A9\uBEC9"+
-        "\uD6BC\uD4E7\u94FD\u94FE\uD1AE\uD0F1\uEAB8\uEAB9"+
-        "\uEABA\uBAB5\u9540\u9541\u9542\u9543\uCAB1\uBFF5"+
-        "\u9544\u9545\uCDFA\u9546\u9547\u9548\u9549\u954A"+
-        "\uEAC0\u954B\uB0BA\uEABE\u954C\u954D\uC0A5\u954E"+
-        "\u954F\u9550\uEABB\u9551\uB2FD\u9552\uC3F7\uBBE8"+
-        "\u9553\u9554\u9555\uD2D7\uCEF4\uEABF\u9556\u9557"+
-        "\u9558\uEABC\u9559\u955A\u955B\uEAC3\u955C\uD0C7"+
-        "\uD3B3\u955D\u955E\u955F\u9560\uB4BA\u9561\uC3C1"+
-        "\uD7F2\u9562\u9563\u9564\u9565\uD5D1\u9566\uCAC7"+
-        "\u9567\uEAC5\u9568\u9569\uEAC4\uEAC7\uEAC6\u956A"+
-        "\u956B\u956C\u956D\u956E\uD6E7\u956F\uCFD4\u9570"+
-        "\u9571\uEACB\u9572\uBBCE\u9573\u9574\u9575\u9576"+
-        "\u9577\u9578\u9579\uBDFA\uC9CE\u957A\u957B\uEACC"+
-        "\u957C\u957D\uC9B9\uCFFE\uEACA\uD4CE\uEACD\uEACF"+
-        "\u957E\u9580\uCDED\u9581\u9582\u9583\u9584\uEAC9"+
-        "\u9585\uEACE\u9586\u9587\uCEEE\u9588\uBBDE\u9589"+
-        "\uB3BF\u958A\u958B\u958C\u958D\u958E\uC6D5\uBEB0"+
-        "\uCEFA\u958F\u9590\u9591\uC7E7\u9592\uBEA7\uEAD0"+
-        "\u9593\u9594\uD6C7\u9595\u9596\u9597\uC1C0\u9598"+
-        "\u9599\u959A\uD4DD\u959B\uEAD1\u959C\u959D\uCFBE"+
-        "\u959E\u959F\u95A0\u95A1\uEAD2\u95A2\u95A3\u95A4"+
-        "\u95A5\uCAEE\u95A6\u95A7\u95A8\u95A9\uC5AF\uB0B5"+
-        "\u95AA\u95AB\u95AC\u95AD\u95AE\uEAD4\u95AF\u95B0"+
-        "\u95B1\u95B2\u95B3\u95B4\u95B5\u95B6\u95B7\uEAD3"+
-        "\uF4DF\u95B8\u95B9\u95BA\u95BB\u95BC\uC4BA\u95BD"+
-        "\u95BE\u95BF\u95C0\u95C1\uB1A9\u95C2\u95C3\u95C4"+
-        "\u95C5\uE5DF\u95C6\u95C7\u95C8\u95C9\uEAD5\u95CA"+
-        "\u95CB\u95CC\u95CD\u95CE\u95CF\u95D0\u95D1\u95D2"+
-        "\u95D3\u95D4\u95D5\u95D6\u95D7\u95D8\u95D9\u95DA"+
-        "\u95DB\u95DC\u95DD\u95DE\u95DF\u95E0\u95E1\u95E2"+
-        "\u95E3\uCAEF\u95E4\uEAD6\uEAD7\uC6D8\u95E5\u95E6"+
-        "\u95E7\u95E8\u95E9\u95EA\u95EB\u95EC\uEAD8\u95ED"+
-        "\u95EE\uEAD9\u95EF\u95F0\u95F1\u95F2\u95F3\u95F4"+
-        "\uD4BB\u95F5\uC7FA\uD2B7\uB8FC\u95F6\u95F7\uEAC2"+
-        "\u95F8\uB2DC\u95F9\u95FA\uC2FC\u95FB\uD4F8\uCCE6"+
-        "\uD7EE\u95FC\u95FD\u95FE\u9640\u9641\u9642\u9643"+
-        "\uD4C2\uD3D0\uEBC3\uC5F3\u9644\uB7FE\u9645\u9646"+
-        "\uEBD4\u9647\u9648\u9649\uCBB7\uEBDE\u964A\uC0CA"+
-        "\u964B\u964C\u964D\uCDFB\u964E\uB3AF\u964F\uC6DA"+
-        "\u9650\u9651\u9652\u9653\u9654\u9655\uEBFC\u9656"+
-        "\uC4BE\u9657\uCEB4\uC4A9\uB1BE\uD4FD\u9658\uCAF5"+
-        "\u9659\uD6EC\u965A\u965B\uC6D3\uB6E4\u965C\u965D"+
-        "\u965E\u965F\uBBFA\u9660\u9661\uD0E0\u9662\u9663"+
-        "\uC9B1\u9664\uD4D3\uC8A8\u9665\u9666\uB8CB\u9667"+
-        "\uE8BE\uC9BC\u9668\u9669\uE8BB\u966A\uC0EE\uD0D3"+
-        "\uB2C4\uB4E5\u966B\uE8BC\u966C\u966D\uD5C8\u966E"+
-        "\u966F\u9670\u9671\u9672\uB6C5\u9673\uE8BD\uCAF8"+
-        "\uB8DC\uCCF5\u9674\u9675\u9676\uC0B4\u9677\u9678"+
-        "\uD1EE\uE8BF\uE8C2\u9679\u967A\uBABC\u967B\uB1AD"+
-        "\uBDDC\u967C\uEABD\uE8C3\u967D\uE8C6\u967E\uE8CB"+
-        "\u9680\u9681\u9682\u9683\uE8CC\u9684\uCBC9\uB0E5"+
-        "\u9685\uBCAB\u9686\u9687\uB9B9\u9688\u9689\uE8C1"+
-        "\u968A\uCDF7\u968B\uE8CA\u968C\u968D\u968E\u968F"+
-        "\uCEF6\u9690\u9691\u9692\u9693\uD5ED\u9694\uC1D6"+
-        "\uE8C4\u9695\uC3B6\u9696\uB9FB\uD6A6\uE8C8\u9697"+
-        "\u9698\u9699\uCAE0\uD4E6\u969A\uE8C0\u969B\uE8C5"+
-        "\uE8C7\u969C\uC7B9\uB7E3\u969D\uE8C9\u969E\uBFDD"+
-        "\uE8D2\u969F\u96A0\uE8D7\u96A1\uE8D5\uBCDC\uBCCF"+
-        "\uE8DB\u96A2\u96A3\u96A4\u96A5\u96A6\u96A7\u96A8"+
-        "\u96A9\uE8DE\u96AA\uE8DA\uB1FA\u96AB\u96AC\u96AD"+
-        "\u96AE\u96AF\u96B0\u96B1\u96B2\u96B3\u96B4\uB0D8"+
-        "\uC4B3\uB8CC\uC6E2\uC8BE\uC8E1\u96B5\u96B6\u96B7"+
-        "\uE8CF\uE8D4\uE8D6\u96B8\uB9F1\uE8D8\uD7F5\u96B9"+
-        "\uC4FB\u96BA\uE8DC\u96BB\u96BC\uB2E9\u96BD\u96BE"+
-        "\u96BF\uE8D1\u96C0\u96C1\uBCED\u96C2\u96C3\uBFC2"+
-        "\uE8CD\uD6F9\u96C4\uC1F8\uB2F1\u96C5\u96C6\u96C7"+
-        "\u96C8\u96C9\u96CA\u96CB\u96CC\uE8DF\u96CD\uCAC1"+
-        "\uE8D9\u96CE\u96CF\u96D0\u96D1\uD5A4\u96D2\uB1EA"+
-        "\uD5BB\uE8CE\uE8D0\uB6B0\uE8D3\u96D3\uE8DD\uC0B8"+
-        "\u96D4\uCAF7\u96D5\uCBA8\u96D6\u96D7\uC6DC\uC0F5"+
-        "\u96D8\u96D9\u96DA\u96DB\u96DC\uE8E9\u96DD\u96DE"+
-        "\u96DF\uD0A3\u96E0\u96E1\u96E2\u96E3\u96E4\u96E5"+
-        "\u96E6\uE8F2\uD6EA\u96E7\u96E8\u96E9\u96EA\u96EB"+
-        "\u96EC\u96ED\uE8E0\uE8E1\u96EE\u96EF\u96F0\uD1F9"+
-        "\uBACB\uB8F9\u96F1\u96F2\uB8F1\uD4D4\uE8EF\u96F3"+
-        "\uE8EE\uE8EC\uB9F0\uCCD2\uE8E6\uCEA6\uBFF2\u96F4"+
-        "\uB0B8\uE8F1\uE8F0\u96F5\uD7C0\u96F6\uE8E4\u96F7"+
-        "\uCDA9\uC9A3\u96F8\uBBB8\uBDDB\uE8EA\u96F9\u96FA"+
-        "\u96FB\u96FC\u96FD\u96FE\u9740\u9741\u9742\u9743"+
-        "\uE8E2\uE8E3\uE8E5\uB5B5\uE8E7\uC7C5\uE8EB\uE8ED"+
-        "\uBDB0\uD7AE\u9744\uE8F8\u9745\u9746\u9747\u9748"+
-        "\u9749\u974A\u974B\u974C\uE8F5\u974D\uCDB0\uE8F6"+
-        "\u974E\u974F\u9750\u9751\u9752\u9753\u9754\u9755"+
-        "\u9756\uC1BA\u9757\uE8E8\u9758\uC3B7\uB0F0\u9759"+
-        "\u975A\u975B\u975C\u975D\u975E\u975F\u9760\uE8F4"+
-        "\u9761\u9762\u9763\uE8F7\u9764\u9765\u9766\uB9A3"+
-        "\u9767\u9768\u9769\u976A\u976B\u976C\u976D\u976E"+
-        "\u976F\u9770\uC9D2\u9771\u9772\u9773\uC3CE\uCEE0"+
-        "\uC0E6\u9774\u9775\u9776\u9777\uCBF3\u9778\uCCDD"+
-        "\uD0B5\u9779\u977A\uCAE1\u977B\uE8F3\u977C\u977D"+
-        "\u977E\u9780\u9781\u9782\u9783\u9784\u9785\u9786"+
-        "\uBCEC\u9787\uE8F9\u9788\u9789\u978A\u978B\u978C"+
-        "\u978D\uC3DE\u978E\uC6E5\u978F\uB9F7\u9790\u9791"+
-        "\u9792\u9793\uB0F4\u9794\u9795\uD7D8\u9796\u9797"+
-        "\uBCAC\u9798\uC5EF\u9799\u979A\u979B\u979C\u979D"+
-        "\uCCC4\u979E\u979F\uE9A6\u97A0\u97A1\u97A2\u97A3"+
-        "\u97A4\u97A5\u97A6\u97A7\u97A8\u97A9\uC9AD\u97AA"+
-        "\uE9A2\uC0E2\u97AB\u97AC\u97AD\uBFC3\u97AE\u97AF"+
-        "\u97B0\uE8FE\uB9D7\u97B1\uE8FB\u97B2\u97B3\u97B4"+
-        "\u97B5\uE9A4\u97B6\u97B7\u97B8\uD2CE\u97B9\u97BA"+
-        "\u97BB\u97BC\u97BD\uE9A3\u97BE\uD6B2\uD7B5\u97BF"+
-        "\uE9A7\u97C0\uBDB7\u97C1\u97C2\u97C3\u97C4\u97C5"+
-        "\u97C6\u97C7\u97C8\u97C9\u97CA\u97CB\u97CC\uE8FC"+
-        "\uE8FD\u97CD\u97CE\u97CF\uE9A1\u97D0\u97D1\u97D2"+
-        "\u97D3\u97D4\u97D5\u97D6\u97D7\uCDD6\u97D8\u97D9"+
-        "\uD2AC\u97DA\u97DB\u97DC\uE9B2\u97DD\u97DE\u97DF"+
-        "\u97E0\uE9A9\u97E1\u97E2\u97E3\uB4AA\u97E4\uB4BB"+
-        "\u97E5\u97E6\uE9AB\u97E7\u97E8\u97E9\u97EA\u97EB"+
-        "\u97EC\u97ED\u97EE\u97EF\u97F0\u97F1\u97F2\u97F3"+
-        "\u97F4\u97F5\u97F6\u97F7\uD0A8\u97F8\u97F9\uE9A5"+
-        "\u97FA\u97FB\uB3FE\u97FC\u97FD\uE9AC\uC0E3\u97FE"+
-        "\uE9AA\u9840\u9841\uE9B9\u9842\u9843\uE9B8\u9844"+
-        "\u9845\u9846\u9847\uE9AE\u9848\u9849\uE8FA\u984A"+
-        "\u984B\uE9A8\u984C\u984D\u984E\u984F\u9850\uBFAC"+
-        "\uE9B1\uE9BA\u9851\u9852\uC2A5\u9853\u9854\u9855"+
-        "\uE9AF\u9856\uB8C5\u9857\uE9AD\u9858\uD3DC\uE9B4"+
-        "\uE9B5\uE9B7\u9859\u985A\u985B\uE9C7\u985C\u985D"+
-        "\u985E\u985F\u9860\u9861\uC0C6\uE9C5\u9862\u9863"+
-        "\uE9B0\u9864\u9865\uE9BB\uB0F1\u9866\u9867\u9868"+
-        "\u9869\u986A\u986B\u986C\u986D\u986E\u986F\uE9BC"+
-        "\uD5A5\u9870\u9871\uE9BE\u9872\uE9BF\u9873\u9874"+
-        "\u9875\uE9C1\u9876\u9877\uC1F1\u9878\u9879\uC8B6"+
-        "\u987A\u987B\u987C\uE9BD\u987D\u987E\u9880\u9881"+
-        "\u9882\uE9C2\u9883\u9884\u9885\u9886\u9887\u9888"+
-        "\u9889\u988A\uE9C3\u988B\uE9B3\u988C\uE9B6\u988D"+
-        "\uBBB1\u988E\u988F\u9890\uE9C0\u9891\u9892\u9893"+
-        "\u9894\u9895\u9896\uBCF7\u9897\u9898\u9899\uE9C4"+
-        "\uE9C6\u989A\u989B\u989C\u989D\u989E\u989F\u98A0"+
-        "\u98A1\u98A2\u98A3\u98A4\u98A5\uE9CA\u98A6\u98A7"+
-        "\u98A8\u98A9\uE9CE\u98AA\u98AB\u98AC\u98AD\u98AE"+
-        "\u98AF\u98B0\u98B1\u98B2\u98B3\uB2DB\u98B4\uE9C8"+
-        "\u98B5\u98B6\u98B7\u98B8\u98B9\u98BA\u98BB\u98BC"+
-        "\u98BD\u98BE\uB7AE\u98BF\u98C0\u98C1\u98C2\u98C3"+
-        "\u98C4\u98C5\u98C6\u98C7\u98C8\u98C9\u98CA\uE9CB"+
-        "\uE9CC\u98CB\u98CC\u98CD\u98CE\u98CF\u98D0\uD5C1"+
-        "\u98D1\uC4A3\u98D2\u98D3\u98D4\u98D5\u98D6\u98D7"+
-        "\uE9D8\u98D8\uBAE1\u98D9\u98DA\u98DB\u98DC\uE9C9"+
-        "\u98DD\uD3A3\u98DE\u98DF\u98E0\uE9D4\u98E1\u98E2"+
-        "\u98E3\u98E4\u98E5\u98E6\u98E7\uE9D7\uE9D0\u98E8"+
-        "\u98E9\u98EA\u98EB\u98EC\uE9CF\u98ED\u98EE\uC7C1"+
-        "\u98EF\u98F0\u98F1\u98F2\u98F3\u98F4\u98F5\u98F6"+
-        "\uE9D2\u98F7\u98F8\u98F9\u98FA\u98FB\u98FC\u98FD"+
-        "\uE9D9\uB3C8\u98FE\uE9D3\u9940\u9941\u9942\u9943"+
-        "\u9944\uCFF0\u9945\u9946\u9947\uE9CD\u9948\u9949"+
-        "\u994A\u994B\u994C\u994D\u994E\u994F\u9950\u9951"+
-        "\u9952\uB3F7\u9953\u9954\u9955\u9956\u9957\u9958"+
-        "\u9959\uE9D6\u995A\u995B\uE9DA\u995C\u995D\u995E"+
-        "\uCCB4\u995F\u9960\u9961\uCFAD\u9962\u9963\u9964"+
-        "\u9965\u9966\u9967\u9968\u9969\u996A\uE9D5\u996B"+
-        "\uE9DC\uE9DB\u996C\u996D\u996E\u996F\u9970\uE9DE"+
-        "\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978"+
-        "\uE9D1\u9979\u997A\u997B\u997C\u997D\u997E\u9980"+
-        "\u9981\uE9DD\u9982\uE9DF\uC3CA\u9983\u9984\u9985"+
-        "\u9986\u9987\u9988\u9989\u998A\u998B\u998C\u998D"+
-        "\u998E\u998F\u9990\u9991\u9992\u9993\u9994\u9995"+
-        "\u9996\u9997\u9998\u9999\u999A\u999B\u999C\u999D"+
-        "\u999E\u999F\u99A0\u99A1\u99A2\u99A3\u99A4\u99A5"+
-        "\u99A6\u99A7\u99A8\u99A9\u99AA\u99AB\u99AC\u99AD"+
-        "\u99AE\u99AF\u99B0\u99B1\u99B2\u99B3\u99B4\u99B5"+
-        "\u99B6\u99B7\u99B8\u99B9\u99BA\u99BB\u99BC\u99BD"+
-        "\u99BE\u99BF\u99C0\u99C1\u99C2\u99C3\u99C4\u99C5"+
-        "\u99C6\u99C7\u99C8\u99C9\u99CA\u99CB\u99CC\u99CD"+
-        "\u99CE\u99CF\u99D0\u99D1\u99D2\u99D3\u99D4\u99D5"+
-        "\u99D6\u99D7\u99D8\u99D9\u99DA\u99DB\u99DC\u99DD"+
-        "\u99DE\u99DF\u99E0\u99E1\u99E2\u99E3\u99E4\u99E5"+
-        "\u99E6\u99E7\u99E8\u99E9\u99EA\u99EB\u99EC\u99ED"+
-        "\u99EE\u99EF\u99F0\u99F1\u99F2\u99F3\u99F4\u99F5"+
-        "\uC7B7\uB4CE\uBBB6\uD0C0\uECA3\u99F6\u99F7\uC5B7"+
-        "\u99F8\u99F9\u99FA\u99FB\u99FC\u99FD\u99FE\u9A40"+
-        "\u9A41\u9A42\uD3FB\u9A43\u9A44\u9A45\u9A46\uECA4"+
-        "\u9A47\uECA5\uC6DB\u9A48\u9A49\u9A4A\uBFEE\u9A4B"+
-        "\u9A4C\u9A4D\u9A4E\uECA6\u9A4F\u9A50\uECA7\uD0AA"+
-        "\u9A51\uC7B8\u9A52\u9A53\uB8E8\u9A54\u9A55\u9A56"+
-        "\u9A57\u9A58\u9A59\u9A5A\u9A5B\u9A5C\u9A5D\u9A5E"+
-        "\u9A5F\uECA8\u9A60\u9A61\u9A62\u9A63\u9A64\u9A65"+
-        "\u9A66\u9A67\uD6B9\uD5FD\uB4CB\uB2BD\uCEE4\uC6E7"+
-        "\u9A68\u9A69\uCDE1\u9A6A\u9A6B\u9A6C\u9A6D\u9A6E"+
-        "\u9A6F\u9A70\u9A71\u9A72\u9A73\u9A74\u9A75\u9A76"+
-        "\u9A77\uB4F5\u9A78\uCBC0\uBCDF\u9A79\u9A7A\u9A7B"+
-        "\u9A7C\uE9E2\uE9E3\uD1EA\uE9E5\u9A7D\uB4F9\uE9E4"+
-        "\u9A7E\uD1B3\uCAE2\uB2D0\u9A80\uE9E8\u9A81\u9A82"+
-        "\u9A83\u9A84\uE9E6\uE9E7\u9A85\u9A86\uD6B3\u9A87"+
-        "\u9A88\u9A89\uE9E9\uE9EA\u9A8A\u9A8B\u9A8C\u9A8D"+
-        "\u9A8E\uE9EB\u9A8F\u9A90\u9A91\u9A92\u9A93\u9A94"+
-        "\u9A95\u9A96\uE9EC\u9A97\u9A98\u9A99\u9A9A\u9A9B"+
-        "\u9A9C\u9A9D\u9A9E\uECAF\uC5B9\uB6CE\u9A9F\uD2F3"+
-        "\u9AA0\u9AA1\u9AA2\u9AA3\u9AA4\u9AA5\u9AA6\uB5EE"+
-        "\u9AA7\uBBD9\uECB1\u9AA8\u9AA9\uD2E3\u9AAA\u9AAB"+
-        "\u9AAC\u9AAD\u9AAE\uCEE3\u9AAF\uC4B8\u9AB0\uC3BF"+
-        "\u9AB1\u9AB2\uB6BE\uD8B9\uB1C8\uB1CF\uB1D1\uC5FE"+
-        "\u9AB3\uB1D0\u9AB4\uC3AB\u9AB5\u9AB6\u9AB7\u9AB8"+
-        "\u9AB9\uD5B1\u9ABA\u9ABB\u9ABC\u9ABD\u9ABE\u9ABF"+
-        "\u9AC0\u9AC1\uEBA4\uBAC1\u9AC2\u9AC3\u9AC4\uCCBA"+
-        "\u9AC5\u9AC6\u9AC7\uEBA5\u9AC8\uEBA7\u9AC9\u9ACA"+
-        "\u9ACB\uEBA8\u9ACC\u9ACD\u9ACE\uEBA6\u9ACF\u9AD0"+
-        "\u9AD1\u9AD2\u9AD3\u9AD4\u9AD5\uEBA9\uEBAB\uEBAA"+
-        "\u9AD6\u9AD7\u9AD8\u9AD9\u9ADA\uEBAC\u9ADB\uCACF"+
-        "\uD8B5\uC3F1\u9ADC\uC3A5\uC6F8\uEBAD\uC4CA\u9ADD"+
-        "\uEBAE\uEBAF\uEBB0\uB7D5\u9ADE\u9ADF\u9AE0\uB7FA"+
-        "\u9AE1\uEBB1\uC7E2\u9AE2\uEBB3\u9AE3\uBAA4\uD1F5"+
-        "\uB0B1\uEBB2\uEBB4\u9AE4\u9AE5\u9AE6\uB5AA\uC2C8"+
-        "\uC7E8\u9AE7\uEBB5\u9AE8\uCBAE\uE3DF\u9AE9\u9AEA"+
-        "\uD3C0\u9AEB\u9AEC\u9AED\u9AEE\uD9DB\u9AEF\u9AF0"+
-        "\uCDA1\uD6AD\uC7F3\u9AF1\u9AF2\u9AF3\uD9E0\uBBE3"+
-        "\u9AF4\uBABA\uE3E2\u9AF5\u9AF6\u9AF7\u9AF8\u9AF9"+
-        "\uCFAB\u9AFA\u9AFB\u9AFC\uE3E0\uC9C7\u9AFD\uBAB9"+
-        "\u9AFE\u9B40\u9B41\uD1B4\uE3E1\uC8EA\uB9AF\uBDAD"+
-        "\uB3D8\uCEDB\u9B42\u9B43\uCCC0\u9B44\u9B45\u9B46"+
-        "\uE3E8\uE3E9\uCDF4\u9B47\u9B48\u9B49\u9B4A\u9B4B"+
-        "\uCCAD\u9B4C\uBCB3\u9B4D\uE3EA\u9B4E\uE3EB\u9B4F"+
-        "\u9B50\uD0DA\u9B51\u9B52\u9B53\uC6FB\uB7DA\u9B54"+
-        "\u9B55\uC7DF\uD2CA\uCED6\u9B56\uE3E4\uE3EC\u9B57"+
-        "\uC9F2\uB3C1\u9B58\u9B59\uE3E7\u9B5A\u9B5B\uC6E3"+
-        "\uE3E5\u9B5C\u9B5D\uEDB3\uE3E6\u9B5E\u9B5F\u9B60"+
-        "\u9B61\uC9B3\u9B62\uC5E6\u9B63\u9B64\u9B65\uB9B5"+
-        "\u9B66\uC3BB\u9B67\uE3E3\uC5BD\uC1A4\uC2D9\uB2D7"+
-        "\u9B68\uE3ED\uBBA6\uC4AD\u9B69\uE3F0\uBEDA\u9B6A"+
-        "\u9B6B\uE3FB\uE3F5\uBAD3\u9B6C\u9B6D\u9B6E\u9B6F"+
-        "\uB7D0\uD3CD\u9B70\uD6CE\uD5D3\uB9C1\uD5B4\uD1D8"+
-        "\u9B71\u9B72\u9B73\u9B74\uD0B9\uC7F6\u9B75\u9B76"+
-        "\u9B77\uC8AA\uB2B4\u9B78\uC3DA\u9B79\u9B7A\u9B7B"+
-        "\uE3EE\u9B7C\u9B7D\uE3FC\uE3EF\uB7A8\uE3F7\uE3F4"+
-        "\u9B7E\u9B80\u9B81\uB7BA\u9B82\u9B83\uC5A2\u9B84"+
-        "\uE3F6\uC5DD\uB2A8\uC6FC\u9B85\uC4E0\u9B86\u9B87"+
-        "\uD7A2\u9B88\uC0E1\uE3F9\u9B89\u9B8A\uE3FA\uE3FD"+
-        "\uCCA9\uE3F3\u9B8B\uD3BE\u9B8C\uB1C3\uEDB4\uE3F1"+
-        "\uE3F2\u9B8D\uE3F8\uD0BA\uC6C3\uD4F3\uE3FE\u9B8E"+
-        "\u9B8F\uBDE0\u9B90\u9B91\uE4A7\u9B92\u9B93\uE4A6"+
-        "\u9B94\u9B95\u9B96\uD1F3\uE4A3\u9B97\uE4A9\u9B98"+
-        "\u9B99\u9B9A\uC8F7\u9B9B\u9B9C\u9B9D\u9B9E\uCFB4"+
-        "\u9B9F\uE4A8\uE4AE\uC2E5\u9BA0\u9BA1\uB6B4\u9BA2"+
-        "\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7\uBDF2\u9BA8\uE4A2"+
-        "\u9BA9\u9BAA\uBAE9\uE4AA\u9BAB\u9BAC\uE4AC\u9BAD"+
-        "\u9BAE\uB6FD\uD6DE\uE4B2\u9BAF\uE4AD\u9BB0\u9BB1"+
-        "\u9BB2\uE4A1\u9BB3\uBBEE\uCDDD\uC7A2\uC5C9\u9BB4"+
-        "\u9BB5\uC1F7\u9BB6\uE4A4\u9BB7\uC7B3\uBDAC\uBDBD"+
-        "\uE4A5\u9BB8\uD7C7\uB2E2\u9BB9\uE4AB\uBCC3\uE4AF"+
-        "\u9BBA\uBBEB\uE4B0\uC5A8\uE4B1\u9BBB\u9BBC\u9BBD"+
-        "\u9BBE\uD5E3\uBFA3\u9BBF\uE4BA\u9BC0\uE4B7\u9BC1"+
-        "\uE4BB\u9BC2\u9BC3\uE4BD\u9BC4\u9BC5\uC6D6\u9BC6"+
-        "\u9BC7\uBAC6\uC0CB\u9BC8\u9BC9\u9BCA\uB8A1\uE4B4"+
-        "\u9BCB\u9BCC\u9BCD\u9BCE\uD4A1\u9BCF\u9BD0\uBAA3"+
-        "\uBDFE\u9BD1\u9BD2\u9BD3\uE4BC\u9BD4\u9BD5\u9BD6"+
-        "\u9BD7\u9BD8\uCDBF\u9BD9\u9BDA\uC4F9\u9BDB\u9BDC"+
-        "\uCFFB\uC9E6\u9BDD\u9BDE\uD3BF\u9BDF\uCFD1\u9BE0"+
-        "\u9BE1\uE4B3\u9BE2\uE4B8\uE4B9\uCCE9\u9BE3\u9BE4"+
-        "\u9BE5\u9BE6\u9BE7\uCCCE\u9BE8\uC0D4\uE4B5\uC1B0"+
-        "\uE4B6\uCED0\u9BE9\uBBC1\uB5D3\u9BEA\uC8F3\uBDA7"+
-        "\uD5C7\uC9AC\uB8A2\uE4CA\u9BEB\u9BEC\uE4CC\uD1C4"+
-        "\u9BED\u9BEE\uD2BA\u9BEF\u9BF0\uBAAD\u9BF1\u9BF2"+
-        "\uBAD4\u9BF3\u9BF4\u9BF5\u9BF6\u9BF7\u9BF8\uE4C3"+
-        "\uB5ED\u9BF9\u9BFA\u9BFB\uD7CD\uE4C0\uCFFD\uE4BF"+
-        "\u9BFC\u9BFD\u9BFE\uC1DC\uCCCA\u9C40\u9C41\u9C42"+
-        "\u9C43\uCAE7\u9C44\u9C45\u9C46\u9C47\uC4D7\u9C48"+
-        "\uCCD4\uE4C8\u9C49\u9C4A\u9C4B\uE4C7\uE4C1\u9C4C"+
-        "\uE4C4\uB5AD\u9C4D\u9C4E\uD3D9\u9C4F\uE4C6\u9C50"+
-        "\u9C51\u9C52\u9C53\uD2F9\uB4E3\u9C54\uBBB4\u9C55"+
-        "\u9C56\uC9EE\u9C57\uB4BE\u9C58\u9C59\u9C5A\uBBEC"+
-        "\u9C5B\uD1CD\u9C5C\uCCED\uEDB5\u9C5D\u9C5E\u9C5F"+
-        "\u9C60\u9C61\u9C62\u9C63\u9C64\uC7E5\u9C65\u9C66"+
-        "\u9C67\u9C68\uD4A8\u9C69\uE4CB\uD7D5\uE4C2\u9C6A"+
-        "\uBDA5\uE4C5\u9C6B\u9C6C\uD3E6\u9C6D\uE4C9\uC9F8"+
-        "\u9C6E\u9C6F\uE4BE\u9C70\u9C71\uD3E5\u9C72\u9C73"+
-        "\uC7FE\uB6C9\u9C74\uD4FC\uB2B3\uE4D7\u9C75\u9C76"+
-        "\u9C77\uCEC2\u9C78\uE4CD\u9C79\uCEBC\u9C7A\uB8DB"+
-        "\u9C7B\u9C7C\uE4D6\u9C7D\uBFCA\u9C7E\u9C80\u9C81"+
-        "\uD3CE\u9C82\uC3EC\u9C83\u9C84\u9C85\u9C86\u9C87"+
-        "\u9C88\u9C89\u9C8A\uC5C8\uE4D8\u9C8B\u9C8C\u9C8D"+
-        "\u9C8E\u9C8F\u9C90\u9C91\u9C92\uCDC4\uE4CF\u9C93"+
-        "\u9C94\u9C95\u9C96\uE4D4\uE4D5\u9C97\uBAFE\u9C98"+
-        "\uCFE6\u9C99\u9C9A\uD5BF\u9C9B\u9C9C\u9C9D\uE4D2"+
-        "\u9C9E\u9C9F\u9CA0\u9CA1\u9CA2\u9CA3\u9CA4\u9CA5"+
-        "\u9CA6\u9CA7\u9CA8\uE4D0\u9CA9\u9CAA\uE4CE\u9CAB"+
-        "\u9CAC\u9CAD\u9CAE\u9CAF\u9CB0\u9CB1\u9CB2\u9CB3"+
-        "\u9CB4\u9CB5\u9CB6\u9CB7\u9CB8\u9CB9\uCDE5\uCAAA"+
-        "\u9CBA\u9CBB\u9CBC\uC0A3\u9CBD\uBDA6\uE4D3\u9CBE"+
-        "\u9CBF\uB8C8\u9CC0\u9CC1\u9CC2\u9CC3\u9CC4\uE4E7"+
-        "\uD4B4\u9CC5\u9CC6\u9CC7\u9CC8\u9CC9\u9CCA\u9CCB"+
-        "\uE4DB\u9CCC\u9CCD\u9CCE\uC1EF\u9CCF\u9CD0\uE4E9"+
-        "\u9CD1\u9CD2\uD2E7\u9CD3\u9CD4\uE4DF\u9CD5\uE4E0"+
-        "\u9CD6\u9CD7\uCFAA\u9CD8\u9CD9\u9CDA\u9CDB\uCBDD"+
-        "\u9CDC\uE4DA\uE4D1\u9CDD\uE4E5\u9CDE\uC8DC\uE4E3"+
-        "\u9CDF\u9CE0\uC4E7\uE4E2\u9CE1\uE4E1\u9CE2\u9CE3"+
-        "\u9CE4\uB3FC\uE4E8\u9CE5\u9CE6\u9CE7\u9CE8\uB5E1"+
-        "\u9CE9\u9CEA\u9CEB\uD7CC\u9CEC\u9CED\u9CEE\uE4E6"+
-        "\u9CEF\uBBAC\u9CF0\uD7D2\uCCCF\uEBF8\u9CF1\uE4E4"+
-        "\u9CF2\u9CF3\uB9F6\u9CF4\u9CF5\u9CF6\uD6CD\uE4D9"+
-        "\uE4DC\uC2FA\uE4DE\u9CF7\uC2CB\uC0C4\uC2D0\u9CF8"+
-        "\uB1F5\uCCB2\u9CF9\u9CFA\u9CFB\u9CFC\u9CFD\u9CFE"+
-        "\u9D40\u9D41\u9D42\u9D43\uB5CE\u9D44\u9D45\u9D46"+
-        "\u9D47\uE4EF\u9D48\u9D49\u9D4A\u9D4B\u9D4C\u9D4D"+
-        "\u9D4E\u9D4F\uC6AF\u9D50\u9D51\u9D52\uC6E1\u9D53"+
-        "\u9D54\uE4F5\u9D55\u9D56\u9D57\u9D58\u9D59\uC2A9"+
-        "\u9D5A\u9D5B\u9D5C\uC0EC\uD1DD\uE4EE\u9D5D\u9D5E"+
-        "\u9D5F\u9D60\u9D61\u9D62\u9D63\u9D64\u9D65\u9D66"+
-        "\uC4AE\u9D67\u9D68\u9D69\uE4ED\u9D6A\u9D6B\u9D6C"+
-        "\u9D6D\uE4F6\uE4F4\uC2FE\u9D6E\uE4DD\u9D6F\uE4F0"+
-        "\u9D70\uCAFE\u9D71\uD5C4\u9D72\u9D73\uE4F1\u9D74"+
-        "\u9D75\u9D76\u9D77\u9D78\u9D79\u9D7A\uD1FA\u9D7B"+
-        "\u9D7C\u9D7D\u9D7E\u9D80\u9D81\u9D82\uE4EB\uE4EC"+
-        "\u9D83\u9D84\u9D85\uE4F2\u9D86\uCEAB\u9D87\u9D88"+
-        "\u9D89\u9D8A\u9D8B\u9D8C\u9D8D\u9D8E\u9D8F\u9D90"+
-        "\uC5CB\u9D91\u9D92\u9D93\uC7B1\u9D94\uC2BA\u9D95"+
-        "\u9D96\u9D97\uE4EA\u9D98\u9D99\u9D9A\uC1CA\u9D9B"+
-        "\u9D9C\u9D9D\u9D9E\u9D9F\u9DA0\uCCB6\uB3B1\u9DA1"+
-        "\u9DA2\u9DA3\uE4FB\u9DA4\uE4F3\u9DA5\u9DA6\u9DA7"+
-        "\uE4FA\u9DA8\uE4FD\u9DA9\uE4FC\u9DAA\u9DAB\u9DAC"+
-        "\u9DAD\u9DAE\u9DAF\u9DB0\uB3CE\u9DB1\u9DB2\u9DB3"+
-        "\uB3BA\uE4F7\u9DB4\u9DB5\uE4F9\uE4F8\uC5EC\u9DB6"+
-        "\u9DB7\u9DB8\u9DB9\u9DBA\u9DBB\u9DBC\u9DBD\u9DBE"+
-        "\u9DBF\u9DC0\u9DC1\u9DC2\uC0BD\u9DC3\u9DC4\u9DC5"+
-        "\u9DC6\uD4E8\u9DC7\u9DC8\u9DC9\u9DCA\u9DCB\uE5A2"+
-        "\u9DCC\u9DCD\u9DCE\u9DCF\u9DD0\u9DD1\u9DD2\u9DD3"+
-        "\u9DD4\u9DD5\u9DD6\uB0C4\u9DD7\u9DD8\uE5A4\u9DD9"+
-        "\u9DDA\uE5A3\u9DDB\u9DDC\u9DDD\u9DDE\u9DDF\u9DE0"+
-        "\uBCA4\u9DE1\uE5A5\u9DE2\u9DE3\u9DE4\u9DE5\u9DE6"+
-        "\u9DE7\uE5A1\u9DE8\u9DE9\u9DEA\u9DEB\u9DEC\u9DED"+
-        "\u9DEE\uE4FE\uB1F4\u9DEF\u9DF0\u9DF1\u9DF2\u9DF3"+
-        "\u9DF4\u9DF5\u9DF6\u9DF7\u9DF8\u9DF9\uE5A8\u9DFA"+
-        "\uE5A9\uE5A6\u9DFB\u9DFC\u9DFD\u9DFE\u9E40\u9E41"+
-        "\u9E42\u9E43\u9E44\u9E45\u9E46\u9E47\uE5A7\uE5AA"+
-        "\u9E48\u9E49\u9E4A\u9E4B\u9E4C\u9E4D\u9E4E\u9E4F"+
-        "\u9E50\u9E51\u9E52\u9E53\u9E54\u9E55\u9E56\u9E57";
-
-    private final static String innerEncoderIndex7=
-        "\u9E58\u9E59\u9E5A\u9E5B\u9E5C\u9E5D\u9E5E\u9E5F"+
-        "\u9E60\u9E61\u9E62\u9E63\u9E64\u9E65\u9E66\u9E67"+
-        "\u9E68\uC6D9\u9E69\u9E6A\u9E6B\u9E6C\u9E6D\u9E6E"+
-        "\u9E6F\u9E70\uE5AB\uE5AD\u9E71\u9E72\u9E73\u9E74"+
-        "\u9E75\u9E76\u9E77\uE5AC\u9E78\u9E79\u9E7A\u9E7B"+
-        "\u9E7C\u9E7D\u9E7E\u9E80\u9E81\u9E82\u9E83\u9E84"+
-        "\u9E85\u9E86\u9E87\u9E88\u9E89\uE5AF\u9E8A\u9E8B"+
-        "\u9E8C\uE5AE\u9E8D\u9E8E\u9E8F\u9E90\u9E91\u9E92"+
-        "\u9E93\u9E94\u9E95\u9E96\u9E97\u9E98\u9E99\u9E9A"+
-        "\u9E9B\u9E9C\u9E9D\u9E9E\uB9E0\u9E9F\u9EA0\uE5B0"+
-        "\u9EA1\u9EA2\u9EA3\u9EA4\u9EA5\u9EA6\u9EA7\u9EA8"+
-        "\u9EA9\u9EAA\u9EAB\u9EAC\u9EAD\u9EAE\uE5B1\u9EAF"+
-        "\u9EB0\u9EB1\u9EB2\u9EB3\u9EB4\u9EB5\u9EB6\u9EB7"+
-        "\u9EB8\u9EB9\u9EBA\uBBF0\uECE1\uC3F0\u9EBB\uB5C6"+
-        "\uBBD2\u9EBC\u9EBD\u9EBE\u9EBF\uC1E9\uD4EE\u9EC0"+
-        "\uBEC4\u9EC1\u9EC2\u9EC3\uD7C6\u9EC4\uD4D6\uB2D3"+
-        "\uECBE\u9EC5\u9EC6\u9EC7\u9EC8\uEAC1\u9EC9\u9ECA"+
-        "\u9ECB\uC2AF\uB4B6\u9ECC\u9ECD\u9ECE\uD1D7\u9ECF"+
-        "\u9ED0\u9ED1\uB3B4\u9ED2\uC8B2\uBFBB\uECC0\u9ED3"+
-        "\u9ED4\uD6CB\u9ED5\u9ED6\uECBF\uECC1\u9ED7\u9ED8"+
-        "\u9ED9\u9EDA\u9EDB\u9EDC\u9EDD\u9EDE\u9EDF\u9EE0"+
-        "\u9EE1\u9EE2\u9EE3\uECC5\uBEE6\uCCBF\uC5DA\uBEBC"+
-        "\u9EE4\uECC6\u9EE5\uB1FE\u9EE6\u9EE7\u9EE8\uECC4"+
-        "\uD5A8\uB5E3\u9EE9\uECC2\uC1B6\uB3E3\u9EEA\u9EEB"+
-        "\uECC3\uCBB8\uC0C3\uCCFE\u9EEC\u9EED\u9EEE\u9EEF"+
-        "\uC1D2\u9EF0\uECC8\u9EF1\u9EF2\u9EF3\u9EF4\u9EF5"+
-        "\u9EF6\u9EF7\u9EF8\u9EF9\u9EFA\u9EFB\u9EFC\u9EFD"+
-        "\uBAE6\uC0D3\u9EFE\uD6F2\u9F40\u9F41\u9F42\uD1CC"+
-        "\u9F43\u9F44\u9F45\u9F46\uBFBE\u9F47\uB7B3\uC9D5"+
-        "\uECC7\uBBE2\u9F48\uCCCC\uBDFD\uC8C8\u9F49\uCFA9"+
-        "\u9F4A\u9F4B\u9F4C\u9F4D\u9F4E\u9F4F\u9F50\uCDE9"+
-        "\u9F51\uC5EB\u9F52\u9F53\u9F54\uB7E9\u9F55\u9F56"+
-        "\u9F57\u9F58\u9F59\u9F5A\u9F5B\u9F5C\u9F5D\u9F5E"+
-        "\u9F5F\uD1C9\uBAB8\u9F60\u9F61\u9F62\u9F63\u9F64"+
-        "\uECC9\u9F65\u9F66\uECCA\u9F67\uBBC0\uECCB\u9F68"+
-        "\uECE2\uB1BA\uB7D9\u9F69\u9F6A\u9F6B\u9F6C\u9F6D"+
-        "\u9F6E\u9F6F\u9F70\u9F71\u9F72\u9F73\uBDB9\u9F74"+
-        "\u9F75\u9F76\u9F77\u9F78\u9F79\u9F7A\u9F7B\uECCC"+
-        "\uD1E6\uECCD\u9F7C\u9F7D\u9F7E\u9F80\uC8BB\u9F81"+
-        "\u9F82\u9F83\u9F84\u9F85\u9F86\u9F87\u9F88\u9F89"+
-        "\u9F8A\u9F8B\u9F8C\u9F8D\u9F8E\uECD1\u9F8F\u9F90"+
-        "\u9F91\u9F92\uECD3\u9F93\uBBCD\u9F94\uBCE5\u9F95"+
-        "\u9F96\u9F97\u9F98\u9F99\u9F9A\u9F9B\u9F9C\u9F9D"+
-        "\u9F9E\u9F9F\u9FA0\u9FA1\uECCF\u9FA2\uC9B7\u9FA3"+
-        "\u9FA4\u9FA5\u9FA6\u9FA7\uC3BA\u9FA8\uECE3\uD5D5"+
-        "\uECD0\u9FA9\u9FAA\u9FAB\u9FAC\u9FAD\uD6F3\u9FAE"+
-        "\u9FAF\u9FB0\uECD2\uECCE\u9FB1\u9FB2\u9FB3\u9FB4"+
-        "\uECD4\u9FB5\uECD5\u9FB6\u9FB7\uC9BF\u9FB8\u9FB9"+
-        "\u9FBA\u9FBB\u9FBC\u9FBD\uCFA8\u9FBE\u9FBF\u9FC0"+
-        "\u9FC1\u9FC2\uD0DC\u9FC3\u9FC4\u9FC5\u9FC6\uD1AC"+
-        "\u9FC7\u9FC8\u9FC9\u9FCA\uC8DB\u9FCB\u9FCC\u9FCD"+
-        "\uECD6\uCEF5\u9FCE\u9FCF\u9FD0\u9FD1\u9FD2\uCAEC"+
-        "\uECDA\u9FD3\u9FD4\u9FD5\u9FD6\u9FD7\u9FD8\u9FD9"+
-        "\uECD9\u9FDA\u9FDB\u9FDC\uB0BE\u9FDD\u9FDE\u9FDF"+
-        "\u9FE0\u9FE1\u9FE2\uECD7\u9FE3\uECD8\u9FE4\u9FE5"+
-        "\u9FE6\uECE4\u9FE7\u9FE8\u9FE9\u9FEA\u9FEB\u9FEC"+
-        "\u9FED\u9FEE\u9FEF\uC8BC\u9FF0\u9FF1\u9FF2\u9FF3"+
-        "\u9FF4\u9FF5\u9FF6\u9FF7\u9FF8\u9FF9\uC1C7\u9FFA"+
-        "\u9FFB\u9FFC\u9FFD\u9FFE\uECDC\uD1E0\uA040\uA041"+
-        "\uA042\uA043\uA044\uA045\uA046\uA047\uA048\uA049"+
-        "\uECDB\uA04A\uA04B\uA04C\uA04D\uD4EF\uA04E\uECDD"+
-        "\uA04F\uA050\uA051\uA052\uA053\uA054\uDBC6\uA055"+
-        "\uA056\uA057\uA058\uA059\uA05A\uA05B\uA05C\uA05D"+
-        "\uA05E\uECDE\uA05F\uA060\uA061\uA062\uA063\uA064"+
-        "\uA065\uA066\uA067\uA068\uA069\uA06A\uB1AC\uA06B"+
-        "\uA06C\uA06D\uA06E\uA06F\uA070\uA071\uA072\uA073"+
-        "\uA074\uA075\uA076\uA077\uA078\uA079\uA07A\uA07B"+
-        "\uA07C\uA07D\uA07E\uA080\uA081\uECDF\uA082\uA083"+
-        "\uA084\uA085\uA086\uA087\uA088\uA089\uA08A\uA08B"+
-        "\uECE0\uA08C\uD7A6\uA08D\uC5C0\uA08E\uA08F\uA090"+
-        "\uEBBC\uB0AE\uA091\uA092\uA093\uBEF4\uB8B8\uD2AF"+
-        "\uB0D6\uB5F9\uA094\uD8B3\uA095\uCBAC\uA096\uE3DD"+
-        "\uA097\uA098\uA099\uA09A\uA09B\uA09C\uA09D\uC6AC"+
-        "\uB0E6\uA09E\uA09F\uA0A0\uC5C6\uEBB9\uA0A1\uA0A2"+
-        "\uA0A3\uA0A4\uEBBA\uA0A5\uA0A6\uA0A7\uEBBB\uA0A8"+
-        "\uA0A9\uD1C0\uA0AA\uC5A3\uA0AB\uEAF2\uA0AC\uC4B2"+
-        "\uA0AD\uC4B5\uC0CE\uA0AE\uA0AF\uA0B0\uEAF3\uC4C1"+
-        "\uA0B1\uCEEF\uA0B2\uA0B3\uA0B4\uA0B5\uEAF0\uEAF4"+
-        "\uA0B6\uA0B7\uC9FC\uA0B8\uA0B9\uC7A3\uA0BA\uA0BB"+
-        "\uA0BC\uCCD8\uCEFE\uA0BD\uA0BE\uA0BF\uEAF5\uEAF6"+
-        "\uCFAC\uC0E7\uA0C0\uA0C1\uEAF7\uA0C2\uA0C3\uA0C4"+
-        "\uA0C5\uA0C6\uB6BF\uEAF8\uA0C7\uEAF9\uA0C8\uEAFA"+
-        "\uA0C9\uA0CA\uEAFB\uA0CB\uA0CC\uA0CD\uA0CE\uA0CF"+
-        "\uA0D0\uA0D1\uA0D2\uA0D3\uA0D4\uA0D5\uA0D6\uEAF1"+
-        "\uA0D7\uA0D8\uA0D9\uA0DA\uA0DB\uA0DC\uA0DD\uA0DE"+
-        "\uA0DF\uA0E0\uA0E1\uA0E2\uC8AE\uE1EB\uA0E3\uB7B8"+
-        "\uE1EC\uA0E4\uA0E5\uA0E6\uE1ED\uA0E7\uD7B4\uE1EE"+
-        "\uE1EF\uD3CC\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED"+
-        "\uA0EE\uE1F1\uBFF1\uE1F0\uB5D2\uA0EF\uA0F0\uA0F1"+
-        "\uB1B7\uA0F2\uA0F3\uA0F4\uA0F5\uE1F3\uE1F2\uA0F6"+
-        "\uBAFC\uA0F7\uE1F4\uA0F8\uA0F9\uA0FA\uA0FB\uB9B7"+
-        "\uA0FC\uBED1\uA0FD\uA0FE\uAA40\uAA41\uC4FC\uAA42"+
-        "\uBADD\uBDC6\uAA43\uAA44\uAA45\uAA46\uAA47\uAA48"+
-        "\uE1F5\uE1F7\uAA49\uAA4A\uB6C0\uCFC1\uCAA8\uE1F6"+
-        "\uD5F8\uD3FC\uE1F8\uE1FC\uE1F9\uAA4B\uAA4C\uE1FA"+
-        "\uC0EA\uAA4D\uE1FE\uE2A1\uC0C7\uAA4E\uAA4F\uAA50"+
-        "\uAA51\uE1FB\uAA52\uE1FD\uAA53\uAA54\uAA55\uAA56"+
-        "\uAA57\uAA58\uE2A5\uAA59\uAA5A\uAA5B\uC1D4\uAA5C"+
-        "\uAA5D\uAA5E\uAA5F\uE2A3\uAA60\uE2A8\uB2FE\uE2A2"+
-        "\uAA61\uAA62\uAA63\uC3CD\uB2C2\uE2A7\uE2A6\uAA64"+
-        "\uAA65\uE2A4\uE2A9\uAA66\uAA67\uE2AB\uAA68\uAA69"+
-        "\uAA6A\uD0C9\uD6ED\uC3A8\uE2AC\uAA6B\uCFD7\uAA6C"+
-        "\uAA6D\uE2AE\uAA6E\uAA6F\uBAEF\uAA70\uAA71\uE9E0"+
-        "\uE2AD\uE2AA\uAA72\uAA73\uAA74\uAA75\uBBAB\uD4B3"+
-        "\uAA76\uAA77\uAA78\uAA79\uAA7A\uAA7B\uAA7C\uAA7D"+
-        "\uAA7E\uAA80\uAA81\uAA82\uAA83\uE2B0\uAA84\uAA85"+
-        "\uE2AF\uAA86\uE9E1\uAA87\uAA88\uAA89\uAA8A\uE2B1"+
-        "\uAA8B\uAA8C\uAA8D\uAA8E\uAA8F\uAA90\uAA91\uAA92"+
-        "\uE2B2\uAA93\uAA94\uAA95\uAA96\uAA97\uAA98\uAA99"+
-        "\uAA9A\uAA9B\uAA9C\uAA9D\uE2B3\uCCA1\uAA9E\uE2B4"+
-        "\uAA9F\uAAA0\uAB40\uAB41\uAB42\uAB43\uAB44\uAB45"+
-        "\uAB46\uAB47\uAB48\uAB49\uAB4A\uAB4B\uE2B5\uAB4C"+
-        "\uAB4D\uAB4E\uAB4F\uAB50\uD0FE\uAB51\uAB52\uC2CA"+
-        "\uAB53\uD3F1\uAB54\uCDF5\uAB55\uAB56\uE7E0\uAB57"+
-        "\uAB58\uE7E1\uAB59\uAB5A\uAB5B\uAB5C\uBEC1\uAB5D"+
-        "\uAB5E\uAB5F\uAB60\uC2EA\uAB61\uAB62\uAB63\uE7E4"+
-        "\uAB64\uAB65\uE7E3\uAB66\uAB67\uAB68\uAB69\uAB6A"+
-        "\uAB6B\uCDE6\uAB6C\uC3B5\uAB6D\uAB6E\uE7E2\uBBB7"+
-        "\uCFD6\uAB6F\uC1E1\uE7E9\uAB70\uAB71\uAB72\uE7E8"+
-        "\uAB73\uAB74\uE7F4\uB2A3\uAB75\uAB76\uAB77\uAB78"+
-        "\uE7EA\uAB79\uE7E6\uAB7A\uAB7B\uAB7C\uAB7D\uAB7E"+
-        "\uE7EC\uE7EB\uC9BA\uAB80\uAB81\uD5E4\uAB82\uE7E5"+
-        "\uB7A9\uE7E7\uAB83\uAB84\uAB85\uAB86\uAB87\uAB88"+
-        "\uAB89\uE7EE\uAB8A\uAB8B\uAB8C\uAB8D\uE7F3\uAB8E"+
-        "\uD6E9\uAB8F\uAB90\uAB91\uAB92\uE7ED\uAB93\uE7F2"+
-        "\uAB94\uE7F1\uAB95\uAB96\uAB97\uB0E0\uAB98\uAB99"+
-        "\uAB9A\uAB9B\uE7F5\uAB9C\uAB9D\uAB9E\uAB9F\uABA0"+
-        "\uAC40\uAC41\uAC42\uAC43\uAC44\uAC45\uAC46\uAC47"+
-        "\uAC48\uAC49\uAC4A\uC7F2\uAC4B\uC0C5\uC0ED\uAC4C"+
-        "\uAC4D\uC1F0\uE7F0\uAC4E\uAC4F\uAC50\uAC51\uE7F6"+
-        "\uCBF6\uAC52\uAC53\uAC54\uAC55\uAC56\uAC57\uAC58"+
-        "\uAC59\uAC5A\uE8A2\uE8A1\uAC5B\uAC5C\uAC5D\uAC5E"+
-        "\uAC5F\uAC60\uD7C1\uAC61\uAC62\uE7FA\uE7F9\uAC63"+
-        "\uE7FB\uAC64\uE7F7\uAC65\uE7FE\uAC66\uE7FD\uAC67"+
-        "\uE7FC\uAC68\uAC69\uC1D5\uC7D9\uC5FD\uC5C3\uAC6A"+
-        "\uAC6B\uAC6C\uAC6D\uAC6E\uC7ED\uAC6F\uAC70\uAC71"+
-        "\uAC72\uE8A3\uAC73\uAC74\uAC75\uAC76\uAC77\uAC78"+
-        "\uAC79\uAC7A\uAC7B\uAC7C\uAC7D\uAC7E\uAC80\uAC81"+
-        "\uAC82\uAC83\uAC84\uAC85\uAC86\uE8A6\uAC87\uE8A5"+
-        "\uAC88\uE8A7\uBAF7\uE7F8\uE8A4\uAC89\uC8F0\uC9AA"+
-        "\uAC8A\uAC8B\uAC8C\uAC8D\uAC8E\uAC8F\uAC90\uAC91"+
-        "\uAC92\uAC93\uAC94\uAC95\uAC96\uE8A9\uAC97\uAC98"+
-        "\uB9E5\uAC99\uAC9A\uAC9B\uAC9C\uAC9D\uD1FE\uE8A8"+
-        "\uAC9E\uAC9F\uACA0\uAD40\uAD41\uAD42\uE8AA\uAD43"+
-        "\uE8AD\uE8AE\uAD44\uC1A7\uAD45\uAD46\uAD47\uE8AF"+
-        "\uAD48\uAD49\uAD4A\uE8B0\uAD4B\uAD4C\uE8AC\uAD4D"+
-        "\uE8B4\uAD4E\uAD4F\uAD50\uAD51\uAD52\uAD53\uAD54"+
-        "\uAD55\uAD56\uAD57\uAD58\uE8AB\uAD59\uE8B1\uAD5A"+
-        "\uAD5B\uAD5C\uAD5D\uAD5E\uAD5F\uAD60\uAD61\uE8B5"+
-        "\uE8B2\uE8B3\uAD62\uAD63\uAD64\uAD65\uAD66\uAD67"+
-        "\uAD68\uAD69\uAD6A\uAD6B\uAD6C\uAD6D\uAD6E\uAD6F"+
-        "\uAD70\uAD71\uE8B7\uAD72\uAD73\uAD74\uAD75\uAD76"+
-        "\uAD77\uAD78\uAD79\uAD7A\uAD7B\uAD7C\uAD7D\uAD7E"+
-        "\uAD80\uAD81\uAD82\uAD83\uAD84\uAD85\uAD86\uAD87"+
-        "\uAD88\uAD89\uE8B6\uAD8A\uAD8B\uAD8C\uAD8D\uAD8E"+
-        "\uAD8F\uAD90\uAD91\uAD92\uB9CF\uAD93\uF0AC\uAD94"+
-        "\uF0AD\uAD95\uC6B0\uB0EA\uC8BF\uAD96\uCDDF\uAD97"+
-        "\uAD98\uAD99\uAD9A\uAD9B\uAD9C\uAD9D\uCECD\uEAB1"+
-        "\uAD9E\uAD9F\uADA0\uAE40\uEAB2\uAE41\uC6BF\uB4C9"+
-        "\uAE42\uAE43\uAE44\uAE45\uAE46\uAE47\uAE48\uEAB3"+
-        "\uAE49\uAE4A\uAE4B\uAE4C\uD5E7\uAE4D\uAE4E\uAE4F"+
-        "\uAE50\uAE51\uAE52\uAE53\uAE54\uDDF9\uAE55\uEAB4"+
-        "\uAE56\uEAB5\uAE57\uEAB6\uAE58\uAE59\uAE5A\uAE5B"+
-        "\uB8CA\uDFB0\uC9F5\uAE5C\uCCF0\uAE5D\uAE5E\uC9FA"+
-        "\uAE5F\uAE60\uAE61\uAE62\uAE63\uC9FB\uAE64\uAE65"+
-        "\uD3C3\uCBA6\uAE66\uB8A6\uF0AE\uB1C2\uAE67\uE5B8"+
-        "\uCCEF\uD3C9\uBCD7\uC9EA\uAE68\uB5E7\uAE69\uC4D0"+
-        "\uB5E9\uAE6A\uEEAE\uBBAD\uAE6B\uAE6C\uE7DE\uAE6D"+
-        "\uEEAF\uAE6E\uAE6F\uAE70\uAE71\uB3A9\uAE72\uAE73"+
-        "\uEEB2\uAE74\uAE75\uEEB1\uBDE7\uAE76\uEEB0\uCEB7"+
-        "\uAE77\uAE78\uAE79\uAE7A\uC5CF\uAE7B\uAE7C\uAE7D"+
-        "\uAE7E\uC1F4\uDBCE\uEEB3\uD0F3\uAE80\uAE81\uAE82"+
-        "\uAE83\uAE84\uAE85\uAE86\uAE87\uC2D4\uC6E8\uAE88"+
-        "\uAE89\uAE8A\uB7AC\uAE8B\uAE8C\uAE8D\uAE8E\uAE8F"+
-        "\uAE90\uAE91\uEEB4\uAE92\uB3EB\uAE93\uAE94\uAE95"+
-        "\uBBFB\uEEB5\uAE96\uAE97\uAE98\uAE99\uAE9A\uE7DC"+
-        "\uAE9B\uAE9C\uAE9D\uEEB6\uAE9E\uAE9F\uBDAE\uAEA0"+
-        "\uAF40\uAF41\uAF42\uF1E2\uAF43\uAF44\uAF45\uCAE8"+
-        "\uAF46\uD2C9\uF0DA\uAF47\uF0DB\uAF48\uF0DC\uC1C6"+
-        "\uAF49\uB8ED\uBECE\uAF4A\uAF4B\uF0DE\uAF4C\uC5B1"+
-        "\uF0DD\uD1F1\uAF4D\uF0E0\uB0CC\uBDEA\uAF4E\uAF4F"+
-        "\uAF50\uAF51\uAF52\uD2DF\uF0DF\uAF53\uB4AF\uB7E8"+
-        "\uF0E6\uF0E5\uC6A3\uF0E1\uF0E2\uB4C3\uAF54\uAF55"+
-        "\uF0E3\uD5EE\uAF56\uAF57\uCCDB\uBED2\uBCB2\uAF58"+
-        "\uAF59\uAF5A\uF0E8\uF0E7\uF0E4\uB2A1\uAF5B\uD6A2"+
-        "\uD3B8\uBEB7\uC8AC\uAF5C\uAF5D\uF0EA\uAF5E\uAF5F"+
-        "\uAF60\uAF61\uD1F7\uAF62\uD6CC\uBADB\uF0E9\uAF63"+
-        "\uB6BB\uAF64\uAF65\uCDB4\uAF66\uAF67\uC6A6\uAF68"+
-        "\uAF69\uAF6A\uC1A1\uF0EB\uF0EE\uAF6B\uF0ED\uF0F0"+
-        "\uF0EC\uAF6C\uBBBE\uF0EF\uAF6D\uAF6E\uAF6F\uAF70"+
-        "\uCCB5\uF0F2\uAF71\uAF72\uB3D5\uAF73\uAF74\uAF75"+
-        "\uAF76\uB1D4\uAF77\uAF78\uF0F3\uAF79\uAF7A\uF0F4"+
-        "\uF0F6\uB4E1\uAF7B\uF0F1\uAF7C\uF0F7\uAF7D\uAF7E"+
-        "\uAF80\uAF81\uF0FA\uAF82\uF0F8\uAF83\uAF84\uAF85"+
-        "\uF0F5\uAF86\uAF87\uAF88\uAF89\uF0FD\uAF8A\uF0F9"+
-        "\uF0FC\uF0FE\uAF8B\uF1A1\uAF8C\uAF8D\uAF8E\uCEC1"+
-        "\uF1A4\uAF8F\uF1A3\uAF90\uC1F6\uF0FB\uCADD\uAF91"+
-        "\uAF92\uB4F1\uB1F1\uCCB1\uAF93\uF1A6\uAF94\uAF95"+
-        "\uF1A7\uAF96\uAF97\uF1AC\uD5CE\uF1A9\uAF98\uAF99"+
-        "\uC8B3\uAF9A\uAF9B\uAF9C\uF1A2\uAF9D\uF1AB\uF1A8"+
-        "\uF1A5\uAF9E\uAF9F\uF1AA\uAFA0\uB040\uB041\uB042"+
-        "\uB043\uB044\uB045\uB046\uB0A9\uF1AD\uB047\uB048"+
-        "\uB049\uB04A\uB04B\uB04C\uF1AF\uB04D\uF1B1\uB04E"+
-        "\uB04F\uB050\uB051\uB052\uF1B0\uB053\uF1AE\uB054"+
-        "\uB055\uB056\uB057\uD1A2\uB058\uB059\uB05A\uB05B"+
-        "\uB05C\uB05D\uB05E\uF1B2\uB05F\uB060\uB061\uF1B3"+
-        "\uB062\uB063\uB064\uB065\uB066\uB067\uB068\uB069"+
-        "\uB9EF\uB06A\uB06B\uB5C7\uB06C\uB0D7\uB0D9\uB06D"+
-        "\uB06E\uB06F\uD4ED\uB070\uB5C4\uB071\uBDD4\uBBCA"+
-        "\uF0A7\uB072\uB073\uB8DE\uB074\uB075\uF0A8\uB076"+
-        "\uB077\uB0A8\uB078\uF0A9\uB079\uB07A\uCDEE\uB07B"+
-        "\uB07C\uF0AA\uB07D\uB07E\uB080\uB081\uB082\uB083"+
-        "\uB084\uB085\uB086\uB087\uF0AB\uB088\uB089\uB08A"+
-        "\uB08B\uB08C\uB08D\uB08E\uB08F\uB090\uC6A4\uB091"+
-        "\uB092\uD6E5\uF1E4\uB093\uF1E5\uB094\uB095\uB096"+
-        "\uB097\uB098\uB099\uB09A\uB09B\uB09C\uB09D\uC3F3"+
-        "\uB09E\uB09F\uD3DB\uB0A0\uB140\uD6D1\uC5E8\uB141"+
-        "\uD3AF\uB142\uD2E6\uB143\uB144\uEEC1\uB0BB\uD5B5"+
-        "\uD1CE\uBCE0\uBAD0\uB145\uBFF8\uB146\uB8C7\uB5C1"+
-        "\uC5CC\uB147\uB148\uCAA2\uB149\uB14A\uB14B\uC3CB"+
-        "\uB14C\uB14D\uB14E\uB14F\uB150\uEEC2\uB151\uB152"+
-        "\uB153\uB154\uB155\uB156\uB157\uB158\uC4BF\uB6A2"+
-        "\uB159\uEDEC\uC3A4\uB15A\uD6B1\uB15B\uB15C\uB15D"+
-        "\uCFE0\uEDEF\uB15E\uB15F\uC5CE\uB160\uB6DC\uB161"+
-        "\uB162\uCAA1\uB163\uB164\uEDED\uB165\uB166\uEDF0"+
-        "\uEDF1\uC3BC\uB167\uBFB4\uB168\uEDEE\uB169\uB16A"+
-        "\uB16B\uB16C\uB16D\uB16E\uB16F\uB170\uB171\uB172"+
-        "\uB173\uEDF4\uEDF2\uB174\uB175\uB176\uB177\uD5E6"+
-        "\uC3DF\uB178\uEDF3\uB179\uB17A\uB17B\uEDF6\uB17C"+
-        "\uD5A3\uD1A3\uB17D\uB17E\uB180\uEDF5\uB181\uC3D0"+
-        "\uB182\uB183\uB184\uB185\uB186\uEDF7\uBFF4\uBEEC"+
-        "\uEDF8\uB187\uCCF7\uB188\uD1DB\uB189\uB18A\uB18B"+
-        "\uD7C5\uD5F6\uB18C\uEDFC\uB18D\uB18E\uB18F\uEDFB"+
-        "\uB190\uB191\uB192\uB193\uB194\uB195\uB196\uB197"+
-        "\uEDF9\uEDFA\uB198\uB199\uB19A\uB19B\uB19C\uB19D"+
-        "\uB19E\uB19F\uEDFD\uBEA6\uB1A0\uB240\uB241\uB242"+
-        "\uB243\uCBAF\uEEA1\uB6BD\uB244\uEEA2\uC4C0\uB245"+
-        "\uEDFE\uB246\uB247\uBDDE\uB2C7\uB248\uB249\uB24A"+
-        "\uB24B\uB24C\uB24D\uB24E\uB24F\uB250\uB251\uB252"+
-        "\uB253\uB6C3\uB254\uB255\uB256\uEEA5\uD8BA\uEEA3"+
-        "\uEEA6\uB257\uB258\uB259\uC3E9\uB3F2\uB25A\uB25B"+
-        "\uB25C\uB25D\uB25E\uB25F\uEEA7\uEEA4\uCFB9\uB260"+
-        "\uB261\uEEA8\uC2F7\uB262\uB263\uB264\uB265\uB266"+
-        "\uB267\uB268\uB269\uB26A\uB26B\uB26C\uB26D\uEEA9"+
-        "\uEEAA\uB26E\uDEAB\uB26F\uB270\uC6B3\uB271\uC7C6"+
-        "\uB272\uD6F5\uB5C9\uB273\uCBB2\uB274\uB275\uB276"+
-        "\uEEAB\uB277\uB278\uCDAB\uB279\uEEAC\uB27A\uB27B"+
-        "\uB27C\uB27D\uB27E\uD5B0\uB280\uEEAD\uB281\uF6C4"+
-        "\uB282\uB283\uB284\uB285\uB286\uB287\uB288\uB289"+
-        "\uB28A\uB28B\uB28C\uB28D\uB28E\uDBC7\uB28F\uB290"+
-        "\uB291\uB292\uB293\uB294\uB295\uB296\uB297\uB4A3"+
-        "\uB298\uB299\uB29A\uC3AC\uF1E6\uB29B\uB29C\uB29D"+
-        "\uB29E\uB29F\uCAB8\uD2D3\uB2A0\uD6AA\uB340\uEFF2"+
-        "\uB341\uBED8\uB342\uBDC3\uEFF3\uB6CC\uB0AB\uB343"+
-        "\uB344\uB345\uB346\uCAAF\uB347\uB348\uEDB6\uB349"+
-        "\uEDB7\uB34A\uB34B\uB34C\uB34D\uCEF9\uB7AF\uBFF3"+
-        "\uEDB8\uC2EB\uC9B0\uB34E\uB34F\uB350\uB351\uB352"+
-        "\uB353\uEDB9\uB354\uB355\uC6F6\uBFB3\uB356\uB357"+
-        "\uB358\uEDBC\uC5F8\uB359\uD1D0\uB35A\uD7A9\uEDBA"+
-        "\uEDBB\uB35B\uD1E2\uB35C\uEDBF\uEDC0\uB35D\uEDC4"+
-        "\uB35E\uB35F\uB360\uEDC8\uB361\uEDC6\uEDCE\uD5E8"+
-        "\uB362\uEDC9\uB363\uB364\uEDC7\uEDBE\uB365\uB366"+
-        "\uC5E9\uB367\uB368\uB369\uC6C6\uB36A\uB36B\uC9E9"+
-        "\uD4D2\uEDC1\uEDC2\uEDC3\uEDC5\uB36C\uC0F9\uB36D"+
-        "\uB4A1\uB36E\uB36F\uB370\uB371\uB9E8\uB372\uEDD0"+
-        "\uB373\uB374\uB375\uB376\uEDD1\uB377\uEDCA\uB378"+
-        "\uEDCF\uB379\uCEF8\uB37A\uB37B\uCBB6\uEDCC\uEDCD"+
-        "\uB37C\uB37D\uB37E\uB380\uB381\uCFF5\uB382\uB383"+
-        "\uB384\uB385\uB386\uB387\uB388\uB389\uB38A\uB38B"+
-        "\uB38C\uB38D\uEDD2\uC1F2\uD3B2\uEDCB\uC8B7\uB38E"+
-        "\uB38F\uB390\uB391\uB392\uB393\uB394\uB395\uBCEF"+
-        "\uB396\uB397\uB398\uB399\uC5F0\uB39A\uB39B\uB39C"+
-        "\uB39D\uB39E\uB39F\uB3A0\uB440\uB441\uB442\uEDD6"+
-        "\uB443\uB5EF\uB444\uB445\uC2B5\uB0AD\uCBE9\uB446"+
-        "\uB447\uB1AE\uB448\uEDD4\uB449\uB44A\uB44B\uCDEB"+
-        "\uB5E2\uB44C\uEDD5\uEDD3\uEDD7\uB44D\uB44E\uB5FA"+
-        "\uB44F\uEDD8\uB450\uEDD9\uB451\uEDDC\uB452\uB1CC"+
-        "\uB453\uB454\uB455\uB456\uB457\uB458\uB459\uB45A"+
-        "\uC5F6\uBCEE\uEDDA\uCCBC\uB2EA\uB45B\uB45C\uB45D"+
-        "\uB45E\uEDDB\uB45F\uB460\uB461\uB462\uC4EB\uB463"+
-        "\uB464\uB4C5\uB465\uB466\uB467\uB0F5\uB468\uB469"+
-        "\uB46A\uEDDF\uC0DA\uB4E8\uB46B\uB46C\uB46D\uB46E"+
-        "\uC5CD\uB46F\uB470\uB471\uEDDD\uBFC4\uB472\uB473"+
-        "\uB474\uEDDE\uB475\uB476\uB477\uB478\uB479\uB47A"+
-        "\uB47B\uB47C\uB47D\uB47E\uB480\uB481\uB482\uB483"+
-        "\uC4A5\uB484\uB485\uB486\uEDE0\uB487\uB488\uB489"+
-        "\uB48A\uB48B\uEDE1\uB48C\uEDE3\uB48D\uB48E\uC1D7"+
-        "\uB48F\uB490\uBBC7\uB491\uB492\uB493\uB494\uB495"+
-        "\uB496\uBDB8\uB497\uB498\uB499\uEDE2\uB49A\uB49B"+
-        "\uB49C\uB49D\uB49E\uB49F\uB4A0\uB540\uB541\uB542"+
-        "\uB543\uB544\uB545\uEDE4\uB546\uB547\uB548\uB549"+
-        "\uB54A\uB54B\uB54C\uB54D\uB54E\uB54F\uEDE6\uB550"+
-        "\uB551\uB552\uB553\uB554\uEDE5\uB555\uB556\uB557"+
-        "\uB558\uB559\uB55A\uB55B\uB55C\uB55D\uB55E\uB55F"+
-        "\uB560\uB561\uB562\uB563\uEDE7\uB564\uB565\uB566"+
-        "\uB567\uB568\uCABE\uECEA\uC0F1\uB569\uC9E7\uB56A"+
-        "\uECEB\uC6EE\uB56B\uB56C\uB56D\uB56E\uECEC\uB56F"+
-        "\uC6ED\uECED\uB570\uB571\uB572\uB573\uB574\uB575"+
-        "\uB576\uB577\uB578\uECF0\uB579\uB57A\uD7E6\uECF3"+
-        "\uB57B\uB57C\uECF1\uECEE\uECEF\uD7A3\uC9F1\uCBEE"+
-        "\uECF4\uB57D\uECF2\uB57E\uB580\uCFE9\uB581\uECF6"+
-        "\uC6B1\uB582\uB583\uB584\uB585\uBCC0\uB586\uECF5"+
-        "\uB587\uB588\uB589\uB58A\uB58B\uB58C\uB58D\uB5BB"+
-        "\uBBF6\uB58E\uECF7\uB58F\uB590\uB591\uB592\uB593"+
-        "\uD9F7\uBDFB\uB594\uB595\uC2BB\uECF8\uB596\uB597"+
-        "\uB598\uB599\uECF9\uB59A\uB59B\uB59C\uB59D\uB8A3"+
-        "\uB59E\uB59F\uB5A0\uB640\uB641\uB642\uB643\uB644"+
-        "\uB645\uB646\uECFA\uB647\uB648\uB649\uB64A\uB64B"+
-        "\uB64C\uB64D\uB64E\uB64F\uB650\uB651\uB652\uECFB"+
-        "\uB653\uB654\uB655\uB656\uB657\uB658\uB659\uB65A"+
-        "\uB65B\uB65C\uB65D\uECFC\uB65E\uB65F\uB660\uB661"+
-        "\uB662\uD3ED\uD8AE\uC0EB\uB663\uC7DD\uBACC\uB664"+
-        "\uD0E3\uCBBD\uB665\uCDBA\uB666\uB667\uB8D1\uB668"+
-        "\uB669\uB1FC\uB66A\uC7EF\uB66B\uD6D6\uB66C\uB66D"+
-        "\uB66E\uBFC6\uC3EB\uB66F\uB670\uEFF5\uB671\uB672"+
-        "\uC3D8\uB673\uB674\uB675\uB676\uB677\uB678\uD7E2"+
-        "\uB679\uB67A\uB67B\uEFF7\uB3D3\uB67C\uC7D8\uD1ED"+
-        "\uB67D\uD6C8\uB67E\uEFF8\uB680\uEFF6\uB681\uBBFD"+
-        "\uB3C6\uB682\uB683\uB684\uB685\uB686\uB687\uB688"+
-        "\uBDD5\uB689\uB68A\uD2C6\uB68B\uBBE0\uB68C\uB68D"+
-        "\uCFA1\uB68E\uEFFC\uEFFB\uB68F\uB690\uEFF9\uB691"+
-        "\uB692\uB693\uB694\uB3CC\uB695\uC9D4\uCBB0\uB696"+
-        "\uB697\uB698\uB699\uB69A\uEFFE\uB69B\uB69C\uB0DE"+
-        "\uB69D\uB69E\uD6C9\uB69F\uB6A0\uB740\uEFFD\uB741"+
-        "\uB3ED\uB742\uB743\uF6D5\uB744\uB745\uB746\uB747"+
-        "\uB748\uB749\uB74A\uB74B\uB74C\uB74D\uB74E\uB74F"+
-        "\uB750\uB751\uB752\uCEC8\uB753\uB754\uB755\uF0A2"+
-        "\uB756\uF0A1\uB757\uB5BE\uBCDA\uBBFC\uB758\uB8E5"+
-        "\uB759\uB75A\uB75B\uB75C\uB75D\uB75E\uC4C2\uB75F"+
-        "\uB760\uB761\uB762\uB763\uB764\uB765\uB766\uB767"+
-        "\uB768\uF0A3\uB769\uB76A\uB76B\uB76C\uB76D\uCBEB"+
-        "\uB76E\uB76F\uB770\uB771\uB772\uB773\uB774\uB775"+
-        "\uB776\uB777\uB778\uB779\uB77A\uB77B\uB77C\uB77D"+
-        "\uB77E\uB780\uB781\uB782\uB783\uB784\uB785\uB786"+
-        "\uF0A6\uB787\uB788\uB789\uD1A8\uB78A\uBEBF\uC7EE"+
-        "\uF1B6\uF1B7\uBFD5\uB78B\uB78C\uB78D\uB78E\uB4A9"+
-        "\uF1B8\uCDBB\uB78F\uC7D4\uD5AD\uB790\uF1B9\uB791"+
-        "\uF1BA\uB792\uB793\uB794\uB795\uC7CF\uB796\uB797"+
-        "\uB798\uD2A4\uD6CF\uB799\uB79A\uF1BB\uBDD1\uB4B0"+
-        "\uBEBD\uB79B\uB79C\uB79D\uB4DC\uCED1\uB79E\uBFDF"+
-        "\uF1BD\uB79F\uB7A0\uB840\uB841\uBFFA\uF1BC\uB842"+
-        "\uF1BF\uB843\uB844\uB845\uF1BE\uF1C0\uB846\uB847"+
-        "\uB848\uB849\uB84A\uF1C1\uB84B\uB84C\uB84D\uB84E"+
-        "\uB84F\uB850\uB851\uB852\uB853\uB854\uB855\uC1FE"+
-        "\uB856\uB857\uB858\uB859\uB85A\uB85B\uB85C\uB85D"+
-        "\uB85E\uB85F\uB860\uC1A2\uB861\uB862\uB863\uB864"+
-        "\uB865\uB866\uB867\uB868\uB869\uB86A\uCAFA\uB86B"+
-        "\uB86C\uD5BE\uB86D\uB86E\uB86F\uB870\uBEBA\uBEB9"+
-        "\uD5C2\uB871\uB872\uBFA2\uB873\uCDAF\uF1B5\uB874"+
-        "\uB875\uB876\uB877\uB878\uB879\uBDDF\uB87A\uB6CB"+
-        "\uB87B\uB87C\uB87D\uB87E\uB880\uB881\uB882\uB883"+
-        "\uB884\uD6F1\uF3C3\uB885\uB886\uF3C4\uB887\uB8CD"+
-        "\uB888\uB889\uB88A\uF3C6\uF3C7\uB88B\uB0CA\uB88C"+
-        "\uF3C5\uB88D\uF3C9\uCBF1\uB88E\uB88F\uB890\uF3CB"+
-        "\uB891\uD0A6\uB892\uB893\uB1CA\uF3C8\uB894\uB895"+
-        "\uB896\uF3CF\uB897\uB5D1\uB898\uB899\uF3D7\uB89A"+
-        "\uF3D2\uB89B\uB89C\uB89D\uF3D4\uF3D3\uB7FB\uB89E"+
-        "\uB1BF\uB89F\uF3CE\uF3CA\uB5DA\uB8A0\uF3D0\uB940"+
-        "\uB941\uF3D1\uB942\uF3D5\uB943\uB944\uB945\uB946"+
-        "\uF3CD\uB947\uBCE3\uB948\uC1FD\uB949\uF3D6\uB94A"+
-        "\uB94B\uB94C\uB94D\uB94E\uB94F\uF3DA\uB950\uF3CC"+
-        "\uB951\uB5C8\uB952\uBDEE\uF3DC\uB953\uB954\uB7A4"+
-        "\uBFF0\uD6FE\uCDB2\uB955\uB4F0\uB956\uB2DF\uB957"+
-        "\uF3D8\uB958\uF3D9\uC9B8\uB959\uF3DD\uB95A\uB95B"+
-        "\uF3DE\uB95C\uF3E1\uB95D\uB95E\uB95F\uB960\uB961"+
-        "\uB962\uB963\uB964\uB965\uB966\uB967\uF3DF\uB968"+
-        "\uB969\uF3E3\uF3E2\uB96A\uB96B\uF3DB\uB96C\uBFEA"+
-        "\uB96D\uB3EF\uB96E\uF3E0\uB96F\uB970\uC7A9\uB971"+
-        "\uBCF2\uB972\uB973\uB974\uB975\uF3EB\uB976\uB977"+
-        "\uB978\uB979\uB97A\uB97B\uB97C\uB9BF\uB97D\uB97E"+
-        "\uF3E4\uB980\uB981\uB982\uB2AD\uBBFE\uB983\uCBE3"+
-        "\uB984\uB985\uB986\uB987\uF3ED\uF3E9\uB988\uB989"+
-        "\uB98A\uB9DC\uF3EE\uB98B\uB98C\uB98D\uF3E5\uF3E6"+
-        "\uF3EA\uC2E1\uF3EC\uF3EF\uF3E8\uBCFD\uB98E\uB98F"+
-        "\uB990\uCFE4\uB991\uB992\uF3F0\uB993\uB994\uB995"+
-        "\uF3E7\uB996\uB997\uB998\uB999\uB99A\uB99B\uB99C"+
-        "\uB99D\uF3F2\uB99E\uB99F\uB9A0\uBA40\uD7AD\uC6AA"+
-        "\uBA41\uBA42\uBA43\uBA44\uF3F3\uBA45\uBA46\uBA47"+
-        "\uBA48\uF3F1\uBA49\uC2A8\uBA4A\uBA4B\uBA4C\uBA4D"+
-        "\uBA4E\uB8DD\uF3F5\uBA4F\uBA50\uF3F4\uBA51\uBA52"+
-        "\uBA53\uB4DB\uBA54\uBA55\uBA56\uF3F6\uF3F7\uBA57"+
-        "\uBA58\uBA59\uF3F8\uBA5A\uBA5B\uBA5C\uC0BA\uBA5D"+
-        "\uBA5E\uC0E9\uBA5F\uBA60\uBA61\uBA62\uBA63\uC5F1"+
-        "\uBA64\uBA65\uBA66\uBA67\uF3FB\uBA68\uF3FA\uBA69"+
-        "\uBA6A\uBA6B\uBA6C\uBA6D\uBA6E\uBA6F\uBA70\uB4D8"+
-        "\uBA71\uBA72\uBA73\uF3FE\uF3F9\uBA74\uBA75\uF3FC"+
-        "\uBA76\uBA77\uBA78\uBA79\uBA7A\uBA7B\uF3FD\uBA7C"+
-        "\uBA7D\uBA7E\uBA80\uBA81\uBA82\uBA83\uBA84\uF4A1"+
-        "\uBA85\uBA86\uBA87\uBA88\uBA89\uBA8A\uF4A3\uBBC9"+
-        "\uBA8B\uBA8C\uF4A2\uBA8D\uBA8E\uBA8F\uBA90\uBA91"+
-        "\uBA92\uBA93\uBA94\uBA95\uBA96\uBA97\uBA98\uBA99"+
-        "\uF4A4\uBA9A\uBA9B\uBA9C\uBA9D\uBA9E\uBA9F\uB2BE"+
-        "\uF4A6\uF4A5\uBAA0\uBB40\uBB41\uBB42\uBB43\uBB44"+
-        "\uBB45\uBB46\uBB47\uBB48\uBB49\uBCAE\uBB4A\uBB4B"+
-        "\uBB4C\uBB4D\uBB4E\uBB4F\uBB50\uBB51\uBB52\uBB53"+
-        "\uBB54\uBB55\uBB56\uBB57\uBB58\uBB59\uBB5A\uBB5B"+
-        "\uBB5C\uBB5D\uBB5E\uBB5F\uBB60\uBB61\uBB62\uBB63"+
-        "\uBB64\uBB65\uBB66\uBB67\uBB68\uBB69\uBB6A\uBB6B"+
-        "\uBB6C\uBB6D\uBB6E\uC3D7\uD9E1\uBB6F\uBB70\uBB71"+
-        "\uBB72\uBB73\uBB74\uC0E0\uF4CC\uD7D1\uBB75\uBB76"+
-        "\uBB77\uBB78\uBB79\uBB7A\uBB7B\uBB7C\uBB7D\uBB7E"+
-        "\uBB80\uB7DB\uBB81\uBB82\uBB83\uBB84\uBB85\uBB86"+
-        "\uBB87\uF4CE\uC1A3\uBB88\uBB89\uC6C9\uBB8A\uB4D6"+
-        "\uD5B3\uBB8B\uBB8C\uBB8D\uF4D0\uF4CF\uF4D1\uCBDA"+
-        "\uBB8E\uBB8F\uF4D2\uBB90\uD4C1\uD6E0\uBB91\uBB92"+
-        "\uBB93\uBB94\uB7E0\uBB95\uBB96\uBB97\uC1B8\uBB98"+
-        "\uBB99\uC1BB\uF4D3\uBEAC\uBB9A\uBB9B\uBB9C\uBB9D"+
-        "\uBB9E\uB4E2\uBB9F\uBBA0\uF4D4\uF4D5\uBEAB\uBC40"+
-        "\uBC41\uF4D6\uBC42\uBC43\uBC44\uF4DB\uBC45\uF4D7"+
-        "\uF4DA\uBC46\uBAFD\uBC47\uF4D8\uF4D9\uBC48\uBC49"+
-        "\uBC4A\uBC4B\uBC4C\uBC4D\uBC4E\uB8E2\uCCC7\uF4DC"+
-        "\uBC4F\uB2DA\uBC50\uBC51\uC3D3\uBC52\uBC53\uD4E3"+
-        "\uBFB7\uBC54\uBC55\uBC56\uBC57\uBC58\uBC59\uBC5A"+
-        "\uF4DD\uBC5B\uBC5C\uBC5D\uBC5E\uBC5F\uBC60\uC5B4"+
-        "\uBC61\uBC62\uBC63\uBC64\uBC65\uBC66\uBC67\uBC68"+
-        "\uF4E9\uBC69\uBC6A\uCFB5\uBC6B\uBC6C\uBC6D\uBC6E"+
-        "\uBC6F\uBC70\uBC71\uBC72\uBC73\uBC74\uBC75\uBC76"+
-        "\uBC77\uBC78\uCEC9\uBC79\uBC7A\uBC7B\uBC7C\uBC7D"+
-        "\uBC7E\uBC80\uBC81\uBC82\uBC83\uBC84\uBC85\uBC86"+
-        "\uBC87\uBC88\uBC89\uBC8A\uBC8B\uBC8C\uBC8D\uBC8E"+
-        "\uCBD8\uBC8F\uCBF7\uBC90\uBC91\uBC92\uBC93\uBDF4"+
-        "\uBC94\uBC95\uBC96\uD7CF\uBC97\uBC98\uBC99\uC0DB"+
-        "\uBC9A\uBC9B\uBC9C\uBC9D\uBC9E\uBC9F\uBCA0\uBD40"+
-        "\uBD41\uBD42\uBD43\uBD44\uBD45\uBD46\uBD47\uBD48"+
-        "\uBD49\uBD4A\uBD4B\uBD4C\uBD4D\uBD4E\uBD4F\uBD50"+
-        "\uBD51\uBD52\uBD53\uBD54\uBD55\uBD56\uBD57\uBD58"+
-        "\uBD59\uBD5A\uBD5B\uBD5C\uBD5D\uBD5E\uBD5F\uBD60"+
-        "\uBD61\uBD62\uBD63\uBD64\uBD65\uBD66\uBD67\uBD68"+
-        "\uBD69\uBD6A\uBD6B\uBD6C\uBD6D\uBD6E\uBD6F\uBD70"+
-        "\uBD71\uBD72\uBD73\uBD74\uBD75\uBD76\uD0F5\uBD77"+
-        "\uBD78\uBD79\uBD7A\uBD7B\uBD7C\uBD7D\uBD7E\uF4EA"+
-        "\uBD80\uBD81\uBD82\uBD83\uBD84\uBD85\uBD86\uBD87"+
-        "\uBD88\uBD89\uBD8A\uBD8B\uBD8C\uBD8D\uBD8E\uBD8F"+
-        "\uBD90\uBD91\uBD92\uBD93\uBD94\uBD95\uBD96\uBD97"+
-        "\uBD98\uBD99\uBD9A\uBD9B\uBD9C\uBD9D\uBD9E\uBD9F"+
-        "\uBDA0\uBE40\uBE41\uBE42\uBE43\uBE44\uBE45\uBE46"+
-        "\uBE47\uBE48\uBE49\uBE4A\uBE4B\uBE4C\uF4EB\uBE4D"+
-        "\uBE4E\uBE4F\uBE50\uBE51\uBE52\uBE53\uF4EC\uBE54"+
-        "\uBE55\uBE56\uBE57\uBE58\uBE59\uBE5A\uBE5B\uBE5C"+
-        "\uBE5D\uBE5E\uBE5F\uBE60\uBE61\uBE62\uBE63\uBE64"+
-        "\uBE65\uBE66\uBE67\uBE68\uBE69\uBE6A\uBE6B\uBE6C"+
-        "\uBE6D\uBE6E\uBE6F\uBE70\uBE71\uBE72\uBE73\uBE74"+
-        "\uBE75\uBE76\uBE77\uBE78\uBE79\uBE7A\uBE7B\uBE7C"+
-        "\uBE7D\uBE7E\uBE80\uBE81\uBE82\uBE83\uBE84\uBE85"+
-        "\uBE86\uBE87\uBE88\uBE89\uBE8A\uBE8B\uBE8C\uBE8D"+
-        "\uBE8E\uBE8F\uBE90\uBE91\uBE92\uBE93\uBE94\uBE95"+
-        "\uBE96\uBE97\uBE98\uBE99\uBE9A\uBE9B\uBE9C\uBE9D"+
-        "\uBE9E\uBE9F\uBEA0\uBF40\uBF41\uBF42\uBF43\uBF44"+
-        "\uBF45\uBF46\uBF47\uBF48\uBF49\uBF4A\uBF4B\uBF4C"+
-        "\uBF4D\uBF4E\uBF4F\uBF50\uBF51\uBF52\uBF53\uBF54"+
-        "\uBF55\uBF56\uBF57\uBF58\uBF59\uBF5A\uBF5B\uBF5C"+
-        "\uBF5D\uBF5E\uBF5F\uBF60\uBF61\uBF62\uBF63\uBF64"+
-        "\uBF65\uBF66\uBF67\uBF68\uBF69\uBF6A\uBF6B\uBF6C"+
-        "\uBF6D\uBF6E\uBF6F\uBF70\uBF71\uBF72\uBF73\uBF74"+
-        "\uBF75\uBF76\uBF77\uBF78\uBF79\uBF7A\uBF7B\uBF7C"+
-        "\uBF7D\uBF7E\uBF80\uF7E3\uBF81\uBF82\uBF83\uBF84"+
-        "\uBF85\uB7B1\uBF86\uBF87\uBF88\uBF89\uBF8A\uF4ED"+
-        "\uBF8B\uBF8C\uBF8D\uBF8E\uBF8F\uBF90\uBF91\uBF92"+
-        "\uBF93\uBF94\uBF95\uBF96\uBF97\uBF98\uBF99\uBF9A"+
-        "\uBF9B\uBF9C\uBF9D\uBF9E\uBF9F\uBFA0\uC040\uC041"+
-        "\uC042\uC043\uC044\uC045\uC046\uC047\uC048\uC049"+
-        "\uC04A\uC04B\uC04C\uC04D\uC04E\uC04F\uC050\uC051"+
-        "\uC052\uC053\uC054\uC055\uC056\uC057\uC058\uC059"+
-        "\uC05A\uC05B\uC05C\uC05D\uC05E\uC05F\uC060\uC061"+
-        "\uC062\uC063\uD7EB\uC064\uC065\uC066\uC067\uC068"+
-        "\uC069\uC06A\uC06B\uC06C\uC06D\uC06E\uC06F\uC070"+
-        "\uC071\uC072\uC073\uC074\uC075\uC076\uC077\uC078"+
-        "\uC079\uC07A\uC07B\uF4EE\uC07C\uC07D\uC07E\uE6F9"+
-        "\uBEC0\uE6FA\uBAEC\uE6FB\uCFCB\uE6FC\uD4BC\uBCB6"+
-        "\uE6FD\uE6FE\uBCCD\uC8D2\uCEB3\uE7A1\uC080\uB4BF"+
-        "\uE7A2\uC9B4\uB8D9\uC4C9\uC081\uD7DD\uC2DA\uB7D7"+
-        "\uD6BD\uCEC6\uB7C4\uC082\uC083\uC5A6\uE7A3\uCFDF"+
-        "\uE7A4\uE7A5\uE7A6\uC1B7\uD7E9\uC9F0\uCFB8\uD6AF"+
-        "\uD6D5\uE7A7\uB0ED\uE7A8\uE7A9\uC9DC\uD2EF\uBEAD"+
-        "\uE7AA\uB0F3\uC8DE\uBDE1\uE7AB\uC8C6\uC084\uE7AC"+
-        "\uBBE6\uB8F8\uD1A4\uE7AD\uC2E7\uBEF8\uBDCA\uCDB3"+
-        "\uE7AE\uE7AF\uBEEE\uD0E5\uC085\uCBE7\uCCD0\uBCCC"+
-        "\uE7B0\uBCA8\uD0F7\uE7B1\uC086\uD0F8\uE7B2\uE7B3"+
-        "\uB4C2\uE7B4\uE7B5\uC9FE\uCEAC\uC3E0\uE7B7\uB1C1"+
-        "\uB3F1\uC087\uE7B8\uE7B9\uD7DB\uD5C0\uE7BA\uC2CC"+
-        "\uD7BA\uE7BB\uE7BC\uE7BD\uBCEA\uC3E5\uC0C2\uE7BE"+
-        "\uE7BF\uBCA9\uC088\uE7C0\uE7C1\uE7B6\uB6D0\uE7C2"+
-        "\uC089\uE7C3\uE7C4\uBBBA\uB5DE\uC2C6\uB1E0\uE7C5"+
-        "\uD4B5\uE7C6\uB8BF\uE7C8\uE7C7\uB7EC\uC08A\uE7C9"+
-        "\uB2F8\uE7CA\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF\uE7D0"+
-        "\uD3A7\uCBF5\uE7D1\uE7D2\uE7D3\uE7D4\uC9C9\uE7D5"+
-        "\uE7D6\uE7D7\uE7D8\uE7D9\uBDC9\uE7DA\uF3BE\uC08B"+
-        "\uB8D7\uC08C\uC8B1\uC08D\uC08E\uC08F\uC090\uC091"+
-        "\uC092\uC093\uF3BF\uC094\uF3C0\uF3C1\uC095\uC096"+
-        "\uC097\uC098\uC099\uC09A\uC09B\uC09C\uC09D\uC09E"+
-        "\uB9DE\uCDF8\uC09F\uC0A0\uD8E8\uBAB1\uC140\uC2DE"+
-        "\uEEB7\uC141\uB7A3\uC142\uC143\uC144\uC145\uEEB9"+
-        "\uC146\uEEB8\uB0D5\uC147\uC148\uC149\uC14A\uC14B"+
-        "\uEEBB\uD5D6\uD7EF\uC14C\uC14D\uC14E\uD6C3\uC14F"+
-        "\uC150\uEEBD\uCAF0\uC151\uEEBC\uC152\uC153\uC154"+
-        "\uC155\uEEBE\uC156\uC157\uC158\uC159\uEEC0\uC15A"+
-        "\uC15B\uEEBF\uC15C\uC15D\uC15E\uC15F\uC160\uC161"+
-        "\uC162\uC163\uD1F2\uC164\uC7BC\uC165\uC3C0\uC166"+
-        "\uC167\uC168\uC169\uC16A\uB8E1\uC16B\uC16C\uC16D"+
-        "\uC16E\uC16F\uC1E7\uC170\uC171\uF4C6\uD0DF\uF4C7"+
-        "\uC172\uCFDB\uC173\uC174\uC8BA\uC175\uC176\uF4C8"+
-        "\uC177\uC178\uC179\uC17A\uC17B\uC17C\uC17D\uF4C9"+
-        "\uF4CA\uC17E\uF4CB\uC180\uC181\uC182\uC183\uC184"+
-        "\uD9FA\uB8FE\uC185\uC186\uE5F1\uD3F0\uC187\uF4E0"+
-        "\uC188\uCECC\uC189\uC18A\uC18B\uB3E1\uC18C\uC18D"+
-        "\uC18E\uC18F\uF1B4\uC190\uD2EE\uC191\uF4E1\uC192"+
-        "\uC193\uC194\uC195\uC196\uCFE8\uF4E2\uC197\uC198"+
-        "\uC7CC\uC199\uC19A\uC19B\uC19C\uC19D\uC19E\uB5D4"+
-        "\uB4E4\uF4E4\uC19F\uC1A0\uC240\uF4E3\uF4E5\uC241"+
-        "\uC242\uF4E6\uC243\uC244\uC245\uC246\uF4E7\uC247"+
-        "\uBAB2\uB0BF\uC248\uF4E8\uC249\uC24A\uC24B\uC24C"+
-        "\uC24D\uC24E\uC24F\uB7AD\uD2ED\uC250\uC251\uC252";
-
-    private final static String innerEncoderIndex8=
-        "\uD2AB\uC0CF\uC253\uBFBC\uEBA3\uD5DF\uEAC8\uC254"+
-        "\uC255\uC256\uC257\uF1F3\uB6F8\uCBA3\uC258\uC259"+
-        "\uC4CD\uC25A\uF1E7\uC25B\uF1E8\uB8FB\uF1E9\uBAC4"+
-        "\uD4C5\uB0D2\uC25C\uC25D\uF1EA\uC25E\uC25F\uC260"+
-        "\uF1EB\uC261\uF1EC\uC262\uC263\uF1ED\uF1EE\uF1EF"+
-        "\uF1F1\uF1F0\uC5D5\uC264\uC265\uC266\uC267\uC268"+
-        "\uC269\uF1F2\uC26A\uB6FA\uC26B\uF1F4\uD2AE\uDEC7"+
-        "\uCBCA\uC26C\uC26D\uB3DC\uC26E\uB5A2\uC26F\uB9A2"+
-        "\uC270\uC271\uC4F4\uF1F5\uC272\uC273\uF1F6\uC274"+
-        "\uC275\uC276\uC1C4\uC1FB\uD6B0\uF1F7\uC277\uC278"+
-        "\uC279\uC27A\uF1F8\uC27B\uC1AA\uC27C\uC27D\uC27E"+
-        "\uC6B8\uC280\uBEDB\uC281\uC282\uC283\uC284\uC285"+
-        "\uC286\uC287\uC288\uC289\uC28A\uC28B\uC28C\uC28D"+
-        "\uC28E\uF1F9\uB4CF\uC28F\uC290\uC291\uC292\uC293"+
-        "\uC294\uF1FA\uC295\uC296\uC297\uC298\uC299\uC29A"+
-        "\uC29B\uC29C\uC29D\uC29E\uC29F\uC2A0\uC340\uEDB2"+
-        "\uEDB1\uC341\uC342\uCBE0\uD2DE\uC343\uCBC1\uD5D8"+
-        "\uC344\uC8E2\uC345\uC0DF\uBCA1\uC346\uC347\uC348"+
-        "\uC349\uC34A\uC34B\uEBC1\uC34C\uC34D\uD0A4\uC34E"+
-        "\uD6E2\uC34F\uB6C7\uB8D8\uEBC0\uB8CE\uC350\uEBBF"+
-        "\uB3A6\uB9C9\uD6AB\uC351\uB7F4\uB7CA\uC352\uC353"+
-        "\uC354\uBCE7\uB7BE\uEBC6\uC355\uEBC7\uB0B9\uBFCF"+
-        "\uC356\uEBC5\uD3FD\uC357\uEBC8\uC358\uC359\uEBC9"+
-        "\uC35A\uC35B\uB7CE\uC35C\uEBC2\uEBC4\uC9F6\uD6D7"+
-        "\uD5CD\uD0B2\uEBCF\uCEB8\uEBD0\uC35D\uB5A8\uC35E"+
-        "\uC35F\uC360\uC361\uC362\uB1B3\uEBD2\uCCA5\uC363"+
-        "\uC364\uC365\uC366\uC367\uC368\uC369\uC5D6\uEBD3"+
-        "\uC36A\uEBD1\uC5DF\uEBCE\uCAA4\uEBD5\uB0FB\uC36B"+
-        "\uC36C\uBAFA\uC36D\uC36E\uD8B7\uF1E3\uC36F\uEBCA"+
-        "\uEBCB\uEBCC\uEBCD\uEBD6\uE6C0\uEBD9\uC370\uBFE8"+
-        "\uD2C8\uEBD7\uEBDC\uB8EC\uEBD8\uC371\uBDBA\uC372"+
-        "\uD0D8\uC373\uB0B7\uC374\uEBDD\uC4DC\uC375\uC376"+
-        "\uC377\uC378\uD6AC\uC379\uC37A\uC37B\uB4E0\uC37C"+
-        "\uC37D\uC2F6\uBCB9\uC37E\uC380\uEBDA\uEBDB\uD4E0"+
-        "\uC6EA\uC4D4\uEBDF\uC5A7\uD9F5\uC381\uB2B1\uC382"+
-        "\uEBE4\uC383\uBDC5\uC384\uC385\uC386\uEBE2\uC387"+
-        "\uC388\uC389\uC38A\uC38B\uC38C\uC38D\uC38E\uC38F"+
-        "\uC390\uC391\uC392\uC393\uEBE3\uC394\uC395\uB8AC"+
-        "\uC396\uCDD1\uEBE5\uC397\uC398\uC399\uEBE1\uC39A"+
-        "\uC1B3\uC39B\uC39C\uC39D\uC39E\uC39F\uC6A2\uC3A0"+
-        "\uC440\uC441\uC442\uC443\uC444\uC445\uCCF3\uC446"+
-        "\uEBE6\uC447\uC0B0\uD2B8\uEBE7\uC448\uC449\uC44A"+
-        "\uB8AF\uB8AD\uC44B\uEBE8\uC7BB\uCDF3\uC44C\uC44D"+
-        "\uC44E\uEBEA\uEBEB\uC44F\uC450\uC451\uC452\uC453"+
-        "\uEBED\uC454\uC455\uC456\uC457\uD0C8\uC458\uEBF2"+
-        "\uC459\uEBEE\uC45A\uC45B\uC45C\uEBF1\uC8F9\uC45D"+
-        "\uD1FC\uEBEC\uC45E\uC45F\uEBE9\uC460\uC461\uC462"+
-        "\uC463\uB8B9\uCFD9\uC4E5\uEBEF\uEBF0\uCCDA\uCDC8"+
-        "\uB0F2\uC464\uEBF6\uC465\uC466\uC467\uC468\uC469"+
-        "\uEBF5\uC46A\uB2B2\uC46B\uC46C\uC46D\uC46E\uB8E0"+
-        "\uC46F\uEBF7\uC470\uC471\uC472\uC473\uC474\uC475"+
-        "\uB1EC\uC476\uC477\uCCC5\uC4A4\uCFA5\uC478\uC479"+
-        "\uC47A\uC47B\uC47C\uEBF9\uC47D\uC47E\uECA2\uC480"+
-        "\uC5F2\uC481\uEBFA\uC482\uC483\uC484\uC485\uC486"+
-        "\uC487\uC488\uC489\uC9C5\uC48A\uC48B\uC48C\uC48D"+
-        "\uC48E\uC48F\uE2DF\uEBFE\uC490\uC491\uC492\uC493"+
-        "\uCDCE\uECA1\uB1DB\uD3B7\uC494\uC495\uD2DC\uC496"+
-        "\uC497\uC498\uEBFD\uC499\uEBFB\uC49A\uC49B\uC49C"+
-        "\uC49D\uC49E\uC49F\uC4A0\uC540\uC541\uC542\uC543"+
-        "\uC544\uC545\uC546\uC547\uC548\uC549\uC54A\uC54B"+
-        "\uC54C\uC54D\uC54E\uB3BC\uC54F\uC550\uC551\uEAB0"+
-        "\uC552\uC553\uD7D4\uC554\uF4AB\uB3F4\uC555\uC556"+
-        "\uC557\uC558\uC559\uD6C1\uD6C2\uC55A\uC55B\uC55C"+
-        "\uC55D\uC55E\uC55F\uD5E9\uBECA\uC560\uF4A7\uC561"+
-        "\uD2A8\uF4A8\uF4A9\uC562\uF4AA\uBECB\uD3DF\uC563"+
-        "\uC564\uC565\uC566\uC567\uC9E0\uC9E1\uC568\uC569"+
-        "\uF3C2\uC56A\uCAE6\uC56B\uCCF2\uC56C\uC56D\uC56E"+
-        "\uC56F\uC570\uC571\uE2B6\uCBB4\uC572\uCEE8\uD6DB"+
-        "\uC573\uF4AD\uF4AE\uF4AF\uC574\uC575\uC576\uC577"+
-        "\uF4B2\uC578\uBABD\uF4B3\uB0E3\uF4B0\uC579\uF4B1"+
-        "\uBDA2\uB2D5\uC57A\uF4B6\uF4B7\uB6E6\uB2B0\uCFCF"+
-        "\uF4B4\uB4AC\uC57B\uF4B5\uC57C\uC57D\uF4B8\uC57E"+
-        "\uC580\uC581\uC582\uC583\uF4B9\uC584\uC585\uCDA7"+
-        "\uC586\uF4BA\uC587\uF4BB\uC588\uC589\uC58A\uF4BC"+
-        "\uC58B\uC58C\uC58D\uC58E\uC58F\uC590\uC591\uC592"+
-        "\uCBD2\uC593\uF4BD\uC594\uC595\uC596\uC597\uF4BE"+
-        "\uC598\uC599\uC59A\uC59B\uC59C\uC59D\uC59E\uC59F"+
-        "\uF4BF\uC5A0\uC640\uC641\uC642\uC643\uF4DE\uC1BC"+
-        "\uBCE8\uC644\uC9AB\uD1DE\uE5F5\uC645\uC646\uC647"+
-        "\uC648\uDCB3\uD2D5\uC649\uC64A\uDCB4\uB0AC\uDCB5"+
-        "\uC64B\uC64C\uBDDA\uC64D\uDCB9\uC64E\uC64F\uC650"+
-        "\uD8C2\uC651\uDCB7\uD3F3\uC652\uC9D6\uDCBA\uDCB6"+
-        "\uC653\uDCBB\uC3A2\uC654\uC655\uC656\uC657\uDCBC"+
-        "\uDCC5\uDCBD\uC658\uC659\uCEDF\uD6A5\uC65A\uDCCF"+
-        "\uC65B\uDCCD\uC65C\uC65D\uDCD2\uBDE6\uC2AB\uC65E"+
-        "\uDCB8\uDCCB\uDCCE\uDCBE\uB7D2\uB0C5\uDCC7\uD0BE"+
-        "\uDCC1\uBBA8\uC65F\uB7BC\uDCCC\uC660\uC661\uDCC6"+
-        "\uDCBF\uC7DB\uC662\uC663\uC664\uD1BF\uDCC0\uC665"+
-        "\uC666\uDCCA\uC667\uC668\uDCD0\uC669\uC66A\uCEAD"+
-        "\uDCC2\uC66B\uDCC3\uDCC8\uDCC9\uB2D4\uDCD1\uCBD5"+
-        "\uC66C\uD4B7\uDCDB\uDCDF\uCCA6\uDCE6\uC66D\uC3E7"+
-        "\uDCDC\uC66E\uC66F\uBFC1\uDCD9\uC670\uB0FA\uB9B6"+
-        "\uDCE5\uDCD3\uC671\uDCC4\uDCD6\uC8F4\uBFE0\uC672"+
-        "\uC673\uC674\uC675\uC9BB\uC676\uC677\uC678\uB1BD"+
-        "\uC679\uD3A2\uC67A\uC67B\uDCDA\uC67C\uC67D\uDCD5"+
-        "\uC67E\uC6BB\uC680\uDCDE\uC681\uC682\uC683\uC684"+
-        "\uC685\uD7C2\uC3AF\uB7B6\uC7D1\uC3A9\uDCE2\uDCD8"+
-        "\uDCEB\uDCD4\uC686\uC687\uDCDD\uC688\uBEA5\uDCD7"+
-        "\uC689\uDCE0\uC68A\uC68B\uDCE3\uDCE4\uC68C\uDCF8"+
-        "\uC68D\uC68E\uDCE1\uDDA2\uDCE7\uC68F\uC690\uC691"+
-        "\uC692\uC693\uC694\uC695\uC696\uC697\uC698\uBCEB"+
-        "\uB4C4\uC699\uC69A\uC3A3\uB2E7\uDCFA\uC69B\uDCF2"+
-        "\uC69C\uDCEF\uC69D\uDCFC\uDCEE\uD2F0\uB2E8\uC69E"+
-        "\uC8D7\uC8E3\uDCFB\uC69F\uDCED\uC6A0\uC740\uC741"+
-        "\uDCF7\uC742\uC743\uDCF5\uC744\uC745\uBEA3\uDCF4"+
-        "\uC746\uB2DD\uC747\uC748\uC749\uC74A\uC74B\uDCF3"+
-        "\uBCF6\uDCE8\uBBC4\uC74C\uC0F3\uC74D\uC74E\uC74F"+
-        "\uC750\uC751\uBCD4\uDCE9\uDCEA\uC752\uDCF1\uDCF6"+
-        "\uDCF9\uB5B4\uC753\uC8D9\uBBE7\uDCFE\uDCFD\uD3AB"+
-        "\uDDA1\uDDA3\uDDA5\uD2F1\uDDA4\uDDA6\uDDA7\uD2A9"+
-        "\uC754\uC755\uC756\uC757\uC758\uC759\uC75A\uBAC9"+
-        "\uDDA9\uC75B\uC75C\uDDB6\uDDB1\uDDB4\uC75D\uC75E"+
-        "\uC75F\uC760\uC761\uC762\uC763\uDDB0\uC6CE\uC764"+
-        "\uC765\uC0F2\uC766\uC767\uC768\uC769\uC9AF\uC76A"+
-        "\uC76B\uC76C\uDCEC\uDDAE\uC76D\uC76E\uC76F\uC770"+
-        "\uDDB7\uC771\uC772\uDCF0\uDDAF\uC773\uDDB8\uC774"+
-        "\uDDAC\uC775\uC776\uC777\uC778\uC779\uC77A\uC77B"+
-        "\uDDB9\uDDB3\uDDAD\uC4AA\uC77C\uC77D\uC77E\uC780"+
-        "\uDDA8\uC0B3\uC1AB\uDDAA\uDDAB\uC781\uDDB2\uBBF1"+
-        "\uDDB5\uD3A8\uDDBA\uC782\uDDBB\uC3A7\uC783\uC784"+
-        "\uDDD2\uDDBC\uC785\uC786\uC787\uDDD1\uC788\uB9BD"+
-        "\uC789\uC78A\uBED5\uC78B\uBEFA\uC78C\uC78D\uBACA"+
-        "\uC78E\uC78F\uC790\uC791\uDDCA\uC792\uDDC5\uC793"+
-        "\uDDBF\uC794\uC795\uC796\uB2CB\uDDC3\uC797\uDDCB"+
-        "\uB2A4\uDDD5\uC798\uC799\uC79A\uDDBE\uC79B\uC79C"+
-        "\uC79D\uC6D0\uDDD0\uC79E\uC79F\uC7A0\uC840\uC841"+
-        "\uDDD4\uC1E2\uB7C6\uC842\uC843\uC844\uC845\uC846"+
-        "\uDDCE\uDDCF\uC847\uC848\uC849\uDDC4\uC84A\uC84B"+
-        "\uC84C\uDDBD\uC84D\uDDCD\uCCD1\uC84E\uDDC9\uC84F"+
-        "\uC850\uC851\uC852\uDDC2\uC3C8\uC6BC\uCEAE\uDDCC"+
-        "\uC853\uDDC8\uC854\uC855\uC856\uC857\uC858\uC859"+
-        "\uDDC1\uC85A\uC85B\uC85C\uDDC6\uC2DC\uC85D\uC85E"+
-        "\uC85F\uC860\uC861\uC862\uD3A9\uD3AA\uDDD3\uCFF4"+
-        "\uC8F8\uC863\uC864\uC865\uC866\uC867\uC868\uC869"+
-        "\uC86A\uDDE6\uC86B\uC86C\uC86D\uC86E\uC86F\uC870"+
-        "\uDDC7\uC871\uC872\uC873\uDDE0\uC2E4\uC874\uC875"+
-        "\uC876\uC877\uC878\uC879\uC87A\uC87B\uDDE1\uC87C"+
-        "\uC87D\uC87E\uC880\uC881\uC882\uC883\uC884\uC885"+
-        "\uC886\uDDD7\uC887\uC888\uC889\uC88A\uC88B\uD6F8"+
-        "\uC88C\uDDD9\uDDD8\uB8F0\uDDD6\uC88D\uC88E\uC88F"+
-        "\uC890\uC6CF\uC891\uB6AD\uC892\uC893\uC894\uC895"+
-        "\uC896\uDDE2\uC897\uBAF9\uD4E1\uDDE7\uC898\uC899"+
-        "\uC89A\uB4D0\uC89B\uDDDA\uC89C\uBFFB\uDDE3\uC89D"+
-        "\uDDDF\uC89E\uDDDD\uC89F\uC8A0\uC940\uC941\uC942"+
-        "\uC943\uC944\uB5D9\uC945\uC946\uC947\uC948\uDDDB"+
-        "\uDDDC\uDDDE\uC949\uBDAF\uDDE4\uC94A\uDDE5\uC94B"+
-        "\uC94C\uC94D\uC94E\uC94F\uC950\uC951\uC952\uDDF5"+
-        "\uC953\uC3C9\uC954\uC955\uCBE2\uC956\uC957\uC958"+
-        "\uC959\uDDF2\uC95A\uC95B\uC95C\uC95D\uC95E\uC95F"+
-        "\uC960\uC961\uC962\uC963\uC964\uC965\uC966\uD8E1"+
-        "\uC967\uC968\uC6D1\uC969\uDDF4\uC96A\uC96B\uC96C"+
-        "\uD5F4\uDDF3\uDDF0\uC96D\uC96E\uDDEC\uC96F\uDDEF"+
-        "\uC970\uDDE8\uC971\uC972\uD0EE\uC973\uC974\uC975"+
-        "\uC976\uC8D8\uDDEE\uC977\uC978\uDDE9\uC979\uC97A"+
-        "\uDDEA\uCBF2\uC97B\uDDED\uC97C\uC97D\uB1CD\uC97E"+
-        "\uC980\uC981\uC982\uC983\uC984\uC0B6\uC985\uBCBB"+
-        "\uDDF1\uC986\uC987\uDDF7\uC988\uDDF6\uDDEB\uC989"+
-        "\uC98A\uC98B\uC98C\uC98D\uC5EE\uC98E\uC98F\uC990"+
-        "\uDDFB\uC991\uC992\uC993\uC994\uC995\uC996\uC997"+
-        "\uC998\uC999\uC99A\uC99B\uDEA4\uC99C\uC99D\uDEA3"+
-        "\uC99E\uC99F\uC9A0\uCA40\uCA41\uCA42\uCA43\uCA44"+
-        "\uCA45\uCA46\uCA47\uCA48\uDDF8\uCA49\uCA4A\uCA4B"+
-        "\uCA4C\uC3EF\uCA4D\uC2FB\uCA4E\uCA4F\uCA50\uD5E1"+
-        "\uCA51\uCA52\uCEB5\uCA53\uCA54\uCA55\uCA56\uDDFD"+
-        "\uCA57\uB2CC\uCA58\uCA59\uCA5A\uCA5B\uCA5C\uCA5D"+
-        "\uCA5E\uCA5F\uCA60\uC4E8\uCADF\uCA61\uCA62\uCA63"+
-        "\uCA64\uCA65\uCA66\uCA67\uCA68\uCA69\uCA6A\uC7BE"+
-        "\uDDFA\uDDFC\uDDFE\uDEA2\uB0AA\uB1CE\uCA6B\uCA6C"+
-        "\uCA6D\uCA6E\uCA6F\uDEAC\uCA70\uCA71\uCA72\uCA73"+
-        "\uDEA6\uBDB6\uC8EF\uCA74\uCA75\uCA76\uCA77\uCA78"+
-        "\uCA79\uCA7A\uCA7B\uCA7C\uCA7D\uCA7E\uDEA1\uCA80"+
-        "\uCA81\uDEA5\uCA82\uCA83\uCA84\uCA85\uDEA9\uCA86"+
-        "\uCA87\uCA88\uCA89\uCA8A\uDEA8\uCA8B\uCA8C\uCA8D"+
-        "\uDEA7\uCA8E\uCA8F\uCA90\uCA91\uCA92\uCA93\uCA94"+
-        "\uCA95\uCA96\uDEAD\uCA97\uD4CC\uCA98\uCA99\uCA9A"+
-        "\uCA9B\uDEB3\uDEAA\uDEAE\uCA9C\uCA9D\uC0D9\uCA9E"+
-        "\uCA9F\uCAA0\uCB40\uCB41\uB1A1\uDEB6\uCB42\uDEB1"+
-        "\uCB43\uCB44\uCB45\uCB46\uCB47\uCB48\uCB49\uDEB2"+
-        "\uCB4A\uCB4B\uCB4C\uCB4D\uCB4E\uCB4F\uCB50\uCB51"+
-        "\uCB52\uCB53\uCB54\uD1A6\uDEB5\uCB55\uCB56\uCB57"+
-        "\uCB58\uCB59\uCB5A\uCB5B\uDEAF\uCB5C\uCB5D\uCB5E"+
-        "\uDEB0\uCB5F\uD0BD\uCB60\uCB61\uCB62\uDEB4\uCAED"+
-        "\uDEB9\uCB63\uCB64\uCB65\uCB66\uCB67\uCB68\uDEB8"+
-        "\uCB69\uDEB7\uCB6A\uCB6B\uCB6C\uCB6D\uCB6E\uCB6F"+
-        "\uCB70\uDEBB\uCB71\uCB72\uCB73\uCB74\uCB75\uCB76"+
-        "\uCB77\uBDE5\uCB78\uCB79\uCB7A\uCB7B\uCB7C\uB2D8"+
-        "\uC3EA\uCB7D\uCB7E\uDEBA\uCB80\uC5BA\uCB81\uCB82"+
-        "\uCB83\uCB84\uCB85\uCB86\uDEBC\uCB87\uCB88\uCB89"+
-        "\uCB8A\uCB8B\uCB8C\uCB8D\uCCD9\uCB8E\uCB8F\uCB90"+
-        "\uCB91\uB7AA\uCB92\uCB93\uCB94\uCB95\uCB96\uCB97"+
-        "\uCB98\uCB99\uCB9A\uCB9B\uCB9C\uCB9D\uCB9E\uCB9F"+
-        "\uCBA0\uCC40\uCC41\uD4E5\uCC42\uCC43\uCC44\uDEBD"+
-        "\uCC45\uCC46\uCC47\uCC48\uCC49\uDEBF\uCC4A\uCC4B"+
-        "\uCC4C\uCC4D\uCC4E\uCC4F\uCC50\uCC51\uCC52\uCC53"+
-        "\uCC54\uC4A2\uCC55\uCC56\uCC57\uCC58\uDEC1\uCC59"+
-        "\uCC5A\uCC5B\uCC5C\uCC5D\uCC5E\uCC5F\uCC60\uCC61"+
-        "\uCC62\uCC63\uCC64\uCC65\uCC66\uCC67\uCC68\uDEBE"+
-        "\uCC69\uDEC0\uCC6A\uCC6B\uCC6C\uCC6D\uCC6E\uCC6F"+
-        "\uCC70\uCC71\uCC72\uCC73\uCC74\uCC75\uCC76\uCC77"+
-        "\uD5BA\uCC78\uCC79\uCC7A\uDEC2\uCC7B\uCC7C\uCC7D"+
-        "\uCC7E\uCC80\uCC81\uCC82\uCC83\uCC84\uCC85\uCC86"+
-        "\uCC87\uCC88\uCC89\uCC8A\uCC8B\uF2AE\uBBA2\uC2B2"+
-        "\uC5B0\uC2C7\uCC8C\uCC8D\uF2AF\uCC8E\uCC8F\uCC90"+
-        "\uCC91\uCC92\uD0E9\uCC93\uCC94\uCC95\uD3DD\uCC96"+
-        "\uCC97\uCC98\uEBBD\uCC99\uCC9A\uCC9B\uCC9C\uCC9D"+
-        "\uCC9E\uCC9F\uCCA0\uB3E6\uF2B0\uCD40\uF2B1\uCD41"+
-        "\uCD42\uCAAD\uCD43\uCD44\uCD45\uCD46\uCD47\uCD48"+
-        "\uCD49\uBAE7\uF2B3\uF2B5\uF2B4\uCBE4\uCFBA\uF2B2"+
-        "\uCAB4\uD2CF\uC2EC\uCD4A\uCD4B\uCD4C\uCD4D\uCD4E"+
-        "\uCD4F\uCD50\uCEC3\uF2B8\uB0F6\uF2B7\uCD51\uCD52"+
-        "\uCD53\uCD54\uCD55\uF2BE\uCD56\uB2CF\uCD57\uCD58"+
-        "\uCD59\uCD5A\uCD5B\uCD5C\uD1C1\uF2BA\uCD5D\uCD5E"+
-        "\uCD5F\uCD60\uCD61\uF2BC\uD4E9\uCD62\uCD63\uF2BB"+
-        "\uF2B6\uF2BF\uF2BD\uCD64\uF2B9\uCD65\uCD66\uF2C7"+
-        "\uF2C4\uF2C6\uCD67\uCD68\uF2CA\uF2C2\uF2C0\uCD69"+
-        "\uCD6A\uCD6B\uF2C5\uCD6C\uCD6D\uCD6E\uCD6F\uCD70"+
-        "\uD6FB\uCD71\uCD72\uCD73\uF2C1\uCD74\uC7F9\uC9DF"+
-        "\uCD75\uF2C8\uB9C6\uB5B0\uCD76\uCD77\uF2C3\uF2C9"+
-        "\uF2D0\uF2D6\uCD78\uCD79\uBBD7\uCD7A\uCD7B\uCD7C"+
-        "\uF2D5\uCDDC\uCD7D\uD6EB\uCD7E\uCD80\uF2D2\uF2D4"+
-        "\uCD81\uCD82\uCD83\uCD84\uB8F2\uCD85\uCD86\uCD87"+
-        "\uCD88\uF2CB\uCD89\uCD8A\uCD8B\uF2CE\uC2F9\uCD8C"+
-        "\uD5DD\uF2CC\uF2CD\uF2CF\uF2D3\uCD8D\uCD8E\uCD8F"+
-        "\uF2D9\uD3BC\uCD90\uCD91\uCD92\uCD93\uB6EA\uCD94"+
-        "\uCAF1\uCD95\uB7E4\uF2D7\uCD96\uCD97\uCD98\uF2D8"+
-        "\uF2DA\uF2DD\uF2DB\uCD99\uCD9A\uF2DC\uCD9B\uCD9C"+
-        "\uCD9D\uCD9E\uD1D1\uF2D1\uCD9F\uCDC9\uCDA0\uCECF"+
-        "\uD6A9\uCE40\uF2E3\uCE41\uC3DB\uCE42\uF2E0\uCE43"+
-        "\uCE44\uC0AF\uF2EC\uF2DE\uCE45\uF2E1\uCE46\uCE47"+
-        "\uCE48\uF2E8\uCE49\uCE4A\uCE4B\uCE4C\uF2E2\uCE4D"+
-        "\uCE4E\uF2E7\uCE4F\uCE50\uF2E6\uCE51\uCE52\uF2E9"+
-        "\uCE53\uCE54\uCE55\uF2DF\uCE56\uCE57\uF2E4\uF2EA"+
-        "\uCE58\uCE59\uCE5A\uCE5B\uCE5C\uCE5D\uCE5E\uD3AC"+
-        "\uF2E5\uB2F5\uCE5F\uCE60\uF2F2\uCE61\uD0AB\uCE62"+
-        "\uCE63\uCE64\uCE65\uF2F5\uCE66\uCE67\uCE68\uBBC8"+
-        "\uCE69\uF2F9\uCE6A\uCE6B\uCE6C\uCE6D\uCE6E\uCE6F"+
-        "\uF2F0\uCE70\uCE71\uF2F6\uF2F8\uF2FA\uCE72\uCE73"+
-        "\uCE74\uCE75\uCE76\uCE77\uCE78\uCE79\uF2F3\uCE7A"+
-        "\uF2F1\uCE7B\uCE7C\uCE7D\uBAFB\uCE7E\uB5FB\uCE80"+
-        "\uCE81\uCE82\uCE83\uF2EF\uF2F7\uF2ED\uF2EE\uCE84"+
-        "\uCE85\uCE86\uF2EB\uF3A6\uCE87\uF3A3\uCE88\uCE89"+
-        "\uF3A2\uCE8A\uCE8B\uF2F4\uCE8C\uC8DA\uCE8D\uCE8E"+
-        "\uCE8F\uCE90\uCE91\uF2FB\uCE92\uCE93\uCE94\uF3A5"+
-        "\uCE95\uCE96\uCE97\uCE98\uCE99\uCE9A\uCE9B\uC3F8"+
-        "\uCE9C\uCE9D\uCE9E\uCE9F\uCEA0\uCF40\uCF41\uCF42"+
-        "\uF2FD\uCF43\uCF44\uF3A7\uF3A9\uF3A4\uCF45\uF2FC"+
-        "\uCF46\uCF47\uCF48\uF3AB\uCF49\uF3AA\uCF4A\uCF4B"+
-        "\uCF4C\uCF4D\uC2DD\uCF4E\uCF4F\uF3AE\uCF50\uCF51"+
-        "\uF3B0\uCF52\uCF53\uCF54\uCF55\uCF56\uF3A1\uCF57"+
-        "\uCF58\uCF59\uF3B1\uF3AC\uCF5A\uCF5B\uCF5C\uCF5D"+
-        "\uCF5E\uF3AF\uF2FE\uF3AD\uCF5F\uCF60\uCF61\uCF62"+
-        "\uCF63\uCF64\uCF65\uF3B2\uCF66\uCF67\uCF68\uCF69"+
-        "\uF3B4\uCF6A\uCF6B\uCF6C\uCF6D\uF3A8\uCF6E\uCF6F"+
-        "\uCF70\uCF71\uF3B3\uCF72\uCF73\uCF74\uF3B5\uCF75"+
-        "\uCF76\uCF77\uCF78\uCF79\uCF7A\uCF7B\uCF7C\uCF7D"+
-        "\uCF7E\uD0B7\uCF80\uCF81\uCF82\uCF83\uF3B8\uCF84"+
-        "\uCF85\uCF86\uCF87\uD9F9\uCF88\uCF89\uCF8A\uCF8B"+
-        "\uCF8C\uCF8D\uF3B9\uCF8E\uCF8F\uCF90\uCF91\uCF92"+
-        "\uCF93\uCF94\uCF95\uF3B7\uCF96\uC8E4\uF3B6\uCF97"+
-        "\uCF98\uCF99\uCF9A\uF3BA\uCF9B\uCF9C\uCF9D\uCF9E"+
-        "\uCF9F\uF3BB\uB4C0\uCFA0\uD040\uD041\uD042\uD043"+
-        "\uD044\uD045\uD046\uD047\uD048\uD049\uD04A\uD04B"+
-        "\uD04C\uD04D\uEEC3\uD04E\uD04F\uD050\uD051\uD052"+
-        "\uD053\uF3BC\uD054\uD055\uF3BD\uD056\uD057\uD058"+
-        "\uD1AA\uD059\uD05A\uD05B\uF4AC\uD0C6\uD05C\uD05D"+
-        "\uD05E\uD05F\uD060\uD061\uD0D0\uD1DC\uD062\uD063"+
-        "\uD064\uD065\uD066\uD067\uCFCE\uD068\uD069\uBDD6"+
-        "\uD06A\uD1C3\uD06B\uD06C\uD06D\uD06E\uD06F\uD070"+
-        "\uD071\uBAE2\uE1E9\uD2C2\uF1C2\uB2B9\uD072\uD073"+
-        "\uB1ED\uF1C3\uD074\uC9C0\uB3C4\uD075\uD9F2\uD076"+
-        "\uCBA5\uD077\uF1C4\uD078\uD079\uD07A\uD07B\uD6D4"+
-        "\uD07C\uD07D\uD07E\uD080\uD081\uF1C5\uF4C0\uF1C6"+
-        "\uD082\uD4AC\uF1C7\uD083\uB0C0\uF4C1\uD084\uD085"+
-        "\uF4C2\uD086\uD087\uB4FC\uD088\uC5DB\uD089\uD08A"+
-        "\uD08B\uD08C\uCCBB\uD08D\uD08E\uD08F\uD0E4\uD090"+
-        "\uD091\uD092\uD093\uD094\uCDE0\uD095\uD096\uD097"+
-        "\uD098\uD099\uF1C8\uD09A\uD9F3\uD09B\uD09C\uD09D"+
-        "\uD09E\uD09F\uD0A0\uB1BB\uD140\uCFAE\uD141\uD142"+
-        "\uD143\uB8A4\uD144\uD145\uD146\uD147\uD148\uF1CA"+
-        "\uD149\uD14A\uD14B\uD14C\uF1CB\uD14D\uD14E\uD14F"+
-        "\uD150\uB2C3\uC1D1\uD151\uD152\uD7B0\uF1C9\uD153"+
-        "\uD154\uF1CC\uD155\uD156\uD157\uD158\uF1CE\uD159"+
-        "\uD15A\uD15B\uD9F6\uD15C\uD2E1\uD4A3\uD15D\uD15E"+
-        "\uF4C3\uC8B9\uD15F\uD160\uD161\uD162\uD163\uF4C4"+
-        "\uD164\uD165\uF1CD\uF1CF\uBFE3\uF1D0\uD166\uD167"+
-        "\uF1D4\uD168\uD169\uD16A\uD16B\uD16C\uD16D\uD16E"+
-        "\uF1D6\uF1D1\uD16F\uC9D1\uC5E1\uD170\uD171\uD172"+
-        "\uC2E3\uB9FC\uD173\uD174\uF1D3\uD175\uF1D5\uD176"+
-        "\uD177\uD178\uB9D3\uD179\uD17A\uD17B\uD17C\uD17D"+
-        "\uD17E\uD180\uF1DB\uD181\uD182\uD183\uD184\uD185"+
-        "\uBAD6\uD186\uB0FD\uF1D9\uD187\uD188\uD189\uD18A"+
-        "\uD18B\uF1D8\uF1D2\uF1DA\uD18C\uD18D\uD18E\uD18F"+
-        "\uD190\uF1D7\uD191\uD192\uD193\uC8EC\uD194\uD195"+
-        "\uD196\uD197\uCDCA\uF1DD\uD198\uD199\uD19A\uD19B"+
-        "\uE5BD\uD19C\uD19D\uD19E\uF1DC\uD19F\uF1DE\uD1A0"+
-        "\uD240\uD241\uD242\uD243\uD244\uD245\uD246\uD247"+
-        "\uD248\uF1DF\uD249\uD24A\uCFE5\uD24B\uD24C\uD24D"+
-        "\uD24E\uD24F\uD250\uD251\uD252\uD253\uD254\uD255"+
-        "\uD256\uD257\uD258\uD259\uD25A\uD25B\uD25C\uD25D"+
-        "\uD25E\uD25F\uD260\uD261\uD262\uD263\uF4C5\uBDF3"+
-        "\uD264\uD265\uD266\uD267\uD268\uD269\uF1E0\uD26A"+
-        "\uD26B\uD26C\uD26D\uD26E\uD26F\uD270\uD271\uD272"+
-        "\uD273\uD274\uD275\uD276\uD277\uD278\uD279\uD27A"+
-        "\uD27B\uD27C\uD27D\uF1E1\uD27E\uD280\uD281\uCEF7"+
-        "\uD282\uD2AA\uD283\uF1FB\uD284\uD285\uB8B2\uD286"+
-        "\uD287\uD288\uD289\uD28A\uD28B\uD28C\uD28D\uD28E"+
-        "\uD28F\uD290\uD291\uD292\uD293\uD294\uD295\uD296"+
-        "\uD297\uD298\uD299\uD29A\uD29B\uD29C\uD29D\uD29E"+
-        "\uD29F\uD2A0\uD340\uD341\uD342\uD343\uD344\uD345"+
-        "\uD346\uD347\uD348\uD349\uD34A\uD34B\uD34C\uD34D"+
-        "\uD34E\uD34F\uD350\uD351\uD352\uD353\uD354\uD355"+
-        "\uD356\uD357\uD358\uD359\uD35A\uD35B\uD35C\uD35D"+
-        "\uD35E\uBCFB\uB9DB\uD35F\uB9E6\uC3D9\uCAD3\uEAE8"+
-        "\uC0C0\uBEF5\uEAE9\uEAEA\uEAEB\uD360\uEAEC\uEAED"+
-        "\uEAEE\uEAEF\uBDC7\uD361\uD362\uD363\uF5FB\uD364"+
-        "\uD365\uD366\uF5FD\uD367\uF5FE\uD368\uF5FC\uD369"+
-        "\uD36A\uD36B\uD36C\uBDE2\uD36D\uF6A1\uB4A5\uD36E"+
-        "\uD36F\uD370\uD371\uF6A2\uD372\uD373\uD374\uF6A3"+
-        "\uD375\uD376\uD377\uECB2\uD378\uD379\uD37A\uD37B"+
-        "\uD37C\uD37D\uD37E\uD380\uD381\uD382\uD383\uD384"+
-        "\uD1D4\uD385\uD386\uD387\uD388\uD389\uD38A\uD9EA"+
-        "\uD38B\uD38C\uD38D\uD38E\uD38F\uD390\uD391\uD392"+
-        "\uD393\uD394\uD395\uD396\uD397\uD398\uD399\uD39A"+
-        "\uD39B\uD39C\uD39D\uD39E\uD39F\uD3A0\uD440\uD441"+
-        "\uD442\uD443\uD444\uD445\uD446\uD447\uD448\uD449"+
-        "\uD44A\uD44B\uD44C\uD44D\uD44E\uD44F\uD450\uD451"+
-        "\uD452\uD453\uD454\uD455\uD456\uD457\uD458\uD459"+
-        "\uD45A\uD45B\uD45C\uD45D\uD45E\uD45F\uF6A4\uD460"+
-        "\uD461\uD462\uD463\uD464\uD465\uD466\uD467\uD468"+
-        "\uEEBA\uD469\uD46A\uD46B\uD46C\uD46D\uD46E\uD46F"+
-        "\uD470\uD471\uD472\uD473\uD474\uD475\uD476\uD477"+
-        "\uD478\uD479\uD47A\uD47B\uD47C\uD47D\uD47E\uD480"+
-        "\uD481\uD482\uD483\uD484\uD485\uD486\uD487\uD488"+
-        "\uD489\uD48A\uD48B\uD48C\uD48D\uD48E\uD48F\uD490"+
-        "\uD491\uD492\uD493\uD494\uD495\uD496\uD497\uD498"+
-        "\uD499\uD5B2\uD49A\uD49B\uD49C\uD49D\uD49E\uD49F"+
-        "\uD4A0\uD540\uD541\uD542\uD543\uD544\uD545\uD546"+
-        "\uD547\uD3FE\uCCDC\uD548\uD549\uD54A\uD54B\uD54C"+
-        "\uD54D\uD54E\uD54F\uCAC4\uD550\uD551\uD552\uD553"+
-        "\uD554\uD555\uD556\uD557\uD558\uD559\uD55A\uD55B"+
-        "\uD55C\uD55D\uD55E\uD55F\uD560\uD561\uD562\uD563"+
-        "\uD564\uD565\uD566\uD567\uD568\uD569\uD56A\uD56B"+
-        "\uD56C\uD56D\uD56E\uD56F\uD570\uD571\uD572\uD573"+
-        "\uD574\uD575\uD576\uD577\uD578\uD579\uD57A\uD57B"+
-        "\uD57C\uD57D\uD57E\uD580\uD581\uD582\uD583\uD584"+
-        "\uD585\uD586\uD587\uD588\uD589\uD58A\uD58B\uD58C"+
-        "\uD58D\uD58E\uD58F\uD590\uD591\uD592\uD593\uD594"+
-        "\uD595\uD596\uD597\uD598\uD599\uD59A\uD59B\uD59C"+
-        "\uD59D\uD59E\uD59F\uD5A0\uD640\uD641\uD642\uD643"+
-        "\uD644\uD645\uD646\uD647\uD648\uD649\uD64A\uD64B"+
-        "\uD64C\uD64D\uD64E\uD64F\uD650\uD651\uD652\uD653"+
-        "\uD654\uD655\uD656\uD657\uD658\uD659\uD65A\uD65B"+
-        "\uD65C\uD65D\uD65E\uD65F\uD660\uD661\uD662\uE5C0"+
-        "\uD663\uD664\uD665\uD666\uD667\uD668\uD669\uD66A"+
-        "\uD66B\uD66C\uD66D\uD66E\uD66F\uD670\uD671\uD672"+
-        "\uD673\uD674\uD675\uD676\uD677\uD678\uD679\uD67A"+
-        "\uD67B\uD67C\uD67D\uD67E\uD680\uD681\uF6A5\uD682"+
-        "\uD683\uD684\uD685\uD686\uD687\uD688\uD689\uD68A"+
-        "\uD68B\uD68C\uD68D\uD68E\uD68F\uD690\uD691\uD692"+
-        "\uD693\uD694\uD695\uD696\uD697\uD698\uD699\uD69A"+
-        "\uD69B\uD69C\uD69D\uD69E\uD69F\uD6A0\uD740\uD741"+
-        "\uD742\uD743\uD744\uD745\uD746\uD747\uD748\uD749"+
-        "\uD74A\uD74B\uD74C\uD74D\uD74E\uD74F\uD750\uD751"+
-        "\uD752\uD753\uD754\uD755\uD756\uD757\uD758\uD759"+
-        "\uD75A\uD75B\uD75C\uD75D\uD75E\uD75F\uBEAF\uD760"+
-        "\uD761\uD762\uD763\uD764\uC6A9\uD765\uD766\uD767"+
-        "\uD768\uD769\uD76A\uD76B\uD76C\uD76D\uD76E\uD76F"+
-        "\uD770\uD771\uD772\uD773\uD774\uD775\uD776\uD777"+
-        "\uD778\uD779\uD77A\uD77B\uD77C\uD77D\uD77E\uD780"+
-        "\uD781\uD782\uD783\uD784\uD785\uD786\uD787\uD788"+
-        "\uD789\uD78A\uD78B\uD78C\uD78D\uD78E\uD78F\uD790"+
-        "\uD791\uD792\uD793\uD794\uD795\uD796\uD797\uD798"+
-        "\uDAA5\uBCC6\uB6A9\uB8BC\uC8CF\uBCA5\uDAA6\uDAA7"+
-        "\uCCD6\uC8C3\uDAA8\uC6FD\uD799\uD1B5\uD2E9\uD1B6"+
-        "\uBCC7\uD79A\uBDB2\uBBE4\uDAA9\uDAAA\uD1C8\uDAAB"+
-        "\uD0ED\uB6EF\uC2DB\uD79B\uCBCF\uB7ED\uC9E8\uB7C3"+
-        "\uBEF7\uD6A4\uDAAC\uDAAD\uC6C0\uD7E7\uCAB6\uD79C"+
-        "\uD5A9\uCBDF\uD5EF\uDAAE\uD6DF\uB4CA\uDAB0\uDAAF"+
-        "\uD79D\uD2EB\uDAB1\uDAB2\uDAB3\uCAD4\uDAB4\uCAAB"+
-        "\uDAB5\uDAB6\uB3CF\uD6EF\uDAB7\uBBB0\uB5AE\uDAB8"+
-        "\uDAB9\uB9EE\uD1AF\uD2E8\uDABA\uB8C3\uCFEA\uB2EF"+
-        "\uDABB\uDABC\uD79E\uBDEB\uCEDC\uD3EF\uDABD\uCEF3"+
-        "\uDABE\uD3D5\uBBE5\uDABF\uCBB5\uCBD0\uDAC0\uC7EB"+
-        "\uD6EE\uDAC1\uC5B5\uB6C1\uDAC2\uB7CC\uBFCE\uDAC3"+
-        "\uDAC4\uCBAD\uDAC5\uB5F7\uDAC6\uC1C2\uD7BB\uDAC7"+
-        "\uCCB8\uD79F\uD2EA\uC4B1\uDAC8\uB5FD\uBBD1\uDAC9"+
-        "\uD0B3\uDACA\uDACB\uCEBD\uDACC\uDACD\uDACE\uB2F7"+
-        "\uDAD1\uDACF\uD1E8\uDAD0\uC3D5\uDAD2\uD7A0\uDAD3"+
-        "\uDAD4\uDAD5\uD0BB\uD2A5\uB0F9\uDAD6\uC7AB\uDAD7"+
-        "\uBDF7\uC3A1\uDAD8\uDAD9\uC3FD\uCCB7\uDADA\uDADB"+
-        "\uC0BE\uC6D7\uDADC\uDADD\uC7B4\uDADE\uDADF\uB9C8"+
-        "\uD840\uD841\uD842\uD843\uD844\uD845\uD846\uD847"+
-        "\uD848\uBBED\uD849\uD84A\uD84B\uD84C\uB6B9\uF4F8"+
-        "\uD84D\uF4F9\uD84E\uD84F\uCDE3\uD850\uD851\uD852"+
-        "\uD853\uD854\uD855\uD856\uD857\uF5B9\uD858\uD859"+
-        "\uD85A\uD85B\uEBE0\uD85C\uD85D\uD85E\uD85F\uD860"+
-        "\uD861\uCFF3\uBBBF\uD862\uD863\uD864\uD865\uD866"+
-        "\uD867\uD868\uBAC0\uD4A5\uD869\uD86A\uD86B\uD86C"+
-        "\uD86D\uD86E\uD86F\uE1D9\uD870\uD871\uD872\uD873"+
-        "\uF5F4\uB1AA\uB2F2\uD874\uD875\uD876\uD877\uD878"+
-        "\uD879\uD87A\uF5F5\uD87B\uD87C\uF5F7\uD87D\uD87E"+
-        "\uD880\uBAD1\uF5F6\uD881\uC3B2\uD882\uD883\uD884"+
-        "\uD885\uD886\uD887\uD888\uF5F9\uD889\uD88A\uD88B"+
-        "\uF5F8\uD88C\uD88D\uD88E\uD88F\uD890\uD891\uD892"+
-        "\uD893\uD894\uD895\uD896\uD897\uD898\uD899\uD89A"+
-        "\uD89B\uD89C\uD89D\uD89E\uD89F\uD8A0\uD940\uD941"+
-        "\uD942\uD943\uD944\uD945\uD946\uD947\uD948\uD949"+
-        "\uD94A\uD94B\uD94C\uD94D\uD94E\uD94F\uD950\uD951"+
-        "\uD952\uD953\uD954\uD955\uD956\uD957\uD958\uD959"+
-        "\uD95A\uD95B\uD95C\uD95D\uD95E\uD95F\uD960\uD961"+
-        "\uD962\uD963\uD964\uD965\uD966\uD967\uD968\uD969"+
-        "\uD96A\uD96B\uD96C\uD96D\uD96E\uD96F\uD970\uD971"+
-        "\uD972\uD973\uD974\uD975\uD976\uD977\uD978\uD979"+
-        "\uD97A\uD97B\uD97C\uD97D\uD97E\uD980\uD981\uD982"+
-        "\uD983\uD984\uD985\uD986\uD987\uD988\uD989\uD98A"+
-        "\uD98B\uD98C\uD98D\uD98E\uD98F\uD990\uD991\uD992"+
-        "\uD993\uD994\uD995\uD996\uD997\uD998\uD999\uD99A"+
-        "\uD99B\uD99C\uD99D\uD99E\uD99F\uD9A0\uDA40\uDA41"+
-        "\uDA42\uDA43\uDA44\uDA45\uDA46\uDA47\uDA48\uDA49"+
-        "\uDA4A\uDA4B\uDA4C\uDA4D\uDA4E\uB1B4\uD5EA\uB8BA"+
-        "\uDA4F\uB9B1\uB2C6\uD4F0\uCFCD\uB0DC\uD5CB\uBBF5"+
-        "\uD6CA\uB7B7\uCCB0\uC6B6\uB1E1\uB9BA\uD6FC\uB9E1"+
-        "\uB7A1\uBCFA\uEADA\uEADB\uCCF9\uB9F3\uEADC\uB4FB"+
-        "\uC3B3\uB7D1\uBAD8\uEADD\uD4F4\uEADE\uBCD6\uBBDF"+
-        "\uEADF\uC1DE\uC2B8\uD4DF\uD7CA\uEAE0\uEAE1\uEAE4"+
-        "\uEAE2\uEAE3\uC9DE\uB8B3\uB6C4\uEAE5\uCAEA\uC9CD"+
-        "\uB4CD\uDA50\uDA51\uE2D9\uC5E2\uEAE6\uC0B5\uDA52"+
-        "\uD7B8\uEAE7\uD7AC\uC8FC\uD8D3\uD8CD\uD4DE\uDA53"+
-        "\uD4F9\uC9C4\uD3AE\uB8D3\uB3E0\uDA54\uC9E2\uF4F6"+
-        "\uDA55\uDA56\uDA57\uBAD5\uDA58\uF4F7\uDA59\uDA5A"+
-        "\uD7DF\uDA5B\uDA5C\uF4F1\uB8B0\uD5D4\uB8CF\uC6F0"+
-        "\uDA5D\uDA5E\uDA5F\uDA60\uDA61\uDA62\uDA63\uDA64"+
-        "\uDA65\uB3C3\uDA66\uDA67\uF4F2\uB3AC\uDA68\uDA69"+
-        "\uDA6A\uDA6B\uD4BD\uC7F7\uDA6C\uDA6D\uDA6E\uDA6F"+
-        "\uDA70\uF4F4\uDA71\uDA72\uF4F3\uDA73\uDA74\uDA75"+
-        "\uDA76\uDA77\uDA78\uDA79\uDA7A\uDA7B\uDA7C\uCCCB"+
-        "\uDA7D\uDA7E\uDA80\uC8A4\uDA81\uDA82\uDA83\uDA84"+
-        "\uDA85\uDA86\uDA87\uDA88\uDA89\uDA8A\uDA8B\uDA8C"+
-        "\uDA8D\uF4F5\uDA8E\uD7E3\uC5BF\uF5C0\uDA8F\uDA90"+
-        "\uF5BB\uDA91\uF5C3\uDA92\uF5C2\uDA93\uD6BA\uF5C1"+
-        "\uDA94\uDA95\uDA96\uD4BE\uF5C4\uDA97\uF5CC\uDA98"+
-        "\uDA99\uDA9A\uDA9B\uB0CF\uB5F8\uDA9C\uF5C9\uF5CA"+
-        "\uDA9D\uC5DC\uDA9E\uDA9F\uDAA0\uDB40\uF5C5\uF5C6"+
-        "\uDB41\uDB42\uF5C7\uF5CB\uDB43\uBEE0\uF5C8\uB8FA"+
-        "\uDB44\uDB45\uDB46\uF5D0\uF5D3\uDB47\uDB48\uDB49"+
-        "\uBFE7\uDB4A\uB9F2\uF5BC\uF5CD\uDB4B\uDB4C\uC2B7"+
-        "\uDB4D\uDB4E\uDB4F\uCCF8\uDB50\uBCF9\uDB51\uF5CE"+
-        "\uF5CF\uF5D1\uB6E5\uF5D2\uDB52\uF5D5\uDB53\uDB54"+
-        "\uDB55\uDB56\uDB57\uDB58\uDB59\uF5BD\uDB5A\uDB5B"+
-        "\uDB5C\uF5D4\uD3BB\uDB5D\uB3EC\uDB5E\uDB5F\uCCA4"+
-        "\uDB60\uDB61\uDB62\uDB63\uF5D6\uDB64\uDB65\uDB66"+
-        "\uDB67\uDB68\uDB69\uDB6A\uDB6B\uF5D7\uBEE1\uF5D8"+
-        "\uDB6C\uDB6D\uCCDF\uF5DB\uDB6E\uDB6F\uDB70\uDB71"+
-        "\uDB72\uB2C8\uD7D9\uDB73\uF5D9\uDB74\uF5DA\uF5DC"+
-        "\uDB75\uF5E2\uDB76\uDB77\uDB78\uF5E0\uDB79\uDB7A"+
-        "\uDB7B\uF5DF\uF5DD\uDB7C\uDB7D\uF5E1\uDB7E\uDB80"+
-        "\uF5DE\uF5E4\uF5E5\uDB81\uCCE3\uDB82\uDB83\uE5BF"+
-        "\uB5B8\uF5E3\uF5E8\uCCA3\uDB84\uDB85\uDB86\uDB87"+
-        "\uDB88\uF5E6\uF5E7\uDB89\uDB8A\uDB8B\uDB8C\uDB8D"+
-        "\uDB8E\uF5BE\uDB8F\uDB90\uDB91\uDB92\uDB93\uDB94"+
-        "\uDB95\uDB96\uDB97\uDB98\uDB99\uDB9A\uB1C4\uDB9B"+
-        "\uDB9C\uF5BF\uDB9D\uDB9E\uB5C5\uB2E4\uDB9F\uF5EC"+
-        "\uF5E9\uDBA0\uB6D7\uDC40\uF5ED\uDC41\uF5EA\uDC42"+
-        "\uDC43\uDC44\uDC45\uDC46\uF5EB\uDC47\uDC48\uB4DA"+
-        "\uDC49\uD4EA\uDC4A\uDC4B\uDC4C\uF5EE\uDC4D\uB3F9"+
-        "\uDC4E\uDC4F\uDC50\uDC51\uDC52\uDC53\uDC54\uF5EF"+
-        "\uF5F1\uDC55\uDC56\uDC57\uF5F0\uDC58\uDC59\uDC5A"+
-        "\uDC5B\uDC5C\uDC5D\uDC5E\uF5F2\uDC5F\uF5F3\uDC60"+
-        "\uDC61\uDC62\uDC63\uDC64\uDC65\uDC66\uDC67\uDC68"+
-        "\uDC69\uDC6A\uDC6B\uC9ED\uB9AA\uDC6C\uDC6D\uC7FB"+
-        "\uDC6E\uDC6F\uB6E3\uDC70\uDC71\uDC72\uDC73\uDC74"+
-        "\uDC75\uDC76\uCCC9\uDC77\uDC78\uDC79\uDC7A\uDC7B"+
-        "\uDC7C\uDC7D\uDC7E\uDC80\uDC81\uDC82\uDC83\uDC84"+
-        "\uDC85\uDC86\uDC87\uDC88\uDC89\uDC8A\uEAA6\uDC8B"+
-        "\uDC8C\uDC8D\uDC8E\uDC8F\uDC90\uDC91\uDC92\uDC93"+
-        "\uDC94\uDC95\uDC96\uDC97\uDC98\uDC99\uDC9A\uDC9B"+
-        "\uDC9C\uDC9D\uDC9E\uDC9F\uDCA0\uDD40\uDD41\uDD42"+
-        "\uDD43\uDD44\uDD45\uDD46\uDD47\uDD48\uDD49\uDD4A"+
-        "\uDD4B\uDD4C\uDD4D\uDD4E\uDD4F\uDD50\uDD51\uDD52"+
-        "\uDD53\uDD54\uDD55\uDD56\uDD57\uDD58\uDD59\uDD5A"+
-        "\uDD5B\uDD5C\uDD5D\uDD5E\uDD5F\uDD60\uDD61\uDD62"+
-        "\uDD63\uDD64\uDD65\uDD66\uDD67\uDD68\uDD69\uDD6A"+
-        "\uDD6B\uDD6C\uDD6D\uDD6E\uDD6F\uDD70\uDD71\uDD72"+
-        "\uDD73\uDD74\uDD75\uDD76\uDD77\uDD78\uDD79\uDD7A"+
-        "\uDD7B\uDD7C\uDD7D\uDD7E\uDD80\uDD81\uDD82\uDD83"+
-        "\uDD84\uDD85\uDD86\uDD87\uDD88\uDD89\uDD8A\uDD8B"+
-        "\uDD8C\uDD8D\uDD8E\uDD8F\uDD90\uDD91\uDD92\uDD93"+
-        "\uDD94\uDD95\uDD96\uDD97\uDD98\uDD99\uDD9A\uDD9B"+
-        "\uDD9C\uDD9D\uDD9E\uDD9F\uDDA0\uDE40\uDE41\uDE42"+
-        "\uDE43\uDE44\uDE45\uDE46\uDE47\uDE48\uDE49\uDE4A"+
-        "\uDE4B\uDE4C\uDE4D\uDE4E\uDE4F\uDE50\uDE51\uDE52"+
-        "\uDE53\uDE54\uDE55\uDE56\uDE57\uDE58\uDE59\uDE5A"+
-        "\uDE5B\uDE5C\uDE5D\uDE5E\uDE5F\uDE60\uB3B5\uD4FE"+
-        "\uB9EC\uD0F9\uDE61\uE9ED\uD7AA\uE9EE\uC2D6\uC8ED"+
-        "\uBAE4\uE9EF\uE9F0\uE9F1\uD6E1\uE9F2\uE9F3\uE9F5"+
-        "\uE9F4\uE9F6\uE9F7\uC7E1\uE9F8\uD4D8\uE9F9\uBDCE"+
-        "\uDE62\uE9FA\uE9FB\uBDCF\uE9FC\uB8A8\uC1BE\uE9FD"+
-        "\uB1B2\uBBD4\uB9F5\uE9FE\uDE63\uEAA1\uEAA2\uEAA3"+
-        "\uB7F8\uBCAD\uDE64\uCAE4\uE0CE\uD4AF\uCFBD\uD5B7"+
-        "\uEAA4\uD5DE\uEAA5\uD0C1\uB9BC\uDE65\uB4C7\uB1D9"+
-        "\uDE66\uDE67\uDE68\uC0B1\uDE69\uDE6A\uDE6B\uDE6C"+
-        "\uB1E6\uB1E7\uDE6D\uB1E8\uDE6E\uDE6F\uDE70\uDE71"+
-        "\uB3BD\uC8E8\uDE72\uDE73\uDE74\uDE75\uE5C1\uDE76"+
-        "\uDE77\uB1DF\uDE78\uDE79\uDE7A\uC1C9\uB4EF\uDE7B"+
-        "\uDE7C\uC7A8\uD3D8\uDE7D\uC6F9\uD1B8\uDE7E\uB9FD"+
-        "\uC2F5\uDE80\uDE81\uDE82\uDE83\uDE84\uD3AD\uDE85"+
-        "\uD4CB\uBDFC\uDE86\uE5C2\uB7B5\uE5C3\uDE87\uDE88"+
-        "\uBBB9\uD5E2\uDE89\uBDF8\uD4B6\uCEA5\uC1AC\uB3D9"+
-        "\uDE8A\uDE8B\uCCF6\uDE8C\uE5C6\uE5C4\uE5C8\uDE8D"+
-        "\uE5CA\uE5C7\uB5CF\uC6C8\uDE8E\uB5FC\uE5C5\uDE8F"+
-        "\uCAF6\uDE90\uDE91\uE5C9\uDE92\uDE93\uDE94\uC3D4"+
-        "\uB1C5\uBCA3\uDE95\uDE96\uDE97\uD7B7\uDE98\uDE99";
-
-    private final static String innerEncoderIndex9=
-        "\uCDCB\uCBCD\uCACA\uCCD3\uE5CC\uE5CB\uC4E6\uDE9A"+
-        "\uDE9B\uD1A1\uD1B7\uE5CD\uDE9C\uE5D0\uDE9D\uCDB8"+
-        "\uD6F0\uE5CF\uB5DD\uDE9E\uCDBE\uDE9F\uE5D1\uB6BA"+
-        "\uDEA0\uDF40\uCDA8\uB9E4\uDF41\uCAC5\uB3D1\uCBD9"+
-        "\uD4EC\uE5D2\uB7EA\uDF42\uDF43\uDF44\uE5CE\uDF45"+
-        "\uDF46\uDF47\uDF48\uDF49\uDF4A\uE5D5\uB4FE\uE5D6"+
-        "\uDF4B\uDF4C\uDF4D\uDF4E\uDF4F\uE5D3\uE5D4\uDF50"+
-        "\uD2DD\uDF51\uDF52\uC2DF\uB1C6\uDF53\uD3E2\uDF54"+
-        "\uDF55\uB6DD\uCBEC\uDF56\uE5D7\uDF57\uDF58\uD3F6"+
-        "\uDF59\uDF5A\uDF5B\uDF5C\uDF5D\uB1E9\uDF5E\uB6F4"+
-        "\uE5DA\uE5D8\uE5D9\uB5C0\uDF5F\uDF60\uDF61\uD2C5"+
-        "\uE5DC\uDF62\uDF63\uE5DE\uDF64\uDF65\uDF66\uDF67"+
-        "\uDF68\uDF69\uE5DD\uC7B2\uDF6A\uD2A3\uDF6B\uDF6C"+
-        "\uE5DB\uDF6D\uDF6E\uDF6F\uDF70\uD4E2\uD5DA\uDF71"+
-        "\uDF72\uDF73\uDF74\uDF75\uE5E0\uD7F1\uDF76\uDF77"+
-        "\uDF78\uDF79\uDF7A\uDF7B\uDF7C\uE5E1\uDF7D\uB1DC"+
-        "\uD1FB\uDF7E\uE5E2\uE5E4\uDF80\uDF81\uDF82\uDF83"+
-        "\uE5E3\uDF84\uDF85\uE5E5\uDF86\uDF87\uDF88\uDF89"+
-        "\uDF8A\uD2D8\uDF8B\uB5CB\uDF8C\uE7DF\uDF8D\uDAF5"+
-        "\uDF8E\uDAF8\uDF8F\uDAF6\uDF90\uDAF7\uDF91\uDF92"+
-        "\uDF93\uDAFA\uD0CF\uC4C7\uDF94\uDF95\uB0EE\uDF96"+
-        "\uDF97\uDF98\uD0B0\uDF99\uDAF9\uDF9A\uD3CA\uBAAA"+
-        "\uDBA2\uC7F1\uDF9B\uDAFC\uDAFB\uC9DB\uDAFD\uDF9C"+
-        "\uDBA1\uD7DE\uDAFE\uC1DA\uDF9D\uDF9E\uDBA5\uDF9F"+
-        "\uDFA0\uD3F4\uE040\uE041\uDBA7\uDBA4\uE042\uDBA8"+
-        "\uE043\uE044\uBDBC\uE045\uE046\uE047\uC0C9\uDBA3"+
-        "\uDBA6\uD6A3\uE048\uDBA9\uE049\uE04A\uE04B\uDBAD"+
-        "\uE04C\uE04D\uE04E\uDBAE\uDBAC\uBAC2\uE04F\uE050"+
-        "\uE051\uBFA4\uDBAB\uE052\uE053\uE054\uDBAA\uD4C7"+
-        "\uB2BF\uE055\uE056\uDBAF\uE057\uB9F9\uE058\uDBB0"+
-        "\uE059\uE05A\uE05B\uE05C\uB3BB\uE05D\uE05E\uE05F"+
-        "\uB5A6\uE060\uE061\uE062\uE063\uB6BC\uDBB1\uE064"+
-        "\uE065\uE066\uB6F5\uE067\uDBB2\uE068\uE069\uE06A"+
-        "\uE06B\uE06C\uE06D\uE06E\uE06F\uE070\uE071\uE072"+
-        "\uE073\uE074\uE075\uE076\uE077\uE078\uE079\uE07A"+
-        "\uE07B\uB1C9\uE07C\uE07D\uE07E\uE080\uDBB4\uE081"+
-        "\uE082\uE083\uDBB3\uDBB5\uE084\uE085\uE086\uE087"+
-        "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uDBB7"+
-        "\uE08F\uDBB6\uE090\uE091\uE092\uE093\uE094\uE095"+
-        "\uE096\uDBB8\uE097\uE098\uE099\uE09A\uE09B\uE09C"+
-        "\uE09D\uE09E\uE09F\uDBB9\uE0A0\uE140\uDBBA\uE141"+
-        "\uE142\uD3CF\uF4FA\uC7F5\uD7C3\uC5E4\uF4FC\uF4FD"+
-        "\uF4FB\uE143\uBEC6\uE144\uE145\uE146\uE147\uD0EF"+
-        "\uE148\uE149\uB7D3\uE14A\uE14B\uD4CD\uCCAA\uE14C"+
-        "\uE14D\uF5A2\uF5A1\uBAA8\uF4FE\uCBD6\uE14E\uE14F"+
-        "\uE150\uF5A4\uC0D2\uE151\uB3EA\uE152\uCDAA\uF5A5"+
-        "\uF5A3\uBDB4\uF5A8\uE153\uF5A9\uBDCD\uC3B8\uBFE1"+
-        "\uCBE1\uF5AA\uE154\uE155\uE156\uF5A6\uF5A7\uC4F0"+
-        "\uE157\uE158\uE159\uE15A\uE15B\uF5AC\uE15C\uB4BC"+
-        "\uE15D\uD7ED\uE15E\uB4D7\uF5AB\uF5AE\uE15F\uE160"+
-        "\uF5AD\uF5AF\uD0D1\uE161\uE162\uE163\uE164\uE165"+
-        "\uE166\uE167\uC3D1\uC8A9\uE168\uE169\uE16A\uE16B"+
-        "\uE16C\uE16D\uF5B0\uF5B1\uE16E\uE16F\uE170\uE171"+
-        "\uE172\uE173\uF5B2\uE174\uE175\uF5B3\uF5B4\uF5B5"+
-        "\uE176\uE177\uE178\uE179\uF5B7\uF5B6\uE17A\uE17B"+
-        "\uE17C\uE17D\uF5B8\uE17E\uE180\uE181\uE182\uE183"+
-        "\uE184\uE185\uE186\uE187\uE188\uE189\uE18A\uB2C9"+
-        "\uE18B\uD3D4\uCACD\uE18C\uC0EF\uD6D8\uD2B0\uC1BF"+
-        "\uE18D\uBDF0\uE18E\uE18F\uE190\uE191\uE192\uE193"+
-        "\uE194\uE195\uE196\uE197\uB8AA\uE198\uE199\uE19A"+
-        "\uE19B\uE19C\uE19D\uE19E\uE19F\uE1A0\uE240\uE241"+
-        "\uE242\uE243\uE244\uE245\uE246\uE247\uE248\uE249"+
-        "\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F\uE250\uE251"+
-        "\uE252\uE253\uE254\uE255\uE256\uE257\uE258\uE259"+
-        "\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F\uE260\uE261"+
-        "\uE262\uE263\uE264\uE265\uE266\uE267\uE268\uE269"+
-        "\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F\uE270\uE271"+
-        "\uE272\uE273\uE274\uE275\uE276\uE277\uE278\uE279"+
-        "\uE27A\uE27B\uE27C\uE27D\uE27E\uE280\uE281\uE282"+
-        "\uE283\uE284\uE285\uE286\uE287\uE288\uE289\uE28A"+
-        "\uE28B\uE28C\uE28D\uE28E\uE28F\uE290\uE291\uE292"+
-        "\uE293\uE294\uE295\uE296\uE297\uE298\uE299\uE29A"+
-        "\uE29B\uE29C\uE29D\uE29E\uE29F\uE2A0\uE340\uE341"+
-        "\uE342\uE343\uE344\uE345\uE346\uE347\uE348\uE349"+
-        "\uE34A\uE34B\uE34C\uE34D\uE34E\uE34F\uE350\uE351"+
-        "\uE352\uE353\uE354\uE355\uE356\uE357\uE358\uE359"+
-        "\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F\uE360\uE361"+
-        "\uE362\uE363\uE364\uE365\uE366\uE367\uE368\uE369"+
-        "\uE36A\uE36B\uE36C\uE36D\uBCF8\uE36E\uE36F\uE370"+
-        "\uE371\uE372\uE373\uE374\uE375\uE376\uE377\uE378"+
-        "\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE380\uE381"+
-        "\uE382\uE383\uE384\uE385\uE386\uE387\uF6C6\uE388"+
-        "\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F\uE390"+
-        "\uE391\uE392\uE393\uE394\uE395\uE396\uE397\uE398"+
-        "\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F\uE3A0"+
-        "\uE440\uE441\uE442\uE443\uE444\uE445\uF6C7\uE446"+
-        "\uE447\uE448\uE449\uE44A\uE44B\uE44C\uE44D\uE44E"+
-        "\uE44F\uE450\uE451\uE452\uE453\uE454\uE455\uE456"+
-        "\uE457\uE458\uE459\uE45A\uE45B\uE45C\uE45D\uE45E"+
-        "\uF6C8\uE45F\uE460\uE461\uE462\uE463\uE464\uE465"+
-        "\uE466\uE467\uE468\uE469\uE46A\uE46B\uE46C\uE46D"+
-        "\uE46E\uE46F\uE470\uE471\uE472\uE473\uE474\uE475"+
-        "\uE476\uE477\uE478\uE479\uE47A\uE47B\uE47C\uE47D"+
-        "\uE47E\uE480\uE481\uE482\uE483\uE484\uE485\uE486"+
-        "\uE487\uE488\uE489\uE48A\uE48B\uE48C\uE48D\uE48E"+
-        "\uE48F\uE490\uE491\uE492\uE493\uE494\uE495\uE496"+
-        "\uE497\uE498\uE499\uE49A\uE49B\uE49C\uE49D\uE49E"+
-        "\uE49F\uE4A0\uE540\uE541\uE542\uE543\uE544\uE545"+
-        "\uE546\uE547\uE548\uE549\uE54A\uE54B\uE54C\uE54D"+
-        "\uE54E\uE54F\uE550\uE551\uE552\uE553\uE554\uE555"+
-        "\uE556\uE557\uE558\uE559\uE55A\uE55B\uE55C\uE55D"+
-        "\uE55E\uE55F\uE560\uE561\uE562\uE563\uE564\uE565"+
-        "\uE566\uE567\uE568\uE569\uE56A\uE56B\uE56C\uE56D"+
-        "\uE56E\uE56F\uE570\uE571\uE572\uE573\uF6C9\uE574"+
-        "\uE575\uE576\uE577\uE578\uE579\uE57A\uE57B\uE57C"+
-        "\uE57D\uE57E\uE580\uE581\uE582\uE583\uE584\uE585"+
-        "\uE586\uE587\uE588\uE589\uE58A\uE58B\uE58C\uE58D"+
-        "\uE58E\uE58F\uE590\uE591\uE592\uE593\uE594\uE595"+
-        "\uE596\uE597\uE598\uE599\uE59A\uE59B\uE59C\uE59D"+
-        "\uE59E\uE59F\uF6CA\uE5A0\uE640\uE641\uE642\uE643"+
-        "\uE644\uE645\uE646\uE647\uE648\uE649\uE64A\uE64B"+
-        "\uE64C\uE64D\uE64E\uE64F\uE650\uE651\uE652\uE653"+
-        "\uE654\uE655\uE656\uE657\uE658\uE659\uE65A\uE65B"+
-        "\uE65C\uE65D\uE65E\uE65F\uE660\uE661\uE662\uF6CC"+
-        "\uE663\uE664\uE665\uE666\uE667\uE668\uE669\uE66A"+
-        "\uE66B\uE66C\uE66D\uE66E\uE66F\uE670\uE671\uE672"+
-        "\uE673\uE674\uE675\uE676\uE677\uE678\uE679\uE67A"+
-        "\uE67B\uE67C\uE67D\uE67E\uE680\uE681\uE682\uE683"+
-        "\uE684\uE685\uE686\uE687\uE688\uE689\uE68A\uE68B"+
-        "\uE68C\uE68D\uE68E\uE68F\uE690\uE691\uE692\uE693"+
-        "\uE694\uE695\uE696\uE697\uE698\uE699\uE69A\uE69B"+
-        "\uE69C\uE69D\uF6CB\uE69E\uE69F\uE6A0\uE740\uE741"+
-        "\uE742\uE743\uE744\uE745\uE746\uE747\uF7E9\uE748"+
-        "\uE749\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F\uE750"+
-        "\uE751\uE752\uE753\uE754\uE755\uE756\uE757\uE758"+
-        "\uE759\uE75A\uE75B\uE75C\uE75D\uE75E\uE75F\uE760"+
-        "\uE761\uE762\uE763\uE764\uE765\uE766\uE767\uE768"+
-        "\uE769\uE76A\uE76B\uE76C\uE76D\uE76E\uE76F\uE770"+
-        "\uE771\uE772\uE773\uE774\uE775\uE776\uE777\uE778"+
-        "\uE779\uE77A\uE77B\uE77C\uE77D\uE77E\uE780\uE781"+
-        "\uE782\uE783\uE784\uE785\uE786\uE787\uE788\uE789"+
-        "\uE78A\uE78B\uE78C\uE78D\uE78E\uE78F\uE790\uE791"+
-        "\uE792\uE793\uE794\uE795\uE796\uE797\uE798\uE799"+
-        "\uE79A\uE79B\uE79C\uE79D\uE79E\uE79F\uE7A0\uE840"+
-        "\uE841\uE842\uE843\uE844\uE845\uE846\uE847\uE848"+
-        "\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uF6CD\uE84F"+
-        "\uE850\uE851\uE852\uE853\uE854\uE855\uE856\uE857"+
-        "\uE858\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F"+
-        "\uE860\uE861\uE862\uE863\uE864\uE865\uE866\uE867"+
-        "\uE868\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F"+
-        "\uE870\uE871\uE872\uE873\uE874\uE875\uE876\uE877"+
-        "\uE878\uE879\uE87A\uF6CE\uE87B\uE87C\uE87D\uE87E"+
-        "\uE880\uE881\uE882\uE883\uE884\uE885\uE886\uE887"+
-        "\uE888\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F"+
-        "\uE890\uE891\uE892\uE893\uE894\uEEC4\uEEC5\uEEC6"+
-        "\uD5EB\uB6A4\uEEC8\uEEC7\uEEC9\uEECA\uC7A5\uEECB"+
-        "\uEECC\uE895\uB7B0\uB5F6\uEECD\uEECF\uE896\uEECE"+
-        "\uE897\uB8C6\uEED0\uEED1\uEED2\uB6DB\uB3AE\uD6D3"+
-        "\uC4C6\uB1B5\uB8D6\uEED3\uEED4\uD4BF\uC7D5\uBEFB"+
-        "\uCED9\uB9B3\uEED6\uEED5\uEED8\uEED7\uC5A5\uEED9"+
-        "\uEEDA\uC7AE\uEEDB\uC7AF\uEEDC\uB2A7\uEEDD\uEEDE"+
-        "\uEEDF\uEEE0\uEEE1\uD7EA\uEEE2\uEEE3\uBCD8\uEEE4"+
-        "\uD3CB\uCCFA\uB2AC\uC1E5\uEEE5\uC7A6\uC3AD\uE898"+
-        "\uEEE6\uEEE7\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uE899"+
-        "\uEEED\uEEEE\uEEEF\uE89A\uE89B\uEEF0\uEEF1\uEEF2"+
-        "\uEEF4\uEEF3\uE89C\uEEF5\uCDAD\uC2C1\uEEF6\uEEF7"+
-        "\uEEF8\uD5A1\uEEF9\uCFB3\uEEFA\uEEFB\uE89D\uEEFC"+
-        "\uEEFD\uEFA1\uEEFE\uEFA2\uB8F5\uC3FA\uEFA3\uEFA4"+
-        "\uBDC2\uD2BF\uB2F9\uEFA5\uEFA6\uEFA7\uD2F8\uEFA8"+
-        "\uD6FD\uEFA9\uC6CC\uE89E\uEFAA\uEFAB\uC1B4\uEFAC"+
-        "\uCFFA\uCBF8\uEFAE\uEFAD\uB3FA\uB9F8\uEFAF\uEFB0"+
-        "\uD0E2\uEFB1\uEFB2\uB7E6\uD0BF\uEFB3\uEFB4\uEFB5"+
-        "\uC8F1\uCCE0\uEFB6\uEFB7\uEFB8\uEFB9\uEFBA\uD5E0"+
-        "\uEFBB\uB4ED\uC3AA\uEFBC\uE89F\uEFBD\uEFBE\uEFBF"+
-        "\uE8A0\uCEFD\uEFC0\uC2E0\uB4B8\uD7B6\uBDF5\uE940"+
-        "\uCFC7\uEFC3\uEFC1\uEFC2\uEFC4\uB6A7\uBCFC\uBEE2"+
-        "\uC3CC\uEFC5\uEFC6\uE941\uEFC7\uEFCF\uEFC8\uEFC9"+
-        "\uEFCA\uC7C2\uEFF1\uB6CD\uEFCB\uE942\uEFCC\uEFCD"+
-        "\uB6C6\uC3BE\uEFCE\uE943\uEFD0\uEFD1\uEFD2\uD5F2"+
-        "\uE944\uEFD3\uC4F7\uE945\uEFD4\uC4F8\uEFD5\uEFD6"+
-        "\uB8E4\uB0F7\uEFD7\uEFD8\uEFD9\uE946\uEFDA\uEFDB"+
-        "\uEFDC\uEFDD\uE947\uEFDE\uBEB5\uEFE1\uEFDF\uEFE0"+
-        "\uE948\uEFE2\uEFE3\uC1CD\uEFE4\uEFE5\uEFE6\uEFE7"+
-        "\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC\uC0D8\uE949\uEFED"+
-        "\uC1AD\uEFEE\uEFEF\uEFF0\uE94A\uE94B\uCFE2\uE94C"+
-        "\uE94D\uE94E\uE94F\uE950\uE951\uE952\uE953\uB3A4"+
-        "\uE954\uE955\uE956\uE957\uE958\uE959\uE95A\uE95B"+
-        "\uE95C\uE95D\uE95E\uE95F\uE960\uE961\uE962\uE963"+
-        "\uE964\uE965\uE966\uE967\uE968\uE969\uE96A\uE96B"+
-        "\uE96C\uE96D\uE96E\uE96F\uE970\uE971\uE972\uE973"+
-        "\uE974\uE975\uE976\uE977\uE978\uE979\uE97A\uE97B"+
-        "\uE97C\uE97D\uE97E\uE980\uE981\uE982\uE983\uE984"+
-        "\uE985\uE986\uE987\uE988\uE989\uE98A\uE98B\uE98C"+
-        "\uE98D\uE98E\uE98F\uE990\uE991\uE992\uE993\uE994"+
-        "\uE995\uE996\uE997\uE998\uE999\uE99A\uE99B\uE99C"+
-        "\uE99D\uE99E\uE99F\uE9A0\uEA40\uEA41\uEA42\uEA43"+
-        "\uEA44\uEA45\uEA46\uEA47\uEA48\uEA49\uEA4A\uEA4B"+
-        "\uEA4C\uEA4D\uEA4E\uEA4F\uEA50\uEA51\uEA52\uEA53"+
-        "\uEA54\uEA55\uEA56\uEA57\uEA58\uEA59\uEA5A\uEA5B"+
-        "\uC3C5\uE3C5\uC9C1\uE3C6\uEA5C\uB1D5\uCECA\uB4B3"+
-        "\uC8F2\uE3C7\uCFD0\uE3C8\uBCE4\uE3C9\uE3CA\uC3C6"+
-        "\uD5A2\uC4D6\uB9EB\uCEC5\uE3CB\uC3F6\uE3CC\uEA5D"+
-        "\uB7A7\uB8F3\uBAD2\uE3CD\uE3CE\uD4C4\uE3CF\uEA5E"+
-        "\uE3D0\uD1CB\uE3D1\uE3D2\uE3D3\uE3D4\uD1D6\uE3D5"+
-        "\uB2FB\uC0BB\uE3D6\uEA5F\uC0AB\uE3D7\uE3D8\uE3D9"+
-        "\uEA60\uE3DA\uE3DB\uEA61\uB8B7\uDAE2\uEA62\uB6D3"+
-        "\uEA63\uDAE4\uDAE3\uEA64\uEA65\uEA66\uEA67\uEA68"+
-        "\uEA69\uEA6A\uDAE6\uEA6B\uEA6C\uEA6D\uC8EE\uEA6E"+
-        "\uEA6F\uDAE5\uB7C0\uD1F4\uD2F5\uD5F3\uBDD7\uEA70"+
-        "\uEA71\uEA72\uEA73\uD7E8\uDAE8\uDAE7\uEA74\uB0A2"+
-        "\uCDD3\uEA75\uDAE9\uEA76\uB8BD\uBCCA\uC2BD\uC2A4"+
-        "\uB3C2\uDAEA\uEA77\uC2AA\uC4B0\uBDB5\uEA78\uEA79"+
-        "\uCFDE\uEA7A\uEA7B\uEA7C\uDAEB\uC9C2\uEA7D\uEA7E"+
-        "\uEA80\uEA81\uEA82\uB1DD\uEA83\uEA84\uEA85\uDAEC"+
-        "\uEA86\uB6B8\uD4BA\uEA87\uB3FD\uEA88\uEA89\uDAED"+
-        "\uD4C9\uCFD5\uC5E3\uEA8A\uDAEE\uEA8B\uEA8C\uEA8D"+
-        "\uEA8E\uEA8F\uDAEF\uEA90\uDAF0\uC1EA\uCCD5\uCFDD"+
-        "\uEA91\uEA92\uEA93\uEA94\uEA95\uEA96\uEA97\uEA98"+
-        "\uEA99\uEA9A\uEA9B\uEA9C\uEA9D\uD3E7\uC2A1\uEA9E"+
-        "\uDAF1\uEA9F\uEAA0\uCBE5\uEB40\uDAF2\uEB41\uCBE6"+
-        "\uD2FE\uEB42\uEB43\uEB44\uB8F4\uEB45\uEB46\uDAF3"+
-        "\uB0AF\uCFB6\uEB47\uEB48\uD5CF\uEB49\uEB4A\uEB4B"+
-        "\uEB4C\uEB4D\uEB4E\uEB4F\uEB50\uEB51\uEB52\uCBED"+
-        "\uEB53\uEB54\uEB55\uEB56\uEB57\uEB58\uEB59\uEB5A"+
-        "\uDAF4\uEB5B\uEB5C\uE3C4\uEB5D\uEB5E\uC1A5\uEB5F"+
-        "\uEB60\uF6BF\uEB61\uEB62\uF6C0\uF6C1\uC4D1\uEB63"+
-        "\uC8B8\uD1E3\uEB64\uEB65\uD0DB\uD1C5\uBCAF\uB9CD"+
-        "\uEB66\uEFF4\uEB67\uEB68\uB4C6\uD3BA\uF6C2\uB3FB"+
-        "\uEB69\uEB6A\uF6C3\uEB6B\uEB6C\uB5F1\uEB6D\uEB6E"+
-        "\uEB6F\uEB70\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76"+
-        "\uF6C5\uEB77\uEB78\uEB79\uEB7A\uEB7B\uEB7C\uEB7D"+
-        "\uD3EA\uF6A7\uD1A9\uEB7E\uEB80\uEB81\uEB82\uF6A9"+
-        "\uEB83\uEB84\uEB85\uF6A8\uEB86\uEB87\uC1E3\uC0D7"+
-        "\uEB88\uB1A2\uEB89\uEB8A\uEB8B\uEB8C\uCEED\uEB8D"+
-        "\uD0E8\uF6AB\uEB8E\uEB8F\uCFF6\uEB90\uF6AA\uD5F0"+
-        "\uF6AC\uC3B9\uEB91\uEB92\uEB93\uBBF4\uF6AE\uF6AD"+
-        "\uEB94\uEB95\uEB96\uC4DE\uEB97\uEB98\uC1D8\uEB99"+
-        "\uEB9A\uEB9B\uEB9C\uEB9D\uCBAA\uEB9E\uCFBC\uEB9F"+
-        "\uEBA0\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46"+
-        "\uEC47\uEC48\uF6AF\uEC49\uEC4A\uF6B0\uEC4B\uEC4C"+
-        "\uF6B1\uEC4D\uC2B6\uEC4E\uEC4F\uEC50\uEC51\uEC52"+
-        "\uB0D4\uC5F9\uEC53\uEC54\uEC55\uEC56\uF6B2\uEC57"+
-        "\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E\uEC5F"+
-        "\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66\uEC67"+
-        "\uEC68\uEC69\uC7E0\uF6A6\uEC6A\uEC6B\uBEB8\uEC6C"+
-        "\uEC6D\uBEB2\uEC6E\uB5E5\uEC6F\uEC70\uB7C7\uEC71"+
-        "\uBFBF\uC3D2\uC3E6\uEC72\uEC73\uD8CC\uEC74\uEC75"+
-        "\uEC76\uB8EF\uEC77\uEC78\uEC79\uEC7A\uEC7B\uEC7C"+
-        "\uEC7D\uEC7E\uEC80\uBDF9\uD1A5\uEC81\uB0D0\uEC82"+
-        "\uEC83\uEC84\uEC85\uEC86\uF7B0\uEC87\uEC88\uEC89"+
-        "\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E\uF7B1\uEC8F\uEC90"+
-        "\uEC91\uEC92\uEC93\uD0AC\uEC94\uB0B0\uEC95\uEC96"+
-        "\uEC97\uF7B2\uF7B3\uEC98\uF7B4\uEC99\uEC9A\uEC9B"+
-        "\uC7CA\uEC9C\uEC9D\uEC9E\uEC9F\uECA0\uED40\uED41"+
-        "\uBECF\uED42\uED43\uF7B7\uED44\uED45\uED46\uED47"+
-        "\uED48\uED49\uED4A\uF7B6\uED4B\uB1DE\uED4C\uF7B5"+
-        "\uED4D\uED4E\uF7B8\uED4F\uF7B9\uED50\uED51\uED52"+
-        "\uED53\uED54\uED55\uED56\uED57\uED58\uED59\uED5A"+
-        "\uED5B\uED5C\uED5D\uED5E\uED5F\uED60\uED61\uED62"+
-        "\uED63\uED64\uED65\uED66\uED67\uED68\uED69\uED6A"+
-        "\uED6B\uED6C\uED6D\uED6E\uED6F\uED70\uED71\uED72"+
-        "\uED73\uED74\uED75\uED76\uED77\uED78\uED79\uED7A"+
-        "\uED7B\uED7C\uED7D\uED7E\uED80\uED81\uCEA4\uC8CD"+
-        "\uED82\uBAAB\uE8B8\uE8B9\uE8BA\uBEC2\uED83\uED84"+
-        "\uED85\uED86\uED87\uD2F4\uED88\uD4CF\uC9D8\uED89"+
-        "\uED8A\uED8B\uED8C\uED8D\uED8E\uED8F\uED90\uED91"+
-        "\uED92\uED93\uED94\uED95\uED96\uED97\uED98\uED99"+
-        "\uED9A\uED9B\uED9C\uED9D\uED9E\uED9F\uEDA0\uEE40"+
-        "\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47\uEE48"+
-        "\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F\uEE50"+
-        "\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57\uEE58"+
-        "\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F\uEE60"+
-        "\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67\uEE68"+
-        "\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F\uEE70"+
-        "\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77\uEE78"+
-        "\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE80\uEE81"+
-        "\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87\uEE88\uEE89"+
-        "\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F\uEE90\uEE91"+
-        "\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97\uEE98\uEE99"+
-        "\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F\uEEA0\uEF40"+
-        "\uEF41\uEF42\uEF43\uEF44\uEF45\uD2B3\uB6A5\uC7EA"+
-        "\uF1FC\uCFEE\uCBB3\uD0EB\uE7EF\uCDE7\uB9CB\uB6D9"+
-        "\uF1FD\uB0E4\uCBCC\uF1FE\uD4A4\uC2AD\uC1EC\uC6C4"+
-        "\uBEB1\uF2A1\uBCD5\uEF46\uF2A2\uF2A3\uEF47\uF2A4"+
-        "\uD2C3\uC6B5\uEF48\uCDC7\uF2A5\uEF49\uD3B1\uBFC5"+
-        "\uCCE2\uEF4A\uF2A6\uF2A7\uD1D5\uB6EE\uF2A8\uF2A9"+
-        "\uB5DF\uF2AA\uF2AB\uEF4B\uB2FC\uF2AC\uF2AD\uC8A7"+
-        "\uEF4C\uEF4D\uEF4E\uEF4F\uEF50\uEF51\uEF52\uEF53"+
-        "\uEF54\uEF55\uEF56\uEF57\uEF58\uEF59\uEF5A\uEF5B"+
-        "\uEF5C\uEF5D\uEF5E\uEF5F\uEF60\uEF61\uEF62\uEF63"+
-        "\uEF64\uEF65\uEF66\uEF67\uEF68\uEF69\uEF6A\uEF6B"+
-        "\uEF6C\uEF6D\uEF6E\uEF6F\uEF70\uEF71\uB7E7\uEF72"+
-        "\uEF73\uECA9\uECAA\uECAB\uEF74\uECAC\uEF75\uEF76"+
-        "\uC6AE\uECAD\uECAE\uEF77\uEF78\uEF79\uB7C9\uCAB3"+
-        "\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E\uEF80\uEF81\uE2B8"+
-        "\uF7CF\uEF82\uEF83\uEF84\uEF85\uEF86\uEF87\uEF88"+
-        "\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E\uEF8F\uEF90"+
-        "\uEF91\uEF92\uEF93\uEF94\uEF95\uEF96\uEF97\uEF98"+
-        "\uEF99\uEF9A\uEF9B\uEF9C\uEF9D\uEF9E\uEF9F\uEFA0"+
-        "\uF040\uF041\uF042\uF043\uF044\uF7D0\uF045\uF046"+
-        "\uB2CD\uF047\uF048\uF049\uF04A\uF04B\uF04C\uF04D"+
-        "\uF04E\uF04F\uF050\uF051\uF052\uF053\uF054\uF055"+
-        "\uF056\uF057\uF058\uF059\uF05A\uF05B\uF05C\uF05D"+
-        "\uF05E\uF05F\uF060\uF061\uF062\uF063\uF7D1\uF064"+
-        "\uF065\uF066\uF067\uF068\uF069\uF06A\uF06B\uF06C"+
-        "\uF06D\uF06E\uF06F\uF070\uF071\uF072\uF073\uF074"+
-        "\uF075\uF076\uF077\uF078\uF079\uF07A\uF07B\uF07C"+
-        "\uF07D\uF07E\uF080\uF081\uF082\uF083\uF084\uF085"+
-        "\uF086\uF087\uF088\uF089\uF7D3\uF7D2\uF08A\uF08B"+
-        "\uF08C\uF08D\uF08E\uF08F\uF090\uF091\uF092\uF093"+
-        "\uF094\uF095\uF096\uE2BB\uF097\uBCA2\uF098\uE2BC"+
-        "\uE2BD\uE2BE\uE2BF\uE2C0\uE2C1\uB7B9\uD2FB\uBDA4"+
-        "\uCACE\uB1A5\uCBC7\uF099\uE2C2\uB6FC\uC8C4\uE2C3"+
-        "\uF09A\uF09B\uBDC8\uF09C\uB1FD\uE2C4\uF09D\uB6F6"+
-        "\uE2C5\uC4D9\uF09E\uF09F\uE2C6\uCFDA\uB9DD\uE2C7"+
-        "\uC0A1\uF0A0\uE2C8\uB2F6\uF140\uE2C9\uF141\uC1F3"+
-        "\uE2CA\uE2CB\uC2F8\uE2CC\uE2CD\uE2CE\uCAD7\uD8B8"+
-        "\uD9E5\uCFE3\uF142\uF143\uF144\uF145\uF146\uF147"+
-        "\uF148\uF149\uF14A\uF14B\uF14C\uF0A5\uF14D\uF14E"+
-        "\uDCB0\uF14F\uF150\uF151\uF152\uF153\uF154\uF155"+
-        "\uF156\uF157\uF158\uF159\uF15A\uF15B\uF15C\uF15D"+
-        "\uF15E\uF15F\uF160\uF161\uF162\uF163\uF164\uF165"+
-        "\uF166\uF167\uF168\uF169\uF16A\uF16B\uF16C\uF16D"+
-        "\uF16E\uF16F\uF170\uF171\uF172\uF173\uF174\uF175"+
-        "\uF176\uF177\uF178\uF179\uF17A\uF17B\uF17C\uF17D"+
-        "\uF17E\uF180\uF181\uF182\uF183\uF184\uF185\uF186"+
-        "\uF187\uF188\uF189\uF18A\uF18B\uF18C\uF18D\uF18E"+
-        "\uF18F\uF190\uF191\uF192\uF193\uF194\uF195\uF196"+
-        "\uF197\uF198\uF199\uF19A\uF19B\uF19C\uF19D\uF19E"+
-        "\uF19F\uF1A0\uF240\uF241\uF242\uF243\uF244\uF245"+
-        "\uF246\uF247\uF248\uF249\uF24A\uF24B\uF24C\uF24D"+
-        "\uF24E\uF24F\uF250\uF251\uF252\uF253\uF254\uF255"+
-        "\uF256\uF257\uF258\uF259\uF25A\uF25B\uF25C\uF25D"+
-        "\uF25E\uF25F\uF260\uF261\uF262\uF263\uF264\uF265"+
-        "\uF266\uF267\uF268\uF269\uF26A\uF26B\uF26C\uF26D"+
-        "\uF26E\uF26F\uF270\uF271\uF272\uF273\uF274\uF275"+
-        "\uF276\uF277\uF278\uF279\uF27A\uF27B\uF27C\uF27D"+
-        "\uF27E\uF280\uF281\uF282\uF283\uF284\uF285\uF286"+
-        "\uF287\uF288\uF289\uF28A\uF28B\uF28C\uF28D\uF28E"+
-        "\uF28F\uF290\uF291\uF292\uF293\uF294\uF295\uF296"+
-        "\uF297\uF298\uF299\uF29A\uF29B\uF29C\uF29D\uF29E"+
-        "\uF29F\uF2A0\uF340\uF341\uF342\uF343\uF344\uF345"+
-        "\uF346\uF347\uF348\uF349\uF34A\uF34B\uF34C\uF34D"+
-        "\uF34E\uF34F\uF350\uF351\uC2ED\uD4A6\uCDD4\uD1B1"+
-        "\uB3DB\uC7FD\uF352\uB2B5\uC2BF\uE6E0\uCABB\uE6E1"+
-        "\uE6E2\uBED4\uE6E3\uD7A4\uCDD5\uE6E5\uBCDD\uE6E4"+
-        "\uE6E6\uE6E7\uC2EE\uF353\uBDBE\uE6E8\uC2E6\uBAA7"+
-        "\uE6E9\uF354\uE6EA\uB3D2\uD1E9\uF355\uF356\uBFA5"+
-        "\uE6EB\uC6EF\uE6EC\uE6ED\uF357\uF358\uE6EE\uC6AD"+
-        "\uE6EF\uF359\uC9A7\uE6F0\uE6F1\uE6F2\uE5B9\uE6F3"+
-        "\uE6F4\uC2E2\uE6F5\uE6F6\uD6E8\uE6F7\uF35A\uE6F8"+
-        "\uB9C7\uF35B\uF35C\uF35D\uF35E\uF35F\uF360\uF361"+
-        "\uF7BB\uF7BA\uF362\uF363\uF364\uF365\uF7BE\uF7BC"+
-        "\uBAA1\uF366\uF7BF\uF367\uF7C0\uF368\uF369\uF36A"+
-        "\uF7C2\uF7C1\uF7C4\uF36B\uF36C\uF7C3\uF36D\uF36E"+
-        "\uF36F\uF370\uF371\uF7C5\uF7C6\uF372\uF373\uF374"+
-        "\uF375\uF7C7\uF376\uCBE8\uF377\uF378\uF379\uF37A"+
-        "\uB8DF\uF37B\uF37C\uF37D\uF37E\uF380\uF381\uF7D4"+
-        "\uF382\uF7D5\uF383\uF384\uF385\uF386\uF7D6\uF387"+
-        "\uF388\uF389\uF38A\uF7D8\uF38B\uF7DA\uF38C\uF7D7"+
-        "\uF38D\uF38E\uF38F\uF390\uF391\uF392\uF393\uF394"+
-        "\uF395\uF7DB\uF396\uF7D9\uF397\uF398\uF399\uF39A"+
-        "\uF39B\uF39C\uF39D\uD7D7\uF39E\uF39F\uF3A0\uF440"+
-        "\uF7DC\uF441\uF442\uF443\uF444\uF445\uF446\uF7DD"+
-        "\uF447\uF448\uF449\uF7DE\uF44A\uF44B\uF44C\uF44D"+
-        "\uF44E\uF44F\uF450\uF451\uF452\uF453\uF454\uF7DF"+
-        "\uF455\uF456\uF457\uF7E0\uF458\uF459\uF45A\uF45B"+
-        "\uF45C\uF45D\uF45E\uF45F\uF460\uF461\uF462\uDBCB"+
-        "\uF463\uF464\uD8AA\uF465\uF466\uF467\uF468\uF469"+
-        "\uF46A\uF46B\uF46C\uE5F7\uB9ED\uF46D\uF46E\uF46F"+
-        "\uF470\uBFFD\uBBEA\uF7C9\uC6C7\uF7C8\uF471\uF7CA"+
-        "\uF7CC\uF7CB\uF472\uF473\uF474\uF7CD\uF475\uCEBA"+
-        "\uF476\uF7CE\uF477\uF478\uC4A7\uF479\uF47A\uF47B"+
-        "\uF47C\uF47D\uF47E\uF480\uF481\uF482\uF483\uF484"+
-        "\uF485\uF486\uF487\uF488\uF489\uF48A\uF48B\uF48C"+
-        "\uF48D\uF48E\uF48F\uF490\uF491\uF492\uF493\uF494"+
-        "\uF495\uF496\uF497\uF498\uF499\uF49A\uF49B\uF49C"+
-        "\uF49D\uF49E\uF49F\uF4A0\uF540\uF541\uF542\uF543"+
-        "\uF544\uF545\uF546\uF547\uF548\uF549\uF54A\uF54B"+
-        "\uF54C\uF54D\uF54E\uF54F\uF550\uF551\uF552\uF553"+
-        "\uF554\uF555\uF556\uF557\uF558\uF559\uF55A\uF55B"+
-        "\uF55C\uF55D\uF55E\uF55F\uF560\uF561\uF562\uF563"+
-        "\uF564\uF565\uF566\uF567\uF568\uF569\uF56A\uF56B"+
-        "\uF56C\uF56D\uF56E\uF56F\uF570\uF571\uF572\uF573"+
-        "\uF574\uF575\uF576\uF577\uF578\uF579\uF57A\uF57B"+
-        "\uF57C\uF57D\uF57E\uF580\uF581\uF582\uF583\uF584"+
-        "\uF585\uF586\uF587\uF588\uF589\uF58A\uF58B\uF58C"+
-        "\uF58D\uF58E\uF58F\uF590\uF591\uF592\uF593\uF594"+
-        "\uF595\uF596\uF597\uF598\uF599\uF59A\uF59B\uF59C"+
-        "\uF59D\uF59E\uF59F\uF5A0\uF640\uF641\uF642\uF643"+
-        "\uF644\uF645\uF646\uF647\uF648\uF649\uF64A\uF64B"+
-        "\uF64C\uF64D\uF64E\uF64F\uF650\uF651\uF652\uF653"+
-        "\uF654\uF655\uF656\uF657\uF658\uF659\uF65A\uF65B"+
-        "\uF65C\uF65D\uF65E\uF65F\uF660\uF661\uF662\uF663"+
-        "\uF664\uF665\uF666\uF667\uF668\uF669\uF66A\uF66B"+
-        "\uF66C\uF66D\uF66E\uF66F\uF670\uF671\uF672\uF673"+
-        "\uF674\uF675\uF676\uF677\uF678\uF679\uF67A\uF67B"+
-        "\uF67C\uF67D\uF67E\uF680\uF681\uF682\uF683\uF684"+
-        "\uF685\uF686\uF687\uF688\uF689\uF68A\uF68B\uF68C"+
-        "\uF68D\uF68E\uF68F\uF690\uF691\uF692\uF693\uF694"+
-        "\uF695\uF696\uF697\uF698\uF699\uF69A\uF69B\uF69C"+
-        "\uF69D\uF69E\uF69F\uF6A0\uF740\uF741\uF742\uF743"+
-        "\uF744\uF745\uF746\uF747\uF748\uF749\uF74A\uF74B"+
-        "\uF74C\uF74D\uF74E\uF74F\uF750\uF751\uF752\uF753"+
-        "\uF754\uF755\uF756\uF757\uF758\uF759\uF75A\uF75B"+
-        "\uF75C\uF75D\uF75E\uF75F\uF760\uF761\uF762\uF763"+
-        "\uF764\uF765\uF766\uF767\uF768\uF769\uF76A\uF76B"+
-        "\uF76C\uF76D\uF76E\uF76F\uF770\uF771\uF772\uF773"+
-        "\uF774\uF775\uF776\uF777\uF778\uF779\uF77A\uF77B"+
-        "\uF77C\uF77D\uF77E\uF780\uD3E3\uF781\uF782\uF6CF"+
-        "\uF783\uC2B3\uF6D0\uF784\uF785\uF6D1\uF6D2\uF6D3"+
-        "\uF6D4\uF786\uF787\uF6D6\uF788\uB1AB\uF6D7\uF789"+
-        "\uF6D8\uF6D9\uF6DA\uF78A\uF6DB\uF6DC\uF78B\uF78C"+
-        "\uF78D\uF78E\uF6DD\uF6DE\uCFCA\uF78F\uF6DF\uF6E0"+
-        "\uF6E1\uF6E2\uF6E3\uF6E4\uC0F0\uF6E5\uF6E6\uF6E7"+
-        "\uF6E8\uF6E9\uF790\uF6EA\uF791\uF6EB\uF6EC\uF792"+
-        "\uF6ED\uF6EE\uF6EF\uF6F0\uF6F1\uF6F2\uF6F3\uF6F4"+
-        "\uBEA8\uF793\uF6F5\uF6F6\uF6F7\uF6F8\uF794\uF795"+
-        "\uF796\uF797\uF798\uC8FA\uF6F9\uF6FA\uF6FB\uF6FC"+
-        "\uF799\uF79A\uF6FD\uF6FE\uF7A1\uF7A2\uF7A3\uF7A4"+
-        "\uF7A5\uF79B\uF79C\uF7A6\uF7A7\uF7A8\uB1EE\uF7A9"+
-        "\uF7AA\uF7AB\uF79D\uF79E\uF7AC\uF7AD\uC1DB\uF7AE"+
-        "\uF79F\uF7A0\uF7AF\uF840\uF841\uF842\uF843\uF844"+
-        "\uF845\uF846\uF847\uF848\uF849\uF84A\uF84B\uF84C"+
-        "\uF84D\uF84E\uF84F\uF850\uF851\uF852\uF853\uF854"+
-        "\uF855\uF856\uF857\uF858\uF859\uF85A\uF85B\uF85C"+
-        "\uF85D\uF85E\uF85F\uF860\uF861\uF862\uF863\uF864"+
-        "\uF865\uF866\uF867\uF868\uF869\uF86A\uF86B\uF86C"+
-        "\uF86D\uF86E\uF86F\uF870\uF871\uF872\uF873\uF874"+
-        "\uF875\uF876\uF877\uF878\uF879\uF87A\uF87B\uF87C"+
-        "\uF87D\uF87E\uF880\uF881\uF882\uF883\uF884\uF885"+
-        "\uF886\uF887\uF888\uF889\uF88A\uF88B\uF88C\uF88D"+
-        "\uF88E\uF88F\uF890\uF891\uF892\uF893\uF894\uF895"+
-        "\uF896\uF897\uF898\uF899\uF89A\uF89B\uF89C\uF89D"+
-        "\uF89E\uF89F\uF8A0\uF940\uF941\uF942\uF943\uF944"+
-        "\uF945\uF946\uF947\uF948\uF949\uF94A\uF94B\uF94C"+
-        "\uF94D\uF94E\uF94F\uF950\uF951\uF952\uF953\uF954"+
-        "\uF955\uF956\uF957\uF958\uF959\uF95A\uF95B\uF95C"+
-        "\uF95D\uF95E\uF95F\uF960\uF961\uF962\uF963\uF964"+
-        "\uF965\uF966\uF967\uF968\uF969\uF96A\uF96B\uF96C"+
-        "\uF96D\uF96E\uF96F\uF970\uF971\uF972\uF973\uF974"+
-        "\uF975\uF976\uF977\uF978\uF979\uF97A\uF97B\uF97C"+
-        "\uF97D\uF97E\uF980\uF981\uF982\uF983\uF984\uF985"+
-        "\uF986\uF987\uF988\uF989\uF98A\uF98B\uF98C\uF98D"+
-        "\uF98E\uF98F\uF990\uF991\uF992\uF993\uF994\uF995"+
-        "\uF996\uF997\uF998\uF999\uF99A\uF99B\uF99C\uF99D"+
-        "\uF99E\uF99F\uF9A0\uFA40\uFA41\uFA42\uFA43\uFA44"+
-        "\uFA45\uFA46\uFA47\uFA48\uFA49\uFA4A\uFA4B\uFA4C"+
-        "\uFA4D\uFA4E\uFA4F\uFA50\uFA51\uFA52\uFA53\uFA54"+
-        "\uFA55\uFA56\uFA57\uFA58\uFA59\uFA5A\uFA5B\uFA5C"+
-        "\uFA5D\uFA5E\uFA5F\uFA60\uFA61\uFA62\uFA63\uFA64"+
-        "\uFA65\uFA66\uFA67\uFA68\uFA69\uFA6A\uFA6B\uFA6C"+
-        "\uFA6D\uFA6E\uFA6F\uFA70\uFA71\uFA72\uFA73\uFA74"+
-        "\uFA75\uFA76\uFA77\uFA78\uFA79\uFA7A\uFA7B\uFA7C"+
-        "\uFA7D\uFA7E\uFA80\uFA81\uFA82\uFA83\uFA84\uFA85"+
-        "\uFA86\uFA87\uFA88\uFA89\uFA8A\uFA8B\uFA8C\uFA8D"+
-        "\uFA8E\uFA8F\uFA90\uFA91\uFA92\uFA93\uFA94\uFA95"+
-        "\uFA96\uFA97\uFA98\uFA99\uFA9A\uFA9B\uFA9C\uFA9D"+
-        "\uFA9E\uFA9F\uFAA0\uFB40\uFB41\uFB42\uFB43\uFB44"+
-        "\uFB45\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C"+
-        "\uFB4D\uFB4E\uFB4F\uFB50\uFB51\uFB52\uFB53\uFB54"+
-        "\uFB55\uFB56\uFB57\uFB58\uFB59\uFB5A\uFB5B\uC4F1"+
-        "\uF0AF\uBCA6\uF0B0\uC3F9\uFB5C\uC5B8\uD1BB\uFB5D"+
-        "\uF0B1\uF0B2\uF0B3\uF0B4\uF0B5\uD1BC\uFB5E\uD1EC"+
-        "\uFB5F\uF0B7\uF0B6\uD4A7\uFB60\uCDD2\uF0B8\uF0BA"+
-        "\uF0B9\uF0BB\uF0BC\uFB61\uFB62\uB8EB\uF0BD\uBAE8"+
-        "\uFB63\uF0BE\uF0BF\uBEE9\uF0C0\uB6EC\uF0C1\uF0C2"+
-        "\uF0C3\uF0C4\uC8B5\uF0C5\uF0C6\uFB64\uF0C7\uC5F4"+
-        "\uFB65\uF0C8\uFB66\uFB67\uFB68\uF0C9\uFB69\uF0CA"+
-        "\uF7BD\uFB6A\uF0CB\uF0CC\uF0CD\uFB6B\uF0CE\uFB6C"+
-        "\uFB6D\uFB6E\uFB6F\uF0CF\uBAD7\uFB70\uF0D0\uF0D1"+
-        "\uF0D2\uF0D3\uF0D4\uF0D5\uF0D6\uF0D8\uFB71\uFB72"+
-        "\uD3A5\uF0D7\uFB73\uF0D9\uFB74\uFB75\uFB76\uFB77"+
-        "\uFB78\uFB79\uFB7A\uFB7B\uFB7C\uFB7D\uF5BA\uC2B9"+
-        "\uFB7E\uFB80\uF7E4\uFB81\uFB82\uFB83\uFB84\uF7E5"+
-        "\uF7E6\uFB85\uFB86\uF7E7\uFB87\uFB88\uFB89\uFB8A"+
-        "\uFB8B\uFB8C\uF7E8\uC2B4\uFB8D\uFB8E\uFB8F\uFB90"+
-        "\uFB91\uFB92\uFB93\uFB94\uFB95\uF7EA\uFB96\uF7EB"+
-        "\uFB97\uFB98\uFB99\uFB9A\uFB9B\uFB9C\uC2F3\uFB9D"+
-        "\uFB9E\uFB9F\uFBA0\uFC40\uFC41\uFC42\uFC43\uFC44"+
-        "\uFC45\uFC46\uFC47\uFC48\uF4F0\uFC49\uFC4A\uFC4B"+
-        "\uF4EF\uFC4C\uFC4D\uC2E9\uFC4E\uF7E1\uF7E2\uFC4F"+
-        "\uFC50\uFC51\uFC52\uFC53\uBBC6\uFC54\uFC55\uFC56"+
-        "\uFC57\uD9E4\uFC58\uFC59\uFC5A\uCAF2\uC0E8\uF0A4"+
-        "\uFC5B\uBADA\uFC5C\uFC5D\uC7AD\uFC5E\uFC5F\uFC60"+
-        "\uC4AC\uFC61\uFC62\uF7EC\uF7ED\uF7EE\uFC63\uF7F0"+
-        "\uF7EF\uFC64\uF7F1\uFC65\uFC66\uF7F4\uFC67\uF7F3"+
-        "\uFC68\uF7F2\uF7F5\uFC69\uFC6A\uFC6B\uFC6C\uF7F6"+
-        "\uFC6D\uFC6E\uFC6F\uFC70\uFC71\uFC72\uFC73\uFC74"+
-        "\uFC75\uEDE9\uFC76\uEDEA\uEDEB\uFC77\uF6BC\uFC78"+
-        "\uFC79\uFC7A\uFC7B\uFC7C\uFC7D\uFC7E\uFC80\uFC81"+
-        "\uFC82\uFC83\uFC84\uF6BD\uFC85\uF6BE\uB6A6\uFC86"+
-        "\uD8BE\uFC87\uFC88\uB9C4\uFC89\uFC8A\uFC8B\uD8BB"+
-        "\uFC8C\uDCB1\uFC8D\uFC8E\uFC8F\uFC90\uFC91\uFC92"+
-        "\uCAF3\uFC93\uF7F7\uFC94\uFC95\uFC96\uFC97\uFC98"+
-        "\uFC99\uFC9A\uFC9B\uFC9C\uF7F8\uFC9D\uFC9E\uF7F9"+
-        "\uFC9F\uFCA0\uFD40\uFD41\uFD42\uFD43\uFD44\uF7FB"+
-        "\uFD45\uF7FA\uFD46\uB1C7\uFD47\uF7FC\uF7FD\uFD48"+
-        "\uFD49\uFD4A\uFD4B\uFD4C\uF7FE\uFD4D\uFD4E\uFD4F"+
-        "\uFD50\uFD51\uFD52\uFD53\uFD54\uFD55\uFD56\uFD57"+
-        "\uC6EB\uECB4\uFD58\uFD59\uFD5A\uFD5B\uFD5C\uFD5D"+
-        "\uFD5E\uFD5F\uFD60\uFD61\uFD62\uFD63\uFD64\uFD65"+
-        "\uFD66\uFD67\uFD68\uFD69\uFD6A\uFD6B\uFD6C\uFD6D"+
-        "\uFD6E\uFD6F\uFD70\uFD71\uFD72\uFD73\uFD74\uFD75"+
-        "\uFD76\uFD77\uFD78\uFD79\uFD7A\uFD7B\uFD7C\uFD7D"+
-        "\uFD7E\uFD80\uFD81\uFD82\uFD83\uFD84\uFD85\uB3DD"+
-        "\uF6B3\uFD86\uFD87\uF6B4\uC1E4\uF6B5\uF6B6\uF6B7"+
-        "\uF6B8\uF6B9\uF6BA\uC8A3\uF6BB\uFD88\uFD89\uFD8A"+
-        "\uFD8B\uFD8C\uFD8D\uFD8E\uFD8F\uFD90\uFD91\uFD92"+
-        "\uFD93\uC1FA\uB9A8\uEDE8\uFD94\uFD95\uFD96\uB9EA"+
-        "\uD9DF\uFD97\uFD98\uFD99\uFD9A\uFD9B\u6A63\u6A64"+
-        "\u6A65\u6A66\u6A67\u6A68\u6A69\u6A6A\u6A6B\u6A6C"+
-        "\u6A6D\u6A6E\u6A6F\u6A70\u6A71\u6A72\u6A73\u6A74"+
-        "\u6A75\u6A76\u6A77\u6A78\u6A79\u6A7A\u6A7B\u6A7C"+
-        "\u6A7D\u6A7E\u6A7F\u6A80\u6A81\u6A82\u6A83\u6A84"+
-        "\u6A85\u6A86\u6A87\u6A88\u6A89\u6A8A\u6A8B\u6A8C"+
-        "\u6A8D\u6A8E\u6A8F\u6A90\u6A91\u6A92\u6A93\u6A94"+
-        "\u6A95\u6A96\u6A97\u6A98\u6A99\u6A9A\u6A9B\u6A9C"+
-        "\u6A9D\u6A9E\u6A9F\u6AA0\u6AA1\u6AA2\u6AA3\u6AA4"+
-        "\u6AA5\u6AA6\u6AA7\u6AA8\u6AA9\u6AAA\u6AAB\u6AAC"+
-        "\u6AAD\u6AAE\u6AAF\u6AB0\u6AB1\u6AB2\u6AB3\u6AB4"+
-        "\u6AB5\u6AB6\u6AB7\u6AB8\u6AB9\u6ABA\u6ABB\u6ABC";
-
-    private final static String innerEncoderIndex10=
-        "\u6ABD\u6ABE\u6ABF\u6AC0\u6AC1\u6AC2\u6AC3\u6AC4"+
-        "\u6AC5\u6AC6\u6AC7\u6AC8\u6AC9\u6ACA\u6ACB\u6ACC"+
-        "\u6ACD\u6ACE\u6ACF\u6AD0\u6AD1\u6AD2\u6AD3\u6AD4"+
-        "\u6AD5\u6AD6\u6AD7\u6AD8\u6AD9\u6ADA\u6ADB\u6ADC"+
-        "\u6ADD\u6ADE\u6ADF\u6AE0\u6AE1\u6AE2\u6AE3\u6AE4"+
-        "\u6AE5\u6AE6\u6AE7\u6AE8\u6AE9\u6AEA\u6AEB\u6AEC"+
-        "\u6AED\u6AEE\u6AEF\u6AF0\u6AF1\u6AF2\u6AF3\u6AF4"+
-        "\u6AF5\u6AF6\u6AF7\u6AF8\u6AF9\u6AFA\u6AFB\u6AFC"+
-        "\u6AFD\u6AFE\u6AFF\u6B00\u6B01\u6B02\u6B03\u6B04"+
-        "\u6B05\u6B06\u6B07\u6B08\u6B09\u6B0A\u6B0B\u6B0C"+
-        "\u6B0D\u6B0E\u6B0F\u6B10\u6B11\u6B12\u6B13\u6B14"+
-        "\u6B15\u6B16\u6B17\u6B18\u6B19\u6B1A\u6B1B\u6B1C"+
-        "\u6B1D\u6B1E\u6B1F\u6B20\u6B21\u6B22\u6B23\u6B24"+
-        "\u6B25\u6B26\u6B27\u6B28\u6B29\u6B2A\u6B2B\u6B2C"+
-        "\u6B2D\u6B2E\u6B2F\u6B30\u6B31\u6B32\u6B33\u6B34"+
-        "\u6B35\u6B36\u6B37\u6B38\u6B39\u6B3A\u6B3B\u6B3C"+
-        "\u6B3D\u6B3E\u6B3F\u6B40\u6B41\u6B42\u6B43\u6B44"+
-        "\u6B45\u6B46\u6B47\u6B48\u6B49\u6B4A\u6B4B\u6B4C"+
-        "\u6B4D\u6B4E\u6B4F\u6B50\u6B51\u6B52\u6B53\u6B54"+
-        "\u6B55\u6B56\u6B57\u6B58\u6B59\u6B5A\u6B5B\u6B5C"+
-        "\u6B5D\u6B5E\u6B5F\u6B60\u6B61\u6B62\u6B63\u6B64"+
-        "\u6B65\u6B66\u6B67\u6B68\u6B69\u6B6A\u6B6B\u6B6C"+
-        "\u6B6D\u6B6E\u6B6F\u6B70\u6B71\u6B72\u6B73\u6B74"+
-        "\u6B75\u6B76\u6B77\u6B78\u6B79\u6B7A\u6B7B\u6B7C"+
-        "\u6B7D\u6B7E\u6B7F\u6B80\u6B81\u6B82\u6B83\u6B84"+
-        "\u6B85\u6B86\u6B87\u6B88\u6B89\u6B8A\u6B8B\u6B8C"+
-        "\u6B8D\u6B8E\u6B8F\u6B90\u6B91\u6B92\u6B93\u6B94"+
-        "\u6B95\u6B96\u6B97\u6B98\u6B99\u6B9A\u6B9B\u6B9C"+
-        "\u6B9D\u6B9E\u6B9F\u6BA0\u6BA1\u6BA2\u6BA3\u6BA4"+
-        "\u6BA5\u6BA6\u6BA7\u6BA8\u6BA9\u6BAA\u6BAB\u6BAC"+
-        "\u6BAD\u6BAE\u6BAF\u6BB0\u6BB1\u6BB2\u6BB3\u6BB4"+
-        "\u6BB5\u6BB6\u6BB7\u6BB8\u6BB9\u6BBA\u6BBB\u6BBC"+
-        "\u6BBD\u6BBE\u6BBF\u6BC0\u6BC1\u6BC2\u6BC3\u6BC4"+
-        "\u6BC5\u6BC6\u6BC7\u6BC8\u6BC9\u6BCA\u6BCB\u6BCC"+
-        "\u6BCD\u6BCE\u6BCF\u6BD0\u6BD1\u6BD2\u6BD3\u6BD4"+
-        "\u6BD5\u6BD6\u6BD7\u6BD8\u6BD9\u6BDA\u6BDB\u6BDC"+
-        "\u6BDD\u6BDE\u6BDF\u6BE0\u6BE1\u6BE2\u6BE3\u6BE4"+
-        "\u6BE5\u6BE6\u6BE7\u6BE8\u6BE9\u6BEA\u6BEB\u6BEC"+
-        "\u6BED\u6BEE\u6BEF\u6BF0\u6BF1\u6BF2\u6BF3\u6BF4"+
-        "\u6BF5\u6BF6\u6BF7\u6BF8\u6BF9\u6BFA\u6BFB\u6BFC"+
-        "\u6BFD\u6BFE\u6BFF\u6C00\u6C01\u6C02\u6C03\u6C04"+
-        "\u6C05\u6C06\u6C07\u6C08\u6C09\u6C0A\u6C0B\u6C0C"+
-        "\u6C0D\u6C0E\u6C0F\u6C10\u6C11\u6C12\u6C13\u6C14"+
-        "\u6C15\u6C16\u6C17\u6C18\u6C19\u6C1A\u6C1B\u6C1C"+
-        "\u6C1D\u6C1E\u6C1F\u6C20\u6C21\u6C22\u6C23\u6C24"+
-        "\u6C25\u6C26\u6C27\u6C28\u6C29\u6C2A\u6C2B\u6C2C"+
-        "\u6C2D\u6C2E\u6C2F\u6C30\u6C31\u6C32\u6C33\u6C34"+
-        "\u6C35\u6C36\u6C37\u6C38\u6C39\u6C3A\u6C3B\u6C3C"+
-        "\u6C3D\u6C3E\u6C3F\u6C40\u6C41\u6C42\u6C43\u6C44"+
-        "\u6C45\u6C46\u6C47\u6C48\u6C49\u6C4A\u6C4B\u6C4C"+
-        "\u6C4D\u6C4E\u6C4F\u6C50\u6C51\u6C52\u6C53\u6C54"+
-        "\u6C55\u6C56\u6C57\u6C58\u6C59\u6C5A\u6C5B\u6C5C"+
-        "\u6C5D\u6C5E\u6C5F\u6C60\u6C61\u6C62\u6C63\u6C64"+
-        "\u6C65\u6C66\u6C67\u6C68\u6C69\u6C6A\u6C6B\u6C6C"+
-        "\u6C6D\u6C6E\u6C6F\u6C70\u6C71\u6C72\u6C73\u6C74"+
-        "\u6C75\u6C76\u6C77\u6C78\u6C79\u6C7A\u6C7B\u6C7C"+
-        "\u6C7D\u6C7E\u6C7F\u6C80\u6C81\u6C82\u6C83\u6C84"+
-        "\u6C85\u6C86\u6C87\u6C88\u6C89\u6C8A\u6C8B\u6C8C"+
-        "\u6C8D\u6C8E\u6C8F\u6C90\u6C91\u6C92\u6C93\u6C94"+
-        "\u6C95\u6C96\u6C97\u6C98\u6C99\u6C9A\u6C9B\u6C9C"+
-        "\u6C9D\u6C9E\u6C9F\u6CA0\u6CA1\u6CA2\u6CA3\u6CA4"+
-        "\u6CA5\u6CA6\u6CA7\u6CA8\u6CA9\u6CAA\u6CAB\u6CAC"+
-        "\u6CAD\u6CAE\u6CAF\u6CB0\u6CB1\u6CB2\u6CB3\u6CB4"+
-        "\u6CB5\u6CB6\u6CB7\u6CB8\u6CB9\u6CBA\u6CBB\u6CBC"+
-        "\u6CBD\u6CBE\u6CBF\u6CC0\u6CC1\u6CC2\u6CC3\u6CC4"+
-        "\u6CC5\u6CC6\u6CC7\u6CC8\u6CC9\u6CCA\u6CCB\u6CCC"+
-        "\u6CCD\u6CCE\u6CCF\u6CD0\u6CD1\u6CD2\u6CD3\u6CD4"+
-        "\u6CD5\u6CD6\u6CD7\u6CD8\u6CD9\u6CDA\u6CDB\u6CDC"+
-        "\u6CDD\u6CDE\u6CDF\u6CE0\u6CE1\u6CE2\u6CE3\u6CE4"+
-        "\u6CE5\u6CE6\u6CE7\u6CE8\u6CE9\u6CEA\u6CEB\u6CEC"+
-        "\u6CED\u6CEE\u6CEF\u6CF0\u6CF1\u6CF2\u6CF3\u6CF4"+
-        "\u6CF5\u6CF6\u6CF7\u6CF8\u6CF9\u6CFA\u6CFB\u6CFC"+
-        "\u6CFD\u6CFE\u6CFF\u6D00\u6D01\u6D02\u6D03\u6D04"+
-        "\u6D05\u6D06\u6D07\u6D08\u6D09\u6D0A\u6D0B\u6D0C"+
-        "\u6D0D\u6D0E\u6D0F\u6D10\u6D11\u6D12\u6D13\u6D14"+
-        "\u6D15\u6D16\u6D17\u6D18\u6D19\u6D1A\u6D1B\u6D1C"+
-        "\u6D1D\u6D1E\u6D1F\u6D20\u6D21\u6D22\u6D23\u6D24"+
-        "\u6D25\u6D26\u6D27\u6D28\u6D29\u6D2A\u6D2B\u6D2C"+
-        "\u6D2D\u6D2E\u6D2F\u6D30\u6D31\u6D32\u6D33\u6D34"+
-        "\u6D35\u6D36\u6D37\u6D38\u6D39\u6D3A\u6D3B\u6D3C"+
-        "\u6D3D\u6D3E\u6D3F\u6D40\u6D41\u6D42\u6D43\u6D44"+
-        "\u6D45\u6D46\u6D47\u6D48\u6D49\u6D4A\u6D4B\u6D4C"+
-        "\u6D4D\u6D4E\u6D4F\u6D50\u6D51\u6D52\u6D53\u6D54"+
-        "\u6D55\u6D56\u6D57\u6D58\u6D59\u6D5A\u6D5B\u6D5C"+
-        "\u6D5D\u6D5E\u6D5F\u6D60\u6D61\u6D62\u6D63\u6D64"+
-        "\u6D65\u6D66\u6D67\u6D68\u6D69\u6D6A\u6D6B\u6D6C"+
-        "\u6D6D\u6D6E\u6D6F\u6D70\u6D71\u6D72\u6D73\u6D74"+
-        "\u6D75\u6D76\u6D77\u6D78\u6D79\u6D7A\u6D7B\u6D7C"+
-        "\u6D7D\u6D7E\u6D7F\u6D80\u6D81\u6D82\u6D83\u6D84"+
-        "\u6D85\u6D86\u6D87\u6D88\u6D89\u6D8A\u6D8B\u6D8C"+
-        "\u6D8D\u6D8E\u6D8F\u6D90\u6D91\u6D92\u6D93\u6D94"+
-        "\u6D95\u6D96\u6D97\u6D98\u6D99\u6D9A\u6D9B\u6D9C"+
-        "\u6D9D\u6D9E\u6D9F\u6DA0\u6DA1\u6DA2\u6DA3\u6DA4"+
-        "\u6DA5\u6DA6\u6DA7\u6DA8\u6DA9\u6DAA\u6DAB\u6DAC"+
-        "\u6DAD\u6DAE\u6DAF\u6DB0\u6DB1\u6DB2\u6DB3\u6DB4"+
-        "\u6DB5\u6DB6\u6DB7\u6DB8\u6DB9\u6DBA\u6DBB\u6DBC"+
-        "\u6DBD\u6DBE\u6DBF\u6DC0\u6DC1\u6DC2\u6DC3\u6DC4"+
-        "\u6DC5\u6DC6\u6DC7\u6DC8\u6DC9\u6DCA\u6DCB\u6DCC"+
-        "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD1\u6DD2\u6DD3\u6DD4"+
-        "\u6DD5\u6DD6\u6DD7\u6DD8\u6DD9\u6DDA\u6DDB\u6DDC"+
-        "\u6DDD\u6DDE\u6DDF\u6DE0\u6DE1\u6DE2\u6DE3\u6DE4"+
-        "\u6DE5\u6DE6\u6DE7\u6DE8\u6DE9\u6DEA\u6DEB\u6DEC"+
-        "\u6DED\u6DEE\u6DEF\u6DF0\u6DF1\u6DF2\u6DF3\u6DF4"+
-        "\u6DF5\u6DF6\u6DF7\u6DF8\u6DF9\u6DFA\u6DFB\u6DFC"+
-        "\u6DFD\u6DFE\u6DFF\u6E00\u6E01\u6E02\u6E03\u6E04"+
-        "\u6E05\u6E06\u6E07\u6E08\u6E09\u6E0A\u6E0B\u6E0C"+
-        "\u6E0D\u6E0E\u6E0F\u6E10\u6E11\u6E12\u6E13\u6E14"+
-        "\u6E15\u6E16\u6E17\u6E18\u6E19\u6E1A\u6E1B\u6E1C"+
-        "\u6E1D\u6E1E\u6E1F\u6E20\u6E21\u6E22\u6E23\u6E24"+
-        "\u6E25\u6E26\u6E27\u6E28\u6E29\u6E2A\u6E2B\u6E2C"+
-        "\u6E2D\u6E2E\u6E2F\u6E30\u6E31\u6E32\u6E33\u6E34"+
-        "\u6E35\u6E36\u6E37\u6E38\u6E39\u6E3A\u6E3B\u6E3C"+
-        "\u6E3D\u6E3E\u6E3F\u6E40\u6E41\u6E42\u6E43\u6E44"+
-        "\u6E45\u6E46\u6E47\u6E48\u6E49\u6E4A\u6E4B\u6E4C"+
-        "\u6E4D\u6E4E\u6E4F\u6E50\u6E51\u6E52\u6E53\u6E54"+
-        "\u6E55\u6E56\u6E57\u6E58\u6E59\u6E5A\u6E5B\u6E5C"+
-        "\u6E5D\u6E5E\u6E5F\u6E60\u6E61\u6E62\u6E63\u6E64"+
-        "\u6E65\u6E66\u6E67\u6E68\u6E69\u6E6A\u6E6B\u6E6C"+
-        "\u6E6D\u6E6E\u6E6F\u6E70\u6E71\u6E72\u6E73\u6E74"+
-        "\u6E75\u6E76\u6E77\u6E78\u6E79\u6E7A\u6E7B\u6E7C"+
-        "\u6E7D\u6E7E\u6E7F\u6E80\u6E81\u6E82\u6E83\u6E84"+
-        "\u6E85\u6E86\u6E87\u6E88\u6E89\u6E8A\u6E8B\u6E8C"+
-        "\u6E8D\u6E8E\u6E8F\u6E90\u6E91\u6E92\u6E93\u6E94"+
-        "\u6E95\u6E96\u6E97\u6E98\u6E99\u6E9A\u6E9B\u6E9C"+
-        "\u6E9D\u6E9E\u6E9F\u6EA0\u6EA1\u6EA2\u6EA3\u6EA4"+
-        "\u6EA5\u6EA6\u6EA7\u6EA8\u6EA9\u6EAA\u6EAB\u6EAC"+
-        "\u6EAD\u6EAE\u6EAF\u6EB0\u6EB1\u6EB2\u6EB3\u6EB4"+
-        "\u6EB5\u6EB6\u6EB7\u6EB8\u6EB9\u6EBA\u6EBB\u6EBC"+
-        "\u6EBD\u6EBE\u6EBF\u6EC0\u6EC1\u6EC2\u6EC3\u6EC4"+
-        "\u6EC5\u6EC6\u6EC7\u6EC8\u6EC9\u6ECA\u6ECB\u6ECC"+
-        "\u6ECD\u6ECE\u6ECF\u6ED0\u6ED1\u6ED2\u6ED3\u6ED4"+
-        "\u6ED5\u6ED6\u6ED7\u6ED8\u6ED9\u6EDA\u6EDB\u6EDC"+
-        "\u6EDD\u6EDE\u6EDF\u6EE0\u6EE1\u6EE2\u6EE3\u6EE4"+
-        "\u6EE5\u6EE6\u6EE7\u6EE8\u6EE9\u6EEA\u6EEB\u6EEC"+
-        "\u6EED\u6EEE\u6EEF\u6EF0\u6EF1\u6EF2\u6EF3\u6EF4"+
-        "\u6EF5\u6EF6\u6EF7\u6EF8\u6EF9\u6EFA\u6EFB\u6EFC"+
-        "\u6EFD\u6EFE\u6EFF\u6F00\u6F01\u6F02\u6F03\u6F04"+
-        "\u6F05\u6F06\u6F07\u6F08\u6F09\u6F0A\u6F0B\u6F0C"+
-        "\u6F0D\u6F0E\u6F0F\u6F10\u6F11\u6F12\u6F13\u6F14"+
-        "\u6F15\u6F16\u6F17\u6F18\u6F19\u6F1A\u6F1B\u6F1C"+
-        "\u6F1D\u6F1E\u6F1F\u6F20\u6F21\u6F22\u6F23\u6F24"+
-        "\u6F25\u6F26\u6F27\u6F28\u6F29\u6F2A\u6F2B\u6F2C"+
-        "\u6F2D\u6F2E\u6F2F\u6F30\u6F31\u6F32\u6F33\u6F34"+
-        "\u6F35\u6F36\u6F37\u6F38\u6F39\u6F3A\u6F3B\u6F3C"+
-        "\u6F3D\u6F3E\u6F3F\u6F40\u6F41\u6F42\u6F43\u6F44"+
-        "\u6F45\u6F46\u6F47\u6F48\u6F49\u6F4A\u6F4B\u6F4C"+
-        "\u6F4D\u6F4E\u6F4F\u6F50\u6F51\u6F52\u6F53\u6F54"+
-        "\u6F55\u6F56\u6F57\u6F58\u6F59\u6F5A\u6F5B\u6F5C"+
-        "\u6F5D\u6F5E\u6F5F\u6F60\u6F61\u6F62\u6F63\u6F64"+
-        "\u6F65\u6F66\u6F67\u6F68\u6F69\u6F6A\u6F6B\u6F6C"+
-        "\u6F6D\u6F6E\u6F6F\u6F70\u6F71\u6F72\u6F73\u6F74"+
-        "\u6F75\u6F76\u6F77\u6F78\u6F79\u6F7A\u6F7B\u6F7C"+
-        "\u6F7D\u6F7E\u6F7F\u6F80\u6F81\u6F82\u6F83\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uAAA1\uAAA2\uAAA3\uAAA4\uAAA5\uAAA6\uAAA7\uAAA8"+
-        "\uAAA9\uAAAA\uAAAB\uAAAC\uAAAD\uAAAE\uAAAF\uAAB0"+
-        "\uAAB1\uAAB2\uAAB3\uAAB4\uAAB5\uAAB6\uAAB7\uAAB8"+
-        "\uAAB9\uAABA\uAABB\uAABC\uAABD\uAABE\uAABF\uAAC0"+
-        "\uAAC1\uAAC2\uAAC3\uAAC4\uAAC5\uAAC6\uAAC7\uAAC8"+
-        "\uAAC9\uAACA\uAACB\uAACC\uAACD\uAACE\uAACF\uAAD0"+
-        "\uAAD1\uAAD2\uAAD3\uAAD4\uAAD5\uAAD6\uAAD7\uAAD8"+
-        "\uAAD9\uAADA\uAADB\uAADC\uAADD\uAADE\uAADF\uAAE0"+
-        "\uAAE1\uAAE2\uAAE3\uAAE4\uAAE5\uAAE6\uAAE7\uAAE8"+
-        "\uAAE9\uAAEA\uAAEB\uAAEC\uAAED\uAAEE\uAAEF\uAAF0"+
-        "\uAAF1\uAAF2\uAAF3\uAAF4\uAAF5\uAAF6\uAAF7\uAAF8"+
-        "\uAAF9\uAAFA\uAAFB\uAAFC\uAAFD\uAAFE\uABA1\uABA2"+
-        "\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA"+
-        "\uABAB\uABAC\uABAD\uABAE\uABAF\uABB0\uABB1\uABB2"+
-        "\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA"+
-        "\uABBB\uABBC\uABBD\uABBE\uABBF\uABC0\uABC1\uABC2"+
-        "\uABC3\uABC4\uABC5\uABC6\uABC7\uABC8\uABC9\uABCA"+
-        "\uABCB\uABCC\uABCD\uABCE\uABCF\uABD0\uABD1\uABD2"+
-        "\uABD3\uABD4\uABD5\uABD6\uABD7\uABD8\uABD9\uABDA"+
-        "\uABDB\uABDC\uABDD\uABDE\uABDF\uABE0\uABE1\uABE2"+
-        "\uABE3\uABE4\uABE5\uABE6\uABE7\uABE8\uABE9\uABEA"+
-        "\uABEB\uABEC\uABED\uABEE\uABEF\uABF0\uABF1\uABF2"+
-        "\uABF3\uABF4\uABF5\uABF6\uABF7\uABF8\uABF9\uABFA"+
-        "\uABFB\uABFC\uABFD\uABFE\uACA1\uACA2\uACA3\uACA4"+
-        "\uACA5\uACA6\uACA7\uACA8\uACA9\uACAA\uACAB\uACAC"+
-        "\uACAD\uACAE\uACAF\uACB0\uACB1\uACB2\uACB3\uACB4"+
-        "\uACB5\uACB6\uACB7\uACB8\uACB9\uACBA\uACBB\uACBC"+
-        "\uACBD\uACBE\uACBF\uACC0\uACC1\uACC2\uACC3\uACC4"+
-        "\uACC5\uACC6\uACC7\uACC8\uACC9\uACCA\uACCB\uACCC"+
-        "\uACCD\uACCE\uACCF\uACD0\uACD1\uACD2\uACD3\uACD4"+
-        "\uACD5\uACD6\uACD7\uACD8\uACD9\uACDA\uACDB\uACDC"+
-        "\uACDD\uACDE\uACDF\uACE0\uACE1\uACE2\uACE3\uACE4"+
-        "\uACE5\uACE6\uACE7\uACE8\uACE9\uACEA\uACEB\uACEC"+
-        "\uACED\uACEE\uACEF\uACF0\uACF1\uACF2\uACF3\uACF4"+
-        "\uACF5\uACF6\uACF7\uACF8\uACF9\uACFA\uACFB\uACFC"+
-        "\uACFD\uACFE\uADA1\uADA2\uADA3\uADA4\uADA5\uADA6"+
-        "\uADA7\uADA8\uADA9\uADAA\uADAB\uADAC\uADAD\uADAE"+
-        "\uADAF\uADB0\uADB1\uADB2\uADB3\uADB4\uADB5\uADB6"+
-        "\uADB7\uADB8\uADB9\uADBA\uADBB\uADBC\uADBD\uADBE"+
-        "\uADBF\uADC0\uADC1\uADC2\uADC3\uADC4\uADC5\uADC6"+
-        "\uADC7\uADC8\uADC9\uADCA\uADCB\uADCC\uADCD\uADCE"+
-        "\uADCF\uADD0\uADD1\uADD2\uADD3\uADD4\uADD5\uADD6"+
-        "\uADD7\uADD8\uADD9\uADDA\uADDB\uADDC\uADDD\uADDE"+
-        "\uADDF\uADE0\uADE1\uADE2\uADE3\uADE4\uADE5\uADE6"+
-        "\uADE7\uADE8\uADE9\uADEA\uADEB\uADEC\uADED\uADEE"+
-        "\uADEF\uADF0\uADF1\uADF2\uADF3\uADF4\uADF5\uADF6"+
-        "\uADF7\uADF8\uADF9\uADFA\uADFB\uADFC\uADFD\uADFE"+
-        "\uAEA1\uAEA2\uAEA3\uAEA4\uAEA5\uAEA6\uAEA7\uAEA8"+
-        "\uAEA9\uAEAA\uAEAB\uAEAC\uAEAD\uAEAE\uAEAF\uAEB0"+
-        "\uAEB1\uAEB2\uAEB3\uAEB4\uAEB5\uAEB6\uAEB7\uAEB8"+
-        "\uAEB9\uAEBA\uAEBB\uAEBC\uAEBD\uAEBE\uAEBF\uAEC0"+
-        "\uAEC1\uAEC2\uAEC3\uAEC4\uAEC5\uAEC6\uAEC7\uAEC8"+
-        "\uAEC9\uAECA\uAECB\uAECC\uAECD\uAECE\uAECF\uAED0"+
-        "\uAED1\uAED2\uAED3\uAED4\uAED5\uAED6\uAED7\uAED8"+
-        "\uAED9\uAEDA\uAEDB\uAEDC\uAEDD\uAEDE\uAEDF\uAEE0"+
-        "\uAEE1\uAEE2\uAEE3\uAEE4\uAEE5\uAEE6\uAEE7\uAEE8"+
-        "\uAEE9\uAEEA\uAEEB\uAEEC\uAEED\uAEEE\uAEEF\uAEF0"+
-        "\uAEF1\uAEF2\uAEF3\uAEF4\uAEF5\uAEF6\uAEF7\uAEF8"+
-        "\uAEF9\uAEFA\uAEFB\uAEFC\uAEFD\uAEFE\uAFA1\uAFA2"+
-        "\uAFA3\uAFA4\uAFA5\uAFA6\uAFA7\uAFA8\uAFA9\uAFAA"+
-        "\uAFAB\uAFAC\uAFAD\uAFAE\uAFAF\uAFB0\uAFB1\uAFB2"+
-        "\uAFB3\uAFB4\uAFB5\uAFB6\uAFB7\uAFB8\uAFB9\uAFBA"+
-        "\uAFBB\uAFBC\uAFBD\uAFBE\uAFBF\uAFC0\uAFC1\uAFC2"+
-        "\uAFC3\uAFC4\uAFC5\uAFC6\uAFC7\uAFC8\uAFC9\uAFCA"+
-        "\uAFCB\uAFCC\uAFCD\uAFCE\uAFCF\uAFD0\uAFD1\uAFD2"+
-        "\uAFD3\uAFD4\uAFD5\uAFD6\uAFD7\uAFD8\uAFD9\uAFDA"+
-        "\uAFDB\uAFDC\uAFDD\uAFDE\uAFDF\uAFE0\uAFE1\uAFE2"+
-        "\uAFE3\uAFE4\uAFE5\uAFE6\uAFE7\uAFE8\uAFE9\uAFEA"+
-        "\uAFEB\uAFEC\uAFED\uAFEE\uAFEF\uAFF0\uAFF1\uAFF2"+
-        "\uAFF3\uAFF4\uAFF5\uAFF6\uAFF7\uAFF8\uAFF9\uAFFA"+
-        "\uAFFB\uAFFC\uAFFD\uAFFE\uF8A1\uF8A2\uF8A3\uF8A4"+
-        "\uF8A5\uF8A6\uF8A7\uF8A8\uF8A9\uF8AA\uF8AB\uF8AC"+
-        "\uF8AD\uF8AE\uF8AF\uF8B0\uF8B1\uF8B2\uF8B3\uF8B4"+
-        "\uF8B5\uF8B6\uF8B7\uF8B8\uF8B9\uF8BA\uF8BB\uF8BC"+
-        "\uF8BD\uF8BE\uF8BF\uF8C0\uF8C1\uF8C2\uF8C3\uF8C4"+
-        "\uF8C5\uF8C6\uF8C7\uF8C8\uF8C9\uF8CA\uF8CB\uF8CC"+
-        "\uF8CD\uF8CE\uF8CF\uF8D0\uF8D1\uF8D2\uF8D3\uF8D4"+
-        "\uF8D5\uF8D6\uF8D7\uF8D8\uF8D9\uF8DA\uF8DB\uF8DC"+
-        "\uF8DD\uF8DE\uF8DF\uF8E0\uF8E1\uF8E2\uF8E3\uF8E4"+
-        "\uF8E5\uF8E6\uF8E7\uF8E8\uF8E9\uF8EA\uF8EB\uF8EC"+
-        "\uF8ED\uF8EE\uF8EF\uF8F0\uF8F1\uF8F2\uF8F3\uF8F4"+
-        "\uF8F5\uF8F6\uF8F7\uF8F8\uF8F9\uF8FA\uF8FB\uF8FC"+
-        "\uF8FD\uF8FE\uF9A1\uF9A2\uF9A3\uF9A4\uF9A5\uF9A6"+
-        "\uF9A7\uF9A8\uF9A9\uF9AA\uF9AB\uF9AC\uF9AD\uF9AE"+
-        "\uF9AF\uF9B0\uF9B1\uF9B2\uF9B3\uF9B4\uF9B5\uF9B6"+
-        "\uF9B7\uF9B8\uF9B9\uF9BA\uF9BB\uF9BC\uF9BD\uF9BE"+
-        "\uF9BF\uF9C0\uF9C1\uF9C2\uF9C3\uF9C4\uF9C5\uF9C6"+
-        "\uF9C7\uF9C8\uF9C9\uF9CA\uF9CB\uF9CC\uF9CD\uF9CE"+
-        "\uF9CF\uF9D0\uF9D1\uF9D2\uF9D3\uF9D4\uF9D5\uF9D6"+
-        "\uF9D7\uF9D8\uF9D9\uF9DA\uF9DB\uF9DC\uF9DD\uF9DE"+
-        "\uF9DF\uF9E0\uF9E1\uF9E2\uF9E3\uF9E4\uF9E5\uF9E6"+
-        "\uF9E7\uF9E8\uF9E9\uF9EA\uF9EB\uF9EC\uF9ED\uF9EE"+
-        "\uF9EF\uF9F0\uF9F1\uF9F2\uF9F3\uF9F4\uF9F5\uF9F6"+
-        "\uF9F7\uF9F8\uF9F9\uF9FA\uF9FB\uF9FC\uF9FD\uF9FE"+
-        "\uFAA1\uFAA2\uFAA3\uFAA4\uFAA5\uFAA6\uFAA7\uFAA8"+
-        "\uFAA9\uFAAA\uFAAB\uFAAC\uFAAD\uFAAE\uFAAF\uFAB0"+
-        "\uFAB1\uFAB2\uFAB3\uFAB4\uFAB5\uFAB6\uFAB7\uFAB8"+
-        "\uFAB9\uFABA\uFABB\uFABC\uFABD\uFABE\uFABF\uFAC0"+
-        "\uFAC1\uFAC2\uFAC3\uFAC4\uFAC5\uFAC6\uFAC7\uFAC8"+
-        "\uFAC9\uFACA\uFACB\uFACC\uFACD\uFACE\uFACF\uFAD0"+
-        "\uFAD1\uFAD2\uFAD3\uFAD4\uFAD5\uFAD6\uFAD7\uFAD8"+
-        "\uFAD9\uFADA\uFADB\uFADC\uFADD\uFADE\uFADF\uFAE0"+
-        "\uFAE1\uFAE2\uFAE3\uFAE4\uFAE5\uFAE6\uFAE7\uFAE8"+
-        "\uFAE9\uFAEA\uFAEB\uFAEC\uFAED\uFAEE\uFAEF\uFAF0"+
-        "\uFAF1\uFAF2\uFAF3\uFAF4\uFAF5\uFAF6\uFAF7\uFAF8"+
-        "\uFAF9\uFAFA\uFAFB\uFAFC\uFAFD\uFAFE\uFBA1\uFBA2"+
-        "\uFBA3\uFBA4\uFBA5\uFBA6\uFBA7\uFBA8\uFBA9\uFBAA"+
-        "\uFBAB\uFBAC\uFBAD\uFBAE\uFBAF\uFBB0\uFBB1\uFBB2"+
-        "\uFBB3\uFBB4\uFBB5\uFBB6\uFBB7\uFBB8\uFBB9\uFBBA"+
-        "\uFBBB\uFBBC\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2"+
-        "\uFBC3\uFBC4\uFBC5\uFBC6\uFBC7\uFBC8\uFBC9\uFBCA"+
-        "\uFBCB\uFBCC\uFBCD\uFBCE\uFBCF\uFBD0\uFBD1\uFBD2"+
-        "\uFBD3\uFBD4\uFBD5\uFBD6\uFBD7\uFBD8\uFBD9\uFBDA"+
-        "\uFBDB\uFBDC\uFBDD\uFBDE\uFBDF\uFBE0\uFBE1\uFBE2"+
-        "\uFBE3\uFBE4\uFBE5\uFBE6\uFBE7\uFBE8\uFBE9\uFBEA"+
-        "\uFBEB\uFBEC\uFBED\uFBEE\uFBEF\uFBF0\uFBF1\uFBF2"+
-        "\uFBF3\uFBF4\uFBF5\uFBF6\uFBF7\uFBF8\uFBF9\uFBFA"+
-        "\uFBFB\uFBFC\uFBFD\uFBFE\uFCA1\uFCA2\uFCA3\uFCA4"+
-        "\uFCA5\uFCA6\uFCA7\uFCA8\uFCA9\uFCAA\uFCAB\uFCAC"+
-        "\uFCAD\uFCAE\uFCAF\uFCB0\uFCB1\uFCB2\uFCB3\uFCB4"+
-        "\uFCB5\uFCB6\uFCB7\uFCB8\uFCB9\uFCBA\uFCBB\uFCBC"+
-        "\uFCBD\uFCBE\uFCBF\uFCC0\uFCC1\uFCC2\uFCC3\uFCC4"+
-        "\uFCC5\uFCC6\uFCC7\uFCC8\uFCC9\uFCCA\uFCCB\uFCCC"+
-        "\uFCCD\uFCCE\uFCCF\uFCD0\uFCD1\uFCD2\uFCD3\uFCD4"+
-        "\uFCD5\uFCD6\uFCD7\uFCD8\uFCD9\uFCDA\uFCDB\uFCDC"+
-        "\uFCDD\uFCDE\uFCDF\uFCE0\uFCE1\uFCE2\uFCE3\uFCE4"+
-        "\uFCE5\uFCE6\uFCE7\uFCE8\uFCE9\uFCEA\uFCEB\uFCEC"+
-        "\uFCED\uFCEE\uFCEF\uFCF0\uFCF1\uFCF2\uFCF3\uFCF4"+
-        "\uFCF5\uFCF6\uFCF7\uFCF8\uFCF9\uFCFA\uFCFB\uFCFC"+
-        "\uFCFD\uFCFE\uFDA1\uFDA2\uFDA3\uFDA4\uFDA5\uFDA6"+
-        "\uFDA7\uFDA8\uFDA9\uFDAA\uFDAB\uFDAC\uFDAD\uFDAE"+
-        "\uFDAF\uFDB0\uFDB1\uFDB2\uFDB3\uFDB4\uFDB5\uFDB6"+
-        "\uFDB7\uFDB8\uFDB9\uFDBA\uFDBB\uFDBC\uFDBD\uFDBE"+
-        "\uFDBF\uFDC0\uFDC1\uFDC2\uFDC3\uFDC4\uFDC5\uFDC6"+
-        "\uFDC7\uFDC8\uFDC9\uFDCA\uFDCB\uFDCC\uFDCD\uFDCE"+
-        "\uFDCF\uFDD0\uFDD1\uFDD2\uFDD3\uFDD4\uFDD5\uFDD6"+
-        "\uFDD7\uFDD8\uFDD9\uFDDA\uFDDB\uFDDC\uFDDD\uFDDE"+
-        "\uFDDF\uFDE0\uFDE1\uFDE2\uFDE3\uFDE4\uFDE5\uFDE6"+
-        "\uFDE7\uFDE8\uFDE9\uFDEA\uFDEB\uFDEC\uFDED\uFDEE"+
-        "\uFDEF\uFDF0\uFDF1\uFDF2\uFDF3\uFDF4\uFDF5\uFDF6"+
-        "\uFDF7\uFDF8\uFDF9\uFDFA\uFDFB\uFDFC\uFDFD\uFDFE"+
-        "\uFEA1\uFEA2\uFEA3\uFEA4\uFEA5\uFEA6\uFEA7\uFEA8"+
-        "\uFEA9\uFEAA\uFEAB\uFEAC\uFEAD\uFEAE\uFEAF\uFEB0"+
-        "\uFEB1\uFEB2\uFEB3\uFEB4\uFEB5\uFEB6\uFEB7\uFEB8"+
-        "\uFEB9\uFEBA\uFEBB\uFEBC\uFEBD\uFEBE\uFEBF\uFEC0"+
-        "\uFEC1\uFEC2\uFEC3\uFEC4\uFEC5\uFEC6\uFEC7\uFEC8"+
-        "\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0"+
-        "\uFED1\uFED2\uFED3\uFED4\uFED5\uFED6\uFED7\uFED8"+
-        "\uFED9\uFEDA\uFEDB\uFEDC\uFEDD\uFEDE\uFEDF\uFEE0"+
-        "\uFEE1\uFEE2\uFEE3\uFEE4\uFEE5\uFEE6\uFEE7\uFEE8"+
-        "\uFEE9\uFEEA\uFEEB\uFEEC\uFEED\uFEEE\uFEEF\uFEF0"+
-        "\uFEF1\uFEF2\uFEF3\uFEF4\uFEF5\uFEF6\uFEF7\uFEF8"+
-        "\uFEF9\uFEFA\uFEFB\uFEFC\uFEFD\uFEFE\uA140\uA141"+
-        "\uA142\uA143\uA144\uA145\uA146\uA147\uA148\uA149"+
-        "\uA14A\uA14B\uA14C\uA14D\uA14E\uA14F\uA150\uA151"+
-        "\uA152\uA153\uA154\uA155\uA156\uA157\uA158\uA159"+
-        "\uA15A\uA15B\uA15C\uA15D\uA15E\uA15F\uA160\uA161"+
-        "\uA162\uA163\uA164\uA165\uA166\uA167\uA168\uA169"+
-        "\uA16A\uA16B\uA16C\uA16D\uA16E\uA16F\uA170\uA171"+
-        "\uA172\uA173\uA174\uA175\uA176\uA177\uA178\uA179"+
-        "\uA17A\uA17B\uA17C\uA17D\uA17E\uA180\uA181\uA182"+
-        "\uA183\uA184\uA185\uA186\uA187\uA188\uA189\uA18A"+
-        "\uA18B\uA18C\uA18D\uA18E\uA18F\uA190\uA191\uA192"+
-        "\uA193\uA194\uA195\uA196\uA197\uA198\uA199\uA19A"+
-        "\uA19B\uA19C\uA19D\uA19E\uA19F\uA1A0\uA240\uA241"+
-        "\uA242\uA243\uA244\uA245\uA246\uA247\uA248\uA249"+
-        "\uA24A\uA24B\uA24C\uA24D\uA24E\uA24F\uA250\uA251"+
-        "\uA252\uA253\uA254\uA255\uA256\uA257\uA258\uA259"+
-        "\uA25A\uA25B\uA25C\uA25D\uA25E\uA25F\uA260\uA261"+
-        "\uA262\uA263\uA264\uA265\uA266\uA267\uA268\uA269"+
-        "\uA26A\uA26B\uA26C\uA26D\uA26E\uA26F\uA270\uA271"+
-        "\uA272\uA273\uA274\uA275\uA276\uA277\uA278\uA279"+
-        "\uA27A\uA27B\uA27C\uA27D\uA27E\uA280\uA281\uA282"+
-        "\uA283\uA284\uA285\uA286\uA287\uA288\uA289\uA28A"+
-        "\uA28B\uA28C\uA28D\uA28E\uA28F\uA290\uA291\uA292"+
-        "\uA293\uA294\uA295\uA296\uA297\uA298\uA299\uA29A"+
-        "\uA29B\uA29C\uA29D\uA29E\uA29F\uA2A0\uA340\uA341"+
-        "\uA342\uA343\uA344\uA345\uA346\uA347\uA348\uA349"+
-        "\uA34A\uA34B\uA34C\uA34D\uA34E\uA34F\uA350\uA351"+
-        "\uA352\uA353\uA354\uA355\uA356\uA357\uA358\uA359"+
-        "\uA35A\uA35B\uA35C\uA35D\uA35E\uA35F\uA360\uA361"+
-        "\uA362\uA363\uA364\uA365\uA366\uA367\uA368\uA369"+
-        "\uA36A\uA36B\uA36C\uA36D\uA36E\uA36F\uA370\uA371"+
-        "\uA372\uA373\uA374\uA375\uA376\uA377\uA378\uA379"+
-        "\uA37A\uA37B\uA37C\uA37D\uA37E\uA380\uA381\uA382"+
-        "\uA383\uA384\uA385\uA386\uA387\uA388\uA389\uA38A"+
-        "\uA38B\uA38C\uA38D\uA38E\uA38F\uA390\uA391\uA392"+
-        "\uA393\uA394\uA395\uA396\uA397\uA398\uA399\uA39A"+
-        "\uA39B\uA39C\uA39D\uA39E\uA39F\uA3A0\uA440\uA441"+
-        "\uA442\uA443\uA444\uA445\uA446\uA447\uA448\uA449"+
-        "\uA44A\uA44B\uA44C\uA44D\uA44E\uA44F\uA450\uA451"+
-        "\uA452\uA453\uA454\uA455\uA456\uA457\uA458\uA459"+
-        "\uA45A\uA45B\uA45C\uA45D\uA45E\uA45F\uA460\uA461"+
-        "\uA462\uA463\uA464\uA465\uA466\uA467\uA468\uA469"+
-        "\uA46A\uA46B\uA46C\uA46D\uA46E\uA46F\uA470\uA471"+
-        "\uA472\uA473\uA474\uA475\uA476\uA477\uA478\uA479"+
-        "\uA47A\uA47B\uA47C\uA47D\uA47E\uA480\uA481\uA482"+
-        "\uA483\uA484\uA485\uA486\uA487\uA488\uA489\uA48A"+
-        "\uA48B\uA48C\uA48D\uA48E\uA48F\uA490\uA491\uA492"+
-        "\uA493\uA494\uA495\uA496\uA497\uA498\uA499\uA49A"+
-        "\uA49B\uA49C\uA49D\uA49E\uA49F\uA4A0\uA540\uA541"+
-        "\uA542\uA543\uA544\uA545\uA546\uA547\uA548\uA549"+
-        "\uA54A\uA54B\uA54C\uA54D\uA54E\uA54F\uA550\uA551"+
-        "\uA552\uA553\uA554\uA555\uA556\uA557\uA558\uA559"+
-        "\uA55A\uA55B\uA55C\uA55D\uA55E\uA55F\uA560\uA561"+
-        "\uA562\uA563\uA564\uA565\uA566\uA567\uA568\uA569"+
-        "\uA56A\uA56B\uA56C\uA56D\uA56E\uA56F\uA570\uA571"+
-        "\uA572\uA573\uA574\uA575\uA576\uA577\uA578\uA579"+
-        "\uA57A\uA57B\uA57C\uA57D\uA57E\uA580\uA581\uA582"+
-        "\uA583\uA584\uA585\uA586\uA587\uA588\uA589\uA58A"+
-        "\uA58B\uA58C\uA58D\uA58E\uA58F\uA590\uA591\uA592"+
-        "\uA593\uA594\uA595\uA596\uA597\uA598\uA599\uA59A"+
-        "\uA59B\uA59C\uA59D\uA59E\uA59F\uA5A0\uA640\uA641"+
-        "\uA642\uA643\uA644\uA645\uA646\uA647\uA648\uA649"+
-        "\uA64A\uA64B\uA64C\uA64D\uA64E\uA64F\uA650\uA651"+
-        "\uA652\uA653\uA654\uA655\uA656\uA657\uA658\uA659"+
-        "\uA65A\uA65B\uA65C\uA65D\uA65E\uA65F\uA660\uA661"+
-        "\uA662\uA663\uA664\uA665\uA666\uA667\uA668\uA669"+
-        "\uA66A\uA66B\uA66C\uA66D\uA66E\uA66F\uA670\uA671"+
-        "\uA672\uA673\uA674\uA675\uA676\uA677\uA678\uA679"+
-        "\uA67A\uA67B\uA67C\uA67D\uA67E\uA680\uA681\uA682"+
-        "\uA683\uA684\uA685\uA686\uA687\uA688\uA689\uA68A"+
-        "\uA68B\uA68C\uA68D\uA68E\uA68F\uA690\uA691\uA692"+
-        "\uA693\uA694\uA695\uA696\uA697\uA698\uA699\uA69A"+
-        "\uA69B\uA69C\uA69D\uA69E\uA69F\uA6A0\uA740\uA741"+
-        "\uA742\uA743\uA744\uA745\uA746\uA747\uA748\uA749"+
-        "\uA74A\uA74B\uA74C\uA74D\uA74E\uA74F\uA750\uA751"+
-        "\uA752\uA753\uA754\uA755\uA756\uA757\uA758\uA759"+
-        "\uA75A\uA75B\uA75C\uA75D\uA75E\uA75F\uA760\uA761"+
-        "\uA762\uA763\uA764\uA765\uA766\uA767\uA768\uA769"+
-        "\uA76A\uA76B\uA76C\uA76D\uA76E\uA76F\uA770\uA771"+
-        "\uA772\uA773\uA774\uA775\uA776\uA777\uA778\uA779"+
-        "\uA77A\uA77B\uA77C\uA77D\uA77E\uA780\uA781\uA782"+
-        "\uA783\uA784\uA785\uA786\uA787\uA788\uA789\uA78A"+
-        "\uA78B\uA78C\uA78D\uA78E\uA78F\uA790\uA791\uA792"+
-        "\uA793\uA794\uA795\uA796\uA797\uA798\uA799\uA79A"+
-        "\uA79B\uA79C\uA79D\uA79E\uA79F\uA7A0\uA2AB\uA2AC"+
-        "\uA2AD\uA2AE\uA2AF\uA2B0\u2000\uA2E4\uA2EF\uA2F0"+
-        "\uA2FD\uA2FE\uA4F4\uA4F5\uA4F6\uA4F7\uA4F8\uA4F9"+
-        "\uA4FA\uA4FB\uA4FC\uA4FD\uA4FE\uA5F7\uA5F8\uA5F9"+
-        "\uA5FA\uA5FB\uA5FC\uA5FD\uA5FE\uA6B9\uA6BA\uA6BB"+
-        "\uA6BC\uA6BD\uA6BE\uA6BF\uA6C0\uA6D9\uA6DA\uA6DB"+
-        "\uA6DC\uA6DD\uA6DE\uA6DF\uA6EC\uA6ED\uA6F3\uA6F6"+
-        "\uA6F7\uA6F8\uA6F9\uA6FA\uA6FB\uA6FC\uA6FD\uA6FE"+
-        "\uA7C2\uA7C3\uA7C4\uA7C5\uA7C6\uA7C7\uA7C8\uA7C9"+
-        "\uA7CA\uA7CB\uA7CC\uA7CD\uA7CE\uA7CF\uA7D0\uA7F2"+
-        "\uA7F3\uA7F4\uA7F5\uA7F6\uA7F7\uA7F8\uA7F9\uA7FA"+
-        "\uA7FB\uA7FC\uA7FD\uA7FE\uA896\uA897\uA898\uA899"+
-        "\uA89A\uA89B\uA89C\uA89D\uA89E\uA89F\uA8A0\uA8BC"+
-        "\u2001\uA8C1\uA8C2\uA8C3\uA8C4\uA8EA\uA8EB\uA8EC"+
-        "\uA8ED\uA8EE\uA8EF\uA8F0\uA8F1\uA8F2\uA8F3\uA8F4"+
-        "\uA8F5\uA8F6\uA8F7\uA8F8\uA8F9\uA8FA\uA8FB\uA8FC"+
-        "\uA8FD\uA8FE\uA958\uA95B\uA95D\uA95E\uA95F\u2002"+
-        "\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A"+
-        "\u200B\u200C\u200D\u200E\uA997\uA998\uA999\uA99A"+
-        "\uA99B\uA99C\uA99D\uA99E\uA99F\uA9A0\uA9A1\uA9A2"+
-        "\uA9A3\uA9F0\uA9F1\uA9F2\uA9F3\uA9F4\uA9F5\uA9F6"+
-        "\uA9F7\uA9F8\uA9F9\uA9FA\uA9FB\uA9FC\uA9FD\uA9FE"+
-        "\uD7FA\uD7FB\uD7FC\uD7FD\uD7FE\u200F\uFE51\uFE52"+
-        "\uFE53\u2010\u2011\u2012\u2013\u2014\uFE59\u2015"+
-        "\u2016\u2017\u2018\u2019\u201A\u201B\uFE61\u201C"+
-        "\u201D\u201E\u201F\uFE66\uFE67\u2020\u2021\u2022"+
-        "\u2023\uFE6C\uFE6D\u2024\u2025\u2026\u2027\u2028"+
-        "\u2029\u202A\u202B\uFE76\u202C\u202D\u202E\u202F"+
-        "\u2030\u2031\u2032\uFE7E\u2033\u2034\u2035\u2036"+
-        "\u2037\u2038\u2039\u203A\u203B\u203C\u203D\u203E"+
-        "\u203F\u2040\u2041\u2042\uFE90\uFE91\u2043\u2044"+
-        "\u2045\u2046\u2047\u2048\u2049\u204A\u204B\u204C"+
-        "\u204D\u204E\u204F\u2050\uFEA0\u2051\u2052\u2053"+
-        "\u2054\u2055\u2056\u2057\u2058\u2059\u205A\u205B"+
-        "\u205C\u205D\u205E\u205F\u2060\u2061\u2062\u2063"+
-        "\u2064\u2065\u2066\u2067\u2068\u2069\u206A\u206B"+
-        "\u206C\u206D\u206E\u206F\u2070\u2071\u2072\u2073"+
-        "\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B"+
-        "\u207C\u207D\u207E\u207F\u2080\u2081\u2082\u2083"+
-        "\u2084\u2085\u2086\u2087\u2088\u2089\u208A\u208B"+
-        "\u208C\u208D\u208E\u208F\u2090\u2091\u2092\u2093"+
-        "\u2094\u2095\u2096\u2097\u2098\u2099\u209A\u209B"+
-        "\u209C\u209D\u209E\u209F\u20A0\u20A1\u20A2\u20A3"+
-        "\u20A4\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB"+
-        "\u20AC\u20AD\u20AE\u20AF\u20B0\u20B1\u20B2\u20B3"+
-        "\u20B4\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB"+
-        "\u20BC\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3"+
-        "\u20C4\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB"+
-        "\u20CC\u20CD\u20CE\u20CF\u20D0\u20D1\u20D2\u20D3"+
-        "\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB"+
-        "\u20DC\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3"+
-        "\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB"+
-        "\u20EC\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2\u20F3"+
-        "\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA\u20FB"+
-        "\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102\u2103"+
-        "\u2104\u2105\u2106\u2107\u2108\u2109\u210A\u210B"+
-        "\u210C\u210D\u210E\u210F\u2110\u2111\u2112\u2113"+
-        "\u2114\u2115\u2116\u2117\u2118\u2119\u211A\u211B"+
-        "\u211C\u211D\u211E\u211F\u2120\u2121\u2122\u2123"+
-        "\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B"+
-        "\u212C\u212D\u212E\u212F\u2130\u2131\u2132\u2133"+
-        "\u2134\u2135\u2136\u2137\u2138\u2139\u213A\u213B"+
-        "\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143"+
-        "\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B"+
-        "\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153"+
-        "\u2154\u2155\u2156\u2157\u2158\u2159\u215A\u215B"+
-        "\u215C\u215D\u215E\u215F\u2160\u2161\u2162\u2163"+
-        "\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B"+
-        "\u216C\u216D\u216E\u216F\u2170\u2171\u2172\u2173"+
-        "\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B"+
-        "\u217C\u217D\u217E\u217F\u2180\u2181\u2182\u2183"+
-        "\u2184\u2185\u2186\u2187\u2188\u2189\u218A\u218B"+
-        "\u218C\u218D\u218E\u218F\u2190\u2191\u2192\u2193"+
-        "\u2194\u2195\u2196\u2197\u2198\u2199\u219A\u219B"+
-        "\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2\u21A3"+
-        "\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA\u21AB"+
-        "\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1\u21B2\u21B3"+
-        "\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9\u21BA\u21BB"+
-        "\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1\u21C2\u21C3"+
-        "\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9\u21CA\u21CB"+
-        "\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1\u21D2\u21D3"+
-        "\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9\u21DA\u21DB"+
-        "\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1\u21E2\u21E3"+
-        "\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9\u21EA\u21EB"+
-        "\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1\u21F2\u21F3"+
-        "\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9\u21FA\u21FB"+
-        "\u21FC\u21FD\u21FE\u21FF\u2200\u2201\u2202\u2203"+
-        "\u2204\u2205\u2206\u2207\u2208\u2209\u220A\u220B"+
-        "\u220C\u220D\u220E\u220F\u2210\u2211\u2212\u2213"+
-        "\u2214\u2215\u2216\u2217\u2218\u2219\u221A\u221B"+
-        "\u221C\u221D\u221E\u221F\u2220\u2221\u2222\u2223"+
-        "\u2224\u2225\u2226\u2227\u2228\u2229\u222A\u222B"+
-        "\u222C\u222D\u222E\u222F\u2230\u2231\u2232\u2233"+
-        "\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B"+
-        "\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243"+
-        "\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B"+
-        "\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253"+
-        "\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B"+
-        "\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263"+
-        "\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B"+
-        "\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273"+
-        "\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B"+
-        "\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283"+
-        "\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B"+
-        "\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293"+
-        "\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B"+
-        "\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3"+
-        "\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB"+
-        "\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3"+
-        "\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB"+
-        "\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2\u22C3"+
-        "\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB"+
-        "\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3"+
-        "\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB"+
-        "\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3"+
-        "\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB";
-
-    private final static String innerEncoderIndex11=
-        "\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3"+
-        "\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB"+
-        "\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302\u2303"+
-        "\u2304\u2305\u2306\u2307\u2308\u2309\u230A\u230B"+
-        "\u230C\u230D\u230E\u230F\u2310\u2311\u2312\u2313"+
-        "\u2314\u2315\u2316\u2317\u2318\u2319\u231A\u231B"+
-        "\u231C\u231D\u231E\u231F\u2320\u2321\u2322\u2323"+
-        "\u2324\u2325\u2326\u2327\u2328\u2329\u232A\u232B"+
-        "\u232C\u232D\u232E\u232F\u2330\u2331\u2332\u2333"+
-        "\u2334\u2335\u2336\u2337\u2338\u2339\u233A\u233B"+
-        "\u233C\u233D\u233E\u233F\u2340\u2341\u2342\u2343"+
-        "\u2344\u2345\u2346\u2347\u2348\u2349\u234A\u234B"+
-        "\u234C\u234D\u234E\u234F\u2350\u2351\u2352\u2353"+
-        "\u2354\u2355\u2356\u2357\u2358\u2359\u235A\u235B"+
-        "\u235C\u235D\u235E\u235F\u2360\u2361\u2362\u2363"+
-        "\u2364\u2365\u2366\u2367\u2368\u2369\u236A\u236B"+
-        "\u236C\u236D\u236E\u236F\u2370\u2371\u2372\u2373"+
-        "\u2374\u2375\u2376\u2377\u2378\u2379\u237A\u237B"+
-        "\u237C\u237D\u237E\u237F\u2380\u2381\u2382\u2383"+
-        "\u2384\u2385\u2386\u2387\u2388\u2389\u238A\u238B"+
-        "\u238C\u238D\u238E\u238F\u2390\u2391\u2392\u2393"+
-        "\u2394\u2395\u2396\u2397\u2398\u2399\u239A\u239B"+
-        "\u239C\u239D\u239E\u239F\u23A0\u23A1\u23A2\u23A3"+
-        "\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9\u23AA\u23AB"+
-        "\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1\u23B2\u23B3"+
-        "\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9\u23BA\u23BB"+
-        "\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1\u23C2\u23C3"+
-        "\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9\u23CA\u23CB"+
-        "\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1\u23D2\u23D3"+
-        "\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9\u23DA\u23DB"+
-        "\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1\u23E2\u23E3"+
-        "\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9\u23EA\u23EB"+
-        "\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1\u23F2\u23F3"+
-        "\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9\u23FA\u23FB"+
-        "\u23FC\u23FD\u23FE\u23FF\u2400\u2401\u2402\u2403"+
-        "\u2404\u2405\u2406\u2407\u2408\u2409\u240A\u240B"+
-        "\u240C\u240D\u240E\u240F\u2410\u2411\u2412\u2413"+
-        "\u2414\u2415\u2416\u2417\u2418\u2419\u241A\u241B"+
-        "\u241C\u241D\u241E\u241F\u2420\u2421\u2422\u2423"+
-        "\u2424\u2425\u2426\u2427\u2428\u2429\u242A\u242B"+
-        "\u242C\u242D\u242E\u242F\u2430\u2431\u2432\u2433"+
-        "\u2434\u2435\u2436\u2437\u2438\u2439\u243A\u243B"+
-        "\u243C\u243D\u243E\u243F\u2440\u2441\u2442\u2443"+
-        "\u2444\u2445\u2446\u2447\u2448\u2449\u244A\u244B"+
-        "\u244C\u244D\u244E\u244F\u2450\u2451\u2452\u2453"+
-        "\u2454\u2455\u2456\u2457\u2458\u2459\u245A\u245B"+
-        "\u245C\u245D\u245E\u245F\u2460\u2461\u2462\u2463"+
-        "\u2464\u2465\u2466\u2467\u2468\u2469\u246A\u246B"+
-        "\u246C\u246D\u246E\u246F\u2470\u2471\u2472\u2473"+
-        "\u2474\u2475\u2476\u2477\u2478\u2479\u247A\u247B"+
-        "\u247C\u247D\u247E\u247F\u2480\u2481\u2482\u2483"+
-        "\u2484\u2485\u2486\u2487\u2488\u2489\u248A\u248B"+
-        "\u248C\u248D\u248E\u248F\u2490\u2491\u2492\u2493"+
-        "\u2494\u2495\u2496\u2497\u2498\u2499\u249A\u249B"+
-        "\u249C\u249D\u249E\u249F\u24A0\u24A1\u24A2\u24A3"+
-        "\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9\u24AA\u24AB"+
-        "\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1\u24B2\u24B3"+
-        "\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB"+
-        "\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3"+
-        "\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB"+
-        "\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1\u24D2\u24D3"+
-        "\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA\u24DB"+
-        "\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3"+
-        "\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u24EA\u24EB"+
-        "\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1\u24F2\u24F3"+
-        "\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9\u24FA\u24FB"+
-        "\u24FC\u24FD\u24FE\u24FF\u2500\u2501\u2502\u2503"+
-        "\u2504\u2505\u2506\u2507\u2508\u2509\u250A\u250B"+
-        "\u250C\u250D\u250E\u250F\u2510\u2511\u2512\u2513"+
-        "\u2514\u2515\u2516\u2517\u2518\u2519\u251A\u251B"+
-        "\u251C\u251D\u251E\u251F\u2520\u2521\u2522\u2523"+
-        "\u2524\u2525\u2526\u2527\u2528\u2529\u252A\u252B"+
-        "\u252C\u252D\u252E\u252F\u2530\u2531\u2532\u2533"+
-        "\u2534\u2535\u2536\u2537\u2538\u2539\u253A\u253B"+
-        "\u253C\u253D\u253E\u253F\u2540\u2541\u2542\u2543"+
-        "\u2544\u2545\u2546\u2547\u2548\u2549\u254A\u254B"+
-        "\u254C\u254D\u254E\u254F\u2550\u2551\u2552\u2553"+
-        "\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B"+
-        "\u255C\u255D\u255E\u255F\u2560\u2561\u2562\u2563"+
-        "\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B"+
-        "\u256C\u256D\u256E\u256F\u2570\u2571\u2572\u2573"+
-        "\u2574\u2575\u2576\u2577\u2578\u2579\u257A\u257B"+
-        "\u257C\u257D\u257E\u257F\u2580\u2581\u2582\u2583"+
-        "\u2584\u2585\u2586\u2587\u2588\u2589\u258A\u258B"+
-        "\u258C\u258D\u258E\u258F\u2590\u2591\u2592\u2593"+
-        "\u2594\u2595\u2596\u2597\u2598\u2599\u259A\u259B"+
-        "\u259C\u259D\u259E\u259F\u25A0\u25A1\u25A2\u25A3"+
-        "\u25A4\u25A5\u25A6\u25A7\u25A8\u25A9\u25AA\u25AB"+
-        "\u25AC\u25AD\u25AE\u25AF\u25B0\u25B1\u25B2\u25B3"+
-        "\u25B4\u25B5\u25B6\u25B7\u25B8\u25B9\u25BA\u25BB"+
-        "\u25BC\u25BD\u25BE\u25BF\u25C0\u25C1\u25C2\u25C3"+
-        "\u25C4\u25C5\u25C6\u25C7\u25C8\u25C9\u25CA\u25CB"+
-        "\u25CC\u25CD\u25CE\u25CF\u25D0\u25D1\u25D2\u25D3"+
-        "\u25D4\u25D5\u25D6\u25D7\u25D8\u25D9\u25DA\u25DB"+
-        "\u25DC\u25DD\u25DE\u25DF\u25E0\u25E1\u25E2\u25E3"+
-        "\u25E4\u25E5\u25E6\u25E7\u25E8\u25E9\u25EA\u25EB"+
-        "\u25EC\u25ED\u25EE\u25EF\u25F0\u25F1\u25F2\u25F3"+
-        "\u25F4\u25F5\u25F6\u25F7\u25F8\u25F9\u25FA\u25FB"+
-        "\u25FC\u25FD\u25FE\u25FF\u2600\u2601\u2602\u2603"+
-        "\u2604\u2605\u2606\u2607\u2608\u2609\u260A\u260B"+
-        "\u260C\u260D\u260E\u260F\u2610\u2611\u2612\u2613"+
-        "\u2614\u2615\u2616\u2617\u2618\u2619\u261A\u261B"+
-        "\u261C\u261D\u261E\u261F\u2620\u2621\u2622\u2623"+
-        "\u2624\u2625\u2626\u2627\u2628\u2629\u262A\u262B"+
-        "\u262C\u262D\u262E\u262F\u2630\u2631\u2632\u2633"+
-        "\u2634\u2635\u2636\u2637\u2638\u2639\u263A\u263B"+
-        "\u263C\u263D\u263E\u263F\u2640\u2641\u2642\u2643"+
-        "\u2644\u2645\u2646\u2647\u2648\u2649\u264A\u264B"+
-        "\u264C\u264D\u264E\u264F\u2650\u2651\u2652\u2653"+
-        "\u2654\u2655\u2656\u2657\u2658\u2659\u265A\u265B"+
-        "\u265C\u265D\u265E\u265F\u2660\u2661\u2662\u2663"+
-        "\u2664\u2665\u2666\u2667\u2668\u2669\u266A\u266B"+
-        "\u266C\u266D\u266E\u266F\u2670\u2671\u2672\u2673"+
-        "\u2674\u2675\u2676\u2677\u2678\u2679\u267A\u267B"+
-        "\u267C\u267D\u267E\u267F\u2680\u2681\u2682\u2683"+
-        "\u2684\u2685\u2686\u2687\u2688\u2689\u268A\u268B"+
-        "\u268C\u268D\u268E\u268F\u2690\u2691\u2692\u2693"+
-        "\u2694\u2695\u2696\u2697\u2698\u2699\u269A\u269B"+
-        "\u269C\u269D\u269E\u269F\u26A0\u26A1\u26A2\u26A3"+
-        "\u26A4\u26A5\u26A6\u26A7\u26A8\u26A9\u26AA\u26AB"+
-        "\u26AC\u26AD\u26AE\u26AF\u26B0\u26B1\u26B2\u26B3"+
-        "\u26B4\u26B5\u26B6\u26B7\u26B8\u26B9\u26BA\u26BB"+
-        "\u26BC\u26BD\u26BE\u26BF\u26C0\u26C1\u26C2\u26C3"+
-        "\u26C4\u26C5\u26C6\u26C7\u26C8\u26C9\u26CA\u26CB"+
-        "\u26CC\u26CD\u26CE\u26CF\u26D0\u26D1\u26D2\u26D3"+
-        "\u26D4\u26D5\u26D6\u26D7\u26D8\u26D9\u26DA\u26DB"+
-        "\u26DC\u26DD\u26DE\u26DF\u26E0\u26E1\u26E2\u26E3"+
-        "\u26E4\u26E5\u26E6\u26E7\u26E8\u26E9\u26EA\u26EB"+
-        "\u26EC\u26ED\u26EE\u26EF\u26F0\u26F1\u26F2\u26F3"+
-        "\u26F4\u26F5\u26F6\u26F7\u26F8\u26F9\u26FA\u26FB"+
-        "\u26FC\u26FD\u26FE\u26FF\u2700\u2701\u2702\u2703"+
-        "\u2704\u2705\u2706\u2707\u2708\u2709\u270A\u270B"+
-        "\u270C\u270D\u270E\u270F\u2710\u2711\u2712\u2713"+
-        "\u2714\u2715\u2716\u2717\u2718\u2719\u271A\u271B"+
-        "\u271C\u271D\u271E\u271F\u2720\u2721\u2722\u2723"+
-        "\u2724\u2725\u2726\u2727\u2728\u2729\u272A\u272B"+
-        "\u272C\u272D\u272E\u272F\u2730\u2731\u2732\u2733"+
-        "\u2734\u2735\u2736\u2737\u2738\u2739\u273A\u273B"+
-        "\u273C\u273D\u273E\u273F\u2740\u2741\u2742\u2743"+
-        "\u2744\u2745\u2746\u2747\u2748\u2749\u274A\u274B"+
-        "\u274C\u274D\u274E\u274F\u2750\u2751\u2752\u2753"+
-        "\u2754\u2755\u2756\u2757\u2758\u2759\u275A\u275B"+
-        "\u275C\u275D\u275E\u275F\u2760\u2761\u2762\u2763"+
-        "\u2764\u2765\u2766\u2767\u2768\u2769\u276A\u276B"+
-        "\u276C\u276D\u276E\u276F\u2770\u2771\u2772\u2773"+
-        "\u2774\u2775\u2776\u2777\u2778\u2779\u277A\u277B"+
-        "\u277C\u277D\u277E\u277F\u2780\u2781\u2782\u2783"+
-        "\u2784\u2785\u2786\u2787\u2788\u2789\u278A\u278B"+
-        "\u278C\u278D\u278E\u278F\u2790\u2791\u2792\u2793"+
-        "\u2794\u2795\u2796\u2797\u2798\u2799\u279A\u279B"+
-        "\u279C\u279D\u279E\u279F\u27A0\u27A1\u27A2\u27A3"+
-        "\u27A4\u27A5\u27A6\u27A7\u27A8\u27A9\u27AA\u27AB"+
-        "\u27AC\u27AD\u27AE\u27AF\u27B0\u27B1\u27B2\u27B3"+
-        "\u27B4\u27B5\u27B6\u27B7\u27B8\u27B9\u27BA\u27BB"+
-        "\u27BC\u27BD\u27BE\u27BF\u27C0\u27C1\u27C2\u27C3"+
-        "\u27C4\u27C5\u27C6\u27C7\u27C8\u27C9\u27CA\u27CB"+
-        "\u27CC\u27CD\u27CE\u27CF\u27D0\u27D1\u27D2\u27D3"+
-        "\u27D4\u27D5\u27D6\u27D7\u27D8\u27D9\u27DA\u27DB"+
-        "\u27DC\u27DD\u27DE\u27DF\u27E0\u27E1\u27E2\u27E3"+
-        "\u27E4\u27E5\u27E6\u27E7\u27E8\u27E9\u27EA\u27EB"+
-        "\u27EC\u27ED\u27EE\u27EF\u27F0\u27F1\u27F2\u27F3"+
-        "\u27F4\u27F5\u27F6\u27F7\u27F8\u27F9\u27FA\u27FB"+
-        "\u27FC\u27FD\u27FE\u27FF\u2800\u2801\u2802\u2803"+
-        "\u2804\u2805\u2806\u2807\u2808\u2809\u280A\u280B"+
-        "\u280C\u280D\u280E\u280F\u2810\u2811\u2812\u2813"+
-        "\u2814\u2815\u2816\u2817\u2818\u2819\u281A\u281B"+
-        "\u281C\u281D\u281E\u281F\u2820\u2821\u2822\u2823"+
-        "\u2824\u2825\u2826\u2827\u2828\u2829\u282A\u282B"+
-        "\u282C\u282D\u282E\u282F\u2830\u2831\u2832\u2833"+
-        "\u2834\u2835\u2836\u2837\u2838\u2839\u283A\u283B"+
-        "\u283C\u283D\u283E\u283F\u2840\u2841\u2842\u2843"+
-        "\u2844\u2845\u2846\u2847\u2848\u2849\u284A\u284B"+
-        "\u284C\u284D\u284E\u284F\u2850\u2851\u2852\u2853"+
-        "\u2854\u2855\u2856\u2857\u2858\u2859\u285A\u285B"+
-        "\u285C\u285D\u285E\u285F\u2860\u2861\u2862\u2863"+
-        "\u2864\u2865\u2866\u2867\u2868\u2869\u286A\u286B"+
-        "\u286C\u286D\u286E\u286F\u2870\u2871\u2872\u2873"+
-        "\u2874\u2875\u2876\u2877\u2878\u2879\u287A\u287B"+
-        "\u287C\u287D\u287E\u287F\u2880\u2881\u2882\u2883"+
-        "\u2884\u2885\u2886\u2887\u2888\u2889\u288A\u288B"+
-        "\u288C\u288D\u288E\u288F\u2890\u2891\u2892\u2893"+
-        "\u2894\u2895\u2896\u2897\u2898\u2899\u289A\u289B"+
-        "\u289C\u289D\u289E\u289F\u28A0\u28A1\u28A2\u28A3"+
-        "\u28A4\u28A5\u28A6\u28A7\u28A8\u28A9\u28AA\u28AB"+
-        "\u28AC\u28AD\u28AE\u28AF\u28B0\u28B1\u28B2\u28B3"+
-        "\u28B4\u28B5\u28B6\u28B7\u28B8\u28B9\u28BA\u28BB"+
-        "\u28BC\u28BD\u28BE\u28BF\u28C0\u28C1\u28C2\u28C3"+
-        "\u28C4\u28C5\u28C6\u28C7\u28C8\u28C9\u28CA\u28CB"+
-        "\u28CC\u28CD\u28CE\u28CF\u28D0\u28D1\u28D2\u28D3"+
-        "\u28D4\u28D5\u28D6\u28D7\u28D8\u28D9\u28DA\u28DB"+
-        "\u28DC\u28DD\u28DE\u28DF\u28E0\u28E1\u28E2\u28E3"+
-        "\u28E4\u28E5\u28E6\u28E7\u28E8\u28E9\u28EA\u28EB"+
-        "\u28EC\u28ED\u28EE\u28EF\u28F0\u28F1\u28F2\u28F3"+
-        "\u28F4\u28F5\u28F6\u28F7\u28F8\u28F9\u28FA\u28FB"+
-        "\u28FC\u28FD\u28FE\u28FF\u2900\u2901\u2902\u2903"+
-        "\u2904\u2905\u2906\u2907\u2908\u2909\u290A\u290B"+
-        "\u290C\u290D\u290E\u290F\u2910\u2911\u2912\u2913"+
-        "\u2914\u2915\u2916\u2917\u2918\u2919\u291A\u291B"+
-        "\u291C\u291D\u291E\u291F\u2920\u2921\u2922\u2923"+
-        "\u2924\u2925\u2926\u2927\u2928\u2929\u292A\u292B"+
-        "\u292C\u292D\u292E\u292F\u2930\u2931\u2932\u2933"+
-        "\u2934\u2935\u2936\u2937\u2938\u2939\u293A\u293B"+
-        "\u293C\u293D\u293E\u293F\u2940\u2941\u2942\u2943"+
-        "\u2944\u2945\u2946\u2947\u2948\u2949\u294A\u294B"+
-        "\u294C\u294D\u294E\u294F\u2950\u2951\u2952\u2953"+
-        "\u2954\u2955\u2956\u2957\u2958\u2959\u295A\u295B"+
-        "\u295C\u295D\u295E\u295F\u2960\u2961\u2962\u2963"+
-        "\u2964\u2965\u2966\u2967\u2968\u2969\u296A\u296B"+
-        "\u296C\u296D\u296E\u296F\u2970\u2971\u2972\u2973"+
-        "\u2974\u2975\u2976\u2977\u2978\u2979\u297A\u297B"+
-        "\u297C\u297D\u297E\u297F\u2980\u2981\u2982\u2983"+
-        "\u2984\u2985\u2986\u2987\u2988\u2989\u298A\u298B"+
-        "\u298C\u298D\u298E\u298F\u2990\u2991\u2992\u2993"+
-        "\u2994\u2995\u2996\u2997\u2998\u2999\u299A\u299B"+
-        "\u299C\u299D\u299E\u299F\u29A0\u29A1\u29A2\u29A3"+
-        "\u29A4\u29A5\u29A6\u29A7\u29A8\u29A9\u29AA\u29AB"+
-        "\u29AC\u29AD\u29AE\u29AF\u29B0\u29B1\u29B2\u29B3"+
-        "\u29B4\u29B5\u29B6\u29B7\u29B8\u29B9\u29BA\u29BB"+
-        "\u29BC\u29BD\u29BE\u29BF\u29C0\u29C1\u29C2\u29C3"+
-        "\u29C4\u29C5\u29C6\u29C7\u29C8\u29C9\u29CA\u29CB"+
-        "\u29CC\u29CD\u29CE\u29CF\u29D0\u29D1\u29D2\u29D3"+
-        "\u29D4\u29D5\u29D6\u29D7\u29D8\u29D9\u29DA\u29DB"+
-        "\u29DC\u29DD\u29DE\u29DF\u29E0\u29E1\u29E2\u29E3"+
-        "\u29E4\u29E5\u29E6\u29E7\u29E8\u29E9\u29EA\u29EB"+
-        "\u29EC\u29ED\u29EE\u29EF\u29F0\u29F1\u29F2\u29F3"+
-        "\u29F4\u29F5\u29F6\u29F7\u29F8\u29F9\u29FA\u29FB"+
-        "\u29FC\u29FD\u29FE\u29FF\u2A00\u2A01\u2A02\u2A03"+
-        "\u2A04\u2A05\u2A06\u2A07\u2A08\u2A09\u2A0A\u2A0B"+
-        "\u2A0C\u2A0D\u2A0E\u2A0F\u2A10\u2A11\u2A12\u2A13"+
-        "\u2A14\u2A15\u2A16\u2A17\u2A18\u2A19\u2A1A\u2A1B"+
-        "\u2A1C\u2A1D\u2A1E\u2A1F\u2A20\u2A21\u2A22\u2A23"+
-        "\u2A24\u2A25\u2A26\u2A27\u2A28\u2A29\u2A2A\u2A2B"+
-        "\u2A2C\u2A2D\u2A2E\u2A2F\u2A30\u2A31\u2A32\u2A33"+
-        "\u2A34\u2A35\u2A36\u2A37\u2A38\u2A39\u2A3A\u2A3B"+
-        "\u2A3C\u2A3D\u2A3E\u2A3F\u2A40\u2A41\u2A42\u2A43"+
-        "\u2A44\u2A45\u2A46\u2A47\u2A48\u2A49\u2A4A\u2A4B"+
-        "\u2A4C\u2A4D\u2A4E\u2A4F\u2A50\u2A51\u2A52\u2A53"+
-        "\u2A54\u2A55\u2A56\u2A57\u2A58\u2A59\u2A5A\u2A5B"+
-        "\u2A5C\u2A5D\u2A5E\u2A5F\u2A60\u2A61\u2A62\u2A63"+
-        "\u2A64\u2A65\u2A66\u2A67\u2A68\u2A69\u2A6A\u2A6B"+
-        "\u2A6C\u2A6D\u2A6E\u2A6F\u2A70\u2A71\u2A72\u2A73"+
-        "\u2A74\u2A75\u2A76\u2A77\u2A78\u2A79\u2A7A\u2A7B"+
-        "\u2A7C\u2A7D\u2A7E\u2A7F\u2A80\u2A81\u2A82\u2A83"+
-        "\u2A84\u2A85\u2A86\u2A87\u2A88\u2A89\u2A8A\u2A8B"+
-        "\u2A8C\u2A8D\u2A8E\u2A8F\u2A90\u2A91\u2A92\u2A93"+
-        "\u2A94\u2A95\u2A96\u2A97\u2A98\u2A99\u2A9A\u2A9B"+
-        "\u2A9C\u2A9D\u2A9E\u2A9F\u2AA0\u2AA1\u2AA2\u2AA3"+
-        "\u2AA4\u2AA5\u2AA6\u2AA7\u2AA8\u2AA9\u2AAA\u2AAB"+
-        "\u2AAC\u2AAD\u2AAE\u2AAF\u2AB0\u2AB1\u2AB2\u2AB3"+
-        "\u2AB4\u2AB5\u2AB6\u2AB7\u2AB8\u2AB9\u2ABA\u2ABB"+
-        "\u2ABC\u2ABD\u2ABE\u2ABF\u2AC0\u2AC1\u2AC2\u2AC3"+
-        "\u2AC4\u2AC5\u2AC6\u2AC7\u2AC8\u2AC9\u2ACA\u2ACB"+
-        "\u2ACC\u2ACD\u2ACE\u2ACF\u2AD0\u2AD1\u2AD2\u2AD3"+
-        "\u2AD4\u2AD5\u2AD6\u2AD7\u2AD8\u2AD9\u2ADA\u2ADB"+
-        "\u2ADC\u2ADD\u2ADE\u2ADF\u2AE0\u2AE1\u2AE2\u2AE3"+
-        "\u2AE4\u2AE5\u2AE6\u2AE7\u2AE8\u2AE9\u2AEA\u2AEB"+
-        "\u2AEC\u2AED\u2AEE\u2AEF\u2AF0\u2AF1\u2AF2\u2AF3"+
-        "\u2AF4\u2AF5\u2AF6\u2AF7\u2AF8\u2AF9\u2AFA\u2AFB"+
-        "\u2AFC\u2AFD\u2AFE\u2AFF\u2B00\u2B01\u2B02\u2B03"+
-        "\u2B04\u2B05\u2B06\u2B07\u2B08\u2B09\u2B0A\u2B0B"+
-        "\u2B0C\u2B0D\u2B0E\u2B0F\u2B10\u2B11\u2B12\u2B13"+
-        "\u2B14\u2B15\u2B16\u2B17\u2B18\u2B19\u2B1A\u2B1B"+
-        "\u2B1C\u2B1D\u2B1E\u2B1F\u2B20\u2B21\u2B22\u2B23"+
-        "\u2B24\u2B25\u2B26\u2B27\u2B28\u2B29\u2B2A\u2B2B"+
-        "\u2B2C\u2B2D\u2B2E\u2B2F\u2B30\u2B31\u2B32\u2B33"+
-        "\u2B34\u2B35\u2B36\u2B37\u2B38\u2B39\u2B3A\u2B3B"+
-        "\u2B3C\u2B3D\u2B3E\u2B3F\u2B40\u2B41\u2B42\u2B43"+
-        "\u2B44\u2B45\u2B46\u2B47\u2B48\u2B49\u2B4A\u2B4B"+
-        "\u2B4C\u2B4D\u2B4E\u2B4F\u2B50\u2B51\u2B52\u2B53"+
-        "\u2B54\u2B55\u2B56\u2B57\u2B58\u2B59\u2B5A\u2B5B"+
-        "\u2B5C\u2B5D\u2B5E\u2B5F\u2B60\u2B61\u2B62\u2B63"+
-        "\u2B64\u2B65\u2B66\u2B67\u2B68\u2B69\u2B6A\u2B6B"+
-        "\u2B6C\u2B6D\u2B6E\u2B6F\u2B70\u2B71\u2B72\u2B73"+
-        "\u2B74\u2B75\u2B76\u2B77\u2B78\u2B79\u2B7A\u2B7B"+
-        "\u2B7C\u2B7D\u2B7E\u2B7F\u2B80\u2B81\u2B82\u2B83"+
-        "\u2B84\u2B85\u2B86\u2B87\u2B88\u2B89\u2B8A\u2B8B"+
-        "\u2B8C\u2B8D\u2B8E\u2B8F\u2B90\u2B91\u2B92\u2B93"+
-        "\u2B94\u2B95\u2B96\u2B97\u2B98\u2B99\u2B9A\u2B9B"+
-        "\u2B9C\u2B9D\u2B9E\u2B9F\u2BA0\u2BA1\u2BA2\u2BA3"+
-        "\u2BA4\u2BA5\u2BA6\u2BA7\u2BA8\u2BA9\u2BAA\u2BAB"+
-        "\u2BAC\u2BAD\u2BAE\u2BAF\u2BB0\u2BB1\u2BB2\u2BB3"+
-        "\u2BB4\u2BB5\u2BB6\u2BB7\u2BB8\u2BB9\u2BBA\u2BBB"+
-        "\u2BBC\u2BBD\u2BBE\u2BBF\u2BC0\u2BC1\u2BC2\u2BC3"+
-        "\u2BC4\u2BC5\u2BC6\u2BC7\u2BC8\u2BC9\u2BCA\u2BCB"+
-        "\u2BCC\u2BCD\u2BCE\u2BCF\u2BD0\u2BD1\u2BD2\u2BD3"+
-        "\u2BD4\u2BD5\u2BD6\u2BD7\u2BD8\u2BD9\u2BDA\u2BDB"+
-        "\u2BDC\u2BDD\u2BDE\u2BDF\u2BE0\u2BE1\u2BE2\u2BE3"+
-        "\u2BE4\u2BE5\u2BE6\u2BE7\u2BE8\u2BE9\u2BEA\u2BEB"+
-        "\u2BEC\u2BED\u2BEE\u2BEF\u2BF0\u2BF1\u2BF2\u2BF3"+
-        "\u2BF4\u2BF5\u2BF6\u2BF7\u2BF8\u2BF9\u2BFA\u2BFB"+
-        "\u2BFC\u2BFD\u2BFE\u2BFF\u2C00\u2C01\u2C02\u2C03"+
-        "\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B"+
-        "\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13"+
-        "\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B"+
-        "\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23"+
-        "\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B"+
-        "\u2C2C\u2C2D\u2C2E\u2C2F\u2C30\u2C31\u2C32\u2C33"+
-        "\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B"+
-        "\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43"+
-        "\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B"+
-        "\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53"+
-        "\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B"+
-        "\u2C5C\u2C5D\u2C5E\u2C5F\u2C60\u2C61\u2C62\u2C63"+
-        "\u2C64\u2C65\u2C66\u2C67\u2C68\u2C69\u2C6A\u2C6B"+
-        "\u2C6C\u2C6D\u2C6E\u2C6F\u2C70\u2C71\u2C72\u2C73"+
-        "\u2C74\u2C75\u2C76\u2C77\u2C78\u2C79\u2C7A\u2C7B"+
-        "\u2C7C\u2C7D\u2C7E\u2C7F\u2C80\u2C81\u2C82\u2C83"+
-        "\u2C84\u2C85\u2C86\u2C87\u2C88\u2C89\u2C8A\u2C8B"+
-        "\u2C8C\u2C8D\u2C8E\u2C8F\u2C90\u2C91\u2C92\u2C93"+
-        "\u2C94\u2C95\u2C96\u2C97\u2C98\u2C99\u2C9A\u2C9B"+
-        "\u2C9C\u2C9D\u2C9E\u2C9F\u2CA0\u2CA1\u2CA2\u2CA3"+
-        "\u2CA4\u2CA5\u2CA6\u2CA7\u2CA8\u2CA9\u2CAA\u2CAB"+
-        "\u2CAC\u2CAD\u2CAE\u2CAF\u2CB0\u2CB1\u2CB2\u2CB3"+
-        "\u2CB4\u2CB5\u2CB6\u2CB7\u2CB8\u2CB9\u2CBA\u2CBB"+
-        "\u2CBC\u2CBD\u2CBE\u2CBF\u2CC0\u2CC1\u2CC2\u2CC3"+
-        "\u2CC4\u2CC5\u2CC6\u2CC7\u2CC8\u2CC9\u2CCA\u2CCB"+
-        "\u2CCC\u2CCD\u2CCE\u2CCF\u2CD0\u2CD1\u2CD2\u2CD3"+
-        "\u2CD4\u2CD5\u2CD6\u2CD7\u2CD8\u2CD9\u2CDA\u2CDB"+
-        "\u2CDC\u2CDD\u2CDE\u2CDF\u2CE0\u2CE1\u2CE2\u2CE3"+
-        "\u2CE4\u2CE5\u2CE6\u2CE7\u2CE8\u2CE9\u2CEA\u2CEB"+
-        "\u2CEC\u2CED\u2CEE\u2CEF\u2CF0\u2CF1\u2CF2\u2CF3"+
-        "\u2CF4\u2CF5\u2CF6\u2CF7\u2CF8\u2CF9\u2CFA\u2CFB"+
-        "\u2CFC\u2CFD\u2CFE\u2CFF\u2D00\u2D01\u2D02\u2D03"+
-        "\u2D04\u2D05\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B"+
-        "\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13"+
-        "\u2D14\u2D15\u2D16\u2D17\u2D18\u2D19\u2D1A\u2D1B"+
-        "\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23"+
-        "\u2D24\u2D25\u2D26\u2D27\u2D28\u2D29\u2D2A\u2D2B"+
-        "\u2D2C\u2D2D\u2D2E\u2D2F\u2D30\u2D31\u2D32\u2D33"+
-        "\u2D34\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B"+
-        "\u2D3C\u2D3D\u2D3E\u2D3F\u2D40\u2D41\u2D42\u2D43"+
-        "\u2D44\u2D45\u2D46\u2D47\u2D48\u2D49\u2D4A\u2D4B"+
-        "\u2D4C\u2D4D\u2D4E\u2D4F\u2D50\u2D51\u2D52\u2D53"+
-        "\u2D54\u2D55\u2D56\u2D57\u2D58\u2D59\u2D5A\u2D5B"+
-        "\u2D5C\u2D5D\u2D5E\u2D5F\u2D60\u2D61\u2D62\u2D63"+
-        "\u2D64\u2D65\u2D66\u2D67\u2D68\u2D69\u2D6A\u2D6B"+
-        "\u2D6C\u2D6D\u2D6E\u2D6F\u2D70\u2D71\u2D72\u2D73"+
-        "\u2D74\u2D75\u2D76\u2D77\u2D78\u2D79\u2D7A\u2D7B"+
-        "\u2D7C\u2D7D\u2D7E\u2D7F\u2D80\u2D81\u2D82\u2D83"+
-        "\u2D84\u2D85\u2D86\u2D87\u2D88\u2D89\u2D8A\u2D8B"+
-        "\u2D8C\u2D8D\u2D8E\u2D8F\u2D90\u2D91\u2D92\u2D93"+
-        "\u2D94\u2D95\u2D96\u2D97\u2D98\u2D99\u2D9A\u2D9B"+
-        "\u2D9C\u2D9D\u2D9E\u2D9F\u2DA0\u2DA1\u2DA2\u2DA3"+
-        "\u2DA4\u2DA5\u2DA6\u2DA7\u2DA8\u2DA9\u2DAA\u2DAB"+
-        "\u2DAC\u2DAD\u2DAE\u2DAF\u2DB0\u2DB1\u2DB2\u2DB3"+
-        "\u2DB4\u2DB5\u2DB6\u2DB7\u2DB8\u2DB9\u2DBA\u2DBB"+
-        "\u2DBC\u2DBD\u2DBE\u2DBF\u2DC0\u2DC1\u2DC2\u2DC3"+
-        "\u2DC4\u2DC5\u2DC6\u2DC7\u2DC8\u2DC9\u2DCA\u2DCB"+
-        "\u2DCC\u2DCD\u2DCE\u2DCF\u2DD0\u2DD1\u2DD2\u2DD3"+
-        "\u2DD4\u2DD5\u2DD6\u2DD7\u2DD8\u2DD9\u2DDA\u2DDB"+
-        "\u2DDC\u2DDD\u2DDE\u2DDF\u2DE0\u2DE1\u2DE2\u2DE3"+
-        "\u2DE4\u2DE5\u2DE6\u2DE7\u2DE8\u2DE9\u2DEA\u2DEB"+
-        "\u2DEC\u2DED\u2DEE\u2DEF\u2DF0\u2DF1\u2DF2\u2DF3"+
-        "\u2DF4\u2DF5\u2DF6\u2DF7\u2DF8\u2DF9\u2DFA\u2DFB"+
-        "\u2DFC\u2DFD\u2DFE\u2DFF\u2E00\u2E01\u2E02\u2E03"+
-        "\u2E04\u2E05\u2E06\u2E07\u2E08\u2E09\u2E0A\u2E0B"+
-        "\u2E0C\u2E0D\u2E0E\u2E0F\u2E10\u2E11\u2E12\u2E13"+
-        "\u2E14\u2E15\u2E16\u2E17\u2E18\u2E19\u2E1A\u2E1B"+
-        "\u2E1C\u2E1D\u2E1E\u2E1F\u2E20\u2E21\u2E22\u2E23"+
-        "\u2E24\u2E25\u2E26\u2E27\u2E28\u2E29\u2E2A\u2E2B"+
-        "\u2E2C\u2E2D\u2E2E\u2E2F\u2E30\u2E31\u2E32\u2E33"+
-        "\u2E34\u2E35\u2E36\u2E37\u2E38\u2E39\u2E3A\u2E3B"+
-        "\u2E3C\u2E3D\u2E3E\u2E3F\u2E40\u2E41\u2E42\u2E43"+
-        "\u2E44\u2E45\u2E46\u2E47\u2E48\u2E49\u2E4A\u2E4B"+
-        "\u2E4C\u2E4D\u2E4E\u2E4F\u2E50\u2E51\u2E52\u2E53"+
-        "\u2E54\u2E55\u2E56\u2E57\u2E58\u2E59\u2E5A\u2E5B"+
-        "\u2E5C\u2E5D\u2E5E\u2E5F\u2E60\u2E61\u2E62\u2E63"+
-        "\u2E64\u2E65\u2E66\u2E67\u2E68\u2E69\u2E6A\u2E6B"+
-        "\u2E6C\u2E6D\u2E6E\u2E6F\u2E70\u2E71\u2E72\u2E73"+
-        "\u2E74\u2E75\u2E76\u2E77\u2E78\u2E79\u2E7A\u2E7B"+
-        "\u2E7C\u2E7D\u2E7E\u2E7F\u2E80\u2E81\u2E82\u2E83"+
-        "\u2E84\u2E85\u2E86\u2E87\u2E88\u2E89\u2E8A\u2E8B"+
-        "\u2E8C\u2E8D\u2E8E\u2E8F\u2E90\u2E91\u2E92\u2E93"+
-        "\u2E94\u2E95\u2E96\u2E97\u2E98\u2E99\u2E9A\u2E9B"+
-        "\u2E9C\u2E9D\u2E9E\u2E9F\u2EA0\u2EA1\u2EA2\u2EA3"+
-        "\u2EA4\u2EA5\u2EA6\u2EA7\u2EA8\u2EA9\u2EAA\u2EAB"+
-        "\u2EAC\u2EAD\u2EAE\u2EAF\u2EB0\u2EB1\u2EB2\u2EB3"+
-        "\u2EB4\u2EB5\u2EB6\u2EB7\u2EB8\u2EB9\u2EBA\u2EBB"+
-        "\u2EBC\u2EBD\u2EBE\u2EBF\u2EC0\u2EC1\u2EC2\u2EC3"+
-        "\u2EC4\u2EC5\u2EC6\u2EC7\u2EC8\u2EC9\u2ECA\u2ECB"+
-        "\u2ECC\u2ECD\u2ECE\u2ECF\u2ED0\u2ED1\u2ED2\u2ED3"+
-        "\u2ED4\u2ED5\u2ED6\u2ED7\u2ED8\u2ED9\u2EDA\u2EDB"+
-        "\u2EDC\u2EDD\u2EDE\u2EDF\u2EE0\u2EE1\u2EE2\u2EE3"+
-        "\u2EE4\u2EE5\u2EE6\u2EE7\u2EE8\u2EE9\u2EEA\u2EEB"+
-        "\u2EEC\u2EED\u2EEE\u2EEF\u2EF0\u2EF1\u2EF2\u2EF3"+
-        "\u2EF4\u2EF5\u2EF6\u2EF7\u2EF8\u2EF9\u2EFA\u2EFB"+
-        "\u2EFC\u2EFD\u2EFE\u2EFF\u2F00\u2F01\u2F02\u2F03"+
-        "\u2F04\u2F05\u2F06\u2F07\u2F08\u2F09\u2F0A\u2F0B"+
-        "\u2F0C\u2F0D\u2F0E\u2F0F\u2F10\u2F11\u2F12\u2F13"+
-        "\u2F14\u2F15\u2F16\u2F17\u2F18\u2F19\u2F1A\u2F1B"+
-        "\u2F1C\u2F1D\u2F1E\u2F1F\u2F20\u2F21\u2F22\u2F23"+
-        "\u2F24\u2F25\u2F26\u2F27\u2F28\u2F29\u2F2A\u2F2B"+
-        "\u2F2C\u2F2D\u2F2E\u2F2F\u2F30\u2F31\u2F32\u2F33"+
-        "\u2F34\u2F35\u2F36\u2F37\u2F38\u2F39\u2F3A\u2F3B"+
-        "\u2F3C\u2F3D\u2F3E\u2F3F\u2F40\u2F41\u2F42\u2F43"+
-        "\u2F44\u2F45\u2F46\u2F47\u2F48\u2F49\u2F4A\u2F4B"+
-        "\u2F4C\u2F4D\u2F4E\u2F4F\u2F50\u2F51\u2F52\u2F53"+
-        "\u2F54\u2F55\u2F56\u2F57\u2F58\u2F59\u2F5A\u2F5B"+
-        "\u2F5C\u2F5D\u2F5E\u2F5F\u2F60\u2F61\u2F62\u2F63"+
-        "\u2F64\u2F65\u2F66\u2F67\u2F68\u2F69\u2F6A\u2F6B"+
-        "\u2F6C\u2F6D\u2F6E\u2F6F\u2F70\u2F71\u2F72\u2F73"+
-        "\u2F74\u2F75\u2F76\u2F77\u2F78\u2F79\u2F7A\u2F7B"+
-        "\u2F7C\u2F7D\u2F7E\u2F7F\u2F80\u2F81\u2F82\u2F83"+
-        "\u2F84\u2F85\u2F86\u2F87\u2F88\u2F89\u2F8A\u2F8B"+
-        "\u2F8C\u2F8D\u2F8E\u2F8F\u2F90\u2F91\u2F92\u2F93"+
-        "\u2F94\u2F95\u2F96\u2F97\u2F98\u2F99\u2F9A\u2F9B"+
-        "\u2F9C\u2F9D\u2F9E\u2F9F\u2FA0\u2FA1\u2FA2\u2FA3"+
-        "\u2FA4\u2FA5\u2FA6\u2FA7\u2FA8\u2FA9\u2FAA\u2FAB"+
-        "\u2FAC\u2FAD\u2FAE\u2FAF\u2FB0\u2FB1\u2FB2\u2FB3"+
-        "\u2FB4\u2FB5\u2FB6\u2FB7\u2FB8\u2FB9\u2FBA\u2FBB"+
-        "\u2FBC\u2FBD\u2FBE\u2FBF\u2FC0\u2FC1\u2FC2\u2FC3"+
-        "\u2FC4\u2FC5\u2FC6\u2FC7\u2FC8\u2FC9\u2FCA\u2FCB"+
-        "\u2FCC\u2FCD\u2FCE\u2FCF\u2FD0\u2FD1\u2FD2\u2FD3"+
-        "\u2FD4\u2FD5\u2FD6\u2FD7\u2FD8\u2FD9\u2FDA\u2FDB"+
-        "\u2FDC\u2FDD\u2FDE\u2FDF\u2FE0\u2FE1\u2FE2\u2FE3"+
-        "\u2FE4\u2FE5\u2FE6\u2FE7\u2FE8\u2FE9\u2FEA\u2FEB"+
-        "\u2FEC\u2FED\u2FEE\u2FEF\u2FF0\u2FF1\u2FF2\u2FF3"+
-        "\u2FF4\u2FF5\u2FF6\u2FF7\u2FF8\u2FF9\u2FFA\u2FFB"+
-        "\u2FFC\u2FFD\u2FFE\u2FFF\u3000\u3001\u3002\u3003"+
-        "\u3004\u3005\u3006\u3007\u3008\u3009\u300A\u300B"+
-        "\u300C\u300D\u300E\u300F\u3010\u3011\u3012\u3013"+
-        "\u3014\u3015\u3016\u3017\u3018\u3019\u301A\u301B"+
-        "\u301C\u301D\u301E\u301F\u3020\u3021\u3022\u3023"+
-        "\u3024\u3025\u3026\u3027\u3028\u3029\u302A\u302B"+
-        "\u302C\u302D\u302E\u302F\u3030\u3031\u3032\u3033"+
-        "\u3034\u3035\u3036\u3037\u3038\u3039\u303A\u303B"+
-        "\u303C\u303D\u303E\u303F\u3040\u3041\u3042\u3043"+
-        "\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B"+
-        "\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053"+
-        "\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B"+
-        "\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063"+
-        "\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B"+
-        "\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073"+
-        "\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B"+
-        "\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083"+
-        "\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B"+
-        "\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093"+
-        "\u3094\u3095\u3096\u3097\u3098\u3099\u309A\u309B"+
-        "\u309C\u309D\u309E\u309F\u30A0\u30A1\u30A2\u30A3"+
-        "\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB"+
-        "\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3"+
-        "\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB"+
-        "\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3"+
-        "\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB"+
-        "\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3"+
-        "\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB"+
-        "\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3"+
-        "\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB"+
-        "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007"+
-        "\u2008\u2009\u200A\u200B\u200C\u200D\u200E\u200F"+
-        "\u2010\u2011\u2012\u2013\u2014\u2015\u2016\u2017"+
-        "\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F"+
-        "\u2020\u2021\u2022\u2023\u2024\u2025\u2026\u2027"+
-        "\u2028\u2029\u202A\u202B\uFD9C\u202C\u202D\u202E"+
-        "\u202F\u2030\u2031\u2032\u2033\u2034\u2035\u2036"+
-        "\u2037\u2038\u2039\u203A\u203B\u203C\u203D\u203E"+
-        "\u203F\u2040\u2041\u2042\u2043\u2044\u2045\u2046"+
-        "\u2047\u2048\u2049\u204A\u204B\u204C\u204D\u204E"+
-        "\u204F\u2050\u2051\u2052\u2053\u2054\u2055\u2056"+
-        "\u2057\u2058\u2059\u205A\u205B\u205C\u205D\u205E"+
-        "\u205F\u2060\u2061\u2062\u2063\u2064\u2065\u2066"+
-        "\u2067\u2068\u2069\u206A\u206B\u206C\u206D\u206E"+
-        "\u206F\u2070\u2071\u2072\u2073\u2074\u2075\u2076"+
-        "\u2077\uFD9D\u2078\u2079\u207A\u207B\u207C\u207D"+
-        "\u207E\u207F\u2080\u2081\u2082\u2083\u2084\u2085"+
-        "\u2086\u2087\u2088\u2089\u208A\u208B\u208C\u208D"+
-        "\u208E\u208F\u2090\u2091\u2092\uFD9E\u2093\u2094"+
-        "\u2095\u2096\u2097\u2098\u2099\u209A\u209B\u209C"+
-        "\u209D\u209E\u209F\u20A0\u20A1\u20A2\u20A3\u20A4"+
-        "\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB\u20AC"+
-        "\u20AD\u20AE\u20AF\u20B0\u20B1\u20B2\u20B3\u20B4"+
-        "\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC"+
-        "\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4"+
-        "\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC"+
-        "\u20CD\u20CE\u20CF\u20D0\u20D1\u20D2\u20D3\u20D4"+
-        "\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC"+
-        "\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3\uFD9F"+
-        "\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB"+
-        "\u20EC\uFDA0\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2"+
-        "\u20F3\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA"+
-        "\u20FB\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102"+
-        "\u2103\u2104\u2105\u2106\uFE40\uFE41\uFE42\uFE43"+
-        "\u2107\uFE44\u2108\uFE45\uFE46\u2109\u210A\u210B"+
-        "\uFE47\u210C\u210D\u210E\u210F\u2110\u2111\uFE48"+
-        "\uFE49\uFE4A\u2112\uFE4B\uFE4C\u2113\u2114\uFE4D"+
-        "\uFE4E\uFE4F\u2115\u2116\u2117\u2118\u2119\u211A"+
-        "\u211B\u211C\u211D\u211E\u211F\u2120\u2121\u2122"+
-        "\u2123\u2124\u2125\u2126\u2127\u2128\u2129\u212A"+
-        "\u212B\u212C\u212D\u212E\u212F\u2130\u2131\u2132"+
-        "\u2133\u2134\u2135\u2136\u2137\u2138\u2139\u213A"+
-        "\u213B\u213C\u213D\u213E\u213F\u2140\u2141\u2142"+
-        "\u2143\u2144\u2145\u2146\u2147\u2148\u2149\u214A"+
-        "\u214B\u214C\u214D\u214E\u214F\u2150\u2151\u2152"+
-        "\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215A"+
-        "\u215B\u215C\u215D\u215E\u215F\u2160\u2161\u2162"+
-        "\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A"+
-        "\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172"+
-        "\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A"+
-        "\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182"+
-        "\u2183\u2184\u2185\u2186\u2187\u2188\u2189\u218A"+
-        "\u218B\u218C\u218D\u218E\u218F\u2190\u2191\u2192"+
-        "\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219A"+
-        "\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2"+
-        "\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA"+
-        "\u21AB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1\u21B2"+
-        "\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9\u21BA"+
-        "\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1\u21C2"+
-        "\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9\u21CA"+
-        "\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1\u21D2"+
-        "\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9\u21DA"+
-        "\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1\u21E2"+
-        "\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9\u21EA";
-
-    private final static String innerEncoderIndex12=
-        "\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1\u21F2"+
-        "\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9\u21FA"+
-        "\u21FB\u21FC\u21FD\u21FE\u21FF\u2200\u2201\u2202"+
-        "\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220A"+
-        "\u220B\u220C\u220D\u220E\u220F\u2210\u2211\u2212"+
-        "\u2213\u2214\u2215\u2216\u2217\u2218\u2219\u221A"+
-        "\u221B\u221C\u221D\u221E\u221F\u2220\u2221\u2222"+
-        "\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222A"+
-        "\u222B\u222C\u222D\u222E\u222F\u2230\u2231\u2232"+
-        "\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223A"+
-        "\u223B\u223C\u223D\u223E\u223F\u2240\u2241\u2242"+
-        "\u2243\u2244\u2245\u2246\u2247\u2248\u2249\u224A"+
-        "\u224B\u224C\u224D\u224E\u224F\u2250\u2251\u2252"+
-        "\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A"+
-        "\u225B\u225C\u225D\u225E\u225F\u2260\u2261\u2262"+
-        "\u2263\u2264\u2265\u2266\u2267\u2268\u2269\u226A"+
-        "\u226B\u226C\u226D\u226E\u226F\u2270\u2271\u2272"+
-        "\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A"+
-        "\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282"+
-        "\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A"+
-        "\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292"+
-        "\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229A"+
-        "\u229B\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2"+
-        "\u22A3\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA"+
-        "\u22AB\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2"+
-        "\u22B3\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA"+
-        "\u22BB\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2"+
-        "\u22C3\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA"+
-        "\u22CB\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2"+
-        "\u22D3\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA"+
-        "\u22DB\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2"+
-        "\u22E3\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA"+
-        "\u22EB\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2"+
-        "\u22F3\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA"+
-        "\u22FB\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302"+
-        "\u2303\u2304\u2305\u2306\u2307\u2308\u2309\u230A"+
-        "\u230B\u230C\u230D\u230E\u230F\u2310\u2311\u2312"+
-        "\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231A"+
-        "\u231B\u231C\u231D\u231E\u231F\u2320\u2321\u2322"+
-        "\u2323\u2324\u2325\u2326\u2327\u2328\u2329\u232A"+
-        "\u232B\u232C\u232D\u232E\u232F\u2330\u2331\u2332"+
-        "\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233A"+
-        "\u233B\u233C\u233D\u233E\u233F\u2340\u2341\u2342"+
-        "\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234A"+
-        "\u234B\u234C\u234D\u234E\u234F\u2350\u2351\u2352"+
-        "\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235A"+
-        "\u235B\u235C\u235D\u235E\u235F\u2360\u2361\u2362"+
-        "\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236A"+
-        "\u236B\u236C\u236D\u236E\u236F\u2370\u2371\u2372"+
-        "\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237A"+
-        "\u237B\u237C\u237D\u237E\u237F\u2380\u2381\u2382"+
-        "\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238A"+
-        "\u238B\u238C\u238D\u238E\u238F\u2390\u2391\u2392"+
-        "\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239A"+
-        "\u239B\u239C\u239D\u239E\u239F\u23A0\u23A1\u23A2"+
-        "\u23A3\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9\u23AA"+
-        "\u23AB\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1\u23B2"+
-        "\u23B3\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9\u23BA"+
-        "\u23BB\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1\u23C2"+
-        "\u23C3\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9\u23CA"+
-        "\u23CB\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1\u23D2"+
-        "\u23D3\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9\u23DA"+
-        "\u23DB\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1\u23E2"+
-        "\u23E3\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9\u23EA"+
-        "\u23EB\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1\u23F2"+
-        "\u23F3\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9\u23FA"+
-        "\u23FB\u23FC\u23FD\u23FE\u23FF\u2400\u2401\u2402"+
-        "\u2403\u2404\u2405\u2406\u2407\u2408\u2409\u240A"+
-        "\u240B\u240C\u240D\u240E\u240F\u2410\u2411\u2412"+
-        "\u2413\u2414\u2415\u2416\u2417\u2418\u2419\u241A"+
-        "\u241B\u241C\u241D\u241E\u241F\u2420\u2421\u2422"+
-        "\u2423\u2424\u2425\u2426\u2427\u2428\u2429\u242A"+
-        "\u242B\u242C\u242D\u242E\u242F\u2430\u2431\u2432"+
-        "\u2433\u2434\u2435\u2436\u2437\u2438\u2439\u243A"+
-        "\u243B\u243C\u243D\u243E\u243F\u2440\u2441\u2442"+
-        "\u2443\u2444\u2445\u2446\u2447\u2448\u2449\u244A"+
-        "\u244B\u244C\u244D\u244E\u244F\u2450\u2451\u2452"+
-        "\u2453\u2454\u2455\u2456\u2457\u2458\u2459\u245A"+
-        "\u245B\u245C\u245D\u245E\u245F\u2460\u2461\u2462"+
-        "\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246A"+
-        "\u246B\u246C\u246D\u246E\u246F\u2470\u2471\u2472"+
-        "\u2473\u2474\u2475\u2476\u2477\u2478\u2479\u247A"+
-        "\u247B\u247C\u247D\u247E\u247F\u2480\u2481\u2482"+
-        "\u2483\u2484\u2485\u2486\u2487\u2488\u2489\u248A"+
-        "\u248B\u248C\u248D\u248E\u248F\u2490\u2491\u2492"+
-        "\u2493\u2494\u2495\u2496\u2497\u2498\u2499\u249A"+
-        "\u249B\u249C\u249D\u249E\u249F\u24A0\u24A1\u24A2"+
-        "\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9\u24AA"+
-        "\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1\u24B2"+
-        "\u24B3\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9\u24BA"+
-        "\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2"+
-        "\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA"+
-        "\u24CB\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1\u24D2"+
-        "\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA"+
-        "\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2"+
-        "\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u24EA"+
-        "\u24EB\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1\u24F2"+
-        "\u24F3\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9\u24FA"+
-        "\u24FB\u24FC\u24FD\u24FE\u24FF\u2500\u2501\u2502"+
-        "\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250A"+
-        "\u250B\u250C\u250D\u250E\u250F\u2510\u2511\u2512"+
-        "\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251A"+
-        "\uA955\uA6F2\u251B\uA6F4\uA6F5\uA6E0\uA6E1\uA6F0"+
-        "\uA6F1\uA6E2\uA6E3\uA6EE\uA6EF\uA6E6\uA6E7\uA6E4"+
-        "\uA6E5\uA6E8\uA6E9\uA6EA\uA6EB\u251C\u251D\u251E"+
-        "\u251F\uA968\uA969\uA96A\uA96B\uA96C\uA96D\uA96E"+
-        "\uA96F\uA970\uA971\u2520\uA972\uA973\uA974\uA975"+
-        "\u2521\uA976\uA977\uA978\uA979\uA97A\uA97B\uA97C"+
-        "\uA97D\uA97E\uA980\uA981\uA982\uA983\uA984\u2522"+
-        "\uA985\uA986\uA987\uA988\u2523\u2524\u2525\u2526"+
-        "\u2527\u2528\u2529\u252A\u252B\u252C\u252D\u252E"+
-        "\u252F\u2530\u2531\u2532\u2533\u2534\u2535\u2536"+
-        "\u2537\u2538\u2539\u253A\u253B\u253C\u253D\u253E"+
-        "\u253F\u2540\u2541\u2542\u2543\u2544\u2545\u2546"+
-        "\u2547\u2548\u2549\u254A\u254B\u254C\u254D\u254E"+
-        "\u254F\u2550\u2551\u2552\u2553\u2554\u2555\u2556"+
-        "\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E"+
-        "\u255F\u2560\u2561\u2562\u2563\u2564\u2565\u2566"+
-        "\u2567\u2568\u2569\u256A\u256B\u256C\u256D\u256E"+
-        "\u256F\u2570\u2571\u2572\u2573\u2574\u2575\u2576"+
-        "\u2577\u2578\u2579\u257A\u257B\u257C\u257D\u257E"+
-        "\u257F\u2580\u2581\u2582\u2583\u2584\u2585\u2586"+
-        "\u2587\u2588\u2589\u258A\u258B\u258C\u258D\u258E"+
-        "\u258F\u2590\u2591\u2592\u2593\u2594\u2595\u2596"+
-        "\u2597\u2598\u2599\u259A\u259B\u259C\u259D\u259E"+
-        "\u259F\u25A0\u25A1\u25A2\u25A3\u25A4\u25A5\u25A6"+
-        "\u25A7\u25A8\u25A9\u25AA\u25AB\u25AC\u25AD\u25AE"+
-        "\u25AF\u25B0\u25B1\u25B2\u25B3\u25B4\u25B5\u25B6"+
-        "\u25B7\uA3A1\uA3A2\uA3A3\uA1E7\uA3A5\uA3A6\uA3A7"+
-        "\uA3A8\uA3A9\uA3AA\uA3AB\uA3AC\uA3AD\uA3AE\uA3AF"+
-        "\uA3B0\uA3B1\uA3B2\uA3B3\uA3B4\uA3B5\uA3B6\uA3B7"+
-        "\uA3B8\uA3B9\uA3BA\uA3BB\uA3BC\uA3BD\uA3BE\uA3BF"+
-        "\uA3C0\uA3C1\uA3C2\uA3C3\uA3C4\uA3C5\uA3C6\uA3C7"+
-        "\uA3C8\uA3C9\uA3CA\uA3CB\uA3CC\uA3CD\uA3CE\uA3CF"+
-        "\uA3D0\uA3D1\uA3D2\uA3D3\uA3D4\uA3D5\uA3D6\uA3D7"+
-        "\uA3D8\uA3D9\uA3DA\uA3DB\uA3DC\uA3DD\uA3DE\uA3DF"+
-        "\uA3E0\uA3E1\uA3E2\uA3E3\uA3E4\uA3E5\uA3E6\uA3E7"+
-        "\uA3E8\uA3E9\uA3EA\uA3EB\uA3EC\uA3ED\uA3EE\uA3EF"+
-        "\uA3F0\uA3F1\uA3F2\uA3F3\uA3F4\uA3F5\uA3F6\uA3F7"+
-        "\uA3F8\uA3F9\uA3FA\uA3FB\uA3FC\uA3FD\uA1AB\u25B8"+
-        "\u25B9\u25BA\u25BB\u25BC\u25BD\u25BE\u25BF\u25C0"+
-        "\u25C1\u25C2\u25C3\u25C4\u25C5\u25C6\u25C7\u25C8"+
-        "\u25C9\u25CA\u25CB\u25CC\u25CD\u25CE\u25CF\u25D0"+
-        "\u25D1\u25D2\u25D3\u25D4\u25D5\u25D6\u25D7\u25D8"+
-        "\u25D9\u25DA\u25DB\u25DC\u25DD\u25DE\u25DF\u25E0"+
-        "\u25E1\u25E2\u25E3\u25E4\u25E5\u25E6\u25E7\u25E8"+
-        "\u25E9\u25EA\u25EB\u25EC\u25ED\u25EE\u25EF\u25F0"+
-        "\u25F1\u25F2\u25F3\u25F4\u25F5\u25F6\u25F7\u25F8"+
-        "\u25F9\u25FA\u25FB\u25FC\u25FD\u25FE\u25FF\u2600"+
-        "\u2601\u2602\u2603\u2604\u2605\u2606\u2607\u2608"+
-        "\u2609\u260A\u260B\u260C\u260D\u260E\u260F\u2610"+
-        "\u2611\u2612\u2613\u2614\u2615\u2616\u2617\u2618"+
-        "\u2619\u261A\u261B\u261C\u261D\u261E\u261F\u2620"+
-        "\u2621\u2622\u2623\u2624\u2625\u2626\u2627\u2628"+
-        "\u2629\u262A\u262B\u262C\u262D\u262E\u262F\u2630"+
-        "\u2631\u2632\u2633\u2634\u2635\u2636\u2637\u2638"+
-        "\uA1E9\uA1EA\uA956\uA3FE\uA957\uA3A4\u2639\u263A"+
-        "\u263B\u263C\u263D\u263E\u263F\u2640\u2641\u2642"+
-        "\u2643\u2644\u2645\u2646\u2647\u2648\u2649\u264A"+
-        "\u264B\u264C\u264D\u264E\u264F\u2650\u2651\u2652";
-
-    private final static short encoderIndex1[] = {
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
-        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
-        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
-        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-        96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
-        112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
-        128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
-        144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
-        160, 161, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
-        181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196
-    };
-
-    static String encoderIndex2[] = {
-        innerEncoderIndex0,
-        innerEncoderIndex1,
-        innerEncoderIndex2,
-        innerEncoderIndex3,
-        innerEncoderIndex4,
-        innerEncoderIndex5,
-        innerEncoderIndex6,
-        innerEncoderIndex7,
-        innerEncoderIndex8,
-        innerEncoderIndex9,
-        innerEncoderIndex10,
-        innerEncoderIndex11,
-        innerEncoderIndex12
-    };
-    private static class Decoder extends CharsetDecoder {
-
-        private static final char REPLACE_CHAR = '\uFFFD';
-        private int currentState = GB18030_DOUBLE_BYTE;
-
-        private Decoder(Charset cs) {
-            super(cs, 1.0f, 2.0f);
-        }
-
-        private char getChar(int offset) {
-            int byte1 = (offset >>8) & 0xFF;
-            int byte2 = (offset & 0xFF);
-            int start = 0, end = 0xFF;
-
-            if (((byte1 < 0) || (byte1 > decoderIndex1.length))
-                 || ((byte2 < start) || (byte2 > end))) {
-                       return REPLACE_CHAR;
-            }
-
-            int n = (decoderIndex1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
-            return decoderIndex2[decoderIndex1[byte1] >> 4].charAt(n);
-        }
-
-        protected char decodeDouble(int byte1, int byte2) {
-            int start = 0x40, end = 0xFE;
-            if (((byte1 < 0) || (byte1 > index1.length))
-                || ((byte2 < start) || (byte2 > end)))
-                return '\uFFFD';
-
-            int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
-            return index2[index1[byte1] >> 4].charAt(n);
-        }
-
-        protected void implReset() {
-            currentState = GB18030_DOUBLE_BYTE;
-        }
-
-        private CoderResult decodeArrayLoop(ByteBuffer src,
-                                            CharBuffer dst)
-        {
-            byte[] sa = src.array();
-            int sp = src.arrayOffset() + src.position();
-            int sl = src.arrayOffset() + src.limit();
-            assert (sp <= sl);
-            sp = (sp <= sl ? sp : sl);
-
-            char[] da = dst.array();
-            int dp = dst.arrayOffset() + dst.position();
-            int dl = dst.arrayOffset() + dst.limit();
-            assert (dp <= dl);
-            dp = (dp <= dl ? dp : dl);
-
-            int inputSize = 1;
-
-            try {
-                while (sp < sl) {
-                    int byte1 = 0 , byte2 = 0, byte3 = 0, byte4 = 0;
-                    // Get the input byte
-                    byte1 = sa[sp] & 0xFF;
-                    inputSize = 1;
-
-                    if ((byte1 & (byte)0x80) == 0){ // US-ASCII range
-                        currentState = GB18030_SINGLE_BYTE;
-                    }
-                    else if (byte1 < 0x81 || byte1 > 0xfe) {
-                        return CoderResult.malformedForLength(1);
-                    }
-                    else { // Either 2 or 4 byte sequence follows
-                        if ( sl - sp < 2 )
-                            return CoderResult.UNDERFLOW;
-                        byte2 = sa[sp + 1] & 0xFF;
-                        inputSize = 2;
-
-                        if (byte2 < 0x30)
-                                return CoderResult.malformedForLength(1);
-                        else if (byte2 >= 0x30 && byte2 <= 0x39) {
-                            currentState = GB18030_FOUR_BYTE;
-
-                            if (sl - sp < 4)
-                                return CoderResult.UNDERFLOW;
-
-                            byte3 = sa[sp + 2] & 0xFF;
-                            if (byte3 < 0x81 || byte3 > 0xfe)
-                                return CoderResult.malformedForLength(3);
-
-                            byte4 = sa[sp + 3] & 0xFF;
-                            inputSize = 4;
-
-                            if (byte4 < 0x30 || byte4 > 0x39)
-                                return CoderResult.malformedForLength(4);
-                        }
-                        else if (byte2 == 0x7f || byte2 == 0xff ||
-                                (byte2 < 0x40 )) {
-                           return CoderResult.malformedForLength(2);
-                        }
-                        else
-                            currentState = GB18030_DOUBLE_BYTE;
-                    }
-
-                    if (dl - dp < 1)
-                        return CoderResult.OVERFLOW;
-                    switch (currentState){
-                        case GB18030_SINGLE_BYTE:
-                            da[dp++] = (char)byte1;
-                            break;
-                        case GB18030_DOUBLE_BYTE:
-                            da[dp++] = decodeDouble(byte1, byte2);
-                            break;
-                        case GB18030_FOUR_BYTE:
-                            int offset = (((byte1 - 0x81) * 10 +
-                                           (byte2 - 0x30)) * 126 +
-                                            byte3 - 0x81) * 10 + byte4 - 0x30;
-                            int hiByte = (offset >>8) & 0xFF;
-                            int lowByte = (offset & 0xFF);
-
-                        // Mixture of table lookups and algorithmic calculation
-                        // of character values.
-
-                        // BMP Ranges
-                        if (offset <= 0x4A62)
-                            da[dp++] = getChar(offset);
-                        else if (offset > 0x4A62 && offset <= 0x82BC)
-                            da[dp++] = (char)(offset + 0x5543);
-                        else if (offset >= 0x82BD && offset <= 0x830D)
-                            da[dp++] = getChar(offset);
-                        else if (offset >= 0x830D && offset <= 0x93A8)
-                            da[dp++] = (char)(offset + 0x6557);
-                        else if (offset >= 0x93A9 && offset <= 0x99FB)
-                            da[dp++] = getChar(offset);
-                        // Supplemental UCS planes handled via surrogates
-                        else if (offset >= 0x2E248 && offset < 0x12E248) {
-                            if (offset >= 0x12E248)
-                                return CoderResult.malformedForLength(4);
-                            offset -= 0x1e248;
-                            if ( dl - dp < 2)
-                                return CoderResult.OVERFLOW;
-                            // emit high + low surrogate
-                            da[dp++] = (char)((offset - 0x10000) / 0x400 + 0xD800);
-                            da[dp++] = (char)((offset - 0x10000) % 0x400 + 0xDC00);
-                        }
-                        else
-                            return CoderResult.malformedForLength(inputSize);
-                        break;
-                      }
-                      sp += inputSize;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(sp - src.arrayOffset());
-                dst.position(dp - dst.arrayOffset());
-            }
-        }
-
-        private CoderResult decodeBufferLoop(ByteBuffer src,
-                                            CharBuffer dst)
-        {
-            int mark = src.position();
-
-            try {
-                while (src.hasRemaining()) {
-                    int byte1 = 0, byte2 = 0, byte3 = 0, byte4 = 0;
-                    byte1 = src.get() & 0xFF;
-                    int inputSize = 1;
-
-                    if ((byte1 & (byte)0x80) == 0){ // US-ASCII range
-                        currentState = GB18030_SINGLE_BYTE;
-                    }
-                    else if (byte1 < 0x81 || byte1 > 0xfe) {
-                        return CoderResult.malformedForLength(1);
-                    }
-                    else { // Either 2 or 4 byte sequence follows
-                        if ( src.remaining() < 1 )
-                            return CoderResult.UNDERFLOW;
-                        byte2 = src.get() & 0xFF;
-                        inputSize = 2;
-
-                        if (byte2 < 0x30)
-                                return CoderResult.malformedForLength(1);
-                        else if (byte2 >= 0x30 && byte2 <= 0x39) {
-                            currentState = GB18030_FOUR_BYTE;
-
-                            if (src.remaining() < 2)
-                                return CoderResult.UNDERFLOW;
-
-                            byte3 = src.get() & 0xFF;
-                            if (byte3 < 0x81 || byte3 > 0xfe)
-                                return CoderResult.malformedForLength(3);
-
-                            byte4 = src.get() & 0xFF;
-                            inputSize = 4;
-
-                            if (byte4 < 0x30 || byte4 > 0x39)
-                                return CoderResult.malformedForLength(4);
-                        }
-                        else if (byte2 == 0x7f || byte2 == 0xff ||
-                                (byte2 < 0x40 )) {
-                           return CoderResult.malformedForLength(2);
-                        }
-                        else
-                            currentState = GB18030_DOUBLE_BYTE;
-                    }
-
-                    if (dst.remaining() < 1)
-                        return CoderResult.OVERFLOW;
-                    switch (currentState){
-                        case GB18030_SINGLE_BYTE:
-                            dst.put((char)byte1);
-                            break;
-                        case GB18030_DOUBLE_BYTE:
-                            dst.put(decodeDouble(byte1, byte2));
-                            break;
-                        case GB18030_FOUR_BYTE:
-                            int offset = (((byte1 - 0x81) * 10 +
-                                           (byte2 - 0x30)) * 126 +
-                                            byte3 - 0x81) * 10 + byte4 - 0x30;
-                            int hiByte = (offset >>8) & 0xFF;
-                            int lowByte = (offset & 0xFF);
-
-                        // Mixture of table lookups and algorithmic calculation
-                        // of character values.
-
-                        // BMP Ranges
-                        if (offset <= 0x4A62)
-                            dst.put(getChar(offset));
-                        else if (offset > 0x4A62 && offset <= 0x82BC)
-                            dst.put((char)(offset + 0x5543));
-                        else if (offset >= 0x82BD && offset <= 0x830D)
-                            dst.put(getChar(offset));
-                        else if (offset >= 0x830D && offset <= 0x93A8)
-                            dst.put((char)(offset + 0x6557));
-                        else if (offset >= 0x93A9 && offset <= 0x99F9)
-                            dst.put(getChar(offset));
-                        // Supplemental UCS planes handled via surrogates
-                        else if (offset >= 0x2E248 && offset < 0x12E248) {
-                            if (offset >= 0x12E248)
-                                return CoderResult.malformedForLength(4);
-                            offset -= 0x1e248;
-                            if ( dst.remaining() < 2)
-                                return CoderResult.OVERFLOW;
-                            // emit high + low surrogate
-                            dst.put((char)((offset - 0x10000) / 0x400 + 0xD800));
-                            dst.put((char)((offset - 0x10000) % 0x400 + 0xDC00));
-                        } else {
-                            return CoderResult.malformedForLength(inputSize);
-                        }
-                    }
-                    mark += inputSize;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(mark);
-            }
-        }
-
-
-        protected CoderResult decodeLoop(ByteBuffer src,
-                                         CharBuffer dst)
-        {
-            if (src.hasArray() && dst.hasArray())
-                return decodeArrayLoop(src, dst);
-            else
-                return decodeBufferLoop(src, dst);
-        }
-    }
-
-    private static class Encoder extends CharsetEncoder {
-
-        private int currentState = GB18030_DOUBLE_BYTE;
-
-        private Encoder(Charset cs) {
-            super(cs, 4.0f, 4.0f); // max of 4 bytes per char
-        }
-
-        public boolean canEncode(char c) {
-            return ! Character.isSurrogate(c);
-        }
-
-        private final Surrogate.Parser sgp = new Surrogate.Parser();
-
-        private int getGB18030(short[] outerIndex, String[] innerEncoderIndex,
-                               char ch) {
-            int offset = outerIndex[((ch & 0xff00) >> 8 )] << 8;
-            return innerEncoderIndex[offset >> 12].charAt((offset & 0xfff) +
-                        (ch & 0xff));
-        }
-
-        protected void implReset() {
-            currentState = GB18030_DOUBLE_BYTE;
-        }
-
-        private CoderResult encodeArrayLoop(CharBuffer src,
-                                            ByteBuffer dst)
-        {
-            char[] sa = src.array();
-            int sp = src.arrayOffset() + src.position();
-            int sl = src.arrayOffset() + src.limit();
-            assert (sp <= sl);
-            sp = (sp <= sl ? sp : sl);
-            byte[] da = dst.array();
-            int dp = dst.arrayOffset() + dst.position();
-            int dl = dst.arrayOffset() + dst.limit();
-            assert (dp <= dl);
-            dp = (dp <= dl ? dp : dl);
-
-            int condensedKey = 0;  // expands to a four byte sequence
-            int hiByte = 0, loByte = 0;
-            currentState = GB18030_DOUBLE_BYTE;
-
-            try {
-                while (sp < sl) {
-                    int inputSize = 1;
-                    char c = sa[sp];
-
-                    if (Character.isSurrogate(c)) {
-                        if ((condensedKey=sgp.parse(c, sa, sp, sl)) < 0)
-                            return sgp.error();
-                        // Character.toCodePoint looks like
-                        // (((high & 0x3ff) << 10) | (low & 0x3ff)) + 0x10000;
-                        // so we add (0x2e248 - 0x10000) to get the "key".
-                        condensedKey += 0x1E248;
-                        currentState = GB18030_FOUR_BYTE;
-                        inputSize = sgp.increment();
-                    }
-                    else if (c >= 0x0000 && c <= 0x007F) {
-                        currentState = GB18030_SINGLE_BYTE;
-                    }
-                    else if (c <= 0xA4C6 || c >= 0xE000) {
-                        int outByteVal = getGB18030(encoderIndex1,
-                                                    encoderIndex2,
-                                                    c);
-                        if (outByteVal == 0xFFFD )
-                                return CoderResult.unmappableForLength(1);
-
-                        hiByte = (outByteVal & 0xFF00) >> 8;
-                        loByte = (outByteVal & 0xFF);
-
-                        condensedKey = (hiByte - 0x20) * 256 + loByte;
-
-                        if (c >= 0xE000 && c < 0xF900)
-                                condensedKey += 0x82BD;
-                        else if (c >= 0xF900)
-                                condensedKey += 0x93A9;
-
-                        if (hiByte > 0x80)
-                             currentState = GB18030_DOUBLE_BYTE;
-                        else
-                             currentState = GB18030_FOUR_BYTE;
-                    }
-                    else if (c >= 0xA4C7 && c <= 0xD7FF) {
-                        condensedKey = c - 0x5543;
-                        currentState = GB18030_FOUR_BYTE;
-                    }
-
-                    switch(currentState) {
-                        case GB18030_SINGLE_BYTE:
-                            if (dl - dp < 1)
-                                return CoderResult.OVERFLOW;
-                            da[dp++] = (byte)c;
-                            break;
-
-                        case GB18030_DOUBLE_BYTE:
-                            if (dl - dp < 2)
-                                return CoderResult.OVERFLOW;
-                            da[dp++] = (byte)hiByte;
-                            da[dp++] = (byte)loByte;
-                            break;
-
-                        case GB18030_FOUR_BYTE: // Four Byte encoding
-                            byte b1, b2, b3, b4;
-
-                            if (dl - dp < 4)
-                                return CoderResult.OVERFLOW;
-                            // Decompose the condensed key into its 4 byte equivalent
-                            b4 = (byte)((condensedKey % 10) + 0x30);
-                            condensedKey /= 10;
-                            b3 = (byte)((condensedKey % 126) + 0x81);
-                            condensedKey /= 126;
-                            b2 = (byte)((condensedKey % 10) + 0x30);
-                            b1 = (byte)((condensedKey / 10) + 0x81);
-                            da[dp++] = b1;
-                            da[dp++] = b2;
-                            da[dp++] = b3;
-                            da[dp++] = b4;
-                            break;
-                        default:
-                            assert(false);
-                        }
-                    sp += inputSize;
-                }
-            return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(sp - src.arrayOffset());
-                dst.position(dp - dst.arrayOffset());
-            }
-        }
-
-        private CoderResult encodeBufferLoop(CharBuffer src,
-                                             ByteBuffer dst)
-        {
-            int condensedKey = 0;
-            int hiByte = 0, loByte = 0;
-            currentState = GB18030_DOUBLE_BYTE;
-            int mark = src.position();
-            try {
-                while (src.hasRemaining()) {
-                    char c = src.get();
-                    int inputSize = 1;
-                    if (Character.isSurrogate(c)) {
-                        if ((condensedKey = sgp.parse(c, src))<0)
-                           return sgp.error();
-                        condensedKey += 0x1e248;
-                        currentState = GB18030_FOUR_BYTE;
-                        inputSize = 2;
-                    }
-                    else if (c >= 0x0000 && c <= 0x007F) {
-                        currentState = GB18030_SINGLE_BYTE;
-                    }
-                    else if (c <= 0xA4C6 || c >= 0xE000) {
-                        int outByteVal = getGB18030(encoderIndex1,
-                                                    encoderIndex2,
-                                                    c);
-                        if (outByteVal == 0xFFFD )
-                            return CoderResult.unmappableForLength(1);
-
-                        hiByte = (outByteVal & 0xFF00) >> 8;
-                        loByte = (outByteVal & 0xFF);
-
-                        condensedKey = (hiByte - 0x20) * 256 + loByte;
-
-                        if (c >= 0xE000 && c < 0xF900)
-                                condensedKey += 0x82BD;
-                        else if (c >= 0xF900)
-                                condensedKey += 0x93A9;
-
-                        if (hiByte > 0x80)
-                             currentState = GB18030_DOUBLE_BYTE;
-                        else
-                             currentState = GB18030_FOUR_BYTE;
-                    }
-                    else if (c >= 0xA4C7 && c <= 0xD7FF) {
-                        condensedKey = c - 0x5543;
-                        currentState = GB18030_FOUR_BYTE;
-                    }
-
-                    if (currentState == GB18030_SINGLE_BYTE) {
-                        if (dst.remaining() < 1)
-                            return CoderResult.OVERFLOW;
-                        dst.put((byte)c);
-                    } else if (currentState == GB18030_DOUBLE_BYTE) {
-                        if (dst.remaining() < 2)
-                            return CoderResult.OVERFLOW;
-                        dst.put((byte)hiByte);
-                        dst.put((byte)loByte);
-                    }
-                    else { // Four Byte encoding
-                        byte b1, b2, b3, b4;
-
-                        if (dst.remaining() < 4)
-                            return CoderResult.OVERFLOW;
-                        // Decompose the condensed key into its 4 byte equivalent
-                        b4 = (byte)((condensedKey % 10) + 0x30);
-                        condensedKey /= 10;
-                        b3 = (byte)((condensedKey % 126) + 0x81);
-                        condensedKey /= 126;
-                        b2 = (byte)((condensedKey % 10) + 0x30);
-                        b1 = (byte)((condensedKey / 10) + 0x81);
-                        dst.put(b1);
-                        dst.put(b2);
-                        dst.put(b3);
-                        dst.put(b4);
-                    }
-                    mark += inputSize;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(mark);
-            }
-        }
-        protected CoderResult encodeLoop(CharBuffer src,
-                                         ByteBuffer dst)
-        {
-            if (src.hasArray() && dst.hasArray())
-                return encodeArrayLoop(src, dst);
-            else
-                return encodeBufferLoop(src, dst);
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/GB18030.java.template	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,12778 @@
+/*
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ */
+
+package $PACKAGE$;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import sun.nio.cs.Surrogate;
+
+public class GB18030
+    extends Charset
+{
+    private static final int GB18030_SINGLE_BYTE = 1;
+    private static final int GB18030_DOUBLE_BYTE = 2;
+    private static final int GB18030_FOUR_BYTE = 3;
+
+    public GB18030() {
+        super("GB18030", $ALIASES$);
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs.name().equals("GBK"))
+                || (cs.name().equals("ISO-8859-1"))
+                || (cs.name().equals("ISO-8859-2"))
+                || (cs.name().equals("ISO-8859-3"))
+                || (cs.name().equals("ISO-8859-4"))
+                || (cs.name().equals("ISO-8859-5"))
+                || (cs.name().equals("ISO-8859-6"))
+                || (cs.name().equals("ISO-8859-7"))
+                || (cs.name().equals("ISO-8859-8"))
+                || (cs.name().equals("ISO-8859-9"))
+                || (cs.name().equals("ISO-8859-13"))
+                || (cs.name().equals("UTF-8"))
+                || (cs.name().equals("UTF-16"))
+                || (cs.name().equals("UTF-16LE"))
+                || (cs.name().equals("UTF-16BE"))
+                || (cs.name().equals("ISO-8859-15"))
+                || (cs.name().equals("windows-1251"))
+                || (cs.name().equals("windows-1252"))
+                || (cs.name().equals("windows-1253"))
+                || (cs.name().equals("windows-1254"))
+                || (cs.name().equals("windows-1255"))
+                || (cs.name().equals("windows-1256"))
+                || (cs.name().equals("windows-1257"))
+                || (cs.name().equals("windows-1258"))
+                || (cs.name().equals("windows-932"))
+                || (cs.name().equals("x-mswin-936"))
+                || (cs.name().equals("x-windows-949"))
+                || (cs.name().equals("x-windows-950"))
+                || (cs.name().equals("windows-31j"))
+                || (cs.name().equals("JIS_X0201"))
+                || (cs.name().equals("JIS_X0208-1990"))
+                || (cs.name().equals("JIS_X0212"))
+                || (cs.name().equals("Shift_JIS"))
+                || (cs.name().equals("GB2312"))
+                || (cs.name().equals("EUC-KR"))
+                || (cs.name().equals("x-EUC-TW"))
+                || (cs.name().equals("EUC-JP"))
+                || (cs.name().equals("euc-jp-linux"))
+                || (cs.name().equals("KOI8-R"))
+                || (cs.name().equals("TIS-620"))
+                || (cs.name().equals("x-ISCII91"))
+                || (cs.name().equals("Big5"))
+                || (cs.name().equals("Big5-HKSCS"))
+                || (cs.name().equals("x-MS950-HKSCS"))
+                || (cs.name().equals("ISO-2022-JP"))
+                || (cs.name().equals("ISO-2022-KR"))
+                || (cs.name().equals("x-ISO-2022-CN-CNS"))
+                || (cs.name().equals("x-ISO-2022-CN-GB"))
+                || (cs.name().equals("x-Johab"))
+                || (cs instanceof GB18030));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    private final static String innerDecoderIndex0=
+        "\u0080"+
+        "\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088"+
+        "\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090"+
+        "\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098"+
+        "\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0"+
+        "\u00A1\u00A2\u00A3\u00A5\u00A6\u00A9\u00AA\u00AB"+
+        "\u00AC\u00AD\u00AE\u00AF\u00B2\u00B3\u00B4\u00B5"+
+        "\u00B6\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE"+
+        "\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6"+
+        "\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE"+
+        "\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6"+
+        "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF"+
+        "\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00EB\u00EE"+
+        "\u00EF\u00F0\u00F1\u00F4\u00F5\u00F6\u00F8\u00FB"+
+        "\u00FD\u00FE\u00FF\u0100\u0102\u0103\u0104\u0105"+
+        "\u0106\u0107\u0108\u0109\u010A\u010B\u010C\u010D"+
+        "\u010E\u010F\u0110\u0111\u0112\u0114\u0115\u0116"+
+        "\u0117\u0118\u0119\u011A\u011C\u011D\u011E\u011F"+
+        "\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127"+
+        "\u0128\u0129\u012A\u012C\u012D\u012E\u012F\u0130"+
+        "\u0131\u0132\u0133\u0134\u0135\u0136\u0137\u0138"+
+        "\u0139\u013A\u013B\u013C\u013D\u013E\u013F\u0140"+
+        "\u0141\u0142\u0143\u0145\u0146\u0147\u0149\u014A"+
+        "\u014B\u014C\u014E\u014F\u0150\u0151\u0152\u0153"+
+        "\u0154\u0155\u0156\u0157\u0158\u0159\u015A\u015B"+
+        "\u015C\u015D\u015E\u015F\u0160\u0161\u0162\u0163"+
+        "\u0164\u0165\u0166\u0167\u0168\u0169\u016A\u016C"+
+        "\u016D\u016E\u016F\u0170\u0171\u0172\u0173\u0174"+
+        "\u0175\u0176\u0177\u0178\u0179\u017A\u017B\u017C"+
+        "\u017D\u017E\u017F\u0180\u0181\u0182\u0183\u0184"+
+        "\u0185\u0186\u0187\u0188\u0189\u018A\u018B\u018C"+
+        "\u018D\u018E\u018F\u0190\u0191\u0192\u0193\u0194"+
+        "\u0195\u0196\u0197\u0198\u0199\u019A\u019B"+
+        "\u019C\u019D\u019E\u019F\u01A0\u01A1\u01A2\u01A3"+
+        "\u01A4\u01A5\u01A6\u01A7\u01A8\u01A9\u01AA\u01AB"+
+        "\u01AC\u01AD\u01AE\u01AF\u01B0\u01B1\u01B2\u01B3"+
+        "\u01B4\u01B5\u01B6\u01B7\u01B8\u01B9\u01BA\u01BB"+
+        "\u01BC\u01BD\u01BE\u01BF\u01C0\u01C1\u01C2\u01C3"+
+        "\u01C4\u01C5\u01C6\u01C7\u01C8\u01C9\u01CA\u01CB"+
+        "\u01CC\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9"+
+        "\u01DB\u01DD\u01DE\u01DF\u01E0\u01E1\u01E2\u01E3"+
+        "\u01E4\u01E5\u01E6\u01E7\u01E8\u01E9\u01EA\u01EB"+
+        "\u01EC\u01ED\u01EE\u01EF\u01F0\u01F1\u01F2\u01F3"+
+        "\u01F4\u01F5\u01F6\u01F7\u01F8\u01FA\u01FB\u01FC"+
+        "\u01FD\u01FE\u01FF\u0200\u0201\u0202\u0203\u0204"+
+        "\u0205\u0206\u0207\u0208\u0209\u020A\u020B\u020C"+
+        "\u020D\u020E\u020F\u0210\u0211\u0212\u0213\u0214"+
+        "\u0215\u0216\u0217\u0218\u0219\u021A\u021B\u021C"+
+        "\u021D\u021E\u021F\u0220\u0221\u0222\u0223\u0224"+
+        "\u0225\u0226\u0227\u0228\u0229\u022A\u022B\u022C"+
+        "\u022D\u022E\u022F\u0230\u0231\u0232\u0233\u0234"+
+        "\u0235\u0236\u0237\u0238\u0239\u023A\u023B\u023C"+
+        "\u023D\u023E\u023F\u0240\u0241\u0242\u0243\u0244"+
+        "\u0245\u0246\u0247\u0248\u0249\u024A\u024B\u024C"+
+        "\u024D\u024E\u024F\u0250\u0252\u0253\u0254\u0255"+
+        "\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D"+
+        "\u025E\u025F\u0260\u0262\u0263\u0264\u0265\u0266"+
+        "\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E"+
+        "\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276"+
+        "\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E"+
+        "\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286"+
+        "\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E"+
+        "\u028F\u0290\u0291\u0292\u0293\u0294\u0295\u0296"+
+        "\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E"+
+        "\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6"+
+        "\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE"+
+        "\u02AF\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6"+
+        "\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE"+
+        "\u02BF\u02C0\u02C1\u02C2\u02C3\u02C4\u02C5\u02C6"+
+        "\u02C8\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02D2"+
+        "\u02D3\u02D4\u02D5\u02D6\u02D7\u02D8\u02DA\u02DB"+
+        "\u02DC\u02DD\u02DE\u02DF\u02E0\u02E1\u02E2\u02E3"+
+        "\u02E4\u02E5\u02E6\u02E7\u02E8\u02E9\u02EA\u02EB"+
+        "\u02EC\u02ED\u02EE\u02EF\u02F0\u02F1\u02F2\u02F3"+
+        "\u02F4\u02F5\u02F6\u02F7\u02F8\u02F9\u02FA\u02FB"+
+        "\u02FC\u02FD\u02FE\u02FF\u0300\u0301\u0302\u0303"+
+        "\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B"+
+        "\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313"+
+        "\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B"+
+        "\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323"+
+        "\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B"+
+        "\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333"+
+        "\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B"+
+        "\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343"+
+        "\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B"+
+        "\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353"+
+        "\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B"+
+        "\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363"+
+        "\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B"+
+        "\u036C\u036D\u036E\u036F\u0370\u0371\u0372\u0373"+
+        "\u0374\u0375\u0376\u0377\u0378\u0379\u037A\u037B"+
+        "\u037C\u037D\u037E\u037F\u0380\u0381\u0382\u0383"+
+        "\u0384\u0385\u0386\u0387\u0388\u0389\u038A\u038B"+
+        "\u038C\u038D\u038E\u038F\u0390\u03A2\u03AA\u03AB"+
+        "\u03AC\u03AD\u03AE\u03AF\u03B0\u03C2\u03CA\u03CB"+
+        "\u03CC\u03CD\u03CE\u03CF\u03D0\u03D1\u03D2\u03D3"+
+        "\u03D4\u03D5\u03D6\u03D7\u03D8\u03D9\u03DA\u03DB"+
+        "\u03DC\u03DD\u03DE\u03DF\u03E0\u03E1\u03E2\u03E3"+
+        "\u03E4\u03E5\u03E6\u03E7\u03E8\u03E9\u03EA\u03EB"+
+        "\u03EC\u03ED\u03EE\u03EF\u03F0\u03F1\u03F2\u03F3"+
+        "\u03F4\u03F5\u03F6\u03F7\u03F8\u03F9\u03FA\u03FB"+
+        "\u03FC\u03FD\u03FE\u03FF\u0400\u0402\u0403\u0404"+
+        "\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C"+
+        "\u040D\u040E\u040F\u0450\u0452\u0453\u0454\u0455"+
+        "\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D"+
+        "\u045E\u045F\u0460\u0461\u0462\u0463\u0464\u0465"+
+        "\u0466\u0467\u0468\u0469\u046A\u046B\u046C\u046D"+
+        "\u046E\u046F\u0470\u0471\u0472\u0473\u0474\u0475"+
+        "\u0476\u0477\u0478\u0479\u047A\u047B\u047C\u047D"+
+        "\u047E\u047F\u0480\u0481\u0482\u0483\u0484\u0485"+
+        "\u0486\u0487\u0488\u0489\u048A\u048B\u048C\u048D"+
+        "\u048E\u048F\u0490\u0491\u0492\u0493\u0494\u0495"+
+        "\u0496\u0497\u0498\u0499\u049A\u049B\u049C\u049D"+
+        "\u049E\u049F\u04A0\u04A1\u04A2\u04A3\u04A4\u04A5"+
+        "\u04A6\u04A7\u04A8\u04A9\u04AA\u04AB\u04AC\u04AD"+
+        "\u04AE\u04AF\u04B0\u04B1\u04B2\u04B3\u04B4\u04B5"+
+        "\u04B6\u04B7\u04B8\u04B9\u04BA\u04BB\u04BC\u04BD"+
+        "\u04BE\u04BF\u04C0\u04C1\u04C2\u04C3\u04C4\u04C5"+
+        "\u04C6\u04C7\u04C8\u04C9\u04CA\u04CB\u04CC\u04CD"+
+        "\u04CE\u04CF\u04D0\u04D1\u04D2\u04D3\u04D4\u04D5"+
+        "\u04D6\u04D7\u04D8\u04D9\u04DA\u04DB\u04DC\u04DD"+
+        "\u04DE\u04DF\u04E0\u04E1\u04E2\u04E3\u04E4\u04E5"+
+        "\u04E6\u04E7\u04E8\u04E9\u04EA\u04EB\u04EC\u04ED"+
+        "\u04EE\u04EF\u04F0\u04F1\u04F2\u04F3\u04F4\u04F5"+
+        "\u04F6\u04F7\u04F8\u04F9\u04FA\u04FB\u04FC\u04FD"+
+        "\u04FE\u04FF\u0500\u0501\u0502\u0503\u0504\u0505"+
+        "\u0506\u0507\u0508\u0509\u050A\u050B\u050C\u050D"+
+        "\u050E\u050F\u0510\u0511\u0512\u0513\u0514\u0515"+
+        "\u0516\u0517\u0518\u0519\u051A\u051B\u051C\u051D"+
+        "\u051E\u051F\u0520\u0521\u0522\u0523\u0524\u0525"+
+        "\u0526\u0527\u0528\u0529\u052A\u052B\u052C\u052D"+
+        "\u052E\u052F\u0530\u0531\u0532\u0533\u0534\u0535"+
+        "\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D"+
+        "\u053E\u053F\u0540\u0541\u0542\u0543\u0544\u0545"+
+        "\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D"+
+        "\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555"+
+        "\u0556\u0557\u0558\u0559\u055A\u055B\u055C\u055D"+
+        "\u055E\u055F\u0560\u0561\u0562\u0563\u0564\u0565"+
+        "\u0566\u0567\u0568\u0569\u056A\u056B\u056C\u056D"+
+        "\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575"+
+        "\u0576\u0577\u0578\u0579\u057A\u057B\u057C\u057D"+
+        "\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585"+
+        "\u0586\u0587\u0588\u0589\u058A\u058B\u058C\u058D"+
+        "\u058E\u058F\u0590\u0591\u0592\u0593\u0594\u0595"+
+        "\u0596\u0597\u0598\u0599\u059A\u059B\u059C\u059D"+
+        "\u059E\u059F\u05A0\u05A1\u05A2\u05A3\u05A4\u05A5"+
+        "\u05A6\u05A7\u05A8\u05A9\u05AA\u05AB\u05AC\u05AD"+
+        "\u05AE\u05AF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5"+
+        "\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD"+
+        "\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05C4\u05C5"+
+        "\u05C6\u05C7\u05C8\u05C9\u05CA\u05CB\u05CC\u05CD"+
+        "\u05CE\u05CF\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5"+
+        "\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD"+
+        "\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5"+
+        "\u05E6\u05E7\u05E8\u05E9\u05EA\u05EB\u05EC\u05ED"+
+        "\u05EE\u05EF\u05F0\u05F1\u05F2\u05F3\u05F4\u05F5"+
+        "\u05F6\u05F7\u05F8\u05F9\u05FA\u05FB\u05FC\u05FD"+
+        "\u05FE\u05FF\u0600\u0601\u0602\u0603\u0604\u0605"+
+        "\u0606\u0607\u0608\u0609\u060A\u060B\u060C\u060D"+
+        "\u060E\u060F\u0610\u0611\u0612\u0613\u0614\u0615"+
+        "\u0616\u0617\u0618\u0619\u061A\u061B\u061C\u061D"+
+        "\u061E\u061F\u0620\u0621\u0622\u0623\u0624\u0625"+
+        "\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D"+
+        "\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635"+
+        "\u0636\u0637\u0638\u0639\u063A\u063B\u063C\u063D"+
+        "\u063E\u063F\u0640\u0641\u0642\u0643\u0644\u0645"+
+        "\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D"+
+        "\u064E\u064F\u0650\u0651\u0652\u0653\u0654\u0655"+
+        "\u0656\u0657\u0658\u0659\u065A\u065B\u065C\u065D"+
+        "\u065E\u065F\u0660\u0661\u0662\u0663\u0664\u0665"+
+        "\u0666\u0667\u0668\u0669\u066A\u066B\u066C\u066D"+
+        "\u066E\u066F\u0670\u0671\u0672\u0673\u0674\u0675"+
+        "\u0676\u0677\u0678\u0679\u067A\u067B\u067C\u067D"+
+        "\u067E\u067F\u0680\u0681\u0682\u0683\u0684\u0685"+
+        "\u0686\u0687\u0688\u0689\u068A\u068B\u068C\u068D"+
+        "\u068E\u068F\u0690\u0691\u0692\u0693\u0694\u0695"+
+        "\u0696\u0697\u0698\u0699\u069A\u069B\u069C\u069D"+
+        "\u069E\u069F\u06A0\u06A1\u06A2\u06A3\u06A4\u06A5"+
+        "\u06A6\u06A7\u06A8\u06A9\u06AA\u06AB\u06AC\u06AD"+
+        "\u06AE\u06AF\u06B0\u06B1\u06B2\u06B3\u06B4\u06B5"+
+        "\u06B6\u06B7\u06B8\u06B9\u06BA\u06BB\u06BC\u06BD"+
+        "\u06BE\u06BF\u06C0\u06C1\u06C2\u06C3\u06C4\u06C5"+
+        "\u06C6\u06C7\u06C8\u06C9\u06CA\u06CB\u06CC\u06CD"+
+        "\u06CE\u06CF\u06D0\u06D1\u06D2\u06D3\u06D4\u06D5"+
+        "\u06D6\u06D7\u06D8\u06D9\u06DA\u06DB\u06DC\u06DD"+
+        "\u06DE\u06DF\u06E0\u06E1\u06E2\u06E3\u06E4\u06E5"+
+        "\u06E6\u06E7\u06E8\u06E9\u06EA\u06EB\u06EC\u06ED"+
+        "\u06EE\u06EF\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5"+
+        "\u06F6\u06F7\u06F8\u06F9\u06FA\u06FB\u06FC\u06FD"+
+        "\u06FE\u06FF\u0700\u0701\u0702\u0703\u0704\u0705"+
+        "\u0706\u0707\u0708\u0709\u070A\u070B\u070C\u070D"+
+        "\u070E\u070F\u0710\u0711\u0712\u0713\u0714\u0715"+
+        "\u0716\u0717\u0718\u0719\u071A\u071B\u071C\u071D"+
+        "\u071E\u071F\u0720\u0721\u0722\u0723\u0724\u0725"+
+        "\u0726\u0727\u0728\u0729\u072A\u072B\u072C\u072D"+
+        "\u072E\u072F\u0730\u0731\u0732\u0733\u0734\u0735"+
+        "\u0736\u0737\u0738\u0739\u073A\u073B\u073C\u073D"+
+        "\u073E\u073F\u0740\u0741\u0742\u0743\u0744\u0745"+
+        "\u0746\u0747\u0748\u0749\u074A\u074B\u074C\u074D"+
+        "\u074E\u074F\u0750\u0751\u0752\u0753\u0754\u0755"+
+        "\u0756\u0757\u0758\u0759\u075A\u075B\u075C\u075D"+
+        "\u075E\u075F\u0760\u0761\u0762\u0763\u0764\u0765"+
+        "\u0766\u0767\u0768\u0769\u076A\u076B\u076C\u076D"+
+        "\u076E\u076F\u0770\u0771\u0772\u0773\u0774\u0775"+
+        "\u0776\u0777\u0778\u0779\u077A\u077B\u077C\u077D"+
+        "\u077E\u077F\u0780\u0781\u0782\u0783\u0784\u0785"+
+        "\u0786\u0787\u0788\u0789\u078A\u078B\u078C\u078D"+
+        "\u078E\u078F\u0790\u0791\u0792\u0793\u0794\u0795"+
+        "\u0796\u0797\u0798\u0799\u079A\u079B\u079C\u079D"+
+        "\u079E\u079F\u07A0\u07A1\u07A2\u07A3\u07A4\u07A5"+
+        "\u07A6\u07A7\u07A8\u07A9\u07AA\u07AB\u07AC\u07AD"+
+        "\u07AE\u07AF\u07B0\u07B1\u07B2\u07B3\u07B4\u07B5"+
+        "\u07B6\u07B7\u07B8\u07B9\u07BA\u07BB\u07BC\u07BD"+
+        "\u07BE\u07BF\u07C0\u07C1\u07C2\u07C3\u07C4\u07C5"+
+        "\u07C6\u07C7\u07C8\u07C9\u07CA\u07CB\u07CC\u07CD"+
+        "\u07CE\u07CF\u07D0\u07D1\u07D2\u07D3\u07D4\u07D5"+
+        "\u07D6\u07D7\u07D8\u07D9\u07DA\u07DB\u07DC\u07DD"+
+        "\u07DE\u07DF\u07E0\u07E1\u07E2\u07E3\u07E4\u07E5"+
+        "\u07E6\u07E7\u07E8\u07E9\u07EA\u07EB\u07EC\u07ED"+
+        "\u07EE\u07EF\u07F0\u07F1\u07F2\u07F3\u07F4\u07F5"+
+        "\u07F6\u07F7\u07F8\u07F9\u07FA\u07FB\u07FC\u07FD"+
+        "\u07FE\u07FF\u0800\u0801\u0802\u0803\u0804\u0805"+
+        "\u0806\u0807\u0808\u0809\u080A\u080B\u080C\u080D"+
+        "\u080E\u080F\u0810\u0811\u0812\u0813\u0814\u0815"+
+        "\u0816\u0817\u0818\u0819\u081A\u081B\u081C\u081D"+
+        "\u081E\u081F\u0820\u0821\u0822\u0823\u0824\u0825"+
+        "\u0826\u0827\u0828\u0829\u082A\u082B\u082C\u082D"+
+        "\u082E\u082F\u0830\u0831\u0832\u0833\u0834\u0835"+
+        "\u0836\u0837\u0838\u0839\u083A\u083B\u083C\u083D"+
+        "\u083E\u083F\u0840\u0841\u0842\u0843\u0844\u0845"+
+        "\u0846\u0847\u0848\u0849\u084A\u084B\u084C\u084D"+
+        "\u084E\u084F\u0850\u0851\u0852\u0853\u0854\u0855"+
+        "\u0856\u0857\u0858\u0859\u085A\u085B\u085C\u085D"+
+        "\u085E\u085F\u0860\u0861\u0862\u0863\u0864\u0865"+
+        "\u0866\u0867\u0868\u0869\u086A\u086B\u086C\u086D"+
+        "\u086E\u086F\u0870\u0871\u0872\u0873\u0874\u0875"+
+        "\u0876\u0877\u0878\u0879\u087A\u087B\u087C\u087D"+
+        "\u087E\u087F\u0880\u0881\u0882\u0883\u0884\u0885"+
+        "\u0886\u0887\u0888\u0889\u088A\u088B\u088C\u088D"+
+        "\u088E\u088F\u0890\u0891\u0892\u0893\u0894\u0895"+
+        "\u0896\u0897\u0898\u0899\u089A\u089B\u089C\u089D"+
+        "\u089E\u089F\u08A0\u08A1\u08A2\u08A3\u08A4\u08A5"+
+        "\u08A6\u08A7\u08A8\u08A9\u08AA\u08AB\u08AC\u08AD"+
+        "\u08AE\u08AF\u08B0\u08B1\u08B2\u08B3\u08B4\u08B5"+
+        "\u08B6\u08B7\u08B8\u08B9\u08BA\u08BB\u08BC\u08BD"+
+        "\u08BE\u08BF\u08C0\u08C1\u08C2\u08C3\u08C4\u08C5"+
+        "\u08C6\u08C7\u08C8\u08C9\u08CA\u08CB\u08CC\u08CD"+
+        "\u08CE\u08CF\u08D0\u08D1\u08D2\u08D3\u08D4\u08D5"+
+        "\u08D6\u08D7\u08D8\u08D9\u08DA\u08DB\u08DC\u08DD"+
+        "\u08DE\u08DF\u08E0\u08E1\u08E2\u08E3\u08E4\u08E5"+
+        "\u08E6\u08E7\u08E8\u08E9\u08EA\u08EB\u08EC\u08ED"+
+        "\u08EE\u08EF\u08F0\u08F1\u08F2\u08F3\u08F4\u08F5"+
+        "\u08F6\u08F7\u08F8\u08F9\u08FA\u08FB\u08FC\u08FD"+
+        "\u08FE\u08FF\u0900\u0901\u0902\u0903\u0904\u0905"+
+        "\u0906\u0907\u0908\u0909\u090A\u090B\u090C\u090D"+
+        "\u090E\u090F\u0910\u0911\u0912\u0913\u0914\u0915"+
+        "\u0916\u0917\u0918\u0919\u091A\u091B\u091C\u091D"+
+        "\u091E\u091F\u0920\u0921\u0922\u0923\u0924\u0925"+
+        "\u0926\u0927\u0928\u0929\u092A\u092B\u092C\u092D"+
+        "\u092E\u092F\u0930\u0931\u0932\u0933\u0934\u0935"+
+        "\u0936\u0937\u0938\u0939\u093A\u093B\u093C\u093D"+
+        "\u093E\u093F\u0940\u0941\u0942\u0943\u0944\u0945"+
+        "\u0946\u0947\u0948\u0949\u094A\u094B\u094C\u094D"+
+        "\u094E\u094F\u0950\u0951\u0952\u0953\u0954\u0955"+
+        "\u0956\u0957\u0958\u0959\u095A\u095B\u095C\u095D"+
+        "\u095E\u095F\u0960\u0961\u0962\u0963\u0964\u0965"+
+        "\u0966\u0967\u0968\u0969\u096A\u096B\u096C\u096D"+
+        "\u096E\u096F\u0970\u0971\u0972\u0973\u0974\u0975"+
+        "\u0976\u0977\u0978\u0979\u097A\u097B\u097C\u097D"+
+        "\u097E\u097F\u0980\u0981\u0982\u0983\u0984\u0985"+
+        "\u0986\u0987\u0988\u0989\u098A\u098B\u098C\u098D"+
+        "\u098E\u098F\u0990\u0991\u0992\u0993\u0994\u0995"+
+        "\u0996\u0997\u0998\u0999\u099A\u099B\u099C\u099D"+
+        "\u099E\u099F\u09A0\u09A1\u09A2\u09A3\u09A4\u09A5"+
+        "\u09A6\u09A7\u09A8\u09A9\u09AA\u09AB\u09AC\u09AD"+
+        "\u09AE\u09AF\u09B0\u09B1\u09B2\u09B3\u09B4\u09B5"+
+        "\u09B6\u09B7\u09B8\u09B9\u09BA\u09BB\u09BC\u09BD"+
+        "\u09BE\u09BF\u09C0\u09C1\u09C2\u09C3\u09C4\u09C5"+
+        "\u09C6\u09C7\u09C8\u09C9\u09CA\u09CB\u09CC\u09CD"+
+        "\u09CE\u09CF\u09D0\u09D1\u09D2\u09D3\u09D4\u09D5"+
+        "\u09D6\u09D7\u09D8\u09D9\u09DA\u09DB\u09DC\u09DD"+
+        "\u09DE\u09DF\u09E0\u09E1\u09E2\u09E3\u09E4\u09E5"+
+        "\u09E6\u09E7\u09E8\u09E9\u09EA\u09EB\u09EC\u09ED"+
+        "\u09EE\u09EF\u09F0\u09F1\u09F2\u09F3\u09F4\u09F5"+
+        "\u09F6\u09F7\u09F8\u09F9\u09FA\u09FB\u09FC\u09FD"+
+        "\u09FE\u09FF\u0A00\u0A01\u0A02\u0A03\u0A04\u0A05"+
+        "\u0A06\u0A07\u0A08\u0A09\u0A0A\u0A0B\u0A0C\u0A0D"+
+        "\u0A0E\u0A0F\u0A10\u0A11\u0A12\u0A13\u0A14\u0A15"+
+        "\u0A16\u0A17\u0A18\u0A19\u0A1A\u0A1B\u0A1C\u0A1D"+
+        "\u0A1E\u0A1F\u0A20\u0A21\u0A22\u0A23\u0A24\u0A25"+
+        "\u0A26\u0A27\u0A28\u0A29\u0A2A\u0A2B\u0A2C\u0A2D"+
+        "\u0A2E\u0A2F\u0A30\u0A31\u0A32\u0A33\u0A34\u0A35"+
+        "\u0A36\u0A37\u0A38\u0A39\u0A3A\u0A3B\u0A3C\u0A3D"+
+        "\u0A3E\u0A3F\u0A40\u0A41\u0A42\u0A43\u0A44\u0A45"+
+        "\u0A46\u0A47\u0A48\u0A49\u0A4A\u0A4B\u0A4C\u0A4D"+
+        "\u0A4E\u0A4F\u0A50\u0A51\u0A52\u0A53\u0A54\u0A55"+
+        "\u0A56\u0A57\u0A58\u0A59\u0A5A\u0A5B\u0A5C\u0A5D"+
+        "\u0A5E\u0A5F\u0A60\u0A61\u0A62\u0A63\u0A64\u0A65"+
+        "\u0A66\u0A67\u0A68\u0A69\u0A6A\u0A6B\u0A6C\u0A6D"+
+        "\u0A6E\u0A6F\u0A70\u0A71\u0A72\u0A73\u0A74\u0A75"+
+        "\u0A76\u0A77\u0A78\u0A79\u0A7A\u0A7B\u0A7C\u0A7D"+
+        "\u0A7E\u0A7F\u0A80\u0A81\u0A82\u0A83\u0A84\u0A85"+
+        "\u0A86\u0A87\u0A88\u0A89\u0A8A\u0A8B\u0A8C\u0A8D"+
+        "\u0A8E\u0A8F\u0A90\u0A91\u0A92\u0A93\u0A94\u0A95"+
+        "\u0A96\u0A97\u0A98\u0A99\u0A9A\u0A9B\u0A9C\u0A9D"+
+        "\u0A9E\u0A9F\u0AA0\u0AA1\u0AA2\u0AA3\u0AA4\u0AA5"+
+        "\u0AA6\u0AA7\u0AA8\u0AA9\u0AAA\u0AAB\u0AAC\u0AAD"+
+        "\u0AAE\u0AAF\u0AB0\u0AB1\u0AB2\u0AB3\u0AB4\u0AB5"+
+        "\u0AB6\u0AB7\u0AB8\u0AB9\u0ABA\u0ABB\u0ABC\u0ABD"+
+        "\u0ABE\u0ABF\u0AC0\u0AC1\u0AC2\u0AC3\u0AC4\u0AC5"+
+        "\u0AC6\u0AC7\u0AC8\u0AC9\u0ACA\u0ACB\u0ACC\u0ACD"+
+        "\u0ACE\u0ACF\u0AD0\u0AD1\u0AD2\u0AD3\u0AD4\u0AD5"+
+        "\u0AD6\u0AD7\u0AD8\u0AD9\u0ADA\u0ADB\u0ADC\u0ADD"+
+        "\u0ADE\u0ADF\u0AE0\u0AE1\u0AE2\u0AE3\u0AE4\u0AE5"+
+        "\u0AE6\u0AE7\u0AE8\u0AE9\u0AEA\u0AEB\u0AEC\u0AED"+
+        "\u0AEE\u0AEF\u0AF0\u0AF1\u0AF2\u0AF3\u0AF4\u0AF5"+
+        "\u0AF6\u0AF7\u0AF8\u0AF9\u0AFA\u0AFB\u0AFC\u0AFD"+
+        "\u0AFE\u0AFF\u0B00\u0B01\u0B02\u0B03\u0B04\u0B05"+
+        "\u0B06\u0B07\u0B08\u0B09\u0B0A\u0B0B\u0B0C\u0B0D"+
+        "\u0B0E\u0B0F\u0B10\u0B11\u0B12\u0B13\u0B14\u0B15"+
+        "\u0B16\u0B17\u0B18\u0B19\u0B1A\u0B1B\u0B1C\u0B1D"+
+        "\u0B1E\u0B1F\u0B20\u0B21\u0B22\u0B23\u0B24\u0B25"+
+        "\u0B26\u0B27\u0B28\u0B29\u0B2A\u0B2B\u0B2C\u0B2D"+
+        "\u0B2E\u0B2F\u0B30\u0B31\u0B32\u0B33\u0B34\u0B35"+
+        "\u0B36\u0B37\u0B38\u0B39\u0B3A\u0B3B\u0B3C\u0B3D"+
+        "\u0B3E\u0B3F\u0B40\u0B41\u0B42\u0B43\u0B44\u0B45"+
+        "\u0B46\u0B47\u0B48\u0B49\u0B4A\u0B4B\u0B4C\u0B4D"+
+        "\u0B4E\u0B4F\u0B50\u0B51\u0B52\u0B53\u0B54\u0B55"+
+        "\u0B56\u0B57\u0B58\u0B59\u0B5A\u0B5B\u0B5C\u0B5D"+
+        "\u0B5E\u0B5F\u0B60\u0B61\u0B62\u0B63\u0B64\u0B65"+
+        "\u0B66\u0B67\u0B68\u0B69\u0B6A\u0B6B\u0B6C\u0B6D"+
+        "\u0B6E\u0B6F\u0B70\u0B71\u0B72\u0B73\u0B74\u0B75"+
+        "\u0B76\u0B77\u0B78\u0B79\u0B7A\u0B7B\u0B7C\u0B7D"+
+        "\u0B7E\u0B7F\u0B80\u0B81\u0B82\u0B83\u0B84\u0B85"+
+        "\u0B86\u0B87\u0B88\u0B89\u0B8A\u0B8B\u0B8C\u0B8D"+
+        "\u0B8E\u0B8F\u0B90\u0B91\u0B92\u0B93\u0B94\u0B95"+
+        "\u0B96\u0B97\u0B98\u0B99\u0B9A\u0B9B\u0B9C\u0B9D"+
+        "\u0B9E\u0B9F\u0BA0\u0BA1\u0BA2\u0BA3\u0BA4\u0BA5"+
+        "\u0BA6\u0BA7\u0BA8\u0BA9\u0BAA\u0BAB\u0BAC\u0BAD"+
+        "\u0BAE\u0BAF\u0BB0\u0BB1\u0BB2\u0BB3\u0BB4\u0BB5"+
+        "\u0BB6\u0BB7\u0BB8\u0BB9\u0BBA\u0BBB\u0BBC\u0BBD"+
+        "\u0BBE\u0BBF\u0BC0\u0BC1\u0BC2\u0BC3\u0BC4\u0BC5"+
+        "\u0BC6\u0BC7\u0BC8\u0BC9\u0BCA\u0BCB\u0BCC\u0BCD"+
+        "\u0BCE\u0BCF\u0BD0\u0BD1\u0BD2\u0BD3\u0BD4\u0BD5"+
+        "\u0BD6\u0BD7\u0BD8\u0BD9\u0BDA\u0BDB\u0BDC\u0BDD"+
+        "\u0BDE\u0BDF\u0BE0\u0BE1\u0BE2\u0BE3\u0BE4\u0BE5"+
+        "\u0BE6\u0BE7\u0BE8\u0BE9\u0BEA\u0BEB\u0BEC\u0BED"+
+        "\u0BEE\u0BEF\u0BF0\u0BF1\u0BF2\u0BF3\u0BF4\u0BF5"+
+        "\u0BF6\u0BF7\u0BF8\u0BF9\u0BFA\u0BFB\u0BFC\u0BFD"+
+        "\u0BFE\u0BFF\u0C00\u0C01\u0C02\u0C03\u0C04\u0C05"+
+        "\u0C06\u0C07\u0C08\u0C09\u0C0A\u0C0B\u0C0C\u0C0D"+
+        "\u0C0E\u0C0F\u0C10\u0C11\u0C12\u0C13\u0C14\u0C15"+
+        "\u0C16\u0C17\u0C18\u0C19\u0C1A\u0C1B\u0C1C\u0C1D"+
+        "\u0C1E\u0C1F\u0C20\u0C21\u0C22\u0C23\u0C24\u0C25"+
+        "\u0C26\u0C27\u0C28\u0C29\u0C2A\u0C2B\u0C2C\u0C2D"+
+        "\u0C2E\u0C2F\u0C30\u0C31\u0C32\u0C33\u0C34\u0C35"+
+        "\u0C36\u0C37\u0C38\u0C39\u0C3A\u0C3B\u0C3C\u0C3D"+
+        "\u0C3E\u0C3F\u0C40\u0C41\u0C42\u0C43\u0C44\u0C45"+
+        "\u0C46\u0C47\u0C48\u0C49\u0C4A\u0C4B\u0C4C\u0C4D"+
+        "\u0C4E\u0C4F\u0C50\u0C51\u0C52\u0C53\u0C54\u0C55"+
+        "\u0C56\u0C57\u0C58\u0C59\u0C5A\u0C5B\u0C5C\u0C5D"+
+        "\u0C5E\u0C5F\u0C60\u0C61\u0C62\u0C63\u0C64\u0C65"+
+        "\u0C66\u0C67\u0C68\u0C69\u0C6A\u0C6B\u0C6C\u0C6D"+
+        "\u0C6E\u0C6F\u0C70\u0C71\u0C72\u0C73\u0C74\u0C75"+
+        "\u0C76\u0C77\u0C78\u0C79\u0C7A\u0C7B\u0C7C\u0C7D"+
+        "\u0C7E\u0C7F\u0C80\u0C81\u0C82\u0C83\u0C84\u0C85"+
+        "\u0C86\u0C87\u0C88\u0C89\u0C8A\u0C8B\u0C8C\u0C8D"+
+        "\u0C8E\u0C8F\u0C90\u0C91\u0C92\u0C93\u0C94\u0C95"+
+        "\u0C96\u0C97\u0C98\u0C99\u0C9A\u0C9B\u0C9C\u0C9D"+
+        "\u0C9E\u0C9F\u0CA0\u0CA1\u0CA2\u0CA3\u0CA4\u0CA5"+
+        "\u0CA6\u0CA7\u0CA8\u0CA9\u0CAA\u0CAB\u0CAC\u0CAD"+
+        "\u0CAE\u0CAF\u0CB0\u0CB1\u0CB2\u0CB3\u0CB4\u0CB5"+
+        "\u0CB6\u0CB7\u0CB8\u0CB9\u0CBA\u0CBB\u0CBC\u0CBD"+
+        "\u0CBE\u0CBF\u0CC0\u0CC1\u0CC2\u0CC3\u0CC4\u0CC5"+
+        "\u0CC6\u0CC7\u0CC8\u0CC9\u0CCA\u0CCB\u0CCC\u0CCD"+
+        "\u0CCE\u0CCF\u0CD0\u0CD1\u0CD2\u0CD3\u0CD4\u0CD5"+
+        "\u0CD6\u0CD7\u0CD8\u0CD9\u0CDA\u0CDB\u0CDC\u0CDD"+
+        "\u0CDE\u0CDF\u0CE0\u0CE1\u0CE2\u0CE3\u0CE4\u0CE5"+
+        "\u0CE6\u0CE7\u0CE8\u0CE9\u0CEA\u0CEB\u0CEC\u0CED"+
+        "\u0CEE\u0CEF\u0CF0\u0CF1\u0CF2\u0CF3\u0CF4\u0CF5"+
+        "\u0CF6\u0CF7\u0CF8\u0CF9\u0CFA\u0CFB\u0CFC\u0CFD"+
+        "\u0CFE\u0CFF\u0D00\u0D01\u0D02\u0D03\u0D04\u0D05"+
+        "\u0D06\u0D07\u0D08\u0D09\u0D0A\u0D0B\u0D0C\u0D0D"+
+        "\u0D0E\u0D0F\u0D10\u0D11\u0D12\u0D13\u0D14\u0D15"+
+        "\u0D16\u0D17\u0D18\u0D19\u0D1A\u0D1B\u0D1C\u0D1D"+
+        "\u0D1E\u0D1F\u0D20\u0D21\u0D22\u0D23\u0D24\u0D25"+
+        "\u0D26\u0D27\u0D28\u0D29\u0D2A\u0D2B\u0D2C\u0D2D"+
+        "\u0D2E\u0D2F\u0D30\u0D31\u0D32\u0D33\u0D34\u0D35"+
+        "\u0D36\u0D37\u0D38\u0D39\u0D3A\u0D3B\u0D3C\u0D3D"+
+        "\u0D3E\u0D3F\u0D40\u0D41\u0D42\u0D43\u0D44\u0D45"+
+        "\u0D46\u0D47\u0D48\u0D49\u0D4A\u0D4B\u0D4C\u0D4D"+
+        "\u0D4E\u0D4F\u0D50\u0D51\u0D52\u0D53\u0D54\u0D55"+
+        "\u0D56\u0D57\u0D58\u0D59\u0D5A\u0D5B\u0D5C\u0D5D"+
+        "\u0D5E\u0D5F\u0D60\u0D61\u0D62\u0D63\u0D64\u0D65"+
+        "\u0D66\u0D67\u0D68\u0D69\u0D6A\u0D6B\u0D6C\u0D6D"+
+        "\u0D6E\u0D6F\u0D70\u0D71\u0D72\u0D73\u0D74\u0D75"+
+        "\u0D76\u0D77\u0D78\u0D79\u0D7A\u0D7B\u0D7C\u0D7D"+
+        "\u0D7E\u0D7F\u0D80\u0D81\u0D82\u0D83\u0D84\u0D85"+
+        "\u0D86\u0D87\u0D88\u0D89\u0D8A\u0D8B\u0D8C\u0D8D"+
+        "\u0D8E\u0D8F\u0D90\u0D91\u0D92\u0D93\u0D94\u0D95"+
+        "\u0D96\u0D97\u0D98\u0D99\u0D9A\u0D9B\u0D9C\u0D9D"+
+        "\u0D9E\u0D9F\u0DA0\u0DA1\u0DA2\u0DA3\u0DA4\u0DA5"+
+        "\u0DA6\u0DA7\u0DA8\u0DA9\u0DAA\u0DAB\u0DAC\u0DAD"+
+        "\u0DAE\u0DAF\u0DB0\u0DB1\u0DB2\u0DB3\u0DB4\u0DB5"+
+        "\u0DB6\u0DB7\u0DB8\u0DB9\u0DBA\u0DBB\u0DBC\u0DBD"+
+        "\u0DBE\u0DBF\u0DC0\u0DC1\u0DC2\u0DC3\u0DC4\u0DC5"+
+        "\u0DC6\u0DC7\u0DC8\u0DC9\u0DCA\u0DCB\u0DCC\u0DCD"+
+        "\u0DCE\u0DCF\u0DD0\u0DD1\u0DD2\u0DD3\u0DD4\u0DD5"+
+        "\u0DD6\u0DD7\u0DD8\u0DD9\u0DDA\u0DDB\u0DDC\u0DDD"+
+        "\u0DDE\u0DDF\u0DE0\u0DE1\u0DE2\u0DE3\u0DE4\u0DE5"+
+        "\u0DE6\u0DE7\u0DE8\u0DE9\u0DEA\u0DEB\u0DEC\u0DED"+
+        "\u0DEE\u0DEF\u0DF0\u0DF1\u0DF2\u0DF3\u0DF4\u0DF5"+
+        "\u0DF6\u0DF7\u0DF8\u0DF9\u0DFA\u0DFB\u0DFC\u0DFD"+
+        "\u0DFE\u0DFF\u0E00\u0E01\u0E02\u0E03\u0E04\u0E05"+
+        "\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D"+
+        "\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15"+
+        "\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D"+
+        "\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25"+
+        "\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D"+
+        "\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35"+
+        "\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E3B\u0E3C\u0E3D"+
+        "\u0E3E\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45"+
+        "\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D"+
+        "\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55"+
+        "\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u0E5C\u0E5D"+
+        "\u0E5E\u0E5F\u0E60\u0E61\u0E62\u0E63\u0E64\u0E65"+
+        "\u0E66\u0E67\u0E68\u0E69\u0E6A\u0E6B\u0E6C\u0E6D"+
+        "\u0E6E\u0E6F\u0E70\u0E71\u0E72\u0E73\u0E74\u0E75"+
+        "\u0E76\u0E77\u0E78\u0E79\u0E7A\u0E7B\u0E7C\u0E7D"+
+        "\u0E7E\u0E7F\u0E80\u0E81\u0E82\u0E83\u0E84\u0E85"+
+        "\u0E86\u0E87\u0E88\u0E89\u0E8A\u0E8B\u0E8C\u0E8D"+
+        "\u0E8E\u0E8F\u0E90\u0E91\u0E92\u0E93\u0E94\u0E95"+
+        "\u0E96\u0E97\u0E98\u0E99\u0E9A\u0E9B\u0E9C\u0E9D"+
+        "\u0E9E\u0E9F\u0EA0\u0EA1\u0EA2\u0EA3\u0EA4\u0EA5"+
+        "\u0EA6\u0EA7\u0EA8\u0EA9\u0EAA\u0EAB\u0EAC\u0EAD"+
+        "\u0EAE\u0EAF\u0EB0\u0EB1\u0EB2\u0EB3\u0EB4\u0EB5"+
+        "\u0EB6\u0EB7\u0EB8\u0EB9\u0EBA\u0EBB\u0EBC\u0EBD"+
+        "\u0EBE\u0EBF\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC5"+
+        "\u0EC6\u0EC7\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD"+
+        "\u0ECE\u0ECF\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5"+
+        "\u0ED6\u0ED7\u0ED8\u0ED9\u0EDA\u0EDB\u0EDC\u0EDD"+
+        "\u0EDE\u0EDF\u0EE0\u0EE1\u0EE2\u0EE3\u0EE4\u0EE5"+
+        "\u0EE6\u0EE7\u0EE8\u0EE9\u0EEA\u0EEB\u0EEC\u0EED"+
+        "\u0EEE\u0EEF\u0EF0\u0EF1\u0EF2\u0EF3\u0EF4\u0EF5"+
+        "\u0EF6\u0EF7\u0EF8\u0EF9\u0EFA\u0EFB\u0EFC\u0EFD"+
+        "\u0EFE\u0EFF\u0F00\u0F01\u0F02\u0F03\u0F04\u0F05"+
+        "\u0F06\u0F07\u0F08\u0F09\u0F0A\u0F0B\u0F0C\u0F0D"+
+        "\u0F0E\u0F0F\u0F10\u0F11\u0F12\u0F13\u0F14\u0F15"+
+        "\u0F16\u0F17\u0F18\u0F19\u0F1A\u0F1B\u0F1C\u0F1D"+
+        "\u0F1E\u0F1F\u0F20\u0F21\u0F22\u0F23\u0F24\u0F25"+
+        "\u0F26\u0F27\u0F28\u0F29\u0F2A\u0F2B\u0F2C\u0F2D"+
+        "\u0F2E\u0F2F\u0F30\u0F31\u0F32\u0F33\u0F34\u0F35"+
+        "\u0F36\u0F37\u0F38\u0F39\u0F3A\u0F3B\u0F3C\u0F3D"+
+        "\u0F3E\u0F3F\u0F40\u0F41\u0F42\u0F43\u0F44\u0F45"+
+        "\u0F46\u0F47\u0F48\u0F49\u0F4A\u0F4B\u0F4C\u0F4D"+
+        "\u0F4E\u0F4F\u0F50\u0F51\u0F52\u0F53\u0F54\u0F55"+
+        "\u0F56\u0F57\u0F58\u0F59\u0F5A\u0F5B\u0F5C\u0F5D"+
+        "\u0F5E\u0F5F\u0F60\u0F61\u0F62\u0F63\u0F64\u0F65"+
+        "\u0F66\u0F67\u0F68\u0F69\u0F6A\u0F6B\u0F6C\u0F6D"+
+        "\u0F6E\u0F6F\u0F70\u0F71\u0F72\u0F73\u0F74\u0F75"+
+        "\u0F76\u0F77\u0F78\u0F79\u0F7A\u0F7B\u0F7C\u0F7D"+
+        "\u0F7E\u0F7F\u0F80\u0F81\u0F82\u0F83\u0F84\u0F85"+
+        "\u0F86\u0F87\u0F88\u0F89\u0F8A\u0F8B\u0F8C\u0F8D"+
+        "\u0F8E\u0F8F\u0F90\u0F91\u0F92\u0F93\u0F94\u0F95"+
+        "\u0F96\u0F97\u0F98\u0F99\u0F9A\u0F9B\u0F9C\u0F9D"+
+        "\u0F9E\u0F9F\u0FA0\u0FA1\u0FA2\u0FA3\u0FA4\u0FA5"+
+        "\u0FA6\u0FA7\u0FA8\u0FA9\u0FAA\u0FAB\u0FAC\u0FAD"+
+        "\u0FAE\u0FAF\u0FB0\u0FB1\u0FB2\u0FB3\u0FB4\u0FB5"+
+        "\u0FB6\u0FB7\u0FB8\u0FB9\u0FBA\u0FBB\u0FBC\u0FBD"+
+        "\u0FBE\u0FBF\u0FC0\u0FC1\u0FC2\u0FC3\u0FC4\u0FC5"+
+        "\u0FC6\u0FC7\u0FC8\u0FC9\u0FCA\u0FCB\u0FCC\u0FCD"+
+        "\u0FCE\u0FCF\u0FD0\u0FD1\u0FD2\u0FD3\u0FD4\u0FD5"+
+        "\u0FD6\u0FD7\u0FD8\u0FD9\u0FDA\u0FDB\u0FDC\u0FDD"+
+        "\u0FDE\u0FDF\u0FE0\u0FE1\u0FE2\u0FE3\u0FE4\u0FE5"+
+        "\u0FE6\u0FE7\u0FE8\u0FE9\u0FEA\u0FEB\u0FEC\u0FED"+
+        "\u0FEE\u0FEF\u0FF0\u0FF1\u0FF2\u0FF3\u0FF4\u0FF5"+
+        "\u0FF6\u0FF7\u0FF8\u0FF9\u0FFA\u0FFB\u0FFC\u0FFD"+
+        "\u0FFE\u0FFF\u1000\u1001\u1002\u1003\u1004\u1005"+
+        "\u1006\u1007\u1008\u1009\u100A\u100B\u100C\u100D"+
+        "\u100E\u100F\u1010\u1011\u1012\u1013\u1014\u1015"+
+        "\u1016\u1017\u1018\u1019\u101A\u101B\u101C\u101D"+
+        "\u101E\u101F\u1020\u1021\u1022\u1023\u1024\u1025"+
+        "\u1026\u1027\u1028\u1029\u102A\u102B\u102C\u102D"+
+        "\u102E\u102F\u1030\u1031\u1032\u1033\u1034\u1035"+
+        "\u1036\u1037\u1038\u1039\u103A\u103B\u103C\u103D"+
+        "\u103E\u103F\u1040\u1041\u1042\u1043\u1044\u1045"+
+        "\u1046\u1047\u1048\u1049\u104A\u104B\u104C\u104D"+
+        "\u104E\u104F\u1050\u1051\u1052\u1053\u1054\u1055"+
+        "\u1056\u1057\u1058\u1059\u105A\u105B\u105C\u105D"+
+        "\u105E\u105F\u1060\u1061\u1062\u1063\u1064\u1065"+
+        "\u1066\u1067\u1068\u1069\u106A\u106B\u106C\u106D"+
+        "\u106E\u106F\u1070\u1071\u1072\u1073\u1074\u1075"+
+        "\u1076\u1077\u1078\u1079\u107A\u107B\u107C\u107D"+
+        "\u107E\u107F\u1080\u1081\u1082\u1083\u1084\u1085"+
+        "\u1086\u1087\u1088\u1089\u108A\u108B\u108C\u108D"+
+        "\u108E\u108F\u1090\u1091\u1092\u1093\u1094\u1095"+
+        "\u1096\u1097\u1098\u1099\u109A\u109B\u109C\u109D"+
+        "\u109E\u109F\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5"+
+        "\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD"+
+        "\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5"+
+        "\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD"+
+        "\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5"+
+        "\u10C6\u10C7\u10C8\u10C9\u10CA\u10CB\u10CC\u10CD"+
+        "\u10CE\u10CF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5"+
+        "\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD"+
+        "\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5"+
+        "\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED"+
+        "\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5"+
+        "\u10F6\u10F7\u10F8\u10F9\u10FA\u10FB\u10FC\u10FD"+
+        "\u10FE\u10FF\u1100\u1101\u1102\u1103\u1104\u1105"+
+        "\u1106\u1107\u1108\u1109\u110A\u110B\u110C\u110D"+
+        "\u110E\u110F\u1110\u1111\u1112\u1113\u1114\u1115"+
+        "\u1116\u1117\u1118\u1119\u111A\u111B\u111C\u111D";
+
+    private final static String innerDecoderIndex1=
+        "\u111E\u111F\u1120\u1121\u1122\u1123\u1124\u1125"+
+        "\u1126\u1127\u1128\u1129\u112A\u112B\u112C\u112D"+
+        "\u112E\u112F\u1130\u1131\u1132\u1133\u1134\u1135"+
+        "\u1136\u1137\u1138\u1139\u113A\u113B\u113C\u113D"+
+        "\u113E\u113F\u1140\u1141\u1142\u1143\u1144\u1145"+
+        "\u1146\u1147\u1148\u1149\u114A\u114B\u114C\u114D"+
+        "\u114E\u114F\u1150\u1151\u1152\u1153\u1154\u1155"+
+        "\u1156\u1157\u1158\u1159\u115A\u115B\u115C\u115D"+
+        "\u115E\u115F\u1160\u1161\u1162\u1163\u1164\u1165"+
+        "\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D"+
+        "\u116E\u116F\u1170\u1171\u1172\u1173\u1174\u1175"+
+        "\u1176\u1177\u1178\u1179\u117A\u117B\u117C\u117D"+
+        "\u117E\u117F\u1180\u1181\u1182\u1183\u1184\u1185"+
+        "\u1186\u1187\u1188\u1189\u118A\u118B\u118C\u118D"+
+        "\u118E\u118F\u1190\u1191\u1192\u1193\u1194\u1195"+
+        "\u1196\u1197\u1198\u1199\u119A\u119B\u119C\u119D"+
+        "\u119E\u119F\u11A0\u11A1\u11A2\u11A3\u11A4\u11A5"+
+        "\u11A6\u11A7\u11A8\u11A9\u11AA\u11AB\u11AC\u11AD"+
+        "\u11AE\u11AF\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5"+
+        "\u11B6\u11B7\u11B8\u11B9\u11BA\u11BB\u11BC\u11BD"+
+        "\u11BE\u11BF\u11C0\u11C1\u11C2\u11C3\u11C4\u11C5"+
+        "\u11C6\u11C7\u11C8\u11C9\u11CA\u11CB\u11CC\u11CD"+
+        "\u11CE\u11CF\u11D0\u11D1\u11D2\u11D3\u11D4\u11D5"+
+        "\u11D6\u11D7\u11D8\u11D9\u11DA\u11DB\u11DC\u11DD"+
+        "\u11DE\u11DF\u11E0\u11E1\u11E2\u11E3\u11E4\u11E5"+
+        "\u11E6\u11E7\u11E8\u11E9\u11EA\u11EB\u11EC\u11ED"+
+        "\u11EE\u11EF\u11F0\u11F1\u11F2\u11F3\u11F4\u11F5"+
+        "\u11F6\u11F7\u11F8\u11F9\u11FA\u11FB\u11FC\u11FD"+
+        "\u11FE\u11FF\u1200\u1201\u1202\u1203\u1204\u1205"+
+        "\u1206\u1207\u1208\u1209\u120A\u120B\u120C\u120D"+
+        "\u120E\u120F\u1210\u1211\u1212\u1213\u1214\u1215"+
+        "\u1216\u1217\u1218\u1219\u121A\u121B\u121C\u121D"+
+        "\u121E\u121F\u1220\u1221\u1222\u1223\u1224\u1225"+
+        "\u1226\u1227\u1228\u1229\u122A\u122B\u122C\u122D"+
+        "\u122E\u122F\u1230\u1231\u1232\u1233\u1234\u1235"+
+        "\u1236\u1237\u1238\u1239\u123A\u123B\u123C\u123D"+
+        "\u123E\u123F\u1240\u1241\u1242\u1243\u1244\u1245"+
+        "\u1246\u1247\u1248\u1249\u124A\u124B\u124C\u124D"+
+        "\u124E\u124F\u1250\u1251\u1252\u1253\u1254\u1255"+
+        "\u1256\u1257\u1258\u1259\u125A\u125B\u125C\u125D"+
+        "\u125E\u125F\u1260\u1261\u1262\u1263\u1264\u1265"+
+        "\u1266\u1267\u1268\u1269\u126A\u126B\u126C\u126D"+
+        "\u126E\u126F\u1270\u1271\u1272\u1273\u1274\u1275"+
+        "\u1276\u1277\u1278\u1279\u127A\u127B\u127C\u127D"+
+        "\u127E\u127F\u1280\u1281\u1282\u1283\u1284\u1285"+
+        "\u1286\u1287\u1288\u1289\u128A\u128B\u128C\u128D"+
+        "\u128E\u128F\u1290\u1291\u1292\u1293\u1294\u1295"+
+        "\u1296\u1297\u1298\u1299\u129A\u129B\u129C\u129D"+
+        "\u129E\u129F\u12A0\u12A1\u12A2\u12A3\u12A4\u12A5"+
+        "\u12A6\u12A7\u12A8\u12A9\u12AA\u12AB\u12AC\u12AD"+
+        "\u12AE\u12AF\u12B0\u12B1\u12B2\u12B3\u12B4\u12B5"+
+        "\u12B6\u12B7\u12B8\u12B9\u12BA\u12BB\u12BC\u12BD"+
+        "\u12BE\u12BF\u12C0\u12C1\u12C2\u12C3\u12C4\u12C5"+
+        "\u12C6\u12C7\u12C8\u12C9\u12CA\u12CB\u12CC\u12CD"+
+        "\u12CE\u12CF\u12D0\u12D1\u12D2\u12D3\u12D4\u12D5"+
+        "\u12D6\u12D7\u12D8\u12D9\u12DA\u12DB\u12DC\u12DD"+
+        "\u12DE\u12DF\u12E0\u12E1\u12E2\u12E3\u12E4\u12E5"+
+        "\u12E6\u12E7\u12E8\u12E9\u12EA\u12EB\u12EC\u12ED"+
+        "\u12EE\u12EF\u12F0\u12F1\u12F2\u12F3\u12F4\u12F5"+
+        "\u12F6\u12F7\u12F8\u12F9\u12FA\u12FB\u12FC\u12FD"+
+        "\u12FE\u12FF\u1300\u1301\u1302\u1303\u1304\u1305"+
+        "\u1306\u1307\u1308\u1309\u130A\u130B\u130C\u130D"+
+        "\u130E\u130F\u1310\u1311\u1312\u1313\u1314\u1315"+
+        "\u1316\u1317\u1318\u1319\u131A\u131B\u131C\u131D"+
+        "\u131E\u131F\u1320\u1321\u1322\u1323\u1324\u1325"+
+        "\u1326\u1327\u1328\u1329\u132A\u132B\u132C\u132D"+
+        "\u132E\u132F\u1330\u1331\u1332\u1333\u1334\u1335"+
+        "\u1336\u1337\u1338\u1339\u133A\u133B\u133C\u133D"+
+        "\u133E\u133F\u1340\u1341\u1342\u1343\u1344\u1345"+
+        "\u1346\u1347\u1348\u1349\u134A\u134B\u134C\u134D"+
+        "\u134E\u134F\u1350\u1351\u1352\u1353\u1354\u1355"+
+        "\u1356\u1357\u1358\u1359\u135A\u135B\u135C\u135D"+
+        "\u135E\u135F\u1360\u1361\u1362\u1363\u1364\u1365"+
+        "\u1366\u1367\u1368\u1369\u136A\u136B\u136C\u136D"+
+        "\u136E\u136F\u1370\u1371\u1372\u1373\u1374\u1375"+
+        "\u1376\u1377\u1378\u1379\u137A\u137B\u137C\u137D"+
+        "\u137E\u137F\u1380\u1381\u1382\u1383\u1384\u1385"+
+        "\u1386\u1387\u1388\u1389\u138A\u138B\u138C\u138D"+
+        "\u138E\u138F\u1390\u1391\u1392\u1393\u1394\u1395"+
+        "\u1396\u1397\u1398\u1399\u139A\u139B\u139C\u139D"+
+        "\u139E\u139F\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5"+
+        "\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD"+
+        "\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5"+
+        "\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD"+
+        "\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4\u13C5"+
+        "\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD"+
+        "\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5"+
+        "\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD"+
+        "\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5"+
+        "\u13E6\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED"+
+        "\u13EE\u13EF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5"+
+        "\u13F6\u13F7\u13F8\u13F9\u13FA\u13FB\u13FC\u13FD"+
+        "\u13FE\u13FF\u1400\u1401\u1402\u1403\u1404\u1405"+
+        "\u1406\u1407\u1408\u1409\u140A\u140B\u140C\u140D"+
+        "\u140E\u140F\u1410\u1411\u1412\u1413\u1414\u1415"+
+        "\u1416\u1417\u1418\u1419\u141A\u141B\u141C\u141D"+
+        "\u141E\u141F\u1420\u1421\u1422\u1423\u1424\u1425"+
+        "\u1426\u1427\u1428\u1429\u142A\u142B\u142C\u142D"+
+        "\u142E\u142F\u1430\u1431\u1432\u1433\u1434\u1435"+
+        "\u1436\u1437\u1438\u1439\u143A\u143B\u143C\u143D"+
+        "\u143E\u143F\u1440\u1441\u1442\u1443\u1444\u1445"+
+        "\u1446\u1447\u1448\u1449\u144A\u144B\u144C\u144D"+
+        "\u144E\u144F\u1450\u1451\u1452\u1453\u1454\u1455"+
+        "\u1456\u1457\u1458\u1459\u145A\u145B\u145C\u145D"+
+        "\u145E\u145F\u1460\u1461\u1462\u1463\u1464\u1465"+
+        "\u1466\u1467\u1468\u1469\u146A\u146B\u146C\u146D"+
+        "\u146E\u146F\u1470\u1471\u1472\u1473\u1474\u1475"+
+        "\u1476\u1477\u1478\u1479\u147A\u147B\u147C\u147D"+
+        "\u147E\u147F\u1480\u1481\u1482\u1483\u1484\u1485"+
+        "\u1486\u1487\u1488\u1489\u148A\u148B\u148C\u148D"+
+        "\u148E\u148F\u1490\u1491\u1492\u1493\u1494\u1495"+
+        "\u1496\u1497\u1498\u1499\u149A\u149B\u149C\u149D"+
+        "\u149E\u149F\u14A0\u14A1\u14A2\u14A3\u14A4\u14A5"+
+        "\u14A6\u14A7\u14A8\u14A9\u14AA\u14AB\u14AC\u14AD"+
+        "\u14AE\u14AF\u14B0\u14B1\u14B2\u14B3\u14B4\u14B5"+
+        "\u14B6\u14B7\u14B8\u14B9\u14BA\u14BB\u14BC\u14BD"+
+        "\u14BE\u14BF\u14C0\u14C1\u14C2\u14C3\u14C4\u14C5"+
+        "\u14C6\u14C7\u14C8\u14C9\u14CA\u14CB\u14CC\u14CD"+
+        "\u14CE\u14CF\u14D0\u14D1\u14D2\u14D3\u14D4\u14D5"+
+        "\u14D6\u14D7\u14D8\u14D9\u14DA\u14DB\u14DC\u14DD"+
+        "\u14DE\u14DF\u14E0\u14E1\u14E2\u14E3\u14E4\u14E5"+
+        "\u14E6\u14E7\u14E8\u14E9\u14EA\u14EB\u14EC\u14ED"+
+        "\u14EE\u14EF\u14F0\u14F1\u14F2\u14F3\u14F4\u14F5"+
+        "\u14F6\u14F7\u14F8\u14F9\u14FA\u14FB\u14FC\u14FD"+
+        "\u14FE\u14FF\u1500\u1501\u1502\u1503\u1504\u1505"+
+        "\u1506\u1507\u1508\u1509\u150A\u150B\u150C\u150D"+
+        "\u150E\u150F\u1510\u1511\u1512\u1513\u1514\u1515"+
+        "\u1516\u1517\u1518\u1519\u151A\u151B\u151C\u151D"+
+        "\u151E\u151F\u1520\u1521\u1522\u1523\u1524\u1525"+
+        "\u1526\u1527\u1528\u1529\u152A\u152B\u152C\u152D"+
+        "\u152E\u152F\u1530\u1531\u1532\u1533\u1534\u1535"+
+        "\u1536\u1537\u1538\u1539\u153A\u153B\u153C\u153D"+
+        "\u153E\u153F\u1540\u1541\u1542\u1543\u1544\u1545"+
+        "\u1546\u1547\u1548\u1549\u154A\u154B\u154C\u154D"+
+        "\u154E\u154F\u1550\u1551\u1552\u1553\u1554\u1555"+
+        "\u1556\u1557\u1558\u1559\u155A\u155B\u155C\u155D"+
+        "\u155E\u155F\u1560\u1561\u1562\u1563\u1564\u1565"+
+        "\u1566\u1567\u1568\u1569\u156A\u156B\u156C\u156D"+
+        "\u156E\u156F\u1570\u1571\u1572\u1573\u1574\u1575"+
+        "\u1576\u1577\u1578\u1579\u157A\u157B\u157C\u157D"+
+        "\u157E\u157F\u1580\u1581\u1582\u1583\u1584\u1585"+
+        "\u1586\u1587\u1588\u1589\u158A\u158B\u158C\u158D"+
+        "\u158E\u158F\u1590\u1591\u1592\u1593\u1594\u1595"+
+        "\u1596\u1597\u1598\u1599\u159A\u159B\u159C\u159D"+
+        "\u159E\u159F\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5"+
+        "\u15A6\u15A7\u15A8\u15A9\u15AA\u15AB\u15AC\u15AD"+
+        "\u15AE\u15AF\u15B0\u15B1\u15B2\u15B3\u15B4\u15B5"+
+        "\u15B6\u15B7\u15B8\u15B9\u15BA\u15BB\u15BC\u15BD"+
+        "\u15BE\u15BF\u15C0\u15C1\u15C2\u15C3\u15C4\u15C5"+
+        "\u15C6\u15C7\u15C8\u15C9\u15CA\u15CB\u15CC\u15CD"+
+        "\u15CE\u15CF\u15D0\u15D1\u15D2\u15D3\u15D4\u15D5"+
+        "\u15D6\u15D7\u15D8\u15D9\u15DA\u15DB\u15DC\u15DD"+
+        "\u15DE\u15DF\u15E0\u15E1\u15E2\u15E3\u15E4\u15E5"+
+        "\u15E6\u15E7\u15E8\u15E9\u15EA\u15EB\u15EC\u15ED"+
+        "\u15EE\u15EF\u15F0\u15F1\u15F2\u15F3\u15F4\u15F5"+
+        "\u15F6\u15F7\u15F8\u15F9\u15FA\u15FB\u15FC\u15FD"+
+        "\u15FE\u15FF\u1600\u1601\u1602\u1603\u1604\u1605"+
+        "\u1606\u1607\u1608\u1609\u160A\u160B\u160C\u160D"+
+        "\u160E\u160F\u1610\u1611\u1612\u1613\u1614\u1615"+
+        "\u1616\u1617\u1618\u1619\u161A\u161B\u161C\u161D"+
+        "\u161E\u161F\u1620\u1621\u1622\u1623\u1624\u1625"+
+        "\u1626\u1627\u1628\u1629\u162A\u162B\u162C\u162D"+
+        "\u162E\u162F\u1630\u1631\u1632\u1633\u1634\u1635"+
+        "\u1636\u1637\u1638\u1639\u163A\u163B\u163C\u163D"+
+        "\u163E\u163F\u1640\u1641\u1642\u1643\u1644\u1645"+
+        "\u1646\u1647\u1648\u1649\u164A\u164B\u164C\u164D"+
+        "\u164E\u164F\u1650\u1651\u1652\u1653\u1654\u1655"+
+        "\u1656\u1657\u1658\u1659\u165A\u165B\u165C\u165D"+
+        "\u165E\u165F\u1660\u1661\u1662\u1663\u1664\u1665"+
+        "\u1666\u1667\u1668\u1669\u166A\u166B\u166C\u166D"+
+        "\u166E\u166F\u1670\u1671\u1672\u1673\u1674\u1675"+
+        "\u1676\u1677\u1678\u1679\u167A\u167B\u167C\u167D"+
+        "\u167E\u167F\u1680\u1681\u1682\u1683\u1684\u1685"+
+        "\u1686\u1687\u1688\u1689\u168A\u168B\u168C\u168D"+
+        "\u168E\u168F\u1690\u1691\u1692\u1693\u1694\u1695"+
+        "\u1696\u1697\u1698\u1699\u169A\u169B\u169C\u169D"+
+        "\u169E\u169F\u16A0\u16A1\u16A2\u16A3\u16A4\u16A5"+
+        "\u16A6\u16A7\u16A8\u16A9\u16AA\u16AB\u16AC\u16AD"+
+        "\u16AE\u16AF\u16B0\u16B1\u16B2\u16B3\u16B4\u16B5"+
+        "\u16B6\u16B7\u16B8\u16B9\u16BA\u16BB\u16BC\u16BD"+
+        "\u16BE\u16BF\u16C0\u16C1\u16C2\u16C3\u16C4\u16C5"+
+        "\u16C6\u16C7\u16C8\u16C9\u16CA\u16CB\u16CC\u16CD"+
+        "\u16CE\u16CF\u16D0\u16D1\u16D2\u16D3\u16D4\u16D5"+
+        "\u16D6\u16D7\u16D8\u16D9\u16DA\u16DB\u16DC\u16DD"+
+        "\u16DE\u16DF\u16E0\u16E1\u16E2\u16E3\u16E4\u16E5"+
+        "\u16E6\u16E7\u16E8\u16E9\u16EA\u16EB\u16EC\u16ED"+
+        "\u16EE\u16EF\u16F0\u16F1\u16F2\u16F3\u16F4\u16F5"+
+        "\u16F6\u16F7\u16F8\u16F9\u16FA\u16FB\u16FC\u16FD"+
+        "\u16FE\u16FF\u1700\u1701\u1702\u1703\u1704\u1705"+
+        "\u1706\u1707\u1708\u1709\u170A\u170B\u170C\u170D"+
+        "\u170E\u170F\u1710\u1711\u1712\u1713\u1714\u1715"+
+        "\u1716\u1717\u1718\u1719\u171A\u171B\u171C\u171D"+
+        "\u171E\u171F\u1720\u1721\u1722\u1723\u1724\u1725"+
+        "\u1726\u1727\u1728\u1729\u172A\u172B\u172C\u172D"+
+        "\u172E\u172F\u1730\u1731\u1732\u1733\u1734\u1735"+
+        "\u1736\u1737\u1738\u1739\u173A\u173B\u173C\u173D"+
+        "\u173E\u173F\u1740\u1741\u1742\u1743\u1744\u1745"+
+        "\u1746\u1747\u1748\u1749\u174A\u174B\u174C\u174D"+
+        "\u174E\u174F\u1750\u1751\u1752\u1753\u1754\u1755"+
+        "\u1756\u1757\u1758\u1759\u175A\u175B\u175C\u175D"+
+        "\u175E\u175F\u1760\u1761\u1762\u1763\u1764\u1765"+
+        "\u1766\u1767\u1768\u1769\u176A\u176B\u176C\u176D"+
+        "\u176E\u176F\u1770\u1771\u1772\u1773\u1774\u1775"+
+        "\u1776\u1777\u1778\u1779\u177A\u177B\u177C\u177D"+
+        "\u177E\u177F\u1780\u1781\u1782\u1783\u1784\u1785"+
+        "\u1786\u1787\u1788\u1789\u178A\u178B\u178C\u178D"+
+        "\u178E\u178F\u1790\u1791\u1792\u1793\u1794\u1795"+
+        "\u1796\u1797\u1798\u1799\u179A\u179B\u179C\u179D"+
+        "\u179E\u179F\u17A0\u17A1\u17A2\u17A3\u17A4\u17A5"+
+        "\u17A6\u17A7\u17A8\u17A9\u17AA\u17AB\u17AC\u17AD"+
+        "\u17AE\u17AF\u17B0\u17B1\u17B2\u17B3\u17B4\u17B5"+
+        "\u17B6\u17B7\u17B8\u17B9\u17BA\u17BB\u17BC\u17BD"+
+        "\u17BE\u17BF\u17C0\u17C1\u17C2\u17C3\u17C4\u17C5"+
+        "\u17C6\u17C7\u17C8\u17C9\u17CA\u17CB\u17CC\u17CD"+
+        "\u17CE\u17CF\u17D0\u17D1\u17D2\u17D3\u17D4\u17D5"+
+        "\u17D6\u17D7\u17D8\u17D9\u17DA\u17DB\u17DC\u17DD"+
+        "\u17DE\u17DF\u17E0\u17E1\u17E2\u17E3\u17E4\u17E5"+
+        "\u17E6\u17E7\u17E8\u17E9\u17EA\u17EB\u17EC\u17ED"+
+        "\u17EE\u17EF\u17F0\u17F1\u17F2\u17F3\u17F4\u17F5"+
+        "\u17F6\u17F7\u17F8\u17F9\u17FA\u17FB\u17FC\u17FD"+
+        "\u17FE\u17FF\u1800\u1801\u1802\u1803\u1804\u1805"+
+        "\u1806\u1807\u1808\u1809\u180A\u180B\u180C\u180D"+
+        "\u180E\u180F\u1810\u1811\u1812\u1813\u1814\u1815"+
+        "\u1816\u1817\u1818\u1819\u181A\u181B\u181C\u181D"+
+        "\u181E\u181F\u1820\u1821\u1822\u1823\u1824\u1825"+
+        "\u1826\u1827\u1828\u1829\u182A\u182B\u182C\u182D"+
+        "\u182E\u182F\u1830\u1831\u1832\u1833\u1834\u1835"+
+        "\u1836\u1837\u1838\u1839\u183A\u183B\u183C\u183D"+
+        "\u183E\u183F\u1840\u1841\u1842\u1843\u1844\u1845"+
+        "\u1846\u1847\u1848\u1849\u184A\u184B\u184C\u184D"+
+        "\u184E\u184F\u1850\u1851\u1852\u1853\u1854\u1855"+
+        "\u1856\u1857\u1858\u1859\u185A\u185B\u185C\u185D"+
+        "\u185E\u185F\u1860\u1861\u1862\u1863\u1864\u1865"+
+        "\u1866\u1867\u1868\u1869\u186A\u186B\u186C\u186D"+
+        "\u186E\u186F\u1870\u1871\u1872\u1873\u1874\u1875"+
+        "\u1876\u1877\u1878\u1879\u187A\u187B\u187C\u187D"+
+        "\u187E\u187F\u1880\u1881\u1882\u1883\u1884\u1885"+
+        "\u1886\u1887\u1888\u1889\u188A\u188B\u188C\u188D"+
+        "\u188E\u188F\u1890\u1891\u1892\u1893\u1894\u1895"+
+        "\u1896\u1897\u1898\u1899\u189A\u189B\u189C\u189D"+
+        "\u189E\u189F\u18A0\u18A1\u18A2\u18A3\u18A4\u18A5"+
+        "\u18A6\u18A7\u18A8\u18A9\u18AA\u18AB\u18AC\u18AD"+
+        "\u18AE\u18AF\u18B0\u18B1\u18B2\u18B3\u18B4\u18B5"+
+        "\u18B6\u18B7\u18B8\u18B9\u18BA\u18BB\u18BC\u18BD"+
+        "\u18BE\u18BF\u18C0\u18C1\u18C2\u18C3\u18C4\u18C5"+
+        "\u18C6\u18C7\u18C8\u18C9\u18CA\u18CB\u18CC\u18CD"+
+        "\u18CE\u18CF\u18D0\u18D1\u18D2\u18D3\u18D4\u18D5"+
+        "\u18D6\u18D7\u18D8\u18D9\u18DA\u18DB\u18DC\u18DD"+
+        "\u18DE\u18DF\u18E0\u18E1\u18E2\u18E3\u18E4\u18E5"+
+        "\u18E6\u18E7\u18E8\u18E9\u18EA\u18EB\u18EC\u18ED"+
+        "\u18EE\u18EF\u18F0\u18F1\u18F2\u18F3\u18F4\u18F5"+
+        "\u18F6\u18F7\u18F8\u18F9\u18FA\u18FB\u18FC\u18FD"+
+        "\u18FE\u18FF\u1900\u1901\u1902\u1903\u1904\u1905"+
+        "\u1906\u1907\u1908\u1909\u190A\u190B\u190C\u190D"+
+        "\u190E\u190F\u1910\u1911\u1912\u1913\u1914\u1915"+
+        "\u1916\u1917\u1918\u1919\u191A\u191B\u191C\u191D"+
+        "\u191E\u191F\u1920\u1921\u1922\u1923\u1924\u1925"+
+        "\u1926\u1927\u1928\u1929\u192A\u192B\u192C\u192D"+
+        "\u192E\u192F\u1930\u1931\u1932\u1933\u1934\u1935"+
+        "\u1936\u1937\u1938\u1939\u193A\u193B\u193C\u193D"+
+        "\u193E\u193F\u1940\u1941\u1942\u1943\u1944\u1945"+
+        "\u1946\u1947\u1948\u1949\u194A\u194B\u194C\u194D"+
+        "\u194E\u194F\u1950\u1951\u1952\u1953\u1954\u1955"+
+        "\u1956\u1957\u1958\u1959\u195A\u195B\u195C\u195D"+
+        "\u195E\u195F\u1960\u1961\u1962\u1963\u1964\u1965"+
+        "\u1966\u1967\u1968\u1969\u196A\u196B\u196C\u196D"+
+        "\u196E\u196F\u1970\u1971\u1972\u1973\u1974\u1975"+
+        "\u1976\u1977\u1978\u1979\u197A\u197B\u197C\u197D"+
+        "\u197E\u197F\u1980\u1981\u1982\u1983\u1984\u1985"+
+        "\u1986\u1987\u1988\u1989\u198A\u198B\u198C\u198D"+
+        "\u198E\u198F\u1990\u1991\u1992\u1993\u1994\u1995"+
+        "\u1996\u1997\u1998\u1999\u199A\u199B\u199C\u199D"+
+        "\u199E\u199F\u19A0\u19A1\u19A2\u19A3\u19A4\u19A5"+
+        "\u19A6\u19A7\u19A8\u19A9\u19AA\u19AB\u19AC\u19AD"+
+        "\u19AE\u19AF\u19B0\u19B1\u19B2\u19B3\u19B4\u19B5"+
+        "\u19B6\u19B7\u19B8\u19B9\u19BA\u19BB\u19BC\u19BD"+
+        "\u19BE\u19BF\u19C0\u19C1\u19C2\u19C3\u19C4\u19C5"+
+        "\u19C6\u19C7\u19C8\u19C9\u19CA\u19CB\u19CC\u19CD"+
+        "\u19CE\u19CF\u19D0\u19D1\u19D2\u19D3\u19D4\u19D5"+
+        "\u19D6\u19D7\u19D8\u19D9\u19DA\u19DB\u19DC\u19DD"+
+        "\u19DE\u19DF\u19E0\u19E1\u19E2\u19E3\u19E4\u19E5"+
+        "\u19E6\u19E7\u19E8\u19E9\u19EA\u19EB\u19EC\u19ED"+
+        "\u19EE\u19EF\u19F0\u19F1\u19F2\u19F3\u19F4\u19F5"+
+        "\u19F6\u19F7\u19F8\u19F9\u19FA\u19FB\u19FC\u19FD"+
+        "\u19FE\u19FF\u1A00\u1A01\u1A02\u1A03\u1A04\u1A05"+
+        "\u1A06\u1A07\u1A08\u1A09\u1A0A\u1A0B\u1A0C\u1A0D"+
+        "\u1A0E\u1A0F\u1A10\u1A11\u1A12\u1A13\u1A14\u1A15"+
+        "\u1A16\u1A17\u1A18\u1A19\u1A1A\u1A1B\u1A1C\u1A1D"+
+        "\u1A1E\u1A1F\u1A20\u1A21\u1A22\u1A23\u1A24\u1A25"+
+        "\u1A26\u1A27\u1A28\u1A29\u1A2A\u1A2B\u1A2C\u1A2D"+
+        "\u1A2E\u1A2F\u1A30\u1A31\u1A32\u1A33\u1A34\u1A35"+
+        "\u1A36\u1A37\u1A38\u1A39\u1A3A\u1A3B\u1A3C\u1A3D"+
+        "\u1A3E\u1A3F\u1A40\u1A41\u1A42\u1A43\u1A44\u1A45"+
+        "\u1A46\u1A47\u1A48\u1A49\u1A4A\u1A4B\u1A4C\u1A4D"+
+        "\u1A4E\u1A4F\u1A50\u1A51\u1A52\u1A53\u1A54\u1A55"+
+        "\u1A56\u1A57\u1A58\u1A59\u1A5A\u1A5B\u1A5C\u1A5D"+
+        "\u1A5E\u1A5F\u1A60\u1A61\u1A62\u1A63\u1A64\u1A65"+
+        "\u1A66\u1A67\u1A68\u1A69\u1A6A\u1A6B\u1A6C\u1A6D"+
+        "\u1A6E\u1A6F\u1A70\u1A71\u1A72\u1A73\u1A74\u1A75"+
+        "\u1A76\u1A77\u1A78\u1A79\u1A7A\u1A7B\u1A7C\u1A7D"+
+        "\u1A7E\u1A7F\u1A80\u1A81\u1A82\u1A83\u1A84\u1A85"+
+        "\u1A86\u1A87\u1A88\u1A89\u1A8A\u1A8B\u1A8C\u1A8D"+
+        "\u1A8E\u1A8F\u1A90\u1A91\u1A92\u1A93\u1A94\u1A95"+
+        "\u1A96\u1A97\u1A98\u1A99\u1A9A\u1A9B\u1A9C\u1A9D"+
+        "\u1A9E\u1A9F\u1AA0\u1AA1\u1AA2\u1AA3\u1AA4\u1AA5"+
+        "\u1AA6\u1AA7\u1AA8\u1AA9\u1AAA\u1AAB\u1AAC\u1AAD"+
+        "\u1AAE\u1AAF\u1AB0\u1AB1\u1AB2\u1AB3\u1AB4\u1AB5"+
+        "\u1AB6\u1AB7\u1AB8\u1AB9\u1ABA\u1ABB\u1ABC\u1ABD"+
+        "\u1ABE\u1ABF\u1AC0\u1AC1\u1AC2\u1AC3\u1AC4\u1AC5"+
+        "\u1AC6\u1AC7\u1AC8\u1AC9\u1ACA\u1ACB\u1ACC\u1ACD"+
+        "\u1ACE\u1ACF\u1AD0\u1AD1\u1AD2\u1AD3\u1AD4\u1AD5"+
+        "\u1AD6\u1AD7\u1AD8\u1AD9\u1ADA\u1ADB\u1ADC\u1ADD"+
+        "\u1ADE\u1ADF\u1AE0\u1AE1\u1AE2\u1AE3\u1AE4\u1AE5"+
+        "\u1AE6\u1AE7\u1AE8\u1AE9\u1AEA\u1AEB\u1AEC\u1AED"+
+        "\u1AEE\u1AEF\u1AF0\u1AF1\u1AF2\u1AF3\u1AF4\u1AF5"+
+        "\u1AF6\u1AF7\u1AF8\u1AF9\u1AFA\u1AFB\u1AFC\u1AFD"+
+        "\u1AFE\u1AFF\u1B00\u1B01\u1B02\u1B03\u1B04\u1B05"+
+        "\u1B06\u1B07\u1B08\u1B09\u1B0A\u1B0B\u1B0C\u1B0D"+
+        "\u1B0E\u1B0F\u1B10\u1B11\u1B12\u1B13\u1B14\u1B15"+
+        "\u1B16\u1B17\u1B18\u1B19\u1B1A\u1B1B\u1B1C\u1B1D"+
+        "\u1B1E\u1B1F\u1B20\u1B21\u1B22\u1B23\u1B24\u1B25"+
+        "\u1B26\u1B27\u1B28\u1B29\u1B2A\u1B2B\u1B2C\u1B2D"+
+        "\u1B2E\u1B2F\u1B30\u1B31\u1B32\u1B33\u1B34\u1B35"+
+        "\u1B36\u1B37\u1B38\u1B39\u1B3A\u1B3B\u1B3C\u1B3D"+
+        "\u1B3E\u1B3F\u1B40\u1B41\u1B42\u1B43\u1B44\u1B45"+
+        "\u1B46\u1B47\u1B48\u1B49\u1B4A\u1B4B\u1B4C\u1B4D"+
+        "\u1B4E\u1B4F\u1B50\u1B51\u1B52\u1B53\u1B54\u1B55"+
+        "\u1B56\u1B57\u1B58\u1B59\u1B5A\u1B5B\u1B5C\u1B5D"+
+        "\u1B5E\u1B5F\u1B60\u1B61\u1B62\u1B63\u1B64\u1B65"+
+        "\u1B66\u1B67\u1B68\u1B69\u1B6A\u1B6B\u1B6C\u1B6D"+
+        "\u1B6E\u1B6F\u1B70\u1B71\u1B72\u1B73\u1B74\u1B75"+
+        "\u1B76\u1B77\u1B78\u1B79\u1B7A\u1B7B\u1B7C\u1B7D"+
+        "\u1B7E\u1B7F\u1B80\u1B81\u1B82\u1B83\u1B84\u1B85"+
+        "\u1B86\u1B87\u1B88\u1B89\u1B8A\u1B8B\u1B8C\u1B8D"+
+        "\u1B8E\u1B8F\u1B90\u1B91\u1B92\u1B93\u1B94\u1B95"+
+        "\u1B96\u1B97\u1B98\u1B99\u1B9A\u1B9B\u1B9C\u1B9D"+
+        "\u1B9E\u1B9F\u1BA0\u1BA1\u1BA2\u1BA3\u1BA4\u1BA5"+
+        "\u1BA6\u1BA7\u1BA8\u1BA9\u1BAA\u1BAB\u1BAC\u1BAD"+
+        "\u1BAE\u1BAF\u1BB0\u1BB1\u1BB2\u1BB3\u1BB4\u1BB5"+
+        "\u1BB6\u1BB7\u1BB8\u1BB9\u1BBA\u1BBB\u1BBC\u1BBD"+
+        "\u1BBE\u1BBF\u1BC0\u1BC1\u1BC2\u1BC3\u1BC4\u1BC5"+
+        "\u1BC6\u1BC7\u1BC8\u1BC9\u1BCA\u1BCB\u1BCC\u1BCD"+
+        "\u1BCE\u1BCF\u1BD0\u1BD1\u1BD2\u1BD3\u1BD4\u1BD5"+
+        "\u1BD6\u1BD7\u1BD8\u1BD9\u1BDA\u1BDB\u1BDC\u1BDD"+
+        "\u1BDE\u1BDF\u1BE0\u1BE1\u1BE2\u1BE3\u1BE4\u1BE5"+
+        "\u1BE6\u1BE7\u1BE8\u1BE9\u1BEA\u1BEB\u1BEC\u1BED"+
+        "\u1BEE\u1BEF\u1BF0\u1BF1\u1BF2\u1BF3\u1BF4\u1BF5"+
+        "\u1BF6\u1BF7\u1BF8\u1BF9\u1BFA\u1BFB\u1BFC\u1BFD"+
+        "\u1BFE\u1BFF\u1C00\u1C01\u1C02\u1C03\u1C04\u1C05"+
+        "\u1C06\u1C07\u1C08\u1C09\u1C0A\u1C0B\u1C0C\u1C0D"+
+        "\u1C0E\u1C0F\u1C10\u1C11\u1C12\u1C13\u1C14\u1C15"+
+        "\u1C16\u1C17\u1C18\u1C19\u1C1A\u1C1B\u1C1C\u1C1D"+
+        "\u1C1E\u1C1F\u1C20\u1C21\u1C22\u1C23\u1C24\u1C25"+
+        "\u1C26\u1C27\u1C28\u1C29\u1C2A\u1C2B\u1C2C\u1C2D"+
+        "\u1C2E\u1C2F\u1C30\u1C31\u1C32\u1C33\u1C34\u1C35"+
+        "\u1C36\u1C37\u1C38\u1C39\u1C3A\u1C3B\u1C3C\u1C3D"+
+        "\u1C3E\u1C3F\u1C40\u1C41\u1C42\u1C43\u1C44\u1C45"+
+        "\u1C46\u1C47\u1C48\u1C49\u1C4A\u1C4B\u1C4C\u1C4D"+
+        "\u1C4E\u1C4F\u1C50\u1C51\u1C52\u1C53\u1C54\u1C55"+
+        "\u1C56\u1C57\u1C58\u1C59\u1C5A\u1C5B\u1C5C\u1C5D"+
+        "\u1C5E\u1C5F\u1C60\u1C61\u1C62\u1C63\u1C64\u1C65"+
+        "\u1C66\u1C67\u1C68\u1C69\u1C6A\u1C6B\u1C6C\u1C6D"+
+        "\u1C6E\u1C6F\u1C70\u1C71\u1C72\u1C73\u1C74\u1C75"+
+        "\u1C76\u1C77\u1C78\u1C79\u1C7A\u1C7B\u1C7C\u1C7D"+
+        "\u1C7E\u1C7F\u1C80\u1C81\u1C82\u1C83\u1C84\u1C85"+
+        "\u1C86\u1C87\u1C88\u1C89\u1C8A\u1C8B\u1C8C\u1C8D"+
+        "\u1C8E\u1C8F\u1C90\u1C91\u1C92\u1C93\u1C94\u1C95"+
+        "\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D"+
+        "\u1C9E\u1C9F\u1CA0\u1CA1\u1CA2\u1CA3\u1CA4\u1CA5"+
+        "\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD"+
+        "\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2\u1CB3\u1CB4\u1CB5"+
+        "\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBB\u1CBC\u1CBD"+
+        "\u1CBE\u1CBF\u1CC0\u1CC1\u1CC2\u1CC3\u1CC4\u1CC5"+
+        "\u1CC6\u1CC7\u1CC8\u1CC9\u1CCA\u1CCB\u1CCC\u1CCD"+
+        "\u1CCE\u1CCF\u1CD0\u1CD1\u1CD2\u1CD3\u1CD4\u1CD5"+
+        "\u1CD6\u1CD7\u1CD8\u1CD9\u1CDA\u1CDB\u1CDC\u1CDD"+
+        "\u1CDE\u1CDF\u1CE0\u1CE1\u1CE2\u1CE3\u1CE4\u1CE5"+
+        "\u1CE6\u1CE7\u1CE8\u1CE9\u1CEA\u1CEB\u1CEC\u1CED"+
+        "\u1CEE\u1CEF\u1CF0\u1CF1\u1CF2\u1CF3\u1CF4\u1CF5"+
+        "\u1CF6\u1CF7\u1CF8\u1CF9\u1CFA\u1CFB\u1CFC\u1CFD"+
+        "\u1CFE\u1CFF\u1D00\u1D01\u1D02\u1D03\u1D04\u1D05"+
+        "\u1D06\u1D07\u1D08\u1D09\u1D0A\u1D0B\u1D0C\u1D0D"+
+        "\u1D0E\u1D0F\u1D10\u1D11\u1D12\u1D13\u1D14\u1D15"+
+        "\u1D16\u1D17\u1D18\u1D19\u1D1A\u1D1B\u1D1C\u1D1D"+
+        "\u1D1E\u1D1F\u1D20\u1D21\u1D22\u1D23\u1D24\u1D25"+
+        "\u1D26\u1D27\u1D28\u1D29\u1D2A\u1D2B\u1D2C\u1D2D"+
+        "\u1D2E\u1D2F\u1D30\u1D31\u1D32\u1D33\u1D34\u1D35"+
+        "\u1D36\u1D37\u1D38\u1D39\u1D3A\u1D3B\u1D3C\u1D3D"+
+        "\u1D3E\u1D3F\u1D40\u1D41\u1D42\u1D43\u1D44\u1D45"+
+        "\u1D46\u1D47\u1D48\u1D49\u1D4A\u1D4B\u1D4C\u1D4D"+
+        "\u1D4E\u1D4F\u1D50\u1D51\u1D52\u1D53\u1D54\u1D55"+
+        "\u1D56\u1D57\u1D58\u1D59\u1D5A\u1D5B\u1D5C\u1D5D"+
+        "\u1D5E\u1D5F\u1D60\u1D61\u1D62\u1D63\u1D64\u1D65"+
+        "\u1D66\u1D67\u1D68\u1D69\u1D6A\u1D6B\u1D6C\u1D6D"+
+        "\u1D6E\u1D6F\u1D70\u1D71\u1D72\u1D73\u1D74\u1D75"+
+        "\u1D76\u1D77\u1D78\u1D79\u1D7A\u1D7B\u1D7C\u1D7D"+
+        "\u1D7E\u1D7F\u1D80\u1D81\u1D82\u1D83\u1D84\u1D85"+
+        "\u1D86\u1D87\u1D88\u1D89\u1D8A\u1D8B\u1D8C\u1D8D"+
+        "\u1D8E\u1D8F\u1D90\u1D91\u1D92\u1D93\u1D94\u1D95"+
+        "\u1D96\u1D97\u1D98\u1D99\u1D9A\u1D9B\u1D9C\u1D9D"+
+        "\u1D9E\u1D9F\u1DA0\u1DA1\u1DA2\u1DA3\u1DA4\u1DA5"+
+        "\u1DA6\u1DA7\u1DA8\u1DA9\u1DAA\u1DAB\u1DAC\u1DAD"+
+        "\u1DAE\u1DAF\u1DB0\u1DB1\u1DB2\u1DB3\u1DB4\u1DB5"+
+        "\u1DB6\u1DB7\u1DB8\u1DB9\u1DBA\u1DBB\u1DBC\u1DBD"+
+        "\u1DBE\u1DBF\u1DC0\u1DC1\u1DC2\u1DC3\u1DC4\u1DC5"+
+        "\u1DC6\u1DC7\u1DC8\u1DC9\u1DCA\u1DCB\u1DCC\u1DCD"+
+        "\u1DCE\u1DCF\u1DD0\u1DD1\u1DD2\u1DD3\u1DD4\u1DD5"+
+        "\u1DD6\u1DD7\u1DD8\u1DD9\u1DDA\u1DDB\u1DDC\u1DDD"+
+        "\u1DDE\u1DDF\u1DE0\u1DE1\u1DE2\u1DE3\u1DE4\u1DE5"+
+        "\u1DE6\u1DE7\u1DE8\u1DE9\u1DEA\u1DEB\u1DEC\u1DED"+
+        "\u1DEE\u1DEF\u1DF0\u1DF1\u1DF2\u1DF3\u1DF4\u1DF5"+
+        "\u1DF6\u1DF7\u1DF8\u1DF9\u1DFA\u1DFB\u1DFC\u1DFD"+
+        "\u1DFE\u1DFF\u1E00\u1E01\u1E02\u1E03\u1E04\u1E05"+
+        "\u1E06\u1E07\u1E08\u1E09\u1E0A\u1E0B\u1E0C\u1E0D"+
+        "\u1E0E\u1E0F\u1E10\u1E11\u1E12\u1E13\u1E14\u1E15"+
+        "\u1E16\u1E17\u1E18\u1E19\u1E1A\u1E1B\u1E1C\u1E1D"+
+        "\u1E1E\u1E1F\u1E20\u1E21\u1E22\u1E23\u1E24\u1E25"+
+        "\u1E26\u1E27\u1E28\u1E29\u1E2A\u1E2B\u1E2C\u1E2D"+
+        "\u1E2E\u1E2F\u1E30\u1E31\u1E32\u1E33\u1E34\u1E35"+
+        "\u1E36\u1E37\u1E38\u1E39\u1E3A\u1E3B\u1E3C\u1E3D"+
+        "\u1E3E\u1E3F\u1E40\u1E41\u1E42\u1E43\u1E44\u1E45"+
+        "\u1E46\u1E47\u1E48\u1E49\u1E4A\u1E4B\u1E4C\u1E4D"+
+        "\u1E4E\u1E4F\u1E50\u1E51\u1E52\u1E53\u1E54\u1E55"+
+        "\u1E56\u1E57\u1E58\u1E59\u1E5A\u1E5B\u1E5C\u1E5D"+
+        "\u1E5E\u1E5F\u1E60\u1E61\u1E62\u1E63\u1E64\u1E65"+
+        "\u1E66\u1E67\u1E68\u1E69\u1E6A\u1E6B\u1E6C\u1E6D"+
+        "\u1E6E\u1E6F\u1E70\u1E71\u1E72\u1E73\u1E74\u1E75"+
+        "\u1E76\u1E77\u1E78\u1E79\u1E7A\u1E7B\u1E7C\u1E7D"+
+        "\u1E7E\u1E7F\u1E80\u1E81\u1E82\u1E83\u1E84\u1E85"+
+        "\u1E86\u1E87\u1E88\u1E89\u1E8A\u1E8B\u1E8C\u1E8D"+
+        "\u1E8E\u1E8F\u1E90\u1E91\u1E92\u1E93\u1E94\u1E95"+
+        "\u1E96\u1E97\u1E98\u1E99\u1E9A\u1E9B\u1E9C\u1E9D"+
+        "\u1E9E\u1E9F\u1EA0\u1EA1\u1EA2\u1EA3\u1EA4\u1EA5"+
+        "\u1EA6\u1EA7\u1EA8\u1EA9\u1EAA\u1EAB\u1EAC\u1EAD"+
+        "\u1EAE\u1EAF\u1EB0\u1EB1\u1EB2\u1EB3\u1EB4\u1EB5"+
+        "\u1EB6\u1EB7\u1EB8\u1EB9\u1EBA\u1EBB\u1EBC\u1EBD"+
+        "\u1EBE\u1EBF\u1EC0\u1EC1\u1EC2\u1EC3\u1EC4\u1EC5"+
+        "\u1EC6\u1EC7\u1EC8\u1EC9\u1ECA\u1ECB\u1ECC\u1ECD"+
+        "\u1ECE\u1ECF\u1ED0\u1ED1\u1ED2\u1ED3\u1ED4\u1ED5"+
+        "\u1ED6\u1ED7\u1ED8\u1ED9\u1EDA\u1EDB\u1EDC\u1EDD"+
+        "\u1EDE\u1EDF\u1EE0\u1EE1\u1EE2\u1EE3\u1EE4\u1EE5"+
+        "\u1EE6\u1EE7\u1EE8\u1EE9\u1EEA\u1EEB\u1EEC\u1EED"+
+        "\u1EEE\u1EEF\u1EF0\u1EF1\u1EF2\u1EF3\u1EF4\u1EF5"+
+        "\u1EF6\u1EF7\u1EF8\u1EF9\u1EFA\u1EFB\u1EFC\u1EFD"+
+        "\u1EFE\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05"+
+        "\u1F06\u1F07\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D"+
+        "\u1F0E\u1F0F\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15"+
+        "\u1F16\u1F17\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D"+
+        "\u1F1E\u1F1F\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25"+
+        "\u1F26\u1F27\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D"+
+        "\u1F2E\u1F2F\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35"+
+        "\u1F36\u1F37\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D"+
+        "\u1F3E\u1F3F\u1F40\u1F41\u1F42\u1F43\u1F44\u1F45"+
+        "\u1F46\u1F47\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D"+
+        "\u1F4E\u1F4F\u1F50\u1F51\u1F52\u1F53\u1F54\u1F55"+
+        "\u1F56\u1F57\u1F58\u1F59\u1F5A\u1F5B\u1F5C\u1F5D"+
+        "\u1F5E\u1F5F\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65"+
+        "\u1F66\u1F67\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D"+
+        "\u1F6E\u1F6F\u1F70\u1F71\u1F72\u1F73\u1F74\u1F75"+
+        "\u1F76\u1F77\u1F78\u1F79\u1F7A\u1F7B\u1F7C\u1F7D"+
+        "\u1F7E\u1F7F\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85"+
+        "\u1F86\u1F87\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D"+
+        "\u1F8E\u1F8F\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95"+
+        "\u1F96\u1F97\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D"+
+        "\u1F9E\u1F9F\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5"+
+        "\u1FA6\u1FA7\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD"+
+        "\u1FAE\u1FAF\u1FB0\u1FB1\u1FB2\u1FB3\u1FB4\u1FB5"+
+        "\u1FB6\u1FB7\u1FB8\u1FB9\u1FBA\u1FBB\u1FBC\u1FBD"+
+        "\u1FBE\u1FBF\u1FC0\u1FC1\u1FC2\u1FC3\u1FC4\u1FC5"+
+        "\u1FC6\u1FC7\u1FC8\u1FC9\u1FCA\u1FCB\u1FCC\u1FCD"+
+        "\u1FCE\u1FCF\u1FD0\u1FD1\u1FD2\u1FD3\u1FD4\u1FD5"+
+        "\u1FD6\u1FD7\u1FD8\u1FD9\u1FDA\u1FDB\u1FDC\u1FDD"+
+        "\u1FDE\u1FDF\u1FE0\u1FE1\u1FE2\u1FE3\u1FE4\u1FE5"+
+        "\u1FE6\u1FE7\u1FE8\u1FE9\u1FEA\u1FEB\u1FEC\u1FED"+
+        "\u1FEE\u1FEF\u1FF0\u1FF1\u1FF2\u1FF3\u1FF4\u1FF5"+
+        "\u1FF6\u1FF7\u1FF8\u1FF9\u1FFA\u1FFB\u1FFC\u1FFD"+
+        "\u1FFE\u1FFF\u2000\u2001\u2002\u2003\u2004\u2005"+
+        "\u2006\u2007\u2008\u2009\u200A\u200B\u200C\u200D"+
+        "\u200E\u200F\u2011\u2012\u2017\u201A\u201B\u201E"+
+        "\u201F\u2020\u2021\u2022\u2023\u2024\u2027\u2028"+
+        "\u2029\u202A\u202B\u202C\u202D\u202E\u202F\u2031"+
+        "\u2034\u2036\u2037\u2038\u2039\u203A\u203C\u203D"+
+        "\u203E\u203F\u2040\u2041\u2042\u2043\u2044\u2045"+
+        "\u2046\u2047\u2048\u2049\u204A\u204B\u204C\u204D"+
+        "\u204E\u204F\u2050\u2051\u2052\u2053\u2054\u2055"+
+        "\u2056\u2057\u2058\u2059\u205A\u205B\u205C\u205D"+
+        "\u205E\u205F\u2060\u2061\u2062\u2063\u2064\u2065"+
+        "\u2066\u2067\u2068\u2069\u206A\u206B\u206C\u206D"+
+        "\u206E\u206F\u2070\u2071\u2072\u2073\u2074\u2075"+
+        "\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D"+
+        "\u207E\u207F\u2080\u2081\u2082\u2083\u2084\u2085"+
+        "\u2086\u2087\u2088\u2089\u208A\u208B\u208C\u208D"+
+        "\u208E\u208F\u2090\u2091\u2092\u2093\u2094\u2095"+
+        "\u2096\u2097\u2098\u2099\u209A\u209B\u209C\u209D"+
+        "\u209E\u209F\u20A0\u20A1\u20A2\u20A3\u20A4\u20A5"+
+        "\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB\u20AD\u20AE"+
+        "\u20AF\u20B0\u20B1\u20B2\u20B3\u20B4\u20B5\u20B6"+
+        "\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC\u20BD\u20BE"+
+        "\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4\u20C5\u20C6"+
+        "\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC\u20CD\u20CE"+
+        "\u20CF\u20D0\u20D1\u20D2\u20D3\u20D4\u20D5\u20D6"+
+        "\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC\u20DD\u20DE"+
+        "\u20DF\u20E0\u20E1\u20E2\u20E3\u20E4\u20E5\u20E6"+
+        "\u20E7\u20E8\u20E9\u20EA\u20EB\u20EC\u20ED\u20EE"+
+        "\u20EF\u20F0\u20F1\u20F2\u20F3\u20F4\u20F5\u20F6"+
+        "\u20F7\u20F8\u20F9\u20FA\u20FB\u20FC\u20FD\u20FE"+
+        "\u20FF\u2100\u2101\u2102\u2104\u2106\u2107\u2108"+
+        "\u210A\u210B\u210C\u210D\u210E\u210F\u2110\u2111"+
+        "\u2112\u2113\u2114\u2115\u2117\u2118\u2119\u211A"+
+        "\u211B\u211C\u211D\u211E\u211F\u2120\u2122\u2123"+
+        "\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B"+
+        "\u212C\u212D\u212E\u212F\u2130\u2131\u2132\u2133";
+
+    private final static String innerDecoderIndex2=
+        "\u2134\u2135\u2136\u2137\u2138\u2139\u213A\u213B"+
+        "\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143"+
+        "\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B"+
+        "\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153"+
+        "\u2154\u2155\u2156\u2157\u2158\u2159\u215A\u215B"+
+        "\u215C\u215D\u215E\u215F\u216C\u216D\u216E\u216F"+
+        "\u217A\u217B\u217C\u217D\u217E\u217F\u2180\u2181"+
+        "\u2182\u2183\u2184\u2185\u2186\u2187\u2188\u2189"+
+        "\u218A\u218B\u218C\u218D\u218E\u218F\u2194\u2195"+
+        "\u219A\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1"+
+        "\u21A2\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9"+
+        "\u21AA\u21AB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1"+
+        "\u21B2\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9"+
+        "\u21BA\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1"+
+        "\u21C2\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9"+
+        "\u21CA\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1"+
+        "\u21D2\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9"+
+        "\u21DA\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1"+
+        "\u21E2\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9"+
+        "\u21EA\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1"+
+        "\u21F2\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9"+
+        "\u21FA\u21FB\u21FC\u21FD\u21FE\u21FF\u2200\u2201"+
+        "\u2202\u2203\u2204\u2205\u2206\u2207\u2209\u220A"+
+        "\u220B\u220C\u220D\u220E\u2210\u2212\u2213\u2214"+
+        "\u2216\u2217\u2218\u2219\u221B\u221C\u2221\u2222"+
+        "\u2224\u2226\u222C\u222D\u222F\u2230\u2231\u2232"+
+        "\u2233\u2238\u2239\u223A\u223B\u223C\u223E\u223F"+
+        "\u2240\u2241\u2242\u2243\u2244\u2245\u2246\u2247"+
+        "\u2249\u224A\u224B\u224D\u224E\u224F\u2250\u2251"+
+        "\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A"+
+        "\u225B\u225C\u225D\u225E\u225F\u2262\u2263\u2268"+
+        "\u2269\u226A\u226B\u226C\u226D\u2270\u2271\u2272"+
+        "\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A"+
+        "\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282"+
+        "\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A"+
+        "\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292"+
+        "\u2293\u2294\u2296\u2297\u2298\u229A\u229B\u229C"+
+        "\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3\u22A4"+
+        "\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB\u22AC\u22AD"+
+        "\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3\u22B4\u22B5"+
+        "\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB\u22BC\u22BD"+
+        "\u22BE\u22C0\u22C1\u22C2\u22C3\u22C4\u22C5\u22C6"+
+        "\u22C7\u22C8\u22C9\u22CA\u22CB\u22CC\u22CD\u22CE"+
+        "\u22CF\u22D0\u22D1\u22D2\u22D3\u22D4\u22D5\u22D6"+
+        "\u22D7\u22D8\u22D9\u22DA\u22DB\u22DC\u22DD\u22DE"+
+        "\u22DF\u22E0\u22E1\u22E2\u22E3\u22E4\u22E5\u22E6"+
+        "\u22E7\u22E8\u22E9\u22EA\u22EB\u22EC\u22ED\u22EE"+
+        "\u22EF\u22F0\u22F1\u22F2\u22F3\u22F4\u22F5\u22F6"+
+        "\u22F7\u22F8\u22F9\u22FA\u22FB\u22FC\u22FD\u22FE"+
+        "\u22FF\u2300\u2301\u2302\u2303\u2304\u2305\u2306"+
+        "\u2307\u2308\u2309\u230A\u230B\u230C\u230D\u230E"+
+        "\u230F\u2310\u2311\u2313\u2314\u2315\u2316\u2317"+
+        "\u2318\u2319\u231A\u231B\u231C\u231D\u231E\u231F"+
+        "\u2320\u2321\u2322\u2323\u2324\u2325\u2326\u2327"+
+        "\u2328\u2329\u232A\u232B\u232C\u232D\u232E\u232F"+
+        "\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337"+
+        "\u2338\u2339\u233A\u233B\u233C\u233D\u233E\u233F"+
+        "\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347"+
+        "\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F"+
+        "\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357"+
+        "\u2358\u2359\u235A\u235B\u235C\u235D\u235E\u235F"+
+        "\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367"+
+        "\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F"+
+        "\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377"+
+        "\u2378\u2379\u237A\u237B\u237C\u237D\u237E\u237F"+
+        "\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387"+
+        "\u2388\u2389\u238A\u238B\u238C\u238D\u238E\u238F"+
+        "\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397"+
+        "\u2398\u2399\u239A\u239B\u239C\u239D\u239E\u239F"+
+        "\u23A0\u23A1\u23A2\u23A3\u23A4\u23A5\u23A6\u23A7"+
+        "\u23A8\u23A9\u23AA\u23AB\u23AC\u23AD\u23AE\u23AF"+
+        "\u23B0\u23B1\u23B2\u23B3\u23B4\u23B5\u23B6\u23B7"+
+        "\u23B8\u23B9\u23BA\u23BB\u23BC\u23BD\u23BE\u23BF"+
+        "\u23C0\u23C1\u23C2\u23C3\u23C4\u23C5\u23C6\u23C7"+
+        "\u23C8\u23C9\u23CA\u23CB\u23CC\u23CD\u23CE\u23CF"+
+        "\u23D0\u23D1\u23D2\u23D3\u23D4\u23D5\u23D6\u23D7"+
+        "\u23D8\u23D9\u23DA\u23DB\u23DC\u23DD\u23DE\u23DF"+
+        "\u23E0\u23E1\u23E2\u23E3\u23E4\u23E5\u23E6\u23E7"+
+        "\u23E8\u23E9\u23EA\u23EB\u23EC\u23ED\u23EE\u23EF"+
+        "\u23F0\u23F1\u23F2\u23F3\u23F4\u23F5\u23F6\u23F7"+
+        "\u23F8\u23F9\u23FA\u23FB\u23FC\u23FD\u23FE\u23FF"+
+        "\u2400\u2401\u2402\u2403\u2404\u2405\u2406\u2407"+
+        "\u2408\u2409\u240A\u240B\u240C\u240D\u240E\u240F"+
+        "\u2410\u2411\u2412\u2413\u2414\u2415\u2416\u2417"+
+        "\u2418\u2419\u241A\u241B\u241C\u241D\u241E\u241F"+
+        "\u2420\u2421\u2422\u2423\u2424\u2425\u2426\u2427"+
+        "\u2428\u2429\u242A\u242B\u242C\u242D\u242E\u242F"+
+        "\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437"+
+        "\u2438\u2439\u243A\u243B\u243C\u243D\u243E\u243F"+
+        "\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447"+
+        "\u2448\u2449\u244A\u244B\u244C\u244D\u244E\u244F"+
+        "\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457"+
+        "\u2458\u2459\u245A\u245B\u245C\u245D\u245E\u245F"+
+        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
+        "\u2472\u2473\u249C\u249D\u249E\u249F\u24A0\u24A1"+
+        "\u24A2\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9"+
+        "\u24AA\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1"+
+        "\u24B2\u24B3\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9"+
+        "\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1"+
+        "\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9"+
+        "\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1"+
+        "\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9"+
+        "\u24DA\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1"+
+        "\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9"+
+        "\u24EA\u24EB\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1"+
+        "\u24F2\u24F3\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9"+
+        "\u24FA\u24FB\u24FC\u24FD\u24FE\u24FF\u254C\u254D"+
+        "\u254E\u254F\u2574\u2575\u2576\u2577\u2578\u2579"+
+        "\u257A\u257B\u257C\u257D\u257E\u257F\u2580\u2590"+
+        "\u2591\u2592\u2596\u2597\u2598\u2599\u259A\u259B"+
+        "\u259C\u259D\u259E\u259F\u25A2\u25A3\u25A4\u25A5"+
+        "\u25A6\u25A7\u25A8\u25A9\u25AA\u25AB\u25AC\u25AD"+
+        "\u25AE\u25AF\u25B0\u25B1\u25B4\u25B5\u25B6\u25B7"+
+        "\u25B8\u25B9\u25BA\u25BB\u25BE\u25BF\u25C0\u25C1"+
+        "\u25C2\u25C3\u25C4\u25C5\u25C8\u25C9\u25CA\u25CC"+
+        "\u25CD\u25D0\u25D1\u25D2\u25D3\u25D4\u25D5\u25D6"+
+        "\u25D7\u25D8\u25D9\u25DA\u25DB\u25DC\u25DD\u25DE"+
+        "\u25DF\u25E0\u25E1\u25E6\u25E7\u25E8\u25E9\u25EA"+
+        "\u25EB\u25EC\u25ED\u25EE\u25EF\u25F0\u25F1\u25F2"+
+        "\u25F3\u25F4\u25F5\u25F6\u25F7\u25F8\u25F9\u25FA"+
+        "\u25FB\u25FC\u25FD\u25FE\u25FF\u2600\u2601\u2602"+
+        "\u2603\u2604\u2607\u2608\u260A\u260B\u260C\u260D"+
+        "\u260E\u260F\u2610\u2611\u2612\u2613\u2614\u2615"+
+        "\u2616\u2617\u2618\u2619\u261A\u261B\u261C\u261D"+
+        "\u261E\u261F\u2620\u2621\u2622\u2623\u2624\u2625"+
+        "\u2626\u2627\u2628\u2629\u262A\u262B\u262C\u262D"+
+        "\u262E\u262F\u2630\u2631\u2632\u2633\u2634\u2635"+
+        "\u2636\u2637\u2638\u2639\u263A\u263B\u263C\u263D"+
+        "\u263E\u263F\u2641\u2643\u2644\u2645\u2646\u2647"+
+        "\u2648\u2649\u264A\u264B\u264C\u264D\u264E\u264F"+
+        "\u2650\u2651\u2652\u2653\u2654\u2655\u2656\u2657"+
+        "\u2658\u2659\u265A\u265B\u265C\u265D\u265E\u265F"+
+        "\u2660\u2661\u2662\u2663\u2664\u2665\u2666\u2667"+
+        "\u2668\u2669\u266A\u266B\u266C\u266D\u266E\u266F"+
+        "\u2670\u2671\u2672\u2673\u2674\u2675\u2676\u2677"+
+        "\u2678\u2679\u267A\u267B\u267C\u267D\u267E\u267F"+
+        "\u2680\u2681\u2682\u2683\u2684\u2685\u2686\u2687"+
+        "\u2688\u2689\u268A\u268B\u268C\u268D\u268E\u268F"+
+        "\u2690\u2691\u2692\u2693\u2694\u2695\u2696\u2697"+
+        "\u2698\u2699\u269A\u269B\u269C\u269D\u269E\u269F"+
+        "\u26A0\u26A1\u26A2\u26A3\u26A4\u26A5\u26A6\u26A7"+
+        "\u26A8\u26A9\u26AA\u26AB\u26AC\u26AD\u26AE\u26AF"+
+        "\u26B0\u26B1\u26B2\u26B3\u26B4\u26B5\u26B6\u26B7"+
+        "\u26B8\u26B9\u26BA\u26BB\u26BC\u26BD\u26BE\u26BF"+
+        "\u26C0\u26C1\u26C2\u26C3\u26C4\u26C5\u26C6\u26C7"+
+        "\u26C8\u26C9\u26CA\u26CB\u26CC\u26CD\u26CE\u26CF"+
+        "\u26D0\u26D1\u26D2\u26D3\u26D4\u26D5\u26D6\u26D7"+
+        "\u26D8\u26D9\u26DA\u26DB\u26DC\u26DD\u26DE\u26DF"+
+        "\u26E0\u26E1\u26E2\u26E3\u26E4\u26E5\u26E6\u26E7"+
+        "\u26E8\u26E9\u26EA\u26EB\u26EC\u26ED\u26EE\u26EF"+
+        "\u26F0\u26F1\u26F2\u26F3\u26F4\u26F5\u26F6\u26F7"+
+        "\u26F8\u26F9\u26FA\u26FB\u26FC\u26FD\u26FE\u26FF"+
+        "\u2700\u2701\u2702\u2703\u2704\u2705\u2706\u2707"+
+        "\u2708\u2709\u270A\u270B\u270C\u270D\u270E\u270F"+
+        "\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717"+
+        "\u2718\u2719\u271A\u271B\u271C\u271D\u271E\u271F"+
+        "\u2720\u2721\u2722\u2723\u2724\u2725\u2726\u2727"+
+        "\u2728\u2729\u272A\u272B\u272C\u272D\u272E\u272F"+
+        "\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737"+
+        "\u2738\u2739\u273A\u273B\u273C\u273D\u273E\u273F"+
+        "\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747"+
+        "\u2748\u2749\u274A\u274B\u274C\u274D\u274E\u274F"+
+        "\u2750\u2751\u2752\u2753\u2754\u2755\u2756\u2757"+
+        "\u2758\u2759\u275A\u275B\u275C\u275D\u275E\u275F"+
+        "\u2760\u2761\u2762\u2763\u2764\u2765\u2766\u2767"+
+        "\u2768\u2769\u276A\u276B\u276C\u276D\u276E\u276F"+
+        "\u2770\u2771\u2772\u2773\u2774\u2775\u2776\u2777"+
+        "\u2778\u2779\u277A\u277B\u277C\u277D\u277E\u277F"+
+        "\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787"+
+        "\u2788\u2789\u278A\u278B\u278C\u278D\u278E\u278F"+
+        "\u2790\u2791\u2792\u2793\u2794\u2795\u2796\u2797"+
+        "\u2798\u2799\u279A\u279B\u279C\u279D\u279E\u279F"+
+        "\u27A0\u27A1\u27A2\u27A3\u27A4\u27A5\u27A6\u27A7"+
+        "\u27A8\u27A9\u27AA\u27AB\u27AC\u27AD\u27AE\u27AF"+
+        "\u27B0\u27B1\u27B2\u27B3\u27B4\u27B5\u27B6\u27B7"+
+        "\u27B8\u27B9\u27BA\u27BB\u27BC\u27BD\u27BE\u27BF"+
+        "\u27C0\u27C1\u27C2\u27C3\u27C4\u27C5\u27C6\u27C7"+
+        "\u27C8\u27C9\u27CA\u27CB\u27CC\u27CD\u27CE\u27CF"+
+        "\u27D0\u27D1\u27D2\u27D3\u27D4\u27D5\u27D6\u27D7"+
+        "\u27D8\u27D9\u27DA\u27DB\u27DC\u27DD\u27DE\u27DF"+
+        "\u27E0\u27E1\u27E2\u27E3\u27E4\u27E5\u27E6\u27E7"+
+        "\u27E8\u27E9\u27EA\u27EB\u27EC\u27ED\u27EE\u27EF"+
+        "\u27F0\u27F1\u27F2\u27F3\u27F4\u27F5\u27F6\u27F7"+
+        "\u27F8\u27F9\u27FA\u27FB\u27FC\u27FD\u27FE\u27FF"+
+        "\u2800\u2801\u2802\u2803\u2804\u2805\u2806\u2807"+
+        "\u2808\u2809\u280A\u280B\u280C\u280D\u280E\u280F"+
+        "\u2810\u2811\u2812\u2813\u2814\u2815\u2816\u2817"+
+        "\u2818\u2819\u281A\u281B\u281C\u281D\u281E\u281F"+
+        "\u2820\u2821\u2822\u2823\u2824\u2825\u2826\u2827"+
+        "\u2828\u2829\u282A\u282B\u282C\u282D\u282E\u282F"+
+        "\u2830\u2831\u2832\u2833\u2834\u2835\u2836\u2837"+
+        "\u2838\u2839\u283A\u283B\u283C\u283D\u283E\u283F"+
+        "\u2840\u2841\u2842\u2843\u2844\u2845\u2846\u2847"+
+        "\u2848\u2849\u284A\u284B\u284C\u284D\u284E\u284F"+
+        "\u2850\u2851\u2852\u2853\u2854\u2855\u2856\u2857"+
+        "\u2858\u2859\u285A\u285B\u285C\u285D\u285E\u285F"+
+        "\u2860\u2861\u2862\u2863\u2864\u2865\u2866\u2867"+
+        "\u2868\u2869\u286A\u286B\u286C\u286D\u286E\u286F"+
+        "\u2870\u2871\u2872\u2873\u2874\u2875\u2876\u2877"+
+        "\u2878\u2879\u287A\u287B\u287C\u287D\u287E\u287F"+
+        "\u2880\u2881\u2882\u2883\u2884\u2885\u2886\u2887"+
+        "\u2888\u2889\u288A\u288B\u288C\u288D\u288E\u288F"+
+        "\u2890\u2891\u2892\u2893\u2894\u2895\u2896\u2897"+
+        "\u2898\u2899\u289A\u289B\u289C\u289D\u289E\u289F"+
+        "\u28A0\u28A1\u28A2\u28A3\u28A4\u28A5\u28A6\u28A7"+
+        "\u28A8\u28A9\u28AA\u28AB\u28AC\u28AD\u28AE\u28AF"+
+        "\u28B0\u28B1\u28B2\u28B3\u28B4\u28B5\u28B6\u28B7"+
+        "\u28B8\u28B9\u28BA\u28BB\u28BC\u28BD\u28BE\u28BF"+
+        "\u28C0\u28C1\u28C2\u28C3\u28C4\u28C5\u28C6\u28C7"+
+        "\u28C8\u28C9\u28CA\u28CB\u28CC\u28CD\u28CE\u28CF"+
+        "\u28D0\u28D1\u28D2\u28D3\u28D4\u28D5\u28D6\u28D7"+
+        "\u28D8\u28D9\u28DA\u28DB\u28DC\u28DD\u28DE\u28DF"+
+        "\u28E0\u28E1\u28E2\u28E3\u28E4\u28E5\u28E6\u28E7"+
+        "\u28E8\u28E9\u28EA\u28EB\u28EC\u28ED\u28EE\u28EF"+
+        "\u28F0\u28F1\u28F2\u28F3\u28F4\u28F5\u28F6\u28F7"+
+        "\u28F8\u28F9\u28FA\u28FB\u28FC\u28FD\u28FE\u28FF"+
+        "\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907"+
+        "\u2908\u2909\u290A\u290B\u290C\u290D\u290E\u290F"+
+        "\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917"+
+        "\u2918\u2919\u291A\u291B\u291C\u291D\u291E\u291F"+
+        "\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927"+
+        "\u2928\u2929\u292A\u292B\u292C\u292D\u292E\u292F"+
+        "\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937"+
+        "\u2938\u2939\u293A\u293B\u293C\u293D\u293E\u293F"+
+        "\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947"+
+        "\u2948\u2949\u294A\u294B\u294C\u294D\u294E\u294F"+
+        "\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957"+
+        "\u2958\u2959\u295A\u295B\u295C\u295D\u295E\u295F"+
+        "\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967"+
+        "\u2968\u2969\u296A\u296B\u296C\u296D\u296E\u296F"+
+        "\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977"+
+        "\u2978\u2979\u297A\u297B\u297C\u297D\u297E\u297F"+
+        "\u2980\u2981\u2982\u2983\u2984\u2985\u2986\u2987"+
+        "\u2988\u2989\u298A\u298B\u298C\u298D\u298E\u298F"+
+        "\u2990\u2991\u2992\u2993\u2994\u2995\u2996\u2997"+
+        "\u2998\u2999\u299A\u299B\u299C\u299D\u299E\u299F"+
+        "\u29A0\u29A1\u29A2\u29A3\u29A4\u29A5\u29A6\u29A7"+
+        "\u29A8\u29A9\u29AA\u29AB\u29AC\u29AD\u29AE\u29AF"+
+        "\u29B0\u29B1\u29B2\u29B3\u29B4\u29B5\u29B6\u29B7"+
+        "\u29B8\u29B9\u29BA\u29BB\u29BC\u29BD\u29BE\u29BF"+
+        "\u29C0\u29C1\u29C2\u29C3\u29C4\u29C5\u29C6\u29C7"+
+        "\u29C8\u29C9\u29CA\u29CB\u29CC\u29CD\u29CE\u29CF"+
+        "\u29D0\u29D1\u29D2\u29D3\u29D4\u29D5\u29D6\u29D7"+
+        "\u29D8\u29D9\u29DA\u29DB\u29DC\u29DD\u29DE\u29DF"+
+        "\u29E0\u29E1\u29E2\u29E3\u29E4\u29E5\u29E6\u29E7"+
+        "\u29E8\u29E9\u29EA\u29EB\u29EC\u29ED\u29EE\u29EF"+
+        "\u29F0\u29F1\u29F2\u29F3\u29F4\u29F5\u29F6\u29F7"+
+        "\u29F8\u29F9\u29FA\u29FB\u29FC\u29FD\u29FE\u29FF"+
+        "\u2A00\u2A01\u2A02\u2A03\u2A04\u2A05\u2A06\u2A07"+
+        "\u2A08\u2A09\u2A0A\u2A0B\u2A0C\u2A0D\u2A0E\u2A0F"+
+        "\u2A10\u2A11\u2A12\u2A13\u2A14\u2A15\u2A16\u2A17"+
+        "\u2A18\u2A19\u2A1A\u2A1B\u2A1C\u2A1D\u2A1E\u2A1F"+
+        "\u2A20\u2A21\u2A22\u2A23\u2A24\u2A25\u2A26\u2A27"+
+        "\u2A28\u2A29\u2A2A\u2A2B\u2A2C\u2A2D\u2A2E\u2A2F"+
+        "\u2A30\u2A31\u2A32\u2A33\u2A34\u2A35\u2A36\u2A37"+
+        "\u2A38\u2A39\u2A3A\u2A3B\u2A3C\u2A3D\u2A3E\u2A3F"+
+        "\u2A40\u2A41\u2A42\u2A43\u2A44\u2A45\u2A46\u2A47"+
+        "\u2A48\u2A49\u2A4A\u2A4B\u2A4C\u2A4D\u2A4E\u2A4F"+
+        "\u2A50\u2A51\u2A52\u2A53\u2A54\u2A55\u2A56\u2A57"+
+        "\u2A58\u2A59\u2A5A\u2A5B\u2A5C\u2A5D\u2A5E\u2A5F"+
+        "\u2A60\u2A61\u2A62\u2A63\u2A64\u2A65\u2A66\u2A67"+
+        "\u2A68\u2A69\u2A6A\u2A6B\u2A6C\u2A6D\u2A6E\u2A6F"+
+        "\u2A70\u2A71\u2A72\u2A73\u2A74\u2A75\u2A76\u2A77"+
+        "\u2A78\u2A79\u2A7A\u2A7B\u2A7C\u2A7D\u2A7E\u2A7F"+
+        "\u2A80\u2A81\u2A82\u2A83\u2A84\u2A85\u2A86\u2A87"+
+        "\u2A88\u2A89\u2A8A\u2A8B\u2A8C\u2A8D\u2A8E\u2A8F"+
+        "\u2A90\u2A91\u2A92\u2A93\u2A94\u2A95\u2A96\u2A97"+
+        "\u2A98\u2A99\u2A9A\u2A9B\u2A9C\u2A9D\u2A9E\u2A9F"+
+        "\u2AA0\u2AA1\u2AA2\u2AA3\u2AA4\u2AA5\u2AA6\u2AA7"+
+        "\u2AA8\u2AA9\u2AAA\u2AAB\u2AAC\u2AAD\u2AAE\u2AAF"+
+        "\u2AB0\u2AB1\u2AB2\u2AB3\u2AB4\u2AB5\u2AB6\u2AB7"+
+        "\u2AB8\u2AB9\u2ABA\u2ABB\u2ABC\u2ABD\u2ABE\u2ABF"+
+        "\u2AC0\u2AC1\u2AC2\u2AC3\u2AC4\u2AC5\u2AC6\u2AC7"+
+        "\u2AC8\u2AC9\u2ACA\u2ACB\u2ACC\u2ACD\u2ACE\u2ACF"+
+        "\u2AD0\u2AD1\u2AD2\u2AD3\u2AD4\u2AD5\u2AD6\u2AD7"+
+        "\u2AD8\u2AD9\u2ADA\u2ADB\u2ADC\u2ADD\u2ADE\u2ADF"+
+        "\u2AE0\u2AE1\u2AE2\u2AE3\u2AE4\u2AE5\u2AE6\u2AE7"+
+        "\u2AE8\u2AE9\u2AEA\u2AEB\u2AEC\u2AED\u2AEE\u2AEF"+
+        "\u2AF0\u2AF1\u2AF2\u2AF3\u2AF4\u2AF5\u2AF6\u2AF7"+
+        "\u2AF8\u2AF9\u2AFA\u2AFB\u2AFC\u2AFD\u2AFE\u2AFF"+
+        "\u2B00\u2B01\u2B02\u2B03\u2B04\u2B05\u2B06\u2B07"+
+        "\u2B08\u2B09\u2B0A\u2B0B\u2B0C\u2B0D\u2B0E\u2B0F"+
+        "\u2B10\u2B11\u2B12\u2B13\u2B14\u2B15\u2B16\u2B17"+
+        "\u2B18\u2B19\u2B1A\u2B1B\u2B1C\u2B1D\u2B1E\u2B1F"+
+        "\u2B20\u2B21\u2B22\u2B23\u2B24\u2B25\u2B26\u2B27"+
+        "\u2B28\u2B29\u2B2A\u2B2B\u2B2C\u2B2D\u2B2E\u2B2F"+
+        "\u2B30\u2B31\u2B32\u2B33\u2B34\u2B35\u2B36\u2B37"+
+        "\u2B38\u2B39\u2B3A\u2B3B\u2B3C\u2B3D\u2B3E\u2B3F"+
+        "\u2B40\u2B41\u2B42\u2B43\u2B44\u2B45\u2B46\u2B47"+
+        "\u2B48\u2B49\u2B4A\u2B4B\u2B4C\u2B4D\u2B4E\u2B4F"+
+        "\u2B50\u2B51\u2B52\u2B53\u2B54\u2B55\u2B56\u2B57"+
+        "\u2B58\u2B59\u2B5A\u2B5B\u2B5C\u2B5D\u2B5E\u2B5F"+
+        "\u2B60\u2B61\u2B62\u2B63\u2B64\u2B65\u2B66\u2B67"+
+        "\u2B68\u2B69\u2B6A\u2B6B\u2B6C\u2B6D\u2B6E\u2B6F"+
+        "\u2B70\u2B71\u2B72\u2B73\u2B74\u2B75\u2B76\u2B77"+
+        "\u2B78\u2B79\u2B7A\u2B7B\u2B7C\u2B7D\u2B7E\u2B7F"+
+        "\u2B80\u2B81\u2B82\u2B83\u2B84\u2B85\u2B86\u2B87"+
+        "\u2B88\u2B89\u2B8A\u2B8B\u2B8C\u2B8D\u2B8E\u2B8F"+
+        "\u2B90\u2B91\u2B92\u2B93\u2B94\u2B95\u2B96\u2B97"+
+        "\u2B98\u2B99\u2B9A\u2B9B\u2B9C\u2B9D\u2B9E\u2B9F"+
+        "\u2BA0\u2BA1\u2BA2\u2BA3\u2BA4\u2BA5\u2BA6\u2BA7"+
+        "\u2BA8\u2BA9\u2BAA\u2BAB\u2BAC\u2BAD\u2BAE\u2BAF"+
+        "\u2BB0\u2BB1\u2BB2\u2BB3\u2BB4\u2BB5\u2BB6\u2BB7"+
+        "\u2BB8\u2BB9\u2BBA\u2BBB\u2BBC\u2BBD\u2BBE\u2BBF"+
+        "\u2BC0\u2BC1\u2BC2\u2BC3\u2BC4\u2BC5\u2BC6\u2BC7"+
+        "\u2BC8\u2BC9\u2BCA\u2BCB\u2BCC\u2BCD\u2BCE\u2BCF"+
+        "\u2BD0\u2BD1\u2BD2\u2BD3\u2BD4\u2BD5\u2BD6\u2BD7"+
+        "\u2BD8\u2BD9\u2BDA\u2BDB\u2BDC\u2BDD\u2BDE\u2BDF"+
+        "\u2BE0\u2BE1\u2BE2\u2BE3\u2BE4\u2BE5\u2BE6\u2BE7"+
+        "\u2BE8\u2BE9\u2BEA\u2BEB\u2BEC\u2BED\u2BEE\u2BEF"+
+        "\u2BF0\u2BF1\u2BF2\u2BF3\u2BF4\u2BF5\u2BF6\u2BF7"+
+        "\u2BF8\u2BF9\u2BFA\u2BFB\u2BFC\u2BFD\u2BFE\u2BFF"+
+        "\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07"+
+        "\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F"+
+        "\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17"+
+        "\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F"+
+        "\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27"+
+        "\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F"+
+        "\u2C30\u2C31\u2C32\u2C33\u2C34\u2C35\u2C36\u2C37"+
+        "\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F"+
+        "\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46\u2C47"+
+        "\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F"+
+        "\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57"+
+        "\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F"+
+        "\u2C60\u2C61\u2C62\u2C63\u2C64\u2C65\u2C66\u2C67"+
+        "\u2C68\u2C69\u2C6A\u2C6B\u2C6C\u2C6D\u2C6E\u2C6F"+
+        "\u2C70\u2C71\u2C72\u2C73\u2C74\u2C75\u2C76\u2C77"+
+        "\u2C78\u2C79\u2C7A\u2C7B\u2C7C\u2C7D\u2C7E\u2C7F"+
+        "\u2C80\u2C81\u2C82\u2C83\u2C84\u2C85\u2C86\u2C87"+
+        "\u2C88\u2C89\u2C8A\u2C8B\u2C8C\u2C8D\u2C8E\u2C8F"+
+        "\u2C90\u2C91\u2C92\u2C93\u2C94\u2C95\u2C96\u2C97"+
+        "\u2C98\u2C99\u2C9A\u2C9B\u2C9C\u2C9D\u2C9E\u2C9F"+
+        "\u2CA0\u2CA1\u2CA2\u2CA3\u2CA4\u2CA5\u2CA6\u2CA7"+
+        "\u2CA8\u2CA9\u2CAA\u2CAB\u2CAC\u2CAD\u2CAE\u2CAF"+
+        "\u2CB0\u2CB1\u2CB2\u2CB3\u2CB4\u2CB5\u2CB6\u2CB7"+
+        "\u2CB8\u2CB9\u2CBA\u2CBB\u2CBC\u2CBD\u2CBE\u2CBF"+
+        "\u2CC0\u2CC1\u2CC2\u2CC3\u2CC4\u2CC5\u2CC6\u2CC7"+
+        "\u2CC8\u2CC9\u2CCA\u2CCB\u2CCC\u2CCD\u2CCE\u2CCF"+
+        "\u2CD0\u2CD1\u2CD2\u2CD3\u2CD4\u2CD5\u2CD6\u2CD7"+
+        "\u2CD8\u2CD9\u2CDA\u2CDB\u2CDC\u2CDD\u2CDE\u2CDF"+
+        "\u2CE0\u2CE1\u2CE2\u2CE3\u2CE4\u2CE5\u2CE6\u2CE7"+
+        "\u2CE8\u2CE9\u2CEA\u2CEB\u2CEC\u2CED\u2CEE\u2CEF"+
+        "\u2CF0\u2CF1\u2CF2\u2CF3\u2CF4\u2CF5\u2CF6\u2CF7"+
+        "\u2CF8\u2CF9\u2CFA\u2CFB\u2CFC\u2CFD\u2CFE\u2CFF"+
+        "\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05\u2D06\u2D07"+
+        "\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F"+
+        "\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17"+
+        "\u2D18\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F"+
+        "\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27"+
+        "\u2D28\u2D29\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F"+
+        "\u2D30\u2D31\u2D32\u2D33\u2D34\u2D35\u2D36\u2D37"+
+        "\u2D38\u2D39\u2D3A\u2D3B\u2D3C\u2D3D\u2D3E\u2D3F"+
+        "\u2D40\u2D41\u2D42\u2D43\u2D44\u2D45\u2D46\u2D47"+
+        "\u2D48\u2D49\u2D4A\u2D4B\u2D4C\u2D4D\u2D4E\u2D4F"+
+        "\u2D50\u2D51\u2D52\u2D53\u2D54\u2D55\u2D56\u2D57"+
+        "\u2D58\u2D59\u2D5A\u2D5B\u2D5C\u2D5D\u2D5E\u2D5F"+
+        "\u2D60\u2D61\u2D62\u2D63\u2D64\u2D65\u2D66\u2D67"+
+        "\u2D68\u2D69\u2D6A\u2D6B\u2D6C\u2D6D\u2D6E\u2D6F"+
+        "\u2D70\u2D71\u2D72\u2D73\u2D74\u2D75\u2D76\u2D77"+
+        "\u2D78\u2D79\u2D7A\u2D7B\u2D7C\u2D7D\u2D7E\u2D7F"+
+        "\u2D80\u2D81\u2D82\u2D83\u2D84\u2D85\u2D86\u2D87"+
+        "\u2D88\u2D89\u2D8A\u2D8B\u2D8C\u2D8D\u2D8E\u2D8F"+
+        "\u2D90\u2D91\u2D92\u2D93\u2D94\u2D95\u2D96\u2D97"+
+        "\u2D98\u2D99\u2D9A\u2D9B\u2D9C\u2D9D\u2D9E\u2D9F"+
+        "\u2DA0\u2DA1\u2DA2\u2DA3\u2DA4\u2DA5\u2DA6\u2DA7"+
+        "\u2DA8\u2DA9\u2DAA\u2DAB\u2DAC\u2DAD\u2DAE\u2DAF"+
+        "\u2DB0\u2DB1\u2DB2\u2DB3\u2DB4\u2DB5\u2DB6\u2DB7"+
+        "\u2DB8\u2DB9\u2DBA\u2DBB\u2DBC\u2DBD\u2DBE\u2DBF"+
+        "\u2DC0\u2DC1\u2DC2\u2DC3\u2DC4\u2DC5\u2DC6\u2DC7"+
+        "\u2DC8\u2DC9\u2DCA\u2DCB\u2DCC\u2DCD\u2DCE\u2DCF"+
+        "\u2DD0\u2DD1\u2DD2\u2DD3\u2DD4\u2DD5\u2DD6\u2DD7"+
+        "\u2DD8\u2DD9\u2DDA\u2DDB\u2DDC\u2DDD\u2DDE\u2DDF"+
+        "\u2DE0\u2DE1\u2DE2\u2DE3\u2DE4\u2DE5\u2DE6\u2DE7"+
+        "\u2DE8\u2DE9\u2DEA\u2DEB\u2DEC\u2DED\u2DEE\u2DEF"+
+        "\u2DF0\u2DF1\u2DF2\u2DF3\u2DF4\u2DF5\u2DF6\u2DF7"+
+        "\u2DF8\u2DF9\u2DFA\u2DFB\u2DFC\u2DFD\u2DFE\u2DFF"+
+        "\u2E00\u2E01\u2E02\u2E03\u2E04\u2E05\u2E06\u2E07"+
+        "\u2E08\u2E09\u2E0A\u2E0B\u2E0C\u2E0D\u2E0E\u2E0F"+
+        "\u2E10\u2E11\u2E12\u2E13\u2E14\u2E15\u2E16\u2E17"+
+        "\u2E18\u2E19\u2E1A\u2E1B\u2E1C\u2E1D\u2E1E\u2E1F"+
+        "\u2E20\u2E21\u2E22\u2E23\u2E24\u2E25\u2E26\u2E27"+
+        "\u2E28\u2E29\u2E2A\u2E2B\u2E2C\u2E2D\u2E2E\u2E2F"+
+        "\u2E30\u2E31\u2E32\u2E33\u2E34\u2E35\u2E36\u2E37"+
+        "\u2E38\u2E39\u2E3A\u2E3B\u2E3C\u2E3D\u2E3E\u2E3F"+
+        "\u2E40\u2E41\u2E42\u2E43\u2E44\u2E45\u2E46\u2E47"+
+        "\u2E48\u2E49\u2E4A\u2E4B\u2E4C\u2E4D\u2E4E\u2E4F"+
+        "\u2E50\u2E51\u2E52\u2E53\u2E54\u2E55\u2E56\u2E57"+
+        "\u2E58\u2E59\u2E5A\u2E5B\u2E5C\u2E5D\u2E5E\u2E5F"+
+        "\u2E60\u2E61\u2E62\u2E63\u2E64\u2E65\u2E66\u2E67"+
+        "\u2E68\u2E69\u2E6A\u2E6B\u2E6C\u2E6D\u2E6E\u2E6F"+
+        "\u2E70\u2E71\u2E72\u2E73\u2E74\u2E75\u2E76\u2E77"+
+        "\u2E78\u2E79\u2E7A\u2E7B\u2E7C\u2E7D\u2E7E\u2E7F"+
+        "\u2E80\u2E82\u2E83\u2E85\u2E86\u2E87\u2E89\u2E8A"+
+        "\u2E8D\u2E8E\u2E8F\u2E90\u2E91\u2E92\u2E93\u2E94"+
+        "\u2E95\u2E96\u2E98\u2E99\u2E9A\u2E9B\u2E9C\u2E9D"+
+        "\u2E9E\u2E9F\u2EA0\u2EA1\u2EA2\u2EA3\u2EA4\u2EA5"+
+        "\u2EA6\u2EA8\u2EA9\u2EAB\u2EAC\u2EAD\u2EAF\u2EB0"+
+        "\u2EB1\u2EB2\u2EB4\u2EB5\u2EB8\u2EB9\u2EBA\u2EBC"+
+        "\u2EBD\u2EBE\u2EBF\u2EC0\u2EC1\u2EC2\u2EC3\u2EC4"+
+        "\u2EC5\u2EC6\u2EC7\u2EC8\u2EC9\u2ECB\u2ECC\u2ECD"+
+        "\u2ECE\u2ECF\u2ED0\u2ED1\u2ED2\u2ED3\u2ED4\u2ED5"+
+        "\u2ED6\u2ED7\u2ED8\u2ED9\u2EDA\u2EDB\u2EDC\u2EDD"+
+        "\u2EDE\u2EDF\u2EE0\u2EE1\u2EE2\u2EE3\u2EE4\u2EE5"+
+        "\u2EE6\u2EE7\u2EE8\u2EE9\u2EEA\u2EEB\u2EEC\u2EED"+
+        "\u2EEE\u2EEF\u2EF0\u2EF1\u2EF2\u2EF3\u2EF4\u2EF5"+
+        "\u2EF6\u2EF7\u2EF8\u2EF9\u2EFA\u2EFB\u2EFC\u2EFD"+
+        "\u2EFE\u2EFF\u2F00\u2F01\u2F02\u2F03\u2F04\u2F05"+
+        "\u2F06\u2F07\u2F08\u2F09\u2F0A\u2F0B\u2F0C\u2F0D"+
+        "\u2F0E\u2F0F\u2F10\u2F11\u2F12\u2F13\u2F14\u2F15"+
+        "\u2F16\u2F17\u2F18\u2F19\u2F1A\u2F1B\u2F1C\u2F1D"+
+        "\u2F1E\u2F1F\u2F20\u2F21\u2F22\u2F23\u2F24\u2F25"+
+        "\u2F26\u2F27\u2F28\u2F29\u2F2A\u2F2B\u2F2C\u2F2D"+
+        "\u2F2E\u2F2F\u2F30\u2F31\u2F32\u2F33\u2F34\u2F35"+
+        "\u2F36\u2F37\u2F38\u2F39\u2F3A\u2F3B\u2F3C\u2F3D"+
+        "\u2F3E\u2F3F\u2F40\u2F41\u2F42\u2F43\u2F44\u2F45"+
+        "\u2F46\u2F47\u2F48\u2F49\u2F4A\u2F4B\u2F4C\u2F4D"+
+        "\u2F4E\u2F4F\u2F50\u2F51\u2F52\u2F53\u2F54\u2F55"+
+        "\u2F56\u2F57\u2F58\u2F59\u2F5A\u2F5B\u2F5C\u2F5D"+
+        "\u2F5E\u2F5F\u2F60\u2F61\u2F62\u2F63\u2F64\u2F65"+
+        "\u2F66\u2F67\u2F68\u2F69\u2F6A\u2F6B\u2F6C\u2F6D"+
+        "\u2F6E\u2F6F\u2F70\u2F71\u2F72\u2F73\u2F74\u2F75"+
+        "\u2F76\u2F77\u2F78\u2F79\u2F7A\u2F7B\u2F7C\u2F7D"+
+        "\u2F7E\u2F7F\u2F80\u2F81\u2F82\u2F83\u2F84\u2F85"+
+        "\u2F86\u2F87\u2F88\u2F89\u2F8A\u2F8B\u2F8C\u2F8D"+
+        "\u2F8E\u2F8F\u2F90\u2F91\u2F92\u2F93\u2F94\u2F95"+
+        "\u2F96\u2F97\u2F98\u2F99\u2F9A\u2F9B\u2F9C\u2F9D"+
+        "\u2F9E\u2F9F\u2FA0\u2FA1\u2FA2\u2FA3\u2FA4\u2FA5"+
+        "\u2FA6\u2FA7\u2FA8\u2FA9\u2FAA\u2FAB\u2FAC\u2FAD"+
+        "\u2FAE\u2FAF\u2FB0\u2FB1\u2FB2\u2FB3\u2FB4\u2FB5"+
+        "\u2FB6\u2FB7\u2FB8\u2FB9\u2FBA\u2FBB\u2FBC\u2FBD"+
+        "\u2FBE\u2FBF\u2FC0\u2FC1\u2FC2\u2FC3\u2FC4\u2FC5"+
+        "\u2FC6\u2FC7\u2FC8\u2FC9\u2FCA\u2FCB\u2FCC\u2FCD"+
+        "\u2FCE\u2FCF\u2FD0\u2FD1\u2FD2\u2FD3\u2FD4\u2FD5"+
+        "\u2FD6\u2FD7\u2FD8\u2FD9\u2FDA\u2FDB\u2FDC\u2FDD"+
+        "\u2FDE\u2FDF\u2FE0\u2FE1\u2FE2\u2FE3\u2FE4\u2FE5"+
+        "\u2FE6\u2FE7\u2FE8\u2FE9\u2FEA\u2FEB\u2FEC\u2FED"+
+        "\u2FEE\u2FEF\u2FFC\u2FFD\u2FFE\u2FFF\u3004\u3018"+
+        "\u3019\u301A\u301B\u301C\u301F\u3020\u302A\u302B"+
+        "\u302C\u302D\u302E\u302F\u3030\u3031\u3032\u3033"+
+        "\u3034\u3035\u3036\u3037\u3038\u3039\u303A\u303B"+
+        "\u303C\u303D\u303F\u3040\u3094\u3095\u3096\u3097"+
+        "\u3098\u3099\u309A\u309F\u30A0\u30F7\u30F8\u30F9"+
+        "\u30FA\u30FB\u30FF\u3100\u3101\u3102\u3103\u3104"+
+        "\u312A\u312B\u312C\u312D\u312E\u312F\u3130\u3131"+
+        "\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139"+
+        "\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141"+
+        "\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149"+
+        "\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151"+
+        "\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159"+
+        "\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161"+
+        "\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169"+
+        "\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171"+
+        "\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179"+
+        "\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181"+
+        "\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189"+
+        "\u318A\u318B\u318C\u318D\u318E\u318F\u3190\u3191"+
+        "\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199"+
+        "\u319A\u319B\u319C\u319D\u319E\u319F\u31A0\u31A1"+
+        "\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9"+
+        "\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1"+
+        "\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31B8\u31B9"+
+        "\u31BA\u31BB\u31BC\u31BD\u31BE\u31BF\u31C0\u31C1"+
+        "\u31C2\u31C3\u31C4\u31C5\u31C6\u31C7\u31C8\u31C9"+
+        "\u31CA\u31CB\u31CC\u31CD\u31CE\u31CF\u31D0\u31D1"+
+        "\u31D2\u31D3\u31D4\u31D5\u31D6\u31D7\u31D8\u31D9"+
+        "\u31DA\u31DB\u31DC\u31DD\u31DE\u31DF\u31E0\u31E1"+
+        "\u31E2\u31E3\u31E4\u31E5\u31E6\u31E7\u31E8\u31E9"+
+        "\u31EA\u31EB\u31EC\u31ED\u31EE\u31EF\u31F0\u31F1"+
+        "\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9"+
+        "\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3200\u3201"+
+        "\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209"+
+        "\u320A\u320B\u320C\u320D\u320E\u320F\u3210\u3211"+
+        "\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219"+
+        "\u321A\u321B\u321C\u321D\u321E\u321F\u322A\u322B"+
+        "\u322C\u322D\u322E\u322F\u3230\u3232\u3233\u3234"+
+        "\u3235\u3236\u3237\u3238\u3239\u323A\u323B\u323C"+
+        "\u323D\u323E\u323F\u3240\u3241\u3242\u3243\u3244"+
+        "\u3245\u3246\u3247\u3248\u3249\u324A\u324B\u324C"+
+        "\u324D\u324E\u324F\u3250\u3251\u3252\u3253\u3254"+
+        "\u3255\u3256\u3257\u3258\u3259\u325A\u325B\u325C"+
+        "\u325D\u325E\u325F\u3260\u3261\u3262\u3263\u3264"+
+        "\u3265\u3266\u3267\u3268\u3269\u326A\u326B\u326C"+
+        "\u326D\u326E\u326F\u3270\u3271\u3272\u3273\u3274"+
+        "\u3275\u3276\u3277\u3278\u3279\u327A\u327B\u327C"+
+        "\u327D\u327E\u327F\u3280\u3281\u3282\u3283\u3284"+
+        "\u3285\u3286\u3287\u3288\u3289\u328A\u328B\u328C"+
+        "\u328D\u328E\u328F\u3290\u3291\u3292\u3293\u3294"+
+        "\u3295\u3296\u3297\u3298\u3299\u329A\u329B\u329C"+
+        "\u329D\u329E\u329F\u32A0\u32A1\u32A2\u32A4\u32A5"+
+        "\u32A6\u32A7\u32A8\u32A9\u32AA\u32AB\u32AC\u32AD"+
+        "\u32AE\u32AF\u32B0\u32B1\u32B2\u32B3\u32B4\u32B5"+
+        "\u32B6\u32B7\u32B8\u32B9\u32BA\u32BB\u32BC\u32BD"+
+        "\u32BE\u32BF\u32C0\u32C1\u32C2\u32C3\u32C4\u32C5"+
+        "\u32C6\u32C7\u32C8\u32C9\u32CA\u32CB\u32CC\u32CD"+
+        "\u32CE\u32CF\u32D0\u32D1\u32D2\u32D3\u32D4\u32D5"+
+        "\u32D6\u32D7\u32D8\u32D9\u32DA\u32DB\u32DC\u32DD"+
+        "\u32DE\u32DF\u32E0\u32E1\u32E2\u32E3\u32E4\u32E5"+
+        "\u32E6\u32E7\u32E8\u32E9\u32EA\u32EB\u32EC\u32ED"+
+        "\u32EE\u32EF\u32F0\u32F1\u32F2\u32F3\u32F4\u32F5"+
+        "\u32F6\u32F7\u32F8\u32F9\u32FA\u32FB\u32FC\u32FD"+
+        "\u32FE\u32FF\u3300\u3301\u3302\u3303\u3304\u3305"+
+        "\u3306\u3307\u3308\u3309\u330A\u330B\u330C\u330D"+
+        "\u330E\u330F\u3310\u3311\u3312\u3313\u3314\u3315"+
+        "\u3316\u3317\u3318\u3319\u331A\u331B\u331C\u331D"+
+        "\u331E\u331F\u3320\u3321\u3322\u3323\u3324\u3325"+
+        "\u3326\u3327\u3328\u3329\u332A\u332B\u332C\u332D"+
+        "\u332E\u332F\u3330\u3331\u3332\u3333\u3334\u3335"+
+        "\u3336\u3337\u3338\u3339\u333A\u333B\u333C\u333D"+
+        "\u333E\u333F\u3340\u3341\u3342\u3343\u3344\u3345"+
+        "\u3346\u3347\u3348\u3349\u334A\u334B\u334C\u334D"+
+        "\u334E\u334F\u3350\u3351\u3352\u3353\u3354\u3355"+
+        "\u3356\u3357\u3358\u3359\u335A\u335B\u335C\u335D";
+
+    private final static String innerDecoderIndex3=
+        "\u335E\u335F\u3360\u3361\u3362\u3363\u3364\u3365"+
+        "\u3366\u3367\u3368\u3369\u336A\u336B\u336C\u336D"+
+        "\u336E\u336F\u3370\u3371\u3372\u3373\u3374\u3375"+
+        "\u3376\u3377\u3378\u3379\u337A\u337B\u337C\u337D"+
+        "\u337E\u337F\u3380\u3381\u3382\u3383\u3384\u3385"+
+        "\u3386\u3387\u3388\u3389\u338A\u338B\u338C\u338D"+
+        "\u3390\u3391\u3392\u3393\u3394\u3395\u3396\u3397"+
+        "\u3398\u3399\u339A\u339B\u339F\u33A0\u33A2\u33A3"+
+        "\u33A4\u33A5\u33A6\u33A7\u33A8\u33A9\u33AA\u33AB"+
+        "\u33AC\u33AD\u33AE\u33AF\u33B0\u33B1\u33B2\u33B3"+
+        "\u33B4\u33B5\u33B6\u33B7\u33B8\u33B9\u33BA\u33BB"+
+        "\u33BC\u33BD\u33BE\u33BF\u33C0\u33C1\u33C2\u33C3"+
+        "\u33C5\u33C6\u33C7\u33C8\u33C9\u33CA\u33CB\u33CC"+
+        "\u33CD\u33CF\u33D0\u33D3\u33D4\u33D6\u33D7\u33D8"+
+        "\u33D9\u33DA\u33DB\u33DC\u33DD\u33DE\u33DF\u33E0"+
+        "\u33E1\u33E2\u33E3\u33E4\u33E5\u33E6\u33E7\u33E8"+
+        "\u33E9\u33EA\u33EB\u33EC\u33ED\u33EE\u33EF\u33F0"+
+        "\u33F1\u33F2\u33F3\u33F4\u33F5\u33F6\u33F7\u33F8"+
+        "\u33F9\u33FA\u33FB\u33FC\u33FD\u33FE\u33FF\u3400"+
+        "\u3401\u3402\u3403\u3404\u3405\u3406\u3407\u3408"+
+        "\u3409\u340A\u340B\u340C\u340D\u340E\u340F\u3410"+
+        "\u3411\u3412\u3413\u3414\u3415\u3416\u3417\u3418"+
+        "\u3419\u341A\u341B\u341C\u341D\u341E\u341F\u3420"+
+        "\u3421\u3422\u3423\u3424\u3425\u3426\u3427\u3428"+
+        "\u3429\u342A\u342B\u342C\u342D\u342E\u342F\u3430"+
+        "\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u3438"+
+        "\u3439\u343A\u343B\u343C\u343D\u343E\u343F\u3440"+
+        "\u3441\u3442\u3443\u3444\u3445\u3446\u3448\u3449"+
+        "\u344A\u344B\u344C\u344D\u344E\u344F\u3450\u3451"+
+        "\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459"+
+        "\u345A\u345B\u345C\u345D\u345E\u345F\u3460\u3461"+
+        "\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469"+
+        "\u346A\u346B\u346C\u346D\u346E\u346F\u3470\u3471"+
+        "\u3472\u3474\u3475\u3476\u3477\u3478\u3479\u347A"+
+        "\u347B\u347C\u347D\u347E\u347F\u3480\u3481\u3482"+
+        "\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348A"+
+        "\u348B\u348C\u348D\u348E\u348F\u3490\u3491\u3492"+
+        "\u3493\u3494\u3495\u3496\u3497\u3498\u3499\u349A"+
+        "\u349B\u349C\u349D\u349E\u349F\u34A0\u34A1\u34A2"+
+        "\u34A3\u34A4\u34A5\u34A6\u34A7\u34A8\u34A9\u34AA"+
+        "\u34AB\u34AC\u34AD\u34AE\u34AF\u34B0\u34B1\u34B2"+
+        "\u34B3\u34B4\u34B5\u34B6\u34B7\u34B8\u34B9\u34BA"+
+        "\u34BB\u34BC\u34BD\u34BE\u34BF\u34C0\u34C1\u34C2"+
+        "\u34C3\u34C4\u34C5\u34C6\u34C7\u34C8\u34C9\u34CA"+
+        "\u34CB\u34CC\u34CD\u34CE\u34CF\u34D0\u34D1\u34D2"+
+        "\u34D3\u34D4\u34D5\u34D6\u34D7\u34D8\u34D9\u34DA"+
+        "\u34DB\u34DC\u34DD\u34DE\u34DF\u34E0\u34E1\u34E2"+
+        "\u34E3\u34E4\u34E5\u34E6\u34E7\u34E8\u34E9\u34EA"+
+        "\u34EB\u34EC\u34ED\u34EE\u34EF\u34F0\u34F1\u34F2"+
+        "\u34F3\u34F4\u34F5\u34F6\u34F7\u34F8\u34F9\u34FA"+
+        "\u34FB\u34FC\u34FD\u34FE\u34FF\u3500\u3501\u3502"+
+        "\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u350A"+
+        "\u350B\u350C\u350D\u350E\u350F\u3510\u3511\u3512"+
+        "\u3513\u3514\u3515\u3516\u3517\u3518\u3519\u351A"+
+        "\u351B\u351C\u351D\u351E\u351F\u3520\u3521\u3522"+
+        "\u3523\u3524\u3525\u3526\u3527\u3528\u3529\u352A"+
+        "\u352B\u352C\u352D\u352E\u352F\u3530\u3531\u3532"+
+        "\u3533\u3534\u3535\u3536\u3537\u3538\u3539\u353A"+
+        "\u353B\u353C\u353D\u353E\u353F\u3540\u3541\u3542"+
+        "\u3543\u3544\u3545\u3546\u3547\u3548\u3549\u354A"+
+        "\u354B\u354C\u354D\u354E\u354F\u3550\u3551\u3552"+
+        "\u3553\u3554\u3555\u3556\u3557\u3558\u3559\u355A"+
+        "\u355B\u355C\u355D\u355E\u355F\u3560\u3561\u3562"+
+        "\u3563\u3564\u3565\u3566\u3567\u3568\u3569\u356A"+
+        "\u356B\u356C\u356D\u356E\u356F\u3570\u3571\u3572"+
+        "\u3573\u3574\u3575\u3576\u3577\u3578\u3579\u357A"+
+        "\u357B\u357C\u357D\u357E\u357F\u3580\u3581\u3582"+
+        "\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358A"+
+        "\u358B\u358C\u358D\u358E\u358F\u3590\u3591\u3592"+
+        "\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359A"+
+        "\u359B\u359C\u359D\u359F\u35A0\u35A1\u35A2\u35A3"+
+        "\u35A4\u35A5\u35A6\u35A7\u35A8\u35A9\u35AA\u35AB"+
+        "\u35AC\u35AD\u35AE\u35AF\u35B0\u35B1\u35B2\u35B3"+
+        "\u35B4\u35B5\u35B6\u35B7\u35B8\u35B9\u35BA\u35BB"+
+        "\u35BC\u35BD\u35BE\u35BF\u35C0\u35C1\u35C2\u35C3"+
+        "\u35C4\u35C5\u35C6\u35C7\u35C8\u35C9\u35CA\u35CB"+
+        "\u35CC\u35CD\u35CE\u35CF\u35D0\u35D1\u35D2\u35D3"+
+        "\u35D4\u35D5\u35D6\u35D7\u35D8\u35D9\u35DA\u35DB"+
+        "\u35DC\u35DD\u35DE\u35DF\u35E0\u35E1\u35E2\u35E3"+
+        "\u35E4\u35E5\u35E6\u35E7\u35E8\u35E9\u35EA\u35EB"+
+        "\u35EC\u35ED\u35EE\u35EF\u35F0\u35F1\u35F2\u35F3"+
+        "\u35F4\u35F5\u35F6\u35F7\u35F8\u35F9\u35FA\u35FB"+
+        "\u35FC\u35FD\u35FE\u35FF\u3600\u3601\u3602\u3603"+
+        "\u3604\u3605\u3606\u3607\u3608\u3609\u360A\u360B"+
+        "\u360C\u360D\u360F\u3610\u3611\u3612\u3613\u3614"+
+        "\u3615\u3616\u3617\u3618\u3619\u361B\u361C\u361D"+
+        "\u361E\u361F\u3620\u3621\u3622\u3623\u3624\u3625"+
+        "\u3626\u3627\u3628\u3629\u362A\u362B\u362C\u362D"+
+        "\u362E\u362F\u3630\u3631\u3632\u3633\u3634\u3635"+
+        "\u3636\u3637\u3638\u3639\u363A\u363B\u363C\u363D"+
+        "\u363E\u363F\u3640\u3641\u3642\u3643\u3644\u3645"+
+        "\u3646\u3647\u3648\u3649\u364A\u364B\u364C\u364D"+
+        "\u364E\u364F\u3650\u3651\u3652\u3653\u3654\u3655"+
+        "\u3656\u3657\u3658\u3659\u365A\u365B\u365C\u365D"+
+        "\u365E\u365F\u3660\u3661\u3662\u3663\u3664\u3665"+
+        "\u3666\u3667\u3668\u3669\u366A\u366B\u366C\u366D"+
+        "\u366E\u366F\u3670\u3671\u3672\u3673\u3674\u3675"+
+        "\u3676\u3677\u3678\u3679\u367A\u367B\u367C\u367D"+
+        "\u367E\u367F\u3680\u3681\u3682\u3683\u3684\u3685"+
+        "\u3686\u3687\u3688\u3689\u368A\u368B\u368C\u368D"+
+        "\u368E\u368F\u3690\u3691\u3692\u3693\u3694\u3695"+
+        "\u3696\u3697\u3698\u3699\u369A\u369B\u369C\u369D"+
+        "\u369E\u369F\u36A0\u36A1\u36A2\u36A3\u36A4\u36A5"+
+        "\u36A6\u36A7\u36A8\u36A9\u36AA\u36AB\u36AC\u36AD"+
+        "\u36AE\u36AF\u36B0\u36B1\u36B2\u36B3\u36B4\u36B5"+
+        "\u36B6\u36B7\u36B8\u36B9\u36BA\u36BB\u36BC\u36BD"+
+        "\u36BE\u36BF\u36C0\u36C1\u36C2\u36C3\u36C4\u36C5"+
+        "\u36C6\u36C7\u36C8\u36C9\u36CA\u36CB\u36CC\u36CD"+
+        "\u36CE\u36CF\u36D0\u36D1\u36D2\u36D3\u36D4\u36D5"+
+        "\u36D6\u36D7\u36D8\u36D9\u36DA\u36DB\u36DC\u36DD"+
+        "\u36DE\u36DF\u36E0\u36E1\u36E2\u36E3\u36E4\u36E5"+
+        "\u36E6\u36E7\u36E8\u36E9\u36EA\u36EB\u36EC\u36ED"+
+        "\u36EE\u36EF\u36F0\u36F1\u36F2\u36F3\u36F4\u36F5"+
+        "\u36F6\u36F7\u36F8\u36F9\u36FA\u36FB\u36FC\u36FD"+
+        "\u36FE\u36FF\u3700\u3701\u3702\u3703\u3704\u3705"+
+        "\u3706\u3707\u3708\u3709\u370A\u370B\u370C\u370D"+
+        "\u370E\u370F\u3710\u3711\u3712\u3713\u3714\u3715"+
+        "\u3716\u3717\u3718\u3719\u371A\u371B\u371C\u371D"+
+        "\u371E\u371F\u3720\u3721\u3722\u3723\u3724\u3725"+
+        "\u3726\u3727\u3728\u3729\u372A\u372B\u372C\u372D"+
+        "\u372E\u372F\u3730\u3731\u3732\u3733\u3734\u3735"+
+        "\u3736\u3737\u3738\u3739\u373A\u373B\u373C\u373D"+
+        "\u373E\u373F\u3740\u3741\u3742\u3743\u3744\u3745"+
+        "\u3746\u3747\u3748\u3749\u374A\u374B\u374C\u374D"+
+        "\u374E\u374F\u3750\u3751\u3752\u3753\u3754\u3755"+
+        "\u3756\u3757\u3758\u3759\u375A\u375B\u375C\u375D"+
+        "\u375E\u375F\u3760\u3761\u3762\u3763\u3764\u3765"+
+        "\u3766\u3767\u3768\u3769\u376A\u376B\u376C\u376D"+
+        "\u376E\u376F\u3770\u3771\u3772\u3773\u3774\u3775"+
+        "\u3776\u3777\u3778\u3779\u377A\u377B\u377C\u377D"+
+        "\u377E\u377F\u3780\u3781\u3782\u3783\u3784\u3785"+
+        "\u3786\u3787\u3788\u3789\u378A\u378B\u378C\u378D"+
+        "\u378E\u378F\u3790\u3791\u3792\u3793\u3794\u3795"+
+        "\u3796\u3797\u3798\u3799\u379A\u379B\u379C\u379D"+
+        "\u379E\u379F\u37A0\u37A1\u37A2\u37A3\u37A4\u37A5"+
+        "\u37A6\u37A7\u37A8\u37A9\u37AA\u37AB\u37AC\u37AD"+
+        "\u37AE\u37AF\u37B0\u37B1\u37B2\u37B3\u37B4\u37B5"+
+        "\u37B6\u37B7\u37B8\u37B9\u37BA\u37BB\u37BC\u37BD"+
+        "\u37BE\u37BF\u37C0\u37C1\u37C2\u37C3\u37C4\u37C5"+
+        "\u37C6\u37C7\u37C8\u37C9\u37CA\u37CB\u37CC\u37CD"+
+        "\u37CE\u37CF\u37D0\u37D1\u37D2\u37D3\u37D4\u37D5"+
+        "\u37D6\u37D7\u37D8\u37D9\u37DA\u37DB\u37DC\u37DD"+
+        "\u37DE\u37DF\u37E0\u37E1\u37E2\u37E3\u37E4\u37E5"+
+        "\u37E6\u37E7\u37E8\u37E9\u37EA\u37EB\u37EC\u37ED"+
+        "\u37EE\u37EF\u37F0\u37F1\u37F2\u37F3\u37F4\u37F5"+
+        "\u37F6\u37F7\u37F8\u37F9\u37FA\u37FB\u37FC\u37FD"+
+        "\u37FE\u37FF\u3800\u3801\u3802\u3803\u3804\u3805"+
+        "\u3806\u3807\u3808\u3809\u380A\u380B\u380C\u380D"+
+        "\u380E\u380F\u3810\u3811\u3812\u3813\u3814\u3815"+
+        "\u3816\u3817\u3818\u3819\u381A\u381B\u381C\u381D"+
+        "\u381E\u381F\u3820\u3821\u3822\u3823\u3824\u3825"+
+        "\u3826\u3827\u3828\u3829\u382A\u382B\u382C\u382D"+
+        "\u382E\u382F\u3830\u3831\u3832\u3833\u3834\u3835"+
+        "\u3836\u3837\u3838\u3839\u383A\u383B\u383C\u383D"+
+        "\u383E\u383F\u3840\u3841\u3842\u3843\u3844\u3845"+
+        "\u3846\u3847\u3848\u3849\u384A\u384B\u384C\u384D"+
+        "\u384E\u384F\u3850\u3851\u3852\u3853\u3854\u3855"+
+        "\u3856\u3857\u3858\u3859\u385A\u385B\u385C\u385D"+
+        "\u385E\u385F\u3860\u3861\u3862\u3863\u3864\u3865"+
+        "\u3866\u3867\u3868\u3869\u386A\u386B\u386C\u386D"+
+        "\u386E\u386F\u3870\u3871\u3872\u3873\u3874\u3875"+
+        "\u3876\u3877\u3878\u3879\u387A\u387B\u387C\u387D"+
+        "\u387E\u387F\u3880\u3881\u3882\u3883\u3884\u3885"+
+        "\u3886\u3887\u3888\u3889\u388A\u388B\u388C\u388D"+
+        "\u388E\u388F\u3890\u3891\u3892\u3893\u3894\u3895"+
+        "\u3896\u3897\u3898\u3899\u389A\u389B\u389C\u389D"+
+        "\u389E\u389F\u38A0\u38A1\u38A2\u38A3\u38A4\u38A5"+
+        "\u38A6\u38A7\u38A8\u38A9\u38AA\u38AB\u38AC\u38AD"+
+        "\u38AE\u38AF\u38B0\u38B1\u38B2\u38B3\u38B4\u38B5"+
+        "\u38B6\u38B7\u38B8\u38B9\u38BA\u38BB\u38BC\u38BD"+
+        "\u38BE\u38BF\u38C0\u38C1\u38C2\u38C3\u38C4\u38C5"+
+        "\u38C6\u38C7\u38C8\u38C9\u38CA\u38CB\u38CC\u38CD"+
+        "\u38CE\u38CF\u38D0\u38D1\u38D2\u38D3\u38D4\u38D5"+
+        "\u38D6\u38D7\u38D8\u38D9\u38DA\u38DB\u38DC\u38DD"+
+        "\u38DE\u38DF\u38E0\u38E1\u38E2\u38E3\u38E4\u38E5"+
+        "\u38E6\u38E7\u38E8\u38E9\u38EA\u38EB\u38EC\u38ED"+
+        "\u38EE\u38EF\u38F0\u38F1\u38F2\u38F3\u38F4\u38F5"+
+        "\u38F6\u38F7\u38F8\u38F9\u38FA\u38FB\u38FC\u38FD"+
+        "\u38FE\u38FF\u3900\u3901\u3902\u3903\u3904\u3905"+
+        "\u3906\u3907\u3908\u3909\u390A\u390B\u390C\u390D"+
+        "\u390E\u390F\u3910\u3911\u3912\u3913\u3914\u3915"+
+        "\u3916\u3917\u3919\u391A\u391B\u391C\u391D\u391E"+
+        "\u391F\u3920\u3921\u3922\u3923\u3924\u3925\u3926"+
+        "\u3927\u3928\u3929\u392A\u392B\u392C\u392D\u392E"+
+        "\u392F\u3930\u3931\u3932\u3933\u3934\u3935\u3936"+
+        "\u3937\u3938\u3939\u393A\u393B\u393C\u393D\u393E"+
+        "\u393F\u3940\u3941\u3942\u3943\u3944\u3945\u3946"+
+        "\u3947\u3948\u3949\u394A\u394B\u394C\u394D\u394E"+
+        "\u394F\u3950\u3951\u3952\u3953\u3954\u3955\u3956"+
+        "\u3957\u3958\u3959\u395A\u395B\u395C\u395D\u395E"+
+        "\u395F\u3960\u3961\u3962\u3963\u3964\u3965\u3966"+
+        "\u3967\u3968\u3969\u396A\u396B\u396C\u396D\u396F"+
+        "\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977"+
+        "\u3978\u3979\u397A\u397B\u397C\u397D\u397E\u397F"+
+        "\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987"+
+        "\u3988\u3989\u398A\u398B\u398C\u398D\u398E\u398F"+
+        "\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u3997"+
+        "\u3998\u3999\u399A\u399B\u399C\u399D\u399E\u399F"+
+        "\u39A0\u39A1\u39A2\u39A3\u39A4\u39A5\u39A6\u39A7"+
+        "\u39A8\u39A9\u39AA\u39AB\u39AC\u39AD\u39AE\u39AF"+
+        "\u39B0\u39B1\u39B2\u39B3\u39B4\u39B5\u39B6\u39B7"+
+        "\u39B8\u39B9\u39BA\u39BB\u39BC\u39BD\u39BE\u39BF"+
+        "\u39C0\u39C1\u39C2\u39C3\u39C4\u39C5\u39C6\u39C7"+
+        "\u39C8\u39C9\u39CA\u39CB\u39CC\u39CD\u39CE\u39D1"+
+        "\u39D2\u39D3\u39D4\u39D5\u39D6\u39D7\u39D8\u39D9"+
+        "\u39DA\u39DB\u39DC\u39DD\u39DE\u39E0\u39E1\u39E2"+
+        "\u39E3\u39E4\u39E5\u39E6\u39E7\u39E8\u39E9\u39EA"+
+        "\u39EB\u39EC\u39ED\u39EE\u39EF\u39F0\u39F1\u39F2"+
+        "\u39F3\u39F4\u39F5\u39F6\u39F7\u39F8\u39F9\u39FA"+
+        "\u39FB\u39FC\u39FD\u39FE\u39FF\u3A00\u3A01\u3A02"+
+        "\u3A03\u3A04\u3A05\u3A06\u3A07\u3A08\u3A09\u3A0A"+
+        "\u3A0B\u3A0C\u3A0D\u3A0E\u3A0F\u3A10\u3A11\u3A12"+
+        "\u3A13\u3A14\u3A15\u3A16\u3A17\u3A18\u3A19\u3A1A"+
+        "\u3A1B\u3A1C\u3A1D\u3A1E\u3A1F\u3A20\u3A21\u3A22"+
+        "\u3A23\u3A24\u3A25\u3A26\u3A27\u3A28\u3A29\u3A2A"+
+        "\u3A2B\u3A2C\u3A2D\u3A2E\u3A2F\u3A30\u3A31\u3A32"+
+        "\u3A33\u3A34\u3A35\u3A36\u3A37\u3A38\u3A39\u3A3A"+
+        "\u3A3B\u3A3C\u3A3D\u3A3E\u3A3F\u3A40\u3A41\u3A42"+
+        "\u3A43\u3A44\u3A45\u3A46\u3A47\u3A48\u3A49\u3A4A"+
+        "\u3A4B\u3A4C\u3A4D\u3A4E\u3A4F\u3A50\u3A51\u3A52"+
+        "\u3A53\u3A54\u3A55\u3A56\u3A57\u3A58\u3A59\u3A5A"+
+        "\u3A5B\u3A5C\u3A5D\u3A5E\u3A5F\u3A60\u3A61\u3A62"+
+        "\u3A63\u3A64\u3A65\u3A66\u3A67\u3A68\u3A69\u3A6A"+
+        "\u3A6B\u3A6C\u3A6D\u3A6E\u3A6F\u3A70\u3A71\u3A72"+
+        "\u3A74\u3A75\u3A76\u3A77\u3A78\u3A79\u3A7A\u3A7B"+
+        "\u3A7C\u3A7D\u3A7E\u3A7F\u3A80\u3A81\u3A82\u3A83"+
+        "\u3A84\u3A85\u3A86\u3A87\u3A88\u3A89\u3A8A\u3A8B"+
+        "\u3A8C\u3A8D\u3A8E\u3A8F\u3A90\u3A91\u3A92\u3A93"+
+        "\u3A94\u3A95\u3A96\u3A97\u3A98\u3A99\u3A9A\u3A9B"+
+        "\u3A9C\u3A9D\u3A9E\u3A9F\u3AA0\u3AA1\u3AA2\u3AA3"+
+        "\u3AA4\u3AA5\u3AA6\u3AA7\u3AA8\u3AA9\u3AAA\u3AAB"+
+        "\u3AAC\u3AAD\u3AAE\u3AAF\u3AB0\u3AB1\u3AB2\u3AB3"+
+        "\u3AB4\u3AB5\u3AB6\u3AB7\u3AB8\u3AB9\u3ABA\u3ABB"+
+        "\u3ABC\u3ABD\u3ABE\u3ABF\u3AC0\u3AC1\u3AC2\u3AC3"+
+        "\u3AC4\u3AC5\u3AC6\u3AC7\u3AC8\u3AC9\u3ACA\u3ACB"+
+        "\u3ACC\u3ACD\u3ACE\u3ACF\u3AD0\u3AD1\u3AD2\u3AD3"+
+        "\u3AD4\u3AD5\u3AD6\u3AD7\u3AD8\u3AD9\u3ADA\u3ADB"+
+        "\u3ADC\u3ADD\u3ADE\u3ADF\u3AE0\u3AE1\u3AE2\u3AE3"+
+        "\u3AE4\u3AE5\u3AE6\u3AE7\u3AE8\u3AE9\u3AEA\u3AEB"+
+        "\u3AEC\u3AED\u3AEE\u3AEF\u3AF0\u3AF1\u3AF2\u3AF3"+
+        "\u3AF4\u3AF5\u3AF6\u3AF7\u3AF8\u3AF9\u3AFA\u3AFB"+
+        "\u3AFC\u3AFD\u3AFE\u3AFF\u3B00\u3B01\u3B02\u3B03"+
+        "\u3B04\u3B05\u3B06\u3B07\u3B08\u3B09\u3B0A\u3B0B"+
+        "\u3B0C\u3B0D\u3B0E\u3B0F\u3B10\u3B11\u3B12\u3B13"+
+        "\u3B14\u3B15\u3B16\u3B17\u3B18\u3B19\u3B1A\u3B1B"+
+        "\u3B1C\u3B1D\u3B1E\u3B1F\u3B20\u3B21\u3B22\u3B23"+
+        "\u3B24\u3B25\u3B26\u3B27\u3B28\u3B29\u3B2A\u3B2B"+
+        "\u3B2C\u3B2D\u3B2E\u3B2F\u3B30\u3B31\u3B32\u3B33"+
+        "\u3B34\u3B35\u3B36\u3B37\u3B38\u3B39\u3B3A\u3B3B"+
+        "\u3B3C\u3B3D\u3B3E\u3B3F\u3B40\u3B41\u3B42\u3B43"+
+        "\u3B44\u3B45\u3B46\u3B47\u3B48\u3B49\u3B4A\u3B4B"+
+        "\u3B4C\u3B4D\u3B4F\u3B50\u3B51\u3B52\u3B53\u3B54"+
+        "\u3B55\u3B56\u3B57\u3B58\u3B59\u3B5A\u3B5B\u3B5C"+
+        "\u3B5D\u3B5E\u3B5F\u3B60\u3B61\u3B62\u3B63\u3B64"+
+        "\u3B65\u3B66\u3B67\u3B68\u3B69\u3B6A\u3B6B\u3B6C"+
+        "\u3B6D\u3B6E\u3B6F\u3B70\u3B71\u3B72\u3B73\u3B74"+
+        "\u3B75\u3B76\u3B77\u3B78\u3B79\u3B7A\u3B7B\u3B7C"+
+        "\u3B7D\u3B7E\u3B7F\u3B80\u3B81\u3B82\u3B83\u3B84"+
+        "\u3B85\u3B86\u3B87\u3B88\u3B89\u3B8A\u3B8B\u3B8C"+
+        "\u3B8D\u3B8E\u3B8F\u3B90\u3B91\u3B92\u3B93\u3B94"+
+        "\u3B95\u3B96\u3B97\u3B98\u3B99\u3B9A\u3B9B\u3B9C"+
+        "\u3B9D\u3B9E\u3B9F\u3BA0\u3BA1\u3BA2\u3BA3\u3BA4"+
+        "\u3BA5\u3BA6\u3BA7\u3BA8\u3BA9\u3BAA\u3BAB\u3BAC"+
+        "\u3BAD\u3BAE\u3BAF\u3BB0\u3BB1\u3BB2\u3BB3\u3BB4"+
+        "\u3BB5\u3BB6\u3BB7\u3BB8\u3BB9\u3BBA\u3BBB\u3BBC"+
+        "\u3BBD\u3BBE\u3BBF\u3BC0\u3BC1\u3BC2\u3BC3\u3BC4"+
+        "\u3BC5\u3BC6\u3BC7\u3BC8\u3BC9\u3BCA\u3BCB\u3BCC"+
+        "\u3BCD\u3BCE\u3BCF\u3BD0\u3BD1\u3BD2\u3BD3\u3BD4"+
+        "\u3BD5\u3BD6\u3BD7\u3BD8\u3BD9\u3BDA\u3BDB\u3BDC"+
+        "\u3BDD\u3BDE\u3BDF\u3BE0\u3BE1\u3BE2\u3BE3\u3BE4"+
+        "\u3BE5\u3BE6\u3BE7\u3BE8\u3BE9\u3BEA\u3BEB\u3BEC"+
+        "\u3BED\u3BEE\u3BEF\u3BF0\u3BF1\u3BF2\u3BF3\u3BF4"+
+        "\u3BF5\u3BF6\u3BF7\u3BF8\u3BF9\u3BFA\u3BFB\u3BFC"+
+        "\u3BFD\u3BFE\u3BFF\u3C00\u3C01\u3C02\u3C03\u3C04"+
+        "\u3C05\u3C06\u3C07\u3C08\u3C09\u3C0A\u3C0B\u3C0C"+
+        "\u3C0D\u3C0E\u3C0F\u3C10\u3C11\u3C12\u3C13\u3C14"+
+        "\u3C15\u3C16\u3C17\u3C18\u3C19\u3C1A\u3C1B\u3C1C"+
+        "\u3C1D\u3C1E\u3C1F\u3C20\u3C21\u3C22\u3C23\u3C24"+
+        "\u3C25\u3C26\u3C27\u3C28\u3C29\u3C2A\u3C2B\u3C2C"+
+        "\u3C2D\u3C2E\u3C2F\u3C30\u3C31\u3C32\u3C33\u3C34"+
+        "\u3C35\u3C36\u3C37\u3C38\u3C39\u3C3A\u3C3B\u3C3C"+
+        "\u3C3D\u3C3E\u3C3F\u3C40\u3C41\u3C42\u3C43\u3C44"+
+        "\u3C45\u3C46\u3C47\u3C48\u3C49\u3C4A\u3C4B\u3C4C"+
+        "\u3C4D\u3C4E\u3C4F\u3C50\u3C51\u3C52\u3C53\u3C54"+
+        "\u3C55\u3C56\u3C57\u3C58\u3C59\u3C5A\u3C5B\u3C5C"+
+        "\u3C5D\u3C5E\u3C5F\u3C60\u3C61\u3C62\u3C63\u3C64"+
+        "\u3C65\u3C66\u3C67\u3C68\u3C69\u3C6A\u3C6B\u3C6C"+
+        "\u3C6D\u3C6F\u3C70\u3C71\u3C72\u3C73\u3C74\u3C75"+
+        "\u3C76\u3C77\u3C78\u3C79\u3C7A\u3C7B\u3C7C\u3C7D"+
+        "\u3C7E\u3C7F\u3C80\u3C81\u3C82\u3C83\u3C84\u3C85"+
+        "\u3C86\u3C87\u3C88\u3C89\u3C8A\u3C8B\u3C8C\u3C8D"+
+        "\u3C8E\u3C8F\u3C90\u3C91\u3C92\u3C93\u3C94\u3C95"+
+        "\u3C96\u3C97\u3C98\u3C99\u3C9A\u3C9B\u3C9C\u3C9D"+
+        "\u3C9E\u3C9F\u3CA0\u3CA1\u3CA2\u3CA3\u3CA4\u3CA5"+
+        "\u3CA6\u3CA7\u3CA8\u3CA9\u3CAA\u3CAB\u3CAC\u3CAD"+
+        "\u3CAE\u3CAF\u3CB0\u3CB1\u3CB2\u3CB3\u3CB4\u3CB5"+
+        "\u3CB6\u3CB7\u3CB8\u3CB9\u3CBA\u3CBB\u3CBC\u3CBD"+
+        "\u3CBE\u3CBF\u3CC0\u3CC1\u3CC2\u3CC3\u3CC4\u3CC5"+
+        "\u3CC6\u3CC7\u3CC8\u3CC9\u3CCA\u3CCB\u3CCC\u3CCD"+
+        "\u3CCE\u3CCF\u3CD0\u3CD1\u3CD2\u3CD3\u3CD4\u3CD5"+
+        "\u3CD6\u3CD7\u3CD8\u3CD9\u3CDA\u3CDB\u3CDC\u3CDD"+
+        "\u3CDE\u3CDF\u3CE1\u3CE2\u3CE3\u3CE4\u3CE5\u3CE6"+
+        "\u3CE7\u3CE8\u3CE9\u3CEA\u3CEB\u3CEC\u3CED\u3CEE"+
+        "\u3CEF\u3CF0\u3CF1\u3CF2\u3CF3\u3CF4\u3CF5\u3CF6"+
+        "\u3CF7\u3CF8\u3CF9\u3CFA\u3CFB\u3CFC\u3CFD\u3CFE"+
+        "\u3CFF\u3D00\u3D01\u3D02\u3D03\u3D04\u3D05\u3D06"+
+        "\u3D07\u3D08\u3D09\u3D0A\u3D0B\u3D0C\u3D0D\u3D0E"+
+        "\u3D0F\u3D10\u3D11\u3D12\u3D13\u3D14\u3D15\u3D16"+
+        "\u3D17\u3D18\u3D19\u3D1A\u3D1B\u3D1C\u3D1D\u3D1E"+
+        "\u3D1F\u3D20\u3D21\u3D22\u3D23\u3D24\u3D25\u3D26"+
+        "\u3D27\u3D28\u3D29\u3D2A\u3D2B\u3D2C\u3D2D\u3D2E"+
+        "\u3D2F\u3D30\u3D31\u3D32\u3D33\u3D34\u3D35\u3D36"+
+        "\u3D37\u3D38\u3D39\u3D3A\u3D3B\u3D3C\u3D3D\u3D3E"+
+        "\u3D3F\u3D40\u3D41\u3D42\u3D43\u3D44\u3D45\u3D46"+
+        "\u3D47\u3D48\u3D49\u3D4A\u3D4B\u3D4C\u3D4D\u3D4E"+
+        "\u3D4F\u3D50\u3D51\u3D52\u3D53\u3D54\u3D55\u3D56"+
+        "\u3D57\u3D58\u3D59\u3D5A\u3D5B\u3D5C\u3D5D\u3D5E"+
+        "\u3D5F\u3D60\u3D61\u3D62\u3D63\u3D64\u3D65\u3D66"+
+        "\u3D67\u3D68\u3D69\u3D6A\u3D6B\u3D6C\u3D6D\u3D6E"+
+        "\u3D6F\u3D70\u3D71\u3D72\u3D73\u3D74\u3D75\u3D76"+
+        "\u3D77\u3D78\u3D79\u3D7A\u3D7B\u3D7C\u3D7D\u3D7E"+
+        "\u3D7F\u3D80\u3D81\u3D82\u3D83\u3D84\u3D85\u3D86"+
+        "\u3D87\u3D88\u3D89\u3D8A\u3D8B\u3D8C\u3D8D\u3D8E"+
+        "\u3D8F\u3D90\u3D91\u3D92\u3D93\u3D94\u3D95\u3D96"+
+        "\u3D97\u3D98\u3D99\u3D9A\u3D9B\u3D9C\u3D9D\u3D9E"+
+        "\u3D9F\u3DA0\u3DA1\u3DA2\u3DA3\u3DA4\u3DA5\u3DA6"+
+        "\u3DA7\u3DA8\u3DA9\u3DAA\u3DAB\u3DAC\u3DAD\u3DAE"+
+        "\u3DAF\u3DB0\u3DB1\u3DB2\u3DB3\u3DB4\u3DB5\u3DB6"+
+        "\u3DB7\u3DB8\u3DB9\u3DBA\u3DBB\u3DBC\u3DBD\u3DBE"+
+        "\u3DBF\u3DC0\u3DC1\u3DC2\u3DC3\u3DC4\u3DC5\u3DC6"+
+        "\u3DC7\u3DC8\u3DC9\u3DCA\u3DCB\u3DCC\u3DCD\u3DCE"+
+        "\u3DCF\u3DD0\u3DD1\u3DD2\u3DD3\u3DD4\u3DD5\u3DD6"+
+        "\u3DD7\u3DD8\u3DD9\u3DDA\u3DDB\u3DDC\u3DDD\u3DDE"+
+        "\u3DDF\u3DE0\u3DE1\u3DE2\u3DE3\u3DE4\u3DE5\u3DE6"+
+        "\u3DE7\u3DE8\u3DE9\u3DEA\u3DEB\u3DEC\u3DED\u3DEE"+
+        "\u3DEF\u3DF0\u3DF1\u3DF2\u3DF3\u3DF4\u3DF5\u3DF6"+
+        "\u3DF7\u3DF8\u3DF9\u3DFA\u3DFB\u3DFC\u3DFD\u3DFE"+
+        "\u3DFF\u3E00\u3E01\u3E02\u3E03\u3E04\u3E05\u3E06"+
+        "\u3E07\u3E08\u3E09\u3E0A\u3E0B\u3E0C\u3E0D\u3E0E"+
+        "\u3E0F\u3E10\u3E11\u3E12\u3E13\u3E14\u3E15\u3E16"+
+        "\u3E17\u3E18\u3E19\u3E1A\u3E1B\u3E1C\u3E1D\u3E1E"+
+        "\u3E1F\u3E20\u3E21\u3E22\u3E23\u3E24\u3E25\u3E26"+
+        "\u3E27\u3E28\u3E29\u3E2A\u3E2B\u3E2C\u3E2D\u3E2E"+
+        "\u3E2F\u3E30\u3E31\u3E32\u3E33\u3E34\u3E35\u3E36"+
+        "\u3E37\u3E38\u3E39\u3E3A\u3E3B\u3E3C\u3E3D\u3E3E"+
+        "\u3E3F\u3E40\u3E41\u3E42\u3E43\u3E44\u3E45\u3E46"+
+        "\u3E47\u3E48\u3E49\u3E4A\u3E4B\u3E4C\u3E4D\u3E4E"+
+        "\u3E4F\u3E50\u3E51\u3E52\u3E53\u3E54\u3E55\u3E56"+
+        "\u3E57\u3E58\u3E59\u3E5A\u3E5B\u3E5C\u3E5D\u3E5E"+
+        "\u3E5F\u3E60\u3E61\u3E62\u3E63\u3E64\u3E65\u3E66"+
+        "\u3E67\u3E68\u3E69\u3E6A\u3E6B\u3E6C\u3E6D\u3E6E"+
+        "\u3E6F\u3E70\u3E71\u3E72\u3E73\u3E74\u3E75\u3E76"+
+        "\u3E77\u3E78\u3E79\u3E7A\u3E7B\u3E7C\u3E7D\u3E7E"+
+        "\u3E7F\u3E80\u3E81\u3E82\u3E83\u3E84\u3E85\u3E86"+
+        "\u3E87\u3E88\u3E89\u3E8A\u3E8B\u3E8C\u3E8D\u3E8E"+
+        "\u3E8F\u3E90\u3E91\u3E92\u3E93\u3E94\u3E95\u3E96"+
+        "\u3E97\u3E98\u3E99\u3E9A\u3E9B\u3E9C\u3E9D\u3E9E"+
+        "\u3E9F\u3EA0\u3EA1\u3EA2\u3EA3\u3EA4\u3EA5\u3EA6"+
+        "\u3EA7\u3EA8\u3EA9\u3EAA\u3EAB\u3EAC\u3EAD\u3EAE"+
+        "\u3EAF\u3EB0\u3EB1\u3EB2\u3EB3\u3EB4\u3EB5\u3EB6"+
+        "\u3EB7\u3EB8\u3EB9\u3EBA\u3EBB\u3EBC\u3EBD\u3EBE"+
+        "\u3EBF\u3EC0\u3EC1\u3EC2\u3EC3\u3EC4\u3EC5\u3EC6"+
+        "\u3EC7\u3EC8\u3EC9\u3ECA\u3ECB\u3ECC\u3ECD\u3ECE"+
+        "\u3ECF\u3ED0\u3ED1\u3ED2\u3ED3\u3ED4\u3ED5\u3ED6"+
+        "\u3ED7\u3ED8\u3ED9\u3EDA\u3EDB\u3EDC\u3EDD\u3EDE"+
+        "\u3EDF\u3EE0\u3EE1\u3EE2\u3EE3\u3EE4\u3EE5\u3EE6"+
+        "\u3EE7\u3EE8\u3EE9\u3EEA\u3EEB\u3EEC\u3EED\u3EEE"+
+        "\u3EEF\u3EF0\u3EF1\u3EF2\u3EF3\u3EF4\u3EF5\u3EF6"+
+        "\u3EF7\u3EF8\u3EF9\u3EFA\u3EFB\u3EFC\u3EFD\u3EFE"+
+        "\u3EFF\u3F00\u3F01\u3F02\u3F03\u3F04\u3F05\u3F06"+
+        "\u3F07\u3F08\u3F09\u3F0A\u3F0B\u3F0C\u3F0D\u3F0E"+
+        "\u3F0F\u3F10\u3F11\u3F12\u3F13\u3F14\u3F15\u3F16"+
+        "\u3F17\u3F18\u3F19\u3F1A\u3F1B\u3F1C\u3F1D\u3F1E"+
+        "\u3F1F\u3F20\u3F21\u3F22\u3F23\u3F24\u3F25\u3F26"+
+        "\u3F27\u3F28\u3F29\u3F2A\u3F2B\u3F2C\u3F2D\u3F2E"+
+        "\u3F2F\u3F30\u3F31\u3F32\u3F33\u3F34\u3F35\u3F36"+
+        "\u3F37\u3F38\u3F39\u3F3A\u3F3B\u3F3C\u3F3D\u3F3E"+
+        "\u3F3F\u3F40\u3F41\u3F42\u3F43\u3F44\u3F45\u3F46"+
+        "\u3F47\u3F48\u3F49\u3F4A\u3F4B\u3F4C\u3F4D\u3F4E"+
+        "\u3F4F\u3F50\u3F51\u3F52\u3F53\u3F54\u3F55\u3F56"+
+        "\u3F57\u3F58\u3F59\u3F5A\u3F5B\u3F5C\u3F5D\u3F5E"+
+        "\u3F5F\u3F60\u3F61\u3F62\u3F63\u3F64\u3F65\u3F66"+
+        "\u3F67\u3F68\u3F69\u3F6A\u3F6B\u3F6C\u3F6D\u3F6E"+
+        "\u3F6F\u3F70\u3F71\u3F72\u3F73\u3F74\u3F75\u3F76"+
+        "\u3F77\u3F78\u3F79\u3F7A\u3F7B\u3F7C\u3F7D\u3F7E"+
+        "\u3F7F\u3F80\u3F81\u3F82\u3F83\u3F84\u3F85\u3F86"+
+        "\u3F87\u3F88\u3F89\u3F8A\u3F8B\u3F8C\u3F8D\u3F8E"+
+        "\u3F8F\u3F90\u3F91\u3F92\u3F93\u3F94\u3F95\u3F96"+
+        "\u3F97\u3F98\u3F99\u3F9A\u3F9B\u3F9C\u3F9D\u3F9E"+
+        "\u3F9F\u3FA0\u3FA1\u3FA2\u3FA3\u3FA4\u3FA5\u3FA6"+
+        "\u3FA7\u3FA8\u3FA9\u3FAA\u3FAB\u3FAC\u3FAD\u3FAE"+
+        "\u3FAF\u3FB0\u3FB1\u3FB2\u3FB3\u3FB4\u3FB5\u3FB6"+
+        "\u3FB7\u3FB8\u3FB9\u3FBA\u3FBB\u3FBC\u3FBD\u3FBE"+
+        "\u3FBF\u3FC0\u3FC1\u3FC2\u3FC3\u3FC4\u3FC5\u3FC6"+
+        "\u3FC7\u3FC8\u3FC9\u3FCA\u3FCB\u3FCC\u3FCD\u3FCE"+
+        "\u3FCF\u3FD0\u3FD1\u3FD2\u3FD3\u3FD4\u3FD5\u3FD6"+
+        "\u3FD7\u3FD8\u3FD9\u3FDA\u3FDB\u3FDC\u3FDD\u3FDE"+
+        "\u3FDF\u3FE0\u3FE1\u3FE2\u3FE3\u3FE4\u3FE5\u3FE6"+
+        "\u3FE7\u3FE8\u3FE9\u3FEA\u3FEB\u3FEC\u3FED\u3FEE"+
+        "\u3FEF\u3FF0\u3FF1\u3FF2\u3FF3\u3FF4\u3FF5\u3FF6"+
+        "\u3FF7\u3FF8\u3FF9\u3FFA\u3FFB\u3FFC\u3FFD\u3FFE"+
+        "\u3FFF\u4000\u4001\u4002\u4003\u4004\u4005\u4006"+
+        "\u4007\u4008\u4009\u400A\u400B\u400C\u400D\u400E"+
+        "\u400F\u4010\u4011\u4012\u4013\u4014\u4015\u4016"+
+        "\u4017\u4018\u4019\u401A\u401B\u401C\u401D\u401E"+
+        "\u401F\u4020\u4021\u4022\u4023\u4024\u4025\u4026"+
+        "\u4027\u4028\u4029\u402A\u402B\u402C\u402D\u402E"+
+        "\u402F\u4030\u4031\u4032\u4033\u4034\u4035\u4036"+
+        "\u4037\u4038\u4039\u403A\u403B\u403C\u403D\u403E"+
+        "\u403F\u4040\u4041\u4042\u4043\u4044\u4045\u4046"+
+        "\u4047\u4048\u4049\u404A\u404B\u404C\u404D\u404E"+
+        "\u404F\u4050\u4051\u4052\u4053\u4054\u4055\u4057"+
+        "\u4058\u4059\u405A\u405B\u405C\u405D\u405E\u405F"+
+        "\u4060\u4061\u4062\u4063\u4064\u4065\u4066\u4067"+
+        "\u4068\u4069\u406A\u406B\u406C\u406D\u406E\u406F"+
+        "\u4070\u4071\u4072\u4073\u4074\u4075\u4076\u4077"+
+        "\u4078\u4079\u407A\u407B\u407C\u407D\u407E\u407F"+
+        "\u4080\u4081\u4082\u4083\u4084\u4085\u4086\u4087"+
+        "\u4088\u4089\u408A\u408B\u408C\u408D\u408E\u408F"+
+        "\u4090\u4091\u4092\u4093\u4094\u4095\u4096\u4097"+
+        "\u4098\u4099\u409A\u409B\u409C\u409D\u409E\u409F"+
+        "\u40A0\u40A1\u40A2\u40A3\u40A4\u40A5\u40A6\u40A7"+
+        "\u40A8\u40A9\u40AA\u40AB\u40AC\u40AD\u40AE\u40AF"+
+        "\u40B0\u40B1\u40B2\u40B3\u40B4\u40B5\u40B6\u40B7"+
+        "\u40B8\u40B9\u40BA\u40BB\u40BC\u40BD\u40BE\u40BF"+
+        "\u40C0\u40C1\u40C2\u40C3\u40C4\u40C5\u40C6\u40C7"+
+        "\u40C8\u40C9\u40CA\u40CB\u40CC\u40CD\u40CE\u40CF"+
+        "\u40D0\u40D1\u40D2\u40D3\u40D4\u40D5\u40D6\u40D7"+
+        "\u40D8\u40D9\u40DA\u40DB\u40DC\u40DD\u40DE\u40DF"+
+        "\u40E0\u40E1\u40E2\u40E3\u40E4\u40E5\u40E6\u40E7"+
+        "\u40E8\u40E9\u40EA\u40EB\u40EC\u40ED\u40EE\u40EF"+
+        "\u40F0\u40F1\u40F2\u40F3\u40F4\u40F5\u40F6\u40F7"+
+        "\u40F8\u40F9\u40FA\u40FB\u40FC\u40FD\u40FE\u40FF"+
+        "\u4100\u4101\u4102\u4103\u4104\u4105\u4106\u4107"+
+        "\u4108\u4109\u410A\u410B\u410C\u410D\u410E\u410F"+
+        "\u4110\u4111\u4112\u4113\u4114\u4115\u4116\u4117"+
+        "\u4118\u4119\u411A\u411B\u411C\u411D\u411E\u411F"+
+        "\u4120\u4121\u4122\u4123\u4124\u4125\u4126\u4127"+
+        "\u4128\u4129\u412A\u412B\u412C\u412D\u412E\u412F"+
+        "\u4130\u4131\u4132\u4133\u4134\u4135\u4136\u4137"+
+        "\u4138\u4139\u413A\u413B\u413C\u413D\u413E\u413F"+
+        "\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147"+
+        "\u4148\u4149\u414A\u414B\u414C\u414D\u414E\u414F"+
+        "\u4150\u4151\u4152\u4153\u4154\u4155\u4156\u4157"+
+        "\u4158\u4159\u415A\u415B\u415C\u415D\u415E\u4160"+
+        "\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168"+
+        "\u4169\u416A\u416B\u416C\u416D\u416E\u416F\u4170"+
+        "\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178"+
+        "\u4179\u417A\u417B\u417C\u417D\u417E\u417F\u4180"+
+        "\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188"+
+        "\u4189\u418A\u418B\u418C\u418D\u418E\u418F\u4190"+
+        "\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198"+
+        "\u4199\u419A\u419B\u419C\u419D\u419E\u419F\u41A0"+
+        "\u41A1\u41A2\u41A3\u41A4\u41A5\u41A6\u41A7\u41A8"+
+        "\u41A9\u41AA\u41AB\u41AC\u41AD\u41AE\u41AF\u41B0"+
+        "\u41B1\u41B2\u41B3\u41B4\u41B5\u41B6\u41B7\u41B8"+
+        "\u41B9\u41BA\u41BB\u41BC\u41BD\u41BE\u41BF\u41C0"+
+        "\u41C1\u41C2\u41C3\u41C4\u41C5\u41C6\u41C7\u41C8"+
+        "\u41C9\u41CA\u41CB\u41CC\u41CD\u41CE\u41CF\u41D0"+
+        "\u41D1\u41D2\u41D3\u41D4\u41D5\u41D6\u41D7\u41D8"+
+        "\u41D9\u41DA\u41DB\u41DC\u41DD\u41DE\u41DF\u41E0"+
+        "\u41E1\u41E2\u41E3\u41E4\u41E5\u41E6\u41E7\u41E8"+
+        "\u41E9\u41EA\u41EB\u41EC\u41ED\u41EE\u41EF\u41F0"+
+        "\u41F1\u41F2\u41F3\u41F4\u41F5\u41F6\u41F7\u41F8"+
+        "\u41F9\u41FA\u41FB\u41FC\u41FD\u41FE\u41FF\u4200"+
+        "\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208"+
+        "\u4209\u420A\u420B\u420C\u420D\u420E\u420F\u4210"+
+        "\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218"+
+        "\u4219\u421A\u421B\u421C\u421D\u421E\u421F\u4220"+
+        "\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228"+
+        "\u4229\u422A\u422B\u422C\u422D\u422E\u422F\u4230"+
+        "\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u4238"+
+        "\u4239\u423A\u423B\u423C\u423D\u423E\u423F\u4240"+
+        "\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u4248"+
+        "\u4249\u424A\u424B\u424C\u424D\u424E\u424F\u4250"+
+        "\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258"+
+        "\u4259\u425A\u425B\u425C\u425D\u425E\u425F\u4260"+
+        "\u4261\u4262\u4263\u4264\u4265\u4266\u4267\u4268"+
+        "\u4269\u426A\u426B\u426C\u426D\u426E\u426F\u4270"+
+        "\u4271\u4272\u4273\u4274\u4275\u4276\u4277\u4278"+
+        "\u4279\u427A\u427B\u427C\u427D\u427E\u427F\u4280"+
+        "\u4281\u4282\u4283\u4284\u4285\u4286\u4287\u4288"+
+        "\u4289\u428A\u428B\u428C\u428D\u428E\u428F\u4290"+
+        "\u4291\u4292\u4293\u4294\u4295\u4296\u4297\u4298"+
+        "\u4299\u429A\u429B\u429C\u429D\u429E\u429F\u42A0"+
+        "\u42A1\u42A2\u42A3\u42A4\u42A5\u42A6\u42A7\u42A8"+
+        "\u42A9\u42AA\u42AB\u42AC\u42AD\u42AE\u42AF\u42B0"+
+        "\u42B1\u42B2\u42B3\u42B4\u42B5\u42B6\u42B7\u42B8"+
+        "\u42B9\u42BA\u42BB\u42BC\u42BD\u42BE\u42BF\u42C0"+
+        "\u42C1\u42C2\u42C3\u42C4\u42C5\u42C6\u42C7\u42C8"+
+        "\u42C9\u42CA\u42CB\u42CC\u42CD\u42CE\u42CF\u42D0"+
+        "\u42D1\u42D2\u42D3\u42D4\u42D5\u42D6\u42D7\u42D8"+
+        "\u42D9\u42DA\u42DB\u42DC\u42DD\u42DE\u42DF\u42E0"+
+        "\u42E1\u42E2\u42E3\u42E4\u42E5\u42E6\u42E7\u42E8"+
+        "\u42E9\u42EA\u42EB\u42EC\u42ED\u42EE\u42EF\u42F0"+
+        "\u42F1\u42F2\u42F3\u42F4\u42F5\u42F6\u42F7\u42F8"+
+        "\u42F9\u42FA\u42FB\u42FC\u42FD\u42FE\u42FF\u4300"+
+        "\u4301\u4302\u4303\u4304\u4305\u4306\u4307\u4308"+
+        "\u4309\u430A\u430B\u430C\u430D\u430E\u430F\u4310"+
+        "\u4311\u4312\u4313\u4314\u4315\u4316\u4317\u4318"+
+        "\u4319\u431A\u431B\u431C\u431D\u431E\u431F\u4320"+
+        "\u4321\u4322\u4323\u4324\u4325\u4326\u4327\u4328"+
+        "\u4329\u432A\u432B\u432C\u432D\u432E\u432F\u4330"+
+        "\u4331\u4332\u4333\u4334\u4335\u4336\u4338\u4339"+
+        "\u433A\u433B\u433C\u433D\u433E\u433F\u4340\u4341"+
+        "\u4342\u4343\u4344\u4345\u4346\u4347\u4348\u4349"+
+        "\u434A\u434B\u434C\u434D\u434E\u434F\u4350\u4351"+
+        "\u4352\u4353\u4354\u4355\u4356\u4357\u4358\u4359"+
+        "\u435A\u435B\u435C\u435D\u435E\u435F\u4360\u4361"+
+        "\u4362\u4363\u4364\u4365\u4366\u4367\u4368\u4369"+
+        "\u436A\u436B\u436C\u436D\u436E\u436F\u4370\u4371"+
+        "\u4372\u4373\u4374\u4375\u4376\u4377\u4378\u4379";
+
+    private final static String innerDecoderIndex4=
+        "\u437A\u437B\u437C\u437D\u437E\u437F\u4380\u4381"+
+        "\u4382\u4383\u4384\u4385\u4386\u4387\u4388\u4389"+
+        "\u438A\u438B\u438C\u438D\u438E\u438F\u4390\u4391"+
+        "\u4392\u4393\u4394\u4395\u4396\u4397\u4398\u4399"+
+        "\u439A\u439B\u439C\u439D\u439E\u439F\u43A0\u43A1"+
+        "\u43A2\u43A3\u43A4\u43A5\u43A6\u43A7\u43A8\u43A9"+
+        "\u43AA\u43AB\u43AD\u43AE\u43AF\u43B0\u43B2\u43B3"+
+        "\u43B4\u43B5\u43B6\u43B7\u43B8\u43B9\u43BA\u43BB"+
+        "\u43BC\u43BD\u43BE\u43BF\u43C0\u43C1\u43C2\u43C3"+
+        "\u43C4\u43C5\u43C6\u43C7\u43C8\u43C9\u43CA\u43CB"+
+        "\u43CC\u43CD\u43CE\u43CF\u43D0\u43D1\u43D2\u43D3"+
+        "\u43D4\u43D5\u43D6\u43D7\u43D8\u43D9\u43DA\u43DB"+
+        "\u43DC\u43DE\u43DF\u43E0\u43E1\u43E2\u43E3\u43E4"+
+        "\u43E5\u43E6\u43E7\u43E8\u43E9\u43EA\u43EB\u43EC"+
+        "\u43ED\u43EE\u43EF\u43F0\u43F1\u43F2\u43F3\u43F4"+
+        "\u43F5\u43F6\u43F7\u43F8\u43F9\u43FA\u43FB\u43FC"+
+        "\u43FD\u43FE\u43FF\u4400\u4401\u4402\u4403\u4404"+
+        "\u4405\u4406\u4407\u4408\u4409\u440A\u440B\u440C"+
+        "\u440D\u440E\u440F\u4410\u4411\u4412\u4413\u4414"+
+        "\u4415\u4416\u4417\u4418\u4419\u441A\u441B\u441C"+
+        "\u441D\u441E\u441F\u4420\u4421\u4422\u4423\u4424"+
+        "\u4425\u4426\u4427\u4428\u4429\u442A\u442B\u442C"+
+        "\u442D\u442E\u442F\u4430\u4431\u4432\u4433\u4434"+
+        "\u4435\u4436\u4437\u4438\u4439\u443A\u443B\u443C"+
+        "\u443D\u443E\u443F\u4440\u4441\u4442\u4443\u4444"+
+        "\u4445\u4446\u4447\u4448\u4449\u444A\u444B\u444C"+
+        "\u444D\u444E\u444F\u4450\u4451\u4452\u4453\u4454"+
+        "\u4455\u4456\u4457\u4458\u4459\u445A\u445B\u445C"+
+        "\u445D\u445E\u445F\u4460\u4461\u4462\u4463\u4464"+
+        "\u4465\u4466\u4467\u4468\u4469\u446A\u446B\u446C"+
+        "\u446D\u446E\u446F\u4470\u4471\u4472\u4473\u4474"+
+        "\u4475\u4476\u4477\u4478\u4479\u447A\u447B\u447C"+
+        "\u447D\u447E\u447F\u4480\u4481\u4482\u4483\u4484"+
+        "\u4485\u4486\u4487\u4488\u4489\u448A\u448B\u448C"+
+        "\u448D\u448E\u448F\u4490\u4491\u4492\u4493\u4494"+
+        "\u4495\u4496\u4497\u4498\u4499\u449A\u449B\u449C"+
+        "\u449D\u449E\u449F\u44A0\u44A1\u44A2\u44A3\u44A4"+
+        "\u44A5\u44A6\u44A7\u44A8\u44A9\u44AA\u44AB\u44AC"+
+        "\u44AD\u44AE\u44AF\u44B0\u44B1\u44B2\u44B3\u44B4"+
+        "\u44B5\u44B6\u44B7\u44B8\u44B9\u44BA\u44BB\u44BC"+
+        "\u44BD\u44BE\u44BF\u44C0\u44C1\u44C2\u44C3\u44C4"+
+        "\u44C5\u44C6\u44C7\u44C8\u44C9\u44CA\u44CB\u44CC"+
+        "\u44CD\u44CE\u44CF\u44D0\u44D1\u44D2\u44D3\u44D4"+
+        "\u44D5\u44D7\u44D8\u44D9\u44DA\u44DB\u44DC\u44DD"+
+        "\u44DE\u44DF\u44E0\u44E1\u44E2\u44E3\u44E4\u44E5"+
+        "\u44E6\u44E7\u44E8\u44E9\u44EA\u44EB\u44EC\u44ED"+
+        "\u44EE\u44EF\u44F0\u44F1\u44F2\u44F3\u44F4\u44F5"+
+        "\u44F6\u44F7\u44F8\u44F9\u44FA\u44FB\u44FC\u44FD"+
+        "\u44FE\u44FF\u4500\u4501\u4502\u4503\u4504\u4505"+
+        "\u4506\u4507\u4508\u4509\u450A\u450B\u450C\u450D"+
+        "\u450E\u450F\u4510\u4511\u4512\u4513\u4514\u4515"+
+        "\u4516\u4517\u4518\u4519\u451A\u451B\u451C\u451D"+
+        "\u451E\u451F\u4520\u4521\u4522\u4523\u4524\u4525"+
+        "\u4526\u4527\u4528\u4529\u452A\u452B\u452C\u452D"+
+        "\u452E\u452F\u4530\u4531\u4532\u4533\u4534\u4535"+
+        "\u4536\u4537\u4538\u4539\u453A\u453B\u453C\u453D"+
+        "\u453E\u453F\u4540\u4541\u4542\u4543\u4544\u4545"+
+        "\u4546\u4547\u4548\u4549\u454A\u454B\u454C\u454D"+
+        "\u454E\u454F\u4550\u4551\u4552\u4553\u4554\u4555"+
+        "\u4556\u4557\u4558\u4559\u455A\u455B\u455C\u455D"+
+        "\u455E\u455F\u4560\u4561\u4562\u4563\u4564\u4565"+
+        "\u4566\u4567\u4568\u4569\u456A\u456B\u456C\u456D"+
+        "\u456E\u456F\u4570\u4571\u4572\u4573\u4574\u4575"+
+        "\u4576\u4577\u4578\u4579\u457A\u457B\u457C\u457D"+
+        "\u457E\u457F\u4580\u4581\u4582\u4583\u4584\u4585"+
+        "\u4586\u4587\u4588\u4589\u458A\u458B\u458C\u458D"+
+        "\u458E\u458F\u4590\u4591\u4592\u4593\u4594\u4595"+
+        "\u4596\u4597\u4598\u4599\u459A\u459B\u459C\u459D"+
+        "\u459E\u459F\u45A0\u45A1\u45A2\u45A3\u45A4\u45A5"+
+        "\u45A6\u45A7\u45A8\u45A9\u45AA\u45AB\u45AC\u45AD"+
+        "\u45AE\u45AF\u45B0\u45B1\u45B2\u45B3\u45B4\u45B5"+
+        "\u45B6\u45B7\u45B8\u45B9\u45BA\u45BB\u45BC\u45BD"+
+        "\u45BE\u45BF\u45C0\u45C1\u45C2\u45C3\u45C4\u45C5"+
+        "\u45C6\u45C7\u45C8\u45C9\u45CA\u45CB\u45CC\u45CD"+
+        "\u45CE\u45CF\u45D0\u45D1\u45D2\u45D3\u45D4\u45D5"+
+        "\u45D6\u45D7\u45D8\u45D9\u45DA\u45DB\u45DC\u45DD"+
+        "\u45DE\u45DF\u45E0\u45E1\u45E2\u45E3\u45E4\u45E5"+
+        "\u45E6\u45E7\u45E8\u45E9\u45EA\u45EB\u45EC\u45ED"+
+        "\u45EE\u45EF\u45F0\u45F1\u45F2\u45F3\u45F4\u45F5"+
+        "\u45F6\u45F7\u45F8\u45F9\u45FA\u45FB\u45FC\u45FD"+
+        "\u45FE\u45FF\u4600\u4601\u4602\u4603\u4604\u4605"+
+        "\u4606\u4607\u4608\u4609\u460A\u460B\u460C\u460D"+
+        "\u460E\u460F\u4610\u4611\u4612\u4613\u4614\u4615"+
+        "\u4616\u4617\u4618\u4619\u461A\u461B\u461C\u461D"+
+        "\u461E\u461F\u4620\u4621\u4622\u4623\u4624\u4625"+
+        "\u4626\u4627\u4628\u4629\u462A\u462B\u462C\u462D"+
+        "\u462E\u462F\u4630\u4631\u4632\u4633\u4634\u4635"+
+        "\u4636\u4637\u4638\u4639\u463A\u463B\u463C\u463D"+
+        "\u463E\u463F\u4640\u4641\u4642\u4643\u4644\u4645"+
+        "\u4646\u4647\u4648\u4649\u464A\u464B\u464D\u464E"+
+        "\u464F\u4650\u4651\u4652\u4653\u4654\u4655\u4656"+
+        "\u4657\u4658\u4659\u465A\u465B\u465C\u465D\u465E"+
+        "\u465F\u4660\u4662\u4663\u4664\u4665\u4666\u4667"+
+        "\u4668\u4669\u466A\u466B\u466C\u466D\u466E\u466F"+
+        "\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677"+
+        "\u4678\u4679\u467A\u467B\u467C\u467D\u467E\u467F"+
+        "\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687"+
+        "\u4688\u4689\u468A\u468B\u468C\u468D\u468E\u468F"+
+        "\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697"+
+        "\u4698\u4699\u469A\u469B\u469C\u469D\u469E\u469F"+
+        "\u46A0\u46A1\u46A2\u46A3\u46A4\u46A5\u46A6\u46A7"+
+        "\u46A8\u46A9\u46AA\u46AB\u46AC\u46AD\u46AE\u46AF"+
+        "\u46B0\u46B1\u46B2\u46B3\u46B4\u46B5\u46B6\u46B7"+
+        "\u46B8\u46B9\u46BA\u46BB\u46BC\u46BD\u46BE\u46BF"+
+        "\u46C0\u46C1\u46C2\u46C3\u46C4\u46C5\u46C6\u46C7"+
+        "\u46C8\u46C9\u46CA\u46CB\u46CC\u46CD\u46CE\u46CF"+
+        "\u46D0\u46D1\u46D2\u46D3\u46D4\u46D5\u46D6\u46D7"+
+        "\u46D8\u46D9\u46DA\u46DB\u46DC\u46DD\u46DE\u46DF"+
+        "\u46E0\u46E1\u46E2\u46E3\u46E4\u46E5\u46E6\u46E7"+
+        "\u46E8\u46E9\u46EA\u46EB\u46EC\u46ED\u46EE\u46EF"+
+        "\u46F0\u46F1\u46F2\u46F3\u46F4\u46F5\u46F6\u46F7"+
+        "\u46F8\u46F9\u46FA\u46FB\u46FC\u46FD\u46FE\u46FF"+
+        "\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707"+
+        "\u4708\u4709\u470A\u470B\u470C\u470D\u470E\u470F"+
+        "\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717"+
+        "\u4718\u4719\u471A\u471B\u471C\u471D\u471E\u471F"+
+        "\u4720\u4721\u4722\u4724\u4725\u4726\u4727\u4728"+
+        "\u472A\u472B\u472C\u472D\u472E\u472F\u4730\u4731"+
+        "\u4732\u4733\u4734\u4735\u4736\u4737\u4738\u4739"+
+        "\u473A\u473B\u473C\u473D\u473E\u473F\u4740\u4741"+
+        "\u4742\u4743\u4744\u4745\u4746\u4747\u4748\u4749"+
+        "\u474A\u474B\u474C\u474D\u474E\u474F\u4750\u4751"+
+        "\u4752\u4753\u4754\u4755\u4756\u4757\u4758\u4759"+
+        "\u475A\u475B\u475C\u475D\u475E\u475F\u4760\u4761"+
+        "\u4762\u4763\u4764\u4765\u4766\u4767\u4768\u4769"+
+        "\u476A\u476B\u476C\u476D\u476E\u476F\u4770\u4771"+
+        "\u4772\u4773\u4774\u4775\u4776\u4777\u4778\u4779"+
+        "\u477A\u477B\u477D\u477E\u477F\u4780\u4781\u4782"+
+        "\u4783\u4784\u4785\u4786\u4787\u4788\u4789\u478A"+
+        "\u478B\u478C\u478E\u478F\u4790\u4791\u4792\u4793"+
+        "\u4794\u4795\u4796\u4797\u4798\u4799\u479A\u479B"+
+        "\u479C\u479D\u479E\u479F\u47A0\u47A1\u47A2\u47A3"+
+        "\u47A4\u47A5\u47A6\u47A7\u47A8\u47A9\u47AA\u47AB"+
+        "\u47AC\u47AD\u47AE\u47AF\u47B0\u47B1\u47B2\u47B3"+
+        "\u47B4\u47B5\u47B6\u47B7\u47B8\u47B9\u47BA\u47BB"+
+        "\u47BC\u47BD\u47BE\u47BF\u47C0\u47C1\u47C2\u47C3"+
+        "\u47C4\u47C5\u47C6\u47C7\u47C8\u47C9\u47CA\u47CB"+
+        "\u47CC\u47CD\u47CE\u47CF\u47D0\u47D1\u47D2\u47D3"+
+        "\u47D4\u47D5\u47D6\u47D7\u47D8\u47D9\u47DA\u47DB"+
+        "\u47DC\u47DD\u47DE\u47DF\u47E0\u47E1\u47E2\u47E3"+
+        "\u47E4\u47E5\u47E6\u47E7\u47E8\u47E9\u47EA\u47EB"+
+        "\u47EC\u47ED\u47EE\u47EF\u47F0\u47F1\u47F2\u47F3"+
+        "\u47F4\u47F5\u47F6\u47F7\u47F8\u47F9\u47FA\u47FB"+
+        "\u47FC\u47FD\u47FE\u47FF\u4800\u4801\u4802\u4803"+
+        "\u4804\u4805\u4806\u4807\u4808\u4809\u480A\u480B"+
+        "\u480C\u480D\u480E\u480F\u4810\u4811\u4812\u4813"+
+        "\u4814\u4815\u4816\u4817\u4818\u4819\u481A\u481B"+
+        "\u481C\u481D\u481E\u481F\u4820\u4821\u4822\u4823"+
+        "\u4824\u4825\u4826\u4827\u4828\u4829\u482A\u482B"+
+        "\u482C\u482D\u482E\u482F\u4830\u4831\u4832\u4833"+
+        "\u4834\u4835\u4836\u4837\u4838\u4839\u483A\u483B"+
+        "\u483C\u483D\u483E\u483F\u4840\u4841\u4842\u4843"+
+        "\u4844\u4845\u4846\u4847\u4848\u4849\u484A\u484B"+
+        "\u484C\u484D\u484E\u484F\u4850\u4851\u4852\u4853"+
+        "\u4854\u4855\u4856\u4857\u4858\u4859\u485A\u485B"+
+        "\u485C\u485D\u485E\u485F\u4860\u4861\u4862\u4863"+
+        "\u4864\u4865\u4866\u4867\u4868\u4869\u486A\u486B"+
+        "\u486C\u486D\u486E\u486F\u4870\u4871\u4872\u4873"+
+        "\u4874\u4875\u4876\u4877\u4878\u4879\u487A\u487B"+
+        "\u487C\u487D\u487E\u487F\u4880\u4881\u4882\u4883"+
+        "\u4884\u4885\u4886\u4887\u4888\u4889\u488A\u488B"+
+        "\u488C\u488D\u488E\u488F\u4890\u4891\u4892\u4893"+
+        "\u4894\u4895\u4896\u4897\u4898\u4899\u489A\u489B"+
+        "\u489C\u489D\u489E\u489F\u48A0\u48A1\u48A2\u48A3"+
+        "\u48A4\u48A5\u48A6\u48A7\u48A8\u48A9\u48AA\u48AB"+
+        "\u48AC\u48AD\u48AE\u48AF\u48B0\u48B1\u48B2\u48B3"+
+        "\u48B4\u48B5\u48B6\u48B7\u48B8\u48B9\u48BA\u48BB"+
+        "\u48BC\u48BD\u48BE\u48BF\u48C0\u48C1\u48C2\u48C3"+
+        "\u48C4\u48C5\u48C6\u48C7\u48C8\u48C9\u48CA\u48CB"+
+        "\u48CC\u48CD\u48CE\u48CF\u48D0\u48D1\u48D2\u48D3"+
+        "\u48D4\u48D5\u48D6\u48D7\u48D8\u48D9\u48DA\u48DB"+
+        "\u48DC\u48DD\u48DE\u48DF\u48E0\u48E1\u48E2\u48E3"+
+        "\u48E4\u48E5\u48E6\u48E7\u48E8\u48E9\u48EA\u48EB"+
+        "\u48EC\u48ED\u48EE\u48EF\u48F0\u48F1\u48F2\u48F3"+
+        "\u48F4\u48F5\u48F6\u48F7\u48F8\u48F9\u48FA\u48FB"+
+        "\u48FC\u48FD\u48FE\u48FF\u4900\u4901\u4902\u4903"+
+        "\u4904\u4905\u4906\u4907\u4908\u4909\u490A\u490B"+
+        "\u490C\u490D\u490E\u490F\u4910\u4911\u4912\u4913"+
+        "\u4914\u4915\u4916\u4917\u4918\u4919\u491A\u491B"+
+        "\u491C\u491D\u491E\u491F\u4920\u4921\u4922\u4923"+
+        "\u4924\u4925\u4926\u4927\u4928\u4929\u492A\u492B"+
+        "\u492C\u492D\u492E\u492F\u4930\u4931\u4932\u4933"+
+        "\u4934\u4935\u4936\u4937\u4938\u4939\u493A\u493B"+
+        "\u493C\u493D\u493E\u493F\u4940\u4941\u4942\u4943"+
+        "\u4944\u4945\u4946\u4948\u4949\u494A\u494B\u494C"+
+        "\u494D\u494E\u494F\u4950\u4951\u4952\u4953\u4954"+
+        "\u4955\u4956\u4957\u4958\u4959\u495A\u495B\u495C"+
+        "\u495D\u495E\u495F\u4960\u4961\u4962\u4963\u4964"+
+        "\u4965\u4966\u4967\u4968\u4969\u496A\u496B\u496C"+
+        "\u496D\u496E\u496F\u4970\u4971\u4972\u4973\u4974"+
+        "\u4975\u4976\u4977\u4978\u4979\u497B\u497C\u497E"+
+        "\u497F\u4980\u4981\u4984\u4987\u4988\u4989\u498A"+
+        "\u498B\u498C\u498D\u498E\u498F\u4990\u4991\u4992"+
+        "\u4993\u4994\u4995\u4996\u4997\u4998\u4999\u499A"+
+        "\u499C\u499D\u499E\u49A0\u49A1\u49A2\u49A3\u49A4"+
+        "\u49A5\u49A6\u49A7\u49A8\u49A9\u49AA\u49AB\u49AC"+
+        "\u49AD\u49AE\u49AF\u49B0\u49B1\u49B2\u49B3\u49B4"+
+        "\u49B5\u49B8\u49B9\u49BA\u49BB\u49BC\u49BD\u49BE"+
+        "\u49BF\u49C0\u49C1\u49C2\u49C3\u49C4\u49C5\u49C6"+
+        "\u49C7\u49C8\u49C9\u49CA\u49CB\u49CC\u49CD\u49CE"+
+        "\u49CF\u49D0\u49D1\u49D2\u49D3\u49D4\u49D5\u49D6"+
+        "\u49D7\u49D8\u49D9\u49DA\u49DB\u49DC\u49DD\u49DE"+
+        "\u49DF\u49E0\u49E1\u49E2\u49E3\u49E4\u49E5\u49E6"+
+        "\u49E7\u49E8\u49E9\u49EA\u49EB\u49EC\u49ED\u49EE"+
+        "\u49EF\u49F0\u49F1\u49F2\u49F3\u49F4\u49F5\u49F6"+
+        "\u49F7\u49F8\u49F9\u49FA\u49FB\u49FC\u49FD\u49FE"+
+        "\u49FF\u4A00\u4A01\u4A02\u4A03\u4A04\u4A05\u4A06"+
+        "\u4A07\u4A08\u4A09\u4A0A\u4A0B\u4A0C\u4A0D\u4A0E"+
+        "\u4A0F\u4A10\u4A11\u4A12\u4A13\u4A14\u4A15\u4A16"+
+        "\u4A17\u4A18\u4A19\u4A1A\u4A1B\u4A1C\u4A1D\u4A1E"+
+        "\u4A1F\u4A20\u4A21\u4A22\u4A23\u4A24\u4A25\u4A26"+
+        "\u4A27\u4A28\u4A29\u4A2A\u4A2B\u4A2C\u4A2D\u4A2E"+
+        "\u4A2F\u4A30\u4A31\u4A32\u4A33\u4A34\u4A35\u4A36"+
+        "\u4A37\u4A38\u4A39\u4A3A\u4A3B\u4A3C\u4A3D\u4A3E"+
+        "\u4A3F\u4A40\u4A41\u4A42\u4A43\u4A44\u4A45\u4A46"+
+        "\u4A47\u4A48\u4A49\u4A4A\u4A4B\u4A4C\u4A4D\u4A4E"+
+        "\u4A4F\u4A50\u4A51\u4A52\u4A53\u4A54\u4A55\u4A56"+
+        "\u4A57\u4A58\u4A59\u4A5A\u4A5B\u4A5C\u4A5D\u4A5E"+
+        "\u4A5F\u4A60\u4A61\u4A62\u4A63\u4A64\u4A65\u4A66"+
+        "\u4A67\u4A68\u4A69\u4A6A\u4A6B\u4A6C\u4A6D\u4A6E"+
+        "\u4A6F\u4A70\u4A71\u4A72\u4A73\u4A74\u4A75\u4A76"+
+        "\u4A77\u4A78\u4A79\u4A7A\u4A7B\u4A7C\u4A7D\u4A7E"+
+        "\u4A7F\u4A80\u4A81\u4A82\u4A83\u4A84\u4A85\u4A86"+
+        "\u4A87\u4A88\u4A89\u4A8A\u4A8B\u4A8C\u4A8D\u4A8E"+
+        "\u4A8F\u4A90\u4A91\u4A92\u4A93\u4A94\u4A95\u4A96"+
+        "\u4A97\u4A98\u4A99\u4A9A\u4A9B\u4A9C\u4A9D\u4A9E"+
+        "\u4A9F\u4AA0\u4AA1\u4AA2\u4AA3\u4AA4\u4AA5\u4AA6"+
+        "\u4AA7\u4AA8\u4AA9\u4AAA\u4AAB\u4AAC\u4AAD\u4AAE"+
+        "\u4AAF\u4AB0\u4AB1\u4AB2\u4AB3\u4AB4\u4AB5\u4AB6"+
+        "\u4AB7\u4AB8\u4AB9\u4ABA\u4ABB\u4ABC\u4ABD\u4ABE"+
+        "\u4ABF\u4AC0\u4AC1\u4AC2\u4AC3\u4AC4\u4AC5\u4AC6"+
+        "\u4AC7\u4AC8\u4AC9\u4ACA\u4ACB\u4ACC\u4ACD\u4ACE"+
+        "\u4ACF\u4AD0\u4AD1\u4AD2\u4AD3\u4AD4\u4AD5\u4AD6"+
+        "\u4AD7\u4AD8\u4AD9\u4ADA\u4ADB\u4ADC\u4ADD\u4ADE"+
+        "\u4ADF\u4AE0\u4AE1\u4AE2\u4AE3\u4AE4\u4AE5\u4AE6"+
+        "\u4AE7\u4AE8\u4AE9\u4AEA\u4AEB\u4AEC\u4AED\u4AEE"+
+        "\u4AEF\u4AF0\u4AF1\u4AF2\u4AF3\u4AF4\u4AF5\u4AF6"+
+        "\u4AF7\u4AF8\u4AF9\u4AFA\u4AFB\u4AFC\u4AFD\u4AFE"+
+        "\u4AFF\u4B00\u4B01\u4B02\u4B03\u4B04\u4B05\u4B06"+
+        "\u4B07\u4B08\u4B09\u4B0A\u4B0B\u4B0C\u4B0D\u4B0E"+
+        "\u4B0F\u4B10\u4B11\u4B12\u4B13\u4B14\u4B15\u4B16"+
+        "\u4B17\u4B18\u4B19\u4B1A\u4B1B\u4B1C\u4B1D\u4B1E"+
+        "\u4B1F\u4B20\u4B21\u4B22\u4B23\u4B24\u4B25\u4B26"+
+        "\u4B27\u4B28\u4B29\u4B2A\u4B2B\u4B2C\u4B2D\u4B2E"+
+        "\u4B2F\u4B30\u4B31\u4B32\u4B33\u4B34\u4B35\u4B36"+
+        "\u4B37\u4B38\u4B39\u4B3A\u4B3B\u4B3C\u4B3D\u4B3E"+
+        "\u4B3F\u4B40\u4B41\u4B42\u4B43\u4B44\u4B45\u4B46"+
+        "\u4B47\u4B48\u4B49\u4B4A\u4B4B\u4B4C\u4B4D\u4B4E"+
+        "\u4B4F\u4B50\u4B51\u4B52\u4B53\u4B54\u4B55\u4B56"+
+        "\u4B57\u4B58\u4B59\u4B5A\u4B5B\u4B5C\u4B5D\u4B5E"+
+        "\u4B5F\u4B60\u4B61\u4B62\u4B63\u4B64\u4B65\u4B66"+
+        "\u4B67\u4B68\u4B69\u4B6A\u4B6B\u4B6C\u4B6D\u4B6E"+
+        "\u4B6F\u4B70\u4B71\u4B72\u4B73\u4B74\u4B75\u4B76"+
+        "\u4B77\u4B78\u4B79\u4B7A\u4B7B\u4B7C\u4B7D\u4B7E"+
+        "\u4B7F\u4B80\u4B81\u4B82\u4B83\u4B84\u4B85\u4B86"+
+        "\u4B87\u4B88\u4B89\u4B8A\u4B8B\u4B8C\u4B8D\u4B8E"+
+        "\u4B8F\u4B90\u4B91\u4B92\u4B93\u4B94\u4B95\u4B96"+
+        "\u4B97\u4B98\u4B99\u4B9A\u4B9B\u4B9C\u4B9D\u4B9E"+
+        "\u4B9F\u4BA0\u4BA1\u4BA2\u4BA3\u4BA4\u4BA5\u4BA6"+
+        "\u4BA7\u4BA8\u4BA9\u4BAA\u4BAB\u4BAC\u4BAD\u4BAE"+
+        "\u4BAF\u4BB0\u4BB1\u4BB2\u4BB3\u4BB4\u4BB5\u4BB6"+
+        "\u4BB7\u4BB8\u4BB9\u4BBA\u4BBB\u4BBC\u4BBD\u4BBE"+
+        "\u4BBF\u4BC0\u4BC1\u4BC2\u4BC3\u4BC4\u4BC5\u4BC6"+
+        "\u4BC7\u4BC8\u4BC9\u4BCA\u4BCB\u4BCC\u4BCD\u4BCE"+
+        "\u4BCF\u4BD0\u4BD1\u4BD2\u4BD3\u4BD4\u4BD5\u4BD6"+
+        "\u4BD7\u4BD8\u4BD9\u4BDA\u4BDB\u4BDC\u4BDD\u4BDE"+
+        "\u4BDF\u4BE0\u4BE1\u4BE2\u4BE3\u4BE4\u4BE5\u4BE6"+
+        "\u4BE7\u4BE8\u4BE9\u4BEA\u4BEB\u4BEC\u4BED\u4BEE"+
+        "\u4BEF\u4BF0\u4BF1\u4BF2\u4BF3\u4BF4\u4BF5\u4BF6"+
+        "\u4BF7\u4BF8\u4BF9\u4BFA\u4BFB\u4BFC\u4BFD\u4BFE"+
+        "\u4BFF\u4C00\u4C01\u4C02\u4C03\u4C04\u4C05\u4C06"+
+        "\u4C07\u4C08\u4C09\u4C0A\u4C0B\u4C0C\u4C0D\u4C0E"+
+        "\u4C0F\u4C10\u4C11\u4C12\u4C13\u4C14\u4C15\u4C16"+
+        "\u4C17\u4C18\u4C19\u4C1A\u4C1B\u4C1C\u4C1D\u4C1E"+
+        "\u4C1F\u4C20\u4C21\u4C22\u4C23\u4C24\u4C25\u4C26"+
+        "\u4C27\u4C28\u4C29\u4C2A\u4C2B\u4C2C\u4C2D\u4C2E"+
+        "\u4C2F\u4C30\u4C31\u4C32\u4C33\u4C34\u4C35\u4C36"+
+        "\u4C37\u4C38\u4C39\u4C3A\u4C3B\u4C3C\u4C3D\u4C3E"+
+        "\u4C3F\u4C40\u4C41\u4C42\u4C43\u4C44\u4C45\u4C46"+
+        "\u4C47\u4C48\u4C49\u4C4A\u4C4B\u4C4C\u4C4D\u4C4E"+
+        "\u4C4F\u4C50\u4C51\u4C52\u4C53\u4C54\u4C55\u4C56"+
+        "\u4C57\u4C58\u4C59\u4C5A\u4C5B\u4C5C\u4C5D\u4C5E"+
+        "\u4C5F\u4C60\u4C61\u4C62\u4C63\u4C64\u4C65\u4C66"+
+        "\u4C67\u4C68\u4C69\u4C6A\u4C6B\u4C6C\u4C6D\u4C6E"+
+        "\u4C6F\u4C70\u4C71\u4C72\u4C73\u4C74\u4C75\u4C76"+
+        "\u4C78\u4C79\u4C7A\u4C7B\u4C7C\u4C7D\u4C7E\u4C7F"+
+        "\u4C80\u4C81\u4C82\u4C83\u4C84\u4C85\u4C86\u4C87"+
+        "\u4C88\u4C89\u4C8A\u4C8B\u4C8C\u4C8D\u4C8E\u4C8F"+
+        "\u4C90\u4C91\u4C92\u4C93\u4C94\u4C95\u4C96\u4C97"+
+        "\u4C98\u4C99\u4C9A\u4C9B\u4C9C\u4C9D\u4C9E\u4CA4"+
+        "\u4CA5\u4CA6\u4CA7\u4CA8\u4CA9\u4CAA\u4CAB\u4CAC"+
+        "\u4CAD\u4CAE\u4CAF\u4CB0\u4CB1\u4CB2\u4CB3\u4CB4"+
+        "\u4CB5\u4CB6\u4CB7\u4CB8\u4CB9\u4CBA\u4CBB\u4CBC"+
+        "\u4CBD\u4CBE\u4CBF\u4CC0\u4CC1\u4CC2\u4CC3\u4CC4"+
+        "\u4CC5\u4CC6\u4CC7\u4CC8\u4CC9\u4CCA\u4CCB\u4CCC"+
+        "\u4CCD\u4CCE\u4CCF\u4CD0\u4CD1\u4CD2\u4CD3\u4CD4"+
+        "\u4CD5\u4CD6\u4CD7\u4CD8\u4CD9\u4CDA\u4CDB\u4CDC"+
+        "\u4CDD\u4CDE\u4CDF\u4CE0\u4CE1\u4CE2\u4CE3\u4CE4"+
+        "\u4CE5\u4CE6\u4CE7\u4CE8\u4CE9\u4CEA\u4CEB\u4CEC"+
+        "\u4CED\u4CEE\u4CEF\u4CF0\u4CF1\u4CF2\u4CF3\u4CF4"+
+        "\u4CF5\u4CF6\u4CF7\u4CF8\u4CF9\u4CFA\u4CFB\u4CFC"+
+        "\u4CFD\u4CFE\u4CFF\u4D00\u4D01\u4D02\u4D03\u4D04"+
+        "\u4D05\u4D06\u4D07\u4D08\u4D09\u4D0A\u4D0B\u4D0C"+
+        "\u4D0D\u4D0E\u4D0F\u4D10\u4D11\u4D12\u4D1A\u4D1B"+
+        "\u4D1C\u4D1D\u4D1E\u4D1F\u4D20\u4D21\u4D22\u4D23"+
+        "\u4D24\u4D25\u4D26\u4D27\u4D28\u4D29\u4D2A\u4D2B"+
+        "\u4D2C\u4D2D\u4D2E\u4D2F\u4D30\u4D31\u4D32\u4D33"+
+        "\u4D34\u4D35\u4D36\u4D37\u4D38\u4D39\u4D3A\u4D3B"+
+        "\u4D3C\u4D3D\u4D3E\u4D3F\u4D40\u4D41\u4D42\u4D43"+
+        "\u4D44\u4D45\u4D46\u4D47\u4D48\u4D49\u4D4A\u4D4B"+
+        "\u4D4C\u4D4D\u4D4E\u4D4F\u4D50\u4D51\u4D52\u4D53"+
+        "\u4D54\u4D55\u4D56\u4D57\u4D58\u4D59\u4D5A\u4D5B"+
+        "\u4D5C\u4D5D\u4D5E\u4D5F\u4D60\u4D61\u4D62\u4D63"+
+        "\u4D64\u4D65\u4D66\u4D67\u4D68\u4D69\u4D6A\u4D6B"+
+        "\u4D6C\u4D6D\u4D6E\u4D6F\u4D70\u4D71\u4D72\u4D73"+
+        "\u4D74\u4D75\u4D76\u4D77\u4D78\u4D79\u4D7A\u4D7B"+
+        "\u4D7C\u4D7D\u4D7E\u4D7F\u4D80\u4D81\u4D82\u4D83"+
+        "\u4D84\u4D85\u4D86\u4D87\u4D88\u4D89\u4D8A\u4D8B"+
+        "\u4D8C\u4D8D\u4D8E\u4D8F\u4D90\u4D91\u4D92\u4D93"+
+        "\u4D94\u4D95\u4D96\u4D97\u4D98\u4D99\u4D9A\u4D9B"+
+        "\u4D9C\u4D9D\u4D9E\u4D9F\u4DA0\u4DA1\u4DA2\u4DA3"+
+        "\u4DA4\u4DA5\u4DA6\u4DA7\u4DA8\u4DA9\u4DAA\u4DAB"+
+        "\u4DAC\u4DAD\u4DAF\u4DB0\u4DB1\u4DB2\u4DB3\u4DB4"+
+        "\u4DB5\u4DB6\u4DB7\u4DB8\u4DB9\u4DBA\u4DBB\u4DBC"+
+        "\u4DBD\u4DBE\u4DBF\u4DC0\u4DC1\u4DC2\u4DC3\u4DC4"+
+        "\u4DC5\u4DC6\u4DC7\u4DC8\u4DC9\u4DCA\u4DCB\u4DCC"+
+        "\u4DCD\u4DCE\u4DCF\u4DD0\u4DD1\u4DD2\u4DD3\u4DD4"+
+        "\u4DD5\u4DD6\u4DD7\u4DD8\u4DD9\u4DDA\u4DDB\u4DDC"+
+        "\u4DDD\u4DDE\u4DDF\u4DE0\u4DE1\u4DE2\u4DE3\u4DE4"+
+        "\u4DE5\u4DE6\u4DE7\u4DE8\u4DE9\u4DEA\u4DEB\u4DEC"+
+        "\u4DED\u4DEE\u4DEF\u4DF0\u4DF1\u4DF2\u4DF3\u4DF4"+
+        "\u4DF5\u4DF6\u4DF7\u4DF8\u4DF9\u4DFA\u4DFB\u4DFC"+
+        "\u4DFD\u4DFE\u4DFF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uE76C\uE7C8\uE7E7"+
+        "\uE7E8\uE7E9\uE7EA\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF"+
+        "\uE7F0\uE7F1\uE7F2\uE7F3\uE815\uE819\uE81A\uE81B"+
+        "\uE81C\uE81D\uE81F\uE820\uE821\uE822\uE823\uE824"+
+        "\uE825\uE827\uE828\uE829\uE82A\uE82D\uE82E\uE82F"+
+        "\uE830\uE833\uE834\uE835\uE836\uE837\uE838\uE839"+
+        "\uE83A\uE83C\uE83D\uE83E\uE83F\uE840\uE841\uE842"+
+        "\uE844\uE845\uE846\uE847\uE848\uE849\uE84A\uE84B"+
+        "\uE84C\uE84D\uE84E\uE84F\uE850\uE851\uE852\uE853"+
+        "\uE856\uE857\uE858\uE859\uE85A\uE85B\uE85C\uE85D"+
+        "\uE85E\uE85F\uE860\uE861\uE862\uE863\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uF900\uF901\uF902\uF903\uF904\uF905\uF906"+
+        "\uF907\uF908\uF909\uF90A\uF90B\uF90C\uF90D\uF90E"+
+        "\uF90F\uF910\uF911\uF912\uF913\uF914\uF915\uF916"+
+        "\uF917\uF918\uF919\uF91A\uF91B\uF91C\uF91D\uF91E"+
+        "\uF91F\uF920\uF921\uF922\uF923\uF924\uF925\uF926"+
+        "\uF927\uF928\uF929\uF92A\uF92B\uF92D\uF92E\uF92F"+
+        "\uF930\uF931\uF932\uF933\uF934\uF935\uF936\uF937"+
+        "\uF938\uF939\uF93A\uF93B\uF93C\uF93D\uF93E\uF93F"+
+        "\uF940\uF941\uF942\uF943\uF944\uF945\uF946\uF947"+
+        "\uF948\uF949\uF94A\uF94B\uF94C\uF94D\uF94E\uF94F"+
+        "\uF950\uF951\uF952\uF953\uF954\uF955\uF956\uF957"+
+        "\uF958\uF959\uF95A\uF95B\uF95C\uF95D\uF95E\uF95F"+
+        "\uF960\uF961\uF962\uF963\uF964\uF965\uF966\uF967"+
+        "\uF968\uF969\uF96A\uF96B\uF96C\uF96D\uF96E\uF96F"+
+        "\uF970\uF971\uF972\uF973\uF974\uF975\uF976\uF977"+
+        "\uF978\uF97A\uF97B\uF97C\uF97D\uF97E\uF97F\uF980"+
+        "\uF981\uF982\uF983\uF984\uF985\uF986\uF987\uF988"+
+        "\uF989\uF98A\uF98B\uF98C\uF98D\uF98E\uF98F\uF990"+
+        "\uF991\uF992\uF993\uF994\uF996\uF997\uF998\uF999"+
+        "\uF99A\uF99B\uF99C\uF99D\uF99E\uF99F\uF9A0\uF9A1"+
+        "\uF9A2\uF9A3\uF9A4\uF9A5\uF9A6\uF9A7\uF9A8\uF9A9"+
+        "\uF9AA\uF9AB\uF9AC\uF9AD\uF9AE\uF9AF\uF9B0\uF9B1"+
+        "\uF9B2\uF9B3\uF9B4\uF9B5\uF9B6\uF9B7\uF9B8\uF9B9"+
+        "\uF9BA\uF9BB\uF9BC\uF9BD\uF9BE\uF9BF\uF9C0\uF9C1"+
+        "\uF9C2\uF9C3\uF9C4\uF9C5\uF9C6\uF9C7\uF9C8\uF9C9"+
+        "\uF9CA\uF9CB\uF9CC\uF9CD\uF9CE\uF9CF\uF9D0\uF9D1"+
+        "\uF9D2\uF9D3\uF9D4\uF9D5\uF9D6\uF9D7\uF9D8\uF9D9"+
+        "\uF9DA\uF9DB\uF9DC\uF9DD\uF9DE\uF9DF\uF9E0\uF9E1"+
+        "\uF9E2\uF9E3\uF9E4\uF9E5\uF9E6\uF9E8\uF9E9\uF9EA"+
+        "\uF9EB\uF9EC\uF9ED\uF9EE\uF9EF\uF9F0\uF9F2\uF9F3"+
+        "\uF9F4\uF9F5\uF9F6\uF9F7\uF9F8\uF9F9\uF9FA\uF9FB"+
+        "\uF9FC\uF9FD\uF9FE\uF9FF\uFA00\uFA01\uFA02\uFA03"+
+        "\uFA04\uFA05\uFA06\uFA07\uFA08\uFA09\uFA0A\uFA0B"+
+        "\uFA10\uFA12\uFA15\uFA16\uFA17\uFA19\uFA1A\uFA1B"+
+        "\uFA1C\uFA1D\uFA1E\uFA22\uFA25\uFA26\uFA2A\uFA2B"+
+        "\uFA2C\uFA2D\uFA2E\uFA2F\uFA30\uFA31\uFA32\uFA33"+
+        "\uFA34\uFA35\uFA36\uFA37\uFA38\uFA39\uFA3A\uFA3B"+
+        "\uFA3C\uFA3D\uFA3E\uFA3F\uFA40\uFA41\uFA42\uFA43"+
+        "\uFA44\uFA45\uFA46\uFA47\uFA48\uFA49\uFA4A\uFA4B"+
+        "\uFA4C\uFA4D\uFA4E\uFA4F\uFA50\uFA51\uFA52\uFA53"+
+        "\uFA54\uFA55\uFA56\uFA57\uFA58\uFA59\uFA5A\uFA5B"+
+        "\uFA5C\uFA5D\uFA5E\uFA5F\uFA60\uFA61\uFA62\uFA63"+
+        "\uFA64\uFA65\uFA66\uFA67\uFA68\uFA69\uFA6A\uFA6B"+
+        "\uFA6C\uFA6D\uFA6E\uFA6F\uFA70\uFA71\uFA72\uFA73"+
+        "\uFA74\uFA75\uFA76\uFA77\uFA78\uFA79\uFA7A\uFA7B"+
+        "\uFA7C\uFA7D\uFA7E\uFA7F\uFA80\uFA81\uFA82\uFA83"+
+        "\uFA84\uFA85\uFA86\uFA87\uFA88\uFA89\uFA8A\uFA8B"+
+        "\uFA8C\uFA8D\uFA8E\uFA8F\uFA90\uFA91\uFA92\uFA93"+
+        "\uFA94\uFA95\uFA96\uFA97\uFA98\uFA99\uFA9A\uFA9B"+
+        "\uFA9C\uFA9D\uFA9E\uFA9F\uFAA0\uFAA1\uFAA2\uFAA3"+
+        "\uFAA4\uFAA5\uFAA6\uFAA7\uFAA8\uFAA9\uFAAA\uFAAB"+
+        "\uFAAC\uFAAD\uFAAE\uFAAF\uFAB0\uFAB1\uFAB2\uFAB3"+
+        "\uFAB4\uFAB5\uFAB6\uFAB7\uFAB8\uFAB9\uFABA\uFABB"+
+        "\uFABC\uFABD\uFABE\uFABF\uFAC0\uFAC1\uFAC2\uFAC3"+
+        "\uFAC4\uFAC5\uFAC6\uFAC7\uFAC8\uFAC9\uFACA\uFACB"+
+        "\uFACC\uFACD\uFACE\uFACF\uFAD0\uFAD1\uFAD2\uFAD3"+
+        "\uFAD4\uFAD5\uFAD6\uFAD7\uFAD8\uFAD9\uFADA\uFADB"+
+        "\uFADC\uFADD\uFADE\uFADF\uFAE0\uFAE1\uFAE2\uFAE3"+
+        "\uFAE4\uFAE5\uFAE6\uFAE7\uFAE8\uFAE9\uFAEA\uFAEB"+
+        "\uFAEC\uFAED\uFAEE\uFAEF\uFAF0\uFAF1\uFAF2\uFAF3"+
+        "\uFAF4\uFAF5\uFAF6\uFAF7\uFAF8\uFAF9\uFAFA\uFAFB"+
+        "\uFAFC\uFAFD\uFAFE\uFAFF\uFB00\uFB01\uFB02\uFB03"+
+        "\uFB04\uFB05\uFB06\uFB07\uFB08\uFB09\uFB0A\uFB0B"+
+        "\uFB0C\uFB0D\uFB0E\uFB0F\uFB10\uFB11\uFB12\uFB13"+
+        "\uFB14\uFB15\uFB16\uFB17\uFB18\uFB19\uFB1A\uFB1B"+
+        "\uFB1C\uFB1D\uFB1E\uFB1F\uFB20\uFB21\uFB22\uFB23"+
+        "\uFB24\uFB25\uFB26\uFB27\uFB28\uFB29\uFB2A\uFB2B"+
+        "\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31\uFB32\uFB33"+
+        "\uFB34\uFB35\uFB36\uFB37\uFB38\uFB39\uFB3A\uFB3B"+
+        "\uFB3C\uFB3D\uFB3E\uFB3F\uFB40\uFB41\uFB42\uFB43"+
+        "\uFB44\uFB45\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B"+
+        "\uFB4C\uFB4D\uFB4E\uFB4F\uFB50\uFB51\uFB52\uFB53"+
+        "\uFB54\uFB55\uFB56\uFB57\uFB58\uFB59\uFB5A\uFB5B"+
+        "\uFB5C\uFB5D\uFB5E\uFB5F\uFB60\uFB61\uFB62\uFB63"+
+        "\uFB64\uFB65\uFB66\uFB67\uFB68\uFB69\uFB6A\uFB6B";
+
+    private final static String innerDecoderIndex5=
+        "\uFB6C\uFB6D\uFB6E\uFB6F\uFB70\uFB71\uFB72\uFB73"+
+        "\uFB74\uFB75\uFB76\uFB77\uFB78\uFB79\uFB7A\uFB7B"+
+        "\uFB7C\uFB7D\uFB7E\uFB7F\uFB80\uFB81\uFB82\uFB83"+
+        "\uFB84\uFB85\uFB86\uFB87\uFB88\uFB89\uFB8A\uFB8B"+
+        "\uFB8C\uFB8D\uFB8E\uFB8F\uFB90\uFB91\uFB92\uFB93"+
+        "\uFB94\uFB95\uFB96\uFB97\uFB98\uFB99\uFB9A\uFB9B"+
+        "\uFB9C\uFB9D\uFB9E\uFB9F\uFBA0\uFBA1\uFBA2\uFBA3"+
+        "\uFBA4\uFBA5\uFBA6\uFBA7\uFBA8\uFBA9\uFBAA\uFBAB"+
+        "\uFBAC\uFBAD\uFBAE\uFBAF\uFBB0\uFBB1\uFBB2\uFBB3"+
+        "\uFBB4\uFBB5\uFBB6\uFBB7\uFBB8\uFBB9\uFBBA\uFBBB"+
+        "\uFBBC\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2\uFBC3"+
+        "\uFBC4\uFBC5\uFBC6\uFBC7\uFBC8\uFBC9\uFBCA\uFBCB"+
+        "\uFBCC\uFBCD\uFBCE\uFBCF\uFBD0\uFBD1\uFBD2\uFBD3"+
+        "\uFBD4\uFBD5\uFBD6\uFBD7\uFBD8\uFBD9\uFBDA\uFBDB"+
+        "\uFBDC\uFBDD\uFBDE\uFBDF\uFBE0\uFBE1\uFBE2\uFBE3"+
+        "\uFBE4\uFBE5\uFBE6\uFBE7\uFBE8\uFBE9\uFBEA\uFBEB"+
+        "\uFBEC\uFBED\uFBEE\uFBEF\uFBF0\uFBF1\uFBF2\uFBF3"+
+        "\uFBF4\uFBF5\uFBF6\uFBF7\uFBF8\uFBF9\uFBFA\uFBFB"+
+        "\uFBFC\uFBFD\uFBFE\uFBFF\uFC00\uFC01\uFC02\uFC03"+
+        "\uFC04\uFC05\uFC06\uFC07\uFC08\uFC09\uFC0A\uFC0B"+
+        "\uFC0C\uFC0D\uFC0E\uFC0F\uFC10\uFC11\uFC12\uFC13"+
+        "\uFC14\uFC15\uFC16\uFC17\uFC18\uFC19\uFC1A\uFC1B"+
+        "\uFC1C\uFC1D\uFC1E\uFC1F\uFC20\uFC21\uFC22\uFC23"+
+        "\uFC24\uFC25\uFC26\uFC27\uFC28\uFC29\uFC2A\uFC2B"+
+        "\uFC2C\uFC2D\uFC2E\uFC2F\uFC30\uFC31\uFC32\uFC33"+
+        "\uFC34\uFC35\uFC36\uFC37\uFC38\uFC39\uFC3A\uFC3B"+
+        "\uFC3C\uFC3D\uFC3E\uFC3F\uFC40\uFC41\uFC42\uFC43"+
+        "\uFC44\uFC45\uFC46\uFC47\uFC48\uFC49\uFC4A\uFC4B"+
+        "\uFC4C\uFC4D\uFC4E\uFC4F\uFC50\uFC51\uFC52\uFC53"+
+        "\uFC54\uFC55\uFC56\uFC57\uFC58\uFC59\uFC5A\uFC5B"+
+        "\uFC5C\uFC5D\uFC5E\uFC5F\uFC60\uFC61\uFC62\uFC63"+
+        "\uFC64\uFC65\uFC66\uFC67\uFC68\uFC69\uFC6A\uFC6B"+
+        "\uFC6C\uFC6D\uFC6E\uFC6F\uFC70\uFC71\uFC72\uFC73"+
+        "\uFC74\uFC75\uFC76\uFC77\uFC78\uFC79\uFC7A\uFC7B"+
+        "\uFC7C\uFC7D\uFC7E\uFC7F\uFC80\uFC81\uFC82\uFC83"+
+        "\uFC84\uFC85\uFC86\uFC87\uFC88\uFC89\uFC8A\uFC8B"+
+        "\uFC8C\uFC8D\uFC8E\uFC8F\uFC90\uFC91\uFC92\uFC93"+
+        "\uFC94\uFC95\uFC96\uFC97\uFC98\uFC99\uFC9A\uFC9B"+
+        "\uFC9C\uFC9D\uFC9E\uFC9F\uFCA0\uFCA1\uFCA2\uFCA3"+
+        "\uFCA4\uFCA5\uFCA6\uFCA7\uFCA8\uFCA9\uFCAA\uFCAB"+
+        "\uFCAC\uFCAD\uFCAE\uFCAF\uFCB0\uFCB1\uFCB2\uFCB3"+
+        "\uFCB4\uFCB5\uFCB6\uFCB7\uFCB8\uFCB9\uFCBA\uFCBB"+
+        "\uFCBC\uFCBD\uFCBE\uFCBF\uFCC0\uFCC1\uFCC2\uFCC3"+
+        "\uFCC4\uFCC5\uFCC6\uFCC7\uFCC8\uFCC9\uFCCA\uFCCB"+
+        "\uFCCC\uFCCD\uFCCE\uFCCF\uFCD0\uFCD1\uFCD2\uFCD3"+
+        "\uFCD4\uFCD5\uFCD6\uFCD7\uFCD8\uFCD9\uFCDA\uFCDB"+
+        "\uFCDC\uFCDD\uFCDE\uFCDF\uFCE0\uFCE1\uFCE2\uFCE3"+
+        "\uFCE4\uFCE5\uFCE6\uFCE7\uFCE8\uFCE9\uFCEA\uFCEB"+
+        "\uFCEC\uFCED\uFCEE\uFCEF\uFCF0\uFCF1\uFCF2\uFCF3"+
+        "\uFCF4\uFCF5\uFCF6\uFCF7\uFCF8\uFCF9\uFCFA\uFCFB"+
+        "\uFCFC\uFCFD\uFCFE\uFCFF\uFD00\uFD01\uFD02\uFD03"+
+        "\uFD04\uFD05\uFD06\uFD07\uFD08\uFD09\uFD0A\uFD0B"+
+        "\uFD0C\uFD0D\uFD0E\uFD0F\uFD10\uFD11\uFD12\uFD13"+
+        "\uFD14\uFD15\uFD16\uFD17\uFD18\uFD19\uFD1A\uFD1B"+
+        "\uFD1C\uFD1D\uFD1E\uFD1F\uFD20\uFD21\uFD22\uFD23"+
+        "\uFD24\uFD25\uFD26\uFD27\uFD28\uFD29\uFD2A\uFD2B"+
+        "\uFD2C\uFD2D\uFD2E\uFD2F\uFD30\uFD31\uFD32\uFD33"+
+        "\uFD34\uFD35\uFD36\uFD37\uFD38\uFD39\uFD3A\uFD3B"+
+        "\uFD3C\uFD3D\uFD3E\uFD3F\uFD40\uFD41\uFD42\uFD43"+
+        "\uFD44\uFD45\uFD46\uFD47\uFD48\uFD49\uFD4A\uFD4B"+
+        "\uFD4C\uFD4D\uFD4E\uFD4F\uFD50\uFD51\uFD52\uFD53"+
+        "\uFD54\uFD55\uFD56\uFD57\uFD58\uFD59\uFD5A\uFD5B"+
+        "\uFD5C\uFD5D\uFD5E\uFD5F\uFD60\uFD61\uFD62\uFD63"+
+        "\uFD64\uFD65\uFD66\uFD67\uFD68\uFD69\uFD6A\uFD6B"+
+        "\uFD6C\uFD6D\uFD6E\uFD6F\uFD70\uFD71\uFD72\uFD73"+
+        "\uFD74\uFD75\uFD76\uFD77\uFD78\uFD79\uFD7A\uFD7B"+
+        "\uFD7C\uFD7D\uFD7E\uFD7F\uFD80\uFD81\uFD82\uFD83"+
+        "\uFD84\uFD85\uFD86\uFD87\uFD88\uFD89\uFD8A\uFD8B"+
+        "\uFD8C\uFD8D\uFD8E\uFD8F\uFD90\uFD91\uFD92\uFD93"+
+        "\uFD94\uFD95\uFD96\uFD97\uFD98\uFD99\uFD9A\uFD9B"+
+        "\uFD9C\uFD9D\uFD9E\uFD9F\uFDA0\uFDA1\uFDA2\uFDA3"+
+        "\uFDA4\uFDA5\uFDA6\uFDA7\uFDA8\uFDA9\uFDAA\uFDAB"+
+        "\uFDAC\uFDAD\uFDAE\uFDAF\uFDB0\uFDB1\uFDB2\uFDB3"+
+        "\uFDB4\uFDB5\uFDB6\uFDB7\uFDB8\uFDB9\uFDBA\uFDBB"+
+        "\uFDBC\uFDBD\uFDBE\uFDBF\uFDC0\uFDC1\uFDC2\uFDC3"+
+        "\uFDC4\uFDC5\uFDC6\uFDC7\uFDC8\uFDC9\uFDCA\uFDCB"+
+        "\uFDCC\uFDCD\uFDCE\uFDCF\uFDD0\uFDD1\uFDD2\uFDD3"+
+        "\uFDD4\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA\uFDDB"+
+        "\uFDDC\uFDDD\uFDDE\uFDDF\uFDE0\uFDE1\uFDE2\uFDE3"+
+        "\uFDE4\uFDE5\uFDE6\uFDE7\uFDE8\uFDE9\uFDEA\uFDEB"+
+        "\uFDEC\uFDED\uFDEE\uFDEF\uFDF0\uFDF1\uFDF2\uFDF3"+
+        "\uFDF4\uFDF5\uFDF6\uFDF7\uFDF8\uFDF9\uFDFA\uFDFB"+
+        "\uFDFC\uFDFD\uFDFE\uFDFF\uFE00\uFE01\uFE02\uFE03"+
+        "\uFE04\uFE05\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B"+
+        "\uFE0C\uFE0D\uFE0E\uFE0F\uFE10\uFE11\uFE12\uFE13"+
+        "\uFE14\uFE15\uFE16\uFE17\uFE18\uFE19\uFE1A\uFE1B"+
+        "\uFE1C\uFE1D\uFE1E\uFE1F\uFE20\uFE21\uFE22\uFE23"+
+        "\uFE24\uFE25\uFE26\uFE27\uFE28\uFE29\uFE2A\uFE2B"+
+        "\uFE2C\uFE2D\uFE2E\uFE2F\uFE32\uFE45\uFE46\uFE47"+
+        "\uFE48\uFE53\uFE58\uFE67\uFE6C\uFE6D\uFE6E\uFE6F"+
+        "\uFE70\uFE71\uFE72\uFE73\uFE74\uFE75\uFE76\uFE77"+
+        "\uFE78\uFE79\uFE7A\uFE7B\uFE7C\uFE7D\uFE7E\uFE7F"+
+        "\uFE80\uFE81\uFE82\uFE83\uFE84\uFE85\uFE86\uFE87"+
+        "\uFE88\uFE89\uFE8A\uFE8B\uFE8C\uFE8D\uFE8E\uFE8F"+
+        "\uFE90\uFE91\uFE92\uFE93\uFE94\uFE95\uFE96\uFE97"+
+        "\uFE98\uFE99\uFE9A\uFE9B\uFE9C\uFE9D\uFE9E\uFE9F"+
+        "\uFEA0\uFEA1\uFEA2\uFEA3\uFEA4\uFEA5\uFEA6\uFEA7"+
+        "\uFEA8\uFEA9\uFEAA\uFEAB\uFEAC\uFEAD\uFEAE\uFEAF"+
+        "\uFEB0\uFEB1\uFEB2\uFEB3\uFEB4\uFEB5\uFEB6\uFEB7"+
+        "\uFEB8\uFEB9\uFEBA\uFEBB\uFEBC\uFEBD\uFEBE\uFEBF"+
+        "\uFEC0\uFEC1\uFEC2\uFEC3\uFEC4\uFEC5\uFEC6\uFEC7"+
+        "\uFEC8\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF"+
+        "\uFED0\uFED1\uFED2\uFED3\uFED4\uFED5\uFED6\uFED7"+
+        "\uFED8\uFED9\uFEDA\uFEDB\uFEDC\uFEDD\uFEDE\uFEDF"+
+        "\uFEE0\uFEE1\uFEE2\uFEE3\uFEE4\uFEE5\uFEE6\uFEE7"+
+        "\uFEE8\uFEE9\uFEEA\uFEEB\uFEEC\uFEED\uFEEE\uFEEF"+
+        "\uFEF0\uFEF1\uFEF2\uFEF3\uFEF4\uFEF5\uFEF6\uFEF7"+
+        "\uFEF8\uFEF9\uFEFA\uFEFB\uFEFC\uFEFD\uFEFE\uFEFF"+
+        "\uFF00\uFF5F\uFF60\uFF61\uFF62\uFF63\uFF64\uFF65"+
+        "\uFF66\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D"+
+        "\uFF6E\uFF6F\uFF70\uFF71\uFF72\uFF73\uFF74\uFF75"+
+        "\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D"+
+        "\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85"+
+        "\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D"+
+        "\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95"+
+        "\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF9D"+
+        "\uFF9E\uFF9F\uFFA0\uFFA1\uFFA2\uFFA3\uFFA4\uFFA5"+
+        "\uFFA6\uFFA7\uFFA8\uFFA9\uFFAA\uFFAB\uFFAC\uFFAD"+
+        "\uFFAE\uFFAF\uFFB0\uFFB1\uFFB2\uFFB3\uFFB4\uFFB5"+
+        "\uFFB6\uFFB7\uFFB8\uFFB9\uFFBA\uFFBB\uFFBC\uFFBD"+
+        "\uFFBE\uFFBF\uFFC0\uFFC1\uFFC2\uFFC3\uFFC4\uFFC5"+
+        "\uFFC6\uFFC7\uFFC8\uFFC9\uFFCA\uFFCB\uFFCC\uFFCD"+
+        "\uFFCE\uFFCF\uFFD0\uFFD1\uFFD2\uFFD3\uFFD4\uFFD5"+
+        "\uFFD6\uFFD7\uFFD8\uFFD9\uFFDA\uFFDB\uFFDC\uFFDD"+
+        "\uFFDE\uFFDF\uFFE6\uFFE7\uFFE8\uFFE9\uFFEA\uFFEB"+
+        "\uFFEC\uFFED\uFFEE\uFFEF\uFFF0\uFFF1\uFFF2\uFFF3"+
+        "\uFFF4\uFFF5\uFFF6\uFFF7\uFFF8\uFFF9\uFFFA\uFFFB"+
+        "\uFFFC\uFFFD\uFFFE\uFFFF\uFFFD\uFFFD\uFFFD\uFFFD";
+
+    private final static short decoderIndex1[] = {
+        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 77, 78, 79, 80, 81, 82, 83, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+    };
+
+    static String decoderIndex2[] = {
+        innerDecoderIndex0,
+        innerDecoderIndex1,
+        innerDecoderIndex2,
+        innerDecoderIndex3,
+        innerDecoderIndex4,
+        innerDecoderIndex5
+    };
+
+/*
+ *
+ */
+    private final static String innerIndex0=
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4E02"+
+        "\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20"+
+        "\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33"+
+        "\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46"+
+        "\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63"+
+        "\u4E64\u4E65\u4E67\u4E68\u4E6A\u4E6B\u4E6C\u4E6D"+
+        "\u4E6E\u4E6F\u4E72\u4E74\u4E75\u4E76\u4E77\u4E78"+
+        "\u4E79\u4E7A\u4E7B\u4E7C\u4E7D\u4E7F\u4E80\u4E81"+
+        "\u4E82\u4E83\u4E84\u4E85\u4E87\u4E8A\uFFFD\u4E90"+
+        "\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA"+
+        "\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9"+
+        "\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2"+
+        "\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9"+
+        "\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA"+
+        "\u4EFC\u4EFE\u4F00\u4F02\u4F03\u4F04\u4F05\u4F06"+
+        "\u4F07\u4F08\u4F0B\u4F0C\u4F12\u4F13\u4F14\u4F15"+
+        "\u4F16\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C"+
+        "\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B"+
+        "\u4F3E\u4F3F\u4F40\u4F41\u4F42\u4F44\u4F45\u4F47"+
+        "\u4F48\u4F49\u4F4A\u4F4B\u4F4C\u4F52\u4F54\u4F56"+
+        "\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E"+
+        "\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D"+
+        "\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C"+
+        "\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99"+
+        "\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\u4FA4\u4FAB"+
+        "\u4FAD\u4FB0\u4FB1\u4FB2\u4FB3\u4FB4\u4FB6\u4FB7"+
+        "\u4FB8\u4FB9\u4FBA\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0"+
+        "\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC"+
+        "\u4FCD\u4FD2\u4FD3\u4FD4\u4FD5\u4FD6\u4FD9\u4FDB"+
+        "\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0"+
+        "\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC"+
+        "\u4FFD\u4FFF\u5000\u5001\u5002\u5003\u5004\u5005"+
+        "\u5006\u5007\u5008\u5009\u500A\uFFFD\u500B\u500E"+
+        "\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D"+
+        "\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F"+
+        "\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037"+
+        "\u5038\u5039\u503B\u503D\u503F\u5040\u5041\u5042"+
+        "\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050"+
+        "\u5051\u5052\u5053\u5054\u5056\u5057\u5058\u5059"+
+        "\u505B\u505D\u505E\u505F\u5060\u5061\u5062\u5063"+
+        "\u5064\u5066\u5067\u5068\u5069\u506A\u506B\u506D"+
+        "\u506E\u506F\u5070\u5071\u5072\u5073\u5074\u5075"+
+        "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083"+
+        "\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E"+
+        "\u508F\u5090\u5091\u5092\u5093\u5094\u5095\u5096"+
+        "\u5097\u5098\u5099\u509A\u509B\u509C\u509D\u509E"+
+        "\u509F\u50A0\u50A1\u50A2\u50A4\u50A6\u50AA\u50AB"+
+        "\u50AD\u50AE\u50AF\u50B0\u50B1\u50B3\u50B4\u50B5"+
+        "\u50B6\u50B7\u50B8\u50B9\u50BC\u50BD\u50BE\u50BF"+
+        "\u50C0\u50C1\u50C2\u50C3\u50C4\u50C5\u50C6\u50C7"+
+        "\u50C8\u50C9\u50CA\u50CB\u50CC\u50CD\u50CE\u50D0"+
+        "\u50D1\u50D2\u50D3\u50D4\u50D5\u50D7\u50D8\u50D9"+
+        "\u50DB\u50DC\u50DD\u50DE\u50DF\u50E0\u50E1\u50E2"+
+        "\u50E3\u50E4\u50E5\u50E8\u50E9\u50EA\u50EB\u50EF"+
+        "\u50F0\u50F1\u50F2\u50F4\u50F6\u50F7\u50F8\u50F9"+
+        "\u50FA\u50FC\u50FD\u50FE\u50FF\u5100\u5101\u5102"+
+        "\u5103\u5104\u5105\u5108\uFFFD\u5109\u510A\u510C"+
+        "\u510D\u510E\u510F\u5110\u5111\u5113\u5114\u5115"+
+        "\u5116\u5117\u5118\u5119\u511A\u511B\u511C\u511D"+
+        "\u511E\u511F\u5120\u5122\u5123\u5124\u5125\u5126"+
+        "\u5127\u5128\u5129\u512A\u512B\u512C\u512D\u512E"+
+        "\u512F\u5130\u5131\u5132\u5133\u5134\u5135\u5136"+
+        "\u5137\u5138\u5139\u513A\u513B\u513C\u513D\u513E"+
+        "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152"+
+        "\u5153\u5157\u5158\u5159\u515B\u515D\u515E\u515F"+
+        "\u5160\u5161\u5163\u5164\u5166\u5167\u5169\u516A"+
+        "\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186"+
+        "\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193"+
+        "\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3"+
+        "\u51A6\u51A7\u51A8\u51A9\u51AA\u51AD\u51AE\u51B4"+
+        "\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3"+
+        "\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\u51D3"+
+        "\u51D4\u51D5\u51D6\u51D7\u51D8\u51D9\u51DA\u51DC"+
+        "\u51DE\u51DF\u51E2\u51E3\u51E5\u51E6\u51E7\u51E8"+
+        "\u51E9\u51EA\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7"+
+        "\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210"+
+        "\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222"+
+        "\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231"+
+        "\u5232\u5234\u5235\u523C\u523E\u5244\u5245\u5246"+
+        "\u5247\u5248\u5249\u524B\u524E\u524F\u5252\u5253"+
+        "\u5255\u5257\u5258\uFFFD\u5259\u525A\u525B\u525D"+
+        "\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B"+
+        "\u526C\u526D\u526E\u5270\u5271\u5273\u5274\u5275"+
+        "\u5276\u5277\u5278\u5279\u527A\u527B\u527C\u527E"+
+        "\u5280\u5283\u5284\u5285\u5286\u5287\u5289\u528A"+
+        "\u528B\u528C\u528D\u528E\u528F\u5291\u5292\u5294"+
+        "\u5295\u5296\u5297\u5298\u5299\u529A\u529C\u52A4"+
+        "\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\u52B5"+
+        "\u52B6\u52B7\u52B8\u52B9\u52BA\u52BB\u52BC\u52BD"+
+        "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA"+
+        "\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5"+
+        "\u52D7\u52D9\u52DA\u52DB\u52DC\u52DD\u52DE\u52E0"+
+        "\u52E1\u52E2\u52E3\u52E5\u52E6\u52E7\u52E8\u52E9"+
+        "\u52EA\u52EB\u52EC\u52ED\u52EE\u52EF\u52F1\u52F2"+
+        "\u52F3\u52F4\u52F5\u52F6\u52F7\u52F8\u52FB\u52FC"+
+        "\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A"+
+        "\u530B\u530C\u530E\u5311\u5312\u5313\u5314\u5318"+
+        "\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327"+
+        "\u5328\u5329\u532B\u532C\u532D\u532F\u5330\u5331"+
+        "\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u533C"+
+        "\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D"+
+        "\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368"+
+        "\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C"+
+        "\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A"+
+        "\u538E\u538F\uFFFD\u5390\u5391\u5392\u5393\u5394"+
+        "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1"+
+        "\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\u53B0"+
+        "\u53B1\u53B2\u53B3\u53B4\u53B5\u53B7\u53B8\u53B9"+
+        "\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\u53C4\u53C5"+
+        "\u53C6\u53C7\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5"+
+        "\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4"+
+        "\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B"+
+        "\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425"+
+        "\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F"+
+        "\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D"+
+        "\u544E\u544F\u5451\u545A\u545D\u545E\u545F\u5460"+
+        "\u5461\u5463\u5465\u5467\u5469\u546A\u546B\u546C"+
+        "\u546D\u546E\u546F\u5470\u5474\u5479\u547A\u547E"+
+        "\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A"+
+        "\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F"+
+        "\u54A0\u54A1\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5"+
+        "\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5"+
+        "\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\u54E1\u54E2"+
+        "\u54E3\u54E4\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4"+
+        "\u54F5\u54F6\u54F7\u54F8\u54F9\u54FB\u54FE\u5500"+
+        "\u5502\u5503\u5504\u5505\u5508\u550A\u550B\u550C"+
+        "\u550D\u550E\u5512\u5513\u5515\u5516\u5517\u5518"+
+        "\u5519\u551A\u551C\u551D\u551E\u551F\u5521\u5525"+
+        "\u5526\uFFFD\u5528\u5529\u552B\u552D\u5532\u5534"+
+        "\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540"+
+        "\u5542\u5545\u5547\u5548\u554B\u554C\u554D\u554E"+
+        "\u554F\u5551\u5552\u5553\u5554\u5557\u5558\u5559"+
+        "\u555A\u555B\u555D\u555E\u555F\u5560\u5562\u5563"+
+        "\u5568\u5569\u556B\u556F\u5570\u5571\u5572\u5573"+
+        "\u5574\u5579\u557A\u557D\u557F\u5585\u5586\u558C"+
+        "\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597"+
+        "\u559A\u559B\u559E\u55A0\u55A1\u55A2\u55A3\u55A4"+
+        "\u55A5\u55A6\u55A8\u55A9\u55AA\u55AB\u55AC\u55AD"+
+        "\u55AE\u55AF\u55B0\u55B2\u55B4\u55B6\u55B8\u55BA"+
+        "\u55BC\u55BF\u55C0\u55C1\u55C2\u55C3\u55C6\u55C7"+
+        "\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7"+
+        "\u55D8\u55D9\u55DA\u55DB\u55DE\u55E0\u55E2\u55E7"+
+        "\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8"+
+        "\u55F9\u55FA\u55FB\u55FC\u55FF\u5602\u5603\u5604"+
+        "\u5605\u5606\u5607\u560A\u560B\u560D\u5610\u5611"+
+        "\u5612\u5613\u5614\u5615\u5616\u5617\u5619\u561A"+
+        "\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628"+
+        "\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635"+
+        "\u5637\u5638\u563A\u563C\u563D\u563E\u5640\u5641"+
+        "\u5642\u5643\u5644\u5645\u5646\u5647\u5648\u5649"+
+        "\u564A\u564B\u564F\u5650\u5651\u5652\u5653\u5655"+
+        "\u5656\u565A\u565B\u565D\u565E\u565F\u5660\u5661"+
+        "\uFFFD\u5663\u5665\u5666\u5667\u566D\u566E\u566F"+
+        "\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679"+
+        "\u567A\u567D\u567E\u567F\u5680\u5681\u5682\u5683"+
+        "\u5684\u5687\u5688\u5689\u568A\u568B\u568C\u568D"+
+        "\u5690\u5691\u5692\u5694\u5695\u5696\u5697\u5698"+
+        "\u5699\u569A\u569B\u569C\u569D\u569E\u569F\u56A0"+
+        "\u56A1\u56A2\u56A4\u56A5\u56A6\u56A7\u56A8\u56A9"+
+        "\u56AA\u56AB\u56AC\u56AD\u56AE\u56B0\u56B1\u56B2"+
+        "\u56B3\u56B4\u56B5\u56B6\u56B8\u56B9\u56BA\u56BB"+
+        "\u56BD\u56BE\u56BF\u56C0\u56C1\u56C2\u56C3\u56C4"+
+        "\u56C5\u56C6\u56C7\u56C8\u56C9\u56CB\u56CC\u56CD"+
+        "\u56CE\u56CF\u56D0\u56D1\u56D2\u56D3\u56D5\u56D6"+
+        "\u56D8\u56D9\u56DC\u56E3\u56E5\u56E6\u56E7\u56E8"+
+        "\u56E9\u56EA\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6"+
+        "\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705"+
+        "\u5707\u570B\u570C\u570D\u570E\u570F\u5710\u5711"+
+        "\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719"+
+        "\u571A\u571B\u571D\u571E\u5720\u5721\u5722\u5724"+
+        "\u5725\u5726\u5727\u572B\u5731\u5732\u5734\u5735"+
+        "\u5736\u5737\u5738\u573C\u573D\u573F\u5741\u5743"+
+        "\u5744\u5745\u5746\u5748\u5749\u574B\u5752\u5753"+
+        "\u5754\u5755\u5756\u5758\u5759\u5762\u5763\u5765"+
+        "\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775"+
+        "\u5778\u5779\u577A\u577D\u577E\u577F\u5780\uFFFD"+
+        "\u5781\u5787\u5788\u5789\u578A\u578D\u578E\u578F"+
+        "\u5790\u5791\u5794\u5795\u5796\u5797\u5798\u5799"+
+        "\u579A\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA"+
+        "\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7"+
+        "\u57B9\u57BA\u57BB\u57BC\u57BD\u57BE\u57BF\u57C0"+
+        "\u57C1\u57C4\u57C5\u57C6\u57C7\u57C8\u57C9\u57CA"+
+        "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB"+
+        "\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\u57E6\u57E7"+
+        "\u57E8\u57E9\u57EA\u57EB\u57EC\u57EE\u57F0\u57F1"+
+        "\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE"+
+        "\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A"+
+        "\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816"+
+        "\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822"+
+        "\u5823\u5825\u5826\u5827\u5828\u5829\u582B\u582C"+
+        "\u582D\u582E\u582F\u5831\u5832\u5833\u5834\u5836"+
+        "\u5837\u5838\u5839\u583A\u583B\u583C\u583D\u583E"+
+        "\u583F\u5840\u5841\u5842\u5843\u5845\u5846\u5847"+
+        "\u5848\u5849\u584A\u584B\u584E\u584F\u5850\u5852"+
+        "\u5853\u5855\u5856\u5857\u5859\u585A\u585B\u585C"+
+        "\u585D\u585F\u5860\u5861\u5862\u5863\u5864\u5866"+
+        "\u5867\u5868\u5869\u586A\u586D\u586E\u586F\u5870"+
+        "\u5871\u5872\u5873\u5874\u5875\u5876\u5877\u5878"+
+        "\u5879\u587A\u587B\u587C\u587D\u587F\u5882\u5884"+
+        "\u5886\u5887\u5888\u588A\u588B\u588C\uFFFD\u588D"+
+        "\u588E\u588F\u5890\u5891\u5894\u5895\u5896\u5897"+
+        "\u5898\u589B\u589C\u589D\u58A0\u58A1\u58A2\u58A3"+
+        "\u58A4\u58A5\u58A6\u58A7\u58AA\u58AB\u58AC\u58AD"+
+        "\u58AE\u58AF\u58B0\u58B1\u58B2\u58B3\u58B4\u58B5"+
+        "\u58B6\u58B7\u58B8\u58B9\u58BA\u58BB\u58BD\u58BE"+
+        "\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\u58C7\u58C8"+
+        "\u58C9\u58CA\u58CB\u58CC\u58CD\u58CE\u58CF\u58D0"+
+        "\u58D2\u58D3\u58D4\u58D6\u58D7\u58D8\u58D9\u58DA"+
+        "\u58DB\u58DC\u58DD\u58DE\u58DF\u58E0\u58E1\u58E2"+
+        "\u58E3\u58E5\u58E6\u58E7\u58E8\u58E9\u58EA\u58ED"+
+        "\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA"+
+        "\u58FB\u58FC\u58FD\u58FE\u58FF\u5900\u5901\u5903"+
+        "\u5905\u5906\u5908\u5909\u590A\u590B\u590C\u590E"+
+        "\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D"+
+        "\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C"+
+        "\u5930\u5932\u5933\u5935\u5936\u593B\u593D\u593E"+
+        "\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D"+
+        "\u5950\u5952\u5953\u5959\u595B\u595C\u595D\u595E"+
+        "\u595F\u5961\u5963\u5964\u5966\u5967\u5968\u5969"+
+        "\u596A\u596B\u596C\u596D\u596E\u596F\u5970\u5971"+
+        "\u5972\u5975\u5977\u597A\u597B\u597C\u597E\u597F"+
+        "\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990"+
+        "\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D"+
+        "\u599F\u59A0\u59A1\u59A2\u59A6\uFFFD\u59A7\u59AC"+
+        "\u59AD\u59B0\u59B1\u59B3\u59B4\u59B5\u59B6\u59B7"+
+        "\u59B8\u59BA\u59BC\u59BD\u59BF\u59C0\u59C1\u59C2"+
+        "\u59C3\u59C4\u59C5\u59C7\u59C8\u59C9\u59CC\u59CD"+
+        "\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\u59DF"+
+        "\u59E0\u59E1\u59E2\u59E4\u59E6\u59E7\u59E9\u59EA"+
+        "\u59EB\u59ED\u59EE\u59EF\u59F0\u59F1\u59F2\u59F3"+
+        "\u59F4\u59F5\u59F6\u59F7\u59F8\u59FA\u59FC\u59FD"+
+        "\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F"+
+        "\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A"+
+        "\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27"+
+        "\u5A28\u5A2A\u5A2B\u5A2C\u5A2D\u5A2E\u5A2F\u5A30"+
+        "\u5A33\u5A35\u5A37\u5A38\u5A39\u5A3A\u5A3B\u5A3D"+
+        "\u5A3E\u5A3F\u5A41\u5A42\u5A43\u5A44\u5A45\u5A47"+
+        "\u5A48\u5A4B\u5A4C\u5A4D\u5A4E\u5A4F\u5A50\u5A51"+
+        "\u5A52\u5A53\u5A54\u5A56\u5A57\u5A58\u5A59\u5A5B"+
+        "\u5A5C\u5A5D\u5A5E\u5A5F\u5A60\u5A61\u5A63\u5A64"+
+        "\u5A65\u5A66\u5A68\u5A69\u5A6B\u5A6C\u5A6D\u5A6E"+
+        "\u5A6F\u5A70\u5A71\u5A72\u5A73\u5A78\u5A79\u5A7B"+
+        "\u5A7C\u5A7D\u5A7E\u5A80\u5A81\u5A82\u5A83\u5A84"+
+        "\u5A85\u5A86\u5A87\u5A88\u5A89\u5A8A\u5A8B\u5A8C"+
+        "\u5A8D\u5A8E\u5A8F\u5A90\u5A91\u5A93\u5A94\u5A95"+
+        "\u5A96\u5A97\u5A98\u5A99\u5A9C\u5A9D\u5A9E\u5A9F"+
+        "\u5AA0\u5AA1\u5AA2\u5AA3\u5AA4\u5AA5\u5AA6\u5AA7"+
+        "\u5AA8\u5AA9\u5AAB\u5AAC\uFFFD\u5AAD\u5AAE\u5AAF"+
+        "\u5AB0\u5AB1\u5AB4\u5AB6\u5AB7\u5AB9\u5ABA\u5ABB"+
+        "\u5ABC\u5ABD\u5ABF\u5AC0\u5AC3\u5AC4\u5AC5\u5AC6"+
+        "\u5AC7\u5AC8\u5ACA\u5ACB\u5ACD\u5ACE\u5ACF\u5AD0"+
+        "\u5AD1\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD"+
+        "\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA"+
+        "\u5AEC\u5AED\u5AEE\u5AEF\u5AF0\u5AF2\u5AF3\u5AF4"+
+        "\u5AF5\u5AF6\u5AF7\u5AF8\u5AF9\u5AFA\u5AFB\u5AFC"+
+        "\u5AFD\u5AFE\u5AFF\u5B00\u5B01\u5B02\u5B03\u5B04"+
+        "\u5B05\u5B06\u5B07\u5B08\u5B0A\u5B0B\u5B0C\u5B0D"+
+        "\u5B0E\u5B0F\u5B10\u5B11\u5B12\u5B13\u5B14\u5B15"+
+        "\u5B18\u5B19\u5B1A\u5B1B\u5B1C\u5B1D\u5B1E\u5B1F"+
+        "\u5B20\u5B21\u5B22\u5B23\u5B24\u5B25\u5B26\u5B27"+
+        "\u5B28\u5B29\u5B2A\u5B2B\u5B2C\u5B2D\u5B2E\u5B2F"+
+        "\u5B30\u5B31\u5B33\u5B35\u5B36\u5B38\u5B39\u5B3A"+
+        "\u5B3B\u5B3C\u5B3D\u5B3E\u5B3F\u5B41\u5B42\u5B43"+
+        "\u5B44\u5B45\u5B46\u5B47\u5B48\u5B49\u5B4A\u5B4B"+
+        "\u5B4C\u5B4D\u5B4E\u5B4F\u5B52\u5B56\u5B5E\u5B60"+
+        "\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72"+
+        "\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E"+
+        "\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91"+
+        "\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC"+
+        "\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB"+
+        "\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB"+
+        "\u5BCD\u5BCE\u5BCF\uFFFD\u5BD1\u5BD4\u5BD5\u5BD6"+
+        "\u5BD7\u5BD8\u5BD9\u5BDA\u5BDB\u5BDC\u5BE0\u5BE2"+
+        "\u5BE3\u5BE6\u5BE7\u5BE9\u5BEA\u5BEB\u5BEC\u5BED"+
+        "\u5BEF\u5BF1\u5BF2\u5BF3\u5BF4\u5BF5\u5BF6\u5BF7"+
+        "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08"+
+        "\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17"+
+        "\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26"+
+        "\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30"+
+        "\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46"+
+        "\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57"+
+        "\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64"+
+        "\u5C67\u5C68\u5C69\u5C6A\u5C6B\u5C6C\u5C6D\u5C70"+
+        "\u5C72\u5C73\u5C74\u5C75\u5C76\u5C77\u5C78\u5C7B"+
+        "\u5C7C\u5C7D\u5C7E\u5C80\u5C83\u5C84\u5C85\u5C86"+
+        "\u5C87\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93"+
+        "\u5C95\u5C9D\u5C9E\u5C9F\u5CA0\u5CA1\u5CA4\u5CA5"+
+        "\u5CA6\u5CA7\u5CA8\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2"+
+        "\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0"+
+        "\u5CC2\u5CC3\u5CC5\u5CC6\u5CC7\u5CC8\u5CC9\u5CCA"+
+        "\u5CCC\u5CCD\u5CCE\u5CCF\u5CD0\u5CD1\u5CD3\u5CD4"+
+        "\u5CD5\u5CD6\u5CD7\u5CD8\u5CDA\u5CDB\u5CDC\u5CDD"+
+        "\u5CDE\u5CDF\u5CE0\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB"+
+        "\u5CEC\u5CEE\u5CEF\u5CF1\u5CF2\u5CF3\u5CF4\u5CF5"+
+        "\u5CF6\u5CF7\u5CF8\u5CF9\u5CFA\u5CFC\u5CFD\u5CFE"+
+        "\u5CFF\u5D00\uFFFD\u5D01\u5D04\u5D05\u5D08\u5D09"+
+        "\u5D0A\u5D0B\u5D0C\u5D0D\u5D0F\u5D10\u5D11\u5D12"+
+        "\u5D13\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D"+
+        "\u5D1F\u5D20\u5D21\u5D22\u5D23\u5D25\u5D28\u5D2A"+
+        "\u5D2B\u5D2C\u5D2F\u5D30\u5D31\u5D32\u5D33\u5D35"+
+        "\u5D36\u5D37\u5D38\u5D39\u5D3A\u5D3B\u5D3C\u5D3F"+
+        "\u5D40\u5D41\u5D42\u5D43\u5D44\u5D45\u5D46\u5D48"+
+        "\u5D49\u5D4D\u5D4E\u5D4F\u5D50\u5D51\u5D52\u5D53"+
+        "\u5D54\u5D55\u5D56\u5D57\u5D59\u5D5A\u5D5C\u5D5E"+
+        "\u5D5F\u5D60\u5D61\u5D62\u5D63\u5D64\u5D65\u5D66"+
+        "\u5D67\u5D68\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72"+
+        "\u5D73\u5D75\u5D76\u5D77\u5D78\u5D79\u5D7A\u5D7B"+
+        "\u5D7C\u5D7D\u5D7E\u5D7F\u5D80\u5D81\u5D83\u5D84"+
+        "\u5D85\u5D86\u5D87\u5D88\u5D89\u5D8A\u5D8B\u5D8C"+
+        "\u5D8D\u5D8E\u5D8F\u5D90\u5D91\u5D92\u5D93\u5D94"+
+        "\u5D95\u5D96\u5D97\u5D98\u5D9A\u5D9B\u5D9C\u5D9E"+
+        "\u5D9F\u5DA0\u5DA1\u5DA2\u5DA3\u5DA4\u5DA5\u5DA6"+
+        "\u5DA7\u5DA8\u5DA9\u5DAA\u5DAB\u5DAC\u5DAD\u5DAE"+
+        "\u5DAF\u5DB0\u5DB1\u5DB2\u5DB3\u5DB4\u5DB5\u5DB6"+
+        "\u5DB8\u5DB9\u5DBA\u5DBB\u5DBC\u5DBD\u5DBE\u5DBF"+
+        "\u5DC0\u5DC1\u5DC2\u5DC3\u5DC4\u5DC6\u5DC7\u5DC8"+
+        "\u5DC9\u5DCA\u5DCB\u5DCC\u5DCE\u5DCF\u5DD0\u5DD1"+
+        "\u5DD2\u5DD3\u5DD4\u5DD5\u5DD6\u5DD7\u5DD8\u5DD9"+
+        "\u5DDA\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC"+
+        "\u5DED\uFFFD\u5DF0\u5DF5\u5DF6\u5DF8\u5DF9\u5DFA"+
+        "\u5DFB\u5DFC\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A"+
+        "\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\u5E1F"+
+        "\u5E20\u5E21\u5E22\u5E23\u5E24\u5E25\u5E28\u5E29"+
+        "\u5E2A\u5E2B\u5E2C\u5E2F\u5E30\u5E32\u5E33\u5E34"+
+        "\u5E35\u5E36\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41"+
+        "\u5E43\u5E46\u5E47\u5E48\u5E49\u5E4A\u5E4B\u5E4D"+
+        "\u5E4E\u5E4F\u5E50\u5E51\u5E52\u5E53\u5E56\u5E57"+
+        "\u5E58\u5E59\u5E5A\u5E5C\u5E5D\u5E5F\u5E60\u5E63"+
+        "\u5E64\u5E65\u5E66\u5E67\u5E68\u5E69\u5E6A\u5E6B"+
+        "\u5E6C\u5E6D\u5E6E\u5E6F\u5E70\u5E71\u5E75\u5E77"+
+        "\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89"+
+        "\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1"+
+        "\u5EA2\u5EA3\u5EA4\u5EA8\u5EA9\u5EAA\u5EAB\u5EAC"+
+        "\u5EAE\u5EAF\u5EB0\u5EB1\u5EB2\u5EB4\u5EBA\u5EBB"+
+        "\u5EBC\u5EBD\u5EBF\u5EC0\u5EC1\u5EC2\u5EC3\u5EC4"+
+        "\u5EC5\u5EC6\u5EC7\u5EC8\u5ECB\u5ECC\u5ECD\u5ECE"+
+        "\u5ECF\u5ED0\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA"+
+        "\u5EDC\u5EDD\u5EDE\u5EDF\u5EE0\u5EE1\u5EE2\u5EE3"+
+        "\u5EE4\u5EE5\u5EE6\u5EE7\u5EE9\u5EEB\u5EEC\u5EED"+
+        "\u5EEE\u5EEF\u5EF0\u5EF1\u5EF2\u5EF3\u5EF5\u5EF8"+
+        "\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09"+
+        "\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19"+
+        "\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"+
+        "\uFFFD\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\u5F33"+
+        "\u5F34\u5F35\u5F36\u5F37\u5F38\u5F3B\u5F3D\u5F3E"+
+        "\u5F3F\u5F41\u5F42\u5F43\u5F44\u5F45\u5F46\u5F47"+
+        "\u5F48\u5F49\u5F4A\u5F4B\u5F4C\u5F4D\u5F4E\u5F4F"+
+        "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F"+
+        "\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F"+
+        "\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E"+
+        "\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93"+
+        "\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0"+
+        "\u5FA2\u5FA3\u5FA4\u5FA5\u5FA6\u5FA7\u5FA9\u5FAB"+
+        "\u5FAC\u5FAF\u5FB0\u5FB1\u5FB2\u5FB3\u5FB4\u5FB6"+
+        "\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\u5FBF\u5FC0\u5FC1"+
+        "\u5FC2\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4"+
+        "\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3"+
+        "\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2"+
+        "\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007";
+
+    private final static String innerIndex1=
+        "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017"+
+        "\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C"+
+        "\u602D\u602E\u6030\u6031\u6032\u6033\u6034\u6036"+
+        "\u6037\u6038\u6039\u603A\u603D\u603E\u6040\u6044"+
+        "\u6045\u6046\u6047\u6048\u6049\u604A\u604C\u604E"+
+        "\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B"+
+        "\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E"+
+        "\u6071\u6072\u6074\u6075\u6077\u607E\u6080\uFFFD"+
+        "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B"+
+        "\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098"+
+        "\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7"+
+        "\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7"+
+        "\u60B9\u60BA\u60BD\u60BE\u60BF\u60C0\u60C1\u60C2"+
+        "\u60C3\u60C4\u60C7\u60C8\u60C9\u60CC\u60CD\u60CE"+
+        "\u60CF\u60D0\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9"+
+        "\u60DB\u60DE\u60E1\u60E2\u60E3\u60E4\u60E5\u60EA"+
+        "\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\u60FC\u60FD"+
+        "\u60FE\u60FF\u6102\u6103\u6104\u6105\u6107\u610A"+
+        "\u610B\u610C\u6110\u6111\u6112\u6113\u6114\u6116"+
+        "\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121"+
+        "\u6122\u6125\u6128\u6129\u612A\u612C\u612D\u612E"+
+        "\u612F\u6130\u6131\u6132\u6133\u6134\u6135\u6136"+
+        "\u6137\u6138\u6139\u613A\u613B\u613C\u613D\u613E"+
+        "\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147"+
+        "\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154"+
+        "\u6156\u6157\u6158\u6159\u615A\u615B\u615C\u615E"+
+        "\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169"+
+        "\u616A\u616B\u616C\u616D\u616E\u616F\u6171\u6172"+
+        "\u6173\u6174\u6176\u6178\u6179\u617A\u617B\u617C"+
+        "\u617D\u617E\u617F\u6180\u6181\u6182\u6183\u6184"+
+        "\u6185\u6186\u6187\u6188\u6189\u618A\u618C\u618D"+
+        "\u618F\u6190\u6191\u6192\u6193\u6195\uFFFD\u6196"+
+        "\u6197\u6198\u6199\u619A\u619B\u619C\u619E\u619F"+
+        "\u61A0\u61A1\u61A2\u61A3\u61A4\u61A5\u61A6\u61AA"+
+        "\u61AB\u61AD\u61AE\u61AF\u61B0\u61B1\u61B2\u61B3"+
+        "\u61B4\u61B5\u61B6\u61B8\u61B9\u61BA\u61BB\u61BC"+
+        "\u61BD\u61BF\u61C0\u61C1\u61C3\u61C4\u61C5\u61C6"+
+        "\u61C7\u61C9\u61CC\u61CD\u61CE\u61CF\u61D0\u61D3"+
+        "\u61D5\u61D6\u61D7\u61D8\u61D9\u61DA\u61DB\u61DC"+
+        "\u61DD\u61DE\u61DF\u61E0\u61E1\u61E2\u61E3\u61E4"+
+        "\u61E5\u61E7\u61E8\u61E9\u61EA\u61EB\u61EC\u61ED"+
+        "\u61EE\u61EF\u61F0\u61F1\u61F2\u61F3\u61F4\u61F6"+
+        "\u61F7\u61F8\u61F9\u61FA\u61FB\u61FC\u61FD\u61FE"+
+        "\u6200\u6201\u6202\u6203\u6204\u6205\u6207\u6209"+
+        "\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223"+
+        "\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230"+
+        "\u6231\u6232\u6235\u6236\u6238\u6239\u623A\u623B"+
+        "\u623C\u6242\u6244\u6245\u6246\u624A\u624F\u6250"+
+        "\u6255\u6256\u6257\u6259\u625A\u625C\u625D\u625E"+
+        "\u625F\u6260\u6261\u6262\u6264\u6265\u6268\u6271"+
+        "\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D"+
+        "\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B"+
+        "\u628C\u628D\u628E\u628F\u6290\u6294\u6299\u629C"+
+        "\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD"+
+        "\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7"+
+        "\u62B8\u62BA\u62BE\u62C0\u62C1\uFFFD\u62C3\u62CB"+
+        "\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4"+
+        "\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA"+
+        "\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B"+
+        "\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315"+
+        "\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C"+
+        "\u632D\u632E\u6330\u6331\u6333\u6334\u6335\u6336"+
+        "\u6337\u6338\u633B\u633C\u633E\u633F\u6340\u6341"+
+        "\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354"+
+        "\u6356\u6357\u6358\u6359\u635A\u635B\u635C\u635D"+
+        "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C"+
+        "\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379"+
+        "\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385"+
+        "\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397"+
+        "\u6399\u639A\u639B\u639C\u639D\u639E\u639F\u63A1"+
+        "\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6"+
+        "\u63B9\u63BB\u63BD\u63BF\u63C0\u63C1\u63C2\u63C3"+
+        "\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3"+
+        "\u63D4\u63D5\u63D7\u63D8\u63D9\u63DA\u63DB\u63DC"+
+        "\u63DD\u63DF\u63E2\u63E4\u63E5\u63E6\u63E7\u63E8"+
+        "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5"+
+        "\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404"+
+        "\u6406\u6407\u6408\u6409\u640A\u640D\u640E\u6411"+
+        "\u6412\u6415\u6416\u6417\u6418\u6419\u641A\u641D"+
+        "\u641F\u6422\u6423\u6424\uFFFD\u6425\u6427\u6428"+
+        "\u6429\u642B\u642E\u642F\u6430\u6431\u6432\u6433"+
+        "\u6435\u6436\u6437\u6438\u6439\u643B\u643C\u643E"+
+        "\u6440\u6442\u6443\u6449\u644B\u644C\u644D\u644E"+
+        "\u644F\u6450\u6451\u6453\u6455\u6456\u6457\u6459"+
+        "\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6462"+
+        "\u6463\u6464\u6465\u6466\u6468\u646A\u646B\u646C"+
+        "\u646E\u646F\u6470\u6471\u6472\u6473\u6474\u6475"+
+        "\u6476\u6477\u647B\u647C\u647D\u647E\u647F\u6480"+
+        "\u6481\u6483\u6486\u6488\u6489\u648A\u648B\u648C"+
+        "\u648D\u648E\u648F\u6490\u6493\u6494\u6497\u6498"+
+        "\u649A\u649B\u649C\u649D\u649F\u64A0\u64A1\u64A2"+
+        "\u64A3\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF"+
+        "\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD"+
+        "\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\u64C7\u64C8"+
+        "\u64C9\u64CA\u64CB\u64CC\u64CF\u64D1\u64D3\u64D4"+
+        "\u64D5\u64D6\u64D9\u64DA\u64DB\u64DC\u64DD\u64DF"+
+        "\u64E0\u64E1\u64E3\u64E5\u64E7\u64E8\u64E9\u64EA"+
+        "\u64EB\u64EC\u64ED\u64EE\u64EF\u64F0\u64F1\u64F2"+
+        "\u64F3\u64F4\u64F5\u64F6\u64F7\u64F8\u64F9\u64FA"+
+        "\u64FB\u64FC\u64FD\u64FE\u64FF\u6501\u6502\u6503"+
+        "\u6504\u6505\u6506\u6507\u6508\u650A\u650B\u650C"+
+        "\u650D\u650E\u650F\u6510\u6511\u6513\u6514\u6515"+
+        "\u6516\u6517\u6519\u651A\u651B\u651C\u651D\u651E"+
+        "\u651F\u6520\u6521\uFFFD\u6522\u6523\u6524\u6526"+
+        "\u6527\u6528\u6529\u652A\u652C\u652D\u6530\u6531"+
+        "\u6532\u6533\u6537\u653A\u653C\u653D\u6540\u6541"+
+        "\u6542\u6543\u6544\u6546\u6547\u654A\u654B\u654D"+
+        "\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A"+
+        "\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568"+
+        "\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575"+
+        "\u6576\u6578\u6579\u657A\u657B\u657C\u657D\u657E"+
+        "\u657F\u6580\u6581\u6582\u6583\u6584\u6585\u6586"+
+        "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594"+
+        "\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2"+
+        "\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\u65B2"+
+        "\u65B3\u65B4\u65B5\u65B6\u65B7\u65B8\u65BA\u65BB"+
+        "\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA"+
+        "\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\u65D9"+
+        "\u65DA\u65DB\u65DC\u65DD\u65DE\u65DF\u65E1\u65E3"+
+        "\u65E4\u65EA\u65EB\u65F2\u65F3\u65F4\u65F5\u65F8"+
+        "\u65F9\u65FB\u65FC\u65FD\u65FE\u65FF\u6601\u6604"+
+        "\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611"+
+        "\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E"+
+        "\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B"+
+        "\u662C\u662E\u6630\u6632\u6633\u6637\u6638\u6639"+
+        "\u663A\u663B\u663D\u663F\u6640\u6642\u6644\u6645"+
+        "\u6646\u6647\u6648\u6649\u664A\u664D\u664E\u6650"+
+        "\u6651\u6658\uFFFD\u6659\u665B\u665C\u665D\u665E"+
+        "\u6660\u6662\u6663\u6665\u6667\u6669\u666A\u666B"+
+        "\u666C\u666D\u6671\u6672\u6673\u6675\u6678\u6679"+
+        "\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685"+
+        "\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F"+
+        "\u6690\u6692\u6693\u6694\u6695\u6698\u6699\u669A"+
+        "\u669B\u669C\u669E\u669F\u66A0\u66A1\u66A2\u66A3"+
+        "\u66A4\u66A5\u66A6\u66A9\u66AA\u66AB\u66AC\u66AD"+
+        "\u66AF\u66B0\u66B1\u66B2\u66B3\u66B5\u66B6\u66B7"+
+        "\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\u66C0\u66C1"+
+        "\u66C2\u66C3\u66C4\u66C5\u66C6\u66C7\u66C8\u66C9"+
+        "\u66CA\u66CB\u66CC\u66CD\u66CE\u66CF\u66D0\u66D1"+
+        "\u66D2\u66D3\u66D4\u66D5\u66D6\u66D7\u66D8\u66DA"+
+        "\u66DE\u66DF\u66E0\u66E1\u66E2\u66E3\u66E4\u66E5"+
+        "\u66E7\u66E8\u66EA\u66EB\u66EC\u66ED\u66EE\u66EF"+
+        "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701"+
+        "\u6702\u6703\u6704\u6705\u6706\u6707\u670C\u670E"+
+        "\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A"+
+        "\u671C\u671E\u6720\u6721\u6722\u6723\u6724\u6725"+
+        "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737"+
+        "\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744"+
+        "\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755"+
+        "\u6757\u6758\u6759\u675A\u675B\u675D\u6762\u6763"+
+        "\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774"+
+        "\u6776\uFFFD\u6778\u6779\u677A\u677B\u677D\u6780"+
+        "\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D"+
+        "\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799"+
+        "\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC"+
+        "\u67AE\u67B1\u67B2\u67B4\u67B9\u67BA\u67BB\u67BC"+
+        "\u67BD\u67BE\u67BF\u67C0\u67C2\u67C5\u67C6\u67C7"+
+        "\u67C8\u67C9\u67CA\u67CB\u67CC\u67CD\u67CE\u67D5"+
+        "\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6"+
+        "\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5"+
+        "\u67F6\u67F7\u67F8\u67F9\u67FA\u67FB\u67FC\u67FE"+
+        "\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812"+
+        "\u6814\u6815\u6818\u6819\u681A\u681B\u681C\u681E"+
+        "\u681F\u6820\u6822\u6823\u6824\u6825\u6826\u6827"+
+        "\u6828\u682B\u682C\u682D\u682E\u682F\u6830\u6831"+
+        "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B"+
+        "\u684D\u684F\u6852\u6856\u6857\u6858\u6859\u685A"+
+        "\u685B\u685C\u685D\u685E\u685F\u686A\u686C\u686D"+
+        "\u686E\u686F\u6870\u6871\u6872\u6873\u6875\u6878"+
+        "\u6879\u687A\u687B\u687C\u687D\u687E\u687F\u6880"+
+        "\u6882\u6884\u6887\u6888\u6889\u688A\u688B\u688C"+
+        "\u688D\u688E\u6890\u6891\u6892\u6894\u6895\u6896"+
+        "\u6898\u6899\u689A\u689B\u689C\u689D\u689E\u689F"+
+        "\u68A0\u68A1\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB"+
+        "\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"+
+        "\uFFFD\u68B9\u68BA\u68BB\u68BC\u68BD\u68BE\u68BF"+
+        "\u68C1\u68C3\u68C4\u68C5\u68C6\u68C7\u68C8\u68CA"+
+        "\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6"+
+        "\u68D7\u68D9\u68DB\u68DC\u68DD\u68DE\u68DF\u68E1"+
+        "\u68E2\u68E4\u68E5\u68E6\u68E7\u68E8\u68E9\u68EA"+
+        "\u68EB\u68EC\u68ED\u68EF\u68F2\u68F3\u68F4\u68F6"+
+        "\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902"+
+        "\u6903\u6904\u6906\u6907\u6908\u6909\u690A\u690C"+
+        "\u690F\u6911\u6913\u6914\u6915\u6916\u6917\u6918"+
+        "\u6919\u691A\u691B\u691C\u691D\u691E\u6921\u6922"+
+        "\u6923\u6925\u6926\u6927\u6928\u6929\u692A\u692B"+
+        "\u692C\u692E\u692F\u6931\u6932\u6933\u6935\u6936"+
+        "\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941"+
+        "\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694A"+
+        "\u694B\u694C\u694D\u694E\u694F\u6950\u6951\u6952"+
+        "\u6953\u6955\u6956\u6958\u6959\u695B\u695C\u695F"+
+        "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A"+
+        "\u696C\u696D\u696F\u6970\u6972\u6973\u6974\u6975"+
+        "\u6976\u697A\u697B\u697D\u697E\u697F\u6981\u6983"+
+        "\u6985\u698A\u698B\u698C\u698E\u698F\u6990\u6991"+
+        "\u6992\u6993\u6996\u6997\u6999\u699A\u699D\u699E"+
+        "\u699F\u69A0\u69A1\u69A2\u69A3\u69A4\u69A5\u69A6"+
+        "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3"+
+        "\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\uFFFD"+
+        "\u69BE\u69BF\u69C0\u69C2\u69C3\u69C4\u69C5\u69C6"+
+        "\u69C7\u69C8\u69C9\u69CB\u69CD\u69CF\u69D1\u69D2"+
+        "\u69D3\u69D5\u69D6\u69D7\u69D8\u69D9\u69DA\u69DC"+
+        "\u69DD\u69DE\u69E1\u69E2\u69E3\u69E4\u69E5\u69E6"+
+        "\u69E7\u69E8\u69E9\u69EA\u69EB\u69EC\u69EE\u69EF"+
+        "\u69F0\u69F1\u69F3\u69F4\u69F5\u69F6\u69F7\u69F8"+
+        "\u69F9\u69FA\u69FB\u69FC\u69FE\u6A00\u6A01\u6A02"+
+        "\u6A03\u6A04\u6A05\u6A06\u6A07\u6A08\u6A09\u6A0B"+
+        "\u6A0C\u6A0D\u6A0E\u6A0F\u6A10\u6A11\u6A12\u6A13"+
+        "\u6A14\u6A15\u6A16\u6A19\u6A1A\u6A1B\u6A1C\u6A1D"+
+        "\u6A1E\u6A20\u6A22\u6A23\u6A24\u6A25\u6A26\u6A27"+
+        "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33"+
+        "\u6A34\u6A36\u6A37\u6A38\u6A39\u6A3A\u6A3B\u6A3C"+
+        "\u6A3F\u6A40\u6A41\u6A42\u6A43\u6A45\u6A46\u6A48"+
+        "\u6A49\u6A4A\u6A4B\u6A4C\u6A4D\u6A4E\u6A4F\u6A51"+
+        "\u6A52\u6A53\u6A54\u6A55\u6A56\u6A57\u6A5A\u6A5C"+
+        "\u6A5D\u6A5E\u6A5F\u6A60\u6A62\u6A63\u6A64\u6A66"+
+        "\u6A67\u6A68\u6A69\u6A6A\u6A6B\u6A6C\u6A6D\u6A6E"+
+        "\u6A6F\u6A70\u6A72\u6A73\u6A74\u6A75\u6A76\u6A77"+
+        "\u6A78\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82"+
+        "\u6A83\u6A85\u6A86\u6A87\u6A88\u6A89\u6A8A\u6A8B"+
+        "\u6A8C\u6A8D\u6A8F\u6A92\u6A93\u6A94\u6A95\u6A96"+
+        "\u6A98\u6A99\u6A9A\u6A9B\u6A9C\u6A9D\u6A9E\u6A9F"+
+        "\u6AA1\u6AA2\u6AA3\u6AA4\u6AA5\u6AA6\uFFFD\u6AA7"+
+        "\u6AA8\u6AAA\u6AAD\u6AAE\u6AAF\u6AB0\u6AB1\u6AB2"+
+        "\u6AB3\u6AB4\u6AB5\u6AB6\u6AB7\u6AB8\u6AB9\u6ABA"+
+        "\u6ABB\u6ABC\u6ABD\u6ABE\u6ABF\u6AC0\u6AC1\u6AC2"+
+        "\u6AC3\u6AC4\u6AC5\u6AC6\u6AC7\u6AC8\u6AC9\u6ACA"+
+        "\u6ACB\u6ACC\u6ACD\u6ACE\u6ACF\u6AD0\u6AD1\u6AD2"+
+        "\u6AD3\u6AD4\u6AD5\u6AD6\u6AD7\u6AD8\u6AD9\u6ADA"+
+        "\u6ADB\u6ADC\u6ADD\u6ADE\u6ADF\u6AE0\u6AE1\u6AE2"+
+        "\u6AE3\u6AE4\u6AE5\u6AE6\u6AE7\u6AE8\u6AE9\u6AEA"+
+        "\u6AEB\u6AEC\u6AED\u6AEE\u6AEF\u6AF0\u6AF1\u6AF2"+
+        "\u6AF3\u6AF4\u6AF5\u6AF6\u6AF7\u6AF8\u6AF9\u6AFA"+
+        "\u6AFB\u6AFC\u6AFD\u6AFE\u6AFF\u6B00\u6B01\u6B02"+
+        "\u6B03\u6B04\u6B05\u6B06\u6B07\u6B08\u6B09\u6B0A"+
+        "\u6B0B\u6B0C\u6B0D\u6B0E\u6B0F\u6B10\u6B11\u6B12"+
+        "\u6B13\u6B14\u6B15\u6B16\u6B17\u6B18\u6B19\u6B1A"+
+        "\u6B1B\u6B1C\u6B1D\u6B1E\u6B1F\u6B25\u6B26\u6B28"+
+        "\u6B29\u6B2A\u6B2B\u6B2C\u6B2D\u6B2E\u6B2F\u6B30"+
+        "\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C"+
+        "\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48"+
+        "\u6B4A\u6B4B\u6B4D\u6B4E\u6B4F\u6B50\u6B51\u6B52"+
+        "\u6B53\u6B54\u6B55\u6B56\u6B57\u6B58\u6B5A\u6B5B"+
+        "\u6B5C\u6B5D\u6B5E\u6B5F\u6B60\u6B61\u6B68\u6B69"+
+        "\u6B6B\u6B6C\u6B6D\u6B6E\u6B6F\u6B70\u6B71\u6B72"+
+        "\u6B73\u6B74\u6B75\u6B76\u6B77\u6B78\u6B7A\u6B7D"+
+        "\u6B7E\u6B7F\u6B80\u6B85\u6B88\uFFFD\u6B8C\u6B8E"+
+        "\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99"+
+        "\u6B9C\u6B9D\u6B9E\u6B9F\u6BA0\u6BA2\u6BA3\u6BA4"+
+        "\u6BA5\u6BA6\u6BA7\u6BA8\u6BA9\u6BAB\u6BAC\u6BAD"+
+        "\u6BAE\u6BAF\u6BB0\u6BB1\u6BB2\u6BB6\u6BB8\u6BB9"+
+        "\u6BBA\u6BBB\u6BBC\u6BBD\u6BBE\u6BC0\u6BC3\u6BC4"+
+        "\u6BC6\u6BC7\u6BC8\u6BC9\u6BCA\u6BCC\u6BCE\u6BD0"+
+        "\u6BD1\u6BD8\u6BDA\u6BDC\u6BDD\u6BDE\u6BDF\u6BE0"+
+        "\u6BE2\u6BE3\u6BE4\u6BE5\u6BE6\u6BE7\u6BE8\u6BE9"+
+        "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6"+
+        "\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\u6BFF\u6C00"+
+        "\u6C01\u6C02\u6C03\u6C04\u6C08\u6C09\u6C0A\u6C0B"+
+        "\u6C0C\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20"+
+        "\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36"+
+        "\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43"+
+        "\u6C44\u6C45\u6C48\u6C4B\u6C4C\u6C4D\u6C4E\u6C4F"+
+        "\u6C51\u6C52\u6C53\u6C56\u6C58\u6C59\u6C5A\u6C62"+
+        "\u6C63\u6C65\u6C66\u6C67\u6C6B\u6C6C\u6C6D\u6C6E"+
+        "\u6C6F\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B"+
+        "\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D"+
+        "\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A"+
+        "\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF"+
+        "\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1"+
+        "\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE"+
+        "\u6CCF\u6CD1\u6CD2\u6CD8\uFFFD\u6CD9\u6CDA\u6CDC"+
+        "\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED"+
+        "\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05"+
+        "\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11"+
+        "\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F"+
+        "\u6D20\u6D21\u6D22\u6D23\u6D24\u6D26\u6D28\u6D29"+
+        "\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38"+
+        "\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50"+
+        "\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61"+
+        "\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D"+
+        "\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A"+
+        "\u6D7B\u6D7D\u6D7E\u6D7F\u6D80\u6D81\u6D83\u6D84"+
+        "\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92"+
+        "\u6D96\u6D97\u6D98\u6D99\u6D9A\u6D9C\u6DA2\u6DA5"+
+        "\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7"+
+        "\u6DB9\u6DBA\u6DBB\u6DBC\u6DBD\u6DBE\u6DC1\u6DC2"+
+        "\u6DC3\u6DC8\u6DC9\u6DCA\u6DCD\u6DCE\u6DCF\u6DD0"+
+        "\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC"+
+        "\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA"+
+        "\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8"+
+        "\u6DFA\u6DFD\u6DFE\u6DFF\u6E00\u6E01\u6E02\u6E03"+
+        "\u6E04\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12"+
+        "\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F"+
+        "\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30"+
+        "\u6E31\u6E33\u6E35\uFFFD\u6E36\u6E37\u6E39\u6E3B"+
+        "\u6E3C\u6E3D\u6E3E\u6E3F\u6E40\u6E41\u6E42\u6E45"+
+        "\u6E46\u6E47\u6E48\u6E49\u6E4A\u6E4B\u6E4C\u6E4F"+
+        "\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C"+
+        "\u6E5D\u6E5E\u6E60\u6E61\u6E62\u6E63\u6E64\u6E65"+
+        "\u6E66\u6E67\u6E68\u6E69\u6E6A\u6E6C\u6E6D\u6E6F"+
+        "\u6E70\u6E71\u6E72\u6E73\u6E74\u6E75\u6E76\u6E77"+
+        "\u6E78\u6E79\u6E7A\u6E7B\u6E7C\u6E7D\u6E80\u6E81"+
+        "\u6E82\u6E84\u6E87\u6E88\u6E8A\u6E8B\u6E8C\u6E8D"+
+        "\u6E8E\u6E91\u6E92\u6E93\u6E94\u6E95\u6E96\u6E97"+
+        "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3"+
+        "\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE"+
+        "\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF"+
+        "\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA"+
+        "\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9"+
+        "\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\u6EEB\u6EEC"+
+        "\u6EED\u6EEE\u6EEF\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5"+
+        "\u6EF6\u6EF7\u6EF8\u6EFA\u6EFB\u6EFC\u6EFD\u6EFE"+
+        "\u6EFF\u6F00\u6F01\u6F03\u6F04\u6F05\u6F07\u6F08"+
+        "\u6F0A\u6F0B\u6F0C\u6F0D\u6F0E\u6F10\u6F11\u6F12"+
+        "\u6F16\u6F17\u6F18\u6F19\u6F1A\u6F1B\u6F1C\u6F1D"+
+        "\u6F1E\u6F1F\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27"+
+        "\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37"+
+        "\u6F38\u6F39\u6F3A\u6F3B\u6F3C\u6F3D\u6F3F\u6F40"+
+        "\u6F41\u6F42\uFFFD\u6F43\u6F44\u6F45\u6F48\u6F49"+
+        "\u6F4A\u6F4C\u6F4E\u6F4F\u6F50\u6F51\u6F52\u6F53"+
+        "\u6F54\u6F55\u6F56\u6F57\u6F59\u6F5A\u6F5B\u6F5D"+
+        "\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\u6F68"+
+        "\u6F69\u6F6A\u6F6B\u6F6C\u6F6F\u6F70\u6F71\u6F73"+
+        "\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\u6F7E\u6F7F"+
+        "\u6F80\u6F81\u6F82\u6F83\u6F85\u6F86\u6F87\u6F8A"+
+        "\u6F8B\u6F8F\u6F90\u6F91\u6F92\u6F93\u6F94\u6F95"+
+        "\u6F96\u6F97\u6F98\u6F99\u6F9A\u6F9B\u6F9D\u6F9E"+
+        "\u6F9F\u6FA0\u6FA2\u6FA3\u6FA4\u6FA5\u6FA6\u6FA8"+
+        "\u6FA9\u6FAA\u6FAB\u6FAC\u6FAD\u6FAE\u6FAF\u6FB0"+
+        "\u6FB1\u6FB2\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\u6FBB"+
+        "\u6FBC\u6FBD\u6FBE\u6FBF\u6FC1\u6FC3\u6FC4\u6FC5"+
+        "\u6FC6\u6FC7\u6FC8\u6FCA\u6FCB\u6FCC\u6FCD\u6FCE"+
+        "\u6FCF\u6FD0\u6FD3\u6FD4\u6FD5\u6FD6\u6FD7\u6FD8"+
+        "\u6FD9\u6FDA\u6FDB\u6FDC\u6FDD\u6FDF\u6FE2\u6FE3"+
+        "\u6FE4\u6FE5\u6FE6\u6FE7\u6FE8\u6FE9\u6FEA\u6FEB"+
+        "\u6FEC\u6FED\u6FF0\u6FF1\u6FF2\u6FF3\u6FF4\u6FF5"+
+        "\u6FF6\u6FF7\u6FF8\u6FF9\u6FFA\u6FFB\u6FFC\u6FFD"+
+        "\u6FFE\u6FFF\u7000\u7001\u7002\u7003\u7004\u7005"+
+        "\u7006\u7007\u7008\u7009\u700A\u700B\u700C\u700D"+
+        "\u700E\u700F\u7010\u7012\u7013\u7014\u7015\u7016"+
+        "\u7017\u7018\u7019\u701C\u701D\u701E\u701F\u7020"+
+        "\u7021\u7022\u7024\u7025\u7026\u7027\u7028\u7029"+
+        "\u702A\uFFFD\u702B\u702C\u702D\u702E\u702F\u7030"+
+        "\u7031\u7032\u7033\u7034\u7036\u7037\u7038\u703A"+
+        "\u703B\u703C\u703D\u703E\u703F\u7040\u7041\u7042"+
+        "\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704A"+
+        "\u704B\u704D\u704E\u7050\u7051\u7052\u7053\u7054"+
+        "\u7055\u7056\u7057\u7058\u7059\u705A\u705B\u705C"+
+        "\u705D\u705F\u7060\u7061\u7062\u7063\u7064\u7065"+
+        "\u7066\u7067\u7068\u7069\u706A\u706E\u7071\u7072"+
+        "\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081"+
+        "\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C"+
+        "\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A"+
+        "\u709B\u709E\u709F\u70A0\u70A1\u70A2\u70A3\u70A4"+
+        "\u70A5\u70A6\u70A7\u70A8\u70A9\u70AA\u70B0\u70B2"+
+        "\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5"+
+        "\u70C6\u70C7\u70C9\u70CB\u70CC\u70CD\u70CE\u70CF"+
+        "\u70D0\u70D1\u70D2\u70D3\u70D4\u70D5\u70D6\u70D7"+
+        "\u70DA\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3"+
+        "\u70E5\u70EA\u70EE\u70F0\u70F1\u70F2\u70F3\u70F4"+
+        "\u70F5\u70F6\u70F8\u70FA\u70FB\u70FC\u70FE\u70FF"+
+        "\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107"+
+        "\u7108\u710B\u710C\u710D\u710E\u710F\u7111\u7112"+
+        "\u7114\u7117\u711B\u711C\u711D\u711E\u711F\u7120"+
+        "\u7121\u7122\u7123\u7124\u7125\u7127\u7128\u7129"+
+        "\u712A\u712B\u712C\u712D\u712E\u7132\u7133\u7134"+
+        "\uFFFD\u7135\u7137\u7138\u7139\u713A\u713B\u713C"+
+        "\u713D\u713E\u713F\u7140\u7141\u7142\u7143\u7144"+
+        "\u7146\u7147\u7148\u7149\u714B\u714D\u714F\u7150"+
+        "\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158"+
+        "\u7159\u715A\u715B\u715D\u715F\u7160\u7161\u7162"+
+        "\u7163\u7165\u7169\u716A\u716B\u716C\u716D\u716F"+
+        "\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B"+
+        "\u717C\u717E\u717F\u7180\u7181\u7182\u7183\u7185"+
+        "\u7186\u7187\u7188\u7189\u718B\u718C\u718D\u718E"+
+        "\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A"+
+        "\u719B\u719C\u719D\u719E\u71A1\u71A2\u71A3\u71A4"+
+        "\u71A5\u71A6\u71A7\u71A9\u71AA\u71AB\u71AD\u71AE"+
+        "\u71AF\u71B0\u71B1\u71B2\u71B4\u71B6\u71B7\u71B8"+
+        "\u71BA\u71BB\u71BC\u71BD\u71BE\u71BF\u71C0\u71C1"+
+        "\u71C2\u71C4\u71C5\u71C6\u71C7\u71C8\u71C9\u71CA"+
+        "\u71CB\u71CC\u71CD\u71CF\u71D0\u71D1\u71D2\u71D3";
+
+    private final static String innerIndex2=
+        "\u71D6\u71D7\u71D8\u71D9\u71DA\u71DB\u71DC\u71DD"+
+        "\u71DE\u71DF\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8"+
+        "\u71E9\u71EA\u71EB\u71EC\u71ED\u71EF\u71F0\u71F1"+
+        "\u71F2\u71F3\u71F4\u71F5\u71F6\u71F7\u71F8\u71FA"+
+        "\u71FB\u71FC\u71FD\u71FE\u71FF\u7200\u7201\u7202"+
+        "\u7203\u7204\u7205\u7207\u7208\u7209\u720A\u720B"+
+        "\u720C\u720D\u720E\u720F\u7210\u7211\u7212\u7213"+
+        "\u7214\u7215\u7216\u7217\u7218\u7219\u721A\uFFFD"+
+        "\u721B\u721C\u721E\u721F\u7220\u7221\u7222\u7223"+
+        "\u7224\u7225\u7226\u7227\u7229\u722B\u722D\u722E"+
+        "\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240"+
+        "\u7241\u7242\u7243\u7244\u7245\u7246\u7249\u724A"+
+        "\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255"+
+        "\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264"+
+        "\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271"+
+        "\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D"+
+        "\u7282\u7283\u7285\u7286\u7287\u7288\u7289\u728C"+
+        "\u728E\u7290\u7291\u7293\u7294\u7295\u7296\u7297"+
+        "\u7298\u7299\u729A\u729B\u729C\u729D\u729E\u72A0"+
+        "\u72A1\u72A2\u72A3\u72A4\u72A5\u72A6\u72A7\u72A8"+
+        "\u72A9\u72AA\u72AB\u72AE\u72B1\u72B2\u72B3\u72B5"+
+        "\u72BA\u72BB\u72BC\u72BD\u72BE\u72BF\u72C0\u72C5"+
+        "\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1"+
+        "\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\uE4C6"+
+        "\uE4C7\uE4C8\uE4C9\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE"+
+        "\uE4CF\uE4D0\uE4D1\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6"+
+        "\uE4D7\uE4D8\uE4D9\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE"+
+        "\uE4DF\uE4E0\uE4E1\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6"+
+        "\uE4E7\uE4E8\uE4E9\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE"+
+        "\uE4EF\uE4F0\uE4F1\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6"+
+        "\uE4F7\uE4F8\uE4F9\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE"+
+        "\uE4FF\uE500\uE501\uE502\uE503\uE504\uFFFD\uE505"+
+        "\uE506\uE507\uE508\uE509\uE50A\uE50B\uE50C\uE50D"+
+        "\uE50E\uE50F\uE510\uE511\uE512\uE513\uE514\uE515"+
+        "\uE516\uE517\uE518\uE519\uE51A\uE51B\uE51C\uE51D"+
+        "\uE51E\uE51F\uE520\uE521\uE522\uE523\uE524\uE525"+
+        "\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003"+
+        "\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C"+
+        "\u201D\u3014\u3015\u3008\u3009\u300A\u300B\u300C"+
+        "\u300D\u300E\u300F\u3016\u3017\u3010\u3011\u00B1"+
+        "\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A"+
+        "\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312"+
+        "\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D"+
+        "\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234"+
+        "\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4"+
+        "\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB"+
+        "\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2"+
+        "\u203B\u2192\u2190\u2191\u2193\u3013\uE526\uE527"+
+        "\uE528\uE529\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F"+
+        "\uE530\uE531\uE532\uE533\uE534\uE535\uE536\uE537"+
+        "\uE538\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F"+
+        "\uE540\uE541\uE542\uE543\uE544\uE545\uE546\uE547"+
+        "\uE548\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F"+
+        "\uE550\uE551\uE552\uE553\uE554\uE555\uE556\uE557"+
+        "\uE558\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F"+
+        "\uE560\uE561\uE562\uE563\uE564\uFFFD\uE565\uE566"+
+        "\uE567\uE568\uE569\uE56A\uE56B\uE56C\uE56D\uE56E"+
+        "\uE56F\uE570\uE571\uE572\uE573\uE574\uE575\uE576"+
+        "\uE577\uE578\uE579\uE57A\uE57B\uE57C\uE57D\uE57E"+
+        "\uE57F\uE580\uE581\uE582\uE583\uE584\uE585\u2170"+
+        "\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178"+
+        "\u2179\uE766\uE767\uE768\uE769\uE76A\uE76B\u2488"+
+        "\u2489\u248A\u248B\u248C\u248D\u248E\u248F\u2490"+
+        "\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498"+
+        "\u2499\u249A\u249B\u2474\u2475\u2476\u2477\u2478"+
+        "\u2479\u247A\u247B\u247C\u247D\u247E\u247F\u2480"+
+        "\u2481\u2482\u2483\u2484\u2485\u2486\u2487\u2460"+
+        "\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468"+
+        "\u2469\u20AC\uE76D\u3220\u3221\u3222\u3223\u3224"+
+        "\u3225\u3226\u3227\u3228\u3229\uE76E\uE76F\u2160"+
+        "\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168"+
+        "\u2169\u216A\u216B\uE770\uE771\uE586\uE587\uE588"+
+        "\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F\uE590"+
+        "\uE591\uE592\uE593\uE594\uE595\uE596\uE597\uE598"+
+        "\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F\uE5A0"+
+        "\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7\uE5A8"+
+        "\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF\uE5B0"+
+        "\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7\uE5B8"+
+        "\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF\uE5C0"+
+        "\uE5C1\uE5C2\uE5C3\uE5C4\uFFFD\uE5C5\uE5C6\uE5C7"+
+        "\uE5C8\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF"+
+        "\uE5D0\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7"+
+        "\uE5D8\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF"+
+        "\uE5E0\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uFF01\uFF02"+
+        "\uFF03\uFFE5\uFF05\uFF06\uFF07\uFF08\uFF09\uFF0A"+
+        "\uFF0B\uFF0C\uFF0D\uFF0E\uFF0F\uFF10\uFF11\uFF12"+
+        "\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19\uFF1A"+
+        "\uFF1B\uFF1C\uFF1D\uFF1E\uFF1F\uFF20\uFF21\uFF22"+
+        "\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A"+
+        "\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32"+
+        "\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A"+
+        "\uFF3B\uFF3C\uFF3D\uFF3E\uFF3F\uFF40\uFF41\uFF42"+
+        "\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A"+
+        "\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52"+
+        "\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A"+
+        "\uFF5B\uFF5C\uFF5D\uFFE3\uE5E6\uE5E7\uE5E8\uE5E9"+
+        "\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF\uE5F0\uE5F1"+
+        "\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7\uE5F8\uE5F9"+
+        "\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF\uE600\uE601"+
+        "\uE602\uE603\uE604\uE605\uE606\uE607\uE608\uE609"+
+        "\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F\uE610\uE611"+
+        "\uE612\uE613\uE614\uE615\uE616\uE617\uE618\uE619"+
+        "\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F\uE620\uE621"+
+        "\uE622\uE623\uE624\uFFFD\uE625\uE626\uE627\uE628"+
+        "\uE629\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F\uE630"+
+        "\uE631\uE632\uE633\uE634\uE635\uE636\uE637\uE638"+
+        "\uE639\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F\uE640"+
+        "\uE641\uE642\uE643\uE644\uE645\u3041\u3042\u3043"+
+        "\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B"+
+        "\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053"+
+        "\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B"+
+        "\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063"+
+        "\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B"+
+        "\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073"+
+        "\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B"+
+        "\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083"+
+        "\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B"+
+        "\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093"+
+        "\uE772\uE773\uE774\uE775\uE776\uE777\uE778\uE779"+
+        "\uE77A\uE77B\uE77C\uE646\uE647\uE648\uE649\uE64A"+
+        "\uE64B\uE64C\uE64D\uE64E\uE64F\uE650\uE651\uE652"+
+        "\uE653\uE654\uE655\uE656\uE657\uE658\uE659\uE65A"+
+        "\uE65B\uE65C\uE65D\uE65E\uE65F\uE660\uE661\uE662"+
+        "\uE663\uE664\uE665\uE666\uE667\uE668\uE669\uE66A"+
+        "\uE66B\uE66C\uE66D\uE66E\uE66F\uE670\uE671\uE672"+
+        "\uE673\uE674\uE675\uE676\uE677\uE678\uE679\uE67A"+
+        "\uE67B\uE67C\uE67D\uE67E\uE67F\uE680\uE681\uE682"+
+        "\uE683\uE684\uFFFD\uE685\uE686\uE687\uE688\uE689"+
+        "\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F\uE690\uE691"+
+        "\uE692\uE693\uE694\uE695\uE696\uE697\uE698\uE699"+
+        "\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F\uE6A0\uE6A1"+
+        "\uE6A2\uE6A3\uE6A4\uE6A5\u30A1\u30A2\u30A3\u30A4"+
+        "\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC"+
+        "\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4"+
+        "\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC"+
+        "\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4"+
+        "\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC"+
+        "\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4"+
+        "\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC"+
+        "\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4"+
+        "\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC"+
+        "\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4"+
+        "\u30F5\u30F6\uE77D\uE77E\uE77F\uE780\uE781\uE782"+
+        "\uE783\uE784\uE6A6\uE6A7\uE6A8\uE6A9\uE6AA\uE6AB"+
+        "\uE6AC\uE6AD\uE6AE\uE6AF\uE6B0\uE6B1\uE6B2\uE6B3"+
+        "\uE6B4\uE6B5\uE6B6\uE6B7\uE6B8\uE6B9\uE6BA\uE6BB"+
+        "\uE6BC\uE6BD\uE6BE\uE6BF\uE6C0\uE6C1\uE6C2\uE6C3"+
+        "\uE6C4\uE6C5\uE6C6\uE6C7\uE6C8\uE6C9\uE6CA\uE6CB"+
+        "\uE6CC\uE6CD\uE6CE\uE6CF\uE6D0\uE6D1\uE6D2\uE6D3"+
+        "\uE6D4\uE6D5\uE6D6\uE6D7\uE6D8\uE6D9\uE6DA\uE6DB"+
+        "\uE6DC\uE6DD\uE6DE\uE6DF\uE6E0\uE6E1\uE6E2\uE6E3"+
+        "\uE6E4\uFFFD\uE6E5\uE6E6\uE6E7\uE6E8\uE6E9\uE6EA"+
+        "\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF\uE6F0\uE6F1\uE6F2"+
+        "\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7\uE6F8\uE6F9\uE6FA"+
+        "\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF\uE700\uE701\uE702"+
+        "\uE703\uE704\uE705\u0391\u0392\u0393\u0394\u0395"+
+        "\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D"+
+        "\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6"+
+        "\u03A7\u03A8\u03A9\uE785\uE786\uE787\uE788\uE789"+
+        "\uE78A\uE78B\uE78C\u03B1\u03B2\u03B3\u03B4\u03B5"+
+        "\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD"+
+        "\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6"+
+        "\u03C7\u03C8\u03C9\uE78D\uE78E\uE78F\uE790\uE791"+
+        "\uE792\uE793\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40"+
+        "\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\uE794\uE795"+
+        "\uFE3B\uFE3C\uFE37\uFE38\uFE31\uE796\uFE33\uFE34"+
+        "\uE797\uE798\uE799\uE79A\uE79B\uE79C\uE79D\uE79E"+
+        "\uE79F\uE706\uE707\uE708\uE709\uE70A\uE70B\uE70C"+
+        "\uE70D\uE70E\uE70F\uE710\uE711\uE712\uE713\uE714"+
+        "\uE715\uE716\uE717\uE718\uE719\uE71A\uE71B\uE71C"+
+        "\uE71D\uE71E\uE71F\uE720\uE721\uE722\uE723\uE724"+
+        "\uE725\uE726\uE727\uE728\uE729\uE72A\uE72B\uE72C"+
+        "\uE72D\uE72E\uE72F\uE730\uE731\uE732\uE733\uE734"+
+        "\uE735\uE736\uE737\uE738\uE739\uE73A\uE73B\uE73C"+
+        "\uE73D\uE73E\uE73F\uE740\uE741\uE742\uE743\uE744"+
+        "\uFFFD\uE745\uE746\uE747\uE748\uE749\uE74A\uE74B"+
+        "\uE74C\uE74D\uE74E\uE74F\uE750\uE751\uE752\uE753"+
+        "\uE754\uE755\uE756\uE757\uE758\uE759\uE75A\uE75B"+
+        "\uE75C\uE75D\uE75E\uE75F\uE760\uE761\uE762\uE763"+
+        "\uE764\uE765\u0410\u0411\u0412\u0413\u0414\u0415"+
+        "\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C"+
+        "\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424"+
+        "\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"+
+        "\u042D\u042E\u042F\uE7A0\uE7A1\uE7A2\uE7A3\uE7A4"+
+        "\uE7A5\uE7A6\uE7A7\uE7A8\uE7A9\uE7AA\uE7AB\uE7AC"+
+        "\uE7AD\uE7AE\u0430\u0431\u0432\u0433\u0434\u0435"+
+        "\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C"+
+        "\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444"+
+        "\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C"+
+        "\u044D\u044E\u044F\uE7AF\uE7B0\uE7B1\uE7B2\uE7B3"+
+        "\uE7B4\uE7B5\uE7B6\uE7B7\uE7B8\uE7B9\uE7BA\uE7BB"+
+        "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105"+
+        "\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223"+
+        "\u2252\u2266\u2267\u22BF\u2550\u2551\u2552\u2553"+
+        "\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B"+
+        "\u255C\u255D\u255E\u255F\u2560\u2561\u2562\u2563"+
+        "\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B"+
+        "\u256C\u256D\u256E\u256F\u2570\u2571\u2572\u2573"+
+        "\u2581\u2582\u2583\u2584\u2585\u2586\u2587\uFFFD"+
+        "\u2588\u2589\u258A\u258B\u258C\u258D\u258E\u258F"+
+        "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4"+
+        "\u25E5\u2609\u2295\u3012\u301D\u301E\uE7BC\uE7BD"+
+        "\uE7BE\uE7BF\uE7C0\uE7C1\uE7C2\uE7C3\uE7C4\uE7C5"+
+        "\uE7C6\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B"+
+        "\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2"+
+        "\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA"+
+        "\u01DC\u00FC\u00EA\u0251\uE7C7\u0144\u0148\u01F9"+
+        "\u0261\uE7C9\uE7CA\uE7CB\uE7CC\u3105\u3106\u3107"+
+        "\u3108\u3109\u310A\u310B\u310C\u310D\u310E\u310F"+
+        "\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117"+
+        "\u3118\u3119\u311A\u311B\u311C\u311D\u311E\u311F"+
+        "\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127"+
+        "\u3128\u3129\uE7CD\uE7CE\uE7CF\uE7D0\uE7D1\uE7D2"+
+        "\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7\uE7D8\uE7D9\uE7DA"+
+        "\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF\uE7E0\uE7E1\u3021"+
+        "\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029"+
+        "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4"+
+        "\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\uE7E2"+
+        "\u2121\u3231\uE7E3\u2010\uE7E4\uE7E5\uE7E6\u30FC"+
+        "\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49"+
+        "\uFE4A\uFE4B\uFE4C\uFE4D\uFE4E\uFE4F\uFE50\uFE51"+
+        "\uFE52\uFE54\uFE55\uFE56\uFE57\uFE59\uFE5A\uFE5B"+
+        "\uFE5C\uFE5D\uFE5E\uFE5F\uFE60\uFE61\uFFFD\uFE62"+
+        "\uFE63\uFE64\uFE65\uFE66\uFE68\uFE69\uFE6A\uFE6B"+
+        "\u303E\u2FF0\u2FF1\u2FF2\u2FF3\u2FF4\u2FF5\u2FF6"+
+        "\u2FF7\u2FF8\u2FF9\u2FFA\u2FFB\u3007\uE7F4\uE7F5"+
+        "\uE7F6\uE7F7\uE7F8\uE7F9\uE7FA\uE7FB\uE7FC\uE7FD"+
+        "\uE7FE\uE7FF\uE800\u2500\u2501\u2502\u2503\u2504"+
+        "\u2505\u2506\u2507\u2508\u2509\u250A\u250B\u250C"+
+        "\u250D\u250E\u250F\u2510\u2511\u2512\u2513\u2514"+
+        "\u2515\u2516\u2517\u2518\u2519\u251A\u251B\u251C"+
+        "\u251D\u251E\u251F\u2520\u2521\u2522\u2523\u2524"+
+        "\u2525\u2526\u2527\u2528\u2529\u252A\u252B\u252C"+
+        "\u252D\u252E\u252F\u2530\u2531\u2532\u2533\u2534"+
+        "\u2535\u2536\u2537\u2538\u2539\u253A\u253B\u253C"+
+        "\u253D\u253E\u253F\u2540\u2541\u2542\u2543\u2544"+
+        "\u2545\u2546\u2547\u2548\u2549\u254A\u254B\uE801"+
+        "\uE802\uE803\uE804\uE805\uE806\uE807\uE808\uE809"+
+        "\uE80A\uE80B\uE80C\uE80D\uE80E\uE80F\u72DC\u72DD"+
+        "\u72DF\u72E2\u72E3\u72E4\u72E5\u72E6\u72E7\u72EA"+
+        "\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300"+
+        "\u7302\u7304\u7305\u7306\u7307\u7308\u7309\u730B"+
+        "\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318"+
+        "\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327"+
+        "\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336"+
+        "\u733A\u733B\u733C\u733D\u7340\u7341\u7342\u7343"+
+        "\u7344\u7345\u7346\u7347\u7348\uFFFD\u7349\u734A"+
+        "\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355"+
+        "\u7356\u7358\u7359\u735A\u735B\u735C\u735D\u735E"+
+        "\u735F\u7361\u7362\u7363\u7364\u7365\u7366\u7367"+
+        "\u7368\u7369\u736A\u736B\u736E\u7370\u7371\uE000"+
+        "\uE001\uE002\uE003\uE004\uE005\uE006\uE007\uE008"+
+        "\uE009\uE00A\uE00B\uE00C\uE00D\uE00E\uE00F\uE010"+
+        "\uE011\uE012\uE013\uE014\uE015\uE016\uE017\uE018"+
+        "\uE019\uE01A\uE01B\uE01C\uE01D\uE01E\uE01F\uE020"+
+        "\uE021\uE022\uE023\uE024\uE025\uE026\uE027\uE028"+
+        "\uE029\uE02A\uE02B\uE02C\uE02D\uE02E\uE02F\uE030"+
+        "\uE031\uE032\uE033\uE034\uE035\uE036\uE037\uE038"+
+        "\uE039\uE03A\uE03B\uE03C\uE03D\uE03E\uE03F\uE040"+
+        "\uE041\uE042\uE043\uE044\uE045\uE046\uE047\uE048"+
+        "\uE049\uE04A\uE04B\uE04C\uE04D\uE04E\uE04F\uE050"+
+        "\uE051\uE052\uE053\uE054\uE055\uE056\uE057\uE058"+
+        "\uE059\uE05A\uE05B\uE05C\uE05D\u7372\u7373\u7374"+
+        "\u7375\u7376\u7377\u7378\u7379\u737A\u737B\u737C"+
+        "\u737D\u737F\u7380\u7381\u7382\u7383\u7385\u7386"+
+        "\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393"+
+        "\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D"+
+        "\u739E\u73A0\u73A1\u73A3\u73A4\u73A5\u73A6\u73A7"+
+        "\u73A8\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6"+
+        "\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3"+
+        "\u73C4\u73C5\u73C6\u73C7\uFFFD\u73CB\u73CC\u73CE"+
+        "\u73D2\u73D3\u73D4\u73D5\u73D6\u73D7\u73D8\u73DA"+
+        "\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4"+
+        "\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0"+
+        "\u73F1\u73F3\u73F4\u73F5\u73F6\u73F7\uE05E\uE05F"+
+        "\uE060\uE061\uE062\uE063\uE064\uE065\uE066\uE067"+
+        "\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E\uE06F"+
+        "\uE070\uE071\uE072\uE073\uE074\uE075\uE076\uE077"+
+        "\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E\uE07F"+
+        "\uE080\uE081\uE082\uE083\uE084\uE085\uE086\uE087"+
+        "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uE08F"+
+        "\uE090\uE091\uE092\uE093\uE094\uE095\uE096\uE097"+
+        "\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E\uE09F"+
+        "\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6\uE0A7"+
+        "\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE\uE0AF"+
+        "\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6\uE0B7"+
+        "\uE0B8\uE0B9\uE0BA\uE0BB\u73F8\u73F9\u73FA\u73FB"+
+        "\u73FC\u73FD\u73FE\u73FF\u7400\u7401\u7402\u7404"+
+        "\u7407\u7408\u740B\u740C\u740D\u740E\u7411\u7412"+
+        "\u7413\u7414\u7415\u7416\u7417\u7418\u7419\u741C"+
+        "\u741D\u741E\u741F\u7420\u7421\u7423\u7424\u7427"+
+        "\u7429\u742B\u742D\u742F\u7431\u7432\u7437\u7438"+
+        "\u7439\u743A\u743B\u743D\u743E\u743F\u7440\u7442"+
+        "\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744A"+
+        "\u744B\u744C\u744D\uFFFD\u744E\u744F\u7450\u7451"+
+        "\u7452\u7453\u7454\u7456\u7458\u745D\u7460\u7461"+
+        "\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469"+
+        "\u746A\u746B\u746C\u746E\u746F\u7471\u7472\u7473"+
+        "\u7474\u7475\u7478\u7479\u747A\uE0BC\uE0BD\uE0BE"+
+        "\uE0BF\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5\uE0C6"+
+        "\uE0C7\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD\uE0CE"+
+        "\uE0CF\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5\uE0D6"+
+        "\uE0D7\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD\uE0DE"+
+        "\uE0DF\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5\uE0E6"+
+        "\uE0E7\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED\uE0EE"+
+        "\uE0EF\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5\uE0F6"+
+        "\uE0F7\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD\uE0FE"+
+        "\uE0FF\uE100\uE101\uE102\uE103\uE104\uE105\uE106"+
+        "\uE107\uE108\uE109\uE10A\uE10B\uE10C\uE10D\uE10E"+
+        "\uE10F\uE110\uE111\uE112\uE113\uE114\uE115\uE116"+
+        "\uE117\uE118\uE119\u747B\u747C\u747D\u747F\u7482"+
+        "\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D"+
+        "\u748F\u7491\u7492\u7493\u7494\u7495\u7496\u7497"+
+        "\u7498\u7499\u749A\u749B\u749D\u749F\u74A0\u74A1"+
+        "\u74A2\u74A3\u74A4\u74A5\u74A6\u74AA\u74AB\u74AC"+
+        "\u74AD\u74AE\u74AF\u74B0\u74B1\u74B2\u74B3\u74B4"+
+        "\u74B5\u74B6\u74B7\u74B8\u74B9\u74BB\u74BC\u74BD"+
+        "\u74BE\u74BF\u74C0\u74C1\u74C2\u74C3\u74C4\u74C5"+
+        "\u74C6\u74C7\uFFFD\u74C8\u74C9\u74CA\u74CB\u74CC"+
+        "\u74CD\u74CE\u74CF\u74D0\u74D1\u74D3\u74D4\u74D5"+
+        "\u74D6\u74D7\u74D8\u74D9\u74DA\u74DB\u74DD\u74DF"+
+        "\u74E1\u74E5\u74E7\u74E8\u74E9\u74EA\u74EB\u74EC"+
+        "\u74ED\u74F0\u74F1\u74F2\uE11A\uE11B\uE11C\uE11D"+
+        "\uE11E\uE11F\uE120\uE121\uE122\uE123\uE124\uE125"+
+        "\uE126\uE127\uE128\uE129\uE12A\uE12B\uE12C\uE12D"+
+        "\uE12E\uE12F\uE130\uE131\uE132\uE133\uE134\uE135"+
+        "\uE136\uE137\uE138\uE139\uE13A\uE13B\uE13C\uE13D"+
+        "\uE13E\uE13F\uE140\uE141\uE142\uE143\uE144\uE145"+
+        "\uE146\uE147\uE148\uE149\uE14A\uE14B\uE14C\uE14D"+
+        "\uE14E\uE14F\uE150\uE151\uE152\uE153\uE154\uE155"+
+        "\uE156\uE157\uE158\uE159\uE15A\uE15B\uE15C\uE15D"+
+        "\uE15E\uE15F\uE160\uE161\uE162\uE163\uE164\uE165"+
+        "\uE166\uE167\uE168\uE169\uE16A\uE16B\uE16C\uE16D"+
+        "\uE16E\uE16F\uE170\uE171\uE172\uE173\uE174\uE175"+
+        "\uE176\uE177\u74F3\u74F5\u74F8\u74F9\u74FA\u74FB"+
+        "\u74FC\u74FD\u74FE\u7500\u7501\u7502\u7503\u7505"+
+        "\u7506\u7507\u7508\u7509\u750A\u750B\u750C\u750E"+
+        "\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D"+
+        "\u751E\u7520\u7521\u7522\u7523\u7524\u7526\u7527"+
+        "\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F"+
+        "\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A"+
+        "\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557"+
+        "\u7558\uFFFD\u755D\u755E\u755F\u7560\u7561\u7562"+
+        "\u7563\u7564\u7567\u7568\u7569\u756B\u756C\u756D"+
+        "\u756E\u756F\u7570\u7571\u7573\u7575\u7576\u7577"+
+        "\u757A\u757B\u757C\u757D\u757E\u7580\u7581\u7582"+
+        "\u7584\u7585\u7587\uE178\uE179\uE17A\uE17B\uE17C"+
+        "\uE17D\uE17E\uE17F\uE180\uE181\uE182\uE183\uE184"+
+        "\uE185\uE186\uE187\uE188\uE189\uE18A\uE18B\uE18C"+
+        "\uE18D\uE18E\uE18F\uE190\uE191\uE192\uE193\uE194"+
+        "\uE195\uE196\uE197\uE198\uE199\uE19A\uE19B\uE19C"+
+        "\uE19D\uE19E\uE19F\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4"+
+        "\uE1A5\uE1A6\uE1A7\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC"+
+        "\uE1AD\uE1AE\uE1AF\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4"+
+        "\uE1B5\uE1B6\uE1B7\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC"+
+        "\uE1BD\uE1BE\uE1BF\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4"+
+        "\uE1C5\uE1C6\uE1C7\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC"+
+        "\uE1CD\uE1CE\uE1CF\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4"+
+        "\uE1D5\u7588\u7589\u758A\u758C\u758D\u758E\u7590"+
+        "\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6"+
+        "\u75A7\u75A8\u75A9\u75AA\u75AD\u75B6\u75B7\u75BA"+
+        "\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE"+
+        "\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC"+
+        "\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED"+
+        "\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8"+
+        "\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"+
+        "\uFFFD\u7608\u7609\u760B\u760D\u760E\u760F\u7611"+
+        "\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E"+
+        "\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631"+
+        "\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641"+
+        "\u7642\u7644\uE1D6\uE1D7\uE1D8\uE1D9\uE1DA\uE1DB"+
+        "\uE1DC\uE1DD\uE1DE\uE1DF\uE1E0\uE1E1\uE1E2\uE1E3"+
+        "\uE1E4\uE1E5\uE1E6\uE1E7\uE1E8\uE1E9\uE1EA\uE1EB"+
+        "\uE1EC\uE1ED\uE1EE\uE1EF\uE1F0\uE1F1\uE1F2\uE1F3"+
+        "\uE1F4\uE1F5\uE1F6\uE1F7\uE1F8\uE1F9\uE1FA\uE1FB"+
+        "\uE1FC\uE1FD\uE1FE\uE1FF\uE200\uE201\uE202\uE203"+
+        "\uE204\uE205\uE206\uE207\uE208\uE209\uE20A\uE20B"+
+        "\uE20C\uE20D\uE20E\uE20F\uE210\uE211\uE212\uE213"+
+        "\uE214\uE215\uE216\uE217\uE218\uE219\uE21A\uE21B"+
+        "\uE21C\uE21D\uE21E\uE21F\uE220\uE221\uE222\uE223"+
+        "\uE224\uE225\uE226\uE227\uE228\uE229\uE22A\uE22B"+
+        "\uE22C\uE22D\uE22E\uE22F\uE230\uE231\uE232\uE233";
+
+    private final static String innerIndex3=
+        "\u7645\u7646\u7647\u7648\u7649\u764A\u764B\u764E"+
+        "\u764F\u7650\u7651\u7652\u7653\u7655\u7657\u7658"+
+        "\u7659\u765A\u765B\u765D\u765F\u7660\u7661\u7662"+
+        "\u7664\u7665\u7666\u7667\u7668\u7669\u766A\u766C"+
+        "\u766D\u766E\u7670\u7671\u7672\u7673\u7674\u7675"+
+        "\u7676\u7677\u7679\u767A\u767C\u767F\u7680\u7681"+
+        "\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690"+
+        "\u7692\u7694\u7695\u7697\u7698\u769A\u769B\uFFFD"+
+        "\u769C\u769D\u769E\u769F\u76A0\u76A1\u76A2\u76A3"+
+        "\u76A5\u76A6\u76A7\u76A8\u76A9\u76AA\u76AB\u76AC"+
+        "\u76AD\u76AF\u76B0\u76B3\u76B5\u76B6\u76B7\u76B8"+
+        "\u76B9\u76BA\u76BB\u76BC\u76BD\u76BE\u76C0\u76C1"+
+        "\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0"+
+        "\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698"+
+        "\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA"+
+        "\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1"+
+        "\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252"+
+        "\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB"+
+        "\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D"+
+        "\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591"+
+        "\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E"+
+        "\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E"+
+        "\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551"+
+        "\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\u76C4"+
+        "\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA"+
+        "\u76DC\u76DD\u76DE\u76E0\u76E1\u76E2\u76E3\u76E4"+
+        "\u76E6\u76E7\u76E8\u76E9\u76EA\u76EB\u76EC\u76ED"+
+        "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD"+
+        "\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C"+
+        "\u770E\u770F\u7710\u7711\u7712\u7713\u7714\u7715"+
+        "\u7716\u7717\u7718\u771B\u771C\u771D\u771E\u7721"+
+        "\u7723\u7724\u7725\u7727\u772A\u772B\uFFFD\u772C"+
+        "\u772E\u7730\u7731\u7732\u7733\u7734\u7739\u773B"+
+        "\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748"+
+        "\u7749\u774A\u774B\u774C\u774D\u774E\u774F\u7752"+
+        "\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775C"+
+        "\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5"+
+        "\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351"+
+        "\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907"+
+        "\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29"+
+        "\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4"+
+        "\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9"+
+        "\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5"+
+        "\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16"+
+        "\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB"+
+        "\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B"+
+        "\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175"+
+        "\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\u775D\u775E"+
+        "\u775F\u7760\u7764\u7767\u7769\u776A\u776D\u776E"+
+        "\u776F\u7770\u7771\u7772\u7773\u7774\u7775\u7776"+
+        "\u7777\u7778\u777A\u777B\u777C\u7781\u7782\u7783"+
+        "\u7786\u7787\u7788\u7789\u778A\u778B\u778F\u7790"+
+        "\u7793\u7794\u7795\u7796\u7797\u7798\u7799\u779A"+
+        "\u779B\u779C\u779D\u779E\u77A1\u77A3\u77A4\u77A6"+
+        "\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4"+
+        "\u77B6\u77B7\u77B8\u77B9\u77BA\uFFFD\u77BC\u77BE"+
+        "\u77C0\u77C1\u77C2\u77C3\u77C4\u77C5\u77C6\u77C7"+
+        "\u77C8\u77C9\u77CA\u77CB\u77CC\u77CE\u77CF\u77D0"+
+        "\u77D1\u77D2\u77D3\u77D4\u77D5\u77D6\u77D8\u77D9"+
+        "\u77DA\u77DD\u77DE\u77DF\u77E0\u77E1\u77E4\u75C5"+
+        "\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A"+
+        "\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116"+
+        "\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865"+
+        "\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6"+
+        "\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7"+
+        "\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED"+
+        "\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD"+
+        "\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C"+
+        "\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5"+
+        "\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4"+
+        "\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2"+
+        "\u4EA7\u9610\u98A4\u660C\u7316\u77E6\u77E8\u77EA"+
+        "\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9"+
+        "\u77FA\u77FB\u77FC\u7803\u7804\u7805\u7806\u7807"+
+        "\u7808\u780A\u780B\u780E\u780F\u7810\u7813\u7815"+
+        "\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828"+
+        "\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835"+
+        "\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846"+
+        "\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853"+
+        "\u7854\u7858\u7859\u785A\uFFFD\u785B\u785C\u785E"+
+        "\u785F\u7860\u7861\u7862\u7863\u7864\u7865\u7866"+
+        "\u7867\u7868\u7869\u786F\u7870\u7871\u7872\u7873"+
+        "\u7874\u7875\u7876\u7878\u7879\u787A\u787B\u787D"+
+        "\u787E\u787F\u7880\u7881\u7882\u7883\u573A\u5C1D"+
+        "\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531"+
+        "\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2"+
+        "\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88"+
+        "\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648"+
+        "\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448"+
+        "\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B"+
+        "\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B"+
+        "\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5"+
+        "\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C"+
+        "\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785"+
+        "\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504"+
+        "\u96CF\u6EC1\u9664\u695A\u7884\u7885\u7886\u7888"+
+        "\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896"+
+        "\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8"+
+        "\u78A9\u78AA\u78AB\u78AC\u78AD\u78AE\u78AF\u78B5"+
+        "\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF"+
+        "\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC"+
+        "\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7"+
+        "\u78D8\u78DA\u78DB\u78DC\u78DD\u78DE\u78DF\u78E0"+
+        "\u78E1\u78E2\u78E3\uFFFD\u78E4\u78E5\u78E6\u78E7"+
+        "\u78E9\u78EA\u78EB\u78ED\u78EE\u78EF\u78F0\u78F1"+
+        "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\u78FC\u78FD"+
+        "\u78FE\u78FF\u7900\u7902\u7903\u7904\u7906\u7907"+
+        "\u7908\u7909\u790A\u790B\u790C\u7840\u50A8\u77D7"+
+        "\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20"+
+        "\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF"+
+        "\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F"+
+        "\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5"+
+        "\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64"+
+        "\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE"+
+        "\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1"+
+        "\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC"+
+        "\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA"+
+        "\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927"+
+        "\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37"+
+        "\u888B\u5F85\u902E\u790D\u790E\u790F\u7910\u7911"+
+        "\u7912\u7914\u7915\u7916\u7917\u7918\u7919\u791A"+
+        "\u791B\u791C\u791D\u791F\u7920\u7921\u7922\u7923"+
+        "\u7925\u7926\u7927\u7928\u7929\u792A\u792B\u792C"+
+        "\u792D\u792E\u792F\u7930\u7931\u7932\u7933\u7935"+
+        "\u7936\u7937\u7938\u7939\u793D\u793F\u7942\u7943"+
+        "\u7944\u7945\u7947\u794A\u794B\u794C\u794D\u794E"+
+        "\u794F\u7950\u7951\u7952\u7954\u7955\u7958\u7959"+
+        "\u7961\u7963\uFFFD\u7964\u7966\u7969\u796A\u796B"+
+        "\u796C\u796E\u7970\u7971\u7972\u7973\u7974\u7975"+
+        "\u7976\u7979\u797B\u797C\u797D\u797E\u797F\u7982"+
+        "\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D"+
+        "\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39"+
+        "\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE"+
+        "\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361"+
+        "\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC"+
+        "\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684"+
+        "\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824"+
+        "\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF"+
+        "\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F"+
+        "\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178"+
+        "\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960"+
+        "\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389"+
+        "\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED"+
+        "\u8C0D\u53E0\u7993\u7994\u7995\u7996\u7997\u7998"+
+        "\u7999\u799B\u799C\u799D\u799E\u799F\u79A0\u79A1"+
+        "\u79A2\u79A3\u79A4\u79A5\u79A6\u79A8\u79A9\u79AA"+
+        "\u79AB\u79AC\u79AD\u79AE\u79AF\u79B0\u79B1\u79B2"+
+        "\u79B4\u79B5\u79B6\u79B7\u79B8\u79BC\u79BF\u79C2"+
+        "\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF"+
+        "\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\u79DA\u79DB"+
+        "\u79DC\u79DD\u79DE\u79E0\u79E1\u79E2\u79E5\u79E8"+
+        "\u79EA\uFFFD\u79EC\u79EE\u79F1\u79F2\u79F3\u79F4"+
+        "\u79F5\u79F6\u79F7\u79F9\u79FA\u79FC\u79FE\u79FF"+
+        "\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C"+
+        "\u7A0F\u7A10\u7A11\u7A12\u7A13\u7A15\u7A16\u7A18"+
+        "\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876"+
+        "\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463"+
+        "\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C"+
+        "\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763"+
+        "\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C"+
+        "\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B"+
+        "\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9"+
+        "\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041"+
+        "\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA"+
+        "\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4"+
+        "\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102"+
+        "\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31"+
+        "\u4E8C\u7A1D\u7A1F\u7A21\u7A22\u7A24\u7A25\u7A26"+
+        "\u7A27\u7A28\u7A29\u7A2A\u7A2B\u7A2C\u7A2D\u7A2E"+
+        "\u7A2F\u7A30\u7A31\u7A32\u7A34\u7A35\u7A36\u7A38"+
+        "\u7A3A\u7A3E\u7A40\u7A41\u7A42\u7A43\u7A44\u7A45"+
+        "\u7A47\u7A48\u7A49\u7A4A\u7A4B\u7A4C\u7A4D\u7A4E"+
+        "\u7A4F\u7A50\u7A52\u7A53\u7A54\u7A55\u7A56\u7A58"+
+        "\u7A59\u7A5A\u7A5B\u7A5C\u7A5D\u7A5E\u7A5F\u7A60"+
+        "\u7A61\u7A62\u7A63\u7A64\u7A65\u7A66\u7A67\u7A68"+
+        "\uFFFD\u7A69\u7A6A\u7A6B\u7A6C\u7A6D\u7A6E\u7A6F"+
+        "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E"+
+        "\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E"+
+        "\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E"+
+        "\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F"+
+        "\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A"+
+        "\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303"+
+        "\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA"+
+        "\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2"+
+        "\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA"+
+        "\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206"+
+        "\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF"+
+        "\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B"+
+        "\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949"+
+        "\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276"+
+        "\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"+
+        "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\u7AAF"+
+        "\u7AB0\u7AB1\u7AB2\u7AB4\u7AB5\u7AB6\u7AB7\u7AB8"+
+        "\u7AB9\u7ABA\u7ABB\u7ABC\u7ABD\u7ABE\u7AC0\u7AC1"+
+        "\u7AC2\u7AC3\u7AC4\u7AC5\u7AC6\u7AC7\u7AC8\u7AC9"+
+        "\u7ACA\u7ACC\u7ACD\u7ACE\u7ACF\u7AD0\u7AD1\u7AD2"+
+        "\u7AD3\u7AD4\u7AD5\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC"+
+        "\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\u7AE8\u7AE9\u7AEA"+
+        "\u7AEB\u7AEC\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\uFFFD"+
+        "\u7AF4\u7AF5\u7AF6\u7AF7\u7AF8\u7AFB\u7AFC\u7AFE"+
+        "\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D"+
+        "\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A"+
+        "\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29"+
+        "\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A"+
+        "\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150"+
+        "\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C"+
+        "\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A"+
+        "\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6"+
+        "\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76"+
+        "\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38"+
+        "\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8"+
+        "\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5"+
+        "\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769"+
+        "\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404"+
+        "\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\u7B2F"+
+        "\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B"+
+        "\u7B3D\u7B3F\u7B40\u7B41\u7B42\u7B43\u7B44\u7B46"+
+        "\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59"+
+        "\u7B5C\u7B5E\u7B5F\u7B61\u7B63\u7B64\u7B65\u7B66"+
+        "\u7B67\u7B68\u7B69\u7B6A\u7B6B\u7B6C\u7B6D\u7B6F"+
+        "\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D"+
+        "\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\u7B87\u7B88"+
+        "\u7B89\u7B8A\u7B8B\u7B8C\u7B8E\u7B8F\uFFFD\u7B91"+
+        "\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E"+
+        "\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0"+
+        "\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\u7BBA\u7BBB"+
+        "\u7BBC\u7BBD\u7BBE\u7BBF\u7BC0\u7BC2\u7BC3\u7BC4"+
+        "\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A"+
+        "\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1"+
+        "\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2"+
+        "\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30"+
+        "\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37"+
+        "\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250"+
+        "\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173"+
+        "\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C"+
+        "\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845"+
+        "\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842"+
+        "\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505"+
+        "\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\u7BC5\u7BC8"+
+        "\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2"+
+        "\u7BD4\u7BD5\u7BD6\u7BD7\u7BD8\u7BDB\u7BDC\u7BDE"+
+        "\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9"+
+        "\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\u7BF3\u7BF4"+
+        "\u7BF5\u7BF6\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF"+
+        "\u7C00\u7C01\u7C02\u7C03\u7C04\u7C05\u7C06\u7C08"+
+        "\u7C09\u7C0A\u7C0D\u7C0E\u7C10\u7C11\u7C12\u7C13"+
+        "\u7C14\u7C15\u7C17\u7C18\u7C19\uFFFD\u7C1A\u7C1B"+
+        "\u7C1C\u7C1D\u7C1E\u7C20\u7C21\u7C22\u7C23\u7C24"+
+        "\u7C25\u7C28\u7C29\u7C2B\u7C2C\u7C2D\u7C2E\u7C2F"+
+        "\u7C30\u7C31\u7C32\u7C33\u7C34\u7C35\u7C36\u7C37"+
+        "\u7C39\u7C3A\u7C3B\u7C3C\u7C3D\u7C3E\u7C42\u9AB8"+
+        "\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8"+
+        "\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55"+
+        "\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57"+
+        "\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB"+
+        "\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377"+
+        "\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89"+
+        "\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F"+
+        "\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A"+
+        "\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A"+
+        "\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A"+
+        "\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B"+
+        "\u80E1\u8774\u72D0\u7CCA\u6E56\u7C43\u7C44\u7C45"+
+        "\u7C46\u7C47\u7C48\u7C49\u7C4A\u7C4B\u7C4C\u7C4E"+
+        "\u7C4F\u7C50\u7C51\u7C52\u7C53\u7C54\u7C55\u7C56"+
+        "\u7C57\u7C58\u7C59\u7C5A\u7C5B\u7C5C\u7C5D\u7C5E"+
+        "\u7C5F\u7C60\u7C61\u7C62\u7C63\u7C64\u7C65\u7C66"+
+        "\u7C67\u7C68\u7C69\u7C6A\u7C6B\u7C6C\u7C6D\u7C6E"+
+        "\u7C6F\u7C70\u7C71\u7C72\u7C75\u7C76\u7C77\u7C78"+
+        "\u7C79\u7C7A\u7C7E\u7C7F\u7C80\u7C81\u7C82\u7C83"+
+        "\u7C84\u7C85\u7C86\u7C87\uFFFD\u7C88\u7C8A\u7C8B"+
+        "\u7C8C\u7C8D\u7C8E\u7C8F\u7C90\u7C93\u7C94\u7C96"+
+        "\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7"+
+        "\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4"+
+        "\u7CB5\u7CB6\u7CB7\u7CB8\u7CBA\u7CBB\u5F27\u864E"+
+        "\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E"+
+        "\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A"+
+        "\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13"+
+        "\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6"+
+        "\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687"+
+        "\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070"+
+        "\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094"+
+        "\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9"+
+        "\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42"+
+        "\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216"+
+        "\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A"+
+        "\u7578\u7A3D\u79EF\u7B95\u7CBF\u7CC0\u7CC2\u7CC3"+
+        "\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\u7CCF\u7CD0\u7CD1"+
+        "\u7CD2\u7CD3\u7CD4\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE"+
+        "\u7CE1\u7CE2\u7CE3\u7CE4\u7CE5\u7CE6\u7CE7\u7CE9"+
+        "\u7CEA\u7CEB\u7CEC\u7CED\u7CEE\u7CF0\u7CF1\u7CF2"+
+        "\u7CF3\u7CF4\u7CF5\u7CF6\u7CF7\u7CF9\u7CFA\u7CFC"+
+        "\u7CFD\u7CFE\u7CFF\u7D00\u7D01\u7D02\u7D03\u7D04"+
+        "\u7D05\u7D06\u7D07\u7D08\u7D09\u7D0B\u7D0C\u7D0D"+
+        "\u7D0E\u7D0F\u7D10\uFFFD\u7D11\u7D12\u7D13\u7D14"+
+        "\u7D15\u7D16\u7D17\u7D18\u7D19\u7D1A\u7D1B\u7D1C"+
+        "\u7D1D\u7D1E\u7D1F\u7D21\u7D23\u7D24\u7D25\u7D26"+
+        "\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\u7D31"+
+        "\u7D32\u7D33\u7D34\u7D35\u7D36\u808C\u9965\u8FF9"+
+        "\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781"+
+        "\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72"+
+        "\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF"+
+        "\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E"+
+        "\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993"+
+        "\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0"+
+        "\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7"+
+        "\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A"+
+        "\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327"+
+        "\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED"+
+        "\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1"+
+        "\u952E\u7BAD\u4EF6\u7D37\u7D38\u7D39\u7D3A\u7D3B"+
+        "\u7D3C\u7D3D\u7D3E\u7D3F\u7D40\u7D41\u7D42\u7D43"+
+        "\u7D44\u7D45\u7D46\u7D47\u7D48\u7D49\u7D4A\u7D4B"+
+        "\u7D4C\u7D4D\u7D4E\u7D4F\u7D50\u7D51\u7D52\u7D53"+
+        "\u7D54\u7D55\u7D56\u7D57\u7D58\u7D59\u7D5A\u7D5B"+
+        "\u7D5C\u7D5D\u7D5E\u7D5F\u7D60\u7D61\u7D62\u7D63"+
+        "\u7D64\u7D65\u7D66\u7D67\u7D68\u7D69\u7D6A\u7D6B"+
+        "\u7D6C\u7D6D\u7D6F\u7D70\u7D71\u7D72\u7D73\u7D74"+
+        "\u7D75\u7D76\uFFFD\u7D78\u7D79\u7D7A\u7D7B\u7D7C"+
+        "\u7D7D\u7D7E\u7D7F\u7D80\u7D81\u7D82\u7D83\u7D84"+
+        "\u7D85\u7D86\u7D87\u7D88\u7D89\u7D8A\u7D8B\u7D8C"+
+        "\u7D8D\u7D8E\u7D8F\u7D90\u7D91\u7D92\u7D93\u7D94"+
+        "\u7D95\u7D96\u7D97\u7D98\u5065\u8230\u5251\u996F"+
+        "\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46"+
+        "\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171"+
+        "\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA"+
+        "\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5"+
+        "\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559"+
+        "\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686"+
+        "\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770"+
+        "\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212"+
+        "\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A"+
+        "\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27"+
+        "\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1"+
+        "\u70EC\u6D78\u7D99\u7D9A\u7D9B\u7D9C\u7D9D\u7D9E"+
+        "\u7D9F\u7DA0\u7DA1\u7DA2\u7DA3\u7DA4\u7DA5\u7DA7"+
+        "\u7DA8\u7DA9\u7DAA\u7DAB\u7DAC\u7DAD\u7DAF\u7DB0"+
+        "\u7DB1\u7DB2\u7DB3\u7DB4\u7DB5\u7DB6\u7DB7\u7DB8"+
+        "\u7DB9\u7DBA\u7DBB\u7DBC\u7DBD\u7DBE\u7DBF\u7DC0"+
+        "\u7DC1\u7DC2\u7DC3\u7DC4\u7DC5\u7DC6\u7DC7\u7DC8"+
+        "\u7DC9\u7DCA\u7DCB\u7DCC\u7DCD\u7DCE\u7DCF\u7DD0"+
+        "\u7DD1\u7DD2\u7DD3\u7DD4\u7DD5\u7DD6\u7DD7\u7DD8"+
+        "\u7DD9\uFFFD\u7DDA\u7DDB\u7DDC\u7DDD\u7DDE\u7DDF"+
+        "\u7DE0\u7DE1\u7DE2\u7DE3\u7DE4\u7DE5\u7DE6\u7DE7"+
+        "\u7DE8\u7DE9\u7DEA\u7DEB\u7DEC\u7DED\u7DEE\u7DEF"+
+        "\u7DF0\u7DF1\u7DF2\u7DF3\u7DF4\u7DF5\u7DF6\u7DF7"+
+        "\u7DF8\u7DF9\u7DFA\u5C3D\u52B2\u8346\u5162\u830E"+
+        "\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF"+
+        "\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C"+
+        "\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98"+
+        "\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D"+
+        "\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31"+
+        "\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA"+
+        "\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E"+
+        "\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7"+
+        "\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377"+
+        "\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9"+
+        "\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B"+
+        "\u5CFB\u7DFB\u7DFC\u7DFD\u7DFE\u7DFF\u7E00\u7E01"+
+        "\u7E02\u7E03\u7E04\u7E05\u7E06\u7E07\u7E08\u7E09"+
+        "\u7E0A\u7E0B\u7E0C\u7E0D\u7E0E\u7E0F\u7E10\u7E11"+
+        "\u7E12\u7E13\u7E14\u7E15\u7E16\u7E17\u7E18\u7E19"+
+        "\u7E1A\u7E1B\u7E1C\u7E1D\u7E1E\u7E1F\u7E20\u7E21"+
+        "\u7E22\u7E23\u7E24\u7E25\u7E26\u7E27\u7E28\u7E29"+
+        "\u7E2A\u7E2B\u7E2C\u7E2D\u7E2E\u7E2F\u7E30\u7E31"+
+        "\u7E32\u7E33\u7E34\u7E35\u7E36\u7E37\u7E38\u7E39"+
+        "\uFFFD\u7E3A\u7E3C\u7E3D\u7E3E\u7E3F\u7E40\u7E42"+
+        "\u7E43\u7E44\u7E45\u7E46\u7E48\u7E49\u7E4A\u7E4B"+
+        "\u7E4C\u7E4D\u7E4E\u7E4F\u7E50\u7E51\u7E52\u7E53"+
+        "\u7E54\u7E55\u7E56\u7E57\u7E58\u7E59\u7E5A\u7E5B"+
+        "\u7E5C\u7E5D\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580"+
+        "\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168"+
+        "\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177"+
+        "\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4"+
+        "\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1"+
+        "\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE"+
+        "\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050"+
+        "\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED"+
+        "\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E"+
+        "\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E"+
+        "\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5"+
+        "\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080";
+
+    private final static String innerIndex4=
+        "\u7E5E\u7E5F\u7E60\u7E61\u7E62\u7E63\u7E64\u7E65"+
+        "\u7E66\u7E67\u7E68\u7E69\u7E6A\u7E6B\u7E6C\u7E6D"+
+        "\u7E6E\u7E6F\u7E70\u7E71\u7E72\u7E73\u7E74\u7E75"+
+        "\u7E76\u7E77\u7E78\u7E79\u7E7A\u7E7B\u7E7C\u7E7D"+
+        "\u7E7E\u7E7F\u7E80\u7E81\u7E83\u7E84\u7E85\u7E86"+
+        "\u7E87\u7E88\u7E89\u7E8A\u7E8B\u7E8C\u7E8D\u7E8E"+
+        "\u7E8F\u7E90\u7E91\u7E92\u7E93\u7E94\u7E95\u7E96"+
+        "\u7E97\u7E98\u7E99\u7E9A\u7E9C\u7E9D\u7E9E\uFFFD"+
+        "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9"+
+        "\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\u7F3C\u7F3D"+
+        "\u7F3E\u7F3F\u7F40\u7F41\u7F43\u7F46\u7F47\u7F48"+
+        "\u7F49\u7F4A\u7F4B\u7F4C\u7F4D\u7F4E\u7F4F\u7F52"+
+        "\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0"+
+        "\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721"+
+        "\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A"+
+        "\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD"+
+        "\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC"+
+        "\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001"+
+        "\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7"+
+        "\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B"+
+        "\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281"+
+        "\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC"+
+        "\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389"+
+        "\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\u7F56"+
+        "\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\u7F64"+
+        "\u7F65\u7F66\u7F67\u7F6B\u7F6C\u7F6D\u7F6F\u7F70"+
+        "\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C"+
+        "\u7F7D\u7F7F\u7F80\u7F82\u7F83\u7F84\u7F85\u7F86"+
+        "\u7F87\u7F88\u7F89\u7F8B\u7F8D\u7F8F\u7F90\u7F91"+
+        "\u7F92\u7F93\u7F95\u7F96\u7F97\u7F98\u7F99\u7F9B"+
+        "\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\u7FA9"+
+        "\u7FAA\u7FAB\u7FAC\u7FAD\u7FAE\u7FB1\uFFFD\u7FB3"+
+        "\u7FB4\u7FB5\u7FB6\u7FB7\u7FBA\u7FBB\u7FBE\u7FC0"+
+        "\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB"+
+        "\u7FCD\u7FCF\u7FD0\u7FD1\u7FD2\u7FD3\u7FD6\u7FD7"+
+        "\u7FD9\u7FDA\u7FDB\u7FDC\u7FDD\u7FDE\u7FE2\u7FE3"+
+        "\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9"+
+        "\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F"+
+        "\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE"+
+        "\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E"+
+        "\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5"+
+        "\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217"+
+        "\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716"+
+        "\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE"+
+        "\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC"+
+        "\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409"+
+        "\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3"+
+        "\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\u7FE4\u7FE7"+
+        "\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4"+
+        "\u7FF5\u7FF6\u7FF7\u7FF8\u7FF9\u7FFA\u7FFD\u7FFE"+
+        "\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F"+
+        "\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021"+
+        "\u8023\u8024\u802B\u802C\u802D\u802E\u802F\u8030"+
+        "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041"+
+        "\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050"+
+        "\u8051\u8053\u8055\u8056\u8057\uFFFD\u8059\u805B"+
+        "\u805C\u805D\u805E\u805F\u8060\u8061\u8062\u8063"+
+        "\u8064\u8065\u8066\u8067\u8068\u806B\u806C\u806D"+
+        "\u806E\u806F\u8070\u8072\u8073\u8074\u8075\u8076"+
+        "\u8077\u8078\u8079\u807A\u807B\u807C\u807D\u9686"+
+        "\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F"+
+        "\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364"+
+        "\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F"+
+        "\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD"+
+        "\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B"+
+        "\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375"+
+        "\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6"+
+        "\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9"+
+        "\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB"+
+        "\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB"+
+        "\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE"+
+        "\u6EE1\u8513\u66FC\u6162\u6F2B\u807E\u8081\u8082"+
+        "\u8085\u8088\u808A\u808D\u808E\u808F\u8090\u8091"+
+        "\u8092\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6"+
+        "\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8"+
+        "\u80B9\u80BB\u80C5\u80C7\u80C8\u80C9\u80CA\u80CB"+
+        "\u80CF\u80D0\u80D1\u80D2\u80D3\u80D4\u80D5\u80D8"+
+        "\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7"+
+        "\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104"+
+        "\u8105\u8107\u8108\u810B\uFFFD\u810C\u8115\u8117"+
+        "\u8119\u811B\u811C\u811D\u811F\u8120\u8121\u8122"+
+        "\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812A"+
+        "\u812B\u812D\u812E\u8130\u8133\u8134\u8135\u8137"+
+        "\u8139\u813A\u813B\u813C\u813D\u813F\u8C29\u8292"+
+        "\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A"+
+        "\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C"+
+        "\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164"+
+        "\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0"+
+        "\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC"+
+        "\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761"+
+        "\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC"+
+        "\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D"+
+        "\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0"+
+        "\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF"+
+        "\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED"+
+        "\u540D\u547D\u8C2C\u6478\u8140\u8141\u8142\u8143"+
+        "\u8144\u8145\u8147\u8149\u814D\u814E\u814F\u8152"+
+        "\u8156\u8157\u8158\u815B\u815C\u815D\u815E\u815F"+
+        "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B"+
+        "\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178"+
+        "\u8181\u8183\u8184\u8185\u8186\u8187\u8189\u818B"+
+        "\u818C\u818D\u818E\u8190\u8192\u8193\u8194\u8195"+
+        "\u8196\u8197\u8199\u819A\u819E\u819F\u81A0\u81A1"+
+        "\u81A2\u81A4\u81A5\uFFFD\u81A7\u81A9\u81AB\u81AC"+
+        "\u81AD\u81AE\u81AF\u81B0\u81B1\u81B2\u81B4\u81B5"+
+        "\u81B6\u81B7\u81B8\u81B9\u81BC\u81BD\u81BE\u81BF"+
+        "\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\u81CE"+
+        "\u81CF\u81D0\u81D1\u81D2\u81D3\u6479\u8611\u6A21"+
+        "\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8"+
+        "\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0"+
+        "\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55"+
+        "\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF"+
+        "\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43"+
+        "\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320"+
+        "\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9"+
+        "\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60"+
+        "\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE"+
+        "\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F"+
+        "\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0"+
+        "\u72DE\u51DD\u5B81\u81D4\u81D5\u81D6\u81D7\u81D8"+
+        "\u81D9\u81DA\u81DB\u81DC\u81DD\u81DE\u81DF\u81E0"+
+        "\u81E1\u81E2\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB"+
+        "\u81EE\u81EF\u81F0\u81F1\u81F2\u81F5\u81F6\u81F7"+
+        "\u81F8\u81F9\u81FA\u81FD\u81FF\u8203\u8207\u8208"+
+        "\u8209\u820A\u820B\u820E\u820F\u8211\u8213\u8215"+
+        "\u8216\u8217\u8218\u8219\u821A\u821D\u8220\u8224"+
+        "\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C"+
+        "\u823D\u823F\uFFFD\u8240\u8241\u8242\u8243\u8245"+
+        "\u8246\u8248\u824A\u824C\u824D\u824E\u8250\u8251"+
+        "\u8252\u8253\u8254\u8255\u8256\u8257\u8259\u825B"+
+        "\u825C\u825D\u825E\u8260\u8261\u8262\u8263\u8264"+
+        "\u8265\u8266\u8267\u8269\u62E7\u6CDE\u725B\u626D"+
+        "\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA"+
+        "\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF"+
+        "\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076"+
+        "\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD"+
+        "\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8"+
+        "\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1"+
+        "\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1"+
+        "\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D"+
+        "\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E"+
+        "\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F"+
+        "\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288"+
+        "\u7435\u6BD7\u826A\u826B\u826C\u826D\u8271\u8275"+
+        "\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283"+
+        "\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294"+
+        "\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3"+
+        "\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF"+
+        "\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6"+
+        "\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA"+
+        "\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6"+
+        "\u82F8\uFFFD\u82FA\u82FC\u82FD\u82FE\u82FF\u8300"+
+        "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318"+
+        "\u8319\u831D\u831E\u831F\u8320\u8321\u8322\u8323"+
+        "\u8324\u8325\u8326\u8329\u832A\u832E\u8330\u8332"+
+        "\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339"+
+        "\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97"+
+        "\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891"+
+        "\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73"+
+        "\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46"+
+        "\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6"+
+        "\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E"+
+        "\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A"+
+        "\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB"+
+        "\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948"+
+        "\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951"+
+        "\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB"+
+        "\u6390\u833E\u833F\u8341\u8342\u8344\u8345\u8348"+
+        "\u834A\u834B\u834C\u834D\u834E\u8353\u8355\u8356"+
+        "\u8357\u8358\u8359\u835D\u8362\u8370\u8371\u8372"+
+        "\u8373\u8374\u8375\u8376\u8379\u837A\u837E\u837F"+
+        "\u8380\u8381\u8382\u8383\u8384\u8387\u8388\u838A"+
+        "\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395"+
+        "\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\u83A2"+
+        "\u83A3\u83A4\u83A5\u83A6\u83A7\u83AC\u83AD\u83AE"+
+        "\uFFFD\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3"+
+        "\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0"+
+        "\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB"+
+        "\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB"+
+        "\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5"+
+        "\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1"+
+        "\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C"+
+        "\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537"+
+        "\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7"+
+        "\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF"+
+        "\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5"+
+        "\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD"+
+        "\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE"+
+        "\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77"+
+        "\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5"+
+        "\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"+
+        "\u83EE\u83EF\u83F3\u83F4\u83F5\u83F6\u83F7\u83FA"+
+        "\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407"+
+        "\u8408\u8409\u840A\u8410\u8412\u8413\u8414\u8415"+
+        "\u8416\u8417\u8419\u841A\u841B\u841E\u841F\u8420"+
+        "\u8421\u8422\u8423\u8429\u842A\u842B\u842C\u842D"+
+        "\u842E\u842F\u8430\u8432\u8433\u8434\u8435\u8436"+
+        "\u8437\u8439\u843A\u843B\u843E\u843F\u8440\u8441"+
+        "\u8442\u8443\u8444\u8445\u8447\u8448\u8449\uFFFD"+
+        "\u844A\u844B\u844C\u844D\u844E\u844F\u8450\u8452"+
+        "\u8453\u8454\u8455\u8456\u8458\u845D\u845E\u845F"+
+        "\u8460\u8462\u8464\u8465\u8466\u8467\u8468\u846A"+
+        "\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B"+
+        "\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7"+
+        "\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238"+
+        "\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E"+
+        "\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4"+
+        "\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9"+
+        "\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4"+
+        "\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338"+
+        "\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197"+
+        "\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982"+
+        "\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A"+
+        "\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12"+
+        "\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\u847D"+
+        "\u847E\u847F\u8480\u8481\u8483\u8484\u8485\u8486"+
+        "\u848A\u848D\u848F\u8490\u8491\u8492\u8493\u8494"+
+        "\u8495\u8496\u8498\u849A\u849B\u849D\u849E\u849F"+
+        "\u84A0\u84A2\u84A3\u84A4\u84A5\u84A6\u84A7\u84A8"+
+        "\u84A9\u84AA\u84AB\u84AC\u84AD\u84AE\u84B0\u84B1"+
+        "\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0"+
+        "\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC"+
+        "\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\uFFFD\u84D8"+
+        "\u84D9\u84DA\u84DB\u84DC\u84DE\u84E1\u84E2\u84E4"+
+        "\u84E7\u84E8\u84E9\u84EA\u84EB\u84ED\u84EE\u84EF"+
+        "\u84F1\u84F2\u84F3\u84F4\u84F5\u84F6\u84F7\u84F8"+
+        "\u84F9\u84FA\u84FB\u84FD\u84FE\u8500\u8501\u8502"+
+        "\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B"+
+        "\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802"+
+        "\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B"+
+        "\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B"+
+        "\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247"+
+        "\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A"+
+        "\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6"+
+        "\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C"+
+        "\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE"+
+        "\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5"+
+        "\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17"+
+        "\u58F0\u751F\u7525\u7272\u5347\u7EF3\u8503\u8504"+
+        "\u8505\u8506\u8507\u8508\u8509\u850A\u850B\u850D"+
+        "\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518"+
+        "\u8519\u851B\u851C\u851D\u851E\u8520\u8522\u8523"+
+        "\u8524\u8525\u8526\u8527\u8528\u8529\u852A\u852D"+
+        "\u852E\u852F\u8530\u8531\u8532\u8533\u8534\u8535"+
+        "\u8536\u853E\u853F\u8540\u8541\u8542\u8544\u8545"+
+        "\u8546\u8547\u854B\u854C\u854D\u854E\u854F\u8550"+
+        "\u8551\u8552\u8553\u8554\u8555\uFFFD\u8557\u8558"+
+        "\u855A\u855B\u855C\u855D\u855F\u8560\u8561\u8562"+
+        "\u8563\u8565\u8566\u8567\u8569\u856A\u856B\u856C"+
+        "\u856D\u856E\u856F\u8570\u8571\u8573\u8575\u8576"+
+        "\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701"+
+        "\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD"+
+        "\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6"+
+        "\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F"+
+        "\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF"+
+        "\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C"+
+        "\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043"+
+        "\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF"+
+        "\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3"+
+        "\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66"+
+        "\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700"+
+        "\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D"+
+        "\u7AD6\u5885\u5EB6\u6570\u6F31\u8582\u8583\u8586"+
+        "\u8588\u8589\u858A\u858B\u858C\u858D\u858E\u8590"+
+        "\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598"+
+        "\u8599\u859A\u859D\u859E\u859F\u85A0\u85A1\u85A2"+
+        "\u85A3\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD"+
+        "\u85B1\u85B2\u85B3\u85B4\u85B5\u85B6\u85B8\u85BA"+
+        "\u85BB\u85BC\u85BD\u85BE\u85BF\u85C0\u85C2\u85C3"+
+        "\u85C4\u85C5\u85C6\u85C7\u85C8\u85CA\u85CB\u85CC"+
+        "\u85CD\u85CE\u85D1\u85D2\uFFFD\u85D4\u85D6\u85D7"+
+        "\u85D8\u85D9\u85DA\u85DB\u85DD\u85DE\u85DF\u85E0"+
+        "\u85E1\u85E2\u85E3\u85E5\u85E6\u85E7\u85E8\u85EA"+
+        "\u85EB\u85EC\u85ED\u85EE\u85EF\u85F0\u85F1\u85F2"+
+        "\u85F3\u85F4\u85F5\u85F6\u85F7\u85F8\u6055\u5237"+
+        "\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C"+
+        "\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC"+
+        "\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495"+
+        "\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA"+
+        "\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038"+
+        "\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258"+
+        "\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F"+
+        "\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C"+
+        "\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81"+
+        "\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1"+
+        "\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C"+
+        "\u4ED6\u5B83\u5979\u5854\u85F9\u85FA\u85FC\u85FD"+
+        "\u85FE\u8600\u8601\u8602\u8603\u8604\u8606\u8607"+
+        "\u8608\u8609\u860A\u860B\u860C\u860D\u860E\u860F"+
+        "\u8610\u8612\u8613\u8614\u8615\u8617\u8618\u8619"+
+        "\u861A\u861B\u861C\u861D\u861E\u861F\u8620\u8621"+
+        "\u8622\u8623\u8624\u8625\u8626\u8628\u862A\u862B"+
+        "\u862C\u862D\u862E\u862F\u8630\u8631\u8632\u8633"+
+        "\u8634\u8635\u8636\u8637\u8639\u863A\u863B\u863D"+
+        "\u863E\u863F\u8640\uFFFD\u8641\u8642\u8643\u8644"+
+        "\u8645\u8646\u8647\u8648\u8649\u864A\u864B\u864C"+
+        "\u8652\u8653\u8655\u8656\u8657\u8658\u8659\u865B"+
+        "\u865C\u865D\u865F\u8660\u8661\u8663\u8664\u8665"+
+        "\u8666\u8667\u8668\u8669\u866A\u736D\u631E\u8E4B"+
+        "\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A"+
+        "\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B"+
+        "\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892"+
+        "\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802"+
+        "\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F"+
+        "\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003"+
+        "\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC"+
+        "\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44"+
+        "\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49"+
+        "\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146"+
+        "\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16"+
+        "\u5385\u542C\u70C3\u866D\u866F\u8670\u8672\u8673"+
+        "\u8674\u8675\u8676\u8677\u8678\u8683\u8684\u8685"+
+        "\u8686\u8687\u8688\u8689\u868E\u868F\u8690\u8691"+
+        "\u8692\u8694\u8696\u8697\u8698\u8699\u869A\u869B"+
+        "\u869E\u869F\u86A0\u86A1\u86A2\u86A5\u86A6\u86AB"+
+        "\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB"+
+        "\u86BC\u86BD\u86BE\u86BF\u86C1\u86C2\u86C3\u86C5"+
+        "\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7"+
+        "\u86DA\u86DC\uFFFD\u86DD\u86E0\u86E1\u86E2\u86E3"+
+        "\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF"+
+        "\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF"+
+        "\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F"+
+        "\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD"+
+        "\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C"+
+        "\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB"+
+        "\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE"+
+        "\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D"+
+        "\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E"+
+        "\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E"+
+        "\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9"+
+        "\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F"+
+        "\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D"+
+        "\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A"+
+        "\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8"+
+        "\u5984\u5A01\u8719\u871B\u871D\u871F\u8720\u8724"+
+        "\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F"+
+        "\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A"+
+        "\u873C\u873D\u8740\u8741\u8742\u8743\u8744\u8745"+
+        "\u8746\u874A\u874B\u874D\u874F\u8750\u8751\u8752"+
+        "\u8754\u8755\u8756\u8758\u875A\u875B\u875C\u875D"+
+        "\u875E\u875F\u8761\u8762\u8766\u8767\u8768\u8769"+
+        "\u876A\u876B\u876C\u876D\u876F\u8771\u8772\u8773"+
+        "\u8775\uFFFD\u8777\u8778\u8779\u877A\u877F\u8780"+
+        "\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E"+
+        "\u878F\u8790\u8791\u8792\u8794\u8795\u8796\u8798"+
+        "\u8799\u879A\u879B\u879C\u879D\u879E\u87A0\u87A1"+
+        "\u87A2\u87A3\u87A4\u5DCD\u5FAE\u5371\u97E6\u8FDD"+
+        "\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7"+
+        "\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A"+
+        "\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13"+
+        "\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB"+
+        "\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE"+
+        "\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1"+
+        "\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B"+
+        "\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94"+
+        "\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE"+
+        "\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199"+
+        "\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521"+
+        "\u727A\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0"+
+        "\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB"+
+        "\u87BC\u87BE\u87BF\u87C1\u87C2\u87C3\u87C4\u87C5"+
+        "\u87C7\u87C8\u87C9\u87CC\u87CD\u87CE\u87CF\u87D0"+
+        "\u87D4\u87D5\u87D6\u87D7\u87D8\u87D9\u87DA\u87DC"+
+        "\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6"+
+        "\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\u87F0"+
+        "\u87F1\u87F2\u87F3\u87F4\u87F5\u87F6\u87F7\u87F8"+
+        "\uFFFD\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801"+
+        "\u8802\u8804\u8805\u8806\u8807\u8808\u8809\u880B"+
+        "\u880C\u880D\u880E\u880F\u8810\u8811\u8812\u8814"+
+        "\u8817\u8818\u8819\u881A\u881C\u881D\u881E\u881F"+
+        "\u8820\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915"+
+        "\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD"+
+        "\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699"+
+        "\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687"+
+        "\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380"+
+        "\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854"+
+        "\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0"+
+        "\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650"+
+        "\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58"+
+        "\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879"+
+        "\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704"+
+        "\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653";
+
+    private final static String innerIndex5=
+        "\u8824\u8825\u8826\u8827\u8828\u8829\u882A\u882B"+
+        "\u882C\u882D\u882E\u882F\u8830\u8831\u8833\u8834"+
+        "\u8835\u8836\u8837\u8838\u883A\u883B\u883D\u883E"+
+        "\u883F\u8841\u8842\u8843\u8846\u8847\u8848\u8849"+
+        "\u884A\u884B\u884E\u884F\u8850\u8851\u8852\u8853"+
+        "\u8855\u8856\u8858\u885A\u885B\u885C\u885D\u885E"+
+        "\u885F\u8860\u8866\u8867\u886A\u886D\u886F\u8871"+
+        "\u8873\u8874\u8875\u8876\u8878\u8879\u887A\uFFFD"+
+        "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A"+
+        "\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895"+
+        "\u8897\u8898\u8899\u889A\u889B\u889D\u889E\u889F"+
+        "\u88A0\u88A1\u88A3\u88A5\u88A6\u88A7\u88A8\u88A9"+
+        "\u88AA\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548"+
+        "\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A"+
+        "\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9"+
+        "\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C"+
+        "\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F"+
+        "\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2"+
+        "\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6"+
+        "\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E"+
+        "\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C"+
+        "\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157"+
+        "\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA"+
+        "\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\u88AC"+
+        "\u88AE\u88AF\u88B0\u88B2\u88B3\u88B4\u88B5\u88B6"+
+        "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0"+
+        "\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD"+
+        "\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\u88DB"+
+        "\u88DC\u88DD\u88DE\u88E0\u88E1\u88E6\u88E7\u88E9"+
+        "\u88EA\u88EB\u88EC\u88ED\u88EE\u88EF\u88F2\u88F5"+
+        "\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901"+
+        "\u8903\u8904\u8905\u8906\u8907\u8908\uFFFD\u8909"+
+        "\u890B\u890C\u890D\u890E\u890F\u8911\u8914\u8915"+
+        "\u8916\u8917\u8918\u891C\u891D\u891E\u891F\u8920"+
+        "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C"+
+        "\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937"+
+        "\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74"+
+        "\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB"+
+        "\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5"+
+        "\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259"+
+        "\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6"+
+        "\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814"+
+        "\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF"+
+        "\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5"+
+        "\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A"+
+        "\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F"+
+        "\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B"+
+        "\u6837\u6F3E\u9080\u8170\u5996\u7476\u8938\u8939"+
+        "\u893A\u893B\u893C\u893D\u893E\u893F\u8940\u8942"+
+        "\u8943\u8945\u8946\u8947\u8948\u8949\u894A\u894B"+
+        "\u894C\u894D\u894E\u894F\u8950\u8951\u8952\u8953"+
+        "\u8954\u8955\u8956\u8957\u8958\u8959\u895A\u895B"+
+        "\u895C\u895D\u8960\u8961\u8962\u8963\u8964\u8965"+
+        "\u8967\u8968\u8969\u896A\u896B\u896C\u896D\u896E"+
+        "\u896F\u8970\u8971\u8972\u8973\u8974\u8975\u8976"+
+        "\u8977\u8978\u8979\u897A\u897C\uFFFD\u897D\u897E"+
+        "\u8980\u8982\u8984\u8985\u8987\u8988\u8989\u898A"+
+        "\u898B\u898C\u898D\u898E\u898F\u8990\u8991\u8992"+
+        "\u8993\u8994\u8995\u8996\u8997\u8998\u8999\u899A"+
+        "\u899B\u899C\u899D\u899E\u899F\u89A0\u89A1\u6447"+
+        "\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F"+
+        "\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6"+
+        "\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C"+
+        "\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A"+
+        "\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591"+
+        "\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2"+
+        "\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79"+
+        "\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4"+
+        "\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE"+
+        "\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B"+
+        "\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB"+
+        "\u5BC5\u996E\u5C39\u5F15\u9690\u89A2\u89A3\u89A4"+
+        "\u89A5\u89A6\u89A7\u89A8\u89A9\u89AA\u89AB\u89AC"+
+        "\u89AD\u89AE\u89AF\u89B0\u89B1\u89B2\u89B3\u89B4"+
+        "\u89B5\u89B6\u89B7\u89B8\u89B9\u89BA\u89BB\u89BC"+
+        "\u89BD\u89BE\u89BF\u89C0\u89C3\u89CD\u89D3\u89D4"+
+        "\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0"+
+        "\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC"+
+        "\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\u89F5\u89F6"+
+        "\u89F7\u89F8\u89F9\u89FA\uFFFD\u89FB\u89FC\u89FD"+
+        "\u89FE\u89FF\u8A01\u8A02\u8A03\u8A04\u8A05\u8A06"+
+        "\u8A08\u8A09\u8A0A\u8A0B\u8A0C\u8A0D\u8A0E\u8A0F"+
+        "\u8A10\u8A11\u8A12\u8A13\u8A14\u8A15\u8A16\u8A17"+
+        "\u8A18\u8A19\u8A1A\u8A1B\u8A1C\u8A1D\u5370\u82F1"+
+        "\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425"+
+        "\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C"+
+        "\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD"+
+        "\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7"+
+        "\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE"+
+        "\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3"+
+        "\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E"+
+        "\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E"+
+        "\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8"+
+        "\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF"+
+        "\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108"+
+        "\u6B32\u72F1\u80B2\u8A89\u8A1E\u8A1F\u8A20\u8A21"+
+        "\u8A22\u8A23\u8A24\u8A25\u8A26\u8A27\u8A28\u8A29"+
+        "\u8A2A\u8A2B\u8A2C\u8A2D\u8A2E\u8A2F\u8A30\u8A31"+
+        "\u8A32\u8A33\u8A34\u8A35\u8A36\u8A37\u8A38\u8A39"+
+        "\u8A3A\u8A3B\u8A3C\u8A3D\u8A3F\u8A40\u8A41\u8A42"+
+        "\u8A43\u8A44\u8A45\u8A46\u8A47\u8A49\u8A4A\u8A4B"+
+        "\u8A4C\u8A4D\u8A4E\u8A4F\u8A50\u8A51\u8A52\u8A53"+
+        "\u8A54\u8A55\u8A56\u8A57\u8A58\u8A59\u8A5A\u8A5B"+
+        "\u8A5C\u8A5D\u8A5E\uFFFD\u8A5F\u8A60\u8A61\u8A62"+
+        "\u8A63\u8A64\u8A65\u8A66\u8A67\u8A68\u8A69\u8A6A"+
+        "\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70\u8A71\u8A72"+
+        "\u8A73\u8A74\u8A75\u8A76\u8A77\u8A78\u8A7A\u8A7B"+
+        "\u8A7C\u8A7D\u8A7E\u8A7F\u8A80\u6D74\u5BD3\u88D5"+
+        "\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3"+
+        "\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F"+
+        "\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0"+
+        "\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6"+
+        "\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0"+
+        "\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742"+
+        "\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1"+
+        "\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF"+
+        "\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A"+
+        "\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD"+
+        "\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3"+
+        "\u6E23\u672D\u8F67\u8A81\u8A82\u8A83\u8A84\u8A85"+
+        "\u8A86\u8A87\u8A88\u8A8B\u8A8C\u8A8D\u8A8E\u8A8F"+
+        "\u8A90\u8A91\u8A92\u8A94\u8A95\u8A96\u8A97\u8A98"+
+        "\u8A99\u8A9A\u8A9B\u8A9C\u8A9D\u8A9E\u8A9F\u8AA0"+
+        "\u8AA1\u8AA2\u8AA3\u8AA4\u8AA5\u8AA6\u8AA7\u8AA8"+
+        "\u8AA9\u8AAA\u8AAB\u8AAC\u8AAD\u8AAE\u8AAF\u8AB0"+
+        "\u8AB1\u8AB2\u8AB3\u8AB4\u8AB5\u8AB6\u8AB7\u8AB8"+
+        "\u8AB9\u8ABA\u8ABB\u8ABC\u8ABD\u8ABE\u8ABF\u8AC0"+
+        "\u8AC1\u8AC2\uFFFD\u8AC3\u8AC4\u8AC5\u8AC6\u8AC7"+
+        "\u8AC8\u8AC9\u8ACA\u8ACB\u8ACC\u8ACD\u8ACE\u8ACF"+
+        "\u8AD0\u8AD1\u8AD2\u8AD3\u8AD4\u8AD5\u8AD6\u8AD7"+
+        "\u8AD8\u8AD9\u8ADA\u8ADB\u8ADC\u8ADD\u8ADE\u8ADF"+
+        "\u8AE0\u8AE1\u8AE2\u8AE3\u94E1\u95F8\u7728\u6805"+
+        "\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85"+
+        "\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE"+
+        "\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360"+
+        "\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33"+
+        "\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7"+
+        "\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75"+
+        "\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2"+
+        "\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD"+
+        "\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6"+
+        "\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8"+
+        "\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF"+
+        "\u6B63\u653F\u8AE4\u8AE5\u8AE6\u8AE7\u8AE8\u8AE9"+
+        "\u8AEA\u8AEB\u8AEC\u8AED\u8AEE\u8AEF\u8AF0\u8AF1"+
+        "\u8AF2\u8AF3\u8AF4\u8AF5\u8AF6\u8AF7\u8AF8\u8AF9"+
+        "\u8AFA\u8AFB\u8AFC\u8AFD\u8AFE\u8AFF\u8B00\u8B01"+
+        "\u8B02\u8B03\u8B04\u8B05\u8B06\u8B08\u8B09\u8B0A"+
+        "\u8B0B\u8B0C\u8B0D\u8B0E\u8B0F\u8B10\u8B11\u8B12"+
+        "\u8B13\u8B14\u8B15\u8B16\u8B17\u8B18\u8B19\u8B1A"+
+        "\u8B1B\u8B1C\u8B1D\u8B1E\u8B1F\u8B20\u8B21\u8B22"+
+        "\u8B23\uFFFD\u8B24\u8B25\u8B27\u8B28\u8B29\u8B2A"+
+        "\u8B2B\u8B2C\u8B2D\u8B2E\u8B2F\u8B30\u8B31\u8B32"+
+        "\u8B33\u8B34\u8B35\u8B36\u8B37\u8B38\u8B39\u8B3A"+
+        "\u8B3B\u8B3C\u8B3D\u8B3E\u8B3F\u8B40\u8B41\u8B42"+
+        "\u8B43\u8B44\u8B45\u5E27\u75C7\u90D1\u8BC1\u829D"+
+        "\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41"+
+        "\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C"+
+        "\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8"+
+        "\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9"+
+        "\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE"+
+        "\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8"+
+        "\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE"+
+        "\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1"+
+        "\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A"+
+        "\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9"+
+        "\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8"+
+        "\u7B51\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C"+
+        "\u8B4D\u8B4E\u8B4F\u8B50\u8B51\u8B52\u8B53\u8B54"+
+        "\u8B55\u8B56\u8B57\u8B58\u8B59\u8B5A\u8B5B\u8B5C"+
+        "\u8B5D\u8B5E\u8B5F\u8B60\u8B61\u8B62\u8B63\u8B64"+
+        "\u8B65\u8B67\u8B68\u8B69\u8B6A\u8B6B\u8B6D\u8B6E"+
+        "\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75\u8B76"+
+        "\u8B77\u8B78\u8B79\u8B7A\u8B7B\u8B7C\u8B7D\u8B7E"+
+        "\u8B7F\u8B80\u8B81\u8B82\u8B83\u8B84\u8B85\u8B86"+
+        "\uFFFD\u8B87\u8B88\u8B89\u8B8A\u8B8B\u8B8C\u8B8D"+
+        "\u8B8E\u8B8F\u8B90\u8B91\u8B92\u8B93\u8B94\u8B95"+
+        "\u8B96\u8B97\u8B98\u8B99\u8B9A\u8B9B\u8B9C\u8B9D"+
+        "\u8B9E\u8B9F\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA"+
+        "\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A"+
+        "\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869"+
+        "\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525"+
+        "\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9"+
+        "\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C"+
+        "\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C"+
+        "\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57"+
+        "\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9"+
+        "\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956"+
+        "\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700"+
+        "\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A"+
+        "\u4F5C\u5750\u5EA7\uE810\uE811\uE812\uE813\uE814"+
+        "\u8C38\u8C39\u8C3A\u8C3B\u8C3C\u8C3D\u8C3E\u8C3F"+
+        "\u8C40\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B"+
+        "\u8C4D\u8C4E\u8C4F\u8C50\u8C51\u8C52\u8C53\u8C54"+
+        "\u8C56\u8C57\u8C58\u8C59\u8C5B\u8C5C\u8C5D\u8C5E"+
+        "\u8C5F\u8C60\u8C63\u8C64\u8C65\u8C66\u8C67\u8C68"+
+        "\u8C69\u8C6C\u8C6D\u8C6E\u8C6F\u8C70\u8C71\u8C72"+
+        "\u8C74\u8C75\u8C76\u8C77\u8C7B\u8C7C\u8C7D\u8C7E"+
+        "\u8C7F\u8C80\u8C81\u8C83\u8C84\u8C86\u8C87\uFFFD"+
+        "\u8C88\u8C8B\u8C8D\u8C8E\u8C8F\u8C90\u8C91\u8C92"+
+        "\u8C93\u8C95\u8C96\u8C97\u8C99\u8C9A\u8C9B\u8C9C"+
+        "\u8C9D\u8C9E\u8C9F\u8CA0\u8CA1\u8CA2\u8CA3\u8CA4"+
+        "\u8CA5\u8CA6\u8CA7\u8CA8\u8CA9\u8CAA\u8CAB\u8CAC"+
+        "\u8CAD\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15"+
+        "\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F"+
+        "\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4"+
+        "\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C"+
+        "\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D"+
+        "\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5"+
+        "\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208"+
+        "\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261"+
+        "\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182"+
+        "\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB"+
+        "\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27"+
+        "\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\u8CAE"+
+        "\u8CAF\u8CB0\u8CB1\u8CB2\u8CB3\u8CB4\u8CB5\u8CB6"+
+        "\u8CB7\u8CB8\u8CB9\u8CBA\u8CBB\u8CBC\u8CBD\u8CBE"+
+        "\u8CBF\u8CC0\u8CC1\u8CC2\u8CC3\u8CC4\u8CC5\u8CC6"+
+        "\u8CC7\u8CC8\u8CC9\u8CCA\u8CCB\u8CCC\u8CCD\u8CCE"+
+        "\u8CCF\u8CD0\u8CD1\u8CD2\u8CD3\u8CD4\u8CD5\u8CD6"+
+        "\u8CD7\u8CD8\u8CD9\u8CDA\u8CDB\u8CDC\u8CDD\u8CDE"+
+        "\u8CDF\u8CE0\u8CE1\u8CE2\u8CE3\u8CE4\u8CE5\u8CE6"+
+        "\u8CE7\u8CE8\u8CE9\u8CEA\u8CEB\u8CEC\uFFFD\u8CED"+
+        "\u8CEE\u8CEF\u8CF0\u8CF1\u8CF2\u8CF3\u8CF4\u8CF5"+
+        "\u8CF6\u8CF7\u8CF8\u8CF9\u8CFA\u8CFB\u8CFC\u8CFD"+
+        "\u8CFE\u8CFF\u8D00\u8D01\u8D02\u8D03\u8D04\u8D05"+
+        "\u8D06\u8D07\u8D08\u8D09\u8D0A\u8D0B\u8D0C\u8D0D"+
+        "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89"+
+        "\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94"+
+        "\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1"+
+        "\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E"+
+        "\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043"+
+        "\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9"+
+        "\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107"+
+        "\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46"+
+        "\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9"+
+        "\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156"+
+        "\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34"+
+        "\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\u8D0E\u8D0F"+
+        "\u8D10\u8D11\u8D12\u8D13\u8D14\u8D15\u8D16\u8D17"+
+        "\u8D18\u8D19\u8D1A\u8D1B\u8D1C\u8D20\u8D51\u8D52"+
+        "\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E"+
+        "\u8D6F\u8D71\u8D72\u8D78\u8D79\u8D7A\u8D7B\u8D7C"+
+        "\u8D7D\u8D7E\u8D7F\u8D80\u8D82\u8D83\u8D86\u8D87"+
+        "\u8D88\u8D89\u8D8C\u8D8D\u8D8E\u8D8F\u8D90\u8D92"+
+        "\u8D93\u8D95\u8D96\u8D97\u8D98\u8D99\u8D9A\u8D9B"+
+        "\u8D9C\u8D9D\u8D9E\u8DA0\u8DA1\uFFFD\u8DA2\u8DA4"+
+        "\u8DA5\u8DA6\u8DA7\u8DA8\u8DA9\u8DAA\u8DAB\u8DAC"+
+        "\u8DAD\u8DAE\u8DAF\u8DB0\u8DB2\u8DB6\u8DB7\u8DB9"+
+        "\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8"+
+        "\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7"+
+        "\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4"+
+        "\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2"+
+        "\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0"+
+        "\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9"+
+        "\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F"+
+        "\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18"+
+        "\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B"+
+        "\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A"+
+        "\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642"+
+        "\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688"+
+        "\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC"+
+        "\u90A1\u90B4\u90B3\u90B6\u90BA\u8DD5\u8DD8\u8DD9"+
+        "\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9"+
+        "\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC"+
+        "\u8DFE\u8DFF\u8E00\u8E01\u8E02\u8E03\u8E04\u8E06"+
+        "\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12"+
+        "\u8E13\u8E15\u8E16\u8E17\u8E18\u8E19\u8E1A\u8E1B"+
+        "\u8E1C\u8E20\u8E21\u8E24\u8E25\u8E26\u8E27\u8E28"+
+        "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37"+
+        "\u8E38\u8E3B\u8E3C\u8E3E\uFFFD\u8E3F\u8E43\u8E45"+
+        "\u8E46\u8E4C\u8E4D\u8E4E\u8E4F\u8E50\u8E53\u8E54"+
+        "\u8E55\u8E56\u8E57\u8E58\u8E5A\u8E5B\u8E5C\u8E5D"+
+        "\u8E5E\u8E5F\u8E60\u8E61\u8E62\u8E63\u8E64\u8E65"+
+        "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0"+
+        "\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6"+
+        "\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104"+
+        "\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146"+
+        "\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0"+
+        "\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC"+
+        "\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1"+
+        "\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733"+
+        "\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785"+
+        "\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773"+
+        "\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793"+
+        "\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4"+
+        "\u57EF\u57F8\u57E4\u57DD\u8E73\u8E75\u8E77\u8E78"+
+        "\u8E79\u8E7A\u8E7B\u8E7D\u8E7E\u8E80\u8E82\u8E83"+
+        "\u8E84\u8E86\u8E88\u8E89\u8E8A\u8E8B\u8E8C\u8E8D"+
+        "\u8E8E\u8E91\u8E92\u8E93\u8E95\u8E96\u8E97\u8E98"+
+        "\u8E99\u8E9A\u8E9B\u8E9D\u8E9F\u8EA0\u8EA1\u8EA2"+
+        "\u8EA3\u8EA4\u8EA5\u8EA6\u8EA7\u8EA8\u8EA9\u8EAA"+
+        "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\u8EB4\u8EB5\u8EB6"+
+        "\u8EB7\u8EB8\u8EB9\u8EBB\u8EBC\u8EBD\u8EBE\u8EBF"+
+        "\u8EC0\u8EC1\u8EC2\uFFFD\u8EC3\u8EC4\u8EC5\u8EC6"+
+        "\u8EC7\u8EC8\u8EC9\u8ECA\u8ECB\u8ECC\u8ECD\u8ECF"+
+        "\u8ED0\u8ED1\u8ED2\u8ED3\u8ED4\u8ED5\u8ED6\u8ED7"+
+        "\u8ED8\u8ED9\u8EDA\u8EDB\u8EDC\u8EDD\u8EDE\u8EDF"+
+        "\u8EE0\u8EE1\u8EE2\u8EE3\u8EE4\u580B\u580D\u57FD"+
+        "\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C"+
+        "\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279"+
+        "\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291"+
+        "\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA"+
+        "\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9"+
+        "\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1"+
+        "\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2"+
+        "\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314"+
+        "\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308"+
+        "\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F"+
+        "\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A"+
+        "\u8333\u8366\u8365\u8EE5\u8EE6\u8EE7\u8EE8\u8EE9"+
+        "\u8EEA\u8EEB\u8EEC\u8EED\u8EEE\u8EEF\u8EF0\u8EF1"+
+        "\u8EF2\u8EF3\u8EF4\u8EF5\u8EF6\u8EF7\u8EF8\u8EF9"+
+        "\u8EFA\u8EFB\u8EFC\u8EFD\u8EFE\u8EFF\u8F00\u8F01"+
+        "\u8F02\u8F03\u8F04\u8F05\u8F06\u8F07\u8F08\u8F09"+
+        "\u8F0A\u8F0B\u8F0C\u8F0D\u8F0E\u8F0F\u8F10\u8F11"+
+        "\u8F12\u8F13\u8F14\u8F15\u8F16\u8F17\u8F18\u8F19"+
+        "\u8F1A\u8F1B\u8F1C\u8F1D\u8F1E\u8F1F\u8F20\u8F21"+
+        "\u8F22\u8F23\uFFFD\u8F24\u8F25\u8F26\u8F27\u8F28"+
+        "\u8F29\u8F2A\u8F2B\u8F2C\u8F2D\u8F2E\u8F2F\u8F30"+
+        "\u8F31\u8F32\u8F33\u8F34\u8F35\u8F36\u8F37\u8F38"+
+        "\u8F39\u8F3A\u8F3B\u8F3C\u8F3D\u8F3E\u8F3F\u8F40"+
+        "\u8F41\u8F42\u8F43\u8F44\u8368\u831B\u8369\u836C"+
+        "\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0"+
+        "\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D"+
+        "\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1"+
+        "\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD"+
+        "\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F"+
+        "\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0"+
+        "\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488"+
+        "\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C"+
+        "\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD"+
+        "\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4"+
+        "\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539"+
+        "\u851F\u853A\u8F45\u8F46\u8F47\u8F48\u8F49\u8F4A"+
+        "\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50\u8F51\u8F52"+
+        "\u8F53\u8F54\u8F55\u8F56\u8F57\u8F58\u8F59\u8F5A"+
+        "\u8F5B\u8F5C\u8F5D\u8F5E\u8F5F\u8F60\u8F61\u8F62"+
+        "\u8F63\u8F64\u8F65\u8F6A\u8F80\u8F8C\u8F92\u8F9D"+
+        "\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA"+
+        "\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5"+
+        "\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3"+
+        "\u8FC6\uFFFD\u8FC9\u8FCA\u8FCB\u8FCC\u8FCD\u8FCF"+
+        "\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7"+
+        "\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA"+
+        "\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E"+
+        "\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559"+
+        "\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572"+
+        "\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C"+
+        "\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF"+
+        "\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C"+
+        "\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25"+
+        "\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA"+
+        "\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD"+
+        "\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A"+
+        "\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4"+
+        "\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B"+
+        "\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D"+
+        "\u6496\u9019\u901C\u9023\u9024\u9025\u9027\u9028"+
+        "\u9029\u902A\u902B\u902C\u9030\u9031\u9032\u9033"+
+        "\u9034\u9037\u9039\u903A\u903D\u903F\u9040\u9043"+
+        "\u9045\u9046\u9048\u9049\u904A\u904B\u904C\u904E"+
+        "\u9054\u9055\u9056\u9059\u905A\u905C\u905D\u905E"+
+        "\u905F\u9060\u9061\u9064\u9066\u9067\u9069\u906A"+
+        "\u906B\u906C\u906F\u9070\u9071\u9072\u9073\u9076"+
+        "\u9077\u9078\u9079\u907A\u907B\u907C\u907E\u9081"+
+        "\uFFFD\u9084\u9085\u9086\u9087\u9089\u908A\u908C"+
+        "\u908D\u908E\u908F\u9090\u9092\u9094\u9096\u9098"+
+        "\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7"+
+        "\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD"+
+        "\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0"+
+        "\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B"+
+        "\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8"+
+        "\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454"+
+        "\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482"+
+        "\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476"+
+        "\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7"+
+        "\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF"+
+        "\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD"+
+        "\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3"+
+        "\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F"+
+        "\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C";
+
+    private final static String innerIndex6=
+        "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD"+
+        "\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE"+
+        "\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC"+
+        "\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7"+
+        "\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103"+
+        "\u9105\u9106\u9107\u9108\u9109\u910A\u910B\u910C"+
+        "\u910D\u910E\u910F\u9110\u9111\u9112\u9113\u9114"+
+        "\u9115\u9116\u9117\u9118\u911A\u911B\u911C\uFFFD"+
+        "\u911D\u911F\u9120\u9121\u9124\u9125\u9126\u9127"+
+        "\u9128\u9129\u912A\u912B\u912C\u912D\u912E\u9130"+
+        "\u9132\u9133\u9134\u9135\u9136\u9137\u9138\u913A"+
+        "\u913B\u913C\u913D\u913E\u913F\u9140\u9141\u9142"+
+        "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530"+
+        "\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581"+
+        "\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE"+
+        "\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB"+
+        "\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2"+
+        "\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E"+
+        "\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627"+
+        "\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659"+
+        "\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B"+
+        "\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1"+
+        "\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C"+
+        "\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\u9145"+
+        "\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158"+
+        "\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168"+
+        "\u916B\u916D\u9173\u917A\u917B\u917C\u9180\u9181"+
+        "\u9182\u9183\u9184\u9186\u9188\u918A\u918E\u918F"+
+        "\u9193\u9194\u9195\u9196\u9197\u9198\u9199\u919C"+
+        "\u919D\u919E\u919F\u91A0\u91A1\u91A4\u91A5\u91A6"+
+        "\u91A7\u91A8\u91A9\u91AB\u91AC\u91B0\u91B1\u91B2"+
+        "\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\uFFFD\u91BC"+
+        "\u91BD\u91BE\u91BF\u91C0\u91C1\u91C2\u91C3\u91C4"+
+        "\u91C5\u91C6\u91C8\u91CB\u91D0\u91D2\u91D3\u91D4"+
+        "\u91D5\u91D6\u91D7\u91D8\u91D9\u91DA\u91DB\u91DD"+
+        "\u91DE\u91DF\u91E0\u91E1\u91E2\u91E3\u91E4\u91E5"+
+        "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A"+
+        "\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A"+
+        "\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3"+
+        "\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02"+
+        "\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B"+
+        "\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D"+
+        "\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D"+
+        "\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89"+
+        "\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC"+
+        "\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3"+
+        "\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2"+
+        "\u72F4\u72F7\u7301\u72F3\u7303\u72FA\u91E6\u91E7"+
+        "\u91E8\u91E9\u91EA\u91EB\u91EC\u91ED\u91EE\u91EF"+
+        "\u91F0\u91F1\u91F2\u91F3\u91F4\u91F5\u91F6\u91F7"+
+        "\u91F8\u91F9\u91FA\u91FB\u91FC\u91FD\u91FE\u91FF"+
+        "\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207"+
+        "\u9208\u9209\u920A\u920B\u920C\u920D\u920E\u920F"+
+        "\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217"+
+        "\u9218\u9219\u921A\u921B\u921C\u921D\u921E\u921F"+
+        "\u9220\u9221\u9222\u9223\u9224\uFFFD\u9225\u9226"+
+        "\u9227\u9228\u9229\u922A\u922B\u922C\u922D\u922E"+
+        "\u922F\u9230\u9231\u9232\u9233\u9234\u9235\u9236"+
+        "\u9237\u9238\u9239\u923A\u923B\u923C\u923D\u923E"+
+        "\u923F\u9240\u9241\u9242\u9243\u9244\u9245\u72FB"+
+        "\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322"+
+        "\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357"+
+        "\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924"+
+        "\u5902\u9963\u9967\u9968\u9969\u996A\u996B\u996C"+
+        "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D"+
+        "\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B"+
+        "\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53"+
+        "\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9"+
+        "\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE"+
+        "\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026"+
+        "\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021"+
+        "\u6078\u6079\u607B\u607A\u6042\u9246\u9247\u9248"+
+        "\u9249\u924A\u924B\u924C\u924D\u924E\u924F\u9250"+
+        "\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258"+
+        "\u9259\u925A\u925B\u925C\u925D\u925E\u925F\u9260"+
+        "\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268"+
+        "\u9269\u926A\u926B\u926C\u926D\u926E\u926F\u9270"+
+        "\u9271\u9272\u9273\u9275\u9276\u9277\u9278\u9279"+
+        "\u927A\u927B\u927C\u927D\u927E\u927F\u9280\u9281"+
+        "\u9282\u9283\u9284\u9285\uFFFD\u9286\u9287\u9288"+
+        "\u9289\u928A\u928B\u928C\u928D\u928F\u9290\u9291"+
+        "\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299"+
+        "\u929A\u929B\u929C\u929D\u929E\u929F\u92A0\u92A1"+
+        "\u92A2\u92A3\u92A4\u92A5\u92A6\u92A7\u606A\u607D"+
+        "\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B"+
+        "\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4"+
+        "\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B"+
+        "\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5"+
+        "\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6"+
+        "\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B"+
+        "\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619"+
+        "\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A"+
+        "\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74"+
+        "\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8"+
+        "\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE"+
+        "\u6CB1\u6CD3\u6CEF\u6CFE\u92A8\u92A9\u92AA\u92AB"+
+        "\u92AC\u92AD\u92AF\u92B0\u92B1\u92B2\u92B3\u92B4"+
+        "\u92B5\u92B6\u92B7\u92B8\u92B9\u92BA\u92BB\u92BC"+
+        "\u92BD\u92BE\u92BF\u92C0\u92C1\u92C2\u92C3\u92C4"+
+        "\u92C5\u92C6\u92C7\u92C9\u92CA\u92CB\u92CC\u92CD"+
+        "\u92CE\u92CF\u92D0\u92D1\u92D2\u92D3\u92D4\u92D5"+
+        "\u92D6\u92D7\u92D8\u92D9\u92DA\u92DB\u92DC\u92DD"+
+        "\u92DE\u92DF\u92E0\u92E1\u92E2\u92E3\u92E4\u92E5"+
+        "\u92E6\u92E7\u92E8\uFFFD\u92E9\u92EA\u92EB\u92EC"+
+        "\u92ED\u92EE\u92EF\u92F0\u92F1\u92F2\u92F3\u92F4"+
+        "\u92F5\u92F6\u92F7\u92F8\u92F9\u92FA\u92FB\u92FC"+
+        "\u92FD\u92FE\u92FF\u9300\u9301\u9302\u9303\u9304"+
+        "\u9305\u9306\u9307\u9308\u9309\u6D39\u6D27\u6D0C"+
+        "\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D"+
+        "\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91"+
+        "\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60"+
+        "\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF"+
+        "\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C"+
+        "\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86"+
+        "\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98"+
+        "\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7"+
+        "\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46"+
+        "\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74"+
+        "\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72"+
+        "\u6F7C\u6F7A\u6FD1\u930A\u930B\u930C\u930D\u930E"+
+        "\u930F\u9310\u9311\u9312\u9313\u9314\u9315\u9316"+
+        "\u9317\u9318\u9319\u931A\u931B\u931C\u931D\u931E"+
+        "\u931F\u9320\u9321\u9322\u9323\u9324\u9325\u9326"+
+        "\u9327\u9328\u9329\u932A\u932B\u932C\u932D\u932E"+
+        "\u932F\u9330\u9331\u9332\u9333\u9334\u9335\u9336"+
+        "\u9337\u9338\u9339\u933A\u933B\u933C\u933D\u933F"+
+        "\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347"+
+        "\u9348\u9349\uFFFD\u934A\u934B\u934C\u934D\u934E"+
+        "\u934F\u9350\u9351\u9352\u9353\u9354\u9355\u9356"+
+        "\u9357\u9358\u9359\u935A\u935B\u935C\u935D\u935E"+
+        "\u935F\u9360\u9361\u9362\u9363\u9364\u9365\u9366"+
+        "\u9367\u9368\u9369\u936B\u6FC9\u6FA7\u6FB9\u6FB6"+
+        "\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023"+
+        "\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95"+
+        "\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE"+
+        "\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5"+
+        "\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004"+
+        "\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036"+
+        "\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058"+
+        "\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083"+
+        "\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50"+
+        "\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D"+
+        "\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9"+
+        "\u59AA\u59A3\u936C\u936D\u936E\u936F\u9370\u9371"+
+        "\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379"+
+        "\u937A\u937B\u937C\u937D\u937E\u937F\u9380\u9381"+
+        "\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389"+
+        "\u938A\u938B\u938C\u938D\u938E\u9390\u9391\u9392"+
+        "\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939A"+
+        "\u939B\u939C\u939D\u939E\u939F\u93A0\u93A1\u93A2"+
+        "\u93A3\u93A4\u93A5\u93A6\u93A7\u93A8\u93A9\u93AA"+
+        "\u93AB\uFFFD\u93AC\u93AD\u93AE\u93AF\u93B0\u93B1"+
+        "\u93B2\u93B3\u93B4\u93B5\u93B6\u93B7\u93B8\u93B9"+
+        "\u93BA\u93BB\u93BC\u93BD\u93BE\u93BF\u93C0\u93C1"+
+        "\u93C2\u93C3\u93C4\u93C5\u93C6\u93C7\u93C8\u93C9"+
+        "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4"+
+        "\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD"+
+        "\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34"+
+        "\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C"+
+        "\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE"+
+        "\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1"+
+        "\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32"+
+        "\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51"+
+        "\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D"+
+        "\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93"+
+        "\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2"+
+        "\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8"+
+        "\u7EA9\u93CE\u93CF\u93D0\u93D1\u93D2\u93D3\u93D4"+
+        "\u93D5\u93D7\u93D8\u93D9\u93DA\u93DB\u93DC\u93DD"+
+        "\u93DE\u93DF\u93E0\u93E1\u93E2\u93E3\u93E4\u93E5"+
+        "\u93E6\u93E7\u93E8\u93E9\u93EA\u93EB\u93EC\u93ED"+
+        "\u93EE\u93EF\u93F0\u93F1\u93F2\u93F3\u93F4\u93F5"+
+        "\u93F6\u93F7\u93F8\u93F9\u93FA\u93FB\u93FC\u93FD"+
+        "\u93FE\u93FF\u9400\u9401\u9402\u9403\u9404\u9405"+
+        "\u9406\u9407\u9408\u9409\u940A\u940B\u940C\u940D"+
+        "\uFFFD\u940E\u940F\u9410\u9411\u9412\u9413\u9414"+
+        "\u9415\u9416\u9417\u9418\u9419\u941A\u941B\u941C"+
+        "\u941D\u941E\u941F\u9420\u9421\u9422\u9423\u9424"+
+        "\u9425\u9426\u9427\u9428\u9429\u942A\u942B\u942C"+
+        "\u942D\u942E\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2"+
+        "\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0"+
+        "\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D"+
+        "\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07"+
+        "\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19"+
+        "\u7F1C\u7F1B\u7F1F\u7F21\u7F22\u7F23\u7F24\u7F25"+
+        "\u7F26\u7F27\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\u7F30"+
+        "\u7F31\u7F32\u7F33\u7F35\u5E7A\u757F\u5DDB\u753E"+
+        "\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2"+
+        "\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9"+
+        "\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F"+
+        "\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"+
+        "\u942F\u9430\u9431\u9432\u9433\u9434\u9435\u9436"+
+        "\u9437\u9438\u9439\u943A\u943B\u943C\u943D\u943F"+
+        "\u9440\u9441\u9442\u9443\u9444\u9445\u9446\u9447"+
+        "\u9448\u9449\u944A\u944B\u944C\u944D\u944E\u944F"+
+        "\u9450\u9451\u9452\u9453\u9454\u9455\u9456\u9457"+
+        "\u9458\u9459\u945A\u945B\u945C\u945D\u945E\u945F"+
+        "\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u9467"+
+        "\u9468\u9469\u946A\u946C\u946D\u946E\u946F\uFFFD"+
+        "\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477"+
+        "\u9478\u9479\u947A\u947B\u947C\u947D\u947E\u947F"+
+        "\u9480\u9481\u9482\u9483\u9484\u9491\u9496\u9498"+
+        "\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C"+
+        "\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459"+
+        "\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487"+
+        "\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA"+
+        "\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769"+
+        "\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8"+
+        "\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8"+
+        "\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3"+
+        "\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD"+
+        "\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864"+
+        "\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E"+
+        "\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893"+
+        "\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\u9527"+
+        "\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560"+
+        "\u956E\u9574\u9575\u9577\u9578\u9579\u957A\u957B"+
+        "\u957C\u957D\u957E\u9580\u9581\u9582\u9583\u9584"+
+        "\u9585\u9586\u9587\u9588\u9589\u958A\u958B\u958C"+
+        "\u958D\u958E\u958F\u9590\u9591\u9592\u9593\u9594"+
+        "\u9595\u9596\u9597\u9598\u9599\u959A\u959B\u959C"+
+        "\u959D\u959E\u959F\u95A0\u95A1\u95A2\u95A3\u95A4"+
+        "\u95A5\u95A6\u95A7\u95A8\u95A9\u95AA\uFFFD\u95AB"+
+        "\u95AC\u95AD\u95AE\u95AF\u95B0\u95B1\u95B2\u95B3"+
+        "\u95B4\u95B5\u95B6\u95B7\u95B8\u95B9\u95BA\u95BB"+
+        "\u95BC\u95BD\u95BE\u95BF\u95C0\u95C1\u95C2\u95C3"+
+        "\u95C4\u95C5\u95C6\u95C7\u95C8\u95C9\u95CA\u95CB"+
+        "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971"+
+        "\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998"+
+        "\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966"+
+        "\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4"+
+        "\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF"+
+        "\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E"+
+        "\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28"+
+        "\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337"+
+        "\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D"+
+        "\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72"+
+        "\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C"+
+        "\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\u95CC\u95CD"+
+        "\u95CE\u95CF\u95D0\u95D1\u95D2\u95D3\u95D4\u95D5"+
+        "\u95D6\u95D7\u95D8\u95D9\u95DA\u95DB\u95DC\u95DD"+
+        "\u95DE\u95DF\u95E0\u95E1\u95E2\u95E3\u95E4\u95E5"+
+        "\u95E6\u95E7\u95EC\u95FF\u9607\u9613\u9618\u961B"+
+        "\u961E\u9620\u9623\u9624\u9625\u9626\u9627\u9628"+
+        "\u9629\u962B\u962C\u962D\u962F\u9630\u9637\u9638"+
+        "\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F"+
+        "\u9651\u9652\u9653\u9656\u9657\uFFFD\u9658\u9659"+
+        "\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666"+
+        "\u966B\u966D\u966E\u966F\u9670\u9671\u9673\u9678"+
+        "\u9679\u967A\u967B\u967C\u967D\u967E\u967F\u9680"+
+        "\u9681\u9682\u9683\u9684\u9687\u9689\u968A\u8F8D"+
+        "\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B"+
+        "\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF"+
+        "\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF"+
+        "\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085"+
+        "\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F"+
+        "\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684"+
+        "\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9"+
+        "\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46"+
+        "\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA"+
+        "\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F"+
+        "\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D"+
+        "\u728F\u7292\u6308\u6332\u63B0\u968C\u968E\u9691"+
+        "\u9692\u9693\u9695\u9696\u969A\u969B\u969D\u969E"+
+        "\u969F\u96A0\u96A1\u96A2\u96A3\u96A4\u96A5\u96A6"+
+        "\u96A8\u96A9\u96AA\u96AB\u96AC\u96AD\u96AE\u96AF"+
+        "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB"+
+        "\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1"+
+        "\u96D3\u96D4\u96D6\u96D7\u96D8\u96D9\u96DA\u96DB"+
+        "\u96DC\u96DD\u96DE\u96DF\u96E1\u96E2\u96E3\u96E4"+
+        "\u96E5\u96E6\u96E7\u96EB\uFFFD\u96EC\u96ED\u96EE"+
+        "\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB"+
+        "\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B"+
+        "\u970C\u9710\u9711\u9712\u9714\u9715\u9717\u9718"+
+        "\u9719\u971A\u971B\u971D\u971F\u9720\u643F\u64D8"+
+        "\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07"+
+        "\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29"+
+        "\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252"+
+        "\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC"+
+        "\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7"+
+        "\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD"+
+        "\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D"+
+        "\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E"+
+        "\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159"+
+        "\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167"+
+        "\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA"+
+        "\u81CC\u6726\u81CA\u81BB\u9721\u9722\u9723\u9724"+
+        "\u9725\u9726\u9727\u9728\u9729\u972B\u972C\u972E"+
+        "\u972F\u9731\u9733\u9734\u9735\u9736\u9737\u973A"+
+        "\u973B\u973C\u973D\u973F\u9740\u9741\u9742\u9743"+
+        "\u9744\u9745\u9746\u9747\u9748\u9749\u974A\u974B"+
+        "\u974C\u974D\u974E\u974F\u9750\u9751\u9754\u9755"+
+        "\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764"+
+        "\u9766\u9767\u9768\u976A\u976B\u976C\u976D\u976E"+
+        "\u976F\u9770\u9771\uFFFD\u9772\u9775\u9777\u9778"+
+        "\u9779\u977A\u977B\u977D\u977E\u977F\u9780\u9781"+
+        "\u9782\u9783\u9784\u9786\u9787\u9788\u9789\u978A"+
+        "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797"+
+        "\u9799\u979A\u979B\u979C\u979D\u81C1\u81A6\u6B24"+
+        "\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3"+
+        "\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590"+
+        "\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE"+
+        "\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0"+
+        "\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116"+
+        "\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A"+
+        "\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0"+
+        "\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166"+
+        "\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940"+
+        "\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957"+
+        "\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7"+
+        "\u79B3\u5FD1\u5FD0\u979E\u979F\u97A1\u97A2\u97A4"+
+        "\u97A5\u97A6\u97A7\u97A8\u97A9\u97AA\u97AC\u97AE"+
+        "\u97B0\u97B1\u97B3\u97B5\u97B6\u97B7\u97B8\u97B9"+
+        "\u97BA\u97BB\u97BC\u97BD\u97BE\u97BF\u97C0\u97C1"+
+        "\u97C2\u97C3\u97C4\u97C5\u97C6\u97C7\u97C8\u97C9"+
+        "\u97CA\u97CB\u97CC\u97CD\u97CE\u97CF\u97D0\u97D1"+
+        "\u97D2\u97D3\u97D4\u97D5\u97D6\u97D7\u97D8\u97D9"+
+        "\u97DA\u97DB\u97DC\u97DD\u97DE\u97DF\u97E0\u97E1"+
+        "\u97E2\u97E3\uFFFD\u97E4\u97E5\u97E8\u97EE\u97EF"+
+        "\u97F0\u97F1\u97F2\u97F4\u97F7\u97F8\u97F9\u97FA"+
+        "\u97FB\u97FC\u97FD\u97FE\u97FF\u9800\u9801\u9802"+
+        "\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u980A"+
+        "\u980B\u980C\u980D\u980E\u603C\u605D\u605A\u6067"+
+        "\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9"+
+        "\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6"+
+        "\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811"+
+        "\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F"+
+        "\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856"+
+        "\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893"+
+        "\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5"+
+        "\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913"+
+        "\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1"+
+        "\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719"+
+        "\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743"+
+        "\u775A\u7768\u980F\u9810\u9811\u9812\u9813\u9814"+
+        "\u9815\u9816\u9817\u9818\u9819\u981A\u981B\u981C"+
+        "\u981D\u981E\u981F\u9820\u9821\u9822\u9823\u9824"+
+        "\u9825\u9826\u9827\u9828\u9829\u982A\u982B\u982C"+
+        "\u982D\u982E\u982F\u9830\u9831\u9832\u9833\u9834"+
+        "\u9835\u9836\u9837\u9838\u9839\u983A\u983B\u983C"+
+        "\u983D\u983E\u983F\u9840\u9841\u9842\u9843\u9844"+
+        "\u9845\u9846\u9847\u9848\u9849\u984A\u984B\u984C"+
+        "\u984D\uFFFD\u984E\u984F\u9850\u9851\u9852\u9853"+
+        "\u9854\u9855\u9856\u9857\u9858\u9859\u985A\u985B"+
+        "\u985C\u985D\u985E\u985F\u9860\u9861\u9862\u9863"+
+        "\u9864\u9865\u9866\u9867\u9868\u9869\u986A\u986B"+
+        "\u986C\u986D\u986E\u7762\u7765\u777F\u778D\u777D"+
+        "\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD"+
+        "\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579"+
+        "\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71"+
+        "\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486"+
+        "\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494"+
+        "\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB"+
+        "\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6"+
+        "\u94B7\u94B8\u94B9\u94BA\u94BC\u94BD\u94BF\u94C4"+
+        "\u94C8\u94C9\u94CA\u94CB\u94CC\u94CD\u94CE\u94D0"+
+        "\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB"+
+        "\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8"+
+        "\u94EA\u986F\u9870\u9871\u9872\u9873\u9874\u988B"+
+        "\u988E\u9892\u9895\u9899\u98A3\u98A8\u98A9\u98AA"+
+        "\u98AB\u98AC\u98AD\u98AE\u98AF\u98B0\u98B1\u98B2"+
+        "\u98B3\u98B4\u98B5\u98B6\u98B7\u98B8\u98B9\u98BA"+
+        "\u98BB\u98BC\u98BD\u98BE\u98BF\u98C0\u98C1\u98C2"+
+        "\u98C3\u98C4\u98C5\u98C6\u98C7\u98C8\u98C9\u98CA"+
+        "\u98CB\u98CC\u98CD\u98CF\u98D0\u98D4\u98D6\u98D7"+
+        "\u98DB\u98DC\u98DD\u98E0\u98E1\u98E2\u98E3\u98E4"+
+        "\uFFFD\u98E5\u98E6\u98E9\u98EA\u98EB\u98EC\u98ED"+
+        "\u98EE\u98EF\u98F0\u98F1\u98F2\u98F3\u98F4\u98F5"+
+        "\u98F6\u98F7\u98F8\u98F9\u98FA\u98FB\u98FC\u98FD"+
+        "\u98FE\u98FF\u9900\u9901\u9902\u9903\u9904\u9905"+
+        "\u9906\u9907\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4"+
+        "\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502"+
+        "\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512"+
+        "\u9513\u9514\u9515\u9516\u9518\u951B\u951D\u951E"+
+        "\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532"+
+        "\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542"+
+        "\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F"+
+        "\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B"+
+        "\u955E\u955F\u955D\u9561\u9562\u9564\u9565\u9566"+
+        "\u9567\u9568\u9569\u956A\u956B\u956C\u956F\u9571"+
+        "\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED"+
+        "\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14";
+
+    private final static String innerIndex7=
+        "\u9908\u9909\u990A\u990B\u990C\u990E\u990F\u9911"+
+        "\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919"+
+        "\u991A\u991B\u991C\u991D\u991E\u991F\u9920\u9921"+
+        "\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929"+
+        "\u992A\u992B\u992C\u992D\u992F\u9930\u9931\u9932"+
+        "\u9933\u9934\u9935\u9936\u9937\u9938\u9939\u993A"+
+        "\u993B\u993C\u993D\u993E\u993F\u9940\u9941\u9942"+
+        "\u9943\u9944\u9945\u9946\u9947\u9948\u9949\uFFFD"+
+        "\u994A\u994B\u994C\u994D\u994E\u994F\u9950\u9951"+
+        "\u9952\u9953\u9956\u9957\u9958\u9959\u995A\u995B"+
+        "\u995C\u995D\u995E\u995F\u9960\u9961\u9962\u9964"+
+        "\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983"+
+        "\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688"+
+        "\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20"+
+        "\u9E22\u9E28\u9E29\u9E2A\u9E2B\u9E2C\u9E32\u9E31"+
+        "\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42"+
+        "\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E"+
+        "\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63"+
+        "\u9E66\u9E67\u9E68\u9E69\u9E6A\u9E6B\u9E6C\u9E71"+
+        "\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC"+
+        "\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3"+
+        "\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB"+
+        "\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605"+
+        "\u760C\u7617\u760A\u7625\u7618\u7615\u7619\u998C"+
+        "\u998E\u999A\u999B\u999C\u999D\u999E\u999F\u99A0"+
+        "\u99A1\u99A2\u99A3\u99A4\u99A6\u99A7\u99A9\u99AA"+
+        "\u99AB\u99AC\u99AD\u99AE\u99AF\u99B0\u99B1\u99B2"+
+        "\u99B3\u99B4\u99B5\u99B6\u99B7\u99B8\u99B9\u99BA"+
+        "\u99BB\u99BC\u99BD\u99BE\u99BF\u99C0\u99C1\u99C2"+
+        "\u99C3\u99C4\u99C5\u99C6\u99C7\u99C8\u99C9\u99CA"+
+        "\u99CB\u99CC\u99CD\u99CE\u99CF\u99D0\u99D1\u99D2"+
+        "\u99D3\u99D4\u99D5\u99D6\u99D7\u99D8\uFFFD\u99D9"+
+        "\u99DA\u99DB\u99DC\u99DD\u99DE\u99DF\u99E0\u99E1"+
+        "\u99E2\u99E3\u99E4\u99E5\u99E6\u99E7\u99E8\u99E9"+
+        "\u99EA\u99EB\u99EC\u99ED\u99EE\u99EF\u99F0\u99F1"+
+        "\u99F2\u99F3\u99F4\u99F5\u99F6\u99F7\u99F8\u99F9"+
+        "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F"+
+        "\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C"+
+        "\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80"+
+        "\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD"+
+        "\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2"+
+        "\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5"+
+        "\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919"+
+        "\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966"+
+        "\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014"+
+        "\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029"+
+        "\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052"+
+        "\u8069\u8071\u8983\u9878\u9880\u9883\u99FA\u99FB"+
+        "\u99FC\u99FD\u99FE\u99FF\u9A00\u9A01\u9A02\u9A03"+
+        "\u9A04\u9A05\u9A06\u9A07\u9A08\u9A09\u9A0A\u9A0B"+
+        "\u9A0C\u9A0D\u9A0E\u9A0F\u9A10\u9A11\u9A12\u9A13"+
+        "\u9A14\u9A15\u9A16\u9A17\u9A18\u9A19\u9A1A\u9A1B"+
+        "\u9A1C\u9A1D\u9A1E\u9A1F\u9A20\u9A21\u9A22\u9A23"+
+        "\u9A24\u9A25\u9A26\u9A27\u9A28\u9A29\u9A2A\u9A2B"+
+        "\u9A2C\u9A2D\u9A2E\u9A2F\u9A30\u9A31\u9A32\u9A33"+
+        "\u9A34\u9A35\u9A36\u9A37\u9A38\uFFFD\u9A39\u9A3A"+
+        "\u9A3B\u9A3C\u9A3D\u9A3E\u9A3F\u9A40\u9A41\u9A42"+
+        "\u9A43\u9A44\u9A45\u9A46\u9A47\u9A48\u9A49\u9A4A"+
+        "\u9A4B\u9A4C\u9A4D\u9A4E\u9A4F\u9A50\u9A51\u9A52"+
+        "\u9A53\u9A54\u9A55\u9A56\u9A57\u9A58\u9A59\u9889"+
+        "\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F"+
+        "\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E"+
+        "\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC"+
+        "\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4"+
+        "\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF"+
+        "\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713"+
+        "\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8"+
+        "\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725"+
+        "\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737"+
+        "\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770"+
+        "\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759"+
+        "\u8765\u8793\u87AF\u87A8\u87D2\u9A5A\u9A5B\u9A5C"+
+        "\u9A5D\u9A5E\u9A5F\u9A60\u9A61\u9A62\u9A63\u9A64"+
+        "\u9A65\u9A66\u9A67\u9A68\u9A69\u9A6A\u9A6B\u9A72"+
+        "\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6"+
+        "\u9AA9\u9AAA\u9AAB\u9AAC\u9AAD\u9AAE\u9AAF\u9AB2"+
+        "\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF"+
+        "\u9AC3\u9AC4\u9AC6\u9AC7\u9AC8\u9AC9\u9ACA\u9ACD"+
+        "\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7"+
+        "\u9AD9\u9ADA\u9ADB\u9ADC\uFFFD\u9ADD\u9ADE\u9AE0"+
+        "\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA"+
+        "\u9AEC\u9AEE\u9AF0\u9AF1\u9AF2\u9AF3\u9AF4\u9AF5"+
+        "\u9AF6\u9AF7\u9AF8\u9AFA\u9AFC\u9AFD\u9AFE\u9AFF"+
+        "\u9B00\u9B01\u9B02\u9B04\u9B05\u9B06\u87C6\u8788"+
+        "\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5"+
+        "\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB"+
+        "\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B"+
+        "\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210"+
+        "\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B"+
+        "\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20"+
+        "\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45"+
+        "\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72"+
+        "\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8"+
+        "\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1"+
+        "\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE"+
+        "\u7BFC\u7C0F\u7C16\u7C0B\u9B07\u9B09\u9B0A\u9B0B"+
+        "\u9B0C\u9B0D\u9B0E\u9B10\u9B11\u9B12\u9B14\u9B15"+
+        "\u9B16\u9B17\u9B18\u9B19\u9B1A\u9B1B\u9B1C\u9B1D"+
+        "\u9B1E\u9B20\u9B21\u9B22\u9B24\u9B25\u9B26\u9B27"+
+        "\u9B28\u9B29\u9B2A\u9B2B\u9B2C\u9B2D\u9B2E\u9B30"+
+        "\u9B31\u9B33\u9B34\u9B35\u9B36\u9B37\u9B38\u9B39"+
+        "\u9B3A\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B"+
+        "\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\u9B56\u9B57"+
+        "\u9B58\u9B59\u9B5A\uFFFD\u9B5B\u9B5C\u9B5D\u9B5E"+
+        "\u9B5F\u9B60\u9B61\u9B62\u9B63\u9B64\u9B65\u9B66"+
+        "\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D\u9B6E"+
+        "\u9B6F\u9B70\u9B71\u9B72\u9B73\u9B74\u9B75\u9B76"+
+        "\u9B77\u9B78\u9B79\u9B7A\u9B7B\u7C1F\u7C2A\u7C26"+
+        "\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC"+
+        "\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B"+
+        "\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B"+
+        "\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8"+
+        "\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2"+
+        "\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2"+
+        "\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5"+
+        "\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5"+
+        "\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6"+
+        "\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94"+
+        "\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150"+
+        "\u914E\u914F\u9164\u9B7C\u9B7D\u9B7E\u9B7F\u9B80"+
+        "\u9B81\u9B82\u9B83\u9B84\u9B85\u9B86\u9B87\u9B88"+
+        "\u9B89\u9B8A\u9B8B\u9B8C\u9B8D\u9B8E\u9B8F\u9B90"+
+        "\u9B91\u9B92\u9B93\u9B94\u9B95\u9B96\u9B97\u9B98"+
+        "\u9B99\u9B9A\u9B9B\u9B9C\u9B9D\u9B9E\u9B9F\u9BA0"+
+        "\u9BA1\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7\u9BA8"+
+        "\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF\u9BB0"+
+        "\u9BB1\u9BB2\u9BB3\u9BB4\u9BB5\u9BB6\u9BB7\u9BB8"+
+        "\u9BB9\u9BBA\uFFFD\u9BBB\u9BBC\u9BBD\u9BBE\u9BBF"+
+        "\u9BC0\u9BC1\u9BC2\u9BC3\u9BC4\u9BC5\u9BC6\u9BC7"+
+        "\u9BC8\u9BC9\u9BCA\u9BCB\u9BCC\u9BCD\u9BCE\u9BCF"+
+        "\u9BD0\u9BD1\u9BD2\u9BD3\u9BD4\u9BD5\u9BD6\u9BD7"+
+        "\u9BD8\u9BD9\u9BDA\u9BDB\u9162\u9161\u9170\u9169"+
+        "\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185"+
+        "\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE"+
+        "\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB"+
+        "\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4"+
+        "\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6"+
+        "\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09"+
+        "\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F"+
+        "\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41"+
+        "\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F"+
+        "\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78"+
+        "\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE"+
+        "\u89DA\u89DC\u9BDC\u9BDD\u9BDE\u9BDF\u9BE0\u9BE1"+
+        "\u9BE2\u9BE3\u9BE4\u9BE5\u9BE6\u9BE7\u9BE8\u9BE9"+
+        "\u9BEA\u9BEB\u9BEC\u9BED\u9BEE\u9BEF\u9BF0\u9BF1"+
+        "\u9BF2\u9BF3\u9BF4\u9BF5\u9BF6\u9BF7\u9BF8\u9BF9"+
+        "\u9BFA\u9BFB\u9BFC\u9BFD\u9BFE\u9BFF\u9C00\u9C01"+
+        "\u9C02\u9C03\u9C04\u9C05\u9C06\u9C07\u9C08\u9C09"+
+        "\u9C0A\u9C0B\u9C0C\u9C0D\u9C0E\u9C0F\u9C10\u9C11"+
+        "\u9C12\u9C13\u9C14\u9C15\u9C16\u9C17\u9C18\u9C19"+
+        "\u9C1A\uFFFD\u9C1B\u9C1C\u9C1D\u9C1E\u9C1F\u9C20"+
+        "\u9C21\u9C22\u9C23\u9C24\u9C25\u9C26\u9C27\u9C28"+
+        "\u9C29\u9C2A\u9C2B\u9C2C\u9C2D\u9C2E\u9C2F\u9C30"+
+        "\u9C31\u9C32\u9C33\u9C34\u9C35\u9C36\u9C37\u9C38"+
+        "\u9C39\u9C3A\u9C3B\u89E5\u89EB\u89EF\u8A3E\u8B26"+
+        "\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F"+
+        "\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85"+
+        "\u9F86\u9F87\u9F88\u9F89\u9F8A\u9F8C\u9EFE\u9F0B"+
+        "\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0"+
+        "\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E"+
+        "\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23"+
+        "\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A"+
+        "\u9C9B\u9C9E\u9C9F\u9CA0\u9CA1\u9CA2\u9CA3\u9CA5"+
+        "\u9CA6\u9CA7\u9CA8\u9CA9\u9CAB\u9CAD\u9CAE\u9CB0"+
+        "\u9CB1\u9CB2\u9CB3\u9CB4\u9CB5\u9CB6\u9CB7\u9CBA"+
+        "\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA"+
+        "\u9CCB\u9C3C\u9C3D\u9C3E\u9C3F\u9C40\u9C41\u9C42"+
+        "\u9C43\u9C44\u9C45\u9C46\u9C47\u9C48\u9C49\u9C4A"+
+        "\u9C4B\u9C4C\u9C4D\u9C4E\u9C4F\u9C50\u9C51\u9C52"+
+        "\u9C53\u9C54\u9C55\u9C56\u9C57\u9C58\u9C59\u9C5A"+
+        "\u9C5B\u9C5C\u9C5D\u9C5E\u9C5F\u9C60\u9C61\u9C62"+
+        "\u9C63\u9C64\u9C65\u9C66\u9C67\u9C68\u9C69\u9C6A"+
+        "\u9C6B\u9C6C\u9C6D\u9C6E\u9C6F\u9C70\u9C71\u9C72"+
+        "\u9C73\u9C74\u9C75\u9C76\u9C77\u9C78\u9C79\u9C7A"+
+        "\uFFFD\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89"+
+        "\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99"+
+        "\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\u9CBF\u9CC0"+
+        "\u9CC1\u9CC2\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB"+
+        "\u9CE0\u9CE1\u9CCC\u9CCD\u9CCE\u9CCF\u9CD0\u9CD3"+
+        "\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF"+
+        "\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB"+
+        "\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6"+
+        "\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC"+
+        "\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51"+
+        "\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6"+
+        "\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13"+
+        "\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88"+
+        "\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD"+
+        "\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF"+
+        "\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"+
+        "\u9CE3\u9CE4\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+
+        "\u9CEB\u9CEC\u9CED\u9CEE\u9CEF\u9CF0\u9CF1\u9CF2"+
+        "\u9CF3\u9CF4\u9CF5\u9CF6\u9CF7\u9CF8\u9CF9\u9CFA"+
+        "\u9CFB\u9CFC\u9CFD\u9CFE\u9CFF\u9D00\u9D01\u9D02"+
+        "\u9D03\u9D04\u9D05\u9D06\u9D07\u9D08\u9D09\u9D0A"+
+        "\u9D0B\u9D0C\u9D0D\u9D0E\u9D0F\u9D10\u9D11\u9D12"+
+        "\u9D13\u9D14\u9D15\u9D16\u9D17\u9D18\u9D19\u9D1A"+
+        "\u9D1B\u9D1C\u9D1D\u9D1E\u9D1F\u9D20\u9D21\uFFFD"+
+        "\u9D22\u9D23\u9D24\u9D25\u9D26\u9D27\u9D28\u9D29"+
+        "\u9D2A\u9D2B\u9D2C\u9D2D\u9D2E\u9D2F\u9D30\u9D31"+
+        "\u9D32\u9D33\u9D34\u9D35\u9D36\u9D37\u9D38\u9D39"+
+        "\u9D3A\u9D3B\u9D3C\u9D3D\u9D3E\u9D3F\u9D40\u9D41"+
+        "\u9D42\uE234\uE235\uE236\uE237\uE238\uE239\uE23A"+
+        "\uE23B\uE23C\uE23D\uE23E\uE23F\uE240\uE241\uE242"+
+        "\uE243\uE244\uE245\uE246\uE247\uE248\uE249\uE24A"+
+        "\uE24B\uE24C\uE24D\uE24E\uE24F\uE250\uE251\uE252"+
+        "\uE253\uE254\uE255\uE256\uE257\uE258\uE259\uE25A"+
+        "\uE25B\uE25C\uE25D\uE25E\uE25F\uE260\uE261\uE262"+
+        "\uE263\uE264\uE265\uE266\uE267\uE268\uE269\uE26A"+
+        "\uE26B\uE26C\uE26D\uE26E\uE26F\uE270\uE271\uE272"+
+        "\uE273\uE274\uE275\uE276\uE277\uE278\uE279\uE27A"+
+        "\uE27B\uE27C\uE27D\uE27E\uE27F\uE280\uE281\uE282"+
+        "\uE283\uE284\uE285\uE286\uE287\uE288\uE289\uE28A"+
+        "\uE28B\uE28C\uE28D\uE28E\uE28F\uE290\uE291\u9D43"+
+        "\u9D44\u9D45\u9D46\u9D47\u9D48\u9D49\u9D4A\u9D4B"+
+        "\u9D4C\u9D4D\u9D4E\u9D4F\u9D50\u9D51\u9D52\u9D53"+
+        "\u9D54\u9D55\u9D56\u9D57\u9D58\u9D59\u9D5A\u9D5B"+
+        "\u9D5C\u9D5D\u9D5E\u9D5F\u9D60\u9D61\u9D62\u9D63"+
+        "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+
+        "\u9D6C\u9D6D\u9D6E\u9D6F\u9D70\u9D71\u9D72\u9D73"+
+        "\u9D74\u9D75\u9D76\u9D77\u9D78\u9D79\u9D7A\u9D7B"+
+        "\u9D7C\u9D7D\u9D7E\u9D7F\u9D80\u9D81\uFFFD\u9D82"+
+        "\u9D83\u9D84\u9D85\u9D86\u9D87\u9D88\u9D89\u9D8A"+
+        "\u9D8B\u9D8C\u9D8D\u9D8E\u9D8F\u9D90\u9D91\u9D92"+
+        "\u9D93\u9D94\u9D95\u9D96\u9D97\u9D98\u9D99\u9D9A"+
+        "\u9D9B\u9D9C\u9D9D\u9D9E\u9D9F\u9DA0\u9DA1\u9DA2"+
+        "\uE292\uE293\uE294\uE295\uE296\uE297\uE298\uE299"+
+        "\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F\uE2A0\uE2A1"+
+        "\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7\uE2A8\uE2A9"+
+        "\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF\uE2B0\uE2B1"+
+        "\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7\uE2B8\uE2B9"+
+        "\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF\uE2C0\uE2C1"+
+        "\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7\uE2C8\uE2C9"+
+        "\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF\uE2D0\uE2D1"+
+        "\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7\uE2D8\uE2D9"+
+        "\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF\uE2E0\uE2E1"+
+        "\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7\uE2E8\uE2E9"+
+        "\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF\u9DA3\u9DA4"+
+        "\u9DA5\u9DA6\u9DA7\u9DA8\u9DA9\u9DAA\u9DAB\u9DAC"+
+        "\u9DAD\u9DAE\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4"+
+        "\u9DB5\u9DB6\u9DB7\u9DB8\u9DB9\u9DBA\u9DBB\u9DBC"+
+        "\u9DBD\u9DBE\u9DBF\u9DC0\u9DC1\u9DC2\u9DC3\u9DC4"+
+        "\u9DC5\u9DC6\u9DC7\u9DC8\u9DC9\u9DCA\u9DCB\u9DCC"+
+        "\u9DCD\u9DCE\u9DCF\u9DD0\u9DD1\u9DD2\u9DD3\u9DD4"+
+        "\u9DD5\u9DD6\u9DD7\u9DD8\u9DD9\u9DDA\u9DDB\u9DDC"+
+        "\u9DDD\u9DDE\u9DDF\u9DE0\u9DE1\uFFFD\u9DE2\u9DE3"+
+        "\u9DE4\u9DE5\u9DE6\u9DE7\u9DE8\u9DE9\u9DEA\u9DEB"+
+        "\u9DEC\u9DED\u9DEE\u9DEF\u9DF0\u9DF1\u9DF2\u9DF3"+
+        "\u9DF4\u9DF5\u9DF6\u9DF7\u9DF8\u9DF9\u9DFA\u9DFB"+
+        "\u9DFC\u9DFD\u9DFE\u9DFF\u9E00\u9E01\u9E02\uE2F0"+
+        "\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7\uE2F8"+
+        "\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE\uE2FF\uE300"+
+        "\uE301\uE302\uE303\uE304\uE305\uE306\uE307\uE308"+
+        "\uE309\uE30A\uE30B\uE30C\uE30D\uE30E\uE30F\uE310"+
+        "\uE311\uE312\uE313\uE314\uE315\uE316\uE317\uE318"+
+        "\uE319\uE31A\uE31B\uE31C\uE31D\uE31E\uE31F\uE320"+
+        "\uE321\uE322\uE323\uE324\uE325\uE326\uE327\uE328"+
+        "\uE329\uE32A\uE32B\uE32C\uE32D\uE32E\uE32F\uE330"+
+        "\uE331\uE332\uE333\uE334\uE335\uE336\uE337\uE338"+
+        "\uE339\uE33A\uE33B\uE33C\uE33D\uE33E\uE33F\uE340"+
+        "\uE341\uE342\uE343\uE344\uE345\uE346\uE347\uE348"+
+        "\uE349\uE34A\uE34B\uE34C\uE34D\u9E03\u9E04\u9E05"+
+        "\u9E06\u9E07\u9E08\u9E09\u9E0A\u9E0B\u9E0C\u9E0D"+
+        "\u9E0E\u9E0F\u9E10\u9E11\u9E12\u9E13\u9E14\u9E15"+
+        "\u9E16\u9E17\u9E18\u9E19\u9E1A\u9E1B\u9E1C\u9E1D"+
+        "\u9E1E\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C"+
+        "\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59"+
+        "\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F"+
+        "\u9E72\u9E74\u9E75\u9E76\u9E77\u9E78\u9E79\u9E7A"+
+        "\u9E7B\u9E7C\u9E7D\u9E80\uFFFD\u9E81\u9E83\u9E84"+
+        "\u9E85\u9E86\u9E89\u9E8A\u9E8C\u9E8D\u9E8E\u9E8F"+
+        "\u9E90\u9E91\u9E94\u9E95\u9E96\u9E97\u9E98\u9E99"+
+        "\u9E9A\u9E9B\u9E9C\u9E9E\u9EA0\u9EA1\u9EA2\u9EA3"+
+        "\u9EA4\u9EA5\u9EA7\u9EA8\u9EA9\u9EAA\uE34E\uE34F"+
+        "\uE350\uE351\uE352\uE353\uE354\uE355\uE356\uE357"+
+        "\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F"+
+        "\uE360\uE361\uE362\uE363\uE364\uE365\uE366\uE367"+
+        "\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E\uE36F"+
+        "\uE370\uE371\uE372\uE373\uE374\uE375\uE376\uE377"+
+        "\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE37F"+
+        "\uE380\uE381\uE382\uE383\uE384\uE385\uE386\uE387"+
+        "\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F"+
+        "\uE390\uE391\uE392\uE393\uE394\uE395\uE396\uE397"+
+        "\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F"+
+        "\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6\uE3A7"+
+        "\uE3A8\uE3A9\uE3AA\uE3AB\u9EAB\u9EAC\u9EAD\u9EAE"+
+        "\u9EAF\u9EB0\u9EB1\u9EB2\u9EB3\u9EB5\u9EB6\u9EB7"+
+        "\u9EB9\u9EBA\u9EBC\u9EBF\u9EC0\u9EC1\u9EC2\u9EC3"+
+        "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0"+
+        "\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE"+
+        "\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED"+
+        "\u9EEE\u9EF0\u9EF1\u9EF2\u9EF3\u9EF4\u9EF5\u9EF6"+
+        "\u9EF7\u9EF8\u9EFA\u9EFD\u9EFF\u9F00\u9F01\u9F02"+
+        "\u9F03\u9F04\u9F05\uFFFD\u9F06\u9F07\u9F08\u9F09"+
+        "\u9F0A\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16"+
+        "\u9F18\u9F1A\u9F1B\u9F1C\u9F1D\u9F1E\u9F1F\u9F21"+
+        "\u9F23\u9F24\u9F25\u9F26\u9F27\u9F28\u9F29\u9F2A"+
+        "\u9F2B\u9F2D\u9F2E\u9F30\u9F31\uE3AC\uE3AD\uE3AE"+
+        "\uE3AF\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6"+
+        "\uE3B7\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE"+
+        "\uE3BF\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6"+
+        "\uE3C7\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE"+
+        "\uE3CF\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6"+
+        "\uE3D7\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE"+
+        "\uE3DF\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6"+
+        "\uE3E7\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE"+
+        "\uE3EF\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6"+
+        "\uE3F7\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE"+
+        "\uE3FF\uE400\uE401\uE402\uE403\uE404\uE405\uE406"+
+        "\uE407\uE408\uE409\u9F32\u9F33\u9F34\u9F35\u9F36"+
+        "\u9F38\u9F3A\u9F3C\u9F3F\u9F40\u9F41\u9F42\u9F43"+
+        "\u9F45\u9F46\u9F47\u9F48\u9F49\u9F4A\u9F4B\u9F4C"+
+        "\u9F4D\u9F4E\u9F4F\u9F52\u9F53\u9F54\u9F55\u9F56"+
+        "\u9F57\u9F58\u9F59\u9F5A\u9F5B\u9F5C\u9F5D\u9F5E"+
+        "\u9F5F\u9F60\u9F61\u9F62\u9F63\u9F64\u9F65\u9F66"+
+        "\u9F67\u9F68\u9F69\u9F6A\u9F6B\u9F6C\u9F6D\u9F6E"+
+        "\u9F6F\u9F70\u9F71\u9F72\u9F73\u9F74\u9F75\u9F76"+
+        "\u9F77\u9F78\uFFFD\u9F79\u9F7A\u9F7B\u9F7C\u9F7D"+
+        "\u9F7E\u9F81\u9F82\u9F8D\u9F8E\u9F8F\u9F90\u9F91"+
+        "\u9F92\u9F93\u9F94\u9F95\u9F96\u9F97\u9F98\u9F9C"+
+        "\u9F9D\u9F9E\u9FA1\u9FA2\u9FA3\u9FA4\u9FA5\uF92C"+
+        "\uF979\uF995\uF9E7\uF9F1\uE40A\uE40B\uE40C\uE40D"+
+        "\uE40E\uE40F\uE410\uE411\uE412\uE413\uE414\uE415"+
+        "\uE416\uE417\uE418\uE419\uE41A\uE41B\uE41C\uE41D"+
+        "\uE41E\uE41F\uE420\uE421\uE422\uE423\uE424\uE425"+
+        "\uE426\uE427\uE428\uE429\uE42A\uE42B\uE42C\uE42D"+
+        "\uE42E\uE42F\uE430\uE431\uE432\uE433\uE434\uE435"+
+        "\uE436\uE437\uE438\uE439\uE43A\uE43B\uE43C\uE43D"+
+        "\uE43E\uE43F\uE440\uE441\uE442\uE443\uE444\uE445"+
+        "\uE446\uE447\uE448\uE449\uE44A\uE44B\uE44C\uE44D"+
+        "\uE44E\uE44F\uE450\uE451\uE452\uE453\uE454\uE455"+
+        "\uE456\uE457\uE458\uE459\uE45A\uE45B\uE45C\uE45D"+
+        "\uE45E\uE45F\uE460\uE461\uE462\uE463\uE464\uE465"+
+        "\uE466\uE467\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13"+
+        "\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27"+
+        "\uFA28\uFA29\u2E81\uE816\uE817\uE818\u2E84\u3473"+
+        "\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C"+
+        "\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0"+
+        "\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832"+
+        "\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7"+
+        "\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C"+
+        "\uE843\uFFFD\u4723\u4729\u477C\u478D\u2ECA\u4947"+
+        "\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B"+
+        "\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1"+
+        "\u4C77\u4CA2\u4D13\u4D14\u4D15\u4D16\u4D17\u4D18"+
+        "\u4D19\u4DAE\uE864\uE468\uE469\uE46A\uE46B\uE46C"+
+        "\uE46D\uE46E\uE46F\uE470\uE471\uE472\uE473\uE474"+
+        "\uE475\uE476\uE477\uE478\uE479\uE47A\uE47B\uE47C"+
+        "\uE47D\uE47E\uE47F\uE480\uE481\uE482\uE483\uE484"+
+        "\uE485\uE486\uE487\uE488\uE489\uE48A\uE48B\uE48C"+
+        "\uE48D\uE48E\uE48F\uE490\uE491\uE492\uE493\uE494"+
+        "\uE495\uE496\uE497\uE498\uE499\uE49A\uE49B\uE49C"+
+        "\uE49D\uE49E\uE49F\uE4A0\uE4A1\uE4A2\uE4A3\uE4A4"+
+        "\uE4A5\uE4A6\uE4A7\uE4A8\uE4A9\uE4AA\uE4AB\uE4AC"+
+        "\uE4AD\uE4AE\uE4AF\uE4B0\uE4B1\uE4B2\uE4B3\uE4B4"+
+        "\uE4B5\uE4B6\uE4B7\uE4B8\uE4B9\uE4BA\uE4BB\uE4BC"+
+        "\uE4BD\uE4BE\uE4BF\uE4C0\uE4C1\uE4C2\uE4C3\uE4C4"+
+        "\uE4C5";
+
+    final static short index1[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+        96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+        112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 0
+    };
+
+    static String index2[] = {
+        innerIndex0,
+        innerIndex1,
+        innerIndex2,
+        innerIndex3,
+        innerIndex4,
+        innerIndex5,
+        innerIndex6,
+        innerIndex7
+    };
+
+
+
+
+
+    private final static String innerEncoderIndex0=
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007"+
+        "\u2008\u2009\u200A\u200B\u200C\u200D\u200E\u200F"+
+        "\u2010\u2011\u2012\u2013\u2014\u2015\u2016\u2017"+
+        "\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F"+
+        "\u2020\u2021\u2022\u2023\uA1E8\u2024\u2025\uA1EC"+
+        "\uA1A7\u2026\u2027\u2028\u2029\u202A\u202B\u202C"+
+        "\uA1E3\uA1C0\u202D\u202E\u202F\u2030\u2031\uA1A4"+
+        "\u2032\u2033\u2034\u2035\u2036\u2037\u2038\u2039"+
+        "\u203A\u203B\u203C\u203D\u203E\u203F\u2040\u2041"+
+        "\u2042\u2043\u2044\u2045\u2046\u2047\u2048\u2049"+
+        "\u204A\u204B\u204C\u204D\u204E\u204F\u2050\uA1C1"+
+        "\u2051\u2052\u2053\u2054\u2055\u2056\u2057\u2058"+
+        "\uA8A4\uA8A2\u2059\u205A\u205B\u205C\u205D\u205E"+
+        "\uA8A8\uA8A6\uA8BA\u205F\uA8AC\uA8AA\u2060\u2061"+
+        "\u2062\u2063\uA8B0\uA8AE\u2064\u2065\u2066\uA1C2"+
+        "\u2067\uA8B4\uA8B2\u2068\uA8B9\u2069\u206A\u206B"+
+        "\u206C\uA8A1\u206D\u206E\u206F\u2070\u2071\u2072"+
+        "\u2073\u2074\u2075\u2076\u2077\u2078\u2079\u207A"+
+        "\u207B\u207C\u207D\uA8A5\u207E\u207F\u2080\u2081"+
+        "\u2082\u2083\u2084\uA8A7\u2085\u2086\u2087\u2088"+
+        "\u2089\u208A\u208B\u208C\u208D\u208E\u208F\u2090"+
+        "\u2091\u2092\u2093\uA8A9\u2094\u2095\u2096\u2097"+
+        "\u2098\u2099\u209A\u209B\u209C\u209D\u209E\u209F"+
+        "\u20A0\u20A1\u20A2\u20A3\u20A4\u20A5\u20A6\u20A7"+
+        "\u20A8\u20A9\u20AA\u20AB\uA8BD\u20AC\u20AD\u20AE"+
+        "\uA8BE\u20AF\u20B0\u20B1\u20B2\uA8AD\u20B3\u20B4"+
+        "\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC"+
+        "\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4"+
+        "\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC"+
+        "\u20CD\u20CE\u20CF\uA8B1\u20D0\u20D1\u20D2\u20D3"+
+        "\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB"+
+        "\u20DC\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3"+
+        "\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB"+
+        "\u20EC\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2\u20F3"+
+        "\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA\u20FB"+
+        "\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102\u2103"+
+        "\u2104\u2105\u2106\u2107\u2108\u2109\u210A\u210B"+
+        "\u210C\u210D\u210E\u210F\u2110\u2111\u2112\u2113"+
+        "\u2114\u2115\u2116\u2117\u2118\u2119\u211A\u211B"+
+        "\u211C\u211D\u211E\u211F\u2120\u2121\u2122\u2123"+
+        "\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B"+
+        "\u212C\u212D\u212E\u212F\u2130\u2131\uA8A3\u2132"+
+        "\uA8AB\u2133\uA8AF\u2134\uA8B3\u2135\uA8B5\u2136"+
+        "\uA8B6\u2137\uA8B7\u2138\uA8B8\u2139\u213A\u213B"+
+        "\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143"+
+        "\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B"+
+        "\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153"+
+        "\u2154\uA8BF\u2155\u2156\u2157\u2158\u2159\u215A"+
+        "\u215B\u215C\u215D\u215E\u215F\u2160\u2161\u2162"+
+        "\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A"+
+        "\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172"+
+        "\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A"+
+        "\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182"+
+        "\u2183\u2184\u2185\u2186\u2187\u2188\u2189\u218A"+
+        "\u218B\u218C\u218D\u218E\u218F\u2190\u2191\u2192"+
+        "\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219A"+
+        "\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2"+
+        "\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA"+
+        "\u21AB\uA8BB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1"+
+        "\u21B2\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9"+
+        "\u21BA\uA8C0\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0"+
+        "\u21C1\u21C2\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8"+
+        "\u21C9\u21CA\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0"+
+        "\u21D1\u21D2\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8"+
+        "\u21D9\u21DA\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0"+
+        "\u21E1\u21E2\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8"+
+        "\u21E9\u21EA\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0"+
+        "\u21F1\u21F2\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8"+
+        "\u21F9\u21FA\u21FB\u21FC\u21FD\u21FE\u21FF\u2200"+
+        "\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208"+
+        "\u2209\u220A\u220B\u220C\u220D\u220E\u220F\u2210"+
+        "\u2211\u2212\u2213\u2214\u2215\u2216\u2217\u2218"+
+        "\u2219\u221A\u221B\u221C\u221D\u221E\u221F\uA1A6"+
+        "\u2220\uA1A5\uA840\uA841\u2221\u2222\u2223\u2224"+
+        "\u2225\u2226\u2227\u2228\u2229\u222A\u222B\u222C"+
+        "\u222D\uA842\u222E\u222F\u2230\u2231\u2232\u2233"+
+        "\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B"+
+        "\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243"+
+        "\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B"+
+        "\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253"+
+        "\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B"+
+        "\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263"+
+        "\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B"+
+        "\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273"+
+        "\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B"+
+        "\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283"+
+        "\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B"+
+        "\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293"+
+        "\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B"+
+        "\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3"+
+        "\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB"+
+        "\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3"+
+        "\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB"+
+        "\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2\u22C3"+
+        "\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB"+
+        "\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3"+
+        "\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB"+
+        "\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3"+
+        "\u22E4\uA6A1\uA6A2\uA6A3\uA6A4\uA6A5\uA6A6\uA6A7"+
+        "\uA6A8\uA6A9\uA6AA\uA6AB\uA6AC\uA6AD\uA6AE\uA6AF"+
+        "\uA6B0\uA6B1\u22E5\uA6B2\uA6B3\uA6B4\uA6B5\uA6B6"+
+        "\uA6B7\uA6B8\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB"+
+        "\u22EC\uA6C1\uA6C2\uA6C3\uA6C4\uA6C5\uA6C6\uA6C7"+
+        "\uA6C8\uA6C9\uA6CA\uA6CB\uA6CC\uA6CD\uA6CE\uA6CF"+
+        "\uA6D0\uA6D1\u22ED\uA6D2\uA6D3\uA6D4\uA6D5\uA6D6"+
+        "\uA6D7\uA6D8\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3"+
+        "\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB"+
+        "\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302\u2303"+
+        "\u2304\u2305\u2306\u2307\u2308\u2309\u230A\u230B"+
+        "\u230C\u230D\u230E\u230F\u2310\u2311\u2312\u2313"+
+        "\u2314\u2315\u2316\u2317\u2318\u2319\u231A\u231B"+
+        "\u231C\u231D\u231E\u231F\u2320\u2321\u2322\u2323"+
+        "\u2324\uA7A7\u2325\u2326\u2327\u2328\u2329\u232A"+
+        "\u232B\u232C\u232D\u232E\u232F\u2330\u2331\u2332"+
+        "\uA7A1\uA7A2\uA7A3\uA7A4\uA7A5\uA7A6\uA7A8\uA7A9"+
+        "\uA7AA\uA7AB\uA7AC\uA7AD\uA7AE\uA7AF\uA7B0\uA7B1"+
+        "\uA7B2\uA7B3\uA7B4\uA7B5\uA7B6\uA7B7\uA7B8\uA7B9"+
+        "\uA7BA\uA7BB\uA7BC\uA7BD\uA7BE\uA7BF\uA7C0\uA7C1"+
+        "\uA7D1\uA7D2\uA7D3\uA7D4\uA7D5\uA7D6\uA7D8\uA7D9"+
+        "\uA7DA\uA7DB\uA7DC\uA7DD\uA7DE\uA7DF\uA7E0\uA7E1"+
+        "\uA7E2\uA7E3\uA7E4\uA7E5\uA7E6\uA7E7\uA7E8\uA7E9"+
+        "\uA7EA\uA7EB\uA7EC\uA7ED\uA7EE\uA7EF\uA7F0\uA7F1"+
+        "\u2333\uA7D7\u2334\u2335\u2336\u2337\u2338\u2339"+
+        "\u233A\u233B\u233C\u233D\u233E\u233F\u2340\u2341"+
+        "\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349"+
+        "\u234A\u234B\u234C\u234D\u234E\u234F\u2350\u2351"+
+        "\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359"+
+        "\u235A\u235B\u235C\u235D\u235E\u235F\u2360\u2361"+
+        "\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369"+
+        "\u236A\u236B\u236C\u236D\u236E\u236F\u2370\u2371"+
+        "\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379"+
+        "\u237A\u237B\u237C\u237D\u237E\u237F\u2380\u2381"+
+        "\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389"+
+        "\u238A\u238B\u238C\u238D\u238E\u238F\u2390\u2391"+
+        "\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399"+
+        "\u239A\u239B\u239C\u239D\u239E\u239F\u23A0\u23A1"+
+        "\u23A2\u23A3\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9"+
+        "\u23AA\u23AB\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1"+
+        "\u23B2\u23B3\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9"+
+        "\u23BA\u23BB\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1"+
+        "\u23C2\u23C3\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9"+
+        "\u23CA\u23CB\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1"+
+        "\u23D2\u23D3\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9"+
+        "\u23DA\u23DB\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1"+
+        "\u23E2\u23E3\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9"+
+        "\u23EA\u23EB\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1"+
+        "\u23F2\u23F3\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9"+
+        "\u23FA\u23FB\u23FC\u23FD\u23FE\u23FF\u2400\u2401"+
+        "\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409"+
+        "\u240A\u240B\u240C\u240D\u240E\u240F\u2410\u2411"+
+        "\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419"+
+        "\u241A\u241B\u241C\u241D\u241E\u241F\u2420\u2421"+
+        "\u2422\u2423\u2424\u2425\u2426\u2427\u2428\u2429"+
+        "\u242A\u242B\u242C\u242D\u242E\u242F\u2430\u2431"+
+        "\u2432\u2433\u2434\u2435\u2436\u2437\u2438\u2439"+
+        "\u243A\u243B\u243C\u243D\u243E\u243F\u2440\u2441"+
+        "\u2442\u2443\u2444\u2445\u2446\u2447\u2448\u2449"+
+        "\u244A\u244B\u244C\u244D\u244E\u244F\u2450\u2451"+
+        "\u2452\u2453\u2454\u2455\u2456\u2457\u2458\u2459"+
+        "\u245A\u245B\u245C\u245D\u245E\u245F\u2460\u2461"+
+        "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469"+
+        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
+        "\u2472\u2473\u2474\u2475\u2476\u2477\u2478\u2479"+
+        "\u247A\u247B\u247C\u247D\u247E\u247F\u2480\u2481"+
+        "\u2482\u2483\u2484\u2485\u2486\u2487\u2488\u2489"+
+        "\u248A\u248B\u248C\u248D\u248E\u248F\u2490\u2491"+
+        "\u2492\u2493\u2494\u2495\u2496\u2497\u2498\u2499"+
+        "\u249A\u249B\u249C\u249D\u249E\u249F\u24A0\u24A1"+
+        "\u24A2\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9"+
+        "\u24AA\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1"+
+        "\u24B2\u24B3\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9"+
+        "\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1"+
+        "\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9"+
+        "\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1"+
+        "\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9"+
+        "\u24DA\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1"+
+        "\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9"+
+        "\u24EA\u24EB\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1"+
+        "\u24F2\u24F3\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9"+
+        "\u24FA\u24FB\u24FC\u24FD\u24FE\u24FF\u2500\u2501"+
+        "\u2502\u2503\u2504\u2505\u2506\u2507\u2508\u2509"+
+        "\u250A\u250B\u250C\u250D\u250E\u250F\u2510\u2511"+
+        "\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519"+
+        "\u251A\u251B\u251C\u251D\u251E\u251F\u2520\u2521"+
+        "\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529"+
+        "\u252A\u252B\u252C\u252D\u252E\u252F\u2530\u2531"+
+        "\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539"+
+        "\u253A\u253B\u253C\u253D\u253E\u253F\u2540\u2541"+
+        "\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549"+
+        "\u254A\u254B\u254C\u254D\u254E\u254F\u2550\u2551"+
+        "\u2552\u2553\u2554\u2555\u2556\u2557\u2558\u2559"+
+        "\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561"+
+        "\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569"+
+        "\u256A\u256B\u256C\u256D\u256E\u256F\u2570\u2571"+
+        "\u2572\u2573\u2574\u2575\u2576\u2577\u2578\u2579"+
+        "\u257A\u257B\u257C\u257D\u257E\u257F\u2580\u2581"+
+        "\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u2589"+
+        "\u258A\u258B\u258C\u258D\u258E\u258F\u2590\u2591"+
+        "\u2592\u2593\u2594\u2595\u2596\u2597\u2598\u2599"+
+        "\u259A\u259B\u259C\u259D\u259E\u259F\u25A0\u25A1"+
+        "\u25A2\u25A3\u25A4\u25A5\u25A6\u25A7\u25A8\u25A9"+
+        "\u25AA\u25AB\u25AC\u25AD\u25AE\u25AF\u25B0\u25B1"+
+        "\u25B2\u25B3\u25B4\u25B5\u25B6\u25B7\u25B8\u25B9"+
+        "\u25BA\u25BB\u25BC\u25BD\u25BE\u25BF\u25C0\u25C1"+
+        "\u25C2\u25C3\u25C4\u25C5\u25C6\u25C7\u25C8\u25C9"+
+        "\u25CA\u25CB\u25CC\u25CD\u25CE\u25CF\u25D0\u25D1"+
+        "\u25D2\u25D3\u25D4\u25D5\u25D6\u25D7\u25D8\u25D9"+
+        "\u25DA\u25DB\u25DC\u25DD\u25DE\u25DF\u25E0\u25E1"+
+        "\u25E2\u25E3\u25E4\u25E5\u25E6\u25E7\u25E8\u25E9"+
+        "\u25EA\u25EB\u25EC\u25ED\u25EE\u25EF\u25F0\u25F1"+
+        "\u25F2\u25F3\u25F4\u25F5\u25F6\u25F7\u25F8\u25F9"+
+        "\u25FA\u25FB\u25FC\u25FD\u25FE\u25FF\u2600\u2601"+
+        "\u2602\u2603\u2604\u2605\u2606\u2607\u2608\u2609"+
+        "\u260A\u260B\u260C\u260D\u260E\u260F\u2610\u2611"+
+        "\u2612\u2613\u2614\u2615\u2616\u2617\u2618\u2619"+
+        "\u261A\u261B\u261C\u261D\u261E\u261F\u2620\u2621"+
+        "\u2622\u2623\u2624\u2625\u2626\u2627\u2628\u2629"+
+        "\u262A\u262B\u262C\u262D\u262E\u262F\u2630\u2631"+
+        "\u2632\u2633\u2634\u2635\u2636\u2637\u2638\u2639"+
+        "\u263A\u263B\u263C\u263D\u263E\u263F\u2640\u2641"+
+        "\u2642\u2643\u2644\u2645\u2646\u2647\u2648\u2649"+
+        "\u264A\u264B\u264C\u264D\u264E\u264F\u2650\u2651"+
+        "\u2652\u2653\u2654\u2655\u2656\u2657\u2658\u2659"+
+        "\u265A\u265B\u265C\u265D\u265E\u265F\u2660\u2661"+
+        "\u2662\u2663\u2664\u2665\u2666\u2667\u2668\u2669"+
+        "\u266A\u266B\u266C\u266D\u266E\u266F\u2670\u2671"+
+        "\u2672\u2673\u2674\u2675\u2676\u2677\u2678\u2679"+
+        "\u267A\u267B\u267C\u267D\u267E\u267F\u2680\u2681"+
+        "\u2682\u2683\u2684\u2685\u2686\u2687\u2688\u2689"+
+        "\u268A\u268B\u268C\u268D\u268E\u268F\u2690\u2691"+
+        "\u2692\u2693\u2694\u2695\u2696\u2697\u2698\u2699"+
+        "\u269A\u269B\u269C\u269D\u269E\u269F\u26A0\u26A1"+
+        "\u26A2\u26A3\u26A4\u26A5\u26A6\u26A7\u26A8\u26A9"+
+        "\u26AA\u26AB\u26AC\u26AD\u26AE\u26AF\u26B0\u26B1"+
+        "\u26B2\u26B3\u26B4\u26B5\u26B6\u26B7\u26B8\u26B9"+
+        "\u26BA\u26BB\u26BC\u26BD\u26BE\u26BF\u26C0\u26C1"+
+        "\u26C2\u26C3\u26C4\u26C5\u26C6\u26C7\u26C8\u26C9"+
+        "\u26CA\u26CB\u26CC\u26CD\u26CE\u26CF\u26D0\u26D1"+
+        "\u26D2\u26D3\u26D4\u26D5\u26D6\u26D7\u26D8\u26D9"+
+        "\u26DA\u26DB\u26DC\u26DD\u26DE\u26DF\u26E0\u26E1"+
+        "\u26E2\u26E3\u26E4\u26E5\u26E6\u26E7\u26E8\u26E9"+
+        "\u26EA\u26EB\u26EC\u26ED\u26EE\u26EF\u26F0\u26F1"+
+        "\u26F2\u26F3\u26F4\u26F5\u26F6\u26F7\u26F8\u26F9"+
+        "\u26FA\u26FB\u26FC\u26FD\u26FE\u26FF\u2700\u2701"+
+        "\u2702\u2703\u2704\u2705\u2706\u2707\u2708\u2709"+
+        "\u270A\u270B\u270C\u270D\u270E\u270F\u2710\u2711"+
+        "\u2712\u2713\u2714\u2715\u2716\u2717\u2718\u2719"+
+        "\u271A\u271B\u271C\u271D\u271E\u271F\u2720\u2721"+
+        "\u2722\u2723\u2724\u2725\u2726\u2727\u2728\u2729"+
+        "\u272A\u272B\u272C\u272D\u272E\u272F\u2730\u2731"+
+        "\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739"+
+        "\u273A\u273B\u273C\u273D\u273E\u273F\u2740\u2741"+
+        "\u2742\u2743\u2744\u2745\u2746\u2747\u2748\u2749"+
+        "\u274A\u274B\u274C\u274D\u274E\u274F\u2750\u2751"+
+        "\u2752\u2753\u2754\u2755\u2756\u2757\u2758\u2759"+
+        "\u275A\u275B\u275C\u275D\u275E\u275F\u2760\u2761"+
+        "\u2762\u2763\u2764\u2765\u2766\u2767\u2768\u2769"+
+        "\u276A\u276B\u276C\u276D\u276E\u276F\u2770\u2771"+
+        "\u2772\u2773\u2774\u2775\u2776\u2777\u2778\u2779"+
+        "\u277A\u277B\u277C\u277D\u277E\u277F\u2780\u2781"+
+        "\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789"+
+        "\u278A\u278B\u278C\u278D\u278E\u278F\u2790\u2791"+
+        "\u2792\u2793\u2794\u2795\u2796\u2797\u2798\u2799"+
+        "\u279A\u279B\u279C\u279D\u279E\u279F\u27A0\u27A1"+
+        "\u27A2\u27A3\u27A4\u27A5\u27A6\u27A7\u27A8\u27A9"+
+        "\u27AA\u27AB\u27AC\u27AD\u27AE\u27AF\u27B0\u27B1"+
+        "\u27B2\u27B3\u27B4\u27B5\u27B6\u27B7\u27B8\u27B9"+
+        "\u27BA\u27BB\u27BC\u27BD\u27BE\u27BF\u27C0\u27C1"+
+        "\u27C2\u27C3\u27C4\u27C5\u27C6\u27C7\u27C8\u27C9"+
+        "\u27CA\u27CB\u27CC\u27CD\u27CE\u27CF\u27D0\u27D1"+
+        "\u27D2\u27D3\u27D4\u27D5\u27D6\u27D7\u27D8\u27D9"+
+        "\u27DA\u27DB\u27DC\u27DD\u27DE\u27DF\u27E0\u27E1"+
+        "\u27E2\u27E3\u27E4\u27E5\u27E6\u27E7\u27E8\u27E9"+
+        "\u27EA\u27EB\u27EC\u27ED\u27EE\u27EF\u27F0\u27F1"+
+        "\u27F2\u27F3\u27F4\u27F5\u27F6\u27F7\u27F8\u27F9"+
+        "\u27FA\u27FB\u27FC\u27FD\u27FE\u27FF\u2800\u2801"+
+        "\u2802\u2803\u2804\u2805\u2806\u2807\u2808\u2809"+
+        "\u280A\u280B\u280C\u280D\u280E\u280F\u2810\u2811"+
+        "\u2812\u2813\u2814\u2815\u2816\u2817\u2818\u2819"+
+        "\u281A\u281B\u281C\u281D\u281E\u281F\u2820\u2821"+
+        "\u2822\u2823\u2824\u2825\u2826\u2827\u2828\u2829"+
+        "\u282A\u282B\u282C\u282D\u282E\u282F\u2830\u2831"+
+        "\u2832\u2833\u2834\u2835\u2836\u2837\u2838\u2839"+
+        "\u283A\u283B\u283C\u283D\u283E\u283F\u2840\u2841"+
+        "\u2842\u2843\u2844\u2845\u2846\u2847\u2848\u2849"+
+        "\u284A\u284B\u284C\u284D\u284E\u284F\u2850\u2851"+
+        "\u2852\u2853\u2854\u2855\u2856\u2857\u2858\u2859"+
+        "\u285A\u285B\u285C\u285D\u285E\u285F\u2860\u2861"+
+        "\u2862\u2863\u2864\u2865\u2866\u2867\u2868\u2869"+
+        "\u286A\u286B\u286C\u286D\u286E\u286F\u2870\u2871"+
+        "\u2872\u2873\u2874\u2875\u2876\u2877\u2878\u2879"+
+        "\u287A\u287B\u287C\u287D\u287E\u287F\u2880\u2881"+
+        "\u2882\u2883\u2884\u2885\u2886\u2887\u2888\u2889"+
+        "\u288A\u288B\u288C\u288D\u288E\u288F\u2890\u2891"+
+        "\u2892\u2893\u2894\u2895\u2896\u2897\u2898\u2899"+
+        "\u289A\u289B\u289C\u289D\u289E\u289F\u28A0\u28A1"+
+        "\u28A2\u28A3\u28A4\u28A5\u28A6\u28A7\u28A8\u28A9"+
+        "\u28AA\u28AB\u28AC\u28AD\u28AE\u28AF\u28B0\u28B1"+
+        "\u28B2\u28B3\u28B4\u28B5\u28B6\u28B7\u28B8\u28B9"+
+        "\u28BA\u28BB\u28BC\u28BD\u28BE\u28BF\u28C0\u28C1"+
+        "\u28C2\u28C3\u28C4\u28C5\u28C6\u28C7\u28C8\u28C9"+
+        "\u28CA\u28CB\u28CC\u28CD\u28CE\u28CF\u28D0\u28D1"+
+        "\u28D2\u28D3\u28D4\u28D5\u28D6\u28D7\u28D8\u28D9"+
+        "\u28DA\u28DB\u28DC\u28DD\u28DE\u28DF\u28E0\u28E1"+
+        "\u28E2\u28E3\u28E4\u28E5\u28E6\u28E7\u28E8\u28E9"+
+        "\u28EA\u28EB\u28EC\u28ED\u28EE\u28EF\u28F0\u28F1"+
+        "\u28F2\u28F3\u28F4\u28F5\u28F6\u28F7\u28F8\u28F9"+
+        "\u28FA\u28FB\u28FC\u28FD\u28FE\u28FF\u2900\u2901"+
+        "\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909"+
+        "\u290A\u290B\u290C\u290D\u290E\u290F\u2910\u2911"+
+        "\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919"+
+        "\u291A\u291B\u291C\u291D\u291E\u291F\u2920\u2921"+
+        "\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929"+
+        "\u292A\u292B\u292C\u292D\u292E\u292F\u2930\u2931"+
+        "\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939"+
+        "\u293A\u293B\u293C\u293D\u293E\u293F\u2940\u2941"+
+        "\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949"+
+        "\u294A\u294B\u294C\u294D\u294E\u294F\u2950\u2951"+
+        "\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959"+
+        "\u295A\u295B\u295C\u295D\u295E\u295F\u2960\u2961"+
+        "\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969"+
+        "\u296A\u296B\u296C\u296D\u296E\u296F\u2970\u2971"+
+        "\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979"+
+        "\u297A\u297B\u297C\u297D\u297E\u297F\u2980\u2981"+
+        "\u2982\u2983\u2984\u2985\u2986\u2987\u2988\u2989"+
+        "\u298A\u298B\u298C\u298D\u298E\u298F\u2990\u2991"+
+        "\u2992\u2993\u2994\u2995\u2996\u2997\u2998\u2999"+
+        "\u299A\u299B\u299C\u299D\u299E\u299F\u29A0\u29A1"+
+        "\u29A2\u29A3\u29A4\u29A5\u29A6\u29A7\u29A8\u29A9"+
+        "\u29AA\u29AB\u29AC\u29AD\u29AE\u29AF\u29B0\u29B1"+
+        "\u29B2\u29B3\u29B4\u29B5\u29B6\u29B7\u29B8\u29B9"+
+        "\u29BA\u29BB\u29BC\u29BD\u29BE\u29BF\u29C0\u29C1"+
+        "\u29C2\u29C3\u29C4\u29C5\u29C6\u29C7\u29C8\u29C9"+
+        "\u29CA\u29CB\u29CC\u29CD\u29CE\u29CF\u29D0\u29D1"+
+        "\u29D2\u29D3\u29D4\u29D5\u29D6\u29D7\u29D8\u29D9"+
+        "\u29DA\u29DB\u29DC\u29DD\u29DE\u29DF\u29E0\u29E1"+
+        "\u29E2\u29E3\u29E4\u29E5\u29E6\u29E7\u29E8\u29E9"+
+        "\u29EA\u29EB\u29EC\u29ED\u29EE\u29EF\u29F0\u29F1"+
+        "\u29F2\u29F3\u29F4\u29F5\u29F6\u29F7\u29F8\u29F9"+
+        "\u29FA\u29FB\u29FC\u29FD\u29FE\u29FF\u2A00\u2A01"+
+        "\u2A02\u2A03\u2A04\u2A05\u2A06\u2A07\u2A08\u2A09"+
+        "\u2A0A\u2A0B\u2A0C\u2A0D\u2A0E\u2A0F\u2A10\u2A11"+
+        "\u2A12\u2A13\u2A14\u2A15\u2A16\u2A17\u2A18\u2A19"+
+        "\u2A1A\u2A1B\u2A1C\u2A1D\u2A1E\u2A1F\u2A20\u2A21"+
+        "\u2A22\u2A23\u2A24\u2A25\u2A26\u2A27\u2A28\u2A29"+
+        "\u2A2A\u2A2B\u2A2C\u2A2D\u2A2E\u2A2F\u2A30\u2A31"+
+        "\u2A32\u2A33\u2A34\u2A35\u2A36\u2A37\u2A38\u2A39"+
+        "\u2A3A\u2A3B\u2A3C\u2A3D\u2A3E\u2A3F\u2A40\u2A41"+
+        "\u2A42\u2A43\u2A44\u2A45\u2A46\u2A47\u2A48\u2A49"+
+        "\u2A4A\u2A4B\u2A4C\u2A4D\u2A4E\u2A4F\u2A50\u2A51"+
+        "\u2A52\u2A53\u2A54\u2A55\u2A56\u2A57\u2A58\u2A59"+
+        "\u2A5A\u2A5B\u2A5C\u2A5D\u2A5E\u2A5F\u2A60\u2A61"+
+        "\u2A62\u2A63\u2A64\u2A65\u2A66\u2A67\u2A68\u2A69"+
+        "\u2A6A\u2A6B\u2A6C\u2A6D\u2A6E\u2A6F\u2A70\u2A71"+
+        "\u2A72\u2A73\u2A74\u2A75\u2A76\u2A77\u2A78\u2A79"+
+        "\u2A7A\u2A7B\u2A7C\u2A7D\u2A7E\u2A7F\u2A80\u2A81"+
+        "\u2A82\u2A83\u2A84\u2A85\u2A86\u2A87\u2A88\u2A89"+
+        "\u2A8A\u2A8B\u2A8C\u2A8D\u2A8E\u2A8F\u2A90\u2A91"+
+        "\u2A92\u2A93\u2A94\u2A95\u2A96\u2A97\u2A98\u2A99"+
+        "\u2A9A\u2A9B\u2A9C\u2A9D\u2A9E\u2A9F\u2AA0\u2AA1"+
+        "\u2AA2\u2AA3\u2AA4\u2AA5\u2AA6\u2AA7\u2AA8\u2AA9"+
+        "\u2AAA\u2AAB\u2AAC\u2AAD\u2AAE\u2AAF\u2AB0\u2AB1"+
+        "\u2AB2\u2AB3\u2AB4\u2AB5\u2AB6\u2AB7\u2AB8\u2AB9"+
+        "\u2ABA\u2ABB\u2ABC\u2ABD\u2ABE\u2ABF\u2AC0\u2AC1"+
+        "\u2AC2\u2AC3\u2AC4\u2AC5\u2AC6\u2AC7\u2AC8\u2AC9"+
+        "\u2ACA\u2ACB\u2ACC\u2ACD\u2ACE\u2ACF\u2AD0\u2AD1"+
+        "\u2AD2\u2AD3\u2AD4\u2AD5\u2AD6\u2AD7\u2AD8\u2AD9"+
+        "\u2ADA\u2ADB\u2ADC\u2ADD\u2ADE\u2ADF\u2AE0\u2AE1"+
+        "\u2AE2\u2AE3\u2AE4\u2AE5\u2AE6\u2AE7\u2AE8\u2AE9"+
+        "\u2AEA\u2AEB\u2AEC\u2AED\u2AEE\u2AEF\u2AF0\u2AF1"+
+        "\u2AF2\u2AF3\u2AF4\u2AF5\u2AF6\u2AF7\u2AF8\u2AF9"+
+        "\u2AFA\u2AFB\u2AFC\u2AFD\u2AFE\u2AFF\u2B00\u2B01"+
+        "\u2B02\u2B03\u2B04\u2B05\u2B06\u2B07\u2B08\u2B09"+
+        "\u2B0A\u2B0B\u2B0C\u2B0D\u2B0E\u2B0F\u2B10\u2B11"+
+        "\u2B12\u2B13\u2B14\u2B15\u2B16\u2B17\u2B18\u2B19"+
+        "\u2B1A\u2B1B\u2B1C\u2B1D\u2B1E\u2B1F\u2B20\u2B21"+
+        "\u2B22\u2B23\u2B24\u2B25\u2B26\u2B27\u2B28\u2B29"+
+        "\u2B2A\u2B2B\u2B2C\u2B2D\u2B2E\u2B2F\u2B30\u2B31"+
+        "\u2B32\u2B33\u2B34\u2B35\u2B36\u2B37\u2B38\u2B39"+
+        "\u2B3A\u2B3B\u2B3C\u2B3D\u2B3E\u2B3F\u2B40\u2B41"+
+        "\u2B42\u2B43\u2B44\u2B45\u2B46\u2B47\u2B48\u2B49"+
+        "\u2B4A\u2B4B\u2B4C\u2B4D\u2B4E\u2B4F\u2B50\u2B51"+
+        "\u2B52\u2B53\u2B54\u2B55\u2B56\u2B57\u2B58\u2B59"+
+        "\u2B5A\u2B5B\u2B5C\u2B5D\u2B5E\u2B5F\u2B60\u2B61"+
+        "\u2B62\u2B63\u2B64\u2B65\u2B66\u2B67\u2B68\u2B69"+
+        "\u2B6A\u2B6B\u2B6C\u2B6D\u2B6E\u2B6F\u2B70\u2B71"+
+        "\u2B72\u2B73\u2B74\u2B75\u2B76\u2B77\u2B78\u2B79"+
+        "\u2B7A\u2B7B\u2B7C\u2B7D\u2B7E\u2B7F\u2B80\u2B81"+
+        "\u2B82\u2B83\u2B84\u2B85\u2B86\u2B87\u2B88\u2B89"+
+        "\u2B8A\u2B8B\u2B8C\u2B8D\u2B8E\u2B8F\u2B90\u2B91"+
+        "\u2B92\u2B93\u2B94\u2B95\u2B96\u2B97\u2B98\u2B99"+
+        "\u2B9A\u2B9B\u2B9C\u2B9D\u2B9E\u2B9F\u2BA0\u2BA1"+
+        "\u2BA2\u2BA3\u2BA4\u2BA5\u2BA6\u2BA7\u2BA8\u2BA9"+
+        "\u2BAA\u2BAB\u2BAC\u2BAD\u2BAE\u2BAF\u2BB0\u2BB1"+
+        "\u2BB2\u2BB3\u2BB4\u2BB5\u2BB6\u2BB7\u2BB8\u2BB9"+
+        "\u2BBA\u2BBB\u2BBC\u2BBD\u2BBE\u2BBF\u2BC0\u2BC1"+
+        "\u2BC2\u2BC3\u2BC4\u2BC5\u2BC6\u2BC7\u2BC8\u2BC9"+
+        "\u2BCA\u2BCB\u2BCC\u2BCD\u2BCE\u2BCF\u2BD0\u2BD1"+
+        "\u2BD2\u2BD3\u2BD4\u2BD5\u2BD6\u2BD7\u2BD8\u2BD9"+
+        "\u2BDA\u2BDB\u2BDC\u2BDD\u2BDE\u2BDF\u2BE0\u2BE1"+
+        "\u2BE2\u2BE3\u2BE4\u2BE5\u2BE6\u2BE7\u2BE8\u2BE9"+
+        "\u2BEA\u2BEB\u2BEC\u2BED\u2BEE\u2BEF\u2BF0\u2BF1"+
+        "\u2BF2\u2BF3\u2BF4\u2BF5\u2BF6\u2BF7\u2BF8\u2BF9"+
+        "\u2BFA\u2BFB\u2BFC\u2BFD\u2BFE\u2BFF\u2C00\u2C01"+
+        "\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09"+
+        "\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11"+
+        "\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19"+
+        "\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21"+
+        "\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29"+
+        "\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F\u2C30\u2C31"+
+        "\u2C32\u2C33\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39"+
+        "\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41"+
+        "\u2C42\u2C43\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49"+
+        "\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51"+
+        "\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59"+
+        "\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C60\u2C61"+
+        "\u2C62\u2C63\u2C64\u2C65\u2C66\u2C67\u2C68\u2C69"+
+        "\u2C6A\u2C6B\u2C6C\u2C6D\u2C6E\u2C6F\u2C70\u2C71"+
+        "\u2C72\u2C73\u2C74\u2C75\u2C76\u2C77\u2C78\u2C79"+
+        "\u2C7A\u2C7B\u2C7C\u2C7D\u2C7E\u2C7F\u2C80\u2C81"+
+        "\u2C82\u2C83\u2C84\u2C85\u2C86\u2C87\u2C88\u2C89"+
+        "\u2C8A\u2C8B\u2C8C\u2C8D\u2C8E\u2C8F\u2C90\u2C91"+
+        "\u2C92\u2C93\u2C94\u2C95\u2C96\u2C97\u2C98\u2C99"+
+        "\u2C9A\u2C9B\u2C9C\u2C9D\u2C9E\u2C9F\u2CA0\u2CA1"+
+        "\u2CA2\u2CA3\u2CA4\u2CA5\u2CA6\u2CA7\u2CA8\u2CA9"+
+        "\u2CAA\u2CAB\u2CAC\u2CAD\u2CAE\u2CAF\u2CB0\u2CB1"+
+        "\u2CB2\u2CB3\u2CB4\u2CB5\u2CB6\u2CB7\u2CB8\u2CB9"+
+        "\u2CBA\u2CBB\u2CBC\u2CBD\u2CBE\u2CBF\u2CC0\u2CC1"+
+        "\u2CC2\u2CC3\u2CC4\u2CC5\u2CC6\u2CC7\u2CC8\u2CC9"+
+        "\u2CCA\u2CCB\u2CCC\u2CCD\u2CCE\u2CCF\u2CD0\u2CD1"+
+        "\u2CD2\u2CD3\u2CD4\u2CD5\u2CD6\u2CD7\u2CD8\u2CD9"+
+        "\u2CDA\u2CDB\u2CDC\u2CDD\u2CDE\u2CDF\u2CE0\u2CE1"+
+        "\u2CE2\u2CE3\u2CE4\u2CE5\u2CE6\u2CE7\u2CE8\u2CE9"+
+        "\u2CEA\u2CEB\u2CEC\u2CED\u2CEE\u2CEF\u2CF0\u2CF1"+
+        "\u2CF2\u2CF3\u2CF4\u2CF5\u2CF6\u2CF7\u2CF8\u2CF9"+
+        "\u2CFA\u2CFB\u2CFC\u2CFD\u2CFE\u2CFF\u2D00\u2D01"+
+        "\u2D02\u2D03\u2D04\u2D05\u2D06\u2D07\u2D08\u2D09"+
+        "\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11"+
+        "\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18\u2D19"+
+        "\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21"+
+        "\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27\u2D28\u2D29"+
+        "\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F\u2D30\u2D31"+
+        "\u2D32\u2D33\u2D34\u2D35\u2D36\u2D37\u2D38\u2D39"+
+        "\u2D3A\u2D3B\u2D3C\u2D3D\u2D3E\u2D3F\u2D40\u2D41"+
+        "\u2D42\u2D43\u2D44\u2D45\u2D46\u2D47\u2D48\u2D49"+
+        "\u2D4A\u2D4B\u2D4C\u2D4D\u2D4E\u2D4F\u2D50\u2D51"+
+        "\u2D52\u2D53\u2D54\u2D55\u2D56\u2D57\u2D58\u2D59"+
+        "\u2D5A\u2D5B\u2D5C\u2D5D\u2D5E\u2D5F\u2D60\u2D61"+
+        "\u2D62\u2D63\u2D64\u2D65\u2D66\u2D67\u2D68\u2D69"+
+        "\u2D6A\u2D6B\u2D6C\u2D6D\u2D6E\u2D6F\u2D70\u2D71"+
+        "\u2D72\u2D73\u2D74\u2D75\u2D76\u2D77\u2D78\u2D79"+
+        "\u2D7A\u2D7B\u2D7C\u2D7D\u2D7E\u2D7F\u2D80\u2D81"+
+        "\u2D82\u2D83\u2D84\u2D85\u2D86\u2D87\u2D88\u2D89"+
+        "\u2D8A\u2D8B\u2D8C\u2D8D\u2D8E\u2D8F\u2D90\u2D91"+
+        "\u2D92\u2D93\u2D94\u2D95\u2D96\u2D97\u2D98\u2D99"+
+        "\u2D9A\u2D9B\u2D9C\u2D9D\u2D9E\u2D9F\u2DA0\u2DA1"+
+        "\u2DA2\u2DA3\u2DA4\u2DA5\u2DA6\u2DA7\u2DA8\u2DA9"+
+        "\u2DAA\u2DAB\u2DAC\u2DAD\u2DAE\u2DAF\u2DB0\u2DB1"+
+        "\u2DB2\u2DB3\u2DB4\u2DB5\u2DB6\u2DB7\u2DB8\u2DB9"+
+        "\u2DBA\u2DBB\u2DBC\u2DBD\u2DBE\u2DBF\u2DC0\u2DC1"+
+        "\u2DC2\u2DC3\u2DC4\u2DC5\u2DC6\u2DC7\u2DC8\u2DC9"+
+        "\u2DCA\u2DCB\u2DCC\u2DCD\u2DCE\u2DCF\u2DD0\u2DD1"+
+        "\u2DD2\u2DD3\u2DD4\u2DD5\u2DD6\u2DD7\u2DD8\u2DD9"+
+        "\u2DDA\u2DDB\u2DDC\u2DDD\u2DDE\u2DDF\u2DE0\u2DE1"+
+        "\u2DE2\u2DE3\u2DE4\u2DE5\u2DE6\u2DE7\u2DE8\u2DE9"+
+        "\u2DEA\u2DEB\u2DEC\u2DED\u2DEE\u2DEF\u2DF0\u2DF1"+
+        "\u2DF2\u2DF3\u2DF4\u2DF5\u2DF6\u2DF7\u2DF8\u2DF9"+
+        "\u2DFA\u2DFB\u2DFC\u2DFD\u2DFE\u2DFF\u2E00\u2E01"+
+        "\u2E02\u2E03\u2E04\u2E05\u2E06\u2E07\u2E08\u2E09"+
+        "\u2E0A\u2E0B\u2E0C\u2E0D\u2E0E\u2E0F\u2E10\u2E11"+
+        "\u2E12\u2E13\u2E14\u2E15\u2E16\u2E17\u2E18\u2E19"+
+        "\u2E1A\u2E1B\u2E1C\u2E1D\u2E1E\u2E1F\u2E20\u2E21"+
+        "\u2E22\u2E23\u2E24\u2E25\u2E26\u2E27\u2E28\u2E29"+
+        "\u2E2A\u2E2B\u2E2C\u2E2D\u2E2E\u2E2F\u2E30\u2E31"+
+        "\u2E32\u2E33\u2E34\u2E35\u2E36\u2E37\u2E38\u2E39"+
+        "\u2E3A\u2E3B\u2E3C\u2E3D\u2E3E\u2E3F\u2E40\u2E41"+
+        "\u2E42\u2E43\u2E44\u2E45\u2E46\u2E47\u2E48\u2E49"+
+        "\u2E4A\u2E4B\u2E4C\u2E4D\u2E4E\u2E4F\u2E50\u2E51"+
+        "\u2E52\u2E53\u2E54\u2E55\u2E56\u2E57\u2E58\u2E59"+
+        "\u2E5A\u2E5B\u2E5C\u2E5D\u2E5E\u2E5F\u2E60\u2E61"+
+        "\u2E62\u2E63\u2E64\u2E65\u2E66\u2E67\u2E68\u2E69"+
+        "\u2E6A\u2E6B\u2E6C\u2E6D\u2E6E\u2E6F\u2E70\u2E71"+
+        "\u2E72\u2E73\u2E74\u2E75\u2E76\u2E77\u2E78\u2E79"+
+        "\u2E7A\u2E7B\u2E7C\u2E7D\u2E7E\u2E7F\u2E80\u2E81"+
+        "\u2E82\u2E83\u2E84\u2E85\u2E86\u2E87\u2E88\u2E89"+
+        "\u2E8A\u2E8B\u2E8C\u2E8D\u2E8E\u2E8F\u2E90\u2E91"+
+        "\u2E92\u2E93\u2E94\u2E95\u2E96\u2E97\u2E98\u2E99"+
+        "\u2E9A\u2E9B\u2E9C\u2E9D\u2E9E\u2E9F\u2EA0\u2EA1"+
+        "\u2EA2\u2EA3\u2EA4\u2EA5\u2EA6\u2EA7\u2EA8\u2EA9"+
+        "\u2EAA\u2EAB\u2EAC\u2EAD\u2EAE\u2EAF\u2EB0\u2EB1"+
+        "\u2EB2\u2EB3\u2EB4\u2EB5\u2EB6\u2EB7\u2EB8\u2EB9"+
+        "\u2EBA\u2EBB\u2EBC\u2EBD\u2EBE\u2EBF\u2EC0\u2EC1"+
+        "\u2EC2\u2EC3\u2EC4\u2EC5\u2EC6\u2EC7\u2EC8\u2EC9"+
+        "\u2ECA\u2ECB\u2ECC\u2ECD\u2ECE\u2ECF\u2ED0\u2ED1"+
+        "\u2ED2\u2ED3\u2ED4\u2ED5\u2ED6\u2ED7\u2ED8\u2ED9"+
+        "\u2EDA\u2EDB\u2EDC\u2EDD\u2EDE\u2EDF\u2EE0\u2EE1";
+
+    private final static String innerEncoderIndex1=
+        "\u2EE2\u2EE3\u2EE4\u2EE5\u2EE6\u2EE7\u2EE8\u2EE9"+
+        "\u2EEA\u2EEB\u2EEC\u2EED\u2EEE\u2EEF\u2EF0\u2EF1"+
+        "\u2EF2\u2EF3\u2EF4\u2EF5\u2EF6\u2EF7\u2EF8\u2EF9"+
+        "\u2EFA\u2EFB\u2EFC\u2EFD\u2EFE\u2EFF\u2F00\u2F01"+
+        "\u2F02\u2F03\u2F04\u2F05\u2F06\u2F07\u2F08\u2F09"+
+        "\u2F0A\u2F0B\u2F0C\u2F0D\u2F0E\u2F0F\u2F10\u2F11"+
+        "\u2F12\u2F13\u2F14\u2F15\u2F16\u2F17\u2F18\u2F19"+
+        "\u2F1A\u2F1B\u2F1C\u2F1D\u2F1E\u2F1F\u2F20\u2F21"+
+        "\u2F22\u2F23\u2F24\u2F25\u2F26\u2F27\u2F28\u2F29"+
+        "\u2F2A\u2F2B\u2F2C\u2F2D\u2F2E\u2F2F\u2F30\u2F31"+
+        "\u2F32\u2F33\u2F34\u2F35\u2F36\u2F37\u2F38\u2F39"+
+        "\u2F3A\u2F3B\u2F3C\u2F3D\u2F3E\u2F3F\u2F40\u2F41"+
+        "\u2F42\u2F43\u2F44\u2F45\u2F46\u2F47\u2F48\u2F49"+
+        "\u2F4A\u2F4B\u2F4C\u2F4D\u2F4E\u2F4F\u2F50\u2F51"+
+        "\u2F52\u2F53\u2F54\u2F55\u2F56\u2F57\u2F58\u2F59"+
+        "\u2F5A\u2F5B\u2F5C\u2F5D\u2F5E\u2F5F\u2F60\u2F61"+
+        "\u2F62\u2F63\u2F64\u2F65\u2F66\u2F67\u2F68\u2F69"+
+        "\u2F6A\u2F6B\u2F6C\u2F6D\u2F6E\u2F6F\u2F70\u2F71"+
+        "\u2F72\u2F73\u2F74\u2F75\u2F76\u2F77\u2F78\u2F79"+
+        "\u2F7A\u2F7B\u2F7C\u2F7D\u2F7E\u2F7F\u2F80\u2F81"+
+        "\u2F82\u2F83\u2F84\u2F85\u2F86\u2F87\u2F88\u2F89"+
+        "\u2F8A\u2F8B\u2F8C\u2F8D\u2F8E\u2F8F\u2F90\u2F91"+
+        "\u2F92\u2F93\u2F94\u2F95\u2F96\u2F97\u2F98\u2F99"+
+        "\u2F9A\u2F9B\u2F9C\u2F9D\u2F9E\u2F9F\u2FA0\u2FA1"+
+        "\u2FA2\u2FA3\u2FA4\u2FA5\u2FA6\u2FA7\u2FA8\u2FA9"+
+        "\u2FAA\u2FAB\u2FAC\u2FAD\u2FAE\u2FAF\u2FB0\u2FB1"+
+        "\u2FB2\u2FB3\u2FB4\u2FB5\u2FB6\u2FB7\u2FB8\u2FB9"+
+        "\u2FBA\u2FBB\u2FBC\u2FBD\u2FBE\u2FBF\u2FC0\u2FC1"+
+        "\u2FC2\u2FC3\u2FC4\u2FC5\u2FC6\u2FC7\u2FC8\u2FC9"+
+        "\u2FCA\u2FCB\u2FCC\u2FCD\u2FCE\u2FCF\u2FD0\u2FD1"+
+        "\u2FD2\u2FD3\u2FD4\u2FD5\u2FD6\u2FD7\u2FD8\u2FD9"+
+        "\u2FDA\u2FDB\u2FDC\u2FDD\u2FDE\u2FDF\u2FE0\u2FE1"+
+        "\u2FE2\u2FE3\u2FE4\u2FE5\u2FE6\u2FE7\u2FE8\u2FE9"+
+        "\u2FEA\u2FEB\u2FEC\u2FED\u2FEE\u2FEF\u2FF0\u2FF1"+
+        "\u2FF2\u2FF3\u2FF4\u2FF5\u2FF6\u2FF7\u2FF8\u2FF9"+
+        "\u2FFA\u2FFB\u2FFC\u2FFD\u2FFE\u2FFF\u3000\u3001"+
+        "\u3002\u3003\u3004\u3005\u3006\u3007\u3008\u3009"+
+        "\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011"+
+        "\u3012\u3013\u3014\u3015\u3016\u3017\u3018\u3019"+
+        "\u301A\u301B\u301C\u301D\u301E\u301F\u3020\u3021"+
+        "\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029"+
+        "\u302A\u302B\u302C\u302D\u302E\u302F\u3030\u3031"+
+        "\u3032\u3033\u3034\u3035\u3036\u3037\u3038\u3039"+
+        "\u303A\u303B\u303C\u303D\u303E\u303F\u3040\u3041"+
+        "\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049"+
+        "\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051"+
+        "\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059"+
+        "\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061"+
+        "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069"+
+        "\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071"+
+        "\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079"+
+        "\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081"+
+        "\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089"+
+        "\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091"+
+        "\u3092\u3093\u3094\u3095\u3096\u3097\u3098\u3099"+
+        "\u309A\u309B\u309C\u309D\u309E\u309F\u30A0\u30A1"+
+        "\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9"+
+        "\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1"+
+        "\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9"+
+        "\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1"+
+        "\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9"+
+        "\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1"+
+        "\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9"+
+        "\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1"+
+        "\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9"+
+        "\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1"+
+        "\u30F2\u30F3\u30F4\u30F5\u30F6\u30F7\u30F8\u30F9"+
+        "\u30FA\u30FB\u30FC\u30FD\u30FE\u30FF\u3100\u3101"+
+        "\u3102\u3103\u3104\u3105\u3106\u3107\u3108\u3109"+
+        "\u310A\u310B\u310C\u310D\u310E\u310F\u3110\u3111"+
+        "\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119"+
+        "\u311A\u311B\u311C\u311D\u311E\u311F\u3120\u3121"+
+        "\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129"+
+        "\u312A\u312B\u312C\u312D\u312E\u312F\u3130\u3131"+
+        "\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139"+
+        "\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141"+
+        "\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149"+
+        "\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151"+
+        "\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159"+
+        "\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161"+
+        "\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169"+
+        "\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171"+
+        "\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179"+
+        "\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181"+
+        "\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189"+
+        "\u318A\u318B\u318C\u318D\u318E\u318F\u3190\u3191"+
+        "\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199"+
+        "\u319A\u319B\u319C\u319D\u319E\u319F\u31A0\u31A1"+
+        "\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9"+
+        "\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1"+
+        "\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31B8\u31B9"+
+        "\u31BA\u31BB\u31BC\u31BD\u31BE\u31BF\u31C0\u31C1"+
+        "\u31C2\u31C3\u31C4\u31C5\u31C6\u31C7\u31C8\u31C9"+
+        "\u31CA\u31CB\u31CC\u31CD\u31CE\u31CF\u31D0\u31D1"+
+        "\u31D2\u31D3\u31D4\u31D5\u31D6\u31D7\u31D8\u31D9"+
+        "\u31DA\u31DB\u31DC\u31DD\u31DE\u31DF\u31E0\u31E1"+
+        "\u31E2\u31E3\u31E4\u31E5\u31E6\u31E7\u31E8\u31E9"+
+        "\u31EA\u31EB\u31EC\u31ED\u31EE\u31EF\u31F0\u31F1"+
+        "\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9"+
+        "\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3200\u3201"+
+        "\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209"+
+        "\u320A\u320B\u320C\u320D\u320E\u320F\u3210\u3211"+
+        "\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219"+
+        "\u321A\u321B\u321C\u321D\u321E\u321F\u3220\u3221"+
+        "\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229"+
+        "\u322A\u322B\u322C\u322D\u322E\u322F\u3230\u3231"+
+        "\u3232\u3233\u3234\u3235\u3236\u3237\u3238\u3239"+
+        "\u323A\u323B\u323C\u323D\u323E\u323F\u3240\u3241"+
+        "\u3242\u3243\u3244\u3245\u3246\u3247\u3248\u3249"+
+        "\u324A\u324B\u324C\u324D\u324E\u324F\u3250\u3251"+
+        "\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259"+
+        "\u325A\u325B\u325C\u325D\u325E\u325F\u3260\u3261"+
+        "\u3262\u3263\u3264\u3265\u3266\u3267\u3268\u3269"+
+        "\u326A\u326B\u326C\u326D\u326E\u326F\u3270\u3271"+
+        "\u3272\u3273\u3274\u3275\u3276\u3277\u3278\u3279"+
+        "\u327A\u327B\u327C\u327D\u327E\u327F\u3280\u3281"+
+        "\u3282\u3283\u3284\u3285\u3286\u3287\u3288\u3289"+
+        "\u328A\u328B\u328C\u328D\u328E\u328F\u3290\u3291"+
+        "\u3292\u3293\u3294\u3295\u3296\u3297\u3298\u3299"+
+        "\u329A\u329B\u329C\u329D\u329E\u329F\u32A0\u32A1"+
+        "\u32A2\u32A3\u32A4\u32A5\u32A6\u32A7\u32A8\u32A9"+
+        "\u32AA\u32AB\u32AC\u32AD\u32AE\u32AF\u32B0\u32B1"+
+        "\u32B2\u32B3\u32B4\u32B5\u32B6\u32B7\u32B8\u32B9"+
+        "\u32BA\u32BB\u32BC\u32BD\u32BE\u32BF\u32C0\u32C1"+
+        "\u32C2\u32C3\u32C4\u32C5\u32C6\u32C7\u32C8\u32C9"+
+        "\u32CA\u32CB\u32CC\u32CD\u32CE\u32CF\u32D0\u32D1"+
+        "\u32D2\u32D3\u32D4\u32D5\u32D6\u32D7\u32D8\u32D9"+
+        "\u32DA\u32DB\u32DC\u32DD\u32DE\u32DF\u32E0\u32E1"+
+        "\u32E2\u32E3\u32E4\u32E5\u32E6\u32E7\u32E8\u32E9"+
+        "\u32EA\u32EB\u32EC\u32ED\u32EE\u32EF\u32F0\u32F1"+
+        "\u32F2\u32F3\u32F4\u32F5\u32F6\u32F7\u32F8\u32F9"+
+        "\u32FA\u32FB\u32FC\u32FD\u32FE\u32FF\u3300\u3301"+
+        "\u3302\u3303\u3304\u3305\u3306\u3307\u3308\u3309"+
+        "\u330A\u330B\u330C\u330D\u330E\u330F\u3310\u3311"+
+        "\u3312\u3313\u3314\u3315\u3316\u3317\u3318\u3319"+
+        "\u331A\u331B\u331C\u331D\u331E\u331F\u3320\u3321"+
+        "\u3322\u3323\u3324\u3325\u3326\u3327\u3328\u3329"+
+        "\u332A\u332B\u332C\u332D\u332E\u332F\u3330\u3331"+
+        "\u3332\u3333\u3334\u3335\u3336\u3337\u3338\u3339"+
+        "\u333A\u333B\u333C\u333D\u333E\u333F\u3340\u3341"+
+        "\u3342\u3343\u3344\u3345\u3346\u3347\u3348\u3349"+
+        "\u334A\u334B\u334C\u334D\u334E\u334F\u3350\u3351"+
+        "\u3352\u3353\u3354\u3355\u3356\u3357\u3358\u3359"+
+        "\u335A\u335B\u335C\u335D\u335E\u335F\u3360\u3361"+
+        "\u3362\u3363\u3364\u3365\u3366\u3367\u3368\u3369"+
+        "\u336A\u336B\u336C\u336D\u336E\u336F\u3370\u3371"+
+        "\u3372\u3373\u3374\u3375\u3376\u3377\u3378\u3379"+
+        "\u337A\u337B\u337C\u337D\u337E\u337F\u3380\u3381"+
+        "\u3382\u3383\u3384\u3385\u3386\u3387\u3388\u3389"+
+        "\u338A\u338B\u338C\u338D\u338E\u338F\u3390\u3391"+
+        "\u3392\u3393\u3394\u3395\u3396\u3397\u3398\u3399"+
+        "\u339A\u339B\u339C\u339D\u339E\u339F\u33A0\u33A1"+
+        "\u33A2\u33A3\u33A4\u33A5\u33A6\u33A7\u33A8\u33A9"+
+        "\u33AA\u33AB\u33AC\u33AD\u33AE\u33AF\u33B0\u33B1"+
+        "\u33B2\u33B3\u33B4\u33B5\u33B6\u33B7\u33B8\u33B9"+
+        "\u33BA\u33BB\u33BC\u33BD\u33BE\u33BF\u33C0\u33C1"+
+        "\u33C2\u33C3\u33C4\u33C5\u33C6\u33C7\u33C8\u33C9"+
+        "\u33CA\u33CB\u33CC\u33CD\u33CE\u33CF\u33D0\u33D1"+
+        "\u33D2\u33D3\u33D4\u33D5\u33D6\u33D7\u33D8\u33D9"+
+        "\u33DA\u33DB\u33DC\u33DD\u33DE\u33DF\u33E0\u33E1"+
+        "\u33E2\u33E3\u33E4\u33E5\u33E6\u33E7\u33E8\u33E9"+
+        "\u33EA\u33EB\u33EC\u33ED\u33EE\u33EF\u33F0\u33F1"+
+        "\u33F2\u33F3\u33F4\u33F5\u33F6\u33F7\u33F8\u33F9"+
+        "\u33FA\u33FB\u33FC\u33FD\u33FE\u33FF\u3400\u3401"+
+        "\u3402\u3403\u3404\u3405\u3406\u3407\u3408\u3409"+
+        "\u340A\u340B\u340C\u340D\u340E\u340F\u3410\u3411"+
+        "\u3412\u3413\u3414\u3415\u3416\u3417\u3418\u3419"+
+        "\u341A\u341B\u341C\u341D\u341E\u341F\u3420\u3421"+
+        "\u3422\u3423\u3424\u3425\u3426\u3427\u3428\u3429"+
+        "\u342A\u342B\u342C\u342D\u342E\u342F\u3430\u3431"+
+        "\u3432\u3433\u3434\u3435\u3436\u3437\u3438\u3439"+
+        "\u343A\u343B\u343C\u343D\u343E\u343F\u3440\u3441"+
+        "\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u3449"+
+        "\u344A\u344B\u344C\u344D\u344E\u344F\u3450\u3451"+
+        "\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459"+
+        "\u345A\u345B\u345C\u345D\u345E\u345F\u3460\u3461"+
+        "\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469"+
+        "\u346A\u346B\u346C\u346D\u346E\u346F\u3470\u3471"+
+        "\u3472\u3473\u3474\u3475\u3476\u3477\u3478\u3479"+
+        "\u347A\u347B\u347C\u347D\u347E\u347F\u3480\u3481"+
+        "\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489"+
+        "\u348A\u348B\u348C\u348D\u348E\u348F\u3490\u3491"+
+        "\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u3499"+
+        "\u349A\u349B\u349C\u349D\u349E\u349F\u34A0\u34A1"+
+        "\u34A2\u34A3\u34A4\u34A5\u34A6\u34A7\u34A8\u34A9"+
+        "\u34AA\u34AB\u34AC\u34AD\u34AE\u34AF\u34B0\u34B1"+
+        "\u34B2\u34B3\u34B4\u34B5\u34B6\u34B7\u34B8\u34B9"+
+        "\u34BA\u34BB\u34BC\u34BD\u34BE\u34BF\u34C0\u34C1"+
+        "\u34C2\u34C3\u34C4\u34C5\u34C6\u34C7\u34C8\u34C9"+
+        "\u34CA\u34CB\u34CC\u34CD\u34CE\u34CF\u34D0\u34D1"+
+        "\u34D2\u34D3\u34D4\u34D5\u34D6\u34D7\u34D8\u34D9"+
+        "\u34DA\u34DB\u34DC\u34DD\u34DE\u34DF\u34E0\u34E1"+
+        "\u34E2\u34E3\u34E4\u34E5\u34E6\u34E7\u34E8\u34E9"+
+        "\u34EA\u34EB\u34EC\u34ED\u34EE\u34EF\u34F0\u34F1"+
+        "\u34F2\u34F3\u34F4\u34F5\u34F6\u34F7\u34F8\u34F9"+
+        "\u34FA\u34FB\u34FC\u34FD\u34FE\u34FF\u3500\u3501"+
+        "\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509"+
+        "\u350A\u350B\u350C\u350D\u350E\u350F\u3510\u3511"+
+        "\u3512\u3513\u3514\u3515\u3516\u3517\u3518\u3519"+
+        "\u351A\u351B\u351C\u351D\u351E\u351F\u3520\u3521"+
+        "\u3522\u3523\u3524\u3525\u3526\u3527\u3528\u3529"+
+        "\u352A\u352B\u352C\u352D\u352E\u352F\u3530\u3531"+
+        "\u3532\u3533\u3534\u3535\u3536\u3537\u3538\u3539"+
+        "\u353A\u353B\u353C\u353D\u353E\u353F\u3540\u3541"+
+        "\u3542\u3543\u3544\u3545\u3546\u3547\u3548\u3549"+
+        "\u354A\u354B\u354C\u354D\u354E\u354F\u3550\u3551"+
+        "\u3552\u3553\u3554\u3555\u3556\u3557\u3558\u3559"+
+        "\u355A\u355B\u355C\u355D\u355E\u355F\u3560\u3561"+
+        "\u3562\u3563\u3564\u3565\u3566\u3567\u3568\u3569"+
+        "\u356A\u356B\u356C\u356D\u356E\u356F\u3570\u3571"+
+        "\u3572\u3573\u3574\u3575\u3576\u3577\u3578\u3579"+
+        "\u357A\u357B\u357C\u357D\u357E\u357F\u3580\u3581"+
+        "\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589"+
+        "\u358A\u358B\u358C\u358D\u358E\u358F\u3590\u3591"+
+        "\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599"+
+        "\u359A\u359B\u359C\u359D\u359E\u359F\u35A0\u35A1"+
+        "\u35A2\u35A3\u35A4\u35A5\u35A6\u35A7\u35A8\u35A9"+
+        "\u35AA\u35AB\u35AC\u35AD\u35AE\u35AF\u35B0\u35B1"+
+        "\u35B2\u35B3\u35B4\u35B5\u35B6\u35B7\u35B8\u35B9"+
+        "\u35BA\u35BB\u35BC\u35BD\u35BE\u35BF\u35C0\u35C1"+
+        "\u35C2\u35C3\u35C4\u35C5\u35C6\u35C7\u35C8\u35C9"+
+        "\u35CA\u35CB\u35CC\u35CD\u35CE\u35CF\u35D0\u35D1"+
+        "\u35D2\u35D3\u35D4\u35D5\u35D6\u35D7\u35D8\u35D9"+
+        "\u35DA\u35DB\u35DC\u35DD\u35DE\u35DF\u35E0\u35E1"+
+        "\u35E2\u35E3\u35E4\u35E5\u35E6\u35E7\u35E8\u35E9"+
+        "\u35EA\u35EB\u35EC\u35ED\u35EE\u35EF\u35F0\u35F1"+
+        "\u35F2\u35F3\u35F4\u35F5\u35F6\u35F7\u35F8\u35F9"+
+        "\u35FA\u35FB\u35FC\u35FD\u35FE\u35FF\u3600\u3601"+
+        "\u3602\u3603\u3604\u3605\u3606\u3607\u3608\u3609"+
+        "\u360A\u360B\u360C\u360D\u360E\u360F\u3610\u3611"+
+        "\u3612\u3613\u3614\u3615\u3616\u3617\u3618\u3619"+
+        "\u361A\u361B\u361C\u361D\u361E\u361F\u3620\u3621"+
+        "\u3622\u3623\u3624\u3625\u3626\u3627\u3628\u3629"+
+        "\u362A\u362B\u362C\u362D\u362E\u362F\u3630\u3631"+
+        "\u3632\u3633\u3634\u3635\u3636\u3637\u3638\u3639"+
+        "\u363A\u363B\u363C\u363D\u363E\u363F\u3640\u3641"+
+        "\u3642\u3643\u3644\u3645\u3646\u3647\u3648\u3649"+
+        "\u364A\u364B\u364C\u364D\u364E\u364F\u3650\u3651"+
+        "\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u3659"+
+        "\u365A\u365B\u365C\u365D\u365E\u365F\u3660\u3661"+
+        "\u3662\u3663\u3664\u3665\u3666\u3667\u3668\u3669"+
+        "\u366A\u366B\u366C\u366D\u366E\u366F\u3670\u3671"+
+        "\u3672\u3673\u3674\u3675\u3676\u3677\u3678\u3679"+
+        "\u367A\u367B\u367C\u367D\u367E\u367F\u3680\u3681"+
+        "\u3682\u3683\u3684\u3685\u3686\u3687\u3688\u3689"+
+        "\u368A\u368B\u368C\u368D\u368E\u368F\u3690\u3691"+
+        "\u3692\u3693\u3694\u3695\u3696\u3697\u3698\u3699"+
+        "\u369A\u369B\u369C\u369D\u369E\u369F\u36A0\u36A1"+
+        "\u36A2\u36A3\u36A4\u36A5\u36A6\u36A7\u36A8\u36A9"+
+        "\u36AA\u36AB\u36AC\u36AD\u36AE\u36AF\u36B0\u36B1"+
+        "\u36B2\u36B3\u36B4\u36B5\u36B6\u36B7\u36B8\u36B9"+
+        "\u36BA\u36BB\u36BC\u36BD\u36BE\u36BF\u36C0\u36C1"+
+        "\u36C2\u36C3\u36C4\u36C5\u36C6\u36C7\u36C8\u36C9"+
+        "\u36CA\u36CB\u36CC\u36CD\u36CE\u36CF\u36D0\u36D1"+
+        "\u36D2\u36D3\u36D4\u36D5\u36D6\u36D7\u36D8\u36D9"+
+        "\u36DA\u36DB\u36DC\u36DD\u36DE\u36DF\u36E0\u36E1"+
+        "\u36E2\u36E3\u36E4\u36E5\u36E6\u36E7\u36E8\u36E9"+
+        "\u36EA\u36EB\u36EC\u36ED\u36EE\u36EF\u36F0\u36F1"+
+        "\u36F2\u36F3\u36F4\u36F5\u36F6\u36F7\u36F8\u36F9"+
+        "\u36FA\u36FB\u36FC\u36FD\u36FE\u36FF\u3700\u3701"+
+        "\u3702\u3703\u3704\u3705\u3706\u3707\u3708\u3709"+
+        "\u370A\u370B\u370C\u370D\u370E\u370F\u3710\u3711"+
+        "\u3712\u3713\u3714\u3715\u3716\u3717\u3718\u3719"+
+        "\u371A\u371B\u371C\u371D\u371E\u371F\u3720\u3721"+
+        "\u3722\u3723\u3724\u3725\u3726\u3727\u3728\u3729"+
+        "\u372A\u372B\u372C\u372D\u372E\u372F\u3730\u3731"+
+        "\u3732\u3733\u3734\u3735\u3736\u3737\u3738\u3739"+
+        "\u373A\u373B\u373C\u373D\u373E\u373F\u3740\u3741"+
+        "\u3742\u3743\u3744\u3745\u3746\u3747\u3748\u3749"+
+        "\u374A\u374B\u374C\u374D\u374E\u374F\u3750\u3751"+
+        "\u3752\u3753\u3754\u3755\u3756\u3757\u3758\u3759"+
+        "\u375A\u375B\u375C\u375D\u375E\u375F\u3760\u3761"+
+        "\u3762\u3763\u3764\u3765\u3766\u3767\u3768\u3769"+
+        "\u376A\u376B\u376C\u376D\u376E\u376F\u3770\u3771"+
+        "\u3772\u3773\u3774\u3775\u3776\u3777\u3778\u3779"+
+        "\u377A\u377B\u377C\u377D\u377E\u377F\u3780\u3781"+
+        "\u3782\u3783\u3784\u3785\u3786\u3787\u3788\u3789"+
+        "\u378A\u378B\u378C\u378D\u378E\u378F\u3790\u3791"+
+        "\u3792\u3793\u3794\u3795\u3796\u3797\u3798\u3799"+
+        "\u379A\u379B\u379C\u379D\u379E\u379F\u37A0\u37A1"+
+        "\u37A2\u37A3\u37A4\u37A5\u37A6\u37A7\u37A8\u37A9"+
+        "\u37AA\u37AB\u37AC\u37AD\u37AE\u37AF\u37B0\u37B1"+
+        "\u37B2\u37B3\u37B4\u37B5\u37B6\u37B7\u37B8\u37B9"+
+        "\u37BA\u37BB\u37BC\u37BD\u37BE\u37BF\u37C0\u37C1"+
+        "\u37C2\u37C3\u37C4\u37C5\u37C6\u37C7\u37C8\u37C9"+
+        "\u37CA\u37CB\u37CC\u37CD\u37CE\u37CF\u37D0\u37D1"+
+        "\u37D2\u37D3\u37D4\u37D5\u37D6\u37D7\u37D8\u37D9"+
+        "\u37DA\u37DB\u37DC\u37DD\u37DE\u37DF\u37E0\u37E1"+
+        "\u37E2\u37E3\u37E4\u37E5\u37E6\u37E7\u37E8\u37E9"+
+        "\u37EA\u37EB\u37EC\u37ED\u37EE\u37EF\u37F0\u37F1"+
+        "\u37F2\u37F3\u37F4\u37F5\u37F6\u37F7\u37F8\u37F9"+
+        "\u37FA\u37FB\u37FC\u37FD\u37FE\u37FF\u3800\u3801"+
+        "\u3802\u3803\u3804\u3805\u3806\u3807\u3808\u3809"+
+        "\u380A\u380B\u380C\u380D\u380E\u380F\u3810\u3811"+
+        "\u3812\u3813\u3814\u3815\u3816\u3817\u3818\u3819"+
+        "\u381A\u381B\u381C\u381D\u381E\u381F\u3820\u3821"+
+        "\u3822\u3823\u3824\u3825\u3826\u3827\u3828\u3829"+
+        "\u382A\u382B\u382C\u382D\u382E\u382F\u3830\u3831"+
+        "\u3832\u3833\u3834\u3835\u3836\u3837\u3838\u3839"+
+        "\u383A\u383B\u383C\u383D\u383E\u383F\u3840\u3841"+
+        "\u3842\u3843\u3844\u3845\u3846\u3847\u3848\u3849"+
+        "\u384A\u384B\u384C\u384D\u384E\u384F\u3850\u3851"+
+        "\u3852\u3853\u3854\u3855\u3856\u3857\u3858\u3859"+
+        "\u385A\u385B\u385C\u385D\u385E\u385F\u3860\u3861"+
+        "\u3862\u3863\u3864\u3865\u3866\u3867\u3868\u3869"+
+        "\u386A\u386B\u386C\u386D\u386E\u386F\u3870\u3871"+
+        "\u3872\u3873\u3874\u3875\u3876\u3877\u3878\u3879"+
+        "\u387A\u387B\u387C\u387D\u387E\u387F\u3880\u3881"+
+        "\u3882\u3883\u3884\u3885\u3886\u3887\u3888\u3889"+
+        "\u388A\u388B\u388C\u388D\u388E\u388F\u3890\u3891"+
+        "\u3892\u3893\u3894\u3895\u3896\u3897\u3898\u3899"+
+        "\u389A\u389B\u389C\u389D\u389E\u389F\u38A0\u38A1"+
+        "\u38A2\u38A3\u38A4\u38A5\u38A6\u38A7\u38A8\u38A9"+
+        "\u38AA\u38AB\u38AC\u38AD\u38AE\u38AF\u38B0\u38B1"+
+        "\u38B2\u38B3\u38B4\u38B5\u38B6\u38B7\u38B8\u38B9"+
+        "\u38BA\u38BB\u38BC\u38BD\u38BE\u38BF\u38C0\u38C1"+
+        "\u38C2\u38C3\u38C4\u38C5\u38C6\u38C7\u38C8\u38C9"+
+        "\u38CA\u38CB\u38CC\u38CD\u38CE\u38CF\u38D0\u38D1"+
+        "\u38D2\u38D3\u38D4\u38D5\u38D6\u38D7\u38D8\u38D9"+
+        "\u38DA\u38DB\u38DC\u38DD\u38DE\u38DF\u38E0\u38E1"+
+        "\u38E2\u38E3\u38E4\u38E5\u38E6\u38E7\u38E8\u38E9"+
+        "\u38EA\u38EB\u38EC\u38ED\u38EE\u38EF\u38F0\u38F1"+
+        "\u38F2\u38F3\u38F4\u38F5\u38F6\u38F7\u38F8\u38F9"+
+        "\u38FA\u38FB\u38FC\u38FD\u38FE\u38FF\u3900\u3901"+
+        "\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909"+
+        "\u390A\u390B\u390C\u390D\u390E\u390F\u3910\u3911"+
+        "\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919"+
+        "\u391A\u391B\u391C\u391D\u391E\u391F\u3920\u3921"+
+        "\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929"+
+        "\u392A\u392B\u392C\u392D\u392E\u392F\u3930\u3931"+
+        "\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939"+
+        "\u393A\u393B\u393C\u393D\u393E\u393F\u3940\u3941"+
+        "\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949"+
+        "\u394A\u394B\u394C\u394D\u394E\u394F\u3950\u3951"+
+        "\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959"+
+        "\u395A\u395B\u395C\u395D\u395E\u395F\u3960\u3961"+
+        "\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969"+
+        "\u396A\u396B\u396C\u396D\u396E\u396F\u3970\u3971"+
+        "\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979"+
+        "\u397A\u397B\u397C\u397D\u397E\u397F\u3980\u3981"+
+        "\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u3989"+
+        "\u398A\u398B\u398C\u398D\u398E\u398F\u3990\u3991"+
+        "\u3992\u3993\u3994\u3995\u3996\u3997\u3998\u3999"+
+        "\u399A\u399B\u399C\u399D\u399E\u399F\u39A0\u39A1"+
+        "\u39A2\u39A3\u39A4\u39A5\u39A6\u39A7\u39A8\u39A9"+
+        "\u39AA\u39AB\u39AC\u39AD\u39AE\u39AF\u39B0\u39B1"+
+        "\u39B2\u39B3\u39B4\u39B5\u39B6\u39B7\u39B8\u39B9"+
+        "\u39BA\u39BB\u39BC\u39BD\u39BE\u39BF\u39C0\u39C1"+
+        "\u39C2\u39C3\u39C4\u39C5\u39C6\u39C7\u39C8\u39C9"+
+        "\u39CA\u39CB\u39CC\u39CD\u39CE\u39CF\u39D0\u39D1"+
+        "\u39D2\u39D3\u39D4\u39D5\u39D6\u39D7\u39D8\u39D9"+
+        "\u39DA\u39DB\u39DC\u39DD\u39DE\u39DF\u39E0\u39E1"+
+        "\u39E2\u39E3\u39E4\u39E5\u39E6\u39E7\u39E8\u39E9"+
+        "\u39EA\u39EB\u39EC\u39ED\u39EE\u39EF\u39F0\u39F1"+
+        "\u39F2\u39F3\u39F4\u39F5\u39F6\u39F7\u39F8\u39F9"+
+        "\u39FA\u39FB\u39FC\u39FD\u39FE\u39FF\u3A00\u3A01"+
+        "\u3A02\u3A03\u3A04\u3A05\u3A06\u3A07\u3A08\u3A09"+
+        "\u3A0A\u3A0B\u3A0C\u3A0D\u3A0E\u3A0F\u3A10\u3A11"+
+        "\u3A12\u3A13\u3A14\u3A15\u3A16\u3A17\u3A18\u3A19"+
+        "\u3A1A\u3A1B\u3A1C\u3A1D\u3A1E\u3A1F\u3A20\u3A21"+
+        "\u3A22\u3A23\u3A24\u3A25\u3A26\u3A27\u3A28\u3A29"+
+        "\u3A2A\u3A2B\u3A2C\u3A2D\u3A2E\u3A2F\u3A30\u3A31"+
+        "\u3A32\u3A33\u3A34\u3A35\u3A36\u3A37\u3A38\u3A39"+
+        "\u3A3A\u3A3B\u3A3C\u3A3D\u3A3E\u3A3F\u3A40\u3A41"+
+        "\u3A42\u3A43\u3A44\u3A45\u3A46\u3A47\u3A48\u3A49"+
+        "\u3A4A\u3A4B\u3A4C\u3A4D\u3A4E\u3A4F\u3A50\u3A51"+
+        "\u3A52\u3A53\u3A54\u3A55\u3A56\u3A57\u3A58\u3A59"+
+        "\u3A5A\u3A5B\u3A5C\u3A5D\u3A5E\u3A5F\u3A60\u3A61"+
+        "\u3A62\u3A63\u3A64\u3A65\u3A66\u3A67\u3A68\u3A69"+
+        "\u3A6A\u3A6B\u3A6C\u3A6D\u3A6E\u3A6F\u3A70\u3A71"+
+        "\u3A72\u3A73\u3A74\u3A75\u3A76\u3A77\u3A78\u3A79"+
+        "\u3A7A\u3A7B\u3A7C\u3A7D\u3A7E\u3A7F\u3A80\u3A81"+
+        "\u3A82\u3A83\u3A84\u3A85\u3A86\u3A87\u3A88\u3A89"+
+        "\u3A8A\u3A8B\u3A8C\u3A8D\u3A8E\u3A8F\u3A90\u3A91"+
+        "\u3A92\u3A93\u3A94\u3A95\u3A96\u3A97\u3A98\u3A99"+
+        "\u3A9A\u3A9B\u3A9C\u3A9D\u3A9E\u3A9F\u3AA0\u3AA1"+
+        "\u3AA2\u3AA3\u3AA4\u3AA5\u3AA6\u3AA7\u3AA8\u3AA9"+
+        "\u3AAA\u3AAB\u3AAC\u3AAD\u3AAE\u3AAF\u3AB0\u3AB1"+
+        "\u3AB2\u3AB3\u3AB4\u3AB5\u3AB6\u3AB7\u3AB8\u3AB9"+
+        "\u3ABA\u3ABB\u3ABC\u3ABD\u3ABE\u3ABF\u3AC0\u3AC1"+
+        "\u3AC2\u3AC3\u3AC4\u3AC5\u3AC6\u3AC7\u3AC8\u3AC9"+
+        "\u3ACA\u3ACB\u3ACC\u3ACD\u3ACE\u3ACF\u3AD0\u3AD1"+
+        "\u3AD2\u3AD3\u3AD4\u3AD5\u3AD6\u3AD7\u3AD8\u3AD9"+
+        "\u3ADA\u3ADB\u3ADC\u3ADD\u3ADE\u3ADF\u3AE0\u3AE1"+
+        "\u3AE2\u3AE3\u3AE4\u3AE5\u3AE6\u3AE7\u3AE8\u3AE9"+
+        "\u3AEA\u3AEB\u3AEC\u3AED\u3AEE\u3AEF\u3AF0\u3AF1"+
+        "\u3AF2\u3AF3\u3AF4\u3AF5\u3AF6\u3AF7\u3AF8\u3AF9"+
+        "\u3AFA\u3AFB\u3AFC\u3AFD\u3AFE\u3AFF\u3B00\u3B01"+
+        "\u3B02\u3B03\u3B04\u3B05\u3B06\u3B07\u3B08\u3B09"+
+        "\u3B0A\u3B0B\u3B0C\u3B0D\u3B0E\u3B0F\u3B10\u3B11"+
+        "\u3B12\u3B13\u3B14\u3B15\u3B16\u3B17\u3B18\u3B19"+
+        "\u3B1A\u3B1B\u3B1C\u3B1D\u3B1E\u3B1F\u3B20\u3B21"+
+        "\u3B22\u3B23\u3B24\u3B25\u3B26\u3B27\u3B28\u3B29"+
+        "\u3B2A\u3B2B\u3B2C\u3B2D\u3B2E\u3B2F\u3B30\u3B31"+
+        "\u3B32\u3B33\u3B34\u3B35\u3B36\u3B37\u3B38\u3B39"+
+        "\u3B3A\u3B3B\u3B3C\u3B3D\u3B3E\u3B3F\u3B40\u3B41"+
+        "\u3B42\u3B43\u3B44\u3B45\u3B46\u3B47\u3B48\u3B49"+
+        "\u3B4A\u3B4B\u3B4C\u3B4D\u3B4E\u3B4F\u3B50\u3B51"+
+        "\u3B52\u3B53\u3B54\u3B55\u3B56\u3B57\u3B58\u3B59"+
+        "\u3B5A\u3B5B\u3B5C\u3B5D\u3B5E\u3B5F\u3B60\u3B61"+
+        "\u3B62\u3B63\u3B64\u3B65\u3B66\u3B67\u3B68\u3B69"+
+        "\u3B6A\u3B6B\u3B6C\u3B6D\u3B6E\u3B6F\u3B70\u3B71"+
+        "\u3B72\u3B73\u3B74\u3B75\u3B76\u3B77\u3B78\u3B79"+
+        "\u3B7A\u3B7B\u3B7C\u3B7D\u3B7E\u3B7F\u3B80\u3B81"+
+        "\u3B82\u3B83\u3B84\u3B85\u3B86\u3B87\u3B88\u3B89"+
+        "\u3B8A\u3B8B\u3B8C\u3B8D\u3B8E\u3B8F\u3B90\u3B91"+
+        "\u3B92\u3B93\u3B94\u3B95\u3B96\u3B97\u3B98\u3B99"+
+        "\u3B9A\u3B9B\u3B9C\u3B9D\u3B9E\u3B9F\u3BA0\u3BA1"+
+        "\u3BA2\u3BA3\u3BA4\u3BA5\u3BA6\u3BA7\u3BA8\u3BA9"+
+        "\u3BAA\u3BAB\u3BAC\u3BAD\u3BAE\u3BAF\u3BB0\u3BB1"+
+        "\u3BB2\u3BB3\u3BB4\u3BB5\u3BB6\u3BB7\u3BB8\u3BB9"+
+        "\u3BBA\u3BBB\u3BBC\u3BBD\u3BBE\u3BBF\u3BC0\u3BC1"+
+        "\u3BC2\u3BC3\u3BC4\u3BC5\u3BC6\u3BC7\u3BC8\u3BC9"+
+        "\u3BCA\u3BCB\u3BCC\u3BCD\u3BCE\u3BCF\u3BD0\u3BD1"+
+        "\u3BD2\u3BD3\u3BD4\u3BD5\u3BD6\u3BD7\u3BD8\u3BD9"+
+        "\u3BDA\u3BDB\u3BDC\u3BDD\u3BDE\u3BDF\u3BE0\u3BE1"+
+        "\u3BE2\u3BE3\u3BE4\u3BE5\u3BE6\u3BE7\u3BE8\u3BE9"+
+        "\u3BEA\u3BEB\u3BEC\u3BED\u3BEE\u3BEF\u3BF0\u3BF1"+
+        "\u3BF2\u3BF3\u3BF4\u3BF5\u3BF6\u3BF7\u3BF8\u3BF9"+
+        "\u3BFA\u3BFB\u3BFC\u3BFD\u3BFE\u3BFF\u3C00\u3C01"+
+        "\u3C02\u3C03\u3C04\u3C05\u3C06\u3C07\u3C08\u3C09"+
+        "\u3C0A\u3C0B\u3C0C\u3C0D\u3C0E\u3C0F\u3C10\u3C11"+
+        "\u3C12\u3C13\u3C14\u3C15\u3C16\u3C17\u3C18\u3C19"+
+        "\u3C1A\u3C1B\u3C1C\u3C1D\u3C1E\u3C1F\u3C20\u3C21"+
+        "\u3C22\u3C23\u3C24\u3C25\u3C26\u3C27\u3C28\u3C29"+
+        "\u3C2A\u3C2B\u3C2C\u3C2D\u3C2E\u3C2F\u3C30\u3C31"+
+        "\u3C32\u3C33\u3C34\u3C35\u3C36\u3C37\u3C38\u3C39"+
+        "\u3C3A\u3C3B\u3C3C\u3C3D\u3C3E\u3C3F\u3C40\u3C41"+
+        "\u3C42\u3C43\u3C44\u3C45\u3C46\u3C47\u3C48\u3C49"+
+        "\u3C4A\u3C4B\u3C4C\u3C4D\u3C4E\u3C4F\u3C50\u3C51"+
+        "\u3C52\u3C53\u3C54\u3C55\u3C56\u3C57\u3C58\u3C59"+
+        "\u3C5A\u3C5B\u3C5C\u3C5D\u3C5E\u3C5F\u3C60\u3C61"+
+        "\u3C62\u3C63\u3C64\u3C65\u3C66\u3C67\u3C68\u3C69"+
+        "\u3C6A\u3C6B\u3C6C\u3C6D\u3C6E\u3C6F\u3C70\u3C71"+
+        "\u3C72\u3C73\u3C74\u3C75\u3C76\u3C77\u3C78\u3C79"+
+        "\u3C7A\u3C7B\u3C7C\u3C7D\u3C7E\u3C7F\u3C80\u3C81"+
+        "\u3C82\u3C83\u3C84\u3C85\u3C86\u3C87\u3C88\u3C89"+
+        "\u3C8A\u3C8B\u3C8C\u3C8D\u3C8E\u3C8F\u3C90\u3C91"+
+        "\u3C92\u3C93\u3C94\u3C95\u3C96\u3C97\u3C98\u3C99"+
+        "\u3C9A\u3C9B\u3C9C\u3C9D\u3C9E\u3C9F\u3CA0\u3CA1"+
+        "\u3CA2\u3CA3\u3CA4\u3CA5\u3CA6\u3CA7\u3CA8\u3CA9"+
+        "\u3CAA\u3CAB\u3CAC\u3CAD\u3CAE\u3CAF\u3CB0\u3CB1"+
+        "\u3CB2\u3CB3\u3CB4\u3CB5\u3CB6\u3CB7\u3CB8\u3CB9"+
+        "\u3CBA\u3CBB\u3CBC\u3CBD\u3CBE\u3CBF\u3CC0\u3CC1"+
+        "\u3CC2\u3CC3\u3CC4\u3CC5\u3CC6\u3CC7\u3CC8\u3CC9"+
+        "\u3CCA\u3CCB\u3CCC\u3CCD\u3CCE\u3CCF\u3CD0\u3CD1"+
+        "\u3CD2\u3CD3\u3CD4\u3CD5\u3CD6\u3CD7\u3CD8\u3CD9"+
+        "\u3CDA\u3CDB\u3CDC\u3CDD\u3CDE\u3CDF\u3CE0\u3CE1"+
+        "\u3CE2\u3CE3\u3CE4\u3CE5\u3CE6\u3CE7\u3CE8\u3CE9"+
+        "\u3CEA\u3CEB\u3CEC\u3CED\u3CEE\u3CEF\u3CF0\u3CF1"+
+        "\u3CF2\u3CF3\u3CF4\u3CF5\u3CF6\u3CF7\u3CF8\u3CF9"+
+        "\u3CFA\u3CFB\u3CFC\u3CFD\u3CFE\u3CFF\u3D00\u3D01"+
+        "\u3D02\u3D03\u3D04\u3D05\u3D06\u3D07\u3D08\u3D09"+
+        "\u3D0A\u3D0B\u3D0C\u3D0D\u3D0E\u3D0F\u3D10\u3D11"+
+        "\u3D12\u3D13\u3D14\u3D15\u3D16\u3D17\u3D18\u3D19"+
+        "\u3D1A\u3D1B\u3D1C\u3D1D\u3D1E\u3D1F\u3D20\u3D21"+
+        "\u3D22\u3D23\u3D24\u3D25\u3D26\u3D27\u3D28\u3D29"+
+        "\u3D2A\u3D2B\u3D2C\u3D2D\u3D2E\u3D2F\u3D30\u3D31"+
+        "\u3D32\u3D33\u3D34\u3D35\u3D36\u3D37\u3D38\u3D39"+
+        "\u3D3A\u3D3B\u3D3C\u3D3D\u3D3E\u3D3F\u3D40\u3D41"+
+        "\u3D42\u3D43\u3D44\u3D45\u3D46\u3D47\u3D48\u3D49"+
+        "\u3D4A\u3D4B\u3D4C\u3D4D\u3D4E\u3D4F\u3D50\u3D51"+
+        "\u3D52\u3D53\u3D54\u3D55\u3D56\u3D57\u3D58\u3D59"+
+        "\u3D5A\u3D5B\u3D5C\u3D5D\u3D5E\u3D5F\u3D60\u3D61"+
+        "\u3D62\u3D63\u3D64\u3D65\u3D66\u3D67\u3D68\u3D69"+
+        "\u3D6A\u3D6B\u3D6C\u3D6D\u3D6E\u3D6F\u3D70\u3D71"+
+        "\u3D72\u3D73\u3D74\u3D75\u3D76\u3D77\u3D78\u3D79"+
+        "\u3D7A\u3D7B\u3D7C\u3D7D\u3D7E\u3D7F\u3D80\u3D81"+
+        "\u3D82\u3D83\u3D84\u3D85\u3D86\u3D87\u3D88\u3D89"+
+        "\u3D8A\u3D8B\u3D8C\u3D8D\u3D8E\u3D8F\u3D90\u3D91"+
+        "\u3D92\u3D93\u3D94\u3D95\u3D96\u3D97\u3D98\u3D99"+
+        "\u3D9A\u3D9B\u3D9C\u3D9D\u3D9E\u3D9F\u3DA0\u3DA1"+
+        "\u3DA2\u3DA3\u3DA4\u3DA5\u3DA6\u3DA7\u3DA8\u3DA9"+
+        "\u3DAA\u3DAB\u3DAC\u3DAD\u3DAE\u3DAF\u3DB0\u3DB1"+
+        "\u3DB2\u3DB3\u3DB4\u3DB5\u3DB6\u3DB7\u3DB8\u3DB9"+
+        "\u3DBA\u3DBB\u3DBC\u3DBD\u3DBE\u3DBF\u3DC0\u3DC1"+
+        "\u3DC2\u3DC3\u3DC4\u3DC5\u3DC6\u3DC7\u3DC8\u3DC9"+
+        "\u3DCA\u3DCB\u3DCC\u3DCD\u3DCE\u3DCF\u3DD0\u3DD1"+
+        "\u3DD2\u3DD3\u3DD4\u3DD5\u3DD6\u3DD7\u3DD8\u3DD9"+
+        "\u3DDA\u3DDB\u3DDC\u3DDD\u3DDE\u3DDF\u3DE0\u3DE1"+
+        "\u3DE2\u3DE3\u3DE4\u3DE5\u3DE6\u3DE7\u3DE8\u3DE9"+
+        "\u3DEA\u3DEB\u3DEC\u3DED\u3DEE\u3DEF\u3DF0\u3DF1"+
+        "\u3DF2\u3DF3\u3DF4\u3DF5\u3DF6\u3DF7\u3DF8\u3DF9"+
+        "\u3DFA\u3DFB\u3DFC\u3DFD\u3DFE\u3DFF\u3E00\u3E01"+
+        "\u3E02\u3E03\u3E04\u3E05\u3E06\u3E07\u3E08\u3E09"+
+        "\u3E0A\u3E0B\u3E0C\u3E0D\u3E0E\u3E0F\u3E10\u3E11"+
+        "\u3E12\u3E13\u3E14\u3E15\u3E16\u3E17\u3E18\u3E19"+
+        "\u3E1A\u3E1B\u3E1C\u3E1D\u3E1E\u3E1F\u3E20\u3E21"+
+        "\u3E22\u3E23\u3E24\u3E25\u3E26\u3E27\u3E28\u3E29"+
+        "\u3E2A\u3E2B\u3E2C\u3E2D\u3E2E\u3E2F\u3E30\u3E31"+
+        "\u3E32\u3E33\u3E34\u3E35\u3E36\u3E37\u3E38\u3E39"+
+        "\u3E3A\u3E3B\u3E3C\u3E3D\u3E3E\u3E3F\u3E40\u3E41"+
+        "\u3E42\u3E43\u3E44\u3E45\u3E46\u3E47\u3E48\u3E49"+
+        "\u3E4A\u3E4B\u3E4C\u3E4D\u3E4E\u3E4F\u3E50\u3E51"+
+        "\u3E52\u3E53\u3E54\u3E55\u3E56\u3E57\u3E58\u3E59"+
+        "\u3E5A\u3E5B\u3E5C\u3E5D\u3E5E\u3E5F\u3E60\u3E61"+
+        "\u3E62\u3E63\u3E64\u3E65\u3E66\u3E67\u3E68\u3E69"+
+        "\u3E6A\u3E6B\u3E6C\u3E6D\u3E6E\u3E6F\u3E70\u3E71"+
+        "\u3E72\u3E73\u3E74\u3E75\u3E76\u3E77\u3E78\u3E79"+
+        "\u3E7A\u3E7B\u3E7C\u3E7D\u3E7E\u3E7F\u3E80\u3E81"+
+        "\u3E82\u3E83\u3E84\u3E85\u3E86\u3E87\u3E88\u3E89"+
+        "\u3E8A\u3E8B\u3E8C\u3E8D\u3E8E\u3E8F\u3E90\u3E91"+
+        "\u3E92\u3E93\u3E94\u3E95\u3E96\u3E97\u3E98\u3E99"+
+        "\u3E9A\u3E9B\u3E9C\u3E9D\u3E9E\u3E9F\u3EA0\u3EA1"+
+        "\u3EA2\u3EA3\u3EA4\u3EA5\u3EA6\u3EA7\u3EA8\u3EA9"+
+        "\u3EAA\u3EAB\u3EAC\u3EAD\u3EAE\u3EAF\u3EB0\u3EB1"+
+        "\u3EB2\u3EB3\u3EB4\u3EB5\u3EB6\u3EB7\u3EB8\u3EB9"+
+        "\u3EBA\u3EBB\u3EBC\u3EBD\u3EBE\u3EBF\u3EC0\u3EC1"+
+        "\u3EC2\u3EC3\u3EC4\u3EC5\u3EC6\u3EC7\u3EC8\u3EC9"+
+        "\u3ECA\u3ECB\u3ECC\u3ECD\u3ECE\u3ECF\u3ED0\u3ED1"+
+        "\u3ED2\u3ED3\u3ED4\u3ED5\u3ED6\u3ED7\u3ED8\u3ED9"+
+        "\u3EDA\u3EDB\u3EDC\u3EDD\u3EDE\u3EDF\u3EE0\u3EE1";
+
+    private final static String innerEncoderIndex2=
+        "\u3EE2\u3EE3\u3EE4\u3EE5\u3EE6\u3EE7\u3EE8\u3EE9"+
+        "\u3EEA\u3EEB\u3EEC\u3EED\u3EEE\u3EEF\u3EF0\u3EF1"+
+        "\uA95C\u3EF2\u3EF3\uA843\uA1AA\uA844\uA1AC\u3EF4"+
+        "\uA1AE\uA1AF\u3EF5\u3EF6\uA1B0\uA1B1\u3EF7\u3EF8"+
+        "\u3EF9\u3EFA\u3EFB\u3EFC\u3EFD\uA845\uA1AD\u3EFE"+
+        "\u3EFF\u3F00\u3F01\u3F02\u3F03\u3F04\u3F05\u3F06"+
+        "\uA1EB\u3F07\uA1E4\uA1E5\u3F08\uA846\u3F09\u3F0A"+
+        "\u3F0B\u3F0C\u3F0D\uA1F9\u3F0E\u3F0F\u3F10\u3F11"+
+        "\u3F12\u3F13\u3F14\u3F15\u3F16\u3F17\u3F18\u3F19"+
+        "\u3F1A\u3F1B\u3F1C\u3F1D\u3F1E\u3F1F\u3F20\u3F21"+
+        "\u3F22\u3F23\u3F24\u3F25\u3F26\u3F27\u3F28\u3F29"+
+        "\u3F2A\u3F2B\u3F2C\u3F2D\u3F2E\u3F2F\u3F30\u3F31"+
+        "\u3F32\u3F33\u3F34\u3F35\u3F36\u3F37\u3F38\u3F39"+
+        "\u3F3A\u3F3B\u3F3C\u3F3D\u3F3E\u3F3F\u3F40\u3F41"+
+        "\u3F42\u3F43\u3F44\u3F45\u3F46\u3F47\u3F48\u3F49"+
+        "\u3F4A\u3F4B\u3F4C\u3F4D\u3F4E\u3F4F\u3F50\u3F51"+
+        "\u3F52\u3F53\u3F54\u3F55\u3F56\u3F57\u3F58\u3F59"+
+        "\u3F5A\u3F5B\u3F5C\u3F5D\u3F5E\u3F5F\u3F60\u3F61"+
+        "\u3F62\u3F63\u3F64\u3F65\u3F66\u3F67\u3F68\u3F69"+
+        "\u3F6A\u3F6B\u3F6C\u3F6D\u3F6E\u3F6F\u3F70\u3F71"+
+        "\u3F72\u3F73\u3F74\u3F75\u3F76\u3F77\u3F78\u3F79"+
+        "\u3F7A\u3F7B\u3F7C\u3F7D\uA2E3\u3F7E\u3F7F\u3F80"+
+        "\u3F81\u3F82\u3F83\u3F84\u3F85\u3F86\u3F87\u3F88"+
+        "\u3F89\u3F8A\u3F8B\u3F8C\u3F8D\u3F8E\u3F8F\u3F90"+
+        "\u3F91\u3F92\u3F93\u3F94\u3F95\u3F96\u3F97\u3F98"+
+        "\u3F99\u3F9A\u3F9B\u3F9C\u3F9D\u3F9E\u3F9F\u3FA0"+
+        "\u3FA1\u3FA2\u3FA3\u3FA4\u3FA5\u3FA6\u3FA7\u3FA8"+
+        "\u3FA9\u3FAA\u3FAB\u3FAC\u3FAD\u3FAE\u3FAF\u3FB0"+
+        "\u3FB1\u3FB2\u3FB3\u3FB4\u3FB5\u3FB6\u3FB7\u3FB8"+
+        "\u3FB9\u3FBA\u3FBB\u3FBC\u3FBD\u3FBE\u3FBF\u3FC0"+
+        "\u3FC1\u3FC2\u3FC3\u3FC4\u3FC5\u3FC6\u3FC7\u3FC8"+
+        "\u3FC9\u3FCA\u3FCB\u3FCC\u3FCD\u3FCE\u3FCF\u3FD0"+
+        "\u3FD1\u3FD2\u3FD3\uA1E6\u3FD4\uA847\u3FD5\u3FD6"+
+        "\u3FD7\uA848\u3FD8\u3FD9\u3FDA\u3FDB\u3FDC\u3FDD"+
+        "\u3FDE\u3FDF\u3FE0\u3FE1\u3FE2\u3FE3\uA1ED\u3FE4"+
+        "\u3FE5\u3FE6\u3FE7\u3FE8\u3FE9\u3FEA\u3FEB\u3FEC"+
+        "\u3FED\uA959\u3FEE\u3FEF\u3FF0\u3FF1\u3FF2\u3FF3"+
+        "\u3FF4\u3FF5\u3FF6\u3FF7\u3FF8\u3FF9\u3FFA\u3FFB"+
+        "\u3FFC\u3FFD\u3FFE\u3FFF\u4000\u4001\u4002\u4003"+
+        "\u4004\u4005\u4006\u4007\u4008\u4009\u400A\u400B"+
+        "\u400C\u400D\u400E\u400F\u4010\u4011\u4012\u4013"+
+        "\u4014\u4015\u4016\u4017\u4018\u4019\u401A\u401B"+
+        "\u401C\u401D\u401E\u401F\u4020\u4021\u4022\u4023"+
+        "\u4024\u4025\u4026\u4027\u4028\u4029\u402A\u402B"+
+        "\uA2F1\uA2F2\uA2F3\uA2F4\uA2F5\uA2F6\uA2F7\uA2F8"+
+        "\uA2F9\uA2FA\uA2FB\uA2FC\u402C\u402D\u402E\u402F"+
+        "\uA2A1\uA2A2\uA2A3\uA2A4\uA2A5\uA2A6\uA2A7\uA2A8"+
+        "\uA2A9\uA2AA\u4030\u4031\u4032\u4033\u4034\u4035"+
+        "\u4036\u4037\u4038\u4039\u403A\u403B\u403C\u403D"+
+        "\u403E\u403F\u4040\u4041\u4042\u4043\u4044\u4045"+
+        "\uA1FB\uA1FC\uA1FA\uA1FD\u4046\u4047\uA849\uA84A"+
+        "\uA84B\uA84C\u4048\u4049\u404A\u404B\u404C\u404D"+
+        "\u404E\u404F\u4050\u4051\u4052\u4053\u4054\u4055"+
+        "\u4056\u4057\u4058\u4059\u405A\u405B\u405C\u405D"+
+        "\u405E\u405F\u4060\u4061\u4062\u4063\u4064\u4065"+
+        "\u4066\u4067\u4068\u4069\u406A\u406B\u406C\u406D"+
+        "\u406E\u406F\u4070\u4071\u4072\u4073\u4074\u4075"+
+        "\u4076\u4077\u4078\u4079\u407A\u407B\u407C\u407D"+
+        "\u407E\u407F\u4080\u4081\u4082\u4083\u4084\u4085"+
+        "\u4086\u4087\u4088\u4089\u408A\u408B\u408C\u408D"+
+        "\u408E\u408F\u4090\u4091\u4092\u4093\u4094\u4095"+
+        "\u4096\u4097\u4098\u4099\u409A\u409B\u409C\u409D"+
+        "\u409E\u409F\u40A0\u40A1\u40A2\u40A3\u40A4\u40A5"+
+        "\u40A6\u40A7\u40A8\u40A9\u40AA\u40AB\u40AC\u40AD"+
+        "\u40AE\u40AF\u40B0\u40B1\u40B2\u40B3\u40B4\u40B5"+
+        "\uA1CA\u40B6\u40B7\u40B8\u40B9\u40BA\u40BB\uA1C7"+
+        "\u40BC\uA1C6\u40BD\u40BE\u40BF\uA84D\u40C0\u40C1"+
+        "\u40C2\u40C3\uA1CC\u40C4\u40C5\uA1D8\uA1DE\uA84E"+
+        "\uA1CF\u40C6\u40C7\uA84F\u40C8\uA1CE\u40C9\uA1C4"+
+        "\uA1C5\uA1C9\uA1C8\uA1D2\u40CA\u40CB\uA1D3\u40CC"+
+        "\u40CD\u40CE\u40CF\u40D0\uA1E0\uA1DF\uA1C3\uA1CB"+
+        "\u40D1\u40D2\u40D3\u40D4\u40D5\uA1D7\u40D6\u40D7"+
+        "\u40D8\u40D9\u40DA\u40DB\u40DC\u40DD\u40DE\u40DF"+
+        "\uA1D6\u40E0\u40E1\u40E2\uA1D5\u40E3\u40E4\u40E5"+
+        "\u40E6\u40E7\uA850\u40E8\u40E9\u40EA\u40EB\u40EC"+
+        "\u40ED\u40EE\u40EF\u40F0\u40F1\u40F2\u40F3\u40F4"+
+        "\uA1D9\uA1D4\u40F5\u40F6\uA1DC\uA1DD\uA851\uA852"+
+        "\u40F7\u40F8\u40F9\u40FA\u40FB\u40FC\uA1DA\uA1DB"+
+        "\u40FD\u40FE\u40FF\u4100\u4101\u4102\u4103\u4104"+
+        "\u4105\u4106\u4107\u4108\u4109\u410A\u410B\u410C"+
+        "\u410D\u410E\u410F\u4110\u4111\u4112\u4113\u4114"+
+        "\u4115\u4116\u4117\u4118\u4119\u411A\u411B\u411C"+
+        "\u411D\u411E\u411F\u4120\u4121\uA892\u4122\u4123"+
+        "\u4124\uA1D1\u4125\u4126\u4127\u4128\u4129\u412A"+
+        "\u412B\u412C\u412D\u412E\u412F\uA1CD\u4130\u4131"+
+        "\u4132\u4133\u4134\u4135\u4136\u4137\u4138\u4139"+
+        "\u413A\u413B\u413C\u413D\u413E\u413F\u4140\u4141"+
+        "\u4142\u4143\u4144\u4145\u4146\u4147\u4148\uA853"+
+        "\u4149\u414A\u414B\u414C\u414D\u414E\u414F\u4150"+
+        "\u4151\u4152\u4153\u4154\u4155\u4156\u4157\u4158"+
+        "\u4159\u415A\u415B\u415C\u415D\u415E\u415F\u4160"+
+        "\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168"+
+        "\u4169\u416A\u416B\u416C\u416D\u416E\u416F\u4170"+
+        "\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178"+
+        "\u4179\u417A\u417B\u417C\u417D\u417E\u417F\u4180"+
+        "\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188"+
+        "\u4189\u418A\u418B\u418C\u418D\u418E\u418F\u4190"+
+        "\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198"+
+        "\u4199\u419A\uA1D0\u419B\u419C\u419D\u419E\u419F"+
+        "\u41A0\u41A1\u41A2\u41A3\u41A4\u41A5\u41A6\u41A7"+
+        "\u41A8\u41A9\u41AA\u41AB\u41AC\u41AD\u41AE\u41AF"+
+        "\u41B0\u41B1\u41B2\u41B3\u41B4\u41B5\u41B6\u41B7"+
+        "\u41B8\u41B9\u41BA\u41BB\u41BC\u41BD\u41BE\u41BF"+
+        "\u41C0\u41C1\u41C2\u41C3\u41C4\u41C5\u41C6\u41C7"+
+        "\u41C8\u41C9\u41CA\u41CB\u41CC\u41CD\u41CE\u41CF"+
+        "\u41D0\u41D1\u41D2\u41D3\u41D4\u41D5\u41D6\u41D7"+
+        "\u41D8\u41D9\u41DA\u41DB\u41DC\u41DD\u41DE\u41DF"+
+        "\u41E0\u41E1\u41E2\u41E3\u41E4\u41E5\u41E6\u41E7"+
+        "\u41E8\u41E9\u41EA\u41EB\u41EC\u41ED\u41EE\u41EF"+
+        "\u41F0\u41F1\u41F2\u41F3\u41F4\u41F5\u41F6\u41F7"+
+        "\u41F8\u41F9\u41FA\u41FB\u41FC\u41FD\u41FE\u41FF"+
+        "\u4200\u4201\u4202\u4203\u4204\u4205\u4206\u4207"+
+        "\u4208\u4209\u420A\u420B\u420C\u420D\u420E\u420F"+
+        "\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217"+
+        "\u4218\u4219\u421A\u421B\u421C\u421D\u421E\u421F"+
+        "\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227"+
+        "\u4228\u4229\u422A\u422B\u422C\u422D\u422E\u422F"+
+        "\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237"+
+        "\u4238\u4239\u423A\u423B\u423C\u423D\u423E\u423F"+
+        "\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247"+
+        "\u4248\u4249\u424A\u424B\u424C\u424D\u424E\u424F"+
+        "\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257"+
+        "\u4258\u4259\u425A\u425B\u425C\u425D\u425E\u425F"+
+        "\u4260\u4261\u4262\u4263\u4264\u4265\u4266\u4267"+
+        "\u4268\u4269\u426A\u426B\u426C\u426D\u426E\u426F"+
+        "\u4270\u4271\u4272\u4273\u4274\u4275\u4276\u4277"+
+        "\u4278\u4279\u427A\u427B\u427C\u427D\u427E\u427F"+
+        "\u4280\u4281\u4282\u4283\u4284\u4285\u4286\u4287"+
+        "\u4288\u4289\u428A\u428B\u428C\u428D\u428E\u428F"+
+        "\u4290\u4291\u4292\u4293\u4294\u4295\u4296\u4297"+
+        "\u4298\u4299\u429A\u429B\u429C\u429D\u429E\u429F"+
+        "\u42A0\u42A1\u42A2\u42A3\u42A4\u42A5\u42A6\u42A7"+
+        "\u42A8\u42A9\u42AA\u42AB\u42AC\u42AD\u42AE\u42AF"+
+        "\u42B0\u42B1\u42B2\u42B3\u42B4\u42B5\u42B6\u42B7"+
+        "\u42B8\u42B9\u42BA\u42BB\u42BC\u42BD\u42BE\u42BF"+
+        "\u42C0\u42C1\u42C2\u42C3\u42C4\u42C5\u42C6\u42C7"+
+        "\u42C8\u42C9\u42CA\u42CB\u42CC\u42CD\u42CE\u42CF"+
+        "\u42D0\u42D1\u42D2\u42D3\u42D4\u42D5\u42D6\u42D7"+
+        "\u42D8\u42D9\u42DA\u42DB\u42DC\u42DD\u42DE\u42DF"+
+        "\u42E0\u42E1\u42E2\u42E3\u42E4\u42E5\u42E6\u42E7"+
+        "\uA2D9\uA2DA\uA2DB\uA2DC\uA2DD\uA2DE\uA2DF\uA2E0"+
+        "\uA2E1\uA2E2\u42E8\u42E9\u42EA\u42EB\u42EC\u42ED"+
+        "\u42EE\u42EF\u42F0\u42F1\uA2C5\uA2C6\uA2C7\uA2C8"+
+        "\uA2C9\uA2CA\uA2CB\uA2CC\uA2CD\uA2CE\uA2CF\uA2D0"+
+        "\uA2D1\uA2D2\uA2D3\uA2D4\uA2D5\uA2D6\uA2D7\uA2D8"+
+        "\uA2B1\uA2B2\uA2B3\uA2B4\uA2B5\uA2B6\uA2B7\uA2B8"+
+        "\uA2B9\uA2BA\uA2BB\uA2BC\uA2BD\uA2BE\uA2BF\uA2C0"+
+        "\uA2C1\uA2C2\uA2C3\uA2C4\u42F2\u42F3\u42F4\u42F5"+
+        "\u42F6\u42F7\u42F8\u42F9\u42FA\u42FB\u42FC\u42FD"+
+        "\u42FE\u42FF\u4300\u4301\u4302\u4303\u4304\u4305"+
+        "\u4306\u4307\u4308\u4309\u430A\u430B\u430C\u430D"+
+        "\u430E\u430F\u4310\u4311\u4312\u4313\u4314\u4315"+
+        "\u4316\u4317\u4318\u4319\u431A\u431B\u431C\u431D"+
+        "\u431E\u431F\u4320\u4321\u4322\u4323\u4324\u4325"+
+        "\u4326\u4327\u4328\u4329\u432A\u432B\u432C\u432D"+
+        "\u432E\u432F\u4330\u4331\u4332\u4333\u4334\u4335"+
+        "\u4336\u4337\u4338\u4339\u433A\u433B\u433C\u433D"+
+        "\u433E\u433F\u4340\u4341\u4342\u4343\u4344\u4345"+
+        "\u4346\u4347\u4348\u4349\u434A\u434B\u434C\u434D"+
+        "\u434E\u434F\u4350\u4351\u4352\u4353\u4354\u4355"+
+        "\uA9A4\uA9A5\uA9A6\uA9A7\uA9A8\uA9A9\uA9AA\uA9AB"+
+        "\uA9AC\uA9AD\uA9AE\uA9AF\uA9B0\uA9B1\uA9B2\uA9B3"+
+        "\uA9B4\uA9B5\uA9B6\uA9B7\uA9B8\uA9B9\uA9BA\uA9BB"+
+        "\uA9BC\uA9BD\uA9BE\uA9BF\uA9C0\uA9C1\uA9C2\uA9C3"+
+        "\uA9C4\uA9C5\uA9C6\uA9C7\uA9C8\uA9C9\uA9CA\uA9CB"+
+        "\uA9CC\uA9CD\uA9CE\uA9CF\uA9D0\uA9D1\uA9D2\uA9D3"+
+        "\uA9D4\uA9D5\uA9D6\uA9D7\uA9D8\uA9D9\uA9DA\uA9DB"+
+        "\uA9DC\uA9DD\uA9DE\uA9DF\uA9E0\uA9E1\uA9E2\uA9E3"+
+        "\uA9E4\uA9E5\uA9E6\uA9E7\uA9E8\uA9E9\uA9EA\uA9EB"+
+        "\uA9EC\uA9ED\uA9EE\uA9EF\u4356\u4357\u4358\u4359"+
+        "\uA854\uA855\uA856\uA857\uA858\uA859\uA85A\uA85B"+
+        "\uA85C\uA85D\uA85E\uA85F\uA860\uA861\uA862\uA863"+
+        "\uA864\uA865\uA866\uA867\uA868\uA869\uA86A\uA86B"+
+        "\uA86C\uA86D\uA86E\uA86F\uA870\uA871\uA872\uA873"+
+        "\uA874\uA875\uA876\uA877\u435A\u435B\u435C\u435D"+
+        "\u435E\u435F\u4360\u4361\u4362\u4363\u4364\u4365"+
+        "\u4366\uA878\uA879\uA87A\uA87B\uA87C\uA87D\uA87E"+
+        "\uA880\uA881\uA882\uA883\uA884\uA885\uA886\uA887"+
+        "\u4367\u4368\u4369\uA888\uA889\uA88A\u436A\u436B"+
+        "\u436C\u436D\u436E\u436F\u4370\u4371\u4372\u4373"+
+        "\uA1F6\uA1F5\u4374\u4375\u4376\u4377\u4378\u4379"+
+        "\u437A\u437B\u437C\u437D\u437E\u437F\u4380\u4381"+
+        "\u4382\u4383\uA1F8\uA1F7\u4384\u4385\u4386\u4387"+
+        "\u4388\u4389\u438A\u438B\uA88B\uA88C\u438C\u438D"+
+        "\u438E\u438F\u4390\u4391\u4392\u4393\uA1F4\uA1F3"+
+        "\u4394\u4395\u4396\uA1F0\u4397\u4398\uA1F2\uA1F1"+
+        "\u4399\u439A\u439B\u439C\u439D\u439E\u439F\u43A0"+
+        "\u43A1\u43A2\u43A3\u43A4\u43A5\u43A6\u43A7\u43A8"+
+        "\u43A9\u43AA\uA88D\uA88E\uA88F\uA890\u43AB\u43AC"+
+        "\u43AD\u43AE\u43AF\u43B0\u43B1\u43B2\u43B3\u43B4"+
+        "\u43B5\u43B6\u43B7\u43B8\u43B9\u43BA\u43BB\u43BC"+
+        "\u43BD\u43BE\u43BF\u43C0\u43C1\u43C2\u43C3\u43C4"+
+        "\u43C5\u43C6\u43C7\u43C8\u43C9\uA1EF\uA1EE\u43CA"+
+        "\u43CB\uA891\u43CC\u43CD\u43CE\u43CF\u43D0\u43D1"+
+        "\u43D2\u43D3\u43D4\u43D5\u43D6\u43D7\u43D8\u43D9"+
+        "\u43DA\u43DB\u43DC\u43DD\u43DE\u43DF\u43E0\u43E1"+
+        "\u43E2\u43E3\u43E4\u43E5\u43E6\u43E7\u43E8\u43E9"+
+        "\u43EA\u43EB\u43EC\u43ED\u43EE\u43EF\u43F0\u43F1"+
+        "\u43F2\u43F3\u43F4\u43F5\u43F6\u43F7\u43F8\u43F9"+
+        "\u43FA\u43FB\u43FC\u43FD\u43FE\u43FF\u4400\u4401"+
+        "\uA1E2\u4402\uA1E1\u4403\u4404\u4405\u4406\u4407"+
+        "\u4408\u4409\u440A\u440B\u440C\u440D\u440E\u440F"+
+        "\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417"+
+        "\u4418\u4419\u441A\u441B\u441C\u441D\u441E\u441F"+
+        "\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427"+
+        "\u4428\u4429\u442A\u442B\u442C\u442D\u442E\u442F"+
+        "\u4430\u4431\u4432\u4433\u4434\u4435\u4436\u4437"+
+        "\u4438\u4439\u443A\u443B\u443C\u443D\u443E\u443F"+
+        "\u4440\u4441\u4442\u4443\u4444\u4445\u4446\u4447"+
+        "\u4448\u4449\u444A\u444B\u444C\u444D\u444E\u444F"+
+        "\u4450\u4451\u4452\u4453\u4454\u4455\u4456\u4457"+
+        "\u4458\u4459\u445A\u445B\u445C\u445D\u445E\u445F"+
+        "\u4460\u4461\u4462\u4463\u4464\u4465\u4466\u4467"+
+        "\u4468\u4469\u446A\u446B\u446C\u446D\u446E\u446F"+
+        "\u4470\u4471\u4472\u4473\u4474\u4475\u4476\u4477"+
+        "\u4478\u4479\u447A\u447B\u447C\u447D\u447E\u447F"+
+        "\u4480\u4481\u4482\u4483\u4484\u4485\u4486\u4487"+
+        "\u4488\u4489\u448A\u448B\u448C\u448D\u448E\u448F"+
+        "\u4490\u4491\u4492\u4493\u4494\u4495\u4496\u4497"+
+        "\u4498\u4499\u449A\u449B\u449C\u449D\u449E\u449F"+
+        "\u44A0\u44A1\u44A2\u44A3\u44A4\u44A5\u44A6\u44A7"+
+        "\u44A8\u44A9\u44AA\u44AB\u44AC\u44AD\u44AE\u44AF"+
+        "\u44B0\u44B1\u44B2\u44B3\u44B4\u44B5\u44B6\u44B7"+
+        "\u44B8\u44B9\u44BA\u44BB\u44BC\u44BD\u44BE\u44BF"+
+        "\u44C0\u44C1\u44C2\u44C3\u44C4\u44C5\u44C6\u44C7"+
+        "\u44C8\u44C9\u44CA\u44CB\u44CC\u44CD\u44CE\u44CF"+
+        "\u44D0\u44D1\u44D2\u44D3\u44D4\u44D5\u44D6\u44D7"+
+        "\u44D8\u44D9\u44DA\u44DB\u44DC\u44DD\u44DE\u44DF"+
+        "\u44E0\u44E1\u44E2\u44E3\u44E4\u44E5\u44E6\u44E7"+
+        "\u44E8\u44E9\u44EA\u44EB\u44EC\u44ED\u44EE\u44EF"+
+        "\u44F0\u44F1\u44F2\u44F3\u44F4\u44F5\u44F6\u44F7"+
+        "\u44F8\u44F9\u44FA\u44FB\u44FC\u44FD\u44FE\u44FF"+
+        "\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507"+
+        "\u4508\u4509\u450A\u450B\u450C\u450D\u450E\u450F"+
+        "\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517"+
+        "\u4518\u4519\u451A\u451B\u451C\u451D\u451E\u451F"+
+        "\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527"+
+        "\u4528\u4529\u452A\u452B\u452C\u452D\u452E\u452F"+
+        "\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537"+
+        "\u4538\u4539\u453A\u453B\u453C\u453D\u453E\u453F"+
+        "\u4540\u4541\u4542\u4543\u4544\u4545\u4546\u4547"+
+        "\u4548\u4549\u454A\u454B\u454C\u454D\u454E\u454F"+
+        "\u4550\u4551\u4552\u4553\u4554\u4555\u4556\u4557"+
+        "\u4558\u4559\u455A\u455B\u455C\u455D\u455E\u455F"+
+        "\u4560\u4561\u4562\u4563\u4564\u4565\u4566\u4567"+
+        "\u4568\u4569\u456A\u456B\u456C\u456D\u456E\u456F"+
+        "\u4570\u4571\u4572\u4573\u4574\u4575\u4576\u4577"+
+        "\u4578\u4579\u457A\u457B\u457C\u457D\u457E\u457F"+
+        "\u4580\u4581\u4582\u4583\u4584\u4585\u4586\u4587"+
+        "\u4588\u4589\u458A\u458B\u458C\u458D\u458E\u458F"+
+        "\u4590\u4591\u4592\u4593\u4594\u4595\u4596\u4597"+
+        "\u4598\u4599\u459A\u459B\u459C\u459D\u459E\u459F"+
+        "\u45A0\u45A1\u45A2\u45A3\u45A4\u45A5\u45A6\u45A7"+
+        "\u45A8\u45A9\u45AA\u45AB\u45AC\u45AD\u45AE\u45AF"+
+        "\u45B0\u45B1\u45B2\u45B3\u45B4\u45B5\u45B6\u45B7"+
+        "\u45B8\u45B9\u45BA\u45BB\u45BC\u45BD\u45BE\u45BF"+
+        "\u45C0\u45C1\u45C2\u45C3\u45C4\u45C5\u45C6\u45C7"+
+        "\u45C8\u45C9\u45CA\u45CB\u45CC\u45CD\u45CE\u45CF"+
+        "\u45D0\u45D1\u45D2\u45D3\u45D4\u45D5\u45D6\u45D7"+
+        "\u45D8\u45D9\u45DA\u45DB\u45DC\u45DD\u45DE\u45DF"+
+        "\u45E0\u45E1\u45E2\u45E3\u45E4\u45E5\u45E6\u45E7"+
+        "\u45E8\u45E9\u45EA\u45EB\u45EC\u45ED\u45EE\u45EF"+
+        "\u45F0\u45F1\u45F2\u45F3\u45F4\u45F5\u45F6\u45F7"+
+        "\u45F8\u45F9\u45FA\u45FB\u45FC\u45FD\u45FE\u45FF"+
+        "\u4600\u4601\u4602\u4603\u4604\u4605\u4606\u4607"+
+        "\u4608\u4609\u460A\u460B\u460C\u460D\u460E\u460F"+
+        "\u4610\u4611\u4612\u4613\u4614\u4615\u4616\u4617"+
+        "\u4618\u4619\u461A\u461B\u461C\u461D\u461E\u461F"+
+        "\u4620\u4621\u4622\u4623\u4624\u4625\u4626\u4627"+
+        "\u4628\u4629\u462A\u462B\u462C\u462D\u462E\u462F"+
+        "\u4630\u4631\u4632\u4633\u4634\u4635\u4636\u4637"+
+        "\u4638\u4639\u463A\u463B\u463C\u463D\u463E\u463F"+
+        "\u4640\u4641\u4642\u4643\u4644\u4645\u4646\u4647"+
+        "\u4648\u4649\u464A\u464B\u464C\u464D\u464E\u464F"+
+        "\u4650\u4651\u4652\u4653\u4654\u4655\u4656\u4657"+
+        "\u4658\u4659\u465A\u465B\u465C\u465D\u465E\u465F"+
+        "\u4660\u4661\u4662\u4663\u4664\u4665\u4666\u4667"+
+        "\u4668\u4669\u466A\u466B\u466C\u466D\u466E\u466F"+
+        "\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677"+
+        "\u4678\u4679\u467A\u467B\u467C\u467D\u467E\u467F"+
+        "\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687"+
+        "\u4688\u4689\u468A\u468B\u468C\u468D\u468E\u468F"+
+        "\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697"+
+        "\u4698\u4699\u469A\u469B\u469C\u469D\u469E\u469F"+
+        "\u46A0\u46A1\u46A2\u46A3\u46A4\u46A5\u46A6\u46A7"+
+        "\u46A8\u46A9\u46AA\u46AB\u46AC\u46AD\u46AE\u46AF"+
+        "\u46B0\u46B1\u46B2\u46B3\u46B4\u46B5\u46B6\u46B7"+
+        "\u46B8\u46B9\u46BA\u46BB\u46BC\u46BD\u46BE\u46BF"+
+        "\u46C0\u46C1\u46C2\u46C3\u46C4\u46C5\u46C6\u46C7"+
+        "\u46C8\u46C9\u46CA\u46CB\u46CC\u46CD\u46CE\u46CF"+
+        "\u46D0\u46D1\u46D2\u46D3\u46D4\u46D5\u46D6\u46D7"+
+        "\u46D8\u46D9\u46DA\u46DB\u46DC\u46DD\u46DE\u46DF"+
+        "\u46E0\u46E1\u46E2\u46E3\u46E4\u46E5\u46E6\u46E7"+
+        "\u46E8\u46E9\u46EA\u46EB\u46EC\u46ED\u46EE\u46EF"+
+        "\u46F0\u46F1\u46F2\u46F3\u46F4\u46F5\u46F6\u46F7"+
+        "\u46F8\u46F9\u46FA\u46FB\u46FC\u46FD\u46FE\u46FF"+
+        "\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707"+
+        "\u4708\u4709\u470A\u470B\u470C\u470D\u470E\u470F"+
+        "\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717"+
+        "\u4718\u4719\u471A\u471B\u471C\u471D\u471E\u471F"+
+        "\u4720\u4721\u4722\u4723\u4724\u4725\u4726\u4727"+
+        "\u4728\u4729\u472A\u472B\u472C\u472D\u472E\u472F"+
+        "\u4730\u4731\u4732\u4733\u4734\u4735\u4736\u4737"+
+        "\u4738\u4739\u473A\u473B\u473C\u473D\u473E\u473F"+
+        "\u4740\u4741\u4742\u4743\u4744\u4745\u4746\u4747"+
+        "\u4748\u4749\u474A\u474B\u474C\u474D\u474E\u474F"+
+        "\u4750\u4751\u4752\u4753\u4754\u4755\u4756\u4757"+
+        "\u4758\u4759\u475A\u475B\u475C\u475D\u475E\u475F"+
+        "\u4760\u4761\u4762\u4763\u4764\u4765\u4766\u4767"+
+        "\u4768\u4769\u476A\u476B\u476C\u476D\u476E\u476F"+
+        "\u4770\u4771\u4772\u4773\u4774\u4775\u4776\u4777"+
+        "\u4778\u4779\u477A\u477B\u477C\u477D\u477E\u477F"+
+        "\u4780\u4781\u4782\u4783\u4784\u4785\u4786\u4787"+
+        "\u4788\u4789\u478A\u478B\u478C\u478D\u478E\u478F"+
+        "\u4790\u4791\u4792\u4793\u4794\u4795\u4796\u4797"+
+        "\u4798\u4799\u479A\u479B\u479C\u479D\u479E\u479F"+
+        "\u47A0\u47A1\u47A2\u47A3\u47A4\u47A5\u47A6\u47A7"+
+        "\u47A8\u47A9\u47AA\u47AB\u47AC\u47AD\u47AE\u47AF"+
+        "\u47B0\u47B1\u47B2\u47B3\u47B4\u47B5\u47B6\u47B7"+
+        "\u47B8\u47B9\u47BA\u47BB\u47BC\u47BD\u47BE\u47BF"+
+        "\u47C0\u47C1\u47C2\u47C3\u47C4\u47C5\u47C6\u47C7"+
+        "\u47C8\u47C9\u47CA\u47CB\u47CC\u47CD\u47CE\u47CF"+
+        "\u47D0\u47D1\u47D2\u47D3\u47D4\u47D5\u47D6\u47D7"+
+        "\u47D8\u47D9\u47DA\u47DB\u47DC\u47DD\u47DE\u47DF"+
+        "\u47E0\u47E1\u47E2\u47E3\u47E4\u47E5\u47E6\u47E7"+
+        "\u47E8\u47E9\u47EA\u47EB\u47EC\u47ED\u47EE\u47EF"+
+        "\u47F0\u47F1\u47F2\u47F3\u47F4\u47F5\u47F6\u47F7"+
+        "\u47F8\u47F9\u47FA\u47FB\u47FC\u47FD\u47FE\u47FF"+
+        "\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807"+
+        "\u4808\u4809\u480A\u480B\u480C\u480D\u480E\u480F"+
+        "\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u4817"+
+        "\u4818\u4819\u481A\u481B\u481C\u481D\u481E\u481F"+
+        "\u4820\u4821\u4822\u4823\u4824\u4825\u4826\u4827"+
+        "\u4828\u4829\u482A\u482B\u482C\u482D\u482E\u482F"+
+        "\u4830\u4831\u4832\u4833\u4834\u4835\u4836\u4837"+
+        "\u4838\u4839\u483A\u483B\u483C\u483D\u483E\u483F"+
+        "\u4840\u4841\u4842\u4843\u4844\u4845\u4846\u4847"+
+        "\u4848\u4849\u484A\u484B\u484C\u484D\u484E\u484F"+
+        "\u4850\u4851\u4852\u4853\u4854\u4855\u4856\u4857"+
+        "\u4858\u4859\u485A\u485B\u485C\u485D\u485E\u485F"+
+        "\u4860\u4861\u4862\u4863\u4864\u4865\u4866\u4867"+
+        "\u4868\u4869\u486A\u486B\u486C\u486D\u486E\u486F"+
+        "\u4870\u4871\u4872\u4873\u4874\u4875\u4876\u4877"+
+        "\u4878\u4879\u487A\u487B\u487C\u487D\u487E\u487F"+
+        "\u4880\u4881\u4882\u4883\u4884\u4885\u4886\u4887"+
+        "\u4888\u4889\u488A\u488B\u488C\u488D\u488E\u488F"+
+        "\u4890\u4891\u4892\u4893\u4894\u4895\u4896\u4897"+
+        "\u4898\u4899\u489A\u489B\u489C\u489D\u489E\u489F"+
+        "\u48A0\u48A1\u48A2\u48A3\u48A4\u48A5\u48A6\u48A7"+
+        "\u48A8\u48A9\u48AA\u48AB\u48AC\u48AD\u48AE\u48AF"+
+        "\u48B0\u48B1\u48B2\u48B3\u48B4\u48B5\u48B6\u48B7"+
+        "\u48B8\u48B9\u48BA\u48BB\u48BC\u48BD\u48BE\u48BF"+
+        "\u48C0\u48C1\u48C2\u48C3\u48C4\u48C5\u48C6\u48C7"+
+        "\u48C8\u48C9\u48CA\u48CB\u48CC\u48CD\u48CE\u48CF"+
+        "\u48D0\u48D1\u48D2\u48D3\u48D4\u48D5\u48D6\u48D7"+
+        "\u48D8\u48D9\u48DA\u48DB\u48DC\u48DD\u48DE\u48DF"+
+        "\u48E0\u48E1\u48E2\u48E3\u48E4\u48E5\u48E6\u48E7"+
+        "\u48E8\u48E9\u48EA\u48EB\u48EC\u48ED\u48EE\u48EF"+
+        "\u48F0\u48F1\u48F2\u48F3\u48F4\u48F5\u48F6\u48F7"+
+        "\u48F8\u48F9\u48FA\u48FB\u48FC\u48FD\u48FE\u48FF"+
+        "\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907"+
+        "\u4908\u4909\u490A\u490B\u490C\u490D\u490E\u490F"+
+        "\u4910\u4911\u4912\u4913\u4914\u4915\u4916\u4917"+
+        "\u4918\u4919\u491A\u491B\u491C\u491D\u491E\u491F"+
+        "\u4920\u4921\u4922\u4923\u4924\u4925\u4926\u4927"+
+        "\u4928\u4929\u492A\u492B\u492C\u492D\u492E\u492F"+
+        "\u4930\u4931\u4932\u4933\u4934\u4935\u4936\u4937"+
+        "\u4938\u4939\u493A\u493B\u493C\u493D\u493E\u493F"+
+        "\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947"+
+        "\u4948\u4949\u494A\u494B\u494C\u494D\u494E\u494F"+
+        "\u4950\u4951\u4952\u4953\u4954\u4955\u4956\u4957"+
+        "\u4958\u4959\u495A\u495B\u495C\u495D\u495E\u495F"+
+        "\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u4967"+
+        "\u4968\u4969\u496A\u496B\u496C\u496D\u496E\u496F"+
+        "\u4970\u4971\u4972\u4973\u4974\u4975\u4976\u4977"+
+        "\u4978\u4979\u497A\u497B\u497C\u497D\u497E\u497F"+
+        "\u4980\u4981\u4982\u4983\u4984\u4985\u4986\u4987"+
+        "\u4988\u4989\u498A\u498B\u498C\u498D\u498E\u498F"+
+        "\u4990\u4991\u4992\u4993\u4994\u4995\u4996\u4997"+
+        "\u4998\u4999\u499A\u499B\u499C\u499D\u499E\u499F"+
+        "\u49A0\u49A1\u49A2\u49A3\u49A4\u49A5\u49A6\u49A7"+
+        "\u49A8\u49A9\u49AA\u49AB\u49AC\u49AD\u49AE\u49AF"+
+        "\u49B0\u49B1\u49B2\u49B3\u49B4\u49B5\u49B6\u49B7"+
+        "\u49B8\u49B9\u49BA\u49BB\u49BC\u49BD\u49BE\u49BF"+
+        "\u49C0\u49C1\u49C2\u49C3\u49C4\u49C5\u49C6\u49C7"+
+        "\u49C8\u49C9\u49CA\u49CB\u49CC\u49CD\u49CE\u49CF"+
+        "\u49D0\u49D1\u49D2\u49D3\u49D4\u49D5\u49D6\u49D7"+
+        "\u49D8\u49D9\u49DA\u49DB\u49DC\u49DD\u49DE\u49DF"+
+        "\u49E0\u49E1\u49E2\u49E3\u49E4\u49E5\u49E6\u49E7"+
+        "\u49E8\u49E9\u49EA\u49EB\u49EC\u49ED\u49EE\u49EF"+
+        "\u49F0\u49F1\u49F2\u49F3\u49F4\u49F5\u49F6\u49F7"+
+        "\u49F8\u49F9\u49FA\u49FB\u49FC\u49FD\u49FE\u49FF"+
+        "\u4A00\u4A01\u4A02\u4A03\u4A04\u4A05\u4A06\u4A07"+
+        "\u4A08\u4A09\u4A0A\u4A0B\u4A0C\u4A0D\u4A0E\u4A0F"+
+        "\u4A10\u4A11\u4A12\u4A13\u4A14\u4A15\u4A16\u4A17"+
+        "\u4A18\u4A19\u4A1A\u4A1B\u4A1C\u4A1D\u4A1E\u4A1F"+
+        "\u4A20\u4A21\u4A22\u4A23\u4A24\u4A25\u4A26\u4A27"+
+        "\u4A28\u4A29\u4A2A\u4A2B\u4A2C\u4A2D\u4A2E\u4A2F"+
+        "\u4A30\u4A31\u4A32\u4A33\u4A34\u4A35\u4A36\u4A37"+
+        "\u4A38\u4A39\u4A3A\u4A3B\u4A3C\u4A3D\u4A3E\u4A3F"+
+        "\u4A40\u4A41\u4A42\u4A43\u4A44\u4A45\u4A46\u4A47"+
+        "\u4A48\u4A49\u4A4A\u4A4B\u4A4C\u4A4D\u4A4E\u4A4F"+
+        "\u4A50\u4A51\u4A52\u4A53\u4A54\u4A55\u4A56\u4A57"+
+        "\u4A58\u4A59\u4A5A\u4A5B\u4A5C\u4A5D\u4A5E\u4A5F"+
+        "\u4A60\u4A61\u4A62\u4A63\u4A64\u4A65\u4A66\u4A67"+
+        "\u4A68\u4A69\u4A6A\u4A6B\u4A6C\u4A6D\u4A6E\u4A6F"+
+        "\u4A70\u4A71\u4A72\u4A73\u4A74\u4A75\u4A76\u4A77"+
+        "\u4A78\u4A79\u4A7A\u4A7B\u4A7C\u4A7D\u4A7E\u4A7F"+
+        "\u4A80\u4A81\u4A82\u4A83\u4A84\u4A85\u4A86\u4A87"+
+        "\u4A88\u4A89\u4A8A\u4A8B\u4A8C\u4A8D\u4A8E\u4A8F"+
+        "\u4A90\u4A91\u4A92\u4A93\u4A94\u4A95\u4A96\u4A97"+
+        "\u4A98\u4A99\u4A9A\u4A9B\u4A9C\u4A9D\u4A9E\u4A9F"+
+        "\u4AA0\u4AA1\u4AA2\u4AA3\u4AA4\u4AA5\u4AA6\u4AA7"+
+        "\u4AA8\u4AA9\u4AAA\u4AAB\u4AAC\u4AAD\u4AAE\u4AAF"+
+        "\u4AB0\u4AB1\u4AB2\u4AB3\u4AB4\u4AB5\u4AB6\u4AB7"+
+        "\u4AB8\u4AB9\u4ABA\u4ABB\u4ABC\u4ABD\u4ABE\u4ABF"+
+        "\u4AC0\u4AC1\u4AC2\u4AC3\u4AC4\u4AC5\u4AC6\u4AC7"+
+        "\u4AC8\u4AC9\u4ACA\u4ACB\u4ACC\u4ACD\u4ACE\u4ACF"+
+        "\u4AD0\u4AD1\u4AD2\u4AD3\u4AD4\u4AD5\u4AD6\u4AD7"+
+        "\u4AD8\u4AD9\u4ADA\u4ADB\u4ADC\u4ADD\u4ADE\u4ADF"+
+        "\u4AE0\u4AE1\u4AE2\u4AE3\u4AE4\u4AE5\u4AE6\u4AE7"+
+        "\u4AE8\u4AE9\u4AEA\u4AEB\u4AEC\u4AED\u4AEE\u4AEF"+
+        "\u4AF0\u4AF1\u4AF2\u4AF3\u4AF4\u4AF5\u4AF6\u4AF7"+
+        "\u4AF8\u4AF9\u4AFA\u4AFB\u4AFC\u4AFD\u4AFE\u4AFF"+
+        "\u4B00\u4B01\u4B02\u4B03\u4B04\u4B05\u4B06\u4B07"+
+        "\u4B08\u4B09\u4B0A\u4B0B\u4B0C\u4B0D\u4B0E\u4B0F"+
+        "\u4B10\u4B11\u4B12\u4B13\u4B14\u4B15\u4B16\u4B17"+
+        "\u4B18\u4B19\u4B1A\u4B1B\u4B1C\u4B1D\u4B1E\u4B1F"+
+        "\u4B20\u4B21\u4B22\u4B23\u4B24\u4B25\u4B26\u4B27"+
+        "\u4B28\u4B29\u4B2A\u4B2B\u4B2C\u4B2D\u4B2E\u4B2F"+
+        "\u4B30\u4B31\u4B32\u4B33\u4B34\u4B35\u4B36\u4B37"+
+        "\u4B38\u4B39\u4B3A\u4B3B\u4B3C\u4B3D\u4B3E\u4B3F"+
+        "\u4B40\u4B41\u4B42\u4B43\u4B44\u4B45\u4B46\u4B47"+
+        "\u4B48\u4B49\u4B4A\u4B4B\u4B4C\u4B4D\u4B4E\u4B4F"+
+        "\u4B50\u4B51\u4B52\u4B53\u4B54\u4B55\u4B56\u4B57"+
+        "\u4B58\u4B59\u4B5A\u4B5B\u4B5C\u4B5D\u4B5E\u4B5F"+
+        "\u4B60\u4B61\u4B62\u4B63\u4B64\u4B65\u4B66\u4B67"+
+        "\u4B68\u4B69\u4B6A\u4B6B\u4B6C\u4B6D\u4B6E\u4B6F"+
+        "\u4B70\u4B71\u4B72\u4B73\u4B74\u4B75\u4B76\u4B77"+
+        "\u4B78\u4B79\u4B7A\u4B7B\u4B7C\u4B7D\u4B7E\u4B7F"+
+        "\u4B80\u4B81\u4B82\u4B83\u4B84\u4B85\u4B86\u4B87"+
+        "\u4B88\u4B89\u4B8A\u4B8B\u4B8C\u4B8D\u4B8E\u4B8F"+
+        "\u4B90\u4B91\u4B92\u4B93\u4B94\u4B95\u4B96\u4B97"+
+        "\u4B98\u4B99\u4B9A\u4B9B\u4B9C\u4B9D\u4B9E\u4B9F"+
+        "\u4BA0\u4BA1\u4BA2\u4BA3\u4BA4\u4BA5\u4BA6\u4BA7"+
+        "\u4BA8\u4BA9\u4BAA\u4BAB\u4BAC\u4BAD\u4BAE\u4BAF"+
+        "\u4BB0\u4BB1\u4BB2\u4BB3\u4BB4\u4BB5\u4BB6\u4BB7"+
+        "\u4BB8\u4BB9\u4BBA\u4BBB\u4BBC\u4BBD\u4BBE\u4BBF"+
+        "\u4BC0\u4BC1\u4BC2\u4BC3\u4BC4\u4BC5\u4BC6\u4BC7"+
+        "\u4BC8\u4BC9\u4BCA\u4BCB\u4BCC\u4BCD\u4BCE\u4BCF"+
+        "\u4BD0\u4BD1\u4BD2\u4BD3\u4BD4\u4BD5\u4BD6\u4BD7"+
+        "\u4BD8\u4BD9\u4BDA\u4BDB\u4BDC\u4BDD\u4BDE\u4BDF"+
+        "\u4BE0\u4BE1\u4BE2\u4BE3\u4BE4\u4BE5\u4BE6\u4BE7"+
+        "\u4BE8\u4BE9\u4BEA\u4BEB\u4BEC\u4BED\u4BEE\u4BEF"+
+        "\u4BF0\u4BF1\u4BF2\u4BF3\u4BF4\u4BF5\u4BF6\u4BF7"+
+        "\u4BF8\u4BF9\u4BFA\u4BFB\u4BFC\u4BFD\u4BFE\u4BFF"+
+        "\u4C00\u4C01\u4C02\u4C03\u4C04\u4C05\u4C06\u4C07"+
+        "\u4C08\u4C09\u4C0A\u4C0B\u4C0C\u4C0D\u4C0E\u4C0F"+
+        "\u4C10\u4C11\u4C12\u4C13\u4C14\u4C15\u4C16\u4C17"+
+        "\u4C18\u4C19\u4C1A\u4C1B\u4C1C\u4C1D\u4C1E\u4C1F"+
+        "\u4C20\u4C21\u4C22\u4C23\u4C24\u4C25\u4C26\u4C27"+
+        "\u4C28\u4C29\u4C2A\u4C2B\u4C2C\u4C2D\u4C2E\u4C2F"+
+        "\u4C30\u4C31\u4C32\u4C33\u4C34\u4C35\u4C36\u4C37"+
+        "\u4C38\u4C39\u4C3A\u4C3B\u4C3C\u4C3D\u4C3E\u4C3F"+
+        "\u4C40\uFE50\u4C41\u4C42\uFE54\u4C43\u4C44\u4C45"+
+        "\uFE57\u4C46\u4C47\uFE58\uFE5D\u4C48\u4C49\u4C4A"+
+        "\u4C4B\u4C4C\u4C4D\u4C4E\u4C4F\u4C50\u4C51\uFE5E"+
+        "\u4C52\u4C53\u4C54\u4C55\u4C56\u4C57\u4C58\u4C59"+
+        "\u4C5A\u4C5B\u4C5C\u4C5D\u4C5E\u4C5F\u4C60\uFE6B"+
+        "\u4C61\u4C62\uFE6E\u4C63\u4C64\u4C65\uFE71\u4C66"+
+        "\u4C67\u4C68\u4C69\uFE73\u4C6A\u4C6B\uFE74\uFE75"+
+        "\u4C6C\u4C6D\u4C6E\uFE79\u4C6F\u4C70\u4C71\u4C72"+
+        "\u4C73\u4C74\u4C75\u4C76\u4C77\u4C78\u4C79\u4C7A"+
+        "\u4C7B\u4C7C\uFE84\u4C7D\u4C7E\u4C7F\u4C80\u4C81"+
+        "\u4C82\u4C83\u4C84\u4C85\u4C86\u4C87\u4C88\u4C89"+
+        "\u4C8A\u4C8B\u4C8C\u4C8D\u4C8E\u4C8F\u4C90\u4C91"+
+        "\u4C92\u4C93\u4C94\u4C95\u4C96\u4C97\u4C98\u4C99"+
+        "\u4C9A\u4C9B\u4C9C\u4C9D\u4C9E\u4C9F\u4CA0\u4CA1"+
+        "\u4CA2\u4CA3\u4CA4\u4CA5\u4CA6\u4CA7\u4CA8\u4CA9"+
+        "\u4CAA\u4CAB\u4CAC\u4CAD\u4CAE\u4CAF\u4CB0\u4CB1"+
+        "\u4CB2\u4CB3\u4CB4\u4CB5\u4CB6\u4CB7\u4CB8\u4CB9"+
+        "\u4CBA\u4CBB\u4CBC\u4CBD\u4CBE\u4CBF\u4CC0\u4CC1"+
+        "\u4CC2\u4CC3\u4CC4\u4CC5\u4CC6\u4CC7\u4CC8\u4CC9"+
+        "\u4CCA\u4CCB\u4CCC\u4CCD\u4CCE\u4CCF\u4CD0\u4CD1"+
+        "\u4CD2\u4CD3\u4CD4\u4CD5\u4CD6\u4CD7\u4CD8\u4CD9"+
+        "\u4CDA\u4CDB\u4CDC\u4CDD\u4CDE\u4CDF\u4CE0\u4CE1"+
+        "\u4CE2\u4CE3\u4CE4\u4CE5\u4CE6\u4CE7\u4CE8\u4CE9"+
+        "\u4CEA\u4CEB\u4CEC\u4CED\u4CEE\u4CEF\u4CF0\u4CF1"+
+        "\u4CF2\u4CF3\u4CF4\u4CF5\u4CF6\u4CF7\u4CF8\u4CF9"+
+        "\u4CFA\u4CFB\u4CFC\u4CFD\u4CFE\u4CFF\u4D00\u4D01"+
+        "\u4D02\u4D03\u4D04\u4D05\u4D06\u4D07\u4D08\u4D09"+
+        "\u4D0A\u4D0B\u4D0C\u4D0D\u4D0E\u4D0F\u4D10\u4D11"+
+        "\u4D12\u4D13\u4D14\u4D15\u4D16\u4D17\u4D18\u4D19"+
+        "\u4D1A\u4D1B\u4D1C\u4D1D\u4D1E\u4D1F\u4D20\u4D21"+
+        "\u4D22\u4D23\u4D24\u4D25\u4D26\u4D27\u4D28\u4D29"+
+        "\u4D2A\u4D2B\u4D2C\u4D2D\u4D2E\u4D2F\u4D30\u4D31"+
+        "\u4D32\u4D33\u4D34\u4D35\u4D36\u4D37\u4D38\u4D39"+
+        "\u4D3A\u4D3B\u4D3C\u4D3D\u4D3E\u4D3F\u4D40\u4D41"+
+        "\u4D42\u4D43\u4D44\u4D45\u4D46\u4D47\u4D48\u4D49"+
+        "\u4D4A\u4D4B\u4D4C\u4D4D\u4D4E\u4D4F\u4D50\u4D51"+
+        "\u4D52\u4D53\u4D54\u4D55\u4D56\u4D57\u4D58\u4D59"+
+        "\u4D5A\u4D5B\u4D5C\u4D5D\u4D5E\u4D5F\u4D60\u4D61"+
+        "\u4D62\u4D63\u4D64\u4D65\u4D66\u4D67\u4D68\u4D69"+
+        "\u4D6A\u4D6B\u4D6C\u4D6D\u4D6E\u4D6F\u4D70\u4D71"+
+        "\u4D72\u4D73\u4D74\u4D75\u4D76\u4D77\u4D78\u4D79"+
+        "\u4D7A\u4D7B\u4D7C\u4D7D\u4D7E\u4D7F\u4D80\u4D81"+
+        "\u4D82\u4D83\u4D84\u4D85\u4D86\u4D87\u4D88\u4D89"+
+        "\u4D8A\u4D8B\u4D8C\u4D8D\u4D8E\u4D8F\u4D90\u4D91"+
+        "\u4D92\u4D93\u4D94\u4D95\u4D96\u4D97\u4D98\u4D99"+
+        "\u4D9A\u4D9B\u4D9C\u4D9D\u4D9E\u4D9F\u4DA0\u4DA1"+
+        "\uA98A\uA98B\uA98C\uA98D\uA98E\uA98F\uA990\uA991"+
+        "\uA992\uA993\uA994\uA995\u4DA2\u4DA3\u4DA4\u4DA5";
+
+    private final static String innerEncoderIndex3=
+        "\uA1A1\uA1A2\uA1A3\uA1A8\u4DA6\uA1A9\uA965\uA996"+
+        "\uA1B4\uA1B5\uA1B6\uA1B7\uA1B8\uA1B9\uA1BA\uA1BB"+
+        "\uA1BE\uA1BF\uA893\uA1FE\uA1B2\uA1B3\uA1BC\uA1BD"+
+        "\u4DA7\u4DA8\u4DA9\u4DAA\u4DAB\uA894\uA895\u4DAC"+
+        "\u4DAD\uA940\uA941\uA942\uA943\uA944\uA945\uA946"+
+        "\uA947\uA948\u4DAE\u4DAF\u4DB0\u4DB1\u4DB2\u4DB3"+
+        "\u4DB4\u4DB5\u4DB6\u4DB7\u4DB8\u4DB9\u4DBA\u4DBB"+
+        "\u4DBC\u4DBD\u4DBE\u4DBF\u4DC0\u4DC1\uA989\u4DC2"+
+        "\u4DC3\uA4A1\uA4A2\uA4A3\uA4A4\uA4A5\uA4A6\uA4A7"+
+        "\uA4A8\uA4A9\uA4AA\uA4AB\uA4AC\uA4AD\uA4AE\uA4AF"+
+        "\uA4B0\uA4B1\uA4B2\uA4B3\uA4B4\uA4B5\uA4B6\uA4B7"+
+        "\uA4B8\uA4B9\uA4BA\uA4BB\uA4BC\uA4BD\uA4BE\uA4BF"+
+        "\uA4C0\uA4C1\uA4C2\uA4C3\uA4C4\uA4C5\uA4C6\uA4C7"+
+        "\uA4C8\uA4C9\uA4CA\uA4CB\uA4CC\uA4CD\uA4CE\uA4CF"+
+        "\uA4D0\uA4D1\uA4D2\uA4D3\uA4D4\uA4D5\uA4D6\uA4D7"+
+        "\uA4D8\uA4D9\uA4DA\uA4DB\uA4DC\uA4DD\uA4DE\uA4DF"+
+        "\uA4E0\uA4E1\uA4E2\uA4E3\uA4E4\uA4E5\uA4E6\uA4E7"+
+        "\uA4E8\uA4E9\uA4EA\uA4EB\uA4EC\uA4ED\uA4EE\uA4EF"+
+        "\uA4F0\uA4F1\uA4F2\uA4F3\u4DC4\u4DC5\u4DC6\u4DC7"+
+        "\u4DC8\u4DC9\u4DCA\uA961\uA962\uA966\uA967\u4DCB"+
+        "\u4DCC\uA5A1\uA5A2\uA5A3\uA5A4\uA5A5\uA5A6\uA5A7"+
+        "\uA5A8\uA5A9\uA5AA\uA5AB\uA5AC\uA5AD\uA5AE\uA5AF"+
+        "\uA5B0\uA5B1\uA5B2\uA5B3\uA5B4\uA5B5\uA5B6\uA5B7"+
+        "\uA5B8\uA5B9\uA5BA\uA5BB\uA5BC\uA5BD\uA5BE\uA5BF"+
+        "\uA5C0\uA5C1\uA5C2\uA5C3\uA5C4\uA5C5\uA5C6\uA5C7"+
+        "\uA5C8\uA5C9\uA5CA\uA5CB\uA5CC\uA5CD\uA5CE\uA5CF"+
+        "\uA5D0\uA5D1\uA5D2\uA5D3\uA5D4\uA5D5\uA5D6\uA5D7"+
+        "\uA5D8\uA5D9\uA5DA\uA5DB\uA5DC\uA5DD\uA5DE\uA5DF"+
+        "\uA5E0\uA5E1\uA5E2\uA5E3\uA5E4\uA5E5\uA5E6\uA5E7"+
+        "\uA5E8\uA5E9\uA5EA\uA5EB\uA5EC\uA5ED\uA5EE\uA5EF"+
+        "\uA5F0\uA5F1\uA5F2\uA5F3\uA5F4\uA5F5\uA5F6\u4DCD"+
+        "\u4DCE\u4DCF\u4DD0\u4DD1\uA960\uA963\uA964\u4DD2"+
+        "\u4DD3\u4DD4\u4DD5\u4DD6\u4DD7\uA8C5\uA8C6\uA8C7"+
+        "\uA8C8\uA8C9\uA8CA\uA8CB\uA8CC\uA8CD\uA8CE\uA8CF"+
+        "\uA8D0\uA8D1\uA8D2\uA8D3\uA8D4\uA8D5\uA8D6\uA8D7"+
+        "\uA8D8\uA8D9\uA8DA\uA8DB\uA8DC\uA8DD\uA8DE\uA8DF"+
+        "\uA8E0\uA8E1\uA8E2\uA8E3\uA8E4\uA8E5\uA8E6\uA8E7"+
+        "\uA8E8\uA8E9\u4DD8\u4DD9\u4DDA\u4DDB\u4DDC\u4DDD"+
+        "\u4DDE\u4DDF\u4DE0\u4DE1\u4DE2\u4DE3\u4DE4\u4DE5"+
+        "\u4DE6\u4DE7\u4DE8\u4DE9\u4DEA\u4DEB\u4DEC\u4DED"+
+        "\u4DEE\u4DEF\u4DF0\u4DF1\u4DF2\u4DF3\u4DF4\u4DF5"+
+        "\u4DF6\u4DF7\u4DF8\u4DF9\u4DFA\u4DFB\u4DFC\u4DFD"+
+        "\u4DFE\u4DFF\u4E00\u4E01\u4E02\u4E03\u4E04\u4E05"+
+        "\u4E06\u4E07\u4E08\u4E09\u4E0A\u4E0B\u4E0C\u4E0D"+
+        "\u4E0E\u4E0F\u4E10\u4E11\u4E12\u4E13\u4E14\u4E15"+
+        "\u4E16\u4E17\u4E18\u4E19\u4E1A\u4E1B\u4E1C\u4E1D"+
+        "\u4E1E\u4E1F\u4E20\u4E21\u4E22\u4E23\u4E24\u4E25"+
+        "\u4E26\u4E27\u4E28\u4E29\u4E2A\u4E2B\u4E2C\u4E2D"+
+        "\u4E2E\u4E2F\u4E30\u4E31\u4E32\u4E33\u4E34\u4E35"+
+        "\u4E36\u4E37\u4E38\u4E39\u4E3A\u4E3B\u4E3C\u4E3D"+
+        "\u4E3E\u4E3F\u4E40\u4E41\u4E42\u4E43\u4E44\u4E45"+
+        "\u4E46\u4E47\u4E48\u4E49\u4E4A\u4E4B\u4E4C\u4E4D"+
+        "\u4E4E\u4E4F\u4E50\u4E51\u4E52\u4E53\u4E54\u4E55"+
+        "\u4E56\u4E57\u4E58\u4E59\u4E5A\u4E5B\u4E5C\u4E5D"+
+        "\u4E5E\u4E5F\u4E60\u4E61\u4E62\u4E63\u4E64\u4E65"+
+        "\u4E66\u4E67\u4E68\u4E69\u4E6A\u4E6B\u4E6C\u4E6D"+
+        "\u4E6E\u4E6F\u4E70\u4E71\u4E72\u4E73\u4E74\u4E75"+
+        "\u4E76\u4E77\u4E78\u4E79\u4E7A\u4E7B\u4E7C\u4E7D"+
+        "\u4E7E\u4E7F\u4E80\u4E81\u4E82\u4E83\u4E84\u4E85"+
+        "\u4E86\u4E87\u4E88\u4E89\u4E8A\u4E8B\u4E8C\u4E8D"+
+        "\u4E8E\u4E8F\u4E90\u4E91\u4E92\u4E93\u4E94\u4E95"+
+        "\u4E96\u4E97\u4E98\u4E99\u4E9A\u4E9B\u4E9C\u4E9D"+
+        "\u4E9E\u4E9F\u4EA0\u4EA1\u4EA2\u4EA3\u4EA4\u4EA5"+
+        "\u4EA6\u4EA7\u4EA8\u4EA9\u4EAA\u4EAB\u4EAC\u4EAD"+
+        "\u4EAE\u4EAF\u4EB0\u4EB1\u4EB2\u4EB3\u4EB4\u4EB5"+
+        "\u4EB6\u4EB7\u4EB8\u4EB9\u4EBA\u4EBB\u4EBC\u4EBD"+
+        "\u4EBE\u4EBF\u4EC0\u4EC1\u4EC2\u4EC3\u4EC4\u4EC5"+
+        "\u4EC6\u4EC7\u4EC8\u4EC9\u4ECA\u4ECB\u4ECC\u4ECD"+
+        "\uA2E5\uA2E6\uA2E7\uA2E8\uA2E9\uA2EA\uA2EB\uA2EC"+
+        "\uA2ED\uA2EE\u4ECE\u4ECF\u4ED0\u4ED1\u4ED2\u4ED3"+
+        "\u4ED4\uA95A\u4ED5\u4ED6\u4ED7\u4ED8\u4ED9\u4EDA"+
+        "\u4EDB\u4EDC\u4EDD\u4EDE\u4EDF\u4EE0\u4EE1\u4EE2"+
+        "\u4EE3\u4EE4\u4EE5\u4EE6\u4EE7\u4EE8\u4EE9\u4EEA"+
+        "\u4EEB\u4EEC\u4EED\u4EEE\u4EEF\u4EF0\u4EF1\u4EF2"+
+        "\u4EF3\u4EF4\u4EF5\u4EF6\u4EF7\u4EF8\u4EF9\u4EFA"+
+        "\u4EFB\u4EFC\u4EFD\u4EFE\u4EFF\u4F00\u4F01\u4F02"+
+        "\u4F03\u4F04\u4F05\u4F06\u4F07\u4F08\u4F09\u4F0A"+
+        "\u4F0B\u4F0C\u4F0D\u4F0E\u4F0F\u4F10\u4F11\u4F12"+
+        "\u4F13\u4F14\u4F15\u4F16\u4F17\u4F18\u4F19\u4F1A"+
+        "\u4F1B\u4F1C\u4F1D\u4F1E\u4F1F\u4F20\u4F21\u4F22"+
+        "\u4F23\u4F24\u4F25\u4F26\u4F27\u4F28\u4F29\u4F2A"+
+        "\u4F2B\u4F2C\u4F2D\u4F2E\u4F2F\u4F30\u4F31\u4F32"+
+        "\u4F33\u4F34\u4F35\u4F36\u4F37\u4F38\u4F39\u4F3A"+
+        "\u4F3B\u4F3C\u4F3D\u4F3E\u4F3F\u4F40\u4F41\u4F42"+
+        "\u4F43\u4F44\u4F45\uA949\u4F46\u4F47\u4F48\u4F49"+
+        "\u4F4A\u4F4B\u4F4C\u4F4D\u4F4E\u4F4F\u4F50\u4F51"+
+        "\u4F52\u4F53\u4F54\u4F55\u4F56\u4F57\u4F58\u4F59"+
+        "\u4F5A\u4F5B\u4F5C\u4F5D\u4F5E\u4F5F\u4F60\u4F61"+
+        "\u4F62\u4F63\u4F64\u4F65\u4F66\u4F67\u4F68\u4F69"+
+        "\u4F6A\u4F6B\u4F6C\u4F6D\u4F6E\u4F6F\u4F70\u4F71"+
+        "\u4F72\u4F73\u4F74\u4F75\u4F76\u4F77\u4F78\u4F79"+
+        "\u4F7A\u4F7B\u4F7C\u4F7D\u4F7E\u4F7F\u4F80\u4F81"+
+        "\u4F82\u4F83\u4F84\u4F85\u4F86\u4F87\u4F88\u4F89"+
+        "\u4F8A\u4F8B\u4F8C\u4F8D\u4F8E\u4F8F\u4F90\u4F91"+
+        "\u4F92\u4F93\u4F94\u4F95\u4F96\u4F97\u4F98\u4F99"+
+        "\u4F9A\u4F9B\u4F9C\u4F9D\u4F9E\u4F9F\u4FA0\u4FA1"+
+        "\u4FA2\u4FA3\u4FA4\u4FA5\u4FA6\u4FA7\u4FA8\u4FA9"+
+        "\u4FAA\u4FAB\u4FAC\u4FAD\u4FAE\u4FAF\u4FB0\u4FB1"+
+        "\u4FB2\u4FB3\u4FB4\u4FB5\u4FB6\u4FB7\u4FB8\u4FB9"+
+        "\u4FBA\u4FBB\u4FBC\u4FBD\u4FBE\u4FBF\u4FC0\u4FC1"+
+        "\u4FC2\u4FC3\u4FC4\u4FC5\u4FC6\u4FC7\u4FC8\u4FC9"+
+        "\u4FCA\u4FCB\u4FCC\u4FCD\u4FCE\u4FCF\u4FD0\u4FD1"+
+        "\u4FD2\u4FD3\u4FD4\u4FD5\u4FD6\u4FD7\u4FD8\u4FD9"+
+        "\u4FDA\u4FDB\u4FDC\u4FDD\u4FDE\u4FDF\u4FE0\u4FE1"+
+        "\u4FE2\u4FE3\u4FE4\u4FE5\u4FE6\u4FE7\u4FE8\u4FE9"+
+        "\u4FEA\u4FEB\u4FEC\u4FED\u4FEE\u4FEF\u4FF0\u4FF1"+
+        "\u4FF2\u4FF3\u4FF4\u4FF5\u4FF6\u4FF7\u4FF8\u4FF9"+
+        "\u4FFA\u4FFB\u4FFC\u4FFD\u4FFE\u4FFF\u5000\u5001"+
+        "\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009"+
+        "\u500A\u500B\u500C\u500D\u500E\u500F\u5010\u5011"+
+        "\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019"+
+        "\u501A\u501B\u501C\u501D\u501E\u501F\u5020\u5021"+
+        "\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029"+
+        "\u502A\u502B\u502C\u502D\u502E\u502F\uA94A\uA94B"+
+        "\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037"+
+        "\u5038\u5039\u503A\u503B\uA94C\uA94D\uA94E\u503C"+
+        "\u503D\uA94F\u503E\u503F\u5040\u5041\u5042\u5043"+
+        "\u5044\u5045\u5046\u5047\u5048\u5049\u504A\u504B"+
+        "\u504C\u504D\u504E\u504F\u5050\u5051\u5052\u5053"+
+        "\u5054\u5055\u5056\u5057\u5058\u5059\u505A\u505B"+
+        "\u505C\u505D\u505E\u505F\uA950\u5060\u5061\u5062"+
+        "\u5063\u5064\u5065\u5066\u5067\u5068\uA951\u5069"+
+        "\u506A\uA952\uA953\u506B\u506C\uA954\u506D\u506E"+
+        "\u506F\u5070\u5071\u5072\u5073\u5074\u5075\u5076"+
+        "\u5077\u5078\u5079\u507A\u507B\u507C\u507D\u507E"+
+        "\u507F\u5080\u5081\u5082\u5083\u5084\u5085\u5086"+
+        "\u5087\u5088\u5089\u508A\u508B\u508C\u508D\u508E"+
+        "\u508F\u5090\u5091\u5092\u5093\u5094\u5095\u5096"+
+        "\u5097\u5098\u5099\u509A\u509B\u509C\u509D\u509E"+
+        "\u509F\u50A0\u50A1\u50A2\u50A3\u50A4\u50A5\u50A6"+
+        "\u50A7\u50A8\u50A9\u50AA\u50AB\u50AC\u50AD\u50AE"+
+        "\u50AF\u50B0\u50B1\u50B2\u50B3\u50B4\u50B5\u50B6"+
+        "\u50B7\u50B8\u50B9\u50BA\u50BB\u50BC\u50BD\u50BE"+
+        "\u50BF\u50C0\u50C1\u50C2\u50C3\u50C4\u50C5\u50C6"+
+        "\u50C7\u50C8\u50C9\u50CA\u50CB\u50CC\u50CD\u50CE"+
+        "\u50CF\u50D0\u50D1\u50D2\u50D3\u50D4\u50D5\u50D6"+
+        "\u50D7\u50D8\u50D9\u50DA\u50DB\u50DC\u50DD\uFE56"+
+        "\u50DE\u50DF\u50E0\u50E1\u50E2\u50E3\u50E4\u50E5"+
+        "\u50E6\u50E7\u50E8\u50E9\u50EA\u50EB\u50EC\u50ED"+
+        "\u50EE\u50EF\u50F0\u50F1\u50F2\u50F3\u50F4\u50F5"+
+        "\u50F6\u50F7\u50F8\u50F9\u50FA\u50FB\u50FC\u50FD"+
+        "\u50FE\u50FF\u5100\u5101\u5102\u5103\u5104\u5105"+
+        "\u5106\u5107\u5108\uFE55\u5109\u510A\u510B\u510C"+
+        "\u510D\u510E\u510F\u5110\u5111\u5112\u5113\u5114"+
+        "\u5115\u5116\u5117\u5118\u5119\u511A\u511B\u511C"+
+        "\u511D\u511E\u511F\u5120\u5121\u5122\u5123\u5124"+
+        "\u5125\u5126\u5127\u5128\u5129\u512A\u512B\u512C"+
+        "\u512D\u512E\u512F\u5130\u5131\u5132\u5133\u5134"+
+        "\u5135\u5136\u5137\u5138\u5139\u513A\u513B\u513C"+
+        "\u513D\u513E\u513F\u5140\u5141\u5142\u5143\u5144"+
+        "\u5145\u5146\u5147\u5148\u5149\u514A\u514B\u514C"+
+        "\u514D\u514E\u514F\u5150\u5151\u5152\u5153\u5154"+
+        "\u5155\u5156\u5157\u5158\u5159\u515A\u515B\u515C"+
+        "\u515D\u515E\u515F\u5160\u5161\u5162\u5163\u5164"+
+        "\u5165\u5166\u5167\u5168\u5169\u516A\u516B\u516C"+
+        "\u516D\u516E\u516F\u5170\u5171\u5172\u5173\u5174"+
+        "\u5175\u5176\u5177\u5178\u5179\u517A\u517B\u517C"+
+        "\u517D\u517E\u517F\u5180\u5181\u5182\u5183\u5184"+
+        "\u5185\u5186\u5187\u5188\u5189\u518A\u518B\u518C"+
+        "\u518D\u518E\u518F\u5190\u5191\u5192\u5193\u5194"+
+        "\u5195\u5196\u5197\u5198\u5199\u519A\u519B\u519C"+
+        "\u519D\u519E\u519F\u51A0\u51A1\u51A2\u51A3\u51A4"+
+        "\u51A5\u51A6\u51A7\u51A8\u51A9\u51AA\u51AB\u51AC"+
+        "\u51AD\u51AE\u51AF\u51B0\u51B1\u51B2\u51B3\u51B4"+
+        "\u51B5\u51B6\u51B7\u51B8\u51B9\u51BA\u51BB\u51BC"+
+        "\u51BD\u51BE\u51BF\u51C0\u51C1\u51C2\u51C3\u51C4"+
+        "\u51C5\u51C6\u51C7\u51C8\u51C9\u51CA\u51CB\u51CC"+
+        "\u51CD\u51CE\u51CF\u51D0\u51D1\u51D2\u51D3\u51D4"+
+        "\u51D5\u51D6\u51D7\u51D8\u51D9\u51DA\u51DB\u51DC"+
+        "\u51DD\u51DE\u51DF\u51E0\u51E1\u51E2\u51E3\u51E4"+
+        "\u51E5\u51E6\u51E7\u51E8\u51E9\u51EA\u51EB\u51EC"+
+        "\u51ED\u51EE\u51EF\u51F0\u51F1\u51F2\u51F3\u51F4"+
+        "\u51F5\u51F6\u51F7\u51F8\u51F9\u51FA\u51FB\u51FC"+
+        "\u51FD\u51FE\u51FF\u5200\u5201\u5202\u5203\u5204"+
+        "\u5205\u5206\u5207\u5208\u5209\u520A\u520B\u520C"+
+        "\u520D\u520E\u520F\u5210\u5211\u5212\u5213\u5214"+
+        "\u5215\u5216\u5217\u5218\u5219\u521A\u521B\u521C"+
+        "\u521D\u521E\u521F\u5220\u5221\u5222\u5223\u5224"+
+        "\u5225\u5226\u5227\u5228\u5229\u522A\u522B\u522C"+
+        "\u522D\u522E\u522F\u5230\u5231\u5232\uFE5A\u5233"+
+        "\u5234\u5235\u5236\u5237\u5238\u5239\u523A\u523B"+
+        "\u523C\u523D\u523E\u523F\u5240\u5241\u5242\u5243"+
+        "\u5244\u5245\u5246\u5247\u5248\u5249\u524A\u524B"+
+        "\u524C\u524D\u524E\u524F\u5250\u5251\u5252\u5253"+
+        "\u5254\u5255\u5256\u5257\u5258\u5259\u525A\u525B"+
+        "\u525C\u525D\u525E\u525F\u5260\u5261\u5262\u5263"+
+        "\u5264\u5265\u5266\u5267\u5268\u5269\u526A\u526B"+
+        "\u526C\u526D\u526E\u526F\u5270\u5271\u5272\u5273"+
+        "\u5274\u5275\u5276\u5277\u5278\u5279\u527A\u527B"+
+        "\u527C\u527D\u527E\u527F\u5280\u5281\u5282\u5283"+
+        "\u5284\u5285\u5286\u5287\u5288\u5289\u528A\u528B"+
+        "\u528C\u528D\u528E\u528F\u5290\u5291\u5292\u5293"+
+        "\u5294\u5295\u5296\u5297\u5298\u5299\u529A\u529B"+
+        "\u529C\u529D\u529E\u529F\u52A0\u52A1\uFE5C\u52A2"+
+        "\u52A3\u52A4\u52A5\u52A6\u52A7\u52A8\u52A9\u52AA"+
+        "\u52AB\u52AC\uFE5B\u52AD\u52AE\u52AF\u52B0\u52B1"+
+        "\u52B2\u52B3\u52B4\u52B5\u52B6\u52B7\u52B8\u52B9"+
+        "\u52BA\u52BB\u52BC\u52BD\u52BE\u52BF\u52C0\u52C1"+
+        "\u52C2\u52C3\u52C4\u52C5\u52C6\u52C7\u52C8\u52C9"+
+        "\u52CA\u52CB\u52CC\u52CD\u52CE\u52CF\u52D0\u52D1"+
+        "\u52D2\u52D3\u52D4\u52D5\u52D6\u52D7\u52D8\u52D9"+
+        "\u52DA\u52DB\u52DC\u52DD\u52DE\u52DF\u52E0\u52E1"+
+        "\u52E2\u52E3\u52E4\u52E5\u52E6\u52E7\u52E8\u52E9"+
+        "\u52EA\u52EB\u52EC\u52ED\u52EE\u52EF\u52F0\u52F1"+
+        "\u52F2\u52F3\u52F4\u52F5\u52F6\u52F7\u52F8\u52F9"+
+        "\u52FA\u52FB\u52FC\u52FD\u52FE\u52FF\u5300\u5301"+
+        "\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309"+
+        "\u530A\u530B\u530C\u530D\u530E\u530F\u5310\u5311"+
+        "\u5312\u5313\u5314\u5315\u5316\u5317\u5318\u5319"+
+        "\u531A\u531B\u531C\u531D\u531E\u531F\u5320\u5321"+
+        "\u5322\u5323\u5324\u5325\u5326\u5327\u5328\u5329"+
+        "\u532A\u532B\u532C\u532D\u532E\u532F\u5330\u5331"+
+        "\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u5339"+
+        "\u533A\u533B\u533C\u533D\u533E\u533F\u5340\u5341"+
+        "\u5342\u5343\u5344\u5345\u5346\u5347\u5348\u5349"+
+        "\u534A\u534B\u534C\u534D\u534E\u534F\u5350\u5351"+
+        "\u5352\u5353\u5354\u5355\u5356\u5357\u5358\u5359"+
+        "\u535A\u535B\u535C\u535D\u535E\u535F\u5360\u5361"+
+        "\u5362\u5363\u5364\u5365\u5366\u5367\u5368\u5369"+
+        "\u536A\u536B\u536C\u536D\u536E\u536F\u5370\u5371"+
+        "\u5372\u5373\u5374\u5375\u5376\u5377\u5378\u5379"+
+        "\u537A\u537B\u537C\u537D\u537E\u537F\u5380\u5381"+
+        "\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389"+
+        "\u538A\u538B\u538C\u538D\u538E\u538F\u5390\u5391"+
+        "\u5392\u5393\u5394\u5395\u5396\u5397\u5398\u5399"+
+        "\u539A\u539B\u539C\u539D\u539E\u539F\u53A0\u53A1"+
+        "\u53A2\u53A3\u53A4\u53A5\u53A6\u53A7\u53A8\u53A9"+
+        "\u53AA\u53AB\u53AC\u53AD\u53AE\u53AF\u53B0\u53B1"+
+        "\u53B2\u53B3\u53B4\u53B5\u53B6\u53B7\u53B8\u53B9"+
+        "\u53BA\u53BB\u53BC\u53BD\u53BE\u53BF\u53C0\u53C1"+
+        "\u53C2\u53C3\u53C4\u53C5\u53C6\u53C7\u53C8\u53C9"+
+        "\u53CA\u53CB\u53CC\u53CD\u53CE\u53CF\u53D0\u53D1"+
+        "\u53D2\u53D3\u53D4\u53D5\u53D6\u53D7\u53D8\u53D9"+
+        "\u53DA\u53DB\u53DC\u53DD\u53DE\u53DF\u53E0\u53E1"+
+        "\u53E2\u53E3\u53E4\u53E5\u53E6\u53E7\u53E8\u53E9"+
+        "\u53EA\u53EB\u53EC\u53ED\u53EE\u53EF\u53F0\u53F1"+
+        "\u53F2\u53F3\u53F4\u53F5\u53F6\u53F7\u53F8\u53F9"+
+        "\u53FA\u53FB\u53FC\u53FD\u53FE\u53FF\u5400\u5401"+
+        "\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409"+
+        "\u540A\u540B\u540C\u540D\u540E\u540F\u5410\u5411"+
+        "\u5412\u5413\u5414\u5415\u5416\u5417\u5418\u5419"+
+        "\u541A\u541B\u541C\u541D\u541E\u541F\u5420\u5421"+
+        "\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429"+
+        "\u542A\u542B\u542C\u542D\u542E\u542F\u5430\u5431"+
+        "\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439"+
+        "\u543A\u543B\u543C\u543D\u543E\u543F\u5440\u5441"+
+        "\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449"+
+        "\u544A\u544B\u544C\u544D\u544E\u544F\u5450\u5451"+
+        "\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459"+
+        "\u545A\u545B\u545C\u545D\u545E\u545F\u5460\u5461"+
+        "\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469"+
+        "\u546A\u546B\u546C\u546D\u546E\u546F\u5470\u5471"+
+        "\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479"+
+        "\u547A\u547B\u547C\u547D\u547E\u547F\u5480\u5481"+
+        "\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489"+
+        "\u548A\u548B\u548C\u548D\u548E\u548F\u5490\u5491"+
+        "\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499"+
+        "\u549A\u549B\u549C\u549D\u549E\u549F\u54A0\u54A1"+
+        "\u54A2\u54A3\u54A4\u54A5\u54A6\u54A7\u54A8\u54A9"+
+        "\u54AA\u54AB\u54AC\u54AD\u54AE\u54AF\u54B0\u54B1"+
+        "\u54B2\u54B3\u54B4\u54B5\u54B6\u54B7\u54B8\u54B9"+
+        "\u54BA\u54BB\u54BC\u54BD\u54BE\u54BF\u54C0\u54C1"+
+        "\u54C2\u54C3\u54C4\u54C5\u54C6\u54C7\u54C8\u54C9"+
+        "\u54CA\u54CB\u54CC\u54CD\u54CE\u54CF\u54D0\u54D1"+
+        "\u54D2\u54D3\u54D4\u54D5\u54D6\u54D7\u54D8\u54D9"+
+        "\u54DA\u54DB\u54DC\u54DD\u54DE\u54DF\u54E0\u54E1"+
+        "\u54E2\u54E3\u54E4\u54E5\u54E6\u54E7\u54E8\u54E9"+
+        "\u54EA\u54EB\u54EC\u54ED\u54EE\u54EF\u54F0\u54F1"+
+        "\u54F2\u54F3\u54F4\u54F5\u54F6\u54F7\u54F8\u54F9"+
+        "\u54FA\u54FB\u54FC\u54FD\u54FE\u54FF\u5500\u5501"+
+        "\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509"+
+        "\u550A\u550B\u550C\u550D\u550E\u550F\u5510\u5511"+
+        "\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519"+
+        "\u551A\u551B\u551C\u551D\u551E\u551F\u5520\u5521"+
+        "\u5522\u5523\u5524\u5525\u5526\u5527\u5528\u5529"+
+        "\u552A\u552B\u552C\u552D\u552E\u552F\u5530\u5531"+
+        "\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539"+
+        "\u553A\u553B\u553C\u553D\u553E\u553F\u5540\u5541"+
+        "\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549"+
+        "\u554A\u554B\u554C\u554D\u554E\u554F\u5550\u5551"+
+        "\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u5559"+
+        "\u555A\u555B\u555C\u555D\u555E\u555F\u5560\u5561"+
+        "\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569"+
+        "\u556A\u556B\u556C\u556D\u556E\u556F\u5570\u5571"+
+        "\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579"+
+        "\u557A\u557B\u557C\u557D\u557E\u557F\u5580\u5581"+
+        "\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589"+
+        "\u558A\u558B\u558C\u558D\u558E\u558F\u5590\u5591"+
+        "\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599"+
+        "\u559A\u559B\u559C\u559D\u559E\u559F\u55A0\u55A1"+
+        "\u55A2\u55A3\u55A4\u55A5\u55A6\u55A7\u55A8\u55A9"+
+        "\uFE60\u55AA\u55AB\u55AC\u55AD\u55AE\u55AF\u55B0"+
+        "\u55B1\u55B2\u55B3\u55B4\u55B5\u55B6\u55B7\u55B8"+
+        "\u55B9\u55BA\u55BB\u55BC\u55BD\u55BE\u55BF\u55C0"+
+        "\u55C1\u55C2\u55C3\u55C4\u55C5\u55C6\u55C7\u55C8"+
+        "\u55C9\u55CA\u55CB\u55CC\u55CD\u55CE\u55CF\u55D0"+
+        "\u55D1\u55D2\u55D3\u55D4\u55D5\u55D6\u55D7\u55D8"+
+        "\u55D9\u55DA\u55DB\u55DC\u55DD\u55DE\u55DF\u55E0"+
+        "\u55E1\u55E2\u55E3\u55E4\u55E5\u55E6\u55E7\u55E8"+
+        "\u55E9\u55EA\u55EB\u55EC\u55ED\u55EE\u55EF\u55F0"+
+        "\u55F1\u55F2\u55F3\u55F4\u55F5\u55F6\u55F7\u55F8"+
+        "\u55F9\u55FA\u55FB\u55FC\u55FD\u55FE\uFE5F\u55FF"+
+        "\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607"+
+        "\u5608\u5609\u560A\u560B\u560C\u560D\u560E\u560F"+
+        "\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617"+
+        "\u5618\u5619\u561A\u561B\u561C\u561D\u561E\u561F"+
+        "\u5620\u5621\u5622\u5623\u5624\u5625\u5626\u5627"+
+        "\u5628\u5629\u562A\u562B\u562C\u562D\u562E\u562F"+
+        "\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637"+
+        "\u5638\u5639\u563A\u563B\u563C\u563D\u563E\u563F"+
+        "\u5640\u5641\u5642\u5643\u5644\u5645\u5646\u5647"+
+        "\u5648\u5649\u564A\u564B\u564C\u564D\u564E\u564F"+
+        "\u5650\u5651\u5652\u5653\u5654\u5655\u5656\u5657"+
+        "\u5658\u5659\u565A\u565B\u565C\u565D\u565E\uFE62"+
+        "\uFE65\u565F\u5660\u5661\u5662\u5663\u5664\u5665"+
+        "\u5666\u5667\u5668\u5669\u566A\u566B\u566C\uFE63"+
+        "\u566D\u566E\u566F\u5670\u5671\u5672\u5673\u5674"+
+        "\u5675\u5676\u5677\u5678\u5679\u567A\u567B\u567C"+
+        "\u567D\u567E\u567F\u5680\u5681\u5682\u5683\u5684"+
+        "\u5685\u5686\u5687\u5688\u5689\u568A\u568B\u568C"+
+        "\u568D\u568E\u568F\u5690\u5691\u5692\u5693\u5694"+
+        "\u5695\u5696\u5697\u5698\u5699\u569A\u569B\u569C"+
+        "\u569D\u569E\u569F\u56A0\u56A1\u56A2\u56A3\u56A4"+
+        "\u56A5\u56A6\u56A7\u56A8\u56A9\u56AA\u56AB\u56AC"+
+        "\u56AD\u56AE\u56AF\u56B0\u56B1\u56B2\u56B3\u56B4"+
+        "\u56B5\u56B6\u56B7\u56B8\u56B9\u56BA\u56BB\u56BC"+
+        "\u56BD\u56BE\u56BF\u56C0\u56C1\u56C2\u56C3\u56C4"+
+        "\u56C5\u56C6\u56C7\u56C8\u56C9\u56CA\u56CB\u56CC"+
+        "\u56CD\u56CE\u56CF\u56D0\u56D1\u56D2\u56D3\u56D4"+
+        "\u56D5\u56D6\u56D7\u56D8\u56D9\u56DA\u56DB\u56DC"+
+        "\u56DD\u56DE\u56DF\u56E0\u56E1\u56E2\u56E3\u56E4"+
+        "\u56E5\u56E6\u56E7\u56E8\u56E9\u56EA\u56EB\u56EC"+
+        "\u56ED\u56EE\u56EF\u56F0\u56F1\u56F2\u56F3\u56F4"+
+        "\u56F5\u56F6\u56F7\u56F8\u56F9\u56FA\u56FB\u56FC"+
+        "\u56FD\u56FE\u56FF\uFE64\u5700\u5701\u5702\u5703"+
+        "\u5704\u5705\u5706\u5707\u5708\u5709\u570A\u570B"+
+        "\u570C\u570D\u570E\u570F\u5710\u5711\u5712\u5713"+
+        "\u5714\u5715\u5716\u5717\u5718\u5719\u571A\u571B"+
+        "\u571C\u571D\u571E\u571F\u5720\u5721\u5722\u5723"+
+        "\u5724\u5725\u5726\u5727\u5728\u5729\u572A\u572B"+
+        "\u572C\u572D\u572E\u572F\u5730\u5731\u5732\u5733"+
+        "\u5734\u5735\u5736\u5737\u5738\u5739\u573A\u573B"+
+        "\u573C\u573D\u573E\u573F\u5740\u5741\u5742\u5743"+
+        "\u5744\u5745\u5746\u5747\u5748\u5749\u574A\u574B"+
+        "\u574C\u574D\u574E\u574F\u5750\u5751\u5752\u5753"+
+        "\u5754\u5755\u5756\u5757\u5758\u5759\u575A\u575B"+
+        "\u575C\u575D\u575E\u575F\u5760\u5761\u5762\u5763"+
+        "\u5764\u5765\u5766\u5767\u5768\u5769\u576A\u576B"+
+        "\u576C\u576D\u576E\u576F\u5770\u5771\u5772\u5773"+
+        "\u5774\u5775\u5776\u5777\u5778\u5779\u577A\u577B"+
+        "\u577C\u577D\u577E\u577F\u5780\u5781\u5782\u5783"+
+        "\u5784\u5785\u5786\u5787\u5788\u5789\u578A\u578B"+
+        "\u578C\u578D\u578E\u578F\u5790\u5791\u5792\u5793"+
+        "\u5794\u5795\u5796\u5797\u5798\u5799\u579A\u579B"+
+        "\u579C\u579D\u579E\u579F\u57A0\u57A1\u57A2\u57A3"+
+        "\u57A4\u57A5\u57A6\u57A7\u57A8\u57A9\u57AA\u57AB"+
+        "\u57AC\u57AD\u57AE\u57AF\u57B0\u57B1\u57B2\u57B3"+
+        "\u57B4\u57B5\u57B6\u57B7\u57B8\u57B9\u57BA\u57BB"+
+        "\u57BC\u57BD\u57BE\u57BF\u57C0\u57C1\u57C2\u57C3"+
+        "\u57C4\u57C5\u57C6\u57C7\u57C8\u57C9\u57CA\u57CB"+
+        "\u57CC\u57CD\u57CE\u57CF\u57D0\u57D1\u57D2\u57D3"+
+        "\u57D4\u57D5\u57D6\u57D7\u57D8\u57D9\uFE68\u57DA"+
+        "\u57DB\u57DC\u57DD\u57DE\u57DF\u57E0\u57E1\u57E2"+
+        "\u57E3\u57E4\u57E5\u57E6\u57E7\u57E8\u57E9\u57EA"+
+        "\u57EB\u57EC\u57ED\u57EE\u57EF\u57F0\u57F1\u57F2"+
+        "\u57F3\u57F4\u57F5\u57F6\u57F7\u57F8\u57F9\u57FA"+
+        "\u57FB\u57FC\u57FD\u57FE\u57FF\u5800\u5801\u5802"+
+        "\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580A"+
+        "\u580B\u580C\u580D\u580E\u580F\u5810\u5811\u5812"+
+        "\u5813\u5814\u5815\u5816\u5817\u5818\u5819\u581A"+
+        "\u581B\u581C\u581D\u581E\u581F\u5820\u5821\u5822"+
+        "\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582A"+
+        "\u582B\u582C\u582D\u582E\u582F\u5830\u5831\u5832"+
+        "\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583A"+
+        "\u583B\u583C\u583D\u583E\u583F\u5840\u5841\u5842"+
+        "\u5843\u5844\u5845\u5846\u5847\u5848\u5849\u584A"+
+        "\u584B\u584C\u584D\u584E\u584F\u5850\u5851\u5852"+
+        "\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585A"+
+        "\u585B\u585C\u585D\u585E\u585F\u5860\u5861\u5862"+
+        "\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586A"+
+        "\u586B\u586C\u586D\u586E\u586F\u5870\u5871\u5872"+
+        "\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587A"+
+        "\u587B\u587C\u587D\u587E\u587F\u5880\u5881\u5882"+
+        "\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588A"+
+        "\u588B\u588C\u588D\u588E\u588F\u5890\u5891\u5892"+
+        "\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589A"+
+        "\u589B\u589C\u589D\u589E\u589F\u58A0\u58A1\u58A2"+
+        "\u58A3\u58A4\u58A5\u58A6\u58A7\u58A8\u58A9\u58AA"+
+        "\u58AB\u58AC\u58AD\u58AE\u58AF\u58B0\u58B1\u58B2"+
+        "\u58B3\u58B4\u58B5\u58B6\u58B7\u58B8\u58B9\u58BA"+
+        "\u58BB\u58BC\u58BD\u58BE\u58BF\u58C0\u58C1\u58C2"+
+        "\u58C3\u58C4\u58C5\u58C6\u58C7\u58C8\u58C9\u58CA"+
+        "\u58CB\u58CC\u58CD\u58CE\u58CF\u58D0\u58D1\u58D2"+
+        "\u58D3\u58D4\u58D5\u58D6\u58D7\u58D8\u58D9\u58DA"+
+        "\u58DB\u58DC\u58DD\u58DE\u58DF\u58E0\u58E1\u58E2"+
+        "\u58E3\u58E4\u58E5\u58E6\u58E7\u58E8\u58E9\u58EA"+
+        "\u58EB\u58EC\u58ED\u58EE\u58EF\u58F0\u58F1\u58F2"+
+        "\u58F3\u58F4\u58F5\u58F6\u58F7\u58F8\uFE69\u58F9"+
+        "\u58FA\u58FB\u58FC\u58FD\u58FE\u58FF\u5900\u5901"+
+        "\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u5909"+
+        "\u590A\u590B\u590C\u590D\u590E\u590F\u5910\u5911"+
+        "\u5912\u5913\u5914\u5915\u5916\u5917\u5918\u5919"+
+        "\u591A\u591B\u591C\u591D\u591E\u591F\u5920\u5921"+
+        "\u5922\u5923\u5924\u5925\u5926\u5927\u5928\u5929"+
+        "\u592A\u592B\u592C\u592D\u592E\u592F\u5930\u5931"+
+        "\u5932\u5933\u5934\u5935\u5936\u5937\u5938\u5939"+
+        "\u593A\u593B\u593C\u593D\u593E\u593F\u5940\u5941"+
+        "\u5942\u5943\u5944\u5945\u5946\u5947\u5948\u5949"+
+        "\u594A\u594B\u594C\u594D\u594E\u594F\u5950\u5951"+
+        "\u5952\u5953\u5954\u5955\u5956\u5957\u5958\u5959"+
+        "\u595A\u595B\u595C\u595D\u595E\u595F\u5960\u5961"+
+        "\u5962\u5963\u5964\u5965\u5966\u5967\u5968\u5969"+
+        "\uFE6A\u596A\u596B\u596C\u596D\u596E\u596F\u5970"+
+        "\u5971\u5972\u5973\u5974\u5975\u5976\u5977\u5978"+
+        "\u5979\u597A\u597B\u597C\u597D\u597E\u597F\u5980"+
+        "\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988"+
+        "\u5989\u598A\u598B\u598C\u598D\u598E\u598F\u5990"+
+        "\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998"+
+        "\u5999\u599A\u599B\u599C\u599D\u599E\u599F\u59A0"+
+        "\u59A1\u59A2\u59A3\u59A4\u59A5\u59A6\u59A7\u59A8"+
+        "\u59A9\u59AA\u59AB\u59AC\u59AD\u59AE\u59AF\u59B0"+
+        "\u59B1\u59B2\u59B3\u59B4\u59B5\u59B6\u59B7\u59B8"+
+        "\u59B9\u59BA\u59BB\u59BC\u59BD\u59BE\u59BF\u59C0"+
+        "\u59C1\u59C2\u59C3\u59C4\u59C5\u59C6\u59C7\u59C8"+
+        "\u59C9\u59CA\u59CB\u59CC\u59CD\u59CE\u59CF\u59D0"+
+        "\u59D1\u59D2\u59D3\u59D4\u59D5\u59D6\u59D7\u59D8"+
+        "\u59D9\u59DA\u59DB\u59DC\u59DD\u59DE\u59DF\u59E0"+
+        "\u59E1\u59E2\u59E3\u59E4\u59E5\u59E6\u59E7\u59E8"+
+        "\u59E9\u59EA\u59EB\u59EC\u59ED\u59EE\u59EF\u59F0"+
+        "\u59F1\u59F2\u59F3\u59F4\u59F5\u59F6\u59F7\u59F8"+
+        "\u59F9\u59FA\u59FB\u59FC\u59FD\u59FE\u59FF\u5A00"+
+        "\u5A01\u5A02\u5A03\u5A04\u5A05\u5A06\u5A07\u5A08"+
+        "\u5A09\u5A0A\u5A0B\u5A0C\u5A0D\u5A0E\u5A0F\u5A10"+
+        "\u5A11\u5A12\u5A13\u5A14\u5A15\u5A16\u5A17\u5A18"+
+        "\u5A19\u5A1A\u5A1B\u5A1C\u5A1D\u5A1E\u5A1F\u5A20"+
+        "\u5A21\u5A22\u5A23\u5A24\u5A25\u5A26\u5A27\u5A28"+
+        "\u5A29\u5A2A\u5A2B\u5A2C\u5A2D\u5A2E\u5A2F\u5A30"+
+        "\u5A31\u5A32\u5A33\u5A34\u5A35\u5A36\u5A37\u5A38"+
+        "\u5A39\u5A3A\u5A3B\u5A3C\u5A3D\u5A3E\u5A3F\u5A40"+
+        "\u5A41\u5A42\u5A43\u5A44\u5A45\u5A46\u5A47\u5A48"+
+        "\u5A49\u5A4A\u5A4B\u5A4C\u5A4D\u5A4E\u5A4F\u5A50"+
+        "\u5A51\u5A52\u5A53\u5A54\u5A55\u5A56\u5A57\u5A58"+
+        "\u5A59\u5A5A\u5A5B\u5A5C\u5A5D\u5A5E\u5A5F\u5A60"+
+        "\u5A61\u5A62\u5A63\u5A64\u5A65\u5A66\u5A67\u5A68"+
+        "\u5A69\u5A6A\u5A6B\u5A6C\u5A6D\u5A6E\u5A6F\u5A70"+
+        "\u5A71\u5A72\u5A73\u5A74\u5A75\u5A76\u5A77\u5A78"+
+        "\u5A79\u5A7A\u5A7B\u5A7C\u5A7D\u5A7E\u5A7F\u5A80"+
+        "\u5A81\u5A82\u5A83\u5A84\u5A85\u5A86\u5A87\u5A88"+
+        "\u5A89\u5A8A\u5A8B\u5A8C\u5A8D\u5A8E\u5A8F\u5A90"+
+        "\u5A91\u5A92\u5A93\u5A94\u5A95\u5A96\u5A97\u5A98"+
+        "\u5A99\u5A9A\u5A9B\u5A9C\u5A9D\u5A9E\u5A9F\u5AA0"+
+        "\u5AA1\u5AA2\u5AA3\u5AA4\u5AA5\u5AA6\u5AA7\u5AA8"+
+        "\u5AA9\u5AAA\u5AAB\u5AAC\u5AAD\u5AAE\u5AAF\u5AB0"+
+        "\u5AB1\u5AB2\u5AB3\u5AB4\u5AB5\u5AB6\u5AB7\u5AB8"+
+        "\u5AB9\u5ABA\u5ABB\u5ABC\u5ABD\u5ABE\u5ABF\u5AC0"+
+        "\u5AC1\u5AC2\u5AC3\u5AC4\u5AC5\u5AC6\u5AC7\u5AC8"+
+        "\u5AC9\u5ACA\u5ACB\u5ACC\u5ACD\u5ACE\u5ACF\u5AD0"+
+        "\u5AD1\u5AD2\u5AD3\u5AD4\u5AD5\u5AD6\u5AD7\u5AD8"+
+        "\u5AD9\u5ADA\u5ADB\u5ADC\u5ADD\u5ADE\u5ADF\u5AE0"+
+        "\u5AE1\u5AE2\u5AE3\u5AE4\u5AE5\u5AE6\u5AE7\u5AE8"+
+        "\u5AE9\u5AEA\u5AEB\u5AEC\u5AED\u5AEE\u5AEF\u5AF0"+
+        "\u5AF1\u5AF2\u5AF3\u5AF4\u5AF5\u5AF6\u5AF7\u5AF8"+
+        "\u5AF9\u5AFA\u5AFB\u5AFC\u5AFD\u5AFE\u5AFF\u5B00"+
+        "\u5B01\u5B02\u5B03\u5B04\u5B05\u5B06\u5B07\u5B08"+
+        "\u5B09\u5B0A\u5B0B\u5B0C\u5B0D\u5B0E\u5B0F\u5B10"+
+        "\u5B11\u5B12\u5B13\u5B14\u5B15\u5B16\u5B17\u5B18"+
+        "\u5B19\u5B1A\u5B1B\u5B1C\u5B1D\u5B1E\u5B1F\u5B20"+
+        "\u5B21\u5B22\u5B23\u5B24\u5B25\u5B26\u5B27\u5B28"+
+        "\u5B29\u5B2A\u5B2B\u5B2C\u5B2D\u5B2E\u5B2F\u5B30"+
+        "\u5B31\u5B32\u5B33\u5B34\u5B35\u5B36\u5B37\u5B38"+
+        "\u5B39\u5B3A\u5B3B\u5B3C\u5B3D\u5B3E\u5B3F\u5B40"+
+        "\u5B41\u5B42\u5B43\u5B44\u5B45\u5B46\u5B47\u5B48"+
+        "\u5B49\u5B4A\u5B4B\u5B4C\u5B4D\u5B4E\u5B4F\u5B50"+
+        "\u5B51\u5B52\u5B53\u5B54\u5B55\u5B56\u5B57\u5B58"+
+        "\u5B59\u5B5A\u5B5B\u5B5C\u5B5D\u5B5E\u5B5F\u5B60"+
+        "\u5B61\u5B62\u5B63\u5B64\u5B65\u5B66\u5B67\u5B68"+
+        "\u5B69\u5B6A\u5B6B\u5B6C\u5B6D\u5B6E\u5B6F\u5B70"+
+        "\u5B71\u5B72\u5B73\u5B74\u5B75\u5B76\u5B77\u5B78"+
+        "\u5B79\u5B7A\u5B7B\u5B7C\u5B7D\u5B7E\u5B7F\u5B80"+
+        "\u5B81\u5B82\u5B83\u5B84\u5B85\u5B86\u5B87\u5B88"+
+        "\u5B89\u5B8A\u5B8B\u5B8C\u5B8D\u5B8E\u5B8F\u5B90"+
+        "\u5B91\u5B92\u5B93\u5B94\u5B95\u5B96\u5B97\u5B98"+
+        "\u5B99\u5B9A\u5B9B\u5B9C\u5B9D\u5B9E\u5B9F\u5BA0"+
+        "\u5BA1\u5BA2\u5BA3\u5BA4\u5BA5\u5BA6\u5BA7\u5BA8"+
+        "\u5BA9\u5BAA\u5BAB\u5BAC\u5BAD\u5BAE\u5BAF\u5BB0"+
+        "\u5BB1\u5BB2\u5BB3\u5BB4\u5BB5\u5BB6\u5BB7\u5BB8"+
+        "\u5BB9\u5BBA\u5BBB\u5BBC\u5BBD\u5BBE\u5BBF\u5BC0"+
+        "\u5BC1\u5BC2\u5BC3\u5BC4\u5BC5\u5BC6\u5BC7\u5BC8"+
+        "\u5BC9\u5BCA\u5BCB\u5BCC\u5BCD\u5BCE\u5BCF\u5BD0"+
+        "\u5BD1\u5BD2\u5BD3\u5BD4\u5BD5\u5BD6\u5BD7\u5BD8"+
+        "\u5BD9\u5BDA\u5BDB\u5BDC\u5BDD\u5BDE\u5BDF\u5BE0"+
+        "\u5BE1\u5BE2\u5BE3\u5BE4\u5BE5\u5BE6\u5BE7\u5BE8"+
+        "\u5BE9\u5BEA\u5BEB\u5BEC\u5BED\u5BEE\u5BEF\u5BF0"+
+        "\u5BF1\u5BF2\u5BF3\u5BF4\u5BF5\u5BF6\u5BF7\u5BF8"+
+        "\u5BF9\u5BFA\u5BFB\u5BFC\u5BFD\u5BFE\u5BFF\u5C00"+
+        "\u5C01\u5C02\u5C03\u5C04\u5C05\u5C06\u5C07\u5C08"+
+        "\u5C09\u5C0A\u5C0B\u5C0C\u5C0D\u5C0E\u5C0F\u5C10"+
+        "\u5C11\u5C12\u5C13\u5C14\u5C15\u5C16\u5C17\u5C18"+
+        "\u5C19\u5C1A\u5C1B\u5C1C\u5C1D\u5C1E\u5C1F\u5C20"+
+        "\u5C21\u5C22\u5C23\u5C24\u5C25\u5C26\u5C27\u5C28"+
+        "\u5C29\u5C2A\u5C2B\u5C2C\u5C2D\u5C2E\u5C2F\u5C30"+
+        "\u5C31\u5C32\u5C33\u5C34\u5C35\u5C36\u5C37\u5C38"+
+        "\u5C39\u5C3A\u5C3B\u5C3C\u5C3D\u5C3E\u5C3F\u5C40"+
+        "\u5C41\u5C42\u5C43\u5C44\u5C45\u5C46\u5C47\u5C48"+
+        "\u5C49\u5C4A\u5C4B\u5C4C\u5C4D\u5C4E\u5C4F\u5C50"+
+        "\u5C51\u5C52\u5C53\u5C54\u5C55\u5C56\u5C57\u5C58"+
+        "\u5C59\u5C5A\u5C5B\u5C5C\u5C5D\u5C5E\u5C5F\u5C60"+
+        "\u5C61\u5C62\u5C63\u5C64\u5C65\u5C66\u5C67\u5C68"+
+        "\u5C69\u5C6A\u5C6B\u5C6C\u5C6D\u5C6E\u5C6F\u5C70"+
+        "\u5C71\u5C72\u5C73\u5C74\u5C75\u5C76\u5C77\u5C78"+
+        "\u5C79\u5C7A\u5C7B\u5C7C\u5C7D\u5C7E\u5C7F\u5C80"+
+        "\u5C81\u5C82\u5C83\u5C84\u5C85\u5C86\u5C87\u5C88";
+
+    private final static String innerEncoderIndex4=
+        "\u5C89\u5C8A\u5C8B\u5C8C\u5C8D\u5C8E\u5C8F\u5C90"+
+        "\u5C91\u5C92\u5C93\u5C94\u5C95\u5C96\u5C97\u5C98"+
+        "\u5C99\u5C9A\u5C9B\u5C9C\u5C9D\u5C9E\u5C9F\u5CA0"+
+        "\u5CA1\u5CA2\u5CA3\u5CA4\u5CA5\u5CA6\u5CA7\u5CA8"+
+        "\u5CA9\u5CAA\u5CAB\u5CAC\u5CAD\u5CAE\u5CAF\u5CB0"+
+        "\u5CB1\u5CB2\u5CB3\u5CB4\u5CB5\u5CB6\u5CB7\u5CB8"+
+        "\u5CB9\u5CBA\u5CBB\u5CBC\u5CBD\u5CBE\u5CBF\u5CC0"+
+        "\u5CC1\u5CC2\u5CC3\u5CC4\u5CC5\u5CC6\u5CC7\u5CC8"+
+        "\u5CC9\u5CCA\u5CCB\u5CCC\u5CCD\u5CCE\u5CCF\u5CD0"+
+        "\u5CD1\u5CD2\u5CD3\u5CD4\u5CD5\u5CD6\u5CD7\u5CD8"+
+        "\u5CD9\u5CDA\u5CDB\u5CDC\u5CDD\u5CDE\uFE6F\u5CDF"+
+        "\u5CE0\u5CE1\u5CE2\u5CE3\u5CE4\u5CE5\u5CE6\u5CE7"+
+        "\u5CE8\u5CE9\u5CEA\u5CEB\u5CEC\u5CED\u5CEE\u5CEF"+
+        "\u5CF0\u5CF1\u5CF2\u5CF3\u5CF4\u5CF5\u5CF6\u5CF7"+
+        "\u5CF8\u5CF9\u5CFA\u5CFB\u5CFC\u5CFD\u5CFE\u5CFF"+
+        "\u5D00\u5D01\u5D02\u5D03\u5D04\u5D05\u5D06\u5D07"+
+        "\u5D08\u5D09\u5D0A\u5D0B\u5D0C\u5D0D\u5D0E\u5D0F"+
+        "\u5D10\u5D11\u5D12\u5D13\u5D14\u5D15\u5D16\u5D17"+
+        "\u5D18\u5D19\u5D1A\u5D1B\u5D1C\u5D1D\u5D1E\u5D1F"+
+        "\u5D20\u5D21\u5D22\u5D23\u5D24\u5D25\u5D26\u5D27"+
+        "\u5D28\u5D29\u5D2A\u5D2B\u5D2C\u5D2D\u5D2E\u5D2F"+
+        "\u5D30\u5D31\u5D32\u5D33\u5D34\u5D35\u5D36\u5D37"+
+        "\u5D38\u5D39\u5D3A\u5D3B\u5D3C\u5D3D\u5D3E\u5D3F"+
+        "\u5D40\u5D41\u5D42\u5D43\u5D44\u5D45\u5D46\u5D47"+
+        "\u5D48\u5D49\u5D4A\u5D4B\u5D4C\u5D4D\u5D4E\u5D4F"+
+        "\u5D50\u5D51\u5D52\u5D53\u5D54\u5D55\u5D56\u5D57"+
+        "\u5D58\u5D59\u5D5A\u5D5B\u5D5C\u5D5D\u5D5E\u5D5F"+
+        "\u5D60\u5D61\u5D62\u5D63\u5D64\u5D65\u5D66\u5D67"+
+        "\u5D68\u5D69\u5D6A\u5D6B\u5D6C\u5D6D\u5D6E\u5D6F"+
+        "\u5D70\u5D71\u5D72\u5D73\u5D74\u5D75\u5D76\u5D77"+
+        "\u5D78\u5D79\u5D7A\u5D7B\u5D7C\u5D7D\u5D7E\u5D7F"+
+        "\u5D80\u5D81\u5D82\u5D83\u5D84\u5D85\u5D86\u5D87"+
+        "\u5D88\u5D89\u5D8A\u5D8B\u5D8C\u5D8D\u5D8E\u5D8F"+
+        "\u5D90\u5D91\u5D92\u5D93\u5D94\u5D95\u5D96\u5D97"+
+        "\u5D98\u5D99\u5D9A\u5D9B\u5D9C\u5D9D\u5D9E\u5D9F"+
+        "\u5DA0\u5DA1\u5DA2\u5DA3\u5DA4\u5DA5\u5DA6\u5DA7"+
+        "\u5DA8\u5DA9\u5DAA\u5DAB\u5DAC\u5DAD\u5DAE\u5DAF"+
+        "\u5DB0\u5DB1\u5DB2\u5DB3\u5DB4\u5DB5\u5DB6\u5DB7"+
+        "\u5DB8\u5DB9\u5DBA\u5DBB\u5DBC\u5DBD\u5DBE\u5DBF"+
+        "\u5DC0\u5DC1\u5DC2\u5DC3\u5DC4\u5DC5\u5DC6\u5DC7"+
+        "\u5DC8\u5DC9\u5DCA\u5DCB\u5DCC\u5DCD\u5DCE\u5DCF"+
+        "\u5DD0\u5DD1\u5DD2\u5DD3\u5DD4\u5DD5\u5DD6\u5DD7"+
+        "\u5DD8\u5DD9\u5DDA\u5DDB\u5DDC\u5DDD\u5DDE\u5DDF"+
+        "\u5DE0\u5DE1\u5DE2\u5DE3\u5DE4\u5DE5\u5DE6\uFE70"+
+        "\u5DE7\u5DE8\u5DE9\u5DEA\u5DEB\u5DEC\u5DED\u5DEE"+
+        "\u5DEF\u5DF0\u5DF1\u5DF2\u5DF3\u5DF4\u5DF5\u5DF6"+
+        "\u5DF7\u5DF8\u5DF9\u5DFA\u5DFB\u5DFC\u5DFD\u5DFE"+
+        "\u5DFF\u5E00\u5E01\u5E02\u5E03\u5E04\u5E05\u5E06"+
+        "\u5E07\u5E08\u5E09\u5E0A\u5E0B\u5E0C\u5E0D\u5E0E"+
+        "\u5E0F\u5E10\u5E11\u5E12\u5E13\u5E14\u5E15\u5E16"+
+        "\u5E17\u5E18\u5E19\u5E1A\u5E1B\u5E1C\u5E1D\u5E1E"+
+        "\u5E1F\u5E20\u5E21\u5E22\u5E23\u5E24\u5E25\u5E26"+
+        "\u5E27\u5E28\u5E29\u5E2A\u5E2B\u5E2C\u5E2D\u5E2E"+
+        "\u5E2F\u5E30\u5E31\u5E32\u5E33\u5E34\u5E35\u5E36"+
+        "\u5E37\u5E38\u5E39\u5E3A\u5E3B\u5E3C\u5E3D\u5E3E"+
+        "\u5E3F\u5E40\u5E41\u5E42\u5E43\u5E44\u5E45\u5E46"+
+        "\u5E47\u5E48\u5E49\u5E4A\u5E4B\u5E4C\u5E4D\u5E4E"+
+        "\u5E4F\u5E50\u5E51\u5E52\u5E53\u5E54\u5E55\u5E56"+
+        "\u5E57\u5E58\u5E59\u5E5A\u5E5B\u5E5C\u5E5D\u5E5E"+
+        "\u5E5F\u5E60\u5E61\u5E62\u5E63\u5E64\u5E65\u5E66"+
+        "\u5E67\u5E68\u5E69\u5E6A\u5E6B\u5E6C\u5E6D\u5E6E"+
+        "\u5E6F\u5E70\u5E71\u5E72\u5E73\u5E74\u5E75\u5E76"+
+        "\u5E77\u5E78\u5E79\u5E7A\u5E7B\u5E7C\u5E7D\u5E7E"+
+        "\u5E7F\u5E80\u5E81\u5E82\u5E83\u5E84\u5E85\u5E86"+
+        "\u5E87\u5E88\u5E89\u5E8A\u5E8B\u5E8C\u5E8D\u5E8E"+
+        "\u5E8F\u5E90\u5E91\u5E92\u5E93\u5E94\u5E95\u5E96"+
+        "\u5E97\u5E98\u5E99\u5E9A\u5E9B\u5E9C\u5E9D\u5E9E"+
+        "\u5E9F\u5EA0\u5EA1\u5EA2\u5EA3\u5EA4\u5EA5\u5EA6"+
+        "\u5EA7\u5EA8\u5EA9\u5EAA\u5EAB\u5EAC\u5EAD\u5EAE"+
+        "\u5EAF\u5EB0\u5EB1\u5EB2\u5EB3\u5EB4\u5EB5\u5EB6"+
+        "\u5EB7\u5EB8\u5EB9\u5EBA\u5EBB\u5EBC\u5EBD\u5EBE"+
+        "\u5EBF\u5EC0\u5EC1\u5EC2\u5EC3\u5EC4\u5EC5\u5EC6"+
+        "\u5EC7\u5EC8\u5EC9\u5ECA\u5ECB\u5ECC\u5ECD\u5ECE"+
+        "\u5ECF\u5ED0\u5ED1\u5ED2\u5ED3\u5ED4\u5ED5\u5ED6"+
+        "\u5ED7\u5ED8\u5ED9\u5EDA\u5EDB\u5EDC\u5EDD\u5EDE"+
+        "\u5EDF\u5EE0\u5EE1\u5EE2\u5EE3\u5EE4\u5EE5\u5EE6"+
+        "\u5EE7\u5EE8\u5EE9\u5EEA\u5EEB\u5EEC\u5EED\u5EEE"+
+        "\u5EEF\u5EF0\u5EF1\u5EF2\u5EF3\u5EF4\u5EF5\u5EF6"+
+        "\u5EF7\u5EF8\u5EF9\u5EFA\u5EFB\u5EFC\u5EFD\u5EFE"+
+        "\u5EFF\u5F00\u5F01\u5F02\u5F03\u5F04\u5F05\u5F06"+
+        "\u5F07\u5F08\u5F09\u5F0A\u5F0B\u5F0C\u5F0D\u5F0E"+
+        "\u5F0F\u5F10\u5F11\u5F12\u5F13\u5F14\u5F15\u5F16"+
+        "\u5F17\u5F18\u5F19\u5F1A\u5F1B\u5F1C\u5F1D\u5F1E"+
+        "\u5F1F\u5F20\u5F21\u5F22\u5F23\u5F24\u5F25\u5F26"+
+        "\u5F27\u5F28\u5F29\u5F2A\u5F2B\u5F2C\u5F2D\u5F2E"+
+        "\u5F2F\u5F30\u5F31\u5F32\u5F33\u5F34\u5F35\u5F36"+
+        "\u5F37\u5F38\u5F39\u5F3A\u5F3B\u5F3C\u5F3D\u5F3E"+
+        "\u5F3F\u5F40\u5F41\u5F42\u5F43\u5F44\u5F45\u5F46"+
+        "\u5F47\u5F48\u5F49\u5F4A\u5F4B\u5F4C\u5F4D\u5F4E"+
+        "\u5F4F\u5F50\u5F51\u5F52\u5F53\u5F54\u5F55\u5F56"+
+        "\u5F57\u5F58\u5F59\u5F5A\u5F5B\u5F5C\u5F5D\u5F5E"+
+        "\u5F5F\u5F60\u5F61\u5F62\u5F63\u5F64\u5F65\u5F66"+
+        "\u5F67\u5F68\u5F69\u5F6A\u5F6B\u5F6C\u5F6D\u5F6E"+
+        "\u5F6F\u5F70\u5F71\u5F72\u5F73\u5F74\u5F75\u5F76"+
+        "\u5F77\u5F78\u5F79\u5F7A\u5F7B\u5F7C\u5F7D\u5F7E"+
+        "\u5F7F\u5F80\u5F81\u5F82\u5F83\u5F84\u5F85\u5F86"+
+        "\u5F87\u5F88\u5F89\u5F8A\u5F8B\u5F8C\u5F8D\u5F8E"+
+        "\u5F8F\u5F90\u5F91\u5F92\u5F93\u5F94\u5F95\u5F96"+
+        "\u5F97\u5F98\u5F99\u5F9A\u5F9B\u5F9C\u5F9D\u5F9E"+
+        "\u5F9F\u5FA0\u5FA1\u5FA2\u5FA3\u5FA4\u5FA5\u5FA6"+
+        "\u5FA7\u5FA8\u5FA9\u5FAA\u5FAB\u5FAC\u5FAD\u5FAE"+
+        "\u5FAF\u5FB0\u5FB1\u5FB2\u5FB3\u5FB4\u5FB5\u5FB6"+
+        "\u5FB7\u5FB8\u5FB9\u5FBA\u5FBB\u5FBC\u5FBD\uFE72"+
+        "\u5FBE\u5FBF\u5FC0\u5FC1\u5FC2\u5FC3\u5FC4\u5FC5"+
+        "\u5FC6\u5FC7\u5FC8\u5FC9\u5FCA\u5FCB\u5FCC\u5FCD"+
+        "\u5FCE\u5FCF\u5FD0\u5FD1\u5FD2\u5FD3\u5FD4\u5FD5"+
+        "\u5FD6\u5FD7\u5FD8\u5FD9\u5FDA\u5FDB\u5FDC\u5FDD"+
+        "\u5FDE\u5FDF\u5FE0\u5FE1\u5FE2\u5FE3\u5FE4\u5FE5"+
+        "\u5FE6\u5FE7\u5FE8\u5FE9\u5FEA\u5FEB\u5FEC\u5FED"+
+        "\u5FEE\u5FEF\u5FF0\u5FF1\u5FF2\u5FF3\u5FF4\u5FF5"+
+        "\u5FF6\u5FF7\u5FF8\u5FF9\u5FFA\u5FFB\u5FFC\u5FFD"+
+        "\u5FFE\u5FFF\u6000\u6001\u6002\u6003\u6004\u6005"+
+        "\u6006\u6007\u6008\u6009\u600A\u600B\u600C\u600D"+
+        "\u600E\u600F\u6010\u6011\u6012\u6013\u6014\u6015"+
+        "\u6016\u6017\u6018\u6019\u601A\u601B\u601C\u601D"+
+        "\u601E\u601F\u6020\u6021\u6022\u6023\u6024\u6025"+
+        "\u6026\u6027\u6028\u6029\u602A\u602B\u602C\u602D"+
+        "\u602E\u602F\u6030\u6031\uFE78\u6032\u6033\u6034"+
+        "\u6035\uFE77\u6036\u6037\u6038\u6039\u603A\u603B"+
+        "\u603C\u603D\u603E\u603F\u6040\u6041\u6042\u6043"+
+        "\u6044\u6045\u6046\u6047\u6048\u6049\u604A\u604B"+
+        "\u604C\u604D\u604E\u604F\u6050\u6051\u6052\u6053"+
+        "\u6054\u6055\u6056\u6057\u6058\u6059\u605A\u605B"+
+        "\u605C\u605D\u605E\u605F\u6060\uFE7A\u6061\u6062"+
+        "\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606A"+
+        "\u606B\u606C\u606D\u606E\u606F\u6070\u6071\u6072"+
+        "\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607A"+
+        "\u607B\u607C\u607D\u607E\u607F\u6080\u6081\u6082"+
+        "\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608A"+
+        "\u608B\u608C\u608D\u608E\u608F\u6090\u6091\u6092"+
+        "\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609A"+
+        "\u609B\u609C\u609D\u609E\u609F\u60A0\u60A1\u60A2"+
+        "\u60A3\u60A4\u60A5\u60A6\u60A7\u60A8\u60A9\u60AA"+
+        "\u60AB\u60AC\u60AD\u60AE\u60AF\u60B0\u60B1\u60B2"+
+        "\u60B3\u60B4\u60B5\u60B6\u60B7\u60B8\u60B9\u60BA"+
+        "\u60BB\u60BC\u60BD\u60BE\u60BF\u60C0\u60C1\u60C2"+
+        "\u60C3\u60C4\u60C5\u60C6\u60C7\u60C8\u60C9\u60CA"+
+        "\u60CB\u60CC\u60CD\u60CE\u60CF\u60D0\u60D1\u60D2"+
+        "\u60D3\u60D4\u60D5\u60D6\u60D7\u60D8\u60D9\u60DA"+
+        "\u60DB\u60DC\u60DD\u60DE\u60DF\u60E0\u60E1\u60E2"+
+        "\u60E3\u60E4\u60E5\u60E6\u60E7\u60E8\u60E9\u60EA"+
+        "\u60EB\u60EC\u60ED\u60EE\u60EF\u60F0\u60F1\u60F2"+
+        "\u60F3\u60F4\u60F5\u60F6\u60F7\u60F8\u60F9\u60FA"+
+        "\u60FB\u60FC\u60FD\u60FE\u60FF\u6100\u6101\u6102"+
+        "\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610A"+
+        "\u610B\u610C\u610D\u610E\u610F\u6110\u6111\u6112"+
+        "\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611A"+
+        "\u611B\u611C\u611D\u611E\u611F\u6120\u6121\u6122"+
+        "\u6123\u6124\u6125\u6126\u6127\u6128\u6129\u612A"+
+        "\u612B\u612C\u612D\u612E\u612F\u6130\u6131\u6132"+
+        "\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613A"+
+        "\u613B\u613C\u613D\u613E\u613F\u6140\u6141\u6142"+
+        "\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614A"+
+        "\u614B\u614C\u614D\u614E\u614F\u6150\u6151\u6152"+
+        "\u6153\u6154\u6155\u6156\u6157\u6158\uFE7B\u6159"+
+        "\u615A\u615B\u615C\u615D\u615E\u615F\u6160\u6161"+
+        "\u6162\u6163\u6164\u6165\u6166\u6167\u6168\u6169"+
+        "\u616A\u616B\u616C\u616D\u616E\u616F\u6170\u6171"+
+        "\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179"+
+        "\u617A\u617B\u617C\u617D\u617E\u617F\u6180\u6181"+
+        "\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u6189"+
+        "\u618A\u618B\u618C\u618D\u618E\u618F\u6190\u6191"+
+        "\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199"+
+        "\u619A\u619B\u619C\u619D\u619E\u619F\u61A0\u61A1"+
+        "\u61A2\u61A3\u61A4\u61A5\u61A6\u61A7\u61A8\u61A9"+
+        "\u61AA\u61AB\u61AC\u61AD\u61AE\u61AF\u61B0\u61B1"+
+        "\u61B2\u61B3\u61B4\u61B5\u61B6\u61B7\u61B8\u61B9"+
+        "\u61BA\u61BB\u61BC\u61BD\u61BE\u61BF\u61C0\u61C1"+
+        "\u61C2\u61C3\u61C4\u61C5\u61C6\u61C7\u61C8\u61C9"+
+        "\u61CA\u61CB\u61CC\u61CD\u61CE\u61CF\u61D0\u61D1"+
+        "\u61D2\u61D3\u61D4\u61D5\u61D6\u61D7\u61D8\u61D9"+
+        "\u61DA\u61DB\u61DC\u61DD\u61DE\u61DF\u61E0\u61E1"+
+        "\u61E2\u61E3\u61E4\u61E5\u61E6\u61E7\u61E8\u61E9"+
+        "\u61EA\u61EB\u61EC\u61ED\u61EE\u61EF\u61F0\u61F1"+
+        "\u61F2\u61F3\u61F4\u61F5\u61F6\u61F7\u61F8\u61F9"+
+        "\u61FA\u61FB\u61FC\u61FD\u61FE\u61FF\u6200\u6201"+
+        "\u6202\u6203\u6204\u6205\u6206\u6207\u6208\u6209"+
+        "\u620A\u620B\u620C\u620D\u620E\u620F\u6210\u6211"+
+        "\u6212\u6213\u6214\u6215\u6216\u6217\u6218\u6219"+
+        "\u621A\u621B\u621C\u621D\u621E\u621F\u6220\u6221"+
+        "\u6222\u6223\u6224\u6225\u6226\u6227\u6228\u6229"+
+        "\u622A\u622B\u622C\u622D\u622E\u622F\u6230\u6231"+
+        "\u6232\u6233\u6234\u6235\u6236\u6237\u6238\u6239"+
+        "\u623A\u623B\u623C\u623D\u623E\u623F\u6240\u6241"+
+        "\u6242\u6243\u6244\u6245\u6246\u6247\u6248\u6249"+
+        "\u624A\u624B\u624C\u624D\u624E\u624F\u6250\u6251"+
+        "\u6252\u6253\u6254\u6255\u6256\u6257\u6258\u6259"+
+        "\u625A\u625B\u625C\u625D\u625E\u625F\u6260\u6261"+
+        "\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269"+
+        "\u626A\u626B\u626C\u626D\u626E\u626F\u6270\u6271"+
+        "\u6272\u6273\u6274\u6275\u6276\u6277\u6278\u6279"+
+        "\u627A\u627B\u627C\u627D\u627E\u627F\u6280\u6281"+
+        "\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289"+
+        "\u628A\u628B\u628C\u628D\u628E\u628F\u6290\u6291"+
+        "\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299"+
+        "\u629A\u629B\u629C\u629D\u629E\u629F\u62A0\u62A1"+
+        "\u62A2\u62A3\u62A4\u62A5\u62A6\u62A7\u62A8\u62A9"+
+        "\u62AA\u62AB\u62AC\u62AD\u62AE\u62AF\u62B0\u62B1"+
+        "\u62B2\u62B3\u62B4\u62B5\u62B6\u62B7\u62B8\u62B9"+
+        "\u62BA\u62BB\u62BC\u62BD\u62BE\u62BF\u62C0\u62C1"+
+        "\u62C2\u62C3\u62C4\u62C5\u62C6\u62C7\u62C8\u62C9"+
+        "\u62CA\u62CB\u62CC\u62CD\uFE7D\u62CE\u62CF\u62D0"+
+        "\u62D1\u62D2\u62D3\u62D4\u62D5\u62D6\u62D7\u62D8"+
+        "\u62D9\u62DA\u62DB\u62DC\u62DD\u62DE\u62DF\u62E0"+
+        "\u62E1\uFE7C\u62E2\u62E3\u62E4\u62E5\u62E6\u62E7"+
+        "\u62E8\u62E9\u62EA\u62EB\u62EC\u62ED\u62EE\u62EF"+
+        "\u62F0\u62F1\u62F2\u62F3\u62F4\u62F5\u62F6\u62F7"+
+        "\u62F8\u62F9\u62FA\u62FB\u62FC\u62FD\u62FE\u62FF"+
+        "\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307"+
+        "\u6308\u6309\u630A\u630B\u630C\u630D\u630E\u630F"+
+        "\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317"+
+        "\u6318\u6319\u631A\u631B\u631C\u631D\u631E\u631F"+
+        "\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327"+
+        "\u6328\u6329\u632A\u632B\u632C\u632D\u632E\u632F"+
+        "\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337"+
+        "\u6338\u6339\u633A\u633B\u633C\u633D\u633E\u633F"+
+        "\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347"+
+        "\u6348\u6349\u634A\u634B\u634C\u634D\u634E\u634F"+
+        "\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357"+
+        "\u6358\u6359\u635A\u635B\u635C\u635D\u635E\u635F"+
+        "\u6360\u6361\u6362\u6363\u6364\u6365\u6366\u6367"+
+        "\u6368\u6369\u636A\u636B\u636C\u636D\u636E\u636F"+
+        "\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377"+
+        "\u6378\u6379\u637A\u637B\u637C\u637D\u637E\u637F"+
+        "\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387"+
+        "\u6388\u6389\u638A\u638B\u638C\u638D\u638E\u638F"+
+        "\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397"+
+        "\u6398\u6399\u639A\u639B\u639C\u639D\u639E\u639F"+
+        "\u63A0\u63A1\u63A2\uFE80\u63A3\u63A4\u63A5\u63A6"+
+        "\u63A7\uFE81\u63A8\u63A9\u63AA\u63AB\u63AC\u63AD"+
+        "\u63AE\u63AF\u63B0\u63B1\u63B2\u63B3\u63B4\u63B5"+
+        "\u63B6\u63B7\u63B8\u63B9\u63BA\u63BB\u63BC\u63BD"+
+        "\u63BE\u63BF\u63C0\u63C1\u63C2\u63C3\u63C4\u63C5"+
+        "\u63C6\u63C7\u63C8\u63C9\u63CA\u63CB\u63CC\u63CD"+
+        "\u63CE\u63CF\u63D0\u63D1\u63D2\u63D3\u63D4\u63D5"+
+        "\u63D6\u63D7\u63D8\u63D9\u63DA\u63DB\u63DC\u63DD"+
+        "\u63DE\u63DF\u63E0\u63E1\u63E2\u63E3\u63E4\u63E5"+
+        "\u63E6\u63E7\u63E8\u63E9\u63EA\u63EB\u63EC\u63ED"+
+        "\u63EE\u63EF\u63F0\u63F1\u63F2\u63F3\u63F4\u63F5"+
+        "\u63F6\u63F7\u63F8\u63F9\uFE82\u63FA\u63FB\u63FC"+
+        "\u63FD\u63FE\u63FF\u6400\u6401\u6402\u6403\u6404"+
+        "\u6405\u6406\u6407\u6408\u6409\uFE83\u640A\u640B"+
+        "\u640C\u640D\u640E\u640F\u6410\u6411\u6412\u6413"+
+        "\u6414\u6415\u6416\u6417\u6418\u6419\u641A\u641B"+
+        "\u641C\u641D\u641E\u641F\u6420\u6421\u6422\u6423"+
+        "\u6424\u6425\u6426\u6427\u6428\u6429\u642A\u642B"+
+        "\u642C\u642D\u642E\u642F\u6430\u6431\u6432\u6433"+
+        "\u6434\u6435\u6436\u6437\u6438\u6439\u643A\u643B"+
+        "\u643C\u643D\u643E\u643F\u6440\u6441\u6442\u6443"+
+        "\u6444\u6445\u6446\u6447\u6448\u6449\u644A\u644B"+
+        "\u644C\u644D\u644E\u644F\u6450\u6451\u6452\u6453"+
+        "\u6454\u6455\u6456\u6457\u6458\u6459\u645A\u645B"+
+        "\u645C\u645D\u645E\u645F\u6460\u6461\u6462\u6463"+
+        "\u6464\u6465\u6466\u6467\u6468\u6469\u646A\u646B"+
+        "\u646C\u646D\u646E\u646F\u6470\u6471\u6472\u6473"+
+        "\u6474\u6475\u6476\u6477\u6478\u6479\u647A\u647B"+
+        "\u647C\u647D\u647E\u647F\u6480\u6481\u6482\u6483"+
+        "\u6484\u6485\u6486\u6487\u6488\u6489\u648A\u648B"+
+        "\u648C\u648D\u648E\u648F\u6490\u6491\u6492\u6493"+
+        "\u6494\u6495\u6496\u6497\u6498\u6499\u649A\u649B"+
+        "\u649C\u649D\u649E\u649F\u64A0\u64A1\u64A2\u64A3"+
+        "\u64A4\u64A5\u64A6\u64A7\u64A8\u64A9\u64AA\u64AB"+
+        "\u64AC\u64AD\u64AE\u64AF\u64B0\u64B1\u64B2\u64B3"+
+        "\u64B4\u64B5\u64B6\u64B7\u64B8\u64B9\u64BA\u64BB"+
+        "\u64BC\u64BD\u64BE\u64BF\u64C0\u64C1\u64C2\u64C3"+
+        "\u64C4\u64C5\u64C6\u64C7\u64C8\u64C9\u64CA\u64CB"+
+        "\u64CC\u64CD\u64CE\u64CF\u64D0\u64D1\u64D2\u64D3"+
+        "\u64D4\u64D5\u64D6\u64D7\u64D8\u64D9\u64DA\u64DB"+
+        "\u64DC\u64DD\u64DE\u64DF\u64E0\u64E1\u64E2\u64E3"+
+        "\u64E4\u64E5\u64E6\u64E7\u64E8\u64E9\u64EA\u64EB"+
+        "\u64EC\u64ED\u64EE\u64EF\u64F0\u64F1\u64F2\u64F3"+
+        "\u64F4\u64F5\u64F6\u64F7\u64F8\u64F9\u64FA\u64FB"+
+        "\u64FC\u64FD\u64FE\u64FF\u6500\u6501\u6502\u6503"+
+        "\u6504\u6505\u6506\u6507\u6508\u6509\u650A\u650B"+
+        "\u650C\u650D\u650E\u650F\u6510\u6511\u6512\u6513"+
+        "\u6514\u6515\u6516\u6517\u6518\u6519\u651A\u651B"+
+        "\u651C\u651D\u651E\u651F\u6520\u6521\u6522\u6523"+
+        "\u6524\u6525\u6526\u6527\u6528\u6529\u652A\u652B"+
+        "\u652C\u652D\u652E\u652F\u6530\u6531\u6532\u6533"+
+        "\u6534\u6535\u6536\u6537\u6538\u6539\u653A\u653B"+
+        "\u653C\u653D\u653E\u653F\u6540\u6541\u6542\u6543"+
+        "\u6544\u6545\u6546\u6547\u6548\u6549\u654A\u654B"+
+        "\u654C\u654D\u654E\u654F\u6550\u6551\u6552\u6553"+
+        "\u6554\u6555\u6556\u6557\u6558\u6559\u655A\u655B"+
+        "\u655C\u655D\u655E\u655F\u6560\u6561\u6562\u6563"+
+        "\u6564\u6565\u6566\u6567\u6568\u6569\u656A\u656B"+
+        "\u656C\u656D\u656E\u656F\u6570\u6571\u6572\u6573"+
+        "\u6574\u6575\u6576\u6577\u6578\u6579\u657A\u657B"+
+        "\u657C\u657D\u657E\u657F\u6580\u6581\u6582\u6583"+
+        "\u6584\u6585\u6586\u6587\u6588\u6589\u658A\u658B"+
+        "\u658C\u658D\u658E\u658F\u6590\u6591\u6592\u6593"+
+        "\u6594\u6595\u6596\u6597\u6598\u6599\u659A\u659B"+
+        "\u659C\u659D\u659E\u659F\u65A0\u65A1\u65A2\u65A3"+
+        "\u65A4\u65A5\u65A6\u65A7\u65A8\u65A9\u65AA\u65AB"+
+        "\u65AC\u65AD\u65AE\u65AF\u65B0\u65B1\u65B2\u65B3"+
+        "\u65B4\u65B5\u65B6\u65B7\u65B8\u65B9\u65BA\u65BB"+
+        "\u65BC\u65BD\u65BE\u65BF\u65C0\u65C1\u65C2\uFE85"+
+        "\u65C3\u65C4\u65C5\u65C6\u65C7\u65C8\u65C9\u65CA"+
+        "\u65CB\u65CC\u65CD\u65CE\u65CF\u65D0\u65D1\u65D2"+
+        "\u65D3\u65D4\u65D5\u65D6\u65D7\u65D8\u65D9\u65DA"+
+        "\u65DB\u65DC\u65DD\u65DE\u65DF\u65E0\u65E1\u65E2"+
+        "\u65E3\u65E4\u65E5\u65E6\u65E7\u65E8\u65E9\u65EA"+
+        "\u65EB\u65EC\u65ED\u65EE\u65EF\u65F0\u65F1\u65F2"+
+        "\u65F3\u65F4\uFE86\u65F5\u65F6\uFE87\u65F7\u65F8"+
+        "\u65F9\u65FA\uFE88\uFE89\u65FB\uFE8A\uFE8B\u65FC"+
+        "\u65FD\u65FE\u65FF\u6600\u6601\u6602\u6603\u6604"+
+        "\u6605\u6606\u6607\u6608\u6609\u660A\u660B\u660C"+
+        "\u660D\u660E\u660F\uFE8D\u6610\u6611\u6612\uFE8C"+
+        "\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u661A"+
+        "\u661B\u661C\u661D\u661E\u661F\u6620\u6621\u6622"+
+        "\u6623\u6624\u6625\u6626\u6627\u6628\uFE8F\uFE8E"+
+        "\u6629\u662A\u662B\u662C\u662D\u662E\u662F\u6630"+
+        "\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638"+
+        "\u6639\u663A\u663B\u663C\u663D\u663E\u663F\u6640"+
+        "\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648"+
+        "\u6649\u664A\u664B\u664C\u664D\u664E\u664F\u6650"+
+        "\u6651\u6652\u6653\u6654\u6655\u6656\u6657\u6658"+
+        "\u6659\u665A\u665B\u665C\u665D\u665E\u665F\u6660"+
+        "\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668"+
+        "\u6669\u666A\u666B\u666C\u666D\u666E\u666F\u6670"+
+        "\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678"+
+        "\u6679\u667A\u667B\u667C\u667D\u667E\u667F\u6680"+
+        "\u6681\u6682\u6683\u6684\u6685\u6686\u6687\u6688"+
+        "\u6689\u668A\u668B\u668C\u668D\u668E\u668F\u6690"+
+        "\u6691\u6692\u6693\u6694\u6695\u6696\u6697\u6698"+
+        "\u6699\u669A\u669B\u669C\u669D\u669E\u669F\u66A0"+
+        "\u66A1\u66A2\u66A3\u66A4\u66A5\u66A6\u66A7\u66A8"+
+        "\u66A9\u66AA\u66AB\u66AC\u66AD\u66AE\u66AF\u66B0"+
+        "\u66B1\u66B2\u66B3\u66B4\u66B5\u66B6\u66B7\u66B8"+
+        "\u66B9\u66BA\u66BB\u66BC\u66BD\u66BE\u66BF\u66C0"+
+        "\u66C1\u66C2\u66C3\u66C4\u66C5\u66C6\u66C7\u66C8"+
+        "\u66C9\u66CA\u66CB\u66CC\u66CD\u66CE\u66CF\u66D0"+
+        "\u66D1\u66D2\u66D3\u66D4\u66D5\u66D6\u66D7\u66D8"+
+        "\u66D9\u66DA\u66DB\u66DC\u66DD\u66DE\u66DF\u66E0"+
+        "\u66E1\u66E2\u66E3\u66E4\u66E5\u66E6\u66E7\u66E8"+
+        "\u66E9\u66EA\u66EB\u66EC\u66ED\u66EE\u66EF\u66F0"+
+        "\u66F1\u66F2\u66F3\u66F4\u66F5\u66F6\u66F7\u66F8"+
+        "\u66F9\u66FA\u66FB\u66FC\u66FD\u66FE\u66FF\u6700"+
+        "\u6701\u6702\u6703\u6704\u6705\u6706\u6707\u6708"+
+        "\u6709\u670A\u670B\u670C\u670D\u670E\u670F\u6710"+
+        "\u6711\u6712\u6713\u6714\u6715\u6716\u6717\u6718"+
+        "\u6719\u671A\u671B\u671C\u671D\u671E\u671F\u6720"+
+        "\u6721\u6722\u6723\u6724\u6725\u6726\u6727\u6728"+
+        "\u6729\u672A\u672B\u672C\u672D\u672E\u672F\u6730"+
+        "\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738"+
+        "\u6739\u673A\u673B\u673C\u673D\u673E\u673F\u6740"+
+        "\u6741\u6742\u6743\u6744\u6745\u6746\u6747\u6748"+
+        "\u6749\u674A\u674B\u674C\u674D\u674E\u674F\u6750"+
+        "\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758"+
+        "\u6759\u675A\u675B\u675C\u675D\u675E\u675F\u6760"+
+        "\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768"+
+        "\u6769\u676A\u676B\u676C\u676D\u676E\u676F\u6770"+
+        "\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778"+
+        "\u6779\u677A\u677B\u677C\u677D\u677E\u677F\u6780"+
+        "\u6781\u6782\u6783\u6784\u6785\u6786\u6787\u6788"+
+        "\u6789\u678A\u678B\u678C\u678D\u678E\u678F\u6790"+
+        "\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798"+
+        "\u6799\u679A\u679B\u679C\u679D\u679E\u679F\u67A0"+
+        "\u67A1\u67A2\u67A3\u67A4\u67A5\u67A6\u67A7\u67A8"+
+        "\u67A9\u67AA\u67AB\u67AC\u67AD\u67AE\u67AF\u67B0"+
+        "\u67B1\u67B2\u67B3\u67B4\u67B5\u67B6\u67B7\u67B8"+
+        "\u67B9\u67BA\u67BB\u67BC\u67BD\u67BE\u67BF\u67C0"+
+        "\u67C1\u67C2\u67C3\u67C4\u67C5\u67C6\u67C7\u67C8"+
+        "\u67C9\u67CA\u67CB\u67CC\u67CD\u67CE\u67CF\u67D0"+
+        "\u67D1\u67D2\u67D3\u67D4\u67D5\u67D6\u67D7\u67D8"+
+        "\u67D9\u67DA\u67DB\u67DC\u67DD\u67DE\u67DF\u67E0"+
+        "\u67E1\u67E2\u67E3\u67E4\u67E5\u67E6\u67E7\u67E8"+
+        "\u67E9\u67EA\u67EB\u67EC\u67ED\u67EE\u67EF\u67F0"+
+        "\u67F1\u67F2\u67F3\u67F4\u67F5\u67F6\u67F7\u67F8"+
+        "\u67F9\u67FA\u67FB\u67FC\u67FD\u67FE\u67FF\u6800"+
+        "\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808"+
+        "\u6809\u680A\u680B\u680C\u680D\u680E\u680F\u6810"+
+        "\u6811\u6812\u6813\u6814\u6815\u6816\u6817\u6818"+
+        "\u6819\u681A\u681B\u681C\u681D\u681E\u681F\u6820"+
+        "\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828"+
+        "\u6829\u682A\u682B\u682C\u682D\u682E\u682F\u6830"+
+        "\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838"+
+        "\u6839\u683A\u683B\u683C\u683D\u683E\u683F\u6840"+
+        "\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848"+
+        "\u6849\u684A\u684B\u684C\u684D\u684E\u684F\u6850"+
+        "\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858"+
+        "\u6859\u685A\u685B\u685C\u685D\u685E\u685F\u6860"+
+        "\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868"+
+        "\u6869\u686A\u686B\u686C\u686D\u686E\u686F\u6870"+
+        "\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878"+
+        "\u6879\u687A\u687B\u687C\u687D\u687E\u687F\u6880"+
+        "\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888"+
+        "\u6889\u688A\u688B\u688C\u688D\u688E\u688F\u6890"+
+        "\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898"+
+        "\u6899\u689A\u689B\u689C\u689D\u689E\u689F\u68A0"+
+        "\u68A1\u68A2\u68A3\u68A4\u68A5\u68A6\u68A7\u68A8"+
+        "\u68A9\u68AA\u68AB\u68AC\u68AD\u68AE\u68AF\u68B0"+
+        "\u68B1\u68B2\u68B3\u68B4\u68B5\u68B6\u68B7\u68B8"+
+        "\u68B9\u68BA\u68BB\u68BC\u68BD\u68BE\u68BF\u68C0"+
+        "\u68C1\u68C2\u68C3\u68C4\u68C5\u68C6\u68C7\u68C8"+
+        "\u68C9\u68CA\u68CB\u68CC\u68CD\u68CE\u68CF\u68D0"+
+        "\u68D1\u68D2\u68D3\u68D4\u68D5\u68D6\u68D7\u68D8"+
+        "\u68D9\u68DA\u68DB\u68DC\u68DD\u68DE\u68DF\u68E0"+
+        "\u68E1\u68E2\u68E3\u68E4\u68E5\u68E6\u68E7\uFE96"+
+        "\u68E8\u68E9\u68EA\u68EB\u68EC\u68ED\u68EE\u68EF"+
+        "\u68F0\u68F1\u68F2\u68F3\u68F4\u68F5\u68F6\u68F7"+
+        "\u68F8\u68F9\u68FA\u68FB\u68FC\u68FD\u68FE\u68FF"+
+        "\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907"+
+        "\u6908\u6909\u690A\u690B\u690C\u690D\u690E\uFE93"+
+        "\uFE94\uFE95\uFE97\uFE92\u690F\u6910\u6911\u6912"+
+        "\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691A"+
+        "\u691B\u691C\u691D\u691E\u691F\u6920\u6921\u6922"+
+        "\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692A"+
+        "\u692B\u692C\u692D\u692E\u692F\u6930\u6931\u6932"+
+        "\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693A"+
+        "\u693B\u693C\u693D\u693E\u693F\u6940\u6941\u6942"+
+        "\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694A"+
+        "\u694B\u694C\u694D\u694E\u694F\u6950\u6951\u6952"+
+        "\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695A"+
+        "\u695B\u695C\u695D\u695E\u695F\u6960\u6961\u6962"+
+        "\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696A"+
+        "\u696B\u696C\u696D\u696E\u696F\u6970\u6971\u6972"+
+        "\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697A"+
+        "\u697B\u697C\u697D\uFE98\uFE99\uFE9A\uFE9B\uFE9C"+
+        "\uFE9D\uFE9E\u697E\u697F\u6980\u6981\u6982\u6983"+
+        "\u6984\u6985\u6986\u6987\u6988\u6989\u698A\u698B"+
+        "\u698C\u698D\u698E\u698F\u6990\u6991\u6992\u6993"+
+        "\u6994\u6995\u6996\u6997\u6998\u6999\u699A\u699B"+
+        "\u699C\u699D\u699E\u699F\u69A0\u69A1\u69A2\u69A3"+
+        "\u69A4\u69A5\u69A6\u69A7\u69A8\u69A9\u69AA\u69AB"+
+        "\u69AC\u69AD\u69AE\u69AF\u69B0\u69B1\u69B2\u69B3"+
+        "\u69B4\u69B5\u69B6\u69B7\u69B8\u69B9\u69BA\u69BB"+
+        "\u69BC\u69BD\u69BE\u69BF\u69C0\u69C1\u69C2\u69C3"+
+        "\u69C4\u69C5\u69C6\u69C7\u69C8\u69C9\u69CA\u69CB"+
+        "\u69CC\u69CD\u69CE\u69CF\u69D0\u69D1\u69D2\u69D3"+
+        "\u69D4\u69D5\u69D6\u69D7\u69D8\u69D9\u69DA\u69DB"+
+        "\u69DC\u69DD\u69DE\u69DF\u69E0\u69E1\u69E2\u69E3"+
+        "\u69E4\u69E5\u69E6\u69E7\u69E8\u69E9\u69EA\u69EB"+
+        "\u69EC\u69ED\u69EE\u69EF\u69F0\u69F1\u69F2\u69F3"+
+        "\u69F4\u69F5\u69F6\u69F7\u69F8\u69F9\u69FA\u69FB"+
+        "\u69FC\u69FD\u69FE\u69FF\u6A00\u6A01\u6A02\u6A03"+
+        "\u6A04\u6A05\u6A06\u6A07\u6A08\u6A09\u6A0A\u6A0B"+
+        "\u6A0C\u6A0D\u6A0E\u6A0F\u6A10\u6A11\uFE9F\u6A12"+
+        "\u6A13\u6A14\u6A15\u6A16\u6A17\u6A18\u6A19\u6A1A"+
+        "\u6A1B\u6A1C\u6A1D\u6A1E\u6A1F\u6A20\u6A21\u6A22"+
+        "\u6A23\u6A24\u6A25\u6A26\u6A27\u6A28\u6A29\u6A2A"+
+        "\u6A2B\u6A2C\u6A2D\u6A2E\u6A2F\u6A30\u6A31\u6A32"+
+        "\u6A33\u6A34\u6A35\u6A36\u6A37\u6A38\u6A39\u6A3A"+
+        "\u6A3B\u6A3C\u6A3D\u6A3E\u6A3F\u6A40\u6A41\u6A42"+
+        "\u6A43\u6A44\u6A45\u6A46\u6A47\u6A48\u6A49\u6A4A"+
+        "\u6A4B\u6A4C\u6A4D\u6A4E\u6A4F\u6A50\u6A51\u6A52"+
+        "\u6A53\u6A54\u6A55\u6A56\u6A57\u6A58\u6A59\u6A5A"+
+        "\u6A5B\u6A5C\u6A5D\u6A5E\u6A5F\u6A60\u6A61\u6A62"+
+        "\uD2BB\uB6A1\u8140\uC6DF\u8141\u8142\u8143\uCDF2"+
+        "\uD5C9\uC8FD\uC9CF\uCFC2\uD8A2\uB2BB\uD3EB\u8144"+
+        "\uD8A4\uB3F3\u8145\uD7A8\uC7D2\uD8A7\uCAC0\u8146"+
+        "\uC7F0\uB1FB\uD2B5\uB4D4\uB6AB\uCBBF\uD8A9\u8147"+
+        "\u8148\u8149\uB6AA\u814A\uC1BD\uD1CF\u814B\uC9A5"+
+        "\uD8AD\u814C\uB8F6\uD1BE\uE3DC\uD6D0\u814D\u814E"+
+        "\uB7E1\u814F\uB4AE\u8150\uC1D9\u8151\uD8BC\u8152"+
+        "\uCDE8\uB5A4\uCEAA\uD6F7\u8153\uC0F6\uBED9\uD8AF"+
+        "\u8154\u8155\u8156\uC4CB\u8157\uBEC3\u8158\uD8B1"+
+        "\uC3B4\uD2E5\u8159\uD6AE\uCEDA\uD5A7\uBAF5\uB7A6"+
+        "\uC0D6\u815A\uC6B9\uC5D2\uC7C7\u815B\uB9D4\u815C"+
+        "\uB3CB\uD2D2\u815D\u815E\uD8BF\uBEC5\uC6F2\uD2B2"+
+        "\uCFB0\uCFE7\u815F\u8160\u8161\u8162\uCAE9\u8163"+
+        "\u8164\uD8C0\u8165\u8166\u8167\u8168\u8169\u816A"+
+        "\uC2F2\uC2D2\u816B\uC8E9\u816C\u816D\u816E\u816F"+
+        "\u8170\u8171\u8172\u8173\u8174\u8175\uC7AC\u8176"+
+        "\u8177\u8178\u8179\u817A\u817B\u817C\uC1CB\u817D"+
+        "\uD3E8\uD5F9\u817E\uCAC2\uB6FE\uD8A1\uD3DA\uBFF7"+
+        "\u8180\uD4C6\uBBA5\uD8C1\uCEE5\uBEAE\u8181\u8182"+
+        "\uD8A8\u8183\uD1C7\uD0A9\u8184\u8185\u8186\uD8BD"+
+        "\uD9EF\uCDF6\uBFBA\u8187\uBDBB\uBAA5\uD2E0\uB2FA"+
+        "\uBAE0\uC4B6\u8188\uCFED\uBEA9\uCDA4\uC1C1\u8189"+
+        "\u818A\u818B\uC7D7\uD9F1\u818C\uD9F4\u818D\u818E"+
+        "\u818F\u8190\uC8CB\uD8E9\u8191\u8192\u8193\uD2DA"+
+        "\uCAB2\uC8CA\uD8EC\uD8EA\uD8C6\uBDF6\uC6CD\uB3F0"+
+        "\u8194\uD8EB\uBDF1\uBDE9\u8195\uC8D4\uB4D3\u8196"+
+        "\u8197\uC2D8\u8198\uB2D6\uD7D0\uCACB\uCBFB\uD5CC"+
+        "\uB8B6\uCFC9\u8199\u819A\u819B\uD9DA\uD8F0\uC7AA"+
+        "\u819C\uD8EE\u819D\uB4FA\uC1EE\uD2D4\u819E\u819F"+
+        "\uD8ED\u81A0\uD2C7\uD8EF\uC3C7\u81A1\u81A2\u81A3"+
+        "\uD1F6\u81A4\uD6D9\uD8F2\u81A5\uD8F5\uBCFE\uBCDB"+
+        "\u81A6\u81A7\u81A8\uC8CE\u81A9\uB7DD\u81AA\uB7C2"+
+        "\u81AB\uC6F3\u81AC\u81AD\u81AE\u81AF\u81B0\u81B1"+
+        "\u81B2\uD8F8\uD2C1\u81B3\u81B4\uCEE9\uBCBF\uB7FC"+
+        "\uB7A5\uD0DD\u81B5\u81B6\u81B7\u81B8\u81B9\uD6DA"+
+        "\uD3C5\uBBEF\uBBE1\uD8F1\u81BA\u81BB\uC9A1\uCEB0"+
+        "\uB4AB\u81BC\uD8F3\u81BD\uC9CB\uD8F6\uC2D7\uD8F7"+
+        "\u81BE\u81BF\uCEB1\uD8F9\u81C0\u81C1\u81C2\uB2AE"+
+        "\uB9C0\u81C3\uD9A3\u81C4\uB0E9\u81C5\uC1E6\u81C6"+
+        "\uC9EC\u81C7\uCBC5\u81C8\uCBC6\uD9A4\u81C9\u81CA"+
+        "\u81CB\u81CC\u81CD\uB5E8\u81CE\u81CF\uB5AB\u81D0"+
+        "\u81D1\u81D2\u81D3\u81D4\u81D5\uCEBB\uB5CD\uD7A1"+
+        "\uD7F4\uD3D3\u81D6\uCCE5\u81D7\uBACE\u81D8\uD9A2"+
+        "\uD9DC\uD3E0\uD8FD\uB7F0\uD7F7\uD8FE\uD8FA\uD9A1"+
+        "\uC4E3\u81D9\u81DA\uD3B6\uD8F4\uD9DD\u81DB\uD8FB"+
+        "\u81DC\uC5E5\u81DD\u81DE\uC0D0\u81DF\u81E0\uD1F0"+
+        "\uB0DB\u81E1\u81E2\uBCD1\uD9A6\u81E3\uD9A5\u81E4"+
+        "\u81E5\u81E6\u81E7\uD9AC\uD9AE\u81E8\uD9AB\uCAB9"+
+        "\u81E9\u81EA\u81EB\uD9A9\uD6B6\u81EC\u81ED\u81EE"+
+        "\uB3DE\uD9A8\u81EF\uC0FD\u81F0\uCACC\u81F1\uD9AA"+
+        "\u81F2\uD9A7\u81F3\u81F4\uD9B0\u81F5\u81F6\uB6B1"+
+        "\u81F7\u81F8\u81F9\uB9A9\u81FA\uD2C0\u81FB\u81FC"+
+        "\uCFC0\u81FD\u81FE\uC2C2\u8240\uBDC4\uD5EC\uB2E0"+
+        "\uC7C8\uBFEB\uD9AD\u8241\uD9AF\u8242\uCEEA\uBAEE"+
+        "\u8243\u8244\u8245\u8246\u8247\uC7D6\u8248\u8249"+
+        "\u824A\u824B\u824C\u824D\u824E\u824F\u8250\uB1E3"+
+        "\u8251\u8252\u8253\uB4D9\uB6ED\uD9B4\u8254\u8255"+
+        "\u8256\u8257\uBFA1\u8258\u8259\u825A\uD9DE\uC7CE"+
+        "\uC0FE\uD9B8\u825B\u825C\u825D\u825E\u825F\uCBD7"+
+        "\uB7FD\u8260\uD9B5\u8261\uD9B7\uB1A3\uD3E1\uD9B9"+
+        "\u8262\uD0C5\u8263\uD9B6\u8264\u8265\uD9B1\u8266"+
+        "\uD9B2\uC1A9\uD9B3\u8267\u8268\uBCF3\uD0DE\uB8A9"+
+        "\u8269\uBEE3\u826A\uD9BD\u826B\u826C\u826D\u826E"+
+        "\uD9BA\u826F\uB0B3\u8270\u8271\u8272\uD9C2\u8273";
+
+    private final static String innerEncoderIndex5=
+        "\u8274\u8275\u8276\u8277\u8278\u8279\u827A\u827B"+
+        "\u827C\u827D\u827E\u8280\uD9C4\uB1B6\u8281\uD9BF"+
+        "\u8282\u8283\uB5B9\u8284\uBEF3\u8285\u8286\u8287"+
+        "\uCCC8\uBAF2\uD2D0\u8288\uD9C3\u8289\u828A\uBDE8"+
+        "\u828B\uB3AB\u828C\u828D\u828E\uD9C5\uBEEB\u828F"+
+        "\uD9C6\uD9BB\uC4DF\u8290\uD9BE\uD9C1\uD9C0\u8291"+
+        "\u8292\u8293\u8294\u8295\u8296\u8297\u8298\u8299"+
+        "\u829A\u829B\uD5AE\u829C\uD6B5\u829D\uC7E3\u829E"+
+        "\u829F\u82A0\u82A1\uD9C8\u82A2\u82A3\u82A4\uBCD9"+
+        "\uD9CA\u82A5\u82A6\u82A7\uD9BC\u82A8\uD9CB\uC6AB"+
+        "\u82A9\u82AA\u82AB\u82AC\u82AD\uD9C9\u82AE\u82AF"+
+        "\u82B0\u82B1\uD7F6\u82B2\uCDA3\u82B3\u82B4\u82B5"+
+        "\u82B6\u82B7\u82B8\u82B9\u82BA\uBDA1\u82BB\u82BC"+
+        "\u82BD\u82BE\u82BF\u82C0\uD9CC\u82C1\u82C2\u82C3"+
+        "\u82C4\u82C5\u82C6\u82C7\u82C8\u82C9\uC5BC\uCDB5"+
+        "\u82CA\u82CB\u82CC\uD9CD\u82CD\u82CE\uD9C7\uB3A5"+
+        "\uBFFE\u82CF\u82D0\u82D1\u82D2\uB8B5\u82D3\u82D4"+
+        "\uC0FC\u82D5\u82D6\u82D7\u82D8\uB0F8\u82D9\u82DA"+
+        "\u82DB\u82DC\u82DD\u82DE\u82DF\u82E0\u82E1\u82E2"+
+        "\u82E3\u82E4\u82E5\u82E6\u82E7\u82E8\u82E9\u82EA"+
+        "\u82EB\u82EC\u82ED\uB4F6\u82EE\uD9CE\u82EF\uD9CF"+
+        "\uB4A2\uD9D0\u82F0\u82F1\uB4DF\u82F2\u82F3\u82F4"+
+        "\u82F5\u82F6\uB0C1\u82F7\u82F8\u82F9\u82FA\u82FB"+
+        "\u82FC\u82FD\uD9D1\uC9B5\u82FE\u8340\u8341\u8342"+
+        "\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834A"+
+        "\u834B\u834C\u834D\u834E\u834F\u8350\u8351\uCFF1"+
+        "\u8352\u8353\u8354\u8355\u8356\u8357\uD9D2\u8358"+
+        "\u8359\u835A\uC1C5\u835B\u835C\u835D\u835E\u835F"+
+        "\u8360\u8361\u8362\u8363\u8364\u8365\uD9D6\uC9AE"+
+        "\u8366\u8367\u8368\u8369\uD9D5\uD9D4\uD9D7\u836A"+
+        "\u836B\u836C\u836D\uCBDB\u836E\uBDA9\u836F\u8370"+
+        "\u8371\u8372\u8373\uC6A7\u8374\u8375\u8376\u8377"+
+        "\u8378\u8379\u837A\u837B\u837C\u837D\uD9D3\uD9D8"+
+        "\u837E\u8380\u8381\uD9D9\u8382\u8383\u8384\u8385"+
+        "\u8386\u8387\uC8E5\u8388\u8389\u838A\u838B\u838C"+
+        "\u838D\u838E\u838F\u8390\u8391\u8392\u8393\u8394"+
+        "\u8395\uC0DC\u8396\u8397\u8398\u8399\u839A\u839B"+
+        "\u839C\u839D\u839E\u839F\u83A0\u83A1\u83A2\u83A3"+
+        "\u83A4\u83A5\u83A6\u83A7\u83A8\u83A9\u83AA\u83AB"+
+        "\u83AC\u83AD\u83AE\u83AF\u83B0\u83B1\u83B2\uB6F9"+
+        "\uD8A3\uD4CA\u83B3\uD4AA\uD0D6\uB3E4\uD5D7\u83B4"+
+        "\uCFC8\uB9E2\u83B5\uBFCB\u83B6\uC3E2\u83B7\u83B8"+
+        "\u83B9\uB6D2\u83BA\u83BB\uCDC3\uD9EE\uD9F0\u83BC"+
+        "\u83BD\u83BE\uB5B3\u83BF\uB6B5\u83C0\u83C1\u83C2"+
+        "\u83C3\u83C4\uBEA4\u83C5\u83C6\uC8EB\u83C7\u83C8"+
+        "\uC8AB\u83C9\u83CA\uB0CB\uB9AB\uC1F9\uD9E2\u83CB"+
+        "\uC0BC\uB9B2\u83CC\uB9D8\uD0CB\uB1F8\uC6E4\uBEDF"+
+        "\uB5E4\uD7C8\u83CD\uD1F8\uBCE6\uCADE\u83CE\u83CF"+
+        "\uBCBD\uD9E6\uD8E7\u83D0\u83D1\uC4DA\u83D2\u83D3"+
+        "\uB8D4\uC8BD\u83D4\u83D5\uB2E1\uD4D9\u83D6\u83D7"+
+        "\u83D8\u83D9\uC3B0\u83DA\u83DB\uC3E1\uDAA2\uC8DF"+
+        "\u83DC\uD0B4\u83DD\uBEFC\uC5A9\u83DE\u83DF\u83E0"+
+        "\uB9DA\u83E1\uDAA3\u83E2\uD4A9\uDAA4\u83E3\u83E4"+
+        "\u83E5\u83E6\u83E7\uD9FB\uB6AC\u83E8\u83E9\uB7EB"+
+        "\uB1F9\uD9FC\uB3E5\uBEF6\u83EA\uBFF6\uD2B1\uC0E4"+
+        "\u83EB\u83EC\u83ED\uB6B3\uD9FE\uD9FD\u83EE\u83EF"+
+        "\uBEBB\u83F0\u83F1\u83F2\uC6E0\u83F3\uD7BC\uDAA1"+
+        "\u83F4\uC1B9\u83F5\uB5F2\uC1E8\u83F6\u83F7\uBCF5"+
+        "\u83F8\uB4D5\u83F9\u83FA\u83FB\u83FC\u83FD\u83FE"+
+        "\u8440\u8441\u8442\uC1DD\u8443\uC4FD\u8444\u8445"+
+        "\uBCB8\uB7B2\u8446\u8447\uB7EF\u8448\u8449\u844A"+
+        "\u844B\u844C\u844D\uD9EC\u844E\uC6BE\u844F\uBFAD"+
+        "\uBBCB\u8450\u8451\uB5CA\u8452\uDBC9\uD0D7\u8453"+
+        "\uCDB9\uB0BC\uB3F6\uBBF7\uDBCA\uBAAF\u8454\uD4E4"+
+        "\uB5B6\uB5F3\uD8D6\uC8D0\u8455\u8456\uB7D6\uC7D0"+
+        "\uD8D7\u8457\uBFAF\u8458\u8459\uDBBB\uD8D8\u845A"+
+        "\u845B\uD0CC\uBBAE\u845C\u845D\u845E\uEBBE\uC1D0"+
+        "\uC1F5\uD4F2\uB8D5\uB4B4\u845F\uB3F5\u8460\u8461"+
+        "\uC9BE\u8462\u8463\u8464\uC5D0\u8465\u8466\u8467"+
+        "\uC5D9\uC0FB\u8468\uB1F0\u8469\uD8D9\uB9CE\u846A"+
+        "\uB5BD\u846B\u846C\uD8DA\u846D\u846E\uD6C6\uCBA2"+
+        "\uC8AF\uC9B2\uB4CC\uBFCC\u846F\uB9F4\u8470\uD8DB"+
+        "\uD8DC\uB6E7\uBCC1\uCCEA\u8471\u8472\u8473\u8474"+
+        "\u8475\u8476\uCFF7\u8477\uD8DD\uC7B0\u8478\u8479"+
+        "\uB9D0\uBDA3\u847A\u847B\uCCDE\u847C\uC6CA\u847D"+
+        "\u847E\u8480\u8481\u8482\uD8E0\u8483\uD8DE\u8484"+
+        "\u8485\uD8DF\u8486\u8487\u8488\uB0FE\u8489\uBEE7"+
+        "\u848A\uCAA3\uBCF4\u848B\u848C\u848D\u848E\uB8B1"+
+        "\u848F\u8490\uB8EE\u8491\u8492\u8493\u8494\u8495"+
+        "\u8496\u8497\u8498\u8499\u849A\uD8E2\u849B\uBDCB"+
+        "\u849C\uD8E4\uD8E3\u849D\u849E\u849F\u84A0\u84A1"+
+        "\uC5FC\u84A2\u84A3\u84A4\u84A5\u84A6\u84A7\u84A8"+
+        "\uD8E5\u84A9\u84AA\uD8E6\u84AB\u84AC\u84AD\u84AE"+
+        "\u84AF\u84B0\u84B1\uC1A6\u84B2\uC8B0\uB0EC\uB9A6"+
+        "\uBCD3\uCEF1\uDBBD\uC1D3\u84B3\u84B4\u84B5\u84B6"+
+        "\uB6AF\uD6FA\uC5AC\uBDD9\uDBBE\uDBBF\u84B7\u84B8"+
+        "\u84B9\uC0F8\uBEA2\uC0CD\u84BA\u84BB\u84BC\u84BD"+
+        "\u84BE\u84BF\u84C0\u84C1\u84C2\u84C3\uDBC0\uCAC6"+
+        "\u84C4\u84C5\u84C6\uB2AA\u84C7\u84C8\u84C9\uD3C2"+
+        "\u84CA\uC3E3\u84CB\uD1AB\u84CC\u84CD\u84CE\u84CF"+
+        "\uDBC2\u84D0\uC0D5\u84D1\u84D2\u84D3\uDBC3\u84D4"+
+        "\uBFB1\u84D5\u84D6\u84D7\u84D8\u84D9\u84DA\uC4BC"+
+        "\u84DB\u84DC\u84DD\u84DE\uC7DA\u84DF\u84E0\u84E1"+
+        "\u84E2\u84E3\u84E4\u84E5\u84E6\u84E7\u84E8\u84E9"+
+        "\uDBC4\u84EA\u84EB\u84EC\u84ED\u84EE\u84EF\u84F0"+
+        "\u84F1\uD9E8\uC9D7\u84F2\u84F3\u84F4\uB9B4\uCEF0"+
+        "\uD4C8\u84F5\u84F6\u84F7\u84F8\uB0FC\uB4D2\u84F9"+
+        "\uD0D9\u84FA\u84FB\u84FC\u84FD\uD9E9\u84FE\uDECB"+
+        "\uD9EB\u8540\u8541\u8542\u8543\uD8B0\uBBAF\uB1B1"+
+        "\u8544\uB3D7\uD8CE\u8545\u8546\uD4D1\u8547\u8548"+
+        "\uBDB3\uBFEF\u8549\uCFBB\u854A\u854B\uD8D0\u854C"+
+        "\u854D\u854E\uB7CB\u854F\u8550\u8551\uD8D1\u8552"+
+        "\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855A"+
+        "\u855B\uC6A5\uC7F8\uD2BD\u855C\u855D\uD8D2\uC4E4"+
+        "\u855E\uCAAE\u855F\uC7A7\u8560\uD8A6\u8561\uC9FD"+
+        "\uCEE7\uBBDC\uB0EB\u8562\u8563\u8564\uBBAA\uD0AD"+
+        "\u8565\uB1B0\uD7E4\uD7BF\u8566\uB5A5\uC2F4\uC4CF"+
+        "\u8567\u8568\uB2A9\u8569\uB2B7\u856A\uB1E5\uDFB2"+
+        "\uD5BC\uBFA8\uC2AC\uD8D5\uC2B1\u856B\uD8D4\uCED4"+
+        "\u856C\uDAE0\u856D\uCEC0\u856E\u856F\uD8B4\uC3AE"+
+        "\uD3A1\uCEA3\u8570\uBCB4\uC8B4\uC2D1\u8571\uBEED"+
+        "\uD0B6\u8572\uDAE1\u8573\u8574\u8575\u8576\uC7E4"+
+        "\u8577\u8578\uB3A7\u8579\uB6F2\uCCFC\uC0FA\u857A"+
+        "\u857B\uC0F7\u857C\uD1B9\uD1E1\uD8C7\u857D\u857E"+
+        "\u8580\u8581\u8582\u8583\u8584\uB2DE\u8585\u8586"+
+        "\uC0E5\u8587\uBAF1\u8588\u8589\uD8C8\u858A\uD4AD"+
+        "\u858B\u858C\uCFE1\uD8C9\u858D\uD8CA\uCFC3\u858E"+
+        "\uB3F8\uBEC7\u858F\u8590\u8591\u8592\uD8CB\u8593"+
+        "\u8594\u8595\u8596\u8597\u8598\u8599\uDBCC\u859A"+
+        "\u859B\u859C\u859D\uC8A5\u859E\u859F\u85A0\uCFD8"+
+        "\u85A1\uC8FE\uB2CE\u85A2\u85A3\u85A4\u85A5\u85A6"+
+        "\uD3D6\uB2E6\uBCB0\uD3D1\uCBAB\uB7B4\u85A7\u85A8"+
+        "\u85A9\uB7A2\u85AA\u85AB\uCAE5\u85AC\uC8A1\uCADC"+
+        "\uB1E4\uD0F0\u85AD\uC5D1\u85AE\u85AF\u85B0\uDBC5"+
+        "\uB5FE\u85B1\u85B2\uBFDA\uB9C5\uBEE4\uC1ED\u85B3"+
+        "\uDFB6\uDFB5\uD6BB\uBDD0\uD5D9\uB0C8\uB6A3\uBFC9"+
+        "\uCCA8\uDFB3\uCAB7\uD3D2\u85B4\uD8CF\uD2B6\uBAC5"+
+        "\uCBBE\uCCBE\u85B5\uDFB7\uB5F0\uDFB4\u85B6\u85B7"+
+        "\u85B8\uD3F5\u85B9\uB3D4\uB8F7\u85BA\uDFBA\u85BB"+
+        "\uBACF\uBCAA\uB5F5\u85BC\uCDAC\uC3FB\uBAF3\uC0F4"+
+        "\uCDC2\uCFF2\uDFB8\uCFC5\u85BD\uC2C0\uDFB9\uC2F0"+
+        "\u85BE\u85BF\u85C0\uBEFD\u85C1\uC1DF\uCDCC\uD2F7"+
+        "\uB7CD\uDFC1\u85C2\uDFC4\u85C3\u85C4\uB7F1\uB0C9"+
+        "\uB6D6\uB7D4\u85C5\uBAAC\uCCFD\uBFD4\uCBB1\uC6F4"+
+        "\u85C6\uD6A8\uDFC5\u85C7\uCEE2\uB3B3\u85C8\u85C9"+
+        "\uCEFC\uB4B5\u85CA\uCEC7\uBAF0\u85CB\uCEE1\u85CC"+
+        "\uD1BD\u85CD\u85CE\uDFC0\u85CF\u85D0\uB4F4\u85D1"+
+        "\uB3CA\u85D2\uB8E6\uDFBB\u85D3\u85D4\u85D5\u85D6"+
+        "\uC4C5\u85D7\uDFBC\uDFBD\uDFBE\uC5BB\uDFBF\uDFC2"+
+        "\uD4B1\uDFC3\u85D8\uC7BA\uCED8\u85D9\u85DA\u85DB"+
+        "\u85DC\u85DD\uC4D8\u85DE\uDFCA\u85DF\uDFCF\u85E0"+
+        "\uD6DC\u85E1\u85E2\u85E3\u85E4\u85E5\u85E6\u85E7"+
+        "\u85E8\uDFC9\uDFDA\uCEB6\u85E9\uBAC7\uDFCE\uDFC8"+
+        "\uC5DE\u85EA\u85EB\uC9EB\uBAF4\uC3FC\u85EC\u85ED"+
+        "\uBED7\u85EE\uDFC6\u85EF\uDFCD\u85F0\uC5D8\u85F1"+
+        "\u85F2\u85F3\u85F4\uD5A6\uBACD\u85F5\uBECC\uD3BD"+
+        "\uB8C0\u85F6\uD6E4\u85F7\uDFC7\uB9BE\uBFA7\u85F8"+
+        "\u85F9\uC1FC\uDFCB\uDFCC\u85FA\uDFD0\u85FB\u85FC"+
+        "\u85FD\u85FE\u8640\uDFDB\uDFE5\u8641\uDFD7\uDFD6"+
+        "\uD7C9\uDFE3\uDFE4\uE5EB\uD2A7\uDFD2\u8642\uBFA9"+
+        "\u8643\uD4DB\u8644\uBFC8\uDFD4\u8645\u8646\u8647"+
+        "\uCFCC\u8648\u8649\uDFDD\u864A\uD1CA\u864B\uDFDE"+
+        "\uB0A7\uC6B7\uDFD3\u864C\uBAE5\u864D\uB6DF\uCDDB"+
+        "\uB9FE\uD4D5\u864E\u864F\uDFDF\uCFEC\uB0A5\uDFE7"+
+        "\uDFD1\uD1C6\uDFD5\uDFD8\uDFD9\uDFDC\u8650\uBBA9"+
+        "\u8651\uDFE0\uDFE1\u8652\uDFE2\uDFE6\uDFE8\uD3B4"+
+        "\u8653\u8654\u8655\u8656\u8657\uB8E7\uC5B6\uDFEA"+
+        "\uC9DA\uC1A8\uC4C4\u8658\u8659\uBFDE\uCFF8\u865A"+
+        "\u865B\u865C\uD5DC\uDFEE\u865D\u865E\u865F\u8660"+
+        "\u8661\u8662\uB2B8\u8663\uBADF\uDFEC\u8664\uDBC1"+
+        "\u8665\uD1E4\u8666\u8667\u8668\u8669\uCBF4\uB4BD"+
+        "\u866A\uB0A6\u866B\u866C\u866D\u866E\u866F\uDFF1"+
+        "\uCCC6\uDFF2\u8670\u8671\uDFED\u8672\u8673\u8674"+
+        "\u8675\u8676\u8677\uDFE9\u8678\u8679\u867A\u867B"+
+        "\uDFEB\u867C\uDFEF\uDFF0\uBBBD\u867D\u867E\uDFF3"+
+        "\u8680\u8681\uDFF4\u8682\uBBA3\u8683\uCADB\uCEA8"+
+        "\uE0A7\uB3AA\u8684\uE0A6\u8685\u8686\u8687\uE0A1"+
+        "\u8688\u8689\u868A\u868B\uDFFE\u868C\uCDD9\uDFFC"+
+        "\u868D\uDFFA\u868E\uBFD0\uD7C4\u868F\uC9CC\u8690"+
+        "\u8691\uDFF8\uB0A1\u8692\u8693\u8694\u8695\u8696"+
+        "\uDFFD\u8697\u8698\u8699\u869A\uDFFB\uE0A2\u869B"+
+        "\u869C\u869D\u869E\u869F\uE0A8\u86A0\u86A1\u86A2"+
+        "\u86A3\uB7C8\u86A4\u86A5\uC6A1\uC9B6\uC0B2\uDFF5"+
+        "\u86A6\u86A7\uC5BE\u86A8\uD8C4\uDFF9\uC4F6\u86A9"+
+        "\u86AA\u86AB\u86AC\u86AD\u86AE\uE0A3\uE0A4\uE0A5"+
+        "\uD0A5\u86AF\u86B0\uE0B4\uCCE4\u86B1\uE0B1\u86B2"+
+        "\uBFA6\uE0AF\uCEB9\uE0AB\uC9C6\u86B3\u86B4\uC0AE"+
+        "\uE0AE\uBAED\uBAB0\uE0A9\u86B5\u86B6\u86B7\uDFF6"+
+        "\u86B8\uE0B3\u86B9\u86BA\uE0B8\u86BB\u86BC\u86BD"+
+        "\uB4AD\uE0B9\u86BE\u86BF\uCFB2\uBAC8\u86C0\uE0B0"+
+        "\u86C1\u86C2\u86C3\u86C4\u86C5\u86C6\u86C7\uD0FA"+
+        "\u86C8\u86C9\u86CA\u86CB\u86CC\u86CD\u86CE\u86CF"+
+        "\u86D0\uE0AC\u86D1\uD4FB\u86D2\uDFF7\u86D3\uC5E7"+
+        "\u86D4\uE0AD\u86D5\uD3F7\u86D6\uE0B6\uE0B7\u86D7"+
+        "\u86D8\u86D9\u86DA\u86DB\uE0C4\uD0E1\u86DC\u86DD"+
+        "\u86DE\uE0BC\u86DF\u86E0\uE0C9\uE0CA\u86E1\u86E2"+
+        "\u86E3\uE0BE\uE0AA\uC9A4\uE0C1\u86E4\uE0B2\u86E5"+
+        "\u86E6\u86E7\u86E8\u86E9\uCAC8\uE0C3\u86EA\uE0B5"+
+        "\u86EB\uCECB\u86EC\uCBC3\uE0CD\uE0C6\uE0C2\u86ED"+
+        "\uE0CB\u86EE\uE0BA\uE0BF\uE0C0\u86EF\u86F0\uE0C5"+
+        "\u86F1\u86F2\uE0C7\uE0C8\u86F3\uE0CC\u86F4\uE0BB"+
+        "\u86F5\u86F6\u86F7\u86F8\u86F9\uCBD4\uE0D5\u86FA"+
+        "\uE0D6\uE0D2\u86FB\u86FC\u86FD\u86FE\u8740\u8741"+
+        "\uE0D0\uBCCE\u8742\u8743\uE0D1\u8744\uB8C2\uD8C5"+
+        "\u8745\u8746\u8747\u8748\u8749\u874A\u874B\u874C"+
+        "\uD0EA\u874D\u874E\uC2EF\u874F\u8750\uE0CF\uE0BD"+
+        "\u8751\u8752\u8753\uE0D4\uE0D3\u8754\u8755\uE0D7"+
+        "\u8756\u8757\u8758\u8759\uE0DC\uE0D8\u875A\u875B"+
+        "\u875C\uD6F6\uB3B0\u875D\uD7EC\u875E\uCBBB\u875F"+
+        "\u8760\uE0DA\u8761\uCEFB\u8762\u8763\u8764\uBAD9"+
+        "\u8765\u8766\u8767\u8768\u8769\u876A\u876B\u876C"+
+        "\u876D\u876E\u876F\u8770\uE0E1\uE0DD\uD2AD\u8771"+
+        "\u8772\u8773\u8774\u8775\uE0E2\u8776\u8777\uE0DB"+
+        "\uE0D9\uE0DF\u8778\u8779\uE0E0\u877A\u877B\u877C"+
+        "\u877D\u877E\uE0DE\u8780\uE0E4\u8781\u8782\u8783"+
+        "\uC6F7\uD8AC\uD4EB\uE0E6\uCAC9\u8784\u8785\u8786"+
+        "\u8787\uE0E5\u8788\u8789\u878A\u878B\uB8C1\u878C"+
+        "\u878D\u878E\u878F\uE0E7\uE0E8\u8790\u8791\u8792"+
+        "\u8793\u8794\u8795\u8796\u8797\uE0E9\uE0E3\u8798"+
+        "\u8799\u879A\u879B\u879C\u879D\u879E\uBABF\uCCE7"+
+        "\u879F\u87A0\u87A1\uE0EA\u87A2\u87A3\u87A4\u87A5"+
+        "\u87A6\u87A7\u87A8\u87A9\u87AA\u87AB\u87AC\u87AD"+
+        "\u87AE\u87AF\u87B0\uCFF9\u87B1\u87B2\u87B3\u87B4"+
+        "\u87B5\u87B6\u87B7\u87B8\u87B9\u87BA\u87BB\uE0EB"+
+        "\u87BC\u87BD\u87BE\u87BF\u87C0\u87C1\u87C2\uC8C2"+
+        "\u87C3\u87C4\u87C5\u87C6\uBDC0\u87C7\u87C8\u87C9"+
+        "\u87CA\u87CB\u87CC\u87CD\u87CE\u87CF\u87D0\u87D1"+
+        "\u87D2\u87D3\uC4D2\u87D4\u87D5\u87D6\u87D7\u87D8"+
+        "\u87D9\u87DA\u87DB\u87DC\uE0EC\u87DD\u87DE\uE0ED"+
+        "\u87DF\u87E0\uC7F4\uCBC4\u87E1\uE0EE\uBBD8\uD8B6"+
+        "\uD2F2\uE0EF\uCDC5\u87E2\uB6DA\u87E3\u87E4\u87E5"+
+        "\u87E6\u87E7\u87E8\uE0F1\u87E9\uD4B0\u87EA\u87EB"+
+        "\uC0A7\uB4D1\u87EC\u87ED\uCEA7\uE0F0\u87EE\u87EF"+
+        "\u87F0\uE0F2\uB9CC\u87F1\u87F2\uB9FA\uCDBC\uE0F3"+
+        "\u87F3\u87F4\u87F5\uC6D4\uE0F4\u87F6\uD4B2\u87F7"+
+        "\uC8A6\uE0F6\uE0F5\u87F8\u87F9\u87FA\u87FB\u87FC"+
+        "\u87FD\u87FE\u8840\u8841\u8842\u8843\u8844\u8845"+
+        "\u8846\u8847\u8848\u8849\uE0F7\u884A\u884B\uCDC1"+
+        "\u884C\u884D\u884E\uCAA5\u884F\u8850\u8851\u8852"+
+        "\uD4DA\uDBD7\uDBD9\u8853\uDBD8\uB9E7\uDBDC\uDBDD"+
+        "\uB5D8\u8854\u8855\uDBDA\u8856\u8857\u8858\u8859"+
+        "\u885A\uDBDB\uB3A1\uDBDF\u885B\u885C\uBBF8\u885D"+
+        "\uD6B7\u885E\uDBE0\u885F\u8860\u8861\u8862\uBEF9"+
+        "\u8863\u8864\uB7BB\u8865\uDBD0\uCCAE\uBFB2\uBBB5"+
+        "\uD7F8\uBFD3\u8866\u8867\u8868\u8869\u886A\uBFE9"+
+        "\u886B\u886C\uBCE1\uCCB3\uDBDE\uB0D3\uCEEB\uB7D8"+
+        "\uD7B9\uC6C2\u886D\u886E\uC0A4\u886F\uCCB9\u8870"+
+        "\uDBE7\uDBE1\uC6BA\uDBE3\u8871\uDBE8\u8872\uC5F7"+
+        "\u8873\u8874\u8875\uDBEA\u8876\u8877\uDBE9\uBFC0"+
+        "\u8878\u8879\u887A\uDBE6\uDBE5\u887B\u887C\u887D"+
+        "\u887E\u8880\uB4B9\uC0AC\uC2A2\uDBE2\uDBE4\u8881"+
+        "\u8882\u8883\u8884\uD0CD\uDBED\u8885\u8886\u8887"+
+        "\u8888\u8889\uC0DD\uDBF2\u888A\u888B\u888C\u888D"+
+        "\u888E\u888F\u8890\uB6E2\u8891\u8892\u8893\u8894"+
+        "\uDBF3\uDBD2\uB9B8\uD4AB\uDBEC\u8895\uBFD1\uDBF0"+
+        "\u8896\uDBD1\u8897\uB5E6\u8898\uDBEB\uBFE5\u8899"+
+        "\u889A\u889B\uDBEE\u889C\uDBF1\u889D\u889E\u889F"+
+        "\uDBF9\u88A0\u88A1\u88A2\u88A3\u88A4\u88A5\u88A6"+
+        "\u88A7\u88A8\uB9A1\uB0A3\u88A9\u88AA\u88AB\u88AC"+
+        "\u88AD\u88AE\u88AF\uC2F1\u88B0\u88B1\uB3C7\uDBEF"+
+        "\u88B2\u88B3\uDBF8\u88B4\uC6D2\uDBF4\u88B5\u88B6"+
+        "\uDBF5\uDBF7\uDBF6\u88B7\u88B8\uDBFE\u88B9\uD3F2"+
+        "\uB2BA\u88BA\u88BB\u88BC\uDBFD\u88BD\u88BE\u88BF"+
+        "\u88C0\u88C1\u88C2\u88C3\u88C4\uDCA4\u88C5\uDBFB"+
+        "\u88C6\u88C7\u88C8\u88C9\uDBFA\u88CA\u88CB\u88CC"+
+        "\uDBFC\uC5E0\uBBF9\u88CD\u88CE\uDCA3\u88CF\u88D0"+
+        "\uDCA5\u88D1\uCCC3\u88D2\u88D3\u88D4\uB6D1\uDDC0"+
+        "\u88D5\u88D6\u88D7\uDCA1\u88D8\uDCA2\u88D9\u88DA"+
+        "\u88DB\uC7B5\u88DC\u88DD\u88DE\uB6E9\u88DF\u88E0"+
+        "\u88E1\uDCA7\u88E2\u88E3\u88E4\u88E5\uDCA6\u88E6"+
+        "\uDCA9\uB1A4\u88E7\u88E8\uB5CC\u88E9\u88EA\u88EB"+
+        "\u88EC\u88ED\uBFB0\u88EE\u88EF\u88F0\u88F1\u88F2"+
+        "\uD1DF\u88F3\u88F4\u88F5\u88F6\uB6C2\u88F7\u88F8"+
+        "\u88F9\u88FA\u88FB\u88FC\u88FD\u88FE\u8940\u8941"+
+        "\u8942\u8943\u8944\u8945\uDCA8\u8946\u8947\u8948"+
+        "\u8949\u894A\u894B\u894C\uCBFA\uEBF3\u894D\u894E"+
+        "\u894F\uCBDC\u8950\u8951\uCBFE\u8952\u8953\u8954"+
+        "\uCCC1\u8955\u8956\u8957\u8958\u8959\uC8FB\u895A"+
+        "\u895B\u895C\u895D\u895E\u895F\uDCAA\u8960\u8961"+
+        "\u8962\u8963\u8964\uCCEE\uDCAB\u8965\u8966\u8967"+
+        "\u8968\u8969\u896A\u896B\u896C\u896D\u896E\u896F"+
+        "\u8970\u8971\u8972\u8973\u8974\u8975\uDBD3\u8976"+
+        "\uDCAF\uDCAC\u8977\uBEB3\u8978\uCAFB\u8979\u897A"+
+        "\u897B\uDCAD\u897C\u897D\u897E\u8980\u8981\u8982"+
+        "\u8983\u8984\uC9CA\uC4B9\u8985\u8986\u8987\u8988"+
+        "\u8989\uC7BD\uDCAE\u898A\u898B\u898C\uD4F6\uD0E6"+
+        "\u898D\u898E\u898F\u8990\u8991\u8992\u8993\u8994"+
+        "\uC4AB\uB6D5\u8995\u8996\u8997\u8998\u8999\u899A"+
+        "\u899B\u899C\u899D\u899E\u899F\u89A0\u89A1\u89A2"+
+        "\u89A3\u89A4\u89A5\u89A6\uDBD4\u89A7\u89A8\u89A9"+
+        "\u89AA\uB1DA\u89AB\u89AC\u89AD\uDBD5\u89AE\u89AF"+
+        "\u89B0\u89B1\u89B2\u89B3\u89B4\u89B5\u89B6\u89B7"+
+        "\u89B8\uDBD6\u89B9\u89BA\u89BB\uBABE\u89BC\u89BD"+
+        "\u89BE\u89BF\u89C0\u89C1\u89C2\u89C3\u89C4\u89C5"+
+        "\u89C6\u89C7\u89C8\u89C9\uC8C0\u89CA\u89CB\u89CC"+
+        "\u89CD\u89CE\u89CF\uCABF\uC8C9\u89D0\uD7B3\u89D1"+
+        "\uC9F9\u89D2\u89D3\uBFC7\u89D4\u89D5\uBAF8\u89D6"+
+        "\u89D7\uD2BC\u89D8\u89D9\u89DA\u89DB\u89DC\u89DD"+
+        "\u89DE\u89DF\uE2BA\u89E0\uB4A6\u89E1\u89E2\uB1B8"+
+        "\u89E3\u89E4\u89E5\u89E6\u89E7\uB8B4\u89E8\uCFC4"+
+        "\u89E9\u89EA\u89EB\u89EC\uD9E7\uCFA6\uCDE2\u89ED"+
+        "\u89EE\uD9ED\uB6E0\u89EF\uD2B9\u89F0\u89F1\uB9BB"+
+        "\u89F2\u89F3\u89F4\u89F5\uE2B9\uE2B7\u89F6\uB4F3"+
+        "\u89F7\uCCEC\uCCAB\uB7F2\u89F8\uD8B2\uD1EB\uBABB"+
+        "\u89F9\uCAA7\u89FA\u89FB\uCDB7\u89FC\u89FD\uD2C4"+
+        "\uBFE4\uBCD0\uB6E1\u89FE\uDEC5\u8A40\u8A41\u8A42"+
+        "\u8A43\uDEC6\uDBBC\u8A44\uD1D9\u8A45\u8A46\uC6E6"+
+        "\uC4CE\uB7EE\u8A47\uB7DC\u8A48\u8A49\uBFFC\uD7E0"+
+        "\u8A4A\uC6F5\u8A4B\u8A4C\uB1BC\uDEC8\uBDB1\uCCD7"+
+        "\uDECA\u8A4D\uDEC9\u8A4E\u8A4F\u8A50\u8A51\u8A52"+
+        "\uB5EC\u8A53\uC9DD\u8A54\u8A55\uB0C2\u8A56\u8A57"+
+        "\u8A58\u8A59\u8A5A\u8A5B\u8A5C\u8A5D\u8A5E\u8A5F"+
+        "\u8A60\u8A61\u8A62\uC5AE\uC5AB\u8A63\uC4CC\u8A64"+
+        "\uBCE9\uCBFD\u8A65\u8A66\u8A67\uBAC3\u8A68\u8A69"+
+        "\u8A6A\uE5F9\uC8E7\uE5FA\uCDFD\u8A6B\uD7B1\uB8BE"+
+        "\uC2E8\u8A6C\uC8D1\u8A6D\u8A6E\uE5FB\u8A6F\u8A70"+
+        "\u8A71\u8A72\uB6CA\uBCCB\u8A73\u8A74\uD1FD\uE6A1"+
+        "\u8A75\uC3EE\u8A76\u8A77\u8A78\u8A79\uE6A4\u8A7A"+
+        "\u8A7B\u8A7C\u8A7D\uE5FE\uE6A5\uCDD7\u8A7E\u8A80"+
+        "\uB7C1\uE5FC\uE5FD\uE6A3\u8A81\u8A82\uC4DD\uE6A8"+
+        "\u8A83\u8A84\uE6A7\u8A85\u8A86\u8A87\u8A88\u8A89"+
+        "\u8A8A\uC3C3\u8A8B\uC6DE\u8A8C\u8A8D\uE6AA\u8A8E"+
+        "\u8A8F\u8A90\u8A91\u8A92\u8A93\u8A94\uC4B7\u8A95"+
+        "\u8A96\u8A97\uE6A2\uCABC\u8A98\u8A99\u8A9A\u8A9B"+
+        "\uBDE3\uB9C3\uE6A6\uD0D5\uCEAF\u8A9C\u8A9D\uE6A9"+
+        "\uE6B0\u8A9E\uD2A6\u8A9F\uBDAA\uE6AD\u8AA0\u8AA1"+
+        "\u8AA2\u8AA3\u8AA4\uE6AF\u8AA5\uC0D1\u8AA6\u8AA7"+
+        "\uD2CC\u8AA8\u8AA9\u8AAA\uBCA7\u8AAB\u8AAC\u8AAD"+
+        "\u8AAE\u8AAF\u8AB0\u8AB1\u8AB2\u8AB3\u8AB4\u8AB5"+
+        "\u8AB6\uE6B1\u8AB7\uD2F6\u8AB8\u8AB9\u8ABA\uD7CB"+
+        "\u8ABB\uCDFE\u8ABC\uCDDE\uC2A6\uE6AB\uE6AC\uBDBF"+
+        "\uE6AE\uE6B3\u8ABD\u8ABE\uE6B2\u8ABF\u8AC0\u8AC1"+
+        "\u8AC2\uE6B6\u8AC3\uE6B8\u8AC4\u8AC5\u8AC6\u8AC7"+
+        "\uC4EF\u8AC8\u8AC9\u8ACA\uC4C8\u8ACB\u8ACC\uBEEA"+
+        "\uC9EF\u8ACD\u8ACE\uE6B7\u8ACF\uB6F0\u8AD0\u8AD1"+
+        "\u8AD2\uC3E4\u8AD3\u8AD4\u8AD5\u8AD6\u8AD7\u8AD8"+
+        "\u8AD9\uD3E9\uE6B4\u8ADA\uE6B5\u8ADB\uC8A2\u8ADC"+
+        "\u8ADD\u8ADE\u8ADF\u8AE0\uE6BD\u8AE1\u8AE2\u8AE3"+
+        "\uE6B9\u8AE4\u8AE5\u8AE6\u8AE7\u8AE8\uC6C5\u8AE9"+
+        "\u8AEA\uCDF1\uE6BB\u8AEB\u8AEC\u8AED\u8AEE\u8AEF"+
+        "\u8AF0\u8AF1\u8AF2\u8AF3\u8AF4\uE6BC\u8AF5\u8AF6"+
+        "\u8AF7\u8AF8\uBBE9\u8AF9\u8AFA\u8AFB\u8AFC\u8AFD"+
+        "\u8AFE\u8B40\uE6BE\u8B41\u8B42\u8B43\u8B44\uE6BA"+
+        "\u8B45\u8B46\uC0B7\u8B47\u8B48\u8B49\u8B4A\u8B4B"+
+        "\u8B4C\u8B4D\u8B4E\u8B4F\uD3A4\uE6BF\uC9F4\uE6C3"+
+        "\u8B50\u8B51\uE6C4\u8B52\u8B53\u8B54\u8B55\uD0F6"+
+        "\u8B56\u8B57\u8B58\u8B59\u8B5A\u8B5B\u8B5C\u8B5D"+
+        "\u8B5E\u8B5F\u8B60\u8B61\u8B62\u8B63\u8B64\u8B65"+
+        "\u8B66\u8B67\uC3BD\u8B68\u8B69\u8B6A\u8B6B\u8B6C"+
+        "\u8B6D\u8B6E\uC3C4\uE6C2\u8B6F\u8B70\u8B71\u8B72"+
+        "\u8B73\u8B74\u8B75\u8B76\u8B77\u8B78\u8B79\u8B7A"+
+        "\u8B7B\u8B7C\uE6C1\u8B7D\u8B7E\u8B80\u8B81\u8B82"+
+        "\u8B83\u8B84\uE6C7\uCFB1\u8B85\uEBF4\u8B86\u8B87"+
+        "\uE6CA\u8B88\u8B89\u8B8A\u8B8B\u8B8C\uE6C5\u8B8D"+
+        "\u8B8E\uBCDE\uC9A9\u8B8F\u8B90\u8B91\u8B92\u8B93"+
+        "\u8B94\uBCB5\u8B95\u8B96\uCFD3\u8B97\u8B98\u8B99"+
+        "\u8B9A\u8B9B\uE6C8\u8B9C\uE6C9\u8B9D\uE6CE\u8B9E"+
+        "\uE6D0\u8B9F\u8BA0\u8BA1\uE6D1\u8BA2\u8BA3\u8BA4"+
+        "\uE6CB\uB5D5\u8BA5\uE6CC\u8BA6\u8BA7\uE6CF\u8BA8"+
+        "\u8BA9\uC4DB\u8BAA\uE6C6\u8BAB\u8BAC\u8BAD\u8BAE"+
+        "\u8BAF\uE6CD\u8BB0\u8BB1\u8BB2\u8BB3\u8BB4\u8BB5"+
+        "\u8BB6\u8BB7\u8BB8\u8BB9\u8BBA\u8BBB\u8BBC\u8BBD"+
+        "\u8BBE\u8BBF\u8BC0\u8BC1\u8BC2\u8BC3\u8BC4\u8BC5"+
+        "\u8BC6\uE6D2\u8BC7\u8BC8\u8BC9\u8BCA\u8BCB\u8BCC"+
+        "\u8BCD\u8BCE\u8BCF\u8BD0\u8BD1\u8BD2\uE6D4\uE6D3"+
+        "\u8BD3\u8BD4\u8BD5\u8BD6\u8BD7\u8BD8\u8BD9\u8BDA"+
+        "\u8BDB\u8BDC\u8BDD\u8BDE\u8BDF\u8BE0\u8BE1\u8BE2"+
+        "\u8BE3\u8BE4\u8BE5\u8BE6\u8BE7\u8BE8\u8BE9\u8BEA"+
+        "\u8BEB\u8BEC\uE6D5\u8BED\uD9F8\u8BEE\u8BEF\uE6D6"+
+        "\u8BF0\u8BF1\u8BF2\u8BF3\u8BF4\u8BF5\u8BF6\u8BF7"+
+        "\uE6D7\u8BF8\u8BF9\u8BFA\u8BFB\u8BFC\u8BFD\u8BFE"+
+        "\u8C40\u8C41\u8C42\u8C43\u8C44\u8C45\u8C46\u8C47"+
+        "\uD7D3\uE6DD\u8C48\uE6DE\uBFD7\uD4D0\u8C49\uD7D6"+
+        "\uB4E6\uCBEF\uE6DA\uD8C3\uD7CE\uD0A2\u8C4A\uC3CF"+
+        "\u8C4B\u8C4C\uE6DF\uBCBE\uB9C2\uE6DB\uD1A7\u8C4D"+
+        "\u8C4E\uBAA2\uC2CF\u8C4F\uD8AB\u8C50\u8C51\u8C52"+
+        "\uCAEB\uE5EE\u8C53\uE6DC\u8C54\uB7F5\u8C55\u8C56"+
+        "\u8C57\u8C58\uC8E6\u8C59\u8C5A\uC4F5\u8C5B\u8C5C"+
+        "\uE5B2\uC4FE\u8C5D\uCBFC\uE5B3\uD5AC\u8C5E\uD3EE"+
+        "\uCAD8\uB0B2\u8C5F\uCBCE\uCDEA\u8C60\u8C61\uBAEA"+
+        "\u8C62\u8C63\u8C64\uE5B5\u8C65\uE5B4\u8C66\uD7DA"+
+        "\uB9D9\uD6E6\uB6A8\uCDF0\uD2CB\uB1A6\uCAB5\u8C67"+
+        "\uB3E8\uC9F3\uBFCD\uD0FB\uCAD2\uE5B6\uBBC2\u8C68"+
+        "\u8C69\u8C6A\uCFDC\uB9AC\u8C6B\u8C6C\u8C6D\u8C6E"+
+        "\uD4D7\u8C6F\u8C70\uBAA6\uD1E7\uCFFC\uBCD2\u8C71"+
+        "\uE5B7\uC8DD\u8C72\u8C73\u8C74\uBFED\uB1F6\uCBDE"+
+        "\u8C75\u8C76\uBCC5\u8C77\uBCC4\uD2FA\uC3DC\uBFDC"+
+        "\u8C78\u8C79\u8C7A\u8C7B\uB8BB\u8C7C\u8C7D\u8C7E"+
+        "\uC3C2\u8C80\uBAAE\uD4A2\u8C81\u8C82\u8C83\u8C84"+
+        "\u8C85\u8C86\u8C87\u8C88\u8C89\uC7DE\uC4AF\uB2EC"+
+        "\u8C8A\uB9D1\u8C8B\u8C8C\uE5BB\uC1C8\u8C8D\u8C8E"+
+        "\uD5AF\u8C8F\u8C90\u8C91\u8C92\u8C93\uE5BC\u8C94"+
+        "\uE5BE\u8C95\u8C96\u8C97\u8C98\u8C99\u8C9A\u8C9B"+
+        "\uB4E7\uB6D4\uCBC2\uD1B0\uB5BC\u8C9C\u8C9D\uCAD9"+
+        "\u8C9E\uB7E2\u8C9F\u8CA0\uC9E4\u8CA1\uBDAB\u8CA2"+
+        "\u8CA3\uCEBE\uD7F0\u8CA4\u8CA5\u8CA6\u8CA7\uD0A1"+
+        "\u8CA8\uC9D9\u8CA9\u8CAA\uB6FB\uE6D8\uBCE2\u8CAB"+
+        "\uB3BE\u8CAC\uC9D0\u8CAD\uE6D9\uB3A2\u8CAE\u8CAF"+
+        "\u8CB0\u8CB1\uDECC\u8CB2\uD3C8\uDECD\u8CB3\uD2A2"+
+        "\u8CB4\u8CB5\u8CB6\u8CB7\uDECE\u8CB8\u8CB9\u8CBA"+
+        "\u8CBB\uBECD\u8CBC\u8CBD\uDECF\u8CBE\u8CBF\u8CC0"+
+        "\uCAAC\uD2FC\uB3DF\uE5EA\uC4E1\uBEA1\uCEB2\uC4F2"+
+        "\uBED6\uC6A8\uB2E3\u8CC1\u8CC2\uBED3\u8CC3\u8CC4"+
+        "\uC7FC\uCCEB\uBDEC\uCEDD\u8CC5\u8CC6\uCABA\uC6C1"+
+        "\uE5EC\uD0BC\u8CC7\u8CC8\u8CC9\uD5B9\u8CCA\u8CCB"+
+        "\u8CCC\uE5ED\u8CCD\u8CCE\u8CCF\u8CD0\uCAF4\u8CD1"+
+        "\uCDC0\uC2C5\u8CD2\uE5EF\u8CD3\uC2C4\uE5F0\u8CD4"+
+        "\u8CD5\u8CD6\u8CD7\u8CD8\u8CD9\u8CDA\uE5F8\uCDCD"+
+        "\u8CDB\uC9BD\u8CDC\u8CDD\u8CDE\u8CDF\u8CE0\u8CE1"+
+        "\u8CE2\uD2D9\uE1A8\u8CE3\u8CE4\u8CE5\u8CE6\uD3EC"+
+        "\u8CE7\uCBEA\uC6F1\u8CE8\u8CE9\u8CEA\u8CEB\u8CEC"+
+        "\uE1AC\u8CED\u8CEE\u8CEF\uE1A7\uE1A9\u8CF0\u8CF1"+
+        "\uE1AA\uE1AF\u8CF2\u8CF3\uB2ED\u8CF4\uE1AB\uB8DA"+
+        "\uE1AD\uE1AE\uE1B0\uB5BA\uE1B1\u8CF5\u8CF6\u8CF7"+
+        "\u8CF8\u8CF9\uE1B3\uE1B8\u8CFA\u8CFB\u8CFC\u8CFD"+
+        "\u8CFE\uD1D2\u8D40\uE1B6\uE1B5\uC1EB\u8D41\u8D42"+
+        "\u8D43\uE1B7\u8D44\uD4C0\u8D45\uE1B2\u8D46\uE1BA"+
+        "\uB0B6\u8D47\u8D48\u8D49\u8D4A\uE1B4\u8D4B\uBFF9"+
+        "\u8D4C\uE1B9\u8D4D\u8D4E\uE1BB\u8D4F\u8D50\u8D51"+
+        "\u8D52\u8D53\u8D54\uE1BE\u8D55\u8D56\u8D57\u8D58"+
+        "\u8D59\u8D5A\uE1BC\u8D5B\u8D5C\u8D5D\u8D5E\u8D5F"+
+        "\u8D60\uD6C5\u8D61\u8D62\u8D63\u8D64\u8D65\u8D66"+
+        "\u8D67\uCFBF\u8D68\u8D69\uE1BD\uE1BF\uC2CD\u8D6A"+
+        "\uB6EB\u8D6B\uD3F8\u8D6C\u8D6D\uC7CD\u8D6E\u8D6F"+
+        "\uB7E5\u8D70\u8D71\u8D72\u8D73\u8D74\u8D75\u8D76"+
+        "\u8D77\u8D78\u8D79\uBEFE\u8D7A\u8D7B\u8D7C\u8D7D"+
+        "\u8D7E\u8D80\uE1C0\uE1C1\u8D81\u8D82\uE1C7\uB3E7"+
+        "\u8D83\u8D84\u8D85\u8D86\u8D87\u8D88\uC6E9\u8D89"+
+        "\u8D8A\u8D8B\u8D8C\u8D8D\uB4DE\u8D8E\uD1C2\u8D8F"+
+        "\u8D90\u8D91\u8D92\uE1C8\u8D93\u8D94\uE1C6\u8D95"+
+        "\u8D96\u8D97\u8D98\u8D99\uE1C5\u8D9A\uE1C3\uE1C2"+
+        "\u8D9B\uB1C0\u8D9C\u8D9D\u8D9E\uD5B8\uE1C4\u8D9F"+
+        "\u8DA0\u8DA1\u8DA2\u8DA3\uE1CB\u8DA4\u8DA5\u8DA6"+
+        "\u8DA7\u8DA8\u8DA9\u8DAA\u8DAB\uE1CC\uE1CA\u8DAC"+
+        "\u8DAD\u8DAE\u8DAF\u8DB0\u8DB1\u8DB2\u8DB3\uEFFA"+
+        "\u8DB4\u8DB5\uE1D3\uE1D2\uC7B6\u8DB6\u8DB7\u8DB8"+
+        "\u8DB9\u8DBA\u8DBB\u8DBC\u8DBD\u8DBE\u8DBF\u8DC0"+
+        "\uE1C9\u8DC1\u8DC2\uE1CE\u8DC3\uE1D0\u8DC4\u8DC5"+
+        "\u8DC6\u8DC7\u8DC8\u8DC9\u8DCA\u8DCB\u8DCC\u8DCD"+
+        "\u8DCE\uE1D4\u8DCF\uE1D1\uE1CD\u8DD0\u8DD1\uE1CF"+
+        "\u8DD2\u8DD3\u8DD4\u8DD5\uE1D5\u8DD6\u8DD7\u8DD8"+
+        "\u8DD9\u8DDA\u8DDB\u8DDC\u8DDD\u8DDE\u8DDF\u8DE0"+
+        "\u8DE1\u8DE2\uE1D6\u8DE3\u8DE4\u8DE5\u8DE6\u8DE7"+
+        "\u8DE8\u8DE9\u8DEA\u8DEB\u8DEC\u8DED\u8DEE\u8DEF"+
+        "\u8DF0\u8DF1\u8DF2\u8DF3\u8DF4\u8DF5\u8DF6\u8DF7"+
+        "\u8DF8\uE1D7\u8DF9\u8DFA\u8DFB\uE1D8\u8DFC\u8DFD"+
+        "\u8DFE\u8E40\u8E41\u8E42\u8E43\u8E44\u8E45\u8E46"+
+        "\u8E47\u8E48\u8E49\u8E4A\u8E4B\u8E4C\u8E4D\u8E4E"+
+        "\u8E4F\u8E50\u8E51\u8E52\u8E53\u8E54\u8E55\uE1DA"+
+        "\u8E56\u8E57\u8E58\u8E59\u8E5A\u8E5B\u8E5C\u8E5D"+
+        "\u8E5E\u8E5F\u8E60\u8E61\u8E62\uE1DB\u8E63\u8E64"+
+        "\u8E65\u8E66\u8E67\u8E68\u8E69\uCEA1\u8E6A\u8E6B"+
+        "\u8E6C\u8E6D\u8E6E\u8E6F\u8E70\u8E71\u8E72\u8E73"+
+        "\u8E74\u8E75\u8E76\uE7DD\u8E77\uB4A8\uD6DD\u8E78"+
+        "\u8E79\uD1B2\uB3B2\u8E7A\u8E7B\uB9A4\uD7F3\uC7C9"+
+        "\uBEDE\uB9AE\u8E7C\uCED7\u8E7D\u8E7E\uB2EE\uDBCF"+
+        "\u8E80\uBCBA\uD2D1\uCBC8\uB0CD\u8E81\u8E82\uCFEF"+
+        "\u8E83\u8E84\u8E85\u8E86\u8E87\uD9E3\uBDED\u8E88"+
+        "\u8E89\uB1D2\uCAD0\uB2BC\u8E8A\uCBA7\uB7AB\u8E8B"+
+        "\uCAA6\u8E8C\u8E8D\u8E8E\uCFA3\u8E8F\u8E90\uE0F8"+
+        "\uD5CA\uE0FB\u8E91\u8E92\uE0FA\uC5C1\uCCFB\u8E93"+
+        "\uC1B1\uE0F9\uD6E3\uB2AF\uD6C4\uB5DB\u8E94\u8E95"+
+        "\u8E96\u8E97\u8E98\u8E99\u8E9A\u8E9B\uB4F8\uD6A1"+
+        "\u8E9C\u8E9D\u8E9E\u8E9F\u8EA0\uCFAF\uB0EF\u8EA1"+
+        "\u8EA2\uE0FC\u8EA3\u8EA4\u8EA5\u8EA6\u8EA7\uE1A1"+
+        "\uB3A3\u8EA8\u8EA9\uE0FD\uE0FE\uC3B1\u8EAA\u8EAB"+
+        "\u8EAC\u8EAD\uC3DD\u8EAE\uE1A2\uB7F9\u8EAF\u8EB0"+
+        "\u8EB1\u8EB2\u8EB3\u8EB4\uBBCF\u8EB5\u8EB6\u8EB7"+
+        "\u8EB8\u8EB9\u8EBA\u8EBB\uE1A3\uC4BB\u8EBC\u8EBD"+
+        "\u8EBE\u8EBF\u8EC0\uE1A4\u8EC1\u8EC2\uE1A5\u8EC3"+
+        "\u8EC4\uE1A6\uB4B1\u8EC5\u8EC6\u8EC7\u8EC8\u8EC9"+
+        "\u8ECA\u8ECB\u8ECC\u8ECD\u8ECE\u8ECF\u8ED0\u8ED1"+
+        "\u8ED2\u8ED3\uB8C9\uC6BD\uC4EA\u8ED4\uB2A2\u8ED5"+
+        "\uD0D2\u8ED6\uE7DB\uBBC3\uD3D7\uD3C4\u8ED7\uB9E3"+
+        "\uE2CF\u8ED8\u8ED9\u8EDA\uD7AF\u8EDB\uC7EC\uB1D3"+
+        "\u8EDC\u8EDD\uB4B2\uE2D1\u8EDE\u8EDF\u8EE0\uD0F2"+
+        "\uC2AE\uE2D0\u8EE1\uBFE2\uD3A6\uB5D7\uE2D2\uB5EA"+
+        "\u8EE2\uC3ED\uB8FD\u8EE3\uB8AE\u8EE4\uC5D3\uB7CF"+
+        "\uE2D4\u8EE5\u8EE6\u8EE7\u8EE8\uE2D3\uB6C8\uD7F9"+
+        "\u8EE9\u8EEA\u8EEB\u8EEC\u8EED\uCDA5\u8EEE\u8EEF"+
+        "\u8EF0\u8EF1\u8EF2\uE2D8\u8EF3\uE2D6\uCAFC\uBFB5"+
+        "\uD3B9\uE2D5\u8EF4\u8EF5\u8EF6\u8EF7\uE2D7\u8EF8"+
+        "\u8EF9\u8EFA\u8EFB\u8EFC\u8EFD\u8EFE\u8F40\u8F41"+
+        "\u8F42\uC1AE\uC0C8\u8F43\u8F44\u8F45\u8F46\u8F47"+
+        "\u8F48\uE2DB\uE2DA\uC0AA\u8F49\u8F4A\uC1CE\u8F4B"+
+        "\u8F4C\u8F4D\u8F4E\uE2DC\u8F4F\u8F50\u8F51\u8F52"+
+        "\u8F53\u8F54\u8F55\u8F56\u8F57\u8F58\u8F59\u8F5A"+
+        "\uE2DD\u8F5B\uE2DE\u8F5C\u8F5D\u8F5E\u8F5F\u8F60"+
+        "\u8F61\u8F62\u8F63\u8F64\uDBC8\u8F65\uD1D3\uCDA2"+
+        "\u8F66\u8F67\uBDA8\u8F68\u8F69\u8F6A\uDEC3\uD8A5"+
+        "\uBFAA\uDBCD\uD2EC\uC6FA\uC5AA\u8F6B\u8F6C\u8F6D"+
+        "\uDEC4\u8F6E\uB1D7\uDFAE\u8F6F\u8F70\u8F71\uCABD"+
+        "\u8F72\uDFB1\u8F73\uB9AD\u8F74\uD2FD\u8F75\uB8A5"+
+        "\uBAEB\u8F76\u8F77\uB3DA\u8F78\u8F79\u8F7A\uB5DC"+
+        "\uD5C5\u8F7B\u8F7C\u8F7D\u8F7E\uC3D6\uCFD2\uBBA1"+
+        "\u8F80\uE5F3\uE5F2\u8F81\u8F82\uE5F4\u8F83\uCDE4"+
+        "\u8F84\uC8F5\u8F85\u8F86\u8F87\u8F88\u8F89\u8F8A"+
+        "\u8F8B\uB5AF\uC7BF\u8F8C\uE5F6\u8F8D\u8F8E\u8F8F"+
+        "\uECB0\u8F90\u8F91\u8F92\u8F93\u8F94\u8F95\u8F96"+
+        "\u8F97\u8F98\u8F99\u8F9A\u8F9B\u8F9C\u8F9D\u8F9E"+
+        "\uE5E6\u8F9F\uB9E9\uB5B1\u8FA0\uC2BC\uE5E8\uE5E7"+
+        "\uE5E9\u8FA1\u8FA2\u8FA3\u8FA4\uD2CD\u8FA5\u8FA6"+
+        "\u8FA7\uE1EA\uD0CE\u8FA8\uCDAE\u8FA9\uD1E5\u8FAA"+
+        "\u8FAB\uB2CA\uB1EB\u8FAC\uB1F2\uC5ED\u8FAD\u8FAE"+
+        "\uD5C3\uD3B0\u8FAF\uE1DC\u8FB0\u8FB1\u8FB2\uE1DD"+
+        "\u8FB3\uD2DB\u8FB4\uB3B9\uB1CB\u8FB5\u8FB6\u8FB7"+
+        "\uCDF9\uD5F7\uE1DE\u8FB8\uBEB6\uB4FD\u8FB9\uE1DF"+
+        "\uBADC\uE1E0\uBBB2\uC2C9\uE1E1\u8FBA\u8FBB\u8FBC"+
+        "\uD0EC\u8FBD\uCDBD\u8FBE\u8FBF\uE1E2\u8FC0\uB5C3"+
+        "\uC5C7\uE1E3\u8FC1\u8FC2\uE1E4\u8FC3\u8FC4\u8FC5"+
+        "\u8FC6\uD3F9\u8FC7\u8FC8\u8FC9\u8FCA\u8FCB\u8FCC"+
+        "\uE1E5\u8FCD\uD1AD\u8FCE\u8FCF\uE1E6\uCEA2\u8FD0"+
+        "\u8FD1\u8FD2\u8FD3\u8FD4\u8FD5\uE1E7\u8FD6\uB5C2"+
+        "\u8FD7\u8FD8\u8FD9\u8FDA\uE1E8\uBBD5\u8FDB\u8FDC"+
+        "\u8FDD\u8FDE\u8FDF\uD0C4\uE2E0\uB1D8\uD2E4\u8FE0"+
+        "\u8FE1\uE2E1\u8FE2\u8FE3\uBCC9\uC8CC\u8FE4\uE2E3"+
+        "\uECFE\uECFD\uDFAF\u8FE5\u8FE6\u8FE7\uE2E2\uD6BE"+
+        "\uCDFC\uC3A6\u8FE8\u8FE9\u8FEA\uE3C3\u8FEB\u8FEC"+
+        "\uD6D2\uE2E7\u8FED\u8FEE\uE2E8\u8FEF\u8FF0\uD3C7"+
+        "\u8FF1\u8FF2\uE2EC\uBFEC\u8FF3\uE2ED\uE2E5\u8FF4"+
+        "\u8FF5\uB3C0\u8FF6\u8FF7\u8FF8\uC4EE\u8FF9\u8FFA"+
+        "\uE2EE\u8FFB\u8FFC\uD0C3\u8FFD\uBAF6\uE2E9\uB7DE";
+
+    private final static String innerEncoderIndex6=
+        "\uBBB3\uCCAC\uCBCB\uE2E4\uE2E6\uE2EA\uE2EB\u8FFE"+
+        "\u9040\u9041\uE2F7\u9042\u9043\uE2F4\uD4F5\uE2F3"+
+        "\u9044\u9045\uC5AD\u9046\uD5FA\uC5C2\uB2C0\u9047"+
+        "\u9048\uE2EF\u9049\uE2F2\uC1AF\uCBBC\u904A\u904B"+
+        "\uB5A1\uE2F9\u904C\u904D\u904E\uBCB1\uE2F1\uD0D4"+
+        "\uD4B9\uE2F5\uB9D6\uE2F6\u904F\u9050\u9051\uC7D3"+
+        "\u9052\u9053\u9054\u9055\u9056\uE2F0\u9057\u9058"+
+        "\u9059\u905A\u905B\uD7DC\uEDA1\u905C\u905D\uE2F8"+
+        "\u905E\uEDA5\uE2FE\uCAD1\u905F\u9060\u9061\u9062"+
+        "\u9063\u9064\u9065\uC1B5\u9066\uBBD0\u9067\u9068"+
+        "\uBFD6\u9069\uBAE3\u906A\u906B\uCBA1\u906C\u906D"+
+        "\u906E\uEDA6\uEDA3\u906F\u9070\uEDA2\u9071\u9072"+
+        "\u9073\u9074\uBBD6\uEDA7\uD0F4\u9075\u9076\uEDA4"+
+        "\uBADE\uB6F7\uE3A1\uB6B2\uCCF1\uB9A7\u9077\uCFA2"+
+        "\uC7A1\u9078\u9079\uBFD2\u907A\u907B\uB6F1\u907C"+
+        "\uE2FA\uE2FB\uE2FD\uE2FC\uC4D5\uE3A2\u907D\uD3C1"+
+        "\u907E\u9080\u9081\uE3A7\uC7C4\u9082\u9083\u9084"+
+        "\u9085\uCFA4\u9086\u9087\uE3A9\uBAB7\u9088\u9089"+
+        "\u908A\u908B\uE3A8\u908C\uBBDA\u908D\uE3A3\u908E"+
+        "\u908F\u9090\uE3A4\uE3AA\u9091\uE3A6\u9092\uCEF2"+
+        "\uD3C6\u9093\u9094\uBBBC\u9095\u9096\uD4C3\u9097"+
+        "\uC4FA\u9098\u9099\uEDA8\uD0FC\uE3A5\u909A\uC3F5"+
+        "\u909B\uE3AD\uB1AF\u909C\uE3B2\u909D\u909E\u909F"+
+        "\uBCC2\u90A0\u90A1\uE3AC\uB5BF\u90A2\u90A3\u90A4"+
+        "\u90A5\u90A6\u90A7\u90A8\u90A9\uC7E9\uE3B0\u90AA"+
+        "\u90AB\u90AC\uBEAA\uCDEF\u90AD\u90AE\u90AF\u90B0"+
+        "\u90B1\uBBF3\u90B2\u90B3\u90B4\uCCE8\u90B5\u90B6"+
+        "\uE3AF\u90B7\uE3B1\u90B8\uCFA7\uE3AE\u90B9\uCEA9"+
+        "\uBBDD\u90BA\u90BB\u90BC\u90BD\u90BE\uB5EB\uBEE5"+
+        "\uB2D2\uB3CD\u90BF\uB1B9\uE3AB\uB2D1\uB5AC\uB9DF"+
+        "\uB6E8\u90C0\u90C1\uCFEB\uE3B7\u90C2\uBBCC\u90C3"+
+        "\u90C4\uC8C7\uD0CA\u90C5\u90C6\u90C7\u90C8\u90C9"+
+        "\uE3B8\uB3EE\u90CA\u90CB\u90CC\u90CD\uEDA9\u90CE"+
+        "\uD3FA\uD3E4\u90CF\u90D0\u90D1\uEDAA\uE3B9\uD2E2"+
+        "\u90D2\u90D3\u90D4\u90D5\u90D6\uE3B5\u90D7\u90D8"+
+        "\u90D9\u90DA\uD3DE\u90DB\u90DC\u90DD\u90DE\uB8D0"+
+        "\uE3B3\u90DF\u90E0\uE3B6\uB7DF\u90E1\uE3B4\uC0A2"+
+        "\u90E2\u90E3\u90E4\uE3BA\u90E5\u90E6\u90E7\u90E8"+
+        "\u90E9\u90EA\u90EB\u90EC\u90ED\u90EE\u90EF\u90F0"+
+        "\u90F1\u90F2\u90F3\u90F4\u90F5\u90F6\u90F7\uD4B8"+
+        "\u90F8\u90F9\u90FA\u90FB\u90FC\u90FD\u90FE\u9140"+
+        "\uB4C8\u9141\uE3BB\u9142\uBBC5\u9143\uC9F7\u9144"+
+        "\u9145\uC9E5\u9146\u9147\u9148\uC4BD\u9149\u914A"+
+        "\u914B\u914C\u914D\u914E\u914F\uEDAB\u9150\u9151"+
+        "\u9152\u9153\uC2FD\u9154\u9155\u9156\u9157\uBBDB"+
+        "\uBFAE\u9158\u9159\u915A\u915B\u915C\u915D\u915E"+
+        "\uCEBF\u915F\u9160\u9161\u9162\uE3BC\u9163\uBFB6"+
+        "\u9164\u9165\u9166\u9167\u9168\u9169\u916A\u916B"+
+        "\u916C\u916D\u916E\u916F\u9170\u9171\u9172\u9173"+
+        "\u9174\u9175\u9176\uB1EF\u9177\u9178\uD4F7\u9179"+
+        "\u917A\u917B\u917C\u917D\uE3BE\u917E\u9180\u9181"+
+        "\u9182\u9183\u9184\u9185\u9186\uEDAD\u9187\u9188"+
+        "\u9189\u918A\u918B\u918C\u918D\u918E\u918F\uE3BF"+
+        "\uBAA9\uEDAC\u9190\u9191\uE3BD\u9192\u9193\u9194"+
+        "\u9195\u9196\u9197\u9198\u9199\u919A\u919B\uE3C0"+
+        "\u919C\u919D\u919E\u919F\u91A0\u91A1\uBAB6\u91A2"+
+        "\u91A3\u91A4\uB6AE\u91A5\u91A6\u91A7\u91A8\u91A9"+
+        "\uD0B8\u91AA\uB0C3\uEDAE\u91AB\u91AC\u91AD\u91AE"+
+        "\u91AF\uEDAF\uC0C1\u91B0\uE3C1\u91B1\u91B2\u91B3"+
+        "\u91B4\u91B5\u91B6\u91B7\u91B8\u91B9\u91BA\u91BB"+
+        "\u91BC\u91BD\u91BE\u91BF\u91C0\u91C1\uC5B3\u91C2"+
+        "\u91C3\u91C4\u91C5\u91C6\u91C7\u91C8\u91C9\u91CA"+
+        "\u91CB\u91CC\u91CD\u91CE\u91CF\uE3C2\u91D0\u91D1"+
+        "\u91D2\u91D3\u91D4\u91D5\u91D6\u91D7\u91D8\uDCB2"+
+        "\u91D9\u91DA\u91DB\u91DC\u91DD\u91DE\uEDB0\u91DF"+
+        "\uB8EA\u91E0\uCEEC\uEAA7\uD0E7\uCAF9\uC8D6\uCFB7"+
+        "\uB3C9\uCED2\uBDE4\u91E1\u91E2\uE3DE\uBBF2\uEAA8"+
+        "\uD5BD\u91E3\uC6DD\uEAA9\u91E4\u91E5\u91E6\uEAAA"+
+        "\u91E7\uEAAC\uEAAB\u91E8\uEAAE\uEAAD\u91E9\u91EA"+
+        "\u91EB\u91EC\uBDD8\u91ED\uEAAF\u91EE\uC2BE\u91EF"+
+        "\u91F0\u91F1\u91F2\uB4C1\uB4F7\u91F3\u91F4\uBBA7"+
+        "\u91F5\u91F6\u91F7\u91F8\u91F9\uECE6\uECE5\uB7BF"+
+        "\uCBF9\uB1E2\u91FA\uECE7\u91FB\u91FC\u91FD\uC9C8"+
+        "\uECE8\uECE9\u91FE\uCAD6\uDED0\uB2C5\uD4FA\u9240"+
+        "\u9241\uC6CB\uB0C7\uB4F2\uC8D3\u9242\u9243\u9244"+
+        "\uCDD0\u9245\u9246\uBFB8\u9247\u9248\u9249\u924A"+
+        "\u924B\u924C\u924D\uBFDB\u924E\u924F\uC7A4\uD6B4"+
+        "\u9250\uC0A9\uDED1\uC9A8\uD1EF\uC5A4\uB0E7\uB3B6"+
+        "\uC8C5\u9251\u9252\uB0E2\u9253\u9254\uB7F6\u9255"+
+        "\u9256\uC5FA\u9257\u9258\uB6F3\u9259\uD5D2\uB3D0"+
+        "\uBCBC\u925A\u925B\u925C\uB3AD\u925D\u925E\u925F"+
+        "\u9260\uBEF1\uB0D1\u9261\u9262\u9263\u9264\u9265"+
+        "\u9266\uD2D6\uCAE3\uD7A5\u9267\uCDB6\uB6B6\uBFB9"+
+        "\uD5DB\u9268\uB8A7\uC5D7\u9269\u926A\u926B\uDED2"+
+        "\uBFD9\uC2D5\uC7C0\u926C\uBBA4\uB1A8\u926D\u926E"+
+        "\uC5EA\u926F\u9270\uC5FB\uCCA7\u9271\u9272\u9273"+
+        "\u9274\uB1A7\u9275\u9276\u9277\uB5D6\u9278\u9279"+
+        "\u927A\uC4A8\u927B\uDED3\uD1BA\uB3E9\u927C\uC3F2"+
+        "\u927D\u927E\uB7F7\u9280\uD6F4\uB5A3\uB2F0\uC4B4"+
+        "\uC4E9\uC0AD\uDED4\u9281\uB0E8\uC5C4\uC1E0\u9282"+
+        "\uB9D5\u9283\uBEDC\uCDD8\uB0CE\u9284\uCDCF\uDED6"+
+        "\uBED0\uD7BE\uDED5\uD5D0\uB0DD\u9285\u9286\uC4E2"+
+        "\u9287\u9288\uC2A3\uBCF0\u9289\uD3B5\uC0B9\uC5A1"+
+        "\uB2A6\uD4F1\u928A\u928B\uC0A8\uCAC3\uDED7\uD5FC"+
+        "\u928C\uB9B0\u928D\uC8AD\uCBA9\u928E\uDED9\uBFBD"+
+        "\u928F\u9290\u9291\u9292\uC6B4\uD7A7\uCAB0\uC4C3"+
+        "\u9293\uB3D6\uB9D2\u9294\u9295\u9296\u9297\uD6B8"+
+        "\uEAFC\uB0B4\u9298\u9299\u929A\u929B\uBFE6\u929C"+
+        "\u929D\uCCF4\u929E\u929F\u92A0\u92A1\uCDDA\u92A2"+
+        "\u92A3\u92A4\uD6BF\uC2CE\u92A5\uCECE\uCCA2\uD0AE"+
+        "\uC4D3\uB5B2\uDED8\uD5F5\uBCB7\uBBD3\u92A6\u92A7"+
+        "\uB0A4\u92A8\uC5B2\uB4EC\u92A9\u92AA\u92AB\uD5F1"+
+        "\u92AC\u92AD\uEAFD\u92AE\u92AF\u92B0\u92B1\u92B2"+
+        "\u92B3\uDEDA\uCDA6\u92B4\u92B5\uCDEC\u92B6\u92B7"+
+        "\u92B8\u92B9\uCEE6\uDEDC\u92BA\uCDB1\uC0A6\u92BB"+
+        "\u92BC\uD7BD\u92BD\uDEDB\uB0C6\uBAB4\uC9D3\uC4F3"+
+        "\uBEE8\u92BE\u92BF\u92C0\u92C1\uB2B6\u92C2\u92C3"+
+        "\u92C4\u92C5\u92C6\u92C7\u92C8\u92C9\uC0CC\uCBF0"+
+        "\u92CA\uBCF1\uBBBB\uB5B7\u92CB\u92CC\u92CD\uC5F5"+
+        "\u92CE\uDEE6\u92CF\u92D0\u92D1\uDEE3\uBEDD\u92D2"+
+        "\u92D3\uDEDF\u92D4\u92D5\u92D6\u92D7\uB4B7\uBDDD"+
+        "\u92D8\u92D9\uDEE0\uC4ED\u92DA\u92DB\u92DC\u92DD"+
+        "\uCFC6\u92DE\uB5E0\u92DF\u92E0\u92E1\u92E2\uB6DE"+
+        "\uCADA\uB5F4\uDEE5\u92E3\uD5C6\u92E4\uDEE1\uCCCD"+
+        "\uC6FE\u92E5\uC5C5\u92E6\u92E7\u92E8\uD2B4\u92E9"+
+        "\uBEF2\u92EA\u92EB\u92EC\u92ED\u92EE\u92EF\u92F0"+
+        "\uC2D3\u92F1\uCCBD\uB3B8\u92F2\uBDD3\u92F3\uBFD8"+
+        "\uCDC6\uD1DA\uB4EB\u92F4\uDEE4\uDEDD\uDEE7\u92F5"+
+        "\uEAFE\u92F6\u92F7\uC2B0\uDEE2\u92F8\u92F9\uD6C0"+
+        "\uB5A7\u92FA\uB2F4\u92FB\uDEE8\u92FC\uDEF2\u92FD"+
+        "\u92FE\u9340\u9341\u9342\uDEED\u9343\uDEF1\u9344"+
+        "\u9345\uC8E0\u9346\u9347\u9348\uD7E1\uDEEF\uC3E8"+
+        "\uCCE1\u9349\uB2E5\u934A\u934B\u934C\uD2BE\u934D"+
+        "\u934E\u934F\u9350\u9351\u9352\u9353\uDEEE\u9354"+
+        "\uDEEB\uCED5\u9355\uB4A7\u9356\u9357\u9358\u9359"+
+        "\u935A\uBFAB\uBEBE\u935B\u935C\uBDD2\u935D\u935E"+
+        "\u935F\u9360\uDEE9\u9361\uD4AE\u9362\uDEDE\u9363"+
+        "\uDEEA\u9364\u9365\u9366\u9367\uC0BF\u9368\uDEEC"+
+        "\uB2F3\uB8E9\uC2A7\u9369\u936A\uBDC1\u936B\u936C"+
+        "\u936D\u936E\u936F\uDEF5\uDEF8\u9370\u9371\uB2AB"+
+        "\uB4A4\u9372\u9373\uB4EA\uC9A6\u9374\u9375\u9376"+
+        "\u9377\u9378\u9379\uDEF6\uCBD1\u937A\uB8E3\u937B"+
+        "\uDEF7\uDEFA\u937C\u937D\u937E\u9380\uDEF9\u9381"+
+        "\u9382\u9383\uCCC2\u9384\uB0E1\uB4EE\u9385\u9386"+
+        "\u9387\u9388\u9389\u938A\uE5BA\u938B\u938C\u938D"+
+        "\u938E\u938F\uD0AF\u9390\u9391\uB2EB\u9392\uEBA1"+
+        "\u9393\uDEF4\u9394\u9395\uC9E3\uDEF3\uB0DA\uD2A1"+
+        "\uB1F7\u9396\uCCAF\u9397\u9398\u9399\u939A\u939B"+
+        "\u939C\u939D\uDEF0\u939E\uCBA4\u939F\u93A0\u93A1"+
+        "\uD5AA\u93A2\u93A3\u93A4\u93A5\u93A6\uDEFB\u93A7"+
+        "\u93A8\u93A9\u93AA\u93AB\u93AC\u93AD\u93AE\uB4DD"+
+        "\u93AF\uC4A6\u93B0\u93B1\u93B2\uDEFD\u93B3\u93B4"+
+        "\u93B5\u93B6\u93B7\u93B8\u93B9\u93BA\u93BB\u93BC"+
+        "\uC3FE\uC4A1\uDFA1\u93BD\u93BE\u93BF\u93C0\u93C1"+
+        "\u93C2\u93C3\uC1CC\u93C4\uDEFC\uBEEF\u93C5\uC6B2"+
+        "\u93C6\u93C7\u93C8\u93C9\u93CA\u93CB\u93CC\u93CD"+
+        "\u93CE\uB3C5\uC8F6\u93CF\u93D0\uCBBA\uDEFE\u93D1"+
+        "\u93D2\uDFA4\u93D3\u93D4\u93D5\u93D6\uD7B2\u93D7"+
+        "\u93D8\u93D9\u93DA\u93DB\uB3B7\u93DC\u93DD\u93DE"+
+        "\u93DF\uC1C3\u93E0\u93E1\uC7CB\uB2A5\uB4E9\u93E2"+
+        "\uD7AB\u93E3\u93E4\u93E5\u93E6\uC4EC\u93E7\uDFA2"+
+        "\uDFA3\u93E8\uDFA5\u93E9\uBAB3\u93EA\u93EB\u93EC"+
+        "\uDFA6\u93ED\uC0DE\u93EE\u93EF\uC9C3\u93F0\u93F1"+
+        "\u93F2\u93F3\u93F4\u93F5\u93F6\uB2D9\uC7E6\u93F7"+
+        "\uDFA7\u93F8\uC7DC\u93F9\u93FA\u93FB\u93FC\uDFA8"+
+        "\uEBA2\u93FD\u93FE\u9440\u9441\u9442\uCBD3\u9443"+
+        "\u9444\u9445\uDFAA\u9446\uDFA9\u9447\uB2C1\u9448"+
+        "\u9449\u944A\u944B\u944C\u944D\u944E\u944F\u9450"+
+        "\u9451\u9452\u9453\u9454\u9455\u9456\u9457\u9458"+
+        "\u9459\u945A\u945B\u945C\u945D\u945E\u945F\u9460"+
+        "\uC5CA\u9461\u9462\u9463\u9464\u9465\u9466\u9467"+
+        "\u9468\uDFAB\u9469\u946A\u946B\u946C\u946D\u946E"+
+        "\u946F\u9470\uD4DC\u9471\u9472\u9473\u9474\u9475"+
+        "\uC8C1\u9476\u9477\u9478\u9479\u947A\u947B\u947C"+
+        "\u947D\u947E\u9480\u9481\u9482\uDFAC\u9483\u9484"+
+        "\u9485\u9486\u9487\uBEF0\u9488\u9489\uDFAD\uD6A7"+
+        "\u948A\u948B\u948C\u948D\uEAB7\uEBB6\uCAD5\u948E"+
+        "\uD8FC\uB8C4\u948F\uB9A5\u9490\u9491\uB7C5\uD5FE"+
+        "\u9492\u9493\u9494\u9495\u9496\uB9CA\u9497\u9498"+
+        "\uD0A7\uF4CD\u9499\u949A\uB5D0\u949B\u949C\uC3F4"+
+        "\u949D\uBEC8\u949E\u949F\u94A0\uEBB7\uB0BD\u94A1"+
+        "\u94A2\uBDCC\u94A3\uC1B2\u94A4\uB1D6\uB3A8\u94A5"+
+        "\u94A6\u94A7\uB8D2\uC9A2\u94A8\u94A9\uB6D8\u94AA"+
+        "\u94AB\u94AC\u94AD\uEBB8\uBEB4\u94AE\u94AF\u94B0"+
+        "\uCAFD\u94B1\uC7C3\u94B2\uD5FB\u94B3\u94B4\uB7F3"+
+        "\u94B5\u94B6\u94B7\u94B8\u94B9\u94BA\u94BB\u94BC"+
+        "\u94BD\u94BE\u94BF\u94C0\u94C1\u94C2\u94C3\uCEC4"+
+        "\u94C4\u94C5\u94C6\uD5AB\uB1F3\u94C7\u94C8\u94C9"+
+        "\uECB3\uB0DF\u94CA\uECB5\u94CB\u94CC\u94CD\uB6B7"+
+        "\u94CE\uC1CF\u94CF\uF5FA\uD0B1\u94D0\u94D1\uD5E5"+
+        "\u94D2\uCED3\u94D3\u94D4\uBDEF\uB3E2\u94D5\uB8AB"+
+        "\u94D6\uD5B6\u94D7\uEDBD\u94D8\uB6CF\u94D9\uCBB9"+
+        "\uD0C2\u94DA\u94DB\u94DC\u94DD\u94DE\u94DF\u94E0"+
+        "\u94E1\uB7BD\u94E2\u94E3\uECB6\uCAA9\u94E4\u94E5"+
+        "\u94E6\uC5D4\u94E7\uECB9\uECB8\uC2C3\uECB7\u94E8"+
+        "\u94E9\u94EA\u94EB\uD0FD\uECBA\u94EC\uECBB\uD7E5"+
+        "\u94ED\u94EE\uECBC\u94EF\u94F0\u94F1\uECBD\uC6EC"+
+        "\u94F2\u94F3\u94F4\u94F5\u94F6\u94F7\u94F8\u94F9"+
+        "\uCEDE\u94FA\uBCC8\u94FB\u94FC\uC8D5\uB5A9\uBEC9"+
+        "\uD6BC\uD4E7\u94FD\u94FE\uD1AE\uD0F1\uEAB8\uEAB9"+
+        "\uEABA\uBAB5\u9540\u9541\u9542\u9543\uCAB1\uBFF5"+
+        "\u9544\u9545\uCDFA\u9546\u9547\u9548\u9549\u954A"+
+        "\uEAC0\u954B\uB0BA\uEABE\u954C\u954D\uC0A5\u954E"+
+        "\u954F\u9550\uEABB\u9551\uB2FD\u9552\uC3F7\uBBE8"+
+        "\u9553\u9554\u9555\uD2D7\uCEF4\uEABF\u9556\u9557"+
+        "\u9558\uEABC\u9559\u955A\u955B\uEAC3\u955C\uD0C7"+
+        "\uD3B3\u955D\u955E\u955F\u9560\uB4BA\u9561\uC3C1"+
+        "\uD7F2\u9562\u9563\u9564\u9565\uD5D1\u9566\uCAC7"+
+        "\u9567\uEAC5\u9568\u9569\uEAC4\uEAC7\uEAC6\u956A"+
+        "\u956B\u956C\u956D\u956E\uD6E7\u956F\uCFD4\u9570"+
+        "\u9571\uEACB\u9572\uBBCE\u9573\u9574\u9575\u9576"+
+        "\u9577\u9578\u9579\uBDFA\uC9CE\u957A\u957B\uEACC"+
+        "\u957C\u957D\uC9B9\uCFFE\uEACA\uD4CE\uEACD\uEACF"+
+        "\u957E\u9580\uCDED\u9581\u9582\u9583\u9584\uEAC9"+
+        "\u9585\uEACE\u9586\u9587\uCEEE\u9588\uBBDE\u9589"+
+        "\uB3BF\u958A\u958B\u958C\u958D\u958E\uC6D5\uBEB0"+
+        "\uCEFA\u958F\u9590\u9591\uC7E7\u9592\uBEA7\uEAD0"+
+        "\u9593\u9594\uD6C7\u9595\u9596\u9597\uC1C0\u9598"+
+        "\u9599\u959A\uD4DD\u959B\uEAD1\u959C\u959D\uCFBE"+
+        "\u959E\u959F\u95A0\u95A1\uEAD2\u95A2\u95A3\u95A4"+
+        "\u95A5\uCAEE\u95A6\u95A7\u95A8\u95A9\uC5AF\uB0B5"+
+        "\u95AA\u95AB\u95AC\u95AD\u95AE\uEAD4\u95AF\u95B0"+
+        "\u95B1\u95B2\u95B3\u95B4\u95B5\u95B6\u95B7\uEAD3"+
+        "\uF4DF\u95B8\u95B9\u95BA\u95BB\u95BC\uC4BA\u95BD"+
+        "\u95BE\u95BF\u95C0\u95C1\uB1A9\u95C2\u95C3\u95C4"+
+        "\u95C5\uE5DF\u95C6\u95C7\u95C8\u95C9\uEAD5\u95CA"+
+        "\u95CB\u95CC\u95CD\u95CE\u95CF\u95D0\u95D1\u95D2"+
+        "\u95D3\u95D4\u95D5\u95D6\u95D7\u95D8\u95D9\u95DA"+
+        "\u95DB\u95DC\u95DD\u95DE\u95DF\u95E0\u95E1\u95E2"+
+        "\u95E3\uCAEF\u95E4\uEAD6\uEAD7\uC6D8\u95E5\u95E6"+
+        "\u95E7\u95E8\u95E9\u95EA\u95EB\u95EC\uEAD8\u95ED"+
+        "\u95EE\uEAD9\u95EF\u95F0\u95F1\u95F2\u95F3\u95F4"+
+        "\uD4BB\u95F5\uC7FA\uD2B7\uB8FC\u95F6\u95F7\uEAC2"+
+        "\u95F8\uB2DC\u95F9\u95FA\uC2FC\u95FB\uD4F8\uCCE6"+
+        "\uD7EE\u95FC\u95FD\u95FE\u9640\u9641\u9642\u9643"+
+        "\uD4C2\uD3D0\uEBC3\uC5F3\u9644\uB7FE\u9645\u9646"+
+        "\uEBD4\u9647\u9648\u9649\uCBB7\uEBDE\u964A\uC0CA"+
+        "\u964B\u964C\u964D\uCDFB\u964E\uB3AF\u964F\uC6DA"+
+        "\u9650\u9651\u9652\u9653\u9654\u9655\uEBFC\u9656"+
+        "\uC4BE\u9657\uCEB4\uC4A9\uB1BE\uD4FD\u9658\uCAF5"+
+        "\u9659\uD6EC\u965A\u965B\uC6D3\uB6E4\u965C\u965D"+
+        "\u965E\u965F\uBBFA\u9660\u9661\uD0E0\u9662\u9663"+
+        "\uC9B1\u9664\uD4D3\uC8A8\u9665\u9666\uB8CB\u9667"+
+        "\uE8BE\uC9BC\u9668\u9669\uE8BB\u966A\uC0EE\uD0D3"+
+        "\uB2C4\uB4E5\u966B\uE8BC\u966C\u966D\uD5C8\u966E"+
+        "\u966F\u9670\u9671\u9672\uB6C5\u9673\uE8BD\uCAF8"+
+        "\uB8DC\uCCF5\u9674\u9675\u9676\uC0B4\u9677\u9678"+
+        "\uD1EE\uE8BF\uE8C2\u9679\u967A\uBABC\u967B\uB1AD"+
+        "\uBDDC\u967C\uEABD\uE8C3\u967D\uE8C6\u967E\uE8CB"+
+        "\u9680\u9681\u9682\u9683\uE8CC\u9684\uCBC9\uB0E5"+
+        "\u9685\uBCAB\u9686\u9687\uB9B9\u9688\u9689\uE8C1"+
+        "\u968A\uCDF7\u968B\uE8CA\u968C\u968D\u968E\u968F"+
+        "\uCEF6\u9690\u9691\u9692\u9693\uD5ED\u9694\uC1D6"+
+        "\uE8C4\u9695\uC3B6\u9696\uB9FB\uD6A6\uE8C8\u9697"+
+        "\u9698\u9699\uCAE0\uD4E6\u969A\uE8C0\u969B\uE8C5"+
+        "\uE8C7\u969C\uC7B9\uB7E3\u969D\uE8C9\u969E\uBFDD"+
+        "\uE8D2\u969F\u96A0\uE8D7\u96A1\uE8D5\uBCDC\uBCCF"+
+        "\uE8DB\u96A2\u96A3\u96A4\u96A5\u96A6\u96A7\u96A8"+
+        "\u96A9\uE8DE\u96AA\uE8DA\uB1FA\u96AB\u96AC\u96AD"+
+        "\u96AE\u96AF\u96B0\u96B1\u96B2\u96B3\u96B4\uB0D8"+
+        "\uC4B3\uB8CC\uC6E2\uC8BE\uC8E1\u96B5\u96B6\u96B7"+
+        "\uE8CF\uE8D4\uE8D6\u96B8\uB9F1\uE8D8\uD7F5\u96B9"+
+        "\uC4FB\u96BA\uE8DC\u96BB\u96BC\uB2E9\u96BD\u96BE"+
+        "\u96BF\uE8D1\u96C0\u96C1\uBCED\u96C2\u96C3\uBFC2"+
+        "\uE8CD\uD6F9\u96C4\uC1F8\uB2F1\u96C5\u96C6\u96C7"+
+        "\u96C8\u96C9\u96CA\u96CB\u96CC\uE8DF\u96CD\uCAC1"+
+        "\uE8D9\u96CE\u96CF\u96D0\u96D1\uD5A4\u96D2\uB1EA"+
+        "\uD5BB\uE8CE\uE8D0\uB6B0\uE8D3\u96D3\uE8DD\uC0B8"+
+        "\u96D4\uCAF7\u96D5\uCBA8\u96D6\u96D7\uC6DC\uC0F5"+
+        "\u96D8\u96D9\u96DA\u96DB\u96DC\uE8E9\u96DD\u96DE"+
+        "\u96DF\uD0A3\u96E0\u96E1\u96E2\u96E3\u96E4\u96E5"+
+        "\u96E6\uE8F2\uD6EA\u96E7\u96E8\u96E9\u96EA\u96EB"+
+        "\u96EC\u96ED\uE8E0\uE8E1\u96EE\u96EF\u96F0\uD1F9"+
+        "\uBACB\uB8F9\u96F1\u96F2\uB8F1\uD4D4\uE8EF\u96F3"+
+        "\uE8EE\uE8EC\uB9F0\uCCD2\uE8E6\uCEA6\uBFF2\u96F4"+
+        "\uB0B8\uE8F1\uE8F0\u96F5\uD7C0\u96F6\uE8E4\u96F7"+
+        "\uCDA9\uC9A3\u96F8\uBBB8\uBDDB\uE8EA\u96F9\u96FA"+
+        "\u96FB\u96FC\u96FD\u96FE\u9740\u9741\u9742\u9743"+
+        "\uE8E2\uE8E3\uE8E5\uB5B5\uE8E7\uC7C5\uE8EB\uE8ED"+
+        "\uBDB0\uD7AE\u9744\uE8F8\u9745\u9746\u9747\u9748"+
+        "\u9749\u974A\u974B\u974C\uE8F5\u974D\uCDB0\uE8F6"+
+        "\u974E\u974F\u9750\u9751\u9752\u9753\u9754\u9755"+
+        "\u9756\uC1BA\u9757\uE8E8\u9758\uC3B7\uB0F0\u9759"+
+        "\u975A\u975B\u975C\u975D\u975E\u975F\u9760\uE8F4"+
+        "\u9761\u9762\u9763\uE8F7\u9764\u9765\u9766\uB9A3"+
+        "\u9767\u9768\u9769\u976A\u976B\u976C\u976D\u976E"+
+        "\u976F\u9770\uC9D2\u9771\u9772\u9773\uC3CE\uCEE0"+
+        "\uC0E6\u9774\u9775\u9776\u9777\uCBF3\u9778\uCCDD"+
+        "\uD0B5\u9779\u977A\uCAE1\u977B\uE8F3\u977C\u977D"+
+        "\u977E\u9780\u9781\u9782\u9783\u9784\u9785\u9786"+
+        "\uBCEC\u9787\uE8F9\u9788\u9789\u978A\u978B\u978C"+
+        "\u978D\uC3DE\u978E\uC6E5\u978F\uB9F7\u9790\u9791"+
+        "\u9792\u9793\uB0F4\u9794\u9795\uD7D8\u9796\u9797"+
+        "\uBCAC\u9798\uC5EF\u9799\u979A\u979B\u979C\u979D"+
+        "\uCCC4\u979E\u979F\uE9A6\u97A0\u97A1\u97A2\u97A3"+
+        "\u97A4\u97A5\u97A6\u97A7\u97A8\u97A9\uC9AD\u97AA"+
+        "\uE9A2\uC0E2\u97AB\u97AC\u97AD\uBFC3\u97AE\u97AF"+
+        "\u97B0\uE8FE\uB9D7\u97B1\uE8FB\u97B2\u97B3\u97B4"+
+        "\u97B5\uE9A4\u97B6\u97B7\u97B8\uD2CE\u97B9\u97BA"+
+        "\u97BB\u97BC\u97BD\uE9A3\u97BE\uD6B2\uD7B5\u97BF"+
+        "\uE9A7\u97C0\uBDB7\u97C1\u97C2\u97C3\u97C4\u97C5"+
+        "\u97C6\u97C7\u97C8\u97C9\u97CA\u97CB\u97CC\uE8FC"+
+        "\uE8FD\u97CD\u97CE\u97CF\uE9A1\u97D0\u97D1\u97D2"+
+        "\u97D3\u97D4\u97D5\u97D6\u97D7\uCDD6\u97D8\u97D9"+
+        "\uD2AC\u97DA\u97DB\u97DC\uE9B2\u97DD\u97DE\u97DF"+
+        "\u97E0\uE9A9\u97E1\u97E2\u97E3\uB4AA\u97E4\uB4BB"+
+        "\u97E5\u97E6\uE9AB\u97E7\u97E8\u97E9\u97EA\u97EB"+
+        "\u97EC\u97ED\u97EE\u97EF\u97F0\u97F1\u97F2\u97F3"+
+        "\u97F4\u97F5\u97F6\u97F7\uD0A8\u97F8\u97F9\uE9A5"+
+        "\u97FA\u97FB\uB3FE\u97FC\u97FD\uE9AC\uC0E3\u97FE"+
+        "\uE9AA\u9840\u9841\uE9B9\u9842\u9843\uE9B8\u9844"+
+        "\u9845\u9846\u9847\uE9AE\u9848\u9849\uE8FA\u984A"+
+        "\u984B\uE9A8\u984C\u984D\u984E\u984F\u9850\uBFAC"+
+        "\uE9B1\uE9BA\u9851\u9852\uC2A5\u9853\u9854\u9855"+
+        "\uE9AF\u9856\uB8C5\u9857\uE9AD\u9858\uD3DC\uE9B4"+
+        "\uE9B5\uE9B7\u9859\u985A\u985B\uE9C7\u985C\u985D"+
+        "\u985E\u985F\u9860\u9861\uC0C6\uE9C5\u9862\u9863"+
+        "\uE9B0\u9864\u9865\uE9BB\uB0F1\u9866\u9867\u9868"+
+        "\u9869\u986A\u986B\u986C\u986D\u986E\u986F\uE9BC"+
+        "\uD5A5\u9870\u9871\uE9BE\u9872\uE9BF\u9873\u9874"+
+        "\u9875\uE9C1\u9876\u9877\uC1F1\u9878\u9879\uC8B6"+
+        "\u987A\u987B\u987C\uE9BD\u987D\u987E\u9880\u9881"+
+        "\u9882\uE9C2\u9883\u9884\u9885\u9886\u9887\u9888"+
+        "\u9889\u988A\uE9C3\u988B\uE9B3\u988C\uE9B6\u988D"+
+        "\uBBB1\u988E\u988F\u9890\uE9C0\u9891\u9892\u9893"+
+        "\u9894\u9895\u9896\uBCF7\u9897\u9898\u9899\uE9C4"+
+        "\uE9C6\u989A\u989B\u989C\u989D\u989E\u989F\u98A0"+
+        "\u98A1\u98A2\u98A3\u98A4\u98A5\uE9CA\u98A6\u98A7"+
+        "\u98A8\u98A9\uE9CE\u98AA\u98AB\u98AC\u98AD\u98AE"+
+        "\u98AF\u98B0\u98B1\u98B2\u98B3\uB2DB\u98B4\uE9C8"+
+        "\u98B5\u98B6\u98B7\u98B8\u98B9\u98BA\u98BB\u98BC"+
+        "\u98BD\u98BE\uB7AE\u98BF\u98C0\u98C1\u98C2\u98C3"+
+        "\u98C4\u98C5\u98C6\u98C7\u98C8\u98C9\u98CA\uE9CB"+
+        "\uE9CC\u98CB\u98CC\u98CD\u98CE\u98CF\u98D0\uD5C1"+
+        "\u98D1\uC4A3\u98D2\u98D3\u98D4\u98D5\u98D6\u98D7"+
+        "\uE9D8\u98D8\uBAE1\u98D9\u98DA\u98DB\u98DC\uE9C9"+
+        "\u98DD\uD3A3\u98DE\u98DF\u98E0\uE9D4\u98E1\u98E2"+
+        "\u98E3\u98E4\u98E5\u98E6\u98E7\uE9D7\uE9D0\u98E8"+
+        "\u98E9\u98EA\u98EB\u98EC\uE9CF\u98ED\u98EE\uC7C1"+
+        "\u98EF\u98F0\u98F1\u98F2\u98F3\u98F4\u98F5\u98F6"+
+        "\uE9D2\u98F7\u98F8\u98F9\u98FA\u98FB\u98FC\u98FD"+
+        "\uE9D9\uB3C8\u98FE\uE9D3\u9940\u9941\u9942\u9943"+
+        "\u9944\uCFF0\u9945\u9946\u9947\uE9CD\u9948\u9949"+
+        "\u994A\u994B\u994C\u994D\u994E\u994F\u9950\u9951"+
+        "\u9952\uB3F7\u9953\u9954\u9955\u9956\u9957\u9958"+
+        "\u9959\uE9D6\u995A\u995B\uE9DA\u995C\u995D\u995E"+
+        "\uCCB4\u995F\u9960\u9961\uCFAD\u9962\u9963\u9964"+
+        "\u9965\u9966\u9967\u9968\u9969\u996A\uE9D5\u996B"+
+        "\uE9DC\uE9DB\u996C\u996D\u996E\u996F\u9970\uE9DE"+
+        "\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978"+
+        "\uE9D1\u9979\u997A\u997B\u997C\u997D\u997E\u9980"+
+        "\u9981\uE9DD\u9982\uE9DF\uC3CA\u9983\u9984\u9985"+
+        "\u9986\u9987\u9988\u9989\u998A\u998B\u998C\u998D"+
+        "\u998E\u998F\u9990\u9991\u9992\u9993\u9994\u9995"+
+        "\u9996\u9997\u9998\u9999\u999A\u999B\u999C\u999D"+
+        "\u999E\u999F\u99A0\u99A1\u99A2\u99A3\u99A4\u99A5"+
+        "\u99A6\u99A7\u99A8\u99A9\u99AA\u99AB\u99AC\u99AD"+
+        "\u99AE\u99AF\u99B0\u99B1\u99B2\u99B3\u99B4\u99B5"+
+        "\u99B6\u99B7\u99B8\u99B9\u99BA\u99BB\u99BC\u99BD"+
+        "\u99BE\u99BF\u99C0\u99C1\u99C2\u99C3\u99C4\u99C5"+
+        "\u99C6\u99C7\u99C8\u99C9\u99CA\u99CB\u99CC\u99CD"+
+        "\u99CE\u99CF\u99D0\u99D1\u99D2\u99D3\u99D4\u99D5"+
+        "\u99D6\u99D7\u99D8\u99D9\u99DA\u99DB\u99DC\u99DD"+
+        "\u99DE\u99DF\u99E0\u99E1\u99E2\u99E3\u99E4\u99E5"+
+        "\u99E6\u99E7\u99E8\u99E9\u99EA\u99EB\u99EC\u99ED"+
+        "\u99EE\u99EF\u99F0\u99F1\u99F2\u99F3\u99F4\u99F5"+
+        "\uC7B7\uB4CE\uBBB6\uD0C0\uECA3\u99F6\u99F7\uC5B7"+
+        "\u99F8\u99F9\u99FA\u99FB\u99FC\u99FD\u99FE\u9A40"+
+        "\u9A41\u9A42\uD3FB\u9A43\u9A44\u9A45\u9A46\uECA4"+
+        "\u9A47\uECA5\uC6DB\u9A48\u9A49\u9A4A\uBFEE\u9A4B"+
+        "\u9A4C\u9A4D\u9A4E\uECA6\u9A4F\u9A50\uECA7\uD0AA"+
+        "\u9A51\uC7B8\u9A52\u9A53\uB8E8\u9A54\u9A55\u9A56"+
+        "\u9A57\u9A58\u9A59\u9A5A\u9A5B\u9A5C\u9A5D\u9A5E"+
+        "\u9A5F\uECA8\u9A60\u9A61\u9A62\u9A63\u9A64\u9A65"+
+        "\u9A66\u9A67\uD6B9\uD5FD\uB4CB\uB2BD\uCEE4\uC6E7"+
+        "\u9A68\u9A69\uCDE1\u9A6A\u9A6B\u9A6C\u9A6D\u9A6E"+
+        "\u9A6F\u9A70\u9A71\u9A72\u9A73\u9A74\u9A75\u9A76"+
+        "\u9A77\uB4F5\u9A78\uCBC0\uBCDF\u9A79\u9A7A\u9A7B"+
+        "\u9A7C\uE9E2\uE9E3\uD1EA\uE9E5\u9A7D\uB4F9\uE9E4"+
+        "\u9A7E\uD1B3\uCAE2\uB2D0\u9A80\uE9E8\u9A81\u9A82"+
+        "\u9A83\u9A84\uE9E6\uE9E7\u9A85\u9A86\uD6B3\u9A87"+
+        "\u9A88\u9A89\uE9E9\uE9EA\u9A8A\u9A8B\u9A8C\u9A8D"+
+        "\u9A8E\uE9EB\u9A8F\u9A90\u9A91\u9A92\u9A93\u9A94"+
+        "\u9A95\u9A96\uE9EC\u9A97\u9A98\u9A99\u9A9A\u9A9B"+
+        "\u9A9C\u9A9D\u9A9E\uECAF\uC5B9\uB6CE\u9A9F\uD2F3"+
+        "\u9AA0\u9AA1\u9AA2\u9AA3\u9AA4\u9AA5\u9AA6\uB5EE"+
+        "\u9AA7\uBBD9\uECB1\u9AA8\u9AA9\uD2E3\u9AAA\u9AAB"+
+        "\u9AAC\u9AAD\u9AAE\uCEE3\u9AAF\uC4B8\u9AB0\uC3BF"+
+        "\u9AB1\u9AB2\uB6BE\uD8B9\uB1C8\uB1CF\uB1D1\uC5FE"+
+        "\u9AB3\uB1D0\u9AB4\uC3AB\u9AB5\u9AB6\u9AB7\u9AB8"+
+        "\u9AB9\uD5B1\u9ABA\u9ABB\u9ABC\u9ABD\u9ABE\u9ABF"+
+        "\u9AC0\u9AC1\uEBA4\uBAC1\u9AC2\u9AC3\u9AC4\uCCBA"+
+        "\u9AC5\u9AC6\u9AC7\uEBA5\u9AC8\uEBA7\u9AC9\u9ACA"+
+        "\u9ACB\uEBA8\u9ACC\u9ACD\u9ACE\uEBA6\u9ACF\u9AD0"+
+        "\u9AD1\u9AD2\u9AD3\u9AD4\u9AD5\uEBA9\uEBAB\uEBAA"+
+        "\u9AD6\u9AD7\u9AD8\u9AD9\u9ADA\uEBAC\u9ADB\uCACF"+
+        "\uD8B5\uC3F1\u9ADC\uC3A5\uC6F8\uEBAD\uC4CA\u9ADD"+
+        "\uEBAE\uEBAF\uEBB0\uB7D5\u9ADE\u9ADF\u9AE0\uB7FA"+
+        "\u9AE1\uEBB1\uC7E2\u9AE2\uEBB3\u9AE3\uBAA4\uD1F5"+
+        "\uB0B1\uEBB2\uEBB4\u9AE4\u9AE5\u9AE6\uB5AA\uC2C8"+
+        "\uC7E8\u9AE7\uEBB5\u9AE8\uCBAE\uE3DF\u9AE9\u9AEA"+
+        "\uD3C0\u9AEB\u9AEC\u9AED\u9AEE\uD9DB\u9AEF\u9AF0"+
+        "\uCDA1\uD6AD\uC7F3\u9AF1\u9AF2\u9AF3\uD9E0\uBBE3"+
+        "\u9AF4\uBABA\uE3E2\u9AF5\u9AF6\u9AF7\u9AF8\u9AF9"+
+        "\uCFAB\u9AFA\u9AFB\u9AFC\uE3E0\uC9C7\u9AFD\uBAB9"+
+        "\u9AFE\u9B40\u9B41\uD1B4\uE3E1\uC8EA\uB9AF\uBDAD"+
+        "\uB3D8\uCEDB\u9B42\u9B43\uCCC0\u9B44\u9B45\u9B46"+
+        "\uE3E8\uE3E9\uCDF4\u9B47\u9B48\u9B49\u9B4A\u9B4B"+
+        "\uCCAD\u9B4C\uBCB3\u9B4D\uE3EA\u9B4E\uE3EB\u9B4F"+
+        "\u9B50\uD0DA\u9B51\u9B52\u9B53\uC6FB\uB7DA\u9B54"+
+        "\u9B55\uC7DF\uD2CA\uCED6\u9B56\uE3E4\uE3EC\u9B57"+
+        "\uC9F2\uB3C1\u9B58\u9B59\uE3E7\u9B5A\u9B5B\uC6E3"+
+        "\uE3E5\u9B5C\u9B5D\uEDB3\uE3E6\u9B5E\u9B5F\u9B60"+
+        "\u9B61\uC9B3\u9B62\uC5E6\u9B63\u9B64\u9B65\uB9B5"+
+        "\u9B66\uC3BB\u9B67\uE3E3\uC5BD\uC1A4\uC2D9\uB2D7"+
+        "\u9B68\uE3ED\uBBA6\uC4AD\u9B69\uE3F0\uBEDA\u9B6A"+
+        "\u9B6B\uE3FB\uE3F5\uBAD3\u9B6C\u9B6D\u9B6E\u9B6F"+
+        "\uB7D0\uD3CD\u9B70\uD6CE\uD5D3\uB9C1\uD5B4\uD1D8"+
+        "\u9B71\u9B72\u9B73\u9B74\uD0B9\uC7F6\u9B75\u9B76"+
+        "\u9B77\uC8AA\uB2B4\u9B78\uC3DA\u9B79\u9B7A\u9B7B"+
+        "\uE3EE\u9B7C\u9B7D\uE3FC\uE3EF\uB7A8\uE3F7\uE3F4"+
+        "\u9B7E\u9B80\u9B81\uB7BA\u9B82\u9B83\uC5A2\u9B84"+
+        "\uE3F6\uC5DD\uB2A8\uC6FC\u9B85\uC4E0\u9B86\u9B87"+
+        "\uD7A2\u9B88\uC0E1\uE3F9\u9B89\u9B8A\uE3FA\uE3FD"+
+        "\uCCA9\uE3F3\u9B8B\uD3BE\u9B8C\uB1C3\uEDB4\uE3F1"+
+        "\uE3F2\u9B8D\uE3F8\uD0BA\uC6C3\uD4F3\uE3FE\u9B8E"+
+        "\u9B8F\uBDE0\u9B90\u9B91\uE4A7\u9B92\u9B93\uE4A6"+
+        "\u9B94\u9B95\u9B96\uD1F3\uE4A3\u9B97\uE4A9\u9B98"+
+        "\u9B99\u9B9A\uC8F7\u9B9B\u9B9C\u9B9D\u9B9E\uCFB4"+
+        "\u9B9F\uE4A8\uE4AE\uC2E5\u9BA0\u9BA1\uB6B4\u9BA2"+
+        "\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7\uBDF2\u9BA8\uE4A2"+
+        "\u9BA9\u9BAA\uBAE9\uE4AA\u9BAB\u9BAC\uE4AC\u9BAD"+
+        "\u9BAE\uB6FD\uD6DE\uE4B2\u9BAF\uE4AD\u9BB0\u9BB1"+
+        "\u9BB2\uE4A1\u9BB3\uBBEE\uCDDD\uC7A2\uC5C9\u9BB4"+
+        "\u9BB5\uC1F7\u9BB6\uE4A4\u9BB7\uC7B3\uBDAC\uBDBD"+
+        "\uE4A5\u9BB8\uD7C7\uB2E2\u9BB9\uE4AB\uBCC3\uE4AF"+
+        "\u9BBA\uBBEB\uE4B0\uC5A8\uE4B1\u9BBB\u9BBC\u9BBD"+
+        "\u9BBE\uD5E3\uBFA3\u9BBF\uE4BA\u9BC0\uE4B7\u9BC1"+
+        "\uE4BB\u9BC2\u9BC3\uE4BD\u9BC4\u9BC5\uC6D6\u9BC6"+
+        "\u9BC7\uBAC6\uC0CB\u9BC8\u9BC9\u9BCA\uB8A1\uE4B4"+
+        "\u9BCB\u9BCC\u9BCD\u9BCE\uD4A1\u9BCF\u9BD0\uBAA3"+
+        "\uBDFE\u9BD1\u9BD2\u9BD3\uE4BC\u9BD4\u9BD5\u9BD6"+
+        "\u9BD7\u9BD8\uCDBF\u9BD9\u9BDA\uC4F9\u9BDB\u9BDC"+
+        "\uCFFB\uC9E6\u9BDD\u9BDE\uD3BF\u9BDF\uCFD1\u9BE0"+
+        "\u9BE1\uE4B3\u9BE2\uE4B8\uE4B9\uCCE9\u9BE3\u9BE4"+
+        "\u9BE5\u9BE6\u9BE7\uCCCE\u9BE8\uC0D4\uE4B5\uC1B0"+
+        "\uE4B6\uCED0\u9BE9\uBBC1\uB5D3\u9BEA\uC8F3\uBDA7"+
+        "\uD5C7\uC9AC\uB8A2\uE4CA\u9BEB\u9BEC\uE4CC\uD1C4"+
+        "\u9BED\u9BEE\uD2BA\u9BEF\u9BF0\uBAAD\u9BF1\u9BF2"+
+        "\uBAD4\u9BF3\u9BF4\u9BF5\u9BF6\u9BF7\u9BF8\uE4C3"+
+        "\uB5ED\u9BF9\u9BFA\u9BFB\uD7CD\uE4C0\uCFFD\uE4BF"+
+        "\u9BFC\u9BFD\u9BFE\uC1DC\uCCCA\u9C40\u9C41\u9C42"+
+        "\u9C43\uCAE7\u9C44\u9C45\u9C46\u9C47\uC4D7\u9C48"+
+        "\uCCD4\uE4C8\u9C49\u9C4A\u9C4B\uE4C7\uE4C1\u9C4C"+
+        "\uE4C4\uB5AD\u9C4D\u9C4E\uD3D9\u9C4F\uE4C6\u9C50"+
+        "\u9C51\u9C52\u9C53\uD2F9\uB4E3\u9C54\uBBB4\u9C55"+
+        "\u9C56\uC9EE\u9C57\uB4BE\u9C58\u9C59\u9C5A\uBBEC"+
+        "\u9C5B\uD1CD\u9C5C\uCCED\uEDB5\u9C5D\u9C5E\u9C5F"+
+        "\u9C60\u9C61\u9C62\u9C63\u9C64\uC7E5\u9C65\u9C66"+
+        "\u9C67\u9C68\uD4A8\u9C69\uE4CB\uD7D5\uE4C2\u9C6A"+
+        "\uBDA5\uE4C5\u9C6B\u9C6C\uD3E6\u9C6D\uE4C9\uC9F8"+
+        "\u9C6E\u9C6F\uE4BE\u9C70\u9C71\uD3E5\u9C72\u9C73"+
+        "\uC7FE\uB6C9\u9C74\uD4FC\uB2B3\uE4D7\u9C75\u9C76"+
+        "\u9C77\uCEC2\u9C78\uE4CD\u9C79\uCEBC\u9C7A\uB8DB"+
+        "\u9C7B\u9C7C\uE4D6\u9C7D\uBFCA\u9C7E\u9C80\u9C81"+
+        "\uD3CE\u9C82\uC3EC\u9C83\u9C84\u9C85\u9C86\u9C87"+
+        "\u9C88\u9C89\u9C8A\uC5C8\uE4D8\u9C8B\u9C8C\u9C8D"+
+        "\u9C8E\u9C8F\u9C90\u9C91\u9C92\uCDC4\uE4CF\u9C93"+
+        "\u9C94\u9C95\u9C96\uE4D4\uE4D5\u9C97\uBAFE\u9C98"+
+        "\uCFE6\u9C99\u9C9A\uD5BF\u9C9B\u9C9C\u9C9D\uE4D2"+
+        "\u9C9E\u9C9F\u9CA0\u9CA1\u9CA2\u9CA3\u9CA4\u9CA5"+
+        "\u9CA6\u9CA7\u9CA8\uE4D0\u9CA9\u9CAA\uE4CE\u9CAB"+
+        "\u9CAC\u9CAD\u9CAE\u9CAF\u9CB0\u9CB1\u9CB2\u9CB3"+
+        "\u9CB4\u9CB5\u9CB6\u9CB7\u9CB8\u9CB9\uCDE5\uCAAA"+
+        "\u9CBA\u9CBB\u9CBC\uC0A3\u9CBD\uBDA6\uE4D3\u9CBE"+
+        "\u9CBF\uB8C8\u9CC0\u9CC1\u9CC2\u9CC3\u9CC4\uE4E7"+
+        "\uD4B4\u9CC5\u9CC6\u9CC7\u9CC8\u9CC9\u9CCA\u9CCB"+
+        "\uE4DB\u9CCC\u9CCD\u9CCE\uC1EF\u9CCF\u9CD0\uE4E9"+
+        "\u9CD1\u9CD2\uD2E7\u9CD3\u9CD4\uE4DF\u9CD5\uE4E0"+
+        "\u9CD6\u9CD7\uCFAA\u9CD8\u9CD9\u9CDA\u9CDB\uCBDD"+
+        "\u9CDC\uE4DA\uE4D1\u9CDD\uE4E5\u9CDE\uC8DC\uE4E3"+
+        "\u9CDF\u9CE0\uC4E7\uE4E2\u9CE1\uE4E1\u9CE2\u9CE3"+
+        "\u9CE4\uB3FC\uE4E8\u9CE5\u9CE6\u9CE7\u9CE8\uB5E1"+
+        "\u9CE9\u9CEA\u9CEB\uD7CC\u9CEC\u9CED\u9CEE\uE4E6"+
+        "\u9CEF\uBBAC\u9CF0\uD7D2\uCCCF\uEBF8\u9CF1\uE4E4"+
+        "\u9CF2\u9CF3\uB9F6\u9CF4\u9CF5\u9CF6\uD6CD\uE4D9"+
+        "\uE4DC\uC2FA\uE4DE\u9CF7\uC2CB\uC0C4\uC2D0\u9CF8"+
+        "\uB1F5\uCCB2\u9CF9\u9CFA\u9CFB\u9CFC\u9CFD\u9CFE"+
+        "\u9D40\u9D41\u9D42\u9D43\uB5CE\u9D44\u9D45\u9D46"+
+        "\u9D47\uE4EF\u9D48\u9D49\u9D4A\u9D4B\u9D4C\u9D4D"+
+        "\u9D4E\u9D4F\uC6AF\u9D50\u9D51\u9D52\uC6E1\u9D53"+
+        "\u9D54\uE4F5\u9D55\u9D56\u9D57\u9D58\u9D59\uC2A9"+
+        "\u9D5A\u9D5B\u9D5C\uC0EC\uD1DD\uE4EE\u9D5D\u9D5E"+
+        "\u9D5F\u9D60\u9D61\u9D62\u9D63\u9D64\u9D65\u9D66"+
+        "\uC4AE\u9D67\u9D68\u9D69\uE4ED\u9D6A\u9D6B\u9D6C"+
+        "\u9D6D\uE4F6\uE4F4\uC2FE\u9D6E\uE4DD\u9D6F\uE4F0"+
+        "\u9D70\uCAFE\u9D71\uD5C4\u9D72\u9D73\uE4F1\u9D74"+
+        "\u9D75\u9D76\u9D77\u9D78\u9D79\u9D7A\uD1FA\u9D7B"+
+        "\u9D7C\u9D7D\u9D7E\u9D80\u9D81\u9D82\uE4EB\uE4EC"+
+        "\u9D83\u9D84\u9D85\uE4F2\u9D86\uCEAB\u9D87\u9D88"+
+        "\u9D89\u9D8A\u9D8B\u9D8C\u9D8D\u9D8E\u9D8F\u9D90"+
+        "\uC5CB\u9D91\u9D92\u9D93\uC7B1\u9D94\uC2BA\u9D95"+
+        "\u9D96\u9D97\uE4EA\u9D98\u9D99\u9D9A\uC1CA\u9D9B"+
+        "\u9D9C\u9D9D\u9D9E\u9D9F\u9DA0\uCCB6\uB3B1\u9DA1"+
+        "\u9DA2\u9DA3\uE4FB\u9DA4\uE4F3\u9DA5\u9DA6\u9DA7"+
+        "\uE4FA\u9DA8\uE4FD\u9DA9\uE4FC\u9DAA\u9DAB\u9DAC"+
+        "\u9DAD\u9DAE\u9DAF\u9DB0\uB3CE\u9DB1\u9DB2\u9DB3"+
+        "\uB3BA\uE4F7\u9DB4\u9DB5\uE4F9\uE4F8\uC5EC\u9DB6"+
+        "\u9DB7\u9DB8\u9DB9\u9DBA\u9DBB\u9DBC\u9DBD\u9DBE"+
+        "\u9DBF\u9DC0\u9DC1\u9DC2\uC0BD\u9DC3\u9DC4\u9DC5"+
+        "\u9DC6\uD4E8\u9DC7\u9DC8\u9DC9\u9DCA\u9DCB\uE5A2"+
+        "\u9DCC\u9DCD\u9DCE\u9DCF\u9DD0\u9DD1\u9DD2\u9DD3"+
+        "\u9DD4\u9DD5\u9DD6\uB0C4\u9DD7\u9DD8\uE5A4\u9DD9"+
+        "\u9DDA\uE5A3\u9DDB\u9DDC\u9DDD\u9DDE\u9DDF\u9DE0"+
+        "\uBCA4\u9DE1\uE5A5\u9DE2\u9DE3\u9DE4\u9DE5\u9DE6"+
+        "\u9DE7\uE5A1\u9DE8\u9DE9\u9DEA\u9DEB\u9DEC\u9DED"+
+        "\u9DEE\uE4FE\uB1F4\u9DEF\u9DF0\u9DF1\u9DF2\u9DF3"+
+        "\u9DF4\u9DF5\u9DF6\u9DF7\u9DF8\u9DF9\uE5A8\u9DFA"+
+        "\uE5A9\uE5A6\u9DFB\u9DFC\u9DFD\u9DFE\u9E40\u9E41"+
+        "\u9E42\u9E43\u9E44\u9E45\u9E46\u9E47\uE5A7\uE5AA"+
+        "\u9E48\u9E49\u9E4A\u9E4B\u9E4C\u9E4D\u9E4E\u9E4F"+
+        "\u9E50\u9E51\u9E52\u9E53\u9E54\u9E55\u9E56\u9E57";
+
+    private final static String innerEncoderIndex7=
+        "\u9E58\u9E59\u9E5A\u9E5B\u9E5C\u9E5D\u9E5E\u9E5F"+
+        "\u9E60\u9E61\u9E62\u9E63\u9E64\u9E65\u9E66\u9E67"+
+        "\u9E68\uC6D9\u9E69\u9E6A\u9E6B\u9E6C\u9E6D\u9E6E"+
+        "\u9E6F\u9E70\uE5AB\uE5AD\u9E71\u9E72\u9E73\u9E74"+
+        "\u9E75\u9E76\u9E77\uE5AC\u9E78\u9E79\u9E7A\u9E7B"+
+        "\u9E7C\u9E7D\u9E7E\u9E80\u9E81\u9E82\u9E83\u9E84"+
+        "\u9E85\u9E86\u9E87\u9E88\u9E89\uE5AF\u9E8A\u9E8B"+
+        "\u9E8C\uE5AE\u9E8D\u9E8E\u9E8F\u9E90\u9E91\u9E92"+
+        "\u9E93\u9E94\u9E95\u9E96\u9E97\u9E98\u9E99\u9E9A"+
+        "\u9E9B\u9E9C\u9E9D\u9E9E\uB9E0\u9E9F\u9EA0\uE5B0"+
+        "\u9EA1\u9EA2\u9EA3\u9EA4\u9EA5\u9EA6\u9EA7\u9EA8"+
+        "\u9EA9\u9EAA\u9EAB\u9EAC\u9EAD\u9EAE\uE5B1\u9EAF"+
+        "\u9EB0\u9EB1\u9EB2\u9EB3\u9EB4\u9EB5\u9EB6\u9EB7"+
+        "\u9EB8\u9EB9\u9EBA\uBBF0\uECE1\uC3F0\u9EBB\uB5C6"+
+        "\uBBD2\u9EBC\u9EBD\u9EBE\u9EBF\uC1E9\uD4EE\u9EC0"+
+        "\uBEC4\u9EC1\u9EC2\u9EC3\uD7C6\u9EC4\uD4D6\uB2D3"+
+        "\uECBE\u9EC5\u9EC6\u9EC7\u9EC8\uEAC1\u9EC9\u9ECA"+
+        "\u9ECB\uC2AF\uB4B6\u9ECC\u9ECD\u9ECE\uD1D7\u9ECF"+
+        "\u9ED0\u9ED1\uB3B4\u9ED2\uC8B2\uBFBB\uECC0\u9ED3"+
+        "\u9ED4\uD6CB\u9ED5\u9ED6\uECBF\uECC1\u9ED7\u9ED8"+
+        "\u9ED9\u9EDA\u9EDB\u9EDC\u9EDD\u9EDE\u9EDF\u9EE0"+
+        "\u9EE1\u9EE2\u9EE3\uECC5\uBEE6\uCCBF\uC5DA\uBEBC"+
+        "\u9EE4\uECC6\u9EE5\uB1FE\u9EE6\u9EE7\u9EE8\uECC4"+
+        "\uD5A8\uB5E3\u9EE9\uECC2\uC1B6\uB3E3\u9EEA\u9EEB"+
+        "\uECC3\uCBB8\uC0C3\uCCFE\u9EEC\u9EED\u9EEE\u9EEF"+
+        "\uC1D2\u9EF0\uECC8\u9EF1\u9EF2\u9EF3\u9EF4\u9EF5"+
+        "\u9EF6\u9EF7\u9EF8\u9EF9\u9EFA\u9EFB\u9EFC\u9EFD"+
+        "\uBAE6\uC0D3\u9EFE\uD6F2\u9F40\u9F41\u9F42\uD1CC"+
+        "\u9F43\u9F44\u9F45\u9F46\uBFBE\u9F47\uB7B3\uC9D5"+
+        "\uECC7\uBBE2\u9F48\uCCCC\uBDFD\uC8C8\u9F49\uCFA9"+
+        "\u9F4A\u9F4B\u9F4C\u9F4D\u9F4E\u9F4F\u9F50\uCDE9"+
+        "\u9F51\uC5EB\u9F52\u9F53\u9F54\uB7E9\u9F55\u9F56"+
+        "\u9F57\u9F58\u9F59\u9F5A\u9F5B\u9F5C\u9F5D\u9F5E"+
+        "\u9F5F\uD1C9\uBAB8\u9F60\u9F61\u9F62\u9F63\u9F64"+
+        "\uECC9\u9F65\u9F66\uECCA\u9F67\uBBC0\uECCB\u9F68"+
+        "\uECE2\uB1BA\uB7D9\u9F69\u9F6A\u9F6B\u9F6C\u9F6D"+
+        "\u9F6E\u9F6F\u9F70\u9F71\u9F72\u9F73\uBDB9\u9F74"+
+        "\u9F75\u9F76\u9F77\u9F78\u9F79\u9F7A\u9F7B\uECCC"+
+        "\uD1E6\uECCD\u9F7C\u9F7D\u9F7E\u9F80\uC8BB\u9F81"+
+        "\u9F82\u9F83\u9F84\u9F85\u9F86\u9F87\u9F88\u9F89"+
+        "\u9F8A\u9F8B\u9F8C\u9F8D\u9F8E\uECD1\u9F8F\u9F90"+
+        "\u9F91\u9F92\uECD3\u9F93\uBBCD\u9F94\uBCE5\u9F95"+
+        "\u9F96\u9F97\u9F98\u9F99\u9F9A\u9F9B\u9F9C\u9F9D"+
+        "\u9F9E\u9F9F\u9FA0\u9FA1\uECCF\u9FA2\uC9B7\u9FA3"+
+        "\u9FA4\u9FA5\u9FA6\u9FA7\uC3BA\u9FA8\uECE3\uD5D5"+
+        "\uECD0\u9FA9\u9FAA\u9FAB\u9FAC\u9FAD\uD6F3\u9FAE"+
+        "\u9FAF\u9FB0\uECD2\uECCE\u9FB1\u9FB2\u9FB3\u9FB4"+
+        "\uECD4\u9FB5\uECD5\u9FB6\u9FB7\uC9BF\u9FB8\u9FB9"+
+        "\u9FBA\u9FBB\u9FBC\u9FBD\uCFA8\u9FBE\u9FBF\u9FC0"+
+        "\u9FC1\u9FC2\uD0DC\u9FC3\u9FC4\u9FC5\u9FC6\uD1AC"+
+        "\u9FC7\u9FC8\u9FC9\u9FCA\uC8DB\u9FCB\u9FCC\u9FCD"+
+        "\uECD6\uCEF5\u9FCE\u9FCF\u9FD0\u9FD1\u9FD2\uCAEC"+
+        "\uECDA\u9FD3\u9FD4\u9FD5\u9FD6\u9FD7\u9FD8\u9FD9"+
+        "\uECD9\u9FDA\u9FDB\u9FDC\uB0BE\u9FDD\u9FDE\u9FDF"+
+        "\u9FE0\u9FE1\u9FE2\uECD7\u9FE3\uECD8\u9FE4\u9FE5"+
+        "\u9FE6\uECE4\u9FE7\u9FE8\u9FE9\u9FEA\u9FEB\u9FEC"+
+        "\u9FED\u9FEE\u9FEF\uC8BC\u9FF0\u9FF1\u9FF2\u9FF3"+
+        "\u9FF4\u9FF5\u9FF6\u9FF7\u9FF8\u9FF9\uC1C7\u9FFA"+
+        "\u9FFB\u9FFC\u9FFD\u9FFE\uECDC\uD1E0\uA040\uA041"+
+        "\uA042\uA043\uA044\uA045\uA046\uA047\uA048\uA049"+
+        "\uECDB\uA04A\uA04B\uA04C\uA04D\uD4EF\uA04E\uECDD"+
+        "\uA04F\uA050\uA051\uA052\uA053\uA054\uDBC6\uA055"+
+        "\uA056\uA057\uA058\uA059\uA05A\uA05B\uA05C\uA05D"+
+        "\uA05E\uECDE\uA05F\uA060\uA061\uA062\uA063\uA064"+
+        "\uA065\uA066\uA067\uA068\uA069\uA06A\uB1AC\uA06B"+
+        "\uA06C\uA06D\uA06E\uA06F\uA070\uA071\uA072\uA073"+
+        "\uA074\uA075\uA076\uA077\uA078\uA079\uA07A\uA07B"+
+        "\uA07C\uA07D\uA07E\uA080\uA081\uECDF\uA082\uA083"+
+        "\uA084\uA085\uA086\uA087\uA088\uA089\uA08A\uA08B"+
+        "\uECE0\uA08C\uD7A6\uA08D\uC5C0\uA08E\uA08F\uA090"+
+        "\uEBBC\uB0AE\uA091\uA092\uA093\uBEF4\uB8B8\uD2AF"+
+        "\uB0D6\uB5F9\uA094\uD8B3\uA095\uCBAC\uA096\uE3DD"+
+        "\uA097\uA098\uA099\uA09A\uA09B\uA09C\uA09D\uC6AC"+
+        "\uB0E6\uA09E\uA09F\uA0A0\uC5C6\uEBB9\uA0A1\uA0A2"+
+        "\uA0A3\uA0A4\uEBBA\uA0A5\uA0A6\uA0A7\uEBBB\uA0A8"+
+        "\uA0A9\uD1C0\uA0AA\uC5A3\uA0AB\uEAF2\uA0AC\uC4B2"+
+        "\uA0AD\uC4B5\uC0CE\uA0AE\uA0AF\uA0B0\uEAF3\uC4C1"+
+        "\uA0B1\uCEEF\uA0B2\uA0B3\uA0B4\uA0B5\uEAF0\uEAF4"+
+        "\uA0B6\uA0B7\uC9FC\uA0B8\uA0B9\uC7A3\uA0BA\uA0BB"+
+        "\uA0BC\uCCD8\uCEFE\uA0BD\uA0BE\uA0BF\uEAF5\uEAF6"+
+        "\uCFAC\uC0E7\uA0C0\uA0C1\uEAF7\uA0C2\uA0C3\uA0C4"+
+        "\uA0C5\uA0C6\uB6BF\uEAF8\uA0C7\uEAF9\uA0C8\uEAFA"+
+        "\uA0C9\uA0CA\uEAFB\uA0CB\uA0CC\uA0CD\uA0CE\uA0CF"+
+        "\uA0D0\uA0D1\uA0D2\uA0D3\uA0D4\uA0D5\uA0D6\uEAF1"+
+        "\uA0D7\uA0D8\uA0D9\uA0DA\uA0DB\uA0DC\uA0DD\uA0DE"+
+        "\uA0DF\uA0E0\uA0E1\uA0E2\uC8AE\uE1EB\uA0E3\uB7B8"+
+        "\uE1EC\uA0E4\uA0E5\uA0E6\uE1ED\uA0E7\uD7B4\uE1EE"+
+        "\uE1EF\uD3CC\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED"+
+        "\uA0EE\uE1F1\uBFF1\uE1F0\uB5D2\uA0EF\uA0F0\uA0F1"+
+        "\uB1B7\uA0F2\uA0F3\uA0F4\uA0F5\uE1F3\uE1F2\uA0F6"+
+        "\uBAFC\uA0F7\uE1F4\uA0F8\uA0F9\uA0FA\uA0FB\uB9B7"+
+        "\uA0FC\uBED1\uA0FD\uA0FE\uAA40\uAA41\uC4FC\uAA42"+
+        "\uBADD\uBDC6\uAA43\uAA44\uAA45\uAA46\uAA47\uAA48"+
+        "\uE1F5\uE1F7\uAA49\uAA4A\uB6C0\uCFC1\uCAA8\uE1F6"+
+        "\uD5F8\uD3FC\uE1F8\uE1FC\uE1F9\uAA4B\uAA4C\uE1FA"+
+        "\uC0EA\uAA4D\uE1FE\uE2A1\uC0C7\uAA4E\uAA4F\uAA50"+
+        "\uAA51\uE1FB\uAA52\uE1FD\uAA53\uAA54\uAA55\uAA56"+
+        "\uAA57\uAA58\uE2A5\uAA59\uAA5A\uAA5B\uC1D4\uAA5C"+
+        "\uAA5D\uAA5E\uAA5F\uE2A3\uAA60\uE2A8\uB2FE\uE2A2"+
+        "\uAA61\uAA62\uAA63\uC3CD\uB2C2\uE2A7\uE2A6\uAA64"+
+        "\uAA65\uE2A4\uE2A9\uAA66\uAA67\uE2AB\uAA68\uAA69"+
+        "\uAA6A\uD0C9\uD6ED\uC3A8\uE2AC\uAA6B\uCFD7\uAA6C"+
+        "\uAA6D\uE2AE\uAA6E\uAA6F\uBAEF\uAA70\uAA71\uE9E0"+
+        "\uE2AD\uE2AA\uAA72\uAA73\uAA74\uAA75\uBBAB\uD4B3"+
+        "\uAA76\uAA77\uAA78\uAA79\uAA7A\uAA7B\uAA7C\uAA7D"+
+        "\uAA7E\uAA80\uAA81\uAA82\uAA83\uE2B0\uAA84\uAA85"+
+        "\uE2AF\uAA86\uE9E1\uAA87\uAA88\uAA89\uAA8A\uE2B1"+
+        "\uAA8B\uAA8C\uAA8D\uAA8E\uAA8F\uAA90\uAA91\uAA92"+
+        "\uE2B2\uAA93\uAA94\uAA95\uAA96\uAA97\uAA98\uAA99"+
+        "\uAA9A\uAA9B\uAA9C\uAA9D\uE2B3\uCCA1\uAA9E\uE2B4"+
+        "\uAA9F\uAAA0\uAB40\uAB41\uAB42\uAB43\uAB44\uAB45"+
+        "\uAB46\uAB47\uAB48\uAB49\uAB4A\uAB4B\uE2B5\uAB4C"+
+        "\uAB4D\uAB4E\uAB4F\uAB50\uD0FE\uAB51\uAB52\uC2CA"+
+        "\uAB53\uD3F1\uAB54\uCDF5\uAB55\uAB56\uE7E0\uAB57"+
+        "\uAB58\uE7E1\uAB59\uAB5A\uAB5B\uAB5C\uBEC1\uAB5D"+
+        "\uAB5E\uAB5F\uAB60\uC2EA\uAB61\uAB62\uAB63\uE7E4"+
+        "\uAB64\uAB65\uE7E3\uAB66\uAB67\uAB68\uAB69\uAB6A"+
+        "\uAB6B\uCDE6\uAB6C\uC3B5\uAB6D\uAB6E\uE7E2\uBBB7"+
+        "\uCFD6\uAB6F\uC1E1\uE7E9\uAB70\uAB71\uAB72\uE7E8"+
+        "\uAB73\uAB74\uE7F4\uB2A3\uAB75\uAB76\uAB77\uAB78"+
+        "\uE7EA\uAB79\uE7E6\uAB7A\uAB7B\uAB7C\uAB7D\uAB7E"+
+        "\uE7EC\uE7EB\uC9BA\uAB80\uAB81\uD5E4\uAB82\uE7E5"+
+        "\uB7A9\uE7E7\uAB83\uAB84\uAB85\uAB86\uAB87\uAB88"+
+        "\uAB89\uE7EE\uAB8A\uAB8B\uAB8C\uAB8D\uE7F3\uAB8E"+
+        "\uD6E9\uAB8F\uAB90\uAB91\uAB92\uE7ED\uAB93\uE7F2"+
+        "\uAB94\uE7F1\uAB95\uAB96\uAB97\uB0E0\uAB98\uAB99"+
+        "\uAB9A\uAB9B\uE7F5\uAB9C\uAB9D\uAB9E\uAB9F\uABA0"+
+        "\uAC40\uAC41\uAC42\uAC43\uAC44\uAC45\uAC46\uAC47"+
+        "\uAC48\uAC49\uAC4A\uC7F2\uAC4B\uC0C5\uC0ED\uAC4C"+
+        "\uAC4D\uC1F0\uE7F0\uAC4E\uAC4F\uAC50\uAC51\uE7F6"+
+        "\uCBF6\uAC52\uAC53\uAC54\uAC55\uAC56\uAC57\uAC58"+
+        "\uAC59\uAC5A\uE8A2\uE8A1\uAC5B\uAC5C\uAC5D\uAC5E"+
+        "\uAC5F\uAC60\uD7C1\uAC61\uAC62\uE7FA\uE7F9\uAC63"+
+        "\uE7FB\uAC64\uE7F7\uAC65\uE7FE\uAC66\uE7FD\uAC67"+
+        "\uE7FC\uAC68\uAC69\uC1D5\uC7D9\uC5FD\uC5C3\uAC6A"+
+        "\uAC6B\uAC6C\uAC6D\uAC6E\uC7ED\uAC6F\uAC70\uAC71"+
+        "\uAC72\uE8A3\uAC73\uAC74\uAC75\uAC76\uAC77\uAC78"+
+        "\uAC79\uAC7A\uAC7B\uAC7C\uAC7D\uAC7E\uAC80\uAC81"+
+        "\uAC82\uAC83\uAC84\uAC85\uAC86\uE8A6\uAC87\uE8A5"+
+        "\uAC88\uE8A7\uBAF7\uE7F8\uE8A4\uAC89\uC8F0\uC9AA"+
+        "\uAC8A\uAC8B\uAC8C\uAC8D\uAC8E\uAC8F\uAC90\uAC91"+
+        "\uAC92\uAC93\uAC94\uAC95\uAC96\uE8A9\uAC97\uAC98"+
+        "\uB9E5\uAC99\uAC9A\uAC9B\uAC9C\uAC9D\uD1FE\uE8A8"+
+        "\uAC9E\uAC9F\uACA0\uAD40\uAD41\uAD42\uE8AA\uAD43"+
+        "\uE8AD\uE8AE\uAD44\uC1A7\uAD45\uAD46\uAD47\uE8AF"+
+        "\uAD48\uAD49\uAD4A\uE8B0\uAD4B\uAD4C\uE8AC\uAD4D"+
+        "\uE8B4\uAD4E\uAD4F\uAD50\uAD51\uAD52\uAD53\uAD54"+
+        "\uAD55\uAD56\uAD57\uAD58\uE8AB\uAD59\uE8B1\uAD5A"+
+        "\uAD5B\uAD5C\uAD5D\uAD5E\uAD5F\uAD60\uAD61\uE8B5"+
+        "\uE8B2\uE8B3\uAD62\uAD63\uAD64\uAD65\uAD66\uAD67"+
+        "\uAD68\uAD69\uAD6A\uAD6B\uAD6C\uAD6D\uAD6E\uAD6F"+
+        "\uAD70\uAD71\uE8B7\uAD72\uAD73\uAD74\uAD75\uAD76"+
+        "\uAD77\uAD78\uAD79\uAD7A\uAD7B\uAD7C\uAD7D\uAD7E"+
+        "\uAD80\uAD81\uAD82\uAD83\uAD84\uAD85\uAD86\uAD87"+
+        "\uAD88\uAD89\uE8B6\uAD8A\uAD8B\uAD8C\uAD8D\uAD8E"+
+        "\uAD8F\uAD90\uAD91\uAD92\uB9CF\uAD93\uF0AC\uAD94"+
+        "\uF0AD\uAD95\uC6B0\uB0EA\uC8BF\uAD96\uCDDF\uAD97"+
+        "\uAD98\uAD99\uAD9A\uAD9B\uAD9C\uAD9D\uCECD\uEAB1"+
+        "\uAD9E\uAD9F\uADA0\uAE40\uEAB2\uAE41\uC6BF\uB4C9"+
+        "\uAE42\uAE43\uAE44\uAE45\uAE46\uAE47\uAE48\uEAB3"+
+        "\uAE49\uAE4A\uAE4B\uAE4C\uD5E7\uAE4D\uAE4E\uAE4F"+
+        "\uAE50\uAE51\uAE52\uAE53\uAE54\uDDF9\uAE55\uEAB4"+
+        "\uAE56\uEAB5\uAE57\uEAB6\uAE58\uAE59\uAE5A\uAE5B"+
+        "\uB8CA\uDFB0\uC9F5\uAE5C\uCCF0\uAE5D\uAE5E\uC9FA"+
+        "\uAE5F\uAE60\uAE61\uAE62\uAE63\uC9FB\uAE64\uAE65"+
+        "\uD3C3\uCBA6\uAE66\uB8A6\uF0AE\uB1C2\uAE67\uE5B8"+
+        "\uCCEF\uD3C9\uBCD7\uC9EA\uAE68\uB5E7\uAE69\uC4D0"+
+        "\uB5E9\uAE6A\uEEAE\uBBAD\uAE6B\uAE6C\uE7DE\uAE6D"+
+        "\uEEAF\uAE6E\uAE6F\uAE70\uAE71\uB3A9\uAE72\uAE73"+
+        "\uEEB2\uAE74\uAE75\uEEB1\uBDE7\uAE76\uEEB0\uCEB7"+
+        "\uAE77\uAE78\uAE79\uAE7A\uC5CF\uAE7B\uAE7C\uAE7D"+
+        "\uAE7E\uC1F4\uDBCE\uEEB3\uD0F3\uAE80\uAE81\uAE82"+
+        "\uAE83\uAE84\uAE85\uAE86\uAE87\uC2D4\uC6E8\uAE88"+
+        "\uAE89\uAE8A\uB7AC\uAE8B\uAE8C\uAE8D\uAE8E\uAE8F"+
+        "\uAE90\uAE91\uEEB4\uAE92\uB3EB\uAE93\uAE94\uAE95"+
+        "\uBBFB\uEEB5\uAE96\uAE97\uAE98\uAE99\uAE9A\uE7DC"+
+        "\uAE9B\uAE9C\uAE9D\uEEB6\uAE9E\uAE9F\uBDAE\uAEA0"+
+        "\uAF40\uAF41\uAF42\uF1E2\uAF43\uAF44\uAF45\uCAE8"+
+        "\uAF46\uD2C9\uF0DA\uAF47\uF0DB\uAF48\uF0DC\uC1C6"+
+        "\uAF49\uB8ED\uBECE\uAF4A\uAF4B\uF0DE\uAF4C\uC5B1"+
+        "\uF0DD\uD1F1\uAF4D\uF0E0\uB0CC\uBDEA\uAF4E\uAF4F"+
+        "\uAF50\uAF51\uAF52\uD2DF\uF0DF\uAF53\uB4AF\uB7E8"+
+        "\uF0E6\uF0E5\uC6A3\uF0E1\uF0E2\uB4C3\uAF54\uAF55"+
+        "\uF0E3\uD5EE\uAF56\uAF57\uCCDB\uBED2\uBCB2\uAF58"+
+        "\uAF59\uAF5A\uF0E8\uF0E7\uF0E4\uB2A1\uAF5B\uD6A2"+
+        "\uD3B8\uBEB7\uC8AC\uAF5C\uAF5D\uF0EA\uAF5E\uAF5F"+
+        "\uAF60\uAF61\uD1F7\uAF62\uD6CC\uBADB\uF0E9\uAF63"+
+        "\uB6BB\uAF64\uAF65\uCDB4\uAF66\uAF67\uC6A6\uAF68"+
+        "\uAF69\uAF6A\uC1A1\uF0EB\uF0EE\uAF6B\uF0ED\uF0F0"+
+        "\uF0EC\uAF6C\uBBBE\uF0EF\uAF6D\uAF6E\uAF6F\uAF70"+
+        "\uCCB5\uF0F2\uAF71\uAF72\uB3D5\uAF73\uAF74\uAF75"+
+        "\uAF76\uB1D4\uAF77\uAF78\uF0F3\uAF79\uAF7A\uF0F4"+
+        "\uF0F6\uB4E1\uAF7B\uF0F1\uAF7C\uF0F7\uAF7D\uAF7E"+
+        "\uAF80\uAF81\uF0FA\uAF82\uF0F8\uAF83\uAF84\uAF85"+
+        "\uF0F5\uAF86\uAF87\uAF88\uAF89\uF0FD\uAF8A\uF0F9"+
+        "\uF0FC\uF0FE\uAF8B\uF1A1\uAF8C\uAF8D\uAF8E\uCEC1"+
+        "\uF1A4\uAF8F\uF1A3\uAF90\uC1F6\uF0FB\uCADD\uAF91"+
+        "\uAF92\uB4F1\uB1F1\uCCB1\uAF93\uF1A6\uAF94\uAF95"+
+        "\uF1A7\uAF96\uAF97\uF1AC\uD5CE\uF1A9\uAF98\uAF99"+
+        "\uC8B3\uAF9A\uAF9B\uAF9C\uF1A2\uAF9D\uF1AB\uF1A8"+
+        "\uF1A5\uAF9E\uAF9F\uF1AA\uAFA0\uB040\uB041\uB042"+
+        "\uB043\uB044\uB045\uB046\uB0A9\uF1AD\uB047\uB048"+
+        "\uB049\uB04A\uB04B\uB04C\uF1AF\uB04D\uF1B1\uB04E"+
+        "\uB04F\uB050\uB051\uB052\uF1B0\uB053\uF1AE\uB054"+
+        "\uB055\uB056\uB057\uD1A2\uB058\uB059\uB05A\uB05B"+
+        "\uB05C\uB05D\uB05E\uF1B2\uB05F\uB060\uB061\uF1B3"+
+        "\uB062\uB063\uB064\uB065\uB066\uB067\uB068\uB069"+
+        "\uB9EF\uB06A\uB06B\uB5C7\uB06C\uB0D7\uB0D9\uB06D"+
+        "\uB06E\uB06F\uD4ED\uB070\uB5C4\uB071\uBDD4\uBBCA"+
+        "\uF0A7\uB072\uB073\uB8DE\uB074\uB075\uF0A8\uB076"+
+        "\uB077\uB0A8\uB078\uF0A9\uB079\uB07A\uCDEE\uB07B"+
+        "\uB07C\uF0AA\uB07D\uB07E\uB080\uB081\uB082\uB083"+
+        "\uB084\uB085\uB086\uB087\uF0AB\uB088\uB089\uB08A"+
+        "\uB08B\uB08C\uB08D\uB08E\uB08F\uB090\uC6A4\uB091"+
+        "\uB092\uD6E5\uF1E4\uB093\uF1E5\uB094\uB095\uB096"+
+        "\uB097\uB098\uB099\uB09A\uB09B\uB09C\uB09D\uC3F3"+
+        "\uB09E\uB09F\uD3DB\uB0A0\uB140\uD6D1\uC5E8\uB141"+
+        "\uD3AF\uB142\uD2E6\uB143\uB144\uEEC1\uB0BB\uD5B5"+
+        "\uD1CE\uBCE0\uBAD0\uB145\uBFF8\uB146\uB8C7\uB5C1"+
+        "\uC5CC\uB147\uB148\uCAA2\uB149\uB14A\uB14B\uC3CB"+
+        "\uB14C\uB14D\uB14E\uB14F\uB150\uEEC2\uB151\uB152"+
+        "\uB153\uB154\uB155\uB156\uB157\uB158\uC4BF\uB6A2"+
+        "\uB159\uEDEC\uC3A4\uB15A\uD6B1\uB15B\uB15C\uB15D"+
+        "\uCFE0\uEDEF\uB15E\uB15F\uC5CE\uB160\uB6DC\uB161"+
+        "\uB162\uCAA1\uB163\uB164\uEDED\uB165\uB166\uEDF0"+
+        "\uEDF1\uC3BC\uB167\uBFB4\uB168\uEDEE\uB169\uB16A"+
+        "\uB16B\uB16C\uB16D\uB16E\uB16F\uB170\uB171\uB172"+
+        "\uB173\uEDF4\uEDF2\uB174\uB175\uB176\uB177\uD5E6"+
+        "\uC3DF\uB178\uEDF3\uB179\uB17A\uB17B\uEDF6\uB17C"+
+        "\uD5A3\uD1A3\uB17D\uB17E\uB180\uEDF5\uB181\uC3D0"+
+        "\uB182\uB183\uB184\uB185\uB186\uEDF7\uBFF4\uBEEC"+
+        "\uEDF8\uB187\uCCF7\uB188\uD1DB\uB189\uB18A\uB18B"+
+        "\uD7C5\uD5F6\uB18C\uEDFC\uB18D\uB18E\uB18F\uEDFB"+
+        "\uB190\uB191\uB192\uB193\uB194\uB195\uB196\uB197"+
+        "\uEDF9\uEDFA\uB198\uB199\uB19A\uB19B\uB19C\uB19D"+
+        "\uB19E\uB19F\uEDFD\uBEA6\uB1A0\uB240\uB241\uB242"+
+        "\uB243\uCBAF\uEEA1\uB6BD\uB244\uEEA2\uC4C0\uB245"+
+        "\uEDFE\uB246\uB247\uBDDE\uB2C7\uB248\uB249\uB24A"+
+        "\uB24B\uB24C\uB24D\uB24E\uB24F\uB250\uB251\uB252"+
+        "\uB253\uB6C3\uB254\uB255\uB256\uEEA5\uD8BA\uEEA3"+
+        "\uEEA6\uB257\uB258\uB259\uC3E9\uB3F2\uB25A\uB25B"+
+        "\uB25C\uB25D\uB25E\uB25F\uEEA7\uEEA4\uCFB9\uB260"+
+        "\uB261\uEEA8\uC2F7\uB262\uB263\uB264\uB265\uB266"+
+        "\uB267\uB268\uB269\uB26A\uB26B\uB26C\uB26D\uEEA9"+
+        "\uEEAA\uB26E\uDEAB\uB26F\uB270\uC6B3\uB271\uC7C6"+
+        "\uB272\uD6F5\uB5C9\uB273\uCBB2\uB274\uB275\uB276"+
+        "\uEEAB\uB277\uB278\uCDAB\uB279\uEEAC\uB27A\uB27B"+
+        "\uB27C\uB27D\uB27E\uD5B0\uB280\uEEAD\uB281\uF6C4"+
+        "\uB282\uB283\uB284\uB285\uB286\uB287\uB288\uB289"+
+        "\uB28A\uB28B\uB28C\uB28D\uB28E\uDBC7\uB28F\uB290"+
+        "\uB291\uB292\uB293\uB294\uB295\uB296\uB297\uB4A3"+
+        "\uB298\uB299\uB29A\uC3AC\uF1E6\uB29B\uB29C\uB29D"+
+        "\uB29E\uB29F\uCAB8\uD2D3\uB2A0\uD6AA\uB340\uEFF2"+
+        "\uB341\uBED8\uB342\uBDC3\uEFF3\uB6CC\uB0AB\uB343"+
+        "\uB344\uB345\uB346\uCAAF\uB347\uB348\uEDB6\uB349"+
+        "\uEDB7\uB34A\uB34B\uB34C\uB34D\uCEF9\uB7AF\uBFF3"+
+        "\uEDB8\uC2EB\uC9B0\uB34E\uB34F\uB350\uB351\uB352"+
+        "\uB353\uEDB9\uB354\uB355\uC6F6\uBFB3\uB356\uB357"+
+        "\uB358\uEDBC\uC5F8\uB359\uD1D0\uB35A\uD7A9\uEDBA"+
+        "\uEDBB\uB35B\uD1E2\uB35C\uEDBF\uEDC0\uB35D\uEDC4"+
+        "\uB35E\uB35F\uB360\uEDC8\uB361\uEDC6\uEDCE\uD5E8"+
+        "\uB362\uEDC9\uB363\uB364\uEDC7\uEDBE\uB365\uB366"+
+        "\uC5E9\uB367\uB368\uB369\uC6C6\uB36A\uB36B\uC9E9"+
+        "\uD4D2\uEDC1\uEDC2\uEDC3\uEDC5\uB36C\uC0F9\uB36D"+
+        "\uB4A1\uB36E\uB36F\uB370\uB371\uB9E8\uB372\uEDD0"+
+        "\uB373\uB374\uB375\uB376\uEDD1\uB377\uEDCA\uB378"+
+        "\uEDCF\uB379\uCEF8\uB37A\uB37B\uCBB6\uEDCC\uEDCD"+
+        "\uB37C\uB37D\uB37E\uB380\uB381\uCFF5\uB382\uB383"+
+        "\uB384\uB385\uB386\uB387\uB388\uB389\uB38A\uB38B"+
+        "\uB38C\uB38D\uEDD2\uC1F2\uD3B2\uEDCB\uC8B7\uB38E"+
+        "\uB38F\uB390\uB391\uB392\uB393\uB394\uB395\uBCEF"+
+        "\uB396\uB397\uB398\uB399\uC5F0\uB39A\uB39B\uB39C"+
+        "\uB39D\uB39E\uB39F\uB3A0\uB440\uB441\uB442\uEDD6"+
+        "\uB443\uB5EF\uB444\uB445\uC2B5\uB0AD\uCBE9\uB446"+
+        "\uB447\uB1AE\uB448\uEDD4\uB449\uB44A\uB44B\uCDEB"+
+        "\uB5E2\uB44C\uEDD5\uEDD3\uEDD7\uB44D\uB44E\uB5FA"+
+        "\uB44F\uEDD8\uB450\uEDD9\uB451\uEDDC\uB452\uB1CC"+
+        "\uB453\uB454\uB455\uB456\uB457\uB458\uB459\uB45A"+
+        "\uC5F6\uBCEE\uEDDA\uCCBC\uB2EA\uB45B\uB45C\uB45D"+
+        "\uB45E\uEDDB\uB45F\uB460\uB461\uB462\uC4EB\uB463"+
+        "\uB464\uB4C5\uB465\uB466\uB467\uB0F5\uB468\uB469"+
+        "\uB46A\uEDDF\uC0DA\uB4E8\uB46B\uB46C\uB46D\uB46E"+
+        "\uC5CD\uB46F\uB470\uB471\uEDDD\uBFC4\uB472\uB473"+
+        "\uB474\uEDDE\uB475\uB476\uB477\uB478\uB479\uB47A"+
+        "\uB47B\uB47C\uB47D\uB47E\uB480\uB481\uB482\uB483"+
+        "\uC4A5\uB484\uB485\uB486\uEDE0\uB487\uB488\uB489"+
+        "\uB48A\uB48B\uEDE1\uB48C\uEDE3\uB48D\uB48E\uC1D7"+
+        "\uB48F\uB490\uBBC7\uB491\uB492\uB493\uB494\uB495"+
+        "\uB496\uBDB8\uB497\uB498\uB499\uEDE2\uB49A\uB49B"+
+        "\uB49C\uB49D\uB49E\uB49F\uB4A0\uB540\uB541\uB542"+
+        "\uB543\uB544\uB545\uEDE4\uB546\uB547\uB548\uB549"+
+        "\uB54A\uB54B\uB54C\uB54D\uB54E\uB54F\uEDE6\uB550"+
+        "\uB551\uB552\uB553\uB554\uEDE5\uB555\uB556\uB557"+
+        "\uB558\uB559\uB55A\uB55B\uB55C\uB55D\uB55E\uB55F"+
+        "\uB560\uB561\uB562\uB563\uEDE7\uB564\uB565\uB566"+
+        "\uB567\uB568\uCABE\uECEA\uC0F1\uB569\uC9E7\uB56A"+
+        "\uECEB\uC6EE\uB56B\uB56C\uB56D\uB56E\uECEC\uB56F"+
+        "\uC6ED\uECED\uB570\uB571\uB572\uB573\uB574\uB575"+
+        "\uB576\uB577\uB578\uECF0\uB579\uB57A\uD7E6\uECF3"+
+        "\uB57B\uB57C\uECF1\uECEE\uECEF\uD7A3\uC9F1\uCBEE"+
+        "\uECF4\uB57D\uECF2\uB57E\uB580\uCFE9\uB581\uECF6"+
+        "\uC6B1\uB582\uB583\uB584\uB585\uBCC0\uB586\uECF5"+
+        "\uB587\uB588\uB589\uB58A\uB58B\uB58C\uB58D\uB5BB"+
+        "\uBBF6\uB58E\uECF7\uB58F\uB590\uB591\uB592\uB593"+
+        "\uD9F7\uBDFB\uB594\uB595\uC2BB\uECF8\uB596\uB597"+
+        "\uB598\uB599\uECF9\uB59A\uB59B\uB59C\uB59D\uB8A3"+
+        "\uB59E\uB59F\uB5A0\uB640\uB641\uB642\uB643\uB644"+
+        "\uB645\uB646\uECFA\uB647\uB648\uB649\uB64A\uB64B"+
+        "\uB64C\uB64D\uB64E\uB64F\uB650\uB651\uB652\uECFB"+
+        "\uB653\uB654\uB655\uB656\uB657\uB658\uB659\uB65A"+
+        "\uB65B\uB65C\uB65D\uECFC\uB65E\uB65F\uB660\uB661"+
+        "\uB662\uD3ED\uD8AE\uC0EB\uB663\uC7DD\uBACC\uB664"+
+        "\uD0E3\uCBBD\uB665\uCDBA\uB666\uB667\uB8D1\uB668"+
+        "\uB669\uB1FC\uB66A\uC7EF\uB66B\uD6D6\uB66C\uB66D"+
+        "\uB66E\uBFC6\uC3EB\uB66F\uB670\uEFF5\uB671\uB672"+
+        "\uC3D8\uB673\uB674\uB675\uB676\uB677\uB678\uD7E2"+
+        "\uB679\uB67A\uB67B\uEFF7\uB3D3\uB67C\uC7D8\uD1ED"+
+        "\uB67D\uD6C8\uB67E\uEFF8\uB680\uEFF6\uB681\uBBFD"+
+        "\uB3C6\uB682\uB683\uB684\uB685\uB686\uB687\uB688"+
+        "\uBDD5\uB689\uB68A\uD2C6\uB68B\uBBE0\uB68C\uB68D"+
+        "\uCFA1\uB68E\uEFFC\uEFFB\uB68F\uB690\uEFF9\uB691"+
+        "\uB692\uB693\uB694\uB3CC\uB695\uC9D4\uCBB0\uB696"+
+        "\uB697\uB698\uB699\uB69A\uEFFE\uB69B\uB69C\uB0DE"+
+        "\uB69D\uB69E\uD6C9\uB69F\uB6A0\uB740\uEFFD\uB741"+
+        "\uB3ED\uB742\uB743\uF6D5\uB744\uB745\uB746\uB747"+
+        "\uB748\uB749\uB74A\uB74B\uB74C\uB74D\uB74E\uB74F"+
+        "\uB750\uB751\uB752\uCEC8\uB753\uB754\uB755\uF0A2"+
+        "\uB756\uF0A1\uB757\uB5BE\uBCDA\uBBFC\uB758\uB8E5"+
+        "\uB759\uB75A\uB75B\uB75C\uB75D\uB75E\uC4C2\uB75F"+
+        "\uB760\uB761\uB762\uB763\uB764\uB765\uB766\uB767"+
+        "\uB768\uF0A3\uB769\uB76A\uB76B\uB76C\uB76D\uCBEB"+
+        "\uB76E\uB76F\uB770\uB771\uB772\uB773\uB774\uB775"+
+        "\uB776\uB777\uB778\uB779\uB77A\uB77B\uB77C\uB77D"+
+        "\uB77E\uB780\uB781\uB782\uB783\uB784\uB785\uB786"+
+        "\uF0A6\uB787\uB788\uB789\uD1A8\uB78A\uBEBF\uC7EE"+
+        "\uF1B6\uF1B7\uBFD5\uB78B\uB78C\uB78D\uB78E\uB4A9"+
+        "\uF1B8\uCDBB\uB78F\uC7D4\uD5AD\uB790\uF1B9\uB791"+
+        "\uF1BA\uB792\uB793\uB794\uB795\uC7CF\uB796\uB797"+
+        "\uB798\uD2A4\uD6CF\uB799\uB79A\uF1BB\uBDD1\uB4B0"+
+        "\uBEBD\uB79B\uB79C\uB79D\uB4DC\uCED1\uB79E\uBFDF"+
+        "\uF1BD\uB79F\uB7A0\uB840\uB841\uBFFA\uF1BC\uB842"+
+        "\uF1BF\uB843\uB844\uB845\uF1BE\uF1C0\uB846\uB847"+
+        "\uB848\uB849\uB84A\uF1C1\uB84B\uB84C\uB84D\uB84E"+
+        "\uB84F\uB850\uB851\uB852\uB853\uB854\uB855\uC1FE"+
+        "\uB856\uB857\uB858\uB859\uB85A\uB85B\uB85C\uB85D"+
+        "\uB85E\uB85F\uB860\uC1A2\uB861\uB862\uB863\uB864"+
+        "\uB865\uB866\uB867\uB868\uB869\uB86A\uCAFA\uB86B"+
+        "\uB86C\uD5BE\uB86D\uB86E\uB86F\uB870\uBEBA\uBEB9"+
+        "\uD5C2\uB871\uB872\uBFA2\uB873\uCDAF\uF1B5\uB874"+
+        "\uB875\uB876\uB877\uB878\uB879\uBDDF\uB87A\uB6CB"+
+        "\uB87B\uB87C\uB87D\uB87E\uB880\uB881\uB882\uB883"+
+        "\uB884\uD6F1\uF3C3\uB885\uB886\uF3C4\uB887\uB8CD"+
+        "\uB888\uB889\uB88A\uF3C6\uF3C7\uB88B\uB0CA\uB88C"+
+        "\uF3C5\uB88D\uF3C9\uCBF1\uB88E\uB88F\uB890\uF3CB"+
+        "\uB891\uD0A6\uB892\uB893\uB1CA\uF3C8\uB894\uB895"+
+        "\uB896\uF3CF\uB897\uB5D1\uB898\uB899\uF3D7\uB89A"+
+        "\uF3D2\uB89B\uB89C\uB89D\uF3D4\uF3D3\uB7FB\uB89E"+
+        "\uB1BF\uB89F\uF3CE\uF3CA\uB5DA\uB8A0\uF3D0\uB940"+
+        "\uB941\uF3D1\uB942\uF3D5\uB943\uB944\uB945\uB946"+
+        "\uF3CD\uB947\uBCE3\uB948\uC1FD\uB949\uF3D6\uB94A"+
+        "\uB94B\uB94C\uB94D\uB94E\uB94F\uF3DA\uB950\uF3CC"+
+        "\uB951\uB5C8\uB952\uBDEE\uF3DC\uB953\uB954\uB7A4"+
+        "\uBFF0\uD6FE\uCDB2\uB955\uB4F0\uB956\uB2DF\uB957"+
+        "\uF3D8\uB958\uF3D9\uC9B8\uB959\uF3DD\uB95A\uB95B"+
+        "\uF3DE\uB95C\uF3E1\uB95D\uB95E\uB95F\uB960\uB961"+
+        "\uB962\uB963\uB964\uB965\uB966\uB967\uF3DF\uB968"+
+        "\uB969\uF3E3\uF3E2\uB96A\uB96B\uF3DB\uB96C\uBFEA"+
+        "\uB96D\uB3EF\uB96E\uF3E0\uB96F\uB970\uC7A9\uB971"+
+        "\uBCF2\uB972\uB973\uB974\uB975\uF3EB\uB976\uB977"+
+        "\uB978\uB979\uB97A\uB97B\uB97C\uB9BF\uB97D\uB97E"+
+        "\uF3E4\uB980\uB981\uB982\uB2AD\uBBFE\uB983\uCBE3"+
+        "\uB984\uB985\uB986\uB987\uF3ED\uF3E9\uB988\uB989"+
+        "\uB98A\uB9DC\uF3EE\uB98B\uB98C\uB98D\uF3E5\uF3E6"+
+        "\uF3EA\uC2E1\uF3EC\uF3EF\uF3E8\uBCFD\uB98E\uB98F"+
+        "\uB990\uCFE4\uB991\uB992\uF3F0\uB993\uB994\uB995"+
+        "\uF3E7\uB996\uB997\uB998\uB999\uB99A\uB99B\uB99C"+
+        "\uB99D\uF3F2\uB99E\uB99F\uB9A0\uBA40\uD7AD\uC6AA"+
+        "\uBA41\uBA42\uBA43\uBA44\uF3F3\uBA45\uBA46\uBA47"+
+        "\uBA48\uF3F1\uBA49\uC2A8\uBA4A\uBA4B\uBA4C\uBA4D"+
+        "\uBA4E\uB8DD\uF3F5\uBA4F\uBA50\uF3F4\uBA51\uBA52"+
+        "\uBA53\uB4DB\uBA54\uBA55\uBA56\uF3F6\uF3F7\uBA57"+
+        "\uBA58\uBA59\uF3F8\uBA5A\uBA5B\uBA5C\uC0BA\uBA5D"+
+        "\uBA5E\uC0E9\uBA5F\uBA60\uBA61\uBA62\uBA63\uC5F1"+
+        "\uBA64\uBA65\uBA66\uBA67\uF3FB\uBA68\uF3FA\uBA69"+
+        "\uBA6A\uBA6B\uBA6C\uBA6D\uBA6E\uBA6F\uBA70\uB4D8"+
+        "\uBA71\uBA72\uBA73\uF3FE\uF3F9\uBA74\uBA75\uF3FC"+
+        "\uBA76\uBA77\uBA78\uBA79\uBA7A\uBA7B\uF3FD\uBA7C"+
+        "\uBA7D\uBA7E\uBA80\uBA81\uBA82\uBA83\uBA84\uF4A1"+
+        "\uBA85\uBA86\uBA87\uBA88\uBA89\uBA8A\uF4A3\uBBC9"+
+        "\uBA8B\uBA8C\uF4A2\uBA8D\uBA8E\uBA8F\uBA90\uBA91"+
+        "\uBA92\uBA93\uBA94\uBA95\uBA96\uBA97\uBA98\uBA99"+
+        "\uF4A4\uBA9A\uBA9B\uBA9C\uBA9D\uBA9E\uBA9F\uB2BE"+
+        "\uF4A6\uF4A5\uBAA0\uBB40\uBB41\uBB42\uBB43\uBB44"+
+        "\uBB45\uBB46\uBB47\uBB48\uBB49\uBCAE\uBB4A\uBB4B"+
+        "\uBB4C\uBB4D\uBB4E\uBB4F\uBB50\uBB51\uBB52\uBB53"+
+        "\uBB54\uBB55\uBB56\uBB57\uBB58\uBB59\uBB5A\uBB5B"+
+        "\uBB5C\uBB5D\uBB5E\uBB5F\uBB60\uBB61\uBB62\uBB63"+
+        "\uBB64\uBB65\uBB66\uBB67\uBB68\uBB69\uBB6A\uBB6B"+
+        "\uBB6C\uBB6D\uBB6E\uC3D7\uD9E1\uBB6F\uBB70\uBB71"+
+        "\uBB72\uBB73\uBB74\uC0E0\uF4CC\uD7D1\uBB75\uBB76"+
+        "\uBB77\uBB78\uBB79\uBB7A\uBB7B\uBB7C\uBB7D\uBB7E"+
+        "\uBB80\uB7DB\uBB81\uBB82\uBB83\uBB84\uBB85\uBB86"+
+        "\uBB87\uF4CE\uC1A3\uBB88\uBB89\uC6C9\uBB8A\uB4D6"+
+        "\uD5B3\uBB8B\uBB8C\uBB8D\uF4D0\uF4CF\uF4D1\uCBDA"+
+        "\uBB8E\uBB8F\uF4D2\uBB90\uD4C1\uD6E0\uBB91\uBB92"+
+        "\uBB93\uBB94\uB7E0\uBB95\uBB96\uBB97\uC1B8\uBB98"+
+        "\uBB99\uC1BB\uF4D3\uBEAC\uBB9A\uBB9B\uBB9C\uBB9D"+
+        "\uBB9E\uB4E2\uBB9F\uBBA0\uF4D4\uF4D5\uBEAB\uBC40"+
+        "\uBC41\uF4D6\uBC42\uBC43\uBC44\uF4DB\uBC45\uF4D7"+
+        "\uF4DA\uBC46\uBAFD\uBC47\uF4D8\uF4D9\uBC48\uBC49"+
+        "\uBC4A\uBC4B\uBC4C\uBC4D\uBC4E\uB8E2\uCCC7\uF4DC"+
+        "\uBC4F\uB2DA\uBC50\uBC51\uC3D3\uBC52\uBC53\uD4E3"+
+        "\uBFB7\uBC54\uBC55\uBC56\uBC57\uBC58\uBC59\uBC5A"+
+        "\uF4DD\uBC5B\uBC5C\uBC5D\uBC5E\uBC5F\uBC60\uC5B4"+
+        "\uBC61\uBC62\uBC63\uBC64\uBC65\uBC66\uBC67\uBC68"+
+        "\uF4E9\uBC69\uBC6A\uCFB5\uBC6B\uBC6C\uBC6D\uBC6E"+
+        "\uBC6F\uBC70\uBC71\uBC72\uBC73\uBC74\uBC75\uBC76"+
+        "\uBC77\uBC78\uCEC9\uBC79\uBC7A\uBC7B\uBC7C\uBC7D"+
+        "\uBC7E\uBC80\uBC81\uBC82\uBC83\uBC84\uBC85\uBC86"+
+        "\uBC87\uBC88\uBC89\uBC8A\uBC8B\uBC8C\uBC8D\uBC8E"+
+        "\uCBD8\uBC8F\uCBF7\uBC90\uBC91\uBC92\uBC93\uBDF4"+
+        "\uBC94\uBC95\uBC96\uD7CF\uBC97\uBC98\uBC99\uC0DB"+
+        "\uBC9A\uBC9B\uBC9C\uBC9D\uBC9E\uBC9F\uBCA0\uBD40"+
+        "\uBD41\uBD42\uBD43\uBD44\uBD45\uBD46\uBD47\uBD48"+
+        "\uBD49\uBD4A\uBD4B\uBD4C\uBD4D\uBD4E\uBD4F\uBD50"+
+        "\uBD51\uBD52\uBD53\uBD54\uBD55\uBD56\uBD57\uBD58"+
+        "\uBD59\uBD5A\uBD5B\uBD5C\uBD5D\uBD5E\uBD5F\uBD60"+
+        "\uBD61\uBD62\uBD63\uBD64\uBD65\uBD66\uBD67\uBD68"+
+        "\uBD69\uBD6A\uBD6B\uBD6C\uBD6D\uBD6E\uBD6F\uBD70"+
+        "\uBD71\uBD72\uBD73\uBD74\uBD75\uBD76\uD0F5\uBD77"+
+        "\uBD78\uBD79\uBD7A\uBD7B\uBD7C\uBD7D\uBD7E\uF4EA"+
+        "\uBD80\uBD81\uBD82\uBD83\uBD84\uBD85\uBD86\uBD87"+
+        "\uBD88\uBD89\uBD8A\uBD8B\uBD8C\uBD8D\uBD8E\uBD8F"+
+        "\uBD90\uBD91\uBD92\uBD93\uBD94\uBD95\uBD96\uBD97"+
+        "\uBD98\uBD99\uBD9A\uBD9B\uBD9C\uBD9D\uBD9E\uBD9F"+
+        "\uBDA0\uBE40\uBE41\uBE42\uBE43\uBE44\uBE45\uBE46"+
+        "\uBE47\uBE48\uBE49\uBE4A\uBE4B\uBE4C\uF4EB\uBE4D"+
+        "\uBE4E\uBE4F\uBE50\uBE51\uBE52\uBE53\uF4EC\uBE54"+
+        "\uBE55\uBE56\uBE57\uBE58\uBE59\uBE5A\uBE5B\uBE5C"+
+        "\uBE5D\uBE5E\uBE5F\uBE60\uBE61\uBE62\uBE63\uBE64"+
+        "\uBE65\uBE66\uBE67\uBE68\uBE69\uBE6A\uBE6B\uBE6C"+
+        "\uBE6D\uBE6E\uBE6F\uBE70\uBE71\uBE72\uBE73\uBE74"+
+        "\uBE75\uBE76\uBE77\uBE78\uBE79\uBE7A\uBE7B\uBE7C"+
+        "\uBE7D\uBE7E\uBE80\uBE81\uBE82\uBE83\uBE84\uBE85"+
+        "\uBE86\uBE87\uBE88\uBE89\uBE8A\uBE8B\uBE8C\uBE8D"+
+        "\uBE8E\uBE8F\uBE90\uBE91\uBE92\uBE93\uBE94\uBE95"+
+        "\uBE96\uBE97\uBE98\uBE99\uBE9A\uBE9B\uBE9C\uBE9D"+
+        "\uBE9E\uBE9F\uBEA0\uBF40\uBF41\uBF42\uBF43\uBF44"+
+        "\uBF45\uBF46\uBF47\uBF48\uBF49\uBF4A\uBF4B\uBF4C"+
+        "\uBF4D\uBF4E\uBF4F\uBF50\uBF51\uBF52\uBF53\uBF54"+
+        "\uBF55\uBF56\uBF57\uBF58\uBF59\uBF5A\uBF5B\uBF5C"+
+        "\uBF5D\uBF5E\uBF5F\uBF60\uBF61\uBF62\uBF63\uBF64"+
+        "\uBF65\uBF66\uBF67\uBF68\uBF69\uBF6A\uBF6B\uBF6C"+
+        "\uBF6D\uBF6E\uBF6F\uBF70\uBF71\uBF72\uBF73\uBF74"+
+        "\uBF75\uBF76\uBF77\uBF78\uBF79\uBF7A\uBF7B\uBF7C"+
+        "\uBF7D\uBF7E\uBF80\uF7E3\uBF81\uBF82\uBF83\uBF84"+
+        "\uBF85\uB7B1\uBF86\uBF87\uBF88\uBF89\uBF8A\uF4ED"+
+        "\uBF8B\uBF8C\uBF8D\uBF8E\uBF8F\uBF90\uBF91\uBF92"+
+        "\uBF93\uBF94\uBF95\uBF96\uBF97\uBF98\uBF99\uBF9A"+
+        "\uBF9B\uBF9C\uBF9D\uBF9E\uBF9F\uBFA0\uC040\uC041"+
+        "\uC042\uC043\uC044\uC045\uC046\uC047\uC048\uC049"+
+        "\uC04A\uC04B\uC04C\uC04D\uC04E\uC04F\uC050\uC051"+
+        "\uC052\uC053\uC054\uC055\uC056\uC057\uC058\uC059"+
+        "\uC05A\uC05B\uC05C\uC05D\uC05E\uC05F\uC060\uC061"+
+        "\uC062\uC063\uD7EB\uC064\uC065\uC066\uC067\uC068"+
+        "\uC069\uC06A\uC06B\uC06C\uC06D\uC06E\uC06F\uC070"+
+        "\uC071\uC072\uC073\uC074\uC075\uC076\uC077\uC078"+
+        "\uC079\uC07A\uC07B\uF4EE\uC07C\uC07D\uC07E\uE6F9"+
+        "\uBEC0\uE6FA\uBAEC\uE6FB\uCFCB\uE6FC\uD4BC\uBCB6"+
+        "\uE6FD\uE6FE\uBCCD\uC8D2\uCEB3\uE7A1\uC080\uB4BF"+
+        "\uE7A2\uC9B4\uB8D9\uC4C9\uC081\uD7DD\uC2DA\uB7D7"+
+        "\uD6BD\uCEC6\uB7C4\uC082\uC083\uC5A6\uE7A3\uCFDF"+
+        "\uE7A4\uE7A5\uE7A6\uC1B7\uD7E9\uC9F0\uCFB8\uD6AF"+
+        "\uD6D5\uE7A7\uB0ED\uE7A8\uE7A9\uC9DC\uD2EF\uBEAD"+
+        "\uE7AA\uB0F3\uC8DE\uBDE1\uE7AB\uC8C6\uC084\uE7AC"+
+        "\uBBE6\uB8F8\uD1A4\uE7AD\uC2E7\uBEF8\uBDCA\uCDB3"+
+        "\uE7AE\uE7AF\uBEEE\uD0E5\uC085\uCBE7\uCCD0\uBCCC"+
+        "\uE7B0\uBCA8\uD0F7\uE7B1\uC086\uD0F8\uE7B2\uE7B3"+
+        "\uB4C2\uE7B4\uE7B5\uC9FE\uCEAC\uC3E0\uE7B7\uB1C1"+
+        "\uB3F1\uC087\uE7B8\uE7B9\uD7DB\uD5C0\uE7BA\uC2CC"+
+        "\uD7BA\uE7BB\uE7BC\uE7BD\uBCEA\uC3E5\uC0C2\uE7BE"+
+        "\uE7BF\uBCA9\uC088\uE7C0\uE7C1\uE7B6\uB6D0\uE7C2"+
+        "\uC089\uE7C3\uE7C4\uBBBA\uB5DE\uC2C6\uB1E0\uE7C5"+
+        "\uD4B5\uE7C6\uB8BF\uE7C8\uE7C7\uB7EC\uC08A\uE7C9"+
+        "\uB2F8\uE7CA\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF\uE7D0"+
+        "\uD3A7\uCBF5\uE7D1\uE7D2\uE7D3\uE7D4\uC9C9\uE7D5"+
+        "\uE7D6\uE7D7\uE7D8\uE7D9\uBDC9\uE7DA\uF3BE\uC08B"+
+        "\uB8D7\uC08C\uC8B1\uC08D\uC08E\uC08F\uC090\uC091"+
+        "\uC092\uC093\uF3BF\uC094\uF3C0\uF3C1\uC095\uC096"+
+        "\uC097\uC098\uC099\uC09A\uC09B\uC09C\uC09D\uC09E"+
+        "\uB9DE\uCDF8\uC09F\uC0A0\uD8E8\uBAB1\uC140\uC2DE"+
+        "\uEEB7\uC141\uB7A3\uC142\uC143\uC144\uC145\uEEB9"+
+        "\uC146\uEEB8\uB0D5\uC147\uC148\uC149\uC14A\uC14B"+
+        "\uEEBB\uD5D6\uD7EF\uC14C\uC14D\uC14E\uD6C3\uC14F"+
+        "\uC150\uEEBD\uCAF0\uC151\uEEBC\uC152\uC153\uC154"+
+        "\uC155\uEEBE\uC156\uC157\uC158\uC159\uEEC0\uC15A"+
+        "\uC15B\uEEBF\uC15C\uC15D\uC15E\uC15F\uC160\uC161"+
+        "\uC162\uC163\uD1F2\uC164\uC7BC\uC165\uC3C0\uC166"+
+        "\uC167\uC168\uC169\uC16A\uB8E1\uC16B\uC16C\uC16D"+
+        "\uC16E\uC16F\uC1E7\uC170\uC171\uF4C6\uD0DF\uF4C7"+
+        "\uC172\uCFDB\uC173\uC174\uC8BA\uC175\uC176\uF4C8"+
+        "\uC177\uC178\uC179\uC17A\uC17B\uC17C\uC17D\uF4C9"+
+        "\uF4CA\uC17E\uF4CB\uC180\uC181\uC182\uC183\uC184"+
+        "\uD9FA\uB8FE\uC185\uC186\uE5F1\uD3F0\uC187\uF4E0"+
+        "\uC188\uCECC\uC189\uC18A\uC18B\uB3E1\uC18C\uC18D"+
+        "\uC18E\uC18F\uF1B4\uC190\uD2EE\uC191\uF4E1\uC192"+
+        "\uC193\uC194\uC195\uC196\uCFE8\uF4E2\uC197\uC198"+
+        "\uC7CC\uC199\uC19A\uC19B\uC19C\uC19D\uC19E\uB5D4"+
+        "\uB4E4\uF4E4\uC19F\uC1A0\uC240\uF4E3\uF4E5\uC241"+
+        "\uC242\uF4E6\uC243\uC244\uC245\uC246\uF4E7\uC247"+
+        "\uBAB2\uB0BF\uC248\uF4E8\uC249\uC24A\uC24B\uC24C"+
+        "\uC24D\uC24E\uC24F\uB7AD\uD2ED\uC250\uC251\uC252";
+
+    private final static String innerEncoderIndex8=
+        "\uD2AB\uC0CF\uC253\uBFBC\uEBA3\uD5DF\uEAC8\uC254"+
+        "\uC255\uC256\uC257\uF1F3\uB6F8\uCBA3\uC258\uC259"+
+        "\uC4CD\uC25A\uF1E7\uC25B\uF1E8\uB8FB\uF1E9\uBAC4"+
+        "\uD4C5\uB0D2\uC25C\uC25D\uF1EA\uC25E\uC25F\uC260"+
+        "\uF1EB\uC261\uF1EC\uC262\uC263\uF1ED\uF1EE\uF1EF"+
+        "\uF1F1\uF1F0\uC5D5\uC264\uC265\uC266\uC267\uC268"+
+        "\uC269\uF1F2\uC26A\uB6FA\uC26B\uF1F4\uD2AE\uDEC7"+
+        "\uCBCA\uC26C\uC26D\uB3DC\uC26E\uB5A2\uC26F\uB9A2"+
+        "\uC270\uC271\uC4F4\uF1F5\uC272\uC273\uF1F6\uC274"+
+        "\uC275\uC276\uC1C4\uC1FB\uD6B0\uF1F7\uC277\uC278"+
+        "\uC279\uC27A\uF1F8\uC27B\uC1AA\uC27C\uC27D\uC27E"+
+        "\uC6B8\uC280\uBEDB\uC281\uC282\uC283\uC284\uC285"+
+        "\uC286\uC287\uC288\uC289\uC28A\uC28B\uC28C\uC28D"+
+        "\uC28E\uF1F9\uB4CF\uC28F\uC290\uC291\uC292\uC293"+
+        "\uC294\uF1FA\uC295\uC296\uC297\uC298\uC299\uC29A"+
+        "\uC29B\uC29C\uC29D\uC29E\uC29F\uC2A0\uC340\uEDB2"+
+        "\uEDB1\uC341\uC342\uCBE0\uD2DE\uC343\uCBC1\uD5D8"+
+        "\uC344\uC8E2\uC345\uC0DF\uBCA1\uC346\uC347\uC348"+
+        "\uC349\uC34A\uC34B\uEBC1\uC34C\uC34D\uD0A4\uC34E"+
+        "\uD6E2\uC34F\uB6C7\uB8D8\uEBC0\uB8CE\uC350\uEBBF"+
+        "\uB3A6\uB9C9\uD6AB\uC351\uB7F4\uB7CA\uC352\uC353"+
+        "\uC354\uBCE7\uB7BE\uEBC6\uC355\uEBC7\uB0B9\uBFCF"+
+        "\uC356\uEBC5\uD3FD\uC357\uEBC8\uC358\uC359\uEBC9"+
+        "\uC35A\uC35B\uB7CE\uC35C\uEBC2\uEBC4\uC9F6\uD6D7"+
+        "\uD5CD\uD0B2\uEBCF\uCEB8\uEBD0\uC35D\uB5A8\uC35E"+
+        "\uC35F\uC360\uC361\uC362\uB1B3\uEBD2\uCCA5\uC363"+
+        "\uC364\uC365\uC366\uC367\uC368\uC369\uC5D6\uEBD3"+
+        "\uC36A\uEBD1\uC5DF\uEBCE\uCAA4\uEBD5\uB0FB\uC36B"+
+        "\uC36C\uBAFA\uC36D\uC36E\uD8B7\uF1E3\uC36F\uEBCA"+
+        "\uEBCB\uEBCC\uEBCD\uEBD6\uE6C0\uEBD9\uC370\uBFE8"+
+        "\uD2C8\uEBD7\uEBDC\uB8EC\uEBD8\uC371\uBDBA\uC372"+
+        "\uD0D8\uC373\uB0B7\uC374\uEBDD\uC4DC\uC375\uC376"+
+        "\uC377\uC378\uD6AC\uC379\uC37A\uC37B\uB4E0\uC37C"+
+        "\uC37D\uC2F6\uBCB9\uC37E\uC380\uEBDA\uEBDB\uD4E0"+
+        "\uC6EA\uC4D4\uEBDF\uC5A7\uD9F5\uC381\uB2B1\uC382"+
+        "\uEBE4\uC383\uBDC5\uC384\uC385\uC386\uEBE2\uC387"+
+        "\uC388\uC389\uC38A\uC38B\uC38C\uC38D\uC38E\uC38F"+
+        "\uC390\uC391\uC392\uC393\uEBE3\uC394\uC395\uB8AC"+
+        "\uC396\uCDD1\uEBE5\uC397\uC398\uC399\uEBE1\uC39A"+
+        "\uC1B3\uC39B\uC39C\uC39D\uC39E\uC39F\uC6A2\uC3A0"+
+        "\uC440\uC441\uC442\uC443\uC444\uC445\uCCF3\uC446"+
+        "\uEBE6\uC447\uC0B0\uD2B8\uEBE7\uC448\uC449\uC44A"+
+        "\uB8AF\uB8AD\uC44B\uEBE8\uC7BB\uCDF3\uC44C\uC44D"+
+        "\uC44E\uEBEA\uEBEB\uC44F\uC450\uC451\uC452\uC453"+
+        "\uEBED\uC454\uC455\uC456\uC457\uD0C8\uC458\uEBF2"+
+        "\uC459\uEBEE\uC45A\uC45B\uC45C\uEBF1\uC8F9\uC45D"+
+        "\uD1FC\uEBEC\uC45E\uC45F\uEBE9\uC460\uC461\uC462"+
+        "\uC463\uB8B9\uCFD9\uC4E5\uEBEF\uEBF0\uCCDA\uCDC8"+
+        "\uB0F2\uC464\uEBF6\uC465\uC466\uC467\uC468\uC469"+
+        "\uEBF5\uC46A\uB2B2\uC46B\uC46C\uC46D\uC46E\uB8E0"+
+        "\uC46F\uEBF7\uC470\uC471\uC472\uC473\uC474\uC475"+
+        "\uB1EC\uC476\uC477\uCCC5\uC4A4\uCFA5\uC478\uC479"+
+        "\uC47A\uC47B\uC47C\uEBF9\uC47D\uC47E\uECA2\uC480"+
+        "\uC5F2\uC481\uEBFA\uC482\uC483\uC484\uC485\uC486"+
+        "\uC487\uC488\uC489\uC9C5\uC48A\uC48B\uC48C\uC48D"+
+        "\uC48E\uC48F\uE2DF\uEBFE\uC490\uC491\uC492\uC493"+
+        "\uCDCE\uECA1\uB1DB\uD3B7\uC494\uC495\uD2DC\uC496"+
+        "\uC497\uC498\uEBFD\uC499\uEBFB\uC49A\uC49B\uC49C"+
+        "\uC49D\uC49E\uC49F\uC4A0\uC540\uC541\uC542\uC543"+
+        "\uC544\uC545\uC546\uC547\uC548\uC549\uC54A\uC54B"+
+        "\uC54C\uC54D\uC54E\uB3BC\uC54F\uC550\uC551\uEAB0"+
+        "\uC552\uC553\uD7D4\uC554\uF4AB\uB3F4\uC555\uC556"+
+        "\uC557\uC558\uC559\uD6C1\uD6C2\uC55A\uC55B\uC55C"+
+        "\uC55D\uC55E\uC55F\uD5E9\uBECA\uC560\uF4A7\uC561"+
+        "\uD2A8\uF4A8\uF4A9\uC562\uF4AA\uBECB\uD3DF\uC563"+
+        "\uC564\uC565\uC566\uC567\uC9E0\uC9E1\uC568\uC569"+
+        "\uF3C2\uC56A\uCAE6\uC56B\uCCF2\uC56C\uC56D\uC56E"+
+        "\uC56F\uC570\uC571\uE2B6\uCBB4\uC572\uCEE8\uD6DB"+
+        "\uC573\uF4AD\uF4AE\uF4AF\uC574\uC575\uC576\uC577"+
+        "\uF4B2\uC578\uBABD\uF4B3\uB0E3\uF4B0\uC579\uF4B1"+
+        "\uBDA2\uB2D5\uC57A\uF4B6\uF4B7\uB6E6\uB2B0\uCFCF"+
+        "\uF4B4\uB4AC\uC57B\uF4B5\uC57C\uC57D\uF4B8\uC57E"+
+        "\uC580\uC581\uC582\uC583\uF4B9\uC584\uC585\uCDA7"+
+        "\uC586\uF4BA\uC587\uF4BB\uC588\uC589\uC58A\uF4BC"+
+        "\uC58B\uC58C\uC58D\uC58E\uC58F\uC590\uC591\uC592"+
+        "\uCBD2\uC593\uF4BD\uC594\uC595\uC596\uC597\uF4BE"+
+        "\uC598\uC599\uC59A\uC59B\uC59C\uC59D\uC59E\uC59F"+
+        "\uF4BF\uC5A0\uC640\uC641\uC642\uC643\uF4DE\uC1BC"+
+        "\uBCE8\uC644\uC9AB\uD1DE\uE5F5\uC645\uC646\uC647"+
+        "\uC648\uDCB3\uD2D5\uC649\uC64A\uDCB4\uB0AC\uDCB5"+
+        "\uC64B\uC64C\uBDDA\uC64D\uDCB9\uC64E\uC64F\uC650"+
+        "\uD8C2\uC651\uDCB7\uD3F3\uC652\uC9D6\uDCBA\uDCB6"+
+        "\uC653\uDCBB\uC3A2\uC654\uC655\uC656\uC657\uDCBC"+
+        "\uDCC5\uDCBD\uC658\uC659\uCEDF\uD6A5\uC65A\uDCCF"+
+        "\uC65B\uDCCD\uC65C\uC65D\uDCD2\uBDE6\uC2AB\uC65E"+
+        "\uDCB8\uDCCB\uDCCE\uDCBE\uB7D2\uB0C5\uDCC7\uD0BE"+
+        "\uDCC1\uBBA8\uC65F\uB7BC\uDCCC\uC660\uC661\uDCC6"+
+        "\uDCBF\uC7DB\uC662\uC663\uC664\uD1BF\uDCC0\uC665"+
+        "\uC666\uDCCA\uC667\uC668\uDCD0\uC669\uC66A\uCEAD"+
+        "\uDCC2\uC66B\uDCC3\uDCC8\uDCC9\uB2D4\uDCD1\uCBD5"+
+        "\uC66C\uD4B7\uDCDB\uDCDF\uCCA6\uDCE6\uC66D\uC3E7"+
+        "\uDCDC\uC66E\uC66F\uBFC1\uDCD9\uC670\uB0FA\uB9B6"+
+        "\uDCE5\uDCD3\uC671\uDCC4\uDCD6\uC8F4\uBFE0\uC672"+
+        "\uC673\uC674\uC675\uC9BB\uC676\uC677\uC678\uB1BD"+
+        "\uC679\uD3A2\uC67A\uC67B\uDCDA\uC67C\uC67D\uDCD5"+
+        "\uC67E\uC6BB\uC680\uDCDE\uC681\uC682\uC683\uC684"+
+        "\uC685\uD7C2\uC3AF\uB7B6\uC7D1\uC3A9\uDCE2\uDCD8"+
+        "\uDCEB\uDCD4\uC686\uC687\uDCDD\uC688\uBEA5\uDCD7"+
+        "\uC689\uDCE0\uC68A\uC68B\uDCE3\uDCE4\uC68C\uDCF8"+
+        "\uC68D\uC68E\uDCE1\uDDA2\uDCE7\uC68F\uC690\uC691"+
+        "\uC692\uC693\uC694\uC695\uC696\uC697\uC698\uBCEB"+
+        "\uB4C4\uC699\uC69A\uC3A3\uB2E7\uDCFA\uC69B\uDCF2"+
+        "\uC69C\uDCEF\uC69D\uDCFC\uDCEE\uD2F0\uB2E8\uC69E"+
+        "\uC8D7\uC8E3\uDCFB\uC69F\uDCED\uC6A0\uC740\uC741"+
+        "\uDCF7\uC742\uC743\uDCF5\uC744\uC745\uBEA3\uDCF4"+
+        "\uC746\uB2DD\uC747\uC748\uC749\uC74A\uC74B\uDCF3"+
+        "\uBCF6\uDCE8\uBBC4\uC74C\uC0F3\uC74D\uC74E\uC74F"+
+        "\uC750\uC751\uBCD4\uDCE9\uDCEA\uC752\uDCF1\uDCF6"+
+        "\uDCF9\uB5B4\uC753\uC8D9\uBBE7\uDCFE\uDCFD\uD3AB"+
+        "\uDDA1\uDDA3\uDDA5\uD2F1\uDDA4\uDDA6\uDDA7\uD2A9"+
+        "\uC754\uC755\uC756\uC757\uC758\uC759\uC75A\uBAC9"+
+        "\uDDA9\uC75B\uC75C\uDDB6\uDDB1\uDDB4\uC75D\uC75E"+
+        "\uC75F\uC760\uC761\uC762\uC763\uDDB0\uC6CE\uC764"+
+        "\uC765\uC0F2\uC766\uC767\uC768\uC769\uC9AF\uC76A"+
+        "\uC76B\uC76C\uDCEC\uDDAE\uC76D\uC76E\uC76F\uC770"+
+        "\uDDB7\uC771\uC772\uDCF0\uDDAF\uC773\uDDB8\uC774"+
+        "\uDDAC\uC775\uC776\uC777\uC778\uC779\uC77A\uC77B"+
+        "\uDDB9\uDDB3\uDDAD\uC4AA\uC77C\uC77D\uC77E\uC780"+
+        "\uDDA8\uC0B3\uC1AB\uDDAA\uDDAB\uC781\uDDB2\uBBF1"+
+        "\uDDB5\uD3A8\uDDBA\uC782\uDDBB\uC3A7\uC783\uC784"+
+        "\uDDD2\uDDBC\uC785\uC786\uC787\uDDD1\uC788\uB9BD"+
+        "\uC789\uC78A\uBED5\uC78B\uBEFA\uC78C\uC78D\uBACA"+
+        "\uC78E\uC78F\uC790\uC791\uDDCA\uC792\uDDC5\uC793"+
+        "\uDDBF\uC794\uC795\uC796\uB2CB\uDDC3\uC797\uDDCB"+
+        "\uB2A4\uDDD5\uC798\uC799\uC79A\uDDBE\uC79B\uC79C"+
+        "\uC79D\uC6D0\uDDD0\uC79E\uC79F\uC7A0\uC840\uC841"+
+        "\uDDD4\uC1E2\uB7C6\uC842\uC843\uC844\uC845\uC846"+
+        "\uDDCE\uDDCF\uC847\uC848\uC849\uDDC4\uC84A\uC84B"+
+        "\uC84C\uDDBD\uC84D\uDDCD\uCCD1\uC84E\uDDC9\uC84F"+
+        "\uC850\uC851\uC852\uDDC2\uC3C8\uC6BC\uCEAE\uDDCC"+
+        "\uC853\uDDC8\uC854\uC855\uC856\uC857\uC858\uC859"+
+        "\uDDC1\uC85A\uC85B\uC85C\uDDC6\uC2DC\uC85D\uC85E"+
+        "\uC85F\uC860\uC861\uC862\uD3A9\uD3AA\uDDD3\uCFF4"+
+        "\uC8F8\uC863\uC864\uC865\uC866\uC867\uC868\uC869"+
+        "\uC86A\uDDE6\uC86B\uC86C\uC86D\uC86E\uC86F\uC870"+
+        "\uDDC7\uC871\uC872\uC873\uDDE0\uC2E4\uC874\uC875"+
+        "\uC876\uC877\uC878\uC879\uC87A\uC87B\uDDE1\uC87C"+
+        "\uC87D\uC87E\uC880\uC881\uC882\uC883\uC884\uC885"+
+        "\uC886\uDDD7\uC887\uC888\uC889\uC88A\uC88B\uD6F8"+
+        "\uC88C\uDDD9\uDDD8\uB8F0\uDDD6\uC88D\uC88E\uC88F"+
+        "\uC890\uC6CF\uC891\uB6AD\uC892\uC893\uC894\uC895"+
+        "\uC896\uDDE2\uC897\uBAF9\uD4E1\uDDE7\uC898\uC899"+
+        "\uC89A\uB4D0\uC89B\uDDDA\uC89C\uBFFB\uDDE3\uC89D"+
+        "\uDDDF\uC89E\uDDDD\uC89F\uC8A0\uC940\uC941\uC942"+
+        "\uC943\uC944\uB5D9\uC945\uC946\uC947\uC948\uDDDB"+
+        "\uDDDC\uDDDE\uC949\uBDAF\uDDE4\uC94A\uDDE5\uC94B"+
+        "\uC94C\uC94D\uC94E\uC94F\uC950\uC951\uC952\uDDF5"+
+        "\uC953\uC3C9\uC954\uC955\uCBE2\uC956\uC957\uC958"+
+        "\uC959\uDDF2\uC95A\uC95B\uC95C\uC95D\uC95E\uC95F"+
+        "\uC960\uC961\uC962\uC963\uC964\uC965\uC966\uD8E1"+
+        "\uC967\uC968\uC6D1\uC969\uDDF4\uC96A\uC96B\uC96C"+
+        "\uD5F4\uDDF3\uDDF0\uC96D\uC96E\uDDEC\uC96F\uDDEF"+
+        "\uC970\uDDE8\uC971\uC972\uD0EE\uC973\uC974\uC975"+
+        "\uC976\uC8D8\uDDEE\uC977\uC978\uDDE9\uC979\uC97A"+
+        "\uDDEA\uCBF2\uC97B\uDDED\uC97C\uC97D\uB1CD\uC97E"+
+        "\uC980\uC981\uC982\uC983\uC984\uC0B6\uC985\uBCBB"+
+        "\uDDF1\uC986\uC987\uDDF7\uC988\uDDF6\uDDEB\uC989"+
+        "\uC98A\uC98B\uC98C\uC98D\uC5EE\uC98E\uC98F\uC990"+
+        "\uDDFB\uC991\uC992\uC993\uC994\uC995\uC996\uC997"+
+        "\uC998\uC999\uC99A\uC99B\uDEA4\uC99C\uC99D\uDEA3"+
+        "\uC99E\uC99F\uC9A0\uCA40\uCA41\uCA42\uCA43\uCA44"+
+        "\uCA45\uCA46\uCA47\uCA48\uDDF8\uCA49\uCA4A\uCA4B"+
+        "\uCA4C\uC3EF\uCA4D\uC2FB\uCA4E\uCA4F\uCA50\uD5E1"+
+        "\uCA51\uCA52\uCEB5\uCA53\uCA54\uCA55\uCA56\uDDFD"+
+        "\uCA57\uB2CC\uCA58\uCA59\uCA5A\uCA5B\uCA5C\uCA5D"+
+        "\uCA5E\uCA5F\uCA60\uC4E8\uCADF\uCA61\uCA62\uCA63"+
+        "\uCA64\uCA65\uCA66\uCA67\uCA68\uCA69\uCA6A\uC7BE"+
+        "\uDDFA\uDDFC\uDDFE\uDEA2\uB0AA\uB1CE\uCA6B\uCA6C"+
+        "\uCA6D\uCA6E\uCA6F\uDEAC\uCA70\uCA71\uCA72\uCA73"+
+        "\uDEA6\uBDB6\uC8EF\uCA74\uCA75\uCA76\uCA77\uCA78"+
+        "\uCA79\uCA7A\uCA7B\uCA7C\uCA7D\uCA7E\uDEA1\uCA80"+
+        "\uCA81\uDEA5\uCA82\uCA83\uCA84\uCA85\uDEA9\uCA86"+
+        "\uCA87\uCA88\uCA89\uCA8A\uDEA8\uCA8B\uCA8C\uCA8D"+
+        "\uDEA7\uCA8E\uCA8F\uCA90\uCA91\uCA92\uCA93\uCA94"+
+        "\uCA95\uCA96\uDEAD\uCA97\uD4CC\uCA98\uCA99\uCA9A"+
+        "\uCA9B\uDEB3\uDEAA\uDEAE\uCA9C\uCA9D\uC0D9\uCA9E"+
+        "\uCA9F\uCAA0\uCB40\uCB41\uB1A1\uDEB6\uCB42\uDEB1"+
+        "\uCB43\uCB44\uCB45\uCB46\uCB47\uCB48\uCB49\uDEB2"+
+        "\uCB4A\uCB4B\uCB4C\uCB4D\uCB4E\uCB4F\uCB50\uCB51"+
+        "\uCB52\uCB53\uCB54\uD1A6\uDEB5\uCB55\uCB56\uCB57"+
+        "\uCB58\uCB59\uCB5A\uCB5B\uDEAF\uCB5C\uCB5D\uCB5E"+
+        "\uDEB0\uCB5F\uD0BD\uCB60\uCB61\uCB62\uDEB4\uCAED"+
+        "\uDEB9\uCB63\uCB64\uCB65\uCB66\uCB67\uCB68\uDEB8"+
+        "\uCB69\uDEB7\uCB6A\uCB6B\uCB6C\uCB6D\uCB6E\uCB6F"+
+        "\uCB70\uDEBB\uCB71\uCB72\uCB73\uCB74\uCB75\uCB76"+
+        "\uCB77\uBDE5\uCB78\uCB79\uCB7A\uCB7B\uCB7C\uB2D8"+
+        "\uC3EA\uCB7D\uCB7E\uDEBA\uCB80\uC5BA\uCB81\uCB82"+
+        "\uCB83\uCB84\uCB85\uCB86\uDEBC\uCB87\uCB88\uCB89"+
+        "\uCB8A\uCB8B\uCB8C\uCB8D\uCCD9\uCB8E\uCB8F\uCB90"+
+        "\uCB91\uB7AA\uCB92\uCB93\uCB94\uCB95\uCB96\uCB97"+
+        "\uCB98\uCB99\uCB9A\uCB9B\uCB9C\uCB9D\uCB9E\uCB9F"+
+        "\uCBA0\uCC40\uCC41\uD4E5\uCC42\uCC43\uCC44\uDEBD"+
+        "\uCC45\uCC46\uCC47\uCC48\uCC49\uDEBF\uCC4A\uCC4B"+
+        "\uCC4C\uCC4D\uCC4E\uCC4F\uCC50\uCC51\uCC52\uCC53"+
+        "\uCC54\uC4A2\uCC55\uCC56\uCC57\uCC58\uDEC1\uCC59"+
+        "\uCC5A\uCC5B\uCC5C\uCC5D\uCC5E\uCC5F\uCC60\uCC61"+
+        "\uCC62\uCC63\uCC64\uCC65\uCC66\uCC67\uCC68\uDEBE"+
+        "\uCC69\uDEC0\uCC6A\uCC6B\uCC6C\uCC6D\uCC6E\uCC6F"+
+        "\uCC70\uCC71\uCC72\uCC73\uCC74\uCC75\uCC76\uCC77"+
+        "\uD5BA\uCC78\uCC79\uCC7A\uDEC2\uCC7B\uCC7C\uCC7D"+
+        "\uCC7E\uCC80\uCC81\uCC82\uCC83\uCC84\uCC85\uCC86"+
+        "\uCC87\uCC88\uCC89\uCC8A\uCC8B\uF2AE\uBBA2\uC2B2"+
+        "\uC5B0\uC2C7\uCC8C\uCC8D\uF2AF\uCC8E\uCC8F\uCC90"+
+        "\uCC91\uCC92\uD0E9\uCC93\uCC94\uCC95\uD3DD\uCC96"+
+        "\uCC97\uCC98\uEBBD\uCC99\uCC9A\uCC9B\uCC9C\uCC9D"+
+        "\uCC9E\uCC9F\uCCA0\uB3E6\uF2B0\uCD40\uF2B1\uCD41"+
+        "\uCD42\uCAAD\uCD43\uCD44\uCD45\uCD46\uCD47\uCD48"+
+        "\uCD49\uBAE7\uF2B3\uF2B5\uF2B4\uCBE4\uCFBA\uF2B2"+
+        "\uCAB4\uD2CF\uC2EC\uCD4A\uCD4B\uCD4C\uCD4D\uCD4E"+
+        "\uCD4F\uCD50\uCEC3\uF2B8\uB0F6\uF2B7\uCD51\uCD52"+
+        "\uCD53\uCD54\uCD55\uF2BE\uCD56\uB2CF\uCD57\uCD58"+
+        "\uCD59\uCD5A\uCD5B\uCD5C\uD1C1\uF2BA\uCD5D\uCD5E"+
+        "\uCD5F\uCD60\uCD61\uF2BC\uD4E9\uCD62\uCD63\uF2BB"+
+        "\uF2B6\uF2BF\uF2BD\uCD64\uF2B9\uCD65\uCD66\uF2C7"+
+        "\uF2C4\uF2C6\uCD67\uCD68\uF2CA\uF2C2\uF2C0\uCD69"+
+        "\uCD6A\uCD6B\uF2C5\uCD6C\uCD6D\uCD6E\uCD6F\uCD70"+
+        "\uD6FB\uCD71\uCD72\uCD73\uF2C1\uCD74\uC7F9\uC9DF"+
+        "\uCD75\uF2C8\uB9C6\uB5B0\uCD76\uCD77\uF2C3\uF2C9"+
+        "\uF2D0\uF2D6\uCD78\uCD79\uBBD7\uCD7A\uCD7B\uCD7C"+
+        "\uF2D5\uCDDC\uCD7D\uD6EB\uCD7E\uCD80\uF2D2\uF2D4"+
+        "\uCD81\uCD82\uCD83\uCD84\uB8F2\uCD85\uCD86\uCD87"+
+        "\uCD88\uF2CB\uCD89\uCD8A\uCD8B\uF2CE\uC2F9\uCD8C"+
+        "\uD5DD\uF2CC\uF2CD\uF2CF\uF2D3\uCD8D\uCD8E\uCD8F"+
+        "\uF2D9\uD3BC\uCD90\uCD91\uCD92\uCD93\uB6EA\uCD94"+
+        "\uCAF1\uCD95\uB7E4\uF2D7\uCD96\uCD97\uCD98\uF2D8"+
+        "\uF2DA\uF2DD\uF2DB\uCD99\uCD9A\uF2DC\uCD9B\uCD9C"+
+        "\uCD9D\uCD9E\uD1D1\uF2D1\uCD9F\uCDC9\uCDA0\uCECF"+
+        "\uD6A9\uCE40\uF2E3\uCE41\uC3DB\uCE42\uF2E0\uCE43"+
+        "\uCE44\uC0AF\uF2EC\uF2DE\uCE45\uF2E1\uCE46\uCE47"+
+        "\uCE48\uF2E8\uCE49\uCE4A\uCE4B\uCE4C\uF2E2\uCE4D"+
+        "\uCE4E\uF2E7\uCE4F\uCE50\uF2E6\uCE51\uCE52\uF2E9"+
+        "\uCE53\uCE54\uCE55\uF2DF\uCE56\uCE57\uF2E4\uF2EA"+
+        "\uCE58\uCE59\uCE5A\uCE5B\uCE5C\uCE5D\uCE5E\uD3AC"+
+        "\uF2E5\uB2F5\uCE5F\uCE60\uF2F2\uCE61\uD0AB\uCE62"+
+        "\uCE63\uCE64\uCE65\uF2F5\uCE66\uCE67\uCE68\uBBC8"+
+        "\uCE69\uF2F9\uCE6A\uCE6B\uCE6C\uCE6D\uCE6E\uCE6F"+
+        "\uF2F0\uCE70\uCE71\uF2F6\uF2F8\uF2FA\uCE72\uCE73"+
+        "\uCE74\uCE75\uCE76\uCE77\uCE78\uCE79\uF2F3\uCE7A"+
+        "\uF2F1\uCE7B\uCE7C\uCE7D\uBAFB\uCE7E\uB5FB\uCE80"+
+        "\uCE81\uCE82\uCE83\uF2EF\uF2F7\uF2ED\uF2EE\uCE84"+
+        "\uCE85\uCE86\uF2EB\uF3A6\uCE87\uF3A3\uCE88\uCE89"+
+        "\uF3A2\uCE8A\uCE8B\uF2F4\uCE8C\uC8DA\uCE8D\uCE8E"+
+        "\uCE8F\uCE90\uCE91\uF2FB\uCE92\uCE93\uCE94\uF3A5"+
+        "\uCE95\uCE96\uCE97\uCE98\uCE99\uCE9A\uCE9B\uC3F8"+
+        "\uCE9C\uCE9D\uCE9E\uCE9F\uCEA0\uCF40\uCF41\uCF42"+
+        "\uF2FD\uCF43\uCF44\uF3A7\uF3A9\uF3A4\uCF45\uF2FC"+
+        "\uCF46\uCF47\uCF48\uF3AB\uCF49\uF3AA\uCF4A\uCF4B"+
+        "\uCF4C\uCF4D\uC2DD\uCF4E\uCF4F\uF3AE\uCF50\uCF51"+
+        "\uF3B0\uCF52\uCF53\uCF54\uCF55\uCF56\uF3A1\uCF57"+
+        "\uCF58\uCF59\uF3B1\uF3AC\uCF5A\uCF5B\uCF5C\uCF5D"+
+        "\uCF5E\uF3AF\uF2FE\uF3AD\uCF5F\uCF60\uCF61\uCF62"+
+        "\uCF63\uCF64\uCF65\uF3B2\uCF66\uCF67\uCF68\uCF69"+
+        "\uF3B4\uCF6A\uCF6B\uCF6C\uCF6D\uF3A8\uCF6E\uCF6F"+
+        "\uCF70\uCF71\uF3B3\uCF72\uCF73\uCF74\uF3B5\uCF75"+
+        "\uCF76\uCF77\uCF78\uCF79\uCF7A\uCF7B\uCF7C\uCF7D"+
+        "\uCF7E\uD0B7\uCF80\uCF81\uCF82\uCF83\uF3B8\uCF84"+
+        "\uCF85\uCF86\uCF87\uD9F9\uCF88\uCF89\uCF8A\uCF8B"+
+        "\uCF8C\uCF8D\uF3B9\uCF8E\uCF8F\uCF90\uCF91\uCF92"+
+        "\uCF93\uCF94\uCF95\uF3B7\uCF96\uC8E4\uF3B6\uCF97"+
+        "\uCF98\uCF99\uCF9A\uF3BA\uCF9B\uCF9C\uCF9D\uCF9E"+
+        "\uCF9F\uF3BB\uB4C0\uCFA0\uD040\uD041\uD042\uD043"+
+        "\uD044\uD045\uD046\uD047\uD048\uD049\uD04A\uD04B"+
+        "\uD04C\uD04D\uEEC3\uD04E\uD04F\uD050\uD051\uD052"+
+        "\uD053\uF3BC\uD054\uD055\uF3BD\uD056\uD057\uD058"+
+        "\uD1AA\uD059\uD05A\uD05B\uF4AC\uD0C6\uD05C\uD05D"+
+        "\uD05E\uD05F\uD060\uD061\uD0D0\uD1DC\uD062\uD063"+
+        "\uD064\uD065\uD066\uD067\uCFCE\uD068\uD069\uBDD6"+
+        "\uD06A\uD1C3\uD06B\uD06C\uD06D\uD06E\uD06F\uD070"+
+        "\uD071\uBAE2\uE1E9\uD2C2\uF1C2\uB2B9\uD072\uD073"+
+        "\uB1ED\uF1C3\uD074\uC9C0\uB3C4\uD075\uD9F2\uD076"+
+        "\uCBA5\uD077\uF1C4\uD078\uD079\uD07A\uD07B\uD6D4"+
+        "\uD07C\uD07D\uD07E\uD080\uD081\uF1C5\uF4C0\uF1C6"+
+        "\uD082\uD4AC\uF1C7\uD083\uB0C0\uF4C1\uD084\uD085"+
+        "\uF4C2\uD086\uD087\uB4FC\uD088\uC5DB\uD089\uD08A"+
+        "\uD08B\uD08C\uCCBB\uD08D\uD08E\uD08F\uD0E4\uD090"+
+        "\uD091\uD092\uD093\uD094\uCDE0\uD095\uD096\uD097"+
+        "\uD098\uD099\uF1C8\uD09A\uD9F3\uD09B\uD09C\uD09D"+
+        "\uD09E\uD09F\uD0A0\uB1BB\uD140\uCFAE\uD141\uD142"+
+        "\uD143\uB8A4\uD144\uD145\uD146\uD147\uD148\uF1CA"+
+        "\uD149\uD14A\uD14B\uD14C\uF1CB\uD14D\uD14E\uD14F"+
+        "\uD150\uB2C3\uC1D1\uD151\uD152\uD7B0\uF1C9\uD153"+
+        "\uD154\uF1CC\uD155\uD156\uD157\uD158\uF1CE\uD159"+
+        "\uD15A\uD15B\uD9F6\uD15C\uD2E1\uD4A3\uD15D\uD15E"+
+        "\uF4C3\uC8B9\uD15F\uD160\uD161\uD162\uD163\uF4C4"+
+        "\uD164\uD165\uF1CD\uF1CF\uBFE3\uF1D0\uD166\uD167"+
+        "\uF1D4\uD168\uD169\uD16A\uD16B\uD16C\uD16D\uD16E"+
+        "\uF1D6\uF1D1\uD16F\uC9D1\uC5E1\uD170\uD171\uD172"+
+        "\uC2E3\uB9FC\uD173\uD174\uF1D3\uD175\uF1D5\uD176"+
+        "\uD177\uD178\uB9D3\uD179\uD17A\uD17B\uD17C\uD17D"+
+        "\uD17E\uD180\uF1DB\uD181\uD182\uD183\uD184\uD185"+
+        "\uBAD6\uD186\uB0FD\uF1D9\uD187\uD188\uD189\uD18A"+
+        "\uD18B\uF1D8\uF1D2\uF1DA\uD18C\uD18D\uD18E\uD18F"+
+        "\uD190\uF1D7\uD191\uD192\uD193\uC8EC\uD194\uD195"+
+        "\uD196\uD197\uCDCA\uF1DD\uD198\uD199\uD19A\uD19B"+
+        "\uE5BD\uD19C\uD19D\uD19E\uF1DC\uD19F\uF1DE\uD1A0"+
+        "\uD240\uD241\uD242\uD243\uD244\uD245\uD246\uD247"+
+        "\uD248\uF1DF\uD249\uD24A\uCFE5\uD24B\uD24C\uD24D"+
+        "\uD24E\uD24F\uD250\uD251\uD252\uD253\uD254\uD255"+
+        "\uD256\uD257\uD258\uD259\uD25A\uD25B\uD25C\uD25D"+
+        "\uD25E\uD25F\uD260\uD261\uD262\uD263\uF4C5\uBDF3"+
+        "\uD264\uD265\uD266\uD267\uD268\uD269\uF1E0\uD26A"+
+        "\uD26B\uD26C\uD26D\uD26E\uD26F\uD270\uD271\uD272"+
+        "\uD273\uD274\uD275\uD276\uD277\uD278\uD279\uD27A"+
+        "\uD27B\uD27C\uD27D\uF1E1\uD27E\uD280\uD281\uCEF7"+
+        "\uD282\uD2AA\uD283\uF1FB\uD284\uD285\uB8B2\uD286"+
+        "\uD287\uD288\uD289\uD28A\uD28B\uD28C\uD28D\uD28E"+
+        "\uD28F\uD290\uD291\uD292\uD293\uD294\uD295\uD296"+
+        "\uD297\uD298\uD299\uD29A\uD29B\uD29C\uD29D\uD29E"+
+        "\uD29F\uD2A0\uD340\uD341\uD342\uD343\uD344\uD345"+
+        "\uD346\uD347\uD348\uD349\uD34A\uD34B\uD34C\uD34D"+
+        "\uD34E\uD34F\uD350\uD351\uD352\uD353\uD354\uD355"+
+        "\uD356\uD357\uD358\uD359\uD35A\uD35B\uD35C\uD35D"+
+        "\uD35E\uBCFB\uB9DB\uD35F\uB9E6\uC3D9\uCAD3\uEAE8"+
+        "\uC0C0\uBEF5\uEAE9\uEAEA\uEAEB\uD360\uEAEC\uEAED"+
+        "\uEAEE\uEAEF\uBDC7\uD361\uD362\uD363\uF5FB\uD364"+
+        "\uD365\uD366\uF5FD\uD367\uF5FE\uD368\uF5FC\uD369"+
+        "\uD36A\uD36B\uD36C\uBDE2\uD36D\uF6A1\uB4A5\uD36E"+
+        "\uD36F\uD370\uD371\uF6A2\uD372\uD373\uD374\uF6A3"+
+        "\uD375\uD376\uD377\uECB2\uD378\uD379\uD37A\uD37B"+
+        "\uD37C\uD37D\uD37E\uD380\uD381\uD382\uD383\uD384"+
+        "\uD1D4\uD385\uD386\uD387\uD388\uD389\uD38A\uD9EA"+
+        "\uD38B\uD38C\uD38D\uD38E\uD38F\uD390\uD391\uD392"+
+        "\uD393\uD394\uD395\uD396\uD397\uD398\uD399\uD39A"+
+        "\uD39B\uD39C\uD39D\uD39E\uD39F\uD3A0\uD440\uD441"+
+        "\uD442\uD443\uD444\uD445\uD446\uD447\uD448\uD449"+
+        "\uD44A\uD44B\uD44C\uD44D\uD44E\uD44F\uD450\uD451"+
+        "\uD452\uD453\uD454\uD455\uD456\uD457\uD458\uD459"+
+        "\uD45A\uD45B\uD45C\uD45D\uD45E\uD45F\uF6A4\uD460"+
+        "\uD461\uD462\uD463\uD464\uD465\uD466\uD467\uD468"+
+        "\uEEBA\uD469\uD46A\uD46B\uD46C\uD46D\uD46E\uD46F"+
+        "\uD470\uD471\uD472\uD473\uD474\uD475\uD476\uD477"+
+        "\uD478\uD479\uD47A\uD47B\uD47C\uD47D\uD47E\uD480"+
+        "\uD481\uD482\uD483\uD484\uD485\uD486\uD487\uD488"+
+        "\uD489\uD48A\uD48B\uD48C\uD48D\uD48E\uD48F\uD490"+
+        "\uD491\uD492\uD493\uD494\uD495\uD496\uD497\uD498"+
+        "\uD499\uD5B2\uD49A\uD49B\uD49C\uD49D\uD49E\uD49F"+
+        "\uD4A0\uD540\uD541\uD542\uD543\uD544\uD545\uD546"+
+        "\uD547\uD3FE\uCCDC\uD548\uD549\uD54A\uD54B\uD54C"+
+        "\uD54D\uD54E\uD54F\uCAC4\uD550\uD551\uD552\uD553"+
+        "\uD554\uD555\uD556\uD557\uD558\uD559\uD55A\uD55B"+
+        "\uD55C\uD55D\uD55E\uD55F\uD560\uD561\uD562\uD563"+
+        "\uD564\uD565\uD566\uD567\uD568\uD569\uD56A\uD56B"+
+        "\uD56C\uD56D\uD56E\uD56F\uD570\uD571\uD572\uD573"+
+        "\uD574\uD575\uD576\uD577\uD578\uD579\uD57A\uD57B"+
+        "\uD57C\uD57D\uD57E\uD580\uD581\uD582\uD583\uD584"+
+        "\uD585\uD586\uD587\uD588\uD589\uD58A\uD58B\uD58C"+
+        "\uD58D\uD58E\uD58F\uD590\uD591\uD592\uD593\uD594"+
+        "\uD595\uD596\uD597\uD598\uD599\uD59A\uD59B\uD59C"+
+        "\uD59D\uD59E\uD59F\uD5A0\uD640\uD641\uD642\uD643"+
+        "\uD644\uD645\uD646\uD647\uD648\uD649\uD64A\uD64B"+
+        "\uD64C\uD64D\uD64E\uD64F\uD650\uD651\uD652\uD653"+
+        "\uD654\uD655\uD656\uD657\uD658\uD659\uD65A\uD65B"+
+        "\uD65C\uD65D\uD65E\uD65F\uD660\uD661\uD662\uE5C0"+
+        "\uD663\uD664\uD665\uD666\uD667\uD668\uD669\uD66A"+
+        "\uD66B\uD66C\uD66D\uD66E\uD66F\uD670\uD671\uD672"+
+        "\uD673\uD674\uD675\uD676\uD677\uD678\uD679\uD67A"+
+        "\uD67B\uD67C\uD67D\uD67E\uD680\uD681\uF6A5\uD682"+
+        "\uD683\uD684\uD685\uD686\uD687\uD688\uD689\uD68A"+
+        "\uD68B\uD68C\uD68D\uD68E\uD68F\uD690\uD691\uD692"+
+        "\uD693\uD694\uD695\uD696\uD697\uD698\uD699\uD69A"+
+        "\uD69B\uD69C\uD69D\uD69E\uD69F\uD6A0\uD740\uD741"+
+        "\uD742\uD743\uD744\uD745\uD746\uD747\uD748\uD749"+
+        "\uD74A\uD74B\uD74C\uD74D\uD74E\uD74F\uD750\uD751"+
+        "\uD752\uD753\uD754\uD755\uD756\uD757\uD758\uD759"+
+        "\uD75A\uD75B\uD75C\uD75D\uD75E\uD75F\uBEAF\uD760"+
+        "\uD761\uD762\uD763\uD764\uC6A9\uD765\uD766\uD767"+
+        "\uD768\uD769\uD76A\uD76B\uD76C\uD76D\uD76E\uD76F"+
+        "\uD770\uD771\uD772\uD773\uD774\uD775\uD776\uD777"+
+        "\uD778\uD779\uD77A\uD77B\uD77C\uD77D\uD77E\uD780"+
+        "\uD781\uD782\uD783\uD784\uD785\uD786\uD787\uD788"+
+        "\uD789\uD78A\uD78B\uD78C\uD78D\uD78E\uD78F\uD790"+
+        "\uD791\uD792\uD793\uD794\uD795\uD796\uD797\uD798"+
+        "\uDAA5\uBCC6\uB6A9\uB8BC\uC8CF\uBCA5\uDAA6\uDAA7"+
+        "\uCCD6\uC8C3\uDAA8\uC6FD\uD799\uD1B5\uD2E9\uD1B6"+
+        "\uBCC7\uD79A\uBDB2\uBBE4\uDAA9\uDAAA\uD1C8\uDAAB"+
+        "\uD0ED\uB6EF\uC2DB\uD79B\uCBCF\uB7ED\uC9E8\uB7C3"+
+        "\uBEF7\uD6A4\uDAAC\uDAAD\uC6C0\uD7E7\uCAB6\uD79C"+
+        "\uD5A9\uCBDF\uD5EF\uDAAE\uD6DF\uB4CA\uDAB0\uDAAF"+
+        "\uD79D\uD2EB\uDAB1\uDAB2\uDAB3\uCAD4\uDAB4\uCAAB"+
+        "\uDAB5\uDAB6\uB3CF\uD6EF\uDAB7\uBBB0\uB5AE\uDAB8"+
+        "\uDAB9\uB9EE\uD1AF\uD2E8\uDABA\uB8C3\uCFEA\uB2EF"+
+        "\uDABB\uDABC\uD79E\uBDEB\uCEDC\uD3EF\uDABD\uCEF3"+
+        "\uDABE\uD3D5\uBBE5\uDABF\uCBB5\uCBD0\uDAC0\uC7EB"+
+        "\uD6EE\uDAC1\uC5B5\uB6C1\uDAC2\uB7CC\uBFCE\uDAC3"+
+        "\uDAC4\uCBAD\uDAC5\uB5F7\uDAC6\uC1C2\uD7BB\uDAC7"+
+        "\uCCB8\uD79F\uD2EA\uC4B1\uDAC8\uB5FD\uBBD1\uDAC9"+
+        "\uD0B3\uDACA\uDACB\uCEBD\uDACC\uDACD\uDACE\uB2F7"+
+        "\uDAD1\uDACF\uD1E8\uDAD0\uC3D5\uDAD2\uD7A0\uDAD3"+
+        "\uDAD4\uDAD5\uD0BB\uD2A5\uB0F9\uDAD6\uC7AB\uDAD7"+
+        "\uBDF7\uC3A1\uDAD8\uDAD9\uC3FD\uCCB7\uDADA\uDADB"+
+        "\uC0BE\uC6D7\uDADC\uDADD\uC7B4\uDADE\uDADF\uB9C8"+
+        "\uD840\uD841\uD842\uD843\uD844\uD845\uD846\uD847"+
+        "\uD848\uBBED\uD849\uD84A\uD84B\uD84C\uB6B9\uF4F8"+
+        "\uD84D\uF4F9\uD84E\uD84F\uCDE3\uD850\uD851\uD852"+
+        "\uD853\uD854\uD855\uD856\uD857\uF5B9\uD858\uD859"+
+        "\uD85A\uD85B\uEBE0\uD85C\uD85D\uD85E\uD85F\uD860"+
+        "\uD861\uCFF3\uBBBF\uD862\uD863\uD864\uD865\uD866"+
+        "\uD867\uD868\uBAC0\uD4A5\uD869\uD86A\uD86B\uD86C"+
+        "\uD86D\uD86E\uD86F\uE1D9\uD870\uD871\uD872\uD873"+
+        "\uF5F4\uB1AA\uB2F2\uD874\uD875\uD876\uD877\uD878"+
+        "\uD879\uD87A\uF5F5\uD87B\uD87C\uF5F7\uD87D\uD87E"+
+        "\uD880\uBAD1\uF5F6\uD881\uC3B2\uD882\uD883\uD884"+
+        "\uD885\uD886\uD887\uD888\uF5F9\uD889\uD88A\uD88B"+
+        "\uF5F8\uD88C\uD88D\uD88E\uD88F\uD890\uD891\uD892"+
+        "\uD893\uD894\uD895\uD896\uD897\uD898\uD899\uD89A"+
+        "\uD89B\uD89C\uD89D\uD89E\uD89F\uD8A0\uD940\uD941"+
+        "\uD942\uD943\uD944\uD945\uD946\uD947\uD948\uD949"+
+        "\uD94A\uD94B\uD94C\uD94D\uD94E\uD94F\uD950\uD951"+
+        "\uD952\uD953\uD954\uD955\uD956\uD957\uD958\uD959"+
+        "\uD95A\uD95B\uD95C\uD95D\uD95E\uD95F\uD960\uD961"+
+        "\uD962\uD963\uD964\uD965\uD966\uD967\uD968\uD969"+
+        "\uD96A\uD96B\uD96C\uD96D\uD96E\uD96F\uD970\uD971"+
+        "\uD972\uD973\uD974\uD975\uD976\uD977\uD978\uD979"+
+        "\uD97A\uD97B\uD97C\uD97D\uD97E\uD980\uD981\uD982"+
+        "\uD983\uD984\uD985\uD986\uD987\uD988\uD989\uD98A"+
+        "\uD98B\uD98C\uD98D\uD98E\uD98F\uD990\uD991\uD992"+
+        "\uD993\uD994\uD995\uD996\uD997\uD998\uD999\uD99A"+
+        "\uD99B\uD99C\uD99D\uD99E\uD99F\uD9A0\uDA40\uDA41"+
+        "\uDA42\uDA43\uDA44\uDA45\uDA46\uDA47\uDA48\uDA49"+
+        "\uDA4A\uDA4B\uDA4C\uDA4D\uDA4E\uB1B4\uD5EA\uB8BA"+
+        "\uDA4F\uB9B1\uB2C6\uD4F0\uCFCD\uB0DC\uD5CB\uBBF5"+
+        "\uD6CA\uB7B7\uCCB0\uC6B6\uB1E1\uB9BA\uD6FC\uB9E1"+
+        "\uB7A1\uBCFA\uEADA\uEADB\uCCF9\uB9F3\uEADC\uB4FB"+
+        "\uC3B3\uB7D1\uBAD8\uEADD\uD4F4\uEADE\uBCD6\uBBDF"+
+        "\uEADF\uC1DE\uC2B8\uD4DF\uD7CA\uEAE0\uEAE1\uEAE4"+
+        "\uEAE2\uEAE3\uC9DE\uB8B3\uB6C4\uEAE5\uCAEA\uC9CD"+
+        "\uB4CD\uDA50\uDA51\uE2D9\uC5E2\uEAE6\uC0B5\uDA52"+
+        "\uD7B8\uEAE7\uD7AC\uC8FC\uD8D3\uD8CD\uD4DE\uDA53"+
+        "\uD4F9\uC9C4\uD3AE\uB8D3\uB3E0\uDA54\uC9E2\uF4F6"+
+        "\uDA55\uDA56\uDA57\uBAD5\uDA58\uF4F7\uDA59\uDA5A"+
+        "\uD7DF\uDA5B\uDA5C\uF4F1\uB8B0\uD5D4\uB8CF\uC6F0"+
+        "\uDA5D\uDA5E\uDA5F\uDA60\uDA61\uDA62\uDA63\uDA64"+
+        "\uDA65\uB3C3\uDA66\uDA67\uF4F2\uB3AC\uDA68\uDA69"+
+        "\uDA6A\uDA6B\uD4BD\uC7F7\uDA6C\uDA6D\uDA6E\uDA6F"+
+        "\uDA70\uF4F4\uDA71\uDA72\uF4F3\uDA73\uDA74\uDA75"+
+        "\uDA76\uDA77\uDA78\uDA79\uDA7A\uDA7B\uDA7C\uCCCB"+
+        "\uDA7D\uDA7E\uDA80\uC8A4\uDA81\uDA82\uDA83\uDA84"+
+        "\uDA85\uDA86\uDA87\uDA88\uDA89\uDA8A\uDA8B\uDA8C"+
+        "\uDA8D\uF4F5\uDA8E\uD7E3\uC5BF\uF5C0\uDA8F\uDA90"+
+        "\uF5BB\uDA91\uF5C3\uDA92\uF5C2\uDA93\uD6BA\uF5C1"+
+        "\uDA94\uDA95\uDA96\uD4BE\uF5C4\uDA97\uF5CC\uDA98"+
+        "\uDA99\uDA9A\uDA9B\uB0CF\uB5F8\uDA9C\uF5C9\uF5CA"+
+        "\uDA9D\uC5DC\uDA9E\uDA9F\uDAA0\uDB40\uF5C5\uF5C6"+
+        "\uDB41\uDB42\uF5C7\uF5CB\uDB43\uBEE0\uF5C8\uB8FA"+
+        "\uDB44\uDB45\uDB46\uF5D0\uF5D3\uDB47\uDB48\uDB49"+
+        "\uBFE7\uDB4A\uB9F2\uF5BC\uF5CD\uDB4B\uDB4C\uC2B7"+
+        "\uDB4D\uDB4E\uDB4F\uCCF8\uDB50\uBCF9\uDB51\uF5CE"+
+        "\uF5CF\uF5D1\uB6E5\uF5D2\uDB52\uF5D5\uDB53\uDB54"+
+        "\uDB55\uDB56\uDB57\uDB58\uDB59\uF5BD\uDB5A\uDB5B"+
+        "\uDB5C\uF5D4\uD3BB\uDB5D\uB3EC\uDB5E\uDB5F\uCCA4"+
+        "\uDB60\uDB61\uDB62\uDB63\uF5D6\uDB64\uDB65\uDB66"+
+        "\uDB67\uDB68\uDB69\uDB6A\uDB6B\uF5D7\uBEE1\uF5D8"+
+        "\uDB6C\uDB6D\uCCDF\uF5DB\uDB6E\uDB6F\uDB70\uDB71"+
+        "\uDB72\uB2C8\uD7D9\uDB73\uF5D9\uDB74\uF5DA\uF5DC"+
+        "\uDB75\uF5E2\uDB76\uDB77\uDB78\uF5E0\uDB79\uDB7A"+
+        "\uDB7B\uF5DF\uF5DD\uDB7C\uDB7D\uF5E1\uDB7E\uDB80"+
+        "\uF5DE\uF5E4\uF5E5\uDB81\uCCE3\uDB82\uDB83\uE5BF"+
+        "\uB5B8\uF5E3\uF5E8\uCCA3\uDB84\uDB85\uDB86\uDB87"+
+        "\uDB88\uF5E6\uF5E7\uDB89\uDB8A\uDB8B\uDB8C\uDB8D"+
+        "\uDB8E\uF5BE\uDB8F\uDB90\uDB91\uDB92\uDB93\uDB94"+
+        "\uDB95\uDB96\uDB97\uDB98\uDB99\uDB9A\uB1C4\uDB9B"+
+        "\uDB9C\uF5BF\uDB9D\uDB9E\uB5C5\uB2E4\uDB9F\uF5EC"+
+        "\uF5E9\uDBA0\uB6D7\uDC40\uF5ED\uDC41\uF5EA\uDC42"+
+        "\uDC43\uDC44\uDC45\uDC46\uF5EB\uDC47\uDC48\uB4DA"+
+        "\uDC49\uD4EA\uDC4A\uDC4B\uDC4C\uF5EE\uDC4D\uB3F9"+
+        "\uDC4E\uDC4F\uDC50\uDC51\uDC52\uDC53\uDC54\uF5EF"+
+        "\uF5F1\uDC55\uDC56\uDC57\uF5F0\uDC58\uDC59\uDC5A"+
+        "\uDC5B\uDC5C\uDC5D\uDC5E\uF5F2\uDC5F\uF5F3\uDC60"+
+        "\uDC61\uDC62\uDC63\uDC64\uDC65\uDC66\uDC67\uDC68"+
+        "\uDC69\uDC6A\uDC6B\uC9ED\uB9AA\uDC6C\uDC6D\uC7FB"+
+        "\uDC6E\uDC6F\uB6E3\uDC70\uDC71\uDC72\uDC73\uDC74"+
+        "\uDC75\uDC76\uCCC9\uDC77\uDC78\uDC79\uDC7A\uDC7B"+
+        "\uDC7C\uDC7D\uDC7E\uDC80\uDC81\uDC82\uDC83\uDC84"+
+        "\uDC85\uDC86\uDC87\uDC88\uDC89\uDC8A\uEAA6\uDC8B"+
+        "\uDC8C\uDC8D\uDC8E\uDC8F\uDC90\uDC91\uDC92\uDC93"+
+        "\uDC94\uDC95\uDC96\uDC97\uDC98\uDC99\uDC9A\uDC9B"+
+        "\uDC9C\uDC9D\uDC9E\uDC9F\uDCA0\uDD40\uDD41\uDD42"+
+        "\uDD43\uDD44\uDD45\uDD46\uDD47\uDD48\uDD49\uDD4A"+
+        "\uDD4B\uDD4C\uDD4D\uDD4E\uDD4F\uDD50\uDD51\uDD52"+
+        "\uDD53\uDD54\uDD55\uDD56\uDD57\uDD58\uDD59\uDD5A"+
+        "\uDD5B\uDD5C\uDD5D\uDD5E\uDD5F\uDD60\uDD61\uDD62"+
+        "\uDD63\uDD64\uDD65\uDD66\uDD67\uDD68\uDD69\uDD6A"+
+        "\uDD6B\uDD6C\uDD6D\uDD6E\uDD6F\uDD70\uDD71\uDD72"+
+        "\uDD73\uDD74\uDD75\uDD76\uDD77\uDD78\uDD79\uDD7A"+
+        "\uDD7B\uDD7C\uDD7D\uDD7E\uDD80\uDD81\uDD82\uDD83"+
+        "\uDD84\uDD85\uDD86\uDD87\uDD88\uDD89\uDD8A\uDD8B"+
+        "\uDD8C\uDD8D\uDD8E\uDD8F\uDD90\uDD91\uDD92\uDD93"+
+        "\uDD94\uDD95\uDD96\uDD97\uDD98\uDD99\uDD9A\uDD9B"+
+        "\uDD9C\uDD9D\uDD9E\uDD9F\uDDA0\uDE40\uDE41\uDE42"+
+        "\uDE43\uDE44\uDE45\uDE46\uDE47\uDE48\uDE49\uDE4A"+
+        "\uDE4B\uDE4C\uDE4D\uDE4E\uDE4F\uDE50\uDE51\uDE52"+
+        "\uDE53\uDE54\uDE55\uDE56\uDE57\uDE58\uDE59\uDE5A"+
+        "\uDE5B\uDE5C\uDE5D\uDE5E\uDE5F\uDE60\uB3B5\uD4FE"+
+        "\uB9EC\uD0F9\uDE61\uE9ED\uD7AA\uE9EE\uC2D6\uC8ED"+
+        "\uBAE4\uE9EF\uE9F0\uE9F1\uD6E1\uE9F2\uE9F3\uE9F5"+
+        "\uE9F4\uE9F6\uE9F7\uC7E1\uE9F8\uD4D8\uE9F9\uBDCE"+
+        "\uDE62\uE9FA\uE9FB\uBDCF\uE9FC\uB8A8\uC1BE\uE9FD"+
+        "\uB1B2\uBBD4\uB9F5\uE9FE\uDE63\uEAA1\uEAA2\uEAA3"+
+        "\uB7F8\uBCAD\uDE64\uCAE4\uE0CE\uD4AF\uCFBD\uD5B7"+
+        "\uEAA4\uD5DE\uEAA5\uD0C1\uB9BC\uDE65\uB4C7\uB1D9"+
+        "\uDE66\uDE67\uDE68\uC0B1\uDE69\uDE6A\uDE6B\uDE6C"+
+        "\uB1E6\uB1E7\uDE6D\uB1E8\uDE6E\uDE6F\uDE70\uDE71"+
+        "\uB3BD\uC8E8\uDE72\uDE73\uDE74\uDE75\uE5C1\uDE76"+
+        "\uDE77\uB1DF\uDE78\uDE79\uDE7A\uC1C9\uB4EF\uDE7B"+
+        "\uDE7C\uC7A8\uD3D8\uDE7D\uC6F9\uD1B8\uDE7E\uB9FD"+
+        "\uC2F5\uDE80\uDE81\uDE82\uDE83\uDE84\uD3AD\uDE85"+
+        "\uD4CB\uBDFC\uDE86\uE5C2\uB7B5\uE5C3\uDE87\uDE88"+
+        "\uBBB9\uD5E2\uDE89\uBDF8\uD4B6\uCEA5\uC1AC\uB3D9"+
+        "\uDE8A\uDE8B\uCCF6\uDE8C\uE5C6\uE5C4\uE5C8\uDE8D"+
+        "\uE5CA\uE5C7\uB5CF\uC6C8\uDE8E\uB5FC\uE5C5\uDE8F"+
+        "\uCAF6\uDE90\uDE91\uE5C9\uDE92\uDE93\uDE94\uC3D4"+
+        "\uB1C5\uBCA3\uDE95\uDE96\uDE97\uD7B7\uDE98\uDE99";
+
+    private final static String innerEncoderIndex9=
+        "\uCDCB\uCBCD\uCACA\uCCD3\uE5CC\uE5CB\uC4E6\uDE9A"+
+        "\uDE9B\uD1A1\uD1B7\uE5CD\uDE9C\uE5D0\uDE9D\uCDB8"+
+        "\uD6F0\uE5CF\uB5DD\uDE9E\uCDBE\uDE9F\uE5D1\uB6BA"+
+        "\uDEA0\uDF40\uCDA8\uB9E4\uDF41\uCAC5\uB3D1\uCBD9"+
+        "\uD4EC\uE5D2\uB7EA\uDF42\uDF43\uDF44\uE5CE\uDF45"+
+        "\uDF46\uDF47\uDF48\uDF49\uDF4A\uE5D5\uB4FE\uE5D6"+
+        "\uDF4B\uDF4C\uDF4D\uDF4E\uDF4F\uE5D3\uE5D4\uDF50"+
+        "\uD2DD\uDF51\uDF52\uC2DF\uB1C6\uDF53\uD3E2\uDF54"+
+        "\uDF55\uB6DD\uCBEC\uDF56\uE5D7\uDF57\uDF58\uD3F6"+
+        "\uDF59\uDF5A\uDF5B\uDF5C\uDF5D\uB1E9\uDF5E\uB6F4"+
+        "\uE5DA\uE5D8\uE5D9\uB5C0\uDF5F\uDF60\uDF61\uD2C5"+
+        "\uE5DC\uDF62\uDF63\uE5DE\uDF64\uDF65\uDF66\uDF67"+
+        "\uDF68\uDF69\uE5DD\uC7B2\uDF6A\uD2A3\uDF6B\uDF6C"+
+        "\uE5DB\uDF6D\uDF6E\uDF6F\uDF70\uD4E2\uD5DA\uDF71"+
+        "\uDF72\uDF73\uDF74\uDF75\uE5E0\uD7F1\uDF76\uDF77"+
+        "\uDF78\uDF79\uDF7A\uDF7B\uDF7C\uE5E1\uDF7D\uB1DC"+
+        "\uD1FB\uDF7E\uE5E2\uE5E4\uDF80\uDF81\uDF82\uDF83"+
+        "\uE5E3\uDF84\uDF85\uE5E5\uDF86\uDF87\uDF88\uDF89"+
+        "\uDF8A\uD2D8\uDF8B\uB5CB\uDF8C\uE7DF\uDF8D\uDAF5"+
+        "\uDF8E\uDAF8\uDF8F\uDAF6\uDF90\uDAF7\uDF91\uDF92"+
+        "\uDF93\uDAFA\uD0CF\uC4C7\uDF94\uDF95\uB0EE\uDF96"+
+        "\uDF97\uDF98\uD0B0\uDF99\uDAF9\uDF9A\uD3CA\uBAAA"+
+        "\uDBA2\uC7F1\uDF9B\uDAFC\uDAFB\uC9DB\uDAFD\uDF9C"+
+        "\uDBA1\uD7DE\uDAFE\uC1DA\uDF9D\uDF9E\uDBA5\uDF9F"+
+        "\uDFA0\uD3F4\uE040\uE041\uDBA7\uDBA4\uE042\uDBA8"+
+        "\uE043\uE044\uBDBC\uE045\uE046\uE047\uC0C9\uDBA3"+
+        "\uDBA6\uD6A3\uE048\uDBA9\uE049\uE04A\uE04B\uDBAD"+
+        "\uE04C\uE04D\uE04E\uDBAE\uDBAC\uBAC2\uE04F\uE050"+
+        "\uE051\uBFA4\uDBAB\uE052\uE053\uE054\uDBAA\uD4C7"+
+        "\uB2BF\uE055\uE056\uDBAF\uE057\uB9F9\uE058\uDBB0"+
+        "\uE059\uE05A\uE05B\uE05C\uB3BB\uE05D\uE05E\uE05F"+
+        "\uB5A6\uE060\uE061\uE062\uE063\uB6BC\uDBB1\uE064"+
+        "\uE065\uE066\uB6F5\uE067\uDBB2\uE068\uE069\uE06A"+
+        "\uE06B\uE06C\uE06D\uE06E\uE06F\uE070\uE071\uE072"+
+        "\uE073\uE074\uE075\uE076\uE077\uE078\uE079\uE07A"+
+        "\uE07B\uB1C9\uE07C\uE07D\uE07E\uE080\uDBB4\uE081"+
+        "\uE082\uE083\uDBB3\uDBB5\uE084\uE085\uE086\uE087"+
+        "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uDBB7"+
+        "\uE08F\uDBB6\uE090\uE091\uE092\uE093\uE094\uE095"+
+        "\uE096\uDBB8\uE097\uE098\uE099\uE09A\uE09B\uE09C"+
+        "\uE09D\uE09E\uE09F\uDBB9\uE0A0\uE140\uDBBA\uE141"+
+        "\uE142\uD3CF\uF4FA\uC7F5\uD7C3\uC5E4\uF4FC\uF4FD"+
+        "\uF4FB\uE143\uBEC6\uE144\uE145\uE146\uE147\uD0EF"+
+        "\uE148\uE149\uB7D3\uE14A\uE14B\uD4CD\uCCAA\uE14C"+
+        "\uE14D\uF5A2\uF5A1\uBAA8\uF4FE\uCBD6\uE14E\uE14F"+
+        "\uE150\uF5A4\uC0D2\uE151\uB3EA\uE152\uCDAA\uF5A5"+
+        "\uF5A3\uBDB4\uF5A8\uE153\uF5A9\uBDCD\uC3B8\uBFE1"+
+        "\uCBE1\uF5AA\uE154\uE155\uE156\uF5A6\uF5A7\uC4F0"+
+        "\uE157\uE158\uE159\uE15A\uE15B\uF5AC\uE15C\uB4BC"+
+        "\uE15D\uD7ED\uE15E\uB4D7\uF5AB\uF5AE\uE15F\uE160"+
+        "\uF5AD\uF5AF\uD0D1\uE161\uE162\uE163\uE164\uE165"+
+        "\uE166\uE167\uC3D1\uC8A9\uE168\uE169\uE16A\uE16B"+
+        "\uE16C\uE16D\uF5B0\uF5B1\uE16E\uE16F\uE170\uE171"+
+        "\uE172\uE173\uF5B2\uE174\uE175\uF5B3\uF5B4\uF5B5"+
+        "\uE176\uE177\uE178\uE179\uF5B7\uF5B6\uE17A\uE17B"+
+        "\uE17C\uE17D\uF5B8\uE17E\uE180\uE181\uE182\uE183"+
+        "\uE184\uE185\uE186\uE187\uE188\uE189\uE18A\uB2C9"+
+        "\uE18B\uD3D4\uCACD\uE18C\uC0EF\uD6D8\uD2B0\uC1BF"+
+        "\uE18D\uBDF0\uE18E\uE18F\uE190\uE191\uE192\uE193"+
+        "\uE194\uE195\uE196\uE197\uB8AA\uE198\uE199\uE19A"+
+        "\uE19B\uE19C\uE19D\uE19E\uE19F\uE1A0\uE240\uE241"+
+        "\uE242\uE243\uE244\uE245\uE246\uE247\uE248\uE249"+
+        "\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F\uE250\uE251"+
+        "\uE252\uE253\uE254\uE255\uE256\uE257\uE258\uE259"+
+        "\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F\uE260\uE261"+
+        "\uE262\uE263\uE264\uE265\uE266\uE267\uE268\uE269"+
+        "\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F\uE270\uE271"+
+        "\uE272\uE273\uE274\uE275\uE276\uE277\uE278\uE279"+
+        "\uE27A\uE27B\uE27C\uE27D\uE27E\uE280\uE281\uE282"+
+        "\uE283\uE284\uE285\uE286\uE287\uE288\uE289\uE28A"+
+        "\uE28B\uE28C\uE28D\uE28E\uE28F\uE290\uE291\uE292"+
+        "\uE293\uE294\uE295\uE296\uE297\uE298\uE299\uE29A"+
+        "\uE29B\uE29C\uE29D\uE29E\uE29F\uE2A0\uE340\uE341"+
+        "\uE342\uE343\uE344\uE345\uE346\uE347\uE348\uE349"+
+        "\uE34A\uE34B\uE34C\uE34D\uE34E\uE34F\uE350\uE351"+
+        "\uE352\uE353\uE354\uE355\uE356\uE357\uE358\uE359"+
+        "\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F\uE360\uE361"+
+        "\uE362\uE363\uE364\uE365\uE366\uE367\uE368\uE369"+
+        "\uE36A\uE36B\uE36C\uE36D\uBCF8\uE36E\uE36F\uE370"+
+        "\uE371\uE372\uE373\uE374\uE375\uE376\uE377\uE378"+
+        "\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE380\uE381"+
+        "\uE382\uE383\uE384\uE385\uE386\uE387\uF6C6\uE388"+
+        "\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F\uE390"+
+        "\uE391\uE392\uE393\uE394\uE395\uE396\uE397\uE398"+
+        "\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F\uE3A0"+
+        "\uE440\uE441\uE442\uE443\uE444\uE445\uF6C7\uE446"+
+        "\uE447\uE448\uE449\uE44A\uE44B\uE44C\uE44D\uE44E"+
+        "\uE44F\uE450\uE451\uE452\uE453\uE454\uE455\uE456"+
+        "\uE457\uE458\uE459\uE45A\uE45B\uE45C\uE45D\uE45E"+
+        "\uF6C8\uE45F\uE460\uE461\uE462\uE463\uE464\uE465"+
+        "\uE466\uE467\uE468\uE469\uE46A\uE46B\uE46C\uE46D"+
+        "\uE46E\uE46F\uE470\uE471\uE472\uE473\uE474\uE475"+
+        "\uE476\uE477\uE478\uE479\uE47A\uE47B\uE47C\uE47D"+
+        "\uE47E\uE480\uE481\uE482\uE483\uE484\uE485\uE486"+
+        "\uE487\uE488\uE489\uE48A\uE48B\uE48C\uE48D\uE48E"+
+        "\uE48F\uE490\uE491\uE492\uE493\uE494\uE495\uE496"+
+        "\uE497\uE498\uE499\uE49A\uE49B\uE49C\uE49D\uE49E"+
+        "\uE49F\uE4A0\uE540\uE541\uE542\uE543\uE544\uE545"+
+        "\uE546\uE547\uE548\uE549\uE54A\uE54B\uE54C\uE54D"+
+        "\uE54E\uE54F\uE550\uE551\uE552\uE553\uE554\uE555"+
+        "\uE556\uE557\uE558\uE559\uE55A\uE55B\uE55C\uE55D"+
+        "\uE55E\uE55F\uE560\uE561\uE562\uE563\uE564\uE565"+
+        "\uE566\uE567\uE568\uE569\uE56A\uE56B\uE56C\uE56D"+
+        "\uE56E\uE56F\uE570\uE571\uE572\uE573\uF6C9\uE574"+
+        "\uE575\uE576\uE577\uE578\uE579\uE57A\uE57B\uE57C"+
+        "\uE57D\uE57E\uE580\uE581\uE582\uE583\uE584\uE585"+
+        "\uE586\uE587\uE588\uE589\uE58A\uE58B\uE58C\uE58D"+
+        "\uE58E\uE58F\uE590\uE591\uE592\uE593\uE594\uE595"+
+        "\uE596\uE597\uE598\uE599\uE59A\uE59B\uE59C\uE59D"+
+        "\uE59E\uE59F\uF6CA\uE5A0\uE640\uE641\uE642\uE643"+
+        "\uE644\uE645\uE646\uE647\uE648\uE649\uE64A\uE64B"+
+        "\uE64C\uE64D\uE64E\uE64F\uE650\uE651\uE652\uE653"+
+        "\uE654\uE655\uE656\uE657\uE658\uE659\uE65A\uE65B"+
+        "\uE65C\uE65D\uE65E\uE65F\uE660\uE661\uE662\uF6CC"+
+        "\uE663\uE664\uE665\uE666\uE667\uE668\uE669\uE66A"+
+        "\uE66B\uE66C\uE66D\uE66E\uE66F\uE670\uE671\uE672"+
+        "\uE673\uE674\uE675\uE676\uE677\uE678\uE679\uE67A"+
+        "\uE67B\uE67C\uE67D\uE67E\uE680\uE681\uE682\uE683"+
+        "\uE684\uE685\uE686\uE687\uE688\uE689\uE68A\uE68B"+
+        "\uE68C\uE68D\uE68E\uE68F\uE690\uE691\uE692\uE693"+
+        "\uE694\uE695\uE696\uE697\uE698\uE699\uE69A\uE69B"+
+        "\uE69C\uE69D\uF6CB\uE69E\uE69F\uE6A0\uE740\uE741"+
+        "\uE742\uE743\uE744\uE745\uE746\uE747\uF7E9\uE748"+
+        "\uE749\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F\uE750"+
+        "\uE751\uE752\uE753\uE754\uE755\uE756\uE757\uE758"+
+        "\uE759\uE75A\uE75B\uE75C\uE75D\uE75E\uE75F\uE760"+
+        "\uE761\uE762\uE763\uE764\uE765\uE766\uE767\uE768"+
+        "\uE769\uE76A\uE76B\uE76C\uE76D\uE76E\uE76F\uE770"+
+        "\uE771\uE772\uE773\uE774\uE775\uE776\uE777\uE778"+
+        "\uE779\uE77A\uE77B\uE77C\uE77D\uE77E\uE780\uE781"+
+        "\uE782\uE783\uE784\uE785\uE786\uE787\uE788\uE789"+
+        "\uE78A\uE78B\uE78C\uE78D\uE78E\uE78F\uE790\uE791"+
+        "\uE792\uE793\uE794\uE795\uE796\uE797\uE798\uE799"+
+        "\uE79A\uE79B\uE79C\uE79D\uE79E\uE79F\uE7A0\uE840"+
+        "\uE841\uE842\uE843\uE844\uE845\uE846\uE847\uE848"+
+        "\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uF6CD\uE84F"+
+        "\uE850\uE851\uE852\uE853\uE854\uE855\uE856\uE857"+
+        "\uE858\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F"+
+        "\uE860\uE861\uE862\uE863\uE864\uE865\uE866\uE867"+
+        "\uE868\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F"+
+        "\uE870\uE871\uE872\uE873\uE874\uE875\uE876\uE877"+
+        "\uE878\uE879\uE87A\uF6CE\uE87B\uE87C\uE87D\uE87E"+
+        "\uE880\uE881\uE882\uE883\uE884\uE885\uE886\uE887"+
+        "\uE888\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F"+
+        "\uE890\uE891\uE892\uE893\uE894\uEEC4\uEEC5\uEEC6"+
+        "\uD5EB\uB6A4\uEEC8\uEEC7\uEEC9\uEECA\uC7A5\uEECB"+
+        "\uEECC\uE895\uB7B0\uB5F6\uEECD\uEECF\uE896\uEECE"+
+        "\uE897\uB8C6\uEED0\uEED1\uEED2\uB6DB\uB3AE\uD6D3"+
+        "\uC4C6\uB1B5\uB8D6\uEED3\uEED4\uD4BF\uC7D5\uBEFB"+
+        "\uCED9\uB9B3\uEED6\uEED5\uEED8\uEED7\uC5A5\uEED9"+
+        "\uEEDA\uC7AE\uEEDB\uC7AF\uEEDC\uB2A7\uEEDD\uEEDE"+
+        "\uEEDF\uEEE0\uEEE1\uD7EA\uEEE2\uEEE3\uBCD8\uEEE4"+
+        "\uD3CB\uCCFA\uB2AC\uC1E5\uEEE5\uC7A6\uC3AD\uE898"+
+        "\uEEE6\uEEE7\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uE899"+
+        "\uEEED\uEEEE\uEEEF\uE89A\uE89B\uEEF0\uEEF1\uEEF2"+
+        "\uEEF4\uEEF3\uE89C\uEEF5\uCDAD\uC2C1\uEEF6\uEEF7"+
+        "\uEEF8\uD5A1\uEEF9\uCFB3\uEEFA\uEEFB\uE89D\uEEFC"+
+        "\uEEFD\uEFA1\uEEFE\uEFA2\uB8F5\uC3FA\uEFA3\uEFA4"+
+        "\uBDC2\uD2BF\uB2F9\uEFA5\uEFA6\uEFA7\uD2F8\uEFA8"+
+        "\uD6FD\uEFA9\uC6CC\uE89E\uEFAA\uEFAB\uC1B4\uEFAC"+
+        "\uCFFA\uCBF8\uEFAE\uEFAD\uB3FA\uB9F8\uEFAF\uEFB0"+
+        "\uD0E2\uEFB1\uEFB2\uB7E6\uD0BF\uEFB3\uEFB4\uEFB5"+
+        "\uC8F1\uCCE0\uEFB6\uEFB7\uEFB8\uEFB9\uEFBA\uD5E0"+
+        "\uEFBB\uB4ED\uC3AA\uEFBC\uE89F\uEFBD\uEFBE\uEFBF"+
+        "\uE8A0\uCEFD\uEFC0\uC2E0\uB4B8\uD7B6\uBDF5\uE940"+
+        "\uCFC7\uEFC3\uEFC1\uEFC2\uEFC4\uB6A7\uBCFC\uBEE2"+
+        "\uC3CC\uEFC5\uEFC6\uE941\uEFC7\uEFCF\uEFC8\uEFC9"+
+        "\uEFCA\uC7C2\uEFF1\uB6CD\uEFCB\uE942\uEFCC\uEFCD"+
+        "\uB6C6\uC3BE\uEFCE\uE943\uEFD0\uEFD1\uEFD2\uD5F2"+
+        "\uE944\uEFD3\uC4F7\uE945\uEFD4\uC4F8\uEFD5\uEFD6"+
+        "\uB8E4\uB0F7\uEFD7\uEFD8\uEFD9\uE946\uEFDA\uEFDB"+
+        "\uEFDC\uEFDD\uE947\uEFDE\uBEB5\uEFE1\uEFDF\uEFE0"+
+        "\uE948\uEFE2\uEFE3\uC1CD\uEFE4\uEFE5\uEFE6\uEFE7"+
+        "\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC\uC0D8\uE949\uEFED"+
+        "\uC1AD\uEFEE\uEFEF\uEFF0\uE94A\uE94B\uCFE2\uE94C"+
+        "\uE94D\uE94E\uE94F\uE950\uE951\uE952\uE953\uB3A4"+
+        "\uE954\uE955\uE956\uE957\uE958\uE959\uE95A\uE95B"+
+        "\uE95C\uE95D\uE95E\uE95F\uE960\uE961\uE962\uE963"+
+        "\uE964\uE965\uE966\uE967\uE968\uE969\uE96A\uE96B"+
+        "\uE96C\uE96D\uE96E\uE96F\uE970\uE971\uE972\uE973"+
+        "\uE974\uE975\uE976\uE977\uE978\uE979\uE97A\uE97B"+
+        "\uE97C\uE97D\uE97E\uE980\uE981\uE982\uE983\uE984"+
+        "\uE985\uE986\uE987\uE988\uE989\uE98A\uE98B\uE98C"+
+        "\uE98D\uE98E\uE98F\uE990\uE991\uE992\uE993\uE994"+
+        "\uE995\uE996\uE997\uE998\uE999\uE99A\uE99B\uE99C"+
+        "\uE99D\uE99E\uE99F\uE9A0\uEA40\uEA41\uEA42\uEA43"+
+        "\uEA44\uEA45\uEA46\uEA47\uEA48\uEA49\uEA4A\uEA4B"+
+        "\uEA4C\uEA4D\uEA4E\uEA4F\uEA50\uEA51\uEA52\uEA53"+
+        "\uEA54\uEA55\uEA56\uEA57\uEA58\uEA59\uEA5A\uEA5B"+
+        "\uC3C5\uE3C5\uC9C1\uE3C6\uEA5C\uB1D5\uCECA\uB4B3"+
+        "\uC8F2\uE3C7\uCFD0\uE3C8\uBCE4\uE3C9\uE3CA\uC3C6"+
+        "\uD5A2\uC4D6\uB9EB\uCEC5\uE3CB\uC3F6\uE3CC\uEA5D"+
+        "\uB7A7\uB8F3\uBAD2\uE3CD\uE3CE\uD4C4\uE3CF\uEA5E"+
+        "\uE3D0\uD1CB\uE3D1\uE3D2\uE3D3\uE3D4\uD1D6\uE3D5"+
+        "\uB2FB\uC0BB\uE3D6\uEA5F\uC0AB\uE3D7\uE3D8\uE3D9"+
+        "\uEA60\uE3DA\uE3DB\uEA61\uB8B7\uDAE2\uEA62\uB6D3"+
+        "\uEA63\uDAE4\uDAE3\uEA64\uEA65\uEA66\uEA67\uEA68"+
+        "\uEA69\uEA6A\uDAE6\uEA6B\uEA6C\uEA6D\uC8EE\uEA6E"+
+        "\uEA6F\uDAE5\uB7C0\uD1F4\uD2F5\uD5F3\uBDD7\uEA70"+
+        "\uEA71\uEA72\uEA73\uD7E8\uDAE8\uDAE7\uEA74\uB0A2"+
+        "\uCDD3\uEA75\uDAE9\uEA76\uB8BD\uBCCA\uC2BD\uC2A4"+
+        "\uB3C2\uDAEA\uEA77\uC2AA\uC4B0\uBDB5\uEA78\uEA79"+
+        "\uCFDE\uEA7A\uEA7B\uEA7C\uDAEB\uC9C2\uEA7D\uEA7E"+
+        "\uEA80\uEA81\uEA82\uB1DD\uEA83\uEA84\uEA85\uDAEC"+
+        "\uEA86\uB6B8\uD4BA\uEA87\uB3FD\uEA88\uEA89\uDAED"+
+        "\uD4C9\uCFD5\uC5E3\uEA8A\uDAEE\uEA8B\uEA8C\uEA8D"+
+        "\uEA8E\uEA8F\uDAEF\uEA90\uDAF0\uC1EA\uCCD5\uCFDD"+
+        "\uEA91\uEA92\uEA93\uEA94\uEA95\uEA96\uEA97\uEA98"+
+        "\uEA99\uEA9A\uEA9B\uEA9C\uEA9D\uD3E7\uC2A1\uEA9E"+
+        "\uDAF1\uEA9F\uEAA0\uCBE5\uEB40\uDAF2\uEB41\uCBE6"+
+        "\uD2FE\uEB42\uEB43\uEB44\uB8F4\uEB45\uEB46\uDAF3"+
+        "\uB0AF\uCFB6\uEB47\uEB48\uD5CF\uEB49\uEB4A\uEB4B"+
+        "\uEB4C\uEB4D\uEB4E\uEB4F\uEB50\uEB51\uEB52\uCBED"+
+        "\uEB53\uEB54\uEB55\uEB56\uEB57\uEB58\uEB59\uEB5A"+
+        "\uDAF4\uEB5B\uEB5C\uE3C4\uEB5D\uEB5E\uC1A5\uEB5F"+
+        "\uEB60\uF6BF\uEB61\uEB62\uF6C0\uF6C1\uC4D1\uEB63"+
+        "\uC8B8\uD1E3\uEB64\uEB65\uD0DB\uD1C5\uBCAF\uB9CD"+
+        "\uEB66\uEFF4\uEB67\uEB68\uB4C6\uD3BA\uF6C2\uB3FB"+
+        "\uEB69\uEB6A\uF6C3\uEB6B\uEB6C\uB5F1\uEB6D\uEB6E"+
+        "\uEB6F\uEB70\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76"+
+        "\uF6C5\uEB77\uEB78\uEB79\uEB7A\uEB7B\uEB7C\uEB7D"+
+        "\uD3EA\uF6A7\uD1A9\uEB7E\uEB80\uEB81\uEB82\uF6A9"+
+        "\uEB83\uEB84\uEB85\uF6A8\uEB86\uEB87\uC1E3\uC0D7"+
+        "\uEB88\uB1A2\uEB89\uEB8A\uEB8B\uEB8C\uCEED\uEB8D"+
+        "\uD0E8\uF6AB\uEB8E\uEB8F\uCFF6\uEB90\uF6AA\uD5F0"+
+        "\uF6AC\uC3B9\uEB91\uEB92\uEB93\uBBF4\uF6AE\uF6AD"+
+        "\uEB94\uEB95\uEB96\uC4DE\uEB97\uEB98\uC1D8\uEB99"+
+        "\uEB9A\uEB9B\uEB9C\uEB9D\uCBAA\uEB9E\uCFBC\uEB9F"+
+        "\uEBA0\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46"+
+        "\uEC47\uEC48\uF6AF\uEC49\uEC4A\uF6B0\uEC4B\uEC4C"+
+        "\uF6B1\uEC4D\uC2B6\uEC4E\uEC4F\uEC50\uEC51\uEC52"+
+        "\uB0D4\uC5F9\uEC53\uEC54\uEC55\uEC56\uF6B2\uEC57"+
+        "\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E\uEC5F"+
+        "\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66\uEC67"+
+        "\uEC68\uEC69\uC7E0\uF6A6\uEC6A\uEC6B\uBEB8\uEC6C"+
+        "\uEC6D\uBEB2\uEC6E\uB5E5\uEC6F\uEC70\uB7C7\uEC71"+
+        "\uBFBF\uC3D2\uC3E6\uEC72\uEC73\uD8CC\uEC74\uEC75"+
+        "\uEC76\uB8EF\uEC77\uEC78\uEC79\uEC7A\uEC7B\uEC7C"+
+        "\uEC7D\uEC7E\uEC80\uBDF9\uD1A5\uEC81\uB0D0\uEC82"+
+        "\uEC83\uEC84\uEC85\uEC86\uF7B0\uEC87\uEC88\uEC89"+
+        "\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E\uF7B1\uEC8F\uEC90"+
+        "\uEC91\uEC92\uEC93\uD0AC\uEC94\uB0B0\uEC95\uEC96"+
+        "\uEC97\uF7B2\uF7B3\uEC98\uF7B4\uEC99\uEC9A\uEC9B"+
+        "\uC7CA\uEC9C\uEC9D\uEC9E\uEC9F\uECA0\uED40\uED41"+
+        "\uBECF\uED42\uED43\uF7B7\uED44\uED45\uED46\uED47"+
+        "\uED48\uED49\uED4A\uF7B6\uED4B\uB1DE\uED4C\uF7B5"+
+        "\uED4D\uED4E\uF7B8\uED4F\uF7B9\uED50\uED51\uED52"+
+        "\uED53\uED54\uED55\uED56\uED57\uED58\uED59\uED5A"+
+        "\uED5B\uED5C\uED5D\uED5E\uED5F\uED60\uED61\uED62"+
+        "\uED63\uED64\uED65\uED66\uED67\uED68\uED69\uED6A"+
+        "\uED6B\uED6C\uED6D\uED6E\uED6F\uED70\uED71\uED72"+
+        "\uED73\uED74\uED75\uED76\uED77\uED78\uED79\uED7A"+
+        "\uED7B\uED7C\uED7D\uED7E\uED80\uED81\uCEA4\uC8CD"+
+        "\uED82\uBAAB\uE8B8\uE8B9\uE8BA\uBEC2\uED83\uED84"+
+        "\uED85\uED86\uED87\uD2F4\uED88\uD4CF\uC9D8\uED89"+
+        "\uED8A\uED8B\uED8C\uED8D\uED8E\uED8F\uED90\uED91"+
+        "\uED92\uED93\uED94\uED95\uED96\uED97\uED98\uED99"+
+        "\uED9A\uED9B\uED9C\uED9D\uED9E\uED9F\uEDA0\uEE40"+
+        "\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47\uEE48"+
+        "\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F\uEE50"+
+        "\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57\uEE58"+
+        "\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F\uEE60"+
+        "\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67\uEE68"+
+        "\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F\uEE70"+
+        "\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77\uEE78"+
+        "\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE80\uEE81"+
+        "\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87\uEE88\uEE89"+
+        "\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F\uEE90\uEE91"+
+        "\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97\uEE98\uEE99"+
+        "\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F\uEEA0\uEF40"+
+        "\uEF41\uEF42\uEF43\uEF44\uEF45\uD2B3\uB6A5\uC7EA"+
+        "\uF1FC\uCFEE\uCBB3\uD0EB\uE7EF\uCDE7\uB9CB\uB6D9"+
+        "\uF1FD\uB0E4\uCBCC\uF1FE\uD4A4\uC2AD\uC1EC\uC6C4"+
+        "\uBEB1\uF2A1\uBCD5\uEF46\uF2A2\uF2A3\uEF47\uF2A4"+
+        "\uD2C3\uC6B5\uEF48\uCDC7\uF2A5\uEF49\uD3B1\uBFC5"+
+        "\uCCE2\uEF4A\uF2A6\uF2A7\uD1D5\uB6EE\uF2A8\uF2A9"+
+        "\uB5DF\uF2AA\uF2AB\uEF4B\uB2FC\uF2AC\uF2AD\uC8A7"+
+        "\uEF4C\uEF4D\uEF4E\uEF4F\uEF50\uEF51\uEF52\uEF53"+
+        "\uEF54\uEF55\uEF56\uEF57\uEF58\uEF59\uEF5A\uEF5B"+
+        "\uEF5C\uEF5D\uEF5E\uEF5F\uEF60\uEF61\uEF62\uEF63"+
+        "\uEF64\uEF65\uEF66\uEF67\uEF68\uEF69\uEF6A\uEF6B"+
+        "\uEF6C\uEF6D\uEF6E\uEF6F\uEF70\uEF71\uB7E7\uEF72"+
+        "\uEF73\uECA9\uECAA\uECAB\uEF74\uECAC\uEF75\uEF76"+
+        "\uC6AE\uECAD\uECAE\uEF77\uEF78\uEF79\uB7C9\uCAB3"+
+        "\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E\uEF80\uEF81\uE2B8"+
+        "\uF7CF\uEF82\uEF83\uEF84\uEF85\uEF86\uEF87\uEF88"+
+        "\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E\uEF8F\uEF90"+
+        "\uEF91\uEF92\uEF93\uEF94\uEF95\uEF96\uEF97\uEF98"+
+        "\uEF99\uEF9A\uEF9B\uEF9C\uEF9D\uEF9E\uEF9F\uEFA0"+
+        "\uF040\uF041\uF042\uF043\uF044\uF7D0\uF045\uF046"+
+        "\uB2CD\uF047\uF048\uF049\uF04A\uF04B\uF04C\uF04D"+
+        "\uF04E\uF04F\uF050\uF051\uF052\uF053\uF054\uF055"+
+        "\uF056\uF057\uF058\uF059\uF05A\uF05B\uF05C\uF05D"+
+        "\uF05E\uF05F\uF060\uF061\uF062\uF063\uF7D1\uF064"+
+        "\uF065\uF066\uF067\uF068\uF069\uF06A\uF06B\uF06C"+
+        "\uF06D\uF06E\uF06F\uF070\uF071\uF072\uF073\uF074"+
+        "\uF075\uF076\uF077\uF078\uF079\uF07A\uF07B\uF07C"+
+        "\uF07D\uF07E\uF080\uF081\uF082\uF083\uF084\uF085"+
+        "\uF086\uF087\uF088\uF089\uF7D3\uF7D2\uF08A\uF08B"+
+        "\uF08C\uF08D\uF08E\uF08F\uF090\uF091\uF092\uF093"+
+        "\uF094\uF095\uF096\uE2BB\uF097\uBCA2\uF098\uE2BC"+
+        "\uE2BD\uE2BE\uE2BF\uE2C0\uE2C1\uB7B9\uD2FB\uBDA4"+
+        "\uCACE\uB1A5\uCBC7\uF099\uE2C2\uB6FC\uC8C4\uE2C3"+
+        "\uF09A\uF09B\uBDC8\uF09C\uB1FD\uE2C4\uF09D\uB6F6"+
+        "\uE2C5\uC4D9\uF09E\uF09F\uE2C6\uCFDA\uB9DD\uE2C7"+
+        "\uC0A1\uF0A0\uE2C8\uB2F6\uF140\uE2C9\uF141\uC1F3"+
+        "\uE2CA\uE2CB\uC2F8\uE2CC\uE2CD\uE2CE\uCAD7\uD8B8"+
+        "\uD9E5\uCFE3\uF142\uF143\uF144\uF145\uF146\uF147"+
+        "\uF148\uF149\uF14A\uF14B\uF14C\uF0A5\uF14D\uF14E"+
+        "\uDCB0\uF14F\uF150\uF151\uF152\uF153\uF154\uF155"+
+        "\uF156\uF157\uF158\uF159\uF15A\uF15B\uF15C\uF15D"+
+        "\uF15E\uF15F\uF160\uF161\uF162\uF163\uF164\uF165"+
+        "\uF166\uF167\uF168\uF169\uF16A\uF16B\uF16C\uF16D"+
+        "\uF16E\uF16F\uF170\uF171\uF172\uF173\uF174\uF175"+
+        "\uF176\uF177\uF178\uF179\uF17A\uF17B\uF17C\uF17D"+
+        "\uF17E\uF180\uF181\uF182\uF183\uF184\uF185\uF186"+
+        "\uF187\uF188\uF189\uF18A\uF18B\uF18C\uF18D\uF18E"+
+        "\uF18F\uF190\uF191\uF192\uF193\uF194\uF195\uF196"+
+        "\uF197\uF198\uF199\uF19A\uF19B\uF19C\uF19D\uF19E"+
+        "\uF19F\uF1A0\uF240\uF241\uF242\uF243\uF244\uF245"+
+        "\uF246\uF247\uF248\uF249\uF24A\uF24B\uF24C\uF24D"+
+        "\uF24E\uF24F\uF250\uF251\uF252\uF253\uF254\uF255"+
+        "\uF256\uF257\uF258\uF259\uF25A\uF25B\uF25C\uF25D"+
+        "\uF25E\uF25F\uF260\uF261\uF262\uF263\uF264\uF265"+
+        "\uF266\uF267\uF268\uF269\uF26A\uF26B\uF26C\uF26D"+
+        "\uF26E\uF26F\uF270\uF271\uF272\uF273\uF274\uF275"+
+        "\uF276\uF277\uF278\uF279\uF27A\uF27B\uF27C\uF27D"+
+        "\uF27E\uF280\uF281\uF282\uF283\uF284\uF285\uF286"+
+        "\uF287\uF288\uF289\uF28A\uF28B\uF28C\uF28D\uF28E"+
+        "\uF28F\uF290\uF291\uF292\uF293\uF294\uF295\uF296"+
+        "\uF297\uF298\uF299\uF29A\uF29B\uF29C\uF29D\uF29E"+
+        "\uF29F\uF2A0\uF340\uF341\uF342\uF343\uF344\uF345"+
+        "\uF346\uF347\uF348\uF349\uF34A\uF34B\uF34C\uF34D"+
+        "\uF34E\uF34F\uF350\uF351\uC2ED\uD4A6\uCDD4\uD1B1"+
+        "\uB3DB\uC7FD\uF352\uB2B5\uC2BF\uE6E0\uCABB\uE6E1"+
+        "\uE6E2\uBED4\uE6E3\uD7A4\uCDD5\uE6E5\uBCDD\uE6E4"+
+        "\uE6E6\uE6E7\uC2EE\uF353\uBDBE\uE6E8\uC2E6\uBAA7"+
+        "\uE6E9\uF354\uE6EA\uB3D2\uD1E9\uF355\uF356\uBFA5"+
+        "\uE6EB\uC6EF\uE6EC\uE6ED\uF357\uF358\uE6EE\uC6AD"+
+        "\uE6EF\uF359\uC9A7\uE6F0\uE6F1\uE6F2\uE5B9\uE6F3"+
+        "\uE6F4\uC2E2\uE6F5\uE6F6\uD6E8\uE6F7\uF35A\uE6F8"+
+        "\uB9C7\uF35B\uF35C\uF35D\uF35E\uF35F\uF360\uF361"+
+        "\uF7BB\uF7BA\uF362\uF363\uF364\uF365\uF7BE\uF7BC"+
+        "\uBAA1\uF366\uF7BF\uF367\uF7C0\uF368\uF369\uF36A"+
+        "\uF7C2\uF7C1\uF7C4\uF36B\uF36C\uF7C3\uF36D\uF36E"+
+        "\uF36F\uF370\uF371\uF7C5\uF7C6\uF372\uF373\uF374"+
+        "\uF375\uF7C7\uF376\uCBE8\uF377\uF378\uF379\uF37A"+
+        "\uB8DF\uF37B\uF37C\uF37D\uF37E\uF380\uF381\uF7D4"+
+        "\uF382\uF7D5\uF383\uF384\uF385\uF386\uF7D6\uF387"+
+        "\uF388\uF389\uF38A\uF7D8\uF38B\uF7DA\uF38C\uF7D7"+
+        "\uF38D\uF38E\uF38F\uF390\uF391\uF392\uF393\uF394"+
+        "\uF395\uF7DB\uF396\uF7D9\uF397\uF398\uF399\uF39A"+
+        "\uF39B\uF39C\uF39D\uD7D7\uF39E\uF39F\uF3A0\uF440"+
+        "\uF7DC\uF441\uF442\uF443\uF444\uF445\uF446\uF7DD"+
+        "\uF447\uF448\uF449\uF7DE\uF44A\uF44B\uF44C\uF44D"+
+        "\uF44E\uF44F\uF450\uF451\uF452\uF453\uF454\uF7DF"+
+        "\uF455\uF456\uF457\uF7E0\uF458\uF459\uF45A\uF45B"+
+        "\uF45C\uF45D\uF45E\uF45F\uF460\uF461\uF462\uDBCB"+
+        "\uF463\uF464\uD8AA\uF465\uF466\uF467\uF468\uF469"+
+        "\uF46A\uF46B\uF46C\uE5F7\uB9ED\uF46D\uF46E\uF46F"+
+        "\uF470\uBFFD\uBBEA\uF7C9\uC6C7\uF7C8\uF471\uF7CA"+
+        "\uF7CC\uF7CB\uF472\uF473\uF474\uF7CD\uF475\uCEBA"+
+        "\uF476\uF7CE\uF477\uF478\uC4A7\uF479\uF47A\uF47B"+
+        "\uF47C\uF47D\uF47E\uF480\uF481\uF482\uF483\uF484"+
+        "\uF485\uF486\uF487\uF488\uF489\uF48A\uF48B\uF48C"+
+        "\uF48D\uF48E\uF48F\uF490\uF491\uF492\uF493\uF494"+
+        "\uF495\uF496\uF497\uF498\uF499\uF49A\uF49B\uF49C"+
+        "\uF49D\uF49E\uF49F\uF4A0\uF540\uF541\uF542\uF543"+
+        "\uF544\uF545\uF546\uF547\uF548\uF549\uF54A\uF54B"+
+        "\uF54C\uF54D\uF54E\uF54F\uF550\uF551\uF552\uF553"+
+        "\uF554\uF555\uF556\uF557\uF558\uF559\uF55A\uF55B"+
+        "\uF55C\uF55D\uF55E\uF55F\uF560\uF561\uF562\uF563"+
+        "\uF564\uF565\uF566\uF567\uF568\uF569\uF56A\uF56B"+
+        "\uF56C\uF56D\uF56E\uF56F\uF570\uF571\uF572\uF573"+
+        "\uF574\uF575\uF576\uF577\uF578\uF579\uF57A\uF57B"+
+        "\uF57C\uF57D\uF57E\uF580\uF581\uF582\uF583\uF584"+
+        "\uF585\uF586\uF587\uF588\uF589\uF58A\uF58B\uF58C"+
+        "\uF58D\uF58E\uF58F\uF590\uF591\uF592\uF593\uF594"+
+        "\uF595\uF596\uF597\uF598\uF599\uF59A\uF59B\uF59C"+
+        "\uF59D\uF59E\uF59F\uF5A0\uF640\uF641\uF642\uF643"+
+        "\uF644\uF645\uF646\uF647\uF648\uF649\uF64A\uF64B"+
+        "\uF64C\uF64D\uF64E\uF64F\uF650\uF651\uF652\uF653"+
+        "\uF654\uF655\uF656\uF657\uF658\uF659\uF65A\uF65B"+
+        "\uF65C\uF65D\uF65E\uF65F\uF660\uF661\uF662\uF663"+
+        "\uF664\uF665\uF666\uF667\uF668\uF669\uF66A\uF66B"+
+        "\uF66C\uF66D\uF66E\uF66F\uF670\uF671\uF672\uF673"+
+        "\uF674\uF675\uF676\uF677\uF678\uF679\uF67A\uF67B"+
+        "\uF67C\uF67D\uF67E\uF680\uF681\uF682\uF683\uF684"+
+        "\uF685\uF686\uF687\uF688\uF689\uF68A\uF68B\uF68C"+
+        "\uF68D\uF68E\uF68F\uF690\uF691\uF692\uF693\uF694"+
+        "\uF695\uF696\uF697\uF698\uF699\uF69A\uF69B\uF69C"+
+        "\uF69D\uF69E\uF69F\uF6A0\uF740\uF741\uF742\uF743"+
+        "\uF744\uF745\uF746\uF747\uF748\uF749\uF74A\uF74B"+
+        "\uF74C\uF74D\uF74E\uF74F\uF750\uF751\uF752\uF753"+
+        "\uF754\uF755\uF756\uF757\uF758\uF759\uF75A\uF75B"+
+        "\uF75C\uF75D\uF75E\uF75F\uF760\uF761\uF762\uF763"+
+        "\uF764\uF765\uF766\uF767\uF768\uF769\uF76A\uF76B"+
+        "\uF76C\uF76D\uF76E\uF76F\uF770\uF771\uF772\uF773"+
+        "\uF774\uF775\uF776\uF777\uF778\uF779\uF77A\uF77B"+
+        "\uF77C\uF77D\uF77E\uF780\uD3E3\uF781\uF782\uF6CF"+
+        "\uF783\uC2B3\uF6D0\uF784\uF785\uF6D1\uF6D2\uF6D3"+
+        "\uF6D4\uF786\uF787\uF6D6\uF788\uB1AB\uF6D7\uF789"+
+        "\uF6D8\uF6D9\uF6DA\uF78A\uF6DB\uF6DC\uF78B\uF78C"+
+        "\uF78D\uF78E\uF6DD\uF6DE\uCFCA\uF78F\uF6DF\uF6E0"+
+        "\uF6E1\uF6E2\uF6E3\uF6E4\uC0F0\uF6E5\uF6E6\uF6E7"+
+        "\uF6E8\uF6E9\uF790\uF6EA\uF791\uF6EB\uF6EC\uF792"+
+        "\uF6ED\uF6EE\uF6EF\uF6F0\uF6F1\uF6F2\uF6F3\uF6F4"+
+        "\uBEA8\uF793\uF6F5\uF6F6\uF6F7\uF6F8\uF794\uF795"+
+        "\uF796\uF797\uF798\uC8FA\uF6F9\uF6FA\uF6FB\uF6FC"+
+        "\uF799\uF79A\uF6FD\uF6FE\uF7A1\uF7A2\uF7A3\uF7A4"+
+        "\uF7A5\uF79B\uF79C\uF7A6\uF7A7\uF7A8\uB1EE\uF7A9"+
+        "\uF7AA\uF7AB\uF79D\uF79E\uF7AC\uF7AD\uC1DB\uF7AE"+
+        "\uF79F\uF7A0\uF7AF\uF840\uF841\uF842\uF843\uF844"+
+        "\uF845\uF846\uF847\uF848\uF849\uF84A\uF84B\uF84C"+
+        "\uF84D\uF84E\uF84F\uF850\uF851\uF852\uF853\uF854"+
+        "\uF855\uF856\uF857\uF858\uF859\uF85A\uF85B\uF85C"+
+        "\uF85D\uF85E\uF85F\uF860\uF861\uF862\uF863\uF864"+
+        "\uF865\uF866\uF867\uF868\uF869\uF86A\uF86B\uF86C"+
+        "\uF86D\uF86E\uF86F\uF870\uF871\uF872\uF873\uF874"+
+        "\uF875\uF876\uF877\uF878\uF879\uF87A\uF87B\uF87C"+
+        "\uF87D\uF87E\uF880\uF881\uF882\uF883\uF884\uF885"+
+        "\uF886\uF887\uF888\uF889\uF88A\uF88B\uF88C\uF88D"+
+        "\uF88E\uF88F\uF890\uF891\uF892\uF893\uF894\uF895"+
+        "\uF896\uF897\uF898\uF899\uF89A\uF89B\uF89C\uF89D"+
+        "\uF89E\uF89F\uF8A0\uF940\uF941\uF942\uF943\uF944"+
+        "\uF945\uF946\uF947\uF948\uF949\uF94A\uF94B\uF94C"+
+        "\uF94D\uF94E\uF94F\uF950\uF951\uF952\uF953\uF954"+
+        "\uF955\uF956\uF957\uF958\uF959\uF95A\uF95B\uF95C"+
+        "\uF95D\uF95E\uF95F\uF960\uF961\uF962\uF963\uF964"+
+        "\uF965\uF966\uF967\uF968\uF969\uF96A\uF96B\uF96C"+
+        "\uF96D\uF96E\uF96F\uF970\uF971\uF972\uF973\uF974"+
+        "\uF975\uF976\uF977\uF978\uF979\uF97A\uF97B\uF97C"+
+        "\uF97D\uF97E\uF980\uF981\uF982\uF983\uF984\uF985"+
+        "\uF986\uF987\uF988\uF989\uF98A\uF98B\uF98C\uF98D"+
+        "\uF98E\uF98F\uF990\uF991\uF992\uF993\uF994\uF995"+
+        "\uF996\uF997\uF998\uF999\uF99A\uF99B\uF99C\uF99D"+
+        "\uF99E\uF99F\uF9A0\uFA40\uFA41\uFA42\uFA43\uFA44"+
+        "\uFA45\uFA46\uFA47\uFA48\uFA49\uFA4A\uFA4B\uFA4C"+
+        "\uFA4D\uFA4E\uFA4F\uFA50\uFA51\uFA52\uFA53\uFA54"+
+        "\uFA55\uFA56\uFA57\uFA58\uFA59\uFA5A\uFA5B\uFA5C"+
+        "\uFA5D\uFA5E\uFA5F\uFA60\uFA61\uFA62\uFA63\uFA64"+
+        "\uFA65\uFA66\uFA67\uFA68\uFA69\uFA6A\uFA6B\uFA6C"+
+        "\uFA6D\uFA6E\uFA6F\uFA70\uFA71\uFA72\uFA73\uFA74"+
+        "\uFA75\uFA76\uFA77\uFA78\uFA79\uFA7A\uFA7B\uFA7C"+
+        "\uFA7D\uFA7E\uFA80\uFA81\uFA82\uFA83\uFA84\uFA85"+
+        "\uFA86\uFA87\uFA88\uFA89\uFA8A\uFA8B\uFA8C\uFA8D"+
+        "\uFA8E\uFA8F\uFA90\uFA91\uFA92\uFA93\uFA94\uFA95"+
+        "\uFA96\uFA97\uFA98\uFA99\uFA9A\uFA9B\uFA9C\uFA9D"+
+        "\uFA9E\uFA9F\uFAA0\uFB40\uFB41\uFB42\uFB43\uFB44"+
+        "\uFB45\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C"+
+        "\uFB4D\uFB4E\uFB4F\uFB50\uFB51\uFB52\uFB53\uFB54"+
+        "\uFB55\uFB56\uFB57\uFB58\uFB59\uFB5A\uFB5B\uC4F1"+
+        "\uF0AF\uBCA6\uF0B0\uC3F9\uFB5C\uC5B8\uD1BB\uFB5D"+
+        "\uF0B1\uF0B2\uF0B3\uF0B4\uF0B5\uD1BC\uFB5E\uD1EC"+
+        "\uFB5F\uF0B7\uF0B6\uD4A7\uFB60\uCDD2\uF0B8\uF0BA"+
+        "\uF0B9\uF0BB\uF0BC\uFB61\uFB62\uB8EB\uF0BD\uBAE8"+
+        "\uFB63\uF0BE\uF0BF\uBEE9\uF0C0\uB6EC\uF0C1\uF0C2"+
+        "\uF0C3\uF0C4\uC8B5\uF0C5\uF0C6\uFB64\uF0C7\uC5F4"+
+        "\uFB65\uF0C8\uFB66\uFB67\uFB68\uF0C9\uFB69\uF0CA"+
+        "\uF7BD\uFB6A\uF0CB\uF0CC\uF0CD\uFB6B\uF0CE\uFB6C"+
+        "\uFB6D\uFB6E\uFB6F\uF0CF\uBAD7\uFB70\uF0D0\uF0D1"+
+        "\uF0D2\uF0D3\uF0D4\uF0D5\uF0D6\uF0D8\uFB71\uFB72"+
+        "\uD3A5\uF0D7\uFB73\uF0D9\uFB74\uFB75\uFB76\uFB77"+
+        "\uFB78\uFB79\uFB7A\uFB7B\uFB7C\uFB7D\uF5BA\uC2B9"+
+        "\uFB7E\uFB80\uF7E4\uFB81\uFB82\uFB83\uFB84\uF7E5"+
+        "\uF7E6\uFB85\uFB86\uF7E7\uFB87\uFB88\uFB89\uFB8A"+
+        "\uFB8B\uFB8C\uF7E8\uC2B4\uFB8D\uFB8E\uFB8F\uFB90"+
+        "\uFB91\uFB92\uFB93\uFB94\uFB95\uF7EA\uFB96\uF7EB"+
+        "\uFB97\uFB98\uFB99\uFB9A\uFB9B\uFB9C\uC2F3\uFB9D"+
+        "\uFB9E\uFB9F\uFBA0\uFC40\uFC41\uFC42\uFC43\uFC44"+
+        "\uFC45\uFC46\uFC47\uFC48\uF4F0\uFC49\uFC4A\uFC4B"+
+        "\uF4EF\uFC4C\uFC4D\uC2E9\uFC4E\uF7E1\uF7E2\uFC4F"+
+        "\uFC50\uFC51\uFC52\uFC53\uBBC6\uFC54\uFC55\uFC56"+
+        "\uFC57\uD9E4\uFC58\uFC59\uFC5A\uCAF2\uC0E8\uF0A4"+
+        "\uFC5B\uBADA\uFC5C\uFC5D\uC7AD\uFC5E\uFC5F\uFC60"+
+        "\uC4AC\uFC61\uFC62\uF7EC\uF7ED\uF7EE\uFC63\uF7F0"+
+        "\uF7EF\uFC64\uF7F1\uFC65\uFC66\uF7F4\uFC67\uF7F3"+
+        "\uFC68\uF7F2\uF7F5\uFC69\uFC6A\uFC6B\uFC6C\uF7F6"+
+        "\uFC6D\uFC6E\uFC6F\uFC70\uFC71\uFC72\uFC73\uFC74"+
+        "\uFC75\uEDE9\uFC76\uEDEA\uEDEB\uFC77\uF6BC\uFC78"+
+        "\uFC79\uFC7A\uFC7B\uFC7C\uFC7D\uFC7E\uFC80\uFC81"+
+        "\uFC82\uFC83\uFC84\uF6BD\uFC85\uF6BE\uB6A6\uFC86"+
+        "\uD8BE\uFC87\uFC88\uB9C4\uFC89\uFC8A\uFC8B\uD8BB"+
+        "\uFC8C\uDCB1\uFC8D\uFC8E\uFC8F\uFC90\uFC91\uFC92"+
+        "\uCAF3\uFC93\uF7F7\uFC94\uFC95\uFC96\uFC97\uFC98"+
+        "\uFC99\uFC9A\uFC9B\uFC9C\uF7F8\uFC9D\uFC9E\uF7F9"+
+        "\uFC9F\uFCA0\uFD40\uFD41\uFD42\uFD43\uFD44\uF7FB"+
+        "\uFD45\uF7FA\uFD46\uB1C7\uFD47\uF7FC\uF7FD\uFD48"+
+        "\uFD49\uFD4A\uFD4B\uFD4C\uF7FE\uFD4D\uFD4E\uFD4F"+
+        "\uFD50\uFD51\uFD52\uFD53\uFD54\uFD55\uFD56\uFD57"+
+        "\uC6EB\uECB4\uFD58\uFD59\uFD5A\uFD5B\uFD5C\uFD5D"+
+        "\uFD5E\uFD5F\uFD60\uFD61\uFD62\uFD63\uFD64\uFD65"+
+        "\uFD66\uFD67\uFD68\uFD69\uFD6A\uFD6B\uFD6C\uFD6D"+
+        "\uFD6E\uFD6F\uFD70\uFD71\uFD72\uFD73\uFD74\uFD75"+
+        "\uFD76\uFD77\uFD78\uFD79\uFD7A\uFD7B\uFD7C\uFD7D"+
+        "\uFD7E\uFD80\uFD81\uFD82\uFD83\uFD84\uFD85\uB3DD"+
+        "\uF6B3\uFD86\uFD87\uF6B4\uC1E4\uF6B5\uF6B6\uF6B7"+
+        "\uF6B8\uF6B9\uF6BA\uC8A3\uF6BB\uFD88\uFD89\uFD8A"+
+        "\uFD8B\uFD8C\uFD8D\uFD8E\uFD8F\uFD90\uFD91\uFD92"+
+        "\uFD93\uC1FA\uB9A8\uEDE8\uFD94\uFD95\uFD96\uB9EA"+
+        "\uD9DF\uFD97\uFD98\uFD99\uFD9A\uFD9B\u6A63\u6A64"+
+        "\u6A65\u6A66\u6A67\u6A68\u6A69\u6A6A\u6A6B\u6A6C"+
+        "\u6A6D\u6A6E\u6A6F\u6A70\u6A71\u6A72\u6A73\u6A74"+
+        "\u6A75\u6A76\u6A77\u6A78\u6A79\u6A7A\u6A7B\u6A7C"+
+        "\u6A7D\u6A7E\u6A7F\u6A80\u6A81\u6A82\u6A83\u6A84"+
+        "\u6A85\u6A86\u6A87\u6A88\u6A89\u6A8A\u6A8B\u6A8C"+
+        "\u6A8D\u6A8E\u6A8F\u6A90\u6A91\u6A92\u6A93\u6A94"+
+        "\u6A95\u6A96\u6A97\u6A98\u6A99\u6A9A\u6A9B\u6A9C"+
+        "\u6A9D\u6A9E\u6A9F\u6AA0\u6AA1\u6AA2\u6AA3\u6AA4"+
+        "\u6AA5\u6AA6\u6AA7\u6AA8\u6AA9\u6AAA\u6AAB\u6AAC"+
+        "\u6AAD\u6AAE\u6AAF\u6AB0\u6AB1\u6AB2\u6AB3\u6AB4"+
+        "\u6AB5\u6AB6\u6AB7\u6AB8\u6AB9\u6ABA\u6ABB\u6ABC";
+
+    private final static String innerEncoderIndex10=
+        "\u6ABD\u6ABE\u6ABF\u6AC0\u6AC1\u6AC2\u6AC3\u6AC4"+
+        "\u6AC5\u6AC6\u6AC7\u6AC8\u6AC9\u6ACA\u6ACB\u6ACC"+
+        "\u6ACD\u6ACE\u6ACF\u6AD0\u6AD1\u6AD2\u6AD3\u6AD4"+
+        "\u6AD5\u6AD6\u6AD7\u6AD8\u6AD9\u6ADA\u6ADB\u6ADC"+
+        "\u6ADD\u6ADE\u6ADF\u6AE0\u6AE1\u6AE2\u6AE3\u6AE4"+
+        "\u6AE5\u6AE6\u6AE7\u6AE8\u6AE9\u6AEA\u6AEB\u6AEC"+
+        "\u6AED\u6AEE\u6AEF\u6AF0\u6AF1\u6AF2\u6AF3\u6AF4"+
+        "\u6AF5\u6AF6\u6AF7\u6AF8\u6AF9\u6AFA\u6AFB\u6AFC"+
+        "\u6AFD\u6AFE\u6AFF\u6B00\u6B01\u6B02\u6B03\u6B04"+
+        "\u6B05\u6B06\u6B07\u6B08\u6B09\u6B0A\u6B0B\u6B0C"+
+        "\u6B0D\u6B0E\u6B0F\u6B10\u6B11\u6B12\u6B13\u6B14"+
+        "\u6B15\u6B16\u6B17\u6B18\u6B19\u6B1A\u6B1B\u6B1C"+
+        "\u6B1D\u6B1E\u6B1F\u6B20\u6B21\u6B22\u6B23\u6B24"+
+        "\u6B25\u6B26\u6B27\u6B28\u6B29\u6B2A\u6B2B\u6B2C"+
+        "\u6B2D\u6B2E\u6B2F\u6B30\u6B31\u6B32\u6B33\u6B34"+
+        "\u6B35\u6B36\u6B37\u6B38\u6B39\u6B3A\u6B3B\u6B3C"+
+        "\u6B3D\u6B3E\u6B3F\u6B40\u6B41\u6B42\u6B43\u6B44"+
+        "\u6B45\u6B46\u6B47\u6B48\u6B49\u6B4A\u6B4B\u6B4C"+
+        "\u6B4D\u6B4E\u6B4F\u6B50\u6B51\u6B52\u6B53\u6B54"+
+        "\u6B55\u6B56\u6B57\u6B58\u6B59\u6B5A\u6B5B\u6B5C"+
+        "\u6B5D\u6B5E\u6B5F\u6B60\u6B61\u6B62\u6B63\u6B64"+
+        "\u6B65\u6B66\u6B67\u6B68\u6B69\u6B6A\u6B6B\u6B6C"+
+        "\u6B6D\u6B6E\u6B6F\u6B70\u6B71\u6B72\u6B73\u6B74"+
+        "\u6B75\u6B76\u6B77\u6B78\u6B79\u6B7A\u6B7B\u6B7C"+
+        "\u6B7D\u6B7E\u6B7F\u6B80\u6B81\u6B82\u6B83\u6B84"+
+        "\u6B85\u6B86\u6B87\u6B88\u6B89\u6B8A\u6B8B\u6B8C"+
+        "\u6B8D\u6B8E\u6B8F\u6B90\u6B91\u6B92\u6B93\u6B94"+
+        "\u6B95\u6B96\u6B97\u6B98\u6B99\u6B9A\u6B9B\u6B9C"+
+        "\u6B9D\u6B9E\u6B9F\u6BA0\u6BA1\u6BA2\u6BA3\u6BA4"+
+        "\u6BA5\u6BA6\u6BA7\u6BA8\u6BA9\u6BAA\u6BAB\u6BAC"+
+        "\u6BAD\u6BAE\u6BAF\u6BB0\u6BB1\u6BB2\u6BB3\u6BB4"+
+        "\u6BB5\u6BB6\u6BB7\u6BB8\u6BB9\u6BBA\u6BBB\u6BBC"+
+        "\u6BBD\u6BBE\u6BBF\u6BC0\u6BC1\u6BC2\u6BC3\u6BC4"+
+        "\u6BC5\u6BC6\u6BC7\u6BC8\u6BC9\u6BCA\u6BCB\u6BCC"+
+        "\u6BCD\u6BCE\u6BCF\u6BD0\u6BD1\u6BD2\u6BD3\u6BD4"+
+        "\u6BD5\u6BD6\u6BD7\u6BD8\u6BD9\u6BDA\u6BDB\u6BDC"+
+        "\u6BDD\u6BDE\u6BDF\u6BE0\u6BE1\u6BE2\u6BE3\u6BE4"+
+        "\u6BE5\u6BE6\u6BE7\u6BE8\u6BE9\u6BEA\u6BEB\u6BEC"+
+        "\u6BED\u6BEE\u6BEF\u6BF0\u6BF1\u6BF2\u6BF3\u6BF4"+
+        "\u6BF5\u6BF6\u6BF7\u6BF8\u6BF9\u6BFA\u6BFB\u6BFC"+
+        "\u6BFD\u6BFE\u6BFF\u6C00\u6C01\u6C02\u6C03\u6C04"+
+        "\u6C05\u6C06\u6C07\u6C08\u6C09\u6C0A\u6C0B\u6C0C"+
+        "\u6C0D\u6C0E\u6C0F\u6C10\u6C11\u6C12\u6C13\u6C14"+
+        "\u6C15\u6C16\u6C17\u6C18\u6C19\u6C1A\u6C1B\u6C1C"+
+        "\u6C1D\u6C1E\u6C1F\u6C20\u6C21\u6C22\u6C23\u6C24"+
+        "\u6C25\u6C26\u6C27\u6C28\u6C29\u6C2A\u6C2B\u6C2C"+
+        "\u6C2D\u6C2E\u6C2F\u6C30\u6C31\u6C32\u6C33\u6C34"+
+        "\u6C35\u6C36\u6C37\u6C38\u6C39\u6C3A\u6C3B\u6C3C"+
+        "\u6C3D\u6C3E\u6C3F\u6C40\u6C41\u6C42\u6C43\u6C44"+
+        "\u6C45\u6C46\u6C47\u6C48\u6C49\u6C4A\u6C4B\u6C4C"+
+        "\u6C4D\u6C4E\u6C4F\u6C50\u6C51\u6C52\u6C53\u6C54"+
+        "\u6C55\u6C56\u6C57\u6C58\u6C59\u6C5A\u6C5B\u6C5C"+
+        "\u6C5D\u6C5E\u6C5F\u6C60\u6C61\u6C62\u6C63\u6C64"+
+        "\u6C65\u6C66\u6C67\u6C68\u6C69\u6C6A\u6C6B\u6C6C"+
+        "\u6C6D\u6C6E\u6C6F\u6C70\u6C71\u6C72\u6C73\u6C74"+
+        "\u6C75\u6C76\u6C77\u6C78\u6C79\u6C7A\u6C7B\u6C7C"+
+        "\u6C7D\u6C7E\u6C7F\u6C80\u6C81\u6C82\u6C83\u6C84"+
+        "\u6C85\u6C86\u6C87\u6C88\u6C89\u6C8A\u6C8B\u6C8C"+
+        "\u6C8D\u6C8E\u6C8F\u6C90\u6C91\u6C92\u6C93\u6C94"+
+        "\u6C95\u6C96\u6C97\u6C98\u6C99\u6C9A\u6C9B\u6C9C"+
+        "\u6C9D\u6C9E\u6C9F\u6CA0\u6CA1\u6CA2\u6CA3\u6CA4"+
+        "\u6CA5\u6CA6\u6CA7\u6CA8\u6CA9\u6CAA\u6CAB\u6CAC"+
+        "\u6CAD\u6CAE\u6CAF\u6CB0\u6CB1\u6CB2\u6CB3\u6CB4"+
+        "\u6CB5\u6CB6\u6CB7\u6CB8\u6CB9\u6CBA\u6CBB\u6CBC"+
+        "\u6CBD\u6CBE\u6CBF\u6CC0\u6CC1\u6CC2\u6CC3\u6CC4"+
+        "\u6CC5\u6CC6\u6CC7\u6CC8\u6CC9\u6CCA\u6CCB\u6CCC"+
+        "\u6CCD\u6CCE\u6CCF\u6CD0\u6CD1\u6CD2\u6CD3\u6CD4"+
+        "\u6CD5\u6CD6\u6CD7\u6CD8\u6CD9\u6CDA\u6CDB\u6CDC"+
+        "\u6CDD\u6CDE\u6CDF\u6CE0\u6CE1\u6CE2\u6CE3\u6CE4"+
+        "\u6CE5\u6CE6\u6CE7\u6CE8\u6CE9\u6CEA\u6CEB\u6CEC"+
+        "\u6CED\u6CEE\u6CEF\u6CF0\u6CF1\u6CF2\u6CF3\u6CF4"+
+        "\u6CF5\u6CF6\u6CF7\u6CF8\u6CF9\u6CFA\u6CFB\u6CFC"+
+        "\u6CFD\u6CFE\u6CFF\u6D00\u6D01\u6D02\u6D03\u6D04"+
+        "\u6D05\u6D06\u6D07\u6D08\u6D09\u6D0A\u6D0B\u6D0C"+
+        "\u6D0D\u6D0E\u6D0F\u6D10\u6D11\u6D12\u6D13\u6D14"+
+        "\u6D15\u6D16\u6D17\u6D18\u6D19\u6D1A\u6D1B\u6D1C"+
+        "\u6D1D\u6D1E\u6D1F\u6D20\u6D21\u6D22\u6D23\u6D24"+
+        "\u6D25\u6D26\u6D27\u6D28\u6D29\u6D2A\u6D2B\u6D2C"+
+        "\u6D2D\u6D2E\u6D2F\u6D30\u6D31\u6D32\u6D33\u6D34"+
+        "\u6D35\u6D36\u6D37\u6D38\u6D39\u6D3A\u6D3B\u6D3C"+
+        "\u6D3D\u6D3E\u6D3F\u6D40\u6D41\u6D42\u6D43\u6D44"+
+        "\u6D45\u6D46\u6D47\u6D48\u6D49\u6D4A\u6D4B\u6D4C"+
+        "\u6D4D\u6D4E\u6D4F\u6D50\u6D51\u6D52\u6D53\u6D54"+
+        "\u6D55\u6D56\u6D57\u6D58\u6D59\u6D5A\u6D5B\u6D5C"+
+        "\u6D5D\u6D5E\u6D5F\u6D60\u6D61\u6D62\u6D63\u6D64"+
+        "\u6D65\u6D66\u6D67\u6D68\u6D69\u6D6A\u6D6B\u6D6C"+
+        "\u6D6D\u6D6E\u6D6F\u6D70\u6D71\u6D72\u6D73\u6D74"+
+        "\u6D75\u6D76\u6D77\u6D78\u6D79\u6D7A\u6D7B\u6D7C"+
+        "\u6D7D\u6D7E\u6D7F\u6D80\u6D81\u6D82\u6D83\u6D84"+
+        "\u6D85\u6D86\u6D87\u6D88\u6D89\u6D8A\u6D8B\u6D8C"+
+        "\u6D8D\u6D8E\u6D8F\u6D90\u6D91\u6D92\u6D93\u6D94"+
+        "\u6D95\u6D96\u6D97\u6D98\u6D99\u6D9A\u6D9B\u6D9C"+
+        "\u6D9D\u6D9E\u6D9F\u6DA0\u6DA1\u6DA2\u6DA3\u6DA4"+
+        "\u6DA5\u6DA6\u6DA7\u6DA8\u6DA9\u6DAA\u6DAB\u6DAC"+
+        "\u6DAD\u6DAE\u6DAF\u6DB0\u6DB1\u6DB2\u6DB3\u6DB4"+
+        "\u6DB5\u6DB6\u6DB7\u6DB8\u6DB9\u6DBA\u6DBB\u6DBC"+
+        "\u6DBD\u6DBE\u6DBF\u6DC0\u6DC1\u6DC2\u6DC3\u6DC4"+
+        "\u6DC5\u6DC6\u6DC7\u6DC8\u6DC9\u6DCA\u6DCB\u6DCC"+
+        "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD1\u6DD2\u6DD3\u6DD4"+
+        "\u6DD5\u6DD6\u6DD7\u6DD8\u6DD9\u6DDA\u6DDB\u6DDC"+
+        "\u6DDD\u6DDE\u6DDF\u6DE0\u6DE1\u6DE2\u6DE3\u6DE4"+
+        "\u6DE5\u6DE6\u6DE7\u6DE8\u6DE9\u6DEA\u6DEB\u6DEC"+
+        "\u6DED\u6DEE\u6DEF\u6DF0\u6DF1\u6DF2\u6DF3\u6DF4"+
+        "\u6DF5\u6DF6\u6DF7\u6DF8\u6DF9\u6DFA\u6DFB\u6DFC"+
+        "\u6DFD\u6DFE\u6DFF\u6E00\u6E01\u6E02\u6E03\u6E04"+
+        "\u6E05\u6E06\u6E07\u6E08\u6E09\u6E0A\u6E0B\u6E0C"+
+        "\u6E0D\u6E0E\u6E0F\u6E10\u6E11\u6E12\u6E13\u6E14"+
+        "\u6E15\u6E16\u6E17\u6E18\u6E19\u6E1A\u6E1B\u6E1C"+
+        "\u6E1D\u6E1E\u6E1F\u6E20\u6E21\u6E22\u6E23\u6E24"+
+        "\u6E25\u6E26\u6E27\u6E28\u6E29\u6E2A\u6E2B\u6E2C"+
+        "\u6E2D\u6E2E\u6E2F\u6E30\u6E31\u6E32\u6E33\u6E34"+
+        "\u6E35\u6E36\u6E37\u6E38\u6E39\u6E3A\u6E3B\u6E3C"+
+        "\u6E3D\u6E3E\u6E3F\u6E40\u6E41\u6E42\u6E43\u6E44"+
+        "\u6E45\u6E46\u6E47\u6E48\u6E49\u6E4A\u6E4B\u6E4C"+
+        "\u6E4D\u6E4E\u6E4F\u6E50\u6E51\u6E52\u6E53\u6E54"+
+        "\u6E55\u6E56\u6E57\u6E58\u6E59\u6E5A\u6E5B\u6E5C"+
+        "\u6E5D\u6E5E\u6E5F\u6E60\u6E61\u6E62\u6E63\u6E64"+
+        "\u6E65\u6E66\u6E67\u6E68\u6E69\u6E6A\u6E6B\u6E6C"+
+        "\u6E6D\u6E6E\u6E6F\u6E70\u6E71\u6E72\u6E73\u6E74"+
+        "\u6E75\u6E76\u6E77\u6E78\u6E79\u6E7A\u6E7B\u6E7C"+
+        "\u6E7D\u6E7E\u6E7F\u6E80\u6E81\u6E82\u6E83\u6E84"+
+        "\u6E85\u6E86\u6E87\u6E88\u6E89\u6E8A\u6E8B\u6E8C"+
+        "\u6E8D\u6E8E\u6E8F\u6E90\u6E91\u6E92\u6E93\u6E94"+
+        "\u6E95\u6E96\u6E97\u6E98\u6E99\u6E9A\u6E9B\u6E9C"+
+        "\u6E9D\u6E9E\u6E9F\u6EA0\u6EA1\u6EA2\u6EA3\u6EA4"+
+        "\u6EA5\u6EA6\u6EA7\u6EA8\u6EA9\u6EAA\u6EAB\u6EAC"+
+        "\u6EAD\u6EAE\u6EAF\u6EB0\u6EB1\u6EB2\u6EB3\u6EB4"+
+        "\u6EB5\u6EB6\u6EB7\u6EB8\u6EB9\u6EBA\u6EBB\u6EBC"+
+        "\u6EBD\u6EBE\u6EBF\u6EC0\u6EC1\u6EC2\u6EC3\u6EC4"+
+        "\u6EC5\u6EC6\u6EC7\u6EC8\u6EC9\u6ECA\u6ECB\u6ECC"+
+        "\u6ECD\u6ECE\u6ECF\u6ED0\u6ED1\u6ED2\u6ED3\u6ED4"+
+        "\u6ED5\u6ED6\u6ED7\u6ED8\u6ED9\u6EDA\u6EDB\u6EDC"+
+        "\u6EDD\u6EDE\u6EDF\u6EE0\u6EE1\u6EE2\u6EE3\u6EE4"+
+        "\u6EE5\u6EE6\u6EE7\u6EE8\u6EE9\u6EEA\u6EEB\u6EEC"+
+        "\u6EED\u6EEE\u6EEF\u6EF0\u6EF1\u6EF2\u6EF3\u6EF4"+
+        "\u6EF5\u6EF6\u6EF7\u6EF8\u6EF9\u6EFA\u6EFB\u6EFC"+
+        "\u6EFD\u6EFE\u6EFF\u6F00\u6F01\u6F02\u6F03\u6F04"+
+        "\u6F05\u6F06\u6F07\u6F08\u6F09\u6F0A\u6F0B\u6F0C"+
+        "\u6F0D\u6F0E\u6F0F\u6F10\u6F11\u6F12\u6F13\u6F14"+
+        "\u6F15\u6F16\u6F17\u6F18\u6F19\u6F1A\u6F1B\u6F1C"+
+        "\u6F1D\u6F1E\u6F1F\u6F20\u6F21\u6F22\u6F23\u6F24"+
+        "\u6F25\u6F26\u6F27\u6F28\u6F29\u6F2A\u6F2B\u6F2C"+
+        "\u6F2D\u6F2E\u6F2F\u6F30\u6F31\u6F32\u6F33\u6F34"+
+        "\u6F35\u6F36\u6F37\u6F38\u6F39\u6F3A\u6F3B\u6F3C"+
+        "\u6F3D\u6F3E\u6F3F\u6F40\u6F41\u6F42\u6F43\u6F44"+
+        "\u6F45\u6F46\u6F47\u6F48\u6F49\u6F4A\u6F4B\u6F4C"+
+        "\u6F4D\u6F4E\u6F4F\u6F50\u6F51\u6F52\u6F53\u6F54"+
+        "\u6F55\u6F56\u6F57\u6F58\u6F59\u6F5A\u6F5B\u6F5C"+
+        "\u6F5D\u6F5E\u6F5F\u6F60\u6F61\u6F62\u6F63\u6F64"+
+        "\u6F65\u6F66\u6F67\u6F68\u6F69\u6F6A\u6F6B\u6F6C"+
+        "\u6F6D\u6F6E\u6F6F\u6F70\u6F71\u6F72\u6F73\u6F74"+
+        "\u6F75\u6F76\u6F77\u6F78\u6F79\u6F7A\u6F7B\u6F7C"+
+        "\u6F7D\u6F7E\u6F7F\u6F80\u6F81\u6F82\u6F83\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
+        "\uAAA1\uAAA2\uAAA3\uAAA4\uAAA5\uAAA6\uAAA7\uAAA8"+
+        "\uAAA9\uAAAA\uAAAB\uAAAC\uAAAD\uAAAE\uAAAF\uAAB0"+
+        "\uAAB1\uAAB2\uAAB3\uAAB4\uAAB5\uAAB6\uAAB7\uAAB8"+
+        "\uAAB9\uAABA\uAABB\uAABC\uAABD\uAABE\uAABF\uAAC0"+
+        "\uAAC1\uAAC2\uAAC3\uAAC4\uAAC5\uAAC6\uAAC7\uAAC8"+
+        "\uAAC9\uAACA\uAACB\uAACC\uAACD\uAACE\uAACF\uAAD0"+
+        "\uAAD1\uAAD2\uAAD3\uAAD4\uAAD5\uAAD6\uAAD7\uAAD8"+
+        "\uAAD9\uAADA\uAADB\uAADC\uAADD\uAADE\uAADF\uAAE0"+
+        "\uAAE1\uAAE2\uAAE3\uAAE4\uAAE5\uAAE6\uAAE7\uAAE8"+
+        "\uAAE9\uAAEA\uAAEB\uAAEC\uAAED\uAAEE\uAAEF\uAAF0"+
+        "\uAAF1\uAAF2\uAAF3\uAAF4\uAAF5\uAAF6\uAAF7\uAAF8"+
+        "\uAAF9\uAAFA\uAAFB\uAAFC\uAAFD\uAAFE\uABA1\uABA2"+
+        "\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA"+
+        "\uABAB\uABAC\uABAD\uABAE\uABAF\uABB0\uABB1\uABB2"+
+        "\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA"+
+        "\uABBB\uABBC\uABBD\uABBE\uABBF\uABC0\uABC1\uABC2"+
+        "\uABC3\uABC4\uABC5\uABC6\uABC7\uABC8\uABC9\uABCA"+
+        "\uABCB\uABCC\uABCD\uABCE\uABCF\uABD0\uABD1\uABD2"+
+        "\uABD3\uABD4\uABD5\uABD6\uABD7\uABD8\uABD9\uABDA"+
+        "\uABDB\uABDC\uABDD\uABDE\uABDF\uABE0\uABE1\uABE2"+
+        "\uABE3\uABE4\uABE5\uABE6\uABE7\uABE8\uABE9\uABEA"+
+        "\uABEB\uABEC\uABED\uABEE\uABEF\uABF0\uABF1\uABF2"+
+        "\uABF3\uABF4\uABF5\uABF6\uABF7\uABF8\uABF9\uABFA"+
+        "\uABFB\uABFC\uABFD\uABFE\uACA1\uACA2\uACA3\uACA4"+
+        "\uACA5\uACA6\uACA7\uACA8\uACA9\uACAA\uACAB\uACAC"+
+        "\uACAD\uACAE\uACAF\uACB0\uACB1\uACB2\uACB3\uACB4"+
+        "\uACB5\uACB6\uACB7\uACB8\uACB9\uACBA\uACBB\uACBC"+
+        "\uACBD\uACBE\uACBF\uACC0\uACC1\uACC2\uACC3\uACC4"+
+        "\uACC5\uACC6\uACC7\uACC8\uACC9\uACCA\uACCB\uACCC"+
+        "\uACCD\uACCE\uACCF\uACD0\uACD1\uACD2\uACD3\uACD4"+
+        "\uACD5\uACD6\uACD7\uACD8\uACD9\uACDA\uACDB\uACDC"+
+        "\uACDD\uACDE\uACDF\uACE0\uACE1\uACE2\uACE3\uACE4"+
+        "\uACE5\uACE6\uACE7\uACE8\uACE9\uACEA\uACEB\uACEC"+
+        "\uACED\uACEE\uACEF\uACF0\uACF1\uACF2\uACF3\uACF4"+
+        "\uACF5\uACF6\uACF7\uACF8\uACF9\uACFA\uACFB\uACFC"+
+        "\uACFD\uACFE\uADA1\uADA2\uADA3\uADA4\uADA5\uADA6"+
+        "\uADA7\uADA8\uADA9\uADAA\uADAB\uADAC\uADAD\uADAE"+
+        "\uADAF\uADB0\uADB1\uADB2\uADB3\uADB4\uADB5\uADB6"+
+        "\uADB7\uADB8\uADB9\uADBA\uADBB\uADBC\uADBD\uADBE"+
+        "\uADBF\uADC0\uADC1\uADC2\uADC3\uADC4\uADC5\uADC6"+
+        "\uADC7\uADC8\uADC9\uADCA\uADCB\uADCC\uADCD\uADCE"+
+        "\uADCF\uADD0\uADD1\uADD2\uADD3\uADD4\uADD5\uADD6"+
+        "\uADD7\uADD8\uADD9\uADDA\uADDB\uADDC\uADDD\uADDE"+
+        "\uADDF\uADE0\uADE1\uADE2\uADE3\uADE4\uADE5\uADE6"+
+        "\uADE7\uADE8\uADE9\uADEA\uADEB\uADEC\uADED\uADEE"+
+        "\uADEF\uADF0\uADF1\uADF2\uADF3\uADF4\uADF5\uADF6"+
+        "\uADF7\uADF8\uADF9\uADFA\uADFB\uADFC\uADFD\uADFE"+
+        "\uAEA1\uAEA2\uAEA3\uAEA4\uAEA5\uAEA6\uAEA7\uAEA8"+
+        "\uAEA9\uAEAA\uAEAB\uAEAC\uAEAD\uAEAE\uAEAF\uAEB0"+
+        "\uAEB1\uAEB2\uAEB3\uAEB4\uAEB5\uAEB6\uAEB7\uAEB8"+
+        "\uAEB9\uAEBA\uAEBB\uAEBC\uAEBD\uAEBE\uAEBF\uAEC0"+
+        "\uAEC1\uAEC2\uAEC3\uAEC4\uAEC5\uAEC6\uAEC7\uAEC8"+
+        "\uAEC9\uAECA\uAECB\uAECC\uAECD\uAECE\uAECF\uAED0"+
+        "\uAED1\uAED2\uAED3\uAED4\uAED5\uAED6\uAED7\uAED8"+
+        "\uAED9\uAEDA\uAEDB\uAEDC\uAEDD\uAEDE\uAEDF\uAEE0"+
+        "\uAEE1\uAEE2\uAEE3\uAEE4\uAEE5\uAEE6\uAEE7\uAEE8"+
+        "\uAEE9\uAEEA\uAEEB\uAEEC\uAEED\uAEEE\uAEEF\uAEF0"+
+        "\uAEF1\uAEF2\uAEF3\uAEF4\uAEF5\uAEF6\uAEF7\uAEF8"+
+        "\uAEF9\uAEFA\uAEFB\uAEFC\uAEFD\uAEFE\uAFA1\uAFA2"+
+        "\uAFA3\uAFA4\uAFA5\uAFA6\uAFA7\uAFA8\uAFA9\uAFAA"+
+        "\uAFAB\uAFAC\uAFAD\uAFAE\uAFAF\uAFB0\uAFB1\uAFB2"+
+        "\uAFB3\uAFB4\uAFB5\uAFB6\uAFB7\uAFB8\uAFB9\uAFBA"+
+        "\uAFBB\uAFBC\uAFBD\uAFBE\uAFBF\uAFC0\uAFC1\uAFC2"+
+        "\uAFC3\uAFC4\uAFC5\uAFC6\uAFC7\uAFC8\uAFC9\uAFCA"+
+        "\uAFCB\uAFCC\uAFCD\uAFCE\uAFCF\uAFD0\uAFD1\uAFD2"+
+        "\uAFD3\uAFD4\uAFD5\uAFD6\uAFD7\uAFD8\uAFD9\uAFDA"+
+        "\uAFDB\uAFDC\uAFDD\uAFDE\uAFDF\uAFE0\uAFE1\uAFE2"+
+        "\uAFE3\uAFE4\uAFE5\uAFE6\uAFE7\uAFE8\uAFE9\uAFEA"+
+        "\uAFEB\uAFEC\uAFED\uAFEE\uAFEF\uAFF0\uAFF1\uAFF2"+
+        "\uAFF3\uAFF4\uAFF5\uAFF6\uAFF7\uAFF8\uAFF9\uAFFA"+
+        "\uAFFB\uAFFC\uAFFD\uAFFE\uF8A1\uF8A2\uF8A3\uF8A4"+
+        "\uF8A5\uF8A6\uF8A7\uF8A8\uF8A9\uF8AA\uF8AB\uF8AC"+
+        "\uF8AD\uF8AE\uF8AF\uF8B0\uF8B1\uF8B2\uF8B3\uF8B4"+
+        "\uF8B5\uF8B6\uF8B7\uF8B8\uF8B9\uF8BA\uF8BB\uF8BC"+
+        "\uF8BD\uF8BE\uF8BF\uF8C0\uF8C1\uF8C2\uF8C3\uF8C4"+
+        "\uF8C5\uF8C6\uF8C7\uF8C8\uF8C9\uF8CA\uF8CB\uF8CC"+
+        "\uF8CD\uF8CE\uF8CF\uF8D0\uF8D1\uF8D2\uF8D3\uF8D4"+
+        "\uF8D5\uF8D6\uF8D7\uF8D8\uF8D9\uF8DA\uF8DB\uF8DC"+
+        "\uF8DD\uF8DE\uF8DF\uF8E0\uF8E1\uF8E2\uF8E3\uF8E4"+
+        "\uF8E5\uF8E6\uF8E7\uF8E8\uF8E9\uF8EA\uF8EB\uF8EC"+
+        "\uF8ED\uF8EE\uF8EF\uF8F0\uF8F1\uF8F2\uF8F3\uF8F4"+
+        "\uF8F5\uF8F6\uF8F7\uF8F8\uF8F9\uF8FA\uF8FB\uF8FC"+
+        "\uF8FD\uF8FE\uF9A1\uF9A2\uF9A3\uF9A4\uF9A5\uF9A6"+
+        "\uF9A7\uF9A8\uF9A9\uF9AA\uF9AB\uF9AC\uF9AD\uF9AE"+
+        "\uF9AF\uF9B0\uF9B1\uF9B2\uF9B3\uF9B4\uF9B5\uF9B6"+
+        "\uF9B7\uF9B8\uF9B9\uF9BA\uF9BB\uF9BC\uF9BD\uF9BE"+
+        "\uF9BF\uF9C0\uF9C1\uF9C2\uF9C3\uF9C4\uF9C5\uF9C6"+
+        "\uF9C7\uF9C8\uF9C9\uF9CA\uF9CB\uF9CC\uF9CD\uF9CE"+
+        "\uF9CF\uF9D0\uF9D1\uF9D2\uF9D3\uF9D4\uF9D5\uF9D6"+
+        "\uF9D7\uF9D8\uF9D9\uF9DA\uF9DB\uF9DC\uF9DD\uF9DE"+
+        "\uF9DF\uF9E0\uF9E1\uF9E2\uF9E3\uF9E4\uF9E5\uF9E6"+
+        "\uF9E7\uF9E8\uF9E9\uF9EA\uF9EB\uF9EC\uF9ED\uF9EE"+
+        "\uF9EF\uF9F0\uF9F1\uF9F2\uF9F3\uF9F4\uF9F5\uF9F6"+
+        "\uF9F7\uF9F8\uF9F9\uF9FA\uF9FB\uF9FC\uF9FD\uF9FE"+
+        "\uFAA1\uFAA2\uFAA3\uFAA4\uFAA5\uFAA6\uFAA7\uFAA8"+
+        "\uFAA9\uFAAA\uFAAB\uFAAC\uFAAD\uFAAE\uFAAF\uFAB0"+
+        "\uFAB1\uFAB2\uFAB3\uFAB4\uFAB5\uFAB6\uFAB7\uFAB8"+
+        "\uFAB9\uFABA\uFABB\uFABC\uFABD\uFABE\uFABF\uFAC0"+
+        "\uFAC1\uFAC2\uFAC3\uFAC4\uFAC5\uFAC6\uFAC7\uFAC8"+
+        "\uFAC9\uFACA\uFACB\uFACC\uFACD\uFACE\uFACF\uFAD0"+
+        "\uFAD1\uFAD2\uFAD3\uFAD4\uFAD5\uFAD6\uFAD7\uFAD8"+
+        "\uFAD9\uFADA\uFADB\uFADC\uFADD\uFADE\uFADF\uFAE0"+
+        "\uFAE1\uFAE2\uFAE3\uFAE4\uFAE5\uFAE6\uFAE7\uFAE8"+
+        "\uFAE9\uFAEA\uFAEB\uFAEC\uFAED\uFAEE\uFAEF\uFAF0"+
+        "\uFAF1\uFAF2\uFAF3\uFAF4\uFAF5\uFAF6\uFAF7\uFAF8"+
+        "\uFAF9\uFAFA\uFAFB\uFAFC\uFAFD\uFAFE\uFBA1\uFBA2"+
+        "\uFBA3\uFBA4\uFBA5\uFBA6\uFBA7\uFBA8\uFBA9\uFBAA"+
+        "\uFBAB\uFBAC\uFBAD\uFBAE\uFBAF\uFBB0\uFBB1\uFBB2"+
+        "\uFBB3\uFBB4\uFBB5\uFBB6\uFBB7\uFBB8\uFBB9\uFBBA"+
+        "\uFBBB\uFBBC\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2"+
+        "\uFBC3\uFBC4\uFBC5\uFBC6\uFBC7\uFBC8\uFBC9\uFBCA"+
+        "\uFBCB\uFBCC\uFBCD\uFBCE\uFBCF\uFBD0\uFBD1\uFBD2"+
+        "\uFBD3\uFBD4\uFBD5\uFBD6\uFBD7\uFBD8\uFBD9\uFBDA"+
+        "\uFBDB\uFBDC\uFBDD\uFBDE\uFBDF\uFBE0\uFBE1\uFBE2"+
+        "\uFBE3\uFBE4\uFBE5\uFBE6\uFBE7\uFBE8\uFBE9\uFBEA"+
+        "\uFBEB\uFBEC\uFBED\uFBEE\uFBEF\uFBF0\uFBF1\uFBF2"+
+        "\uFBF3\uFBF4\uFBF5\uFBF6\uFBF7\uFBF8\uFBF9\uFBFA"+
+        "\uFBFB\uFBFC\uFBFD\uFBFE\uFCA1\uFCA2\uFCA3\uFCA4"+
+        "\uFCA5\uFCA6\uFCA7\uFCA8\uFCA9\uFCAA\uFCAB\uFCAC"+
+        "\uFCAD\uFCAE\uFCAF\uFCB0\uFCB1\uFCB2\uFCB3\uFCB4"+
+        "\uFCB5\uFCB6\uFCB7\uFCB8\uFCB9\uFCBA\uFCBB\uFCBC"+
+        "\uFCBD\uFCBE\uFCBF\uFCC0\uFCC1\uFCC2\uFCC3\uFCC4"+
+        "\uFCC5\uFCC6\uFCC7\uFCC8\uFCC9\uFCCA\uFCCB\uFCCC"+
+        "\uFCCD\uFCCE\uFCCF\uFCD0\uFCD1\uFCD2\uFCD3\uFCD4"+
+        "\uFCD5\uFCD6\uFCD7\uFCD8\uFCD9\uFCDA\uFCDB\uFCDC"+
+        "\uFCDD\uFCDE\uFCDF\uFCE0\uFCE1\uFCE2\uFCE3\uFCE4"+
+        "\uFCE5\uFCE6\uFCE7\uFCE8\uFCE9\uFCEA\uFCEB\uFCEC"+
+        "\uFCED\uFCEE\uFCEF\uFCF0\uFCF1\uFCF2\uFCF3\uFCF4"+
+        "\uFCF5\uFCF6\uFCF7\uFCF8\uFCF9\uFCFA\uFCFB\uFCFC"+
+        "\uFCFD\uFCFE\uFDA1\uFDA2\uFDA3\uFDA4\uFDA5\uFDA6"+
+        "\uFDA7\uFDA8\uFDA9\uFDAA\uFDAB\uFDAC\uFDAD\uFDAE"+
+        "\uFDAF\uFDB0\uFDB1\uFDB2\uFDB3\uFDB4\uFDB5\uFDB6"+
+        "\uFDB7\uFDB8\uFDB9\uFDBA\uFDBB\uFDBC\uFDBD\uFDBE"+
+        "\uFDBF\uFDC0\uFDC1\uFDC2\uFDC3\uFDC4\uFDC5\uFDC6"+
+        "\uFDC7\uFDC8\uFDC9\uFDCA\uFDCB\uFDCC\uFDCD\uFDCE"+
+        "\uFDCF\uFDD0\uFDD1\uFDD2\uFDD3\uFDD4\uFDD5\uFDD6"+
+        "\uFDD7\uFDD8\uFDD9\uFDDA\uFDDB\uFDDC\uFDDD\uFDDE"+
+        "\uFDDF\uFDE0\uFDE1\uFDE2\uFDE3\uFDE4\uFDE5\uFDE6"+
+        "\uFDE7\uFDE8\uFDE9\uFDEA\uFDEB\uFDEC\uFDED\uFDEE"+
+        "\uFDEF\uFDF0\uFDF1\uFDF2\uFDF3\uFDF4\uFDF5\uFDF6"+
+        "\uFDF7\uFDF8\uFDF9\uFDFA\uFDFB\uFDFC\uFDFD\uFDFE"+
+        "\uFEA1\uFEA2\uFEA3\uFEA4\uFEA5\uFEA6\uFEA7\uFEA8"+
+        "\uFEA9\uFEAA\uFEAB\uFEAC\uFEAD\uFEAE\uFEAF\uFEB0"+
+        "\uFEB1\uFEB2\uFEB3\uFEB4\uFEB5\uFEB6\uFEB7\uFEB8"+
+        "\uFEB9\uFEBA\uFEBB\uFEBC\uFEBD\uFEBE\uFEBF\uFEC0"+
+        "\uFEC1\uFEC2\uFEC3\uFEC4\uFEC5\uFEC6\uFEC7\uFEC8"+
+        "\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0"+
+        "\uFED1\uFED2\uFED3\uFED4\uFED5\uFED6\uFED7\uFED8"+
+        "\uFED9\uFEDA\uFEDB\uFEDC\uFEDD\uFEDE\uFEDF\uFEE0"+
+        "\uFEE1\uFEE2\uFEE3\uFEE4\uFEE5\uFEE6\uFEE7\uFEE8"+
+        "\uFEE9\uFEEA\uFEEB\uFEEC\uFEED\uFEEE\uFEEF\uFEF0"+
+        "\uFEF1\uFEF2\uFEF3\uFEF4\uFEF5\uFEF6\uFEF7\uFEF8"+
+        "\uFEF9\uFEFA\uFEFB\uFEFC\uFEFD\uFEFE\uA140\uA141"+
+        "\uA142\uA143\uA144\uA145\uA146\uA147\uA148\uA149"+
+        "\uA14A\uA14B\uA14C\uA14D\uA14E\uA14F\uA150\uA151"+
+        "\uA152\uA153\uA154\uA155\uA156\uA157\uA158\uA159"+
+        "\uA15A\uA15B\uA15C\uA15D\uA15E\uA15F\uA160\uA161"+
+        "\uA162\uA163\uA164\uA165\uA166\uA167\uA168\uA169"+
+        "\uA16A\uA16B\uA16C\uA16D\uA16E\uA16F\uA170\uA171"+
+        "\uA172\uA173\uA174\uA175\uA176\uA177\uA178\uA179"+
+        "\uA17A\uA17B\uA17C\uA17D\uA17E\uA180\uA181\uA182"+
+        "\uA183\uA184\uA185\uA186\uA187\uA188\uA189\uA18A"+
+        "\uA18B\uA18C\uA18D\uA18E\uA18F\uA190\uA191\uA192"+
+        "\uA193\uA194\uA195\uA196\uA197\uA198\uA199\uA19A"+
+        "\uA19B\uA19C\uA19D\uA19E\uA19F\uA1A0\uA240\uA241"+
+        "\uA242\uA243\uA244\uA245\uA246\uA247\uA248\uA249"+
+        "\uA24A\uA24B\uA24C\uA24D\uA24E\uA24F\uA250\uA251"+
+        "\uA252\uA253\uA254\uA255\uA256\uA257\uA258\uA259"+
+        "\uA25A\uA25B\uA25C\uA25D\uA25E\uA25F\uA260\uA261"+
+        "\uA262\uA263\uA264\uA265\uA266\uA267\uA268\uA269"+
+        "\uA26A\uA26B\uA26C\uA26D\uA26E\uA26F\uA270\uA271"+
+        "\uA272\uA273\uA274\uA275\uA276\uA277\uA278\uA279"+
+        "\uA27A\uA27B\uA27C\uA27D\uA27E\uA280\uA281\uA282"+
+        "\uA283\uA284\uA285\uA286\uA287\uA288\uA289\uA28A"+
+        "\uA28B\uA28C\uA28D\uA28E\uA28F\uA290\uA291\uA292"+
+        "\uA293\uA294\uA295\uA296\uA297\uA298\uA299\uA29A"+
+        "\uA29B\uA29C\uA29D\uA29E\uA29F\uA2A0\uA340\uA341"+
+        "\uA342\uA343\uA344\uA345\uA346\uA347\uA348\uA349"+
+        "\uA34A\uA34B\uA34C\uA34D\uA34E\uA34F\uA350\uA351"+
+        "\uA352\uA353\uA354\uA355\uA356\uA357\uA358\uA359"+
+        "\uA35A\uA35B\uA35C\uA35D\uA35E\uA35F\uA360\uA361"+
+        "\uA362\uA363\uA364\uA365\uA366\uA367\uA368\uA369"+
+        "\uA36A\uA36B\uA36C\uA36D\uA36E\uA36F\uA370\uA371"+
+        "\uA372\uA373\uA374\uA375\uA376\uA377\uA378\uA379"+
+        "\uA37A\uA37B\uA37C\uA37D\uA37E\uA380\uA381\uA382"+
+        "\uA383\uA384\uA385\uA386\uA387\uA388\uA389\uA38A"+
+        "\uA38B\uA38C\uA38D\uA38E\uA38F\uA390\uA391\uA392"+
+        "\uA393\uA394\uA395\uA396\uA397\uA398\uA399\uA39A"+
+        "\uA39B\uA39C\uA39D\uA39E\uA39F\uA3A0\uA440\uA441"+
+        "\uA442\uA443\uA444\uA445\uA446\uA447\uA448\uA449"+
+        "\uA44A\uA44B\uA44C\uA44D\uA44E\uA44F\uA450\uA451"+
+        "\uA452\uA453\uA454\uA455\uA456\uA457\uA458\uA459"+
+        "\uA45A\uA45B\uA45C\uA45D\uA45E\uA45F\uA460\uA461"+
+        "\uA462\uA463\uA464\uA465\uA466\uA467\uA468\uA469"+
+        "\uA46A\uA46B\uA46C\uA46D\uA46E\uA46F\uA470\uA471"+
+        "\uA472\uA473\uA474\uA475\uA476\uA477\uA478\uA479"+
+        "\uA47A\uA47B\uA47C\uA47D\uA47E\uA480\uA481\uA482"+
+        "\uA483\uA484\uA485\uA486\uA487\uA488\uA489\uA48A"+
+        "\uA48B\uA48C\uA48D\uA48E\uA48F\uA490\uA491\uA492"+
+        "\uA493\uA494\uA495\uA496\uA497\uA498\uA499\uA49A"+
+        "\uA49B\uA49C\uA49D\uA49E\uA49F\uA4A0\uA540\uA541"+
+        "\uA542\uA543\uA544\uA545\uA546\uA547\uA548\uA549"+
+        "\uA54A\uA54B\uA54C\uA54D\uA54E\uA54F\uA550\uA551"+
+        "\uA552\uA553\uA554\uA555\uA556\uA557\uA558\uA559"+
+        "\uA55A\uA55B\uA55C\uA55D\uA55E\uA55F\uA560\uA561"+
+        "\uA562\uA563\uA564\uA565\uA566\uA567\uA568\uA569"+
+        "\uA56A\uA56B\uA56C\uA56D\uA56E\uA56F\uA570\uA571"+
+        "\uA572\uA573\uA574\uA575\uA576\uA577\uA578\uA579"+
+        "\uA57A\uA57B\uA57C\uA57D\uA57E\uA580\uA581\uA582"+
+        "\uA583\uA584\uA585\uA586\uA587\uA588\uA589\uA58A"+
+        "\uA58B\uA58C\uA58D\uA58E\uA58F\uA590\uA591\uA592"+
+        "\uA593\uA594\uA595\uA596\uA597\uA598\uA599\uA59A"+
+        "\uA59B\uA59C\uA59D\uA59E\uA59F\uA5A0\uA640\uA641"+
+        "\uA642\uA643\uA644\uA645\uA646\uA647\uA648\uA649"+
+        "\uA64A\uA64B\uA64C\uA64D\uA64E\uA64F\uA650\uA651"+
+        "\uA652\uA653\uA654\uA655\uA656\uA657\uA658\uA659"+
+        "\uA65A\uA65B\uA65C\uA65D\uA65E\uA65F\uA660\uA661"+
+        "\uA662\uA663\uA664\uA665\uA666\uA667\uA668\uA669"+
+        "\uA66A\uA66B\uA66C\uA66D\uA66E\uA66F\uA670\uA671"+
+        "\uA672\uA673\uA674\uA675\uA676\uA677\uA678\uA679"+
+        "\uA67A\uA67B\uA67C\uA67D\uA67E\uA680\uA681\uA682"+
+        "\uA683\uA684\uA685\uA686\uA687\uA688\uA689\uA68A"+
+        "\uA68B\uA68C\uA68D\uA68E\uA68F\uA690\uA691\uA692"+
+        "\uA693\uA694\uA695\uA696\uA697\uA698\uA699\uA69A"+
+        "\uA69B\uA69C\uA69D\uA69E\uA69F\uA6A0\uA740\uA741"+
+        "\uA742\uA743\uA744\uA745\uA746\uA747\uA748\uA749"+
+        "\uA74A\uA74B\uA74C\uA74D\uA74E\uA74F\uA750\uA751"+
+        "\uA752\uA753\uA754\uA755\uA756\uA757\uA758\uA759"+
+        "\uA75A\uA75B\uA75C\uA75D\uA75E\uA75F\uA760\uA761"+
+        "\uA762\uA763\uA764\uA765\uA766\uA767\uA768\uA769"+
+        "\uA76A\uA76B\uA76C\uA76D\uA76E\uA76F\uA770\uA771"+
+        "\uA772\uA773\uA774\uA775\uA776\uA777\uA778\uA779"+
+        "\uA77A\uA77B\uA77C\uA77D\uA77E\uA780\uA781\uA782"+
+        "\uA783\uA784\uA785\uA786\uA787\uA788\uA789\uA78A"+
+        "\uA78B\uA78C\uA78D\uA78E\uA78F\uA790\uA791\uA792"+
+        "\uA793\uA794\uA795\uA796\uA797\uA798\uA799\uA79A"+
+        "\uA79B\uA79C\uA79D\uA79E\uA79F\uA7A0\uA2AB\uA2AC"+
+        "\uA2AD\uA2AE\uA2AF\uA2B0\u2000\uA2E4\uA2EF\uA2F0"+
+        "\uA2FD\uA2FE\uA4F4\uA4F5\uA4F6\uA4F7\uA4F8\uA4F9"+
+        "\uA4FA\uA4FB\uA4FC\uA4FD\uA4FE\uA5F7\uA5F8\uA5F9"+
+        "\uA5FA\uA5FB\uA5FC\uA5FD\uA5FE\uA6B9\uA6BA\uA6BB"+
+        "\uA6BC\uA6BD\uA6BE\uA6BF\uA6C0\uA6D9\uA6DA\uA6DB"+
+        "\uA6DC\uA6DD\uA6DE\uA6DF\uA6EC\uA6ED\uA6F3\uA6F6"+
+        "\uA6F7\uA6F8\uA6F9\uA6FA\uA6FB\uA6FC\uA6FD\uA6FE"+
+        "\uA7C2\uA7C3\uA7C4\uA7C5\uA7C6\uA7C7\uA7C8\uA7C9"+
+        "\uA7CA\uA7CB\uA7CC\uA7CD\uA7CE\uA7CF\uA7D0\uA7F2"+
+        "\uA7F3\uA7F4\uA7F5\uA7F6\uA7F7\uA7F8\uA7F9\uA7FA"+
+        "\uA7FB\uA7FC\uA7FD\uA7FE\uA896\uA897\uA898\uA899"+
+        "\uA89A\uA89B\uA89C\uA89D\uA89E\uA89F\uA8A0\uA8BC"+
+        "\u2001\uA8C1\uA8C2\uA8C3\uA8C4\uA8EA\uA8EB\uA8EC"+
+        "\uA8ED\uA8EE\uA8EF\uA8F0\uA8F1\uA8F2\uA8F3\uA8F4"+
+        "\uA8F5\uA8F6\uA8F7\uA8F8\uA8F9\uA8FA\uA8FB\uA8FC"+
+        "\uA8FD\uA8FE\uA958\uA95B\uA95D\uA95E\uA95F\u2002"+
+        "\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A"+
+        "\u200B\u200C\u200D\u200E\uA997\uA998\uA999\uA99A"+
+        "\uA99B\uA99C\uA99D\uA99E\uA99F\uA9A0\uA9A1\uA9A2"+
+        "\uA9A3\uA9F0\uA9F1\uA9F2\uA9F3\uA9F4\uA9F5\uA9F6"+
+        "\uA9F7\uA9F8\uA9F9\uA9FA\uA9FB\uA9FC\uA9FD\uA9FE"+
+        "\uD7FA\uD7FB\uD7FC\uD7FD\uD7FE\u200F\uFE51\uFE52"+
+        "\uFE53\u2010\u2011\u2012\u2013\u2014\uFE59\u2015"+
+        "\u2016\u2017\u2018\u2019\u201A\u201B\uFE61\u201C"+
+        "\u201D\u201E\u201F\uFE66\uFE67\u2020\u2021\u2022"+
+        "\u2023\uFE6C\uFE6D\u2024\u2025\u2026\u2027\u2028"+
+        "\u2029\u202A\u202B\uFE76\u202C\u202D\u202E\u202F"+
+        "\u2030\u2031\u2032\uFE7E\u2033\u2034\u2035\u2036"+
+        "\u2037\u2038\u2039\u203A\u203B\u203C\u203D\u203E"+
+        "\u203F\u2040\u2041\u2042\uFE90\uFE91\u2043\u2044"+
+        "\u2045\u2046\u2047\u2048\u2049\u204A\u204B\u204C"+
+        "\u204D\u204E\u204F\u2050\uFEA0\u2051\u2052\u2053"+
+        "\u2054\u2055\u2056\u2057\u2058\u2059\u205A\u205B"+
+        "\u205C\u205D\u205E\u205F\u2060\u2061\u2062\u2063"+
+        "\u2064\u2065\u2066\u2067\u2068\u2069\u206A\u206B"+
+        "\u206C\u206D\u206E\u206F\u2070\u2071\u2072\u2073"+
+        "\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B"+
+        "\u207C\u207D\u207E\u207F\u2080\u2081\u2082\u2083"+
+        "\u2084\u2085\u2086\u2087\u2088\u2089\u208A\u208B"+
+        "\u208C\u208D\u208E\u208F\u2090\u2091\u2092\u2093"+
+        "\u2094\u2095\u2096\u2097\u2098\u2099\u209A\u209B"+
+        "\u209C\u209D\u209E\u209F\u20A0\u20A1\u20A2\u20A3"+
+        "\u20A4\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB"+
+        "\u20AC\u20AD\u20AE\u20AF\u20B0\u20B1\u20B2\u20B3"+
+        "\u20B4\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB"+
+        "\u20BC\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3"+
+        "\u20C4\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB"+
+        "\u20CC\u20CD\u20CE\u20CF\u20D0\u20D1\u20D2\u20D3"+
+        "\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB"+
+        "\u20DC\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3"+
+        "\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB"+
+        "\u20EC\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2\u20F3"+
+        "\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA\u20FB"+
+        "\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102\u2103"+
+        "\u2104\u2105\u2106\u2107\u2108\u2109\u210A\u210B"+
+        "\u210C\u210D\u210E\u210F\u2110\u2111\u2112\u2113"+
+        "\u2114\u2115\u2116\u2117\u2118\u2119\u211A\u211B"+
+        "\u211C\u211D\u211E\u211F\u2120\u2121\u2122\u2123"+
+        "\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B"+
+        "\u212C\u212D\u212E\u212F\u2130\u2131\u2132\u2133"+
+        "\u2134\u2135\u2136\u2137\u2138\u2139\u213A\u213B"+
+        "\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143"+
+        "\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B"+
+        "\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153"+
+        "\u2154\u2155\u2156\u2157\u2158\u2159\u215A\u215B"+
+        "\u215C\u215D\u215E\u215F\u2160\u2161\u2162\u2163"+
+        "\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B"+
+        "\u216C\u216D\u216E\u216F\u2170\u2171\u2172\u2173"+
+        "\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B"+
+        "\u217C\u217D\u217E\u217F\u2180\u2181\u2182\u2183"+
+        "\u2184\u2185\u2186\u2187\u2188\u2189\u218A\u218B"+
+        "\u218C\u218D\u218E\u218F\u2190\u2191\u2192\u2193"+
+        "\u2194\u2195\u2196\u2197\u2198\u2199\u219A\u219B"+
+        "\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2\u21A3"+
+        "\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA\u21AB"+
+        "\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1\u21B2\u21B3"+
+        "\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9\u21BA\u21BB"+
+        "\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1\u21C2\u21C3"+
+        "\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9\u21CA\u21CB"+
+        "\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1\u21D2\u21D3"+
+        "\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9\u21DA\u21DB"+
+        "\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1\u21E2\u21E3"+
+        "\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9\u21EA\u21EB"+
+        "\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1\u21F2\u21F3"+
+        "\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9\u21FA\u21FB"+
+        "\u21FC\u21FD\u21FE\u21FF\u2200\u2201\u2202\u2203"+
+        "\u2204\u2205\u2206\u2207\u2208\u2209\u220A\u220B"+
+        "\u220C\u220D\u220E\u220F\u2210\u2211\u2212\u2213"+
+        "\u2214\u2215\u2216\u2217\u2218\u2219\u221A\u221B"+
+        "\u221C\u221D\u221E\u221F\u2220\u2221\u2222\u2223"+
+        "\u2224\u2225\u2226\u2227\u2228\u2229\u222A\u222B"+
+        "\u222C\u222D\u222E\u222F\u2230\u2231\u2232\u2233"+
+        "\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B"+
+        "\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243"+
+        "\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B"+
+        "\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253"+
+        "\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B"+
+        "\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263"+
+        "\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B"+
+        "\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273"+
+        "\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B"+
+        "\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283"+
+        "\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B"+
+        "\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293"+
+        "\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B"+
+        "\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3"+
+        "\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB"+
+        "\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3"+
+        "\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB"+
+        "\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2\u22C3"+
+        "\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB"+
+        "\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3"+
+        "\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB"+
+        "\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3"+
+        "\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB";
+
+    private final static String innerEncoderIndex11=
+        "\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3"+
+        "\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB"+
+        "\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302\u2303"+
+        "\u2304\u2305\u2306\u2307\u2308\u2309\u230A\u230B"+
+        "\u230C\u230D\u230E\u230F\u2310\u2311\u2312\u2313"+
+        "\u2314\u2315\u2316\u2317\u2318\u2319\u231A\u231B"+
+        "\u231C\u231D\u231E\u231F\u2320\u2321\u2322\u2323"+
+        "\u2324\u2325\u2326\u2327\u2328\u2329\u232A\u232B"+
+        "\u232C\u232D\u232E\u232F\u2330\u2331\u2332\u2333"+
+        "\u2334\u2335\u2336\u2337\u2338\u2339\u233A\u233B"+
+        "\u233C\u233D\u233E\u233F\u2340\u2341\u2342\u2343"+
+        "\u2344\u2345\u2346\u2347\u2348\u2349\u234A\u234B"+
+        "\u234C\u234D\u234E\u234F\u2350\u2351\u2352\u2353"+
+        "\u2354\u2355\u2356\u2357\u2358\u2359\u235A\u235B"+
+        "\u235C\u235D\u235E\u235F\u2360\u2361\u2362\u2363"+
+        "\u2364\u2365\u2366\u2367\u2368\u2369\u236A\u236B"+
+        "\u236C\u236D\u236E\u236F\u2370\u2371\u2372\u2373"+
+        "\u2374\u2375\u2376\u2377\u2378\u2379\u237A\u237B"+
+        "\u237C\u237D\u237E\u237F\u2380\u2381\u2382\u2383"+
+        "\u2384\u2385\u2386\u2387\u2388\u2389\u238A\u238B"+
+        "\u238C\u238D\u238E\u238F\u2390\u2391\u2392\u2393"+
+        "\u2394\u2395\u2396\u2397\u2398\u2399\u239A\u239B"+
+        "\u239C\u239D\u239E\u239F\u23A0\u23A1\u23A2\u23A3"+
+        "\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9\u23AA\u23AB"+
+        "\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1\u23B2\u23B3"+
+        "\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9\u23BA\u23BB"+
+        "\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1\u23C2\u23C3"+
+        "\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9\u23CA\u23CB"+
+        "\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1\u23D2\u23D3"+
+        "\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9\u23DA\u23DB"+
+        "\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1\u23E2\u23E3"+
+        "\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9\u23EA\u23EB"+
+        "\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1\u23F2\u23F3"+
+        "\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9\u23FA\u23FB"+
+        "\u23FC\u23FD\u23FE\u23FF\u2400\u2401\u2402\u2403"+
+        "\u2404\u2405\u2406\u2407\u2408\u2409\u240A\u240B"+
+        "\u240C\u240D\u240E\u240F\u2410\u2411\u2412\u2413"+
+        "\u2414\u2415\u2416\u2417\u2418\u2419\u241A\u241B"+
+        "\u241C\u241D\u241E\u241F\u2420\u2421\u2422\u2423"+
+        "\u2424\u2425\u2426\u2427\u2428\u2429\u242A\u242B"+
+        "\u242C\u242D\u242E\u242F\u2430\u2431\u2432\u2433"+
+        "\u2434\u2435\u2436\u2437\u2438\u2439\u243A\u243B"+
+        "\u243C\u243D\u243E\u243F\u2440\u2441\u2442\u2443"+
+        "\u2444\u2445\u2446\u2447\u2448\u2449\u244A\u244B"+
+        "\u244C\u244D\u244E\u244F\u2450\u2451\u2452\u2453"+
+        "\u2454\u2455\u2456\u2457\u2458\u2459\u245A\u245B"+
+        "\u245C\u245D\u245E\u245F\u2460\u2461\u2462\u2463"+
+        "\u2464\u2465\u2466\u2467\u2468\u2469\u246A\u246B"+
+        "\u246C\u246D\u246E\u246F\u2470\u2471\u2472\u2473"+
+        "\u2474\u2475\u2476\u2477\u2478\u2479\u247A\u247B"+
+        "\u247C\u247D\u247E\u247F\u2480\u2481\u2482\u2483"+
+        "\u2484\u2485\u2486\u2487\u2488\u2489\u248A\u248B"+
+        "\u248C\u248D\u248E\u248F\u2490\u2491\u2492\u2493"+
+        "\u2494\u2495\u2496\u2497\u2498\u2499\u249A\u249B"+
+        "\u249C\u249D\u249E\u249F\u24A0\u24A1\u24A2\u24A3"+
+        "\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9\u24AA\u24AB"+
+        "\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1\u24B2\u24B3"+
+        "\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB"+
+        "\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3"+
+        "\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB"+
+        "\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1\u24D2\u24D3"+
+        "\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA\u24DB"+
+        "\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3"+
+        "\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u24EA\u24EB"+
+        "\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1\u24F2\u24F3"+
+        "\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9\u24FA\u24FB"+
+        "\u24FC\u24FD\u24FE\u24FF\u2500\u2501\u2502\u2503"+
+        "\u2504\u2505\u2506\u2507\u2508\u2509\u250A\u250B"+
+        "\u250C\u250D\u250E\u250F\u2510\u2511\u2512\u2513"+
+        "\u2514\u2515\u2516\u2517\u2518\u2519\u251A\u251B"+
+        "\u251C\u251D\u251E\u251F\u2520\u2521\u2522\u2523"+
+        "\u2524\u2525\u2526\u2527\u2528\u2529\u252A\u252B"+
+        "\u252C\u252D\u252E\u252F\u2530\u2531\u2532\u2533"+
+        "\u2534\u2535\u2536\u2537\u2538\u2539\u253A\u253B"+
+        "\u253C\u253D\u253E\u253F\u2540\u2541\u2542\u2543"+
+        "\u2544\u2545\u2546\u2547\u2548\u2549\u254A\u254B"+
+        "\u254C\u254D\u254E\u254F\u2550\u2551\u2552\u2553"+
+        "\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B"+
+        "\u255C\u255D\u255E\u255F\u2560\u2561\u2562\u2563"+
+        "\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B"+
+        "\u256C\u256D\u256E\u256F\u2570\u2571\u2572\u2573"+
+        "\u2574\u2575\u2576\u2577\u2578\u2579\u257A\u257B"+
+        "\u257C\u257D\u257E\u257F\u2580\u2581\u2582\u2583"+
+        "\u2584\u2585\u2586\u2587\u2588\u2589\u258A\u258B"+
+        "\u258C\u258D\u258E\u258F\u2590\u2591\u2592\u2593"+
+        "\u2594\u2595\u2596\u2597\u2598\u2599\u259A\u259B"+
+        "\u259C\u259D\u259E\u259F\u25A0\u25A1\u25A2\u25A3"+
+        "\u25A4\u25A5\u25A6\u25A7\u25A8\u25A9\u25AA\u25AB"+
+        "\u25AC\u25AD\u25AE\u25AF\u25B0\u25B1\u25B2\u25B3"+
+        "\u25B4\u25B5\u25B6\u25B7\u25B8\u25B9\u25BA\u25BB"+
+        "\u25BC\u25BD\u25BE\u25BF\u25C0\u25C1\u25C2\u25C3"+
+        "\u25C4\u25C5\u25C6\u25C7\u25C8\u25C9\u25CA\u25CB"+
+        "\u25CC\u25CD\u25CE\u25CF\u25D0\u25D1\u25D2\u25D3"+
+        "\u25D4\u25D5\u25D6\u25D7\u25D8\u25D9\u25DA\u25DB"+
+        "\u25DC\u25DD\u25DE\u25DF\u25E0\u25E1\u25E2\u25E3"+
+        "\u25E4\u25E5\u25E6\u25E7\u25E8\u25E9\u25EA\u25EB"+
+        "\u25EC\u25ED\u25EE\u25EF\u25F0\u25F1\u25F2\u25F3"+
+        "\u25F4\u25F5\u25F6\u25F7\u25F8\u25F9\u25FA\u25FB"+
+        "\u25FC\u25FD\u25FE\u25FF\u2600\u2601\u2602\u2603"+
+        "\u2604\u2605\u2606\u2607\u2608\u2609\u260A\u260B"+
+        "\u260C\u260D\u260E\u260F\u2610\u2611\u2612\u2613"+
+        "\u2614\u2615\u2616\u2617\u2618\u2619\u261A\u261B"+
+        "\u261C\u261D\u261E\u261F\u2620\u2621\u2622\u2623"+
+        "\u2624\u2625\u2626\u2627\u2628\u2629\u262A\u262B"+
+        "\u262C\u262D\u262E\u262F\u2630\u2631\u2632\u2633"+
+        "\u2634\u2635\u2636\u2637\u2638\u2639\u263A\u263B"+
+        "\u263C\u263D\u263E\u263F\u2640\u2641\u2642\u2643"+
+        "\u2644\u2645\u2646\u2647\u2648\u2649\u264A\u264B"+
+        "\u264C\u264D\u264E\u264F\u2650\u2651\u2652\u2653"+
+        "\u2654\u2655\u2656\u2657\u2658\u2659\u265A\u265B"+
+        "\u265C\u265D\u265E\u265F\u2660\u2661\u2662\u2663"+
+        "\u2664\u2665\u2666\u2667\u2668\u2669\u266A\u266B"+
+        "\u266C\u266D\u266E\u266F\u2670\u2671\u2672\u2673"+
+        "\u2674\u2675\u2676\u2677\u2678\u2679\u267A\u267B"+
+        "\u267C\u267D\u267E\u267F\u2680\u2681\u2682\u2683"+
+        "\u2684\u2685\u2686\u2687\u2688\u2689\u268A\u268B"+
+        "\u268C\u268D\u268E\u268F\u2690\u2691\u2692\u2693"+
+        "\u2694\u2695\u2696\u2697\u2698\u2699\u269A\u269B"+
+        "\u269C\u269D\u269E\u269F\u26A0\u26A1\u26A2\u26A3"+
+        "\u26A4\u26A5\u26A6\u26A7\u26A8\u26A9\u26AA\u26AB"+
+        "\u26AC\u26AD\u26AE\u26AF\u26B0\u26B1\u26B2\u26B3"+
+        "\u26B4\u26B5\u26B6\u26B7\u26B8\u26B9\u26BA\u26BB"+
+        "\u26BC\u26BD\u26BE\u26BF\u26C0\u26C1\u26C2\u26C3"+
+        "\u26C4\u26C5\u26C6\u26C7\u26C8\u26C9\u26CA\u26CB"+
+        "\u26CC\u26CD\u26CE\u26CF\u26D0\u26D1\u26D2\u26D3"+
+        "\u26D4\u26D5\u26D6\u26D7\u26D8\u26D9\u26DA\u26DB"+
+        "\u26DC\u26DD\u26DE\u26DF\u26E0\u26E1\u26E2\u26E3"+
+        "\u26E4\u26E5\u26E6\u26E7\u26E8\u26E9\u26EA\u26EB"+
+        "\u26EC\u26ED\u26EE\u26EF\u26F0\u26F1\u26F2\u26F3"+
+        "\u26F4\u26F5\u26F6\u26F7\u26F8\u26F9\u26FA\u26FB"+
+        "\u26FC\u26FD\u26FE\u26FF\u2700\u2701\u2702\u2703"+
+        "\u2704\u2705\u2706\u2707\u2708\u2709\u270A\u270B"+
+        "\u270C\u270D\u270E\u270F\u2710\u2711\u2712\u2713"+
+        "\u2714\u2715\u2716\u2717\u2718\u2719\u271A\u271B"+
+        "\u271C\u271D\u271E\u271F\u2720\u2721\u2722\u2723"+
+        "\u2724\u2725\u2726\u2727\u2728\u2729\u272A\u272B"+
+        "\u272C\u272D\u272E\u272F\u2730\u2731\u2732\u2733"+
+        "\u2734\u2735\u2736\u2737\u2738\u2739\u273A\u273B"+
+        "\u273C\u273D\u273E\u273F\u2740\u2741\u2742\u2743"+
+        "\u2744\u2745\u2746\u2747\u2748\u2749\u274A\u274B"+
+        "\u274C\u274D\u274E\u274F\u2750\u2751\u2752\u2753"+
+        "\u2754\u2755\u2756\u2757\u2758\u2759\u275A\u275B"+
+        "\u275C\u275D\u275E\u275F\u2760\u2761\u2762\u2763"+
+        "\u2764\u2765\u2766\u2767\u2768\u2769\u276A\u276B"+
+        "\u276C\u276D\u276E\u276F\u2770\u2771\u2772\u2773"+
+        "\u2774\u2775\u2776\u2777\u2778\u2779\u277A\u277B"+
+        "\u277C\u277D\u277E\u277F\u2780\u2781\u2782\u2783"+
+        "\u2784\u2785\u2786\u2787\u2788\u2789\u278A\u278B"+
+        "\u278C\u278D\u278E\u278F\u2790\u2791\u2792\u2793"+
+        "\u2794\u2795\u2796\u2797\u2798\u2799\u279A\u279B"+
+        "\u279C\u279D\u279E\u279F\u27A0\u27A1\u27A2\u27A3"+
+        "\u27A4\u27A5\u27A6\u27A7\u27A8\u27A9\u27AA\u27AB"+
+        "\u27AC\u27AD\u27AE\u27AF\u27B0\u27B1\u27B2\u27B3"+
+        "\u27B4\u27B5\u27B6\u27B7\u27B8\u27B9\u27BA\u27BB"+
+        "\u27BC\u27BD\u27BE\u27BF\u27C0\u27C1\u27C2\u27C3"+
+        "\u27C4\u27C5\u27C6\u27C7\u27C8\u27C9\u27CA\u27CB"+
+        "\u27CC\u27CD\u27CE\u27CF\u27D0\u27D1\u27D2\u27D3"+
+        "\u27D4\u27D5\u27D6\u27D7\u27D8\u27D9\u27DA\u27DB"+
+        "\u27DC\u27DD\u27DE\u27DF\u27E0\u27E1\u27E2\u27E3"+
+        "\u27E4\u27E5\u27E6\u27E7\u27E8\u27E9\u27EA\u27EB"+
+        "\u27EC\u27ED\u27EE\u27EF\u27F0\u27F1\u27F2\u27F3"+
+        "\u27F4\u27F5\u27F6\u27F7\u27F8\u27F9\u27FA\u27FB"+
+        "\u27FC\u27FD\u27FE\u27FF\u2800\u2801\u2802\u2803"+
+        "\u2804\u2805\u2806\u2807\u2808\u2809\u280A\u280B"+
+        "\u280C\u280D\u280E\u280F\u2810\u2811\u2812\u2813"+
+        "\u2814\u2815\u2816\u2817\u2818\u2819\u281A\u281B"+
+        "\u281C\u281D\u281E\u281F\u2820\u2821\u2822\u2823"+
+        "\u2824\u2825\u2826\u2827\u2828\u2829\u282A\u282B"+
+        "\u282C\u282D\u282E\u282F\u2830\u2831\u2832\u2833"+
+        "\u2834\u2835\u2836\u2837\u2838\u2839\u283A\u283B"+
+        "\u283C\u283D\u283E\u283F\u2840\u2841\u2842\u2843"+
+        "\u2844\u2845\u2846\u2847\u2848\u2849\u284A\u284B"+
+        "\u284C\u284D\u284E\u284F\u2850\u2851\u2852\u2853"+
+        "\u2854\u2855\u2856\u2857\u2858\u2859\u285A\u285B"+
+        "\u285C\u285D\u285E\u285F\u2860\u2861\u2862\u2863"+
+        "\u2864\u2865\u2866\u2867\u2868\u2869\u286A\u286B"+
+        "\u286C\u286D\u286E\u286F\u2870\u2871\u2872\u2873"+
+        "\u2874\u2875\u2876\u2877\u2878\u2879\u287A\u287B"+
+        "\u287C\u287D\u287E\u287F\u2880\u2881\u2882\u2883"+
+        "\u2884\u2885\u2886\u2887\u2888\u2889\u288A\u288B"+
+        "\u288C\u288D\u288E\u288F\u2890\u2891\u2892\u2893"+
+        "\u2894\u2895\u2896\u2897\u2898\u2899\u289A\u289B"+
+        "\u289C\u289D\u289E\u289F\u28A0\u28A1\u28A2\u28A3"+
+        "\u28A4\u28A5\u28A6\u28A7\u28A8\u28A9\u28AA\u28AB"+
+        "\u28AC\u28AD\u28AE\u28AF\u28B0\u28B1\u28B2\u28B3"+
+        "\u28B4\u28B5\u28B6\u28B7\u28B8\u28B9\u28BA\u28BB"+
+        "\u28BC\u28BD\u28BE\u28BF\u28C0\u28C1\u28C2\u28C3"+
+        "\u28C4\u28C5\u28C6\u28C7\u28C8\u28C9\u28CA\u28CB"+
+        "\u28CC\u28CD\u28CE\u28CF\u28D0\u28D1\u28D2\u28D3"+
+        "\u28D4\u28D5\u28D6\u28D7\u28D8\u28D9\u28DA\u28DB"+
+        "\u28DC\u28DD\u28DE\u28DF\u28E0\u28E1\u28E2\u28E3"+
+        "\u28E4\u28E5\u28E6\u28E7\u28E8\u28E9\u28EA\u28EB"+
+        "\u28EC\u28ED\u28EE\u28EF\u28F0\u28F1\u28F2\u28F3"+
+        "\u28F4\u28F5\u28F6\u28F7\u28F8\u28F9\u28FA\u28FB"+
+        "\u28FC\u28FD\u28FE\u28FF\u2900\u2901\u2902\u2903"+
+        "\u2904\u2905\u2906\u2907\u2908\u2909\u290A\u290B"+
+        "\u290C\u290D\u290E\u290F\u2910\u2911\u2912\u2913"+
+        "\u2914\u2915\u2916\u2917\u2918\u2919\u291A\u291B"+
+        "\u291C\u291D\u291E\u291F\u2920\u2921\u2922\u2923"+
+        "\u2924\u2925\u2926\u2927\u2928\u2929\u292A\u292B"+
+        "\u292C\u292D\u292E\u292F\u2930\u2931\u2932\u2933"+
+        "\u2934\u2935\u2936\u2937\u2938\u2939\u293A\u293B"+
+        "\u293C\u293D\u293E\u293F\u2940\u2941\u2942\u2943"+
+        "\u2944\u2945\u2946\u2947\u2948\u2949\u294A\u294B"+
+        "\u294C\u294D\u294E\u294F\u2950\u2951\u2952\u2953"+
+        "\u2954\u2955\u2956\u2957\u2958\u2959\u295A\u295B"+
+        "\u295C\u295D\u295E\u295F\u2960\u2961\u2962\u2963"+
+        "\u2964\u2965\u2966\u2967\u2968\u2969\u296A\u296B"+
+        "\u296C\u296D\u296E\u296F\u2970\u2971\u2972\u2973"+
+        "\u2974\u2975\u2976\u2977\u2978\u2979\u297A\u297B"+
+        "\u297C\u297D\u297E\u297F\u2980\u2981\u2982\u2983"+
+        "\u2984\u2985\u2986\u2987\u2988\u2989\u298A\u298B"+
+        "\u298C\u298D\u298E\u298F\u2990\u2991\u2992\u2993"+
+        "\u2994\u2995\u2996\u2997\u2998\u2999\u299A\u299B"+
+        "\u299C\u299D\u299E\u299F\u29A0\u29A1\u29A2\u29A3"+
+        "\u29A4\u29A5\u29A6\u29A7\u29A8\u29A9\u29AA\u29AB"+
+        "\u29AC\u29AD\u29AE\u29AF\u29B0\u29B1\u29B2\u29B3"+
+        "\u29B4\u29B5\u29B6\u29B7\u29B8\u29B9\u29BA\u29BB"+
+        "\u29BC\u29BD\u29BE\u29BF\u29C0\u29C1\u29C2\u29C3"+
+        "\u29C4\u29C5\u29C6\u29C7\u29C8\u29C9\u29CA\u29CB"+
+        "\u29CC\u29CD\u29CE\u29CF\u29D0\u29D1\u29D2\u29D3"+
+        "\u29D4\u29D5\u29D6\u29D7\u29D8\u29D9\u29DA\u29DB"+
+        "\u29DC\u29DD\u29DE\u29DF\u29E0\u29E1\u29E2\u29E3"+
+        "\u29E4\u29E5\u29E6\u29E7\u29E8\u29E9\u29EA\u29EB"+
+        "\u29EC\u29ED\u29EE\u29EF\u29F0\u29F1\u29F2\u29F3"+
+        "\u29F4\u29F5\u29F6\u29F7\u29F8\u29F9\u29FA\u29FB"+
+        "\u29FC\u29FD\u29FE\u29FF\u2A00\u2A01\u2A02\u2A03"+
+        "\u2A04\u2A05\u2A06\u2A07\u2A08\u2A09\u2A0A\u2A0B"+
+        "\u2A0C\u2A0D\u2A0E\u2A0F\u2A10\u2A11\u2A12\u2A13"+
+        "\u2A14\u2A15\u2A16\u2A17\u2A18\u2A19\u2A1A\u2A1B"+
+        "\u2A1C\u2A1D\u2A1E\u2A1F\u2A20\u2A21\u2A22\u2A23"+
+        "\u2A24\u2A25\u2A26\u2A27\u2A28\u2A29\u2A2A\u2A2B"+
+        "\u2A2C\u2A2D\u2A2E\u2A2F\u2A30\u2A31\u2A32\u2A33"+
+        "\u2A34\u2A35\u2A36\u2A37\u2A38\u2A39\u2A3A\u2A3B"+
+        "\u2A3C\u2A3D\u2A3E\u2A3F\u2A40\u2A41\u2A42\u2A43"+
+        "\u2A44\u2A45\u2A46\u2A47\u2A48\u2A49\u2A4A\u2A4B"+
+        "\u2A4C\u2A4D\u2A4E\u2A4F\u2A50\u2A51\u2A52\u2A53"+
+        "\u2A54\u2A55\u2A56\u2A57\u2A58\u2A59\u2A5A\u2A5B"+
+        "\u2A5C\u2A5D\u2A5E\u2A5F\u2A60\u2A61\u2A62\u2A63"+
+        "\u2A64\u2A65\u2A66\u2A67\u2A68\u2A69\u2A6A\u2A6B"+
+        "\u2A6C\u2A6D\u2A6E\u2A6F\u2A70\u2A71\u2A72\u2A73"+
+        "\u2A74\u2A75\u2A76\u2A77\u2A78\u2A79\u2A7A\u2A7B"+
+        "\u2A7C\u2A7D\u2A7E\u2A7F\u2A80\u2A81\u2A82\u2A83"+
+        "\u2A84\u2A85\u2A86\u2A87\u2A88\u2A89\u2A8A\u2A8B"+
+        "\u2A8C\u2A8D\u2A8E\u2A8F\u2A90\u2A91\u2A92\u2A93"+
+        "\u2A94\u2A95\u2A96\u2A97\u2A98\u2A99\u2A9A\u2A9B"+
+        "\u2A9C\u2A9D\u2A9E\u2A9F\u2AA0\u2AA1\u2AA2\u2AA3"+
+        "\u2AA4\u2AA5\u2AA6\u2AA7\u2AA8\u2AA9\u2AAA\u2AAB"+
+        "\u2AAC\u2AAD\u2AAE\u2AAF\u2AB0\u2AB1\u2AB2\u2AB3"+
+        "\u2AB4\u2AB5\u2AB6\u2AB7\u2AB8\u2AB9\u2ABA\u2ABB"+
+        "\u2ABC\u2ABD\u2ABE\u2ABF\u2AC0\u2AC1\u2AC2\u2AC3"+
+        "\u2AC4\u2AC5\u2AC6\u2AC7\u2AC8\u2AC9\u2ACA\u2ACB"+
+        "\u2ACC\u2ACD\u2ACE\u2ACF\u2AD0\u2AD1\u2AD2\u2AD3"+
+        "\u2AD4\u2AD5\u2AD6\u2AD7\u2AD8\u2AD9\u2ADA\u2ADB"+
+        "\u2ADC\u2ADD\u2ADE\u2ADF\u2AE0\u2AE1\u2AE2\u2AE3"+
+        "\u2AE4\u2AE5\u2AE6\u2AE7\u2AE8\u2AE9\u2AEA\u2AEB"+
+        "\u2AEC\u2AED\u2AEE\u2AEF\u2AF0\u2AF1\u2AF2\u2AF3"+
+        "\u2AF4\u2AF5\u2AF6\u2AF7\u2AF8\u2AF9\u2AFA\u2AFB"+
+        "\u2AFC\u2AFD\u2AFE\u2AFF\u2B00\u2B01\u2B02\u2B03"+
+        "\u2B04\u2B05\u2B06\u2B07\u2B08\u2B09\u2B0A\u2B0B"+
+        "\u2B0C\u2B0D\u2B0E\u2B0F\u2B10\u2B11\u2B12\u2B13"+
+        "\u2B14\u2B15\u2B16\u2B17\u2B18\u2B19\u2B1A\u2B1B"+
+        "\u2B1C\u2B1D\u2B1E\u2B1F\u2B20\u2B21\u2B22\u2B23"+
+        "\u2B24\u2B25\u2B26\u2B27\u2B28\u2B29\u2B2A\u2B2B"+
+        "\u2B2C\u2B2D\u2B2E\u2B2F\u2B30\u2B31\u2B32\u2B33"+
+        "\u2B34\u2B35\u2B36\u2B37\u2B38\u2B39\u2B3A\u2B3B"+
+        "\u2B3C\u2B3D\u2B3E\u2B3F\u2B40\u2B41\u2B42\u2B43"+
+        "\u2B44\u2B45\u2B46\u2B47\u2B48\u2B49\u2B4A\u2B4B"+
+        "\u2B4C\u2B4D\u2B4E\u2B4F\u2B50\u2B51\u2B52\u2B53"+
+        "\u2B54\u2B55\u2B56\u2B57\u2B58\u2B59\u2B5A\u2B5B"+
+        "\u2B5C\u2B5D\u2B5E\u2B5F\u2B60\u2B61\u2B62\u2B63"+
+        "\u2B64\u2B65\u2B66\u2B67\u2B68\u2B69\u2B6A\u2B6B"+
+        "\u2B6C\u2B6D\u2B6E\u2B6F\u2B70\u2B71\u2B72\u2B73"+
+        "\u2B74\u2B75\u2B76\u2B77\u2B78\u2B79\u2B7A\u2B7B"+
+        "\u2B7C\u2B7D\u2B7E\u2B7F\u2B80\u2B81\u2B82\u2B83"+
+        "\u2B84\u2B85\u2B86\u2B87\u2B88\u2B89\u2B8A\u2B8B"+
+        "\u2B8C\u2B8D\u2B8E\u2B8F\u2B90\u2B91\u2B92\u2B93"+
+        "\u2B94\u2B95\u2B96\u2B97\u2B98\u2B99\u2B9A\u2B9B"+
+        "\u2B9C\u2B9D\u2B9E\u2B9F\u2BA0\u2BA1\u2BA2\u2BA3"+
+        "\u2BA4\u2BA5\u2BA6\u2BA7\u2BA8\u2BA9\u2BAA\u2BAB"+
+        "\u2BAC\u2BAD\u2BAE\u2BAF\u2BB0\u2BB1\u2BB2\u2BB3"+
+        "\u2BB4\u2BB5\u2BB6\u2BB7\u2BB8\u2BB9\u2BBA\u2BBB"+
+        "\u2BBC\u2BBD\u2BBE\u2BBF\u2BC0\u2BC1\u2BC2\u2BC3"+
+        "\u2BC4\u2BC5\u2BC6\u2BC7\u2BC8\u2BC9\u2BCA\u2BCB"+
+        "\u2BCC\u2BCD\u2BCE\u2BCF\u2BD0\u2BD1\u2BD2\u2BD3"+
+        "\u2BD4\u2BD5\u2BD6\u2BD7\u2BD8\u2BD9\u2BDA\u2BDB"+
+        "\u2BDC\u2BDD\u2BDE\u2BDF\u2BE0\u2BE1\u2BE2\u2BE3"+
+        "\u2BE4\u2BE5\u2BE6\u2BE7\u2BE8\u2BE9\u2BEA\u2BEB"+
+        "\u2BEC\u2BED\u2BEE\u2BEF\u2BF0\u2BF1\u2BF2\u2BF3"+
+        "\u2BF4\u2BF5\u2BF6\u2BF7\u2BF8\u2BF9\u2BFA\u2BFB"+
+        "\u2BFC\u2BFD\u2BFE\u2BFF\u2C00\u2C01\u2C02\u2C03"+
+        "\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B"+
+        "\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13"+
+        "\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B"+
+        "\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23"+
+        "\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B"+
+        "\u2C2C\u2C2D\u2C2E\u2C2F\u2C30\u2C31\u2C32\u2C33"+
+        "\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B"+
+        "\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43"+
+        "\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B"+
+        "\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53"+
+        "\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B"+
+        "\u2C5C\u2C5D\u2C5E\u2C5F\u2C60\u2C61\u2C62\u2C63"+
+        "\u2C64\u2C65\u2C66\u2C67\u2C68\u2C69\u2C6A\u2C6B"+
+        "\u2C6C\u2C6D\u2C6E\u2C6F\u2C70\u2C71\u2C72\u2C73"+
+        "\u2C74\u2C75\u2C76\u2C77\u2C78\u2C79\u2C7A\u2C7B"+
+        "\u2C7C\u2C7D\u2C7E\u2C7F\u2C80\u2C81\u2C82\u2C83"+
+        "\u2C84\u2C85\u2C86\u2C87\u2C88\u2C89\u2C8A\u2C8B"+
+        "\u2C8C\u2C8D\u2C8E\u2C8F\u2C90\u2C91\u2C92\u2C93"+
+        "\u2C94\u2C95\u2C96\u2C97\u2C98\u2C99\u2C9A\u2C9B"+
+        "\u2C9C\u2C9D\u2C9E\u2C9F\u2CA0\u2CA1\u2CA2\u2CA3"+
+        "\u2CA4\u2CA5\u2CA6\u2CA7\u2CA8\u2CA9\u2CAA\u2CAB"+
+        "\u2CAC\u2CAD\u2CAE\u2CAF\u2CB0\u2CB1\u2CB2\u2CB3"+
+        "\u2CB4\u2CB5\u2CB6\u2CB7\u2CB8\u2CB9\u2CBA\u2CBB"+
+        "\u2CBC\u2CBD\u2CBE\u2CBF\u2CC0\u2CC1\u2CC2\u2CC3"+
+        "\u2CC4\u2CC5\u2CC6\u2CC7\u2CC8\u2CC9\u2CCA\u2CCB"+
+        "\u2CCC\u2CCD\u2CCE\u2CCF\u2CD0\u2CD1\u2CD2\u2CD3"+
+        "\u2CD4\u2CD5\u2CD6\u2CD7\u2CD8\u2CD9\u2CDA\u2CDB"+
+        "\u2CDC\u2CDD\u2CDE\u2CDF\u2CE0\u2CE1\u2CE2\u2CE3"+
+        "\u2CE4\u2CE5\u2CE6\u2CE7\u2CE8\u2CE9\u2CEA\u2CEB"+
+        "\u2CEC\u2CED\u2CEE\u2CEF\u2CF0\u2CF1\u2CF2\u2CF3"+
+        "\u2CF4\u2CF5\u2CF6\u2CF7\u2CF8\u2CF9\u2CFA\u2CFB"+
+        "\u2CFC\u2CFD\u2CFE\u2CFF\u2D00\u2D01\u2D02\u2D03"+
+        "\u2D04\u2D05\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B"+
+        "\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13"+
+        "\u2D14\u2D15\u2D16\u2D17\u2D18\u2D19\u2D1A\u2D1B"+
+        "\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23"+
+        "\u2D24\u2D25\u2D26\u2D27\u2D28\u2D29\u2D2A\u2D2B"+
+        "\u2D2C\u2D2D\u2D2E\u2D2F\u2D30\u2D31\u2D32\u2D33"+
+        "\u2D34\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B"+
+        "\u2D3C\u2D3D\u2D3E\u2D3F\u2D40\u2D41\u2D42\u2D43"+
+        "\u2D44\u2D45\u2D46\u2D47\u2D48\u2D49\u2D4A\u2D4B"+
+        "\u2D4C\u2D4D\u2D4E\u2D4F\u2D50\u2D51\u2D52\u2D53"+
+        "\u2D54\u2D55\u2D56\u2D57\u2D58\u2D59\u2D5A\u2D5B"+
+        "\u2D5C\u2D5D\u2D5E\u2D5F\u2D60\u2D61\u2D62\u2D63"+
+        "\u2D64\u2D65\u2D66\u2D67\u2D68\u2D69\u2D6A\u2D6B"+
+        "\u2D6C\u2D6D\u2D6E\u2D6F\u2D70\u2D71\u2D72\u2D73"+
+        "\u2D74\u2D75\u2D76\u2D77\u2D78\u2D79\u2D7A\u2D7B"+
+        "\u2D7C\u2D7D\u2D7E\u2D7F\u2D80\u2D81\u2D82\u2D83"+
+        "\u2D84\u2D85\u2D86\u2D87\u2D88\u2D89\u2D8A\u2D8B"+
+        "\u2D8C\u2D8D\u2D8E\u2D8F\u2D90\u2D91\u2D92\u2D93"+
+        "\u2D94\u2D95\u2D96\u2D97\u2D98\u2D99\u2D9A\u2D9B"+
+        "\u2D9C\u2D9D\u2D9E\u2D9F\u2DA0\u2DA1\u2DA2\u2DA3"+
+        "\u2DA4\u2DA5\u2DA6\u2DA7\u2DA8\u2DA9\u2DAA\u2DAB"+
+        "\u2DAC\u2DAD\u2DAE\u2DAF\u2DB0\u2DB1\u2DB2\u2DB3"+
+        "\u2DB4\u2DB5\u2DB6\u2DB7\u2DB8\u2DB9\u2DBA\u2DBB"+
+        "\u2DBC\u2DBD\u2DBE\u2DBF\u2DC0\u2DC1\u2DC2\u2DC3"+
+        "\u2DC4\u2DC5\u2DC6\u2DC7\u2DC8\u2DC9\u2DCA\u2DCB"+
+        "\u2DCC\u2DCD\u2DCE\u2DCF\u2DD0\u2DD1\u2DD2\u2DD3"+
+        "\u2DD4\u2DD5\u2DD6\u2DD7\u2DD8\u2DD9\u2DDA\u2DDB"+
+        "\u2DDC\u2DDD\u2DDE\u2DDF\u2DE0\u2DE1\u2DE2\u2DE3"+
+        "\u2DE4\u2DE5\u2DE6\u2DE7\u2DE8\u2DE9\u2DEA\u2DEB"+
+        "\u2DEC\u2DED\u2DEE\u2DEF\u2DF0\u2DF1\u2DF2\u2DF3"+
+        "\u2DF4\u2DF5\u2DF6\u2DF7\u2DF8\u2DF9\u2DFA\u2DFB"+
+        "\u2DFC\u2DFD\u2DFE\u2DFF\u2E00\u2E01\u2E02\u2E03"+
+        "\u2E04\u2E05\u2E06\u2E07\u2E08\u2E09\u2E0A\u2E0B"+
+        "\u2E0C\u2E0D\u2E0E\u2E0F\u2E10\u2E11\u2E12\u2E13"+
+        "\u2E14\u2E15\u2E16\u2E17\u2E18\u2E19\u2E1A\u2E1B"+
+        "\u2E1C\u2E1D\u2E1E\u2E1F\u2E20\u2E21\u2E22\u2E23"+
+        "\u2E24\u2E25\u2E26\u2E27\u2E28\u2E29\u2E2A\u2E2B"+
+        "\u2E2C\u2E2D\u2E2E\u2E2F\u2E30\u2E31\u2E32\u2E33"+
+        "\u2E34\u2E35\u2E36\u2E37\u2E38\u2E39\u2E3A\u2E3B"+
+        "\u2E3C\u2E3D\u2E3E\u2E3F\u2E40\u2E41\u2E42\u2E43"+
+        "\u2E44\u2E45\u2E46\u2E47\u2E48\u2E49\u2E4A\u2E4B"+
+        "\u2E4C\u2E4D\u2E4E\u2E4F\u2E50\u2E51\u2E52\u2E53"+
+        "\u2E54\u2E55\u2E56\u2E57\u2E58\u2E59\u2E5A\u2E5B"+
+        "\u2E5C\u2E5D\u2E5E\u2E5F\u2E60\u2E61\u2E62\u2E63"+
+        "\u2E64\u2E65\u2E66\u2E67\u2E68\u2E69\u2E6A\u2E6B"+
+        "\u2E6C\u2E6D\u2E6E\u2E6F\u2E70\u2E71\u2E72\u2E73"+
+        "\u2E74\u2E75\u2E76\u2E77\u2E78\u2E79\u2E7A\u2E7B"+
+        "\u2E7C\u2E7D\u2E7E\u2E7F\u2E80\u2E81\u2E82\u2E83"+
+        "\u2E84\u2E85\u2E86\u2E87\u2E88\u2E89\u2E8A\u2E8B"+
+        "\u2E8C\u2E8D\u2E8E\u2E8F\u2E90\u2E91\u2E92\u2E93"+
+        "\u2E94\u2E95\u2E96\u2E97\u2E98\u2E99\u2E9A\u2E9B"+
+        "\u2E9C\u2E9D\u2E9E\u2E9F\u2EA0\u2EA1\u2EA2\u2EA3"+
+        "\u2EA4\u2EA5\u2EA6\u2EA7\u2EA8\u2EA9\u2EAA\u2EAB"+
+        "\u2EAC\u2EAD\u2EAE\u2EAF\u2EB0\u2EB1\u2EB2\u2EB3"+
+        "\u2EB4\u2EB5\u2EB6\u2EB7\u2EB8\u2EB9\u2EBA\u2EBB"+
+        "\u2EBC\u2EBD\u2EBE\u2EBF\u2EC0\u2EC1\u2EC2\u2EC3"+
+        "\u2EC4\u2EC5\u2EC6\u2EC7\u2EC8\u2EC9\u2ECA\u2ECB"+
+        "\u2ECC\u2ECD\u2ECE\u2ECF\u2ED0\u2ED1\u2ED2\u2ED3"+
+        "\u2ED4\u2ED5\u2ED6\u2ED7\u2ED8\u2ED9\u2EDA\u2EDB"+
+        "\u2EDC\u2EDD\u2EDE\u2EDF\u2EE0\u2EE1\u2EE2\u2EE3"+
+        "\u2EE4\u2EE5\u2EE6\u2EE7\u2EE8\u2EE9\u2EEA\u2EEB"+
+        "\u2EEC\u2EED\u2EEE\u2EEF\u2EF0\u2EF1\u2EF2\u2EF3"+
+        "\u2EF4\u2EF5\u2EF6\u2EF7\u2EF8\u2EF9\u2EFA\u2EFB"+
+        "\u2EFC\u2EFD\u2EFE\u2EFF\u2F00\u2F01\u2F02\u2F03"+
+        "\u2F04\u2F05\u2F06\u2F07\u2F08\u2F09\u2F0A\u2F0B"+
+        "\u2F0C\u2F0D\u2F0E\u2F0F\u2F10\u2F11\u2F12\u2F13"+
+        "\u2F14\u2F15\u2F16\u2F17\u2F18\u2F19\u2F1A\u2F1B"+
+        "\u2F1C\u2F1D\u2F1E\u2F1F\u2F20\u2F21\u2F22\u2F23"+
+        "\u2F24\u2F25\u2F26\u2F27\u2F28\u2F29\u2F2A\u2F2B"+
+        "\u2F2C\u2F2D\u2F2E\u2F2F\u2F30\u2F31\u2F32\u2F33"+
+        "\u2F34\u2F35\u2F36\u2F37\u2F38\u2F39\u2F3A\u2F3B"+
+        "\u2F3C\u2F3D\u2F3E\u2F3F\u2F40\u2F41\u2F42\u2F43"+
+        "\u2F44\u2F45\u2F46\u2F47\u2F48\u2F49\u2F4A\u2F4B"+
+        "\u2F4C\u2F4D\u2F4E\u2F4F\u2F50\u2F51\u2F52\u2F53"+
+        "\u2F54\u2F55\u2F56\u2F57\u2F58\u2F59\u2F5A\u2F5B"+
+        "\u2F5C\u2F5D\u2F5E\u2F5F\u2F60\u2F61\u2F62\u2F63"+
+        "\u2F64\u2F65\u2F66\u2F67\u2F68\u2F69\u2F6A\u2F6B"+
+        "\u2F6C\u2F6D\u2F6E\u2F6F\u2F70\u2F71\u2F72\u2F73"+
+        "\u2F74\u2F75\u2F76\u2F77\u2F78\u2F79\u2F7A\u2F7B"+
+        "\u2F7C\u2F7D\u2F7E\u2F7F\u2F80\u2F81\u2F82\u2F83"+
+        "\u2F84\u2F85\u2F86\u2F87\u2F88\u2F89\u2F8A\u2F8B"+
+        "\u2F8C\u2F8D\u2F8E\u2F8F\u2F90\u2F91\u2F92\u2F93"+
+        "\u2F94\u2F95\u2F96\u2F97\u2F98\u2F99\u2F9A\u2F9B"+
+        "\u2F9C\u2F9D\u2F9E\u2F9F\u2FA0\u2FA1\u2FA2\u2FA3"+
+        "\u2FA4\u2FA5\u2FA6\u2FA7\u2FA8\u2FA9\u2FAA\u2FAB"+
+        "\u2FAC\u2FAD\u2FAE\u2FAF\u2FB0\u2FB1\u2FB2\u2FB3"+
+        "\u2FB4\u2FB5\u2FB6\u2FB7\u2FB8\u2FB9\u2FBA\u2FBB"+
+        "\u2FBC\u2FBD\u2FBE\u2FBF\u2FC0\u2FC1\u2FC2\u2FC3"+
+        "\u2FC4\u2FC5\u2FC6\u2FC7\u2FC8\u2FC9\u2FCA\u2FCB"+
+        "\u2FCC\u2FCD\u2FCE\u2FCF\u2FD0\u2FD1\u2FD2\u2FD3"+
+        "\u2FD4\u2FD5\u2FD6\u2FD7\u2FD8\u2FD9\u2FDA\u2FDB"+
+        "\u2FDC\u2FDD\u2FDE\u2FDF\u2FE0\u2FE1\u2FE2\u2FE3"+
+        "\u2FE4\u2FE5\u2FE6\u2FE7\u2FE8\u2FE9\u2FEA\u2FEB"+
+        "\u2FEC\u2FED\u2FEE\u2FEF\u2FF0\u2FF1\u2FF2\u2FF3"+
+        "\u2FF4\u2FF5\u2FF6\u2FF7\u2FF8\u2FF9\u2FFA\u2FFB"+
+        "\u2FFC\u2FFD\u2FFE\u2FFF\u3000\u3001\u3002\u3003"+
+        "\u3004\u3005\u3006\u3007\u3008\u3009\u300A\u300B"+
+        "\u300C\u300D\u300E\u300F\u3010\u3011\u3012\u3013"+
+        "\u3014\u3015\u3016\u3017\u3018\u3019\u301A\u301B"+
+        "\u301C\u301D\u301E\u301F\u3020\u3021\u3022\u3023"+
+        "\u3024\u3025\u3026\u3027\u3028\u3029\u302A\u302B"+
+        "\u302C\u302D\u302E\u302F\u3030\u3031\u3032\u3033"+
+        "\u3034\u3035\u3036\u3037\u3038\u3039\u303A\u303B"+
+        "\u303C\u303D\u303E\u303F\u3040\u3041\u3042\u3043"+
+        "\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B"+
+        "\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053"+
+        "\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B"+
+        "\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063"+
+        "\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B"+
+        "\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073"+
+        "\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B"+
+        "\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083"+
+        "\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B"+
+        "\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093"+
+        "\u3094\u3095\u3096\u3097\u3098\u3099\u309A\u309B"+
+        "\u309C\u309D\u309E\u309F\u30A0\u30A1\u30A2\u30A3"+
+        "\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB"+
+        "\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3"+
+        "\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB"+
+        "\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3"+
+        "\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB"+
+        "\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3"+
+        "\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB"+
+        "\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3"+
+        "\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB"+
+        "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007"+
+        "\u2008\u2009\u200A\u200B\u200C\u200D\u200E\u200F"+
+        "\u2010\u2011\u2012\u2013\u2014\u2015\u2016\u2017"+
+        "\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F"+
+        "\u2020\u2021\u2022\u2023\u2024\u2025\u2026\u2027"+
+        "\u2028\u2029\u202A\u202B\uFD9C\u202C\u202D\u202E"+
+        "\u202F\u2030\u2031\u2032\u2033\u2034\u2035\u2036"+
+        "\u2037\u2038\u2039\u203A\u203B\u203C\u203D\u203E"+
+        "\u203F\u2040\u2041\u2042\u2043\u2044\u2045\u2046"+
+        "\u2047\u2048\u2049\u204A\u204B\u204C\u204D\u204E"+
+        "\u204F\u2050\u2051\u2052\u2053\u2054\u2055\u2056"+
+        "\u2057\u2058\u2059\u205A\u205B\u205C\u205D\u205E"+
+        "\u205F\u2060\u2061\u2062\u2063\u2064\u2065\u2066"+
+        "\u2067\u2068\u2069\u206A\u206B\u206C\u206D\u206E"+
+        "\u206F\u2070\u2071\u2072\u2073\u2074\u2075\u2076"+
+        "\u2077\uFD9D\u2078\u2079\u207A\u207B\u207C\u207D"+
+        "\u207E\u207F\u2080\u2081\u2082\u2083\u2084\u2085"+
+        "\u2086\u2087\u2088\u2089\u208A\u208B\u208C\u208D"+
+        "\u208E\u208F\u2090\u2091\u2092\uFD9E\u2093\u2094"+
+        "\u2095\u2096\u2097\u2098\u2099\u209A\u209B\u209C"+
+        "\u209D\u209E\u209F\u20A0\u20A1\u20A2\u20A3\u20A4"+
+        "\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB\u20AC"+
+        "\u20AD\u20AE\u20AF\u20B0\u20B1\u20B2\u20B3\u20B4"+
+        "\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC"+
+        "\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4"+
+        "\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC"+
+        "\u20CD\u20CE\u20CF\u20D0\u20D1\u20D2\u20D3\u20D4"+
+        "\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC"+
+        "\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3\uFD9F"+
+        "\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB"+
+        "\u20EC\uFDA0\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2"+
+        "\u20F3\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA"+
+        "\u20FB\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102"+
+        "\u2103\u2104\u2105\u2106\uFE40\uFE41\uFE42\uFE43"+
+        "\u2107\uFE44\u2108\uFE45\uFE46\u2109\u210A\u210B"+
+        "\uFE47\u210C\u210D\u210E\u210F\u2110\u2111\uFE48"+
+        "\uFE49\uFE4A\u2112\uFE4B\uFE4C\u2113\u2114\uFE4D"+
+        "\uFE4E\uFE4F\u2115\u2116\u2117\u2118\u2119\u211A"+
+        "\u211B\u211C\u211D\u211E\u211F\u2120\u2121\u2122"+
+        "\u2123\u2124\u2125\u2126\u2127\u2128\u2129\u212A"+
+        "\u212B\u212C\u212D\u212E\u212F\u2130\u2131\u2132"+
+        "\u2133\u2134\u2135\u2136\u2137\u2138\u2139\u213A"+
+        "\u213B\u213C\u213D\u213E\u213F\u2140\u2141\u2142"+
+        "\u2143\u2144\u2145\u2146\u2147\u2148\u2149\u214A"+
+        "\u214B\u214C\u214D\u214E\u214F\u2150\u2151\u2152"+
+        "\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215A"+
+        "\u215B\u215C\u215D\u215E\u215F\u2160\u2161\u2162"+
+        "\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A"+
+        "\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172"+
+        "\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A"+
+        "\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182"+
+        "\u2183\u2184\u2185\u2186\u2187\u2188\u2189\u218A"+
+        "\u218B\u218C\u218D\u218E\u218F\u2190\u2191\u2192"+
+        "\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219A"+
+        "\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2"+
+        "\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA"+
+        "\u21AB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1\u21B2"+
+        "\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9\u21BA"+
+        "\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1\u21C2"+
+        "\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9\u21CA"+
+        "\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1\u21D2"+
+        "\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9\u21DA"+
+        "\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1\u21E2"+
+        "\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9\u21EA";
+
+    private final static String innerEncoderIndex12=
+        "\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1\u21F2"+
+        "\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9\u21FA"+
+        "\u21FB\u21FC\u21FD\u21FE\u21FF\u2200\u2201\u2202"+
+        "\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220A"+
+        "\u220B\u220C\u220D\u220E\u220F\u2210\u2211\u2212"+
+        "\u2213\u2214\u2215\u2216\u2217\u2218\u2219\u221A"+
+        "\u221B\u221C\u221D\u221E\u221F\u2220\u2221\u2222"+
+        "\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222A"+
+        "\u222B\u222C\u222D\u222E\u222F\u2230\u2231\u2232"+
+        "\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223A"+
+        "\u223B\u223C\u223D\u223E\u223F\u2240\u2241\u2242"+
+        "\u2243\u2244\u2245\u2246\u2247\u2248\u2249\u224A"+
+        "\u224B\u224C\u224D\u224E\u224F\u2250\u2251\u2252"+
+        "\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A"+
+        "\u225B\u225C\u225D\u225E\u225F\u2260\u2261\u2262"+
+        "\u2263\u2264\u2265\u2266\u2267\u2268\u2269\u226A"+
+        "\u226B\u226C\u226D\u226E\u226F\u2270\u2271\u2272"+
+        "\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A"+
+        "\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282"+
+        "\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A"+
+        "\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292"+
+        "\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229A"+
+        "\u229B\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2"+
+        "\u22A3\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA"+
+        "\u22AB\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2"+
+        "\u22B3\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA"+
+        "\u22BB\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2"+
+        "\u22C3\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA"+
+        "\u22CB\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2"+
+        "\u22D3\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA"+
+        "\u22DB\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2"+
+        "\u22E3\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA"+
+        "\u22EB\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2"+
+        "\u22F3\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA"+
+        "\u22FB\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302"+
+        "\u2303\u2304\u2305\u2306\u2307\u2308\u2309\u230A"+
+        "\u230B\u230C\u230D\u230E\u230F\u2310\u2311\u2312"+
+        "\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231A"+
+        "\u231B\u231C\u231D\u231E\u231F\u2320\u2321\u2322"+
+        "\u2323\u2324\u2325\u2326\u2327\u2328\u2329\u232A"+
+        "\u232B\u232C\u232D\u232E\u232F\u2330\u2331\u2332"+
+        "\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233A"+
+        "\u233B\u233C\u233D\u233E\u233F\u2340\u2341\u2342"+
+        "\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234A"+
+        "\u234B\u234C\u234D\u234E\u234F\u2350\u2351\u2352"+
+        "\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235A"+
+        "\u235B\u235C\u235D\u235E\u235F\u2360\u2361\u2362"+
+        "\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236A"+
+        "\u236B\u236C\u236D\u236E\u236F\u2370\u2371\u2372"+
+        "\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237A"+
+        "\u237B\u237C\u237D\u237E\u237F\u2380\u2381\u2382"+
+        "\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238A"+
+        "\u238B\u238C\u238D\u238E\u238F\u2390\u2391\u2392"+
+        "\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239A"+
+        "\u239B\u239C\u239D\u239E\u239F\u23A0\u23A1\u23A2"+
+        "\u23A3\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9\u23AA"+
+        "\u23AB\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1\u23B2"+
+        "\u23B3\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9\u23BA"+
+        "\u23BB\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1\u23C2"+
+        "\u23C3\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9\u23CA"+
+        "\u23CB\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1\u23D2"+
+        "\u23D3\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9\u23DA"+
+        "\u23DB\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1\u23E2"+
+        "\u23E3\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9\u23EA"+
+        "\u23EB\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1\u23F2"+
+        "\u23F3\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9\u23FA"+
+        "\u23FB\u23FC\u23FD\u23FE\u23FF\u2400\u2401\u2402"+
+        "\u2403\u2404\u2405\u2406\u2407\u2408\u2409\u240A"+
+        "\u240B\u240C\u240D\u240E\u240F\u2410\u2411\u2412"+
+        "\u2413\u2414\u2415\u2416\u2417\u2418\u2419\u241A"+
+        "\u241B\u241C\u241D\u241E\u241F\u2420\u2421\u2422"+
+        "\u2423\u2424\u2425\u2426\u2427\u2428\u2429\u242A"+
+        "\u242B\u242C\u242D\u242E\u242F\u2430\u2431\u2432"+
+        "\u2433\u2434\u2435\u2436\u2437\u2438\u2439\u243A"+
+        "\u243B\u243C\u243D\u243E\u243F\u2440\u2441\u2442"+
+        "\u2443\u2444\u2445\u2446\u2447\u2448\u2449\u244A"+
+        "\u244B\u244C\u244D\u244E\u244F\u2450\u2451\u2452"+
+        "\u2453\u2454\u2455\u2456\u2457\u2458\u2459\u245A"+
+        "\u245B\u245C\u245D\u245E\u245F\u2460\u2461\u2462"+
+        "\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246A"+
+        "\u246B\u246C\u246D\u246E\u246F\u2470\u2471\u2472"+
+        "\u2473\u2474\u2475\u2476\u2477\u2478\u2479\u247A"+
+        "\u247B\u247C\u247D\u247E\u247F\u2480\u2481\u2482"+
+        "\u2483\u2484\u2485\u2486\u2487\u2488\u2489\u248A"+
+        "\u248B\u248C\u248D\u248E\u248F\u2490\u2491\u2492"+
+        "\u2493\u2494\u2495\u2496\u2497\u2498\u2499\u249A"+
+        "\u249B\u249C\u249D\u249E\u249F\u24A0\u24A1\u24A2"+
+        "\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9\u24AA"+
+        "\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1\u24B2"+
+        "\u24B3\u24B4\u24B5\u24B6\u24B7\u24B8\u24B9\u24BA"+
+        "\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2"+
+        "\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA"+
+        "\u24CB\u24CC\u24CD\u24CE\u24CF\u24D0\u24D1\u24D2"+
+        "\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA"+
+        "\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2"+
+        "\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u24EA"+
+        "\u24EB\u24EC\u24ED\u24EE\u24EF\u24F0\u24F1\u24F2"+
+        "\u24F3\u24F4\u24F5\u24F6\u24F7\u24F8\u24F9\u24FA"+
+        "\u24FB\u24FC\u24FD\u24FE\u24FF\u2500\u2501\u2502"+
+        "\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250A"+
+        "\u250B\u250C\u250D\u250E\u250F\u2510\u2511\u2512"+
+        "\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251A"+
+        "\uA955\uA6F2\u251B\uA6F4\uA6F5\uA6E0\uA6E1\uA6F0"+
+        "\uA6F1\uA6E2\uA6E3\uA6EE\uA6EF\uA6E6\uA6E7\uA6E4"+
+        "\uA6E5\uA6E8\uA6E9\uA6EA\uA6EB\u251C\u251D\u251E"+
+        "\u251F\uA968\uA969\uA96A\uA96B\uA96C\uA96D\uA96E"+
+        "\uA96F\uA970\uA971\u2520\uA972\uA973\uA974\uA975"+
+        "\u2521\uA976\uA977\uA978\uA979\uA97A\uA97B\uA97C"+
+        "\uA97D\uA97E\uA980\uA981\uA982\uA983\uA984\u2522"+
+        "\uA985\uA986\uA987\uA988\u2523\u2524\u2525\u2526"+
+        "\u2527\u2528\u2529\u252A\u252B\u252C\u252D\u252E"+
+        "\u252F\u2530\u2531\u2532\u2533\u2534\u2535\u2536"+
+        "\u2537\u2538\u2539\u253A\u253B\u253C\u253D\u253E"+
+        "\u253F\u2540\u2541\u2542\u2543\u2544\u2545\u2546"+
+        "\u2547\u2548\u2549\u254A\u254B\u254C\u254D\u254E"+
+        "\u254F\u2550\u2551\u2552\u2553\u2554\u2555\u2556"+
+        "\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E"+
+        "\u255F\u2560\u2561\u2562\u2563\u2564\u2565\u2566"+
+        "\u2567\u2568\u2569\u256A\u256B\u256C\u256D\u256E"+
+        "\u256F\u2570\u2571\u2572\u2573\u2574\u2575\u2576"+
+        "\u2577\u2578\u2579\u257A\u257B\u257C\u257D\u257E"+
+        "\u257F\u2580\u2581\u2582\u2583\u2584\u2585\u2586"+
+        "\u2587\u2588\u2589\u258A\u258B\u258C\u258D\u258E"+
+        "\u258F\u2590\u2591\u2592\u2593\u2594\u2595\u2596"+
+        "\u2597\u2598\u2599\u259A\u259B\u259C\u259D\u259E"+
+        "\u259F\u25A0\u25A1\u25A2\u25A3\u25A4\u25A5\u25A6"+
+        "\u25A7\u25A8\u25A9\u25AA\u25AB\u25AC\u25AD\u25AE"+
+        "\u25AF\u25B0\u25B1\u25B2\u25B3\u25B4\u25B5\u25B6"+
+        "\u25B7\uA3A1\uA3A2\uA3A3\uA1E7\uA3A5\uA3A6\uA3A7"+
+        "\uA3A8\uA3A9\uA3AA\uA3AB\uA3AC\uA3AD\uA3AE\uA3AF"+
+        "\uA3B0\uA3B1\uA3B2\uA3B3\uA3B4\uA3B5\uA3B6\uA3B7"+
+        "\uA3B8\uA3B9\uA3BA\uA3BB\uA3BC\uA3BD\uA3BE\uA3BF"+
+        "\uA3C0\uA3C1\uA3C2\uA3C3\uA3C4\uA3C5\uA3C6\uA3C7"+
+        "\uA3C8\uA3C9\uA3CA\uA3CB\uA3CC\uA3CD\uA3CE\uA3CF"+
+        "\uA3D0\uA3D1\uA3D2\uA3D3\uA3D4\uA3D5\uA3D6\uA3D7"+
+        "\uA3D8\uA3D9\uA3DA\uA3DB\uA3DC\uA3DD\uA3DE\uA3DF"+
+        "\uA3E0\uA3E1\uA3E2\uA3E3\uA3E4\uA3E5\uA3E6\uA3E7"+
+        "\uA3E8\uA3E9\uA3EA\uA3EB\uA3EC\uA3ED\uA3EE\uA3EF"+
+        "\uA3F0\uA3F1\uA3F2\uA3F3\uA3F4\uA3F5\uA3F6\uA3F7"+
+        "\uA3F8\uA3F9\uA3FA\uA3FB\uA3FC\uA3FD\uA1AB\u25B8"+
+        "\u25B9\u25BA\u25BB\u25BC\u25BD\u25BE\u25BF\u25C0"+
+        "\u25C1\u25C2\u25C3\u25C4\u25C5\u25C6\u25C7\u25C8"+
+        "\u25C9\u25CA\u25CB\u25CC\u25CD\u25CE\u25CF\u25D0"+
+        "\u25D1\u25D2\u25D3\u25D4\u25D5\u25D6\u25D7\u25D8"+
+        "\u25D9\u25DA\u25DB\u25DC\u25DD\u25DE\u25DF\u25E0"+
+        "\u25E1\u25E2\u25E3\u25E4\u25E5\u25E6\u25E7\u25E8"+
+        "\u25E9\u25EA\u25EB\u25EC\u25ED\u25EE\u25EF\u25F0"+
+        "\u25F1\u25F2\u25F3\u25F4\u25F5\u25F6\u25F7\u25F8"+
+        "\u25F9\u25FA\u25FB\u25FC\u25FD\u25FE\u25FF\u2600"+
+        "\u2601\u2602\u2603\u2604\u2605\u2606\u2607\u2608"+
+        "\u2609\u260A\u260B\u260C\u260D\u260E\u260F\u2610"+
+        "\u2611\u2612\u2613\u2614\u2615\u2616\u2617\u2618"+
+        "\u2619\u261A\u261B\u261C\u261D\u261E\u261F\u2620"+
+        "\u2621\u2622\u2623\u2624\u2625\u2626\u2627\u2628"+
+        "\u2629\u262A\u262B\u262C\u262D\u262E\u262F\u2630"+
+        "\u2631\u2632\u2633\u2634\u2635\u2636\u2637\u2638"+
+        "\uA1E9\uA1EA\uA956\uA3FE\uA957\uA3A4\u2639\u263A"+
+        "\u263B\u263C\u263D\u263E\u263F\u2640\u2641\u2642"+
+        "\u2643\u2644\u2645\u2646\u2647\u2648\u2649\u264A"+
+        "\u264B\u264C\u264D\u264E\u264F\u2650\u2651\u2652";
+
+    private final static short encoderIndex1[] = {
+        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+        96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+        112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+        128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+        144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+        160, 161, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+        181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196
+    };
+
+    static String encoderIndex2[] = {
+        innerEncoderIndex0,
+        innerEncoderIndex1,
+        innerEncoderIndex2,
+        innerEncoderIndex3,
+        innerEncoderIndex4,
+        innerEncoderIndex5,
+        innerEncoderIndex6,
+        innerEncoderIndex7,
+        innerEncoderIndex8,
+        innerEncoderIndex9,
+        innerEncoderIndex10,
+        innerEncoderIndex11,
+        innerEncoderIndex12
+    };
+    private static class Decoder extends CharsetDecoder {
+
+        private static final char REPLACE_CHAR = '\uFFFD';
+        private int currentState = GB18030_DOUBLE_BYTE;
+
+        private Decoder(Charset cs) {
+            super(cs, 1.0f, 2.0f);
+        }
+
+        private char getChar(int offset) {
+            int byte1 = (offset >>8) & 0xFF;
+            int byte2 = (offset & 0xFF);
+            int start = 0, end = 0xFF;
+
+            if (((byte1 < 0) || (byte1 > decoderIndex1.length))
+                 || ((byte2 < start) || (byte2 > end))) {
+                       return REPLACE_CHAR;
+            }
+
+            int n = (decoderIndex1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
+            return decoderIndex2[decoderIndex1[byte1] >> 4].charAt(n);
+        }
+
+        protected char decodeDouble(int byte1, int byte2) {
+            int start = 0x40, end = 0xFE;
+            if (((byte1 < 0) || (byte1 > index1.length))
+                || ((byte2 < start) || (byte2 > end)))
+                return '\uFFFD';
+
+            int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
+            return index2[index1[byte1] >> 4].charAt(n);
+        }
+
+        protected void implReset() {
+            currentState = GB18030_DOUBLE_BYTE;
+        }
+
+        private CoderResult decodeArrayLoop(ByteBuffer src,
+                                            CharBuffer dst)
+        {
+            byte[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+            assert (sp <= sl);
+            sp = (sp <= sl ? sp : sl);
+
+            char[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+            assert (dp <= dl);
+            dp = (dp <= dl ? dp : dl);
+
+            int inputSize = 1;
+
+            try {
+                while (sp < sl) {
+                    int byte1 = 0 , byte2 = 0, byte3 = 0, byte4 = 0;
+                    // Get the input byte
+                    byte1 = sa[sp] & 0xFF;
+                    inputSize = 1;
+
+                    if ((byte1 & (byte)0x80) == 0){ // US-ASCII range
+                        currentState = GB18030_SINGLE_BYTE;
+                    }
+                    else if (byte1 < 0x81 || byte1 > 0xfe) {
+                        return CoderResult.malformedForLength(1);
+                    }
+                    else { // Either 2 or 4 byte sequence follows
+                        if ( sl - sp < 2 )
+                            return CoderResult.UNDERFLOW;
+                        byte2 = sa[sp + 1] & 0xFF;
+                        inputSize = 2;
+
+                        if (byte2 < 0x30)
+                                return CoderResult.malformedForLength(1);
+                        else if (byte2 >= 0x30 && byte2 <= 0x39) {
+                            currentState = GB18030_FOUR_BYTE;
+
+                            if (sl - sp < 4)
+                                return CoderResult.UNDERFLOW;
+
+                            byte3 = sa[sp + 2] & 0xFF;
+                            if (byte3 < 0x81 || byte3 > 0xfe)
+                                return CoderResult.malformedForLength(3);
+
+                            byte4 = sa[sp + 3] & 0xFF;
+                            inputSize = 4;
+
+                            if (byte4 < 0x30 || byte4 > 0x39)
+                                return CoderResult.malformedForLength(4);
+                        }
+                        else if (byte2 == 0x7f || byte2 == 0xff ||
+                                (byte2 < 0x40 )) {
+                           return CoderResult.malformedForLength(2);
+                        }
+                        else
+                            currentState = GB18030_DOUBLE_BYTE;
+                    }
+
+                    if (dl - dp < 1)
+                        return CoderResult.OVERFLOW;
+                    switch (currentState){
+                        case GB18030_SINGLE_BYTE:
+                            da[dp++] = (char)byte1;
+                            break;
+                        case GB18030_DOUBLE_BYTE:
+                            da[dp++] = decodeDouble(byte1, byte2);
+                            break;
+                        case GB18030_FOUR_BYTE:
+                            int offset = (((byte1 - 0x81) * 10 +
+                                           (byte2 - 0x30)) * 126 +
+                                            byte3 - 0x81) * 10 + byte4 - 0x30;
+                            int hiByte = (offset >>8) & 0xFF;
+                            int lowByte = (offset & 0xFF);
+
+                        // Mixture of table lookups and algorithmic calculation
+                        // of character values.
+
+                        // BMP Ranges
+                        if (offset <= 0x4A62)
+                            da[dp++] = getChar(offset);
+                        else if (offset > 0x4A62 && offset <= 0x82BC)
+                            da[dp++] = (char)(offset + 0x5543);
+                        else if (offset >= 0x82BD && offset <= 0x830D)
+                            da[dp++] = getChar(offset);
+                        else if (offset >= 0x830D && offset <= 0x93A8)
+                            da[dp++] = (char)(offset + 0x6557);
+                        else if (offset >= 0x93A9 && offset <= 0x99FB)
+                            da[dp++] = getChar(offset);
+                        // Supplemental UCS planes handled via surrogates
+                        else if (offset >= 0x2E248 && offset < 0x12E248) {
+                            if (offset >= 0x12E248)
+                                return CoderResult.malformedForLength(4);
+                            offset -= 0x1e248;
+                            if ( dl - dp < 2)
+                                return CoderResult.OVERFLOW;
+                            // emit high + low surrogate
+                            da[dp++] = (char)((offset - 0x10000) / 0x400 + 0xD800);
+                            da[dp++] = (char)((offset - 0x10000) % 0x400 + 0xDC00);
+                        }
+                        else
+                            return CoderResult.malformedForLength(inputSize);
+                        break;
+                      }
+                      sp += inputSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        private CoderResult decodeBufferLoop(ByteBuffer src,
+                                            CharBuffer dst)
+        {
+            int mark = src.position();
+
+            try {
+                while (src.hasRemaining()) {
+                    int byte1 = 0, byte2 = 0, byte3 = 0, byte4 = 0;
+                    byte1 = src.get() & 0xFF;
+                    int inputSize = 1;
+
+                    if ((byte1 & (byte)0x80) == 0){ // US-ASCII range
+                        currentState = GB18030_SINGLE_BYTE;
+                    }
+                    else if (byte1 < 0x81 || byte1 > 0xfe) {
+                        return CoderResult.malformedForLength(1);
+                    }
+                    else { // Either 2 or 4 byte sequence follows
+                        if ( src.remaining() < 1 )
+                            return CoderResult.UNDERFLOW;
+                        byte2 = src.get() & 0xFF;
+                        inputSize = 2;
+
+                        if (byte2 < 0x30)
+                                return CoderResult.malformedForLength(1);
+                        else if (byte2 >= 0x30 && byte2 <= 0x39) {
+                            currentState = GB18030_FOUR_BYTE;
+
+                            if (src.remaining() < 2)
+                                return CoderResult.UNDERFLOW;
+
+                            byte3 = src.get() & 0xFF;
+                            if (byte3 < 0x81 || byte3 > 0xfe)
+                                return CoderResult.malformedForLength(3);
+
+                            byte4 = src.get() & 0xFF;
+                            inputSize = 4;
+
+                            if (byte4 < 0x30 || byte4 > 0x39)
+                                return CoderResult.malformedForLength(4);
+                        }
+                        else if (byte2 == 0x7f || byte2 == 0xff ||
+                                (byte2 < 0x40 )) {
+                           return CoderResult.malformedForLength(2);
+                        }
+                        else
+                            currentState = GB18030_DOUBLE_BYTE;
+                    }
+
+                    if (dst.remaining() < 1)
+                        return CoderResult.OVERFLOW;
+                    switch (currentState){
+                        case GB18030_SINGLE_BYTE:
+                            dst.put((char)byte1);
+                            break;
+                        case GB18030_DOUBLE_BYTE:
+                            dst.put(decodeDouble(byte1, byte2));
+                            break;
+                        case GB18030_FOUR_BYTE:
+                            int offset = (((byte1 - 0x81) * 10 +
+                                           (byte2 - 0x30)) * 126 +
+                                            byte3 - 0x81) * 10 + byte4 - 0x30;
+                            int hiByte = (offset >>8) & 0xFF;
+                            int lowByte = (offset & 0xFF);
+
+                        // Mixture of table lookups and algorithmic calculation
+                        // of character values.
+
+                        // BMP Ranges
+                        if (offset <= 0x4A62)
+                            dst.put(getChar(offset));
+                        else if (offset > 0x4A62 && offset <= 0x82BC)
+                            dst.put((char)(offset + 0x5543));
+                        else if (offset >= 0x82BD && offset <= 0x830D)
+                            dst.put(getChar(offset));
+                        else if (offset >= 0x830D && offset <= 0x93A8)
+                            dst.put((char)(offset + 0x6557));
+                        else if (offset >= 0x93A9 && offset <= 0x99F9)
+                            dst.put(getChar(offset));
+                        // Supplemental UCS planes handled via surrogates
+                        else if (offset >= 0x2E248 && offset < 0x12E248) {
+                            if (offset >= 0x12E248)
+                                return CoderResult.malformedForLength(4);
+                            offset -= 0x1e248;
+                            if ( dst.remaining() < 2)
+                                return CoderResult.OVERFLOW;
+                            // emit high + low surrogate
+                            dst.put((char)((offset - 0x10000) / 0x400 + 0xD800));
+                            dst.put((char)((offset - 0x10000) % 0x400 + 0xDC00));
+                        } else {
+                            return CoderResult.malformedForLength(inputSize);
+                        }
+                    }
+                    mark += inputSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+
+        protected CoderResult decodeLoop(ByteBuffer src,
+                                         CharBuffer dst)
+        {
+            if (src.hasArray() && dst.hasArray())
+                return decodeArrayLoop(src, dst);
+            else
+                return decodeBufferLoop(src, dst);
+        }
+    }
+
+    private static class Encoder extends CharsetEncoder {
+
+        private int currentState = GB18030_DOUBLE_BYTE;
+
+        private Encoder(Charset cs) {
+            super(cs, 4.0f, 4.0f); // max of 4 bytes per char
+        }
+
+        public boolean canEncode(char c) {
+            return ! Character.isSurrogate(c);
+        }
+
+        private final Surrogate.Parser sgp = new Surrogate.Parser();
+
+        private int getGB18030(short[] outerIndex, String[] innerEncoderIndex,
+                               char ch) {
+            int offset = outerIndex[((ch & 0xff00) >> 8 )] << 8;
+            return innerEncoderIndex[offset >> 12].charAt((offset & 0xfff) +
+                        (ch & 0xff));
+        }
+
+        protected void implReset() {
+            currentState = GB18030_DOUBLE_BYTE;
+        }
+
+        private CoderResult encodeArrayLoop(CharBuffer src,
+                                            ByteBuffer dst)
+        {
+            char[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+            assert (sp <= sl);
+            sp = (sp <= sl ? sp : sl);
+            byte[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+            assert (dp <= dl);
+            dp = (dp <= dl ? dp : dl);
+
+            int condensedKey = 0;  // expands to a four byte sequence
+            int hiByte = 0, loByte = 0;
+            currentState = GB18030_DOUBLE_BYTE;
+
+            try {
+                while (sp < sl) {
+                    int inputSize = 1;
+                    char c = sa[sp];
+
+                    if (Character.isSurrogate(c)) {
+                        if ((condensedKey=sgp.parse(c, sa, sp, sl)) < 0)
+                            return sgp.error();
+                        // Character.toCodePoint looks like
+                        // (((high & 0x3ff) << 10) | (low & 0x3ff)) + 0x10000;
+                        // so we add (0x2e248 - 0x10000) to get the "key".
+                        condensedKey += 0x1E248;
+                        currentState = GB18030_FOUR_BYTE;
+                        inputSize = sgp.increment();
+                    }
+                    else if (c >= 0x0000 && c <= 0x007F) {
+                        currentState = GB18030_SINGLE_BYTE;
+                    }
+                    else if (c <= 0xA4C6 || c >= 0xE000) {
+                        int outByteVal = getGB18030(encoderIndex1,
+                                                    encoderIndex2,
+                                                    c);
+                        if (outByteVal == 0xFFFD )
+                                return CoderResult.unmappableForLength(1);
+
+                        hiByte = (outByteVal & 0xFF00) >> 8;
+                        loByte = (outByteVal & 0xFF);
+
+                        condensedKey = (hiByte - 0x20) * 256 + loByte;
+
+                        if (c >= 0xE000 && c < 0xF900)
+                                condensedKey += 0x82BD;
+                        else if (c >= 0xF900)
+                                condensedKey += 0x93A9;
+
+                        if (hiByte > 0x80)
+                             currentState = GB18030_DOUBLE_BYTE;
+                        else
+                             currentState = GB18030_FOUR_BYTE;
+                    }
+                    else if (c >= 0xA4C7 && c <= 0xD7FF) {
+                        condensedKey = c - 0x5543;
+                        currentState = GB18030_FOUR_BYTE;
+                    }
+
+                    switch(currentState) {
+                        case GB18030_SINGLE_BYTE:
+                            if (dl - dp < 1)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)c;
+                            break;
+
+                        case GB18030_DOUBLE_BYTE:
+                            if (dl - dp < 2)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)hiByte;
+                            da[dp++] = (byte)loByte;
+                            break;
+
+                        case GB18030_FOUR_BYTE: // Four Byte encoding
+                            byte b1, b2, b3, b4;
+
+                            if (dl - dp < 4)
+                                return CoderResult.OVERFLOW;
+                            // Decompose the condensed key into its 4 byte equivalent
+                            b4 = (byte)((condensedKey % 10) + 0x30);
+                            condensedKey /= 10;
+                            b3 = (byte)((condensedKey % 126) + 0x81);
+                            condensedKey /= 126;
+                            b2 = (byte)((condensedKey % 10) + 0x30);
+                            b1 = (byte)((condensedKey / 10) + 0x81);
+                            da[dp++] = b1;
+                            da[dp++] = b2;
+                            da[dp++] = b3;
+                            da[dp++] = b4;
+                            break;
+                        default:
+                            assert(false);
+                        }
+                    sp += inputSize;
+                }
+            return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        private CoderResult encodeBufferLoop(CharBuffer src,
+                                             ByteBuffer dst)
+        {
+            int condensedKey = 0;
+            int hiByte = 0, loByte = 0;
+            currentState = GB18030_DOUBLE_BYTE;
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    char c = src.get();
+                    int inputSize = 1;
+                    if (Character.isSurrogate(c)) {
+                        if ((condensedKey = sgp.parse(c, src))<0)
+                           return sgp.error();
+                        condensedKey += 0x1e248;
+                        currentState = GB18030_FOUR_BYTE;
+                        inputSize = 2;
+                    }
+                    else if (c >= 0x0000 && c <= 0x007F) {
+                        currentState = GB18030_SINGLE_BYTE;
+                    }
+                    else if (c <= 0xA4C6 || c >= 0xE000) {
+                        int outByteVal = getGB18030(encoderIndex1,
+                                                    encoderIndex2,
+                                                    c);
+                        if (outByteVal == 0xFFFD )
+                            return CoderResult.unmappableForLength(1);
+
+                        hiByte = (outByteVal & 0xFF00) >> 8;
+                        loByte = (outByteVal & 0xFF);
+
+                        condensedKey = (hiByte - 0x20) * 256 + loByte;
+
+                        if (c >= 0xE000 && c < 0xF900)
+                                condensedKey += 0x82BD;
+                        else if (c >= 0xF900)
+                                condensedKey += 0x93A9;
+
+                        if (hiByte > 0x80)
+                             currentState = GB18030_DOUBLE_BYTE;
+                        else
+                             currentState = GB18030_FOUR_BYTE;
+                    }
+                    else if (c >= 0xA4C7 && c <= 0xD7FF) {
+                        condensedKey = c - 0x5543;
+                        currentState = GB18030_FOUR_BYTE;
+                    }
+
+                    if (currentState == GB18030_SINGLE_BYTE) {
+                        if (dst.remaining() < 1)
+                            return CoderResult.OVERFLOW;
+                        dst.put((byte)c);
+                    } else if (currentState == GB18030_DOUBLE_BYTE) {
+                        if (dst.remaining() < 2)
+                            return CoderResult.OVERFLOW;
+                        dst.put((byte)hiByte);
+                        dst.put((byte)loByte);
+                    }
+                    else { // Four Byte encoding
+                        byte b1, b2, b3, b4;
+
+                        if (dst.remaining() < 4)
+                            return CoderResult.OVERFLOW;
+                        // Decompose the condensed key into its 4 byte equivalent
+                        b4 = (byte)((condensedKey % 10) + 0x30);
+                        condensedKey /= 10;
+                        b3 = (byte)((condensedKey % 126) + 0x81);
+                        condensedKey /= 126;
+                        b2 = (byte)((condensedKey % 10) + 0x30);
+                        b1 = (byte)((condensedKey / 10) + 0x81);
+                        dst.put(b1);
+                        dst.put(b2);
+                        dst.put(b3);
+                        dst.put(b4);
+                    }
+                    mark += inputSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+        protected CoderResult encodeLoop(CharBuffer src,
+                                         ByteBuffer dst)
+        {
+            if (src.hasArray() && dst.hasArray())
+                return encodeArrayLoop(src, dst);
+            else
+                return encodeBufferLoop(src, dst);
+        }
+    }
+}
--- a/jdk/src/jdk.crypto.pkcs11/share/classes/sun/security/pkcs11/wrapper/CK_CREATEMUTEX.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/src/jdk.crypto.pkcs11/share/classes/sun/security/pkcs11/wrapper/CK_CREATEMUTEX.java	Mon Aug 03 16:33:06 2015 -0700
@@ -50,17 +50,16 @@
 
 
 /**
- * interface CK_CREATEMUTEX.<p>
+ * interface CK_CREATEMUTEX.
  *
- * @author Karl Scheibelhofer <Karl.Scheibelhofer@iaik.at>
- * @author Martin Schlaeffer <schlaeff@sbox.tugraz.at>
+ * @author Karl Scheibelhofer &lt;Karl.Scheibelhofer@iaik.at&gt;
+ * @author Martin Schlaeffer &lt;schlaeff@sbox.tugraz.at&gt;
  */
 public interface CK_CREATEMUTEX {
 
     /**
      * Method CK_CREATEMUTEX
      *
-     * @param ppMutex
      * @return The mutex (lock) object.
      * @exception PKCS11Exception
      */
--- a/jdk/test/TEST.groups	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/TEST.groups	Mon Aug 03 16:33:06 2015 -0700
@@ -43,7 +43,8 @@
 
 tier3 = \
     :jdk_rmi \
-    :jdk_beans
+    :jdk_beans \
+    :jdk_imageio
 
 ###############################################################################
 #
--- a/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/CheckOrigin.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/CheckOrigin.java	Mon Aug 03 16:33:06 2015 -0700
@@ -63,13 +63,18 @@
                 createJavaProcessBuilder(
                     "-XX:+UseConcMarkSweepGC",  // this will cause UseParNewGC to be FLAG_SET_ERGO
                     "-XX:+PrintGCDetails",
+                    "-XX:+UseCerealGC",         // Should be ignored.
                     "-XX:Flags=" + flagsFile.getAbsolutePath(),
                     "-cp", System.getProperty("test.class.path"),
                     "CheckOrigin",
                     "-runtests");
 
             Map<String, String> env = pb.environment();
-            env.put("_JAVA_OPTIONS", "-XX:+PrintOopAddress");
+            // "UseCMSGC" should be ignored.
+            env.put("_JAVA_OPTIONS", "-XX:+TraceExceptions -XX:+UseCMSGC");
+            // "UseGOneGC" should be ignored.
+            env.put("JAVA_TOOL_OPTIONS", "-XX:+IgnoreUnrecognizedVMOptions "
+                + "-XX:+PrintVMOptions -XX:+UseGOneGC");
 
             pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
             pb.redirectError(ProcessBuilder.Redirect.INHERIT);
@@ -94,7 +99,10 @@
             // Set on the command line
             checkOrigin("PrintGCDetails", Origin.VM_CREATION);
             // Set in _JAVA_OPTIONS
-            checkOrigin("PrintOopAddress", Origin.ENVIRON_VAR);
+            checkOrigin("TraceExceptions", Origin.ENVIRON_VAR);
+            // Set in JAVA_TOOL_OPTIONS
+            checkOrigin("IgnoreUnrecognizedVMOptions", Origin.ENVIRON_VAR);
+            checkOrigin("PrintVMOptions", Origin.ENVIRON_VAR);
             // Set in -XX:Flags file
             checkOrigin("PrintSafepointStatistics", Origin.CONFIG_FILE);
             // Set through j.l.m
--- a/jdk/test/java/nio/Buffer/Basic.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/java/nio/Buffer/Basic.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
  * @summary Unit test for buffers
  * @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725
  *      4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529
- *      6221101 6234263 6535542 6591971 6593946 6795561 7190219 7199551
+ *      6221101 6234263 6535542 6591971 6593946 6795561 7190219 7199551 8065556
  * @author Mark Reinhold
  */
 
--- a/jdk/test/java/nio/file/FileStore/Basic.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/java/nio/file/FileStore/Basic.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -116,9 +116,15 @@
                 store.type());
 
             // check space attributes are accessible
-            store.getTotalSpace();
-            store.getUnallocatedSpace();
-            store.getUsableSpace();
+            try {
+                store.getTotalSpace();
+                store.getUnallocatedSpace();
+                store.getUsableSpace();
+            } catch (NoSuchFileException nsfe) {
+                // ignore exception as the store could have been
+                // deleted since the iterator was instantiated
+                System.err.format("%s was not found\n", store);
+            }
 
             // two distinct FileStores should not be equal
             assertTrue(!store.equals(prev));
--- a/jdk/test/java/security/KeyStore/EntryMethods.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/java/security/KeyStore/EntryMethods.java	Mon Aug 03 16:33:06 2015 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test 1.5, 03/06/24
- * @bug 4850376
+ * @bug 4850376 8130850
  * @summary Provide generic storage KeyStore storage facilities
  */
 
@@ -50,6 +50,20 @@
         }
     }
 
+    public static class MyLoadStoreParameter
+        implements KeyStore.LoadStoreParameter {
+
+        private KeyStore.ProtectionParameter protection;
+
+        MyLoadStoreParameter(KeyStore.ProtectionParameter protection) {
+            this.protection = protection;
+        }
+
+        public KeyStore.ProtectionParameter getProtectionParameter() {
+            return protection;
+        }
+    }
+
     public static class FooEntry implements KeyStore.Entry { }
 
     public EntryMethods() throws Exception {
@@ -103,9 +117,17 @@
             throw new SecurityException("[Pre1.5] test " + tNum + " failed");
         } catch (UnsupportedOperationException uoe) {
             System.out.println("[Pre1.5] test " + tNum++ + " passed");
+        } catch (NoSuchAlgorithmException nsae) {
+            System.out.println("[Pre1.5] test " + tNum++ + " passed");
         }
 
 
+        // TEST load custom param
+        ks.load(new MyLoadStoreParameter(
+            new KeyStore.PasswordProtection(password)));
+        System.out.println("[Pre1.5] test " + tNum++ + " passed");
+
+
         // TEST store random param
         ks.load(pre15fis, password);
 
--- a/jdk/test/java/util/Currency/tablea1.txt	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/java/util/Currency/tablea1.txt	Mon Aug 03 16:33:06 2015 -0700
@@ -1,12 +1,12 @@
 #
 #
-# Amendments up until ISO 4217 AMENDMENT NUMBER 159
-#   (As of 15 August 2014)
+# Amendments up until ISO 4217 AMENDMENT NUMBER 160
+#   (As of 19 June 2015)
 #
 
 # Version
 FILEVERSION=2
-DATAVERSION=159
+DATAVERSION=160
 
 # ISO 4217 currency data
 AF	AFN	971	2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/ResourceBundle/UTF8Properties/CodePointTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8027607
+ * @summary Test UTF-8 based properties files can be loaded successfully,
+ * @run main CodePointTest
+ * @run main/othervm -Djava.util.PropertyResourceBundle.encoding=ISO-8859-1 CodePointTest
+ * @run main/othervm -Djava.util.PropertyResourceBundle.encoding=UTF-8 CodePointTest
+ */
+
+import java.io.*;
+import java.nio.charset.*;
+import java.nio.file.*;
+import java.util.*;
+import static java.util.ResourceBundle.Control;
+import java.util.stream.*;
+
+/*
+ * Dumps every legal characters in ISO-8859-1/UTF-8 into
+ * a <CharSet>.properties file. Each entry has a form of
+ * "keyXXXX=c", where "XXXX" is a code point (variable length)
+ * and "c" is the character encoded in the passed character set.
+ * Then, load it with ResourceBundle.Control.newBundle() and compare both
+ * contents. This confirms the following two functions:
+ *  - For UTF-8.properties, UTF-8 code points are loaded correctly
+ *  - For ISO-8859-1.properties, UTF-8->ISO-8859-1 fallback works
+ *
+ * Does the same test with "java.util.PropertyResourceBundle.encoding"
+ * to "ISO-8859-1", and confirms only UTF-8 properties loading fails.
+ */
+public class CodePointTest {
+    static final Charset[] props = {StandardCharsets.ISO_8859_1,
+                                    StandardCharsets.UTF_8,
+                                    StandardCharsets.US_ASCII};
+    static final String encoding =
+        System.getProperty("java.util.PropertyResourceBundle.encoding", "");
+
+    public static void main(String[] args) {
+        for (Charset cs : props) {
+            try {
+                checkProps(cs,
+                    cs == StandardCharsets.UTF_8 &&
+                    encoding.equals("ISO-8859-1"));
+
+                if (cs == StandardCharsets.ISO_8859_1 &&
+                    encoding.equals("UTF-8")) {
+                    // should not happen
+                    throw new RuntimeException("Reading ISO-8859-1 properties in "+
+                        "strict UTF-8 encoding should throw an exception");
+                }
+            } catch (IOException e) {
+                if ((e instanceof MalformedInputException ||
+                     e instanceof UnmappableCharacterException) &&
+                    cs == StandardCharsets.ISO_8859_1 &&
+                    encoding.equals("UTF-8")) {
+                    // Expected exception is correctly detected.
+                } else {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+
+    static void checkProps(Charset cs, boolean shouldFail) throws IOException {
+        int start = Character.MIN_CODE_POINT;
+        int end= 0;
+
+        switch (cs.name()) {
+        case "ISO-8859-1":
+            end = 0xff;
+            break;
+        case "UTF-8":
+            end = Character.MAX_CODE_POINT;
+            break;
+        case "US-ASCII":
+            end = 0x7f;
+            break;
+        default:
+            assert false;
+        }
+
+        Properties p = new Properties();
+        String outputName = cs.name() + ".properties";
+
+        // Forget previous test artifacts
+        ResourceBundle.clearCache();
+
+        IntStream.range(start, end+1).forEach(c ->
+            {
+                if (Character.isDefined(c) &&
+                    (Character.isSupplementaryCodePoint(c) ||
+                     !Character.isSurrogate((char)c))) {
+                    p.setProperty("key"+Integer.toHexString(c),
+                        Character.isSupplementaryCodePoint(c) ?
+                            String.valueOf(Character.toChars(c)) :
+                            Character.toString((char)c));
+                }
+            }
+        );
+
+        try (BufferedWriter bw = Files.newBufferedWriter(
+                 FileSystems.getDefault().getPath(System.getProperty("test.classes", "."),
+                 outputName), cs)) {
+            p.store(bw, null);
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
+        }
+
+        // try loading it
+        Control c = Control.getControl(Control.FORMAT_PROPERTIES);
+        ResourceBundle rb;
+        try {
+            rb = c.newBundle(cs.name(), Locale.ROOT, "java.properties",
+                        CodePointTest.class.getClassLoader(), false);
+        } catch (IllegalAccessException |
+                 InstantiationException ex) {
+            throw new RuntimeException(ex);
+        }
+        Properties result = new Properties();
+        rb.keySet().stream().forEach((key) -> {
+            result.setProperty(key, rb.getString(key));
+        });
+
+        if (!p.equals(result) && !shouldFail) {
+            System.out.println("Charset: "+cs);
+            rb.keySet().stream().sorted().forEach((key) -> {
+                if (!p.getProperty(key).equals(result.getProperty(key))) {
+                    System.out.println(key+": file: "+p.getProperty(key)+", RB: "+result.getProperty(key));
+                }
+            });
+            throw new RuntimeException("not equal!");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/ResourceBundle/UTF8Properties/IllegalSequenceTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8027607
+ * @summary Test whether illegal UTF-8 sequences are handled correctly.
+ * @run main/othervm -Djava.util.PropertyResourceBundle.encoding=UTF-8 IllegalSequenceTest
+ */
+
+import java.io.*;
+import java.nio.charset.*;
+import java.util.*;
+
+public class IllegalSequenceTest {
+    static final byte[][] illegalSequences = {
+        {(byte)0xc0, (byte)0xaf}, // non-shortest UTF-8
+        {(byte)0xc2, (byte)0xe0}, // consecutive leading bytes
+        {(byte)0xc2, (byte)0x80, (byte)0x80}, // two byte leading + 2 trailing
+        {(byte)0xe0, (byte)0x80}, // three byte leading + 1 trailing
+        {(byte)0xf4, (byte)0x90, (byte)0x80, (byte)0x80}, // 0x110000 (over U+10FFFF)
+    };
+
+    public static void main(String[] args) throws IOException {
+        for (byte[] illegalSec: illegalSequences) {
+            try (InputStream is = new ByteArrayInputStream(illegalSec)) {
+                ResourceBundle rb = new PropertyResourceBundle(is);
+                rb.getString("key");
+            } catch (MalformedInputException |
+                    UnmappableCharacterException e) {
+                // success
+                continue;
+            }
+            throw new RuntimeException("Excepted exception was not thrown.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Scanner/ScanTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,1502 @@
+/*
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 4313885 4926319 4927634 5032610 5032622 5049968 5059533 6223711 6277261 6269946 6288823
+ * @summary Basic tests of java.util.Scanner methods
+ * @key randomness
+ * @run main/othervm ScanTest
+ */
+
+import java.util.*;
+import java.text.*;
+import java.io.*;
+import java.nio.*;
+import java.util.regex.*;
+import java.math.*;
+
+public class ScanTest {
+
+    private static boolean failure = false;
+    private static int failCount = 0;
+    private static int NUM_SOURCE_TYPES = 2;
+
+    public static void main(String[] args) throws Exception {
+        Locale reservedLocale = Locale.getDefault();
+        String lang = reservedLocale.getLanguage();
+        try {
+            if (!"en".equals(lang) &&
+                !"zh".equals(lang) &&
+                !"ko".equals(lang) &&
+                !"ja".equals(lang)) {
+                //Before we have resource to improve the test to be ready for
+                //arbitrary locale, force the default locale to be "English"
+                //for now.
+                Locale.setDefault(Locale.ENGLISH);
+            }
+            skipTest();
+            findInLineTest();
+            findWithinHorizonTest();
+            findInEmptyLineTest();
+            removeTest();
+            fromFileTest();
+            ioExceptionTest();
+            matchTest();
+            delimiterTest();
+            useLocaleTest();
+            closeTest();
+            cacheTest();
+            cacheTest2();
+            nonASCIITest();
+            resetTest();
+
+            for (int j=0; j<NUM_SOURCE_TYPES; j++) {
+                hasNextTest(j);
+                nextTest(j);
+                hasNextPatternTest(j);
+                nextPatternTest(j);
+                booleanTest(j);
+                byteTest(j);
+                shortTest(j);
+                intTest(j);
+                longTest(j);
+                floatTest(j);
+                doubleTest(j);
+                integerPatternTest(j);
+                floatPatternTest(j);
+                bigIntegerPatternTest(j);
+                bigDecimalPatternTest(j);
+                hasNextLineTest(j);
+                nextLineTest(j);
+                singleDelimTest(j);
+            }
+
+            // Examples
+            //example1();
+            //example2();
+            //example3();
+
+            // Usage cases
+            useCase1();
+            useCase2();
+            useCase3();
+            useCase4();
+            useCase5();
+
+            if (failure)
+                throw new RuntimeException("Failure in the scanning tests.");
+            else
+                System.err.println("OKAY: All tests passed.");
+        } finally {
+            // restore the default locale
+            Locale.setDefault(reservedLocale);
+        }
+    }
+
+    public static void useCase1() throws Exception {
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        Scanner sc = new Scanner(f);
+        sc.findWithinHorizon("usage case 1", 0);
+        String[] names = new String[4];
+        for (int i=0; i<4; i++) {
+            while(sc.hasNextFloat())
+                sc.nextFloat();
+            names[i] = sc.next();
+            sc.nextLine();
+        }
+        if (!names[0].equals("Frank"))
+            failCount++;
+        if (!names[1].equals("Joe"))
+            failCount++;
+        if (!names[2].equals("Mary"))
+            failCount++;
+        if (!names[3].equals("Michelle"))
+            failCount++;
+        sc.close();
+        report("Use case 1");
+    }
+
+    public static void useCase2() throws Exception {
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        Scanner sc = new Scanner(f).useDelimiter("-");
+        String testDataTag = sc.findWithinHorizon("usage case 2\n", 0);
+        if (!testDataTag.equals("usage case 2\n"))
+            failCount++;
+        if (!sc.next().equals("cat"))
+            failCount++;
+        if (sc.nextInt() != 9)
+            failCount++;
+        if (!sc.next().equals("dog"))
+            failCount++;
+        if (sc.nextInt() != 6)
+            failCount++;
+        if (!sc.next().equals("pig"))
+            failCount++;
+        if (sc.nextInt() != 2)
+            failCount++;
+        if (!sc.next().equals(""))
+            failCount++;
+        if (sc.nextInt() != 5)
+            failCount++;
+        sc.close();
+        report("Use case 2");
+    }
+
+    public static void useCase3() throws Exception {
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        Scanner sc = new Scanner(f);
+        String testDataTag = sc.findWithinHorizon("usage case 3\n", 0);
+        if (!testDataTag.equals("usage case 3\n"))
+            failCount++;
+        Pattern tagPattern = Pattern.compile("@[a-z]+");
+        Pattern endPattern = Pattern.compile("\\*\\/");
+        String tag;
+        String end = sc.findInLine(endPattern);
+
+        while (end == null) {
+            if ((tag = sc.findInLine(tagPattern)) != null) {
+                String text = sc.nextLine();
+                text = text.substring(0, text.length() - 1);
+                //System.out.println(text);
+            } else {
+                sc.nextLine();
+            }
+            end = sc.findInLine(endPattern);
+        }
+        report("Use case 3");
+    }
+
+    public static void useCase4() throws Exception {
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        Scanner sc = new Scanner(f);
+        String testDataTag = sc.findWithinHorizon("usage case 4\n", 0);
+        if (!testDataTag.equals("usage case 4\n"))
+            failCount++;
+
+        // Read some text parts of four hrefs
+        String[] expected = { "Diffs", "Sdiffs", "Old", "New" };
+        for (int i=0; i<4; i++) {
+            sc.findWithinHorizon("<a href", 1000);
+            sc.useDelimiter("[<>\n]+");
+            sc.next();
+            String textOfRef = sc.next();
+            if (!textOfRef.equals(expected[i]))
+                failCount++;
+        }
+        // Read some html tags using < and > as delimiters
+        if (!sc.next().equals("/a"))
+            failCount++;
+        if (!sc.next().equals("b"))
+            failCount++;
+
+        // Scan some html tags using skip and next
+        Pattern nonTagStart = Pattern.compile("[^<]+");
+        Pattern tag = Pattern.compile("<[^>]+?>");
+        Pattern spotAfterTag = Pattern.compile("(?<=>)");
+        String[] expected2 = { "</b>", "<p>", "<ul>", "<li>" };
+        sc.useDelimiter(spotAfterTag);
+        int tagsFound = 0;
+        while(tagsFound < 4) {
+            if (!sc.hasNext(tag)) {
+                // skip text between tags
+                sc.skip(nonTagStart);
+            }
+            String tagContents = sc.next(tag);
+            if (!tagContents.equals(expected2[tagsFound]))
+                failCount++;
+            tagsFound++;
+        }
+
+        report("Use case 4");
+    }
+
+    public static void useCase5() throws Exception {
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        Scanner sc = new Scanner(f);
+        String testDataTag = sc.findWithinHorizon("usage case 5\n", 0);
+        if (!testDataTag.equals("usage case 5\n"))
+            failCount++;
+
+        sc.findWithinHorizon("Share Definitions", 0);
+        sc.nextLine();
+        sc.next("\\[([a-z]+)\\]");
+        String shareName = sc.match().group(1);
+        if (!shareName.equals("homes"))
+            failCount++;
+
+        String[] keys = { "comment", "browseable", "writable", "valid users" };
+        String[] vals = { "Home Directories", "no", "yes", "%S" };
+        for (int i=0; i<4; i++) {
+            sc.useDelimiter("=");
+            String key = sc.next().trim();
+            if (!key.equals(keys[i]))
+                failCount++;
+            sc.skip("[ =]+");
+            sc.useDelimiter("\n");
+            String value = sc.next();
+            if (!value.equals(vals[i]))
+                failCount++;
+            sc.nextLine();
+        }
+
+        report("Use case 5");
+    }
+
+    public static void nonASCIITest() throws Exception {
+        String yourBasicTibetanNumberZero = "\u0f20";
+        String yourBasicTibetanFloatingNumber = "\u0f23.\u0f27";
+        String weirdMixtureOfTibetanAndASCII = "\u0f23.7";
+        String weirdMixtureOfASCIIAndTibetan = "3.\u0f27";
+        Scanner sc = new Scanner(yourBasicTibetanNumberZero);
+        int i = sc.nextInt();
+        if (i != 0)
+            failCount++;
+        sc = new Scanner(yourBasicTibetanFloatingNumber);
+        float f = sc.nextFloat();
+        if (f != Float.parseFloat("3.7"))
+            failCount++;
+        sc = new Scanner(weirdMixtureOfTibetanAndASCII);
+        f = sc.nextFloat();
+        if (f != Float.parseFloat("3.7"))
+            failCount++;
+        sc = new Scanner(weirdMixtureOfASCIIAndTibetan);
+        f = sc.nextFloat();
+        if (f != Float.parseFloat("3.7"))
+            failCount++;
+        report("Scanning non ASCII digits");
+    }
+
+    public static void findWithinHorizonTest() throws Exception {
+        // Test with a string source
+        Scanner sc = new Scanner("dog  cat     cat    dog     cat");
+        try {
+            sc.findWithinHorizon("dog", -1);
+            failCount++;
+        } catch (IllegalArgumentException iae) {
+            // Correct result
+        }
+        if (sc.findWithinHorizon("dog", 2) != null)
+            failCount++;
+        if (!sc.findWithinHorizon("dog", 3).equals("dog"))
+            failCount++;
+        if (sc.findWithinHorizon("cat", 4) != null)
+            failCount++;
+        if (!sc.findWithinHorizon("cat", 5).equals("cat"))
+            failCount++;
+         if (sc.findWithinHorizon("cat", 7) != null)
+            failCount++;
+        if (sc.findWithinHorizon("dog", 7) != null)
+            failCount++;
+        if (!sc.findWithinHorizon("cat", 0).equals("cat"))
+            failCount++;
+        if (!sc.findWithinHorizon("dog", 0).equals("dog"))
+            failCount++;
+        if (!sc.findWithinHorizon("cat", 0).equals("cat"))
+            failCount++;
+
+        // Test with a stream source
+        StutteringInputStream stutter = new StutteringInputStream();
+        for (int index=0; index<stutter.length(); index++) {
+            //System.out.println("index is now "+index);
+            sc = new Scanner(stutter);
+            String word = stutter.wordInIndex(index);
+            if (word != null) {
+                String result = sc.findWithinHorizon(word, index);
+                if ((result == null) || (!result.equals(word)))
+                    failCount++;
+            }
+            stutter.reset();
+            word = stutter.wordBeyondIndex(index);
+            sc = new Scanner(stutter);
+            String result = sc.findWithinHorizon(word, index);
+            if ((result != null) && (index > 0))
+                failCount++;
+            stutter.reset();
+        }
+
+        // We must loop to let StutteringInputStream do its magic
+        for (int j=0; j<10; j++) {
+            // An anchor at the end of stream should work
+            stutter.reset();
+            sc = new Scanner(stutter);
+            String result = sc.findWithinHorizon("phant$", 0);
+            if (!result.equals("phant"))
+                failCount++;
+            stutter.reset();
+            sc = new Scanner(stutter);
+            result = sc.findWithinHorizon("phant$", 54);
+            if (!result.equals("phant"))
+                failCount++;
+            // An anchor at the end of horizon should not
+            stutter.reset();
+            sc = new Scanner(stutter);
+            result = sc.findWithinHorizon("brummer$", 7);
+            if (result != null)
+                failCount++;
+            // An anchor at start should work
+            stutter.reset();
+            sc = new Scanner(stutter);
+            result = sc.findWithinHorizon("^brummer", 0);
+            if (!result.equals("brummer"))
+                failCount++;
+        }
+
+        report("Find to horizon test");
+    }
+
+    // StutteringInputStream returns 1 to 3 characters at a time
+    static class StutteringInputStream implements Readable {
+        StutteringInputStream() {
+            text = "brummer hisser tort zardzard rantrant caimagator phant";
+            datalen = 54;
+        }
+        StutteringInputStream(String text) {
+            this.text = text;
+            datalen = text.length();
+        }
+        Random generator = new Random();
+        String text;
+        int datalen;
+        int index = 0;
+        public int length() {
+            return datalen;
+        }
+        public void reset() {
+            index = 0;
+        }
+        public String wordInIndex(int index) {
+            if (index < 7)  return null;
+            if (index < 14) return "brummer";
+            if (index < 19) return "hisser";
+            if (index < 28) return "tort";
+            if (index < 37) return "zardzard";
+            if (index < 48) return "rantrant";
+            return "caimagator";
+        }
+        public String wordBeyondIndex(int index) {
+            if (index < 7)  return "brummer";
+            if (index < 14) return "hisser";
+            if (index < 19) return "tort";
+            if (index < 28) return "zardzard";
+            if (index < 37) return "rantrant";
+            if (index < 48) return "caimagator";
+            return "phantphant";
+        }
+        public int read(java.nio.CharBuffer target) throws IOException {
+            if (index > datalen-1)
+                return -1; // EOS
+            int len = target.remaining();
+            if (len > 4) // return 1 to 3 characters
+                len = generator.nextInt(3) + 1;
+            while ((index + len) > datalen)
+                len--;
+            for (int i=0; i<len; i++)
+                target.put(text.charAt(index++));
+            return len;
+        }
+    }
+
+    public static void hasNextLineTest(int sourceType) throws Exception {
+        Scanner sc = scannerFor("1\n2\n3 3\r\n4 4 4\r5", sourceType);
+        if (!sc.hasNextLine()) failCount++;
+        if (!sc.nextLine().equals("1")) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (sc.nextInt() != 2) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (!sc.nextLine().equals("")) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (sc.nextInt() != 3) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (!sc.nextLine().equals(" 3")) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (sc.nextInt() != 4) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (sc.nextInt() != 4) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (!sc.nextLine().equals(" 4")) failCount++;
+        if (!sc.hasNextLine()) failCount++;
+        if (!sc.nextLine().equals("5")) failCount++;
+        if (sc.hasNextLine()) failCount++;
+        sc = new Scanner("blah blah blah blah blah blah");
+        if (!sc.hasNextLine()) failCount++;
+        if (!sc.nextLine().equals("blah blah blah blah blah blah"))
+           failCount++;
+        if (sc.hasNextLine()) failCount++;
+
+        // Go through all the lines in a file
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        sc = new Scanner(f);
+        String lastLine = "blah";
+        while(sc.hasNextLine())
+            lastLine = sc.nextLine();
+        if (!lastLine.equals("# Data for usage case 6")) failCount++;
+
+        report("Has next line test");
+    }
+
+    public static void nextLineTest(int sourceType) throws Exception {
+        Scanner sc = scannerFor("1\n2\n3 3\r\n4 4 4\r5", sourceType);
+        if (!sc.nextLine().equals("1"))
+            failCount++;
+        if (sc.nextInt() != 2)
+            failCount++;
+        if (!sc.nextLine().equals(""))
+           failCount++;
+        if (sc.nextInt() != 3)
+            failCount++;
+        if (!sc.nextLine().equals(" 3"))
+           failCount++;
+        if (sc.nextInt() != 4)
+            failCount++;
+        if (sc.nextInt() != 4)
+            failCount++;
+        if (!sc.nextLine().equals(" 4"))
+           failCount++;
+        if (!sc.nextLine().equals("5"))
+           failCount++;
+        sc = new Scanner("blah blah blah blah blah blah");
+        if (!sc.nextLine().equals("blah blah blah blah blah blah"))
+           failCount++;
+        report("Next line test");
+    }
+
+    public static void singleDelimTest(int sourceType) throws Exception {
+        Scanner sc = scannerFor("12 13  14   15    16     17      ",
+                                sourceType);
+        sc.useDelimiter(" ");
+        for (int i=0; i<6; i++) {
+            int j = sc.nextInt();
+            if (j != 12 + i)
+                failCount++;
+            for (int k=0; k<i; k++) {
+                String empty = sc.next();
+                if (!empty.equals(""))
+                    failCount++;
+            }
+        }
+        report("Single delim test");
+    }
+
+    /*
+     * The hasNextPattern caches a match of a pattern called the regular cache
+     * The hasNextType caches a match of that type called the type cache
+     * Any next must clear the caches whether it uses them or not, because
+     * it advances past a token thus invalidating any cached token; any
+     * hasNext must set a cache to what it finds.
+     */
+    public static void cacheTest() throws Exception {
+        // Test clearing of the type cache
+        Scanner scanner = new Scanner("777 dog");
+        scanner.hasNextInt();
+        scanner.findInLine("777");
+        try {
+            scanner.nextInt();
+            System.out.println("type cache not cleared by find");
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct
+        }
+
+        scanner = new Scanner("777 dog");
+        scanner.hasNextInt();
+        scanner.skip("777");
+        try {
+            scanner.nextInt();
+            System.out.println("type cache not cleared by skip");
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct
+        }
+
+        // Test clearing of the regular cache
+        scanner = new Scanner("777 dog");
+        scanner.hasNext("777");
+        scanner.findInLine("777");
+        try {
+            scanner.next("777");
+            System.out.println("regular cache not cleared by find");
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct
+        }
+
+        // Test two primitive next clearing of type cache
+        scanner = new Scanner("777 dog");
+        scanner.hasNextInt();
+        scanner.nextLong();
+        try {
+            scanner.nextInt();
+            System.out.println("type cache not cleared by primitive next");
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct
+        }
+
+        // Test using both of them, type first
+        scanner = new Scanner("777 dog");
+        scanner.hasNext("777");
+        scanner.nextInt();
+        try {
+            scanner.next("777");
+            System.out.println("regular cache not cleared by primitive next");
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct
+        }
+
+        // Test using both of them, regular first
+        scanner = new Scanner("777 dog");
+        scanner.hasNext("777");
+        scanner.hasNextInt();
+        scanner.next("777");
+        try {
+            scanner.nextInt();
+            System.out.println("type cache not cleared by regular next");
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct
+        }
+        report("Cache test");
+    }
+
+    /*
+     * The hasNext<IntegerType>(radix) method caches a matched integer type
+     * with specified radix for the next next<IntegerType>(radix) invoke.
+     * The cache value should not be used if the next<IntegerType>(radix)
+     * has different radix value with the last hasNext<IntegerType>(radix).
+     */
+    public static void cacheTest2() throws Exception {
+        // Test clearing of the type cache
+        Scanner scanner = new Scanner("10");
+        scanner.hasNextByte(16);
+        if (scanner.nextByte(10) != 10) {
+            System.out.println("wrong radix cache is used");
+            failCount++;
+        }
+        scanner = new Scanner("10");
+        scanner.hasNextShort(16);
+        if (scanner.nextShort(10) != 10) {
+            System.out.println("wrong radix cache is used");
+            failCount++;
+        }
+        scanner = new Scanner("10");
+        scanner.hasNextInt(16);
+        if (scanner.nextInt(10) != 10) {
+            System.out.println("wrong radix cache is used");
+            failCount++;
+        }
+        scanner = new Scanner("10");
+        scanner.hasNextLong(16);
+        if (scanner.nextLong(10) != 10) {
+            System.out.println("wrong radix cache is used");
+            failCount++;
+        }
+        scanner = new Scanner("10");
+        scanner.hasNextBigInteger(16);
+        if (scanner.nextBigInteger(10).intValue() != 10) {
+            System.out.println("wrong radix cache is used");
+            failCount++;
+        }
+        report("Cache test2");
+    }
+
+
+    public static void closeTest() throws Exception {
+        Scanner sc = new Scanner("testing");
+        sc.close();
+        sc.ioException();
+        sc.delimiter();
+        sc.useDelimiter("blah");
+        sc.useDelimiter(Pattern.compile("blah"));
+        for (int i=0; i<NUM_METHODS; i++) {
+            try {
+                methodCall(sc, i);
+                failCount++;
+            } catch (IllegalStateException ise) {
+                // Correct
+            }
+        }
+        report("Close test");
+    }
+
+    private static int NUM_METHODS = 23;
+
+    private static void methodCall(Scanner sc, int i) {
+        switch(i) {
+            case 0: sc.hasNext(); break;
+            case 1: sc.next(); break;
+            case 2: sc.hasNext(Pattern.compile("blah")); break;
+            case 3: sc.next(Pattern.compile("blah")); break;
+            case 4: sc.hasNextBoolean(); break;
+            case 5: sc.nextBoolean(); break;
+            case 6: sc.hasNextByte(); break;
+            case 7: sc.nextByte(); break;
+            case 8: sc.hasNextShort(); break;
+            case 9: sc.nextShort(); break;
+            case 10: sc.hasNextInt(); break;
+            case 11: sc.nextInt(); break;
+            case 12: sc.hasNextLong(); break;
+            case 13: sc.nextLong(); break;
+            case 14: sc.hasNextFloat(); break;
+            case 15: sc.nextFloat(); break;
+            case 16: sc.hasNextDouble(); break;
+            case 17: sc.nextDouble(); break;
+            case 18: sc.hasNextBigInteger(); break;
+            case 19: sc.nextBigInteger(); break;
+            case 20: sc.hasNextBigDecimal(); break;
+            case 21: sc.nextBigDecimal(); break;
+            case 22: sc.hasNextLine(); break;
+            default:
+                break;
+        }
+    }
+
+    public static void removeTest() throws Exception {
+        Scanner sc = new Scanner("testing");
+        try {
+            sc.remove();
+            failCount++;
+        } catch (UnsupportedOperationException uoe) {
+            // Correct result
+        }
+        report("Remove test");
+    }
+
+    public static void delimiterTest() throws Exception {
+        Scanner sc = new Scanner("blah");
+        Pattern test = sc.delimiter();
+        if (!test.toString().equals("\\p{javaWhitespace}+"))
+            failCount++;
+        sc.useDelimiter("a");
+        test = sc.delimiter();
+        if (!test.toString().equals("a"))
+            failCount++;
+        sc.useDelimiter(Pattern.compile("b"));
+        test = sc.delimiter();
+        if (!test.toString().equals("b"))
+            failCount++;
+        report("Delimiter test");
+    }
+
+    public static void ioExceptionTest() throws Exception {
+        Readable thrower = new ThrowingReadable();
+        Scanner sc = new Scanner(thrower);
+        try {
+            sc.nextInt();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        Exception thrown = sc.ioException();
+        String detail = thrown.getMessage();
+        if (!detail.equals("ThrowingReadable always throws"))
+            failCount++;
+
+        report("IOException test");
+    }
+
+    public static void bigIntegerPatternTest(int sourceType) throws Exception {
+        Scanner sc = scannerFor("23 9223372036854775817", sourceType);
+        if (!sc.nextBigInteger().equals(BigInteger.valueOf(23)))
+            failCount++;
+        if (!sc.nextBigInteger().equals(new BigInteger(
+            "9223372036854775817", 10)))
+            failCount++;
+
+        // Test another radix
+        sc = new Scanner("4a4 4A4").useRadix(16);
+        if (!sc.nextBigInteger().equals(new BigInteger("4a4", 16)))
+            failCount++;
+        if (!sc.nextBigInteger().equals(new BigInteger("4A4", 16)))
+            failCount++;
+
+        // Test alternating radices
+        sc = new Scanner("12 4a4 14 4f4");
+        if (!sc.nextBigInteger(10).equals(new BigInteger("12", 10)))
+            failCount++;
+        if (!sc.nextBigInteger(16).equals(new BigInteger("4a4", 16)))
+            failCount++;
+        if (!sc.nextBigInteger(10).equals(new BigInteger("14", 10)))
+            failCount++;
+        if (!sc.nextBigInteger(16).equals(new BigInteger("4f4", 16)))
+            failCount++;
+
+        // Test use of a lot of radices
+        for (int i=2; i<17; i++) {
+            sc = new Scanner("1111");
+            if (!sc.nextBigInteger(i).equals(new BigInteger("1111", i)))
+                failCount++;
+        }
+
+        report("BigInteger pattern");
+    }
+
+    public static void bigDecimalPatternTest(int sourceType) throws Exception {
+        Scanner sc = scannerFor("23 45.99 -45,067.444 3.4e10", sourceType);
+        if (!sc.nextBigDecimal().equals(BigDecimal.valueOf(23)))
+            failCount++;
+        if (!sc.nextBigDecimal().equals(new BigDecimal("45.99")))
+            failCount++;
+        if (!sc.nextBigDecimal().equals(new BigDecimal("-45067.444")))
+            failCount++;
+        if (!sc.nextBigDecimal().equals(new BigDecimal("3.4e10")))
+            failCount++;
+        report("BigDecimal pattern");
+    }
+
+    public static void integerPatternTest(int sourceType) throws Exception {
+        String input =
+            "1 22 f FF Z -3 -44 123 1,200 -123 -3,400,000 5,40 ,500 ";
+        Scanner sc = scannerFor(input, sourceType);
+        integerPatternBody(sc);
+        CharBuffer cb = CharBuffer.wrap(input);
+        sc = new Scanner(cb);
+        integerPatternBody(sc);
+        report("Integer pattern");
+    }
+
+    public static void integerPatternBody(Scanner sc) throws Exception {
+        if (sc.nextInt() != 1)        failCount++;
+        if (sc.nextShort() != 22)     failCount++;
+        if (sc.nextShort(16) != 15)   failCount++;
+        if (sc.nextShort(16) != 255)  failCount++;
+        if (sc.nextShort(36) != 35)   failCount++;
+        if (!sc.hasNextInt())         failCount++;
+        if (sc.nextInt() != -3)       failCount++;
+        if (sc.nextInt() != -44)      failCount++;
+        if (sc.nextLong() != 123)     failCount++;
+        if (!sc.hasNextInt())         failCount++;
+        if (sc.nextInt() != 1200)     failCount++;
+        if (sc.nextInt() != -123)     failCount++;
+        if (sc.nextInt() != -3400000) failCount++;
+        try {
+            sc.nextInt();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct result
+        }
+        sc.next();
+        try {
+            sc.nextLong();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct result
+        }
+        sc.next();
+        try {
+            sc.next();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+    }
+
+    public static void floatPatternTest(int sourceType) throws Exception {
+        String input =
+            "090.090 1 22.0 -3 -44.05 +.123 -.1234 -3400000 56,566.6 " +
+            "Infinity +Infinity -Infinity NaN -NaN +NaN 5.4.0 5-.00 ++6.07";
+        Scanner sc = scannerFor(input, sourceType);
+        floatPatternBody(sc);
+        CharBuffer cb = CharBuffer.wrap(input);
+        sc = new Scanner(cb);
+        floatPatternBody(sc);
+        report("Float pattern");
+    }
+
+    public static void floatPatternBody(Scanner sc) throws Exception {
+        if (sc.nextFloat() != 090.090f)                   failCount++;
+        if (sc.nextFloat() != 1f)                         failCount++;
+        if (sc.nextFloat() != 22.0f)                      failCount++;
+        if (sc.nextDouble() != -3d)                       failCount++;
+        if (sc.nextDouble() != -44.05d)                   failCount++;
+        if (sc.nextFloat() != .123f)                      failCount++;
+        if (sc.nextFloat() != -.1234f)                    failCount++;
+        if (sc.nextDouble() != -3400000d)                 failCount++;
+        if (sc.nextDouble() != 56566.6d)                  failCount++;
+        if (sc.nextDouble() != Double.POSITIVE_INFINITY)  failCount++;
+        if (sc.nextDouble() != Double.POSITIVE_INFINITY)  failCount++;
+        if (sc.nextDouble() != Double.NEGATIVE_INFINITY)  failCount++;
+        if (!Double.valueOf(sc.nextDouble()).isNaN())     failCount++;
+        if (!Double.valueOf(sc.nextDouble()).isNaN())     failCount++;
+        if (!Double.valueOf(sc.nextDouble()).isNaN())     failCount++;
+        try {
+            sc.nextFloat();
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        try {
+            sc.nextDouble();
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        try {
+            sc.nextDouble();
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+    }
+
+    public static void fromFileTest() throws Exception {
+        File f = new File(System.getProperty("test.src", "."), "input.txt");
+        Scanner sc = new Scanner(f).useDelimiter("\n+");
+        String testDataTag = sc.findWithinHorizon("fromFileTest", 0);
+        if (!testDataTag.equals("fromFileTest"))
+            failCount++;
+
+        int count = 0;
+        while (sc.hasNextLong()) {
+            long blah = sc.nextLong();
+            count++;
+        }
+        if (count != 7)
+            failCount++;
+        sc.close();
+        report("From file");
+    }
+
+    private static void example1() throws Exception {
+        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
+        s.useDelimiter("\\s*fish\\s*");
+        List <String> results = new ArrayList<String>();
+        while(s.hasNext())
+            results.add(s.next());
+        System.out.println(results);
+    }
+
+    private static void example2() throws Exception {
+        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
+        s.useDelimiter("\\s*fish\\s*");
+        System.out.println(s.nextInt());
+        System.out.println(s.nextInt());
+        System.out.println(s.next());
+        System.out.println(s.next());
+    }
+
+    private static void example3() throws Exception {
+        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
+        s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
+        for (int i=1; i<=s.match().groupCount(); i++)
+            System.out.println(s.match().group(i));
+    }
+
+    private static void findInLineTest() throws Exception {
+        Scanner s = new Scanner("abc def ghi jkl mno");
+        Pattern letters = Pattern.compile("[a-z]+");
+        Pattern frogs = Pattern.compile("frogs");
+        String str = s.findInLine(letters);
+        if (!str.equals("abc"))
+            failCount++;
+        if (!s.hasNext(letters))
+            failCount++;
+        try {
+            str = s.findInLine(frogs);
+        } catch (NoSuchElementException nsee) {
+            // Correct
+        }
+        if (!s.hasNext())
+            failCount++;
+        if (!s.hasNext(letters))
+            failCount++;
+        str = s.findInLine(letters);
+        if (!str.equals("def"))
+            failCount++;
+
+        report("Find patterns");
+    }
+
+    private static void findInEmptyLineTest() throws Exception {
+        String eol = System.getProperty("line.separator");
+        Scanner s = new Scanner("line 1" + eol + "" + eol + "line 3" + eol);
+        int lineNo = 0;
+        while (s.hasNextLine()) {
+            lineNo++;
+            s.findInLine("3");
+            s.nextLine();
+        }
+        if (lineNo != 3)
+            failCount++;
+        report("findInEmptyLine test");
+    }
+
+    private static void matchTest() throws Exception {
+        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
+        s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
+
+        MatchResult result = s.match();
+        if (!result.group(1).equals("1"))
+            failCount++;
+        if (!result.group(2).equals("2"))
+            failCount++;
+        if (!result.group(3).equals("red"))
+            failCount++;
+        if (!result.group(4).equals("blue"))
+            failCount++;
+
+        report("Match patterns");
+    }
+
+    private static void skipTest() throws Exception {
+        Scanner s = new Scanner("abc def ghi jkl mno");
+        Pattern letters = Pattern.compile("[a-z]+");
+        Pattern spaceLetters = Pattern.compile(" [a-z]+");
+        Pattern frogs = Pattern.compile("frogs");
+        try {
+            s.skip(letters);
+        } catch (NoSuchElementException ime) {
+            failCount++;
+        }
+        String token = s.next(letters);
+        if (!token.equals("def")) {
+            System.out.println("expected def");
+            System.out.println("I found "+token);
+            failCount++;
+        }
+        try {
+            s.skip(letters);
+            failCount++;
+        } catch (NoSuchElementException ime) {
+            // Correct result
+        }
+        token = s.next(letters);
+        if (!token.equals("ghi")) {
+            System.out.println("expected ghi");
+            System.out.println("I found "+token);
+            failCount++;
+        }
+        try {
+            s.skip(letters);
+            failCount++;
+        } catch (NoSuchElementException ime) {
+            // Correct result because skip ignores delims
+        }
+        try {
+            s.skip(spaceLetters);
+        } catch (NoSuchElementException ime) {
+            failCount++;
+        }
+        token = s.next(letters);
+        if (!token.equals("mno")) {
+            System.out.println("expected mno");
+            System.out.println("I found "+token);
+            failCount++;
+        }
+        try {
+            s.skip(letters);
+            failCount++;
+        } catch (NoSuchElementException ime) {
+            // Correct result
+        }
+        report("Skip patterns");
+    }
+
+    private static void byteTest(int sourceType) throws Exception {
+        String input = " 3 0 00 b -B 012 44 -55 12 127 129 -131 dog 0x12";
+        Scanner s = scannerFor(input, sourceType);
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)3)   failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)0)   failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)0)   failCount++;
+        if (!s.hasNextByte(16))        failCount++;
+        if (s.nextByte(16) != (byte)11)failCount++;
+        if (!s.hasNextByte(16))        failCount++;
+        if (s.nextByte(16) != (byte)-11) failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)12)  failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)44)  failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)-55) failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)12)  failCount++;
+        if (!s.hasNextByte())          failCount++;
+        if (s.nextByte() != (byte)127) failCount++;
+        if (s.hasNextByte())           failCount++;
+
+        try {
+            s.nextByte();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct result
+        }
+        if (s.hasNextByte())           failCount++;
+        if (s.nextInt() != 129)        failCount++;
+        if (s.hasNextByte())           failCount++;
+        try {
+            s.nextByte();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct result
+        }
+        if (s.nextInt() != -131)       failCount++;
+        if (s.hasNextByte())           failCount++;
+        try {
+            s.nextByte();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            // Correct result
+        }
+        s.next(Pattern.compile("\\w+"));
+        if (s.hasNextByte())
+            failCount++;
+        try {
+            s.nextByte();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        s.next();
+        if (s.hasNextByte())
+            failCount++;
+        try {
+            byte bb = s.nextByte();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        report("Scan bytes");
+    }
+
+    private static void shortTest(int sourceType) throws Exception {
+        String input = "  017 22 00E -34 44,333 -53999 0x19 dog";
+        Scanner s = scannerFor(input, sourceType);
+        if (!s.hasNextShort())             failCount++;
+        if (s.nextShort() != (short)17)   failCount++;
+        if (!s.hasNextShort())            failCount++;
+        if (s.nextShort() != (short)22)   failCount++;
+        if (!s.hasNextShort(16))          failCount++;
+        if (s.nextShort(16) != (short)14) failCount++;
+        if (!s.hasNextShort())            failCount++;
+        if (s.nextShort() != (short)-34)  failCount++;
+        for (int i=0; i<4; i++) {
+            if (s.hasNextShort())
+                failCount++;
+            try {
+                s.nextShort();
+                failCount++;
+            } catch (InputMismatchException ime) {
+                // Correct result
+            }
+            s.next();
+        }
+        try {
+            s.next();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        report("Scan shorts");
+    }
+
+    private static void intTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            "22 022 C -34 0x80000000 -2147483649 dog ", sourceType);
+        if (!s.hasNextInt())      failCount++;
+        if (s.nextInt() != 22)    failCount++;
+        if (!s.hasNextInt())      failCount++;
+        if (s.nextInt() != 22)    failCount++;
+        if (!s.hasNextInt(16))    failCount++;
+        if (s.nextInt(16) != 12)  failCount++;
+        if (!s.hasNextInt())      failCount++;
+        if (s.nextInt() != -34)   failCount++;
+        for (int i=0; i<3; i++) {
+            if (s.hasNextInt())
+                failCount++;
+            try {
+                s.nextInt();
+                failCount++;
+            } catch (InputMismatchException ime) {
+                // Correct result
+            }
+            s.next();
+        }
+        try {
+            s.next();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        report("Scan ints");
+    }
+
+    private static void longTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+        "022 9223372036854775807 0x8000000000000000 9223372036854775808 dog ",
+              sourceType);
+        if (!s.hasNextLong())                        failCount++;
+        if (s.nextLong() != (long)22)                failCount++;
+        if (!s.hasNextLong())                        failCount++;
+        if (s.nextLong() != 9223372036854775807L)    failCount++;
+        for (int i=0; i<3; i++) {
+            if (s.hasNextLong())
+                failCount++;
+            try {
+                s.nextLong();
+                failCount++;
+            } catch (InputMismatchException ime) {
+                // Correct result
+            }
+            s.next();
+        }
+        try {
+            s.next();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        report("Scan longs");
+    }
+
+    private static void floatTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            "0 0. 0.0 2 2. 2.0 2.3 -2 -2.0 -2.3 -. 2-. 2..3", sourceType);
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 0f)    failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 0f)    failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 0f)    failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 2f)    failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 2f)    failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 2f)    failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != 2.3f)  failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != -2f)   failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != -2f)   failCount++;
+        if (!s.hasNextFloat())      failCount++;
+        if (s.nextFloat() != -2.3f) failCount++;
+        for (int i=0; i<3; i++) {
+            if (s.hasNextLong())
+                failCount++;
+            try {
+                s.nextFloat();
+                failCount++;
+            } catch (InputMismatchException ime) {
+                // Correct result
+            }
+            s.next();
+        }
+        try {
+            s.next();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        report("Scan floats");
+    }
+
+    private static void doubleTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            "0 0. 0.0 2 2. 2.0 2.3 -2 -2.0 -2.3 -. 2-. 2..3", sourceType);
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 0d)           failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 0d)           failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 0d)           failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 2d)           failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 2d)           failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 2d)           failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != 2.3d)         failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != -2d)          failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != -2d)          failCount++;
+        if (!s.hasNextDouble())             failCount++;
+        if (s.nextDouble() != -2.3d)        failCount++;
+        for (int i=0; i<3; i++) {
+            if (s.hasNextLong())
+                failCount++;
+            try {
+                s.nextDouble();
+                failCount++;
+            } catch (InputMismatchException ime) {
+                // Correct result
+            }
+            s.next();
+        }
+        try {
+            s.next();
+            failCount++;
+        } catch (InputMismatchException ime) {
+            failCount++;
+        } catch (NoSuchElementException nse) {
+            // Correct result
+        }
+        report("Scan doubles");
+    }
+
+    private static void booleanTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            " true false\t \r\n true FaLse \n  True Tru", sourceType);
+        if (!s.nextBoolean())     failCount++;
+        if (!s.hasNextBoolean())  failCount++;
+        if (s.nextBoolean())      failCount++;
+        if (!s.nextBoolean())     failCount++;
+        if (s.nextBoolean())      failCount++;
+        if (!s.nextBoolean())     failCount++;
+        if (s.hasNextBoolean())   failCount++;
+        try {
+            s.nextBoolean();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Expected result
+        }
+        report("Scan booleans");
+    }
+
+    private static void hasNextTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            " blah blech\t blather  alongblatherindeed", sourceType);
+        if (!s.hasNext())            failCount++;
+        if (!s.hasNext())            failCount++;
+        String result = s.next();
+        if (!result.equals("blah"))  failCount++;
+        if (!s.hasNext())            failCount++;
+        if (!s.hasNext())            failCount++;
+        result = s.next();
+        if (!result.equals("blech")) failCount++;
+        if (!s.hasNext())            failCount++;
+        result = s.next();
+        if (!result.equals("blather")) failCount++;
+        if (!s.hasNext())              failCount++;
+        if (!s.hasNext())              failCount++;
+        result = s.next();
+        if (!result.equals("alongblatherindeed")) failCount++;
+        if (s.hasNext())                          failCount++;
+        try {
+            result = s.next();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        report("Has next test");
+    }
+
+    private static void nextTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            " blah blech\t blather  alongblatherindeed", sourceType);
+        String result = (String)s.next();
+        if (!result.equals("blah"))    failCount++;
+        result = (String)s.next();
+        if (!result.equals("blech"))   failCount++;
+        result = (String)s.next();
+        if (!result.equals("blather")) failCount++;
+        result = (String)s.next();
+        if (!result.equals("alongblatherindeed"))
+            failCount++;
+        try {
+            result = (String)s.next();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        report("Next test");
+    }
+
+    private static void hasNextPatternTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            " blah blech\t blather  alongblatherindeed", sourceType);
+        Pattern p1 = Pattern.compile("\\w+");
+        Pattern p2 = Pattern.compile("blech");
+        if (!s.hasNext(p1))    failCount++;
+        if (!s.hasNext(p1))    failCount++;
+        if (s.hasNext(p2))     failCount++;
+        String result = (String)s.next();
+        if (!result.equals("blah"))  failCount++;
+        if (!s.hasNext(p1))          failCount++;
+        if (!s.hasNext(p2))          failCount++;
+        result = (String)s.next();
+        if (!result.equals("blech")) failCount++;
+        if (!s.hasNext(p1))          failCount++;
+        if (s.hasNext(p2))           failCount++;
+        result = (String)s.next();
+        if (!result.equals("blather")) failCount++;
+        if (!s.hasNext(p1))            failCount++;
+        if (s.hasNext(p2))             failCount++;
+        result = (String)s.next();
+        if (!result.equals("alongblatherindeed")) failCount++;
+        if (s.hasNext(p1))  failCount++;
+        if (s.hasNext(p2))  failCount++;
+        report("Has Next Pattern test");
+    }
+
+    private static void nextPatternTest(int sourceType) throws Exception {
+        Scanner s = scannerFor(
+            " blah blech\t blather  alongblatherindeed", sourceType);
+        Pattern p1 = Pattern.compile("blah");
+        Pattern p2 = Pattern.compile("blech");
+        Pattern p3 = Pattern.compile("blather");
+        Pattern p4 = Pattern.compile("alongblatherindeed");
+        String result = null;
+        try {
+            result = (String)s.next(p2);
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        result = (String)s.next(p1);
+        if (!result.equals("blah"))
+            failCount++;
+        try {
+            result = (String)s.next(p1);
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        result = (String)s.next(p2);
+        if (!result.equals("blech"))
+            failCount++;
+        try {
+            result = (String)s.next(p4);
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        result = (String)s.next(p3);
+        if (!result.equals("blather"))
+            failCount++;
+        try {
+            result = (String)s.next(p3);
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        result = (String)s.next(p4);
+        if (!result.equals("alongblatherindeed"))
+            failCount++;
+        try {
+            result = (String)s.next();
+            failCount++;
+        } catch (NoSuchElementException nsee) {
+            // Correct result
+        }
+        report("Next pattern test");
+    }
+
+    private static void useLocaleTest() throws Exception {
+        Scanner s = new Scanner("334.65").useLocale(Locale.ENGLISH);
+        if (!s.hasNextFloat())           failCount++;
+        if (s.nextFloat() != 334.65f)    failCount++;
+
+        s = new Scanner("334,65").useLocale(Locale.FRENCH);
+        if (!s.hasNextFloat())           failCount++;
+        if (s.nextFloat() != 334.65f)    failCount++;
+
+        s = new Scanner("4.334,65").useLocale(Locale.GERMAN);
+        if (!s.hasNextFloat())           failCount++;
+        if (s.nextFloat() != 4334.65f)    failCount++;
+
+        // Test case reported from India
+        try {
+            String Message = "123978.90 $";
+            Locale locale = new Locale("hi","IN");
+            NumberFormat form = NumberFormat.getInstance(locale);
+            double myNumber = 1902.09;
+            Scanner scanner = new Scanner(form.format(myNumber).toString());
+            scanner.useLocale(locale);
+            double d = scanner.nextDouble();
+        } catch (InputMismatchException ime) {
+            failCount++;
+        }
+        report("Use locale test");
+    }
+
+    public static void resetTest() throws Exception {
+        Scanner sc = new Scanner("");
+        int radix = sc.radix();
+        Locale locale = sc.locale();
+        Pattern delimiter = sc.delimiter();
+        Pattern a = Pattern.compile("A");
+        sc.useDelimiter(a);
+        Locale dummy = new Locale("en", "US", "dummy");
+        sc.useLocale(dummy);
+        sc.useRadix(16);
+        if (sc.radix() != 16 ||
+            !sc.locale().equals(dummy) ||
+            !sc.delimiter().pattern().equals(a.pattern())) {
+            failCount++;
+        } else {
+            sc.reset();
+            if (sc.radix() != radix ||
+                !sc.locale().equals(locale) ||
+                !sc.delimiter().pattern().equals(delimiter.pattern())) {
+                failCount++;
+            }
+        }
+        sc.close();
+        report("Reset test");
+    }
+
+    private static void report(String testName) {
+        int spacesToAdd = 30 - testName.length();
+        StringBuffer paddedNameBuffer = new StringBuffer(testName);
+        for (int i=0; i<spacesToAdd; i++)
+            paddedNameBuffer.append(" ");
+        String paddedName = paddedNameBuffer.toString();
+        System.err.println(paddedName + ": " +
+                           (failCount==0 ? "Passed":"Failed("+failCount+")"));
+        if (failCount > 0)
+            failure = true;
+        failCount = 0;
+    }
+
+    static Scanner scannerFor(String input, int sourceType) {
+        if (sourceType == 1)
+            return new Scanner(input);
+        else
+            return new Scanner(new StutteringInputStream(input));
+    }
+
+    static class ThrowingReadable implements Readable {
+        ThrowingReadable() {
+        }
+        public int read(java.nio.CharBuffer cb) throws IOException {
+            throw new IOException("ThrowingReadable always throws");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Scanner/input.txt	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,438 @@
+# Data for fromFileTest
+14343441
+24134342
+34324233
+43234234
+53423425
+63424326
+74324337
+
+
+# Data for usage case 1
+23.4 Frank 34.8 -9.0
+2.333 6.75 Joe -2
+3.3 -888.8 -16.00 Mary
+Michelle -5 -5.5 -5.555
+
+
+# Data for usage case 2
+cat-9-dog-6-pig-2--5-
+
+
+# Data for usage case 3
+    /**
+     * Returns the next string in the input that matches the specified pattern. 
+     * This method may block while waiting for input 
+     * to scan, even if a previous invocation of {@link #hasNext(Pattern)} 
+     * returned <code>true</code>. If the match is successful, the scanner 
+     * advances past the input that matched the pattern. 
+     *
+     * @param pattern the pattern to scan for
+     * @return the next token
+     * @throws NoSuchElementException if no more tokens are available
+     * @throws IllegalStateException if this scanner is closed
+     */
+
+
+# Data for usage case 4
+<html>
+<body bgcolor="#EEEEEE">
+<title>Source Directory</title>
+<center><h1>tiger</h1></center>
+<p>
+Parent workspace is /java/jdk/1.5/ws/integration/TL/j2se <br>
+Child  workspace is /export/tiger <br>
+<hr>
+<code>
+<p>
+<a href=make/java/java/mapfile-vers.diff.html>Diffs</a>
+<a href=make/java/java/mapfile-vers.sdiff.html>Sdiffs</a>
+<a href=make/java/java/mapfile-vers-.html>Old</a>
+<a href=make/java/java/mapfile-vers.html>New</a>
+<b>make/java/java/mapfile-vers</b><p>
+<ul> 
+<li><a href=http://example.com/cgi-bin/bugtraq_showbug?bugid=4904881>4904881</a>: JVM crash during java.io.File.deleteOnExit()<br>
+</ul>
+<p>
+<a href=src/share/classes/java/lang/Shutdown.java.diff.html>Diffs</a>
+<a href=src/share/classes/java/lang/Shutdown.java.sdiff.html>Sdiffs</a>
+<a href=src/share/classes/java/lang/Shutdown.java-.html>Old</a>
+<a href=src/share/classes/java/lang/Shutdown.java.html>New</a>
+<b>src/share/classes/java/lang/Shutdown.java</b><p>
+<ul>
+<li><a href=http://example.com/cgi-bin/bugtraq_showbug?bugid=4904881>4904881</a>: JVM crash during java.io.File.deleteOnExit()<br>
+</ul>
+<p>
+<a href=src/share/native/java/lang/Shutdown.c.diff.html>Diffs</a>
+<a href=src/share/native/java/lang/Shutdown.c.sdiff.html>Sdiffs</a>
+<a href=src/share/native/java/lang/Shutdown.c-.html>Old</a>
+<a href=src/share/native/java/lang/Shutdown.c.html>New</a>
+<b>src/share/native/java/lang/Shutdown.c</b><p>
+<ul>
+<li><a href=http://example.com/cgi-bin/bugtraq_showbug?bugid=4904881>4904881</a>: JVM crash during java.io.File.deleteOnExit()<br>
+</ul>
+</code>
+<p>
+</font>
+</html>
+
+# Data for usage case 5
+
+# This is the main Samba configuration file. You should read the
+# smb.conf(5) manual page in order to understand the options listed
+# here. Samba has a huge number of configurable options (perhaps too
+# many!) most of which are not shown in this example
+#
+# Any line which starts with a ; (semi-colon) or a # (hash)
+# is a comment and is ignored. In this example we will use a #
+# for commentry and a ; for parts of the config file that you
+# may wish to enable
+#
+# NOTE: Whenever you modify this file you should run the command "testparm"
+# to check that you have not many any basic syntactic errors.
+#
+#======================= Global Settings =====================================
+[global]
+
+##
+## Basic Server Settings
+##
+
+	# workgroup = NT-Domain-Name or Workgroup-Name, eg: REDHAT4
+	workgroup = MYGROUP
+
+	# server string is the equivalent of the NT Description field
+	server string = Samba Server
+
+	# This option is important for security. It allows you to restrict
+	# connections to machines which are on your local network. The
+	# following example restricts access to two C class networks and
+	# the "loopback" interface. For more examples of the syntax see
+	# the smb.conf man page
+	; hosts allow = 192.168.1. 192.168.2.0./24 192.168.3.0/255.255.255.0 127.0.0.1
+
+	# Uncomment this if you want a guest account, you must add this to /etc/passwd
+	# otherwise the user "nobody" is used
+	; guest account = pcguest
+
+	# this tells Samba to use a separate log file for each machine
+	# that connects
+	log file = /usr/local/samba/var/log.%m
+
+	# How much information do you want to see in the logs?
+	# default is only to log critical messages
+	; log level = 1
+
+	# Put a capping on the size of the log files (in Kb).
+	max log size = 50
+
+	# Security mode. Most people will want user level security. See
+	# security_level.txt for details.
+	security = user
+
+	# Using the following line enables you to customise your configuration
+	# on a per machine basis. The %m gets replaced with the netbios name
+	# of the machine that is connecting.
+	# Note: Consider carefully the location in the configuration file of
+	#       this line.  The included file is read at that point.
+	;   include = /usr/local/samba/lib/smb.conf.%m
+
+	# Most people will find that this option gives better performance.
+	# See speed.txt and the manual pages for details
+	# You may want to add the following on a Linux system:
+	#         SO_RCVBUF=8192 SO_SNDBUF=8192
+	; socket options = TCP_NODELAY
+
+	# Configure Samba to use multiple interfaces
+	# If you have multiple network interfaces and want to limit smbd will
+	# use, list the ones desired here.  Otherwise smbd & nmbd will bind to all
+	# active interfaces on the system.  See the man page for details.
+	;   interfaces = 192.168.12.2/24 192.168.13.2/24
+
+	# Should smbd report that it has MS-DFS Capabilities? Only available
+	# if --with-msdfs was passed to ./configure
+	; host msdfs = yes
+
+##
+## Network Browsing
+##
+	# set local master to no if you don't want Samba to become a master
+	# browser on your network. Otherwise the normal election rules apply
+	; local master = no
+
+	# OS Level determines the precedence of this server in master browser
+	# elections. The default value (20) should be reasonable
+	; os level = 20
+
+	# Domain Master specifies Samba to be the Domain Master Browser. This
+	# allows Samba to collate browse lists between subnets. Don't use this
+	# if you already have a Windows NT domain controller doing this job
+	; domain master = yes
+
+	# Preferred Master causes Samba to force a local browser election on startup
+	# and gives it a slightly higher chance of winning the election
+	; preferred master = yes
+
+
+##
+## WINS & Name Resolution
+##
+	# Windows Internet Name Serving Support Section:
+	# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
+	; wins support = yes
+
+	# WINS Server - Tells the NMBD components of Samba to be a WINS Client
+	#	Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
+	; wins server = w.x.y.z
+
+	# WINS Proxy - Tells Samba to answer name resolution queries on
+	# behalf of a non WINS capable client, for this to work there must be
+	# at least one	WINS Server on the network. The default is NO.
+	; wins proxy = yes
+
+	# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
+	# via DNS nslookups.
+	dns proxy = no
+
+
+##
+## Passwords & Authentication
+##
+	# Use password server option only with security = server
+	# The argument list may include:
+	#   password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
+	# or to auto-locate the domain controller/s
+	;   password server = *
+	;   password server = <NT-Server-Name>
+
+	# You may wish to use password encryption. Please read
+	# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
+	# Do not enable this option unless you have read those documents
+	;  encrypt passwords = yes
+
+	# Should smbd obey the session and account lines in /etc/pam.d/samba ?
+	# only available if --with-pam was used at compile time
+	; obey pam restrictions = yes
+
+	# When using encrypted passwords, Samba can synchronize the local
+	# UNIX password as well.  You will also need the "passwd chat" parameters
+	; unix password sync = yes
+
+	# how should smbd talk to the local system when changing a UNIX
+	# password?  See smb.conf(5) for details
+	; passwd chat = <custom chat string>
+
+	# This is only available if you compiled Samba to include --with-pam
+	# Use PAM for changing the password
+	; pam password change = yes
+
+##
+## Domain Control
+##
+	# Enable this if you want Samba act as a domain controller.
+	# make sure you have read the Samba-PDC-HOWTO included in the documentation
+	# before enabling this parameter
+	;   domain logons = yes
+
+	# if you enable domain logons then you may want a per-machine or
+	# per user logon script
+	# run a specific logon batch file per workstation (machine)
+	; logon script = %m.bat
+	# run a specific logon batch file per username
+	; logon script = %U.bat
+
+	# Where to store roving profiles (only for Win95 and WinNT)
+	#        %L substitutes for this servers netbios name, %U is username
+	#        You must uncomment the [Profiles] share below
+	; logon path = \\%L\Profiles\%U
+
+	# UNC path specifying the network location of the user's home directory
+	# only used when acting as a DC for WinNT/2k/XP.  Ignored by Win9x clients
+	; logon home = \\%L\%U
+
+	# What drive should the "logon home" be mounted at upon login ?
+	# only used when acting as a DC for WinNT/2k/XP.  Ignored by Win9x clients
+	; logon drive = H:
+
+##
+## Printing
+##
+
+	# If you want to automatically load your printer list rather
+	# than setting them up individually then you'll need this
+	load printers = yes
+
+	# you may wish to override the location of the printcap file
+	; printcap name = /etc/printcap
+
+	# on SystemV system setting printcap name to lpstat should allow
+	# you to automatically obtain a printer list from the SystemV spool
+	# system
+	; printcap name = lpstat
+
+	# It should not be necessary to specify the print system type unless
+	# it is non-standard. Currently supported print systems include:
+	# bsd, sysv, plp, lprng, aix, hpux, qnx
+	; printing = bsd
+
+	# Enable this to make Samba 2.2 behavior just like Samba 2.0
+	# not recommended nuless you are sure of what you are doing
+	; disable spoolss = yes
+
+	# list of users and groups which should be able to remotely manage
+	# printer drivers installed on the server
+	; printer admin = root, +ntadmin
+
+
+##
+## Winbind
+##
+
+	# specify the uid range which can be used by winbindd
+	# to allocate uids for Windows users as necessary
+	; winbind uid = 10000-65000
+
+	# specify the uid range which can be used by winbindd
+	# to allocate uids for Windows users as necessary
+	; winbind gid = 10000-65000
+
+	# Define a home directory to be given to passwd(5) style entries
+	# generated by libnss_winbind.so.  You can use variables here
+	; winbind template homedir = /home/%D/%U
+
+	# Specify a shell for all winbind user entries return by the
+	# libnss_winbind.so library.
+	; winbind template shell = /bin/sh
+
+	# What character should be used to separate the DOMAIN and Username
+	# for a Windows user.  The default is DOMAIN\user, but many people
+	# prefer DOMAIN+user
+	; winbind separator = +
+
+
+#============================ Share Definitions ==============================
+[homes]
+     comment = Home Directories
+     browseable = no
+     writable = yes
+     valid users = %S
+
+# Un-comment the following and create the netlogon directory for Domain Logons
+; [netlogon]
+;    comment = Network Logon Service
+;    path = /usr/local/samba/lib/netlogon
+;    guest ok = yes
+;    writable = no
+;    share modes = no
+
+
+# Un-comment the following to provide a specific roving profile share
+# the default is to use the user's home directory
+;[Profiles]
+;    path = /usr/local/samba/profiles
+;    browseable = no
+;    guest ok = yes
+
+
+# NOTE: If you have a BSD-style print system there is no need to
+# specifically define each individual printer
+[printers]
+   comment = All Printers
+   path = /usr/spool/samba
+   browseable = no
+   # Set public = yes to allow user 'guest account' to print
+   guest ok = no
+   writable = no
+   printable = yes
+
+# This one is useful for people to share files
+#[tmp]
+#   comment = Temporary file space
+#   path = /tmp
+#   read only = no
+#   public = yes
+
+
+# MS-DFS support is only available if Samba was compiled to
+# include --with-msdfs
+;[dfsroot]
+;   dfs root = yes
+
+
+# A publicly accessible directory, but read only, except for people in
+# the "staff" group
+;[public]
+;   comment = Public Stuff
+;   path = /home/samba
+;   public = yes
+;   writable = yes
+;   printable = no
+;   write list = @staff
+
+
+##
+## Other examples.
+##
+
+# A private printer, usable only by fred. Spool data will be placed in fred's
+# home directory. Note that fred must have write access to the spool directory,
+# wherever it is.
+#[fredsprn]
+#   comment = Fred's Printer
+#   valid users = fred
+#   path = /homes/fred
+#   printer = freds_printer
+#   public = no
+#   writable = no
+#   printable = yes
+
+# A private directory, usable only by fred. Note that fred requires write
+# access to the directory.
+#[fredsdir]
+#   comment = Fred's Service
+#   path = /usr/somewhere/private
+#   valid users = fred
+#   public = no
+#   writable = yes
+#   printable = no
+
+# a service which has a different directory for each machine that connects
+# this allows you to tailor configurations to incoming machines. You could
+# also use the %U option to tailor it by user name.
+# The %m gets replaced with the machine name that is connecting.
+#[pchome]
+#  comment = PC Directories
+#  path = /usr/pc/%m
+#  public = no
+#  writable = yes
+
+# A publicly accessible directory, read/write to all users. Note that all files
+# created in the directory by users will be owned by the default user, so
+# any user with access can delete any other user's files. Obviously this
+# directory must be writable by the default user. Another user could of course
+# be specified, in which case all files would be owned by that user instead.
+#[public]
+#   path = /usr/somewhere/else/public
+#   public = yes
+#   only guest = yes
+#   writable = yes
+#   printable = no
+
+# The following two entries demonstrate how to share a directory so that two
+# users can place files there that will be owned by the specific users. In this
+# setup, the directory should be writable by both users and should have the
+# sticky bit set on it to prevent abuse. Obviously this could be extended to
+# as many users as required.
+#[myshare]
+#   comment = Mary's and Fred's stuff
+#   path = /usr/somewhere/shared
+#   valid users = mary fred
+#   public = no
+#   writable = yes
+#   printable = no
+#   create mask = 0765
+
+
+
+
+# Data for usage case 6
--- a/jdk/test/javax/management/mxbean/LeakTest.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/javax/management/mxbean/LeakTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -27,7 +27,7 @@
  * @author Eamonn McManus
  * @modules java.desktop
  *          java.management
- * @run build LeakTest RandomMXBeanTest
+ * @run build LeakTest RandomMXBeanTest MerlinMXBean TigerMXBean
  * @run main LeakTest
  */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/jdk/internal/jimage/ExecutableTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2015 SAP SE.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFilePermission;
+import static java.nio.file.attribute.PosixFilePermission.*;
+import java.util.Arrays;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.Set;
+
+/*
+ * @test
+ * @bug 8132475
+ * @summary Check that the executables in the current JDK image
+ *          are executable by all users.
+ * @run main ExecutableTest
+ * @author Volker Simonis
+ */
+
+public class ExecutableTest {
+
+    // The bin/ directory may contain non-executable files (see 8132704)
+    private static final String[] exclude = { "jmc.ini" };
+    private static final Set<String> excludeSet =
+        new HashSet<String>(Arrays.asList(exclude));
+
+    public static void main(String args[]) throws Throwable {
+        String JAVA_HOME = System.getProperty("java.home");
+        Path binPath = Paths.get(JAVA_HOME, "bin");
+        DirectoryStream<Path> stream = Files.newDirectoryStream(binPath);
+        EnumSet<PosixFilePermission> execPerms =
+            EnumSet.of(GROUP_EXECUTE, OTHERS_EXECUTE, OWNER_EXECUTE);
+        for (Path entry : stream) {
+            if (excludeSet.contains(entry.getFileName().toString())) continue;
+            if (Files.isRegularFile(entry)) {
+                if (!Files.isExecutable(entry)) {
+                    throw new Error(entry + " is not executable!");
+                }
+                try {
+                    Set<PosixFilePermission> perm = Files.getPosixFilePermissions(entry);
+                    if (!perm.containsAll(execPerms)) {
+                        throw new Error(entry + " has not all executable permissions!\n" +
+                                        "Should have: " + execPerms + "\nbut has: " + perm);
+                    }
+                } catch (UnsupportedOperationException e) {}
+            }
+        }
+    }
+}
--- a/jdk/test/sun/security/krb5/auto/KDC.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/sun/security/krb5/auto/KDC.java	Mon Aug 03 16:33:06 2015 -0700
@@ -745,9 +745,10 @@
                     bFlags[Krb5.TKT_OPTS_FORWARDABLE] = true;
                 }
             }
+            // We do not request for addresses for FORWARDED tickets
             if (options.containsKey(Option.CHECK_ADDRESSES)
                     && body.kdcOptions.get(KDCOptions.FORWARDED)
-                    && body.addresses == null) {
+                    && body.addresses != null) {
                 throw new KrbException(Krb5.KDC_ERR_BADOPTION);
             }
             if (body.kdcOptions.get(KDCOptions.FORWARDED) ||
--- a/jdk/test/sun/text/resources/LocaleData	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/sun/text/resources/LocaleData	Mon Aug 03 16:33:06 2015 -0700
@@ -8284,3 +8284,6 @@
 
 # bug #8075173
 FormatData/de/standalone.MonthAbbreviations/2=M\u00e4r
+
+# bug #8129361
+CurrencyNames//hrk=Kuna
--- a/jdk/test/sun/text/resources/LocaleDataTest.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/jdk/test/sun/text/resources/LocaleDataTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -36,7 +36,7 @@
  *      6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495
  *      7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509
  *      7114053 7074882 7040556 8008577 8013836 8021121 6192407 6931564 8027695
- *      8017142 8037343 8055222 8042126 8074791 8075173 8080774
+ *      8017142 8037343 8055222 8042126 8074791 8075173 8080774 8129361
  * @summary Verify locale data
  * @run main LocaleDataTest
  * @run main LocaleDataTest -cldr
--- a/langtools/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -317,3 +317,4 @@
 832e51533706b633d37a77282ae94d016b95e649 jdk9-b72
 1fccc38cd6f56cb2173195e317ba2784b484c2d1 jdk9-b73
 02681b7c4232ba5d43ccba794492db9502211ff0 jdk9-b74
+827915d1e55eac4f2e138f9b8c79d154862c2284 jdk9-b75
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Aug 03 16:33:06 2015 -0700
@@ -44,7 +44,6 @@
 import com.sun.tools.javac.code.Types.FunctionDescriptorLookupError;
 import com.sun.tools.javac.comp.Check.CheckContext;
 import com.sun.tools.javac.comp.DeferredAttr.AttrMode;
-import com.sun.tools.javac.comp.Infer.InferenceContext;
 import com.sun.tools.javac.comp.Infer.FreeTypeListener;
 import com.sun.tools.javac.jvm.*;
 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.Diamond;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java	Mon Aug 03 16:33:06 2015 -0700
@@ -43,13 +43,10 @@
 
 import com.sun.tools.javac.code.Lint;
 import com.sun.tools.javac.code.Lint.LintCategory;
-import com.sun.tools.javac.code.Scope.CompoundScope;
-import com.sun.tools.javac.code.Scope.NamedImportScope;
 import com.sun.tools.javac.code.Scope.WriteableScope;
 import com.sun.tools.javac.code.Type.*;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.comp.DeferredAttr.DeferredAttrContext;
-import com.sun.tools.javac.comp.Infer.InferenceContext;
 import com.sun.tools.javac.comp.Infer.FreeTypeListener;
 import com.sun.tools.javac.tree.JCTree.*;
 import com.sun.tools.javac.tree.JCTree.JCPolyExpression.*;
@@ -456,7 +453,7 @@
          */
         public Warner checkWarner(DiagnosticPosition pos, Type found, Type req);
 
-        public Infer.InferenceContext inferenceContext();
+        public InferenceContext inferenceContext();
 
         public DeferredAttr.DeferredAttrContext deferredAttrContext();
     }
@@ -486,7 +483,7 @@
             return enclosingContext.checkWarner(pos, found, req);
         }
 
-        public Infer.InferenceContext inferenceContext() {
+        public InferenceContext inferenceContext() {
             return enclosingContext.inferenceContext();
         }
 
@@ -535,7 +532,7 @@
     }
 
     Type checkType(final DiagnosticPosition pos, final Type found, final Type req, final CheckContext checkContext) {
-        final Infer.InferenceContext inferenceContext = checkContext.inferenceContext();
+        final InferenceContext inferenceContext = checkContext.inferenceContext();
         if (inferenceContext.free(req) || inferenceContext.free(found)) {
             inferenceContext.addFreeTypeListener(List.of(req, found), new FreeTypeListener() {
                 @Override
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon Aug 03 16:33:06 2015 -0700
@@ -38,7 +38,6 @@
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.code.Type.*;
 import com.sun.tools.javac.comp.Attr.ResultInfo;
-import com.sun.tools.javac.comp.Infer.InferenceContext;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionPhase;
 import com.sun.tools.javac.tree.JCTree.*;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
@@ -1013,7 +1012,7 @@
     class CheckStuckPolicy extends PolyScanner implements DeferredStuckPolicy, Infer.FreeTypeListener {
 
         Type pt;
-        Infer.InferenceContext inferenceContext;
+        InferenceContext inferenceContext;
         Set<Type> stuckVars = new LinkedHashSet<>();
         Set<Type> depVars = new LinkedHashSet<>();
 
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Aug 03 16:33:06 2015 -0700
@@ -25,7 +25,6 @@
 
 package com.sun.tools.javac.comp;
 
-import com.sun.tools.javac.code.Type.TypeMapping;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.JCTree.JCTypeCast;
 import com.sun.tools.javac.tree.TreeInfo;
@@ -112,6 +111,8 @@
                 && options.isUnset("useLegacyInference");
         dependenciesFolder = options.get("dumpInferenceGraphsTo");
         pendingGraphs = List.nil();
+
+        emptyContext = new InferenceContext(this, List.<Type>nil());
     }
 
     /** A value for prototypes that admit any type, including polymorphic ones. */
@@ -170,7 +171,7 @@
                             Resolve.MethodResolutionContext resolveContext,
                             Warner warn) throws InferenceException {
         //-System.err.println("instantiateMethod(" + tvars + ", " + mt + ", " + argtypes + ")"); //DEBUG
-        final InferenceContext inferenceContext = new InferenceContext(tvars);  //B0
+        final InferenceContext inferenceContext = new InferenceContext(this, tvars);  //B0
         inferenceException.clear();
         try {
             DeferredAttr.DeferredAttrContext deferredAttrContext =
@@ -410,7 +411,7 @@
     /**
       * Infer cyclic inference variables as described in 15.12.2.8.
       */
-    private void instantiateAsUninferredVars(List<Type> vars, InferenceContext inferenceContext) {
+    void instantiateAsUninferredVars(List<Type> vars, InferenceContext inferenceContext) {
         ListBuffer<Type> todo = new ListBuffer<>();
         //step 1 - create fresh tvars
         for (Type t : vars) {
@@ -528,7 +529,7 @@
         } else {
             Type formalInterface = funcInterface.tsym.type;
             InferenceContext funcInterfaceContext =
-                    new InferenceContext(funcInterface.tsym.type.getTypeArguments());
+                    new InferenceContext(this, funcInterface.tsym.type.getTypeArguments());
 
             Assert.check(paramTypes != null);
             //get constraints from explicit params (this is done by
@@ -710,7 +711,7 @@
          */
         CHECK_BOUNDS() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 uv.substBounds(inferenceContext.inferenceVars(), inferenceContext.instTypes(), infer.types);
                 infer.checkCompatibleUpperBounds(uv, inferenceContext);
                 if (uv.inst != null) {
@@ -746,7 +747,7 @@
          */
         EQ_CHECK_LEGACY() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 Type eq = null;
                 for (Type e : uv.getBounds(InferenceBound.EQ)) {
                     Assert.check(!inferenceContext.free(e));
@@ -780,7 +781,7 @@
         EQ_CHECK() {
             @Override
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type e : uv.getBounds(InferenceBound.EQ)) {
                     if (e.containsAny(inferenceContext.inferenceVars())) continue;
                     for (Type u : uv.getBounds(InferenceBound.UPPER)) {
@@ -807,7 +808,7 @@
          */
         CROSS_UPPER_LOWER() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b1 : uv.getBounds(InferenceBound.UPPER)) {
                     for (Type b2 : uv.getBounds(InferenceBound.LOWER)) {
                         if (!isSubtype(inferenceContext.asUndetVar(b2), inferenceContext.asUndetVar(b1), warn , infer)) {
@@ -830,7 +831,7 @@
          */
         CROSS_UPPER_EQ() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b1 : uv.getBounds(InferenceBound.UPPER)) {
                     for (Type b2 : uv.getBounds(InferenceBound.EQ)) {
                         if (!isSubtype(inferenceContext.asUndetVar(b2), inferenceContext.asUndetVar(b1), warn, infer)) {
@@ -853,7 +854,7 @@
          */
         CROSS_EQ_LOWER() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b1 : uv.getBounds(InferenceBound.EQ)) {
                     for (Type b2 : uv.getBounds(InferenceBound.LOWER)) {
                         if (!isSubtype(inferenceContext.asUndetVar(b2), inferenceContext.asUndetVar(b1), warn, infer)) {
@@ -878,7 +879,7 @@
         CROSS_UPPER_UPPER() {
             @Override
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 List<Type> boundList = uv.getBounds(InferenceBound.UPPER).stream()
                         .collect(infer.types.closureCollector(true, infer.types::isSameType));
                 List<Type> boundListTail = boundList.tail;
@@ -928,7 +929,7 @@
          */
         CROSS_EQ_EQ() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b1 : uv.getBounds(InferenceBound.EQ)) {
                     for (Type b2 : uv.getBounds(InferenceBound.EQ)) {
                         if (b1 != b2) {
@@ -952,7 +953,7 @@
          */
         PROP_UPPER() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b : uv.getBounds(InferenceBound.UPPER)) {
                     if (inferenceContext.inferenceVars().contains(b)) {
                         UndetVar uv2 = (UndetVar)inferenceContext.asUndetVar(b);
@@ -984,7 +985,7 @@
          */
         PROP_LOWER() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b : uv.getBounds(InferenceBound.LOWER)) {
                     if (inferenceContext.inferenceVars().contains(b)) {
                         UndetVar uv2 = (UndetVar)inferenceContext.asUndetVar(b);
@@ -1016,7 +1017,7 @@
          */
         PROP_EQ() {
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type b : uv.getBounds(InferenceBound.EQ)) {
                     if (inferenceContext.inferenceVars().contains(b)) {
                         UndetVar uv2 = (UndetVar)inferenceContext.asUndetVar(b);
@@ -1524,7 +1525,7 @@
         LOWER(InferenceBound.LOWER) {
             @Override
             Type solve(UndetVar uv, InferenceContext inferenceContext) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 List<Type> lobounds = filterBounds(uv, inferenceContext);
                 //note: lobounds should have at least one element
                 Type owntype = lobounds.tail.tail == null  ? lobounds.head : infer.types.lub(lobounds);
@@ -1553,7 +1554,7 @@
                     //not an unbounded undet var
                     return false;
                 }
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 for (Type db : t.getDeclaredBounds()) {
                     if (t.isInterface()) continue;
                     if (infer.types.asSuper(infer.syms.runtimeExceptionType, db.tsym) != null) {
@@ -1567,7 +1568,7 @@
 
             @Override
             Type solve(UndetVar uv, InferenceContext inferenceContext) {
-                return inferenceContext.infer().syms.runtimeExceptionType;
+                return inferenceContext.infer.syms.runtimeExceptionType;
             }
         },
         /**
@@ -1577,7 +1578,7 @@
         UPPER(InferenceBound.UPPER) {
             @Override
             Type solve(UndetVar uv, InferenceContext inferenceContext) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 List<Type> hibounds = filterBounds(uv, inferenceContext);
                 //note: hibounds should have at least one element
                 Type owntype = hibounds.tail.tail == null  ? hibounds.head : infer.types.glb(hibounds);
@@ -1618,7 +1619,7 @@
 
             @Override
             Type solve(UndetVar uv, InferenceContext inferenceContext) {
-                Infer infer = inferenceContext.infer();
+                Infer infer = inferenceContext.infer;
                 Type upper = UPPER.filterBounds(uv, inferenceContext).nonEmpty() ?
                         UPPER.solve(uv, inferenceContext) :
                         infer.syms.objectType;
@@ -2082,419 +2083,6 @@
         void typesInferred(InferenceContext inferenceContext);
     }
 
-    /**
-     * An inference context keeps track of the set of variables that are free
-     * in the current context. It provides utility methods for opening/closing
-     * types to their corresponding free/closed forms. It also provide hooks for
-     * attaching deferred post-inference action (see PendingCheck). Finally,
-     * it can be used as an entry point for performing upper/lower bound inference
-     * (see InferenceKind).
-     */
-     class InferenceContext {
-
-        /** list of inference vars as undet vars */
-        List<Type> undetvars;
-
-        /** list of inference vars in this context */
-        List<Type> inferencevars;
-
-        Map<FreeTypeListener, List<Type>> freeTypeListeners = new HashMap<>();
-
-        List<FreeTypeListener> freetypeListeners = List.nil();
-
-        public InferenceContext(List<Type> inferencevars) {
-            this.undetvars = inferencevars.map(fromTypeVarFun);
-            this.inferencevars = inferencevars;
-        }
-        //where
-            TypeMapping<Void> fromTypeVarFun = new TypeMapping<Void>() {
-                @Override
-                public Type visitTypeVar(TypeVar tv, Void aVoid) {
-                    return new UndetVar(tv, types);
-                }
-
-                @Override
-                public Type visitCapturedType(CapturedType t, Void aVoid) {
-                    return new CapturedUndetVar(t, types);
-                }
-            };
-
-        /**
-         * add a new inference var to this inference context
-         */
-        void addVar(TypeVar t) {
-            this.undetvars = this.undetvars.prepend(fromTypeVarFun.apply(t));
-            this.inferencevars = this.inferencevars.prepend(t);
-        }
-
-        /**
-         * returns the list of free variables (as type-variables) in this
-         * inference context
-         */
-        List<Type> inferenceVars() {
-            return inferencevars;
-        }
-
-        /**
-         * returns the list of uninstantiated variables (as type-variables) in this
-         * inference context
-         */
-        List<Type> restvars() {
-            return filterVars(new Filter<UndetVar>() {
-                public boolean accepts(UndetVar uv) {
-                    return uv.inst == null;
-                }
-            });
-        }
-
-        /**
-         * returns the list of instantiated variables (as type-variables) in this
-         * inference context
-         */
-        List<Type> instvars() {
-            return filterVars(new Filter<UndetVar>() {
-                public boolean accepts(UndetVar uv) {
-                    return uv.inst != null;
-                }
-            });
-        }
-
-        /**
-         * Get list of bounded inference variables (where bound is other than
-         * declared bounds).
-         */
-        final List<Type> boundedVars() {
-            return filterVars(new Filter<UndetVar>() {
-                public boolean accepts(UndetVar uv) {
-                    return uv.getBounds(InferenceBound.UPPER)
-                             .diff(uv.getDeclaredBounds())
-                             .appendList(uv.getBounds(InferenceBound.EQ, InferenceBound.LOWER)).nonEmpty();
-                }
-            });
-        }
-
-        /* Returns the corresponding inference variables.
-         */
-        private List<Type> filterVars(Filter<UndetVar> fu) {
-            ListBuffer<Type> res = new ListBuffer<>();
-            for (Type t : undetvars) {
-                UndetVar uv = (UndetVar)t;
-                if (fu.accepts(uv)) {
-                    res.append(uv.qtype);
-                }
-            }
-            return res.toList();
-        }
-
-        /**
-         * is this type free?
-         */
-        final boolean free(Type t) {
-            return t.containsAny(inferencevars);
-        }
-
-        final boolean free(List<Type> ts) {
-            for (Type t : ts) {
-                if (free(t)) return true;
-            }
-            return false;
-        }
-
-        /**
-         * Returns a list of free variables in a given type
-         */
-        final List<Type> freeVarsIn(Type t) {
-            ListBuffer<Type> buf = new ListBuffer<>();
-            for (Type iv : inferenceVars()) {
-                if (t.contains(iv)) {
-                    buf.add(iv);
-                }
-            }
-            return buf.toList();
-        }
-
-        final List<Type> freeVarsIn(List<Type> ts) {
-            ListBuffer<Type> buf = new ListBuffer<>();
-            for (Type t : ts) {
-                buf.appendList(freeVarsIn(t));
-            }
-            ListBuffer<Type> buf2 = new ListBuffer<>();
-            for (Type t : buf) {
-                if (!buf2.contains(t)) {
-                    buf2.add(t);
-                }
-            }
-            return buf2.toList();
-        }
-
-        /**
-         * Replace all free variables in a given type with corresponding
-         * undet vars (used ahead of subtyping/compatibility checks to allow propagation
-         * of inference constraints).
-         */
-        final Type asUndetVar(Type t) {
-            return types.subst(t, inferencevars, undetvars);
-        }
-
-        final List<Type> asUndetVars(List<Type> ts) {
-            ListBuffer<Type> buf = new ListBuffer<>();
-            for (Type t : ts) {
-                buf.append(asUndetVar(t));
-            }
-            return buf.toList();
-        }
-
-        List<Type> instTypes() {
-            ListBuffer<Type> buf = new ListBuffer<>();
-            for (Type t : undetvars) {
-                UndetVar uv = (UndetVar)t;
-                buf.append(uv.inst != null ? uv.inst : uv.qtype);
-            }
-            return buf.toList();
-        }
-
-        /**
-         * Replace all free variables in a given type with corresponding
-         * instantiated types - if one or more free variable has not been
-         * fully instantiated, it will still be available in the resulting type.
-         */
-        Type asInstType(Type t) {
-            return types.subst(t, inferencevars, instTypes());
-        }
-
-        List<Type> asInstTypes(List<Type> ts) {
-            ListBuffer<Type> buf = new ListBuffer<>();
-            for (Type t : ts) {
-                buf.append(asInstType(t));
-            }
-            return buf.toList();
-        }
-
-        /**
-         * Add custom hook for performing post-inference action
-         */
-        void addFreeTypeListener(List<Type> types, FreeTypeListener ftl) {
-            freeTypeListeners.put(ftl, freeVarsIn(types));
-        }
-
-        /**
-         * Mark the inference context as complete and trigger evaluation
-         * of all deferred checks.
-         */
-        void notifyChange() {
-            notifyChange(inferencevars.diff(restvars()));
-        }
-
-        void notifyChange(List<Type> inferredVars) {
-            InferenceException thrownEx = null;
-            for (Map.Entry<FreeTypeListener, List<Type>> entry :
-                    new HashMap<>(freeTypeListeners).entrySet()) {
-                if (!Type.containsAny(entry.getValue(), inferencevars.diff(inferredVars))) {
-                    try {
-                        entry.getKey().typesInferred(this);
-                        freeTypeListeners.remove(entry.getKey());
-                    } catch (InferenceException ex) {
-                        if (thrownEx == null) {
-                            thrownEx = ex;
-                        }
-                    }
-                }
-            }
-            //inference exception multiplexing - present any inference exception
-            //thrown when processing listeners as a single one
-            if (thrownEx != null) {
-                throw thrownEx;
-            }
-        }
-
-        /**
-         * Save the state of this inference context
-         */
-        List<Type> save() {
-            ListBuffer<Type> buf = new ListBuffer<>();
-            for (Type t : undetvars) {
-                UndetVar uv = (UndetVar)t;
-                UndetVar uv2 = new UndetVar((TypeVar)uv.qtype, types);
-                for (InferenceBound ib : InferenceBound.values()) {
-                    for (Type b : uv.getBounds(ib)) {
-                        uv2.addBound(ib, b, types);
-                    }
-                }
-                uv2.inst = uv.inst;
-                buf.add(uv2);
-            }
-            return buf.toList();
-        }
-
-        /**
-         * Restore the state of this inference context to the previous known checkpoint
-         */
-        void rollback(List<Type> saved_undet) {
-             Assert.check(saved_undet != null && saved_undet.length() == undetvars.length());
-            //restore bounds (note: we need to preserve the old instances)
-            for (Type t : undetvars) {
-                UndetVar uv = (UndetVar)t;
-                UndetVar uv_saved = (UndetVar)saved_undet.head;
-                for (InferenceBound ib : InferenceBound.values()) {
-                    uv.setBounds(ib, uv_saved.getBounds(ib));
-                }
-                uv.inst = uv_saved.inst;
-                saved_undet = saved_undet.tail;
-            }
-        }
-
-        /**
-         * Copy variable in this inference context to the given context
-         */
-        void dupTo(final InferenceContext that) {
-            that.inferencevars = that.inferencevars.appendList(
-                    inferencevars.diff(that.inferencevars));
-            that.undetvars = that.undetvars.appendList(
-                    undetvars.diff(that.undetvars));
-            //set up listeners to notify original inference contexts as
-            //propagated vars are inferred in new context
-            for (Type t : inferencevars) {
-                that.freeTypeListeners.put(new FreeTypeListener() {
-                    public void typesInferred(InferenceContext inferenceContext) {
-                        InferenceContext.this.notifyChange();
-                    }
-                }, List.of(t));
-            }
-        }
-
-        private void solve(GraphStrategy ss, Warner warn) {
-            solve(ss, new HashMap<Type, Set<Type>>(), warn);
-        }
-
-        /**
-         * Solve with given graph strategy.
-         */
-        private void solve(GraphStrategy ss, Map<Type, Set<Type>> stuckDeps, Warner warn) {
-            GraphSolver s = new GraphSolver(this, stuckDeps, warn);
-            s.solve(ss);
-        }
-
-        /**
-         * Solve all variables in this context.
-         */
-        public void solve(Warner warn) {
-            solve(new LeafSolver() {
-                public boolean done() {
-                    return restvars().isEmpty();
-                }
-            }, warn);
-        }
-
-        /**
-         * Solve all variables in the given list.
-         */
-        public void solve(final List<Type> vars, Warner warn) {
-            solve(new BestLeafSolver(vars) {
-                public boolean done() {
-                    return !free(asInstTypes(vars));
-                }
-            }, warn);
-        }
-
-        /**
-         * Solve at least one variable in given list.
-         */
-        public void solveAny(List<Type> varsToSolve, Map<Type, Set<Type>> optDeps, Warner warn) {
-            solve(new BestLeafSolver(varsToSolve.intersect(restvars())) {
-                public boolean done() {
-                    return instvars().intersect(varsToSolve).nonEmpty();
-                }
-            }, optDeps, warn);
-        }
-
-        /**
-         * Apply a set of inference steps
-         */
-        private boolean solveBasic(EnumSet<InferenceStep> steps) {
-            return solveBasic(inferencevars, steps);
-        }
-
-        private boolean solveBasic(List<Type> varsToSolve, EnumSet<InferenceStep> steps) {
-            boolean changed = false;
-            for (Type t : varsToSolve.intersect(restvars())) {
-                UndetVar uv = (UndetVar)asUndetVar(t);
-                for (InferenceStep step : steps) {
-                    if (step.accepts(uv, this)) {
-                        uv.inst = step.solve(uv, this);
-                        changed = true;
-                        break;
-                    }
-                }
-            }
-            return changed;
-        }
-
-        /**
-         * Instantiate inference variables in legacy mode (JLS 15.12.2.7, 15.12.2.8).
-         * During overload resolution, instantiation is done by doing a partial
-         * inference process using eq/lower bound instantiation. During check,
-         * we also instantiate any remaining vars by repeatedly using eq/upper
-         * instantiation, until all variables are solved.
-         */
-        public void solveLegacy(boolean partial, Warner warn, EnumSet<InferenceStep> steps) {
-            while (true) {
-                boolean stuck = !solveBasic(steps);
-                if (restvars().isEmpty() || partial) {
-                    //all variables have been instantiated - exit
-                    break;
-                } else if (stuck) {
-                    //some variables could not be instantiated because of cycles in
-                    //upper bounds - provide a (possibly recursive) default instantiation
-                    instantiateAsUninferredVars(restvars(), this);
-                    break;
-                } else {
-                    //some variables have been instantiated - replace newly instantiated
-                    //variables in remaining upper bounds and continue
-                    for (Type t : undetvars) {
-                        UndetVar uv = (UndetVar)t;
-                        uv.substBounds(inferenceVars(), instTypes(), types);
-                    }
-                }
-            }
-            checkWithinBounds(this, warn);
-        }
-
-        private Infer infer() {
-            //back-door to infer
-            return Infer.this;
-        }
-
-        @Override
-        public String toString() {
-            return "Inference vars: " + inferencevars + '\n' +
-                   "Undet vars: " + undetvars;
-        }
-
-        /* Method Types.capture() generates a new type every time it's applied
-         * to a wildcard parameterized type. This is intended functionality but
-         * there are some cases when what you need is not to generate a new
-         * captured type but to check that a previously generated captured type
-         * is correct. There are cases when caching a captured type for later
-         * reuse is sound. In general two captures from the same AST are equal.
-         * This is why the tree is used as the key of the map below. This map
-         * stores a Type per AST.
-         */
-        Map<JCTree, Type> captureTypeCache = new HashMap<>();
-
-        Type cachedCapture(JCTree tree, Type t, boolean readOnly) {
-            Type captured = captureTypeCache.get(tree);
-            if (captured != null) {
-                return captured;
-            }
-
-            Type result = types.capture(t);
-            if (result != t && !readOnly) { // then t is a wildcard parameterized type
-                captureTypeCache.put(tree, result);
-            }
-            return result;
-        }
-    }
-
-    final InferenceContext emptyContext = new InferenceContext(List.<Type>nil());
+    final InferenceContext emptyContext;
     // </editor-fold>
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/InferenceContext.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,480 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.tools.javac.comp;
+
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.sun.tools.javac.code.Symtab;
+import com.sun.tools.javac.code.Type;
+import com.sun.tools.javac.code.Type.CapturedType;
+import com.sun.tools.javac.code.Type.CapturedUndetVar;
+import com.sun.tools.javac.code.Type.TypeMapping;
+import com.sun.tools.javac.code.Type.TypeVar;
+import com.sun.tools.javac.code.Type.UndetVar;
+import com.sun.tools.javac.code.Type.UndetVar.InferenceBound;
+import com.sun.tools.javac.code.Types;
+import com.sun.tools.javac.comp.Infer.BestLeafSolver;
+import com.sun.tools.javac.comp.Infer.FreeTypeListener;
+import com.sun.tools.javac.comp.Infer.GraphSolver;
+import com.sun.tools.javac.comp.Infer.GraphStrategy;
+import com.sun.tools.javac.comp.Infer.InferenceException;
+import com.sun.tools.javac.comp.Infer.InferenceStep;
+import com.sun.tools.javac.comp.Infer.LeafSolver;
+import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.TreeMaker;
+import com.sun.tools.javac.util.Assert;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Filter;
+import com.sun.tools.javac.util.JCDiagnostic;
+import com.sun.tools.javac.util.JCDiagnostic.Factory;
+import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.ListBuffer;
+import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.Warner;
+
+/**
+ * An inference context keeps track of the set of variables that are free
+ * in the current context. It provides utility methods for opening/closing
+ * types to their corresponding free/closed forms. It also provide hooks for
+ * attaching deferred post-inference action (see PendingCheck). Finally,
+ * it can be used as an entry point for performing upper/lower bound inference
+ * (see InferenceKind).
+ *
+ * <p><b>This is NOT part of any supported API.
+ * If you write code that depends on this, you do so at your own risk.
+ * This code and its internal interfaces are subject to change or
+ * deletion without notice.</b>
+ */
+class InferenceContext {
+
+    /** list of inference vars as undet vars */
+    List<Type> undetvars;
+
+    /** list of inference vars in this context */
+    List<Type> inferencevars;
+
+    Map<FreeTypeListener, List<Type>> freeTypeListeners = new HashMap<>();
+
+    List<FreeTypeListener> freetypeListeners = List.nil();
+
+    Types types;
+    Infer infer;
+
+    public InferenceContext(Infer infer, List<Type> inferencevars) {
+        this.inferencevars = inferencevars;
+
+        this.infer = infer;
+        this.types = infer.types;
+
+        fromTypeVarFun = new TypeMapping<Void>() {
+            @Override
+            public Type visitTypeVar(TypeVar tv, Void aVoid) {
+                return new UndetVar(tv, types);
+            }
+
+            @Override
+            public Type visitCapturedType(CapturedType t, Void aVoid) {
+                return new CapturedUndetVar(t, types);
+            }
+        };
+        this.undetvars = inferencevars.map(fromTypeVarFun);
+    }
+
+    TypeMapping<Void> fromTypeVarFun;
+
+    /**
+     * add a new inference var to this inference context
+     */
+    void addVar(TypeVar t) {
+        this.undetvars = this.undetvars.prepend(fromTypeVarFun.apply(t));
+        this.inferencevars = this.inferencevars.prepend(t);
+    }
+
+    /**
+     * returns the list of free variables (as type-variables) in this
+     * inference context
+     */
+    List<Type> inferenceVars() {
+        return inferencevars;
+    }
+
+    /**
+     * returns the list of uninstantiated variables (as type-variables) in this
+     * inference context
+     */
+    List<Type> restvars() {
+        return filterVars(new Filter<UndetVar>() {
+            public boolean accepts(UndetVar uv) {
+                return uv.inst == null;
+            }
+        });
+    }
+
+    /**
+     * returns the list of instantiated variables (as type-variables) in this
+     * inference context
+     */
+    List<Type> instvars() {
+        return filterVars(new Filter<UndetVar>() {
+            public boolean accepts(UndetVar uv) {
+                return uv.inst != null;
+            }
+        });
+    }
+
+    /**
+     * Get list of bounded inference variables (where bound is other than
+     * declared bounds).
+     */
+    final List<Type> boundedVars() {
+        return filterVars(new Filter<UndetVar>() {
+            public boolean accepts(UndetVar uv) {
+                return uv.getBounds(InferenceBound.UPPER)
+                         .diff(uv.getDeclaredBounds())
+                         .appendList(uv.getBounds(InferenceBound.EQ, InferenceBound.LOWER)).nonEmpty();
+            }
+        });
+    }
+
+    /* Returns the corresponding inference variables.
+     */
+    private List<Type> filterVars(Filter<UndetVar> fu) {
+        ListBuffer<Type> res = new ListBuffer<>();
+        for (Type t : undetvars) {
+            UndetVar uv = (UndetVar)t;
+            if (fu.accepts(uv)) {
+                res.append(uv.qtype);
+            }
+        }
+        return res.toList();
+    }
+
+    /**
+     * is this type free?
+     */
+    final boolean free(Type t) {
+        return t.containsAny(inferencevars);
+    }
+
+    final boolean free(List<Type> ts) {
+        for (Type t : ts) {
+            if (free(t)) return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns a list of free variables in a given type
+     */
+    final List<Type> freeVarsIn(Type t) {
+        ListBuffer<Type> buf = new ListBuffer<>();
+        for (Type iv : inferenceVars()) {
+            if (t.contains(iv)) {
+                buf.add(iv);
+            }
+        }
+        return buf.toList();
+    }
+
+    final List<Type> freeVarsIn(List<Type> ts) {
+        ListBuffer<Type> buf = new ListBuffer<>();
+        for (Type t : ts) {
+            buf.appendList(freeVarsIn(t));
+        }
+        ListBuffer<Type> buf2 = new ListBuffer<>();
+        for (Type t : buf) {
+            if (!buf2.contains(t)) {
+                buf2.add(t);
+            }
+        }
+        return buf2.toList();
+    }
+
+    /**
+     * Replace all free variables in a given type with corresponding
+     * undet vars (used ahead of subtyping/compatibility checks to allow propagation
+     * of inference constraints).
+     */
+    final Type asUndetVar(Type t) {
+        return types.subst(t, inferencevars, undetvars);
+    }
+
+    final List<Type> asUndetVars(List<Type> ts) {
+        ListBuffer<Type> buf = new ListBuffer<>();
+        for (Type t : ts) {
+            buf.append(asUndetVar(t));
+        }
+        return buf.toList();
+    }
+
+    List<Type> instTypes() {
+        ListBuffer<Type> buf = new ListBuffer<>();
+        for (Type t : undetvars) {
+            UndetVar uv = (UndetVar)t;
+            buf.append(uv.inst != null ? uv.inst : uv.qtype);
+        }
+        return buf.toList();
+    }
+
+    /**
+     * Replace all free variables in a given type with corresponding
+     * instantiated types - if one or more free variable has not been
+     * fully instantiated, it will still be available in the resulting type.
+     */
+    Type asInstType(Type t) {
+        return types.subst(t, inferencevars, instTypes());
+    }
+
+    List<Type> asInstTypes(List<Type> ts) {
+        ListBuffer<Type> buf = new ListBuffer<>();
+        for (Type t : ts) {
+            buf.append(asInstType(t));
+        }
+        return buf.toList();
+    }
+
+    /**
+     * Add custom hook for performing post-inference action
+     */
+    void addFreeTypeListener(List<Type> types, FreeTypeListener ftl) {
+        freeTypeListeners.put(ftl, freeVarsIn(types));
+    }
+
+    /**
+     * Mark the inference context as complete and trigger evaluation
+     * of all deferred checks.
+     */
+    void notifyChange() {
+        notifyChange(inferencevars.diff(restvars()));
+    }
+
+    void notifyChange(List<Type> inferredVars) {
+        InferenceException thrownEx = null;
+        for (Map.Entry<FreeTypeListener, List<Type>> entry :
+                new HashMap<>(freeTypeListeners).entrySet()) {
+            if (!Type.containsAny(entry.getValue(), inferencevars.diff(inferredVars))) {
+                try {
+                    entry.getKey().typesInferred(this);
+                    freeTypeListeners.remove(entry.getKey());
+                } catch (InferenceException ex) {
+                    if (thrownEx == null) {
+                        thrownEx = ex;
+                    }
+                }
+            }
+        }
+        //inference exception multiplexing - present any inference exception
+        //thrown when processing listeners as a single one
+        if (thrownEx != null) {
+            throw thrownEx;
+        }
+    }
+
+    /**
+     * Save the state of this inference context
+     */
+    List<Type> save() {
+        ListBuffer<Type> buf = new ListBuffer<>();
+        for (Type t : undetvars) {
+            UndetVar uv = (UndetVar)t;
+            UndetVar uv2 = new UndetVar((TypeVar)uv.qtype, types);
+            for (InferenceBound ib : InferenceBound.values()) {
+                for (Type b : uv.getBounds(ib)) {
+                    uv2.addBound(ib, b, types);
+                }
+            }
+            uv2.inst = uv.inst;
+            buf.add(uv2);
+        }
+        return buf.toList();
+    }
+
+    /**
+     * Restore the state of this inference context to the previous known checkpoint
+     */
+    void rollback(List<Type> saved_undet) {
+         Assert.check(saved_undet != null && saved_undet.length() == undetvars.length());
+        //restore bounds (note: we need to preserve the old instances)
+        for (Type t : undetvars) {
+            UndetVar uv = (UndetVar)t;
+            UndetVar uv_saved = (UndetVar)saved_undet.head;
+            for (InferenceBound ib : InferenceBound.values()) {
+                uv.setBounds(ib, uv_saved.getBounds(ib));
+            }
+            uv.inst = uv_saved.inst;
+            saved_undet = saved_undet.tail;
+        }
+    }
+
+    /**
+     * Copy variable in this inference context to the given context
+     */
+    void dupTo(final InferenceContext that) {
+        that.inferencevars = that.inferencevars.appendList(
+                inferencevars.diff(that.inferencevars));
+        that.undetvars = that.undetvars.appendList(
+                undetvars.diff(that.undetvars));
+        //set up listeners to notify original inference contexts as
+        //propagated vars are inferred in new context
+        for (Type t : inferencevars) {
+            that.freeTypeListeners.put(new FreeTypeListener() {
+                public void typesInferred(InferenceContext inferenceContext) {
+                    InferenceContext.this.notifyChange();
+                }
+            }, List.of(t));
+        }
+    }
+
+    private void solve(GraphStrategy ss, Warner warn) {
+        solve(ss, new HashMap<Type, Set<Type>>(), warn);
+    }
+
+    /**
+     * Solve with given graph strategy.
+     */
+    private void solve(GraphStrategy ss, Map<Type, Set<Type>> stuckDeps, Warner warn) {
+        GraphSolver s = infer.new GraphSolver(this, stuckDeps, warn);
+        s.solve(ss);
+    }
+
+    /**
+     * Solve all variables in this context.
+     */
+    public void solve(Warner warn) {
+        solve(infer.new LeafSolver() {
+            public boolean done() {
+                return restvars().isEmpty();
+            }
+        }, warn);
+    }
+
+    /**
+     * Solve all variables in the given list.
+     */
+    public void solve(final List<Type> vars, Warner warn) {
+        solve(infer.new BestLeafSolver(vars) {
+            public boolean done() {
+                return !free(asInstTypes(vars));
+            }
+        }, warn);
+    }
+
+    /**
+     * Solve at least one variable in given list.
+     */
+    public void solveAny(List<Type> varsToSolve, Map<Type, Set<Type>> optDeps, Warner warn) {
+        solve(infer.new BestLeafSolver(varsToSolve.intersect(restvars())) {
+            public boolean done() {
+                return instvars().intersect(varsToSolve).nonEmpty();
+            }
+        }, optDeps, warn);
+    }
+
+    /**
+     * Apply a set of inference steps
+     */
+    private boolean solveBasic(EnumSet<InferenceStep> steps) {
+        return solveBasic(inferencevars, steps);
+    }
+
+    boolean solveBasic(List<Type> varsToSolve, EnumSet<InferenceStep> steps) {
+        boolean changed = false;
+        for (Type t : varsToSolve.intersect(restvars())) {
+            UndetVar uv = (UndetVar)asUndetVar(t);
+            for (InferenceStep step : steps) {
+                if (step.accepts(uv, this)) {
+                    uv.inst = step.solve(uv, this);
+                    changed = true;
+                    break;
+                }
+            }
+        }
+        return changed;
+    }
+
+    /**
+     * Instantiate inference variables in legacy mode (JLS 15.12.2.7, 15.12.2.8).
+     * During overload resolution, instantiation is done by doing a partial
+     * inference process using eq/lower bound instantiation. During check,
+     * we also instantiate any remaining vars by repeatedly using eq/upper
+     * instantiation, until all variables are solved.
+     */
+    public void solveLegacy(boolean partial, Warner warn, EnumSet<InferenceStep> steps) {
+        while (true) {
+            boolean stuck = !solveBasic(steps);
+            if (restvars().isEmpty() || partial) {
+                //all variables have been instantiated - exit
+                break;
+            } else if (stuck) {
+                //some variables could not be instantiated because of cycles in
+                //upper bounds - provide a (possibly recursive) default instantiation
+                infer.instantiateAsUninferredVars(restvars(), this);
+                break;
+            } else {
+                //some variables have been instantiated - replace newly instantiated
+                //variables in remaining upper bounds and continue
+                for (Type t : undetvars) {
+                    UndetVar uv = (UndetVar)t;
+                    uv.substBounds(inferenceVars(), instTypes(), types);
+                }
+            }
+        }
+        infer.checkWithinBounds(this, warn);
+    }
+
+    @Override
+    public String toString() {
+        return "Inference vars: " + inferencevars + '\n' +
+               "Undet vars: " + undetvars;
+    }
+
+    /* Method Types.capture() generates a new type every time it's applied
+     * to a wildcard parameterized type. This is intended functionality but
+     * there are some cases when what you need is not to generate a new
+     * captured type but to check that a previously generated captured type
+     * is correct. There are cases when caching a captured type for later
+     * reuse is sound. In general two captures from the same AST are equal.
+     * This is why the tree is used as the key of the map below. This map
+     * stores a Type per AST.
+     */
+    Map<JCTree, Type> captureTypeCache = new HashMap<>();
+
+    Type cachedCapture(JCTree tree, Type t, boolean readOnly) {
+        Type captured = captureTypeCache.get(tree);
+        if (captured != null) {
+            return captured;
+        }
+
+        Type result = types.capture(t);
+        if (result != t && !readOnly) { // then t is a wildcard parameterized type
+            captureTypeCache.put(tree, result);
+        }
+        return result;
+    }
+}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java	Mon Aug 03 16:33:06 2015 -0700
@@ -3084,7 +3084,7 @@
             if (!unboxedTarget.hasTag(NONE)) {
                 if (!types.isSubtype(tree.type, unboxedTarget)) //e.g. Character c = 89;
                     tree.type = unboxedTarget.constType(tree.type.constValue());
-                return (T)boxPrimitive((JCExpression)tree, type);
+                return (T)boxPrimitive((JCExpression)tree, types.erasure(type));
             } else {
                 tree = (T)boxPrimitive((JCExpression)tree);
             }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Aug 03 16:33:06 2015 -0700
@@ -35,7 +35,6 @@
 import com.sun.tools.javac.comp.DeferredAttr.AttrMode;
 import com.sun.tools.javac.comp.DeferredAttr.DeferredAttrContext;
 import com.sun.tools.javac.comp.DeferredAttr.DeferredType;
-import com.sun.tools.javac.comp.Infer.InferenceContext;
 import com.sun.tools.javac.comp.Infer.FreeTypeListener;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionContext.Candidate;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionDiagHelper.Template;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Arguments.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Arguments.java	Mon Aug 03 16:33:06 2015 -0700
@@ -33,11 +33,8 @@
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
-import java.util.Optional;
-import java.util.ServiceLoader;
 import java.util.Set;
 import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
 
 import javax.tools.JavaFileManager;
 import javax.tools.JavaFileObject;
@@ -53,8 +50,7 @@
 import com.sun.tools.javac.jvm.Target;
 import com.sun.tools.javac.main.OptionHelper.GrumpyHelper;
 import com.sun.tools.javac.platform.PlatformDescription;
-import com.sun.tools.javac.platform.PlatformProvider;
-import com.sun.tools.javac.platform.PlatformProvider.PlatformNotSupported;
+import com.sun.tools.javac.platform.PlatformUtils;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.util.ListBuffer;
@@ -297,7 +293,7 @@
                 Option.TARGET);
 
         if (platformString != null) {
-            PlatformDescription platformDescription = lookupDescription(platformString);
+            PlatformDescription platformDescription = PlatformUtils.lookupPlatformDescription(platformString);
 
             if (platformDescription == null) {
                 error("err.unsupported.release.version", platformString);
@@ -502,31 +498,6 @@
         return !errors;
     }
 
-    private PlatformDescription lookupDescription(String platformString) {
-        int separator = platformString.indexOf(":");
-        String platformProviderName =
-                separator != (-1) ? platformString.substring(0, separator) : platformString;
-        String platformOptions =
-                separator != (-1) ? platformString.substring(separator + 1) : "";
-        Iterable<PlatformProvider> providers =
-                ServiceLoader.load(PlatformProvider.class, Arguments.class.getClassLoader());
-
-        return StreamSupport.stream(providers.spliterator(), false)
-                            .filter(provider -> StreamSupport.stream(provider.getSupportedPlatformNames()
-                                                                             .spliterator(),
-                                                                     false)
-                                                             .anyMatch(platformProviderName::equals))
-                            .findFirst()
-                            .flatMap(provider -> {
-                                try {
-                                    return Optional.of(provider.getPlatform(platformProviderName, platformOptions));
-                                } catch (PlatformNotSupported pns) {
-                                    return Optional.empty();
-                                }
-                            })
-                            .orElse(null);
-    }
-
     /**
      * Returns true if there are no files or classes specified for use.
      * @return true if there are no files or classes specified for use
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java	Mon Aug 03 16:33:06 2015 -0700
@@ -581,6 +581,10 @@
      * Ident = IDENTIFIER
      */
     protected Name ident() {
+        return ident(false);
+    }
+
+    protected Name ident(boolean advanceOnErrors) {
         if (token.kind == IDENTIFIER) {
             Name name = token.name();
             nextToken();
@@ -616,6 +620,9 @@
             return name;
         } else {
             accept(IDENTIFIER);
+            if (advanceOnErrors) {
+                nextToken();
+            }
             return names.error;
         }
     }
@@ -1413,7 +1420,7 @@
                         // is the mode check needed?
                         tyannos = typeAnnotationsOpt();
                     }
-                    t = toP(F.at(pos1).Select(t, ident()));
+                    t = toP(F.at(pos1).Select(t, ident(true)));
                     if (tyannos != null && tyannos.nonEmpty()) {
                         t = toP(F.at(tyannos.head.pos).AnnotatedType(tyannos, t));
                     }
@@ -2978,7 +2985,7 @@
             name = token.name();
             nextToken();
         } else {
-            if (allowThisIdent) {
+            if (allowThisIdent && !lambdaParameter) {
                 JCExpression pn = qualident(false);
                 if (pn.hasTag(Tag.IDENT) && ((JCIdent)pn).name != names._this) {
                     name = ((JCIdent)pn).name;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/PlatformUtils.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tools.javac.platform;
+
+import com.sun.tools.javac.main.Arguments;
+import com.sun.tools.javac.platform.PlatformProvider.PlatformNotSupported;
+import java.util.Optional;
+import java.util.ServiceLoader;
+import java.util.stream.StreamSupport;
+
+/** Internal utilities to work with PlatformDescriptions.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class PlatformUtils {
+
+    public static PlatformDescription lookupPlatformDescription(String platformString) {
+        int separator = platformString.indexOf(":");
+        String platformProviderName =
+                separator != (-1) ? platformString.substring(0, separator) : platformString;
+        String platformOptions =
+                separator != (-1) ? platformString.substring(separator + 1) : "";
+        Iterable<PlatformProvider> providers =
+                ServiceLoader.load(PlatformProvider.class, Arguments.class.getClassLoader());
+
+        return StreamSupport.stream(providers.spliterator(), false)
+                            .filter(provider -> StreamSupport.stream(provider.getSupportedPlatformNames()
+                                                                             .spliterator(),
+                                                                     false)
+                                                             .anyMatch(platformProviderName::equals))
+                            .findFirst()
+                            .flatMap(provider -> {
+                                try {
+                                    return Optional.of(provider.getPlatform(platformProviderName, platformOptions));
+                                } catch (PlatformNotSupported pns) {
+                                    return Optional.empty();
+                                }
+                            })
+                            .orElse(null);
+    }
+
+}
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -135,6 +135,7 @@
     public Content getSignature(ConstructorDoc constructor) {
         Content pre = new HtmlTree(HtmlTag.PRE);
         writer.addAnnotationInfo(constructor, pre);
+        int annotationLength = pre.charCount();
         addModifiers(constructor, pre);
         if (configuration.linksource) {
             Content constructorName = new StringContent(constructor.name());
@@ -142,7 +143,7 @@
         } else {
             addName(constructor.name(), pre);
         }
-        int indent = pre.charCount();
+        int indent = pre.charCount() - annotationLength;
         addParameters(constructor, pre, indent);
         addExceptions(constructor, pre, indent);
         return pre;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1936,7 +1936,9 @@
         for (Content annotation: annotations) {
             htmltree.addContent(sep);
             htmltree.addContent(annotation);
-            sep = " ";
+            if (!lineBreak) {
+                sep = " ";
+            }
         }
         return true;
     }
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java	Mon Aug 03 16:33:06 2015 -0700
@@ -128,6 +128,7 @@
     public Content getSignature(MethodDoc method) {
         Content pre = new HtmlTree(HtmlTag.PRE);
         writer.addAnnotationInfo(method, pre);
+        int annotationLength = pre.charCount();
         addModifiers(method, pre);
         addTypeParameters(method, pre);
         addReturnType(method, pre);
@@ -137,7 +138,7 @@
         } else {
             addName(method.name(), pre);
         }
-        int indent = pre.charCount();
+        int indent = pre.charCount() - annotationLength;
         addParameters(method, pre, indent);
         addExceptions(method, pre, indent);
         return pre;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java	Mon Aug 03 16:33:06 2015 -0700
@@ -29,20 +29,24 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Map;
 import java.util.Objects;
 
 import javax.tools.JavaFileManager;
 import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
 
 import com.sun.javadoc.*;
 import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.main.CommandLine;
 import com.sun.tools.javac.main.Option;
 import com.sun.tools.javac.file.BaseFileManager;
+import com.sun.tools.javac.platform.PlatformDescription;
+import com.sun.tools.javac.platform.PlatformUtils;
 import com.sun.tools.javac.util.ClientCodeException;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.List;
@@ -352,6 +356,40 @@
             ((BaseFileManager) fileManager).handleOptions(fileManagerOpts);
         }
 
+        String platformString = compOpts.get("-release");
+
+        if (platformString != null) {
+            if (compOpts.isSet("-source")) {
+                usageError("main.release.bootclasspath.conflict", "-source");
+            }
+            if (fileManagerOpts.containsKey(Option.BOOTCLASSPATH)) {
+                usageError("main.release.bootclasspath.conflict", Option.BOOTCLASSPATH.getText());
+            }
+
+            PlatformDescription platformDescription =
+                    PlatformUtils.lookupPlatformDescription(platformString);
+
+            if (platformDescription == null) {
+                usageError("main.unsupported.release.version", platformString);
+            }
+
+            compOpts.put(Option.SOURCE, platformDescription.getSourceVersion());
+
+            context.put(PlatformDescription.class, platformDescription);
+
+            Collection<Path> platformCP = platformDescription.getPlatformPath();
+
+            if (platformCP != null) {
+                if (fileManager instanceof StandardJavaFileManager) {
+                    StandardJavaFileManager sfm = (StandardJavaFileManager) fileManager;
+
+                    sfm.setLocationFromPaths(StandardLocation.PLATFORM_CLASS_PATH, platformCP);
+                } else {
+                    usageError("main.release.not.standard.file.manager", platformString);
+                }
+            }
+        }
+
         compOpts.notifyListeners();
 
         if (javaNames.isEmpty() && subPackages.isEmpty() && isEmpty(fileObjects)) {
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/ToolOption.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/ToolOption.java	Mon Aug 03 16:33:06 2015 -0700
@@ -96,6 +96,13 @@
         }
     },
 
+    RELEASE("-release", true) {
+        @Override
+        public void process(Helper helper, String arg) {
+            helper.setCompilerOpt(opt, arg);
+        }
+    },
+
     SOURCE("-source", true) {
         @Override
         public void process(Helper helper, String arg) {
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc.properties	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc.properties	Mon Aug 03 16:33:06 2015 -0700
@@ -92,6 +92,9 @@
 main.malformed_locale_name=Malformed locale name: {0}
 main.file_not_found=File not found: "{0}"
 main.illegal_package_name=Illegal package name: "{0}"
+main.release.bootclasspath.conflict=option {0} cannot be used together with -release
+main.unsupported.release.version=release version {0} not supported
+main.release.not.standard.file.manager=-release option specified, but the provided JavaFileManager is not a StandardJavaFileManager.
 tag.illegal_char_in_arr_dim=Tag {0}: Syntax Error in array dimension, method parameters: {1}
 tag.illegal_see_tag=Tag {0}: Syntax Error in method parameters: {1}
 tag.missing_comma_space=Tag {0}: Missing comma or space in method parameters: {1}
--- a/langtools/test/com/sun/javadoc/testIndentation/TestIndentation.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/test/com/sun/javadoc/testIndentation/TestIndentation.java	Mon Aug 03 16:33:06 2015 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      8011288
+ * @bug      8011288 8062647
  * @summary  Erratic/inconsistent indentation of signatures
  * @library  ../lib
  * @modules jdk.javadoc
@@ -51,5 +51,12 @@
                 + "                  T&nbsp;t2)",
                 "\n"
                 + "           throws java.lang.Exception");
+
+        // Test indentation of annotations and annotated method arguments
+        checkOutput("p/IndentAnnot.html", false,
+                " @Deprecated",
+                "                int&nbsp;b)",
+                "                java.lang.Object...&nbsp;b)");
+
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testIndentation/p/IndentAnnot.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package p;
+
+public class IndentAnnot {
+    public void f1(int a, int b) {}
+
+    public void f2(int a, Object... b) {}
+
+    @Deprecated
+    public void f3(int a, int b) {}
+
+    @SafeVarargs
+    public void f4(int a, Object... b) {}
+
+    @SafeVarargs
+    @Deprecated
+    public void f5(int a, Object... b) {}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/typevars/8129214/T8129214.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     8129214
+ * @summary Access error when unboxing a primitive whose target is a type-variable in a different package
+ * @compile T8129214.java
+ */
+import pkg.Foo;
+
+class T8129214 {
+    void test() {
+        Foo.foo(10);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/typevars/8129214/pkg/Foo.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+public class Foo {
+    public static <T extends Integer> void foo(T a1){}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/lambda/8131742/T8131742.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,9 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8131742
+ * @summary Syntactically meaningless code accepted by javac
+ * @compile/fail/ref=T8131742.out -XDrawDiagnostics T8131742.java
+ */
+class T8131742 {
+    static Runnable r = (__GAR BAGE__.this) -> { };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/lambda/8131742/T8131742.out	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,4 @@
+T8131742.java:8:38: compiler.err.expected3: ',', ')', '['
+T8131742.java:8:39: compiler.err.this.as.identifier
+T8131742.java:8:43: compiler.err.expected: ';'
+3 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/parser/8081769/T8081769.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,16 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8081769
+ * @summary Redundant error message on bad usage of 'class' literal
+ * @compile/fail/ref=T8081769.out -XDrawDiagnostics T8081769.java
+ */
+class T8081769 {
+    void test() {
+        Class c1 = this.class;
+        Class c2 = "".class;
+        Class c3 = 0 .class;
+        Class c4 = null.class;
+        Object x;
+        Class c5 = x.toString().class;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/parser/8081769/T8081769.out	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,6 @@
+T8081769.java:9:25: compiler.err.expected: token.identifier
+T8081769.java:10:23: compiler.err.expected: token.identifier
+T8081769.java:11:23: compiler.err.expected: token.identifier
+T8081769.java:12:25: compiler.err.expected: token.identifier
+T8081769.java:14:33: compiler.err.expected: token.identifier
+5 errors
--- a/langtools/test/tools/javac/platform/PlatformProviderTest.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/langtools/test/tools/javac/platform/PlatformProviderTest.java	Mon Aug 03 16:33:06 2015 -0700
@@ -88,6 +88,7 @@
         ToolBox tb = new ToolBox();
         ToolBox.Result result =
                 tb.new JavacTask(ToolBox.Mode.EXEC)
+                  .outdir(".")
                   .options("-J-classpath",
                            "-J" + System.getProperty("test.classes"),
                            "-XDrawDiagnostics",
@@ -121,6 +122,7 @@
         ToolBox tb = new ToolBox();
         ToolBox.Result result =
                 tb.new JavacTask(ToolBox.Mode.EXEC)
+                  .outdir(".")
                   .options("-J-classpath",
                            "-J" + System.getProperty("test.classes"),
                            "-release",
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javadoc/ReleaseOption.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import com.sun.tools.javadoc.Main;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Predicate;
+
+/**
+ * @test
+ * @bug 8086737
+ * @summary Test -release option in javadoc
+ * @run main ReleaseOption
+ */
+public class ReleaseOption {
+    public static void main(String... args) {
+        new ReleaseOption().run();
+    }
+
+    void run() {
+        doRunTest(0, out -> out.contains("compiler.err.doesnt.exist: java.util.stream"), "-release", "7");
+        doRunTest(0, out -> !out.contains("compiler.err.doesnt.exist: java.util.stream"), "-release", "8");
+        doRunTest(1, out -> true, "-release", "7", "-source", "7");
+        doRunTest(1, out -> true, "-release", "7", "-bootclasspath", "any");
+    }
+
+    void doRunTest(int expectedResult, Predicate<String> validate, String... args) {
+        System.err.println("running with args: " + Arrays.asList(args));
+        List<String> options = new ArrayList<>();
+        options.addAll(Arrays.asList(args));
+        options.add("-XDrawDiagnostics");
+        options.add(System.getProperty("test.src", ".") + java.io.File.separatorChar + "ReleaseOptionSource.java");
+        StringWriter out = new StringWriter();
+        PrintWriter pw = new PrintWriter(out);
+        int actualResult = Main.execute("javadoc", pw, pw, pw, "com.sun.tools.doclets.formats.html.HtmlDoclet", options.toArray(new String[0]));
+        System.err.println("actual result=" + actualResult);
+        System.err.println("actual output=" + out.toString());
+        if (actualResult != expectedResult)
+            throw new Error();
+        if (!validate.test(out.toString())) {
+            throw new Error("Not an expected error output: " + out.toString());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javadoc/ReleaseOptionSource.java	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.stream.Stream;
+
+public class ReleaseOptionSource {
+    public Stream s;
+}
--- a/modules.xml	Mon Aug 03 15:48:33 2015 -0500
+++ b/modules.xml	Mon Aug 03 16:33:06 2015 -0700
@@ -1565,6 +1565,10 @@
       <to>jdk.javadoc</to>
     </export>
     <export>
+      <name>com.sun.tools.javac.platform</name>
+      <to>jdk.javadoc</to>
+    </export>
+    <export>
       <name>com.sun.tools.javac.sym</name>
       <to>jdk.javadoc</to>
     </export>
--- a/nashorn/.hgtags	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/.hgtags	Mon Aug 03 16:33:06 2015 -0700
@@ -308,3 +308,4 @@
 d017877b3b8cd39337f1bdc00d958f821433c4c3 jdk9-b72
 548f1eb2c3c89e024ef3805f48ceed9de503588f jdk9-b73
 2e8bb16872d7b15dc0a4f8e45c6ad65f762c1b04 jdk9-b74
+f884dff432a7ac349153f3d1ea1eb222f3764c6c jdk9-b75
--- a/nashorn/samples/browser_dom.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/samples/browser_dom.js	Mon Aug 03 16:33:06 2015 -0700
@@ -43,7 +43,7 @@
 
 // JavaFX start method
 function start(stage) {
-    start.title = "Web View";
+    stage.title = "Web View";
     var wv = new WebView();
     wv.engine.loadContent(<<EOF
 <html>
--- a/nashorn/samples/showenv.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/samples/showenv.js	Mon Aug 03 16:33:06 2015 -0700
@@ -46,7 +46,7 @@
 
 // JavaFX start method
 function start(stage) {
-    start.title = "Your Environment";
+    stage.title = "Your Environment";
     var wv = new WebView();
     var envrows = "";
     for (var i in $ENV) {
--- a/nashorn/samples/showsysprops.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/samples/showsysprops.js	Mon Aug 03 16:33:06 2015 -0700
@@ -47,7 +47,7 @@
 
 // JavaFX start method
 function start(stage) {
-    start.title = "Your System Properties";
+    stage.title = "Your System Properties";
     var wv = new WebView();
     var sysproprows = "";
     var sysprops = System.properties;
--- a/nashorn/samples/time_color.fx	Mon Aug 03 15:48:33 2015 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-#// Usage: jjs -fx time_color.js [-- true/false]
-
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   - Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   - Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- *   - Neither the name of Oracle nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// A simple javafx program that changes background color
-// of scene based on current time value (once per sec).
-// inspired by http://whatcolourisit.scn9a.org/
-
-if (!$OPTIONS._fx) {
-    print("Usage: jjs -fx time_color.js");
-    print("       jjs -fx time_color.js -- true");
-    exit(1);
-}
-
-// JavaFX classes used
-var Color = Java.type("javafx.scene.paint.Color");
-var Group = Java.type("javafx.scene.Group");
-var Label = Java.type("javafx.scene.control.Label");
-var Platform = Java.type("javafx.application.Platform");
-var Scene = Java.type("javafx.scene.Scene");
-var Timer = Java.type("java.util.Timer");
-
-// execute function periodically once per given time in millisec
-function setInterval(func, ms) {
-    // New timer, run as daemon so the application can quit
-    var timer = new Timer("setInterval", true);
-    timer.schedule(function() Platform.runLater(func), ms, ms);	
-    return timer;
-}
-
-// do you want to flip hour/min/sec for RGB?
-var flip = arguments.length > 0? "true".equals(arguments[0]) : false;
-
-// JavaFX start method
-function start(stage) {
-    start.title = "Time Color";
-    var root = new Group();
-    var label = new Label("time");
-    label.textFill = Color.WHITE;
-    root.children.add(label); 
-    stage.scene = new Scene(root, 700, 500);
-
-    setInterval(function() {
-        var d = new Date();
-        var hours = d.getHours();
-	var mins = d.getMinutes();
-	var secs = d.getSeconds();
-
-        if (hours < 10) hours = "0" + hours;
-        if (mins < 10) mins = "0" + mins;
-        if (secs < 10) secs = "0" + secs;
-
-	var hex = flip?
-            "#" + secs + mins + hours : "#" + hours + mins + secs;
-        label.text = "Color: " + hex;
-        stage.scene.fill = Color.web(hex);
-    }, 1000);
-
-    stage.show();
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/samples/time_color.js	Mon Aug 03 16:33:06 2015 -0700
@@ -0,0 +1,89 @@
+#// Usage: jjs -fx time_color.js [-- true/false]
+
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   - Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   - Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ *   - Neither the name of Oracle nor the names of its
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// A simple javafx program that changes background color
+// of scene based on current time value (once per sec).
+// inspired by http://whatcolourisit.scn9a.org/
+
+if (!$OPTIONS._fx) {
+    print("Usage: jjs -fx time_color.js");
+    print("       jjs -fx time_color.js -- true");
+    exit(1);
+}
+
+// JavaFX classes used
+var Color = Java.type("javafx.scene.paint.Color");
+var Group = Java.type("javafx.scene.Group");
+var Label = Java.type("javafx.scene.control.Label");
+var Platform = Java.type("javafx.application.Platform");
+var Scene = Java.type("javafx.scene.Scene");
+var Timer = Java.type("java.util.Timer");
+
+// execute function periodically once per given time in millisec
+function setInterval(func, ms) {
+    // New timer, run as daemon so the application can quit
+    var timer = new Timer("setInterval", true);
+    timer.schedule(function() Platform.runLater(func), ms, ms);	
+    return timer;
+}
+
+// do you want to flip hour/min/sec for RGB?
+var flip = arguments.length > 0? "true".equals(arguments[0]) : false;
+
+// JavaFX start method
+function start(stage) {
+    stage.title = "Time Color";
+    var root = new Group();
+    var label = new Label("time");
+    label.textFill = Color.WHITE;
+    root.children.add(label); 
+    stage.scene = new Scene(root, 700, 500);
+
+    setInterval(function() {
+        var d = new Date();
+        var hours = d.getHours();
+	var mins = d.getMinutes();
+	var secs = d.getSeconds();
+
+        if (hours < 10) hours = "0" + hours;
+        if (mins < 10) mins = "0" + mins;
+        if (secs < 10) secs = "0" + secs;
+
+	var hex = flip?
+            "#" + secs + mins + hours : "#" + hours + mins + secs;
+        label.text = "Color: " + hex;
+        stage.scene.fill = Color.web(hex);
+    }, 1000);
+
+    stage.show();
+}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/DebuggerSupport.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/DebuggerSupport.java	Mon Aug 03 16:33:06 2015 -0700
@@ -3,18 +3,18 @@
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General  License version 2 only, as
+ * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Oracle in the LICENSE file that accompanied this code.
  *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General  License
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
  *
- * You should have received a copy of the GNU General  License version
+ * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  *
--- a/nashorn/test/script/basic/JDK-8007456.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8007456.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8035712.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8035712.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8051778.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8051778.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8058610.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8058610.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8061113.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8061113.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8062799.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8062799.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
@@ -100,4 +100,4 @@
 
     
     
-        
\ No newline at end of file
+        
--- a/nashorn/test/script/basic/JDK-8066221.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066221.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066222.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066222.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066224.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066224.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066225.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066225.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066227.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066227.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066230.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066230.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066232.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066232.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8066236.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8066236.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8067139.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8067139.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8067774.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8067774.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8068573.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8068573.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8068580.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8068580.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8068985.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8068985.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8069002.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8069002.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8072426.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8072426.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8072596.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8072596.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8075090.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8075090.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8079145.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8079145.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8079269.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8079269.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8079424.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8079424.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8079470.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8079470.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8080182.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8080182.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8080848.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8080848.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8081156.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8081156.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8085802.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8085802.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8087211.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8087211.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8087211_2.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8087211_2.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8098578.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8098578.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/basic/JDK-8129410.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/basic/JDK-8129410.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,21 +1,21 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
--- a/nashorn/test/script/currently-failing/gettersetter.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/currently-failing/gettersetter.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/currently-failing/property_delete.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/currently-failing/property_delete.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/builtins.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/builtins.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/constructor.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/constructor.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/maputil.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/maputil.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/object_create.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/object_create.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/object_literals.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/object_literals.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/point.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/point.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/property_add.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/property_add.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/maptests/proto.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/maptests/proto.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/sandbox/safeprops.js	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/script/sandbox/safeprops.js	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/src/jdk/nashorn/test/models/NullProvider.java	Mon Aug 03 15:48:33 2015 -0500
+++ b/nashorn/test/src/jdk/nashorn/test/models/NullProvider.java	Mon Aug 03 16:33:06 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it