Merge
authoryhuang
Tue, 20 Apr 2010 01:24:48 -0700
changeset 5308 b836e6ae98e8
parent 5307 7865cb8f2f54 (current diff)
parent 5270 1d1927f9ec09 (diff)
child 5309 2cd65a5d9fdb
Merge
jdk/make/tools/src/build/tools/charsetmapping/CharsetMapping.java
jdk/make/tools/src/build/tools/charsetmapping/GenerateDBCS.java
jdk/make/tools/src/build/tools/charsetmapping/GenerateEUC_TW.java
jdk/make/tools/src/build/tools/charsetmapping/GenerateMapping.java
jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java
jdk/src/share/classes/sun/io/ByteToCharHKSCS.java
jdk/src/share/classes/sun/io/ByteToCharHKSCS_2001.java
jdk/src/share/classes/sun/io/CharToByteHKSCS.java
jdk/src/share/classes/sun/io/CharToByteHKSCS_2001.java
jdk/src/share/classes/sun/nio/cs/ext/Big5.java
jdk/src/share/classes/sun/nio/cs/ext/HKSCS_2001.java
jdk/test/java/net/Socket/FDClose.java
jdk/test/lib/security/cacerts/VerifyCACerts.java
langtools/test/tools/javap/T6305779.java
--- a/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -62,3 +62,5 @@
 b6f633a93ae0ec4555ff4bf756f5e2150c9bdede jdk7-b85
 c94d9cc81f495d97817eba9d71b84fc45f7661a5 jdk7-b86
 b7456c473862048fa70ed8092313a4ef0a55d403 jdk7-b87
+7077b95d42f6b3942a8751bba033801ff50e5889 jdk7-b88
+44158f6d3b94c0fa020e33632532473d92d1ea96 jdk7-b89
--- a/.hgtags-top-repo	Sun Apr 11 23:21:23 2010 -0700
+++ b/.hgtags-top-repo	Tue Apr 20 01:24:48 2010 -0700
@@ -62,3 +62,5 @@
 cf26288a114be67c39f2758959ce50b60f5ae330 jdk7-b85
 433a60a9c0bf1b26ee7e65cebaa89c541f497aed jdk7-b86
 6b1069f53fbc30663ccef49d78c31bb7d6967bde jdk7-b87
+82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88
+7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89
--- a/corba/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/corba/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -62,3 +62,5 @@
 c67a9df7bc0ca291f08f9a9cc05cb78ea15d25e6 jdk7-b85
 6253e28826d16cf1aecc39ce04c8de1f6bf2df5f jdk7-b86
 09a41111a401d327f65e453384d976a10154d9ea jdk7-b87
+39e14d2da687c7e592142137517aaf689544820f jdk7-b88
+bb4424c5e778b842c064a8b1aa902b35f4397654 jdk7-b89
--- a/hotspot/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -86,3 +86,6 @@
 bf823ef06b4f211e66988d76a2e2669be5c0820e jdk7-b86
 07226e9eab8f74b37346b32715f829a2ef2c3188 hs18-b01
 e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87
+4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b jdk7-b88
+15836273ac2494f36ef62088bc1cb6f3f011f565 jdk7-b89
+4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b hs18-b02
--- a/hotspot/make/hotspot_version	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/make/hotspot_version	Tue Apr 20 01:24:48 2010 -0700
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=18
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=02
+HS_BUILD_NUMBER=03
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1728,9 +1728,13 @@
       ShouldNotReachHere();
     }
   } else if (code == lir_cmp_l2i) {
+#ifdef _LP64
+    __ lcmp(left->as_register_lo(), right->as_register_lo(), dst->as_register());
+#else
     __ lcmp(left->as_register_hi(),  left->as_register_lo(),
             right->as_register_hi(), right->as_register_lo(),
             dst->as_register());
+#endif
   } else {
     ShouldNotReachHere();
   }
@@ -2849,7 +2853,7 @@
 
 
 void LIR_Assembler::align_backward_branch_target() {
-  __ align(16);
+  __ align(OptoLoopAlignment);
 }
 
 
--- a/hotspot/src/cpu/sparc/vm/c2_globals_sparc.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/c2_globals_sparc.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -60,9 +60,6 @@
 define_pd_global(intx, INTPRESSURE,                  48);  // large register set
 define_pd_global(intx, InteriorEntryAlignment,       16);  // = CodeEntryAlignment
 define_pd_global(intx, NewSizeThreadIncrease, ScaleForWordSize(4*K));
-// The default setting 16/16 seems to work best.
-// (For _228_jack 16/16 is 2% better than 4/4, 16/4, 32/32, 32/16, or 16/32.)
-define_pd_global(intx, OptoLoopAlignment,            16);  // = 4*wordSize
 define_pd_global(intx, RegisterCostAreaRatio,        12000);
 define_pd_global(bool, UseTLAB,                      true);
 define_pd_global(bool, ResizeTLAB,                   true);
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -40,6 +40,9 @@
 define_pd_global(bool, UncommonNullCast,            true);  // Uncommon-trap NULLs past to check cast
 
 define_pd_global(intx, CodeEntryAlignment,    32);
+// The default setting 16/16 seems to work best.
+// (For _228_jack 16/16 is 2% better than 4/4, 16/4, 32/32, 32/16, or 16/32.)
+define_pd_global(intx, OptoLoopAlignment,     16);  // = 4*wordSize
 define_pd_global(intx, InlineFrequencyCount,  50);  // we can use more inlining on the SPARC
 define_pd_global(intx, InlineSmallCode,       1500);
 #ifdef _LP64
--- a/hotspot/src/cpu/sparc/vm/sparc.ad	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad	Tue Apr 20 01:24:48 2010 -0700
@@ -471,6 +471,9 @@
 source %{
 #define __ _masm.
 
+// Block initializing store
+#define ASI_BLK_INIT_QUAD_LDD_P    0xE2
+
 // tertiary op of a LoadP or StoreP encoding
 #define REGP_OP true
 
@@ -6147,6 +6150,7 @@
 %}
 
 instruct prefetchw( memory mem ) %{
+  predicate(AllocatePrefetchStyle != 3 );
   match( PrefetchWrite mem );
   ins_cost(MEMORY_REF_COST);
 
@@ -6156,6 +6160,23 @@
   ins_pipe(iload_mem);
 %}
 
+// Use BIS instruction to prefetch.
+instruct prefetchw_bis( memory mem ) %{
+  predicate(AllocatePrefetchStyle == 3);
+  match( PrefetchWrite mem );
+  ins_cost(MEMORY_REF_COST);
+
+  format %{ "STXA   G0,$mem\t! // Block initializing store" %}
+  ins_encode %{
+     Register base = as_Register($mem$$base);
+     int disp = $mem$$disp;
+     if (disp != 0) {
+       __ add(base, AllocatePrefetchStepSize, base);
+     }
+     __ stxa(G0, base, G0, ASI_BLK_INIT_QUAD_LDD_P);
+  %}
+  ins_pipe(istore_mem_reg);
+%}
 
 //----------Store Instructions-------------------------------------------------
 // Store Byte
--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1148,7 +1148,7 @@
       __ andn(from, 7, from);     // Align address
       __ ldx(from, 0, O3);
       __ inc(from, 8);
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_loop);
       __ ldx(from, 0, O4);
       __ deccc(count, count_dec); // Can we do next iteration after this one?
@@ -1220,7 +1220,7 @@
     //
       __ andn(end_from, 7, end_from);     // Align address
       __ ldx(end_from, 0, O3);
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_loop);
       __ ldx(end_from, -8, O4);
       __ deccc(count, count_dec); // Can we do next iteration after this one?
@@ -1349,7 +1349,7 @@
     __ BIND(L_copy_byte);
       __ br_zero(Assembler::zero, false, Assembler::pt, count, L_exit);
       __ delayed()->nop();
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_byte_loop);
       __ ldub(from, offset, O3);
       __ deccc(count);
@@ -1445,7 +1445,7 @@
                                         L_aligned_copy, L_copy_byte);
     }
     // copy 4 elements (16 bytes) at a time
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_aligned_copy);
       __ dec(end_from, 16);
       __ ldx(end_from, 8, O3);
@@ -1461,7 +1461,7 @@
     __ BIND(L_copy_byte);
       __ br_zero(Assembler::zero, false, Assembler::pt, count, L_exit);
       __ delayed()->nop();
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_byte_loop);
       __ dec(end_from);
       __ dec(end_to);
@@ -1577,7 +1577,7 @@
     __ BIND(L_copy_2_bytes);
       __ br_zero(Assembler::zero, false, Assembler::pt, count, L_exit);
       __ delayed()->nop();
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_2_bytes_loop);
       __ lduh(from, offset, O3);
       __ deccc(count);
@@ -1684,7 +1684,7 @@
                                         L_aligned_copy, L_copy_2_bytes);
     }
     // copy 4 elements (16 bytes) at a time
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_aligned_copy);
       __ dec(end_from, 16);
       __ ldx(end_from, 8, O3);
@@ -1781,7 +1781,7 @@
     // copy with shift 4 elements (16 bytes) at a time
       __ dec(count, 4);   // The cmp at the beginning guaranty count >= 4
 
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_16_bytes);
       __ ldx(from, 4, O4);
       __ deccc(count, 4); // Can we do next iteration after this one?
@@ -1907,7 +1907,7 @@
     // to form 2 aligned 8-bytes chunks to store.
     //
       __ ldx(end_from, -4, O3);
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_16_bytes);
       __ ldx(end_from, -12, O4);
       __ deccc(count, 4);
@@ -1929,7 +1929,7 @@
       __ delayed()->inc(count, 4);
 
     // copy 4 elements (16 bytes) at a time
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_aligned_copy);
       __ dec(end_from, 16);
       __ ldx(end_from, 8, O3);
@@ -2000,6 +2000,27 @@
   //      to:    O1
   //      count: O2 treated as signed
   //
+  // count -= 2;
+  // if ( count >= 0 ) { // >= 2 elements
+  //   if ( count > 6) { // >= 8 elements
+  //     count -= 6; // original count - 8
+  //     do {
+  //       copy_8_elements;
+  //       count -= 8;
+  //     } while ( count >= 0 );
+  //     count += 6;
+  //   }
+  //   if ( count >= 0 ) { // >= 2 elements
+  //     do {
+  //       copy_2_elements;
+  //     } while ( (count=count-2) >= 0 );
+  //   }
+  // }
+  // count += 2;
+  // if ( count != 0 ) { // 1 element left
+  //   copy_1_element;
+  // }
+  //
   void generate_disjoint_long_copy_core(bool aligned) {
     Label L_copy_8_bytes, L_copy_16_bytes, L_exit;
     const Register from    = O0;  // source array address
@@ -2012,7 +2033,39 @@
       __ mov(G0, offset0);   // offset from start of arrays (0)
       __ brx(Assembler::negative, false, Assembler::pn, L_copy_8_bytes );
       __ delayed()->add(offset0, 8, offset8);
-      __ align(16);
+
+    // Copy by 64 bytes chunks
+    Label L_copy_64_bytes;
+    const Register from64 = O3;  // source address
+    const Register to64   = G3;  // destination address
+      __ subcc(count, 6, O3);
+      __ brx(Assembler::negative, false, Assembler::pt, L_copy_16_bytes );
+      __ delayed()->mov(to,   to64);
+      // Now we can use O4(offset0), O5(offset8) as temps
+      __ mov(O3, count);
+      __ mov(from, from64);
+
+      __ align(OptoLoopAlignment);
+    __ BIND(L_copy_64_bytes);
+      for( int off = 0; off < 64; off += 16 ) {
+        __ ldx(from64,  off+0, O4);
+        __ ldx(from64,  off+8, O5);
+        __ stx(O4, to64,  off+0);
+        __ stx(O5, to64,  off+8);
+      }
+      __ deccc(count, 8);
+      __ inc(from64, 64);
+      __ brx(Assembler::greaterEqual, false, Assembler::pt, L_copy_64_bytes);
+      __ delayed()->inc(to64, 64);
+
+      // Restore O4(offset0), O5(offset8)
+      __ sub(from64, from, offset0);
+      __ inccc(count, 6);
+      __ brx(Assembler::negative, false, Assembler::pn, L_copy_8_bytes );
+      __ delayed()->add(offset0, 8, offset8);
+
+      // Copy by 16 bytes chunks
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_16_bytes);
       __ ldx(from, offset0, O3);
       __ ldx(from, offset8, G3);
@@ -2023,6 +2076,7 @@
       __ brx(Assembler::greaterEqual, false, Assembler::pt, L_copy_16_bytes);
       __ delayed()->inc(offset8, 16);
 
+      // Copy last 8 bytes
     __ BIND(L_copy_8_bytes);
       __ inccc(count, 2);
       __ brx(Assembler::zero, true, Assembler::pn, L_exit );
@@ -2085,7 +2139,7 @@
       __ brx(Assembler::lessEqual, false, Assembler::pn, L_copy_8_bytes );
       __ delayed()->sllx(count, LogBytesPerLong, offset8);
       __ sub(offset8, 8, offset0);
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_16_bytes);
       __ ldx(from, offset8, O2);
       __ ldx(from, offset0, O3);
@@ -2351,7 +2405,7 @@
     //   (O5 = 0; ; O5 += wordSize) --- offset from src, dest arrays
     //   (O2 = len; O2 != 0; O2--) --- number of oops *remaining*
     //   G3, G4, G5 --- current oop, oop.klass, oop.klass.super
-    __ align(16);
+    __ align(OptoLoopAlignment);
 
     __ BIND(store_element);
     __ deccc(G1_remain);                // decrement the count
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -86,14 +86,24 @@
     if (FLAG_IS_DEFAULT(InteriorEntryAlignment)) {
       FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
     }
+    if (is_niagara1_plus()) {
+      if (AllocatePrefetchStyle > 0 && FLAG_IS_DEFAULT(AllocatePrefetchStyle)) {
+        // Use BIS instruction for allocation prefetch.
+        FLAG_SET_DEFAULT(AllocatePrefetchStyle, 3);
+        if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+          // Use smaller prefetch distance on N2 with BIS
+          FLAG_SET_DEFAULT(AllocatePrefetchDistance, 64);
+        }
+      }
+      if (AllocatePrefetchStyle != 3 && FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+        // Use different prefetch distance without BIS
+        FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
+      }
+    }
+#endif
     if (FLAG_IS_DEFAULT(OptoLoopAlignment)) {
       FLAG_SET_DEFAULT(OptoLoopAlignment, 4);
     }
-    if (is_niagara1_plus() && FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
-      // Use smaller prefetch distance on N2
-      FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
-    }
-#endif
   }
 
   // Use hardware population count instruction if available.
--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -3365,6 +3365,13 @@
 
 #else // LP64
 
+void Assembler::set_byte_if_not_zero(Register dst) {
+  int enc = prefix_and_encode(dst->encoding(), true);
+  emit_byte(0x0F);
+  emit_byte(0x95);
+  emit_byte(0xE0 | enc);
+}
+
 // 64bit only pieces of the assembler
 // This should only be used by 64bit instructions that can use rip-relative
 // it cannot be used by instructions that want an immediate value.
--- a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -2690,19 +2690,14 @@
   } else {
     assert(code == lir_cmp_l2i, "check");
 #ifdef _LP64
-      Register dest = dst->as_register();
-      __ xorptr(dest, dest);
-      Label high, done;
-      __ cmpptr(left->as_register_lo(), right->as_register_lo());
-      __ jcc(Assembler::equal, done);
-      __ jcc(Assembler::greater, high);
-      __ decrement(dest);
-      __ jmp(done);
-      __ bind(high);
-      __ increment(dest);
-
-      __ bind(done);
-
+    Label done;
+    Register dest = dst->as_register();
+    __ cmpptr(left->as_register_lo(), right->as_register_lo());
+    __ movl(dest, -1);
+    __ jccb(Assembler::less, done);
+    __ set_byte_if_not_zero(dest);
+    __ movzbl(dest, dest);
+    __ bind(done);
 #else
     __ lcmp2int(left->as_register_hi(),
                 left->as_register_lo(),
--- a/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -781,7 +781,7 @@
 
   // Restore SP from BP if the exception PC is a MethodHandle call site.
   NOT_LP64(__ get_thread(thread);)
-  __ cmpl(Address(thread, JavaThread::is_method_handle_exception_offset()), 0);
+  __ cmpl(Address(thread, JavaThread::is_method_handle_return_offset()), 0);
   __ cmovptr(Assembler::notEqual, rsp, rbp);
 
   // continue at exception handler (return address removed)
--- a/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -80,7 +80,6 @@
 // Ergonomics related flags
 define_pd_global(uint64_t,MaxRAM,                    4ULL*G);
 #endif // AMD64
-define_pd_global(intx, OptoLoopAlignment,            16);
 define_pd_global(intx, RegisterCostAreaRatio,        16000);
 
 // Peephole and CISC spilling both break the graph, and so makes the
--- a/hotspot/src/cpu/x86/vm/globals_x86.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/globals_x86.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -45,6 +45,7 @@
 #else
 define_pd_global(intx, CodeEntryAlignment,       16);
 #endif // COMPILER2
+define_pd_global(intx, OptoLoopAlignment,        16);
 define_pd_global(intx, InlineFrequencyCount,     100);
 define_pd_global(intx, InlineSmallCode,          1000);
 
--- a/hotspot/src/cpu/x86/vm/runtime_x86_32.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/runtime_x86_32.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -115,8 +115,8 @@
 
   // rax: exception handler for given <exception oop/exception pc>
 
-  // Restore SP from BP if the exception PC is a MethodHandle call.
-  __ cmpl(Address(rcx, JavaThread::is_method_handle_exception_offset()), 0);
+  // Restore SP from BP if the exception PC is a MethodHandle call site.
+  __ cmpl(Address(rcx, JavaThread::is_method_handle_return_offset()), 0);
   __ cmovptr(Assembler::notEqual, rsp, rbp);
 
   // We have a handler in rax, (could be deopt blob)
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -3328,8 +3328,8 @@
 
   // rax: exception handler
 
-  // Restore SP from BP if the exception PC is a MethodHandle call.
-  __ cmpl(Address(r15_thread, JavaThread::is_method_handle_exception_offset()), 0);
+  // Restore SP from BP if the exception PC is a MethodHandle call site.
+  __ cmpl(Address(r15_thread, JavaThread::is_method_handle_return_offset()), 0);
   __ cmovptr(Assembler::notEqual, rsp, rbp);
 
   // We have a handler in rax (could be deopt blob).
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -430,7 +430,7 @@
     __ verify_oop(exception_oop);
 
     // Restore SP from BP if the exception PC is a MethodHandle call site.
-    __ cmpl(Address(thread, JavaThread::is_method_handle_exception_offset()), 0);
+    __ cmpl(Address(thread, JavaThread::is_method_handle_return_offset()), 0);
     __ cmovptr(Assembler::notEqual, rsp, rbp);
 
     // continue at exception handler (return address removed)
@@ -812,7 +812,7 @@
     Label L_copy_64_bytes_loop, L_copy_64_bytes, L_copy_8_bytes, L_exit;
     // Copy 64-byte chunks
     __ jmpb(L_copy_64_bytes);
-    __ align(16);
+    __ align(OptoLoopAlignment);
   __ BIND(L_copy_64_bytes_loop);
 
     if(UseUnalignedLoadStores) {
@@ -874,7 +874,7 @@
     Label L_copy_64_bytes_loop, L_copy_64_bytes, L_copy_8_bytes, L_exit;
     // Copy 64-byte chunks
     __ jmpb(L_copy_64_bytes);
-    __ align(16);
+    __ align(OptoLoopAlignment);
   __ BIND(L_copy_64_bytes_loop);
     __ movq(mmx0, Address(from, 0));
     __ movq(mmx1, Address(from, 8));
@@ -1144,7 +1144,7 @@
       __ movl(Address(to, count, sf, 0), rdx);
       __ jmpb(L_copy_8_bytes);
 
-      __ align(16);
+      __ align(OptoLoopAlignment);
       // Move 8 bytes
     __ BIND(L_copy_8_bytes_loop);
       if (UseXMMForArrayCopy) {
@@ -1235,7 +1235,7 @@
       }
     } else {
       __ jmpb(L_copy_8_bytes);
-      __ align(16);
+      __ align(OptoLoopAlignment);
     __ BIND(L_copy_8_bytes_loop);
       __ fild_d(Address(from, 0));
       __ fistp_d(Address(from, to_from, Address::times_1));
@@ -1282,7 +1282,7 @@
 
     __ jmpb(L_copy_8_bytes);
 
-    __ align(16);
+    __ align(OptoLoopAlignment);
   __ BIND(L_copy_8_bytes_loop);
     if (VM_Version::supports_mmx()) {
       if (UseXMMForArrayCopy) {
@@ -1454,7 +1454,7 @@
     // Loop control:
     //   for (count = -count; count != 0; count++)
     // Base pointers src, dst are biased by 8*count,to last element.
-    __ align(16);
+    __ align(OptoLoopAlignment);
 
     __ BIND(L_store_element);
     __ movptr(to_element_addr, elem);     // store the oop
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -871,9 +871,8 @@
   }
 
   address generate_fp_mask(const char *stub_name, int64_t mask) {
+    __ align(CodeEntryAlignment);
     StubCodeMark mark(this, "StubRoutines", stub_name);
-
-    __ align(16);
     address start = __ pc();
 
     __ emit_data64( mask, relocInfo::none );
@@ -1268,7 +1267,7 @@
                              Label& L_copy_32_bytes, Label& L_copy_8_bytes) {
     DEBUG_ONLY(__ stop("enter at entry label, not here"));
     Label L_loop;
-    __ align(16);
+    __ align(OptoLoopAlignment);
   __ BIND(L_loop);
     if(UseUnalignedLoadStores) {
       __ movdqu(xmm0, Address(end_from, qword_count, Address::times_8, -24));
@@ -1309,7 +1308,7 @@
                               Label& L_copy_32_bytes, Label& L_copy_8_bytes) {
     DEBUG_ONLY(__ stop("enter at entry label, not here"));
     Label L_loop;
-    __ align(16);
+    __ align(OptoLoopAlignment);
   __ BIND(L_loop);
     if(UseUnalignedLoadStores) {
       __ movdqu(xmm0, Address(from, qword_count, Address::times_8, 16));
@@ -2229,7 +2228,7 @@
     // Loop control:
     //   for (count = -count; count != 0; count++)
     // Base pointers src, dst are biased by 8*(count-1),to last element.
-    __ align(16);
+    __ align(OptoLoopAlignment);
 
     __ BIND(L_store_element);
     __ store_heap_oop(to_element_addr, rax_oop);  // store the oop
--- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -206,7 +206,6 @@
 
   // Update the invocation counter
   if ((UseCompiler || CountCompiledCalls) && !method->is_synchronized()) {
-    thread->set_do_not_unlock();
     InvocationCounter *counter = method->invocation_counter();
     counter->increment();
     if (counter->reached_InvocationLimit()) {
@@ -215,7 +214,6 @@
       if (HAS_PENDING_EXCEPTION)
         goto unwind_and_return;
     }
-    thread->clr_do_not_unlock();
   }
 
   // Lock if necessary
--- a/hotspot/src/cpu/zero/vm/methodHandles_zero.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/zero/vm/methodHandles_zero.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1,6 +1,6 @@
 /*
  * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
- * Copyright 2009 Red Hat, Inc.
+ * Copyright 2009, 2010 Red Hat, Inc.
  * 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,4 +23,10 @@
  *
  */
 
-// This file is intentionally empty
+#include "incls/_precompiled.incl"
+#include "incls/_methodHandles_zero.cpp.incl"
+
+void MethodHandles::generate_method_handle_stub(MacroAssembler*          masm,
+                                                MethodHandles::EntryKind ek) {
+  ShouldNotCallThis();
+}
--- a/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1,6 +1,6 @@
 /*
  * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
- * Copyright 2007, 2008, 2009 Red Hat, Inc.
+ * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,6 +41,10 @@
     code_size2 = 0       // if these are too small.  Simply increase
   };                     // them if that happens.
 
+  enum method_handles_platform_dependent_constants {
+    method_handles_adapters_code_size = 0
+  };
+
 #ifdef IA32
   class x86 {
     friend class VMStructs;
--- a/hotspot/src/os/linux/vm/attachListener_linux.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/linux/vm/attachListener_linux.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -192,7 +192,8 @@
     res = ::bind(listener, (struct sockaddr*)&addr, sizeof(addr));
   }
   if (res == -1) {
-    sprintf(path, "%s/.java_pid%d", os::get_temp_directory(), os::current_process_id());
+    snprintf(path, PATH_MAX+1, "%s/.java_pid%d",
+             os::get_temp_directory(), os::current_process_id());
     strcpy(addr.sun_path, path);
     ::unlink(path);
     res = ::bind(listener, (struct sockaddr*)&addr, sizeof(addr));
@@ -460,13 +461,14 @@
   if (init_at_startup() || is_initialized()) {
     return false;               // initialized at startup or already initialized
   }
-  char fn[32];
+  char fn[128];
   sprintf(fn, ".attach_pid%d", os::current_process_id());
   int ret;
   struct stat64 st;
   RESTARTABLE(::stat64(fn, &st), ret);
   if (ret == -1) {
-    sprintf(fn, "/tmp/.attach_pid%d", os::current_process_id());
+    snprintf(fn, sizeof(fn), "%s/.attach_pid%d",
+             os::get_temp_directory(), os::current_process_id());
     RESTARTABLE(::stat64(fn, &st), ret);
   }
   if (ret == 0) {
--- a/hotspot/src/os/linux/vm/os_linux.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1522,7 +1522,10 @@
 
 const char* os::dll_file_extension() { return ".so"; }
 
-const char* os::get_temp_directory() { return "/tmp/"; }
+const char* os::get_temp_directory() {
+  const char *prop = Arguments::get_property("java.io.tmpdir");
+  return prop == NULL ? "/tmp" : prop;
+}
 
 static bool file_exists(const char* filename) {
   struct stat statbuf;
@@ -2305,7 +2308,8 @@
   char buf[40];
   int num = Atomic::add(1, &cnt);
 
-  sprintf(buf, "/tmp/hs-vm-%d-%d", os::current_process_id(), num);
+  snprintf(buf, sizeof(buf), "%s/hs-vm-%d-%d",
+           os::get_temp_directory(), os::current_process_id(), num);
   unlink(buf);
 
   int fd = open(buf, O_CREAT | O_RDWR, S_IRWXU);
--- a/hotspot/src/os/linux/vm/perfMemory_linux.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/linux/vm/perfMemory_linux.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -145,11 +145,11 @@
 
   const char* tmpdir = os::get_temp_directory();
   const char* perfdir = PERFDATA_NAME;
-  size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 2;
+  size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 3;
   char* dirname = NEW_C_HEAP_ARRAY(char, nbytes);
 
   // construct the path name to user specific tmp directory
-  snprintf(dirname, nbytes, "%s%s_%s", tmpdir, perfdir, user);
+  snprintf(dirname, nbytes, "%s/%s_%s", tmpdir, perfdir, user);
 
   return dirname;
 }
@@ -331,8 +331,9 @@
     }
 
     char* usrdir_name = NEW_C_HEAP_ARRAY(char,
-                              strlen(tmpdirname) + strlen(dentry->d_name) + 1);
+                              strlen(tmpdirname) + strlen(dentry->d_name) + 2);
     strcpy(usrdir_name, tmpdirname);
+    strcat(usrdir_name, "/");
     strcat(usrdir_name, dentry->d_name);
 
     DIR* subdirp = os::opendir(usrdir_name);
--- a/hotspot/src/os/solaris/vm/attachListener_solaris.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/solaris/vm/attachListener_solaris.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -375,7 +375,8 @@
     return -1;
   }
 
-  sprintf(door_path, "%s/.java_pid%d", os::get_temp_directory(), os::current_process_id());
+  snprintf(door_path, sizeof(door_path), "%s/.java_pid%d",
+           os::get_temp_directory(), os::current_process_id());
   RESTARTABLE(::creat(door_path, S_IRUSR | S_IWUSR), fd);
 
   if (fd == -1) {
@@ -591,13 +592,14 @@
   if (init_at_startup() || is_initialized()) {
     return false;               // initialized at startup or already initialized
   }
-  char fn[32];
+  char fn[128];
   sprintf(fn, ".attach_pid%d", os::current_process_id());
   int ret;
   struct stat64 st;
   RESTARTABLE(::stat64(fn, &st), ret);
   if (ret == -1) {
-    sprintf(fn, "/tmp/.attach_pid%d", os::current_process_id());
+    snprintf(fn, sizeof(fn), "%s/.attach_pid%d",
+             os::get_temp_directory(), os::current_process_id());
     RESTARTABLE(::stat64(fn, &st), ret);
   }
   if (ret == 0) {
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -676,15 +676,6 @@
 }
 
 
-static char* get_property(char* name, char* buffer, int buffer_size) {
-  if (os::getenv(name, buffer, buffer_size)) {
-    return buffer;
-  }
-  static char empty[] = "";
-  return empty;
-}
-
-
 void os::init_system_properties_values() {
   char arch[12];
   sysinfo(SI_ARCHITECTURE, arch, sizeof(arch));
@@ -1826,7 +1817,10 @@
 
 const char* os::dll_file_extension() { return ".so"; }
 
-const char* os::get_temp_directory() { return "/tmp/"; }
+const char* os::get_temp_directory() {
+  const char *prop = Arguments::get_property("java.io.tmpdir");
+  return prop == NULL ? "/tmp" : prop;
+}
 
 static bool file_exists(const char* filename) {
   struct stat statbuf;
--- a/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -147,11 +147,11 @@
 
   const char* tmpdir = os::get_temp_directory();
   const char* perfdir = PERFDATA_NAME;
-  size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 2;
+  size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 3;
   char* dirname = NEW_C_HEAP_ARRAY(char, nbytes);
 
   // construct the path name to user specific tmp directory
-  snprintf(dirname, nbytes, "%s%s_%s", tmpdir, perfdir, user);
+  snprintf(dirname, nbytes, "%s/%s_%s", tmpdir, perfdir, user);
 
   return dirname;
 }
@@ -322,8 +322,9 @@
     }
 
     char* usrdir_name = NEW_C_HEAP_ARRAY(char,
-                              strlen(tmpdirname) + strlen(dentry->d_name) + 1);
+                              strlen(tmpdirname) + strlen(dentry->d_name) + 2);
     strcpy(usrdir_name, tmpdirname);
+    strcat(usrdir_name, "/");
     strcat(usrdir_name, dentry->d_name);
 
     DIR* subdirp = os::opendir(usrdir_name);
--- a/hotspot/src/os/windows/vm/os_windows.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -998,15 +998,16 @@
 
 const char* os::dll_file_extension() { return ".dll"; }
 
-const char * os::get_temp_directory()
-{
-    static char path_buf[MAX_PATH];
-    if (GetTempPath(MAX_PATH, path_buf)>0)
-      return path_buf;
-    else{
-      path_buf[0]='\0';
-      return path_buf;
-    }
+const char* os::get_temp_directory() {
+  const char *prop = Arguments::get_property("java.io.tmpdir");
+  if (prop != 0) return prop;
+  static char path_buf[MAX_PATH];
+  if (GetTempPath(MAX_PATH, path_buf)>0)
+    return path_buf;
+  else{
+    path_buf[0]='\0';
+    return path_buf;
+  }
 }
 
 static bool file_exists(const char* filename) {
--- a/hotspot/src/os/windows/vm/perfMemory_windows.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/os/windows/vm/perfMemory_windows.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -149,11 +149,11 @@
 
   const char* tmpdir = os::get_temp_directory();
   const char* perfdir = PERFDATA_NAME;
-  size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 2;
+  size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 3;
   char* dirname = NEW_C_HEAP_ARRAY(char, nbytes);
 
   // construct the path name to user specific tmp directory
-  _snprintf(dirname, nbytes, "%s%s_%s", tmpdir, perfdir, user);
+  _snprintf(dirname, nbytes, "%s\\%s_%s", tmpdir, perfdir, user);
 
   return dirname;
 }
@@ -318,8 +318,9 @@
     }
 
     char* usrdir_name = NEW_C_HEAP_ARRAY(char,
-                              strlen(tmpdirname) + strlen(dentry->d_name) + 1);
+                              strlen(tmpdirname) + strlen(dentry->d_name) + 2);
     strcpy(usrdir_name, tmpdirname);
+    strcat(usrdir_name, "\\");
     strcat(usrdir_name, dentry->d_name);
 
     DIR* subdirp = os::opendir(usrdir_name);
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -2608,12 +2608,17 @@
     } else if (opr->is_double_xmm()) {
       assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation");
       VMReg rname_first  = opr->as_xmm_double_reg()->as_VMReg();
+#  ifdef _LP64
+      first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first));
+      second = &_int_0_scope_value;
+#  else
       first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first));
       // %%% This is probably a waste but we'll keep things as they were for now
       if (true) {
         VMReg rname_second = rname_first->next();
         second = new LocationValue(Location::new_reg_loc(Location::normal, rname_second));
       }
+#  endif
 #endif
 
     } else if (opr->is_double_fpu()) {
@@ -2639,13 +2644,17 @@
 #endif
 
       VMReg rname_first = frame_map()->fpu_regname(opr->fpu_regnrHi());
-
+#ifdef _LP64
+      first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first));
+      second = &_int_0_scope_value;
+#else
       first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first));
       // %%% This is probably a waste but we'll keep things as they were for now
       if (true) {
         VMReg rname_second = rname_first->next();
         second = new LocationValue(Location::new_reg_loc(Location::normal, rname_second));
       }
+#endif
 
     } else {
       ShouldNotReachHere();
--- a/hotspot/src/share/vm/ci/ciConstant.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/ci/ciConstant.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -36,7 +36,7 @@
              basictype_to_str(basic_type()));
   switch (basic_type()) {
   case T_BOOLEAN:
-    tty->print("%s", bool_to_str(_value._int == 0));
+    tty->print("%s", bool_to_str(_value._int != 0));
     break;
   case T_CHAR:
   case T_BYTE:
--- a/hotspot/src/share/vm/ci/ciEnv.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -385,11 +385,6 @@
                                                      KILL_COMPILE_ON_FATAL_(fail_type));
   }
 
-  if (found_klass != NULL) {
-    // Found it.  Build a CI handle.
-    return get_object(found_klass)->as_klass();
-  }
-
   // If we fail to find an array klass, look again for its element type.
   // The element type may be available either locally or via constraints.
   // In either case, if we can find the element type in the system dictionary,
@@ -414,6 +409,11 @@
     }
   }
 
+  if (found_klass != NULL) {
+    // Found it.  Build a CI handle.
+    return get_object(found_klass)->as_klass();
+  }
+
   if (require_local)  return NULL;
   // Not yet loaded into the VM, or not governed by loader constraints.
   // Make a CI representative for it.
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -2956,8 +2956,8 @@
 #endif
     bool compact_fields   = CompactFields;
     int  allocation_style = FieldsAllocationStyle;
-    if( allocation_style < 0 || allocation_style > 1 ) { // Out of range?
-      assert(false, "0 <= FieldsAllocationStyle <= 1");
+    if( allocation_style < 0 || allocation_style > 2 ) { // Out of range?
+      assert(false, "0 <= FieldsAllocationStyle <= 2");
       allocation_style = 1; // Optimistic
     }
 
@@ -2993,6 +2993,25 @@
     } else if( allocation_style == 1 ) {
       // Fields order: longs/doubles, ints, shorts/chars, bytes, oops
       next_nonstatic_double_offset = next_nonstatic_field_offset;
+    } else if( allocation_style == 2 ) {
+      // Fields allocation: oops fields in super and sub classes are together.
+      if( nonstatic_field_size > 0 && super_klass() != NULL &&
+          super_klass->nonstatic_oop_map_size() > 0 ) {
+        int map_size = super_klass->nonstatic_oop_map_size();
+        OopMapBlock* first_map = super_klass->start_of_nonstatic_oop_maps();
+        OopMapBlock* last_map = first_map + map_size - 1;
+        int next_offset = last_map->offset() + (last_map->count() * heapOopSize);
+        if (next_offset == next_nonstatic_field_offset) {
+          allocation_style = 0;   // allocate oops first
+          next_nonstatic_oop_offset    = next_nonstatic_field_offset;
+          next_nonstatic_double_offset = next_nonstatic_oop_offset +
+                                         (nonstatic_oop_count * heapOopSize);
+        }
+      }
+      if( allocation_style == 2 ) {
+        allocation_style = 1;     // allocate oops last
+        next_nonstatic_double_offset = next_nonstatic_field_offset;
+      }
     } else {
       ShouldNotReachHere();
     }
--- a/hotspot/src/share/vm/classfile/loaderConstraints.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/classfile/loaderConstraints.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -334,33 +334,6 @@
   return NULL;
 }
 
-
-klassOop LoaderConstraintTable::find_constrained_elem_klass(symbolHandle name,
-                                                            symbolHandle elem_name,
-                                                            Handle loader,
-                                                            TRAPS) {
-  LoaderConstraintEntry *p = *(find_loader_constraint(name, loader));
-  if (p != NULL) {
-    assert(p->klass() == NULL, "Expecting null array klass");
-
-    // The array name has a constraint, but it will not have a class. Check
-    // each loader for an associated elem
-    for (int i = 0; i < p->num_loaders(); i++) {
-      Handle no_protection_domain;
-
-      klassOop k = SystemDictionary::find(elem_name, p->loader(i), no_protection_domain, THREAD);
-      if (k != NULL) {
-        // Return the first elem klass found.
-        return k;
-      }
-    }
-  }
-
-  // No constraints, or else no klass loaded yet.
-  return NULL;
-}
-
-
 void LoaderConstraintTable::ensure_loader_constraint_capacity(
                                                      LoaderConstraintEntry *p,
                                                     int nfree) {
--- a/hotspot/src/share/vm/classfile/loaderConstraints.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/classfile/loaderConstraints.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -66,9 +66,6 @@
   //                                           bool is_method, TRAPS)
 
   klassOop find_constrained_klass(symbolHandle name, Handle loader);
-  klassOop find_constrained_elem_klass(symbolHandle name, symbolHandle elem_name,
-                                       Handle loader, TRAPS);
-
 
   // Class loader constraints
 
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -2178,9 +2178,8 @@
   // a loader constraint that would require this loader to return the
   // klass that is already loaded.
   if (FieldType::is_array(class_name())) {
-    // Array classes are hard because their klassOops are not kept in the
-    // constraint table. The array klass may be constrained, but the elem class
-    // may not be.
+    // For array classes, their klassOops are not kept in the
+    // constraint table. The element klassOops are.
     jint dimension;
     symbolOop object_key;
     BasicType t = FieldType::get_array_info(class_name(), &dimension,
@@ -2190,8 +2189,9 @@
     } else {
       symbolHandle elem_name(THREAD, object_key);
       MutexLocker mu(SystemDictionary_lock, THREAD);
-      klass = constraints()->find_constrained_elem_klass(class_name, elem_name, class_loader, THREAD);
+      klass = constraints()->find_constrained_klass(elem_name, class_loader);
     }
+    // If element class already loaded, allocate array klass
     if (klass != NULL) {
       klass = Klass::cast(klass)->array_klass_or_null(dimension);
     }
@@ -2209,22 +2209,38 @@
                                              Handle class_loader1,
                                              Handle class_loader2,
                                              Thread* THREAD) {
-  unsigned int d_hash1 = dictionary()->compute_hash(class_name, class_loader1);
+  symbolHandle constraint_name;
+  if (!FieldType::is_array(class_name())) {
+    constraint_name = class_name;
+  } else {
+    // For array classes, their klassOops are not kept in the
+    // constraint table. The element classes are.
+    jint dimension;
+    symbolOop object_key;
+    BasicType t = FieldType::get_array_info(class_name(), &dimension,
+                                            &object_key, CHECK_(false));
+    // primitive types always pass
+    if (t != T_OBJECT) {
+      return true;
+    } else {
+      constraint_name = symbolHandle(THREAD, object_key);
+    }
+  }
+  unsigned int d_hash1 = dictionary()->compute_hash(constraint_name, class_loader1);
   int d_index1 = dictionary()->hash_to_index(d_hash1);
 
-  unsigned int d_hash2 = dictionary()->compute_hash(class_name, class_loader2);
+  unsigned int d_hash2 = dictionary()->compute_hash(constraint_name, class_loader2);
   int d_index2 = dictionary()->hash_to_index(d_hash2);
-
   {
-    MutexLocker mu_s(SystemDictionary_lock, THREAD);
+  MutexLocker mu_s(SystemDictionary_lock, THREAD);
 
-    // Better never do a GC while we're holding these oops
-    No_Safepoint_Verifier nosafepoint;
+  // Better never do a GC while we're holding these oops
+  No_Safepoint_Verifier nosafepoint;
 
-    klassOop klass1 = find_class(d_index1, d_hash1, class_name, class_loader1);
-    klassOop klass2 = find_class(d_index2, d_hash2, class_name, class_loader2);
-    return constraints()->add_entry(class_name, klass1, class_loader1,
-                                    klass2, class_loader2);
+  klassOop klass1 = find_class(d_index1, d_hash1, constraint_name, class_loader1);
+  klassOop klass2 = find_class(d_index2, d_hash2, constraint_name, class_loader2);
+  return constraints()->add_entry(constraint_name, klass1, class_loader1,
+                                  klass2, class_loader2);
   }
 }
 
@@ -2301,6 +2317,7 @@
 // Returns the name of the type that failed a loader constraint check, or
 // NULL if no constraint failed. The returned C string needs cleaning up
 // with a ResourceMark in the caller.  No exception except OOME is thrown.
+// Arrays are not added to the loader constraint table, their elements are.
 char* SystemDictionary::check_signature_loaders(symbolHandle signature,
                                                Handle loader1, Handle loader2,
                                                bool is_method, TRAPS)  {
--- a/hotspot/src/share/vm/code/codeCache.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/code/codeCache.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2010 Sun Microsystems, Inc.  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
@@ -284,9 +284,11 @@
       cur->print_on(tty, is_live ? "scavenge root" : "dead scavenge root"); tty->cr();
     }
 #endif //PRODUCT
-    if (is_live)
+    if (is_live) {
       // Perform cur->oops_do(f), maybe just once per nmethod.
       f->do_code_blob(cur);
+      cur->fix_oop_relocations();
+    }
   }
 
   // Check for stray marks.
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1414,9 +1414,14 @@
     intx thread_id = os::current_thread_id();
     for (int try_temp_dir = 1; try_temp_dir >= 0; try_temp_dir--) {
       const char* dir = (try_temp_dir ? os::get_temp_directory() : NULL);
-      if (dir == NULL)  dir = "";
-      sprintf(fileBuf, "%shs_c" UINTX_FORMAT "_pid%u.log",
-              dir, thread_id, os::current_process_id());
+      if (dir == NULL) {
+        jio_snprintf(fileBuf, sizeof(fileBuf), "hs_c" UINTX_FORMAT "_pid%u.log",
+                     thread_id, os::current_process_id());
+      } else {
+        jio_snprintf(fileBuf, sizeof(fileBuf),
+                     "%s%shs_c" UINTX_FORMAT "_pid%u.log", dir,
+                     os::file_separator(), thread_id, os::current_process_id());
+      }
       fp = fopen(fileBuf, "at");
       if (fp != NULL) {
         file = NEW_C_HEAP_ARRAY(char, strlen(fileBuf)+1);
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -297,6 +297,11 @@
   }
 }
 
+// Currently we do not call this at all. Normally we would call it
+// during the concurrent marking / remark phases but we now call
+// the lock-based version instead. But we might want to resurrect this
+// code in the future. So, we'll leave it here commented out.
+#if 0
 MemRegion CMRegionStack::pop() {
   while (true) {
     // Otherwise...
@@ -321,6 +326,41 @@
     // Otherwise, we need to try again.
   }
 }
+#endif // 0
+
+void CMRegionStack::push_with_lock(MemRegion mr) {
+  assert(mr.word_size() > 0, "Precondition");
+  MutexLockerEx x(CMRegionStack_lock, Mutex::_no_safepoint_check_flag);
+
+  if (isFull()) {
+    _overflow = true;
+    return;
+  }
+
+  _base[_index] = mr;
+  _index += 1;
+}
+
+MemRegion CMRegionStack::pop_with_lock() {
+  MutexLockerEx x(CMRegionStack_lock, Mutex::_no_safepoint_check_flag);
+
+  while (true) {
+    if (_index == 0) {
+      return MemRegion();
+    }
+    _index -= 1;
+
+    MemRegion mr = _base[_index];
+    if (mr.start() != NULL) {
+      assert(mr.end() != NULL, "invariant");
+      assert(mr.word_size() > 0, "invariant");
+      return mr;
+    } else {
+      // that entry was invalidated... let's skip it
+      assert(mr.end() == NULL, "invariant");
+    }
+  }
+}
 
 bool CMRegionStack::invalidate_entries_into_cset() {
   bool result = false;
@@ -668,24 +708,46 @@
 //
 
 void ConcurrentMark::clearNextBitmap() {
-   guarantee(!G1CollectedHeap::heap()->mark_in_progress(), "Precondition.");
-
-   // clear the mark bitmap (no grey objects to start with).
-   // We need to do this in chunks and offer to yield in between
-   // each chunk.
-   HeapWord* start  = _nextMarkBitMap->startWord();
-   HeapWord* end    = _nextMarkBitMap->endWord();
-   HeapWord* cur    = start;
-   size_t chunkSize = M;
-   while (cur < end) {
-     HeapWord* next = cur + chunkSize;
-     if (next > end)
-       next = end;
-     MemRegion mr(cur,next);
-     _nextMarkBitMap->clearRange(mr);
-     cur = next;
-     do_yield_check();
-   }
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  G1CollectorPolicy* g1p = g1h->g1_policy();
+
+  // Make sure that the concurrent mark thread looks to still be in
+  // the current cycle.
+  guarantee(cmThread()->during_cycle(), "invariant");
+
+  // We are finishing up the current cycle by clearing the next
+  // marking bitmap and getting it ready for the next cycle. During
+  // this time no other cycle can start. So, let's make sure that this
+  // is the case.
+  guarantee(!g1h->mark_in_progress(), "invariant");
+
+  // clear the mark bitmap (no grey objects to start with).
+  // We need to do this in chunks and offer to yield in between
+  // each chunk.
+  HeapWord* start  = _nextMarkBitMap->startWord();
+  HeapWord* end    = _nextMarkBitMap->endWord();
+  HeapWord* cur    = start;
+  size_t chunkSize = M;
+  while (cur < end) {
+    HeapWord* next = cur + chunkSize;
+    if (next > end)
+      next = end;
+    MemRegion mr(cur,next);
+    _nextMarkBitMap->clearRange(mr);
+    cur = next;
+    do_yield_check();
+
+    // Repeat the asserts from above. We'll do them as asserts here to
+    // minimize their overhead on the product. However, we'll have
+    // them as guarantees at the beginning / end of the bitmap
+    // clearing to get some checking in the product.
+    assert(cmThread()->during_cycle(), "invariant");
+    assert(!g1h->mark_in_progress(), "invariant");
+  }
+
+  // Repeat the asserts from above.
+  guarantee(cmThread()->during_cycle(), "invariant");
+  guarantee(!g1h->mark_in_progress(), "invariant");
 }
 
 class NoteStartOfMarkHRClosure: public HeapRegionClosure {
@@ -3363,7 +3425,7 @@
       gclog_or_tty->print_cr("[%d] draining region stack, size = %d",
                              _task_id, _cm->region_stack_size());
 
-    MemRegion mr = _cm->region_stack_pop();
+    MemRegion mr = _cm->region_stack_pop_with_lock();
     // it returns MemRegion() if the pop fails
     statsOnly(if (mr.start() != NULL) ++_region_stack_pops );
 
@@ -3384,7 +3446,7 @@
         if (has_aborted())
           mr = MemRegion();
         else {
-          mr = _cm->region_stack_pop();
+          mr = _cm->region_stack_pop_with_lock();
           // it returns MemRegion() if the pop fails
           statsOnly(if (mr.start() != NULL) ++_region_stack_pops );
         }
@@ -3417,7 +3479,7 @@
           }
           // Now push the part of the region we didn't scan on the
           // region stack to make sure a task scans it later.
-          _cm->region_stack_push(newRegion);
+          _cm->region_stack_push_with_lock(newRegion);
         }
         // break from while
         mr = MemRegion();
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -252,9 +252,19 @@
   // with other "push" operations (no pops).
   void push(MemRegion mr);
 
+#if 0
+  // This is currently not used. See the comment in the .cpp file.
+
   // Lock-free; assumes that it will only be called in parallel
   // with other "pop" operations (no pushes).
   MemRegion pop();
+#endif // 0
+
+  // These two are the implementations that use a lock. They can be
+  // called concurrently with each other but they should not be called
+  // concurrently with the lock-free versions (push() / pop()).
+  void push_with_lock(MemRegion mr);
+  MemRegion pop_with_lock();
 
   bool isEmpty()    { return _index == 0; }
   bool isFull()     { return _index == _capacity; }
@@ -540,6 +550,10 @@
 
   // Manipulation of the region stack
   bool region_stack_push(MemRegion mr) {
+    // Currently we only call the lock-free version during evacuation
+    // pauses.
+    assert(SafepointSynchronize::is_at_safepoint(), "world should be stopped");
+
     _regionStack.push(mr);
     if (_regionStack.overflow()) {
       set_has_overflown();
@@ -547,7 +561,33 @@
     }
     return true;
   }
-  MemRegion region_stack_pop()          { return _regionStack.pop(); }
+#if 0
+  // Currently this is not used. See the comment in the .cpp file.
+  MemRegion region_stack_pop() { return _regionStack.pop(); }
+#endif // 0
+
+  bool region_stack_push_with_lock(MemRegion mr) {
+    // Currently we only call the lock-based version during either
+    // concurrent marking or remark.
+    assert(!SafepointSynchronize::is_at_safepoint() || !concurrent(),
+           "if we are at a safepoint it should be the remark safepoint");
+
+    _regionStack.push_with_lock(mr);
+    if (_regionStack.overflow()) {
+      set_has_overflown();
+      return false;
+    }
+    return true;
+  }
+  MemRegion region_stack_pop_with_lock() {
+    // Currently we only call the lock-based version during either
+    // concurrent marking or remark.
+    assert(!SafepointSynchronize::is_at_safepoint() || !concurrent(),
+           "if we are at a safepoint it should be the remark safepoint");
+
+    return _regionStack.pop_with_lock();
+  }
+
   int region_stack_size()               { return _regionStack.size(); }
   bool region_stack_overflow()          { return _regionStack.overflow(); }
   bool region_stack_empty()             { return _regionStack.isEmpty(); }
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -42,8 +42,8 @@
 
  private:
   ConcurrentMark*                  _cm;
-  bool                             _started;
-  bool                             _in_progress;
+  volatile bool                    _started;
+  volatile bool                    _in_progress;
 
   void sleepBeforeNextCycle();
 
@@ -67,15 +67,25 @@
   // Counting virtual time so far.
   double vtime_count_accum() { return _vtime_count_accum; }
 
-  ConcurrentMark* cm()                           { return _cm;     }
+  ConcurrentMark* cm()     { return _cm; }
+
+  void set_started()       { _started = true;  }
+  void clear_started()     { _started = false; }
+  bool started()           { return _started;  }
+
+  void set_in_progress()   { _in_progress = true;  }
+  void clear_in_progress() { _in_progress = false; }
+  bool in_progress()       { return _in_progress;  }
 
-  void            set_started()                  { _started = true;   }
-  void            clear_started()                { _started = false;  }
-  bool            started()                      { return _started;   }
-
-  void            set_in_progress()              { _in_progress = true;   }
-  void            clear_in_progress()            { _in_progress = false;  }
-  bool            in_progress()                  { return _in_progress;   }
+  // This flag returns true from the moment a marking cycle is
+  // initiated (during the initial-mark pause when started() is set)
+  // to the moment when the cycle completes (just after the next
+  // marking bitmap has been cleared and in_progress() is
+  // cleared). While this flag is true we will not start another cycle
+  // so that cycles do not overlap. We cannot use just in_progress()
+  // as the CM thread might take some time to wake up before noticing
+  // that started() is set and set in_progress().
+  bool during_cycle()      { return started() || in_progress(); }
 
   // Yield for GC
   void            yield();
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -902,6 +902,10 @@
 
 void G1CollectedHeap::do_collection(bool full, bool clear_all_soft_refs,
                                     size_t word_size) {
+  if (GC_locker::check_active_before_gc()) {
+    return; // GC is disabled (e.g. JNI GetXXXCritical operation)
+  }
+
   ResourceMark rm;
 
   if (PrintHeapAtGC) {
@@ -916,10 +920,6 @@
   assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
   assert(Thread::current() == VMThread::vm_thread(), "should be in vm thread");
 
-  if (GC_locker::is_active()) {
-    return; // GC is disabled (e.g. JNI GetXXXCritical operation)
-  }
-
   {
     IsGCActiveMark x;
 
@@ -2658,6 +2658,10 @@
 
 void
 G1CollectedHeap::do_collection_pause_at_safepoint() {
+  if (GC_locker::check_active_before_gc()) {
+    return; // GC is disabled (e.g. JNI GetXXXCritical operation)
+  }
+
   if (PrintHeapAtGC) {
     Universe::print_heap_before_gc();
   }
@@ -2665,6 +2669,11 @@
   {
     ResourceMark rm;
 
+    // This call will decide whether this pause is an initial-mark
+    // pause. If it is, during_initial_mark_pause() will return true
+    // for the duration of this pause.
+    g1_policy()->decide_on_conc_mark_initiation();
+
     char verbose_str[128];
     sprintf(verbose_str, "GC pause ");
     if (g1_policy()->in_young_gc_mode()) {
@@ -2673,7 +2682,7 @@
       else
         strcat(verbose_str, "(partial)");
     }
-    if (g1_policy()->should_initiate_conc_mark())
+    if (g1_policy()->during_initial_mark_pause())
       strcat(verbose_str, " (initial-mark)");
 
     // if PrintGCDetails is on, we'll print long statistics information
@@ -2697,10 +2706,6 @@
              "young list should be well formed");
     }
 
-    if (GC_locker::is_active()) {
-      return; // GC is disabled (e.g. JNI GetXXXCritical operation)
-    }
-
     bool abandoned = false;
     { // Call to jvmpi::post_class_unload_events must occur outside of active GC
       IsGCActiveMark x;
@@ -2756,7 +2761,7 @@
       _young_list->print();
 #endif // SCAN_ONLY_VERBOSE
 
-      if (g1_policy()->should_initiate_conc_mark()) {
+      if (g1_policy()->during_initial_mark_pause()) {
         concurrent_mark()->checkpointRootsInitialPre();
       }
       save_marks();
@@ -2858,7 +2863,7 @@
       }
 
       if (g1_policy()->in_young_gc_mode() &&
-          g1_policy()->should_initiate_conc_mark()) {
+          g1_policy()->during_initial_mark_pause()) {
         concurrent_mark()->checkpointRootsInitialPost();
         set_marking_started();
         // CAUTION: after the doConcurrentMark() call below,
@@ -2937,6 +2942,9 @@
   // the same region
   assert(r == NULL || !r->is_gc_alloc_region(),
          "shouldn't already be a GC alloc region");
+  assert(r == NULL || !r->isHumongous(),
+         "humongous regions shouldn't be used as GC alloc regions");
+
   HeapWord* original_top = NULL;
   if (r != NULL)
     original_top = r->top();
@@ -3079,12 +3087,17 @@
 
       if (alloc_region->in_collection_set() ||
           alloc_region->top() == alloc_region->end() ||
-          alloc_region->top() == alloc_region->bottom()) {
-        // we will discard the current GC alloc region if it's in the
-        // collection set (it can happen!), if it's already full (no
-        // point in using it), or if it's empty (this means that it
-        // was emptied during a cleanup and it should be on the free
-        // list now).
+          alloc_region->top() == alloc_region->bottom() ||
+          alloc_region->isHumongous()) {
+        // we will discard the current GC alloc region if
+        // * it's in the collection set (it can happen!),
+        // * it's already full (no point in using it),
+        // * it's empty (this means that it was emptied during
+        // a cleanup and it should be on the free list now), or
+        // * it's humongous (this means that it was emptied
+        // during a cleanup and was added to the free list, but
+        // has been subseqently used to allocate a humongous
+        // object that may be less than the region size).
 
         alloc_region = NULL;
       }
@@ -3977,7 +3990,7 @@
     OopsInHeapRegionClosure        *scan_perm_cl;
     OopsInHeapRegionClosure        *scan_so_cl;
 
-    if (_g1h->g1_policy()->should_initiate_conc_mark()) {
+    if (_g1h->g1_policy()->during_initial_mark_pause()) {
       scan_root_cl = &scan_mark_root_cl;
       scan_perm_cl = &scan_mark_perm_cl;
       scan_so_cl   = &scan_mark_heap_rs_cl;
@@ -4140,7 +4153,7 @@
   FilterAndMarkInHeapRegionAndIntoCSClosure scan_and_mark(this, &boc, concurrent_mark());
 
   OopsInHeapRegionClosure *foc;
-  if (g1_policy()->should_initiate_conc_mark())
+  if (g1_policy()->during_initial_mark_pause())
     foc = &scan_and_mark;
   else
     foc = &scan_only;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -178,8 +178,8 @@
   // so the hack is to do the cast  QQQ FIXME
   _pauses_btwn_concurrent_mark((size_t)G1PausesBtwnConcMark),
   _n_marks_since_last_pause(0),
-  _conc_mark_initiated(false),
-  _should_initiate_conc_mark(false),
+  _initiate_conc_mark_if_possible(false),
+  _during_initial_mark_pause(false),
   _should_revert_to_full_young_gcs(false),
   _last_full_young_gc(false),
 
@@ -198,7 +198,9 @@
   _recorded_survivor_regions(0),
   _recorded_survivor_head(NULL),
   _recorded_survivor_tail(NULL),
-  _survivors_age_table(true)
+  _survivors_age_table(true),
+
+  _gc_overhead_perc(0.0)
 
 {
   // Set up the region size and associated fields. Given that the
@@ -275,6 +277,11 @@
   // calculate_young_list_target_config during initialization
   _max_survivor_regions = G1FixedSurvivorSpaceSize / HeapRegion::GrainBytes;
 
+  assert(GCTimeRatio > 0,
+         "we should have set it to a default value set_g1_gc_flags() "
+         "if a user set it to 0");
+  _gc_overhead_perc = 100.0 * (1.0 / (1.0 + GCTimeRatio));
+
   initialize_all();
 }
 
@@ -786,7 +793,7 @@
                            elapsed_time_ms,
                            calculations,
                            full_young_gcs() ? "full" : "partial",
-                           should_initiate_conc_mark() ? " i-m" : "",
+                           during_initial_mark_pause() ? " i-m" : "",
                            _in_marking_window,
                            _in_marking_window_im);
 #endif // TRACE_CALC_YOUNG_CONFIG
@@ -1033,7 +1040,8 @@
   set_full_young_gcs(true);
   _last_full_young_gc = false;
   _should_revert_to_full_young_gcs = false;
-  _should_initiate_conc_mark = false;
+  clear_initiate_conc_mark_if_possible();
+  clear_during_initial_mark_pause();
   _known_garbage_bytes = 0;
   _known_garbage_ratio = 0.0;
   _in_marking_window = false;
@@ -1179,7 +1187,8 @@
 void G1CollectorPolicy::record_concurrent_mark_init_end_pre(double
                                                    mark_init_elapsed_time_ms) {
   _during_marking = true;
-  _should_initiate_conc_mark = false;
+  assert(!initiate_conc_mark_if_possible(), "we should have cleared it by now");
+  clear_during_initial_mark_pause();
   _cur_mark_stop_world_time_ms = mark_init_elapsed_time_ms;
 }
 
@@ -1250,7 +1259,6 @@
   }
   _n_pauses_at_mark_end = _n_pauses;
   _n_marks_since_last_pause++;
-  _conc_mark_initiated = false;
 }
 
 void
@@ -1446,17 +1454,24 @@
 #endif // PRODUCT
 
   if (in_young_gc_mode()) {
-    last_pause_included_initial_mark = _should_initiate_conc_mark;
+    last_pause_included_initial_mark = during_initial_mark_pause();
     if (last_pause_included_initial_mark)
       record_concurrent_mark_init_end_pre(0.0);
 
     size_t min_used_targ =
       (_g1->capacity() / 100) * InitiatingHeapOccupancyPercent;
 
-    if (cur_used_bytes > min_used_targ) {
-      if (cur_used_bytes <= _prev_collection_pause_used_at_end_bytes) {
-      } else if (!_g1->mark_in_progress() && !_last_full_young_gc) {
-        _should_initiate_conc_mark = true;
+
+    if (!_g1->mark_in_progress() && !_last_full_young_gc) {
+      assert(!last_pause_included_initial_mark, "invariant");
+      if (cur_used_bytes > min_used_targ &&
+          cur_used_bytes > _prev_collection_pause_used_at_end_bytes) {
+        assert(!during_initial_mark_pause(), "we should not see this here");
+
+        // Note: this might have already been set, if during the last
+        // pause we decided to start a cycle but at the beginning of
+        // this pause we decided to postpone it. That's OK.
+        set_initiate_conc_mark_if_possible();
       }
     }
 
@@ -1747,7 +1762,7 @@
 
   bool new_in_marking_window = _in_marking_window;
   bool new_in_marking_window_im = false;
-  if (_should_initiate_conc_mark) {
+  if (during_initial_mark_pause()) {
     new_in_marking_window = true;
     new_in_marking_window_im = true;
   }
@@ -2166,7 +2181,13 @@
   if (predicted_time_ms > _expensive_region_limit_ms) {
     if (!in_young_gc_mode()) {
         set_full_young_gcs(true);
-      _should_initiate_conc_mark = true;
+        // We might want to do something different here. However,
+        // right now we don't support the non-generational G1 mode
+        // (and in fact we are planning to remove the associated code,
+        // see CR 6814390). So, let's leave it as is and this will be
+        // removed some time in the future
+        ShouldNotReachHere();
+        set_during_initial_mark_pause();
     } else
       // no point in doing another partial one
       _should_revert_to_full_young_gcs = true;
@@ -2288,7 +2309,7 @@
 }
 
 size_t G1CollectorPolicy::expansion_amount() {
-  if ((int)(recent_avg_pause_time_ratio() * 100.0) > G1GCPercent) {
+  if ((recent_avg_pause_time_ratio() * 100.0) > _gc_overhead_perc) {
     // We will double the existing space, or take
     // G1ExpandByPercentOfAvailable % of the available expansion
     // space, whichever is smaller, bounded below by a minimum
@@ -2690,6 +2711,50 @@
 #endif
 
 void
+G1CollectorPolicy::decide_on_conc_mark_initiation() {
+  // We are about to decide on whether this pause will be an
+  // initial-mark pause.
+
+  // First, during_initial_mark_pause() should not be already set. We
+  // will set it here if we have to. However, it should be cleared by
+  // the end of the pause (it's only set for the duration of an
+  // initial-mark pause).
+  assert(!during_initial_mark_pause(), "pre-condition");
+
+  if (initiate_conc_mark_if_possible()) {
+    // We had noticed on a previous pause that the heap occupancy has
+    // gone over the initiating threshold and we should start a
+    // concurrent marking cycle. So we might initiate one.
+
+    bool during_cycle = _g1->concurrent_mark()->cmThread()->during_cycle();
+    if (!during_cycle) {
+      // The concurrent marking thread is not "during a cycle", i.e.,
+      // it has completed the last one. So we can go ahead and
+      // initiate a new cycle.
+
+      set_during_initial_mark_pause();
+
+      // And we can now clear initiate_conc_mark_if_possible() as
+      // we've already acted on it.
+      clear_initiate_conc_mark_if_possible();
+    } else {
+      // The concurrent marking thread is still finishing up the
+      // previous cycle. If we start one right now the two cycles
+      // overlap. In particular, the concurrent marking thread might
+      // be in the process of clearing the next marking bitmap (which
+      // we will use for the next cycle if we start one). Starting a
+      // cycle now will be bad given that parts of the marking
+      // information might get cleared by the marking thread. And we
+      // cannot wait for the marking thread to finish the cycle as it
+      // periodically yields while clearing the next marking bitmap
+      // and, if it's in a yield point, it's waiting for us to
+      // finish. So, at this point we will not start a cycle and we'll
+      // let the concurrent marking thread complete the last one.
+    }
+  }
+}
+
+void
 G1CollectorPolicy_BestRegionsFirst::
 record_collection_pause_start(double start_time_sec, size_t start_used) {
   G1CollectorPolicy::record_collection_pause_start(start_time_sec, start_used);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -215,6 +215,8 @@
   SurvRateGroup*        _survivor_surv_rate_group;
   // add here any more surv rate groups
 
+  double                _gc_overhead_perc;
+
   bool during_marking() {
     return _during_marking;
   }
@@ -722,11 +724,31 @@
 
   size_t _n_marks_since_last_pause;
 
-  // True iff CM has been initiated.
-  bool _conc_mark_initiated;
+  // At the end of a pause we check the heap occupancy and we decide
+  // whether we will start a marking cycle during the next pause. If
+  // we decide that we want to do that, we will set this parameter to
+  // true. So, this parameter will stay true between the end of a
+  // pause and the beginning of a subsequent pause (not necessarily
+  // the next one, see the comments on the next field) when we decide
+  // that we will indeed start a marking cycle and do the initial-mark
+  // work.
+  volatile bool _initiate_conc_mark_if_possible;
 
-  // True iff CM should be initiated
-  bool _should_initiate_conc_mark;
+  // If initiate_conc_mark_if_possible() is set at the beginning of a
+  // pause, it is a suggestion that the pause should start a marking
+  // cycle by doing the initial-mark work. However, it is possible
+  // that the concurrent marking thread is still finishing up the
+  // previous marking cycle (e.g., clearing the next marking
+  // bitmap). If that is the case we cannot start a new cycle and
+  // we'll have to wait for the concurrent marking thread to finish
+  // what it is doing. In this case we will postpone the marking cycle
+  // initiation decision for the next pause. When we eventually decide
+  // to start a cycle, we will set _during_initial_mark_pause which
+  // will stay true until the end of the initial-mark pause and it's
+  // the condition that indicates that a pause is doing the
+  // initial-mark work.
+  volatile bool _during_initial_mark_pause;
+
   bool _should_revert_to_full_young_gcs;
   bool _last_full_young_gc;
 
@@ -979,9 +1001,21 @@
   // Add "hr" to the CS.
   void add_to_collection_set(HeapRegion* hr);
 
-  bool should_initiate_conc_mark()      { return _should_initiate_conc_mark; }
-  void set_should_initiate_conc_mark()  { _should_initiate_conc_mark = true; }
-  void unset_should_initiate_conc_mark(){ _should_initiate_conc_mark = false; }
+  bool initiate_conc_mark_if_possible()       { return _initiate_conc_mark_if_possible;  }
+  void set_initiate_conc_mark_if_possible()   { _initiate_conc_mark_if_possible = true;  }
+  void clear_initiate_conc_mark_if_possible() { _initiate_conc_mark_if_possible = false; }
+
+  bool during_initial_mark_pause()      { return _during_initial_mark_pause;  }
+  void set_during_initial_mark_pause()  { _during_initial_mark_pause = true;  }
+  void clear_during_initial_mark_pause(){ _during_initial_mark_pause = false; }
+
+  // This is called at the very beginning of an evacuation pause (it
+  // has to be the first thing that the pause does). If
+  // initiate_conc_mark_if_possible() is true, and the concurrent
+  // marking thread has completed its work during the previous cycle,
+  // it will set during_initial_mark_pause() to so that the pause does
+  // the initial-mark work and start a marking cycle.
+  void decide_on_conc_mark_initiation();
 
   // If an expansion would be appropriate, because recent GC overhead had
   // exceeded the desired limit, return an amount to expand by.
--- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -40,9 +40,6 @@
   develop(bool, G1Gen, true,                                                \
           "If true, it will enable the generational G1")                    \
                                                                             \
-  develop(intx, G1GCPercent, 10,                                            \
-          "The desired percent time spent on GC")                           \
-                                                                            \
   develop(intx, G1PolicyVerbose, 0,                                         \
           "The verbosity level on G1 policy decisions")                     \
                                                                             \
@@ -270,11 +267,11 @@
   product(uintx, G1HeapRegionSize, 0,                                       \
           "Size of the G1 regions.")                                        \
                                                                             \
-  experimental(bool, G1UseParallelRSetUpdating, false,                      \
+  experimental(bool, G1UseParallelRSetUpdating, true,                       \
           "Enables the parallelization of remembered set updating "         \
           "during evacuation pauses")                                       \
                                                                             \
-  experimental(bool, G1UseParallelRSetScanning, false,                      \
+  experimental(bool, G1UseParallelRSetScanning, true,                       \
           "Enables the parallelization of remembered set scanning "         \
           "during evacuation pauses")                                       \
                                                                             \
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -2328,6 +2328,17 @@
       }
 
       DEFAULT:
+#ifdef ZERO
+          // Some zero configurations use the C++ interpreter as a
+          // fallback interpreter and have support for platform
+          // specific fast bytecodes which aren't supported here, so
+          // redispatch to the equivalent non-fast bytecode when they
+          // are encountered.
+          if (Bytecodes::is_defined((Bytecodes::Code)opcode)) {
+              opcode = (jubyte)Bytecodes::java_code((Bytecodes::Code)opcode);
+              goto opcode_switch;
+          }
+#endif
           fatal2("\t*** Unimplemented opcode: %d = %s\n",
                  opcode, Bytecodes::name((Bytecodes::Code)opcode));
           goto finish;
--- a/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -111,7 +111,22 @@
 
   // Allocate size HeapWords. The memory is NOT initialized to zero.
   inline HeapWord* allocate(size_t size);
-  static size_t alignment_reserve()              { return align_object_size(typeArrayOopDesc::header_size(T_INT)); }
+
+  // Reserve space at the end of TLAB
+  static size_t end_reserve() {
+    int reserve_size = typeArrayOopDesc::header_size(T_INT);
+    if (AllocatePrefetchStyle == 3) {
+      // BIS is used to prefetch - we need a space for it.
+      // +1 for rounding up to next cache line +1 to be safe
+      int lines = AllocatePrefetchLines + 2;
+      int step_size = AllocatePrefetchStepSize;
+      int distance = AllocatePrefetchDistance;
+      int prefetch_end = (distance + step_size*lines)/(int)HeapWordSize;
+      reserve_size = MAX2(reserve_size, prefetch_end);
+    }
+    return reserve_size;
+  }
+  static size_t alignment_reserve()              { return align_object_size(end_reserve()); }
   static size_t alignment_reserve_in_bytes()     { return alignment_reserve() * HeapWordSize; }
 
   // Return tlab size or remaining space in eden such that the
--- a/hotspot/src/share/vm/oops/typeArrayKlass.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/oops/typeArrayKlass.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -123,16 +123,16 @@
      || (((unsigned int) length + (unsigned int) dst_pos) > (unsigned int) d->length()) ) {
     THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
   }
+  // Check zero copy
+  if (length == 0)
+    return;
 
   // This is an attempt to make the copy_array fast.
-  // NB: memmove takes care of overlapping memory segments.
-  // Potential problem: memmove is not guaranteed to be word atomic
-  // Revisit in Merlin
   int l2es = log2_element_size();
   int ihs = array_header_in_bytes() / wordSize;
-  char* src = (char*) ((oop*)s + ihs) + (src_pos << l2es);
-  char* dst = (char*) ((oop*)d + ihs) + (dst_pos << l2es);
-  memmove(dst, src, length << l2es);
+  char* src = (char*) ((oop*)s + ihs) + ((size_t)src_pos << l2es);
+  char* dst = (char*) ((oop*)d + ihs) + ((size_t)dst_pos << l2es);
+  Copy::conjoint_memory_atomic(src, dst, (size_t)length << l2es);
 }
 
 
--- a/hotspot/src/share/vm/opto/c2_globals.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -52,9 +52,6 @@
           "Code alignment for interior entry points "                       \
           "in generated code (in bytes)")                                   \
                                                                             \
-  product_pd(intx, OptoLoopAlignment,                                       \
-          "Align inner loops to zero relative to this modulus")             \
-                                                                            \
   product(intx, MaxLoopPad, (OptoLoopAlignment-1),                          \
           "Align a loop if padding size in bytes is less or equal to this value") \
                                                                             \
--- a/hotspot/src/share/vm/opto/cfgnode.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/cfgnode.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -956,6 +956,7 @@
     }
     if( jtkp && ttkp ) {
       if( jtkp->is_loaded() &&  jtkp->klass()->is_interface() &&
+          !jtkp->klass_is_exact() && // Keep exact interface klass (6894807)
           ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
         assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
                ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
--- a/hotspot/src/share/vm/opto/doCall.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -714,8 +714,6 @@
 
   // iterate through all entries sequentially
   for (;!handlers.is_done(); handlers.next()) {
-    // Do nothing if turned off
-    if( !DeutschShiffmanExceptions ) break;
     ciExceptionHandler* handler = handlers.handler();
 
     if (handler->is_rethrow()) {
@@ -741,46 +739,26 @@
       return;                   // No more handling to be done here!
     }
 
-    // %%% The following logic replicates make_from_klass_unique.
-    // TO DO:  Replace by a subroutine call.  Then generalize
-    // the type check, as noted in the next "%%%" comment.
-
+    // Get the handler's klass
     ciInstanceKlass* klass = handler->catch_klass();
-    if (UseUniqueSubclasses) {
-      // (We use make_from_klass because it respects UseUniqueSubclasses.)
-      const TypeOopPtr* tp = TypeOopPtr::make_from_klass(klass);
-      klass = tp->klass()->as_instance_klass();
+
+    if (!klass->is_loaded()) {  // klass is not loaded?
+      // fall through into catch_call_exceptions which will emit a
+      // handler with an uncommon trap.
+      break;
     }
 
-    // Get the handler's klass
-    if (!klass->is_loaded())    // klass is not loaded?
-      break;                    // Must call Rethrow!
     if (klass->is_interface())  // should not happen, but...
       break;                    // bail out
-    // See if the loaded exception klass has no subtypes
-    if (klass->has_subklass())
-      break;                    // Cannot easily do precise test ==> Rethrow
 
-    // %%% Now that subclass checking is very fast, we need to rewrite
-    // this section and remove the option "DeutschShiffmanExceptions".
-    // The exception processing chain should be a normal typecase pattern,
-    // with a bailout to the interpreter only in the case of unloaded
-    // classes.  (The bailout should mark the method non-entrant.)
-    // This rewrite should be placed in GraphKit::, not Parse::.
-
-    // Add a dependence; if any subclass added we need to recompile
-    // %%% should use stronger assert_unique_concrete_subtype instead
-    if (!klass->is_final()) {
-      C->dependencies()->assert_leaf_type(klass);
-    }
-
-    // Implement precise test
+    // Check the type of the exception against the catch type
     const TypeKlassPtr *tk = TypeKlassPtr::make(klass);
     Node* con = _gvn.makecon(tk);
-    Node* cmp = _gvn.transform( new (C, 3) CmpPNode(ex_klass_node, con) );
-    Node* bol = _gvn.transform( new (C, 2) BoolNode(cmp, BoolTest::ne) );
-    { BuildCutout unless(this, bol, PROB_LIKELY(0.7f));
-      const TypeInstPtr* tinst = TypeInstPtr::make_exact(TypePtr::NotNull, klass);
+    Node* not_subtype_ctrl = gen_subtype_check(ex_klass_node, con);
+    if (!stopped()) {
+      PreserveJVMState pjvms(this);
+      const TypeInstPtr* tinst = TypeOopPtr::make_from_klass_unique(klass)->cast_to_ptr_type(TypePtr::NotNull)->is_instptr();
+      assert(klass->has_subklass() || tinst->klass_is_exact(), "lost exactness");
       Node* ex_oop = _gvn.transform(new (C, 2) CheckCastPPNode(control(), ex_node, tinst));
       push_ex_oop(ex_oop);      // Push exception oop for handler
 #ifndef PRODUCT
@@ -792,6 +770,7 @@
 #endif
       merge_exception(handler_bci);
     }
+    set_control(not_subtype_ctrl);
 
     // Come here if exception does not match handler.
     // Carry on with more handler checks.
@@ -800,21 +779,6 @@
 
   assert(!stopped(), "you should return if you finish the chain");
 
-  if (remaining == 1) {
-    // Further checks do not matter.
-  }
-
-  if (can_rerun_bytecode()) {
-    // Do not push_ex_oop here!
-    // Re-executing the bytecode will reproduce the throwing condition.
-    bool must_throw = true;
-    uncommon_trap(Deoptimization::Reason_unhandled,
-                  Deoptimization::Action_none,
-                  (ciKlass*)NULL, (const char*)NULL, // default args
-                  must_throw);
-    return;
-  }
-
   // Oops, need to call into the VM to resolve the klasses at runtime.
   // Note:  This call must not deoptimize, since it is not a real at this bci!
   kill_dead_locals();
--- a/hotspot/src/share/vm/opto/macro.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/macro.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1487,11 +1487,11 @@
                                         Node*& contended_phi_rawmem,
                                         Node* old_eden_top, Node* new_eden_top,
                                         Node* length) {
+   enum { fall_in_path = 1, pf_path = 2 };
    if( UseTLAB && AllocatePrefetchStyle == 2 ) {
       // Generate prefetch allocation with watermark check.
       // As an allocation hits the watermark, we will prefetch starting
       // at a "distance" away from watermark.
-      enum { fall_in_path = 1, pf_path = 2 };
 
       Node *pf_region = new (C, 3) RegionNode(3);
       Node *pf_phi_rawmem = new (C, 3) PhiNode( pf_region, Type::MEMORY,
@@ -1570,6 +1570,45 @@
       needgc_false = pf_region;
       contended_phi_rawmem = pf_phi_rawmem;
       i_o = pf_phi_abio;
+   } else if( UseTLAB && AllocatePrefetchStyle == 3 ) {
+      // Insert a prefetch for each allocation only on the fast-path
+      Node *pf_region = new (C, 3) RegionNode(3);
+      Node *pf_phi_rawmem = new (C, 3) PhiNode( pf_region, Type::MEMORY,
+                                                TypeRawPtr::BOTTOM );
+
+      // Generate several prefetch instructions only for arrays.
+      uint lines = (length != NULL) ? AllocatePrefetchLines : 1;
+      uint step_size = AllocatePrefetchStepSize;
+      uint distance = AllocatePrefetchDistance;
+
+      // Next cache address.
+      Node *cache_adr = new (C, 4) AddPNode(old_eden_top, old_eden_top,
+                                            _igvn.MakeConX(distance));
+      transform_later(cache_adr);
+      cache_adr = new (C, 2) CastP2XNode(needgc_false, cache_adr);
+      transform_later(cache_adr);
+      Node* mask = _igvn.MakeConX(~(intptr_t)(step_size-1));
+      cache_adr = new (C, 3) AndXNode(cache_adr, mask);
+      transform_later(cache_adr);
+      cache_adr = new (C, 2) CastX2PNode(cache_adr);
+      transform_later(cache_adr);
+
+      // Prefetch
+      Node *prefetch = new (C, 3) PrefetchWriteNode( contended_phi_rawmem, cache_adr );
+      prefetch->set_req(0, needgc_false);
+      transform_later(prefetch);
+      contended_phi_rawmem = prefetch;
+      Node *prefetch_adr;
+      distance = step_size;
+      for ( uint i = 1; i < lines; i++ ) {
+        prefetch_adr = new (C, 4) AddPNode( cache_adr, cache_adr,
+                                            _igvn.MakeConX(distance) );
+        transform_later(prefetch_adr);
+        prefetch = new (C, 3) PrefetchWriteNode( contended_phi_rawmem, prefetch_adr );
+        transform_later(prefetch);
+        distance += step_size;
+        contended_phi_rawmem = prefetch;
+      }
    } else if( AllocatePrefetchStyle > 0 ) {
       // Insert a prefetch for each allocation only on the fast-path
       Node *prefetch_adr;
--- a/hotspot/src/share/vm/opto/memnode.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/memnode.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1244,5 +1244,5 @@
   virtual int Opcode() const;
   virtual uint ideal_reg() const { return NotAMachineReg; }
   virtual uint match_edge(uint idx) const { return idx==2; }
-  virtual const Type *bottom_type() const { return Type::ABIO; }
+  virtual const Type *bottom_type() const { return ( AllocatePrefetchStyle == 3 ) ? Type::MEMORY : Type::ABIO; }
 };
--- a/hotspot/src/share/vm/opto/parse.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/parse.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -551,9 +551,6 @@
   // Also handles exceptions for individual bytecodes.
   void catch_inline_exceptions(SafePointNode* ex_map);
 
-  // Bytecode classifier, helps decide to use uncommon_trap vs. rethrow_C.
-  bool can_rerun_bytecode();
-
   // Merge the given map into correct exceptional exit state.
   // Assumes that there is no applicable local handler.
   void throw_to_exit(SafePointNode* ex_map);
--- a/hotspot/src/share/vm/opto/parse1.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/parse1.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -798,67 +798,6 @@
   initial_gvn()->transform_no_reclaim(exit);
 }
 
-bool Parse::can_rerun_bytecode() {
-  switch (bc()) {
-  case Bytecodes::_ldc:
-  case Bytecodes::_ldc_w:
-  case Bytecodes::_ldc2_w:
-  case Bytecodes::_getfield:
-  case Bytecodes::_putfield:
-  case Bytecodes::_getstatic:
-  case Bytecodes::_putstatic:
-  case Bytecodes::_arraylength:
-  case Bytecodes::_baload:
-  case Bytecodes::_caload:
-  case Bytecodes::_iaload:
-  case Bytecodes::_saload:
-  case Bytecodes::_faload:
-  case Bytecodes::_aaload:
-  case Bytecodes::_laload:
-  case Bytecodes::_daload:
-  case Bytecodes::_bastore:
-  case Bytecodes::_castore:
-  case Bytecodes::_iastore:
-  case Bytecodes::_sastore:
-  case Bytecodes::_fastore:
-  case Bytecodes::_aastore:
-  case Bytecodes::_lastore:
-  case Bytecodes::_dastore:
-  case Bytecodes::_irem:
-  case Bytecodes::_idiv:
-  case Bytecodes::_lrem:
-  case Bytecodes::_ldiv:
-  case Bytecodes::_frem:
-  case Bytecodes::_fdiv:
-  case Bytecodes::_drem:
-  case Bytecodes::_ddiv:
-  case Bytecodes::_checkcast:
-  case Bytecodes::_instanceof:
-  case Bytecodes::_anewarray:
-  case Bytecodes::_newarray:
-  case Bytecodes::_multianewarray:
-  case Bytecodes::_new:
-  case Bytecodes::_monitorenter:  // can re-run initial null check, only
-  case Bytecodes::_return:
-    return true;
-    break;
-
-  // Don't rerun athrow since it's part of the exception path.
-  case Bytecodes::_athrow:
-  case Bytecodes::_invokestatic:
-  case Bytecodes::_invokedynamic:
-  case Bytecodes::_invokespecial:
-  case Bytecodes::_invokevirtual:
-  case Bytecodes::_invokeinterface:
-    return false;
-    break;
-
-  default:
-    assert(false, "unexpected bytecode produced an exception");
-    return true;
-  }
-}
-
 //---------------------------do_exceptions-------------------------------------
 // Process exceptions arising from the current bytecode.
 // Send caught exceptions to the proper handler within this method.
@@ -872,9 +811,6 @@
     return;
   }
 
-  // Make sure we can classify this bytecode if we need to.
-  debug_only(can_rerun_bytecode());
-
   PreserveJVMState pjvms(this, false);
 
   SafePointNode* ex_map;
--- a/hotspot/src/share/vm/opto/runtime.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/runtime.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -865,7 +865,7 @@
     thread->set_exception_stack_size(0);
 
     // Check if the exception PC is a MethodHandle call site.
-    thread->set_is_method_handle_exception(nm->is_method_handle_return(pc));
+    thread->set_is_method_handle_return(nm->is_method_handle_return(pc));
   }
 
   // Restore correct return pc.  Was saved above.
--- a/hotspot/src/share/vm/opto/type.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/opto/type.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -2545,12 +2545,15 @@
       ftip->is_loaded() &&  ftip->klass()->is_interface() &&
       ktip->is_loaded() && !ktip->klass()->is_interface()) {
     // Happens in a CTW of rt.jar, 320-341, no extra flags
+    assert(!ftip->klass_is_exact(), "interface could not be exact");
     return ktip->cast_to_ptr_type(ftip->ptr());
   }
+  // Interface klass type could be exact in opposite to interface type,
+  // return it here instead of incorrect Constant ptr J/L/Object (6894807).
   if (ftkp != NULL && ktkp != NULL &&
       ftkp->is_loaded() &&  ftkp->klass()->is_interface() &&
+      !ftkp->klass_is_exact() && // Keep exact interface klass
       ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
-    // Happens in a CTW of rt.jar, 320-341, no extra flags
     return ktkp->cast_to_ptr_type(ftkp->ptr());
   }
 
--- a/hotspot/src/share/vm/prims/forte.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/prims/forte.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -55,12 +55,11 @@
 };
 
 
-static void is_decipherable_compiled_frame(frame* fr, RegisterMap* map,
-  bool* is_compiled_p, bool* is_walkable_p);
+static bool is_decipherable_compiled_frame(JavaThread* thread, frame* fr, nmethod* nm);
 static bool is_decipherable_interpreted_frame(JavaThread* thread,
-                                                frame* fr,
-                                                methodOop* method_p,
-                                                int* bci_p);
+                                              frame* fr,
+                                              methodOop* method_p,
+                                              int* bci_p);
 
 
 
@@ -122,41 +121,43 @@
 // Determine if 'fr' is a decipherable compiled frame. We are already
 // assured that fr is for a java nmethod.
 
-static bool is_decipherable_compiled_frame(frame* fr) {
-
-  assert(fr->cb() != NULL && fr->cb()->is_nmethod(), "invariant");
-  nmethod* nm = (nmethod*) fr->cb();
+static bool is_decipherable_compiled_frame(JavaThread* thread, frame* fr, nmethod* nm) {
   assert(nm->is_java_method(), "invariant");
 
-  // First try and find an exact PcDesc
-
-  PcDesc* pc_desc = nm->pc_desc_at(fr->pc());
-
-  // Did we find a useful PcDesc?
-  if (pc_desc != NULL &&
-      pc_desc->scope_decode_offset() == DebugInformationRecorder::serialized_null) {
-
-    address probe_pc = fr->pc() + 1;
-    pc_desc = nm->pc_desc_near(probe_pc);
+  if (thread->has_last_Java_frame() && thread->last_Java_pc() == fr->pc()) {
+    // We're stopped at a call into the JVM so look for a PcDesc with
+    // the actual pc reported by the frame.
+    PcDesc* pc_desc = nm->pc_desc_at(fr->pc());
 
-    // Now do we have a useful PcDesc?
-
+    // Did we find a useful PcDesc?
     if (pc_desc != NULL &&
-        pc_desc->scope_decode_offset() == DebugInformationRecorder::serialized_null) {
-      // No debug information available for this pc
-      // vframeStream would explode if we try and walk the frames.
-      return false;
+        pc_desc->scope_decode_offset() != DebugInformationRecorder::serialized_null) {
+      return true;
     }
-
-    // This PcDesc is useful however we must adjust the frame's pc
-    // so that the vframeStream lookups will use this same pc
-
-    fr->set_pc(pc_desc->real_pc(nm));
   }
 
+  // We're at some random pc in the nmethod so search for the PcDesc
+  // whose pc is greater than the current PC.  It's done this way
+  // because the extra PcDescs that are recorded for improved debug
+  // info record the end of the region covered by the ScopeDesc
+  // instead of the beginning.
+  PcDesc* pc_desc = nm->pc_desc_near(fr->pc() + 1);
+
+  // Now do we have a useful PcDesc?
+  if (pc_desc == NULL ||
+      pc_desc->scope_decode_offset() == DebugInformationRecorder::serialized_null) {
+    // No debug information available for this pc
+    // vframeStream would explode if we try and walk the frames.
+    return false;
+  }
+
+  // This PcDesc is useful however we must adjust the frame's pc
+  // so that the vframeStream lookups will use this same pc
+  fr->set_pc(pc_desc->real_pc(nm));
   return true;
 }
 
+
 // Determine if 'fr' is a walkable interpreted frame. Returns false
 // if it is not. *method_p, and *bci_p are not set when false is
 // returned. *method_p is non-NULL if frame was executing a Java
@@ -166,9 +167,9 @@
 // even if a valid BCI cannot be found.
 
 static bool is_decipherable_interpreted_frame(JavaThread* thread,
-                                                frame* fr,
-                                                methodOop* method_p,
-                                                int* bci_p) {
+                                              frame* fr,
+                                              methodOop* method_p,
+                                              int* bci_p) {
   assert(fr->is_interpreted_frame(), "just checking");
 
   // top frame is an interpreted frame
@@ -323,13 +324,15 @@
       // have a PCDesc that can get us a bci however we did find
       // a method
 
-      if (!is_decipherable_compiled_frame(&candidate)) {
+      if (!is_decipherable_compiled_frame(thread, &candidate, nm)) {
         return false;
       }
 
       // is_decipherable_compiled_frame may modify candidate's pc
       *initial_frame_p = candidate;
 
+      assert(nm->pc_desc_at(candidate.pc()) != NULL, "if it's decipherable then pc must be valid");
+
       return true;
     }
 
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1353,6 +1353,16 @@
       MarkStackSize / K, MarkStackSizeMax / K);
     tty->print_cr("ConcGCThreads: %u", ConcGCThreads);
   }
+
+  if (FLAG_IS_DEFAULT(GCTimeRatio) || GCTimeRatio == 0) {
+    // In G1, we want the default GC overhead goal to be higher than
+    // say in PS. So we set it here to 10%. Otherwise the heap might
+    // be expanded more aggressively than we would like it to. In
+    // fact, even 10% seems to not be high enough in some cases
+    // (especially small GC stress tests that the main thing they do
+    // is allocation). We might consider increase it further.
+    FLAG_SET_DEFAULT(GCTimeRatio, 9);
+  }
 }
 
 void Arguments::set_heap_size() {
--- a/hotspot/src/share/vm/runtime/globals.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1052,7 +1052,8 @@
           "Use SSE2 MOVDQU instruction for Arraycopy")                      \
                                                                             \
   product(intx, FieldsAllocationStyle, 1,                                   \
-          "0 - type based with oops first, 1 - with oops last")             \
+          "0 - type based with oops first, 1 - with oops last, "            \
+          "2 - oops in super and sub classes are together")                 \
                                                                             \
   product(bool, CompactFields, true,                                        \
           "Allocate nonstatic fields in gaps between previous fields")      \
@@ -2502,10 +2503,6 @@
   notproduct(bool, TraceSpilling, false,                                    \
           "Trace spilling")                                                 \
                                                                             \
-  develop(bool, DeutschShiffmanExceptions, true,                            \
-          "Fast check to find exception handler for precisely typed "       \
-          "exceptions")                                                     \
-                                                                            \
   product(bool, SplitIfBlocks, true,                                        \
           "Clone compares and control flow through merge points to fold "   \
           "some branches")                                                  \
@@ -2711,7 +2708,8 @@
   product(intx,  AllocatePrefetchStyle, 1,                                  \
           "0 = no prefetch, "                                               \
           "1 = prefetch instructions for each allocation, "                 \
-          "2 = use TLAB watermark to gate allocation prefetch")             \
+          "2 = use TLAB watermark to gate allocation prefetch, "            \
+          "3 = use BIS instruction on Sparc for allocation prefetch")       \
                                                                             \
   product(intx,  AllocatePrefetchDistance, -1,                              \
           "Distance to prefetch ahead of allocation pointer")               \
@@ -3114,6 +3112,9 @@
   develop_pd(intx, CodeEntryAlignment,                                      \
           "Code entry alignment for generated code (in bytes)")             \
                                                                             \
+  product_pd(intx, OptoLoopAlignment,                                       \
+          "Align inner loops to zero relative to this modulus")             \
+                                                                            \
   product_pd(uintx, InitialCodeCacheSize,                                   \
           "Initial code cache size (in bytes)")                             \
                                                                             \
--- a/hotspot/src/share/vm/runtime/mutexLocker.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/runtime/mutexLocker.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -70,6 +70,7 @@
 Monitor* CMark_lock                   = NULL;
 Monitor* ZF_mon                       = NULL;
 Monitor* Cleanup_mon                  = NULL;
+Mutex*   CMRegionStack_lock           = NULL;
 Mutex*   SATB_Q_FL_lock               = NULL;
 Monitor* SATB_Q_CBL_mon               = NULL;
 Mutex*   Shared_SATB_Q_lock           = NULL;
@@ -167,6 +168,7 @@
     def(CMark_lock                 , Monitor, nonleaf,     true ); // coordinate concurrent mark thread
     def(ZF_mon                     , Monitor, leaf,        true );
     def(Cleanup_mon                , Monitor, nonleaf,     true );
+    def(CMRegionStack_lock         , Mutex,   leaf,        true );
     def(SATB_Q_FL_lock             , Mutex  , special,     true );
     def(SATB_Q_CBL_mon             , Monitor, nonleaf,     true );
     def(Shared_SATB_Q_lock         , Mutex,   nonleaf,     true );
--- a/hotspot/src/share/vm/runtime/mutexLocker.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/runtime/mutexLocker.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -63,6 +63,7 @@
 extern Monitor* CMark_lock;                      // used for concurrent mark thread coordination
 extern Monitor* ZF_mon;                          // used for G1 conc zero-fill.
 extern Monitor* Cleanup_mon;                     // used for G1 conc cleanup.
+extern Mutex*   CMRegionStack_lock;              // used for protecting accesses to the CM region stack
 extern Mutex*   SATB_Q_FL_lock;                  // Protects SATB Q
                                                  // buffer free list.
 extern Monitor* SATB_Q_CBL_mon;                  // Protects SATB Q
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -259,13 +259,16 @@
 address SharedRuntime::raw_exception_handler_for_return_address(JavaThread* thread, address return_address) {
   assert(frame::verify_return_pc(return_address), "must be a return pc");
 
+  // Reset MethodHandle flag.
+  thread->set_is_method_handle_return(false);
+
   // the fastest case first
   CodeBlob* blob = CodeCache::find_blob(return_address);
   if (blob != NULL && blob->is_nmethod()) {
     nmethod* code = (nmethod*)blob;
     assert(code != NULL, "nmethod must be present");
     // Check if the return address is a MethodHandle call site.
-    thread->set_is_method_handle_exception(code->is_method_handle_return(return_address));
+    thread->set_is_method_handle_return(code->is_method_handle_return(return_address));
     // native nmethods don't have exception handlers
     assert(!code->is_native_method(), "no exception handler");
     assert(code->header_begin() != code->exception_begin(), "no exception handler");
@@ -292,7 +295,7 @@
       nmethod* code = (nmethod*)blob;
       assert(code != NULL, "nmethod must be present");
       // Check if the return address is a MethodHandle call site.
-      thread->set_is_method_handle_exception(code->is_method_handle_return(return_address));
+      thread->set_is_method_handle_return(code->is_method_handle_return(return_address));
       assert(code->header_begin() != code->exception_begin(), "no exception handler");
       return code->exception_begin();
     }
--- a/hotspot/src/share/vm/runtime/thread.hpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/runtime/thread.hpp	Tue Apr 20 01:24:48 2010 -0700
@@ -772,7 +772,7 @@
   volatile address _exception_pc;                // PC where exception happened
   volatile address _exception_handler_pc;        // PC for handler of exception
   volatile int     _exception_stack_size;        // Size of frame where exception happened
-  volatile int     _is_method_handle_exception;  // True if the current exception PC is at a MethodHandle call.
+  volatile int     _is_method_handle_return;     // true (== 1) if the current exception PC is a MethodHandle call site.
 
   // support for compilation
   bool    _is_compiling;                         // is true if a compilation is active inthis thread (one compilation per thread possible)
@@ -1108,13 +1108,13 @@
   int      exception_stack_size() const          { return _exception_stack_size; }
   address  exception_pc() const                  { return _exception_pc; }
   address  exception_handler_pc() const          { return _exception_handler_pc; }
-  int      is_method_handle_exception() const    { return _is_method_handle_exception; }
+  bool     is_method_handle_return() const       { return _is_method_handle_return == 1; }
 
   void set_exception_oop(oop o)                  { _exception_oop = o; }
   void set_exception_pc(address a)               { _exception_pc = a; }
   void set_exception_handler_pc(address a)       { _exception_handler_pc = a; }
   void set_exception_stack_size(int size)        { _exception_stack_size = size; }
-  void set_is_method_handle_exception(int value) { _is_method_handle_exception = value; }
+  void set_is_method_handle_return(bool value)   { _is_method_handle_return = value ? 1 : 0; }
 
   // Stack overflow support
   inline size_t stack_available(address cur_sp);
@@ -1188,7 +1188,7 @@
   static ByteSize exception_pc_offset()          { return byte_offset_of(JavaThread, _exception_pc        ); }
   static ByteSize exception_handler_pc_offset()  { return byte_offset_of(JavaThread, _exception_handler_pc); }
   static ByteSize exception_stack_size_offset()  { return byte_offset_of(JavaThread, _exception_stack_size); }
-  static ByteSize is_method_handle_exception_offset() { return byte_offset_of(JavaThread, _is_method_handle_exception); }
+  static ByteSize is_method_handle_return_offset() { return byte_offset_of(JavaThread, _is_method_handle_return); }
   static ByteSize stack_guard_state_offset()     { return byte_offset_of(JavaThread, _stack_guard_state   ); }
   static ByteSize suspend_flags_offset()         { return byte_offset_of(JavaThread, _suspend_flags       ); }
 
--- a/hotspot/src/share/vm/utilities/ostream.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/utilities/ostream.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -363,7 +363,7 @@
   return _log_file != NULL;
 }
 
-static const char* make_log_name(const char* log_name, const char* force_directory, char* buf) {
+static const char* make_log_name(const char* log_name, const char* force_directory) {
   const char* basename = log_name;
   char file_sep = os::file_separator()[0];
   const char* cp;
@@ -374,6 +374,27 @@
   }
   const char* nametail = log_name;
 
+  // Compute buffer length
+  size_t buffer_length;
+  if (force_directory != NULL) {
+    buffer_length = strlen(force_directory) + strlen(os::file_separator()) +
+                    strlen(basename) + 1;
+  } else {
+    buffer_length = strlen(log_name) + 1;
+  }
+
+  const char* star = strchr(basename, '*');
+  int star_pos = (star == NULL) ? -1 : (star - nametail);
+
+  char pid[32];
+  if (star_pos >= 0) {
+    jio_snprintf(pid, sizeof(pid), "%u", os::current_process_id());
+    buffer_length += strlen(pid);
+  }
+
+  // Create big enough buffer.
+  char *buf = NEW_C_HEAP_ARRAY(char, buffer_length);
+
   strcpy(buf, "");
   if (force_directory != NULL) {
     strcat(buf, force_directory);
@@ -381,14 +402,11 @@
     nametail = basename;       // completely skip directory prefix
   }
 
-  const char* star = strchr(basename, '*');
-  int star_pos = (star == NULL) ? -1 : (star - nametail);
-
   if (star_pos >= 0) {
     // convert foo*bar.log to foo123bar.log
     int buf_pos = (int) strlen(buf);
     strncpy(&buf[buf_pos], nametail, star_pos);
-    sprintf(&buf[buf_pos + star_pos], "%u", os::current_process_id());
+    strcpy(&buf[buf_pos + star_pos], pid);
     nametail += star_pos + 1;  // skip prefix and star
   }
 
@@ -399,20 +417,23 @@
 void defaultStream::init_log() {
   // %%% Need a MutexLocker?
   const char* log_name = LogFile != NULL ? LogFile : "hotspot.log";
-  char buf[O_BUFLEN*2];
-  const char* try_name = make_log_name(log_name, NULL, buf);
+  const char* try_name = make_log_name(log_name, NULL);
   fileStream* file = new(ResourceObj::C_HEAP) fileStream(try_name);
   if (!file->is_open()) {
     // Try again to open the file.
     char warnbuf[O_BUFLEN*2];
-    sprintf(warnbuf, "Warning:  Cannot open log file: %s\n", try_name);
+    jio_snprintf(warnbuf, sizeof(warnbuf),
+                 "Warning:  Cannot open log file: %s\n", try_name);
     // Note:  This feature is for maintainer use only.  No need for L10N.
     jio_print(warnbuf);
-    try_name = make_log_name("hs_pid*.log", os::get_temp_directory(), buf);
-    sprintf(warnbuf, "Warning:  Forcing option -XX:LogFile=%s\n", try_name);
+    FREE_C_HEAP_ARRAY(char, try_name);
+    try_name = make_log_name("hs_pid*.log", os::get_temp_directory());
+    jio_snprintf(warnbuf, sizeof(warnbuf),
+                 "Warning:  Forcing option -XX:LogFile=%s\n", try_name);
     jio_print(warnbuf);
     delete file;
     file = new(ResourceObj::C_HEAP) fileStream(try_name);
+    FREE_C_HEAP_ARRAY(char, try_name);
   }
   if (file->is_open()) {
     _log_file = file;
--- a/hotspot/src/share/vm/utilities/vmError.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/hotspot/src/share/vm/utilities/vmError.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -807,8 +807,8 @@
       if (fd == -1) {
         // try temp directory
         const char * tmpdir = os::get_temp_directory();
-        jio_snprintf(buffer, sizeof(buffer), "%shs_err_pid%u.log",
-                     (tmpdir ? tmpdir : ""), os::current_process_id());
+        jio_snprintf(buffer, sizeof(buffer), "%s%shs_err_pid%u.log",
+                     tmpdir, os::file_separator(), os::current_process_id());
         fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666);
       }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6892265/Test.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6892265
+ * @summary System.arraycopy unable to reference elements beyond Integer.MAX_VALUE bytes
+ *
+ * @run main/othervm Test
+ */
+
+public class Test {
+  static  final int NCOPY = 1;
+  static  final int OVERFLOW = 1;
+  static  int[] src2 = new int[NCOPY];
+  static  int[] dst2;
+
+  static void test() {
+    int N;
+    int SIZE;
+
+    N = Integer.MAX_VALUE/4 + OVERFLOW;
+    System.arraycopy(src2, 0, dst2, N, NCOPY);
+    System.arraycopy(dst2, N, src2, 0, NCOPY);
+  }
+
+  public static void main(String[] args) {
+    try {
+      dst2 = new int[NCOPY + Integer.MAX_VALUE/4 + OVERFLOW];
+    } catch (OutOfMemoryError e) {
+       System.exit(95); // Not enough memory
+    }
+    System.out.println("warmup");
+    for (int i=0; i <11000; i++) {
+      test();
+    }
+    System.out.println("start");
+    for (int i=0; i <1000; i++) {
+      test();
+    }
+    System.out.println("finish");
+  }
+
+}
--- a/jaxp/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/jaxp/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -62,3 +62,5 @@
 6c0ccabb430dacdcd4479f8b197980d5da4eeb66 jdk7-b85
 81c0f115bbe5d3bcf59864465b5eca5538567c79 jdk7-b86
 8b493f1aa136d86de0885fcba15262c4fa2b1412 jdk7-b87
+d8ebd15910034f2ba50b2f129f959f86cca01419 jdk7-b88
+d2818fd2b036f3b3154a9a7de41afcf4ac679c1b jdk7-b89
--- a/jaxws/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/jaxws/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -62,3 +62,5 @@
 8424512588ff95362c1f1e5f11c6efd4e7f7db6e jdk7-b85
 512b0e924a5ae0c0b7ad326182cae0dc0e4d1aa8 jdk7-b86
 3febd6fab2ac8ffddbaf7bed00d11290262af153 jdk7-b87
+8c666f8f3565974e301ccb58b7538912551a6e26 jdk7-b88
+bf3675aa7f20fc6f241ce95760005aef2a30ff41 jdk7-b89
--- a/jdk/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -63,3 +63,4 @@
 eae6e9ab26064d9ba0e7665dd646a1fd2506fcc1 jdk7-b86
 2cafbbe9825e911a6ca6c17d9a18eb1f0bf0873c jdk7-b87
 b3c69282f6d3c90ec21056cd1ab70dc0c895b069 jdk7-b88
+4a6abb7e224cc8d9a583c23c5782e4668739a119 jdk7-b89
--- a/jdk/make/sun/javazic/tzdata/VERSION	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/VERSION	Tue Apr 20 01:24:48 2010 -0700
@@ -21,4 +21,4 @@
 # CA 95054 USA or visit www.sun.com if you need additional information or
 # have any questions.
 #
-tzdata2010b
+tzdata2010g
--- a/jdk/make/sun/javazic/tzdata/antarctica	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/antarctica	Tue Apr 20 01:24:48 2010 -0700
@@ -79,6 +79,33 @@
 Rule	ChileAQ	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
 Rule	ChileAQ	2000	max	-	Mar	Sun>=9	3:00u	0	-
 
+# These rules are stolen from the `australasia' file.
+Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
+Rule	AusAQ	1917	only	-	Mar	25	2:00	0	-
+Rule	AusAQ	1942	only	-	Jan	 1	2:00	1:00	-
+Rule	AusAQ	1942	only	-	Mar	29	2:00	0	-
+Rule	AusAQ	1942	only	-	Sep	27	2:00	1:00	-
+Rule	AusAQ	1943	1944	-	Mar	lastSun	2:00	0	-
+Rule	AusAQ	1943	only	-	Oct	 3	2:00	1:00	-
+Rule	ATAQ	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	ATAQ	1968	only	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	1968	1985	-	Oct	lastSun	2:00s	1:00	-
+Rule	ATAQ	1969	1971	-	Mar	Sun>=8	2:00s	0	-
+Rule	ATAQ	1972	only	-	Feb	lastSun	2:00s	0	-
+Rule	ATAQ	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+Rule	ATAQ	1982	1983	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	1984	1986	-	Mar	Sun>=1	2:00s	0	-
+Rule	ATAQ	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
+Rule	ATAQ	1987	1990	-	Mar	Sun>=15	2:00s	0	-
+Rule	ATAQ	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
+Rule	ATAQ	1988	1990	-	Oct	lastSun	2:00s	1:00	-
+Rule	ATAQ	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	ATAQ	1991	2005	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	2000	only	-	Aug	lastSun	2:00s	1:00	-
+Rule	ATAQ	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	ATAQ	2006	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	ATAQ	2007	only	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
 
 # Argentina - year-round bases
 # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
@@ -120,20 +147,52 @@
 # http://www.timeanddate.com/news/time/antarctica-new-times.html
 # </a>
 
+# From Steffen Thorsen (2010-03-10):
+# We got these changes from the Australian Antarctic Division:
+# - Macquarie Island will stay on UTC+11 for winter and therefore not
+# switch back from daylight savings time when other parts of Australia do
+# on 4 April.
+#
+# - Casey station reverted to its normal time of UTC+8 on 5 March 2010.
+# The change to UTC+11 is being considered as a regular summer thing but
+# has not been decided yet.
+#
+# - Davis station will revert to its normal time of UTC+7 at 10 March 2010
+# 20:00 UTC.
+#
+# - Mawson station stays on UTC+5.
+#
+# In addition to the Rule changes for Casey/Davis, it means that Macquarie
+# will no longer be like Hobart and will have to have its own Zone created.
+#
+# Background:
+# <a href="http://www.timeanddate.com/news/time/antartica-time-changes-2010.html">
+# http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
+# </a>
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Antarctica/Casey	0	-	zzz	1969
 			8:00	-	WST	2009 Oct 18 2:00
 						# Western (Aus) Standard Time
-			11:00	-	CAST	# Casey Time
+			11:00	-	CAST	2010 Mar 5 2:00
+						# Casey Time
+			8:00	-	WST
 Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
 			7:00	-	DAVT	1964 Nov # Davis Time
 			0	-	zzz	1969 Feb
 			7:00	-	DAVT	2009 Oct 18 2:00
-			5:00	-	DAVT
+			5:00	-	DAVT	2010 Mar 10 20:00u
+			7:00	-	DAVT
 Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
 			6:00	-	MAWT	2009 Oct 18 2:00
 						# Mawson Time
 			5:00	-	MAWT
+Zone Antarctica/Macquarie 0	-	zzz	1911
+			10:00	-	EST	1916 Oct 1 2:00
+			10:00	1:00	EST	1917 Feb
+			10:00	AusAQ	EST	1967
+			10:00	ATAQ	EST	2010 Apr 4 3:00
+			11:00	-	MIST	# Macquarie Island Time
 # References:
 # <a href="http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html">
 # Casey Weather (1998-02-26)
--- a/jdk/make/sun/javazic/tzdata/asia	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/asia	Tue Apr 20 01:24:48 2010 -0700
@@ -236,22 +236,20 @@
 # 2010 midnight. The decision came at a cabinet meeting at the Prime
 # Minister's Office last night..."
 
-# From Danvin Ruangchan (2009-12-24):
-# ...the news mentions DST will be turned off again 7 months after March
-# 31st on Oct 31, 2010.
-
-# From Arthur David Olson (2009-12-26):
-# Indeed, "The government will advance again the Banglasdesh Standard
-# Time by one one hour on March 31 next year by enforcing the Daylight
-# Saving Time (DST) for seven months. It will continue till October 31
-# until further notice." I take that last sentence as the
-# establishment of a rule.
+# From Alexander Krivenyshev (2010-03-22):
+# According to Bangladesh newspaper "The Daily Star,"
+# Cabinet cancels Daylight Saving Time 
+# <a href="http://www.thedailystar.net/newDesign/latest_news.php?nid=22817">
+# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+# </a>
+# or
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html">
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
+# </a>
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	S
-Rule	Dhaka	2010	only	-	Jan	1	0:00	0	-
-Rule	Dhaka	2010	max	-	Mar	31	23:00	1:00	S
-Rule	Dhaka	2010	max	-	Nov	1	0:00	0	-
+Rule	Dhaka	2009	only	-	Dec	31	23:59	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Dhaka	6:01:40 -	LMT	1890
@@ -2131,6 +2129,32 @@
 # http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html
 # </a>
 
+# From Alexander Krivenyshev (2010-03-19):
+# According to Voice of Palestine DST will last for 191 days, from March
+# 26, 2010 till "the last Sunday before the tenth day of Tishri
+# (October), each year" (October 03, 2010?)
+#
+# <a href="http://palvoice.org/forums/showthread.php?t=245697">
+# http://palvoice.org/forums/showthread.php?t=245697
+# </a>
+# (in Arabic)
+# or
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_westbank03.html">
+# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html
+# </a>
+
+# From Steffen Thorsen (2010-03-24):
+# ...Ma'an News Agency reports that Hamas cabinet has decided it will
+# start one day later, at 12:01am. Not sure if they really mean 12:01am or
+# noon though:
+#
+# <a href="http://www.maannews.net/eng/ViewDetails.aspx?ID=271178">
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
+# </a>
+# (Ma'an News Agency)
+# "At 12:01am Friday, clocks in Israel and the West Bank will change to
+# 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
+
 # The rules for Egypt are stolen from the `africa' file.
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
@@ -2148,7 +2172,8 @@
 Rule Palestine	2006	only	-	Sep	22	0:00	0	-
 Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
 Rule Palestine	2008	only	-	Aug	lastFri	2:00	0	-
-Rule Palestine	2009	max	-	Mar	lastFri	0:00	1:00	S
+Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
+Rule Palestine	2010	max	-	Mar	lastSat	0:01	1:00	S
 Rule Palestine	2009	max	-	Sep	Fri>=1	2:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -2440,9 +2465,18 @@
 # Thursday of the month or the start of the last Friday of the month or
 # something else. For now, use the start of the last Friday.
 
+# From Steffen Thorsen (2010-03-17):
+# The "Syrian News Station" reported on 2010-03-16 that the Council of
+# Ministers has decided that Syria will start DST on midnight Thursday
+# 2010-04-01: (midnight between Thursday and Friday):
+# <a href="http://sns.sy/sns/?path=news/read/11421">
+# http://sns.sy/sns/?path=news/read/11421 (Arabic)
+# </a>
+
 Rule	Syria	2008	only	-	Apr	Fri>=1	0:00	1:00	S
 Rule	Syria	2008	only	-	Nov	1	0:00	0	-
-Rule	Syria	2009	max	-	Mar	lastFri	0:00	1:00	S
+Rule	Syria	2009	only	-	Mar	lastFri	0:00	1:00	S
+Rule	Syria	2010	max	-	Apr	Fri>=1	0:00	1:00	S
 Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
--- a/jdk/make/sun/javazic/tzdata/australasia	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/australasia	Tue Apr 20 01:24:48 2010 -0700
@@ -289,11 +289,30 @@
 # <a href="http://www.fiji.gov.fj/publish/page_16198.shtml">
 # http://www.fiji.gov.fj/publish/page_16198.shtml
 # </a>
+
+# From Steffen Thorsen (2010-03-03):
+# The Cabinet in Fiji has decided to end DST about a month early, on
+# 2010-03-28 at 03:00.
+# The plan is to observe DST again, from 2010-10-24 to sometime in March
+# 2011 (last Sunday a good guess?).
+#
+# Official source:
+# <a href="http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166">
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166
+# </a>
+#
+# A bit more background info here:
+# <a href="http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html">
+# http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html
+# </a>
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
 Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
 Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
-Rule	Fiji	2010	only	-	Apr	25	3:00	0	-
+Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+Rule	Fiji	2010	only	-	Oct	24	2:00	1:00	S
+Rule	Fiji	2011	only	-	Mar	lastSun 3:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
 			12:00	Fiji	FJ%sT	# Fiji Time
@@ -471,70 +490,30 @@
 
 # Samoa
 
-# From Alexander Krivenyshev (2008-12-06):
-# The Samoa government (Western Samoa) may implement DST on the first Sunday of 
-# October 2009 (October 4, 2009) until the last Sunday of March 2010 (March 28, 
-# 2010). 
-# 
-# "Selected Committee reports to Cabinet on Daylight Saving Time",
-# Government of Samoa:
-# <a href="http://www.govt.ws/pr_article.cfm?pr_id=560">
-# http://www.govt.ws/pr_article.cfm?pr_id=560
-# </a>
-# or
-# <a href="http://www.worldtimezone.com/dst_news/dst_news_samoa01.html">
-# http://www.worldtimezone.com/dst_news/dst_news_samoa01.html
-# </a>
-
-# From Steffen Thorsen (2009-08-27):
-# Samoa's parliament passed the Daylight Saving Bill 2009, and will start 
-# daylight saving time on the first Sunday of October 2009 and end on the 
-# last Sunday of March 2010. We hope that the full text will be published 
-# soon, but we believe that the bill is only valid for 2009-2010. Samoa's 
-# Daylight Saving Act 2009 will be enforced as soon as the Head of State 
-# executes a proclamation publicizing this Act.
+# From Steffen Thorsen (2009-10-16):
+# We have been in contact with the government of Samoa again, and received
+# the following info:
 #
-# Some background information here, which will be updated once we have 
-# more details:
+# "Cabinet has now approved Daylight Saving to be effected next year
+# commencing from the last Sunday of September 2010 and conclude first
+# Sunday of April 2011."
+#
+# Background info:
 # <a href="http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html">
 # http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
 # </a>
-
-# From Alexander Krivenyshev (2009-10-03):
-# First, my deepest condolences to people of Samoa islands and all families and
-# loved ones around the world who lost their lives in the earthquake and tsunami.
 #
-# Considering the recent devastation on Samoa by earthquake and tsunami and that
-# many government offices/ ministers are closed- not sure if "Daylight Saving
-# Bill 2009" will be implemented in next few days- on October 4, 2009.
-#
-# Here is reply from Consulate-General of Samoa in New Zealand
-# ---------------------------
-# Consul General
-# consulgeneral@samoaconsulate.org.nz
-#
-# Talofa Alexander,
-#
-# Thank you for your sympathy for our country but at this time we have not
-# been informed about the Daylight Savings Time Change.  Most Ministries in
-# Apia are closed or relocating due to weather concerns.
-#
-# When we do find out if they are still proceeding with the time change we
-# will advise you soonest.
-#
-# Kind Regards,
-# Lana
-# for: Consul General
-
-# From Steffen Thorsen (2009-10-05):
-# We have called a hotel in Samoa and asked about local time there - they 
-# are still on standard time.
+# Samoa's Daylight Saving Time Act 2009 is available here, but does not
+# contain any dates:
+# <a href="http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf">
+# http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
+# </a>
 
 Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
 			-11:26:56 -	LMT	1911
 			-11:30	-	SAMT	1950		# Samoa Time
-			-11:00	-	WST	2009 Oct 4
-			-11:00	1:00	WSDT	2010 Mar 28
+			-11:00	-	WST	2010 Sep 26
+			-11:00	1:00	WSDT	2011 Apr 3
 			-11:00	-	WST
 
 # Solomon Is
--- a/jdk/make/sun/javazic/tzdata/europe	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/europe	Tue Apr 20 01:24:48 2010 -0700
@@ -2063,7 +2063,9 @@
 			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
 			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
 			 3:00	-	KUYT	1991 Oct 20 3:00
-			 4:00	Russia	SAM%sT	# Samara Time
+			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
+			 3:00	Russia	SAM%sT
+
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
@@ -2216,7 +2218,8 @@
 			11:00	-	PETT	1930 Jun 21 # P-K Time
 			12:00	Russia	PET%sT	1991 Mar 31 2:00s
 			11:00	Russia	PET%sT	1992 Jan 19 2:00s
-			12:00	Russia	PET%sT
+			12:00	Russia	PET%sT	2010 Mar 28 2:00s
+			11:00	Russia	PET%sT
 #
 # Chukotskij avtonomnyj okrug
 Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
@@ -2224,7 +2227,8 @@
 			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
 			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
 			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
-			12:00	Russia	ANA%sT
+			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
+			11:00	Russia	ANA%sT
 
 # Serbia
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
--- a/jdk/make/sun/javazic/tzdata/southamerica	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/southamerica	Tue Apr 20 01:24:48 2010 -0700
@@ -1143,6 +1143,18 @@
 # http://www.shoa.cl/noticias/2008/04hora/hora.htm
 # </a>.
 
+# From Angel Chiang (2010-03-04):
+# Subject: DST in Chile exceptionally extended to 3 April due to earthquake
+# <a href="http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098">
+# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
+# </a>
+# (in Spanish, last paragraph).
+#
+# This is breaking news. There should be more information available later.
+
+# From Arthur Daivd Olson (2010-03-06):
+# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
 Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
@@ -1177,7 +1189,9 @@
 # N.B.: the end of March 29 in Chile is March 30 in Universal time,
 # which is used below in specifying the transition.
 Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
-Rule	Chile	2009	max	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	2010	only	-	Apr	 4	3:00u	0	-
+Rule	Chile	2011	max	-	Mar	Sun>=9	3:00u	0	-
 # IATA SSIM anomalies: (1992-02) says 1992-03-14;
 # (1996-09) says 1998-03-08.  Ignore these.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -1386,8 +1400,24 @@
 # Decree 1,867 (2004-03-05)
 # From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
 # <http://www.presidencia.gov.py/decretos/D1867.pdf>
-Rule	Para	2004	max	-	Oct	Sun>=15	0:00	1:00	S
-Rule	Para	2005	max	-	Mar	Sun>=8	0:00	0	-
+Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	S
+Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
+# From Carlos Raul Perasso (2010-02-18):
+# By decree number 3958 issued yesterday (
+# <a href="http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf">
+# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
+# </a>
+# )
+# Paraguay changes its DST schedule, postponing the March rule to April and
+# modifying the October date. The decree reads:
+# ...
+# Art. 1. It is hereby established that from the second Sunday of the month of
+# April of this year (2010), the official time is to be set back 60 minutes,
+# and that on the first Sunday of the month of October, it is to be set
+# forward 60 minutes, in all the territory of the Paraguayan Republic.
+# ...
+Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
+Rule	Para	2010	max	-	Apr	Sun>=8	0:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Asuncion	-3:50:40 -	LMT	1890
--- a/jdk/make/sun/javazic/tzdata/zone.tab	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/javazic/tzdata/zone.tab	Tue Apr 20 01:24:48 2010 -0700
@@ -66,6 +66,7 @@
 AQ	-7824+10654	Antarctica/Vostok	Vostok Station, S Magnetic Pole
 AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
 AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
+AQ	-5430+15857	Antarctica/Macquarie	Macquarie Island Station, Macquarie Island
 AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
 AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)
 AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)
@@ -351,7 +352,7 @@
 RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
 RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
 RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
-RU	+5312+05009	Europe/Samara	Moscow+01 - Samara, Udmurtia
+RU	+5312+05009	Europe/Samara	Moscow - Samara, Udmurtia
 RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
 RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
 RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
@@ -362,8 +363,8 @@
 RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
 RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
 RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
-RU	+5301+15839	Asia/Kamchatka	Moscow+09 - Kamchatka
-RU	+6445+17729	Asia/Anadyr	Moscow+10 - Bering Sea
+RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
 RW	-0157+03004	Africa/Kigali
 SA	+2438+04643	Asia/Riyadh
 SB	-0932+16012	Pacific/Guadalcanal
--- a/jdk/make/sun/nio/cs/FILES_java.gmk	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/nio/cs/FILES_java.gmk	Tue Apr 20 01:24:48 2010 -0700
@@ -42,8 +42,6 @@
 	sun/io/ByteToCharBig5_Solaris.java \
 	sun/io/ByteToCharBig5_HKSCS.java \
 	sun/io/ByteToCharMS950_HKSCS.java \
-	sun/io/ByteToCharHKSCS.java \
-	sun/io/ByteToCharHKSCS_2001.java \
 	sun/io/ByteToCharGB18030.java \
 	sun/io/ByteToCharGB18030DB.java \
 	sun/io/ByteToCharCp037.java \
@@ -173,8 +171,6 @@
 	sun/io/CharToByteBig5.java \
 	sun/io/CharToByteBig5_Solaris.java \
 	sun/io/CharToByteBig5_HKSCS.java \
-	sun/io/CharToByteHKSCS.java \
-	sun/io/CharToByteHKSCS_2001.java \
 	sun/io/CharToByteMS950_HKSCS.java \
 	sun/io/CharToByteGB18030.java \
 	sun/io/CharToByteCp037.java \
@@ -374,6 +370,9 @@
 	sun/nio/cs/ext/MacUkraine.java \
 	sun/nio/cs/ext/TIS_620.java \
         sun/nio/cs/ext/EUC_TWMapping.java \
+        sun/nio/cs/ext/HKSCSMapping.java \
+        sun/nio/cs/ext/HKSCS2001Mapping.java \
+        sun/nio/cs/ext/HKSCS_XPMapping.java \
 	sun/nio/cs/ext/IBM1381.java \
 	sun/nio/cs/ext/IBM1383.java \
 	sun/nio/cs/ext/IBM930.java \
@@ -394,7 +393,8 @@
 	sun/nio/cs/ext/MS936.java \
 	sun/nio/cs/ext/MS949.java \
 	sun/nio/cs/ext/MS950.java \
-	sun/nio/cs/ext/GBK.java
+	sun/nio/cs/ext/GBK.java   \
+	sun/nio/cs/ext/Big5.java
 
 FILES_java = $(FILES_src) $(FILES_gen_extcs)
 
--- a/jdk/make/sun/nio/cs/Makefile	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/sun/nio/cs/Makefile	Tue Apr 20 01:24:48 2010 -0700
@@ -93,7 +93,9 @@
 	$(MKDIR) -p $(GENCSEXT)
 	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE)	$(GENCSDATASRC) $(GENCSEXT) extsbcs
 	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) euctw \
-		$(GENCSSRCDIR)/GenerateEUC_TW.java
+		$(GENCSSRCDIR)/EUC_TW.java
+	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) hkscs \
+		$(GENCSSRCDIR)/HKSCS.java
 	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) dbcs
 
 $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/Big5.c2b	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,8 @@
+#Add the following 5 characters which are duplicated
+#or have conflicts with other characters.
+0xA1C4	0xFF3F	#REGWARN Fallback 0xA1C4 SPACING UNDERSCORE
+0xA2AC	0x2571	#REGWARN Fallback 0xA2AC LT DIAG UP RIGHT TO LOW LEFT
+0xA2AD	0x2572	#REGWARN Fallback 0xA2AD LT DIAG UP LEFT TO LOW RIGHT
+0xA451	0x5341	#REGWARN Fallback 0xA451 HANGZHOU NUMERAL TEN
+0xA4CA	0x5345	#REGWARN Fallback 0xA4CA HANGZHOU NUMERAL THIRTY
+#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/Big5.map	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,13837 @@
+#  From Big5.b2c
+#  Added sb
+#  Added Big5.b2c-irreversible
+#
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x0004
+0x05	0x0005
+0x06	0x0006
+0x07	0x0007
+0x08	0x0008
+0x09	0x0009
+0x0a	0x000a
+0x0b	0x000b
+0x0c	0x000c
+0x0d	0x000d
+0x0e	0x000e
+0x0f	0x000f
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x0014
+0x15	0x0015
+0x16	0x0016
+0x17	0x0017
+0x18	0x0018
+0x19	0x0019
+0x1a	0x001a
+0x1b	0x001b
+0x1c	0x001c
+0x1d	0x001d
+0x1e	0x001e
+0x1f	0x001f
+0x20    0x0020  # SPACE
+0x21    0x0021  # EXCLAMATION MARK
+0x22    0x0022  # QUOTATION MARK
+0x23    0x0023  # NUMBER SIGN
+0x24    0x0024  # DOLLAR SIGN
+0x25    0x0025  # PERCENT SIGN
+0x26    0x0026  # AMPERSAND
+0x27    0x0027  # APOSTROPHE
+0x28    0x0028  # LEFT PARENTHESIS
+0x29    0x0029  # RIGHT PARENTHESIS
+0x2A    0x002A  # ASTERISK
+0x2B    0x002B  # PLUS SIGN
+0x2C    0x002C  # COMMA
+0x2D    0x002D  # HYPHEN-MINUS
+0x2E    0x002E  # FULL STOP
+0x2F    0x002F  # SOLIDUS
+0x30    0x0030  # DIGIT ZERO
+0x31    0x0031  # DIGIT ONE
+0x32    0x0032  # DIGIT TWO
+0x33    0x0033  # DIGIT THREE
+0x34    0x0034  # DIGIT FOUR
+0x35    0x0035  # DIGIT FIVE
+0x36    0x0036  # DIGIT SIX
+0x37    0x0037  # DIGIT SEVEN
+0x38    0x0038  # DIGIT EIGHT
+0x39    0x0039  # DIGIT NINE
+0x3A    0x003A  # COLON
+0x3B    0x003B  # SEMICOLON
+0x3C    0x003C  # LESS-THAN SIGN
+0x3D    0x003D  # EQUALS SIGN
+0x3E    0x003E  # GREATER-THAN SIGN
+0x3F    0x003F  # QUESTION MARK
+0x40    0x0040  # COMMERCIAL AT
+0x41    0x0041  # LATIN CAPITAL LETTER A
+0x42    0x0042  # LATIN CAPITAL LETTER B
+0x43    0x0043  # LATIN CAPITAL LETTER C
+0x44    0x0044  # LATIN CAPITAL LETTER D
+0x45    0x0045  # LATIN CAPITAL LETTER E
+0x46    0x0046  # LATIN CAPITAL LETTER F
+0x47    0x0047  # LATIN CAPITAL LETTER G
+0x48    0x0048  # LATIN CAPITAL LETTER H
+0x49    0x0049  # LATIN CAPITAL LETTER I
+0x4A    0x004A  # LATIN CAPITAL LETTER J
+0x4B    0x004B  # LATIN CAPITAL LETTER K
+0x4C    0x004C  # LATIN CAPITAL LETTER L
+0x4D    0x004D  # LATIN CAPITAL LETTER M
+0x4E    0x004E  # LATIN CAPITAL LETTER N
+0x4F    0x004F  # LATIN CAPITAL LETTER O
+0x50    0x0050  # LATIN CAPITAL LETTER P
+0x51    0x0051  # LATIN CAPITAL LETTER Q
+0x52    0x0052  # LATIN CAPITAL LETTER R
+0x53    0x0053  # LATIN CAPITAL LETTER S
+0x54    0x0054  # LATIN CAPITAL LETTER T
+0x55    0x0055  # LATIN CAPITAL LETTER U
+0x56    0x0056  # LATIN CAPITAL LETTER V
+0x57    0x0057  # LATIN CAPITAL LETTER W
+0x58    0x0058  # LATIN CAPITAL LETTER X
+0x59    0x0059  # LATIN CAPITAL LETTER Y
+0x5A    0x005A  # LATIN CAPITAL LETTER Z
+0x5B    0x005B  # LEFT SQUARE BRACKET
+0x5C    0x005C  # WON SIGN
+0x5D    0x005D  # RIGHT SQUARE BRACKET
+0x5E    0x005E  # CIRCUMFLEX ACCENT
+0x5F    0x005F  # LOW LINE
+0x60    0x0060  # GRAVE ACCENT
+0x61    0x0061  # LATIN SMALL LETTER A
+0x62    0x0062  # LATIN SMALL LETTER B
+0x63    0x0063  # LATIN SMALL LETTER C
+0x64    0x0064  # LATIN SMALL LETTER D
+0x65    0x0065  # LATIN SMALL LETTER E
+0x66    0x0066  # LATIN SMALL LETTER F
+0x67    0x0067  # LATIN SMALL LETTER G
+0x68    0x0068  # LATIN SMALL LETTER H
+0x69    0x0069  # LATIN SMALL LETTER I
+0x6A    0x006A  # LATIN SMALL LETTER J
+0x6B    0x006B  # LATIN SMALL LETTER K
+0x6C    0x006C  # LATIN SMALL LETTER L
+0x6D    0x006D  # LATIN SMALL LETTER M
+0x6E    0x006E  # LATIN SMALL LETTER N
+0x6F    0x006F  # LATIN SMALL LETTER O
+0x70    0x0070  # LATIN SMALL LETTER P
+0x71    0x0071  # LATIN SMALL LETTER Q
+0x72    0x0072  # LATIN SMALL LETTER R
+0x73    0x0073  # LATIN SMALL LETTER S
+0x74    0x0074  # LATIN SMALL LETTER T
+0x75    0x0075  # LATIN SMALL LETTER U
+0x76    0x0076  # LATIN SMALL LETTER V
+0x77    0x0077  # LATIN SMALL LETTER W
+0x78    0x0078  # LATIN SMALL LETTER X
+0x79    0x0079  # LATIN SMALL LETTER Y
+0x7A    0x007A  # LATIN SMALL LETTER Z
+0x7B    0x007B  # LEFT CURLY BRACKET
+0x7C    0x007C  # VERTICAL LINE
+0x7D    0x007D  # RIGHT CURLY BRACKET
+0x7E    0x007E  # TILDE
+0x7F    0x007F
+#
+0xA140	0x3000	# IDEOGRAPHIC SPACE
+0xA141	0xFF0C	# FULLWIDTH COMMA
+0xA142	0x3001	# IDEOGRAPHIC COMMA
+0xA143	0x3002	# IDEOGRAPHIC FULL STOP
+0xA144	0xFF0E	# FULLWIDTH FULL STOP
+0xA145	0x2022	# BULLET
+0xA146	0xFF1B	# FULLWIDTH SEMICOLON
+0xA147	0xFF1A	# FULLWIDTH COLON
+0xA148	0xFF1F	# FULLWIDTH QUESTION MARK
+0xA149	0xFF01	# FULLWIDTH EXCLAMATION MARK
+0xA14A	0xFE30	# PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+0xA14B	0x2026	# HORIZONTAL ELLIPSIS
+0xA14C	0x2025	# TWO DOT LEADER
+0xA14D	0xFE50	# SMALL COMMA
+0xA14E	0xFF64	# HALFWIDTH IDEOGRAPHIC COMMA
+0xA14F	0xFE52	# SMALL FULL STOP
+0xA150	0x00B7	# MIDDLE DOT
+0xA151	0xFE54	# SMALL SEMICOLON
+0xA152	0xFE55	# SMALL COLON
+0xA153	0xFE56	# SMALL QUESTION MARK
+0xA154	0xFE57	# SMALL EXCLAMATION MARK
+0xA155	0xFF5C	# FULLWIDTH VERTICAL BAR
+0xA156	0x2013	# EN DASH
+0xA157	0xFE31	# PRESENTATION FORM FOR VERTICAL EM DASH
+0xA158	0x2014	# EM DASH
+0xA159	0xFE33	# PRESENTATION FORM FOR VERTICAL LOW LINE
+0xA15B	0xFE34	# PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+0xA15C	0xFE4F	# WAVY LOW LINE
+0xA15D	0xFF08	# FULLWIDTH LEFT PARENTHESIS
+0xA15E	0xFF09	# FULLWIDTH RIGHT PARENTHESIS
+0xA15F	0xFE35	# PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+0xA160	0xFE36	# PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+0xA161	0xFF5B	# FULLWIDTH LEFT CURLY BRACKET
+0xA162	0xFF5D	# FULLWIDTH RIGHT CURLY BRACKET
+0xA163	0xFE37	# PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+0xA164	0xFE38	# PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+0xA165	0x3014	# LEFT TORTOISE SHELL BRACKET
+0xA166	0x3015	# RIGHT TORTOISE SHELL BRACKET
+0xA167	0xFE39	# PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+0xA168	0xFE3A	# PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+0xA169	0x3010	# LEFT BLACK LENTICULAR BRACKET
+0xA16A	0x3011	# RIGHT BLACK LENTICULAR BRACKET
+0xA16B	0xFE3B	# PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+0xA16C	0xFE3C	# PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+0xA16D	0x300A	# LEFT DOUBLE ANGLE BRACKET
+0xA16E	0x300B	# RIGHT DOUBLE ANGLE BRACKET
+0xA16F	0xFE3D	# PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+0xA170	0xFE3E	# PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+0xA171	0x3008	# LEFT ANGLE BRACKET
+0xA172	0x3009	# RIGHT ANGLE BRACKET
+0xA173	0xFE3F	# PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+0xA174	0xFE40	# PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+0xA175	0x300C	# LEFT CORNER BRACKET
+0xA176	0x300D	# RIGHT CORNER BRACKET
+0xA177	0xFE41	# PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+0xA178	0xFE42	# PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+0xA179	0x300E	# LEFT WHITE CORNER BRACKET
+0xA17A	0x300F	# RIGHT WHITE CORNER BRACKET
+0xA17B	0xFE43	# PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+0xA17C	0xFE44	# PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+0xA17D	0xFE59	# SMALL LEFT PARENTHESIS
+0xA17E	0xFE5A	# SMALL RIGHT PARENTHESIS
+0xA1A1	0xFE5B	# SMALL LEFT CURLY BRACKET
+0xA1A2	0xFE5C	# SMALL RIGHT CURLY BRACKET
+0xA1A3	0xFE5D	# SMALL LEFT TORTOISE SHELL BRACKET
+0xA1A4	0xFE5E	# SMALL RIGHT TORTOISE SHELL BRACKET
+0xA1A5	0x2018	# LEFT SINGLE QUOTATION MARK
+0xA1A6	0x2019	# RIGHT SINGLE QUOTATION MARK
+0xA1A7	0x201C	# LEFT DOUBLE QUOTATION MARK
+0xA1A8	0x201D	# RIGHT DOUBLE QUOTATION MARK
+0xA1A9	0x301D	# REVERSED DOUBLE PRIME QUOTATION MARK
+0xA1AA	0x301E	# DOUBLE PRIME QUOTATION MARK
+0xA1AB	0x2035	# REVERSED PRIME
+0xA1AC	0x2032	# PRIME
+0xA1AD	0xFF03	# FULLWIDTH NUMBER SIGN
+0xA1AE	0xFF06	# FULLWIDTH AMPERSAND
+0xA1AF	0xFF0A	# FULLWIDTH ASTERISK
+0xA1B0	0x203B	# REFERENCE MARK
+0xA1B1	0x00A7	# SECTION SIGN
+0xA1B2	0x3003	# DITTO MARK
+0xA1B3	0x25CB	# WHITE CIRCLE
+0xA1B4	0x25CF	# BLACK CIRCLE
+0xA1B5	0x25B3	# WHITE UP-POINTING TRIANGLE
+0xA1B6	0x25B2	# BLACK UP-POINTING TRIANGLE
+0xA1B7	0x25CE	# BULLSEYE
+0xA1B8	0x2606	# WHITE STAR
+0xA1B9	0x2605	# BLACK STAR
+0xA1BA	0x25C7	# WHITE DIAMOND
+0xA1BB	0x25C6	# BLACK DIAMOND
+0xA1BC	0x25A1	# WHITE SQUARE
+0xA1BD	0x25A0	# BLACK SQUARE
+0xA1BE	0x25BD	# WHITE DOWN-POINTING TRIANGLE
+0xA1BF	0x25BC	# BLACK DOWN-POINTING TRIANGLE
+0xA1C0	0x32A3	# CIRCLED IDEOGRAPH CORRECT
+0xA1C1	0x2105	# CARE OF
+0xA1C2	0x203E	# OVERLINE
+0xA1C6	0xFE49	# DASHED OVERLINE
+0xA1C7	0xFE4A	# CENTRELINE OVERLINE
+0xA1C8	0xFE4D	# DASHED LOW LINE
+0xA1C9	0xFE4E	# CENTRELINE LOW LINE
+0xA1CA	0xFE4B	# WAVY OVERLINE
+0xA1CB	0xFE4C	# DOUBLE WAVY OVERLINE
+0xA1CC	0xFE5F	# SMALL NUMBER SIGN
+0xA1CD	0xFE60	# SMALL AMPERSAND
+0xA1CE	0xFE61	# SMALL ASTERISK
+0xA1CF	0xFF0B	# FULLWIDTH PLUS SIGN
+0xA1D0	0xFF0D	# FULLWIDTH HYPHEN-MINUS
+0xA1D1	0x00D7	# MULTIPLICATION SIGN
+0xA1D2	0x00F7	# DIVISION SIGN
+0xA1D3	0x00B1	# PLUS-MINUS SIGN
+0xA1D4	0x221A	# SQUARE ROOT
+0xA1D5	0xFF1C	# FULLWIDTH LESS-THAN SIGN
+0xA1D6	0xFF1E	# FULLWIDTH GREATER-THAN SIGN
+0xA1D7	0xFF1D	# FULLWIDTH EQUALS SIGN
+0xA1D8	0x2266	# LESS THAN OVER EQUAL TO
+0xA1D9	0x2267	# GREATER THAN OVER EQUAL TO
+0xA1DA	0x2260	# NOT EQUAL TO
+0xA1DB	0x221E	# INFINITY
+0xA1DC	0x2252	# APPROXIMATELY EQUAL TO OR THE IMAGE OF
+0xA1DD	0x2261	# IDENTICAL TO
+0xA1DE	0xFE62	# SMALL PLUS SIGN
+0xA1DF	0xFE63	# SMALL HYPHEN-MINUS
+0xA1E0	0xFE64	# SMALL LESS-THAN SIGN
+0xA1E1	0xFE65	# SMALL GREATER-THAN SIGN
+0xA1E2	0xFE66	# SMALL EQUALS SIGN
+0xA1E3	0x223C	# TILDE OPERATOR
+0xA1E4	0x2229	# INTERSECTION
+0xA1E5	0x222A	# UNION
+0xA1E6	0x22A5	# UP TACK
+0xA1E7	0x2220	# ANGLE
+0xA1E8	0x221F	# RIGHT ANGLE
+0xA1E9	0x22BF	# RIGHT TRIANGLE
+0xA1EA	0x33D2	# SQUARE LOG
+0xA1EB	0x33D1	# SQUARE LN
+0xA1EC	0x222B	# INTEGRAL
+0xA1ED	0x222E	# CONTOUR INTEGRAL
+0xA1EE	0x2235	# BECAUSE
+0xA1EF	0x2234	# THEREFORE
+0xA1F0	0x2640	# FEMALE SIGN
+0xA1F1	0x2642	# MALE SIGN
+0xA1F2	0x2641	# EARTH
+0xA1F3	0x2609	# SUN
+0xA1F4	0x2191	# UPWARDS ARROW
+0xA1F5	0x2193	# DOWNWARDS ARROW
+0xA1F6	0x2190	# LEFTWARDS ARROW
+0xA1F7	0x2192	# RIGHTWARDS ARROW
+0xA1F8	0x2196	# NORTH WEST ARROW
+0xA1F9	0x2197	# NORTH EAST ARROW
+0xA1FA	0x2199	# SOUTH WEST ARROW
+0xA1FB	0x2198	# SOUTH EAST ARROW
+0xA1FC	0x2225	# PARALLEL TO
+0xA1FD	0x2223	# DIVIDES
+0xA241	0xFF0F	# FULLWIDTH SOLIDUS
+0xA242	0xFF3C	# FULLWIDTH REVERSE SOLIDUS
+0xA243	0xFF04	# FULLWIDTH DOLLAR SIGN
+0xA244	0x00A5	# YEN SIGN
+0xA245	0x3012	# POSTAL MARK
+0xA246	0x00A2	# CENT SIGN
+0xA247	0x00A3	# POUND SIGN
+0xA248	0xFF05	# FULLWIDTH PERCENT SIGN
+0xA249	0xFF20	# FULLWIDTH COMMERCIAL AT
+0xA24A	0x2103	# DEGREE CELSIUS
+0xA24B	0x2109	# DEGREE FAHRENHEIT
+0xA24C	0xFE69	# SMALL DOLLAR SIGN
+0xA24D	0xFE6A	# SMALL PERCENT SIGN
+0xA24E	0xFE6B	# SMALL COMMERCIAL AT
+0xA24F	0x33D5	# SQUARE MIL
+0xA250	0x339C	# SQUARE MM
+0xA251	0x339D	# SQUARE CM
+0xA252	0x339E	# SQUARE KM
+0xA253	0x33CE	# SQUARE KM CAPITAL
+0xA254	0x33A1	# SQUARE M SQUARED
+0xA255	0x338E	# SQUARE MG
+0xA256	0x338F	# SQUARE KG
+0xA257	0x33C4	# SQUARE CC
+0xA258	0x00B0	# DEGREE SIGN
+0xA259	0x5159	# <CJK>
+0xA25A	0x515B	# <CJK>
+0xA25B	0x515E	# <CJK>
+0xA25C	0x515D	# <CJK>
+0xA25D	0x5161	# <CJK>
+0xA25E	0x5163	# <CJK>
+0xA25F	0x55E7	# <CJK>
+0xA260	0x74E9	# <CJK>
+0xA261	0x7CCE	# <CJK>
+0xA262	0x2581	# LOWER ONE EIGHTH BLOCK
+0xA263	0x2582	# LOWER ONE QUARTER BLOCK
+0xA264	0x2583	# LOWER THREE EIGHTHS BLOCK
+0xA265	0x2584	# LOWER HALF BLOCK
+0xA266	0x2585	# LOWER FIVE EIGHTHS BLOCK
+0xA267	0x2586	# LOWER THREE QUARTERS BLOCK
+0xA268	0x2587	# LOWER SEVEN EIGHTHS BLOCK
+0xA269	0x2588	# FULL BLOCK
+0xA26A	0x258F	# LEFT ONE EIGHTH BLOCK
+0xA26B	0x258E	# LEFT ONE QUARTER BLOCK
+0xA26C	0x258D	# LEFT THREE EIGHTHS BLOCK
+0xA26D	0x258C	# LEFT HALF BLOCK
+0xA26E	0x258B	# LEFT FIVE EIGHTHS BLOCK
+0xA26F	0x258A	# LEFT THREE QUARTERS BLOCK
+0xA270	0x2589	# LEFT SEVEN EIGHTHS BLOCK
+0xA271	0x253C	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xA272	0x2534	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xA273	0x252C	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xA274	0x2524	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xA275	0x251C	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xA276	0x2594	# UPPER ONE EIGHTH BLOCK
+0xA277	0x2500	# BOX DRAWINGS LIGHT HORIZONTAL
+0xA278	0x2502	# BOX DRAWINGS LIGHT VERTICAL
+0xA279	0x2595	# RIGHT ONE EIGHTH BLOCK
+0xA27A	0x250C	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xA27B	0x2510	# BOX DRAWINGS LIGHT DOWN AND LEFT
+0xA27C	0x2514	# BOX DRAWINGS LIGHT UP AND RIGHT
+0xA27D	0x2518	# BOX DRAWINGS LIGHT UP AND LEFT
+0xA27E	0x256D	# BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+0xA2A1	0x256E	# BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+0xA2A2	0x2570	# BOX DRAWINGS LIGHT ARC UP AND RIGHT
+0xA2A3	0x256F	# BOX DRAWINGS LIGHT ARC UP AND LEFT
+0xA2A4	0x2550	# BOX DRAWINGS DOUBLE HORIZONTAL
+0xA2A5	0x255E	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xA2A6	0x256A	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xA2A7	0x2561	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xA2A8	0x25E2	# BLACK LOWER RIGHT TRIANGLE
+0xA2A9	0x25E3	# BLACK LOWER LEFT TRIANGLE
+0xA2AA	0x25E5	# BLACK UPPER RIGHT TRIANGLE
+0xA2AB	0x25E4	# BLACK UPPER LEFT TRIANGLE
+0xA2AE	0x2573	# BOX DRAWINGS LIGHT DIAGONAL CROSS
+0xA2AF	0xFF10	# FULLWIDTH DIGIT ZERO
+0xA2B0	0xFF11	# FULLWIDTH DIGIT ONE
+0xA2B1	0xFF12	# FULLWIDTH DIGIT TWO
+0xA2B2	0xFF13	# FULLWIDTH DIGIT THREE
+0xA2B3	0xFF14	# FULLWIDTH DIGIT FOUR
+0xA2B4	0xFF15	# FULLWIDTH DIGIT FIVE
+0xA2B5	0xFF16	# FULLWIDTH DIGIT SIX
+0xA2B6	0xFF17	# FULLWIDTH DIGIT SEVEN
+0xA2B7	0xFF18	# FULLWIDTH DIGIT EIGHT
+0xA2B8	0xFF19	# FULLWIDTH DIGIT NINE
+0xA2B9	0x2160	# ROMAN NUMERAL ONE
+0xA2BA	0x2161	# ROMAN NUMERAL TWO
+0xA2BB	0x2162	# ROMAN NUMERAL THREE
+0xA2BC	0x2163	# ROMAN NUMERAL FOUR
+0xA2BD	0x2164	# ROMAN NUMERAL FIVE
+0xA2BE	0x2165	# ROMAN NUMERAL SIX
+0xA2BF	0x2166	# ROMAN NUMERAL SEVEN
+0xA2C0	0x2167	# ROMAN NUMERAL EIGHT
+0xA2C1	0x2168	# ROMAN NUMERAL NINE
+0xA2C2	0x2169	# ROMAN NUMERAL TEN
+0xA2C3	0x3021	# HANGZHOU NUMERAL ONE
+0xA2C4	0x3022	# HANGZHOU NUMERAL TWO
+0xA2C5	0x3023	# HANGZHOU NUMERAL THREE
+0xA2C6	0x3024	# HANGZHOU NUMERAL FOUR
+0xA2C7	0x3025	# HANGZHOU NUMERAL FIVE
+0xA2C8	0x3026	# HANGZHOU NUMERAL SIX
+0xA2C9	0x3027	# HANGZHOU NUMERAL SEVEN
+0xA2CA	0x3028	# HANGZHOU NUMERAL EIGHT
+0xA2CB	0x3029	# HANGZHOU NUMERAL NINE
+0xA2CD	0x5344	# <CJK>
+0xA2CF	0xFF21	# FULLWIDTH LATIN CAPITAL LETTER A
+0xA2D0	0xFF22	# FULLWIDTH LATIN CAPITAL LETTER B
+0xA2D1	0xFF23	# FULLWIDTH LATIN CAPITAL LETTER C
+0xA2D2	0xFF24	# FULLWIDTH LATIN CAPITAL LETTER D
+0xA2D3	0xFF25	# FULLWIDTH LATIN CAPITAL LETTER E
+0xA2D4	0xFF26	# FULLWIDTH LATIN CAPITAL LETTER F
+0xA2D5	0xFF27	# FULLWIDTH LATIN CAPITAL LETTER G
+0xA2D6	0xFF28	# FULLWIDTH LATIN CAPITAL LETTER H
+0xA2D7	0xFF29	# FULLWIDTH LATIN CAPITAL LETTER I
+0xA2D8	0xFF2A	# FULLWIDTH LATIN CAPITAL LETTER J
+0xA2D9	0xFF2B	# FULLWIDTH LATIN CAPITAL LETTER K
+0xA2DA	0xFF2C	# FULLWIDTH LATIN CAPITAL LETTER L
+0xA2DB	0xFF2D	# FULLWIDTH LATIN CAPITAL LETTER M
+0xA2DC	0xFF2E	# FULLWIDTH LATIN CAPITAL LETTER N
+0xA2DD	0xFF2F	# FULLWIDTH LATIN CAPITAL LETTER O
+0xA2DE	0xFF30	# FULLWIDTH LATIN CAPITAL LETTER P
+0xA2DF	0xFF31	# FULLWIDTH LATIN CAPITAL LETTER Q
+0xA2E0	0xFF32	# FULLWIDTH LATIN CAPITAL LETTER R
+0xA2E1	0xFF33	# FULLWIDTH LATIN CAPITAL LETTER S
+0xA2E2	0xFF34	# FULLWIDTH LATIN CAPITAL LETTER T
+0xA2E3	0xFF35	# FULLWIDTH LATIN CAPITAL LETTER U
+0xA2E4	0xFF36	# FULLWIDTH LATIN CAPITAL LETTER V
+0xA2E5	0xFF37	# FULLWIDTH LATIN CAPITAL LETTER W
+0xA2E6	0xFF38	# FULLWIDTH LATIN CAPITAL LETTER X
+0xA2E7	0xFF39	# FULLWIDTH LATIN CAPITAL LETTER Y
+0xA2E8	0xFF3A	# FULLWIDTH LATIN CAPITAL LETTER Z
+0xA2E9	0xFF41	# FULLWIDTH LATIN SMALL LETTER A
+0xA2EA	0xFF42	# FULLWIDTH LATIN SMALL LETTER B
+0xA2EB	0xFF43	# FULLWIDTH LATIN SMALL LETTER C
+0xA2EC	0xFF44	# FULLWIDTH LATIN SMALL LETTER D
+0xA2ED	0xFF45	# FULLWIDTH LATIN SMALL LETTER E
+0xA2EE	0xFF46	# FULLWIDTH LATIN SMALL LETTER F
+0xA2EF	0xFF47	# FULLWIDTH LATIN SMALL LETTER G
+0xA2F0	0xFF48	# FULLWIDTH LATIN SMALL LETTER H
+0xA2F1	0xFF49	# FULLWIDTH LATIN SMALL LETTER I
+0xA2F2	0xFF4A	# FULLWIDTH LATIN SMALL LETTER J
+0xA2F3	0xFF4B	# FULLWIDTH LATIN SMALL LETTER K
+0xA2F4	0xFF4C	# FULLWIDTH LATIN SMALL LETTER L
+0xA2F5	0xFF4D	# FULLWIDTH LATIN SMALL LETTER M
+0xA2F6	0xFF4E	# FULLWIDTH LATIN SMALL LETTER N
+0xA2F7	0xFF4F	# FULLWIDTH LATIN SMALL LETTER O
+0xA2F8	0xFF50	# FULLWIDTH LATIN SMALL LETTER P
+0xA2F9	0xFF51	# FULLWIDTH LATIN SMALL LETTER Q
+0xA2FA	0xFF52	# FULLWIDTH LATIN SMALL LETTER R
+0xA2FB	0xFF53	# FULLWIDTH LATIN SMALL LETTER S
+0xA2FC	0xFF54	# FULLWIDTH LATIN SMALL LETTER T
+0xA2FD	0xFF55	# FULLWIDTH LATIN SMALL LETTER U
+0xA2FE	0xFF56	# FULLWIDTH LATIN SMALL LETTER V
+0xA340	0xFF57	# FULLWIDTH LATIN SMALL LETTER W
+0xA341	0xFF58	# FULLWIDTH LATIN SMALL LETTER X
+0xA342	0xFF59	# FULLWIDTH LATIN SMALL LETTER Y
+0xA343	0xFF5A	# FULLWIDTH LATIN SMALL LETTER Z
+0xA344	0x0391	# GREEK CAPITAL LETTER ALPHA
+0xA345	0x0392	# GREEK CAPITAL LETTER BETA
+0xA346	0x0393	# GREEK CAPITAL LETTER GAMMA
+0xA347	0x0394	# GREEK CAPITAL LETTER DELTA
+0xA348	0x0395	# GREEK CAPITAL LETTER EPSILON
+0xA349	0x0396	# GREEK CAPITAL LETTER ZETA
+0xA34A	0x0397	# GREEK CAPITAL LETTER ETA
+0xA34B	0x0398	# GREEK CAPITAL LETTER THETA
+0xA34C	0x0399	# GREEK CAPITAL LETTER IOTA
+0xA34D	0x039A	# GREEK CAPITAL LETTER KAPPA
+0xA34E	0x039B	# GREEK CAPITAL LETTER LAMDA
+0xA34F	0x039C	# GREEK CAPITAL LETTER MU
+0xA350	0x039D	# GREEK CAPITAL LETTER NU
+0xA351	0x039E	# GREEK CAPITAL LETTER XI
+0xA352	0x039F	# GREEK CAPITAL LETTER OMICRON
+0xA353	0x03A0	# GREEK CAPITAL LETTER PI
+0xA354	0x03A1	# GREEK CAPITAL LETTER RHO
+0xA355	0x03A3	# GREEK CAPITAL LETTER SIGMA
+0xA356	0x03A4	# GREEK CAPITAL LETTER TAU
+0xA357	0x03A5	# GREEK CAPITAL LETTER UPSILON
+0xA358	0x03A6	# GREEK CAPITAL LETTER PHI
+0xA359	0x03A7	# GREEK CAPITAL LETTER CHI
+0xA35A	0x03A8	# GREEK CAPITAL LETTER PSI
+0xA35B	0x03A9	# GREEK CAPITAL LETTER OMEGA
+0xA35C	0x03B1	# GREEK SMALL LETTER ALPHA
+0xA35D	0x03B2	# GREEK SMALL LETTER BETA
+0xA35E	0x03B3	# GREEK SMALL LETTER GAMMA
+0xA35F	0x03B4	# GREEK SMALL LETTER DELTA
+0xA360	0x03B5	# GREEK SMALL LETTER EPSILON
+0xA361	0x03B6	# GREEK SMALL LETTER ZETA
+0xA362	0x03B7	# GREEK SMALL LETTER ETA
+0xA363	0x03B8	# GREEK SMALL LETTER THETA
+0xA364	0x03B9	# GREEK SMALL LETTER IOTA
+0xA365	0x03BA	# GREEK SMALL LETTER KAPPA
+0xA366	0x03BB	# GREEK SMALL LETTER LAMDA
+0xA367	0x03BC	# GREEK SMALL LETTER MU
+0xA368	0x03BD	# GREEK SMALL LETTER NU
+0xA369	0x03BE	# GREEK SMALL LETTER XI
+0xA36A	0x03BF	# GREEK SMALL LETTER OMICRON
+0xA36B	0x03C0	# GREEK SMALL LETTER PI
+0xA36C	0x03C1	# GREEK SMALL LETTER RHO
+0xA36D	0x03C3	# GREEK SMALL LETTER SIGMA
+0xA36E	0x03C4	# GREEK SMALL LETTER TAU
+0xA36F	0x03C5	# GREEK SMALL LETTER UPSILON
+0xA370	0x03C6	# GREEK SMALL LETTER PHI
+0xA371	0x03C7	# GREEK SMALL LETTER CHI
+0xA372	0x03C8	# GREEK SMALL LETTER PSI
+0xA373	0x03C9	# GREEK SMALL LETTER OMEGA
+0xA374	0x3105	# BOPOMOFO LETTER B
+0xA375	0x3106	# BOPOMOFO LETTER P
+0xA376	0x3107	# BOPOMOFO LETTER M
+0xA377	0x3108	# BOPOMOFO LETTER F
+0xA378	0x3109	# BOPOMOFO LETTER D
+0xA379	0x310A	# BOPOMOFO LETTER T
+0xA37A	0x310B	# BOPOMOFO LETTER N
+0xA37B	0x310C	# BOPOMOFO LETTER L
+0xA37C	0x310D	# BOPOMOFO LETTER G
+0xA37D	0x310E	# BOPOMOFO LETTER K
+0xA37E	0x310F	# BOPOMOFO LETTER H
+0xA3A1	0x3110	# BOPOMOFO LETTER J
+0xA3A2	0x3111	# BOPOMOFO LETTER Q
+0xA3A3	0x3112	# BOPOMOFO LETTER X
+0xA3A4	0x3113	# BOPOMOFO LETTER ZH
+0xA3A5	0x3114	# BOPOMOFO LETTER CH
+0xA3A6	0x3115	# BOPOMOFO LETTER SH
+0xA3A7	0x3116	# BOPOMOFO LETTER R
+0xA3A8	0x3117	# BOPOMOFO LETTER Z
+0xA3A9	0x3118	# BOPOMOFO LETTER C
+0xA3AA	0x3119	# BOPOMOFO LETTER S
+0xA3AB	0x311A	# BOPOMOFO LETTER A
+0xA3AC	0x311B	# BOPOMOFO LETTER O
+0xA3AD	0x311C	# BOPOMOFO LETTER E
+0xA3AE	0x311D	# BOPOMOFO LETTER EH
+0xA3AF	0x311E	# BOPOMOFO LETTER AI
+0xA3B0	0x311F	# BOPOMOFO LETTER EI
+0xA3B1	0x3120	# BOPOMOFO LETTER AU
+0xA3B2	0x3121	# BOPOMOFO LETTER OU
+0xA3B3	0x3122	# BOPOMOFO LETTER AN
+0xA3B4	0x3123	# BOPOMOFO LETTER EN
+0xA3B5	0x3124	# BOPOMOFO LETTER ANG
+0xA3B6	0x3125	# BOPOMOFO LETTER ENG
+0xA3B7	0x3126	# BOPOMOFO LETTER ER
+0xA3B8	0x3127	# BOPOMOFO LETTER I
+0xA3B9	0x3128	# BOPOMOFO LETTER U
+0xA3BA	0x3129	# BOPOMOFO LETTER IU
+0xA3BB	0x02D9	# DOT ABOVE (Mandarin Chinese light tone)
+0xA3BC	0x02C9	# MODIFIER LETTER MACRON (Mandarin Chinese first tone)
+0xA3BD	0x02CA	# MODIFIER LETTER ACUTE ACCENT (Mandarin Chinese second tone)
+0xA3BE	0x02C7	# CARON (Mandarin Chinese third tone)
+0xA3BF	0x02CB	# MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
+0xA440	0x4E00	# <CJK>
+0xA441	0x4E59	# <CJK>
+0xA442	0x4E01	# <CJK>
+0xA443	0x4E03	# <CJK>
+0xA444	0x4E43	# <CJK>
+0xA445	0x4E5D	# <CJK>
+0xA446	0x4E86	# <CJK>
+0xA447	0x4E8C	# <CJK>
+0xA448	0x4EBA	# <CJK>
+0xA449	0x513F	# <CJK>
+0xA44A	0x5165	# <CJK>
+0xA44B	0x516B	# <CJK>
+0xA44C	0x51E0	# <CJK>
+0xA44D	0x5200	# <CJK>
+0xA44E	0x5201	# <CJK>
+0xA44F	0x529B	# <CJK>
+0xA450	0x5315	# <CJK>
+0xA452	0x535C	# <CJK>
+0xA453	0x53C8	# <CJK>
+0xA454	0x4E09	# <CJK>
+0xA455	0x4E0B	# <CJK>
+0xA456	0x4E08	# <CJK>
+0xA457	0x4E0A	# <CJK>
+0xA458	0x4E2B	# <CJK>
+0xA459	0x4E38	# <CJK>
+0xA45A	0x51E1	# <CJK>
+0xA45B	0x4E45	# <CJK>
+0xA45C	0x4E48	# <CJK>
+0xA45D	0x4E5F	# <CJK>
+0xA45E	0x4E5E	# <CJK>
+0xA45F	0x4E8E	# <CJK>
+0xA460	0x4EA1	# <CJK>
+0xA461	0x5140	# <CJK>
+0xA462	0x5203	# <CJK>
+0xA463	0x52FA	# <CJK>
+0xA464	0x5343	# <CJK>
+0xA465	0x53C9	# <CJK>
+0xA466	0x53E3	# <CJK>
+0xA467	0x571F	# <CJK>
+0xA468	0x58EB	# <CJK>
+0xA469	0x5915	# <CJK>
+0xA46A	0x5927	# <CJK>
+0xA46B	0x5973	# <CJK>
+0xA46C	0x5B50	# <CJK>
+0xA46D	0x5B51	# <CJK>
+0xA46E	0x5B53	# <CJK>
+0xA46F	0x5BF8	# <CJK>
+0xA470	0x5C0F	# <CJK>
+0xA471	0x5C22	# <CJK>
+0xA472	0x5C38	# <CJK>
+0xA473	0x5C71	# <CJK>
+0xA474	0x5DDD	# <CJK>
+0xA475	0x5DE5	# <CJK>
+0xA476	0x5DF1	# <CJK>
+0xA477	0x5DF2	# <CJK>
+0xA478	0x5DF3	# <CJK>
+0xA479	0x5DFE	# <CJK>
+0xA47A	0x5E72	# <CJK>
+0xA47B	0x5EFE	# <CJK>
+0xA47C	0x5F0B	# <CJK>
+0xA47D	0x5F13	# <CJK>
+0xA47E	0x624D	# <CJK>
+0xA4A1	0x4E11	# <CJK>
+0xA4A2	0x4E10	# <CJK>
+0xA4A3	0x4E0D	# <CJK>
+0xA4A4	0x4E2D	# <CJK>
+0xA4A5	0x4E30	# <CJK>
+0xA4A6	0x4E39	# <CJK>
+0xA4A7	0x4E4B	# <CJK>
+0xA4A8	0x5C39	# <CJK>
+0xA4A9	0x4E88	# <CJK>
+0xA4AA	0x4E91	# <CJK>
+0xA4AB	0x4E95	# <CJK>
+0xA4AC	0x4E92	# <CJK>
+0xA4AD	0x4E94	# <CJK>
+0xA4AE	0x4EA2	# <CJK>
+0xA4AF	0x4EC1	# <CJK>
+0xA4B0	0x4EC0	# <CJK>
+0xA4B1	0x4EC3	# <CJK>
+0xA4B2	0x4EC6	# <CJK>
+0xA4B3	0x4EC7	# <CJK>
+0xA4B4	0x4ECD	# <CJK>
+0xA4B5	0x4ECA	# <CJK>
+0xA4B6	0x4ECB	# <CJK>
+0xA4B7	0x4EC4	# <CJK>
+0xA4B8	0x5143	# <CJK>
+0xA4B9	0x5141	# <CJK>
+0xA4BA	0x5167	# <CJK>
+0xA4BB	0x516D	# <CJK>
+0xA4BC	0x516E	# <CJK>
+0xA4BD	0x516C	# <CJK>
+0xA4BE	0x5197	# <CJK>
+0xA4BF	0x51F6	# <CJK>
+0xA4C0	0x5206	# <CJK>
+0xA4C1	0x5207	# <CJK>
+0xA4C2	0x5208	# <CJK>
+0xA4C3	0x52FB	# <CJK>
+0xA4C4	0x52FE	# <CJK>
+0xA4C5	0x52FF	# <CJK>
+0xA4C6	0x5316	# <CJK>
+0xA4C7	0x5339	# <CJK>
+0xA4C8	0x5348	# <CJK>
+0xA4C9	0x5347	# <CJK>
+0xA4CB	0x535E	# <CJK>
+0xA4CC	0x5384	# <CJK>
+0xA4CD	0x53CB	# <CJK>
+0xA4CE	0x53CA	# <CJK>
+0xA4CF	0x53CD	# <CJK>
+0xA4D0	0x58EC	# <CJK>
+0xA4D1	0x5929	# <CJK>
+0xA4D2	0x592B	# <CJK>
+0xA4D3	0x592A	# <CJK>
+0xA4D4	0x592D	# <CJK>
+0xA4D5	0x5B54	# <CJK>
+0xA4D6	0x5C11	# <CJK>
+0xA4D7	0x5C24	# <CJK>
+0xA4D8	0x5C3A	# <CJK>
+0xA4D9	0x5C6F	# <CJK>
+0xA4DA	0x5DF4	# <CJK>
+0xA4DB	0x5E7B	# <CJK>
+0xA4DC	0x5EFF	# <CJK>
+0xA4DD	0x5F14	# <CJK>
+0xA4DE	0x5F15	# <CJK>
+0xA4DF	0x5FC3	# <CJK>
+0xA4E0	0x6208	# <CJK>
+0xA4E1	0x6236	# <CJK>
+0xA4E2	0x624B	# <CJK>
+0xA4E3	0x624E	# <CJK>
+0xA4E4	0x652F	# <CJK>
+0xA4E5	0x6587	# <CJK>
+0xA4E6	0x6597	# <CJK>
+0xA4E7	0x65A4	# <CJK>
+0xA4E8	0x65B9	# <CJK>
+0xA4E9	0x65E5	# <CJK>
+0xA4EA	0x66F0	# <CJK>
+0xA4EB	0x6708	# <CJK>
+0xA4EC	0x6728	# <CJK>
+0xA4ED	0x6B20	# <CJK>
+0xA4EE	0x6B62	# <CJK>
+0xA4EF	0x6B79	# <CJK>
+0xA4F0	0x6BCB	# <CJK>
+0xA4F1	0x6BD4	# <CJK>
+0xA4F2	0x6BDB	# <CJK>
+0xA4F3	0x6C0F	# <CJK>
+0xA4F4	0x6C34	# <CJK>
+0xA4F5	0x706B	# <CJK>
+0xA4F6	0x722A	# <CJK>
+0xA4F7	0x7236	# <CJK>
+0xA4F8	0x723B	# <CJK>
+0xA4F9	0x7247	# <CJK>
+0xA4FA	0x7259	# <CJK>
+0xA4FB	0x725B	# <CJK>
+0xA4FC	0x72AC	# <CJK>
+0xA4FD	0x738B	# <CJK>
+0xA4FE	0x4E19	# <CJK>
+0xA540	0x4E16	# <CJK>
+0xA541	0x4E15	# <CJK>
+0xA542	0x4E14	# <CJK>
+0xA543	0x4E18	# <CJK>
+0xA544	0x4E3B	# <CJK>
+0xA545	0x4E4D	# <CJK>
+0xA546	0x4E4F	# <CJK>
+0xA547	0x4E4E	# <CJK>
+0xA548	0x4EE5	# <CJK>
+0xA549	0x4ED8	# <CJK>
+0xA54A	0x4ED4	# <CJK>
+0xA54B	0x4ED5	# <CJK>
+0xA54C	0x4ED6	# <CJK>
+0xA54D	0x4ED7	# <CJK>
+0xA54E	0x4EE3	# <CJK>
+0xA54F	0x4EE4	# <CJK>
+0xA550	0x4ED9	# <CJK>
+0xA551	0x4EDE	# <CJK>
+0xA552	0x5145	# <CJK>
+0xA553	0x5144	# <CJK>
+0xA554	0x5189	# <CJK>
+0xA555	0x518A	# <CJK>
+0xA556	0x51AC	# <CJK>
+0xA557	0x51F9	# <CJK>
+0xA558	0x51FA	# <CJK>
+0xA559	0x51F8	# <CJK>
+0xA55A	0x520A	# <CJK>
+0xA55B	0x52A0	# <CJK>
+0xA55C	0x529F	# <CJK>
+0xA55D	0x5305	# <CJK>
+0xA55E	0x5306	# <CJK>
+0xA55F	0x5317	# <CJK>
+0xA560	0x531D	# <CJK>
+0xA561	0x4EDF	# <CJK>
+0xA562	0x534A	# <CJK>
+0xA563	0x5349	# <CJK>
+0xA564	0x5361	# <CJK>
+0xA565	0x5360	# <CJK>
+0xA566	0x536F	# <CJK>
+0xA567	0x536E	# <CJK>
+0xA568	0x53BB	# <CJK>
+0xA569	0x53EF	# <CJK>
+0xA56A	0x53E4	# <CJK>
+0xA56B	0x53F3	# <CJK>
+0xA56C	0x53EC	# <CJK>
+0xA56D	0x53EE	# <CJK>
+0xA56E	0x53E9	# <CJK>
+0xA56F	0x53E8	# <CJK>
+0xA570	0x53FC	# <CJK>
+0xA571	0x53F8	# <CJK>
+0xA572	0x53F5	# <CJK>
+0xA573	0x53EB	# <CJK>
+0xA574	0x53E6	# <CJK>
+0xA575	0x53EA	# <CJK>
+0xA576	0x53F2	# <CJK>
+0xA577	0x53F1	# <CJK>
+0xA578	0x53F0	# <CJK>
+0xA579	0x53E5	# <CJK>
+0xA57A	0x53ED	# <CJK>
+0xA57B	0x53FB	# <CJK>
+0xA57C	0x56DB	# <CJK>
+0xA57D	0x56DA	# <CJK>
+0xA57E	0x5916	# <CJK>
+0xA5A1	0x592E	# <CJK>
+0xA5A2	0x5931	# <CJK>
+0xA5A3	0x5974	# <CJK>
+0xA5A4	0x5976	# <CJK>
+0xA5A5	0x5B55	# <CJK>
+0xA5A6	0x5B83	# <CJK>
+0xA5A7	0x5C3C	# <CJK>
+0xA5A8	0x5DE8	# <CJK>
+0xA5A9	0x5DE7	# <CJK>
+0xA5AA	0x5DE6	# <CJK>
+0xA5AB	0x5E02	# <CJK>
+0xA5AC	0x5E03	# <CJK>
+0xA5AD	0x5E73	# <CJK>
+0xA5AE	0x5E7C	# <CJK>
+0xA5AF	0x5F01	# <CJK>
+0xA5B0	0x5F18	# <CJK>
+0xA5B1	0x5F17	# <CJK>
+0xA5B2	0x5FC5	# <CJK>
+0xA5B3	0x620A	# <CJK>
+0xA5B4	0x6253	# <CJK>
+0xA5B5	0x6254	# <CJK>
+0xA5B6	0x6252	# <CJK>
+0xA5B7	0x6251	# <CJK>
+0xA5B8	0x65A5	# <CJK>
+0xA5B9	0x65E6	# <CJK>
+0xA5BA	0x672E	# <CJK>
+0xA5BB	0x672C	# <CJK>
+0xA5BC	0x672A	# <CJK>
+0xA5BD	0x672B	# <CJK>
+0xA5BE	0x672D	# <CJK>
+0xA5BF	0x6B63	# <CJK>
+0xA5C0	0x6BCD	# <CJK>
+0xA5C1	0x6C11	# <CJK>
+0xA5C2	0x6C10	# <CJK>
+0xA5C3	0x6C38	# <CJK>
+0xA5C4	0x6C41	# <CJK>
+0xA5C5	0x6C40	# <CJK>
+0xA5C6	0x6C3E	# <CJK>
+0xA5C7	0x72AF	# <CJK>
+0xA5C8	0x7384	# <CJK>
+0xA5C9	0x7389	# <CJK>
+0xA5CA	0x74DC	# <CJK>
+0xA5CB	0x74E6	# <CJK>
+0xA5CC	0x7518	# <CJK>
+0xA5CD	0x751F	# <CJK>
+0xA5CE	0x7528	# <CJK>
+0xA5CF	0x7529	# <CJK>
+0xA5D0	0x7530	# <CJK>
+0xA5D1	0x7531	# <CJK>
+0xA5D2	0x7532	# <CJK>
+0xA5D3	0x7533	# <CJK>
+0xA5D4	0x758B	# <CJK>
+0xA5D5	0x767D	# <CJK>
+0xA5D6	0x76AE	# <CJK>
+0xA5D7	0x76BF	# <CJK>
+0xA5D8	0x76EE	# <CJK>
+0xA5D9	0x77DB	# <CJK>
+0xA5DA	0x77E2	# <CJK>
+0xA5DB	0x77F3	# <CJK>
+0xA5DC	0x793A	# <CJK>
+0xA5DD	0x79BE	# <CJK>
+0xA5DE	0x7A74	# <CJK>
+0xA5DF	0x7ACB	# <CJK>
+0xA5E0	0x4E1E	# <CJK>
+0xA5E1	0x4E1F	# <CJK>
+0xA5E2	0x4E52	# <CJK>
+0xA5E3	0x4E53	# <CJK>
+0xA5E4	0x4E69	# <CJK>
+0xA5E5	0x4E99	# <CJK>
+0xA5E6	0x4EA4	# <CJK>
+0xA5E7	0x4EA6	# <CJK>
+0xA5E8	0x4EA5	# <CJK>
+0xA5E9	0x4EFF	# <CJK>
+0xA5EA	0x4F09	# <CJK>
+0xA5EB	0x4F19	# <CJK>
+0xA5EC	0x4F0A	# <CJK>
+0xA5ED	0x4F15	# <CJK>
+0xA5EE	0x4F0D	# <CJK>
+0xA5EF	0x4F10	# <CJK>
+0xA5F0	0x4F11	# <CJK>
+0xA5F1	0x4F0F	# <CJK>
+0xA5F2	0x4EF2	# <CJK>
+0xA5F3	0x4EF6	# <CJK>
+0xA5F4	0x4EFB	# <CJK>
+0xA5F5	0x4EF0	# <CJK>
+0xA5F6	0x4EF3	# <CJK>
+0xA5F7	0x4EFD	# <CJK>
+0xA5F8	0x4F01	# <CJK>
+0xA5F9	0x4F0B	# <CJK>
+0xA5FA	0x5149	# <CJK>
+0xA5FB	0x5147	# <CJK>
+0xA5FC	0x5146	# <CJK>
+0xA5FD	0x5148	# <CJK>
+0xA5FE	0x5168	# <CJK>
+0xA640	0x5171	# <CJK>
+0xA641	0x518D	# <CJK>
+0xA642	0x51B0	# <CJK>
+0xA643	0x5217	# <CJK>
+0xA644	0x5211	# <CJK>
+0xA645	0x5212	# <CJK>
+0xA646	0x520E	# <CJK>
+0xA647	0x5216	# <CJK>
+0xA648	0x52A3	# <CJK>
+0xA649	0x5308	# <CJK>
+0xA64A	0x5321	# <CJK>
+0xA64B	0x5320	# <CJK>
+0xA64C	0x5370	# <CJK>
+0xA64D	0x5371	# <CJK>
+0xA64E	0x5409	# <CJK>
+0xA64F	0x540F	# <CJK>
+0xA650	0x540C	# <CJK>
+0xA651	0x540A	# <CJK>
+0xA652	0x5410	# <CJK>
+0xA653	0x5401	# <CJK>
+0xA654	0x540B	# <CJK>
+0xA655	0x5404	# <CJK>
+0xA656	0x5411	# <CJK>
+0xA657	0x540D	# <CJK>
+0xA658	0x5408	# <CJK>
+0xA659	0x5403	# <CJK>
+0xA65A	0x540E	# <CJK>
+0xA65B	0x5406	# <CJK>
+0xA65C	0x5412	# <CJK>
+0xA65D	0x56E0	# <CJK>
+0xA65E	0x56DE	# <CJK>
+0xA65F	0x56DD	# <CJK>
+0xA660	0x5733	# <CJK>
+0xA661	0x5730	# <CJK>
+0xA662	0x5728	# <CJK>
+0xA663	0x572D	# <CJK>
+0xA664	0x572C	# <CJK>
+0xA665	0x572F	# <CJK>
+0xA666	0x5729	# <CJK>
+0xA667	0x5919	# <CJK>
+0xA668	0x591A	# <CJK>
+0xA669	0x5937	# <CJK>
+0xA66A	0x5938	# <CJK>
+0xA66B	0x5984	# <CJK>
+0xA66C	0x5978	# <CJK>
+0xA66D	0x5983	# <CJK>
+0xA66E	0x597D	# <CJK>
+0xA66F	0x5979	# <CJK>
+0xA670	0x5982	# <CJK>
+0xA671	0x5981	# <CJK>
+0xA672	0x5B57	# <CJK>
+0xA673	0x5B58	# <CJK>
+0xA674	0x5B87	# <CJK>
+0xA675	0x5B88	# <CJK>
+0xA676	0x5B85	# <CJK>
+0xA677	0x5B89	# <CJK>
+0xA678	0x5BFA	# <CJK>
+0xA679	0x5C16	# <CJK>
+0xA67A	0x5C79	# <CJK>
+0xA67B	0x5DDE	# <CJK>
+0xA67C	0x5E06	# <CJK>
+0xA67D	0x5E76	# <CJK>
+0xA67E	0x5E74	# <CJK>
+0xA6A1	0x5F0F	# <CJK>
+0xA6A2	0x5F1B	# <CJK>
+0xA6A3	0x5FD9	# <CJK>
+0xA6A4	0x5FD6	# <CJK>
+0xA6A5	0x620E	# <CJK>
+0xA6A6	0x620C	# <CJK>
+0xA6A7	0x620D	# <CJK>
+0xA6A8	0x6210	# <CJK>
+0xA6A9	0x6263	# <CJK>
+0xA6AA	0x625B	# <CJK>
+0xA6AB	0x6258	# <CJK>
+0xA6AC	0x6536	# <CJK>
+0xA6AD	0x65E9	# <CJK>
+0xA6AE	0x65E8	# <CJK>
+0xA6AF	0x65EC	# <CJK>
+0xA6B0	0x65ED	# <CJK>
+0xA6B1	0x66F2	# <CJK>
+0xA6B2	0x66F3	# <CJK>
+0xA6B3	0x6709	# <CJK>
+0xA6B4	0x673D	# <CJK>
+0xA6B5	0x6734	# <CJK>
+0xA6B6	0x6731	# <CJK>
+0xA6B7	0x6735	# <CJK>
+0xA6B8	0x6B21	# <CJK>
+0xA6B9	0x6B64	# <CJK>
+0xA6BA	0x6B7B	# <CJK>
+0xA6BB	0x6C16	# <CJK>
+0xA6BC	0x6C5D	# <CJK>
+0xA6BD	0x6C57	# <CJK>
+0xA6BE	0x6C59	# <CJK>
+0xA6BF	0x6C5F	# <CJK>
+0xA6C0	0x6C60	# <CJK>
+0xA6C1	0x6C50	# <CJK>
+0xA6C2	0x6C55	# <CJK>
+0xA6C3	0x6C61	# <CJK>
+0xA6C4	0x6C5B	# <CJK>
+0xA6C5	0x6C4D	# <CJK>
+0xA6C6	0x6C4E	# <CJK>
+0xA6C7	0x7070	# <CJK>
+0xA6C8	0x725F	# <CJK>
+0xA6C9	0x725D	# <CJK>
+0xA6CA	0x767E	# <CJK>
+0xA6CB	0x7AF9	# <CJK>
+0xA6CC	0x7C73	# <CJK>
+0xA6CD	0x7CF8	# <CJK>
+0xA6CE	0x7F36	# <CJK>
+0xA6CF	0x7F8A	# <CJK>
+0xA6D0	0x7FBD	# <CJK>
+0xA6D1	0x8001	# <CJK>
+0xA6D2	0x8003	# <CJK>
+0xA6D3	0x800C	# <CJK>
+0xA6D4	0x8012	# <CJK>
+0xA6D5	0x8033	# <CJK>
+0xA6D6	0x807F	# <CJK>
+0xA6D7	0x8089	# <CJK>
+0xA6D8	0x808B	# <CJK>
+0xA6D9	0x808C	# <CJK>
+0xA6DA	0x81E3	# <CJK>
+0xA6DB	0x81EA	# <CJK>
+0xA6DC	0x81F3	# <CJK>
+0xA6DD	0x81FC	# <CJK>
+0xA6DE	0x820C	# <CJK>
+0xA6DF	0x821B	# <CJK>
+0xA6E0	0x821F	# <CJK>
+0xA6E1	0x826E	# <CJK>
+0xA6E2	0x8272	# <CJK>
+0xA6E3	0x827E	# <CJK>
+0xA6E4	0x866B	# <CJK>
+0xA6E5	0x8840	# <CJK>
+0xA6E6	0x884C	# <CJK>
+0xA6E7	0x8863	# <CJK>
+0xA6E8	0x897F	# <CJK>
+0xA6E9	0x9621	# <CJK>
+0xA6EA	0x4E32	# <CJK>
+0xA6EB	0x4EA8	# <CJK>
+0xA6EC	0x4F4D	# <CJK>
+0xA6ED	0x4F4F	# <CJK>
+0xA6EE	0x4F47	# <CJK>
+0xA6EF	0x4F57	# <CJK>
+0xA6F0	0x4F5E	# <CJK>
+0xA6F1	0x4F34	# <CJK>
+0xA6F2	0x4F5B	# <CJK>
+0xA6F3	0x4F55	# <CJK>
+0xA6F4	0x4F30	# <CJK>
+0xA6F5	0x4F50	# <CJK>
+0xA6F6	0x4F51	# <CJK>
+0xA6F7	0x4F3D	# <CJK>
+0xA6F8	0x4F3A	# <CJK>
+0xA6F9	0x4F38	# <CJK>
+0xA6FA	0x4F43	# <CJK>
+0xA6FB	0x4F54	# <CJK>
+0xA6FC	0x4F3C	# <CJK>
+0xA6FD	0x4F46	# <CJK>
+0xA6FE	0x4F63	# <CJK>
+0xA740	0x4F5C	# <CJK>
+0xA741	0x4F60	# <CJK>
+0xA742	0x4F2F	# <CJK>
+0xA743	0x4F4E	# <CJK>
+0xA744	0x4F36	# <CJK>
+0xA745	0x4F59	# <CJK>
+0xA746	0x4F5D	# <CJK>
+0xA747	0x4F48	# <CJK>
+0xA748	0x4F5A	# <CJK>
+0xA749	0x514C	# <CJK>
+0xA74A	0x514B	# <CJK>
+0xA74B	0x514D	# <CJK>
+0xA74C	0x5175	# <CJK>
+0xA74D	0x51B6	# <CJK>
+0xA74E	0x51B7	# <CJK>
+0xA74F	0x5225	# <CJK>
+0xA750	0x5224	# <CJK>
+0xA751	0x5229	# <CJK>
+0xA752	0x522A	# <CJK>
+0xA753	0x5228	# <CJK>
+0xA754	0x52AB	# <CJK>
+0xA755	0x52A9	# <CJK>
+0xA756	0x52AA	# <CJK>
+0xA757	0x52AC	# <CJK>
+0xA758	0x5323	# <CJK>
+0xA759	0x5373	# <CJK>
+0xA75A	0x5375	# <CJK>
+0xA75B	0x541D	# <CJK>
+0xA75C	0x542D	# <CJK>
+0xA75D	0x541E	# <CJK>
+0xA75E	0x543E	# <CJK>
+0xA75F	0x5426	# <CJK>
+0xA760	0x544E	# <CJK>
+0xA761	0x5427	# <CJK>
+0xA762	0x5446	# <CJK>
+0xA763	0x5443	# <CJK>
+0xA764	0x5433	# <CJK>
+0xA765	0x5448	# <CJK>
+0xA766	0x5442	# <CJK>
+0xA767	0x541B	# <CJK>
+0xA768	0x5429	# <CJK>
+0xA769	0x544A	# <CJK>
+0xA76A	0x5439	# <CJK>
+0xA76B	0x543B	# <CJK>
+0xA76C	0x5438	# <CJK>
+0xA76D	0x542E	# <CJK>
+0xA76E	0x5435	# <CJK>
+0xA76F	0x5436	# <CJK>
+0xA770	0x5420	# <CJK>
+0xA771	0x543C	# <CJK>
+0xA772	0x5440	# <CJK>
+0xA773	0x5431	# <CJK>
+0xA774	0x542B	# <CJK>
+0xA775	0x541F	# <CJK>
+0xA776	0x542C	# <CJK>
+0xA777	0x56EA	# <CJK>
+0xA778	0x56F0	# <CJK>
+0xA779	0x56E4	# <CJK>
+0xA77A	0x56EB	# <CJK>
+0xA77B	0x574A	# <CJK>
+0xA77C	0x5751	# <CJK>
+0xA77D	0x5740	# <CJK>
+0xA77E	0x574D	# <CJK>
+0xA7A1	0x5747	# <CJK>
+0xA7A2	0x574E	# <CJK>
+0xA7A3	0x573E	# <CJK>
+0xA7A4	0x5750	# <CJK>
+0xA7A5	0x574F	# <CJK>
+0xA7A6	0x573B	# <CJK>
+0xA7A7	0x58EF	# <CJK>
+0xA7A8	0x593E	# <CJK>
+0xA7A9	0x599D	# <CJK>
+0xA7AA	0x5992	# <CJK>
+0xA7AB	0x59A8	# <CJK>
+0xA7AC	0x599E	# <CJK>
+0xA7AD	0x59A3	# <CJK>
+0xA7AE	0x5999	# <CJK>
+0xA7AF	0x5996	# <CJK>
+0xA7B0	0x598D	# <CJK>
+0xA7B1	0x59A4	# <CJK>
+0xA7B2	0x5993	# <CJK>
+0xA7B3	0x598A	# <CJK>
+0xA7B4	0x59A5	# <CJK>
+0xA7B5	0x5B5D	# <CJK>
+0xA7B6	0x5B5C	# <CJK>
+0xA7B7	0x5B5A	# <CJK>
+0xA7B8	0x5B5B	# <CJK>
+0xA7B9	0x5B8C	# <CJK>
+0xA7BA	0x5B8B	# <CJK>
+0xA7BB	0x5B8F	# <CJK>
+0xA7BC	0x5C2C	# <CJK>
+0xA7BD	0x5C40	# <CJK>
+0xA7BE	0x5C41	# <CJK>
+0xA7BF	0x5C3F	# <CJK>
+0xA7C0	0x5C3E	# <CJK>
+0xA7C1	0x5C90	# <CJK>
+0xA7C2	0x5C91	# <CJK>
+0xA7C3	0x5C94	# <CJK>
+0xA7C4	0x5C8C	# <CJK>
+0xA7C5	0x5DEB	# <CJK>
+0xA7C6	0x5E0C	# <CJK>
+0xA7C7	0x5E8F	# <CJK>
+0xA7C8	0x5E87	# <CJK>
+0xA7C9	0x5E8A	# <CJK>
+0xA7CA	0x5EF7	# <CJK>
+0xA7CB	0x5F04	# <CJK>
+0xA7CC	0x5F1F	# <CJK>
+0xA7CD	0x5F64	# <CJK>
+0xA7CE	0x5F62	# <CJK>
+0xA7CF	0x5F77	# <CJK>
+0xA7D0	0x5F79	# <CJK>
+0xA7D1	0x5FD8	# <CJK>
+0xA7D2	0x5FCC	# <CJK>
+0xA7D3	0x5FD7	# <CJK>
+0xA7D4	0x5FCD	# <CJK>
+0xA7D5	0x5FF1	# <CJK>
+0xA7D6	0x5FEB	# <CJK>
+0xA7D7	0x5FF8	# <CJK>
+0xA7D8	0x5FEA	# <CJK>
+0xA7D9	0x6212	# <CJK>
+0xA7DA	0x6211	# <CJK>
+0xA7DB	0x6284	# <CJK>
+0xA7DC	0x6297	# <CJK>
+0xA7DD	0x6296	# <CJK>
+0xA7DE	0x6280	# <CJK>
+0xA7DF	0x6276	# <CJK>
+0xA7E0	0x6289	# <CJK>
+0xA7E1	0x626D	# <CJK>
+0xA7E2	0x628A	# <CJK>
+0xA7E3	0x627C	# <CJK>
+0xA7E4	0x627E	# <CJK>
+0xA7E5	0x6279	# <CJK>
+0xA7E6	0x6273	# <CJK>
+0xA7E7	0x6292	# <CJK>
+0xA7E8	0x626F	# <CJK>
+0xA7E9	0x6298	# <CJK>
+0xA7EA	0x626E	# <CJK>
+0xA7EB	0x6295	# <CJK>
+0xA7EC	0x6293	# <CJK>
+0xA7ED	0x6291	# <CJK>
+0xA7EE	0x6286	# <CJK>
+0xA7EF	0x6539	# <CJK>
+0xA7F0	0x653B	# <CJK>
+0xA7F1	0x6538	# <CJK>
+0xA7F2	0x65F1	# <CJK>
+0xA7F3	0x66F4	# <CJK>
+0xA7F4	0x675F	# <CJK>
+0xA7F5	0x674E	# <CJK>
+0xA7F6	0x674F	# <CJK>
+0xA7F7	0x6750	# <CJK>
+0xA7F8	0x6751	# <CJK>
+0xA7F9	0x675C	# <CJK>
+0xA7FA	0x6756	# <CJK>
+0xA7FB	0x675E	# <CJK>
+0xA7FC	0x6749	# <CJK>
+0xA7FD	0x6746	# <CJK>
+0xA7FE	0x6760	# <CJK>
+0xA840	0x6753	# <CJK>
+0xA841	0x6757	# <CJK>
+0xA842	0x6B65	# <CJK>
+0xA843	0x6BCF	# <CJK>
+0xA844	0x6C42	# <CJK>
+0xA845	0x6C5E	# <CJK>
+0xA846	0x6C99	# <CJK>
+0xA847	0x6C81	# <CJK>
+0xA848	0x6C88	# <CJK>
+0xA849	0x6C89	# <CJK>
+0xA84A	0x6C85	# <CJK>
+0xA84B	0x6C9B	# <CJK>
+0xA84C	0x6C6A	# <CJK>
+0xA84D	0x6C7A	# <CJK>
+0xA84E	0x6C90	# <CJK>
+0xA84F	0x6C70	# <CJK>
+0xA850	0x6C8C	# <CJK>
+0xA851	0x6C68	# <CJK>
+0xA852	0x6C96	# <CJK>
+0xA853	0x6C92	# <CJK>
+0xA854	0x6C7D	# <CJK>
+0xA855	0x6C83	# <CJK>
+0xA856	0x6C72	# <CJK>
+0xA857	0x6C7E	# <CJK>
+0xA858	0x6C74	# <CJK>
+0xA859	0x6C86	# <CJK>
+0xA85A	0x6C76	# <CJK>
+0xA85B	0x6C8D	# <CJK>
+0xA85C	0x6C94	# <CJK>
+0xA85D	0x6C98	# <CJK>
+0xA85E	0x6C82	# <CJK>
+0xA85F	0x7076	# <CJK>
+0xA860	0x707C	# <CJK>
+0xA861	0x707D	# <CJK>
+0xA862	0x7078	# <CJK>
+0xA863	0x7262	# <CJK>
+0xA864	0x7261	# <CJK>
+0xA865	0x7260	# <CJK>
+0xA866	0x72C4	# <CJK>
+0xA867	0x72C2	# <CJK>
+0xA868	0x7396	# <CJK>
+0xA869	0x752C	# <CJK>
+0xA86A	0x752B	# <CJK>
+0xA86B	0x7537	# <CJK>
+0xA86C	0x7538	# <CJK>
+0xA86D	0x7682	# <CJK>
+0xA86E	0x76EF	# <CJK>
+0xA86F	0x77E3	# <CJK>
+0xA870	0x79C1	# <CJK>
+0xA871	0x79C0	# <CJK>
+0xA872	0x79BF	# <CJK>
+0xA873	0x7A76	# <CJK>
+0xA874	0x7CFB	# <CJK>
+0xA875	0x7F55	# <CJK>
+0xA876	0x8096	# <CJK>
+0xA877	0x8093	# <CJK>
+0xA878	0x809D	# <CJK>
+0xA879	0x8098	# <CJK>
+0xA87A	0x809B	# <CJK>
+0xA87B	0x809A	# <CJK>
+0xA87C	0x80B2	# <CJK>
+0xA87D	0x826F	# <CJK>
+0xA87E	0x8292	# <CJK>
+0xA8A1	0x828B	# <CJK>
+0xA8A2	0x828D	# <CJK>
+0xA8A3	0x898B	# <CJK>
+0xA8A4	0x89D2	# <CJK>
+0xA8A5	0x8A00	# <CJK>
+0xA8A6	0x8C37	# <CJK>
+0xA8A7	0x8C46	# <CJK>
+0xA8A8	0x8C55	# <CJK>
+0xA8A9	0x8C9D	# <CJK>
+0xA8AA	0x8D64	# <CJK>
+0xA8AB	0x8D70	# <CJK>
+0xA8AC	0x8DB3	# <CJK>
+0xA8AD	0x8EAB	# <CJK>
+0xA8AE	0x8ECA	# <CJK>
+0xA8AF	0x8F9B	# <CJK>
+0xA8B0	0x8FB0	# <CJK>
+0xA8B1	0x8FC2	# <CJK>
+0xA8B2	0x8FC6	# <CJK>
+0xA8B3	0x8FC5	# <CJK>
+0xA8B4	0x8FC4	# <CJK>
+0xA8B5	0x5DE1	# <CJK>
+0xA8B6	0x9091	# <CJK>
+0xA8B7	0x90A2	# <CJK>
+0xA8B8	0x90AA	# <CJK>
+0xA8B9	0x90A6	# <CJK>
+0xA8BA	0x90A3	# <CJK>
+0xA8BB	0x9149	# <CJK>
+0xA8BC	0x91C6	# <CJK>
+0xA8BD	0x91CC	# <CJK>
+0xA8BE	0x9632	# <CJK>
+0xA8BF	0x962E	# <CJK>
+0xA8C0	0x9631	# <CJK>
+0xA8C1	0x962A	# <CJK>
+0xA8C2	0x962C	# <CJK>
+0xA8C3	0x4E26	# <CJK>
+0xA8C4	0x4E56	# <CJK>
+0xA8C5	0x4E73	# <CJK>
+0xA8C6	0x4E8B	# <CJK>
+0xA8C7	0x4E9B	# <CJK>
+0xA8C8	0x4E9E	# <CJK>
+0xA8C9	0x4EAB	# <CJK>
+0xA8CA	0x4EAC	# <CJK>
+0xA8CB	0x4F6F	# <CJK>
+0xA8CC	0x4F9D	# <CJK>
+0xA8CD	0x4F8D	# <CJK>
+0xA8CE	0x4F73	# <CJK>
+0xA8CF	0x4F7F	# <CJK>
+0xA8D0	0x4F6C	# <CJK>
+0xA8D1	0x4F9B	# <CJK>
+0xA8D2	0x4F8B	# <CJK>
+0xA8D3	0x4F86	# <CJK>
+0xA8D4	0x4F83	# <CJK>
+0xA8D5	0x4F70	# <CJK>
+0xA8D6	0x4F75	# <CJK>
+0xA8D7	0x4F88	# <CJK>
+0xA8D8	0x4F69	# <CJK>
+0xA8D9	0x4F7B	# <CJK>
+0xA8DA	0x4F96	# <CJK>
+0xA8DB	0x4F7E	# <CJK>
+0xA8DC	0x4F8F	# <CJK>
+0xA8DD	0x4F91	# <CJK>
+0xA8DE	0x4F7A	# <CJK>
+0xA8DF	0x5154	# <CJK>
+0xA8E0	0x5152	# <CJK>
+0xA8E1	0x5155	# <CJK>
+0xA8E2	0x5169	# <CJK>
+0xA8E3	0x5177	# <CJK>
+0xA8E4	0x5176	# <CJK>
+0xA8E5	0x5178	# <CJK>
+0xA8E6	0x51BD	# <CJK>
+0xA8E7	0x51FD	# <CJK>
+0xA8E8	0x523B	# <CJK>
+0xA8E9	0x5238	# <CJK>
+0xA8EA	0x5237	# <CJK>
+0xA8EB	0x523A	# <CJK>
+0xA8EC	0x5230	# <CJK>
+0xA8ED	0x522E	# <CJK>
+0xA8EE	0x5236	# <CJK>
+0xA8EF	0x5241	# <CJK>
+0xA8F0	0x52BE	# <CJK>
+0xA8F1	0x52BB	# <CJK>
+0xA8F2	0x5352	# <CJK>
+0xA8F3	0x5354	# <CJK>
+0xA8F4	0x5353	# <CJK>
+0xA8F5	0x5351	# <CJK>
+0xA8F6	0x5366	# <CJK>
+0xA8F7	0x5377	# <CJK>
+0xA8F8	0x5378	# <CJK>
+0xA8F9	0x5379	# <CJK>
+0xA8FA	0x53D6	# <CJK>
+0xA8FB	0x53D4	# <CJK>
+0xA8FC	0x53D7	# <CJK>
+0xA8FD	0x5473	# <CJK>
+0xA8FE	0x5475	# <CJK>
+0xA940	0x5496	# <CJK>
+0xA941	0x5478	# <CJK>
+0xA942	0x5495	# <CJK>
+0xA943	0x5480	# <CJK>
+0xA944	0x547B	# <CJK>
+0xA945	0x5477	# <CJK>
+0xA946	0x5484	# <CJK>
+0xA947	0x5492	# <CJK>
+0xA948	0x5486	# <CJK>
+0xA949	0x547C	# <CJK>
+0xA94A	0x5490	# <CJK>
+0xA94B	0x5471	# <CJK>
+0xA94C	0x5476	# <CJK>
+0xA94D	0x548C	# <CJK>
+0xA94E	0x549A	# <CJK>
+0xA94F	0x5462	# <CJK>
+0xA950	0x5468	# <CJK>
+0xA951	0x548B	# <CJK>
+0xA952	0x547D	# <CJK>
+0xA953	0x548E	# <CJK>
+0xA954	0x56FA	# <CJK>
+0xA955	0x5783	# <CJK>
+0xA956	0x5777	# <CJK>
+0xA957	0x576A	# <CJK>
+0xA958	0x5769	# <CJK>
+0xA959	0x5761	# <CJK>
+0xA95A	0x5766	# <CJK>
+0xA95B	0x5764	# <CJK>
+0xA95C	0x577C	# <CJK>
+0xA95D	0x591C	# <CJK>
+0xA95E	0x5949	# <CJK>
+0xA95F	0x5947	# <CJK>
+0xA960	0x5948	# <CJK>
+0xA961	0x5944	# <CJK>
+0xA962	0x5954	# <CJK>
+0xA963	0x59BE	# <CJK>
+0xA964	0x59BB	# <CJK>
+0xA965	0x59D4	# <CJK>
+0xA966	0x59B9	# <CJK>
+0xA967	0x59AE	# <CJK>
+0xA968	0x59D1	# <CJK>
+0xA969	0x59C6	# <CJK>
+0xA96A	0x59D0	# <CJK>
+0xA96B	0x59CD	# <CJK>
+0xA96C	0x59CB	# <CJK>
+0xA96D	0x59D3	# <CJK>
+0xA96E	0x59CA	# <CJK>
+0xA96F	0x59AF	# <CJK>
+0xA970	0x59B3	# <CJK>
+0xA971	0x59D2	# <CJK>
+0xA972	0x59C5	# <CJK>
+0xA973	0x5B5F	# <CJK>
+0xA974	0x5B64	# <CJK>
+0xA975	0x5B63	# <CJK>
+0xA976	0x5B97	# <CJK>
+0xA977	0x5B9A	# <CJK>
+0xA978	0x5B98	# <CJK>
+0xA979	0x5B9C	# <CJK>
+0xA97A	0x5B99	# <CJK>
+0xA97B	0x5B9B	# <CJK>
+0xA97C	0x5C1A	# <CJK>
+0xA97D	0x5C48	# <CJK>
+0xA97E	0x5C45	# <CJK>
+0xA9A1	0x5C46	# <CJK>
+0xA9A2	0x5CB7	# <CJK>
+0xA9A3	0x5CA1	# <CJK>
+0xA9A4	0x5CB8	# <CJK>
+0xA9A5	0x5CA9	# <CJK>
+0xA9A6	0x5CAB	# <CJK>
+0xA9A7	0x5CB1	# <CJK>
+0xA9A8	0x5CB3	# <CJK>
+0xA9A9	0x5E18	# <CJK>
+0xA9AA	0x5E1A	# <CJK>
+0xA9AB	0x5E16	# <CJK>
+0xA9AC	0x5E15	# <CJK>
+0xA9AD	0x5E1B	# <CJK>
+0xA9AE	0x5E11	# <CJK>
+0xA9AF	0x5E78	# <CJK>
+0xA9B0	0x5E9A	# <CJK>
+0xA9B1	0x5E97	# <CJK>
+0xA9B2	0x5E9C	# <CJK>
+0xA9B3	0x5E95	# <CJK>
+0xA9B4	0x5E96	# <CJK>
+0xA9B5	0x5EF6	# <CJK>
+0xA9B6	0x5F26	# <CJK>
+0xA9B7	0x5F27	# <CJK>
+0xA9B8	0x5F29	# <CJK>
+0xA9B9	0x5F80	# <CJK>
+0xA9BA	0x5F81	# <CJK>
+0xA9BB	0x5F7F	# <CJK>
+0xA9BC	0x5F7C	# <CJK>
+0xA9BD	0x5FDD	# <CJK>
+0xA9BE	0x5FE0	# <CJK>
+0xA9BF	0x5FFD	# <CJK>
+0xA9C0	0x5FF5	# <CJK>
+0xA9C1	0x5FFF	# <CJK>
+0xA9C2	0x600F	# <CJK>
+0xA9C3	0x6014	# <CJK>
+0xA9C4	0x602F	# <CJK>
+0xA9C5	0x6035	# <CJK>
+0xA9C6	0x6016	# <CJK>
+0xA9C7	0x602A	# <CJK>
+0xA9C8	0x6015	# <CJK>
+0xA9C9	0x6021	# <CJK>
+0xA9CA	0x6027	# <CJK>
+0xA9CB	0x6029	# <CJK>
+0xA9CC	0x602B	# <CJK>
+0xA9CD	0x601B	# <CJK>
+0xA9CE	0x6216	# <CJK>
+0xA9CF	0x6215	# <CJK>
+0xA9D0	0x623F	# <CJK>
+0xA9D1	0x623E	# <CJK>
+0xA9D2	0x6240	# <CJK>
+0xA9D3	0x627F	# <CJK>
+0xA9D4	0x62C9	# <CJK>
+0xA9D5	0x62CC	# <CJK>
+0xA9D6	0x62C4	# <CJK>
+0xA9D7	0x62BF	# <CJK>
+0xA9D8	0x62C2	# <CJK>
+0xA9D9	0x62B9	# <CJK>
+0xA9DA	0x62D2	# <CJK>
+0xA9DB	0x62DB	# <CJK>
+0xA9DC	0x62AB	# <CJK>
+0xA9DD	0x62D3	# <CJK>
+0xA9DE	0x62D4	# <CJK>
+0xA9DF	0x62CB	# <CJK>
+0xA9E0	0x62C8	# <CJK>
+0xA9E1	0x62A8	# <CJK>
+0xA9E2	0x62BD	# <CJK>
+0xA9E3	0x62BC	# <CJK>
+0xA9E4	0x62D0	# <CJK>
+0xA9E5	0x62D9	# <CJK>
+0xA9E6	0x62C7	# <CJK>
+0xA9E7	0x62CD	# <CJK>
+0xA9E8	0x62B5	# <CJK>
+0xA9E9	0x62DA	# <CJK>
+0xA9EA	0x62B1	# <CJK>
+0xA9EB	0x62D8	# <CJK>
+0xA9EC	0x62D6	# <CJK>
+0xA9ED	0x62D7	# <CJK>
+0xA9EE	0x62C6	# <CJK>
+0xA9EF	0x62AC	# <CJK>
+0xA9F0	0x62CE	# <CJK>
+0xA9F1	0x653E	# <CJK>
+0xA9F2	0x65A7	# <CJK>
+0xA9F3	0x65BC	# <CJK>
+0xA9F4	0x65FA	# <CJK>
+0xA9F5	0x6614	# <CJK>
+0xA9F6	0x6613	# <CJK>
+0xA9F7	0x660C	# <CJK>
+0xA9F8	0x6606	# <CJK>
+0xA9F9	0x6602	# <CJK>
+0xA9FA	0x660E	# <CJK>
+0xA9FB	0x6600	# <CJK>
+0xA9FC	0x660F	# <CJK>
+0xA9FD	0x6615	# <CJK>
+0xA9FE	0x660A	# <CJK>
+0xAA40	0x6607	# <CJK>
+0xAA41	0x670D	# <CJK>
+0xAA42	0x670B	# <CJK>
+0xAA43	0x676D	# <CJK>
+0xAA44	0x678B	# <CJK>
+0xAA45	0x6795	# <CJK>
+0xAA46	0x6771	# <CJK>
+0xAA47	0x679C	# <CJK>
+0xAA48	0x6773	# <CJK>
+0xAA49	0x6777	# <CJK>
+0xAA4A	0x6787	# <CJK>
+0xAA4B	0x679D	# <CJK>
+0xAA4C	0x6797	# <CJK>
+0xAA4D	0x676F	# <CJK>
+0xAA4E	0x6770	# <CJK>
+0xAA4F	0x677F	# <CJK>
+0xAA50	0x6789	# <CJK>
+0xAA51	0x677E	# <CJK>
+0xAA52	0x6790	# <CJK>
+0xAA53	0x6775	# <CJK>
+0xAA54	0x679A	# <CJK>
+0xAA55	0x6793	# <CJK>
+0xAA56	0x677C	# <CJK>
+0xAA57	0x676A	# <CJK>
+0xAA58	0x6772	# <CJK>
+0xAA59	0x6B23	# <CJK>
+0xAA5A	0x6B66	# <CJK>
+0xAA5B	0x6B67	# <CJK>
+0xAA5C	0x6B7F	# <CJK>
+0xAA5D	0x6C13	# <CJK>
+0xAA5E	0x6C1B	# <CJK>
+0xAA5F	0x6CE3	# <CJK>
+0xAA60	0x6CE8	# <CJK>
+0xAA61	0x6CF3	# <CJK>
+0xAA62	0x6CB1	# <CJK>
+0xAA63	0x6CCC	# <CJK>
+0xAA64	0x6CE5	# <CJK>
+0xAA65	0x6CB3	# <CJK>
+0xAA66	0x6CBD	# <CJK>
+0xAA67	0x6CBE	# <CJK>
+0xAA68	0x6CBC	# <CJK>
+0xAA69	0x6CE2	# <CJK>
+0xAA6A	0x6CAB	# <CJK>
+0xAA6B	0x6CD5	# <CJK>
+0xAA6C	0x6CD3	# <CJK>
+0xAA6D	0x6CB8	# <CJK>
+0xAA6E	0x6CC4	# <CJK>
+0xAA6F	0x6CB9	# <CJK>
+0xAA70	0x6CC1	# <CJK>
+0xAA71	0x6CAE	# <CJK>
+0xAA72	0x6CD7	# <CJK>
+0xAA73	0x6CC5	# <CJK>
+0xAA74	0x6CF1	# <CJK>
+0xAA75	0x6CBF	# <CJK>
+0xAA76	0x6CBB	# <CJK>
+0xAA77	0x6CE1	# <CJK>
+0xAA78	0x6CDB	# <CJK>
+0xAA79	0x6CCA	# <CJK>
+0xAA7A	0x6CAC	# <CJK>
+0xAA7B	0x6CEF	# <CJK>
+0xAA7C	0x6CDC	# <CJK>
+0xAA7D	0x6CD6	# <CJK>
+0xAA7E	0x6CE0	# <CJK>
+0xAAA1	0x7095	# <CJK>
+0xAAA2	0x708E	# <CJK>
+0xAAA3	0x7092	# <CJK>
+0xAAA4	0x708A	# <CJK>
+0xAAA5	0x7099	# <CJK>
+0xAAA6	0x722C	# <CJK>
+0xAAA7	0x722D	# <CJK>
+0xAAA8	0x7238	# <CJK>
+0xAAA9	0x7248	# <CJK>
+0xAAAA	0x7267	# <CJK>
+0xAAAB	0x7269	# <CJK>
+0xAAAC	0x72C0	# <CJK>
+0xAAAD	0x72CE	# <CJK>
+0xAAAE	0x72D9	# <CJK>
+0xAAAF	0x72D7	# <CJK>
+0xAAB0	0x72D0	# <CJK>
+0xAAB1	0x73A9	# <CJK>
+0xAAB2	0x73A8	# <CJK>
+0xAAB3	0x739F	# <CJK>
+0xAAB4	0x73AB	# <CJK>
+0xAAB5	0x73A5	# <CJK>
+0xAAB6	0x753D	# <CJK>
+0xAAB7	0x759D	# <CJK>
+0xAAB8	0x7599	# <CJK>
+0xAAB9	0x759A	# <CJK>
+0xAABA	0x7684	# <CJK>
+0xAABB	0x76C2	# <CJK>
+0xAABC	0x76F2	# <CJK>
+0xAABD	0x76F4	# <CJK>
+0xAABE	0x77E5	# <CJK>
+0xAABF	0x77FD	# <CJK>
+0xAAC0	0x793E	# <CJK>
+0xAAC1	0x7940	# <CJK>
+0xAAC2	0x7941	# <CJK>
+0xAAC3	0x79C9	# <CJK>
+0xAAC4	0x79C8	# <CJK>
+0xAAC5	0x7A7A	# <CJK>
+0xAAC6	0x7A79	# <CJK>
+0xAAC7	0x7AFA	# <CJK>
+0xAAC8	0x7CFE	# <CJK>
+0xAAC9	0x7F54	# <CJK>
+0xAACA	0x7F8C	# <CJK>
+0xAACB	0x7F8B	# <CJK>
+0xAACC	0x8005	# <CJK>
+0xAACD	0x80BA	# <CJK>
+0xAACE	0x80A5	# <CJK>
+0xAACF	0x80A2	# <CJK>
+0xAAD0	0x80B1	# <CJK>
+0xAAD1	0x80A1	# <CJK>
+0xAAD2	0x80AB	# <CJK>
+0xAAD3	0x80A9	# <CJK>
+0xAAD4	0x80B4	# <CJK>
+0xAAD5	0x80AA	# <CJK>
+0xAAD6	0x80AF	# <CJK>
+0xAAD7	0x81E5	# <CJK>
+0xAAD8	0x81FE	# <CJK>
+0xAAD9	0x820D	# <CJK>
+0xAADA	0x82B3	# <CJK>
+0xAADB	0x829D	# <CJK>
+0xAADC	0x8299	# <CJK>
+0xAADD	0x82AD	# <CJK>
+0xAADE	0x82BD	# <CJK>
+0xAADF	0x829F	# <CJK>
+0xAAE0	0x82B9	# <CJK>
+0xAAE1	0x82B1	# <CJK>
+0xAAE2	0x82AC	# <CJK>
+0xAAE3	0x82A5	# <CJK>
+0xAAE4	0x82AF	# <CJK>
+0xAAE5	0x82B8	# <CJK>
+0xAAE6	0x82A3	# <CJK>
+0xAAE7	0x82B0	# <CJK>
+0xAAE8	0x82BE	# <CJK>
+0xAAE9	0x82B7	# <CJK>
+0xAAEA	0x864E	# <CJK>
+0xAAEB	0x8671	# <CJK>
+0xAAEC	0x521D	# <CJK>
+0xAAED	0x8868	# <CJK>
+0xAAEE	0x8ECB	# <CJK>
+0xAAEF	0x8FCE	# <CJK>
+0xAAF0	0x8FD4	# <CJK>
+0xAAF1	0x8FD1	# <CJK>
+0xAAF2	0x90B5	# <CJK>
+0xAAF3	0x90B8	# <CJK>
+0xAAF4	0x90B1	# <CJK>
+0xAAF5	0x90B6	# <CJK>
+0xAAF6	0x91C7	# <CJK>
+0xAAF7	0x91D1	# <CJK>
+0xAAF8	0x9577	# <CJK>
+0xAAF9	0x9580	# <CJK>
+0xAAFA	0x961C	# <CJK>
+0xAAFB	0x9640	# <CJK>
+0xAAFC	0x963F	# <CJK>
+0xAAFD	0x963B	# <CJK>
+0xAAFE	0x9644	# <CJK>
+0xAB40	0x9642	# <CJK>
+0xAB41	0x96B9	# <CJK>
+0xAB42	0x96E8	# <CJK>
+0xAB43	0x9752	# <CJK>
+0xAB44	0x975E	# <CJK>
+0xAB45	0x4E9F	# <CJK>
+0xAB46	0x4EAD	# <CJK>
+0xAB47	0x4EAE	# <CJK>
+0xAB48	0x4FE1	# <CJK>
+0xAB49	0x4FB5	# <CJK>
+0xAB4A	0x4FAF	# <CJK>
+0xAB4B	0x4FBF	# <CJK>
+0xAB4C	0x4FE0	# <CJK>
+0xAB4D	0x4FD1	# <CJK>
+0xAB4E	0x4FCF	# <CJK>
+0xAB4F	0x4FDD	# <CJK>
+0xAB50	0x4FC3	# <CJK>
+0xAB51	0x4FB6	# <CJK>
+0xAB52	0x4FD8	# <CJK>
+0xAB53	0x4FDF	# <CJK>
+0xAB54	0x4FCA	# <CJK>
+0xAB55	0x4FD7	# <CJK>
+0xAB56	0x4FAE	# <CJK>
+0xAB57	0x4FD0	# <CJK>
+0xAB58	0x4FC4	# <CJK>
+0xAB59	0x4FC2	# <CJK>
+0xAB5A	0x4FDA	# <CJK>
+0xAB5B	0x4FCE	# <CJK>
+0xAB5C	0x4FDE	# <CJK>
+0xAB5D	0x4FB7	# <CJK>
+0xAB5E	0x5157	# <CJK>
+0xAB5F	0x5192	# <CJK>
+0xAB60	0x5191	# <CJK>
+0xAB61	0x51A0	# <CJK>
+0xAB62	0x524E	# <CJK>
+0xAB63	0x5243	# <CJK>
+0xAB64	0x524A	# <CJK>
+0xAB65	0x524D	# <CJK>
+0xAB66	0x524C	# <CJK>
+0xAB67	0x524B	# <CJK>
+0xAB68	0x5247	# <CJK>
+0xAB69	0x52C7	# <CJK>
+0xAB6A	0x52C9	# <CJK>
+0xAB6B	0x52C3	# <CJK>
+0xAB6C	0x52C1	# <CJK>
+0xAB6D	0x530D	# <CJK>
+0xAB6E	0x5357	# <CJK>
+0xAB6F	0x537B	# <CJK>
+0xAB70	0x539A	# <CJK>
+0xAB71	0x53DB	# <CJK>
+0xAB72	0x54AC	# <CJK>
+0xAB73	0x54C0	# <CJK>
+0xAB74	0x54A8	# <CJK>
+0xAB75	0x54CE	# <CJK>
+0xAB76	0x54C9	# <CJK>
+0xAB77	0x54B8	# <CJK>
+0xAB78	0x54A6	# <CJK>
+0xAB79	0x54B3	# <CJK>
+0xAB7A	0x54C7	# <CJK>
+0xAB7B	0x54C2	# <CJK>
+0xAB7C	0x54BD	# <CJK>
+0xAB7D	0x54AA	# <CJK>
+0xAB7E	0x54C1	# <CJK>
+0xABA1	0x54C4	# <CJK>
+0xABA2	0x54C8	# <CJK>
+0xABA3	0x54AF	# <CJK>
+0xABA4	0x54AB	# <CJK>
+0xABA5	0x54B1	# <CJK>
+0xABA6	0x54BB	# <CJK>
+0xABA7	0x54A9	# <CJK>
+0xABA8	0x54A7	# <CJK>
+0xABA9	0x54BF	# <CJK>
+0xABAA	0x56FF	# <CJK>
+0xABAB	0x5782	# <CJK>
+0xABAC	0x578B	# <CJK>
+0xABAD	0x57A0	# <CJK>
+0xABAE	0x57A3	# <CJK>
+0xABAF	0x57A2	# <CJK>
+0xABB0	0x57CE	# <CJK>
+0xABB1	0x57AE	# <CJK>
+0xABB2	0x5793	# <CJK>
+0xABB3	0x5955	# <CJK>
+0xABB4	0x5951	# <CJK>
+0xABB5	0x594F	# <CJK>
+0xABB6	0x594E	# <CJK>
+0xABB7	0x5950	# <CJK>
+0xABB8	0x59DC	# <CJK>
+0xABB9	0x59D8	# <CJK>
+0xABBA	0x59FF	# <CJK>
+0xABBB	0x59E3	# <CJK>
+0xABBC	0x59E8	# <CJK>
+0xABBD	0x5A03	# <CJK>
+0xABBE	0x59E5	# <CJK>
+0xABBF	0x59EA	# <CJK>
+0xABC0	0x59DA	# <CJK>
+0xABC1	0x59E6	# <CJK>
+0xABC2	0x5A01	# <CJK>
+0xABC3	0x59FB	# <CJK>
+0xABC4	0x5B69	# <CJK>
+0xABC5	0x5BA3	# <CJK>
+0xABC6	0x5BA6	# <CJK>
+0xABC7	0x5BA4	# <CJK>
+0xABC8	0x5BA2	# <CJK>
+0xABC9	0x5BA5	# <CJK>
+0xABCA	0x5C01	# <CJK>
+0xABCB	0x5C4E	# <CJK>
+0xABCC	0x5C4F	# <CJK>
+0xABCD	0x5C4D	# <CJK>
+0xABCE	0x5C4B	# <CJK>
+0xABCF	0x5CD9	# <CJK>
+0xABD0	0x5CD2	# <CJK>
+0xABD1	0x5DF7	# <CJK>
+0xABD2	0x5E1D	# <CJK>
+0xABD3	0x5E25	# <CJK>
+0xABD4	0x5E1F	# <CJK>
+0xABD5	0x5E7D	# <CJK>
+0xABD6	0x5EA0	# <CJK>
+0xABD7	0x5EA6	# <CJK>
+0xABD8	0x5EFA	# <CJK>
+0xABD9	0x5F08	# <CJK>
+0xABDA	0x5F2D	# <CJK>
+0xABDB	0x5F65	# <CJK>
+0xABDC	0x5F88	# <CJK>
+0xABDD	0x5F85	# <CJK>
+0xABDE	0x5F8A	# <CJK>
+0xABDF	0x5F8B	# <CJK>
+0xABE0	0x5F87	# <CJK>
+0xABE1	0x5F8C	# <CJK>
+0xABE2	0x5F89	# <CJK>
+0xABE3	0x6012	# <CJK>
+0xABE4	0x601D	# <CJK>
+0xABE5	0x6020	# <CJK>
+0xABE6	0x6025	# <CJK>
+0xABE7	0x600E	# <CJK>
+0xABE8	0x6028	# <CJK>
+0xABE9	0x604D	# <CJK>
+0xABEA	0x6070	# <CJK>
+0xABEB	0x6068	# <CJK>
+0xABEC	0x6062	# <CJK>
+0xABED	0x6046	# <CJK>
+0xABEE	0x6043	# <CJK>
+0xABEF	0x606C	# <CJK>
+0xABF0	0x606B	# <CJK>
+0xABF1	0x606A	# <CJK>
+0xABF2	0x6064	# <CJK>
+0xABF3	0x6241	# <CJK>
+0xABF4	0x62DC	# <CJK>
+0xABF5	0x6316	# <CJK>
+0xABF6	0x6309	# <CJK>
+0xABF7	0x62FC	# <CJK>
+0xABF8	0x62ED	# <CJK>
+0xABF9	0x6301	# <CJK>
+0xABFA	0x62EE	# <CJK>
+0xABFB	0x62FD	# <CJK>
+0xABFC	0x6307	# <CJK>
+0xABFD	0x62F1	# <CJK>
+0xABFE	0x62F7	# <CJK>
+0xAC40	0x62EF	# <CJK>
+0xAC41	0x62EC	# <CJK>
+0xAC42	0x62FE	# <CJK>
+0xAC43	0x62F4	# <CJK>
+0xAC44	0x6311	# <CJK>
+0xAC45	0x6302	# <CJK>
+0xAC46	0x653F	# <CJK>
+0xAC47	0x6545	# <CJK>
+0xAC48	0x65AB	# <CJK>
+0xAC49	0x65BD	# <CJK>
+0xAC4A	0x65E2	# <CJK>
+0xAC4B	0x6625	# <CJK>
+0xAC4C	0x662D	# <CJK>
+0xAC4D	0x6620	# <CJK>
+0xAC4E	0x6627	# <CJK>
+0xAC4F	0x662F	# <CJK>
+0xAC50	0x661F	# <CJK>
+0xAC51	0x6628	# <CJK>
+0xAC52	0x6631	# <CJK>
+0xAC53	0x6624	# <CJK>
+0xAC54	0x66F7	# <CJK>
+0xAC55	0x67FF	# <CJK>
+0xAC56	0x67D3	# <CJK>
+0xAC57	0x67F1	# <CJK>
+0xAC58	0x67D4	# <CJK>
+0xAC59	0x67D0	# <CJK>
+0xAC5A	0x67EC	# <CJK>
+0xAC5B	0x67B6	# <CJK>
+0xAC5C	0x67AF	# <CJK>
+0xAC5D	0x67F5	# <CJK>
+0xAC5E	0x67E9	# <CJK>
+0xAC5F	0x67EF	# <CJK>
+0xAC60	0x67C4	# <CJK>
+0xAC61	0x67D1	# <CJK>
+0xAC62	0x67B4	# <CJK>
+0xAC63	0x67DA	# <CJK>
+0xAC64	0x67E5	# <CJK>
+0xAC65	0x67B8	# <CJK>
+0xAC66	0x67CF	# <CJK>
+0xAC67	0x67DE	# <CJK>
+0xAC68	0x67F3	# <CJK>
+0xAC69	0x67B0	# <CJK>
+0xAC6A	0x67D9	# <CJK>
+0xAC6B	0x67E2	# <CJK>
+0xAC6C	0x67DD	# <CJK>
+0xAC6D	0x67D2	# <CJK>
+0xAC6E	0x6B6A	# <CJK>
+0xAC6F	0x6B83	# <CJK>
+0xAC70	0x6B86	# <CJK>
+0xAC71	0x6BB5	# <CJK>
+0xAC72	0x6BD2	# <CJK>
+0xAC73	0x6BD7	# <CJK>
+0xAC74	0x6C1F	# <CJK>
+0xAC75	0x6CC9	# <CJK>
+0xAC76	0x6D0B	# <CJK>
+0xAC77	0x6D32	# <CJK>
+0xAC78	0x6D2A	# <CJK>
+0xAC79	0x6D41	# <CJK>
+0xAC7A	0x6D25	# <CJK>
+0xAC7B	0x6D0C	# <CJK>
+0xAC7C	0x6D31	# <CJK>
+0xAC7D	0x6D1E	# <CJK>
+0xAC7E	0x6D17	# <CJK>
+0xACA1	0x6D3B	# <CJK>
+0xACA2	0x6D3D	# <CJK>
+0xACA3	0x6D3E	# <CJK>
+0xACA4	0x6D36	# <CJK>
+0xACA5	0x6D1B	# <CJK>
+0xACA6	0x6CF5	# <CJK>
+0xACA7	0x6D39	# <CJK>
+0xACA8	0x6D27	# <CJK>
+0xACA9	0x6D38	# <CJK>
+0xACAA	0x6D29	# <CJK>
+0xACAB	0x6D2E	# <CJK>
+0xACAC	0x6D35	# <CJK>
+0xACAD	0x6D0E	# <CJK>
+0xACAE	0x6D2B	# <CJK>
+0xACAF	0x70AB	# <CJK>
+0xACB0	0x70BA	# <CJK>
+0xACB1	0x70B3	# <CJK>
+0xACB2	0x70AC	# <CJK>
+0xACB3	0x70AF	# <CJK>
+0xACB4	0x70AD	# <CJK>
+0xACB5	0x70B8	# <CJK>
+0xACB6	0x70AE	# <CJK>
+0xACB7	0x70A4	# <CJK>
+0xACB8	0x7230	# <CJK>
+0xACB9	0x7272	# <CJK>
+0xACBA	0x726F	# <CJK>
+0xACBB	0x7274	# <CJK>
+0xACBC	0x72E9	# <CJK>
+0xACBD	0x72E0	# <CJK>
+0xACBE	0x72E1	# <CJK>
+0xACBF	0x73B7	# <CJK>
+0xACC0	0x73CA	# <CJK>
+0xACC1	0x73BB	# <CJK>
+0xACC2	0x73B2	# <CJK>
+0xACC3	0x73CD	# <CJK>
+0xACC4	0x73C0	# <CJK>
+0xACC5	0x73B3	# <CJK>
+0xACC6	0x751A	# <CJK>
+0xACC7	0x752D	# <CJK>
+0xACC8	0x754F	# <CJK>
+0xACC9	0x754C	# <CJK>
+0xACCA	0x754E	# <CJK>
+0xACCB	0x754B	# <CJK>
+0xACCC	0x75AB	# <CJK>
+0xACCD	0x75A4	# <CJK>
+0xACCE	0x75A5	# <CJK>
+0xACCF	0x75A2	# <CJK>
+0xACD0	0x75A3	# <CJK>
+0xACD1	0x7678	# <CJK>
+0xACD2	0x7686	# <CJK>
+0xACD3	0x7687	# <CJK>
+0xACD4	0x7688	# <CJK>
+0xACD5	0x76C8	# <CJK>
+0xACD6	0x76C6	# <CJK>
+0xACD7	0x76C3	# <CJK>
+0xACD8	0x76C5	# <CJK>
+0xACD9	0x7701	# <CJK>
+0xACDA	0x76F9	# <CJK>
+0xACDB	0x76F8	# <CJK>
+0xACDC	0x7709	# <CJK>
+0xACDD	0x770B	# <CJK>
+0xACDE	0x76FE	# <CJK>
+0xACDF	0x76FC	# <CJK>
+0xACE0	0x7707	# <CJK>
+0xACE1	0x77DC	# <CJK>
+0xACE2	0x7802	# <CJK>
+0xACE3	0x7814	# <CJK>
+0xACE4	0x780C	# <CJK>
+0xACE5	0x780D	# <CJK>
+0xACE6	0x7946	# <CJK>
+0xACE7	0x7949	# <CJK>
+0xACE8	0x7948	# <CJK>
+0xACE9	0x7947	# <CJK>
+0xACEA	0x79B9	# <CJK>
+0xACEB	0x79BA	# <CJK>
+0xACEC	0x79D1	# <CJK>
+0xACED	0x79D2	# <CJK>
+0xACEE	0x79CB	# <CJK>
+0xACEF	0x7A7F	# <CJK>
+0xACF0	0x7A81	# <CJK>
+0xACF1	0x7AFF	# <CJK>
+0xACF2	0x7AFD	# <CJK>
+0xACF3	0x7C7D	# <CJK>
+0xACF4	0x7D02	# <CJK>
+0xACF5	0x7D05	# <CJK>
+0xACF6	0x7D00	# <CJK>
+0xACF7	0x7D09	# <CJK>
+0xACF8	0x7D07	# <CJK>
+0xACF9	0x7D04	# <CJK>
+0xACFA	0x7D06	# <CJK>
+0xACFB	0x7F38	# <CJK>
+0xACFC	0x7F8E	# <CJK>
+0xACFD	0x7FBF	# <CJK>
+0xACFE	0x8004	# <CJK>
+0xAD40	0x8010	# <CJK>
+0xAD41	0x800D	# <CJK>
+0xAD42	0x8011	# <CJK>
+0xAD43	0x8036	# <CJK>
+0xAD44	0x80D6	# <CJK>
+0xAD45	0x80E5	# <CJK>
+0xAD46	0x80DA	# <CJK>
+0xAD47	0x80C3	# <CJK>
+0xAD48	0x80C4	# <CJK>
+0xAD49	0x80CC	# <CJK>
+0xAD4A	0x80E1	# <CJK>
+0xAD4B	0x80DB	# <CJK>
+0xAD4C	0x80CE	# <CJK>
+0xAD4D	0x80DE	# <CJK>
+0xAD4E	0x80E4	# <CJK>
+0xAD4F	0x80DD	# <CJK>
+0xAD50	0x81F4	# <CJK>
+0xAD51	0x8222	# <CJK>
+0xAD52	0x82E7	# <CJK>
+0xAD53	0x8303	# <CJK>
+0xAD54	0x8305	# <CJK>
+0xAD55	0x82E3	# <CJK>
+0xAD56	0x82DB	# <CJK>
+0xAD57	0x82E6	# <CJK>
+0xAD58	0x8304	# <CJK>
+0xAD59	0x82E5	# <CJK>
+0xAD5A	0x8302	# <CJK>
+0xAD5B	0x8309	# <CJK>
+0xAD5C	0x82D2	# <CJK>
+0xAD5D	0x82D7	# <CJK>
+0xAD5E	0x82F1	# <CJK>
+0xAD5F	0x8301	# <CJK>
+0xAD60	0x82DC	# <CJK>
+0xAD61	0x82D4	# <CJK>
+0xAD62	0x82D1	# <CJK>
+0xAD63	0x82DE	# <CJK>
+0xAD64	0x82D3	# <CJK>
+0xAD65	0x82DF	# <CJK>
+0xAD66	0x82EF	# <CJK>
+0xAD67	0x8306	# <CJK>
+0xAD68	0x8650	# <CJK>
+0xAD69	0x8679	# <CJK>
+0xAD6A	0x867B	# <CJK>
+0xAD6B	0x867A	# <CJK>
+0xAD6C	0x884D	# <CJK>
+0xAD6D	0x886B	# <CJK>
+0xAD6E	0x8981	# <CJK>
+0xAD6F	0x89D4	# <CJK>
+0xAD70	0x8A08	# <CJK>
+0xAD71	0x8A02	# <CJK>
+0xAD72	0x8A03	# <CJK>
+0xAD73	0x8C9E	# <CJK>
+0xAD74	0x8CA0	# <CJK>
+0xAD75	0x8D74	# <CJK>
+0xAD76	0x8D73	# <CJK>
+0xAD77	0x8DB4	# <CJK>
+0xAD78	0x8ECD	# <CJK>
+0xAD79	0x8ECC	# <CJK>
+0xAD7A	0x8FF0	# <CJK>
+0xAD7B	0x8FE6	# <CJK>
+0xAD7C	0x8FE2	# <CJK>
+0xAD7D	0x8FEA	# <CJK>
+0xAD7E	0x8FE5	# <CJK>
+0xADA1	0x8FED	# <CJK>
+0xADA2	0x8FEB	# <CJK>
+0xADA3	0x8FE4	# <CJK>
+0xADA4	0x8FE8	# <CJK>
+0xADA5	0x90CA	# <CJK>
+0xADA6	0x90CE	# <CJK>
+0xADA7	0x90C1	# <CJK>
+0xADA8	0x90C3	# <CJK>
+0xADA9	0x914B	# <CJK>
+0xADAA	0x914A	# <CJK>
+0xADAB	0x91CD	# <CJK>
+0xADAC	0x9582	# <CJK>
+0xADAD	0x9650	# <CJK>
+0xADAE	0x964B	# <CJK>
+0xADAF	0x964C	# <CJK>
+0xADB0	0x964D	# <CJK>
+0xADB1	0x9762	# <CJK>
+0xADB2	0x9769	# <CJK>
+0xADB3	0x97CB	# <CJK>
+0xADB4	0x97ED	# <CJK>
+0xADB5	0x97F3	# <CJK>
+0xADB6	0x9801	# <CJK>
+0xADB7	0x98A8	# <CJK>
+0xADB8	0x98DB	# <CJK>
+0xADB9	0x98DF	# <CJK>
+0xADBA	0x9996	# <CJK>
+0xADBB	0x9999	# <CJK>
+0xADBC	0x4E58	# <CJK>
+0xADBD	0x4EB3	# <CJK>
+0xADBE	0x500C	# <CJK>
+0xADBF	0x500D	# <CJK>
+0xADC0	0x5023	# <CJK>
+0xADC1	0x4FEF	# <CJK>
+0xADC2	0x5026	# <CJK>
+0xADC3	0x5025	# <CJK>
+0xADC4	0x4FF8	# <CJK>
+0xADC5	0x5029	# <CJK>
+0xADC6	0x5016	# <CJK>
+0xADC7	0x5006	# <CJK>
+0xADC8	0x503C	# <CJK>
+0xADC9	0x501F	# <CJK>
+0xADCA	0x501A	# <CJK>
+0xADCB	0x5012	# <CJK>
+0xADCC	0x5011	# <CJK>
+0xADCD	0x4FFA	# <CJK>
+0xADCE	0x5000	# <CJK>
+0xADCF	0x5014	# <CJK>
+0xADD0	0x5028	# <CJK>
+0xADD1	0x4FF1	# <CJK>
+0xADD2	0x5021	# <CJK>
+0xADD3	0x500B	# <CJK>
+0xADD4	0x5019	# <CJK>
+0xADD5	0x5018	# <CJK>
+0xADD6	0x4FF3	# <CJK>
+0xADD7	0x4FEE	# <CJK>
+0xADD8	0x502D	# <CJK>
+0xADD9	0x502A	# <CJK>
+0xADDA	0x4FFE	# <CJK>
+0xADDB	0x502B	# <CJK>
+0xADDC	0x5009	# <CJK>
+0xADDD	0x517C	# <CJK>
+0xADDE	0x51A4	# <CJK>
+0xADDF	0x51A5	# <CJK>
+0xADE0	0x51A2	# <CJK>
+0xADE1	0x51CD	# <CJK>
+0xADE2	0x51CC	# <CJK>
+0xADE3	0x51C6	# <CJK>
+0xADE4	0x51CB	# <CJK>
+0xADE5	0x5256	# <CJK>
+0xADE6	0x525C	# <CJK>
+0xADE7	0x5254	# <CJK>
+0xADE8	0x525B	# <CJK>
+0xADE9	0x525D	# <CJK>
+0xADEA	0x532A	# <CJK>
+0xADEB	0x537F	# <CJK>
+0xADEC	0x539F	# <CJK>
+0xADED	0x539D	# <CJK>
+0xADEE	0x53DF	# <CJK>
+0xADEF	0x54E8	# <CJK>
+0xADF0	0x5510	# <CJK>
+0xADF1	0x5501	# <CJK>
+0xADF2	0x5537	# <CJK>
+0xADF3	0x54FC	# <CJK>
+0xADF4	0x54E5	# <CJK>
+0xADF5	0x54F2	# <CJK>
+0xADF6	0x5506	# <CJK>
+0xADF7	0x54FA	# <CJK>
+0xADF8	0x5514	# <CJK>
+0xADF9	0x54E9	# <CJK>
+0xADFA	0x54ED	# <CJK>
+0xADFB	0x54E1	# <CJK>
+0xADFC	0x5509	# <CJK>
+0xADFD	0x54EE	# <CJK>
+0xADFE	0x54EA	# <CJK>
+0xAE40	0x54E6	# <CJK>
+0xAE41	0x5527	# <CJK>
+0xAE42	0x5507	# <CJK>
+0xAE43	0x54FD	# <CJK>
+0xAE44	0x550F	# <CJK>
+0xAE45	0x5703	# <CJK>
+0xAE46	0x5704	# <CJK>
+0xAE47	0x57C2	# <CJK>
+0xAE48	0x57D4	# <CJK>
+0xAE49	0x57CB	# <CJK>
+0xAE4A	0x57C3	# <CJK>
+0xAE4B	0x5809	# <CJK>
+0xAE4C	0x590F	# <CJK>
+0xAE4D	0x5957	# <CJK>
+0xAE4E	0x5958	# <CJK>
+0xAE4F	0x595A	# <CJK>
+0xAE50	0x5A11	# <CJK>
+0xAE51	0x5A18	# <CJK>
+0xAE52	0x5A1C	# <CJK>
+0xAE53	0x5A1F	# <CJK>
+0xAE54	0x5A1B	# <CJK>
+0xAE55	0x5A13	# <CJK>
+0xAE56	0x59EC	# <CJK>
+0xAE57	0x5A20	# <CJK>
+0xAE58	0x5A23	# <CJK>
+0xAE59	0x5A29	# <CJK>
+0xAE5A	0x5A25	# <CJK>
+0xAE5B	0x5A0C	# <CJK>
+0xAE5C	0x5A09	# <CJK>
+0xAE5D	0x5B6B	# <CJK>
+0xAE5E	0x5C58	# <CJK>
+0xAE5F	0x5BB0	# <CJK>
+0xAE60	0x5BB3	# <CJK>
+0xAE61	0x5BB6	# <CJK>
+0xAE62	0x5BB4	# <CJK>
+0xAE63	0x5BAE	# <CJK>
+0xAE64	0x5BB5	# <CJK>
+0xAE65	0x5BB9	# <CJK>
+0xAE66	0x5BB8	# <CJK>
+0xAE67	0x5C04	# <CJK>
+0xAE68	0x5C51	# <CJK>
+0xAE69	0x5C55	# <CJK>
+0xAE6A	0x5C50	# <CJK>
+0xAE6B	0x5CED	# <CJK>
+0xAE6C	0x5CFD	# <CJK>
+0xAE6D	0x5CFB	# <CJK>
+0xAE6E	0x5CEA	# <CJK>
+0xAE6F	0x5CE8	# <CJK>
+0xAE70	0x5CF0	# <CJK>
+0xAE71	0x5CF6	# <CJK>
+0xAE72	0x5D01	# <CJK>
+0xAE73	0x5CF4	# <CJK>
+0xAE74	0x5DEE	# <CJK>
+0xAE75	0x5E2D	# <CJK>
+0xAE76	0x5E2B	# <CJK>
+0xAE77	0x5EAB	# <CJK>
+0xAE78	0x5EAD	# <CJK>
+0xAE79	0x5EA7	# <CJK>
+0xAE7A	0x5F31	# <CJK>
+0xAE7B	0x5F92	# <CJK>
+0xAE7C	0x5F91	# <CJK>
+0xAE7D	0x5F90	# <CJK>
+0xAE7E	0x6059	# <CJK>
+0xAEA1	0x6063	# <CJK>
+0xAEA2	0x6065	# <CJK>
+0xAEA3	0x6050	# <CJK>
+0xAEA4	0x6055	# <CJK>
+0xAEA5	0x606D	# <CJK>
+0xAEA6	0x6069	# <CJK>
+0xAEA7	0x606F	# <CJK>
+0xAEA8	0x6084	# <CJK>
+0xAEA9	0x609F	# <CJK>
+0xAEAA	0x609A	# <CJK>
+0xAEAB	0x608D	# <CJK>
+0xAEAC	0x6094	# <CJK>
+0xAEAD	0x608C	# <CJK>
+0xAEAE	0x6085	# <CJK>
+0xAEAF	0x6096	# <CJK>
+0xAEB0	0x6247	# <CJK>
+0xAEB1	0x62F3	# <CJK>
+0xAEB2	0x6308	# <CJK>
+0xAEB3	0x62FF	# <CJK>
+0xAEB4	0x634E	# <CJK>
+0xAEB5	0x633E	# <CJK>
+0xAEB6	0x632F	# <CJK>
+0xAEB7	0x6355	# <CJK>
+0xAEB8	0x6342	# <CJK>
+0xAEB9	0x6346	# <CJK>
+0xAEBA	0x634F	# <CJK>
+0xAEBB	0x6349	# <CJK>
+0xAEBC	0x633A	# <CJK>
+0xAEBD	0x6350	# <CJK>
+0xAEBE	0x633D	# <CJK>
+0xAEBF	0x632A	# <CJK>
+0xAEC0	0x632B	# <CJK>
+0xAEC1	0x6328	# <CJK>
+0xAEC2	0x634D	# <CJK>
+0xAEC3	0x634C	# <CJK>
+0xAEC4	0x6548	# <CJK>
+0xAEC5	0x6549	# <CJK>
+0xAEC6	0x6599	# <CJK>
+0xAEC7	0x65C1	# <CJK>
+0xAEC8	0x65C5	# <CJK>
+0xAEC9	0x6642	# <CJK>
+0xAECA	0x6649	# <CJK>
+0xAECB	0x664F	# <CJK>
+0xAECC	0x6643	# <CJK>
+0xAECD	0x6652	# <CJK>
+0xAECE	0x664C	# <CJK>
+0xAECF	0x6645	# <CJK>
+0xAED0	0x6641	# <CJK>
+0xAED1	0x66F8	# <CJK>
+0xAED2	0x6714	# <CJK>
+0xAED3	0x6715	# <CJK>
+0xAED4	0x6717	# <CJK>
+0xAED5	0x6821	# <CJK>
+0xAED6	0x6838	# <CJK>
+0xAED7	0x6848	# <CJK>
+0xAED8	0x6846	# <CJK>
+0xAED9	0x6853	# <CJK>
+0xAEDA	0x6839	# <CJK>
+0xAEDB	0x6842	# <CJK>
+0xAEDC	0x6854	# <CJK>
+0xAEDD	0x6829	# <CJK>
+0xAEDE	0x68B3	# <CJK>
+0xAEDF	0x6817	# <CJK>
+0xAEE0	0x684C	# <CJK>
+0xAEE1	0x6851	# <CJK>
+0xAEE2	0x683D	# <CJK>
+0xAEE3	0x67F4	# <CJK>
+0xAEE4	0x6850	# <CJK>
+0xAEE5	0x6840	# <CJK>
+0xAEE6	0x683C	# <CJK>
+0xAEE7	0x6843	# <CJK>
+0xAEE8	0x682A	# <CJK>
+0xAEE9	0x6845	# <CJK>
+0xAEEA	0x6813	# <CJK>
+0xAEEB	0x6818	# <CJK>
+0xAEEC	0x6841	# <CJK>
+0xAEED	0x6B8A	# <CJK>
+0xAEEE	0x6B89	# <CJK>
+0xAEEF	0x6BB7	# <CJK>
+0xAEF0	0x6C23	# <CJK>
+0xAEF1	0x6C27	# <CJK>
+0xAEF2	0x6C28	# <CJK>
+0xAEF3	0x6C26	# <CJK>
+0xAEF4	0x6C24	# <CJK>
+0xAEF5	0x6CF0	# <CJK>
+0xAEF6	0x6D6A	# <CJK>
+0xAEF7	0x6D95	# <CJK>
+0xAEF8	0x6D88	# <CJK>
+0xAEF9	0x6D87	# <CJK>
+0xAEFA	0x6D66	# <CJK>
+0xAEFB	0x6D78	# <CJK>
+0xAEFC	0x6D77	# <CJK>
+0xAEFD	0x6D59	# <CJK>
+0xAEFE	0x6D93	# <CJK>
+0xAF40	0x6D6C	# <CJK>
+0xAF41	0x6D89	# <CJK>
+0xAF42	0x6D6E	# <CJK>
+0xAF43	0x6D5A	# <CJK>
+0xAF44	0x6D74	# <CJK>
+0xAF45	0x6D69	# <CJK>
+0xAF46	0x6D8C	# <CJK>
+0xAF47	0x6D8A	# <CJK>
+0xAF48	0x6D79	# <CJK>
+0xAF49	0x6D85	# <CJK>
+0xAF4A	0x6D65	# <CJK>
+0xAF4B	0x6D94	# <CJK>
+0xAF4C	0x70CA	# <CJK>
+0xAF4D	0x70D8	# <CJK>
+0xAF4E	0x70E4	# <CJK>
+0xAF4F	0x70D9	# <CJK>
+0xAF50	0x70C8	# <CJK>
+0xAF51	0x70CF	# <CJK>
+0xAF52	0x7239	# <CJK>
+0xAF53	0x7279	# <CJK>
+0xAF54	0x72FC	# <CJK>
+0xAF55	0x72F9	# <CJK>
+0xAF56	0x72FD	# <CJK>
+0xAF57	0x72F8	# <CJK>
+0xAF58	0x72F7	# <CJK>
+0xAF59	0x7386	# <CJK>
+0xAF5A	0x73ED	# <CJK>
+0xAF5B	0x7409	# <CJK>
+0xAF5C	0x73EE	# <CJK>
+0xAF5D	0x73E0	# <CJK>
+0xAF5E	0x73EA	# <CJK>
+0xAF5F	0x73DE	# <CJK>
+0xAF60	0x7554	# <CJK>
+0xAF61	0x755D	# <CJK>
+0xAF62	0x755C	# <CJK>
+0xAF63	0x755A	# <CJK>
+0xAF64	0x7559	# <CJK>
+0xAF65	0x75BE	# <CJK>
+0xAF66	0x75C5	# <CJK>
+0xAF67	0x75C7	# <CJK>
+0xAF68	0x75B2	# <CJK>
+0xAF69	0x75B3	# <CJK>
+0xAF6A	0x75BD	# <CJK>
+0xAF6B	0x75BC	# <CJK>
+0xAF6C	0x75B9	# <CJK>
+0xAF6D	0x75C2	# <CJK>
+0xAF6E	0x75B8	# <CJK>
+0xAF6F	0x768B	# <CJK>
+0xAF70	0x76B0	# <CJK>
+0xAF71	0x76CA	# <CJK>
+0xAF72	0x76CD	# <CJK>
+0xAF73	0x76CE	# <CJK>
+0xAF74	0x7729	# <CJK>
+0xAF75	0x771F	# <CJK>
+0xAF76	0x7720	# <CJK>
+0xAF77	0x7728	# <CJK>
+0xAF78	0x77E9	# <CJK>
+0xAF79	0x7830	# <CJK>
+0xAF7A	0x7827	# <CJK>
+0xAF7B	0x7838	# <CJK>
+0xAF7C	0x781D	# <CJK>
+0xAF7D	0x7834	# <CJK>
+0xAF7E	0x7837	# <CJK>
+0xAFA1	0x7825	# <CJK>
+0xAFA2	0x782D	# <CJK>
+0xAFA3	0x7820	# <CJK>
+0xAFA4	0x781F	# <CJK>
+0xAFA5	0x7832	# <CJK>
+0xAFA6	0x7955	# <CJK>
+0xAFA7	0x7950	# <CJK>
+0xAFA8	0x7960	# <CJK>
+0xAFA9	0x795F	# <CJK>
+0xAFAA	0x7956	# <CJK>
+0xAFAB	0x795E	# <CJK>
+0xAFAC	0x795D	# <CJK>
+0xAFAD	0x7957	# <CJK>
+0xAFAE	0x795A	# <CJK>
+0xAFAF	0x79E4	# <CJK>
+0xAFB0	0x79E3	# <CJK>
+0xAFB1	0x79E7	# <CJK>
+0xAFB2	0x79DF	# <CJK>
+0xAFB3	0x79E6	# <CJK>
+0xAFB4	0x79E9	# <CJK>
+0xAFB5	0x79D8	# <CJK>
+0xAFB6	0x7A84	# <CJK>
+0xAFB7	0x7A88	# <CJK>
+0xAFB8	0x7AD9	# <CJK>
+0xAFB9	0x7B06	# <CJK>
+0xAFBA	0x7B11	# <CJK>
+0xAFBB	0x7C89	# <CJK>
+0xAFBC	0x7D21	# <CJK>
+0xAFBD	0x7D17	# <CJK>
+0xAFBE	0x7D0B	# <CJK>
+0xAFBF	0x7D0A	# <CJK>
+0xAFC0	0x7D20	# <CJK>
+0xAFC1	0x7D22	# <CJK>
+0xAFC2	0x7D14	# <CJK>
+0xAFC3	0x7D10	# <CJK>
+0xAFC4	0x7D15	# <CJK>
+0xAFC5	0x7D1A	# <CJK>
+0xAFC6	0x7D1C	# <CJK>
+0xAFC7	0x7D0D	# <CJK>
+0xAFC8	0x7D19	# <CJK>
+0xAFC9	0x7D1B	# <CJK>
+0xAFCA	0x7F3A	# <CJK>
+0xAFCB	0x7F5F	# <CJK>
+0xAFCC	0x7F94	# <CJK>
+0xAFCD	0x7FC5	# <CJK>
+0xAFCE	0x7FC1	# <CJK>
+0xAFCF	0x8006	# <CJK>
+0xAFD0	0x8018	# <CJK>
+0xAFD1	0x8015	# <CJK>
+0xAFD2	0x8019	# <CJK>
+0xAFD3	0x8017	# <CJK>
+0xAFD4	0x803D	# <CJK>
+0xAFD5	0x803F	# <CJK>
+0xAFD6	0x80F1	# <CJK>
+0xAFD7	0x8102	# <CJK>
+0xAFD8	0x80F0	# <CJK>
+0xAFD9	0x8105	# <CJK>
+0xAFDA	0x80ED	# <CJK>
+0xAFDB	0x80F4	# <CJK>
+0xAFDC	0x8106	# <CJK>
+0xAFDD	0x80F8	# <CJK>
+0xAFDE	0x80F3	# <CJK>
+0xAFDF	0x8108	# <CJK>
+0xAFE0	0x80FD	# <CJK>
+0xAFE1	0x810A	# <CJK>
+0xAFE2	0x80FC	# <CJK>
+0xAFE3	0x80EF	# <CJK>
+0xAFE4	0x81ED	# <CJK>
+0xAFE5	0x81EC	# <CJK>
+0xAFE6	0x8200	# <CJK>
+0xAFE7	0x8210	# <CJK>
+0xAFE8	0x822A	# <CJK>
+0xAFE9	0x822B	# <CJK>
+0xAFEA	0x8228	# <CJK>
+0xAFEB	0x822C	# <CJK>
+0xAFEC	0x82BB	# <CJK>
+0xAFED	0x832B	# <CJK>
+0xAFEE	0x8352	# <CJK>
+0xAFEF	0x8354	# <CJK>
+0xAFF0	0x834A	# <CJK>
+0xAFF1	0x8338	# <CJK>
+0xAFF2	0x8350	# <CJK>
+0xAFF3	0x8349	# <CJK>
+0xAFF4	0x8335	# <CJK>
+0xAFF5	0x8334	# <CJK>
+0xAFF6	0x834F	# <CJK>
+0xAFF7	0x8332	# <CJK>
+0xAFF8	0x8339	# <CJK>
+0xAFF9	0x8336	# <CJK>
+0xAFFA	0x8317	# <CJK>
+0xAFFB	0x8340	# <CJK>
+0xAFFC	0x8331	# <CJK>
+0xAFFD	0x8328	# <CJK>
+0xAFFE	0x8343	# <CJK>
+0xB040	0x8654	# <CJK>
+0xB041	0x868A	# <CJK>
+0xB042	0x86AA	# <CJK>
+0xB043	0x8693	# <CJK>
+0xB044	0x86A4	# <CJK>
+0xB045	0x86A9	# <CJK>
+0xB046	0x868C	# <CJK>
+0xB047	0x86A3	# <CJK>
+0xB048	0x869C	# <CJK>
+0xB049	0x8870	# <CJK>
+0xB04A	0x8877	# <CJK>
+0xB04B	0x8881	# <CJK>
+0xB04C	0x8882	# <CJK>
+0xB04D	0x887D	# <CJK>
+0xB04E	0x8879	# <CJK>
+0xB04F	0x8A18	# <CJK>
+0xB050	0x8A10	# <CJK>
+0xB051	0x8A0E	# <CJK>
+0xB052	0x8A0C	# <CJK>
+0xB053	0x8A15	# <CJK>
+0xB054	0x8A0A	# <CJK>
+0xB055	0x8A17	# <CJK>
+0xB056	0x8A13	# <CJK>
+0xB057	0x8A16	# <CJK>
+0xB058	0x8A0F	# <CJK>
+0xB059	0x8A11	# <CJK>
+0xB05A	0x8C48	# <CJK>
+0xB05B	0x8C7A	# <CJK>
+0xB05C	0x8C79	# <CJK>
+0xB05D	0x8CA1	# <CJK>
+0xB05E	0x8CA2	# <CJK>
+0xB05F	0x8D77	# <CJK>
+0xB060	0x8EAC	# <CJK>
+0xB061	0x8ED2	# <CJK>
+0xB062	0x8ED4	# <CJK>
+0xB063	0x8ECF	# <CJK>
+0xB064	0x8FB1	# <CJK>
+0xB065	0x9001	# <CJK>
+0xB066	0x9006	# <CJK>
+0xB067	0x8FF7	# <CJK>
+0xB068	0x9000	# <CJK>
+0xB069	0x8FFA	# <CJK>
+0xB06A	0x8FF4	# <CJK>
+0xB06B	0x9003	# <CJK>
+0xB06C	0x8FFD	# <CJK>
+0xB06D	0x9005	# <CJK>
+0xB06E	0x8FF8	# <CJK>
+0xB06F	0x9095	# <CJK>
+0xB070	0x90E1	# <CJK>
+0xB071	0x90DD	# <CJK>
+0xB072	0x90E2	# <CJK>
+0xB073	0x9152	# <CJK>
+0xB074	0x914D	# <CJK>
+0xB075	0x914C	# <CJK>
+0xB076	0x91D8	# <CJK>
+0xB077	0x91DD	# <CJK>
+0xB078	0x91D7	# <CJK>
+0xB079	0x91DC	# <CJK>
+0xB07A	0x91D9	# <CJK>
+0xB07B	0x9583	# <CJK>
+0xB07C	0x9662	# <CJK>
+0xB07D	0x9663	# <CJK>
+0xB07E	0x9661	# <CJK>
+0xB0A1	0x965B	# <CJK>
+0xB0A2	0x965D	# <CJK>
+0xB0A3	0x9664	# <CJK>
+0xB0A4	0x9658	# <CJK>
+0xB0A5	0x965E	# <CJK>
+0xB0A6	0x96BB	# <CJK>
+0xB0A7	0x98E2	# <CJK>
+0xB0A8	0x99AC	# <CJK>
+0xB0A9	0x9AA8	# <CJK>
+0xB0AA	0x9AD8	# <CJK>
+0xB0AB	0x9B25	# <CJK>
+0xB0AC	0x9B32	# <CJK>
+0xB0AD	0x9B3C	# <CJK>
+0xB0AE	0x4E7E	# <CJK>
+0xB0AF	0x507A	# <CJK>
+0xB0B0	0x507D	# <CJK>
+0xB0B1	0x505C	# <CJK>
+0xB0B2	0x5047	# <CJK>
+0xB0B3	0x5043	# <CJK>
+0xB0B4	0x504C	# <CJK>
+0xB0B5	0x505A	# <CJK>
+0xB0B6	0x5049	# <CJK>
+0xB0B7	0x5065	# <CJK>
+0xB0B8	0x5076	# <CJK>
+0xB0B9	0x504E	# <CJK>
+0xB0BA	0x5055	# <CJK>
+0xB0BB	0x5075	# <CJK>
+0xB0BC	0x5074	# <CJK>
+0xB0BD	0x5077	# <CJK>
+0xB0BE	0x504F	# <CJK>
+0xB0BF	0x500F	# <CJK>
+0xB0C0	0x506F	# <CJK>
+0xB0C1	0x506D	# <CJK>
+0xB0C2	0x515C	# <CJK>
+0xB0C3	0x5195	# <CJK>
+0xB0C4	0x51F0	# <CJK>
+0xB0C5	0x526A	# <CJK>
+0xB0C6	0x526F	# <CJK>
+0xB0C7	0x52D2	# <CJK>
+0xB0C8	0x52D9	# <CJK>
+0xB0C9	0x52D8	# <CJK>
+0xB0CA	0x52D5	# <CJK>
+0xB0CB	0x5310	# <CJK>
+0xB0CC	0x530F	# <CJK>
+0xB0CD	0x5319	# <CJK>
+0xB0CE	0x533F	# <CJK>
+0xB0CF	0x5340	# <CJK>
+0xB0D0	0x533E	# <CJK>
+0xB0D1	0x53C3	# <CJK>
+0xB0D2	0x66FC	# <CJK>
+0xB0D3	0x5546	# <CJK>
+0xB0D4	0x556A	# <CJK>
+0xB0D5	0x5566	# <CJK>
+0xB0D6	0x5544	# <CJK>
+0xB0D7	0x555E	# <CJK>
+0xB0D8	0x5561	# <CJK>
+0xB0D9	0x5543	# <CJK>
+0xB0DA	0x554A	# <CJK>
+0xB0DB	0x5531	# <CJK>
+0xB0DC	0x5556	# <CJK>
+0xB0DD	0x554F	# <CJK>
+0xB0DE	0x5555	# <CJK>
+0xB0DF	0x552F	# <CJK>
+0xB0E0	0x5564	# <CJK>
+0xB0E1	0x5538	# <CJK>
+0xB0E2	0x552E	# <CJK>
+0xB0E3	0x555C	# <CJK>
+0xB0E4	0x552C	# <CJK>
+0xB0E5	0x5563	# <CJK>
+0xB0E6	0x5533	# <CJK>
+0xB0E7	0x5541	# <CJK>
+0xB0E8	0x5557	# <CJK>
+0xB0E9	0x5708	# <CJK>
+0xB0EA	0x570B	# <CJK>
+0xB0EB	0x5709	# <CJK>
+0xB0EC	0x57DF	# <CJK>
+0xB0ED	0x5805	# <CJK>
+0xB0EE	0x580A	# <CJK>
+0xB0EF	0x5806	# <CJK>
+0xB0F0	0x57E0	# <CJK>
+0xB0F1	0x57E4	# <CJK>
+0xB0F2	0x57FA	# <CJK>
+0xB0F3	0x5802	# <CJK>
+0xB0F4	0x5835	# <CJK>
+0xB0F5	0x57F7	# <CJK>
+0xB0F6	0x57F9	# <CJK>
+0xB0F7	0x5920	# <CJK>
+0xB0F8	0x5962	# <CJK>
+0xB0F9	0x5A36	# <CJK>
+0xB0FA	0x5A41	# <CJK>
+0xB0FB	0x5A49	# <CJK>
+0xB0FC	0x5A66	# <CJK>
+0xB0FD	0x5A6A	# <CJK>
+0xB0FE	0x5A40	# <CJK>
+0xB140	0x5A3C	# <CJK>
+0xB141	0x5A62	# <CJK>
+0xB142	0x5A5A	# <CJK>
+0xB143	0x5A46	# <CJK>
+0xB144	0x5A4A	# <CJK>
+0xB145	0x5B70	# <CJK>
+0xB146	0x5BC7	# <CJK>
+0xB147	0x5BC5	# <CJK>
+0xB148	0x5BC4	# <CJK>
+0xB149	0x5BC2	# <CJK>
+0xB14A	0x5BBF	# <CJK>
+0xB14B	0x5BC6	# <CJK>
+0xB14C	0x5C09	# <CJK>
+0xB14D	0x5C08	# <CJK>
+0xB14E	0x5C07	# <CJK>
+0xB14F	0x5C60	# <CJK>
+0xB150	0x5C5C	# <CJK>
+0xB151	0x5C5D	# <CJK>
+0xB152	0x5D07	# <CJK>
+0xB153	0x5D06	# <CJK>
+0xB154	0x5D0E	# <CJK>
+0xB155	0x5D1B	# <CJK>
+0xB156	0x5D16	# <CJK>
+0xB157	0x5D22	# <CJK>
+0xB158	0x5D11	# <CJK>
+0xB159	0x5D29	# <CJK>
+0xB15A	0x5D14	# <CJK>
+0xB15B	0x5D19	# <CJK>
+0xB15C	0x5D24	# <CJK>
+0xB15D	0x5D27	# <CJK>
+0xB15E	0x5D17	# <CJK>
+0xB15F	0x5DE2	# <CJK>
+0xB160	0x5E38	# <CJK>
+0xB161	0x5E36	# <CJK>
+0xB162	0x5E33	# <CJK>
+0xB163	0x5E37	# <CJK>
+0xB164	0x5EB7	# <CJK>
+0xB165	0x5EB8	# <CJK>
+0xB166	0x5EB6	# <CJK>
+0xB167	0x5EB5	# <CJK>
+0xB168	0x5EBE	# <CJK>
+0xB169	0x5F35	# <CJK>
+0xB16A	0x5F37	# <CJK>
+0xB16B	0x5F57	# <CJK>
+0xB16C	0x5F6C	# <CJK>
+0xB16D	0x5F69	# <CJK>
+0xB16E	0x5F6B	# <CJK>
+0xB16F	0x5F97	# <CJK>
+0xB170	0x5F99	# <CJK>
+0xB171	0x5F9E	# <CJK>
+0xB172	0x5F98	# <CJK>
+0xB173	0x5FA1	# <CJK>
+0xB174	0x5FA0	# <CJK>
+0xB175	0x5F9C	# <CJK>
+0xB176	0x607F	# <CJK>
+0xB177	0x60A3	# <CJK>
+0xB178	0x6089	# <CJK>
+0xB179	0x60A0	# <CJK>
+0xB17A	0x60A8	# <CJK>
+0xB17B	0x60CB	# <CJK>
+0xB17C	0x60B4	# <CJK>
+0xB17D	0x60E6	# <CJK>
+0xB17E	0x60BD	# <CJK>
+0xB1A1	0x60C5	# <CJK>
+0xB1A2	0x60BB	# <CJK>
+0xB1A3	0x60B5	# <CJK>
+0xB1A4	0x60DC	# <CJK>
+0xB1A5	0x60BC	# <CJK>
+0xB1A6	0x60D8	# <CJK>
+0xB1A7	0x60D5	# <CJK>
+0xB1A8	0x60C6	# <CJK>
+0xB1A9	0x60DF	# <CJK>
+0xB1AA	0x60B8	# <CJK>
+0xB1AB	0x60DA	# <CJK>
+0xB1AC	0x60C7	# <CJK>
+0xB1AD	0x621A	# <CJK>
+0xB1AE	0x621B	# <CJK>
+0xB1AF	0x6248	# <CJK>
+0xB1B0	0x63A0	# <CJK>
+0xB1B1	0x63A7	# <CJK>
+0xB1B2	0x6372	# <CJK>
+0xB1B3	0x6396	# <CJK>
+0xB1B4	0x63A2	# <CJK>
+0xB1B5	0x63A5	# <CJK>
+0xB1B6	0x6377	# <CJK>
+0xB1B7	0x6367	# <CJK>
+0xB1B8	0x6398	# <CJK>
+0xB1B9	0x63AA	# <CJK>
+0xB1BA	0x6371	# <CJK>
+0xB1BB	0x63A9	# <CJK>
+0xB1BC	0x6389	# <CJK>
+0xB1BD	0x6383	# <CJK>
+0xB1BE	0x639B	# <CJK>
+0xB1BF	0x636B	# <CJK>
+0xB1C0	0x63A8	# <CJK>
+0xB1C1	0x6384	# <CJK>
+0xB1C2	0x6388	# <CJK>
+0xB1C3	0x6399	# <CJK>
+0xB1C4	0x63A1	# <CJK>
+0xB1C5	0x63AC	# <CJK>
+0xB1C6	0x6392	# <CJK>
+0xB1C7	0x638F	# <CJK>
+0xB1C8	0x6380	# <CJK>
+0xB1C9	0x637B	# <CJK>
+0xB1CA	0x6369	# <CJK>
+0xB1CB	0x6368	# <CJK>
+0xB1CC	0x637A	# <CJK>
+0xB1CD	0x655D	# <CJK>
+0xB1CE	0x6556	# <CJK>
+0xB1CF	0x6551	# <CJK>
+0xB1D0	0x6559	# <CJK>
+0xB1D1	0x6557	# <CJK>
+0xB1D2	0x555F	# <CJK>
+0xB1D3	0x654F	# <CJK>
+0xB1D4	0x6558	# <CJK>
+0xB1D5	0x6555	# <CJK>
+0xB1D6	0x6554	# <CJK>
+0xB1D7	0x659C	# <CJK>
+0xB1D8	0x659B	# <CJK>
+0xB1D9	0x65AC	# <CJK>
+0xB1DA	0x65CF	# <CJK>
+0xB1DB	0x65CB	# <CJK>
+0xB1DC	0x65CC	# <CJK>
+0xB1DD	0x65CE	# <CJK>
+0xB1DE	0x665D	# <CJK>
+0xB1DF	0x665A	# <CJK>
+0xB1E0	0x6664	# <CJK>
+0xB1E1	0x6668	# <CJK>
+0xB1E2	0x6666	# <CJK>
+0xB1E3	0x665E	# <CJK>
+0xB1E4	0x66F9	# <CJK>
+0xB1E5	0x52D7	# <CJK>
+0xB1E6	0x671B	# <CJK>
+0xB1E7	0x6881	# <CJK>
+0xB1E8	0x68AF	# <CJK>
+0xB1E9	0x68A2	# <CJK>
+0xB1EA	0x6893	# <CJK>
+0xB1EB	0x68B5	# <CJK>
+0xB1EC	0x687F	# <CJK>
+0xB1ED	0x6876	# <CJK>
+0xB1EE	0x68B1	# <CJK>
+0xB1EF	0x68A7	# <CJK>
+0xB1F0	0x6897	# <CJK>
+0xB1F1	0x68B0	# <CJK>
+0xB1F2	0x6883	# <CJK>
+0xB1F3	0x68C4	# <CJK>
+0xB1F4	0x68AD	# <CJK>
+0xB1F5	0x6886	# <CJK>
+0xB1F6	0x6885	# <CJK>
+0xB1F7	0x6894	# <CJK>
+0xB1F8	0x689D	# <CJK>
+0xB1F9	0x68A8	# <CJK>
+0xB1FA	0x689F	# <CJK>
+0xB1FB	0x68A1	# <CJK>
+0xB1FC	0x6882	# <CJK>
+0xB1FD	0x6B32	# <CJK>
+0xB1FE	0x6BBA	# <CJK>
+0xB240	0x6BEB	# <CJK>
+0xB241	0x6BEC	# <CJK>
+0xB242	0x6C2B	# <CJK>
+0xB243	0x6D8E	# <CJK>
+0xB244	0x6DBC	# <CJK>
+0xB245	0x6DF3	# <CJK>
+0xB246	0x6DD9	# <CJK>
+0xB247	0x6DB2	# <CJK>
+0xB248	0x6DE1	# <CJK>
+0xB249	0x6DCC	# <CJK>
+0xB24A	0x6DE4	# <CJK>
+0xB24B	0x6DFB	# <CJK>
+0xB24C	0x6DFA	# <CJK>
+0xB24D	0x6E05	# <CJK>
+0xB24E	0x6DC7	# <CJK>
+0xB24F	0x6DCB	# <CJK>
+0xB250	0x6DAF	# <CJK>
+0xB251	0x6DD1	# <CJK>
+0xB252	0x6DAE	# <CJK>
+0xB253	0x6DDE	# <CJK>
+0xB254	0x6DF9	# <CJK>
+0xB255	0x6DB8	# <CJK>
+0xB256	0x6DF7	# <CJK>
+0xB257	0x6DF5	# <CJK>
+0xB258	0x6DC5	# <CJK>
+0xB259	0x6DD2	# <CJK>
+0xB25A	0x6E1A	# <CJK>
+0xB25B	0x6DB5	# <CJK>
+0xB25C	0x6DDA	# <CJK>
+0xB25D	0x6DEB	# <CJK>
+0xB25E	0x6DD8	# <CJK>
+0xB25F	0x6DEA	# <CJK>
+0xB260	0x6DF1	# <CJK>
+0xB261	0x6DEE	# <CJK>
+0xB262	0x6DE8	# <CJK>
+0xB263	0x6DC6	# <CJK>
+0xB264	0x6DC4	# <CJK>
+0xB265	0x6DAA	# <CJK>
+0xB266	0x6DEC	# <CJK>
+0xB267	0x6DBF	# <CJK>
+0xB268	0x6DE6	# <CJK>
+0xB269	0x70F9	# <CJK>
+0xB26A	0x7109	# <CJK>
+0xB26B	0x710A	# <CJK>
+0xB26C	0x70FD	# <CJK>
+0xB26D	0x70EF	# <CJK>
+0xB26E	0x723D	# <CJK>
+0xB26F	0x727D	# <CJK>
+0xB270	0x7281	# <CJK>
+0xB271	0x731C	# <CJK>
+0xB272	0x731B	# <CJK>
+0xB273	0x7316	# <CJK>
+0xB274	0x7313	# <CJK>
+0xB275	0x7319	# <CJK>
+0xB276	0x7387	# <CJK>
+0xB277	0x7405	# <CJK>
+0xB278	0x740A	# <CJK>
+0xB279	0x7403	# <CJK>
+0xB27A	0x7406	# <CJK>
+0xB27B	0x73FE	# <CJK>
+0xB27C	0x740D	# <CJK>
+0xB27D	0x74E0	# <CJK>
+0xB27E	0x74F6	# <CJK>
+0xB2A1	0x74F7	# <CJK>
+0xB2A2	0x751C	# <CJK>
+0xB2A3	0x7522	# <CJK>
+0xB2A4	0x7565	# <CJK>
+0xB2A5	0x7566	# <CJK>
+0xB2A6	0x7562	# <CJK>
+0xB2A7	0x7570	# <CJK>
+0xB2A8	0x758F	# <CJK>
+0xB2A9	0x75D4	# <CJK>
+0xB2AA	0x75D5	# <CJK>
+0xB2AB	0x75B5	# <CJK>
+0xB2AC	0x75CA	# <CJK>
+0xB2AD	0x75CD	# <CJK>
+0xB2AE	0x768E	# <CJK>
+0xB2AF	0x76D4	# <CJK>
+0xB2B0	0x76D2	# <CJK>
+0xB2B1	0x76DB	# <CJK>
+0xB2B2	0x7737	# <CJK>
+0xB2B3	0x773E	# <CJK>
+0xB2B4	0x773C	# <CJK>
+0xB2B5	0x7736	# <CJK>
+0xB2B6	0x7738	# <CJK>
+0xB2B7	0x773A	# <CJK>
+0xB2B8	0x786B	# <CJK>
+0xB2B9	0x7843	# <CJK>
+0xB2BA	0x784E	# <CJK>
+0xB2BB	0x7965	# <CJK>
+0xB2BC	0x7968	# <CJK>
+0xB2BD	0x796D	# <CJK>
+0xB2BE	0x79FB	# <CJK>
+0xB2BF	0x7A92	# <CJK>
+0xB2C0	0x7A95	# <CJK>
+0xB2C1	0x7B20	# <CJK>
+0xB2C2	0x7B28	# <CJK>
+0xB2C3	0x7B1B	# <CJK>
+0xB2C4	0x7B2C	# <CJK>
+0xB2C5	0x7B26	# <CJK>
+0xB2C6	0x7B19	# <CJK>
+0xB2C7	0x7B1E	# <CJK>
+0xB2C8	0x7B2E	# <CJK>
+0xB2C9	0x7C92	# <CJK>
+0xB2CA	0x7C97	# <CJK>
+0xB2CB	0x7C95	# <CJK>
+0xB2CC	0x7D46	# <CJK>
+0xB2CD	0x7D43	# <CJK>
+0xB2CE	0x7D71	# <CJK>
+0xB2CF	0x7D2E	# <CJK>
+0xB2D0	0x7D39	# <CJK>
+0xB2D1	0x7D3C	# <CJK>
+0xB2D2	0x7D40	# <CJK>
+0xB2D3	0x7D30	# <CJK>
+0xB2D4	0x7D33	# <CJK>
+0xB2D5	0x7D44	# <CJK>
+0xB2D6	0x7D2F	# <CJK>
+0xB2D7	0x7D42	# <CJK>
+0xB2D8	0x7D32	# <CJK>
+0xB2D9	0x7D31	# <CJK>
+0xB2DA	0x7F3D	# <CJK>
+0xB2DB	0x7F9E	# <CJK>
+0xB2DC	0x7F9A	# <CJK>
+0xB2DD	0x7FCC	# <CJK>
+0xB2DE	0x7FCE	# <CJK>
+0xB2DF	0x7FD2	# <CJK>
+0xB2E0	0x801C	# <CJK>
+0xB2E1	0x804A	# <CJK>
+0xB2E2	0x8046	# <CJK>
+0xB2E3	0x812F	# <CJK>
+0xB2E4	0x8116	# <CJK>
+0xB2E5	0x8123	# <CJK>
+0xB2E6	0x812B	# <CJK>
+0xB2E7	0x8129	# <CJK>
+0xB2E8	0x8130	# <CJK>
+0xB2E9	0x8124	# <CJK>
+0xB2EA	0x8202	# <CJK>
+0xB2EB	0x8235	# <CJK>
+0xB2EC	0x8237	# <CJK>
+0xB2ED	0x8236	# <CJK>
+0xB2EE	0x8239	# <CJK>
+0xB2EF	0x838E	# <CJK>
+0xB2F0	0x839E	# <CJK>
+0xB2F1	0x8398	# <CJK>
+0xB2F2	0x8378	# <CJK>
+0xB2F3	0x83A2	# <CJK>
+0xB2F4	0x8396	# <CJK>
+0xB2F5	0x83BD	# <CJK>
+0xB2F6	0x83AB	# <CJK>
+0xB2F7	0x8392	# <CJK>
+0xB2F8	0x838A	# <CJK>
+0xB2F9	0x8393	# <CJK>
+0xB2FA	0x8389	# <CJK>
+0xB2FB	0x83A0	# <CJK>
+0xB2FC	0x8377	# <CJK>
+0xB2FD	0x837B	# <CJK>
+0xB2FE	0x837C	# <CJK>
+0xB340	0x8386	# <CJK>
+0xB341	0x83A7	# <CJK>
+0xB342	0x8655	# <CJK>
+0xB343	0x5F6A	# <CJK>
+0xB344	0x86C7	# <CJK>
+0xB345	0x86C0	# <CJK>
+0xB346	0x86B6	# <CJK>
+0xB347	0x86C4	# <CJK>
+0xB348	0x86B5	# <CJK>
+0xB349	0x86C6	# <CJK>
+0xB34A	0x86CB	# <CJK>
+0xB34B	0x86B1	# <CJK>
+0xB34C	0x86AF	# <CJK>
+0xB34D	0x86C9	# <CJK>
+0xB34E	0x8853	# <CJK>
+0xB34F	0x889E	# <CJK>
+0xB350	0x8888	# <CJK>
+0xB351	0x88AB	# <CJK>
+0xB352	0x8892	# <CJK>
+0xB353	0x8896	# <CJK>
+0xB354	0x888D	# <CJK>
+0xB355	0x888B	# <CJK>
+0xB356	0x8993	# <CJK>
+0xB357	0x898F	# <CJK>
+0xB358	0x8A2A	# <CJK>
+0xB359	0x8A1D	# <CJK>
+0xB35A	0x8A23	# <CJK>
+0xB35B	0x8A25	# <CJK>
+0xB35C	0x8A31	# <CJK>
+0xB35D	0x8A2D	# <CJK>
+0xB35E	0x8A1F	# <CJK>
+0xB35F	0x8A1B	# <CJK>
+0xB360	0x8A22	# <CJK>
+0xB361	0x8C49	# <CJK>
+0xB362	0x8C5A	# <CJK>
+0xB363	0x8CA9	# <CJK>
+0xB364	0x8CAC	# <CJK>
+0xB365	0x8CAB	# <CJK>
+0xB366	0x8CA8	# <CJK>
+0xB367	0x8CAA	# <CJK>
+0xB368	0x8CA7	# <CJK>
+0xB369	0x8D67	# <CJK>
+0xB36A	0x8D66	# <CJK>
+0xB36B	0x8DBE	# <CJK>
+0xB36C	0x8DBA	# <CJK>
+0xB36D	0x8EDB	# <CJK>
+0xB36E	0x8EDF	# <CJK>
+0xB36F	0x9019	# <CJK>
+0xB370	0x900D	# <CJK>
+0xB371	0x901A	# <CJK>
+0xB372	0x9017	# <CJK>
+0xB373	0x9023	# <CJK>
+0xB374	0x901F	# <CJK>
+0xB375	0x901D	# <CJK>
+0xB376	0x9010	# <CJK>
+0xB377	0x9015	# <CJK>
+0xB378	0x901E	# <CJK>
+0xB379	0x9020	# <CJK>
+0xB37A	0x900F	# <CJK>
+0xB37B	0x9022	# <CJK>
+0xB37C	0x9016	# <CJK>
+0xB37D	0x901B	# <CJK>
+0xB37E	0x9014	# <CJK>
+0xB3A1	0x90E8	# <CJK>
+0xB3A2	0x90ED	# <CJK>
+0xB3A3	0x90FD	# <CJK>
+0xB3A4	0x9157	# <CJK>
+0xB3A5	0x91CE	# <CJK>
+0xB3A6	0x91F5	# <CJK>
+0xB3A7	0x91E6	# <CJK>
+0xB3A8	0x91E3	# <CJK>
+0xB3A9	0x91E7	# <CJK>
+0xB3AA	0x91ED	# <CJK>
+0xB3AB	0x91E9	# <CJK>
+0xB3AC	0x9589	# <CJK>
+0xB3AD	0x966A	# <CJK>
+0xB3AE	0x9675	# <CJK>
+0xB3AF	0x9673	# <CJK>
+0xB3B0	0x9678	# <CJK>
+0xB3B1	0x9670	# <CJK>
+0xB3B2	0x9674	# <CJK>
+0xB3B3	0x9676	# <CJK>
+0xB3B4	0x9677	# <CJK>
+0xB3B5	0x966C	# <CJK>
+0xB3B6	0x96C0	# <CJK>
+0xB3B7	0x96EA	# <CJK>
+0xB3B8	0x96E9	# <CJK>
+0xB3B9	0x7AE0	# <CJK>
+0xB3BA	0x7ADF	# <CJK>
+0xB3BB	0x9802	# <CJK>
+0xB3BC	0x9803	# <CJK>
+0xB3BD	0x9B5A	# <CJK>
+0xB3BE	0x9CE5	# <CJK>
+0xB3BF	0x9E75	# <CJK>
+0xB3C0	0x9E7F	# <CJK>
+0xB3C1	0x9EA5	# <CJK>
+0xB3C2	0x9EBB	# <CJK>
+0xB3C3	0x50A2	# <CJK>
+0xB3C4	0x508D	# <CJK>
+0xB3C5	0x5085	# <CJK>
+0xB3C6	0x5099	# <CJK>
+0xB3C7	0x5091	# <CJK>
+0xB3C8	0x5080	# <CJK>
+0xB3C9	0x5096	# <CJK>
+0xB3CA	0x5098	# <CJK>
+0xB3CB	0x509A	# <CJK>
+0xB3CC	0x6700	# <CJK>
+0xB3CD	0x51F1	# <CJK>
+0xB3CE	0x5272	# <CJK>
+0xB3CF	0x5274	# <CJK>
+0xB3D0	0x5275	# <CJK>
+0xB3D1	0x5269	# <CJK>
+0xB3D2	0x52DE	# <CJK>
+0xB3D3	0x52DD	# <CJK>
+0xB3D4	0x52DB	# <CJK>
+0xB3D5	0x535A	# <CJK>
+0xB3D6	0x53A5	# <CJK>
+0xB3D7	0x557B	# <CJK>
+0xB3D8	0x5580	# <CJK>
+0xB3D9	0x55A7	# <CJK>
+0xB3DA	0x557C	# <CJK>
+0xB3DB	0x558A	# <CJK>
+0xB3DC	0x559D	# <CJK>
+0xB3DD	0x5598	# <CJK>
+0xB3DE	0x5582	# <CJK>
+0xB3DF	0x559C	# <CJK>
+0xB3E0	0x55AA	# <CJK>
+0xB3E1	0x5594	# <CJK>
+0xB3E2	0x5587	# <CJK>
+0xB3E3	0x558B	# <CJK>
+0xB3E4	0x5583	# <CJK>
+0xB3E5	0x55B3	# <CJK>
+0xB3E6	0x55AE	# <CJK>
+0xB3E7	0x559F	# <CJK>
+0xB3E8	0x553E	# <CJK>
+0xB3E9	0x55B2	# <CJK>
+0xB3EA	0x559A	# <CJK>
+0xB3EB	0x55BB	# <CJK>
+0xB3EC	0x55AC	# <CJK>
+0xB3ED	0x55B1	# <CJK>
+0xB3EE	0x557E	# <CJK>
+0xB3EF	0x5589	# <CJK>
+0xB3F0	0x55AB	# <CJK>
+0xB3F1	0x5599	# <CJK>
+0xB3F2	0x570D	# <CJK>
+0xB3F3	0x582F	# <CJK>
+0xB3F4	0x582A	# <CJK>
+0xB3F5	0x5834	# <CJK>
+0xB3F6	0x5824	# <CJK>
+0xB3F7	0x5830	# <CJK>
+0xB3F8	0x5831	# <CJK>
+0xB3F9	0x5821	# <CJK>
+0xB3FA	0x581D	# <CJK>
+0xB3FB	0x5820	# <CJK>
+0xB3FC	0x58F9	# <CJK>
+0xB3FD	0x58FA	# <CJK>
+0xB3FE	0x5960	# <CJK>
+0xB440	0x5A77	# <CJK>
+0xB441	0x5A9A	# <CJK>
+0xB442	0x5A7F	# <CJK>
+0xB443	0x5A92	# <CJK>
+0xB444	0x5A9B	# <CJK>
+0xB445	0x5AA7	# <CJK>
+0xB446	0x5B73	# <CJK>
+0xB447	0x5B71	# <CJK>
+0xB448	0x5BD2	# <CJK>
+0xB449	0x5BCC	# <CJK>
+0xB44A	0x5BD3	# <CJK>
+0xB44B	0x5BD0	# <CJK>
+0xB44C	0x5C0A	# <CJK>
+0xB44D	0x5C0B	# <CJK>
+0xB44E	0x5C31	# <CJK>
+0xB44F	0x5D4C	# <CJK>
+0xB450	0x5D50	# <CJK>
+0xB451	0x5D34	# <CJK>
+0xB452	0x5D47	# <CJK>
+0xB453	0x5DFD	# <CJK>
+0xB454	0x5E45	# <CJK>
+0xB455	0x5E3D	# <CJK>
+0xB456	0x5E40	# <CJK>
+0xB457	0x5E43	# <CJK>
+0xB458	0x5E7E	# <CJK>
+0xB459	0x5ECA	# <CJK>
+0xB45A	0x5EC1	# <CJK>
+0xB45B	0x5EC2	# <CJK>
+0xB45C	0x5EC4	# <CJK>
+0xB45D	0x5F3C	# <CJK>
+0xB45E	0x5F6D	# <CJK>
+0xB45F	0x5FA9	# <CJK>
+0xB460	0x5FAA	# <CJK>
+0xB461	0x5FA8	# <CJK>
+0xB462	0x60D1	# <CJK>
+0xB463	0x60E1	# <CJK>
+0xB464	0x60B2	# <CJK>
+0xB465	0x60B6	# <CJK>
+0xB466	0x60E0	# <CJK>
+0xB467	0x611C	# <CJK>
+0xB468	0x6123	# <CJK>
+0xB469	0x60FA	# <CJK>
+0xB46A	0x6115	# <CJK>
+0xB46B	0x60F0	# <CJK>
+0xB46C	0x60FB	# <CJK>
+0xB46D	0x60F4	# <CJK>
+0xB46E	0x6168	# <CJK>
+0xB46F	0x60F1	# <CJK>
+0xB470	0x610E	# <CJK>
+0xB471	0x60F6	# <CJK>
+0xB472	0x6109	# <CJK>
+0xB473	0x6100	# <CJK>
+0xB474	0x6112	# <CJK>
+0xB475	0x621F	# <CJK>
+0xB476	0x6249	# <CJK>
+0xB477	0x63A3	# <CJK>
+0xB478	0x638C	# <CJK>
+0xB479	0x63CF	# <CJK>
+0xB47A	0x63C0	# <CJK>
+0xB47B	0x63E9	# <CJK>
+0xB47C	0x63C9	# <CJK>
+0xB47D	0x63C6	# <CJK>
+0xB47E	0x63CD	# <CJK>
+0xB4A1	0x63D2	# <CJK>
+0xB4A2	0x63E3	# <CJK>
+0xB4A3	0x63D0	# <CJK>
+0xB4A4	0x63E1	# <CJK>
+0xB4A5	0x63D6	# <CJK>
+0xB4A6	0x63ED	# <CJK>
+0xB4A7	0x63EE	# <CJK>
+0xB4A8	0x6376	# <CJK>
+0xB4A9	0x63F4	# <CJK>
+0xB4AA	0x63EA	# <CJK>
+0xB4AB	0x63DB	# <CJK>
+0xB4AC	0x6452	# <CJK>
+0xB4AD	0x63DA	# <CJK>
+0xB4AE	0x63F9	# <CJK>
+0xB4AF	0x655E	# <CJK>
+0xB4B0	0x6566	# <CJK>
+0xB4B1	0x6562	# <CJK>
+0xB4B2	0x6563	# <CJK>
+0xB4B3	0x6591	# <CJK>
+0xB4B4	0x6590	# <CJK>
+0xB4B5	0x65AF	# <CJK>
+0xB4B6	0x666E	# <CJK>
+0xB4B7	0x6670	# <CJK>
+0xB4B8	0x6674	# <CJK>
+0xB4B9	0x6676	# <CJK>
+0xB4BA	0x666F	# <CJK>
+0xB4BB	0x6691	# <CJK>
+0xB4BC	0x667A	# <CJK>
+0xB4BD	0x667E	# <CJK>
+0xB4BE	0x6677	# <CJK>
+0xB4BF	0x66FE	# <CJK>
+0xB4C0	0x66FF	# <CJK>
+0xB4C1	0x671F	# <CJK>
+0xB4C2	0x671D	# <CJK>
+0xB4C3	0x68FA	# <CJK>
+0xB4C4	0x68D5	# <CJK>
+0xB4C5	0x68E0	# <CJK>
+0xB4C6	0x68D8	# <CJK>
+0xB4C7	0x68D7	# <CJK>
+0xB4C8	0x6905	# <CJK>
+0xB4C9	0x68DF	# <CJK>
+0xB4CA	0x68F5	# <CJK>
+0xB4CB	0x68EE	# <CJK>
+0xB4CC	0x68E7	# <CJK>
+0xB4CD	0x68F9	# <CJK>
+0xB4CE	0x68D2	# <CJK>
+0xB4CF	0x68F2	# <CJK>
+0xB4D0	0x68E3	# <CJK>
+0xB4D1	0x68CB	# <CJK>
+0xB4D2	0x68CD	# <CJK>
+0xB4D3	0x690D	# <CJK>
+0xB4D4	0x6912	# <CJK>
+0xB4D5	0x690E	# <CJK>
+0xB4D6	0x68C9	# <CJK>
+0xB4D7	0x68DA	# <CJK>
+0xB4D8	0x696E	# <CJK>
+0xB4D9	0x68FB	# <CJK>
+0xB4DA	0x6B3E	# <CJK>
+0xB4DB	0x6B3A	# <CJK>
+0xB4DC	0x6B3D	# <CJK>
+0xB4DD	0x6B98	# <CJK>
+0xB4DE	0x6B96	# <CJK>
+0xB4DF	0x6BBC	# <CJK>
+0xB4E0	0x6BEF	# <CJK>
+0xB4E1	0x6C2E	# <CJK>
+0xB4E2	0x6C2F	# <CJK>
+0xB4E3	0x6C2C	# <CJK>
+0xB4E4	0x6E2F	# <CJK>
+0xB4E5	0x6E38	# <CJK>
+0xB4E6	0x6E54	# <CJK>
+0xB4E7	0x6E21	# <CJK>
+0xB4E8	0x6E32	# <CJK>
+0xB4E9	0x6E67	# <CJK>
+0xB4EA	0x6E4A	# <CJK>
+0xB4EB	0x6E20	# <CJK>
+0xB4EC	0x6E25	# <CJK>
+0xB4ED	0x6E23	# <CJK>
+0xB4EE	0x6E1B	# <CJK>
+0xB4EF	0x6E5B	# <CJK>
+0xB4F0	0x6E58	# <CJK>
+0xB4F1	0x6E24	# <CJK>
+0xB4F2	0x6E56	# <CJK>
+0xB4F3	0x6E6E	# <CJK>
+0xB4F4	0x6E2D	# <CJK>
+0xB4F5	0x6E26	# <CJK>
+0xB4F6	0x6E6F	# <CJK>
+0xB4F7	0x6E34	# <CJK>
+0xB4F8	0x6E4D	# <CJK>
+0xB4F9	0x6E3A	# <CJK>
+0xB4FA	0x6E2C	# <CJK>
+0xB4FB	0x6E43	# <CJK>
+0xB4FC	0x6E1D	# <CJK>
+0xB4FD	0x6E3E	# <CJK>
+0xB4FE	0x6ECB	# <CJK>
+0xB540	0x6E89	# <CJK>
+0xB541	0x6E19	# <CJK>
+0xB542	0x6E4E	# <CJK>
+0xB543	0x6E63	# <CJK>
+0xB544	0x6E44	# <CJK>
+0xB545	0x6E72	# <CJK>
+0xB546	0x6E69	# <CJK>
+0xB547	0x6E5F	# <CJK>
+0xB548	0x7119	# <CJK>
+0xB549	0x711A	# <CJK>
+0xB54A	0x7126	# <CJK>
+0xB54B	0x7130	# <CJK>
+0xB54C	0x7121	# <CJK>
+0xB54D	0x7136	# <CJK>
+0xB54E	0x716E	# <CJK>
+0xB54F	0x711C	# <CJK>
+0xB550	0x724C	# <CJK>
+0xB551	0x7284	# <CJK>
+0xB552	0x7280	# <CJK>
+0xB553	0x7336	# <CJK>
+0xB554	0x7325	# <CJK>
+0xB555	0x7334	# <CJK>
+0xB556	0x7329	# <CJK>
+0xB557	0x743A	# <CJK>
+0xB558	0x742A	# <CJK>
+0xB559	0x7433	# <CJK>
+0xB55A	0x7422	# <CJK>
+0xB55B	0x7425	# <CJK>
+0xB55C	0x7435	# <CJK>
+0xB55D	0x7436	# <CJK>
+0xB55E	0x7434	# <CJK>
+0xB55F	0x742F	# <CJK>
+0xB560	0x741B	# <CJK>
+0xB561	0x7426	# <CJK>
+0xB562	0x7428	# <CJK>
+0xB563	0x7525	# <CJK>
+0xB564	0x7526	# <CJK>
+0xB565	0x756B	# <CJK>
+0xB566	0x756A	# <CJK>
+0xB567	0x75E2	# <CJK>
+0xB568	0x75DB	# <CJK>
+0xB569	0x75E3	# <CJK>
+0xB56A	0x75D9	# <CJK>
+0xB56B	0x75D8	# <CJK>
+0xB56C	0x75DE	# <CJK>
+0xB56D	0x75E0	# <CJK>
+0xB56E	0x767B	# <CJK>
+0xB56F	0x767C	# <CJK>
+0xB570	0x7696	# <CJK>
+0xB571	0x7693	# <CJK>
+0xB572	0x76B4	# <CJK>
+0xB573	0x76DC	# <CJK>
+0xB574	0x774F	# <CJK>
+0xB575	0x77ED	# <CJK>
+0xB576	0x785D	# <CJK>
+0xB577	0x786C	# <CJK>
+0xB578	0x786F	# <CJK>
+0xB579	0x7A0D	# <CJK>
+0xB57A	0x7A08	# <CJK>
+0xB57B	0x7A0B	# <CJK>
+0xB57C	0x7A05	# <CJK>
+0xB57D	0x7A00	# <CJK>
+0xB57E	0x7A98	# <CJK>
+0xB5A1	0x7A97	# <CJK>
+0xB5A2	0x7A96	# <CJK>
+0xB5A3	0x7AE5	# <CJK>
+0xB5A4	0x7AE3	# <CJK>
+0xB5A5	0x7B49	# <CJK>
+0xB5A6	0x7B56	# <CJK>
+0xB5A7	0x7B46	# <CJK>
+0xB5A8	0x7B50	# <CJK>
+0xB5A9	0x7B52	# <CJK>
+0xB5AA	0x7B54	# <CJK>
+0xB5AB	0x7B4D	# <CJK>
+0xB5AC	0x7B4B	# <CJK>
+0xB5AD	0x7B4F	# <CJK>
+0xB5AE	0x7B51	# <CJK>
+0xB5AF	0x7C9F	# <CJK>
+0xB5B0	0x7CA5	# <CJK>
+0xB5B1	0x7D5E	# <CJK>
+0xB5B2	0x7D50	# <CJK>
+0xB5B3	0x7D68	# <CJK>
+0xB5B4	0x7D55	# <CJK>
+0xB5B5	0x7D2B	# <CJK>
+0xB5B6	0x7D6E	# <CJK>
+0xB5B7	0x7D72	# <CJK>
+0xB5B8	0x7D61	# <CJK>
+0xB5B9	0x7D66	# <CJK>
+0xB5BA	0x7D62	# <CJK>
+0xB5BB	0x7D70	# <CJK>
+0xB5BC	0x7D73	# <CJK>
+0xB5BD	0x5584	# <CJK>
+0xB5BE	0x7FD4	# <CJK>
+0xB5BF	0x7FD5	# <CJK>
+0xB5C0	0x800B	# <CJK>
+0xB5C1	0x8052	# <CJK>
+0xB5C2	0x8085	# <CJK>
+0xB5C3	0x8155	# <CJK>
+0xB5C4	0x8154	# <CJK>
+0xB5C5	0x814B	# <CJK>
+0xB5C6	0x8151	# <CJK>
+0xB5C7	0x814E	# <CJK>
+0xB5C8	0x8139	# <CJK>
+0xB5C9	0x8146	# <CJK>
+0xB5CA	0x813E	# <CJK>
+0xB5CB	0x814C	# <CJK>
+0xB5CC	0x8153	# <CJK>
+0xB5CD	0x8174	# <CJK>
+0xB5CE	0x8212	# <CJK>
+0xB5CF	0x821C	# <CJK>
+0xB5D0	0x83E9	# <CJK>
+0xB5D1	0x8403	# <CJK>
+0xB5D2	0x83F8	# <CJK>
+0xB5D3	0x840D	# <CJK>
+0xB5D4	0x83E0	# <CJK>
+0xB5D5	0x83C5	# <CJK>
+0xB5D6	0x840B	# <CJK>
+0xB5D7	0x83C1	# <CJK>
+0xB5D8	0x83EF	# <CJK>
+0xB5D9	0x83F1	# <CJK>
+0xB5DA	0x83F4	# <CJK>
+0xB5DB	0x8457	# <CJK>
+0xB5DC	0x840A	# <CJK>
+0xB5DD	0x83F0	# <CJK>
+0xB5DE	0x840C	# <CJK>
+0xB5DF	0x83CC	# <CJK>
+0xB5E0	0x83FD	# <CJK>
+0xB5E1	0x83F2	# <CJK>
+0xB5E2	0x83CA	# <CJK>
+0xB5E3	0x8438	# <CJK>
+0xB5E4	0x840E	# <CJK>
+0xB5E5	0x8404	# <CJK>
+0xB5E6	0x83DC	# <CJK>
+0xB5E7	0x8407	# <CJK>
+0xB5E8	0x83D4	# <CJK>
+0xB5E9	0x83DF	# <CJK>
+0xB5EA	0x865B	# <CJK>
+0xB5EB	0x86DF	# <CJK>
+0xB5EC	0x86D9	# <CJK>
+0xB5ED	0x86ED	# <CJK>
+0xB5EE	0x86D4	# <CJK>
+0xB5EF	0x86DB	# <CJK>
+0xB5F0	0x86E4	# <CJK>
+0xB5F1	0x86D0	# <CJK>
+0xB5F2	0x86DE	# <CJK>
+0xB5F3	0x8857	# <CJK>
+0xB5F4	0x88C1	# <CJK>
+0xB5F5	0x88C2	# <CJK>
+0xB5F6	0x88B1	# <CJK>
+0xB5F7	0x8983	# <CJK>
+0xB5F8	0x8996	# <CJK>
+0xB5F9	0x8A3B	# <CJK>
+0xB5FA	0x8A60	# <CJK>
+0xB5FB	0x8A55	# <CJK>
+0xB5FC	0x8A5E	# <CJK>
+0xB5FD	0x8A3C	# <CJK>
+0xB5FE	0x8A41	# <CJK>
+0xB640	0x8A54	# <CJK>
+0xB641	0x8A5B	# <CJK>
+0xB642	0x8A50	# <CJK>
+0xB643	0x8A46	# <CJK>
+0xB644	0x8A34	# <CJK>
+0xB645	0x8A3A	# <CJK>
+0xB646	0x8A36	# <CJK>
+0xB647	0x8A56	# <CJK>
+0xB648	0x8C61	# <CJK>
+0xB649	0x8C82	# <CJK>
+0xB64A	0x8CAF	# <CJK>
+0xB64B	0x8CBC	# <CJK>
+0xB64C	0x8CB3	# <CJK>
+0xB64D	0x8CBD	# <CJK>
+0xB64E	0x8CC1	# <CJK>
+0xB64F	0x8CBB	# <CJK>
+0xB650	0x8CC0	# <CJK>
+0xB651	0x8CB4	# <CJK>
+0xB652	0x8CB7	# <CJK>
+0xB653	0x8CB6	# <CJK>
+0xB654	0x8CBF	# <CJK>
+0xB655	0x8CB8	# <CJK>
+0xB656	0x8D8A	# <CJK>
+0xB657	0x8D85	# <CJK>
+0xB658	0x8D81	# <CJK>
+0xB659	0x8DCE	# <CJK>
+0xB65A	0x8DDD	# <CJK>
+0xB65B	0x8DCB	# <CJK>
+0xB65C	0x8DDA	# <CJK>
+0xB65D	0x8DD1	# <CJK>
+0xB65E	0x8DCC	# <CJK>
+0xB65F	0x8DDB	# <CJK>
+0xB660	0x8DC6	# <CJK>
+0xB661	0x8EFB	# <CJK>
+0xB662	0x8EF8	# <CJK>
+0xB663	0x8EFC	# <CJK>
+0xB664	0x8F9C	# <CJK>
+0xB665	0x902E	# <CJK>
+0xB666	0x9035	# <CJK>
+0xB667	0x9031	# <CJK>
+0xB668	0x9038	# <CJK>
+0xB669	0x9032	# <CJK>
+0xB66A	0x9036	# <CJK>
+0xB66B	0x9102	# <CJK>
+0xB66C	0x90F5	# <CJK>
+0xB66D	0x9109	# <CJK>
+0xB66E	0x90FE	# <CJK>
+0xB66F	0x9163	# <CJK>
+0xB670	0x9165	# <CJK>
+0xB671	0x91CF	# <CJK>
+0xB672	0x9214	# <CJK>
+0xB673	0x9215	# <CJK>
+0xB674	0x9223	# <CJK>
+0xB675	0x9209	# <CJK>
+0xB676	0x921E	# <CJK>
+0xB677	0x920D	# <CJK>
+0xB678	0x9210	# <CJK>
+0xB679	0x9207	# <CJK>
+0xB67A	0x9211	# <CJK>
+0xB67B	0x9594	# <CJK>
+0xB67C	0x958F	# <CJK>
+0xB67D	0x958B	# <CJK>
+0xB67E	0x9591	# <CJK>
+0xB6A1	0x9593	# <CJK>
+0xB6A2	0x9592	# <CJK>
+0xB6A3	0x958E	# <CJK>
+0xB6A4	0x968A	# <CJK>
+0xB6A5	0x968E	# <CJK>
+0xB6A6	0x968B	# <CJK>
+0xB6A7	0x967D	# <CJK>
+0xB6A8	0x9685	# <CJK>
+0xB6A9	0x9686	# <CJK>
+0xB6AA	0x968D	# <CJK>
+0xB6AB	0x9672	# <CJK>
+0xB6AC	0x9684	# <CJK>
+0xB6AD	0x96C1	# <CJK>
+0xB6AE	0x96C5	# <CJK>
+0xB6AF	0x96C4	# <CJK>
+0xB6B0	0x96C6	# <CJK>
+0xB6B1	0x96C7	# <CJK>
+0xB6B2	0x96EF	# <CJK>
+0xB6B3	0x96F2	# <CJK>
+0xB6B4	0x97CC	# <CJK>
+0xB6B5	0x9805	# <CJK>
+0xB6B6	0x9806	# <CJK>
+0xB6B7	0x9808	# <CJK>
+0xB6B8	0x98E7	# <CJK>
+0xB6B9	0x98EA	# <CJK>
+0xB6BA	0x98EF	# <CJK>
+0xB6BB	0x98E9	# <CJK>
+0xB6BC	0x98F2	# <CJK>
+0xB6BD	0x98ED	# <CJK>
+0xB6BE	0x99AE	# <CJK>
+0xB6BF	0x99AD	# <CJK>
+0xB6C0	0x9EC3	# <CJK>
+0xB6C1	0x9ECD	# <CJK>
+0xB6C2	0x9ED1	# <CJK>
+0xB6C3	0x4E82	# <CJK>
+0xB6C4	0x50AD	# <CJK>
+0xB6C5	0x50B5	# <CJK>
+0xB6C6	0x50B2	# <CJK>
+0xB6C7	0x50B3	# <CJK>
+0xB6C8	0x50C5	# <CJK>
+0xB6C9	0x50BE	# <CJK>
+0xB6CA	0x50AC	# <CJK>
+0xB6CB	0x50B7	# <CJK>
+0xB6CC	0x50BB	# <CJK>
+0xB6CD	0x50AF	# <CJK>
+0xB6CE	0x50C7	# <CJK>
+0xB6CF	0x527F	# <CJK>
+0xB6D0	0x5277	# <CJK>
+0xB6D1	0x527D	# <CJK>
+0xB6D2	0x52DF	# <CJK>
+0xB6D3	0x52E6	# <CJK>
+0xB6D4	0x52E4	# <CJK>
+0xB6D5	0x52E2	# <CJK>
+0xB6D6	0x52E3	# <CJK>
+0xB6D7	0x532F	# <CJK>
+0xB6D8	0x55DF	# <CJK>
+0xB6D9	0x55E8	# <CJK>
+0xB6DA	0x55D3	# <CJK>
+0xB6DB	0x55E6	# <CJK>
+0xB6DC	0x55CE	# <CJK>
+0xB6DD	0x55DC	# <CJK>
+0xB6DE	0x55C7	# <CJK>
+0xB6DF	0x55D1	# <CJK>
+0xB6E0	0x55E3	# <CJK>
+0xB6E1	0x55E4	# <CJK>
+0xB6E2	0x55EF	# <CJK>
+0xB6E3	0x55DA	# <CJK>
+0xB6E4	0x55E1	# <CJK>
+0xB6E5	0x55C5	# <CJK>
+0xB6E6	0x55C6	# <CJK>
+0xB6E7	0x55E5	# <CJK>
+0xB6E8	0x55C9	# <CJK>
+0xB6E9	0x5712	# <CJK>
+0xB6EA	0x5713	# <CJK>
+0xB6EB	0x585E	# <CJK>
+0xB6EC	0x5851	# <CJK>
+0xB6ED	0x5858	# <CJK>
+0xB6EE	0x5857	# <CJK>
+0xB6EF	0x585A	# <CJK>
+0xB6F0	0x5854	# <CJK>
+0xB6F1	0x586B	# <CJK>
+0xB6F2	0x584C	# <CJK>
+0xB6F3	0x586D	# <CJK>
+0xB6F4	0x584A	# <CJK>
+0xB6F5	0x5862	# <CJK>
+0xB6F6	0x5852	# <CJK>
+0xB6F7	0x584B	# <CJK>
+0xB6F8	0x5967	# <CJK>
+0xB6F9	0x5AC1	# <CJK>
+0xB6FA	0x5AC9	# <CJK>
+0xB6FB	0x5ACC	# <CJK>
+0xB6FC	0x5ABE	# <CJK>
+0xB6FD	0x5ABD	# <CJK>
+0xB6FE	0x5ABC	# <CJK>
+0xB740	0x5AB3	# <CJK>
+0xB741	0x5AC2	# <CJK>
+0xB742	0x5AB2	# <CJK>
+0xB743	0x5D69	# <CJK>
+0xB744	0x5D6F	# <CJK>
+0xB745	0x5E4C	# <CJK>
+0xB746	0x5E79	# <CJK>
+0xB747	0x5EC9	# <CJK>
+0xB748	0x5EC8	# <CJK>
+0xB749	0x5F12	# <CJK>
+0xB74A	0x5F59	# <CJK>
+0xB74B	0x5FAC	# <CJK>
+0xB74C	0x5FAE	# <CJK>
+0xB74D	0x611A	# <CJK>
+0xB74E	0x610F	# <CJK>
+0xB74F	0x6148	# <CJK>
+0xB750	0x611F	# <CJK>
+0xB751	0x60F3	# <CJK>
+0xB752	0x611B	# <CJK>
+0xB753	0x60F9	# <CJK>
+0xB754	0x6101	# <CJK>
+0xB755	0x6108	# <CJK>
+0xB756	0x614E	# <CJK>
+0xB757	0x614C	# <CJK>
+0xB758	0x6144	# <CJK>
+0xB759	0x614D	# <CJK>
+0xB75A	0x613E	# <CJK>
+0xB75B	0x6134	# <CJK>
+0xB75C	0x6127	# <CJK>
+0xB75D	0x610D	# <CJK>
+0xB75E	0x6106	# <CJK>
+0xB75F	0x6137	# <CJK>
+0xB760	0x6221	# <CJK>
+0xB761	0x6222	# <CJK>
+0xB762	0x6413	# <CJK>
+0xB763	0x643E	# <CJK>
+0xB764	0x641E	# <CJK>
+0xB765	0x642A	# <CJK>
+0xB766	0x642D	# <CJK>
+0xB767	0x643D	# <CJK>
+0xB768	0x642C	# <CJK>
+0xB769	0x640F	# <CJK>
+0xB76A	0x641C	# <CJK>
+0xB76B	0x6414	# <CJK>
+0xB76C	0x640D	# <CJK>
+0xB76D	0x6436	# <CJK>
+0xB76E	0x6416	# <CJK>
+0xB76F	0x6417	# <CJK>
+0xB770	0x6406	# <CJK>
+0xB771	0x656C	# <CJK>
+0xB772	0x659F	# <CJK>
+0xB773	0x65B0	# <CJK>
+0xB774	0x6697	# <CJK>
+0xB775	0x6689	# <CJK>
+0xB776	0x6687	# <CJK>
+0xB777	0x6688	# <CJK>
+0xB778	0x6696	# <CJK>
+0xB779	0x6684	# <CJK>
+0xB77A	0x6698	# <CJK>
+0xB77B	0x668D	# <CJK>
+0xB77C	0x6703	# <CJK>
+0xB77D	0x6994	# <CJK>
+0xB77E	0x696D	# <CJK>
+0xB7A1	0x695A	# <CJK>
+0xB7A2	0x6977	# <CJK>
+0xB7A3	0x6960	# <CJK>
+0xB7A4	0x6954	# <CJK>
+0xB7A5	0x6975	# <CJK>
+0xB7A6	0x6930	# <CJK>
+0xB7A7	0x6982	# <CJK>
+0xB7A8	0x694A	# <CJK>
+0xB7A9	0x6968	# <CJK>
+0xB7AA	0x696B	# <CJK>
+0xB7AB	0x695E	# <CJK>
+0xB7AC	0x6953	# <CJK>
+0xB7AD	0x6979	# <CJK>
+0xB7AE	0x6986	# <CJK>
+0xB7AF	0x695D	# <CJK>
+0xB7B0	0x6963	# <CJK>
+0xB7B1	0x695B	# <CJK>
+0xB7B2	0x6B47	# <CJK>
+0xB7B3	0x6B72	# <CJK>
+0xB7B4	0x6BC0	# <CJK>
+0xB7B5	0x6BBF	# <CJK>
+0xB7B6	0x6BD3	# <CJK>
+0xB7B7	0x6BFD	# <CJK>
+0xB7B8	0x6EA2	# <CJK>
+0xB7B9	0x6EAF	# <CJK>
+0xB7BA	0x6ED3	# <CJK>
+0xB7BB	0x6EB6	# <CJK>
+0xB7BC	0x6EC2	# <CJK>
+0xB7BD	0x6E90	# <CJK>
+0xB7BE	0x6E9D	# <CJK>
+0xB7BF	0x6EC7	# <CJK>
+0xB7C0	0x6EC5	# <CJK>
+0xB7C1	0x6EA5	# <CJK>
+0xB7C2	0x6E98	# <CJK>
+0xB7C3	0x6EBC	# <CJK>
+0xB7C4	0x6EBA	# <CJK>
+0xB7C5	0x6EAB	# <CJK>
+0xB7C6	0x6ED1	# <CJK>
+0xB7C7	0x6E96	# <CJK>
+0xB7C8	0x6E9C	# <CJK>
+0xB7C9	0x6EC4	# <CJK>
+0xB7CA	0x6ED4	# <CJK>
+0xB7CB	0x6EAA	# <CJK>
+0xB7CC	0x6EA7	# <CJK>
+0xB7CD	0x6EB4	# <CJK>
+0xB7CE	0x714E	# <CJK>
+0xB7CF	0x7159	# <CJK>
+0xB7D0	0x7169	# <CJK>
+0xB7D1	0x7164	# <CJK>
+0xB7D2	0x7149	# <CJK>
+0xB7D3	0x7167	# <CJK>
+0xB7D4	0x715C	# <CJK>
+0xB7D5	0x716C	# <CJK>
+0xB7D6	0x7166	# <CJK>
+0xB7D7	0x714C	# <CJK>
+0xB7D8	0x7165	# <CJK>
+0xB7D9	0x715E	# <CJK>
+0xB7DA	0x7146	# <CJK>
+0xB7DB	0x7168	# <CJK>
+0xB7DC	0x7156	# <CJK>
+0xB7DD	0x723A	# <CJK>
+0xB7DE	0x7252	# <CJK>
+0xB7DF	0x7337	# <CJK>
+0xB7E0	0x7345	# <CJK>
+0xB7E1	0x733F	# <CJK>
+0xB7E2	0x733E	# <CJK>
+0xB7E3	0x746F	# <CJK>
+0xB7E4	0x745A	# <CJK>
+0xB7E5	0x7455	# <CJK>
+0xB7E6	0x745F	# <CJK>
+0xB7E7	0x745E	# <CJK>
+0xB7E8	0x7441	# <CJK>
+0xB7E9	0x743F	# <CJK>
+0xB7EA	0x7459	# <CJK>
+0xB7EB	0x745B	# <CJK>
+0xB7EC	0x745C	# <CJK>
+0xB7ED	0x7576	# <CJK>
+0xB7EE	0x7578	# <CJK>
+0xB7EF	0x7600	# <CJK>
+0xB7F0	0x75F0	# <CJK>
+0xB7F1	0x7601	# <CJK>
+0xB7F2	0x75F2	# <CJK>
+0xB7F3	0x75F1	# <CJK>
+0xB7F4	0x75FA	# <CJK>
+0xB7F5	0x75FF	# <CJK>
+0xB7F6	0x75F4	# <CJK>
+0xB7F7	0x75F3	# <CJK>
+0xB7F8	0x76DE	# <CJK>
+0xB7F9	0x76DF	# <CJK>
+0xB7FA	0x775B	# <CJK>
+0xB7FB	0x776B	# <CJK>
+0xB7FC	0x7766	# <CJK>
+0xB7FD	0x775E	# <CJK>
+0xB7FE	0x7763	# <CJK>
+0xB840	0x7779	# <CJK>
+0xB841	0x776A	# <CJK>
+0xB842	0x776C	# <CJK>
+0xB843	0x775C	# <CJK>
+0xB844	0x7765	# <CJK>
+0xB845	0x7768	# <CJK>
+0xB846	0x7762	# <CJK>
+0xB847	0x77EE	# <CJK>
+0xB848	0x788E	# <CJK>
+0xB849	0x78B0	# <CJK>
+0xB84A	0x7897	# <CJK>
+0xB84B	0x7898	# <CJK>
+0xB84C	0x788C	# <CJK>
+0xB84D	0x7889	# <CJK>
+0xB84E	0x787C	# <CJK>
+0xB84F	0x7891	# <CJK>
+0xB850	0x7893	# <CJK>
+0xB851	0x787F	# <CJK>
+0xB852	0x797A	# <CJK>
+0xB853	0x797F	# <CJK>
+0xB854	0x7981	# <CJK>
+0xB855	0x842C	# <CJK>
+0xB856	0x79BD	# <CJK>
+0xB857	0x7A1C	# <CJK>
+0xB858	0x7A1A	# <CJK>
+0xB859	0x7A20	# <CJK>
+0xB85A	0x7A14	# <CJK>
+0xB85B	0x7A1F	# <CJK>
+0xB85C	0x7A1E	# <CJK>
+0xB85D	0x7A9F	# <CJK>
+0xB85E	0x7AA0	# <CJK>
+0xB85F	0x7B77	# <CJK>
+0xB860	0x7BC0	# <CJK>
+0xB861	0x7B60	# <CJK>
+0xB862	0x7B6E	# <CJK>
+0xB863	0x7B67	# <CJK>
+0xB864	0x7CB1	# <CJK>
+0xB865	0x7CB3	# <CJK>
+0xB866	0x7CB5	# <CJK>
+0xB867	0x7D93	# <CJK>
+0xB868	0x7D79	# <CJK>
+0xB869	0x7D91	# <CJK>
+0xB86A	0x7D81	# <CJK>
+0xB86B	0x7D8F	# <CJK>
+0xB86C	0x7D5B	# <CJK>
+0xB86D	0x7F6E	# <CJK>
+0xB86E	0x7F69	# <CJK>
+0xB86F	0x7F6A	# <CJK>
+0xB870	0x7F72	# <CJK>
+0xB871	0x7FA9	# <CJK>
+0xB872	0x7FA8	# <CJK>
+0xB873	0x7FA4	# <CJK>
+0xB874	0x8056	# <CJK>
+0xB875	0x8058	# <CJK>
+0xB876	0x8086	# <CJK>
+0xB877	0x8084	# <CJK>
+0xB878	0x8171	# <CJK>
+0xB879	0x8170	# <CJK>
+0xB87A	0x8178	# <CJK>
+0xB87B	0x8165	# <CJK>
+0xB87C	0x816E	# <CJK>
+0xB87D	0x8173	# <CJK>
+0xB87E	0x816B	# <CJK>
+0xB8A1	0x8179	# <CJK>
+0xB8A2	0x817A	# <CJK>
+0xB8A3	0x8166	# <CJK>
+0xB8A4	0x8205	# <CJK>
+0xB8A5	0x8247	# <CJK>
+0xB8A6	0x8482	# <CJK>
+0xB8A7	0x8477	# <CJK>
+0xB8A8	0x843D	# <CJK>
+0xB8A9	0x8431	# <CJK>
+0xB8AA	0x8475	# <CJK>
+0xB8AB	0x8466	# <CJK>
+0xB8AC	0x846B	# <CJK>
+0xB8AD	0x8449	# <CJK>
+0xB8AE	0x846C	# <CJK>
+0xB8AF	0x845B	# <CJK>
+0xB8B0	0x843C	# <CJK>
+0xB8B1	0x8435	# <CJK>
+0xB8B2	0x8461	# <CJK>
+0xB8B3	0x8463	# <CJK>
+0xB8B4	0x8469	# <CJK>
+0xB8B5	0x846D	# <CJK>
+0xB8B6	0x8446	# <CJK>
+0xB8B7	0x865E	# <CJK>
+0xB8B8	0x865C	# <CJK>
+0xB8B9	0x865F	# <CJK>
+0xB8BA	0x86F9	# <CJK>
+0xB8BB	0x8713	# <CJK>
+0xB8BC	0x8708	# <CJK>
+0xB8BD	0x8707	# <CJK>
+0xB8BE	0x8700	# <CJK>
+0xB8BF	0x86FE	# <CJK>
+0xB8C0	0x86FB	# <CJK>
+0xB8C1	0x8702	# <CJK>
+0xB8C2	0x8703	# <CJK>
+0xB8C3	0x8706	# <CJK>
+0xB8C4	0x870A	# <CJK>
+0xB8C5	0x8859	# <CJK>
+0xB8C6	0x88DF	# <CJK>
+0xB8C7	0x88D4	# <CJK>
+0xB8C8	0x88D9	# <CJK>
+0xB8C9	0x88DC	# <CJK>
+0xB8CA	0x88D8	# <CJK>
+0xB8CB	0x88DD	# <CJK>
+0xB8CC	0x88E1	# <CJK>
+0xB8CD	0x88CA	# <CJK>
+0xB8CE	0x88D5	# <CJK>
+0xB8CF	0x88D2	# <CJK>
+0xB8D0	0x899C	# <CJK>
+0xB8D1	0x89E3	# <CJK>
+0xB8D2	0x8A6B	# <CJK>
+0xB8D3	0x8A72	# <CJK>
+0xB8D4	0x8A73	# <CJK>
+0xB8D5	0x8A66	# <CJK>
+0xB8D6	0x8A69	# <CJK>
+0xB8D7	0x8A70	# <CJK>
+0xB8D8	0x8A87	# <CJK>
+0xB8D9	0x8A7C	# <CJK>
+0xB8DA	0x8A63	# <CJK>
+0xB8DB	0x8AA0	# <CJK>
+0xB8DC	0x8A71	# <CJK>
+0xB8DD	0x8A85	# <CJK>
+0xB8DE	0x8A6D	# <CJK>
+0xB8DF	0x8A62	# <CJK>
+0xB8E0	0x8A6E	# <CJK>
+0xB8E1	0x8A6C	# <CJK>
+0xB8E2	0x8A79	# <CJK>
+0xB8E3	0x8A7B	# <CJK>
+0xB8E4	0x8A3E	# <CJK>
+0xB8E5	0x8A68	# <CJK>
+0xB8E6	0x8C62	# <CJK>
+0xB8E7	0x8C8A	# <CJK>
+0xB8E8	0x8C89	# <CJK>
+0xB8E9	0x8CCA	# <CJK>
+0xB8EA	0x8CC7	# <CJK>
+0xB8EB	0x8CC8	# <CJK>
+0xB8EC	0x8CC4	# <CJK>
+0xB8ED	0x8CB2	# <CJK>
+0xB8EE	0x8CC3	# <CJK>
+0xB8EF	0x8CC2	# <CJK>
+0xB8F0	0x8CC5	# <CJK>
+0xB8F1	0x8DE1	# <CJK>
+0xB8F2	0x8DDF	# <CJK>
+0xB8F3	0x8DE8	# <CJK>
+0xB8F4	0x8DEF	# <CJK>
+0xB8F5	0x8DF3	# <CJK>
+0xB8F6	0x8DFA	# <CJK>
+0xB8F7	0x8DEA	# <CJK>
+0xB8F8	0x8DE4	# <CJK>
+0xB8F9	0x8DE6	# <CJK>
+0xB8FA	0x8EB2	# <CJK>
+0xB8FB	0x8F03	# <CJK>
+0xB8FC	0x8F09	# <CJK>
+0xB8FD	0x8EFE	# <CJK>
+0xB8FE	0x8F0A	# <CJK>
+0xB940	0x8F9F	# <CJK>
+0xB941	0x8FB2	# <CJK>
+0xB942	0x904B	# <CJK>
+0xB943	0x904A	# <CJK>
+0xB944	0x9053	# <CJK>
+0xB945	0x9042	# <CJK>
+0xB946	0x9054	# <CJK>
+0xB947	0x903C	# <CJK>
+0xB948	0x9055	# <CJK>
+0xB949	0x9050	# <CJK>
+0xB94A	0x9047	# <CJK>
+0xB94B	0x904F	# <CJK>
+0xB94C	0x904E	# <CJK>
+0xB94D	0x904D	# <CJK>
+0xB94E	0x9051	# <CJK>
+0xB94F	0x903E	# <CJK>
+0xB950	0x9041	# <CJK>
+0xB951	0x9112	# <CJK>
+0xB952	0x9117	# <CJK>
+0xB953	0x916C	# <CJK>
+0xB954	0x916A	# <CJK>
+0xB955	0x9169	# <CJK>
+0xB956	0x91C9	# <CJK>
+0xB957	0x9237	# <CJK>
+0xB958	0x9257	# <CJK>
+0xB959	0x9238	# <CJK>
+0xB95A	0x923D	# <CJK>
+0xB95B	0x9240	# <CJK>
+0xB95C	0x923E	# <CJK>
+0xB95D	0x925B	# <CJK>
+0xB95E	0x924B	# <CJK>
+0xB95F	0x9264	# <CJK>
+0xB960	0x9251	# <CJK>
+0xB961	0x9234	# <CJK>
+0xB962	0x9249	# <CJK>
+0xB963	0x924D	# <CJK>
+0xB964	0x9245	# <CJK>
+0xB965	0x9239	# <CJK>
+0xB966	0x923F	# <CJK>
+0xB967	0x925A	# <CJK>
+0xB968	0x9598	# <CJK>
+0xB969	0x9698	# <CJK>
+0xB96A	0x9694	# <CJK>
+0xB96B	0x9695	# <CJK>
+0xB96C	0x96CD	# <CJK>
+0xB96D	0x96CB	# <CJK>
+0xB96E	0x96C9	# <CJK>
+0xB96F	0x96CA	# <CJK>
+0xB970	0x96F7	# <CJK>
+0xB971	0x96FB	# <CJK>
+0xB972	0x96F9	# <CJK>
+0xB973	0x96F6	# <CJK>
+0xB974	0x9756	# <CJK>
+0xB975	0x9774	# <CJK>
+0xB976	0x9776	# <CJK>
+0xB977	0x9810	# <CJK>
+0xB978	0x9811	# <CJK>
+0xB979	0x9813	# <CJK>
+0xB97A	0x980A	# <CJK>
+0xB97B	0x9812	# <CJK>
+0xB97C	0x980C	# <CJK>
+0xB97D	0x98FC	# <CJK>
+0xB97E	0x98F4	# <CJK>
+0xB9A1	0x98FD	# <CJK>
+0xB9A2	0x98FE	# <CJK>
+0xB9A3	0x99B3	# <CJK>
+0xB9A4	0x99B1	# <CJK>
+0xB9A5	0x99B4	# <CJK>
+0xB9A6	0x9AE1	# <CJK>
+0xB9A7	0x9CE9	# <CJK>
+0xB9A8	0x9E82	# <CJK>
+0xB9A9	0x9F0E	# <CJK>
+0xB9AA	0x9F13	# <CJK>
+0xB9AB	0x9F20	# <CJK>
+0xB9AC	0x50E7	# <CJK>
+0xB9AD	0x50EE	# <CJK>
+0xB9AE	0x50E5	# <CJK>
+0xB9AF	0x50D6	# <CJK>
+0xB9B0	0x50ED	# <CJK>
+0xB9B1	0x50DA	# <CJK>
+0xB9B2	0x50D5	# <CJK>
+0xB9B3	0x50CF	# <CJK>
+0xB9B4	0x50D1	# <CJK>
+0xB9B5	0x50F1	# <CJK>
+0xB9B6	0x50CE	# <CJK>
+0xB9B7	0x50E9	# <CJK>
+0xB9B8	0x5162	# <CJK>
+0xB9B9	0x51F3	# <CJK>
+0xB9BA	0x5283	# <CJK>
+0xB9BB	0x5282	# <CJK>
+0xB9BC	0x5331	# <CJK>
+0xB9BD	0x53AD	# <CJK>
+0xB9BE	0x55FE	# <CJK>
+0xB9BF	0x5600	# <CJK>
+0xB9C0	0x561B	# <CJK>
+0xB9C1	0x5617	# <CJK>
+0xB9C2	0x55FD	# <CJK>
+0xB9C3	0x5614	# <CJK>
+0xB9C4	0x5606	# <CJK>
+0xB9C5	0x5609	# <CJK>
+0xB9C6	0x560D	# <CJK>
+0xB9C7	0x560E	# <CJK>
+0xB9C8	0x55F7	# <CJK>
+0xB9C9	0x5616	# <CJK>
+0xB9CA	0x561F	# <CJK>
+0xB9CB	0x5608	# <CJK>
+0xB9CC	0x5610	# <CJK>
+0xB9CD	0x55F6	# <CJK>
+0xB9CE	0x5718	# <CJK>
+0xB9CF	0x5716	# <CJK>
+0xB9D0	0x5875	# <CJK>
+0xB9D1	0x587E	# <CJK>
+0xB9D2	0x5883	# <CJK>
+0xB9D3	0x5893	# <CJK>
+0xB9D4	0x588A	# <CJK>
+0xB9D5	0x5879	# <CJK>
+0xB9D6	0x5885	# <CJK>
+0xB9D7	0x587D	# <CJK>
+0xB9D8	0x58FD	# <CJK>
+0xB9D9	0x5925	# <CJK>
+0xB9DA	0x5922	# <CJK>
+0xB9DB	0x5924	# <CJK>
+0xB9DC	0x596A	# <CJK>
+0xB9DD	0x5969	# <CJK>
+0xB9DE	0x5AE1	# <CJK>
+0xB9DF	0x5AE6	# <CJK>
+0xB9E0	0x5AE9	# <CJK>
+0xB9E1	0x5AD7	# <CJK>
+0xB9E2	0x5AD6	# <CJK>
+0xB9E3	0x5AD8	# <CJK>
+0xB9E4	0x5AE3	# <CJK>
+0xB9E5	0x5B75	# <CJK>
+0xB9E6	0x5BDE	# <CJK>
+0xB9E7	0x5BE7	# <CJK>
+0xB9E8	0x5BE1	# <CJK>
+0xB9E9	0x5BE5	# <CJK>
+0xB9EA	0x5BE6	# <CJK>
+0xB9EB	0x5BE8	# <CJK>
+0xB9EC	0x5BE2	# <CJK>
+0xB9ED	0x5BE4	# <CJK>
+0xB9EE	0x5BDF	# <CJK>
+0xB9EF	0x5C0D	# <CJK>
+0xB9F0	0x5C62	# <CJK>
+0xB9F1	0x5D84	# <CJK>
+0xB9F2	0x5D87	# <CJK>
+0xB9F3	0x5E5B	# <CJK>
+0xB9F4	0x5E63	# <CJK>
+0xB9F5	0x5E55	# <CJK>
+0xB9F6	0x5E57	# <CJK>
+0xB9F7	0x5E54	# <CJK>
+0xB9F8	0x5ED3	# <CJK>
+0xB9F9	0x5ED6	# <CJK>
+0xB9FA	0x5F0A	# <CJK>
+0xB9FB	0x5F46	# <CJK>
+0xB9FC	0x5F70	# <CJK>
+0xB9FD	0x5FB9	# <CJK>
+0xB9FE	0x6147	# <CJK>
+0xBA40	0x613F	# <CJK>
+0xBA41	0x614B	# <CJK>
+0xBA42	0x6177	# <CJK>
+0xBA43	0x6162	# <CJK>
+0xBA44	0x6163	# <CJK>
+0xBA45	0x615F	# <CJK>
+0xBA46	0x615A	# <CJK>
+0xBA47	0x6158	# <CJK>
+0xBA48	0x6175	# <CJK>
+0xBA49	0x622A	# <CJK>
+0xBA4A	0x6487	# <CJK>
+0xBA4B	0x6458	# <CJK>
+0xBA4C	0x6454	# <CJK>
+0xBA4D	0x64A4	# <CJK>
+0xBA4E	0x6478	# <CJK>
+0xBA4F	0x645F	# <CJK>
+0xBA50	0x647A	# <CJK>
+0xBA51	0x6451	# <CJK>
+0xBA52	0x6467	# <CJK>
+0xBA53	0x6434	# <CJK>
+0xBA54	0x646D	# <CJK>
+0xBA55	0x647B	# <CJK>
+0xBA56	0x6572	# <CJK>
+0xBA57	0x65A1	# <CJK>
+0xBA58	0x65D7	# <CJK>
+0xBA59	0x65D6	# <CJK>
+0xBA5A	0x66A2	# <CJK>
+0xBA5B	0x66A8	# <CJK>
+0xBA5C	0x669D	# <CJK>
+0xBA5D	0x699C	# <CJK>
+0xBA5E	0x69A8	# <CJK>
+0xBA5F	0x6995	# <CJK>
+0xBA60	0x69C1	# <CJK>
+0xBA61	0x69AE	# <CJK>
+0xBA62	0x69D3	# <CJK>
+0xBA63	0x69CB	# <CJK>
+0xBA64	0x699B	# <CJK>
+0xBA65	0x69B7	# <CJK>
+0xBA66	0x69BB	# <CJK>
+0xBA67	0x69AB	# <CJK>
+0xBA68	0x69B4	# <CJK>
+0xBA69	0x69D0	# <CJK>
+0xBA6A	0x69CD	# <CJK>
+0xBA6B	0x69AD	# <CJK>
+0xBA6C	0x69CC	# <CJK>
+0xBA6D	0x69A6	# <CJK>
+0xBA6E	0x69C3	# <CJK>
+0xBA6F	0x69A3	# <CJK>
+0xBA70	0x6B49	# <CJK>
+0xBA71	0x6B4C	# <CJK>
+0xBA72	0x6C33	# <CJK>
+0xBA73	0x6F33	# <CJK>
+0xBA74	0x6F14	# <CJK>
+0xBA75	0x6EFE	# <CJK>
+0xBA76	0x6F13	# <CJK>
+0xBA77	0x6EF4	# <CJK>
+0xBA78	0x6F29	# <CJK>
+0xBA79	0x6F3E	# <CJK>
+0xBA7A	0x6F20	# <CJK>
+0xBA7B	0x6F2C	# <CJK>
+0xBA7C	0x6F0F	# <CJK>
+0xBA7D	0x6F02	# <CJK>
+0xBA7E	0x6F22	# <CJK>
+0xBAA1	0x6EFF	# <CJK>
+0xBAA2	0x6EEF	# <CJK>
+0xBAA3	0x6F06	# <CJK>
+0xBAA4	0x6F31	# <CJK>
+0xBAA5	0x6F38	# <CJK>
+0xBAA6	0x6F32	# <CJK>
+0xBAA7	0x6F23	# <CJK>
+0xBAA8	0x6F15	# <CJK>
+0xBAA9	0x6F2B	# <CJK>
+0xBAAA	0x6F2F	# <CJK>
+0xBAAB	0x6F88	# <CJK>
+0xBAAC	0x6F2A	# <CJK>
+0xBAAD	0x6EEC	# <CJK>
+0xBAAE	0x6F01	# <CJK>
+0xBAAF	0x6EF2	# <CJK>
+0xBAB0	0x6ECC	# <CJK>
+0xBAB1	0x6EF7	# <CJK>
+0xBAB2	0x7194	# <CJK>
+0xBAB3	0x7199	# <CJK>
+0xBAB4	0x717D	# <CJK>
+0xBAB5	0x718A	# <CJK>
+0xBAB6	0x7184	# <CJK>
+0xBAB7	0x7192	# <CJK>
+0xBAB8	0x723E	# <CJK>
+0xBAB9	0x7292	# <CJK>
+0xBABA	0x7296	# <CJK>
+0xBABB	0x7344	# <CJK>
+0xBABC	0x7350	# <CJK>
+0xBABD	0x7464	# <CJK>
+0xBABE	0x7463	# <CJK>
+0xBABF	0x746A	# <CJK>
+0xBAC0	0x7470	# <CJK>
+0xBAC1	0x746D	# <CJK>
+0xBAC2	0x7504	# <CJK>
+0xBAC3	0x7591	# <CJK>
+0xBAC4	0x7627	# <CJK>
+0xBAC5	0x760D	# <CJK>
+0xBAC6	0x760B	# <CJK>
+0xBAC7	0x7609	# <CJK>
+0xBAC8	0x7613	# <CJK>
+0xBAC9	0x76E1	# <CJK>
+0xBACA	0x76E3	# <CJK>
+0xBACB	0x7784	# <CJK>
+0xBACC	0x777D	# <CJK>
+0xBACD	0x777F	# <CJK>
+0xBACE	0x7761	# <CJK>
+0xBACF	0x78C1	# <CJK>
+0xBAD0	0x789F	# <CJK>
+0xBAD1	0x78A7	# <CJK>
+0xBAD2	0x78B3	# <CJK>
+0xBAD3	0x78A9	# <CJK>
+0xBAD4	0x78A3	# <CJK>
+0xBAD5	0x798E	# <CJK>
+0xBAD6	0x798F	# <CJK>
+0xBAD7	0x798D	# <CJK>
+0xBAD8	0x7A2E	# <CJK>
+0xBAD9	0x7A31	# <CJK>
+0xBADA	0x7AAA	# <CJK>
+0xBADB	0x7AA9	# <CJK>
+0xBADC	0x7AED	# <CJK>
+0xBADD	0x7AEF	# <CJK>
+0xBADE	0x7BA1	# <CJK>
+0xBADF	0x7B95	# <CJK>
+0xBAE0	0x7B8B	# <CJK>
+0xBAE1	0x7B75	# <CJK>
+0xBAE2	0x7B97	# <CJK>
+0xBAE3	0x7B9D	# <CJK>
+0xBAE4	0x7B94	# <CJK>
+0xBAE5	0x7B8F	# <CJK>
+0xBAE6	0x7BB8	# <CJK>
+0xBAE7	0x7B87	# <CJK>
+0xBAE8	0x7B84	# <CJK>
+0xBAE9	0x7CB9	# <CJK>
+0xBAEA	0x7CBD	# <CJK>
+0xBAEB	0x7CBE	# <CJK>
+0xBAEC	0x7DBB	# <CJK>
+0xBAED	0x7DB0	# <CJK>
+0xBAEE	0x7D9C	# <CJK>
+0xBAEF	0x7DBD	# <CJK>
+0xBAF0	0x7DBE	# <CJK>
+0xBAF1	0x7DA0	# <CJK>
+0xBAF2	0x7DCA	# <CJK>
+0xBAF3	0x7DB4	# <CJK>
+0xBAF4	0x7DB2	# <CJK>
+0xBAF5	0x7DB1	# <CJK>
+0xBAF6	0x7DBA	# <CJK>
+0xBAF7	0x7DA2	# <CJK>
+0xBAF8	0x7DBF	# <CJK>
+0xBAF9	0x7DB5	# <CJK>
+0xBAFA	0x7DB8	# <CJK>
+0xBAFB	0x7DAD	# <CJK>
+0xBAFC	0x7DD2	# <CJK>
+0xBAFD	0x7DC7	# <CJK>
+0xBAFE	0x7DAC	# <CJK>
+0xBB40	0x7F70	# <CJK>
+0xBB41	0x7FE0	# <CJK>
+0xBB42	0x7FE1	# <CJK>
+0xBB43	0x7FDF	# <CJK>
+0xBB44	0x805E	# <CJK>
+0xBB45	0x805A	# <CJK>
+0xBB46	0x8087	# <CJK>
+0xBB47	0x8150	# <CJK>
+0xBB48	0x8180	# <CJK>
+0xBB49	0x818F	# <CJK>
+0xBB4A	0x8188	# <CJK>
+0xBB4B	0x818A	# <CJK>
+0xBB4C	0x817F	# <CJK>
+0xBB4D	0x8182	# <CJK>
+0xBB4E	0x81E7	# <CJK>
+0xBB4F	0x81FA	# <CJK>
+0xBB50	0x8207	# <CJK>
+0xBB51	0x8214	# <CJK>
+0xBB52	0x821E	# <CJK>
+0xBB53	0x824B	# <CJK>
+0xBB54	0x84C9	# <CJK>
+0xBB55	0x84BF	# <CJK>
+0xBB56	0x84C6	# <CJK>
+0xBB57	0x84C4	# <CJK>
+0xBB58	0x8499	# <CJK>
+0xBB59	0x849E	# <CJK>
+0xBB5A	0x84B2	# <CJK>
+0xBB5B	0x849C	# <CJK>
+0xBB5C	0x84CB	# <CJK>
+0xBB5D	0x84B8	# <CJK>
+0xBB5E	0x84C0	# <CJK>
+0xBB5F	0x84D3	# <CJK>
+0xBB60	0x8490	# <CJK>
+0xBB61	0x84BC	# <CJK>
+0xBB62	0x84D1	# <CJK>
+0xBB63	0x84CA	# <CJK>
+0xBB64	0x873F	# <CJK>
+0xBB65	0x871C	# <CJK>
+0xBB66	0x873B	# <CJK>
+0xBB67	0x8722	# <CJK>
+0xBB68	0x8725	# <CJK>
+0xBB69	0x8734	# <CJK>
+0xBB6A	0x8718	# <CJK>
+0xBB6B	0x8755	# <CJK>
+0xBB6C	0x8737	# <CJK>
+0xBB6D	0x8729	# <CJK>
+0xBB6E	0x88F3	# <CJK>
+0xBB6F	0x8902	# <CJK>
+0xBB70	0x88F4	# <CJK>
+0xBB71	0x88F9	# <CJK>
+0xBB72	0x88F8	# <CJK>
+0xBB73	0x88FD	# <CJK>
+0xBB74	0x88E8	# <CJK>
+0xBB75	0x891A	# <CJK>
+0xBB76	0x88EF	# <CJK>
+0xBB77	0x8AA6	# <CJK>
+0xBB78	0x8A8C	# <CJK>
+0xBB79	0x8A9E	# <CJK>
+0xBB7A	0x8AA3	# <CJK>
+0xBB7B	0x8A8D	# <CJK>
+0xBB7C	0x8AA1	# <CJK>
+0xBB7D	0x8A93	# <CJK>
+0xBB7E	0x8AA4	# <CJK>
+0xBBA1	0x8AAA	# <CJK>
+0xBBA2	0x8AA5	# <CJK>
+0xBBA3	0x8AA8	# <CJK>
+0xBBA4	0x8A98	# <CJK>
+0xBBA5	0x8A91	# <CJK>
+0xBBA6	0x8A9A	# <CJK>
+0xBBA7	0x8AA7	# <CJK>
+0xBBA8	0x8C6A	# <CJK>
+0xBBA9	0x8C8D	# <CJK>
+0xBBAA	0x8C8C	# <CJK>
+0xBBAB	0x8CD3	# <CJK>
+0xBBAC	0x8CD1	# <CJK>
+0xBBAD	0x8CD2	# <CJK>
+0xBBAE	0x8D6B	# <CJK>
+0xBBAF	0x8D99	# <CJK>
+0xBBB0	0x8D95	# <CJK>
+0xBBB1	0x8DFC	# <CJK>
+0xBBB2	0x8F14	# <CJK>
+0xBBB3	0x8F12	# <CJK>
+0xBBB4	0x8F15	# <CJK>
+0xBBB5	0x8F13	# <CJK>
+0xBBB6	0x8FA3	# <CJK>
+0xBBB7	0x9060	# <CJK>
+0xBBB8	0x9058	# <CJK>
+0xBBB9	0x905C	# <CJK>
+0xBBBA	0x9063	# <CJK>
+0xBBBB	0x9059	# <CJK>
+0xBBBC	0x905E	# <CJK>
+0xBBBD	0x9062	# <CJK>
+0xBBBE	0x905D	# <CJK>
+0xBBBF	0x905B	# <CJK>
+0xBBC0	0x9119	# <CJK>
+0xBBC1	0x9118	# <CJK>
+0xBBC2	0x911E	# <CJK>
+0xBBC3	0x9175	# <CJK>
+0xBBC4	0x9178	# <CJK>
+0xBBC5	0x9177	# <CJK>
+0xBBC6	0x9174	# <CJK>
+0xBBC7	0x9278	# <CJK>
+0xBBC8	0x9280	# <CJK>
+0xBBC9	0x9285	# <CJK>
+0xBBCA	0x9298	# <CJK>
+0xBBCB	0x9296	# <CJK>
+0xBBCC	0x927B	# <CJK>
+0xBBCD	0x9293	# <CJK>
+0xBBCE	0x929C	# <CJK>
+0xBBCF	0x92A8	# <CJK>
+0xBBD0	0x927C	# <CJK>
+0xBBD1	0x9291	# <CJK>
+0xBBD2	0x95A1	# <CJK>
+0xBBD3	0x95A8	# <CJK>
+0xBBD4	0x95A9	# <CJK>
+0xBBD5	0x95A3	# <CJK>
+0xBBD6	0x95A5	# <CJK>
+0xBBD7	0x95A4	# <CJK>
+0xBBD8	0x9699	# <CJK>
+0xBBD9	0x969C	# <CJK>
+0xBBDA	0x969B	# <CJK>
+0xBBDB	0x96CC	# <CJK>
+0xBBDC	0x96D2	# <CJK>
+0xBBDD	0x9700	# <CJK>
+0xBBDE	0x977C	# <CJK>
+0xBBDF	0x9785	# <CJK>
+0xBBE0	0x97F6	# <CJK>
+0xBBE1	0x9817	# <CJK>
+0xBBE2	0x9818	# <CJK>
+0xBBE3	0x98AF	# <CJK>
+0xBBE4	0x98B1	# <CJK>
+0xBBE5	0x9903	# <CJK>
+0xBBE6	0x9905	# <CJK>
+0xBBE7	0x990C	# <CJK>
+0xBBE8	0x9909	# <CJK>
+0xBBE9	0x99C1	# <CJK>
+0xBBEA	0x9AAF	# <CJK>
+0xBBEB	0x9AB0	# <CJK>
+0xBBEC	0x9AE6	# <CJK>
+0xBBED	0x9B41	# <CJK>
+0xBBEE	0x9B42	# <CJK>
+0xBBEF	0x9CF4	# <CJK>
+0xBBF0	0x9CF6	# <CJK>
+0xBBF1	0x9CF3	# <CJK>
+0xBBF2	0x9EBC	# <CJK>
+0xBBF3	0x9F3B	# <CJK>
+0xBBF4	0x9F4A	# <CJK>
+0xBBF5	0x5104	# <CJK>
+0xBBF6	0x5100	# <CJK>
+0xBBF7	0x50FB	# <CJK>
+0xBBF8	0x50F5	# <CJK>
+0xBBF9	0x50F9	# <CJK>
+0xBBFA	0x5102	# <CJK>
+0xBBFB	0x5108	# <CJK>
+0xBBFC	0x5109	# <CJK>
+0xBBFD	0x5105	# <CJK>
+0xBBFE	0x51DC	# <CJK>
+0xBC40	0x5287	# <CJK>
+0xBC41	0x5288	# <CJK>
+0xBC42	0x5289	# <CJK>
+0xBC43	0x528D	# <CJK>
+0xBC44	0x528A	# <CJK>
+0xBC45	0x52F0	# <CJK>
+0xBC46	0x53B2	# <CJK>
+0xBC47	0x562E	# <CJK>
+0xBC48	0x563B	# <CJK>
+0xBC49	0x5639	# <CJK>
+0xBC4A	0x5632	# <CJK>
+0xBC4B	0x563F	# <CJK>
+0xBC4C	0x5634	# <CJK>
+0xBC4D	0x5629	# <CJK>
+0xBC4E	0x5653	# <CJK>
+0xBC4F	0x564E	# <CJK>
+0xBC50	0x5657	# <CJK>
+0xBC51	0x5674	# <CJK>
+0xBC52	0x5636	# <CJK>
+0xBC53	0x562F	# <CJK>
+0xBC54	0x5630	# <CJK>
+0xBC55	0x5880	# <CJK>
+0xBC56	0x589F	# <CJK>
+0xBC57	0x589E	# <CJK>
+0xBC58	0x58B3	# <CJK>
+0xBC59	0x589C	# <CJK>
+0xBC5A	0x58AE	# <CJK>
+0xBC5B	0x58A9	# <CJK>
+0xBC5C	0x58A6	# <CJK>
+0xBC5D	0x596D	# <CJK>
+0xBC5E	0x5B09	# <CJK>
+0xBC5F	0x5AFB	# <CJK>
+0xBC60	0x5B0B	# <CJK>
+0xBC61	0x5AF5	# <CJK>
+0xBC62	0x5B0C	# <CJK>
+0xBC63	0x5B08	# <CJK>
+0xBC64	0x5BEE	# <CJK>
+0xBC65	0x5BEC	# <CJK>
+0xBC66	0x5BE9	# <CJK>
+0xBC67	0x5BEB	# <CJK>
+0xBC68	0x5C64	# <CJK>
+0xBC69	0x5C65	# <CJK>
+0xBC6A	0x5D9D	# <CJK>
+0xBC6B	0x5D94	# <CJK>
+0xBC6C	0x5E62	# <CJK>
+0xBC6D	0x5E5F	# <CJK>
+0xBC6E	0x5E61	# <CJK>
+0xBC6F	0x5EE2	# <CJK>
+0xBC70	0x5EDA	# <CJK>
+0xBC71	0x5EDF	# <CJK>
+0xBC72	0x5EDD	# <CJK>
+0xBC73	0x5EE3	# <CJK>
+0xBC74	0x5EE0	# <CJK>
+0xBC75	0x5F48	# <CJK>
+0xBC76	0x5F71	# <CJK>
+0xBC77	0x5FB7	# <CJK>
+0xBC78	0x5FB5	# <CJK>
+0xBC79	0x6176	# <CJK>
+0xBC7A	0x6167	# <CJK>
+0xBC7B	0x616E	# <CJK>
+0xBC7C	0x615D	# <CJK>
+0xBC7D	0x6155	# <CJK>
+0xBC7E	0x6182	# <CJK>
+0xBCA1	0x617C	# <CJK>
+0xBCA2	0x6170	# <CJK>
+0xBCA3	0x616B	# <CJK>
+0xBCA4	0x617E	# <CJK>
+0xBCA5	0x61A7	# <CJK>
+0xBCA6	0x6190	# <CJK>
+0xBCA7	0x61AB	# <CJK>
+0xBCA8	0x618E	# <CJK>
+0xBCA9	0x61AC	# <CJK>
+0xBCAA	0x619A	# <CJK>
+0xBCAB	0x61A4	# <CJK>
+0xBCAC	0x6194	# <CJK>
+0xBCAD	0x61AE	# <CJK>
+0xBCAE	0x622E	# <CJK>
+0xBCAF	0x6469	# <CJK>
+0xBCB0	0x646F	# <CJK>
+0xBCB1	0x6479	# <CJK>
+0xBCB2	0x649E	# <CJK>
+0xBCB3	0x64B2	# <CJK>
+0xBCB4	0x6488	# <CJK>
+0xBCB5	0x6490	# <CJK>
+0xBCB6	0x64B0	# <CJK>
+0xBCB7	0x64A5	# <CJK>
+0xBCB8	0x6493	# <CJK>
+0xBCB9	0x6495	# <CJK>
+0xBCBA	0x64A9	# <CJK>
+0xBCBB	0x6492	# <CJK>
+0xBCBC	0x64AE	# <CJK>
+0xBCBD	0x64AD	# <CJK>
+0xBCBE	0x64AB	# <CJK>
+0xBCBF	0x649A	# <CJK>
+0xBCC0	0x64AC	# <CJK>
+0xBCC1	0x6499	# <CJK>
+0xBCC2	0x64A2	# <CJK>
+0xBCC3	0x64B3	# <CJK>
+0xBCC4	0x6575	# <CJK>
+0xBCC5	0x6577	# <CJK>
+0xBCC6	0x6578	# <CJK>
+0xBCC7	0x66AE	# <CJK>
+0xBCC8	0x66AB	# <CJK>
+0xBCC9	0x66B4	# <CJK>
+0xBCCA	0x66B1	# <CJK>
+0xBCCB	0x6A23	# <CJK>
+0xBCCC	0x6A1F	# <CJK>
+0xBCCD	0x69E8	# <CJK>
+0xBCCE	0x6A01	# <CJK>
+0xBCCF	0x6A1E	# <CJK>
+0xBCD0	0x6A19	# <CJK>
+0xBCD1	0x69FD	# <CJK>
+0xBCD2	0x6A21	# <CJK>
+0xBCD3	0x6A13	# <CJK>
+0xBCD4	0x6A0A	# <CJK>
+0xBCD5	0x69F3	# <CJK>
+0xBCD6	0x6A02	# <CJK>
+0xBCD7	0x6A05	# <CJK>
+0xBCD8	0x69ED	# <CJK>
+0xBCD9	0x6A11	# <CJK>
+0xBCDA	0x6B50	# <CJK>
+0xBCDB	0x6B4E	# <CJK>
+0xBCDC	0x6BA4	# <CJK>
+0xBCDD	0x6BC5	# <CJK>
+0xBCDE	0x6BC6	# <CJK>
+0xBCDF	0x6F3F	# <CJK>
+0xBCE0	0x6F7C	# <CJK>
+0xBCE1	0x6F84	# <CJK>
+0xBCE2	0x6F51	# <CJK>
+0xBCE3	0x6F66	# <CJK>
+0xBCE4	0x6F54	# <CJK>
+0xBCE5	0x6F86	# <CJK>
+0xBCE6	0x6F6D	# <CJK>
+0xBCE7	0x6F5B	# <CJK>
+0xBCE8	0x6F78	# <CJK>
+0xBCE9	0x6F6E	# <CJK>
+0xBCEA	0x6F8E	# <CJK>
+0xBCEB	0x6F7A	# <CJK>
+0xBCEC	0x6F70	# <CJK>
+0xBCED	0x6F64	# <CJK>
+0xBCEE	0x6F97	# <CJK>
+0xBCEF	0x6F58	# <CJK>
+0xBCF0	0x6ED5	# <CJK>
+0xBCF1	0x6F6F	# <CJK>
+0xBCF2	0x6F60	# <CJK>
+0xBCF3	0x6F5F	# <CJK>
+0xBCF4	0x719F	# <CJK>
+0xBCF5	0x71AC	# <CJK>
+0xBCF6	0x71B1	# <CJK>
+0xBCF7	0x71A8	# <CJK>
+0xBCF8	0x7256	# <CJK>
+0xBCF9	0x729B	# <CJK>
+0xBCFA	0x734E	# <CJK>
+0xBCFB	0x7357	# <CJK>
+0xBCFC	0x7469	# <CJK>
+0xBCFD	0x748B	# <CJK>
+0xBCFE	0x7483	# <CJK>
+0xBD40	0x747E	# <CJK>
+0xBD41	0x7480	# <CJK>
+0xBD42	0x757F	# <CJK>
+0xBD43	0x7620	# <CJK>
+0xBD44	0x7629	# <CJK>
+0xBD45	0x761F	# <CJK>
+0xBD46	0x7624	# <CJK>
+0xBD47	0x7626	# <CJK>
+0xBD48	0x7621	# <CJK>
+0xBD49	0x7622	# <CJK>
+0xBD4A	0x769A	# <CJK>
+0xBD4B	0x76BA	# <CJK>
+0xBD4C	0x76E4	# <CJK>
+0xBD4D	0x778E	# <CJK>
+0xBD4E	0x7787	# <CJK>
+0xBD4F	0x778C	# <CJK>
+0xBD50	0x7791	# <CJK>
+0xBD51	0x778B	# <CJK>
+0xBD52	0x78CB	# <CJK>
+0xBD53	0x78C5	# <CJK>
+0xBD54	0x78BA	# <CJK>
+0xBD55	0x78CA	# <CJK>
+0xBD56	0x78BE	# <CJK>
+0xBD57	0x78D5	# <CJK>
+0xBD58	0x78BC	# <CJK>
+0xBD59	0x78D0	# <CJK>
+0xBD5A	0x7A3F	# <CJK>
+0xBD5B	0x7A3C	# <CJK>
+0xBD5C	0x7A40	# <CJK>
+0xBD5D	0x7A3D	# <CJK>
+0xBD5E	0x7A37	# <CJK>
+0xBD5F	0x7A3B	# <CJK>
+0xBD60	0x7AAF	# <CJK>
+0xBD61	0x7AAE	# <CJK>
+0xBD62	0x7BAD	# <CJK>
+0xBD63	0x7BB1	# <CJK>
+0xBD64	0x7BC4	# <CJK>
+0xBD65	0x7BB4	# <CJK>
+0xBD66	0x7BC6	# <CJK>
+0xBD67	0x7BC7	# <CJK>
+0xBD68	0x7BC1	# <CJK>
+0xBD69	0x7BA0	# <CJK>
+0xBD6A	0x7BCC	# <CJK>
+0xBD6B	0x7CCA	# <CJK>
+0xBD6C	0x7DE0	# <CJK>
+0xBD6D	0x7DF4	# <CJK>
+0xBD6E	0x7DEF	# <CJK>
+0xBD6F	0x7DFB	# <CJK>
+0xBD70	0x7DD8	# <CJK>
+0xBD71	0x7DEC	# <CJK>
+0xBD72	0x7DDD	# <CJK>
+0xBD73	0x7DE8	# <CJK>
+0xBD74	0x7DE3	# <CJK>
+0xBD75	0x7DDA	# <CJK>
+0xBD76	0x7DDE	# <CJK>
+0xBD77	0x7DE9	# <CJK>
+0xBD78	0x7D9E	# <CJK>
+0xBD79	0x7DD9	# <CJK>
+0xBD7A	0x7DF2	# <CJK>
+0xBD7B	0x7DF9	# <CJK>
+0xBD7C	0x7F75	# <CJK>
+0xBD7D	0x7F77	# <CJK>
+0xBD7E	0x7FAF	# <CJK>
+0xBDA1	0x7FE9	# <CJK>
+0xBDA2	0x8026	# <CJK>
+0xBDA3	0x819B	# <CJK>
+0xBDA4	0x819C	# <CJK>
+0xBDA5	0x819D	# <CJK>
+0xBDA6	0x81A0	# <CJK>
+0xBDA7	0x819A	# <CJK>
+0xBDA8	0x8198	# <CJK>
+0xBDA9	0x8517	# <CJK>
+0xBDAA	0x853D	# <CJK>
+0xBDAB	0x851A	# <CJK>
+0xBDAC	0x84EE	# <CJK>
+0xBDAD	0x852C	# <CJK>
+0xBDAE	0x852D	# <CJK>
+0xBDAF	0x8513	# <CJK>
+0xBDB0	0x8511	# <CJK>
+0xBDB1	0x8523	# <CJK>
+0xBDB2	0x8521	# <CJK>
+0xBDB3	0x8514	# <CJK>
+0xBDB4	0x84EC	# <CJK>
+0xBDB5	0x8525	# <CJK>
+0xBDB6	0x84FF	# <CJK>
+0xBDB7	0x8506	# <CJK>
+0xBDB8	0x8782	# <CJK>
+0xBDB9	0x8774	# <CJK>
+0xBDBA	0x8776	# <CJK>
+0xBDBB	0x8760	# <CJK>
+0xBDBC	0x8766	# <CJK>
+0xBDBD	0x8778	# <CJK>
+0xBDBE	0x8768	# <CJK>
+0xBDBF	0x8759	# <CJK>
+0xBDC0	0x8757	# <CJK>
+0xBDC1	0x874C	# <CJK>
+0xBDC2	0x8753	# <CJK>
+0xBDC3	0x885B	# <CJK>
+0xBDC4	0x885D	# <CJK>
+0xBDC5	0x8910	# <CJK>
+0xBDC6	0x8907	# <CJK>
+0xBDC7	0x8912	# <CJK>
+0xBDC8	0x8913	# <CJK>
+0xBDC9	0x8915	# <CJK>
+0xBDCA	0x890A	# <CJK>
+0xBDCB	0x8ABC	# <CJK>
+0xBDCC	0x8AD2	# <CJK>
+0xBDCD	0x8AC7	# <CJK>
+0xBDCE	0x8AC4	# <CJK>
+0xBDCF	0x8A95	# <CJK>
+0xBDD0	0x8ACB	# <CJK>
+0xBDD1	0x8AF8	# <CJK>
+0xBDD2	0x8AB2	# <CJK>
+0xBDD3	0x8AC9	# <CJK>
+0xBDD4	0x8AC2	# <CJK>
+0xBDD5	0x8ABF	# <CJK>
+0xBDD6	0x8AB0	# <CJK>
+0xBDD7	0x8AD6	# <CJK>
+0xBDD8	0x8ACD	# <CJK>
+0xBDD9	0x8AB6	# <CJK>
+0xBDDA	0x8AB9	# <CJK>
+0xBDDB	0x8ADB	# <CJK>
+0xBDDC	0x8C4C	# <CJK>
+0xBDDD	0x8C4E	# <CJK>
+0xBDDE	0x8C6C	# <CJK>
+0xBDDF	0x8CE0	# <CJK>
+0xBDE0	0x8CDE	# <CJK>
+0xBDE1	0x8CE6	# <CJK>
+0xBDE2	0x8CE4	# <CJK>
+0xBDE3	0x8CEC	# <CJK>
+0xBDE4	0x8CED	# <CJK>
+0xBDE5	0x8CE2	# <CJK>
+0xBDE6	0x8CE3	# <CJK>
+0xBDE7	0x8CDC	# <CJK>
+0xBDE8	0x8CEA	# <CJK>
+0xBDE9	0x8CE1	# <CJK>
+0xBDEA	0x8D6D	# <CJK>
+0xBDEB	0x8D9F	# <CJK>
+0xBDEC	0x8DA3	# <CJK>
+0xBDED	0x8E2B	# <CJK>
+0xBDEE	0x8E10	# <CJK>
+0xBDEF	0x8E1D	# <CJK>
+0xBDF0	0x8E22	# <CJK>
+0xBDF1	0x8E0F	# <CJK>
+0xBDF2	0x8E29	# <CJK>
+0xBDF3	0x8E1F	# <CJK>
+0xBDF4	0x8E21	# <CJK>
+0xBDF5	0x8E1E	# <CJK>
+0xBDF6	0x8EBA	# <CJK>
+0xBDF7	0x8F1D	# <CJK>
+0xBDF8	0x8F1B	# <CJK>
+0xBDF9	0x8F1F	# <CJK>
+0xBDFA	0x8F29	# <CJK>
+0xBDFB	0x8F26	# <CJK>
+0xBDFC	0x8F2A	# <CJK>
+0xBDFD	0x8F1C	# <CJK>
+0xBDFE	0x8F1E	# <CJK>
+0xBE40	0x8F25	# <CJK>
+0xBE41	0x9069	# <CJK>
+0xBE42	0x906E	# <CJK>
+0xBE43	0x9068	# <CJK>
+0xBE44	0x906D	# <CJK>
+0xBE45	0x9077	# <CJK>
+0xBE46	0x9130	# <CJK>
+0xBE47	0x912D	# <CJK>
+0xBE48	0x9127	# <CJK>
+0xBE49	0x9131	# <CJK>
+0xBE4A	0x9187	# <CJK>
+0xBE4B	0x9189	# <CJK>
+0xBE4C	0x918B	# <CJK>
+0xBE4D	0x9183	# <CJK>
+0xBE4E	0x92C5	# <CJK>
+0xBE4F	0x92BB	# <CJK>
+0xBE50	0x92B7	# <CJK>
+0xBE51	0x92EA	# <CJK>
+0xBE52	0x92AC	# <CJK>
+0xBE53	0x92E4	# <CJK>
+0xBE54	0x92C1	# <CJK>
+0xBE55	0x92B3	# <CJK>
+0xBE56	0x92BC	# <CJK>
+0xBE57	0x92D2	# <CJK>
+0xBE58	0x92C7	# <CJK>
+0xBE59	0x92F0	# <CJK>
+0xBE5A	0x92B2	# <CJK>
+0xBE5B	0x95AD	# <CJK>
+0xBE5C	0x95B1	# <CJK>
+0xBE5D	0x9704	# <CJK>
+0xBE5E	0x9706	# <CJK>
+0xBE5F	0x9707	# <CJK>
+0xBE60	0x9709	# <CJK>
+0xBE61	0x9760	# <CJK>
+0xBE62	0x978D	# <CJK>
+0xBE63	0x978B	# <CJK>
+0xBE64	0x978F	# <CJK>
+0xBE65	0x9821	# <CJK>
+0xBE66	0x982B	# <CJK>
+0xBE67	0x981C	# <CJK>
+0xBE68	0x98B3	# <CJK>
+0xBE69	0x990A	# <CJK>
+0xBE6A	0x9913	# <CJK>
+0xBE6B	0x9912	# <CJK>
+0xBE6C	0x9918	# <CJK>
+0xBE6D	0x99DD	# <CJK>
+0xBE6E	0x99D0	# <CJK>
+0xBE6F	0x99DF	# <CJK>
+0xBE70	0x99DB	# <CJK>
+0xBE71	0x99D1	# <CJK>
+0xBE72	0x99D5	# <CJK>
+0xBE73	0x99D2	# <CJK>
+0xBE74	0x99D9	# <CJK>
+0xBE75	0x9AB7	# <CJK>
+0xBE76	0x9AEE	# <CJK>
+0xBE77	0x9AEF	# <CJK>
+0xBE78	0x9B27	# <CJK>
+0xBE79	0x9B45	# <CJK>
+0xBE7A	0x9B44	# <CJK>
+0xBE7B	0x9B77	# <CJK>
+0xBE7C	0x9B6F	# <CJK>
+0xBE7D	0x9D06	# <CJK>
+0xBE7E	0x9D09	# <CJK>
+0xBEA1	0x9D03	# <CJK>
+0xBEA2	0x9EA9	# <CJK>
+0xBEA3	0x9EBE	# <CJK>
+0xBEA4	0x9ECE	# <CJK>
+0xBEA5	0x58A8	# <CJK>
+0xBEA6	0x9F52	# <CJK>
+0xBEA7	0x5112	# <CJK>
+0xBEA8	0x5118	# <CJK>
+0xBEA9	0x5114	# <CJK>
+0xBEAA	0x5110	# <CJK>
+0xBEAB	0x5115	# <CJK>
+0xBEAC	0x5180	# <CJK>
+0xBEAD	0x51AA	# <CJK>
+0xBEAE	0x51DD	# <CJK>
+0xBEAF	0x5291	# <CJK>
+0xBEB0	0x5293	# <CJK>
+0xBEB1	0x52F3	# <CJK>
+0xBEB2	0x5659	# <CJK>
+0xBEB3	0x566B	# <CJK>
+0xBEB4	0x5679	# <CJK>
+0xBEB5	0x5669	# <CJK>
+0xBEB6	0x5664	# <CJK>
+0xBEB7	0x5678	# <CJK>
+0xBEB8	0x566A	# <CJK>
+0xBEB9	0x5668	# <CJK>
+0xBEBA	0x5665	# <CJK>
+0xBEBB	0x5671	# <CJK>
+0xBEBC	0x566F	# <CJK>
+0xBEBD	0x566C	# <CJK>
+0xBEBE	0x5662	# <CJK>
+0xBEBF	0x5676	# <CJK>
+0xBEC0	0x58C1	# <CJK>
+0xBEC1	0x58BE	# <CJK>
+0xBEC2	0x58C7	# <CJK>
+0xBEC3	0x58C5	# <CJK>
+0xBEC4	0x596E	# <CJK>
+0xBEC5	0x5B1D	# <CJK>
+0xBEC6	0x5B34	# <CJK>
+0xBEC7	0x5B78	# <CJK>
+0xBEC8	0x5BF0	# <CJK>
+0xBEC9	0x5C0E	# <CJK>
+0xBECA	0x5F4A	# <CJK>
+0xBECB	0x61B2	# <CJK>
+0xBECC	0x6191	# <CJK>
+0xBECD	0x61A9	# <CJK>
+0xBECE	0x618A	# <CJK>
+0xBECF	0x61CD	# <CJK>
+0xBED0	0x61B6	# <CJK>
+0xBED1	0x61BE	# <CJK>
+0xBED2	0x61CA	# <CJK>
+0xBED3	0x61C8	# <CJK>
+0xBED4	0x6230	# <CJK>
+0xBED5	0x64C5	# <CJK>
+0xBED6	0x64C1	# <CJK>
+0xBED7	0x64CB	# <CJK>
+0xBED8	0x64BB	# <CJK>
+0xBED9	0x64BC	# <CJK>
+0xBEDA	0x64DA	# <CJK>
+0xBEDB	0x64C4	# <CJK>
+0xBEDC	0x64C7	# <CJK>
+0xBEDD	0x64C2	# <CJK>
+0xBEDE	0x64CD	# <CJK>
+0xBEDF	0x64BF	# <CJK>
+0xBEE0	0x64D2	# <CJK>
+0xBEE1	0x64D4	# <CJK>
+0xBEE2	0x64BE	# <CJK>
+0xBEE3	0x6574	# <CJK>
+0xBEE4	0x66C6	# <CJK>
+0xBEE5	0x66C9	# <CJK>
+0xBEE6	0x66B9	# <CJK>
+0xBEE7	0x66C4	# <CJK>
+0xBEE8	0x66C7	# <CJK>
+0xBEE9	0x66B8	# <CJK>
+0xBEEA	0x6A3D	# <CJK>
+0xBEEB	0x6A38	# <CJK>
+0xBEEC	0x6A3A	# <CJK>
+0xBEED	0x6A59	# <CJK>
+0xBEEE	0x6A6B	# <CJK>
+0xBEEF	0x6A58	# <CJK>
+0xBEF0	0x6A39	# <CJK>
+0xBEF1	0x6A44	# <CJK>
+0xBEF2	0x6A62	# <CJK>
+0xBEF3	0x6A61	# <CJK>
+0xBEF4	0x6A4B	# <CJK>
+0xBEF5	0x6A47	# <CJK>
+0xBEF6	0x6A35	# <CJK>
+0xBEF7	0x6A5F	# <CJK>
+0xBEF8	0x6A48	# <CJK>
+0xBEF9	0x6B59	# <CJK>
+0xBEFA	0x6B77	# <CJK>
+0xBEFB	0x6C05	# <CJK>
+0xBEFC	0x6FC2	# <CJK>
+0xBEFD	0x6FB1	# <CJK>
+0xBEFE	0x6FA1	# <CJK>
+0xBF40	0x6FC3	# <CJK>
+0xBF41	0x6FA4	# <CJK>
+0xBF42	0x6FC1	# <CJK>
+0xBF43	0x6FA7	# <CJK>
+0xBF44	0x6FB3	# <CJK>
+0xBF45	0x6FC0	# <CJK>
+0xBF46	0x6FB9	# <CJK>
+0xBF47	0x6FB6	# <CJK>
+0xBF48	0x6FA6	# <CJK>
+0xBF49	0x6FA0	# <CJK>
+0xBF4A	0x6FB4	# <CJK>
+0xBF4B	0x71BE	# <CJK>
+0xBF4C	0x71C9	# <CJK>
+0xBF4D	0x71D0	# <CJK>
+0xBF4E	0x71D2	# <CJK>
+0xBF4F	0x71C8	# <CJK>
+0xBF50	0x71D5	# <CJK>
+0xBF51	0x71B9	# <CJK>
+0xBF52	0x71CE	# <CJK>
+0xBF53	0x71D9	# <CJK>
+0xBF54	0x71DC	# <CJK>
+0xBF55	0x71C3	# <CJK>
+0xBF56	0x71C4	# <CJK>
+0xBF57	0x7368	# <CJK>
+0xBF58	0x749C	# <CJK>
+0xBF59	0x74A3	# <CJK>
+0xBF5A	0x7498	# <CJK>
+0xBF5B	0x749F	# <CJK>
+0xBF5C	0x749E	# <CJK>
+0xBF5D	0x74E2	# <CJK>
+0xBF5E	0x750C	# <CJK>
+0xBF5F	0x750D	# <CJK>
+0xBF60	0x7634	# <CJK>
+0xBF61	0x7638	# <CJK>
+0xBF62	0x763A	# <CJK>
+0xBF63	0x76E7	# <CJK>
+0xBF64	0x76E5	# <CJK>
+0xBF65	0x77A0	# <CJK>
+0xBF66	0x779E	# <CJK>
+0xBF67	0x779F	# <CJK>
+0xBF68	0x77A5	# <CJK>
+0xBF69	0x78E8	# <CJK>
+0xBF6A	0x78DA	# <CJK>
+0xBF6B	0x78EC	# <CJK>
+0xBF6C	0x78E7	# <CJK>
+0xBF6D	0x79A6	# <CJK>
+0xBF6E	0x7A4D	# <CJK>
+0xBF6F	0x7A4E	# <CJK>
+0xBF70	0x7A46	# <CJK>
+0xBF71	0x7A4C	# <CJK>
+0xBF72	0x7A4B	# <CJK>
+0xBF73	0x7ABA	# <CJK>
+0xBF74	0x7BD9	# <CJK>
+0xBF75	0x7C11	# <CJK>
+0xBF76	0x7BC9	# <CJK>
+0xBF77	0x7BE4	# <CJK>
+0xBF78	0x7BDB	# <CJK>
+0xBF79	0x7BE1	# <CJK>
+0xBF7A	0x7BE9	# <CJK>
+0xBF7B	0x7BE6	# <CJK>
+0xBF7C	0x7CD5	# <CJK>
+0xBF7D	0x7CD6	# <CJK>
+0xBF7E	0x7E0A	# <CJK>
+0xBFA1	0x7E11	# <CJK>
+0xBFA2	0x7E08	# <CJK>
+0xBFA3	0x7E1B	# <CJK>
+0xBFA4	0x7E23	# <CJK>
+0xBFA5	0x7E1E	# <CJK>
+0xBFA6	0x7E1D	# <CJK>
+0xBFA7	0x7E09	# <CJK>
+0xBFA8	0x7E10	# <CJK>
+0xBFA9	0x7F79	# <CJK>
+0xBFAA	0x7FB2	# <CJK>
+0xBFAB	0x7FF0	# <CJK>
+0xBFAC	0x7FF1	# <CJK>
+0xBFAD	0x7FEE	# <CJK>
+0xBFAE	0x8028	# <CJK>
+0xBFAF	0x81B3	# <CJK>
+0xBFB0	0x81A9	# <CJK>
+0xBFB1	0x81A8	# <CJK>
+0xBFB2	0x81FB	# <CJK>
+0xBFB3	0x8208	# <CJK>
+0xBFB4	0x8258	# <CJK>
+0xBFB5	0x8259	# <CJK>
+0xBFB6	0x854A	# <CJK>
+0xBFB7	0x8559	# <CJK>
+0xBFB8	0x8548	# <CJK>
+0xBFB9	0x8568	# <CJK>
+0xBFBA	0x8569	# <CJK>
+0xBFBB	0x8543	# <CJK>
+0xBFBC	0x8549	# <CJK>
+0xBFBD	0x856D	# <CJK>
+0xBFBE	0x856A	# <CJK>
+0xBFBF	0x855E	# <CJK>
+0xBFC0	0x8783	# <CJK>
+0xBFC1	0x879F	# <CJK>
+0xBFC2	0x879E	# <CJK>
+0xBFC3	0x87A2	# <CJK>
+0xBFC4	0x878D	# <CJK>
+0xBFC5	0x8861	# <CJK>
+0xBFC6	0x892A	# <CJK>
+0xBFC7	0x8932	# <CJK>
+0xBFC8	0x8925	# <CJK>
+0xBFC9	0x892B	# <CJK>
+0xBFCA	0x8921	# <CJK>
+0xBFCB	0x89AA	# <CJK>
+0xBFCC	0x89A6	# <CJK>
+0xBFCD	0x8AE6	# <CJK>
+0xBFCE	0x8AFA	# <CJK>
+0xBFCF	0x8AEB	# <CJK>
+0xBFD0	0x8AF1	# <CJK>
+0xBFD1	0x8B00	# <CJK>
+0xBFD2	0x8ADC	# <CJK>
+0xBFD3	0x8AE7	# <CJK>
+0xBFD4	0x8AEE	# <CJK>
+0xBFD5	0x8AFE	# <CJK>
+0xBFD6	0x8B01	# <CJK>
+0xBFD7	0x8B02	# <CJK>
+0xBFD8	0x8AF7	# <CJK>
+0xBFD9	0x8AED	# <CJK>
+0xBFDA	0x8AF3	# <CJK>
+0xBFDB	0x8AF6	# <CJK>
+0xBFDC	0x8AFC	# <CJK>
+0xBFDD	0x8C6B	# <CJK>
+0xBFDE	0x8C6D	# <CJK>
+0xBFDF	0x8C93	# <CJK>
+0xBFE0	0x8CF4	# <CJK>
+0xBFE1	0x8E44	# <CJK>
+0xBFE2	0x8E31	# <CJK>
+0xBFE3	0x8E34	# <CJK>
+0xBFE4	0x8E42	# <CJK>
+0xBFE5	0x8E39	# <CJK>
+0xBFE6	0x8E35	# <CJK>
+0xBFE7	0x8F3B	# <CJK>
+0xBFE8	0x8F2F	# <CJK>
+0xBFE9	0x8F38	# <CJK>
+0xBFEA	0x8F33	# <CJK>
+0xBFEB	0x8FA8	# <CJK>
+0xBFEC	0x8FA6	# <CJK>
+0xBFED	0x9075	# <CJK>
+0xBFEE	0x9074	# <CJK>
+0xBFEF	0x9078	# <CJK>
+0xBFF0	0x9072	# <CJK>
+0xBFF1	0x907C	# <CJK>
+0xBFF2	0x907A	# <CJK>
+0xBFF3	0x9134	# <CJK>
+0xBFF4	0x9192	# <CJK>
+0xBFF5	0x9320	# <CJK>
+0xBFF6	0x9336	# <CJK>
+0xBFF7	0x92F8	# <CJK>
+0xBFF8	0x9333	# <CJK>
+0xBFF9	0x932F	# <CJK>
+0xBFFA	0x9322	# <CJK>
+0xBFFB	0x92FC	# <CJK>
+0xBFFC	0x932B	# <CJK>
+0xBFFD	0x9304	# <CJK>
+0xBFFE	0x931A	# <CJK>
+0xC040	0x9310	# <CJK>
+0xC041	0x9326	# <CJK>
+0xC042	0x9321	# <CJK>
+0xC043	0x9315	# <CJK>
+0xC044	0x932E	# <CJK>
+0xC045	0x9319	# <CJK>
+0xC046	0x95BB	# <CJK>
+0xC047	0x96A7	# <CJK>
+0xC048	0x96A8	# <CJK>
+0xC049	0x96AA	# <CJK>
+0xC04A	0x96D5	# <CJK>
+0xC04B	0x970E	# <CJK>
+0xC04C	0x9711	# <CJK>
+0xC04D	0x9716	# <CJK>
+0xC04E	0x970D	# <CJK>
+0xC04F	0x9713	# <CJK>
+0xC050	0x970F	# <CJK>
+0xC051	0x975B	# <CJK>
+0xC052	0x975C	# <CJK>
+0xC053	0x9766	# <CJK>
+0xC054	0x9798	# <CJK>
+0xC055	0x9830	# <CJK>
+0xC056	0x9838	# <CJK>
+0xC057	0x983B	# <CJK>
+0xC058	0x9837	# <CJK>
+0xC059	0x982D	# <CJK>
+0xC05A	0x9839	# <CJK>
+0xC05B	0x9824	# <CJK>
+0xC05C	0x9910	# <CJK>
+0xC05D	0x9928	# <CJK>
+0xC05E	0x991E	# <CJK>
+0xC05F	0x991B	# <CJK>
+0xC060	0x9921	# <CJK>
+0xC061	0x991A	# <CJK>
+0xC062	0x99ED	# <CJK>
+0xC063	0x99E2	# <CJK>
+0xC064	0x99F1	# <CJK>
+0xC065	0x9AB8	# <CJK>
+0xC066	0x9ABC	# <CJK>
+0xC067	0x9AFB	# <CJK>
+0xC068	0x9AED	# <CJK>
+0xC069	0x9B28	# <CJK>
+0xC06A	0x9B91	# <CJK>
+0xC06B	0x9D15	# <CJK>
+0xC06C	0x9D23	# <CJK>
+0xC06D	0x9D26	# <CJK>
+0xC06E	0x9D28	# <CJK>
+0xC06F	0x9D12	# <CJK>
+0xC070	0x9D1B	# <CJK>
+0xC071	0x9ED8	# <CJK>
+0xC072	0x9ED4	# <CJK>
+0xC073	0x9F8D	# <CJK>
+0xC074	0x9F9C	# <CJK>
+0xC075	0x512A	# <CJK>
+0xC076	0x511F	# <CJK>
+0xC077	0x5121	# <CJK>
+0xC078	0x5132	# <CJK>
+0xC079	0x52F5	# <CJK>
+0xC07A	0x568E	# <CJK>
+0xC07B	0x5680	# <CJK>
+0xC07C	0x5690	# <CJK>
+0xC07D	0x5685	# <CJK>
+0xC07E	0x5687	# <CJK>
+0xC0A1	0x568F	# <CJK>
+0xC0A2	0x58D5	# <CJK>
+0xC0A3	0x58D3	# <CJK>
+0xC0A4	0x58D1	# <CJK>
+0xC0A5	0x58CE	# <CJK>
+0xC0A6	0x5B30	# <CJK>
+0xC0A7	0x5B2A	# <CJK>
+0xC0A8	0x5B24	# <CJK>
+0xC0A9	0x5B7A	# <CJK>
+0xC0AA	0x5C37	# <CJK>
+0xC0AB	0x5C68	# <CJK>
+0xC0AC	0x5DBC	# <CJK>
+0xC0AD	0x5DBA	# <CJK>
+0xC0AE	0x5DBD	# <CJK>
+0xC0AF	0x5DB8	# <CJK>
+0xC0B0	0x5E6B	# <CJK>
+0xC0B1	0x5F4C	# <CJK>
+0xC0B2	0x5FBD	# <CJK>
+0xC0B3	0x61C9	# <CJK>
+0xC0B4	0x61C2	# <CJK>
+0xC0B5	0x61C7	# <CJK>
+0xC0B6	0x61E6	# <CJK>
+0xC0B7	0x61CB	# <CJK>
+0xC0B8	0x6232	# <CJK>
+0xC0B9	0x6234	# <CJK>
+0xC0BA	0x64CE	# <CJK>
+0xC0BB	0x64CA	# <CJK>
+0xC0BC	0x64D8	# <CJK>
+0xC0BD	0x64E0	# <CJK>
+0xC0BE	0x64F0	# <CJK>
+0xC0BF	0x64E6	# <CJK>
+0xC0C0	0x64EC	# <CJK>
+0xC0C1	0x64F1	# <CJK>
+0xC0C2	0x64E2	# <CJK>
+0xC0C3	0x64ED	# <CJK>
+0xC0C4	0x6582	# <CJK>
+0xC0C5	0x6583	# <CJK>
+0xC0C6	0x66D9	# <CJK>
+0xC0C7	0x66D6	# <CJK>
+0xC0C8	0x6A80	# <CJK>
+0xC0C9	0x6A94	# <CJK>
+0xC0CA	0x6A84	# <CJK>
+0xC0CB	0x6AA2	# <CJK>
+0xC0CC	0x6A9C	# <CJK>
+0xC0CD	0x6ADB	# <CJK>
+0xC0CE	0x6AA3	# <CJK>
+0xC0CF	0x6A7E	# <CJK>
+0xC0D0	0x6A97	# <CJK>
+0xC0D1	0x6A90	# <CJK>
+0xC0D2	0x6AA0	# <CJK>
+0xC0D3	0x6B5C	# <CJK>
+0xC0D4	0x6BAE	# <CJK>
+0xC0D5	0x6BDA	# <CJK>
+0xC0D6	0x6C08	# <CJK>
+0xC0D7	0x6FD8	# <CJK>
+0xC0D8	0x6FF1	# <CJK>
+0xC0D9	0x6FDF	# <CJK>
+0xC0DA	0x6FE0	# <CJK>
+0xC0DB	0x6FDB	# <CJK>
+0xC0DC	0x6FE4	# <CJK>
+0xC0DD	0x6FEB	# <CJK>
+0xC0DE	0x6FEF	# <CJK>
+0xC0DF	0x6F80	# <CJK>
+0xC0E0	0x6FEC	# <CJK>
+0xC0E1	0x6FE1	# <CJK>
+0xC0E2	0x6FE9	# <CJK>
+0xC0E3	0x6FD5	# <CJK>
+0xC0E4	0x6FEE	# <CJK>
+0xC0E5	0x6FF0	# <CJK>
+0xC0E6	0x71E7	# <CJK>
+0xC0E7	0x71DF	# <CJK>
+0xC0E8	0x71EE	# <CJK>
+0xC0E9	0x71E6	# <CJK>
+0xC0EA	0x71E5	# <CJK>
+0xC0EB	0x71ED	# <CJK>
+0xC0EC	0x71EC	# <CJK>
+0xC0ED	0x71F4	# <CJK>
+0xC0EE	0x71E0	# <CJK>
+0xC0EF	0x7235	# <CJK>
+0xC0F0	0x7246	# <CJK>
+0xC0F1	0x7370	# <CJK>
+0xC0F2	0x7372	# <CJK>
+0xC0F3	0x74A9	# <CJK>
+0xC0F4	0x74B0	# <CJK>
+0xC0F5	0x74A6	# <CJK>
+0xC0F6	0x74A8	# <CJK>
+0xC0F7	0x7646	# <CJK>
+0xC0F8	0x7642	# <CJK>
+0xC0F9	0x764C	# <CJK>
+0xC0FA	0x76EA	# <CJK>
+0xC0FB	0x77B3	# <CJK>
+0xC0FC	0x77AA	# <CJK>
+0xC0FD	0x77B0	# <CJK>
+0xC0FE	0x77AC	# <CJK>
+0xC140	0x77A7	# <CJK>
+0xC141	0x77AD	# <CJK>
+0xC142	0x77EF	# <CJK>
+0xC143	0x78F7	# <CJK>
+0xC144	0x78FA	# <CJK>
+0xC145	0x78F4	# <CJK>
+0xC146	0x78EF	# <CJK>
+0xC147	0x7901	# <CJK>
+0xC148	0x79A7	# <CJK>
+0xC149	0x79AA	# <CJK>
+0xC14A	0x7A57	# <CJK>
+0xC14B	0x7ABF	# <CJK>
+0xC14C	0x7C07	# <CJK>
+0xC14D	0x7C0D	# <CJK>
+0xC14E	0x7BFE	# <CJK>
+0xC14F	0x7BF7	# <CJK>
+0xC150	0x7C0C	# <CJK>
+0xC151	0x7BE0	# <CJK>
+0xC152	0x7CE0	# <CJK>
+0xC153	0x7CDC	# <CJK>
+0xC154	0x7CDE	# <CJK>
+0xC155	0x7CE2	# <CJK>
+0xC156	0x7CDF	# <CJK>
+0xC157	0x7CD9	# <CJK>
+0xC158	0x7CDD	# <CJK>
+0xC159	0x7E2E	# <CJK>
+0xC15A	0x7E3E	# <CJK>
+0xC15B	0x7E46	# <CJK>
+0xC15C	0x7E37	# <CJK>
+0xC15D	0x7E32	# <CJK>
+0xC15E	0x7E43	# <CJK>
+0xC15F	0x7E2B	# <CJK>
+0xC160	0x7E3D	# <CJK>
+0xC161	0x7E31	# <CJK>
+0xC162	0x7E45	# <CJK>
+0xC163	0x7E41	# <CJK>
+0xC164	0x7E34	# <CJK>
+0xC165	0x7E39	# <CJK>
+0xC166	0x7E48	# <CJK>
+0xC167	0x7E35	# <CJK>
+0xC168	0x7E3F	# <CJK>
+0xC169	0x7E2F	# <CJK>
+0xC16A	0x7F44	# <CJK>
+0xC16B	0x7FF3	# <CJK>
+0xC16C	0x7FFC	# <CJK>
+0xC16D	0x8071	# <CJK>
+0xC16E	0x8072	# <CJK>
+0xC16F	0x8070	# <CJK>
+0xC170	0x806F	# <CJK>
+0xC171	0x8073	# <CJK>
+0xC172	0x81C6	# <CJK>
+0xC173	0x81C3	# <CJK>
+0xC174	0x81BA	# <CJK>
+0xC175	0x81C2	# <CJK>
+0xC176	0x81C0	# <CJK>
+0xC177	0x81BF	# <CJK>
+0xC178	0x81BD	# <CJK>
+0xC179	0x81C9	# <CJK>
+0xC17A	0x81BE	# <CJK>
+0xC17B	0x81E8	# <CJK>
+0xC17C	0x8209	# <CJK>
+0xC17D	0x8271	# <CJK>
+0xC17E	0x85AA	# <CJK>
+0xC1A1	0x8584	# <CJK>
+0xC1A2	0x857E	# <CJK>
+0xC1A3	0x859C	# <CJK>
+0xC1A4	0x8591	# <CJK>
+0xC1A5	0x8594	# <CJK>
+0xC1A6	0x85AF	# <CJK>
+0xC1A7	0x859B	# <CJK>
+0xC1A8	0x8587	# <CJK>
+0xC1A9	0x85A8	# <CJK>
+0xC1AA	0x858A	# <CJK>
+0xC1AB	0x8667	# <CJK>
+0xC1AC	0x87C0	# <CJK>
+0xC1AD	0x87D1	# <CJK>
+0xC1AE	0x87B3	# <CJK>
+0xC1AF	0x87D2	# <CJK>
+0xC1B0	0x87C6	# <CJK>
+0xC1B1	0x87AB	# <CJK>
+0xC1B2	0x87BB	# <CJK>
+0xC1B3	0x87BA	# <CJK>
+0xC1B4	0x87C8	# <CJK>
+0xC1B5	0x87CB	# <CJK>
+0xC1B6	0x893B	# <CJK>
+0xC1B7	0x8936	# <CJK>
+0xC1B8	0x8944	# <CJK>
+0xC1B9	0x8938	# <CJK>
+0xC1BA	0x893D	# <CJK>
+0xC1BB	0x89AC	# <CJK>
+0xC1BC	0x8B0E	# <CJK>
+0xC1BD	0x8B17	# <CJK>
+0xC1BE	0x8B19	# <CJK>
+0xC1BF	0x8B1B	# <CJK>
+0xC1C0	0x8B0A	# <CJK>
+0xC1C1	0x8B20	# <CJK>
+0xC1C2	0x8B1D	# <CJK>
+0xC1C3	0x8B04	# <CJK>
+0xC1C4	0x8B10	# <CJK>
+0xC1C5	0x8C41	# <CJK>
+0xC1C6	0x8C3F	# <CJK>
+0xC1C7	0x8C73	# <CJK>
+0xC1C8	0x8CFA	# <CJK>
+0xC1C9	0x8CFD	# <CJK>
+0xC1CA	0x8CFC	# <CJK>
+0xC1CB	0x8CF8	# <CJK>
+0xC1CC	0x8CFB	# <CJK>
+0xC1CD	0x8DA8	# <CJK>
+0xC1CE	0x8E49	# <CJK>
+0xC1CF	0x8E4B	# <CJK>
+0xC1D0	0x8E48	# <CJK>
+0xC1D1	0x8E4A	# <CJK>
+0xC1D2	0x8F44	# <CJK>
+0xC1D3	0x8F3E	# <CJK>
+0xC1D4	0x8F42	# <CJK>
+0xC1D5	0x8F45	# <CJK>
+0xC1D6	0x8F3F	# <CJK>
+0xC1D7	0x907F	# <CJK>
+0xC1D8	0x907D	# <CJK>
+0xC1D9	0x9084	# <CJK>
+0xC1DA	0x9081	# <CJK>
+0xC1DB	0x9082	# <CJK>
+0xC1DC	0x9080	# <CJK>
+0xC1DD	0x9139	# <CJK>
+0xC1DE	0x91A3	# <CJK>
+0xC1DF	0x919E	# <CJK>
+0xC1E0	0x919C	# <CJK>
+0xC1E1	0x934D	# <CJK>
+0xC1E2	0x9382	# <CJK>
+0xC1E3	0x9328	# <CJK>
+0xC1E4	0x9375	# <CJK>
+0xC1E5	0x934A	# <CJK>
+0xC1E6	0x9365	# <CJK>
+0xC1E7	0x934B	# <CJK>
+0xC1E8	0x9318	# <CJK>
+0xC1E9	0x937E	# <CJK>
+0xC1EA	0x936C	# <CJK>
+0xC1EB	0x935B	# <CJK>
+0xC1EC	0x9370	# <CJK>
+0xC1ED	0x935A	# <CJK>
+0xC1EE	0x9354	# <CJK>
+0xC1EF	0x95CA	# <CJK>
+0xC1F0	0x95CB	# <CJK>
+0xC1F1	0x95CC	# <CJK>
+0xC1F2	0x95C8	# <CJK>
+0xC1F3	0x95C6	# <CJK>
+0xC1F4	0x96B1	# <CJK>
+0xC1F5	0x96B8	# <CJK>
+0xC1F6	0x96D6	# <CJK>
+0xC1F7	0x971C	# <CJK>
+0xC1F8	0x971E	# <CJK>
+0xC1F9	0x97A0	# <CJK>
+0xC1FA	0x97D3	# <CJK>
+0xC1FB	0x9846	# <CJK>
+0xC1FC	0x98B6	# <CJK>
+0xC1FD	0x9935	# <CJK>
+0xC1FE	0x9A01	# <CJK>
+0xC240	0x99FF	# <CJK>
+0xC241	0x9BAE	# <CJK>
+0xC242	0x9BAB	# <CJK>
+0xC243	0x9BAA	# <CJK>
+0xC244	0x9BAD	# <CJK>
+0xC245	0x9D3B	# <CJK>
+0xC246	0x9D3F	# <CJK>
+0xC247	0x9E8B	# <CJK>
+0xC248	0x9ECF	# <CJK>
+0xC249	0x9EDE	# <CJK>
+0xC24A	0x9EDC	# <CJK>
+0xC24B	0x9EDD	# <CJK>
+0xC24C	0x9EDB	# <CJK>
+0xC24D	0x9F3E	# <CJK>
+0xC24E	0x9F4B	# <CJK>
+0xC24F	0x53E2	# <CJK>
+0xC250	0x5695	# <CJK>
+0xC251	0x56AE	# <CJK>
+0xC252	0x58D9	# <CJK>
+0xC253	0x58D8	# <CJK>
+0xC254	0x5B38	# <CJK>
+0xC255	0x5F5D	# <CJK>
+0xC256	0x61E3	# <CJK>
+0xC257	0x6233	# <CJK>
+0xC258	0x64F4	# <CJK>
+0xC259	0x64F2	# <CJK>
+0xC25A	0x64FE	# <CJK>
+0xC25B	0x6506	# <CJK>
+0xC25C	0x64FA	# <CJK>
+0xC25D	0x64FB	# <CJK>
+0xC25E	0x64F7	# <CJK>
+0xC25F	0x65B7	# <CJK>
+0xC260	0x66DC	# <CJK>
+0xC261	0x6726	# <CJK>
+0xC262	0x6AB3	# <CJK>
+0xC263	0x6AAC	# <CJK>
+0xC264	0x6AC3	# <CJK>
+0xC265	0x6ABB	# <CJK>
+0xC266	0x6AB8	# <CJK>
+0xC267	0x6AC2	# <CJK>
+0xC268	0x6AAE	# <CJK>
+0xC269	0x6AAF	# <CJK>
+0xC26A	0x6B5F	# <CJK>
+0xC26B	0x6B78	# <CJK>
+0xC26C	0x6BAF	# <CJK>
+0xC26D	0x7009	# <CJK>
+0xC26E	0x700B	# <CJK>
+0xC26F	0x6FFE	# <CJK>
+0xC270	0x7006	# <CJK>
+0xC271	0x6FFA	# <CJK>
+0xC272	0x7011	# <CJK>
+0xC273	0x700F	# <CJK>
+0xC274	0x71FB	# <CJK>
+0xC275	0x71FC	# <CJK>
+0xC276	0x71FE	# <CJK>
+0xC277	0x71F8	# <CJK>
+0xC278	0x7377	# <CJK>
+0xC279	0x7375	# <CJK>
+0xC27A	0x74A7	# <CJK>
+0xC27B	0x74BF	# <CJK>
+0xC27C	0x7515	# <CJK>
+0xC27D	0x7656	# <CJK>
+0xC27E	0x7658	# <CJK>
+0xC2A1	0x7652	# <CJK>
+0xC2A2	0x77BD	# <CJK>
+0xC2A3	0x77BF	# <CJK>
+0xC2A4	0x77BB	# <CJK>
+0xC2A5	0x77BC	# <CJK>
+0xC2A6	0x790E	# <CJK>
+0xC2A7	0x79AE	# <CJK>
+0xC2A8	0x7A61	# <CJK>
+0xC2A9	0x7A62	# <CJK>
+0xC2AA	0x7A60	# <CJK>
+0xC2AB	0x7AC4	# <CJK>
+0xC2AC	0x7AC5	# <CJK>
+0xC2AD	0x7C2B	# <CJK>
+0xC2AE	0x7C27	# <CJK>
+0xC2AF	0x7C2A	# <CJK>
+0xC2B0	0x7C1E	# <CJK>
+0xC2B1	0x7C23	# <CJK>
+0xC2B2	0x7C21	# <CJK>
+0xC2B3	0x7CE7	# <CJK>
+0xC2B4	0x7E54	# <CJK>
+0xC2B5	0x7E55	# <CJK>
+0xC2B6	0x7E5E	# <CJK>
+0xC2B7	0x7E5A	# <CJK>
+0xC2B8	0x7E61	# <CJK>
+0xC2B9	0x7E52	# <CJK>
+0xC2BA	0x7E59	# <CJK>
+0xC2BB	0x7F48	# <CJK>
+0xC2BC	0x7FF9	# <CJK>
+0xC2BD	0x7FFB	# <CJK>
+0xC2BE	0x8077	# <CJK>
+0xC2BF	0x8076	# <CJK>
+0xC2C0	0x81CD	# <CJK>
+0xC2C1	0x81CF	# <CJK>
+0xC2C2	0x820A	# <CJK>
+0xC2C3	0x85CF	# <CJK>
+0xC2C4	0x85A9	# <CJK>
+0xC2C5	0x85CD	# <CJK>
+0xC2C6	0x85D0	# <CJK>
+0xC2C7	0x85C9	# <CJK>
+0xC2C8	0x85B0	# <CJK>
+0xC2C9	0x85BA	# <CJK>
+0xC2CA	0x85B9	# <CJK>
+0xC2CB	0x85A6	# <CJK>
+0xC2CC	0x87EF	# <CJK>
+0xC2CD	0x87EC	# <CJK>
+0xC2CE	0x87F2	# <CJK>
+0xC2CF	0x87E0	# <CJK>
+0xC2D0	0x8986	# <CJK>
+0xC2D1	0x89B2	# <CJK>
+0xC2D2	0x89F4	# <CJK>
+0xC2D3	0x8B28	# <CJK>
+0xC2D4	0x8B39	# <CJK>
+0xC2D5	0x8B2C	# <CJK>
+0xC2D6	0x8B2B	# <CJK>
+0xC2D7	0x8C50	# <CJK>
+0xC2D8	0x8D05	# <CJK>
+0xC2D9	0x8E59	# <CJK>
+0xC2DA	0x8E63	# <CJK>
+0xC2DB	0x8E66	# <CJK>
+0xC2DC	0x8E64	# <CJK>
+0xC2DD	0x8E5F	# <CJK>
+0xC2DE	0x8E55	# <CJK>
+0xC2DF	0x8EC0	# <CJK>
+0xC2E0	0x8F49	# <CJK>
+0xC2E1	0x8F4D	# <CJK>
+0xC2E2	0x9087	# <CJK>
+0xC2E3	0x9083	# <CJK>
+0xC2E4	0x9088	# <CJK>
+0xC2E5	0x91AB	# <CJK>
+0xC2E6	0x91AC	# <CJK>
+0xC2E7	0x91D0	# <CJK>
+0xC2E8	0x9394	# <CJK>
+0xC2E9	0x938A	# <CJK>
+0xC2EA	0x9396	# <CJK>
+0xC2EB	0x93A2	# <CJK>
+0xC2EC	0x93B3	# <CJK>
+0xC2ED	0x93AE	# <CJK>
+0xC2EE	0x93AC	# <CJK>
+0xC2EF	0x93B0	# <CJK>
+0xC2F0	0x9398	# <CJK>
+0xC2F1	0x939A	# <CJK>
+0xC2F2	0x9397	# <CJK>
+0xC2F3	0x95D4	# <CJK>
+0xC2F4	0x95D6	# <CJK>
+0xC2F5	0x95D0	# <CJK>
+0xC2F6	0x95D5	# <CJK>
+0xC2F7	0x96E2	# <CJK>
+0xC2F8	0x96DC	# <CJK>
+0xC2F9	0x96D9	# <CJK>
+0xC2FA	0x96DB	# <CJK>
+0xC2FB	0x96DE	# <CJK>
+0xC2FC	0x9724	# <CJK>
+0xC2FD	0x97A3	# <CJK>
+0xC2FE	0x97A6	# <CJK>
+0xC340	0x97AD	# <CJK>
+0xC341	0x97F9	# <CJK>
+0xC342	0x984D	# <CJK>
+0xC343	0x984F	# <CJK>
+0xC344	0x984C	# <CJK>
+0xC345	0x984E	# <CJK>
+0xC346	0x9853	# <CJK>
+0xC347	0x98BA	# <CJK>
+0xC348	0x993E	# <CJK>
+0xC349	0x993F	# <CJK>
+0xC34A	0x993D	# <CJK>
+0xC34B	0x992E	# <CJK>
+0xC34C	0x99A5	# <CJK>
+0xC34D	0x9A0E	# <CJK>
+0xC34E	0x9AC1	# <CJK>
+0xC34F	0x9B03	# <CJK>
+0xC350	0x9B06	# <CJK>
+0xC351	0x9B4F	# <CJK>
+0xC352	0x9B4E	# <CJK>
+0xC353	0x9B4D	# <CJK>
+0xC354	0x9BCA	# <CJK>
+0xC355	0x9BC9	# <CJK>
+0xC356	0x9BFD	# <CJK>
+0xC357	0x9BC8	# <CJK>
+0xC358	0x9BC0	# <CJK>
+0xC359	0x9D51	# <CJK>
+0xC35A	0x9D5D	# <CJK>
+0xC35B	0x9D60	# <CJK>
+0xC35C	0x9EE0	# <CJK>
+0xC35D	0x9F15	# <CJK>
+0xC35E	0x9F2C	# <CJK>
+0xC35F	0x5133	# <CJK>
+0xC360	0x56A5	# <CJK>
+0xC361	0x58DE	# <CJK>
+0xC362	0x58DF	# <CJK>
+0xC363	0x58E2	# <CJK>
+0xC364	0x5BF5	# <CJK>
+0xC365	0x9F90	# <CJK>
+0xC366	0x5EEC	# <CJK>
+0xC367	0x61F2	# <CJK>
+0xC368	0x61F7	# <CJK>
+0xC369	0x61F6	# <CJK>
+0xC36A	0x61F5	# <CJK>
+0xC36B	0x6500	# <CJK>
+0xC36C	0x650F	# <CJK>
+0xC36D	0x66E0	# <CJK>
+0xC36E	0x66DD	# <CJK>
+0xC36F	0x6AE5	# <CJK>
+0xC370	0x6ADD	# <CJK>
+0xC371	0x6ADA	# <CJK>
+0xC372	0x6AD3	# <CJK>
+0xC373	0x701B	# <CJK>
+0xC374	0x701F	# <CJK>
+0xC375	0x7028	# <CJK>
+0xC376	0x701A	# <CJK>
+0xC377	0x701D	# <CJK>
+0xC378	0x7015	# <CJK>
+0xC379	0x7018	# <CJK>
+0xC37A	0x7206	# <CJK>
+0xC37B	0x720D	# <CJK>
+0xC37C	0x7258	# <CJK>
+0xC37D	0x72A2	# <CJK>
+0xC37E	0x7378	# <CJK>
+0xC3A1	0x737A	# <CJK>
+0xC3A2	0x74BD	# <CJK>
+0xC3A3	0x74CA	# <CJK>
+0xC3A4	0x74E3	# <CJK>
+0xC3A5	0x7587	# <CJK>
+0xC3A6	0x7586	# <CJK>
+0xC3A7	0x765F	# <CJK>
+0xC3A8	0x7661	# <CJK>
+0xC3A9	0x77C7	# <CJK>
+0xC3AA	0x7919	# <CJK>
+0xC3AB	0x79B1	# <CJK>
+0xC3AC	0x7A6B	# <CJK>
+0xC3AD	0x7A69	# <CJK>
+0xC3AE	0x7C3E	# <CJK>
+0xC3AF	0x7C3F	# <CJK>
+0xC3B0	0x7C38	# <CJK>
+0xC3B1	0x7C3D	# <CJK>
+0xC3B2	0x7C37	# <CJK>
+0xC3B3	0x7C40	# <CJK>
+0xC3B4	0x7E6B	# <CJK>
+0xC3B5	0x7E6D	# <CJK>
+0xC3B6	0x7E79	# <CJK>
+0xC3B7	0x7E69	# <CJK>
+0xC3B8	0x7E6A	# <CJK>
+0xC3B9	0x7F85	# <CJK>
+0xC3BA	0x7E73	# <CJK>
+0xC3BB	0x7FB6	# <CJK>
+0xC3BC	0x7FB9	# <CJK>
+0xC3BD	0x7FB8	# <CJK>
+0xC3BE	0x81D8	# <CJK>
+0xC3BF	0x85E9	# <CJK>
+0xC3C0	0x85DD	# <CJK>
+0xC3C1	0x85EA	# <CJK>
+0xC3C2	0x85D5	# <CJK>
+0xC3C3	0x85E4	# <CJK>
+0xC3C4	0x85E5	# <CJK>
+0xC3C5	0x85F7	# <CJK>
+0xC3C6	0x87FB	# <CJK>
+0xC3C7	0x8805	# <CJK>
+0xC3C8	0x880D	# <CJK>
+0xC3C9	0x87F9	# <CJK>
+0xC3CA	0x87FE	# <CJK>
+0xC3CB	0x8960	# <CJK>
+0xC3CC	0x895F	# <CJK>
+0xC3CD	0x8956	# <CJK>
+0xC3CE	0x895E	# <CJK>
+0xC3CF	0x8B41	# <CJK>
+0xC3D0	0x8B5C	# <CJK>
+0xC3D1	0x8B58	# <CJK>
+0xC3D2	0x8B49	# <CJK>
+0xC3D3	0x8B5A	# <CJK>
+0xC3D4	0x8B4E	# <CJK>
+0xC3D5	0x8B4F	# <CJK>
+0xC3D6	0x8B46	# <CJK>
+0xC3D7	0x8B59	# <CJK>
+0xC3D8	0x8D08	# <CJK>
+0xC3D9	0x8D0A	# <CJK>
+0xC3DA	0x8E7C	# <CJK>
+0xC3DB	0x8E72	# <CJK>
+0xC3DC	0x8E87	# <CJK>
+0xC3DD	0x8E76	# <CJK>
+0xC3DE	0x8E6C	# <CJK>
+0xC3DF	0x8E7A	# <CJK>
+0xC3E0	0x8E74	# <CJK>
+0xC3E1	0x8F54	# <CJK>
+0xC3E2	0x8F4E	# <CJK>
+0xC3E3	0x8FAD	# <CJK>
+0xC3E4	0x908A	# <CJK>
+0xC3E5	0x908B	# <CJK>
+0xC3E6	0x91B1	# <CJK>
+0xC3E7	0x91AE	# <CJK>
+0xC3E8	0x93E1	# <CJK>
+0xC3E9	0x93D1	# <CJK>
+0xC3EA	0x93DF	# <CJK>
+0xC3EB	0x93C3	# <CJK>
+0xC3EC	0x93C8	# <CJK>
+0xC3ED	0x93DC	# <CJK>
+0xC3EE	0x93DD	# <CJK>
+0xC3EF	0x93D6	# <CJK>
+0xC3F0	0x93E2	# <CJK>
+0xC3F1	0x93CD	# <CJK>
+0xC3F2	0x93D8	# <CJK>
+0xC3F3	0x93E4	# <CJK>
+0xC3F4	0x93D7	# <CJK>
+0xC3F5	0x93E8	# <CJK>
+0xC3F6	0x95DC	# <CJK>
+0xC3F7	0x96B4	# <CJK>
+0xC3F8	0x96E3	# <CJK>
+0xC3F9	0x972A	# <CJK>
+0xC3FA	0x9727	# <CJK>
+0xC3FB	0x9761	# <CJK>
+0xC3FC	0x97DC	# <CJK>
+0xC3FD	0x97FB	# <CJK>
+0xC3FE	0x985E	# <CJK>
+0xC440	0x9858	# <CJK>
+0xC441	0x985B	# <CJK>
+0xC442	0x98BC	# <CJK>
+0xC443	0x9945	# <CJK>
+0xC444	0x9949	# <CJK>
+0xC445	0x9A16	# <CJK>
+0xC446	0x9A19	# <CJK>
+0xC447	0x9B0D	# <CJK>
+0xC448	0x9BE8	# <CJK>
+0xC449	0x9BE7	# <CJK>
+0xC44A	0x9BD6	# <CJK>
+0xC44B	0x9BDB	# <CJK>
+0xC44C	0x9D89	# <CJK>
+0xC44D	0x9D61	# <CJK>
+0xC44E	0x9D72	# <CJK>
+0xC44F	0x9D6A	# <CJK>
+0xC450	0x9D6C	# <CJK>
+0xC451	0x9E92	# <CJK>
+0xC452	0x9E97	# <CJK>
+0xC453	0x9E93	# <CJK>
+0xC454	0x9EB4	# <CJK>
+0xC455	0x52F8	# <CJK>
+0xC456	0x56A8	# <CJK>
+0xC457	0x56B7	# <CJK>
+0xC458	0x56B6	# <CJK>
+0xC459	0x56B4	# <CJK>
+0xC45A	0x56BC	# <CJK>
+0xC45B	0x58E4	# <CJK>
+0xC45C	0x5B40	# <CJK>
+0xC45D	0x5B43	# <CJK>
+0xC45E	0x5B7D	# <CJK>
+0xC45F	0x5BF6	# <CJK>
+0xC460	0x5DC9	# <CJK>
+0xC461	0x61F8	# <CJK>
+0xC462	0x61FA	# <CJK>
+0xC463	0x6518	# <CJK>
+0xC464	0x6514	# <CJK>
+0xC465	0x6519	# <CJK>
+0xC466	0x66E6	# <CJK>
+0xC467	0x6727	# <CJK>
+0xC468	0x6AEC	# <CJK>
+0xC469	0x703E	# <CJK>
+0xC46A	0x7030	# <CJK>
+0xC46B	0x7032	# <CJK>
+0xC46C	0x7210	# <CJK>
+0xC46D	0x737B	# <CJK>
+0xC46E	0x74CF	# <CJK>
+0xC46F	0x7662	# <CJK>
+0xC470	0x7665	# <CJK>
+0xC471	0x7926	# <CJK>
+0xC472	0x792A	# <CJK>
+0xC473	0x792C	# <CJK>
+0xC474	0x792B	# <CJK>
+0xC475	0x7AC7	# <CJK>
+0xC476	0x7AF6	# <CJK>
+0xC477	0x7C4C	# <CJK>
+0xC478	0x7C43	# <CJK>
+0xC479	0x7C4D	# <CJK>
+0xC47A	0x7CEF	# <CJK>
+0xC47B	0x7CF0	# <CJK>
+0xC47C	0x8FAE	# <CJK>
+0xC47D	0x7E7D	# <CJK>
+0xC47E	0x7E7C	# <CJK>
+0xC4A1	0x7E82	# <CJK>
+0xC4A2	0x7F4C	# <CJK>
+0xC4A3	0x8000	# <CJK>
+0xC4A4	0x81DA	# <CJK>
+0xC4A5	0x8266	# <CJK>
+0xC4A6	0x85FB	# <CJK>
+0xC4A7	0x85F9	# <CJK>
+0xC4A8	0x8611	# <CJK>
+0xC4A9	0x85FA	# <CJK>
+0xC4AA	0x8606	# <CJK>
+0xC4AB	0x860B	# <CJK>
+0xC4AC	0x8607	# <CJK>
+0xC4AD	0x860A	# <CJK>
+0xC4AE	0x8814	# <CJK>
+0xC4AF	0x8815	# <CJK>
+0xC4B0	0x8964	# <CJK>
+0xC4B1	0x89BA	# <CJK>
+0xC4B2	0x89F8	# <CJK>
+0xC4B3	0x8B70	# <CJK>
+0xC4B4	0x8B6C	# <CJK>
+0xC4B5	0x8B66	# <CJK>
+0xC4B6	0x8B6F	# <CJK>
+0xC4B7	0x8B5F	# <CJK>
+0xC4B8	0x8B6B	# <CJK>
+0xC4B9	0x8D0F	# <CJK>
+0xC4BA	0x8D0D	# <CJK>
+0xC4BB	0x8E89	# <CJK>
+0xC4BC	0x8E81	# <CJK>
+0xC4BD	0x8E85	# <CJK>
+0xC4BE	0x8E82	# <CJK>
+0xC4BF	0x91B4	# <CJK>
+0xC4C0	0x91CB	# <CJK>
+0xC4C1	0x9418	# <CJK>
+0xC4C2	0x9403	# <CJK>
+0xC4C3	0x93FD	# <CJK>
+0xC4C4	0x95E1	# <CJK>
+0xC4C5	0x9730	# <CJK>
+0xC4C6	0x98C4	# <CJK>
+0xC4C7	0x9952	# <CJK>
+0xC4C8	0x9951	# <CJK>
+0xC4C9	0x99A8	# <CJK>
+0xC4CA	0x9A2B	# <CJK>
+0xC4CB	0x9A30	# <CJK>
+0xC4CC	0x9A37	# <CJK>
+0xC4CD	0x9A35	# <CJK>
+0xC4CE	0x9C13	# <CJK>
+0xC4CF	0x9C0D	# <CJK>
+0xC4D0	0x9E79	# <CJK>
+0xC4D1	0x9EB5	# <CJK>
+0xC4D2	0x9EE8	# <CJK>
+0xC4D3	0x9F2F	# <CJK>
+0xC4D4	0x9F5F	# <CJK>
+0xC4D5	0x9F63	# <CJK>
+0xC4D6	0x9F61	# <CJK>
+0xC4D7	0x5137	# <CJK>
+0xC4D8	0x5138	# <CJK>
+0xC4D9	0x56C1	# <CJK>
+0xC4DA	0x56C0	# <CJK>
+0xC4DB	0x56C2	# <CJK>
+0xC4DC	0x5914	# <CJK>
+0xC4DD	0x5C6C	# <CJK>
+0xC4DE	0x5DCD	# <CJK>
+0xC4DF	0x61FC	# <CJK>
+0xC4E0	0x61FE	# <CJK>
+0xC4E1	0x651D	# <CJK>
+0xC4E2	0x651C	# <CJK>
+0xC4E3	0x6595	# <CJK>
+0xC4E4	0x66E9	# <CJK>
+0xC4E5	0x6AFB	# <CJK>
+0xC4E6	0x6B04	# <CJK>
+0xC4E7	0x6AFA	# <CJK>
+0xC4E8	0x6BB2	# <CJK>
+0xC4E9	0x704C	# <CJK>
+0xC4EA	0x721B	# <CJK>
+0xC4EB	0x72A7	# <CJK>
+0xC4EC	0x74D6	# <CJK>
+0xC4ED	0x74D4	# <CJK>
+0xC4EE	0x7669	# <CJK>
+0xC4EF	0x77D3	# <CJK>
+0xC4F0	0x7C50	# <CJK>
+0xC4F1	0x7E8F	# <CJK>
+0xC4F2	0x7E8C	# <CJK>
+0xC4F3	0x7FBC	# <CJK>
+0xC4F4	0x8617	# <CJK>
+0xC4F5	0x862D	# <CJK>
+0xC4F6	0x861A	# <CJK>
+0xC4F7	0x8823	# <CJK>
+0xC4F8	0x8822	# <CJK>
+0xC4F9	0x8821	# <CJK>
+0xC4FA	0x881F	# <CJK>
+0xC4FB	0x896A	# <CJK>
+0xC4FC	0x896C	# <CJK>
+0xC4FD	0x89BD	# <CJK>
+0xC4FE	0x8B74	# <CJK>
+0xC540	0x8B77	# <CJK>
+0xC541	0x8B7D	# <CJK>
+0xC542	0x8D13	# <CJK>
+0xC543	0x8E8A	# <CJK>
+0xC544	0x8E8D	# <CJK>
+0xC545	0x8E8B	# <CJK>
+0xC546	0x8F5F	# <CJK>
+0xC547	0x8FAF	# <CJK>
+0xC548	0x91BA	# <CJK>
+0xC549	0x942E	# <CJK>
+0xC54A	0x9433	# <CJK>
+0xC54B	0x9435	# <CJK>
+0xC54C	0x943A	# <CJK>
+0xC54D	0x9438	# <CJK>
+0xC54E	0x9432	# <CJK>
+0xC54F	0x942B	# <CJK>
+0xC550	0x95E2	# <CJK>
+0xC551	0x9738	# <CJK>
+0xC552	0x9739	# <CJK>
+0xC553	0x9732	# <CJK>
+0xC554	0x97FF	# <CJK>
+0xC555	0x9867	# <CJK>
+0xC556	0x9865	# <CJK>
+0xC557	0x9957	# <CJK>
+0xC558	0x9A45	# <CJK>
+0xC559	0x9A43	# <CJK>
+0xC55A	0x9A40	# <CJK>
+0xC55B	0x9A3E	# <CJK>
+0xC55C	0x9ACF	# <CJK>
+0xC55D	0x9B54	# <CJK>
+0xC55E	0x9B51	# <CJK>
+0xC55F	0x9C2D	# <CJK>
+0xC560	0x9C25	# <CJK>
+0xC561	0x9DAF	# <CJK>
+0xC562	0x9DB4	# <CJK>
+0xC563	0x9DC2	# <CJK>
+0xC564	0x9DB8	# <CJK>
+0xC565	0x9E9D	# <CJK>
+0xC566	0x9EEF	# <CJK>
+0xC567	0x9F19	# <CJK>
+0xC568	0x9F5C	# <CJK>
+0xC569	0x9F66	# <CJK>
+0xC56A	0x9F67	# <CJK>
+0xC56B	0x513C	# <CJK>
+0xC56C	0x513B	# <CJK>
+0xC56D	0x56C8	# <CJK>
+0xC56E	0x56CA	# <CJK>
+0xC56F	0x56C9	# <CJK>
+0xC570	0x5B7F	# <CJK>
+0xC571	0x5DD4	# <CJK>
+0xC572	0x5DD2	# <CJK>
+0xC573	0x5F4E	# <CJK>
+0xC574	0x61FF	# <CJK>
+0xC575	0x6524	# <CJK>
+0xC576	0x6B0A	# <CJK>
+0xC577	0x6B61	# <CJK>
+0xC578	0x7051	# <CJK>
+0xC579	0x7058	# <CJK>
+0xC57A	0x7380	# <CJK>
+0xC57B	0x74E4	# <CJK>
+0xC57C	0x758A	# <CJK>
+0xC57D	0x766E	# <CJK>
+0xC57E	0x766C	# <CJK>
+0xC5A1	0x79B3	# <CJK>
+0xC5A2	0x7C60	# <CJK>
+0xC5A3	0x7C5F	# <CJK>
+0xC5A4	0x807E	# <CJK>
+0xC5A5	0x807D	# <CJK>
+0xC5A6	0x81DF	# <CJK>
+0xC5A7	0x8972	# <CJK>
+0xC5A8	0x896F	# <CJK>
+0xC5A9	0x89FC	# <CJK>
+0xC5AA	0x8B80	# <CJK>
+0xC5AB	0x8D16	# <CJK>
+0xC5AC	0x8D17	# <CJK>
+0xC5AD	0x8E91	# <CJK>
+0xC5AE	0x8E93	# <CJK>
+0xC5AF	0x8F61	# <CJK>
+0xC5B0	0x9148	# <CJK>
+0xC5B1	0x9444	# <CJK>
+0xC5B2	0x9451	# <CJK>
+0xC5B3	0x9452	# <CJK>
+0xC5B4	0x973D	# <CJK>
+0xC5B5	0x973E	# <CJK>
+0xC5B6	0x97C3	# <CJK>
+0xC5B7	0x97C1	# <CJK>
+0xC5B8	0x986B	# <CJK>
+0xC5B9	0x9955	# <CJK>
+0xC5BA	0x9A55	# <CJK>
+0xC5BB	0x9A4D	# <CJK>
+0xC5BC	0x9AD2	# <CJK>
+0xC5BD	0x9B1A	# <CJK>
+0xC5BE	0x9C49	# <CJK>
+0xC5BF	0x9C31	# <CJK>
+0xC5C0	0x9C3E	# <CJK>
+0xC5C1	0x9C3B	# <CJK>
+0xC5C2	0x9DD3	# <CJK>
+0xC5C3	0x9DD7	# <CJK>
+0xC5C4	0x9F34	# <CJK>
+0xC5C5	0x9F6C	# <CJK>
+0xC5C6	0x9F6A	# <CJK>
+0xC5C7	0x9F94	# <CJK>
+0xC5C8	0x56CC	# <CJK>
+0xC5C9	0x5DD6	# <CJK>
+0xC5CA	0x6200	# <CJK>
+0xC5CB	0x6523	# <CJK>
+0xC5CC	0x652B	# <CJK>
+0xC5CD	0x652A	# <CJK>
+0xC5CE	0x66EC	# <CJK>
+0xC5CF	0x6B10	# <CJK>
+0xC5D0	0x74DA	# <CJK>
+0xC5D1	0x7ACA	# <CJK>
+0xC5D2	0x7C64	# <CJK>
+0xC5D3	0x7C63	# <CJK>
+0xC5D4	0x7C65	# <CJK>
+0xC5D5	0x7E93	# <CJK>
+0xC5D6	0x7E96	# <CJK>
+0xC5D7	0x7E94	# <CJK>
+0xC5D8	0x81E2	# <CJK>
+0xC5D9	0x8638	# <CJK>
+0xC5DA	0x863F	# <CJK>
+0xC5DB	0x8831	# <CJK>
+0xC5DC	0x8B8A	# <CJK>
+0xC5DD	0x9090	# <CJK>
+0xC5DE	0x908F	# <CJK>
+0xC5DF	0x9463	# <CJK>
+0xC5E0	0x9460	# <CJK>
+0xC5E1	0x9464	# <CJK>
+0xC5E2	0x9768	# <CJK>
+0xC5E3	0x986F	# <CJK>
+0xC5E4	0x995C	# <CJK>
+0xC5E5	0x9A5A	# <CJK>
+0xC5E6	0x9A5B	# <CJK>
+0xC5E7	0x9A57	# <CJK>
+0xC5E8	0x9AD3	# <CJK>
+0xC5E9	0x9AD4	# <CJK>
+0xC5EA	0x9AD1	# <CJK>
+0xC5EB	0x9C54	# <CJK>
+0xC5EC	0x9C57	# <CJK>
+0xC5ED	0x9C56	# <CJK>
+0xC5EE	0x9DE5	# <CJK>
+0xC5EF	0x9E9F	# <CJK>
+0xC5F0	0x9EF4	# <CJK>
+0xC5F1	0x56D1	# <CJK>
+0xC5F2	0x58E9	# <CJK>
+0xC5F3	0x652C	# <CJK>
+0xC5F4	0x705E	# <CJK>
+0xC5F5	0x7671	# <CJK>
+0xC5F6	0x7672	# <CJK>
+0xC5F7	0x77D7	# <CJK>
+0xC5F8	0x7F50	# <CJK>
+0xC5F9	0x7F88	# <CJK>
+0xC5FA	0x8836	# <CJK>
+0xC5FB	0x8839	# <CJK>
+0xC5FC	0x8862	# <CJK>
+0xC5FD	0x8B93	# <CJK>
+0xC5FE	0x8B92	# <CJK>
+0xC640	0x8B96	# <CJK>
+0xC641	0x8277	# <CJK>
+0xC642	0x8D1B	# <CJK>
+0xC643	0x91C0	# <CJK>
+0xC644	0x946A	# <CJK>
+0xC645	0x9742	# <CJK>
+0xC646	0x9748	# <CJK>
+0xC647	0x9744	# <CJK>
+0xC648	0x97C6	# <CJK>
+0xC649	0x9870	# <CJK>
+0xC64A	0x9A5F	# <CJK>
+0xC64B	0x9B22	# <CJK>
+0xC64C	0x9B58	# <CJK>
+0xC64D	0x9C5F	# <CJK>
+0xC64E	0x9DF9	# <CJK>
+0xC64F	0x9DFA	# <CJK>
+0xC650	0x9E7C	# <CJK>
+0xC651	0x9E7D	# <CJK>
+0xC652	0x9F07	# <CJK>
+0xC653	0x9F77	# <CJK>
+0xC654	0x9F72	# <CJK>
+0xC655	0x5EF3	# <CJK>
+0xC656	0x6B16	# <CJK>
+0xC657	0x7063	# <CJK>
+0xC658	0x7C6C	# <CJK>
+0xC659	0x7C6E	# <CJK>
+0xC65A	0x883B	# <CJK>
+0xC65B	0x89C0	# <CJK>
+0xC65C	0x8EA1	# <CJK>
+0xC65D	0x91C1	# <CJK>
+0xC65E	0x9472	# <CJK>
+0xC65F	0x9470	# <CJK>
+0xC660	0x9871	# <CJK>
+0xC661	0x995E	# <CJK>
+0xC662	0x9AD6	# <CJK>
+0xC663	0x9B23	# <CJK>
+0xC664	0x9ECC	# <CJK>
+0xC665	0x7064	# <CJK>
+0xC666	0x77DA	# <CJK>
+0xC667	0x8B9A	# <CJK>
+0xC668	0x9477	# <CJK>
+0xC669	0x97C9	# <CJK>
+0xC66A	0x9A62	# <CJK>
+0xC66B	0x9A65	# <CJK>
+0xC66C	0x7E9C	# <CJK>
+0xC66D	0x8B9C	# <CJK>
+0xC66E	0x8EAA	# <CJK>
+0xC66F	0x91C5	# <CJK>
+0xC670	0x947D	# <CJK>
+0xC671	0x947E	# <CJK>
+0xC672	0x947C	# <CJK>
+0xC673	0x9C77	# <CJK>
+0xC674	0x9C78	# <CJK>
+0xC675	0x9EF7	# <CJK>
+0xC676	0x8C54	# <CJK>
+0xC677	0x947F	# <CJK>
+0xC678	0x9E1A	# <CJK>
+0xC679	0x7228	# <CJK>
+0xC67A	0x9A6A	# <CJK>
+0xC67B	0x9B31	# <CJK>
+0xC67C	0x9E1B	# <CJK>
+0xC67D	0x9E1E	# <CJK>
+0xC67E	0x7C72	# <CJK>
+0xC6A1	0x30FE	# KATAKANA VOICED ITERATION MARK
+0xC6A2	0x309D	# HIRAGANA ITERATION MARK
+0xC6A3	0x309E	# HIRAGANA VOICED ITERATION MARK
+0xC6A4	0x3005	# IDEOGRAPHIC ITERATION MARK
+0xC6A5	0x3041	# HIRAGANA LETTER SMALL A
+0xC6A6	0x3042	# HIRAGANA LETTER A
+0xC6A7	0x3043	# HIRAGANA LETTER SMALL I
+0xC6A8	0x3044	# HIRAGANA LETTER I
+0xC6A9	0x3045	# HIRAGANA LETTER SMALL U
+0xC6AA	0x3046	# HIRAGANA LETTER U
+0xC6AB	0x3047	# HIRAGANA LETTER SMALL E
+0xC6AC	0x3048	# HIRAGANA LETTER E
+0xC6AD	0x3049	# HIRAGANA LETTER SMALL O
+0xC6AE	0x304A	# HIRAGANA LETTER O
+0xC6AF	0x304B	# HIRAGANA LETTER KA
+0xC6B0	0x304C	# HIRAGANA LETTER GA
+0xC6B1	0x304D	# HIRAGANA LETTER KI
+0xC6B2	0x304E	# HIRAGANA LETTER GI
+0xC6B3	0x304F	# HIRAGANA LETTER KU
+0xC6B4	0x3050	# HIRAGANA LETTER GU
+0xC6B5	0x3051	# HIRAGANA LETTER KE
+0xC6B6	0x3052	# HIRAGANA LETTER GE
+0xC6B7	0x3053	# HIRAGANA LETTER KO
+0xC6B8	0x3054	# HIRAGANA LETTER GO
+0xC6B9	0x3055	# HIRAGANA LETTER SA
+0xC6BA	0x3056	# HIRAGANA LETTER ZA
+0xC6BB	0x3057	# HIRAGANA LETTER SI
+0xC6BC	0x3058	# HIRAGANA LETTER ZI
+0xC6BD	0x3059	# HIRAGANA LETTER SU
+0xC6BE	0x305A	# HIRAGANA LETTER ZU
+0xC6BF	0x305B	# HIRAGANA LETTER SE
+0xC6C0	0x305C	# HIRAGANA LETTER ZE
+0xC6C1	0x305D	# HIRAGANA LETTER SO
+0xC6C2	0x305E	# HIRAGANA LETTER ZO
+0xC6C3	0x305F	# HIRAGANA LETTER TA
+0xC6C4	0x3060	# HIRAGANA LETTER DA
+0xC6C5	0x3061	# HIRAGANA LETTER TI
+0xC6C6	0x3062	# HIRAGANA LETTER DI
+0xC6C7	0x3063	# HIRAGANA LETTER SMALL TU
+0xC6C8	0x3064	# HIRAGANA LETTER TU
+0xC6C9	0x3065	# HIRAGANA LETTER DU
+0xC6CA	0x3066	# HIRAGANA LETTER TE
+0xC6CB	0x3067	# HIRAGANA LETTER DE
+0xC6CC	0x3068	# HIRAGANA LETTER TO
+0xC6CD	0x3069	# HIRAGANA LETTER DO
+0xC6CE	0x306A	# HIRAGANA LETTER NA
+0xC6CF	0x306B	# HIRAGANA LETTER NI
+0xC6D0	0x306C	# HIRAGANA LETTER NU
+0xC6D1	0x306D	# HIRAGANA LETTER NE
+0xC6D2	0x306E	# HIRAGANA LETTER NO
+0xC6D3	0x306F	# HIRAGANA LETTER HA
+0xC6D4	0x3070	# HIRAGANA LETTER BA
+0xC6D5	0x3071	# HIRAGANA LETTER PA
+0xC6D6	0x3072	# HIRAGANA LETTER HI
+0xC6D7	0x3073	# HIRAGANA LETTER BI
+0xC6D8	0x3074	# HIRAGANA LETTER PI
+0xC6D9	0x3075	# HIRAGANA LETTER HU
+0xC6DA	0x3076	# HIRAGANA LETTER BU
+0xC6DB	0x3077	# HIRAGANA LETTER PU
+0xC6DC	0x3078	# HIRAGANA LETTER HE
+0xC6DD	0x3079	# HIRAGANA LETTER BE
+0xC6DE	0x307A	# HIRAGANA LETTER PE
+0xC6DF	0x307B	# HIRAGANA LETTER HO
+0xC6E0	0x307C	# HIRAGANA LETTER BO
+0xC6E1	0x307D	# HIRAGANA LETTER PO
+0xC6E2	0x307E	# HIRAGANA LETTER MA
+0xC6E3	0x307F	# HIRAGANA LETTER MI
+0xC6E4	0x3080	# HIRAGANA LETTER MU
+0xC6E5	0x3081	# HIRAGANA LETTER ME
+0xC6E6	0x3082	# HIRAGANA LETTER MO
+0xC6E7	0x3083	# HIRAGANA LETTER SMALL YA
+0xC6E8	0x3084	# HIRAGANA LETTER YA
+0xC6E9	0x3085	# HIRAGANA LETTER SMALL YU
+0xC6EA	0x3086	# HIRAGANA LETTER YU
+0xC6EB	0x3087	# HIRAGANA LETTER SMALL YO
+0xC6EC	0x3088	# HIRAGANA LETTER YO
+0xC6ED	0x3089	# HIRAGANA LETTER RA
+0xC6EE	0x308A	# HIRAGANA LETTER RI
+0xC6EF	0x308B	# HIRAGANA LETTER RU
+0xC6F0	0x308C	# HIRAGANA LETTER RE
+0xC6F1	0x308D	# HIRAGANA LETTER RO
+0xC6F2	0x308E	# HIRAGANA LETTER SMALL WA
+0xC6F3	0x308F	# HIRAGANA LETTER WA
+0xC6F4	0x3090	# HIRAGANA LETTER WI
+0xC6F5	0x3091	# HIRAGANA LETTER WE
+0xC6F6	0x3092	# HIRAGANA LETTER WO
+0xC6F7	0x3093	# HIRAGANA LETTER N
+0xC6F8	0x30A1	# KATAKANA LETTER SMALL A
+0xC6F9	0x30A2	# KATAKANA LETTER A
+0xC6FA	0x30A3	# KATAKANA LETTER SMALL I
+0xC6FB	0x30A4	# KATAKANA LETTER I
+0xC6FC	0x30A5	# KATAKANA LETTER SMALL U
+0xC6FD	0x30A6	# KATAKANA LETTER U
+0xC6FE	0x30A7	# KATAKANA LETTER SMALL E
+0xC740	0x30A8	# KATAKANA LETTER E
+0xC741	0x30A9	# KATAKANA LETTER SMALL O
+0xC742	0x30AA	# KATAKANA LETTER O
+0xC743	0x30AB	# KATAKANA LETTER KA
+0xC744	0x30AC	# KATAKANA LETTER GA
+0xC745	0x30AD	# KATAKANA LETTER KI
+0xC746	0x30AE	# KATAKANA LETTER GI
+0xC747	0x30AF	# KATAKANA LETTER KU
+0xC748	0x30B0	# KATAKANA LETTER GU
+0xC749	0x30B1	# KATAKANA LETTER KE
+0xC74A	0x30B2	# KATAKANA LETTER GE
+0xC74B	0x30B3	# KATAKANA LETTER KO
+0xC74C	0x30B4	# KATAKANA LETTER GO
+0xC74D	0x30B5	# KATAKANA LETTER SA
+0xC74E	0x30B6	# KATAKANA LETTER ZA
+0xC74F	0x30B7	# KATAKANA LETTER SI
+0xC750	0x30B8	# KATAKANA LETTER ZI
+0xC751	0x30B9	# KATAKANA LETTER SU
+0xC752	0x30BA	# KATAKANA LETTER ZU
+0xC753	0x30BB	# KATAKANA LETTER SE
+0xC754	0x30BC	# KATAKANA LETTER ZE
+0xC755	0x30BD	# KATAKANA LETTER SO
+0xC756	0x30BE	# KATAKANA LETTER ZO
+0xC757	0x30BF	# KATAKANA LETTER TA
+0xC758	0x30C0	# KATAKANA LETTER DA
+0xC759	0x30C1	# KATAKANA LETTER TI
+0xC75A	0x30C2	# KATAKANA LETTER DI
+0xC75B	0x30C3	# KATAKANA LETTER SMALL TU
+0xC75C	0x30C4	# KATAKANA LETTER TU
+0xC75D	0x30C5	# KATAKANA LETTER DU
+0xC75E	0x30C6	# KATAKANA LETTER TE
+0xC75F	0x30C7	# KATAKANA LETTER DE
+0xC760	0x30C8	# KATAKANA LETTER TO
+0xC761	0x30C9	# KATAKANA LETTER DO
+0xC762	0x30CA	# KATAKANA LETTER NA
+0xC763	0x30CB	# KATAKANA LETTER NI
+0xC764	0x30CC	# KATAKANA LETTER NU
+0xC765	0x30CD	# KATAKANA LETTER NE
+0xC766	0x30CE	# KATAKANA LETTER NO
+0xC767	0x30CF	# KATAKANA LETTER HA
+0xC768	0x30D0	# KATAKANA LETTER BA
+0xC769	0x30D1	# KATAKANA LETTER PA
+0xC76A	0x30D2	# KATAKANA LETTER HI
+0xC76B	0x30D3	# KATAKANA LETTER BI
+0xC76C	0x30D4	# KATAKANA LETTER PI
+0xC76D	0x30D5	# KATAKANA LETTER HU
+0xC76E	0x30D6	# KATAKANA LETTER BU
+0xC76F	0x30D7	# KATAKANA LETTER PU
+0xC770	0x30D8	# KATAKANA LETTER HE
+0xC771	0x30D9	# KATAKANA LETTER BE
+0xC772	0x30DA	# KATAKANA LETTER PE
+0xC773	0x30DB	# KATAKANA LETTER HO
+0xC774	0x30DC	# KATAKANA LETTER BO
+0xC775	0x30DD	# KATAKANA LETTER PO
+0xC776	0x30DE	# KATAKANA LETTER MA
+0xC777	0x30DF	# KATAKANA LETTER MI
+0xC778	0x30E0	# KATAKANA LETTER MU
+0xC779	0x30E1	# KATAKANA LETTER ME
+0xC77A	0x30E2	# KATAKANA LETTER MO
+0xC77B	0x30E3	# KATAKANA LETTER SMALL YA
+0xC77C	0x30E4	# KATAKANA LETTER YA
+0xC77D	0x30E5	# KATAKANA LETTER SMALL YU
+0xC77E	0x30E6	# KATAKANA LETTER YU
+0xC7A1	0x30E7	# KATAKANA LETTER SMALL YO
+0xC7A2	0x30E8	# KATAKANA LETTER YO
+0xC7A3	0x30E9	# KATAKANA LETTER RA
+0xC7A4	0x30EA	# KATAKANA LETTER RI
+0xC7A5	0x30EB	# KATAKANA LETTER RU
+0xC7A6	0x30EC	# KATAKANA LETTER RE
+0xC7A7	0x30ED	# KATAKANA LETTER RO
+0xC7A8	0x30EE	# KATAKANA LETTER SMALL WA
+0xC7A9	0x30EF	# KATAKANA LETTER WA
+0xC7AA	0x30F0	# KATAKANA LETTER WI
+0xC7AB	0x30F1	# KATAKANA LETTER WE
+0xC7AC	0x30F2	# KATAKANA LETTER WO
+0xC7AD	0x30F3	# KATAKANA LETTER N
+0xC7AE	0x30F4	# KATAKANA LETTER VU
+0xC7AF	0x30F5	# KATAKANA LETTER SMALL KA
+0xC7B0	0x30F6	# KATAKANA LETTER SMALL KE
+0xC7B1	0x0414	# CYRILLIC CAPITAL LETTER DE
+0xC7B2	0x0415	# CYRILLIC CAPITAL LETTER IE
+0xC7B3	0x0401	# CYRILLIC CAPITAL LETTER IO
+0xC7B4	0x0416	# CYRILLIC CAPITAL LETTER ZHE
+0xC7B5	0x0417	# CYRILLIC CAPITAL LETTER ZE
+0xC7B6	0x0418	# CYRILLIC CAPITAL LETTER I
+0xC7B7	0x0419	# CYRILLIC CAPITAL LETTER SHORT I
+0xC7B8	0x041A	# CYRILLIC CAPITAL LETTER KA
+0xC7B9	0x041B	# CYRILLIC CAPITAL LETTER EL
+0xC7BA	0x041C	# CYRILLIC CAPITAL LETTER EM
+0xC7BB	0x0423	# CYRILLIC CAPITAL LETTER U
+0xC7BC	0x0424	# CYRILLIC CAPITAL LETTER EF
+0xC7BD	0x0425	# CYRILLIC CAPITAL LETTER HA
+0xC7BE	0x0426	# CYRILLIC CAPITAL LETTER TSE
+0xC7BF	0x0427	# CYRILLIC CAPITAL LETTER CHE
+0xC7C0	0x0428	# CYRILLIC CAPITAL LETTER SHA
+0xC7C1	0x0429	# CYRILLIC CAPITAL LETTER SHCHA
+0xC7C2	0x042A	# CYRILLIC CAPITAL LETTER HARD SIGN
+0xC7C3	0x042B	# CYRILLIC CAPITAL LETTER YERU
+0xC7C4	0x042C	# CYRILLIC CAPITAL LETTER SOFT SIGN
+0xC7C5	0x042D	# CYRILLIC CAPITAL LETTER E
+0xC7C6	0x042E	# CYRILLIC CAPITAL LETTER YU
+0xC7C7	0x042F	# CYRILLIC CAPITAL LETTER YA
+0xC7C8	0x0430	# CYRILLIC SMALL LETTER A
+0xC7C9	0x0431	# CYRILLIC SMALL LETTER BE
+0xC7CA	0x0432	# CYRILLIC SMALL LETTER VE
+0xC7CB	0x0433	# CYRILLIC SMALL LETTER GHE
+0xC7CC	0x0434	# CYRILLIC SMALL LETTER DE
+0xC7CD	0x0435	# CYRILLIC SMALL LETTER IE
+0xC7CE	0x0451	# CYRILLIC SMALL LETTER IO
+0xC7CF	0x0436	# CYRILLIC SMALL LETTER ZHE
+0xC7D0	0x0437	# CYRILLIC SMALL LETTER ZE
+0xC7D1	0x0438	# CYRILLIC SMALL LETTER I
+0xC7D2	0x0439	# CYRILLIC SMALL LETTER SHORT I
+0xC7D3	0x043A	# CYRILLIC SMALL LETTER KA
+0xC7D4	0x043B	# CYRILLIC SMALL LETTER EL
+0xC7D5	0x043C	# CYRILLIC SMALL LETTER EM
+0xC7D6	0x043D	# CYRILLIC SMALL LETTER EN
+0xC7D7	0x043E	# CYRILLIC SMALL LETTER O
+0xC7D8	0x043F	# CYRILLIC SMALL LETTER PE
+0xC7D9	0x0440	# CYRILLIC SMALL LETTER ER
+0xC7DA	0x0441	# CYRILLIC SMALL LETTER ES
+0xC7DB	0x0442	# CYRILLIC SMALL LETTER TE
+0xC7DC	0x0443	# CYRILLIC SMALL LETTER U
+0xC7DD	0x0444	# CYRILLIC SMALL LETTER EF
+0xC7DE	0x0445	# CYRILLIC SMALL LETTER HA
+0xC7DF	0x0446	# CYRILLIC SMALL LETTER TSE
+0xC7E0	0x0447	# CYRILLIC SMALL LETTER CHE
+0xC7E1	0x0448	# CYRILLIC SMALL LETTER SHA
+0xC7E2	0x0449	# CYRILLIC SMALL LETTER SHCHA
+0xC7E3	0x044A	# CYRILLIC SMALL LETTER HARD SIGN
+0xC7E4	0x044B	# CYRILLIC SMALL LETTER YERU
+0xC7E5	0x044C	# CYRILLIC SMALL LETTER SOFT SIGN
+0xC7E6	0x044D	# CYRILLIC SMALL LETTER E
+0xC7E7	0x044E	# CYRILLIC SMALL LETTER YU
+0xC7E8	0x044F	# CYRILLIC SMALL LETTER YA
+0xC7E9	0x2460	# CIRCLED DIGIT ONE
+0xC7EA	0x2461	# CIRCLED DIGIT TWO
+0xC7EB	0x2462	# CIRCLED DIGIT THREE
+0xC7EC	0x2463	# CIRCLED DIGIT FOUR
+0xC7ED	0x2464	# CIRCLED DIGIT FIVE
+0xC7EE	0x2465	# CIRCLED DIGIT SIX
+0xC7EF	0x2466	# CIRCLED DIGIT SEVEN
+0xC7F0	0x2467	# CIRCLED DIGIT EIGHT
+0xC7F1	0x2468	# CIRCLED DIGIT NINE
+0xC7F2	0x2469	# CIRCLED NUMBER TEN
+0xC7F3	0x2474	# PARENTHESIZED DIGIT ONE
+0xC7F4	0x2475	# PARENTHESIZED DIGIT TWO
+0xC7F5	0x2476	# PARENTHESIZED DIGIT THREE
+0xC7F6	0x2477	# PARENTHESIZED DIGIT FOUR
+0xC7F7	0x2478	# PARENTHESIZED DIGIT FIVE
+0xC7F8	0x2479	# PARENTHESIZED DIGIT SIX
+0xC7F9	0x247A	# PARENTHESIZED DIGIT SEVEN
+0xC7FA	0x247B	# PARENTHESIZED DIGIT EIGHT
+0xC7FB	0x247C	# PARENTHESIZED DIGIT NINE
+0xC7FC	0x247D	# PARENTHESIZED NUMBER TEN
+0xC940	0x4E42	# <CJK>
+0xC941	0x4E5C	# <CJK>
+0xC942	0x51F5	# <CJK>
+0xC943	0x531A	# <CJK>
+0xC944	0x5382	# <CJK>
+0xC945	0x4E07	# <CJK>
+0xC946	0x4E0C	# <CJK>
+0xC947	0x4E47	# <CJK>
+0xC948	0x4E8D	# <CJK>
+0xC949	0x56D7	# <CJK>
+0xC94A	0xFA0C	# CJK COMPATIBILITY IDEOGRAPH-FA0C
+0xC94B	0x5C6E	# <CJK>
+0xC94C	0x5F73	# <CJK>
+0xC94D	0x4E0F	# <CJK>
+0xC94E	0x5187	# <CJK>
+0xC94F	0x4E0E	# <CJK>
+0xC950	0x4E2E	# <CJK>
+0xC951	0x4E93	# <CJK>
+0xC952	0x4EC2	# <CJK>
+0xC953	0x4EC9	# <CJK>
+0xC954	0x4EC8	# <CJK>
+0xC955	0x5198	# <CJK>
+0xC956	0x52FC	# <CJK>
+0xC957	0x536C	# <CJK>
+0xC958	0x53B9	# <CJK>
+0xC959	0x5720	# <CJK>
+0xC95A	0x5903	# <CJK>
+0xC95B	0x592C	# <CJK>
+0xC95C	0x5C10	# <CJK>
+0xC95D	0x5DFF	# <CJK>
+0xC95E	0x65E1	# <CJK>
+0xC95F	0x6BB3	# <CJK>
+0xC960	0x6BCC	# <CJK>
+0xC961	0x6C14	# <CJK>
+0xC962	0x723F	# <CJK>
+0xC963	0x4E31	# <CJK>
+0xC964	0x4E3C	# <CJK>
+0xC965	0x4EE8	# <CJK>
+0xC966	0x4EDC	# <CJK>
+0xC967	0x4EE9	# <CJK>
+0xC968	0x4EE1	# <CJK>
+0xC969	0x4EDD	# <CJK>
+0xC96A	0x4EDA	# <CJK>
+0xC96B	0x520C	# <CJK>
+0xC96C	0x531C	# <CJK>
+0xC96D	0x534C	# <CJK>
+0xC96E	0x5722	# <CJK>
+0xC96F	0x5723	# <CJK>
+0xC970	0x5917	# <CJK>
+0xC971	0x592F	# <CJK>
+0xC972	0x5B81	# <CJK>
+0xC973	0x5B84	# <CJK>
+0xC974	0x5C12	# <CJK>
+0xC975	0x5C3B	# <CJK>
+0xC976	0x5C74	# <CJK>
+0xC977	0x5C73	# <CJK>
+0xC978	0x5E04	# <CJK>
+0xC979	0x5E80	# <CJK>
+0xC97A	0x5E82	# <CJK>
+0xC97B	0x5FC9	# <CJK>
+0xC97C	0x6209	# <CJK>
+0xC97D	0x6250	# <CJK>
+0xC97E	0x6C15	# <CJK>
+0xC9A1	0x6C36	# <CJK>
+0xC9A2	0x6C43	# <CJK>
+0xC9A3	0x6C3F	# <CJK>
+0xC9A4	0x6C3B	# <CJK>
+0xC9A5	0x72AE	# <CJK>
+0xC9A6	0x72B0	# <CJK>
+0xC9A7	0x738A	# <CJK>
+0xC9A8	0x79B8	# <CJK>
+0xC9A9	0x808A	# <CJK>
+0xC9AA	0x961E	# <CJK>
+0xC9AB	0x4F0E	# <CJK>
+0xC9AC	0x4F18	# <CJK>
+0xC9AD	0x4F2C	# <CJK>
+0xC9AE	0x4EF5	# <CJK>
+0xC9AF	0x4F14	# <CJK>
+0xC9B0	0x4EF1	# <CJK>
+0xC9B1	0x4F00	# <CJK>
+0xC9B2	0x4EF7	# <CJK>
+0xC9B3	0x4F08	# <CJK>
+0xC9B4	0x4F1D	# <CJK>
+0xC9B5	0x4F02	# <CJK>
+0xC9B6	0x4F05	# <CJK>
+0xC9B7	0x4F22	# <CJK>
+0xC9B8	0x4F13	# <CJK>
+0xC9B9	0x4F04	# <CJK>
+0xC9BA	0x4EF4	# <CJK>
+0xC9BB	0x4F12	# <CJK>
+0xC9BC	0x51B1	# <CJK>
+0xC9BD	0x5213	# <CJK>
+0xC9BE	0x5209	# <CJK>
+0xC9BF	0x5210	# <CJK>
+0xC9C0	0x52A6	# <CJK>
+0xC9C1	0x5322	# <CJK>
+0xC9C2	0x531F	# <CJK>
+0xC9C3	0x534D	# <CJK>
+0xC9C4	0x538A	# <CJK>
+0xC9C5	0x5407	# <CJK>
+0xC9C6	0x56E1	# <CJK>
+0xC9C7	0x56DF	# <CJK>
+0xC9C8	0x572E	# <CJK>
+0xC9C9	0x572A	# <CJK>
+0xC9CA	0x5734	# <CJK>
+0xC9CB	0x593C	# <CJK>
+0xC9CC	0x5980	# <CJK>
+0xC9CD	0x597C	# <CJK>
+0xC9CE	0x5985	# <CJK>
+0xC9CF	0x597B	# <CJK>
+0xC9D0	0x597E	# <CJK>
+0xC9D1	0x5977	# <CJK>
+0xC9D2	0x597F	# <CJK>
+0xC9D3	0x5B56	# <CJK>
+0xC9D4	0x5C15	# <CJK>
+0xC9D5	0x5C25	# <CJK>
+0xC9D6	0x5C7C	# <CJK>
+0xC9D7	0x5C7A	# <CJK>
+0xC9D8	0x5C7B	# <CJK>
+0xC9D9	0x5C7E	# <CJK>
+0xC9DA	0x5DDF	# <CJK>
+0xC9DB	0x5E75	# <CJK>
+0xC9DC	0x5E84	# <CJK>
+0xC9DD	0x5F02	# <CJK>
+0xC9DE	0x5F1A	# <CJK>
+0xC9DF	0x5F74	# <CJK>
+0xC9E0	0x5FD5	# <CJK>
+0xC9E1	0x5FD4	# <CJK>
+0xC9E2	0x5FCF	# <CJK>
+0xC9E3	0x625C	# <CJK>
+0xC9E4	0x625E	# <CJK>
+0xC9E5	0x6264	# <CJK>
+0xC9E6	0x6261	# <CJK>
+0xC9E7	0x6266	# <CJK>
+0xC9E8	0x6262	# <CJK>
+0xC9E9	0x6259	# <CJK>
+0xC9EA	0x6260	# <CJK>
+0xC9EB	0x625A	# <CJK>
+0xC9EC	0x6265	# <CJK>
+0xC9ED	0x65EF	# <CJK>
+0xC9EE	0x65EE	# <CJK>
+0xC9EF	0x673E	# <CJK>
+0xC9F0	0x6739	# <CJK>
+0xC9F1	0x6738	# <CJK>
+0xC9F2	0x673B	# <CJK>
+0xC9F3	0x673A	# <CJK>
+0xC9F4	0x673F	# <CJK>
+0xC9F5	0x673C	# <CJK>
+0xC9F6	0x6733	# <CJK>
+0xC9F7	0x6C18	# <CJK>
+0xC9F8	0x6C46	# <CJK>
+0xC9F9	0x6C52	# <CJK>
+0xC9FA	0x6C5C	# <CJK>
+0xC9FB	0x6C4F	# <CJK>
+0xC9FC	0x6C4A	# <CJK>
+0xC9FD	0x6C54	# <CJK>
+0xC9FE	0x6C4B	# <CJK>
+0xCA40	0x6C4C	# <CJK>
+0xCA41	0x7071	# <CJK>
+0xCA42	0x725E	# <CJK>
+0xCA43	0x72B4	# <CJK>
+0xCA44	0x72B5	# <CJK>
+0xCA45	0x738E	# <CJK>
+0xCA46	0x752A	# <CJK>
+0xCA47	0x767F	# <CJK>
+0xCA48	0x7A75	# <CJK>
+0xCA49	0x7F51	# <CJK>
+0xCA4A	0x8278	# <CJK>
+0xCA4B	0x827C	# <CJK>
+0xCA4C	0x8280	# <CJK>
+0xCA4D	0x827D	# <CJK>
+0xCA4E	0x827F	# <CJK>
+0xCA4F	0x864D	# <CJK>
+0xCA50	0x897E	# <CJK>
+0xCA51	0x9099	# <CJK>
+0xCA52	0x9097	# <CJK>
+0xCA53	0x9098	# <CJK>
+0xCA54	0x909B	# <CJK>
+0xCA55	0x9094	# <CJK>
+0xCA56	0x9622	# <CJK>
+0xCA57	0x9624	# <CJK>
+0xCA58	0x9620	# <CJK>
+0xCA59	0x9623	# <CJK>
+0xCA5A	0x4F56	# <CJK>
+0xCA5B	0x4F3B	# <CJK>
+0xCA5C	0x4F62	# <CJK>
+0xCA5D	0x4F49	# <CJK>
+0xCA5E	0x4F53	# <CJK>
+0xCA5F	0x4F64	# <CJK>
+0xCA60	0x4F3E	# <CJK>
+0xCA61	0x4F67	# <CJK>
+0xCA62	0x4F52	# <CJK>
+0xCA63	0x4F5F	# <CJK>
+0xCA64	0x4F41	# <CJK>
+0xCA65	0x4F58	# <CJK>
+0xCA66	0x4F2D	# <CJK>
+0xCA67	0x4F33	# <CJK>
+0xCA68	0x4F3F	# <CJK>
+0xCA69	0x4F61	# <CJK>
+0xCA6A	0x518F	# <CJK>
+0xCA6B	0x51B9	# <CJK>
+0xCA6C	0x521C	# <CJK>
+0xCA6D	0x521E	# <CJK>
+0xCA6E	0x5221	# <CJK>
+0xCA6F	0x52AD	# <CJK>
+0xCA70	0x52AE	# <CJK>
+0xCA71	0x5309	# <CJK>
+0xCA72	0x5363	# <CJK>
+0xCA73	0x5372	# <CJK>
+0xCA74	0x538E	# <CJK>
+0xCA75	0x538F	# <CJK>
+0xCA76	0x5430	# <CJK>
+0xCA77	0x5437	# <CJK>
+0xCA78	0x542A	# <CJK>
+0xCA79	0x5454	# <CJK>
+0xCA7A	0x5445	# <CJK>
+0xCA7B	0x5419	# <CJK>
+0xCA7C	0x541C	# <CJK>
+0xCA7D	0x5425	# <CJK>
+0xCA7E	0x5418	# <CJK>
+0xCAA1	0x543D	# <CJK>
+0xCAA2	0x544F	# <CJK>
+0xCAA3	0x5441	# <CJK>
+0xCAA4	0x5428	# <CJK>
+0xCAA5	0x5424	# <CJK>
+0xCAA6	0x5447	# <CJK>
+0xCAA7	0x56EE	# <CJK>
+0xCAA8	0x56E7	# <CJK>
+0xCAA9	0x56E5	# <CJK>
+0xCAAA	0x5741	# <CJK>
+0xCAAB	0x5745	# <CJK>
+0xCAAC	0x574C	# <CJK>
+0xCAAD	0x5749	# <CJK>
+0xCAAE	0x574B	# <CJK>
+0xCAAF	0x5752	# <CJK>
+0xCAB0	0x5906	# <CJK>
+0xCAB1	0x5940	# <CJK>
+0xCAB2	0x59A6	# <CJK>
+0xCAB3	0x5998	# <CJK>
+0xCAB4	0x59A0	# <CJK>
+0xCAB5	0x5997	# <CJK>
+0xCAB6	0x598E	# <CJK>
+0xCAB7	0x59A2	# <CJK>
+0xCAB8	0x5990	# <CJK>
+0xCAB9	0x598F	# <CJK>
+0xCABA	0x59A7	# <CJK>
+0xCABB	0x59A1	# <CJK>
+0xCABC	0x5B8E	# <CJK>
+0xCABD	0x5B92	# <CJK>
+0xCABE	0x5C28	# <CJK>
+0xCABF	0x5C2A	# <CJK>
+0xCAC0	0x5C8D	# <CJK>
+0xCAC1	0x5C8F	# <CJK>
+0xCAC2	0x5C88	# <CJK>
+0xCAC3	0x5C8B	# <CJK>
+0xCAC4	0x5C89	# <CJK>
+0xCAC5	0x5C92	# <CJK>
+0xCAC6	0x5C8A	# <CJK>
+0xCAC7	0x5C86	# <CJK>
+0xCAC8	0x5C93	# <CJK>
+0xCAC9	0x5C95	# <CJK>
+0xCACA	0x5DE0	# <CJK>
+0xCACB	0x5E0A	# <CJK>
+0xCACC	0x5E0E	# <CJK>
+0xCACD	0x5E8B	# <CJK>
+0xCACE	0x5E89	# <CJK>
+0xCACF	0x5E8C	# <CJK>
+0xCAD0	0x5E88	# <CJK>
+0xCAD1	0x5E8D	# <CJK>
+0xCAD2	0x5F05	# <CJK>
+0xCAD3	0x5F1D	# <CJK>
+0xCAD4	0x5F78	# <CJK>
+0xCAD5	0x5F76	# <CJK>
+0xCAD6	0x5FD2	# <CJK>
+0xCAD7	0x5FD1	# <CJK>
+0xCAD8	0x5FD0	# <CJK>
+0xCAD9	0x5FED	# <CJK>
+0xCADA	0x5FE8	# <CJK>
+0xCADB	0x5FEE	# <CJK>
+0xCADC	0x5FF3	# <CJK>
+0xCADD	0x5FE1	# <CJK>
+0xCADE	0x5FE4	# <CJK>
+0xCADF	0x5FE3	# <CJK>
+0xCAE0	0x5FFA	# <CJK>
+0xCAE1	0x5FEF	# <CJK>
+0xCAE2	0x5FF7	# <CJK>
+0xCAE3	0x5FFB	# <CJK>
+0xCAE4	0x6000	# <CJK>
+0xCAE5	0x5FF4	# <CJK>
+0xCAE6	0x623A	# <CJK>
+0xCAE7	0x6283	# <CJK>
+0xCAE8	0x628C	# <CJK>
+0xCAE9	0x628E	# <CJK>
+0xCAEA	0x628F	# <CJK>
+0xCAEB	0x6294	# <CJK>
+0xCAEC	0x6287	# <CJK>
+0xCAED	0x6271	# <CJK>
+0xCAEE	0x627B	# <CJK>
+0xCAEF	0x627A	# <CJK>
+0xCAF0	0x6270	# <CJK>
+0xCAF1	0x6281	# <CJK>
+0xCAF2	0x6288	# <CJK>
+0xCAF3	0x6277	# <CJK>
+0xCAF4	0x627D	# <CJK>
+0xCAF5	0x6272	# <CJK>
+0xCAF6	0x6274	# <CJK>
+0xCAF7	0x6537	# <CJK>
+0xCAF8	0x65F0	# <CJK>
+0xCAF9	0x65F4	# <CJK>
+0xCAFA	0x65F3	# <CJK>
+0xCAFB	0x65F2	# <CJK>
+0xCAFC	0x65F5	# <CJK>
+0xCAFD	0x6745	# <CJK>
+0xCAFE	0x6747	# <CJK>
+0xCB40	0x6759	# <CJK>
+0xCB41	0x6755	# <CJK>
+0xCB42	0x674C	# <CJK>
+0xCB43	0x6748	# <CJK>
+0xCB44	0x675D	# <CJK>
+0xCB45	0x674D	# <CJK>
+0xCB46	0x675A	# <CJK>
+0xCB47	0x674B	# <CJK>
+0xCB48	0x6BD0	# <CJK>
+0xCB49	0x6C19	# <CJK>
+0xCB4A	0x6C1A	# <CJK>
+0xCB4B	0x6C78	# <CJK>
+0xCB4C	0x6C67	# <CJK>
+0xCB4D	0x6C6B	# <CJK>
+0xCB4E	0x6C84	# <CJK>
+0xCB4F	0x6C8B	# <CJK>
+0xCB50	0x6C8F	# <CJK>
+0xCB51	0x6C71	# <CJK>
+0xCB52	0x6C6F	# <CJK>
+0xCB53	0x6C69	# <CJK>
+0xCB54	0x6C9A	# <CJK>
+0xCB55	0x6C6D	# <CJK>
+0xCB56	0x6C87	# <CJK>
+0xCB57	0x6C95	# <CJK>
+0xCB58	0x6C9C	# <CJK>
+0xCB59	0x6C66	# <CJK>
+0xCB5A	0x6C73	# <CJK>
+0xCB5B	0x6C65	# <CJK>
+0xCB5C	0x6C7B	# <CJK>
+0xCB5D	0x6C8E	# <CJK>
+0xCB5E	0x7074	# <CJK>
+0xCB5F	0x707A	# <CJK>
+0xCB60	0x7263	# <CJK>
+0xCB61	0x72BF	# <CJK>
+0xCB62	0x72BD	# <CJK>
+0xCB63	0x72C3	# <CJK>
+0xCB64	0x72C6	# <CJK>
+0xCB65	0x72C1	# <CJK>
+0xCB66	0x72BA	# <CJK>
+0xCB67	0x72C5	# <CJK>
+0xCB68	0x7395	# <CJK>
+0xCB69	0x7397	# <CJK>
+0xCB6A	0x7393	# <CJK>
+0xCB6B	0x7394	# <CJK>
+0xCB6C	0x7392	# <CJK>
+0xCB6D	0x753A	# <CJK>
+0xCB6E	0x7539	# <CJK>
+0xCB6F	0x7594	# <CJK>
+0xCB70	0x7595	# <CJK>
+0xCB71	0x7681	# <CJK>
+0xCB72	0x793D	# <CJK>
+0xCB73	0x8034	# <CJK>
+0xCB74	0x8095	# <CJK>
+0xCB75	0x8099	# <CJK>
+0xCB76	0x8090	# <CJK>
+0xCB77	0x8092	# <CJK>
+0xCB78	0x809C	# <CJK>
+0xCB79	0x8290	# <CJK>
+0xCB7A	0x828F	# <CJK>
+0xCB7B	0x8285	# <CJK>
+0xCB7C	0x828E	# <CJK>
+0xCB7D	0x8291	# <CJK>
+0xCB7E	0x8293	# <CJK>
+0xCBA1	0x828A	# <CJK>
+0xCBA2	0x8283	# <CJK>
+0xCBA3	0x8284	# <CJK>
+0xCBA4	0x8C78	# <CJK>
+0xCBA5	0x8FC9	# <CJK>
+0xCBA6	0x8FBF	# <CJK>
+0xCBA7	0x909F	# <CJK>
+0xCBA8	0x90A1	# <CJK>
+0xCBA9	0x90A5	# <CJK>
+0xCBAA	0x909E	# <CJK>
+0xCBAB	0x90A7	# <CJK>
+0xCBAC	0x90A0	# <CJK>
+0xCBAD	0x9630	# <CJK>
+0xCBAE	0x9628	# <CJK>
+0xCBAF	0x962F	# <CJK>
+0xCBB0	0x962D	# <CJK>
+0xCBB1	0x4E33	# <CJK>
+0xCBB2	0x4F98	# <CJK>
+0xCBB3	0x4F7C	# <CJK>
+0xCBB4	0x4F85	# <CJK>
+0xCBB5	0x4F7D	# <CJK>
+0xCBB6	0x4F80	# <CJK>
+0xCBB7	0x4F87	# <CJK>
+0xCBB8	0x4F76	# <CJK>
+0xCBB9	0x4F74	# <CJK>
+0xCBBA	0x4F89	# <CJK>
+0xCBBB	0x4F84	# <CJK>
+0xCBBC	0x4F77	# <CJK>
+0xCBBD	0x4F4C	# <CJK>
+0xCBBE	0x4F97	# <CJK>
+0xCBBF	0x4F6A	# <CJK>
+0xCBC0	0x4F9A	# <CJK>
+0xCBC1	0x4F79	# <CJK>
+0xCBC2	0x4F81	# <CJK>
+0xCBC3	0x4F78	# <CJK>
+0xCBC4	0x4F90	# <CJK>
+0xCBC5	0x4F9C	# <CJK>
+0xCBC6	0x4F94	# <CJK>
+0xCBC7	0x4F9E	# <CJK>
+0xCBC8	0x4F92	# <CJK>
+0xCBC9	0x4F82	# <CJK>
+0xCBCA	0x4F95	# <CJK>
+0xCBCB	0x4F6B	# <CJK>
+0xCBCC	0x4F6E	# <CJK>
+0xCBCD	0x519E	# <CJK>
+0xCBCE	0x51BC	# <CJK>
+0xCBCF	0x51BE	# <CJK>
+0xCBD0	0x5235	# <CJK>
+0xCBD1	0x5232	# <CJK>
+0xCBD2	0x5233	# <CJK>
+0xCBD3	0x5246	# <CJK>
+0xCBD4	0x5231	# <CJK>
+0xCBD5	0x52BC	# <CJK>
+0xCBD6	0x530A	# <CJK>
+0xCBD7	0x530B	# <CJK>
+0xCBD8	0x533C	# <CJK>
+0xCBD9	0x5392	# <CJK>
+0xCBDA	0x5394	# <CJK>
+0xCBDB	0x5487	# <CJK>
+0xCBDC	0x547F	# <CJK>
+0xCBDD	0x5481	# <CJK>
+0xCBDE	0x5491	# <CJK>
+0xCBDF	0x5482	# <CJK>
+0xCBE0	0x5488	# <CJK>
+0xCBE1	0x546B	# <CJK>
+0xCBE2	0x547A	# <CJK>
+0xCBE3	0x547E	# <CJK>
+0xCBE4	0x5465	# <CJK>
+0xCBE5	0x546C	# <CJK>
+0xCBE6	0x5474	# <CJK>
+0xCBE7	0x5466	# <CJK>
+0xCBE8	0x548D	# <CJK>
+0xCBE9	0x546F	# <CJK>
+0xCBEA	0x5461	# <CJK>
+0xCBEB	0x5460	# <CJK>
+0xCBEC	0x5498	# <CJK>
+0xCBED	0x5463	# <CJK>
+0xCBEE	0x5467	# <CJK>
+0xCBEF	0x5464	# <CJK>
+0xCBF0	0x56F7	# <CJK>
+0xCBF1	0x56F9	# <CJK>
+0xCBF2	0x576F	# <CJK>
+0xCBF3	0x5772	# <CJK>
+0xCBF4	0x576D	# <CJK>
+0xCBF5	0x576B	# <CJK>
+0xCBF6	0x5771	# <CJK>
+0xCBF7	0x5770	# <CJK>
+0xCBF8	0x5776	# <CJK>
+0xCBF9	0x5780	# <CJK>
+0xCBFA	0x5775	# <CJK>
+0xCBFB	0x577B	# <CJK>
+0xCBFC	0x5773	# <CJK>
+0xCBFD	0x5774	# <CJK>
+0xCBFE	0x5762	# <CJK>
+0xCC40	0x5768	# <CJK>
+0xCC41	0x577D	# <CJK>
+0xCC42	0x590C	# <CJK>
+0xCC43	0x5945	# <CJK>
+0xCC44	0x59B5	# <CJK>
+0xCC45	0x59BA	# <CJK>
+0xCC46	0x59CF	# <CJK>
+0xCC47	0x59CE	# <CJK>
+0xCC48	0x59B2	# <CJK>
+0xCC49	0x59CC	# <CJK>
+0xCC4A	0x59C1	# <CJK>
+0xCC4B	0x59B6	# <CJK>
+0xCC4C	0x59BC	# <CJK>
+0xCC4D	0x59C3	# <CJK>
+0xCC4E	0x59D6	# <CJK>
+0xCC4F	0x59B1	# <CJK>
+0xCC50	0x59BD	# <CJK>
+0xCC51	0x59C0	# <CJK>
+0xCC52	0x59C8	# <CJK>
+0xCC53	0x59B4	# <CJK>
+0xCC54	0x59C7	# <CJK>
+0xCC55	0x5B62	# <CJK>
+0xCC56	0x5B65	# <CJK>
+0xCC57	0x5B93	# <CJK>
+0xCC58	0x5B95	# <CJK>
+0xCC59	0x5C44	# <CJK>
+0xCC5A	0x5C47	# <CJK>
+0xCC5B	0x5CAE	# <CJK>
+0xCC5C	0x5CA4	# <CJK>
+0xCC5D	0x5CA0	# <CJK>
+0xCC5E	0x5CB5	# <CJK>
+0xCC5F	0x5CAF	# <CJK>
+0xCC60	0x5CA8	# <CJK>
+0xCC61	0x5CAC	# <CJK>
+0xCC62	0x5C9F	# <CJK>
+0xCC63	0x5CA3	# <CJK>
+0xCC64	0x5CAD	# <CJK>
+0xCC65	0x5CA2	# <CJK>
+0xCC66	0x5CAA	# <CJK>
+0xCC67	0x5CA7	# <CJK>
+0xCC68	0x5C9D	# <CJK>
+0xCC69	0x5CA5	# <CJK>
+0xCC6A	0x5CB6	# <CJK>
+0xCC6B	0x5CB0	# <CJK>
+0xCC6C	0x5CA6	# <CJK>
+0xCC6D	0x5E17	# <CJK>
+0xCC6E	0x5E14	# <CJK>
+0xCC6F	0x5E19	# <CJK>
+0xCC70	0x5F28	# <CJK>
+0xCC71	0x5F22	# <CJK>
+0xCC72	0x5F23	# <CJK>
+0xCC73	0x5F24	# <CJK>
+0xCC74	0x5F54	# <CJK>
+0xCC75	0x5F82	# <CJK>
+0xCC76	0x5F7E	# <CJK>
+0xCC77	0x5F7D	# <CJK>
+0xCC78	0x5FDE	# <CJK>
+0xCC79	0x5FE5	# <CJK>
+0xCC7A	0x602D	# <CJK>
+0xCC7B	0x6026	# <CJK>
+0xCC7C	0x6019	# <CJK>
+0xCC7D	0x6032	# <CJK>
+0xCC7E	0x600B	# <CJK>
+0xCCA1	0x6034	# <CJK>
+0xCCA2	0x600A	# <CJK>
+0xCCA3	0x6017	# <CJK>
+0xCCA4	0x6033	# <CJK>
+0xCCA5	0x601A	# <CJK>
+0xCCA6	0x601E	# <CJK>
+0xCCA7	0x602C	# <CJK>
+0xCCA8	0x6022	# <CJK>
+0xCCA9	0x600D	# <CJK>
+0xCCAA	0x6010	# <CJK>
+0xCCAB	0x602E	# <CJK>
+0xCCAC	0x6013	# <CJK>
+0xCCAD	0x6011	# <CJK>
+0xCCAE	0x600C	# <CJK>
+0xCCAF	0x6009	# <CJK>
+0xCCB0	0x601C	# <CJK>
+0xCCB1	0x6214	# <CJK>
+0xCCB2	0x623D	# <CJK>
+0xCCB3	0x62AD	# <CJK>
+0xCCB4	0x62B4	# <CJK>
+0xCCB5	0x62D1	# <CJK>
+0xCCB6	0x62BE	# <CJK>
+0xCCB7	0x62AA	# <CJK>
+0xCCB8	0x62B6	# <CJK>
+0xCCB9	0x62CA	# <CJK>
+0xCCBA	0x62AE	# <CJK>
+0xCCBB	0x62B3	# <CJK>
+0xCCBC	0x62AF	# <CJK>
+0xCCBD	0x62BB	# <CJK>
+0xCCBE	0x62A9	# <CJK>
+0xCCBF	0x62B0	# <CJK>
+0xCCC0	0x62B8	# <CJK>
+0xCCC1	0x653D	# <CJK>
+0xCCC2	0x65A8	# <CJK>
+0xCCC3	0x65BB	# <CJK>
+0xCCC4	0x6609	# <CJK>
+0xCCC5	0x65FC	# <CJK>
+0xCCC6	0x6604	# <CJK>
+0xCCC7	0x6612	# <CJK>
+0xCCC8	0x6608	# <CJK>
+0xCCC9	0x65FB	# <CJK>
+0xCCCA	0x6603	# <CJK>
+0xCCCB	0x660B	# <CJK>
+0xCCCC	0x660D	# <CJK>
+0xCCCD	0x6605	# <CJK>
+0xCCCE	0x65FD	# <CJK>
+0xCCCF	0x6611	# <CJK>
+0xCCD0	0x6610	# <CJK>
+0xCCD1	0x66F6	# <CJK>
+0xCCD2	0x670A	# <CJK>
+0xCCD3	0x6785	# <CJK>
+0xCCD4	0x676C	# <CJK>
+0xCCD5	0x678E	# <CJK>
+0xCCD6	0x6792	# <CJK>
+0xCCD7	0x6776	# <CJK>
+0xCCD8	0x677B	# <CJK>
+0xCCD9	0x6798	# <CJK>
+0xCCDA	0x6786	# <CJK>
+0xCCDB	0x6784	# <CJK>
+0xCCDC	0x6774	# <CJK>
+0xCCDD	0x678D	# <CJK>
+0xCCDE	0x678C	# <CJK>
+0xCCDF	0x677A	# <CJK>
+0xCCE0	0x679F	# <CJK>
+0xCCE1	0x6791	# <CJK>
+0xCCE2	0x6799	# <CJK>
+0xCCE3	0x6783	# <CJK>
+0xCCE4	0x677D	# <CJK>
+0xCCE5	0x6781	# <CJK>
+0xCCE6	0x6778	# <CJK>
+0xCCE7	0x6779	# <CJK>
+0xCCE8	0x6794	# <CJK>
+0xCCE9	0x6B25	# <CJK>
+0xCCEA	0x6B80	# <CJK>
+0xCCEB	0x6B7E	# <CJK>
+0xCCEC	0x6BDE	# <CJK>
+0xCCED	0x6C1D	# <CJK>
+0xCCEE	0x6C93	# <CJK>
+0xCCEF	0x6CEC	# <CJK>
+0xCCF0	0x6CEB	# <CJK>
+0xCCF1	0x6CEE	# <CJK>
+0xCCF2	0x6CD9	# <CJK>
+0xCCF3	0x6CB6	# <CJK>
+0xCCF4	0x6CD4	# <CJK>
+0xCCF5	0x6CAD	# <CJK>
+0xCCF6	0x6CE7	# <CJK>
+0xCCF7	0x6CB7	# <CJK>
+0xCCF8	0x6CD0	# <CJK>
+0xCCF9	0x6CC2	# <CJK>
+0xCCFA	0x6CBA	# <CJK>
+0xCCFB	0x6CC3	# <CJK>
+0xCCFC	0x6CC6	# <CJK>
+0xCCFD	0x6CED	# <CJK>
+0xCCFE	0x6CF2	# <CJK>
+0xCD40	0x6CD2	# <CJK>
+0xCD41	0x6CDD	# <CJK>
+0xCD42	0x6CB4	# <CJK>
+0xCD43	0x6C8A	# <CJK>
+0xCD44	0x6C9D	# <CJK>
+0xCD45	0x6C80	# <CJK>
+0xCD46	0x6CDE	# <CJK>
+0xCD47	0x6CC0	# <CJK>
+0xCD48	0x6D30	# <CJK>
+0xCD49	0x6CCD	# <CJK>
+0xCD4A	0x6CC7	# <CJK>
+0xCD4B	0x6CB0	# <CJK>
+0xCD4C	0x6CF9	# <CJK>
+0xCD4D	0x6CCF	# <CJK>
+0xCD4E	0x6CE9	# <CJK>
+0xCD4F	0x6CD1	# <CJK>
+0xCD50	0x7094	# <CJK>
+0xCD51	0x7098	# <CJK>
+0xCD52	0x7085	# <CJK>
+0xCD53	0x7093	# <CJK>
+0xCD54	0x7086	# <CJK>
+0xCD55	0x7084	# <CJK>
+0xCD56	0x7091	# <CJK>
+0xCD57	0x7096	# <CJK>
+0xCD58	0x7082	# <CJK>
+0xCD59	0x709A	# <CJK>
+0xCD5A	0x7083	# <CJK>
+0xCD5B	0x726A	# <CJK>
+0xCD5C	0x72D6	# <CJK>
+0xCD5D	0x72CB	# <CJK>
+0xCD5E	0x72D8	# <CJK>
+0xCD5F	0x72C9	# <CJK>
+0xCD60	0x72DC	# <CJK>
+0xCD61	0x72D2	# <CJK>
+0xCD62	0x72D4	# <CJK>
+0xCD63	0x72DA	# <CJK>
+0xCD64	0x72CC	# <CJK>
+0xCD65	0x72D1	# <CJK>
+0xCD66	0x73A4	# <CJK>
+0xCD67	0x73A1	# <CJK>
+0xCD68	0x73AD	# <CJK>
+0xCD69	0x73A6	# <CJK>
+0xCD6A	0x73A2	# <CJK>
+0xCD6B	0x73A0	# <CJK>
+0xCD6C	0x73AC	# <CJK>
+0xCD6D	0x739D	# <CJK>
+0xCD6E	0x74DD	# <CJK>
+0xCD6F	0x74E8	# <CJK>
+0xCD70	0x753F	# <CJK>
+0xCD71	0x7540	# <CJK>
+0xCD72	0x753E	# <CJK>
+0xCD73	0x758C	# <CJK>
+0xCD74	0x7598	# <CJK>
+0xCD75	0x76AF	# <CJK>
+0xCD76	0x76F3	# <CJK>
+0xCD77	0x76F1	# <CJK>
+0xCD78	0x76F0	# <CJK>
+0xCD79	0x76F5	# <CJK>
+0xCD7A	0x77F8	# <CJK>
+0xCD7B	0x77FC	# <CJK>
+0xCD7C	0x77F9	# <CJK>
+0xCD7D	0x77FB	# <CJK>
+0xCD7E	0x77FA	# <CJK>
+0xCDA1	0x77F7	# <CJK>
+0xCDA2	0x7942	# <CJK>
+0xCDA3	0x793F	# <CJK>
+0xCDA4	0x79C5	# <CJK>
+0xCDA5	0x7A78	# <CJK>
+0xCDA6	0x7A7B	# <CJK>
+0xCDA7	0x7AFB	# <CJK>
+0xCDA8	0x7C75	# <CJK>
+0xCDA9	0x7CFD	# <CJK>
+0xCDAA	0x8035	# <CJK>
+0xCDAB	0x808F	# <CJK>
+0xCDAC	0x80AE	# <CJK>
+0xCDAD	0x80A3	# <CJK>
+0xCDAE	0x80B8	# <CJK>
+0xCDAF	0x80B5	# <CJK>
+0xCDB0	0x80AD	# <CJK>
+0xCDB1	0x8220	# <CJK>
+0xCDB2	0x82A0	# <CJK>
+0xCDB3	0x82C0	# <CJK>
+0xCDB4	0x82AB	# <CJK>
+0xCDB5	0x829A	# <CJK>
+0xCDB6	0x8298	# <CJK>
+0xCDB7	0x829B	# <CJK>
+0xCDB8	0x82B5	# <CJK>
+0xCDB9	0x82A7	# <CJK>
+0xCDBA	0x82AE	# <CJK>
+0xCDBB	0x82BC	# <CJK>
+0xCDBC	0x829E	# <CJK>
+0xCDBD	0x82BA	# <CJK>
+0xCDBE	0x82B4	# <CJK>
+0xCDBF	0x82A8	# <CJK>
+0xCDC0	0x82A1	# <CJK>
+0xCDC1	0x82A9	# <CJK>
+0xCDC2	0x82C2	# <CJK>
+0xCDC3	0x82A4	# <CJK>
+0xCDC4	0x82C3	# <CJK>
+0xCDC5	0x82B6	# <CJK>
+0xCDC6	0x82A2	# <CJK>
+0xCDC7	0x8670	# <CJK>
+0xCDC8	0x866F	# <CJK>
+0xCDC9	0x866D	# <CJK>
+0xCDCA	0x866E	# <CJK>
+0xCDCB	0x8C56	# <CJK>
+0xCDCC	0x8FD2	# <CJK>
+0xCDCD	0x8FCB	# <CJK>
+0xCDCE	0x8FD3	# <CJK>
+0xCDCF	0x8FCD	# <CJK>
+0xCDD0	0x8FD6	# <CJK>
+0xCDD1	0x8FD5	# <CJK>
+0xCDD2	0x8FD7	# <CJK>
+0xCDD3	0x90B2	# <CJK>
+0xCDD4	0x90B4	# <CJK>
+0xCDD5	0x90AF	# <CJK>
+0xCDD6	0x90B3	# <CJK>
+0xCDD7	0x90B0	# <CJK>
+0xCDD8	0x9639	# <CJK>
+0xCDD9	0x963D	# <CJK>
+0xCDDA	0x963C	# <CJK>
+0xCDDB	0x963A	# <CJK>
+0xCDDC	0x9643	# <CJK>
+0xCDDD	0x4FCD	# <CJK>
+0xCDDE	0x4FC5	# <CJK>
+0xCDDF	0x4FD3	# <CJK>
+0xCDE0	0x4FB2	# <CJK>
+0xCDE1	0x4FC9	# <CJK>
+0xCDE2	0x4FCB	# <CJK>
+0xCDE3	0x4FC1	# <CJK>
+0xCDE4	0x4FD4	# <CJK>
+0xCDE5	0x4FDC	# <CJK>
+0xCDE6	0x4FD9	# <CJK>
+0xCDE7	0x4FBB	# <CJK>
+0xCDE8	0x4FB3	# <CJK>
+0xCDE9	0x4FDB	# <CJK>
+0xCDEA	0x4FC7	# <CJK>
+0xCDEB	0x4FD6	# <CJK>
+0xCDEC	0x4FBA	# <CJK>
+0xCDED	0x4FC0	# <CJK>
+0xCDEE	0x4FB9	# <CJK>
+0xCDEF	0x4FEC	# <CJK>
+0xCDF0	0x5244	# <CJK>
+0xCDF1	0x5249	# <CJK>
+0xCDF2	0x52C0	# <CJK>
+0xCDF3	0x52C2	# <CJK>
+0xCDF4	0x533D	# <CJK>
+0xCDF5	0x537C	# <CJK>
+0xCDF6	0x5397	# <CJK>
+0xCDF7	0x5396	# <CJK>
+0xCDF8	0x5399	# <CJK>
+0xCDF9	0x5398	# <CJK>
+0xCDFA	0x54BA	# <CJK>
+0xCDFB	0x54A1	# <CJK>
+0xCDFC	0x54AD	# <CJK>
+0xCDFD	0x54A5	# <CJK>
+0xCDFE	0x54CF	# <CJK>
+0xCE40	0x54C3	# <CJK>
+0xCE41	0x830D	# <CJK>
+0xCE42	0x54B7	# <CJK>
+0xCE43	0x54AE	# <CJK>
+0xCE44	0x54D6	# <CJK>
+0xCE45	0x54B6	# <CJK>
+0xCE46	0x54C5	# <CJK>
+0xCE47	0x54C6	# <CJK>
+0xCE48	0x54A0	# <CJK>
+0xCE49	0x5470	# <CJK>
+0xCE4A	0x54BC	# <CJK>
+0xCE4B	0x54A2	# <CJK>
+0xCE4C	0x54BE	# <CJK>
+0xCE4D	0x5472	# <CJK>
+0xCE4E	0x54DE	# <CJK>
+0xCE4F	0x54B0	# <CJK>
+0xCE50	0x57B5	# <CJK>
+0xCE51	0x579E	# <CJK>
+0xCE52	0x579F	# <CJK>
+0xCE53	0x57A4	# <CJK>
+0xCE54	0x578C	# <CJK>
+0xCE55	0x5797	# <CJK>
+0xCE56	0x579D	# <CJK>
+0xCE57	0x579B	# <CJK>
+0xCE58	0x5794	# <CJK>
+0xCE59	0x5798	# <CJK>
+0xCE5A	0x578F	# <CJK>
+0xCE5B	0x5799	# <CJK>
+0xCE5C	0x57A5	# <CJK>
+0xCE5D	0x579A	# <CJK>
+0xCE5E	0x5795	# <CJK>
+0xCE5F	0x58F4	# <CJK>
+0xCE60	0x590D	# <CJK>
+0xCE61	0x5953	# <CJK>
+0xCE62	0x59E1	# <CJK>
+0xCE63	0x59DE	# <CJK>
+0xCE64	0x59EE	# <CJK>
+0xCE65	0x5A00	# <CJK>
+0xCE66	0x59F1	# <CJK>
+0xCE67	0x59DD	# <CJK>
+0xCE68	0x59FA	# <CJK>
+0xCE69	0x59FD	# <CJK>
+0xCE6A	0x59FC	# <CJK>
+0xCE6B	0x59F6	# <CJK>
+0xCE6C	0x59E4	# <CJK>
+0xCE6D	0x59F2	# <CJK>
+0xCE6E	0x59F7	# <CJK>
+0xCE6F	0x59DB	# <CJK>
+0xCE70	0x59E9	# <CJK>
+0xCE71	0x59F3	# <CJK>
+0xCE72	0x59F5	# <CJK>
+0xCE73	0x59E0	# <CJK>
+0xCE74	0x59FE	# <CJK>
+0xCE75	0x59F4	# <CJK>
+0xCE76	0x59ED	# <CJK>
+0xCE77	0x5BA8	# <CJK>
+0xCE78	0x5C4C	# <CJK>
+0xCE79	0x5CD0	# <CJK>
+0xCE7A	0x5CD8	# <CJK>
+0xCE7B	0x5CCC	# <CJK>
+0xCE7C	0x5CD7	# <CJK>
+0xCE7D	0x5CCB	# <CJK>
+0xCE7E	0x5CDB	# <CJK>
+0xCEA1	0x5CDE	# <CJK>
+0xCEA2	0x5CDA	# <CJK>
+0xCEA3	0x5CC9	# <CJK>
+0xCEA4	0x5CC7	# <CJK>
+0xCEA5	0x5CCA	# <CJK>
+0xCEA6	0x5CD6	# <CJK>
+0xCEA7	0x5CD3	# <CJK>
+0xCEA8	0x5CD4	# <CJK>
+0xCEA9	0x5CCF	# <CJK>
+0xCEAA	0x5CC8	# <CJK>
+0xCEAB	0x5CC6	# <CJK>
+0xCEAC	0x5CCE	# <CJK>
+0xCEAD	0x5CDF	# <CJK>
+0xCEAE	0x5CF8	# <CJK>
+0xCEAF	0x5DF9	# <CJK>
+0xCEB0	0x5E21	# <CJK>
+0xCEB1	0x5E22	# <CJK>
+0xCEB2	0x5E23	# <CJK>
+0xCEB3	0x5E20	# <CJK>
+0xCEB4	0x5E24	# <CJK>
+0xCEB5	0x5EB0	# <CJK>
+0xCEB6	0x5EA4	# <CJK>
+0xCEB7	0x5EA2	# <CJK>
+0xCEB8	0x5E9B	# <CJK>
+0xCEB9	0x5EA3	# <CJK>
+0xCEBA	0x5EA5	# <CJK>
+0xCEBB	0x5F07	# <CJK>
+0xCEBC	0x5F2E	# <CJK>
+0xCEBD	0x5F56	# <CJK>
+0xCEBE	0x5F86	# <CJK>
+0xCEBF	0x6037	# <CJK>
+0xCEC0	0x6039	# <CJK>
+0xCEC1	0x6054	# <CJK>
+0xCEC2	0x6072	# <CJK>
+0xCEC3	0x605E	# <CJK>
+0xCEC4	0x6045	# <CJK>
+0xCEC5	0x6053	# <CJK>
+0xCEC6	0x6047	# <CJK>
+0xCEC7	0x6049	# <CJK>
+0xCEC8	0x605B	# <CJK>
+0xCEC9	0x604C	# <CJK>
+0xCECA	0x6040	# <CJK>
+0xCECB	0x6042	# <CJK>
+0xCECC	0x605F	# <CJK>
+0xCECD	0x6024	# <CJK>
+0xCECE	0x6044	# <CJK>
+0xCECF	0x6058	# <CJK>
+0xCED0	0x6066	# <CJK>
+0xCED1	0x606E	# <CJK>
+0xCED2	0x6242	# <CJK>
+0xCED3	0x6243	# <CJK>
+0xCED4	0x62CF	# <CJK>
+0xCED5	0x630D	# <CJK>
+0xCED6	0x630B	# <CJK>
+0xCED7	0x62F5	# <CJK>
+0xCED8	0x630E	# <CJK>
+0xCED9	0x6303	# <CJK>
+0xCEDA	0x62EB	# <CJK>
+0xCEDB	0x62F9	# <CJK>
+0xCEDC	0x630F	# <CJK>
+0xCEDD	0x630C	# <CJK>
+0xCEDE	0x62F8	# <CJK>
+0xCEDF	0x62F6	# <CJK>
+0xCEE0	0x6300	# <CJK>
+0xCEE1	0x6313	# <CJK>
+0xCEE2	0x6314	# <CJK>
+0xCEE3	0x62FA	# <CJK>
+0xCEE4	0x6315	# <CJK>
+0xCEE5	0x62FB	# <CJK>
+0xCEE6	0x62F0	# <CJK>
+0xCEE7	0x6541	# <CJK>
+0xCEE8	0x6543	# <CJK>
+0xCEE9	0x65AA	# <CJK>
+0xCEEA	0x65BF	# <CJK>
+0xCEEB	0x6636	# <CJK>
+0xCEEC	0x6621	# <CJK>
+0xCEED	0x6632	# <CJK>
+0xCEEE	0x6635	# <CJK>
+0xCEEF	0x661C	# <CJK>
+0xCEF0	0x6626	# <CJK>
+0xCEF1	0x6622	# <CJK>
+0xCEF2	0x6633	# <CJK>
+0xCEF3	0x662B	# <CJK>
+0xCEF4	0x663A	# <CJK>
+0xCEF5	0x661D	# <CJK>
+0xCEF6	0x6634	# <CJK>
+0xCEF7	0x6639	# <CJK>
+0xCEF8	0x662E	# <CJK>
+0xCEF9	0x670F	# <CJK>
+0xCEFA	0x6710	# <CJK>
+0xCEFB	0x67C1	# <CJK>
+0xCEFC	0x67F2	# <CJK>
+0xCEFD	0x67C8	# <CJK>
+0xCEFE	0x67BA	# <CJK>
+0xCF40	0x67DC	# <CJK>
+0xCF41	0x67BB	# <CJK>
+0xCF42	0x67F8	# <CJK>
+0xCF43	0x67D8	# <CJK>
+0xCF44	0x67C0	# <CJK>
+0xCF45	0x67B7	# <CJK>
+0xCF46	0x67C5	# <CJK>
+0xCF47	0x67EB	# <CJK>
+0xCF48	0x67E4	# <CJK>
+0xCF49	0x67DF	# <CJK>
+0xCF4A	0x67B5	# <CJK>
+0xCF4B	0x67CD	# <CJK>
+0xCF4C	0x67B3	# <CJK>
+0xCF4D	0x67F7	# <CJK>
+0xCF4E	0x67F6	# <CJK>
+0xCF4F	0x67EE	# <CJK>
+0xCF50	0x67E3	# <CJK>
+0xCF51	0x67C2	# <CJK>
+0xCF52	0x67B9	# <CJK>
+0xCF53	0x67CE	# <CJK>
+0xCF54	0x67E7	# <CJK>
+0xCF55	0x67F0	# <CJK>
+0xCF56	0x67B2	# <CJK>
+0xCF57	0x67FC	# <CJK>
+0xCF58	0x67C6	# <CJK>
+0xCF59	0x67ED	# <CJK>
+0xCF5A	0x67CC	# <CJK>
+0xCF5B	0x67AE	# <CJK>
+0xCF5C	0x67E6	# <CJK>
+0xCF5D	0x67DB	# <CJK>
+0xCF5E	0x67FA	# <CJK>
+0xCF5F	0x67C9	# <CJK>
+0xCF60	0x67CA	# <CJK>
+0xCF61	0x67C3	# <CJK>
+0xCF62	0x67EA	# <CJK>
+0xCF63	0x67CB	# <CJK>
+0xCF64	0x6B28	# <CJK>
+0xCF65	0x6B82	# <CJK>
+0xCF66	0x6B84	# <CJK>
+0xCF67	0x6BB6	# <CJK>
+0xCF68	0x6BD6	# <CJK>
+0xCF69	0x6BD8	# <CJK>
+0xCF6A	0x6BE0	# <CJK>
+0xCF6B	0x6C20	# <CJK>
+0xCF6C	0x6C21	# <CJK>
+0xCF6D	0x6D28	# <CJK>
+0xCF6E	0x6D34	# <CJK>
+0xCF6F	0x6D2D	# <CJK>
+0xCF70	0x6D1F	# <CJK>
+0xCF71	0x6D3C	# <CJK>
+0xCF72	0x6D3F	# <CJK>
+0xCF73	0x6D12	# <CJK>
+0xCF74	0x6D0A	# <CJK>
+0xCF75	0x6CDA	# <CJK>
+0xCF76	0x6D33	# <CJK>
+0xCF77	0x6D04	# <CJK>
+0xCF78	0x6D19	# <CJK>
+0xCF79	0x6D3A	# <CJK>
+0xCF7A	0x6D1A	# <CJK>
+0xCF7B	0x6D11	# <CJK>
+0xCF7C	0x6D00	# <CJK>
+0xCF7D	0x6D1D	# <CJK>
+0xCF7E	0x6D42	# <CJK>
+0xCFA1	0x6D01	# <CJK>
+0xCFA2	0x6D18	# <CJK>
+0xCFA3	0x6D37	# <CJK>
+0xCFA4	0x6D03	# <CJK>
+0xCFA5	0x6D0F	# <CJK>
+0xCFA6	0x6D40	# <CJK>
+0xCFA7	0x6D07	# <CJK>
+0xCFA8	0x6D20	# <CJK>
+0xCFA9	0x6D2C	# <CJK>
+0xCFAA	0x6D08	# <CJK>
+0xCFAB	0x6D22	# <CJK>
+0xCFAC	0x6D09	# <CJK>
+0xCFAD	0x6D10	# <CJK>
+0xCFAE	0x70B7	# <CJK>
+0xCFAF	0x709F	# <CJK>
+0xCFB0	0x70BE	# <CJK>
+0xCFB1	0x70B1	# <CJK>
+0xCFB2	0x70B0	# <CJK>
+0xCFB3	0x70A1	# <CJK>
+0xCFB4	0x70B4	# <CJK>
+0xCFB5	0x70B5	# <CJK>
+0xCFB6	0x70A9	# <CJK>
+0xCFB7	0x7241	# <CJK>
+0xCFB8	0x7249	# <CJK>
+0xCFB9	0x724A	# <CJK>
+0xCFBA	0x726C	# <CJK>
+0xCFBB	0x7270	# <CJK>
+0xCFBC	0x7273	# <CJK>
+0xCFBD	0x726E	# <CJK>
+0xCFBE	0x72CA	# <CJK>
+0xCFBF	0x72E4	# <CJK>
+0xCFC0	0x72E8	# <CJK>
+0xCFC1	0x72EB	# <CJK>
+0xCFC2	0x72DF	# <CJK>
+0xCFC3	0x72EA	# <CJK>
+0xCFC4	0x72E6	# <CJK>
+0xCFC5	0x72E3	# <CJK>
+0xCFC6	0x7385	# <CJK>
+0xCFC7	0x73CC	# <CJK>
+0xCFC8	0x73C2	# <CJK>
+0xCFC9	0x73C8	# <CJK>
+0xCFCA	0x73C5	# <CJK>
+0xCFCB	0x73B9	# <CJK>
+0xCFCC	0x73B6	# <CJK>
+0xCFCD	0x73B5	# <CJK>
+0xCFCE	0x73B4	# <CJK>
+0xCFCF	0x73EB	# <CJK>
+0xCFD0	0x73BF	# <CJK>
+0xCFD1	0x73C7	# <CJK>
+0xCFD2	0x73BE	# <CJK>
+0xCFD3	0x73C3	# <CJK>
+0xCFD4	0x73C6	# <CJK>
+0xCFD5	0x73B8	# <CJK>
+0xCFD6	0x73CB	# <CJK>
+0xCFD7	0x74EC	# <CJK>
+0xCFD8	0x74EE	# <CJK>
+0xCFD9	0x752E	# <CJK>
+0xCFDA	0x7547	# <CJK>
+0xCFDB	0x7548	# <CJK>
+0xCFDC	0x75A7	# <CJK>
+0xCFDD	0x75AA	# <CJK>
+0xCFDE	0x7679	# <CJK>
+0xCFDF	0x76C4	# <CJK>
+0xCFE0	0x7708	# <CJK>
+0xCFE1	0x7703	# <CJK>
+0xCFE2	0x7704	# <CJK>
+0xCFE3	0x7705	# <CJK>
+0xCFE4	0x770A	# <CJK>
+0xCFE5	0x76F7	# <CJK>
+0xCFE6	0x76FB	# <CJK>
+0xCFE7	0x76FA	# <CJK>
+0xCFE8	0x77E7	# <CJK>
+0xCFE9	0x77E8	# <CJK>
+0xCFEA	0x7806	# <CJK>
+0xCFEB	0x7811	# <CJK>
+0xCFEC	0x7812	# <CJK>
+0xCFED	0x7805	# <CJK>
+0xCFEE	0x7810	# <CJK>
+0xCFEF	0x780F	# <CJK>
+0xCFF0	0x780E	# <CJK>
+0xCFF1	0x7809	# <CJK>
+0xCFF2	0x7803	# <CJK>
+0xCFF3	0x7813	# <CJK>
+0xCFF4	0x794A	# <CJK>
+0xCFF5	0x794C	# <CJK>
+0xCFF6	0x794B	# <CJK>
+0xCFF7	0x7945	# <CJK>
+0xCFF8	0x7944	# <CJK>
+0xCFF9	0x79D5	# <CJK>
+0xCFFA	0x79CD	# <CJK>
+0xCFFB	0x79CF	# <CJK>
+0xCFFC	0x79D6	# <CJK>
+0xCFFD	0x79CE	# <CJK>
+0xCFFE	0x7A80	# <CJK>
+0xD040	0x7A7E	# <CJK>
+0xD041	0x7AD1	# <CJK>
+0xD042	0x7B00	# <CJK>
+0xD043	0x7B01	# <CJK>
+0xD044	0x7C7A	# <CJK>
+0xD045	0x7C78	# <CJK>
+0xD046	0x7C79	# <CJK>
+0xD047	0x7C7F	# <CJK>
+0xD048	0x7C80	# <CJK>
+0xD049	0x7C81	# <CJK>
+0xD04A	0x7D03	# <CJK>
+0xD04B	0x7D08	# <CJK>
+0xD04C	0x7D01	# <CJK>
+0xD04D	0x7F58	# <CJK>
+0xD04E	0x7F91	# <CJK>
+0xD04F	0x7F8D	# <CJK>
+0xD050	0x7FBE	# <CJK>
+0xD051	0x8007	# <CJK>
+0xD052	0x800E	# <CJK>
+0xD053	0x800F	# <CJK>
+0xD054	0x8014	# <CJK>
+0xD055	0x8037	# <CJK>
+0xD056	0x80D8	# <CJK>
+0xD057	0x80C7	# <CJK>
+0xD058	0x80E0	# <CJK>
+0xD059	0x80D1	# <CJK>
+0xD05A	0x80C8	# <CJK>
+0xD05B	0x80C2	# <CJK>
+0xD05C	0x80D0	# <CJK>
+0xD05D	0x80C5	# <CJK>
+0xD05E	0x80E3	# <CJK>
+0xD05F	0x80D9	# <CJK>
+0xD060	0x80DC	# <CJK>
+0xD061	0x80CA	# <CJK>
+0xD062	0x80D5	# <CJK>
+0xD063	0x80C9	# <CJK>
+0xD064	0x80CF	# <CJK>
+0xD065	0x80D7	# <CJK>
+0xD066	0x80E6	# <CJK>
+0xD067	0x80CD	# <CJK>
+0xD068	0x81FF	# <CJK>
+0xD069	0x8221	# <CJK>
+0xD06A	0x8294	# <CJK>
+0xD06B	0x82D9	# <CJK>
+0xD06C	0x82FE	# <CJK>
+0xD06D	0x82F9	# <CJK>
+0xD06E	0x8307	# <CJK>
+0xD06F	0x82E8	# <CJK>
+0xD070	0x8300	# <CJK>
+0xD071	0x82D5	# <CJK>
+0xD072	0x833A	# <CJK>
+0xD073	0x82EB	# <CJK>
+0xD074	0x82D6	# <CJK>
+0xD075	0x82F4	# <CJK>
+0xD076	0x82EC	# <CJK>
+0xD077	0x82E1	# <CJK>
+0xD078	0x82F2	# <CJK>
+0xD079	0x82F5	# <CJK>
+0xD07A	0x830C	# <CJK>
+0xD07B	0x82FB	# <CJK>
+0xD07C	0x82F6	# <CJK>
+0xD07D	0x82F0	# <CJK>
+0xD07E	0x82EA	# <CJK>
+0xD0A1	0x82E4	# <CJK>
+0xD0A2	0x82E0	# <CJK>
+0xD0A3	0x82FA	# <CJK>
+0xD0A4	0x82F3	# <CJK>
+0xD0A5	0x82ED	# <CJK>
+0xD0A6	0x8677	# <CJK>
+0xD0A7	0x8674	# <CJK>
+0xD0A8	0x867C	# <CJK>
+0xD0A9	0x8673	# <CJK>
+0xD0AA	0x8841	# <CJK>
+0xD0AB	0x884E	# <CJK>
+0xD0AC	0x8867	# <CJK>
+0xD0AD	0x886A	# <CJK>
+0xD0AE	0x8869	# <CJK>
+0xD0AF	0x89D3	# <CJK>
+0xD0B0	0x8A04	# <CJK>
+0xD0B1	0x8A07	# <CJK>
+0xD0B2	0x8D72	# <CJK>
+0xD0B3	0x8FE3	# <CJK>
+0xD0B4	0x8FE1	# <CJK>
+0xD0B5	0x8FEE	# <CJK>
+0xD0B6	0x8FE0	# <CJK>
+0xD0B7	0x90F1	# <CJK>
+0xD0B8	0x90BD	# <CJK>
+0xD0B9	0x90BF	# <CJK>
+0xD0BA	0x90D5	# <CJK>
+0xD0BB	0x90C5	# <CJK>
+0xD0BC	0x90BE	# <CJK>
+0xD0BD	0x90C7	# <CJK>
+0xD0BE	0x90CB	# <CJK>
+0xD0BF	0x90C8	# <CJK>
+0xD0C0	0x91D4	# <CJK>
+0xD0C1	0x91D3	# <CJK>
+0xD0C2	0x9654	# <CJK>
+0xD0C3	0x964F	# <CJK>
+0xD0C4	0x9651	# <CJK>
+0xD0C5	0x9653	# <CJK>
+0xD0C6	0x964A	# <CJK>
+0xD0C7	0x964E	# <CJK>
+0xD0C8	0x501E	# <CJK>
+0xD0C9	0x5005	# <CJK>
+0xD0CA	0x5007	# <CJK>
+0xD0CB	0x5013	# <CJK>
+0xD0CC	0x5022	# <CJK>
+0xD0CD	0x5030	# <CJK>
+0xD0CE	0x501B	# <CJK>
+0xD0CF	0x4FF5	# <CJK>
+0xD0D0	0x4FF4	# <CJK>
+0xD0D1	0x5033	# <CJK>
+0xD0D2	0x5037	# <CJK>
+0xD0D3	0x502C	# <CJK>
+0xD0D4	0x4FF6	# <CJK>
+0xD0D5	0x4FF7	# <CJK>
+0xD0D6	0x5017	# <CJK>
+0xD0D7	0x501C	# <CJK>
+0xD0D8	0x5020	# <CJK>
+0xD0D9	0x5027	# <CJK>
+0xD0DA	0x5035	# <CJK>
+0xD0DB	0x502F	# <CJK>
+0xD0DC	0x5031	# <CJK>
+0xD0DD	0x500E	# <CJK>
+0xD0DE	0x515A	# <CJK>
+0xD0DF	0x5194	# <CJK>
+0xD0E0	0x5193	# <CJK>
+0xD0E1	0x51CA	# <CJK>
+0xD0E2	0x51C4	# <CJK>
+0xD0E3	0x51C5	# <CJK>
+0xD0E4	0x51C8	# <CJK>
+0xD0E5	0x51CE	# <CJK>
+0xD0E6	0x5261	# <CJK>
+0xD0E7	0x525A	# <CJK>
+0xD0E8	0x5252	# <CJK>
+0xD0E9	0x525E	# <CJK>
+0xD0EA	0x525F	# <CJK>
+0xD0EB	0x5255	# <CJK>
+0xD0EC	0x5262	# <CJK>
+0xD0ED	0x52CD	# <CJK>
+0xD0EE	0x530E	# <CJK>
+0xD0EF	0x539E	# <CJK>
+0xD0F0	0x5526	# <CJK>
+0xD0F1	0x54E2	# <CJK>
+0xD0F2	0x5517	# <CJK>
+0xD0F3	0x5512	# <CJK>
+0xD0F4	0x54E7	# <CJK>
+0xD0F5	0x54F3	# <CJK>
+0xD0F6	0x54E4	# <CJK>
+0xD0F7	0x551A	# <CJK>
+0xD0F8	0x54FF	# <CJK>
+0xD0F9	0x5504	# <CJK>
+0xD0FA	0x5508	# <CJK>
+0xD0FB	0x54EB	# <CJK>
+0xD0FC	0x5511	# <CJK>
+0xD0FD	0x5505	# <CJK>
+0xD0FE	0x54F1	# <CJK>
+0xD140	0x550A	# <CJK>
+0xD141	0x54FB	# <CJK>
+0xD142	0x54F7	# <CJK>
+0xD143	0x54F8	# <CJK>
+0xD144	0x54E0	# <CJK>
+0xD145	0x550E	# <CJK>
+0xD146	0x5503	# <CJK>
+0xD147	0x550B	# <CJK>
+0xD148	0x5701	# <CJK>
+0xD149	0x5702	# <CJK>
+0xD14A	0x57CC	# <CJK>
+0xD14B	0x5832	# <CJK>
+0xD14C	0x57D5	# <CJK>
+0xD14D	0x57D2	# <CJK>
+0xD14E	0x57BA	# <CJK>
+0xD14F	0x57C6	# <CJK>
+0xD150	0x57BD	# <CJK>
+0xD151	0x57BC	# <CJK>
+0xD152	0x57B8	# <CJK>
+0xD153	0x57B6	# <CJK>
+0xD154	0x57BF	# <CJK>
+0xD155	0x57C7	# <CJK>
+0xD156	0x57D0	# <CJK>
+0xD157	0x57B9	# <CJK>
+0xD158	0x57C1	# <CJK>
+0xD159	0x590E	# <CJK>
+0xD15A	0x594A	# <CJK>
+0xD15B	0x5A19	# <CJK>
+0xD15C	0x5A16	# <CJK>
+0xD15D	0x5A2D	# <CJK>
+0xD15E	0x5A2E	# <CJK>
+0xD15F	0x5A15	# <CJK>
+0xD160	0x5A0F	# <CJK>
+0xD161	0x5A17	# <CJK>
+0xD162	0x5A0A	# <CJK>
+0xD163	0x5A1E	# <CJK>
+0xD164	0x5A33	# <CJK>
+0xD165	0x5B6C	# <CJK>
+0xD166	0x5BA7	# <CJK>
+0xD167	0x5BAD	# <CJK>
+0xD168	0x5BAC	# <CJK>
+0xD169	0x5C03	# <CJK>
+0xD16A	0x5C56	# <CJK>
+0xD16B	0x5C54	# <CJK>
+0xD16C	0x5CEC	# <CJK>
+0xD16D	0x5CFF	# <CJK>
+0xD16E	0x5CEE	# <CJK>
+0xD16F	0x5CF1	# <CJK>
+0xD170	0x5CF7	# <CJK>
+0xD171	0x5D00	# <CJK>
+0xD172	0x5CF9	# <CJK>
+0xD173	0x5E29	# <CJK>
+0xD174	0x5E28	# <CJK>
+0xD175	0x5EA8	# <CJK>
+0xD176	0x5EAE	# <CJK>
+0xD177	0x5EAA	# <CJK>
+0xD178	0x5EAC	# <CJK>
+0xD179	0x5F33	# <CJK>
+0xD17A	0x5F30	# <CJK>
+0xD17B	0x5F67	# <CJK>
+0xD17C	0x605D	# <CJK>
+0xD17D	0x605A	# <CJK>
+0xD17E	0x6067	# <CJK>
+0xD1A1	0x6041	# <CJK>
+0xD1A2	0x60A2	# <CJK>
+0xD1A3	0x6088	# <CJK>
+0xD1A4	0x6080	# <CJK>
+0xD1A5	0x6092	# <CJK>
+0xD1A6	0x6081	# <CJK>
+0xD1A7	0x609D	# <CJK>
+0xD1A8	0x6083	# <CJK>
+0xD1A9	0x6095	# <CJK>
+0xD1AA	0x609B	# <CJK>
+0xD1AB	0x6097	# <CJK>
+0xD1AC	0x6087	# <CJK>
+0xD1AD	0x609C	# <CJK>
+0xD1AE	0x608E	# <CJK>
+0xD1AF	0x6219	# <CJK>
+0xD1B0	0x6246	# <CJK>
+0xD1B1	0x62F2	# <CJK>
+0xD1B2	0x6310	# <CJK>
+0xD1B3	0x6356	# <CJK>
+0xD1B4	0x632C	# <CJK>
+0xD1B5	0x6344	# <CJK>
+0xD1B6	0x6345	# <CJK>
+0xD1B7	0x6336	# <CJK>
+0xD1B8	0x6343	# <CJK>
+0xD1B9	0x63E4	# <CJK>
+0xD1BA	0x6339	# <CJK>
+0xD1BB	0x634B	# <CJK>
+0xD1BC	0x634A	# <CJK>
+0xD1BD	0x633C	# <CJK>
+0xD1BE	0x6329	# <CJK>
+0xD1BF	0x6341	# <CJK>
+0xD1C0	0x6334	# <CJK>
+0xD1C1	0x6358	# <CJK>
+0xD1C2	0x6354	# <CJK>
+0xD1C3	0x6359	# <CJK>
+0xD1C4	0x632D	# <CJK>
+0xD1C5	0x6347	# <CJK>
+0xD1C6	0x6333	# <CJK>
+0xD1C7	0x635A	# <CJK>
+0xD1C8	0x6351	# <CJK>
+0xD1C9	0x6338	# <CJK>
+0xD1CA	0x6357	# <CJK>
+0xD1CB	0x6340	# <CJK>
+0xD1CC	0x6348	# <CJK>
+0xD1CD	0x654A	# <CJK>
+0xD1CE	0x6546	# <CJK>
+0xD1CF	0x65C6	# <CJK>
+0xD1D0	0x65C3	# <CJK>
+0xD1D1	0x65C4	# <CJK>
+0xD1D2	0x65C2	# <CJK>
+0xD1D3	0x664A	# <CJK>
+0xD1D4	0x665F	# <CJK>
+0xD1D5	0x6647	# <CJK>
+0xD1D6	0x6651	# <CJK>
+0xD1D7	0x6712	# <CJK>
+0xD1D8	0x6713	# <CJK>
+0xD1D9	0x681F	# <CJK>
+0xD1DA	0x681A	# <CJK>
+0xD1DB	0x6849	# <CJK>
+0xD1DC	0x6832	# <CJK>
+0xD1DD	0x6833	# <CJK>
+0xD1DE	0x683B	# <CJK>
+0xD1DF	0x684B	# <CJK>
+0xD1E0	0x684F	# <CJK>
+0xD1E1	0x6816	# <CJK>
+0xD1E2	0x6831	# <CJK>
+0xD1E3	0x681C	# <CJK>
+0xD1E4	0x6835	# <CJK>
+0xD1E5	0x682B	# <CJK>
+0xD1E6	0x682D	# <CJK>
+0xD1E7	0x682F	# <CJK>
+0xD1E8	0x684E	# <CJK>
+0xD1E9	0x6844	# <CJK>
+0xD1EA	0x6834	# <CJK>
+0xD1EB	0x681D	# <CJK>
+0xD1EC	0x6812	# <CJK>
+0xD1ED	0x6814	# <CJK>
+0xD1EE	0x6826	# <CJK>
+0xD1EF	0x6828	# <CJK>
+0xD1F0	0x682E	# <CJK>
+0xD1F1	0x684D	# <CJK>
+0xD1F2	0x683A	# <CJK>
+0xD1F3	0x6825	# <CJK>
+0xD1F4	0x6820	# <CJK>
+0xD1F5	0x6B2C	# <CJK>
+0xD1F6	0x6B2F	# <CJK>
+0xD1F7	0x6B2D	# <CJK>
+0xD1F8	0x6B31	# <CJK>
+0xD1F9	0x6B34	# <CJK>
+0xD1FA	0x6B6D	# <CJK>
+0xD1FB	0x8082	# <CJK>
+0xD1FC	0x6B88	# <CJK>
+0xD1FD	0x6BE6	# <CJK>
+0xD1FE	0x6BE4	# <CJK>
+0xD240	0x6BE8	# <CJK>
+0xD241	0x6BE3	# <CJK>
+0xD242	0x6BE2	# <CJK>
+0xD243	0x6BE7	# <CJK>
+0xD244	0x6C25	# <CJK>
+0xD245	0x6D7A	# <CJK>
+0xD246	0x6D63	# <CJK>
+0xD247	0x6D64	# <CJK>
+0xD248	0x6D76	# <CJK>
+0xD249	0x6D0D	# <CJK>
+0xD24A	0x6D61	# <CJK>
+0xD24B	0x6D92	# <CJK>
+0xD24C	0x6D58	# <CJK>
+0xD24D	0x6D62	# <CJK>
+0xD24E	0x6D6D	# <CJK>
+0xD24F	0x6D6F	# <CJK>
+0xD250	0x6D91	# <CJK>
+0xD251	0x6D8D	# <CJK>
+0xD252	0x6DEF	# <CJK>
+0xD253	0x6D7F	# <CJK>
+0xD254	0x6D86	# <CJK>
+0xD255	0x6D5E	# <CJK>
+0xD256	0x6D67	# <CJK>
+0xD257	0x6D60	# <CJK>
+0xD258	0x6D97	# <CJK>
+0xD259	0x6D70	# <CJK>
+0xD25A	0x6D7C	# <CJK>
+0xD25B	0x6D5F	# <CJK>
+0xD25C	0x6D82	# <CJK>
+0xD25D	0x6D98	# <CJK>
+0xD25E	0x6D2F	# <CJK>
+0xD25F	0x6D68	# <CJK>
+0xD260	0x6D8B	# <CJK>
+0xD261	0x6D7E	# <CJK>
+0xD262	0x6D80	# <CJK>
+0xD263	0x6D84	# <CJK>
+0xD264	0x6D16	# <CJK>
+0xD265	0x6D83	# <CJK>
+0xD266	0x6D7B	# <CJK>
+0xD267	0x6D7D	# <CJK>
+0xD268	0x6D75	# <CJK>
+0xD269	0x6D90	# <CJK>
+0xD26A	0x70DC	# <CJK>
+0xD26B	0x70D3	# <CJK>
+0xD26C	0x70D1	# <CJK>
+0xD26D	0x70DD	# <CJK>
+0xD26E	0x70CB	# <CJK>
+0xD26F	0x7F39	# <CJK>
+0xD270	0x70E2	# <CJK>
+0xD271	0x70D7	# <CJK>
+0xD272	0x70D2	# <CJK>
+0xD273	0x70DE	# <CJK>
+0xD274	0x70E0	# <CJK>
+0xD275	0x70D4	# <CJK>
+0xD276	0x70CD	# <CJK>
+0xD277	0x70C5	# <CJK>
+0xD278	0x70C6	# <CJK>
+0xD279	0x70C7	# <CJK>
+0xD27A	0x70DA	# <CJK>
+0xD27B	0x70CE	# <CJK>
+0xD27C	0x70E1	# <CJK>
+0xD27D	0x7242	# <CJK>
+0xD27E	0x7278	# <CJK>
+0xD2A1	0x7277	# <CJK>
+0xD2A2	0x7276	# <CJK>
+0xD2A3	0x7300	# <CJK>
+0xD2A4	0x72FA	# <CJK>
+0xD2A5	0x72F4	# <CJK>
+0xD2A6	0x72FE	# <CJK>
+0xD2A7	0x72F6	# <CJK>
+0xD2A8	0x72F3	# <CJK>
+0xD2A9	0x72FB	# <CJK>
+0xD2AA	0x7301	# <CJK>
+0xD2AB	0x73D3	# <CJK>
+0xD2AC	0x73D9	# <CJK>
+0xD2AD	0x73E5	# <CJK>
+0xD2AE	0x73D6	# <CJK>
+0xD2AF	0x73BC	# <CJK>
+0xD2B0	0x73E7	# <CJK>
+0xD2B1	0x73E3	# <CJK>
+0xD2B2	0x73E9	# <CJK>
+0xD2B3	0x73DC	# <CJK>
+0xD2B4	0x73D2	# <CJK>
+0xD2B5	0x73DB	# <CJK>
+0xD2B6	0x73D4	# <CJK>
+0xD2B7	0x73DD	# <CJK>
+0xD2B8	0x73DA	# <CJK>
+0xD2B9	0x73D7	# <CJK>
+0xD2BA	0x73D8	# <CJK>
+0xD2BB	0x73E8	# <CJK>
+0xD2BC	0x74DE	# <CJK>
+0xD2BD	0x74DF	# <CJK>
+0xD2BE	0x74F4	# <CJK>
+0xD2BF	0x74F5	# <CJK>
+0xD2C0	0x7521	# <CJK>
+0xD2C1	0x755B	# <CJK>
+0xD2C2	0x755F	# <CJK>
+0xD2C3	0x75B0	# <CJK>
+0xD2C4	0x75C1	# <CJK>
+0xD2C5	0x75BB	# <CJK>
+0xD2C6	0x75C4	# <CJK>
+0xD2C7	0x75C0	# <CJK>
+0xD2C8	0x75BF	# <CJK>
+0xD2C9	0x75B6	# <CJK>
+0xD2CA	0x75BA	# <CJK>
+0xD2CB	0x768A	# <CJK>
+0xD2CC	0x76C9	# <CJK>
+0xD2CD	0x771D	# <CJK>
+0xD2CE	0x771B	# <CJK>
+0xD2CF	0x7710	# <CJK>
+0xD2D0	0x7713	# <CJK>
+0xD2D1	0x7712	# <CJK>
+0xD2D2	0x7723	# <CJK>
+0xD2D3	0x7711	# <CJK>
+0xD2D4	0x7715	# <CJK>
+0xD2D5	0x7719	# <CJK>
+0xD2D6	0x771A	# <CJK>
+0xD2D7	0x7722	# <CJK>
+0xD2D8	0x7727	# <CJK>
+0xD2D9	0x7823	# <CJK>
+0xD2DA	0x782C	# <CJK>
+0xD2DB	0x7822	# <CJK>
+0xD2DC	0x7835	# <CJK>
+0xD2DD	0x782F	# <CJK>
+0xD2DE	0x7828	# <CJK>
+0xD2DF	0x782E	# <CJK>
+0xD2E0	0x782B	# <CJK>
+0xD2E1	0x7821	# <CJK>
+0xD2E2	0x7829	# <CJK>
+0xD2E3	0x7833	# <CJK>
+0xD2E4	0x782A	# <CJK>
+0xD2E5	0x7831	# <CJK>
+0xD2E6	0x7954	# <CJK>
+0xD2E7	0x795B	# <CJK>
+0xD2E8	0x794F	# <CJK>
+0xD2E9	0x795C	# <CJK>
+0xD2EA	0x7953	# <CJK>
+0xD2EB	0x7952	# <CJK>
+0xD2EC	0x7951	# <CJK>
+0xD2ED	0x79EB	# <CJK>
+0xD2EE	0x79EC	# <CJK>
+0xD2EF	0x79E0	# <CJK>
+0xD2F0	0x79EE	# <CJK>
+0xD2F1	0x79ED	# <CJK>
+0xD2F2	0x79EA	# <CJK>
+0xD2F3	0x79DC	# <CJK>
+0xD2F4	0x79DE	# <CJK>
+0xD2F5	0x79DD	# <CJK>
+0xD2F6	0x7A86	# <CJK>
+0xD2F7	0x7A89	# <CJK>
+0xD2F8	0x7A85	# <CJK>
+0xD2F9	0x7A8B	# <CJK>
+0xD2FA	0x7A8C	# <CJK>
+0xD2FB	0x7A8A	# <CJK>
+0xD2FC	0x7A87	# <CJK>
+0xD2FD	0x7AD8	# <CJK>
+0xD2FE	0x7B10	# <CJK>
+0xD340	0x7B04	# <CJK>
+0xD341	0x7B13	# <CJK>
+0xD342	0x7B05	# <CJK>
+0xD343	0x7B0F	# <CJK>
+0xD344	0x7B08	# <CJK>
+0xD345	0x7B0A	# <CJK>
+0xD346	0x7B0E	# <CJK>
+0xD347	0x7B09	# <CJK>
+0xD348	0x7B12	# <CJK>
+0xD349	0x7C84	# <CJK>
+0xD34A	0x7C91	# <CJK>
+0xD34B	0x7C8A	# <CJK>
+0xD34C	0x7C8C	# <CJK>
+0xD34D	0x7C88	# <CJK>
+0xD34E	0x7C8D	# <CJK>
+0xD34F	0x7C85	# <CJK>
+0xD350	0x7D1E	# <CJK>
+0xD351	0x7D1D	# <CJK>
+0xD352	0x7D11	# <CJK>
+0xD353	0x7D0E	# <CJK>
+0xD354	0x7D18	# <CJK>
+0xD355	0x7D16	# <CJK>
+0xD356	0x7D13	# <CJK>
+0xD357	0x7D1F	# <CJK>
+0xD358	0x7D12	# <CJK>
+0xD359	0x7D0F	# <CJK>
+0xD35A	0x7D0C	# <CJK>
+0xD35B	0x7F5C	# <CJK>
+0xD35C	0x7F61	# <CJK>
+0xD35D	0x7F5E	# <CJK>
+0xD35E	0x7F60	# <CJK>
+0xD35F	0x7F5D	# <CJK>
+0xD360	0x7F5B	# <CJK>
+0xD361	0x7F96	# <CJK>
+0xD362	0x7F92	# <CJK>
+0xD363	0x7FC3	# <CJK>
+0xD364	0x7FC2	# <CJK>
+0xD365	0x7FC0	# <CJK>
+0xD366	0x8016	# <CJK>
+0xD367	0x803E	# <CJK>
+0xD368	0x8039	# <CJK>
+0xD369	0x80FA	# <CJK>
+0xD36A	0x80F2	# <CJK>
+0xD36B	0x80F9	# <CJK>
+0xD36C	0x80F5	# <CJK>
+0xD36D	0x8101	# <CJK>
+0xD36E	0x80FB	# <CJK>
+0xD36F	0x8100	# <CJK>
+0xD370	0x8201	# <CJK>
+0xD371	0x822F	# <CJK>
+0xD372	0x8225	# <CJK>
+0xD373	0x8333	# <CJK>
+0xD374	0x832D	# <CJK>
+0xD375	0x8344	# <CJK>
+0xD376	0x8319	# <CJK>
+0xD377	0x8351	# <CJK>
+0xD378	0x8325	# <CJK>
+0xD379	0x8356	# <CJK>
+0xD37A	0x833F	# <CJK>
+0xD37B	0x8341	# <CJK>
+0xD37C	0x8326	# <CJK>
+0xD37D	0x831C	# <CJK>
+0xD37E	0x8322	# <CJK>
+0xD3A1	0x8342	# <CJK>
+0xD3A2	0x834E	# <CJK>
+0xD3A3	0x831B	# <CJK>
+0xD3A4	0x832A	# <CJK>
+0xD3A5	0x8308	# <CJK>
+0xD3A6	0x833C	# <CJK>
+0xD3A7	0x834D	# <CJK>
+0xD3A8	0x8316	# <CJK>
+0xD3A9	0x8324	# <CJK>
+0xD3AA	0x8320	# <CJK>
+0xD3AB	0x8337	# <CJK>
+0xD3AC	0x832F	# <CJK>
+0xD3AD	0x8329	# <CJK>
+0xD3AE	0x8347	# <CJK>
+0xD3AF	0x8345	# <CJK>
+0xD3B0	0x834C	# <CJK>
+0xD3B1	0x8353	# <CJK>
+0xD3B2	0x831E	# <CJK>
+0xD3B3	0x832C	# <CJK>
+0xD3B4	0x834B	# <CJK>
+0xD3B5	0x8327	# <CJK>
+0xD3B6	0x8348	# <CJK>
+0xD3B7	0x8653	# <CJK>
+0xD3B8	0x8652	# <CJK>
+0xD3B9	0x86A2	# <CJK>
+0xD3BA	0x86A8	# <CJK>
+0xD3BB	0x8696	# <CJK>
+0xD3BC	0x868D	# <CJK>
+0xD3BD	0x8691	# <CJK>
+0xD3BE	0x869E	# <CJK>
+0xD3BF	0x8687	# <CJK>
+0xD3C0	0x8697	# <CJK>
+0xD3C1	0x8686	# <CJK>
+0xD3C2	0x868B	# <CJK>
+0xD3C3	0x869A	# <CJK>
+0xD3C4	0x8685	# <CJK>
+0xD3C5	0x86A5	# <CJK>
+0xD3C6	0x8699	# <CJK>
+0xD3C7	0x86A1	# <CJK>
+0xD3C8	0x86A7	# <CJK>
+0xD3C9	0x8695	# <CJK>
+0xD3CA	0x8698	# <CJK>
+0xD3CB	0x868E	# <CJK>
+0xD3CC	0x869D	# <CJK>
+0xD3CD	0x8690	# <CJK>
+0xD3CE	0x8694	# <CJK>
+0xD3CF	0x8843	# <CJK>
+0xD3D0	0x8844	# <CJK>
+0xD3D1	0x886D	# <CJK>
+0xD3D2	0x8875	# <CJK>
+0xD3D3	0x8876	# <CJK>
+0xD3D4	0x8872	# <CJK>
+0xD3D5	0x8880	# <CJK>
+0xD3D6	0x8871	# <CJK>
+0xD3D7	0x887F	# <CJK>
+0xD3D8	0x886F	# <CJK>
+0xD3D9	0x8883	# <CJK>
+0xD3DA	0x887E	# <CJK>
+0xD3DB	0x8874	# <CJK>
+0xD3DC	0x887C	# <CJK>
+0xD3DD	0x8A12	# <CJK>
+0xD3DE	0x8C47	# <CJK>
+0xD3DF	0x8C57	# <CJK>
+0xD3E0	0x8C7B	# <CJK>
+0xD3E1	0x8CA4	# <CJK>
+0xD3E2	0x8CA3	# <CJK>
+0xD3E3	0x8D76	# <CJK>
+0xD3E4	0x8D78	# <CJK>
+0xD3E5	0x8DB5	# <CJK>
+0xD3E6	0x8DB7	# <CJK>
+0xD3E7	0x8DB6	# <CJK>
+0xD3E8	0x8ED1	# <CJK>
+0xD3E9	0x8ED3	# <CJK>
+0xD3EA	0x8FFE	# <CJK>
+0xD3EB	0x8FF5	# <CJK>
+0xD3EC	0x9002	# <CJK>
+0xD3ED	0x8FFF	# <CJK>
+0xD3EE	0x8FFB	# <CJK>
+0xD3EF	0x9004	# <CJK>
+0xD3F0	0x8FFC	# <CJK>
+0xD3F1	0x8FF6	# <CJK>
+0xD3F2	0x90D6	# <CJK>
+0xD3F3	0x90E0	# <CJK>
+0xD3F4	0x90D9	# <CJK>
+0xD3F5	0x90DA	# <CJK>
+0xD3F6	0x90E3	# <CJK>
+0xD3F7	0x90DF	# <CJK>
+0xD3F8	0x90E5	# <CJK>
+0xD3F9	0x90D8	# <CJK>
+0xD3FA	0x90DB	# <CJK>
+0xD3FB	0x90D7	# <CJK>
+0xD3FC	0x90DC	# <CJK>
+0xD3FD	0x90E4	# <CJK>
+0xD3FE	0x9150	# <CJK>
+0xD440	0x914E	# <CJK>
+0xD441	0x914F	# <CJK>
+0xD442	0x91D5	# <CJK>
+0xD443	0x91E2	# <CJK>
+0xD444	0x91DA	# <CJK>
+0xD445	0x965C	# <CJK>
+0xD446	0x965F	# <CJK>
+0xD447	0x96BC	# <CJK>
+0xD448	0x98E3	# <CJK>
+0xD449	0x9ADF	# <CJK>
+0xD44A	0x9B2F	# <CJK>
+0xD44B	0x4E7F	# <CJK>
+0xD44C	0x5070	# <CJK>
+0xD44D	0x506A	# <CJK>
+0xD44E	0x5061	# <CJK>
+0xD44F	0x505E	# <CJK>
+0xD450	0x5060	# <CJK>
+0xD451	0x5053	# <CJK>
+0xD452	0x504B	# <CJK>
+0xD453	0x505D	# <CJK>
+0xD454	0x5072	# <CJK>
+0xD455	0x5048	# <CJK>
+0xD456	0x504D	# <CJK>
+0xD457	0x5041	# <CJK>
+0xD458	0x505B	# <CJK>
+0xD459	0x504A	# <CJK>
+0xD45A	0x5062	# <CJK>
+0xD45B	0x5015	# <CJK>
+0xD45C	0x5045	# <CJK>
+0xD45D	0x505F	# <CJK>
+0xD45E	0x5069	# <CJK>
+0xD45F	0x506B	# <CJK>
+0xD460	0x5063	# <CJK>
+0xD461	0x5064	# <CJK>
+0xD462	0x5046	# <CJK>
+0xD463	0x5040	# <CJK>
+0xD464	0x506E	# <CJK>
+0xD465	0x5073	# <CJK>
+0xD466	0x5057	# <CJK>
+0xD467	0x5051	# <CJK>
+0xD468	0x51D0	# <CJK>
+0xD469	0x526B	# <CJK>
+0xD46A	0x526D	# <CJK>
+0xD46B	0x526C	# <CJK>
+0xD46C	0x526E	# <CJK>
+0xD46D	0x52D6	# <CJK>
+0xD46E	0x52D3	# <CJK>
+0xD46F	0x532D	# <CJK>
+0xD470	0x539C	# <CJK>
+0xD471	0x5575	# <CJK>
+0xD472	0x5576	# <CJK>
+0xD473	0x553C	# <CJK>
+0xD474	0x554D	# <CJK>
+0xD475	0x5550	# <CJK>
+0xD476	0x5534	# <CJK>
+0xD477	0x552A	# <CJK>
+0xD478	0x5551	# <CJK>
+0xD479	0x5562	# <CJK>
+0xD47A	0x5536	# <CJK>
+0xD47B	0x5535	# <CJK>
+0xD47C	0x5530	# <CJK>
+0xD47D	0x5552	# <CJK>
+0xD47E	0x5545	# <CJK>
+0xD4A1	0x550C	# <CJK>
+0xD4A2	0x5532	# <CJK>
+0xD4A3	0x5565	# <CJK>
+0xD4A4	0x554E	# <CJK>
+0xD4A5	0x5539	# <CJK>
+0xD4A6	0x5548	# <CJK>
+0xD4A7	0x552D	# <CJK>
+0xD4A8	0x553B	# <CJK>
+0xD4A9	0x5540	# <CJK>
+0xD4AA	0x554B	# <CJK>
+0xD4AB	0x570A	# <CJK>
+0xD4AC	0x5707	# <CJK>
+0xD4AD	0x57FB	# <CJK>
+0xD4AE	0x5814	# <CJK>
+0xD4AF	0x57E2	# <CJK>
+0xD4B0	0x57F6	# <CJK>
+0xD4B1	0x57DC	# <CJK>
+0xD4B2	0x57F4	# <CJK>
+0xD4B3	0x5800	# <CJK>
+0xD4B4	0x57ED	# <CJK>
+0xD4B5	0x57FD	# <CJK>
+0xD4B6	0x5808	# <CJK>
+0xD4B7	0x57F8	# <CJK>
+0xD4B8	0x580B	# <CJK>
+0xD4B9	0x57F3	# <CJK>
+0xD4BA	0x57CF	# <CJK>
+0xD4BB	0x5807	# <CJK>
+0xD4BC	0x57EE	# <CJK>
+0xD4BD	0x57E3	# <CJK>
+0xD4BE	0x57F2	# <CJK>
+0xD4BF	0x57E5	# <CJK>
+0xD4C0	0x57EC	# <CJK>
+0xD4C1	0x57E1	# <CJK>
+0xD4C2	0x580E	# <CJK>
+0xD4C3	0x57FC	# <CJK>
+0xD4C4	0x5810	# <CJK>
+0xD4C5	0x57E7	# <CJK>
+0xD4C6	0x5801	# <CJK>
+0xD4C7	0x580C	# <CJK>
+0xD4C8	0x57F1	# <CJK>
+0xD4C9	0x57E9	# <CJK>
+0xD4CA	0x57F0	# <CJK>
+0xD4CB	0x580D	# <CJK>
+0xD4CC	0x5804	# <CJK>
+0xD4CD	0x595C	# <CJK>
+0xD4CE	0x5A60	# <CJK>
+0xD4CF	0x5A58	# <CJK>
+0xD4D0	0x5A55	# <CJK>
+0xD4D1	0x5A67	# <CJK>
+0xD4D2	0x5A5E	# <CJK>
+0xD4D3	0x5A38	# <CJK>
+0xD4D4	0x5A35	# <CJK>
+0xD4D5	0x5A6D	# <CJK>
+0xD4D6	0x5A50	# <CJK>
+0xD4D7	0x5A5F	# <CJK>
+0xD4D8	0x5A65	# <CJK>
+0xD4D9	0x5A6C	# <CJK>
+0xD4DA	0x5A53	# <CJK>
+0xD4DB	0x5A64	# <CJK>
+0xD4DC	0x5A57	# <CJK>
+0xD4DD	0x5A43	# <CJK>
+0xD4DE	0x5A5D	# <CJK>
+0xD4DF	0x5A52	# <CJK>
+0xD4E0	0x5A44	# <CJK>
+0xD4E1	0x5A5B	# <CJK>
+0xD4E2	0x5A48	# <CJK>
+0xD4E3	0x5A8E	# <CJK>
+0xD4E4	0x5A3E	# <CJK>
+0xD4E5	0x5A4D	# <CJK>
+0xD4E6	0x5A39	# <CJK>
+0xD4E7	0x5A4C	# <CJK>
+0xD4E8	0x5A70	# <CJK>
+0xD4E9	0x5A69	# <CJK>
+0xD4EA	0x5A47	# <CJK>
+0xD4EB	0x5A51	# <CJK>
+0xD4EC	0x5A56	# <CJK>
+0xD4ED	0x5A42	# <CJK>
+0xD4EE	0x5A5C	# <CJK>
+0xD4EF	0x5B72	# <CJK>
+0xD4F0	0x5B6E	# <CJK>
+0xD4F1	0x5BC1	# <CJK>
+0xD4F2	0x5BC0	# <CJK>
+0xD4F3	0x5C59	# <CJK>
+0xD4F4	0x5D1E	# <CJK>
+0xD4F5	0x5D0B	# <CJK>
+0xD4F6	0x5D1D	# <CJK>
+0xD4F7	0x5D1A	# <CJK>
+0xD4F8	0x5D20	# <CJK>
+0xD4F9	0x5D0C	# <CJK>
+0xD4FA	0x5D28	# <CJK>
+0xD4FB	0x5D0D	# <CJK>
+0xD4FC	0x5D26	# <CJK>
+0xD4FD	0x5D25	# <CJK>
+0xD4FE	0x5D0F	# <CJK>
+0xD540	0x5D30	# <CJK>
+0xD541	0x5D12	# <CJK>
+0xD542	0x5D23	# <CJK>
+0xD543	0x5D1F	# <CJK>
+0xD544	0x5D2E	# <CJK>
+0xD545	0x5E3E	# <CJK>
+0xD546	0x5E34	# <CJK>
+0xD547	0x5EB1	# <CJK>
+0xD548	0x5EB4	# <CJK>
+0xD549	0x5EB9	# <CJK>
+0xD54A	0x5EB2	# <CJK>
+0xD54B	0x5EB3	# <CJK>
+0xD54C	0x5F36	# <CJK>
+0xD54D	0x5F38	# <CJK>
+0xD54E	0x5F9B	# <CJK>
+0xD54F	0x5F96	# <CJK>
+0xD550	0x5F9F	# <CJK>
+0xD551	0x608A	# <CJK>
+0xD552	0x6090	# <CJK>
+0xD553	0x6086	# <CJK>
+0xD554	0x60BE	# <CJK>
+0xD555	0x60B0	# <CJK>
+0xD556	0x60BA	# <CJK>
+0xD557	0x60D3	# <CJK>
+0xD558	0x60D4	# <CJK>
+0xD559	0x60CF	# <CJK>
+0xD55A	0x60E4	# <CJK>
+0xD55B	0x60D9	# <CJK>
+0xD55C	0x60DD	# <CJK>
+0xD55D	0x60C8	# <CJK>
+0xD55E	0x60B1	# <CJK>
+0xD55F	0x60DB	# <CJK>
+0xD560	0x60B7	# <CJK>
+0xD561	0x60CA	# <CJK>
+0xD562	0x60BF	# <CJK>
+0xD563	0x60C3	# <CJK>
+0xD564	0x60CD	# <CJK>
+0xD565	0x60C0	# <CJK>
+0xD566	0x6332	# <CJK>
+0xD567	0x6365	# <CJK>
+0xD568	0x638A	# <CJK>
+0xD569	0x6382	# <CJK>
+0xD56A	0x637D	# <CJK>
+0xD56B	0x63BD	# <CJK>
+0xD56C	0x639E	# <CJK>
+0xD56D	0x63AD	# <CJK>
+0xD56E	0x639D	# <CJK>
+0xD56F	0x6397	# <CJK>
+0xD570	0x63AB	# <CJK>
+0xD571	0x638E	# <CJK>
+0xD572	0x636F	# <CJK>
+0xD573	0x6387	# <CJK>
+0xD574	0x6390	# <CJK>
+0xD575	0x636E	# <CJK>
+0xD576	0x63AF	# <CJK>
+0xD577	0x6375	# <CJK>
+0xD578	0x639C	# <CJK>
+0xD579	0x636D	# <CJK>
+0xD57A	0x63AE	# <CJK>
+0xD57B	0x637C	# <CJK>
+0xD57C	0x63A4	# <CJK>
+0xD57D	0x633B	# <CJK>
+0xD57E	0x639F	# <CJK>
+0xD5A1	0x6378	# <CJK>
+0xD5A2	0x6385	# <CJK>
+0xD5A3	0x6381	# <CJK>
+0xD5A4	0x6391	# <CJK>
+0xD5A5	0x638D	# <CJK>
+0xD5A6	0x6370	# <CJK>
+0xD5A7	0x6553	# <CJK>
+0xD5A8	0x65CD	# <CJK>
+0xD5A9	0x6665	# <CJK>
+0xD5AA	0x6661	# <CJK>
+0xD5AB	0x665B	# <CJK>
+0xD5AC	0x6659	# <CJK>
+0xD5AD	0x665C	# <CJK>
+0xD5AE	0x6662	# <CJK>
+0xD5AF	0x6718	# <CJK>
+0xD5B0	0x6879	# <CJK>
+0xD5B1	0x6887	# <CJK>
+0xD5B2	0x6890	# <CJK>
+0xD5B3	0x689C	# <CJK>
+0xD5B4	0x686D	# <CJK>
+0xD5B5	0x686E	# <CJK>
+0xD5B6	0x68AE	# <CJK>
+0xD5B7	0x68AB	# <CJK>
+0xD5B8	0x6956	# <CJK>
+0xD5B9	0x686F	# <CJK>
+0xD5BA	0x68A3	# <CJK>
+0xD5BB	0x68AC	# <CJK>
+0xD5BC	0x68A9	# <CJK>
+0xD5BD	0x6875	# <CJK>
+0xD5BE	0x6874	# <CJK>
+0xD5BF	0x68B2	# <CJK>
+0xD5C0	0x688F	# <CJK>
+0xD5C1	0x6877	# <CJK>
+0xD5C2	0x6892	# <CJK>
+0xD5C3	0x687C	# <CJK>
+0xD5C4	0x686B	# <CJK>
+0xD5C5	0x6872	# <CJK>
+0xD5C6	0x68AA	# <CJK>
+0xD5C7	0x6880	# <CJK>
+0xD5C8	0x6871	# <CJK>
+0xD5C9	0x687E	# <CJK>
+0xD5CA	0x689B	# <CJK>
+0xD5CB	0x6896	# <CJK>
+0xD5CC	0x688B	# <CJK>
+0xD5CD	0x68A0	# <CJK>
+0xD5CE	0x6889	# <CJK>
+0xD5CF	0x68A4	# <CJK>
+0xD5D0	0x6878	# <CJK>
+0xD5D1	0x687B	# <CJK>
+0xD5D2	0x6891	# <CJK>
+0xD5D3	0x688C	# <CJK>
+0xD5D4	0x688A	# <CJK>
+0xD5D5	0x687D	# <CJK>
+0xD5D6	0x6B36	# <CJK>
+0xD5D7	0x6B33	# <CJK>
+0xD5D8	0x6B37	# <CJK>
+0xD5D9	0x6B38	# <CJK>
+0xD5DA	0x6B91	# <CJK>
+0xD5DB	0x6B8F	# <CJK>
+0xD5DC	0x6B8D	# <CJK>
+0xD5DD	0x6B8E	# <CJK>
+0xD5DE	0x6B8C	# <CJK>
+0xD5DF	0x6C2A	# <CJK>
+0xD5E0	0x6DC0	# <CJK>
+0xD5E1	0x6DAB	# <CJK>
+0xD5E2	0x6DB4	# <CJK>
+0xD5E3	0x6DB3	# <CJK>
+0xD5E4	0x6E74	# <CJK>
+0xD5E5	0x6DAC	# <CJK>
+0xD5E6	0x6DE9	# <CJK>
+0xD5E7	0x6DE2	# <CJK>
+0xD5E8	0x6DB7	# <CJK>
+0xD5E9	0x6DF6	# <CJK>
+0xD5EA	0x6DD4	# <CJK>
+0xD5EB	0x6E00	# <CJK>
+0xD5EC	0x6DC8	# <CJK>
+0xD5ED	0x6DE0	# <CJK>
+0xD5EE	0x6DDF	# <CJK>
+0xD5EF	0x6DD6	# <CJK>
+0xD5F0	0x6DBE	# <CJK>
+0xD5F1	0x6DE5	# <CJK>
+0xD5F2	0x6DDC	# <CJK>
+0xD5F3	0x6DDD	# <CJK>
+0xD5F4	0x6DDB	# <CJK>
+0xD5F5	0x6DF4	# <CJK>
+0xD5F6	0x6DCA	# <CJK>
+0xD5F7	0x6DBD	# <CJK>
+0xD5F8	0x6DED	# <CJK>
+0xD5F9	0x6DF0	# <CJK>
+0xD5FA	0x6DBA	# <CJK>
+0xD5FB	0x6DD5	# <CJK>
+0xD5FC	0x6DC2	# <CJK>
+0xD5FD	0x6DCF	# <CJK>
+0xD5FE	0x6DC9	# <CJK>
+0xD640	0x6DD0	# <CJK>
+0xD641	0x6DF2	# <CJK>
+0xD642	0x6DD3	# <CJK>
+0xD643	0x6DFD	# <CJK>
+0xD644	0x6DD7	# <CJK>
+0xD645	0x6DCD	# <CJK>
+0xD646	0x6DE3	# <CJK>
+0xD647	0x6DBB	# <CJK>
+0xD648	0x70FA	# <CJK>
+0xD649	0x710D	# <CJK>
+0xD64A	0x70F7	# <CJK>
+0xD64B	0x7117	# <CJK>
+0xD64C	0x70F4	# <CJK>
+0xD64D	0x710C	# <CJK>
+0xD64E	0x70F0	# <CJK>
+0xD64F	0x7104	# <CJK>
+0xD650	0x70F3	# <CJK>
+0xD651	0x7110	# <CJK>
+0xD652	0x70FC	# <CJK>
+0xD653	0x70FF	# <CJK>
+0xD654	0x7106	# <CJK>
+0xD655	0x7113	# <CJK>
+0xD656	0x7100	# <CJK>
+0xD657	0x70F8	# <CJK>
+0xD658	0x70F6	# <CJK>
+0xD659	0x710B	# <CJK>
+0xD65A	0x7102	# <CJK>
+0xD65B	0x710E	# <CJK>
+0xD65C	0x727E	# <CJK>
+0xD65D	0x727B	# <CJK>
+0xD65E	0x727C	# <CJK>
+0xD65F	0x727F	# <CJK>
+0xD660	0x731D	# <CJK>
+0xD661	0x7317	# <CJK>
+0xD662	0x7307	# <CJK>
+0xD663	0x7311	# <CJK>
+0xD664	0x7318	# <CJK>
+0xD665	0x730A	# <CJK>
+0xD666	0x7308	# <CJK>
+0xD667	0x72FF	# <CJK>
+0xD668	0x730F	# <CJK>
+0xD669	0x731E	# <CJK>
+0xD66A	0x7388	# <CJK>
+0xD66B	0x73F6	# <CJK>
+0xD66C	0x73F8	# <CJK>
+0xD66D	0x73F5	# <CJK>
+0xD66E	0x7404	# <CJK>
+0xD66F	0x7401	# <CJK>
+0xD670	0x73FD	# <CJK>
+0xD671	0x7407	# <CJK>
+0xD672	0x7400	# <CJK>
+0xD673	0x73FA	# <CJK>
+0xD674	0x73FC	# <CJK>
+0xD675	0x73FF	# <CJK>
+0xD676	0x740C	# <CJK>
+0xD677	0x740B	# <CJK>
+0xD678	0x73F4	# <CJK>
+0xD679	0x7408	# <CJK>
+0xD67A	0x7564	# <CJK>
+0xD67B	0x7563	# <CJK>
+0xD67C	0x75CE	# <CJK>
+0xD67D	0x75D2	# <CJK>
+0xD67E	0x75CF	# <CJK>
+0xD6A1	0x75CB	# <CJK>
+0xD6A2	0x75CC	# <CJK>
+0xD6A3	0x75D1	# <CJK>
+0xD6A4	0x75D0	# <CJK>
+0xD6A5	0x768F	# <CJK>
+0xD6A6	0x7689	# <CJK>
+0xD6A7	0x76D3	# <CJK>
+0xD6A8	0x7739	# <CJK>
+0xD6A9	0x772F	# <CJK>
+0xD6AA	0x772D	# <CJK>
+0xD6AB	0x7731	# <CJK>
+0xD6AC	0x7732	# <CJK>
+0xD6AD	0x7734	# <CJK>
+0xD6AE	0x7733	# <CJK>
+0xD6AF	0x773D	# <CJK>
+0xD6B0	0x7725	# <CJK>
+0xD6B1	0x773B	# <CJK>
+0xD6B2	0x7735	# <CJK>
+0xD6B3	0x7848	# <CJK>
+0xD6B4	0x7852	# <CJK>
+0xD6B5	0x7849	# <CJK>
+0xD6B6	0x784D	# <CJK>
+0xD6B7	0x784A	# <CJK>
+0xD6B8	0x784C	# <CJK>
+0xD6B9	0x7826	# <CJK>
+0xD6BA	0x7845	# <CJK>
+0xD6BB	0x7850	# <CJK>
+0xD6BC	0x7964	# <CJK>
+0xD6BD	0x7967	# <CJK>
+0xD6BE	0x7969	# <CJK>
+0xD6BF	0x796A	# <CJK>
+0xD6C0	0x7963	# <CJK>
+0xD6C1	0x796B	# <CJK>
+0xD6C2	0x7961	# <CJK>
+0xD6C3	0x79BB	# <CJK>
+0xD6C4	0x79FA	# <CJK>
+0xD6C5	0x79F8	# <CJK>
+0xD6C6	0x79F6	# <CJK>
+0xD6C7	0x79F7	# <CJK>
+0xD6C8	0x7A8F	# <CJK>
+0xD6C9	0x7A94	# <CJK>
+0xD6CA	0x7A90	# <CJK>
+0xD6CB	0x7B35	# <CJK>
+0xD6CC	0x7B47	# <CJK>
+0xD6CD	0x7B34	# <CJK>
+0xD6CE	0x7B25	# <CJK>
+0xD6CF	0x7B30	# <CJK>
+0xD6D0	0x7B22	# <CJK>
+0xD6D1	0x7B24	# <CJK>
+0xD6D2	0x7B33	# <CJK>
+0xD6D3	0x7B18	# <CJK>
+0xD6D4	0x7B2A	# <CJK>
+0xD6D5	0x7B1D	# <CJK>
+0xD6D6	0x7B31	# <CJK>
+0xD6D7	0x7B2B	# <CJK>
+0xD6D8	0x7B2D	# <CJK>
+0xD6D9	0x7B2F	# <CJK>
+0xD6DA	0x7B32	# <CJK>
+0xD6DB	0x7B38	# <CJK>
+0xD6DC	0x7B1A	# <CJK>
+0xD6DD	0x7B23	# <CJK>
+0xD6DE	0x7C94	# <CJK>
+0xD6DF	0x7C98	# <CJK>
+0xD6E0	0x7C96	# <CJK>
+0xD6E1	0x7CA3	# <CJK>
+0xD6E2	0x7D35	# <CJK>
+0xD6E3	0x7D3D	# <CJK>
+0xD6E4	0x7D38	# <CJK>
+0xD6E5	0x7D36	# <CJK>
+0xD6E6	0x7D3A	# <CJK>
+0xD6E7	0x7D45	# <CJK>
+0xD6E8	0x7D2C	# <CJK>
+0xD6E9	0x7D29	# <CJK>
+0xD6EA	0x7D41	# <CJK>
+0xD6EB	0x7D47	# <CJK>
+0xD6EC	0x7D3E	# <CJK>
+0xD6ED	0x7D3F	# <CJK>
+0xD6EE	0x7D4A	# <CJK>
+0xD6EF	0x7D3B	# <CJK>
+0xD6F0	0x7D28	# <CJK>
+0xD6F1	0x7F63	# <CJK>
+0xD6F2	0x7F95	# <CJK>
+0xD6F3	0x7F9C	# <CJK>
+0xD6F4	0x7F9D	# <CJK>
+0xD6F5	0x7F9B	# <CJK>
+0xD6F6	0x7FCA	# <CJK>
+0xD6F7	0x7FCB	# <CJK>
+0xD6F8	0x7FCD	# <CJK>
+0xD6F9	0x7FD0	# <CJK>
+0xD6FA	0x7FD1	# <CJK>
+0xD6FB	0x7FC7	# <CJK>
+0xD6FC	0x7FCF	# <CJK>
+0xD6FD	0x7FC9	# <CJK>
+0xD6FE	0x801F	# <CJK>
+0xD740	0x801E	# <CJK>
+0xD741	0x801B	# <CJK>
+0xD742	0x8047	# <CJK>
+0xD743	0x8043	# <CJK>
+0xD744	0x8048	# <CJK>
+0xD745	0x8118	# <CJK>
+0xD746	0x8125	# <CJK>
+0xD747	0x8119	# <CJK>
+0xD748	0x811B	# <CJK>
+0xD749	0x812D	# <CJK>
+0xD74A	0x811F	# <CJK>
+0xD74B	0x812C	# <CJK>
+0xD74C	0x811E	# <CJK>
+0xD74D	0x8121	# <CJK>
+0xD74E	0x8115	# <CJK>
+0xD74F	0x8127	# <CJK>
+0xD750	0x811D	# <CJK>
+0xD751	0x8122	# <CJK>
+0xD752	0x8211	# <CJK>
+0xD753	0x8238	# <CJK>
+0xD754	0x8233	# <CJK>
+0xD755	0x823A	# <CJK>
+0xD756	0x8234	# <CJK>
+0xD757	0x8232	# <CJK>
+0xD758	0x8274	# <CJK>
+0xD759	0x8390	# <CJK>
+0xD75A	0x83A3	# <CJK>
+0xD75B	0x83A8	# <CJK>
+0xD75C	0x838D	# <CJK>
+0xD75D	0x837A	# <CJK>
+0xD75E	0x8373	# <CJK>
+0xD75F	0x83A4	# <CJK>
+0xD760	0x8374	# <CJK>
+0xD761	0x838F	# <CJK>
+0xD762	0x8381	# <CJK>
+0xD763	0x8395	# <CJK>
+0xD764	0x8399	# <CJK>
+0xD765	0x8375	# <CJK>
+0xD766	0x8394	# <CJK>
+0xD767	0x83A9	# <CJK>
+0xD768	0x837D	# <CJK>
+0xD769	0x8383	# <CJK>
+0xD76A	0x838C	# <CJK>
+0xD76B	0x839D	# <CJK>
+0xD76C	0x839B	# <CJK>
+0xD76D	0x83AA	# <CJK>
+0xD76E	0x838B	# <CJK>
+0xD76F	0x837E	# <CJK>
+0xD770	0x83A5	# <CJK>
+0xD771	0x83AF	# <CJK>
+0xD772	0x8388	# <CJK>
+0xD773	0x8397	# <CJK>
+0xD774	0x83B0	# <CJK>
+0xD775	0x837F	# <CJK>
+0xD776	0x83A6	# <CJK>
+0xD777	0x8387	# <CJK>
+0xD778	0x83AE	# <CJK>
+0xD779	0x8376	# <CJK>
+0xD77A	0x839A	# <CJK>
+0xD77B	0x8659	# <CJK>
+0xD77C	0x8656	# <CJK>
+0xD77D	0x86BF	# <CJK>
+0xD77E	0x86B7	# <CJK>
+0xD7A1	0x86C2	# <CJK>
+0xD7A2	0x86C1	# <CJK>
+0xD7A3	0x86C5	# <CJK>
+0xD7A4	0x86BA	# <CJK>
+0xD7A5	0x86B0	# <CJK>
+0xD7A6	0x86C8	# <CJK>
+0xD7A7	0x86B9	# <CJK>
+0xD7A8	0x86B3	# <CJK>
+0xD7A9	0x86B8	# <CJK>
+0xD7AA	0x86CC	# <CJK>
+0xD7AB	0x86B4	# <CJK>
+0xD7AC	0x86BB	# <CJK>
+0xD7AD	0x86BC	# <CJK>
+0xD7AE	0x86C3	# <CJK>
+0xD7AF	0x86BD	# <CJK>
+0xD7B0	0x86BE	# <CJK>
+0xD7B1	0x8852	# <CJK>
+0xD7B2	0x8889	# <CJK>
+0xD7B3	0x8895	# <CJK>
+0xD7B4	0x88A8	# <CJK>
+0xD7B5	0x88A2	# <CJK>
+0xD7B6	0x88AA	# <CJK>
+0xD7B7	0x889A	# <CJK>
+0xD7B8	0x8891	# <CJK>
+0xD7B9	0x88A1	# <CJK>
+0xD7BA	0x889F	# <CJK>
+0xD7BB	0x8898	# <CJK>
+0xD7BC	0x88A7	# <CJK>
+0xD7BD	0x8899	# <CJK>
+0xD7BE	0x889B	# <CJK>
+0xD7BF	0x8897	# <CJK>
+0xD7C0	0x88A4	# <CJK>
+0xD7C1	0x88AC	# <CJK>
+0xD7C2	0x888C	# <CJK>
+0xD7C3	0x8893	# <CJK>
+0xD7C4	0x888E	# <CJK>
+0xD7C5	0x8982	# <CJK>
+0xD7C6	0x89D6	# <CJK>
+0xD7C7	0x89D9	# <CJK>
+0xD7C8	0x89D5	# <CJK>
+0xD7C9	0x8A30	# <CJK>
+0xD7CA	0x8A27	# <CJK>
+0xD7CB	0x8A2C	# <CJK>
+0xD7CC	0x8A1E	# <CJK>
+0xD7CD	0x8C39	# <CJK>
+0xD7CE	0x8C3B	# <CJK>
+0xD7CF	0x8C5C	# <CJK>
+0xD7D0	0x8C5D	# <CJK>
+0xD7D1	0x8C7D	# <CJK>
+0xD7D2	0x8CA5	# <CJK>
+0xD7D3	0x8D7D	# <CJK>
+0xD7D4	0x8D7B	# <CJK>
+0xD7D5	0x8D79	# <CJK>
+0xD7D6	0x8DBC	# <CJK>
+0xD7D7	0x8DC2	# <CJK>
+0xD7D8	0x8DB9	# <CJK>
+0xD7D9	0x8DBF	# <CJK>
+0xD7DA	0x8DC1	# <CJK>
+0xD7DB	0x8ED8	# <CJK>
+0xD7DC	0x8EDE	# <CJK>
+0xD7DD	0x8EDD	# <CJK>
+0xD7DE	0x8EDC	# <CJK>
+0xD7DF	0x8ED7	# <CJK>
+0xD7E0	0x8EE0	# <CJK>
+0xD7E1	0x8EE1	# <CJK>
+0xD7E2	0x9024	# <CJK>
+0xD7E3	0x900B	# <CJK>
+0xD7E4	0x9011	# <CJK>
+0xD7E5	0x901C	# <CJK>
+0xD7E6	0x900C	# <CJK>
+0xD7E7	0x9021	# <CJK>
+0xD7E8	0x90EF	# <CJK>
+0xD7E9	0x90EA	# <CJK>
+0xD7EA	0x90F0	# <CJK>
+0xD7EB	0x90F4	# <CJK>
+0xD7EC	0x90F2	# <CJK>
+0xD7ED	0x90F3	# <CJK>
+0xD7EE	0x90D4	# <CJK>
+0xD7EF	0x90EB	# <CJK>
+0xD7F0	0x90EC	# <CJK>
+0xD7F1	0x90E9	# <CJK>
+0xD7F2	0x9156	# <CJK>
+0xD7F3	0x9158	# <CJK>
+0xD7F4	0x915A	# <CJK>
+0xD7F5	0x9153	# <CJK>
+0xD7F6	0x9155	# <CJK>
+0xD7F7	0x91EC	# <CJK>
+0xD7F8	0x91F4	# <CJK>
+0xD7F9	0x91F1	# <CJK>
+0xD7FA	0x91F3	# <CJK>
+0xD7FB	0x91F8	# <CJK>
+0xD7FC	0x91E4	# <CJK>
+0xD7FD	0x91F9	# <CJK>
+0xD7FE	0x91EA	# <CJK>
+0xD840	0x91EB	# <CJK>
+0xD841	0x91F7	# <CJK>
+0xD842	0x91E8	# <CJK>
+0xD843	0x91EE	# <CJK>
+0xD844	0x957A	# <CJK>
+0xD845	0x9586	# <CJK>
+0xD846	0x9588	# <CJK>
+0xD847	0x967C	# <CJK>
+0xD848	0x966D	# <CJK>
+0xD849	0x966B	# <CJK>
+0xD84A	0x9671	# <CJK>
+0xD84B	0x966F	# <CJK>
+0xD84C	0x96BF	# <CJK>
+0xD84D	0x976A	# <CJK>
+0xD84E	0x9804	# <CJK>
+0xD84F	0x98E5	# <CJK>
+0xD850	0x9997	# <CJK>
+0xD851	0x509B	# <CJK>
+0xD852	0x5095	# <CJK>
+0xD853	0x5094	# <CJK>
+0xD854	0x509E	# <CJK>
+0xD855	0x508B	# <CJK>
+0xD856	0x50A3	# <CJK>
+0xD857	0x5083	# <CJK>
+0xD858	0x508C	# <CJK>
+0xD859	0x508E	# <CJK>
+0xD85A	0x509D	# <CJK>
+0xD85B	0x5068	# <CJK>
+0xD85C	0x509C	# <CJK>
+0xD85D	0x5092	# <CJK>
+0xD85E	0x5082	# <CJK>
+0xD85F	0x5087	# <CJK>
+0xD860	0x515F	# <CJK>
+0xD861	0x51D4	# <CJK>
+0xD862	0x5312	# <CJK>
+0xD863	0x5311	# <CJK>
+0xD864	0x53A4	# <CJK>
+0xD865	0x53A7	# <CJK>
+0xD866	0x5591	# <CJK>
+0xD867	0x55A8	# <CJK>
+0xD868	0x55A5	# <CJK>
+0xD869	0x55AD	# <CJK>
+0xD86A	0x5577	# <CJK>
+0xD86B	0x5645	# <CJK>
+0xD86C	0x55A2	# <CJK>
+0xD86D	0x5593	# <CJK>
+0xD86E	0x5588	# <CJK>
+0xD86F	0x558F	# <CJK>
+0xD870	0x55B5	# <CJK>
+0xD871	0x5581	# <CJK>
+0xD872	0x55A3	# <CJK>
+0xD873	0x5592	# <CJK>
+0xD874	0x55A4	# <CJK>
+0xD875	0x557D	# <CJK>
+0xD876	0x558C	# <CJK>
+0xD877	0x55A6	# <CJK>
+0xD878	0x557F	# <CJK>
+0xD879	0x5595	# <CJK>
+0xD87A	0x55A1	# <CJK>
+0xD87B	0x558E	# <CJK>
+0xD87C	0x570C	# <CJK>
+0xD87D	0x5829	# <CJK>
+0xD87E	0x5837	# <CJK>
+0xD8A1	0x5819	# <CJK>
+0xD8A2	0x581E	# <CJK>
+0xD8A3	0x5827	# <CJK>
+0xD8A4	0x5823	# <CJK>
+0xD8A5	0x5828	# <CJK>
+0xD8A6	0x57F5	# <CJK>
+0xD8A7	0x5848	# <CJK>
+0xD8A8	0x5825	# <CJK>
+0xD8A9	0x581C	# <CJK>
+0xD8AA	0x581B	# <CJK>
+0xD8AB	0x5833	# <CJK>
+0xD8AC	0x583F	# <CJK>
+0xD8AD	0x5836	# <CJK>
+0xD8AE	0x582E	# <CJK>
+0xD8AF	0x5839	# <CJK>
+0xD8B0	0x5838	# <CJK>
+0xD8B1	0x582D	# <CJK>
+0xD8B2	0x582C	# <CJK>
+0xD8B3	0x583B	# <CJK>
+0xD8B4	0x5961	# <CJK>
+0xD8B5	0x5AAF	# <CJK>
+0xD8B6	0x5A94	# <CJK>
+0xD8B7	0x5A9F	# <CJK>
+0xD8B8	0x5A7A	# <CJK>
+0xD8B9	0x5AA2	# <CJK>
+0xD8BA	0x5A9E	# <CJK>
+0xD8BB	0x5A78	# <CJK>
+0xD8BC	0x5AA6	# <CJK>
+0xD8BD	0x5A7C	# <CJK>
+0xD8BE	0x5AA5	# <CJK>
+0xD8BF	0x5AAC	# <CJK>
+0xD8C0	0x5A95	# <CJK>
+0xD8C1	0x5AAE	# <CJK>
+0xD8C2	0x5A37	# <CJK>
+0xD8C3	0x5A84	# <CJK>
+0xD8C4	0x5A8A	# <CJK>
+0xD8C5	0x5A97	# <CJK>
+0xD8C6	0x5A83	# <CJK>
+0xD8C7	0x5A8B	# <CJK>
+0xD8C8	0x5AA9	# <CJK>
+0xD8C9	0x5A7B	# <CJK>
+0xD8CA	0x5A7D	# <CJK>
+0xD8CB	0x5A8C	# <CJK>
+0xD8CC	0x5A9C	# <CJK>
+0xD8CD	0x5A8F	# <CJK>
+0xD8CE	0x5A93	# <CJK>
+0xD8CF	0x5A9D	# <CJK>
+0xD8D0	0x5BEA	# <CJK>
+0xD8D1	0x5BCD	# <CJK>
+0xD8D2	0x5BCB	# <CJK>
+0xD8D3	0x5BD4	# <CJK>
+0xD8D4	0x5BD1	# <CJK>
+0xD8D5	0x5BCA	# <CJK>
+0xD8D6	0x5BCE	# <CJK>
+0xD8D7	0x5C0C	# <CJK>
+0xD8D8	0x5C30	# <CJK>
+0xD8D9	0x5D37	# <CJK>
+0xD8DA	0x5D43	# <CJK>
+0xD8DB	0x5D6B	# <CJK>
+0xD8DC	0x5D41	# <CJK>
+0xD8DD	0x5D4B	# <CJK>
+0xD8DE	0x5D3F	# <CJK>
+0xD8DF	0x5D35	# <CJK>
+0xD8E0	0x5D51	# <CJK>
+0xD8E1	0x5D4E	# <CJK>
+0xD8E2	0x5D55	# <CJK>
+0xD8E3	0x5D33	# <CJK>
+0xD8E4	0x5D3A	# <CJK>
+0xD8E5	0x5D52	# <CJK>
+0xD8E6	0x5D3D	# <CJK>
+0xD8E7	0x5D31	# <CJK>
+0xD8E8	0x5D59	# <CJK>
+0xD8E9	0x5D42	# <CJK>
+0xD8EA	0x5D39	# <CJK>
+0xD8EB	0x5D49	# <CJK>
+0xD8EC	0x5D38	# <CJK>
+0xD8ED	0x5D3C	# <CJK>
+0xD8EE	0x5D32	# <CJK>
+0xD8EF	0x5D36	# <CJK>
+0xD8F0	0x5D40	# <CJK>
+0xD8F1	0x5D45	# <CJK>
+0xD8F2	0x5E44	# <CJK>
+0xD8F3	0x5E41	# <CJK>
+0xD8F4	0x5F58	# <CJK>
+0xD8F5	0x5FA6	# <CJK>
+0xD8F6	0x5FA5	# <CJK>
+0xD8F7	0x5FAB	# <CJK>
+0xD8F8	0x60C9	# <CJK>
+0xD8F9	0x60B9	# <CJK>
+0xD8FA	0x60CC	# <CJK>
+0xD8FB	0x60E2	# <CJK>
+0xD8FC	0x60CE	# <CJK>
+0xD8FD	0x60C4	# <CJK>
+0xD8FE	0x6114	# <CJK>
+0xD940	0x60F2	# <CJK>
+0xD941	0x610A	# <CJK>
+0xD942	0x6116	# <CJK>
+0xD943	0x6105	# <CJK>
+0xD944	0x60F5	# <CJK>
+0xD945	0x6113	# <CJK>
+0xD946	0x60F8	# <CJK>
+0xD947	0x60FC	# <CJK>
+0xD948	0x60FE	# <CJK>
+0xD949	0x60C1	# <CJK>
+0xD94A	0x6103	# <CJK>
+0xD94B	0x6118	# <CJK>
+0xD94C	0x611D	# <CJK>
+0xD94D	0x6110	# <CJK>
+0xD94E	0x60FF	# <CJK>
+0xD94F	0x6104	# <CJK>
+0xD950	0x610B	# <CJK>
+0xD951	0x624A	# <CJK>
+0xD952	0x6394	# <CJK>
+0xD953	0x63B1	# <CJK>
+0xD954	0x63B0	# <CJK>
+0xD955	0x63CE	# <CJK>
+0xD956	0x63E5	# <CJK>
+0xD957	0x63E8	# <CJK>
+0xD958	0x63EF	# <CJK>
+0xD959	0x63C3	# <CJK>
+0xD95A	0x649D	# <CJK>
+0xD95B	0x63F3	# <CJK>
+0xD95C	0x63CA	# <CJK>
+0xD95D	0x63E0	# <CJK>
+0xD95E	0x63F6	# <CJK>
+0xD95F	0x63D5	# <CJK>
+0xD960	0x63F2	# <CJK>
+0xD961	0x63F5	# <CJK>
+0xD962	0x6461	# <CJK>
+0xD963	0x63DF	# <CJK>
+0xD964	0x63BE	# <CJK>
+0xD965	0x63DD	# <CJK>
+0xD966	0x63DC	# <CJK>
+0xD967	0x63C4	# <CJK>
+0xD968	0x63D8	# <CJK>
+0xD969	0x63D3	# <CJK>
+0xD96A	0x63C2	# <CJK>
+0xD96B	0x63C7	# <CJK>
+0xD96C	0x63CC	# <CJK>
+0xD96D	0x63CB	# <CJK>
+0xD96E	0x63C8	# <CJK>
+0xD96F	0x63F0	# <CJK>
+0xD970	0x63D7	# <CJK>
+0xD971	0x63D9	# <CJK>
+0xD972	0x6532	# <CJK>
+0xD973	0x6567	# <CJK>
+0xD974	0x656A	# <CJK>
+0xD975	0x6564	# <CJK>
+0xD976	0x655C	# <CJK>
+0xD977	0x6568	# <CJK>
+0xD978	0x6565	# <CJK>
+0xD979	0x658C	# <CJK>
+0xD97A	0x659D	# <CJK>
+0xD97B	0x659E	# <CJK>
+0xD97C	0x65AE	# <CJK>
+0xD97D	0x65D0	# <CJK>
+0xD97E	0x65D2	# <CJK>
+0xD9A1	0x667C	# <CJK>
+0xD9A2	0x666C	# <CJK>
+0xD9A3	0x667B	# <CJK>
+0xD9A4	0x6680	# <CJK>
+0xD9A5	0x6671	# <CJK>
+0xD9A6	0x6679	# <CJK>
+0xD9A7	0x666A	# <CJK>
+0xD9A8	0x6672	# <CJK>
+0xD9A9	0x6701	# <CJK>
+0xD9AA	0x690C	# <CJK>
+0xD9AB	0x68D3	# <CJK>
+0xD9AC	0x6904	# <CJK>
+0xD9AD	0x68DC	# <CJK>
+0xD9AE	0x692A	# <CJK>
+0xD9AF	0x68EC	# <CJK>
+0xD9B0	0x68EA	# <CJK>
+0xD9B1	0x68F1	# <CJK>
+0xD9B2	0x690F	# <CJK>
+0xD9B3	0x68D6	# <CJK>
+0xD9B4	0x68F7	# <CJK>
+0xD9B5	0x68EB	# <CJK>
+0xD9B6	0x68E4	# <CJK>
+0xD9B7	0x68F6	# <CJK>
+0xD9B8	0x6913	# <CJK>
+0xD9B9	0x6910	# <CJK>
+0xD9BA	0x68F3	# <CJK>
+0xD9BB	0x68E1	# <CJK>
+0xD9BC	0x6907	# <CJK>
+0xD9BD	0x68CC	# <CJK>
+0xD9BE	0x6908	# <CJK>
+0xD9BF	0x6970	# <CJK>
+0xD9C0	0x68B4	# <CJK>
+0xD9C1	0x6911	# <CJK>
+0xD9C2	0x68EF	# <CJK>
+0xD9C3	0x68C6	# <CJK>
+0xD9C4	0x6914	# <CJK>
+0xD9C5	0x68F8	# <CJK>
+0xD9C6	0x68D0	# <CJK>
+0xD9C7	0x68FD	# <CJK>
+0xD9C8	0x68FC	# <CJK>
+0xD9C9	0x68E8	# <CJK>
+0xD9CA	0x690B	# <CJK>
+0xD9CB	0x690A	# <CJK>
+0xD9CC	0x6917	# <CJK>
+0xD9CD	0x68CE	# <CJK>
+0xD9CE	0x68C8	# <CJK>
+0xD9CF	0x68DD	# <CJK>
+0xD9D0	0x68DE	# <CJK>
+0xD9D1	0x68E6	# <CJK>
+0xD9D2	0x68F4	# <CJK>
+0xD9D3	0x68D1	# <CJK>
+0xD9D4	0x6906	# <CJK>
+0xD9D5	0x68D4	# <CJK>
+0xD9D6	0x68E9	# <CJK>
+0xD9D7	0x6915	# <CJK>
+0xD9D8	0x6925	# <CJK>
+0xD9D9	0x68C7	# <CJK>
+0xD9DA	0x6B39	# <CJK>
+0xD9DB	0x6B3B	# <CJK>
+0xD9DC	0x6B3F	# <CJK>
+0xD9DD	0x6B3C	# <CJK>
+0xD9DE	0x6B94	# <CJK>
+0xD9DF	0x6B97	# <CJK>
+0xD9E0	0x6B99	# <CJK>
+0xD9E1	0x6B95	# <CJK>
+0xD9E2	0x6BBD	# <CJK>
+0xD9E3	0x6BF0	# <CJK>
+0xD9E4	0x6BF2	# <CJK>
+0xD9E5	0x6BF3	# <CJK>
+0xD9E6	0x6C30	# <CJK>
+0xD9E7	0x6DFC	# <CJK>
+0xD9E8	0x6E46	# <CJK>
+0xD9E9	0x6E47	# <CJK>
+0xD9EA	0x6E1F	# <CJK>
+0xD9EB	0x6E49	# <CJK>
+0xD9EC	0x6E88	# <CJK>
+0xD9ED	0x6E3C	# <CJK>
+0xD9EE	0x6E3D	# <CJK>
+0xD9EF	0x6E45	# <CJK>
+0xD9F0	0x6E62	# <CJK>
+0xD9F1	0x6E2B	# <CJK>
+0xD9F2	0x6E3F	# <CJK>
+0xD9F3	0x6E41	# <CJK>
+0xD9F4	0x6E5D	# <CJK>
+0xD9F5	0x6E73	# <CJK>
+0xD9F6	0x6E1C	# <CJK>
+0xD9F7	0x6E33	# <CJK>
+0xD9F8	0x6E4B	# <CJK>
+0xD9F9	0x6E40	# <CJK>
+0xD9FA	0x6E51	# <CJK>
+0xD9FB	0x6E3B	# <CJK>
+0xD9FC	0x6E03	# <CJK>
+0xD9FD	0x6E2E	# <CJK>
+0xD9FE	0x6E5E	# <CJK>
+0xDA40	0x6E68	# <CJK>
+0xDA41	0x6E5C	# <CJK>
+0xDA42	0x6E61	# <CJK>
+0xDA43	0x6E31	# <CJK>
+0xDA44	0x6E28	# <CJK>
+0xDA45	0x6E60	# <CJK>
+0xDA46	0x6E71	# <CJK>
+0xDA47	0x6E6B	# <CJK>
+0xDA48	0x6E39	# <CJK>
+0xDA49	0x6E22	# <CJK>
+0xDA4A	0x6E30	# <CJK>
+0xDA4B	0x6E53	# <CJK>
+0xDA4C	0x6E65	# <CJK>
+0xDA4D	0x6E27	# <CJK>
+0xDA4E	0x6E78	# <CJK>
+0xDA4F	0x6E64	# <CJK>
+0xDA50	0x6E77	# <CJK>
+0xDA51	0x6E55	# <CJK>
+0xDA52	0x6E79	# <CJK>
+0xDA53	0x6E52	# <CJK>
+0xDA54	0x6E66	# <CJK>
+0xDA55	0x6E35	# <CJK>
+0xDA56	0x6E36	# <CJK>
+0xDA57	0x6E5A	# <CJK>
+0xDA58	0x7120	# <CJK>
+0xDA59	0x711E	# <CJK>
+0xDA5A	0x712F	# <CJK>
+0xDA5B	0x70FB	# <CJK>
+0xDA5C	0x712E	# <CJK>
+0xDA5D	0x7131	# <CJK>
+0xDA5E	0x7123	# <CJK>
+0xDA5F	0x7125	# <CJK>
+0xDA60	0x7122	# <CJK>
+0xDA61	0x7132	# <CJK>
+0xDA62	0x711F	# <CJK>
+0xDA63	0x7128	# <CJK>
+0xDA64	0x713A	# <CJK>
+0xDA65	0x711B	# <CJK>
+0xDA66	0x724B	# <CJK>
+0xDA67	0x725A	# <CJK>
+0xDA68	0x7288	# <CJK>
+0xDA69	0x7289	# <CJK>
+0xDA6A	0x7286	# <CJK>
+0xDA6B	0x7285	# <CJK>
+0xDA6C	0x728B	# <CJK>
+0xDA6D	0x7312	# <CJK>
+0xDA6E	0x730B	# <CJK>
+0xDA6F	0x7330	# <CJK>
+0xDA70	0x7322	# <CJK>
+0xDA71	0x7331	# <CJK>
+0xDA72	0x7333	# <CJK>
+0xDA73	0x7327	# <CJK>
+0xDA74	0x7332	# <CJK>
+0xDA75	0x732D	# <CJK>
+0xDA76	0x7326	# <CJK>
+0xDA77	0x7323	# <CJK>
+0xDA78	0x7335	# <CJK>
+0xDA79	0x730C	# <CJK>
+0xDA7A	0x742E	# <CJK>
+0xDA7B	0x742C	# <CJK>
+0xDA7C	0x7430	# <CJK>
+0xDA7D	0x742B	# <CJK>
+0xDA7E	0x7416	# <CJK>
+0xDAA1	0x741A	# <CJK>
+0xDAA2	0x7421	# <CJK>
+0xDAA3	0x742D	# <CJK>
+0xDAA4	0x7431	# <CJK>
+0xDAA5	0x7424	# <CJK>
+0xDAA6	0x7423	# <CJK>
+0xDAA7	0x741D	# <CJK>
+0xDAA8	0x7429	# <CJK>
+0xDAA9	0x7420	# <CJK>
+0xDAAA	0x7432	# <CJK>
+0xDAAB	0x74FB	# <CJK>
+0xDAAC	0x752F	# <CJK>
+0xDAAD	0x756F	# <CJK>
+0xDAAE	0x756C	# <CJK>
+0xDAAF	0x75E7	# <CJK>
+0xDAB0	0x75DA	# <CJK>
+0xDAB1	0x75E1	# <CJK>
+0xDAB2	0x75E6	# <CJK>
+0xDAB3	0x75DD	# <CJK>
+0xDAB4	0x75DF	# <CJK>
+0xDAB5	0x75E4	# <CJK>
+0xDAB6	0x75D7	# <CJK>
+0xDAB7	0x7695	# <CJK>
+0xDAB8	0x7692	# <CJK>
+0xDAB9	0x76DA	# <CJK>
+0xDABA	0x7746	# <CJK>
+0xDABB	0x7747	# <CJK>
+0xDABC	0x7744	# <CJK>
+0xDABD	0x774D	# <CJK>
+0xDABE	0x7745	# <CJK>
+0xDABF	0x774A	# <CJK>
+0xDAC0	0x774E	# <CJK>
+0xDAC1	0x774B	# <CJK>
+0xDAC2	0x774C	# <CJK>
+0xDAC3	0x77DE	# <CJK>
+0xDAC4	0x77EC	# <CJK>
+0xDAC5	0x7860	# <CJK>
+0xDAC6	0x7864	# <CJK>
+0xDAC7	0x7865	# <CJK>
+0xDAC8	0x785C	# <CJK>
+0xDAC9	0x786D	# <CJK>
+0xDACA	0x7871	# <CJK>
+0xDACB	0x786A	# <CJK>
+0xDACC	0x786E	# <CJK>
+0xDACD	0x7870	# <CJK>
+0xDACE	0x7869	# <CJK>
+0xDACF	0x7868	# <CJK>
+0xDAD0	0x785E	# <CJK>
+0xDAD1	0x7862	# <CJK>
+0xDAD2	0x7974	# <CJK>
+0xDAD3	0x7973	# <CJK>
+0xDAD4	0x7972	# <CJK>
+0xDAD5	0x7970	# <CJK>
+0xDAD6	0x7A02	# <CJK>
+0xDAD7	0x7A0A	# <CJK>
+0xDAD8	0x7A03	# <CJK>
+0xDAD9	0x7A0C	# <CJK>
+0xDADA	0x7A04	# <CJK>
+0xDADB	0x7A99	# <CJK>
+0xDADC	0x7AE6	# <CJK>
+0xDADD	0x7AE4	# <CJK>
+0xDADE	0x7B4A	# <CJK>
+0xDADF	0x7B3B	# <CJK>
+0xDAE0	0x7B44	# <CJK>
+0xDAE1	0x7B48	# <CJK>
+0xDAE2	0x7B4C	# <CJK>
+0xDAE3	0x7B4E	# <CJK>
+0xDAE4	0x7B40	# <CJK>
+0xDAE5	0x7B58	# <CJK>
+0xDAE6	0x7B45	# <CJK>
+0xDAE7	0x7CA2	# <CJK>
+0xDAE8	0x7C9E	# <CJK>
+0xDAE9	0x7CA8	# <CJK>
+0xDAEA	0x7CA1	# <CJK>
+0xDAEB	0x7D58	# <CJK>
+0xDAEC	0x7D6F	# <CJK>
+0xDAED	0x7D63	# <CJK>
+0xDAEE	0x7D53	# <CJK>
+0xDAEF	0x7D56	# <CJK>
+0xDAF0	0x7D67	# <CJK>
+0xDAF1	0x7D6A	# <CJK>
+0xDAF2	0x7D4F	# <CJK>
+0xDAF3	0x7D6D	# <CJK>
+0xDAF4	0x7D5C	# <CJK>
+0xDAF5	0x7D6B	# <CJK>
+0xDAF6	0x7D52	# <CJK>
+0xDAF7	0x7D54	# <CJK>
+0xDAF8	0x7D69	# <CJK>
+0xDAF9	0x7D51	# <CJK>
+0xDAFA	0x7D5F	# <CJK>
+0xDAFB	0x7D4E	# <CJK>
+0xDAFC	0x7F3E	# <CJK>
+0xDAFD	0x7F3F	# <CJK>
+0xDAFE	0x7F65	# <CJK>
+0xDB40	0x7F66	# <CJK>
+0xDB41	0x7FA2	# <CJK>
+0xDB42	0x7FA0	# <CJK>
+0xDB43	0x7FA1	# <CJK>
+0xDB44	0x7FD7	# <CJK>
+0xDB45	0x8051	# <CJK>
+0xDB46	0x804F	# <CJK>
+0xDB47	0x8050	# <CJK>
+0xDB48	0x80FE	# <CJK>
+0xDB49	0x80D4	# <CJK>
+0xDB4A	0x8143	# <CJK>
+0xDB4B	0x814A	# <CJK>
+0xDB4C	0x8152	# <CJK>
+0xDB4D	0x814F	# <CJK>
+0xDB4E	0x8147	# <CJK>
+0xDB4F	0x813D	# <CJK>
+0xDB50	0x814D	# <CJK>
+0xDB51	0x813A	# <CJK>
+0xDB52	0x81E6	# <CJK>
+0xDB53	0x81EE	# <CJK>
+0xDB54	0x81F7	# <CJK>
+0xDB55	0x81F8	# <CJK>
+0xDB56	0x81F9	# <CJK>
+0xDB57	0x8204	# <CJK>
+0xDB58	0x823C	# <CJK>
+0xDB59	0x823D	# <CJK>
+0xDB5A	0x823F	# <CJK>
+0xDB5B	0x8275	# <CJK>
+0xDB5C	0x833B	# <CJK>
+0xDB5D	0x83CF	# <CJK>
+0xDB5E	0x83F9	# <CJK>
+0xDB5F	0x8423	# <CJK>
+0xDB60	0x83C0	# <CJK>
+0xDB61	0x83E8	# <CJK>
+0xDB62	0x8412	# <CJK>
+0xDB63	0x83E7	# <CJK>
+0xDB64	0x83E4	# <CJK>
+0xDB65	0x83FC	# <CJK>
+0xDB66	0x83F6	# <CJK>
+0xDB67	0x8410	# <CJK>
+0xDB68	0x83C6	# <CJK>
+0xDB69	0x83C8	# <CJK>
+0xDB6A	0x83EB	# <CJK>
+0xDB6B	0x83E3	# <CJK>
+0xDB6C	0x83BF	# <CJK>
+0xDB6D	0x8401	# <CJK>
+0xDB6E	0x83DD	# <CJK>
+0xDB6F	0x83E5	# <CJK>
+0xDB70	0x83D8	# <CJK>
+0xDB71	0x83FF	# <CJK>
+0xDB72	0x83E1	# <CJK>
+0xDB73	0x83CB	# <CJK>
+0xDB74	0x83CE	# <CJK>
+0xDB75	0x83D6	# <CJK>
+0xDB76	0x83F5	# <CJK>
+0xDB77	0x83C9	# <CJK>
+0xDB78	0x8409	# <CJK>
+0xDB79	0x840F	# <CJK>
+0xDB7A	0x83DE	# <CJK>
+0xDB7B	0x8411	# <CJK>
+0xDB7C	0x8406	# <CJK>
+0xDB7D	0x83C2	# <CJK>
+0xDB7E	0x83F3	# <CJK>
+0xDBA1	0x83D5	# <CJK>
+0xDBA2	0x83FA	# <CJK>
+0xDBA3	0x83C7	# <CJK>
+0xDBA4	0x83D1	# <CJK>
+0xDBA5	0x83EA	# <CJK>
+0xDBA6	0x8413	# <CJK>
+0xDBA7	0x83C3	# <CJK>
+0xDBA8	0x83EC	# <CJK>
+0xDBA9	0x83EE	# <CJK>
+0xDBAA	0x83C4	# <CJK>
+0xDBAB	0x83FB	# <CJK>
+0xDBAC	0x83D7	# <CJK>
+0xDBAD	0x83E2	# <CJK>
+0xDBAE	0x841B	# <CJK>
+0xDBAF	0x83DB	# <CJK>
+0xDBB0	0x83FE	# <CJK>
+0xDBB1	0x86D8	# <CJK>
+0xDBB2	0x86E2	# <CJK>
+0xDBB3	0x86E6	# <CJK>
+0xDBB4	0x86D3	# <CJK>
+0xDBB5	0x86E3	# <CJK>
+0xDBB6	0x86DA	# <CJK>
+0xDBB7	0x86EA	# <CJK>
+0xDBB8	0x86DD	# <CJK>
+0xDBB9	0x86EB	# <CJK>
+0xDBBA	0x86DC	# <CJK>
+0xDBBB	0x86EC	# <CJK>
+0xDBBC	0x86E9	# <CJK>
+0xDBBD	0x86D7	# <CJK>
+0xDBBE	0x86E8	# <CJK>
+0xDBBF	0x86D1	# <CJK>
+0xDBC0	0x8848	# <CJK>
+0xDBC1	0x8856	# <CJK>
+0xDBC2	0x8855	# <CJK>
+0xDBC3	0x88BA	# <CJK>
+0xDBC4	0x88D7	# <CJK>
+0xDBC5	0x88B9	# <CJK>
+0xDBC6	0x88B8	# <CJK>
+0xDBC7	0x88C0	# <CJK>
+0xDBC8	0x88BE	# <CJK>
+0xDBC9	0x88B6	# <CJK>
+0xDBCA	0x88BC	# <CJK>
+0xDBCB	0x88B7	# <CJK>
+0xDBCC	0x88BD	# <CJK>
+0xDBCD	0x88B2	# <CJK>
+0xDBCE	0x8901	# <CJK>
+0xDBCF	0x88C9	# <CJK>
+0xDBD0	0x8995	# <CJK>
+0xDBD1	0x8998	# <CJK>
+0xDBD2	0x8997	# <CJK>
+0xDBD3	0x89DD	# <CJK>
+0xDBD4	0x89DA	# <CJK>
+0xDBD5	0x89DB	# <CJK>
+0xDBD6	0x8A4E	# <CJK>
+0xDBD7	0x8A4D	# <CJK>
+0xDBD8	0x8A39	# <CJK>
+0xDBD9	0x8A59	# <CJK>
+0xDBDA	0x8A40	# <CJK>
+0xDBDB	0x8A57	# <CJK>
+0xDBDC	0x8A58	# <CJK>
+0xDBDD	0x8A44	# <CJK>
+0xDBDE	0x8A45	# <CJK>
+0xDBDF	0x8A52	# <CJK>
+0xDBE0	0x8A48	# <CJK>
+0xDBE1	0x8A51	# <CJK>
+0xDBE2	0x8A4A	# <CJK>
+0xDBE3	0x8A4C	# <CJK>
+0xDBE4	0x8A4F	# <CJK>
+0xDBE5	0x8C5F	# <CJK>
+0xDBE6	0x8C81	# <CJK>
+0xDBE7	0x8C80	# <CJK>
+0xDBE8	0x8CBA	# <CJK>
+0xDBE9	0x8CBE	# <CJK>
+0xDBEA	0x8CB0	# <CJK>
+0xDBEB	0x8CB9	# <CJK>
+0xDBEC	0x8CB5	# <CJK>
+0xDBED	0x8D84	# <CJK>
+0xDBEE	0x8D80	# <CJK>
+0xDBEF	0x8D89	# <CJK>
+0xDBF0	0x8DD8	# <CJK>
+0xDBF1	0x8DD3	# <CJK>
+0xDBF2	0x8DCD	# <CJK>
+0xDBF3	0x8DC7	# <CJK>
+0xDBF4	0x8DD6	# <CJK>
+0xDBF5	0x8DDC	# <CJK>
+0xDBF6	0x8DCF	# <CJK>
+0xDBF7	0x8DD5	# <CJK>
+0xDBF8	0x8DD9	# <CJK>
+0xDBF9	0x8DC8	# <CJK>
+0xDBFA	0x8DD7	# <CJK>
+0xDBFB	0x8DC5	# <CJK>
+0xDBFC	0x8EEF	# <CJK>
+0xDBFD	0x8EF7	# <CJK>
+0xDBFE	0x8EFA	# <CJK>
+0xDC40	0x8EF9	# <CJK>
+0xDC41	0x8EE6	# <CJK>
+0xDC42	0x8EEE	# <CJK>
+0xDC43	0x8EE5	# <CJK>
+0xDC44	0x8EF5	# <CJK>
+0xDC45	0x8EE7	# <CJK>
+0xDC46	0x8EE8	# <CJK>
+0xDC47	0x8EF6	# <CJK>
+0xDC48	0x8EEB	# <CJK>
+0xDC49	0x8EF1	# <CJK>
+0xDC4A	0x8EEC	# <CJK>
+0xDC4B	0x8EF4	# <CJK>
+0xDC4C	0x8EE9	# <CJK>
+0xDC4D	0x902D	# <CJK>
+0xDC4E	0x9034	# <CJK>
+0xDC4F	0x902F	# <CJK>
+0xDC50	0x9106	# <CJK>
+0xDC51	0x912C	# <CJK>
+0xDC52	0x9104	# <CJK>
+0xDC53	0x90FF	# <CJK>
+0xDC54	0x90FC	# <CJK>
+0xDC55	0x9108	# <CJK>
+0xDC56	0x90F9	# <CJK>
+0xDC57	0x90FB	# <CJK>
+0xDC58	0x9101	# <CJK>
+0xDC59	0x9100	# <CJK>
+0xDC5A	0x9107	# <CJK>
+0xDC5B	0x9105	# <CJK>
+0xDC5C	0x9103	# <CJK>
+0xDC5D	0x9161	# <CJK>
+0xDC5E	0x9164	# <CJK>
+0xDC5F	0x915F	# <CJK>
+0xDC60	0x9162	# <CJK>
+0xDC61	0x9160	# <CJK>
+0xDC62	0x9201	# <CJK>
+0xDC63	0x920A	# <CJK>
+0xDC64	0x9225	# <CJK>
+0xDC65	0x9203	# <CJK>
+0xDC66	0x921A	# <CJK>
+0xDC67	0x9226	# <CJK>
+0xDC68	0x920F	# <CJK>
+0xDC69	0x920C	# <CJK>
+0xDC6A	0x9200	# <CJK>
+0xDC6B	0x9212	# <CJK>
+0xDC6C	0x91FF	# <CJK>
+0xDC6D	0x91FD	# <CJK>
+0xDC6E	0x9206	# <CJK>
+0xDC6F	0x9204	# <CJK>
+0xDC70	0x9227	# <CJK>
+0xDC71	0x9202	# <CJK>
+0xDC72	0x921C	# <CJK>
+0xDC73	0x9224	# <CJK>
+0xDC74	0x9219	# <CJK>
+0xDC75	0x9217	# <CJK>
+0xDC76	0x9205	# <CJK>
+0xDC77	0x9216	# <CJK>
+0xDC78	0x957B	# <CJK>
+0xDC79	0x958D	# <CJK>
+0xDC7A	0x958C	# <CJK>
+0xDC7B	0x9590	# <CJK>
+0xDC7C	0x9687	# <CJK>
+0xDC7D	0x967E	# <CJK>
+0xDC7E	0x9688	# <CJK>
+0xDCA1	0x9689	# <CJK>
+0xDCA2	0x9683	# <CJK>
+0xDCA3	0x9680	# <CJK>
+0xDCA4	0x96C2	# <CJK>
+0xDCA5	0x96C8	# <CJK>
+0xDCA6	0x96C3	# <CJK>
+0xDCA7	0x96F1	# <CJK>
+0xDCA8	0x96F0	# <CJK>
+0xDCA9	0x976C	# <CJK>
+0xDCAA	0x9770	# <CJK>
+0xDCAB	0x976E	# <CJK>
+0xDCAC	0x9807	# <CJK>
+0xDCAD	0x98A9	# <CJK>
+0xDCAE	0x98EB	# <CJK>
+0xDCAF	0x9CE6	# <CJK>
+0xDCB0	0x9EF9	# <CJK>
+0xDCB1	0x4E83	# <CJK>
+0xDCB2	0x4E84	# <CJK>
+0xDCB3	0x4EB6	# <CJK>
+0xDCB4	0x50BD	# <CJK>
+0xDCB5	0x50BF	# <CJK>
+0xDCB6	0x50C6	# <CJK>
+0xDCB7	0x50AE	# <CJK>
+0xDCB8	0x50C4	# <CJK>
+0xDCB9	0x50CA	# <CJK>
+0xDCBA	0x50B4	# <CJK>
+0xDCBB	0x50C8	# <CJK>
+0xDCBC	0x50C2	# <CJK>
+0xDCBD	0x50B0	# <CJK>
+0xDCBE	0x50C1	# <CJK>
+0xDCBF	0x50BA	# <CJK>
+0xDCC0	0x50B1	# <CJK>
+0xDCC1	0x50CB	# <CJK>
+0xDCC2	0x50C9	# <CJK>
+0xDCC3	0x50B6	# <CJK>
+0xDCC4	0x50B8	# <CJK>
+0xDCC5	0x51D7	# <CJK>
+0xDCC6	0x527A	# <CJK>
+0xDCC7	0x5278	# <CJK>
+0xDCC8	0x527B	# <CJK>
+0xDCC9	0x527C	# <CJK>
+0xDCCA	0x55C3	# <CJK>
+0xDCCB	0x55DB	# <CJK>
+0xDCCC	0x55CC	# <CJK>
+0xDCCD	0x55D0	# <CJK>
+0xDCCE	0x55CB	# <CJK>
+0xDCCF	0x55CA	# <CJK>
+0xDCD0	0x55DD	# <CJK>
+0xDCD1	0x55C0	# <CJK>
+0xDCD2	0x55D4	# <CJK>
+0xDCD3	0x55C4	# <CJK>
+0xDCD4	0x55E9	# <CJK>
+0xDCD5	0x55BF	# <CJK>
+0xDCD6	0x55D2	# <CJK>
+0xDCD7	0x558D	# <CJK>
+0xDCD8	0x55CF	# <CJK>
+0xDCD9	0x55D5	# <CJK>
+0xDCDA	0x55E2	# <CJK>
+0xDCDB	0x55D6	# <CJK>
+0xDCDC	0x55C8	# <CJK>
+0xDCDD	0x55F2	# <CJK>
+0xDCDE	0x55CD	# <CJK>
+0xDCDF	0x55D9	# <CJK>
+0xDCE0	0x55C2	# <CJK>
+0xDCE1	0x5714	# <CJK>
+0xDCE2	0x5853	# <CJK>
+0xDCE3	0x5868	# <CJK>
+0xDCE4	0x5864	# <CJK>
+0xDCE5	0x584F	# <CJK>
+0xDCE6	0x584D	# <CJK>
+0xDCE7	0x5849	# <CJK>
+0xDCE8	0x586F	# <CJK>
+0xDCE9	0x5855	# <CJK>
+0xDCEA	0x584E	# <CJK>
+0xDCEB	0x585D	# <CJK>
+0xDCEC	0x5859	# <CJK>
+0xDCED	0x5865	# <CJK>
+0xDCEE	0x585B	# <CJK>
+0xDCEF	0x583D	# <CJK>
+0xDCF0	0x5863	# <CJK>
+0xDCF1	0x5871	# <CJK>
+0xDCF2	0x58FC	# <CJK>
+0xDCF3	0x5AC7	# <CJK>
+0xDCF4	0x5AC4	# <CJK>
+0xDCF5	0x5ACB	# <CJK>
+0xDCF6	0x5ABA	# <CJK>
+0xDCF7	0x5AB8	# <CJK>
+0xDCF8	0x5AB1	# <CJK>
+0xDCF9	0x5AB5	# <CJK>
+0xDCFA	0x5AB0	# <CJK>
+0xDCFB	0x5ABF	# <CJK>
+0xDCFC	0x5AC8	# <CJK>
+0xDCFD	0x5ABB	# <CJK>
+0xDCFE	0x5AC6	# <CJK>
+0xDD40	0x5AB7	# <CJK>
+0xDD41	0x5AC0	# <CJK>
+0xDD42	0x5ACA	# <CJK>
+0xDD43	0x5AB4	# <CJK>
+0xDD44	0x5AB6	# <CJK>
+0xDD45	0x5ACD	# <CJK>
+0xDD46	0x5AB9	# <CJK>
+0xDD47	0x5A90	# <CJK>
+0xDD48	0x5BD6	# <CJK>
+0xDD49	0x5BD8	# <CJK>
+0xDD4A	0x5BD9	# <CJK>
+0xDD4B	0x5C1F	# <CJK>
+0xDD4C	0x5C33	# <CJK>
+0xDD4D	0x5D71	# <CJK>
+0xDD4E	0x5D63	# <CJK>
+0xDD4F	0x5D4A	# <CJK>
+0xDD50	0x5D65	# <CJK>
+0xDD51	0x5D72	# <CJK>
+0xDD52	0x5D6C	# <CJK>
+0xDD53	0x5D5E	# <CJK>
+0xDD54	0x5D68	# <CJK>
+0xDD55	0x5D67	# <CJK>
+0xDD56	0x5D62	# <CJK>
+0xDD57	0x5DF0	# <CJK>
+0xDD58	0x5E4F	# <CJK>
+0xDD59	0x5E4E	# <CJK>
+0xDD5A	0x5E4A	# <CJK>
+0xDD5B	0x5E4D	# <CJK>
+0xDD5C	0x5E4B	# <CJK>
+0xDD5D	0x5EC5	# <CJK>
+0xDD5E	0x5ECC	# <CJK>
+0xDD5F	0x5EC6	# <CJK>
+0xDD60	0x5ECB	# <CJK>
+0xDD61	0x5EC7	# <CJK>
+0xDD62	0x5F40	# <CJK>
+0xDD63	0x5FAF	# <CJK>
+0xDD64	0x5FAD	# <CJK>
+0xDD65	0x60F7	# <CJK>
+0xDD66	0x6149	# <CJK>
+0xDD67	0x614A	# <CJK>
+0xDD68	0x612B	# <CJK>
+0xDD69	0x6145	# <CJK>
+0xDD6A	0x6136	# <CJK>
+0xDD6B	0x6132	# <CJK>
+0xDD6C	0x612E	# <CJK>
+0xDD6D	0x6146	# <CJK>
+0xDD6E	0x612F	# <CJK>
+0xDD6F	0x614F	# <CJK>
+0xDD70	0x6129	# <CJK>
+0xDD71	0x6140	# <CJK>
+0xDD72	0x6220	# <CJK>
+0xDD73	0x9168	# <CJK>
+0xDD74	0x6223	# <CJK>
+0xDD75	0x6225	# <CJK>
+0xDD76	0x6224	# <CJK>
+0xDD77	0x63C5	# <CJK>
+0xDD78	0x63F1	# <CJK>
+0xDD79	0x63EB	# <CJK>
+0xDD7A	0x6410	# <CJK>
+0xDD7B	0x6412	# <CJK>
+0xDD7C	0x6409	# <CJK>
+0xDD7D	0x6420	# <CJK>
+0xDD7E	0x6424	# <CJK>
+0xDDA1	0x6433	# <CJK>
+0xDDA2	0x6443	# <CJK>
+0xDDA3	0x641F	# <CJK>
+0xDDA4	0x6415	# <CJK>
+0xDDA5	0x6418	# <CJK>
+0xDDA6	0x6439	# <CJK>
+0xDDA7	0x6437	# <CJK>
+0xDDA8	0x6422	# <CJK>
+0xDDA9	0x6423	# <CJK>
+0xDDAA	0x640C	# <CJK>
+0xDDAB	0x6426	# <CJK>
+0xDDAC	0x6430	# <CJK>
+0xDDAD	0x6428	# <CJK>
+0xDDAE	0x6441	# <CJK>
+0xDDAF	0x6435	# <CJK>
+0xDDB0	0x642F	# <CJK>
+0xDDB1	0x640A	# <CJK>
+0xDDB2	0x641A	# <CJK>
+0xDDB3	0x6440	# <CJK>
+0xDDB4	0x6425	# <CJK>
+0xDDB5	0x6427	# <CJK>
+0xDDB6	0x640B	# <CJK>
+0xDDB7	0x63E7	# <CJK>
+0xDDB8	0x641B	# <CJK>
+0xDDB9	0x642E	# <CJK>
+0xDDBA	0x6421	# <CJK>
+0xDDBB	0x640E	# <CJK>
+0xDDBC	0x656F	# <CJK>
+0xDDBD	0x6592	# <CJK>
+0xDDBE	0x65D3	# <CJK>
+0xDDBF	0x6686	# <CJK>
+0xDDC0	0x668C	# <CJK>
+0xDDC1	0x6695	# <CJK>
+0xDDC2	0x6690	# <CJK>
+0xDDC3	0x668B	# <CJK>
+0xDDC4	0x668A	# <CJK>
+0xDDC5	0x6699	# <CJK>
+0xDDC6	0x6694	# <CJK>
+0xDDC7	0x6678	# <CJK>
+0xDDC8	0x6720	# <CJK>
+0xDDC9	0x6966	# <CJK>
+0xDDCA	0x695F	# <CJK>
+0xDDCB	0x6938	# <CJK>
+0xDDCC	0x694E	# <CJK>
+0xDDCD	0x6962	# <CJK>
+0xDDCE	0x6971	# <CJK>
+0xDDCF	0x693F	# <CJK>
+0xDDD0	0x6945	# <CJK>
+0xDDD1	0x696A	# <CJK>
+0xDDD2	0x6939	# <CJK>
+0xDDD3	0x6942	# <CJK>
+0xDDD4	0x6957	# <CJK>
+0xDDD5	0x6959	# <CJK>
+0xDDD6	0x697A	# <CJK>
+0xDDD7	0x6948	# <CJK>
+0xDDD8	0x6949	# <CJK>
+0xDDD9	0x6935	# <CJK>
+0xDDDA	0x696C	# <CJK>
+0xDDDB	0x6933	# <CJK>
+0xDDDC	0x693D	# <CJK>
+0xDDDD	0x6965	# <CJK>
+0xDDDE	0x68F0	# <CJK>
+0xDDDF	0x6978	# <CJK>
+0xDDE0	0x6934	# <CJK>
+0xDDE1	0x6969	# <CJK>
+0xDDE2	0x6940	# <CJK>
+0xDDE3	0x696F	# <CJK>
+0xDDE4	0x6944	# <CJK>
+0xDDE5	0x6976	# <CJK>
+0xDDE6	0x6958	# <CJK>
+0xDDE7	0x6941	# <CJK>
+0xDDE8	0x6974	# <CJK>
+0xDDE9	0x694C	# <CJK>
+0xDDEA	0x693B	# <CJK>
+0xDDEB	0x694B	# <CJK>
+0xDDEC	0x6937	# <CJK>
+0xDDED	0x695C	# <CJK>
+0xDDEE	0x694F	# <CJK>
+0xDDEF	0x6951	# <CJK>
+0xDDF0	0x6932	# <CJK>
+0xDDF1	0x6952	# <CJK>
+0xDDF2	0x692F	# <CJK>
+0xDDF3	0x697B	# <CJK>
+0xDDF4	0x693C	# <CJK>
+0xDDF5	0x6B46	# <CJK>
+0xDDF6	0x6B45	# <CJK>
+0xDDF7	0x6B43	# <CJK>
+0xDDF8	0x6B42	# <CJK>
+0xDDF9	0x6B48	# <CJK>
+0xDDFA	0x6B41	# <CJK>
+0xDDFB	0x6B9B	# <CJK>
+0xDDFC	0xFA0D	# CJK COMPATIBILITY IDEOGRAPH-FA0D
+0xDDFD	0x6BFB	# <CJK>
+0xDDFE	0x6BFC	# <CJK>
+0xDE40	0x6BF9	# <CJK>
+0xDE41	0x6BF7	# <CJK>
+0xDE42	0x6BF8	# <CJK>
+0xDE43	0x6E9B	# <CJK>
+0xDE44	0x6ED6	# <CJK>
+0xDE45	0x6EC8	# <CJK>
+0xDE46	0x6E8F	# <CJK>
+0xDE47	0x6EC0	# <CJK>
+0xDE48	0x6E9F	# <CJK>
+0xDE49	0x6E93	# <CJK>
+0xDE4A	0x6E94	# <CJK>
+0xDE4B	0x6EA0	# <CJK>
+0xDE4C	0x6EB1	# <CJK>
+0xDE4D	0x6EB9	# <CJK>
+0xDE4E	0x6EC6	# <CJK>
+0xDE4F	0x6ED2	# <CJK>
+0xDE50	0x6EBD	# <CJK>
+0xDE51	0x6EC1	# <CJK>
+0xDE52	0x6E9E	# <CJK>
+0xDE53	0x6EC9	# <CJK>
+0xDE54	0x6EB7	# <CJK>
+0xDE55	0x6EB0	# <CJK>
+0xDE56	0x6ECD	# <CJK>
+0xDE57	0x6EA6	# <CJK>
+0xDE58	0x6ECF	# <CJK>
+0xDE59	0x6EB2	# <CJK>
+0xDE5A	0x6EBE	# <CJK>
+0xDE5B	0x6EC3	# <CJK>
+0xDE5C	0x6EDC	# <CJK>
+0xDE5D	0x6ED8	# <CJK>
+0xDE5E	0x6E99	# <CJK>
+0xDE5F	0x6E92	# <CJK>
+0xDE60	0x6E8E	# <CJK>
+0xDE61	0x6E8D	# <CJK>
+0xDE62	0x6EA4	# <CJK>
+0xDE63	0x6EA1	# <CJK>
+0xDE64	0x6EBF	# <CJK>
+0xDE65	0x6EB3	# <CJK>
+0xDE66	0x6ED0	# <CJK>
+0xDE67	0x6ECA	# <CJK>
+0xDE68	0x6E97	# <CJK>
+0xDE69	0x6EAE	# <CJK>
+0xDE6A	0x6EA3	# <CJK>
+0xDE6B	0x7147	# <CJK>
+0xDE6C	0x7154	# <CJK>
+0xDE6D	0x7152	# <CJK>
+0xDE6E	0x7163	# <CJK>
+0xDE6F	0x7160	# <CJK>
+0xDE70	0x7141	# <CJK>
+0xDE71	0x715D	# <CJK>
+0xDE72	0x7162	# <CJK>
+0xDE73	0x7172	# <CJK>
+0xDE74	0x7178	# <CJK>
+0xDE75	0x716A	# <CJK>
+0xDE76	0x7161	# <CJK>
+0xDE77	0x7142	# <CJK>
+0xDE78	0x7158	# <CJK>
+0xDE79	0x7143	# <CJK>
+0xDE7A	0x714B	# <CJK>
+0xDE7B	0x7170	# <CJK>
+0xDE7C	0x715F	# <CJK>
+0xDE7D	0x7150	# <CJK>
+0xDE7E	0x7153	# <CJK>
+0xDEA1	0x7144	# <CJK>
+0xDEA2	0x714D	# <CJK>
+0xDEA3	0x715A	# <CJK>
+0xDEA4	0x724F	# <CJK>
+0xDEA5	0x728D	# <CJK>
+0xDEA6	0x728C	# <CJK>
+0xDEA7	0x7291	# <CJK>
+0xDEA8	0x7290	# <CJK>
+0xDEA9	0x728E	# <CJK>
+0xDEAA	0x733C	# <CJK>
+0xDEAB	0x7342	# <CJK>
+0xDEAC	0x733B	# <CJK>
+0xDEAD	0x733A	# <CJK>
+0xDEAE	0x7340	# <CJK>
+0xDEAF	0x734A	# <CJK>
+0xDEB0	0x7349	# <CJK>
+0xDEB1	0x7444	# <CJK>
+0xDEB2	0x744A	# <CJK>
+0xDEB3	0x744B	# <CJK>
+0xDEB4	0x7452	# <CJK>
+0xDEB5	0x7451	# <CJK>
+0xDEB6	0x7457	# <CJK>
+0xDEB7	0x7440	# <CJK>
+0xDEB8	0x744F	# <CJK>
+0xDEB9	0x7450	# <CJK>
+0xDEBA	0x744E	# <CJK>
+0xDEBB	0x7442	# <CJK>
+0xDEBC	0x7446	# <CJK>
+0xDEBD	0x744D	# <CJK>
+0xDEBE	0x7454	# <CJK>
+0xDEBF	0x74E1	# <CJK>
+0xDEC0	0x74FF	# <CJK>
+0xDEC1	0x74FE	# <CJK>
+0xDEC2	0x74FD	# <CJK>
+0xDEC3	0x751D	# <CJK>
+0xDEC4	0x7579	# <CJK>
+0xDEC5	0x7577	# <CJK>
+0xDEC6	0x6983	# <CJK>
+0xDEC7	0x75EF	# <CJK>
+0xDEC8	0x760F	# <CJK>
+0xDEC9	0x7603	# <CJK>
+0xDECA	0x75F7	# <CJK>
+0xDECB	0x75FE	# <CJK>
+0xDECC	0x75FC	# <CJK>
+0xDECD	0x75F9	# <CJK>
+0xDECE	0x75F8	# <CJK>
+0xDECF	0x7610	# <CJK>
+0xDED0	0x75FB	# <CJK>
+0xDED1	0x75F6	# <CJK>
+0xDED2	0x75ED	# <CJK>
+0xDED3	0x75F5	# <CJK>
+0xDED4	0x75FD	# <CJK>
+0xDED5	0x7699	# <CJK>
+0xDED6	0x76B5	# <CJK>
+0xDED7	0x76DD	# <CJK>
+0xDED8	0x7755	# <CJK>
+0xDED9	0x775F	# <CJK>
+0xDEDA	0x7760	# <CJK>
+0xDEDB	0x7752	# <CJK>
+0xDEDC	0x7756	# <CJK>
+0xDEDD	0x775A	# <CJK>
+0xDEDE	0x7769	# <CJK>
+0xDEDF	0x7767	# <CJK>
+0xDEE0	0x7754	# <CJK>
+0xDEE1	0x7759	# <CJK>
+0xDEE2	0x776D	# <CJK>
+0xDEE3	0x77E0	# <CJK>
+0xDEE4	0x7887	# <CJK>
+0xDEE5	0x789A	# <CJK>
+0xDEE6	0x7894	# <CJK>
+0xDEE7	0x788F	# <CJK>
+0xDEE8	0x7884	# <CJK>
+0xDEE9	0x7895	# <CJK>
+0xDEEA	0x7885	# <CJK>
+0xDEEB	0x7886	# <CJK>
+0xDEEC	0x78A1	# <CJK>
+0xDEED	0x7883	# <CJK>
+0xDEEE	0x7879	# <CJK>
+0xDEEF	0x7899	# <CJK>
+0xDEF0	0x7880	# <CJK>
+0xDEF1	0x7896	# <CJK>
+0xDEF2	0x787B	# <CJK>
+0xDEF3	0x797C	# <CJK>
+0xDEF4	0x7982	# <CJK>
+0xDEF5	0x797D	# <CJK>
+0xDEF6	0x7979	# <CJK>
+0xDEF7	0x7A11	# <CJK>
+0xDEF8	0x7A18	# <CJK>
+0xDEF9	0x7A19	# <CJK>
+0xDEFA	0x7A12	# <CJK>
+0xDEFB	0x7A17	# <CJK>
+0xDEFC	0x7A15	# <CJK>
+0xDEFD	0x7A22	# <CJK>
+0xDEFE	0x7A13	# <CJK>
+0xDF40	0x7A1B	# <CJK>
+0xDF41	0x7A10	# <CJK>
+0xDF42	0x7AA3	# <CJK>
+0xDF43	0x7AA2	# <CJK>
+0xDF44	0x7A9E	# <CJK>
+0xDF45	0x7AEB	# <CJK>
+0xDF46	0x7B66	# <CJK>
+0xDF47	0x7B64	# <CJK>
+0xDF48	0x7B6D	# <CJK>
+0xDF49	0x7B74	# <CJK>
+0xDF4A	0x7B69	# <CJK>
+0xDF4B	0x7B72	# <CJK>
+0xDF4C	0x7B65	# <CJK>
+0xDF4D	0x7B73	# <CJK>
+0xDF4E	0x7B71	# <CJK>
+0xDF4F	0x7B70	# <CJK>
+0xDF50	0x7B61	# <CJK>
+0xDF51	0x7B78	# <CJK>
+0xDF52	0x7B76	# <CJK>
+0xDF53	0x7B63	# <CJK>
+0xDF54	0x7CB2	# <CJK>
+0xDF55	0x7CB4	# <CJK>
+0xDF56	0x7CAF	# <CJK>
+0xDF57	0x7D88	# <CJK>
+0xDF58	0x7D86	# <CJK>
+0xDF59	0x7D80	# <CJK>
+0xDF5A	0x7D8D	# <CJK>
+0xDF5B	0x7D7F	# <CJK>
+0xDF5C	0x7D85	# <CJK>
+0xDF5D	0x7D7A	# <CJK>
+0xDF5E	0x7D8E	# <CJK>
+0xDF5F	0x7D7B	# <CJK>
+0xDF60	0x7D83	# <CJK>
+0xDF61	0x7D7C	# <CJK>
+0xDF62	0x7D8C	# <CJK>
+0xDF63	0x7D94	# <CJK>
+0xDF64	0x7D84	# <CJK>
+0xDF65	0x7D7D	# <CJK>
+0xDF66	0x7D92	# <CJK>
+0xDF67	0x7F6D	# <CJK>
+0xDF68	0x7F6B	# <CJK>
+0xDF69	0x7F67	# <CJK>
+0xDF6A	0x7F68	# <CJK>
+0xDF6B	0x7F6C	# <CJK>
+0xDF6C	0x7FA6	# <CJK>
+0xDF6D	0x7FA5	# <CJK>
+0xDF6E	0x7FA7	# <CJK>
+0xDF6F	0x7FDB	# <CJK>
+0xDF70	0x7FDC	# <CJK>
+0xDF71	0x8021	# <CJK>
+0xDF72	0x8164	# <CJK>
+0xDF73	0x8160	# <CJK>
+0xDF74	0x8177	# <CJK>
+0xDF75	0x815C	# <CJK>
+0xDF76	0x8169	# <CJK>
+0xDF77	0x815B	# <CJK>
+0xDF78	0x8162	# <CJK>
+0xDF79	0x8172	# <CJK>
+0xDF7A	0x6721	# <CJK>
+0xDF7B	0x815E	# <CJK>
+0xDF7C	0x8176	# <CJK>
+0xDF7D	0x8167	# <CJK>
+0xDF7E	0x816F	# <CJK>
+0xDFA1	0x8144	# <CJK>
+0xDFA2	0x8161	# <CJK>
+0xDFA3	0x821D	# <CJK>
+0xDFA4	0x8249	# <CJK>
+0xDFA5	0x8244	# <CJK>
+0xDFA6	0x8240	# <CJK>
+0xDFA7	0x8242	# <CJK>
+0xDFA8	0x8245	# <CJK>
+0xDFA9	0x84F1	# <CJK>
+0xDFAA	0x843F	# <CJK>
+0xDFAB	0x8456	# <CJK>
+0xDFAC	0x8476	# <CJK>
+0xDFAD	0x8479	# <CJK>
+0xDFAE	0x848F	# <CJK>
+0xDFAF	0x848D	# <CJK>
+0xDFB0	0x8465	# <CJK>
+0xDFB1	0x8451	# <CJK>
+0xDFB2	0x8440	# <CJK>
+0xDFB3	0x8486	# <CJK>
+0xDFB4	0x8467	# <CJK>
+0xDFB5	0x8430	# <CJK>
+0xDFB6	0x844D	# <CJK>
+0xDFB7	0x847D	# <CJK>
+0xDFB8	0x845A	# <CJK>
+0xDFB9	0x8459	# <CJK>
+0xDFBA	0x8474	# <CJK>
+0xDFBB	0x8473	# <CJK>
+0xDFBC	0x845D	# <CJK>
+0xDFBD	0x8507	# <CJK>
+0xDFBE	0x845E	# <CJK>
+0xDFBF	0x8437	# <CJK>
+0xDFC0	0x843A	# <CJK>
+0xDFC1	0x8434	# <CJK>
+0xDFC2	0x847A	# <CJK>
+0xDFC3	0x8443	# <CJK>
+0xDFC4	0x8478	# <CJK>
+0xDFC5	0x8432	# <CJK>
+0xDFC6	0x8445	# <CJK>
+0xDFC7	0x8429	# <CJK>
+0xDFC8	0x83D9	# <CJK>
+0xDFC9	0x844B	# <CJK>
+0xDFCA	0x842F	# <CJK>
+0xDFCB	0x8442	# <CJK>
+0xDFCC	0x842D	# <CJK>
+0xDFCD	0x845F	# <CJK>
+0xDFCE	0x8470	# <CJK>
+0xDFCF	0x8439	# <CJK>
+0xDFD0	0x844E	# <CJK>
+0xDFD1	0x844C	# <CJK>
+0xDFD2	0x8452	# <CJK>
+0xDFD3	0x846F	# <CJK>
+0xDFD4	0x84C5	# <CJK>
+0xDFD5	0x848E	# <CJK>
+0xDFD6	0x843B	# <CJK>
+0xDFD7	0x8447	# <CJK>
+0xDFD8	0x8436	# <CJK>
+0xDFD9	0x8433	# <CJK>
+0xDFDA	0x8468	# <CJK>
+0xDFDB	0x847E	# <CJK>
+0xDFDC	0x8444	# <CJK>
+0xDFDD	0x842B	# <CJK>
+0xDFDE	0x8460	# <CJK>
+0xDFDF	0x8454	# <CJK>
+0xDFE0	0x846E	# <CJK>
+0xDFE1	0x8450	# <CJK>
+0xDFE2	0x870B	# <CJK>
+0xDFE3	0x8704	# <CJK>
+0xDFE4	0x86F7	# <CJK>
+0xDFE5	0x870C	# <CJK>
+0xDFE6	0x86FA	# <CJK>
+0xDFE7	0x86D6	# <CJK>
+0xDFE8	0x86F5	# <CJK>
+0xDFE9	0x874D	# <CJK>
+0xDFEA	0x86F8	# <CJK>
+0xDFEB	0x870E	# <CJK>
+0xDFEC	0x8709	# <CJK>
+0xDFED	0x8701	# <CJK>
+0xDFEE	0x86F6	# <CJK>
+0xDFEF	0x870D	# <CJK>
+0xDFF0	0x8705	# <CJK>
+0xDFF1	0x88D6	# <CJK>
+0xDFF2	0x88CB	# <CJK>
+0xDFF3	0x88CD	# <CJK>
+0xDFF4	0x88CE	# <CJK>
+0xDFF5	0x88DE	# <CJK>
+0xDFF6	0x88DB	# <CJK>
+0xDFF7	0x88DA	# <CJK>
+0xDFF8	0x88CC	# <CJK>
+0xDFF9	0x88D0	# <CJK>
+0xDFFA	0x8985	# <CJK>
+0xDFFB	0x899B	# <CJK>
+0xDFFC	0x89DF	# <CJK>
+0xDFFD	0x89E5	# <CJK>
+0xDFFE	0x89E4	# <CJK>
+0xE040	0x89E1	# <CJK>
+0xE041	0x89E0	# <CJK>
+0xE042	0x89E2	# <CJK>
+0xE043	0x89DC	# <CJK>
+0xE044	0x89E6	# <CJK>
+0xE045	0x8A76	# <CJK>
+0xE046	0x8A86	# <CJK>
+0xE047	0x8A7F	# <CJK>
+0xE048	0x8A61	# <CJK>
+0xE049	0x8A3F	# <CJK>
+0xE04A	0x8A77	# <CJK>
+0xE04B	0x8A82	# <CJK>
+0xE04C	0x8A84	# <CJK>
+0xE04D	0x8A75	# <CJK>
+0xE04E	0x8A83	# <CJK>
+0xE04F	0x8A81	# <CJK>
+0xE050	0x8A74	# <CJK>
+0xE051	0x8A7A	# <CJK>
+0xE052	0x8C3C	# <CJK>
+0xE053	0x8C4B	# <CJK>
+0xE054	0x8C4A	# <CJK>
+0xE055	0x8C65	# <CJK>
+0xE056	0x8C64	# <CJK>
+0xE057	0x8C66	# <CJK>
+0xE058	0x8C86	# <CJK>
+0xE059	0x8C84	# <CJK>
+0xE05A	0x8C85	# <CJK>
+0xE05B	0x8CCC	# <CJK>
+0xE05C	0x8D68	# <CJK>
+0xE05D	0x8D69	# <CJK>
+0xE05E	0x8D91	# <CJK>
+0xE05F	0x8D8C	# <CJK>
+0xE060	0x8D8E	# <CJK>
+0xE061	0x8D8F	# <CJK>
+0xE062	0x8D8D	# <CJK>
+0xE063	0x8D93	# <CJK>
+0xE064	0x8D94	# <CJK>
+0xE065	0x8D90	# <CJK>
+0xE066	0x8D92	# <CJK>
+0xE067	0x8DF0	# <CJK>
+0xE068	0x8DE0	# <CJK>
+0xE069	0x8DEC	# <CJK>
+0xE06A	0x8DF1	# <CJK>
+0xE06B	0x8DEE	# <CJK>
+0xE06C	0x8DD0	# <CJK>
+0xE06D	0x8DE9	# <CJK>
+0xE06E	0x8DE3	# <CJK>
+0xE06F	0x8DE2	# <CJK>
+0xE070	0x8DE7	# <CJK>
+0xE071	0x8DF2	# <CJK>
+0xE072	0x8DEB	# <CJK>
+0xE073	0x8DF4	# <CJK>
+0xE074	0x8F06	# <CJK>
+0xE075	0x8EFF	# <CJK>
+0xE076	0x8F01	# <CJK>
+0xE077	0x8F00	# <CJK>
+0xE078	0x8F05	# <CJK>
+0xE079	0x8F07	# <CJK>
+0xE07A	0x8F08	# <CJK>
+0xE07B	0x8F02	# <CJK>
+0xE07C	0x8F0B	# <CJK>
+0xE07D	0x9052	# <CJK>
+0xE07E	0x903F	# <CJK>
+0xE0A1	0x9044	# <CJK>
+0xE0A2	0x9049	# <CJK>
+0xE0A3	0x903D	# <CJK>
+0xE0A4	0x9110	# <CJK>
+0xE0A5	0x910D	# <CJK>
+0xE0A6	0x910F	# <CJK>
+0xE0A7	0x9111	# <CJK>
+0xE0A8	0x9116	# <CJK>
+0xE0A9	0x9114	# <CJK>
+0xE0AA	0x910B	# <CJK>
+0xE0AB	0x910E	# <CJK>
+0xE0AC	0x916E	# <CJK>
+0xE0AD	0x916F	# <CJK>
+0xE0AE	0x9248	# <CJK>
+0xE0AF	0x9252	# <CJK>
+0xE0B0	0x9230	# <CJK>
+0xE0B1	0x923A	# <CJK>
+0xE0B2	0x9266	# <CJK>
+0xE0B3	0x9233	# <CJK>
+0xE0B4	0x9265	# <CJK>
+0xE0B5	0x925E	# <CJK>
+0xE0B6	0x9283	# <CJK>
+0xE0B7	0x922E	# <CJK>
+0xE0B8	0x924A	# <CJK>
+0xE0B9	0x9246	# <CJK>
+0xE0BA	0x926D	# <CJK>
+0xE0BB	0x926C	# <CJK>
+0xE0BC	0x924F	# <CJK>
+0xE0BD	0x9260	# <CJK>
+0xE0BE	0x9267	# <CJK>
+0xE0BF	0x926F	# <CJK>
+0xE0C0	0x9236	# <CJK>
+0xE0C1	0x9261	# <CJK>
+0xE0C2	0x9270	# <CJK>
+0xE0C3	0x9231	# <CJK>
+0xE0C4	0x9254	# <CJK>
+0xE0C5	0x9263	# <CJK>
+0xE0C6	0x9250	# <CJK>
+0xE0C7	0x9272	# <CJK>
+0xE0C8	0x924E	# <CJK>
+0xE0C9	0x9253	# <CJK>
+0xE0CA	0x924C	# <CJK>
+0xE0CB	0x9256	# <CJK>
+0xE0CC	0x9232	# <CJK>
+0xE0CD	0x959F	# <CJK>
+0xE0CE	0x959C	# <CJK>
+0xE0CF	0x959E	# <CJK>
+0xE0D0	0x959B	# <CJK>
+0xE0D1	0x9692	# <CJK>
+0xE0D2	0x9693	# <CJK>
+0xE0D3	0x9691	# <CJK>
+0xE0D4	0x9697	# <CJK>
+0xE0D5	0x96CE	# <CJK>
+0xE0D6	0x96FA	# <CJK>
+0xE0D7	0x96FD	# <CJK>
+0xE0D8	0x96F8	# <CJK>
+0xE0D9	0x96F5	# <CJK>
+0xE0DA	0x9773	# <CJK>
+0xE0DB	0x9777	# <CJK>
+0xE0DC	0x9778	# <CJK>
+0xE0DD	0x9772	# <CJK>
+0xE0DE	0x980F	# <CJK>
+0xE0DF	0x980D	# <CJK>
+0xE0E0	0x980E	# <CJK>
+0xE0E1	0x98AC	# <CJK>
+0xE0E2	0x98F6	# <CJK>
+0xE0E3	0x98F9	# <CJK>
+0xE0E4	0x99AF	# <CJK>
+0xE0E5	0x99B2	# <CJK>
+0xE0E6	0x99B0	# <CJK>
+0xE0E7	0x99B5	# <CJK>
+0xE0E8	0x9AAD	# <CJK>
+0xE0E9	0x9AAB	# <CJK>
+0xE0EA	0x9B5B	# <CJK>
+0xE0EB	0x9CEA	# <CJK>
+0xE0EC	0x9CED	# <CJK>
+0xE0ED	0x9CE7	# <CJK>
+0xE0EE	0x9E80	# <CJK>
+0xE0EF	0x9EFD	# <CJK>
+0xE0F0	0x50E6	# <CJK>
+0xE0F1	0x50D4	# <CJK>
+0xE0F2	0x50D7	# <CJK>
+0xE0F3	0x50E8	# <CJK>
+0xE0F4	0x50F3	# <CJK>
+0xE0F5	0x50DB	# <CJK>
+0xE0F6	0x50EA	# <CJK>
+0xE0F7	0x50DD	# <CJK>
+0xE0F8	0x50E4	# <CJK>
+0xE0F9	0x50D3	# <CJK>
+0xE0FA	0x50EC	# <CJK>
+0xE0FB	0x50F0	# <CJK>
+0xE0FC	0x50EF	# <CJK>
+0xE0FD	0x50E3	# <CJK>
+0xE0FE	0x50E0	# <CJK>
+0xE140	0x51D8	# <CJK>
+0xE141	0x5280	# <CJK>
+0xE142	0x5281	# <CJK>
+0xE143	0x52E9	# <CJK>
+0xE144	0x52EB	# <CJK>
+0xE145	0x5330	# <CJK>
+0xE146	0x53AC	# <CJK>
+0xE147	0x5627	# <CJK>
+0xE148	0x5615	# <CJK>
+0xE149	0x560C	# <CJK>
+0xE14A	0x5612	# <CJK>
+0xE14B	0x55FC	# <CJK>
+0xE14C	0x560F	# <CJK>
+0xE14D	0x561C	# <CJK>
+0xE14E	0x5601	# <CJK>
+0xE14F	0x5613	# <CJK>
+0xE150	0x5602	# <CJK>
+0xE151	0x55FA	# <CJK>
+0xE152	0x561D	# <CJK>
+0xE153	0x5604	# <CJK>
+0xE154	0x55FF	# <CJK>
+0xE155	0x55F9	# <CJK>
+0xE156	0x5889	# <CJK>
+0xE157	0x587C	# <CJK>
+0xE158	0x5890	# <CJK>
+0xE159	0x5898	# <CJK>
+0xE15A	0x5886	# <CJK>
+0xE15B	0x5881	# <CJK>
+0xE15C	0x587F	# <CJK>
+0xE15D	0x5874	# <CJK>
+0xE15E	0x588B	# <CJK>
+0xE15F	0x587A	# <CJK>
+0xE160	0x5887	# <CJK>
+0xE161	0x5891	# <CJK>
+0xE162	0x588E	# <CJK>
+0xE163	0x5876	# <CJK>
+0xE164	0x5882	# <CJK>
+0xE165	0x5888	# <CJK>
+0xE166	0x587B	# <CJK>
+0xE167	0x5894	# <CJK>
+0xE168	0x588F	# <CJK>
+0xE169	0x58FE	# <CJK>
+0xE16A	0x596B	# <CJK>
+0xE16B	0x5ADC	# <CJK>
+0xE16C	0x5AEE	# <CJK>
+0xE16D	0x5AE5	# <CJK>
+0xE16E	0x5AD5	# <CJK>
+0xE16F	0x5AEA	# <CJK>
+0xE170	0x5ADA	# <CJK>
+0xE171	0x5AED	# <CJK>
+0xE172	0x5AEB	# <CJK>
+0xE173	0x5AF3	# <CJK>
+0xE174	0x5AE2	# <CJK>
+0xE175	0x5AE0	# <CJK>
+0xE176	0x5ADB	# <CJK>
+0xE177	0x5AEC	# <CJK>
+0xE178	0x5ADE	# <CJK>
+0xE179	0x5ADD	# <CJK>
+0xE17A	0x5AD9	# <CJK>
+0xE17B	0x5AE8	# <CJK>
+0xE17C	0x5ADF	# <CJK>
+0xE17D	0x5B77	# <CJK>
+0xE17E	0x5BE0	# <CJK>
+0xE1A1	0x5BE3	# <CJK>
+0xE1A2	0x5C63	# <CJK>
+0xE1A3	0x5D82	# <CJK>
+0xE1A4	0x5D80	# <CJK>
+0xE1A5	0x5D7D	# <CJK>
+0xE1A6	0x5D86	# <CJK>
+0xE1A7	0x5D7A	# <CJK>
+0xE1A8	0x5D81	# <CJK>
+0xE1A9	0x5D77	# <CJK>
+0xE1AA	0x5D8A	# <CJK>
+0xE1AB	0x5D89	# <CJK>
+0xE1AC	0x5D88	# <CJK>
+0xE1AD	0x5D7E	# <CJK>
+0xE1AE	0x5D7C	# <CJK>
+0xE1AF	0x5D8D	# <CJK>
+0xE1B0	0x5D79	# <CJK>
+0xE1B1	0x5D7F	# <CJK>
+0xE1B2	0x5E58	# <CJK>
+0xE1B3	0x5E59	# <CJK>
+0xE1B4	0x5E53	# <CJK>
+0xE1B5	0x5ED8	# <CJK>
+0xE1B6	0x5ED1	# <CJK>
+0xE1B7	0x5ED7	# <CJK>
+0xE1B8	0x5ECE	# <CJK>
+0xE1B9	0x5EDC	# <CJK>
+0xE1BA	0x5ED5	# <CJK>
+0xE1BB	0x5ED9	# <CJK>
+0xE1BC	0x5ED2	# <CJK>
+0xE1BD	0x5ED4	# <CJK>
+0xE1BE	0x5F44	# <CJK>
+0xE1BF	0x5F43	# <CJK>
+0xE1C0	0x5F6F	# <CJK>
+0xE1C1	0x5FB6	# <CJK>
+0xE1C2	0x612C	# <CJK>
+0xE1C3	0x6128	# <CJK>
+0xE1C4	0x6141	# <CJK>
+0xE1C5	0x615E	# <CJK>
+0xE1C6	0x6171	# <CJK>
+0xE1C7	0x6173	# <CJK>
+0xE1C8	0x6152	# <CJK>
+0xE1C9	0x6153	# <CJK>
+0xE1CA	0x6172	# <CJK>
+0xE1CB	0x616C	# <CJK>
+0xE1CC	0x6180	# <CJK>
+0xE1CD	0x6174	# <CJK>
+0xE1CE	0x6154	# <CJK>
+0xE1CF	0x617A	# <CJK>
+0xE1D0	0x615B	# <CJK>
+0xE1D1	0x6165	# <CJK>
+0xE1D2	0x613B	# <CJK>
+0xE1D3	0x616A	# <CJK>
+0xE1D4	0x6161	# <CJK>
+0xE1D5	0x6156	# <CJK>
+0xE1D6	0x6229	# <CJK>
+0xE1D7	0x6227	# <CJK>
+0xE1D8	0x622B	# <CJK>
+0xE1D9	0x642B	# <CJK>
+0xE1DA	0x644D	# <CJK>
+0xE1DB	0x645B	# <CJK>
+0xE1DC	0x645D	# <CJK>
+0xE1DD	0x6474	# <CJK>
+0xE1DE	0x6476	# <CJK>
+0xE1DF	0x6472	# <CJK>
+0xE1E0	0x6473	# <CJK>
+0xE1E1	0x647D	# <CJK>
+0xE1E2	0x6475	# <CJK>
+0xE1E3	0x6466	# <CJK>
+0xE1E4	0x64A6	# <CJK>
+0xE1E5	0x644E	# <CJK>
+0xE1E6	0x6482	# <CJK>
+0xE1E7	0x645E	# <CJK>
+0xE1E8	0x645C	# <CJK>
+0xE1E9	0x644B	# <CJK>
+0xE1EA	0x6453	# <CJK>
+0xE1EB	0x6460	# <CJK>
+0xE1EC	0x6450	# <CJK>
+0xE1ED	0x647F	# <CJK>
+0xE1EE	0x643F	# <CJK>
+0xE1EF	0x646C	# <CJK>
+0xE1F0	0x646B	# <CJK>
+0xE1F1	0x6459	# <CJK>
+0xE1F2	0x6465	# <CJK>
+0xE1F3	0x6477	# <CJK>
+0xE1F4	0x6573	# <CJK>
+0xE1F5	0x65A0	# <CJK>
+0xE1F6	0x66A1	# <CJK>
+0xE1F7	0x66A0	# <CJK>
+0xE1F8	0x669F	# <CJK>
+0xE1F9	0x6705	# <CJK>
+0xE1FA	0x6704	# <CJK>
+0xE1FB	0x6722	# <CJK>
+0xE1FC	0x69B1	# <CJK>
+0xE1FD	0x69B6	# <CJK>
+0xE1FE	0x69C9	# <CJK>
+0xE240	0x69A0	# <CJK>
+0xE241	0x69CE	# <CJK>
+0xE242	0x6996	# <CJK>
+0xE243	0x69B0	# <CJK>
+0xE244	0x69AC	# <CJK>
+0xE245	0x69BC	# <CJK>
+0xE246	0x6991	# <CJK>
+0xE247	0x6999	# <CJK>
+0xE248	0x698E	# <CJK>
+0xE249	0x69A7	# <CJK>
+0xE24A	0x698D	# <CJK>
+0xE24B	0x69A9	# <CJK>
+0xE24C	0x69BE	# <CJK>
+0xE24D	0x69AF	# <CJK>
+0xE24E	0x69BF	# <CJK>
+0xE24F	0x69C4	# <CJK>
+0xE250	0x69BD	# <CJK>
+0xE251	0x69A4	# <CJK>
+0xE252	0x69D4	# <CJK>
+0xE253	0x69B9	# <CJK>
+0xE254	0x69CA	# <CJK>
+0xE255	0x699A	# <CJK>
+0xE256	0x69CF	# <CJK>
+0xE257	0x69B3	# <CJK>
+0xE258	0x6993	# <CJK>
+0xE259	0x69AA	# <CJK>
+0xE25A	0x69A1	# <CJK>
+0xE25B	0x699E	# <CJK>
+0xE25C	0x69D9	# <CJK>
+0xE25D	0x6997	# <CJK>
+0xE25E	0x6990	# <CJK>
+0xE25F	0x69C2	# <CJK>
+0xE260	0x69B5	# <CJK>
+0xE261	0x69A5	# <CJK>
+0xE262	0x69C6	# <CJK>
+0xE263	0x6B4A	# <CJK>
+0xE264	0x6B4D	# <CJK>
+0xE265	0x6B4B	# <CJK>
+0xE266	0x6B9E	# <CJK>
+0xE267	0x6B9F	# <CJK>
+0xE268	0x6BA0	# <CJK>
+0xE269	0x6BC3	# <CJK>
+0xE26A	0x6BC4	# <CJK>
+0xE26B	0x6BFE	# <CJK>
+0xE26C	0x6ECE	# <CJK>
+0xE26D	0x6EF5	# <CJK>
+0xE26E	0x6EF1	# <CJK>
+0xE26F	0x6F03	# <CJK>
+0xE270	0x6F25	# <CJK>
+0xE271	0x6EF8	# <CJK>
+0xE272	0x6F37	# <CJK>
+0xE273	0x6EFB	# <CJK>
+0xE274	0x6F2E	# <CJK>
+0xE275	0x6F09	# <CJK>
+0xE276	0x6F4E	# <CJK>
+0xE277	0x6F19	# <CJK>
+0xE278	0x6F1A	# <CJK>
+0xE279	0x6F27	# <CJK>
+0xE27A	0x6F18	# <CJK>
+0xE27B	0x6F3B	# <CJK>
+0xE27C	0x6F12	# <CJK>
+0xE27D	0x6EED	# <CJK>
+0xE27E	0x6F0A	# <CJK>
+0xE2A1	0x6F36	# <CJK>
+0xE2A2	0x6F73	# <CJK>
+0xE2A3	0x6EF9	# <CJK>
+0xE2A4	0x6EEE	# <CJK>
+0xE2A5	0x6F2D	# <CJK>
+0xE2A6	0x6F40	# <CJK>
+0xE2A7	0x6F30	# <CJK>
+0xE2A8	0x6F3C	# <CJK>
+0xE2A9	0x6F35	# <CJK>
+0xE2AA	0x6EEB	# <CJK>
+0xE2AB	0x6F07	# <CJK>
+0xE2AC	0x6F0E	# <CJK>
+0xE2AD	0x6F43	# <CJK>
+0xE2AE	0x6F05	# <CJK>
+0xE2AF	0x6EFD	# <CJK>
+0xE2B0	0x6EF6	# <CJK>
+0xE2B1	0x6F39	# <CJK>
+0xE2B2	0x6F1C	# <CJK>
+0xE2B3	0x6EFC	# <CJK>
+0xE2B4	0x6F3A	# <CJK>
+0xE2B5	0x6F1F	# <CJK>
+0xE2B6	0x6F0D	# <CJK>
+0xE2B7	0x6F1E	# <CJK>
+0xE2B8	0x6F08	# <CJK>
+0xE2B9	0x6F21	# <CJK>
+0xE2BA	0x7187	# <CJK>
+0xE2BB	0x7190	# <CJK>
+0xE2BC	0x7189	# <CJK>
+0xE2BD	0x7180	# <CJK>
+0xE2BE	0x7185	# <CJK>
+0xE2BF	0x7182	# <CJK>
+0xE2C0	0x718F	# <CJK>
+0xE2C1	0x717B	# <CJK>
+0xE2C2	0x7186	# <CJK>
+0xE2C3	0x7181	# <CJK>
+0xE2C4	0x7197	# <CJK>
+0xE2C5	0x7244	# <CJK>
+0xE2C6	0x7253	# <CJK>
+0xE2C7	0x7297	# <CJK>
+0xE2C8	0x7295	# <CJK>
+0xE2C9	0x7293	# <CJK>
+0xE2CA	0x7343	# <CJK>
+0xE2CB	0x734D	# <CJK>
+0xE2CC	0x7351	# <CJK>
+0xE2CD	0x734C	# <CJK>
+0xE2CE	0x7462	# <CJK>
+0xE2CF	0x7473	# <CJK>
+0xE2D0	0x7471	# <CJK>
+0xE2D1	0x7475	# <CJK>
+0xE2D2	0x7472	# <CJK>
+0xE2D3	0x7467	# <CJK>
+0xE2D4	0x746E	# <CJK>
+0xE2D5	0x7500	# <CJK>
+0xE2D6	0x7502	# <CJK>
+0xE2D7	0x7503	# <CJK>
+0xE2D8	0x757D	# <CJK>
+0xE2D9	0x7590	# <CJK>
+0xE2DA	0x7616	# <CJK>
+0xE2DB	0x7608	# <CJK>
+0xE2DC	0x760C	# <CJK>
+0xE2DD	0x7615	# <CJK>
+0xE2DE	0x7611	# <CJK>
+0xE2DF	0x760A	# <CJK>
+0xE2E0	0x7614	# <CJK>
+0xE2E1	0x76B8	# <CJK>
+0xE2E2	0x7781	# <CJK>
+0xE2E3	0x777C	# <CJK>
+0xE2E4	0x7785	# <CJK>
+0xE2E5	0x7782	# <CJK>
+0xE2E6	0x776E	# <CJK>
+0xE2E7	0x7780	# <CJK>
+0xE2E8	0x776F	# <CJK>
+0xE2E9	0x777E	# <CJK>
+0xE2EA	0x7783	# <CJK>
+0xE2EB	0x78B2	# <CJK>
+0xE2EC	0x78AA	# <CJK>
+0xE2ED	0x78B4	# <CJK>
+0xE2EE	0x78AD	# <CJK>
+0xE2EF	0x78A8	# <CJK>
+0xE2F0	0x787E	# <CJK>
+0xE2F1	0x78AB	# <CJK>
+0xE2F2	0x789E	# <CJK>
+0xE2F3	0x78A5	# <CJK>
+0xE2F4	0x78A0	# <CJK>
+0xE2F5	0x78AC	# <CJK>
+0xE2F6	0x78A2	# <CJK>
+0xE2F7	0x78A4	# <CJK>
+0xE2F8	0x7998	# <CJK>
+0xE2F9	0x798A	# <CJK>
+0xE2FA	0x798B	# <CJK>
+0xE2FB	0x7996	# <CJK>
+0xE2FC	0x7995	# <CJK>
+0xE2FD	0x7994	# <CJK>
+0xE2FE	0x7993	# <CJK>
+0xE340	0x7997	# <CJK>
+0xE341	0x7988	# <CJK>
+0xE342	0x7992	# <CJK>
+0xE343	0x7990	# <CJK>
+0xE344	0x7A2B	# <CJK>
+0xE345	0x7A4A	# <CJK>
+0xE346	0x7A30	# <CJK>
+0xE347	0x7A2F	# <CJK>
+0xE348	0x7A28	# <CJK>
+0xE349	0x7A26	# <CJK>
+0xE34A	0x7AA8	# <CJK>
+0xE34B	0x7AAB	# <CJK>
+0xE34C	0x7AAC	# <CJK>
+0xE34D	0x7AEE	# <CJK>
+0xE34E	0x7B88	# <CJK>
+0xE34F	0x7B9C	# <CJK>
+0xE350	0x7B8A	# <CJK>
+0xE351	0x7B91	# <CJK>
+0xE352	0x7B90	# <CJK>
+0xE353	0x7B96	# <CJK>
+0xE354	0x7B8D	# <CJK>
+0xE355	0x7B8C	# <CJK>
+0xE356	0x7B9B	# <CJK>
+0xE357	0x7B8E	# <CJK>
+0xE358	0x7B85	# <CJK>
+0xE359	0x7B98	# <CJK>
+0xE35A	0x5284	# <CJK>
+0xE35B	0x7B99	# <CJK>
+0xE35C	0x7BA4	# <CJK>
+0xE35D	0x7B82	# <CJK>
+0xE35E	0x7CBB	# <CJK>
+0xE35F	0x7CBF	# <CJK>
+0xE360	0x7CBC	# <CJK>
+0xE361	0x7CBA	# <CJK>
+0xE362	0x7DA7	# <CJK>
+0xE363	0x7DB7	# <CJK>
+0xE364	0x7DC2	# <CJK>
+0xE365	0x7DA3	# <CJK>
+0xE366	0x7DAA	# <CJK>
+0xE367	0x7DC1	# <CJK>
+0xE368	0x7DC0	# <CJK>
+0xE369	0x7DC5	# <CJK>
+0xE36A	0x7D9D	# <CJK>
+0xE36B	0x7DCE	# <CJK>
+0xE36C	0x7DC4	# <CJK>
+0xE36D	0x7DC6	# <CJK>
+0xE36E	0x7DCB	# <CJK>
+0xE36F	0x7DCC	# <CJK>
+0xE370	0x7DAF	# <CJK>
+0xE371	0x7DB9	# <CJK>
+0xE372	0x7D96	# <CJK>
+0xE373	0x7DBC	# <CJK>
+0xE374	0x7D9F	# <CJK>
+0xE375	0x7DA6	# <CJK>
+0xE376	0x7DAE	# <CJK>
+0xE377	0x7DA9	# <CJK>
+0xE378	0x7DA1	# <CJK>
+0xE379	0x7DC9	# <CJK>
+0xE37A	0x7F73	# <CJK>
+0xE37B	0x7FE2	# <CJK>
+0xE37C	0x7FE3	# <CJK>
+0xE37D	0x7FE5	# <CJK>
+0xE37E	0x7FDE	# <CJK>
+0xE3A1	0x8024	# <CJK>
+0xE3A2	0x805D	# <CJK>
+0xE3A3	0x805C	# <CJK>
+0xE3A4	0x8189	# <CJK>
+0xE3A5	0x8186	# <CJK>
+0xE3A6	0x8183	# <CJK>
+0xE3A7	0x8187	# <CJK>
+0xE3A8	0x818D	# <CJK>
+0xE3A9	0x818C	# <CJK>
+0xE3AA	0x818B	# <CJK>
+0xE3AB	0x8215	# <CJK>
+0xE3AC	0x8497	# <CJK>
+0xE3AD	0x84A4	# <CJK>
+0xE3AE	0x84A1	# <CJK>
+0xE3AF	0x849F	# <CJK>
+0xE3B0	0x84BA	# <CJK>
+0xE3B1	0x84CE	# <CJK>
+0xE3B2	0x84C2	# <CJK>
+0xE3B3	0x84AC	# <CJK>
+0xE3B4	0x84AE	# <CJK>
+0xE3B5	0x84AB	# <CJK>
+0xE3B6	0x84B9	# <CJK>
+0xE3B7	0x84B4	# <CJK>
+0xE3B8	0x84C1	# <CJK>
+0xE3B9	0x84CD	# <CJK>
+0xE3BA	0x84AA	# <CJK>
+0xE3BB	0x849A	# <CJK>
+0xE3BC	0x84B1	# <CJK>
+0xE3BD	0x84D0	# <CJK>
+0xE3BE	0x849D	# <CJK>
+0xE3BF	0x84A7	# <CJK>
+0xE3C0	0x84BB	# <CJK>
+0xE3C1	0x84A2	# <CJK>
+0xE3C2	0x8494	# <CJK>
+0xE3C3	0x84C7	# <CJK>
+0xE3C4	0x84CC	# <CJK>
+0xE3C5	0x849B	# <CJK>
+0xE3C6	0x84A9	# <CJK>
+0xE3C7	0x84AF	# <CJK>
+0xE3C8	0x84A8	# <CJK>
+0xE3C9	0x84D6	# <CJK>
+0xE3CA	0x8498	# <CJK>
+0xE3CB	0x84B6	# <CJK>
+0xE3CC	0x84CF	# <CJK>
+0xE3CD	0x84A0	# <CJK>
+0xE3CE	0x84D7	# <CJK>
+0xE3CF	0x84D4	# <CJK>
+0xE3D0	0x84D2	# <CJK>
+0xE3D1	0x84DB	# <CJK>
+0xE3D2	0x84B0	# <CJK>
+0xE3D3	0x8491	# <CJK>
+0xE3D4	0x8661	# <CJK>
+0xE3D5	0x8733	# <CJK>
+0xE3D6	0x8723	# <CJK>
+0xE3D7	0x8728	# <CJK>
+0xE3D8	0x876B	# <CJK>
+0xE3D9	0x8740	# <CJK>
+0xE3DA	0x872E	# <CJK>
+0xE3DB	0x871E	# <CJK>
+0xE3DC	0x8721	# <CJK>
+0xE3DD	0x8719	# <CJK>
+0xE3DE	0x871B	# <CJK>
+0xE3DF	0x8743	# <CJK>
+0xE3E0	0x872C	# <CJK>
+0xE3E1	0x8741	# <CJK>
+0xE3E2	0x873E	# <CJK>
+0xE3E3	0x8746	# <CJK>
+0xE3E4	0x8720	# <CJK>
+0xE3E5	0x8732	# <CJK>
+0xE3E6	0x872A	# <CJK>
+0xE3E7	0x872D	# <CJK>
+0xE3E8	0x873C	# <CJK>
+0xE3E9	0x8712	# <CJK>
+0xE3EA	0x873A	# <CJK>
+0xE3EB	0x8731	# <CJK>
+0xE3EC	0x8735	# <CJK>
+0xE3ED	0x8742	# <CJK>
+0xE3EE	0x8726	# <CJK>
+0xE3EF	0x8727	# <CJK>
+0xE3F0	0x8738	# <CJK>
+0xE3F1	0x8724	# <CJK>
+0xE3F2	0x871A	# <CJK>
+0xE3F3	0x8730	# <CJK>
+0xE3F4	0x8711	# <CJK>
+0xE3F5	0x88F7	# <CJK>
+0xE3F6	0x88E7	# <CJK>
+0xE3F7	0x88F1	# <CJK>
+0xE3F8	0x88F2	# <CJK>
+0xE3F9	0x88FA	# <CJK>
+0xE3FA	0x88FE	# <CJK>
+0xE3FB	0x88EE	# <CJK>
+0xE3FC	0x88FC	# <CJK>
+0xE3FD	0x88F6	# <CJK>
+0xE3FE	0x88FB	# <CJK>
+0xE440	0x88F0	# <CJK>
+0xE441	0x88EC	# <CJK>
+0xE442	0x88EB	# <CJK>
+0xE443	0x899D	# <CJK>
+0xE444	0x89A1	# <CJK>
+0xE445	0x899F	# <CJK>
+0xE446	0x899E	# <CJK>
+0xE447	0x89E9	# <CJK>
+0xE448	0x89EB	# <CJK>
+0xE449	0x89E8	# <CJK>
+0xE44A	0x8AAB	# <CJK>
+0xE44B	0x8A99	# <CJK>
+0xE44C	0x8A8B	# <CJK>
+0xE44D	0x8A92	# <CJK>
+0xE44E	0x8A8F	# <CJK>
+0xE44F	0x8A96	# <CJK>
+0xE450	0x8C3D	# <CJK>
+0xE451	0x8C68	# <CJK>
+0xE452	0x8C69	# <CJK>
+0xE453	0x8CD5	# <CJK>
+0xE454	0x8CCF	# <CJK>
+0xE455	0x8CD7	# <CJK>
+0xE456	0x8D96	# <CJK>
+0xE457	0x8E09	# <CJK>
+0xE458	0x8E02	# <CJK>
+0xE459	0x8DFF	# <CJK>
+0xE45A	0x8E0D	# <CJK>
+0xE45B	0x8DFD	# <CJK>
+0xE45C	0x8E0A	# <CJK>
+0xE45D	0x8E03	# <CJK>
+0xE45E	0x8E07	# <CJK>
+0xE45F	0x8E06	# <CJK>
+0xE460	0x8E05	# <CJK>
+0xE461	0x8DFE	# <CJK>
+0xE462	0x8E00	# <CJK>
+0xE463	0x8E04	# <CJK>
+0xE464	0x8F10	# <CJK>
+0xE465	0x8F11	# <CJK>
+0xE466	0x8F0E	# <CJK>
+0xE467	0x8F0D	# <CJK>
+0xE468	0x9123	# <CJK>
+0xE469	0x911C	# <CJK>
+0xE46A	0x9120	# <CJK>
+0xE46B	0x9122	# <CJK>
+0xE46C	0x911F	# <CJK>
+0xE46D	0x911D	# <CJK>
+0xE46E	0x911A	# <CJK>
+0xE46F	0x9124	# <CJK>
+0xE470	0x9121	# <CJK>
+0xE471	0x911B	# <CJK>
+0xE472	0x917A	# <CJK>
+0xE473	0x9172	# <CJK>
+0xE474	0x9179	# <CJK>
+0xE475	0x9173	# <CJK>
+0xE476	0x92A5	# <CJK>
+0xE477	0x92A4	# <CJK>
+0xE478	0x9276	# <CJK>
+0xE479	0x929B	# <CJK>
+0xE47A	0x927A	# <CJK>
+0xE47B	0x92A0	# <CJK>
+0xE47C	0x9294	# <CJK>
+0xE47D	0x92AA	# <CJK>
+0xE47E	0x928D	# <CJK>
+0xE4A1	0x92A6	# <CJK>
+0xE4A2	0x929A	# <CJK>
+0xE4A3	0x92AB	# <CJK>
+0xE4A4	0x9279	# <CJK>
+0xE4A5	0x9297	# <CJK>
+0xE4A6	0x927F	# <CJK>
+0xE4A7	0x92A3	# <CJK>
+0xE4A8	0x92EE	# <CJK>
+0xE4A9	0x928E	# <CJK>
+0xE4AA	0x9282	# <CJK>
+0xE4AB	0x9295	# <CJK>
+0xE4AC	0x92A2	# <CJK>
+0xE4AD	0x927D	# <CJK>
+0xE4AE	0x9288	# <CJK>
+0xE4AF	0x92A1	# <CJK>
+0xE4B0	0x928A	# <CJK>
+0xE4B1	0x9286	# <CJK>
+0xE4B2	0x928C	# <CJK>
+0xE4B3	0x9299	# <CJK>
+0xE4B4	0x92A7	# <CJK>
+0xE4B5	0x927E	# <CJK>
+0xE4B6	0x9287	# <CJK>
+0xE4B7	0x92A9	# <CJK>
+0xE4B8	0x929D	# <CJK>
+0xE4B9	0x928B	# <CJK>
+0xE4BA	0x922D	# <CJK>
+0xE4BB	0x969E	# <CJK>
+0xE4BC	0x96A1	# <CJK>
+0xE4BD	0x96FF	# <CJK>
+0xE4BE	0x9758	# <CJK>
+0xE4BF	0x977D	# <CJK>
+0xE4C0	0x977A	# <CJK>
+0xE4C1	0x977E	# <CJK>
+0xE4C2	0x9783	# <CJK>
+0xE4C3	0x9780	# <CJK>
+0xE4C4	0x9782	# <CJK>
+0xE4C5	0x977B	# <CJK>
+0xE4C6	0x9784	# <CJK>
+0xE4C7	0x9781	# <CJK>
+0xE4C8	0x977F	# <CJK>
+0xE4C9	0x97CE	# <CJK>
+0xE4CA	0x97CD	# <CJK>
+0xE4CB	0x9816	# <CJK>
+0xE4CC	0x98AD	# <CJK>
+0xE4CD	0x98AE	# <CJK>
+0xE4CE	0x9902	# <CJK>
+0xE4CF	0x9900	# <CJK>
+0xE4D0	0x9907	# <CJK>
+0xE4D1	0x999D	# <CJK>
+0xE4D2	0x999C	# <CJK>
+0xE4D3	0x99C3	# <CJK>
+0xE4D4	0x99B9	# <CJK>
+0xE4D5	0x99BB	# <CJK>
+0xE4D6	0x99BA	# <CJK>
+0xE4D7	0x99C2	# <CJK>
+0xE4D8	0x99BD	# <CJK>
+0xE4D9	0x99C7	# <CJK>
+0xE4DA	0x9AB1	# <CJK>
+0xE4DB	0x9AE3	# <CJK>
+0xE4DC	0x9AE7	# <CJK>
+0xE4DD	0x9B3E	# <CJK>
+0xE4DE	0x9B3F	# <CJK>
+0xE4DF	0x9B60	# <CJK>
+0xE4E0	0x9B61	# <CJK>
+0xE4E1	0x9B5F	# <CJK>
+0xE4E2	0x9CF1	# <CJK>
+0xE4E3	0x9CF2	# <CJK>
+0xE4E4	0x9CF5	# <CJK>
+0xE4E5	0x9EA7	# <CJK>
+0xE4E6	0x50FF	# <CJK>
+0xE4E7	0x5103	# <CJK>
+0xE4E8	0x5130	# <CJK>
+0xE4E9	0x50F8	# <CJK>
+0xE4EA	0x5106	# <CJK>
+0xE4EB	0x5107	# <CJK>
+0xE4EC	0x50F6	# <CJK>
+0xE4ED	0x50FE	# <CJK>
+0xE4EE	0x510B	# <CJK>
+0xE4EF	0x510C	# <CJK>
+0xE4F0	0x50FD	# <CJK>
+0xE4F1	0x510A	# <CJK>
+0xE4F2	0x528B	# <CJK>
+0xE4F3	0x528C	# <CJK>
+0xE4F4	0x52F1	# <CJK>
+0xE4F5	0x52EF	# <CJK>
+0xE4F6	0x5648	# <CJK>
+0xE4F7	0x5642	# <CJK>
+0xE4F8	0x564C	# <CJK>
+0xE4F9	0x5635	# <CJK>
+0xE4FA	0x5641	# <CJK>
+0xE4FB	0x564A	# <CJK>
+0xE4FC	0x5649	# <CJK>
+0xE4FD	0x5646	# <CJK>
+0xE4FE	0x5658	# <CJK>
+0xE540	0x565A	# <CJK>
+0xE541	0x5640	# <CJK>
+0xE542	0x5633	# <CJK>
+0xE543	0x563D	# <CJK>
+0xE544	0x562C	# <CJK>
+0xE545	0x563E	# <CJK>
+0xE546	0x5638	# <CJK>
+0xE547	0x562A	# <CJK>
+0xE548	0x563A	# <CJK>
+0xE549	0x571A	# <CJK>
+0xE54A	0x58AB	# <CJK>
+0xE54B	0x589D	# <CJK>
+0xE54C	0x58B1	# <CJK>
+0xE54D	0x58A0	# <CJK>
+0xE54E	0x58A3	# <CJK>
+0xE54F	0x58AF	# <CJK>
+0xE550	0x58AC	# <CJK>
+0xE551	0x58A5	# <CJK>
+0xE552	0x58A1	# <CJK>
+0xE553	0x58FF	# <CJK>
+0xE554	0x5AFF	# <CJK>
+0xE555	0x5AF4	# <CJK>
+0xE556	0x5AFD	# <CJK>
+0xE557	0x5AF7	# <CJK>
+0xE558	0x5AF6	# <CJK>
+0xE559	0x5B03	# <CJK>
+0xE55A	0x5AF8	# <CJK>
+0xE55B	0x5B02	# <CJK>
+0xE55C	0x5AF9	# <CJK>
+0xE55D	0x5B01	# <CJK>
+0xE55E	0x5B07	# <CJK>
+0xE55F	0x5B05	# <CJK>
+0xE560	0x5B0F	# <CJK>
+0xE561	0x5C67	# <CJK>
+0xE562	0x5D99	# <CJK>
+0xE563	0x5D97	# <CJK>
+0xE564	0x5D9F	# <CJK>
+0xE565	0x5D92	# <CJK>
+0xE566	0x5DA2	# <CJK>
+0xE567	0x5D93	# <CJK>
+0xE568	0x5D95	# <CJK>
+0xE569	0x5DA0	# <CJK>
+0xE56A	0x5D9C	# <CJK>
+0xE56B	0x5DA1	# <CJK>
+0xE56C	0x5D9A	# <CJK>
+0xE56D	0x5D9E	# <CJK>
+0xE56E	0x5E69	# <CJK>
+0xE56F	0x5E5D	# <CJK>
+0xE570	0x5E60	# <CJK>
+0xE571	0x5E5C	# <CJK>
+0xE572	0x7DF3	# <CJK>
+0xE573	0x5EDB	# <CJK>
+0xE574	0x5EDE	# <CJK>
+0xE575	0x5EE1	# <CJK>
+0xE576	0x5F49	# <CJK>
+0xE577	0x5FB2	# <CJK>
+0xE578	0x618B	# <CJK>
+0xE579	0x6183	# <CJK>
+0xE57A	0x6179	# <CJK>
+0xE57B	0x61B1	# <CJK>
+0xE57C	0x61B0	# <CJK>
+0xE57D	0x61A2	# <CJK>
+0xE57E	0x6189	# <CJK>
+0xE5A1	0x619B	# <CJK>
+0xE5A2	0x6193	# <CJK>
+0xE5A3	0x61AF	# <CJK>
+0xE5A4	0x61AD	# <CJK>
+0xE5A5	0x619F	# <CJK>
+0xE5A6	0x6192	# <CJK>
+0xE5A7	0x61AA	# <CJK>
+0xE5A8	0x61A1	# <CJK>
+0xE5A9	0x618D	# <CJK>
+0xE5AA	0x6166	# <CJK>
+0xE5AB	0x61B3	# <CJK>
+0xE5AC	0x622D	# <CJK>
+0xE5AD	0x646E	# <CJK>
+0xE5AE	0x6470	# <CJK>
+0xE5AF	0x6496	# <CJK>
+0xE5B0	0x64A0	# <CJK>
+0xE5B1	0x6485	# <CJK>
+0xE5B2	0x6497	# <CJK>
+0xE5B3	0x649C	# <CJK>
+0xE5B4	0x648F	# <CJK>
+0xE5B5	0x648B	# <CJK>
+0xE5B6	0x648A	# <CJK>
+0xE5B7	0x648C	# <CJK>
+0xE5B8	0x64A3	# <CJK>
+0xE5B9	0x649F	# <CJK>
+0xE5BA	0x6468	# <CJK>
+0xE5BB	0x64B1	# <CJK>
+0xE5BC	0x6498	# <CJK>
+0xE5BD	0x6576	# <CJK>
+0xE5BE	0x657A	# <CJK>
+0xE5BF	0x6579	# <CJK>
+0xE5C0	0x657B	# <CJK>
+0xE5C1	0x65B2	# <CJK>
+0xE5C2	0x65B3	# <CJK>
+0xE5C3	0x66B5	# <CJK>
+0xE5C4	0x66B0	# <CJK>
+0xE5C5	0x66A9	# <CJK>
+0xE5C6	0x66B2	# <CJK>
+0xE5C7	0x66B7	# <CJK>
+0xE5C8	0x66AA	# <CJK>
+0xE5C9	0x66AF	# <CJK>
+0xE5CA	0x6A00	# <CJK>
+0xE5CB	0x6A06	# <CJK>
+0xE5CC	0x6A17	# <CJK>
+0xE5CD	0x69E5	# <CJK>
+0xE5CE	0x69F8	# <CJK>
+0xE5CF	0x6A15	# <CJK>
+0xE5D0	0x69F1	# <CJK>
+0xE5D1	0x69E4	# <CJK>
+0xE5D2	0x6A20	# <CJK>
+0xE5D3	0x69FF	# <CJK>
+0xE5D4	0x69EC	# <CJK>
+0xE5D5	0x69E2	# <CJK>
+0xE5D6	0x6A1B	# <CJK>
+0xE5D7	0x6A1D	# <CJK>
+0xE5D8	0x69FE	# <CJK>
+0xE5D9	0x6A27	# <CJK>
+0xE5DA	0x69F2	# <CJK>
+0xE5DB	0x69EE	# <CJK>
+0xE5DC	0x6A14	# <CJK>
+0xE5DD	0x69F7	# <CJK>
+0xE5DE	0x69E7	# <CJK>
+0xE5DF	0x6A40	# <CJK>
+0xE5E0	0x6A08	# <CJK>
+0xE5E1	0x69E6	# <CJK>
+0xE5E2	0x69FB	# <CJK>
+0xE5E3	0x6A0D	# <CJK>
+0xE5E4	0x69FC	# <CJK>
+0xE5E5	0x69EB	# <CJK>
+0xE5E6	0x6A09	# <CJK>
+0xE5E7	0x6A04	# <CJK>
+0xE5E8	0x6A18	# <CJK>
+0xE5E9	0x6A25	# <CJK>
+0xE5EA	0x6A0F	# <CJK>
+0xE5EB	0x69F6	# <CJK>
+0xE5EC	0x6A26	# <CJK>
+0xE5ED	0x6A07	# <CJK>
+0xE5EE	0x69F4	# <CJK>
+0xE5EF	0x6A16	# <CJK>
+0xE5F0	0x6B51	# <CJK>
+0xE5F1	0x6BA5	# <CJK>
+0xE5F2	0x6BA3	# <CJK>
+0xE5F3	0x6BA2	# <CJK>
+0xE5F4	0x6BA6	# <CJK>
+0xE5F5	0x6C01	# <CJK>
+0xE5F6	0x6C00	# <CJK>
+0xE5F7	0x6BFF	# <CJK>
+0xE5F8	0x6C02	# <CJK>
+0xE5F9	0x6F41	# <CJK>
+0xE5FA	0x6F26	# <CJK>
+0xE5FB	0x6F7E	# <CJK>
+0xE5FC	0x6F87	# <CJK>
+0xE5FD	0x6FC6	# <CJK>
+0xE5FE	0x6F92	# <CJK>
+0xE640	0x6F8D	# <CJK>
+0xE641	0x6F89	# <CJK>
+0xE642	0x6F8C	# <CJK>
+0xE643	0x6F62	# <CJK>
+0xE644	0x6F4F	# <CJK>
+0xE645	0x6F85	# <CJK>
+0xE646	0x6F5A	# <CJK>
+0xE647	0x6F96	# <CJK>
+0xE648	0x6F76	# <CJK>
+0xE649	0x6F6C	# <CJK>
+0xE64A	0x6F82	# <CJK>
+0xE64B	0x6F55	# <CJK>
+0xE64C	0x6F72	# <CJK>
+0xE64D	0x6F52	# <CJK>
+0xE64E	0x6F50	# <CJK>
+0xE64F	0x6F57	# <CJK>
+0xE650	0x6F94	# <CJK>
+0xE651	0x6F93	# <CJK>
+0xE652	0x6F5D	# <CJK>
+0xE653	0x6F00	# <CJK>
+0xE654	0x6F61	# <CJK>
+0xE655	0x6F6B	# <CJK>
+0xE656	0x6F7D	# <CJK>
+0xE657	0x6F67	# <CJK>
+0xE658	0x6F90	# <CJK>
+0xE659	0x6F53	# <CJK>
+0xE65A	0x6F8B	# <CJK>
+0xE65B	0x6F69	# <CJK>
+0xE65C	0x6F7F	# <CJK>
+0xE65D	0x6F95	# <CJK>
+0xE65E	0x6F63	# <CJK>
+0xE65F	0x6F77	# <CJK>
+0xE660	0x6F6A	# <CJK>
+0xE661	0x6F7B	# <CJK>
+0xE662	0x71B2	# <CJK>
+0xE663	0x71AF	# <CJK>
+0xE664	0x719B	# <CJK>
+0xE665	0x71B0	# <CJK>
+0xE666	0x71A0	# <CJK>
+0xE667	0x719A	# <CJK>
+0xE668	0x71A9	# <CJK>
+0xE669	0x71B5	# <CJK>
+0xE66A	0x719D	# <CJK>
+0xE66B	0x71A5	# <CJK>
+0xE66C	0x719E	# <CJK>
+0xE66D	0x71A4	# <CJK>
+0xE66E	0x71A1	# <CJK>
+0xE66F	0x71AA	# <CJK>
+0xE670	0x719C	# <CJK>
+0xE671	0x71A7	# <CJK>
+0xE672	0x71B3	# <CJK>
+0xE673	0x7298	# <CJK>
+0xE674	0x729A	# <CJK>
+0xE675	0x7358	# <CJK>
+0xE676	0x7352	# <CJK>
+0xE677	0x735E	# <CJK>
+0xE678	0x735F	# <CJK>
+0xE679	0x7360	# <CJK>
+0xE67A	0x735D	# <CJK>
+0xE67B	0x735B	# <CJK>
+0xE67C	0x7361	# <CJK>
+0xE67D	0x735A	# <CJK>
+0xE67E	0x7359	# <CJK>
+0xE6A1	0x7362	# <CJK>
+0xE6A2	0x7487	# <CJK>
+0xE6A3	0x7489	# <CJK>
+0xE6A4	0x748A	# <CJK>
+0xE6A5	0x7486	# <CJK>
+0xE6A6	0x7481	# <CJK>
+0xE6A7	0x747D	# <CJK>
+0xE6A8	0x7485	# <CJK>
+0xE6A9	0x7488	# <CJK>
+0xE6AA	0x747C	# <CJK>
+0xE6AB	0x7479	# <CJK>
+0xE6AC	0x7508	# <CJK>
+0xE6AD	0x7507	# <CJK>
+0xE6AE	0x757E	# <CJK>
+0xE6AF	0x7625	# <CJK>
+0xE6B0	0x761E	# <CJK>
+0xE6B1	0x7619	# <CJK>
+0xE6B2	0x761D	# <CJK>
+0xE6B3	0x761C	# <CJK>
+0xE6B4	0x7623	# <CJK>
+0xE6B5	0x761A	# <CJK>
+0xE6B6	0x7628	# <CJK>
+0xE6B7	0x761B	# <CJK>
+0xE6B8	0x769C	# <CJK>
+0xE6B9	0x769D	# <CJK>
+0xE6BA	0x769E	# <CJK>
+0xE6BB	0x769B	# <CJK>
+0xE6BC	0x778D	# <CJK>
+0xE6BD	0x778F	# <CJK>
+0xE6BE	0x7789	# <CJK>
+0xE6BF	0x7788	# <CJK>
+0xE6C0	0x78CD	# <CJK>
+0xE6C1	0x78BB	# <CJK>
+0xE6C2	0x78CF	# <CJK>
+0xE6C3	0x78CC	# <CJK>
+0xE6C4	0x78D1	# <CJK>
+0xE6C5	0x78CE	# <CJK>
+0xE6C6	0x78D4	# <CJK>
+0xE6C7	0x78C8	# <CJK>
+0xE6C8	0x78C3	# <CJK>
+0xE6C9	0x78C4	# <CJK>
+0xE6CA	0x78C9	# <CJK>
+0xE6CB	0x799A	# <CJK>
+0xE6CC	0x79A1	# <CJK>
+0xE6CD	0x79A0	# <CJK>
+0xE6CE	0x799C	# <CJK>
+0xE6CF	0x79A2	# <CJK>
+0xE6D0	0x799B	# <CJK>
+0xE6D1	0x6B76	# <CJK>
+0xE6D2	0x7A39	# <CJK>
+0xE6D3	0x7AB2	# <CJK>
+0xE6D4	0x7AB4	# <CJK>
+0xE6D5	0x7AB3	# <CJK>
+0xE6D6	0x7BB7	# <CJK>
+0xE6D7	0x7BCB	# <CJK>
+0xE6D8	0x7BBE	# <CJK>
+0xE6D9	0x7BAC	# <CJK>
+0xE6DA	0x7BCE	# <CJK>
+0xE6DB	0x7BAF	# <CJK>
+0xE6DC	0x7BB9	# <CJK>
+0xE6DD	0x7BCA	# <CJK>
+0xE6DE	0x7BB5	# <CJK>
+0xE6DF	0x7CC5	# <CJK>
+0xE6E0	0x7CC8	# <CJK>
+0xE6E1	0x7CCC	# <CJK>
+0xE6E2	0x7CCB	# <CJK>
+0xE6E3	0x7DF7	# <CJK>
+0xE6E4	0x7DDB	# <CJK>
+0xE6E5	0x7DEA	# <CJK>
+0xE6E6	0x7DE7	# <CJK>
+0xE6E7	0x7DD7	# <CJK>
+0xE6E8	0x7DE1	# <CJK>
+0xE6E9	0x7E03	# <CJK>
+0xE6EA	0x7DFA	# <CJK>
+0xE6EB	0x7DE6	# <CJK>
+0xE6EC	0x7DF6	# <CJK>
+0xE6ED	0x7DF1	# <CJK>
+0xE6EE	0x7DF0	# <CJK>
+0xE6EF	0x7DEE	# <CJK>
+0xE6F0	0x7DDF	# <CJK>
+0xE6F1	0x7F76	# <CJK>
+0xE6F2	0x7FAC	# <CJK>
+0xE6F3	0x7FB0	# <CJK>
+0xE6F4	0x7FAD	# <CJK>
+0xE6F5	0x7FED	# <CJK>
+0xE6F6	0x7FEB	# <CJK>
+0xE6F7	0x7FEA	# <CJK>
+0xE6F8	0x7FEC	# <CJK>
+0xE6F9	0x7FE6	# <CJK>
+0xE6FA	0x7FE8	# <CJK>
+0xE6FB	0x8064	# <CJK>
+0xE6FC	0x8067	# <CJK>
+0xE6FD	0x81A3	# <CJK>
+0xE6FE	0x819F	# <CJK>
+0xE740	0x819E	# <CJK>
+0xE741	0x8195	# <CJK>
+0xE742	0x81A2	# <CJK>
+0xE743	0x8199	# <CJK>
+0xE744	0x8197	# <CJK>
+0xE745	0x8216	# <CJK>
+0xE746	0x824F	# <CJK>
+0xE747	0x8253	# <CJK>
+0xE748	0x8252	# <CJK>
+0xE749	0x8250	# <CJK>
+0xE74A	0x824E	# <CJK>
+0xE74B	0x8251	# <CJK>
+0xE74C	0x8524	# <CJK>
+0xE74D	0x853B	# <CJK>
+0xE74E	0x850F	# <CJK>
+0xE74F	0x8500	# <CJK>
+0xE750	0x8529	# <CJK>
+0xE751	0x850E	# <CJK>
+0xE752	0x8509	# <CJK>
+0xE753	0x850D	# <CJK>
+0xE754	0x851F	# <CJK>
+0xE755	0x850A	# <CJK>
+0xE756	0x8527	# <CJK>
+0xE757	0x851C	# <CJK>
+0xE758	0x84FB	# <CJK>
+0xE759	0x852B	# <CJK>
+0xE75A	0x84FA	# <CJK>
+0xE75B	0x8508	# <CJK>
+0xE75C	0x850C	# <CJK>
+0xE75D	0x84F4	# <CJK>
+0xE75E	0x852A	# <CJK>
+0xE75F	0x84F2	# <CJK>
+0xE760	0x8515	# <CJK>
+0xE761	0x84F7	# <CJK>
+0xE762	0x84EB	# <CJK>
+0xE763	0x84F3	# <CJK>
+0xE764	0x84FC	# <CJK>
+0xE765	0x8512	# <CJK>
+0xE766	0x84EA	# <CJK>
+0xE767	0x84E9	# <CJK>
+0xE768	0x8516	# <CJK>
+0xE769	0x84FE	# <CJK>
+0xE76A	0x8528	# <CJK>
+0xE76B	0x851D	# <CJK>
+0xE76C	0x852E	# <CJK>
+0xE76D	0x8502	# <CJK>
+0xE76E	0x84FD	# <CJK>
+0xE76F	0x851E	# <CJK>
+0xE770	0x84F6	# <CJK>
+0xE771	0x8531	# <CJK>
+0xE772	0x8526	# <CJK>
+0xE773	0x84E7	# <CJK>
+0xE774	0x84E8	# <CJK>
+0xE775	0x84F0	# <CJK>
+0xE776	0x84EF	# <CJK>
+0xE777	0x84F9	# <CJK>
+0xE778	0x8518	# <CJK>
+0xE779	0x8520	# <CJK>
+0xE77A	0x8530	# <CJK>
+0xE77B	0x850B	# <CJK>
+0xE77C	0x8519	# <CJK>
+0xE77D	0x852F	# <CJK>
+0xE77E	0x8662	# <CJK>
+0xE7A1	0x8756	# <CJK>
+0xE7A2	0x8763	# <CJK>
+0xE7A3	0x8764	# <CJK>
+0xE7A4	0x8777	# <CJK>
+0xE7A5	0x87E1	# <CJK>
+0xE7A6	0x8773	# <CJK>
+0xE7A7	0x8758	# <CJK>
+0xE7A8	0x8754	# <CJK>
+0xE7A9	0x875B	# <CJK>
+0xE7AA	0x8752	# <CJK>
+0xE7AB	0x8761	# <CJK>
+0xE7AC	0x875A	# <CJK>
+0xE7AD	0x8751	# <CJK>
+0xE7AE	0x875E	# <CJK>
+0xE7AF	0x876D	# <CJK>
+0xE7B0	0x876A	# <CJK>
+0xE7B1	0x8750	# <CJK>
+0xE7B2	0x874E	# <CJK>
+0xE7B3	0x875F	# <CJK>
+0xE7B4	0x875D	# <CJK>
+0xE7B5	0x876F	# <CJK>
+0xE7B6	0x876C	# <CJK>
+0xE7B7	0x877A	# <CJK>
+0xE7B8	0x876E	# <CJK>
+0xE7B9	0x875C	# <CJK>
+0xE7BA	0x8765	# <CJK>
+0xE7BB	0x874F	# <CJK>
+0xE7BC	0x877B	# <CJK>
+0xE7BD	0x8775	# <CJK>
+0xE7BE	0x8762	# <CJK>
+0xE7BF	0x8767	# <CJK>
+0xE7C0	0x8769	# <CJK>
+0xE7C1	0x885A	# <CJK>
+0xE7C2	0x8905	# <CJK>
+0xE7C3	0x890C	# <CJK>
+0xE7C4	0x8914	# <CJK>
+0xE7C5	0x890B	# <CJK>
+0xE7C6	0x8917	# <CJK>
+0xE7C7	0x8918	# <CJK>
+0xE7C8	0x8919	# <CJK>
+0xE7C9	0x8906	# <CJK>
+0xE7CA	0x8916	# <CJK>
+0xE7CB	0x8911	# <CJK>
+0xE7CC	0x890E	# <CJK>
+0xE7CD	0x8909	# <CJK>
+0xE7CE	0x89A2	# <CJK>
+0xE7CF	0x89A4	# <CJK>
+0xE7D0	0x89A3	# <CJK>
+0xE7D1	0x89ED	# <CJK>
+0xE7D2	0x89F0	# <CJK>
+0xE7D3	0x89EC	# <CJK>
+0xE7D4	0x8ACF	# <CJK>
+0xE7D5	0x8AC6	# <CJK>
+0xE7D6	0x8AB8	# <CJK>
+0xE7D7	0x8AD3	# <CJK>
+0xE7D8	0x8AD1	# <CJK>
+0xE7D9	0x8AD4	# <CJK>
+0xE7DA	0x8AD5	# <CJK>
+0xE7DB	0x8ABB	# <CJK>
+0xE7DC	0x8AD7	# <CJK>
+0xE7DD	0x8ABE	# <CJK>
+0xE7DE	0x8AC0	# <CJK>
+0xE7DF	0x8AC5	# <CJK>
+0xE7E0	0x8AD8	# <CJK>
+0xE7E1	0x8AC3	# <CJK>
+0xE7E2	0x8ABA	# <CJK>
+0xE7E3	0x8ABD	# <CJK>
+0xE7E4	0x8AD9	# <CJK>
+0xE7E5	0x8C3E	# <CJK>
+0xE7E6	0x8C4D	# <CJK>
+0xE7E7	0x8C8F	# <CJK>
+0xE7E8	0x8CE5	# <CJK>
+0xE7E9	0x8CDF	# <CJK>
+0xE7EA	0x8CD9	# <CJK>
+0xE7EB	0x8CE8	# <CJK>
+0xE7EC	0x8CDA	# <CJK>
+0xE7ED	0x8CDD	# <CJK>
+0xE7EE	0x8CE7	# <CJK>
+0xE7EF	0x8DA0	# <CJK>
+0xE7F0	0x8D9C	# <CJK>
+0xE7F1	0x8DA1	# <CJK>
+0xE7F2	0x8D9B	# <CJK>
+0xE7F3	0x8E20	# <CJK>
+0xE7F4	0x8E23	# <CJK>
+0xE7F5	0x8E25	# <CJK>
+0xE7F6	0x8E24	# <CJK>
+0xE7F7	0x8E2E	# <CJK>
+0xE7F8	0x8E15	# <CJK>
+0xE7F9	0x8E1B	# <CJK>
+0xE7FA	0x8E16	# <CJK>
+0xE7FB	0x8E11	# <CJK>
+0xE7FC	0x8E19	# <CJK>
+0xE7FD	0x8E26	# <CJK>
+0xE7FE	0x8E27	# <CJK>
+0xE840	0x8E14	# <CJK>
+0xE841	0x8E12	# <CJK>
+0xE842	0x8E18	# <CJK>
+0xE843	0x8E13	# <CJK>
+0xE844	0x8E1C	# <CJK>
+0xE845	0x8E17	# <CJK>
+0xE846	0x8E1A	# <CJK>
+0xE847	0x8F2C	# <CJK>
+0xE848	0x8F24	# <CJK>
+0xE849	0x8F18	# <CJK>
+0xE84A	0x8F1A	# <CJK>
+0xE84B	0x8F20	# <CJK>
+0xE84C	0x8F23	# <CJK>
+0xE84D	0x8F16	# <CJK>
+0xE84E	0x8F17	# <CJK>
+0xE84F	0x9073	# <CJK>
+0xE850	0x9070	# <CJK>
+0xE851	0x906F	# <CJK>
+0xE852	0x9067	# <CJK>
+0xE853	0x906B	# <CJK>
+0xE854	0x912F	# <CJK>
+0xE855	0x912B	# <CJK>
+0xE856	0x9129	# <CJK>
+0xE857	0x912A	# <CJK>
+0xE858	0x9132	# <CJK>
+0xE859	0x9126	# <CJK>
+0xE85A	0x912E	# <CJK>
+0xE85B	0x9185	# <CJK>
+0xE85C	0x9186	# <CJK>
+0xE85D	0x918A	# <CJK>
+0xE85E	0x9181	# <CJK>
+0xE85F	0x9182	# <CJK>
+0xE860	0x9184	# <CJK>
+0xE861	0x9180	# <CJK>
+0xE862	0x92D0	# <CJK>
+0xE863	0x92C3	# <CJK>
+0xE864	0x92C4	# <CJK>
+0xE865	0x92C0	# <CJK>
+0xE866	0x92D9	# <CJK>
+0xE867	0x92B6	# <CJK>
+0xE868	0x92CF	# <CJK>
+0xE869	0x92F1	# <CJK>
+0xE86A	0x92DF	# <CJK>
+0xE86B	0x92D8	# <CJK>
+0xE86C	0x92E9	# <CJK>
+0xE86D	0x92D7	# <CJK>
+0xE86E	0x92DD	# <CJK>
+0xE86F	0x92CC	# <CJK>
+0xE870	0x92EF	# <CJK>
+0xE871	0x92C2	# <CJK>
+0xE872	0x92E8	# <CJK>
+0xE873	0x92CA	# <CJK>
+0xE874	0x92C8	# <CJK>
+0xE875	0x92CE	# <CJK>
+0xE876	0x92E6	# <CJK>
+0xE877	0x92CD	# <CJK>
+0xE878	0x92D5	# <CJK>
+0xE879	0x92C9	# <CJK>
+0xE87A	0x92E0	# <CJK>
+0xE87B	0x92DE	# <CJK>
+0xE87C	0x92E7	# <CJK>
+0xE87D	0x92D1	# <CJK>
+0xE87E	0x92D3	# <CJK>
+0xE8A1	0x92B5	# <CJK>
+0xE8A2	0x92E1	# <CJK>
+0xE8A3	0x92C6	# <CJK>
+0xE8A4	0x92B4	# <CJK>
+0xE8A5	0x957C	# <CJK>
+0xE8A6	0x95AC	# <CJK>
+0xE8A7	0x95AB	# <CJK>
+0xE8A8	0x95AE	# <CJK>
+0xE8A9	0x95B0	# <CJK>
+0xE8AA	0x96A4	# <CJK>
+0xE8AB	0x96A2	# <CJK>
+0xE8AC	0x96D3	# <CJK>
+0xE8AD	0x9705	# <CJK>
+0xE8AE	0x9708	# <CJK>
+0xE8AF	0x9702	# <CJK>
+0xE8B0	0x975A	# <CJK>
+0xE8B1	0x978A	# <CJK>
+0xE8B2	0x978E	# <CJK>
+0xE8B3	0x9788	# <CJK>
+0xE8B4	0x97D0	# <CJK>
+0xE8B5	0x97CF	# <CJK>
+0xE8B6	0x981E	# <CJK>
+0xE8B7	0x981D	# <CJK>
+0xE8B8	0x9826	# <CJK>
+0xE8B9	0x9829	# <CJK>
+0xE8BA	0x9828	# <CJK>
+0xE8BB	0x9820	# <CJK>
+0xE8BC	0x981B	# <CJK>
+0xE8BD	0x9827	# <CJK>
+0xE8BE	0x98B2	# <CJK>
+0xE8BF	0x9908	# <CJK>
+0xE8C0	0x98FA	# <CJK>
+0xE8C1	0x9911	# <CJK>
+0xE8C2	0x9914	# <CJK>
+0xE8C3	0x9916	# <CJK>
+0xE8C4	0x9917	# <CJK>
+0xE8C5	0x9915	# <CJK>
+0xE8C6	0x99DC	# <CJK>
+0xE8C7	0x99CD	# <CJK>
+0xE8C8	0x99CF	# <CJK>
+0xE8C9	0x99D3	# <CJK>
+0xE8CA	0x99D4	# <CJK>
+0xE8CB	0x99CE	# <CJK>
+0xE8CC	0x99C9	# <CJK>
+0xE8CD	0x99D6	# <CJK>
+0xE8CE	0x99D8	# <CJK>
+0xE8CF	0x99CB	# <CJK>
+0xE8D0	0x99D7	# <CJK>
+0xE8D1	0x99CC	# <CJK>
+0xE8D2	0x9AB3	# <CJK>
+0xE8D3	0x9AEC	# <CJK>
+0xE8D4	0x9AEB	# <CJK>
+0xE8D5	0x9AF3	# <CJK>
+0xE8D6	0x9AF2	# <CJK>
+0xE8D7	0x9AF1	# <CJK>
+0xE8D8	0x9B46	# <CJK>
+0xE8D9	0x9B43	# <CJK>
+0xE8DA	0x9B67	# <CJK>
+0xE8DB	0x9B74	# <CJK>
+0xE8DC	0x9B71	# <CJK>
+0xE8DD	0x9B66	# <CJK>
+0xE8DE	0x9B76	# <CJK>
+0xE8DF	0x9B75	# <CJK>
+0xE8E0	0x9B70	# <CJK>
+0xE8E1	0x9B68	# <CJK>
+0xE8E2	0x9B64	# <CJK>
+0xE8E3	0x9B6C	# <CJK>
+0xE8E4	0x9CFC	# <CJK>
+0xE8E5	0x9CFA	# <CJK>
+0xE8E6	0x9CFD	# <CJK>
+0xE8E7	0x9CFF	# <CJK>
+0xE8E8	0x9CF7	# <CJK>
+0xE8E9	0x9D07	# <CJK>
+0xE8EA	0x9D00	# <CJK>
+0xE8EB	0x9CF9	# <CJK>
+0xE8EC	0x9CFB	# <CJK>
+0xE8ED	0x9D08	# <CJK>
+0xE8EE	0x9D05	# <CJK>
+0xE8EF	0x9D04	# <CJK>
+0xE8F0	0x9E83	# <CJK>
+0xE8F1	0x9ED3	# <CJK>
+0xE8F2	0x9F0F	# <CJK>
+0xE8F3	0x9F10	# <CJK>
+0xE8F4	0x511C	# <CJK>
+0xE8F5	0x5113	# <CJK>
+0xE8F6	0x5117	# <CJK>
+0xE8F7	0x511A	# <CJK>
+0xE8F8	0x5111	# <CJK>
+0xE8F9	0x51DE	# <CJK>
+0xE8FA	0x5334	# <CJK>
+0xE8FB	0x53E1	# <CJK>
+0xE8FC	0x5670	# <CJK>
+0xE8FD	0x5660	# <CJK>
+0xE8FE	0x566E	# <CJK>
+0xE940	0x5673	# <CJK>
+0xE941	0x5666	# <CJK>
+0xE942	0x5663	# <CJK>
+0xE943	0x566D	# <CJK>
+0xE944	0x5672	# <CJK>
+0xE945	0x565E	# <CJK>
+0xE946	0x5677	# <CJK>
+0xE947	0x571C	# <CJK>
+0xE948	0x571B	# <CJK>
+0xE949	0x58C8	# <CJK>
+0xE94A	0x58BD	# <CJK>
+0xE94B	0x58C9	# <CJK>
+0xE94C	0x58BF	# <CJK>
+0xE94D	0x58BA	# <CJK>
+0xE94E	0x58C2	# <CJK>
+0xE94F	0x58BC	# <CJK>
+0xE950	0x58C6	# <CJK>
+0xE951	0x5B17	# <CJK>
+0xE952	0x5B19	# <CJK>
+0xE953	0x5B1B	# <CJK>
+0xE954	0x5B21	# <CJK>
+0xE955	0x5B14	# <CJK>
+0xE956	0x5B13	# <CJK>
+0xE957	0x5B10	# <CJK>
+0xE958	0x5B16	# <CJK>
+0xE959	0x5B28	# <CJK>
+0xE95A	0x5B1A	# <CJK>
+0xE95B	0x5B20	# <CJK>
+0xE95C	0x5B1E	# <CJK>
+0xE95D	0x5BEF	# <CJK>
+0xE95E	0x5DAC	# <CJK>
+0xE95F	0x5DB1	# <CJK>
+0xE960	0x5DA9	# <CJK>
+0xE961	0x5DA7	# <CJK>
+0xE962	0x5DB5	# <CJK>
+0xE963	0x5DB0	# <CJK>
+0xE964	0x5DAE	# <CJK>
+0xE965	0x5DAA	# <CJK>
+0xE966	0x5DA8	# <CJK>
+0xE967	0x5DB2	# <CJK>
+0xE968	0x5DAD	# <CJK>
+0xE969	0x5DAF	# <CJK>
+0xE96A	0x5DB4	# <CJK>
+0xE96B	0x5E67	# <CJK>
+0xE96C	0x5E68	# <CJK>
+0xE96D	0x5E66	# <CJK>
+0xE96E	0x5E6F	# <CJK>
+0xE96F	0x5EE9	# <CJK>
+0xE970	0x5EE7	# <CJK>
+0xE971	0x5EE6	# <CJK>
+0xE972	0x5EE8	# <CJK>
+0xE973	0x5EE5	# <CJK>
+0xE974	0x5F4B	# <CJK>
+0xE975	0x5FBC	# <CJK>
+0xE976	0x619D	# <CJK>
+0xE977	0x61A8	# <CJK>
+0xE978	0x6196	# <CJK>
+0xE979	0x61C5	# <CJK>
+0xE97A	0x61B4	# <CJK>
+0xE97B	0x61C6	# <CJK>
+0xE97C	0x61C1	# <CJK>
+0xE97D	0x61CC	# <CJK>
+0xE97E	0x61BA	# <CJK>
+0xE9A1	0x61BF	# <CJK>
+0xE9A2	0x61B8	# <CJK>
+0xE9A3	0x618C	# <CJK>
+0xE9A4	0x64D7	# <CJK>
+0xE9A5	0x64D6	# <CJK>
+0xE9A6	0x64D0	# <CJK>
+0xE9A7	0x64CF	# <CJK>
+0xE9A8	0x64C9	# <CJK>
+0xE9A9	0x64BD	# <CJK>
+0xE9AA	0x6489	# <CJK>
+0xE9AB	0x64C3	# <CJK>
+0xE9AC	0x64DB	# <CJK>
+0xE9AD	0x64F3	# <CJK>
+0xE9AE	0x64D9	# <CJK>
+0xE9AF	0x6533	# <CJK>
+0xE9B0	0x657F	# <CJK>
+0xE9B1	0x657C	# <CJK>
+0xE9B2	0x65A2	# <CJK>
+0xE9B3	0x66C8	# <CJK>
+0xE9B4	0x66BE	# <CJK>
+0xE9B5	0x66C0	# <CJK>
+0xE9B6	0x66CA	# <CJK>
+0xE9B7	0x66CB	# <CJK>
+0xE9B8	0x66CF	# <CJK>
+0xE9B9	0x66BD	# <CJK>
+0xE9BA	0x66BB	# <CJK>
+0xE9BB	0x66BA	# <CJK>
+0xE9BC	0x66CC	# <CJK>
+0xE9BD	0x6723	# <CJK>
+0xE9BE	0x6A34	# <CJK>
+0xE9BF	0x6A66	# <CJK>
+0xE9C0	0x6A49	# <CJK>
+0xE9C1	0x6A67	# <CJK>
+0xE9C2	0x6A32	# <CJK>
+0xE9C3	0x6A68	# <CJK>
+0xE9C4	0x6A3E	# <CJK>
+0xE9C5	0x6A5D	# <CJK>
+0xE9C6	0x6A6D	# <CJK>
+0xE9C7	0x6A76	# <CJK>
+0xE9C8	0x6A5B	# <CJK>
+0xE9C9	0x6A51	# <CJK>
+0xE9CA	0x6A28	# <CJK>
+0xE9CB	0x6A5A	# <CJK>
+0xE9CC	0x6A3B	# <CJK>
+0xE9CD	0x6A3F	# <CJK>
+0xE9CE	0x6A41	# <CJK>
+0xE9CF	0x6A6A	# <CJK>
+0xE9D0	0x6A64	# <CJK>
+0xE9D1	0x6A50	# <CJK>
+0xE9D2	0x6A4F	# <CJK>
+0xE9D3	0x6A54	# <CJK>
+0xE9D4	0x6A6F	# <CJK>
+0xE9D5	0x6A69	# <CJK>
+0xE9D6	0x6A60	# <CJK>
+0xE9D7	0x6A3C	# <CJK>
+0xE9D8	0x6A5E	# <CJK>
+0xE9D9	0x6A56	# <CJK>
+0xE9DA	0x6A55	# <CJK>
+0xE9DB	0x6A4D	# <CJK>
+0xE9DC	0x6A4E	# <CJK>
+0xE9DD	0x6A46	# <CJK>
+0xE9DE	0x6B55	# <CJK>
+0xE9DF	0x6B54	# <CJK>
+0xE9E0	0x6B56	# <CJK>
+0xE9E1	0x6BA7	# <CJK>
+0xE9E2	0x6BAA	# <CJK>
+0xE9E3	0x6BAB	# <CJK>
+0xE9E4	0x6BC8	# <CJK>
+0xE9E5	0x6BC7	# <CJK>
+0xE9E6	0x6C04	# <CJK>
+0xE9E7	0x6C03	# <CJK>
+0xE9E8	0x6C06	# <CJK>
+0xE9E9	0x6FAD	# <CJK>
+0xE9EA	0x6FCB	# <CJK>
+0xE9EB	0x6FA3	# <CJK>
+0xE9EC	0x6FC7	# <CJK>
+0xE9ED	0x6FBC	# <CJK>
+0xE9EE	0x6FCE	# <CJK>
+0xE9EF	0x6FC8	# <CJK>
+0xE9F0	0x6F5E	# <CJK>
+0xE9F1	0x6FC4	# <CJK>
+0xE9F2	0x6FBD	# <CJK>
+0xE9F3	0x6F9E	# <CJK>
+0xE9F4	0x6FCA	# <CJK>
+0xE9F5	0x6FA8	# <CJK>
+0xE9F6	0x7004	# <CJK>
+0xE9F7	0x6FA5	# <CJK>
+0xE9F8	0x6FAE	# <CJK>
+0xE9F9	0x6FBA	# <CJK>
+0xE9FA	0x6FAC	# <CJK>
+0xE9FB	0x6FAA	# <CJK>
+0xE9FC	0x6FCF	# <CJK>
+0xE9FD	0x6FBF	# <CJK>
+0xE9FE	0x6FB8	# <CJK>
+0xEA40	0x6FA2	# <CJK>
+0xEA41	0x6FC9	# <CJK>
+0xEA42	0x6FAB	# <CJK>
+0xEA43	0x6FCD	# <CJK>
+0xEA44	0x6FAF	# <CJK>
+0xEA45	0x6FB2	# <CJK>
+0xEA46	0x6FB0	# <CJK>
+0xEA47	0x71C5	# <CJK>
+0xEA48	0x71C2	# <CJK>
+0xEA49	0x71BF	# <CJK>
+0xEA4A	0x71B8	# <CJK>
+0xEA4B	0x71D6	# <CJK>
+0xEA4C	0x71C0	# <CJK>
+0xEA4D	0x71C1	# <CJK>
+0xEA4E	0x71CB	# <CJK>
+0xEA4F	0x71D4	# <CJK>
+0xEA50	0x71CA	# <CJK>
+0xEA51	0x71C7	# <CJK>
+0xEA52	0x71CF	# <CJK>
+0xEA53	0x71BD	# <CJK>
+0xEA54	0x71D8	# <CJK>
+0xEA55	0x71BC	# <CJK>
+0xEA56	0x71C6	# <CJK>
+0xEA57	0x71DA	# <CJK>
+0xEA58	0x71DB	# <CJK>
+0xEA59	0x729D	# <CJK>
+0xEA5A	0x729E	# <CJK>
+0xEA5B	0x7369	# <CJK>
+0xEA5C	0x7366	# <CJK>
+0xEA5D	0x7367	# <CJK>
+0xEA5E	0x736C	# <CJK>
+0xEA5F	0x7365	# <CJK>
+0xEA60	0x736B	# <CJK>
+0xEA61	0x736A	# <CJK>
+0xEA62	0x747F	# <CJK>
+0xEA63	0x749A	# <CJK>
+0xEA64	0x74A0	# <CJK>
+0xEA65	0x7494	# <CJK>
+0xEA66	0x7492	# <CJK>
+0xEA67	0x7495	# <CJK>
+0xEA68	0x74A1	# <CJK>
+0xEA69	0x750B	# <CJK>
+0xEA6A	0x7580	# <CJK>
+0xEA6B	0x762F	# <CJK>
+0xEA6C	0x762D	# <CJK>
+0xEA6D	0x7631	# <CJK>
+0xEA6E	0x763D	# <CJK>
+0xEA6F	0x7633	# <CJK>
+0xEA70	0x763C	# <CJK>
+0xEA71	0x7635	# <CJK>
+0xEA72	0x7632	# <CJK>
+0xEA73	0x7630	# <CJK>
+0xEA74	0x76BB	# <CJK>
+0xEA75	0x76E6	# <CJK>
+0xEA76	0x779A	# <CJK>
+0xEA77	0x779D	# <CJK>
+0xEA78	0x77A1	# <CJK>
+0xEA79	0x779C	# <CJK>
+0xEA7A	0x779B	# <CJK>
+0xEA7B	0x77A2	# <CJK>
+0xEA7C	0x77A3	# <CJK>
+0xEA7D	0x7795	# <CJK>
+0xEA7E	0x7799	# <CJK>
+0xEAA1	0x7797	# <CJK>
+0xEAA2	0x78DD	# <CJK>
+0xEAA3	0x78E9	# <CJK>
+0xEAA4	0x78E5	# <CJK>
+0xEAA5	0x78EA	# <CJK>
+0xEAA6	0x78DE	# <CJK>
+0xEAA7	0x78E3	# <CJK>
+0xEAA8	0x78DB	# <CJK>
+0xEAA9	0x78E1	# <CJK>
+0xEAAA	0x78E2	# <CJK>
+0xEAAB	0x78ED	# <CJK>
+0xEAAC	0x78DF	# <CJK>
+0xEAAD	0x78E0	# <CJK>
+0xEAAE	0x79A4	# <CJK>
+0xEAAF	0x7A44	# <CJK>
+0xEAB0	0x7A48	# <CJK>
+0xEAB1	0x7A47	# <CJK>
+0xEAB2	0x7AB6	# <CJK>
+0xEAB3	0x7AB8	# <CJK>
+0xEAB4	0x7AB5	# <CJK>
+0xEAB5	0x7AB1	# <CJK>
+0xEAB6	0x7AB7	# <CJK>
+0xEAB7	0x7BDE	# <CJK>
+0xEAB8	0x7BE3	# <CJK>
+0xEAB9	0x7BE7	# <CJK>
+0xEABA	0x7BDD	# <CJK>
+0xEABB	0x7BD5	# <CJK>
+0xEABC	0x7BE5	# <CJK>
+0xEABD	0x7BDA	# <CJK>
+0xEABE	0x7BE8	# <CJK>
+0xEABF	0x7BF9	# <CJK>
+0xEAC0	0x7BD4	# <CJK>
+0xEAC1	0x7BEA	# <CJK>
+0xEAC2	0x7BE2	# <CJK>
+0xEAC3	0x7BDC	# <CJK>
+0xEAC4	0x7BEB	# <CJK>
+0xEAC5	0x7BD8	# <CJK>
+0xEAC6	0x7BDF	# <CJK>
+0xEAC7	0x7CD2	# <CJK>
+0xEAC8	0x7CD4	# <CJK>
+0xEAC9	0x7CD7	# <CJK>
+0xEACA	0x7CD0	# <CJK>
+0xEACB	0x7CD1	# <CJK>
+0xEACC	0x7E12	# <CJK>
+0xEACD	0x7E21	# <CJK>
+0xEACE	0x7E17	# <CJK>
+0xEACF	0x7E0C	# <CJK>
+0xEAD0	0x7E1F	# <CJK>
+0xEAD1	0x7E20	# <CJK>
+0xEAD2	0x7E13	# <CJK>
+0xEAD3	0x7E0E	# <CJK>
+0xEAD4	0x7E1C	# <CJK>
+0xEAD5	0x7E15	# <CJK>
+0xEAD6	0x7E1A	# <CJK>
+0xEAD7	0x7E22	# <CJK>
+0xEAD8	0x7E0B	# <CJK>
+0xEAD9	0x7E0F	# <CJK>
+0xEADA	0x7E16	# <CJK>
+0xEADB	0x7E0D	# <CJK>
+0xEADC	0x7E14	# <CJK>
+0xEADD	0x7E25	# <CJK>
+0xEADE	0x7E24	# <CJK>
+0xEADF	0x7F43	# <CJK>
+0xEAE0	0x7F7B	# <CJK>
+0xEAE1	0x7F7C	# <CJK>
+0xEAE2	0x7F7A	# <CJK>
+0xEAE3	0x7FB1	# <CJK>
+0xEAE4	0x7FEF	# <CJK>
+0xEAE5	0x802A	# <CJK>
+0xEAE6	0x8029	# <CJK>
+0xEAE7	0x806C	# <CJK>
+0xEAE8	0x81B1	# <CJK>
+0xEAE9	0x81A6	# <CJK>
+0xEAEA	0x81AE	# <CJK>
+0xEAEB	0x81B9	# <CJK>
+0xEAEC	0x81B5	# <CJK>
+0xEAED	0x81AB	# <CJK>
+0xEAEE	0x81B0	# <CJK>
+0xEAEF	0x81AC	# <CJK>
+0xEAF0	0x81B4	# <CJK>
+0xEAF1	0x81B2	# <CJK>
+0xEAF2	0x81B7	# <CJK>
+0xEAF3	0x81A7	# <CJK>
+0xEAF4	0x81F2	# <CJK>
+0xEAF5	0x8255	# <CJK>
+0xEAF6	0x8256	# <CJK>
+0xEAF7	0x8257	# <CJK>
+0xEAF8	0x8556	# <CJK>
+0xEAF9	0x8545	# <CJK>
+0xEAFA	0x856B	# <CJK>
+0xEAFB	0x854D	# <CJK>
+0xEAFC	0x8553	# <CJK>
+0xEAFD	0x8561	# <CJK>
+0xEAFE	0x8558	# <CJK>
+0xEB40	0x8540	# <CJK>
+0xEB41	0x8546	# <CJK>
+0xEB42	0x8564	# <CJK>
+0xEB43	0x8541	# <CJK>
+0xEB44	0x8562	# <CJK>
+0xEB45	0x8544	# <CJK>
+0xEB46	0x8551	# <CJK>
+0xEB47	0x8547	# <CJK>
+0xEB48	0x8563	# <CJK>
+0xEB49	0x853E	# <CJK>
+0xEB4A	0x855B	# <CJK>
+0xEB4B	0x8571	# <CJK>
+0xEB4C	0x854E	# <CJK>
+0xEB4D	0x856E	# <CJK>
+0xEB4E	0x8575	# <CJK>
+0xEB4F	0x8555	# <CJK>
+0xEB50	0x8567	# <CJK>
+0xEB51	0x8560	# <CJK>
+0xEB52	0x858C	# <CJK>
+0xEB53	0x8566	# <CJK>
+0xEB54	0x855D	# <CJK>
+0xEB55	0x8554	# <CJK>
+0xEB56	0x8565	# <CJK>
+0xEB57	0x856C	# <CJK>
+0xEB58	0x8663	# <CJK>
+0xEB59	0x8665	# <CJK>
+0xEB5A	0x8664	# <CJK>
+0xEB5B	0x879B	# <CJK>
+0xEB5C	0x878F	# <CJK>
+0xEB5D	0x8797	# <CJK>
+0xEB5E	0x8793	# <CJK>
+0xEB5F	0x8792	# <CJK>
+0xEB60	0x8788	# <CJK>
+0xEB61	0x8781	# <CJK>
+0xEB62	0x8796	# <CJK>
+0xEB63	0x8798	# <CJK>
+0xEB64	0x8779	# <CJK>
+0xEB65	0x8787	# <CJK>
+0xEB66	0x87A3	# <CJK>
+0xEB67	0x8785	# <CJK>
+0xEB68	0x8790	# <CJK>
+0xEB69	0x8791	# <CJK>
+0xEB6A	0x879D	# <CJK>
+0xEB6B	0x8784	# <CJK>
+0xEB6C	0x8794	# <CJK>
+0xEB6D	0x879C	# <CJK>
+0xEB6E	0x879A	# <CJK>
+0xEB6F	0x8789	# <CJK>
+0xEB70	0x891E	# <CJK>
+0xEB71	0x8926	# <CJK>
+0xEB72	0x8930	# <CJK>
+0xEB73	0x892D	# <CJK>
+0xEB74	0x892E	# <CJK>
+0xEB75	0x8927	# <CJK>
+0xEB76	0x8931	# <CJK>
+0xEB77	0x8922	# <CJK>
+0xEB78	0x8929	# <CJK>
+0xEB79	0x8923	# <CJK>
+0xEB7A	0x892F	# <CJK>
+0xEB7B	0x892C	# <CJK>
+0xEB7C	0x891F	# <CJK>
+0xEB7D	0x89F1	# <CJK>
+0xEB7E	0x8AE0	# <CJK>
+0xEBA1	0x8AE2	# <CJK>
+0xEBA2	0x8AF2	# <CJK>
+0xEBA3	0x8AF4	# <CJK>
+0xEBA4	0x8AF5	# <CJK>
+0xEBA5	0x8ADD	# <CJK>
+0xEBA6	0x8B14	# <CJK>
+0xEBA7	0x8AE4	# <CJK>
+0xEBA8	0x8ADF	# <CJK>
+0xEBA9	0x8AF0	# <CJK>
+0xEBAA	0x8AC8	# <CJK>
+0xEBAB	0x8ADE	# <CJK>
+0xEBAC	0x8AE1	# <CJK>
+0xEBAD	0x8AE8	# <CJK>
+0xEBAE	0x8AFF	# <CJK>
+0xEBAF	0x8AEF	# <CJK>
+0xEBB0	0x8AFB	# <CJK>
+0xEBB1	0x8C91	# <CJK>
+0xEBB2	0x8C92	# <CJK>
+0xEBB3	0x8C90	# <CJK>
+0xEBB4	0x8CF5	# <CJK>
+0xEBB5	0x8CEE	# <CJK>
+0xEBB6	0x8CF1	# <CJK>
+0xEBB7	0x8CF0	# <CJK>
+0xEBB8	0x8CF3	# <CJK>
+0xEBB9	0x8D6C	# <CJK>
+0xEBBA	0x8D6E	# <CJK>
+0xEBBB	0x8DA5	# <CJK>
+0xEBBC	0x8DA7	# <CJK>
+0xEBBD	0x8E33	# <CJK>
+0xEBBE	0x8E3E	# <CJK>
+0xEBBF	0x8E38	# <CJK>
+0xEBC0	0x8E40	# <CJK>
+0xEBC1	0x8E45	# <CJK>
+0xEBC2	0x8E36	# <CJK>
+0xEBC3	0x8E3C	# <CJK>
+0xEBC4	0x8E3D	# <CJK>
+0xEBC5	0x8E41	# <CJK>
+0xEBC6	0x8E30	# <CJK>
+0xEBC7	0x8E3F	# <CJK>
+0xEBC8	0x8EBD	# <CJK>
+0xEBC9	0x8F36	# <CJK>
+0xEBCA	0x8F2E	# <CJK>
+0xEBCB	0x8F35	# <CJK>
+0xEBCC	0x8F32	# <CJK>
+0xEBCD	0x8F39	# <CJK>
+0xEBCE	0x8F37	# <CJK>
+0xEBCF	0x8F34	# <CJK>
+0xEBD0	0x9076	# <CJK>
+0xEBD1	0x9079	# <CJK>
+0xEBD2	0x907B	# <CJK>
+0xEBD3	0x9086	# <CJK>
+0xEBD4	0x90FA	# <CJK>
+0xEBD5	0x9133	# <CJK>
+0xEBD6	0x9135	# <CJK>
+0xEBD7	0x9136	# <CJK>
+0xEBD8	0x9193	# <CJK>
+0xEBD9	0x9190	# <CJK>
+0xEBDA	0x9191	# <CJK>
+0xEBDB	0x918D	# <CJK>
+0xEBDC	0x918F	# <CJK>
+0xEBDD	0x9327	# <CJK>
+0xEBDE	0x931E	# <CJK>
+0xEBDF	0x9308	# <CJK>
+0xEBE0	0x931F	# <CJK>
+0xEBE1	0x9306	# <CJK>
+0xEBE2	0x930F	# <CJK>
+0xEBE3	0x937A	# <CJK>
+0xEBE4	0x9338	# <CJK>
+0xEBE5	0x933C	# <CJK>
+0xEBE6	0x931B	# <CJK>
+0xEBE7	0x9323	# <CJK>
+0xEBE8	0x9312	# <CJK>
+0xEBE9	0x9301	# <CJK>
+0xEBEA	0x9346	# <CJK>
+0xEBEB	0x932D	# <CJK>
+0xEBEC	0x930E	# <CJK>
+0xEBED	0x930D	# <CJK>
+0xEBEE	0x92CB	# <CJK>
+0xEBEF	0x931D	# <CJK>
+0xEBF0	0x92FA	# <CJK>
+0xEBF1	0x9325	# <CJK>
+0xEBF2	0x9313	# <CJK>
+0xEBF3	0x92F9	# <CJK>
+0xEBF4	0x92F7	# <CJK>
+0xEBF5	0x9334	# <CJK>
+0xEBF6	0x9302	# <CJK>
+0xEBF7	0x9324	# <CJK>
+0xEBF8	0x92FF	# <CJK>
+0xEBF9	0x9329	# <CJK>
+0xEBFA	0x9339	# <CJK>
+0xEBFB	0x9335	# <CJK>
+0xEBFC	0x932A	# <CJK>
+0xEBFD	0x9314	# <CJK>
+0xEBFE	0x930C	# <CJK>
+0xEC40	0x930B	# <CJK>
+0xEC41	0x92FE	# <CJK>
+0xEC42	0x9309	# <CJK>
+0xEC43	0x9300	# <CJK>
+0xEC44	0x92FB	# <CJK>
+0xEC45	0x9316	# <CJK>
+0xEC46	0x95BC	# <CJK>
+0xEC47	0x95CD	# <CJK>
+0xEC48	0x95BE	# <CJK>
+0xEC49	0x95B9	# <CJK>
+0xEC4A	0x95BA	# <CJK>
+0xEC4B	0x95B6	# <CJK>
+0xEC4C	0x95BF	# <CJK>
+0xEC4D	0x95B5	# <CJK>
+0xEC4E	0x95BD	# <CJK>
+0xEC4F	0x96A9	# <CJK>
+0xEC50	0x96D4	# <CJK>
+0xEC51	0x970B	# <CJK>
+0xEC52	0x9712	# <CJK>
+0xEC53	0x9710	# <CJK>
+0xEC54	0x9799	# <CJK>
+0xEC55	0x9797	# <CJK>
+0xEC56	0x9794	# <CJK>
+0xEC57	0x97F0	# <CJK>
+0xEC58	0x97F8	# <CJK>
+0xEC59	0x9835	# <CJK>
+0xEC5A	0x982F	# <CJK>
+0xEC5B	0x9832	# <CJK>
+0xEC5C	0x9924	# <CJK>
+0xEC5D	0x991F	# <CJK>
+0xEC5E	0x9927	# <CJK>
+0xEC5F	0x9929	# <CJK>
+0xEC60	0x999E	# <CJK>
+0xEC61	0x99EE	# <CJK>
+0xEC62	0x99EC	# <CJK>
+0xEC63	0x99E5	# <CJK>
+0xEC64	0x99E4	# <CJK>
+0xEC65	0x99F0	# <CJK>
+0xEC66	0x99E3	# <CJK>
+0xEC67	0x99EA	# <CJK>
+0xEC68	0x99E9	# <CJK>
+0xEC69	0x99E7	# <CJK>
+0xEC6A	0x9AB9	# <CJK>
+0xEC6B	0x9ABF	# <CJK>
+0xEC6C	0x9AB4	# <CJK>
+0xEC6D	0x9ABB	# <CJK>
+0xEC6E	0x9AF6	# <CJK>
+0xEC6F	0x9AFA	# <CJK>
+0xEC70	0x9AF9	# <CJK>
+0xEC71	0x9AF7	# <CJK>
+0xEC72	0x9B33	# <CJK>
+0xEC73	0x9B80	# <CJK>
+0xEC74	0x9B85	# <CJK>
+0xEC75	0x9B87	# <CJK>
+0xEC76	0x9B7C	# <CJK>
+0xEC77	0x9B7E	# <CJK>
+0xEC78	0x9B7B	# <CJK>
+0xEC79	0x9B82	# <CJK>
+0xEC7A	0x9B93	# <CJK>
+0xEC7B	0x9B92	# <CJK>
+0xEC7C	0x9B90	# <CJK>
+0xEC7D	0x9B7A	# <CJK>
+0xEC7E	0x9B95	# <CJK>
+0xECA1	0x9B7D	# <CJK>
+0xECA2	0x9B88	# <CJK>
+0xECA3	0x9D25	# <CJK>
+0xECA4	0x9D17	# <CJK>
+0xECA5	0x9D20	# <CJK>
+0xECA6	0x9D1E	# <CJK>
+0xECA7	0x9D14	# <CJK>
+0xECA8	0x9D29	# <CJK>
+0xECA9	0x9D1D	# <CJK>
+0xECAA	0x9D18	# <CJK>
+0xECAB	0x9D22	# <CJK>
+0xECAC	0x9D10	# <CJK>
+0xECAD	0x9D19	# <CJK>
+0xECAE	0x9D1F	# <CJK>
+0xECAF	0x9E88	# <CJK>
+0xECB0	0x9E86	# <CJK>
+0xECB1	0x9E87	# <CJK>
+0xECB2	0x9EAE	# <CJK>
+0xECB3	0x9EAD	# <CJK>
+0xECB4	0x9ED5	# <CJK>
+0xECB5	0x9ED6	# <CJK>
+0xECB6	0x9EFA	# <CJK>
+0xECB7	0x9F12	# <CJK>
+0xECB8	0x9F3D	# <CJK>
+0xECB9	0x5126	# <CJK>
+0xECBA	0x5125	# <CJK>
+0xECBB	0x5122	# <CJK>
+0xECBC	0x5124	# <CJK>
+0xECBD	0x5120	# <CJK>
+0xECBE	0x5129	# <CJK>
+0xECBF	0x52F4	# <CJK>
+0xECC0	0x5693	# <CJK>
+0xECC1	0x568C	# <CJK>
+0xECC2	0x568D	# <CJK>
+0xECC3	0x5686	# <CJK>
+0xECC4	0x5684	# <CJK>
+0xECC5	0x5683	# <CJK>
+0xECC6	0x567E	# <CJK>
+0xECC7	0x5682	# <CJK>
+0xECC8	0x567F	# <CJK>
+0xECC9	0x5681	# <CJK>
+0xECCA	0x58D6	# <CJK>
+0xECCB	0x58D4	# <CJK>
+0xECCC	0x58CF	# <CJK>
+0xECCD	0x58D2	# <CJK>
+0xECCE	0x5B2D	# <CJK>
+0xECCF	0x5B25	# <CJK>
+0xECD0	0x5B32	# <CJK>
+0xECD1	0x5B23	# <CJK>
+0xECD2	0x5B2C	# <CJK>
+0xECD3	0x5B27	# <CJK>
+0xECD4	0x5B26	# <CJK>
+0xECD5	0x5B2F	# <CJK>
+0xECD6	0x5B2E	# <CJK>
+0xECD7	0x5B7B	# <CJK>
+0xECD8	0x5BF1	# <CJK>
+0xECD9	0x5BF2	# <CJK>
+0xECDA	0x5DB7	# <CJK>
+0xECDB	0x5E6C	# <CJK>
+0xECDC	0x5E6A	# <CJK>
+0xECDD	0x5FBE	# <CJK>
+0xECDE	0x5FBB	# <CJK>
+0xECDF	0x61C3	# <CJK>
+0xECE0	0x61B5	# <CJK>
+0xECE1	0x61BC	# <CJK>
+0xECE2	0x61E7	# <CJK>
+0xECE3	0x61E0	# <CJK>
+0xECE4	0x61E5	# <CJK>
+0xECE5	0x61E4	# <CJK>
+0xECE6	0x61E8	# <CJK>
+0xECE7	0x61DE	# <CJK>
+0xECE8	0x64EF	# <CJK>
+0xECE9	0x64E9	# <CJK>
+0xECEA	0x64E3	# <CJK>
+0xECEB	0x64EB	# <CJK>
+0xECEC	0x64E4	# <CJK>
+0xECED	0x64E8	# <CJK>
+0xECEE	0x6581	# <CJK>
+0xECEF	0x6580	# <CJK>
+0xECF0	0x65B6	# <CJK>
+0xECF1	0x65DA	# <CJK>
+0xECF2	0x66D2	# <CJK>
+0xECF3	0x6A8D	# <CJK>
+0xECF4	0x6A96	# <CJK>
+0xECF5	0x6A81	# <CJK>
+0xECF6	0x6AA5	# <CJK>
+0xECF7	0x6A89	# <CJK>
+0xECF8	0x6A9F	# <CJK>
+0xECF9	0x6A9B	# <CJK>
+0xECFA	0x6AA1	# <CJK>
+0xECFB	0x6A9E	# <CJK>
+0xECFC	0x6A87	# <CJK>
+0xECFD	0x6A93	# <CJK>
+0xECFE	0x6A8E	# <CJK>
+0xED40	0x6A95	# <CJK>
+0xED41	0x6A83	# <CJK>
+0xED42	0x6AA8	# <CJK>
+0xED43	0x6AA4	# <CJK>
+0xED44	0x6A91	# <CJK>
+0xED45	0x6A7F	# <CJK>
+0xED46	0x6AA6	# <CJK>
+0xED47	0x6A9A	# <CJK>
+0xED48	0x6A85	# <CJK>
+0xED49	0x6A8C	# <CJK>
+0xED4A	0x6A92	# <CJK>
+0xED4B	0x6B5B	# <CJK>
+0xED4C	0x6BAD	# <CJK>
+0xED4D	0x6C09	# <CJK>
+0xED4E	0x6FCC	# <CJK>
+0xED4F	0x6FA9	# <CJK>
+0xED50	0x6FF4	# <CJK>
+0xED51	0x6FD4	# <CJK>
+0xED52	0x6FE3	# <CJK>
+0xED53	0x6FDC	# <CJK>
+0xED54	0x6FED	# <CJK>
+0xED55	0x6FE7	# <CJK>
+0xED56	0x6FE6	# <CJK>
+0xED57	0x6FDE	# <CJK>
+0xED58	0x6FF2	# <CJK>
+0xED59	0x6FDD	# <CJK>
+0xED5A	0x6FE2	# <CJK>
+0xED5B	0x6FE8	# <CJK>
+0xED5C	0x71E1	# <CJK>
+0xED5D	0x71F1	# <CJK>
+0xED5E	0x71E8	# <CJK>
+0xED5F	0x71F2	# <CJK>
+0xED60	0x71E4	# <CJK>
+0xED61	0x71F0	# <CJK>
+0xED62	0x71E2	# <CJK>
+0xED63	0x7373	# <CJK>
+0xED64	0x736E	# <CJK>
+0xED65	0x736F	# <CJK>
+0xED66	0x7497	# <CJK>
+0xED67	0x74B2	# <CJK>
+0xED68	0x74AB	# <CJK>
+0xED69	0x7490	# <CJK>
+0xED6A	0x74AA	# <CJK>
+0xED6B	0x74AD	# <CJK>
+0xED6C	0x74B1	# <CJK>
+0xED6D	0x74A5	# <CJK>
+0xED6E	0x74AF	# <CJK>
+0xED6F	0x7510	# <CJK>
+0xED70	0x7511	# <CJK>
+0xED71	0x7512	# <CJK>
+0xED72	0x750F	# <CJK>
+0xED73	0x7584	# <CJK>
+0xED74	0x7643	# <CJK>
+0xED75	0x7648	# <CJK>
+0xED76	0x7649	# <CJK>
+0xED77	0x7647	# <CJK>
+0xED78	0x76A4	# <CJK>
+0xED79	0x76E9	# <CJK>
+0xED7A	0x77B5	# <CJK>
+0xED7B	0x77AB	# <CJK>
+0xED7C	0x77B2	# <CJK>
+0xED7D	0x77B7	# <CJK>
+0xED7E	0x77B6	# <CJK>
+0xEDA1	0x77B4	# <CJK>
+0xEDA2	0x77B1	# <CJK>
+0xEDA3	0x77A8	# <CJK>
+0xEDA4	0x77F0	# <CJK>
+0xEDA5	0x78F3	# <CJK>
+0xEDA6	0x78FD	# <CJK>
+0xEDA7	0x7902	# <CJK>
+0xEDA8	0x78FB	# <CJK>
+0xEDA9	0x78FC	# <CJK>
+0xEDAA	0x78F2	# <CJK>
+0xEDAB	0x7905	# <CJK>
+0xEDAC	0x78F9	# <CJK>
+0xEDAD	0x78FE	# <CJK>
+0xEDAE	0x7904	# <CJK>
+0xEDAF	0x79AB	# <CJK>
+0xEDB0	0x79A8	# <CJK>
+0xEDB1	0x7A5C	# <CJK>
+0xEDB2	0x7A5B	# <CJK>
+0xEDB3	0x7A56	# <CJK>
+0xEDB4	0x7A58	# <CJK>
+0xEDB5	0x7A54	# <CJK>
+0xEDB6	0x7A5A	# <CJK>
+0xEDB7	0x7ABE	# <CJK>
+0xEDB8	0x7AC0	# <CJK>
+0xEDB9	0x7AC1	# <CJK>
+0xEDBA	0x7C05	# <CJK>
+0xEDBB	0x7C0F	# <CJK>
+0xEDBC	0x7BF2	# <CJK>
+0xEDBD	0x7C00	# <CJK>
+0xEDBE	0x7BFF	# <CJK>
+0xEDBF	0x7BFB	# <CJK>
+0xEDC0	0x7C0E	# <CJK>
+0xEDC1	0x7BF4	# <CJK>
+0xEDC2	0x7C0B	# <CJK>
+0xEDC3	0x7BF3	# <CJK>
+0xEDC4	0x7C02	# <CJK>
+0xEDC5	0x7C09	# <CJK>
+0xEDC6	0x7C03	# <CJK>
+0xEDC7	0x7C01	# <CJK>
+0xEDC8	0x7BF8	# <CJK>
+0xEDC9	0x7BFD	# <CJK>
+0xEDCA	0x7C06	# <CJK>
+0xEDCB	0x7BF0	# <CJK>
+0xEDCC	0x7BF1	# <CJK>
+0xEDCD	0x7C10	# <CJK>
+0xEDCE	0x7C0A	# <CJK>
+0xEDCF	0x7CE8	# <CJK>
+0xEDD0	0x7E2D	# <CJK>
+0xEDD1	0x7E3C	# <CJK>
+0xEDD2	0x7E42	# <CJK>
+0xEDD3	0x7E33	# <CJK>
+0xEDD4	0x9848	# <CJK>
+0xEDD5	0x7E38	# <CJK>
+0xEDD6	0x7E2A	# <CJK>
+0xEDD7	0x7E49	# <CJK>
+0xEDD8	0x7E40	# <CJK>
+0xEDD9	0x7E47	# <CJK>
+0xEDDA	0x7E29	# <CJK>
+0xEDDB	0x7E4C	# <CJK>
+0xEDDC	0x7E30	# <CJK>
+0xEDDD	0x7E3B	# <CJK>
+0xEDDE	0x7E36	# <CJK>
+0xEDDF	0x7E44	# <CJK>
+0xEDE0	0x7E3A	# <CJK>
+0xEDE1	0x7F45	# <CJK>
+0xEDE2	0x7F7F	# <CJK>
+0xEDE3	0x7F7E	# <CJK>
+0xEDE4	0x7F7D	# <CJK>
+0xEDE5	0x7FF4	# <CJK>
+0xEDE6	0x7FF2	# <CJK>
+0xEDE7	0x802C	# <CJK>
+0xEDE8	0x81BB	# <CJK>
+0xEDE9	0x81C4	# <CJK>
+0xEDEA	0x81CC	# <CJK>
+0xEDEB	0x81CA	# <CJK>
+0xEDEC	0x81C5	# <CJK>
+0xEDED	0x81C7	# <CJK>
+0xEDEE	0x81BC	# <CJK>
+0xEDEF	0x81E9	# <CJK>
+0xEDF0	0x825B	# <CJK>
+0xEDF1	0x825A	# <CJK>
+0xEDF2	0x825C	# <CJK>
+0xEDF3	0x8583	# <CJK>
+0xEDF4	0x8580	# <CJK>
+0xEDF5	0x858F	# <CJK>
+0xEDF6	0x85A7	# <CJK>
+0xEDF7	0x8595	# <CJK>
+0xEDF8	0x85A0	# <CJK>
+0xEDF9	0x858B	# <CJK>
+0xEDFA	0x85A3	# <CJK>
+0xEDFB	0x857B	# <CJK>
+0xEDFC	0x85A4	# <CJK>
+0xEDFD	0x859A	# <CJK>
+0xEDFE	0x859E	# <CJK>
+0xEE40	0x8577	# <CJK>
+0xEE41	0x857C	# <CJK>
+0xEE42	0x8589	# <CJK>
+0xEE43	0x85A1	# <CJK>
+0xEE44	0x857A	# <CJK>
+0xEE45	0x8578	# <CJK>
+0xEE46	0x8557	# <CJK>
+0xEE47	0x858E	# <CJK>
+0xEE48	0x8596	# <CJK>
+0xEE49	0x8586	# <CJK>
+0xEE4A	0x858D	# <CJK>
+0xEE4B	0x8599	# <CJK>
+0xEE4C	0x859D	# <CJK>
+0xEE4D	0x8581	# <CJK>
+0xEE4E	0x85A2	# <CJK>
+0xEE4F	0x8582	# <CJK>
+0xEE50	0x8588	# <CJK>
+0xEE51	0x8585	# <CJK>
+0xEE52	0x8579	# <CJK>
+0xEE53	0x8576	# <CJK>
+0xEE54	0x8598	# <CJK>
+0xEE55	0x8590	# <CJK>
+0xEE56	0x859F	# <CJK>
+0xEE57	0x8668	# <CJK>
+0xEE58	0x87BE	# <CJK>
+0xEE59	0x87AA	# <CJK>
+0xEE5A	0x87AD	# <CJK>
+0xEE5B	0x87C5	# <CJK>
+0xEE5C	0x87B0	# <CJK>
+0xEE5D	0x87AC	# <CJK>
+0xEE5E	0x87B9	# <CJK>
+0xEE5F	0x87B5	# <CJK>
+0xEE60	0x87BC	# <CJK>
+0xEE61	0x87AE	# <CJK>
+0xEE62	0x87C9	# <CJK>
+0xEE63	0x87C3	# <CJK>
+0xEE64	0x87C2	# <CJK>
+0xEE65	0x87CC	# <CJK>
+0xEE66	0x87B7	# <CJK>
+0xEE67	0x87AF	# <CJK>
+0xEE68	0x87C4	# <CJK>
+0xEE69	0x87CA	# <CJK>
+0xEE6A	0x87B4	# <CJK>
+0xEE6B	0x87B6	# <CJK>
+0xEE6C	0x87BF	# <CJK>
+0xEE6D	0x87B8	# <CJK>
+0xEE6E	0x87BD	# <CJK>
+0xEE6F	0x87DE	# <CJK>
+0xEE70	0x87B2	# <CJK>
+0xEE71	0x8935	# <CJK>
+0xEE72	0x8933	# <CJK>
+0xEE73	0x893C	# <CJK>
+0xEE74	0x893E	# <CJK>
+0xEE75	0x8941	# <CJK>
+0xEE76	0x8952	# <CJK>
+0xEE77	0x8937	# <CJK>
+0xEE78	0x8942	# <CJK>
+0xEE79	0x89AD	# <CJK>
+0xEE7A	0x89AF	# <CJK>
+0xEE7B	0x89AE	# <CJK>
+0xEE7C	0x89F2	# <CJK>
+0xEE7D	0x89F3	# <CJK>
+0xEE7E	0x8B1E	# <CJK>
+0xEEA1	0x8B18	# <CJK>
+0xEEA2	0x8B16	# <CJK>
+0xEEA3	0x8B11	# <CJK>
+0xEEA4	0x8B05	# <CJK>
+0xEEA5	0x8B0B	# <CJK>
+0xEEA6	0x8B22	# <CJK>
+0xEEA7	0x8B0F	# <CJK>
+0xEEA8	0x8B12	# <CJK>
+0xEEA9	0x8B15	# <CJK>
+0xEEAA	0x8B07	# <CJK>
+0xEEAB	0x8B0D	# <CJK>
+0xEEAC	0x8B08	# <CJK>
+0xEEAD	0x8B06	# <CJK>
+0xEEAE	0x8B1C	# <CJK>
+0xEEAF	0x8B13	# <CJK>
+0xEEB0	0x8B1A	# <CJK>
+0xEEB1	0x8C4F	# <CJK>
+0xEEB2	0x8C70	# <CJK>
+0xEEB3	0x8C72	# <CJK>
+0xEEB4	0x8C71	# <CJK>
+0xEEB5	0x8C6F	# <CJK>
+0xEEB6	0x8C95	# <CJK>
+0xEEB7	0x8C94	# <CJK>
+0xEEB8	0x8CF9	# <CJK>
+0xEEB9	0x8D6F	# <CJK>
+0xEEBA	0x8E4E	# <CJK>
+0xEEBB	0x8E4D	# <CJK>
+0xEEBC	0x8E53	# <CJK>
+0xEEBD	0x8E50	# <CJK>
+0xEEBE	0x8E4C	# <CJK>
+0xEEBF	0x8E47	# <CJK>
+0xEEC0	0x8F43	# <CJK>
+0xEEC1	0x8F40	# <CJK>
+0xEEC2	0x9085	# <CJK>
+0xEEC3	0x907E	# <CJK>
+0xEEC4	0x9138	# <CJK>
+0xEEC5	0x919A	# <CJK>
+0xEEC6	0x91A2	# <CJK>
+0xEEC7	0x919B	# <CJK>
+0xEEC8	0x9199	# <CJK>
+0xEEC9	0x919F	# <CJK>
+0xEECA	0x91A1	# <CJK>
+0xEECB	0x919D	# <CJK>
+0xEECC	0x91A0	# <CJK>
+0xEECD	0x93A1	# <CJK>
+0xEECE	0x9383	# <CJK>
+0xEECF	0x93AF	# <CJK>
+0xEED0	0x9364	# <CJK>
+0xEED1	0x9356	# <CJK>
+0xEED2	0x9347	# <CJK>
+0xEED3	0x937C	# <CJK>
+0xEED4	0x9358	# <CJK>
+0xEED5	0x935C	# <CJK>
+0xEED6	0x9376	# <CJK>
+0xEED7	0x9349	# <CJK>
+0xEED8	0x9350	# <CJK>
+0xEED9	0x9351	# <CJK>
+0xEEDA	0x9360	# <CJK>
+0xEEDB	0x936D	# <CJK>
+0xEEDC	0x938F	# <CJK>
+0xEEDD	0x934C	# <CJK>
+0xEEDE	0x936A	# <CJK>
+0xEEDF	0x9379	# <CJK>
+0xEEE0	0x9357	# <CJK>
+0xEEE1	0x9355	# <CJK>
+0xEEE2	0x9352	# <CJK>
+0xEEE3	0x934F	# <CJK>
+0xEEE4	0x9371	# <CJK>
+0xEEE5	0x9377	# <CJK>
+0xEEE6	0x937B	# <CJK>
+0xEEE7	0x9361	# <CJK>
+0xEEE8	0x935E	# <CJK>
+0xEEE9	0x9363	# <CJK>
+0xEEEA	0x9367	# <CJK>
+0xEEEB	0x9380	# <CJK>
+0xEEEC	0x934E	# <CJK>
+0xEEED	0x9359	# <CJK>
+0xEEEE	0x95C7	# <CJK>
+0xEEEF	0x95C0	# <CJK>
+0xEEF0	0x95C9	# <CJK>
+0xEEF1	0x95C3	# <CJK>
+0xEEF2	0x95C5	# <CJK>
+0xEEF3	0x95B7	# <CJK>
+0xEEF4	0x96AE	# <CJK>
+0xEEF5	0x96B0	# <CJK>
+0xEEF6	0x96AC	# <CJK>
+0xEEF7	0x9720	# <CJK>
+0xEEF8	0x971F	# <CJK>
+0xEEF9	0x9718	# <CJK>
+0xEEFA	0x971D	# <CJK>
+0xEEFB	0x9719	# <CJK>
+0xEEFC	0x979A	# <CJK>
+0xEEFD	0x97A1	# <CJK>
+0xEEFE	0x979C	# <CJK>
+0xEF40	0x979E	# <CJK>
+0xEF41	0x979D	# <CJK>
+0xEF42	0x97D5	# <CJK>
+0xEF43	0x97D4	# <CJK>
+0xEF44	0x97F1	# <CJK>
+0xEF45	0x9841	# <CJK>
+0xEF46	0x9844	# <CJK>
+0xEF47	0x984A	# <CJK>
+0xEF48	0x9849	# <CJK>
+0xEF49	0x9845	# <CJK>
+0xEF4A	0x9843	# <CJK>
+0xEF4B	0x9925	# <CJK>
+0xEF4C	0x992B	# <CJK>
+0xEF4D	0x992C	# <CJK>
+0xEF4E	0x992A	# <CJK>
+0xEF4F	0x9933	# <CJK>
+0xEF50	0x9932	# <CJK>
+0xEF51	0x992F	# <CJK>
+0xEF52	0x992D	# <CJK>
+0xEF53	0x9931	# <CJK>
+0xEF54	0x9930	# <CJK>
+0xEF55	0x9998	# <CJK>
+0xEF56	0x99A3	# <CJK>
+0xEF57	0x99A1	# <CJK>
+0xEF58	0x9A02	# <CJK>
+0xEF59	0x99FA	# <CJK>
+0xEF5A	0x99F4	# <CJK>
+0xEF5B	0x99F7	# <CJK>
+0xEF5C	0x99F9	# <CJK>
+0xEF5D	0x99F8	# <CJK>
+0xEF5E	0x99F6	# <CJK>
+0xEF5F	0x99FB	# <CJK>
+0xEF60	0x99FD	# <CJK>
+0xEF61	0x99FE	# <CJK>
+0xEF62	0x99FC	# <CJK>
+0xEF63	0x9A03	# <CJK>
+0xEF64	0x9ABE	# <CJK>
+0xEF65	0x9AFE	# <CJK>
+0xEF66	0x9AFD	# <CJK>
+0xEF67	0x9B01	# <CJK>
+0xEF68	0x9AFC	# <CJK>
+0xEF69	0x9B48	# <CJK>
+0xEF6A	0x9B9A	# <CJK>
+0xEF6B	0x9BA8	# <CJK>
+0xEF6C	0x9B9E	# <CJK>
+0xEF6D	0x9B9B	# <CJK>
+0xEF6E	0x9BA6	# <CJK>
+0xEF6F	0x9BA1	# <CJK>
+0xEF70	0x9BA5	# <CJK>
+0xEF71	0x9BA4	# <CJK>
+0xEF72	0x9B86	# <CJK>
+0xEF73	0x9BA2	# <CJK>
+0xEF74	0x9BA0	# <CJK>
+0xEF75	0x9BAF	# <CJK>
+0xEF76	0x9D33	# <CJK>
+0xEF77	0x9D41	# <CJK>
+0xEF78	0x9D67	# <CJK>
+0xEF79	0x9D36	# <CJK>
+0xEF7A	0x9D2E	# <CJK>
+0xEF7B	0x9D2F	# <CJK>
+0xEF7C	0x9D31	# <CJK>
+0xEF7D	0x9D38	# <CJK>
+0xEF7E	0x9D30	# <CJK>
+0xEFA1	0x9D45	# <CJK>
+0xEFA2	0x9D42	# <CJK>
+0xEFA3	0x9D43	# <CJK>
+0xEFA4	0x9D3E	# <CJK>
+0xEFA5	0x9D37	# <CJK>
+0xEFA6	0x9D40	# <CJK>
+0xEFA7	0x9D3D	# <CJK>
+0xEFA8	0x7FF5	# <CJK>
+0xEFA9	0x9D2D	# <CJK>
+0xEFAA	0x9E8A	# <CJK>
+0xEFAB	0x9E89	# <CJK>
+0xEFAC	0x9E8D	# <CJK>
+0xEFAD	0x9EB0	# <CJK>
+0xEFAE	0x9EC8	# <CJK>
+0xEFAF	0x9EDA	# <CJK>
+0xEFB0	0x9EFB	# <CJK>
+0xEFB1	0x9EFF	# <CJK>
+0xEFB2	0x9F24	# <CJK>
+0xEFB3	0x9F23	# <CJK>
+0xEFB4	0x9F22	# <CJK>
+0xEFB5	0x9F54	# <CJK>
+0xEFB6	0x9FA0	# <CJK>
+0xEFB7	0x5131	# <CJK>
+0xEFB8	0x512D	# <CJK>
+0xEFB9	0x512E	# <CJK>
+0xEFBA	0x5698	# <CJK>
+0xEFBB	0x569C	# <CJK>
+0xEFBC	0x5697	# <CJK>
+0xEFBD	0x569A	# <CJK>
+0xEFBE	0x569D	# <CJK>
+0xEFBF	0x5699	# <CJK>
+0xEFC0	0x5970	# <CJK>
+0xEFC1	0x5B3C	# <CJK>
+0xEFC2	0x5C69	# <CJK>
+0xEFC3	0x5C6A	# <CJK>
+0xEFC4	0x5DC0	# <CJK>
+0xEFC5	0x5E6D	# <CJK>
+0xEFC6	0x5E6E	# <CJK>
+0xEFC7	0x61D8	# <CJK>
+0xEFC8	0x61DF	# <CJK>
+0xEFC9	0x61ED	# <CJK>
+0xEFCA	0x61EE	# <CJK>
+0xEFCB	0x61F1	# <CJK>
+0xEFCC	0x61EA	# <CJK>
+0xEFCD	0x61F0	# <CJK>
+0xEFCE	0x61EB	# <CJK>
+0xEFCF	0x61D6	# <CJK>
+0xEFD0	0x61E9	# <CJK>
+0xEFD1	0x64FF	# <CJK>
+0xEFD2	0x6504	# <CJK>
+0xEFD3	0x64FD	# <CJK>
+0xEFD4	0x64F8	# <CJK>
+0xEFD5	0x6501	# <CJK>
+0xEFD6	0x6503	# <CJK>
+0xEFD7	0x64FC	# <CJK>
+0xEFD8	0x6594	# <CJK>
+0xEFD9	0x65DB	# <CJK>
+0xEFDA	0x66DA	# <CJK>
+0xEFDB	0x66DB	# <CJK>
+0xEFDC	0x66D8	# <CJK>
+0xEFDD	0x6AC5	# <CJK>
+0xEFDE	0x6AB9	# <CJK>
+0xEFDF	0x6ABD	# <CJK>
+0xEFE0	0x6AE1	# <CJK>
+0xEFE1	0x6AC6	# <CJK>
+0xEFE2	0x6ABA	# <CJK>
+0xEFE3	0x6AB6	# <CJK>
+0xEFE4	0x6AB7	# <CJK>
+0xEFE5	0x6AC7	# <CJK>
+0xEFE6	0x6AB4	# <CJK>
+0xEFE7	0x6AAD	# <CJK>
+0xEFE8	0x6B5E	# <CJK>
+0xEFE9	0x6BC9	# <CJK>
+0xEFEA	0x6C0B	# <CJK>
+0xEFEB	0x7007	# <CJK>
+0xEFEC	0x700C	# <CJK>
+0xEFED	0x700D	# <CJK>
+0xEFEE	0x7001	# <CJK>
+0xEFEF	0x7005	# <CJK>
+0xEFF0	0x7014	# <CJK>
+0xEFF1	0x700E	# <CJK>
+0xEFF2	0x6FFF	# <CJK>
+0xEFF3	0x7000	# <CJK>
+0xEFF4	0x6FFB	# <CJK>
+0xEFF5	0x7026	# <CJK>
+0xEFF6	0x6FFC	# <CJK>
+0xEFF7	0x6FF7	# <CJK>
+0xEFF8	0x700A	# <CJK>
+0xEFF9	0x7201	# <CJK>
+0xEFFA	0x71FF	# <CJK>
+0xEFFB	0x71F9	# <CJK>
+0xEFFC	0x7203	# <CJK>
+0xEFFD	0x71FD	# <CJK>
+0xEFFE	0x7376	# <CJK>
+0xF040	0x74B8	# <CJK>
+0xF041	0x74C0	# <CJK>
+0xF042	0x74B5	# <CJK>
+0xF043	0x74C1	# <CJK>
+0xF044	0x74BE	# <CJK>
+0xF045	0x74B6	# <CJK>
+0xF046	0x74BB	# <CJK>
+0xF047	0x74C2	# <CJK>
+0xF048	0x7514	# <CJK>
+0xF049	0x7513	# <CJK>
+0xF04A	0x765C	# <CJK>
+0xF04B	0x7664	# <CJK>
+0xF04C	0x7659	# <CJK>
+0xF04D	0x7650	# <CJK>
+0xF04E	0x7653	# <CJK>
+0xF04F	0x7657	# <CJK>
+0xF050	0x765A	# <CJK>
+0xF051	0x76A6	# <CJK>
+0xF052	0x76BD	# <CJK>
+0xF053	0x76EC	# <CJK>
+0xF054	0x77C2	# <CJK>
+0xF055	0x77BA	# <CJK>
+0xF056	0x78FF	# <CJK>
+0xF057	0x790C	# <CJK>
+0xF058	0x7913	# <CJK>
+0xF059	0x7914	# <CJK>
+0xF05A	0x7909	# <CJK>
+0xF05B	0x7910	# <CJK>
+0xF05C	0x7912	# <CJK>
+0xF05D	0x7911	# <CJK>
+0xF05E	0x79AD	# <CJK>
+0xF05F	0x79AC	# <CJK>
+0xF060	0x7A5F	# <CJK>
+0xF061	0x7C1C	# <CJK>
+0xF062	0x7C29	# <CJK>
+0xF063	0x7C19	# <CJK>
+0xF064	0x7C20	# <CJK>
+0xF065	0x7C1F	# <CJK>
+0xF066	0x7C2D	# <CJK>
+0xF067	0x7C1D	# <CJK>
+0xF068	0x7C26	# <CJK>
+0xF069	0x7C28	# <CJK>
+0xF06A	0x7C22	# <CJK>
+0xF06B	0x7C25	# <CJK>
+0xF06C	0x7C30	# <CJK>
+0xF06D	0x7E5C	# <CJK>
+0xF06E	0x7E50	# <CJK>
+0xF06F	0x7E56	# <CJK>
+0xF070	0x7E63	# <CJK>
+0xF071	0x7E58	# <CJK>
+0xF072	0x7E62	# <CJK>
+0xF073	0x7E5F	# <CJK>
+0xF074	0x7E51	# <CJK>
+0xF075	0x7E60	# <CJK>
+0xF076	0x7E57	# <CJK>
+0xF077	0x7E53	# <CJK>
+0xF078	0x7FB5	# <CJK>
+0xF079	0x7FB3	# <CJK>
+0xF07A	0x7FF7	# <CJK>
+0xF07B	0x7FF8	# <CJK>
+0xF07C	0x8075	# <CJK>
+0xF07D	0x81D1	# <CJK>
+0xF07E	0x81D2	# <CJK>
+0xF0A1	0x81D0	# <CJK>
+0xF0A2	0x825F	# <CJK>
+0xF0A3	0x825E	# <CJK>
+0xF0A4	0x85B4	# <CJK>
+0xF0A5	0x85C6	# <CJK>
+0xF0A6	0x85C0	# <CJK>
+0xF0A7	0x85C3	# <CJK>
+0xF0A8	0x85C2	# <CJK>
+0xF0A9	0x85B3	# <CJK>
+0xF0AA	0x85B5	# <CJK>
+0xF0AB	0x85BD	# <CJK>
+0xF0AC	0x85C7	# <CJK>
+0xF0AD	0x85C4	# <CJK>
+0xF0AE	0x85BF	# <CJK>
+0xF0AF	0x85CB	# <CJK>
+0xF0B0	0x85CE	# <CJK>
+0xF0B1	0x85C8	# <CJK>
+0xF0B2	0x85C5	# <CJK>
+0xF0B3	0x85B1	# <CJK>
+0xF0B4	0x85B6	# <CJK>
+0xF0B5	0x85D2	# <CJK>
+0xF0B6	0x8624	# <CJK>
+0xF0B7	0x85B8	# <CJK>
+0xF0B8	0x85B7	# <CJK>
+0xF0B9	0x85BE	# <CJK>
+0xF0BA	0x8669	# <CJK>
+0xF0BB	0x87E7	# <CJK>
+0xF0BC	0x87E6	# <CJK>
+0xF0BD	0x87E2	# <CJK>
+0xF0BE	0x87DB	# <CJK>
+0xF0BF	0x87EB	# <CJK>
+0xF0C0	0x87EA	# <CJK>
+0xF0C1	0x87E5	# <CJK>
+0xF0C2	0x87DF	# <CJK>
+0xF0C3	0x87F3	# <CJK>
+0xF0C4	0x87E4	# <CJK>
+0xF0C5	0x87D4	# <CJK>
+0xF0C6	0x87DC	# <CJK>
+0xF0C7	0x87D3	# <CJK>
+0xF0C8	0x87ED	# <CJK>
+0xF0C9	0x87D8	# <CJK>
+0xF0CA	0x87E3	# <CJK>
+0xF0CB	0x87A4	# <CJK>
+0xF0CC	0x87D7	# <CJK>
+0xF0CD	0x87D9	# <CJK>
+0xF0CE	0x8801	# <CJK>
+0xF0CF	0x87F4	# <CJK>
+0xF0D0	0x87E8	# <CJK>
+0xF0D1	0x87DD	# <CJK>
+0xF0D2	0x8953	# <CJK>
+0xF0D3	0x894B	# <CJK>
+0xF0D4	0x894F	# <CJK>
+0xF0D5	0x894C	# <CJK>
+0xF0D6	0x8946	# <CJK>
+0xF0D7	0x8950	# <CJK>
+0xF0D8	0x8951	# <CJK>
+0xF0D9	0x8949	# <CJK>
+0xF0DA	0x8B2A	# <CJK>
+0xF0DB	0x8B27	# <CJK>
+0xF0DC	0x8B23	# <CJK>
+0xF0DD	0x8B33	# <CJK>
+0xF0DE	0x8B30	# <CJK>
+0xF0DF	0x8B35	# <CJK>
+0xF0E0	0x8B47	# <CJK>
+0xF0E1	0x8B2F	# <CJK>
+0xF0E2	0x8B3C	# <CJK>
+0xF0E3	0x8B3E	# <CJK>
+0xF0E4	0x8B31	# <CJK>
+0xF0E5	0x8B25	# <CJK>
+0xF0E6	0x8B37	# <CJK>
+0xF0E7	0x8B26	# <CJK>
+0xF0E8	0x8B36	# <CJK>
+0xF0E9	0x8B2E	# <CJK>
+0xF0EA	0x8B24	# <CJK>
+0xF0EB	0x8B3B	# <CJK>
+0xF0EC	0x8B3D	# <CJK>
+0xF0ED	0x8B3A	# <CJK>
+0xF0EE	0x8C42	# <CJK>
+0xF0EF	0x8C75	# <CJK>
+0xF0F0	0x8C99	# <CJK>
+0xF0F1	0x8C98	# <CJK>
+0xF0F2	0x8C97	# <CJK>
+0xF0F3	0x8CFE	# <CJK>
+0xF0F4	0x8D04	# <CJK>
+0xF0F5	0x8D02	# <CJK>
+0xF0F6	0x8D00	# <CJK>
+0xF0F7	0x8E5C	# <CJK>
+0xF0F8	0x8E62	# <CJK>
+0xF0F9	0x8E60	# <CJK>
+0xF0FA	0x8E57	# <CJK>
+0xF0FB	0x8E56	# <CJK>
+0xF0FC	0x8E5E	# <CJK>
+0xF0FD	0x8E65	# <CJK>
+0xF0FE	0x8E67	# <CJK>
+0xF140	0x8E5B	# <CJK>
+0xF141	0x8E5A	# <CJK>
+0xF142	0x8E61	# <CJK>
+0xF143	0x8E5D	# <CJK>
+0xF144	0x8E69	# <CJK>
+0xF145	0x8E54	# <CJK>
+0xF146	0x8F46	# <CJK>
+0xF147	0x8F47	# <CJK>
+0xF148	0x8F48	# <CJK>
+0xF149	0x8F4B	# <CJK>
+0xF14A	0x9128	# <CJK>
+0xF14B	0x913A	# <CJK>
+0xF14C	0x913B	# <CJK>
+0xF14D	0x913E	# <CJK>
+0xF14E	0x91A8	# <CJK>
+0xF14F	0x91A5	# <CJK>
+0xF150	0x91A7	# <CJK>
+0xF151	0x91AF	# <CJK>
+0xF152	0x91AA	# <CJK>
+0xF153	0x93B5	# <CJK>
+0xF154	0x938C	# <CJK>
+0xF155	0x9392	# <CJK>
+0xF156	0x93B7	# <CJK>
+0xF157	0x939B	# <CJK>
+0xF158	0x939D	# <CJK>
+0xF159	0x9389	# <CJK>
+0xF15A	0x93A7	# <CJK>
+0xF15B	0x938E	# <CJK>
+0xF15C	0x93AA	# <CJK>
+0xF15D	0x939E	# <CJK>
+0xF15E	0x93A6	# <CJK>
+0xF15F	0x9395	# <CJK>
+0xF160	0x9388	# <CJK>
+0xF161	0x9399	# <CJK>
+0xF162	0x939F	# <CJK>
+0xF163	0x938D	# <CJK>
+0xF164	0x93B1	# <CJK>
+0xF165	0x9391	# <CJK>
+0xF166	0x93B2	# <CJK>
+0xF167	0x93A4	# <CJK>
+0xF168	0x93A8	# <CJK>
+0xF169	0x93B4	# <CJK>
+0xF16A	0x93A3	# <CJK>
+0xF16B	0x93A5	# <CJK>
+0xF16C	0x95D2	# <CJK>
+0xF16D	0x95D3	# <CJK>
+0xF16E	0x95D1	# <CJK>
+0xF16F	0x96B3	# <CJK>
+0xF170	0x96D7	# <CJK>
+0xF171	0x96DA	# <CJK>
+0xF172	0x5DC2	# <CJK>
+0xF173	0x96DF	# <CJK>
+0xF174	0x96D8	# <CJK>
+0xF175	0x96DD	# <CJK>
+0xF176	0x9723	# <CJK>
+0xF177	0x9722	# <CJK>
+0xF178	0x9725	# <CJK>
+0xF179	0x97AC	# <CJK>
+0xF17A	0x97AE	# <CJK>
+0xF17B	0x97A8	# <CJK>
+0xF17C	0x97AB	# <CJK>
+0xF17D	0x97A4	# <CJK>
+0xF17E	0x97AA	# <CJK>
+0xF1A1	0x97A2	# <CJK>
+0xF1A2	0x97A5	# <CJK>
+0xF1A3	0x97D7	# <CJK>
+0xF1A4	0x97D9	# <CJK>
+0xF1A5	0x97D6	# <CJK>
+0xF1A6	0x97D8	# <CJK>
+0xF1A7	0x97FA	# <CJK>
+0xF1A8	0x9850	# <CJK>
+0xF1A9	0x9851	# <CJK>
+0xF1AA	0x9852	# <CJK>
+0xF1AB	0x98B8	# <CJK>
+0xF1AC	0x9941	# <CJK>
+0xF1AD	0x993C	# <CJK>
+0xF1AE	0x993A	# <CJK>
+0xF1AF	0x9A0F	# <CJK>
+0xF1B0	0x9A0B	# <CJK>
+0xF1B1	0x9A09	# <CJK>
+0xF1B2	0x9A0D	# <CJK>
+0xF1B3	0x9A04	# <CJK>
+0xF1B4	0x9A11	# <CJK>
+0xF1B5	0x9A0A	# <CJK>
+0xF1B6	0x9A05	# <CJK>
+0xF1B7	0x9A07	# <CJK>
+0xF1B8	0x9A06	# <CJK>
+0xF1B9	0x9AC0	# <CJK>
+0xF1BA	0x9ADC	# <CJK>
+0xF1BB	0x9B08	# <CJK>
+0xF1BC	0x9B04	# <CJK>
+0xF1BD	0x9B05	# <CJK>
+0xF1BE	0x9B29	# <CJK>
+0xF1BF	0x9B35	# <CJK>
+0xF1C0	0x9B4A	# <CJK>
+0xF1C1	0x9B4C	# <CJK>
+0xF1C2	0x9B4B	# <CJK>
+0xF1C3	0x9BC7	# <CJK>
+0xF1C4	0x9BC6	# <CJK>
+0xF1C5	0x9BC3	# <CJK>
+0xF1C6	0x9BBF	# <CJK>
+0xF1C7	0x9BC1	# <CJK>
+0xF1C8	0x9BB5	# <CJK>
+0xF1C9	0x9BB8	# <CJK>
+0xF1CA	0x9BD3	# <CJK>
+0xF1CB	0x9BB6	# <CJK>
+0xF1CC	0x9BC4	# <CJK>
+0xF1CD	0x9BB9	# <CJK>
+0xF1CE	0x9BBD	# <CJK>
+0xF1CF	0x9D5C	# <CJK>
+0xF1D0	0x9D53	# <CJK>
+0xF1D1	0x9D4F	# <CJK>
+0xF1D2	0x9D4A	# <CJK>
+0xF1D3	0x9D5B	# <CJK>
+0xF1D4	0x9D4B	# <CJK>
+0xF1D5	0x9D59	# <CJK>
+0xF1D6	0x9D56	# <CJK>
+0xF1D7	0x9D4C	# <CJK>
+0xF1D8	0x9D57	# <CJK>
+0xF1D9	0x9D52	# <CJK>
+0xF1DA	0x9D54	# <CJK>
+0xF1DB	0x9D5F	# <CJK>
+0xF1DC	0x9D58	# <CJK>
+0xF1DD	0x9D5A	# <CJK>
+0xF1DE	0x9E8E	# <CJK>
+0xF1DF	0x9E8C	# <CJK>
+0xF1E0	0x9EDF	# <CJK>
+0xF1E1	0x9F01	# <CJK>
+0xF1E2	0x9F00	# <CJK>
+0xF1E3	0x9F16	# <CJK>
+0xF1E4	0x9F25	# <CJK>
+0xF1E5	0x9F2B	# <CJK>
+0xF1E6	0x9F2A	# <CJK>
+0xF1E7	0x9F29	# <CJK>
+0xF1E8	0x9F28	# <CJK>
+0xF1E9	0x9F4C	# <CJK>
+0xF1EA	0x9F55	# <CJK>
+0xF1EB	0x5134	# <CJK>
+0xF1EC	0x5135	# <CJK>
+0xF1ED	0x5296	# <CJK>
+0xF1EE	0x52F7	# <CJK>
+0xF1EF	0x53B4	# <CJK>
+0xF1F0	0x56AB	# <CJK>
+0xF1F1	0x56AD	# <CJK>
+0xF1F2	0x56A6	# <CJK>
+0xF1F3	0x56A7	# <CJK>
+0xF1F4	0x56AA	# <CJK>
+0xF1F5	0x56AC	# <CJK>
+0xF1F6	0x58DA	# <CJK>
+0xF1F7	0x58DD	# <CJK>
+0xF1F8	0x58DB	# <CJK>
+0xF1F9	0x5912	# <CJK>
+0xF1FA	0x5B3D	# <CJK>
+0xF1FB	0x5B3E	# <CJK>
+0xF1FC	0x5B3F	# <CJK>
+0xF1FD	0x5DC3	# <CJK>
+0xF1FE	0x5E70	# <CJK>
+0xF240	0x5FBF	# <CJK>
+0xF241	0x61FB	# <CJK>
+0xF242	0x6507	# <CJK>
+0xF243	0x6510	# <CJK>
+0xF244	0x650D	# <CJK>
+0xF245	0x6509	# <CJK>
+0xF246	0x650C	# <CJK>
+0xF247	0x650E	# <CJK>
+0xF248	0x6584	# <CJK>
+0xF249	0x65DE	# <CJK>
+0xF24A	0x65DD	# <CJK>
+0xF24B	0x66DE	# <CJK>
+0xF24C	0x6AE7	# <CJK>
+0xF24D	0x6AE0	# <CJK>
+0xF24E	0x6ACC	# <CJK>
+0xF24F	0x6AD1	# <CJK>
+0xF250	0x6AD9	# <CJK>
+0xF251	0x6ACB	# <CJK>
+0xF252	0x6ADF	# <CJK>
+0xF253	0x6ADC	# <CJK>
+0xF254	0x6AD0	# <CJK>
+0xF255	0x6AEB	# <CJK>
+0xF256	0x6ACF	# <CJK>
+0xF257	0x6ACD	# <CJK>
+0xF258	0x6ADE	# <CJK>
+0xF259	0x6B60	# <CJK>
+0xF25A	0x6BB0	# <CJK>
+0xF25B	0x6C0C	# <CJK>
+0xF25C	0x7019	# <CJK>
+0xF25D	0x7027	# <CJK>
+0xF25E	0x7020	# <CJK>
+0xF25F	0x7016	# <CJK>
+0xF260	0x702B	# <CJK>
+0xF261	0x7021	# <CJK>
+0xF262	0x7022	# <CJK>
+0xF263	0x7023	# <CJK>
+0xF264	0x7029	# <CJK>
+0xF265	0x7017	# <CJK>
+0xF266	0x7024	# <CJK>
+0xF267	0x701C	# <CJK>
+0xF268	0x702A	# <CJK>
+0xF269	0x720C	# <CJK>
+0xF26A	0x720A	# <CJK>
+0xF26B	0x7207	# <CJK>
+0xF26C	0x7202	# <CJK>
+0xF26D	0x7205	# <CJK>
+0xF26E	0x72A5	# <CJK>
+0xF26F	0x72A6	# <CJK>
+0xF270	0x72A4	# <CJK>
+0xF271	0x72A3	# <CJK>
+0xF272	0x72A1	# <CJK>
+0xF273	0x74CB	# <CJK>
+0xF274	0x74C5	# <CJK>
+0xF275	0x74B7	# <CJK>
+0xF276	0x74C3	# <CJK>
+0xF277	0x7516	# <CJK>
+0xF278	0x7660	# <CJK>
+0xF279	0x77C9	# <CJK>
+0xF27A	0x77CA	# <CJK>
+0xF27B	0x77C4	# <CJK>
+0xF27C	0x77F1	# <CJK>
+0xF27D	0x791D	# <CJK>
+0xF27E	0x791B	# <CJK>
+0xF2A1	0x7921	# <CJK>
+0xF2A2	0x791C	# <CJK>
+0xF2A3	0x7917	# <CJK>
+0xF2A4	0x791E	# <CJK>
+0xF2A5	0x79B0	# <CJK>
+0xF2A6	0x7A67	# <CJK>
+0xF2A7	0x7A68	# <CJK>
+0xF2A8	0x7C33	# <CJK>
+0xF2A9	0x7C3C	# <CJK>
+0xF2AA	0x7C39	# <CJK>
+0xF2AB	0x7C2C	# <CJK>
+0xF2AC	0x7C3B	# <CJK>
+0xF2AD	0x7CEC	# <CJK>
+0xF2AE	0x7CEA	# <CJK>
+0xF2AF	0x7E76	# <CJK>
+0xF2B0	0x7E75	# <CJK>
+0xF2B1	0x7E78	# <CJK>
+0xF2B2	0x7E70	# <CJK>
+0xF2B3	0x7E77	# <CJK>
+0xF2B4	0x7E6F	# <CJK>
+0xF2B5	0x7E7A	# <CJK>
+0xF2B6	0x7E72	# <CJK>
+0xF2B7	0x7E74	# <CJK>
+0xF2B8	0x7E68	# <CJK>
+0xF2B9	0x7F4B	# <CJK>
+0xF2BA	0x7F4A	# <CJK>
+0xF2BB	0x7F83	# <CJK>
+0xF2BC	0x7F86	# <CJK>
+0xF2BD	0x7FB7	# <CJK>
+0xF2BE	0x7FFD	# <CJK>
+0xF2BF	0x7FFE	# <CJK>
+0xF2C0	0x8078	# <CJK>
+0xF2C1	0x81D7	# <CJK>
+0xF2C2	0x81D5	# <CJK>
+0xF2C3	0x8264	# <CJK>
+0xF2C4	0x8261	# <CJK>
+0xF2C5	0x8263	# <CJK>
+0xF2C6	0x85EB	# <CJK>
+0xF2C7	0x85F1	# <CJK>
+0xF2C8	0x85ED	# <CJK>
+0xF2C9	0x85D9	# <CJK>
+0xF2CA	0x85E1	# <CJK>
+0xF2CB	0x85E8	# <CJK>
+0xF2CC	0x85DA	# <CJK>
+0xF2CD	0x85D7	# <CJK>
+0xF2CE	0x85EC	# <CJK>
+0xF2CF	0x85F2	# <CJK>
+0xF2D0	0x85F8	# <CJK>
+0xF2D1	0x85D8	# <CJK>
+0xF2D2	0x85DF	# <CJK>
+0xF2D3	0x85E3	# <CJK>
+0xF2D4	0x85DC	# <CJK>
+0xF2D5	0x85D1	# <CJK>
+0xF2D6	0x85F0	# <CJK>
+0xF2D7	0x85E6	# <CJK>
+0xF2D8	0x85EF	# <CJK>
+0xF2D9	0x85DE	# <CJK>
+0xF2DA	0x85E2	# <CJK>
+0xF2DB	0x8800	# <CJK>
+0xF2DC	0x87FA	# <CJK>
+0xF2DD	0x8803	# <CJK>
+0xF2DE	0x87F6	# <CJK>
+0xF2DF	0x87F7	# <CJK>
+0xF2E0	0x8809	# <CJK>
+0xF2E1	0x880C	# <CJK>
+0xF2E2	0x880B	# <CJK>
+0xF2E3	0x8806	# <CJK>
+0xF2E4	0x87FC	# <CJK>
+0xF2E5	0x8808	# <CJK>
+0xF2E6	0x87FF	# <CJK>
+0xF2E7	0x880A	# <CJK>
+0xF2E8	0x8802	# <CJK>
+0xF2E9	0x8962	# <CJK>
+0xF2EA	0x895A	# <CJK>
+0xF2EB	0x895B	# <CJK>
+0xF2EC	0x8957	# <CJK>
+0xF2ED	0x8961	# <CJK>
+0xF2EE	0x895C	# <CJK>
+0xF2EF	0x8958	# <CJK>
+0xF2F0	0x895D	# <CJK>
+0xF2F1	0x8959	# <CJK>
+0xF2F2	0x8988	# <CJK>
+0xF2F3	0x89B7	# <CJK>
+0xF2F4	0x89B6	# <CJK>
+0xF2F5	0x89F6	# <CJK>
+0xF2F6	0x8B50	# <CJK>
+0xF2F7	0x8B48	# <CJK>
+0xF2F8	0x8B4A	# <CJK>
+0xF2F9	0x8B40	# <CJK>
+0xF2FA	0x8B53	# <CJK>
+0xF2FB	0x8B56	# <CJK>
+0xF2FC	0x8B54	# <CJK>
+0xF2FD	0x8B4B	# <CJK>
+0xF2FE	0x8B55	# <CJK>
+0xF340	0x8B51	# <CJK>
+0xF341	0x8B42	# <CJK>
+0xF342	0x8B52	# <CJK>
+0xF343	0x8B57	# <CJK>
+0xF344	0x8C43	# <CJK>
+0xF345	0x8C77	# <CJK>
+0xF346	0x8C76	# <CJK>
+0xF347	0x8C9A	# <CJK>
+0xF348	0x8D06	# <CJK>
+0xF349	0x8D07	# <CJK>
+0xF34A	0x8D09	# <CJK>
+0xF34B	0x8DAC	# <CJK>
+0xF34C	0x8DAA	# <CJK>
+0xF34D	0x8DAD	# <CJK>
+0xF34E	0x8DAB	# <CJK>
+0xF34F	0x8E6D	# <CJK>
+0xF350	0x8E78	# <CJK>
+0xF351	0x8E73	# <CJK>
+0xF352	0x8E6A	# <CJK>
+0xF353	0x8E6F	# <CJK>
+0xF354	0x8E7B	# <CJK>
+0xF355	0x8EC2	# <CJK>
+0xF356	0x8F52	# <CJK>
+0xF357	0x8F51	# <CJK>
+0xF358	0x8F4F	# <CJK>
+0xF359	0x8F50	# <CJK>
+0xF35A	0x8F53	# <CJK>
+0xF35B	0x8FB4	# <CJK>
+0xF35C	0x9140	# <CJK>
+0xF35D	0x913F	# <CJK>
+0xF35E	0x91B0	# <CJK>
+0xF35F	0x91AD	# <CJK>
+0xF360	0x93DE	# <CJK>
+0xF361	0x93C7	# <CJK>
+0xF362	0x93CF	# <CJK>
+0xF363	0x93C2	# <CJK>
+0xF364	0x93DA	# <CJK>
+0xF365	0x93D0	# <CJK>
+0xF366	0x93F9	# <CJK>
+0xF367	0x93EC	# <CJK>
+0xF368	0x93CC	# <CJK>
+0xF369	0x93D9	# <CJK>
+0xF36A	0x93A9	# <CJK>
+0xF36B	0x93E6	# <CJK>
+0xF36C	0x93CA	# <CJK>
+0xF36D	0x93D4	# <CJK>
+0xF36E	0x93EE	# <CJK>
+0xF36F	0x93E3	# <CJK>
+0xF370	0x93D5	# <CJK>
+0xF371	0x93C4	# <CJK>
+0xF372	0x93CE	# <CJK>
+0xF373	0x93C0	# <CJK>
+0xF374	0x93D2	# <CJK>
+0xF375	0x93E7	# <CJK>
+0xF376	0x957D	# <CJK>
+0xF377	0x95DA	# <CJK>
+0xF378	0x95DB	# <CJK>
+0xF379	0x96E1	# <CJK>
+0xF37A	0x9729	# <CJK>
+0xF37B	0x972B	# <CJK>
+0xF37C	0x972C	# <CJK>
+0xF37D	0x9728	# <CJK>
+0xF37E	0x9726	# <CJK>
+0xF3A1	0x97B3	# <CJK>
+0xF3A2	0x97B7	# <CJK>
+0xF3A3	0x97B6	# <CJK>
+0xF3A4	0x97DD	# <CJK>
+0xF3A5	0x97DE	# <CJK>
+0xF3A6	0x97DF	# <CJK>
+0xF3A7	0x985C	# <CJK>
+0xF3A8	0x9859	# <CJK>
+0xF3A9	0x985D	# <CJK>
+0xF3AA	0x9857	# <CJK>
+0xF3AB	0x98BF	# <CJK>
+0xF3AC	0x98BD	# <CJK>
+0xF3AD	0x98BB	# <CJK>
+0xF3AE	0x98BE	# <CJK>
+0xF3AF	0x9948	# <CJK>
+0xF3B0	0x9947	# <CJK>
+0xF3B1	0x9943	# <CJK>
+0xF3B2	0x99A6	# <CJK>
+0xF3B3	0x99A7	# <CJK>
+0xF3B4	0x9A1A	# <CJK>
+0xF3B5	0x9A15	# <CJK>
+0xF3B6	0x9A25	# <CJK>
+0xF3B7	0x9A1D	# <CJK>
+0xF3B8	0x9A24	# <CJK>
+0xF3B9	0x9A1B	# <CJK>
+0xF3BA	0x9A22	# <CJK>
+0xF3BB	0x9A20	# <CJK>
+0xF3BC	0x9A27	# <CJK>
+0xF3BD	0x9A23	# <CJK>
+0xF3BE	0x9A1E	# <CJK>
+0xF3BF	0x9A1C	# <CJK>
+0xF3C0	0x9A14	# <CJK>
+0xF3C1	0x9AC2	# <CJK>
+0xF3C2	0x9B0B	# <CJK>
+0xF3C3	0x9B0A	# <CJK>
+0xF3C4	0x9B0E	# <CJK>
+0xF3C5	0x9B0C	# <CJK>
+0xF3C6	0x9B37	# <CJK>
+0xF3C7	0x9BEA	# <CJK>
+0xF3C8	0x9BEB	# <CJK>
+0xF3C9	0x9BE0	# <CJK>
+0xF3CA	0x9BDE	# <CJK>
+0xF3CB	0x9BE4	# <CJK>
+0xF3CC	0x9BE6	# <CJK>
+0xF3CD	0x9BE2	# <CJK>
+0xF3CE	0x9BF0	# <CJK>
+0xF3CF	0x9BD4	# <CJK>
+0xF3D0	0x9BD7	# <CJK>
+0xF3D1	0x9BEC	# <CJK>
+0xF3D2	0x9BDC	# <CJK>
+0xF3D3	0x9BD9	# <CJK>
+0xF3D4	0x9BE5	# <CJK>
+0xF3D5	0x9BD5	# <CJK>
+0xF3D6	0x9BE1	# <CJK>
+0xF3D7	0x9BDA	# <CJK>
+0xF3D8	0x9D77	# <CJK>
+0xF3D9	0x9D81	# <CJK>
+0xF3DA	0x9D8A	# <CJK>
+0xF3DB	0x9D84	# <CJK>
+0xF3DC	0x9D88	# <CJK>
+0xF3DD	0x9D71	# <CJK>
+0xF3DE	0x9D80	# <CJK>
+0xF3DF	0x9D78	# <CJK>
+0xF3E0	0x9D86	# <CJK>
+0xF3E1	0x9D8B	# <CJK>
+0xF3E2	0x9D8C	# <CJK>
+0xF3E3	0x9D7D	# <CJK>
+0xF3E4	0x9D6B	# <CJK>
+0xF3E5	0x9D74	# <CJK>
+0xF3E6	0x9D75	# <CJK>
+0xF3E7	0x9D70	# <CJK>
+0xF3E8	0x9D69	# <CJK>
+0xF3E9	0x9D85	# <CJK>
+0xF3EA	0x9D73	# <CJK>
+0xF3EB	0x9D7B	# <CJK>
+0xF3EC	0x9D82	# <CJK>
+0xF3ED	0x9D6F	# <CJK>
+0xF3EE	0x9D79	# <CJK>
+0xF3EF	0x9D7F	# <CJK>
+0xF3F0	0x9D87	# <CJK>
+0xF3F1	0x9D68	# <CJK>
+0xF3F2	0x9E94	# <CJK>
+0xF3F3	0x9E91	# <CJK>
+0xF3F4	0x9EC0	# <CJK>
+0xF3F5	0x9EFC	# <CJK>
+0xF3F6	0x9F2D	# <CJK>
+0xF3F7	0x9F40	# <CJK>
+0xF3F8	0x9F41	# <CJK>
+0xF3F9	0x9F4D	# <CJK>
+0xF3FA	0x9F56	# <CJK>
+0xF3FB	0x9F57	# <CJK>
+0xF3FC	0x9F58	# <CJK>
+0xF3FD	0x5337	# <CJK>
+0xF3FE	0x56B2	# <CJK>
+0xF440	0x56B5	# <CJK>
+0xF441	0x56B3	# <CJK>
+0xF442	0x58E3	# <CJK>
+0xF443	0x5B45	# <CJK>
+0xF444	0x5DC6	# <CJK>
+0xF445	0x5DC7	# <CJK>
+0xF446	0x5EEE	# <CJK>
+0xF447	0x5EEF	# <CJK>
+0xF448	0x5FC0	# <CJK>
+0xF449	0x5FC1	# <CJK>
+0xF44A	0x61F9	# <CJK>
+0xF44B	0x6517	# <CJK>
+0xF44C	0x6516	# <CJK>
+0xF44D	0x6515	# <CJK>
+0xF44E	0x6513	# <CJK>
+0xF44F	0x65DF	# <CJK>
+0xF450	0x66E8	# <CJK>
+0xF451	0x66E3	# <CJK>
+0xF452	0x66E4	# <CJK>
+0xF453	0x6AF3	# <CJK>
+0xF454	0x6AF0	# <CJK>
+0xF455	0x6AEA	# <CJK>
+0xF456	0x6AE8	# <CJK>
+0xF457	0x6AF9	# <CJK>
+0xF458	0x6AF1	# <CJK>
+0xF459	0x6AEE	# <CJK>
+0xF45A	0x6AEF	# <CJK>
+0xF45B	0x703C	# <CJK>
+0xF45C	0x7035	# <CJK>
+0xF45D	0x702F	# <CJK>
+0xF45E	0x7037	# <CJK>
+0xF45F	0x7034	# <CJK>
+0xF460	0x7031	# <CJK>
+0xF461	0x7042	# <CJK>
+0xF462	0x7038	# <CJK>
+0xF463	0x703F	# <CJK>
+0xF464	0x703A	# <CJK>
+0xF465	0x7039	# <CJK>
+0xF466	0x7040	# <CJK>
+0xF467	0x703B	# <CJK>
+0xF468	0x7033	# <CJK>
+0xF469	0x7041	# <CJK>
+0xF46A	0x7213	# <CJK>
+0xF46B	0x7214	# <CJK>
+0xF46C	0x72A8	# <CJK>
+0xF46D	0x737D	# <CJK>
+0xF46E	0x737C	# <CJK>
+0xF46F	0x74BA	# <CJK>
+0xF470	0x76AB	# <CJK>
+0xF471	0x76AA	# <CJK>
+0xF472	0x76BE	# <CJK>
+0xF473	0x76ED	# <CJK>
+0xF474	0x77CC	# <CJK>
+0xF475	0x77CE	# <CJK>
+0xF476	0x77CF	# <CJK>
+0xF477	0x77CD	# <CJK>
+0xF478	0x77F2	# <CJK>
+0xF479	0x7925	# <CJK>
+0xF47A	0x7923	# <CJK>
+0xF47B	0x7927	# <CJK>
+0xF47C	0x7928	# <CJK>
+0xF47D	0x7924	# <CJK>
+0xF47E	0x7929	# <CJK>
+0xF4A1	0x79B2	# <CJK>
+0xF4A2	0x7A6E	# <CJK>
+0xF4A3	0x7A6C	# <CJK>
+0xF4A4	0x7A6D	# <CJK>
+0xF4A5	0x7AF7	# <CJK>
+0xF4A6	0x7C49	# <CJK>
+0xF4A7	0x7C48	# <CJK>
+0xF4A8	0x7C4A	# <CJK>
+0xF4A9	0x7C47	# <CJK>
+0xF4AA	0x7C45	# <CJK>
+0xF4AB	0x7CEE	# <CJK>
+0xF4AC	0x7E7B	# <CJK>
+0xF4AD	0x7E7E	# <CJK>
+0xF4AE	0x7E81	# <CJK>
+0xF4AF	0x7E80	# <CJK>
+0xF4B0	0x7FBA	# <CJK>
+0xF4B1	0x7FFF	# <CJK>
+0xF4B2	0x8079	# <CJK>
+0xF4B3	0x81DB	# <CJK>
+0xF4B4	0x81D9	# <CJK>
+0xF4B5	0x820B	# <CJK>
+0xF4B6	0x8268	# <CJK>
+0xF4B7	0x8269	# <CJK>
+0xF4B8	0x8622	# <CJK>
+0xF4B9	0x85FF	# <CJK>
+0xF4BA	0x8601	# <CJK>
+0xF4BB	0x85FE	# <CJK>
+0xF4BC	0x861B	# <CJK>
+0xF4BD	0x8600	# <CJK>
+0xF4BE	0x85F6	# <CJK>
+0xF4BF	0x8604	# <CJK>
+0xF4C0	0x8609	# <CJK>
+0xF4C1	0x8605	# <CJK>
+0xF4C2	0x860C	# <CJK>
+0xF4C3	0x85FD	# <CJK>
+0xF4C4	0x8819	# <CJK>
+0xF4C5	0x8810	# <CJK>
+0xF4C6	0x8811	# <CJK>
+0xF4C7	0x8817	# <CJK>
+0xF4C8	0x8813	# <CJK>
+0xF4C9	0x8816	# <CJK>
+0xF4CA	0x8963	# <CJK>
+0xF4CB	0x8966	# <CJK>
+0xF4CC	0x89B9	# <CJK>
+0xF4CD	0x89F7	# <CJK>
+0xF4CE	0x8B60	# <CJK>
+0xF4CF	0x8B6A	# <CJK>
+0xF4D0	0x8B5D	# <CJK>
+0xF4D1	0x8B68	# <CJK>
+0xF4D2	0x8B63	# <CJK>
+0xF4D3	0x8B65	# <CJK>
+0xF4D4	0x8B67	# <CJK>
+0xF4D5	0x8B6D	# <CJK>
+0xF4D6	0x8DAE	# <CJK>
+0xF4D7	0x8E86	# <CJK>
+0xF4D8	0x8E88	# <CJK>
+0xF4D9	0x8E84	# <CJK>
+0xF4DA	0x8F59	# <CJK>
+0xF4DB	0x8F56	# <CJK>
+0xF4DC	0x8F57	# <CJK>
+0xF4DD	0x8F55	# <CJK>
+0xF4DE	0x8F58	# <CJK>
+0xF4DF	0x8F5A	# <CJK>
+0xF4E0	0x908D	# <CJK>
+0xF4E1	0x9143	# <CJK>
+0xF4E2	0x9141	# <CJK>
+0xF4E3	0x91B7	# <CJK>
+0xF4E4	0x91B5	# <CJK>
+0xF4E5	0x91B2	# <CJK>
+0xF4E6	0x91B3	# <CJK>
+0xF4E7	0x940B	# <CJK>
+0xF4E8	0x9413	# <CJK>
+0xF4E9	0x93FB	# <CJK>
+0xF4EA	0x9420	# <CJK>
+0xF4EB	0x940F	# <CJK>
+0xF4EC	0x9414	# <CJK>
+0xF4ED	0x93FE	# <CJK>
+0xF4EE	0x9415	# <CJK>
+0xF4EF	0x9410	# <CJK>
+0xF4F0	0x9428	# <CJK>
+0xF4F1	0x9419	# <CJK>
+0xF4F2	0x940D	# <CJK>
+0xF4F3	0x93F5	# <CJK>
+0xF4F4	0x9400	# <CJK>
+0xF4F5	0x93F7	# <CJK>
+0xF4F6	0x9407	# <CJK>
+0xF4F7	0x940E	# <CJK>
+0xF4F8	0x9416	# <CJK>
+0xF4F9	0x9412	# <CJK>
+0xF4FA	0x93FA	# <CJK>
+0xF4FB	0x9409	# <CJK>
+0xF4FC	0x93F8	# <CJK>
+0xF4FD	0x940A	# <CJK>
+0xF4FE	0x93FF	# <CJK>
+0xF540	0x93FC	# <CJK>
+0xF541	0x940C	# <CJK>
+0xF542	0x93F6	# <CJK>
+0xF543	0x9411	# <CJK>
+0xF544	0x9406	# <CJK>
+0xF545	0x95DE	# <CJK>
+0xF546	0x95E0	# <CJK>
+0xF547	0x95DF	# <CJK>
+0xF548	0x972E	# <CJK>
+0xF549	0x972F	# <CJK>
+0xF54A	0x97B9	# <CJK>
+0xF54B	0x97BB	# <CJK>
+0xF54C	0x97FD	# <CJK>
+0xF54D	0x97FE	# <CJK>
+0xF54E	0x9860	# <CJK>
+0xF54F	0x9862	# <CJK>
+0xF550	0x9863	# <CJK>
+0xF551	0x985F	# <CJK>
+0xF552	0x98C1	# <CJK>
+0xF553	0x98C2	# <CJK>
+0xF554	0x9950	# <CJK>
+0xF555	0x994E	# <CJK>
+0xF556	0x9959	# <CJK>
+0xF557	0x994C	# <CJK>
+0xF558	0x994B	# <CJK>
+0xF559	0x9953	# <CJK>
+0xF55A	0x9A32	# <CJK>
+0xF55B	0x9A34	# <CJK>
+0xF55C	0x9A31	# <CJK>
+0xF55D	0x9A2C	# <CJK>
+0xF55E	0x9A2A	# <CJK>
+0xF55F	0x9A36	# <CJK>
+0xF560	0x9A29	# <CJK>
+0xF561	0x9A2E	# <CJK>
+0xF562	0x9A38	# <CJK>
+0xF563	0x9A2D	# <CJK>
+0xF564	0x9AC7	# <CJK>
+0xF565	0x9ACA	# <CJK>
+0xF566	0x9AC6	# <CJK>
+0xF567	0x9B10	# <CJK>
+0xF568	0x9B12	# <CJK>
+0xF569	0x9B11	# <CJK>
+0xF56A	0x9C0B	# <CJK>
+0xF56B	0x9C08	# <CJK>
+0xF56C	0x9BF7	# <CJK>
+0xF56D	0x9C05	# <CJK>
+0xF56E	0x9C12	# <CJK>
+0xF56F	0x9BF8	# <CJK>
+0xF570	0x9C40	# <CJK>
+0xF571	0x9C07	# <CJK>
+0xF572	0x9C0E	# <CJK>
+0xF573	0x9C06	# <CJK>
+0xF574	0x9C17	# <CJK>
+0xF575	0x9C14	# <CJK>
+0xF576	0x9C09	# <CJK>
+0xF577	0x9D9F	# <CJK>
+0xF578	0x9D99	# <CJK>
+0xF579	0x9DA4	# <CJK>
+0xF57A	0x9D9D	# <CJK>
+0xF57B	0x9D92	# <CJK>
+0xF57C	0x9D98	# <CJK>
+0xF57D	0x9D90	# <CJK>
+0xF57E	0x9D9B	# <CJK>
+0xF5A1	0x9DA0	# <CJK>
+0xF5A2	0x9D94	# <CJK>
+0xF5A3	0x9D9C	# <CJK>
+0xF5A4	0x9DAA	# <CJK>
+0xF5A5	0x9D97	# <CJK>
+0xF5A6	0x9DA1	# <CJK>
+0xF5A7	0x9D9A	# <CJK>
+0xF5A8	0x9DA2	# <CJK>
+0xF5A9	0x9DA8	# <CJK>
+0xF5AA	0x9D9E	# <CJK>
+0xF5AB	0x9DA3	# <CJK>
+0xF5AC	0x9DBF	# <CJK>
+0xF5AD	0x9DA9	# <CJK>
+0xF5AE	0x9D96	# <CJK>
+0xF5AF	0x9DA6	# <CJK>
+0xF5B0	0x9DA7	# <CJK>
+0xF5B1	0x9E99	# <CJK>
+0xF5B2	0x9E9B	# <CJK>
+0xF5B3	0x9E9A	# <CJK>
+0xF5B4	0x9EE5	# <CJK>
+0xF5B5	0x9EE4	# <CJK>
+0xF5B6	0x9EE7	# <CJK>
+0xF5B7	0x9EE6	# <CJK>
+0xF5B8	0x9F30	# <CJK>
+0xF5B9	0x9F2E	# <CJK>
+0xF5BA	0x9F5B	# <CJK>
+0xF5BB	0x9F60	# <CJK>
+0xF5BC	0x9F5E	# <CJK>
+0xF5BD	0x9F5D	# <CJK>
+0xF5BE	0x9F59	# <CJK>
+0xF5BF	0x9F91	# <CJK>
+0xF5C0	0x513A	# <CJK>
+0xF5C1	0x5139	# <CJK>
+0xF5C2	0x5298	# <CJK>
+0xF5C3	0x5297	# <CJK>
+0xF5C4	0x56C3	# <CJK>
+0xF5C5	0x56BD	# <CJK>
+0xF5C6	0x56BE	# <CJK>
+0xF5C7	0x5B48	# <CJK>
+0xF5C8	0x5B47	# <CJK>
+0xF5C9	0x5DCB	# <CJK>
+0xF5CA	0x5DCF	# <CJK>
+0xF5CB	0x5EF1	# <CJK>
+0xF5CC	0x61FD	# <CJK>
+0xF5CD	0x651B	# <CJK>
+0xF5CE	0x6B02	# <CJK>
+0xF5CF	0x6AFC	# <CJK>
+0xF5D0	0x6B03	# <CJK>
+0xF5D1	0x6AF8	# <CJK>
+0xF5D2	0x6B00	# <CJK>
+0xF5D3	0x7043	# <CJK>
+0xF5D4	0x7044	# <CJK>
+0xF5D5	0x704A	# <CJK>
+0xF5D6	0x7048	# <CJK>
+0xF5D7	0x7049	# <CJK>
+0xF5D8	0x7045	# <CJK>
+0xF5D9	0x7046	# <CJK>
+0xF5DA	0x721D	# <CJK>
+0xF5DB	0x721A	# <CJK>
+0xF5DC	0x7219	# <CJK>
+0xF5DD	0x737E	# <CJK>
+0xF5DE	0x7517	# <CJK>
+0xF5DF	0x766A	# <CJK>
+0xF5E0	0x77D0	# <CJK>
+0xF5E1	0x792D	# <CJK>
+0xF5E2	0x7931	# <CJK>
+0xF5E3	0x792F	# <CJK>
+0xF5E4	0x7C54	# <CJK>
+0xF5E5	0x7C53	# <CJK>
+0xF5E6	0x7CF2	# <CJK>
+0xF5E7	0x7E8A	# <CJK>
+0xF5E8	0x7E87	# <CJK>
+0xF5E9	0x7E88	# <CJK>
+0xF5EA	0x7E8B	# <CJK>
+0xF5EB	0x7E86	# <CJK>
+0xF5EC	0x7E8D	# <CJK>
+0xF5ED	0x7F4D	# <CJK>
+0xF5EE	0x7FBB	# <CJK>
+0xF5EF	0x8030	# <CJK>
+0xF5F0	0x81DD	# <CJK>
+0xF5F1	0x8618	# <CJK>
+0xF5F2	0x862A	# <CJK>
+0xF5F3	0x8626	# <CJK>
+0xF5F4	0x861F	# <CJK>
+0xF5F5	0x8623	# <CJK>
+0xF5F6	0x861C	# <CJK>
+0xF5F7	0x8619	# <CJK>
+0xF5F8	0x8627	# <CJK>
+0xF5F9	0x862E	# <CJK>
+0xF5FA	0x8621	# <CJK>
+0xF5FB	0x8620	# <CJK>
+0xF5FC	0x8629	# <CJK>
+0xF5FD	0x861E	# <CJK>
+0xF5FE	0x8625	# <CJK>
+0xF640	0x8829	# <CJK>
+0xF641	0x881D	# <CJK>
+0xF642	0x881B	# <CJK>
+0xF643	0x8820	# <CJK>
+0xF644	0x8824	# <CJK>
+0xF645	0x881C	# <CJK>
+0xF646	0x882B	# <CJK>
+0xF647	0x884A	# <CJK>
+0xF648	0x896D	# <CJK>
+0xF649	0x8969	# <CJK>
+0xF64A	0x896E	# <CJK>
+0xF64B	0x896B	# <CJK>
+0xF64C	0x89FA	# <CJK>
+0xF64D	0x8B79	# <CJK>
+0xF64E	0x8B78	# <CJK>
+0xF64F	0x8B45	# <CJK>
+0xF650	0x8B7A	# <CJK>
+0xF651	0x8B7B	# <CJK>
+0xF652	0x8D10	# <CJK>
+0xF653	0x8D14	# <CJK>
+0xF654	0x8DAF	# <CJK>
+0xF655	0x8E8E	# <CJK>
+0xF656	0x8E8C	# <CJK>
+0xF657	0x8F5E	# <CJK>
+0xF658	0x8F5B	# <CJK>
+0xF659	0x8F5D	# <CJK>
+0xF65A	0x9146	# <CJK>
+0xF65B	0x9144	# <CJK>
+0xF65C	0x9145	# <CJK>
+0xF65D	0x91B9	# <CJK>
+0xF65E	0x943F	# <CJK>
+0xF65F	0x943B	# <CJK>
+0xF660	0x9436	# <CJK>
+0xF661	0x9429	# <CJK>
+0xF662	0x943D	# <CJK>
+0xF663	0x943C	# <CJK>
+0xF664	0x9430	# <CJK>
+0xF665	0x9439	# <CJK>
+0xF666	0x942A	# <CJK>
+0xF667	0x9437	# <CJK>
+0xF668	0x942C	# <CJK>
+0xF669	0x9440	# <CJK>
+0xF66A	0x9431	# <CJK>
+0xF66B	0x95E5	# <CJK>
+0xF66C	0x95E4	# <CJK>
+0xF66D	0x95E3	# <CJK>
+0xF66E	0x9735	# <CJK>
+0xF66F	0x973A	# <CJK>
+0xF670	0x97BF	# <CJK>
+0xF671	0x97E1	# <CJK>
+0xF672	0x9864	# <CJK>
+0xF673	0x98C9	# <CJK>
+0xF674	0x98C6	# <CJK>
+0xF675	0x98C0	# <CJK>
+0xF676	0x9958	# <CJK>
+0xF677	0x9956	# <CJK>
+0xF678	0x9A39	# <CJK>
+0xF679	0x9A3D	# <CJK>
+0xF67A	0x9A46	# <CJK>
+0xF67B	0x9A44	# <CJK>
+0xF67C	0x9A42	# <CJK>
+0xF67D	0x9A41	# <CJK>
+0xF67E	0x9A3A	# <CJK>
+0xF6A1	0x9A3F	# <CJK>
+0xF6A2	0x9ACD	# <CJK>
+0xF6A3	0x9B15	# <CJK>
+0xF6A4	0x9B17	# <CJK>
+0xF6A5	0x9B18	# <CJK>
+0xF6A6	0x9B16	# <CJK>
+0xF6A7	0x9B3A	# <CJK>
+0xF6A8	0x9B52	# <CJK>
+0xF6A9	0x9C2B	# <CJK>
+0xF6AA	0x9C1D	# <CJK>
+0xF6AB	0x9C1C	# <CJK>
+0xF6AC	0x9C2C	# <CJK>
+0xF6AD	0x9C23	# <CJK>
+0xF6AE	0x9C28	# <CJK>
+0xF6AF	0x9C29	# <CJK>
+0xF6B0	0x9C24	# <CJK>
+0xF6B1	0x9C21	# <CJK>
+0xF6B2	0x9DB7	# <CJK>
+0xF6B3	0x9DB6	# <CJK>
+0xF6B4	0x9DBC	# <CJK>
+0xF6B5	0x9DC1	# <CJK>
+0xF6B6	0x9DC7	# <CJK>
+0xF6B7	0x9DCA	# <CJK>
+0xF6B8	0x9DCF	# <CJK>
+0xF6B9	0x9DBE	# <CJK>
+0xF6BA	0x9DC5	# <CJK>
+0xF6BB	0x9DC3	# <CJK>
+0xF6BC	0x9DBB	# <CJK>
+0xF6BD	0x9DB5	# <CJK>
+0xF6BE	0x9DCE	# <CJK>
+0xF6BF	0x9DB9	# <CJK>
+0xF6C0	0x9DBA	# <CJK>
+0xF6C1	0x9DAC	# <CJK>
+0xF6C2	0x9DC8	# <CJK>
+0xF6C3	0x9DB1	# <CJK>
+0xF6C4	0x9DAD	# <CJK>
+0xF6C5	0x9DCC	# <CJK>
+0xF6C6	0x9DB3	# <CJK>
+0xF6C7	0x9DCD	# <CJK>
+0xF6C8	0x9DB2	# <CJK>
+0xF6C9	0x9E7A	# <CJK>
+0xF6CA	0x9E9C	# <CJK>
+0xF6CB	0x9EEB	# <CJK>
+0xF6CC	0x9EEE	# <CJK>
+0xF6CD	0x9EED	# <CJK>
+0xF6CE	0x9F1B	# <CJK>
+0xF6CF	0x9F18	# <CJK>
+0xF6D0	0x9F1A	# <CJK>
+0xF6D1	0x9F31	# <CJK>
+0xF6D2	0x9F4E	# <CJK>
+0xF6D3	0x9F65	# <CJK>
+0xF6D4	0x9F64	# <CJK>
+0xF6D5	0x9F92	# <CJK>
+0xF6D6	0x4EB9	# <CJK>
+0xF6D7	0x56C6	# <CJK>
+0xF6D8	0x56C5	# <CJK>
+0xF6D9	0x56CB	# <CJK>
+0xF6DA	0x5971	# <CJK>
+0xF6DB	0x5B4B	# <CJK>
+0xF6DC	0x5B4C	# <CJK>
+0xF6DD	0x5DD5	# <CJK>
+0xF6DE	0x5DD1	# <CJK>
+0xF6DF	0x5EF2	# <CJK>
+0xF6E0	0x6521	# <CJK>
+0xF6E1	0x6520	# <CJK>
+0xF6E2	0x6526	# <CJK>
+0xF6E3	0x6522	# <CJK>
+0xF6E4	0x6B0B	# <CJK>
+0xF6E5	0x6B08	# <CJK>
+0xF6E6	0x6B09	# <CJK>
+0xF6E7	0x6C0D	# <CJK>
+0xF6E8	0x7055	# <CJK>
+0xF6E9	0x7056	# <CJK>
+0xF6EA	0x7057	# <CJK>
+0xF6EB	0x7052	# <CJK>
+0xF6EC	0x721E	# <CJK>
+0xF6ED	0x721F	# <CJK>
+0xF6EE	0x72A9	# <CJK>
+0xF6EF	0x737F	# <CJK>
+0xF6F0	0x74D8	# <CJK>
+0xF6F1	0x74D5	# <CJK>
+0xF6F2	0x74D9	# <CJK>
+0xF6F3	0x74D7	# <CJK>
+0xF6F4	0x766D	# <CJK>
+0xF6F5	0x76AD	# <CJK>
+0xF6F6	0x7935	# <CJK>
+0xF6F7	0x79B4	# <CJK>
+0xF6F8	0x7A70	# <CJK>
+0xF6F9	0x7A71	# <CJK>
+0xF6FA	0x7C57	# <CJK>
+0xF6FB	0x7C5C	# <CJK>
+0xF6FC	0x7C59	# <CJK>
+0xF6FD	0x7C5B	# <CJK>
+0xF6FE	0x7C5A	# <CJK>
+0xF740	0x7CF4	# <CJK>
+0xF741	0x7CF1	# <CJK>
+0xF742	0x7E91	# <CJK>
+0xF743	0x7F4F	# <CJK>
+0xF744	0x7F87	# <CJK>
+0xF745	0x81DE	# <CJK>
+0xF746	0x826B	# <CJK>
+0xF747	0x8634	# <CJK>
+0xF748	0x8635	# <CJK>
+0xF749	0x8633	# <CJK>
+0xF74A	0x862C	# <CJK>
+0xF74B	0x8632	# <CJK>
+0xF74C	0x8636	# <CJK>
+0xF74D	0x882C	# <CJK>
+0xF74E	0x8828	# <CJK>
+0xF74F	0x8826	# <CJK>
+0xF750	0x882A	# <CJK>
+0xF751	0x8825	# <CJK>
+0xF752	0x8971	# <CJK>
+0xF753	0x89BF	# <CJK>
+0xF754	0x89BE	# <CJK>
+0xF755	0x89FB	# <CJK>
+0xF756	0x8B7E	# <CJK>
+0xF757	0x8B84	# <CJK>
+0xF758	0x8B82	# <CJK>
+0xF759	0x8B86	# <CJK>
+0xF75A	0x8B85	# <CJK>
+0xF75B	0x8B7F	# <CJK>
+0xF75C	0x8D15	# <CJK>
+0xF75D	0x8E95	# <CJK>
+0xF75E	0x8E94	# <CJK>
+0xF75F	0x8E9A	# <CJK>
+0xF760	0x8E92	# <CJK>
+0xF761	0x8E90	# <CJK>
+0xF762	0x8E96	# <CJK>
+0xF763	0x8E97	# <CJK>
+0xF764	0x8F60	# <CJK>
+0xF765	0x8F62	# <CJK>
+0xF766	0x9147	# <CJK>
+0xF767	0x944C	# <CJK>
+0xF768	0x9450	# <CJK>
+0xF769	0x944A	# <CJK>
+0xF76A	0x944B	# <CJK>
+0xF76B	0x944F	# <CJK>
+0xF76C	0x9447	# <CJK>
+0xF76D	0x9445	# <CJK>
+0xF76E	0x9448	# <CJK>
+0xF76F	0x9449	# <CJK>
+0xF770	0x9446	# <CJK>
+0xF771	0x973F	# <CJK>
+0xF772	0x97E3	# <CJK>
+0xF773	0x986A	# <CJK>
+0xF774	0x9869	# <CJK>
+0xF775	0x98CB	# <CJK>
+0xF776	0x9954	# <CJK>
+0xF777	0x995B	# <CJK>
+0xF778	0x9A4E	# <CJK>
+0xF779	0x9A53	# <CJK>
+0xF77A	0x9A54	# <CJK>
+0xF77B	0x9A4C	# <CJK>
+0xF77C	0x9A4F	# <CJK>
+0xF77D	0x9A48	# <CJK>
+0xF77E	0x9A4A	# <CJK>
+0xF7A1	0x9A49	# <CJK>
+0xF7A2	0x9A52	# <CJK>
+0xF7A3	0x9A50	# <CJK>
+0xF7A4	0x9AD0	# <CJK>
+0xF7A5	0x9B19	# <CJK>
+0xF7A6	0x9B2B	# <CJK>
+0xF7A7	0x9B3B	# <CJK>
+0xF7A8	0x9B56	# <CJK>
+0xF7A9	0x9B55	# <CJK>
+0xF7AA	0x9C46	# <CJK>
+0xF7AB	0x9C48	# <CJK>
+0xF7AC	0x9C3F	# <CJK>
+0xF7AD	0x9C44	# <CJK>
+0xF7AE	0x9C39	# <CJK>
+0xF7AF	0x9C33	# <CJK>
+0xF7B0	0x9C41	# <CJK>
+0xF7B1	0x9C3C	# <CJK>
+0xF7B2	0x9C37	# <CJK>
+0xF7B3	0x9C34	# <CJK>
+0xF7B4	0x9C32	# <CJK>
+0xF7B5	0x9C3D	# <CJK>
+0xF7B6	0x9C36	# <CJK>
+0xF7B7	0x9DDB	# <CJK>
+0xF7B8	0x9DD2	# <CJK>
+0xF7B9	0x9DDE	# <CJK>
+0xF7BA	0x9DDA	# <CJK>
+0xF7BB	0x9DCB	# <CJK>
+0xF7BC	0x9DD0	# <CJK>
+0xF7BD	0x9DDC	# <CJK>
+0xF7BE	0x9DD1	# <CJK>
+0xF7BF	0x9DDF	# <CJK>
+0xF7C0	0x9DE9	# <CJK>
+0xF7C1	0x9DD9	# <CJK>
+0xF7C2	0x9DD8	# <CJK>
+0xF7C3	0x9DD6	# <CJK>
+0xF7C4	0x9DF5	# <CJK>
+0xF7C5	0x9DD5	# <CJK>
+0xF7C6	0x9DDD	# <CJK>
+0xF7C7	0x9EB6	# <CJK>
+0xF7C8	0x9EF0	# <CJK>
+0xF7C9	0x9F35	# <CJK>
+0xF7CA	0x9F33	# <CJK>
+0xF7CB	0x9F32	# <CJK>
+0xF7CC	0x9F42	# <CJK>
+0xF7CD	0x9F6B	# <CJK>
+0xF7CE	0x9F95	# <CJK>
+0xF7CF	0x9FA2	# <CJK>
+0xF7D0	0x513D	# <CJK>
+0xF7D1	0x5299	# <CJK>
+0xF7D2	0x58E8	# <CJK>
+0xF7D3	0x58E7	# <CJK>
+0xF7D4	0x5972	# <CJK>
+0xF7D5	0x5B4D	# <CJK>
+0xF7D6	0x5DD8	# <CJK>
+0xF7D7	0x882F	# <CJK>
+0xF7D8	0x5F4F	# <CJK>
+0xF7D9	0x6201	# <CJK>
+0xF7DA	0x6203	# <CJK>
+0xF7DB	0x6204	# <CJK>
+0xF7DC	0x6529	# <CJK>
+0xF7DD	0x6525	# <CJK>
+0xF7DE	0x6596	# <CJK>
+0xF7DF	0x66EB	# <CJK>
+0xF7E0	0x6B11	# <CJK>
+0xF7E1	0x6B12	# <CJK>
+0xF7E2	0x6B0F	# <CJK>
+0xF7E3	0x6BCA	# <CJK>
+0xF7E4	0x705B	# <CJK>
+0xF7E5	0x705A	# <CJK>
+0xF7E6	0x7222	# <CJK>
+0xF7E7	0x7382	# <CJK>
+0xF7E8	0x7381	# <CJK>
+0xF7E9	0x7383	# <CJK>
+0xF7EA	0x7670	# <CJK>
+0xF7EB	0x77D4	# <CJK>
+0xF7EC	0x7C67	# <CJK>
+0xF7ED	0x7C66	# <CJK>
+0xF7EE	0x7E95	# <CJK>
+0xF7EF	0x826C	# <CJK>
+0xF7F0	0x863A	# <CJK>
+0xF7F1	0x8640	# <CJK>
+0xF7F2	0x8639	# <CJK>
+0xF7F3	0x863C	# <CJK>
+0xF7F4	0x8631	# <CJK>
+0xF7F5	0x863B	# <CJK>
+0xF7F6	0x863E	# <CJK>
+0xF7F7	0x8830	# <CJK>
+0xF7F8	0x8832	# <CJK>
+0xF7F9	0x882E	# <CJK>
+0xF7FA	0x8833	# <CJK>
+0xF7FB	0x8976	# <CJK>
+0xF7FC	0x8974	# <CJK>
+0xF7FD	0x8973	# <CJK>
+0xF7FE	0x89FE	# <CJK>
+0xF840	0x8B8C	# <CJK>
+0xF841	0x8B8E	# <CJK>
+0xF842	0x8B8B	# <CJK>
+0xF843	0x8B88	# <CJK>
+0xF844	0x8C45	# <CJK>
+0xF845	0x8D19	# <CJK>
+0xF846	0x8E98	# <CJK>
+0xF847	0x8F64	# <CJK>
+0xF848	0x8F63	# <CJK>
+0xF849	0x91BC	# <CJK>
+0xF84A	0x9462	# <CJK>
+0xF84B	0x9455	# <CJK>
+0xF84C	0x945D	# <CJK>
+0xF84D	0x9457	# <CJK>
+0xF84E	0x945E	# <CJK>
+0xF84F	0x97C4	# <CJK>
+0xF850	0x97C5	# <CJK>
+0xF851	0x9800	# <CJK>
+0xF852	0x9A56	# <CJK>
+0xF853	0x9A59	# <CJK>
+0xF854	0x9B1E	# <CJK>
+0xF855	0x9B1F	# <CJK>
+0xF856	0x9B20	# <CJK>
+0xF857	0x9C52	# <CJK>
+0xF858	0x9C58	# <CJK>
+0xF859	0x9C50	# <CJK>
+0xF85A	0x9C4A	# <CJK>
+0xF85B	0x9C4D	# <CJK>
+0xF85C	0x9C4B	# <CJK>
+0xF85D	0x9C55	# <CJK>
+0xF85E	0x9C59	# <CJK>
+0xF85F	0x9C4C	# <CJK>
+0xF860	0x9C4E	# <CJK>
+0xF861	0x9DFB	# <CJK>
+0xF862	0x9DF7	# <CJK>
+0xF863	0x9DEF	# <CJK>
+0xF864	0x9DE3	# <CJK>
+0xF865	0x9DEB	# <CJK>
+0xF866	0x9DF8	# <CJK>
+0xF867	0x9DE4	# <CJK>
+0xF868	0x9DF6	# <CJK>
+0xF869	0x9DE1	# <CJK>
+0xF86A	0x9DEE	# <CJK>
+0xF86B	0x9DE6	# <CJK>
+0xF86C	0x9DF2	# <CJK>
+0xF86D	0x9DF0	# <CJK>
+0xF86E	0x9DE2	# <CJK>
+0xF86F	0x9DEC	# <CJK>
+0xF870	0x9DF4	# <CJK>
+0xF871	0x9DF3	# <CJK>
+0xF872	0x9DE8	# <CJK>
+0xF873	0x9DED	# <CJK>
+0xF874	0x9EC2	# <CJK>
+0xF875	0x9ED0	# <CJK>
+0xF876	0x9EF2	# <CJK>
+0xF877	0x9EF3	# <CJK>
+0xF878	0x9F06	# <CJK>
+0xF879	0x9F1C	# <CJK>
+0xF87A	0x9F38	# <CJK>
+0xF87B	0x9F37	# <CJK>
+0xF87C	0x9F36	# <CJK>
+0xF87D	0x9F43	# <CJK>
+0xF87E	0x9F4F	# <CJK>
+0xF8A1	0x9F71	# <CJK>
+0xF8A2	0x9F70	# <CJK>
+0xF8A3	0x9F6E	# <CJK>
+0xF8A4	0x9F6F	# <CJK>
+0xF8A5	0x56D3	# <CJK>
+0xF8A6	0x56CD	# <CJK>
+0xF8A7	0x5B4E	# <CJK>
+0xF8A8	0x5C6D	# <CJK>
+0xF8A9	0x652D	# <CJK>
+0xF8AA	0x66ED	# <CJK>
+0xF8AB	0x66EE	# <CJK>
+0xF8AC	0x6B13	# <CJK>
+0xF8AD	0x705F	# <CJK>
+0xF8AE	0x7061	# <CJK>
+0xF8AF	0x705D	# <CJK>
+0xF8B0	0x7060	# <CJK>
+0xF8B1	0x7223	# <CJK>
+0xF8B2	0x74DB	# <CJK>
+0xF8B3	0x74E5	# <CJK>
+0xF8B4	0x77D5	# <CJK>
+0xF8B5	0x7938	# <CJK>
+0xF8B6	0x79B7	# <CJK>
+0xF8B7	0x79B6	# <CJK>
+0xF8B8	0x7C6A	# <CJK>
+0xF8B9	0x7E97	# <CJK>
+0xF8BA	0x7F89	# <CJK>
+0xF8BB	0x826D	# <CJK>
+0xF8BC	0x8643	# <CJK>
+0xF8BD	0x8838	# <CJK>
+0xF8BE	0x8837	# <CJK>
+0xF8BF	0x8835	# <CJK>
+0xF8C0	0x884B	# <CJK>
+0xF8C1	0x8B94	# <CJK>
+0xF8C2	0x8B95	# <CJK>
+0xF8C3	0x8E9E	# <CJK>
+0xF8C4	0x8E9F	# <CJK>
+0xF8C5	0x8EA0	# <CJK>
+0xF8C6	0x8E9D	# <CJK>
+0xF8C7	0x91BE	# <CJK>
+0xF8C8	0x91BD	# <CJK>
+0xF8C9	0x91C2	# <CJK>
+0xF8CA	0x946B	# <CJK>
+0xF8CB	0x9468	# <CJK>
+0xF8CC	0x9469	# <CJK>
+0xF8CD	0x96E5	# <CJK>
+0xF8CE	0x9746	# <CJK>
+0xF8CF	0x9743	# <CJK>
+0xF8D0	0x9747	# <CJK>
+0xF8D1	0x97C7	# <CJK>
+0xF8D2	0x97E5	# <CJK>
+0xF8D3	0x9A5E	# <CJK>
+0xF8D4	0x9AD5	# <CJK>
+0xF8D5	0x9B59	# <CJK>
+0xF8D6	0x9C63	# <CJK>
+0xF8D7	0x9C67	# <CJK>
+0xF8D8	0x9C66	# <CJK>
+0xF8D9	0x9C62	# <CJK>
+0xF8DA	0x9C5E	# <CJK>
+0xF8DB	0x9C60	# <CJK>
+0xF8DC	0x9E02	# <CJK>
+0xF8DD	0x9DFE	# <CJK>
+0xF8DE	0x9E07	# <CJK>
+0xF8DF	0x9E03	# <CJK>
+0xF8E0	0x9E06	# <CJK>
+0xF8E1	0x9E05	# <CJK>
+0xF8E2	0x9E00	# <CJK>
+0xF8E3	0x9E01	# <CJK>
+0xF8E4	0x9E09	# <CJK>
+0xF8E5	0x9DFF	# <CJK>
+0xF8E6	0x9DFD	# <CJK>
+0xF8E7	0x9E04	# <CJK>
+0xF8E8	0x9EA0	# <CJK>
+0xF8E9	0x9F1E	# <CJK>
+0xF8EA	0x9F46	# <CJK>
+0xF8EB	0x9F74	# <CJK>
+0xF8EC	0x9F75	# <CJK>
+0xF8ED	0x9F76	# <CJK>
+0xF8EE	0x56D4	# <CJK>
+0xF8EF	0x652E	# <CJK>
+0xF8F0	0x65B8	# <CJK>
+0xF8F1	0x6B18	# <CJK>
+0xF8F2	0x6B19	# <CJK>
+0xF8F3	0x6B17	# <CJK>
+0xF8F4	0x6B1A	# <CJK>
+0xF8F5	0x7062	# <CJK>
+0xF8F6	0x7226	# <CJK>
+0xF8F7	0x72AA	# <CJK>
+0xF8F8	0x77D8	# <CJK>
+0xF8F9	0x77D9	# <CJK>
+0xF8FA	0x7939	# <CJK>
+0xF8FB	0x7C69	# <CJK>
+0xF8FC	0x7C6B	# <CJK>
+0xF8FD	0x7CF6	# <CJK>
+0xF8FE	0x7E9A	# <CJK>
+0xF940	0x7E98	# <CJK>
+0xF941	0x7E9B	# <CJK>
+0xF942	0x7E99	# <CJK>
+0xF943	0x81E0	# <CJK>
+0xF944	0x81E1	# <CJK>
+0xF945	0x8646	# <CJK>
+0xF946	0x8647	# <CJK>
+0xF947	0x8648	# <CJK>
+0xF948	0x8979	# <CJK>
+0xF949	0x897A	# <CJK>
+0xF94A	0x897C	# <CJK>
+0xF94B	0x897B	# <CJK>
+0xF94C	0x89FF	# <CJK>
+0xF94D	0x8B98	# <CJK>
+0xF94E	0x8B99	# <CJK>
+0xF94F	0x8EA5	# <CJK>
+0xF950	0x8EA4	# <CJK>
+0xF951	0x8EA3	# <CJK>
+0xF952	0x946E	# <CJK>
+0xF953	0x946D	# <CJK>
+0xF954	0x946F	# <CJK>
+0xF955	0x9471	# <CJK>
+0xF956	0x9473	# <CJK>
+0xF957	0x9749	# <CJK>
+0xF958	0x9872	# <CJK>
+0xF959	0x995F	# <CJK>
+0xF95A	0x9C68	# <CJK>
+0xF95B	0x9C6E	# <CJK>
+0xF95C	0x9C6D	# <CJK>
+0xF95D	0x9E0B	# <CJK>
+0xF95E	0x9E0D	# <CJK>
+0xF95F	0x9E10	# <CJK>
+0xF960	0x9E0F	# <CJK>
+0xF961	0x9E12	# <CJK>
+0xF962	0x9E11	# <CJK>
+0xF963	0x9EA1	# <CJK>
+0xF964	0x9EF5	# <CJK>
+0xF965	0x9F09	# <CJK>
+0xF966	0x9F47	# <CJK>
+0xF967	0x9F78	# <CJK>
+0xF968	0x9F7B	# <CJK>
+0xF969	0x9F7A	# <CJK>
+0xF96A	0x9F79	# <CJK>
+0xF96B	0x571E	# <CJK>
+0xF96C	0x7066	# <CJK>
+0xF96D	0x7C6F	# <CJK>
+0xF96E	0x883C	# <CJK>
+0xF96F	0x8DB2	# <CJK>
+0xF970	0x8EA6	# <CJK>
+0xF971	0x91C3	# <CJK>
+0xF972	0x9474	# <CJK>
+0xF973	0x9478	# <CJK>
+0xF974	0x9476	# <CJK>
+0xF975	0x9475	# <CJK>
+0xF976	0x9A60	# <CJK>
+0xF977	0x9C74	# <CJK>
+0xF978	0x9C73	# <CJK>
+0xF979	0x9C71	# <CJK>
+0xF97A	0x9C75	# <CJK>
+0xF97B	0x9E14	# <CJK>
+0xF97C	0x9E13	# <CJK>
+0xF97D	0x9EF6	# <CJK>
+0xF97E	0x9F0A	# <CJK>
+0xF9A1	0x9FA4	# <CJK>
+0xF9A2	0x7068	# <CJK>
+0xF9A3	0x7065	# <CJK>
+0xF9A4	0x7CF7	# <CJK>
+0xF9A5	0x866A	# <CJK>
+0xF9A6	0x883E	# <CJK>
+0xF9A7	0x883D	# <CJK>
+0xF9A8	0x883F	# <CJK>
+0xF9A9	0x8B9E	# <CJK>
+0xF9AA	0x8C9C	# <CJK>
+0xF9AB	0x8EA9	# <CJK>
+0xF9AC	0x8EC9	# <CJK>
+0xF9AD	0x974B	# <CJK>
+0xF9AE	0x9873	# <CJK>
+0xF9AF	0x9874	# <CJK>
+0xF9B0	0x98CC	# <CJK>
+0xF9B1	0x9961	# <CJK>
+0xF9B2	0x99AB	# <CJK>
+0xF9B3	0x9A64	# <CJK>
+0xF9B4	0x9A66	# <CJK>
+0xF9B5	0x9A67	# <CJK>
+0xF9B6	0x9B24	# <CJK>
+0xF9B7	0x9E15	# <CJK>
+0xF9B8	0x9E17	# <CJK>
+0xF9B9	0x9F48	# <CJK>
+0xF9BA	0x6207	# <CJK>
+0xF9BB	0x6B1E	# <CJK>
+0xF9BC	0x7227	# <CJK>
+0xF9BD	0x864C	# <CJK>
+0xF9BE	0x8EA8	# <CJK>
+0xF9BF	0x9482	# <CJK>
+0xF9C0	0x9480	# <CJK>
+0xF9C1	0x9481	# <CJK>
+0xF9C2	0x9A69	# <CJK>
+0xF9C3	0x9A68	# <CJK>
+0xF9C4	0x9B2E	# <CJK>
+0xF9C5	0x9E19	# <CJK>
+0xF9C6	0x7229	# <CJK>
+0xF9C7	0x864B	# <CJK>
+0xF9C8	0x8B9F	# <CJK>
+0xF9C9	0x9483	# <CJK>
+0xF9CA	0x9C79	# <CJK>
+0xF9CB	0x9EB7	# <CJK>
+0xF9CC	0x7675	# <CJK>
+0xF9CD	0x9A6B	# <CJK>
+0xF9CE	0x9C7A	# <CJK>
+0xF9CF	0x9E1D	# <CJK>
+0xF9D0	0x7069	# <CJK>
+0xF9D1	0x706A	# <CJK>
+0xF9D2	0x9EA4	# <CJK>
+0xF9D3	0x9F7E	# <CJK>
+0xF9D4	0x9F49	# <CJK>
+0xF9D5	0x9F98	# <CJK>
+#
+0xA15A	0xFF3F #SPACING UNDERSCORE
+0xA1FE	0x2571 #LT DIAG UP RIGHT TO LOW LEFT
+0xA240	0x2572 #LT DIAG UP LEFT TO LOW RIGHTG
+0xA2CC	0x5341 #HANGHZOU NUMERAL TEN
+0xA2CE	0x5345 #HANGZHOU NUMERAL THIRTY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/Big5.nr	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,5 @@
+0xA15A	0xFF3F #SPACING UNDERSCORE
+0xA1FE	0x2571 #LT DIAG UP RIGHT TO LOW LEFT
+0xA240	0x2572 #LT DIAG UP LEFT TO LOW RIGHTG
+0xA2CC	0x5341 #HANGHZOU NUMERAL TEN
+0xA2CE	0x5345 #HANGZHOU NUMERAL THIRTY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/HKSCS2001.c2b	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,2187 @@
+#  Generated from HKSCS2001.Encoder
+#
+#  "0xc074 0x9f9c" is the only entry commented out because it
+#  exists in Big.map already, so should not be in c2b mapping
+#
+#  0xC074    0x9F9C
+#
+0x8845    0xF308
+0x8847    0xF30A
+0x8848    0xF30B
+0x884B    0xF30E
+0x884C    0xF30F
+0x884E    0xF311
+0x8853    0xF316
+0x8940    0xF3A0
+0x8941    0xF3A1
+0x894C    0xF3AC
+0x89B2    0xF3F0
+0x89B7    0xF3F5
+0x89BA    0xF3F8
+0x89BB    0xF3F9
+0x89BC    0xF3FA
+0x89BE    0xF3FC
+0x89BF    0xF3FD
+0x89C5    0xF403
+0x89CA    0xF408
+0x89CB    0xF409
+0x89CC    0xF40A
+0x89CD    0xF40B
+0x89D5    0xF413
+0x89D7    0xF415
+0x89DA    0xF418
+0x89DB    0xF419
+0x89DC    0xF41A
+0x89E6    0xF424
+0x89E8    0xF426
+0x89EA    0xF428
+0x89ED    0xF42B
+0x89EE    0xF42C
+0x89EF    0xF42D
+0x89F9    0xF437
+0x89FB    0xF439
+0x89FC    0xF43A
+0x89FE    0xF43C
+0x8A40    0xF43D
+0x8A43    0xF440
+0x8A44    0xF441
+0x8A45    0xF442
+0x8A47    0xF444
+0x8A48    0xF445
+0x8A49    0xF446
+0x8A4B    0xF448
+0x8A4C    0xF449
+0x8A4D    0xF44A
+0x8A4E    0xF44B
+0x8A50    0xF44D
+0x8A51    0xF44E
+0x8A52    0xF44F
+0x8A53    0xF450
+0x8A54    0xF451
+0x8A55    0xF452
+0x8A57    0xF454
+0x8A58    0xF455
+0x8A59    0xF456
+0x8A5A    0xF457
+0x8A5D    0xF45A
+0x8A5E    0xF45B
+0x8A5F    0xF45C
+0x8A60    0xF45D
+0x8A61    0xF45E
+0x8A62    0xF45F
+0x8A64    0xF461
+0x8A65    0xF462
+0x8A66    0xF463
+0x8A67    0xF464
+0x8A68    0xF465
+0x8A69    0xF466
+0x8A6B    0xF468
+0x8A6C    0xF469
+0x8A6D    0xF46A
+0x8A6E    0xF46B
+0x8A6F    0xF46C
+0x8A70    0xF46D
+0x8A71    0xF46E
+0x8A72    0xF46F
+0x8A76    0xF473
+0x8A77    0xF474
+0x8A7A    0xF477
+0x8A7B    0xF478
+0x8A7C    0xF479
+0x8A7D    0xF47A
+0x8A7E    0xF47B
+0x8AA1    0xF47C
+0x8AA2    0xF47D
+0x8AA3    0xF47E
+0x8AA5    0xF480
+0x8AA6    0xF481
+0x8AA8    0xF483
+0x8AA9    0xF484
+0x8AAA    0xF485
+0x8AAC    0xF487
+0x8AAD    0xF488
+0x8AAE    0xF489
+0x8AB0    0xF48B
+0x8AB2    0xF48D
+0x8AB3    0xF48E
+0x8AB4    0xF48F
+0x8AB5    0xF490
+0x8AB6    0xF491
+0x8AB8    0xF493
+0x8AB9    0xF494
+0x8ABB    0xF496
+0x8ABC    0xF497
+0x8ABD    0xF498
+0x8AC0    0xF49B
+0x8AC2    0xF49D
+0x8AC3    0xF49E
+0x8AC7    0xF4A2
+0x8AC9    0xF4A4
+0x8ACA    0xF4A5
+0x8ACB    0xF4A6
+0x8ACC    0xF4A7
+0x8ACE    0xF4A9
+0x8ACF    0xF4AA
+0x8AD0    0xF4AB
+0x8AD1    0xF4AC
+0x8AD2    0xF4AD
+0x8AD3    0xF4AE
+0x8AD4    0xF4AF
+0x8AD5    0xF4B0
+0x8AD7    0xF4B2
+0x8AD8    0xF4B3
+0x8AD9    0xF4B4
+0x8ADA    0xF4B5
+0x8ADC    0xF4B7
+0x8ADF    0xF4BA
+0x8AE0    0xF4BB
+0x8AE1    0xF4BC
+0x8AE2    0xF4BD
+0x8AE3    0xF4BE
+0x8AE4    0xF4BF
+0x8AE5    0xF4C0
+0x8AE6    0xF4C1
+0x8AE8    0xF4C3
+0x8AE9    0xF4C4
+0x8AEA    0xF4C5
+0x8AEB    0xF4C6
+0x8AEC    0xF4C7
+0x8AED    0xF4C8
+0x8AEE    0xF4C9
+0x8AEF    0xF4CA
+0x8AF0    0xF4CB
+0x8AF1    0xF4CC
+0x8AF2    0xF4CD
+0x8AF3    0xF4CE
+0x8AF4    0xF4CF
+0x8AF6    0xF4D1
+0x8AF7    0xF4D2
+0x8AF8    0xF4D3
+0x8AF9    0xF4D4
+0x8AFA    0xF4D5
+0x8AFB    0xF4D6
+0x8AFC    0xF4D7
+0x8AFE    0xF4D9
+0x8B40    0xF4DA
+0x8B41    0xF4DB
+0x8B42    0xF4DC
+0x8B43    0xF4DD
+0x8B44    0xF4DE
+0x8B45    0xF4DF
+0x8B46    0xF4E0
+0x8B47    0xF4E1
+0x8B48    0xF4E2
+0x8B49    0xF4E3
+0x8B4A    0xF4E4
+0x8B4B    0xF4E5
+0x8B4C    0xF4E6
+0x8B4D    0xF4E7
+0x8B4E    0xF4E8
+0x8B4F    0xF4E9
+0x8B55    0xF4EF
+0x8B58    0xF4F2
+0x8B59    0xF4F3
+0x8B5E    0xF4F8
+0x8B60    0xF4FA
+0x8B62    0xF4FC
+0x8B64    0xF4FE
+0x8B65    0xF4FF
+0x8B66    0xF500
+0x8B67    0xF501
+0x8B68    0xF502
+0x8B69    0xF503
+0x8B6A    0xF504
+0x8B6B    0xF505
+0x8B6D    0xF507
+0x8B6E    0xF508
+0x8B6F    0xF509
+0x8B70    0xF50A
+0x8B71    0xF50B
+0x8B72    0xF50C
+0x8B73    0xF50D
+0x8B74    0xF50E
+0x8B75    0xF50F
+0x8B76    0xF510
+0x8B77    0xF511
+0x8B79    0xF513
+0x8B7A    0xF514
+0x8B7B    0xF515
+0x8B7C    0xF516
+0x8B7E    0xF518
+0x8BA1    0xF519
+0x8BA2    0xF51A
+0x8BA3    0xF51B
+0x8BA4    0xF51C
+0x8BA5    0xF51D
+0x8BA6    0xF51E
+0x8BA7    0xF51F
+0x8BA8    0xF520
+0x8BA9    0xF521
+0x8BAA    0xF522
+0x8BAB    0xF523
+0x8BAC    0xF524
+0x8BAD    0xF525
+0x8BAE    0xF526
+0x8BB1    0xF529
+0x8BB2    0xF52A
+0x8BB5    0xF52D
+0x8BB6    0xF52E
+0x8BB8    0xF530
+0x8BBB    0xF533
+0x8BBC    0xF534
+0x8BBE    0xF536
+0x8BC2    0xF53A
+0x8BC3    0xF53B
+0x8BC5    0xF53D
+0x8BC8    0xF540
+0x8BCC    0xF544
+0x8BD6    0xF54E
+0x8BDB    0xF553
+0x8BDC    0xF554
+0x8BDE    0xF556
+0x8BE1    0xF559
+0x8BE2    0xF55A
+0x8BE6    0xF55E
+0x8BED    0xF565
+0x8BF3    0xF56B
+0x8BF8    0xF907
+0x8BFA    0xF572
+0x8C42    0xF579
+0x8C46    0xF57D
+0x8C4A    0xF581
+0x8C4C    0xF583
+0x8C4E    0xF585
+0x8C54    0xF58B
+0x8C55    0xF58C
+0x8C57    0xF58E
+0x8C5C    0xF593
+0x8C5F    0xF596
+0x8C64    0xF59B
+0x8C65    0xF59C
+0x8C69    0xF5A0
+0x8C6C    0xF5A3
+0x8C79    0xF5B0
+0x8C7D    0xF5B4
+0x8CA1    0xF5B6
+0x8CA4    0xF5B9
+0x8CA8    0xF5BD
+0x8CAB    0xF5C0
+0x8CAF    0xF5C4
+0x8CB0    0xF5C5
+0x8CC1    0xF5D6
+0x8CC2    0xF5D7
+0x8CCF    0xF5E4
+0x8CD1    0xF5E6
+0x8CD3    0xF5E8
+0x8CD5    0xF5EA
+0x8CD6    0xF5EB
+0x8D63    0xF637
+0x8D64    0xF638
+0x8D67    0xF63B
+0x8D68    0xF63C
+0x8D6D    0xF641
+0x8D6E    0xF642
+0x8D6F    0xF643
+0x8D70    0xF644
+0x8D74    0xF648
+0x8D78    0xF64C
+0x8D7D    0xF651
+0x8DA1    0xF653
+0x8DA6    0xF658
+0x8DAB    0xF65D
+0x8DAD    0xF65F
+0x8DB0    0xF662
+0x8DB2    0xF664
+0x8DB4    0xF666
+0x8DB7    0xF669
+0x8DBA    0xF66C
+0x8DBB    0xF66D
+0x8DBC    0xF66E
+0x8DC3    0xF675
+0x8DC5    0xF677
+0x8DCA    0xF67C
+0x8DCC    0xF67E
+0x8DD6    0xF688
+0x8DDB    0xF68D
+0x8DE2    0xF694
+0x8DEB    0xF69D
+0x8DEC    0xF69E
+0x8DEF    0xF6A1
+0x8DF0    0xF6A2
+0x8DF3    0xF6A5
+0x8DF5    0xF6A7
+0x8DFB    0xF6AD
+0x8DFC    0xF6AE
+0x8DFD    0xF6AF
+0x8DFE    0xF6B0
+0x8E40    0xE311
+0x8E42    0xE313
+0x8E44    0xE315
+0x8E45    0xE316
+0x8E47    0xE318
+0x8E4A    0xE31B
+0x8E4B    0xE31C
+0x8E4E    0xE31F
+0x8E54    0xE325
+0x8E55    0xE326
+0x8E59    0xE32A
+0x8E5B    0xE32C
+0x8E5F    0xE330
+0x8E60    0xE331
+0x8E64    0xE335
+0x8E65    0xE336
+0x8E6A    0xE33B
+0x8E6B    0xE33C
+0x8E6C    0xE33D
+0x8E71    0xE342
+0x8E74    0xE345
+0x8E77    0xE348
+0x8EA2    0xE351
+0x8EA3    0xE352
+0x8EA5    0xE354
+0x8EAC    0xE35B
+0x8EAD    0xE35C
+0x8EAF    0xE35E
+0x8EB1    0xE360
+0x8EB3    0xE362
+0x8EB5    0xE364
+0x8EB6    0xE365
+0x8EB9    0xE368
+0x8EC0    0xE36F
+0x8EC3    0xE372
+0x8EC5    0xE374
+0x8EC6    0xE375
+0x8EC7    0xE376
+0x8EC8    0xE377
+0x8EC9    0xE378
+0x8ECA    0xE379
+0x8ECC    0xE37B
+0x8ED2    0xE381
+0x8ED3    0xE382
+0x8ED7    0xE386
+0x8ED8    0xE387
+0x8ED9    0xE388
+0x8EDA    0xE389
+0x8EDB    0xE38A
+0x8EDE    0xE38D
+0x8EE2    0xE391
+0x8EE4    0xE393
+0x8EE5    0xE394
+0x8EE7    0xE396
+0x8EE9    0xE398
+0x8EEB    0xE39A
+0x8EEC    0xE39B
+0x8EED    0xE39C
+0x8EEF    0xE39E
+0x8EF0    0xE39F
+0x8EF1    0xE3A0
+0x8EF3    0xE3A2
+0x8EF6    0xE3A5
+0x8EF7    0xE3A6
+0x8EF8    0xE3A7
+0x8EF9    0xE3A8
+0x8EFA    0xE3A9
+0x8EFD    0xE3AC
+0x8EFE    0xE3AD
+0x8F43    0xE3B1
+0x8F44    0xE3B2
+0x8F45    0xE3B3
+0x8F46    0xE3B4
+0x8F47    0xE3B5
+0x8F4B    0xE3B9
+0x8F4C    0xE3BA
+0x8F4D    0xE3BB
+0x8F4E    0xE3BC
+0x8F4F    0xE3BD
+0x8F50    0xE3BE
+0x8F54    0xE3C2
+0x8F55    0xE3C3
+0x8F59    0xE3C7
+0x8F5A    0xE3C8
+0x8F5D    0xE3CB
+0x8F5E    0xE3CC
+0x8F5F    0xE3CD
+0x8F61    0xE3CF
+0x8F63    0xE3D1
+0x8F64    0xE3D2
+0x8F67    0xE3D5
+0x8F6A    0xE3D8
+0x8F6B    0xE3D9
+0x8F6C    0xE3DA
+0x8F70    0xE3DE
+0x8F73    0xE3E1
+0x8F74    0xE3E2
+0x8F75    0xE3E3
+0x8F76    0xE3E4
+0x8F79    0xE3E7
+0x8F7A    0xE3E8
+0x8F7C    0xE3EA
+0x8FA1    0xE3ED
+0x8FA2    0xE3EE
+0x8FA4    0xE3F0
+0x8FA6    0xE3F2
+0x8FA7    0xE3F3
+0x8FA8    0xE3F4
+0x8FA9    0xE3F5
+0x8FAB    0xE3F7
+0x8FAC    0xE3F8
+0x8FAE    0xE3FA
+0x8FB1    0xE3FD
+0x8FB3    0xE3FF
+0x8FBA    0xE406
+0x8FBD    0xE409
+0x8FBE    0xE40A
+0x8FBF    0xE40B
+0x8FC2    0xE40E
+0x8FC8    0xE414
+0x8FCF    0xE41B
+0x8FD1    0xE41D
+0x8FD2    0xE41E
+0x8FD7    0xE423
+0x8FD9    0xE425
+0x8FDA    0xE426
+0x8FDB    0xE427
+0x8FDC    0xE428
+0x8FE0    0xE42C
+0x8FE1    0xE42D
+0x8FE6    0xE432
+0x8FEA    0xE436
+0x8FEB    0xE437
+0x8FEE    0xE43A
+0x8FEF    0xE43B
+0x8FF0    0xE43C
+0x8FF1    0xE43D
+0x8FF2    0xE43E
+0x8FF4    0xE440
+0x8FF5    0xE441
+0x8FF8    0xE444
+0x8FFC    0xE448
+0x8FFD    0xE449
+0x9041    0xE44C
+0x9042    0xE44D
+0x9043    0xE44E
+0x9044    0xE44F
+0x9045    0xE450
+0x9046    0xE451
+0x904E    0xE459
+0x904F    0xE45A
+0x9052    0xE45D
+0x9053    0xE45E
+0x9055    0xE460
+0x9056    0xE461
+0x9057    0xE462
+0x9058    0xE463
+0x905A    0xE465
+0x905C    0xE467
+0x905D    0xE468
+0x905E    0xE469
+0x905F    0xE46A
+0x9060    0xE46B
+0x9061    0xE46C
+0x9063    0xE46E
+0x9064    0xE46F
+0x9066    0xE471
+0x9067    0xE472
+0x9069    0xE474
+0x906B    0xE476
+0x906F    0xE47A
+0x9073    0xE47E
+0x9074    0xE47F
+0x9079    0xE484
+0x907B    0xE486
+0x907C    0xE487
+0x907D    0xE488
+0x907E    0xE489
+0x90A1    0xE48A
+0x90A4    0xE48D
+0x90A5    0xE48E
+0x90A8    0xE491
+0x90A9    0xE492
+0x90AA    0xE493
+0x90AC    0xE495
+0x90AD    0xE496
+0x90AE    0xE497
+0x90B7    0xE4A0
+0x90B8    0xE4A1
+0x90B9    0xE4A2
+0x90BA    0xE4A3
+0x90BB    0xE4A4
+0x90BC    0xE4A5
+0x90C0    0xE4A9
+0x90C2    0xE4AB
+0x90C6    0xE4AF
+0x90C9    0xE4B2
+0x90CA    0xE4B3
+0x90CB    0xE4B4
+0x90CC    0xE4B5
+0x90CD    0xE4B6
+0x90CE    0xE4B7
+0x90CF    0xE4B8
+0x90D0    0xE4B9
+0x90D1    0xE4BA
+0x90D5    0xE4BE
+0x90D6    0xE4BF
+0x90D7    0xE4C0
+0x90D8    0xE4C1
+0x90DD    0xE4C6
+0x90E0    0xE4C9
+0x90E4    0xE4CD
+0x90E5    0xE4CE
+0x90ED    0xE4D6
+0x90F0    0xE4D9
+0x90F3    0xE4DC
+0x90F4    0xE4DD
+0x90F5    0xE4DE
+0x90FA    0xE4E3
+0x90FB    0xE4E4
+0x90FC    0xE4E5
+0x90FD    0xE4E6
+0x90FE    0xE4E7
+0x9140    0xE4E8
+0x9145    0xE4ED
+0x9146    0xE4EE
+0x9147    0xE4EF
+0x914E    0xE4F6
+0x914F    0xE4F7
+0x9150    0xE4F8
+0x9151    0xE4F9
+0x9157    0xE4FF
+0x9158    0xE500
+0x9159    0xE501
+0x915A    0xE502
+0x915D    0xE505
+0x915F    0xE507
+0x9162    0xE50A
+0x9165    0xE50D
+0x9166    0xE50E
+0x9167    0xE50F
+0x916A    0xE512
+0x916C    0xE514
+0x916E    0xE516
+0x9172    0xE51A
+0x9174    0xE51C
+0x9175    0xE51D
+0x9176    0xE51E
+0x9177    0xE51F
+0x9178    0xE520
+0x9179    0xE521
+0x917C    0xE524
+0x91A2    0xE528
+0x91A3    0xE529
+0x91A4    0xE52A
+0x91A5    0xE52B
+0x91A6    0xE52C
+0x91A8    0xE52E
+0x91A9    0xE52F
+0x91AE    0xE534
+0x91B1    0xE537
+0x91B3    0xE539
+0x91B4    0xE53A
+0x91B5    0xE53B
+0x91B7    0xE53D
+0x91B8    0xE53E
+0x91BB    0xE541
+0x91BD    0xE543
+0x91C5    0xE54B
+0x91CD    0xE553
+0x91CE    0xE554
+0x91CF    0xE555
+0x91D1    0xE557
+0x91D2    0xE558
+0x91D3    0xE559
+0x91D5    0xE55B
+0x91D6    0xE55C
+0x91D8    0xE55E
+0x91D9    0xE55F
+0x91DC    0xE562
+0x91E0    0xE566
+0x91E1    0xE567
+0x91E3    0xE569
+0x91E7    0xE56D
+0x91E8    0xE56E
+0x91EA    0xE570
+0x91EC    0xE572
+0x91ED    0xE573
+0x91EE    0xE574
+0x91EF    0xE575
+0x91F0    0xE576
+0x91F1    0xE577
+0x91F2    0xE578
+0x91F3    0xE579
+0x91F4    0xE57A
+0x91F5    0xE57B
+0x91F6    0xE57C
+0x91F7    0xE57D
+0x91F8    0xE57E
+0x91F9    0xE57F
+0x91FA    0xE580
+0x91FC    0xE582
+0x91FD    0xE583
+0x91FE    0xE584
+0x9240    0xE585
+0x9241    0xE586
+0x9243    0xE588
+0x9246    0xE58B
+0x9247    0xE58C
+0x9248    0xE58D
+0x9249    0xE58E
+0x924A    0xE58F
+0x924B    0xE590
+0x924C    0xE591
+0x924D    0xE592
+0x924E    0xE593
+0x924F    0xE594
+0x9251    0xE596
+0x9252    0xE597
+0x9253    0xE598
+0x9255    0xE59A
+0x9257    0xE59C
+0x9258    0xE59D
+0x9259    0xE59E
+0x925A    0xE59F
+0x925B    0xE5A0
+0x925C    0xE5A1
+0x925F    0xE5A4
+0x9261    0xE5A6
+0x9262    0xE5A7
+0x9263    0xE5A8
+0x9265    0xE5AA
+0x9269    0xE5AE
+0x926A    0xE5AF
+0x926C    0xE5B1
+0x926D    0xE5B2
+0x9270    0xE5B5
+0x9272    0xE5B7
+0x9273    0xE5B8
+0x9274    0xE5B9
+0x9275    0xE5BA
+0x9276    0xE5BB
+0x9277    0xE5BC
+0x9279    0xE5BE
+0x927A    0xE5BF
+0x927B    0xE5C0
+0x927D    0xE5C2
+0x92A5    0xE5C8
+0x92A6    0xE5C9
+0x92B4    0xE5D7
+0x92B5    0xE5D8
+0x92B6    0xE5D9
+0x92B8    0xE5DB
+0x92B9    0xE5DC
+0x92BC    0xE5DF
+0x92BD    0xE5E0
+0x92BE    0xE5E1
+0x92BF    0xE5E2
+0x92C0    0xE5E3
+0x92C2    0xE5E5
+0x92C3    0xE5E6
+0x92C6    0xE5E9
+0x92C9    0xE5EC
+0x92CB    0xE5EE
+0x92CC    0xE5EF
+0x92CD    0xE5F0
+0x92CE    0xE5F1
+0x92D0    0xE5F3
+0x92D2    0xE5F5
+0x92D7    0xE5FA
+0x92D8    0xE5FB
+0x92D9    0xE5FC
+0x92DB    0xE5FE
+0x92DD    0xE600
+0x92DF    0xE602
+0x92E1    0xE604
+0x92E9    0xE60C
+0x92EC    0xE60F
+0x92ED    0xE610
+0x92EE    0xE611
+0x92EF    0xE612
+0x92F6    0xE619
+0x92F7    0xE61A
+0x92F8    0xE61B
+0x92F9    0xE61C
+0x92FA    0xE61D
+0x92FE    0xE621
+0x9341    0xE623
+0x9342    0xE624
+0x9345    0xE627
+0x9347    0xE629
+0x9349    0xE62B
+0x934B    0xE62D
+0x9350    0xE632
+0x9351    0xE633
+0x9352    0xE634
+0x9355    0xE637
+0x9356    0xE638
+0x9357    0xE639
+0x9358    0xE63A
+0x9359    0xE63B
+0x935A    0xE63C
+0x935B    0xE63D
+0x935D    0xE63F
+0x935E    0xE640
+0x935F    0xE641
+0x9360    0xE642
+0x9363    0xE645
+0x9364    0xE646
+0x9366    0xE648
+0x9369    0xE64B
+0x936C    0xE64E
+0x936D    0xE64F
+0x936F    0xE651
+0x9370    0xE652
+0x9371    0xE653
+0x9372    0xE654
+0x9373    0xE655
+0x9375    0xE657
+0x9376    0xE658
+0x9377    0xE659
+0x937B    0xE65D
+0x937C    0xE65E
+0x937D    0xE65F
+0x937E    0xE660
+0x93A2    0xE662
+0x93A3    0xE663
+0x93A4    0xE664
+0x93A5    0xE665
+0x93A6    0xE666
+0x93A7    0xE667
+0x93A8    0xE668
+0x93AA    0xE66A
+0x93AE    0xE66E
+0x93AF    0xE66F
+0x93B1    0xE671
+0x93B5    0xE675
+0x93B6    0xE676
+0x93B7    0xE677
+0x93B8    0xE678
+0x93B9    0xE679
+0x93BB    0xE67B
+0x93BC    0xE67C
+0x93BD    0xE67D
+0x93BF    0xE67F
+0x93C0    0xE680
+0x93C1    0xE681
+0x93C2    0xE682
+0x93C3    0xE683
+0x93C4    0xE684
+0x93C5    0xE685
+0x93C6    0xE686
+0x93C7    0xE687
+0x93C8    0xE688
+0x93CA    0xE68A
+0x93CB    0xE68B
+0x93CC    0xE68C
+0x93CD    0xE68D
+0x93CE    0xE68E
+0x93CF    0xE68F
+0x93D0    0xE690
+0x93D2    0xE692
+0x93D4    0xE694
+0x93D6    0xE696
+0x93D7    0xE697
+0x93D9    0xE699
+0x93DA    0xE69A
+0x93DC    0xE69C
+0x93DD    0xE69D
+0x93DE    0xE69E
+0x93DF    0xE69F
+0x93E0    0xE6A0
+0x93E1    0xE6A1
+0x93E2    0xE6A2
+0x93E4    0xE6A4
+0x93E6    0xE6A6
+0x93E9    0xE6A9
+0x93EB    0xE6AB
+0x93EC    0xE6AC
+0x93ED    0xE6AD
+0x93F2    0xE6B2
+0x93F6    0xE6B6
+0x93F9    0xE6B9
+0x93FA    0xE6BA
+0x93FD    0xE6BD
+0x93FE    0xE6BE
+0x9441    0xE6C0
+0x9442    0xE6C1
+0x9446    0xE6C5
+0x9448    0xE6C7
+0x9449    0xE6C8
+0x944B    0xE6CA
+0x9452    0xE6D1
+0x9453    0xE6D2
+0x9458    0xE6D7
+0x9459    0xE6D8
+0x945B    0xE6DA
+0x945C    0xE6DB
+0x945E    0xE6DD
+0x945F    0xE6DE
+0x9460    0xE6DF
+0x9461    0xE6E0
+0x9462    0xE6E1
+0x9463    0xE6E2
+0x9464    0xE6E3
+0x9465    0xE6E4
+0x9466    0xE6E5
+0x9467    0xE6E6
+0x9469    0xE6E8
+0x946E    0xE6ED
+0x946F    0xE6EE
+0x9470    0xE6EF
+0x9472    0xE6F1
+0x9473    0xE6F2
+0x9474    0xE6F3
+0x9475    0xE6F4
+0x9478    0xE6F7
+0x9479    0xE6F8
+0x947B    0xE6FA
+0x947C    0xE6FB
+0x947D    0xE6FC
+0x947E    0xE6FD
+0x94A1    0xE6FE
+0x94A2    0xE6FF
+0x94A3    0xE700
+0x94A4    0xE701
+0x94A5    0xE702
+0x94A9    0xE706
+0x94AA    0xE707
+0x94AC    0xE709
+0x94AD    0xE70A
+0x94AF    0xE70C
+0x94B3    0xE710
+0x94B4    0xE711
+0x94B5    0xE712
+0x94B6    0xE713
+0x94B9    0xE716
+0x94BA    0xE717
+0x94BB    0xE718
+0x94BC    0xE719
+0x94BD    0xE71A
+0x94BE    0xE71B
+0x94C0    0xE71D
+0x94C7    0xE724
+0x94C8    0xE725
+0x94C9    0xE726
+0x94CE    0xE72B
+0x94D1    0xE72E
+0x94D2    0xE72F
+0x94D3    0xE730
+0x94D6    0xE733
+0x94D7    0xE734
+0x94D8    0xE735
+0x94D9    0xE736
+0x94DA    0xE737
+0x94DB    0xE738
+0x94DD    0xE73A
+0x94DE    0xE73B
+0x94DF    0xE73C
+0x94E0    0xE73D
+0x94E3    0xE740
+0x94E4    0xE741
+0x94E5    0xE742
+0x94E7    0xE744
+0x94EA    0xE747
+0x94EC    0xE749
+0x94EF    0xE74C
+0x94F0    0xE74D
+0x94F1    0xE74E
+0x94F2    0xE74F
+0x94F4    0xE751
+0x94F5    0xE752
+0x94FE    0xE75B
+0x9540    0xE75C
+0x9541    0xE75D
+0x9543    0xE75F
+0x9544    0xE760
+0x9545    0xE761
+0x9546    0xE762
+0x9548    0xE764
+0x9549    0xE765
+0x954B    0xE767
+0x954C    0xE768
+0x954D    0xE769
+0x9550    0xE76C
+0x9551    0xE76D
+0x9552    0xE76E
+0x9554    0xE770
+0x9559    0xE775
+0x955A    0xE776
+0x955B    0xE777
+0x955C    0xE778
+0x955E    0xE77A
+0x9560    0xE77C
+0x9561    0xE77D
+0x9562    0xE77E
+0x9564    0xE780
+0x9568    0xE784
+0x956A    0xE786
+0x956D    0xE789
+0x956F    0xE78B
+0x9571    0xE78D
+0x9573    0xE78F
+0x9574    0xE790
+0x9576    0xE792
+0x9578    0xE794
+0x957A    0xE796
+0x957B    0xE797
+0x957D    0xE799
+0x95A8    0xE7A2
+0x95AA    0xE7A4
+0x95AB    0xE7A5
+0x95AC    0xE7A6
+0x95AD    0xE7A7
+0x95AE    0xE7A8
+0x95AF    0xE7A9
+0x95B0    0xE7AA
+0x95B2    0xE7AC
+0x95B3    0xE7AD
+0x95B4    0xE7AE
+0x95B7    0xE7B1
+0x95BA    0xE7B4
+0x95BE    0xE7B8
+0x95C2    0xE7BC
+0x95C6    0xE7C0
+0x95C7    0xE7C1
+0x95CA    0xE7C4
+0x95CD    0xE7C7
+0x95D0    0xE7CA
+0x95D1    0xE7CB
+0x95D4    0xE7CE
+0x95D6    0xE7D0
+0x95D7    0xE7D1
+0x95DB    0xE7D5
+0x95DE    0xE7D8
+0x95DF    0xE7D9
+0x95E0    0xE7DA
+0x95E2    0xE7DC
+0x95E3    0xE7DD
+0x95EA    0xE7E4
+0x95EC    0xE7E6
+0x95ED    0xE7E7
+0x95EE    0xE7E8
+0x95EF    0xE7E9
+0x95F0    0xE7EA
+0x95F1    0xE7EB
+0x95F3    0xE7ED
+0x95F4    0xE7EE
+0x95F5    0xE7EF
+0x95F6    0xE7F0
+0x95F7    0xE7F1
+0x95F8    0xE7F2
+0x95F9    0xE7F3
+0x95FC    0xE7F6
+0x95FE    0xE7F8
+0x9641    0xE7FA
+0x9642    0xE7FB
+0x9643    0xE7FC
+0x9646    0xE7FF
+0x9647    0xE800
+0x9648    0xE801
+0x9649    0xE802
+0x964D    0xE806
+0x964F    0xE808
+0x9653    0xE80C
+0x9655    0xE80E
+0x9656    0xE80F
+0x9658    0xE811
+0x965A    0xE813
+0x965C    0xE815
+0x965D    0xE816
+0x965E    0xE817
+0x965F    0xE818
+0x9661    0xE81A
+0x9662    0xE81B
+0x9664    0xE81D
+0x9668    0xE821
+0x9669    0xE822
+0x966B    0xE824
+0x966E    0xE827
+0x966F    0xE828
+0x9674    0xE82D
+0x9675    0xE82E
+0x9676    0xE82F
+0x9678    0xE831
+0x9679    0xE832
+0x967C    0xE835
+0x967E    0xE837
+0x96A1    0xE838
+0x96A3    0xE83A
+0x96A4    0xE83B
+0x96A6    0xE83D
+0x96A8    0xE83F
+0x96AA    0xE841
+0x96AB    0xE842
+0x96B4    0xE84B
+0x96B6    0xE84D
+0x96B7    0xE84E
+0x96B9    0xE850
+0x96BA    0xE851
+0x96BC    0xE853
+0x96BE    0xE855
+0x96BF    0xE856
+0x96C0    0xE857
+0x96C1    0xE858
+0x96C4    0xE85B
+0x96C5    0xE85C
+0x96C6    0xE85D
+0x96C8    0xE85F
+0x96C9    0xE860
+0x96CA    0xE861
+0x96CB    0xE862
+0x96CE    0xE865
+0x96CF    0xE866
+0x96D0    0xE867
+0x96D2    0xE869
+0x96D3    0xE86A
+0x96D4    0xE86B
+0x96D5    0xE86C
+0x96D6    0xE86D
+0x96DA    0xE871
+0x96DF    0xE876
+0x96E1    0xE878
+0x96E6    0xE87D
+0x96E7    0xE87E
+0x96E8    0xE87F
+0x96E9    0xE880
+0x96F0    0xE887
+0x96F7    0xE88E
+0x96F8    0xE88F
+0x96FA    0xE891
+0x96FB    0xE892
+0x96FD    0xE894
+0x96FE    0xE895
+0x9743    0xE899
+0x9744    0xE89A
+0x9745    0xE89B
+0x9746    0xE89C
+0x9747    0xE89D
+0x974A    0xE8A0
+0x974B    0xE8A1
+0x974D    0xE8A3
+0x974E    0xE8A4
+0x974F    0xE8A5
+0x9750    0xE8A6
+0x9751    0xE8A7
+0x9753    0xE8A9
+0x9754    0xE8AA
+0x9756    0xE8AC
+0x9757    0xE8AD
+0x9758    0xE8AE
+0x9759    0xE8AF
+0x975A    0xE8B0
+0x975D    0xE8B3
+0x975F    0xE8B5
+0x9760    0xE8B6
+0x9761    0xE8B7
+0x9762    0xE8B8
+0x9766    0xE8BC
+0x9767    0xE8BD
+0x9768    0xE8BE
+0x9769    0xE8BF
+0x976A    0xE8C0
+0x976B    0xE8C1
+0x976C    0xE8C2
+0x976D    0xE8C3
+0x976F    0xE8C5
+0x9771    0xE8C7
+0x9775    0xE8CB
+0x9777    0xE8CD
+0x9778    0xE8CE
+0x977A    0xE8D0
+0x977B    0xE8D1
+0x977C    0xE8D2
+0x977D    0xE8D3
+0x97A1    0xE8D5
+0x97A2    0xE8D6
+0x97A4    0xE8D8
+0x97A5    0xE8D9
+0x97A6    0xE8DA
+0x97A9    0xE8DD
+0x97AB    0xE8DF
+0x97AC    0xE8E0
+0x97AD    0xE8E1
+0x97AE    0xE8E2
+0x97B0    0xE8E4
+0x97B1    0xE8E5
+0x97B2    0xE8E6
+0x97B4    0xE8E8
+0x97B5    0xE8E9
+0x97B6    0xE8EA
+0x97B8    0xE8EC
+0x97B9    0xE8ED
+0x97BA    0xE8EE
+0x97BD    0xE8F1
+0x97BE    0xE8F2
+0x97C0    0xE8F4
+0x97C1    0xE8F5
+0x97C2    0xE8F6
+0x97C3    0xE8F7
+0x97C5    0xE8F9
+0x97C6    0xE8FA
+0x97C7    0xE8FB
+0x97C9    0xE8FD
+0x97CA    0xE8FE
+0x97CC    0xE900
+0x97CD    0xE901
+0x97CF    0xE903
+0x97D2    0xE906
+0x97D3    0xE907
+0x97D4    0xE908
+0x97D7    0xE90B
+0x97D8    0xE90C
+0x97DA    0xE90E
+0x97DB    0xE90F
+0x97DC    0xE910
+0x97DD    0xE911
+0x97DE    0xE912
+0x97E1    0xE915
+0x97E3    0xE917
+0x97E4    0xE918
+0x97E7    0xE91B
+0x97E8    0xE91C
+0x97EA    0xE91E
+0x97EB    0xE91F
+0x97EC    0xE920
+0x97ED    0xE921
+0x97EE    0xE922
+0x97F1    0xE925
+0x97F2    0xE926
+0x97F3    0xE927
+0x97F4    0xE928
+0x97F5    0xE929
+0x97F6    0xE92A
+0x97F7    0xE92B
+0x97F8    0xE92C
+0x97FA    0xE92E
+0x97FB    0xE92F
+0x97FD    0xE931
+0x97FE    0xE932
+0x9840    0xE933
+0x9841    0xE934
+0x9842    0xE935
+0x9843    0xE936
+0x9845    0xE938
+0x9847    0xE93A
+0x9849    0xE93C
+0x984A    0xE93D
+0x984B    0xE93E
+0x984E    0xE941
+0x9851    0xE944
+0x9852    0xE945
+0x9853    0xE946
+0x9855    0xE948
+0x9856    0xE949
+0x985A    0xE94D
+0x985D    0xE950
+0x985F    0xE952
+0x9860    0xE953
+0x9861    0xE954
+0x9862    0xE955
+0x9864    0xE957
+0x9865    0xE958
+0x9867    0xE95A
+0x9869    0xE95C
+0x986A    0xE95D
+0x986B    0xE95E
+0x986D    0xE960
+0x986E    0xE961
+0x9871    0xE964
+0x9872    0xE965
+0x9874    0xE967
+0x9875    0xE968
+0x9879    0xE96C
+0x987B    0xE96E
+0x987C    0xE96F
+0x98A2    0xE973
+0x98A3    0xE974
+0x98A4    0xE975
+0x98A6    0xE977
+0x98A7    0xE978
+0x98A8    0xE979
+0x98A9    0xE97A
+0x98AA    0xE97B
+0x98AC    0xE97D
+0x98B0    0xE981
+0x98B1    0xE982
+0x98B6    0xE987
+0x98B9    0xE98A
+0x98BC    0xE98D
+0x98BD    0xE98E
+0x98C0    0xE991
+0x98C3    0xE994
+0x98C5    0xE996
+0x98CB    0xE99C
+0x98CC    0xE99D
+0x98CD    0xE99E
+0x98CE    0xE99F
+0x98D0    0xE9A1
+0x98D1    0xE9A2
+0x98D6    0xE9A7
+0x98D9    0xE9AA
+0x98DB    0xE9AC
+0x98DD    0xE9AE
+0x98DF    0xE9B0
+0x98E4    0xE9B5
+0x98E6    0xE9B7
+0x98E8    0xE9B9
+0x98E9    0xE9BA
+0x98EB    0xE9BC
+0x98EC    0xE9BD
+0x98F4    0xE9C5
+0x98FA    0xE9CB
+0x98FE    0xE9CF
+0x9940    0xE9D0
+0x9946    0xE9D6
+0x9948    0xE9D8
+0x994B    0xE9DB
+0x994E    0xE9DE
+0x9955    0xE9E5
+0x9956    0xE9E6
+0x9959    0xE9E9
+0x995B    0xE9EB
+0x995F    0xE9EF
+0x9967    0xE9F7
+0x996E    0xE9FE
+0x9973    0xEA03
+0x997A    0xEA0A
+0x997B    0xEA0B
+0x99A1    0xEA0F
+0x99A5    0xEA13
+0x99A7    0xEA15
+0x99AD    0xEA1B
+0x99B3    0xEA21
+0x99BC    0xEA2A
+0x99C3    0xEA31
+0x99C7    0xEA35
+0x99CE    0xEA3C
+0x99CF    0xEA3D
+0x99D5    0xEA43
+0x99DE    0xEA4C
+0x99E1    0xEA4F
+0x99E9    0xEA57
+0x99F5    0xEA63
+0x99F8    0xEA66
+0x9A48    0xEA75
+0x9A49    0xEA76
+0x9A50    0xEA7D
+0x9A55    0xEA82
+0x9A58    0xEA85
+0x9A5A    0xEA87
+0x9A5C    0xEA89
+0x9A60    0xEA8D
+0x9A63    0xEA90
+0x9A6E    0xEA9B
+0x9A70    0xEA9D
+0x9A79    0xEAA6
+0x9A7B    0xEAA8
+0x9A7C    0xEAA9
+0x9AB4    0xEABF
+0x9AB5    0xEAC0
+0x9AB6    0xEAC1
+0x9ABA    0xEAC5
+0x9ABD    0xEAC8
+0x9ABE    0xEAC9
+0x9ABF    0xEACA
+0x9AC0    0xEACB
+0x9AC1    0xEACC
+0x9AC4    0xEACF
+0x9AC5    0xEAD0
+0x9AC6    0xEAD1
+0x9AC8    0xEAD3
+0x9AC9    0xEAD4
+0x9ACB    0xEAD6
+0x9ACC    0xEAD7
+0x9ACD    0xEAD8
+0x9ACE    0xEAD9
+0x9ACF    0xEADA
+0x9AD1    0xEADC
+0x9AD3    0xEADE
+0x9AD4    0xEADF
+0x9AD5    0xEAE0
+0x9AD6    0xEAE1
+0x9AD7    0xEAE2
+0x9AD8    0xEAE3
+0x9ADC    0xEAE7
+0x9ADD    0xEAE8
+0x9ADE    0xEAE9
+0x9ADF    0xEAEA
+0x9AE0    0xEAEB
+0x9AE1    0xEAEC
+0x9AE3    0xEAEE
+0x9AE5    0xEAF0
+0x9AE6    0xEAF1
+0x9AE7    0xEAF2
+0x9AE9    0xEAF4
+0x9AEA    0xEAF5
+0x9AEB    0xEAF6
+0x9AEC    0xEAF7
+0x9AED    0xEAF8
+0x9AEE    0xEAF9
+0x9AEF    0xEAFA
+0x9AF0    0xEAFB
+0x9AF3    0xEAFE
+0x9AF4    0xEAFF
+0x9AF5    0xEB00
+0x9AF7    0xEB02
+0x9AF8    0xEB03
+0x9AF9    0xEB04
+0x9AFA    0xEB05
+0x9AFD    0xEB08
+0x9AFE    0xEB09
+0x9B40    0xEB0A
+0x9B41    0xEB0B
+0x9B42    0xEB0C
+0x9B43    0xEB0D
+0x9B44    0xEB0E
+0x9B45    0xEB0F
+0x9B47    0xEB11
+0x9B48    0xEB12
+0x9B4B    0xEB15
+0x9B4D    0xEB17
+0x9B4E    0xEB18
+0x9B4F    0xEB19
+0x9B50    0xEB1A
+0x9B51    0xEB1B
+0x9B52    0xEB1C
+0x9B53    0xEB1D
+0x9B55    0xEB1F
+0x9B56    0xEB20
+0x9B57    0xEB21
+0x9B59    0xEB23
+0x9B5B    0xEB25
+0x9B5D    0xEB27
+0x9B60    0xEB2A
+0x9B62    0xEB2C
+0x9B63    0xEB2D
+0x9B64    0xEB2E
+0x9B65    0xEB2F
+0x9B66    0xEB30
+0x9B67    0xEB31
+0x9B68    0xEB32
+0x9B69    0xEB33
+0x9B6A    0xEB34
+0x9B6B    0xEB35
+0x9B6C    0xEB36
+0x9B6D    0xEB37
+0x9B6E    0xEB38
+0x9B6F    0xEB39
+0x9B73    0xEB3D
+0x9B74    0xEB3E
+0x9B75    0xEB3F
+0x9B77    0xEB41
+0x9B79    0xEB43
+0x9B7A    0xEB44
+0x9B7C    0xEB46
+0x9BA2    0xEB4A
+0x9BA3    0xEB4B
+0x9BA4    0xEB4C
+0x9BA5    0xEB4D
+0x9BA6    0xEB4E
+0x9BA7    0xEB4F
+0x9BA8    0xEB50
+0x9BA9    0xEB51
+0x9BAA    0xEB52
+0x9BAB    0xEB53
+0x9BAC    0xEB54
+0x9BAD    0xEB55
+0x9BAE    0xEB56
+0x9BAF    0xEB57
+0x9BB0    0xEB58
+0x9BB1    0xEB59
+0x9BB2    0xEB5A
+0x9BB3    0xEB5B
+0x9BB5    0xEB5D
+0x9BB7    0xEB5F
+0x9BB8    0xEB60
+0x9BB9    0xEB61
+0x9BBA    0xEB62
+0x9BBB    0xEB63
+0x9BBD    0xEB65
+0x9BBE    0xEB66
+0x9BBF    0xEB67
+0x9BC0    0xEB68
+0x9BC1    0xEB69
+0x9BC2    0xEB6A
+0x9BC3    0xEB6B
+0x9BC5    0xEB6D
+0x9BC7    0xEB6F
+0x9BC8    0xEB70
+0x9BC9    0xEB71
+0x9BCB    0xEB73
+0x9BCC    0xEB74
+0x9BCE    0xEB76
+0x9BCF    0xEB77
+0x9BD0    0xEB78
+0x9BD2    0xEB7A
+0x9BD6    0xEB7E
+0x9BD7    0xEB7F
+0x9BD8    0xEB80
+0x9BD9    0xEB81
+0x9BDB    0xEB83
+0x9BDC    0xEB84
+0x9BDD    0xEB85
+0x9BDF    0xEB87
+0x9BE0    0xEB88
+0x9BE1    0xEB89
+0x9BE2    0xEB8A
+0x9BE3    0xEB8B
+0x9BE4    0xEB8C
+0x9BE5    0xEB8D
+0x9BE6    0xEB8E
+0x9BE7    0xEB8F
+0x9BE8    0xEB90
+0x9BEA    0xEB92
+0x9BEB    0xEB93
+0x9BED    0xEB95
+0x9BEE    0xEB96
+0x9BEF    0xEB97
+0x9BF0    0xEB98
+0x9BF1    0xEB99
+0x9BF2    0xEB9A
+0x9BF3    0xEB9B
+0x9BF7    0xEB9F
+0x9BF8    0xEBA0
+0x9BFA    0xEBA2
+0x9BFB    0xEBA3
+0x9BFD    0xEBA5
+0x9BFE    0xEBA6
+0x9C41    0xEBA8
+0x9C43    0xEBAA
+0x9C44    0xEBAB
+0x9C46    0xEBAD
+0x9C47    0xEBAE
+0x9C48    0xEBAF
+0x9C49    0xEBB0
+0x9C4A    0xEBB1
+0x9C4B    0xEBB2
+0x9C4C    0xEBB3
+0x9C4D    0xEBB4
+0x9C4F    0xEBB6
+0x9C52    0xEBB9
+0x9C55    0xEBBC
+0x9C56    0xEBBD
+0x9C58    0xEBBF
+0x9C5B    0xEBC2
+0x9C5C    0xEBC3
+0x9C5E    0xEBC5
+0x9C5F    0xEBC6
+0x9C60    0xEBC7
+0x9C61    0xEBC8
+0x9C63    0xEBCA
+0x9C65    0xEBCC
+0x9C66    0xEBCD
+0x9C67    0xEBCE
+0x9C69    0xEBD0
+0x9C6C    0xEBD3
+0x9C6E    0xEBD5
+0x9C6F    0xEBD6
+0x9C70    0xEBD7
+0x9C71    0xEBD8
+0x9C73    0xEBDA
+0x9C74    0xEBDB
+0x9C76    0xEBDD
+0x9C78    0xEBDF
+0x9C79    0xEBE0
+0x9C7A    0xEBE1
+0x9C7D    0xEBE4
+0x9CA1    0xEBE6
+0x9CA2    0xEBE7
+0x9CA3    0xEBE8
+0x9CA4    0xEBE9
+0x9CA5    0xEBEA
+0x9CA6    0xEBEB
+0x9CA7    0xEBEC
+0x9CA9    0xEBEE
+0x9CAA    0xEBEF
+0x9CAC    0xEBF1
+0x9CAD    0xEBF2
+0x9CB0    0xEBF5
+0x9CB1    0xEBF6
+0x9CB4    0xEBF9
+0x9CB5    0xEBFA
+0x9CB6    0xEBFB
+0x9CB8    0xEBFD
+0x9CB9    0xEBFE
+0x9CBA    0xEBFF
+0x9CBB    0xEC00
+0x9CBE    0xEC03
+0x9CC0    0xEC05
+0x9CC1    0xEC06
+0x9CC3    0xEC08
+0x9CC4    0xEC09
+0x9CC6    0xEC0B
+0x9CC7    0xEC0C
+0x9CC8    0xEC0D
+0x9CC9    0xEC0E
+0x9CCA    0xEC0F
+0x9CCB    0xEC10
+0x9CCE    0xEC13
+0x9CCF    0xEC14
+0x9CD1    0xEC16
+0x9CD2    0xEC17
+0x9CD3    0xEC18
+0x9CD4    0xEC19
+0x9CD5    0xEC1A
+0x9CD6    0xEC1B
+0x9CD7    0xEC1C
+0x9CD8    0xEC1D
+0x9CDB    0xEC20
+0x9CDD    0xEC22
+0x9CDF    0xEC24
+0x9CE1    0xEC26
+0x9CE5    0xEC2A
+0x9CE6    0xEC2B
+0x9CE7    0xEC2C
+0x9CE8    0xEC2D
+0x9CE9    0xEC2E
+0x9CEA    0xEC2F
+0x9CEC    0xEC31
+0x9CED    0xEC32
+0x9CF0    0xEC35
+0x9CF2    0xEC37
+0x9CF6    0xEC3B
+0x9CF7    0xEC3C
+0x9CF8    0xEC3D
+0x9CFA    0xEC3F
+0x9CFB    0xEC40
+0x9CFC    0xEC41
+0x9CFD    0xEC42
+0x9CFE    0xEC43
+0x9D40    0xEC44
+0x9D41    0xEC45
+0x9D42    0xEC46
+0x9D43    0xEC47
+0x9D44    0xEC48
+0x9D45    0xEC49
+0x9D46    0xEC4A
+0x9D47    0xEC4B
+0x9D48    0xEC4C
+0x9D49    0xEC4D
+0x9D4B    0xEC4F
+0x9D4E    0xEC52
+0x9D4F    0xEC53
+0x9D50    0xEC54
+0x9D51    0xEC55
+0x9D52    0xEC56
+0x9D53    0xEC57
+0x9D54    0xEC58
+0x9D56    0xEC5A
+0x9D58    0xEC5C
+0x9D59    0xEC5D
+0x9D5B    0xEC5F
+0x9D5C    0xEC60
+0x9D5D    0xEC61
+0x9D5E    0xEC62
+0x9D5F    0xEC63
+0x9D63    0xEC67
+0x9D64    0xEC68
+0x9D65    0xEC69
+0x9D66    0xEC6A
+0x9D67    0xEC6B
+0x9D68    0xEC6C
+0x9D69    0xEC6D
+0x9D6A    0xEC6E
+0x9D6B    0xEC6F
+0x9D6C    0xEC70
+0x9D6D    0xEC71
+0x9D6E    0xEC72
+0x9D6F    0xEC73
+0x9D71    0xEC75
+0x9D72    0xEC76
+0x9D73    0xEC77
+0x9D75    0xEC79
+0x9D77    0xEC7B
+0x9D78    0xEC7C
+0x9D7A    0xEC7E
+0x9D7B    0xEC7F
+0x9D7C    0xEC80
+0x9DA2    0xEC84
+0x9DA4    0xEC86
+0x9DA5    0xEC87
+0x9DAA    0xEC8C
+0x9DAB    0xEC8D
+0x9DAC    0xEC8E
+0x9DAD    0xEC8F
+0x9DAF    0xEC91
+0x9DB0    0xEC92
+0x9DB1    0xEC93
+0x9DB2    0xEC94
+0x9DB3    0xEC95
+0x9DB4    0xEC96
+0x9DB5    0xEC97
+0x9DB6    0xEC98
+0x9DB7    0xEC99
+0x9DB8    0xEC9A
+0x9DB9    0xEC9B
+0x9DBB    0xEC9D
+0x9DBC    0xEC9E
+0x9DBE    0xECA0
+0x9DC1    0xECA3
+0x9DC2    0xECA4
+0x9DC5    0xECA7
+0x9DC6    0xECA8
+0x9DC9    0xECAB
+0x9DCB    0xECAD
+0x9DCC    0xECAE
+0x9DCD    0xECAF
+0x9DCE    0xECB0
+0x9DD2    0xECB4
+0x9DD4    0xECB6
+0x9DD7    0xECB9
+0x9DD8    0xECBA
+0x9DD9    0xECBB
+0x9DED    0xECCF
+0x9DEE    0xECD0
+0x9DF2    0xECD4
+0x9DF3    0xECD5
+0x9DF9    0xECDB
+0x9DFA    0xECDC
+0x9DFC    0xECDE
+0x9DFD    0xECDF
+0x9DFE    0xECE0
+0x9E40    0xECE1
+0x9E44    0xECE5
+0x9E4F    0xECF0
+0x9E51    0xECF2
+0x9E53    0xECF4
+0x9E54    0xECF5
+0x9E5B    0xECFC
+0x9E63    0xED04
+0x9E64    0xED05
+0x9E66    0xED07
+0x9E69    0xED0A
+0x9E6B    0xED0C
+0x9E6C    0xED0D
+0x9E6D    0xED0E
+0x9E6E    0xED0F
+0x9E6F    0xED10
+0x9E70    0xED11
+0x9E72    0xED13
+0x9E74    0xED15
+0x9E75    0xED16
+0x9E76    0xED17
+0x9E77    0xED18
+0x9E79    0xED1A
+0x9E7A    0xED1B
+0x9E7B    0xED1C
+0x9E7C    0xED1D
+0x9E7D    0xED1E
+0x9E7E    0xED1F
+0x9EA3    0xED22
+0x9EA4    0xED23
+0x9EA5    0xED24
+0x9EA6    0xED25
+0x9EA7    0xED26
+0x9EA8    0xED27
+0x9EAA    0xED29
+0x9EAB    0xED2A
+0x9EAD    0xED2C
+0x9EAE    0xED2D
+0x9EB4    0xED33
+0x9EB8    0xED37
+0x9EB9    0xED38
+0x9EBB    0xED3A
+0x9EBC    0xED3B
+0x9EBE    0xED3D
+0x9EC2    0xED41
+0x9EC3    0xED42
+0x9EC5    0xED44
+0x9EC6    0xED45
+0x9EC8    0xED47
+0x9EC9    0xED48
+0x9ECB    0xED4A
+0x9ECC    0xED4B
+0x9ECD    0xED4C
+0x9ECE    0xED4D
+0x9ECF    0xED4E
+0x9ED0    0xED4F
+0x9ED2    0xED51
+0x9ED3    0xED52
+0x9ED4    0xED53
+0x9ED5    0xED54
+0x9ED8    0xED57
+0x9ED9    0xED58
+0x9EDA    0xED59
+0x9EDD    0xED5C
+0x9EDE    0xED5D
+0x9EDF    0xED5E
+0x9EE0    0xED5F
+0x9EE3    0xED62
+0x9EE5    0xED64
+0x9EE7    0xED66
+0x9EEC    0xED6B
+0x9EEE    0xED6D
+0x9EF0    0xED6F
+0x9EF2    0xED71
+0x9EF3    0xED72
+0x9EF6    0xED75
+0x9EF8    0xED77
+0x9EF9    0xED78
+0x9EFB    0xED7A
+0x9EFC    0xED7B
+0x9F43    0xED81
+0x9F46    0xED84
+0x9F47    0xED85
+0x9F48    0xED86
+0x9F4A    0xED88
+0x9F4B    0xED89
+0x9F4C    0xED8A
+0x9F4D    0xED8B
+0x9F50    0xED8E
+0x9F53    0xED91
+0x9F68    0xEDA6
+0x9F70    0xEDAE
+0x9FA5    0xEDC1
+0x9FAA    0xEDC6
+0x9FB3    0xEDCF
+0x9FB5    0xEDD1
+0x9FBB    0xEDD7
+0x9FBE    0xEDDA
+0x9FBF    0xEDDB
+0x9FC1    0xEDDD
+0x9FC5    0xEDE1
+0x9FD1    0xEDED
+0x9FD7    0xEDF3
+0x9FD9    0xEDF5
+0x9FEC    0xEE08
+0x9FF5    0xEE11
+0x9FF9    0xEE15
+0xA040    0xEE1B
+0xA045    0xEE20
+0xA047    0xEE22
+0xA04F    0xEE2A
+0xA053    0xEE2E
+0xA055    0xEE30
+0xA056    0xEE31
+0xA059    0xEE34
+0xA068    0xEE43
+0xA06A    0xEE45
+0xA06D    0xEE48
+0xA06F    0xEE4A
+0xA078    0xEE53
+0xA07B    0xEE56
+0xA07E    0xEE59
+0xA0A2    0xEE5B
+0xA0A4    0xEE5D
+0xA0A7    0xEE60
+0xA0AB    0xEE64
+0xA0AC    0xEE65
+0xA0B1    0xEE6A
+0xA0BD    0xEE76
+0xA0C3    0xEE7C
+0xA0C5    0xEE7E
+0xA0D0    0xEE89
+0xA0D8    0xEE91
+0xA0DA    0xEE93
+0xA0DE    0xEE97
+0xA0E3    0xEE9C
+0xA0E6    0xEE9F
+0xA0E8    0xEEA1
+0xA0E9    0xEEA2
+0xA0EA    0xEEA3
+0xA0EB    0xEEA4
+0xA0EC    0xEEA5
+0xA0ED    0xEEA6
+0xA0EE    0xEEA7
+0xA0EF    0xEEA8
+0xA0F0    0xEEA9
+0xA0F1    0xEEAA
+0xA0F3    0xEEAC
+0xA0F4    0xEEAD
+0xA0F5    0xEEAE
+0xA0F6    0xEEAF
+0xA0F7    0xEEB0
+0xA0F8    0xEEB1
+0xA0F9    0xEEB2
+0xA0FB    0xEEB4
+0xA0FE    0xEEB7
+0xC6CD    0xF6DD
+0xC87A    0xF7E6
+0xC87C    0xF7E8
+0xC8A4    0xF7EE
+0xC8D6    0xF920
+0xC8D7    0xF921
+0xC8D8    0xF922
+0xC8D9    0xF923
+0xC8DA    0xF924
+0xC8DB    0xF925
+0xC8DC    0xF926
+0xC8DD    0xF927
+0xC8DE    0xF928
+0xC8DF    0xF929
+0xC8E0    0xF92A
+0xC8E1    0xF92B
+0xC8E2    0xF92C
+0xC8E3    0xF92D
+0xC8E4    0xF92E
+0xC8E5    0xF92F
+0xC8E6    0xF930
+0xC8E7    0xF931
+0xC8E8    0xF932
+0xC8E9    0xF933
+0xC8EA    0xF934
+0xC8EB    0xF935
+0xC8EC    0xF936
+0xC8ED    0xF937
+0xC8EE    0xF938
+0xC8EF    0xF939
+0xC8F0    0xF93A
+0xC8F1    0xF93B
+0xFA40    0xE000
+0xFA42    0xE002
+0xFA43    0xE003
+0xFA45    0xE005
+0xFA48    0xE008
+0xFA49    0xE009
+0xFA4A    0xE00A
+0xFA4C    0xE00C
+0xFA4E    0xE00E
+0xFA52    0xE012
+0xFA53    0xE013
+0xFA54    0xE014
+0xFA55    0xE015
+0xFA56    0xE016
+0xFA58    0xE018
+0xFA5A    0xE01A
+0xFA5B    0xE01B
+0xFA5C    0xE01C
+0xFA5D    0xE01D
+0xFA5E    0xE01E
+0xFA60    0xE020
+0xFA62    0xE022
+0xFA63    0xE023
+0xFA65    0xE025
+0xFA68    0xE028
+0xFA6B    0xE02B
+0xFA6D    0xE02D
+0xFA6E    0xE02E
+0xFA70    0xE030
+0xFA72    0xE032
+0xFA73    0xE033
+0xFA74    0xE034
+0xFA75    0xE035
+0xFA76    0xE036
+0xFA77    0xE037
+0xFA78    0xE038
+0xFA7B    0xE03B
+0xFA7C    0xE03C
+0xFAA5    0xE043
+0xFAA7    0xE045
+0xFAAE    0xE04C
+0xFABC    0xE05A
+0xFABE    0xE05C
+0xFAC1    0xE05F
+0xFAC2    0xE060
+0xFAC3    0xE061
+0xFAC6    0xE064
+0xFAC8    0xE066
+0xFACC    0xE06A
+0xFACD    0xE06B
+0xFACE    0xE06C
+0xFAD0    0xE06E
+0xFAD3    0xE071
+0xFAD6    0xE074
+0xFAD7    0xE075
+0xFADA    0xE078
+0xFADF    0xE07D
+0xFAE0    0xE07E
+0xFAE8    0xE086
+0xFAE9    0xE087
+0xFAEB    0xE089
+0xFAEC    0xE08A
+0xFAEE    0xE08C
+0xFAF5    0xE093
+0xFAF6    0xE094
+0xFAFA    0xE098
+0xFAFB    0xE099
+0xFAFC    0xE09A
+0xFAFD    0xE09B
+0xFAFE    0xE09C
+0xFB40    0xE09D
+0xFB41    0xE09E
+0xFB43    0xE0A0
+0xFB49    0xE0A6
+0xFB4A    0xE0A7
+0xFB4B    0xE0A8
+0xFB4C    0xE0A9
+0xFB4E    0xE0AB
+0xFB51    0xE0AE
+0xFB5D    0xE0BA
+0xFB5E    0xE0BB
+0xFB5F    0xE0BC
+0xFB61    0xE0BE
+0xFB65    0xE0C2
+0xFB66    0xE0C3
+0xFB68    0xE0C5
+0xFB6A    0xE0C7
+0xFB6B    0xE0C8
+0xFB6D    0xE0CA
+0xFB70    0xE0CD
+0xFB73    0xE0D0
+0xFB77    0xE0D4
+0xFB78    0xE0D5
+0xFB7A    0xE0D7
+0xFB7D    0xE0DA
+0xFBA1    0xE0DC
+0xFBA4    0xE0DF
+0xFBA7    0xE0E2
+0xFBA8    0xE0E3
+0xFBA9    0xE0E4
+0xFBAA    0xE0E5
+0xFBAC    0xE0E7
+0xFBAD    0xE0E8
+0xFBAE    0xE0E9
+0xFBB0    0xE0EB
+0xFBB1    0xE0EC
+0xFBB3    0xE0EE
+0xFBB6    0xE0F1
+0xFBB7    0xE0F2
+0xFBB9    0xE0F4
+0xFBBD    0xE0F8
+0xFBBE    0xE0F9
+0xFBBF    0xE0FA
+0xFBC0    0xE0FB
+0xFBC1    0xE0FC
+0xFBC2    0xE0FD
+0xFBC8    0xE103
+0xFBC9    0xE104
+0xFBCA    0xE105
+0xFBCB    0xE106
+0xFBCE    0xE109
+0xFBCF    0xE10A
+0xFBD0    0xE10B
+0xFBD3    0xE10E
+0xFBD5    0xE110
+0xFBD9    0xE114
+0xFBDA    0xE115
+0xFBDC    0xE117
+0xFBE1    0xE11C
+0xFBE2    0xE11D
+0xFBE6    0xE121
+0xFBEA    0xE125
+0xFBEB    0xE126
+0xFBEC    0xE127
+0xFBED    0xE128
+0xFBEF    0xE12A
+0xFBF0    0xE12B
+0xFBF5    0xE130
+0xFBF6    0xE131
+0xFBFB    0xE136
+0xFBFE    0xE139
+0xFC42    0xE13C
+0xFC47    0xE141
+0xFC48    0xE142
+0xFC49    0xE143
+0xFC4A    0xE144
+0xFC4B    0xE145
+0xFC4D    0xE147
+0xFC4E    0xE148
+0xFC50    0xE14A
+0xFC53    0xE14D
+0xFC56    0xE150
+0xFC59    0xE153
+0xFC5A    0xE154
+0xFC5B    0xE155
+0xFC5C    0xE156
+0xFC5D    0xE157
+0xFC5F    0xE159
+0xFC60    0xE15A
+0xFC63    0xE15D
+0xFC64    0xE15E
+0xFC65    0xE15F
+0xFC66    0xE160
+0xFC68    0xE162
+0xFC6A    0xE164
+0xFC6E    0xE168
+0xFC6F    0xE169
+0xFC70    0xE16A
+0xFC77    0xE171
+0xFC78    0xE172
+0xFC7B    0xE175
+0xFC7E    0xE178
+0xFCA1    0xE179
+0xFCA3    0xE17B
+0xFCA4    0xE17C
+0xFCA6    0xE17E
+0xFCA7    0xE17F
+0xFCA8    0xE180
+0xFCAD    0xE185
+0xFCAF    0xE187
+0xFCB1    0xE189
+0xFCB3    0xE18B
+0xFCB4    0xE18C
+0xFCB7    0xE18F
+0xFCB8    0xE190
+0xFCBB    0xE193
+0xFCBD    0xE195
+0xFCBE    0xE196
+0xFCC2    0xE19A
+0xFCC4    0xE19C
+0xFCC7    0xE19F
+0xFCC8    0xE1A0
+0xFCCC    0xE1A4
+0xFCCE    0xE1A6
+0xFCCF    0xE1A7
+0xFCD1    0xE1A9
+0xFCD2    0xE1AA
+0xFCD6    0xE1AE
+0xFCD8    0xE1B0
+0xFCD9    0xE1B1
+0xFCDB    0xE1B3
+0xFCDC    0xE1B4
+0xFCDE    0xE1B6
+0xFCE0    0xE1B8
+0xFCE3    0xE1BB
+0xFCE4    0xE1BC
+0xFCE5    0xE1BD
+0xFCE6    0xE1BE
+0xFCE7    0xE1BF
+0xFCE9    0xE1C1
+0xFCEC    0xE1C4
+0xFCED    0xE1C5
+0xFCEE    0xE1C6
+0xFCF0    0xE1C8
+0xFCF4    0xE1CC
+0xFCF5    0xE1CD
+0xFCF7    0xE1CF
+0xFCFC    0xE1D4
+0xFCFD    0xE1D5
+0xFD40    0xE1D7
+0xFD43    0xE1DA
+0xFD46    0xE1DD
+0xFD49    0xE1E0
+0xFD4A    0xE1E1
+0xFD4B    0xE1E2
+0xFD4C    0xE1E3
+0xFD4F    0xE1E6
+0xFD50    0xE1E7
+0xFD53    0xE1EA
+0xFD54    0xE1EB
+0xFD58    0xE1EF
+0xFD59    0xE1F0
+0xFD5B    0xE1F2
+0xFD5D    0xE1F4
+0xFD60    0xE1F7
+0xFD61    0xE1F8
+0xFD63    0xE1FA
+0xFD67    0xE1FE
+0xFD69    0xE200
+0xFD6A    0xE201
+0xFD6B    0xE202
+0xFD6C    0xE203
+0xFD6E    0xE205
+0xFD70    0xE207
+0xFD73    0xE20A
+0xFD74    0xE20B
+0xFD75    0xE20C
+0xFD79    0xE210
+0xFD7A    0xE211
+0xFD7B    0xE212
+0xFD7C    0xE213
+0xFD7D    0xE214
+0xFD7E    0xE215
+0xFDA1    0xE216
+0xFDA2    0xE217
+0xFDA3    0xE218
+0xFDA4    0xE219
+0xFDA6    0xE21B
+0xFDA7    0xE21C
+0xFDAA    0xE21F
+0xFDAB    0xE220
+0xFDAC    0xE221
+0xFDB1    0xE226
+0xFDB2    0xE227
+0xFDB3    0xE228
+0xFDB5    0xE22A
+0xFDBA    0xE22F
+0xFDBC    0xE231
+0xFDBE    0xE233
+0xFDC2    0xE237
+0xFDC4    0xE239
+0xFDC6    0xE23B
+0xFDC8    0xE23D
+0xFDC9    0xE23E
+0xFDCA    0xE23F
+0xFDCE    0xE243
+0xFDD0    0xE245
+0xFDD1    0xE246
+0xFDD3    0xE248
+0xFDD5    0xE24A
+0xFDD6    0xE24B
+0xFDD7    0xE24C
+0xFDD8    0xE24D
+0xFDD9    0xE24E
+0xFDDA    0xE24F
+0xFDDC    0xE251
+0xFDDD    0xE252
+0xFDDE    0xE253
+0xFDDF    0xE254
+0xFDE8    0xE25D
+0xFDE9    0xE25E
+0xFDEC    0xE261
+0xFDF3    0xE268
+0xFDF6    0xE26B
+0xFDF8    0xE26D
+0xFDF9    0xE26E
+0xFDFA    0xE26F
+0xFDFC    0xE271
+0xFE46    0xE27A
+0xFE49    0xE27D
+0xFE4D    0xE281
+0xFE4E    0xE282
+0xFE54    0xE288
+0xFE55    0xE289
+0xFE56    0xE28A
+0xFE57    0xE28B
+0xFE5C    0xE290
+0xFE5D    0xE291
+0xFE60    0xE294
+0xFE61    0xE295
+0xFE62    0xE296
+0xFE64    0xE298
+0xFE65    0xE299
+0xFE66    0xE29A
+0xFE67    0xE29B
+0xFE6B    0xE29F
+0xFE6D    0xE2A1
+0xFE6E    0xE2A2
+0xFE70    0xE2A4
+0xFE72    0xE2A6
+0xFE78    0xE2AC
+0xFE7D    0xE2B1
+0xFE7E    0xE2B2
+0xFEA1    0xE2B3
+0xFEA2    0xE2B4
+0xFEA3    0xE2B5
+0xFEA5    0xE2B7
+0xFEA6    0xE2B8
+0xFEA8    0xE2BA
+0xFEAC    0xE2BE
+0xFEAD    0xE2BF
+0xFEAF    0xE2C1
+0xFEB5    0xE2C7
+0xFEB6    0xE2C8
+0xFEB7    0xE2C9
+0xFEC2    0xE2D4
+0xFEC5    0xE2D7
+0xFEC6    0xE2D8
+0xFEC7    0xE2D9
+0xFECC    0xE2DE
+0xFECE    0xE2E0
+0xFECF    0xE2E1
+0xFED0    0xE2E2
+0xFED5    0xE2E7
+0xFED7    0xE2E9
+0xFED9    0xE2EB
+0xFEDA    0xE2EC
+0xFEDB    0xE2ED
+0xFEDE    0xE2F0
+0xFEDF    0xE2F1
+0xFEE6    0xE2F8
+0xFEEA    0xE2FC
+0xFEED    0xE2FF
+0xFEEE    0xE300
+0xFEEF    0xE301
+0xFEF4    0xE306
+0xFEF6    0xE308
+0xFEFA    0xE30C
+0xFEFB    0xE30D
+0xFEFD    0xE30F
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/HKSCS2001.map	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,4821 @@
+# Generated from HKSCS2001.Encoder
+#
+#
+0x8840    0xF303
+0x8841    0xF304
+0x8842    0xF305
+0x8843    0xF306
+0x8844    0xF307
+0x8845    0x2010C
+0x8846    0xF309
+0x8847    0x200D1
+0x8848    0x200CD
+0x8849    0xF30C
+0x884A    0xF30D
+0x884B    0x200CB
+0x884C    0x21FE8
+0x884D    0xF310
+0x884E    0x200CA
+0x884F    0xF312
+0x8850    0xF313
+0x8851    0xF314
+0x8852    0xF315
+0x8853    0x2010E
+0x8854    0xF317
+0x8855    0xF318
+0x8856    0x100
+0x8857    0xC1
+0x8858    0x1CD
+0x8859    0xC0
+0x885A    0x112
+0x885B    0xC9
+0x885C    0x11A
+0x885D    0xC8
+0x885E    0x14C
+0x885F    0xD3
+0x8860    0x1D1
+0x8861    0xD2
+0x8862    0xF325
+0x8863    0x1EBE
+0x8864    0xF327
+0x8865    0x1EC0
+0x8866    0xCA
+0x8867    0x101
+0x8868    0xE1
+0x8869    0x1CE
+0x886A    0xE0
+0x886B    0x251
+0x886C    0x113
+0x886D    0xE9
+0x886E    0x11B
+0x886F    0xE8
+0x8870    0x12B
+0x8871    0xED
+0x8872    0x1D0
+0x8873    0xEC
+0x8874    0x14D
+0x8875    0xF3
+0x8876    0x1D2
+0x8877    0xF2
+0x8878    0x16B
+0x8879    0xFA
+0x887A    0x1D4
+0x887B    0xF9
+0x887C    0x1D6
+0x887D    0x1D8
+0x887E    0x1DA
+0x88A1    0x1DC
+0x88A2    0xFC
+0x88A3    0xF344
+0x88A4    0x1EBF
+0x88A5    0xF346
+0x88A6    0x1EC1
+0x88A7    0xEA
+0x88A8    0x261
+0x88A9    0xF34A
+0x88AA    0xF34B
+0x8940    0x2A3A9
+0x8941    0x21145
+0x8943    0x650A
+0x8946    0x4E3D
+0x8947    0x6EDD
+0x8948    0x9D4E
+0x8949    0x91DF
+0x894C    0x27735
+0x894D    0x6491
+0x894E    0x4F1A
+0x894F    0x4F28
+0x8950    0x4FA8
+0x8951    0x5156
+0x8952    0x5174
+0x8953    0x519C
+0x8954    0x51E4
+0x8955    0x52A1
+0x8956    0x52A8
+0x8957    0x533B
+0x8958    0x534E
+0x8959    0x53D1
+0x895A    0x53D8
+0x895B    0x56E2
+0x895C    0x58F0
+0x895D    0x5904
+0x895E    0x5907
+0x895F    0x5932
+0x8960    0x5934
+0x8961    0x5B66
+0x8962    0x5B9E
+0x8963    0x5B9F
+0x8964    0x5C9A
+0x8965    0x5E86
+0x8966    0x603B
+0x8967    0x6589
+0x8968    0x67FE
+0x8969    0x6804
+0x896A    0x6865
+0x896B    0x6D4E
+0x896C    0x70BC
+0x896D    0x7535
+0x896E    0x7EA4
+0x896F    0x7EAC
+0x8970    0x7EBA
+0x8971    0x7EC7
+0x8972    0x7ECF
+0x8973    0x7EDF
+0x8974    0x7F06
+0x8975    0x7F37
+0x8976    0x827A
+0x8977    0x82CF
+0x8978    0x836F
+0x8979    0x89C6
+0x897A    0x8BBE
+0x897B    0x8BE2
+0x897C    0x8F66
+0x897D    0x8F67
+0x897E    0x8F6E
+0x89A1    0x7411
+0x89A2    0x7CFC
+0x89A3    0x7DCD
+0x89A4    0x6946
+0x89A5    0x7AC9
+0x89A6    0x5227
+0x89AB    0x918C
+0x89AC    0x78B8
+0x89AD    0x915E
+0x89AE    0x80BC
+0x89B0    0x8D0B
+0x89B1    0x80F6
+0x89B2    0x209E7
+0x89B5    0x809F
+0x89B6    0x9EC7
+0x89B7    0x4CCD
+0x89B8    0x9DC9
+0x89B9    0x9E0C
+0x89BA    0x4C3E
+0x89BB    0x29DF6
+0x89BC    0x2700E
+0x89BD    0x9E0A
+0x89BE    0x2A133
+0x89BF    0x35C1
+0x89C1    0x6E9A
+0x89C2    0x823E
+0x89C3    0x7519
+0x89C5    0x4911
+0x89C6    0x9A6C
+0x89C7    0x9A8F
+0x89C8    0x9F99
+0x89C9    0x7987
+0x89CA    0x2846C
+0x89CB    0x21DCA
+0x89CC    0x205D0
+0x89CD    0x22AE6
+0x89CE    0x4E24
+0x89CF    0x4E81
+0x89D0    0x4E80
+0x89D1    0x4E87
+0x89D2    0x4EBF
+0x89D3    0x4EEB
+0x89D4    0x4F37
+0x89D5    0x344C
+0x89D6    0x4FBD
+0x89D7    0x3E48
+0x89D8    0x5003
+0x89D9    0x5088
+0x89DA    0x347D
+0x89DB    0x3493
+0x89DC    0x34A5
+0x89DD    0x5186
+0x89DE    0x5905
+0x89DF    0x51DB
+0x89E0    0x51FC
+0x89E1    0x5205
+0x89E2    0x4E89
+0x89E3    0x5279
+0x89E4    0x5290
+0x89E5    0x5327
+0x89E6    0x35C7
+0x89E7    0x53A9
+0x89E8    0x3551
+0x89E9    0x53B0
+0x89EA    0x3553
+0x89EB    0x53C2
+0x89EC    0x5423
+0x89ED    0x356D
+0x89EE    0x3572
+0x89EF    0x3681
+0x89F0    0x5493
+0x89F1    0x54A3
+0x89F2    0x54B4
+0x89F3    0x54B9
+0x89F4    0x54D0
+0x89F5    0x54EF
+0x89F6    0x5518
+0x89F7    0x5523
+0x89F8    0x5528
+0x89F9    0x3598
+0x89FA    0x553F
+0x89FB    0x35A5
+0x89FC    0x35BF
+0x89FD    0x55D7
+0x89FE    0x35C5
+0x8A40    0x27D84
+0x8A41    0x5525
+0x8A43    0x20C42
+0x8A44    0x20D15
+0x8A45    0x2512B
+0x8A46    0x5590
+0x8A47    0x22CC6
+0x8A48    0x39EC
+0x8A49    0x20341
+0x8A4A    0x8E46
+0x8A4B    0x24DB8
+0x8A4C    0x294E5
+0x8A4D    0x4053
+0x8A4E    0x280BE
+0x8A4F    0x777A
+0x8A50    0x22C38
+0x8A51    0x3A34
+0x8A52    0x47D5
+0x8A53    0x2815D
+0x8A54    0x269F2
+0x8A55    0x24DEA
+0x8A56    0x64DD
+0x8A57    0x20D7C
+0x8A58    0x20FB4
+0x8A59    0x20CD5
+0x8A5A    0x210F4
+0x8A5B    0x648D
+0x8A5C    0x8E7E
+0x8A5D    0x20E96
+0x8A5E    0x20C0B
+0x8A5F    0x20F64
+0x8A60    0x22CA9
+0x8A61    0x28256
+0x8A62    0x244D3
+0x8A64    0x20D46
+0x8A65    0x29A4D
+0x8A66    0x280E9
+0x8A67    0x47F4
+0x8A68    0x24EA7
+0x8A69    0x22CC2
+0x8A6A    0x9AB2
+0x8A6B    0x3A67
+0x8A6C    0x295F4
+0x8A6D    0x3FED
+0x8A6E    0x3506
+0x8A6F    0x252C7
+0x8A70    0x297D4
+0x8A71    0x278C8
+0x8A72    0x22D44
+0x8A73    0x9D6E
+0x8A74    0x9815
+0x8A76    0x43D9
+0x8A77    0x260A5
+0x8A78    0x64B4
+0x8A79    0x54E3
+0x8A7A    0x22D4C
+0x8A7B    0x22BCA
+0x8A7C    0x21077
+0x8A7D    0x39FB
+0x8A7E    0x2106F
+0x8AA1    0x266DA
+0x8AA2    0x26716
+0x8AA3    0x279A0
+0x8AA4    0x64EA
+0x8AA5    0x25052
+0x8AA6    0x20C43
+0x8AA7    0x8E68
+0x8AA8    0x221A1
+0x8AA9    0x28B4C
+0x8AAA    0x20731
+0x8AAC    0x480B
+0x8AAD    0x201A9
+0x8AAE    0x3FFA
+0x8AAF    0x5873
+0x8AB0    0x22D8D
+0x8AB2    0x245C8
+0x8AB3    0x204FC
+0x8AB4    0x26097
+0x8AB5    0x20F4C
+0x8AB6    0x20D96
+0x8AB7    0x5579
+0x8AB8    0x40BB
+0x8AB9    0x43BA
+0x8ABB    0x4AB4
+0x8ABC    0x22A66
+0x8ABD    0x2109D
+0x8ABE    0x81AA
+0x8ABF    0x98F5
+0x8AC0    0x20D9C
+0x8AC1    0x6379
+0x8AC2    0x39FE
+0x8AC3    0x22775
+0x8AC4    0x8DC0
+0x8AC5    0x56A1
+0x8AC6    0x647C
+0x8AC7    0x3E43
+0x8AC9    0x2A601
+0x8ACA    0x20E09
+0x8ACB    0x22ACF
+0x8ACC    0x22CC9
+0x8ACE    0x210C8
+0x8ACF    0x239C2
+0x8AD0    0x3992
+0x8AD1    0x3A06
+0x8AD2    0x2829B
+0x8AD3    0x3578
+0x8AD4    0x25E49
+0x8AD5    0x220C7
+0x8AD6    0x5652
+0x8AD7    0x20F31
+0x8AD8    0x22CB2
+0x8AD9    0x29720
+0x8ADA    0x34BC
+0x8ADB    0x6C3D
+0x8ADC    0x24E3B
+0x8ADF    0x27574
+0x8AE0    0x22E8B
+0x8AE1    0x22208
+0x8AE2    0x2A65B
+0x8AE3    0x28CCD
+0x8AE4    0x20E7A
+0x8AE5    0x20C34
+0x8AE6    0x2681C
+0x8AE7    0x7F93
+0x8AE8    0x210CF
+0x8AE9    0x22803
+0x8AEA    0x22939
+0x8AEB    0x35FB
+0x8AEC    0x251E3
+0x8AED    0x20E8C
+0x8AEE    0x20F8D
+0x8AEF    0x20EAA
+0x8AF0    0x3F93
+0x8AF1    0x20F30
+0x8AF2    0x20D47
+0x8AF3    0x2114F
+0x8AF4    0x20E4C
+0x8AF6    0x20EAB
+0x8AF7    0x20BA9
+0x8AF8    0x20D48
+0x8AF9    0x210C0
+0x8AFA    0x2113D
+0x8AFB    0x3FF9
+0x8AFC    0x22696
+0x8AFD    0x6432
+0x8AFE    0x20FAD
+0x8B40    0x233F4
+0x8B41    0x27639
+0x8B42    0x22BCE
+0x8B43    0x20D7E
+0x8B44    0x20D7F
+0x8B45    0x22C51
+0x8B46    0x22C55
+0x8B47    0x3A18
+0x8B48    0x20E98
+0x8B49    0x210C7
+0x8B4A    0x20F2E
+0x8B4B    0x2A632
+0x8B4C    0x26B50
+0x8B4D    0x28CD2
+0x8B4E    0x28D99
+0x8B4F    0x28CCA
+0x8B50    0x95AA
+0x8B51    0x54CC
+0x8B52    0x82C4
+0x8B53    0x55B9
+0x8B55    0x29EC3
+0x8B56    0x9C26
+0x8B57    0x9AB6
+0x8B58    0x2775E
+0x8B59    0x22DEE
+0x8B5A    0x7140
+0x8B5B    0x816D
+0x8B5C    0x80EC
+0x8B5D    0x5C1C
+0x8B5E    0x26572
+0x8B5F    0x8134
+0x8B60    0x3797
+0x8B61    0x535F
+0x8B62    0x280BD
+0x8B63    0x91B6
+0x8B64    0x20EFA
+0x8B65    0x20E0F
+0x8B66    0x20E77
+0x8B67    0x20EFB
+0x8B68    0x35DD
+0x8B69    0x24DEB
+0x8B6A    0x3609
+0x8B6B    0x20CD6
+0x8B6C    0x56AF
+0x8B6D    0x227B5
+0x8B6E    0x210C9
+0x8B6F    0x20E10
+0x8B70    0x20E78
+0x8B71    0x21078
+0x8B72    0x21148
+0x8B73    0x28207
+0x8B74    0x21455
+0x8B75    0x20E79
+0x8B76    0x24E50
+0x8B77    0x22DA4
+0x8B78    0x5A54
+0x8B79    0x2101D
+0x8B7A    0x2101E
+0x8B7B    0x210F5
+0x8B7C    0x210F6
+0x8B7D    0x579C
+0x8B7E    0x20E11
+0x8BA1    0x27694
+0x8BA2    0x282CD
+0x8BA3    0x20FB5
+0x8BA4    0x20E7B
+0x8BA5    0x2517E
+0x8BA6    0x3703
+0x8BA7    0x20FB6
+0x8BA8    0x21180
+0x8BA9    0x252D8
+0x8BAA    0x2A2BD
+0x8BAB    0x249DA
+0x8BAC    0x2183A
+0x8BAD    0x24177
+0x8BAE    0x2827C
+0x8BAF    0x5899
+0x8BB0    0x5268
+0x8BB1    0x361A
+0x8BB2    0x2573D
+0x8BB3    0x7BB2
+0x8BB4    0x5B68
+0x8BB5    0x4800
+0x8BB6    0x4B2C
+0x8BB7    0x9F27
+0x8BB8    0x49E7
+0x8BB9    0x9C1F
+0x8BBA    0x9B8D
+0x8BBB    0x25B74
+0x8BBC    0x2313D
+0x8BBD    0x55FB
+0x8BBE    0x35F2
+0x8BBF    0x5689
+0x8BC0    0x4E28
+0x8BC1    0x5902
+0x8BC2    0x21BC1
+0x8BC3    0x2F878
+0x8BC4    0x9751
+0x8BC5    0x20086
+0x8BC6    0x4E5B
+0x8BC7    0x4EBB
+0x8BC8    0x353E
+0x8BC9    0x5C23
+0x8BCA    0x5F51
+0x8BCB    0x5FC4
+0x8BCC    0x38FA
+0x8BCD    0x624C
+0x8BCE    0x6535
+0x8BCF    0x6B7A
+0x8BD0    0x6C35
+0x8BD1    0x6C3A
+0x8BD2    0x706C
+0x8BD3    0x722B
+0x8BD4    0x4E2C
+0x8BD5    0x72AD
+0x8BD6    0x248E9
+0x8BD7    0x7F52
+0x8BD8    0x793B
+0x8BD9    0x7CF9
+0x8BDA    0x7F53
+0x8BDB    0x2626A
+0x8BDC    0x34C1
+0x8BDE    0x2634B
+0x8BDF    0x8002
+0x8BE0    0x8080
+0x8BE1    0x26612
+0x8BE2    0x26951
+0x8BE3    0x535D
+0x8BE4    0x8864
+0x8BE5    0x89C1
+0x8BE6    0x278B2
+0x8BE7    0x8BA0
+0x8BE8    0x8D1D
+0x8BE9    0x9485
+0x8BEA    0x9578
+0x8BEB    0x957F
+0x8BEC    0x95E8
+0x8BED    0x28E0F
+0x8BEE    0x97E6
+0x8BEF    0x9875
+0x8BF0    0x98CE
+0x8BF1    0x98DE
+0x8BF2    0x9963
+0x8BF3    0x29810
+0x8BF4    0x9C7C
+0x8BF5    0x9E1F
+0x8BF6    0x9EC4
+0x8BF7    0x6B6F
+0x8BF8    0xF907
+0x8BF9    0x4E37
+0x8BFA    0x20087
+0x8BFB    0x961D
+0x8BFC    0x6237
+0x8BFD    0x94A2
+0x8C40    0x503B
+0x8C41    0x6DFE
+0x8C42    0x29C73
+0x8C43    0xF57A
+0x8C44    0x3DC9
+0x8C45    0x888F
+0x8C46    0x2414E
+0x8C47    0x7077
+0x8C48    0x5CF5
+0x8C49    0x4B20
+0x8C4A    0x251CD
+0x8C4B    0x3559
+0x8C4C    0x25D30
+0x8C4D    0x6122
+0x8C4E    0x28A32
+0x8C4F    0x8FA7
+0x8C50    0x91F6
+0x8C51    0x7191
+0x8C52    0x6719
+0x8C53    0x73BA
+0x8C54    0x23281
+0x8C55    0x2A107
+0x8C56    0x3C8B
+0x8C57    0x21980
+0x8C58    0x4B10
+0x8C59    0x78E4
+0x8C5A    0x7402
+0x8C5B    0x51AE
+0x8C5C    0x2870F
+0x8C5D    0x4009
+0x8C5E    0x6A63
+0x8C5F    0x2A2BA
+0x8C60    0x4223
+0x8C61    0x860F
+0x8C63    0x7A2A
+0x8C64    0x29947
+0x8C65    0x28AEA
+0x8C66    0x9755
+0x8C67    0x704D
+0x8C68    0x5324
+0x8C69    0x2207E
+0x8C6A    0x93F4
+0x8C6B    0x76D9
+0x8C6C    0x289E3
+0x8C6D    0xF5A4
+0x8C6E    0x77DD
+0x8C6F    0x4EA3
+0x8C70    0x4FF0
+0x8C71    0x50BC
+0x8C72    0x4E2F
+0x8C73    0x4F17
+0x8C74    0xF5AB
+0x8C75    0x5434
+0x8C76    0x7D8B
+0x8C77    0x5892
+0x8C78    0x58D0
+0x8C79    0x21DB6
+0x8C7A    0x5E92
+0x8C7B    0x5E99
+0x8C7C    0x5FC2
+0x8C7D    0x22712
+0x8C7E    0x658B
+0x8CA1    0x233F9
+0x8CA2    0x6919
+0x8CA3    0x6A43
+0x8CA4    0x23C63
+0x8CA5    0x6CFF
+0x8CA7    0x7200
+0x8CA8    0x24505
+0x8CA9    0x738C
+0x8CAA    0x3EDB
+0x8CAB    0x24A13
+0x8CAC    0x5B15
+0x8CAD    0x74B9
+0x8CAE    0x8B83
+0x8CAF    0x25CA4
+0x8CB0    0x25695
+0x8CB1    0x7A93
+0x8CB2    0x7BEC
+0x8CB3    0x7CC3
+0x8CB4    0x7E6C
+0x8CB5    0x82F8
+0x8CB6    0x8597
+0x8CB7    0xF5CC
+0x8CB8    0x8890
+0x8CB9    0xF5CE
+0x8CBA    0x8EB9
+0x8CBB    0xF5D0
+0x8CBC    0x8FCF
+0x8CBD    0x855F
+0x8CBE    0x99E0
+0x8CBF    0x9221
+0x8CC0    0xF5D5
+0x8CC1    0x28DB9
+0x8CC2    0x2143F
+0x8CC3    0x4071
+0x8CC4    0x42A2
+0x8CC5    0x5A1A
+0x8CC9    0x9868
+0x8CCA    0x676B
+0x8CCB    0x4276
+0x8CCC    0x573D
+0x8CCE    0x85D6
+0x8CCF    0x2497B
+0x8CD0    0x82BF
+0x8CD1    0x2710D
+0x8CD2    0x4C81
+0x8CD3    0x26D74
+0x8CD4    0x5D7B
+0x8CD5    0x26B15
+0x8CD6    0x26FBE
+0x8CD7    0xF5EC
+0x8CD8    0xF5ED
+0x8CD9    0x5B96
+0x8CDA    0xF5EF
+0x8CDC    0x7E5B
+0x8D60    0x5D3E
+0x8D61    0x5D48
+0x8D62    0x5D56
+0x8D63    0x3DFC
+0x8D64    0x380F
+0x8D65    0x5DA4
+0x8D66    0x5DB9
+0x8D67    0x3820
+0x8D68    0x3838
+0x8D69    0x5E42
+0x8D6A    0x5EBD
+0x8D6B    0x5F25
+0x8D6C    0x5F83
+0x8D6D    0x3908
+0x8D6E    0x3914
+0x8D6F    0x393F
+0x8D70    0x394D
+0x8D71    0x60D7
+0x8D72    0x613D
+0x8D73    0x5CE5
+0x8D74    0x3989
+0x8D75    0x61B7
+0x8D76    0x61B9
+0x8D77    0x61CF
+0x8D78    0x39B8
+0x8D79    0x622C
+0x8D7A    0x6290
+0x8D7B    0x62E5
+0x8D7C    0x6318
+0x8D7D    0x39F8
+0x8D7E    0x56B1
+0x8DA1    0x3A03
+0x8DA2    0x63E2
+0x8DA3    0x63FB
+0x8DA4    0x6407
+0x8DA5    0x645A
+0x8DA6    0x3A4B
+0x8DA7    0x64C0
+0x8DA8    0x5D15
+0x8DA9    0x5621
+0x8DAA    0x9F9F
+0x8DAB    0x3A97
+0x8DAC    0x6586
+0x8DAD    0x3ABD
+0x8DAE    0x65FF
+0x8DAF    0x6653
+0x8DB0    0x3AF2
+0x8DB1    0x6692
+0x8DB2    0x3B22
+0x8DB3    0x6716
+0x8DB4    0x3B42
+0x8DB5    0x67A4
+0x8DB6    0x6800
+0x8DB7    0x3B58
+0x8DB8    0x684A
+0x8DB9    0x6884
+0x8DBA    0x3B72
+0x8DBB    0x3B71
+0x8DBC    0x3B7B
+0x8DBD    0x6909
+0x8DBE    0x6943
+0x8DBF    0x725C
+0x8DC0    0x6964
+0x8DC1    0x699F
+0x8DC2    0x6985
+0x8DC3    0x3BBC
+0x8DC4    0x69D6
+0x8DC5    0x3BDD
+0x8DC6    0x6A65
+0x8DC7    0x6A74
+0x8DC8    0x6A71
+0x8DC9    0x6A82
+0x8DCA    0x3BEC
+0x8DCB    0x6A99
+0x8DCC    0x3BF2
+0x8DCD    0x6AAB
+0x8DCE    0x6AB5
+0x8DCF    0x6AD4
+0x8DD0    0x6AF6
+0x8DD1    0x6B81
+0x8DD2    0x6BC1
+0x8DD3    0x6BEA
+0x8DD4    0x6C75
+0x8DD5    0x6CAA
+0x8DD6    0x3CCB
+0x8DD7    0x6D02
+0x8DD8    0x6D06
+0x8DD9    0x6D26
+0x8DDA    0x6D81
+0x8DDB    0x3CEF
+0x8DDC    0x6DA4
+0x8DDD    0x6DB1
+0x8DDE    0x6E15
+0x8DDF    0x6E18
+0x8DE0    0x6E29
+0x8DE1    0x6E86
+0x8DE2    0x289C0
+0x8DE3    0x6EBB
+0x8DE4    0x6EE2
+0x8DE5    0x6EDA
+0x8DE6    0x9F7F
+0x8DE7    0x6EE8
+0x8DE8    0x6EE9
+0x8DE9    0x6F24
+0x8DEA    0x6F34
+0x8DEB    0x3D46
+0x8DEC    0x23F41
+0x8DED    0x6F81
+0x8DEE    0x6FBE
+0x8DEF    0x3D6A
+0x8DF0    0x3D75
+0x8DF1    0x71B7
+0x8DF2    0x5C99
+0x8DF3    0x3D8A
+0x8DF4    0x702C
+0x8DF5    0x3D91
+0x8DF6    0x7050
+0x8DF7    0x7054
+0x8DF8    0x706F
+0x8DF9    0x707F
+0x8DFA    0x7089
+0x8DFB    0x20325
+0x8DFC    0x43C1
+0x8DFD    0x35F1
+0x8DFE    0x20ED8
+0x8E40    0x23ED7
+0x8E41    0x57BE
+0x8E42    0x26ED3
+0x8E43    0x713E
+0x8E44    0x257E0
+0x8E45    0x364E
+0x8E46    0x69A2
+0x8E47    0x28BE9
+0x8E48    0x5B74
+0x8E49    0x7A49
+0x8E4A    0x258E1
+0x8E4B    0x294D9
+0x8E4C    0x7A65
+0x8E4D    0x7A7D
+0x8E4E    0x259AC
+0x8E4F    0x7ABB
+0x8E50    0x7AB0
+0x8E51    0x7AC2
+0x8E52    0x7AC3
+0x8E53    0x71D1
+0x8E54    0x2648D
+0x8E55    0x41CA
+0x8E56    0x7ADA
+0x8E57    0x7ADD
+0x8E58    0x7AEA
+0x8E59    0x41EF
+0x8E5A    0x54B2
+0x8E5B    0x25C01
+0x8E5C    0x7B0B
+0x8E5D    0x7B55
+0x8E5E    0x7B29
+0x8E5F    0x2530E
+0x8E60    0x25CFE
+0x8E61    0x7BA2
+0x8E62    0x7B6F
+0x8E63    0x839C
+0x8E64    0x25BB4
+0x8E65    0x26C7F
+0x8E66    0x7BD0
+0x8E67    0x8421
+0x8E68    0x7B92
+0x8E6A    0x25D20
+0x8E6B    0x3DAD
+0x8E6C    0x25C65
+0x8E6D    0x8492
+0x8E6E    0x7BFA
+0x8E70    0x7C35
+0x8E71    0x25CC1
+0x8E72    0x7C44
+0x8E73    0x7C83
+0x8E74    0x24882
+0x8E75    0x7CA6
+0x8E76    0x667D
+0x8E77    0x24578
+0x8E78    0x7CC9
+0x8E79    0x7CC7
+0x8E7A    0x7CE6
+0x8E7B    0x7C74
+0x8E7C    0x7CF3
+0x8E7D    0x7CF5
+0x8EA1    0x7E67
+0x8EA2    0x451D
+0x8EA3    0x26E44
+0x8EA4    0x7D5D
+0x8EA5    0x26ED6
+0x8EA6    0x748D
+0x8EA7    0x7D89
+0x8EA8    0x7DAB
+0x8EA9    0x7135
+0x8EAA    0x7DB3
+0x8EAC    0x24057
+0x8EAD    0x26029
+0x8EAE    0x7DE4
+0x8EAF    0x3D13
+0x8EB0    0x7DF5
+0x8EB1    0x217F9
+0x8EB2    0x7DE5
+0x8EB3    0x2836D
+0x8EB5    0x26121
+0x8EB6    0x2615A
+0x8EB7    0x7E6E
+0x8EB8    0x7E92
+0x8EB9    0x432B
+0x8EBA    0x946C
+0x8EBB    0x7E27
+0x8EBC    0x7F40
+0x8EBD    0x7F41
+0x8EBE    0x7F47
+0x8EBF    0x7936
+0x8EC0    0x262D0
+0x8EC1    0x99E1
+0x8EC2    0x7F97
+0x8EC3    0x26351
+0x8EC4    0x7FA3
+0x8EC5    0x21661
+0x8EC6    0x20068
+0x8EC7    0x455C
+0x8EC8    0x23766
+0x8EC9    0x4503
+0x8ECA    0x2833A
+0x8ECB    0x7FFA
+0x8ECC    0x26489
+0x8ECE    0x8008
+0x8ECF    0x801D
+0x8ED1    0x802F
+0x8ED2    0x2A087
+0x8ED3    0x26CC3
+0x8ED4    0x803B
+0x8ED5    0x803C
+0x8ED6    0x8061
+0x8ED7    0x22714
+0x8ED8    0x4989
+0x8ED9    0x26626
+0x8EDA    0x23DE3
+0x8EDB    0x266E8
+0x8EDC    0x6725
+0x8EDD    0x80A7
+0x8EDE    0x28A48
+0x8EDF    0x8107
+0x8EE0    0x811A
+0x8EE1    0x58B0
+0x8EE2    0x226F6
+0x8EE3    0x6C7F
+0x8EE4    0x26498
+0x8EE5    0x24FB8
+0x8EE6    0x64E7
+0x8EE7    0x2148A
+0x8EE8    0x8218
+0x8EE9    0x2185E
+0x8EEA    0x6A53
+0x8EEB    0x24A65
+0x8EEC    0x24A95
+0x8EED    0x447A
+0x8EEE    0x8229
+0x8EEF    0x20B0D
+0x8EF0    0x26A52
+0x8EF1    0x23D7E
+0x8EF2    0x4FF9
+0x8EF3    0x214FD
+0x8EF4    0x84E2
+0x8EF5    0x8362
+0x8EF6    0x26B0A
+0x8EF7    0x249A7
+0x8EF8    0x23530
+0x8EF9    0x21773
+0x8EFA    0x23DF8
+0x8EFB    0x82AA
+0x8EFC    0x691B
+0x8EFD    0x2F994
+0x8EFE    0x41DB
+0x8F40    0x854B
+0x8F41    0x82D0
+0x8F42    0x831A
+0x8F43    0x20E16
+0x8F44    0x217B4
+0x8F45    0x36C1
+0x8F46    0x2317D
+0x8F47    0x2355A
+0x8F48    0x827B
+0x8F49    0x82E2
+0x8F4A    0x8318
+0x8F4B    0x23E8B
+0x8F4C    0x26DA3
+0x8F4D    0x26B05
+0x8F4E    0x26B97
+0x8F4F    0x235CE
+0x8F50    0x3DBF
+0x8F51    0x831D
+0x8F52    0x55EC
+0x8F53    0x8385
+0x8F54    0x450B
+0x8F55    0x26DA5
+0x8F56    0x83AC
+0x8F58    0x83D3
+0x8F59    0x347E
+0x8F5A    0x26ED4
+0x8F5B    0x6A57
+0x8F5C    0x855A
+0x8F5D    0x3496
+0x8F5E    0x26E42
+0x8F5F    0x22EEF
+0x8F60    0x8458
+0x8F61    0x25BE4
+0x8F62    0x8471
+0x8F63    0x3DD3
+0x8F64    0x44E4
+0x8F65    0x6AA7
+0x8F66    0x844A
+0x8F67    0x23CB5
+0x8F68    0x7958
+0x8F6A    0x26B96
+0x8F6B    0x26E77
+0x8F6C    0x26E43
+0x8F6D    0x84DE
+0x8F6F    0x8391
+0x8F70    0x44A0
+0x8F71    0x8493
+0x8F72    0x84E4
+0x8F73    0x25C91
+0x8F74    0x4240
+0x8F75    0x25CC0
+0x8F76    0x4543
+0x8F77    0x8534
+0x8F78    0x5AF2
+0x8F79    0x26E99
+0x8F7A    0x4527
+0x8F7B    0x8573
+0x8F7C    0x4516
+0x8F7D    0x67BF
+0x8F7E    0x8616
+0x8FA1    0x28625
+0x8FA2    0x2863B
+0x8FA3    0x85C1
+0x8FA4    0x27088
+0x8FA5    0x8602
+0x8FA6    0x21582
+0x8FA7    0x270CD
+0x8FA8    0x2F9B2
+0x8FA9    0x456A
+0x8FAA    0x8628
+0x8FAB    0x3648
+0x8FAC    0x218A2
+0x8FAD    0x53F7
+0x8FAE    0x2739A
+0x8FAF    0x867E
+0x8FB0    0x8771
+0x8FB1    0x2A0F8
+0x8FB2    0x87EE
+0x8FB3    0x22C27
+0x8FB4    0x87B1
+0x8FB5    0x87DA
+0x8FB6    0x880F
+0x8FB7    0x5661
+0x8FB8    0x866C
+0x8FB9    0x6856
+0x8FBA    0x460F
+0x8FBB    0x8845
+0x8FBC    0x8846
+0x8FBD    0x275E0
+0x8FBE    0x23DB9
+0x8FBF    0x275E4
+0x8FC0    0x885E
+0x8FC1    0x889C
+0x8FC2    0x465B
+0x8FC3    0x88B4
+0x8FC4    0x88B5
+0x8FC5    0x63C1
+0x8FC6    0x88C5
+0x8FC7    0x7777
+0x8FC8    0x2770F
+0x8FC9    0x8987
+0x8FCA    0x898A
+0x8FCD    0x89A7
+0x8FCE    0x89BC
+0x8FCF    0x28A25
+0x8FD0    0x89E7
+0x8FD1    0x27924
+0x8FD2    0x27ABD
+0x8FD3    0x8A9C
+0x8FD4    0x7793
+0x8FD5    0x91FE
+0x8FD6    0x8A90
+0x8FD7    0x27A59
+0x8FD8    0x7AE9
+0x8FD9    0x27B3A
+0x8FDA    0x23F8F
+0x8FDB    0x4713
+0x8FDC    0x27B38
+0x8FDD    0x717C
+0x8FDE    0x8B0C
+0x8FDF    0x8B1F
+0x8FE0    0x25430
+0x8FE1    0x25565
+0x8FE2    0x8B3F
+0x8FE3    0x8B4C
+0x8FE4    0x8B4D
+0x8FE5    0x8AA9
+0x8FE6    0x24A7A
+0x8FE7    0x8B90
+0x8FE8    0x8B9B
+0x8FE9    0x8AAF
+0x8FEA    0x216DF
+0x8FEB    0x4615
+0x8FEC    0x884F
+0x8FED    0x8C9B
+0x8FEE    0x27D54
+0x8FEF    0x27D8F
+0x8FF0    0x2F9D4
+0x8FF1    0x3725
+0x8FF2    0x27D53
+0x8FF3    0x8CD6
+0x8FF4    0x27D98
+0x8FF5    0x27DBD
+0x8FF6    0x8D12
+0x8FF7    0x8D03
+0x8FF8    0x21910
+0x8FF9    0x8CDB
+0x8FFA    0x705C
+0x8FFB    0x8D11
+0x8FFC    0x24CC9
+0x8FFD    0x3ED0
+0x9040    0x8DA9
+0x9041    0x28002
+0x9042    0x21014
+0x9043    0x2498A
+0x9044    0x3B7C
+0x9045    0x281BC
+0x9046    0x2710C
+0x9047    0x7AE7
+0x9048    0x8EAD
+0x9049    0x8EB6
+0x904A    0x8EC3
+0x904B    0x92D4
+0x904C    0x8F19
+0x904D    0x8F2D
+0x904E    0x28365
+0x904F    0x28412
+0x9050    0x8FA5
+0x9051    0x9303
+0x9052    0x2A29F
+0x9053    0x20A50
+0x9054    0x8FB3
+0x9055    0x492A
+0x9056    0x289DE
+0x9057    0x2853D
+0x9058    0x23DBB
+0x9059    0x5EF8
+0x905A    0x23262
+0x905B    0x8FF9
+0x905C    0x2A014
+0x905D    0x286BC
+0x905E    0x28501
+0x905F    0x22325
+0x9060    0x3980
+0x9061    0x26ED7
+0x9062    0x9037
+0x9063    0x2853C
+0x9064    0x27ABE
+0x9065    0x9061
+0x9066    0x2856C
+0x9067    0x2860B
+0x9068    0x90A8
+0x9069    0x28713
+0x906A    0x90C4
+0x906B    0x286E6
+0x906C    0x90AE
+0x906E    0x9167
+0x906F    0x3AF0
+0x9070    0x91A9
+0x9071    0x91C4
+0x9072    0x7CAC
+0x9073    0x28933
+0x9074    0x21E89
+0x9075    0x920E
+0x9076    0x6C9F
+0x9077    0x9241
+0x9078    0x9262
+0x9079    0x255B9
+0x907B    0x28AC6
+0x907C    0x23C9B
+0x907D    0x28B0C
+0x907E    0x255DB
+0x90A1    0x20D31
+0x90A2    0x932C
+0x90A3    0x936B
+0x90A4    0x28AE1
+0x90A5    0x28BEB
+0x90A6    0x708F
+0x90A7    0x5AC3
+0x90A8    0x28AE2
+0x90A9    0x28AE5
+0x90AA    0x4965
+0x90AB    0x9244
+0x90AC    0x28BEC
+0x90AD    0x28C39
+0x90AE    0x28BFF
+0x90AF    0x9373
+0x90B0    0x945B
+0x90B1    0x8EBC
+0x90B2    0x9585
+0x90B3    0x95A6
+0x90B4    0x9426
+0x90B5    0x95A0
+0x90B6    0x6FF6
+0x90B7    0x42B9
+0x90B8    0x2267A
+0x90B9    0x286D8
+0x90BA    0x2127C
+0x90BB    0x23E2E
+0x90BC    0x49DF
+0x90BD    0x6C1C
+0x90BE    0x967B
+0x90BF    0x9696
+0x90C0    0x416C
+0x90C1    0x96A3
+0x90C2    0x26ED5
+0x90C3    0x61DA
+0x90C4    0x96B6
+0x90C5    0x78F5
+0x90C6    0x28AE0
+0x90C7    0x96BD
+0x90C8    0x53CC
+0x90C9    0x49A1
+0x90CA    0x26CB8
+0x90CB    0x20274
+0x90CC    0x26410
+0x90CD    0x290AF
+0x90CE    0x290E5
+0x90CF    0x24AD1
+0x90D0    0x21915
+0x90D1    0x2330A
+0x90D2    0x9731
+0x90D3    0x8642
+0x90D4    0x9736
+0x90D5    0x4A0F
+0x90D6    0x453D
+0x90D7    0x4585
+0x90D8    0x24AE9
+0x90D9    0x7075
+0x90DA    0x5B41
+0x90DB    0x971B
+0x90DD    0x291D5
+0x90DE    0x9757
+0x90DF    0x5B4A
+0x90E0    0x291EB
+0x90E1    0x975F
+0x90E2    0x9425
+0x90E3    0x50D0
+0x90E4    0x230B7
+0x90E5    0x230BC
+0x90E6    0x9789
+0x90E7    0x979F
+0x90E8    0x97B1
+0x90E9    0x97BE
+0x90EA    0x97C0
+0x90EB    0x97D2
+0x90EC    0x97E0
+0x90ED    0x2546C
+0x90EE    0x97EE
+0x90EF    0x741C
+0x90F0    0x29433
+0x90F2    0x97F5
+0x90F3    0x2941D
+0x90F4    0x2797A
+0x90F5    0x4AD1
+0x90F6    0x9834
+0x90F7    0x9833
+0x90F8    0x984B
+0x90F9    0x9866
+0x90FA    0x3B0E
+0x90FB    0x27175
+0x90FC    0x3D51
+0x90FD    0x20630
+0x90FE    0x2415C
+0x9140    0x25706
+0x9141    0x98CA
+0x9142    0x98B7
+0x9143    0x98C8
+0x9144    0x98C7
+0x9145    0x4AFF
+0x9146    0x26D27
+0x9147    0x216D3
+0x9148    0x55B0
+0x9149    0x98E1
+0x914A    0x98E6
+0x914B    0x98EC
+0x914C    0x9378
+0x914D    0x9939
+0x914E    0x24A29
+0x914F    0x4B72
+0x9150    0x29857
+0x9151    0x29905
+0x9152    0x99F5
+0x9153    0x9A0C
+0x9154    0x9A3B
+0x9155    0x9A10
+0x9156    0x9A58
+0x9157    0x25725
+0x9158    0x36C4
+0x9159    0x290B1
+0x915A    0x29BD5
+0x915B    0x9AE0
+0x915C    0x9AE2
+0x915D    0x29B05
+0x915E    0x9AF4
+0x915F    0x4C0E
+0x9160    0x9B14
+0x9161    0x9B2D
+0x9162    0x28600
+0x9163    0x5034
+0x9164    0x9B34
+0x9165    0x269A8
+0x9166    0x38C3
+0x9167    0x2307D
+0x9168    0x9B50
+0x9169    0x9B40
+0x916A    0x29D3E
+0x916B    0x5A45
+0x916C    0x21863
+0x916D    0x9B8E
+0x916E    0x2424B
+0x916F    0x9C02
+0x9170    0x9BFF
+0x9171    0x9C0C
+0x9172    0x29E68
+0x9173    0x9DD4
+0x9174    0x29FB7
+0x9175    0x2A192
+0x9176    0x2A1AB
+0x9177    0x2A0E1
+0x9178    0x2A123
+0x9179    0x2A1DF
+0x917A    0x9D7E
+0x917B    0x9D83
+0x917C    0x2A134
+0x917D    0x9E0E
+0x917E    0x6888
+0x91A1    0x9DC4
+0x91A2    0x2215B
+0x91A3    0x2A193
+0x91A4    0x2A220
+0x91A5    0x2193B
+0x91A6    0x2A233
+0x91A7    0x9D39
+0x91A8    0x2A0B9
+0x91A9    0x2A2B4
+0x91AA    0x9E90
+0x91AB    0x9E95
+0x91AC    0x9E9E
+0x91AD    0x9EA2
+0x91AE    0x4D34
+0x91AF    0x9EAA
+0x91B0    0x9EAF
+0x91B1    0x24364
+0x91B2    0x9EC1
+0x91B3    0x3B60
+0x91B4    0x39E5
+0x91B5    0x3D1D
+0x91B6    0x4F32
+0x91B7    0x37BE
+0x91B8    0x28C2B
+0x91B9    0x9F02
+0x91BA    0x9F08
+0x91BB    0x4B96
+0x91BC    0x9424
+0x91BD    0x26DA2
+0x91BE    0x9F17
+0x91C0    0x9F39
+0x91C1    0x569F
+0x91C2    0x568A
+0x91C3    0x9F45
+0x91C4    0x99B8
+0x91C5    0x2908B
+0x91C6    0x97F2
+0x91C7    0x847F
+0x91C8    0x9F62
+0x91C9    0x9F69
+0x91CA    0x7ADC
+0x91CB    0x9F8E
+0x91CC    0x7216
+0x91CD    0x4BBE
+0x91CE    0x24975
+0x91CF    0x249BB
+0x91D0    0x7177
+0x91D1    0x249F8
+0x91D2    0x24348
+0x91D3    0x24A51
+0x91D4    0x739E
+0x91D5    0x28BDA
+0x91D6    0x218FA
+0x91D7    0x799F
+0x91D8    0x2897E
+0x91D9    0x28E36
+0x91DA    0x9369
+0x91DB    0x93F3
+0x91DC    0x28A44
+0x91DD    0x92EC
+0x91DE    0x9381
+0x91DF    0x93CB
+0x91E0    0x2896C
+0x91E1    0x244B9
+0x91E2    0x7217
+0x91E3    0x3EEB
+0x91E4    0x7772
+0x91E5    0x7A43
+0x91E6    0x70D0
+0x91E7    0x24473
+0x91E8    0x243F8
+0x91E9    0x717E
+0x91EA    0x217EF
+0x91EB    0x70A3
+0x91EC    0x218BE
+0x91ED    0x23599
+0x91EE    0x3EC7
+0x91EF    0x21885
+0x91F0    0x2542F
+0x91F1    0x217F8
+0x91F2    0x3722
+0x91F3    0x216FB
+0x91F4    0x21839
+0x91F5    0x36E1
+0x91F6    0x21774
+0x91F7    0x218D1
+0x91F8    0x25F4B
+0x91F9    0x3723
+0x91FA    0x216C0
+0x91FB    0x575B
+0x91FC    0x24A25
+0x91FD    0x213FE
+0x91FE    0x212A8
+0x9240    0x213C6
+0x9241    0x214B6
+0x9242    0x8503
+0x9243    0x236A6
+0x9245    0x8455
+0x9246    0x24994
+0x9247    0x27165
+0x9248    0x23E31
+0x9249    0x2555C
+0x924A    0x23EFB
+0x924B    0x27052
+0x924C    0x44F4
+0x924D    0x236EE
+0x924E    0x2999D
+0x924F    0x26F26
+0x9250    0x67F9
+0x9251    0x3733
+0x9252    0x3C15
+0x9253    0x3DE7
+0x9254    0x586C
+0x9255    0x21922
+0x9256    0x6810
+0x9257    0x4057
+0x9258    0x2373F
+0x9259    0x240E1
+0x925A    0x2408B
+0x925B    0x2410F
+0x925C    0x26C21
+0x925D    0x54CB
+0x925E    0x569E
+0x925F    0x266B1
+0x9260    0x5692
+0x9261    0x20FDF
+0x9262    0x20BA8
+0x9263    0x20E0D
+0x9264    0x93C6
+0x9265    0x28B13
+0x9266    0x939C
+0x9267    0x4EF8
+0x9268    0x512B
+0x9269    0x3819
+0x926A    0x24436
+0x926B    0x4EBC
+0x926C    0x20465
+0x926D    0x2037F
+0x926E    0x4F4B
+0x926F    0x4F8A
+0x9270    0x25651
+0x9271    0x5A68
+0x9272    0x201AB
+0x9273    0x203CB
+0x9274    0x3999
+0x9275    0x2030A
+0x9276    0x20414
+0x9277    0x3435
+0x9278    0x4F29
+0x9279    0x202C0
+0x927A    0x28EB3
+0x927B    0x20275
+0x927C    0x8ADA
+0x927D    0x2020C
+0x927E    0x4E98
+0x92A1    0x50CD
+0x92A2    0x510D
+0x92A3    0x4FA2
+0x92A4    0x4F03
+0x92A5    0x24A0E
+0x92A6    0x23E8A
+0x92A7    0x4F42
+0x92A8    0x502E
+0x92A9    0x506C
+0x92AA    0x5081
+0x92AB    0x4FCC
+0x92AC    0x4FE5
+0x92AD    0x5058
+0x92AE    0x50FC
+0x92B3    0x6E76
+0x92B4    0x23595
+0x92B5    0x23E39
+0x92B6    0x23EBF
+0x92B7    0x6D72
+0x92B8    0x21884
+0x92B9    0x23E89
+0x92BA    0x51A8
+0x92BB    0x51C3
+0x92BC    0x205E0
+0x92BD    0x44DD
+0x92BE    0x204A3
+0x92BF    0x20492
+0x92C0    0x20491
+0x92C1    0x8D7A
+0x92C2    0x28A9C
+0x92C3    0x2070E
+0x92C4    0x5259
+0x92C5    0x52A4
+0x92C6    0x20873
+0x92C7    0x52E1
+0x92C9    0x467A
+0x92CA    0x718C
+0x92CB    0x2438C
+0x92CC    0x20C20
+0x92CD    0x249AC
+0x92CE    0x210E4
+0x92CF    0x69D1
+0x92D0    0x20E1D
+0x92D2    0x3EDE
+0x92D3    0x7499
+0x92D4    0x7414
+0x92D5    0x7456
+0x92D6    0x7398
+0x92D7    0x4B8E
+0x92D8    0x24ABC
+0x92D9    0x2408D
+0x92DA    0x53D0
+0x92DB    0x3584
+0x92DC    0x720F
+0x92DD    0x240C9
+0x92DE    0x55B4
+0x92DF    0x20345
+0x92E0    0x54CD
+0x92E1    0x20BC6
+0x92E2    0x571D
+0x92E3    0x925D
+0x92E4    0x96F4
+0x92E5    0x9366
+0x92E6    0x57DD
+0x92E7    0x578D
+0x92E8    0x577F
+0x92E9    0x363E
+0x92EA    0x58CB
+0x92EB    0x5A99
+0x92EC    0x28A46
+0x92ED    0x216FA
+0x92EE    0x2176F
+0x92EF    0x21710
+0x92F0    0x5A2C
+0x92F1    0x59B8
+0x92F2    0x928F
+0x92F3    0x5A7E
+0x92F4    0x5ACF
+0x92F5    0x5A12
+0x92F6    0x25946
+0x92F7    0x219F3
+0x92F8    0x21861
+0x92F9    0x24295
+0x92FA    0x36F5
+0x92FB    0x6D05
+0x92FC    0x7443
+0x92FD    0x5A21
+0x92FE    0x25E83
+0x9340    0x5A81
+0x9341    0x28BD7
+0x9342    0x20413
+0x9343    0x93E0
+0x9344    0x748C
+0x9345    0x21303
+0x9346    0x7105
+0x9347    0x4972
+0x9348    0x9408
+0x9349    0x289FB
+0x934A    0x93BD
+0x934B    0x37A0
+0x934C    0x5C1E
+0x934D    0x5C9E
+0x934E    0x5E5E
+0x934F    0x5E48
+0x9350    0x21996
+0x9351    0x2197C
+0x9352    0x23AEE
+0x9353    0x5ECD
+0x9354    0x5B4F
+0x9355    0x21903
+0x9356    0x21904
+0x9357    0x3701
+0x9358    0x218A0
+0x9359    0x36DD
+0x935A    0x216FE
+0x935B    0x36D3
+0x935C    0x812A
+0x935D    0x28A47
+0x935E    0x21DBA
+0x935F    0x23472
+0x9360    0x289A8
+0x9361    0x5F0C
+0x9362    0x5F0E
+0x9363    0x21927
+0x9364    0x217AB
+0x9365    0x5A6B
+0x9366    0x2173B
+0x9367    0x5B44
+0x9368    0x8614
+0x9369    0x275FD
+0x936A    0x8860
+0x936B    0x607E
+0x936C    0x22860
+0x936D    0x2262B
+0x936E    0x5FDB
+0x936F    0x3EB8
+0x9370    0x225AF
+0x9371    0x225BE
+0x9372    0x29088
+0x9373    0x26F73
+0x9374    0x61C0
+0x9375    0x2003E
+0x9376    0x20046
+0x9377    0x2261B
+0x9378    0x6199
+0x9379    0x6198
+0x937A    0x6075
+0x937B    0x22C9B
+0x937C    0x22D07
+0x937D    0x246D4
+0x937E    0x2914D
+0x93A1    0x6471
+0x93A2    0x24665
+0x93A3    0x22B6A
+0x93A4    0x3A29
+0x93A5    0x22B22
+0x93A6    0x23450
+0x93A7    0x298EA
+0x93A8    0x22E78
+0x93A9    0x6337
+0x93AA    0x2A45B
+0x93AB    0x64B6
+0x93AC    0x6331
+0x93AD    0x63D1
+0x93AE    0x249E3
+0x93AF    0x22D67
+0x93B0    0x62A4
+0x93B1    0x22CA1
+0x93B2    0x643B
+0x93B3    0x656B
+0x93B4    0x6972
+0x93B5    0x3BF4
+0x93B6    0x2308E
+0x93B7    0x232AD
+0x93B8    0x24989
+0x93B9    0x232AB
+0x93BA    0x550D
+0x93BB    0x232E0
+0x93BC    0x218D9
+0x93BD    0x2943F
+0x93BE    0x66CE
+0x93BF    0x23289
+0x93C0    0x231B3
+0x93C1    0x3AE0
+0x93C2    0x4190
+0x93C3    0x25584
+0x93C4    0x28B22
+0x93C5    0x2558F
+0x93C6    0x216FC
+0x93C7    0x2555B
+0x93C8    0x25425
+0x93C9    0x78EE
+0x93CA    0x23103
+0x93CB    0x2182A
+0x93CC    0x23234
+0x93CD    0x3464
+0x93CE    0x2320F
+0x93CF    0x23182
+0x93D0    0x242C9
+0x93D1    0x668E
+0x93D2    0x26D24
+0x93D3    0x666B
+0x93D4    0x4B93
+0x93D5    0x6630
+0x93D6    0x27870
+0x93D7    0x21DEB
+0x93D8    0x6663
+0x93D9    0x232D2
+0x93DA    0x232E1
+0x93DB    0x661E
+0x93DC    0x25872
+0x93DD    0x38D1
+0x93DE    0x2383A
+0x93DF    0x237BC
+0x93E0    0x3B99
+0x93E1    0x237A2
+0x93E2    0x233FE
+0x93E3    0x74D0
+0x93E4    0x3B96
+0x93E5    0x678F
+0x93E6    0x2462A
+0x93E7    0x68B6
+0x93E8    0x681E
+0x93E9    0x3BC4
+0x93EA    0x6ABE
+0x93EB    0x3863
+0x93EC    0x237D5
+0x93ED    0x24487
+0x93EE    0x6A33
+0x93EF    0x6A52
+0x93F0    0x6AC9
+0x93F1    0x6B05
+0x93F2    0x21912
+0x93F3    0x6511
+0x93F4    0x6898
+0x93F5    0x6A4C
+0x93F6    0x3BD7
+0x93F7    0x6A7A
+0x93F8    0x6B57
+0x93F9    0x23FC0
+0x93FA    0x23C9A
+0x93FB    0x93A0
+0x93FC    0x92F2
+0x93FD    0x28BEA
+0x93FE    0x28ACB
+0x9440    0x9289
+0x9441    0x2801E
+0x9442    0x289DC
+0x9443    0x9467
+0x9444    0x6DA5
+0x9445    0x6F0B
+0x9446    0x249EC
+0x9448    0x23F7F
+0x9449    0x3D8F
+0x944A    0x6E04
+0x944B    0x2403C
+0x944C    0x5A3D
+0x944D    0x6E0A
+0x944E    0x5847
+0x944F    0x6D24
+0x9450    0x7842
+0x9451    0x713B
+0x9452    0x2431A
+0x9453    0x24276
+0x9454    0x70F1
+0x9455    0x7250
+0x9456    0x7287
+0x9457    0x7294
+0x9458    0x2478F
+0x9459    0x24725
+0x945A    0x5179
+0x945B    0x24AA4
+0x945C    0x205EB
+0x945D    0x747A
+0x945E    0x23EF8
+0x945F    0x2365F
+0x9460    0x24A4A
+0x9461    0x24917
+0x9462    0x25FE1
+0x9463    0x3F06
+0x9464    0x3EB1
+0x9465    0x24ADF
+0x9466    0x28C23
+0x9467    0x23F35
+0x9468    0x60A7
+0x9469    0x3EF3
+0x946A    0x74CC
+0x946B    0x743C
+0x946C    0x9387
+0x946D    0x7437
+0x946E    0x449F
+0x946F    0x26DEA
+0x9470    0x4551
+0x9471    0x7583
+0x9472    0x3F63
+0x9473    0x24CD9
+0x9474    0x24D06
+0x9475    0x3F58
+0x9476    0x7555
+0x9477    0x7673
+0x9478    0x2A5C6
+0x9479    0x3B19
+0x947A    0x7468
+0x947B    0x28ACC
+0x947C    0x249AB
+0x947D    0x2498E
+0x947E    0x3AFB
+0x94A1    0x3DCD
+0x94A2    0x24A4E
+0x94A3    0x3EFF
+0x94A4    0x249C5
+0x94A5    0x248F3
+0x94A6    0x91FA
+0x94A7    0x5732
+0x94A8    0x9342
+0x94A9    0x28AE3
+0x94AA    0x21864
+0x94AB    0x50DF
+0x94AC    0x25221
+0x94AD    0x251E7
+0x94AE    0x7778
+0x94AF    0x23232
+0x94B0    0x770E
+0x94B1    0x770F
+0x94B2    0x777B
+0x94B3    0x24697
+0x94B4    0x23781
+0x94B5    0x3A5E
+0x94B6    0x248F0
+0x94B7    0x7438
+0x94B8    0x749B
+0x94B9    0x3EBF
+0x94BA    0x24ABA
+0x94BB    0x24AC7
+0x94BC    0x40C8
+0x94BD    0x24A96
+0x94BE    0x261AE
+0x94BF    0x9307
+0x94C0    0x25581
+0x94C1    0x781E
+0x94C2    0x788D
+0x94C3    0x7888
+0x94C4    0x78D2
+0x94C5    0x73D0
+0x94C6    0x7959
+0x94C7    0x27741
+0x94C8    0x256E3
+0x94C9    0x410E
+0x94CB    0x8496
+0x94CC    0x79A5
+0x94CD    0x6A2D
+0x94CE    0x23EFA
+0x94CF    0x7A3A
+0x94D0    0x79F4
+0x94D1    0x416E
+0x94D2    0x216E6
+0x94D3    0x4132
+0x94D4    0x9235
+0x94D5    0x79F1
+0x94D6    0x20D4C
+0x94D7    0x2498C
+0x94D8    0x20299
+0x94D9    0x23DBA
+0x94DA    0x2176E
+0x94DB    0x3597
+0x94DC    0x556B
+0x94DD    0x3570
+0x94DE    0x36AA
+0x94DF    0x201D4
+0x94E0    0x20C0D
+0x94E1    0x7AE2
+0x94E2    0x5A59
+0x94E3    0x226F5
+0x94E4    0x25AAF
+0x94E5    0x25A9C
+0x94E6    0x5A0D
+0x94E7    0x2025B
+0x94E8    0x78F0
+0x94E9    0x5A2A
+0x94EA    0x25BC6
+0x94EB    0x7AFE
+0x94EC    0x41F9
+0x94ED    0x7C5D
+0x94EE    0x7C6D
+0x94EF    0x4211
+0x94F0    0x25BB3
+0x94F1    0x25EBC
+0x94F2    0x25EA6
+0x94F3    0x7CCD
+0x94F4    0x249F9
+0x94F5    0x217B0
+0x94F6    0x7C8E
+0x94F7    0x7C7C
+0x94F8    0x7CAE
+0x94F9    0x6AB2
+0x94FA    0x7DDC
+0x94FB    0x7E07
+0x94FC    0x7DD3
+0x94FD    0x7F4E
+0x94FE    0x26261
+0x9540    0x2615C
+0x9541    0x27B48
+0x9542    0x7D97
+0x9543    0x25E82
+0x9544    0x426A
+0x9545    0x26B75
+0x9546    0x20916
+0x9547    0x67D6
+0x9548    0x2004E
+0x9549    0x235CF
+0x954A    0x57C4
+0x954B    0x26412
+0x954C    0x263F8
+0x954D    0x24962
+0x954E    0x7FDD
+0x954F    0x7B27
+0x9550    0x2082C
+0x9551    0x25AE9
+0x9552    0x25D43
+0x9553    0x7B0C
+0x9554    0x25E0E
+0x9555    0x99E6
+0x9556    0x8645
+0x9557    0x9A63
+0x9558    0x6A1C
+0x9559    0x2343F
+0x955A    0x39E2
+0x955B    0x249F7
+0x955C    0x265AD
+0x955D    0x9A1F
+0x955E    0x265A0
+0x955F    0x8480
+0x9560    0x27127
+0x9561    0x26CD1
+0x9562    0x44EA
+0x9563    0x8137
+0x9564    0x4402
+0x9565    0x80C6
+0x9566    0x8109
+0x9567    0x8142
+0x9568    0x267B4
+0x9569    0x98C3
+0x956A    0x26A42
+0x956B    0x8262
+0x956C    0x8265
+0x956D    0x26A51
+0x956E    0x8453
+0x956F    0x26DA7
+0x9570    0x8610
+0x9571    0x2721B
+0x9572    0x5A86
+0x9573    0x417F
+0x9574    0x21840
+0x9575    0x5B2B
+0x9576    0x218A1
+0x9577    0x5AE4
+0x9578    0x218D8
+0x9579    0x86A0
+0x957A    0x2F9BC
+0x957B    0x23D8F
+0x957C    0x882D
+0x957D    0x27422
+0x957E    0x5A02
+0x95A1    0x886E
+0x95A2    0x4F45
+0x95A3    0x8887
+0x95A4    0x88BF
+0x95A5    0x88E6
+0x95A6    0x8965
+0x95A7    0x894D
+0x95A8    0x25683
+0x95A9    0x8954
+0x95AA    0x27785
+0x95AB    0x27784
+0x95AC    0x28BF5
+0x95AD    0x28BD9
+0x95AE    0x28B9C
+0x95AF    0x289F9
+0x95B0    0x3EAD
+0x95B1    0x84A3
+0x95B2    0x46F5
+0x95B3    0x46CF
+0x95B4    0x37F2
+0x95B5    0x8A3D
+0x95B6    0x8A1C
+0x95B7    0x29448
+0x95B8    0x5F4D
+0x95B9    0x922B
+0x95BA    0x24284
+0x95BB    0x65D4
+0x95BC    0x7129
+0x95BD    0x70C4
+0x95BE    0x21845
+0x95BF    0x9D6D
+0x95C0    0x8C9F
+0x95C1    0x8CE9
+0x95C2    0x27DDC
+0x95C3    0x599A
+0x95C4    0x77C3
+0x95C5    0x59F0
+0x95C6    0x436E
+0x95C7    0x36D4
+0x95C8    0x8E2A
+0x95C9    0x8EA7
+0x95CA    0x24C09
+0x95CB    0x8F30
+0x95CC    0x8F4A
+0x95CD    0x42F4
+0x95CE    0x6C58
+0x95CF    0x6FBB
+0x95D0    0x22321
+0x95D1    0x489B
+0x95D2    0x6F79
+0x95D3    0x6E8B
+0x95D4    0x217DA
+0x95D5    0x9BE9
+0x95D6    0x36B5
+0x95D7    0x2492F
+0x95D8    0x90BB
+0x95DA    0x5571
+0x95DB    0x4906
+0x95DC    0x91BB
+0x95DD    0x9404
+0x95DE    0x28A4B
+0x95DF    0x4062
+0x95E0    0x28AFC
+0x95E1    0x9427
+0x95E2    0x28C1D
+0x95E3    0x28C3B
+0x95E4    0x84E5
+0x95E5    0x8A2B
+0x95E6    0x9599
+0x95E7    0x95A7
+0x95E8    0x9597
+0x95E9    0x9596
+0x95EA    0x28D34
+0x95EB    0x7445
+0x95EC    0x3EC2
+0x95ED    0x248FF
+0x95EE    0x24A42
+0x95EF    0x243EA
+0x95F0    0x3EE7
+0x95F1    0x23225
+0x95F2    0x968F
+0x95F3    0x28EE7
+0x95F4    0x28E66
+0x95F5    0x28E65
+0x95F6    0x3ECC
+0x95F7    0x249ED
+0x95F8    0x24A78
+0x95F9    0x23FEE
+0x95FA    0x7412
+0x95FB    0x746B
+0x95FC    0x3EFC
+0x95FD    0x9741
+0x95FE    0x290B0
+0x9640    0x6847
+0x9641    0x4A1D
+0x9642    0x29093
+0x9643    0x257DF
+0x9645    0x9368
+0x9646    0x28989
+0x9647    0x28C26
+0x9648    0x28B2F
+0x9649    0x263BE
+0x964A    0x92BA
+0x964B    0x5B11
+0x964C    0x8B69
+0x964D    0x493C
+0x964E    0x73F9
+0x964F    0x2421B
+0x9650    0x979B
+0x9651    0x9771
+0x9652    0x9938
+0x9653    0x20F26
+0x9654    0x5DC1
+0x9655    0x28BC5
+0x9656    0x24AB2
+0x9657    0x981F
+0x9658    0x294DA
+0x9659    0x92F6
+0x965A    0x295D7
+0x965B    0x91E5
+0x965C    0x44C0
+0x965D    0x28B50
+0x965E    0x24A67
+0x965F    0x28B64
+0x9660    0x98DC
+0x9661    0x28A45
+0x9662    0x3F00
+0x9663    0x922A
+0x9664    0x4925
+0x9665    0x8414
+0x9666    0x993B
+0x9667    0x994D
+0x9668    0x27B06
+0x9669    0x3DFD
+0x966A    0x999B
+0x966B    0x4B6F
+0x966C    0x99AA
+0x966D    0x9A5C
+0x966E    0x28B65
+0x966F    0x258C8
+0x9670    0x6A8F
+0x9671    0x9A21
+0x9672    0x5AFE
+0x9673    0x9A2F
+0x9674    0x298F1
+0x9675    0x4B90
+0x9676    0x29948
+0x9677    0x99BC
+0x9678    0x4BBD
+0x9679    0x4B97
+0x967A    0x937D
+0x967B    0x5872
+0x967C    0x21302
+0x967D    0x5822
+0x967E    0x249B8
+0x96A1    0x214E8
+0x96A2    0x7844
+0x96A3    0x2271F
+0x96A4    0x23DB8
+0x96A5    0x68C5
+0x96A6    0x3D7D
+0x96A7    0x9458
+0x96A8    0x3927
+0x96A9    0x6150
+0x96AA    0x22781
+0x96AB    0x2296B
+0x96AC    0x6107
+0x96AD    0x9C4F
+0x96AE    0x9C53
+0x96AF    0x9C7B
+0x96B0    0x9C35
+0x96B1    0x9C10
+0x96B2    0x9B7F
+0x96B3    0x9BCF
+0x96B4    0x29E2D
+0x96B5    0x9B9F
+0x96B6    0x2A1F5
+0x96B7    0x2A0FE
+0x96B8    0x9D21
+0x96B9    0x4CAE
+0x96BA    0x24104
+0x96BB    0x9E18
+0x96BC    0x4CB0
+0x96BD    0x9D0C
+0x96BE    0x2A1B4
+0x96BF    0x2A0ED
+0x96C0    0x2A0F3
+0x96C1    0x2992F
+0x96C2    0x9DA5
+0x96C3    0x84BD
+0x96C4    0x26E12
+0x96C5    0x26FDF
+0x96C6    0x26B82
+0x96C7    0x85FC
+0x96C8    0x4533
+0x96C9    0x26DA4
+0x96CA    0x26E84
+0x96CB    0x26DF0
+0x96CC    0x8420
+0x96CD    0x85EE
+0x96CE    0x26E00
+0x96CF    0x237D7
+0x96D0    0x26064
+0x96D1    0x79E2
+0x96D2    0x2359C
+0x96D3    0x23640
+0x96D4    0x492D
+0x96D5    0x249DE
+0x96D6    0x3D62
+0x96D7    0x93DB
+0x96D8    0x92BE
+0x96D9    0x9348
+0x96DA    0x202BF
+0x96DB    0x78B9
+0x96DC    0x9277
+0x96DD    0x944D
+0x96DE    0x4FE4
+0x96DF    0x3440
+0x96E0    0x9064
+0x96E1    0x2555D
+0x96E2    0x783D
+0x96E3    0x7854
+0x96E4    0x78B6
+0x96E5    0x784B
+0x96E6    0x21757
+0x96E7    0x231C9
+0x96E8    0x24941
+0x96E9    0x369A
+0x96EA    0x4F72
+0x96EB    0x6FDA
+0x96EC    0x6FD9
+0x96EE    0x701E
+0x96EF    0x5414
+0x96F0    0x241B5
+0x96F1    0x57BB
+0x96F2    0x58F3
+0x96F3    0x578A
+0x96F4    0x9D16
+0x96F5    0x57D7
+0x96F6    0x7134
+0x96F7    0x34AF
+0x96F8    0x241AC
+0x96F9    0x71EB
+0x96FA    0x26C40
+0x96FB    0x24F97
+0x96FD    0x217B5
+0x96FE    0x28A49
+0x9740    0x610C
+0x9741    0x5ACE
+0x9742    0x5A0B
+0x9743    0x42BC
+0x9744    0x24488
+0x9745    0x372C
+0x9746    0x4B7B
+0x9747    0x289FC
+0x9748    0x93BB
+0x9749    0x93B8
+0x974A    0x218D6
+0x974B    0x20F1D
+0x974C    0x8472
+0x974D    0x26CC0
+0x974E    0x21413
+0x974F    0x242FA
+0x9750    0x22C26
+0x9751    0x243C1
+0x9752    0x5994
+0x9753    0x23DB7
+0x9754    0x26741
+0x9755    0x7DA8
+0x9756    0x2615B
+0x9757    0x260A4
+0x9758    0x249B9
+0x9759    0x2498B
+0x975A    0x289FA
+0x975B    0x92E5
+0x975C    0x73E2
+0x975D    0x3EE9
+0x975E    0x74B4
+0x975F    0x28B63
+0x9760    0x2189F
+0x9761    0x3EE1
+0x9762    0x24AB3
+0x9763    0x6AD8
+0x9764    0x73F3
+0x9765    0x73FB
+0x9766    0x3ED6
+0x9767    0x24A3E
+0x9768    0x24A94
+0x9769    0x217D9
+0x976A    0x24A66
+0x976B    0x203A7
+0x976C    0x21424
+0x976D    0x249E5
+0x976E    0x7448
+0x976F    0x24916
+0x9770    0x70A5
+0x9771    0x24976
+0x9772    0x9284
+0x9773    0x73E6
+0x9774    0x935F
+0x9775    0x204FE
+0x9776    0x9331
+0x9777    0x28ACE
+0x9778    0x28A16
+0x9779    0x9386
+0x977A    0x28BE7
+0x977B    0x255D5
+0x977C    0x4935
+0x977D    0x28A82
+0x977E    0x716B
+0x97A1    0x24943
+0x97A2    0x20CFF
+0x97A3    0x56A4
+0x97A4    0x2061A
+0x97A5    0x20BEB
+0x97A6    0x20CB8
+0x97A7    0x5502
+0x97A8    0x79C4
+0x97A9    0x217FA
+0x97AA    0x7DFE
+0x97AB    0x216C2
+0x97AC    0x24A50
+0x97AD    0x21852
+0x97AE    0x452E
+0x97AF    0x9401
+0x97B0    0x370A
+0x97B1    0x28AC0
+0x97B2    0x249AD
+0x97B3    0x59B0
+0x97B4    0x218BF
+0x97B5    0x21883
+0x97B6    0x27484
+0x97B7    0x5AA1
+0x97B8    0x36E2
+0x97B9    0x23D5B
+0x97BA    0x36B0
+0x97BB    0x925F
+0x97BC    0x5A79
+0x97BD    0x28A81
+0x97BE    0x21862
+0x97BF    0x9374
+0x97C0    0x3CCD
+0x97C1    0x20AB4
+0x97C2    0x4A96
+0x97C3    0x398A
+0x97C4    0x50F4
+0x97C5    0x3D69
+0x97C6    0x3D4C
+0x97C7    0x2139C
+0x97C8    0x7175
+0x97C9    0x42FB
+0x97CA    0x28218
+0x97CB    0x6E0F
+0x97CC    0x290E4
+0x97CD    0x44EB
+0x97CE    0x6D57
+0x97CF    0x27E4F
+0x97D0    0x7067
+0x97D1    0x6CAF
+0x97D2    0x3CD6
+0x97D3    0x23FED
+0x97D4    0x23E2D
+0x97D5    0x6E02
+0x97D6    0x6F0C
+0x97D7    0x3D6F
+0x97D8    0x203F5
+0x97D9    0x7551
+0x97DA    0x36BC
+0x97DB    0x34C8
+0x97DC    0x4680
+0x97DD    0x3EDA
+0x97DE    0x4871
+0x97DF    0x59C4
+0x97E0    0x926E
+0x97E1    0x493E
+0x97E2    0x8F41
+0x97E3    0x28C1C
+0x97E4    0x26BC0
+0x97E5    0x5812
+0x97E6    0x57C8
+0x97E7    0x36D6
+0x97E8    0x21452
+0x97E9    0x70FE
+0x97EA    0x24362
+0x97EB    0x24A71
+0x97EC    0x22FE3
+0x97ED    0x212B0
+0x97EE    0x223BD
+0x97EF    0x68B9
+0x97F0    0x6967
+0x97F1    0x21398
+0x97F2    0x234E5
+0x97F3    0x27BF4
+0x97F4    0x236DF
+0x97F5    0x28A83
+0x97F6    0x237D6
+0x97F7    0x233FA
+0x97F8    0x24C9F
+0x97F9    0x6A1A
+0x97FA    0x236AD
+0x97FB    0x26CB7
+0x97FC    0x843E
+0x97FD    0x44DF
+0x97FE    0x44CE
+0x9840    0x26D26
+0x9841    0x26D51
+0x9842    0x26C82
+0x9843    0x26FDE
+0x9844    0x6F17
+0x9845    0x27109
+0x9846    0x833D
+0x9847    0x2173A
+0x9848    0x83ED
+0x9849    0x26C80
+0x984A    0x27053
+0x984B    0x217DB
+0x984C    0x5989
+0x984D    0x5A82
+0x984E    0x217B3
+0x984F    0x5A61
+0x9850    0x5A71
+0x9851    0x21905
+0x9852    0x241FC
+0x9853    0x372D
+0x9854    0x59EF
+0x9855    0x2173C
+0x9856    0x36C7
+0x9857    0x718E
+0x9858    0x9390
+0x9859    0x669A
+0x985A    0x242A5
+0x985B    0x5A6E
+0x985C    0x5A2B
+0x985D    0x24293
+0x985E    0x6A2B
+0x985F    0x23EF9
+0x9860    0x27736
+0x9861    0x2445B
+0x9862    0x242CA
+0x9863    0x711D
+0x9864    0x24259
+0x9865    0x289E1
+0x9866    0x4FB0
+0x9867    0x26D28
+0x9868    0x5CC2
+0x9869    0x244CE
+0x986A    0x27E4D
+0x986B    0x243BD
+0x986C    0x6A0C
+0x986D    0x24256
+0x986E    0x21304
+0x986F    0x70A6
+0x9870    0x7133
+0x9871    0x243E9
+0x9872    0x3DA5
+0x9873    0x6CDF
+0x9874    0x2F825
+0x9875    0x24A4F
+0x9876    0x7E65
+0x9877    0x59EB
+0x9878    0x5D2F
+0x9879    0x3DF3
+0x987A    0x5F5C
+0x987B    0x24A5D
+0x987C    0x217DF
+0x987D    0x7DA4
+0x987E    0x8426
+0x98A1    0x5485
+0x98A2    0x23AFA
+0x98A3    0x23300
+0x98A4    0x20214
+0x98A5    0x577E
+0x98A6    0x208D5
+0x98A7    0x20619
+0x98A8    0x3FE5
+0x98A9    0x21F9E
+0x98AA    0x2A2B6
+0x98AB    0x7003
+0x98AC    0x2915B
+0x98AD    0x5D70
+0x98AE    0x738F
+0x98AF    0x7CD3
+0x98B0    0x28A59
+0x98B1    0x29420
+0x98B2    0x4FC8
+0x98B3    0x7FE7
+0x98B4    0x72CD
+0x98B5    0x7310
+0x98B6    0x27AF4
+0x98B7    0x7338
+0x98B8    0x7339
+0x98B9    0x256F6
+0x98BA    0x7341
+0x98BB    0x7348
+0x98BC    0x3EA9
+0x98BD    0x27B18
+0x98BE    0x906C
+0x98BF    0x71F5
+0x98C0    0x248F2
+0x98C1    0x73E1
+0x98C2    0x81F6
+0x98C3    0x3ECA
+0x98C4    0x770C
+0x98C5    0x3ED1
+0x98C6    0x6CA2
+0x98C7    0x56FD
+0x98C8    0x7419
+0x98C9    0x741E
+0x98CA    0x741F
+0x98CB    0x3EE2
+0x98CC    0x3EF0
+0x98CD    0x3EF4
+0x98CE    0x3EFA
+0x98CF    0x74D3
+0x98D0    0x3F0E
+0x98D1    0x3F53
+0x98D2    0x7542
+0x98D3    0x756D
+0x98D4    0x7572
+0x98D5    0x758D
+0x98D6    0x3F7C
+0x98D7    0x75C8
+0x98D8    0x75DC
+0x98D9    0x3FC0
+0x98DA    0x764D
+0x98DB    0x3FD7
+0x98DC    0x7674
+0x98DD    0x3FDC
+0x98DE    0x767A
+0x98DF    0x24F5C
+0x98E0    0x7188
+0x98E1    0x5623
+0x98E2    0x8980
+0x98E3    0x5869
+0x98E4    0x401D
+0x98E5    0x7743
+0x98E6    0x4039
+0x98E7    0x6761
+0x98E8    0x4045
+0x98E9    0x35DB
+0x98EA    0x7798
+0x98EB    0x406A
+0x98EC    0x406F
+0x98ED    0x5C5E
+0x98EE    0x77BE
+0x98EF    0x77CB
+0x98F0    0x58F2
+0x98F1    0x7818
+0x98F2    0x70B9
+0x98F3    0x781C
+0x98F4    0x40A8
+0x98F5    0x7839
+0x98F6    0x7847
+0x98F7    0x7851
+0x98F8    0x7866
+0x98F9    0x8448
+0x98FA    0x25535
+0x98FB    0x7933
+0x98FC    0x6803
+0x98FD    0x7932
+0x98FE    0x4103
+0x9940    0x4109
+0x9941    0x7991
+0x9942    0x7999
+0x9943    0x8FBB
+0x9944    0x7A06
+0x9945    0x8FBC
+0x9946    0x4167
+0x9947    0x7A91
+0x9948    0x41B2
+0x9949    0x7ABC
+0x994A    0x8279
+0x994B    0x41C4
+0x994C    0x7ACF
+0x994D    0x7ADB
+0x994E    0x41CF
+0x994F    0x4E21
+0x9950    0x7B62
+0x9951    0x7B6C
+0x9952    0x7B7B
+0x9953    0x7C12
+0x9954    0x7C1B
+0x9955    0x4260
+0x9956    0x427A
+0x9957    0x7C7B
+0x9958    0x7C9C
+0x9959    0x428C
+0x995A    0x7CB8
+0x995B    0x4294
+0x995C    0x7CED
+0x995D    0x8F93
+0x995E    0x70C0
+0x995F    0x20CCF
+0x9960    0x7DCF
+0x9961    0x7DD4
+0x9962    0x7DD0
+0x9963    0x7DFD
+0x9964    0x7FAE
+0x9965    0x7FB4
+0x9966    0x729F
+0x9967    0x4397
+0x9968    0x8020
+0x9969    0x8025
+0x996A    0x7B39
+0x996B    0x802E
+0x996C    0x8031
+0x996D    0x8054
+0x996E    0x3DCC
+0x996F    0x57B4
+0x9970    0x70A0
+0x9971    0x80B7
+0x9972    0x80E9
+0x9973    0x43ED
+0x9974    0x810C
+0x9975    0x732A
+0x9976    0x810E
+0x9977    0x8112
+0x9978    0x7560
+0x9979    0x8114
+0x997A    0x4401
+0x997B    0x3B39
+0x997C    0x8156
+0x997D    0x8159
+0x997E    0x815A
+0x99A1    0x4413
+0x99A2    0x583A
+0x99A3    0x817C
+0x99A4    0x8184
+0x99A5    0x4425
+0x99A6    0x8193
+0x99A7    0x442D
+0x99A8    0x81A5
+0x99A9    0x57EF
+0x99AA    0x81C1
+0x99AB    0x81E4
+0x99AC    0x8254
+0x99AD    0x448F
+0x99AE    0x82A6
+0x99AF    0x8276
+0x99B0    0x82CA
+0x99B1    0x82D8
+0x99B2    0x82FF
+0x99B3    0x44B0
+0x99B4    0x8357
+0x99B5    0x9669
+0x99B6    0x698A
+0x99B7    0x8405
+0x99B8    0x70F5
+0x99B9    0x8464
+0x99BA    0x60E3
+0x99BB    0x8488
+0x99BC    0x4504
+0x99BD    0x84BE
+0x99BE    0x84E1
+0x99BF    0x84F8
+0x99C0    0x8510
+0x99C1    0x8538
+0x99C2    0x8552
+0x99C3    0x453B
+0x99C4    0x856F
+0x99C5    0x8570
+0x99C6    0x85E0
+0x99C7    0x4577
+0x99C8    0x8672
+0x99C9    0x8692
+0x99CA    0x86B2
+0x99CB    0x86EF
+0x99CC    0x9645
+0x99CD    0x878B
+0x99CE    0x4606
+0x99CF    0x4617
+0x99D0    0x88AE
+0x99D1    0x88FF
+0x99D2    0x8924
+0x99D3    0x8947
+0x99D4    0x8991
+0x99D5    0x27967
+0x99D6    0x8A29
+0x99D7    0x8A38
+0x99D8    0x8A94
+0x99D9    0x8AB4
+0x99DA    0x8C51
+0x99DB    0x8CD4
+0x99DC    0x8CF2
+0x99DD    0x8D1C
+0x99DE    0x4798
+0x99DF    0x585F
+0x99E0    0x8DC3
+0x99E1    0x47ED
+0x99E2    0x4EEE
+0x99E3    0x8E3A
+0x99E4    0x55D8
+0x99E5    0x5754
+0x99E6    0x8E71
+0x99E7    0x55F5
+0x99E8    0x8EB0
+0x99E9    0x4837
+0x99EA    0x8ECE
+0x99EB    0x8EE2
+0x99EC    0x8EE4
+0x99ED    0x8EED
+0x99EE    0x8EF2
+0x99EF    0x8FB7
+0x99F0    0x8FC1
+0x99F1    0x8FCA
+0x99F2    0x8FCC
+0x99F3    0x9033
+0x99F4    0x99C4
+0x99F5    0x48AD
+0x99F6    0x98E0
+0x99F7    0x9213
+0x99F8    0x491E
+0x99F9    0x9228
+0x99FA    0x9258
+0x99FB    0x926B
+0x99FC    0x92B1
+0x99FD    0x92AE
+0x99FE    0x92BF
+0x9A40    0x92E3
+0x9A41    0x92EB
+0x9A42    0x92F3
+0x9A43    0x92F4
+0x9A44    0x92FD
+0x9A45    0x9343
+0x9A46    0x9384
+0x9A47    0x93AD
+0x9A48    0x4945
+0x9A49    0x4951
+0x9A4A    0x9EBF
+0x9A4B    0x9417
+0x9A4C    0x5301
+0x9A4D    0x941D
+0x9A4E    0x942D
+0x9A4F    0x943E
+0x9A50    0x496A
+0x9A51    0x9454
+0x9A52    0x9479
+0x9A53    0x952D
+0x9A54    0x95A2
+0x9A55    0x49A7
+0x9A56    0x95F4
+0x9A57    0x9633
+0x9A58    0x49E5
+0x9A59    0x67A0
+0x9A5A    0x4A24
+0x9A5B    0x9740
+0x9A5C    0x4A35
+0x9A5D    0x97B2
+0x9A5E    0x97C2
+0x9A5F    0x5654
+0x9A60    0x4AE4
+0x9A61    0x60E8
+0x9A62    0x98B9
+0x9A63    0x4B19
+0x9A64    0x98F1
+0x9A65    0x5844
+0x9A66    0x990E
+0x9A67    0x9919
+0x9A68    0x51B4
+0x9A69    0x991C
+0x9A6A    0x9937
+0x9A6B    0x9942
+0x9A6C    0x995D
+0x9A6D    0x9962
+0x9A6E    0x4B70
+0x9A6F    0x99C5
+0x9A70    0x4B9D
+0x9A71    0x9A3C
+0x9A72    0x9B0F
+0x9A73    0x7A83
+0x9A74    0x9B69
+0x9A75    0x9B81
+0x9A76    0x9BDD
+0x9A77    0x9BF1
+0x9A78    0x9BF4
+0x9A79    0x4C6D
+0x9A7A    0x9C20
+0x9A7B    0x376F
+0x9A7C    0x21BC2
+0x9A7D    0x9D49
+0x9A7E    0x9C3A
+0x9AA1    0x9EFE
+0x9AA2    0x5650
+0x9AA3    0x9D93
+0x9AA4    0x9DBD
+0x9AA5    0x9DC0
+0x9AA6    0x9DFC
+0x9AA7    0x94F6
+0x9AA8    0x8FB6
+0x9AA9    0x9E7B
+0x9AAA    0x9EAC
+0x9AAB    0x9EB1
+0x9AAC    0x9EBD
+0x9AAD    0x9EC6
+0x9AAE    0x94DC
+0x9AAF    0x9EE2
+0x9AB0    0x9EF1
+0x9AB1    0x9EF8
+0x9AB2    0x7AC8
+0x9AB3    0x9F44
+0x9AB4    0x20094
+0x9AB5    0x202B7
+0x9AB6    0x203A0
+0x9AB7    0x691A
+0x9AB8    0x94C3
+0x9AB9    0x59AC
+0x9ABA    0x204D7
+0x9ABB    0x5840
+0x9ABC    0x94C1
+0x9ABD    0x37B9
+0x9ABE    0x205D5
+0x9ABF    0x20615
+0x9AC0    0x20676
+0x9AC1    0x216BA
+0x9AC2    0x5757
+0x9AC3    0x7173
+0x9AC4    0x20AC2
+0x9AC5    0x20ACD
+0x9AC6    0x20BBF
+0x9AC7    0x546A
+0x9AC8    0x2F83B
+0x9AC9    0x20BCB
+0x9ACA    0x549E
+0x9ACB    0x20BFB
+0x9ACC    0x20C3B
+0x9ACD    0x20C53
+0x9ACE    0x20C65
+0x9ACF    0x20C7C
+0x9AD0    0x60E7
+0x9AD1    0x20C8D
+0x9AD2    0x567A
+0x9AD3    0x20CB5
+0x9AD4    0x20CDD
+0x9AD5    0x20CED
+0x9AD6    0x20D6F
+0x9AD7    0x20DB2
+0x9AD8    0x20DC8
+0x9AD9    0x6955
+0x9ADA    0x9C2F
+0x9ADB    0x87A5
+0x9ADC    0x20E04
+0x9ADD    0x20E0E
+0x9ADE    0x20ED7
+0x9ADF    0x20F90
+0x9AE0    0x20F2D
+0x9AE1    0x20E73
+0x9AE2    0x5C20
+0x9AE3    0x20FBC
+0x9AE4    0x5E0B
+0x9AE5    0x2105C
+0x9AE6    0x2104F
+0x9AE7    0x21076
+0x9AE8    0x671E
+0x9AE9    0x2107B
+0x9AEA    0x21088
+0x9AEB    0x21096
+0x9AEC    0x3647
+0x9AED    0x210BF
+0x9AEE    0x210D3
+0x9AEF    0x2112F
+0x9AF0    0x2113B
+0x9AF1    0x5364
+0x9AF2    0x84AD
+0x9AF3    0x212E3
+0x9AF4    0x21375
+0x9AF5    0x21336
+0x9AF6    0x8B81
+0x9AF7    0x21577
+0x9AF8    0x21619
+0x9AF9    0x217C3
+0x9AFA    0x217C7
+0x9AFB    0x4E78
+0x9AFC    0x70BB
+0x9AFD    0x2182D
+0x9AFE    0x2196A
+0x9B40    0x21A2D
+0x9B41    0x21A45
+0x9B42    0x21C2A
+0x9B43    0x21C70
+0x9B44    0x21CAC
+0x9B45    0x21EC8
+0x9B46    0x62C3
+0x9B47    0x21ED5
+0x9B48    0x21F15
+0x9B49    0x7198
+0x9B4A    0x6855
+0x9B4B    0x22045
+0x9B4C    0x69E9
+0x9B4D    0x36C8
+0x9B4E    0x2227C
+0x9B4F    0x223D7
+0x9B50    0x223FA
+0x9B51    0x2272A
+0x9B52    0x22871
+0x9B53    0x2294F
+0x9B54    0x82FD
+0x9B55    0x22967
+0x9B56    0x22993
+0x9B57    0x22AD5
+0x9B58    0x89A5
+0x9B59    0x22AE8
+0x9B5A    0x8FA0
+0x9B5B    0x22B0E
+0x9B5C    0x97B8
+0x9B5D    0x22B3F
+0x9B5E    0x9847
+0x9B5F    0x9ABD
+0x9B60    0x22C4C
+0x9B62    0x22C88
+0x9B63    0x22CB7
+0x9B64    0x25BE8
+0x9B65    0x22D08
+0x9B66    0x22D12
+0x9B67    0x22DB7
+0x9B68    0x22D95
+0x9B69    0x22E42
+0x9B6A    0x22F74
+0x9B6B    0x22FCC
+0x9B6C    0x23033
+0x9B6D    0x23066
+0x9B6E    0x2331F
+0x9B6F    0x233DE
+0x9B70    0x5FB1
+0x9B71    0x6648
+0x9B72    0x66BF
+0x9B73    0x27A79
+0x9B74    0x23567
+0x9B75    0x235F3
+0x9B77    0x249BA
+0x9B79    0x2361A
+0x9B7A    0x23716
+0x9B7C    0x20346
+0x9B7D    0x58B5
+0x9B7E    0x670E
+0x9BA1    0x6918
+0x9BA2    0x23AA7
+0x9BA3    0x27657
+0x9BA4    0x25FE2
+0x9BA5    0x23E11
+0x9BA6    0x23EB9
+0x9BA7    0x275FE
+0x9BA8    0x2209A
+0x9BA9    0x48D0
+0x9BAA    0x4AB8
+0x9BAB    0x24119
+0x9BAC    0x28A9A
+0x9BAD    0x242EE
+0x9BAE    0x2430D
+0x9BAF    0x2403B
+0x9BB0    0x24334
+0x9BB1    0x24396
+0x9BB2    0x24A45
+0x9BB3    0x205CA
+0x9BB4    0x51D2
+0x9BB5    0x20611
+0x9BB6    0x599F
+0x9BB7    0x21EA8
+0x9BB8    0x3BBE
+0x9BB9    0x23CFF
+0x9BBA    0x24404
+0x9BBB    0x244D6
+0x9BBC    0x5788
+0x9BBD    0x24674
+0x9BBE    0x399B
+0x9BBF    0x2472F
+0x9BC0    0x285E8
+0x9BC1    0x299C9
+0x9BC2    0x3762
+0x9BC3    0x221C3
+0x9BC4    0x8B5E
+0x9BC5    0x28B4E
+0x9BC7    0x24812
+0x9BC8    0x248FB
+0x9BC9    0x24A15
+0x9BCA    0x7209
+0x9BCB    0x24AC0
+0x9BCC    0x20C78
+0x9BCD    0x5965
+0x9BCE    0x24EA5
+0x9BCF    0x24F86
+0x9BD0    0x20779
+0x9BD1    0x8EDA
+0x9BD2    0x2502C
+0x9BD3    0x528F
+0x9BD4    0x573F
+0x9BD5    0x7171
+0x9BD6    0x25299
+0x9BD7    0x25419
+0x9BD8    0x23F4A
+0x9BD9    0x24AA7
+0x9BDA    0x55BC
+0x9BDB    0x25446
+0x9BDC    0x2546E
+0x9BDD    0x26B52
+0x9BDF    0x3473
+0x9BE0    0x2553F
+0x9BE1    0x27632
+0x9BE2    0x2555E
+0x9BE3    0x4718
+0x9BE4    0x25562
+0x9BE5    0x25566
+0x9BE6    0x257C7
+0x9BE7    0x2493F
+0x9BE8    0x2585D
+0x9BE9    0x5066
+0x9BEA    0x34FB
+0x9BEB    0x233CC
+0x9BED    0x25903
+0x9BEE    0x477C
+0x9BEF    0x28948
+0x9BF0    0x25AAE
+0x9BF1    0x25B89
+0x9BF2    0x25C06
+0x9BF3    0x21D90
+0x9BF4    0x57A1
+0x9BF5    0x7151
+0x9BF7    0x26102
+0x9BF8    0x27C12
+0x9BF9    0x9056
+0x9BFA    0x261B2
+0x9BFB    0x24F9A
+0x9BFC    0x8B62
+0x9BFD    0x26402
+0x9BFE    0x2644A
+0x9C40    0x5D5B
+0x9C41    0x26BF7
+0x9C43    0x26484
+0x9C44    0x2191C
+0x9C45    0x8AEA
+0x9C46    0x249F6
+0x9C47    0x26488
+0x9C48    0x23FEF
+0x9C49    0x26512
+0x9C4A    0x4BC0
+0x9C4B    0x265BF
+0x9C4C    0x266B5
+0x9C4D    0x2271B
+0x9C4E    0x9465
+0x9C4F    0x257E1
+0x9C50    0x6195
+0x9C51    0x5A27
+0x9C52    0x2F8CD
+0x9C54    0x56B9
+0x9C55    0x24521
+0x9C56    0x266FC
+0x9C57    0x4E6A
+0x9C58    0x24934
+0x9C59    0x9656
+0x9C5A    0x6D8F
+0x9C5B    0x26CBD
+0x9C5C    0x3618
+0x9C5D    0x8977
+0x9C5E    0x26799
+0x9C5F    0x2686E
+0x9C60    0x26411
+0x9C61    0x2685E
+0x9C63    0x268C7
+0x9C64    0x7B42
+0x9C65    0x290C0
+0x9C66    0x20A11
+0x9C67    0x26926
+0x9C69    0x26939
+0x9C6A    0x7A45
+0x9C6C    0x269FA
+0x9C6D    0x9A26
+0x9C6E    0x26A2D
+0x9C6F    0x365F
+0x9C70    0x26469
+0x9C71    0x20021
+0x9C72    0x7983
+0x9C73    0x26A34
+0x9C74    0x26B5B
+0x9C75    0x5D2C
+0x9C76    0x23519
+0x9C78    0x26B9D
+0x9C79    0x46D0
+0x9C7A    0x26CA4
+0x9C7B    0x753B
+0x9C7C    0x8865
+0x9C7D    0x26DAE
+0x9C7E    0x58B6
+0x9CA1    0x371C
+0x9CA2    0x2258D
+0x9CA3    0x2704B
+0x9CA4    0x271CD
+0x9CA5    0x3C54
+0x9CA6    0x27280
+0x9CA7    0x27285
+0x9CA8    0x9281
+0x9CA9    0x2217A
+0x9CAA    0x2728B
+0x9CAB    0x9330
+0x9CAC    0x272E6
+0x9CAD    0x249D0
+0x9CAE    0x6C39
+0x9CAF    0x949F
+0x9CB0    0x27450
+0x9CB1    0x20EF8
+0x9CB2    0x8827
+0x9CB3    0x88F5
+0x9CB4    0x22926
+0x9CB5    0x28473
+0x9CB6    0x217B1
+0x9CB7    0x6EB8
+0x9CB8    0x24A2A
+0x9CB9    0x21820
+0x9CBA    0x39A4
+0x9CBB    0x36B9
+0x9CBE    0x453F
+0x9CBF    0x66B6
+0x9CC0    0x29CAD
+0x9CC1    0x298A4
+0x9CC2    0x8943
+0x9CC3    0x277CC
+0x9CC4    0x27858
+0x9CC5    0x56D6
+0x9CC6    0x40DF
+0x9CC7    0x2160A
+0x9CC8    0x39A1
+0x9CC9    0x2372F
+0x9CCA    0x280E8
+0x9CCB    0x213C5
+0x9CCC    0x71AD
+0x9CCD    0x8366
+0x9CCE    0x279DD
+0x9CCF    0x291A8
+0x9CD1    0x4CB7
+0x9CD2    0x270AF
+0x9CD3    0x289AB
+0x9CD4    0x279FD
+0x9CD5    0x27A0A
+0x9CD6    0x27B0B
+0x9CD7    0x27D66
+0x9CD8    0x2417A
+0x9CD9    0x7B43
+0x9CDA    0x797E
+0x9CDB    0x28009
+0x9CDC    0x6FB5
+0x9CDD    0x2A2DF
+0x9CDE    0x6A03
+0x9CDF    0x28318
+0x9CE0    0x53A2
+0x9CE1    0x26E07
+0x9CE2    0x93BF
+0x9CE3    0x6836
+0x9CE4    0x975D
+0x9CE5    0x2816F
+0x9CE6    0x28023
+0x9CE7    0x269B5
+0x9CE8    0x213ED
+0x9CE9    0x2322F
+0x9CEA    0x28048
+0x9CEB    0x5D85
+0x9CEC    0x28C30
+0x9CED    0x28083
+0x9CEE    0x5715
+0x9CEF    0x9823
+0x9CF0    0x28949
+0x9CF1    0x5DAB
+0x9CF2    0x24988
+0x9CF3    0x65BE
+0x9CF4    0x69D5
+0x9CF5    0x53D2
+0x9CF6    0x24AA5
+0x9CF7    0x23F81
+0x9CF8    0x3C11
+0x9CF9    0x6736
+0x9CFA    0x28090
+0x9CFB    0x280F4
+0x9CFC    0x2812E
+0x9CFD    0x21FA1
+0x9CFE    0x2814F
+0x9D40    0x28189
+0x9D41    0x281AF
+0x9D42    0x2821A
+0x9D43    0x28306
+0x9D44    0x2832F
+0x9D45    0x2838A
+0x9D46    0x35CA
+0x9D47    0x28468
+0x9D48    0x286AA
+0x9D49    0x48FA
+0x9D4A    0x63E6
+0x9D4B    0x28956
+0x9D4C    0x7808
+0x9D4D    0x9255
+0x9D4E    0x289B8
+0x9D4F    0x43F2
+0x9D50    0x289E7
+0x9D51    0x43DF
+0x9D52    0x289E8
+0x9D53    0x28B46
+0x9D54    0x28BD4
+0x9D55    0x59F8
+0x9D56    0x28C09
+0x9D58    0x28FC5
+0x9D59    0x290EC
+0x9D5B    0x29110
+0x9D5C    0x2913C
+0x9D5D    0x3DF7
+0x9D5E    0x2915E
+0x9D5F    0x24ACA
+0x9D60    0x8FD0
+0x9D61    0x728F
+0x9D62    0x568B
+0x9D63    0x294E7
+0x9D64    0x295E9
+0x9D65    0x295B0
+0x9D66    0x295B8
+0x9D67    0x29732
+0x9D68    0x298D1
+0x9D69    0x29949
+0x9D6A    0x2996A
+0x9D6B    0x299C3
+0x9D6C    0x29A28
+0x9D6D    0x29B0E
+0x9D6E    0x29D5A
+0x9D6F    0x29D9B
+0x9D70    0x7E9F
+0x9D71    0x29EF8
+0x9D72    0x29F23
+0x9D73    0x4CA4
+0x9D74    0x9547
+0x9D75    0x2A293
+0x9D76    0x71A2
+0x9D77    0x2A2FF
+0x9D78    0x4D91
+0x9D79    0x9012
+0x9D7A    0x2A5CB
+0x9D7B    0x4D9C
+0x9D7C    0x20C9C
+0x9D7D    0x8FBE
+0x9D7E    0x55C1
+0x9DA1    0x8FBA
+0x9DA2    0x224B0
+0x9DA3    0x8FB9
+0x9DA4    0x24A93
+0x9DA5    0x4509
+0x9DA6    0x7E7F
+0x9DA7    0x6F56
+0x9DA8    0x6AB1
+0x9DA9    0x4EEA
+0x9DAA    0x34E4
+0x9DAB    0x28B2C
+0x9DAC    0x2789D
+0x9DAD    0x373A
+0x9DAE    0x8E80
+0x9DAF    0x217F5
+0x9DB0    0x28024
+0x9DB1    0x28B6C
+0x9DB2    0x28B99
+0x9DB3    0x27A3E
+0x9DB4    0x266AF
+0x9DB5    0x3DEB
+0x9DB6    0x27655
+0x9DB7    0x23CB7
+0x9DB8    0x25635
+0x9DB9    0x25956
+0x9DBA    0x4E9A
+0x9DBB    0x25E81
+0x9DBC    0x26258
+0x9DBD    0x56BF
+0x9DBE    0x20E6D
+0x9DBF    0x8E0E
+0x9DC0    0x5B6D
+0x9DC1    0x23E88
+0x9DC2    0x24C9E
+0x9DC3    0x63DE
+0x9DC5    0x217F6
+0x9DC6    0x2187B
+0x9DC7    0x6530
+0x9DC8    0x562D
+0x9DC9    0x25C4A
+0x9DCA    0x541A
+0x9DCB    0x25311
+0x9DCC    0x3DC6
+0x9DCD    0x29D98
+0x9DCE    0x4C7D
+0x9DCF    0x5622
+0x9DD0    0x561E
+0x9DD1    0x7F49
+0x9DD2    0x25ED8
+0x9DD3    0x5975
+0x9DD4    0x23D40
+0x9DD5    0x8770
+0x9DD6    0x4E1C
+0x9DD7    0x20FEA
+0x9DD8    0x20D49
+0x9DD9    0x236BA
+0x9DDA    0x8117
+0x9DDB    0x9D5E
+0x9DDC    0x8D18
+0x9DDD    0x763B
+0x9DDE    0x9C45
+0x9DDF    0x764E
+0x9DE0    0x77B9
+0x9DE1    0x9345
+0x9DE2    0x5432
+0x9DE3    0x8148
+0x9DE4    0x82F7
+0x9DE5    0x5625
+0x9DE6    0x8132
+0x9DE7    0x8418
+0x9DE8    0x80BD
+0x9DE9    0x55EA
+0x9DEA    0x7962
+0x9DEB    0x5643
+0x9DEC    0x5416
+0x9DED    0x20E9D
+0x9DEE    0x35CE
+0x9DEF    0x5605
+0x9DF0    0x55F1
+0x9DF1    0x66F1
+0x9DF2    0x282E2
+0x9DF3    0x362D
+0x9DF4    0x7534
+0x9DF5    0x55F0
+0x9DF6    0x55BA
+0x9DF7    0x5497
+0x9DF8    0x5572
+0x9DF9    0x20C41
+0x9DFA    0x20C96
+0x9DFB    0x5ED0
+0x9DFC    0x25148
+0x9DFD    0x20E76
+0x9DFE    0x22C62
+0x9E40    0x20EA2
+0x9E41    0x9EAB
+0x9E42    0x7D5A
+0x9E43    0x55DE
+0x9E44    0x21075
+0x9E45    0x629D
+0x9E46    0x976D
+0x9E47    0x5494
+0x9E48    0x8CCD
+0x9E49    0x71F6
+0x9E4A    0x9176
+0x9E4B    0x63FC
+0x9E4C    0x63B9
+0x9E4D    0x63FE
+0x9E4E    0x5569
+0x9E4F    0x22B43
+0x9E50    0x9C72
+0x9E51    0x22EB3
+0x9E52    0x519A
+0x9E53    0x34DF
+0x9E54    0x20DA7
+0x9E55    0x51A7
+0x9E56    0x544D
+0x9E57    0x551E
+0x9E58    0x5513
+0x9E59    0x7666
+0x9E5A    0x8E2D
+0x9E5B    0x2688A
+0x9E5C    0x75B1
+0x9E5D    0x80B6
+0x9E5E    0x8804
+0x9E5F    0x8786
+0x9E60    0x88C7
+0x9E61    0x81B6
+0x9E62    0x841C
+0x9E63    0x210C1
+0x9E64    0x44EC
+0x9E65    0x7304
+0x9E66    0x24706
+0x9E67    0x5B90
+0x9E68    0x830B
+0x9E69    0x26893
+0x9E6A    0x567B
+0x9E6B    0x226F4
+0x9E6C    0x27D2F
+0x9E6D    0x241A3
+0x9E6E    0x27D73
+0x9E6F    0x26ED0
+0x9E70    0x272B6
+0x9E71    0x9170
+0x9E72    0x211D9
+0x9E73    0x9208
+0x9E74    0x23CFC
+0x9E75    0x2A6A9
+0x9E76    0x20EAC
+0x9E77    0x20EF9
+0x9E78    0x7266
+0x9E79    0x21CA2
+0x9E7A    0x474E
+0x9E7B    0x24FC2
+0x9E7C    0x27FF9
+0x9E7D    0x20FEB
+0x9E7E    0x40FA
+0x9EA1    0x9C5D
+0x9EA2    0x651F
+0x9EA3    0x22DA0
+0x9EA4    0x48F3
+0x9EA5    0x247E0
+0x9EA6    0x29D7C
+0x9EA7    0x20FEC
+0x9EA8    0x20E0A
+0x9EAA    0x275A3
+0x9EAB    0x20FED
+0x9EAD    0x26048
+0x9EAE    0x21187
+0x9EAF    0x71A3
+0x9EB0    0x7E8E
+0x9EB1    0x9D50
+0x9EB2    0x4E1A
+0x9EB3    0x4E04
+0x9EB4    0x3577
+0x9EB5    0x5B0D
+0x9EB6    0x6CB2
+0x9EB7    0x5367
+0x9EB8    0x36AC
+0x9EB9    0x39DC
+0x9EBA    0x537D
+0x9EBB    0x36A5
+0x9EBC    0x24618
+0x9EBD    0x589A
+0x9EBE    0x24B6E
+0x9EBF    0x822D
+0x9EC0    0x544B
+0x9EC1    0x57AA
+0x9EC2    0x25A95
+0x9EC3    0x20979
+0x9EC5    0x3A52
+0x9EC6    0x22465
+0x9EC7    0x7374
+0x9EC8    0x29EAC
+0x9EC9    0x4D09
+0x9ECA    0x9BED
+0x9ECB    0x23CFE
+0x9ECC    0x29F30
+0x9ECD    0x4C5B
+0x9ECE    0x24FA9
+0x9ECF    0x2959E
+0x9ED0    0x29FDE
+0x9ED1    0x845C
+0x9ED2    0x23DB6
+0x9ED3    0x272B2
+0x9ED4    0x267B3
+0x9ED5    0x23720
+0x9ED6    0x632E
+0x9ED7    0x7D25
+0x9ED8    0x23EF7
+0x9ED9    0x23E2C
+0x9EDA    0x3A2A
+0x9EDB    0x9008
+0x9EDC    0x52CC
+0x9EDD    0x3E74
+0x9EDE    0x367A
+0x9EDF    0x45E9
+0x9EE0    0x2048E
+0x9EE1    0x7640
+0x9EE2    0x5AF0
+0x9EE3    0x20EB6
+0x9EE4    0x787A
+0x9EE5    0x47B6
+0x9EE6    0x58A7
+0x9EE7    0x40BF
+0x9EE8    0x567C
+0x9EE9    0x9B8B
+0x9EEA    0x5D74
+0x9EEB    0x7654
+0x9EEC    0x2A434
+0x9EED    0x9E85
+0x9EEE    0x4CE1
+0x9EF0    0x37FB
+0x9EF1    0x6119
+0x9EF2    0x230DA
+0x9EF3    0x243F2
+0x9EF5    0x565D
+0x9EF6    0x212A9
+0x9EF7    0x57A7
+0x9EF8    0x24963
+0x9EF9    0x29E06
+0x9EFA    0x5234
+0x9EFB    0x270AE
+0x9EFC    0x35AD
+0x9EFE    0x9D7C
+0x9F40    0x7C56
+0x9F41    0x9B39
+0x9F42    0x57DE
+0x9F43    0x2176C
+0x9F44    0x5C53
+0x9F45    0x64D3
+0x9F46    0x294D0
+0x9F47    0x26335
+0x9F48    0x27164
+0x9F49    0x86AD
+0x9F4A    0x20D28
+0x9F4B    0x26D22
+0x9F4C    0x24AE2
+0x9F4D    0x20D71
+0x9F4F    0x51FE
+0x9F50    0x21F0F
+0x9F51    0x5D8E
+0x9F52    0x9703
+0x9F53    0x21DD1
+0x9F54    0x9E81
+0x9F55    0x904C
+0x9F56    0x7B1F
+0x9F57    0x9B02
+0x9F58    0x5CD1
+0x9F59    0x7BA3
+0x9F5A    0x6268
+0x9F5B    0x6335
+0x9F5C    0x9AFF
+0x9F5D    0x7BCF
+0x9F5E    0x9B2A
+0x9F5F    0x7C7E
+0x9F61    0x7C42
+0x9F62    0x7C86
+0x9F63    0x9C15
+0x9F64    0x7BFC
+0x9F65    0x9B09
+0x9F67    0x9C1B
+0x9F68    0x2493E
+0x9F69    0x9F5A
+0x9F6A    0x5573
+0x9F6B    0x5BC3
+0x9F6C    0x4FFD
+0x9F6D    0x9E98
+0x9F6E    0x4FF2
+0x9F6F    0x5260
+0x9F70    0x3E06
+0x9F71    0x52D1
+0x9F72    0x5767
+0x9F73    0x5056
+0x9F74    0x59B7
+0x9F75    0x5E12
+0x9F76    0x97C8
+0x9F77    0x9DAB
+0x9F78    0x8F5C
+0x9F79    0x5469
+0x9F7A    0x97B4
+0x9F7B    0x9940
+0x9F7C    0x97BA
+0x9F7D    0x532C
+0x9F7E    0x6130
+0x9FA1    0x692C
+0x9FA2    0x53DA
+0x9FA3    0x9C0A
+0x9FA4    0x9D02
+0x9FA5    0x4C3B
+0x9FA6    0x9641
+0x9FA7    0x6980
+0x9FA8    0x50A6
+0x9FA9    0x7546
+0x9FAA    0x2176D
+0x9FAB    0x99DA
+0x9FAC    0x5273
+0x9FAE    0x9159
+0x9FAF    0x9681
+0x9FB0    0x915C
+0x9FB2    0x9151
+0x9FB3    0x28E97
+0x9FB4    0x637F
+0x9FB5    0x26D23
+0x9FB6    0x6ACA
+0x9FB7    0x5611
+0x9FB8    0x918E
+0x9FB9    0x757A
+0x9FBA    0x6285
+0x9FBB    0x203FC
+0x9FBC    0x734F
+0x9FBD    0x7C70
+0x9FBE    0x25C21
+0x9FBF    0x23CFD
+0x9FC1    0x24919
+0x9FC2    0x76D6
+0x9FC3    0x9B9D
+0x9FC4    0x4E2A
+0x9FC5    0x20CD4
+0x9FC6    0x83BE
+0x9FC7    0x8842
+0x9FC9    0x5C4A
+0x9FCA    0x69C0
+0x9FCC    0x577A
+0x9FCD    0x521F
+0x9FCE    0x5DF5
+0x9FCF    0x4ECE
+0x9FD0    0x6C31
+0x9FD1    0x201F2
+0x9FD2    0x4F39
+0x9FD3    0x549C
+0x9FD4    0x54DA
+0x9FD5    0x529A
+0x9FD6    0x8D82
+0x9FD7    0x35FE
+0x9FD9    0x35F3
+0x9FDB    0x6B52
+0x9FDC    0x917C
+0x9FDD    0x9FA5
+0x9FDE    0x9B97
+0x9FDF    0x982E
+0x9FE0    0x98B4
+0x9FE1    0x9ABA
+0x9FE2    0x9EA8
+0x9FE3    0x9E84
+0x9FE4    0x717A
+0x9FE5    0x7B14
+0x9FE7    0x6BFA
+0x9FE8    0x8818
+0x9FE9    0x7F78
+0x9FEB    0x5620
+0x9FEC    0x2A64A
+0x9FED    0x8E77
+0x9FEE    0x9F53
+0x9FF0    0x8DD4
+0x9FF1    0x8E4F
+0x9FF2    0x9E1C
+0x9FF3    0x8E01
+0x9FF4    0x6282
+0x9FF5    0x2837D
+0x9FF6    0x8E28
+0x9FF7    0x8E75
+0x9FF8    0x7AD3
+0x9FF9    0x24A77
+0x9FFA    0x7A3E
+0x9FFB    0x78D8
+0x9FFC    0x6CEA
+0x9FFD    0x8A67
+0x9FFE    0x7607
+0xA040    0x28A5A
+0xA041    0x9F26
+0xA042    0x6CCE
+0xA043    0x87D6
+0xA044    0x75C3
+0xA045    0x2A2B2
+0xA046    0x7853
+0xA047    0x2F840
+0xA048    0x8D0C
+0xA049    0x72E2
+0xA04A    0x7371
+0xA04B    0x8B2D
+0xA04C    0x7302
+0xA04D    0x74F1
+0xA04E    0x8CEB
+0xA04F    0x24ABB
+0xA050    0x862F
+0xA051    0x5FBA
+0xA052    0x88A0
+0xA053    0x44B7
+0xA055    0x2183B
+0xA056    0x26E05
+0xA058    0x8A7E
+0xA059    0x2251B
+0xA05B    0x60FD
+0xA05C    0x7667
+0xA05D    0x9AD7
+0xA05E    0x9D44
+0xA05F    0x936E
+0xA060    0x9B8F
+0xA061    0x87F5
+0xA064    0x8CF7
+0xA065    0x732C
+0xA066    0x9721
+0xA067    0x9BB0
+0xA068    0x35D6
+0xA069    0x72B2
+0xA06A    0x4C07
+0xA06B    0x7C51
+0xA06C    0x994A
+0xA06D    0x26159
+0xA06E    0x6159
+0xA06F    0x4C04
+0xA070    0x9E96
+0xA071    0x617D
+0xA073    0x575F
+0xA074    0x616F
+0xA075    0x62A6
+0xA076    0x6239
+0xA078    0x3A5C
+0xA079    0x61E2
+0xA07A    0x53AA
+0xA07B    0x233F5
+0xA07C    0x6364
+0xA07D    0x6802
+0xA07E    0x35D2
+0xA0A1    0x5D57
+0xA0A2    0x28BC2
+0xA0A3    0x8FDA
+0xA0A4    0x28E39
+0xA0A6    0x50D9
+0xA0A7    0x21D46
+0xA0A8    0x7906
+0xA0A9    0x5332
+0xA0AA    0x9638
+0xA0AB    0x20F3B
+0xA0AC    0x4065
+0xA0AE    0x77FE
+0xA0B0    0x7CC2
+0xA0B1    0x25F1A
+0xA0B2    0x7CDA
+0xA0B3    0x7A2D
+0xA0B4    0x8066
+0xA0B5    0x8063
+0xA0B6    0x7D4D
+0xA0B7    0x7505
+0xA0B8    0x74F2
+0xA0B9    0x8994
+0xA0BA    0x821A
+0xA0BB    0x670C
+0xA0BC    0x8062
+0xA0BD    0x27486
+0xA0BE    0x805B
+0xA0BF    0x74F0
+0xA0C0    0x8103
+0xA0C1    0x7724
+0xA0C2    0x8989
+0xA0C3    0x267CC
+0xA0C4    0x7553
+0xA0C5    0x26ED1
+0xA0C6    0x87A9
+0xA0C7    0x87CE
+0xA0C8    0x81C8
+0xA0C9    0x878C
+0xA0CA    0x8A49
+0xA0CB    0x8CAD
+0xA0CC    0x8B43
+0xA0CD    0x772B
+0xA0CE    0x74F8
+0xA0CF    0x84DA
+0xA0D0    0x3635
+0xA0D1    0x69B2
+0xA0D2    0x8DA6
+0xA0D4    0x89A9
+0xA0D6    0x6DB9
+0xA0D7    0x87C1
+0xA0D8    0x24011
+0xA0D9    0x74E7
+0xA0DA    0x3DDB
+0xA0DB    0x7176
+0xA0DC    0x60A4
+0xA0DD    0x619C
+0xA0DE    0x3CD1
+0xA0E0    0x6077
+0xA0E2    0x7F71
+0xA0E3    0x28B2D
+0xA0E5    0x60E9
+0xA0E6    0x4B7E
+0xA0E7    0x5220
+0xA0E8    0x3C18
+0xA0E9    0x23CC7
+0xA0EA    0x25ED7
+0xA0EB    0x27656
+0xA0EC    0x25531
+0xA0ED    0x21944
+0xA0EE    0x212FE
+0xA0EF    0x29903
+0xA0F0    0x26DDC
+0xA0F1    0x270AD
+0xA0F2    0x5CC1
+0xA0F3    0x261AD
+0xA0F4    0x28A0F
+0xA0F5    0x23677
+0xA0F6    0x200EE
+0xA0F7    0x26846
+0xA0F8    0x24F0E
+0xA0F9    0x4562
+0xA0FA    0x5B1F
+0xA0FB    0x2634C
+0xA0FC    0x9F50
+0xA0FD    0x9EA6
+0xA0FE    0x2626B
+0xC6A1    0x2460
+0xC6A2    0x2461
+0xC6A3    0x2462
+0xC6A4    0x2463
+0xC6A5    0x2464
+0xC6A6    0x2465
+0xC6A7    0x2466
+0xC6A8    0x2467
+0xC6A9    0x2468
+0xC6AA    0x2469
+0xC6AB    0x2474
+0xC6AC    0x2475
+0xC6AD    0x2476
+0xC6AE    0x2477
+0xC6AF    0x2478
+0xC6B0    0x2479
+0xC6B1    0x247A
+0xC6B2    0x247B
+0xC6B3    0x247C
+0xC6B4    0x247D
+0xC6B5    0x2170
+0xC6B6    0x2171
+0xC6B7    0x2172
+0xC6B8    0x2173
+0xC6B9    0x2174
+0xC6BA    0x2175
+0xC6BB    0x2176
+0xC6BC    0x2177
+0xC6BD    0x2178
+0xC6BE    0x2179
+0xC6BF    0x4E36
+0xC6C0    0x4E3F
+0xC6C1    0x4E85
+0xC6C2    0x4EA0
+0xC6C3    0x5182
+0xC6C4    0x5196
+0xC6C5    0x51AB
+0xC6C6    0x52F9
+0xC6C7    0x5338
+0xC6C8    0x5369
+0xC6C9    0x53B6
+0xC6CA    0x590A
+0xC6CB    0x5B80
+0xC6CC    0x5DDB
+0xC6CD    0x2F33
+0xC6CE    0x5E7F
+0xC6D0    0x5F50
+0xC6D1    0x5F61
+0xC6D2    0x6534
+0xC6D4    0x7592
+0xC6D6    0x8FB5
+0xC6D8    0xA8
+0xC6D9    0x2C6
+0xC6DA    0x30FD
+0xC6DB    0x30FE
+0xC6DC    0x309D
+0xC6DD    0x309E
+0xC6E0    0x3005
+0xC6E1    0x3006
+0xC6E2    0x3007
+0xC6E3    0x30FC
+0xC6E4    0xFF3B
+0xC6E5    0xFF3D
+0xC6E6    0x273D
+0xC6E7    0x3041
+0xC6E8    0x3042
+0xC6E9    0x3043
+0xC6EA    0x3044
+0xC6EB    0x3045
+0xC6EC    0x3046
+0xC6ED    0x3047
+0xC6EE    0x3048
+0xC6EF    0x3049
+0xC6F0    0x304A
+0xC6F1    0x304B
+0xC6F2    0x304C
+0xC6F3    0x304D
+0xC6F4    0x304E
+0xC6F5    0x304F
+0xC6F6    0x3050
+0xC6F7    0x3051
+0xC6F8    0x3052
+0xC6F9    0x3053
+0xC6FA    0x3054
+0xC6FB    0x3055
+0xC6FC    0x3056
+0xC6FD    0x3057
+0xC6FE    0x3058
+0xC740    0x3059
+0xC741    0x305A
+0xC742    0x305B
+0xC743    0x305C
+0xC744    0x305D
+0xC745    0x305E
+0xC746    0x305F
+0xC747    0x3060
+0xC748    0x3061
+0xC749    0x3062
+0xC74A    0x3063
+0xC74B    0x3064
+0xC74C    0x3065
+0xC74D    0x3066
+0xC74E    0x3067
+0xC74F    0x3068
+0xC750    0x3069
+0xC751    0x306A
+0xC752    0x306B
+0xC753    0x306C
+0xC754    0x306D
+0xC755    0x306E
+0xC756    0x306F
+0xC757    0x3070
+0xC758    0x3071
+0xC759    0x3072
+0xC75A    0x3073
+0xC75B    0x3074
+0xC75C    0x3075
+0xC75D    0x3076
+0xC75E    0x3077
+0xC75F    0x3078
+0xC760    0x3079
+0xC761    0x307A
+0xC762    0x307B
+0xC763    0x307C
+0xC764    0x307D
+0xC765    0x307E
+0xC766    0x307F
+0xC767    0x3080
+0xC768    0x3081
+0xC769    0x3082
+0xC76A    0x3083
+0xC76B    0x3084
+0xC76C    0x3085
+0xC76D    0x3086
+0xC76E    0x3087
+0xC76F    0x3088
+0xC770    0x3089
+0xC771    0x308A
+0xC772    0x308B
+0xC773    0x308C
+0xC774    0x308D
+0xC775    0x308E
+0xC776    0x308F
+0xC777    0x3090
+0xC778    0x3091
+0xC779    0x3092
+0xC77A    0x3093
+0xC77B    0x30A1
+0xC77C    0x30A2
+0xC77D    0x30A3
+0xC77E    0x30A4
+0xC7A1    0x30A5
+0xC7A2    0x30A6
+0xC7A3    0x30A7
+0xC7A4    0x30A8
+0xC7A5    0x30A9
+0xC7A6    0x30AA
+0xC7A7    0x30AB
+0xC7A8    0x30AC
+0xC7A9    0x30AD
+0xC7AA    0x30AE
+0xC7AB    0x30AF
+0xC7AC    0x30B0
+0xC7AD    0x30B1
+0xC7AE    0x30B2
+0xC7AF    0x30B3
+0xC7B0    0x30B4
+0xC7B1    0x30B5
+0xC7B2    0x30B6
+0xC7B3    0x30B7
+0xC7B4    0x30B8
+0xC7B5    0x30B9
+0xC7B6    0x30BA
+0xC7B7    0x30BB
+0xC7B8    0x30BC
+0xC7B9    0x30BD
+0xC7BA    0x30BE
+0xC7BB    0x30BF
+0xC7BC    0x30C0
+0xC7BD    0x30C1
+0xC7BE    0x30C2
+0xC7BF    0x30C3
+0xC7C0    0x30C4
+0xC7C1    0x30C5
+0xC7C2    0x30C6
+0xC7C3    0x30C7
+0xC7C4    0x30C8
+0xC7C5    0x30C9
+0xC7C6    0x30CA
+0xC7C7    0x30CB
+0xC7C8    0x30CC
+0xC7C9    0x30CD
+0xC7CA    0x30CE
+0xC7CB    0x30CF
+0xC7CC    0x30D0
+0xC7CD    0x30D1
+0xC7CE    0x30D2
+0xC7CF    0x30D3
+0xC7D0    0x30D4
+0xC7D1    0x30D5
+0xC7D2    0x30D6
+0xC7D3    0x30D7
+0xC7D4    0x30D8
+0xC7D5    0x30D9
+0xC7D6    0x30DA
+0xC7D7    0x30DB
+0xC7D8    0x30DC
+0xC7D9    0x30DD
+0xC7DA    0x30DE
+0xC7DB    0x30DF
+0xC7DC    0x30E0
+0xC7DD    0x30E1
+0xC7DE    0x30E2
+0xC7DF    0x30E3
+0xC7E0    0x30E4
+0xC7E1    0x30E5
+0xC7E2    0x30E6
+0xC7E3    0x30E7
+0xC7E4    0x30E8
+0xC7E5    0x30E9
+0xC7E6    0x30EA
+0xC7E7    0x30EB
+0xC7E8    0x30EC
+0xC7E9    0x30ED
+0xC7EA    0x30EE
+0xC7EB    0x30EF
+0xC7EC    0x30F0
+0xC7ED    0x30F1
+0xC7EE    0x30F2
+0xC7EF    0x30F3
+0xC7F0    0x30F4
+0xC7F1    0x30F5
+0xC7F2    0x30F6
+0xC7F3    0x410
+0xC7F4    0x411
+0xC7F5    0x412
+0xC7F6    0x413
+0xC7F7    0x414
+0xC7F8    0x415
+0xC7F9    0x401
+0xC7FA    0x416
+0xC7FB    0x417
+0xC7FC    0x418
+0xC7FD    0x419
+0xC7FE    0x41A
+0xC840    0x41B
+0xC841    0x41C
+0xC842    0x41D
+0xC843    0x41E
+0xC844    0x41F
+0xC845    0x420
+0xC846    0x421
+0xC847    0x422
+0xC848    0x423
+0xC849    0x424
+0xC84A    0x425
+0xC84B    0x426
+0xC84C    0x427
+0xC84D    0x428
+0xC84E    0x429
+0xC84F    0x42A
+0xC850    0x42B
+0xC851    0x42C
+0xC852    0x42D
+0xC853    0x42E
+0xC854    0x42F
+0xC855    0x430
+0xC856    0x431
+0xC857    0x432
+0xC858    0x433
+0xC859    0x434
+0xC85A    0x435
+0xC85B    0x451
+0xC85C    0x436
+0xC85D    0x437
+0xC85E    0x438
+0xC85F    0x439
+0xC860    0x43A
+0xC861    0x43B
+0xC862    0x43C
+0xC863    0x43D
+0xC864    0x43E
+0xC865    0x43F
+0xC866    0x440
+0xC867    0x441
+0xC868    0x442
+0xC869    0x443
+0xC86A    0x444
+0xC86B    0x445
+0xC86C    0x446
+0xC86D    0x447
+0xC86E    0x448
+0xC86F    0x449
+0xC870    0x44A
+0xC871    0x44B
+0xC872    0x44C
+0xC873    0x44D
+0xC874    0x44E
+0xC875    0x44F
+0xC876    0x21E7
+0xC877    0x21B8
+0xC878    0x21B9
+0xC879    0xF7E5
+0xC87A    0x200CC
+0xC87B    0x4E5A
+0xC87C    0x2008A
+0xC87D    0x5202
+0xC87E    0xF7EA
+0xC8A1    0xF7EB
+0xC8A2    0x5188
+0xC8A3    0xF7ED
+0xC8A4    0x27607
+0xC8CD    0xFFE2
+0xC8CE    0xFFE4
+0xC8CF    0xFF07
+0xC8D0    0xFF02
+0xC8D1    0x3231
+0xC8D2    0x2116
+0xC8D3    0x2121
+0xC8D4    0x309B
+0xC8D5    0x309C
+0xC8D6    0x2E80
+0xC8D7    0x2E84
+0xC8D8    0x2E86
+0xC8D9    0x2E87
+0xC8DA    0x2E88
+0xC8DB    0x2E8A
+0xC8DC    0x2E8C
+0xC8DD    0x2E8D
+0xC8DE    0x2E95
+0xC8DF    0x2E9C
+0xC8E0    0x2E9D
+0xC8E1    0x2EA5
+0xC8E2    0x2EA7
+0xC8E3    0x2EAA
+0xC8E4    0x2EAC
+0xC8E5    0x2EAE
+0xC8E6    0x2EB6
+0xC8E7    0x2EBC
+0xC8E8    0x2EBE
+0xC8E9    0x2EC6
+0xC8EA    0x2ECA
+0xC8EB    0x2ECC
+0xC8EC    0x2ECD
+0xC8ED    0x2ECF
+0xC8EE    0x2ED6
+0xC8EF    0x2ED7
+0xC8F0    0x2EDE
+0xC8F1    0x2EE3
+0xC8F5    0x283
+0xC8F6    0x250
+0xC8F7    0x25B
+0xC8F8    0x254
+0xC8F9    0x275
+0xC8FA    0x153
+0xC8FB    0xF8
+0xC8FC    0x14B
+0xC8FD    0x28A
+0xC8FE    0x26A
+0xF9D6    0x7881
+0xF9D7    0x92B9
+0xF9D8    0x88CF
+0xF9D9    0x58BB
+0xF9DA    0x6052
+0xF9DB    0x7CA7
+0xF9DC    0x5AFA
+0xF9DD    0x2554
+0xF9DE    0x2566
+0xF9DF    0x2557
+0xF9E0    0x2560
+0xF9E1    0x256C
+0xF9E2    0x2563
+0xF9E3    0x255A
+0xF9E4    0x2569
+0xF9E5    0x255D
+0xF9E6    0x2552
+0xF9E7    0x2564
+0xF9E8    0x2555
+0xF9E9    0x255E
+0xF9EA    0x256A
+0xF9EB    0x2561
+0xF9EC    0x2558
+0xF9ED    0x2567
+0xF9EE    0x255B
+0xF9EF    0x2553
+0xF9F0    0x2565
+0xF9F1    0x2556
+0xF9F2    0x255F
+0xF9F3    0x256B
+0xF9F4    0x2562
+0xF9F5    0x2559
+0xF9F6    0x2568
+0xF9F7    0x255C
+0xF9F8    0x2551
+0xF9F9    0x2550
+0xF9FA    0x256D
+0xF9FB    0x256E
+0xF9FC    0x2570
+0xF9FD    0x256F
+0xF9FE    0xFFED
+0xFA40    0x20547
+0xFA41    0x92DB
+0xFA42    0x205DF
+0xFA43    0x23FC5
+0xFA44    0x854C
+0xFA45    0x42B5
+0xFA46    0x73EF
+0xFA47    0x51B5
+0xFA48    0x3649
+0xFA49    0x24942
+0xFA4A    0x289E4
+0xFA4B    0x9344
+0xFA4C    0x219DB
+0xFA4D    0x82EE
+0xFA4E    0x23CC8
+0xFA4F    0x783C
+0xFA50    0x6744
+0xFA51    0x62DF
+0xFA52    0x24933
+0xFA53    0x289AA
+0xFA54    0x202A0
+0xFA55    0x26BB3
+0xFA56    0x21305
+0xFA57    0x4FAB
+0xFA58    0x224ED
+0xFA59    0x5008
+0xFA5A    0x26D29
+0xFA5B    0x27A84
+0xFA5C    0x23600
+0xFA5D    0x24AB1
+0xFA5E    0x22513
+0xFA60    0x2037E
+0xFA61    0x5FA4
+0xFA62    0x20380
+0xFA63    0x20347
+0xFA64    0x6EDB
+0xFA65    0x2041F
+0xFA67    0x5101
+0xFA68    0x347A
+0xFA69    0x510E
+0xFA6A    0x986C
+0xFA6B    0x3743
+0xFA6C    0x8416
+0xFA6D    0x249A4
+0xFA6E    0x20487
+0xFA6F    0x5160
+0xFA70    0x233B4
+0xFA71    0x516A
+0xFA72    0x20BFF
+0xFA73    0x220FC
+0xFA74    0x202E5
+0xFA75    0x22530
+0xFA76    0x2058E
+0xFA77    0x23233
+0xFA78    0x21983
+0xFA79    0x5B82
+0xFA7A    0x877D
+0xFA7B    0x205B3
+0xFA7C    0x23C99
+0xFA7D    0x51B2
+0xFA7E    0x51B8
+0xFAA1    0x9D34
+0xFAA2    0x51C9
+0xFAA3    0x51CF
+0xFAA4    0x51D1
+0xFAA5    0x3CDC
+0xFAA6    0x51D3
+0xFAA7    0x24AA6
+0xFAA8    0x51B3
+0xFAA9    0x51E2
+0xFAAA    0x5342
+0xFAAB    0x51ED
+0xFAAC    0x83CD
+0xFAAD    0x693E
+0xFAAE    0x2372D
+0xFAAF    0x5F7B
+0xFAB0    0x520B
+0xFAB1    0x5226
+0xFAB2    0x523C
+0xFAB3    0x52B5
+0xFAB4    0x5257
+0xFAB5    0x5294
+0xFAB6    0x52B9
+0xFAB7    0x52C5
+0xFAB8    0x7C15
+0xFAB9    0x8542
+0xFABA    0x52E0
+0xFABB    0x860D
+0xFABC    0x26B13
+0xFABE    0x28ADE
+0xFABF    0x5549
+0xFAC0    0x6ED9
+0xFAC1    0x23F80
+0xFAC2    0x20954
+0xFAC3    0x23FEC
+0xFAC4    0x5333
+0xFAC6    0x20BE2
+0xFAC7    0x6CCB
+0xFAC8    0x21726
+0xFAC9    0x681B
+0xFACA    0x73D5
+0xFACB    0x604A
+0xFACC    0x3EAA
+0xFACD    0x38CC
+0xFACE    0x216E8
+0xFACF    0x71DD
+0xFAD0    0x44A2
+0xFAD1    0x536D
+0xFAD2    0x5374
+0xFAD3    0x286AB
+0xFAD4    0x537E
+0xFAD6    0x21596
+0xFAD7    0x21613
+0xFAD8    0x77E6
+0xFAD9    0x5393
+0xFADA    0x28A9B
+0xFADB    0x53A0
+0xFADC    0x53AB
+0xFADD    0x53AE
+0xFADE    0x73A7
+0xFADF    0x25772
+0xFAE0    0x3F59
+0xFAE1    0x739C
+0xFAE2    0x53C1
+0xFAE3    0x53C5
+0xFAE4    0x6C49
+0xFAE5    0x4E49
+0xFAE6    0x57FE
+0xFAE7    0x53D9
+0xFAE8    0x3AAB
+0xFAE9    0x20B8F
+0xFAEA    0x53E0
+0xFAEB    0x23FEB
+0xFAEC    0x22DA3
+0xFAED    0x53F6
+0xFAEE    0x20C77
+0xFAEF    0x5413
+0xFAF0    0x7079
+0xFAF1    0x552B
+0xFAF2    0x6657
+0xFAF3    0x6D5B
+0xFAF4    0x546D
+0xFAF5    0x26B53
+0xFAF6    0x20D74
+0xFAF7    0x555D
+0xFAF8    0x548F
+0xFAF9    0x54A4
+0xFAFA    0x47A6
+0xFAFB    0x2170D
+0xFAFC    0x20EDD
+0xFAFD    0x3DB4
+0xFAFE    0x20D4D
+0xFB40    0x289BC
+0xFB41    0x22698
+0xFB42    0x5547
+0xFB43    0x4CED
+0xFB44    0x542F
+0xFB45    0x7417
+0xFB46    0x5586
+0xFB47    0x55A9
+0xFB49    0x218D7
+0xFB4A    0x2403A
+0xFB4B    0x4552
+0xFB4C    0x24435
+0xFB4D    0x66B3
+0xFB4E    0x210B4
+0xFB4F    0x5637
+0xFB50    0x66CD
+0xFB51    0x2328A
+0xFB52    0x66A4
+0xFB53    0x66AD
+0xFB54    0x564D
+0xFB55    0x564F
+0xFB56    0x78F1
+0xFB57    0x56F1
+0xFB58    0x9787
+0xFB59    0x53FE
+0xFB5A    0x5700
+0xFB5B    0x56EF
+0xFB5C    0x56ED
+0xFB5D    0x28B66
+0xFB5E    0x3623
+0xFB5F    0x2124F
+0xFB60    0x5746
+0xFB61    0x241A5
+0xFB62    0x6C6E
+0xFB63    0x708B
+0xFB64    0x5742
+0xFB65    0x36B1
+0xFB66    0x26C7E
+0xFB67    0x57E6
+0xFB68    0x21416
+0xFB69    0x5803
+0xFB6A    0x21454
+0xFB6B    0x24363
+0xFB6C    0x5826
+0xFB6D    0x24BF5
+0xFB6E    0x585C
+0xFB6F    0x58AA
+0xFB70    0x3561
+0xFB71    0x58E0
+0xFB72    0x58DC
+0xFB73    0x2123C
+0xFB74    0x58FB
+0xFB75    0x5BFF
+0xFB76    0x5743
+0xFB77    0x2A150
+0xFB78    0x24278
+0xFB79    0x93D3
+0xFB7A    0x35A1
+0xFB7B    0x591F
+0xFB7C    0x68A6
+0xFB7D    0x36C3
+0xFB7E    0x6E59
+0xFBA1    0x2163E
+0xFBA2    0x5A24
+0xFBA3    0x5553
+0xFBA4    0x21692
+0xFBA5    0x8505
+0xFBA6    0x59C9
+0xFBA7    0x20D4E
+0xFBA8    0x26C81
+0xFBA9    0x26D2A
+0xFBAA    0x217DC
+0xFBAB    0x59D9
+0xFBAC    0x217FB
+0xFBAD    0x217B2
+0xFBAE    0x26DA6
+0xFBAF    0x6D71
+0xFBB0    0x21828
+0xFBB1    0x216D5
+0xFBB2    0x59F9
+0xFBB3    0x26E45
+0xFBB4    0x5AAB
+0xFBB5    0x5A63
+0xFBB6    0x36E6
+0xFBB7    0x249A9
+0xFBB9    0x3708
+0xFBBA    0x5A96
+0xFBBB    0x7465
+0xFBBC    0x5AD3
+0xFBBD    0x26FA1
+0xFBBE    0x22554
+0xFBBF    0x3D85
+0xFBC0    0x21911
+0xFBC1    0x3732
+0xFBC2    0x216B8
+0xFBC3    0x5E83
+0xFBC4    0x52D0
+0xFBC5    0x5B76
+0xFBC6    0x6588
+0xFBC7    0x5B7C
+0xFBC8    0x27A0E
+0xFBC9    0x4004
+0xFBCA    0x485D
+0xFBCB    0x20204
+0xFBCC    0x5BD5
+0xFBCD    0x6160
+0xFBCE    0x21A34
+0xFBCF    0x259CC
+0xFBD0    0x205A5
+0xFBD1    0x5BF3
+0xFBD2    0x5B9D
+0xFBD3    0x4D10
+0xFBD4    0x5C05
+0xFBD5    0x21B44
+0xFBD6    0x5C13
+0xFBD7    0x73CE
+0xFBD8    0x5C14
+0xFBD9    0x21CA5
+0xFBDA    0x26B28
+0xFBDB    0x5C49
+0xFBDC    0x48DD
+0xFBDD    0x5C85
+0xFBDE    0x5CE9
+0xFBDF    0x5CEF
+0xFBE0    0x5D8B
+0xFBE1    0x21DF9
+0xFBE2    0x21E37
+0xFBE3    0x5D10
+0xFBE4    0x5D18
+0xFBE5    0x5D46
+0xFBE6    0x21EA4
+0xFBE7    0x5CBA
+0xFBE8    0x5DD7
+0xFBE9    0x82FC
+0xFBEA    0x382D
+0xFBEB    0x24901
+0xFBEC    0x22049
+0xFBED    0x22173
+0xFBEE    0x8287
+0xFBEF    0x3836
+0xFBF0    0x3BC2
+0xFBF1    0x5E2E
+0xFBF2    0x6A8A
+0xFBF4    0x5E7A
+0xFBF5    0x244BC
+0xFBF6    0x20CD3
+0xFBF7    0x53A6
+0xFBF8    0x4EB7
+0xFBFA    0x53A8
+0xFBFB    0x21771
+0xFBFC    0x5E09
+0xFBFD    0x5EF4
+0xFBFE    0x28482
+0xFC40    0x5EF9
+0xFC41    0x5EFB
+0xFC42    0x38A0
+0xFC43    0x5EFC
+0xFC44    0x683E
+0xFC45    0x941B
+0xFC46    0x5F0D
+0xFC47    0x201C1
+0xFC48    0x2F894
+0xFC49    0x3ADE
+0xFC4A    0x48AE
+0xFC4B    0x2133A
+0xFC4C    0x5F3A
+0xFC4D    0x26888
+0xFC4E    0x223D0
+0xFC50    0x22471
+0xFC51    0x5F63
+0xFC52    0x97BD
+0xFC53    0x26E6E
+0xFC54    0x5F72
+0xFC55    0x9340
+0xFC56    0x28A36
+0xFC57    0x5FA7
+0xFC58    0x5DB6
+0xFC59    0x3D5F
+0xFC5A    0x25250
+0xFC5B    0x21F6A
+0xFC5C    0x270F8
+0xFC5D    0x22668
+0xFC5E    0x91D6
+0xFC5F    0x2029E
+0xFC60    0x28A29
+0xFC61    0x6031
+0xFC62    0x6685
+0xFC63    0x21877
+0xFC64    0x3963
+0xFC65    0x3DC7
+0xFC66    0x3639
+0xFC67    0x5790
+0xFC68    0x227B4
+0xFC69    0x7971
+0xFC6A    0x3E40
+0xFC6B    0x609E
+0xFC6D    0x60B3
+0xFC6E    0x24982
+0xFC6F    0x2498F
+0xFC70    0x27A53
+0xFC71    0x74A4
+0xFC72    0x50E1
+0xFC73    0x5AA0
+0xFC74    0x6164
+0xFC75    0x8424
+0xFC76    0x6142
+0xFC77    0x2F8A6
+0xFC78    0x26ED2
+0xFC79    0x6181
+0xFC7A    0x51F4
+0xFC7B    0x20656
+0xFC7C    0x6187
+0xFC7D    0x5BAA
+0xFC7E    0x23FB7
+0xFCA1    0x2285F
+0xFCA2    0x61D3
+0xFCA3    0x28B9D
+0xFCA4    0x2995D
+0xFCA5    0x61D0
+0xFCA6    0x3932
+0xFCA7    0x22980
+0xFCA8    0x228C1
+0xFCA9    0x6023
+0xFCAA    0x615C
+0xFCAB    0x651E
+0xFCAC    0x638B
+0xFCAD    0x20118
+0xFCAE    0x62C5
+0xFCAF    0x21770
+0xFCB0    0x62D5
+0xFCB1    0x22E0D
+0xFCB2    0x636C
+0xFCB3    0x249DF
+0xFCB4    0x3A17
+0xFCB5    0x6438
+0xFCB6    0x63F8
+0xFCB7    0x2138E
+0xFCB8    0x217FC
+0xFCBA    0x6F8A
+0xFCBB    0x22E36
+0xFCBC    0x9814
+0xFCBD    0x2408C
+0xFCBE    0x2571D
+0xFCBF    0x64E1
+0xFCC0    0x64E5
+0xFCC1    0x947B
+0xFCC2    0x3A66
+0xFCC3    0x643A
+0xFCC4    0x3A57
+0xFCC5    0x654D
+0xFCC6    0x6F16
+0xFCC7    0x24A28
+0xFCC8    0x24A23
+0xFCC9    0x6585
+0xFCCA    0x656D
+0xFCCB    0x655F
+0xFCCC    0x2307E
+0xFCCD    0x65B5
+0xFCCE    0x24940
+0xFCCF    0x4B37
+0xFCD0    0x65D1
+0xFCD1    0x40D8
+0xFCD2    0x21829
+0xFCD3    0x65E0
+0xFCD4    0x65E3
+0xFCD5    0x5FDF
+0xFCD6    0x23400
+0xFCD7    0x6618
+0xFCD8    0x231F7
+0xFCD9    0x231F8
+0xFCDA    0x6644
+0xFCDB    0x231A4
+0xFCDC    0x231A5
+0xFCDD    0x664B
+0xFCDE    0x20E75
+0xFCDF    0x6667
+0xFCE0    0x251E6
+0xFCE1    0x6673
+0xFCE3    0x21E3D
+0xFCE4    0x23231
+0xFCE5    0x285F4
+0xFCE6    0x231C8
+0xFCE7    0x25313
+0xFCE8    0x77C5
+0xFCE9    0x228F7
+0xFCEA    0x99A4
+0xFCEB    0x6702
+0xFCEC    0x2439C
+0xFCED    0x24A21
+0xFCEE    0x3B2B
+0xFCEF    0x69FA
+0xFCF0    0x237C2
+0xFCF2    0x6767
+0xFCF3    0x6762
+0xFCF4    0x241CD
+0xFCF5    0x290ED
+0xFCF6    0x67D7
+0xFCF7    0x44E9
+0xFCF8    0x6822
+0xFCF9    0x6E50
+0xFCFA    0x923C
+0xFCFB    0x6801
+0xFCFC    0x233E6
+0xFCFD    0x26DA0
+0xFCFE    0x685D
+0xFD40    0x2346F
+0xFD41    0x69E1
+0xFD42    0x6A0B
+0xFD43    0x28ADF
+0xFD44    0x6973
+0xFD45    0x68C3
+0xFD46    0x235CD
+0xFD47    0x6901
+0xFD48    0x6900
+0xFD49    0x3D32
+0xFD4A    0x3A01
+0xFD4B    0x2363C
+0xFD4C    0x3B80
+0xFD4D    0x67AC
+0xFD4E    0x6961
+0xFD4F    0x28A4A
+0xFD50    0x42FC
+0xFD51    0x6936
+0xFD52    0x6998
+0xFD53    0x3BA1
+0xFD54    0x203C9
+0xFD55    0x8363
+0xFD56    0x5090
+0xFD57    0x69F9
+0xFD58    0x23659
+0xFD59    0x2212A
+0xFD5A    0x6A45
+0xFD5B    0x23703
+0xFD5C    0x6A9D
+0xFD5D    0x3BF3
+0xFD5E    0x67B1
+0xFD5F    0x6AC8
+0xFD60    0x2919C
+0xFD61    0x3C0D
+0xFD62    0x6B1D
+0xFD63    0x20923
+0xFD64    0x60DE
+0xFD65    0x6B35
+0xFD66    0x6B74
+0xFD67    0x227CD
+0xFD68    0x6EB5
+0xFD69    0x23ADB
+0xFD6A    0x203B5
+0xFD6B    0x21958
+0xFD6C    0x3740
+0xFD6D    0x5421
+0xFD6E    0x23B5A
+0xFD6F    0x6BE1
+0xFD70    0x23EFC
+0xFD71    0x6BDC
+0xFD72    0x6C37
+0xFD73    0x2248B
+0xFD74    0x248F1
+0xFD75    0x26B51
+0xFD76    0x6C5A
+0xFD77    0x8226
+0xFD78    0x6C79
+0xFD79    0x23DBC
+0xFD7A    0x44C5
+0xFD7B    0x23DBD
+0xFD7C    0x241A4
+0xFD7D    0x2490C
+0xFD7E    0x24900
+0xFDA1    0x23CC9
+0xFDA2    0x36E5
+0xFDA3    0x3CEB
+0xFDA4    0x20D32
+0xFDA5    0x9B83
+0xFDA6    0x231F9
+0xFDA7    0x22491
+0xFDA8    0x7F8F
+0xFDA9    0x6837
+0xFDAA    0x26D25
+0xFDAB    0x26DA1
+0xFDAC    0x26DEB
+0xFDAD    0x6D96
+0xFDAE    0x6D5C
+0xFDAF    0x6E7C
+0xFDB0    0x6F04
+0xFDB1    0x2497F
+0xFDB2    0x24085
+0xFDB3    0x26E72
+0xFDB4    0x8533
+0xFDB5    0x26F74
+0xFDB6    0x51C7
+0xFDB9    0x842E
+0xFDBA    0x28B21
+0xFDBC    0x23E2F
+0xFDBD    0x7453
+0xFDBE    0x23F82
+0xFDBF    0x79CC
+0xFDC0    0x6E4F
+0xFDC1    0x5A91
+0xFDC2    0x2304B
+0xFDC3    0x6FF8
+0xFDC4    0x370D
+0xFDC5    0x6F9D
+0xFDC6    0x23E30
+0xFDC7    0x6EFA
+0xFDC8    0x21497
+0xFDC9    0x2403D
+0xFDCA    0x4555
+0xFDCB    0x93F0
+0xFDCC    0x6F44
+0xFDCD    0x6F5C
+0xFDCE    0x3D4E
+0xFDCF    0x6F74
+0xFDD0    0x29170
+0xFDD1    0x3D3B
+0xFDD2    0x6F9F
+0xFDD3    0x24144
+0xFDD4    0x6FD3
+0xFDD5    0x24091
+0xFDD6    0x24155
+0xFDD7    0x24039
+0xFDD8    0x23FF0
+0xFDD9    0x23FB4
+0xFDDA    0x2413F
+0xFDDB    0x51DF
+0xFDDC    0x24156
+0xFDDD    0x24157
+0xFDDE    0x24140
+0xFDDF    0x261DD
+0xFDE0    0x704B
+0xFDE1    0x707E
+0xFDE2    0x70A7
+0xFDE3    0x7081
+0xFDE4    0x70CC
+0xFDE5    0x70D5
+0xFDE6    0x70D6
+0xFDE7    0x70DF
+0xFDE8    0x4104
+0xFDE9    0x3DE8
+0xFDEA    0x71B4
+0xFDEB    0x7196
+0xFDEC    0x24277
+0xFDED    0x712B
+0xFDEE    0x7145
+0xFDEF    0x5A88
+0xFDF0    0x714A
+0xFDF2    0x5C9C
+0xFDF3    0x24365
+0xFDF4    0x714F
+0xFDF5    0x9362
+0xFDF6    0x242C1
+0xFDF7    0x712C
+0xFDF8    0x2445A
+0xFDF9    0x24A27
+0xFDFA    0x24A22
+0xFDFB    0x71BA
+0xFDFC    0x28BE8
+0xFDFD    0x70BD
+0xFDFE    0x720E
+0xFE40    0x9442
+0xFE41    0x7215
+0xFE42    0x5911
+0xFE43    0x9443
+0xFE44    0x7224
+0xFE45    0x9341
+0xFE46    0x25605
+0xFE47    0x722E
+0xFE48    0x7240
+0xFE49    0x24974
+0xFE4A    0x68BD
+0xFE4B    0x7255
+0xFE4C    0x7257
+0xFE4D    0x3E55
+0xFE4E    0x23044
+0xFE4F    0x680D
+0xFE50    0x6F3D
+0xFE51    0x7282
+0xFE53    0x732B
+0xFE54    0x24823
+0xFE55    0x2882B
+0xFE56    0x48ED
+0xFE57    0x28804
+0xFE58    0x7328
+0xFE59    0x732E
+0xFE5A    0x73CF
+0xFE5B    0x73AA
+0xFE5C    0x20C3A
+0xFE5D    0x26A2E
+0xFE5E    0x73C9
+0xFE5F    0x7449
+0xFE60    0x241E2
+0xFE61    0x216E7
+0xFE62    0x24A24
+0xFE63    0x6623
+0xFE64    0x36C5
+0xFE65    0x249B7
+0xFE66    0x2498D
+0xFE67    0x249FB
+0xFE68    0x73F7
+0xFE69    0x7415
+0xFE6A    0x6903
+0xFE6B    0x24A26
+0xFE6C    0x7439
+0xFE6D    0x205C3
+0xFE6E    0x3ED7
+0xFE70    0x228AD
+0xFE71    0x7460
+0xFE72    0x28EB2
+0xFE73    0x7447
+0xFE74    0x73E4
+0xFE75    0x7476
+0xFE76    0x83B9
+0xFE77    0x746C
+0xFE78    0x3730
+0xFE79    0x7474
+0xFE7A    0x93F1
+0xFE7B    0x6A2C
+0xFE7C    0x7482
+0xFE7D    0x4953
+0xFE7E    0x24A8C
+0xFEA1    0x2415F
+0xFEA2    0x24A79
+0xFEA3    0x28B8F
+0xFEA4    0x5B46
+0xFEA5    0x28C03
+0xFEA6    0x2189E
+0xFEA7    0x74C8
+0xFEA8    0x21988
+0xFEA9    0x750E
+0xFEAB    0x751E
+0xFEAC    0x28ED9
+0xFEAD    0x21A4B
+0xFEAE    0x5BD7
+0xFEAF    0x28EAC
+0xFEB0    0x9385
+0xFEB1    0x754D
+0xFEB2    0x754A
+0xFEB3    0x7567
+0xFEB4    0x756E
+0xFEB5    0x24F82
+0xFEB6    0x3F04
+0xFEB7    0x24D13
+0xFEB8    0x758E
+0xFEB9    0x745D
+0xFEBA    0x759E
+0xFEBB    0x75B4
+0xFEBC    0x7602
+0xFEBD    0x762C
+0xFEBE    0x7651
+0xFEBF    0x764F
+0xFEC0    0x766F
+0xFEC1    0x7676
+0xFEC2    0x263F5
+0xFEC3    0x7690
+0xFEC4    0x81EF
+0xFEC5    0x37F8
+0xFEC6    0x26911
+0xFEC7    0x2690E
+0xFEC8    0x76A1
+0xFEC9    0x76A5
+0xFECA    0x76B7
+0xFECB    0x76CC
+0xFECC    0x26F9F
+0xFECD    0x8462
+0xFECE    0x2509D
+0xFECF    0x2517D
+0xFED0    0x21E1C
+0xFED1    0x771E
+0xFED2    0x7726
+0xFED3    0x7740
+0xFED4    0x64AF
+0xFED5    0x25220
+0xFED6    0x7758
+0xFED7    0x232AC
+0xFED8    0x77AF
+0xFED9    0x28964
+0xFEDA    0x28968
+0xFEDB    0x216C1
+0xFEDC    0x77F4
+0xFEDE    0x21376
+0xFEDF    0x24A12
+0xFEE0    0x68CA
+0xFEE1    0x78AF
+0xFEE2    0x78C7
+0xFEE3    0x78D3
+0xFEE4    0x96A5
+0xFEE5    0x792E
+0xFEE6    0x255E0
+0xFEE7    0x78D7
+0xFEE8    0x7934
+0xFEE9    0x78B1
+0xFEEA    0x2760C
+0xFEEB    0x8FB8
+0xFEEC    0x8884
+0xFEED    0x28B2B
+0xFEEE    0x26083
+0xFEEF    0x2261C
+0xFEF0    0x7986
+0xFEF1    0x8900
+0xFEF2    0x6902
+0xFEF3    0x7980
+0xFEF4    0x25857
+0xFEF5    0x799D
+0xFEF6    0x27B39
+0xFEF7    0x793C
+0xFEF8    0x79A9
+0xFEF9    0x6E2A
+0xFEFA    0x27126
+0xFEFB    0x3EA8
+0xFEFC    0x79C6
+0xFEFD    0x2910D
+0xFEFE    0x79D4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/HKSCS2008.c2b	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,4969 @@
+8740    F266
+8741    F267
+8742    F268
+8743    F269
+8744    F26A
+8745    F26B
+8746    F26C
+8747    F26D
+8748    F26E
+8749    F26F
+874A    F270
+874B    F271
+874C    F272
+874D    F273
+874E    F274
+874F    F275
+8750    F276
+8751    F277
+8752    F278
+8753    F279
+8754    F27A
+8755    F27B
+8756    F27C
+8757    F27D
+8758    F27E
+8759    F27F
+875A    F280
+875B    F281
+875C    F282
+875D    F283
+875E    F284
+875F    F285
+8760    F286
+8761    F287
+8762    F288
+8763    F289
+8764    F28A
+8765    F28B
+8767    F28D
+8768    F28E
+8769    F28F
+876A    F290
+876B    F291
+876C    F292
+876D    F293
+876E    F294
+876F    F295
+8770    F296
+8771    F297
+8772    F298
+8773    F299
+8774    F29A
+8775    F29B
+8776    F29C
+8777    F29D
+8778    F29E
+8779    F29F
+877A    F2A0
+877B    F2A1
+877C    F2A2
+877D    F2A3
+877E    F2A4
+87A1    F2A5
+87A2    F2A6
+87A3    F2A7
+87A4    F2A8
+87A5    F2A9
+87A6    F2AA
+87A7    F2AB
+87A8    F2AC
+87A9    F2AD
+87AA    F2AE
+87AB    F2AF
+87AC    F2B0
+87AD    F2B1
+87AE    F2B2
+87AF    F2B3
+87B0    F2B4
+87B1    F2B5
+87B2    F2B6
+87B3    F2B7
+87B4    F2B8
+87B5    F2B9
+87B6    F2BA
+87B7    F2BB
+87B8    F2BC
+87B9    F2BD
+87BA    F2BE
+87BB    F2BF
+87BC    F2C0
+87BD    F2C1
+87BE    F2C2
+87BF    F2C3
+87C0    F2C4
+87C1    F2C5
+87C2    F2C6
+87C3    F2C7
+87C4    F2C8
+87C5    F2C9
+87C6    F2CA
+87C7    F2CB
+87C8    F2CC
+87C9    F2CD
+87CA    F2CE
+87CB    F2CF
+87CC    F2D0
+87CD    F2D1
+87CE    F2D2
+87CF    F2D3
+87D0    F2D4
+87D1    F2D5
+87D2    F2D6
+87D3    F2D7
+87D4    F2D8
+87D5    F2D9
+87D6    F2DA
+87D7    F2DB
+87D8    F2DC
+87D9    F2DD
+87DA    F2DE
+87DB    F2DF
+87DC    F2E0
+87DD    F2E1
+87DE    F2E2
+87DF    F2E3
+8840    F303
+8841    F304
+8842    F305
+8843    F306
+8844    F307
+8845    F308
+8846    F309
+8847    F30A
+8848    F30B
+8849    F30C
+884A    F30D
+884B    F30E
+884C    F30F
+884D    F310
+884E    F311
+884F    F312
+8850    F313
+8851    F314
+8852    F315
+8853    F316
+8854    F317
+8855    F318
+8856    F319
+8857    F31A
+8858    F31B
+8859    F31C
+885A    F31D
+885B    F31E
+885C    F31F
+885D    F320
+885E    F321
+885F    F322
+8860    F323
+8861    F324
+8862    F325
+8863    F326
+8864    F327
+8865    F328
+8866    F329
+8867    F32A
+8868    F32B
+8869    F32C
+886A    F32D
+886B    F32E
+886C    F32F
+886D    F330
+886E    F331
+886F    F332
+8870    F333
+8871    F334
+8872    F335
+8873    F336
+8874    F337
+8875    F338
+8876    F339
+8877    F33A
+8878    F33B
+8879    F33C
+887A    F33D
+887B    F33E
+887C    F33F
+887D    F340
+887E    F341
+88A1    F342
+88A2    F343
+88A3    F344
+88A4    F345
+88A5    F346
+88A6    F347
+88A7    F348
+88A8    F349
+88A9    F34A
+88AA    F34B
+8940    F3A0
+8941    F3A1
+8943    F3A3
+8946    F3A6
+8947    F3A7
+8948    F3A8
+8949    F3A9
+894C    F3AC
+894D    F3AD
+894E    F3AE
+894F    F3AF
+8950    F3B0
+8951    F3B1
+8952    F3B2
+8953    F3B3
+8954    F3B4
+8955    F3B5
+8956    F3B6
+8957    F3B7
+8958    F3B8
+8959    F3B9
+895A    F3BA
+895B    F3BB
+895C    F3BC
+895D    F3BD
+895E    F3BE
+895F    F3BF
+8960    F3C0
+8961    F3C1
+8962    F3C2
+8963    F3C3
+8964    F3C4
+8965    F3C5
+8966    F3C6
+8967    F3C7
+8968    F3C8
+8969    F3C9
+896A    F3CA
+896B    F3CB
+896C    F3CC
+896D    F3CD
+896E    F3CE
+896F    F3CF
+8970    F3D0
+8971    F3D1
+8972    F3D2
+8973    F3D3
+8974    F3D4
+8975    F3D5
+8976    F3D6
+8977    F3D7
+8978    F3D8
+8979    F3D9
+897A    F3DA
+897B    F3DB
+897C    F3DC
+897D    F3DD
+897E    F3DE
+89A1    F3DF
+89A2    F3E0
+89A3    F3E1
+89A4    F3E2
+89A5    F3E3
+89A6    F3E4
+89AB    F3E9
+89AC    F3EA
+89AD    F3EB
+89AE    F3EC
+89B0    F3EE
+89B1    F3EF
+89B2    F3F0
+89B5    F3F3
+89B6    F3F4
+89B7    F3F5
+89B8    F3F6
+89B9    F3F7
+89BA    F3F8
+89BB    F3F9
+89BC    F3FA
+89BD    F3FB
+89BE    F3FC
+89BF    F3FD
+89C1    F3FF
+89C2    F400
+89C3    F401
+89C5    F403
+89C6    F404
+89C7    F405
+89C8    F406
+89C9    F407
+89CA    F408
+89CB    F409
+89CC    F40A
+89CD    F40B
+89CE    F40C
+89CF    F40D
+89D0    F40E
+89D1    F40F
+89D2    F410
+89D3    F411
+89D4    F412
+89D5    F413
+89D6    F414
+89D7    F415
+89D8    F416
+89D9    F417
+89DA    F418
+89DB    F419
+89DC    F41A
+89DD    F41B
+89DE    F41C
+89DF    F41D
+89E0    F41E
+89E1    F41F
+89E2    F420
+89E3    F421
+89E4    F422
+89E5    F423
+89E6    F424
+89E7    F425
+89E8    F426
+89E9    F427
+89EA    F428
+89EB    F429
+89EC    F42A
+89ED    F42B
+89EE    F42C
+89EF    F42D
+89F0    F42E
+89F1    F42F
+89F2    F430
+89F3    F431
+89F4    F432
+89F5    F433
+89F6    F434
+89F7    F435
+89F8    F436
+89F9    F437
+89FA    F438
+89FB    F439
+89FC    F43A
+89FD    F43B
+89FE    F43C
+8A40    F43D
+8A41    F43E
+8A43    F440
+8A44    F441
+8A45    F442
+8A46    F443
+8A47    F444
+8A48    F445
+8A49    F446
+8A4A    F447
+8A4B    F448
+8A4C    F449
+8A4D    F44A
+8A4E    F44B
+8A4F    F44C
+8A50    F44D
+8A51    F44E
+8A52    F44F
+8A53    F450
+8A54    F451
+8A55    F452
+8A56    F453
+8A57    F454
+8A58    F455
+8A59    F456
+8A5A    F457
+8A5B    F458
+8A5C    F459
+8A5D    F45A
+8A5E    F45B
+8A5F    F45C
+8A60    F45D
+8A61    F45E
+8A62    F45F
+8A64    F461
+8A65    F462
+8A66    F463
+8A67    F464
+8A68    F465
+8A69    F466
+8A6A    F467
+8A6B    F468
+8A6C    F469
+8A6D    F46A
+8A6E    F46B
+8A6F    F46C
+8A70    F46D
+8A71    F46E
+8A72    F46F
+8A73    F470
+8A74    F471
+8A76    F473
+8A77    F474
+8A78    F475
+8A79    F476
+8A7A    F477
+8A7B    F478
+8A7C    F479
+8A7D    F47A
+8A7E    F47B
+8AA1    F47C
+8AA2    F47D
+8AA3    F47E
+8AA4    F47F
+8AA5    F480
+8AA6    F481
+8AA7    F482
+8AA8    F483
+8AA9    F484
+8AAA    F485
+8AAC    F487
+8AAD    F488
+8AAE    F489
+8AAF    F48A
+8AB0    F48B
+8AB2    F48D
+8AB3    F48E
+8AB4    F48F
+8AB5    F490
+8AB6    F491
+8AB7    F492
+8AB8    F493
+8AB9    F494
+8ABB    F496
+8ABC    F497
+8ABD    F498
+8ABE    F499
+8ABF    F49A
+8AC0    F49B
+8AC1    F49C
+8AC2    F49D
+8AC3    F49E
+8AC4    F49F
+8AC5    F4A0
+8AC6    F4A1
+8AC7    F4A2
+8AC9    F4A4
+8ACA    F4A5
+8ACB    F4A6
+8ACC    F4A7
+8ACE    F4A9
+8ACF    F4AA
+8AD0    F4AB
+8AD1    F4AC
+8AD2    F4AD
+8AD3    F4AE
+8AD4    F4AF
+8AD5    F4B0
+8AD6    F4B1
+8AD7    F4B2
+8AD8    F4B3
+8AD9    F4B4
+8ADA    F4B5
+8ADB    F4B6
+8ADC    F4B7
+8ADF    F4BA
+8AE0    F4BB
+8AE1    F4BC
+8AE2    F4BD
+8AE3    F4BE
+8AE4    F4BF
+8AE5    F4C0
+8AE6    F4C1
+8AE7    F4C2
+8AE8    F4C3
+8AE9    F4C4
+8AEA    F4C5
+8AEB    F4C6
+8AEC    F4C7
+8AED    F4C8
+8AEE    F4C9
+8AEF    F4CA
+8AF0    F4CB
+8AF1    F4CC
+8AF2    F4CD
+8AF3    F4CE
+8AF4    F4CF
+8AF6    F4D1
+8AF7    F4D2
+8AF8    F4D3
+8AF9    F4D4
+8AFA    F4D5
+8AFB    F4D6
+8AFC    F4D7
+8AFD    F4D8
+8AFE    F4D9
+8B40    F4DA
+8B41    F4DB
+8B42    F4DC
+8B43    F4DD
+8B44    F4DE
+8B45    F4DF
+8B46    F4E0
+8B47    F4E1
+8B48    F4E2
+8B49    F4E3
+8B4A    F4E4
+8B4B    F4E5
+8B4C    F4E6
+8B4D    F4E7
+8B4E    F4E8
+8B4F    F4E9
+8B50    F4EA
+8B51    F4EB
+8B52    F4EC
+8B53    F4ED
+8B55    F4EF
+8B56    F4F0
+8B57    F4F1
+8B58    F4F2
+8B59    F4F3
+8B5A    F4F4
+8B5B    F4F5
+8B5C    F4F6
+8B5D    F4F7
+8B5E    F4F8
+8B5F    F4F9
+8B60    F4FA
+8B61    F4FB
+8B62    F4FC
+8B63    F4FD
+8B64    F4FE
+8B65    F4FF
+8B66    F500
+8B67    F501
+8B68    F502
+8B69    F503
+8B6A    F504
+8B6B    F505
+8B6C    F506
+8B6D    F507
+8B6E    F508
+8B6F    F509
+8B70    F50A
+8B71    F50B
+8B72    F50C
+8B73    F50D
+8B74    F50E
+8B75    F50F
+8B76    F510
+8B77    F511
+8B78    F512
+8B79    F513
+8B7A    F514
+8B7B    F515
+8B7C    F516
+8B7D    F517
+8B7E    F518
+8BA1    F519
+8BA2    F51A
+8BA3    F51B
+8BA4    F51C
+8BA5    F51D
+8BA6    F51E
+8BA7    F51F
+8BA8    F520
+8BA9    F521
+8BAA    F522
+8BAB    F523
+8BAC    F524
+8BAD    F525
+8BAE    F526
+8BAF    F527
+8BB0    F528
+8BB1    F529
+8BB2    F52A
+8BB3    F52B
+8BB4    F52C
+8BB5    F52D
+8BB6    F52E
+8BB7    F52F
+8BB8    F530
+8BB9    F531
+8BBA    F532
+8BBB    F533
+8BBC    F534
+8BBD    F535
+8BBE    F536
+8BBF    F537
+8BC0    F538
+8BC1    F539
+8BC2    F53A
+8BC3    F53B
+8BC4    F53C
+8BC5    F53D
+8BC6    F53E
+8BC7    F53F
+8BC8    F540
+8BC9    F541
+8BCA    F542
+8BCB    F543
+8BCC    F544
+8BCD    F545
+8BCE    F546
+8BCF    F547
+8BD0    F548
+8BD1    F549
+8BD2    F54A
+8BD3    F54B
+8BD4    F54C
+8BD5    F54D
+8BD6    F54E
+8BD7    F54F
+8BD8    F550
+8BD9    F551
+8BDA    F552
+8BDB    F553
+8BDC    F554
+8BDE    F556
+8BDF    F557
+8BE0    F558
+8BE1    F559
+8BE2    F55A
+8BE3    F55B
+8BE4    F55C
+8BE5    F55D
+8BE6    F55E
+8BE7    F55F
+8BE8    F560
+8BE9    F561
+8BEA    F562
+8BEB    F563
+8BEC    F564
+8BED    F565
+8BEE    F566
+8BEF    F567
+8BF0    F568
+8BF1    F569
+8BF2    F56A
+8BF3    F56B
+8BF4    F56C
+8BF5    F56D
+8BF6    F56E
+8BF7    F56F
+8BF8    F570
+8BF9    F571
+8BFA    F572
+8BFB    F573
+8BFC    F574
+8BFD    F575
+8C40    F577
+8C41    F578
+8C42    F579
+8C43    F57A
+8C44    F57B
+8C45    F57C
+8C46    F57D
+8C47    F57E
+8C48    F57F
+8C49    F580
+8C4A    F581
+8C4B    F582
+8C4C    F583
+8C4D    F584
+8C4E    F585
+8C4F    F586
+8C50    F587
+8C51    F588
+8C52    F589
+8C53    F58A
+8C54    F58B
+8C55    F58C
+8C56    F58D
+8C57    F58E
+8C58    F58F
+8C59    F590
+8C5A    F591
+8C5B    F592
+8C5C    F593
+8C5D    F594
+8C5E    F595
+8C5F    F596
+8C60    F597
+8C61    F598
+8C62    F599
+8C63    F59A
+8C64    F59B
+8C65    F59C
+8C66    F59D
+8C67    F59E
+8C68    F59F
+8C69    F5A0
+8C6A    F5A1
+8C6B    F5A2
+8C6C    F5A3
+8C6D    F5A4
+8C6E    F5A5
+8C6F    F5A6
+8C70    F5A7
+8C71    F5A8
+8C72    F5A9
+8C73    F5AA
+8C74    F5AB
+8C75    F5AC
+8C76    F5AD
+8C77    F5AE
+8C78    F5AF
+8C79    F5B0
+8C7A    F5B1
+8C7B    F5B2
+8C7C    F5B3
+8C7D    F5B4
+8C7E    F5B5
+8CA1    F5B6
+8CA2    F5B7
+8CA3    F5B8
+8CA4    F5B9
+8CA5    F5BA
+8CA7    F5BC
+8CA8    F5BD
+8CA9    F5BE
+8CAA    F5BF
+8CAB    F5C0
+8CAC    F5C1
+8CAD    F5C2
+8CAE    F5C3
+8CAF    F5C4
+8CB0    F5C5
+8CB1    F5C6
+8CB2    F5C7
+8CB3    F5C8
+8CB4    F5C9
+8CB5    F5CA
+8CB6    F5CB
+8CB7    F5CC
+8CB8    F5CD
+8CB9    F5CE
+8CBA    F5CF
+8CBB    F5D0
+8CBC    F5D1
+8CBD    F5D2
+8CBE    F5D3
+8CBF    F5D4
+8CC0    F5D5
+8CC1    F5D6
+8CC2    F5D7
+8CC3    F5D8
+8CC4    F5D9
+8CC5    F5DA
+8CC9    F5DE
+8CCA    F5DF
+8CCB    F5E0
+8CCC    F5E1
+8CCE    F5E3
+8CCF    F5E4
+8CD0    F5E5
+8CD1    F5E6
+8CD2    F5E7
+8CD3    F5E8
+8CD4    F5E9
+8CD5    F5EA
+8CD6    F5EB
+8CD7    F5EC
+8CD8    F5ED
+8CD9    F5EE
+8CDA    F5EF
+8CDB    F5F0
+8CDC    F5F1
+8CDD    F5F2
+8CDE    F5F3
+8CDF    F5F4
+8CE0    F5F5
+8CE1    F5F6
+8CE2    F5F7
+8CE3    F5F8
+8CE4    F5F9
+8CE6    F5FB
+8CE7    F5FC
+8CE8    F5FD
+8CE9    F5FE
+8CEA    F5FF
+8CEB    F600
+8CEC    F601
+8CED    F602
+8CEE    F603
+8CEF    F604
+8CF0    F605
+8CF1    F606
+8CF2    F607
+8CF3    F608
+8CF4    F609
+8CF5    F60A
+8CF6    F60B
+8CF7    F60C
+8CF8    F60D
+8CF9    F60E
+8CFA    F60F
+8CFB    F610
+8CFC    F611
+8CFD    F612
+8CFE    F613
+8D40    F614
+8D42    F616
+8D43    F617
+8D44    F618
+8D45    F619
+8D46    F61A
+8D47    F61B
+8D48    F61C
+8D49    F61D
+8D4A    F61E
+8D4B    F61F
+8D4C    F620
+8D4D    F621
+8D4E    F622
+8D4F    F623
+8D50    F624
+8D51    F625
+8D52    F626
+8D53    F627
+8D54    F628
+8D55    F629
+8D56    F62A
+8D57    F62B
+8D58    F62C
+8D59    F62D
+8D5A    F62E
+8D5B    F62F
+8D5C    F630
+8D5D    F631
+8D5E    F632
+8D5F    F633
+8D60    F634
+8D61    F635
+8D62    F636
+8D63    F637
+8D64    F638
+8D65    F639
+8D66    F63A
+8D67    F63B
+8D68    F63C
+8D69    F63D
+8D6A    F63E
+8D6B    F63F
+8D6C    F640
+8D6D    F641
+8D6E    F642
+8D6F    F643
+8D70    F644
+8D71    F645
+8D72    F646
+8D73    F647
+8D74    F648
+8D75    F649
+8D76    F64A
+8D77    F64B
+8D78    F64C
+8D79    F64D
+8D7A    F64E
+8D7B    F64F
+8D7C    F650
+8D7D    F651
+8D7E    F652
+8DA1    F653
+8DA2    F654
+8DA3    F655
+8DA4    F656
+8DA5    F657
+8DA6    F658
+8DA7    F659
+8DA8    F65A
+8DA9    F65B
+8DAA    F65C
+8DAB    F65D
+8DAC    F65E
+8DAD    F65F
+8DAE    F660
+8DAF    F661
+8DB0    F662
+8DB1    F663
+8DB2    F664
+8DB3    F665
+8DB4    F666
+8DB5    F667
+8DB6    F668
+8DB7    F669
+8DB8    F66A
+8DB9    F66B
+8DBA    F66C
+8DBB    F66D
+8DBC    F66E
+8DBD    F66F
+8DBE    F670
+8DBF    F671
+8DC0    F672
+8DC1    F673
+8DC2    F674
+8DC3    F675
+8DC4    F676
+8DC5    F677
+8DC6    F678
+8DC7    F679
+8DC8    F67A
+8DC9    F67B
+8DCA    F67C
+8DCB    F67D
+8DCC    F67E
+8DCD    F67F
+8DCE    F680
+8DCF    F681
+8DD0    F682
+8DD1    F683
+8DD2    F684
+8DD3    F685
+8DD4    F686
+8DD5    F687
+8DD6    F688
+8DD7    F689
+8DD8    F68A
+8DD9    F68B
+8DDA    F68C
+8DDB    F68D
+8DDC    F68E
+8DDD    F68F
+8DDE    F690
+8DDF    F691
+8DE0    F692
+8DE1    F693
+8DE2    F694
+8DE3    F695
+8DE4    F696
+8DE5    F697
+8DE6    F698
+8DE7    F699
+8DE8    F69A
+8DE9    F69B
+8DEA    F69C
+8DEB    F69D
+8DEC    F69E
+8DED    F69F
+8DEE    F6A0
+8DEF    F6A1
+8DF0    F6A2
+8DF1    F6A3
+8DF2    F6A4
+8DF3    F6A5
+8DF4    F6A6
+8DF5    F6A7
+8DF6    F6A8
+8DF7    F6A9
+8DF8    F6AA
+8DF9    F6AB
+8DFA    F6AC
+8DFB    F6AD
+8DFC    F6AE
+8DFD    F6AF
+8DFE    F6B0
+8E40    E311
+8E41    E312
+8E42    E313
+8E43    E314
+8E44    E315
+8E45    E316
+8E46    E317
+8E47    E318
+8E48    E319
+8E49    E31A
+8E4A    E31B
+8E4B    E31C
+8E4C    E31D
+8E4D    E31E
+8E4E    E31F
+8E4F    E320
+8E50    E321
+8E51    E322
+8E52    E323
+8E53    E324
+8E54    E325
+8E55    E326
+8E56    E327
+8E57    E328
+8E58    E329
+8E59    E32A
+8E5A    E32B
+8E5B    E32C
+8E5C    E32D
+8E5D    E32E
+8E5E    E32F
+8E5F    E330
+8E60    E331
+8E61    E332
+8E62    E333
+8E63    E334
+8E64    E335
+8E65    E336
+8E66    E337
+8E67    E338
+8E68    E339
+8E6A    E33B
+8E6B    E33C
+8E6C    E33D
+8E6D    E33E
+8E6E    E33F
+8E70    E341
+8E71    E342
+8E72    E343
+8E73    E344
+8E74    E345
+8E75    E346
+8E76    E347
+8E77    E348
+8E78    E349
+8E79    E34A
+8E7A    E34B
+8E7B    E34C
+8E7C    E34D
+8E7D    E34E
+8EA1    E350
+8EA2    E351
+8EA3    E352
+8EA4    E353
+8EA5    E354
+8EA6    E355
+8EA7    E356
+8EA8    E357
+8EA9    E358
+8EAA    E359
+8EAC    E35B
+8EAD    E35C
+8EAE    E35D
+8EAF    E35E
+8EB0    E35F
+8EB1    E360
+8EB2    E361
+8EB3    E362
+8EB5    E364
+8EB6    E365
+8EB7    E366
+8EB8    E367
+8EB9    E368
+8EBA    E369
+8EBB    E36A
+8EBC    E36B
+8EBD    E36C
+8EBE    E36D
+8EBF    E36E
+8EC0    E36F
+8EC1    E370
+8EC2    E371
+8EC3    E372
+8EC4    E373
+8EC5    E374
+8EC6    E375
+8EC7    E376
+8EC8    E377
+8EC9    E378
+8ECA    E379
+8ECB    E37A
+8ECC    E37B
+8ECE    E37D
+8ECF    E37E
+8ED1    E380
+8ED2    E381
+8ED3    E382
+8ED4    E383
+8ED5    E384
+8ED6    E385
+8ED7    E386
+8ED8    E387
+8ED9    E388
+8EDA    E389
+8EDB    E38A
+8EDC    E38B
+8EDD    E38C
+8EDE    E38D
+8EDF    E38E
+8EE0    E38F
+8EE1    E390
+8EE2    E391
+8EE3    E392
+8EE4    E393
+8EE5    E394
+8EE6    E395
+8EE7    E396
+8EE8    E397
+8EE9    E398
+8EEA    E399
+8EEB    E39A
+8EEC    E39B
+8EED    E39C
+8EEE    E39D
+8EEF    E39E
+8EF0    E39F
+8EF1    E3A0
+8EF2    E3A1
+8EF3    E3A2
+8EF4    E3A3
+8EF5    E3A4
+8EF6    E3A5
+8EF7    E3A6
+8EF8    E3A7
+8EF9    E3A8
+8EFA    E3A9
+8EFB    E3AA
+8EFC    E3AB
+8EFD    E3AC
+8EFE    E3AD
+8F40    E3AE
+8F41    E3AF
+8F42    E3B0
+8F43    E3B1
+8F44    E3B2
+8F45    E3B3
+8F46    E3B4
+8F47    E3B5
+8F48    E3B6
+8F49    E3B7
+8F4A    E3B8
+8F4B    E3B9
+8F4C    E3BA
+8F4D    E3BB
+8F4E    E3BC
+8F4F    E3BD
+8F50    E3BE
+8F51    E3BF
+8F52    E3C0
+8F53    E3C1
+8F54    E3C2
+8F55    E3C3
+8F56    E3C4
+8F58    E3C6
+8F59    E3C7
+8F5A    E3C8
+8F5B    E3C9
+8F5C    E3CA
+8F5D    E3CB
+8F5E    E3CC
+8F5F    E3CD
+8F60    E3CE
+8F61    E3CF
+8F62    E3D0
+8F63    E3D1
+8F64    E3D2
+8F65    E3D3
+8F66    E3D4
+8F67    E3D5
+8F68    E3D6
+8F6A    E3D8
+8F6B    E3D9
+8F6C    E3DA
+8F6D    E3DB
+8F6F    E3DD
+8F70    E3DE
+8F71    E3DF
+8F72    E3E0
+8F73    E3E1
+8F74    E3E2
+8F75    E3E3
+8F76    E3E4
+8F77    E3E5
+8F78    E3E6
+8F79    E3E7
+8F7A    E3E8
+8F7B    E3E9
+8F7C    E3EA
+8F7D    E3EB
+8F7E    E3EC
+8FA1    E3ED
+8FA2    E3EE
+8FA3    E3EF
+8FA4    E3F0
+8FA5    E3F1
+8FA6    E3F2
+8FA7    E3F3
+8FA8    E3F4
+8FA9    E3F5
+8FAA    E3F6
+8FAB    E3F7
+8FAC    E3F8
+8FAD    E3F9
+8FAE    E3FA
+8FAF    E3FB
+8FB0    E3FC
+8FB1    E3FD
+8FB2    E3FE
+8FB3    E3FF
+8FB4    E400
+8FB5    E401
+8FB6    E402
+8FB7    E403
+8FB8    E404
+8FB9    E405
+8FBA    E406
+8FBB    E407
+8FBC    E408
+8FBD    E409
+8FBE    E40A
+8FBF    E40B
+8FC0    E40C
+8FC1    E40D
+8FC2    E40E
+8FC3    E40F
+8FC4    E410
+8FC5    E411
+8FC6    E412
+8FC7    E413
+8FC8    E414
+8FC9    E415
+8FCA    E416
+8FCD    E419
+8FCE    E41A
+8FCF    E41B
+8FD0    E41C
+8FD1    E41D
+8FD2    E41E
+8FD3    E41F
+8FD4    E420
+8FD5    E421
+8FD6    E422
+8FD7    E423
+8FD8    E424
+8FD9    E425
+8FDA    E426
+8FDB    E427
+8FDC    E428
+8FDD    E429
+8FDE    E42A
+8FDF    E42B
+8FE0    E42C
+8FE1    E42D
+8FE2    E42E
+8FE3    E42F
+8FE4    E430
+8FE5    E431
+8FE6    E432
+8FE7    E433
+8FE8    E434
+8FE9    E435
+8FEA    E436
+8FEB    E437
+8FEC    E438
+8FED    E439
+8FEE    E43A
+8FEF    E43B
+8FF0    E43C
+8FF1    E43D
+8FF2    E43E
+8FF3    E43F
+8FF4    E440
+8FF5    E441
+8FF6    E442
+8FF7    E443
+8FF8    E444
+8FF9    E445
+8FFA    E446
+8FFB    E447
+8FFC    E448
+8FFD    E449
+9040    E44B
+9041    E44C
+9042    E44D
+9043    E44E
+9044    E44F
+9045    E450
+9046    E451
+9047    E452
+9048    E453
+9049    E454
+904A    E455
+904B    E456
+904C    E457
+904D    E458
+904E    E459
+904F    E45A
+9050    E45B
+9051    E45C
+9052    E45D
+9053    E45E
+9054    E45F
+9055    E460
+9056    E461
+9057    E462
+9058    E463
+9059    E464
+905A    E465
+905B    E466
+905C    E467
+905D    E468
+905E    E469
+905F    E46A
+9060    E46B
+9061    E46C
+9062    E46D
+9063    E46E
+9064    E46F
+9065    E470
+9066    E471
+9067    E472
+9068    E473
+9069    E474
+906A    E475
+906B    E476
+906C    E477
+906E    E479
+906F    E47A
+9070    E47B
+9071    E47C
+9072    E47D
+9073    E47E
+9074    E47F
+9075    E480
+9076    E481
+9077    E482
+9078    E483
+9079    E484
+907B    E486
+907C    E487
+907D    E488
+907E    E489
+90A1    E48A
+90A2    E48B
+90A3    E48C
+90A4    E48D
+90A5    E48E
+90A6    E48F
+90A7    E490
+90A8    E491
+90A9    E492
+90AA    E493
+90AB    E494
+90AC    E495
+90AD    E496
+90AE    E497
+90AF    E498
+90B0    E499
+90B1    E49A
+90B2    E49B
+90B3    E49C
+90B4    E49D
+90B5    E49E
+90B6    E49F
+90B7    E4A0
+90B8    E4A1
+90B9    E4A2
+90BA    E4A3
+90BB    E4A4
+90BC    E4A5
+90BD    E4A6
+90BE    E4A7
+90BF    E4A8
+90C0    E4A9
+90C1    E4AA
+90C2    E4AB
+90C3    E4AC
+90C4    E4AD
+90C5    E4AE
+90C6    E4AF
+90C7    E4B0
+90C8    E4B1
+90C9    E4B2
+90CA    E4B3
+90CB    E4B4
+90CC    E4B5
+90CD    E4B6
+90CE    E4B7
+90CF    E4B8
+90D0    E4B9
+90D1    E4BA
+90D2    E4BB
+90D3    E4BC
+90D4    E4BD
+90D5    E4BE
+90D6    E4BF
+90D7    E4C0
+90D8    E4C1
+90D9    E4C2
+90DA    E4C3
+90DB    E4C4
+90DD    E4C6
+90DE    E4C7
+90DF    E4C8
+90E0    E4C9
+90E1    E4CA
+90E2    E4CB
+90E3    E4CC
+90E4    E4CD
+90E5    E4CE
+90E6    E4CF
+90E7    E4D0
+90E8    E4D1
+90E9    E4D2
+90EA    E4D3
+90EB    E4D4
+90EC    E4D5
+90ED    E4D6
+90EE    E4D7
+90EF    E4D8
+90F0    E4D9
+90F2    E4DB
+90F3    E4DC
+90F4    E4DD
+90F5    E4DE
+90F6    E4DF
+90F7    E4E0
+90F8    E4E1
+90F9    E4E2
+90FA    E4E3
+90FB    E4E4
+90FC    E4E5
+90FD    E4E6
+90FE    E4E7
+9140    E4E8
+9141    E4E9
+9142    E4EA
+9143    E4EB
+9144    E4EC
+9145    E4ED
+9146    E4EE
+9147    E4EF
+9148    E4F0
+9149    E4F1
+914A    E4F2
+914B    E4F3
+914C    E4F4
+914D    E4F5
+914E    E4F6
+914F    E4F7
+9150    E4F8
+9151    E4F9
+9152    E4FA
+9153    E4FB
+9154    E4FC
+9155    E4FD
+9156    E4FE
+9157    E4FF
+9158    E500
+9159    E501
+915A    E502
+915B    E503
+915C    E504
+915D    E505
+915E    E506
+915F    E507
+9160    E508
+9161    E509
+9162    E50A
+9163    E50B
+9164    E50C
+9165    E50D
+9166    E50E
+9167    E50F
+9168    E510
+9169    E511
+916A    E512
+916B    E513
+916C    E514
+916D    E515
+916E    E516
+916F    E517
+9170    E518
+9171    E519
+9172    E51A
+9173    E51B
+9174    E51C
+9175    E51D
+9176    E51E
+9177    E51F
+9178    E520
+9179    E521
+917A    E522
+917B    E523
+917C    E524
+917D    E525
+917E    E526
+91A1    E527
+91A2    E528
+91A3    E529
+91A4    E52A
+91A5    E52B
+91A6    E52C
+91A7    E52D
+91A8    E52E
+91A9    E52F
+91AA    E530
+91AB    E531
+91AC    E532
+91AD    E533
+91AE    E534
+91AF    E535
+91B0    E536
+91B1    E537
+91B2    E538
+91B3    E539
+91B4    E53A
+91B5    E53B
+91B6    E53C
+91B7    E53D
+91B8    E53E
+91B9    E53F
+91BA    E540
+91BB    E541
+91BC    E542
+91BD    E543
+91BE    E544
+91C0    E546
+91C1    E547
+91C2    E548
+91C3    E549
+91C4    E54A
+91C5    E54B
+91C6    E54C
+91C7    E54D
+91C8    E54E
+91C9    E54F
+91CA    E550
+91CB    E551
+91CC    E552
+91CD    E553
+91CE    E554
+91CF    E555
+91D0    E556
+91D1    E557
+91D2    E558
+91D3    E559
+91D4    E55A
+91D5    E55B
+91D6    E55C
+91D7    E55D
+91D8    E55E
+91D9    E55F
+91DA    E560
+91DB    E561
+91DC    E562
+91DD    E563
+91DE    E564
+91DF    E565
+91E0    E566
+91E1    E567
+91E2    E568
+91E3    E569
+91E4    E56A
+91E5    E56B
+91E6    E56C
+91E7    E56D
+91E8    E56E
+91E9    E56F
+91EA    E570
+91EB    E571
+91EC    E572
+91ED    E573
+91EE    E574
+91EF    E575
+91F0    E576
+91F1    E577
+91F2    E578
+91F3    E579
+91F4    E57A
+91F5    E57B
+91F6    E57C
+91F7    E57D
+91F8    E57E
+91F9    E57F
+91FA    E580
+91FB    E581
+91FC    E582
+91FD    E583
+91FE    E584
+9240    E585
+9241    E586
+9242    E587
+9243    E588
+9245    E58A
+9246    E58B
+9247    E58C
+9248    E58D
+9249    E58E
+924A    E58F
+924B    E590
+924C    E591
+924D    E592
+924E    E593
+924F    E594
+9250    E595
+9251    E596
+9252    E597
+9253    E598
+9254    E599
+9255    E59A
+9256    E59B
+9257    E59C
+9258    E59D
+9259    E59E
+925A    E59F
+925B    E5A0
+925C    E5A1
+925D    E5A2
+925E    E5A3
+925F    E5A4
+9260    E5A5
+9261    E5A6
+9262    E5A7
+9263    E5A8
+9264    E5A9
+9265    E5AA
+9266    E5AB
+9267    E5AC
+9268    E5AD
+9269    E5AE
+926A    E5AF
+926B    E5B0
+926C    E5B1
+926D    E5B2
+926E    E5B3
+926F    E5B4
+9270    E5B5
+9271    E5B6
+9272    E5B7
+9273    E5B8
+9274    E5B9
+9275    E5BA
+9276    E5BB
+9277    E5BC
+9278    E5BD
+9279    E5BE
+927A    E5BF
+927B    E5C0
+927C    E5C1
+927D    E5C2
+927E    E5C3
+92A1    E5C4
+92A2    E5C5
+92A3    E5C6
+92A4    E5C7
+92A5    E5C8
+92A6    E5C9
+92A7    E5CA
+92A8    E5CB
+92A9    E5CC
+92AA    E5CD
+92AB    E5CE
+92AC    E5CF
+92AD    E5D0
+92AE    E5D1
+92B3    E5D6
+92B4    E5D7
+92B5    E5D8
+92B6    E5D9
+92B7    E5DA
+92B8    E5DB
+92B9    E5DC
+92BA    E5DD
+92BB    E5DE
+92BC    E5DF
+92BD    E5E0
+92BE    E5E1
+92BF    E5E2
+92C0    E5E3
+92C1    E5E4
+92C2    E5E5
+92C3    E5E6
+92C4    E5E7
+92C5    E5E8
+92C6    E5E9
+92C7    E5EA
+92C9    E5EC
+92CA    E5ED
+92CB    E5EE
+92CC    E5EF
+92CD    E5F0
+92CE    E5F1
+92CF    E5F2
+92D0    E5F3
+92D2    E5F5
+92D3    E5F6
+92D4    E5F7
+92D5    E5F8
+92D6    E5F9
+92D7    E5FA
+92D8    E5FB
+92D9    E5FC
+92DA    E5FD
+92DB    E5FE
+92DC    E5FF
+92DD    E600
+92DE    E601
+92DF    E602
+92E0    E603
+92E1    E604
+92E2    E605
+92E3    E606
+92E4    E607
+92E5    E608
+92E6    E609
+92E7    E60A
+92E8    E60B
+92E9    E60C
+92EA    E60D
+92EB    E60E
+92EC    E60F
+92ED    E610
+92EE    E611
+92EF    E612
+92F0    E613
+92F1    E614
+92F2    E615
+92F3    E616
+92F4    E617
+92F5    E618
+92F6    E619
+92F7    E61A
+92F8    E61B
+92F9    E61C
+92FA    E61D
+92FB    E61E
+92FC    E61F
+92FD    E620
+92FE    E621
+9340    E622
+9341    E623
+9342    E624
+9343    E625
+9344    E626
+9345    E627
+9346    E628
+9347    E629
+9348    E62A
+9349    E62B
+934A    E62C
+934B    E62D
+934C    E62E
+934D    E62F
+934E    E630
+934F    E631
+9350    E632
+9351    E633
+9352    E634
+9353    E635
+9354    E636
+9355    E637
+9356    E638
+9357    E639
+9358    E63A
+9359    E63B
+935A    E63C
+935B    E63D
+935C    E63E
+935D    E63F
+935E    E640
+935F    E641
+9360    E642
+9361    E643
+9362    E644
+9363    E645
+9364    E646
+9365    E647
+9366    E648
+9367    E649
+9368    E64A
+9369    E64B
+936A    E64C
+936B    E64D
+936C    E64E
+936D    E64F
+936E    E650
+936F    E651
+9370    E652
+9371    E653
+9372    E654
+9373    E655
+9374    E656
+9375    E657
+9376    E658
+9377    E659
+9378    E65A
+9379    E65B
+937A    E65C
+937B    E65D
+937C    E65E
+937D    E65F
+937E    E660
+93A1    E661
+93A2    E662
+93A3    E663
+93A4    E664
+93A5    E665
+93A6    E666
+93A7    E667
+93A8    E668
+93A9    E669
+93AA    E66A
+93AB    E66B
+93AC    E66C
+93AD    E66D
+93AE    E66E
+93AF    E66F
+93B0    E670
+93B1    E671
+93B2    E672
+93B3    E673
+93B4    E674
+93B5    E675
+93B6    E676
+93B7    E677
+93B8    E678
+93B9    E679
+93BA    E67A
+93BB    E67B
+93BC    E67C
+93BD    E67D
+93BE    E67E
+93BF    E67F
+93C0    E680
+93C1    E681
+93C2    E682
+93C3    E683
+93C4    E684
+93C5    E685
+93C6    E686
+93C7    E687
+93C8    E688
+93C9    E689
+93CA    E68A
+93CB    E68B
+93CC    E68C
+93CD    E68D
+93CE    E68E
+93CF    E68F
+93D0    E690
+93D1    E691
+93D2    E692
+93D3    E693
+93D4    E694
+93D5    E695
+93D6    E696
+93D7    E697
+93D8    E698
+93D9    E699
+93DA    E69A
+93DB    E69B
+93DC    E69C
+93DD    E69D
+93DE    E69E
+93DF    E69F
+93E0    E6A0
+93E1    E6A1
+93E2    E6A2
+93E3    E6A3
+93E4    E6A4
+93E5    E6A5
+93E6    E6A6
+93E7    E6A7
+93E8    E6A8
+93E9    E6A9
+93EA    E6AA
+93EB    E6AB
+93EC    E6AC
+93ED    E6AD
+93EE    E6AE
+93EF    E6AF
+93F0    E6B0
+93F1    E6B1
+93F2    E6B2
+93F3    E6B3
+93F4    E6B4
+93F5    E6B5
+93F6    E6B6
+93F7    E6B7
+93F8    E6B8
+93F9    E6B9
+93FA    E6BA
+93FB    E6BB
+93FC    E6BC
+93FD    E6BD
+93FE    E6BE
+9440    E6BF
+9441    E6C0
+9442    E6C1
+9443    E6C2
+9444    E6C3
+9445    E6C4
+9446    E6C5
+9448    E6C7
+9449    E6C8
+944A    E6C9
+944B    E6CA
+944C    E6CB
+944D    E6CC
+944E    E6CD
+944F    E6CE
+9450    E6CF
+9451    E6D0
+9452    E6D1
+9453    E6D2
+9454    E6D3
+9455    E6D4
+9456    E6D5
+9457    E6D6
+9458    E6D7
+9459    E6D8
+945A    E6D9
+945B    E6DA
+945C    E6DB
+945D    E6DC
+945E    E6DD
+945F    E6DE
+9460    E6DF
+9461    E6E0
+9462    E6E1
+9463    E6E2
+9464    E6E3
+9465    E6E4
+9466    E6E5
+9467    E6E6
+9468    E6E7
+9469    E6E8
+946A    E6E9
+946B    E6EA
+946C    E6EB
+946D    E6EC
+946E    E6ED
+946F    E6EE
+9470    E6EF
+9471    E6F0
+9472    E6F1
+9473    E6F2
+9474    E6F3
+9475    E6F4
+9476    E6F5
+9477    E6F6
+9478    E6F7
+9479    E6F8
+947A    E6F9
+947B    E6FA
+947C    E6FB
+947D    E6FC
+947E    E6FD
+94A1    E6FE
+94A2    E6FF
+94A3    E700
+94A4    E701
+94A5    E702
+94A6    E703
+94A7    E704
+94A8    E705
+94A9    E706
+94AA    E707
+94AB    E708
+94AC    E709
+94AD    E70A
+94AE    E70B
+94AF    E70C
+94B0    E70D
+94B1    E70E
+94B2    E70F
+94B3    E710
+94B4    E711
+94B5    E712
+94B6    E713
+94B7    E714
+94B8    E715
+94B9    E716
+94BA    E717
+94BB    E718
+94BC    E719
+94BD    E71A
+94BE    E71B
+94BF    E71C
+94C0    E71D
+94C1    E71E
+94C2    E71F
+94C3    E720
+94C4    E721
+94C5    E722
+94C6    E723
+94C7    E724
+94C8    E725
+94C9    E726
+94CB    E728
+94CC    E729
+94CD    E72A
+94CE    E72B
+94CF    E72C
+94D0    E72D
+94D1    E72E
+94D2    E72F
+94D3    E730
+94D4    E731
+94D5    E732
+94D6    E733
+94D7    E734
+94D8    E735
+94D9    E736
+94DA    E737
+94DB    E738
+94DC    E739
+94DD    E73A
+94DE    E73B
+94DF    E73C
+94E0    E73D
+94E1    E73E
+94E2    E73F
+94E3    E740
+94E4    E741
+94E5    E742
+94E6    E743
+94E7    E744
+94E8    E745
+94E9    E746
+94EA    E747
+94EB    E748
+94EC    E749
+94ED    E74A
+94EE    E74B
+94EF    E74C
+94F0    E74D
+94F1    E74E
+94F2    E74F
+94F3    E750
+94F4    E751
+94F5    E752
+94F6    E753
+94F7    E754
+94F8    E755
+94F9    E756
+94FA    E757
+94FB    E758
+94FC    E759
+94FD    E75A
+94FE    E75B
+9540    E75C
+9541    E75D
+9542    E75E
+9543    E75F
+9544    E760
+9545    E761
+9546    E762
+9547    E763
+9548    E764
+9549    E765
+954A    E766
+954B    E767
+954C    E768
+954D    E769
+954E    E76A
+954F    E76B
+9550    E76C
+9551    E76D
+9552    E76E
+9553    E76F
+9554    E770
+9555    E771
+9556    E772
+9557    E773
+9558    E774
+9559    E775
+955A    E776
+955B    E777
+955C    E778
+955D    E779
+955E    E77A
+955F    E77B
+9560    E77C
+9561    E77D
+9562    E77E
+9563    E77F
+9564    E780
+9565    E781
+9566    E782
+9567    E783
+9568    E784
+9569    E785
+956A    E786
+956B    E787
+956C    E788
+956D    E789
+956E    E78A
+956F    E78B
+9570    E78C
+9571    E78D
+9572    E78E
+9573    E78F
+9574    E790
+9575    E791
+9576    E792
+9577    E793
+9578    E794
+9579    E795
+957A    E796
+957B    E797
+957C    E798
+957D    E799
+957E    E79A
+95A1    E79B
+95A2    E79C
+95A3    E79D
+95A4    E79E
+95A5    E79F
+95A6    E7A0
+95A7    E7A1
+95A8    E7A2
+95A9    E7A3
+95AA    E7A4
+95AB    E7A5
+95AC    E7A6
+95AD    E7A7
+95AE    E7A8
+95AF    E7A9
+95B0    E7AA
+95B1    E7AB
+95B2    E7AC
+95B3    E7AD
+95B4    E7AE
+95B5    E7AF
+95B6    E7B0
+95B7    E7B1
+95B8    E7B2
+95B9    E7B3
+95BA    E7B4
+95BB    E7B5
+95BC    E7B6
+95BD    E7B7
+95BE    E7B8
+95BF    E7B9
+95C0    E7BA
+95C1    E7BB
+95C2    E7BC
+95C3    E7BD
+95C4    E7BE
+95C5    E7BF
+95C6    E7C0
+95C7    E7C1
+95C8    E7C2
+95C9    E7C3
+95CA    E7C4
+95CB    E7C5
+95CC    E7C6
+95CD    E7C7
+95CE    E7C8
+95CF    E7C9
+95D0    E7CA
+95D1    E7CB
+95D2    E7CC
+95D3    E7CD
+95D4    E7CE
+95D5    E7CF
+95D6    E7D0
+95D7    E7D1
+95D8    E7D2
+95DA    E7D4
+95DB    E7D5
+95DC    E7D6
+95DD    E7D7
+95DE    E7D8
+95DF    E7D9
+95E0    E7DA
+95E1    E7DB
+95E2    E7DC
+95E3    E7DD
+95E4    E7DE
+95E5    E7DF
+95E6    E7E0
+95E7    E7E1
+95E8    E7E2
+95E9    E7E3
+95EA    E7E4
+95EB    E7E5
+95EC    E7E6
+95ED    E7E7
+95EE    E7E8
+95EF    E7E9
+95F0    E7EA
+95F1    E7EB
+95F2    E7EC
+95F3    E7ED
+95F4    E7EE
+95F5    E7EF
+95F6    E7F0
+95F7    E7F1
+95F8    E7F2
+95F9    E7F3
+95FA    E7F4
+95FB    E7F5
+95FC    E7F6
+95FD    E7F7
+95FE    E7F8
+9640    E7F9
+9641    E7FA
+9642    E7FB
+9643    E7FC
+9645    E7FE
+9646    E7FF
+9647    E800
+9648    E801
+9649    E802
+964A    E803
+964B    E804
+964C    E805
+964D    E806
+964E    E807
+964F    E808
+9650    E809
+9651    E80A
+9652    E80B
+9653    E80C
+9654    E80D
+9655    E80E
+9656    E80F
+9657    E810
+9658    E811
+9659    E812
+965A    E813
+965B    E814
+965C    E815
+965D    E816
+965E    E817
+965F    E818
+9660    E819
+9661    E81A
+9662    E81B
+9663    E81C
+9664    E81D
+9665    E81E
+9666    E81F
+9667    E820
+9668    E821
+9669    E822
+966A    E823
+966B    E824
+966C    E825
+966D    E826
+966E    E827
+966F    E828
+9670    E829
+9671    E82A
+9672    E82B
+9673    E82C
+9674    E82D
+9675    E82E
+9676    E82F
+9677    E830
+9678    E831
+9679    E832
+967A    E833
+967B    E834
+967C    E835
+967D    E836
+967E    E837
+96A1    E838
+96A2    E839
+96A3    E83A
+96A4    E83B
+96A5    E83C
+96A6    E83D
+96A7    E83E
+96A8    E83F
+96A9    E840
+96AA    E841
+96AB    E842
+96AC    E843
+96AD    E844
+96AE    E845
+96AF    E846
+96B0    E847
+96B1    E848
+96B2    E849
+96B3    E84A
+96B4    E84B
+96B5    E84C
+96B6    E84D
+96B7    E84E
+96B8    E84F
+96B9    E850
+96BA    E851
+96BB    E852
+96BC    E853
+96BD    E854
+96BE    E855
+96BF    E856
+96C0    E857
+96C1    E858
+96C2    E859
+96C3    E85A
+96C4    E85B
+96C5    E85C
+96C6    E85D
+96C7    E85E
+96C8    E85F
+96C9    E860
+96CA    E861
+96CB    E862
+96CC    E863
+96CD    E864
+96CE    E865
+96CF    E866
+96D0    E867
+96D1    E868
+96D2    E869
+96D3    E86A
+96D4    E86B
+96D5    E86C
+96D6    E86D
+96D7    E86E
+96D8    E86F
+96D9    E870
+96DA    E871
+96DB    E872
+96DC    E873
+96DD    E874
+96DE    E875
+96DF    E876
+96E0    E877
+96E1    E878
+96E2    E879
+96E3    E87A
+96E4    E87B
+96E5    E87C
+96E6    E87D
+96E7    E87E
+96E8    E87F
+96E9    E880
+96EA    E881
+96EB    E882
+96EC    E883
+96EE    E885
+96EF    E886
+96F0    E887
+96F1    E888
+96F2    E889
+96F3    E88A
+96F4    E88B
+96F5    E88C
+96F6    E88D
+96F7    E88E
+96F8    E88F
+96F9    E890
+96FA    E891
+96FB    E892
+96FD    E894
+96FE    E895
+9740    E896
+9741    E897
+9742    E898
+9743    E899
+9744    E89A
+9745    E89B
+9746    E89C
+9747    E89D
+9748    E89E
+9749    E89F
+974A    E8A0
+974B    E8A1
+974C    E8A2
+974D    E8A3
+974E    E8A4
+974F    E8A5
+9750    E8A6
+9751    E8A7
+9752    E8A8
+9753    E8A9
+9754    E8AA
+9755    E8AB
+9756    E8AC
+9757    E8AD
+9758    E8AE
+9759    E8AF
+975A    E8B0
+975B    E8B1
+975C    E8B2
+975D    E8B3
+975E    E8B4
+975F    E8B5
+9760    E8B6
+9761    E8B7
+9762    E8B8
+9763    E8B9
+9764    E8BA
+9765    E8BB
+9766    E8BC
+9767    E8BD
+9768    E8BE
+9769    E8BF
+976A    E8C0
+976B    E8C1
+976C    E8C2
+976D    E8C3
+976E    E8C4
+976F    E8C5
+9770    E8C6
+9771    E8C7
+9772    E8C8
+9773    E8C9
+9774    E8CA
+9775    E8CB
+9776    E8CC
+9777    E8CD
+9778    E8CE
+9779    E8CF
+977A    E8D0
+977B    E8D1
+977C    E8D2
+977D    E8D3
+977E    E8D4
+97A1    E8D5
+97A2    E8D6
+97A3    E8D7
+97A4    E8D8
+97A5    E8D9
+97A6    E8DA
+97A7    E8DB
+97A8    E8DC
+97A9    E8DD
+97AA    E8DE
+97AB    E8DF
+97AC    E8E0
+97AD    E8E1
+97AE    E8E2
+97AF    E8E3
+97B0    E8E4
+97B1    E8E5
+97B2    E8E6
+97B3    E8E7
+97B4    E8E8
+97B5    E8E9
+97B6    E8EA
+97B7    E8EB
+97B8    E8EC
+97B9    E8ED
+97BA    E8EE
+97BB    E8EF
+97BC    E8F0
+97BD    E8F1
+97BE    E8F2
+97BF    E8F3
+97C0    E8F4
+97C1    E8F5
+97C2    E8F6
+97C3    E8F7
+97C4    E8F8
+97C5    E8F9
+97C6    E8FA
+97C7    E8FB
+97C8    E8FC
+97C9    E8FD
+97CA    E8FE
+97CB    E8FF
+97CC    E900
+97CD    E901
+97CE    E902
+97CF    E903
+97D0    E904
+97D1    E905
+97D2    E906
+97D3    E907
+97D4    E908
+97D5    E909
+97D6    E90A
+97D7    E90B
+97D8    E90C
+97D9    E90D
+97DA    E90E
+97DB    E90F
+97DC    E910
+97DD    E911
+97DE    E912
+97DF    E913
+97E0    E914
+97E1    E915
+97E2    E916
+97E3    E917
+97E4    E918
+97E5    E919
+97E6    E91A
+97E7    E91B
+97E8    E91C
+97E9    E91D
+97EA    E91E
+97EB    E91F
+97EC    E920
+97ED    E921
+97EE    E922
+97EF    E923
+97F0    E924
+97F1    E925
+97F2    E926
+97F3    E927
+97F4    E928
+97F5    E929
+97F6    E92A
+97F7    E92B
+97F8    E92C
+97F9    E92D
+97FA    E92E
+97FB    E92F
+97FC    E930
+97FD    E931
+97FE    E932
+9840    E933
+9841    E934
+9842    E935
+9843    E936
+9844    E937
+9845    E938
+9846    E939
+9847    E93A
+9848    E93B
+9849    E93C
+984A    E93D
+984B    E93E
+984C    E93F
+984D    E940
+984E    E941
+984F    E942
+9850    E943
+9851    E944
+9852    E945
+9853    E946
+9854    E947
+9855    E948
+9856    E949
+9857    E94A
+9858    E94B
+9859    E94C
+985A    E94D
+985B    E94E
+985C    E94F
+985D    E950
+985E    E951
+985F    E952
+9860    E953
+9861    E954
+9862    E955
+9863    E956
+9864    E957
+9865    E958
+9866    E959
+9867    E95A
+9868    E95B
+9869    E95C
+986A    E95D
+986B    E95E
+986C    E95F
+986D    E960
+986E    E961
+986F    E962
+9870    E963
+9871    E964
+9872    E965
+9873    E966
+9874    E967
+9875    E968
+9876    E969
+9877    E96A
+9878    E96B
+9879    E96C
+987A    E96D
+987B    E96E
+987C    E96F
+987D    E970
+987E    E971
+98A1    E972
+98A2    E973
+98A3    E974
+98A4    E975
+98A5    E976
+98A6    E977
+98A7    E978
+98A8    E979
+98A9    E97A
+98AA    E97B
+98AB    E97C
+98AC    E97D
+98AD    E97E
+98AE    E97F
+98AF    E980
+98B0    E981
+98B1    E982
+98B2    E983
+98B3    E984
+98B4    E985
+98B5    E986
+98B6    E987
+98B7    E988
+98B8    E989
+98B9    E98A
+98BA    E98B
+98BB    E98C
+98BC    E98D
+98BD    E98E
+98BE    E98F
+98BF    E990
+98C0    E991
+98C1    E992
+98C2    E993
+98C3    E994
+98C4    E995
+98C5    E996
+98C6    E997
+98C7    E998
+98C8    E999
+98C9    E99A
+98CA    E99B
+98CB    E99C
+98CC    E99D
+98CD    E99E
+98CE    E99F
+98CF    E9A0
+98D0    E9A1
+98D1    E9A2
+98D2    E9A3
+98D3    E9A4
+98D4    E9A5
+98D5    E9A6
+98D6    E9A7
+98D7    E9A8
+98D8    E9A9
+98D9    E9AA
+98DA    E9AB
+98DB    E9AC
+98DC    E9AD
+98DD    E9AE
+98DE    E9AF
+98DF    E9B0
+98E0    E9B1
+98E1    E9B2
+98E2    E9B3
+98E3    E9B4
+98E4    E9B5
+98E5    E9B6
+98E6    E9B7
+98E7    E9B8
+98E8    E9B9
+98E9    E9BA
+98EA    E9BB
+98EB    E9BC
+98EC    E9BD
+98ED    E9BE
+98EE    E9BF
+98EF    E9C0
+98F0    E9C1
+98F1    E9C2
+98F2    E9C3
+98F3    E9C4
+98F4    E9C5
+98F5    E9C6
+98F6    E9C7
+98F7    E9C8
+98F8    E9C9
+98F9    E9CA
+98FA    E9CB
+98FB    E9CC
+98FC    E9CD
+98FD    E9CE
+98FE    E9CF
+9940    E9D0
+9941    E9D1
+9942    E9D2
+9943    E9D3
+9944    E9D4
+9945    E9D5
+9946    E9D6
+9947    E9D7
+9948    E9D8
+9949    E9D9
+994A    E9DA
+994B    E9DB
+994C    E9DC
+994D    E9DD
+994E    E9DE
+994F    E9DF
+9950    E9E0
+9951    E9E1
+9952    E9E2
+9953    E9E3
+9954    E9E4
+9955    E9E5
+9956    E9E6
+9957    E9E7
+9958    E9E8
+9959    E9E9
+995A    E9EA
+995B    E9EB
+995C    E9EC
+995D    E9ED
+995E    E9EE
+995F    E9EF
+9960    E9F0
+9961    E9F1
+9962    E9F2
+9963    E9F3
+9964    E9F4
+9965    E9F5
+9966    E9F6
+9967    E9F7
+9968    E9F8
+9969    E9F9
+996A    E9FA
+996B    E9FB
+996C    E9FC
+996D    E9FD
+996E    E9FE
+996F    E9FF
+9970    EA00
+9971    EA01
+9972    EA02
+9973    EA03
+9974    EA04
+9975    EA05
+9976    EA06
+9977    EA07
+9978    EA08
+9979    EA09
+997A    EA0A
+997B    EA0B
+997C    EA0C
+997D    EA0D
+997E    EA0E
+99A1    EA0F
+99A2    EA10
+99A3    EA11
+99A4    EA12
+99A5    EA13
+99A6    EA14
+99A7    EA15
+99A8    EA16
+99A9    EA17
+99AA    EA18
+99AB    EA19
+99AC    EA1A
+99AD    EA1B
+99AE    EA1C
+99AF    EA1D
+99B0    EA1E
+99B1    EA1F
+99B2    EA20
+99B3    EA21
+99B4    EA22
+99B5    EA23
+99B6    EA24
+99B7    EA25
+99B8    EA26
+99B9    EA27
+99BA    EA28
+99BB    EA29
+99BC    EA2A
+99BD    EA2B
+99BE    EA2C
+99BF    EA2D
+99C0    EA2E
+99C1    EA2F
+99C2    EA30
+99C3    EA31
+99C4    EA32
+99C5    EA33
+99C6    EA34
+99C7    EA35
+99C8    EA36
+99C9    EA37
+99CA    EA38
+99CB    EA39
+99CC    EA3A
+99CD    EA3B
+99CE    EA3C
+99CF    EA3D
+99D0    EA3E
+99D1    EA3F
+99D2    EA40
+99D3    EA41
+99D4    EA42
+99D5    EA43
+99D6    EA44
+99D7    EA45
+99D8    EA46
+99D9    EA47
+99DA    EA48
+99DB    EA49
+99DC    EA4A
+99DD    EA4B
+99DE    EA4C
+99DF    EA4D
+99E0    EA4E
+99E1    EA4F
+99E2    EA50
+99E3    EA51
+99E4    EA52
+99E5    EA53
+99E6    EA54
+99E7    EA55
+99E8    EA56
+99E9    EA57
+99EA    EA58
+99EB    EA59
+99EC    EA5A
+99ED    EA5B
+99EE    EA5C
+99EF    EA5D
+99F0    EA5E
+99F1    EA5F
+99F2    EA60
+99F3    EA61
+99F4    EA62
+99F5    EA63
+99F6    EA64
+99F7    EA65
+99F8    EA66
+99F9    EA67
+99FA    EA68
+99FB    EA69
+99FC    EA6A
+99FD    EA6B
+99FE    EA6C
+9A40    EA6D
+9A41    EA6E
+9A42    EA6F
+9A43    EA70
+9A44    EA71
+9A45    EA72
+9A46    EA73
+9A47    EA74
+9A48    EA75
+9A49    EA76
+9A4A    EA77
+9A4B    EA78
+9A4C    EA79
+9A4D    EA7A
+9A4E    EA7B
+9A4F    EA7C
+9A50    EA7D
+9A51    EA7E
+9A52    EA7F
+9A53    EA80
+9A54    EA81
+9A55    EA82
+9A56    EA83
+9A57    EA84
+9A58    EA85
+9A59    EA86
+9A5A    EA87
+9A5B    EA88
+9A5C    EA89
+9A5D    EA8A
+9A5E    EA8B
+9A5F    EA8C
+9A60    EA8D
+9A61    EA8E
+9A62    EA8F
+9A63    EA90
+9A64    EA91
+9A65    EA92
+9A66    EA93
+9A67    EA94
+9A68    EA95
+9A69    EA96
+9A6A    EA97
+9A6B    EA98
+9A6C    EA99
+9A6D    EA9A
+9A6E    EA9B
+9A6F    EA9C
+9A70    EA9D
+9A71    EA9E
+9A72    EA9F
+9A73    EAA0
+9A74    EAA1
+9A75    EAA2
+9A76    EAA3
+9A77    EAA4
+9A78    EAA5
+9A79    EAA6
+9A7A    EAA7
+9A7B    EAA8
+9A7C    EAA9
+9A7D    EAAA
+9A7E    EAAB
+9AA1    EAAC
+9AA2    EAAD
+9AA3    EAAE
+9AA4    EAAF
+9AA5    EAB0
+9AA6    EAB1
+9AA7    EAB2
+9AA8    EAB3
+9AA9    EAB4
+9AAA    EAB5
+9AAB    EAB6
+9AAC    EAB7
+9AAD    EAB8
+9AAE    EAB9
+9AAF    EABA
+9AB0    EABB
+9AB1    EABC
+9AB2    EABD
+9AB3    EABE
+9AB4    EABF
+9AB5    EAC0
+9AB6    EAC1
+9AB7    EAC2
+9AB8    EAC3
+9AB9    EAC4
+9ABA    EAC5
+9ABB    EAC6
+9ABC    EAC7
+9ABD    EAC8
+9ABE    EAC9
+9ABF    EACA
+9AC0    EACB
+9AC1    EACC
+9AC2    EACD
+9AC3    EACE
+9AC4    EACF
+9AC5    EAD0
+9AC6    EAD1
+9AC7    EAD2
+9AC8    EAD3
+9AC9    EAD4
+9ACA    EAD5
+9ACB    EAD6
+9ACC    EAD7
+9ACD    EAD8
+9ACE    EAD9
+9ACF    EADA
+9AD0    EADB
+9AD1    EADC
+9AD2    EADD
+9AD3    EADE
+9AD4    EADF
+9AD5    EAE0
+9AD6    EAE1
+9AD7    EAE2
+9AD8    EAE3
+9AD9    EAE4
+9ADA    EAE5
+9ADB    EAE6
+9ADC    EAE7
+9ADD    EAE8
+9ADE    EAE9
+9ADF    EAEA
+9AE0    EAEB
+9AE1    EAEC
+9AE2    EAED
+9AE3    EAEE
+9AE4    EAEF
+9AE5    EAF0
+9AE6    EAF1
+9AE7    EAF2
+9AE8    EAF3
+9AE9    EAF4
+9AEA    EAF5
+9AEB    EAF6
+9AEC    EAF7
+9AED    EAF8
+9AEE    EAF9
+9AEF    EAFA
+9AF0    EAFB
+9AF1    EAFC
+9AF2    EAFD
+9AF3    EAFE
+9AF4    EAFF
+9AF5    EB00
+9AF6    EB01
+9AF7    EB02
+9AF8    EB03
+9AF9    EB04
+9AFA    EB05
+9AFB    EB06
+9AFC    EB07
+9AFD    EB08
+9AFE    EB09
+9B40    EB0A
+9B41    EB0B
+9B42    EB0C
+9B43    EB0D
+9B44    EB0E
+9B45    EB0F
+9B46    EB10
+9B47    EB11
+9B48    EB12
+9B49    EB13
+9B4A    EB14
+9B4B    EB15
+9B4C    EB16
+9B4D    EB17
+9B4E    EB18
+9B4F    EB19
+9B50    EB1A
+9B51    EB1B
+9B52    EB1C
+9B53    EB1D
+9B54    EB1E
+9B55    EB1F
+9B56    EB20
+9B57    EB21
+9B58    EB22
+9B59    EB23
+9B5A    EB24
+9B5B    EB25
+9B5C    EB26
+9B5D    EB27
+9B5E    EB28
+9B5F    EB29
+9B60    EB2A
+9B62    EB2C
+9B63    EB2D
+9B64    EB2E
+9B65    EB2F
+9B66    EB30
+9B67    EB31
+9B68    EB32
+9B69    EB33
+9B6A    EB34
+9B6B    EB35
+9B6C    EB36
+9B6D    EB37
+9B6E    EB38
+9B6F    EB39
+9B70    EB3A
+9B71    EB3B
+9B72    EB3C
+9B73    EB3D
+9B74    EB3E
+9B75    EB3F
+9B77    EB41
+9B79    EB43
+9B7A    EB44
+9B7C    EB46
+9B7D    EB47
+9B7E    EB48
+9BA1    EB49
+9BA2    EB4A
+9BA3    EB4B
+9BA4    EB4C
+9BA5    EB4D
+9BA6    EB4E
+9BA7    EB4F
+9BA8    EB50
+9BA9    EB51
+9BAA    EB52
+9BAB    EB53
+9BAC    EB54
+9BAD    EB55
+9BAE    EB56
+9BAF    EB57
+9BB0    EB58
+9BB1    EB59
+9BB2    EB5A
+9BB3    EB5B
+9BB4    EB5C
+9BB5    EB5D
+9BB6    EB5E
+9BB7    EB5F
+9BB8    EB60
+9BB9    EB61
+9BBA    EB62
+9BBB    EB63
+9BBC    EB64
+9BBD    EB65
+9BBE    EB66
+9BBF    EB67
+9BC0    EB68
+9BC1    EB69
+9BC2    EB6A
+9BC3    EB6B
+9BC4    EB6C
+9BC5    EB6D
+9BC7    EB6F
+9BC8    EB70
+9BC9    EB71
+9BCA    EB72
+9BCB    EB73
+9BCC    EB74
+9BCD    EB75
+9BCE    EB76
+9BCF    EB77
+9BD0    EB78
+9BD1    EB79
+9BD2    EB7A
+9BD3    EB7B
+9BD4    EB7C
+9BD5    EB7D
+9BD6    EB7E
+9BD7    EB7F
+9BD8    EB80
+9BD9    EB81
+9BDA    EB82
+9BDB    EB83
+9BDC    EB84
+9BDD    EB85
+9BDF    EB87
+9BE0    EB88
+9BE1    EB89
+9BE2    EB8A
+9BE3    EB8B
+9BE4    EB8C
+9BE5    EB8D
+9BE6    EB8E
+9BE7    EB8F
+9BE8    EB90
+9BE9    EB91
+9BEA    EB92
+9BEB    EB93
+9BED    EB95
+9BEE    EB96
+9BEF    EB97
+9BF0    EB98
+9BF1    EB99
+9BF2    EB9A
+9BF3    EB9B
+9BF4    EB9C
+9BF5    EB9D
+9BF7    EB9F
+9BF8    EBA0
+9BF9    EBA1
+9BFA    EBA2
+9BFB    EBA3
+9BFC    EBA4
+9BFD    EBA5
+9BFE    EBA6
+9C40    EBA7
+9C41    EBA8
+9C43    EBAA
+9C44    EBAB
+9C45    EBAC
+9C46    EBAD
+9C47    EBAE
+9C48    EBAF
+9C49    EBB0
+9C4A    EBB1
+9C4B    EBB2
+9C4C    EBB3
+9C4D    EBB4
+9C4E    EBB5
+9C4F    EBB6
+9C50    EBB7
+9C51    EBB8
+9C52    EBB9
+9C54    EBBB
+9C55    EBBC
+9C56    EBBD
+9C57    EBBE
+9C58    EBBF
+9C59    EBC0
+9C5A    EBC1
+9C5B    EBC2
+9C5C    EBC3
+9C5D    EBC4
+9C5E    EBC5
+9C5F    EBC6
+9C60    EBC7
+9C61    EBC8
+9C63    EBCA
+9C64    EBCB
+9C65    EBCC
+9C66    EBCD
+9C67    EBCE
+9C69    EBD0
+9C6A    EBD1
+9C6C    EBD3
+9C6D    EBD4
+9C6E    EBD5
+9C6F    EBD6
+9C70    EBD7
+9C71    EBD8
+9C72    EBD9
+9C73    EBDA
+9C74    EBDB
+9C75    EBDC
+9C76    EBDD
+9C78    EBDF
+9C79    EBE0
+9C7A    EBE1
+9C7B    EBE2
+9C7C    EBE3
+9C7D    EBE4
+9C7E    EBE5
+9CA1    EBE6
+9CA2    EBE7
+9CA3    EBE8
+9CA4    EBE9
+9CA5    EBEA
+9CA6    EBEB
+9CA7    EBEC
+9CA8    EBED
+9CA9    EBEE
+9CAA    EBEF
+9CAB    EBF0
+9CAC    EBF1
+9CAD    EBF2
+9CAE    EBF3
+9CAF    EBF4
+9CB0    EBF5
+9CB1    EBF6
+9CB2    EBF7
+9CB3    EBF8
+9CB4    EBF9
+9CB5    EBFA
+9CB6    EBFB
+9CB7    EBFC
+9CB8    EBFD
+9CB9    EBFE
+9CBA    EBFF
+9CBB    EC00
+9CBE    EC03
+9CBF    EC04
+9CC0    EC05
+9CC1    EC06
+9CC2    EC07
+9CC3    EC08
+9CC4    EC09
+9CC5    EC0A
+9CC6    EC0B
+9CC7    EC0C
+9CC8    EC0D
+9CC9    EC0E
+9CCA    EC0F
+9CCB    EC10
+9CCC    EC11
+9CCD    EC12
+9CCE    EC13
+9CCF    EC14
+9CD1    EC16
+9CD2    EC17
+9CD3    EC18
+9CD4    EC19
+9CD5    EC1A
+9CD6    EC1B
+9CD7    EC1C
+9CD8    EC1D
+9CD9    EC1E
+9CDA    EC1F
+9CDB    EC20
+9CDC    EC21
+9CDD    EC22
+9CDE    EC23
+9CDF    EC24
+9CE0    EC25
+9CE1    EC26
+9CE2    EC27
+9CE3    EC28
+9CE4    EC29
+9CE5    EC2A
+9CE6    EC2B
+9CE7    EC2C
+9CE8    EC2D
+9CE9    EC2E
+9CEA    EC2F
+9CEB    EC30
+9CEC    EC31
+9CED    EC32
+9CEE    EC33
+9CEF    EC34
+9CF0    EC35
+9CF1    EC36
+9CF2    EC37
+9CF3    EC38
+9CF4    EC39
+9CF5    EC3A
+9CF6    EC3B
+9CF7    EC3C
+9CF8    EC3D
+9CF9    EC3E
+9CFA    EC3F
+9CFB    EC40
+9CFC    EC41
+9CFD    EC42
+9CFE    EC43
+9D40    EC44
+9D41    EC45
+9D42    EC46
+9D43    EC47
+9D44    EC48
+9D45    EC49
+9D46    EC4A
+9D47    EC4B
+9D48    EC4C
+9D49    EC4D
+9D4A    EC4E
+9D4B    EC4F
+9D4C    EC50
+9D4D    EC51
+9D4E    EC52
+9D4F    EC53
+9D50    EC54
+9D51    EC55
+9D52    EC56
+9D53    EC57
+9D54    EC58
+9D55    EC59
+9D56    EC5A
+9D58    EC5C
+9D59    EC5D
+9D5B    EC5F
+9D5C    EC60
+9D5D    EC61
+9D5E    EC62
+9D5F    EC63
+9D60    EC64
+9D61    EC65
+9D62    EC66
+9D63    EC67
+9D64    EC68
+9D65    EC69
+9D66    EC6A
+9D67    EC6B
+9D68    EC6C
+9D69    EC6D
+9D6A    EC6E
+9D6B    EC6F
+9D6C    EC70
+9D6D    EC71
+9D6E    EC72
+9D6F    EC73
+9D70    EC74
+9D71    EC75
+9D72    EC76
+9D73    EC77
+9D74    EC78
+9D75    EC79
+9D76    EC7A
+9D77    EC7B
+9D78    EC7C
+9D79    EC7D
+9D7A    EC7E
+9D7B    EC7F
+9D7C    EC80
+9D7D    EC81
+9D7E    EC82
+9DA1    EC83
+9DA2    EC84
+9DA3    EC85
+9DA4    EC86
+9DA5    EC87
+9DA6    EC88
+9DA7    EC89
+9DA8    EC8A
+9DA9    EC8B
+9DAA    EC8C
+9DAB    EC8D
+9DAC    EC8E
+9DAD    EC8F
+9DAE    EC90
+9DAF    EC91
+9DB0    EC92
+9DB1    EC93
+9DB2    EC94
+9DB3    EC95
+9DB4    EC96
+9DB5    EC97
+9DB6    EC98
+9DB7    EC99
+9DB8    EC9A
+9DB9    EC9B
+9DBA    EC9C
+9DBB    EC9D
+9DBC    EC9E
+9DBD    EC9F
+9DBE    ECA0
+9DBF    ECA1
+9DC0    ECA2
+9DC1    ECA3
+9DC2    ECA4
+9DC3    ECA5
+9DC5    ECA7
+9DC6    ECA8
+9DC7    ECA9
+9DC8    ECAA
+9DC9    ECAB
+9DCA    ECAC
+9DCB    ECAD
+9DCC    ECAE
+9DCD    ECAF
+9DCE    ECB0
+9DCF    ECB1
+9DD0    ECB2
+9DD1    ECB3
+9DD2    ECB4
+9DD3    ECB5
+9DD4    ECB6
+9DD5    ECB7
+9DD6    ECB8
+9DD7    ECB9
+9DD8    ECBA
+9DD9    ECBB
+9DDA    ECBC
+9DDB    ECBD
+9DDC    ECBE
+9DDD    ECBF
+9DDE    ECC0
+9DDF    ECC1
+9DE0    ECC2
+9DE1    ECC3
+9DE2    ECC4
+9DE3    ECC5
+9DE4    ECC6
+9DE5    ECC7
+9DE6    ECC8
+9DE7    ECC9
+9DE8    ECCA
+9DE9    ECCB
+9DEA    ECCC
+9DEB    ECCD
+9DEC    ECCE
+9DED    ECCF
+9DEE    ECD0
+9DEF    ECD1
+9DF0    ECD2
+9DF1    ECD3
+9DF2    ECD4
+9DF3    ECD5
+9DF4    ECD6
+9DF5    ECD7
+9DF6    ECD8
+9DF7    ECD9
+9DF8    ECDA
+9DF9    ECDB
+9DFA    ECDC
+9DFB    ECDD
+9DFC    ECDE
+9DFD    ECDF
+9DFE    ECE0
+9E40    ECE1
+9E41    ECE2
+9E42    ECE3
+9E43    ECE4
+9E44    ECE5
+9E45    ECE6
+9E46    ECE7
+9E47    ECE8
+9E48    ECE9
+9E49    ECEA
+9E4A    ECEB
+9E4B    ECEC
+9E4C    ECED
+9E4D    ECEE
+9E4E    ECEF
+9E4F    ECF0
+9E50    ECF1
+9E51    ECF2
+9E52    ECF3
+9E53    ECF4
+9E54    ECF5
+9E55    ECF6
+9E56    ECF7
+9E57    ECF8
+9E58    ECF9
+9E59    ECFA
+9E5A    ECFB
+9E5B    ECFC
+9E5C    ECFD
+9E5D    ECFE
+9E5E    ECFF
+9E5F    ED00
+9E60    ED01
+9E61    ED02
+9E62    ED03
+9E63    ED04
+9E64    ED05
+9E65    ED06
+9E66    ED07
+9E67    ED08
+9E68    ED09
+9E69    ED0A
+9E6A    ED0B
+9E6B    ED0C
+9E6C    ED0D
+9E6D    ED0E
+9E6E    ED0F
+9E6F    ED10
+9E70    ED11
+9E71    ED12
+9E72    ED13
+9E73    ED14
+9E74    ED15
+9E75    ED16
+9E76    ED17
+9E77    ED18
+9E78    ED19
+9E79    ED1A
+9E7A    ED1B
+9E7B    ED1C
+9E7C    ED1D
+9E7D    ED1E
+9E7E    ED1F
+9EA1    ED20
+9EA2    ED21
+9EA3    ED22
+9EA4    ED23
+9EA5    ED24
+9EA6    ED25
+9EA7    ED26
+9EA8    ED27
+9EAA    ED29
+9EAB    ED2A
+9EAD    ED2C
+9EAE    ED2D
+9EAF    ED2E
+9EB0    ED2F
+9EB1    ED30
+9EB2    ED31
+9EB3    ED32
+9EB4    ED33
+9EB5    ED34
+9EB6    ED35
+9EB7    ED36
+9EB8    ED37
+9EB9    ED38
+9EBA    ED39
+9EBB    ED3A
+9EBC    ED3B
+9EBD    ED3C
+9EBE    ED3D
+9EBF    ED3E
+9EC0    ED3F
+9EC1    ED40
+9EC2    ED41
+9EC3    ED42
+9EC5    ED44
+9EC6    ED45
+9EC7    ED46
+9EC8    ED47
+9EC9    ED48
+9ECA    ED49
+9ECB    ED4A
+9ECC    ED4B
+9ECD    ED4C
+9ECE    ED4D
+9ECF    ED4E
+9ED0    ED4F
+9ED1    ED50
+9ED2    ED51
+9ED3    ED52
+9ED4    ED53
+9ED5    ED54
+9ED6    ED55
+9ED7    ED56
+9ED8    ED57
+9ED9    ED58
+9EDA    ED59
+9EDB    ED5A
+9EDC    ED5B
+9EDD    ED5C
+9EDE    ED5D
+9EDF    ED5E
+9EE0    ED5F
+9EE1    ED60
+9EE2    ED61
+9EE3    ED62
+9EE4    ED63
+9EE5    ED64
+9EE6    ED65
+9EE7    ED66
+9EE8    ED67
+9EE9    ED68
+9EEA    ED69
+9EEB    ED6A
+9EEC    ED6B
+9EED    ED6C
+9EEE    ED6D
+9EF0    ED6F
+9EF1    ED70
+9EF2    ED71
+9EF3    ED72
+9EF5    ED74
+9EF6    ED75
+9EF7    ED76
+9EF8    ED77
+9EF9    ED78
+9EFA    ED79
+9EFB    ED7A
+9EFC    ED7B
+9EFE    ED7D
+9F40    ED7E
+9F41    ED7F
+9F42    ED80
+9F43    ED81
+9F44    ED82
+9F45    ED83
+9F46    ED84
+9F47    ED85
+9F48    ED86
+9F49    ED87
+9F4A    ED88
+9F4B    ED89
+9F4C    ED8A
+9F4D    ED8B
+9F4F    ED8D
+9F50    ED8E
+9F51    ED8F
+9F52    ED90
+9F53    ED91
+9F54    ED92
+9F55    ED93
+9F56    ED94
+9F57    ED95
+9F58    ED96
+9F59    ED97
+9F5A    ED98
+9F5B    ED99
+9F5C    ED9A
+9F5D    ED9B
+9F5E    ED9C
+9F5F    ED9D
+9F61    ED9F
+9F62    EDA0
+9F63    EDA1
+9F64    EDA2
+9F65    EDA3
+9F67    EDA5
+9F68    EDA6
+9F69    EDA7
+9F6A    EDA8
+9F6B    EDA9
+9F6C    EDAA
+9F6D    EDAB
+9F6E    EDAC
+9F6F    EDAD
+9F70    EDAE
+9F71    EDAF
+9F72    EDB0
+9F73    EDB1
+9F74    EDB2
+9F75    EDB3
+9F76    EDB4
+9F77    EDB5
+9F78    EDB6
+9F79    EDB7
+9F7A    EDB8
+9F7B    EDB9
+9F7C    EDBA
+9F7D    EDBB
+9F7E    EDBC
+9FA1    EDBD
+9FA2    EDBE
+9FA3    EDBF
+9FA4    EDC0
+9FA5    EDC1
+9FA6    EDC2
+9FA7    EDC3
+9FA8    EDC4
+9FA9    EDC5
+9FAA    EDC6
+9FAB    EDC7
+9FAC    EDC8
+9FAE    EDCA
+9FAF    EDCB
+9FB0    EDCC
+9FB2    EDCE
+9FB3    EDCF
+9FB4    EDD0
+9FB5    EDD1
+9FB6    EDD2
+9FB7    EDD3
+9FB8    EDD4
+9FB9    EDD5
+9FBA    EDD6
+9FBB    EDD7
+9FBC    EDD8
+9FBD    EDD9
+9FBE    EDDA
+9FBF    EDDB
+9FC1    EDDD
+9FC2    EDDE
+9FC3    EDDF
+9FC4    EDE0
+9FC5    EDE1
+9FC6    EDE2
+9FC7    EDE3
+9FC9    EDE5
+9FCA    EDE6
+9FCC    EDE8
+9FCD    EDE9
+9FCE    EDEA
+9FCF    EDEB
+9FD0    EDEC
+9FD1    EDED
+9FD2    EDEE
+9FD3    EDEF
+9FD4    EDF0
+9FD5    EDF1
+9FD6    EDF2
+9FD7    EDF3
+9FD9    EDF5
+9FDB    EDF7
+9FDC    EDF8
+9FDD    EDF9
+9FDE    EDFA
+9FDF    EDFB
+9FE0    EDFC
+9FE1    EDFD
+9FE2    EDFE
+9FE3    EDFF
+9FE4    EE00
+9FE5    EE01
+9FE7    EE03
+9FE8    EE04
+9FE9    EE05
+9FEB    EE07
+9FEC    EE08
+9FED    EE09
+9FEE    EE0A
+9FF0    EE0C
+9FF1    EE0D
+9FF2    EE0E
+9FF3    EE0F
+9FF4    EE10
+9FF5    EE11
+9FF6    EE12
+9FF7    EE13
+9FF8    EE14
+9FF9    EE15
+9FFA    EE16
+9FFB    EE17
+9FFC    EE18
+9FFD    EE19
+9FFE    EE1A
+A040    EE1B
+A041    EE1C
+A042    EE1D
+A043    EE1E
+A044    EE1F
+A045    EE20
+A046    EE21
+A047    EE22
+A048    EE23
+A049    EE24
+A04A    EE25
+A04B    EE26
+A04C    EE27
+A04D    EE28
+A04E    EE29
+A04F    EE2A
+A050    EE2B
+A051    EE2C
+A052    EE2D
+A053    EE2E
+A055    EE30
+A056    EE31
+A058    EE33
+A059    EE34
+A05B    EE36
+A05C    EE37
+A05D    EE38
+A05E    EE39
+A05F    EE3A
+A060    EE3B
+A061    EE3C
+A064    EE3F
+A065    EE40
+A066    EE41
+A067    EE42
+A068    EE43
+A069    EE44
+A06A    EE45
+A06B    EE46
+A06C    EE47
+A06D    EE48
+A06E    EE49
+A06F    EE4A
+A070    EE4B
+A071    EE4C
+A073    EE4E
+A074    EE4F
+A075    EE50
+A076    EE51
+A078    EE53
+A079    EE54
+A07A    EE55
+A07B    EE56
+A07C    EE57
+A07D    EE58
+A07E    EE59
+A0A1    EE5A
+A0A2    EE5B
+A0A3    EE5C
+A0A4    EE5D
+A0A6    EE5F
+A0A7    EE60
+A0A8    EE61
+A0A9    EE62
+A0AA    EE63
+A0AB    EE64
+A0AC    EE65
+A0AE    EE67
+A0B0    EE69
+A0B1    EE6A
+A0B2    EE6B
+A0B3    EE6C
+A0B4    EE6D
+A0B5    EE6E
+A0B6    EE6F
+A0B7    EE70
+A0B8    EE71
+A0B9    EE72
+A0BA    EE73
+A0BB    EE74
+A0BC    EE75
+A0BD    EE76
+A0BE    EE77
+A0BF    EE78
+A0C0    EE79
+A0C1    EE7A
+A0C2    EE7B
+A0C3    EE7C
+A0C4    EE7D
+A0C5    EE7E
+A0C6    EE7F
+A0C7    EE80
+A0C8    EE81
+A0C9    EE82
+A0CA    EE83
+A0CB    EE84
+A0CC    EE85
+A0CD    EE86
+A0CE    EE87
+A0CF    EE88
+A0D0    EE89
+A0D1    EE8A
+A0D2    EE8B
+A0D4    EE8D
+A0D6    EE8F
+A0D7    EE90
+A0D8    EE91
+A0D9    EE92
+A0DA    EE93
+A0DB    EE94
+A0DC    EE95
+A0DD    EE96
+A0DE    EE97
+A0E0    EE99
+A0E2    EE9B
+A0E3    EE9C
+A0E5    EE9E
+A0E6    EE9F
+A0E7    EEA0
+A0E8    EEA1
+A0E9    EEA2
+A0EA    EEA3
+A0EB    EEA4
+A0EC    EEA5
+A0ED    EEA6
+A0EE    EEA7
+A0EF    EEA8
+A0F0    EEA9
+A0F1    EEAA
+A0F2    EEAB
+A0F3    EEAC
+A0F4    EEAD
+A0F5    EEAE
+A0F6    EEAF
+A0F7    EEB0
+A0F8    EEB1
+A0F9    EEB2
+A0FA    EEB3
+A0FB    EEB4
+A0FC    EEB5
+A0FD    EEB6
+A0FE    EEB7
+C6A1    F6B1
+C6A2    F6B2
+C6A3    F6B3
+C6A4    F6B4
+C6A5    F6B5
+C6A6    F6B6
+C6A7    F6B7
+C6A8    F6B8
+C6A9    F6B9
+C6AA    F6BA
+C6AB    F6BB
+C6AC    F6BC
+C6AD    F6BD
+C6AE    F6BE
+C6AF    F6BF
+C6B0    F6C0
+C6B1    F6C1
+C6B2    F6C2
+C6B3    F6C3
+C6B4    F6C4
+C6B5    F6C5
+C6B6    F6C6
+C6B7    F6C7
+C6B8    F6C8
+C6B9    F6C9
+C6BA    F6CA
+C6BB    F6CB
+C6BC    F6CC
+C6BD    F6CD
+C6BE    F6CE
+C6BF    F6CF
+C6C0    F6D0
+C6C1    F6D1
+C6C2    F6D2
+C6C3    F6D3
+C6C4    F6D4
+C6C5    F6D5
+C6C6    F6D6
+C6C7    F6D7
+C6C8    F6D8
+C6C9    F6D9
+C6CA    F6DA
+C6CB    F6DB
+C6CC    F6DC
+C6CD    F6DD
+C6CE    F6DE
+C6D0    F6E0
+C6D1    F6E1
+C6D2    F6E2
+C6D4    F6E4
+C6D6    F6E6
+C6D8    F6E8
+C6D9    F6E9
+C6DA    F6EA
+C6DB    F6EB
+C6DC    F6EC
+C6DD    F6ED
+C6E0    F6F0
+C6E1    F6F1
+C6E2    F6F2
+C6E3    F6F3
+C6E4    F6F4
+C6E5    F6F5
+C6E6    F6F6
+C6E7    F6F7
+C6E8    F6F8
+C6E9    F6F9
+C6EA    F6FA
+C6EB    F6FB
+C6EC    F6FC
+C6ED    F6FD
+C6EE    F6FE
+C6EF    F6FF
+C6F0    F700
+C6F1    F701
+C6F2    F702
+C6F3    F703
+C6F4    F704
+C6F5    F705
+C6F6    F706
+C6F7    F707
+C6F8    F708
+C6F9    F709
+C6FA    F70A
+C6FB    F70B
+C6FC    F70C
+C6FD    F70D
+C6FE    F70E
+C740    F70F
+C741    F710
+C742    F711
+C743    F712
+C744    F713
+C745    F714
+C746    F715
+C747    F716
+C748    F717
+C749    F718
+C74A    F719
+C74B    F71A
+C74C    F71B
+C74D    F71C
+C74E    F71D
+C74F    F71E
+C750    F71F
+C751    F720
+C752    F721
+C753    F722
+C754    F723
+C755    F724
+C756    F725
+C757    F726
+C758    F727
+C759    F728
+C75A    F729
+C75B    F72A
+C75C    F72B
+C75D    F72C
+C75E    F72D
+C75F    F72E
+C760    F72F
+C761    F730
+C762    F731
+C763    F732
+C764    F733
+C765    F734
+C766    F735
+C767    F736
+C768    F737
+C769    F738
+C76A    F739
+C76B    F73A
+C76C    F73B
+C76D    F73C
+C76E    F73D
+C76F    F73E
+C770    F73F
+C771    F740
+C772    F741
+C773    F742
+C774    F743
+C775    F744
+C776    F745
+C777    F746
+C778    F747
+C779    F748
+C77A    F749
+C77B    F74A
+C77C    F74B
+C77D    F74C
+C77E    F74D
+C7A1    F74E
+C7A2    F74F
+C7A3    F750
+C7A4    F751
+C7A5    F752
+C7A6    F753
+C7A7    F754
+C7A8    F755
+C7A9    F756
+C7AA    F757
+C7AB    F758
+C7AC    F759
+C7AD    F75A
+C7AE    F75B
+C7AF    F75C
+C7B0    F75D
+C7B1    F75E
+C7B2    F75F
+C7B3    F760
+C7B4    F761
+C7B5    F762
+C7B6    F763
+C7B7    F764
+C7B8    F765
+C7B9    F766
+C7BA    F767
+C7BB    F768
+C7BC    F769
+C7BD    F76A
+C7BE    F76B
+C7BF    F76C
+C7C0    F76D
+C7C1    F76E
+C7C2    F76F
+C7C3    F770
+C7C4    F771
+C7C5    F772
+C7C6    F773
+C7C7    F774
+C7C8    F775
+C7C9    F776
+C7CA    F777
+C7CB    F778
+C7CC    F779
+C7CD    F77A
+C7CE    F77B
+C7CF    F77C
+C7D0    F77D
+C7D1    F77E
+C7D2    F77F
+C7D3    F780
+C7D4    F781
+C7D5    F782
+C7D6    F783
+C7D7    F784
+C7D8    F785
+C7D9    F786
+C7DA    F787
+C7DB    F788
+C7DC    F789
+C7DD    F78A
+C7DE    F78B
+C7DF    F78C
+C7E0    F78D
+C7E1    F78E
+C7E2    F78F
+C7E3    F790
+C7E4    F791
+C7E5    F792
+C7E6    F793
+C7E7    F794
+C7E8    F795
+C7E9    F796
+C7EA    F797
+C7EB    F798
+C7EC    F799
+C7ED    F79A
+C7EE    F79B
+C7EF    F79C
+C7F0    F79D
+C7F1    F79E
+C7F2    F79F
+C7F3    F7A0
+C7F4    F7A1
+C7F5    F7A2
+C7F6    F7A3
+C7F7    F7A4
+C7F8    F7A5
+C7F9    F7A6
+C7FA    F7A7
+C7FB    F7A8
+C7FC    F7A9
+C7FD    F7AA
+C7FE    F7AB
+C840    F7AC
+C841    F7AD
+C842    F7AE
+C843    F7AF
+C844    F7B0
+C845    F7B1
+C846    F7B2
+C847    F7B3
+C848    F7B4
+C849    F7B5
+C84A    F7B6
+C84B    F7B7
+C84C    F7B8
+C84D    F7B9
+C84E    F7BA
+C84F    F7BB
+C850    F7BC
+C851    F7BD
+C852    F7BE
+C853    F7BF
+C854    F7C0
+C855    F7C1
+C856    F7C2
+C857    F7C3
+C858    F7C4
+C859    F7C5
+C85A    F7C6
+C85B    F7C7
+C85C    F7C8
+C85D    F7C9
+C85E    F7CA
+C85F    F7CB
+C860    F7CC
+C861    F7CD
+C862    F7CE
+C863    F7CF
+C864    F7D0
+C865    F7D1
+C866    F7D2
+C867    F7D3
+C868    F7D4
+C869    F7D5
+C86A    F7D6
+C86B    F7D7
+C86C    F7D8
+C86D    F7D9
+C86E    F7DA
+C86F    F7DB
+C870    F7DC
+C871    F7DD
+C872    F7DE
+C873    F7DF
+C874    F7E0
+C875    F7E1
+C876    F7E2
+C877    F7E3
+C878    F7E4
+C879    F7E5
+C87A    F7E6
+C87B    F7E7
+C87C    F7E8
+C87D    F7E9
+C87E    F7EA
+C8A1    F7EB
+C8A2    F7EC
+C8A3    F7ED
+C8A4    F7EE
+C8CD    F817
+C8CE    F818
+C8CF    F819
+C8D0    F81A
+C8D1    F81B
+C8D2    F81C
+C8D3    F81D
+C8D4    F81E
+C8D5    F81F
+C8D6    F820
+C8D7    F821
+C8D8    F822
+C8D9    F823
+C8DA    F824
+C8DB    F825
+C8DC    F826
+C8DD    F827
+C8DE    F828
+C8DF    F829
+C8E0    F82A
+C8E1    F82B
+C8E2    F82C
+C8E3    F82D
+C8E4    F82E
+C8E5    F82F
+C8E6    F830
+C8E7    F831
+C8E8    F832
+C8E9    F833
+C8EA    F834
+C8EB    F835
+C8EC    F836
+C8ED    F837
+C8EE    F838
+C8EF    F839
+C8F0    F83A
+C8F1    F83B
+C8F5    F83F
+C8F6    F840
+C8F7    F841
+C8F8    F842
+C8F9    F843
+C8FA    F844
+C8FB    F845
+C8FC    F846
+C8FD    F847
+C8FE    F848
+FA40    E000
+FA41    E001
+FA42    E002
+FA43    E003
+FA44    E004
+FA45    E005
+FA46    E006
+FA47    E007
+FA48    E008
+FA49    E009
+FA4A    E00A
+FA4B    E00B
+FA4C    E00C
+FA4D    E00D
+FA4E    E00E
+FA4F    E00F
+FA50    E010
+FA51    E011
+FA52    E012
+FA53    E013
+FA54    E014
+FA55    E015
+FA56    E016
+FA57    E017
+FA58    E018
+FA59    E019
+FA5A    E01A
+FA5B    E01B
+FA5C    E01C
+FA5D    E01D
+FA5E    E01E
+FA60    E020
+FA61    E021
+FA62    E022
+FA63    E023
+FA64    E024
+FA65    E025
+FA67    E027
+FA68    E028
+FA69    E029
+FA6A    E02A
+FA6B    E02B
+FA6C    E02C
+FA6D    E02D
+FA6E    E02E
+FA6F    E02F
+FA70    E030
+FA71    E031
+FA72    E032
+FA73    E033
+FA74    E034
+FA75    E035
+FA76    E036
+FA77    E037
+FA78    E038
+FA79    E039
+FA7A    E03A
+FA7B    E03B
+FA7C    E03C
+FA7D    E03D
+FA7E    E03E
+FAA1    E03F
+FAA2    E040
+FAA3    E041
+FAA4    E042
+FAA5    E043
+FAA6    E044
+FAA7    E045
+FAA8    E046
+FAA9    E047
+FAAA    E048
+FAAB    E049
+FAAC    E04A
+FAAD    E04B
+FAAE    E04C
+FAAF    E04D
+FAB0    E04E
+FAB1    E04F
+FAB2    E050
+FAB3    E051
+FAB4    E052
+FAB5    E053
+FAB6    E054
+FAB7    E055
+FAB8    E056
+FAB9    E057
+FABA    E058
+FABB    E059
+FABC    E05A
+FABE    E05C
+FABF    E05D
+FAC0    E05E
+FAC1    E05F
+FAC2    E060
+FAC3    E061
+FAC4    E062
+FAC6    E064
+FAC7    E065
+FAC8    E066
+FAC9    E067
+FACA    E068
+FACB    E069
+FACC    E06A
+FACD    E06B
+FACE    E06C
+FACF    E06D
+FAD0    E06E
+FAD1    E06F
+FAD2    E070
+FAD3    E071
+FAD4    E072
+FAD6    E074
+FAD7    E075
+FAD8    E076
+FAD9    E077
+FADA    E078
+FADB    E079
+FADC    E07A
+FADD    E07B
+FADE    E07C
+FADF    E07D
+FAE0    E07E
+FAE1    E07F
+FAE2    E080
+FAE3    E081
+FAE4    E082
+FAE5    E083
+FAE6    E084
+FAE7    E085
+FAE8    E086
+FAE9    E087
+FAEA    E088
+FAEB    E089
+FAEC    E08A
+FAED    E08B
+FAEE    E08C
+FAEF    E08D
+FAF0    E08E
+FAF1    E08F
+FAF2    E090
+FAF3    E091
+FAF4    E092
+FAF5    E093
+FAF6    E094
+FAF7    E095
+FAF8    E096
+FAF9    E097
+FAFA    E098
+FAFB    E099
+FAFC    E09A
+FAFD    E09B
+FAFE    E09C
+FB40    E09D
+FB41    E09E
+FB42    E09F
+FB43    E0A0
+FB44    E0A1
+FB45    E0A2
+FB46    E0A3
+FB47    E0A4
+FB49    E0A6
+FB4A    E0A7
+FB4B    E0A8
+FB4C    E0A9
+FB4D    E0AA
+FB4E    E0AB
+FB4F    E0AC
+FB50    E0AD
+FB51    E0AE
+FB52    E0AF
+FB53    E0B0
+FB54    E0B1
+FB55    E0B2
+FB56    E0B3
+FB57    E0B4
+FB58    E0B5
+FB59    E0B6
+FB5A    E0B7
+FB5B    E0B8
+FB5C    E0B9
+FB5D    E0BA
+FB5E    E0BB
+FB5F    E0BC
+FB60    E0BD
+FB61    E0BE
+FB62    E0BF
+FB63    E0C0
+FB64    E0C1
+FB65    E0C2
+FB66    E0C3
+FB67    E0C4
+FB68    E0C5
+FB69    E0C6
+FB6A    E0C7
+FB6B    E0C8
+FB6C    E0C9
+FB6D    E0CA
+FB6E    E0CB
+FB6F    E0CC
+FB70    E0CD
+FB71    E0CE
+FB72    E0CF
+FB73    E0D0
+FB74    E0D1
+FB75    E0D2
+FB76    E0D3
+FB77    E0D4
+FB78    E0D5
+FB79    E0D6
+FB7A    E0D7
+FB7B    E0D8
+FB7C    E0D9
+FB7D    E0DA
+FB7E    E0DB
+FBA1    E0DC
+FBA2    E0DD
+FBA3    E0DE
+FBA4    E0DF
+FBA5    E0E0
+FBA6    E0E1
+FBA7    E0E2
+FBA8    E0E3
+FBA9    E0E4
+FBAA    E0E5
+FBAB    E0E6
+FBAC    E0E7
+FBAD    E0E8
+FBAE    E0E9
+FBAF    E0EA
+FBB0    E0EB
+FBB1    E0EC
+FBB2    E0ED
+FBB3    E0EE
+FBB4    E0EF
+FBB5    E0F0
+FBB6    E0F1
+FBB7    E0F2
+FBB9    E0F4
+FBBA    E0F5
+FBBB    E0F6
+FBBC    E0F7
+FBBD    E0F8
+FBBE    E0F9
+FBBF    E0FA
+FBC0    E0FB
+FBC1    E0FC
+FBC2    E0FD
+FBC3    E0FE
+FBC4    E0FF
+FBC5    E100
+FBC6    E101
+FBC7    E102
+FBC8    E103
+FBC9    E104
+FBCA    E105
+FBCB    E106
+FBCC    E107
+FBCD    E108
+FBCE    E109
+FBCF    E10A
+FBD0    E10B
+FBD1    E10C
+FBD2    E10D
+FBD3    E10E
+FBD4    E10F
+FBD5    E110
+FBD6    E111
+FBD7    E112
+FBD8    E113
+FBD9    E114
+FBDA    E115
+FBDB    E116
+FBDC    E117
+FBDD    E118
+FBDE    E119
+FBDF    E11A
+FBE0    E11B
+FBE1    E11C
+FBE2    E11D
+FBE3    E11E
+FBE4    E11F
+FBE5    E120
+FBE6    E121
+FBE7    E122
+FBE8    E123
+FBE9    E124
+FBEA    E125
+FBEB    E126
+FBEC    E127
+FBED    E128
+FBEE    E129
+FBEF    E12A
+FBF0    E12B
+FBF1    E12C
+FBF2    E12D
+FBF4    E12F
+FBF5    E130
+FBF6    E131
+FBF7    E132
+FBF8    E133
+FBFA    E135
+FBFB    E136
+FBFC    E137
+FBFD    E138
+FBFE    E139
+FC40    E13A
+FC41    E13B
+FC42    E13C
+FC43    E13D
+FC44    E13E
+FC45    E13F
+FC46    E140
+FC47    E141
+FC48    E142
+FC49    E143
+FC4A    E144
+FC4B    E145
+FC4C    E146
+FC4D    E147
+FC4E    E148
+FC50    E14A
+FC51    E14B
+FC52    E14C
+FC53    E14D
+FC54    E14E
+FC55    E14F
+FC56    E150
+FC57    E151
+FC58    E152
+FC59    E153
+FC5A    E154
+FC5B    E155
+FC5C    E156
+FC5D    E157
+FC5E    E158
+FC5F    E159
+FC60    E15A
+FC61    E15B
+FC62    E15C
+FC63    E15D
+FC64    E15E
+FC65    E15F
+FC66    E160
+FC67    E161
+FC68    E162
+FC69    E163
+FC6A    E164
+FC6B    E165
+FC6D    E167
+FC6E    E168
+FC6F    E169
+FC70    E16A
+FC71    E16B
+FC72    E16C
+FC73    E16D
+FC74    E16E
+FC75    E16F
+FC76    E170
+FC77    E171
+FC78    E172
+FC79    E173
+FC7A    E174
+FC7B    E175
+FC7C    E176
+FC7D    E177
+FC7E    E178
+FCA1    E179
+FCA2    E17A
+FCA3    E17B
+FCA4    E17C
+FCA5    E17D
+FCA6    E17E
+FCA7    E17F
+FCA8    E180
+FCA9    E181
+FCAA    E182
+FCAB    E183
+FCAC    E184
+FCAD    E185
+FCAE    E186
+FCAF    E187
+FCB0    E188
+FCB1    E189
+FCB2    E18A
+FCB3    E18B
+FCB4    E18C
+FCB5    E18D
+FCB6    E18E
+FCB7    E18F
+FCB8    E190
+FCBA    E192
+FCBB    E193
+FCBC    E194
+FCBD    E195
+FCBE    E196
+FCBF    E197
+FCC0    E198
+FCC1    E199
+FCC2    E19A
+FCC3    E19B
+FCC4    E19C
+FCC5    E19D
+FCC6    E19E
+FCC7    E19F
+FCC8    E1A0
+FCC9    E1A1
+FCCA    E1A2
+FCCB    E1A3
+FCCC    E1A4
+FCCD    E1A5
+FCCE    E1A6
+FCCF    E1A7
+FCD0    E1A8
+FCD1    E1A9
+FCD2    E1AA
+FCD3    E1AB
+FCD4    E1AC
+FCD5    E1AD
+FCD6    E1AE
+FCD7    E1AF
+FCD8    E1B0
+FCD9    E1B1
+FCDA    E1B2
+FCDB    E1B3
+FCDC    E1B4
+FCDD    E1B5
+FCDE    E1B6
+FCDF    E1B7
+FCE0    E1B8
+FCE1    E1B9
+FCE3    E1BB
+FCE4    E1BC
+FCE5    E1BD
+FCE6    E1BE
+FCE7    E1BF
+FCE8    E1C0
+FCE9    E1C1
+FCEA    E1C2
+FCEB    E1C3
+FCEC    E1C4
+FCED    E1C5
+FCEE    E1C6
+FCEF    E1C7
+FCF0    E1C8
+FCF2    E1CA
+FCF3    E1CB
+FCF4    E1CC
+FCF5    E1CD
+FCF6    E1CE
+FCF7    E1CF
+FCF8    E1D0
+FCF9    E1D1
+FCFA    E1D2
+FCFB    E1D3
+FCFC    E1D4
+FCFD    E1D5
+FCFE    E1D6
+FD40    E1D7
+FD41    E1D8
+FD42    E1D9
+FD43    E1DA
+FD44    E1DB
+FD45    E1DC
+FD46    E1DD
+FD47    E1DE
+FD48    E1DF
+FD49    E1E0
+FD4A    E1E1
+FD4B    E1E2
+FD4C    E1E3
+FD4D    E1E4
+FD4E    E1E5
+FD4F    E1E6
+FD50    E1E7
+FD51    E1E8
+FD52    E1E9
+FD53    E1EA
+FD54    E1EB
+FD55    E1EC
+FD56    E1ED
+FD57    E1EE
+FD58    E1EF
+FD59    E1F0
+FD5A    E1F1
+FD5B    E1F2
+FD5C    E1F3
+FD5D    E1F4
+FD5E    E1F5
+FD5F    E1F6
+FD60    E1F7
+FD61    E1F8
+FD62    E1F9
+FD63    E1FA
+FD64    E1FB
+FD65    E1FC
+FD66    E1FD
+FD67    E1FE
+FD68    E1FF
+FD69    E200
+FD6A    E201
+FD6B    E202
+FD6C    E203
+FD6D    E204
+FD6E    E205
+FD6F    E206
+FD70    E207
+FD71    E208
+FD72    E209
+FD73    E20A
+FD74    E20B
+FD75    E20C
+FD76    E20D
+FD77    E20E
+FD78    E20F
+FD79    E210
+FD7A    E211
+FD7B    E212
+FD7C    E213
+FD7D    E214
+FD7E    E215
+FDA1    E216
+FDA2    E217
+FDA3    E218
+FDA4    E219
+FDA5    E21A
+FDA6    E21B
+FDA7    E21C
+FDA8    E21D
+FDA9    E21E
+FDAA    E21F
+FDAB    E220
+FDAC    E221
+FDAD    E222
+FDAE    E223
+FDAF    E224
+FDB0    E225
+FDB1    E226
+FDB2    E227
+FDB3    E228
+FDB4    E229
+FDB5    E22A
+FDB6    E22B
+FDB9    E22E
+FDBA    E22F
+FDBC    E231
+FDBD    E232
+FDBE    E233
+FDBF    E234
+FDC0    E235
+FDC1    E236
+FDC2    E237
+FDC3    E238
+FDC4    E239
+FDC5    E23A
+FDC6    E23B
+FDC7    E23C
+FDC8    E23D
+FDC9    E23E
+FDCA    E23F
+FDCB    E240
+FDCC    E241
+FDCD    E242
+FDCE    E243
+FDCF    E244
+FDD0    E245
+FDD1    E246
+FDD2    E247
+FDD3    E248
+FDD4    E249
+FDD5    E24A
+FDD6    E24B
+FDD7    E24C
+FDD8    E24D
+FDD9    E24E
+FDDA    E24F
+FDDB    E250
+FDDC    E251
+FDDD    E252
+FDDE    E253
+FDDF    E254
+FDE0    E255
+FDE1    E256
+FDE2    E257
+FDE3    E258
+FDE4    E259
+FDE5    E25A
+FDE6    E25B
+FDE7    E25C
+FDE8    E25D
+FDE9    E25E
+FDEA    E25F
+FDEB    E260
+FDEC    E261
+FDED    E262
+FDEE    E263
+FDEF    E264
+FDF0    E265
+FDF2    E267
+FDF3    E268
+FDF4    E269
+FDF5    E26A
+FDF6    E26B
+FDF7    E26C
+FDF8    E26D
+FDF9    E26E
+FDFA    E26F
+FDFB    E270
+FDFC    E271
+FDFD    E272
+FDFE    E273
+FE40    E274
+FE41    E275
+FE42    E276
+FE43    E277
+FE44    E278
+FE45    E279
+FE46    E27A
+FE47    E27B
+FE48    E27C
+FE49    E27D
+FE4A    E27E
+FE4B    E27F
+FE4C    E280
+FE4D    E281
+FE4E    E282
+FE4F    E283
+FE50    E284
+FE51    E285
+FE53    E287
+FE54    E288
+FE55    E289
+FE56    E28A
+FE57    E28B
+FE58    E28C
+FE59    E28D
+FE5A    E28E
+FE5B    E28F
+FE5C    E290
+FE5D    E291
+FE5E    E292
+FE5F    E293
+FE60    E294
+FE61    E295
+FE62    E296
+FE63    E297
+FE64    E298
+FE65    E299
+FE66    E29A
+FE67    E29B
+FE68    E29C
+FE69    E29D
+FE6A    E29E
+FE6B    E29F
+FE6C    E2A0
+FE6D    E2A1
+FE6E    E2A2
+FE70    E2A4
+FE71    E2A5
+FE72    E2A6
+FE73    E2A7
+FE74    E2A8
+FE75    E2A9
+FE76    E2AA
+FE77    E2AB
+FE78    E2AC
+FE79    E2AD
+FE7A    E2AE
+FE7B    E2AF
+FE7C    E2B0
+FE7D    E2B1
+FE7E    E2B2
+FEA1    E2B3
+FEA2    E2B4
+FEA3    E2B5
+FEA4    E2B6
+FEA5    E2B7
+FEA6    E2B8
+FEA7    E2B9
+FEA8    E2BA
+FEA9    E2BB
+FEAB    E2BD
+FEAC    E2BE
+FEAD    E2BF
+FEAE    E2C0
+FEAF    E2C1
+FEB0    E2C2
+FEB1    E2C3
+FEB2    E2C4
+FEB3    E2C5
+FEB4    E2C6
+FEB5    E2C7
+FEB6    E2C8
+FEB7    E2C9
+FEB8    E2CA
+FEB9    E2CB
+FEBA    E2CC
+FEBB    E2CD
+FEBC    E2CE
+FEBD    E2CF
+FEBE    E2D0
+FEBF    E2D1
+FEC0    E2D2
+FEC1    E2D3
+FEC2    E2D4
+FEC3    E2D5
+FEC4    E2D6
+FEC5    E2D7
+FEC6    E2D8
+FEC7    E2D9
+FEC8    E2DA
+FEC9    E2DB
+FECA    E2DC
+FECB    E2DD
+FECC    E2DE
+FECD    E2DF
+FECE    E2E0
+FECF    E2E1
+FED0    E2E2
+FED1    E2E3
+FED2    E2E4
+FED3    E2E5
+FED4    E2E6
+FED5    E2E7
+FED6    E2E8
+FED7    E2E9
+FED8    E2EA
+FED9    E2EB
+FEDA    E2EC
+FEDB    E2ED
+FEDC    E2EE
+FEDE    E2F0
+FEDF    E2F1
+FEE0    E2F2
+FEE1    E2F3
+FEE2    E2F4
+FEE3    E2F5
+FEE4    E2F6
+FEE5    E2F7
+FEE6    E2F8
+FEE7    E2F9
+FEE8    E2FA
+FEE9    E2FB
+FEEA    E2FC
+FEEB    E2FD
+FEEC    E2FE
+FEED    E2FF
+FEEE    E300
+FEEF    E301
+FEF0    E302
+FEF1    E303
+FEF2    E304
+FEF3    E305
+FEF4    E306
+FEF5    E307
+FEF6    E308
+FEF7    E309
+FEF8    E30A
+FEF9    E30B
+FEFA    E30C
+FEFB    E30D
+FEFC    E30E
+FEFD    E30F
+FEFE    E310
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/HKSCS2008.map	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,5019 @@
+#
+#  http://www.ogcio.gov.hk/ccli/eng/hskcs/mapping_table_2008.html
+#
+#  commnent out following entries
+#
+#  88A3  <00EA,0304>
+#  88A5  <00EA,030C>
+#  8862  <00CA,0304>
+#  8864  <00CA,030C>
+#
+8740         43F0
+8741         4C32
+8742         4603
+8743         45A6
+8744         4578
+8745        27267
+8746         4D77
+8747         45B3
+8748        27CB1
+8749         4CE2
+874A        27CC5
+874B         3B95
+874C         4736
+874D         4744
+874E         4C47
+874F         4C40
+8750        242BF
+8751        23617
+8752        27352
+8753        26E8B
+8754        270D2
+8755         4C57
+8756        2A351
+8757         474F
+8758         45DA
+8759         4C85
+875A        27C6C
+875B         4D07
+875C         4AA4
+875D         46A1
+875E        26B23
+875F         7225
+8760        25A54
+8761        21A63
+8762        23E06
+8763        23F61
+8764         664D
+8765         56FB
+8767         7D95
+8768         591D
+8769        28BB9
+876A         3DF4
+876B         9734
+876C        27BEF
+876D         5BDB
+876E        21D5E
+876F         5AA4
+8770         3625
+8771        29EB0
+8772         5AD1
+8773         5BB7
+8774         5CFC
+8775         676E
+8776         8593
+8777        29945
+8778         7461
+8779         749D
+877A         3875
+877B        21D53
+877C        2369E
+877D        26021
+877E         3EEC
+87A1        258DE
+87A2         3AF5
+87A3         7AFC
+87A4         9F97
+87A5        24161
+87A6        2890D
+87A7        231EA
+87A8        20A8A
+87A9        2325E
+87AA         430A
+87AB         8484
+87AC         9F96
+87AD         942F
+87AE         4930
+87AF         8613
+87B0         5896
+87B1         974A
+87B2         9218
+87B3         79D0
+87B4         7A32
+87B5         6660
+87B6         6A29
+87B7         889D
+87B8         744C
+87B9         7BC5
+87BA         6782
+87BB         7A2C
+87BC         524F
+87BD         9046
+87BE         34E6
+87BF         73C4
+87C0        25DB9
+87C1         74C6
+87C2         9FC7
+87C3         57B3
+87C4         492F
+87C5         544C
+87C6         4131
+87C7        2368E
+87C8         5818
+87C9         7A72
+87CA        27B65
+87CB         8B8F
+87CC         46AE
+87CD        26E88
+87CE         4181
+87CF        25D99
+87D0         7BAE
+87D1        224BC
+87D2         9FC8
+87D3        224C1
+87D4        224C9
+87D5        224CC
+87D6         9FC9
+87D7         8504
+87D8        235BB
+87D9         40B4
+87DA         9FCA
+87DB         44E1
+87DC        2ADFF
+87DD         62C1
+87DE         706E
+87DF         9FCB
+8840         31C0
+8841         31C1
+8842         31C2
+8843         31C3
+8844         31C4
+8845        2010C
+8846         31C5
+8847        200D1
+8848        200CD
+8849         31C6
+884A         31C7
+884B        200CB
+884C        21FE8
+884D         31C8
+884E        200CA
+884F         31C9
+8850         31CA
+8851         31CB
+8852         31CC
+8853        2010E
+8854         31CD
+8855         31CE
+8856         0100
+8857         00C1
+8858         01CD
+8859         00C0
+885A         0112
+885B         00C9
+885C         011A
+885D         00C8
+885E         014C
+885F         00D3
+8860         01D1
+8861         00D2
+#8862  <00CA,0304>
+8863         1EBE
+#8864  <00CA,030C>
+8865         1EC0
+8866         00CA
+8867         0101
+8868         00E1
+8869         01CE
+886A         00E0
+886B         0251
+886C         0113
+886D         00E9
+886E         011B
+886F         00E8
+8870         012B
+8871         00ED
+8872         01D0
+8873         00EC
+8874         014D
+8875         00F3
+8876         01D2
+8877         00F2
+8878         016B
+8879         00FA
+887A         01D4
+887B         00F9
+887C         01D6
+887D         01D8
+887E         01DA
+88A1         01DC
+88A2         00FC
+#88A3  <00EA,0304>
+88A4         1EBF
+#88A5  <00EA,030C>
+88A6         1EC1
+88A7         00EA
+88A8         0261
+88A9         23DA
+88AA         23DB
+8940        2A3A9
+8941        21145
+8943         650A
+8946         4E3D
+8947         6EDD
+8948         9D4E
+8949         91DF
+894C        27735
+894D         6491
+894E         4F1A
+894F         4F28
+8950         4FA8
+8951         5156
+8952         5174
+8953         519C
+8954         51E4
+8955         52A1
+8956         52A8
+8957         533B
+8958         534E
+8959         53D1
+895A         53D8
+895B         56E2
+895C         58F0
+895D         5904
+895E         5907
+895F         5932
+8960         5934
+8961         5B66
+8962         5B9E
+8963         5B9F
+8964         5C9A
+8965         5E86
+8966         603B
+8967         6589
+8968         67FE
+8969         6804
+896A         6865
+896B         6D4E
+896C         70BC
+896D         7535
+896E         7EA4
+896F         7EAC
+8970         7EBA
+8971         7EC7
+8972         7ECF
+8973         7EDF
+8974         7F06
+8975         7F37
+8976         827A
+8977         82CF
+8978         836F
+8979         89C6
+897A         8BBE
+897B         8BE2
+897C         8F66
+897D         8F67
+897E         8F6E
+89A1         7411
+89A2         7CFC
+89A3         7DCD
+89A4         6946
+89A5         7AC9
+89A6         5227
+89AB         918C
+89AC         78B8
+89AD         915E
+89AE         80BC
+89B0         8D0B
+89B1         80F6
+89B2        209E7
+89B5         809F
+89B6         9EC7
+89B7         4CCD
+89B8         9DC9
+89B9         9E0C
+89BA         4C3E
+89BB        29DF6
+89BC        2700E
+89BD         9E0A
+89BE        2A133
+89BF         35C1
+89C1         6E9A
+89C2         823E
+89C3         7519
+89C5         4911
+89C6         9A6C
+89C7         9A8F
+89C8         9F99
+89C9         7987
+89CA        2846C
+89CB        21DCA
+89CC        205D0
+89CD        22AE6
+89CE         4E24
+89CF         4E81
+89D0         4E80
+89D1         4E87
+89D2         4EBF
+89D3         4EEB
+89D4         4F37
+89D5         344C
+89D6         4FBD
+89D7         3E48
+89D8         5003
+89D9         5088
+89DA         347D
+89DB         3493
+89DC         34A5
+89DD         5186
+89DE         5905
+89DF         51DB
+89E0         51FC
+89E1         5205
+89E2         4E89
+89E3         5279
+89E4         5290
+89E5         5327
+89E6         35C7
+89E7         53A9
+89E8         3551
+89E9         53B0
+89EA         3553
+89EB         53C2
+89EC         5423
+89ED         356D
+89EE         3572
+89EF         3681
+89F0         5493
+89F1         54A3
+89F2         54B4
+89F3         54B9
+89F4         54D0
+89F5         54EF
+89F6         5518
+89F7         5523
+89F8         5528
+89F9         3598
+89FA         553F
+89FB         35A5
+89FC         35BF
+89FD         55D7
+89FE         35C5
+8A40        27D84
+8A41         5525
+8A43        20C42
+8A44        20D15
+8A45        2512B
+8A46         5590
+8A47        22CC6
+8A48         39EC
+8A49        20341
+8A4A         8E46
+8A4B        24DB8
+8A4C        294E5
+8A4D         4053
+8A4E        280BE
+8A4F         777A
+8A50        22C38
+8A51         3A34
+8A52         47D5
+8A53        2815D
+8A54        269F2
+8A55        24DEA
+8A56         64DD
+8A57        20D7C
+8A58        20FB4
+8A59        20CD5
+8A5A        210F4
+8A5B         648D
+8A5C         8E7E
+8A5D        20E96
+8A5E        20C0B
+8A5F        20F64
+8A60        22CA9
+8A61        28256
+8A62        244D3
+8A64        20D46
+8A65        29A4D
+8A66        280E9
+8A67         47F4
+8A68        24EA7
+8A69        22CC2
+8A6A         9AB2
+8A6B         3A67
+8A6C        295F4
+8A6D         3FED
+8A6E         3506
+8A6F        252C7
+8A70        297D4
+8A71        278C8
+8A72        22D44
+8A73         9D6E
+8A74         9815
+8A76         43D9
+8A77        260A5
+8A78         64B4
+8A79         54E3
+8A7A        22D4C
+8A7B        22BCA
+8A7C        21077
+8A7D         39FB
+8A7E        2106F
+8AA1        266DA
+8AA2        26716
+8AA3        279A0
+8AA4         64EA
+8AA5        25052
+8AA6        20C43
+8AA7         8E68
+8AA8        221A1
+8AA9        28B4C
+8AAA        20731
+8AAC         480B
+8AAD        201A9
+8AAE         3FFA
+8AAF         5873
+8AB0        22D8D
+8AB2        245C8
+8AB3        204FC
+8AB4        26097
+8AB5        20F4C
+8AB6        20D96
+8AB7         5579
+8AB8         40BB
+8AB9         43BA
+8ABB         4AB4
+8ABC        22A66
+8ABD        2109D
+8ABE         81AA
+8ABF         98F5
+8AC0        20D9C
+8AC1         6379
+8AC2         39FE
+8AC3        22775
+8AC4         8DC0
+8AC5         56A1
+8AC6         647C
+8AC7         3E43
+8AC9        2A601
+8ACA        20E09
+8ACB        22ACF
+8ACC        22CC9
+8ACE        210C8
+8ACF        239C2
+8AD0         3992
+8AD1         3A06
+8AD2        2829B
+8AD3         3578
+8AD4        25E49
+8AD5        220C7
+8AD6         5652
+8AD7        20F31
+8AD8        22CB2
+8AD9        29720
+8ADA         34BC
+8ADB         6C3D
+8ADC        24E3B
+8ADF        27574
+8AE0        22E8B
+8AE1        22208
+8AE2        2A65B
+8AE3        28CCD
+8AE4        20E7A
+8AE5        20C34
+8AE6        2681C
+8AE7         7F93
+8AE8        210CF
+8AE9        22803
+8AEA        22939
+8AEB         35FB
+8AEC        251E3
+8AED        20E8C
+8AEE        20F8D
+8AEF        20EAA
+8AF0         3F93
+8AF1        20F30
+8AF2        20D47
+8AF3        2114F
+8AF4        20E4C
+8AF6        20EAB
+8AF7        20BA9
+8AF8        20D48
+8AF9        210C0
+8AFA        2113D
+8AFB         3FF9
+8AFC        22696
+8AFD         6432
+8AFE        20FAD
+8B40        233F4
+8B41        27639
+8B42        22BCE
+8B43        20D7E
+8B44        20D7F
+8B45        22C51
+8B46        22C55
+8B47         3A18
+8B48        20E98
+8B49        210C7
+8B4A        20F2E
+8B4B        2A632
+8B4C        26B50
+8B4D        28CD2
+8B4E        28D99
+8B4F        28CCA
+8B50         95AA
+8B51         54CC
+8B52         82C4
+8B53         55B9
+8B55        29EC3
+8B56         9C26
+8B57         9AB6
+8B58        2775E
+8B59        22DEE
+8B5A         7140
+8B5B         816D
+8B5C         80EC
+8B5D         5C1C
+8B5E        26572
+8B5F         8134
+8B60         3797
+8B61         535F
+8B62        280BD
+8B63         91B6
+8B64        20EFA
+8B65        20E0F
+8B66        20E77
+8B67        20EFB
+8B68         35DD
+8B69        24DEB
+8B6A         3609
+8B6B        20CD6
+8B6C         56AF
+8B6D        227B5
+8B6E        210C9
+8B6F        20E10
+8B70        20E78
+8B71        21078
+8B72        21148
+8B73        28207
+8B74        21455
+8B75        20E79
+8B76        24E50
+8B77        22DA4
+8B78         5A54
+8B79        2101D
+8B7A        2101E
+8B7B        210F5
+8B7C        210F6
+8B7D         579C
+8B7E        20E11
+8BA1        27694
+8BA2        282CD
+8BA3        20FB5
+8BA4        20E7B
+8BA5        2517E
+8BA6         3703
+8BA7        20FB6
+8BA8        21180
+8BA9        252D8
+8BAA        2A2BD
+8BAB        249DA
+8BAC        2183A
+8BAD        24177
+8BAE        2827C
+8BAF         5899
+8BB0         5268
+8BB1         361A
+8BB2        2573D
+8BB3         7BB2
+8BB4         5B68
+8BB5         4800
+8BB6         4B2C
+8BB7         9F27
+8BB8         49E7
+8BB9         9C1F
+8BBA         9B8D
+8BBB        25B74
+8BBC        2313D
+8BBD         55FB
+8BBE         35F2
+8BBF         5689
+8BC0         4E28
+8BC1         5902
+8BC2        21BC1
+8BC3        2F878
+8BC4         9751
+8BC5        20086
+8BC6         4E5B
+8BC7         4EBB
+8BC8         353E
+8BC9         5C23
+8BCA         5F51
+8BCB         5FC4
+8BCC         38FA
+8BCD         624C
+8BCE         6535
+8BCF         6B7A
+8BD0         6C35
+8BD1         6C3A
+8BD2         706C
+8BD3         722B
+8BD4         4E2C
+8BD5         72AD
+8BD6        248E9
+8BD7         7F52
+8BD8         793B
+8BD9         7CF9
+8BDA         7F53
+8BDB        2626A
+8BDC         34C1
+8BDE        2634B
+8BDF         8002
+8BE0         8080
+8BE1        26612
+8BE2        26951
+8BE3         535D
+8BE4         8864
+8BE5         89C1
+8BE6        278B2
+8BE7         8BA0
+8BE8         8D1D
+8BE9         9485
+8BEA         9578
+8BEB         957F
+8BEC         95E8
+8BED        28E0F
+8BEE         97E6
+8BEF         9875
+8BF0         98CE
+8BF1         98DE
+8BF2         9963
+8BF3        29810
+8BF4         9C7C
+8BF5         9E1F
+8BF6         9EC4
+8BF7         6B6F
+8BF8         F907
+8BF9         4E37
+8BFA        20087
+8BFB         961D
+8BFC         6237
+8BFD         94A2
+8C40         503B
+8C41         6DFE
+8C42        29C73
+8C43         9FA6
+8C44         3DC9
+8C45         888F
+8C46        2414E
+8C47         7077
+8C48         5CF5
+8C49         4B20
+8C4A        251CD
+8C4B         3559
+8C4C        25D30
+8C4D         6122
+8C4E        28A32
+8C4F         8FA7
+8C50         91F6
+8C51         7191
+8C52         6719
+8C53         73BA
+8C54        23281
+8C55        2A107
+8C56         3C8B
+8C57        21980
+8C58         4B10
+8C59         78E4
+8C5A         7402
+8C5B         51AE
+8C5C        2870F
+8C5D         4009
+8C5E         6A63
+8C5F        2A2BA
+8C60         4223
+8C61         860F
+8C62        20A6F
+8C63         7A2A
+8C64        29947
+8C65        28AEA
+8C66         9755
+8C67         704D
+8C68         5324
+8C69        2207E
+8C6A         93F4
+8C6B         76D9
+8C6C        289E3
+8C6D         9FA7
+8C6E         77DD
+8C6F         4EA3
+8C70         4FF0
+8C71         50BC
+8C72         4E2F
+8C73         4F17
+8C74         9FA8
+8C75         5434
+8C76         7D8B
+8C77         5892
+8C78         58D0
+8C79        21DB6
+8C7A         5E92
+8C7B         5E99
+8C7C         5FC2
+8C7D        22712
+8C7E         658B
+8CA1        233F9
+8CA2         6919
+8CA3         6A43
+8CA4        23C63
+8CA5         6CFF
+8CA7         7200
+8CA8        24505
+8CA9         738C
+8CAA         3EDB
+8CAB        24A13
+8CAC         5B15
+8CAD         74B9
+8CAE         8B83
+8CAF        25CA4
+8CB0        25695
+8CB1         7A93
+8CB2         7BEC
+8CB3         7CC3
+8CB4         7E6C
+8CB5         82F8
+8CB6         8597
+8CB7         9FA9
+8CB8         8890
+8CB9         9FAA
+8CBA         8EB9
+8CBB         9FAB
+8CBC         8FCF
+8CBD         855F
+8CBE         99E0
+8CBF         9221
+8CC0         9FAC
+8CC1        28DB9
+8CC2        2143F
+8CC3         4071
+8CC4         42A2
+8CC5         5A1A
+8CC9         9868
+8CCA         676B
+8CCB         4276
+8CCC         573D
+8CCE         85D6
+8CCF        2497B
+8CD0         82BF
+8CD1        2710D
+8CD2         4C81
+8CD3        26D74
+8CD4         5D7B
+8CD5        26B15
+8CD6        26FBE
+8CD7         9FAD
+8CD8         9FAE
+8CD9         5B96
+8CDA         9FAF
+8CDB         66E7
+8CDC         7E5B
+8CDD         6E57
+8CDE         79CA
+8CDF         3D88
+8CE0         44C3
+8CE1        23256
+8CE2        22796
+8CE3         439A
+8CE4         4536
+8CE6         5CD5
+8CE7        23B1A
+8CE8         8AF9
+8CE9         5C78
+8CEA         3D12
+8CEB        23551
+8CEC         5D78
+8CED         9FB2
+8CEE         7157
+8CEF         4558
+8CF0        240EC
+8CF1        21E23
+8CF2         4C77
+8CF3         3978
+8CF4         344A
+8CF5        201A4
+8CF6        26C41
+8CF7         8ACC
+8CF8         4FB4
+8CF9        20239
+8CFA         59BF
+8CFB         816C
+8CFC         9856
+8CFD        298FA
+8CFE         5F3B
+8D40        20B9F
+8D42        221C1
+8D43        2896D
+8D44         4102
+8D45         46BB
+8D46        29079
+8D47         3F07
+8D48         9FB3
+8D49        2A1B5
+8D4A         40F8
+8D4B         37D6
+8D4C         46F7
+8D4D        26C46
+8D4E         417C
+8D4F        286B2
+8D50        273FF
+8D51         456D
+8D52         38D4
+8D53        2549A
+8D54         4561
+8D55         451B
+8D56         4D89
+8D57         4C7B
+8D58         4D76
+8D59         45EA
+8D5A         3FC8
+8D5B        24B0F
+8D5C         3661
+8D5D         44DE
+8D5E         44BD
+8D5F         41ED
+8D60         5D3E
+8D61         5D48
+8D62         5D56
+8D63         3DFC
+8D64         380F
+8D65         5DA4
+8D66         5DB9
+8D67         3820
+8D68         3838
+8D69         5E42
+8D6A         5EBD
+8D6B         5F25
+8D6C         5F83
+8D6D         3908
+8D6E         3914
+8D6F         393F
+8D70         394D
+8D71         60D7
+8D72         613D
+8D73         5CE5
+8D74         3989
+8D75         61B7
+8D76         61B9
+8D77         61CF
+8D78         39B8
+8D79         622C
+8D7A         6290
+8D7B         62E5
+8D7C         6318
+8D7D         39F8
+8D7E         56B1
+8DA1         3A03
+8DA2         63E2
+8DA3         63FB
+8DA4         6407
+8DA5         645A
+8DA6         3A4B
+8DA7         64C0
+8DA8         5D15
+8DA9         5621
+8DAA         9F9F
+8DAB         3A97
+8DAC         6586
+8DAD         3ABD
+8DAE         65FF
+8DAF         6653
+8DB0         3AF2
+8DB1         6692
+8DB2         3B22
+8DB3         6716
+8DB4         3B42
+8DB5         67A4
+8DB6         6800
+8DB7         3B58
+8DB8         684A
+8DB9         6884
+8DBA         3B72
+8DBB         3B71
+8DBC         3B7B
+8DBD         6909
+8DBE         6943
+8DBF         725C
+8DC0         6964
+8DC1         699F
+8DC2         6985
+8DC3         3BBC
+8DC4         69D6
+8DC5         3BDD
+8DC6         6A65
+8DC7         6A74
+8DC8         6A71
+8DC9         6A82
+8DCA         3BEC
+8DCB         6A99
+8DCC         3BF2
+8DCD         6AAB
+8DCE         6AB5
+8DCF         6AD4
+8DD0         6AF6
+8DD1         6B81
+8DD2         6BC1
+8DD3         6BEA
+8DD4         6C75
+8DD5         6CAA
+8DD6         3CCB
+8DD7         6D02
+8DD8         6D06
+8DD9         6D26
+8DDA         6D81
+8DDB         3CEF
+8DDC         6DA4
+8DDD         6DB1
+8DDE         6E15
+8DDF         6E18
+8DE0         6E29
+8DE1         6E86
+8DE2        289C0
+8DE3         6EBB
+8DE4         6EE2
+8DE5         6EDA
+8DE6         9F7F
+8DE7         6EE8
+8DE8         6EE9
+8DE9         6F24
+8DEA         6F34
+8DEB         3D46
+8DEC        23F41
+8DED         6F81
+8DEE         6FBE
+8DEF         3D6A
+8DF0         3D75
+8DF1         71B7
+8DF2         5C99
+8DF3         3D8A
+8DF4         702C
+8DF5         3D91
+8DF6         7050
+8DF7         7054
+8DF8         706F
+8DF9         707F
+8DFA         7089
+8DFB        20325
+8DFC         43C1
+8DFD         35F1
+8DFE        20ED8
+8E40        23ED7
+8E41         57BE
+8E42        26ED3
+8E43         713E
+8E44        257E0
+8E45         364E
+8E46         69A2
+8E47        28BE9
+8E48         5B74
+8E49         7A49
+8E4A        258E1
+8E4B        294D9
+8E4C         7A65
+8E4D         7A7D
+8E4E        259AC
+8E4F         7ABB
+8E50         7AB0
+8E51         7AC2
+8E52         7AC3
+8E53         71D1
+8E54        2648D
+8E55         41CA
+8E56         7ADA
+8E57         7ADD
+8E58         7AEA
+8E59         41EF
+8E5A         54B2
+8E5B        25C01
+8E5C         7B0B
+8E5D         7B55
+8E5E         7B29
+8E5F        2530E
+8E60        25CFE
+8E61         7BA2
+8E62         7B6F
+8E63         839C
+8E64        25BB4
+8E65        26C7F
+8E66         7BD0
+8E67         8421
+8E68         7B92
+8E6A        25D20
+8E6B         3DAD
+8E6C        25C65
+8E6D         8492
+8E6E         7BFA
+8E70         7C35
+8E71        25CC1
+8E72         7C44
+8E73         7C83
+8E74        24882
+8E75         7CA6
+8E76         667D
+8E77        24578
+8E78         7CC9
+8E79         7CC7
+8E7A         7CE6
+8E7B         7C74
+8E7C         7CF3
+8E7D         7CF5
+8EA1         7E67
+8EA2         451D
+8EA3        26E44
+8EA4         7D5D
+8EA5        26ED6
+8EA6         748D
+8EA7         7D89
+8EA8         7DAB
+8EA9         7135
+8EAA         7DB3
+8EAC        24057
+8EAD        26029
+8EAE         7DE4
+8EAF         3D13
+8EB0         7DF5
+8EB1        217F9
+8EB2         7DE5
+8EB3        2836D
+8EB5        26121
+8EB6        2615A
+8EB7         7E6E
+8EB8         7E92
+8EB9         432B
+8EBA         946C
+8EBB         7E27
+8EBC         7F40
+8EBD         7F41
+8EBE         7F47
+8EBF         7936
+8EC0        262D0
+8EC1         99E1
+8EC2         7F97
+8EC3        26351
+8EC4         7FA3
+8EC5        21661
+8EC6        20068
+8EC7         455C
+8EC8        23766
+8EC9         4503
+8ECA        2833A
+8ECB         7FFA
+8ECC        26489
+8ECE         8008
+8ECF         801D
+8ED1         802F
+8ED2        2A087
+8ED3        26CC3
+8ED4         803B
+8ED5         803C
+8ED6         8061
+8ED7        22714
+8ED8         4989
+8ED9        26626
+8EDA        23DE3
+8EDB        266E8
+8EDC         6725
+8EDD         80A7
+8EDE        28A48
+8EDF         8107
+8EE0         811A
+8EE1         58B0
+8EE2        226F6
+8EE3         6C7F
+8EE4        26498
+8EE5        24FB8
+8EE6         64E7
+8EE7        2148A
+8EE8         8218
+8EE9        2185E
+8EEA         6A53
+8EEB        24A65
+8EEC        24A95
+8EED         447A
+8EEE         8229
+8EEF        20B0D
+8EF0        26A52
+8EF1        23D7E
+8EF2         4FF9
+8EF3        214FD
+8EF4         84E2
+8EF5         8362
+8EF6        26B0A
+8EF7        249A7
+8EF8        23530
+8EF9        21773
+8EFA        23DF8
+8EFB         82AA
+8EFC         691B
+8EFD        2F994
+8EFE         41DB
+8F40         854B
+8F41         82D0
+8F42         831A
+8F43        20E16
+8F44        217B4
+8F45         36C1
+8F46        2317D
+8F47        2355A
+8F48         827B
+8F49         82E2
+8F4A         8318
+8F4B        23E8B
+8F4C        26DA3
+8F4D        26B05
+8F4E        26B97
+8F4F        235CE
+8F50         3DBF
+8F51         831D
+8F52         55EC
+8F53         8385
+8F54         450B
+8F55        26DA5
+8F56         83AC
+8F58         83D3
+8F59         347E
+8F5A        26ED4
+8F5B         6A57
+8F5C         855A
+8F5D         3496
+8F5E        26E42
+8F5F        22EEF
+8F60         8458
+8F61        25BE4
+8F62         8471
+8F63         3DD3
+8F64         44E4
+8F65         6AA7
+8F66         844A
+8F67        23CB5
+8F68         7958
+8F6A        26B96
+8F6B        26E77
+8F6C        26E43
+8F6D         84DE
+8F6F         8391
+8F70         44A0
+8F71         8493
+8F72         84E4
+8F73        25C91
+8F74         4240
+8F75        25CC0
+8F76         4543
+8F77         8534
+8F78         5AF2
+8F79        26E99
+8F7A         4527
+8F7B         8573
+8F7C         4516
+8F7D         67BF
+8F7E         8616
+8FA1        28625
+8FA2        2863B
+8FA3         85C1
+8FA4        27088
+8FA5         8602
+8FA6        21582
+8FA7        270CD
+8FA8        2F9B2
+8FA9         456A
+8FAA         8628
+8FAB         3648
+8FAC        218A2
+8FAD         53F7
+8FAE        2739A
+8FAF         867E
+8FB0         8771
+8FB1        2A0F8
+8FB2         87EE
+8FB3        22C27
+8FB4         87B1
+8FB5         87DA
+8FB6         880F
+8FB7         5661
+8FB8         866C
+8FB9         6856
+8FBA         460F
+8FBB         8845
+8FBC         8846
+8FBD        275E0
+8FBE        23DB9
+8FBF        275E4
+8FC0         885E
+8FC1         889C
+8FC2         465B
+8FC3         88B4
+8FC4         88B5
+8FC5         63C1
+8FC6         88C5
+8FC7         7777
+8FC8        2770F
+8FC9         8987
+8FCA         898A
+8FCD         89A7
+8FCE         89BC
+8FCF        28A25
+8FD0         89E7
+8FD1        27924
+8FD2        27ABD
+8FD3         8A9C
+8FD4         7793
+8FD5         91FE
+8FD6         8A90
+8FD7        27A59
+8FD8         7AE9
+8FD9        27B3A
+8FDA        23F8F
+8FDB         4713
+8FDC        27B38
+8FDD         717C
+8FDE         8B0C
+8FDF         8B1F
+8FE0        25430
+8FE1        25565
+8FE2         8B3F
+8FE3         8B4C
+8FE4         8B4D
+8FE5         8AA9
+8FE6        24A7A
+8FE7         8B90
+8FE8         8B9B
+8FE9         8AAF
+8FEA        216DF
+8FEB         4615
+8FEC         884F
+8FED         8C9B
+8FEE        27D54
+8FEF        27D8F
+8FF0        2F9D4
+8FF1         3725
+8FF2        27D53
+8FF3         8CD6
+8FF4        27D98
+8FF5        27DBD
+8FF6         8D12
+8FF7         8D03
+8FF8        21910
+8FF9         8CDB
+8FFA         705C
+8FFB         8D11
+8FFC        24CC9
+8FFD         3ED0
+9040         8DA9
+9041        28002
+9042        21014
+9043        2498A
+9044         3B7C
+9045        281BC
+9046        2710C
+9047         7AE7
+9048         8EAD
+9049         8EB6
+904A         8EC3
+904B         92D4
+904C         8F19
+904D         8F2D
+904E        28365
+904F        28412
+9050         8FA5
+9051         9303
+9052        2A29F
+9053        20A50
+9054         8FB3
+9055         492A
+9056        289DE
+9057        2853D
+9058        23DBB
+9059         5EF8
+905A        23262
+905B         8FF9
+905C        2A014
+905D        286BC
+905E        28501
+905F        22325
+9060         3980
+9061        26ED7
+9062         9037
+9063        2853C
+9064        27ABE
+9065         9061
+9066        2856C
+9067        2860B
+9068         90A8
+9069        28713
+906A         90C4
+906B        286E6
+906C         90AE
+906E         9167
+906F         3AF0
+9070         91A9
+9071         91C4
+9072         7CAC
+9073        28933
+9074        21E89
+9075         920E
+9076         6C9F
+9077         9241
+9078         9262
+9079        255B9
+907B        28AC6
+907C        23C9B
+907D        28B0C
+907E        255DB
+90A1        20D31
+90A2         932C
+90A3         936B
+90A4        28AE1
+90A5        28BEB
+90A6         708F
+90A7         5AC3
+90A8        28AE2
+90A9        28AE5
+90AA         4965
+90AB         9244
+90AC        28BEC
+90AD        28C39
+90AE        28BFF
+90AF         9373
+90B0         945B
+90B1         8EBC
+90B2         9585
+90B3         95A6
+90B4         9426
+90B5         95A0
+90B6         6FF6
+90B7         42B9
+90B8        2267A
+90B9        286D8
+90BA        2127C
+90BB        23E2E
+90BC         49DF
+90BD         6C1C
+90BE         967B
+90BF         9696
+90C0         416C
+90C1         96A3
+90C2        26ED5
+90C3         61DA
+90C4         96B6
+90C5         78F5
+90C6        28AE0
+90C7         96BD
+90C8         53CC
+90C9         49A1
+90CA        26CB8
+90CB        20274
+90CC        26410
+90CD        290AF
+90CE        290E5
+90CF        24AD1
+90D0        21915
+90D1        2330A
+90D2         9731
+90D3         8642
+90D4         9736
+90D5         4A0F
+90D6         453D
+90D7         4585
+90D8        24AE9
+90D9         7075
+90DA         5B41
+90DB         971B
+90DD        291D5
+90DE         9757
+90DF         5B4A
+90E0        291EB
+90E1         975F
+90E2         9425
+90E3         50D0
+90E4        230B7
+90E5        230BC
+90E6         9789
+90E7         979F
+90E8         97B1
+90E9         97BE
+90EA         97C0
+90EB         97D2
+90EC         97E0
+90ED        2546C
+90EE         97EE
+90EF         741C
+90F0        29433
+90F2         97F5
+90F3        2941D
+90F4        2797A
+90F5         4AD1
+90F6         9834
+90F7         9833
+90F8         984B
+90F9         9866
+90FA         3B0E
+90FB        27175
+90FC         3D51
+90FD        20630
+90FE        2415C
+9140        25706
+9141         98CA
+9142         98B7
+9143         98C8
+9144         98C7
+9145         4AFF
+9146        26D27
+9147        216D3
+9148         55B0
+9149         98E1
+914A         98E6
+914B         98EC
+914C         9378
+914D         9939
+914E        24A29
+914F         4B72
+9150        29857
+9151        29905
+9152         99F5
+9153         9A0C
+9154         9A3B
+9155         9A10
+9156         9A58
+9157        25725
+9158         36C4
+9159        290B1
+915A        29BD5
+915B         9AE0
+915C         9AE2
+915D        29B05
+915E         9AF4
+915F         4C0E
+9160         9B14
+9161         9B2D
+9162        28600
+9163         5034
+9164         9B34
+9165        269A8
+9166         38C3
+9167        2307D
+9168         9B50
+9169         9B40
+916A        29D3E
+916B         5A45
+916C        21863
+916D         9B8E
+916E        2424B
+916F         9C02
+9170         9BFF
+9171         9C0C
+9172        29E68
+9173         9DD4
+9174        29FB7
+9175        2A192
+9176        2A1AB
+9177        2A0E1
+9178        2A123
+9179        2A1DF
+917A         9D7E
+917B         9D83
+917C        2A134
+917D         9E0E
+917E         6888
+91A1         9DC4
+91A2        2215B
+91A3        2A193
+91A4        2A220
+91A5        2193B
+91A6        2A233
+91A7         9D39
+91A8        2A0B9
+91A9        2A2B4
+91AA         9E90
+91AB         9E95
+91AC         9E9E
+91AD         9EA2
+91AE         4D34
+91AF         9EAA
+91B0         9EAF
+91B1        24364
+91B2         9EC1
+91B3         3B60
+91B4         39E5
+91B5         3D1D
+91B6         4F32
+91B7         37BE
+91B8        28C2B
+91B9         9F02
+91BA         9F08
+91BB         4B96
+91BC         9424
+91BD        26DA2
+91BE         9F17
+91C0         9F39
+91C1         569F
+91C2         568A
+91C3         9F45
+91C4         99B8
+91C5        2908B
+91C6         97F2
+91C7         847F
+91C8         9F62
+91C9         9F69
+91CA         7ADC
+91CB         9F8E
+91CC         7216
+91CD         4BBE
+91CE        24975
+91CF        249BB
+91D0         7177
+91D1        249F8
+91D2        24348
+91D3        24A51
+91D4         739E
+91D5        28BDA
+91D6        218FA
+91D7         799F
+91D8        2897E
+91D9        28E36
+91DA         9369
+91DB         93F3
+91DC        28A44
+91DD         92EC
+91DE         9381
+91DF         93CB
+91E0        2896C
+91E1        244B9
+91E2         7217
+91E3         3EEB
+91E4         7772
+91E5         7A43
+91E6         70D0
+91E7        24473
+91E8        243F8
+91E9         717E
+91EA        217EF
+91EB         70A3
+91EC        218BE
+91ED        23599
+91EE         3EC7
+91EF        21885
+91F0        2542F
+91F1        217F8
+91F2         3722
+91F3        216FB
+91F4        21839
+91F5         36E1
+91F6        21774
+91F7        218D1
+91F8        25F4B
+91F9         3723
+91FA        216C0
+91FB         575B
+91FC        24A25
+91FD        213FE
+91FE        212A8
+9240        213C6
+9241        214B6
+9242         8503
+9243        236A6
+9245         8455
+9246        24994
+9247        27165
+9248        23E31
+9249        2555C
+924A        23EFB
+924B        27052
+924C         44F4
+924D        236EE
+924E        2999D
+924F        26F26
+9250         67F9
+9251         3733
+9252         3C15
+9253         3DE7
+9254         586C
+9255        21922
+9256         6810
+9257         4057
+9258        2373F
+9259        240E1
+925A        2408B
+925B        2410F
+925C        26C21
+925D         54CB
+925E         569E
+925F        266B1
+9260         5692
+9261        20FDF
+9262        20BA8
+9263        20E0D
+9264         93C6
+9265        28B13
+9266         939C
+9267         4EF8
+9268         512B
+9269         3819
+926A        24436
+926B         4EBC
+926C        20465
+926D        2037F
+926E         4F4B
+926F         4F8A
+9270        25651
+9271         5A68
+9272        201AB
+9273        203CB
+9274         3999
+9275        2030A
+9276        20414
+9277         3435
+9278         4F29
+9279        202C0
+927A        28EB3
+927B        20275
+927C         8ADA
+927D        2020C
+927E         4E98
+92A1         50CD
+92A2         510D
+92A3         4FA2
+92A4         4F03
+92A5        24A0E
+92A6        23E8A
+92A7         4F42
+92A8         502E
+92A9         506C
+92AA         5081
+92AB         4FCC
+92AC         4FE5
+92AD         5058
+92AE         50FC
+92B3         6E76
+92B4        23595
+92B5        23E39
+92B6        23EBF
+92B7         6D72
+92B8        21884
+92B9        23E89
+92BA         51A8
+92BB         51C3
+92BC        205E0
+92BD         44DD
+92BE        204A3
+92BF        20492
+92C0        20491
+92C1         8D7A
+92C2        28A9C
+92C3        2070E
+92C4         5259
+92C5         52A4
+92C6        20873
+92C7         52E1
+92C9         467A
+92CA         718C
+92CB        2438C
+92CC        20C20
+92CD        249AC
+92CE        210E4
+92CF         69D1
+92D0        20E1D
+92D2         3EDE
+92D3         7499
+92D4         7414
+92D5         7456
+92D6         7398
+92D7         4B8E
+92D8        24ABC
+92D9        2408D
+92DA         53D0
+92DB         3584
+92DC         720F
+92DD        240C9
+92DE         55B4
+92DF        20345
+92E0         54CD
+92E1        20BC6
+92E2         571D
+92E3         925D
+92E4         96F4
+92E5         9366
+92E6         57DD
+92E7         578D
+92E8         577F
+92E9         363E
+92EA         58CB
+92EB         5A99
+92EC        28A46
+92ED        216FA
+92EE        2176F
+92EF        21710
+92F0         5A2C
+92F1         59B8
+92F2         928F
+92F3         5A7E
+92F4         5ACF
+92F5         5A12
+92F6        25946
+92F7        219F3
+92F8        21861
+92F9        24295
+92FA         36F5
+92FB         6D05
+92FC         7443
+92FD         5A21
+92FE        25E83
+9340         5A81
+9341        28BD7
+9342        20413
+9343         93E0
+9344         748C
+9345        21303
+9346         7105
+9347         4972
+9348         9408
+9349        289FB
+934A         93BD
+934B         37A0
+934C         5C1E
+934D         5C9E
+934E         5E5E
+934F         5E48
+9350        21996
+9351        2197C
+9352        23AEE
+9353         5ECD
+9354         5B4F
+9355        21903
+9356        21904
+9357         3701
+9358        218A0
+9359         36DD
+935A        216FE
+935B         36D3
+935C         812A
+935D        28A47
+935E        21DBA
+935F        23472
+9360        289A8
+9361         5F0C
+9362         5F0E
+9363        21927
+9364        217AB
+9365         5A6B
+9366        2173B
+9367         5B44
+9368         8614
+9369        275FD
+936A         8860
+936B         607E
+936C        22860
+936D        2262B
+936E         5FDB
+936F         3EB8
+9370        225AF
+9371        225BE
+9372        29088
+9373        26F73
+9374         61C0
+9375        2003E
+9376        20046
+9377        2261B
+9378         6199
+9379         6198
+937A         6075
+937B        22C9B
+937C        22D07
+937D        246D4
+937E        2914D
+93A1         6471
+93A2        24665
+93A3        22B6A
+93A4         3A29
+93A5        22B22
+93A6        23450
+93A7        298EA
+93A8        22E78
+93A9         6337
+93AA        2A45B
+93AB         64B6
+93AC         6331
+93AD         63D1
+93AE        249E3
+93AF        22D67
+93B0         62A4
+93B1        22CA1
+93B2         643B
+93B3         656B
+93B4         6972
+93B5         3BF4
+93B6        2308E
+93B7        232AD
+93B8        24989
+93B9        232AB
+93BA         550D
+93BB        232E0
+93BC        218D9
+93BD        2943F
+93BE         66CE
+93BF        23289
+93C0        231B3
+93C1         3AE0
+93C2         4190
+93C3        25584
+93C4        28B22
+93C5        2558F
+93C6        216FC
+93C7        2555B
+93C8        25425
+93C9         78EE
+93CA        23103
+93CB        2182A
+93CC        23234
+93CD         3464
+93CE        2320F
+93CF        23182
+93D0        242C9
+93D1         668E
+93D2        26D24
+93D3         666B
+93D4         4B93
+93D5         6630
+93D6        27870
+93D7        21DEB
+93D8         6663
+93D9        232D2
+93DA        232E1
+93DB         661E
+93DC        25872
+93DD         38D1
+93DE        2383A
+93DF        237BC
+93E0         3B99
+93E1        237A2
+93E2        233FE
+93E3         74D0
+93E4         3B96
+93E5         678F
+93E6        2462A
+93E7         68B6
+93E8         681E
+93E9         3BC4
+93EA         6ABE
+93EB         3863
+93EC        237D5
+93ED        24487
+93EE         6A33
+93EF         6A52
+93F0         6AC9
+93F1         6B05
+93F2        21912
+93F3         6511
+93F4         6898
+93F5         6A4C
+93F6         3BD7
+93F7         6A7A
+93F8         6B57
+93F9        23FC0
+93FA        23C9A
+93FB         93A0
+93FC         92F2
+93FD        28BEA
+93FE        28ACB
+9440         9289
+9441        2801E
+9442        289DC
+9443         9467
+9444         6DA5
+9445         6F0B
+9446        249EC
+9448        23F7F
+9449         3D8F
+944A         6E04
+944B        2403C
+944C         5A3D
+944D         6E0A
+944E         5847
+944F         6D24
+9450         7842
+9451         713B
+9452        2431A
+9453        24276
+9454         70F1
+9455         7250
+9456         7287
+9457         7294
+9458        2478F
+9459        24725
+945A         5179
+945B        24AA4
+945C        205EB
+945D         747A
+945E        23EF8
+945F        2365F
+9460        24A4A
+9461        24917
+9462        25FE1
+9463         3F06
+9464         3EB1
+9465        24ADF
+9466        28C23
+9467        23F35
+9468         60A7
+9469         3EF3
+946A         74CC
+946B         743C
+946C         9387
+946D         7437
+946E         449F
+946F        26DEA
+9470         4551
+9471         7583
+9472         3F63
+9473        24CD9
+9474        24D06
+9475         3F58
+9476         7555
+9477         7673
+9478        2A5C6
+9479         3B19
+947A         7468
+947B        28ACC
+947C        249AB
+947D        2498E
+947E         3AFB
+94A1         3DCD
+94A2        24A4E
+94A3         3EFF
+94A4        249C5
+94A5        248F3
+94A6         91FA
+94A7         5732
+94A8         9342
+94A9        28AE3
+94AA        21864
+94AB         50DF
+94AC        25221
+94AD        251E7
+94AE         7778
+94AF        23232
+94B0         770E
+94B1         770F
+94B2         777B
+94B3        24697
+94B4        23781
+94B5         3A5E
+94B6        248F0
+94B7         7438
+94B8         749B
+94B9         3EBF
+94BA        24ABA
+94BB        24AC7
+94BC         40C8
+94BD        24A96
+94BE        261AE
+94BF         9307
+94C0        25581
+94C1         781E
+94C2         788D
+94C3         7888
+94C4         78D2
+94C5         73D0
+94C6         7959
+94C7        27741
+94C8        256E3
+94C9         410E
+94CB         8496
+94CC         79A5
+94CD         6A2D
+94CE        23EFA
+94CF         7A3A
+94D0         79F4
+94D1         416E
+94D2        216E6
+94D3         4132
+94D4         9235
+94D5         79F1
+94D6        20D4C
+94D7        2498C
+94D8        20299
+94D9        23DBA
+94DA        2176E
+94DB         3597
+94DC         556B
+94DD         3570
+94DE         36AA
+94DF        201D4
+94E0        20C0D
+94E1         7AE2
+94E2         5A59
+94E3        226F5
+94E4        25AAF
+94E5        25A9C
+94E6         5A0D
+94E7        2025B
+94E8         78F0
+94E9         5A2A
+94EA        25BC6
+94EB         7AFE
+94EC         41F9
+94ED         7C5D
+94EE         7C6D
+94EF         4211
+94F0        25BB3
+94F1        25EBC
+94F2        25EA6
+94F3         7CCD
+94F4        249F9
+94F5        217B0
+94F6         7C8E
+94F7         7C7C
+94F8         7CAE
+94F9         6AB2
+94FA         7DDC
+94FB         7E07
+94FC         7DD3
+94FD         7F4E
+94FE        26261
+9540        2615C
+9541        27B48
+9542         7D97
+9543        25E82
+9544         426A
+9545        26B75
+9546        20916
+9547         67D6
+9548        2004E
+9549        235CF
+954A         57C4
+954B        26412
+954C        263F8
+954D        24962
+954E         7FDD
+954F         7B27
+9550        2082C
+9551        25AE9
+9552        25D43
+9553         7B0C
+9554        25E0E
+9555         99E6
+9556         8645
+9557         9A63
+9558         6A1C
+9559        2343F
+955A         39E2
+955B        249F7
+955C        265AD
+955D         9A1F
+955E        265A0
+955F         8480
+9560        27127
+9561        26CD1
+9562         44EA
+9563         8137
+9564         4402
+9565         80C6
+9566         8109
+9567         8142
+9568        267B4
+9569         98C3
+956A        26A42
+956B         8262
+956C         8265
+956D        26A51
+956E         8453
+956F        26DA7
+9570         8610
+9571        2721B
+9572         5A86
+9573         417F
+9574        21840
+9575         5B2B
+9576        218A1
+9577         5AE4
+9578        218D8
+9579         86A0
+957A        2F9BC
+957B        23D8F
+957C         882D
+957D        27422
+957E         5A02
+95A1         886E
+95A2         4F45
+95A3         8887
+95A4         88BF
+95A5         88E6
+95A6         8965
+95A7         894D
+95A8        25683
+95A9         8954
+95AA        27785
+95AB        27784
+95AC        28BF5
+95AD        28BD9
+95AE        28B9C
+95AF        289F9
+95B0         3EAD
+95B1         84A3
+95B2         46F5
+95B3         46CF
+95B4         37F2
+95B5         8A3D
+95B6         8A1C
+95B7        29448
+95B8         5F4D
+95B9         922B
+95BA        24284
+95BB         65D4
+95BC         7129
+95BD         70C4
+95BE        21845
+95BF         9D6D
+95C0         8C9F
+95C1         8CE9
+95C2        27DDC
+95C3         599A
+95C4         77C3
+95C5         59F0
+95C6         436E
+95C7         36D4
+95C8         8E2A
+95C9         8EA7
+95CA        24C09
+95CB         8F30
+95CC         8F4A
+95CD         42F4
+95CE         6C58
+95CF         6FBB
+95D0        22321
+95D1         489B
+95D2         6F79
+95D3         6E8B
+95D4        217DA
+95D5         9BE9
+95D6         36B5
+95D7        2492F
+95D8         90BB
+95DA         5571
+95DB         4906
+95DC         91BB
+95DD         9404
+95DE        28A4B
+95DF         4062
+95E0        28AFC
+95E1         9427
+95E2        28C1D
+95E3        28C3B
+95E4         84E5
+95E5         8A2B
+95E6         9599
+95E7         95A7
+95E8         9597
+95E9         9596
+95EA        28D34
+95EB         7445
+95EC         3EC2
+95ED        248FF
+95EE        24A42
+95EF        243EA
+95F0         3EE7
+95F1        23225
+95F2         968F
+95F3        28EE7
+95F4        28E66
+95F5        28E65
+95F6         3ECC
+95F7        249ED
+95F8        24A78
+95F9        23FEE
+95FA         7412
+95FB         746B
+95FC         3EFC
+95FD         9741
+95FE        290B0
+9640         6847
+9641         4A1D
+9642        29093
+9643        257DF
+9645         9368
+9646        28989
+9647        28C26
+9648        28B2F
+9649        263BE
+964A         92BA
+964B         5B11
+964C         8B69
+964D         493C
+964E         73F9
+964F        2421B
+9650         979B
+9651         9771
+9652         9938
+9653        20F26
+9654         5DC1
+9655        28BC5
+9656        24AB2
+9657         981F
+9658        294DA
+9659         92F6
+965A        295D7
+965B         91E5
+965C         44C0
+965D        28B50
+965E        24A67
+965F        28B64
+9660         98DC
+9661        28A45
+9662         3F00
+9663         922A
+9664         4925
+9665         8414
+9666         993B
+9667         994D
+9668        27B06
+9669         3DFD
+966A         999B
+966B         4B6F
+966C         99AA
+966D         9A5C
+966E        28B65
+966F        258C8
+9670         6A8F
+9671         9A21
+9672         5AFE
+9673         9A2F
+9674        298F1
+9675         4B90
+9676        29948
+9677         99BC
+9678         4BBD
+9679         4B97
+967A         937D
+967B         5872
+967C        21302
+967D         5822
+967E        249B8
+96A1        214E8
+96A2         7844
+96A3        2271F
+96A4        23DB8
+96A5         68C5
+96A6         3D7D
+96A7         9458
+96A8         3927
+96A9         6150
+96AA        22781
+96AB        2296B
+96AC         6107
+96AD         9C4F
+96AE         9C53
+96AF         9C7B
+96B0         9C35
+96B1         9C10
+96B2         9B7F
+96B3         9BCF
+96B4        29E2D
+96B5         9B9F
+96B6        2A1F5
+96B7        2A0FE
+96B8         9D21
+96B9         4CAE
+96BA        24104
+96BB         9E18
+96BC         4CB0
+96BD         9D0C
+96BE        2A1B4
+96BF        2A0ED
+96C0        2A0F3
+96C1        2992F
+96C2         9DA5
+96C3         84BD
+96C4        26E12
+96C5        26FDF
+96C6        26B82
+96C7         85FC
+96C8         4533
+96C9        26DA4
+96CA        26E84
+96CB        26DF0
+96CC         8420
+96CD         85EE
+96CE        26E00
+96CF        237D7
+96D0        26064
+96D1         79E2
+96D2        2359C
+96D3        23640
+96D4         492D
+96D5        249DE
+96D6         3D62
+96D7         93DB
+96D8         92BE
+96D9         9348
+96DA        202BF
+96DB         78B9
+96DC         9277
+96DD         944D
+96DE         4FE4
+96DF         3440
+96E0         9064
+96E1        2555D
+96E2         783D
+96E3         7854
+96E4         78B6
+96E5         784B
+96E6        21757
+96E7        231C9
+96E8        24941
+96E9         369A
+96EA         4F72
+96EB         6FDA
+96EC         6FD9
+96EE         701E
+96EF         5414
+96F0        241B5
+96F1         57BB
+96F2         58F3
+96F3         578A
+96F4         9D16
+96F5         57D7
+96F6         7134
+96F7         34AF
+96F8        241AC
+96F9         71EB
+96FA        26C40
+96FB        24F97
+96FD        217B5
+96FE        28A49
+9740         610C
+9741         5ACE
+9742         5A0B
+9743         42BC
+9744        24488
+9745         372C
+9746         4B7B
+9747        289FC
+9748         93BB
+9749         93B8
+974A        218D6
+974B        20F1D
+974C         8472
+974D        26CC0
+974E        21413
+974F        242FA
+9750        22C26
+9751        243C1
+9752         5994
+9753        23DB7
+9754        26741
+9755         7DA8
+9756        2615B
+9757        260A4
+9758        249B9
+9759        2498B
+975A        289FA
+975B         92E5
+975C         73E2
+975D         3EE9
+975E         74B4
+975F        28B63
+9760        2189F
+9761         3EE1
+9762        24AB3
+9763         6AD8
+9764         73F3
+9765         73FB
+9766         3ED6
+9767        24A3E
+9768        24A94
+9769        217D9
+976A        24A66
+976B        203A7
+976C        21424
+976D        249E5
+976E         7448
+976F        24916
+9770         70A5
+9771        24976
+9772         9284
+9773         73E6
+9774         935F
+9775        204FE
+9776         9331
+9777        28ACE
+9778        28A16
+9779         9386
+977A        28BE7
+977B        255D5
+977C         4935
+977D        28A82
+977E         716B
+97A1        24943
+97A2        20CFF
+97A3         56A4
+97A4        2061A
+97A5        20BEB
+97A6        20CB8
+97A7         5502
+97A8         79C4
+97A9        217FA
+97AA         7DFE
+97AB        216C2
+97AC        24A50
+97AD        21852
+97AE         452E
+97AF         9401
+97B0         370A
+97B1        28AC0
+97B2        249AD
+97B3         59B0
+97B4        218BF
+97B5        21883
+97B6        27484
+97B7         5AA1
+97B8         36E2
+97B9        23D5B
+97BA         36B0
+97BB         925F
+97BC         5A79
+97BD        28A81
+97BE        21862
+97BF         9374
+97C0         3CCD
+97C1        20AB4
+97C2         4A96
+97C3         398A
+97C4         50F4
+97C5         3D69
+97C6         3D4C
+97C7        2139C
+97C8         7175
+97C9         42FB
+97CA        28218
+97CB         6E0F
+97CC        290E4
+97CD         44EB
+97CE         6D57
+97CF        27E4F
+97D0         7067
+97D1         6CAF
+97D2         3CD6
+97D3        23FED
+97D4        23E2D
+97D5         6E02
+97D6         6F0C
+97D7         3D6F
+97D8        203F5
+97D9         7551
+97DA         36BC
+97DB         34C8
+97DC         4680
+97DD         3EDA
+97DE         4871
+97DF         59C4
+97E0         926E
+97E1         493E
+97E2         8F41
+97E3        28C1C
+97E4        26BC0
+97E5         5812
+97E6         57C8
+97E7         36D6
+97E8        21452
+97E9         70FE
+97EA        24362
+97EB        24A71
+97EC        22FE3
+97ED        212B0
+97EE        223BD
+97EF         68B9
+97F0         6967
+97F1        21398
+97F2        234E5
+97F3        27BF4
+97F4        236DF
+97F5        28A83
+97F6        237D6
+97F7        233FA
+97F8        24C9F
+97F9         6A1A
+97FA        236AD
+97FB        26CB7
+97FC         843E
+97FD         44DF
+97FE         44CE
+9840        26D26
+9841        26D51
+9842        26C82
+9843        26FDE
+9844         6F17
+9845        27109
+9846         833D
+9847        2173A
+9848         83ED
+9849        26C80
+984A        27053
+984B        217DB
+984C         5989
+984D         5A82
+984E        217B3
+984F         5A61
+9850         5A71
+9851        21905
+9852        241FC
+9853         372D
+9854         59EF
+9855        2173C
+9856         36C7
+9857         718E
+9858         9390
+9859         669A
+985A        242A5
+985B         5A6E
+985C         5A2B
+985D        24293
+985E         6A2B
+985F        23EF9
+9860        27736
+9861        2445B
+9862        242CA
+9863         711D
+9864        24259
+9865        289E1
+9866         4FB0
+9867        26D28
+9868         5CC2
+9869        244CE
+986A        27E4D
+986B        243BD
+986C         6A0C
+986D        24256
+986E        21304
+986F         70A6
+9870         7133
+9871        243E9
+9872         3DA5
+9873         6CDF
+9874        2F825
+9875        24A4F
+9876         7E65
+9877         59EB
+9878         5D2F
+9879         3DF3
+987A         5F5C
+987B        24A5D
+987C        217DF
+987D         7DA4
+987E         8426
+98A1         5485
+98A2        23AFA
+98A3        23300
+98A4        20214
+98A5         577E
+98A6        208D5
+98A7        20619
+98A8         3FE5
+98A9        21F9E
+98AA        2A2B6
+98AB         7003
+98AC        2915B
+98AD         5D70
+98AE         738F
+98AF         7CD3
+98B0        28A59
+98B1        29420
+98B2         4FC8
+98B3         7FE7
+98B4         72CD
+98B5         7310
+98B6        27AF4
+98B7         7338
+98B8         7339
+98B9        256F6
+98BA         7341
+98BB         7348
+98BC         3EA9
+98BD        27B18
+98BE         906C
+98BF         71F5
+98C0        248F2
+98C1         73E1
+98C2         81F6
+98C3         3ECA
+98C4         770C
+98C5         3ED1
+98C6         6CA2
+98C7         56FD
+98C8         7419
+98C9         741E
+98CA         741F
+98CB         3EE2
+98CC         3EF0
+98CD         3EF4
+98CE         3EFA
+98CF         74D3
+98D0         3F0E
+98D1         3F53
+98D2         7542
+98D3         756D
+98D4         7572
+98D5         758D
+98D6         3F7C
+98D7         75C8
+98D8         75DC
+98D9         3FC0
+98DA         764D
+98DB         3FD7
+98DC         7674
+98DD         3FDC
+98DE         767A
+98DF        24F5C
+98E0         7188
+98E1         5623
+98E2         8980
+98E3         5869
+98E4         401D
+98E5         7743
+98E6         4039
+98E7         6761
+98E8         4045
+98E9         35DB
+98EA         7798
+98EB         406A
+98EC         406F
+98ED         5C5E
+98EE         77BE
+98EF         77CB
+98F0         58F2
+98F1         7818
+98F2         70B9
+98F3         781C
+98F4         40A8
+98F5         7839
+98F6         7847
+98F7         7851
+98F8         7866
+98F9         8448
+98FA        25535
+98FB         7933
+98FC         6803
+98FD         7932
+98FE         4103
+9940         4109
+9941         7991
+9942         7999
+9943         8FBB
+9944         7A06
+9945         8FBC
+9946         4167
+9947         7A91
+9948         41B2
+9949         7ABC
+994A         8279
+994B         41C4
+994C         7ACF
+994D         7ADB
+994E         41CF
+994F         4E21
+9950         7B62
+9951         7B6C
+9952         7B7B
+9953         7C12
+9954         7C1B
+9955         4260
+9956         427A
+9957         7C7B
+9958         7C9C
+9959         428C
+995A         7CB8
+995B         4294
+995C         7CED
+995D         8F93
+995E         70C0
+995F        20CCF
+9960         7DCF
+9961         7DD4
+9962         7DD0
+9963         7DFD
+9964         7FAE
+9965         7FB4
+9966         729F
+9967         4397
+9968         8020
+9969         8025
+996A         7B39
+996B         802E
+996C         8031
+996D         8054
+996E         3DCC
+996F         57B4
+9970         70A0
+9971         80B7
+9972         80E9
+9973         43ED
+9974         810C
+9975         732A
+9976         810E
+9977         8112
+9978         7560
+9979         8114
+997A         4401
+997B         3B39
+997C         8156
+997D         8159
+997E         815A
+99A1         4413
+99A2         583A
+99A3         817C
+99A4         8184
+99A5         4425
+99A6         8193
+99A7         442D
+99A8         81A5
+99A9         57EF
+99AA         81C1
+99AB         81E4
+99AC         8254
+99AD         448F
+99AE         82A6
+99AF         8276
+99B0         82CA
+99B1         82D8
+99B2         82FF
+99B3         44B0
+99B4         8357
+99B5         9669
+99B6         698A
+99B7         8405
+99B8         70F5
+99B9         8464
+99BA         60E3
+99BB         8488
+99BC         4504
+99BD         84BE
+99BE         84E1
+99BF         84F8
+99C0         8510
+99C1         8538
+99C2         8552
+99C3         453B
+99C4         856F
+99C5         8570
+99C6         85E0
+99C7         4577
+99C8         8672
+99C9         8692
+99CA         86B2
+99CB         86EF
+99CC         9645
+99CD         878B
+99CE         4606
+99CF         4617
+99D0         88AE
+99D1         88FF
+99D2         8924
+99D3         8947
+99D4         8991
+99D5        27967
+99D6         8A29
+99D7         8A38
+99D8         8A94
+99D9         8AB4
+99DA         8C51
+99DB         8CD4
+99DC         8CF2
+99DD         8D1C
+99DE         4798
+99DF         585F
+99E0         8DC3
+99E1         47ED
+99E2         4EEE
+99E3         8E3A
+99E4         55D8
+99E5         5754
+99E6         8E71
+99E7         55F5
+99E8         8EB0
+99E9         4837
+99EA         8ECE
+99EB         8EE2
+99EC         8EE4
+99ED         8EED
+99EE         8EF2
+99EF         8FB7
+99F0         8FC1
+99F1         8FCA
+99F2         8FCC
+99F3         9033
+99F4         99C4
+99F5         48AD
+99F6         98E0
+99F7         9213
+99F8         491E
+99F9         9228
+99FA         9258
+99FB         926B
+99FC         92B1
+99FD         92AE
+99FE         92BF
+9A40         92E3
+9A41         92EB
+9A42         92F3
+9A43         92F4
+9A44         92FD
+9A45         9343
+9A46         9384
+9A47         93AD
+9A48         4945
+9A49         4951
+9A4A         9EBF
+9A4B         9417
+9A4C         5301
+9A4D         941D
+9A4E         942D
+9A4F         943E
+9A50         496A
+9A51         9454
+9A52         9479
+9A53         952D
+9A54         95A2
+9A55         49A7
+9A56         95F4
+9A57         9633
+9A58         49E5
+9A59         67A0
+9A5A         4A24
+9A5B         9740
+9A5C         4A35
+9A5D         97B2
+9A5E         97C2
+9A5F         5654
+9A60         4AE4
+9A61         60E8
+9A62         98B9
+9A63         4B19
+9A64         98F1
+9A65         5844
+9A66         990E
+9A67         9919
+9A68         51B4
+9A69         991C
+9A6A         9937
+9A6B         9942
+9A6C         995D
+9A6D         9962
+9A6E         4B70
+9A6F         99C5
+9A70         4B9D
+9A71         9A3C
+9A72         9B0F
+9A73         7A83
+9A74         9B69
+9A75         9B81
+9A76         9BDD
+9A77         9BF1
+9A78         9BF4
+9A79         4C6D
+9A7A         9C20
+9A7B         376F
+9A7C        21BC2
+9A7D         9D49
+9A7E         9C3A
+9AA1         9EFE
+9AA2         5650
+9AA3         9D93
+9AA4         9DBD
+9AA5         9DC0
+9AA6         9DFC
+9AA7         94F6
+9AA8         8FB6
+9AA9         9E7B
+9AAA         9EAC
+9AAB         9EB1
+9AAC         9EBD
+9AAD         9EC6
+9AAE         94DC
+9AAF         9EE2
+9AB0         9EF1
+9AB1         9EF8
+9AB2         7AC8
+9AB3         9F44
+9AB4        20094
+9AB5        202B7
+9AB6        203A0
+9AB7         691A
+9AB8         94C3
+9AB9         59AC
+9ABA        204D7
+9ABB         5840
+9ABC         94C1
+9ABD         37B9
+9ABE        205D5
+9ABF        20615
+9AC0        20676
+9AC1        216BA
+9AC2         5757
+9AC3         7173
+9AC4        20AC2
+9AC5        20ACD
+9AC6        20BBF
+9AC7         546A
+9AC8        2F83B
+9AC9        20BCB
+9ACA         549E
+9ACB        20BFB
+9ACC        20C3B
+9ACD        20C53
+9ACE        20C65
+9ACF        20C7C
+9AD0         60E7
+9AD1        20C8D
+9AD2         567A
+9AD3        20CB5
+9AD4        20CDD
+9AD5        20CED
+9AD6        20D6F
+9AD7        20DB2
+9AD8        20DC8
+9AD9         6955
+9ADA         9C2F
+9ADB         87A5
+9ADC        20E04
+9ADD        20E0E
+9ADE        20ED7
+9ADF        20F90
+9AE0        20F2D
+9AE1        20E73
+9AE2         5C20
+9AE3        20FBC
+9AE4         5E0B
+9AE5        2105C
+9AE6        2104F
+9AE7        21076
+9AE8         671E
+9AE9        2107B
+9AEA        21088
+9AEB        21096
+9AEC         3647
+9AED        210BF
+9AEE        210D3
+9AEF        2112F
+9AF0        2113B
+9AF1         5364
+9AF2         84AD
+9AF3        212E3
+9AF4        21375
+9AF5        21336
+9AF6         8B81
+9AF7        21577
+9AF8        21619
+9AF9        217C3
+9AFA        217C7
+9AFB         4E78
+9AFC         70BB
+9AFD        2182D
+9AFE        2196A
+9B40        21A2D
+9B41        21A45
+9B42        21C2A
+9B43        21C70
+9B44        21CAC
+9B45        21EC8
+9B46         62C3
+9B47        21ED5
+9B48        21F15
+9B49         7198
+9B4A         6855
+9B4B        22045
+9B4C         69E9
+9B4D         36C8
+9B4E        2227C
+9B4F        223D7
+9B50        223FA
+9B51        2272A
+9B52        22871
+9B53        2294F
+9B54         82FD
+9B55        22967
+9B56        22993
+9B57        22AD5
+9B58         89A5
+9B59        22AE8
+9B5A         8FA0
+9B5B        22B0E
+9B5C         97B8
+9B5D        22B3F
+9B5E         9847
+9B5F         9ABD
+9B60        22C4C
+9B62        22C88
+9B63        22CB7
+9B64        25BE8
+9B65        22D08
+9B66        22D12
+9B67        22DB7
+9B68        22D95
+9B69        22E42
+9B6A        22F74
+9B6B        22FCC
+9B6C        23033
+9B6D        23066
+9B6E        2331F
+9B6F        233DE
+9B70         5FB1
+9B71         6648
+9B72         66BF
+9B73        27A79
+9B74        23567
+9B75        235F3
+9B77        249BA
+9B79        2361A
+9B7A        23716
+9B7C        20346
+9B7D         58B5
+9B7E         670E
+9BA1         6918
+9BA2        23AA7
+9BA3        27657
+9BA4        25FE2
+9BA5        23E11
+9BA6        23EB9
+9BA7        275FE
+9BA8        2209A
+9BA9         48D0
+9BAA         4AB8
+9BAB        24119
+9BAC        28A9A
+9BAD        242EE
+9BAE        2430D
+9BAF        2403B
+9BB0        24334
+9BB1        24396
+9BB2        24A45
+9BB3        205CA
+9BB4         51D2
+9BB5        20611
+9BB6         599F
+9BB7        21EA8
+9BB8         3BBE
+9BB9        23CFF
+9BBA        24404
+9BBB        244D6
+9BBC         5788
+9BBD        24674
+9BBE         399B
+9BBF        2472F
+9BC0        285E8
+9BC1        299C9
+9BC2         3762
+9BC3        221C3
+9BC4         8B5E
+9BC5        28B4E
+9BC7        24812
+9BC8        248FB
+9BC9        24A15
+9BCA         7209
+9BCB        24AC0
+9BCC        20C78
+9BCD         5965
+9BCE        24EA5
+9BCF        24F86
+9BD0        20779
+9BD1         8EDA
+9BD2        2502C
+9BD3         528F
+9BD4         573F
+9BD5         7171
+9BD6        25299
+9BD7        25419
+9BD8        23F4A
+9BD9        24AA7
+9BDA         55BC
+9BDB        25446
+9BDC        2546E
+9BDD        26B52
+9BDF         3473
+9BE0        2553F
+9BE1        27632
+9BE2        2555E
+9BE3         4718
+9BE4        25562
+9BE5        25566
+9BE6        257C7
+9BE7        2493F
+9BE8        2585D
+9BE9         5066
+9BEA         34FB
+9BEB        233CC
+9BED        25903
+9BEE         477C
+9BEF        28948
+9BF0        25AAE
+9BF1        25B89
+9BF2        25C06
+9BF3        21D90
+9BF4         57A1
+9BF5         7151
+9BF7        26102
+9BF8        27C12
+9BF9         9056
+9BFA        261B2
+9BFB        24F9A
+9BFC         8B62
+9BFD        26402
+9BFE        2644A
+9C40         5D5B
+9C41        26BF7
+9C43        26484
+9C44        2191C
+9C45         8AEA
+9C46        249F6
+9C47        26488
+9C48        23FEF
+9C49        26512
+9C4A         4BC0
+9C4B        265BF
+9C4C        266B5
+9C4D        2271B
+9C4E         9465
+9C4F        257E1
+9C50         6195
+9C51         5A27
+9C52        2F8CD
+9C54         56B9
+9C55        24521
+9C56        266FC
+9C57         4E6A
+9C58        24934
+9C59         9656
+9C5A         6D8F
+9C5B        26CBD
+9C5C         3618
+9C5D         8977
+9C5E        26799
+9C5F        2686E
+9C60        26411
+9C61        2685E
+9C63        268C7
+9C64         7B42
+9C65        290C0
+9C66        20A11
+9C67        26926
+9C69        26939
+9C6A         7A45
+9C6C        269FA
+9C6D         9A26
+9C6E        26A2D
+9C6F         365F
+9C70        26469
+9C71        20021
+9C72         7983
+9C73        26A34
+9C74        26B5B
+9C75         5D2C
+9C76        23519
+9C78        26B9D
+9C79         46D0
+9C7A        26CA4
+9C7B         753B
+9C7C         8865
+9C7D        26DAE
+9C7E         58B6
+9CA1         371C
+9CA2        2258D
+9CA3        2704B
+9CA4        271CD
+9CA5         3C54
+9CA6        27280
+9CA7        27285
+9CA8         9281
+9CA9        2217A
+9CAA        2728B
+9CAB         9330
+9CAC        272E6
+9CAD        249D0
+9CAE         6C39
+9CAF         949F
+9CB0        27450
+9CB1        20EF8
+9CB2         8827
+9CB3         88F5
+9CB4        22926
+9CB5        28473
+9CB6        217B1
+9CB7         6EB8
+9CB8        24A2A
+9CB9        21820
+9CBA         39A4
+9CBB         36B9
+9CBE         453F
+9CBF         66B6
+9CC0        29CAD
+9CC1        298A4
+9CC2         8943
+9CC3        277CC
+9CC4        27858
+9CC5         56D6
+9CC6         40DF
+9CC7        2160A
+9CC8         39A1
+9CC9        2372F
+9CCA        280E8
+9CCB        213C5
+9CCC         71AD
+9CCD         8366
+9CCE        279DD
+9CCF        291A8
+9CD1         4CB7
+9CD2        270AF
+9CD3        289AB
+9CD4        279FD
+9CD5        27A0A
+9CD6        27B0B
+9CD7        27D66
+9CD8        2417A
+9CD9         7B43
+9CDA         797E
+9CDB        28009
+9CDC         6FB5
+9CDD        2A2DF
+9CDE         6A03
+9CDF        28318
+9CE0         53A2
+9CE1        26E07
+9CE2         93BF
+9CE3         6836
+9CE4         975D
+9CE5        2816F
+9CE6        28023
+9CE7        269B5
+9CE8        213ED
+9CE9        2322F
+9CEA        28048
+9CEB         5D85
+9CEC        28C30
+9CED        28083
+9CEE         5715
+9CEF         9823
+9CF0        28949
+9CF1         5DAB
+9CF2        24988
+9CF3         65BE
+9CF4         69D5
+9CF5         53D2
+9CF6        24AA5
+9CF7        23F81
+9CF8         3C11
+9CF9         6736
+9CFA        28090
+9CFB        280F4
+9CFC        2812E
+9CFD        21FA1
+9CFE        2814F
+9D40        28189
+9D41        281AF
+9D42        2821A
+9D43        28306
+9D44        2832F
+9D45        2838A
+9D46         35CA
+9D47        28468
+9D48        286AA
+9D49         48FA
+9D4A         63E6
+9D4B        28956
+9D4C         7808
+9D4D         9255
+9D4E        289B8
+9D4F         43F2
+9D50        289E7
+9D51         43DF
+9D52        289E8
+9D53        28B46
+9D54        28BD4
+9D55         59F8
+9D56        28C09
+9D58        28FC5
+9D59        290EC
+9D5B        29110
+9D5C        2913C
+9D5D         3DF7
+9D5E        2915E
+9D5F        24ACA
+9D60         8FD0
+9D61         728F
+9D62         568B
+9D63        294E7
+9D64        295E9
+9D65        295B0
+9D66        295B8
+9D67        29732
+9D68        298D1
+9D69        29949
+9D6A        2996A
+9D6B        299C3
+9D6C        29A28
+9D6D        29B0E
+9D6E        29D5A
+9D6F        29D9B
+9D70         7E9F
+9D71        29EF8
+9D72        29F23
+9D73         4CA4
+9D74         9547
+9D75        2A293
+9D76         71A2
+9D77        2A2FF
+9D78         4D91
+9D79         9012
+9D7A        2A5CB
+9D7B         4D9C
+9D7C        20C9C
+9D7D         8FBE
+9D7E         55C1
+9DA1         8FBA
+9DA2        224B0
+9DA3         8FB9
+9DA4        24A93
+9DA5         4509
+9DA6         7E7F
+9DA7         6F56
+9DA8         6AB1
+9DA9         4EEA
+9DAA         34E4
+9DAB        28B2C
+9DAC        2789D
+9DAD         373A
+9DAE         8E80
+9DAF        217F5
+9DB0        28024
+9DB1        28B6C
+9DB2        28B99
+9DB3        27A3E
+9DB4        266AF
+9DB5         3DEB
+9DB6        27655
+9DB7        23CB7
+9DB8        25635
+9DB9        25956
+9DBA         4E9A
+9DBB        25E81
+9DBC        26258
+9DBD         56BF
+9DBE        20E6D
+9DBF         8E0E
+9DC0         5B6D
+9DC1        23E88
+9DC2        24C9E
+9DC3         63DE
+9DC5        217F6
+9DC6        2187B
+9DC7         6530
+9DC8         562D
+9DC9        25C4A
+9DCA         541A
+9DCB        25311
+9DCC         3DC6
+9DCD        29D98
+9DCE         4C7D
+9DCF         5622
+9DD0         561E
+9DD1         7F49
+9DD2        25ED8
+9DD3         5975
+9DD4        23D40
+9DD5         8770
+9DD6         4E1C
+9DD7        20FEA
+9DD8        20D49
+9DD9        236BA
+9DDA         8117
+9DDB         9D5E
+9DDC         8D18
+9DDD         763B
+9DDE         9C45
+9DDF         764E
+9DE0         77B9
+9DE1         9345
+9DE2         5432
+9DE3         8148
+9DE4         82F7
+9DE5         5625
+9DE6         8132
+9DE7         8418
+9DE8         80BD
+9DE9         55EA
+9DEA         7962
+9DEB         5643
+9DEC         5416
+9DED        20E9D
+9DEE         35CE
+9DEF         5605
+9DF0         55F1
+9DF1         66F1
+9DF2        282E2
+9DF3         362D
+9DF4         7534
+9DF5         55F0
+9DF6         55BA
+9DF7         5497
+9DF8         5572
+9DF9        20C41
+9DFA        20C96
+9DFB         5ED0
+9DFC        25148
+9DFD        20E76
+9DFE        22C62
+9E40        20EA2
+9E41         9EAB
+9E42         7D5A
+9E43         55DE
+9E44        21075
+9E45         629D
+9E46         976D
+9E47         5494
+9E48         8CCD
+9E49         71F6
+9E4A         9176
+9E4B         63FC
+9E4C         63B9
+9E4D         63FE
+9E4E         5569
+9E4F        22B43
+9E50         9C72
+9E51        22EB3
+9E52         519A
+9E53         34DF
+9E54        20DA7
+9E55         51A7
+9E56         544D
+9E57         551E
+9E58         5513
+9E59         7666
+9E5A         8E2D
+9E5B        2688A
+9E5C         75B1
+9E5D         80B6
+9E5E         8804
+9E5F         8786
+9E60         88C7
+9E61         81B6
+9E62         841C
+9E63        210C1
+9E64         44EC
+9E65         7304
+9E66        24706
+9E67         5B90
+9E68         830B
+9E69        26893
+9E6A         567B
+9E6B        226F4
+9E6C        27D2F
+9E6D        241A3
+9E6E        27D73
+9E6F        26ED0
+9E70        272B6
+9E71         9170
+9E72        211D9
+9E73         9208
+9E74        23CFC
+9E75        2A6A9
+9E76        20EAC
+9E77        20EF9
+9E78         7266
+9E79        21CA2
+9E7A         474E
+9E7B        24FC2
+9E7C        27FF9
+9E7D        20FEB
+9E7E         40FA
+9EA1         9C5D
+9EA2         651F
+9EA3        22DA0
+9EA4         48F3
+9EA5        247E0
+9EA6        29D7C
+9EA7        20FEC
+9EA8        20E0A
+9EAA        275A3
+9EAB        20FED
+9EAD        26048
+9EAE        21187
+9EAF         71A3
+9EB0         7E8E
+9EB1         9D50
+9EB2         4E1A
+9EB3         4E04
+9EB4         3577
+9EB5         5B0D
+9EB6         6CB2
+9EB7         5367
+9EB8         36AC
+9EB9         39DC
+9EBA         537D
+9EBB         36A5
+9EBC        24618
+9EBD         589A
+9EBE        24B6E
+9EBF         822D
+9EC0         544B
+9EC1         57AA
+9EC2        25A95
+9EC3        20979
+9EC5         3A52
+9EC6        22465
+9EC7         7374
+9EC8        29EAC
+9EC9         4D09
+9ECA         9BED
+9ECB        23CFE
+9ECC        29F30
+9ECD         4C5B
+9ECE        24FA9
+9ECF        2959E
+9ED0        29FDE
+9ED1         845C
+9ED2        23DB6
+9ED3        272B2
+9ED4        267B3
+9ED5        23720
+9ED6         632E
+9ED7         7D25
+9ED8        23EF7
+9ED9        23E2C
+9EDA         3A2A
+9EDB         9008
+9EDC         52CC
+9EDD         3E74
+9EDE         367A
+9EDF         45E9
+9EE0        2048E
+9EE1         7640
+9EE2         5AF0
+9EE3        20EB6
+9EE4         787A
+9EE5        27F2E
+9EE6         58A7
+9EE7         40BF
+9EE8         567C
+9EE9         9B8B
+9EEA         5D74
+9EEB         7654
+9EEC        2A434
+9EED         9E85
+9EEE         4CE1
+9EF0         37FB
+9EF1         6119
+9EF2        230DA
+9EF3        243F2
+9EF5         565D
+9EF6        212A9
+9EF7         57A7
+9EF8        24963
+9EF9        29E06
+9EFA         5234
+9EFB        270AE
+9EFC         35AD
+9EFE         9D7C
+9F40         7C56
+9F41         9B39
+9F42         57DE
+9F43        2176C
+9F44         5C53
+9F45         64D3
+9F46        294D0
+9F47        26335
+9F48        27164
+9F49         86AD
+9F4A        20D28
+9F4B        26D22
+9F4C        24AE2
+9F4D        20D71
+9F4F         51FE
+9F50        21F0F
+9F51         5D8E
+9F52         9703
+9F53        21DD1
+9F54         9E81
+9F55         904C
+9F56         7B1F
+9F57         9B02
+9F58         5CD1
+9F59         7BA3
+9F5A         6268
+9F5B         6335
+9F5C         9AFF
+9F5D         7BCF
+9F5E         9B2A
+9F5F         7C7E
+9F61         7C42
+9F62         7C86
+9F63         9C15
+9F64         7BFC
+9F65         9B09
+9F67         9C1B
+9F68        2493E
+9F69         9F5A
+9F6A         5573
+9F6B         5BC3
+9F6C         4FFD
+9F6D         9E98
+9F6E         4FF2
+9F6F         5260
+9F70         3E06
+9F71         52D1
+9F72         5767
+9F73         5056
+9F74         59B7
+9F75         5E12
+9F76         97C8
+9F77         9DAB
+9F78         8F5C
+9F79         5469
+9F7A         97B4
+9F7B         9940
+9F7C         97BA
+9F7D         532C
+9F7E         6130
+9FA1         692C
+9FA2         53DA
+9FA3         9C0A
+9FA4         9D02
+9FA5         4C3B
+9FA6         9641
+9FA7         6980
+9FA8         50A6
+9FA9         7546
+9FAA        2176D
+9FAB         99DA
+9FAC         5273
+9FAE         9159
+9FAF         9681
+9FB0         915C
+9FB2         9151
+9FB3        28E97
+9FB4         637F
+9FB5        26D23
+9FB6         6ACA
+9FB7         5611
+9FB8         918E
+9FB9         757A
+9FBA         6285
+9FBB        203FC
+9FBC         734F
+9FBD         7C70
+9FBE        25C21
+9FBF        23CFD
+9FC1        24919
+9FC2         76D6
+9FC3         9B9D
+9FC4         4E2A
+9FC5        20CD4
+9FC6         83BE
+9FC7         8842
+9FC9         5C4A
+9FCA         69C0
+9FCC         577A
+9FCD         521F
+9FCE         5DF5
+9FCF         4ECE
+9FD0         6C31
+9FD1        201F2
+9FD2         4F39
+9FD3         549C
+9FD4         54DA
+9FD5         529A
+9FD6         8D82
+9FD7         35FE
+9FD9         35F3
+9FDB         6B52
+9FDC         917C
+9FDD         9FA5
+9FDE         9B97
+9FDF         982E
+9FE0         98B4
+9FE1         9ABA
+9FE2         9EA8
+9FE3         9E84
+9FE4         717A
+9FE5         7B14
+9FE7         6BFA
+9FE8         8818
+9FE9         7F78
+9FEB         5620
+9FEC        2A64A
+9FED         8E77
+9FEE         9F53
+9FF0         8DD4
+9FF1         8E4F
+9FF2         9E1C
+9FF3         8E01
+9FF4         6282
+9FF5        2837D
+9FF6         8E28
+9FF7         8E75
+9FF8         7AD3
+9FF9        24A77
+9FFA         7A3E
+9FFB         78D8
+9FFC         6CEA
+9FFD         8A67
+9FFE         7607
+A040        28A5A
+A041         9F26
+A042         6CCE
+A043         87D6
+A044         75C3
+A045        2A2B2
+A046         7853
+A047        2F840
+A048         8D0C
+A049         72E2
+A04A         7371
+A04B         8B2D
+A04C         7302
+A04D         74F1
+A04E         8CEB
+A04F        24ABB
+A050         862F
+A051         5FBA
+A052         88A0
+A053         44B7
+A055        2183B
+A056        26E05
+A058         8A7E
+A059        2251B
+A05B         60FD
+A05C         7667
+A05D         9AD7
+A05E         9D44
+A05F         936E
+A060         9B8F
+A061         87F5
+A064         8CF7
+A065         732C
+A066         9721
+A067         9BB0
+A068         35D6
+A069         72B2
+A06A         4C07
+A06B         7C51
+A06C         994A
+A06D        26159
+A06E         6159
+A06F         4C04
+A070         9E96
+A071         617D
+A073         575F
+A074         616F
+A075         62A6
+A076         6239
+A078         3A5C
+A079         61E2
+A07A         53AA
+A07B        233F5
+A07C         6364
+A07D         6802
+A07E         35D2
+A0A1         5D57
+A0A2        28BC2
+A0A3         8FDA
+A0A4        28E39
+A0A6         50D9
+A0A7        21D46
+A0A8         7906
+A0A9         5332
+A0AA         9638
+A0AB        20F3B
+A0AC         4065
+A0AE         77FE
+A0B0         7CC2
+A0B1        25F1A
+A0B2         7CDA
+A0B3         7A2D
+A0B4         8066
+A0B5         8063
+A0B6         7D4D
+A0B7         7505
+A0B8         74F2
+A0B9         8994
+A0BA         821A
+A0BB         670C
+A0BC         8062
+A0BD        27486
+A0BE         805B
+A0BF         74F0
+A0C0         8103
+A0C1         7724
+A0C2         8989
+A0C3        267CC
+A0C4         7553
+A0C5        26ED1
+A0C6         87A9
+A0C7         87CE
+A0C8         81C8
+A0C9         878C
+A0CA         8A49
+A0CB         8CAD
+A0CC         8B43
+A0CD         772B
+A0CE         74F8
+A0CF         84DA
+A0D0         3635
+A0D1         69B2
+A0D2         8DA6
+A0D4         89A9
+A0D6         6DB9
+A0D7         87C1
+A0D8        24011
+A0D9         74E7
+A0DA         3DDB
+A0DB         7176
+A0DC         60A4
+A0DD         619C
+A0DE         3CD1
+A0E0         6077
+A0E2         7F71
+A0E3        28B2D
+A0E5         60E9
+A0E6         4B7E
+A0E7         5220
+A0E8         3C18
+A0E9        23CC7
+A0EA        25ED7
+A0EB        27656
+A0EC        25531
+A0ED        21944
+A0EE        212FE
+A0EF        29903
+A0F0        26DDC
+A0F1        270AD
+A0F2         5CC1
+A0F3        261AD
+A0F4        28A0F
+A0F5        23677
+A0F6        200EE
+A0F7        26846
+A0F8        24F0E
+A0F9         4562
+A0FA         5B1F
+A0FB        2634C
+A0FC         9F50
+A0FD         9EA6
+A0FE        2626B
+C6A1         2460
+C6A2         2461
+C6A3         2462
+C6A4         2463
+C6A5         2464
+C6A6         2465
+C6A7         2466
+C6A8         2467
+C6A9         2468
+C6AA         2469
+C6AB         2474
+C6AC         2475
+C6AD         2476
+C6AE         2477
+C6AF         2478
+C6B0         2479
+C6B1         247A
+C6B2         247B
+C6B3         247C
+C6B4         247D
+C6B5         2170
+C6B6         2171
+C6B7         2172
+C6B8         2173
+C6B9         2174
+C6BA         2175
+C6BB         2176
+C6BC         2177
+C6BD         2178
+C6BE         2179
+C6BF         4E36
+C6C0         4E3F
+C6C1         4E85
+C6C2         4EA0
+C6C3         5182
+C6C4         5196
+C6C5         51AB
+C6C6         52F9
+C6C7         5338
+C6C8         5369
+C6C9         53B6
+C6CA         590A
+C6CB         5B80
+C6CC         5DDB
+C6CD         2F33
+C6CE         5E7F
+C6D0         5F50
+C6D1         5F61
+C6D2         6534
+C6D4         7592
+C6D6         8FB5
+C6D8         00A8
+C6D9         02C6
+C6DA         30FD
+C6DB         30FE
+C6DC         309D
+C6DD         309E
+C6E0         3005
+C6E1         3006
+C6E2         3007
+C6E3         30FC
+C6E4         FF3B
+C6E5         FF3D
+C6E6         273D
+C6E7         3041
+C6E8         3042
+C6E9         3043
+C6EA         3044
+C6EB         3045
+C6EC         3046
+C6ED         3047
+C6EE         3048
+C6EF         3049
+C6F0         304A
+C6F1         304B
+C6F2         304C
+C6F3         304D
+C6F4         304E
+C6F5         304F
+C6F6         3050
+C6F7         3051
+C6F8         3052
+C6F9         3053
+C6FA         3054
+C6FB         3055
+C6FC         3056
+C6FD         3057
+C6FE         3058
+C740         3059
+C741         305A
+C742         305B
+C743         305C
+C744         305D
+C745         305E
+C746         305F
+C747         3060
+C748         3061
+C749         3062
+C74A         3063
+C74B         3064
+C74C         3065
+C74D         3066
+C74E         3067
+C74F         3068
+C750         3069
+C751         306A
+C752         306B
+C753         306C
+C754         306D
+C755         306E
+C756         306F
+C757         3070
+C758         3071
+C759         3072
+C75A         3073
+C75B         3074
+C75C         3075
+C75D         3076
+C75E         3077
+C75F         3078
+C760         3079
+C761         307A
+C762         307B
+C763         307C
+C764         307D
+C765         307E
+C766         307F
+C767         3080
+C768         3081
+C769         3082
+C76A         3083
+C76B         3084
+C76C         3085
+C76D         3086
+C76E         3087
+C76F         3088
+C770         3089
+C771         308A
+C772         308B
+C773         308C
+C774         308D
+C775         308E
+C776         308F
+C777         3090
+C778         3091
+C779         3092
+C77A         3093
+C77B         30A1
+C77C         30A2
+C77D         30A3
+C77E         30A4
+C7A1         30A5
+C7A2         30A6
+C7A3         30A7
+C7A4         30A8
+C7A5         30A9
+C7A6         30AA
+C7A7         30AB
+C7A8         30AC
+C7A9         30AD
+C7AA         30AE
+C7AB         30AF
+C7AC         30B0
+C7AD         30B1
+C7AE         30B2
+C7AF         30B3
+C7B0         30B4
+C7B1         30B5
+C7B2         30B6
+C7B3         30B7
+C7B4         30B8
+C7B5         30B9
+C7B6         30BA
+C7B7         30BB
+C7B8         30BC
+C7B9         30BD
+C7BA         30BE
+C7BB         30BF
+C7BC         30C0
+C7BD         30C1
+C7BE         30C2
+C7BF         30C3
+C7C0         30C4
+C7C1         30C5
+C7C2         30C6
+C7C3         30C7
+C7C4         30C8
+C7C5         30C9
+C7C6         30CA
+C7C7         30CB
+C7C8         30CC
+C7C9         30CD
+C7CA         30CE
+C7CB         30CF
+C7CC         30D0
+C7CD         30D1
+C7CE         30D2
+C7CF         30D3
+C7D0         30D4
+C7D1         30D5
+C7D2         30D6
+C7D3         30D7
+C7D4         30D8
+C7D5         30D9
+C7D6         30DA
+C7D7         30DB
+C7D8         30DC
+C7D9         30DD
+C7DA         30DE
+C7DB         30DF
+C7DC         30E0
+C7DD         30E1
+C7DE         30E2
+C7DF         30E3
+C7E0         30E4
+C7E1         30E5
+C7E2         30E6
+C7E3         30E7
+C7E4         30E8
+C7E5         30E9
+C7E6         30EA
+C7E7         30EB
+C7E8         30EC
+C7E9         30ED
+C7EA         30EE
+C7EB         30EF
+C7EC         30F0
+C7ED         30F1
+C7EE         30F2
+C7EF         30F3
+C7F0         30F4
+C7F1         30F5
+C7F2         30F6
+C7F3         0410
+C7F4         0411
+C7F5         0412
+C7F6         0413
+C7F7         0414
+C7F8         0415
+C7F9         0401
+C7FA         0416
+C7FB         0417
+C7FC         0418
+C7FD         0419
+C7FE         041A
+C840         041B
+C841         041C
+C842         041D
+C843         041E
+C844         041F
+C845         0420
+C846         0421
+C847         0422
+C848         0423
+C849         0424
+C84A         0425
+C84B         0426
+C84C         0427
+C84D         0428
+C84E         0429
+C84F         042A
+C850         042B
+C851         042C
+C852         042D
+C853         042E
+C854         042F
+C855         0430
+C856         0431
+C857         0432
+C858         0433
+C859         0434
+C85A         0435
+C85B         0451
+C85C         0436
+C85D         0437
+C85E         0438
+C85F         0439
+C860         043A
+C861         043B
+C862         043C
+C863         043D
+C864         043E
+C865         043F
+C866         0440
+C867         0441
+C868         0442
+C869         0443
+C86A         0444
+C86B         0445
+C86C         0446
+C86D         0447
+C86E         0448
+C86F         0449
+C870         044A
+C871         044B
+C872         044C
+C873         044D
+C874         044E
+C875         044F
+C876         21E7
+C877         21B8
+C878         21B9
+C879         31CF
+C87A        200CC
+C87B         4E5A
+C87C        2008A
+C87D         5202
+C87E         4491
+C8A1         9FB0
+C8A2         5188
+C8A3         9FB1
+C8A4        27607
+C8CD         FFE2
+C8CE         FFE4
+C8CF         FF07
+C8D0         FF02
+C8D1         3231
+C8D2         2116
+C8D3         2121
+C8D4         309B
+C8D5         309C
+C8D6         2E80
+C8D7         2E84
+C8D8         2E86
+C8D9         2E87
+C8DA         2E88
+C8DB         2E8A
+C8DC         2E8C
+C8DD         2E8D
+C8DE         2E95
+C8DF         2E9C
+C8E0         2E9D
+C8E1         2EA5
+C8E2         2EA7
+C8E3         2EAA
+C8E4         2EAC
+C8E5         2EAE
+C8E6         2EB6
+C8E7         2EBC
+C8E8         2EBE
+C8E9         2EC6
+C8EA         2ECA
+C8EB         2ECC
+C8EC         2ECD
+C8ED         2ECF
+C8EE         2ED6
+C8EF         2ED7
+C8F0         2EDE
+C8F1         2EE3
+C8F5         0283
+C8F6         0250
+C8F7         025B
+C8F8         0254
+C8F9         0275
+C8FA         0153
+C8FB         00F8
+C8FC         014B
+C8FD         028A
+C8FE         026A
+F9D6         7881
+F9D7         92B9
+F9D8         88CF
+F9D9         58BB
+F9DA         6052
+F9DB         7CA7
+F9DC         5AFA
+F9DD         2554
+F9DE         2566
+F9DF         2557
+F9E0         2560
+F9E1         256C
+F9E2         2563
+F9E3         255A
+F9E4         2569
+F9E5         255D
+F9E6         2552
+F9E7         2564
+F9E8         2555
+F9E9         255E
+F9EA         256A
+F9EB         2561
+F9EC         2558
+F9ED         2567
+F9EE         255B
+F9EF         2553
+F9F0         2565
+F9F1         2556
+F9F2         255F
+F9F3         256B
+F9F4         2562
+F9F5         2559
+F9F6         2568
+F9F7         255C
+F9F8         2551
+F9F9         2550
+F9FA         256D
+F9FB         256E
+F9FC         2570
+F9FD         256F
+F9FE         FFED
+FA40        20547
+FA41         92DB
+FA42        205DF
+FA43        23FC5
+FA44         854C
+FA45         42B5
+FA46         73EF
+FA47         51B5
+FA48         3649
+FA49        24942
+FA4A        289E4
+FA4B         9344
+FA4C        219DB
+FA4D         82EE
+FA4E        23CC8
+FA4F         783C
+FA50         6744
+FA51         62DF
+FA52        24933
+FA53        289AA
+FA54        202A0
+FA55        26BB3
+FA56        21305
+FA57         4FAB
+FA58        224ED
+FA59         5008
+FA5A        26D29
+FA5B        27A84
+FA5C        23600
+FA5D        24AB1
+FA5E        22513
+FA60        2037E
+FA61         5FA4
+FA62        20380
+FA63        20347
+FA64         6EDB
+FA65        2041F
+FA67         5101
+FA68         347A
+FA69         510E
+FA6A         986C
+FA6B         3743
+FA6C         8416
+FA6D        249A4
+FA6E        20487
+FA6F         5160
+FA70        233B4
+FA71         516A
+FA72        20BFF
+FA73        220FC
+FA74        202E5
+FA75        22530
+FA76        2058E
+FA77        23233
+FA78        21983
+FA79         5B82
+FA7A         877D
+FA7B        205B3
+FA7C        23C99
+FA7D         51B2
+FA7E         51B8
+FAA1         9D34
+FAA2         51C9
+FAA3         51CF
+FAA4         51D1
+FAA5         3CDC
+FAA6         51D3
+FAA7        24AA6
+FAA8         51B3
+FAA9         51E2
+FAAA         5342
+FAAB         51ED
+FAAC         83CD
+FAAD         693E
+FAAE        2372D
+FAAF         5F7B
+FAB0         520B
+FAB1         5226
+FAB2         523C
+FAB3         52B5
+FAB4         5257
+FAB5         5294
+FAB6         52B9
+FAB7         52C5
+FAB8         7C15
+FAB9         8542
+FABA         52E0
+FABB         860D
+FABC        26B13
+FABE        28ADE
+FABF         5549
+FAC0         6ED9
+FAC1        23F80
+FAC2        20954
+FAC3        23FEC
+FAC4         5333
+FAC6        20BE2
+FAC7         6CCB
+FAC8        21726
+FAC9         681B
+FACA         73D5
+FACB         604A
+FACC         3EAA
+FACD         38CC
+FACE        216E8
+FACF         71DD
+FAD0         44A2
+FAD1         536D
+FAD2         5374
+FAD3        286AB
+FAD4         537E
+FAD6        21596
+FAD7        21613
+FAD8         77E6
+FAD9         5393
+FADA        28A9B
+FADB         53A0
+FADC         53AB
+FADD         53AE
+FADE         73A7
+FADF        25772
+FAE0         3F59
+FAE1         739C
+FAE2         53C1
+FAE3         53C5
+FAE4         6C49
+FAE5         4E49
+FAE6         57FE
+FAE7         53D9
+FAE8         3AAB
+FAE9        20B8F
+FAEA         53E0
+FAEB        23FEB
+FAEC        22DA3
+FAED         53F6
+FAEE        20C77
+FAEF         5413
+FAF0         7079
+FAF1         552B
+FAF2         6657
+FAF3         6D5B
+FAF4         546D
+FAF5        26B53
+FAF6        20D74
+FAF7         555D
+FAF8         548F
+FAF9         54A4
+FAFA         47A6
+FAFB        2170D
+FAFC        20EDD
+FAFD         3DB4
+FAFE        20D4D
+FB40        289BC
+FB41        22698
+FB42         5547
+FB43         4CED
+FB44         542F
+FB45         7417
+FB46         5586
+FB47         55A9
+FB49        218D7
+FB4A        2403A
+FB4B         4552
+FB4C        24435
+FB4D         66B3
+FB4E        210B4
+FB4F         5637
+FB50         66CD
+FB51        2328A
+FB52         66A4
+FB53         66AD
+FB54         564D
+FB55         564F
+FB56         78F1
+FB57         56F1
+FB58         9787
+FB59         53FE
+FB5A         5700
+FB5B         56EF
+FB5C         56ED
+FB5D        28B66
+FB5E         3623
+FB5F        2124F
+FB60         5746
+FB61        241A5
+FB62         6C6E
+FB63         708B
+FB64         5742
+FB65         36B1
+FB66        26C7E
+FB67         57E6
+FB68        21416
+FB69         5803
+FB6A        21454
+FB6B        24363
+FB6C         5826
+FB6D        24BF5
+FB6E         585C
+FB6F         58AA
+FB70         3561
+FB71         58E0
+FB72         58DC
+FB73        2123C
+FB74         58FB
+FB75         5BFF
+FB76         5743
+FB77        2A150
+FB78        24278
+FB79         93D3
+FB7A         35A1
+FB7B         591F
+FB7C         68A6
+FB7D         36C3
+FB7E         6E59
+FBA1        2163E
+FBA2         5A24
+FBA3         5553
+FBA4        21692
+FBA5         8505
+FBA6         59C9
+FBA7        20D4E
+FBA8        26C81
+FBA9        26D2A
+FBAA        217DC
+FBAB         59D9
+FBAC        217FB
+FBAD        217B2
+FBAE        26DA6
+FBAF         6D71
+FBB0        21828
+FBB1        216D5
+FBB2         59F9
+FBB3        26E45
+FBB4         5AAB
+FBB5         5A63
+FBB6         36E6
+FBB7        249A9
+FBB9         3708
+FBBA         5A96
+FBBB         7465
+FBBC         5AD3
+FBBD        26FA1
+FBBE        22554
+FBBF         3D85
+FBC0        21911
+FBC1         3732
+FBC2        216B8
+FBC3         5E83
+FBC4         52D0
+FBC5         5B76
+FBC6         6588
+FBC7         5B7C
+FBC8        27A0E
+FBC9         4004
+FBCA         485D
+FBCB        20204
+FBCC         5BD5
+FBCD         6160
+FBCE        21A34
+FBCF        259CC
+FBD0        205A5
+FBD1         5BF3
+FBD2         5B9D
+FBD3         4D10
+FBD4         5C05
+FBD5        21B44
+FBD6         5C13
+FBD7         73CE
+FBD8         5C14
+FBD9        21CA5
+FBDA        26B28
+FBDB         5C49
+FBDC         48DD
+FBDD         5C85
+FBDE         5CE9
+FBDF         5CEF
+FBE0         5D8B
+FBE1        21DF9
+FBE2        21E37
+FBE3         5D10
+FBE4         5D18
+FBE5         5D46
+FBE6        21EA4
+FBE7         5CBA
+FBE8         5DD7
+FBE9         82FC
+FBEA         382D
+FBEB        24901
+FBEC        22049
+FBED        22173
+FBEE         8287
+FBEF         3836
+FBF0         3BC2
+FBF1         5E2E
+FBF2         6A8A
+FBF4         5E7A
+FBF5        244BC
+FBF6        20CD3
+FBF7         53A6
+FBF8         4EB7
+FBFA         53A8
+FBFB        21771
+FBFC         5E09
+FBFD         5EF4
+FBFE        28482
+FC40         5EF9
+FC41         5EFB
+FC42         38A0
+FC43         5EFC
+FC44         683E
+FC45         941B
+FC46         5F0D
+FC47        201C1
+FC48        2F894
+FC49         3ADE
+FC4A         48AE
+FC4B        2133A
+FC4C         5F3A
+FC4D        26888
+FC4E        223D0
+FC50        22471
+FC51         5F63
+FC52         97BD
+FC53        26E6E
+FC54         5F72
+FC55         9340
+FC56        28A36
+FC57         5FA7
+FC58         5DB6
+FC59         3D5F
+FC5A        25250
+FC5B        21F6A
+FC5C        270F8
+FC5D        22668
+FC5E         91D6
+FC5F        2029E
+FC60        28A29
+FC61         6031
+FC62         6685
+FC63        21877
+FC64         3963
+FC65         3DC7
+FC66         3639
+FC67         5790
+FC68        227B4
+FC69         7971
+FC6A         3E40
+FC6B         609E
+FC6D         60B3
+FC6E        24982
+FC6F        2498F
+FC70        27A53
+FC71         74A4
+FC72         50E1
+FC73         5AA0
+FC74         6164
+FC75         8424
+FC76         6142
+FC77        2F8A6
+FC78        26ED2
+FC79         6181
+FC7A         51F4
+FC7B        20656
+FC7C         6187
+FC7D         5BAA
+FC7E        23FB7
+FCA1        2285F
+FCA2         61D3
+FCA3        28B9D
+FCA4        2995D
+FCA5         61D0
+FCA6         3932
+FCA7        22980
+FCA8        228C1
+FCA9         6023
+FCAA         615C
+FCAB         651E
+FCAC         638B
+FCAD        20118
+FCAE         62C5
+FCAF        21770
+FCB0         62D5
+FCB1        22E0D
+FCB2         636C
+FCB3        249DF
+FCB4         3A17
+FCB5         6438
+FCB6         63F8
+FCB7        2138E
+FCB8        217FC
+FCBA         6F8A
+FCBB        22E36
+FCBC         9814
+FCBD        2408C
+FCBE        2571D
+FCBF         64E1
+FCC0         64E5
+FCC1         947B
+FCC2         3A66
+FCC3         643A
+FCC4         3A57
+FCC5         654D
+FCC6         6F16
+FCC7        24A28
+FCC8        24A23
+FCC9         6585
+FCCA         656D
+FCCB         655F
+FCCC        2307E
+FCCD         65B5
+FCCE        24940
+FCCF         4B37
+FCD0         65D1
+FCD1         40D8
+FCD2        21829
+FCD3         65E0
+FCD4         65E3
+FCD5         5FDF
+FCD6        23400
+FCD7         6618
+FCD8        231F7
+FCD9        231F8
+FCDA         6644
+FCDB        231A4
+FCDC        231A5
+FCDD         664B
+FCDE        20E75
+FCDF         6667
+FCE0        251E6
+FCE1         6673
+FCE3        21E3D
+FCE4        23231
+FCE5        285F4
+FCE6        231C8
+FCE7        25313
+FCE8         77C5
+FCE9        228F7
+FCEA         99A4
+FCEB         6702
+FCEC        2439C
+FCED        24A21
+FCEE         3B2B
+FCEF         69FA
+FCF0        237C2
+FCF2         6767
+FCF3         6762
+FCF4        241CD
+FCF5        290ED
+FCF6         67D7
+FCF7         44E9
+FCF8         6822
+FCF9         6E50
+FCFA         923C
+FCFB         6801
+FCFC        233E6
+FCFD        26DA0
+FCFE         685D
+FD40        2346F
+FD41         69E1
+FD42         6A0B
+FD43        28ADF
+FD44         6973
+FD45         68C3
+FD46        235CD
+FD47         6901
+FD48         6900
+FD49         3D32
+FD4A         3A01
+FD4B        2363C
+FD4C         3B80
+FD4D         67AC
+FD4E         6961
+FD4F        28A4A
+FD50         42FC
+FD51         6936
+FD52         6998
+FD53         3BA1
+FD54        203C9
+FD55         8363
+FD56         5090
+FD57         69F9
+FD58        23659
+FD59        2212A
+FD5A         6A45
+FD5B        23703
+FD5C         6A9D
+FD5D         3BF3
+FD5E         67B1
+FD5F         6AC8
+FD60        2919C
+FD61         3C0D
+FD62         6B1D
+FD63        20923
+FD64         60DE
+FD65         6B35
+FD66         6B74
+FD67        227CD
+FD68         6EB5
+FD69        23ADB
+FD6A        203B5
+FD6B        21958
+FD6C         3740
+FD6D         5421
+FD6E        23B5A
+FD6F         6BE1
+FD70        23EFC
+FD71         6BDC
+FD72         6C37
+FD73        2248B
+FD74        248F1
+FD75        26B51
+FD76         6C5A
+FD77         8226
+FD78         6C79
+FD79        23DBC
+FD7A         44C5
+FD7B        23DBD
+FD7C        241A4
+FD7D        2490C
+FD7E        24900
+FDA1        23CC9
+FDA2         36E5
+FDA3         3CEB
+FDA4        20D32
+FDA5         9B83
+FDA6        231F9
+FDA7        22491
+FDA8         7F8F
+FDA9         6837
+FDAA        26D25
+FDAB        26DA1
+FDAC        26DEB
+FDAD         6D96
+FDAE         6D5C
+FDAF         6E7C
+FDB0         6F04
+FDB1        2497F
+FDB2        24085
+FDB3        26E72
+FDB4         8533
+FDB5        26F74
+FDB6         51C7
+FDB9         842E
+FDBA        28B21
+FDBC        23E2F
+FDBD         7453
+FDBE        23F82
+FDBF         79CC
+FDC0         6E4F
+FDC1         5A91
+FDC2        2304B
+FDC3         6FF8
+FDC4         370D
+FDC5         6F9D
+FDC6        23E30
+FDC7         6EFA
+FDC8        21497
+FDC9        2403D
+FDCA         4555
+FDCB         93F0
+FDCC         6F44
+FDCD         6F5C
+FDCE         3D4E
+FDCF         6F74
+FDD0        29170
+FDD1         3D3B
+FDD2         6F9F
+FDD3        24144
+FDD4         6FD3
+FDD5        24091
+FDD6        24155
+FDD7        24039
+FDD8        23FF0
+FDD9        23FB4
+FDDA        2413F
+FDDB         51DF
+FDDC        24156
+FDDD        24157
+FDDE        24140
+FDDF        261DD
+FDE0         704B
+FDE1         707E
+FDE2         70A7
+FDE3         7081
+FDE4         70CC
+FDE5         70D5
+FDE6         70D6
+FDE7         70DF
+FDE8         4104
+FDE9         3DE8
+FDEA         71B4
+FDEB         7196
+FDEC        24277
+FDED         712B
+FDEE         7145
+FDEF         5A88
+FDF0         714A
+FDF2         5C9C
+FDF3        24365
+FDF4         714F
+FDF5         9362
+FDF6        242C1
+FDF7         712C
+FDF8        2445A
+FDF9        24A27
+FDFA        24A22
+FDFB         71BA
+FDFC        28BE8
+FDFD         70BD
+FDFE         720E
+FE40         9442
+FE41         7215
+FE42         5911
+FE43         9443
+FE44         7224
+FE45         9341
+FE46        25605
+FE47         722E
+FE48         7240
+FE49        24974
+FE4A         68BD
+FE4B         7255
+FE4C         7257
+FE4D         3E55
+FE4E        23044
+FE4F         680D
+FE50         6F3D
+FE51         7282
+FE53         732B
+FE54        24823
+FE55        2882B
+FE56         48ED
+FE57        28804
+FE58         7328
+FE59         732E
+FE5A         73CF
+FE5B         73AA
+FE5C        20C3A
+FE5D        26A2E
+FE5E         73C9
+FE5F         7449
+FE60        241E2
+FE61        216E7
+FE62        24A24
+FE63         6623
+FE64         36C5
+FE65        249B7
+FE66        2498D
+FE67        249FB
+FE68         73F7
+FE69         7415
+FE6A         6903
+FE6B        24A26
+FE6C         7439
+FE6D        205C3
+FE6E         3ED7
+FE70        228AD
+FE71         7460
+FE72        28EB2
+FE73         7447
+FE74         73E4
+FE75         7476
+FE76         83B9
+FE77         746C
+FE78         3730
+FE79         7474
+FE7A         93F1
+FE7B         6A2C
+FE7C         7482
+FE7D         4953
+FE7E        24A8C
+FEA1        2415F
+FEA2        24A79
+FEA3        28B8F
+FEA4         5B46
+FEA5        28C03
+FEA6        2189E
+FEA7         74C8
+FEA8        21988
+FEA9         750E
+FEAB         751E
+FEAC        28ED9
+FEAD        21A4B
+FEAE         5BD7
+FEAF        28EAC
+FEB0         9385
+FEB1         754D
+FEB2         754A
+FEB3         7567
+FEB4         756E
+FEB5        24F82
+FEB6         3F04
+FEB7        24D13
+FEB8         758E
+FEB9         745D
+FEBA         759E
+FEBB         75B4
+FEBC         7602
+FEBD         762C
+FEBE         7651
+FEBF         764F
+FEC0         766F
+FEC1         7676
+FEC2        263F5
+FEC3         7690
+FEC4         81EF
+FEC5         37F8
+FEC6        26911
+FEC7        2690E
+FEC8         76A1
+FEC9         76A5
+FECA         76B7
+FECB         76CC
+FECC        26F9F
+FECD         8462
+FECE        2509D
+FECF        2517D
+FED0        21E1C
+FED1         771E
+FED2         7726
+FED3         7740
+FED4         64AF
+FED5        25220
+FED6         7758
+FED7        232AC
+FED8         77AF
+FED9        28964
+FEDA        28968
+FEDB        216C1
+FEDC         77F4
+FEDE        21376
+FEDF        24A12
+FEE0         68CA
+FEE1         78AF
+FEE2         78C7
+FEE3         78D3
+FEE4         96A5
+FEE5         792E
+FEE6        255E0
+FEE7         78D7
+FEE8         7934
+FEE9         78B1
+FEEA        2760C
+FEEB         8FB8
+FEEC         8884
+FEED        28B2B
+FEEE        26083
+FEEF        2261C
+FEF0         7986
+FEF1         8900
+FEF2         6902
+FEF3         7980
+FEF4        25857
+FEF5         799D
+FEF6        27B39
+FEF7         793C
+FEF8         79A9
+FEF9         6E2A
+FEFA        27126
+FEFB         3EA8
+FEFC         79C6
+FEFD        2910D
+FEFE         79D4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/HKSCS_XP.c2b	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,529 @@
+# Generated from HKSCS.Encoder
+#
+0xFA45    0xE005
+0xFA48    0xE008
+0xFA68    0xE028
+0xFA6B    0xE02B
+0xFAA5    0xE043
+0xFACC    0xE06A
+0xFACD    0xE06B
+0xFAD0    0xE06E
+0xFAE0    0xE07E
+0xFAE8    0xE086
+0xFAFA    0xE098
+0xFAFD    0xE09B
+0xFB43    0xE0A0
+0xFB4B    0xE0A8
+0xFB5E    0xE0BB
+0xFB65    0xE0C2
+0xFB70    0xE0CD
+0xFB7A    0xE0D7
+0xFB7D    0xE0DA
+0xFBB6    0xE0F1
+0xFBB9    0xE0F4
+0xFBBF    0xE0FA
+0xFBC1    0xE0FC
+0xFBC9    0xE104
+0xFBCA    0xE105
+0xFBD3    0xE10E
+0xFBDC    0xE117
+0xFBEA    0xE125
+0xFBEF    0xE12A
+0xFBF0    0xE12B
+0xFC42    0xE13C
+0xFC49    0xE143
+0xFC4A    0xE144
+0xFC59    0xE153
+0xFC64    0xE15E
+0xFC65    0xE15F
+0xFC66    0xE160
+0xFC6A    0xE164
+0xFCA6    0xE17E
+0xFCB4    0xE18C
+0xFCC2    0xE19A
+0xFCC4    0xE19C
+0xFCCF    0xE1A7
+0xFCD1    0xE1A9
+0xFCEE    0xE1C6
+0xFCF7    0xE1CF
+0xFD49    0xE1E0
+0xFD4A    0xE1E1
+0xFD4C    0xE1E3
+0xFD50    0xE1E7
+0xFD53    0xE1EA
+0xFD5D    0xE1F4
+0xFD61    0xE1F8
+0xFD6C    0xE203
+0xFD7A    0xE211
+0xFDA2    0xE217
+0xFDA3    0xE218
+0xFDC4    0xE239
+0xFDCA    0xE23F
+0xFDCE    0xE243
+0xFDD1    0xE246
+0xFDE8    0xE25D
+0xFDE9    0xE25E
+0xFE4D    0xE281
+0xFE56    0xE28A
+0xFE64    0xE298
+0xFE6E    0xE2A2
+0xFE78    0xE2AC
+0xFE7D    0xE2B1
+0xFEB6    0xE2C8
+0xFEC5    0xE2D7
+0xFEFB    0xE30D
+0x8E45    0xE316
+0x8E55    0xE326
+0x8E59    0xE32A
+0x8E6B    0xE33C
+0x8EA2    0xE351
+0x8EAF    0xE35E
+0x8EB9    0xE368
+0x8EC7    0xE376
+0x8EC9    0xE378
+0x8ED8    0xE387
+0x8EED    0xE39C
+0x8EFE    0xE3AD
+0x8F45    0xE3B3
+0x8F50    0xE3BE
+0x8F54    0xE3C2
+0x8F59    0xE3C7
+0x8F5D    0xE3CB
+0x8F63    0xE3D1
+0x8F64    0xE3D2
+0x8F70    0xE3DE
+0x8F74    0xE3E2
+0x8F76    0xE3E4
+0x8F7A    0xE3E8
+0x8F7C    0xE3EA
+0x8FA9    0xE3F5
+0x8FAB    0xE3F7
+0x8FBA    0xE406
+0x8FC2    0xE40E
+0x8FDB    0xE427
+0x8FEB    0xE437
+0x8FF1    0xE43D
+0x8FFD    0xE449
+0x9044    0xE44F
+0x9055    0xE460
+0x9060    0xE46B
+0x906F    0xE47A
+0x90AA    0xE493
+0x90B7    0xE4A0
+0x90BC    0xE4A5
+0x90C0    0xE4A9
+0x90C9    0xE4B2
+0x90D5    0xE4BE
+0x90D6    0xE4BF
+0x90D7    0xE4C0
+0x90F5    0xE4DE
+0x90FA    0xE4E3
+0x90FC    0xE4E5
+0x9145    0xE4ED
+0x914F    0xE4F7
+0x9158    0xE500
+0x915F    0xE507
+0x9166    0xE50E
+0x91AE    0xE534
+0x91B3    0xE539
+0x91B4    0xE53A
+0x91B5    0xE53B
+0x91B7    0xE53D
+0x91BB    0xE541
+0x91CD    0xE553
+0x91E3    0xE569
+0x91EE    0xE574
+0x91F2    0xE578
+0x91F5    0xE57B
+0x91F9    0xE57F
+0x924C    0xE591
+0x9251    0xE596
+0x9252    0xE597
+0x9253    0xE598
+0x9257    0xE59C
+0x9269    0xE5AE
+0x9274    0xE5B9
+0x9277    0xE5BC
+0x92BD    0xE5E0
+0x92C9    0xE5EC
+0x92D2    0xE5F5
+0x92D7    0xE5FA
+0x92DB    0xE5FE
+0x92E9    0xE60C
+0x92FA    0xE61D
+0x9347    0xE629
+0x934B    0xE62D
+0x9357    0xE639
+0x9359    0xE63B
+0x935B    0xE63D
+0x936F    0xE651
+0x93A4    0xE664
+0x93B5    0xE675
+0x93C1    0xE681
+0x93C2    0xE682
+0x93CD    0xE68D
+0x93D4    0xE694
+0x93DD    0xE69D
+0x93E0    0xE6A0
+0x93E4    0xE6A4
+0x93E9    0xE6A9
+0x93EB    0xE6AB
+0x93F6    0xE6B6
+0x9449    0xE6C8
+0x9463    0xE6E2
+0x9464    0xE6E3
+0x9469    0xE6E8
+0x946E    0xE6ED
+0x9470    0xE6EF
+0x9472    0xE6F1
+0x9475    0xE6F4
+0x9479    0xE6F8
+0x947E    0xE6FD
+0x94A1    0xE6FE
+0x94A3    0xE700
+0x94B5    0xE712
+0x94B9    0xE716
+0x94BC    0xE719
+0x94C9    0xE726
+0x94D1    0xE72E
+0x94D3    0xE730
+0x94DB    0xE738
+0x94DD    0xE73A
+0x94DE    0xE73B
+0x94EC    0xE749
+0x94EF    0xE74C
+0x9544    0xE760
+0x955A    0xE776
+0x9562    0xE77E
+0x9564    0xE780
+0x9573    0xE78F
+0x95B0    0xE7AA
+0x95B2    0xE7AC
+0x95B3    0xE7AD
+0x95B4    0xE7AE
+0x95C6    0xE7C0
+0x95C7    0xE7C1
+0x95CD    0xE7C7
+0x95D1    0xE7CB
+0x95D6    0xE7D0
+0x95DB    0xE7D5
+0x95DF    0xE7D9
+0x95EC    0xE7E6
+0x95F0    0xE7EA
+0x95F6    0xE7F0
+0x95FC    0xE7F6
+0x9641    0xE7FA
+0x964D    0xE806
+0x965C    0xE815
+0x9662    0xE81B
+0x9664    0xE81D
+0x9669    0xE822
+0x966B    0xE824
+0x9675    0xE82E
+0x9678    0xE831
+0x9679    0xE832
+0x96A6    0xE83D
+0x96A8    0xE83F
+0x96B9    0xE850
+0x96BC    0xE853
+0x96C8    0xE85F
+0x96D4    0xE86B
+0x96D6    0xE86D
+0x96DF    0xE876
+0x96E9    0xE880
+0x96F7    0xE88E
+0x9743    0xE899
+0x9745    0xE89B
+0x9746    0xE89C
+0x975D    0xE8B3
+0x9761    0xE8B7
+0x9766    0xE8BC
+0x977C    0xE8D2
+0x97AE    0xE8E2
+0x97B0    0xE8E4
+0x97B8    0xE8EC
+0x97BA    0xE8EE
+0x97C0    0xE8F4
+0x97C2    0xE8F6
+0x97C3    0xE8F7
+0x97C5    0xE8F9
+0x97C6    0xE8FA
+0x97C9    0xE8FD
+0x97CD    0xE901
+0x97D2    0xE906
+0x97D7    0xE90B
+0x97DA    0xE90E
+0x97DB    0xE90F
+0x97DC    0xE910
+0x97DD    0xE911
+0x97DE    0xE912
+0x97E1    0xE915
+0x97E7    0xE91B
+0x97FD    0xE931
+0x97FE    0xE932
+0x9853    0xE946
+0x9856    0xE949
+0x9872    0xE965
+0x9879    0xE96C
+0x98A8    0xE979
+0x98BC    0xE98D
+0x98C3    0xE994
+0x98C5    0xE996
+0x98CB    0xE99C
+0x98CC    0xE99D
+0x98CD    0xE99E
+0x98CE    0xE99F
+0x98D0    0xE9A1
+0x98D1    0xE9A2
+0x98D6    0xE9A7
+0x98D9    0xE9AA
+0x98DB    0xE9AC
+0x98DD    0xE9AE
+0x98E4    0xE9B5
+0x98E6    0xE9B7
+0x98E8    0xE9B9
+0x98E9    0xE9BA
+0x98EB    0xE9BC
+0x98EC    0xE9BD
+0x98F4    0xE9C5
+0x98FE    0xE9CF
+0x9940    0xE9D0
+0x9946    0xE9D6
+0x9948    0xE9D8
+0x994B    0xE9DB
+0x994E    0xE9DE
+0x9955    0xE9E5
+0x9956    0xE9E6
+0x9959    0xE9E9
+0x995B    0xE9EB
+0x9967    0xE9F7
+0x996E    0xE9FE
+0x9973    0xEA03
+0x997A    0xEA0A
+0x997B    0xEA0B
+0x99A1    0xEA0F
+0x99A5    0xEA13
+0x99A7    0xEA15
+0x99AD    0xEA1B
+0x99B3    0xEA21
+0x99BC    0xEA2A
+0x99C3    0xEA31
+0x99C7    0xEA35
+0x99CE    0xEA3C
+0x99CF    0xEA3D
+0x99DE    0xEA4C
+0x99E1    0xEA4F
+0x99E9    0xEA57
+0x99F5    0xEA63
+0x99F8    0xEA66
+0x9A48    0xEA75
+0x9A49    0xEA76
+0x9A50    0xEA7D
+0x9A55    0xEA82
+0x9A58    0xEA85
+0x9A5A    0xEA87
+0x9A5C    0xEA89
+0x9A60    0xEA8D
+0x9A63    0xEA90
+0x9A6E    0xEA9B
+0x9A70    0xEA9D
+0x9A79    0xEAA6
+0x9A7B    0xEAA8
+0x9ABD    0xEAC8
+0x9AEC    0xEAF7
+0x9B4D    0xEB17
+0x9BA9    0xEB51
+0x9BAA    0xEB52
+0x9BB8    0xEB60
+0x9BBE    0xEB66
+0x9BC2    0xEB6A
+0x9BDF    0xEB87
+0x9BE3    0xEB8B
+0x9BEA    0xEB92
+0x9BEE    0xEB96
+0x9C4A    0xEBB1
+0x9C5C    0xEBC3
+0x9C6F    0xEBD6
+0x9C79    0xEBE0
+0x9CA1    0xEBE6
+0x9CA5    0xEBEA
+0x9CBA    0xEBFF
+0x9CBB    0xEC00
+0x9CBE    0xEC03
+0x9CC6    0xEC0B
+0x9CC8    0xEC0D
+0x9CD1    0xEC16
+0x9CF8    0xEC3D
+0x9D46    0xEC4A
+0x9D49    0xEC4D
+0x9D4F    0xEC53
+0x9D51    0xEC55
+0x9D5D    0xEC61
+0x9D73    0xEC77
+0x9D78    0xEC7C
+0x9D7B    0xEC7F
+0x9DA5    0xEC87
+0x9DAA    0xEC8C
+0x9DAD    0xEC8F
+0x9DB5    0xEC97
+0x9DCC    0xECAE
+0x9DCE    0xECB0
+0x9DEE    0xECD0
+0x9DF3    0xECD5
+0x9E53    0xECF4
+0x9E64    0xED05
+0x9E7A    0xED1B
+0x9E7E    0xED1F
+0x9EA4    0xED23
+0x9EB4    0xED33
+0x9EB8    0xED37
+0x9EB9    0xED38
+0x9EBB    0xED3A
+0x9EC5    0xED44
+0x9EC9    0xED48
+0x9ECD    0xED4C
+0x9EDA    0xED59
+0x9EDD    0xED5C
+0x9EDE    0xED5D
+0x9EDF    0xED5E
+0x9EE5    0xED64
+0x9EE7    0xED66
+0x9EEE    0xED6D
+0x9EF0    0xED6F
+0x9EFC    0xED7B
+0x9F70    0xEDAE
+0x9FA5    0xEDC1
+0x9FD7    0xEDF3
+0x9FD9    0xEDF5
+0xA053    0xEE2E
+0xA068    0xEE43
+0xA06A    0xEE45
+0xA06F    0xEE4A
+0xA078    0xEE53
+0xA07E    0xEE59
+0xA0AC    0xEE65
+0xA0D0    0xEE89
+0xA0DA    0xEE93
+0xA0DE    0xEE97
+0xA0E6    0xEE9F
+0xA0F9    0xEEB2
+0x89B7    0xF3F5
+0x89BA    0xF3F8
+0x89BF    0xF3FD
+0x89C5    0xF403
+0x89D5    0xF413
+0x89D7    0xF415
+0x89DA    0xF418
+0x89DB    0xF419
+0x89DC    0xF41A
+0x89E6    0xF424
+0x89E8    0xF426
+0x89EA    0xF428
+0x89ED    0xF42B
+0x89EE    0xF42C
+0x89EF    0xF42D
+0x89F9    0xF437
+0x89FB    0xF439
+0x89FC    0xF43A
+0x89FE    0xF43C
+0x8A48    0xF445
+0x8A4D    0xF44A
+0x8A51    0xF44E
+0x8A52    0xF44F
+0x8A67    0xF464
+0x8A6B    0xF468
+0x8A6D    0xF46A
+0x8A6E    0xF46B
+0x8A76    0xF473
+0x8A7D    0xF47A
+0x8AAC    0xF487
+0x8AAE    0xF489
+0x8AB8    0xF493
+0x8AB9    0xF494
+0x8ABB    0xF496
+0x8AC2    0xF49D
+0x8AC7    0xF4A2
+0x8AD0    0xF4AB
+0x8AD1    0xF4AC
+0x8AD3    0xF4AE
+0x8ADA    0xF4B5
+0x8AEB    0xF4C6
+0x8AF0    0xF4CB
+0x8AFB    0xF4D6
+0x8B47    0xF4E1
+0x8B60    0xF4FA
+0x8B68    0xF502
+0x8B6A    0xF504
+0x8BA6    0xF51E
+0x8BB1    0xF529
+0x8BB5    0xF52D
+0x8BB6    0xF52E
+0x8BB8    0xF530
+0x8BBE    0xF536
+0x8BC8    0xF540
+0x8BCC    0xF544
+0x8BDC    0xF554
+0x8D63    0xF637
+0x8D64    0xF638
+0x8D67    0xF63B
+0x8D68    0xF63C
+0x8D6D    0xF641
+0x8D6E    0xF642
+0x8D6F    0xF643
+0x8D70    0xF644
+0x8D74    0xF648
+0x8D78    0xF64C
+0x8D7D    0xF651
+0x8DA1    0xF653
+0x8DA6    0xF658
+0x8DAB    0xF65D
+0x8DAD    0xF65F
+0x8DB0    0xF662
+0x8DB2    0xF664
+0x8DB4    0xF666
+0x8DB7    0xF669
+0x8DBA    0xF66C
+0x8DBB    0xF66D
+0x8DBC    0xF66E
+0x8DC3    0xF675
+0x8DC5    0xF677
+0x8DCA    0xF67C
+0x8DCC    0xF67E
+0x8DD6    0xF688
+0x8DDB    0xF68D
+0x8DEB    0xF69D
+0x8DEF    0xF6A1
+0x8DF0    0xF6A2
+0x8DF3    0xF6A5
+0x8DF5    0xF6A7
+0x8DFC    0xF6AE
+0x8DFD    0xF6AF
+0xC6CD    0xF6DD
+0xC8D6    0xF820
+0xC8D7    0xF821
+0xC8D8    0xF822
+0xC8D9    0xF823
+0xC8DA    0xF824
+0xC8DB    0xF825
+0xC8DC    0xF826
+0xC8DD    0xF827
+0xC8DE    0xF828
+0xC8DF    0xF829
+0xC8E0    0xF82A
+0xC8E1    0xF82B
+0xC8E2    0xF82C
+0xC8E3    0xF82D
+0xC8E4    0xF82E
+0xC8E5    0xF82F
+0xC8E6    0xF830
+0xC8E7    0xF831
+0xC8E8    0xF832
+0xC8E9    0xF833
+0xC8EA    0xF834
+0xC8EB    0xF835
+0xC8EC    0xF836
+0xC8ED    0xF837
+0xC8EE    0xF838
+0xC8EF    0xF839
+0xC8F0    0xF83A
+0xC8F1    0xF83B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/CharsetMapping/HKSCS_XP.map	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,4704 @@
+# Generated from HKSCS.Encoder
+#
+0x8840    0xF303
+0x8841    0xF304
+0x8842    0xF305
+0x8843    0xF306
+0x8844    0xF307
+0x8845    0xF308
+0x8846    0xF309
+0x8847    0xF30A
+0x8848    0xF30B
+0x8849    0xF30C
+0x884A    0xF30D
+0x884B    0xF30E
+0x884C    0xF30F
+0x884D    0xF310
+0x884E    0xF311
+0x884F    0xF312
+0x8850    0xF313
+0x8851    0xF314
+0x8852    0xF315
+0x8853    0xF316
+0x8854    0xF317
+0x8855    0xF318
+0x8856    0x0100
+0x8857    0x00C1
+0x8858    0x01CD
+0x8859    0x00C0
+0x885A    0x0112
+0x885B    0x00C9
+0x885C    0x011A
+0x885D    0x00C8
+0x885E    0x014C
+0x885F    0x00D3
+0x8860    0x01D1
+0x8861    0x00D2
+0x8862    0xF325
+0x8863    0x1EBE
+0x8864    0xF327
+0x8865    0x1EC0
+0x8866    0x00CA
+0x8867    0x0101
+0x8868    0x00E1
+0x8869    0x01CE
+0x886A    0x00E0
+0x886B    0x0251
+0x886C    0x0113
+0x886D    0x00E9
+0x886E    0x011B
+0x886F    0x00E8
+0x8870    0x012B
+0x8871    0x00ED
+0x8872    0x01D0
+0x8873    0x00EC
+0x8874    0x014D
+0x8875    0x00F3
+0x8876    0x01D2
+0x8877    0x00F2
+0x8878    0x016B
+0x8879    0x00FA
+0x887A    0x01D4
+0x887B    0x00F9
+0x887C    0x01D6
+0x887D    0x01D8
+0x887E    0x01DA
+0x88A1    0x01DC
+0x88A2    0x00FC
+0x88A3    0xF344
+0x88A4    0x1EBF
+0x88A5    0xF346
+0x88A6    0x1EC1
+0x88A7    0x00EA
+0x88A8    0x0261
+0x88A9    0xF34A
+0x88AA    0xF34B
+0x8940    0xF3A0
+0x8941    0xF3A1
+0x8943    0x650A
+0x8946    0x4E3D
+0x8947    0x6EDD
+0x8948    0x9D4E
+0x8949    0x91DF
+0x894C    0xF3AC
+0x894D    0x6491
+0x894E    0x4F1A
+0x894F    0x4F28
+0x8950    0x4FA8
+0x8951    0x5156
+0x8952    0x5174
+0x8953    0x519C
+0x8954    0x51E4
+0x8955    0x52A1
+0x8956    0x52A8
+0x8957    0x533B
+0x8958    0x534E
+0x8959    0x53D1
+0x895A    0x53D8
+0x895B    0x56E2
+0x895C    0x58F0
+0x895D    0x5904
+0x895E    0x5907
+0x895F    0x5932
+0x8960    0x5934
+0x8961    0x5B66
+0x8962    0x5B9E
+0x8963    0x5B9F
+0x8964    0x5C9A
+0x8965    0x5E86
+0x8966    0x603B
+0x8967    0x6589
+0x8968    0x67FE
+0x8969    0x6804
+0x896A    0x6865
+0x896B    0x6D4E
+0x896C    0x70BC
+0x896D    0x7535
+0x896E    0x7EA4
+0x896F    0x7EAC
+0x8970    0x7EBA
+0x8971    0x7EC7
+0x8972    0x7ECF
+0x8973    0x7EDF
+0x8974    0x7F06
+0x8975    0x7F37
+0x8976    0x827A
+0x8977    0x82CF
+0x8978    0x836F
+0x8979    0x89C6
+0x897A    0x8BBE
+0x897B    0x8BE2
+0x897C    0x8F66
+0x897D    0x8F67
+0x897E    0x8F6E
+0x89A1    0x7411
+0x89A2    0x7CFC
+0x89A3    0x7DCD
+0x89A4    0x6946
+0x89A5    0x7AC9
+0x89A6    0x5227
+0x89AB    0x918C
+0x89AC    0x78B8
+0x89AD    0x915E
+0x89AE    0x80BC
+0x89B0    0x8D0B
+0x89B1    0x80F6
+0x89B2    0xF3F0
+0x89B5    0x809F
+0x89B6    0x9EC7
+0x89B7    0x4CCD
+0x89B8    0x9DC9
+0x89B9    0x9E0C
+0x89BA    0x4C3E
+0x89BB    0xF3F9
+0x89BC    0xF3FA
+0x89BD    0x9E0A
+0x89BE    0xF3FC
+0x89BF    0x35C1
+0x89C1    0x6E9A
+0x89C2    0x823E
+0x89C3    0x7519
+0x89C5    0x4911
+0x89C6    0x9A6C
+0x89C7    0x9A8F
+0x89C8    0x9F99
+0x89C9    0x7987
+0x89CA    0xF408
+0x89CB    0xF409
+0x89CC    0xF40A
+0x89CD    0xF40B
+0x89CE    0x4E24
+0x89CF    0x4E81
+0x89D0    0x4E80
+0x89D1    0x4E87
+0x89D2    0x4EBF
+0x89D3    0x4EEB
+0x89D4    0x4F37
+0x89D5    0x344C
+0x89D6    0x4FBD
+0x89D7    0x3E48
+0x89D8    0x5003
+0x89D9    0x5088
+0x89DA    0x347D
+0x89DB    0x3493
+0x89DC    0x34A5
+0x89DD    0x5186
+0x89DE    0x5905
+0x89DF    0x51DB
+0x89E0    0x51FC
+0x89E1    0x5205
+0x89E2    0x4E89
+0x89E3    0x5279
+0x89E4    0x5290
+0x89E5    0x5327
+0x89E6    0x35C7
+0x89E7    0x53A9
+0x89E8    0x3551
+0x89E9    0x53B0
+0x89EA    0x3553
+0x89EB    0x53C2
+0x89EC    0x5423
+0x89ED    0x356D
+0x89EE    0x3572
+0x89EF    0x3681
+0x89F0    0x5493
+0x89F1    0x54A3
+0x89F2    0x54B4
+0x89F3    0x54B9
+0x89F4    0x54D0
+0x89F5    0x54EF
+0x89F6    0x5518
+0x89F7    0x5523
+0x89F8    0x5528
+0x89F9    0x3598
+0x89FA    0x553F
+0x89FB    0x35A5
+0x89FC    0x35BF
+0x89FD    0x55D7
+0x89FE    0x35C5
+0x8A40    0xF43D
+0x8A41    0x5525
+0x8A43    0xF440
+0x8A44    0xF441
+0x8A45    0xF442
+0x8A46    0x5590
+0x8A47    0xF444
+0x8A48    0x39EC
+0x8A49    0xF446
+0x8A4A    0x8E46
+0x8A4B    0xF448
+0x8A4C    0xF449
+0x8A4D    0x4053
+0x8A4E    0xF44B
+0x8A4F    0x777A
+0x8A50    0xF44D
+0x8A51    0x3A34
+0x8A52    0x47D5
+0x8A53    0xF450
+0x8A54    0xF451
+0x8A55    0xF452
+0x8A56    0x64DD
+0x8A57    0xF454
+0x8A58    0xF455
+0x8A59    0xF456
+0x8A5A    0xF457
+0x8A5B    0x648D
+0x8A5C    0x8E7E
+0x8A5D    0xF45A
+0x8A5E    0xF45B
+0x8A5F    0xF45C
+0x8A60    0xF45D
+0x8A61    0xF45E
+0x8A62    0xF45F
+0x8A64    0xF461
+0x8A65    0xF462
+0x8A66    0xF463
+0x8A67    0x47F4
+0x8A68    0xF465
+0x8A69    0xF466
+0x8A6A    0x9AB2
+0x8A6B    0x3A67
+0x8A6C    0xF469
+0x8A6D    0x3FED
+0x8A6E    0x3506
+0x8A6F    0xF46C
+0x8A70    0xF46D
+0x8A71    0xF46E
+0x8A72    0xF46F
+0x8A73    0x9D6E
+0x8A74    0x9815
+0x8A76    0x43D9
+0x8A77    0xF474
+0x8A78    0x64B4
+0x8A79    0x54E3
+0x8A7A    0xF477
+0x8A7B    0xF478
+0x8A7C    0xF479
+0x8A7D    0x39FB
+0x8A7E    0xF47B
+0x8AA1    0xF47C
+0x8AA2    0xF47D
+0x8AA3    0xF47E
+0x8AA4    0x64EA
+0x8AA5    0xF480
+0x8AA6    0xF481
+0x8AA7    0x8E68
+0x8AA8    0xF483
+0x8AA9    0xF484
+0x8AAA    0xF485
+0x8AAC    0x480B
+0x8AAD    0xF488
+0x8AAE    0x3FFA
+0x8AAF    0x5873
+0x8AB0    0xF48B
+0x8AB2    0xF48D
+0x8AB3    0xF48E
+0x8AB4    0xF48F
+0x8AB5    0xF490
+0x8AB6    0xF491
+0x8AB7    0x5579
+0x8AB8    0x40BB
+0x8AB9    0x43BA
+0x8ABB    0x4AB4
+0x8ABC    0xF497
+0x8ABD    0xF498
+0x8ABE    0x81AA
+0x8ABF    0x98F5
+0x8AC0    0xF49B
+0x8AC1    0x6379
+0x8AC2    0x39FE
+0x8AC3    0xF49E
+0x8AC4    0x8DC0
+0x8AC5    0x56A1
+0x8AC6    0x647C
+0x8AC7    0x3E43
+0x8AC9    0xF4A4
+0x8ACA    0xF4A5
+0x8ACB    0xF4A6
+0x8ACC    0xF4A7
+0x8ACE    0xF4A9
+0x8ACF    0xF4AA
+0x8AD0    0x3992
+0x8AD1    0x3A06
+0x8AD2    0xF4AD
+0x8AD3    0x3578
+0x8AD4    0xF4AF
+0x8AD5    0xF4B0
+0x8AD6    0x5652
+0x8AD7    0xF4B2
+0x8AD8    0xF4B3
+0x8AD9    0xF4B4
+0x8ADA    0x34BC
+0x8ADB    0x6C3D
+0x8ADC    0xF4B7
+0x8ADF    0xF4BA
+0x8AE0    0xF4BB
+0x8AE1    0xF4BC
+0x8AE2    0xF4BD
+0x8AE3    0xF4BE
+0x8AE4    0xF4BF
+0x8AE5    0xF4C0
+0x8AE6    0xF4C1
+0x8AE7    0x7F93
+0x8AE8    0xF4C3
+0x8AE9    0xF4C4
+0x8AEA    0xF4C5
+0x8AEB    0x35FB
+0x8AEC    0xF4C7
+0x8AED    0xF4C8
+0x8AEE    0xF4C9
+0x8AEF    0xF4CA
+0x8AF0    0x3F93
+0x8AF1    0xF4CC
+0x8AF2    0xF4CD
+0x8AF3    0xF4CE
+0x8AF4    0xF4CF
+0x8AF6    0xF4D1
+0x8AF7    0xF4D2
+0x8AF8    0xF4D3
+0x8AF9    0xF4D4
+0x8AFA    0xF4D5
+0x8AFB    0x3FF9
+0x8AFC    0xF4D7
+0x8AFD    0x6432
+0x8AFE    0xF4D9
+0x8B40    0xF4DA
+0x8B41    0xF4DB
+0x8B42    0xF4DC
+0x8B43    0xF4DD
+0x8B44    0xF4DE
+0x8B45    0xF4DF
+0x8B46    0xF4E0
+0x8B47    0x3A18
+0x8B48    0xF4E2
+0x8B49    0xF4E3
+0x8B4A    0xF4E4
+0x8B4B    0xF4E5
+0x8B4C    0xF4E6
+0x8B4D    0xF4E7
+0x8B4E    0xF4E8
+0x8B4F    0xF4E9
+0x8B50    0x95AA
+0x8B51    0x54CC
+0x8B52    0x82C4
+0x8B53    0x55B9
+0x8B55    0xF4EF
+0x8B56    0x9C26
+0x8B57    0x9AB6
+0x8B58    0xF4F2
+0x8B59    0xF4F3
+0x8B5A    0x7140
+0x8B5B    0x816D
+0x8B5C    0x80EC
+0x8B5D    0x5C1C
+0x8B5E    0xF4F8
+0x8B5F    0x8134
+0x8B60    0x3797
+0x8B61    0x535F
+0x8B62    0xF4FC
+0x8B63    0x91B6
+0x8B64    0xF4FE
+0x8B65    0xF4FF
+0x8B66    0xF500
+0x8B67    0xF501
+0x8B68    0x35DD
+0x8B69    0xF503
+0x8B6A    0x3609
+0x8B6B    0xF505
+0x8B6C    0x56AF
+0x8B6D    0xF507
+0x8B6E    0xF508
+0x8B6F    0xF509
+0x8B70    0xF50A
+0x8B71    0xF50B
+0x8B72    0xF50C
+0x8B73    0xF50D
+0x8B74    0xF50E
+0x8B75    0xF50F
+0x8B76    0xF510
+0x8B77    0xF511
+0x8B78    0x5A54
+0x8B79    0xF513
+0x8B7A    0xF514
+0x8B7B    0xF515
+0x8B7C    0xF516
+0x8B7D    0x579C
+0x8B7E    0xF518
+0x8BA1    0xF519
+0x8BA2    0xF51A
+0x8BA3    0xF51B
+0x8BA4    0xF51C
+0x8BA5    0xF51D
+0x8BA6    0x3703
+0x8BA7    0xF51F
+0x8BA8    0xF520
+0x8BA9    0xF521
+0x8BAA    0xF522
+0x8BAB    0xF523
+0x8BAC    0xF524
+0x8BAD    0xF525
+0x8BAE    0xF526
+0x8BAF    0x5899
+0x8BB0    0x5268
+0x8BB1    0x361A
+0x8BB2    0xF52A
+0x8BB3    0x7BB2
+0x8BB4    0x5B68
+0x8BB5    0x4800
+0x8BB6    0x4B2C
+0x8BB7    0x9F27
+0x8BB8    0x49E7
+0x8BB9    0x9C1F
+0x8BBA    0x9B8D
+0x8BBB    0xF533
+0x8BBC    0xF534
+0x8BBD    0x55FB
+0x8BBE    0x35F2
+0x8BBF    0x5689
+0x8BC0    0x4E28
+0x8BC1    0x5902
+0x8BC2    0xF53A
+0x8BC3    0xF53B
+0x8BC4    0x9751
+0x8BC5    0xF53D
+0x8BC6    0x4E5B
+0x8BC7    0x4EBB
+0x8BC8    0x353E
+0x8BC9    0x5C23
+0x8BCA    0x5F51
+0x8BCB    0x5FC4
+0x8BCC    0x38FA
+0x8BCD    0x624C
+0x8BCE    0x6535
+0x8BCF    0x6B7A
+0x8BD0    0x6C35
+0x8BD1    0x6C3A
+0x8BD2    0x706C
+0x8BD3    0x722B
+0x8BD4    0x4E2C
+0x8BD5    0x72AD
+0x8BD6    0xF54E
+0x8BD7    0x7F52
+0x8BD8    0x793B
+0x8BD9    0x7CF9
+0x8BDA    0x7F53
+0x8BDB    0xF553
+0x8BDC    0x34C1
+0x8BDE    0xF556
+0x8BDF    0x8002
+0x8BE0    0x8080
+0x8BE1    0xF559
+0x8BE2    0xF55A
+0x8BE3    0x535D
+0x8BE4    0x8864
+0x8BE5    0x89C1
+0x8BE6    0xF55E
+0x8BE7    0x8BA0
+0x8BE8    0x8D1D
+0x8BE9    0x9485
+0x8BEA    0x9578
+0x8BEB    0x957F
+0x8BEC    0x95E8
+0x8BED    0xF565
+0x8BEE    0x97E6
+0x8BEF    0x9875
+0x8BF0    0x98CE
+0x8BF1    0x98DE
+0x8BF2    0x9963
+0x8BF3    0xF56B
+0x8BF4    0x9C7C
+0x8BF5    0x9E1F
+0x8BF6    0x9EC4
+0x8BF7    0x6B6F
+0x8BF8    0x9F9C
+0x8BF9    0x4E37
+0x8BFA    0xF572
+0x8BFB    0x961D
+0x8BFC    0x6237
+0x8BFD    0x94A2
+0x8D60    0x5D3E
+0x8D61    0x5D48
+0x8D62    0x5D56
+0x8D63    0x3DFC
+0x8D64    0x380F
+0x8D65    0x5DA4
+0x8D66    0x5DB9
+0x8D67    0x3820
+0x8D68    0x3838
+0x8D69    0x5E42
+0x8D6A    0x5EBD
+0x8D6B    0x5F25
+0x8D6C    0x5F83
+0x8D6D    0x3908
+0x8D6E    0x3914
+0x8D6F    0x393F
+0x8D70    0x394D
+0x8D71    0x60D7
+0x8D72    0x613D
+0x8D73    0x5CE5
+0x8D74    0x3989
+0x8D75    0x61B7
+0x8D76    0x61B9
+0x8D77    0x61CF
+0x8D78    0x39B8
+0x8D79    0x622C
+0x8D7A    0x6290
+0x8D7B    0x62E5
+0x8D7C    0x6318
+0x8D7D    0x39F8
+0x8D7E    0x56B1
+0x8DA1    0x3A03
+0x8DA2    0x63E2
+0x8DA3    0x63FB
+0x8DA4    0x6407
+0x8DA5    0x645A
+0x8DA6    0x3A4B
+0x8DA7    0x64C0
+0x8DA8    0x5D15
+0x8DA9    0x5621
+0x8DAA    0x9F9F
+0x8DAB    0x3A97
+0x8DAC    0x6586
+0x8DAD    0x3ABD
+0x8DAE    0x65FF
+0x8DAF    0x6653
+0x8DB0    0x3AF2
+0x8DB1    0x6692
+0x8DB2    0x3B22
+0x8DB3    0x6716
+0x8DB4    0x3B42
+0x8DB5    0x67A4
+0x8DB6    0x6800
+0x8DB7    0x3B58
+0x8DB8    0x684A
+0x8DB9    0x6884
+0x8DBA    0x3B72
+0x8DBB    0x3B71
+0x8DBC    0x3B7B
+0x8DBD    0x6909
+0x8DBE    0x6943
+0x8DBF    0x725C
+0x8DC0    0x6964
+0x8DC1    0x699F
+0x8DC2    0x6985
+0x8DC3    0x3BBC
+0x8DC4    0x69D6
+0x8DC5    0x3BDD
+0x8DC6    0x6A65
+0x8DC7    0x6A74
+0x8DC8    0x6A71
+0x8DC9    0x6A82
+0x8DCA    0x3BEC
+0x8DCB    0x6A99
+0x8DCC    0x3BF2
+0x8DCD    0x6AAB
+0x8DCE    0x6AB5
+0x8DCF    0x6AD4
+0x8DD0    0x6AF6
+0x8DD1    0x6B81
+0x8DD2    0x6BC1
+0x8DD3    0x6BEA
+0x8DD4    0x6C75
+0x8DD5    0x6CAA
+0x8DD6    0x3CCB
+0x8DD7    0x6D02
+0x8DD8    0x6D06
+0x8DD9    0x6D26
+0x8DDA    0x6D81
+0x8DDB    0x3CEF
+0x8DDC    0x6DA4
+0x8DDD    0x6DB1
+0x8DDE    0x6E15
+0x8DDF    0x6E18
+0x8DE0    0x6E29
+0x8DE1    0x6E86
+0x8DE2    0xF694
+0x8DE3    0x6EBB
+0x8DE4    0x6EE2
+0x8DE5    0x6EDA
+0x8DE6    0x9F7F
+0x8DE7    0x6EE8
+0x8DE8    0x6EE9
+0x8DE9    0x6F24
+0x8DEA    0x6F34
+0x8DEB    0x3D46
+0x8DEC    0xF69E
+0x8DED    0x6F81
+0x8DEE    0x6FBE
+0x8DEF    0x3D6A
+0x8DF0    0x3D75
+0x8DF1    0x71B7
+0x8DF2    0x5C99
+0x8DF3    0x3D8A
+0x8DF4    0x702C
+0x8DF5    0x3D91
+0x8DF6    0x7050
+0x8DF7    0x7054
+0x8DF8    0x706F
+0x8DF9    0x707F
+0x8DFA    0x7089
+0x8DFB    0xF6AD
+0x8DFC    0x43C1
+0x8DFD    0x35F1
+0x8DFE    0xF6B0
+0x8E40    0xE311
+0x8E41    0x57BE
+0x8E42    0xE313
+0x8E43    0x713E
+0x8E44    0xE315
+0x8E45    0x364E
+0x8E46    0x69A2
+0x8E47    0xE318
+0x8E48    0x5B74
+0x8E49    0x7A49
+0x8E4A    0xE31B
+0x8E4B    0xE31C
+0x8E4C    0x7A65
+0x8E4D    0x7A7D
+0x8E4E    0xE31F
+0x8E4F    0x7ABB
+0x8E50    0x7AB0
+0x8E51    0x7AC2
+0x8E52    0x7AC3
+0x8E53    0x71D1
+0x8E54    0xE325
+0x8E55    0x41CA
+0x8E56    0x7ADA
+0x8E57    0x7ADD
+0x8E58    0x7AEA
+0x8E59    0x41EF
+0x8E5A    0x54B2
+0x8E5B    0xE32C
+0x8E5C    0x7B0B
+0x8E5D    0x7B55
+0x8E5E    0x7B29
+0x8E5F    0xE330
+0x8E60    0xE331
+0x8E61    0x7BA2
+0x8E62    0x7B6F
+0x8E63    0x839C
+0x8E64    0xE335
+0x8E65    0xE336
+0x8E66    0x7BD0
+0x8E67    0x8421
+0x8E68    0x7B92
+0x8E6A    0xE33B
+0x8E6B    0x3DAD
+0x8E6C    0xE33D
+0x8E6D    0x8492
+0x8E6E    0x7BFA
+0x8E70    0x7C35
+0x8E71    0xE342
+0x8E72    0x7C44
+0x8E73    0x7C83
+0x8E74    0xE345
+0x8E75    0x7CA6
+0x8E76    0x667D
+0x8E77    0xE348
+0x8E78    0x7CC9
+0x8E79    0x7CC7
+0x8E7A    0x7CE6
+0x8E7B    0x7C74
+0x8E7C    0x7CF3
+0x8E7D    0x7CF5
+0x8EA1    0x7E67
+0x8EA2    0x451D
+0x8EA3    0xE352
+0x8EA4    0x7D5D
+0x8EA5    0xE354
+0x8EA6    0x748D
+0x8EA7    0x7D89
+0x8EA8    0x7DAB
+0x8EA9    0x7135
+0x8EAA    0x7DB3
+0x8EAC    0xE35B
+0x8EAD    0xE35C
+0x8EAE    0x7DE4
+0x8EAF    0x3D13
+0x8EB0    0x7DF5
+0x8EB1    0xE360
+0x8EB2    0x7DE5
+0x8EB3    0xE362
+0x8EB5    0xE364
+0x8EB6    0xE365
+0x8EB7    0x7E6E
+0x8EB8    0x7E92
+0x8EB9    0x432B
+0x8EBA    0x946C
+0x8EBB    0x7E27
+0x8EBC    0x7F40
+0x8EBD    0x7F41
+0x8EBE    0x7F47
+0x8EBF    0x7936
+0x8EC0    0xE36F
+0x8EC1    0x99E1
+0x8EC2    0x7F97
+0x8EC3    0xE372
+0x8EC4    0x7FA3
+0x8EC5    0xE374
+0x8EC6    0xE375
+0x8EC7    0x455C
+0x8EC8    0xE377
+0x8EC9    0x4503
+0x8ECA    0xE379
+0x8ECB    0x7FFA
+0x8ECC    0xE37B
+0x8ECE    0x8008
+0x8ECF    0x801D
+0x8ED1    0x802F
+0x8ED2    0xE381
+0x8ED3    0xE382
+0x8ED4    0x803B
+0x8ED5    0x803C
+0x8ED6    0x8061
+0x8ED7    0xE386
+0x8ED8    0x4989
+0x8ED9    0xE388
+0x8EDA    0xE389
+0x8EDB    0xE38A
+0x8EDC    0x6725
+0x8EDD    0x80A7
+0x8EDE    0xE38D
+0x8EDF    0x8107
+0x8EE0    0x811A
+0x8EE1    0x58B0
+0x8EE2    0xE391
+0x8EE3    0x6C7F
+0x8EE4    0xE393
+0x8EE5    0xE394
+0x8EE6    0x64E7
+0x8EE7    0xE396
+0x8EE8    0x8218
+0x8EE9    0xE398
+0x8EEA    0x6A53
+0x8EEB    0xE39A
+0x8EEC    0xE39B
+0x8EED    0x447A
+0x8EEE    0x8229
+0x8EEF    0xE39E
+0x8EF0    0xE39F
+0x8EF1    0xE3A0
+0x8EF2    0x4FF9
+0x8EF3    0xE3A2
+0x8EF4    0x84E2
+0x8EF5    0x8362
+0x8EF6    0xE3A5
+0x8EF7    0xE3A6
+0x8EF8    0xE3A7
+0x8EF9    0xE3A8
+0x8EFA    0xE3A9
+0x8EFB    0x82AA
+0x8EFC    0x691B
+0x8EFD    0xE3AC
+0x8EFE    0x41DB
+0x8F40    0x854B
+0x8F41    0x82D0
+0x8F42    0x831A
+0x8F43    0xE3B1
+0x8F44    0xE3B2
+0x8F45    0x36C1
+0x8F46    0xE3B4
+0x8F47    0xE3B5
+0x8F48    0x827B
+0x8F49    0x82E2
+0x8F4A    0x8318
+0x8F4B    0xE3B9
+0x8F4C    0xE3BA
+0x8F4D    0xE3BB
+0x8F4E    0xE3BC
+0x8F4F    0xE3BD
+0x8F50    0x3DBF
+0x8F51    0x831D
+0x8F52    0x55EC
+0x8F53    0x8385
+0x8F54    0x450B
+0x8F55    0xE3C3
+0x8F56    0x83AC
+0x8F58    0x83D3
+0x8F59    0x347E
+0x8F5A    0xE3C8
+0x8F5B    0x6A57
+0x8F5C    0x855A
+0x8F5D    0x3496
+0x8F5E    0xE3CC
+0x8F5F    0xE3CD
+0x8F60    0x8458
+0x8F61    0xE3CF
+0x8F62    0x8471
+0x8F63    0x3DD3
+0x8F64    0x44E4
+0x8F65    0x6AA7
+0x8F66    0x844A
+0x8F67    0xE3D5
+0x8F68    0x7958
+0x8F6A    0xE3D8
+0x8F6B    0xE3D9
+0x8F6C    0xE3DA
+0x8F6D    0x84DE
+0x8F6F    0x8391
+0x8F70    0x44A0
+0x8F71    0x8493
+0x8F72    0x84E4
+0x8F73    0xE3E1
+0x8F74    0x4240
+0x8F75    0xE3E3
+0x8F76    0x4543
+0x8F77    0x8534
+0x8F78    0x5AF2
+0x8F79    0xE3E7
+0x8F7A    0x4527
+0x8F7B    0x8573
+0x8F7C    0x4516
+0x8F7D    0x67BF
+0x8F7E    0x8616
+0x8FA1    0xE3ED
+0x8FA2    0xE3EE
+0x8FA3    0x85C1
+0x8FA4    0xE3F0
+0x8FA5    0x8602
+0x8FA6    0xE3F2
+0x8FA7    0xE3F3
+0x8FA8    0xE3F4
+0x8FA9    0x456A
+0x8FAA    0x8628
+0x8FAB    0x3648
+0x8FAC    0xE3F8
+0x8FAD    0x53F7
+0x8FAE    0xE3FA
+0x8FAF    0x867E
+0x8FB0    0x8771
+0x8FB1    0xE3FD
+0x8FB2    0x87EE
+0x8FB3    0xE3FF
+0x8FB4    0x87B1
+0x8FB5    0x87DA
+0x8FB6    0x880F
+0x8FB7    0x5661
+0x8FB8    0x866C
+0x8FB9    0x6856
+0x8FBA    0x460F
+0x8FBB    0x8845
+0x8FBC    0x8846
+0x8FBD    0xE409
+0x8FBE    0xE40A
+0x8FBF    0xE40B
+0x8FC0    0x885E
+0x8FC1    0x889C
+0x8FC2    0x465B
+0x8FC3    0x88B4
+0x8FC4    0x88B5
+0x8FC5    0x63C1
+0x8FC6    0x88C5
+0x8FC7    0x7777
+0x8FC8    0xE414
+0x8FC9    0x8987
+0x8FCA    0x898A
+0x8FCD    0x89A7
+0x8FCE    0x89BC
+0x8FCF    0xE41B
+0x8FD0    0x89E7
+0x8FD1    0xE41D
+0x8FD2    0xE41E
+0x8FD3    0x8A9C
+0x8FD4    0x7793
+0x8FD5    0x91FE
+0x8FD6    0x8A90
+0x8FD7    0xE423
+0x8FD8    0x7AE9
+0x8FD9    0xE425
+0x8FDA    0xE426
+0x8FDB    0x4713
+0x8FDC    0xE428
+0x8FDD    0x717C
+0x8FDE    0x8B0C
+0x8FDF    0x8B1F
+0x8FE0    0xE42C
+0x8FE1    0xE42D
+0x8FE2    0x8B3F
+0x8FE3    0x8B4C
+0x8FE4    0x8B4D
+0x8FE5    0x8AA9
+0x8FE6    0xE432
+0x8FE7    0x8B90
+0x8FE8    0x8B9B
+0x8FE9    0x8AAF
+0x8FEA    0xE436
+0x8FEB    0x4615
+0x8FEC    0x884F
+0x8FED    0x8C9B
+0x8FEE    0xE43A
+0x8FEF    0xE43B
+0x8FF0    0xE43C
+0x8FF1    0x3725
+0x8FF2    0xE43E
+0x8FF3    0x8CD6
+0x8FF4    0xE440
+0x8FF5    0xE441
+0x8FF6    0x8D12
+0x8FF7    0x8D03
+0x8FF8    0xE444
+0x8FF9    0x8CDB
+0x8FFA    0x705C
+0x8FFB    0x8D11
+0x8FFC    0xE448
+0x8FFD    0x3ED0
+0x9040    0x8DA9
+0x9041    0xE44C
+0x9042    0xE44D
+0x9043    0xE44E
+0x9044    0x3B7C
+0x9045    0xE450
+0x9046    0xE451
+0x9047    0x7AE7
+0x9048    0x8EAD
+0x9049    0x8EB6
+0x904A    0x8EC3
+0x904B    0x92D4
+0x904C    0x8F19
+0x904D    0x8F2D
+0x904E    0xE459
+0x904F    0xE45A
+0x9050    0x8FA5
+0x9051    0x9303
+0x9052    0xE45D
+0x9053    0xE45E
+0x9054    0x8FB3
+0x9055    0x492A
+0x9056    0xE461
+0x9057    0xE462
+0x9058    0xE463
+0x9059    0x5EF8
+0x905A    0xE465
+0x905B    0x8FF9
+0x905C    0xE467
+0x905D    0xE468
+0x905E    0xE469
+0x905F    0xE46A
+0x9060    0x3980
+0x9061    0xE46C
+0x9062    0x9037
+0x9063    0xE46E
+0x9064    0xE46F
+0x9065    0x9061
+0x9066    0xE471
+0x9067    0xE472
+0x9068    0x90A8
+0x9069    0xE474
+0x906A    0x90C4
+0x906B    0xE476
+0x906C    0x90AE
+0x906E    0x9167
+0x906F    0x3AF0
+0x9070    0x91A9
+0x9071    0x91C4
+0x9072    0x7CAC
+0x9073    0xE47E
+0x9074    0xE47F
+0x9075    0x920E
+0x9076    0x6C9F
+0x9077    0x9241
+0x9078    0x9262
+0x9079    0xE484
+0x907B    0xE486
+0x907C    0xE487
+0x907D    0xE488
+0x907E    0xE489
+0x90A1    0xE48A
+0x90A2    0x932C
+0x90A3    0x936B
+0x90A4    0xE48D
+0x90A5    0xE48E
+0x90A6    0x708F
+0x90A7    0x5AC3
+0x90A8    0xE491
+0x90A9    0xE492
+0x90AA    0x4965
+0x90AB    0x9244
+0x90AC    0xE495
+0x90AD    0xE496
+0x90AE    0xE497
+0x90AF    0x9373
+0x90B0    0x945B
+0x90B1    0x8EBC
+0x90B2    0x9585
+0x90B3    0x95A6
+0x90B4    0x9426
+0x90B5    0x95A0
+0x90B6    0x6FF6
+0x90B7    0x42B9
+0x90B8    0xE4A1
+0x90B9    0xE4A2
+0x90BA    0xE4A3
+0x90BB    0xE4A4
+0x90BC    0x49DF
+0x90BD    0x6C1C
+0x90BE    0x967B
+0x90BF    0x9696
+0x90C0    0x416C
+0x90C1    0x96A3
+0x90C2    0xE4AB
+0x90C3    0x61DA
+0x90C4    0x96B6
+0x90C5    0x78F5
+0x90C6    0xE4AF
+0x90C7    0x96BD
+0x90C8    0x53CC
+0x90C9    0x49A1
+0x90CA    0xE4B3
+0x90CB    0xE4B4
+0x90CC    0xE4B5
+0x90CD    0xE4B6
+0x90CE    0xE4B7
+0x90CF    0xE4B8
+0x90D0    0xE4B9
+0x90D1    0xE4BA
+0x90D2    0x9731
+0x90D3    0x8642
+0x90D4    0x9736
+0x90D5    0x4A0F
+0x90D6    0x453D
+0x90D7    0x4585
+0x90D8    0xE4C1
+0x90D9    0x7075
+0x90DA    0x5B41
+0x90DB    0x971B
+0x90DD    0xE4C6
+0x90DE    0x9757
+0x90DF    0x5B4A
+0x90E0    0xE4C9
+0x90E1    0x975F
+0x90E2    0x9425
+0x90E3    0x50D0
+0x90E4    0xE4CD
+0x90E5    0xE4CE
+0x90E6    0x9789
+0x90E7    0x979F
+0x90E8    0x97B1
+0x90E9    0x97BE
+0x90EA    0x97C0
+0x90EB    0x97D2
+0x90EC    0x97E0
+0x90ED    0xE4D6
+0x90EE    0x97EE
+0x90EF    0x741C
+0x90F0    0xE4D9
+0x90F2    0x97F5
+0x90F3    0xE4DC
+0x90F4    0xE4DD
+0x90F5    0x4AD1
+0x90F6    0x9834
+0x90F7    0x9833
+0x90F8    0x984B
+0x90F9    0x9866
+0x90FA    0x3B0E
+0x90FB    0xE4E4
+0x90FC    0x3D51
+0x90FD    0xE4E6
+0x90FE    0xE4E7
+0x9140    0xE4E8
+0x9141    0x98CA
+0x9142    0x98B7
+0x9143    0x98C8
+0x9144    0x98C7
+0x9145    0x4AFF
+0x9146    0xE4EE
+0x9147    0xE4EF
+0x9148    0x55B0
+0x9149    0x98E1
+0x914A    0x98E6
+0x914B    0x98EC
+0x914C    0x9378
+0x914D    0x9939
+0x914E    0xE4F6
+0x914F    0x4B72
+0x9150    0xE4F8
+0x9151    0xE4F9
+0x9152    0x99F5
+0x9153    0x9A0C
+0x9154    0x9A3B
+0x9155    0x9A10
+0x9156    0x9A58
+0x9157    0xE4FF
+0x9158    0x36C4
+0x9159    0xE501
+0x915A    0xE502
+0x915B    0x9AE0
+0x915C    0x9AE2
+0x915D    0xE505
+0x915E    0x9AF4
+0x915F    0x4C0E
+0x9160    0x9B14
+0x9161    0x9B2D
+0x9162    0xE50A
+0x9163    0x5034
+0x9164    0x9B34
+0x9165    0xE50D
+0x9166    0x38C3
+0x9167    0xE50F
+0x9168    0x9B50
+0x9169    0x9B40
+0x916A    0xE512
+0x916B    0x5A45
+0x916C    0xE514
+0x916D    0x9B8E
+0x916E    0xE516
+0x916F    0x9C02
+0x9170    0x9BFF
+0x9171    0x9C0C
+0x9172    0xE51A
+0x9173    0x9DD4
+0x9174    0xE51C
+0x9175    0xE51D
+0x9176    0xE51E
+0x9177    0xE51F
+0x9178    0xE520
+0x9179    0xE521
+0x917A    0x9D7E
+0x917B    0x9D83
+0x917C    0xE524
+0x917D    0x9E0E
+0x917E    0x6888
+0x91A1    0x9DC4
+0x91A2    0xE528
+0x91A3    0xE529
+0x91A4    0xE52A
+0x91A5    0xE52B
+0x91A6    0xE52C
+0x91A7    0x9D39
+0x91A8    0xE52E
+0x91A9    0xE52F
+0x91AA    0x9E90
+0x91AB    0x9E95
+0x91AC    0x9E9E
+0x91AD    0x9EA2
+0x91AE    0x4D34
+0x91AF    0x9EAA
+0x91B0    0x9EAF
+0x91B1    0xE537
+0x91B2    0x9EC1
+0x91B3    0x3B60
+0x91B4    0x39E5
+0x91B5    0x3D1D
+0x91B6    0x4F32
+0x91B7    0x37BE
+0x91B8    0xE53E
+0x91B9    0x9F02
+0x91BA    0x9F08
+0x91BB    0x4B96
+0x91BC    0x9424
+0x91BD    0xE543
+0x91BE    0x9F17
+0x91C0    0x9F39
+0x91C1    0x569F
+0x91C2    0x568A
+0x91C3    0x9F45
+0x91C4    0x99B8
+0x91C5    0xE54B
+0x91C6    0x97F2
+0x91C7    0x847F
+0x91C8    0x9F62
+0x91C9    0x9F69
+0x91CA    0x7ADC
+0x91CB    0x9F8E
+0x91CC    0x7216
+0x91CD    0x4BBE
+0x91CE    0xE554
+0x91CF    0xE555
+0x91D0    0x7177
+0x91D1    0xE557
+0x91D2    0xE558
+0x91D3    0xE559
+0x91D4    0x739E
+0x91D5    0xE55B
+0x91D6    0xE55C
+0x91D7    0x799F
+0x91D8    0xE55E
+0x91D9    0xE55F
+0x91DA    0x9369
+0x91DB    0x93F3
+0x91DC    0xE562
+0x91DD    0x92EC
+0x91DE    0x9381
+0x91DF    0x93CB
+0x91E0    0xE566
+0x91E1    0xE567
+0x91E2    0x7217
+0x91E3    0x3EEB
+0x91E4    0x7772
+0x91E5    0x7A43
+0x91E6    0x70D0
+0x91E7    0xE56D
+0x91E8    0xE56E
+0x91E9    0x717E
+0x91EA    0xE570
+0x91EB    0x70A3
+0x91EC    0xE572
+0x91ED    0xE573
+0x91EE    0x3EC7
+0x91EF    0xE575
+0x91F0    0xE576
+0x91F1    0xE577
+0x91F2    0x3722
+0x91F3    0xE579
+0x91F4    0xE57A
+0x91F5    0x36E1
+0x91F6    0xE57C
+0x91F7    0xE57D
+0x91F8    0xE57E
+0x91F9    0x3723
+0x91FA    0xE580
+0x91FB    0x575B
+0x91FC    0xE582
+0x91FD    0xE583
+0x91FE    0xE584
+0x9240    0xE585
+0x9241    0xE586
+0x9242    0x8503
+0x9243    0xE588
+0x9245    0x8455
+0x9246    0xE58B
+0x9247    0xE58C
+0x9248    0xE58D
+0x9249    0xE58E
+0x924A    0xE58F
+0x924B    0xE590
+0x924C    0x44F4
+0x924D    0xE592
+0x924E    0xE593
+0x924F    0xE594
+0x9250    0x67F9
+0x9251    0x3733
+0x9252    0x3C15
+0x9253    0x3DE7
+0x9254    0x586C
+0x9255    0xE59A
+0x9256    0x6810
+0x9257    0x4057
+0x9258    0xE59D
+0x9259    0xE59E
+0x925A    0xE59F
+0x925B    0xE5A0
+0x925C    0xE5A1
+0x925D    0x54CB
+0x925E    0x569E
+0x925F    0xE5A4
+0x9260    0x5692
+0x9261    0xE5A6
+0x9262    0xE5A7
+0x9263    0xE5A8
+0x9264    0x93C6
+0x9265    0xE5AA
+0x9266    0x939C
+0x9267    0x4EF8
+0x9268    0x512B
+0x9269    0x3819
+0x926A    0xE5AF
+0x926B    0x4EBC
+0x926C    0xE5B1
+0x926D    0xE5B2
+0x926E    0x4F4B
+0x926F    0x4F8A
+0x9270    0xE5B5
+0x9271    0x5A68
+0x9272    0xE5B7
+0x9273    0xE5B8
+0x9274    0x3999
+0x9275    0xE5BA
+0x9276    0xE5BB
+0x9277    0x3435
+0x9278    0x4F29
+0x9279    0xE5BE
+0x927A    0xE5BF
+0x927B    0xE5C0
+0x927C    0x8ADA
+0x927D    0xE5C2
+0x927E    0x4E98
+0x92A1    0x50CD
+0x92A2    0x510D
+0x92A3    0x4FA2
+0x92A4    0x4F03
+0x92A5    0xE5C8
+0x92A6    0xE5C9
+0x92A7    0x4F42
+0x92A8    0x502E
+0x92A9    0x506C
+0x92AA    0x5081
+0x92AB    0x4FCC
+0x92AC    0x4FE5
+0x92AD    0x5058
+0x92AE    0x50FC
+0x92B3    0x6E76
+0x92B4    0xE5D7
+0x92B5    0xE5D8
+0x92B6    0xE5D9
+0x92B7    0x6D72
+0x92B8    0xE5DB
+0x92B9    0xE5DC
+0x92BA    0x51A8
+0x92BB    0x51C3
+0x92BC    0xE5DF
+0x92BD    0x44DD
+0x92BE    0xE5E1
+0x92BF    0xE5E2
+0x92C0    0xE5E3
+0x92C1    0x8D7A
+0x92C2    0xE5E5
+0x92C3    0xE5E6
+0x92C4    0x5259
+0x92C5    0x52A4
+0x92C6    0xE5E9
+0x92C7    0x52E1
+0x92C9    0x467A
+0x92CA    0x718C
+0x92CB    0xE5EE
+0x92CC    0xE5EF
+0x92CD    0xE5F0
+0x92CE    0xE5F1
+0x92CF    0x69D1
+0x92D0    0xE5F3
+0x92D2    0x3EDE
+0x92D3    0x7499
+0x92D4    0x7414
+0x92D5    0x7456
+0x92D6    0x7398
+0x92D7    0x4B8E
+0x92D8    0xE5FB
+0x92D9    0xE5FC
+0x92DA    0x53D0
+0x92DB    0x3584
+0x92DC    0x720F
+0x92DD    0xE600
+0x92DE    0x55B4
+0x92DF    0xE602
+0x92E0    0x54CD
+0x92E1    0xE604
+0x92E2    0x571D
+0x92E3    0x925D
+0x92E4    0x96F4
+0x92E5    0x9366
+0x92E6    0x57DD
+0x92E7    0x578D
+0x92E8    0x577F
+0x92E9    0x363E
+0x92EA    0x58CB
+0x92EB    0x5A99
+0x92EC    0xE60F
+0x92ED    0xE610
+0x92EE    0xE611
+0x92EF    0xE612
+0x92F0    0x5A2C
+0x92F1    0x59B8
+0x92F2    0x928F
+0x92F3    0x5A7E
+0x92F4    0x5ACF
+0x92F5    0x5A12
+0x92F6    0xE619
+0x92F7    0xE61A
+0x92F8    0xE61B
+0x92F9    0xE61C
+0x92FA    0x36F5
+0x92FB    0x6D05
+0x92FC    0x7443
+0x92FD    0x5A21
+0x92FE    0xE621
+0x9340    0x5A81
+0x9341    0xE623
+0x9342    0xE624
+0x9343    0x93E0
+0x9344    0x748C
+0x9345    0xE627
+0x9346    0x7105
+0x9347    0x4972
+0x9348    0x9408
+0x9349    0xE62B
+0x934A    0x93BD
+0x934B    0x37A0
+0x934C    0x5C1E
+0x934D    0x5C9E
+0x934E    0x5E5E
+0x934F    0x5E48
+0x9350    0xE632
+0x9351    0xE633
+0x9352    0xE634
+0x9353    0x5ECD
+0x9354    0x5B4F
+0x9355    0xE637
+0x9356    0xE638
+0x9357    0x3701
+0x9358    0xE63A
+0x9359    0x36DD
+0x935A    0xE63C
+0x935B    0x36D3
+0x935C    0x812A
+0x935D    0xE63F
+0x935E    0xE640
+0x935F    0xE641
+0x9360    0xE642
+0x9361    0x5F0C
+0x9362    0x5F0E
+0x9363    0xE645
+0x9364    0xE646
+0x9365    0x5A6B
+0x9366    0xE648
+0x9367    0x5B44
+0x9368    0x8614
+0x9369    0xE64B
+0x936A    0x8860
+0x936B    0x607E
+0x936C    0xE64E
+0x936D    0xE64F
+0x936E    0x5FDB
+0x936F    0x3EB8
+0x9370    0xE652
+0x9371    0xE653
+0x9372    0xE654
+0x9373    0xE655
+0x9374    0x61C0
+0x9375    0xE657
+0x9376    0xE658
+0x9377    0xE659
+0x9378    0x6199
+0x9379    0x6198
+0x937A    0x6075
+0x937B    0xE65D
+0x937C    0xE65E
+0x937D    0xE65F
+0x937E    0xE660
+0x93A1    0x6471
+0x93A2    0xE662
+0x93A3    0xE663
+0x93A4    0x3A29
+0x93A5    0xE665
+0x93A6    0xE666
+0x93A7    0xE667
+0x93A8    0xE668
+0x93A9    0x6337
+0x93AA    0xE66A
+0x93AB    0x64B6
+0x93AC    0x6331
+0x93AD    0x63D1
+0x93AE    0xE66E
+0x93AF    0xE66F
+0x93B0    0x62A4
+0x93B1    0xE671
+0x93B2    0x643B
+0x93B3    0x656B
+0x93B4    0x6972
+0x93B5    0x3BF4
+0x93B6    0xE676
+0x93B7    0xE677
+0x93B8    0xE678
+0x93B9    0xE679
+0x93BA    0x550D
+0x93BB    0xE67B
+0x93BC    0xE67C
+0x93BD    0xE67D
+0x93BE    0x66CE
+0x93BF    0xE67F
+0x93C0    0xE680
+0x93C1    0x3AE0
+0x93C2    0x4190
+0x93C3    0xE683
+0x93C4    0xE684
+0x93C5    0xE685
+0x93C6    0xE686
+0x93C7    0xE687
+0x93C8    0xE688
+0x93C9    0x78EE
+0x93CA    0xE68A
+0x93CB    0xE68B
+0x93CC    0xE68C
+0x93CD    0x3464
+0x93CE    0xE68E
+0x93CF    0xE68F
+0x93D0    0xE690
+0x93D1    0x668E
+0x93D2    0xE692
+0x93D3    0x666B
+0x93D4    0x4B93
+0x93D5    0x6630
+0x93D6    0xE696
+0x93D7    0xE697
+0x93D8    0x6663
+0x93D9    0xE699
+0x93DA    0xE69A
+0x93DB    0x661E
+0x93DC    0xE69C
+0x93DD    0x38D1
+0x93DE    0xE69E
+0x93DF    0xE69F
+0x93E0    0x3B99
+0x93E1    0xE6A1
+0x93E2    0xE6A2
+0x93E3    0x74D0
+0x93E4    0x3B96
+0x93E5    0x678F
+0x93E6    0xE6A6
+0x93E7    0x68B6
+0x93E8    0x681E
+0x93E9    0x3BC4
+0x93EA    0x6ABE
+0x93EB    0x3863
+0x93EC    0xE6AC
+0x93ED    0xE6AD
+0x93EE    0x6A33
+0x93EF    0x6A52
+0x93F0    0x6AC9
+0x93F1    0x6B05
+0x93F2    0xE6B2
+0x93F3    0x6511
+0x93F4    0x6898
+0x93F5    0x6A4C
+0x93F6    0x3BD7
+0x93F7    0x6A7A
+0x93F8    0x6B57
+0x93F9    0xE6B9
+0x93FA    0xE6BA
+0x93FB    0x93A0
+0x93FC    0x92F2
+0x93FD    0xE6BD
+0x93FE    0xE6BE
+0x9440    0x9289
+0x9441    0xE6C0
+0x9442    0xE6C1
+0x9443    0x9467
+0x9444    0x6DA5
+0x9445    0x6F0B
+0x9446    0xE6C5
+0x9448    0xE6C7
+0x9449    0x3D8F
+0x944A    0x6E04
+0x944B    0xE6CA
+0x944C    0x5A3D
+0x944D    0x6E0A
+0x944E    0x5847
+0x944F    0x6D24
+0x9450    0x7842
+0x9451    0x713B
+0x9452    0xE6D1
+0x9453    0xE6D2
+0x9454    0x70F1
+0x9455    0x7250
+0x9456    0x7287
+0x9457    0x7294
+0x9458    0xE6D7
+0x9459    0xE6D8
+0x945A    0x5179
+0x945B    0xE6DA
+0x945C    0xE6DB
+0x945D    0x747A
+0x945E    0xE6DD
+0x945F    0xE6DE
+0x9460    0xE6DF
+0x9461    0xE6E0
+0x9462    0xE6E1
+0x9463    0x3F06
+0x9464    0x3EB1
+0x9465    0xE6E4
+0x9466    0xE6E5
+0x9467    0xE6E6
+0x9468    0x60A7
+0x9469    0x3EF3
+0x946A    0x74CC
+0x946B    0x743C
+0x946C    0x9387
+0x946D    0x7437
+0x946E    0x449F
+0x946F    0xE6EE
+0x9470    0x4551
+0x9471    0x7583
+0x9472    0x3F63
+0x9473    0xE6F2
+0x9474    0xE6F3
+0x9475    0x3F58
+0x9476    0x7555
+0x9477    0x7673
+0x9478    0xE6F7
+0x9479    0x3B19
+0x947A    0x7468
+0x947B    0xE6FA
+0x947C    0xE6FB
+0x947D    0xE6FC
+0x947E    0x3AFB
+0x94A1    0x3DCD
+0x94A2    0xE6FF
+0x94A3    0x3EFF
+0x94A4    0xE701
+0x94A5    0xE702
+0x94A6    0x91FA
+0x94A7    0x5732
+0x94A8    0x9342
+0x94A9    0xE706
+0x94AA    0xE707
+0x94AB    0x50DF
+0x94AC    0xE709
+0x94AD    0xE70A
+0x94AE    0x7778
+0x94AF    0xE70C
+0x94B0    0x770E
+0x94B1    0x770F
+0x94B2    0x777B
+0x94B3    0xE710
+0x94B4    0xE711
+0x94B5    0x3A5E
+0x94B6    0xE713
+0x94B7    0x7438
+0x94B8    0x749B
+0x94B9    0x3EBF
+0x94BA    0xE717
+0x94BB    0xE718
+0x94BC    0x40C8
+0x94BD    0xE71A
+0x94BE    0xE71B
+0x94BF    0x9307
+0x94C0    0xE71D
+0x94C1    0x781E
+0x94C2    0x788D
+0x94C3    0x7888
+0x94C4    0x78D2
+0x94C5    0x73D0
+0x94C6    0x7959
+0x94C7    0xE724
+0x94C8    0xE725
+0x94C9    0x410E
+0x94CB    0x8496
+0x94CC    0x79A5
+0x94CD    0x6A2D
+0x94CE    0xE72B
+0x94CF    0x7A3A
+0x94D0    0x79F4
+0x94D1    0x416E
+0x94D2    0xE72F
+0x94D3    0x4132
+0x94D4    0x9235
+0x94D5    0x79F1
+0x94D6    0xE733
+0x94D7    0xE734
+0x94D8    0xE735
+0x94D9    0xE736
+0x94DA    0xE737
+0x94DB    0x3597
+0x94DC    0x556B
+0x94DD    0x3570
+0x94DE    0x36AA
+0x94DF    0xE73C
+0x94E0    0xE73D
+0x94E1    0x7AE2
+0x94E2    0x5A59
+0x94E3    0xE740
+0x94E4    0xE741
+0x94E5    0xE742
+0x94E6    0x5A0D
+0x94E7    0xE744
+0x94E8    0x78F0
+0x94E9    0x5A2A
+0x94EA    0xE747
+0x94EB    0x7AFE
+0x94EC    0x41F9
+0x94ED    0x7C5D
+0x94EE    0x7C6D
+0x94EF    0x4211
+0x94F0    0xE74D
+0x94F1    0xE74E
+0x94F2    0xE74F
+0x94F3    0x7CCD
+0x94F4    0xE751
+0x94F5    0xE752
+0x94F6    0x7C8E
+0x94F7    0x7C7C
+0x94F8    0x7CAE
+0x94F9    0x6AB2
+0x94FA    0x7DDC
+0x94FB    0x7E07
+0x94FC    0x7DD3
+0x94FD    0x7F4E
+0x94FE    0xE75B
+0x9540    0xE75C
+0x9541    0xE75D
+0x9542    0x7D97
+0x9543    0xE75F
+0x9544    0x426A
+0x9545    0xE761
+0x9546    0xE762
+0x9547    0x67D6
+0x9548    0xE764
+0x9549    0xE765
+0x954A    0x57C4
+0x954B    0xE767
+0x954C    0xE768
+0x954D    0xE769
+0x954E    0x7FDD
+0x954F    0x7B27
+0x9550    0xE76C
+0x9551    0xE76D
+0x9552    0xE76E
+0x9553    0x7B0C
+0x9554    0xE770
+0x9555    0x99E6
+0x9556    0x8645
+0x9557    0x9A63
+0x9558    0x6A1C
+0x9559    0xE775
+0x955A    0x39E2
+0x955B    0xE777
+0x955C    0xE778
+0x955D    0x9A1F
+0x955E    0xE77A
+0x955F    0x8480
+0x9560    0xE77C
+0x9561    0xE77D
+0x9562    0x44EA
+0x9563    0x8137
+0x9564    0x4402
+0x9565    0x80C6
+0x9566    0x8109
+0x9567    0x8142
+0x9568    0xE784
+0x9569    0x98C3
+0x956A    0xE786
+0x956B    0x8262
+0x956C    0x8265
+0x956D    0xE789
+0x956E    0x8453
+0x956F    0xE78B
+0x9570    0x8610
+0x9571    0xE78D
+0x9572    0x5A86
+0x9573    0x417F
+0x9574    0xE790
+0x9575    0x5B2B
+0x9576    0xE792
+0x9577    0x5AE4
+0x9578    0xE794
+0x9579    0x86A0
+0x957A    0xE796
+0x957B    0xE797
+0x957C    0x882D
+0x957D    0xE799
+0x957E    0x5A02
+0x95A1    0x886E
+0x95A2    0x4F45
+0x95A3    0x8887
+0x95A4    0x88BF
+0x95A5    0x88E6
+0x95A6    0x8965
+0x95A7    0x894D
+0x95A8    0xE7A2
+0x95A9    0x8954
+0x95AA    0xE7A4
+0x95AB    0xE7A5
+0x95AC    0xE7A6
+0x95AD    0xE7A7
+0x95AE    0xE7A8
+0x95AF    0xE7A9
+0x95B0    0x3EAD
+0x95B1    0x84A3
+0x95B2    0x46F5
+0x95B3    0x46CF
+0x95B4    0x37F2
+0x95B5    0x8A3D
+0x95B6    0x8A1C
+0x95B7    0xE7B1
+0x95B8    0x5F4D
+0x95B9    0x922B
+0x95BA    0xE7B4
+0x95BB    0x65D4
+0x95BC    0x7129
+0x95BD    0x70C4
+0x95BE    0xE7B8
+0x95BF    0x9D6D
+0x95C0    0x8C9F
+0x95C1    0x8CE9
+0x95C2    0xE7BC
+0x95C3    0x599A
+0x95C4    0x77C3
+0x95C5    0x59F0
+0x95C6    0x436E
+0x95C7    0x36D4
+0x95C8    0x8E2A
+0x95C9    0x8EA7
+0x95CA    0xE7C4
+0x95CB    0x8F30
+0x95CC    0x8F4A
+0x95CD    0x42F4
+0x95CE    0x6C58
+0x95CF    0x6FBB
+0x95D0    0xE7CA
+0x95D1    0x489B
+0x95D2    0x6F79
+0x95D3    0x6E8B
+0x95D4    0xE7CE
+0x95D5    0x9BE9
+0x95D6    0x36B5
+0x95D7    0xE7D1
+0x95D8    0x90BB
+0x95DA    0x5571
+0x95DB    0x4906
+0x95DC    0x91BB
+0x95DD    0x9404
+0x95DE    0xE7D8
+0x95DF    0x4062
+0x95E0    0xE7DA
+0x95E1    0x9427
+0x95E2    0xE7DC
+0x95E3    0xE7DD
+0x95E4    0x84E5
+0x95E5    0x8A2B
+0x95E6    0x9599
+0x95E7    0x95A7
+0x95E8    0x9597
+0x95E9    0x9596
+0x95EA    0xE7E4
+0x95EB    0x7445
+0x95EC    0x3EC2
+0x95ED    0xE7E7
+0x95EE    0xE7E8
+0x95EF    0xE7E9
+0x95F0    0x3EE7
+0x95F1    0xE7EB
+0x95F2    0x968F
+0x95F3    0xE7ED
+0x95F4    0xE7EE
+0x95F5    0xE7EF
+0x95F6    0x3ECC
+0x95F7    0xE7F1
+0x95F8    0xE7F2
+0x95F9    0xE7F3
+0x95FA    0x7412
+0x95FB    0x746B
+0x95FC    0x3EFC
+0x95FD    0x9741
+0x95FE    0xE7F8
+0x9640    0x6847
+0x9641    0x4A1D
+0x9642    0xE7FB
+0x9643    0xE7FC
+0x9645    0x9368
+0x9646    0xE7FF
+0x9647    0xE800
+0x9648    0xE801
+0x9649    0xE802
+0x964A    0x92BA
+0x964B    0x5B11
+0x964C    0x8B69
+0x964D    0x493C
+0x964E    0x73F9
+0x964F    0xE808
+0x9650    0x979B
+0x9651    0x9771
+0x9652    0x9938
+0x9653    0xE80C
+0x9654    0x5DC1
+0x9655    0xE80E
+0x9656    0xE80F
+0x9657    0x981F
+0x9658    0xE811
+0x9659    0x92F6
+0x965A    0xE813
+0x965B    0x91E5
+0x965C    0x44C0
+0x965D    0xE816
+0x965E    0xE817
+0x965F    0xE818
+0x9660    0x98DC
+0x9661    0xE81A
+0x9662    0x3F00
+0x9663    0x922A
+0x9664    0x4925
+0x9665    0x8414
+0x9666    0x993B
+0x9667    0x994D
+0x9668    0xE821
+0x9669    0x3DFD
+0x966A    0x999B
+0x966B    0x4B6F
+0x966C    0x99AA
+0x966D    0x9A5C
+0x966E    0xE827
+0x966F    0xE828
+0x9670    0x6A8F
+0x9671    0x9A21
+0x9672    0x5AFE
+0x9673    0x9A2F
+0x9674    0xE82D
+0x9675    0x4B90
+0x9676    0xE82F
+0x9677    0x99BC
+0x9678    0x4BBD
+0x9679    0x4B97
+0x967A    0x937D
+0x967B    0x5872
+0x967C    0xE835
+0x967D    0x5822
+0x967E    0xE837
+0x96A1    0xE838
+0x96A2    0x7844
+0x96A3    0xE83A
+0x96A4    0xE83B
+0x96A5    0x68C5
+0x96A6    0x3D7D
+0x96A7    0x9458
+0x96A8    0x3927
+0x96A9    0x6150
+0x96AA    0xE841
+0x96AB    0xE842
+0x96AC    0x6107
+0x96AD    0x9C4F
+0x96AE    0x9C53
+0x96AF    0x9C7B
+0x96B0    0x9C35
+0x96B1    0x9C10
+0x96B2    0x9B7F
+0x96B3    0x9BCF
+0x96B4    0xE84B
+0x96B5    0x9B9F
+0x96B6    0xE84D
+0x96B7    0xE84E
+0x96B8    0x9D21
+0x96B9    0x4CAE
+0x96BA    0xE851
+0x96BB    0x9E18
+0x96BC    0x4CB0
+0x96BD    0x9D0C
+0x96BE    0xE855
+0x96BF    0xE856
+0x96C0    0xE857
+0x96C1    0xE858
+0x96C2    0x9DA5
+0x96C3    0x84BD
+0x96C4    0xE85B
+0x96C5    0xE85C
+0x96C6    0xE85D
+0x96C7    0x85FC
+0x96C8    0x4533
+0x96C9    0xE860
+0x96CA    0xE861
+0x96CB    0xE862
+0x96CC    0x8420
+0x96CD    0x85EE
+0x96CE    0xE865
+0x96CF    0xE866
+0x96D0    0xE867
+0x96D1    0x79E2
+0x96D2    0xE869
+0x96D3    0xE86A
+0x96D4    0x492D
+0x96D5    0xE86C
+0x96D6    0x3D62
+0x96D7    0x93DB
+0x96D8    0x92BE
+0x96D9    0x9348
+0x96DA    0xE871
+0x96DB    0x78B9
+0x96DC    0x9277
+0x96DD    0x944D
+0x96DE    0x4FE4
+0x96DF    0x3440
+0x96E0    0x9064
+0x96E1    0xE878
+0x96E2    0x783D
+0x96E3    0x7854
+0x96E4    0x78B6
+0x96E5    0x784B
+0x96E6    0xE87D
+0x96E7    0xE87E
+0x96E8    0xE87F
+0x96E9    0x369A
+0x96EA    0x4F72
+0x96EB    0x6FDA
+0x96EC    0x6FD9
+0x96EE    0x701E
+0x96EF    0x5414
+0x96F0    0xE887
+0x96F1    0x57BB
+0x96F2    0x58F3
+0x96F3    0x578A
+0x96F4    0x9D16
+0x96F5    0x57D7
+0x96F6    0x7134
+0x96F7    0x34AF
+0x96F8    0xE88F
+0x96F9    0x71EB
+0x96FA    0xE891
+0x96FB    0xE892
+0x96FD    0xE894
+0x96FE    0xE895
+0x9740    0x610C
+0x9741    0x5ACE
+0x9742    0x5A0B
+0x9743    0x42BC
+0x9744    0xE89A
+0x9745    0x372C
+0x9746    0x4B7B
+0x9747    0xE89D
+0x9748    0x93BB
+0x9749    0x93B8
+0x974A    0xE8A0
+0x974B    0xE8A1
+0x974C    0x8472
+0x974D    0xE8A3
+0x974E    0xE8A4
+0x974F    0xE8A5
+0x9750    0xE8A6
+0x9751    0xE8A7
+0x9752    0x5994
+0x9753    0xE8A9
+0x9754    0xE8AA
+0x9755    0x7DA8
+0x9756    0xE8AC
+0x9757    0xE8AD
+0x9758    0xE8AE
+0x9759    0xE8AF
+0x975A    0xE8B0
+0x975B    0x92E5
+0x975C    0x73E2
+0x975D    0x3EE9
+0x975E    0x74B4
+0x975F    0xE8B5
+0x9760    0xE8B6
+0x9761    0x3EE1
+0x9762    0xE8B8
+0x9763    0x6AD8
+0x9764    0x73F3
+0x9765    0x73FB
+0x9766    0x3ED6
+0x9767    0xE8BD
+0x9768    0xE8BE
+0x9769    0xE8BF
+0x976A    0xE8C0
+0x976B    0xE8C1
+0x976C    0xE8C2
+0x976D    0xE8C3
+0x976E    0x7448
+0x976F    0xE8C5
+0x9770    0x70A5
+0x9771    0xE8C7
+0x9772    0x9284
+0x9773    0x73E6
+0x9774    0x935F
+0x9775    0xE8CB
+0x9776    0x9331
+0x9777    0xE8CD
+0x9778    0xE8CE
+0x9779    0x9386
+0x977A    0xE8D0
+0x977B    0xE8D1
+0x977C    0x4935
+0x977D    0xE8D3
+0x977E    0x716B
+0x97A1    0xE8D5
+0x97A2    0xE8D6
+0x97A3    0x56A4
+0x97A4    0xE8D8
+0x97A5    0xE8D9
+0x97A6    0xE8DA
+0x97A7    0x5502
+0x97A8    0x79C4
+0x97A9    0xE8DD
+0x97AA    0x7DFE
+0x97AB    0xE8DF
+0x97AC    0xE8E0
+0x97AD    0xE8E1
+0x97AE    0x452E
+0x97AF    0x9401
+0x97B0    0x370A
+0x97B1    0xE8E5
+0x97B2    0xE8E6
+0x97B3    0x59B0
+0x97B4    0xE8E8
+0x97B5    0xE8E9
+0x97B6    0xE8EA
+0x97B7    0x5AA1
+0x97B8    0x36E2
+0x97B9    0xE8ED
+0x97BA    0x36B0
+0x97BB    0x925F
+0x97BC    0x5A79
+0x97BD    0xE8F1
+0x97BE    0xE8F2
+0x97BF    0x9374
+0x97C0    0x3CCD
+0x97C1    0xE8F5
+0x97C2    0x4A96
+0x97C3    0x398A
+0x97C4    0x50F4
+0x97C5    0x3D69
+0x97C6    0x3D4C
+0x97C7    0xE8FB
+0x97C8    0x7175
+0x97C9    0x42FB
+0x97CA    0xE8FE
+0x97CB    0x6E0F
+0x97CC    0xE900
+0x97CD    0x44EB
+0x97CE    0x6D57
+0x97CF    0xE903
+0x97D0    0x7067
+0x97D1    0x6CAF
+0x97D2    0x3CD6
+0x97D3    0xE907
+0x97D4    0xE908
+0x97D5    0x6E02
+0x97D6    0x6F0C
+0x97D7    0x3D6F
+0x97D8    0xE90C
+0x97D9    0x7551
+0x97DA    0x36BC
+0x97DB    0x34C8
+0x97DC    0x4680
+0x97DD    0x3EDA
+0x97DE    0x4871
+0x97DF    0x59C4
+0x97E0    0x926E
+0x97E1    0x493E
+0x97E2    0x8F41
+0x97E3    0xE917
+0x97E4    0xE918
+0x97E5    0x5812
+0x97E6    0x57C8
+0x97E7    0x36D6
+0x97E8    0xE91C
+0x97E9    0x70FE
+0x97EA    0xE91E
+0x97EB    0xE91F
+0x97EC    0xE920
+0x97ED    0xE921
+0x97EE    0xE922
+0x97EF    0x68B9
+0x97F0    0x6967
+0x97F1    0xE925
+0x97F2    0xE926
+0x97F3    0xE927
+0x97F4    0xE928
+0x97F5    0xE929
+0x97F6    0xE92A
+0x97F7    0xE92B
+0x97F8    0xE92C
+0x97F9    0x6A1A
+0x97FA    0xE92E
+0x97FB    0xE92F
+0x97FC    0x843E
+0x97FD    0x44DF
+0x97FE    0x44CE
+0x9840    0xE933
+0x9841    0xE934
+0x9842    0xE935
+0x9843    0xE936
+0x9844    0x6F17
+0x9845    0xE938
+0x9846    0x833D
+0x9847    0xE93A
+0x9848    0x83ED
+0x9849    0xE93C
+0x984A    0xE93D
+0x984B    0xE93E
+0x984C    0x5989
+0x984D    0x5A82
+0x984E    0xE941
+0x984F    0x5A61
+0x9850    0x5A71
+0x9851    0xE944
+0x9852    0xE945
+0x9853    0x372D
+0x9854    0x59EF
+0x9855    0xE948
+0x9856    0x36C7
+0x9857    0x718E
+0x9858    0x9390
+0x9859    0x669A
+0x985A    0xE94D
+0x985B    0x5A6E
+0x985C    0x5A2B
+0x985D    0xE950
+0x985E    0x6A2B
+0x985F    0xE952
+0x9860    0xE953
+0x9861    0xE954
+0x9862    0xE955
+0x9863    0x711D
+0x9864    0xE957
+0x9865    0xE958
+0x9866    0x4FB0
+0x9867    0xE95A
+0x9868    0x5CC2
+0x9869    0xE95C
+0x986A    0xE95D
+0x986B    0xE95E
+0x986C    0x6A0C
+0x986D    0xE960
+0x986E    0xE961
+0x986F    0x70A6
+0x9870    0x7133
+0x9871    0xE964
+0x9872    0x3DA5
+0x9873    0x6CDF
+0x9874    0xE967
+0x9875    0xE968
+0x9876    0x7E65
+0x9877    0x59EB
+0x9878    0x5D2F
+0x9879    0x3DF3
+0x987A    0x5F5C
+0x987B    0xE96E
+0x987C    0xE96F
+0x987D    0x7DA4
+0x987E    0x8426
+0x98A1    0x5485
+0x98A2    0xE973
+0x98A3    0xE974
+0x98A4    0xE975
+0x98A5    0x577E
+0x98A6    0xE977
+0x98A7    0xE978
+0x98A8    0x3FE5
+0x98A9    0xE97A
+0x98AA    0xE97B
+0x98AB    0x7003
+0x98AC    0xE97D
+0x98AD    0x5D70
+0x98AE    0x738F
+0x98AF    0x7CD3
+0x98B0    0xE981
+0x98B1    0xE982
+0x98B2    0x4FC8
+0x98B3    0x7FE7
+0x98B4    0x72CD
+0x98B5    0x7310
+0x98B6    0xE987
+0x98B7    0x7338
+0x98B8    0x7339
+0x98B9    0xE98A
+0x98BA    0x7341
+0x98BB    0x7348
+0x98BC    0x3EA9
+0x98BD    0xE98E
+0x98BE    0x906C
+0x98BF    0x71F5
+0x98C0    0xE991
+0x98C1    0x73E1
+0x98C2    0x81F6
+0x98C3    0x3ECA
+0x98C4    0x770C
+0x98C5    0x3ED1
+0x98C6    0x6CA2
+0x98C7    0x56FD
+0x98C8    0x7419
+0x98C9    0x741E
+0x98CA    0x741F
+0x98CB    0x3EE2
+0x98CC    0x3EF0
+0x98CD    0x3EF4
+0x98CE    0x3EFA
+0x98CF    0x74D3
+0x98D0    0x3F0E
+0x98D1    0x3F53
+0x98D2    0x7542
+0x98D3    0x756D
+0x98D4    0x7572
+0x98D5    0x758D
+0x98D6    0x3F7C
+0x98D7    0x75C8
+0x98D8    0x75DC
+0x98D9    0x3FC0
+0x98DA    0x764D
+0x98DB    0x3FD7
+0x98DC    0x7674
+0x98DD    0x3FDC
+0x98DE    0x767A
+0x98DF    0xE9B0
+0x98E0    0x7188
+0x98E1    0x5623
+0x98E2    0x8980
+0x98E3    0x5869
+0x98E4    0x401D
+0x98E5    0x7743
+0x98E6    0x4039
+0x98E7    0x6761
+0x98E8    0x4045
+0x98E9    0x35DB
+0x98EA    0x7798
+0x98EB    0x406A
+0x98EC    0x406F
+0x98ED    0x5C5E
+0x98EE    0x77BE
+0x98EF    0x77CB
+0x98F0    0x58F2
+0x98F1    0x7818
+0x98F2    0x70B9
+0x98F3    0x781C
+0x98F4    0x40A8
+0x98F5    0x7839
+0x98F6    0x7847
+0x98F7    0x7851
+0x98F8    0x7866
+0x98F9    0x8448
+0x98FA    0xE9CB
+0x98FB    0x7933
+0x98FC    0x6803
+0x98FD    0x7932
+0x98FE    0x4103
+0x9940    0x4109
+0x9941    0x7991
+0x9942    0x7999
+0x9943    0x8FBB
+0x9944    0x7A06
+0x9945    0x8FBC
+0x9946    0x4167
+0x9947    0x7A91
+0x9948    0x41B2
+0x9949    0x7ABC
+0x994A    0x8279
+0x994B    0x41C4
+0x994C    0x7ACF
+0x994D    0x7ADB
+0x994E    0x41CF
+0x994F    0x4E21
+0x9950    0x7B62
+0x9951    0x7B6C
+0x9952    0x7B7B
+0x9953    0x7C12
+0x9954    0x7C1B
+0x9955    0x4260
+0x9956    0x427A
+0x9957    0x7C7B
+0x9958    0x7C9C
+0x9959    0x428C
+0x995A    0x7CB8
+0x995B    0x4294
+0x995C    0x7CED
+0x995D    0x8F93
+0x995E    0x70C0
+0x995F    0xE9EF
+0x9960    0x7DCF
+0x9961    0x7DD4
+0x9962    0x7DD0
+0x9963    0x7DFD
+0x9964    0x7FAE
+0x9965    0x7FB4
+0x9966    0x729F
+0x9967    0x4397
+0x9968    0x8020
+0x9969    0x8025
+0x996A    0x7B39
+0x996B    0x802E
+0x996C    0x8031
+0x996D    0x8054
+0x996E    0x3DCC
+0x996F    0x57B4
+0x9970    0x70A0
+0x9971    0x80B7
+0x9972    0x80E9
+0x9973    0x43ED
+0x9974    0x810C
+0x9975    0x732A
+0x9976    0x810E
+0x9977    0x8112
+0x9978    0x7560
+0x9979    0x8114
+0x997A    0x4401
+0x997B    0x3B39
+0x997C    0x8156
+0x997D    0x8159
+0x997E    0x815A
+0x99A1    0x4413
+0x99A2    0x583A
+0x99A3    0x817C
+0x99A4    0x8184
+0x99A5    0x4425
+0x99A6    0x8193
+0x99A7    0x442D
+0x99A8    0x81A5
+0x99A9    0x57EF
+0x99AA    0x81C1
+0x99AB    0x81E4
+0x99AC    0x8254
+0x99AD    0x448F
+0x99AE    0x82A6
+0x99AF    0x8276
+0x99B0    0x82CA
+0x99B1    0x82D8
+0x99B2    0x82FF
+0x99B3    0x44B0
+0x99B4    0x8357
+0x99B5    0x9669
+0x99B6    0x698A
+0x99B7    0x8405
+0x99B8    0x70F5
+0x99B9    0x8464
+0x99BA    0x60E3
+0x99BB    0x8488
+0x99BC    0x4504
+0x99BD    0x84BE
+0x99BE    0x84E1
+0x99BF    0x84F8
+0x99C0    0x8510
+0x99C1    0x8538
+0x99C2    0x8552
+0x99C3    0x453B
+0x99C4    0x856F
+0x99C5    0x8570
+0x99C6    0x85E0
+0x99C7    0x4577
+0x99C8    0x8672
+0x99C9    0x8692
+0x99CA    0x86B2
+0x99CB    0x86EF
+0x99CC    0x9645
+0x99CD    0x878B
+0x99CE    0x4606
+0x99CF    0x4617
+0x99D0    0x88AE
+0x99D1    0x88FF
+0x99D2    0x8924
+0x99D3    0x8947
+0x99D4    0x8991
+0x99D5    0xEA43
+0x99D6    0x8A29
+0x99D7    0x8A38
+0x99D8    0x8A94
+0x99D9    0x8AB4
+0x99DA    0x8C51
+0x99DB    0x8CD4
+0x99DC    0x8CF2
+0x99DD    0x8D1C
+0x99DE    0x4798
+0x99DF    0x585F
+0x99E0    0x8DC3
+0x99E1    0x47ED
+0x99E2    0x4EEE
+0x99E3    0x8E3A
+0x99E4    0x55D8
+0x99E5    0x5754
+0x99E6    0x8E71
+0x99E7    0x55F5
+0x99E8    0x8EB0
+0x99E9    0x4837
+0x99EA    0x8ECE
+0x99EB    0x8EE2
+0x99EC    0x8EE4
+0x99ED    0x8EED
+0x99EE    0x8EF2
+0x99EF    0x8FB7
+0x99F0    0x8FC1
+0x99F1    0x8FCA
+0x99F2    0x8FCC
+0x99F3    0x9033
+0x99F4    0x99C4
+0x99F5    0x48AD
+0x99F6    0x98E0
+0x99F7    0x9213
+0x99F8    0x491E
+0x99F9    0x9228
+0x99FA    0x9258
+0x99FB    0x926B
+0x99FC    0x92B1
+0x99FD    0x92AE
+0x99FE    0x92BF
+0x9A40    0x92E3
+0x9A41    0x92EB
+0x9A42    0x92F3
+0x9A43    0x92F4
+0x9A44    0x92FD
+0x9A45    0x9343
+0x9A46    0x9384
+0x9A47    0x93AD
+0x9A48    0x4945
+0x9A49    0x4951
+0x9A4A    0x9EBF
+0x9A4B    0x9417
+0x9A4C    0x5301
+0x9A4D    0x941D
+0x9A4E    0x942D
+0x9A4F    0x943E
+0x9A50    0x496A
+0x9A51    0x9454
+0x9A52    0x9479
+0x9A53    0x952D
+0x9A54    0x95A2
+0x9A55    0x49A7
+0x9A56    0x95F4
+0x9A57    0x9633
+0x9A58    0x49E5
+0x9A59    0x67A0
+0x9A5A    0x4A24
+0x9A5B    0x9740
+0x9A5C    0x4A35
+0x9A5D    0x97B2
+0x9A5E    0x97C2
+0x9A5F    0x5654
+0x9A60    0x4AE4
+0x9A61    0x60E8
+0x9A62    0x98B9
+0x9A63    0x4B19
+0x9A64    0x98F1
+0x9A65    0x5844
+0x9A66    0x990E
+0x9A67    0x9919
+0x9A68    0x51B4
+0x9A69    0x991C
+0x9A6A    0x9937
+0x9A6B    0x9942
+0x9A6C    0x995D
+0x9A6D    0x9962
+0x9A6E    0x4B70
+0x9A6F    0x99C5
+0x9A70    0x4B9D
+0x9A71    0x9A3C
+0x9A72    0x9B0F
+0x9A73    0x7A83
+0x9A74    0x9B69
+0x9A75    0x9B81
+0x9A76    0x9BDD
+0x9A77    0x9BF1
+0x9A78    0x9BF4
+0x9A79    0x4C6D
+0x9A7A    0x9C20
+0x9A7B    0x376F
+0x9A7C    0xEAA9
+0x9A7D    0x9D49
+0x9A7E    0x9C3A
+0x9AA1    0x9EFE
+0x9AA2    0x5650
+0x9AA3    0x9D93
+0x9AA4    0x9DBD
+0x9AA5    0x9DC0
+0x9AA6    0x9DFC
+0x9AA7    0x94F6
+0x9AA8    0x8FB6
+0x9AA9    0x9E7B
+0x9AAA    0x9EAC
+0x9AAB    0x9EB1
+0x9AAC    0x9EBD
+0x9AAD    0x9EC6
+0x9AAE    0x94DC
+0x9AAF    0x9EE2
+0x9AB0    0x9EF1
+0x9AB1    0x9EF8
+0x9AB2    0x7AC8
+0x9AB3    0x9F44
+0x9AB4    0xEABF
+0x9AB5    0xEAC0
+0x9AB6    0xEAC1
+0x9AB7    0x691A
+0x9AB8    0x94C3
+0x9AB9    0x59AC
+0x9ABA    0xEAC5
+0x9ABB    0x5840
+0x9ABC    0x94C1
+0x9ABD    0x37B9
+0x9ABE    0xEAC9
+0x9ABF    0xEACA
+0x9AC0    0xEACB
+0x9AC1    0xEACC
+0x9AC2    0x5757
+0x9AC3    0x7173
+0x9AC4    0xEACF
+0x9AC5    0xEAD0
+0x9AC6    0xEAD1
+0x9AC7    0x546A
+0x9AC8    0xEAD3
+0x9AC9    0xEAD4
+0x9ACA    0x549E
+0x9ACB    0xEAD6
+0x9ACC    0xEAD7
+0x9ACD    0xEAD8
+0x9ACE    0xEAD9
+0x9ACF    0xEADA
+0x9AD0    0x60E7
+0x9AD1    0xEADC
+0x9AD2    0x567A
+0x9AD3    0xEADE
+0x9AD4    0xEADF
+0x9AD5    0xEAE0
+0x9AD6    0xEAE1
+0x9AD7    0xEAE2
+0x9AD8    0xEAE3
+0x9AD9    0x6955
+0x9ADA    0x9C2F
+0x9ADB    0x87A5
+0x9ADC    0xEAE7
+0x9ADD    0xEAE8
+0x9ADE    0xEAE9
+0x9ADF    0xEAEA
+0x9AE0    0xEAEB
+0x9AE1    0xEAEC
+0x9AE2    0x5C20
+0x9AE3    0xEAEE
+0x9AE4    0x5E0B
+0x9AE5    0xEAF0
+0x9AE6    0xEAF1
+0x9AE7    0xEAF2
+0x9AE8    0x671E
+0x9AE9    0xEAF4
+0x9AEA    0xEAF5
+0x9AEB    0xEAF6
+0x9AEC    0x3647
+0x9AED    0xEAF8
+0x9AEE    0xEAF9
+0x9AEF    0xEAFA
+0x9AF0    0xEAFB
+0x9AF1    0x5364
+0x9AF2    0x84AD
+0x9AF3    0xEAFE
+0x9AF4    0xEAFF
+0x9AF5    0xEB00
+0x9AF6    0x8B81
+0x9AF7    0xEB02
+0x9AF8    0xEB03
+0x9AF9    0xEB04
+0x9AFA    0xEB05
+0x9AFB    0x4E78
+0x9AFC    0x70BB
+0x9AFD    0xEB08
+0x9AFE    0xEB09
+0x9B40    0xEB0A
+0x9B41    0xEB0B
+0x9B42    0xEB0C
+0x9B43    0xEB0D
+0x9B44    0xEB0E
+0x9B45    0xEB0F
+0x9B46    0x62C3
+0x9B47    0xEB11
+0x9B48    0xEB12
+0x9B49    0x7198
+0x9B4A    0x6855
+0x9B4B    0xEB15
+0x9B4C    0x69E9
+0x9B4D    0x36C8
+0x9B4E    0xEB18
+0x9B4F    0xEB19
+0x9B50    0xEB1A
+0x9B51    0xEB1B
+0x9B52    0xEB1C
+0x9B53    0xEB1D
+0x9B54    0x82FD
+0x9B55    0xEB1F
+0x9B56    0xEB20
+0x9B57    0xEB21
+0x9B58    0x89A5
+0x9B59    0xEB23
+0x9B5A    0x8FA0
+0x9B5B    0xEB25
+0x9B5C    0x97B8
+0x9B5D    0xEB27
+0x9B5E    0x9847
+0x9B5F    0x9ABD
+0x9B60    0xEB2A
+0x9B62    0xEB2C
+0x9B63    0xEB2D
+0x9B64    0xEB2E
+0x9B65    0xEB2F
+0x9B66    0xEB30
+0x9B67    0xEB31
+0x9B68    0xEB32
+0x9B69    0xEB33
+0x9B6A    0xEB34
+0x9B6B    0xEB35
+0x9B6C    0xEB36
+0x9B6D    0xEB37
+0x9B6E    0xEB38
+0x9B6F    0xEB39
+0x9B70    0x5FB1
+0x9B71    0x6648
+0x9B72    0x66BF
+0x9B73    0xEB3D
+0x9B74    0xEB3E
+0x9B75    0xEB3F
+0x9B77    0xEB41
+0x9B79    0xEB43
+0x9B7A    0xEB44
+0x9B7C    0xEB46
+0x9B7D    0x58B5
+0x9B7E    0x670E
+0x9BA1    0x6918
+0x9BA2    0xEB4A
+0x9BA3    0xEB4B
+0x9BA4    0xEB4C
+0x9BA5    0xEB4D
+0x9BA6    0xEB4E
+0x9BA7    0xEB4F
+0x9BA8    0xEB50
+0x9BA9    0x48D0
+0x9BAA    0x4AB8
+0x9BAB    0xEB53
+0x9BAC    0xEB54
+0x9BAD    0xEB55
+0x9BAE    0xEB56
+0x9BAF    0xEB57
+0x9BB0    0xEB58
+0x9BB1    0xEB59
+0x9BB2    0xEB5A
+0x9BB3    0xEB5B
+0x9BB4    0x51D2
+0x9BB5    0xEB5D
+0x9BB6    0x599F
+0x9BB7    0xEB5F
+0x9BB8    0x3BBE
+0x9BB9    0xEB61
+0x9BBA    0xEB62
+0x9BBB    0xEB63
+0x9BBC    0x5788
+0x9BBD    0xEB65
+0x9BBE    0x399B
+0x9BBF    0xEB67
+0x9BC0    0xEB68
+0x9BC1    0xEB69
+0x9BC2    0x3762
+0x9BC3    0xEB6B
+0x9BC4    0x8B5E
+0x9BC5    0xEB6D
+0x9BC7    0xEB6F
+0x9BC8    0xEB70
+0x9BC9    0xEB71
+0x9BCA    0x7209
+0x9BCB    0xEB73
+0x9BCC    0xEB74
+0x9BCD    0x5965
+0x9BCE    0xEB76
+0x9BCF    0xEB77
+0x9BD0    0xEB78
+0x9BD1    0x8EDA
+0x9BD2    0xEB7A
+0x9BD3    0x528F
+0x9BD4    0x573F
+0x9BD5    0x7171
+0x9BD6    0xEB7E
+0x9BD7    0xEB7F
+0x9BD8    0xEB80
+0x9BD9    0xEB81
+0x9BDA    0x55BC
+0x9BDB    0xEB83
+0x9BDC    0xEB84
+0x9BDD    0xEB85
+0x9BDF    0x3473
+0x9BE0    0xEB88
+0x9BE1    0xEB89
+0x9BE2    0xEB8A
+0x9BE3    0x4718
+0x9BE4    0xEB8C
+0x9BE5    0xEB8D
+0x9BE6    0xEB8E
+0x9BE7    0xEB8F
+0x9BE8    0xEB90
+0x9BE9    0x5066
+0x9BEA    0x34FB
+0x9BEB    0xEB93
+0x9BED    0xEB95
+0x9BEE    0x477C
+0x9BEF    0xEB97
+0x9BF0    0xEB98
+0x9BF1    0xEB99
+0x9BF2    0xEB9A
+0x9BF3    0xEB9B
+0x9BF4    0x57A1
+0x9BF5    0x7151
+0x9BF7    0xEB9F
+0x9BF8    0xEBA0
+0x9BF9    0x9056
+0x9BFA    0xEBA2
+0x9BFB    0xEBA3
+0x9BFC    0x8B62
+0x9BFD    0xEBA5
+0x9BFE    0xEBA6
+0x9C40    0x5D5B
+0x9C41    0xEBA8
+0x9C43    0xEBAA
+0x9C44    0xEBAB
+0x9C45    0x8AEA
+0x9C46    0xEBAD
+0x9C47    0xEBAE
+0x9C48    0xEBAF
+0x9C49    0xEBB0
+0x9C4A    0x4BC0
+0x9C4B    0xEBB2
+0x9C4C    0xEBB3
+0x9C4D    0xEBB4
+0x9C4E    0x9465
+0x9C4F    0xEBB6
+0x9C50    0x6195
+0x9C51    0x5A27
+0x9C52    0xEBB9
+0x9C54    0x56B9
+0x9C55    0xEBBC
+0x9C56    0xEBBD
+0x9C57    0x4E6A
+0x9C58    0xEBBF
+0x9C59    0x9656
+0x9C5A    0x6D8F
+0x9C5B    0xEBC2
+0x9C5C    0x3618
+0x9C5D    0x8977
+0x9C5E    0xEBC5
+0x9C5F    0xEBC6
+0x9C60    0xEBC7
+0x9C61    0xEBC8
+0x9C63    0xEBCA
+0x9C64    0x7B42
+0x9C65    0xEBCC
+0x9C66    0xEBCD
+0x9C67    0xEBCE
+0x9C69    0xEBD0
+0x9C6A    0x7A45
+0x9C6C    0xEBD3
+0x9C6D    0x9A26
+0x9C6E    0xEBD5
+0x9C6F    0x365F
+0x9C70    0xEBD7
+0x9C71    0xEBD8
+0x9C72    0x7983
+0x9C73    0xEBDA
+0x9C74    0xEBDB
+0x9C75    0x5D2C
+0x9C76    0xEBDD
+0x9C78    0xEBDF
+0x9C79    0x46D0
+0x9C7A    0xEBE1
+0x9C7B    0x753B
+0x9C7C    0x8865
+0x9C7D    0xEBE4
+0x9C7E    0x58B6
+0x9CA1    0x371C
+0x9CA2    0xEBE7
+0x9CA3    0xEBE8
+0x9CA4    0xEBE9
+0x9CA5    0x3C54
+0x9CA6    0xEBEB
+0x9CA7    0xEBEC
+0x9CA8    0x9281
+0x9CA9    0xEBEE
+0x9CAA    0xEBEF
+0x9CAB    0x9330
+0x9CAC    0xEBF1
+0x9CAD    0xEBF2
+0x9CAE    0x6C39
+0x9CAF    0x949F
+0x9CB0    0xEBF5
+0x9CB1    0xEBF6
+0x9CB2    0x8827
+0x9CB3    0x88F5
+0x9CB4    0xEBF9
+0x9CB5    0xEBFA
+0x9CB6    0xEBFB
+0x9CB7    0x6EB8
+0x9CB8    0xEBFD
+0x9CB9    0xEBFE
+0x9CBA    0x39A4
+0x9CBB    0x36B9
+0x9CBE    0x453F
+0x9CBF    0x66B6
+0x9CC0    0xEC05
+0x9CC1    0xEC06
+0x9CC2    0x8943
+0x9CC3    0xEC08
+0x9CC4    0xEC09
+0x9CC5    0x56D6
+0x9CC6    0x40DF
+0x9CC7    0xEC0C
+0x9CC8    0x39A1
+0x9CC9    0xEC0E
+0x9CCA    0xEC0F
+0x9CCB    0xEC10
+0x9CCC    0x71AD
+0x9CCD    0x8366
+0x9CCE    0xEC13
+0x9CCF    0xEC14
+0x9CD1    0x4CB7
+0x9CD2    0xEC17
+0x9CD3    0xEC18
+0x9CD4    0xEC19
+0x9CD5    0xEC1A
+0x9CD6    0xEC1B
+0x9CD7    0xEC1C
+0x9CD8    0xEC1D
+0x9CD9    0x7B43
+0x9CDA    0x797E
+0x9CDB    0xEC20
+0x9CDC    0x6FB5
+0x9CDD    0xEC22
+0x9CDE    0x6A03
+0x9CDF    0xEC24
+0x9CE0    0x53A2
+0x9CE1    0xEC26
+0x9CE2    0x93BF
+0x9CE3    0x6836
+0x9CE4    0x975D
+0x9CE5    0xEC2A
+0x9CE6    0xEC2B
+0x9CE7    0xEC2C
+0x9CE8    0xEC2D
+0x9CE9    0xEC2E
+0x9CEA    0xEC2F
+0x9CEB    0x5D85
+0x9CEC    0xEC31
+0x9CED    0xEC32
+0x9CEE    0x5715
+0x9CEF    0x9823
+0x9CF0    0xEC35
+0x9CF1    0x5DAB
+0x9CF2    0xEC37
+0x9CF3    0x65BE
+0x9CF4    0x69D5
+0x9CF5    0x53D2
+0x9CF6    0xEC3B
+0x9CF7    0xEC3C
+0x9CF8    0x3C11
+0x9CF9    0x6736
+0x9CFA    0xEC3F
+0x9CFB    0xEC40
+0x9CFC    0xEC41
+0x9CFD    0xEC42
+0x9CFE    0xEC43
+0x9D40    0xEC44
+0x9D41    0xEC45
+0x9D42    0xEC46
+0x9D43    0xEC47
+0x9D44    0xEC48
+0x9D45    0xEC49
+0x9D46    0x35CA
+0x9D47    0xEC4B
+0x9D48    0xEC4C
+0x9D49    0x48FA
+0x9D4A    0x63E6
+0x9D4B    0xEC4F
+0x9D4C    0x7808
+0x9D4D    0x9255
+0x9D4E    0xEC52
+0x9D4F    0x43F2
+0x9D50    0xEC54
+0x9D51    0x43DF
+0x9D52    0xEC56
+0x9D53    0xEC57
+0x9D54    0xEC58
+0x9D55    0x59F8
+0x9D56    0xEC5A
+0x9D58    0xEC5C
+0x9D59    0xEC5D
+0x9D5B    0xEC5F
+0x9D5C    0xEC60
+0x9D5D    0x3DF7
+0x9D5E    0xEC62
+0x9D5F    0xEC63
+0x9D60    0x8FD0
+0x9D61    0x728F
+0x9D62    0x568B
+0x9D63    0xEC67
+0x9D64    0xEC68
+0x9D65    0xEC69
+0x9D66    0xEC6A
+0x9D67    0xEC6B
+0x9D68    0xEC6C
+0x9D69    0xEC6D
+0x9D6A    0xEC6E
+0x9D6B    0xEC6F
+0x9D6C    0xEC70
+0x9D6D    0xEC71
+0x9D6E    0xEC72
+0x9D6F    0xEC73
+0x9D70    0x7E9F
+0x9D71    0xEC75
+0x9D72    0xEC76
+0x9D73    0x4CA4
+0x9D74    0x9547
+0x9D75    0xEC79
+0x9D76    0x71A2
+0x9D77    0xEC7B
+0x9D78    0x4D91
+0x9D79    0x9012
+0x9D7A    0xEC7E
+0x9D7B    0x4D9C
+0x9D7C    0xEC80
+0x9D7D    0x8FBE
+0x9D7E    0x55C1
+0x9DA1    0x8FBA
+0x9DA2    0xEC84
+0x9DA3    0x8FB9
+0x9DA4    0xEC86
+0x9DA5    0x4509
+0x9DA6    0x7E7F
+0x9DA7    0x6F56
+0x9DA8    0x6AB1
+0x9DA9    0x4EEA
+0x9DAA    0x34E4
+0x9DAB    0xEC8D
+0x9DAC    0xEC8E
+0x9DAD    0x373A
+0x9DAE    0x8E80
+0x9DAF    0xEC91
+0x9DB0    0xEC92
+0x9DB1    0xEC93
+0x9DB2    0xEC94
+0x9DB3    0xEC95
+0x9DB4    0xEC96
+0x9DB5    0x3DEB
+0x9DB6    0xEC98
+0x9DB7    0xEC99
+0x9DB8    0xEC9A
+0x9DB9    0xEC9B
+0x9DBA    0x4E9A
+0x9DBB    0xEC9D
+0x9DBC    0xEC9E
+0x9DBD    0x56BF
+0x9DBE    0xECA0
+0x9DBF    0x8E0E
+0x9DC0    0x5B6D
+0x9DC1    0xECA3
+0x9DC2    0xECA4
+0x9DC3    0x63DE
+0x9DC5    0xECA7
+0x9DC6    0xECA8
+0x9DC7    0x6530
+0x9DC8    0x562D
+0x9DC9    0xECAB
+0x9DCA    0x541A
+0x9DCB    0xECAD
+0x9DCC    0x3DC6
+0x9DCD    0xECAF
+0x9DCE    0x4C7D
+0x9DCF    0x5622
+0x9DD0    0x561E
+0x9DD1    0x7F49
+0x9DD2    0xECB4
+0x9DD3    0x5975
+0x9DD4    0xECB6
+0x9DD5    0x8770
+0x9DD6    0x4E1C
+0x9DD7    0xECB9
+0x9DD8    0xECBA
+0x9DD9    0xECBB
+0x9DDA    0x8117
+0x9DDB    0x9D5E
+0x9DDC    0x8D18
+0x9DDD    0x763B
+0x9DDE    0x9C45
+0x9DDF    0x764E
+0x9DE0    0x77B9
+0x9DE1    0x9345
+0x9DE2    0x5432
+0x9DE3    0x8148
+0x9DE4    0x82F7
+0x9DE5    0x5625
+0x9DE6    0x8132
+0x9DE7    0x8418
+0x9DE8    0x80BD
+0x9DE9    0x55EA
+0x9DEA    0x7962
+0x9DEB    0x5643
+0x9DEC    0x5416
+0x9DED    0xECCF
+0x9DEE    0x35CE
+0x9DEF    0x5605
+0x9DF0    0x55F1
+0x9DF1    0x66F1
+0x9DF2    0xECD4
+0x9DF3    0x362D
+0x9DF4    0x7534
+0x9DF5    0x55F0
+0x9DF6    0x55BA
+0x9DF7    0x5497
+0x9DF8    0x5572
+0x9DF9    0xECDB
+0x9DFA    0xECDC
+0x9DFB    0x5ED0
+0x9DFC    0xECDE
+0x9DFD    0xECDF
+0x9DFE    0xECE0
+0x9E40    0xECE1
+0x9E41    0x9EAB
+0x9E42    0x7D5A
+0x9E43    0x55DE
+0x9E44    0xECE5
+0x9E45    0x629D
+0x9E46    0x976D
+0x9E47    0x5494
+0x9E48    0x8CCD
+0x9E49    0x71F6
+0x9E4A    0x9176
+0x9E4B    0x63FC
+0x9E4C    0x63B9
+0x9E4D    0x63FE
+0x9E4E    0x5569
+0x9E4F    0xECF0
+0x9E50    0x9C72
+0x9E51    0xECF2
+0x9E52    0x519A
+0x9E53    0x34DF
+0x9E54    0xECF5
+0x9E55    0x51A7
+0x9E56    0x544D
+0x9E57    0x551E
+0x9E58    0x5513
+0x9E59    0x7666
+0x9E5A    0x8E2D
+0x9E5B    0xECFC
+0x9E5C    0x75B1
+0x9E5D    0x80B6
+0x9E5E    0x8804
+0x9E5F    0x8786
+0x9E60    0x88C7
+0x9E61    0x81B6
+0x9E62    0x841C
+0x9E63    0xED04
+0x9E64    0x44EC
+0x9E65    0x7304
+0x9E66    0xED07
+0x9E67    0x5B90
+0x9E68    0x830B
+0x9E69    0xED0A
+0x9E6A    0x567B
+0x9E6B    0xED0C
+0x9E6C    0xED0D
+0x9E6D    0xED0E
+0x9E6E    0xED0F
+0x9E6F    0xED10
+0x9E70    0xED11
+0x9E71    0x9170
+0x9E72    0xED13
+0x9E73    0x9208
+0x9E74    0xED15
+0x9E75    0xED16
+0x9E76    0xED17
+0x9E77    0xED18
+0x9E78    0x7266
+0x9E79    0xED1A
+0x9E7A    0x474E
+0x9E7B    0xED1C
+0x9E7C    0xED1D
+0x9E7D    0xED1E
+0x9E7E    0x40FA
+0x9EA1    0x9C5D
+0x9EA2    0x651F
+0x9EA3    0xED22
+0x9EA4    0x48F3
+0x9EA5    0xED24
+0x9EA6    0xED25
+0x9EA7    0xED26
+0x9EA8    0xED27
+0x9EAA    0xED29
+0x9EAB    0xED2A
+0x9EAD    0xED2C
+0x9EAE    0xED2D
+0x9EAF    0x71A3
+0x9EB0    0x7E8E
+0x9EB1    0x9D50
+0x9EB2    0x4E1A
+0x9EB3    0x4E04
+0x9EB4    0x3577
+0x9EB5    0x5B0D
+0x9EB6    0x6CB2
+0x9EB7    0x5367
+0x9EB8    0x36AC
+0x9EB9    0x39DC
+0x9EBA    0x537D
+0x9EBB    0x36A5
+0x9EBC    0xED3B
+0x9EBD    0x589A
+0x9EBE    0xED3D
+0x9EBF    0x822D
+0x9EC0    0x544B
+0x9EC1    0x57AA
+0x9EC2    0xED41
+0x9EC3    0xED42
+0x9EC5    0x3A52
+0x9EC6    0xED45
+0x9EC7    0x7374
+0x9EC8    0xED47
+0x9EC9    0x4D09
+0x9ECA    0x9BED
+0x9ECB    0xED4A
+0x9ECC    0xED4B
+0x9ECD    0x4C5B
+0x9ECE    0xED4D
+0x9ECF    0xED4E
+0x9ED0    0xED4F
+0x9ED1    0x845C
+0x9ED2    0xED51
+0x9ED3    0xED52
+0x9ED4    0xED53
+0x9ED5    0xED54
+0x9ED6    0x632E
+0x9ED7    0x7D25
+0x9ED8    0xED57
+0x9ED9    0xED58
+0x9EDA    0x3A2A
+0x9EDB    0x9008
+0x9EDC    0x52CC
+0x9EDD    0x3E74
+0x9EDE    0x367A
+0x9EDF    0x45E9
+0x9EE0    0xED5F
+0x9EE1    0x7640
+0x9EE2    0x5AF0
+0x9EE3    0xED62
+0x9EE4    0x787A
+0x9EE5    0x47B6
+0x9EE6    0x58A7
+0x9EE7    0x40BF
+0x9EE8    0x567C
+0x9EE9    0x9B8B
+0x9EEA    0x5D74
+0x9EEB    0x7654
+0x9EEC    0xED6B
+0x9EED    0x9E85
+0x9EEE    0x4CE1
+0x9EF0    0x37FB
+0x9EF1    0x6119
+0x9EF2    0xED71
+0x9EF3    0xED72
+0x9EF5    0x565D
+0x9EF6    0xED75
+0x9EF7    0x57A7
+0x9EF8    0xED77
+0x9EF9    0xED78
+0x9EFA    0x5234
+0x9EFB    0xED7A
+0x9EFC    0x35AD
+0x9EFE    0x9D7C
+0x9F40    0x7C56
+0x9F41    0x9B39
+0x9F42    0x57DE
+0x9F43    0xED81
+0x9F44    0x5C53
+0x9F45    0x64D3
+0x9F46    0xED84
+0x9F47    0xED85
+0x9F48    0xED86
+0x9F49    0x86AD
+0x9F4A    0xED88
+0x9F4B    0xED89
+0x9F4C    0xED8A
+0x9F4D    0xED8B
+0x9F4F    0x51FE
+0x9F50    0xED8E
+0x9F51    0x5D8E
+0x9F52    0x9703
+0x9F53    0xED91
+0x9F54    0x9E81
+0x9F55    0x904C
+0x9F56    0x7B1F
+0x9F57    0x9B02
+0x9F58    0x5CD1
+0x9F59    0x7BA3
+0x9F5A    0x6268
+0x9F5B    0x6335
+0x9F5C    0x9AFF
+0x9F5D    0x7BCF
+0x9F5E    0x9B2A
+0x9F5F    0x7C7E
+0x9F61    0x7C42
+0x9F62    0x7C86
+0x9F63    0x9C15
+0x9F64    0x7BFC
+0x9F65    0x9B09
+0x9F67    0x9C1B
+0x9F68    0xEDA6
+0x9F69    0x9F5A
+0x9F6A    0x5573
+0x9F6B    0x5BC3
+0x9F6C    0x4FFD
+0x9F6D    0x9E98
+0x9F6E    0x4FF2
+0x9F6F    0x5260
+0x9F70    0x3E06
+0x9F71    0x52D1
+0x9F72    0x5767
+0x9F73    0x5056
+0x9F74    0x59B7
+0x9F75    0x5E12
+0x9F76    0x97C8
+0x9F77    0x9DAB
+0x9F78    0x8F5C
+0x9F79    0x5469
+0x9F7A    0x97B4
+0x9F7B    0x9940
+0x9F7C    0x97BA
+0x9F7D    0x532C
+0x9F7E    0x6130
+0x9FA1    0x692C
+0x9FA2    0x53DA
+0x9FA3    0x9C0A
+0x9FA4    0x9D02
+0x9FA5    0x4C3B
+0x9FA6    0x9641
+0x9FA7    0x6980
+0x9FA8    0x50A6
+0x9FA9    0x7546
+0x9FAA    0xEDC6
+0x9FAB    0x99DA
+0x9FAC    0x5273
+0x9FAE    0x9159
+0x9FAF    0x9681
+0x9FB0    0x915C
+0x9FB2    0x9151
+0x9FB3    0xEDCF
+0x9FB4    0x637F
+0x9FB5    0xEDD1
+0x9FB6    0x6ACA
+0x9FB7    0x5611
+0x9FB8    0x918E
+0x9FB9    0x757A
+0x9FBA    0x6285
+0x9FBB    0xEDD7
+0x9FBC    0x734F
+0x9FBD    0x7C70
+0x9FBE    0xEDDA
+0x9FBF    0xEDDB
+0x9FC1    0xEDDD
+0x9FC2    0x76D6
+0x9FC3    0x9B9D
+0x9FC4    0x4E2A
+0x9FC5    0xEDE1
+0x9FC6    0x83BE
+0x9FC7    0x8842
+0x9FC9    0x5C4A
+0x9FCA    0x69C0
+0x9FCC    0x577A
+0x9FCD    0x521F
+0x9FCE    0x5DF5
+0x9FCF    0x4ECE
+0x9FD0    0x6C31
+0x9FD1    0xEDED
+0x9FD2    0x4F39
+0x9FD3    0x549C
+0x9FD4    0x54DA
+0x9FD5    0x529A
+0x9FD6    0x8D82
+0x9FD7    0x35FE
+0x9FD9    0x35F3
+0x9FDB    0x6B52
+0x9FDC    0x917C
+0x9FDD    0x9FA5
+0x9FDE    0x9B97
+0x9FDF    0x982E
+0x9FE0    0x98B4
+0x9FE1    0x9ABA
+0x9FE2    0x9EA8
+0x9FE3    0x9E84
+0x9FE4    0x717A
+0x9FE5    0x7B14
+0x9FE7    0x6BFA
+0x9FE8    0x8818
+0x9FE9    0x7F78
+0x9FEB    0x5620
+0x9FEC    0xEE08
+0x9FED    0x8E77
+0x9FEE    0x9F53
+0x9FF0    0x8DD4
+0x9FF1    0x8E4F
+0x9FF2    0x9E1C
+0x9FF3    0x8E01
+0x9FF4    0x6282
+0x9FF5    0xEE11
+0x9FF6    0x8E28
+0x9FF7    0x8E75
+0x9FF8    0x7AD3
+0x9FF9    0xEE15
+0x9FFA    0x7A3E
+0x9FFB    0x78D8
+0x9FFC    0x6CEA
+0x9FFD    0x8A67
+0x9FFE    0x7607
+0xA040    0xEE1B
+0xA041    0x9F26
+0xA042    0x6CCE
+0xA043    0x87D6
+0xA044    0x75C3
+0xA045    0xEE20
+0xA046    0x7853
+0xA047    0xEE22
+0xA048    0x8D0C
+0xA049    0x72E2
+0xA04A    0x7371
+0xA04B    0x8B2D
+0xA04C    0x7302
+0xA04D    0x74F1
+0xA04E    0x8CEB
+0xA04F    0xEE2A
+0xA050    0x862F
+0xA051    0x5FBA
+0xA052    0x88A0
+0xA053    0x44B7
+0xA055    0xEE30
+0xA056    0xEE31
+0xA058    0x8A7E
+0xA059    0xEE34
+0xA05B    0x60FD
+0xA05C    0x7667
+0xA05D    0x9AD7
+0xA05E    0x9D44
+0xA05F    0x936E
+0xA060    0x9B8F
+0xA061    0x87F5
+0xA064    0x8CF7
+0xA065    0x732C
+0xA066    0x9721
+0xA067    0x9BB0
+0xA068    0x35D6
+0xA069    0x72B2
+0xA06A    0x4C07
+0xA06B    0x7C51
+0xA06C    0x994A
+0xA06D    0xEE48
+0xA06E    0x6159
+0xA06F    0x4C04
+0xA070    0x9E96
+0xA071    0x617D
+0xA073    0x575F
+0xA074    0x616F
+0xA075    0x62A6
+0xA076    0x6239
+0xA078    0x3A5C
+0xA079    0x61E2
+0xA07A    0x53AA
+0xA07B    0xEE56
+0xA07C    0x6364
+0xA07D    0x6802
+0xA07E    0x35D2
+0xA0A1    0x5D57
+0xA0A2    0xEE5B
+0xA0A3    0x8FDA
+0xA0A4    0xEE5D
+0xA0A6    0x50D9
+0xA0A7    0xEE60
+0xA0A8    0x7906
+0xA0A9    0x5332
+0xA0AA    0x9638
+0xA0AB    0xEE64
+0xA0AC    0x4065
+0xA0AE    0x77FE
+0xA0B0    0x7CC2
+0xA0B1    0xEE6A
+0xA0B2    0x7CDA
+0xA0B3    0x7A2D
+0xA0B4    0x8066
+0xA0B5    0x8063
+0xA0B6    0x7D4D
+0xA0B7    0x7505
+0xA0B8    0x74F2
+0xA0B9    0x8994
+0xA0BA    0x821A
+0xA0BB    0x670C
+0xA0BC    0x8062
+0xA0BD    0xEE76
+0xA0BE    0x805B
+0xA0BF    0x74F0
+0xA0C0    0x8103
+0xA0C1    0x7724
+0xA0C2    0x8989
+0xA0C3    0xEE7C
+0xA0C4    0x7553
+0xA0C5    0xEE7E
+0xA0C6    0x87A9
+0xA0C7    0x87CE
+0xA0C8    0x81C8
+0xA0C9    0x878C
+0xA0CA    0x8A49
+0xA0CB    0x8CAD
+0xA0CC    0x8B43
+0xA0CD    0x772B
+0xA0CE    0x74F8
+0xA0CF    0x84DA
+0xA0D0    0x3635
+0xA0D1    0x69B2
+0xA0D2    0x8DA6
+0xA0D4    0x89A9
+0xA0D6    0x6DB9
+0xA0D7    0x87C1
+0xA0D8    0xEE91
+0xA0D9    0x74E7
+0xA0DA    0x3DDB
+0xA0DB    0x7176
+0xA0DC    0x60A4
+0xA0DD    0x619C
+0xA0DE    0x3CD1
+0xA0E0    0x6077
+0xA0E2    0x7F71
+0xA0E3    0xEE9C
+0xA0E5    0x60E9
+0xA0E6    0x4B7E
+0xA0E7    0x5220
+0xA0E8    0xEEA1
+0xA0E9    0xEEA2
+0xA0EA    0xEEA3
+0xA0EB    0xEEA4
+0xA0EC    0xEEA5
+0xA0ED    0xEEA6
+0xA0EE    0xEEA7
+0xA0EF    0xEEA8
+0xA0F0    0xEEA9
+0xA0F1    0xEEAA
+0xA0F2    0x5CC1
+0xA0F3    0xEEAC
+0xA0F4    0xEEAD
+0xA0F5    0xEEAE
+0xA0F6    0xEEAF
+0xA0F7    0xEEB0
+0xA0F8    0xEEB1
+0xA0F9    0x4562
+0xA0FA    0x5B1F
+0xA0FB    0xEEB4
+0xA0FC    0x9F50
+0xA0FD    0x9EA6
+0xA0FE    0xEEB7
+0xC6A1    0x2460
+0xC6A2    0x2461
+0xC6A3    0x2462
+0xC6A4    0x2463
+0xC6A5    0x2464
+0xC6A6    0x2465
+0xC6A7    0x2466
+0xC6A8    0x2467
+0xC6A9    0x2468
+0xC6AA    0x2469
+0xC6AB    0x2474
+0xC6AC    0x2475
+0xC6AD    0x2476
+0xC6AE    0x2477
+0xC6AF    0x2478
+0xC6B0    0x2479
+0xC6B1    0x247A
+0xC6B2    0x247B
+0xC6B3    0x247C
+0xC6B4    0x247D
+0xC6B5    0x2170
+0xC6B6    0x2171
+0xC6B7    0x2172
+0xC6B8    0x2173
+0xC6B9    0x2174
+0xC6BA    0x2175
+0xC6BB    0x2176
+0xC6BC    0x2177
+0xC6BD    0x2178
+0xC6BE    0x2179
+0xC6BF    0x4E36
+0xC6C0    0x4E3F
+0xC6C1    0x4E85
+0xC6C2    0x4EA0
+0xC6C3    0x5182
+0xC6C4    0x5196
+0xC6C5    0x51AB
+0xC6C6    0x52F9
+0xC6C7    0x5338
+0xC6C8    0x5369
+0xC6C9    0x53B6
+0xC6CA    0x590A
+0xC6CB    0x5B80
+0xC6CC    0x5DDB
+0xC6CD    0x2F33
+0xC6CE    0x5E7F
+0xC6D0    0x5F50
+0xC6D1    0x5F61
+0xC6D2    0x6534
+0xC6D4    0x7592
+0xC6D6    0x8FB5
+0xC6D8    0x00A8
+0xC6D9    0x02C6
+0xC6DA    0x30FD
+0xC6DB    0x30FE
+0xC6DC    0x309D
+0xC6DD    0x309E
+0xC6E0    0x3005
+0xC6E1    0x3006
+0xC6E2    0x3007
+0xC6E3    0x30FC
+0xC6E4    0xFF3B
+0xC6E5    0xFF3D
+0xC6E6    0x273D
+0xC6E7    0x3041
+0xC6E8    0x3042
+0xC6E9    0x3043
+0xC6EA    0x3044
+0xC6EB    0x3045
+0xC6EC    0x3046
+0xC6ED    0x3047
+0xC6EE    0x3048
+0xC6EF    0x3049
+0xC6F0    0x304A
+0xC6F1    0x304B
+0xC6F2    0x304C
+0xC6F3    0x304D
+0xC6F4    0x304E
+0xC6F5    0x304F
+0xC6F6    0x3050
+0xC6F7    0x3051
+0xC6F8    0x3052
+0xC6F9    0x3053
+0xC6FA    0x3054
+0xC6FB    0x3055
+0xC6FC    0x3056
+0xC6FD    0x3057
+0xC6FE    0x3058
+0xC740    0x3059
+0xC741    0x305A
+0xC742    0x305B
+0xC743    0x305C
+0xC744    0x305D
+0xC745    0x305E
+0xC746    0x305F
+0xC747    0x3060
+0xC748    0x3061
+0xC749    0x3062
+0xC74A    0x3063
+0xC74B    0x3064
+0xC74C    0x3065
+0xC74D    0x3066
+0xC74E    0x3067
+0xC74F    0x3068
+0xC750    0x3069
+0xC751    0x306A
+0xC752    0x306B
+0xC753    0x306C
+0xC754    0x306D
+0xC755    0x306E
+0xC756    0x306F
+0xC757    0x3070
+0xC758    0x3071
+0xC759    0x3072
+0xC75A    0x3073
+0xC75B    0x3074
+0xC75C    0x3075
+0xC75D    0x3076
+0xC75E    0x3077
+0xC75F    0x3078
+0xC760    0x3079
+0xC761    0x307A
+0xC762    0x307B
+0xC763    0x307C
+0xC764    0x307D
+0xC765    0x307E
+0xC766    0x307F
+0xC767    0x3080
+0xC768    0x3081
+0xC769    0x3082
+0xC76A    0x3083
+0xC76B    0x3084
+0xC76C    0x3085
+0xC76D    0x3086
+0xC76E    0x3087
+0xC76F    0x3088
+0xC770    0x3089
+0xC771    0x308A
+0xC772    0x308B
+0xC773    0x308C
+0xC774    0x308D
+0xC775    0x308E
+0xC776    0x308F
+0xC777    0x3090
+0xC778    0x3091
+0xC779    0x3092
+0xC77A    0x3093
+0xC77B    0x30A1
+0xC77C    0x30A2
+0xC77D    0x30A3
+0xC77E    0x30A4
+0xC7A1    0x30A5
+0xC7A2    0x30A6
+0xC7A3    0x30A7
+0xC7A4    0x30A8
+0xC7A5    0x30A9
+0xC7A6    0x30AA
+0xC7A7    0x30AB
+0xC7A8    0x30AC
+0xC7A9    0x30AD
+0xC7AA    0x30AE
+0xC7AB    0x30AF
+0xC7AC    0x30B0
+0xC7AD    0x30B1
+0xC7AE    0x30B2
+0xC7AF    0x30B3
+0xC7B0    0x30B4
+0xC7B1    0x30B5
+0xC7B2    0x30B6
+0xC7B3    0x30B7
+0xC7B4    0x30B8
+0xC7B5    0x30B9
+0xC7B6    0x30BA
+0xC7B7    0x30BB
+0xC7B8    0x30BC
+0xC7B9    0x30BD
+0xC7BA    0x30BE
+0xC7BB    0x30BF
+0xC7BC    0x30C0
+0xC7BD    0x30C1
+0xC7BE    0x30C2
+0xC7BF    0x30C3
+0xC7C0    0x30C4
+0xC7C1    0x30C5
+0xC7C2    0x30C6
+0xC7C3    0x30C7
+0xC7C4    0x30C8
+0xC7C5    0x30C9
+0xC7C6    0x30CA
+0xC7C7    0x30CB
+0xC7C8    0x30CC
+0xC7C9    0x30CD
+0xC7CA    0x30CE
+0xC7CB    0x30CF
+0xC7CC    0x30D0
+0xC7CD    0x30D1
+0xC7CE    0x30D2
+0xC7CF    0x30D3
+0xC7D0    0x30D4
+0xC7D1    0x30D5
+0xC7D2    0x30D6
+0xC7D3    0x30D7
+0xC7D4    0x30D8
+0xC7D5    0x30D9
+0xC7D6    0x30DA
+0xC7D7    0x30DB
+0xC7D8    0x30DC
+0xC7D9    0x30DD
+0xC7DA    0x30DE
+0xC7DB    0x30DF
+0xC7DC    0x30E0
+0xC7DD    0x30E1
+0xC7DE    0x30E2
+0xC7DF    0x30E3
+0xC7E0    0x30E4
+0xC7E1    0x30E5
+0xC7E2    0x30E6
+0xC7E3    0x30E7
+0xC7E4    0x30E8
+0xC7E5    0x30E9
+0xC7E6    0x30EA
+0xC7E7    0x30EB
+0xC7E8    0x30EC
+0xC7E9    0x30ED
+0xC7EA    0x30EE
+0xC7EB    0x30EF
+0xC7EC    0x30F0
+0xC7ED    0x30F1
+0xC7EE    0x30F2
+0xC7EF    0x30F3
+0xC7F0    0x30F4
+0xC7F1    0x30F5
+0xC7F2    0x30F6
+0xC7F3    0x0410
+0xC7F4    0x0411
+0xC7F5    0x0412
+0xC7F6    0x0413
+0xC7F7    0x0414
+0xC7F8    0x0415
+0xC7F9    0x0401
+0xC7FA    0x0416
+0xC7FB    0x0417
+0xC7FC    0x0418
+0xC7FD    0x0419
+0xC7FE    0x041A
+0xC840    0x041B
+0xC841    0x041C
+0xC842    0x041D
+0xC843    0x041E
+0xC844    0x041F
+0xC845    0x0420
+0xC846    0x0421
+0xC847    0x0422
+0xC848    0x0423
+0xC849    0x0424
+0xC84A    0x0425
+0xC84B    0x0426
+0xC84C    0x0427
+0xC84D    0x0428
+0xC84E    0x0429
+0xC84F    0x042A
+0xC850    0x042B
+0xC851    0x042C
+0xC852    0x042D
+0xC853    0x042E
+0xC854    0x042F
+0xC855    0x0430
+0xC856    0x0431
+0xC857    0x0432
+0xC858    0x0433
+0xC859    0x0434
+0xC85A    0x0435
+0xC85B    0x0451
+0xC85C    0x0436
+0xC85D    0x0437
+0xC85E    0x0438
+0xC85F    0x0439
+0xC860    0x043A
+0xC861    0x043B
+0xC862    0x043C
+0xC863    0x043D
+0xC864    0x043E
+0xC865    0x043F
+0xC866    0x0440
+0xC867    0x0441
+0xC868    0x0442
+0xC869    0x0443
+0xC86A    0x0444
+0xC86B    0x0445
+0xC86C    0x0446
+0xC86D    0x0447
+0xC86E    0x0448
+0xC86F    0x0449
+0xC870    0x044A
+0xC871    0x044B
+0xC872    0x044C
+0xC873    0x044D
+0xC874    0x044E
+0xC875    0x044F
+0xC876    0x21E7
+0xC877    0x21B8
+0xC878    0x21B9
+0xC879    0xF7E5
+0xC87A    0xF7E6
+0xC87B    0x4E5A
+0xC87C    0xF7E8
+0xC87D    0x5202
+0xC87E    0xF7EA
+0xC8A1    0xF7EB
+0xC8A2    0x5188
+0xC8A3    0xF7ED
+0xC8A4    0xF7EE
+0xC8CD    0xFFE2
+0xC8CE    0xFFE4
+0xC8CF    0xFF07
+0xC8D0    0xFF02
+0xC8D1    0x3231
+0xC8D2    0x2116
+0xC8D3    0x2121
+0xC8D4    0x309B
+0xC8D5    0x309C
+0xC8D6    0x2E80
+0xC8D7    0x2E84
+0xC8D8    0x2E86
+0xC8D9    0x2E87
+0xC8DA    0x2E88
+0xC8DB    0x2E8A
+0xC8DC    0x2E8C
+0xC8DD    0x2E8D
+0xC8DE    0x2E95
+0xC8DF    0x2E9C
+0xC8E0    0x2E9D
+0xC8E1    0x2EA5
+0xC8E2    0x2EA7
+0xC8E3    0x2EAA
+0xC8E4    0x2EAC
+0xC8E5    0x2EAE
+0xC8E6    0x2EB6
+0xC8E7    0x2EBC
+0xC8E8    0x2EBE
+0xC8E9    0x2EC6
+0xC8EA    0x2ECA
+0xC8EB    0x2ECC
+0xC8EC    0x2ECD
+0xC8ED    0x2ECF
+0xC8EE    0x2ED6
+0xC8EF    0x2ED7
+0xC8F0    0x2EDE
+0xC8F1    0x2EE3
+0xC8F5    0x0283
+0xC8F6    0x0250
+0xC8F7    0x025B
+0xC8F8    0x0254
+0xC8F9    0x0275
+0xC8FA    0x0153
+0xC8FB    0x00F8
+0xC8FC    0x014B
+0xC8FD    0x028A
+0xC8FE    0x026A
+0xF9D6    0x7881
+0xF9D7    0x92B9
+0xF9D8    0x88CF
+0xF9D9    0x58BB
+0xF9DA    0x6052
+0xF9DB    0x7CA7
+0xF9DC    0x5AFA
+0xF9DD    0x2554
+0xF9DE    0x2566
+0xF9DF    0x2557
+0xF9E0    0x2560
+0xF9E1    0x256C
+0xF9E2    0x2563
+0xF9E3    0x255A
+0xF9E4    0x2569
+0xF9E5    0x255D
+0xF9E6    0x2552
+0xF9E7    0x2564
+0xF9E8    0x2555
+0xF9E9    0x255E
+0xF9EA    0x256A
+0xF9EB    0x2561
+0xF9EC    0x2558
+0xF9ED    0x2567
+0xF9EE    0x255B
+0xF9EF    0x2553
+0xF9F0    0x2565
+0xF9F1    0x2556
+0xF9F2    0x255F
+0xF9F3    0x256B
+0xF9F4    0x2562
+0xF9F5    0x2559
+0xF9F6    0x2568
+0xF9F7    0x255C
+0xF9F8    0x2551
+0xF9F9    0x2550
+0xF9FA    0x256D
+0xF9FB    0x256E
+0xF9FC    0x2570
+0xF9FD    0x256F
+0xF9FE    0xFFED
+0xFA40    0xE000
+0xFA41    0x92DB
+0xFA42    0xE002
+0xFA43    0xE003
+0xFA44    0x854C
+0xFA45    0x42B5
+0xFA46    0x73EF
+0xFA47    0x51B5
+0xFA48    0x3649
+0xFA49    0xE009
+0xFA4A    0xE00A
+0xFA4B    0x9344
+0xFA4C    0xE00C
+0xFA4D    0x82EE
+0xFA4E    0xE00E
+0xFA4F    0x783C
+0xFA50    0x6744
+0xFA51    0x62DF
+0xFA52    0xE012
+0xFA53    0xE013
+0xFA54    0xE014
+0xFA55    0xE015
+0xFA56    0xE016
+0xFA57    0x4FAB
+0xFA58    0xE018
+0xFA59    0x5008
+0xFA5A    0xE01A
+0xFA5B    0xE01B
+0xFA5C    0xE01C
+0xFA5D    0xE01D
+0xFA5E    0xE01E
+0xFA60    0xE020
+0xFA61    0x5FA4
+0xFA62    0xE022
+0xFA63    0xE023
+0xFA64    0x6EDB
+0xFA65    0xE025
+0xFA67    0x5101
+0xFA68    0x347A
+0xFA69    0x510E
+0xFA6A    0x986C
+0xFA6B    0x3743
+0xFA6C    0x8416
+0xFA6D    0xE02D
+0xFA6E    0xE02E
+0xFA6F    0x5160
+0xFA70    0xE030
+0xFA71    0x516A
+0xFA72    0xE032
+0xFA73    0xE033
+0xFA74    0xE034
+0xFA75    0xE035
+0xFA76    0xE036
+0xFA77    0xE037
+0xFA78    0xE038
+0xFA79    0x5B82
+0xFA7A    0x877D
+0xFA7B    0xE03B
+0xFA7C    0xE03C
+0xFA7D    0x51B2
+0xFA7E    0x51B8
+0xFAA1    0x9D34
+0xFAA2    0x51C9
+0xFAA3    0x51CF
+0xFAA4    0x51D1
+0xFAA5    0x3CDC
+0xFAA6    0x51D3
+0xFAA7    0xE045
+0xFAA8    0x51B3
+0xFAA9    0x51E2
+0xFAAA    0x5342
+0xFAAB    0x51ED
+0xFAAC    0x83CD
+0xFAAD    0x693E
+0xFAAE    0xE04C
+0xFAAF    0x5F7B
+0xFAB0    0x520B
+0xFAB1    0x5226
+0xFAB2    0x523C
+0xFAB3    0x52B5
+0xFAB4    0x5257
+0xFAB5    0x5294
+0xFAB6    0x52B9
+0xFAB7    0x52C5
+0xFAB8    0x7C15
+0xFAB9    0x8542
+0xFABA    0x52E0
+0xFABB    0x860D
+0xFABC    0xE05A
+0xFABE    0xE05C
+0xFABF    0x5549
+0xFAC0    0x6ED9
+0xFAC1    0xE05F
+0xFAC2    0xE060
+0xFAC3    0xE061
+0xFAC4    0x5333
+0xFAC6    0xE064
+0xFAC7    0x6CCB
+0xFAC8    0xE066
+0xFAC9    0x681B
+0xFACA    0x73D5
+0xFACB    0x604A
+0xFACC    0x3EAA
+0xFACD    0x38CC
+0xFACE    0xE06C
+0xFACF    0x71DD
+0xFAD0    0x44A2
+0xFAD1    0x536D
+0xFAD2    0x5374
+0xFAD3    0xE071
+0xFAD4    0x537E
+0xFAD6    0xE074
+0xFAD7    0xE075
+0xFAD8    0x77E6
+0xFAD9    0x5393
+0xFADA    0xE078
+0xFADB    0x53A0
+0xFADC    0x53AB
+0xFADD    0x53AE
+0xFADE    0x73A7
+0xFADF    0xE07D
+0xFAE0    0x3F59
+0xFAE1    0x739C
+0xFAE2    0x53C1
+0xFAE3    0x53C5
+0xFAE4    0x6C49
+0xFAE5    0x4E49
+0xFAE6    0x57FE
+0xFAE7    0x53D9
+0xFAE8    0x3AAB
+0xFAE9    0xE087
+0xFAEA    0x53E0
+0xFAEB    0xE089
+0xFAEC    0xE08A
+0xFAED    0x53F6
+0xFAEE    0xE08C
+0xFAEF    0x5413
+0xFAF0    0x7079
+0xFAF1    0x552B
+0xFAF2    0x6657
+0xFAF3    0x6D5B
+0xFAF4    0x546D
+0xFAF5    0xE093
+0xFAF6    0xE094
+0xFAF7    0x555D
+0xFAF8    0x548F
+0xFAF9    0x54A4
+0xFAFA    0x47A6
+0xFAFB    0xE099
+0xFAFC    0xE09A
+0xFAFD    0x3DB4
+0xFAFE    0xE09C
+0xFB40    0xE09D
+0xFB41    0xE09E
+0xFB42    0x5547
+0xFB43    0x4CED
+0xFB44    0x542F
+0xFB45    0x7417
+0xFB46    0x5586
+0xFB47    0x55A9
+0xFB49    0xE0A6
+0xFB4A    0xE0A7
+0xFB4B    0x4552
+0xFB4C    0xE0A9
+0xFB4D    0x66B3
+0xFB4E    0xE0AB
+0xFB4F    0x5637
+0xFB50    0x66CD
+0xFB51    0xE0AE
+0xFB52    0x66A4
+0xFB53    0x66AD
+0xFB54    0x564D
+0xFB55    0x564F
+0xFB56    0x78F1
+0xFB57    0x56F1
+0xFB58    0x9787
+0xFB59    0x53FE
+0xFB5A    0x5700
+0xFB5B    0x56EF
+0xFB5C    0x56ED
+0xFB5D    0xE0BA
+0xFB5E    0x3623
+0xFB5F    0xE0BC
+0xFB60    0x5746
+0xFB61    0xE0BE
+0xFB62    0x6C6E
+0xFB63    0x708B
+0xFB64    0x5742
+0xFB65    0x36B1
+0xFB66    0xE0C3
+0xFB67    0x57E6
+0xFB68    0xE0C5
+0xFB69    0x5803
+0xFB6A    0xE0C7
+0xFB6B    0xE0C8
+0xFB6C    0x5826
+0xFB6D    0xE0CA
+0xFB6E    0x585C
+0xFB6F    0x58AA
+0xFB70    0x3561
+0xFB71    0x58E0
+0xFB72    0x58DC
+0xFB73    0xE0D0
+0xFB74    0x58FB
+0xFB75    0x5BFF
+0xFB76    0x5743
+0xFB77    0xE0D4
+0xFB78    0xE0D5
+0xFB79    0x93D3
+0xFB7A    0x35A1
+0xFB7B    0x591F
+0xFB7C    0x68A6
+0xFB7D    0x36C3
+0xFB7E    0x6E59
+0xFBA1    0xE0DC
+0xFBA2    0x5A24
+0xFBA3    0x5553
+0xFBA4    0xE0DF
+0xFBA5    0x8505
+0xFBA6    0x59C9
+0xFBA7    0xE0E2
+0xFBA8    0xE0E3
+0xFBA9    0xE0E4
+0xFBAA    0xE0E5
+0xFBAB    0x59D9
+0xFBAC    0xE0E7
+0xFBAD    0xE0E8
+0xFBAE    0xE0E9
+0xFBAF    0x6D71
+0xFBB0    0xE0EB
+0xFBB1    0xE0EC
+0xFBB2    0x59F9
+0xFBB3    0xE0EE
+0xFBB4    0x5AAB
+0xFBB5    0x5A63
+0xFBB6    0x36E6
+0xFBB7    0xE0F2
+0xFBB9    0x3708
+0xFBBA    0x5A96
+0xFBBB    0x7465
+0xFBBC    0x5AD3
+0xFBBD    0xE0F8
+0xFBBE    0xE0F9
+0xFBBF    0x3D85
+0xFBC0    0xE0FB
+0xFBC1    0x3732
+0xFBC2    0xE0FD
+0xFBC3    0x5E83
+0xFBC4    0x52D0
+0xFBC5    0x5B76
+0xFBC6    0x6588
+0xFBC7    0x5B7C
+0xFBC8    0xE103
+0xFBC9    0x4004
+0xFBCA    0x485D
+0xFBCB    0xE106
+0xFBCC    0x5BD5
+0xFBCD    0x6160
+0xFBCE    0xE109
+0xFBCF    0xE10A
+0xFBD0    0xE10B
+0xFBD1    0x5BF3
+0xFBD2    0x5B9D
+0xFBD3    0x4D10
+0xFBD4    0x5C05
+0xFBD5    0xE110
+0xFBD6    0x5C13
+0xFBD7    0x73CE
+0xFBD8    0x5C14
+0xFBD9    0xE114
+0xFBDA    0xE115
+0xFBDB    0x5C49
+0xFBDC    0x48DD
+0xFBDD    0x5C85
+0xFBDE    0x5CE9
+0xFBDF    0x5CEF
+0xFBE0    0x5D8B
+0xFBE1    0xE11C
+0xFBE2    0xE11D
+0xFBE3    0x5D10
+0xFBE4    0x5D18
+0xFBE5    0x5D46
+0xFBE6    0xE121
+0xFBE7    0x5CBA
+0xFBE8    0x5DD7
+0xFBE9    0x82FC
+0xFBEA    0x382D
+0xFBEB    0xE126
+0xFBEC    0xE127
+0xFBED    0xE128
+0xFBEE    0x8287
+0xFBEF    0x3836
+0xFBF0    0x3BC2
+0xFBF1    0x5E2E
+0xFBF2    0x6A8A
+0xFBF4    0x5E7A
+0xFBF5    0xE130
+0xFBF6    0xE131
+0xFBF7    0x53A6
+0xFBF8    0x4EB7
+0xFBFA    0x53A8
+0xFBFB    0xE136
+0xFBFC    0x5E09
+0xFBFD    0x5EF4
+0xFBFE    0xE139
+0xFC40    0x5EF9
+0xFC41    0x5EFB
+0xFC42    0x38A0
+0xFC43    0x5EFC
+0xFC44    0x683E
+0xFC45    0x941B
+0xFC46    0x5F0D
+0xFC47    0xE141
+0xFC48    0xE142
+0xFC49    0x3ADE
+0xFC4A    0x48AE
+0xFC4B    0xE145
+0xFC4C    0x5F3A
+0xFC4D    0xE147
+0xFC4E    0xE148
+0xFC50    0xE14A
+0xFC51    0x5F63
+0xFC52    0x97BD
+0xFC53    0xE14D
+0xFC54    0x5F72
+0xFC55    0x9340
+0xFC56    0xE150
+0xFC57    0x5FA7
+0xFC58    0x5DB6
+0xFC59    0x3D5F
+0xFC5A    0xE154
+0xFC5B    0xE155
+0xFC5C    0xE156
+0xFC5D    0xE157
+0xFC5E    0x91D6
+0xFC5F    0xE159
+0xFC60    0xE15A
+0xFC61    0x6031
+0xFC62    0x6685
+0xFC63    0xE15D
+0xFC64    0x3963
+0xFC65    0x3DC7
+0xFC66    0x3639
+0xFC67    0x5790
+0xFC68    0xE162
+0xFC69    0x7971
+0xFC6A    0x3E40
+0xFC6B    0x609E
+0xFC6D    0x60B3
+0xFC6E    0xE168
+0xFC6F    0xE169
+0xFC70    0xE16A
+0xFC71    0x74A4
+0xFC72    0x50E1
+0xFC73    0x5AA0
+0xFC74    0x6164
+0xFC75    0x8424
+0xFC76    0x6142
+0xFC77    0xE171
+0xFC78    0xE172
+0xFC79    0x6181
+0xFC7A    0x51F4
+0xFC7B    0xE175
+0xFC7C    0x6187
+0xFC7D    0x5BAA
+0xFC7E    0xE178
+0xFCA1    0xE179
+0xFCA2    0x61D3
+0xFCA3    0xE17B
+0xFCA4    0xE17C
+0xFCA5    0x61D0
+0xFCA6    0x3932
+0xFCA7    0xE17F
+0xFCA8    0xE180
+0xFCA9    0x6023
+0xFCAA    0x615C
+0xFCAB    0x651E
+0xFCAC    0x638B
+0xFCAD    0xE185
+0xFCAE    0x62C5
+0xFCAF    0xE187
+0xFCB0    0x62D5
+0xFCB1    0xE189
+0xFCB2    0x636C
+0xFCB3    0xE18B
+0xFCB4    0x3A17
+0xFCB5    0x6438
+0xFCB6    0x63F8
+0xFCB7    0xE18F
+0xFCB8    0xE190
+0xFCBA    0x6F8A
+0xFCBB    0xE193
+0xFCBC    0x9814
+0xFCBD    0xE195
+0xFCBE    0xE196
+0xFCBF    0x64E1
+0xFCC0    0x64E5
+0xFCC1    0x947B
+0xFCC2    0x3A66
+0xFCC3    0x643A
+0xFCC4    0x3A57
+0xFCC5    0x654D
+0xFCC6    0x6F16
+0xFCC7    0xE19F
+0xFCC8    0xE1A0
+0xFCC9    0x6585
+0xFCCA    0x656D
+0xFCCB    0x655F
+0xFCCC    0xE1A4
+0xFCCD    0x65B5
+0xFCCE    0xE1A6
+0xFCCF    0x4B37
+0xFCD0    0x65D1
+0xFCD1    0x40D8
+0xFCD2    0xE1AA
+0xFCD3    0x65E0
+0xFCD4    0x65E3
+0xFCD5    0x5FDF
+0xFCD6    0xE1AE
+0xFCD7    0x6618
+0xFCD8    0xE1B0
+0xFCD9    0xE1B1
+0xFCDA    0x6644
+0xFCDB    0xE1B3
+0xFCDC    0xE1B4
+0xFCDD    0x664B
+0xFCDE    0xE1B6
+0xFCDF    0x6667
+0xFCE0    0xE1B8
+0xFCE1    0x6673
+0xFCE3    0xE1BB
+0xFCE4    0xE1BC
+0xFCE5    0xE1BD
+0xFCE6    0xE1BE
+0xFCE7    0xE1BF
+0xFCE8    0x77C5
+0xFCE9    0xE1C1
+0xFCEA    0x99A4
+0xFCEB    0x6702
+0xFCEC    0xE1C4
+0xFCED    0xE1C5
+0xFCEE    0x3B2B
+0xFCEF    0x69FA
+0xFCF0    0xE1C8
+0xFCF2    0x6767
+0xFCF3    0x6762
+0xFCF4    0xE1CC
+0xFCF5    0xE1CD
+0xFCF6    0x67D7
+0xFCF7    0x44E9
+0xFCF8    0x6822
+0xFCF9    0x6E50
+0xFCFA    0x923C
+0xFCFB    0x6801
+0xFCFC    0xE1D4
+0xFCFD    0xE1D5
+0xFCFE    0x685D
+0xFD40    0xE1D7
+0xFD41    0x69E1
+0xFD42    0x6A0B
+0xFD43    0xE1DA
+0xFD44    0x6973
+0xFD45    0x68C3
+0xFD46    0xE1DD
+0xFD47    0x6901
+0xFD48    0x6900
+0xFD49    0x3D32
+0xFD4A    0x3A01
+0xFD4B    0xE1E2
+0xFD4C    0x3B80
+0xFD4D    0x67AC
+0xFD4E    0x6961
+0xFD4F    0xE1E6
+0xFD50    0x42FC
+0xFD51    0x6936
+0xFD52    0x6998
+0xFD53    0x3BA1
+0xFD54    0xE1EB
+0xFD55    0x8363
+0xFD56    0x5090
+0xFD57    0x69F9
+0xFD58    0xE1EF
+0xFD59    0xE1F0
+0xFD5A    0x6A45
+0xFD5B    0xE1F2
+0xFD5C    0x6A9D
+0xFD5D    0x3BF3
+0xFD5E    0x67B1
+0xFD5F    0x6AC8
+0xFD60    0xE1F7
+0xFD61    0x3C0D
+0xFD62    0x6B1D
+0xFD63    0xE1FA
+0xFD64    0x60DE
+0xFD65    0x6B35
+0xFD66    0x6B74
+0xFD67    0xE1FE
+0xFD68    0x6EB5
+0xFD69    0xE200
+0xFD6A    0xE201
+0xFD6B    0xE202
+0xFD6C    0x3740
+0xFD6D    0x5421
+0xFD6E    0xE205
+0xFD6F    0x6BE1
+0xFD70    0xE207
+0xFD71    0x6BDC
+0xFD72    0x6C37
+0xFD73    0xE20A
+0xFD74    0xE20B
+0xFD75    0xE20C
+0xFD76    0x6C5A
+0xFD77    0x8226
+0xFD78    0x6C79
+0xFD79    0xE210
+0xFD7A    0x44C5
+0xFD7B    0xE212
+0xFD7C    0xE213
+0xFD7D    0xE214
+0xFD7E    0xE215
+0xFDA1    0xE216
+0xFDA2    0x36E5
+0xFDA3    0x3CEB
+0xFDA4    0xE219
+0xFDA5    0x9B83
+0xFDA6    0xE21B
+0xFDA7    0xE21C
+0xFDA8    0x7F8F
+0xFDA9    0x6837
+0xFDAA    0xE21F
+0xFDAB    0xE220
+0xFDAC    0xE221
+0xFDAD    0x6D96
+0xFDAE    0x6D5C
+0xFDAF    0x6E7C
+0xFDB0    0x6F04
+0xFDB1    0xE226
+0xFDB2    0xE227
+0xFDB3    0xE228
+0xFDB4    0x8533
+0xFDB5    0xE22A
+0xFDB6    0x51C7
+0xFDB9    0x842E
+0xFDBA    0xE22F
+0xFDBC    0xE231
+0xFDBD    0x7453
+0xFDBE    0xE233
+0xFDBF    0x79CC
+0xFDC0    0x6E4F
+0xFDC1    0x5A91
+0xFDC2    0xE237
+0xFDC3    0x6FF8
+0xFDC4    0x370D
+0xFDC5    0x6F9D
+0xFDC6    0xE23B
+0xFDC7    0x6EFA
+0xFDC8    0xE23D
+0xFDC9    0xE23E
+0xFDCA    0x4555
+0xFDCB    0x93F0
+0xFDCC    0x6F44
+0xFDCD    0x6F5C
+0xFDCE    0x3D4E
+0xFDCF    0x6F74
+0xFDD0    0xE245
+0xFDD1    0x3D3B
+0xFDD2    0x6F9F
+0xFDD3    0xE248
+0xFDD4    0x6FD3
+0xFDD5    0xE24A
+0xFDD6    0xE24B
+0xFDD7    0xE24C
+0xFDD8    0xE24D
+0xFDD9    0xE24E
+0xFDDA    0xE24F
+0xFDDB    0x51DF
+0xFDDC    0xE251
+0xFDDD    0xE252
+0xFDDE    0xE253
+0xFDDF    0xE254
+0xFDE0    0x704B
+0xFDE1    0x707E
+0xFDE2    0x70A7
+0xFDE3    0x7081
+0xFDE4    0x70CC
+0xFDE5    0x70D5
+0xFDE6    0x70D6
+0xFDE7    0x70DF
+0xFDE8    0x4104
+0xFDE9    0x3DE8
+0xFDEA    0x71B4
+0xFDEB    0x7196
+0xFDEC    0xE261
+0xFDED    0x712B
+0xFDEE    0x7145
+0xFDEF    0x5A88
+0xFDF0    0x714A
+0xFDF2    0x5C9C
+0xFDF3    0xE268
+0xFDF4    0x714F
+0xFDF5    0x9362
+0xFDF6    0xE26B
+0xFDF7    0x712C
+0xFDF8    0xE26D
+0xFDF9    0xE26E
+0xFDFA    0xE26F
+0xFDFB    0x71BA
+0xFDFC    0xE271
+0xFDFD    0x70BD
+0xFDFE    0x720E
+0xFE40    0x9442
+0xFE41    0x7215
+0xFE42    0x5911
+0xFE43    0x9443
+0xFE44    0x7224
+0xFE45    0x9341
+0xFE46    0xE27A
+0xFE47    0x722E
+0xFE48    0x7240
+0xFE49    0xE27D
+0xFE4A    0x68BD
+0xFE4B    0x7255
+0xFE4C    0x7257
+0xFE4D    0x3E55
+0xFE4E    0xE282
+0xFE4F    0x680D
+0xFE50    0x6F3D
+0xFE51    0x7282
+0xFE53    0x732B
+0xFE54    0xE288
+0xFE55    0xE289
+0xFE56    0x48ED
+0xFE57    0xE28B
+0xFE58    0x7328
+0xFE59    0x732E
+0xFE5A    0x73CF
+0xFE5B    0x73AA
+0xFE5C    0xE290
+0xFE5D    0xE291
+0xFE5E    0x73C9
+0xFE5F    0x7449
+0xFE60    0xE294
+0xFE61    0xE295
+0xFE62    0xE296
+0xFE63    0x6623
+0xFE64    0x36C5
+0xFE65    0xE299
+0xFE66    0xE29A
+0xFE67    0xE29B
+0xFE68    0x73F7
+0xFE69    0x7415
+0xFE6A    0x6903
+0xFE6B    0xE29F
+0xFE6C    0x7439
+0xFE6D    0xE2A1
+0xFE6E    0x3ED7
+0xFE70    0xE2A4
+0xFE71    0x7460
+0xFE72    0xE2A6
+0xFE73    0x7447
+0xFE74    0x73E4
+0xFE75    0x7476
+0xFE76    0x83B9
+0xFE77    0x746C
+0xFE78    0x3730
+0xFE79    0x7474
+0xFE7A    0x93F1
+0xFE7B    0x6A2C
+0xFE7C    0x7482
+0xFE7D    0x4953
+0xFE7E    0xE2B2
+0xFEA1    0xE2B3
+0xFEA2    0xE2B4
+0xFEA3    0xE2B5
+0xFEA4    0x5B46
+0xFEA5    0xE2B7
+0xFEA6    0xE2B8
+0xFEA7    0x74C8
+0xFEA8    0xE2BA
+0xFEA9    0x750E
+0xFEAB    0x751E
+0xFEAC    0xE2BE
+0xFEAD    0xE2BF
+0xFEAE    0x5BD7
+0xFEAF    0xE2C1
+0xFEB0    0x9385
+0xFEB1    0x754D
+0xFEB2    0x754A
+0xFEB3    0x7567
+0xFEB4    0x756E
+0xFEB5    0xE2C7
+0xFEB6    0x3F04
+0xFEB7    0xE2C9
+0xFEB8    0x758E
+0xFEB9    0x745D
+0xFEBA    0x759E
+0xFEBB    0x75B4
+0xFEBC    0x7602
+0xFEBD    0x762C
+0xFEBE    0x7651
+0xFEBF    0x764F
+0xFEC0    0x766F
+0xFEC1    0x7676
+0xFEC2    0xE2D4
+0xFEC3    0x7690
+0xFEC4    0x81EF
+0xFEC5    0x37F8
+0xFEC6    0xE2D8
+0xFEC7    0xE2D9
+0xFEC8    0x76A1
+0xFEC9    0x76A5
+0xFECA    0x76B7
+0xFECB    0x76CC
+0xFECC    0xE2DE
+0xFECD    0x8462
+0xFECE    0xE2E0
+0xFECF    0xE2E1
+0xFED0    0xE2E2
+0xFED1    0x771E
+0xFED2    0x7726
+0xFED3    0x7740
+0xFED4    0x64AF
+0xFED5    0xE2E7
+0xFED6    0x7758
+0xFED7    0xE2E9
+0xFED8    0x77AF
+0xFED9    0xE2EB
+0xFEDA    0xE2EC
+0xFEDB    0xE2ED
+0xFEDC    0x77F4
+0xFEDE    0xE2F0
+0xFEDF    0xE2F1
+0xFEE0    0x68CA
+0xFEE1    0x78AF
+0xFEE2    0x78C7
+0xFEE3    0x78D3
+0xFEE4    0x96A5
+0xFEE5    0x792E
+0xFEE6    0xE2F8
+0xFEE7    0x78D7
+0xFEE8    0x7934
+0xFEE9    0x78B1
+0xFEEA    0xE2FC
+0xFEEB    0x8FB8
+0xFEEC    0x8884
+0xFEED    0xE2FF
+0xFEEE    0xE300
+0xFEEF    0xE301
+0xFEF0    0x7986
+0xFEF1    0x8900
+0xFEF2    0x6902
+0xFEF3    0x7980
+0xFEF4    0xE306
+0xFEF5    0x799D
+0xFEF6    0xE308
+0xFEF7    0x793C
+0xFEF8    0x79A9
+0xFEF9    0x6E2A
+0xFEFA    0xE30C
+0xFEFB    0x3EA8
+0xFEFC    0x79C6
+0xFEFD    0xE30F
+0xFEFE    0x79D4
--- a/jdk/make/tools/CharsetMapping/dbcs	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/tools/CharsetMapping/dbcs	Tue Apr 20 01:24:48 2010 -0700
@@ -1,6 +1,7 @@
 #
 #clzName  csName     hisName  dbtype    pkg               ascii   b1min  b1max  b2min b2max
 #
+Big5      Big5       Big5     basic     sun.nio.cs.ext    true    0xa1   0xf9   0x40  0xfe
 Johab     x-Johab    x-Johab  basic     sun.nio.cs.ext    true    0x84   0xf9   0x31  0xfe
 EUC_CN	  GB2312     EUC_CN   basic     sun.nio.cs.ext    true    0xa1   0xf7   0xa1  0xfe
 EUC_KR	  EUC-KR     EUC_KR   basic     sun.nio.cs.ext    true    0xa1   0xfd   0xa1  0xfe
--- a/jdk/make/tools/src/build/tools/charsetmapping/CharsetMapping.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/*
- * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.charsetmapping;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.*;
-
-public class CharsetMapping {
-    public final static char UNMAPPABLE_DECODING = '\uFFFD';
-    public final static int  UNMAPPABLE_ENCODING = 0xFFFD;
-
-    public static class Entry {
-        public int bs;   //byte sequence reps
-        public int cp;   //Unicode codepoint
-        public int cp2;  //CC of composite
-
-        public Entry () {}
-        public Entry (int bytes, int cp, int cp2) {
-            this.bs = bytes;
-            this.cp = cp;
-            this.cp2 = cp2;
-        }
-    }
-
-    static Comparator<Entry> comparatorCP =
-        new Comparator<Entry>() {
-            public int compare(Entry m1, Entry m2) {
-                return m1.cp - m2.cp;
-            }
-            public boolean equals(Object obj) {
-                return this == obj;
-            }
-    };
-
-    public static class Parser {
-        static final Pattern basic = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)?\\s*+.*");
-        static final int gBS = 1;
-        static final int gCP = 2;
-        static final int gCP2 = 3;
-
-        BufferedReader reader;
-        boolean closed;
-        Matcher matcher;
-        int gbs, gcp, gcp2;
-
-        public Parser (InputStream in, Pattern p, int gbs, int gcp, int gcp2)
-            throws IOException
-        {
-            this.reader = new BufferedReader(new InputStreamReader(in));
-            this.closed = false;
-            this.matcher = p.matcher("");
-            this.gbs = gbs;
-            this.gcp = gcp;
-            this.gcp2 = gcp2;
-        }
-
-        public Parser (InputStream in, Pattern p) throws IOException {
-            this(in, p, gBS, gCP, gCP2);
-        }
-
-        public Parser (InputStream in) throws IOException {
-            this(in, basic, gBS, gCP, gCP2);
-        }
-
-        protected boolean isDirective(String line) {
-            return line.startsWith("#");
-        }
-
-        protected Entry parse(Matcher matcher, Entry mapping) {
-            mapping.bs = Integer.parseInt(matcher.group(gbs), 16);
-            mapping.cp = Integer.parseInt(matcher.group(gcp), 16);
-            if (gcp2 <= matcher.groupCount() &&
-                matcher.group(gcp2) != null)
-                mapping.cp2 = Integer.parseInt(matcher.group(gcp2), 16);
-            else
-                mapping.cp2 = 0;
-            return mapping;
-        }
-
-        public Entry next() throws Exception {
-            return next(new Entry());
-        }
-
-        // returns null and closes the input stream if the eof has beenreached.
-        public Entry next(Entry mapping) throws Exception {
-            if (closed)
-                return null;
-            String line;
-            while ((line = reader.readLine()) != null) {
-                if (isDirective(line))
-                    continue;
-                matcher.reset(line);
-                if (!matcher.lookingAt()) {
-                    //System.out.println("Missed: " + line);
-                    continue;
-                }
-                return parse(matcher, mapping);
-            }
-            reader.close();
-            closed = true;
-            return null;
-        }
-    }
-
-    // tags of different charset mapping tables
-    private final static int MAP_SINGLEBYTE      = 0x1; // 0..256  : c
-    private final static int MAP_DOUBLEBYTE1     = 0x2; // min..max: c
-    private final static int MAP_DOUBLEBYTE2     = 0x3; // min..max: c [DB2]
-    private final static int MAP_SUPPLEMENT      = 0x5; //           db,c
-    private final static int MAP_SUPPLEMENT_C2B  = 0x6; //           c,db
-    private final static int MAP_COMPOSITE       = 0x7; //           db,base,cc
-    private final static int MAP_INDEXC2B        = 0x8; // index table of c->bb
-
-    private static final void writeShort(OutputStream out, int data)
-        throws IOException
-    {
-        out.write((data >>> 8) & 0xFF);
-        out.write((data      ) & 0xFF);
-    }
-
-    private static final void writeShortArray(OutputStream out,
-                                              int type,
-                                              int[] array,
-                                              int off,
-                                              int size)   // exclusive
-        throws IOException
-    {
-        writeShort(out, type);
-        writeShort(out, size);
-        for (int i = off; i < size; i++) {
-            writeShort(out, array[off+i]);
-        }
-    }
-
-    public static final void writeSIZE(OutputStream out, int data)
-        throws IOException
-    {
-        out.write((data >>> 24) & 0xFF);
-        out.write((data >>> 16) & 0xFF);
-        out.write((data >>>  8) & 0xFF);
-        out.write((data       ) & 0xFF);
-    }
-
-    public static void writeINDEXC2B(OutputStream out, int[] indexC2B)
-        throws IOException
-    {
-        writeShort(out, MAP_INDEXC2B);
-        writeShort(out, indexC2B.length);
-        int off = 0;
-        for (int i = 0; i < indexC2B.length; i++) {
-            if (indexC2B[i] != 0) {
-                writeShort(out, off);
-                off += 256;
-            } else {
-                writeShort(out, -1);
-            }
-        }
-    }
-
-    public static void writeSINGLEBYTE(OutputStream out, int[] sb)
-        throws IOException
-    {
-        writeShortArray(out, MAP_SINGLEBYTE, sb, 0, 256);
-    }
-
-    private static void writeDOUBLEBYTE(OutputStream out,
-                                        int type,
-                                        int[] db,
-                                        int b1Min, int b1Max,
-                                        int b2Min, int b2Max)
-        throws IOException
-    {
-        writeShort(out, type);
-        writeShort(out, b1Min);
-        writeShort(out, b1Max);
-        writeShort(out, b2Min);
-        writeShort(out, b2Max);
-        writeShort(out, (b1Max - b1Min + 1) * (b2Max - b2Min + 1));
-
-        for (int b1 = b1Min; b1 <= b1Max; b1++) {
-            for (int b2 = b2Min; b2 <= b2Max; b2++) {
-                writeShort(out, db[b1 * 256 + b2]);
-            }
-        }
-    }
-    public static void writeDOUBLEBYTE1(OutputStream out,
-                                        int[] db,
-                                        int b1Min, int b1Max,
-                                        int b2Min, int b2Max)
-        throws IOException
-    {
-        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE1, db, b1Min, b1Max, b2Min, b2Max);
-    }
-
-    public static void writeDOUBLEBYTE2(OutputStream out,
-                                        int[] db,
-                                        int b1Min, int b1Max,
-                                        int b2Min, int b2Max)
-        throws IOException
-    {
-        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE2, db, b1Min, b1Max, b2Min, b2Max);
-    }
-
-    // the c2b table is output as well
-    public static void writeSUPPLEMENT(OutputStream out, Entry[] supp, int size)
-        throws IOException
-    {
-        writeShort(out, MAP_SUPPLEMENT);
-        writeShort(out, size * 2);
-        // db at first half, cc at the low half
-        for (int i = 0; i < size; i++) {
-            writeShort(out, supp[i].bs);
-        }
-        for (int i = 0; i < size; i++) {
-            writeShort(out, supp[i].cp);
-        }
-
-        //c2b
-        writeShort(out, MAP_SUPPLEMENT_C2B);
-        writeShort(out, size*2);
-        Arrays.sort(supp, 0, size, comparatorCP);
-        for (int i = 0; i < size; i++) {
-            writeShort(out, supp[i].cp);
-        }
-        for (int i = 0; i < size; i++) {
-            writeShort(out, supp[i].bs);
-        }
-    }
-
-    public static void writeCOMPOSITE(OutputStream out, Entry[] comp, int size)
-        throws IOException
-    {
-        writeShort(out, MAP_COMPOSITE);
-        writeShort(out, size*3);
-        // comp is sorted already
-        for (int i = 0; i < size; i++) {
-            writeShort(out, (char)comp[i].bs);
-            writeShort(out, (char)comp[i].cp);
-            writeShort(out, (char)comp[i].cp2);
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/src/build/tools/charsetmapping/DBCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+import java.io.*;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Scanner;
+import java.util.Formatter;
+import java.util.regex.*;
+import java.nio.charset.*;
+import static build.tools.charsetmapping.Utils.*;
+
+public class DBCS {
+    // pattern used by this class to read in mapping table
+    static Pattern mPattern = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)(?:\\s++#.*)?");
+
+    public static void genClass(String args[]) throws Exception {
+
+        Scanner s = new Scanner(new File(args[0], args[2]));
+        while (s.hasNextLine()) {
+            String line = s.nextLine();
+            if (line.startsWith("#") || line.length() == 0)
+                continue;
+            String[] fields = line.split("\\s+");
+            if (fields.length < 10) {
+                System.err.println("Misconfiged sbcs line <" + line + ">?");
+                continue;
+            }
+            String clzName = fields[0];
+            String csName  = fields[1];
+            String hisName = ("null".equals(fields[2]))?null:fields[2];
+            String type = fields[3].toUpperCase();
+            if ("BASIC".equals(type))
+                type = "";
+            else
+                type = "_" + type;
+            String pkgName  = fields[4];
+            boolean isASCII = Boolean.valueOf(fields[5]);
+            int    b1Min = toInteger(fields[6]);
+            int    b1Max = toInteger(fields[7]);
+            int    b2Min    = toInteger(fields[8]);
+            int    b2Max    = toInteger(fields[9]);
+            System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName);
+            genClass0(args[0], args[1], "DoubleByte-X.java.template",
+                    clzName, csName, hisName, pkgName,
+                    isASCII, type,
+                    b1Min, b1Max, b2Min, b2Max);
+        }
+    }
+
+    static int toInteger(String s) {
+        if (s.startsWith("0x") || s.startsWith("0X"))
+            return Integer.valueOf(s.substring(2), 16);
+        else
+            return Integer.valueOf(s);
+    }
+
+    private static void genClass0(String srcDir, String dstDir, String template,
+                                  String clzName,
+                                  String csName,
+                                  String hisName,
+                                  String pkgName,
+                                  boolean isASCII,
+                                  String type,
+                                  int b1Min, int b1Max,
+                                  int b2Min, int b2Max)
+        throws Exception
+    {
+
+        StringBuilder b2cSB = new StringBuilder();
+        StringBuilder b2cNRSB = new StringBuilder();
+        StringBuilder c2bNRSB = new StringBuilder();
+
+        char[] db = new char[0x10000];
+        char[] c2bIndex = new char[0x100];
+        int c2bOff = 0x100;    // first 0x100 for unmappable segs
+
+        Arrays.fill(db, UNMAPPABLE_DECODING);
+        Arrays.fill(c2bIndex, UNMAPPABLE_DECODING);
+
+        char[] b2cIndex = new char[0x100];
+        Arrays.fill(b2cIndex, UNMAPPABLE_DECODING);
+
+        // (1)read in .map to parse all b->c entries
+        FileInputStream in = new FileInputStream(new File(srcDir, clzName + ".map"));
+        Parser p = new Parser(in, mPattern);
+        Entry  e = null;
+        while ((e = p.next()) != null) {
+            db[e.bs] = (char)e.cp;
+
+            if (e.bs > 0x100 &&    // db
+                b2cIndex[e.bs>>8] == UNMAPPABLE_DECODING) {
+                b2cIndex[e.bs>>8] = 1;
+            }
+
+            if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
+                c2bOff += 0x100;
+                c2bIndex[e.cp>>8] = 1;
+            }
+        }
+        Output out = new Output(new Formatter(b2cSB));
+        out.format("%n    static final String b2cSBStr =%n");
+        out.format(db, 0x00, 0x100,  ";");
+
+        out.format("%n        static final String[] b2cStr = {%n");
+        for (int i = 0; i < 0x100; i++) {
+            if (b2cIndex[i] == UNMAPPABLE_DECODING) {
+                out.format("            null,%n");  //unmappable segments
+            } else {
+                out.format(db, i, b2Min, b2Max, ",");
+            }
+        }
+
+        out.format("        };%n");
+        out.close();
+
+        // (2)now parse the .nr file which includes "b->c" non-roundtrip entries
+        File f = new File(srcDir, clzName + ".nr");
+        if (f.exists()) {
+            StringBuilder sb = new StringBuilder();
+            in = new FileInputStream(f);
+            p = new Parser(in, mPattern);
+            e = null;
+            while ((e = p.next()) != null) {
+                // A <b,c> pair
+                sb.append((char)e.bs);
+                sb.append((char)e.cp);
+            }
+            char[] nr = sb.toString().toCharArray();
+            out = new Output(new Formatter(b2cNRSB));
+            out.format("String b2cNR =%n");
+            out.format(nr, 0, nr.length,  ";");
+            out.close();
+        } else {
+            b2cNRSB.append("String b2cNR = null;");
+        }
+
+        // (3)finally the .c2b file which includes c->b non-roundtrip entries
+        f = new File(srcDir, clzName + ".c2b");
+        if (f.exists()) {
+            StringBuilder sb = new StringBuilder();
+            in = new FileInputStream(f);
+            p = new Parser(in, mPattern);
+            e = null;
+            while ((e = p.next()) != null) {
+                // A <b,c> pair
+                if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
+                    c2bOff += 0x100;
+                    c2bIndex[e.cp>>8] = 1;
+                }
+                sb.append((char)e.bs);
+                sb.append((char)e.cp);
+            }
+            char[] nr = sb.toString().toCharArray();
+            out = new Output(new Formatter(c2bNRSB));
+            out.format("String c2bNR =%n");
+            out.format(nr, 0, nr.length,  ";");
+            out.close();
+        } else {
+            c2bNRSB.append("String c2bNR = null;");
+        }
+
+        // (4)it's time to generate the source file
+        String b2c = b2cSB.toString();
+        String b2cNR = b2cNRSB.toString();
+        String c2bNR = c2bNRSB.toString();
+
+        Scanner s = new Scanner(new File(srcDir, template));
+        PrintStream ops = new PrintStream(new FileOutputStream(
+                             new File(dstDir, clzName + ".java")));
+        if (hisName == null)
+            hisName = "";
+
+        while (s.hasNextLine()) {
+            String line = s.nextLine();
+            if (line.indexOf("$") == -1) {
+                ops.println(line);
+                continue;
+            }
+            line = line.replace("$PACKAGE$" , pkgName)
+                       .replace("$IMPLEMENTS$", (hisName == null)?
+                                "" : "implements HistoricallyNamedCharset")
+                       .replace("$NAME_CLZ$", clzName)
+                       .replace("$NAME_ALIASES$",
+                                "sun.nio.cs".equals(pkgName) ?
+                                "StandardCharsets.aliases_" + clzName :
+                                "ExtendedCharsets.aliasesFor(\"" + csName + "\")")
+                       .replace("$NAME_CS$" , csName)
+                       .replace("$CONTAINS$",
+                                "MS932".equals(clzName)?
+                                "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof JIS_X_0201) || (cs instanceof " + clzName + "));":
+                                (isASCII ?
+                                 "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));":
+                                 "return (cs instanceof " + clzName + ");"))
+                       .replace("$HISTORICALNAME$",
+                                (hisName == null)? "" :
+                                "    public String historicalName() { return \"" + hisName + "\"; }")
+                       .replace("$DECTYPE$", type)
+                       .replace("$ENCTYPE$", type)
+                       .replace("$B1MIN$"   , "0x" + Integer.toString(b1Min, 16))
+                       .replace("$B1MAX$"   , "0x" + Integer.toString(b1Max, 16))
+                       .replace("$B2MIN$"   , "0x" + Integer.toString(b2Min, 16))
+                       .replace("$B2MAX$"   , "0x" + Integer.toString(b2Max, 16))
+                       .replace("$B2C$", b2c)
+                       .replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16))
+                       .replace("$NONROUNDTRIP_B2C$", b2cNR)
+                       .replace("$NONROUNDTRIP_C2B$", c2bNR);
+
+            ops.println(line);
+        }
+        ops.close();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Scanner;
+import java.util.Formatter;
+import java.util.regex.*;
+import java.nio.charset.*;
+import static build.tools.charsetmapping.Utils.*;
+
+public class EUC_TW {
+
+    static char[] toCharArray(int[] db,
+                              int b1Min, int b1Max,
+                              int b2Min, int b2Max)
+    {
+        char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)];
+        int off = 0;
+        for (int b1 = b1Min; b1 <= b1Max; b1++) {
+            for (int b2 = b2Min; b2 <= b2Max; b2++) {
+                ca[off++] = (char)(db[b1 * 256 + b2] & 0xffff);
+            }
+        }
+        return ca;
+    }
+
+    static char[] toCharArray(byte[] ba,
+                              int b1Min, int b1Max,
+                              int b2Min, int b2Max)
+    {
+        char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)];
+        int off = 0;
+        for (int b1 = b1Min; b1 <= b1Max; b1++) {
+            int b2 = b2Min;
+            while (b2 <= b2Max) {
+                ca[off++] = (char)(((ba[b1 * 256 + b2++] & 0xff) << 8) |
+                                   (ba[b1 * 256 + b2++] & 0xff));
+            }
+        }
+        return ca;
+    }
+
+    private static int initC2BIndex(char[] index) {
+        int off = 0;
+        for (int i = 0; i < index.length; i++) {
+            if (index[i] != 0) {
+                index[i] = (char)off;
+                off += 0x100;
+            } else {
+                index[i] = UNMAPPABLE_ENCODING;
+            }
+        }
+        return off;
+    }
+
+    private static Pattern euctw = Pattern.compile("(?:8ea)?(\\p{XDigit}++)\\s++(\\p{XDigit}++)?\\s*+.*");
+
+    static void genClass(String args[]) throws Exception
+    {
+        InputStream is = new FileInputStream(new File(args[0], "euc_tw.map"));
+        PrintStream ps = new PrintStream(new File(args[1], "EUC_TWMapping.java"),
+                                         "ISO-8859-1");
+        String copyright = getCopyright(new File(args[3]));
+
+
+        // ranges of byte1 and byte2, something should come from a "config" file
+        int b1Min = 0xa1;
+        int b1Max = 0xfe;
+        int b2Min = 0xa1;
+        int b2Max = 0xfe;
+
+        try {
+            int[][] db = new int[8][0x10000];        // doublebyte
+            byte[]  suppFlag = new byte[0x10000];    // doublebyte
+            char[]  indexC2B = new char[256];
+            char[]  indexC2BSupp = new char[256];
+
+            for (int i = 0; i < 8; i++)
+                for (int j = 0; j < 0x10000; j++)
+                    db[i][j] = UNMAPPABLE_DECODING;
+
+            Parser p = new Parser(is, euctw);
+            Entry  e = null;
+            while ((e = p.next()) != null) {
+                int plane = 0;
+                if (e.bs >= 0x10000) {
+                    plane = ((e.bs >> 16) & 0xff) - 1;
+                    if (plane >= 14)
+                        plane = 7;
+                    e.bs = e.bs & 0xffff;
+                }
+                db[plane][e.bs] = e.cp;
+                if (e.cp < 0x10000) {
+                    indexC2B[e.cp>>8] = 1;
+                } else {
+                    indexC2BSupp[(e.cp&0xffff)>>8] = 1;
+                    suppFlag[e.bs] |= (1 << plane);
+                }
+            }
+
+            StringBuilder sb = new StringBuilder();
+            Output out = new Output(new Formatter(sb));
+
+            out.format(copyright);
+            out.format("%n// -- This file was mechanically generated: Do not edit! -- //%n");
+            out.format("package sun.nio.cs.ext;%n%n");
+            out.format("class EUC_TWMapping {%n%n");
+
+            // boundaries
+            out.format("    final static int b1Min = 0x%x;%n", b1Min);
+            out.format("    final static int b1Max = 0x%x;%n", b1Max);
+            out.format("    final static int b2Min = 0x%x;%n", b2Min);
+            out.format("    final static int b2Max = 0x%x;%n", b2Max);
+
+            // b2c tables
+            out.format("%n    final static String[] b2c = {%n");
+            for (int plane = 0; plane < 8; plane++) {
+                out.format("        // Plane %d%n", plane);
+                out.format(toCharArray(db[plane], b1Min, b1Max, b2Min, b2Max),
+                           ",");
+                out.format("%n");
+            }
+            out.format("    };%n");
+
+            // c2bIndex
+            out.format("%n    static final int C2BSIZE = 0x%x;%n",
+                       initC2BIndex(indexC2B));
+            out.format("%n    static char[] c2bIndex = new char[] {%n");
+            out.format(indexC2B);
+            out.format("    };%n");
+
+            // c2bIndexSupp
+            out.format("%n    static final int C2BSUPPSIZE = 0x%x;%n",
+                       initC2BIndex(indexC2BSupp));
+            out.format("%n    static char[] c2bSuppIndex = new char[] {%n");
+            out.format(indexC2BSupp);
+            out.format("    };%n");
+
+            // suppFlags
+            out.format("%n    static String b2cIsSuppStr =%n");
+            out.format(toCharArray(suppFlag, b1Min, b1Max, b2Min, b2Max),
+                       ";");
+            out.format("}");
+            out.close();
+
+            ps.println(sb.toString());
+            ps.close();
+        } catch (Exception x) {
+            x.printStackTrace();
+        }
+    }
+}
--- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateDBCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,287 +0,0 @@
-/*
- * Copyright 2009 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.charsetmapping;
-import java.io.*;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Scanner;
-import java.util.Formatter;
-import java.util.regex.*;
-import java.nio.charset.*;
-import static build.tools.charsetmapping.CharsetMapping.*;
-
-public class GenerateDBCS {
-    // pattern used by this class to read in mapping table
-    static Pattern mPattern = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)(?:\\s++#.*)?");
-    public static void genDBCS(String args[]) throws Exception {
-
-        Scanner s = new Scanner(new File(args[0], args[2]));
-        while (s.hasNextLine()) {
-            String line = s.nextLine();
-            if (line.startsWith("#") || line.length() == 0)
-                continue;
-            String[] fields = line.split("\\s+");
-            if (fields.length < 10) {
-                System.err.println("Misconfiged sbcs line <" + line + ">?");
-                continue;
-            }
-            String clzName = fields[0];
-            String csName  = fields[1];
-            String hisName = ("null".equals(fields[2]))?null:fields[2];
-            String type = fields[3].toUpperCase();
-            if ("BASIC".equals(type))
-                type = "";
-            else
-                type = "_" + type;
-            String pkgName  = fields[4];
-            boolean isASCII = Boolean.valueOf(fields[5]);
-            int    b1Min = toInteger(fields[6]);
-            int    b1Max = toInteger(fields[7]);
-            int    b2Min    = toInteger(fields[8]);
-            int    b2Max    = toInteger(fields[9]);
-            System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName);
-            genClass(args[0], args[1], "DoubleByte-X.java.template",
-                    clzName, csName, hisName, pkgName,
-                    isASCII, type,
-                    b1Min, b1Max, b2Min, b2Max);
-        }
-    }
-
-    private static int toInteger(String s) {
-        if (s.startsWith("0x") || s.startsWith("0X"))
-            return Integer.valueOf(s.substring(2), 16);
-        else
-            return Integer.valueOf(s);
-    }
-
-    private static void outString(Formatter out,
-                                  char[] cc, int off, int end,
-                                  String closure)
-    {
-        while (off < end) {
-            out.format("        \"");
-            for (int j = 0; j < 8; j++) {
-                if (off == end)
-                    break;
-                char c = cc[off++];
-                switch (c) {
-                case '\b':
-                    out.format("\\b"); break;
-                case '\t':
-                    out.format("\\t"); break;
-                case '\n':
-                    out.format("\\n"); break;
-                case '\f':
-                    out.format("\\f"); break;
-                case '\r':
-                    out.format("\\r"); break;
-                case '\"':
-                    out.format("\\\""); break;
-                case '\'':
-                    out.format("\\'"); break;
-                case '\\':
-                    out.format("\\\\"); break;
-                default:
-                    out.format("\\u%04X", c & 0xffff);
-                }
-            }
-            if (off == end)
-                out.format("\" %s%n", closure);
-            else
-                out.format("\" + %n");
-        }
-    }
-
-    private static void outString(Formatter out,
-                                  char[] db,
-                                  int b1,
-                                  int b2Min, int b2Max,
-                                  String closure)
-    {
-        char[] cc = new char[b2Max - b2Min + 1];
-        int off = 0;
-        for (int b2 = b2Min; b2 <= b2Max; b2++) {
-            cc[off++] = db[(b1 << 8) | b2];
-        }
-        outString(out, cc, 0, cc.length, closure);
-    }
-
-    private static void genClass(String srcDir, String dstDir, String template,
-                                 String clzName,
-                                 String csName,
-                                 String hisName,
-                                 String pkgName,
-                                 boolean isASCII,
-                                 String type,
-                                 int b1Min, int b1Max,
-                                 int b2Min, int b2Max)
-        throws Exception
-    {
-
-        StringBuilder b2cSB = new StringBuilder();
-        StringBuilder b2cNRSB = new StringBuilder();
-        StringBuilder c2bNRSB = new StringBuilder();
-
-        char[] db = new char[0x10000];
-        char[] c2bIndex = new char[0x100];
-        int c2bOff = 0x100;    // first 0x100 for unmappable segs
-
-        Arrays.fill(db, UNMAPPABLE_DECODING);
-        Arrays.fill(c2bIndex, UNMAPPABLE_DECODING);
-
-        char[] b2cIndex = new char[0x100];
-        Arrays.fill(b2cIndex, UNMAPPABLE_DECODING);
-
-        // (1)read in .map to parse all b->c entries
-        FileInputStream in = new FileInputStream(new File(srcDir, clzName + ".map"));
-        Parser p = new Parser(in, mPattern);
-        Entry  e = null;
-        while ((e = p.next()) != null) {
-            db[e.bs] = (char)e.cp;
-
-            if (e.bs > 0x100 &&    // db
-                b2cIndex[e.bs>>8] == UNMAPPABLE_DECODING) {
-                b2cIndex[e.bs>>8] = 1;
-            }
-
-            if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
-                c2bOff += 0x100;
-                c2bIndex[e.cp>>8] = 1;
-            }
-        }
-        Formatter fm = new Formatter(b2cSB);
-        fm.format("%n    static final String b2cSBStr =%n");
-        outString(fm, db, 0x00, 0x100,  ";");
-
-        fm.format("%n        static final String[] b2cStr = {%n");
-        for (int i = 0; i < 0x100; i++) {
-            if (b2cIndex[i] == UNMAPPABLE_DECODING) {
-                fm.format("            null,%n");  //unmappable segments
-            } else {
-                outString(fm, db, i, b2Min, b2Max, ",");
-            }
-        }
-
-        fm.format("        };%n");
-        fm.close();
-
-        // (2)now parse the .nr file which includes "b->c" non-roundtrip entries
-        File f = new File(srcDir, clzName + ".nr");
-        if (f.exists()) {
-            StringBuilder sb = new StringBuilder();
-            in = new FileInputStream(f);
-            p = new Parser(in, mPattern);
-            e = null;
-            while ((e = p.next()) != null) {
-                // A <b,c> pair
-                sb.append((char)e.bs);
-                sb.append((char)e.cp);
-            }
-            char[] nr = sb.toString().toCharArray();
-            fm = new Formatter(b2cNRSB);
-            fm.format("String b2cNR =%n");
-            outString(fm, nr, 0, nr.length,  ";");
-            fm.close();
-        } else {
-            b2cNRSB.append("String b2cNR = null;");
-        }
-
-        // (3)finally the .c2b file which includes c->b non-roundtrip entries
-        f = new File(srcDir, clzName + ".c2b");
-        if (f.exists()) {
-            StringBuilder sb = new StringBuilder();
-            in = new FileInputStream(f);
-            p = new Parser(in, mPattern);
-            e = null;
-            while ((e = p.next()) != null) {
-                // A <b,c> pair
-                if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
-                    c2bOff += 0x100;
-                    c2bIndex[e.cp>>8] = 1;
-                }
-                sb.append((char)e.bs);
-                sb.append((char)e.cp);
-            }
-            char[] nr = sb.toString().toCharArray();
-            fm = new Formatter(c2bNRSB);
-            fm.format("String c2bNR =%n");
-            outString(fm, nr, 0, nr.length,  ";");
-            fm.close();
-        } else {
-            c2bNRSB.append("String c2bNR = null;");
-        }
-
-        // (4)it's time to generate the source file
-        String b2c = b2cSB.toString();
-        String b2cNR = b2cNRSB.toString();
-        String c2bNR = c2bNRSB.toString();
-
-        Scanner s = new Scanner(new File(srcDir, template));
-        PrintStream out = new PrintStream(new FileOutputStream(
-                              new File(dstDir, clzName + ".java")));
-        if (hisName == null)
-            hisName = "";
-
-        while (s.hasNextLine()) {
-            String line = s.nextLine();
-            if (line.indexOf("$") == -1) {
-                out.println(line);
-                continue;
-            }
-            line = line.replace("$PACKAGE$" , pkgName)
-                       .replace("$IMPLEMENTS$", (hisName == null)?
-                                "" : "implements HistoricallyNamedCharset")
-                       .replace("$NAME_CLZ$", clzName)
-                       .replace("$NAME_ALIASES$",
-                                "sun.nio.cs".equals(pkgName) ?
-                                "StandardCharsets.aliases_" + clzName :
-                                "ExtendedCharsets.aliasesFor(\"" + csName + "\")")
-                       .replace("$NAME_CS$" , csName)
-                       .replace("$CONTAINS$",
-                                "MS932".equals(clzName)?
-                                "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof JIS_X_0201) || (cs instanceof " + clzName + "));":
-                                (isASCII ?
-                                 "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));":
-                                 "return (cs instanceof " + clzName + ");"))
-                       .replace("$HISTORICALNAME$",
-                                (hisName == null)? "" :
-                                "    public String historicalName() { return \"" + hisName + "\"; }")
-                       .replace("$DECTYPE$", type)
-                       .replace("$ENCTYPE$", type)
-                       .replace("$B1MIN$"   , "0x" + Integer.toString(b1Min, 16))
-                       .replace("$B1MAX$"   , "0x" + Integer.toString(b1Max, 16))
-                       .replace("$B2MIN$"   , "0x" + Integer.toString(b2Min, 16))
-                       .replace("$B2MAX$"   , "0x" + Integer.toString(b2Max, 16))
-                       .replace("$B2C$", b2c)
-                       .replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16))
-                       .replace("$NONROUNDTRIP_B2C$", b2cNR)
-                       .replace("$NONROUNDTRIP_C2B$", c2bNR);
-
-            out.println(line);
-        }
-        out.close();
-    }
-}
--- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateEUC_TW.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-/*
- * Copyright 2009 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.charsetmapping;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.Scanner;
-import java.util.Formatter;
-import java.util.regex.*;
-import java.nio.charset.*;
-import static build.tools.charsetmapping.CharsetMapping.*;
-
-public class GenerateEUC_TW {
-
-    public static void genEUC_TW(String args[]) throws Exception {
-        genClass(new FileInputStream(new File(args[0], "euc_tw.map")),
-                 new PrintStream(new File(args[1], "EUC_TWMapping.java"), "ISO-8859-1"),
-                 getCopyright(new File(args[3])));
-    }
-
-    private static String getCopyright(File f) throws IOException {
-        Scanner s = new Scanner(f, "ISO-8859-1");
-        StringBuilder sb = new StringBuilder();
-        while (s.hasNextLine()) {
-            String ln = s.nextLine();
-            sb.append(ln + "\n");
-            // assume we have the copyright as the first comment
-            if (ln.matches("^\\s\\*\\/$"))
-                break;
-        }
-        s.close();
-        return sb.toString();
-    }
-
-    private static char[] toCharArray(int[] db,
-                                      int b1Min, int b1Max,
-                                      int b2Min, int b2Max)
-    {
-        char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)];
-        int off = 0;
-        for (int b1 = b1Min; b1 <= b1Max; b1++) {
-            for (int b2 = b2Min; b2 <= b2Max; b2++) {
-                ca[off++] = (char)(db[b1 * 256 + b2] & 0xffff);
-            }
-        }
-        return ca;
-    }
-
-    private static void toChar(Formatter out, String fmt, char c) {
-        switch (c) {
-        case '\b':
-            out.format("\\b"); break;
-        case '\t':
-            out.format("\\t"); break;
-        case '\n':
-            out.format("\\n"); break;
-        case '\f':
-            out.format("\\f"); break;
-        case '\r':
-            out.format("\\r"); break;
-        case '\"':
-            out.format("\\\""); break;
-        case '\'':
-            out.format("\\'"); break;
-        case '\\':
-            out.format("\\\\"); break;
-        default:
-            out.format(fmt, c & 0xffff);
-        }
-    }
-
-    private static void toString(Formatter out, char[] date, String endStr)
-    {
-        int off = 0;
-        int end = date.length;
-        while (off < end) {
-            out.format("        \"");
-            for (int j = 0; j < 8 && off < end; j++) {
-                toChar(out, "\\u%04X", date[off++]);
-            }
-            if (off == end)
-               out.format("\"%s%n", endStr);
-            else
-               out.format("\" +%n");
-        }
-    }
-
-    private static char[] toCharArray(byte[] ba,
-                                      int b1Min, int b1Max,
-                                      int b2Min, int b2Max)
-    {
-        char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)];
-        int off = 0;
-        for (int b1 = b1Min; b1 <= b1Max; b1++) {
-            int b2 = b2Min;
-            while (b2 <= b2Max) {
-                ca[off++] = (char)(((ba[b1 * 256 + b2++] & 0xff) << 8) |
-                                   (ba[b1 * 256 + b2++] & 0xff));
-            }
-        }
-        return ca;
-    }
-
-    private static void toCharArray(Formatter out, char[] date) {
-        int off = 0;
-        int end = date.length;
-        while (off < end) {
-            out.format("        ");
-            for (int j = 0; j < 8 && off < end; j++) {
-                toChar(out, "'\\u%04X',", date[off++]);
-            }
-            out.format("%n");
-        }
-    }
-
-    private static int initC2BIndex(char[] index) {
-        int off = 0;
-        for (int i = 0; i < index.length; i++) {
-            if (index[i] != 0) {
-                index[i] = (char)off;
-                off += 0x100;
-            } else {
-                index[i] = CharsetMapping.UNMAPPABLE_ENCODING;
-            }
-        }
-        return off;
-    }
-
-    private static Pattern euctw = Pattern.compile("(?:8ea)?(\\p{XDigit}++)\\s++(\\p{XDigit}++)?\\s*+.*");
-
-    private static void genClass(InputStream is, PrintStream ps, String copyright)
-        throws Exception
-    {
-        // ranges of byte1 and byte2, something should come from a "config" file
-        int b1Min = 0xa1;
-        int b1Max = 0xfe;
-        int b2Min = 0xa1;
-        int b2Max = 0xfe;
-
-        try {
-            int[][] db = new int[8][0x10000];        // doublebyte
-            byte[]  suppFlag = new byte[0x10000];    // doublebyte
-            char[]  indexC2B = new char[256];
-            char[]  indexC2BSupp = new char[256];
-
-            for (int i = 0; i < 8; i++)
-                for (int j = 0; j < 0x10000; j++)
-                    db[i][j] = CharsetMapping.UNMAPPABLE_DECODING;
-
-            CharsetMapping.Parser p = new CharsetMapping.Parser(is, euctw);
-            CharsetMapping.Entry  e = null;
-            while ((e = p.next()) != null) {
-                int plane = 0;
-                if (e.bs >= 0x10000) {
-                    plane = ((e.bs >> 16) & 0xff) - 1;
-                    if (plane >= 14)
-                        plane = 7;
-                    e.bs = e.bs & 0xffff;
-                }
-                db[plane][e.bs] = e.cp;
-                if (e.cp < 0x10000) {
-                    indexC2B[e.cp>>8] = 1;
-                } else {
-                    indexC2BSupp[(e.cp&0xffff)>>8] = 1;
-                    suppFlag[e.bs] |= (1 << plane);
-                }
-            }
-
-            StringBuilder out = new StringBuilder();
-            Formatter fm = new Formatter(out);
-
-            fm.format(copyright);
-            fm.format("%n// -- This file was mechanically generated: Do not edit! -- //%n");
-            fm.format("package sun.nio.cs.ext;%n%n");
-            fm.format("class EUC_TWMapping {%n%n");
-
-            // boundaries
-            fm.format("    final static int b1Min = 0x%x;%n", b1Min);
-            fm.format("    final static int b1Max = 0x%x;%n", b1Max);
-            fm.format("    final static int b2Min = 0x%x;%n", b2Min);
-            fm.format("    final static int b2Max = 0x%x;%n", b2Max);
-
-            // b2c tables
-            fm.format("%n    final static String[] b2c = {%n");
-            for (int plane = 0; plane < 8; plane++) {
-                fm.format("        // Plane %d%n", plane);
-                toString(fm, toCharArray(db[plane],
-                                         b1Min, b1Max, b2Min, b2Max),
-                         ",");
-                fm.format("%n");
-            }
-            fm.format("    };%n");
-
-            // c2bIndex
-            fm.format("%n    static final int C2BSIZE = 0x%x;%n",
-                      initC2BIndex(indexC2B));
-            fm.format("%n    static char[] c2bIndex = new char[] {%n");
-            toCharArray(fm, indexC2B);
-            fm.format("    };%n");
-
-            // c2bIndexSupp
-            fm.format("%n    static final int C2BSUPPSIZE = 0x%x;%n",
-                      initC2BIndex(indexC2BSupp));
-            fm.format("%n    static char[] c2bSuppIndex = new char[] {%n");
-            toCharArray(fm, indexC2BSupp);
-            fm.format("    };%n");
-
-            // suppFlags
-            fm.format("%n    static String b2cIsSuppStr =%n");
-            toString(fm, toCharArray(suppFlag,
-                                     b1Min, b1Max, b2Min, b2Max),
-                     ";");
-
-            fm.format("}");
-            fm.close();
-
-            ps.println(out.toString());
-            ps.close();
-        } catch (Exception x) {
-            x.printStackTrace();
-        }
-    }
-}
--- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateMapping.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.charsetmapping;
-
-import java.io.*;
-import java.util.regex.*;
-import static build.tools.charsetmapping.CharsetMapping.*;
-
-public class GenerateMapping {
-
-    public static void genMapping(String argv[]) throws IOException {
-        genDataJIS0213(new FileInputStream(argv[0]),
-                       new FileOutputStream(argv[1]));
-    }
-
-    // regex pattern to parse the "jis0213.map" file
-    static Pattern sjis0213 = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(?:\\+(\\p{XDigit}++))?\\s++#.*");
-    private static void genDataJIS0213(InputStream in, OutputStream out)
-    {
-        int[] sb = new int[0x100];                         // singlebyte
-        int[] db = new int[0x10000];                       // doublebyte
-        int[] indexC2B = new int[256];
-        Entry[] supp = new Entry[0x10000];
-        Entry[] comp = new Entry[0x100];
-        int suppTotal = 0;
-        int compTotal = 0;
-
-        int b1Min1 = 0x81;
-        int b1Max1 = 0x9f;
-        int b1Min2 = 0xe0;
-        int b1Max2 = 0xfc;
-        int b2Min = 0x40;
-        int b2Max = 0xfe;
-
-        //init
-        for (int i = 0; i < 0x80; i++) sb[i] = i;
-        for (int i = 0x80; i < 0x100; i++) sb[i] = UNMAPPABLE_DECODING;
-        for (int i = 0; i < 0x10000; i++) db[i] = UNMAPPABLE_DECODING;
-        try {
-            Parser p = new Parser(in, sjis0213);
-            Entry  e = null;
-            while ((e = p.next()) != null) {
-                if (e.cp2 != 0) {
-                    comp[compTotal++] = e;
-                } else {
-                    if (e.cp <= 0xffff) {
-                        if (e.bs <= 0xff)
-                            sb[e.bs] = e.cp;
-                        else
-                            db[e.bs] = e.cp;
-                        indexC2B[e.cp>>8] = 1;
-                    } else {
-                        supp[suppTotal++] = e;
-                    }
-                }
-            }
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            // c2b Index Table, always the first one
-            writeINDEXC2B(baos, indexC2B);
-            writeSINGLEBYTE(baos, sb);
-            writeDOUBLEBYTE1(baos, db, b1Min1, b1Max1, b2Min, b2Max);
-            writeDOUBLEBYTE2(baos, db, b1Min2, b1Max2, b2Min, b2Max);
-            writeSUPPLEMENT(baos, supp, suppTotal);
-            writeCOMPOSITE(baos, comp, compTotal);
-            writeSIZE(out, baos.size());
-            baos.writeTo(out);
-            out.close();
-        } catch (Exception x) {
-            x.printStackTrace();
-        }
-    }
-}
--- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,269 +0,0 @@
-/*
- * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.charsetmapping;
-
-import java.io.*;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Scanner;
-import java.util.Formatter;
-import java.util.regex.*;
-import java.nio.charset.*;
-import static build.tools.charsetmapping.CharsetMapping.*;
-
-public class GenerateSBCS {
-
-    public static void genSBCS(String args[]) throws Exception {
-
-        Scanner s = new Scanner(new File(args[0], args[2]));
-        while (s.hasNextLine()) {
-            String line = s.nextLine();
-            if (line.startsWith("#") || line.length() == 0)
-                continue;
-            String[] fields = line.split("\\s+");
-            if (fields.length < 5) {
-                System.err.println("Misconfiged sbcs line <" + line + ">?");
-                continue;
-            }
-            String clzName = fields[0];
-            String csName  = fields[1];
-            String hisName = fields[2];
-            boolean isASCII = Boolean.valueOf(fields[3]);
-            String pkgName  = fields[4];
-            System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName);
-
-            genClass(args[0], args[1], "SingleByte-X.java.template",
-                     clzName, csName, hisName, pkgName, isASCII);
-        }
-    }
-
-    private static void toString(char[] sb, int off, int end,
-                                 Formatter out, String closure,
-                                 boolean comment) {
-        while (off < end) {
-            out.format("        \"");
-            for (int j = 0; j < 8; j++) {
-                if (off == end)
-                    break;
-                char c = sb[off++];
-                switch (c) {
-                case '\b':
-                    out.format("\\b"); break;
-                case '\t':
-                    out.format("\\t"); break;
-                case '\n':
-                    out.format("\\n"); break;
-                case '\f':
-                    out.format("\\f"); break;
-                case '\r':
-                    out.format("\\r"); break;
-                case '\"':
-                    out.format("\\\""); break;
-                case '\'':
-                    out.format("\\'"); break;
-                case '\\':
-                    out.format("\\\\"); break;
-                default:
-                    out.format("\\u%04X", c & 0xffff);
-                }
-            }
-            if (comment) {
-                if (off == end)
-                    out.format("\" %s      // 0x%02x - 0x%02x%n",
-                               closure, off-8, off-1);
-                else
-                    out.format("\" +      // 0x%02x - 0x%02x%n",
-                               off-8, off-1);
-            } else {
-                if (off == end)
-                    out.format("\"%s%n", closure);
-                else
-                    out.format("\" +%n");
-            }
-        }
-    }
-
-    static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?");
-
-    private static void genClass(String srcDir, String dstDir,
-                                 String template,
-                                 String clzName,
-                                 String csName,
-                                 String hisName,
-                                 String pkgName,
-                                 boolean isASCII)
-        throws Exception
-    {
-        StringBuilder b2cSB = new StringBuilder();
-        StringBuilder b2cNRSB = new StringBuilder();
-        StringBuilder c2bNRSB = new StringBuilder();
-
-        char[] sb = new char[0x100];
-        char[] c2bIndex = new char[0x100];
-        int    c2bOff = 0;
-        Arrays.fill(sb, UNMAPPABLE_DECODING);
-        Arrays.fill(c2bIndex, UNMAPPABLE_DECODING);
-
-        // (1)read in .map to parse all b->c entries
-        FileInputStream in = new FileInputStream(
-                                 new File(srcDir, clzName + ".map"));
-        Parser p = new Parser(in, sbmap);
-        Entry  e = null;
-
-        while ((e = p.next()) != null) {
-            sb[e.bs] = (char)e.cp;
-            if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
-                c2bOff += 0x100;
-                c2bIndex[e.cp>>8] = 1;
-            }
-        }
-
-        Formatter fm = new Formatter(b2cSB);
-        fm.format("%n");
-
-        // vm -server shows cc[byte + 128] access is much faster than
-        // cc[byte&0xff] so we output the upper segment first
-        toString(sb, 0x80, 0x100, fm, "+", true);
-        toString(sb, 0x00, 0x80,  fm, ";", true);
-        fm.close();
-
-        // (2)now the .nr file which includes "b->c" non-roundtrip entries
-        File f = new File(srcDir, clzName + ".nr");
-        if (f.exists()) {
-            in = new FileInputStream(f);
-            fm = new Formatter(b2cNRSB);
-            p = new Parser(in, sbmap);
-            e = null;
-
-            fm.format("// remove non-roundtrip entries%n");
-            fm.format("        b2cMap = b2cTable.toCharArray();%n");
-            while ((e = p.next()) != null) {
-                fm.format("        b2cMap[%d] = UNMAPPABLE_DECODING;%n",
-                          (e.bs>=0x80)?(e.bs-0x80):(e.bs+0x80));
-            }
-            fm.close();
-        }
-
-        // (3)finally the .c2b file which includes c->b non-roundtrip entries
-        f = new File(srcDir, clzName + ".c2b");
-        if (f.exists()) {
-            in = new FileInputStream(f);
-            fm = new Formatter(c2bNRSB);
-            p = new Parser(in, sbmap);
-            e = null;
-            ArrayList<Entry> es = new ArrayList<Entry>();
-            while ((e = p.next()) != null) {
-                if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
-                    c2bOff += 0x100;
-                    c2bIndex[e.cp>>8] = 1;
-                }
-                es.add(e);
-            }
-            fm.format("// non-roundtrip c2b only entries%n");
-            if (es.size() < 100) {
-                fm.format("        c2bNR = new char[%d];%n", es.size() * 2);
-                int i = 0;
-                for (Entry entry: es) {
-                    fm.format("        c2bNR[%d] = 0x%x; c2bNR[%d] = 0x%x;%n",
-                              i++, entry.bs, i++, entry.cp);
-                }
-            } else {
-                char[] cc = new char[es.size() * 2];
-                int i = 0;
-                for (Entry entry: es) {
-                    cc[i++] = (char)entry.bs;
-                    cc[i++] = (char)entry.cp;
-                }
-                fm.format("        c2bNR = (%n");
-                toString(cc, 0, i,  fm, ").toCharArray();", false);
-            }
-            fm.close();
-        }
-
-        // (4)it's time to generate the source file
-        String b2c = b2cSB.toString();
-        String b2cNR = b2cNRSB.toString();
-        String c2bNR = c2bNRSB.toString();
-
-        Scanner s = new Scanner(new File(srcDir, template));
-        PrintStream out = new PrintStream(new FileOutputStream(
-                              new File(dstDir, clzName + ".java")));
-
-        while (s.hasNextLine()) {
-            String line = s.nextLine();
-            int i = line.indexOf("$");
-            if (i == -1) {
-                out.println(line);
-                continue;
-            }
-            if (line.indexOf("$PACKAGE$", i) != -1) {
-                line = line.replace("$PACKAGE$", pkgName);
-            }
-            if (line.indexOf("$NAME_CLZ$", i) != -1) {
-                line = line.replace("$NAME_CLZ$", clzName);
-            }
-            if (line.indexOf("$NAME_CS$", i) != -1) {
-                line = line.replace("$NAME_CS$", csName);
-            }
-            if (line.indexOf("$NAME_ALIASES$", i) != -1) {
-                if ("sun.nio.cs".equals(pkgName))
-                    line = line.replace("$NAME_ALIASES$",
-                                        "StandardCharsets.aliases_" + clzName);
-                else
-                    line = line.replace("$NAME_ALIASES$",
-                                        "ExtendedCharsets.aliasesFor(\"" + csName + "\")");
-            }
-            if (line.indexOf("$NAME_HIS$", i) != -1) {
-                line = line.replace("$NAME_HIS$", hisName);
-            }
-            if (line.indexOf("$CONTAINS$", i) != -1) {
-                if (isASCII)
-                    line = "        return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));";
-                else
-                    line = "        return (cs instanceof " + clzName + ");";
-            }
-            if (line.indexOf("$B2CTABLE$") != -1) {
-                line = line.replace("$B2CTABLE$", b2c);
-            }
-            if (line.indexOf("$C2BLENGTH$") != -1) {
-                line = line.replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16));
-            }
-            if (line.indexOf("$NONROUNDTRIP_B2C$") != -1) {
-                if (b2cNR.length() == 0)
-                    continue;
-                line = line.replace("$NONROUNDTRIP_B2C$", b2cNR);
-            }
-
-            if (line.indexOf("$NONROUNDTRIP_C2B$") != -1) {
-                if (c2bNR.length() == 0)
-                    continue;
-                line = line.replace("$NONROUNDTRIP_C2B$", c2bNR);
-            }
-            out.println(line);
-        }
-        out.close();
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Scanner;
+import java.util.Formatter;
+import java.util.regex.*;
+import java.nio.charset.*;
+import static build.tools.charsetmapping.Utils.*;
+
+public class HKSCS {
+
+    // HKSCS2001.map has the third column for "UnicodeAlternate", which
+    // is for c->b non-roundtrip mapping.
+    // For HKSCS2008, those non-roundtrip mappings are in .nr file
+    private static Pattern hkscs =
+        Pattern.compile("(?:0x)?+(\\p{XDigit}++)\\s++(?:0x|U\\+)?+(\\p{XDigit}++)?\\s*+(?:0x|U\\+)?(\\p{XDigit}++)?\\s*+.*");
+
+    static void genClass(String args[]) throws Exception {
+
+        // hkscs2008
+        genClass0(new FileInputStream(new File(args[0], "HKSCS2008.map")),
+                  new FileInputStream(new File(args[0], "HKSCS2008.c2b")),
+                  new PrintStream(new File(args[1], "HKSCSMapping.java"),
+                                  "ISO-8859-1"),
+                  "HKSCSMapping",
+                  getCopyright(new File(args[3])));
+
+
+        // xp2001
+        genClass0(new FileInputStream(new File(args[0], "HKSCS_XP.map")),
+                  null,
+                  new PrintStream(new File(args[1], "HKSCS_XPMapping.java"),
+                                  "ISO-8859-1"),
+                  "HKSCS_XPMapping",
+                  getCopyright(new File(args[3])));
+
+        // hkscs2001
+        genClass0(new FileInputStream(new File(args[0], "HKSCS2001.map")),
+                  new FileInputStream(new File(args[0], "HKSCS2001.c2b")),
+                  new PrintStream(new File(args[1], "HKSCS2001Mapping.java"),
+                                  "ISO-8859-1"),
+                  "HKSCS2001Mapping",
+                  getCopyright(new File(args[3])));
+    }
+
+    static void genClass0(InputStream isB2C,
+                          InputStream isC2B,
+                          PrintStream ps,
+                          String clzName,
+                          String copyright)
+        throws Exception
+    {
+        // ranges of byte1 and byte2, something should come from a "config" file
+        int b1Min = 0x87;
+        int b1Max = 0xfe;
+        int b2Min = 0x40;
+        int b2Max = 0xfe;
+
+        try {
+            char[] bmp = new char[0x10000];
+            char[] supp = new char[0x10000];
+
+            boolean[] b2cBmp = new boolean[0x100];
+            boolean[] b2cSupp = new boolean[0x100];
+            // pua should be in range of e000-f8ff. Expand
+            // it to 0xf93b becase the hkscs2001.c2b has
+            // the f920-f93b filled
+            //char[] pua = new char[0xF8FF - 0xE000 + 1];
+            char[] pua = new char[0xF93b - 0xE000 + 1];
+            boolean hasSupp = false;
+            boolean hasPua = false;
+
+            Arrays.fill(bmp, UNMAPPABLE_DECODING);
+            Arrays.fill(supp, UNMAPPABLE_DECODING);
+            Arrays.fill(pua, UNMAPPABLE_DECODING);
+
+            Parser p = new Parser(isB2C, hkscs);
+            Entry  e = null;
+            while ((e = p.next()) != null) {
+                if (e.cp >= 0x10000) {
+                    supp[e.bs] = (char)e.cp;
+                    b2cSupp[e.bs>>8] = true;
+                    hasSupp = true;
+                } else {
+                    bmp[e.bs] = (char)e.cp;
+                    b2cBmp[e.bs>>8] = true;
+                }
+                if (e.cp2 != 0 && e.cp2 >= 0xe000 && e.cp2 <= 0xf8ff) {
+                    hasPua = true;
+                    pua[e.cp2 - 0xE000] = (char)e.bs;
+                }
+            }
+
+            if (isC2B != null) {
+                p = new Parser(isC2B, hkscs);
+                e = null;
+                while ((e = p.next()) != null) {
+                    pua[e.cp - 0xE000] = (char)e.bs;
+                }
+                hasPua = true;
+            }
+
+            StringBuilder sb = new StringBuilder();
+            Output out = new Output(new Formatter(sb));
+
+            out.format(copyright);
+            out.format("%n// -- This file was mechanically generated: Do not edit! -- //%n");
+            out.format("package sun.nio.cs.ext;%n%n");
+            out.format("class %s {%n%n", clzName);
+
+            /* hardcoded in sun.nio.cs.ext.HKSCS.java
+            out.format("    final static int b1Min = 0x%x;%n", b1Min);
+            out.format("    final static int b1Max = 0x%x;%n", b1Max);
+            out.format("    final static int b2Min = 0x%x;%n", b2Min);
+            out.format("    final static int b2Max = 0x%x;%n", b2Max);
+            */
+
+            // bmp tables
+            out.format("%n    static final String[] b2cBmpStr = new String[] {%n");
+            for (int i = 0; i < 0x100; i++) {
+                if (b2cBmp[i])
+                    out.format(bmp, i, b2Min, b2Max, ",");
+                else
+                    out.format("        null,%n");  //unmappable segments
+            }
+            out.format("        };%n");
+
+            // supp tables
+            out.format("%n    static final String[] b2cSuppStr =");
+            if (hasSupp) {
+                out.format(" new String[] {%n");
+                for (int i = 0; i < 0x100; i++) {
+                    if (b2cSupp[i])
+                        out.format(supp, i, b2Min, b2Max, ",");
+                    else
+                        out.format("        null,%n");  //unmappable segments
+                }
+                out.format("        };%n");
+            } else {
+                out.format(" null;%n");
+            }
+
+            // private area tables
+            out.format("%n    final static String pua =");
+            if (hasPua) {
+                out.format("%n");
+                out.format(pua, 0, pua.length, ";");
+            } else {
+                out.format(" null;%n");
+            }
+            out.format("%n");
+            out.format("}");
+
+            out.close();
+
+            ps.println(sb.toString());
+            ps.close();
+
+        } catch (Exception x) {
+            x.printStackTrace();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/src/build/tools/charsetmapping/JIS0213.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.regex.*;
+import java.util.*;
+import static build.tools.charsetmapping.Utils.*;
+
+public class JIS0213 {
+
+    // regex pattern to parse the "jis0213.map" file
+    static Pattern sjis0213 = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(?:\\+(\\p{XDigit}++))?\\s++#.*");
+
+    static void genClass(String argv[]) throws IOException
+    {
+        InputStream in = new FileInputStream(argv[0]) ;
+        OutputStream out = new FileOutputStream(argv[1]);
+
+        int[] sb = new int[0x100];                         // singlebyte
+        int[] db = new int[0x10000];                       // doublebyte
+        int[] indexC2B = new int[256];
+        Entry[] supp = new Entry[0x10000];
+        Entry[] comp = new Entry[0x100];
+        int suppTotal = 0;
+        int compTotal = 0;
+
+        int b1Min1 = 0x81;
+        int b1Max1 = 0x9f;
+        int b1Min2 = 0xe0;
+        int b1Max2 = 0xfc;
+        int b2Min = 0x40;
+        int b2Max = 0xfe;
+
+        //init
+        for (int i = 0; i < 0x80; i++) sb[i] = i;
+        for (int i = 0x80; i < 0x100; i++) sb[i] = UNMAPPABLE_DECODING;
+        for (int i = 0; i < 0x10000; i++) db[i] = UNMAPPABLE_DECODING;
+        try {
+            Parser p = new Parser(in, sjis0213);
+            Entry  e = null;
+            while ((e = p.next()) != null) {
+                if (e.cp2 != 0) {
+                    comp[compTotal++] = e;
+                } else {
+                    if (e.cp <= 0xffff) {
+                        if (e.bs <= 0xff)
+                            sb[e.bs] = e.cp;
+                        else
+                            db[e.bs] = e.cp;
+                        indexC2B[e.cp>>8] = 1;
+                    } else {
+                        supp[suppTotal++] = e;
+                    }
+                }
+            }
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            // c2b Index Table, always the first one
+            writeINDEXC2B(baos, indexC2B);
+            writeSINGLEBYTE(baos, sb);
+            writeDOUBLEBYTE1(baos, db, b1Min1, b1Max1, b2Min, b2Max);
+            writeDOUBLEBYTE2(baos, db, b1Min2, b1Max2, b2Min, b2Max);
+            writeSUPPLEMENT(baos, supp, suppTotal);
+            writeCOMPOSITE(baos, comp, compTotal);
+            writeSIZE(out, baos.size());
+            baos.writeTo(out);
+            out.close();
+        } catch (Exception x) {
+            x.printStackTrace();
+        }
+    }
+
+    static Comparator<Entry> comparatorCP =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.cp - m2.cp;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    // tags of different charset mapping tables
+    private final static int MAP_SINGLEBYTE      = 0x1; // 0..256  : c
+    private final static int MAP_DOUBLEBYTE1     = 0x2; // min..max: c
+    private final static int MAP_DOUBLEBYTE2     = 0x3; // min..max: c [DB2]
+    private final static int MAP_SUPPLEMENT      = 0x5; //           db,c
+    private final static int MAP_SUPPLEMENT_C2B  = 0x6; //           c,db
+    private final static int MAP_COMPOSITE       = 0x7; //           db,base,cc
+    private final static int MAP_INDEXC2B        = 0x8; // index table of c->bb
+
+    private static final void writeShort(OutputStream out, int data)
+        throws IOException
+    {
+        out.write((data >>> 8) & 0xFF);
+        out.write((data      ) & 0xFF);
+    }
+
+    private static final void writeShortArray(OutputStream out,
+                                              int type,
+                                              int[] array,
+                                              int off,
+                                              int size)   // exclusive
+        throws IOException
+    {
+        writeShort(out, type);
+        writeShort(out, size);
+        for (int i = off; i < size; i++) {
+            writeShort(out, array[off+i]);
+        }
+    }
+
+    private static final void writeSIZE(OutputStream out, int data)
+        throws IOException
+    {
+        out.write((data >>> 24) & 0xFF);
+        out.write((data >>> 16) & 0xFF);
+        out.write((data >>>  8) & 0xFF);
+        out.write((data       ) & 0xFF);
+    }
+
+    private static void writeINDEXC2B(OutputStream out, int[] indexC2B)
+        throws IOException
+    {
+        writeShort(out, MAP_INDEXC2B);
+        writeShort(out, indexC2B.length);
+        int off = 0;
+        for (int i = 0; i < indexC2B.length; i++) {
+            if (indexC2B[i] != 0) {
+                writeShort(out, off);
+                off += 256;
+            } else {
+                writeShort(out, -1);
+            }
+        }
+    }
+
+    private static void writeSINGLEBYTE(OutputStream out, int[] sb)
+        throws IOException
+    {
+        writeShortArray(out, MAP_SINGLEBYTE, sb, 0, 256);
+    }
+
+    private static void writeDOUBLEBYTE(OutputStream out,
+                                        int type,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeShort(out, type);
+        writeShort(out, b1Min);
+        writeShort(out, b1Max);
+        writeShort(out, b2Min);
+        writeShort(out, b2Max);
+        writeShort(out, (b1Max - b1Min + 1) * (b2Max - b2Min + 1));
+
+        for (int b1 = b1Min; b1 <= b1Max; b1++) {
+            for (int b2 = b2Min; b2 <= b2Max; b2++) {
+                writeShort(out, db[b1 * 256 + b2]);
+            }
+        }
+    }
+
+    private static void writeDOUBLEBYTE1(OutputStream out,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE1, db, b1Min, b1Max, b2Min, b2Max);
+    }
+
+    private static void writeDOUBLEBYTE2(OutputStream out,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE2, db, b1Min, b1Max, b2Min, b2Max);
+    }
+
+    // the c2b table is output as well
+    private static void writeSUPPLEMENT(OutputStream out, Entry[] supp, int size)
+        throws IOException
+    {
+        writeShort(out, MAP_SUPPLEMENT);
+        writeShort(out, size * 2);
+        // db at first half, cc at the low half
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].bs);
+        }
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].cp);
+        }
+
+        //c2b
+        writeShort(out, MAP_SUPPLEMENT_C2B);
+        writeShort(out, size*2);
+        Arrays.sort(supp, 0, size, comparatorCP);
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].cp);
+        }
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].bs);
+        }
+    }
+
+    private static void writeCOMPOSITE(OutputStream out, Entry[] comp, int size)
+        throws IOException
+    {
+        writeShort(out, MAP_COMPOSITE);
+        writeShort(out, size*3);
+        // comp is sorted already
+        for (int i = 0; i < size; i++) {
+            writeShort(out, (char)comp[i].bs);
+            writeShort(out, (char)comp[i].cp);
+            writeShort(out, (char)comp[i].cp2);
+        }
+    }
+}
--- a/jdk/make/tools/src/build/tools/charsetmapping/Main.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/tools/src/build/tools/charsetmapping/Main.java	Tue Apr 20 01:24:48 2010 -0700
@@ -32,23 +32,19 @@
 
     public static void main(String args[]) throws Exception {
         if (args.length < 3 ) {
-            System.out.println("Usage: java -jar charsetmapping.jar src dst mType...");
+            System.out.println("Usage: java -jar charsetmapping.jar src dst mType [copyrightSrc]");
             System.exit(1);
         }
         if ("sbcs".equals(args[2]) || "extsbcs".equals(args[2])) {
-            GenerateSBCS.genSBCS(args);
+            SBCS.genClass(args);
         } else if ("dbcs".equals(args[2])) {
-            GenerateDBCS.genDBCS(args);
-
+            DBCS.genClass(args);
         } else if ("euctw".equals(args[2])) {
-            if (args.length != 4) {
-                System.out.println("Usage: java -jar charsetmapping.jar srcDir dstDir euctw copyrightSrc");
-                System.exit(1);
-            }
-            GenerateEUC_TW.genEUC_TW(args);
+            EUC_TW.genClass(args);
         } else if ("sjis0213".equals(args[2])) {
-            GenerateMapping.genMapping(args);
+            JIS0213.genClass(args);
+        } else if ("hkscs".equals(args[2])) {
+            HKSCS.genClass(args);
         }
     }
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/src/build/tools/charsetmapping/SBCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,269 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Scanner;
+import java.util.Formatter;
+import java.util.regex.*;
+import java.nio.charset.*;
+import static build.tools.charsetmapping.Utils.*;
+
+public class SBCS {
+
+    public static void genClass(String args[]) throws Exception {
+
+        Scanner s = new Scanner(new File(args[0], args[2]));
+        while (s.hasNextLine()) {
+            String line = s.nextLine();
+            if (line.startsWith("#") || line.length() == 0)
+                continue;
+            String[] fields = line.split("\\s+");
+            if (fields.length < 5) {
+                System.err.println("Misconfiged sbcs line <" + line + ">?");
+                continue;
+            }
+            String clzName = fields[0];
+            String csName  = fields[1];
+            String hisName = fields[2];
+            boolean isASCII = Boolean.valueOf(fields[3]);
+            String pkgName  = fields[4];
+            System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName);
+
+            genClass0(args[0], args[1], "SingleByte-X.java.template",
+                      clzName, csName, hisName, pkgName, isASCII);
+        }
+    }
+
+    private static void toString(char[] sb, int off, int end,
+                                 Formatter out, String closure,
+                                 boolean comment) {
+        while (off < end) {
+            out.format("        \"");
+            for (int j = 0; j < 8; j++) {
+                if (off == end)
+                    break;
+                char c = sb[off++];
+                switch (c) {
+                case '\b':
+                    out.format("\\b"); break;
+                case '\t':
+                    out.format("\\t"); break;
+                case '\n':
+                    out.format("\\n"); break;
+                case '\f':
+                    out.format("\\f"); break;
+                case '\r':
+                    out.format("\\r"); break;
+                case '\"':
+                    out.format("\\\""); break;
+                case '\'':
+                    out.format("\\'"); break;
+                case '\\':
+                    out.format("\\\\"); break;
+                default:
+                    out.format("\\u%04X", c & 0xffff);
+                }
+            }
+            if (comment) {
+                if (off == end)
+                    out.format("\" %s      // 0x%02x - 0x%02x%n",
+                               closure, off-8, off-1);
+                else
+                    out.format("\" +      // 0x%02x - 0x%02x%n",
+                               off-8, off-1);
+            } else {
+                if (off == end)
+                    out.format("\"%s%n", closure);
+                else
+                    out.format("\" +%n");
+            }
+        }
+    }
+
+    static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?");
+
+    private static void genClass0(String srcDir, String dstDir,
+                                  String template,
+                                  String clzName,
+                                  String csName,
+                                  String hisName,
+                                  String pkgName,
+                                  boolean isASCII)
+        throws Exception
+    {
+        StringBuilder b2cSB = new StringBuilder();
+        StringBuilder b2cNRSB = new StringBuilder();
+        StringBuilder c2bNRSB = new StringBuilder();
+
+        char[] sb = new char[0x100];
+        char[] c2bIndex = new char[0x100];
+        int    c2bOff = 0;
+        Arrays.fill(sb, UNMAPPABLE_DECODING);
+        Arrays.fill(c2bIndex, UNMAPPABLE_DECODING);
+
+        // (1)read in .map to parse all b->c entries
+        FileInputStream in = new FileInputStream(
+                                 new File(srcDir, clzName + ".map"));
+        Parser p = new Parser(in, sbmap);
+        Entry  e = null;
+
+        while ((e = p.next()) != null) {
+            sb[e.bs] = (char)e.cp;
+            if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
+                c2bOff += 0x100;
+                c2bIndex[e.cp>>8] = 1;
+            }
+        }
+
+        Formatter fm = new Formatter(b2cSB);
+        fm.format("%n");
+
+        // vm -server shows cc[byte + 128] access is much faster than
+        // cc[byte&0xff] so we output the upper segment first
+        toString(sb, 0x80, 0x100, fm, "+", true);
+        toString(sb, 0x00, 0x80,  fm, ";", true);
+        fm.close();
+
+        // (2)now the .nr file which includes "b->c" non-roundtrip entries
+        File f = new File(srcDir, clzName + ".nr");
+        if (f.exists()) {
+            in = new FileInputStream(f);
+            fm = new Formatter(b2cNRSB);
+            p = new Parser(in, sbmap);
+            e = null;
+
+            fm.format("// remove non-roundtrip entries%n");
+            fm.format("        b2cMap = b2cTable.toCharArray();%n");
+            while ((e = p.next()) != null) {
+                fm.format("        b2cMap[%d] = UNMAPPABLE_DECODING;%n",
+                          (e.bs>=0x80)?(e.bs-0x80):(e.bs+0x80));
+            }
+            fm.close();
+        }
+
+        // (3)finally the .c2b file which includes c->b non-roundtrip entries
+        f = new File(srcDir, clzName + ".c2b");
+        if (f.exists()) {
+            in = new FileInputStream(f);
+            fm = new Formatter(c2bNRSB);
+            p = new Parser(in, sbmap);
+            e = null;
+            ArrayList<Entry> es = new ArrayList<Entry>();
+            while ((e = p.next()) != null) {
+                if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) {
+                    c2bOff += 0x100;
+                    c2bIndex[e.cp>>8] = 1;
+                }
+                es.add(e);
+            }
+            fm.format("// non-roundtrip c2b only entries%n");
+            if (es.size() < 100) {
+                fm.format("        c2bNR = new char[%d];%n", es.size() * 2);
+                int i = 0;
+                for (Entry entry: es) {
+                    fm.format("        c2bNR[%d] = 0x%x; c2bNR[%d] = 0x%x;%n",
+                              i++, entry.bs, i++, entry.cp);
+                }
+            } else {
+                char[] cc = new char[es.size() * 2];
+                int i = 0;
+                for (Entry entry: es) {
+                    cc[i++] = (char)entry.bs;
+                    cc[i++] = (char)entry.cp;
+                }
+                fm.format("        c2bNR = (%n");
+                toString(cc, 0, i,  fm, ").toCharArray();", false);
+            }
+            fm.close();
+        }
+
+        // (4)it's time to generate the source file
+        String b2c = b2cSB.toString();
+        String b2cNR = b2cNRSB.toString();
+        String c2bNR = c2bNRSB.toString();
+
+        Scanner s = new Scanner(new File(srcDir, template));
+        PrintStream out = new PrintStream(new FileOutputStream(
+                              new File(dstDir, clzName + ".java")));
+
+        while (s.hasNextLine()) {
+            String line = s.nextLine();
+            int i = line.indexOf("$");
+            if (i == -1) {
+                out.println(line);
+                continue;
+            }
+            if (line.indexOf("$PACKAGE$", i) != -1) {
+                line = line.replace("$PACKAGE$", pkgName);
+            }
+            if (line.indexOf("$NAME_CLZ$", i) != -1) {
+                line = line.replace("$NAME_CLZ$", clzName);
+            }
+            if (line.indexOf("$NAME_CS$", i) != -1) {
+                line = line.replace("$NAME_CS$", csName);
+            }
+            if (line.indexOf("$NAME_ALIASES$", i) != -1) {
+                if ("sun.nio.cs".equals(pkgName))
+                    line = line.replace("$NAME_ALIASES$",
+                                        "StandardCharsets.aliases_" + clzName);
+                else
+                    line = line.replace("$NAME_ALIASES$",
+                                        "ExtendedCharsets.aliasesFor(\"" + csName + "\")");
+            }
+            if (line.indexOf("$NAME_HIS$", i) != -1) {
+                line = line.replace("$NAME_HIS$", hisName);
+            }
+            if (line.indexOf("$CONTAINS$", i) != -1) {
+                if (isASCII)
+                    line = "        return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));";
+                else
+                    line = "        return (cs instanceof " + clzName + ");";
+            }
+            if (line.indexOf("$B2CTABLE$") != -1) {
+                line = line.replace("$B2CTABLE$", b2c);
+            }
+            if (line.indexOf("$C2BLENGTH$") != -1) {
+                line = line.replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16));
+            }
+            if (line.indexOf("$NONROUNDTRIP_B2C$") != -1) {
+                if (b2cNR.length() == 0)
+                    continue;
+                line = line.replace("$NONROUNDTRIP_B2C$", b2cNR);
+            }
+
+            if (line.indexOf("$NONROUNDTRIP_C2B$") != -1) {
+                if (c2bNR.length() == 0)
+                    continue;
+                line = line.replace("$NONROUNDTRIP_C2B$", c2bNR);
+            }
+            out.println(line);
+        }
+        out.close();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/tools/src/build/tools/charsetmapping/Utils.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Scanner;
+import java.util.Formatter;
+
+public class Utils {
+
+    public final static char UNMAPPABLE_DECODING = '\uFFFD';
+    public final static int  UNMAPPABLE_ENCODING = 0xFFFD;
+
+    public static class Entry {
+        public int bs;   //byte sequence reps
+        public int cp;   //Unicode codepoint
+        public int cp2;  //CC of composite
+
+        public Entry () {}
+        public Entry (int bytes, int cp, int cp2) {
+            this.bs = bytes;
+            this.cp = cp;
+            this.cp2 = cp2;
+        }
+    }
+
+    public static class Parser {
+        static final Pattern basic = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)?\\s*+.*");
+        static final int gBS = 1;
+        static final int gCP = 2;
+        static final int gCP2 = 3;
+
+        BufferedReader reader;
+        boolean closed;
+        Matcher matcher;
+        int gbs, gcp, gcp2;
+
+        public Parser (InputStream in, Pattern p, int gbs, int gcp, int gcp2)
+            throws IOException
+        {
+            this.reader = new BufferedReader(new InputStreamReader(in));
+            this.closed = false;
+            this.matcher = p.matcher("");
+            this.gbs = gbs;
+            this.gcp = gcp;
+            this.gcp2 = gcp2;
+        }
+
+        public Parser (InputStream in, Pattern p) throws IOException {
+            this(in, p, gBS, gCP, gCP2);
+        }
+
+        public Parser (InputStream in) throws IOException {
+            this(in, basic, gBS, gCP, gCP2);
+        }
+
+        protected boolean isDirective(String line) {
+            return line.startsWith("#");
+        }
+
+        protected Entry parse(Matcher matcher, Entry mapping) {
+            mapping.bs = Integer.parseInt(matcher.group(gbs), 16);
+            mapping.cp = Integer.parseInt(matcher.group(gcp), 16);
+            if (gcp2 <= matcher.groupCount() &&
+                matcher.group(gcp2) != null)
+                mapping.cp2 = Integer.parseInt(matcher.group(gcp2), 16);
+            else
+                mapping.cp2 = 0;
+            return mapping;
+        }
+
+        public Entry next() throws Exception {
+            return next(new Entry());
+        }
+
+        // returns null and closes the input stream if the eof has beenreached.
+        public Entry next(Entry mapping) throws Exception {
+            if (closed)
+                return null;
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (isDirective(line))
+                    continue;
+                matcher.reset(line);
+                if (!matcher.lookingAt()) {
+                    //System.out.println("Missed: " + line);
+                    continue;
+                }
+                return parse(matcher, mapping);
+            }
+            reader.close();
+            closed = true;
+            return null;
+        }
+    }
+
+    public static class Output {
+        private Formatter out;
+
+        public Output(Formatter out) {
+            this.out = out;
+        }
+
+        public void close() {
+            out.close();
+        }
+
+        private void toChar(String fmt, char c) {
+            switch (c) {
+            case '\b':
+                out.format("\\b"); break;
+            case '\t':
+                out.format("\\t"); break;
+            case '\n':
+                out.format("\\n"); break;
+            case '\f':
+                out.format("\\f"); break;
+            case '\r':
+                out.format("\\r"); break;
+            case '\"':
+                out.format("\\\""); break;
+            case '\'':
+                out.format("\\'"); break;
+            case '\\':
+                out.format("\\\\"); break;
+            default:
+                out.format(fmt, c & 0xffff);
+            }
+        }
+
+        public void format(String fmt, Object ... args) {
+            out.format(fmt, args);
+        }
+
+        public void format(char[] cc, int off, int end, String closure) {
+            while (off < end) {
+                out.format("        \"");
+                for (int j = 0; j < 8; j++) {
+                    if (off == end)
+                        break;
+                    toChar("\\u%04X", cc[off++]);
+                }
+                if (off == end)
+                    out.format("\" %s%n", closure);
+                else
+                    out.format("\" + %n");
+            }
+        }
+
+        public void format(char[] cc, String closure) {
+            format(cc, 0, cc.length, closure);
+        }
+
+        public void format(char[] db, int b1, int b2Min, int b2Max,
+                           String closure)
+        {
+            char[] cc = new char[b2Max - b2Min + 1];
+            int off = 0;
+            for (int b2 = b2Min; b2 <= b2Max; b2++) {
+                cc[off++] = db[(b1 << 8) | b2];
+            }
+            format(cc, 0, cc.length, closure);
+        }
+
+        public void format(char[] date) {
+            int off = 0;
+            int end = date.length;
+            while (off < end) {
+                out.format("        ");
+                for (int j = 0; j < 8 && off < end; j++) {
+                    toChar("'\\u%04X',", date[off++]);
+                }
+                out.format("%n");
+            }
+        }
+    }
+
+    public static String getCopyright(File f) throws IOException {
+        Scanner s = new Scanner(f, "ISO-8859-1");
+        StringBuilder sb = new StringBuilder();
+        while (s.hasNextLine()) {
+            String ln = s.nextLine();
+            sb.append(ln + "\n");
+            // assume we have the copyright as the first comment
+            if (ln.matches("^\\s\\*\\/$"))
+                break;
+        }
+        s.close();
+        return sb.toString();
+    }
+}
--- a/jdk/make/tools/src/build/tools/javazic/RuleDay.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/make/tools/src/build/tools/javazic/RuleDay.java	Tue Apr 20 01:24:48 2010 -0700
@@ -139,7 +139,7 @@
         if (isLast()) {
             return -1;
         }
-        return getDay();
+        return isEarlier() ? -getDay() : getDay();
     }
 
     /**
@@ -147,13 +147,10 @@
      * @return the SimpleTimeZone day-of-week rule value
      */
     int getDayOfWeekForSimpleTimeZoneInt() {
-        if (!isLater() && !isEarlier() && !isLast()) {
-            return 0;
-        }
-        if (isLater()) {
+        if (isEarlier() || isLater()) {
             return -getDayOfWeekNum();
         }
-        return getDayOfWeekNum();
+        return isLast() ? getDayOfWeekNum() : 0;
     }
 
     /**
--- a/jdk/src/share/classes/java/beans/EventHandler.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/beans/EventHandler.java	Tue Apr 20 01:24:48 2010 -0700
@@ -32,7 +32,6 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
-import java.util.EventObject;
 import sun.reflect.misc.MethodUtil;
 
 /**
@@ -279,9 +278,9 @@
 public class EventHandler implements InvocationHandler {
     private Object target;
     private String action;
-    private String eventPropertyName;
-    private String listenerMethodName;
-    private AccessControlContext acc;
+    private final String eventPropertyName;
+    private final String listenerMethodName;
+    private final AccessControlContext acc = AccessController.getContext();
 
     /**
      * Creates a new <code>EventHandler</code> object;
@@ -310,7 +309,6 @@
      */
     @ConstructorProperties({"target", "action", "eventPropertyName", "listenerMethodName"})
     public EventHandler(Object target, String action, String eventPropertyName, String listenerMethodName) {
-        this.acc = AccessController.getContext();
         this.target = target;
         this.action = action;
         if (target == null) {
@@ -422,7 +420,11 @@
      * @see EventHandler
      */
     public Object invoke(final Object proxy, final Method method, final Object[] arguments) {
-        return AccessController.doPrivileged(new PrivilegedAction() {
+        AccessControlContext acc = this.acc;
+        if ((acc == null) && (System.getSecurityManager() != null)) {
+            throw new SecurityException("AccessControlContext is not set");
+        }
+        return AccessController.doPrivileged(new PrivilegedAction<Object>() {
             public Object run() {
                 return invokeInternal(proxy, method, arguments);
             }
@@ -482,7 +484,10 @@
                 throw new RuntimeException(ex);
             }
             catch (InvocationTargetException ex) {
-                throw new RuntimeException(ex.getTargetException());
+                Throwable th = ex.getTargetException();
+                throw (th instanceof RuntimeException)
+                        ? (RuntimeException) th
+                        : new RuntimeException(th);
             }
         }
         return null;
--- a/jdk/src/share/classes/java/beans/Expression.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/beans/Expression.java	Tue Apr 20 01:24:48 2010 -0700
@@ -99,6 +99,29 @@
     }
 
     /**
+     * {@inheritDoc}
+     * <p>
+     * If the invoked method completes normally,
+     * the value it returns is copied in the {@code value} property.
+     * Note that the {@code value} property is set to {@code null},
+     * if the return type of the underlying method is {@code void}.
+     *
+     * @throws NullPointerException if the value of the {@code target} or
+     *                              {@code methodName} property is {@code null}
+     * @throws NoSuchMethodException if a matching method is not found
+     * @throws SecurityException if a security manager exists and
+     *                           it denies the method invocation
+     * @throws Exception that is thrown by the invoked method
+     *
+     * @see java.lang.reflect.Method
+     * @since 1.7
+     */
+    @Override
+    public void execute() throws Exception {
+        setValue(invoke());
+    }
+
+    /**
      * If the value property of this instance is not already set,
      * this method dynamically finds the method with the specified
      * methodName on this target with these arguments and calls it.
--- a/jdk/src/share/classes/java/beans/Statement.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/beans/Statement.java	Tue Apr 20 01:24:48 2010 -0700
@@ -29,6 +29,10 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 
 import com.sun.beans.finder.ClassFinder;
 import com.sun.beans.finder.ConstructorFinder;
@@ -63,9 +67,10 @@
         }
     };
 
-    Object target;
-    String methodName;
-    Object[] arguments;
+    private final AccessControlContext acc = AccessController.getContext();
+    private final Object target;
+    private final String methodName;
+    private final Object[] arguments;
     ClassLoader loader;
 
     /**
@@ -127,8 +132,8 @@
     }
 
     /**
-     * The execute method finds a method whose name is the same
-     * as the methodName property, and invokes the method on
+     * The {@code execute} method finds a method whose name is the same
+     * as the {@code methodName} property, and invokes the method on
      * the target.
      *
      * When the target's class defines many methods with the given name
@@ -136,7 +141,7 @@
      * the algorithm specified in the Java Language Specification
      * (15.11). The dynamic class of the target and arguments are used
      * in place of the compile-time type information and, like the
-     * <code>java.lang.reflect.Method</code> class itself, conversion between
+     * {@link java.lang.reflect.Method} class itself, conversion between
      * primitive values and their associated wrapper classes is handled
      * internally.
      * <p>
@@ -147,19 +152,48 @@
      * <li>
      * The reserved method name "new" may be used to call a class's constructor
      * as if all classes defined static "new" methods. Constructor invocations
-     * are typically considered <code>Expression</code>s rather than <code>Statement</code>s
+     * are typically considered {@code Expression}s rather than {@code Statement}s
      * as they return a value.
      * <li>
-     * The method names "get" and "set" defined in the <code>java.util.List</code>
+     * The method names "get" and "set" defined in the {@link java.util.List}
      * interface may also be applied to array instances, mapping to
-     * the static methods of the same name in the <code>Array</code> class.
+     * the static methods of the same name in the {@code Array} class.
      * </ul>
+     *
+     * @throws NullPointerException if the value of the {@code target} or
+     *                              {@code methodName} property is {@code null}
+     * @throws NoSuchMethodException if a matching method is not found
+     * @throws SecurityException if a security manager exists and
+     *                           it denies the method invocation
+     * @throws Exception that is thrown by the invoked method
+     *
+     * @see java.lang.reflect.Method
      */
     public void execute() throws Exception {
         invoke();
     }
 
     Object invoke() throws Exception {
+        AccessControlContext acc = this.acc;
+        if ((acc == null) && (System.getSecurityManager() != null)) {
+            throw new SecurityException("AccessControlContext is not set");
+        }
+        try {
+            return AccessController.doPrivileged(
+                    new PrivilegedExceptionAction<Object>() {
+                        public Object run() throws Exception {
+                            return invokeInternal();
+                        }
+                    },
+                    acc
+            );
+        }
+        catch (PrivilegedActionException exception) {
+            throw exception.getException();
+        }
+    }
+
+    private Object invokeInternal() throws Exception {
         Object target = getTarget();
         String methodName = getMethodName();
 
--- a/jdk/src/share/classes/java/io/File.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/io/File.java	Tue Apr 20 01:24:48 2010 -0700
@@ -2064,11 +2064,12 @@
     private synchronized void readObject(java.io.ObjectInputStream s)
          throws IOException, ClassNotFoundException
     {
-        s.defaultReadObject();
+        ObjectInputStream.GetField fields = s.readFields();
+        String pathField = (String)fields.get("path", null);
         char sep = s.readChar(); // read the previous separator char
         if (sep != separatorChar)
-            this.path = this.path.replace(sep, separatorChar);
-        this.path = fs.normalize(this.path);
+            pathField = pathField.replace(sep, separatorChar);
+        this.path = fs.normalize(pathField);
         this.prefixLength = fs.prefixLength(this.path);
     }
 
--- a/jdk/src/share/classes/java/io/FilterInputStream.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/io/FilterInputStream.java	Tue Apr 20 01:24:48 2010 -0700
@@ -134,9 +134,18 @@
     }
 
     /**
-     * {@inheritDoc}
+     * Skips over and discards <code>n</code> bytes of data from the
+     * input stream. The <code>skip</code> method may, for a variety of
+     * reasons, end up skipping over some smaller number of bytes,
+     * possibly <code>0</code>. The actual number of bytes skipped is
+     * returned.
      * <p>
      * This method simply performs <code>in.skip(n)</code>.
+     *
+     * @param      n   the number of bytes to be skipped.
+     * @return     the actual number of bytes skipped.
+     * @exception  IOException  if the stream does not support seek,
+     *                          or if some other I/O error occurs.
      */
     public long skip(long n) throws IOException {
         return in.skip(n);
--- a/jdk/src/share/classes/java/lang/ProcessBuilder.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/lang/ProcessBuilder.java	Tue Apr 20 01:24:48 2010 -0700
@@ -994,6 +994,8 @@
         // Must convert to array first -- a malicious user-supplied
         // list might try to circumvent the security check.
         String[] cmdarray = command.toArray(new String[command.size()]);
+        cmdarray = cmdarray.clone();
+
         for (String arg : cmdarray)
             if (arg == null)
                 throw new NullPointerException();
--- a/jdk/src/share/classes/java/lang/ThreadGroup.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/lang/ThreadGroup.java	Tue Apr 20 01:24:48 2010 -0700
@@ -55,7 +55,7 @@
  */
 public
 class ThreadGroup implements Thread.UncaughtExceptionHandler {
-    ThreadGroup parent;
+    private final ThreadGroup parent;
     String name;
     int maxPriority;
     boolean destroyed;
@@ -76,6 +76,7 @@
     private ThreadGroup() {     // called from C code
         this.name = "system";
         this.maxPriority = Thread.MAX_PRIORITY;
+        this.parent = null;
     }
 
     /**
@@ -113,10 +114,10 @@
      * @since   JDK1.0
      */
     public ThreadGroup(ThreadGroup parent, String name) {
-        if (parent == null) {
-            throw new NullPointerException();
-        }
-        parent.checkAccess();
+        this(checkParentAccess(parent), parent, name);
+    }
+
+    private ThreadGroup(Void unused, ThreadGroup parent, String name) {
         this.name = name;
         this.maxPriority = parent.maxPriority;
         this.daemon = parent.daemon;
@@ -125,6 +126,16 @@
         parent.add(this);
     }
 
+    /*
+     * @throws  NullPointerException  if the parent argument is {@code null}
+     * @throws  SecurityException     if the current thread cannot create a
+     *                                thread in the specified thread group.
+     */
+    private static Void checkParentAccess(ThreadGroup parent) {
+        parent.checkAccess();
+        return null;
+    }
+
     /**
      * Returns the name of this thread group.
      *
--- a/jdk/src/share/classes/java/net/DatagramSocket.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/DatagramSocket.java	Tue Apr 20 01:24:48 2010 -0700
@@ -118,6 +118,7 @@
         if (address == null) {
             throw new IllegalArgumentException("connect: null address");
         }
+        checkAddress (address, "connect");
         if (isClosed())
             return;
         SecurityManager security = System.getSecurityManager();
@@ -363,13 +364,15 @@
         InetSocketAddress epoint = (InetSocketAddress) addr;
         if (epoint.isUnresolved())
             throw new SocketException("Unresolved address");
+        InetAddress iaddr = epoint.getAddress();
+        int port = epoint.getPort();
+        checkAddress(iaddr, "bind");
         SecurityManager sec = System.getSecurityManager();
         if (sec != null) {
-            sec.checkListen(epoint.getPort());
+            sec.checkListen(port);
         }
         try {
-            getImpl().bind(epoint.getPort(),
-                           epoint.getAddress());
+            getImpl().bind(port, iaddr);
         } catch (SocketException e) {
             getImpl().close();
             throw e;
@@ -377,6 +380,15 @@
         bound = true;
     }
 
+    void checkAddress (InetAddress addr, String op) {
+        if (addr == null) {
+            return;
+        }
+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) {
+            throw new IllegalArgumentException(op + ": invalid address type");
+        }
+    }
+
     /**
      * Connects the socket to a remote address for this socket. When a
      * socket is connected to a remote address, packets may only be
@@ -603,6 +615,7 @@
         synchronized (p) {
             if (isClosed())
                 throw new SocketException("Socket is closed");
+            checkAddress (p.getAddress(), "send");
             if (connectState == ST_NOT_CONNECTED) {
                 // check the address is ok wiht the security manager on every send.
                 SecurityManager security = System.getSecurityManager();
--- a/jdk/src/share/classes/java/net/InetAddress.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/InetAddress.java	Tue Apr 20 01:24:48 2010 -0700
@@ -35,6 +35,7 @@
 import java.security.AccessController;
 import java.io.ObjectStreamException;
 import java.io.IOException;
+import java.io.ObjectInputStream;
 import sun.security.action.*;
 import sun.net.InetAddressCachePolicy;
 import sun.net.util.IPAddressUtil;
@@ -1472,6 +1473,23 @@
 
         return impl;
     }
+
+    private void readObjectNoData (ObjectInputStream s) throws
+                         IOException, ClassNotFoundException {
+        if (getClass().getClassLoader() != null) {
+            throw new SecurityException ("invalid address type");
+        }
+    }
+
+    private void readObject (ObjectInputStream s) throws
+                         IOException, ClassNotFoundException {
+        s.defaultReadObject ();
+        if (getClass().getClassLoader() != null) {
+            hostName = null;
+            address = 0;
+            throw new SecurityException ("invalid address type");
+        }
+    }
 }
 
 /*
--- a/jdk/src/share/classes/java/net/MulticastSocket.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/MulticastSocket.java	Tue Apr 20 01:24:48 2010 -0700
@@ -289,6 +289,7 @@
             throw new SocketException("Socket is closed");
         }
 
+        checkAddress(mcastaddr, "joinGroup");
         SecurityManager security = System.getSecurityManager();
         if (security != null) {
             security.checkMulticast(mcastaddr);
@@ -323,6 +324,7 @@
             throw new SocketException("Socket is closed");
         }
 
+        checkAddress(mcastaddr, "leaveGroup");
         SecurityManager security = System.getSecurityManager();
         if (security != null) {
             security.checkMulticast(mcastaddr);
@@ -370,6 +372,7 @@
         if (oldImpl)
             throw new UnsupportedOperationException();
 
+        checkAddress(((InetSocketAddress)mcastaddr).getAddress(), "joinGroup");
         SecurityManager security = System.getSecurityManager();
         if (security != null) {
             security.checkMulticast(((InetSocketAddress)mcastaddr).getAddress());
@@ -416,6 +419,7 @@
         if (oldImpl)
             throw new UnsupportedOperationException();
 
+        checkAddress(((InetSocketAddress)mcastaddr).getAddress(), "leaveGroup");
         SecurityManager security = System.getSecurityManager();
         if (security != null) {
             security.checkMulticast(((InetSocketAddress)mcastaddr).getAddress());
@@ -441,6 +445,7 @@
         if (isClosed()) {
             throw new SocketException("Socket is closed");
         }
+        checkAddress(inf, "setInterface");
         synchronized (infLock) {
             getImpl().setOption(SocketOptions.IP_MULTICAST_IF, inf);
             infAddress = inf;
@@ -632,6 +637,7 @@
         throws IOException {
             if (isClosed())
                 throw new SocketException("Socket is closed");
+            checkAddress(p.getAddress(), "send");
             synchronized(ttlLock) {
                 synchronized(p) {
                     if (connectState == ST_NOT_CONNECTED) {
--- a/jdk/src/share/classes/java/net/NetworkInterface.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/NetworkInterface.java	Tue Apr 20 01:24:48 2010 -0700
@@ -290,8 +290,12 @@
      *          If the specified address is <tt>null</tt>.
      */
     public static NetworkInterface getByInetAddress(InetAddress addr) throws SocketException {
-        if (addr == null)
+        if (addr == null) {
             throw new NullPointerException();
+        }
+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) {
+            throw new IllegalArgumentException ("invalid address type");
+        }
         return getByInetAddress0(addr);
     }
 
--- a/jdk/src/share/classes/java/net/Socket.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/Socket.java	Tue Apr 20 01:24:48 2010 -0700
@@ -122,6 +122,9 @@
         if (p.type() == Proxy.Type.SOCKS) {
             SecurityManager security = System.getSecurityManager();
             InetSocketAddress epoint = (InetSocketAddress) p.address();
+            if (epoint.getAddress() != null) {
+                checkAddress (epoint.getAddress(), "Socket");
+            }
             if (security != null) {
                 if (epoint.isUnresolved())
                     security.checkConnect(epoint.getHostName(),
@@ -558,15 +561,16 @@
             throw new IllegalArgumentException("Unsupported address type");
 
         InetSocketAddress epoint = (InetSocketAddress) endpoint;
+        InetAddress addr = epoint.getAddress ();
+        int port = epoint.getPort();
+        checkAddress(addr, "connect");
 
         SecurityManager security = System.getSecurityManager();
         if (security != null) {
             if (epoint.isUnresolved())
-                security.checkConnect(epoint.getHostName(),
-                                      epoint.getPort());
+                security.checkConnect(epoint.getHostName(), port);
             else
-                security.checkConnect(epoint.getAddress().getHostAddress(),
-                                      epoint.getPort());
+                security.checkConnect(addr.getHostAddress(), port);
         }
         if (!created)
             createImpl(true);
@@ -574,10 +578,9 @@
             impl.connect(epoint, timeout);
         else if (timeout == 0) {
             if (epoint.isUnresolved())
-                impl.connect(epoint.getAddress().getHostName(),
-                             epoint.getPort());
+                impl.connect(addr.getHostName(), port);
             else
-                impl.connect(epoint.getAddress(), epoint.getPort());
+                impl.connect(addr, port);
         } else
             throw new UnsupportedOperationException("SocketImpl.connect(addr, timeout)");
         connected = true;
@@ -614,14 +617,25 @@
         InetSocketAddress epoint = (InetSocketAddress) bindpoint;
         if (epoint != null && epoint.isUnresolved())
             throw new SocketException("Unresolved address");
-        if (bindpoint == null)
-            getImpl().bind(InetAddress.anyLocalAddress(), 0);
-        else
-            getImpl().bind(epoint.getAddress(),
-                           epoint.getPort());
+        if (epoint == null) {
+            epoint = new InetSocketAddress(0);
+        }
+        InetAddress addr = epoint.getAddress();
+        int port = epoint.getPort();
+        checkAddress (addr, "bind");
+        getImpl().bind (addr, port);
         bound = true;
     }
 
+    private void checkAddress (InetAddress addr, String op) {
+        if (addr == null) {
+            return;
+        }
+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) {
+            throw new IllegalArgumentException(op + ": invalid address type");
+        }
+    }
+
     /**
      * set the flags after an accept() call.
      */
--- a/jdk/src/share/classes/java/net/SocketInputStream.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/SocketInputStream.java	Tue Apr 20 01:24:48 2010 -0700
@@ -118,6 +118,10 @@
      * @exception IOException If an I/O error has occurred.
      */
     public int read(byte b[], int off, int length) throws IOException {
+        return read(b, off, length, impl.getTimeout());
+    }
+
+    int read(byte b[], int off, int length, int timeout) throws IOException {
         int n;
 
         // EOF already encountered
@@ -143,7 +147,7 @@
         // acquire file descriptor and do the read
         FileDescriptor fd = impl.acquireFD();
         try {
-            n = socketRead0(fd, b, off, length, impl.getTimeout());
+            n = socketRead0(fd, b, off, length, timeout);
             if (n > 0) {
                 return n;
             }
@@ -161,7 +165,7 @@
             impl.setConnectionResetPending();
             impl.acquireFD();
             try {
-                n = socketRead0(fd, b, off, length, impl.getTimeout());
+                n = socketRead0(fd, b, off, length, timeout);
                 if (n > 0) {
                     return n;
                 }
--- a/jdk/src/share/classes/java/net/SocksSocketImpl.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/net/SocksSocketImpl.java	Tue Apr 20 01:24:48 2010 -0700
@@ -98,11 +98,31 @@
         super.connect(new InetSocketAddress(host, port), timeout);
     }
 
+    private static int remainingMillis(long deadlineMillis) throws IOException {
+        if (deadlineMillis == 0L)
+            return 0;
+
+        final long remaining = deadlineMillis - System.currentTimeMillis();
+        if (remaining > 0)
+            return (int) remaining;
+
+        throw new SocketTimeoutException();
+    }
+
     private int readSocksReply(InputStream in, byte[] data) throws IOException {
+        return readSocksReply(in, data, 0L);
+    }
+
+    private int readSocksReply(InputStream in, byte[] data, long deadlineMillis) throws IOException {
         int len = data.length;
         int received = 0;
         for (int attempts = 0; received < len && attempts < 3; attempts++) {
-            int count = in.read(data, received, len - received);
+            int count;
+            try {
+                count = ((SocketInputStream)in).read(data, received, len - received, remainingMillis(deadlineMillis));
+            } catch (SocketTimeoutException e) {
+                throw new SocketTimeoutException("Connect timed out");
+            }
             if (count < 0)
                 throw new SocketException("Malformed reply from SOCKS server");
             received += count;
@@ -115,6 +135,12 @@
      */
     private boolean authenticate(byte method, InputStream in,
                                  BufferedOutputStream out) throws IOException {
+        return authenticate(method, in, out, 0L);
+    }
+
+    private boolean authenticate(byte method, InputStream in,
+                                 BufferedOutputStream out,
+                                 long deadlineMillis) throws IOException {
         // No Authentication required. We're done then!
         if (method == NO_AUTH)
             return true;
@@ -162,7 +188,7 @@
                 out.write(0);
             out.flush();
             byte[] data = new byte[2];
-            int i = readSocksReply(in, data);
+            int i = readSocksReply(in, data, deadlineMillis);
             if (i != 2 || data[1] != 0) {
                 /* RFC 1929 specifies that the connection MUST be closed if
                    authentication fails */
@@ -201,18 +227,18 @@
 //                      out.write(outToken);
 //                      out.flush();
 //                      data = new byte[2];
-//                      i = readSocksReply(in, data);
+//                      i = readSocksReply(in, data, deadlineMillis);
 //                      if (i != 2 || data[1] == 0xff) {
 //                          in.close();
 //                          out.close();
 //                          return false;
 //                      }
-//                      i = readSocksReply(in, data);
+//                      i = readSocksReply(in, data, deadlineMillis);
 //                      int len = 0;
 //                      len = ((int)data[0] & 0xff) << 8;
 //                      len += data[1];
 //                      data = new byte[len];
-//                      i = readSocksReply(in, data);
+//                      i = readSocksReply(in, data, deadlineMillis);
 //                      if (i == len)
 //                          return true;
 //                      in.close();
@@ -231,7 +257,8 @@
     }
 
     private void connectV4(InputStream in, OutputStream out,
-                           InetSocketAddress endpoint) throws IOException {
+                           InetSocketAddress endpoint,
+                           long deadlineMillis) throws IOException {
         if (!(endpoint.getAddress() instanceof Inet4Address)) {
             throw new SocketException("SOCKS V4 requires IPv4 only addresses");
         }
@@ -249,7 +276,7 @@
         out.write(0);
         out.flush();
         byte[] data = new byte[8];
-        int n = readSocksReply(in, data);
+        int n = readSocksReply(in, data, deadlineMillis);
         if (n != 8)
             throw new SocketException("Reply from SOCKS server has bad length: " + n);
         if (data[0] != 0 && data[0] != 4)
@@ -296,6 +323,15 @@
      */
     @Override
     protected void connect(SocketAddress endpoint, int timeout) throws IOException {
+        final long deadlineMillis;
+
+        if (timeout == 0) {
+            deadlineMillis = 0L;
+        } else {
+            long finish = System.currentTimeMillis() + timeout;
+            deadlineMillis = finish < 0 ? Long.MAX_VALUE : finish;
+        }
+
         SecurityManager security = System.getSecurityManager();
         if (endpoint == null || !(endpoint instanceof InetSocketAddress))
             throw new IllegalArgumentException("Unsupported address type");
@@ -322,7 +358,7 @@
                 /*
                  * No default proxySelector --> direct connection
                  */
-                super.connect(epoint, timeout);
+                super.connect(epoint, remainingMillis(deadlineMillis));
                 return;
             }
             URI uri;
@@ -345,13 +381,13 @@
             java.util.Iterator<Proxy> iProxy = null;
             iProxy = sel.select(uri).iterator();
             if (iProxy == null || !(iProxy.hasNext())) {
-                super.connect(epoint, timeout);
+                super.connect(epoint, remainingMillis(deadlineMillis));
                 return;
             }
             while (iProxy.hasNext()) {
                 p = iProxy.next();
                 if (p == null || p == Proxy.NO_PROXY) {
-                    super.connect(epoint, timeout);
+                    super.connect(epoint, remainingMillis(deadlineMillis));
                     return;
                 }
                 if (p.type() != Proxy.Type.SOCKS)
@@ -364,7 +400,7 @@
 
                 // Connects to the SOCKS server
                 try {
-                    privilegedConnect(server, serverPort, timeout);
+                    privilegedConnect(server, serverPort, remainingMillis(deadlineMillis));
                     // Worked, let's get outta here
                     break;
                 } catch (IOException e) {
@@ -388,7 +424,7 @@
         } else {
             // Connects to the SOCKS server
             try {
-                privilegedConnect(server, serverPort, timeout);
+                privilegedConnect(server, serverPort, remainingMillis(deadlineMillis));
             } catch (IOException e) {
                 throw new SocketException(e.getMessage());
             }
@@ -403,7 +439,7 @@
             // DOMAIN type of addresses (unresolved addresses here)
             if (epoint.isUnresolved())
                 throw new UnknownHostException(epoint.toString());
-            connectV4(in, out, epoint);
+            connectV4(in, out, epoint, deadlineMillis);
             return;
         }
 
@@ -414,7 +450,7 @@
         out.write(USER_PASSW);
         out.flush();
         byte[] data = new byte[2];
-        int i = readSocksReply(in, data);
+        int i = readSocksReply(in, data, deadlineMillis);
         if (i != 2 || ((int)data[0]) != PROTO_VERS) {
             // Maybe it's not a V5 sever after all
             // Let's try V4 before we give up
@@ -422,12 +458,12 @@
             // DOMAIN type of addresses (unresolved addresses here)
             if (epoint.isUnresolved())
                 throw new UnknownHostException(epoint.toString());
-            connectV4(in, out, epoint);
+            connectV4(in, out, epoint, deadlineMillis);
             return;
         }
         if (((int)data[1]) == NO_METHODS)
             throw new SocketException("SOCKS : No acceptable methods");
-        if (!authenticate(data[1], in, out)) {
+        if (!authenticate(data[1], in, out, deadlineMillis)) {
             throw new SocketException("SOCKS : authentication failed");
         }
         out.write(PROTO_VERS);
@@ -457,7 +493,7 @@
         }
         out.flush();
         data = new byte[4];
-        i = readSocksReply(in, data);
+        i = readSocksReply(in, data, deadlineMillis);
         if (i != 4)
             throw new SocketException("Reply from SOCKS server has bad length");
         SocketException ex = null;
@@ -469,33 +505,33 @@
             switch(data[3]) {
             case IPV4:
                 addr = new byte[4];
-                i = readSocksReply(in, addr);
+                i = readSocksReply(in, addr, deadlineMillis);
                 if (i != 4)
                     throw new SocketException("Reply from SOCKS server badly formatted");
                 data = new byte[2];
-                i = readSocksReply(in, data);
+                i = readSocksReply(in, data, deadlineMillis);
                 if (i != 2)
                     throw new SocketException("Reply from SOCKS server badly formatted");
                 break;
             case DOMAIN_NAME:
                 len = data[1];
                 byte[] host = new byte[len];
-                i = readSocksReply(in, host);
+                i = readSocksReply(in, host, deadlineMillis);
                 if (i != len)
                     throw new SocketException("Reply from SOCKS server badly formatted");
                 data = new byte[2];
-                i = readSocksReply(in, data);
+                i = readSocksReply(in, data, deadlineMillis);
                 if (i != 2)
                     throw new SocketException("Reply from SOCKS server badly formatted");
                 break;
             case IPV6:
                 len = data[1];
                 addr = new byte[len];
-                i = readSocksReply(in, addr);
+                i = readSocksReply(in, addr, deadlineMillis);
                 if (i != len)
                     throw new SocketException("Reply from SOCKS server badly formatted");
                 data = new byte[2];
-                i = readSocksReply(in, data);
+                i = readSocksReply(in, data, deadlineMillis);
                 if (i != 2)
                     throw new SocketException("Reply from SOCKS server badly formatted");
                 break;
--- a/jdk/src/share/classes/java/security/Policy.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/security/Policy.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  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
@@ -28,19 +28,17 @@
 
 import java.io.*;
 import java.lang.RuntimePermission;
+import java.lang.reflect.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Enumeration;
 import java.util.Hashtable;
-import java.util.Vector;
+import java.util.PropertyPermission;
 import java.util.StringTokenizer;
-import java.util.PropertyPermission;
-
-import java.lang.reflect.*;
-
+import java.util.Vector;
 import java.util.WeakHashMap;
+import sun.security.jca.GetInstance;
 import sun.security.util.Debug;
-import sun.security.jca.GetInstance;
 import sun.security.util.SecurityConstants;
 
 
@@ -113,8 +111,8 @@
 
     private static final Debug debug = Debug.getInstance("policy");
 
-    // Cache mapping  ProtectionDomain to PermissionCollection
-    private WeakHashMap<ProtectionDomain, PermissionCollection> pdMapping;
+    // Cache mapping ProtectionDomain.Key to PermissionCollection
+    private WeakHashMap<ProtectionDomain.Key, PermissionCollection> pdMapping;
 
     /** package private for AccessControlContext */
     static boolean isSet()
@@ -307,7 +305,7 @@
         synchronized (p) {
             if (p.pdMapping == null) {
                 p.pdMapping =
-                    new WeakHashMap<ProtectionDomain, PermissionCollection>();
+                    new WeakHashMap<ProtectionDomain.Key, PermissionCollection>();
            }
         }
 
@@ -323,7 +321,7 @@
 
             synchronized (p.pdMapping) {
                 // cache of pd to permissions
-                p.pdMapping.put(policyDomain, policyPerms);
+                p.pdMapping.put(policyDomain.key, policyPerms);
             }
         }
         return;
@@ -638,7 +636,7 @@
         }
 
         synchronized (pdMapping) {
-            pc = pdMapping.get(domain);
+            pc = pdMapping.get(domain.key);
         }
 
         if (pc != null) {
@@ -697,7 +695,7 @@
         }
 
         synchronized (pdMapping) {
-            pc = pdMapping.get(domain);
+            pc = pdMapping.get(domain.key);
         }
 
         if (pc != null) {
@@ -711,7 +709,7 @@
 
         synchronized (pdMapping) {
             // cache it
-            pdMapping.put(domain, pc);
+            pdMapping.put(domain.key, pc);
         }
 
         return pc.implies(permission);
@@ -747,21 +745,25 @@
             this.params = params;
         }
 
-        public String getType() { return type; }
+        @Override public String getType() { return type; }
+
+        @Override public Policy.Parameters getParameters() { return params; }
 
-        public Policy.Parameters getParameters() { return params; }
+        @Override public Provider getProvider() { return p; }
 
-        public Provider getProvider() { return p; }
-
+        @Override
         public PermissionCollection getPermissions(CodeSource codesource) {
             return spi.engineGetPermissions(codesource);
         }
+        @Override
         public PermissionCollection getPermissions(ProtectionDomain domain) {
             return spi.engineGetPermissions(domain);
         }
+        @Override
         public boolean implies(ProtectionDomain domain, Permission perm) {
             return spi.engineImplies(domain, perm);
         }
+        @Override
         public void refresh() {
             spi.engineRefresh();
         }
@@ -803,7 +805,7 @@
          * @exception SecurityException - if this PermissionCollection object
          *                                has been marked readonly
          */
-        public void add(Permission permission) {
+        @Override public void add(Permission permission) {
             perms.add(permission);
         }
 
@@ -816,7 +818,7 @@
          * @return true if "permission" is implied by the  permissions in
          * the collection, false if not.
          */
-        public boolean implies(Permission permission) {
+        @Override public boolean implies(Permission permission) {
             return perms.implies(permission);
         }
 
@@ -826,7 +828,7 @@
          *
          * @return an enumeration of all the Permissions.
          */
-        public Enumeration<Permission> elements() {
+        @Override public Enumeration<Permission> elements() {
             return perms.elements();
         }
     }
--- a/jdk/src/share/classes/java/security/ProtectionDomain.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/security/ProtectionDomain.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  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,9 +25,15 @@
 
 package java.security;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
-import java.util.ArrayList;
+import java.util.Map;
+import java.util.WeakHashMap;
+import sun.misc.JavaSecurityProtectionDomainAccess;
+import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache;
+import sun.misc.SharedSecrets;
 import sun.security.util.Debug;
 import sun.security.util.SecurityConstants;
 
@@ -72,6 +78,11 @@
        or dynamic (via a policy refresh) */
     private boolean staticPermissions;
 
+    /*
+     * An object used as a key when the ProtectionDomain is stored in a Map.
+     */
+    final Key key = new Key();
+
     private static final Debug debug = Debug.getInstance("domain");
 
     /**
@@ -238,7 +249,7 @@
     /**
      * Convert a ProtectionDomain to a String.
      */
-    public String toString() {
+    @Override public String toString() {
         String pals = "<no principals>";
         if (principals != null && principals.length > 0) {
             StringBuilder palBuf = new StringBuilder("(principals ");
@@ -396,4 +407,29 @@
 
         return mergedPerms;
     }
+
+    /**
+     * Used for storing ProtectionDomains as keys in a Map.
+     */
+    final class Key {}
+
+    static {
+        SharedSecrets.setJavaSecurityProtectionDomainAccess(
+            new JavaSecurityProtectionDomainAccess() {
+                public ProtectionDomainCache getProtectionDomainCache() {
+                    return new ProtectionDomainCache() {
+                        private final Map<Key, PermissionCollection> map =
+                            Collections.synchronizedMap
+                                (new WeakHashMap<Key, PermissionCollection>());
+                        public void put(ProtectionDomain pd,
+                            PermissionCollection pc) {
+                            map.put((pd == null ? null : pd.key), pc);
+                        }
+                        public PermissionCollection get(ProtectionDomain pd) {
+                            return pd == null ? map.get(null) : map.get(pd.key);
+                        }
+                    };
+                }
+            });
+    }
 }
--- a/jdk/src/share/classes/java/util/concurrent/Semaphore.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/Semaphore.java	Tue Apr 20 01:24:48 2010 -0700
@@ -191,8 +191,11 @@
 
         protected final boolean tryReleaseShared(int releases) {
             for (;;) {
-                int p = getState();
-                if (compareAndSetState(p, p + releases))
+                int current = getState();
+                int next = current + releases;
+                if (next < current) // overflow
+                    throw new Error("Maximum permit count exceeded");
+                if (compareAndSetState(current, next))
                     return true;
             }
         }
@@ -201,6 +204,8 @@
             for (;;) {
                 int current = getState();
                 int next = current - reductions;
+                if (next > current) // underflow
+                    throw new Error("Permit count underflow");
                 if (compareAndSetState(current, next))
                     return;
             }
--- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java	Tue Apr 20 01:24:48 2010 -0700
@@ -57,7 +57,7 @@
     private long rawIndex(int i) {
         if (i < 0 || i >= array.length)
             throw new IndexOutOfBoundsException("index " + i);
-        return base + i * scale;
+        return base + (long) i * scale;
     }
 
     /**
--- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java	Tue Apr 20 01:24:48 2010 -0700
@@ -56,7 +56,7 @@
     private long rawIndex(int i) {
         if (i < 0 || i >= array.length)
             throw new IndexOutOfBoundsException("index " + i);
-        return base + i * scale;
+        return base + (long) i * scale;
     }
 
     /**
--- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java	Tue Apr 20 01:24:48 2010 -0700
@@ -57,7 +57,7 @@
     private long rawIndex(int i) {
         if (i < 0 || i >= array.length)
             throw new IndexOutOfBoundsException("index " + i);
-        return base + i * scale;
+        return base + (long) i * scale;
     }
 
     /**
--- a/jdk/src/share/classes/java/util/zip/Deflater.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/zip/Deflater.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2009 Sun Microsystems, Inc.  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
@@ -72,7 +72,8 @@
  */
 public
 class Deflater {
-    private long strm;
+
+    private final ZStreamRef zsRef;
     private byte[] buf = new byte[0];
     private int off, len;
     private int level, strategy;
@@ -165,7 +166,7 @@
     public Deflater(int level, boolean nowrap) {
         this.level = level;
         this.strategy = DEFAULT_STRATEGY;
-        strm = init(level, DEFAULT_STRATEGY, nowrap);
+        this.zsRef = new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap));
     }
 
     /**
@@ -193,16 +194,18 @@
      * @param len the length of the data
      * @see Deflater#needsInput
      */
-    public synchronized void setInput(byte[] b, int off, int len) {
+    public void setInput(byte[] b, int off, int len) {
         if (b== null) {
             throw new NullPointerException();
         }
         if (off < 0 || len < 0 || off > b.length - len) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        this.buf = b;
-        this.off = off;
-        this.len = len;
+        synchronized (zsRef) {
+            this.buf = b;
+            this.off = off;
+            this.len = len;
+        }
     }
 
     /**
@@ -227,14 +230,17 @@
      * @see Inflater#inflate
      * @see Inflater#getAdler
      */
-    public synchronized void setDictionary(byte[] b, int off, int len) {
-        if (strm == 0 || b == null) {
+    public void setDictionary(byte[] b, int off, int len) {
+        if (b == null) {
             throw new NullPointerException();
         }
         if (off < 0 || len < 0 || off > b.length - len) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        setDictionary(strm, b, off, len);
+        synchronized (zsRef) {
+            ensureOpen();
+            setDictionary(zsRef.address(), b, off, len);
+        }
     }
 
     /**
@@ -257,7 +263,7 @@
      * @exception IllegalArgumentException if the compression strategy is
      *                                     invalid
      */
-    public synchronized void setStrategy(int strategy) {
+    public void setStrategy(int strategy) {
         switch (strategy) {
           case DEFAULT_STRATEGY:
           case FILTERED:
@@ -266,9 +272,11 @@
           default:
             throw new IllegalArgumentException();
         }
-        if (this.strategy != strategy) {
-            this.strategy = strategy;
-            setParams = true;
+        synchronized (zsRef) {
+            if (this.strategy != strategy) {
+                this.strategy = strategy;
+                setParams = true;
+            }
         }
     }
 
@@ -277,13 +285,15 @@
      * @param level the new compression level (0-9)
      * @exception IllegalArgumentException if the compression level is invalid
      */
-    public synchronized void setLevel(int level) {
+    public void setLevel(int level) {
         if ((level < 0 || level > 9) && level != DEFAULT_COMPRESSION) {
             throw new IllegalArgumentException("invalid compression level");
         }
-        if (this.level != level) {
-            this.level = level;
-            setParams = true;
+        synchronized (zsRef) {
+            if (this.level != level) {
+                this.level = level;
+                setParams = true;
+            }
         }
     }
 
@@ -301,8 +311,10 @@
      * When called, indicates that compression should end with the current
      * contents of the input buffer.
      */
-    public synchronized void finish() {
-        finish = true;
+    public void finish() {
+        synchronized (zsRef) {
+            finish = true;
+        }
     }
 
     /**
@@ -311,8 +323,10 @@
      * @return true if the end of the compressed data output stream has
      * been reached
      */
-    public synchronized boolean finished() {
-        return finished;
+    public boolean finished() {
+        synchronized (zsRef) {
+            return finished;
+        }
     }
 
     /**
@@ -399,26 +413,31 @@
      * @throws IllegalArgumentException if the flush mode is invalid
      * @since 1.7
      */
-    public synchronized int deflate(byte[] b, int off, int len, int flush) {
+    public int deflate(byte[] b, int off, int len, int flush) {
         if (b == null) {
             throw new NullPointerException();
         }
         if (off < 0 || len < 0 || off > b.length - len) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        if (flush == NO_FLUSH || flush == SYNC_FLUSH ||
-            flush == FULL_FLUSH)
-            return deflateBytes(b, off, len, flush);
-        throw new IllegalArgumentException();
+        synchronized (zsRef) {
+            ensureOpen();
+            if (flush == NO_FLUSH || flush == SYNC_FLUSH ||
+                flush == FULL_FLUSH)
+                return deflateBytes(zsRef.address(), b, off, len, flush);
+            throw new IllegalArgumentException();
+        }
     }
 
     /**
      * Returns the ADLER-32 value of the uncompressed data.
      * @return the ADLER-32 value of the uncompressed data
      */
-    public synchronized int getAdler() {
-        ensureOpen();
-        return getAdler(strm);
+    public int getAdler() {
+        synchronized (zsRef) {
+            ensureOpen();
+            return getAdler(zsRef.address());
+        }
     }
 
     /**
@@ -440,9 +459,11 @@
      * @return the total (non-negative) number of uncompressed bytes input so far
      * @since 1.5
      */
-    public synchronized long getBytesRead() {
-        ensureOpen();
-        return getBytesRead(strm);
+    public long getBytesRead() {
+        synchronized (zsRef) {
+            ensureOpen();
+            return getBytesRead(zsRef.address());
+        }
     }
 
     /**
@@ -464,21 +485,25 @@
      * @return the total (non-negative) number of compressed bytes output so far
      * @since 1.5
      */
-    public synchronized long getBytesWritten() {
-        ensureOpen();
-        return getBytesWritten(strm);
+    public long getBytesWritten() {
+        synchronized (zsRef) {
+            ensureOpen();
+            return getBytesWritten(zsRef.address());
+        }
     }
 
     /**
      * Resets deflater so that a new set of input data can be processed.
      * Keeps current compression level and strategy settings.
      */
-    public synchronized void reset() {
-        ensureOpen();
-        reset(strm);
-        finish = false;
-        finished = false;
-        off = len = 0;
+    public void reset() {
+        synchronized (zsRef) {
+            ensureOpen();
+            reset(zsRef.address());
+            finish = false;
+            finished = false;
+            off = len = 0;
+        }
     }
 
     /**
@@ -488,11 +513,14 @@
      * finalize() method. Once this method is called, the behavior
      * of the Deflater object is undefined.
      */
-    public synchronized void end() {
-        if (strm != 0) {
-            end(strm);
-            strm = 0;
-            buf = null;
+    public void end() {
+        synchronized (zsRef) {
+            long addr = zsRef.address();
+            zsRef.clear();
+            if (addr != 0) {
+                end(addr);
+                buf = null;
+            }
         }
     }
 
@@ -504,18 +532,19 @@
     }
 
     private void ensureOpen() {
-        if (strm == 0)
-            throw new NullPointerException();
+        assert Thread.holdsLock(zsRef);
+        if (zsRef.address() == 0)
+            throw new NullPointerException("Deflater has been closed");
     }
 
     private static native void initIDs();
     private native static long init(int level, int strategy, boolean nowrap);
-    private native static void setDictionary(long strm, byte[] b, int off,
-                                             int len);
-    private native int deflateBytes(byte[] b, int off, int len, int flush);
-    private native static int getAdler(long strm);
-    private native static long getBytesRead(long strm);
-    private native static long getBytesWritten(long strm);
-    private native static void reset(long strm);
-    private native static void end(long strm);
+    private native static void setDictionary(long addr, byte[] b, int off, int len);
+    private native int deflateBytes(long addr, byte[] b, int off, int len,
+                                    int flush);
+    private native static int getAdler(long addr);
+    private native static long getBytesRead(long addr);
+    private native static long getBytesWritten(long addr);
+    private native static void reset(long addr);
+    private native static void end(long addr);
 }
--- a/jdk/src/share/classes/java/util/zip/Inflater.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/zip/Inflater.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2009 Sun Microsystems, Inc.  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
@@ -72,7 +72,8 @@
  */
 public
 class Inflater {
-    private long strm;
+
+    private final ZStreamRef zsRef;
     private byte[] buf = defaultBuf;
     private int off, len;
     private boolean finished;
@@ -97,7 +98,7 @@
      * @param nowrap if true then support GZIP compatible compression
      */
     public Inflater(boolean nowrap) {
-        strm = init(nowrap);
+        zsRef = new ZStreamRef(init(nowrap));
     }
 
     /**
@@ -116,16 +117,18 @@
      * @param len the length of the input data
      * @see Inflater#needsInput
      */
-    public synchronized void setInput(byte[] b, int off, int len) {
+    public void setInput(byte[] b, int off, int len) {
         if (b == null) {
             throw new NullPointerException();
         }
         if (off < 0 || len < 0 || off > b.length - len) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        this.buf = b;
-        this.off = off;
-        this.len = len;
+        synchronized (zsRef) {
+            this.buf = b;
+            this.off = off;
+            this.len = len;
+        }
     }
 
     /**
@@ -150,15 +153,18 @@
      * @see Inflater#needsDictionary
      * @see Inflater#getAdler
      */
-    public synchronized void setDictionary(byte[] b, int off, int len) {
-        if (strm == 0 || b == null) {
+    public void setDictionary(byte[] b, int off, int len) {
+        if (b == null) {
             throw new NullPointerException();
         }
         if (off < 0 || len < 0 || off > b.length - len) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        setDictionary(strm, b, off, len);
-        needDict = false;
+        synchronized (zsRef) {
+            ensureOpen();
+            setDictionary(zsRef.address(), b, off, len);
+            needDict = false;
+        }
     }
 
     /**
@@ -180,8 +186,10 @@
      * buffer after decompression has finished.
      * @return the total number of bytes remaining in the input buffer
      */
-    public synchronized int getRemaining() {
-        return len;
+    public int getRemaining() {
+        synchronized (zsRef) {
+            return len;
+        }
     }
 
     /**
@@ -190,8 +198,10 @@
      * to provide more input.
      * @return true if no data remains in the input buffer
      */
-    public synchronized boolean needsInput() {
-        return len <= 0;
+    public boolean needsInput() {
+        synchronized (zsRef) {
+            return len <= 0;
+        }
     }
 
     /**
@@ -199,8 +209,10 @@
      * @return true if a preset dictionary is needed for decompression
      * @see Inflater#setDictionary
      */
-    public synchronized boolean needsDictionary() {
-        return needDict;
+    public boolean needsDictionary() {
+        synchronized (zsRef) {
+            return needDict;
+        }
     }
 
     /**
@@ -209,8 +221,10 @@
      * @return true if the end of the compressed data stream has been
      * reached
      */
-    public synchronized boolean finished() {
-        return finished;
+    public boolean finished() {
+        synchronized (zsRef) {
+            return finished;
+        }
     }
 
     /**
@@ -228,7 +242,7 @@
      * @see Inflater#needsInput
      * @see Inflater#needsDictionary
      */
-    public synchronized int inflate(byte[] b, int off, int len)
+    public int inflate(byte[] b, int off, int len)
         throws DataFormatException
     {
         if (b == null) {
@@ -237,7 +251,10 @@
         if (off < 0 || len < 0 || off > b.length - len) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        return inflateBytes(b, off, len);
+        synchronized (zsRef) {
+            ensureOpen();
+            return inflateBytes(zsRef.address(), b, off, len);
+        }
     }
 
     /**
@@ -261,9 +278,11 @@
      * Returns the ADLER-32 value of the uncompressed data.
      * @return the ADLER-32 value of the uncompressed data
      */
-    public synchronized int getAdler() {
-        ensureOpen();
-        return getAdler(strm);
+    public int getAdler() {
+        synchronized (zsRef) {
+            ensureOpen();
+            return getAdler(zsRef.address());
+        }
     }
 
     /**
@@ -285,9 +304,11 @@
      * @return the total (non-negative) number of compressed bytes input so far
      * @since 1.5
      */
-    public synchronized long getBytesRead() {
-        ensureOpen();
-        return getBytesRead(strm);
+    public long getBytesRead() {
+        synchronized (zsRef) {
+            ensureOpen();
+            return getBytesRead(zsRef.address());
+        }
     }
 
     /**
@@ -309,21 +330,25 @@
      * @return the total (non-negative) number of uncompressed bytes output so far
      * @since 1.5
      */
-    public synchronized long getBytesWritten() {
-        ensureOpen();
-        return getBytesWritten(strm);
+    public long getBytesWritten() {
+        synchronized (zsRef) {
+            ensureOpen();
+            return getBytesWritten(zsRef.address());
+        }
     }
 
     /**
      * Resets inflater so that a new set of input data can be processed.
      */
-    public synchronized void reset() {
-        ensureOpen();
-        reset(strm);
-        buf = defaultBuf;
-        finished = false;
-        needDict = false;
-        off = len = 0;
+    public void reset() {
+        synchronized (zsRef) {
+            ensureOpen();
+            reset(zsRef.address());
+            buf = defaultBuf;
+            finished = false;
+            needDict = false;
+            off = len = 0;
+        }
     }
 
     /**
@@ -333,11 +358,14 @@
      * method. Once this method is called, the behavior of the Inflater
      * object is undefined.
      */
-    public synchronized void end() {
-        if (strm != 0) {
-            end(strm);
-            strm = 0;
-            buf = null;
+    public void end() {
+        synchronized (zsRef) {
+            long addr = zsRef.address();
+            zsRef.clear();
+            if (addr != 0) {
+                end(addr);
+                buf = null;
+            }
         }
     }
 
@@ -349,19 +377,20 @@
     }
 
     private void ensureOpen () {
-        if (strm == 0)
-            throw new NullPointerException();
+        assert Thread.holdsLock(zsRef);
+        if (zsRef.address() == 0)
+            throw new NullPointerException("Inflater has been closed");
     }
 
     private native static void initIDs();
     private native static long init(boolean nowrap);
-    private native static void setDictionary(long strm, byte[] b, int off,
+    private native static void setDictionary(long addr, byte[] b, int off,
                                              int len);
-    private native int inflateBytes(byte[] b, int off, int len)
+    private native int inflateBytes(long addr, byte[] b, int off, int len)
             throws DataFormatException;
-    private native static int getAdler(long strm);
-    private native static long getBytesRead(long strm);
-    private native static long getBytesWritten(long strm);
-    private native static void reset(long strm);
-    private native static void end(long strm);
+    private native static int getAdler(long addr);
+    private native static long getBytesRead(long addr);
+    private native static long getBytesWritten(long addr);
+    private native static void reset(long addr);
+    private native static void end(long addr);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/java/util/zip/ZStreamRef.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.util.zip;
+
+/**
+ * A reference to the native zlib's z_stream structure.
+ */
+
+class ZStreamRef {
+
+    private long address;
+    ZStreamRef (long address) {
+        this.address = address;
+    }
+
+    long address() {
+        return address;
+    }
+
+    void clear() {
+        address = 0;
+    }
+}
--- a/jdk/src/share/classes/java/util/zip/ZipFile.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipFile.java	Tue Apr 20 01:24:48 2010 -0700
@@ -36,6 +36,8 @@
 import java.util.Set;
 import java.util.HashSet;
 import java.util.NoSuchElementException;
+import java.security.AccessController;
+import sun.security.action.GetPropertyAction;
 import static java.util.zip.ZipConstants64.*;
 
 /**
@@ -78,6 +80,17 @@
 
     private static native void initIDs();
 
+    private static final boolean usemmap;
+
+    static {
+        // A system prpperty to disable mmap use to avoid vm crash when
+        // in-use zip file is accidently overwritten by others.
+        String prop = AccessController.doPrivileged(
+            new GetPropertyAction("sun.zip.disableMemoryMapping"));
+        usemmap = (prop == null ||
+                   !(prop.length() == 0 || prop.equalsIgnoreCase("true")));
+    }
+
     /**
      * Opens a zip file for reading.
      *
@@ -196,7 +209,7 @@
             throw new NullPointerException("charset is null");
         this.zc = ZipCoder.get(charset);
         long t0 = System.nanoTime();
-        jzfile = open(name, mode, file.lastModified());
+        jzfile = open(name, mode, file.lastModified(), usemmap);
         sun.misc.PerfCounter.getZipFileOpenTime().addElapsedTimeFrom(t0);
         sun.misc.PerfCounter.getZipFileCount().increment();
         this.name = name;
@@ -673,8 +686,8 @@
     }
 
 
-    private static native long open(String name, int mode, long lastModified)
-        throws IOException;
+    private static native long open(String name, int mode, long lastModified,
+                                    boolean usemmap) throws IOException;
     private static native int getTotal(long jzfile);
     private static native int read(long jzfile, long jzentry,
                                    long pos, byte[] b, int off, int len);
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1271,6 +1271,7 @@
      *
      * @return a String representation of this object.
      **/
+    @Override
     public String toString() {
         return super.toString() + ": connectionId=" + connectionId;
     }
@@ -1514,6 +1515,21 @@
         }
     }
 
+    private static class SetCcl implements PrivilegedExceptionAction<ClassLoader> {
+        private final ClassLoader classLoader;
+
+        SetCcl(ClassLoader classLoader) {
+            this.classLoader = classLoader;
+        }
+
+        public ClassLoader run() {
+            Thread currentThread = Thread.currentThread();
+            ClassLoader old = currentThread.getContextClassLoader();
+            currentThread.setContextClassLoader(classLoader);
+            return old;
+        }
+    }
+
     private static <T> T unwrap(final MarshalledObject<?> mo,
                                 final ClassLoader cl,
                                 final Class<T> wrappedClass)
@@ -1522,22 +1538,14 @@
             return null;
         }
         try {
-            return AccessController.doPrivileged(
-                new PrivilegedExceptionAction<T>() {
-                    public T run()
-                            throws IOException {
-                        final ClassLoader old =
-                            Thread.currentThread().getContextClassLoader();
-                        Thread.currentThread().setContextClassLoader(cl);
-                        try {
-                            return wrappedClass.cast(mo.get());
-                        } catch (ClassNotFoundException cnfe) {
-                            throw new UnmarshalException(cnfe.toString(), cnfe);
-                        } finally {
-                            Thread.currentThread().setContextClassLoader(old);
-                        }
-                    }
-                });
+            final ClassLoader old = AccessController.doPrivileged(new SetCcl(cl));
+            try {
+                return wrappedClass.cast(mo.get());
+            } catch (ClassNotFoundException cnfe) {
+                throw new UnmarshalException(cnfe.toString(), cnfe);
+            } finally {
+                AccessController.doPrivileged(new SetCcl(old));
+            }
         } catch (PrivilegedActionException pe) {
             Exception e = extractException(pe);
             if (e instanceof IOException) {
@@ -1561,14 +1569,14 @@
             return null;
         }
         try {
-            return AccessController.doPrivileged(
-                   new PrivilegedExceptionAction<T>() {
-                       public T run()
-                           throws IOException {
-                           return unwrap(mo, new OrderClassLoaders(cl1, cl2),
-                                         wrappedClass);
-                       }
-                   });
+            ClassLoader orderCL = AccessController.doPrivileged(
+                new PrivilegedExceptionAction<ClassLoader>() {
+                    public ClassLoader run() throws Exception {
+                        return new OrderClassLoaders(cl1, cl2);
+                    }
+                }
+            );
+            return unwrap(mo, orderCL, wrappedClass);
         } catch (PrivilegedActionException pe) {
             Exception e = extractException(pe);
             if (e instanceof IOException) {
--- a/jdk/src/share/classes/javax/net/SocketFactory.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/net/SocketFactory.java	Tue Apr 20 01:24:48 2010 -0700
@@ -27,8 +27,10 @@
 package javax.net;
 
 import java.io.IOException;
-import java.net.*;
-
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.UnknownHostException;
 
 /**
  * This class creates sockets.  It may be subclassed by other factories,
@@ -113,7 +115,17 @@
      * @see java.net.Socket#Socket()
      */
     public Socket createSocket() throws IOException {
-        throw new SocketException("Unconnected sockets not implemented");
+        //
+        // bug 6771432:
+        // The Exception is used by HttpsClient to signal that
+        // unconnected sockets have not been implemented.
+        //
+        UnsupportedOperationException uop = new
+                UnsupportedOperationException();
+        SocketException se =  new SocketException(
+                "Unconnected sockets not implemented");
+        se.initCause(uop);
+        throw se;
     }
 
 
--- a/jdk/src/share/classes/javax/swing/JSplitPane.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/swing/JSplitPane.java	Tue Apr 20 01:24:48 2010 -0700
@@ -246,8 +246,7 @@
      * layout, using two buttons for the components.
      */
     public JSplitPane() {
-        this(JSplitPane.HORIZONTAL_SPLIT,
-            UIManager.getBoolean("SplitPane.continuousLayout"),
+        this(JSplitPane.HORIZONTAL_SPLIT, false,
             new JButton(UIManager.getString("SplitPane.leftButtonText")),
             new JButton(UIManager.getString("SplitPane.rightButtonText")));
     }
@@ -264,8 +263,7 @@
      */
     @ConstructorProperties({"orientation"})
     public JSplitPane(int newOrientation) {
-        this(newOrientation,
-            UIManager.getBoolean("SplitPane.continuousLayout"));
+        this(newOrientation, false);
     }
 
 
@@ -309,9 +307,7 @@
     public JSplitPane(int newOrientation,
                       Component newLeftComponent,
                       Component newRightComponent){
-        this(newOrientation,
-            UIManager.getBoolean("SplitPane.continuousLayout"),
-            newLeftComponent, newRightComponent);
+        this(newOrientation, false, newLeftComponent, newRightComponent);
     }
 
 
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Tue Apr 20 01:24:48 2010 -0700
@@ -762,7 +762,9 @@
      * component's background color to be painted.
      * <li>
      * Installs the default caret and highlighter into the
-     * associated component.
+     * associated component. These properties are only set if their
+     * current value is either {@code null} or an instance of
+     * {@link UIResource}.
      * <li>
      * Attaches to the editor and model.  If there is no
      * model, a default one is created.
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf	Tue Apr 20 01:24:48 2010 -0700
@@ -21276,7 +21276,6 @@
                <uiProperty name="centerOneTouchButtons" type="BOOLEAN" value="true"/>
                <uiProperty name="oneTouchButtonOffset" type="INT" value="30"/>
                <uiProperty name="oneTouchExpandable" type="BOOLEAN" value="false"/>
-               <uiProperty name="continuousLayout" type="BOOLEAN" value="true"/>
             </uiproperties>
          </style>
          <backgroundStates>
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Tue Apr 20 01:24:48 2010 -0700
@@ -648,6 +648,14 @@
         table.put("ColorChooser.swatchesDefaultRecentColor", Color.RED);
         table.put("ColorChooser.swatchesSwatchSize", new Dimension(10, 10));
 
+        // These need to be defined for ImageView.
+        table.put("html.pendingImage", SwingUtilities2.makeIcon(getClass(),
+                                BasicLookAndFeel.class,
+                                "icons/image-delayed.png"));
+        table.put("html.missingImage", SwingUtilities2.makeIcon(getClass(),
+                                BasicLookAndFeel.class,
+                                "icons/image-failed.png"));
+
         // These are needed for PopupMenu.
         table.put("PopupMenu.selectedWindowInputMapBindings", new Object[] {
                   "ESCAPE", "cancel",
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java	Tue Apr 20 01:24:48 2010 -0700
@@ -489,23 +489,6 @@
     }
 
 
-    /**
-     * @inheritDoc
-     */
-    @Override
-    protected void paintTabArea(Graphics g, int tabPlacement,
-                                int selectedIndex) {
-        // This can be invoked from ScrollabeTabPanel
-        Insets insets = tabPane.getInsets();
-        int x = insets.left;
-        int y = insets.top;
-        int width = tabPane.getWidth() - insets.left - insets.right;
-        int height = tabPane.getHeight() - insets.top - insets.bottom;
-
-        paintTabArea(tabAreaContext, g, tabPlacement, selectedIndex,
-                     new Rectangle(x, y, width, height));
-    }
-
     private void paintTabArea(SynthContext ss, Graphics g,
                                 int tabPlacement, int selectedIndex,
                                 Rectangle tabAreaBounds) {
--- a/jdk/src/share/classes/sun/awt/HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/awt/HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -34,7 +34,7 @@
    ExtendedCharsets class, because if we want to have a public HKSCS,
    it probably should be HKSCS_2001 not HKSCS.
 */
-public class HKSCS extends sun.nio.cs.ext.HKSCS {
+public class HKSCS extends sun.nio.cs.ext.MS950_HKSCS_XP {
     public HKSCS () {
         super();
     }
--- a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Tue Apr 20 01:24:48 2010 -0700
@@ -57,6 +57,7 @@
 import sun.awt.SunToolkit;
 import sun.awt.datatransfer.DataTransferer;
 import sun.awt.datatransfer.ToolkitThreadBlockedHandler;
+import sun.security.util.SecurityConstants;
 
 /**
  * <p>
@@ -216,6 +217,18 @@
       throws UnsupportedFlavorException, IOException,
         InvalidDnDOperationException
     {
+
+        SecurityManager sm = System.getSecurityManager();
+        try {
+            if (!dropComplete && sm != null) {
+                sm.checkSystemClipboardAccess();
+            }
+        } catch (Exception e) {
+            Thread currentThread = Thread.currentThread();
+            currentThread.getUncaughtExceptionHandler().uncaughtException(currentThread, e);
+            return null;
+        }
+
         Long lFormat = null;
         Transferable localTransferable = local;
 
--- a/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java	Tue Apr 20 01:24:48 2010 -0700
@@ -333,10 +333,10 @@
         hints = h;
     }
 
-    public native void setICMpixels(int x, int y, int w, int h, int[] lut,
+    private native void setICMpixels(int x, int y, int w, int h, int[] lut,
                                     byte[] pix, int off, int scansize,
                                     IntegerComponentRaster ict);
-    public native int setDiffICM(int x, int y, int w, int h, int[] lut,
+    private native int setDiffICM(int x, int y, int w, int h, int[] lut,
                                  int transPix, int numLut, IndexColorModel icm,
                                  byte[] pix, int off, int scansize,
                                  ByteComponentRaster bct, int chanOff);
@@ -361,6 +361,64 @@
                 }
                 createBufferedImage();
             }
+
+            if (w <= 0 || h <= 0) {
+                return;
+            }
+
+            int biWidth = biRaster.getWidth();
+            int biHeight = biRaster.getHeight();
+
+            int x1 = x+w;  // Overflow protection below
+            int y1 = y+h;  // Overflow protection below
+            if (x < 0) {
+                off -= x;
+                x = 0;
+            } else if (x1 < 0) {
+                x1 = biWidth;  // Must be overflow
+            }
+            if (y < 0) {
+                off -= y*scansize;
+                y = 0;
+            } else if (y1 < 0) {
+                y1 = biHeight;  // Must be overflow
+            }
+            if (x1 > biWidth) {
+                x1 = biWidth;
+            }
+            if (y1 > biHeight) {
+                y1 = biHeight;
+            }
+            if (x >= x1 || y >= y1) {
+                return;
+            }
+            // x,y,x1,y1 are all >= 0, so w,h must be >= 0
+            w = x1-x;
+            h = y1-y;
+            // off is first pixel read so it must be in bounds
+            if (off < 0 || off >= pix.length) {
+                // They overflowed their own array
+                throw new ArrayIndexOutOfBoundsException("Data offset out of bounds.");
+            }
+            // pix.length and off are >= 0 so remainder >= 0
+            int remainder = pix.length - off;
+            if (remainder < w) {
+                // They overflowed their own array
+                throw new ArrayIndexOutOfBoundsException("Data array is too short.");
+            }
+            int num;
+            if (scansize < 0) {
+                num = (off / -scansize) + 1;
+            } else if (scansize > 0) {
+                num = ((remainder-w) / scansize) + 1;
+            } else {
+                num = h;
+            }
+            if (h > num) {
+                // They overflowed their own array.
+                throw new ArrayIndexOutOfBoundsException("Data array is too short.");
+            }
+
             if (isSameCM && (cmodel != model) && (srcLUT != null) &&
                 (model instanceof IndexColorModel) &&
                 (biRaster instanceof ByteComponentRaster))
--- a/jdk/src/share/classes/sun/io/ByteToCharBig5.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/ByteToCharBig5.java	Tue Apr 20 01:24:48 2010 -0700
@@ -26,26 +26,24 @@
 
 package sun.io;
 
+import sun.nio.cs.ext.DoubleByte;
 import sun.nio.cs.ext.Big5;
 
 /**
  * Tables and data to convert Big5 to Unicode
  *
- * @author  ConverterGenerator tool
  */
 
-public class ByteToCharBig5 extends ByteToCharDoubleByte {
+public class ByteToCharBig5 extends ByteToCharDBCS_ASCII {
 
-    private final static Big5 nioCoder = new Big5();
+    private static DoubleByte.Decoder dec =
+        (DoubleByte.Decoder)new Big5().newDecoder();
 
     public String getCharacterEncoding() {
         return "Big5";
     }
 
     public ByteToCharBig5() {
-        super.index1 = nioCoder.getDecoderIndex1();
-        super.index2 = nioCoder.getDecoderIndex2();
-        start = 0x40;
-        end = 0xFE;
+        super(dec);
     }
 }
--- a/jdk/src/share/classes/sun/io/ByteToCharBig5_HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/ByteToCharBig5_HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -25,15 +25,28 @@
 
 package sun.io;
 
-public class ByteToCharBig5_HKSCS extends ByteToCharHKSCS_2001 {
-    ByteToCharBig5 bcBig5 = new ByteToCharBig5();
+import sun.nio.cs.ext.Big5_HKSCS;
+import sun.nio.cs.ext.HKSCS;
+import static sun.nio.cs.CharsetMapping.*;
+
+public class ByteToCharBig5_HKSCS extends ByteToCharDBCS_ASCII {
+
+    protected static HKSCS.Decoder dec =
+        (HKSCS.Decoder)new Big5_HKSCS().newDecoder();
+
 
     public String getCharacterEncoding() {
         return "Big5_HKSCS";
     }
 
-    protected char getUnicode(int byte1, int byte2) {
-        char c = super.getUnicode(byte1, byte2);
-        return (c != REPLACE_CHAR) ? c : bcBig5.getUnicode(byte1, byte2);
+    public ByteToCharBig5_HKSCS() {
+        super(dec);
+    }
+
+    protected char decodeDouble(int byte1, int byte2) {
+        char c = dec.decodeDouble(byte1, byte2);
+        if (c == UNMAPPABLE_DECODING)
+            c = dec.decodeBig5(byte1, byte2);
+        return c;
     }
 }
--- a/jdk/src/share/classes/sun/io/ByteToCharBig5_Solaris.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/ByteToCharBig5_Solaris.java	Tue Apr 20 01:24:48 2010 -0700
@@ -25,49 +25,19 @@
 
 package sun.io;
 
-/*
- *
- *
- *
- *
- */
-public class ByteToCharBig5_Solaris extends ByteToCharBig5 {
-    public ByteToCharBig5_Solaris() {}
+import sun.nio.cs.ext.DoubleByte;
+import sun.nio.cs.ext.Big5_Solaris;
+
+public class ByteToCharBig5_Solaris extends ByteToCharDBCS_ASCII {
+
+    private static DoubleByte.Decoder dec =
+        (DoubleByte.Decoder)new Big5_Solaris().newDecoder();
 
     public String getCharacterEncoding() {
         return "Big5_Solaris";
     }
 
-    protected char getUnicode(int byte1, int byte2) {
-        //
-        char c = super.getUnicode(byte1, byte2);
-        if (c == REPLACE_CHAR) {
-            if (byte1 == 0xf9) {
-                switch (byte2) {
-                    case 0xD6:
-                        c = (char)0x7881;
-                        break;
-                    case 0xD7:
-                        c = (char)0x92B9;
-                        break;
-                    case 0xD8:
-                        c = (char)0x88CF;
-                        break;
-                    case 0xD9:
-                        c = (char)0x58BB;
-                        break;
-                    case 0xDA:
-                        c = (char)0x6052;
-                        break;
-                    case 0xDB:
-                        c = (char)0x7CA7;
-                        break;
-                    case 0xDC:
-                        c = (char)0x5AFA;
-                        break;
-                }
-            }
-        }
-        return c;
+    public ByteToCharBig5_Solaris() {
+        super(dec);
     }
 }
--- a/jdk/src/share/classes/sun/io/ByteToCharHKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright 2001-2007 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.io;
-
-import sun.nio.cs.ext.HKSCS;
-
-/**
- * Tables and data to convert HKSCS to Unicode
- *
- * @author  ConverterGenerator tool
- */
-
-public class ByteToCharHKSCS extends ByteToCharDoubleByte {
-
-    public String getCharacterEncoding() {
-        return "HKSCS";
-    }
-
-    public ByteToCharHKSCS() {
-        super.index1 = HKSCS.getDecoderIndex1();
-        super.index2= HKSCS.getDecoderIndex2();
-        start = 0x40;
-        end = 0xFE;
-    }
-}
--- a/jdk/src/share/classes/sun/io/ByteToCharHKSCS_2001.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright 2003-2007 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package sun.io;
-
-import sun.nio.cs.ext.HKSCS_2001;
-
-/**
- * Tables and data to convert HKSCS (2001 revision) to Unicode
- *
- * @author  ConverterGenerator tool
- */
-
-public class ByteToCharHKSCS_2001 extends ByteToCharDoubleByte {
-
-    public String getCharacterEncoding() {
-        return "HKSCS_2001";
-    }
-
-    public ByteToCharHKSCS_2001() {
-        super.index1 = HKSCS_2001.getDecoderIndex1();
-        super.index2= HKSCS_2001.getDecoderIndex2();
-        start = 0x40;
-        end = 0xFE;
-    }
-}
--- a/jdk/src/share/classes/sun/io/ByteToCharMS950_HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/ByteToCharMS950_HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -25,15 +25,27 @@
 
 package sun.io;
 
-public class ByteToCharMS950_HKSCS extends ByteToCharHKSCS {
-    ByteToCharMS950 bcMS950 = new ByteToCharMS950();
+import sun.nio.cs.ext.HKSCS;
+import sun.nio.cs.ext.MS950_HKSCS;
+import static sun.nio.cs.CharsetMapping.*;
+
+public class ByteToCharMS950_HKSCS extends ByteToCharDBCS_ASCII {
+
+    private static HKSCS.Decoder dec =
+        (HKSCS.Decoder)new MS950_HKSCS().newDecoder();
 
     public String getCharacterEncoding() {
         return "MS950_HKSCS";
     }
 
-    protected char getUnicode(int byte1, int byte2) {
-        char c = super.getUnicode(byte1, byte2);
-        return (c != REPLACE_CHAR) ? c : bcMS950.decodeDouble(byte1, byte2);
+    public ByteToCharMS950_HKSCS() {
+        super(dec);
+    }
+
+    protected char decodeDouble(int byte1, int byte2) {
+        char c = dec.decodeDouble(byte1, byte2);
+        if (c == UNMAPPABLE_DECODING)
+            c = dec.decodeBig5(byte1, byte2);
+        return c;
     }
 }
--- a/jdk/src/share/classes/sun/io/CharToByteBig5.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/CharToByteBig5.java	Tue Apr 20 01:24:48 2010 -0700
@@ -26,24 +26,24 @@
 
 package sun.io;
 
+import sun.nio.cs.ext.DoubleByte;
 import sun.nio.cs.ext.Big5;
 
 /**
  * Tables and data to convert Unicode to Big5
  *
- * @author  ConverterGenerator tool
  */
 
-public class CharToByteBig5 extends CharToByteDoubleByte {
+public class CharToByteBig5 extends CharToByteDBCS_ASCII {
 
-    private static final Big5 nioCoder = new Big5();
+    private static DoubleByte.Encoder enc =
+        (DoubleByte.Encoder)new Big5().newEncoder();
 
     public String getCharacterEncoding() {
         return "Big5";
     }
 
     public CharToByteBig5() {
-        super.index1 = nioCoder.getEncoderIndex1();
-        super.index2 = nioCoder.getEncoderIndex2();
+        super(enc);
     }
 }
--- a/jdk/src/share/classes/sun/io/CharToByteBig5_HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/CharToByteBig5_HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -25,15 +25,18 @@
 
 package sun.io;
 
-public class CharToByteBig5_HKSCS extends CharToByteHKSCS_2001 {
-    CharToByteBig5 cbBig5 = new CharToByteBig5();
+import sun.nio.cs.ext.DoubleByte;
+import sun.nio.cs.ext.Big5_HKSCS;
+
+public class CharToByteBig5_HKSCS extends CharToByteDBCS_ASCII {
+    private static DoubleByte.Encoder enc =
+        (DoubleByte.Encoder)new Big5_HKSCS().newEncoder();
 
     public String getCharacterEncoding() {
         return "Big5_HKSCS";
     }
 
-    protected int getNative(char ch) {
-        int r = super.getNative(ch);
-        return (r != 0) ? r : cbBig5.getNative(ch);
+    public CharToByteBig5_HKSCS() {
+        super(enc);
     }
 }
--- a/jdk/src/share/classes/sun/io/CharToByteBig5_Solaris.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/CharToByteBig5_Solaris.java	Tue Apr 20 01:24:48 2010 -0700
@@ -23,48 +23,21 @@
  * have any questions.
  */
 
-
 package sun.io;
 
-/**
- */
+import sun.nio.cs.ext.DoubleByte;
+import sun.nio.cs.ext.Big5_Solaris;
 
-public class CharToByteBig5_Solaris extends CharToByteBig5 {
+public class CharToByteBig5_Solaris extends CharToByteDBCS_ASCII {
+
+    private static DoubleByte.Encoder enc =
+        (DoubleByte.Encoder)new Big5_Solaris().newEncoder();
 
     public String getCharacterEncoding() {
         return "Big5_Solaris";
     }
 
-    protected int getNative(char ch) {
-        int nativeVal;
-
-        if ((nativeVal = super.getNative(ch)) != 0) {
-            return nativeVal;
-        }
-
-        switch (ch) {
-            case 0x7881:
-                nativeVal = 0xF9D6;
-                break;
-            case 0x92B9:
-                nativeVal = 0xF9D7;
-                break;
-            case 0x88CF:
-                nativeVal = 0xF9D8;
-                break;
-            case 0x58BB:
-                nativeVal = 0xF9D9;
-                break;
-            case 0x6052:
-                nativeVal = 0xF9DA;
-                break;
-            case 0x7CA7:
-                nativeVal = 0xF9DB;
-                break;
-            case 0x5AFA:
-                nativeVal = 0xF9DC;
-                break;
-            }
-        return nativeVal;
+    public CharToByteBig5_Solaris() {
+        super(enc);
     }
 }
--- a/jdk/src/share/classes/sun/io/CharToByteHKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright 2001-2003 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-
-
-package sun.io;
-
-import sun.nio.cs.ext.HKSCS;
-
-/**
- * Tables and data to convert Unicode to HKSCS
- *
- * @author  ConverterGenerator tool
- */
-
-public class CharToByteHKSCS extends CharToByteDoubleByte {
-
-    public String getCharacterEncoding() {
-        return "HKSCS";
-    }
-
-    public CharToByteHKSCS() {
-        super.index1 = HKSCS.getEncoderIndex1();
-        super.index2 = HKSCS.getEncoderIndex2();
-    }
-}
--- a/jdk/src/share/classes/sun/io/CharToByteHKSCS_2001.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright 2003 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-
-
-package sun.io;
-
-import sun.nio.cs.ext.HKSCS_2001;
-
-/**
- * Tables and data to convert Unicode to HKSCS (2001 revision)
- *
- * @author  ConverterGenerator tool
- */
-
-public class CharToByteHKSCS_2001 extends CharToByteDoubleByte {
-
-    public String getCharacterEncoding() {
-        return "HKSCS_2001";
-    }
-
-    public CharToByteHKSCS_2001() {
-        super.index1 = HKSCS_2001.getEncoderIndex1();
-        super.index2 = HKSCS_2001.getEncoderIndex2();
-    }
-}
--- a/jdk/src/share/classes/sun/io/CharToByteMS950_HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/io/CharToByteMS950_HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -25,15 +25,19 @@
 
 package sun.io;
 
-public class CharToByteMS950_HKSCS extends CharToByteHKSCS {
-    CharToByteMS950 cbMS950 = new CharToByteMS950();
+import sun.nio.cs.ext.DoubleByte;
+import sun.nio.cs.ext.MS950_HKSCS;
+
+public class CharToByteMS950_HKSCS extends CharToByteDBCS_ASCII {
+
+    private static DoubleByte.Encoder enc =
+        (DoubleByte.Encoder)new MS950_HKSCS().newEncoder();
 
     public String getCharacterEncoding() {
         return "MS950_HKSCS";
     }
 
-    protected int getNative(char ch) {
-        int r = super.getNative(ch);
-        return (r != 0) ? r : cbMS950.encodeChar(ch);
+    public CharToByteMS950_HKSCS() {
+        super(enc);
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/misc/JavaSecurityProtectionDomainAccess.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package sun.misc;
+
+import java.security.PermissionCollection;
+import java.security.ProtectionDomain;
+
+public interface JavaSecurityProtectionDomainAccess {
+    interface ProtectionDomainCache {
+        void put(ProtectionDomain pd, PermissionCollection pc);
+        PermissionCollection get(ProtectionDomain pd);
+    }
+    /**
+     * Returns the ProtectionDomainCache.
+     */
+    ProtectionDomainCache getProtectionDomainCache();
+}
--- a/jdk/src/share/classes/sun/misc/SharedSecrets.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/misc/SharedSecrets.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  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
@@ -47,6 +47,7 @@
     private static JavaNetAccess javaNetAccess;
     private static JavaNioAccess javaNioAccess;
     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
+    private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess;
 
     public static JavaUtilJarAccess javaUtilJarAccess() {
         if (javaUtilJarAccess == null) {
@@ -113,4 +114,13 @@
         return javaIOFileDescriptorAccess;
     }
 
+    public static void setJavaSecurityProtectionDomainAccess
+        (JavaSecurityProtectionDomainAccess jspda) {
+            javaSecurityProtectionDomainAccess = jspda;
+    }
+
+    public static JavaSecurityProtectionDomainAccess
+        getJavaSecurityProtectionDomainAccess() {
+            return javaSecurityProtectionDomainAccess;
+    }
 }
--- a/jdk/src/share/classes/sun/net/NetworkClient.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/net/NetworkClient.java	Tue Apr 20 01:24:48 2010 -0700
@@ -29,7 +29,6 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
-import java.net.URL;
 import java.net.Proxy;
 import java.util.Arrays;
 import java.security.AccessController;
@@ -157,10 +156,15 @@
                         public Socket run() {
                                        return new Socket(proxy);
                                    }});
-            } else
+            } else if (proxy.type() == Proxy.Type.DIRECT) {
+                s = createSocket();
+            } else {
+                // Still connecting through a proxy
+                // server & port will be the proxy address and port
                 s = new Socket(Proxy.NO_PROXY);
+            }
         } else
-            s = new Socket();
+            s = createSocket();
         // Instance specific timeouts do have priority, that means
         // connectTimeout & readTimeout (-1 means not set)
         // Then global default timeouts
@@ -182,6 +186,15 @@
         return s;
     }
 
+    /**
+     * The following method, createSocket, is provided to allow the
+     * https client to override it so that it may use its socket factory
+     * to create the socket.
+     */
+    protected Socket createSocket() throws IOException {
+        return new java.net.Socket();
+    }
+
     protected InetAddress getLocalAddress() throws IOException {
         if (serverSocket == null)
             throw new IOException("not connected");
--- a/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	Tue Apr 20 01:24:48 2010 -0700
@@ -270,13 +270,17 @@
      * In this case we do not use the path because the protection space
      * is identified by the host:port:realm only
      */
-    static AuthenticationInfo getServerAuth(URL url, String realm, AuthScheme scheme) {
+    static String getServerAuthKey(URL url, String realm, AuthScheme scheme) {
         int port = url.getPort();
         if (port == -1) {
             port = url.getDefaultPort();
         }
         String key = SERVER_AUTHENTICATION + ":" + scheme + ":" + url.getProtocol().toLowerCase()
                      + ":" + url.getHost().toLowerCase() + ":" + port + ":" + realm;
+        return key;
+    }
+
+    static AuthenticationInfo getServerAuth(String key) {
         AuthenticationInfo cached = getAuth(key, null);
         if ((cached == null) && requestIsInProgress (key)) {
             /* check the cache again, it might contain an entry */
@@ -314,9 +318,13 @@
      * Used in response to a challenge. Note, the protocol field is always
      * blank for proxies.
      */
-    static AuthenticationInfo getProxyAuth(String host, int port, String realm, AuthScheme scheme) {
+    static String getProxyAuthKey(String host, int port, String realm, AuthScheme scheme) {
         String key = PROXY_AUTHENTICATION + ":" + scheme + "::" + host.toLowerCase()
                         + ":" + port + ":" + realm;
+        return key;
+    }
+
+    static AuthenticationInfo getProxyAuth(String key) {
         AuthenticationInfo cached = (AuthenticationInfo) cache.get(key, null);
         if ((cached == null) && requestIsInProgress (key)) {
             /* check the cache again, it might contain an entry */
@@ -330,19 +338,20 @@
      * Add this authentication to the cache
      */
     void addToCache() {
-        cache.put (cacheKey(true), this);
+        String key = cacheKey(true);
+        cache.put(key, this);
         if (supportsPreemptiveAuthorization()) {
-            cache.put (cacheKey(false), this);
+            cache.put(cacheKey(false), this);
         }
-        endAuthRequest();
+        endAuthRequest(key);
     }
 
-    void endAuthRequest () {
+    static void endAuthRequest (String key) {
         if (!serializeAuth) {
             return;
         }
         synchronized (requests) {
-            requestCompleted (cacheKey(true));
+            requestCompleted(key);
         }
     }
 
--- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2010 Sun Microsystems, Inc.  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
@@ -249,6 +249,8 @@
     boolean isUserServerAuth;
     boolean isUserProxyAuth;
 
+    String serverAuthKey, proxyAuthKey;
+
     /* Progress source */
     protected ProgressSource pi;
 
@@ -1258,6 +1260,11 @@
                         doingNTLMp2ndStage = false;
                         continue;
                     }
+                } else {
+                    inNegotiateProxy = false;
+                    doingNTLMp2ndStage = false;
+                    if (!isUserProxyAuth)
+                        requests.remove("Proxy-Authorization");
                 }
 
                 // cache proxy authentication info
@@ -1303,7 +1310,7 @@
                             serverAuthentication.getAuthScheme() != NTLM) {
                             if (serverAuthentication.isAuthorizationStale (raw)) {
                                 /* we can retry with the current credentials */
-                                disconnectInternal();
+                                disconnectWeb();
                                 redirects++;
                                 requests.set(serverAuthentication.getHeaderName(),
                                             serverAuthentication.getHeaderValue(url, method));
@@ -1318,7 +1325,7 @@
                         currentServerCredentials = serverAuthentication;
 
                         if (serverAuthentication != null) {
-                            disconnectInternal();
+                            disconnectWeb();
                             redirects++; // don't let things loop ad nauseum
                             setCookieHeader();
                             continue;
@@ -1327,7 +1334,7 @@
                         reset ();
                         /* header not used for ntlm */
                         if (!serverAuthentication.setHeaders(this, null, raw)) {
-                            disconnectInternal();
+                            disconnectWeb();
                             throw new IOException ("Authentication failure");
                         }
                         doingNTLM2ndStage = false;
@@ -1498,11 +1505,11 @@
             }
             throw e;
         } finally {
-            if (respCode == HTTP_PROXY_AUTH && proxyAuthentication != null) {
-                proxyAuthentication.endAuthRequest();
+            if (proxyAuthKey != null) {
+                AuthenticationInfo.endAuthRequest(proxyAuthKey);
             }
-            else if (respCode == HTTP_UNAUTHORIZED && serverAuthentication != null) {
-                serverAuthentication.endAuthRequest();
+            if (serverAuthKey != null) {
+                AuthenticationInfo.endAuthRequest(serverAuthKey);
             }
         }
     }
@@ -1715,8 +1722,8 @@
                                       statusLine + "\"");
             }
         } finally  {
-            if (respCode == HTTP_PROXY_AUTH && proxyAuthentication != null) {
-                proxyAuthentication.endAuthRequest();
+            if (proxyAuthKey != null) {
+                AuthenticationInfo.endAuthRequest(proxyAuthKey);
             }
         }
 
@@ -1832,10 +1839,8 @@
 
             if (realm == null)
                 realm = "";
-            ret = AuthenticationInfo.getProxyAuth(host,
-                                                  port,
-                                                  realm,
-                                                  authScheme);
+            proxyAuthKey = AuthenticationInfo.getProxyAuthKey(host, port, realm, authScheme);
+            ret = AuthenticationInfo.getProxyAuth(proxyAuthKey);
             if (ret == null) {
                 switch (authScheme) {
                 case BASIC:
@@ -1976,7 +1981,8 @@
             domain = p.findValue ("domain");
             if (realm == null)
                 realm = "";
-            ret = AuthenticationInfo.getServerAuth(url, realm, authScheme);
+            serverAuthKey = AuthenticationInfo.getServerAuthKey(url, realm, authScheme);
+            ret = AuthenticationInfo.getServerAuth(serverAuthKey);
             InetAddress addr = null;
             if (ret == null) {
                 try {
@@ -2320,6 +2326,22 @@
     }
 
     /**
+     * Disconnect from the web server at the first 401 error. Do not
+     * disconnect when using a proxy, a good proxy should have already
+     * closed the connection to the web server.
+     */
+    private void disconnectWeb() throws IOException {
+        if (usingProxy()) {
+            responseCode = -1;
+            // clean up, particularly, skip the content part
+            // of a 401 error response
+            reset();
+        } else {
+            disconnectInternal();
+        }
+    }
+
+    /**
      * Disconnect from the server (for internal use)
      */
     private void disconnectInternal() {
--- a/jdk/src/share/classes/sun/net/www/protocol/http/spnego/NegotiateCallbackHandler.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/spnego/NegotiateCallbackHandler.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2010 Sun Microsystems, Inc.  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
@@ -45,43 +45,50 @@
     private String username;
     private char[] password;
 
+    /**
+     * Authenticator asks for username and password in a single prompt,
+     * but CallbackHandler checks one by one. So, no matter which callback
+     * gets handled first, make sure Authenticator is only called once.
+     */
+    private boolean answered;
+
     private final HttpCallerInfo hci;
 
     public NegotiateCallbackHandler(HttpCallerInfo hci) {
         this.hci = hci;
     }
 
+    private void getAnswer() {
+        if (!answered) {
+            answered = true;
+            PasswordAuthentication passAuth =
+                    Authenticator.requestPasswordAuthentication(
+                    hci.host, hci.addr, hci.port, hci.protocol,
+                    hci.prompt, hci.scheme, hci.url, hci.authType);
+            /**
+             * To be compatible with existing callback handler implementations,
+             * when the underlying Authenticator is canceled, username and
+             * password are assigned null. No exception is thrown.
+             */
+            if (passAuth != null) {
+                username = passAuth.getUserName();
+                password = passAuth.getPassword();
+            }
+        }
+    }
+
     public void handle(Callback[] callbacks) throws
             UnsupportedCallbackException, IOException {
         for (int i=0; i<callbacks.length; i++) {
             Callback callBack = callbacks[i];
 
             if (callBack instanceof NameCallback) {
-                if (username == null) {
-                    PasswordAuthentication passAuth =
-                            Authenticator.requestPasswordAuthentication(
-                            hci.host, hci.addr, hci.port, hci.protocol,
-                            hci.prompt, hci.scheme, hci.url, hci.authType);
-                    username = passAuth.getUserName();
-                    password = passAuth.getPassword();
-                }
-                NameCallback nameCallback =
-                        (NameCallback)callBack;
-                nameCallback.setName(username);
-
+                getAnswer();
+                ((NameCallback)callBack).setName(username);
             } else if (callBack instanceof PasswordCallback) {
-                PasswordCallback passwordCallback =
-                        (PasswordCallback)callBack;
-                if (password == null) {
-                    PasswordAuthentication passAuth =
-                            Authenticator.requestPasswordAuthentication(
-                            hci.host, hci.addr, hci.port, hci.protocol,
-                            hci.prompt, hci.scheme, hci.url, hci.authType);
-                    username = passAuth.getUserName();
-                    password = passAuth.getPassword();
-                }
-                passwordCallback.setPassword(password);
-                Arrays.fill(password, ' ');
+                getAnswer();
+                ((PasswordCallback)callBack).setPassword(password);
+                if (password != null) Arrays.fill(password, ' ');
             } else {
                 throw new UnsupportedCallbackException(callBack,
                         "Call back not supported");
--- a/jdk/src/share/classes/sun/net/www/protocol/https/HttpsClient.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/https/HttpsClient.java	Tue Apr 20 01:24:48 2010 -0700
@@ -28,39 +28,24 @@
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.FileInputStream;
 import java.io.PrintStream;
 import java.io.BufferedOutputStream;
 import java.net.Socket;
+import java.net.SocketException;
 import java.net.URL;
 import java.net.UnknownHostException;
-import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Proxy;
 import java.net.CookieHandler;
-import java.net.Authenticator;
-import java.net.PasswordAuthentication;
 import java.security.Principal;
-import java.security.KeyStore;
-import java.security.PrivateKey;
 import java.security.cert.*;
 import java.util.StringTokenizer;
 import java.util.Vector;
-import java.util.Collection;
-import java.util.List;
-import java.util.Iterator;
 import java.security.AccessController;
 
 import javax.security.auth.x500.X500Principal;
 
 import javax.net.ssl.*;
-import sun.security.x509.X500Name;
-import sun.misc.Regexp;
-import sun.misc.RegexpPool;
-import sun.net.www.HeaderParser;
-import sun.net.www.MessageHeader;
 import sun.net.www.http.HttpClient;
 import sun.security.action.*;
 
@@ -125,6 +110,7 @@
     private static final int    httpsPortNumber = 443;
 
     /** Returns the default HTTPS port (443) */
+    @Override
     protected int getDefaultPort() { return httpsPortNumber; }
 
     private HostnameVerifier hv;
@@ -368,11 +354,39 @@
         return sslSocketFactory;
     }
 
+    /**
+     * The following method, createSocket, is defined in NetworkClient
+     * and overridden here so that the socket facroty is used to create
+     * new sockets.
+     */
+    @Override
+    protected Socket createSocket() throws IOException {
+        try {
+            return sslSocketFactory.createSocket();
+        } catch (SocketException se) {
+            //
+            // bug 6771432
+            // javax.net.SocketFactory throws a SocketException with an
+            // UnsupportedOperationException as its cause to indicate that
+            // unconnected sockets have not been implemented.
+            //
+            Throwable t = se.getCause();
+            if (t != null && t instanceof UnsupportedOperationException) {
+                return super.createSocket();
+            } else {
+                throw se;
+            }
+        }
+    }
+
+
+    @Override
     public boolean needsTunneling() {
         return (proxy != null && proxy.type() != Proxy.Type.DIRECT
                 && proxy.type() != Proxy.Type.SOCKS);
     }
 
+    @Override
     public void afterConnect() throws IOException, UnknownHostException {
         if (!isCachedConnection()) {
             SSLSocket s = null;
@@ -383,6 +397,9 @@
                                                         host, port, true);
                 } else {
                     s = (SSLSocket)serverSocket;
+                    if (s instanceof SSLSocketImpl) {
+                        ((SSLSocketImpl)s).setHost(host);
+                    }
                 }
             } catch (IOException ex) {
                 // If we fail to connect through the tunnel, try it
@@ -451,7 +468,6 @@
         //
         // Get authenticated server name, if any
         //
-        boolean done = false;
         String host = url.getHost();
 
         // if IPv6 strip off the "[]"
@@ -467,7 +483,7 @@
 
             // Use ciphersuite to determine whether Kerberos is present.
             if (cipher.startsWith("TLS_KRB5")) {
-                if (!checker.match(host, getPeerPrincipal())) {
+                if (!HostnameChecker.match(host, getPeerPrincipal())) {
                     throw new SSLPeerUnverifiedException("Hostname checker" +
                                 " failed for Kerberos");
                 }
@@ -514,6 +530,7 @@
                               + url.getHost() + ">");
     }
 
+    @Override
     protected void putInKeepAliveCache() {
         kac.put(url, sslSocketFactory, this);
     }
@@ -521,6 +538,7 @@
     /*
      * Close an idle connection to this URL (if it exists in the cache).
      */
+    @Override
     public void closeIdleConnection() {
         HttpClient http = (HttpClient) kac.get(url, sslSocketFactory);
         if (http != null) {
@@ -626,11 +644,12 @@
      * @return the proxy host being used for this client, or null
      *          if we're not going through a proxy
      */
+    @Override
     public String getProxyHostUsed() {
         if (!needsTunneling()) {
             return null;
         } else {
-            return ((InetSocketAddress)proxy.address()).getHostName();
+            return super.getProxyHostUsed();
         }
     }
 
@@ -638,6 +657,7 @@
      * @return the proxy port being used for this client.  Meaningless
      *          if getProxyHostUsed() gives null.
      */
+    @Override
     public int getProxyPortUsed() {
         return (proxy == null || proxy.type() == Proxy.Type.DIRECT ||
                 proxy.type() == Proxy.Type.SOCKS)? -1:
--- a/jdk/src/share/classes/sun/nio/ch/Net.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/Net.java	Tue Apr 20 01:24:48 2010 -0700
@@ -68,6 +68,9 @@
         InetSocketAddress isa = (InetSocketAddress)sa;
         if (isa.isUnresolved())
             throw new UnresolvedAddressException(); // ## needs arg
+        InetAddress addr = isa.getAddress();
+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address))
+            throw new IllegalArgumentException("Invalid address type");
         return isa;
     }
 
--- a/jdk/src/share/classes/sun/nio/cs/Surrogate.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/Surrogate.java	Tue Apr 20 01:24:48 2010 -0700
@@ -78,8 +78,8 @@
      * Tells whether or not the given UCS-4 character is in the Basic
      * Multilingual Plane, and can be represented using a single char.
      */
-    public static boolean isBMP(int uc) {
-        return (int) (char) uc == uc;
+    public static boolean isBMPCodePoint(int uc) {
+        return uc >> 16 == 0;
     }
 
     /**
@@ -290,7 +290,7 @@
          *           error() will return a descriptive result object
          */
         public int generate(int uc, int len, CharBuffer dst) {
-            if (Surrogate.isBMP(uc)) {
+            if (Surrogate.isBMPCodePoint(uc)) {
                 if (Surrogate.is(uc)) {
                     error = CoderResult.malformedForLength(len);
                     return -1;
@@ -334,7 +334,7 @@
          *           error() will return a descriptive result object
          */
         public int generate(int uc, int len, char[] da, int dp, int dl) {
-            if (Surrogate.isBMP(uc)) {
+            if (Surrogate.isBMPCodePoint(uc)) {
                 if (Surrogate.is(uc)) {
                     error = CoderResult.malformedForLength(len);
                     return -1;
--- a/jdk/src/share/classes/sun/nio/cs/ext/Big5.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5508 +0,0 @@
-
-/*
- * Copyright 2002-2003 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-public class Big5
-    extends Charset
-{
-    public Big5() {
-        super("Big5", ExtendedCharsets.aliasesFor("Big5"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof Big5));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public short[] getDecoderIndex1() {
-        return Decoder.index1;
-    }
-
-    public String[] getDecoderIndex2() {
-        return Decoder.index2;
-
-    }
-
-    public short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public String[] getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends DoubleByteDecoder {
-
-        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\u3000"+
-            "\uFF0C\u3001\u3002\uFF0E\u2022\uFF1B\uFF1A\uFF1F"+
-            "\uFF01\uFE30\u2026\u2025\uFE50\uFF64\uFE52\u00B7"+
-            "\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014"+
-            "\uFE33\uFF3F\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36"+
-            "\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A"+
-            "\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E"+
-            "\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42"+
-            "\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D"+
-            "\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B"+
-            "\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606"+
-            "\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3"+
-            "\u2105\u203E\uFFFD\uFF3F\uFFFD\uFE49\uFE4A\uFE4D"+
-            "\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D"+
-            "\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266"+
-            "\u2267\u2260\u221E\u2252\u2261\uFE62\uFE63\uFE64"+
-            "\uFE65\uFE66\u223C\u2229\u222A\u22A5\u2220\u221F"+
-            "\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640"+
-            "\u2642\u2641\u2609\u2191\u2193\u2190\u2192\u2196"+
-            "\u2197\u2199\u2198\u2225\u2223\u2571\u2572\uFF0F"+
-            "\uFF3C\uFF04\u00A5\u3012\u00A2\u00A3\uFF05\uFF20"+
-            "\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D"+
-            "\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159"+
-            "\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE"+
-            "\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588"+
-            "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C"+
-            "\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595"+
-            "\u250C\u2510\u2514\u2518\u256D\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u256E"+
-            "\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3"+
-            "\u25E5\u25E4\u2571\u2572\u2573\uFF10\uFF11\uFF12"+
-            "\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19\u2160"+
-            "\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168"+
-            "\u2169\u3021\u3022\u3023\u3024\u3025\u3026\u3027"+
-            "\u3028\u3029\u5341\u5344\u5345\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\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\u0391\u0392\u0393\u0394\u0395\u0396\u0397"+
-            "\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F"+
-            "\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8"+
-            "\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7"+
-            "\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF"+
-            "\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8"+
-            "\u03C9\u3105\u3106\u3107\u3108\u3109\u310A\u310B"+
-            "\u310C\u310D\u310E\u310F\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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"+
-            "\u02D9\u02C9\u02CA\u02C7\u02CB\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u4E00\u4E59\u4E01\u4E03"+
-            "\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B"+
-            "\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8"+
-            "\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45"+
-            "\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA"+
-            "\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973"+
-            "\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71"+
-            "\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE"+
-            "\u5F0B\u5F13\u624D\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4E11\u4E10\u4E0D"+
-            "\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95"+
-            "\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7"+
-            "\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D"+
-            "\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB"+
-            "\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E"+
-            "\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A"+
-            "\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B"+
-            "\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E"+
-            "\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708"+
-            "\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F"+
-            "\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B"+
-            "\u72AC\u738B\u4E19\u4E16\u4E15\u4E14\u4E18\u4E3B"+
-            "\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6"+
-            "\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189"+
-            "\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F"+
-            "\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361"+
-            "\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC"+
-            "\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6"+
-            "\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB"+
-            "\u56DA\u5916\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u592E\u5931\u5974\u5976"+
-            "\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03"+
-            "\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253"+
-            "\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A"+
-            "\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41"+
-            "\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518"+
-            "\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B"+
-            "\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A"+
-            "\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69"+
-            "\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A"+
-            "\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB"+
-            "\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146"+
-            "\u5148\u5168\u5171\u518D\u51B0\u5217\u5211\u5212"+
-            "\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371"+
-            "\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404"+
-            "\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0"+
-            "\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F"+
-            "\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983"+
-            "\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88"+
-            "\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76"+
-            "\u5E74\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u5F0F\u5F1B\u5FD9\u5FD6\u620E"+
-            "\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9"+
-            "\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734"+
-            "\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57"+
-            "\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D"+
-            "\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8"+
-            "\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033"+
-            "\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC"+
-            "\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840"+
-            "\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F"+
-            "\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50"+
-            "\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46"+
-            "\u4F63\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D"+
-            "\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7"+
-            "\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA"+
-            "\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E"+
-            "\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442"+
-            "\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435"+
-            "\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C"+
-            "\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u5747\u574E\u573E\u5750\u574F\u573B"+
-            "\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999"+
-            "\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C"+
-            "\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41"+
-            "\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C"+
-            "\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62"+
-            "\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB"+
-            "\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280"+
-            "\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273"+
-            "\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286"+
-            "\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F"+
-            "\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"+
-            "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81"+
-            "\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70"+
-            "\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E"+
-            "\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076"+
-            "\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2"+
-            "\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3"+
-            "\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093"+
-            "\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46"+
-            "\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B"+
-            "\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2"+
-            "\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E"+
-            "\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B"+
-            "\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F"+
-            "\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88"+
-            "\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154"+
-            "\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD"+
-            "\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241"+
-            "\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377"+
-            "\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\u5496"+
-            "\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486"+
-            "\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468"+
-            "\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769"+
-            "\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948"+
-            "\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1"+
-            "\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3"+
-            "\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98"+
-            "\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3"+
-            "\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A"+
-            "\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29"+
-            "\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5"+
-            "\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015"+
-            "\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F"+
-            "\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2"+
-            "\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8"+
-            "\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5"+
-            "\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE"+
-            "\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606"+
-            "\u6602\u660E\u6600\u660F\u6615\u660A\u6607\u670D"+
-            "\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777"+
-            "\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E"+
-            "\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23"+
-            "\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3"+
-            "\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2"+
-            "\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE"+
-            "\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA"+
-            "\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7095"+
-            "\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248"+
-            "\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9"+
-            "\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A"+
-            "\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940"+
-            "\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54"+
-            "\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1"+
-            "\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D"+
-            "\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1"+
-            "\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7"+
-            "\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1"+
-            "\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580"+
-            "\u961C\u9640\u963F\u963B\u9644\u9642\u96B9\u96E8"+
-            "\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF"+
-            "\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8"+
-            "\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA"+
-            "\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E"+
-            "\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9"+
-            "\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC"+
-            "\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7"+
-            "\u54C2\u54BD\u54AA\u54C1\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u54C4\u54C8"+
-            "\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF"+
-            "\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793"+
-            "\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF"+
-            "\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01"+
-            "\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01"+
-            "\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D"+
-            "\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D"+
-            "\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89"+
-            "\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070"+
-            "\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064"+
-            "\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE"+
-            "\u62FD\u6307\u62F1\u62F7\u62EF\u62EC\u62FE\u62F4"+
-            "\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625"+
-            "\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624"+
-            "\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6"+
-            "\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA"+
-            "\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2"+
-            "\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7"+
-            "\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C"+
-            "\u6D31\u6D1E\u6D17\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6D3B\u6D3D\u6D3E"+
-            "\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E"+
-            "\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF"+
-            "\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274"+
-            "\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD"+
-            "\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B"+
-            "\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687"+
-            "\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8"+
-            "\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814"+
-            "\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA"+
-            "\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D"+
-            "\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38"+
-            "\u7F8E\u7FBF\u8004\u8010\u800D\u8011\u8036\u80D6"+
-            "\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE"+
-            "\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305"+
-            "\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2"+
-            "\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3"+
-            "\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D"+
-            "\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0"+
-            "\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2"+
-            "\u8FEA\u8FE5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u8FED\u8FEB\u8FE4\u8FE8"+
-            "\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582"+
-            "\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED"+
-            "\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58"+
-            "\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8"+
-            "\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011"+
-            "\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019"+
-            "\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009"+
-            "\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB"+
-            "\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F"+
-            "\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5"+
-            "\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509"+
-            "\u54EE\u54EA\u54E6\u5527\u5507\u54FD\u550F\u5703"+
-            "\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957"+
-            "\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13"+
-            "\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B"+
-            "\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9"+
-            "\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB"+
-            "\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D"+
-            "\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90"+
-            "\u6059\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u6063\u6065\u6050\u6055\u606D"+
-            "\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C"+
-            "\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E"+
-            "\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350"+
-            "\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549"+
-            "\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652"+
-            "\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821"+
-            "\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829"+
-            "\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840"+
-            "\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A"+
-            "\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0"+
-            "\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59"+
-            "\u6D93\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C"+
-            "\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4"+
-            "\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD"+
-            "\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA"+
-            "\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5"+
-            "\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8"+
-            "\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720"+
-            "\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u7825\u782D\u7820\u781F\u7832\u7955"+
-            "\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A"+
-            "\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84"+
-            "\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B"+
-            "\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C"+
-            "\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1"+
-            "\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1"+
-            "\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3"+
-            "\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200"+
-            "\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352"+
-            "\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F"+
-            "\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343";
-
-        private final static String innerIndex1=
-            "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3"+
-            "\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18"+
-            "\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16"+
-            "\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77"+
-            "\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7"+
-            "\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095"+
-            "\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD"+
-            "\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2"+
-            "\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A"+
-            "\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065"+
-            "\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F"+
-            "\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2"+
-            "\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340"+
-            "\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E"+
-            "\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F"+
-            "\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541"+
-            "\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806"+
-            "\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920"+
-            "\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\u5A3C"+
-            "\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4"+
-            "\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C"+
-            "\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11"+
-            "\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38"+
-            "\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE"+
-            "\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99"+
-            "\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089"+
-            "\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6"+
-            "\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0"+
-            "\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398"+
-            "\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8"+
-            "\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380"+
-            "\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559"+
-            "\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B"+
-            "\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664"+
-            "\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF"+
-            "\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897"+
-            "\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D"+
-            "\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\u6BEB\u6BEC"+
-            "\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC"+
-            "\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1"+
-            "\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2"+
-            "\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE"+
-            "\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9"+
-            "\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C"+
-            "\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403"+
-            "\u7406\u73FE\u740D\u74E0\u74F6\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u74F7"+
-            "\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4"+
-            "\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB"+
-            "\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843"+
-            "\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20"+
-            "\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92"+
-            "\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C"+
-            "\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31"+
-            "\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A"+
-            "\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124"+
-            "\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398"+
-            "\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393"+
-            "\u8389\u83A0\u8377\u837B\u837C\u8386\u83A7\u8655"+
-            "\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB"+
-            "\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892"+
-            "\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23"+
-            "\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A"+
-            "\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66"+
-            "\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017"+
-            "\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F"+
-            "\u9022\u9016\u901B\u9014\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u90E8\u90ED"+
-            "\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED"+
-            "\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674"+
-            "\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF"+
-            "\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB"+
-            "\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098"+
-            "\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE"+
-            "\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C"+
-            "\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587"+
-            "\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A"+
-            "\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D"+
-            "\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D"+
-            "\u5820\u58F9\u58FA\u5960\u5A77\u5A9A\u5A7F\u5A92"+
-            "\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0"+
-            "\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD"+
-            "\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2"+
-            "\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1"+
-            "\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0"+
-            "\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100"+
-            "\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9"+
-            "\u63C9\u63C6\u63CD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u63D2\u63E3\u63D0"+
-            "\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB"+
-            "\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591"+
-            "\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691"+
-            "\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA"+
-            "\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE"+
-            "\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D"+
-            "\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A"+
-            "\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C"+
-            "\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20"+
-            "\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E"+
-            "\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43"+
-            "\u6E1D\u6E3E\u6ECB\u6E89\u6E19\u6E4E\u6E63\u6E44"+
-            "\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121"+
-            "\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325"+
-            "\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435"+
-            "\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526"+
-            "\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE"+
-            "\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F"+
-            "\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05"+
-            "\u7A00\u7A98\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u7A97\u7A96\u7AE5\u7AE3"+
-            "\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B"+
-            "\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55"+
-            "\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73"+
-            "\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154"+
-            "\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153"+
-            "\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0"+
-            "\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A"+
-            "\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E"+
-            "\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9"+
-            "\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1"+
-            "\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E"+
-            "\u8A3C\u8A41\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A"+
-            "\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD"+
-            "\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8"+
-            "\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1"+
-            "\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E"+
-            "\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109"+
-            "\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209"+
-            "\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B"+
-            "\u9591\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u9593\u9592\u958E\u968A\u968E"+
-            "\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1"+
-            "\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805"+
-            "\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED"+
-            "\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5"+
-            "\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF"+
-            "\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2"+
-            "\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC"+
-            "\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5"+
-            "\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858"+
-            "\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862"+
-            "\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD"+
-            "\u5ABC\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79"+
-            "\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F"+
-            "\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E"+
-            "\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106"+
-            "\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D"+
-            "\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416"+
-            "\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687"+
-            "\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u695A\u6977\u6960\u6954\u6975\u6930"+
-            "\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986"+
-            "\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3"+
-            "\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D"+
-            "\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1"+
-            "\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E"+
-            "\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166"+
-            "\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252"+
-            "\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F"+
-            "\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578"+
-            "\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4"+
-            "\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"+
-            "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE"+
-            "\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891"+
-            "\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C"+
-            "\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77"+
-            "\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93"+
-            "\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A"+
-            "\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084"+
-            "\u8171\u8170\u8178\u8165\u816E\u8173\u816B\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u8179\u817A\u8166\u8205\u8247\u8482\u8477"+
-            "\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B"+
-            "\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E"+
-            "\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE"+
-            "\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4"+
-            "\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2"+
-            "\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70"+
-            "\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62"+
-            "\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A"+
-            "\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2"+
-            "\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA"+
-            "\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\u8F9F"+
-            "\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055"+
-            "\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041"+
-            "\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257"+
-            "\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251"+
-            "\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598"+
-            "\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7"+
-            "\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811"+
-            "\u9813\u980A\u9812\u980C\u98FC\u98F4\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82"+
-            "\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED"+
-            "\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162"+
-            "\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B"+
-            "\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7"+
-            "\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875"+
-            "\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD"+
-            "\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9"+
-            "\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1"+
-            "\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62"+
-            "\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3"+
-            "\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\u613F\u614B"+
-            "\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A"+
-            "\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451"+
-            "\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6"+
-            "\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE"+
-            "\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0"+
-            "\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C"+
-            "\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E"+
-            "\u6F20\u6F2C\u6F0F\u6F02\u6F22\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6EFF"+
-            "\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B"+
-            "\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7"+
-            "\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292"+
-            "\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D"+
-            "\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1"+
-            "\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7"+
-            "\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31"+
-            "\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75"+
-            "\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9"+
-            "\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0"+
-            "\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5"+
-            "\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\u7F70\u7FE0\u7FE1"+
-            "\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188"+
-            "\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E"+
-            "\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2"+
-            "\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1"+
-            "\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718"+
-            "\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8"+
-            "\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3"+
-            "\u8A8D\u8AA1\u8A93\u8AA4\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8AAA\u8AA5"+
-            "\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C"+
-            "\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14"+
-            "\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063"+
-            "\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E"+
-            "\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298"+
-            "\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1"+
-            "\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B"+
-            "\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818"+
-            "\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF"+
-            "\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC"+
-            "\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102"+
-            "\u5108\u5109\u5105\u51DC\u5287\u5288\u5289\u528D"+
-            "\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F"+
-            "\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F"+
-            "\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9"+
-            "\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08"+
-            "\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94"+
-            "\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3"+
-            "\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E"+
-            "\u615D\u6155\u6182\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u617C\u6170\u616B"+
-            "\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4"+
-            "\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2"+
-            "\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492"+
-            "\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3"+
-            "\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23"+
-            "\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13"+
-            "\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E"+
-            "\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66"+
-            "\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A"+
-            "\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F"+
-            "\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357"+
-            "\u7469\u748B\u7483\u747E\u7480\u757F\u7620\u7629"+
-            "\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4"+
-            "\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA"+
-            "\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40"+
-            "\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4"+
-            "\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0"+
-            "\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3"+
-            "\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75"+
-            "\u7F77\u7FAF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u7FE9\u8026\u819B\u819C"+
-            "\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE"+
-            "\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC"+
-            "\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766"+
-            "\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D"+
-            "\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2"+
-            "\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2"+
-            "\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C"+
-            "\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED"+
-            "\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3"+
-            "\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21"+
-            "\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A"+
-            "\u8F1C\u8F1E\u8F25\u9069\u906E\u9068\u906D\u9077"+
-            "\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183"+
-            "\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3"+
-            "\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704"+
-            "\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821"+
-            "\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD"+
-            "\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7"+
-            "\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06"+
-            "\u9D09\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u9D03\u9EA9\u9EBE\u9ECE\u58A8"+
-            "\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA"+
-            "\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669"+
-            "\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C"+
-            "\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D"+
-            "\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9"+
-            "\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5"+
-            "\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2"+
-            "\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9"+
-            "\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59"+
-            "\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47"+
-            "\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1"+
-            "\u6FA1\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9"+
-            "\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2"+
-            "\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4"+
-            "\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C"+
-            "\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E"+
-            "\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D"+
-            "\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9"+
-            "\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D"+
-            "\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028"+
-            "\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A"+
-            "\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A"+
-            "\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A"+
-            "\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA"+
-            "\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01"+
-            "\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D"+
-            "\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35"+
-            "\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074"+
-            "\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336"+
-            "\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A";
-
-        private final static String innerIndex2=
-            "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7"+
-            "\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713"+
-            "\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B"+
-            "\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B"+
-            "\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB"+
-            "\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12"+
-            "\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121"+
-            "\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A"+
-            "\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8"+
-            "\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB"+
-            "\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6"+
-            "\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6"+
-            "\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E"+
-            "\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8"+
-            "\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80"+
-            "\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF"+
-            "\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235"+
-            "\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646"+
-            "\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\u77A7"+
-            "\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7"+
-            "\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C"+
-            "\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD"+
-            "\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D"+
-            "\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F"+
-            "\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F"+
-            "\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD"+
-            "\u81C9\u81BE\u81E8\u8209\u8271\u85AA\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587"+
-            "\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6"+
-            "\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944"+
-            "\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A"+
-            "\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA"+
-            "\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48"+
-            "\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D"+
-            "\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C"+
-            "\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318"+
-            "\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB"+
-            "\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E"+
-            "\u97A0\u97D3\u9846\u98B6\u9935\u9A01\u99FF\u9BAE"+
-            "\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE"+
-            "\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE"+
-            "\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2"+
-            "\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726"+
-            "\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF"+
-            "\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA"+
-            "\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375"+
-            "\u74A7\u74BF\u7515\u7656\u7658\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7652"+
-            "\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62"+
-            "\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23"+
-            "\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52"+
-            "\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF"+
-            "\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA"+
-            "\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2"+
-            "\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59"+
-            "\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D"+
-            "\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A"+
-            "\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A"+
-            "\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9"+
-            "\u96DB\u96DE\u9724\u97A3\u97A6\u97AD\u97F9\u984D"+
-            "\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D"+
-            "\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E"+
-            "\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D"+
-            "\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF"+
-            "\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5"+
-            "\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3"+
-            "\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206"+
-            "\u720D\u7258\u72A2\u7378\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u737A\u74BD"+
-            "\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919"+
-            "\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37"+
-            "\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73"+
-            "\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5"+
-            "\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE"+
-            "\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49"+
-            "\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C"+
-            "\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E"+
-            "\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF"+
-            "\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8"+
-            "\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727"+
-            "\u9761\u97DC\u97FB\u985E\u9858\u985B\u98BC\u9945"+
-            "\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB"+
-            "\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93"+
-            "\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4"+
-            "\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518"+
-            "\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032"+
-            "\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C"+
-            "\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0"+
-            "\u8FAE\u7E7D\u7E7C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7E82\u7F4C\u8000"+
-            "\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B"+
-            "\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70"+
-            "\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89"+
-            "\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD"+
-            "\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30"+
-            "\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F"+
-            "\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2"+
-            "\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595"+
-            "\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7"+
-            "\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC"+
-            "\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A"+
-            "\u896C\u89BD\u8B74\u8B77\u8B7D\u8D13\u8E8A\u8E8D"+
-            "\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A"+
-            "\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF"+
-            "\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF"+
-            "\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8"+
-            "\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B"+
-            "\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF"+
-            "\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A"+
-            "\u766E\u766C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u79B3\u7C60\u7C5F\u807E"+
-            "\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17"+
-            "\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D"+
-            "\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2"+
-            "\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34"+
-            "\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B"+
-            "\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65"+
-            "\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A"+
-            "\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C"+
-            "\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57"+
-            "\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E"+
-            "\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862"+
-            "\u8B93\u8B92\u8B96\u8277\u8D1B\u91C0\u946A\u9742"+
-            "\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F"+
-            "\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3"+
-            "\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1"+
-            "\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064"+
-            "\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C"+
-            "\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7"+
-            "\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E"+
-            "\u7C72\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u30FE\u309D\u309E\u3005\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\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"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC"+
-            "\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4"+
-            "\u30F5\u30F6\u0414\u0415\u0401\u0416\u0417\u0418"+
-            "\u0419\u041A\u041B\u041C\u0423\u0424\u0425\u0426"+
-            "\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E"+
-            "\u042F\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\u2460\u2461\u2462\u2463\u2464\u2465"+
-            "\u2466\u2467\u2468\u2469\u2474\u2475\u2476\u2477"+
-            "\u2478\u2479\u247A\u247B\u247C\u247D\uFFFD\uFFFD"+
-            "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47"+
-            "\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E"+
-            "\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C"+
-            "\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3"+
-            "\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9"+
-            "\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723"+
-            "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73"+
-            "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A"+
-            "\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14"+
-            "\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22"+
-            "\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210"+
-            "\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF"+
-            "\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B"+
-            "\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A"+
-            "\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74"+
-            "\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266"+
-            "\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E"+
-            "\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18"+
-            "\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\u6C4C"+
-            "\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75"+
-            "\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E"+
-            "\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620"+
-            "\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E"+
-            "\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F"+
-            "\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE"+
-            "\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A"+
-            "\u5454\u5445\u5419\u541C\u5425\u5418\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7"+
-            "\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906"+
-            "\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990"+
-            "\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D"+
-            "\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93"+
-            "\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88"+
-            "\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0"+
-            "\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA"+
-            "\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C"+
-            "\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270"+
-            "\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0"+
-            "\u65F4\u65F3\u65F2\u65F5\u6745\u6747\u6759\u6755"+
-            "\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19"+
-            "\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71"+
-            "\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66"+
-            "\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF"+
-            "\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397"+
-            "\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681"+
-            "\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290"+
-            "\u828F\u8285\u828E\u8291\u8293\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u828A"+
-            "\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5"+
-            "\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33"+
-            "\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74"+
-            "\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79"+
-            "\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82"+
-            "\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232"+
-            "\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392"+
-            "\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B"+
-            "\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F"+
-            "\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9"+
-            "\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780"+
-            "\u5775\u577B\u5773\u5774\u5762\u5768\u577D\u590C"+
-            "\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1"+
-            "\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8"+
-            "\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47"+
-            "\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F"+
-            "\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6"+
-            "\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23"+
-            "\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D"+
-            "\u6026\u6019\u6032\u600B\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6034\u600A"+
-            "\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010"+
-            "\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D"+
-            "\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE"+
-            "\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8"+
-            "\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603"+
-            "\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A"+
-            "\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786"+
-            "\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799"+
-            "\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80"+
-            "\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9"+
-            "\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA"+
-            "\u6CC3\u6CC6\u6CED\u6CF2\u6CD2\u6CDD\u6CB4\u6C8A"+
-            "\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0"+
-            "\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093"+
-            "\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A"+
-            "\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA"+
-            "\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0"+
-            "\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C"+
-            "\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC"+
-            "\u77F9\u77FB\u77FA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u77F7\u7942\u793F"+
-            "\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F"+
-            "\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0"+
-            "\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC"+
-            "\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4"+
-            "\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56"+
-            "\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2"+
-            "\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A"+
-            "\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1"+
-            "\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6"+
-            "\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2"+
-            "\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1"+
-            "\u54AD\u54A5\u54CF\u54C3\u830D\u54B7\u54AE\u54D6"+
-            "\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE"+
-            "\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C"+
-            "\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5"+
-            "\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE"+
-            "\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4"+
-            "\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE"+
-            "\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7"+
-            "\u5CCB\u5CDB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u5CDE\u5CDA\u5CC9\u5CC7"+
-            "\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE"+
-            "\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24"+
-            "\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E"+
-            "\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045"+
-            "\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F"+
-            "\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF"+
-            "\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F"+
-            "\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315"+
-            "\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621"+
-            "\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A"+
-            "\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2"+
-            "\u67C8\u67BA\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7"+
-            "\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7"+
-            "\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0"+
-            "\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB"+
-            "\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82"+
-            "\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28"+
-            "\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA"+
-            "\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D"+
-            "\u6D42\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u6D01\u6D18\u6D37\u6D03\u6D0F"+
-            "\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10"+
-            "\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5"+
-            "\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E"+
-            "\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3"+
-            "\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5"+
-            "\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8"+
-            "\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA"+
-            "\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7"+
-            "\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805"+
-            "\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C"+
-            "\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE"+
-            "\u7A80\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79"+
-            "\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91"+
-            "\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8"+
-            "\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3"+
-            "\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6"+
-            "\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307"+
-            "\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC"+
-            "\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u82E4\u82E0\u82FA\u82F3\u82ED\u8677"+
-            "\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869"+
-            "\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0"+
-            "\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB"+
-            "\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A"+
-            "\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B"+
-            "\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017"+
-            "\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A"+
-            "\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261"+
-            "\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E"+
-            "\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4"+
-            "\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1";
-
-        private final static String innerIndex3=
-            "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B"+
-            "\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6"+
-            "\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9"+
-            "\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15"+
-            "\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD"+
-            "\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1"+
-            "\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA"+
-            "\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u6041\u60A2\u6088\u6080\u6092\u6081\u609D"+
-            "\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219"+
-            "\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336"+
-            "\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341"+
-            "\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A"+
-            "\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6"+
-            "\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712"+
-            "\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B"+
-            "\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F"+
-            "\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828"+
-            "\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D"+
-            "\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\u6BE8"+
-            "\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76"+
-            "\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91"+
-            "\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97"+
-            "\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B"+
-            "\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75"+
-            "\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2"+
-            "\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6"+
-            "\u70C7\u70DA\u70CE\u70E1\u7242\u7278\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3"+
-            "\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7"+
-            "\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA"+
-            "\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521"+
-            "\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF"+
-            "\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713"+
-            "\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727"+
-            "\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B"+
-            "\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F"+
-            "\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE"+
-            "\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85"+
-            "\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\u7B04\u7B13"+
-            "\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84"+
-            "\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D"+
-            "\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F"+
-            "\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96"+
-            "\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA"+
-            "\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F"+
-            "\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356"+
-            "\u833F\u8341\u8326\u831C\u8322\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8342"+
-            "\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324"+
-            "\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353"+
-            "\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2"+
-            "\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686"+
-            "\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695"+
-            "\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D"+
-            "\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883"+
-            "\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4"+
-            "\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3"+
-            "\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6"+
-            "\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8"+
-            "\u90DB\u90D7\u90DC\u90E4\u9150\u914E\u914F\u91D5"+
-            "\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F"+
-            "\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B"+
-            "\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062"+
-            "\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046"+
-            "\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D"+
-            "\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576"+
-            "\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536"+
-            "\u5535\u5530\u5552\u5545\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u550C\u5532"+
-            "\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B"+
-            "\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4"+
-            "\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF"+
-            "\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E"+
-            "\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0"+
-            "\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E"+
-            "\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53"+
-            "\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48"+
-            "\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47"+
-            "\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0"+
-            "\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28"+
-            "\u5D0D\u5D26\u5D25\u5D0F\u5D30\u5D12\u5D23\u5D1F"+
-            "\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3"+
-            "\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086"+
-            "\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9"+
-            "\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3"+
-            "\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD"+
-            "\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387"+
-            "\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C"+
-            "\u63A4\u633B\u639F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6378\u6385\u6381"+
-            "\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B"+
-            "\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C"+
-            "\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC"+
-            "\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C"+
-            "\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896"+
-            "\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C"+
-            "\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F"+
-            "\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3"+
-            "\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00"+
-            "\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD"+
-            "\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5"+
-            "\u6DC2\u6DCF\u6DC9\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7"+
-            "\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4"+
-            "\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106"+
-            "\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E"+
-            "\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318"+
-            "\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8"+
-            "\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC"+
-            "\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE"+
-            "\u75D2\u75CF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u75CB\u75CC\u75D1\u75D0"+
-            "\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732"+
-            "\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852"+
-            "\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964"+
-            "\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA"+
-            "\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47"+
-            "\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A"+
-            "\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A"+
-            "\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38"+
-            "\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E"+
-            "\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D"+
-            "\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF"+
-            "\u7FC9\u801F\u801E\u801B\u8047\u8043\u8048\u8118"+
-            "\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121"+
-            "\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A"+
-            "\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A"+
-            "\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375"+
-            "\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA"+
-            "\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F"+
-            "\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF"+
-            "\u86B7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u86C2\u86C1\u86C5\u86BA\u86B0"+
-            "\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC"+
-            "\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2"+
-            "\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899"+
-            "\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982"+
-            "\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39"+
-            "\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79"+
-            "\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD"+
-            "\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C"+
-            "\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3"+
-            "\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153"+
-            "\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9"+
-            "\u91EA\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588"+
-            "\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804"+
-            "\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3"+
-            "\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082"+
-            "\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591"+
-            "\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588"+
-            "\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C"+
-            "\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u5819\u581E\u5827\u5823\u5828\u57F5"+
-            "\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E"+
-            "\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94"+
-            "\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5"+
-            "\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83"+
-            "\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93"+
-            "\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE"+
-            "\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F"+
-            "\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D"+
-            "\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32"+
-            "\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5"+
-            "\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"+
-            "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC"+
-            "\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104"+
-            "\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8"+
-            "\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5"+
-            "\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4"+
-            "\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0"+
-            "\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568"+
-            "\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u667C\u666C\u667B\u6680\u6671\u6679\u666A"+
-            "\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC"+
-            "\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6"+
-            "\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970"+
-            "\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD"+
-            "\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD"+
-            "\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915"+
-            "\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97"+
-            "\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC"+
-            "\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45"+
-            "\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33"+
-            "\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\u6E68"+
-            "\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39"+
-            "\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77"+
-            "\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120"+
-            "\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122"+
-            "\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288"+
-            "\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322"+
-            "\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335"+
-            "\u730C\u742E\u742C\u7430\u742B\u7416\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429"+
-            "\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA"+
-            "\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692"+
-            "\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E"+
-            "\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C"+
-            "\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E"+
-            "\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03"+
-            "\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44"+
-            "\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E"+
-            "\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67"+
-            "\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69"+
-            "\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\u7F66\u7FA2"+
-            "\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4"+
-            "\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A"+
-            "\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D"+
-            "\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8"+
-            "\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8"+
-            "\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF"+
-            "\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F"+
-            "\u83DE\u8411\u8406\u83C2\u83F3\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u83D5"+
-            "\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE"+
-            "\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8"+
-            "\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB"+
-            "\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856"+
-            "\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6"+
-            "\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998"+
-            "\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59"+
-            "\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51"+
-            "\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE"+
-            "\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3"+
-            "\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8"+
-            "\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\u8EF9\u8EE6\u8EEE"+
-            "\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC"+
-            "\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104"+
-            "\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107"+
-            "\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201"+
-            "\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200"+
-            "\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C"+
-            "\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C"+
-            "\u9590\u9687\u967E\u9688\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9689\u9683"+
-            "\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770"+
-            "\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84"+
-            "\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4"+
-            "\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9"+
-            "\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3"+
-            "\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4"+
-            "\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2"+
-            "\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853"+
-            "\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E"+
-            "\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC"+
-            "\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0"+
-            "\u5ABF\u5AC8\u5ABB\u5AC6\u5AB7\u5AC0\u5ACA\u5AB4"+
-            "\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F"+
-            "\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E"+
-            "\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D"+
-            "\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF"+
-            "\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132"+
-            "\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168"+
-            "\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412"+
-            "\u6409\u6420\u6424\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6433\u6443\u641F"+
-            "\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426"+
-            "\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440"+
-            "\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E"+
-            "\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B"+
-            "\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938"+
-            "\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942"+
-            "\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933"+
-            "\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F"+
-            "\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B"+
-            "\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B"+
-            "\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B"+
-            "\uFA0D\u6BFB\u6BFC\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6"+
-            "\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1"+
-            "\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7"+
-            "\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC"+
-            "\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF"+
-            "\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154"+
-            "\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178"+
-            "\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F"+
-            "\u7150\u7153\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u7144\u714D\u715A\u724F"+
-            "\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B"+
-            "\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452"+
-            "\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446"+
-            "\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579"+
-            "\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC"+
-            "\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD"+
-            "\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756"+
-            "\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887"+
-            "\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1"+
-            "\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982"+
-            "\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15"+
-            "\u7A22\u7A13\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB"+
-            "\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73"+
-            "\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4"+
-            "\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A"+
-            "\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D"+
-            "\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5"+
-            "\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C"+
-            "\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167"+
-            "\u816F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u8144\u8161\u821D\u8249\u8244"+
-            "\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479"+
-            "\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430"+
-            "\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507"+
-            "\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432"+
-            "\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F"+
-            "\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E"+
-            "\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B"+
-            "\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C"+
-            "\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701"+
-            "\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE"+
-            "\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5"+
-            "\u89E4\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86"+
-            "\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83"+
-            "\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64"+
-            "\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91"+
-            "\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92"+
-            "\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3"+
-            "\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01"+
-            "\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u9044\u9049\u903D\u9110\u910D\u910F"+
-            "\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248"+
-            "\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283"+
-            "\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267"+
-            "\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250"+
-            "\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C"+
-            "\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA"+
-            "\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F"+
-            "\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0"+
-            "\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80"+
-            "\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA"+
-            "\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0";
-
-        private final static String innerIndex4=
-            "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627"+
-            "\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613"+
-            "\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C"+
-            "\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A"+
-            "\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894"+
-            "\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA"+
-            "\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC"+
-            "\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A"+
-            "\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D"+
-            "\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7"+
-            "\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43"+
-            "\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173"+
-            "\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A"+
-            "\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227"+
-            "\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472"+
-            "\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E"+
-            "\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C"+
-            "\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0"+
-            "\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\u69A0"+
-            "\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E"+
-            "\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD"+
-            "\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993"+
-            "\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5"+
-            "\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0"+
-            "\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25"+
-            "\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A"+
-            "\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C"+
-            "\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6"+
-            "\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08"+
-            "\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F"+
-            "\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295"+
-            "\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471"+
-            "\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D"+
-            "\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614"+
-            "\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F"+
-            "\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E"+
-            "\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998"+
-            "\u798A\u798B\u7996\u7995\u7994\u7993\u7997\u7988"+
-            "\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26"+
-            "\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91"+
-            "\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98"+
-            "\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA"+
-            "\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5"+
-            "\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9"+
-            "\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9"+
-            "\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8024"+
-            "\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C"+
-            "\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE"+
-            "\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD"+
-            "\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2"+
-            "\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6"+
-            "\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB"+
-            "\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740"+
-            "\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741"+
-            "\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712"+
-            "\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724"+
-            "\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA"+
-            "\u88FE\u88EE\u88FC\u88F6\u88FB\u88F0\u88EC\u88EB"+
-            "\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB"+
-            "\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69"+
-            "\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D"+
-            "\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00"+
-            "\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120"+
-            "\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A"+
-            "\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A"+
-            "\u92A0\u9294\u92AA\u928D\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u92A6\u929A"+
-            "\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282"+
-            "\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C"+
-            "\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D"+
-            "\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783"+
-            "\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD"+
-            "\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C"+
-            "\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1"+
-            "\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1"+
-            "\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106"+
-            "\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B"+
-            "\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641"+
-            "\u564A\u5649\u5646\u5658\u565A\u5640\u5633\u563D"+
-            "\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D"+
-            "\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF"+
-            "\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02"+
-            "\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97"+
-            "\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1"+
-            "\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB"+
-            "\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1"+
-            "\u61B0\u61A2\u6189\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u619B\u6193\u61AF"+
-            "\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3"+
-            "\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C"+
-            "\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1"+
-            "\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5"+
-            "\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06"+
-            "\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF"+
-            "\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE"+
-            "\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D"+
-            "\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6"+
-            "\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2"+
-            "\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E"+
-            "\u6F87\u6FC6\u6F92\u6F8D\u6F89\u6F8C\u6F62\u6F4F"+
-            "\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72"+
-            "\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61"+
-            "\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F"+
-            "\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B"+
-            "\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E"+
-            "\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A"+
-            "\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361"+
-            "\u735A\u7359\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u7362\u7487\u7489\u748A"+
-            "\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508"+
-            "\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623"+
-            "\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D"+
-            "\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1"+
-            "\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1"+
-            "\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4"+
-            "\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9"+
-            "\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB"+
-            "\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6"+
-            "\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD"+
-            "\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067"+
-            "\u81A3\u819F\u819E\u8195\u81A2\u8199\u8197\u8216"+
-            "\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B"+
-            "\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A"+
-            "\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4"+
-            "\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512"+
-            "\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502"+
-            "\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0"+
-            "\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F"+
-            "\u8662\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u8756\u8763\u8764\u8777\u87E1"+
-            "\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751"+
-            "\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F"+
-            "\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775"+
-            "\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B"+
-            "\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909"+
-            "\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6"+
-            "\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE"+
-            "\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E"+
-            "\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD"+
-            "\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25"+
-            "\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26"+
-            "\u8E27\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A"+
-            "\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17"+
-            "\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129"+
-            "\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181"+
-            "\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9"+
-            "\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD"+
-            "\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6"+
-            "\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u92B5\u92E1\u92C6\u92B4\u957C\u95AC"+
-            "\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708"+
-            "\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E"+
-            "\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2"+
-            "\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC"+
-            "\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8"+
-            "\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2"+
-            "\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76"+
-            "\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD"+
-            "\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05"+
-            "\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117"+
-            "\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"+
-            "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C"+
-            "\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC"+
-            "\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10"+
-            "\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1"+
-            "\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2"+
-            "\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9"+
-            "\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8"+
-            "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF"+
-            "\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533"+
-            "\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB"+
-            "\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66"+
-            "\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76"+
-            "\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A"+
-            "\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C"+
-            "\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54"+
-            "\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03"+
-            "\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8"+
-            "\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5"+
-            "\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\u6FA2"+
-            "\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2"+
-            "\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA"+
-            "\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB"+
-            "\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B"+
-            "\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1"+
-            "\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C"+
-            "\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1"+
-            "\u779C\u779B\u77A2\u77A3\u7795\u7799\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB"+
-            "\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48"+
-            "\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3"+
-            "\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4"+
-            "\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4"+
-            "\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F"+
-            "\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B"+
-            "\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B"+
-            "\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1"+
-            "\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4"+
-            "\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556"+
-            "\u8545\u856B\u854D\u8553\u8561\u8558\u8540\u8546"+
-            "\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E"+
-            "\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560"+
-            "\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665"+
-            "\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781"+
-            "\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791"+
-            "\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926"+
-            "\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923"+
-            "\u892F\u892C\u891F\u89F1\u8AE0\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u8AE2"+
-            "\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0"+
-            "\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91"+
-            "\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C"+
-            "\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45"+
-            "\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36"+
-            "\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079"+
-            "\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190"+
-            "\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306"+
-            "\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301"+
-            "\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325"+
-            "\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329"+
-            "\u9339\u9335\u932A\u9314\u930C\u930B\u92FE\u9309"+
-            "\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA"+
-            "\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712"+
-            "\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F"+
-            "\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC"+
-            "\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9"+
-            "\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33"+
-            "\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93"+
-            "\u9B92\u9B90\u9B7A\u9B95\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9B7D\u9B88"+
-            "\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18"+
-            "\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE"+
-            "\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125"+
-            "\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D"+
-            "\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6"+
-            "\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C"+
-            "\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7"+
-            "\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7"+
-            "\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3"+
-            "\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2"+
-            "\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1"+
-            "\u6A9E\u6A87\u6A93\u6A8E\u6A95\u6A83\u6AA8\u6AA4"+
-            "\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B"+
-            "\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC"+
-            "\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8"+
-            "\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373"+
-            "\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD"+
-            "\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584"+
-            "\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB"+
-            "\u77B2\u77B7\u77B6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u77B4\u77B1\u77A8"+
-            "\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905"+
-            "\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56"+
-            "\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F"+
-            "\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3"+
-            "\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0"+
-            "\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33"+
-            "\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C"+
-            "\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E"+
-            "\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA"+
-            "\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583"+
-            "\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B"+
-            "\u85A4\u859A\u859E\u8577\u857C\u8589\u85A1\u857A"+
-            "\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D"+
-            "\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598"+
-            "\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0"+
-            "\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2"+
-            "\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF"+
-            "\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E"+
-            "\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2"+
-            "\u89F3\u8B1E\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u8B18\u8B16\u8B11\u8B05"+
-            "\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08"+
-            "\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71"+
-            "\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53"+
-            "\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138"+
-            "\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0"+
-            "\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358"+
-            "\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F"+
-            "\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371"+
-            "\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E"+
-            "\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE"+
-            "\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A"+
-            "\u97A1\u979C\u979E\u979D\u97D5\u97D4\u97F1\u9841"+
-            "\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C"+
-            "\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998"+
-            "\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8"+
-            "\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE"+
-            "\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B"+
-            "\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF"+
-            "\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38"+
-            "\u9D30\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u9D45\u9D42\u9D43\u9D3E\u9D37"+
-            "\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0"+
-            "\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54"+
-            "\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A"+
-            "\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D"+
-            "\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0"+
-            "\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501"+
-            "\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5"+
-            "\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7"+
-            "\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D"+
-            "\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026"+
-            "\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD"+
-            "\u7376\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB"+
-            "\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653"+
-            "\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF"+
-            "\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD"+
-            "\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D"+
-            "\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50"+
-            "\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57"+
-            "\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u81D0\u825F\u825E\u85B4\u85C6\u85C0"+
-            "\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF"+
-            "\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624"+
-            "\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB"+
-            "\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC"+
-            "\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801"+
-            "\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946"+
-            "\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30"+
-            "\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37"+
-            "\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42"+
-            "\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00"+
-            "\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67";
-
-        private final static String innerIndex5=
-            "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47"+
-            "\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5"+
-            "\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B"+
-            "\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395"+
-            "\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4"+
-            "\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3"+
-            "\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722"+
-            "\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA"+
-            "\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F"+
-            "\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07"+
-            "\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35"+
-            "\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1"+
-            "\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C"+
-            "\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C"+
-            "\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C"+
-            "\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29"+
-            "\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4"+
-            "\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD"+
-            "\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\u5FBF"+
-            "\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584"+
-            "\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9"+
-            "\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE"+
-            "\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B"+
-            "\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A"+
-            "\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4"+
-            "\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660"+
-            "\u77C9\u77CA\u77C4\u77F1\u791D\u791B\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33"+
-            "\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75"+
-            "\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68"+
-            "\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078"+
-            "\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED"+
-            "\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8"+
-            "\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF"+
-            "\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809"+
-            "\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802"+
-            "\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D"+
-            "\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A"+
-            "\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\u8B51\u8B42"+
-            "\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07"+
-            "\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73"+
-            "\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50"+
-            "\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7"+
-            "\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9"+
-            "\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4"+
-            "\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1"+
-            "\u9729\u972B\u972C\u9728\u9726\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u97B3"+
-            "\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D"+
-            "\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943"+
-            "\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B"+
-            "\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2"+
-            "\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0"+
-            "\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC"+
-            "\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81"+
-            "\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B"+
-            "\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85"+
-            "\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68"+
-            "\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D"+
-            "\u9F56\u9F57\u9F58\u5337\u56B2\u56B5\u56B3\u58E3"+
-            "\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9"+
-            "\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4"+
-            "\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF"+
-            "\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038"+
-            "\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213"+
-            "\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE"+
-            "\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923"+
-            "\u7927\u7928\u7924\u7929\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u79B2\u7A6E"+
-            "\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45"+
-            "\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079"+
-            "\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601"+
-            "\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C"+
-            "\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963"+
-            "\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63"+
-            "\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59"+
-            "\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141"+
-            "\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420"+
-            "\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D"+
-            "\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA"+
-            "\u9409\u93F8\u940A\u93FF\u93FC\u940C\u93F6\u9411"+
-            "\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB"+
-            "\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2"+
-            "\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34"+
-            "\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D"+
-            "\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08"+
-            "\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06"+
-            "\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92"+
-            "\u9D98\u9D90\u9D9B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9DA0\u9D94\u9D9C"+
-            "\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3"+
-            "\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A"+
-            "\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60"+
-            "\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297"+
-            "\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1"+
-            "\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043"+
-            "\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A"+
-            "\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F"+
-            "\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86"+
-            "\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626"+
-            "\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620"+
-            "\u8629\u861E\u8625\u8829\u881D\u881B\u8820\u8824"+
-            "\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA"+
-            "\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF"+
-            "\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145"+
-            "\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430"+
-            "\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4"+
-            "\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6"+
-            "\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42"+
-            "\u9A41\u9A3A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u9A3F\u9ACD\u9B15\u9B17"+
-            "\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C"+
-            "\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC"+
-            "\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB"+
-            "\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD"+
-            "\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE"+
-            "\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64"+
-            "\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C"+
-            "\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B"+
-            "\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E"+
-            "\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D"+
-            "\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59"+
-            "\u7C5B\u7C5A\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE"+
-            "\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C"+
-            "\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB"+
-            "\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95"+
-            "\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62"+
-            "\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445"+
-            "\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB"+
-            "\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48"+
-            "\u9A4A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u9A49\u9A52\u9A50\u9AD0\u9B19"+
-            "\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44"+
-            "\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D"+
-            "\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC"+
-            "\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5"+
-            "\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B"+
-            "\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D"+
-            "\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525"+
-            "\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A"+
-            "\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66"+
-            "\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B"+
-            "\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973"+
-            "\u89FE\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98"+
-            "\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E"+
-            "\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20"+
-            "\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59"+
-            "\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8"+
-            "\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2"+
-            "\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2"+
-            "\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD"+
-            "\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061"+
-            "\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7"+
-            "\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837"+
-            "\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D"+
-            "\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746"+
-            "\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63"+
-            "\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07"+
-            "\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD"+
-            "\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4"+
-            "\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226"+
-            "\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"+
-            "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648"+
-            "\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5"+
-            "\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749"+
-            "\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10"+
-            "\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78"+
-            "\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2"+
-            "\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74"+
-            "\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D"+
-            "\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874"+
-            "\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15"+
-            "\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482"+
-            "\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B"+
-            "\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D"+
-            "\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD";
-
-        private 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0
-        };
-
-        static String index2[] = {
-            innerIndex0,
-            innerIndex1,
-            innerIndex2,
-            innerIndex3,
-            innerIndex4,
-            innerIndex5
-        };
-
-        public Decoder(Charset cs) {
-            super(cs,
-                  index1,
-                  index2,
-                  0x40,
-                  0xFE);
-        }
-    }
-
-    protected static class Encoder extends DoubleByteEncoder {
-        private final static String innerIndex0=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA246\uA247\u0000\uA244\u0000\uA1B1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA258\uA1D3\u0000\u0000\u0000\u0000\u0000\uA150"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1D1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1D2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA3BE"+
-            "\u0000\uA3BC\uA3BD\uA3BF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA3BB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA344\uA345\uA346\uA347\uA348\uA349\uA34A"+
-            "\uA34B\uA34C\uA34D\uA34E\uA34F\uA350\uA351\uA352"+
-            "\uA353\uA354\u0000\uA355\uA356\uA357\uA358\uA359"+
-            "\uA35A\uA35B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA35C\uA35D\uA35E\uA35F\uA360\uA361\uA362"+
-            "\uA363\uA364\uA365\uA366\uA367\uA368\uA369\uA36A"+
-            "\uA36B\uA36C\u0000\uA36D\uA36E\uA36F\uA370\uA371"+
-            "\uA372\uA373\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC7B3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC7B1\uC7B2\uC7B4\uC7B5"+
-            "\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC7BB\uC7BC\uC7BD\uC7BE\uC7BF"+
-            "\uC7C0\uC7C1\uC7C2\uC7C3\uC7C4\uC7C5\uC7C6\uC7C7"+
-            "\uC7C8\uC7C9\uC7CA\uC7CB\uC7CC\uC7CD\uC7CF\uC7D0"+
-            "\uC7D1\uC7D2\uC7D3\uC7D4\uC7D5\uC7D6\uC7D7\uC7D8"+
-            "\uC7D9\uC7DA\uC7DB\uC7DC\uC7DD\uC7DE\uC7DF\uC7E0"+
-            "\uC7E1\uC7E2\uC7E3\uC7E4\uC7E5\uC7E6\uC7E7\uC7E8"+
-            "\u0000\uC7CE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA156\uA158\u0000\u0000\u0000"+
-            "\uA1A5\uA1A6\u0000\u0000\uA1A7\uA1A8\u0000\u0000"+
-            "\u0000\u0000\uA145\u0000\u0000\uA14C\uA14B\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA1AC\u0000\u0000\uA1AB\u0000\u0000"+
-            "\u0000\u0000\u0000\uA1B0\u0000\u0000\uA1C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA24A\u0000\uA1C1\u0000\u0000"+
-            "\u0000\uA24B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA2B9\uA2BA\uA2BB\uA2BC\uA2BD\uA2BE\uA2BF\uA2C0"+
-            "\uA2C1\uA2C2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA1F6\uA1F4\uA1F7\uA1F5\u0000\u0000\uA1F8\uA1F9"+
-            "\uA1FB\uA1FA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA1D4\u0000\u0000\u0000\uA1DB\uA1E8"+
-            "\uA1E7\u0000\u0000\uA1FD\u0000\uA1FC\u0000\u0000"+
-            "\u0000\uA1E4\uA1E5\uA1EC\u0000\u0000\uA1ED\u0000"+
-            "\u0000\u0000\u0000\u0000\uA1EF\uA1EE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA1E3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA1DC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA1DA\uA1DD\u0000\u0000\u0000\u0000\uA1D8\uA1D9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA1E6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1E9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC7E9\uC7EA\uC7EB\uC7EC\uC7ED\uC7EE\uC7EF\uC7F0"+
-            "\uC7F1\uC7F2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC7F3\uC7F4\uC7F5\uC7F6"+
-            "\uC7F7\uC7F8\uC7F9\uC7FA\uC7FB\uC7FC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA277\u0000\uA278\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA27A\u0000\u0000\u0000"+
-            "\uA27B\u0000\u0000\u0000\uA27C\u0000\u0000\u0000"+
-            "\uA27D\u0000\u0000\u0000\uA275\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA274\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA273\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA272\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA271\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA2A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA2A5\u0000"+
-            "\u0000\uA2A7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA2A6\u0000\u0000\uA27E\uA2A1\uA2A3"+
-            "\uA2A2\uA2AC\uA2AD\uA2AE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA262\uA263\uA264\uA265\uA266\uA267\uA268"+
-            "\uA269\uA270\uA26F\uA26E\uA26D\uA26C\uA26B\uA26A"+
-            "\u0000\u0000\u0000\u0000\uA276\uA279\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA1BD\uA1BC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA1B6\uA1B5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA1BF\uA1BE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA1BB\uA1BA"+
-            "\u0000\u0000\u0000\uA1B3\u0000\u0000\uA1B7\uA1B4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA2A8\uA2A9\uA2AB\uA2AA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA1B9\uA1B8\u0000"+
-            "\u0000\uA1F3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA1F0\uA1F2\uA1F1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA140\uA142\uA143\uA1B2\u0000\uC6A4\u0000\u0000"+
-            "\uA171\uA172\uA16D\uA16E\uA175\uA176\uA179\uA17A"+
-            "\uA169\uA16A\uA245\u0000\uA165\uA166\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA1A9\uA1AA\u0000"+
-            "\u0000\uA2C3\uA2C4\uA2C5\uA2C6\uA2C7\uA2C8\uA2C9"+
-            "\uA2CA\uA2CB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC6A5\uC6A6\uC6A7\uC6A8\uC6A9\uC6AA\uC6AB"+
-            "\uC6AC\uC6AD\uC6AE\uC6AF\uC6B0\uC6B1\uC6B2\uC6B3"+
-            "\uC6B4\uC6B5\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB"+
-            "\uC6BC\uC6BD\uC6BE\uC6BF\uC6C0\uC6C1\uC6C2\uC6C3"+
-            "\uC6C4\uC6C5\uC6C6\uC6C7\uC6C8\uC6C9\uC6CA\uC6CB"+
-            "\uC6CC\uC6CD\uC6CE\uC6CF\uC6D0\uC6D1\uC6D2\uC6D3"+
-            "\uC6D4\uC6D5\uC6D6\uC6D7\uC6D8\uC6D9\uC6DA\uC6DB"+
-            "\uC6DC\uC6DD\uC6DE\uC6DF\uC6E0\uC6E1\uC6E2\uC6E3"+
-            "\uC6E4\uC6E5\uC6E6\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB"+
-            "\uC6EC\uC6ED\uC6EE\uC6EF\uC6F0\uC6F1\uC6F2\uC6F3"+
-            "\uC6F4\uC6F5\uC6F6\uC6F7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6A2\uC6A3\u0000"+
-            "\u0000\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD\uC6FE"+
-            "\uC740\uC741\uC742\uC743\uC744\uC745\uC746\uC747"+
-            "\uC748\uC749\uC74A\uC74B\uC74C\uC74D\uC74E\uC74F"+
-            "\uC750\uC751\uC752\uC753\uC754\uC755\uC756\uC757"+
-            "\uC758\uC759\uC75A\uC75B\uC75C\uC75D\uC75E\uC75F"+
-            "\uC760\uC761\uC762\uC763\uC764\uC765\uC766\uC767"+
-            "\uC768\uC769\uC76A\uC76B\uC76C\uC76D\uC76E\uC76F"+
-            "\uC770\uC771\uC772\uC773\uC774\uC775\uC776\uC777"+
-            "\uC778\uC779\uC77A\uC77B\uC77C\uC77D\uC77E\uC7A1"+
-            "\uC7A2\uC7A3\uC7A4\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9"+
-            "\uC7AA\uC7AB\uC7AC\uC7AD\uC7AE\uC7AF\uC7B0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6A1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA374\uA375\uA376"+
-            "\uA377\uA378\uA379\uA37A\uA37B\uA37C\uA37D\uA37E"+
-            "\uA3A1\uA3A2\uA3A3\uA3A4\uA3A5\uA3A6\uA3A7\uA3A8"+
-            "\uA3A9\uA3AA\uA3AB\uA3AC\uA3AD\uA3AE\uA3AF\uA3B0"+
-            "\uA3B1\uA3B2\uA3B3\uA3B4\uA3B5\uA3B6\uA3B7\uA3B8"+
-            "\uA3B9\uA3BA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA1C0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA255\uA256"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA250\uA251\uA252\u0000"+
-            "\u0000\uA254\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA257\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA253\u0000"+
-            "\u0000\uA1EB\uA1EA\u0000\u0000\uA24F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA440\uA442\u0000\uA443\u0000\u0000\u0000\uC945"+
-            "\uA456\uA454\uA457\uA455\uC946\uA4A3\uC94F\uC94D"+
-            "\uA4A2\uA4A1\u0000\u0000\uA542\uA541\uA540\u0000"+
-            "\uA543\uA4FE\u0000\u0000\u0000\u0000\uA5E0\uA5E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA8C3\u0000"+
-            "\u0000\u0000\u0000\uA458\u0000\uA4A4\uC950\u0000"+
-            "\uA4A5\uC963\uA6EA\uCBB1\u0000\u0000\u0000\u0000"+
-            "\uA459\uA4A6\u0000\uA544\uC964\u0000\u0000\u0000"+
-            "\u0000\u0000\uC940\uA444\u0000\uA45B\u0000\uC947"+
-            "\uA45C\u0000\u0000\uA4A7\u0000\uA545\uA547\uA546"+
-            "\u0000\u0000\uA5E2\uA5E3\u0000\u0000\uA8C4\u0000"+
-            "\uADBC\uA441\u0000\u0000\uC941\uA445\uA45E\uA45D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA5E4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA8C5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uB0AE\uD44B"+
-            "\u0000\u0000\uB6C3\uDCB1\uDCB2\u0000\uA446\u0000"+
-            "\uA4A9\u0000\u0000\uA8C6\uA447\uC948\uA45F\u0000"+
-            "\u0000\uA4AA\uA4AC\uC951\uA4AD\uA4AB\u0000\u0000"+
-            "\u0000\uA5E5\u0000\uA8C7\u0000\u0000\uA8C8\uAB45"+
-            "\u0000\uA460\uA4AE\u0000\uA5E6\uA5E8\uA5E7\u0000"+
-            "\uA6EB\u0000\u0000\uA8C9\uA8CA\uAB46\uAB47\u0000"+
-            "\u0000\u0000\u0000\uADBD\u0000\u0000\uDCB3\u0000"+
-            "\u0000\uF6D6\uA448\u0000\u0000\u0000\u0000\u0000"+
-            "\uA4B0\uA4AF\uC952\uA4B1\uA4B7\u0000\uA4B2\uA4B3"+
-            "\uC954\uC953\uA4B5\uA4B6\u0000\uA4B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA54A\uA54B\uA54C\uA54D"+
-            "\uA549\uA550\uC96A\u0000\uC966\uC969\uA551\uA561"+
-            "\u0000\uC968\u0000\uA54E\uA54F\uA548\u0000\u0000"+
-            "\uC965\uC967\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA5F5\uC9B0\uA5F2\uA5F6\uC9BA\uC9AE\uA5F3\uC9B2"+
-            "\u0000\u0000\u0000\uA5F4\u0000\uA5F7\u0000\uA5E9";
-
-        private final static String innerIndex1=
-            "\uC9B1\uA5F8\uC9B5\u0000\uC9B9\uC9B6\u0000\u0000"+
-            "\uC9B3\uA5EA\uA5EC\uA5F9\u0000\uA5EE\uC9AB\uA5F1"+
-            "\uA5EF\uA5F0\uC9BB\uC9B8\uC9AF\uA5ED\u0000\u0000"+
-            "\uC9AC\uA5EB\u0000\u0000\u0000\uC9B4\u0000\u0000"+
-            "\u0000\u0000\uC9B7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC9AD\uCA66\u0000\uA742"+
-            "\uA6F4\u0000\u0000\uCA67\uA6F1\u0000\uA744\u0000"+
-            "\uA6F9\u0000\uA6F8\uCA5B\uA6FC\uA6F7\uCA60\uCA68"+
-            "\u0000\uCA64\u0000\uA6FA\u0000\u0000\uA6FD\uA6EE"+
-            "\uA747\uCA5D\u0000\u0000\uCBBD\uA6EC\uA743\uA6ED"+
-            "\uA6F5\uA6F6\uCA62\uCA5E\uA6FB\uA6F3\uCA5A\uA6EF"+
-            "\uCA65\uA745\uA748\uA6F2\uA740\uA746\uA6F0\uCA63"+
-            "\uA741\uCA69\uCA5C\uA6FE\uCA5F\u0000\u0000\uCA61"+
-            "\u0000\uA8D8\uCBBF\uCBCB\uA8D0\u0000\uCBCC\uA8CB"+
-            "\uA8D5\u0000\u0000\uA8CE\uCBB9\uA8D6\uCBB8\uCBBC"+
-            "\uCBC3\uCBC1\uA8DE\uA8D9\uCBB3\uCBB5\uA8DB\uA8CF"+
-            "\uCBB6\uCBC2\uCBC9\uA8D4\uCBBB\uCBB4\uA8D3\uCBB7"+
-            "\uA8D7\uCBBA\u0000\uA8D2\u0000\uA8CD\u0000\uA8DC"+
-            "\uCBC4\uA8DD\uCBC8\u0000\uCBC6\uCBCA\uA8DA\uCBBE"+
-            "\uCBB2\u0000\uCBC0\uA8D1\uCBC5\uA8CC\uCBC7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uAB56\uAB4A"+
-            "\u0000\u0000\uCDE0\uCDE8\u0000\uAB49\uAB51\uAB5D"+
-            "\u0000\uCDEE\uCDEC\uCDE7\u0000\u0000\u0000\uAB4B"+
-            "\uCDED\uCDE3\uAB59\uAB50\uAB58\uCDDE\u0000\uCDEA"+
-            "\u0000\uCDE1\uAB54\uCDE2\u0000\uCDDD\uAB5B\uAB4E"+
-            "\uAB57\uAB4D\u0000\uCDDF\uCDE4\u0000\uCDEB\uAB55"+
-            "\uAB52\uCDE6\uAB5A\uCDE9\uCDE5\uAB4F\uAB5C\uAB53"+
-            "\uAB4C\uAB48\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uCDEF\u0000\uADD7\uADC1"+
-            "\u0000\uADD1\u0000\uADD6\uD0D0\uD0CF\uD0D4\uD0D5"+
-            "\uADC4\u0000\uADCD\u0000\u0000\u0000\uADDA\u0000"+
-            "\uADCE\u0000\u0000\u0000\u0000\uD0C9\uADC7\uD0CA"+
-            "\u0000\uADDC\u0000\uADD3\uADBE\uADBF\uD0DD\uB0BF"+
-            "\u0000\uADCC\uADCB\uD0CB\uADCF\uD45B\uADC6\uD0D6"+
-            "\uADD5\uADD4\uADCA\uD0CE\uD0D7\u0000\uD0C8\uADC9"+
-            "\uD0D8\uADD2\uD0CC\uADC0\u0000\uADC3\uADC2\uD0D9"+
-            "\uADD0\uADC5\uADD9\uADDB\uD0D3\uADD8\u0000\uD0DB"+
-            "\uD0CD\uD0DC\u0000\uD0D1\u0000\uD0DA\u0000\uD0D2"+
-            "\u0000\u0000\u0000\u0000\uADC8\u0000\u0000\u0000"+
-            "\uD463\uD457\u0000\uB0B3\u0000\uD45C\uD462\uB0B2"+
-            "\uD455\uB0B6\uD459\uD452\uB0B4\uD456\uB0B9\uB0BE"+
-            "\u0000\uD467\u0000\uD451\u0000\uB0BA\u0000\uD466"+
-            "\u0000\u0000\uB0B5\uD458\uB0B1\uD453\uD44F\uD45D"+
-            "\uD450\uD44E\uD45A\uD460\uD461\uB0B7\u0000\u0000"+
-            "\uD85B\uD45E\uD44D\uD45F\u0000\uB0C1\uD464\uB0C0"+
-            "\uD44C\u0000\uD454\uD465\uB0BC\uB0BB\uB0B8\uB0BD"+
-            "\u0000\u0000\uB0AF\u0000\u0000\uB0B0\u0000\u0000"+
-            "\uB3C8\u0000\uD85E\uD857\u0000\uB3C5\u0000\uD85F"+
-            "\u0000\u0000\u0000\uD855\uD858\uB3C4\uD859\u0000"+
-            "\u0000\uB3C7\uD85D\u0000\uD853\uD852\uB3C9\u0000"+
-            "\uB3CA\uB3C6\uB3CB\uD851\uD85C\uD85A\uD854\u0000"+
-            "\u0000\u0000\uB3C3\uD856\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uB6CA\uB6C4\uDCB7\uB6CD"+
-            "\uDCBD\uDCC0\uB6C6\uB6C7\uDCBA\uB6C5\uDCC3\uB6CB"+
-            "\uDCC4\u0000\uDCBF\uB6CC\u0000\uDCB4\uB6C9\uDCB5"+
-            "\u0000\uDCBE\uDCBC\u0000\uDCB8\uB6C8\uDCB6\uB6CE"+
-            "\uDCBB\uDCC2\uDCB9\uDCC1\u0000\u0000\uB9B6\uB9B3"+
-            "\u0000\uB9B4\u0000\uE0F9\uE0F1\uB9B2\uB9AF\uE0F2"+
-            "\u0000\u0000\uB9B1\uE0F5\u0000\uE0F7\u0000\u0000"+
-            "\uE0FE\u0000\u0000\uE0FD\uE0F8\uB9AE\uE0F0\uB9AC"+
-            "\uE0F3\uB9B7\uE0F6\u0000\uE0FA\uB9B0\uB9AD\uE0FC"+
-            "\uE0FB\uB9B5\u0000\uE0F4\u0000\uBBF8\uE4EC\u0000"+
-            "\uE4E9\uBBF9\u0000\uBBF7\u0000\uE4F0\uE4ED\uE4E6"+
-            "\uBBF6\u0000\uBBFA\uE4E7\uBBF5\uBBFD\uE4EA\uE4EB"+
-            "\uBBFB\uBBFC\uE4F1\uE4EE\uE4EF\u0000\u0000\u0000"+
-            "\uBEAA\uE8F8\uBEA7\uE8F5\uBEA9\uBEAB\u0000\uE8F6"+
-            "\uBEA8\u0000\uE8F7\u0000\uE8F4\u0000\u0000\uC076"+
-            "\uECBD\uC077\uECBB\u0000\uECBC\uECBA\uECB9\u0000"+
-            "\u0000\uECBE\uC075\u0000\u0000\uEFB8\uEFB9\u0000"+
-            "\uE4E8\uEFB7\uC078\uC35F\uF1EB\uF1EC\u0000\uC4D7"+
-            "\uC4D8\uF5C1\uF5C0\uC56C\uC56B\uF7D0\u0000\uA449"+
-            "\uA461\uA4B9\u0000\uA4B8\uA553\uA552\uA5FC\uA5FB"+
-            "\uA5FD\uA5FA\u0000\uA74A\uA749\uA74B\u0000\u0000"+
-            "\u0000\u0000\uA8E0\u0000\uA8DF\uA8E1\u0000\uAB5E"+
-            "\u0000\uA259\uD0DE\uA25A\uB0C2\uA25C\uA25B\uD860"+
-            "\u0000\uA25D\uB9B8\uA25E\u0000\uA44A\u0000\uA4BA"+
-            "\uA5FE\uA8E2\u0000\uA44B\uA4BD\uA4BB\uA4BC\u0000"+
-            "\u0000\uA640\u0000\u0000\u0000\uA74C\uA8E4\uA8E3"+
-            "\uA8E5\u0000\u0000\u0000\uADDD\u0000\u0000\u0000"+
-            "\uBEAC\u0000\u0000\u0000\u0000\u0000\u0000\uC94E"+
-            "\u0000\uA554\uA555\u0000\u0000\uA641\u0000\uCA6A"+
-            "\u0000\uAB60\uAB5F\uD0E0\uD0DF\uB0C3\u0000\uA4BE"+
-            "\uC955\u0000\u0000\u0000\u0000\u0000\uCBCD\u0000"+
-            "\uAB61\u0000\uADE0\u0000\uADDE\uADDF\u0000\u0000"+
-            "\u0000\u0000\uBEAD\u0000\uA556\u0000\u0000\u0000"+
-            "\uA642\uC9BC\u0000\u0000\u0000\u0000\uA74D\uA74E"+
-            "\u0000\uCA6B\u0000\u0000\uCBCE\uA8E6\uCBCF\u0000"+
-            "\u0000\u0000\u0000\u0000\uD0E2\uD0E3\uADE3\u0000"+
-            "\uD0E4\u0000\uD0E1\uADE4\uADE2\uADE1\uD0E5\u0000"+
-            "\uD468\u0000\u0000\u0000\uD861\u0000\u0000\uDCC5"+
-            "\uE140\u0000\u0000\u0000\uBBFE\uBEAE\uE8F9\u0000"+
-            "\uA44C\uA45A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uB0C4\uB3CD\u0000\uB9B9\u0000\uC942\uA4BF\u0000"+
-            "\uA559\uA557\uA558\u0000\u0000\uA8E7\u0000\u0000"+
-            "\uA44D\uA44E\u0000\uA462\u0000\u0000\uA4C0\uA4C1"+
-            "\uA4C2\uC9BE\uA55A\u0000\uC96B\u0000\uA646\u0000"+
-            "\uC9BF\uA644\uA645\uC9BD\u0000\u0000\uA647\uA643"+
-            "\u0000\u0000\u0000\u0000\uCA6C\uAAEC\uCA6D\u0000"+
-            "\u0000\uCA6E\u0000\u0000\uA750\uA74F\u0000\u0000"+
-            "\uA753\uA751\uA752\u0000\u0000\u0000\uA8ED\u0000"+
-            "\uA8EC\uCBD4\uCBD1\uCBD2\u0000\uCBD0\uA8EE\uA8EA"+
-            "\uA8E9\u0000\uA8EB\uA8E8\u0000\u0000\u0000\u0000"+
-            "\u0000\uA8EF\u0000\uAB63\uCDF0\u0000\uCBD3\uAB68"+
-            "\u0000\uCDF1\uAB64\uAB67\uAB66\uAB65\uAB62\u0000"+
-            "\u0000\u0000\uD0E8\u0000\uADE7\uD0EB\uADE5\u0000"+
-            "\u0000\u0000\uD0E7\uADE8\uADE6\uADE9\uD0E9\uD0EA"+
-            "\u0000\uD0E6\uD0EC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uB3D1\uB0C5\uD469\uD46B\uD46A\uD46C\uB0C6"+
-            "\u0000\u0000\uB3CE\u0000\uB3CF\uB3D0\u0000\uB6D0"+
-            "\uDCC7\u0000\uDCC6\uDCC8\uDCC9\uB6D1\u0000\uB6CF"+
-            "\uE141\uE142\uB9BB\uB9BA\uE35A\u0000\u0000\uBC40"+
-            "\uBC41\uBC42\uBC44\uE4F2\uE4F3\uBC43\u0000\u0000"+
-            "\u0000\uBEAF\u0000\uBEB0\u0000\u0000\uF1ED\uF5C3"+
-            "\uF5C2\uF7D1\u0000\uA44F\u0000\u0000\u0000\uA55C"+
-            "\uA55B\u0000\u0000\uA648\u0000\u0000\uC9C0\u0000"+
-            "\u0000\uA755\uA756\uA754\uA757\uCA6F\uCA70\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA8F1\uCBD5\u0000\uA8F0\u0000"+
-            "\uCDF2\uAB6C\uCDF3\uAB6B\u0000\u0000\u0000\uAB69"+
-            "\u0000\uAB6A\u0000\u0000\u0000\uD0ED\u0000\u0000"+
-            "\u0000\u0000\uB0C7\uD46E\u0000\uB0CA\uD46D\uB1E5"+
-            "\uB0C9\uB0C8\u0000\uB3D4\u0000\uB3D3\uB3D2\uB6D2"+
-            "\u0000\u0000\uB6D5\uB6D6\uB6D4\u0000\uB6D3\u0000"+
-            "\u0000\uE143\u0000\uE144\u0000\u0000\u0000\uE4F5"+
-            "\uBC45\uE4F4\u0000\uBEB1\uECBF\uC079\u0000\uF1EE"+
-            "\uC455\u0000\uA463\uA4C3\uC956\u0000\uA4C4\uA4C5"+
-            "\u0000\u0000\u0000\u0000\u0000\uA55D\uA55E\u0000"+
-            "\uA649\uCA71\uCBD6\uCBD7\u0000\uAB6D\uD0EE\uB0CC"+
-            "\uB0CB\uD863\uD862\u0000\u0000\uA450\uA4C6\uA55F"+
-            "\u0000\uB0CD\uC943\u0000\uC96C\uA560\u0000\uC9C2"+
-            "\uA64B\uA64A\uC9C1\uA758\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uADEA\u0000\u0000\uD46F\u0000\uB6D7"+
-            "\uE145\uB9BC\u0000\u0000\uE8FA\u0000\u0000\uF3FD"+
-            "\u0000\uA4C7\u0000\u0000\uCBD8\uCDF4\uB0D0\uB0CE"+
-            "\uB0CF\uA451\u0000\uA464\uA2CD\uA4CA\u0000\uA4C9"+
-            "\uA4C8\uA563\uA562\u0000\uC96D\uC9C3\u0000\u0000"+
-            "\u0000\uA8F5\uA8F2\uA8F4\uA8F3\u0000\u0000\uAB6E"+
-            "\u0000\u0000\uB3D5\u0000\uA452\u0000\uA4CB\u0000"+
-            "\uA565\uA564\u0000\uCA72\u0000\u0000\uA8F6\u0000"+
-            "\u0000\u0000\u0000\u0000\uC957\u0000\uA567\uA566"+
-            "\uA64C\uA64D\uCA73\uA759\u0000\uA75A\u0000\uA8F7"+
-            "\uA8F8\uA8F9\u0000\uAB6F\uCDF5\u0000\u0000\uADEB"+
-            "\u0000\u0000\uC944\u0000\uA4CC\u0000\u0000\u0000"+
-            "\u0000\u0000\uC9C4\u0000\u0000\u0000\uCA74\uCA75"+
-            "\u0000\u0000\uCBD9\u0000\uCBDA\u0000\uCDF7\uCDF6"+
-            "\uCDF9\uCDF8\uAB70\u0000\uD470\uADED\uD0EF\uADEC"+
-            "\u0000\u0000\u0000\u0000\uD864\uB3D6\u0000\uD865"+
-            "\u0000\u0000\u0000\u0000\uE146\uB9BD\u0000\u0000"+
-            "\u0000\u0000\uBC46\u0000\uF1EF\u0000\u0000\u0000"+
-            "\u0000\uC958\u0000\uA568\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uB0D1\u0000\u0000\u0000\u0000"+
-            "\uA453\uA465\uA4CE\uA4CD\u0000\uA4CF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA8FB\u0000\uA8FA\uA8FC"+
-            "\u0000\u0000\u0000\uAB71\u0000\u0000\u0000\uADEE"+
-            "\u0000\uE8FB\uC24F\uA466\uA56A\uA579\uA574\u0000"+
-            "\uA56F\uA56E\uA575\uA573\uA56C\uA57A\uA56D\uA569"+
-            "\uA578\uA577\uA576\uA56B\u0000\uA572\u0000\u0000"+
-            "\uA571\u0000\u0000\uA57B\uA570\u0000\u0000\u0000"+
-            "\u0000\uA653\u0000\uA659\uA655\u0000\uA65B\uC9C5"+
-            "\uA658\uA64E\uA651\uA654\uA650\uA657\uA65A\uA64F"+
-            "\uA652\uA656\uA65C\u0000\u0000\u0000\u0000\u0000"+
-            "\uCA7E\uCA7B\u0000\uA767\uCA7C\uA75B\uA75D\uA775"+
-            "\uA770\u0000\u0000\u0000\uCAA5\uCA7D\uA75F\uA761"+
-            "\uCAA4\uA768\uCA78\uA774\uA776\uA75C\uA76D\u0000"+
-            "\uCA76\uA773\u0000\uA764\u0000\uA76E\uA76F\uCA77"+
-            "\uA76C\uA76A\u0000\uA76B\uA771\uCAA1\uA75E\u0000"+
-            "\uA772\uCAA3\uA766\uA763\u0000\uCA7A\uA762\uCAA6"+
-            "\uA765\u0000\uA769\u0000\u0000\u0000\uA760\uCAA2"+
-            "\u0000\u0000\u0000\u0000\uCA79\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uCBEB\uCBEA\uA94F\uCBED\uCBEF\uCBE4\uCBE7\uCBEE"+
-            "\uA950\u0000\u0000\uCBE1\uCBE5\u0000\u0000\uCBE9"+
-            "\uCE49\uA94B\uCE4D\uA8FD\uCBE6\uA8FE\uA94C\uA945"+
-            "\uA941\u0000\uCBE2\uA944\uA949\uA952\uCBE3\uCBDC"+
-            "\uA943\uCBDD\uCBDF\u0000\uA946\u0000\uA948\uCBDB"+
-            "\uCBE0\u0000\u0000\uA951\uA94D\uCBE8\uA953\u0000"+
-            "\uA94A\uCBDE\uA947\u0000\u0000\uA942\uA940\u0000"+
-            "\uCBEC\u0000\uA94E\u0000\u0000\u0000\u0000\u0000"+
-            "\uCE48\uCDFB\uCE4B\u0000\u0000\uCDFD\uAB78\uABA8"+
-            "\uAB74\uABA7\uAB7D\uABA4\uAB72\uCDFC\uCE43\uABA3"+
-            "\uCE4F\uABA5\u0000\uAB79\u0000\u0000\uCE45\uCE42"+
-            "\uAB77\u0000\uCDFA\uABA6\uCE4A\uAB7C\uCE4C\uABA9"+
-            "\uAB73\uAB7E\uAB7B\uCE40\uABA1\uCE46\uCE47\uAB7A"+
-            "\uABA2\uAB76\u0000\u0000\u0000\u0000\uAB75\uCDFE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uCE44\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uCE4E\u0000"+
-            "\uD144\uADFB\uD0F1\u0000\uD0F6\uADF4\uAE40\uD0F4"+
-            "\uADEF\uADF9\uADFE\uD0FB\u0000\uADFA\uADFD\u0000"+
-            "\u0000\uD0FE\uADF5\uD0F5\u0000\u0000\u0000\uD142"+
-            "\uD143\u0000\uADF7\uD141\uADF3\uAE43\u0000\uD0F8"+
-            "\u0000\uADF1\u0000\uD146\uD0F9\uD0FD\uADF6\uAE42"+
-            "\uD0FA\uADFC\uD140\uD147\uD4A1\u0000\uD145\uAE44"+
-            "\uADF0\uD0FC\uD0F3\u0000\uADF8\u0000\u0000\uD0F2"+
-            "\u0000\u0000\uD0F7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uD0F0\uAE41"+
-            "\u0000\u0000\uD477\u0000\uB0E4\uD4A7\uB0E2\uB0DF"+
-            "\uD47C\uB0DB\uD4A2\uB0E6\uD476\uD47B\uD47A\uADF2"+
-            "\uB0E1\uD4A5\u0000\uD4A8\uD473\u0000\uB3E8\u0000"+
-            "\uD4A9\uB0E7\u0000\uB0D9\uB0D6\uD47E\uB0D3\u0000"+
-            "\uD4A6\u0000\uB0DA\uD4AA\u0000\uD474\uD4A4\uB0DD"+
-            "\uD475\uD478\uD47D\u0000\u0000\uB0DE\uB0DC\uB0E8"+
-            "\u0000\u0000\u0000\u0000\uB0E3\u0000\uB0D7\uB1D2"+
-            "\u0000\uB0D8\uD479\uB0E5\uB0E0\uD4A3\uB0D5\u0000"+
-            "\u0000\u0000\uB0D4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD471\uD472\uD86A"+
-            "\u0000\u0000\u0000\uB3D7\uB3DA\uD875\uB3EE\uD878"+
-            "\uB3D8\uD871\uB3DE\uB3E4\uB5BD\u0000\u0000\uB3E2"+
-            "\uD86E\uB3EF\uB3DB\uB3E3\uD876\uDCD7\uD87B\uD86F"+
-            "\u0000\uD866\uD873\uD86D\uB3E1\uD879\u0000\u0000"+
-            "\uB3DD\uB3F1\uB3EA\u0000\uB3DF\uB3DC\u0000\uB3E7"+
-            "\u0000\uD87A\uD86C\uD872\uD874\uD868\uD877\uB3D9"+
-            "\uD867\u0000\uB3E0\uB3F0\uB3EC\uD869\uB3E6\u0000"+
-            "\u0000\uB3ED\uB3E9\uB3E5\u0000\uD870\u0000\u0000"+
-            "\u0000\u0000\u0000\uB3EB\u0000\u0000\u0000\uDCD5"+
-            "\uDCD1\u0000\uDCE0\uDCCA\uDCD3\uB6E5\uB6E6\uB6DE"+
-            "\uDCDC\uB6E8\uDCCF\uDCCE\uDCCC\uDCDE\uB6DC\uDCD8"+
-            "\uDCCD\uB6DF\uDCD6\uB6DA\uDCD2\uDCD9\uDCDB\u0000"+
-            "\u0000\uDCDF\uB6E3\uDCCB\uB6DD\uDCD0\u0000\uB6D8"+
-            "\u0000\uB6E4\uDCDA\uB6E0\uB6E1\uB6E7\uB6DB\uA25F"+
-            "\uB6D9\uDCD4\u0000\u0000\u0000\u0000\u0000\uB6E2"+
-            "\u0000\u0000\uDCDD\u0000\u0000\u0000\uB9CD\uB9C8"+
-            "\u0000\uE155\uE151\u0000\uE14B\uB9C2\uB9BE\uE154"+
-            "\uB9BF\uE14E\uE150\u0000\uE153\u0000\uB9C4\u0000"+
-            "\uB9CB\uB9C5\u0000\u0000\uE149\uB9C6\uB9C7\uE14C"+
-            "\uB9CC\u0000\uE14A\uE14F\uB9C3\uE148\uB9C9\uB9C1"+
-            "\u0000\u0000\u0000\uB9C0\uE14D\uE152\u0000\uB9CA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE147"+
-            "\u0000\uBC4D\uE547\u0000\uE544\u0000\uBC47\uBC53"+
-            "\uBC54\u0000\uBC4A\uE542\uBC4C\uE4F9\uBC52\u0000"+
-            "\uE546\uBC49\uE548\uBC48\u0000\uE543\uE545\uBC4B"+
-            "\uE541\uE4FA\uE4F7\u0000\u0000\uD86B\uE4FD\u0000"+
-            "\uE4F6\uE4FC\uE4FB\u0000\uE4F8\u0000\uBC4F\u0000"+
-            "\u0000\u0000\u0000\uBC4E\u0000\u0000\u0000\uBC50"+
-            "\uE4FE\uBEB2\uE540\u0000\u0000\u0000\uE945\u0000"+
-            "\uE8FD\u0000\uBEBE\uE942\uBEB6\uBEBA\uE941\u0000"+
-            "\uBEB9\uBEB5\uBEB8\uBEB3\uBEBD\uE943\uE8FE\uBEBC"+
-            "\uE8FC\uBEBB\uE944\uE940\uBC51\u0000\uBEBF\uE946"+
-            "\uBEB7\uBEB4\u0000\u0000\u0000\u0000\uECC6\uECC8"+
-            "\uC07B\uECC9\uECC7\uECC5\uECC4\uC07D\uECC3\uC07E"+
-            "\u0000\u0000\u0000\u0000\uECC1\uECC2\uC07A\uC0A1"+
-            "\uC07C\u0000\u0000\uECC0\u0000\uC250\u0000\uEFBC"+
-            "\uEFBA\uEFBF\uEFBD\u0000\uEFBB\uEFBE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC360\uF1F2\uF1F3"+
-            "\uC456\u0000\uF1F4\uF1F0\uF1F5\uF1F1\uC251\u0000"+
-            "\u0000\u0000\uF3FE\uF441\uC459\uF440\uC458\uC457"+
-            "\u0000\u0000\u0000\u0000\uC45A\uF5C5\uF5C6\u0000"+
-            "\uC4DA\uC4D9\uC4DB\uF5C4\u0000\uF6D8\uF6D7\u0000"+
-            "\uC56D\uC56F\uC56E\uF6D9\uC5C8\uF8A6\u0000\u0000"+
-            "\u0000\uC5F1\u0000\uF8A5\uF8EE\u0000\u0000\uC949"+
-            "\u0000\u0000\uA57D\uA57C\u0000\uA65F\uA65E\uC9C7"+
-            "\uA65D\uC9C6\u0000\u0000\uA779\uCAA9\u0000\uCAA8"+
-            "\u0000\u0000\uA777\uA77A\u0000\u0000\uCAA7\u0000"+
-            "\uA778\u0000\u0000\u0000\u0000\u0000\u0000\uCBF0"+
-            "\u0000\uCBF1\uA954\u0000\u0000\u0000\u0000\uABAA"+
-            "\u0000\uD148\uD149\uAE45\uAE46\u0000\u0000\uD4AC"+
-            "\uB0E9\uB0EB\uD4AB\uB0EA\uD87C\uB3F2\u0000\u0000"+
-            "\u0000\u0000\uB6E9\uB6EA\uDCE1\u0000\uB9CF\u0000"+
-            "\uB9CE\u0000\uE549\uE948\uE947\u0000\uF96B\uA467"+
-            "\uC959\u0000\uC96E\uC96F\u0000\u0000\u0000\u0000"+
-            "\uA662\uA666\uC9C9\u0000\uA664\uA663\uC9C8\uA665"+
-            "\uA661\u0000\u0000\uA660\uC9CA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA7A6\u0000\u0000\uA7A3\u0000"+
-            "\uA77D\uCAAA\u0000\u0000\u0000\uCAAB\u0000\uA7A1"+
-            "\u0000\uCAAD\uA77B\uCAAE\uCAAC\uA77E\uA7A2\uA7A5"+
-            "\uA7A4\uA77C\uCAAF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA959\uCBFE\u0000\uA95B\u0000\uA95A\u0000"+
-            "\uCC40\uA958\uA957\uCBF5\u0000\uCBF4\u0000\uCBF2"+
-            "\uCBF7\uCBF6\uCBF3\uCBFC\uCBFD\uCBFA\uCBF8\uA956"+
-            "\u0000\u0000\u0000\uCBFB\uA95C\uCC41\u0000\u0000"+
-            "\uCBF9\u0000\uABAB\uA955\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uABAC\uCE54\u0000\u0000\uCE5A"+
-            "\u0000\u0000\u0000\uABB2\uCE58\uCE5E\u0000\uCE55"+
-            "\uCE59\uCE5B\uCE5D\uCE57\u0000\uCE56\uCE51\uCE52"+
-            "\uABAD\u0000\uABAF\uABAE\uCE53\uCE5C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uABB1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uCE50\uD153\u0000"+
-            "\uD152\uD157\uD14E\u0000\uD151\uD150\u0000\uD154"+
-            "\u0000\uD158\uAE47\uAE4A\u0000\u0000\uD14F\uD155"+
-            "\u0000\u0000\u0000\uAE49\uD14A\u0000\uABB0\uD4BA"+
-            "\uD156\u0000\uD14D\u0000\uAE48\uD14C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uD4B1\u0000\u0000\uB0EC"+
-            "\uB0F0\uD4C1\uD4AF\uD4BD\uB0F1\uD4BF\u0000\uD4C5"+
-            "\u0000\uD4C9\u0000\u0000\uD4C0\uD4B4\uD4BC\u0000"+
-            "\uD4CA\uD4C8\uD4BE\uD4B9\uD4B2\uD8A6\uD4B0\uB0F5"+
-            "\uD4B7\uB0F6\uB0F2\uD4AD\uD4C3\uD4B5\u0000\u0000"+
-            "\uD4B3\uD4C6\uB0F3\u0000\uD4CC\uB0ED\uB0EF\uD4BB"+
-            "\uD4B6\uAE4B\uB0EE\uD4B8\uD4C7\uD4CB\uD4C2\u0000"+
-            "\uD4C4\u0000\u0000\u0000\uD4AE\u0000\u0000\u0000"+
-            "\u0000\uD8A1\u0000\uD8AA\uD8A9\uB3FA\uD8A2\u0000"+
-            "\uB3FB\uB3F9\u0000\uD8A4\uB3F6\uD8A8\u0000\uD8A3"+
-            "\uD8A5\uD87D\uB3F4\u0000\uD8B2\uD8B1\uD8AE\uB3F3"+
-            "\uB3F7\uB3F8\uD14B\uD8AB\uB3F5\uB0F4\uD8AD\uD87E"+
-            "\uD8B0\uD8AF\u0000\uD8B3\u0000\uDCEF\u0000\uD8AC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uD8A7\uDCE7\uB6F4\uB6F7\uB6F2\uDCE6\uDCEA\uDCE5"+
-            "\u0000\uB6EC\uB6F6\uDCE2\uB6F0\uDCE9\u0000\uB6EE"+
-            "\uB6ED\uDCEC\uB6EF\uDCEE\u0000\uDCEB\uB6EB\u0000"+
-            "\u0000\u0000\uB6F5\uDCF0\uDCE4\uDCED\u0000\u0000"+
-            "\uDCE3\u0000\u0000\uB6F1\u0000\uB6F3\u0000\uDCE8"+
-            "\u0000\uDCF1\u0000\u0000\uE15D\uB9D0\uE163\u0000"+
-            "\u0000\uB9D5\uE15F\uE166\uE157\uB9D7\uB9D1\uE15C"+
-            "\uBC55\uE15B\uE164\uB9D2\u0000\uB9D6\uE15A\uE160"+
-            "\uE165\uE156\uB9D4\uE15E\u0000\u0000\uE162\uE168"+
-            "\uE158\uE161\u0000\uB9D3\uE167\u0000\u0000\u0000"+
-            "\uE159\u0000\u0000\u0000\uBC59\uE54B\uBC57\uBC56"+
-            "\uE54D\uE552\u0000\uE54E\u0000\uE551\uBC5C\u0000"+
-            "\uBEA5\uBC5B\u0000\uE54A\uE550\u0000\uBC5A\uE54F"+
-            "\u0000\uE54C\u0000\uBC58\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uE94D\u0000\uE94F\uE94A\uBEC1\uE94C"+
-            "\u0000\uBEC0\uE94E\u0000\u0000\uBEC3\uE950\uBEC2"+
-            "\uE949\uE94B\u0000\u0000\u0000\u0000\uC0A5\uECCC"+
-            "\u0000\uC0A4\uECCD\uC0A3\uECCB\uC0A2\uECCA\u0000"+
-            "\uC253\uC252\uF1F6\uF1F8\u0000\uF1F7\uC361\uC362"+
-            "\u0000\u0000\uC363\uF442\uC45B\u0000\u0000\uF7D3"+
-            "\uF7D2\uC5F2\u0000\uA468\uA4D0\u0000\u0000\uA7A7"+
-            "\u0000\u0000\u0000\u0000\uCE5F\u0000\u0000\u0000"+
-            "\u0000\uB3FC\uB3FD\u0000\uDCF2\uB9D8\uE169\uE553"+
-            "\u0000\u0000\u0000\uC95A\u0000\u0000\uCAB0\u0000"+
-            "\u0000\u0000\u0000\u0000\uCC42\uCE60\uD159\uAE4C"+
-            "\u0000\u0000\uF1F9\u0000\uC4DC\uA469\uA57E\uC970"+
-            "\u0000\uA667\uA668\u0000\uA95D\u0000\u0000\u0000"+
-            "\uB0F7\u0000\uB9DA\u0000\uB9DB\uB9D9\u0000\uA46A"+
-            "\u0000\uA4D1\uA4D3\uA4D2\uC95B\uA4D4\uA5A1\uC971"+
-            "\u0000\uA5A2\u0000\u0000\u0000\u0000\u0000\uA669"+
-            "\uA66A\u0000\u0000\u0000\uC9CB\u0000\uA7A8\u0000"+
-            "\uCAB1\u0000\u0000\u0000\uA961\uCC43\u0000\uA95F"+
-            "\uA960\uA95E\uD15A\u0000\u0000\u0000\uABB6\uABB5"+
-            "\uABB7\uABB4\u0000\uCE61\uA962\uABB3\u0000\uAE4D"+
-            "\uAE4E\u0000\uAE4F\u0000\uD4CD\u0000\u0000\u0000"+
-            "\uB3FE\uD8B4\uB0F8\u0000\u0000\u0000\u0000\uB6F8"+
-            "\u0000\uB9DD\uB9DC\uE16A\u0000\uBC5D\uBEC4\u0000"+
-            "\uEFC0\uF6DA\uF7D4\uA46B\uA5A3\u0000\uA5A4\uC9D1"+
-            "\uA66C\uA66F\u0000\uC9CF\uC9CD\uA66E\uC9D0\uC9D2"+
-            "\uC9CC\uA671\uA670\uA66D\uA66B\uC9CE\u0000\u0000"+
-            "\u0000\u0000\uA7B3\u0000\u0000\uA7B0\uCAB6\uCAB9"+
-            "\uCAB8\u0000\uA7AA\uA7B2\u0000\u0000\uA7AF\uCAB5"+
-            "\uCAB3\uA7AE\u0000\u0000\u0000\uA7A9\uA7AC\u0000"+
-            "\uCAB4\uCABB\uCAB7\uA7AD\uA7B1\uA7B4\uCAB2\uCABA"+
-            "\uA7AB\u0000\u0000\u0000\u0000\u0000\uA967\uA96F"+
-            "\u0000\uCC4F\uCC48\uA970\uCC53\uCC44\uCC4B\u0000"+
-            "\u0000\uA966\uCC45\uA964\uCC4C\uCC50\uA963\u0000"+
-            "\uCC51\uCC4A\u0000\uCC4D\u0000\uA972\uA969\uCC54"+
-            "\uCC52\u0000\uA96E\uA96C\uCC49\uA96B\uCC47\uCC46"+
-            "\uA96A\uA968\uA971\uA96D\uA965\u0000\uCC4E\u0000"+
-            "\uABB9\u0000\uABC0\uCE6F\uABB8\uCE67\uCE63\u0000"+
-            "\uCE73\uCE62\u0000\uABBB\uCE6C\uABBE\uABC1\u0000"+
-            "\uABBC\uCE70\uABBF\u0000\uAE56\uCE76\uCE64\u0000"+
-            "\u0000\uCE66\uCE6D\uCE71\uCE75\uCE72\uCE6B\uCE6E"+
-            "\u0000\u0000\uCE68\uABC3\uCE6A\uCE69\uCE74\uABBA"+
-            "\uCE65\uABC2\u0000\uABBD\u0000\u0000\u0000\u0000"+
-            "\u0000\uAE5C\uD162\u0000\uAE5B\u0000\u0000\uD160"+
-            "\u0000\uAE50\u0000\uAE55\u0000\uD15F\uD15C\uD161"+
-            "\uAE51\uD15B\u0000\uAE54\uAE52\u0000\uD163\uAE53"+
-            "\uAE57\u0000\u0000\uAE58\u0000\uAE5A\u0000\u0000"+
-            "\u0000\uAE59\u0000\u0000\u0000\uD15D\uD15E\u0000"+
-            "\u0000\u0000\u0000\uD164\u0000\uD4D4\uB0F9\uD8C2"+
-            "\uD4D3\uD4E6\u0000\u0000\uB140\u0000\uD4E4\u0000"+
-            "\uB0FE\uB0FA\uD4ED\uD4DD\uD4E0\u0000\uB143\uD4EA"+
-            "\uD4E2\uB0FB\uB144\u0000\uD4E7\uD4E5\u0000\u0000"+
-            "\uD4D6\uD4EB\uD4DF\uD4DA\u0000\uD4D0\uD4EC\uD4DC"+
-            "\uD4CF\u0000\uB142\uD4E1\uD4EE\uD4DE\uD4D2\uD4D7"+
-            "\uD4CE\u0000\uB141\u0000\uD4DB\uD4D8\uB0FC\uD4D1"+
-            "\u0000\uD4E9\uB0FD\u0000\uD4D9\uD4D5\u0000\u0000"+
-            "\uD4E8\u0000\u0000\u0000\u0000\u0000\u0000\uB440"+
-            "\uD8BB\u0000\uD8B8\uD8C9\uD8BD\uD8CA\u0000\uB442"+
-            "\u0000\u0000\u0000\uD8C6\uD8C3\u0000\u0000\u0000"+
-            "\u0000\u0000\uD8C4\uD8C7\uD8CB\u0000\uD4E3\uD8CD"+
-            "\uDD47\u0000\uB443\uD8CE\uD8B6\uD8C0\u0000\uD8C5"+
-            "\u0000\u0000\uB441\uB444\uD8CC\uD8CF\uD8BA\uD8B7"+
-            "\u0000\u0000\uD8B9\u0000\u0000\uD8BE\uD8BC\uB445"+
-            "\u0000\uD8C8\u0000\u0000\uD8BF\u0000\uD8C1\uD8B5"+
-            "\uDCFA\uDCF8\uB742\uB740\uDD43\uDCF9\uDD44\uDD40"+
-            "\uDCF7\uDD46\uDCF6\uDCFD\uB6FE\uB6FD\uB6FC\uDCFB"+
-            "\uDD41\uB6F9\uB741\u0000\uDCF4\u0000\uDCFE\uDCF3"+
-            "\uDCFC\uB6FA\uDD42\uDCF5\uB6FB\uDD45\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uE16E\uB9E2\uB9E1"+
-            "\uB9E3\uE17A\uE170\uE176\uE16B\uE179\uE178\uE17C"+
-            "\uE175\uB9DE\uE174\uB9E4\u0000\uE16D\uB9DF\u0000"+
-            "\uE17B\uB9E0\uE16F\uE172\uE177\uE171\uE16C\u0000"+
-            "\u0000\u0000\u0000\uE173\uE555\uBC61\uE558\uE557"+
-            "\uE55A\uE55C\u0000\uBC5F\u0000\uE556\u0000\uE554"+
-            "\u0000\uE55D\uE55B\uE559\u0000\uE55F\u0000\uE55E"+
-            "\uBC63\uBC5E\u0000\uBC60\uBC62\u0000\u0000\uE560"+
-            "\uE957\u0000\u0000\uE956\uE955\u0000\uE958\uE951"+
-            "\u0000\uE952\uE95A\uE953\u0000\uBEC5\uE95C\u0000"+
-            "\uE95B\uE954\u0000\uECD1\uC0A8\uECCF\uECD4\uECD3"+
-            "\uE959\u0000\uC0A7\u0000\uECD2\uECCE\uECD6\uECD5"+
-            "\uC0A6\u0000\uECD0\u0000\uBEC6\u0000\u0000\u0000"+
-            "\uC254\u0000\u0000\u0000\uEFC1\uF1FA\uF1FB\uF1FC"+
-            "\uC45C\u0000\u0000\uC45D\u0000\uF443\u0000\uF5C8"+
-            "\uF5C7\u0000\u0000\uF6DB\uF6DC\uF7D5\uF8A7\u0000"+
-            "\uA46C\uA46D\u0000\uA46E\uA4D5\uA5A5\uC9D3\uA672"+
-            "\uA673\u0000\uA7B7\uA7B8\uA7B6\uA7B5\u0000\uA973"+
-            "\u0000\u0000\uCC55\uA975\uA974\uCC56\u0000\u0000"+
-            "\u0000\uABC4\u0000\uAE5D\uD165\u0000\uD4F0\u0000"+
-            "\uB145\uB447\uD4EF\uB446\u0000\uB9E5\u0000\uE17D"+
-            "\uBEC7\u0000\uC0A9\uECD7\u0000\uC45E\u0000\uC570"+
-            "\u0000\uC972\u0000\uA5A6\uC973\uA676\u0000\uA674"+
-            "\uA675\uA677\u0000\uA7BA\uA7B9\u0000\uCABC\uA7BB"+
-            "\u0000\u0000\uCABD\uCC57\u0000\uCC58\u0000\uA976"+
-            "\uA978\uA97A\uA977\uA97B\uA979\u0000\u0000\u0000"+
-            "\u0000\u0000\uABC8\uABC5\uABC7\uABC9\uABC6\uD166"+
-            "\uCE77\u0000\u0000\u0000\uD168\uD167\uAE63\u0000"+
-            "\uAE5F\u0000\u0000\uAE60\uAE62\uAE64\uAE61\u0000"+
-            "\uAE66\uAE65\u0000\u0000\u0000\u0000\u0000\uB14A"+
-            "\uD4F2\uD4F1\uB149\u0000\uB148\uB147\uB14B\uB146"+
-            "\u0000\u0000\uD8D5\uD8D2\uB449\uD8D1\uD8D6\u0000"+
-            "\uB44B\uD8D4\uB448\uB44A\uD8D3\u0000\uDD48\u0000"+
-            "\uDD49\uDD4A\u0000\u0000\u0000\u0000\uB9E6\uB9EE"+
-            "\uE17E\uB9E8\uB9EC\uE1A1\uB9ED\uB9E9\uB9EA\uB9E7"+
-            "\uB9EB\uBC66\uD8D0\uBC67\uBC65\u0000\uBC64\uE95D"+
-            "\uBEC8\uECD8\uECD9\u0000\u0000\uC364\uC45F\u0000"+
-            "\uA46F\u0000\uA678\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uABCA\u0000\uD169\uAE67\u0000\u0000\uB14E"+
-            "\uB14D\uB14C\uB44C\uB44D\uD8D7\uB9EF\uBEC9\uA470"+
-            "\uC95C\uA4D6\uC974\u0000\u0000\uC9D4\uA679\u0000"+
-            "\u0000\u0000\uA97C\u0000\u0000\u0000\u0000\uDD4B"+
-            "\u0000\u0000\uA471\u0000\uA4D7\uC9D5\u0000\u0000"+
-            "\uCABE\u0000\uCABF\u0000\uA7BC\u0000\u0000\u0000"+
-            "\uD8D8\uB44E\u0000\uDD4C\u0000\u0000\u0000\uC0AA"+
-            "\uA472\uA4A8\uA4D8\uC975\uA5A7\u0000\uA7C0\uA7BF"+
-            "\uA7BD\uA7BE\u0000\u0000\uCC59\uA97E\uA9A1\uCC5A"+
-            "\uA97D\u0000\u0000\uABCE\uCE78\uABCD\uABCB\uABCC"+
-            "\uAE6A\uAE68\u0000\u0000\uD16B\uAE69\uD16A\u0000"+
-            "\uAE5E\uD4F3\u0000\u0000\uB150\uB151\u0000\u0000"+
-            "\uB14F\u0000\uB9F0\uE1A2\uBC68\uBC69\u0000\uE561"+
-            "\uC0AB\uEFC2\uEFC3\u0000\uC4DD\uF8A8\uC94B\uA4D9"+
-            "\u0000\uA473\u0000\uC977\uC976\u0000\u0000\u0000"+
-            "\u0000\uA67A\uC9D7\uC9D8\uC9D6\u0000\uC9D9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uCAC7\u0000"+
-            "\uCAC2\uCAC4\uCAC6\uCAC3\uA7C4\uCAC0\u0000\uCAC1"+
-            "\uA7C1\uA7C2\uCAC5\uCAC8\uA7C3\uCAC9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uCC68\u0000\uCC62"+
-            "\uCC5D\uA9A3\uCC65\uCC63\uCC5C\uCC69\uCC6C\uCC67"+
-            "\uCC60\uA9A5\uCC66\uA9A6\uCC61\uCC64\uCC5B\uCC5F"+
-            "\uCC6B\uA9A7\u0000\uA9A8\u0000\uCC5E\uCC6A\uA9A2"+
-            "\uA9A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uCEAB\uCEA4"+
-            "\uCEAA\uCEA3\uCEA5\uCE7D\uCE7B\u0000\uCEAC\uCEA9"+
-            "\uCE79\u0000\uABD0\uCEA7\uCEA8\u0000\uCEA6\uCE7C"+
-            "\uCE7A\uABCF\uCEA2\uCE7E\u0000\u0000\uCEA1\uCEAD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uAE6F\u0000\uAE6E\u0000\uD16C\uAE6B\uD16E\u0000"+
-            "\uAE70\uD16F\u0000\u0000\uAE73\u0000\uAE71\uD170"+
-            "\uCEAE\uD172\u0000\uAE6D\u0000\uAE6C\u0000\uD16D"+
-            "\uD171\uAE72\u0000\u0000\u0000\u0000\uB153\uB152"+
-            "\u0000\u0000\u0000\uD4F5\uD4F9\uD4FB\uB154\uD4FE"+
-            "\u0000\uB158\uD541\u0000\uB15A\u0000\uB156\uB15E"+
-            "\u0000\uB15B\uD4F7\uB155\u0000\uD4F6\uD4F4\uD543"+
-            "\uD4F8\u0000\uB157\uD542\uB15C\uD4FD\uD4FC\uB15D"+
-            "\uD4FA\uB159\u0000\u0000\u0000\u0000\uD544\u0000"+
-            "\uD540\uD8E7\uD8EE\uD8E3\uB451\uD8DF\uD8EF\uD8D9"+
-            "\uD8EC\uD8EA\uD8E4\u0000\uD8ED\uD8E6\u0000\uD8DE"+
-            "\uD8F0\uD8DC\uD8E9\uD8DA\u0000\uD8F1\u0000\uB452"+
-            "\u0000\uD8EB\uDD4F\uD8DD\uB44F\u0000\uD8E1\u0000"+
-            "\uB450\uD8E0\uD8E5\u0000\u0000\uD8E2\u0000\u0000"+
-            "\u0000\uD8E8\u0000\u0000\u0000\u0000\uDD53\u0000"+
-            "\u0000\u0000\uDD56\uDD4E\u0000\uDD50\u0000\uDD55"+
-            "\uDD54\uB743\u0000\uD8DB\uDD52\u0000\u0000\uB744"+
-            "\u0000\uDD4D\uDD51\u0000\u0000\u0000\u0000\uE1A9"+
-            "\u0000\uE1B0\uE1A7\u0000\uE1AE\uE1A5\uE1AD\uE1B1"+
-            "\uE1A4\uE1A8\uE1A3\u0000\uB9F1\u0000\uE1A6\uB9F2"+
-            "\uE1AC\uE1AB\uE1AA\u0000\u0000\uE1AF\u0000\u0000"+
-            "\u0000\u0000\uE565\uE567\uBC6B\uE568\u0000\uE563"+
-            "\u0000\uE562\uE56C\u0000\uE56A\uBC6A\uE56D\uE564"+
-            "\uE569\uE56B\uE566\u0000\u0000\u0000\u0000\uE961"+
-            "\uE966\uE960\uE965\u0000\uE95E\uE968\uE964\uE969"+
-            "\uE963\uE95F\uE967\u0000\uE96A\uE962\u0000\uECDA"+
-            "\uC0AF\u0000\uC0AD\u0000\uC0AC\uC0AE\u0000\u0000"+
-            "\uEFC4\u0000\uF172\uF1FD\u0000\u0000\uF444\uF445"+
-            "\u0000\uC460\u0000\uF5C9\u0000\uC4DE\u0000\uF5CA"+
-            "\u0000\uF6DE\uC572\u0000\uC571\uF6DD\uC5C9\u0000"+
-            "\uF7D6\u0000\u0000\u0000\u0000\uA474\uA67B\uC9DA"+
-            "\uCACA\uA8B5\uB15F\u0000\u0000\uA475\uA5AA\uA5A9"+
-            "\uA5A8\u0000\u0000\uA7C5\u0000\u0000\uAE74\u0000"+
-            "\uDD57\uA476\uA477\uA478\uA4DA\u0000\u0000\uABD1"+
-            "\u0000\uCEAF\u0000\u0000\u0000\uB453\uA479\uC95D"+
-            "\u0000\u0000\uA5AB\uA5AC\uC978\u0000\uA67C\u0000"+
-            "\u0000\u0000\uCACB\u0000\uA7C6\u0000\uCACC\u0000"+
-            "\u0000\uA9AE\u0000\u0000\uCC6E\uA9AC\uA9AB\uCC6D"+
-            "\uA9A9\uCC6F\uA9AA\uA9AD\u0000\uABD2\u0000\uABD4"+
-            "\uCEB3\uCEB0\uCEB1\uCEB2\uCEB4\uABD3\u0000\u0000"+
-            "\uD174\uD173\u0000\uAE76\u0000\uAE75\u0000\u0000"+
-            "\u0000\u0000\u0000\uB162\uD546\u0000\uB161\uB163"+
-            "\uB160\u0000\u0000\u0000\u0000\uB455\uD545\u0000"+
-            "\uB456\uD8F3\u0000\uB457\uD8F2\uB454\u0000\u0000"+
-            "\u0000\u0000\uDD5A\uDD5C\uB745\uDD5B\uDD59\uDD58"+
-            "\u0000\u0000\u0000\uE1B4\uB9F7\uB9F5\u0000\uB9F6"+
-            "\uE1B2\uE1B3\u0000\uB9F3\uE571\uE56F\u0000\uBC6D"+
-            "\uE570\uBC6E\uBC6C\uB9F4\u0000\u0000\uE96D\uE96B"+
-            "\uE96C\uE56E\uECDC\uC0B0\uECDB\uEFC5\uEFC6\uE96E"+
-            "\uF1FE\u0000\uA47A\uA5AD\uA67E\uC9DB\uA67D\u0000"+
-            "\uA9AF\uB746\u0000\uA4DB\uA5AE\uABD5\uB458\u0000"+
-            "\uC979\u0000\uC97A\u0000\uC9DC\u0000\u0000\uA7C8"+
-            "\uCAD0\uCACE\uA7C9\uCACD\uCACF\uCAD1\u0000\uA7C7"+
-            "\u0000\u0000\u0000\u0000\u0000\uA9B3\uA9B4\uA9B1"+
-            "\u0000\u0000\uA9B0\uCEB8\uA9B2\u0000\u0000\u0000"+
-            "\uABD6\u0000\uCEB7\uCEB9\uCEB6\uCEBA\uABD7\uAE79"+
-            "\uD175\u0000\uD177\uAE77\uD178\uAE78\uD176\u0000"+
-            "\uCEB5\uD547\uD54A\uD54B\uD548\uB167\uB166\uB164"+
-            "\uB165\uD549\u0000\u0000\u0000\u0000\uB168\u0000"+
-            "\u0000\uB45A\uB45B\u0000\uB45C\uDD5D\uDD5F\uDD61"+
-            "\uB748\uB747\uB459\uDD60\uDD5E\u0000\uE1B8\u0000"+
-            "\u0000\uE1B6\uE1BC\uB9F8\uE1BD\uE1BA\uB9F9\uE1B7"+
-            "\uE1B5\uE1BB\uBC70\uE573\uE1B9\uBC72\uE574\uBC71"+
-            "\uBC74\uE575\uBC6F\uBC73\u0000\uE973\uE971\uE970"+
-            "\uE972\uE96F\u0000\u0000\uC366\u0000\uF446\uF447"+
-            "\u0000\uF5CB\uF6DF\uC655\u0000\u0000\uA9B5\uA7CA"+
-            "\u0000\u0000\uABD8\u0000\u0000\u0000\uA47B\uA4DC";
-
-        private final static String innerIndex2=
-            "\u0000\uA5AF\uC9DD\u0000\uA7CB\uCAD2\u0000\uCEBB"+
-            "\uABD9\u0000\uB9FA\uA47C\u0000\u0000\u0000\uA6A1"+
-            "\u0000\u0000\uB749\uA47D\uA4DD\uA4DE\u0000\uA5B1"+
-            "\uA5B0\u0000\uC9DE\uA6A2\u0000\uCAD3\u0000\uA7CC"+
-            "\u0000\u0000\uCC71\uCC72\uCC73\u0000\uA9B6\uA9B7"+
-            "\uCC70\uA9B8\u0000\u0000\u0000\uABDA\uCEBC\u0000"+
-            "\uD17A\uAE7A\u0000\uD179\u0000\uB169\uD54C\uB16A"+
-            "\uD54D\u0000\u0000\u0000\uB45D\u0000\u0000\u0000"+
-            "\uDD62\u0000\u0000\uE1BF\uE1BE\u0000\uB9FB\u0000"+
-            "\uBC75\uE576\uBECA\uE974\uC0B1\u0000\uC573\uF7D8"+
-            "\u0000\u0000\u0000\u0000\uCC74\u0000\uCEBD\uB16B"+
-            "\uD8F4\uB74A\u0000\u0000\u0000\uC255\u0000\u0000"+
-            "\u0000\u0000\uA7CE\u0000\uA7CD\uABDB\u0000\uD17B"+
-            "\u0000\uB16D\uB343\uB16E\uB16C\uB45E\u0000\uE1C0"+
-            "\uB9FC\uBC76\u0000\uC94C\uC9DF\u0000\uCAD5\uA7CF"+
-            "\uCAD4\uA7D0\u0000\u0000\uA9BC\uCC77\uCC76\uA9BB"+
-            "\uA9B9\uA9BA\uCC75\u0000\u0000\uABDD\uCEBE\uABE0"+
-            "\uABDC\uABE2\uABDE\uABDF\uABE1\u0000\u0000\u0000"+
-            "\uAE7D\uAE7C\uAE7B\u0000\u0000\u0000\uD54F\uB16F"+
-            "\uB172\uB170\u0000\uD54E\uB175\u0000\uB171\uD550"+
-            "\uB174\uB173\u0000\u0000\u0000\uD8F6\uD8F5\u0000"+
-            "\uB461\uB45F\uB460\uD8F7\uB74B\uDD64\uB74C\uDD63"+
-            "\u0000\u0000\uE577\u0000\u0000\uBC78\uE1C1\uBC77"+
-            "\u0000\uB9FD\u0000\uECDE\uE975\uC0B2\uECDD\uF240"+
-            "\uF448\uF449\u0000\uA4DF\u0000\uA5B2\u0000\u0000"+
-            "\u0000\uC97B\u0000\u0000\uA7D2\uA7D4\u0000\uC9E2"+
-            "\uCAD8\uCAD7\uCAD6\u0000\uC9E1\uC9E0\uA6A4\uA7D3"+
-            "\uA7D1\uA6A3\u0000\u0000\u0000\uA9BD\uCC78\u0000"+
-            "\uA9BE\uCADD\u0000\uCADF\uCADE\uCC79\u0000\u0000"+
-            "\uCADA\u0000\uA7D8\uA7D6\u0000\uCAD9\uCADB\uCAE1"+
-            "\u0000\uA7D5\u0000\uCADC\uCAE5\uA9C0\u0000\uCAE2"+
-            "\uA7D7\u0000\uCAE0\uCAE3\u0000\uA9BF\u0000\uA9C1"+
-            "\uCAE4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uCCAF\uCCA2\uCC7E\uCCAE\uCCA9\uABE7\uA9C2"+
-            "\uCCAA\uCCAD\uABE3\uCCAC\uA9C3\uA9C8\uA9C6\uCCA3"+
-            "\u0000\uCC7C\uCCA5\uA9CD\uCCB0\uABE4\uCCA6\u0000"+
-            "\uABE5\uA9C9\uCCA8\u0000\uCECD\uABE6\uCC7B\uA9CA"+
-            "\uABE8\uA9CB\uA9C7\uA9CC\uCCA7\uCC7A\uCCAB\uA9C4"+
-            "\u0000\u0000\uCC7D\uCCA4\uCCA1\uA9C5\u0000\uCEBF"+
-            "\u0000\uCEC0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uCECA\uD1A1\uCECB\uABEE\uCECE\uCEC4\uABED\uCEC6"+
-            "\u0000\uCEC7\u0000\u0000\uCEC9\uABE9\u0000\u0000"+
-            "\uAEA3\u0000\u0000\uCEC5\uCEC1\uAEA4\u0000\u0000"+
-            "\uCECF\uAE7E\uD17D\uCEC8\u0000\uD17C\uCEC3\uCECC"+
-            "\u0000\u0000\uABEC\uAEA1\uABF2\uAEA2\uCED0\uD17E"+
-            "\uABEB\uAEA6\uABF1\uABF0\uABEF\uAEA5\uCED1\uAEA7"+
-            "\uABEA\u0000\uCEC2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uB176"+
-            "\uD1A4\uD1A6\u0000\uD1A8\uAEA8\uAEAE\uD553\uD1AC"+
-            "\uD1A3\uB178\uD551\u0000\uAEAD\uAEAB\uD1AE\u0000"+
-            "\uD552\u0000\uD1A5\u0000\uAEAC\uD1A9\uAEAF\uD1AB"+
-            "\u0000\u0000\uAEAA\uD1AA\uD1AD\uD1A7\u0000\uAEA9"+
-            "\uB179\u0000\uD1A2\uB177\u0000\u0000\u0000\u0000"+
-            "\uB17A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uD555\uD55E\uB464\u0000\uB17C\uB1A3\uB465\uD560"+
-            "\uB1AA\uD8F9\uD556\uB1A2\uB1A5\uB17E\uD554\uD562"+
-            "\uD565\uD949\u0000\uD563\uD8FD\uB1A1\uB1A8\uB1AC"+
-            "\uD55D\uD8F8\uD561\uB17B\uD8FA\uD564\uD8FC\uD559"+
-            "\u0000\uB462\u0000\uD557\uD558\uB1A7\u0000\u0000"+
-            "\uB1A6\uD55B\uB1AB\uD55F\uB1A4\uD55C\u0000\uB1A9"+
-            "\uB466\uB463\uD8FB\u0000\uD55A\u0000\uB17D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uB46B\uB46F\uD940\uB751\uB46D\uD944\uB471\uDD65"+
-            "\uD946\uB753\uB469\uB46C\uD947\u0000\uD948\uD94E"+
-            "\uB473\uB754\u0000\uD94A\uD94F\uD943\uB75E\u0000"+
-            "\uB755\uB472\uD941\uD950\u0000\uB75D\uB470\uB74E"+
-            "\uD94D\u0000\uB474\uD945\uD8FE\uB46A\uD942\u0000"+
-            "\uD94B\u0000\uB74D\uB752\uB467\uD94C\u0000\uB750"+
-            "\u0000\u0000\u0000\uB468\u0000\u0000\u0000\uB75C"+
-            "\uE1C3\uDD70\u0000\uDD68\uE1C2\u0000\uDD6C\uDD6E"+
-            "\u0000\u0000\uDD6B\u0000\uB75B\u0000\uDD6A\uB75F"+
-            "\u0000\u0000\u0000\uE1D2\u0000\u0000\uB75A\uBA40"+
-            "\uDD71\uE1C4\u0000\u0000\uB758\uDD69\uDD6D\uB9FE"+
-            "\uB74F\uDD66\uDD67\uBA41\uB757\uB759\uB756\uDD6F"+
-            "\u0000\u0000\uE1C8\uE1C9\uE1CE\uBC7D\uE1D5\u0000"+
-            "\uBA47\u0000\uBA46\uE1D0\u0000\uBC7C\uE1C5\uBA45"+
-            "\u0000\uE1D4\uBA43\uBA44\u0000\uE1D1\uE5AA\uBC7A"+
-            "\uB46E\u0000\uE1D3\uBCA3\uE1CB\u0000\uBC7B\u0000"+
-            "\uBCA2\uE1C6\uE1CA\uE1C7\uE1CD\uBA48\uBC79\uBA42"+
-            "\u0000\uE57A\uE1CF\u0000\uBCA1\u0000\uBCA4\u0000"+
-            "\uE1CC\u0000\uBC7E\uE579\u0000\u0000\u0000\u0000"+
-            "\u0000\uE57E\uBECE\uE578\uE9A3\uE5A9\uBCA8\u0000"+
-            "\uBCA6\uBECC\uE5A6\uE5A2\uBCAC\u0000\uE978\u0000"+
-            "\u0000\u0000\uBCAA\uE5A1\u0000\uE976\u0000\uE5A5"+
-            "\u0000\uE5A8\uE57D\u0000\uBCAB\u0000\u0000\uBCA5"+
-            "\uE977\uBECD\uE5A7\uBCA7\uBCA9\uE5A4\uBCAD\uE5A3"+
-            "\uE57C\uE57B\uBECB\uE5AB\uE97A\uECE0\uBED0\u0000"+
-            "\uE9A2\u0000\uE97E\u0000\uECE1\u0000\uBED1\uE9A1"+
-            "\u0000\uE97C\uC0B4\uECDF\u0000\uE979\uE97B\uC0B5"+
-            "\uBED3\uC0B3\uBED2\uC0B7\uE97D\uBECF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uEFCF\u0000"+
-            "\uEFC7\u0000\u0000\u0000\u0000\u0000\uECE7\uEFC8"+
-            "\uECE3\u0000\u0000\uC256\uECE5\uECE4\uC0B6\uECE2"+
-            "\uECE6\uEFD0\uEFCC\uEFCE\u0000\uEFC9\uEFCA\u0000"+
-            "\uEFCD\uEFCB\uC367\u0000\u0000\uC36A\uC369\uC368"+
-            "\uC461\uF44A\uC462\uF241\uC4DF\uF5CC\uC4E0\uC574"+
-            "\uC5CA\uF7D9\u0000\uF7DA\uF7DB\u0000\u0000\uF9BA"+
-            "\uA4E0\uC97C\uA5B3\u0000\uA6A6\uA6A7\uA6A5\u0000"+
-            "\uA6A8\uA7DA\uA7D9\u0000\uCCB1\uA9CF\uA9CE\u0000"+
-            "\u0000\uD1AF\uB1AD\uB1AE\u0000\u0000\u0000\uB475"+
-            "\uDD72\uB760\uB761\uDD74\uDD76\uDD75\u0000\uE1D7"+
-            "\u0000\uE1D6\uBA49\uE1D8\u0000\uE5AC\uBCAE\u0000"+
-            "\uBED4\u0000\uC0B8\uC257\uC0B9\u0000\uA4E1\u0000"+
-            "\u0000\u0000\uCAE6\u0000\u0000\uCCB2\uA9D1\uA9D0"+
-            "\uA9D2\uABF3\uCED2\uCED3\u0000\u0000\uD1B0\uAEB0"+
-            "\uB1AF\uB476\uD951\uA4E2\u0000\uA47E\uA4E3\u0000"+
-            "\uC97D\uA5B7\uA5B6\uA5B4\uA5B5\u0000\u0000\u0000"+
-            "\uA6AB\uC9E9\uC9EB\uA6AA\uC9E3\u0000\uC9E4\u0000"+
-            "\uC9EA\uC9E6\uC9E8\uA6A9\uC9E5\uC9EC\uC9E7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA7E1\uA7EA\uA7E8"+
-            "\uCAF0\uCAED\uCAF5\uA7E6\uCAF6\u0000\uA7DF\uCAF3"+
-            "\u0000\uA7E5\uCAEF\uCAEE\uA7E3\uCAF4\uA7E4\uA9D3"+
-            "\uA7DE\uCAF1\u0000\uCAE7\uA7DB\u0000\uA7EE\uCAEC"+
-            "\uCAF2\uA7E0\uA7E2\u0000\uCAE8\u0000\uCAE9\uCAEA"+
-            "\u0000\uA7ED\uA7E7\uA7EC\uCAEB\uA7EB\uA7DD\uA7DC"+
-            "\uA7E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA9E1\uCCBE\uCCB7\uA9DC\uA9EF\uCCB3\uCCBA\uCCBC"+
-            "\uCCBF\uA9EA\u0000\uCCBB\uCCB4\uA9E8\uCCB8\u0000"+
-            "\uCCC0\uA9D9\u0000\uCCBD\uA9E3\uA9E2\uCCB6\uA9D7"+
-            "\u0000\u0000\uA9D8\u0000\uA9D6\u0000\uA9EE\uA9E6"+
-            "\uA9E0\uA9D4\uCCB9\uA9DF\uA9D5\uA9E7\uA9F0\uCED4"+
-            "\uA9E4\uCCB5\uA9DA\uA9DD\uA9DE\u0000\uA9EC\uA9ED"+
-            "\uA9EB\uA9E5\uA9E9\uA9DB\uABF4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uCEDA\uAC41\uABF8\uABFA\uAC40"+
-            "\uCEE6\uABFD\uD1B1\uAEB1\uAC43\uCED7\uCEDF\uABFE"+
-            "\uCEDE\uCEDB\uCEE3\uCEE5\uABF7\uABFB\uAC42\uAEB3"+
-            "\uCEE0\uABF9\uAC45\uCED9\u0000\u0000\u0000\uABFC"+
-            "\uAEB2\uABF6\u0000\uCED6\uCEDD\uCED5\uCED8\uCEDC"+
-            "\uD1B2\uAC44\u0000\uCEE1\uCEE2\uCEE4\uABF5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uAEC1\uD1BE\uAEBF\uAEC0\uD1B4\uD1C4\u0000\uAEB6"+
-            "\u0000\u0000\uD566\uD1C6\uD1C0\u0000\uD1B7\u0000"+
-            "\uD1C9\uD1BA\uAEBC\uD57D\uD1BD\uAEBE\uAEB5\u0000"+
-            "\uD1CB\uD1BF\uAEB8\uD1B8\uD1B5\uD1B6\uAEB9\uD1C5"+
-            "\uD1CC\uAEBB\uD1BC\uD1BB\uAEC3\uAEC2\uAEB4\uAEBA"+
-            "\uAEBD\uD1C8\u0000\u0000\uD1C2\uAEB7\uD1B3\uD1CA"+
-            "\uD1C1\uD1C3\uD1C7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD567\u0000\uB1B7"+
-            "\uB1CB\uB1CA\u0000\uB1BF\u0000\uD579\uD575\uD572"+
-            "\uD5A6\uB1BA\uB1B2\u0000\u0000\uD577\uB4A8\uB1B6"+
-            "\uD5A1\u0000\uB1CC\uB1C9\uD57B\uD56A\u0000\u0000"+
-            "\uB1C8\uD5A3\uD569\uB1BD\uB1C1\uD5A2\u0000\uD573"+
-            "\uB1C2\uB1BC\uD568\u0000\uB478\uD5A5\uD571\uB1C7"+
-            "\uD574\uD5A4\uB1C6\u0000\uD952\u0000\uB1B3\uD56F"+
-            "\uB1B8\uB1C3\u0000\uB1BE\uD578\uD56E\uD56C\uD57E"+
-            "\uB1B0\uB1C4\uB1B4\uB477\uD57C\uB1B5\u0000\uB1B1"+
-            "\uB1C0\uB1BB\uB1B9\uD570\uB1C5\uD56D\uD57A\uD576"+
-            "\uD954\uD953\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD56B\uD964\u0000"+
-            "\uB47A\u0000\uD96A\uD959\uD967\uDD77\uB47D\uD96B"+
-            "\uD96E\uB47C\uD95C\uD96D\uD96C\uB47E\uD955\uB479"+
-            "\uB4A3\u0000\uB4A1\uD969\u0000\uD95F\uB4A5\uD970"+
-            "\uD968\uD971\uB4AD\uB4AB\uD966\uD965\u0000\uD963"+
-            "\uD95D\uB4A4\u0000\uB4A2\uD1B9\uD956\u0000\uDDB7"+
-            "\uD957\uB47B\uB4AA\uDD79\u0000\uB4A6\uB4A7\uD958"+
-            "\uD96F\uDD78\uD960\uD95B\uB4A9\uD961\uD95E\u0000"+
-            "\u0000\uB4AE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uB770\u0000"+
-            "\u0000\uDD7C\uDDB1\uDDB6\uDDAA\uB76C\uDDBB\uB769"+
-            "\uDD7A\u0000\uDD7B\uB762\uB76B\uDDA4\uB76E\uB76F"+
-            "\uDDA5\u0000\uDDB2\uDDB8\uB76A\u0000\uB764\uDDA3"+
-            "\uDD7D\uDDBA\uDDA8\uDDA9\uDD7E\uDDB4\uDDAB\uDDB5"+
-            "\uDDAD\u0000\uB765\uE1D9\uB768\uB766\uDDB9\uDDB0"+
-            "\uDDAC\u0000\u0000\uDDA1\uBA53\uDDAF\uB76D\uDDA7"+
-            "\u0000\uDDA6\u0000\u0000\u0000\uB767\uB763\uE1EE"+
-            "\uDDB3\uDDAE\u0000\uDDA2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uE1E9\u0000\uE1DA\uE1E5\u0000"+
-            "\uE1EC\uBA51\uB4AC\uE1EA\uBA4C\u0000\u0000\u0000"+
-            "\uBA4B\uE1F1\u0000\uE1DB\uE1E8\uE1DC\uE1E7\uBA4F"+
-            "\uE1EB\uD962\u0000\u0000\u0000\uE1F2\uE1E3\uBA52"+
-            "\uE5BA\uBCAF\u0000\uE1F0\uE1EF\uBA54\uE5AD\uBCB0"+
-            "\uE5AE\u0000\uE1DF\uE1E0\uE1DD\uE1E2\uE1DE\uE1F3"+
-            "\uBA4E\uBCB1\uBA50\uBA55\u0000\uE1E1\u0000\uE1ED"+
-            "\u0000\u0000\uE1E6\u0000\u0000\uE5B1\u0000\uBA4A"+
-            "\uBCB4\uE9AA\uE5B6\uE5B5\uE5B7\u0000\u0000\uE5B4"+
-            "\uBCB5\u0000\uBCBB\uBCB8\u0000\uBCB9\uE5AF\uE5B2"+
-            "\uE5BC\uBCC1\uBCBF\u0000\uE5B3\uD95A\uBCB2\uE5B9"+
-            "\uE5B0\u0000\uBCC2\uE5B8\uBA4D\uBCB7\uE1E4\u0000"+
-            "\u0000\uBCBA\u0000\uBCBE\uBCC0\uBCBD\uBCBC\u0000"+
-            "\uBCB6\uE5BB\uBCB3\uBCC3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uBED8\uBED9\uE9A9\uBEE2\uBEDF"+
-            "\u0000\uBED6\uBEDD\uE9AB\uBEDB\uBED5\u0000\uBEDC"+
-            "\u0000\uE9A8\uC0BB\uBED7\u0000\uBEDE\uC0BA\uE9A7"+
-            "\uE9A6\u0000\uBEE0\u0000\uBEE1\u0000\uE9A5\uE9A4"+
-            "\uC0BC\uE9AE\uBEDA\uE9AC\u0000\u0000\u0000\u0000"+
-            "\uC0BD\u0000\uC0C2\uECEA\uECEC\u0000\uC0BF\u0000"+
-            "\uECED\uECE9\u0000\uECEB\uC0C0\uC0C3\u0000\uECE8"+
-            "\uC0BE\uC0C1\uC259\uE9AD\uC258\u0000\u0000\uC25E"+
-            "\uEFD4\u0000\uC25C\uC25D\uEFD7\uEFD3\uC25A\uEFD1"+
-            "\uC36B\uEFD5\u0000\uEFD6\uEFD2\u0000\uC25B\uF242"+
-            "\u0000\uF245\u0000\u0000\uF246\uF244\uF247\uC36C"+
-            "\uF243\u0000\u0000\uF44E\uC464\uF44D\uF44C\uF44B"+
-            "\uC463\uC465\u0000\uF5CD\uC4E2\uC4E1\u0000\u0000"+
-            "\uF6E1\uF6E0\uF6E3\uC5CB\uC575\uF7DD\uF6E2\u0000"+
-            "\u0000\uF7DC\uC5CD\uC5CC\uC5F3\uF8A9\uF8EF\uA4E4"+
-            "\u0000\u0000\uD972\uE9AF\u0000\u0000\uA6AC\uCAF7"+
-            "\uA7F1\uA7EF\u0000\uA7F0\u0000\uCCC1\uA9F1\uAC46"+
-            "\u0000\uCEE7\u0000\uCEE8\u0000\uAC47\uD1CE\u0000"+
-            "\uAEC4\uAEC5\uD1CD\u0000\u0000\u0000\u0000\uB1D3"+
-            "\u0000\uB1CF\u0000\uD5A7\uB1D6\uB1D5\uB1CE\uB1D1"+
-            "\uB1D4\uB1D0\u0000\u0000\uD976\uB1CD\uB4AF\u0000"+
-            "\u0000\u0000\uB4B1\uB4B2\uD975\uD978\uB4B0\uD973"+
-            "\uD977\u0000\uD974\u0000\uB771\u0000\u0000\uDDBC"+
-            "\u0000\u0000\uBA56\uE1F4\uBEE3\uBCC4\uE5BD\uBCC5"+
-            "\uBCC6\uE5BF\uE5BE\uE5C0\uE9B1\u0000\u0000\uE9B0"+
-            "\uECEF\uECEE\uC0C4\uC0C5\uF248\u0000\u0000\uA4E5"+
-            "\u0000\u0000\u0000\u0000\uD979\u0000\u0000\u0000"+
-            "\uB4B4\uB4B3\uDDBD\u0000\uEFD8\uC4E3\uF7DE\uA4E6"+
-            "\u0000\uAEC6\u0000\uB1D8\uB1D7\uD97A\uD97B\uB772"+
-            "\uE1F5\uBA57\uE9B2\u0000\uA4E7\uA5B8\u0000\uA9F2"+
-            "\uCCC2\u0000\uCEE9\uAC48\uB1D9\u0000\uD97C\uB4B5"+
-            "\uB773\u0000\uE5C1\uE5C2\u0000\u0000\uECF0\uC25F"+
-            "\uF8F0\uA4E8\u0000\uCCC3\uA9F3\uAC49\u0000\uCEEA"+
-            "\u0000\uAEC7\uD1D2\uD1D0\uD1D1\uAEC8\uD1CF\u0000"+
-            "\u0000\u0000\u0000\uB1DB\uB1DC\uD5A8\uB1DD\uB1DA"+
-            "\uD97D\u0000\uD97E\uDDBE\u0000\u0000\uBA59\uBA58"+
-            "\u0000\u0000\uECF1\uEFD9\u0000\uF24A\uF249\uF44F"+
-            "\u0000\uC95E\uAC4A\u0000\u0000\uA4E9\uA5B9\u0000"+
-            "\uA6AE\uA6AD\u0000\u0000\uA6AF\uA6B0\uC9EE\uC9ED"+
-            "\uCAF8\uA7F2\uCAFB\uCAFA\uCAF9\uCAFC\u0000\u0000"+
-            "\u0000\u0000\uA9F4\uCCC9\uCCC5\uCCCE\u0000\u0000"+
-            "\uA9FB\u0000\uA9F9\uCCCA\uCCC6\uCCCD\uA9F8\uAA40"+
-            "\uCCC8\uCCC4\uA9FE\uCCCB\uA9F7\uCCCC\uA9FA\uA9FC"+
-            "\uCCD0\uCCCF\uCCC7\uA9F6\uA9F5\uA9FD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uCEEF\uCEF5\u0000\uAC50"+
-            "\uAC4D\uCEEC\uCEF1\u0000\uAC53\uAC4B\uCEF0\uAC4E"+
-            "\uAC51\u0000\u0000\uCEF3\u0000\uAC4C\uCEF8\uAC4F"+
-            "\u0000\uAC52\uCEED\uCEF2\uCEF6\uCEEE\uCEEB\u0000"+
-            "\u0000\uCEF7\uCEF4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uAED0\uAEC9\uAECC\u0000\uAECF\u0000\uD1D5"+
-            "\u0000\uAECA\uD1D3\u0000\uAECE\u0000\u0000\uAECB"+
-            "\u0000\uD1D6\uAECD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uD5AC\uB1DF\uD5AB\uD5AD\uB1DE\uB1E3\uD1D4"+
-            "\u0000\uD5AA\uD5AE\u0000\uB1E0\uD5A9\uB1E2\u0000"+
-            "\uB1E1\u0000\uD9A7\u0000\uD9A2\u0000\uB4B6\uB4BA"+
-            "\uB4B7\uD9A5\uD9A8\u0000\uB4B8\u0000\uB4B9\uB4BE"+
-            "\uDDC7\uD9A6\uB4BC\uD9A3\uD9A1\u0000\uB4BD\u0000"+
-            "\uD9A4\u0000\u0000\u0000\uB779\u0000\uDDBF\uB776"+
-            "\uB777\uB775\uDDC4\uDDC3\uDDC0\uB77B\u0000\u0000"+
-            "\uDDC2\uB4BB\u0000\u0000\uDDC6\uDDC1\uB778\uB774"+
-            "\uB77A\uDDC5\u0000\u0000\u0000\uBA5C\u0000\uE1F8"+
-            "\uE1F7\uE1F6\uBA5A\u0000\u0000\u0000\u0000\u0000"+
-            "\uBA5B\uE5C5\uE5C8\uBCC8\u0000\u0000\uBCC7\uE5C9"+
-            "\uE5C4\uBCCA\uE5C6\u0000\uBCC9\uE5C3\u0000\uE5C7"+
-            "\uBEE9\uBEE6\uE9BB\uE9BA\u0000\uE9B9\uE9B4\u0000"+
-            "\uE9B5\u0000\u0000\u0000\uBEE7\u0000\uBEE4\uBEE8"+
-            "\uE9B3\uBEE5\uE9B6\uE9B7\uE9BC\u0000\u0000\uE9B8"+
-            "\u0000\u0000\uECF2\u0000\u0000\u0000\uC0C7\u0000"+
-            "\uEFDC\uC0C6\uEFDA\uEFDB\uC260\uC36E\uF24B\u0000"+
-            "\uC36D\u0000\u0000\uF451\uF452\u0000\uC466\u0000"+
-            "\uF450\uC4E4\u0000\uF7DF\uC5CE\uF8AA\uF8AB\u0000"+
-            "\uA4EA\u0000\uA6B1\uA6B2\uA7F3\u0000\uCCD1\uAC54"+
-            "\uAED1\uB1E4\u0000\u0000\uB0D2\u0000\uB4BF\uB4C0"+
-            "\uB3CC\uD9A9\u0000\uB77C\uE1FA\uE1F9\u0000\u0000"+
-            "\uA4EB\uA6B3\uCCD2\uAA42\u0000\uAA41\u0000\uCEF9"+
-            "\uCEFA\u0000\uD1D7\uD1D8\uAED2\uAED3\u0000\uAED4"+
-            "\uD5AF\u0000\u0000\uB1E6\u0000\uB4C2\u0000\uB4C1"+
-            "\uDDC8\uDF7A\uE1FB\uE9BD\u0000\u0000\uC261\uC467"+
-            "\uA4EC\u0000\uA5BC\uA5BD\uA5BB\uA5BE\uA5BA\u0000"+
-            "\u0000\uA6B6\u0000\uC9F6\uA6B5\uA6B7\u0000\u0000"+
-            "\uC9F1\uC9F0\uC9F3\uC9F2\uC9F5\uA6B4\uC9EF\uC9F4"+
-            "\u0000\u0000\u0000\u0000\u0000\uCAFD\uA7FD\uCAFE"+
-            "\uCB43\uA7FC\u0000\uCB47\uCB42\uCB45\uA7F5\uA7F6"+
-            "\uA7F7\uA7F8\u0000\uA840\u0000\uCB41\uA7FA\uA841"+
-            "\u0000\uCB40\uCB46\u0000\uA7F9\uCB44\uA7FB\uA7F4"+
-            "\uA7FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uAA57\u0000\uCCD4\uAA43\u0000\uAA4D"+
-            "\uAA4E\uAA46\uAA58\uAA48\uCCDC\uAA53\uCCD7\uAA49"+
-            "\uCCE6\uCCE7\uCCDF\uCCD8\uAA56\uCCE4\uAA51\uAA4F"+
-            "\u0000\uCCE5\u0000\uCCE3\uCCDB\uCCD3\uCCDA\uAA4A"+
-            "\u0000\uAA50\u0000\uAA44\uCCDE\uCCDD\uCCD5\u0000"+
-            "\uAA52\uCCE1\uCCD6\uAA55\uCCE8\uAA45\u0000\uAA4C"+
-            "\uCCD9\uCCE2\uAA54\u0000\uAA47\uAA4B\u0000\uCCE0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uCF5B\uAC5C"+
-            "\uAC69\u0000\uCF56\uCF4C\uAC62\uCF4A\uAC5B\uCF45"+
-            "\uAC65\uCF52\uCEFE\uCF41\u0000\u0000\u0000\u0000"+
-            "\uCF44\uCEFB\uCF51\uCF61\uAC60\uCF46\uCF58\u0000"+
-            "\uCEFD\uCF5F\uCF60\uCF63\uCF5A\uCF4B\uCF53\uAC66"+
-            "\uAC59\uAC61\uAC6D\uAC56\uAC58\u0000\u0000\u0000"+
-            "\uCF43\uAC6A\uAC63\uCF5D\uCF40\uAC6C\uAC67\uCF49"+
-            "\u0000\u0000\uAC6B\uCF50\uCF48\uAC64\uCF5C\uCF54"+
-            "\u0000\uAC5E\uCF62\uCF47\uAC5A\uCF59\uCF4F\uAC5F"+
-            "\uCF55\uAC57\uCEFC\uAC68\uAEE3\uAC5D\uCF4E\uCF4D"+
-            "\uCF42\u0000\uCF5E\u0000\uCF57\u0000\u0000\uAC55"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uD1EC\uAEEA\uD1ED\u0000\uD1E1\uAEDF"+
-            "\uAEEB\u0000\uD1DA\u0000\uD1E3\uD1EB\u0000\uD1D9"+
-            "\uD1F4\uAED5\u0000\u0000\u0000\uD1F3\uD1EE\u0000"+
-            "\uD1EF\uAEDD\uAEE8\uD1E5\u0000\uD1E6\uD1F0\uD1E7"+
-            "\u0000\uD1E2\uD1DC\uD1DD\uD1EA\uD1E4\u0000\u0000"+
-            "\uAED6\uAEDA\uD1F2\uD1DE\uAEE6\uAEE2\u0000\u0000"+
-            "\uAEE5\uAEEC\uAEDB\uAEE7\uD1E9\uAEE9\uAED8\u0000"+
-            "\uAED7\uD1DB\u0000\uD1DF\uAEE0\uD1F1\uD1E8\uD1E0"+
-            "\uAEE4\uAEE1\u0000\uAED9\uAEDC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uD5C4\u0000\uD5B4\uD5B5\uD5B9"+
-            "\u0000\uD5C8\uD5C5\u0000\uD5BE\uD5BD\uB1ED\uD5C1"+
-            "\uD5D0\uD5B0\u0000\uD5D1\uD5C3\uD5D5\uD5C9\uB1EC"+
-            "\uD5C7\uB1E7\uB1FC\uB1F2\u0000\uB1F6\uB1F5\uD5B1"+
-            "\u0000\uD5CE\uD5D4\uD5CC\uD5D3\u0000\u0000\uD5C0"+
-            "\uD5B2\uD5D2\uD5C2\uB1EA\uB1F7\u0000\uD5CB\uB1F0"+
-            "\u0000\u0000\u0000\uD5CA\uD5B3\uB1F8\u0000\uB1FA"+
-            "\uD5CD\uB1FB\uB1E9\uD5BA\uD5CF\u0000\u0000\uB1EF"+
-            "\uB1F9\uD5BC\uD5C6\uD5B7\uD5BB\uB1F4\uD5B6\uB1E8"+
-            "\uB1F1\uB1EE\uD5BF\uAEDE\uD9C0\uB1EB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uB1F3\u0000\uD9C3\uD9D9"+
-            "\uD9CE\uB4D6\u0000\uB4D1\uD9BD\uB4D2\uD9CD\u0000"+
-            "\uD9C6\uD9D3\uB4CE\uD9AB\uD9D5\uB4C4\uD9B3\uB4C7"+
-            "\uB4C6\u0000\uB4D7\u0000\uD9AD\uD9CF\uD9D0\uB4C9"+
-            "\uB4C5\uD9BB\u0000\uB4D0\uD9B6\u0000\uD9D1\uB4CC"+
-            "\uD9C9\uD9D6\uD9B0\uD9B5\uD9AF\u0000\uB4CB\uD9C2"+
-            "\uDDDE\uD9B1\uB4CF\uD9BA\uD9D2\uB4CA\uD9B7\uD9B4"+
-            "\uD9C5\uB4CD\uB4C3\uB4D9\uD9C8\uD9C7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uD9AC\uB4C8\uD9D4\uD9BC"+
-            "\uD9BE\u0000\uD9CB\uD9CA\uD9AA\uB4D3\uB4D5\uD9B2"+
-            "\uD9B9\uD9C1\uB4D4\uD9B8\uD9C4\uD9D7\u0000\uD9CC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD9D8\u0000\u0000"+
-            "\u0000\u0000\uD9AE\u0000\u0000\u0000\u0000\uDDF2"+
-            "\uB7A6\u0000\uDDF0\uDDDB\uDDE0\uDDD9\u0000\uDDEC"+
-            "\uDDCB\uDDD2\u0000\uDDEA\uDDF4\uDDDC\u0000\uDDCF"+
-            "\uDDE2\uDDE7\uDDD3\u0000\uDDE4\uDDD0\u0000\u0000"+
-            "\uDDD7\uDDD8\uB7A8\uDDEB\uDDE9\u0000\uDDCC\uDDEE"+
-            "\u0000\uDDEF\uDDF1\uB7AC\uB7A4\u0000\uD5B8\uDDD4"+
-            "\uDDE6\uDDD5\uB7A1\uB7B1\uDDED\uB7AF\uB7AB\uDDCA"+
-            "\uB7A3\u0000\uDDCD\uB7B0\u0000\uDDDD\uDDC9\u0000"+
-            "\uB7A9\uDDE1\uDDD1\uB7AA\uDDDA\uB77E\uB4D8\uDDE3"+
-            "\uD9BF\uDDCE\u0000\u0000\uDDE8\uB7A5\uDDE5\uB7A2"+
-            "\uDDDF\uB7AD\uDDD6\uDDF3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uB7A7\uDEC6\u0000\u0000\uB7AE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uE24A\uE248\u0000"+
-            "\uE25E\uE246\u0000\uE258\uB77D\uBA5F\uE242\uE25D"+
-            "\u0000\uE247\uE255\uBA64\uBA5D\u0000\uE25B\u0000"+
-            "\uE240\uE25A\u0000\uBA6F\uE251\uE261\uBA6D\uE249"+
-            "\uBA5E\uE24B\uE259\uBA67\uE244\uBA6B\uBA61\uE24D"+
-            "\uE243\uE1FC\u0000\uE257\uBA68\uE260\uE1FD\uBA65"+
-            "\u0000\uE253\u0000\uBA66\uE245\uE250\uE24C\uE24E"+
-            "\u0000\uBA60\uE25F\uBA6E\uE24F\u0000\uE262\u0000"+
-            "\u0000\uE1FE\uE254\uBA63\uBA6C\uBA6A\uE241\uE256"+
-            "\uBA69\u0000\u0000\uBA62\uE252\u0000\u0000\u0000"+
-            "\u0000\uE25C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uE5D5\u0000\uE5D1\uE5CD\uE5E1\uE5DE"+
-            "\uBCCD\u0000\u0000\uE5E5\uE5D4\uBCD8\uE5DB\u0000"+
-            "\u0000\uE5D0\uE5DA\uBCD5\uE5EE\u0000\uE5EB\uE5DD"+
-            "\uE5CE\u0000\u0000\uE5E2\uE5E4\uBCD1\uE5D8\uE5D3"+
-            "\uE5CA\uBCCE\uBCD6\u0000\uE5E7\uBCD7\uE5CB\uE5ED"+
-            "\uE5E0\uE5E6\uBCD4\u0000\u0000\uE5E3\u0000\uE5EA"+
-            "\u0000\uBCD9\u0000\uBCD3\uE5DC\uE5CF\uE5EF\uE5CC"+
-            "\uE5E8\uBCD0\u0000\uE5D6\u0000\uE5D7\uBCCF\uBCCC"+
-            "\uE5D2\uBCD2\u0000\uBCCB\u0000\uE5E9\uE5EC\uE5D9"+
-            "\uE9CA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uE9C2\u0000\uE9BE\uBEF6\u0000\u0000"+
-            "\uBEEB\uBEF0\uBEEC\uE9CC\uE9D7\uBEEA\uE9C4\uE9CD"+
-            "\uE5DF\uE9CE\u0000\u0000\uBEF1\u0000\uE9DD\uBEF5"+
-            "\uBEF8\uE9C0\u0000\uBEF4\u0000\uE9DB\uE9DC\uE9D2"+
-            "\uE9D1\uE9C9\u0000\u0000\uE9D3\uE9DA\uE9D9\u0000"+
-            "\uBEEF\uBEED\uE9CB\uE9C8\u0000\uE9C5\uE9D8\uBEF7"+
-            "\uE9D6\uBEF3\uBEF2\u0000\uE9D0\u0000\uE9BF\uE9C1"+
-            "\uE9C3\uE9D5\uE9CF\uBEEE\u0000\uE9C6\u0000\uE9D4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uE9C7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC0CF\uED45"+
-            "\uC0C8\uECF5\u0000\uED41\uC0CA\uED48\u0000\uECFC"+
-            "\u0000\uECF7\u0000\u0000\uED49\uECF3\uECFE\u0000"+
-            "\uC0D1\uED44\uED4A\uECFD\uC0C9\uED40\uECF4\uC0D0"+
-            "\u0000\u0000\uED47\uECF9\uC0CC\u0000\uECFB\uECF8"+
-            "\uC0D2\uECFA\uC0CB\uC0CE\uED43\uECF6\uED46\u0000"+
-            "\uED42\u0000\u0000\u0000\uC263\uEFE7\uC268\uC269"+
-            "\u0000\u0000\u0000\uC262\uEFE6\u0000\uEFE3\uEFE4"+
-            "\uC266\uEFDE\uEFE2\uC265\u0000\uEFDF\u0000\u0000"+
-            "\u0000\u0000\uC267\uC264\u0000\uEFDD\uEFE1\uEFE5"+
-            "\u0000\u0000\u0000\uF251\uF24E\uF257\u0000\uF256"+
-            "\uF254\uF24F\u0000\uC372\u0000\u0000\u0000\u0000"+
-            "\u0000\uF250\uC371\uC0CD\uF253\uC370\uF258\uF252"+
-            "\uF24D\uEFE0\u0000\u0000\u0000\uC36F\u0000\uF24C"+
-            "\uF456\u0000\uF455\uF255\uC468\u0000\uF459\uF45A"+
-            "\uF454\uF458\u0000\uF453\u0000\u0000\u0000\u0000"+
-            "\uF5D1\uF457\uC4E7\uC4E5\uF5CF\u0000\u0000\u0000"+
-            "\uF5D2\u0000\uF5CE\uF5D0\uC4E6\u0000\u0000\u0000"+
-            "\uF6E5\uF6E6\uC576\uF6E4\u0000\u0000\u0000\uF7E2"+
-            "\uC5CF\uF7E0\uF7E1\uF8AC\u0000\u0000\uC656\uF8F3"+
-            "\uF8F1\uF8F2\uF8F4\u0000\u0000\u0000\uF9BB\u0000"+
-            "\uA4ED\uA6B8\u0000\uAA59\u0000\uCCE9\u0000\u0000"+
-            "\uCF64\u0000\u0000\u0000\uD1F5\uD1F7\u0000\uD1F6"+
-            "\u0000\uD1F8\uB1FD\uD5D7\uD1F9\u0000\uD5D6\uD5D8"+
-            "\uD5D9\uD9DA\uB4DB\uD9DB\uD9DD\uB4DC\uB4DA\uD9DC"+
-            "\u0000\uDDFA\uDDF8\uDDF7\u0000\uDDF6\uDDF5\uB7B2"+
-            "\uDDF9\uBA70\uE263\uE265\uBA71\uE264\uBCDB\u0000"+
-            "\uBCDA\uE5F0\u0000\u0000\uE9DF\uE9DE\uE9E0\u0000"+
-            "\u0000\uBEF9\u0000\uED4B\uC0D3\u0000\uEFE8\uC26A"+
-            "\uF259\uC577\uA4EE\uA5BF\uA6B9\uA842\uAA5A\uAA5B"+
-            "\u0000\u0000\uAC6E\u0000\u0000\uD1FA\u0000\u0000"+
-            "\u0000\u0000\uB7B3\u0000\u0000\u0000\uE6D1\uBEFA"+
-            "\uC26B\uA4EF\u0000\uA6BA\u0000\u0000\uCCEB\uAA5C"+
-            "\uCCEA\u0000\uCF65\uAC6F\uCF66\u0000\uAC70\u0000"+
-            "\uD1FC\uAEEE\uAEED\u0000\uD5DE\uD5DC\uD5DD\uD5DB"+
-            "\u0000\uD5DA\u0000\u0000\uD9DE\uD9E1\uB4DE\uD9DF"+
-            "\uB4DD\uD9E0\u0000\uDDFB\u0000\u0000\uE266\uE267"+
-            "\uE268\u0000\uE5F3\uE5F2\uBCDC\uE5F1\uE5F4\uE9E1"+
-            "\u0000\u0000\uE9E2\uE9E3\u0000\uED4C\uC0D4\uC26C"+
-            "\uF25A\u0000\uC4E8\uC95F\u0000\uAC71\uCF67\uAEEF"+
-            "\u0000\u0000\uB1FE\u0000\uB4DF\uD9E2\u0000\uB7B5"+
-            "\uB7B4\u0000\u0000\uE269\uE26A\uBCDD\uBCDE\uE9E5"+
-            "\uE9E4\uEFE9\uF7E3\uA4F0\uC960\uA5C0\u0000\uA843"+
-            "\uCB48\u0000\uAC72\uB7B6\uA4F1\u0000\uCF68\uAC73"+
-            "\uCF69\u0000\uC0D5\uA4F2\u0000\u0000\uCCEC\u0000"+
-            "\uCF6A\u0000\uD242\uD241\uD1FE\u0000\uD1FD\uD243"+
-            "\uD240\u0000\u0000\uB240\uB241\u0000\u0000\uB4E0"+
-            "\uD9E3\u0000\uD9E4\uD9E5\u0000\u0000\u0000\uDE41"+
-            "\uDE42\uDE40\u0000\uDDFD\uDDFE\uB7B7\uE26B\uE5F7"+
-            "\uE5F6\uE5F5\uE5F8\uE9E7\uE9E6\uBEFB\uE9E8\u0000"+
-            "\uC0D6\uED4D\u0000\uEFEA\uF25B\uF6E7\u0000\uA4F3"+
-            "\uA5C2\uA5C1\u0000\uAA5D\uC961\uC97E\uA6BB\u0000"+
-            "\uC9F7\uCB49\uCB4A\uAA5E\u0000\uCCED\u0000\uAC74"+
-            "\uCF6B\uCF6C\u0000\uAEF0\uAEF4\uD244\uAEF3\uAEF1"+
-            "\uAEF2\u0000\uD5DF\uB242\uB4E3\u0000\uB4E1\uB4E2"+
-            "\uD9E6\u0000\u0000\uBA72\uA4F4\u0000\uC9A1\u0000"+
-            "\uA5C3\u0000\u0000\uC9A4\u0000\u0000\uA5C6\uC9A3"+
-            "\uA5C5\uA5C4\uA844\uC9A2\u0000\u0000\uC9F8\u0000"+
-            "\u0000\u0000\uC9FC\uC9FE\uCA40\uA6C5\uA6C6\uC9FB"+
-            "\uA6C1\u0000\uC9F9\u0000\uC9FD\uA6C2\u0000\uA6BD"+
-            "\u0000\uA6BE\u0000\uA6C4\uC9FA\uA6BC\uA845\uA6BF"+
-            "\uA6C0\uA6C3\u0000\u0000\u0000\uCB5B\uCB59\uCB4C"+
-            "\uA851\uCB53\uA84C\uCB4D\u0000\uCB55\u0000\uCB52"+
-            "\uA84F\uCB51\uA856\uCB5A\uA858\u0000\uA85A\u0000"+
-            "\uCB4B\u0000\uA84D\uCB5C\u0000\uA854\uA857\u0000"+
-            "\uCD45\uA847\uA85E\uA855\uCB4E\uA84A\uA859\uCB56"+
-            "\uA848\uA849\uCD43\uCB4F\uA850\uA85B\uCB5D\uCB50"+
-            "\uA84E\u0000\uA853\uCCEE\uA85C\uCB57\uA852\u0000"+
-            "\uA85D\uA846\uCB54\uA84B\uCB58\uCD44\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uAA6A\uAA7A\uCCF5\uAA71\u0000"+
-            "\uCD4B\uAA62\u0000\uAA65\uCD42\u0000\uCCF3\uCCF7"+
-            "\uAA6D\uAA6F\uCCFA\uAA76\uAA68\uAA66\uAA67\uAA75"+
-            "\uCD47\uAA70\uCCF9\uCCFB\uAA6E\uAA73\uCCFC\uCD4A"+
-            "\u0000\uAC75\uAA79\u0000\uAA63\uCD49\u0000\uCD4D"+
-            "\uCCF8\uCD4F\uCD40\uAA6C\uCCF4\uAA6B\uAA7D\uAA72"+
-            "\u0000\uCCF2\uCF75\uAA78\uAA7C\uCD41\uCD46\u0000"+
-            "\uAA7E\uAA77\uAA69\uAA5F\u0000\uAA64\u0000\uCCF6"+
-            "\uAA60\uCD4E\u0000\uCCF0\uCCEF\uCCFD\uCCF1\uAA7B"+
-            "\uAEF5\uAA74\uCCFE\uAA61\u0000\uACA6\u0000\u0000"+
-            "\u0000\uCD4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uCF7C\uCFA1\u0000\uCFA4\uCF77\u0000\u0000\uCFA7"+
-            "\uCFAA\uCFAC\uCF74\uAC76\uAC7B\uD249\uACAD\uCFA5"+
-            "\uCFAD\uCF7B\uCF73\u0000\u0000\u0000\uD264\uAC7E"+
-            "\uCFA2\uCF78\uCF7A\uACA5\u0000\uCF7D\uAC7D\uCF70"+
-            "\uCFA8\u0000\uCFAB\u0000\u0000\uAC7A\u0000\uACA8"+
-            "\uCF6D\uACAA\uAC78\uACAE\uCFA9\uCF6F\uACAB\uD25E"+
-            "\uCD48\uAC7C\uAC77\uCF76\uCF6E\uACAC\uACA4\uCFA3"+
-            "\uACA9\uACA7\uCF79\uACA1\uCF71\uACA2\uACA3\uCF72"+
-            "\uCFA6\uAC79\uCF7E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uD24C\uAEFD\uAF43\u0000\u0000\u0000\uD255\uD25B"+
-            "\uD257\uD24A\uD24D\uD246\uD247\uAF4A\uAEFA\uD256"+
-            "\uD25F\uAF45\uAEF6\u0000\uAF40\uD24E\uAF42\uD24F"+
-            "\uD259\u0000\u0000\u0000\uAF44\uD268\uD248\uAEFC"+
-            "\uAEFB\uAF48\uD245\uD266\uD25A\uD267\uD261\uD253"+
-            "\uD262\u0000\uD25C\uD265\uD263\uAF49\uD254\uAEF9"+
-            "\uAEF8\uAF41\uAF47\uD260\uAF46\uD251\uB243\u0000"+
-            "\uD269\uD250\uD24B\uAEFE\uAF4B\uAEF7\u0000\uD258"+
-            "\uD25D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uB265\uD5E1\uD5E5\u0000\uB252\uB250"+
-            "\u0000\u0000\uB247\uD5E3\uD5E2\uB25B\u0000\uD5E8"+
-            "\uB255\u0000\uD5FA\uD647\uB244\uD5F7\uD5F0\uB267"+
-            "\uD5E0\u0000\uD5FC\u0000\uB264\uB258\uB263\uB24E"+
-            "\uD5EC\uD5FE\uD5F6\uB24F\uB249\uD645\u0000\uD5FD"+
-            "\uD640\uB251\uB259\uD642\uD5EA\uD5FB\uD5EF\uD644"+
-            "\uB25E\uB246\uB25C\uD5F4\uD5F2\uD5F3\uB253\uD5EE"+
-            "\uD5ED\uB248\uD5E7\uD646\uB24A\uD5F1\uB268\u0000"+
-            "\uB262\uD5E6\uB25F\uB25D\uB266\uD5F8\uB261\uD252"+
-            "\uD5F9\uB260\uD641\uB245\uD5F5\uB257\uD5E9\uB256"+
-            "\u0000\uB254\uB24C\uB24B\uD9E7\uD643\u0000\u0000"+
-            "\uD5EB\u0000\u0000\uD9FC\u0000\uB24D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uB541\uB25A\uB4EE\uD9F6\uB4FC\u0000\uD9EA"+
-            "\uB4EB\uB4E7\uDA49\uB4ED\uB4F1\uB4EC\uB4F5\uDA4D"+
-            "\uDA44\u0000\u0000\uD9F1\uB4FA\uB4F4\uD9FD\uB4E4"+
-            "\uDA4A\uDA43\uB4E8\uD9F7\uB4F7\uDA55\uDA56\u0000"+
-            "\uB4E5\uDA48\uB4F9\uD9FB\uD9ED\uD9EE\uB4FD\uD9F2"+
-            "\uD9F9\uD9F3\u0000\uB4FB\uB544\uD9EF\uD9E8\uD9E9"+
-            "\u0000\uD9EB\uB4EA\uD9F8\u0000\uB4F8\uB542\u0000"+
-            "\u0000\uD9FA\uDA53\uDA4B\uB4E6\uDA51\uB4F2\u0000"+
-            "\uB4F0\u0000\uDA57\uB4EF\uDA41\uD9F4\uD9FE\uB547"+
-            "\uDA45\uDA42\uD9F0\uB543\uDA4F\uDA4C\uDA54\uB4E9"+
-            "\uDA40\uB546\u0000\uDA47\u0000\u0000\uB4F3\uB4F6"+
-            "\u0000\uDA46\uB545\uD9F5\uD5E4\u0000\u0000\uDA50"+
-            "\uDA4E\uDA52\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uD9EC\uB540\u0000\u0000\u0000\uDE61\uDE60\uDE46"+
-            "\uB7BD\u0000\uDE5F\uDE49\uDE4A\u0000\uB7C7\uDE68"+
-            "\uB7C2\uDE5E\u0000\uDE43\uB7C8\uB7BE\uDE52\uDE48"+
-            "\uDE4B\uDE63\uB7B8\uDE6A\uDE62\uB7C1\uDE57\uB7CC"+
-            "\u0000\u0000\uB7CB\uB7C5\u0000\u0000\uDE69\uB7B9"+
-            "\uDE55\uDE4C\uDE59\uDE65\uB7CD\u0000\uB7BB\uDE54"+
-            "\u0000\uDE4D\uB7C4\u0000\uB7C3\uDE50\uDE5A\uDE64"+
-            "\uDE47\uDE51\uB7BC\uDE5B\uB7C9\uB7C0\uDE4E\uB7BF"+
-            "\uDE45\uDE53\uDE67\uB4FE\uBAB0\uDE56\uE26C\uDE58"+
-            "\uDE66\uB7C6\uDE4F\uB7BA\uB7CA\uBCF0\uDE44\u0000"+
-            "\uDE5D\u0000\u0000\u0000\uDE5C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uE2AA\uBAAD\uE27D\uE2A4\uBAA2"+
-            "\u0000\uE26E\uBAAF\u0000\uBA77\uE26D\uE2B0\uBAB1"+
-            "\uE271\uE2A3\u0000\uE273\uE2B3\uE2AF\uBA75\uBAA1";
-
-        private final static String innerIndex3=
-            "\uE653\uBAAE\uBA7D\uE26F\u0000\uE2AE\uBAA3\uE2AB"+
-            "\uE2B8\uE275\uE27E\u0000\u0000\uE2B6\uE2AC\uBA7C"+
-            "\u0000\u0000\uE27C\uBA76\uBA74\uBAA8\u0000\u0000"+
-            "\uE27A\uE277\uE278\u0000\uE2B2\u0000\uE2B7\uE2B5"+
-            "\uBA7A\uE2B9\uBA7E\uBAA7\u0000\uE270\uE5FA\uE279"+
-            "\u0000\uBA78\uBAAC\uBAA9\uBA7B\uE2A5\uE274\uBAAA"+
-            "\uE2A7\uBAA4\uBAA6\uBA73\u0000\uE2A9\uE2A1\uE272"+
-            "\uBAA5\uE2B1\uE2B4\uE27B\uE2A8\u0000\uBA79\uBCDF"+
-            "\uE2A6\uE5F9\u0000\uE2AD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uE276\uE644"+
-            "\uE64E\uBCE2\uE64D\uE659\uBCE4\uE64B\u0000\uE64F"+
-            "\uBCEF\u0000\uE646\uBCE7\u0000\uE652\uE9F0\uBCF3"+
-            "\uBCF2\uE654\uE643\uE65E\uBCED\u0000\uBCE3\uE657"+
-            "\u0000\uE65B\uE660\uE655\uE649\uBCE6\uBCE9\uBCF1"+
-            "\uBCEC\u0000\uE64C\uE2A2\u0000\u0000\uE648\uE65F"+
-            "\uBCE8\u0000\uBCEB\uE661\uBCE0\uE656\uE5FB\uE65C"+
-            "\uC0DF\u0000\uE64A\u0000\uBCE1\uE645\uBCE5\uE5FC"+
-            "\uBAAB\uE641\u0000\uE65A\uE642\uE640\uBCEA\u0000"+
-            "\uE658\u0000\uE5FE\uE651\uE650\uE65D\uE647\uBCEE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uE9F3\u0000"+
-            "\uBF49\uBEFE\uEA40\uE9EB\uBF41\uE9F7\uBF48\uBF43"+
-            "\uE9F5\uED4F\uE9FB\uEA42\uE9FA\uE9E9\uE9F8\uEA44"+
-            "\uEA46\uBEFD\uEA45\uBF44\uBF4A\u0000\uBF47\u0000"+
-            "\uE9FE\uBF46\uE9F9\u0000\uE9ED\uE9F2\u0000\uE9FD"+
-            "\uBF45\uBF42\uBEFC\uBF40\uE9F1\u0000\uE5FD\uE9EC"+
-            "\uE9EF\uEA41\uE9F4\uE9EA\uED4E\uEA43\uE9EE\uE9FC"+
-            "\u0000\u0000\u0000\u0000\uED51\uC0E3\u0000\u0000"+
-            "\uC0D7\u0000\u0000\uC0DB\uED53\uED59\uED57\uC0D9"+
-            "\uC0DA\uC0E1\uED5A\uED52\uC0DC\u0000\uED56\uED55"+
-            "\uED5B\uC0E2\u0000\uC0DD\uC0E0\uED54\uC0E4\uC0DE"+
-            "\uC0E5\uC0D8\uED58\u0000\uED50\u0000\u0000\uEFF7"+
-            "\u0000\u0000\uC271\uEFF4\uEFF6\u0000\uC26F\uEFF2"+
-            "\uEFF3\uEFEE\u0000\u0000\uE9F6\uEFEF\uC270\uEFEB"+
-            "\u0000\uC26D\uEFF8\uC26E\uEFEC\uEFED\uEFF1\uC273"+
-            "\u0000\uC272\u0000\u0000\uEFF0\uC378\uF25F\uF265"+
-            "\uC379\uF25C\uC376\uC373\uF267\uC377\u0000\uC374"+
-            "\uF25E\uF261\uF262\uF263\uF266\u0000\uEFF5\uF25D"+
-            "\uC375\uF264\uF268\uF260\u0000\u0000\u0000\uF45D"+
-            "\uC46A\uF460\uC46B\uF468\uF45F\uF45C\u0000\uF45E"+
-            "\uF462\uF465\uF464\uF467\uF45B\u0000\uC469\uF463"+
-            "\uF466\uF469\uF461\uF5D3\uF5D4\uF5D8\uF5D9\u0000"+
-            "\uF5D6\uF5D7\uF5D5\u0000\uC4E9\u0000\u0000\u0000"+
-            "\u0000\uC578\uF6EB\u0000\u0000\uF6E8\uF6E9\uF6EA"+
-            "\uC579\u0000\uF7E5\uF7E4\u0000\uF8AF\uC5F4\uF8AD"+
-            "\uF8B0\uF8AE\uF8F5\uC657\uC665\uF9A3\uF96C\u0000"+
-            "\uF9A2\uF9D0\uF9D1\uA4F5\u0000\u0000\u0000\u0000"+
-            "\uA6C7\uCA41\u0000\u0000\uCB5E\u0000\uA85F\u0000"+
-            "\uA862\u0000\uCB5F\u0000\uA860\uA861\u0000\u0000"+
-            "\u0000\u0000\uCD58\uCD5A\uCD55\uCD52\uCD54\u0000"+
-            "\u0000\u0000\uAAA4\u0000\u0000\u0000\uAAA2\u0000"+
-            "\u0000\uCD56\uAAA3\uCD53\uCD50\uAAA1\uCD57\u0000"+
-            "\uCD51\uAAA5\uCD59\u0000\u0000\u0000\u0000\uCFAF"+
-            "\u0000\uCFB3\u0000\u0000\uACB7\u0000\u0000\u0000"+
-            "\u0000\uCFB6\u0000\uACAF\uACB2\uACB4\uACB6\uACB3"+
-            "\uCFB2\uCFB1\u0000\uACB1\uCFB4\uCFB5\u0000\uCFAE"+
-            "\uACB5\u0000\uACB0\u0000\u0000\u0000\uCFB0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD277\uD278\uD279"+
-            "\uAF50\u0000\uAF4C\uD26E\u0000\uD276\uD27B\uAF51"+
-            "\u0000\uD26C\uD272\uD26B\uD275\u0000\u0000\uD271"+
-            "\uAF4D\uAF4F\uD27A\u0000\uD26A\uD26D\uD273\u0000"+
-            "\uD274\uD27C\uD270\u0000\uAF4E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uB26D"+
-            "\uD64E\u0000\u0000\uD650\uD64C\u0000\uD658\uD64A"+
-            "\uD657\uB269\uD648\uDA5B\uD652\uB26C\u0000\uD653"+
-            "\uD656\u0000\uD65A\u0000\uD64F\u0000\uD654\u0000"+
-            "\u0000\uB26A\uB26B\uD659\uD64D\uD649\uD65B\u0000"+
-            "\uD651\u0000\u0000\uD655\u0000\u0000\u0000\uD64B"+
-            "\u0000\uB548\uB549\uDA65\uB54F\u0000\uDA59\uDA62"+
-            "\uDA58\uB54C\uDA60\uDA5E\u0000\uDA5F\uB54A\u0000"+
-            "\uDA63\u0000\u0000\u0000\u0000\u0000\uDA5C\uDA5A"+
-            "\uB54B\uDA5D\uDA61\u0000\u0000\u0000\uB54D\u0000"+
-            "\u0000\u0000\uDA64\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uDE70\uDE77\uDE79\uDEA1\u0000\uB7DA\uDE6B"+
-            "\u0000\uB7D2\u0000\uDE7A\uB7D7\uDEA2\uB7CE\u0000"+
-            "\uDE7D\u0000\uDE6D\uDE7E\uDE6C\u0000\uB7DC\u0000"+
-            "\uDE78\uB7CF\uDEA3\u0000\uB7D4\uDE71\uB7D9\uDE7C"+
-            "\uDE6F\uDE76\uDE72\uDE6E\uB7D1\uB7D8\uB7D6\uB7D3"+
-            "\uB7DB\uB7D0\uDE75\u0000\uB7D5\u0000\uB54E\u0000"+
-            "\uDE7B\u0000\uDE73\u0000\u0000\u0000\u0000\u0000"+
-            "\uDE74\u0000\u0000\uE2C1\u0000\uBAB4\u0000\u0000"+
-            "\uE2BD\uE2C3\uE2BF\u0000\uBAB6\uE2BE\uE2C2\uE2BA"+
-            "\u0000\uE2BC\uBAB5\u0000\u0000\u0000\u0000\uE2C0"+
-            "\uE2BB\u0000\uBAB7\u0000\uBAB2\u0000\u0000\uE2C4"+
-            "\u0000\uBAB3\uE667\uE664\uE670\uE66A\uE66C\uBCF4"+
-            "\uE666\uE66E\u0000\u0000\uE66D\uE66B\u0000\uE671"+
-            "\uBCF7\uE668\uE66F\u0000\uBCF5\u0000\u0000\uE663"+
-            "\uE665\uBCF6\uE662\uE672\u0000\uE669\u0000\u0000"+
-            "\uEA4A\uBF51\u0000\u0000\uEA55\uEA53\uBF4B\uEA49"+
-            "\uEA4C\uEA4D\uEA48\uBF55\uBF56\uEA47\uEA56\uEA51"+
-            "\uBF4F\uBF4C\uEA50\uEA4E\u0000\u0000\uBF52\uEA52"+
-            "\uBF4D\u0000\uBF4E\u0000\uEA4F\uBF50\uEA4B\u0000"+
-            "\uEA54\uBF53\uEA57\uEA58\uBF54\u0000\u0000\uC0E7"+
-            "\uC0EE\uED5C\uED62\u0000\uED60\uC0EA\uC0E9\uC0E6"+
-            "\uED5E\u0000\u0000\u0000\uC0EC\uC0EB\uC0E8\u0000"+
-            "\uED61\uED5D\uED5F\u0000\uC0ED\u0000\u0000\u0000"+
-            "\uC277\uEFFB\u0000\uC274\uC275\uEFFD\uC276\uEFFA"+
-            "\u0000\uEFF9\uF26C\uEFFC\u0000\uF26D\uC37A\uF26B"+
-            "\u0000\u0000\uF26A\u0000\uF269\uC37B\u0000\u0000"+
-            "\uC46C\u0000\u0000\uF46A\uF46B\u0000\u0000\u0000"+
-            "\u0000\uF5DC\uF5DB\uC4EA\u0000\uF5DA\uF6EC\uF6ED"+
-            "\u0000\u0000\uF7E6\uF8B1\u0000\u0000\uF8F6\uF9BC"+
-            "\uC679\uF9C6\uA4F6\u0000\uAAA6\uAAA7\u0000\u0000"+
-            "\uACB8\u0000\u0000\u0000\u0000\uC0EF\uA4F7\u0000"+
-            "\uAAA8\uAF52\uB7DD\uA4F8\u0000\uB26E\uBAB8\uC962"+
-            "\u0000\uCFB7\uD27D\u0000\uE2C5\u0000\uC0F0\uA4F9"+
-            "\uAAA9\uCFB8\uCFB9\uDA66\uB550\u0000\u0000\uDEA4"+
-            "\u0000\u0000\uB7DE\uE2C6\u0000\u0000\uBCF8\u0000"+
-            "\uC37C\uA4FA\uDA67\uA4FB\u0000\uA6C9\uCA42\uA6C8"+
-            "\uA865\uA864\uA863\uCB60\u0000\u0000\u0000\uAAAA"+
-            "\u0000\uAAAB\uCD5B\u0000\uCFBA\u0000\uCFBD\uACBA"+
-            "\uCFBB\u0000\uACB9\uCFBC\uACBB\u0000\uD2A2\uD2A1"+
-            "\uD27E\uAF53\u0000\uD65D\uD65E\uB26F\uD65C\uD65F"+
-            "\uB552\uB270\u0000\u0000\uB551\uDA6B\uDA6A\u0000"+
-            "\uDA68\uDA69\u0000\uDA6C\uDEA6\uDEA5\uDEA9\u0000"+
-            "\uDEA8\uDEA7\uBAB9\uE2C9\u0000\uE2C8\uBABA\uE2C7"+
-            "\uE673\u0000\uE674\uBCF9\u0000\uEA59\uEA5A\u0000"+
-            "\u0000\uF272\uC37D\uF271\uF270\uF26E\uF26F\uC4EB"+
-            "\uF46C\uF6EE\uF8F7\u0000\uA4FC\u0000\uC9A5\uA5C7"+
-            "\uC9A6\u0000\u0000\u0000\uCA43\uCA44\u0000\u0000"+
-            "\u0000\u0000\uCB66\u0000\u0000\uCB62\u0000\uCB61"+
-            "\uAAAC\uCB65\uA867\uCB63\uA866\uCB67\uCB64\u0000"+
-            "\u0000\uCD5F\uCFBE\uCD5D\uCD64\u0000\uAAAD\u0000"+
-            "\uAAB0\uCD65\uCD61\u0000\uCD62\u0000\uCD5C\uAAAF"+
-            "\uCD5E\uAAAE\uCD63\u0000\uCD60\u0000\u0000\uCFC2"+
-            "\uACBD\uACBE\u0000\uCFC5\uCFBF\u0000\uCFC4\u0000"+
-            "\uCFC0\uACBC\uCFC3\uCFC1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uD2A8\uD2A5\u0000\uD2A7\uAF58"+
-            "\uAF57\uAF55\uD2A4\uD2A9\uAF54\uAF56\uD2A6\uD667"+
-            "\uD2A3\uD2AA\u0000\u0000\u0000\u0000\u0000\uD662"+
-            "\uD666\u0000\uD665\uDA6E\uDA79\u0000\u0000\uD668"+
-            "\u0000\uD663\uDA6D\uB274\u0000\u0000\uB273\uD661"+
-            "\uD664\uB275\u0000\uB272\uB271\uD660\uD669\u0000"+
-            "\u0000\u0000\uDA70\uDA77\u0000\uB554\uDA76\uDA73"+
-            "\u0000\uB556\u0000\u0000\u0000\uDA75\u0000\u0000"+
-            "\uDA6F\uDA71\uDA74\uDA72\uB555\uDA78\uB553\uB7DF"+
-            "\u0000\u0000\uDEAD\uDEAC\uDEAA\u0000\uB7E2\uB7E1"+
-            "\uDEAE\u0000\uDEAB\uE2CA\uBABB\uB7E0\u0000\u0000"+
-            "\u0000\uDEB0\uDEAF\u0000\uE2CD\uE2CB\uBCFA\u0000"+
-            "\uBABC\uE2CC\uE676\u0000\u0000\u0000\u0000\uBCFB"+
-            "\uE675\uE67E\uE67D\uE67B\u0000\uE67A\uE677\uE678"+
-            "\uE679\uE67C\uE6A1\u0000\u0000\uEA5F\uEA5C\uEA5D"+
-            "\uBF57\uEA5B\uEA61\uEA60\uEA5E\u0000\uED64\uED65"+
-            "\uC0F1\u0000\uC0F2\uED63\u0000\uC279\uEFFE\uC278"+
-            "\uC37E\u0000\uC3A1\uC46D\uF46E\uF46D\uF5DD\uF6EF"+
-            "\uC57A\uF7E8\uF7E7\uF7E9\uA5C8\uCFC6\uAF59\uB276"+
-            "\uD66A\uA5C9\uC9A7\uA4FD\u0000\u0000\uCA45\u0000"+
-            "\u0000\u0000\uCB6C\uCB6A\uCB6B\uCB68\uA868\uCB69"+
-            "\u0000\u0000\u0000\u0000\u0000\uCD6D\u0000\uAAB3"+
-            "\uCD6B\uCD67\uCD6A\u0000\uCD66\uAAB5\uCD69\u0000"+
-            "\uAAB2\uAAB1\u0000\uAAB4\uCD6C\uCD68\u0000\u0000"+
-            "\u0000\u0000\uACC2\uACC5\uCFCE\uCFCD\uCFCC\uACBF"+
-            "\uCFD5\uCFCB\u0000\uACC1\uD2AF\u0000\uCFD2\uCFD0"+
-            "\uACC4\u0000\uCFC8\uCFD3\u0000\uCFCA\uCFD4\uCFD1"+
-            "\uCFC9\u0000\uACC0\uCFD6\uCFC7\uACC3\u0000\u0000"+
-            "\u0000\u0000\uD2B4\uD2AB\uD2B6\u0000\uD2AE\uD2B9"+
-            "\uD2BA\uD2AC\uD2B8\uD2B5\uD2B3\uD2B7\uAF5F\u0000"+
-            "\uAF5D\u0000\u0000\uD2B1\u0000\uD2AD\u0000\uD2B0"+
-            "\uD2BB\uD2B2\uAF5E\uCFCF\u0000\uAF5A\uAF5C\u0000"+
-            "\u0000\u0000\u0000\u0000\uD678\uD66D\uD66B\u0000"+
-            "\uD66C\u0000\uD673\u0000\uD674\uD670\uB27B\uD675"+
-            "\uD672\uD66F\u0000\uB279\uD66E\uB277\uB27A\uD671"+
-            "\uD679\uAF5B\uB278\uD677\uD676\uB27C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uDA7E\u0000"+
-            "\u0000\u0000\uDAA1\uB560\u0000\uDAA7\u0000\u0000"+
-            "\uDAA9\uDAA2\uB55A\uDAA6\uDAA5\uB55B\uB561\u0000"+
-            "\uB562\uDAA8\uB558\uDA7D\uDA7B\uDAA3\uDA7A\uB55F"+
-            "\uDA7C\uDAA4\uDAAA\uB559\uB55E\uB55C\uB55D\u0000"+
-            "\u0000\u0000\uB557\u0000\u0000\u0000\u0000\uB7E9"+
-            "\uDEB7\uB7E8\uDEBB\u0000\uDEB1\u0000\uDEBC\u0000"+
-            "\u0000\u0000\uDEB2\uDEB3\u0000\uDEBD\uDEBA\uDEB8"+
-            "\uDEB9\uDEB5\uDEB4\u0000\uDEBE\uB7E5\u0000\uDEB6"+
-            "\u0000\uB7EA\uB7E4\uB7EB\uB7EC\u0000\uB7E7\uB7E6"+
-            "\u0000\u0000\uE2CE\uBABE\uBABD\u0000\u0000\uE2D3"+
-            "\u0000\uBCFC\uBABF\u0000\u0000\uBAC1\uE2D4\uB7E3"+
-            "\uBAC0\uE2D0\uE2D2\uE2CF\u0000\uE2D1\u0000\u0000"+
-            "\u0000\uE6AB\u0000\u0000\uE6AA\uE6A7\uBD40\uEA62"+
-            "\uBD41\uE6A6\u0000\uBCFE\u0000\uE6A8\uE6A5\uE6A2"+
-            "\uE6A9\uE6A3\uE6A4\uBCFD\u0000\u0000\u0000\u0000"+
-            "\uED69\u0000\uEA66\u0000\uEA65\uEA67\u0000\uED66"+
-            "\uBF5A\u0000\uEA63\u0000\uBF58\u0000\uBF5C\uBF5B"+
-            "\uEA64\uEA68\u0000\uBF59\u0000\uED6D\uC0F5\uC27A"+
-            "\uC0F6\uC0F3\uED6A\uED68\u0000\uED6B\u0000\uED6E"+
-            "\uC0F4\uED6C\uED67\u0000\u0000\uF042\uF045\uF275"+
-            "\uF040\u0000\uF46F\uF046\u0000\uC3A2\uF044\uC27B"+
-            "\uF041\uF043\uF047\uF276\u0000\uF274\u0000\u0000"+
-            "\u0000\u0000\uC3A3\uF273\u0000\u0000\u0000\uC46E"+
-            "\u0000\u0000\u0000\u0000\uC4ED\uF6F1\uC4EC\uF6F3"+
-            "\uF6F0\uF6F2\uC5D0\uF8B2\uA5CA\uCD6E\uD2BC\uD2BD"+
-            "\uB27D\uDEBF\uBF5D\uC3A4\uC57B\uF8B3\uA5CB\u0000"+
-            "\uCD6F\uA260\u0000\u0000\uCFD7\u0000\uCFD8\u0000"+
-            "\u0000\u0000\u0000\u0000\uD2BE\uD2BF\uB27E\uB2A1"+
-            "\u0000\u0000\u0000\uDAAB\u0000\uDEC2\uDEC1\uDEC0"+
-            "\uE2D5\u0000\uE2D6\uE2D7\uBAC2\u0000\u0000\uE6AD"+
-            "\uE6AC\u0000\u0000\uEA69\uBF5E\uBF5F\u0000\uED72"+
-            "\uED6F\uED70\uED71\uF049\uF048\uC27C\uF277\uF5DE"+
-            "\uA5CC\u0000\uACC6\u0000\uB2A2\uDEC3\u0000\uA5CD"+
-            "\u0000\uD2C0\uB2A3\u0000\u0000\uB563\uB564\u0000"+
-            "\uA5CE\uA5CF\uCA46\uA86A\uA869\uACC7\uCFD9\uDAAC"+
-            "\uA5D0\uA5D1\uA5D2\uA5D3\u0000\u0000\u0000\uA86B"+
-            "\uA86C\uCB6E\uCB6D\u0000\u0000\uAAB6\uCD72\uCD70"+
-            "\uCD71\u0000\u0000\u0000\u0000\u0000\u0000\uCFDA"+
-            "\uCFDB\u0000\u0000\uACCB\uACC9\u0000\uACCA\uACC8"+
-            "\u0000\u0000\u0000\u0000\uAF60\u0000\u0000\u0000"+
-            "\u0000\uAF64\uAF63\uD2C1\uAF62\uAF61\u0000\uD2C2"+
-            "\u0000\u0000\uB2A6\uD67B\uD67A\uB2A4\uB2A5\u0000"+
-            "\u0000\u0000\uB566\uB565\uDAAE\u0000\u0000\uDAAD"+
-            "\uB2A7\u0000\u0000\u0000\u0000\u0000\uB7ED\uDEC5"+
-            "\uB7EE\uDEC4\u0000\u0000\u0000\uE2D8\uE6AE\uBD42"+
-            "\uEA6A\u0000\u0000\u0000\uED73\u0000\uC3A6\uC3A5"+
-            "\u0000\u0000\uC57C\uA5D4\uCD73\u0000\u0000\uB2A8"+
-            "\uE2D9\uBAC3\u0000\u0000\uCB6F\uCB70\u0000\u0000"+
-            "\uCD74\uAAB8\uAAB9\u0000\u0000\uAAB7\u0000\u0000"+
-            "\u0000\u0000\uACCF\uACD0\uACCD\uACCE\u0000\uCFDC"+
-            "\u0000\u0000\uCFDD\uACCC\u0000\u0000\u0000\u0000"+
-            "\uD2C3\u0000\uAF68\uAF69\u0000\uB2AB\uD2C9\u0000"+
-            "\uAF6E\uAF6C\uD2CA\uD2C5\uAF6B\uAF6A\uAF65\uD2C8"+
-            "\uD2C7\uD2C4\uAF6D\u0000\uD2C6\uAF66\u0000\uAF67"+
-            "\u0000\u0000\uB2AC\uD6A1\uD6A2\uB2AD\uD67C\uD67E"+
-            "\uD6A4\uD6A3\uD67D\u0000\uB2A9\uB2AA\u0000\uDAB6"+
-            "\uB56B\uB56A\uDAB0\uB568\u0000\uDAB3\uB56C\uDAB4"+
-            "\uB56D\uDAB1\uB567\uB569\uDAB5\u0000\uDAB2\uDAAF"+
-            "\u0000\u0000\u0000\u0000\u0000\uDED2\u0000\uDEC7"+
-            "\uB7F0\uB7F3\uB7F2\uB7F7\uB7F6\uDED3\uDED1\uDECA"+
-            "\uDECE\uDECD\uB7F4\uDED0\uDECC\uDED4\uDECB\uB7F5"+
-            "\uB7EF\uB7F1\u0000\uDEC9\u0000\u0000\u0000\u0000"+
-            "\uE2DB\uBAC7\uE2DF\uBAC6\uE2DC\uBAC5\u0000\uDEC8"+
-            "\uDECF\uE2DE\u0000\uBAC8\uE2E0\uE2DD\uE2DA\u0000"+
-            "\u0000\uE6B1\uE6B5\uE6B7\uE6B3\uE6B2\uE6B0\uBD45"+
-            "\uBD43\uBD48\uBD49\uE6B4\uBD46\uE6AF\uBD47\uBAC4"+
-            "\uE6B6\uBD44\u0000\u0000\u0000\uEA6C\u0000\uEA6B"+
-            "\uEA73\uEA6D\uEA72\uEA6F\uBF60\uEA71\u0000\u0000"+
-            "\uBF61\u0000\uBF62\u0000\uEA70\uEA6E\u0000\u0000"+
-            "\u0000\u0000\uC0F8\uED74\u0000\u0000\uC0F7\uED77"+
-            "\uED75\uED76\u0000\u0000\uC0F9\u0000\u0000\u0000"+
-            "\uF04D\u0000\uC2A1\uF04E\u0000\u0000\uC27D\uF04F"+
-            "\uC27E\uF04C\uF050\u0000\uF04A\u0000\u0000\uC3A7"+
-            "\uF278\uC3A8\uC46F\u0000\uF04B\uC470\u0000\u0000"+
-            "\u0000\uC4EE\uF5DF\u0000\uC57E\uF6F4\uC57D\u0000"+
-            "\uF7EA\uC5F5\uC5F6\u0000\u0000\uF9CC\u0000\u0000"+
-            "\uACD1\uCFDE\u0000\uB56E\uB56F\uA5D5\uA6CA\uCA47"+
-            "\u0000\uCB71\uA86D\u0000\uAABA\u0000\uACD2\uACD3"+
-            "\uACD4\uD6A6\uD2CB\uAF6F\u0000\u0000\uB2AE\uD6A5"+
-            "\u0000\u0000\uDAB8\uB571\u0000\uDAB7\uB570\u0000"+
-            "\u0000\uDED5\uBD4A\uE6BB\uE6B8\uE6B9\uE6BA\u0000"+
-            "\u0000\u0000\u0000\u0000\uED78\u0000\uF051\u0000"+
-            "\u0000\u0000\uF471\uF470\u0000\uF6F5\uA5D6\uCD75"+
-            "\uAF70\u0000\u0000\u0000\uB572\uDED6\u0000\u0000"+
-            "\uE2E1\u0000\uBD4B\uEA74\u0000\uF052\uF472\uA5D7"+
-            "\u0000\u0000\uAABB\uACD7\uCFDF\uACD8\uACD6\u0000"+
-            "\uACD5\uD2CC\uAF71\u0000\u0000\uAF72\uAF73\u0000"+
-            "\u0000\u0000\uB2B0\uD6A7\uB2AF\u0000\u0000\u0000"+
-            "\u0000\u0000\uDAB9\uB2B1\uB573\uDED7\uB7F8\uB7F9"+
-            "\u0000\uBAC9\u0000\uBACA\uBD4C\uBF64\uEA75\uBF63"+
-            "\u0000\uED79\uC0FA\u0000\uF053\uF473\uA5D8\uA86E"+
-            "\uCD78\uCD77\uAABC\uCD76\uAABD\uCD79\u0000\uCFE5"+
-            "\uACDB\uACDA\uCFE7\uCFE6\uACDF\u0000\uACDE\u0000"+
-            "\u0000\uACD9\u0000\uCFE1\uCFE2\uCFE3\u0000\uACE0"+
-            "\uCFE0\uACDC\uCFE4\uACDD\u0000\u0000\u0000\u0000"+
-            "\uD2CF\uD2D3\uD2D1\uD2D0\u0000\uD2D4\u0000\u0000"+
-            "\u0000\uD2D5\uD2D6\uD2CE\u0000\uD2CD\u0000\uAF75"+
-            "\uAF76\u0000\uD2D7\uD2D2\u0000\uD6B0\u0000\uD2D8"+
-            "\uAF77\uAF74\u0000\u0000\u0000\uD6AA\u0000\uD6A9"+
-            "\u0000\uD6AB\uD6AC\uD6AE\uD6AD\uD6B2\uB2B5\uB2B2"+
-            "\uB2B6\uD6A8\uB2B7\uD6B1\uB2B4\uD6AF\uB2B3\u0000"+
-            "\u0000\u0000\u0000\u0000\uDABC\uDABE\uDABA\uDABB"+
-            "\u0000\u0000\uDABF\uDAC1\uDAC2\uDABD\uDAC0\uB574"+
-            "\u0000\u0000\uDEDB\u0000\uDEE0\uDED8\uDEDC\u0000"+
-            "\u0000\uDEE1\uDEDD\uB7FA\uB843\u0000\uB7FD\uDED9"+
-            "\uDEDA\uBACE\uB846\uB7FE\u0000\uB844\uB7FC\uDEDF"+
-            "\uB845\uDEDE\uB841\uB7FB\uB842\uDEE2\uE2E6\uE2E8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uB840\u0000\u0000\uE2E3\uBACC\uE2E9\uBACD"+
-            "\uE2E7\uE2E2\uE2E5\uE2EA\uBACB\uE2E4\u0000\uBD4E"+
-            "\uE6BF\uE6BE\u0000\uBD51\uBD4F\uE6BC\uBD4D\uE6BD"+
-            "\u0000\uBD50\u0000\u0000\u0000\uEA7D\u0000\uEAA1"+
-            "\u0000\uEA7E\uEA76\uEA7A\uEA79\uEA77\uBF66\uBF67"+
-            "\uBF65\uEA78\uEA7B\uEA7C\u0000\uBF68\u0000\uC140"+
-            "\uEDA3\u0000\uC0FC\uED7B\uC0FE\uC141\u0000\u0000"+
-            "\uC0FD\uEDA2\uED7C\uC0FB\uEDA1\uED7A\uED7E\uED7D"+
-            "\u0000\u0000\uF055\uC2A4\uC2A5\uC2A2\u0000\uC2A3"+
-            "\u0000\u0000\uF054\u0000\uF27B\u0000\u0000\uC3A9"+
-            "\u0000\uF279\uF27A\u0000\uF474\uF477\uF475\uF476"+
-            "\uF5E0\u0000\u0000\uC4EF\uF7EB\uF8B4\u0000\uC5F7"+
-            "\uF8F8\uF8F9\uC666\uA5D9\uACE1\u0000\uDAC3\u0000"+
-            "\uDEE3\u0000\uA5DA\uA86F\u0000\uAABE\u0000\uCFE8"+
-            "\uCFE9\uAF78\u0000\u0000\uDAC4\uB575\uB847\uC142"+
-            "\uEDA4\uF27C\uF478\uA5DB\u0000\u0000\u0000\uCDA1"+
-            "\uCD7A\uCD7C\uCD7E\uCD7D\uCD7B\uAABF\u0000\u0000"+
-            "\u0000\u0000\uACE2\uCFF2\u0000\uCFED\uCFEA\u0000"+
-            "\u0000\uCFF1\u0000\u0000\uACE4\uACE5\uCFF0\uCFEF"+
-            "\uCFEE\uCFEB\uCFEC\uCFF3\uACE3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uAF7C\u0000\uAFA4"+
-            "\uAFA3\uD2E1\uD2DB\uD2D9\u0000\uAFA1\uD6B9\uAF7A"+
-            "\uD2DE\uD2E2\uD2E4\uD2E0\uD2DA\uAFA2\uD2DF\uD2DD"+
-            "\uAF79\uD2E5\uAFA5\uD2E3\uAF7D\uD2DC\u0000\uAF7E"+
-            "\uAF7B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uB2B9\u0000\uD6BA\u0000\u0000"+
-            "\uD6B3\uD6B5\uD6B7\u0000\uD6B8\uD6B6\uB2BA\u0000"+
-            "\uD6BB\u0000\uD6B4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uDAC8\uB576\uDAD0\u0000"+
-            "\uDAC5\u0000\uDAD1\u0000\uDAC6\uDAC7\u0000\u0000"+
-            "\uDACF\uDACE\uDACB\uB2B8\uB577\uDAC9\uDACC\uB578"+
-            "\uDACD\uDACA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uDEEE\u0000\uDEF2\uB84E\u0000\uE2F0\uB851"+
-            "\uDEF0\u0000\u0000\uDEED\uDEE8\uDEEA\uDEEB\uDEE4"+
-            "\u0000\uB84D\u0000\u0000\uB84C\u0000\uB848\uDEE7"+
-            "\u0000\uB84F\u0000\uB850\uDEE6\uDEE9\uDEF1\uB84A"+
-            "\uB84B\uDEEF\uDEE5\u0000\u0000\u0000\uE2F2\uBAD0"+
-            "\uE2F4\uDEEC\uE2F6\uBAD4\uE2F7\uE2F3\u0000\uBAD1"+
-            "\uE2EF\uBAD3\uE2EC\uE2F1\uE2F5\uE2EE\u0000\u0000"+
-            "\uB849\u0000\uE2EB\uBAD2\uE2ED\u0000\u0000\u0000"+
-            "\u0000\u0000\uBD54\uE6C1\uBD58\u0000\uBD56\u0000"+
-            "\u0000\uBACF\u0000\uE6C8\uE6C9\uBD53\u0000\u0000"+
-            "\uE6C7\uE6CA\uBD55\uBD52\uE6C3\uE6C0\uE6C5\uE6C2"+
-            "\uBD59\uE6C4\u0000\u0000\uE6C6\uBD57\u0000\u0000"+
-            "\u0000\u0000\uBF6A\uEAA8\u0000\uEAA2\uEAA6\uEAAC"+
-            "\uEAAD\uEAA9\uEAAA\uEAA7\u0000\uEAA4\u0000\uBF6C"+
-            "\uBF69\uEAA3\uEAA5\u0000\uBF6B\uEAAB\u0000\uC146"+
-            "\u0000\u0000\uEDAA\uEDA5\uC145\u0000\u0000\uC143"+
-            "\u0000\uEDAC\uC144\uEDA8\uEDA9\uEDA6\uEDAD\uF056"+
-            "\u0000\uC147\uEDA7\u0000\uEDAE\uEDAB\u0000\u0000"+
-            "\u0000\uF05A\u0000\u0000\uF057\u0000\uC2A6\u0000"+
-            "\uF05B\uF05D\uF05C\uF058\uF059\u0000\u0000\uF2A3"+
-            "\u0000\uC3AA\u0000\uF27E\uF2A2\uF27D\uF2A4\u0000"+
-            "\u0000\uF2A1\u0000\uF47A\uF47D\uF479\uC471\uF47B"+
-            "\uF47C\uF47E\uC472\uC474\uC473\uF5E1\u0000\uF5E3"+
-            "\u0000\uF5E2\u0000\u0000\u0000\uF6F6\u0000\u0000"+
-            "\uF8B5\uF8FA\uA5DC\u0000\u0000\uCB72\uAAC0\uCDA3"+
-            "\uAAC1\uAAC2\uCDA2\u0000\uCFF8\uCFF7\uACE6\uACE9"+
-            "\uACE8\uACE7\uCFF4\uCFF6\uCFF5\u0000\u0000\uD2E8"+
-            "\uAFA7\uD2EC\uD2EB\uD2EA\uD2E6\uAFA6\uAFAA\uAFAD"+
-            "\u0000\u0000\uAFAE\uD2E7\uD2E9\uAFAC\uAFAB\uAFA9"+
-            "\uAFA8\uD6C2\u0000\uD6C0\uD6BC\uB2BB\u0000\uD6BD"+
-            "\uB2BC\uD6BE\uD6BF\uD6C1\u0000\uB2BD\u0000\u0000"+
-            "\uDAD5\u0000\uDAD4\uDAD3\uDAD2\u0000\u0000\u0000"+
-            "\u0000\uDEF6\uB852\u0000\uDEF3\uDEF5\u0000\uB853"+
-            "\u0000\uB854\uDEF4\u0000\u0000\u0000\u0000\u0000"+
-            "\uE341\u0000\uE2F9\uE2FA\u0000\uBAD7\uBAD5\uBAD6"+
-            "\uE343\u0000\uE342\uE2FE\uE2FD\uE2FC\uE2FB\uE340"+
-            "\uE2F8\u0000\uE6CB\uE6D0\uE6CE\u0000\u0000\u0000"+
-            "\uE6CD\uE6CC\uE6CF\u0000\uEAAE\u0000\uBF6D\uC148"+
-            "\uEDB0\u0000\uC149\uEDAF\uF05F\uF05E\uC2A7\u0000"+
-            "\uF2A5\uC3AB\uF4A1\uC5A1\uF6F7\u0000\uF8B7\uF8B6"+
-            "\uC9A8\uACEA\uACEB\uD6C3\u0000\uB856\uA5DD\uA872"+
-            "\uA871\uA870\u0000\u0000\u0000\uCDA4\u0000\u0000"+
-            "\uAAC4\uAAC3\u0000\uACEE\u0000\uCFFA\uCFFD\uCFFB"+
-            "\u0000\uACEC\uACED\u0000\u0000\uCFF9\uCFFC\u0000"+
-            "\uAFB5\u0000\u0000\u0000\uD2F3\uD2F5\uD2F4\uAFB2"+
-            "\uD2EF\u0000\u0000\uAFB0\uAFAF\u0000\uAFB3\uAFB1"+
-            "\u0000\uAFB4\uD2F2\uD2ED\uD2EE\uD2F1\uD2F0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uD6C6\uD6C7"+
-            "\uD6C5\u0000\uD6C4\uB2BE\u0000\u0000\u0000\u0000"+
-            "\uB57D\u0000\uDAD6\uDAD8\uDADA\uB57C\u0000\u0000"+
-            "\uB57A\u0000\uDAD7\uB57B\uDAD9\uB579\u0000\u0000"+
-            "\uDF41\uDEF7\uDEFA\uDEFE\uB85A\uDEFC\u0000\uDEFB"+
-            "\uDEF8\uDEF9\uB858\uDF40\uB857\u0000\uB85C\uB85B"+
-            "\uB859\u0000\uDEFD\u0000\u0000\u0000\uE349\u0000"+
-            "\uE348\u0000\u0000\uE344\u0000\u0000\uBAD8\uE347"+
-            "\uE346\uBAD9\u0000\u0000\u0000\u0000\u0000\uBD5E"+
-            "\u0000\uE6D2\u0000\uBD5F\uBD5B\uBD5D\u0000\uBD5A"+
-            "\uBD5C\u0000\u0000\u0000\uEAAF\u0000\uBF70\uEAB1"+
-            "\uEAB0\u0000\uE345\uBF72\uBF71\uBF6E\uBF6F\u0000"+
-            "\u0000\u0000\u0000\u0000\uEDB5\u0000\uEDB3\uC14A"+
-            "\uEDB4\u0000\uEDB6\uEDB2\uEDB1\u0000\u0000\uF060"+
-            "\uC2AA\uC2A8\uC2A9\u0000\u0000\u0000\u0000\uF2A6"+
-            "\uF2A7\uC3AD\u0000\uC3AC\uF4A3\uF4A4\uF4A2\u0000"+
-            "\uF6F8\uF6F9\u0000\u0000\uA5DE\uCA48\uA873\u0000"+
-            "\uCDA5\uAAC6\uAAC5\uCDA6\u0000\u0000\uD040\uACEF"+
-            "\uCFFE\uACF0\u0000\u0000\uAFB6\uD2F8\uD2F6\uD2FC"+
-            "\uAFB7\uD2F7\uD2FB\uD2F9\uD2FA\u0000\u0000\uD6C8"+
-            "\uD6CA\u0000\uB2BF\u0000\uD6C9\uB2C0\uB5A2\uB5A1"+
-            "\uB57E\uDADB\u0000\u0000\u0000\u0000\uDF44\uB85D"+
-            "\uB85E\u0000\uDF43\uDF42\u0000\u0000\u0000\u0000"+
-            "\uE34A\uBADB\uBADA\uE34B\uE34C\u0000\uBD61\uBD60"+
-            "\u0000\uEAB5\uE6D3\uE6D5\uE6D4\uEAB4\uEAB2\uEAB6"+
-            "\uEAB3\u0000\uBF73\u0000\u0000\u0000\uEDB7\uC14B"+
-            "\uEDB8\uEDB9\u0000\u0000\uC2AB\uC2AC\u0000\uC475"+
-            "\u0000\u0000\uC5D1\uA5DF\u0000\u0000\u0000\u0000"+
-            "\u0000\uD041\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uD2FD\uAFB8\u0000\u0000\u0000\u0000\u0000\uB3BA"+
-            "\uB3B9\u0000\u0000\uB5A4\uDADD\uB5A3\uDADC\u0000"+
-            "\u0000\u0000\u0000\uDF45\u0000\uBADC\uE34D\uBADD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC476\uF4A5"+
-            "\u0000\uA6CB\uAAC7\uCDA7\u0000\uACF2\u0000\uACF1"+
-            "\uD042\uD043\u0000\u0000\uD340\uD342\uAFB9\u0000"+
-            "\uD344\uD347\uD345\u0000\u0000\u0000\uD346\uD343"+
-            "\uD2FE\uAFBA\uD348\uD341\u0000\u0000\u0000\u0000"+
-            "\uD6D3\uB2C6\uD6DC\uB2C3\u0000\uD6D5\uB2C7\u0000"+
-            "\uB2C1\u0000\uD6D0\uD6DD\uD6D1\uD6CE\uB2C5\u0000"+
-            "\uB2C2\u0000\uD6D4\uD6D7\uB2C4\uD6D8\uB2C8\uD6D9"+
-            "\uD6CF\uD6D6\uD6DA\uD6D2\uD6CD\uD6CB\u0000\u0000"+
-            "\uD6DB\u0000\u0000\uDADF\u0000\u0000\u0000\u0000"+
-            "\uDAE4\u0000\u0000\u0000\uDAE0\uDAE6\uB5A7\uD6CC"+
-            "\uDAE1\uB5A5\uDADE\uB5AC\uDAE2\uB5AB\uDAE3\uB5AD"+
-            "\uB5A8\uB5AE\uB5A9\u0000\uB5AA\u0000\uB5A6\u0000"+
-            "\uDAE5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uB861\uDF50\u0000\uDF53\uDF47\uDF4C\uDF46\uB863"+
-            "\u0000\uDF4A\u0000\u0000\u0000\uDF48\uB862\u0000"+
-            "\uDF4F\uDF4E\uDF4B\uDF4D\uDF49\uBAE1\uDF52\uB85F"+
-            "\uDF51\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uE35D\u0000\uBAE8\uE358\u0000\uBAE7"+
-            "\uE34E\u0000\uE350\uBAE0\uE355\uE354\uE357\uBAE5"+
-            "\uE352\uE351\u0000\u0000\uBAE4\uBADF\uE353\uBAE2"+
-            "\uE359\uE35B\u0000\uE356\uE34F\uBAE3\u0000\u0000"+
-            "\uBD69\uBADE\u0000\u0000\uE35C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uE6D9\uBD62\u0000\uE6DB"+
-            "\u0000\uBD63\u0000\u0000\uBD65\uE6DE\u0000\uE6D6"+
-            "\uBAE6\uE6DC\u0000\u0000\u0000\u0000\uE6D8\u0000"+
-            "\uB860\uBD68\u0000\u0000\uBD64\u0000\uBD66\uBD67"+
-            "\u0000\uBF76\uE6DD\uE6D7\uBD6A\u0000\uE6DA\u0000"+
-            "\u0000\u0000\u0000\u0000\uEAC0\uEABB\u0000\u0000"+
-            "\uEAC5\uBF74\uEABD\uBF78\uEAC3\uEABA\uEAB7\uEAC6"+
-            "\uC151\uBF79\uEAC2\uEAB8\uBF77\uEABC\uBF7B\uEAB9"+
-            "\uEABE\uBF7A\uEAC1\uEAC4\u0000\u0000\u0000\u0000"+
-            "\uEDCB\uEDCC\uEDBC\uEDC3\uEDC1\u0000\u0000\uC14F"+
-            "\uEDC8\uEABF\u0000\uEDBF\u0000\uEDC9\uC14E\uEDBE"+
-            "\uEDBD\uEDC7\uEDC4\uEDC6\u0000\uEDBA\uEDCA\uC14C"+
-            "\u0000\uEDC5\uEDCE\uEDC2\uC150\uC14D\uEDC0\uEDBB"+
-            "\uEDCD\uBF75\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uF063\u0000\u0000\uF061\uF067\uC2B0\uF065"+
-            "\uF064\uC2B2\uF06A\uC2B1\u0000\uF06B\uF068\uC2AE"+
-            "\uF069\uF062\uC2AF\uC2AD\uF2AB\uF066\u0000\u0000"+
-            "\uF06C\u0000\u0000\uF2A8\u0000\u0000\u0000\uC3B2"+
-            "\uC3B0\uF2AA\u0000\uF2AC\uF2A9\uC3B1\uC3AE\uC3AF"+
-            "\uC3B3\u0000\u0000\uC478\u0000\uF4AA\u0000\uF4A9"+
-            "\uF4A7\uF4A6\uF4A8\u0000\uC477\uC479\u0000\u0000"+
-            "\uC4F0\u0000\u0000\uF5E5\uF5E4\u0000\u0000\uF6FA"+
-            "\u0000\uF6FC\uF6FE\uF6FD\uF6FB\u0000\u0000\uC5A3"+
-            "\uC5A2\u0000\u0000\uC5D3\uC5D2\uC5D4\uF7ED\uF7EC"+
-            "\u0000\uF8FB\uF8B8\uF8FC\uC658\u0000\uC659\uF96D"+
-            "\u0000\u0000\uC67E\uA6CC\u0000\uCDA8\u0000\u0000"+
-            "\uD045\uD046\uD044\u0000\u0000\uACF3\u0000\uD047"+
-            "\uD048\uD049\u0000\u0000\uD349\uD34F\u0000\u0000"+
-            "\uD34D\uAFBB\uD34B\u0000\uD34C\uD34E\u0000\u0000"+
-            "\u0000\uD34A\uB2C9\u0000\uD6DE\uB2CB\uD6E0\uB2CA"+
-            "\uD6DF\u0000\u0000\u0000\u0000\u0000\uDAE8\uB5AF"+
-            "\u0000\uDAEA\uDAE7\uD6E1\u0000\uB5B0\u0000\u0000"+
-            "\uDAE9\u0000\u0000\u0000\u0000\u0000\u0000\uDF56"+
-            "\u0000\uB864\uDF54\uB865\uDF55\uB866\u0000\u0000"+
-            "\u0000\uBAE9\uE361\uE35E\uE360\uBAEA\uBAEB\uE35F"+
-            "\u0000\u0000\u0000\u0000\u0000\uE6DF\u0000\u0000"+
-            "\uE6E0\u0000\uBD6B\uE6E2\uE6E1\u0000\uA261\u0000"+
-            "\uEACA\uEACB\uEAC7\u0000\uEAC8\uBF7C\uBF7D\uEAC9"+
-            "\u0000\uC157\u0000\u0000\uC153\uC158\uC154\uC156"+
-            "\uC152\u0000\uC155\u0000\u0000\u0000\u0000\uC2B3"+
-            "\uEDCF\u0000\uF2AE\u0000\uF2AD\u0000\uF4AB\uC47A"+
-            "\uC47B\uF741\uF5E6\u0000\uF740\u0000\uF8FD\uF9A4"+
-            "\uA6CD\u0000\u0000\uA874\u0000\uCDA9\uAAC8\u0000"+
-            "\uACF6\uD04C\uACF4\uD04A\uACF9\uACF5\uACFA\uACF8"+
-            "\uD04B\uACF7\uAFBF\uAFBE\uD35A\uAFC7\uD353\uD359"+
-            "\uAFC3\uD352\uD358\uD356\uAFC2\uAFC4\uD355\uAFBD"+
-            "\uD354\uAFC8\uAFC5\uAFC9\uAFC6\uD351\uD350\uD357"+
-            "\uAFC0\uAFBC\uAFC1\u0000\u0000\u0000\u0000\u0000"+
-            "\uD6F0\uD6E9\u0000\uB5B5\uD6E8\u0000\uB2CF\uB2D6"+
-            "\uB2D3\uB2D9\uB2D8\uB2D4\u0000\uD6E2\uD6E5\u0000"+
-            "\uD6E4\uB2D0\uD6E6\uD6EF\uB2D1\uD6E3\uD6EC\uD6ED"+
-            "\uB2D2\uD6EA\uB2D7\uB2CD\uB2D5\uD6E7\uB2CC\uD6EB"+
-            "\u0000\u0000\uD6EE\u0000\u0000\u0000\uDAFB\uDAF2"+
-            "\uB5B2\uDAF9\uDAF6\uDAEE\uDAF7\uB5B4\uDAEF\u0000"+
-            "\uDAEB\u0000\u0000\uB86C\uDAF4\u0000\uB5B1\uDAFA"+
-            "\u0000\uB5B8\uB5BA\uDAED\u0000\u0000\uB5B9\uDAF0"+
-            "\uB5B3\uDAF8\uDAF1\uDAF5\u0000\uDAF3\uB5B6\uDAEC"+
-            "\uB5BB\uB2CE\uB5B7\uB5BC\u0000\u0000\u0000\u0000"+
-            "\u0000\uB868\uDF5D\uDF5F\uDF61\uDF65\u0000\uDF5B"+
-            "\uDF59\uB86A\u0000\uDF60\uDF64\uDF5C\uDF58\u0000"+
-            "\uDF57\u0000\u0000\u0000\uDF62\uDF5A\uDF5E\uB86B"+
-            "\u0000\uB869\uDF66\uB867\uDF63\u0000\uE372\u0000"+
-            "\u0000\u0000\u0000\u0000\uBAEE\uE36A\uBD78\uE374"+
-            "\uBAF1\uE378\uBAF7\uE365\u0000\u0000\uE375\uE362"+
-            "\u0000\uE377\uE366\u0000\uBAFE\uBAFB\uE376\uE370"+
-            "\uBAED\uBAF5\uBAF4\u0000\uBAF3\uBAF9\u0000\uE363"+
-            "\uBAFA\uE371\uBAF6\uBAEC\uE373\uBAEF\uBAF0\uBAF8"+
-            "\uE368\uE367\uE364\u0000\uE36C\uE369\uE36D\uBAFD"+
-            "\u0000\uE379\uBAF2\uE36E\uE36F\u0000\uE36B\u0000"+
-            "\u0000\u0000\uBAFC\u0000\u0000\u0000\u0000\uE6E7"+
-            "\uBD70\uBD79\uBD75\uE6E4\u0000\uBD72\uBD76\uE6F0"+
-            "\uBD6C\uE6E8\u0000\uBD74\u0000\u0000\uE6EB\uE6E6"+
-            "\uBD73\uBD77\uE6E5\u0000\uBD71\u0000\uE6EF\uBD6E"+
-            "\uE6EE\uE6ED\uBD7A\uE572\uBD6D\u0000\uE6EC\uE6E3"+
-            "\u0000\uBD7B\uE6EA\uBD6F\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uE6E9\u0000\u0000\u0000\u0000"+
-            "\uBFA2\uBFA7\uBF7E\uEAD8\uEACF\uEADB\uEAD3\uEAD9"+
-            "\uBFA8\uBFA1\uEACC\uEAD2\uEADC\uEAD5\uEADA\uEACE"+
-            "\u0000\u0000\uEAD6\uBFA3\uEAD4\uBFA6\uBFA5\uEAD0"+
-            "\uEAD1\uEACD\uEAD7\uBFA4\uEADE\uEADD\u0000\u0000"+
-            "\u0000\uEDDA\uEDD6\uC15F\u0000\uEDD0\uC159\uC169"+
-            "\uEDDC\uC161\uC15D\uEDD3\uC164\uC167\uEDDE\uC15C"+
-            "\uEDD5\uC165\uEDE0\uEDDD\uEDD1\uC160\uC15A\uC168"+
-            "\uEDD8\uC163\uEDD2\uC15E\uEDDF\uC162\uC15B\uEDD9"+
-            "\uC166\uEDD7\u0000\u0000\uEDDB\u0000\u0000\u0000"+
-            "\uF06E\uF074\uC2B9\uF077\uC2B4\uC2B5\uF06F\uF076"+
-            "\uF071\uC2BA\uC2B7\u0000\uF06D\u0000\uC2B6\uF073"+
-            "\uF075\uC2B8\uF072\uF070\u0000\u0000\u0000\u0000"+
-            "\uF2B8\uC3B7\uC3B8\uC3B4\u0000\uC3B5\u0000\uF2B4"+
-            "\uF2B2\u0000\uF2B6\uC3BA\uF2B7\uF2B0\uF2AF\uF2B3"+
-            "\uF2B1\uC3B6\uF2B5\uF4AC\uC47E\uC47D\uF4AD\u0000"+
-            "\uF4AF\uF4AE\uC4A1\u0000\u0000\u0000\uF5EB\uF5E8"+
-            "\uF5E9\u0000\uF5E7\uF5EA\uC4F2\uF5EC\u0000\uC4F1"+
-            "\u0000\uF742\u0000\uC5D5\uC5D7\uF7EE\uC5D6\uF8B9"+
-            "\uF940\uF942\uF8FE\uF941\uC66C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static String innerIndex4=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA6CE\u0000"+
-            "\uACFB\uD26F\uAFCA\u0000\u0000\uB2DA\uDAFC\uDAFD"+
-            "\u0000\u0000\u0000\uEADF\uC16A\uEDE1\u0000\u0000"+
-            "\uC2BB\u0000\uF2BA\uF2B9\uC4A2\uF5ED\u0000\uF743"+
-            "\uC5F8\uCA49\u0000\u0000\uAAC9\uA875\u0000\u0000"+
-            "\uD04D\u0000\u0000\uD360\uD35B\uD35F\uD35D\uAFCB"+
-            "\uD35E\uD35C\u0000\uD6F1\u0000\uDAFE\uDB40\uDF69"+
-            "\uDF6A\uB86E\uB86F\uDF68\uDF6B\uDF67\uB86D\u0000"+
-            "\uBB40\u0000\uB870\uE37A\u0000\uBD7C\uE6F1\uBD7D"+
-            "\u0000\uBFA9\uEAE2\uEAE0\uEAE1\uEDE4\uEDE3\uEDE2"+
-            "\u0000\u0000\u0000\uF2BB\u0000\uC3B9\uF2BC\uF744"+
-            "\uC5F9\uF8BA\uA6CF\uAACB\uAACA\uD04F\uACFC\u0000"+
-            "\u0000\uD04E\uD362\u0000\uAFCC\uD6F2\uD361\u0000"+
-            "\u0000\u0000\uB2DC\uD6F5\uD6F3\uD6F4\uB2DB\u0000"+
-            "\uDB42\uDB43\uDB41\u0000\uB873\uDF6D\uDF6C\uDF6E"+
-            "\uB872\uB871\u0000\u0000\uE6F2\uE6F4\u0000\uBD7E"+
-            "\uE6F3\uEAE3\uBFAA\uF079\u0000\uF078\uC3BB\uF2BD"+
-            "\uC3BD\uC3BC\uF4B0\uF5EE\uC4F3\uA6D0\uD050\uACFD"+
-            "\uD365\uAFCE\uD364\uD363\u0000\uAFCD\u0000\uD6FB"+
-            "\u0000\uD6FD\uD6F6\uD6F7\uB2DD\uD6F8\uB2DE\uD6FC"+
-            "\uD6F9\uD6FA\uB2DF\u0000\uB5BE\uB5BF\u0000\uDB44"+
-            "\u0000\u0000\u0000\uDF6F\uDF70\u0000\uE37E\uBB43"+
-            "\uBB41\uBB42\uE37B\uE37C\u0000\uE37D\uE6F9\u0000"+
-            "\uE6FA\uBDA1\uE6F7\uE6F6\uE6F8\uE6F5\uBFAD\uEAE4"+
-            "\uBFAB\uBFAC\uEDE6\uC16B\uEDE5\uEFA8\u0000\uF07A"+
-            "\uF07B\uC2BC\u0000\uC2BD\uC16C\uF2BE\uF2BF\uF4B1"+
-            "\uC4A3\uA6D1\u0000\uA6D2\uACFE\uAACC\uAFCF\uD051"+
-            "\u0000\u0000\u0000\uB5C0\uA6D3\uAD41\uD052\uD053"+
-            "\uAD40\uAD42\uA6D4\u0000\uD054\uAFD1\uD366\uAFD3"+
-            "\uAFD0\uAFD2\u0000\uD741\uB2E0\u0000\uD740\uD6FE"+
-            "\u0000\uDF71\u0000\u0000\uE3A1\u0000\uBDA2\u0000"+
-            "\uBFAE\uEAE6\uEAE5\u0000\uEDE7\u0000\u0000\u0000"+
-            "\uF5EF\u0000\u0000\uA6D5\uCB73\uCDAA\uAD43\uD055"+
-            "\u0000\uD368\u0000\u0000\u0000\uAFD4\uD367\uAFD5"+
-            "\u0000\u0000\u0000\uD743\u0000\u0000\uB2E2\uD742"+
-            "\uD744\u0000\uB2E1\u0000\u0000\u0000\u0000\uDB46"+
-            "\uDB47\uDB45\uB5C1\u0000\u0000\u0000\uB874\u0000"+
-            "\uB875\u0000\uBB45\u0000\uE3A3\uE3A2\uBB44\u0000"+
-            "\u0000\u0000\u0000\u0000\uE6FB\u0000\u0000\uE6FC"+
-            "\u0000\u0000\u0000\u0000\uEAE7\u0000\u0000\uC170"+
-            "\uC16F\uC16D\uC16E\uC171\u0000\uF07C\uC2BF\uC2BE"+
-            "\uF2C0\uF4B2\u0000\u0000\u0000\uC5A5\uC5A4\uA6D6"+
-            "\u0000\u0000\uD1FB\u0000\uB877\uB5C2\uB876\uBB46"+
-            "\u0000\uA6D7\uC9A9\uA6D8\uA6D9\u0000\u0000\uCDAB"+
-            "\uCB76\u0000\uCB77\uA877\u0000\uCB74\uA876\u0000"+
-            "\uA879\uCB75\uA87B\uA87A\uCB78\uA878\u0000\u0000"+
-            "\u0000\uAAD1\uAACF\uCDAD\u0000\uAACE\u0000\u0000"+
-            "\u0000\uAAD3\uAAD5\uAAD2\u0000\uCDB0\uCDAC\uAAD6"+
-            "\u0000\uAAD0\uA87C\u0000\uAAD4\uCDAF\u0000\u0000"+
-            "\uCDAE\u0000\uAACD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uD05B\uAD47\uAD48\uD05D\u0000\uD057"+
-            "\uD05A\uD063\uD061\u0000\uAD49\uD067\uAD4C\uD064"+
-            "\uD05C\uD059\u0000\u0000\uDB49\uD062\uAD44\uD065"+
-            "\uD056\uD05F\uAD46\uAD4B\uD060\uAD4F\uAD4D\u0000"+
-            "\uD058\uAD4A\u0000\uD05E\uAD4E\uAD45\uD066\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uAFDA\u0000\uAFE3"+
-            "\uAFD8\uAFD6\uD36A\uAFDE\uAFDB\uD36C\u0000\u0000"+
-            "\uAFDD\uD36B\uD369\uD36E\uAFE2\uAFE0\uDB48\u0000"+
-            "\uD36F\uD36D\uAFD7\u0000\u0000\uAFD9\uAFDC\u0000"+
-            "\uAFDF\u0000\uAFE1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD74E\uB2E4\u0000"+
-            "\uD745\uD747\u0000\uD748\u0000\uD750\uD74C\uD74A"+
-            "\u0000\uD74D\uD751\uB2E5\uB2E9\uD746\u0000\uD74F"+
-            "\u0000\uB2E7\u0000\uB2E6\uD74B\uD749\u0000\uB2E3"+
-            "\uB2E8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uB5C8\uDB51\u0000\u0000\uDB4F\uB5CA\u0000"+
-            "\u0000\u0000\u0000\uDB4A\uDFA1\u0000\uB5C9\uDB4E"+
-            "\u0000\u0000\uDB4B\uB5C5\uB5CB\uDB50\uB5C7\uDB4D"+
-            "\uBB47\uB5C6\uDB4C\uB5CC\uB5C4\uB5C3\u0000\u0000"+
-            "\u0000\u0000\u0000\uDF77\uDF75\u0000\uDF7B\u0000"+
-            "\uDF73\uDFA2\uDF78\u0000\uDF72\uB87B\uB8A3\uDF7D"+
-            "\u0000\uDF76\u0000\uB87E\u0000\u0000\uB87C\uDF7E"+
-            "\uB879\uB878\uDF79\uB87D\uB5CD\u0000\uDF7C\uDF74"+
-            "\uB87A\uB8A1\uB8A2\u0000\u0000\u0000\u0000\uBB4C"+
-            "\uBB48\u0000\uBB4D\uE3A6\u0000\u0000\uE3A5\uE3A7"+
-            "\uBB4A\uE3A4\uBB4B\uE3AA\uE3A9\uE3A8\u0000\uBB49"+
-            "\u0000\u0000\u0000\u0000\u0000\uE741\u0000\uE744"+
-            "\uBDA8\uE743\uBDA7\uBDA3\uBDA4\uBDA5\uE740\uE6FE"+
-            "\uBDA6\u0000\uE742\uE6FD\u0000\u0000\uEAE9\uEAF3"+
-            "\uBFB1\uBFB0\u0000\uEAED\uEAEF\u0000\uEAEA\u0000"+
-            "\uEAEE\uEAE8\uEAF1\uBFAF\uEAF0\uEAEC\u0000\uEAF2"+
-            "\u0000\uEAEB\uC174\uEDE8\uEDEE\uC178\uC17A\uC177"+
-            "\uC176\u0000\uC175\uC173\uEDE9\uEDEC\uC172\uEDED"+
-            "\u0000\uC179\uEDEB\u0000\uEDEA\uC2C0\u0000\uC2C1"+
-            "\uF0A1\uF07D\uF07E\u0000\u0000\uF2C2\u0000\uF2C1"+
-            "\uC3BE\uF4B4\uC4A4\uF4B3\u0000\uF5F0\uF745\uC5A6"+
-            "\uF943\uF944\uC5D8\uA6DA\u0000\uAAD7\uDB52\uBB4E"+
-            "\uC17B\uEDEF\uA6DB\u0000\uAFE5\uAFE4\uDB53\u0000"+
-            "\u0000\u0000\uEAF4\uA6DC\uAD50\u0000\u0000\uDB54"+
-            "\uDB55\uDB56\uBB4F\uBFB2\uA6DD\u0000\uAAD8\uD068"+
-            "\uAFE6\uD370\uB2EA\u0000\uDB57\uB8A4\u0000\uBB50"+
-            "\uBFB3\uC17C\uC2C2\uF4B5\uA6DE\uAAD9\u0000\u0000"+
-            "\uAFE7\uD752\uB5CE\u0000\uBB51\uE3AB\uE745\u0000"+
-            "\u0000\u0000\u0000\uA6DF\uB5CF\uDFA3\uBB52\uA6E0"+
-            "\uCDB1\uD069\uAD51\u0000\u0000\uD372\u0000\u0000"+
-            "\uAFEA\u0000\uAFE8\uAFE9\uAFEB\u0000\u0000\uD371"+
-            "\u0000\u0000\uD757\uD754\uD756\uB2EB\uB2ED\uB2EC"+
-            "\uD753\uB2EE\uD755\u0000\uDB58\uDB59\u0000\uDB5A"+
-            "\uDFA6\u0000\uDFA7\u0000\uDFA5\uDFA8\u0000\uB8A5"+
-            "\u0000\uDFA4\u0000\uBB53\u0000\u0000\uE74A\uE746"+
-            "\uE749\uE74B\uE748\uE747\u0000\uEAF5\uEAF6\uEAF7"+
-            "\uBFB4\uBFB5\uEDF1\uEDF0\uEDF2\u0000\uF0A3\uF0A2"+
-            "\u0000\uF2C4\u0000\uF2C5\uF2C3\u0000\uC4A5\u0000"+
-            "\uF4B6\uF4B7\u0000\uF746\uF7EF\uF8BB\uA6E1\uA87D"+
-            "\u0000\uC17D\uA6E2\u0000\uD758\uDB5B\u0000\uC641"+
-            "\uCA4A\u0000\u0000\u0000\uCA4B\uCA4D\uA6E3\uCA4E"+
-            "\uCA4C\u0000\u0000\uCBA2\uCBA3\uCB7B\u0000\u0000"+
-            "\u0000\u0000\uCBA1\uA8A1\u0000\uA8A2\uCB7C\uCB7A"+
-            "\uCB79\uCB7D\uA87E\uCB7E\uD06A\u0000\u0000\u0000"+
-            "\uCDB6\uAADC\uCDB5\uCDB7\u0000\uAADB\uCDBC\uAADF"+
-            "\uCDB2\uCDC0\uCDC6\uAAE6\uCDC3\uAAE3\u0000\uCDB9"+
-            "\uCDBF\uCDC1\u0000\uCDB4\uAAE2\uAADD\uCDBA\uAAE4"+
-            "\uAAE7\uAAE1\u0000\uAADA\uCDBE\uCDB8\uCDC5\uAAE9"+
-            "\uAAE5\uAAE0\uCDBD\uAFEC\uCDBB\uAADE\uAAE8\u0000"+
-            "\uCDB3\u0000\uCDC2\uCDC4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uAD62\uAD5C\uAD64\uAD61\uD071\uD074\uAD5D"+
-            "\u0000\uD06B\u0000\uAD56\uAD60\u0000\uAD63\uAD65"+
-            "\uD0A2\uD077\u0000\uAD55\uD0A1\uAD59\uAD57\uAD52"+
-            "\uD06F\u0000\uD07E\uD073\uD076\uD0A5\u0000\uAD66"+
-            "\uD07D\uAD5E\uD078\uD0A4\uD075\uD079\uD07C\u0000"+
-            "\u0000\uD06D\uD0A3\uD07B\u0000\u0000\uD06C\u0000"+
-            "\uD070\uAD5F\uAD5A\uAD53\uAD58\uAD54\uAD67\uD06E"+
-            "\uD3A5\uAD5B\u0000\u0000\uD07A\uCE41\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uD3A8\uAFFA"+
-            "\u0000\uD376\u0000\uD3A3\uD37D\u0000\uD3B2\u0000"+
-            "\uD3AA\u0000\uD37E\u0000\uD3A9\uD378\uD37C\uD3B5"+
-            "\uAFFD\uD3AD\uD3A4\uAFED\uD3B3\uD374\u0000\uD3AC"+
-            "\u0000\uAFFC\uAFF7\uD373\uAFF5\uAFF4\uAFF9\uD3AB"+
-            "\uAFF1\uAFF8\uD072\uDB5C\uD3A6\u0000\u0000\uD37A"+
-            "\uAFFB\uD37B\uD3A1\uAFFE\uD375\uD3AF\u0000\uD3AE"+
-            "\uD3B6\uAFF3\uAFF0\uD3B4\uD3B0\uD3A7\uD3A2\uAFF6"+
-            "\uAFF2\uD377\uAFEE\uD3B1\uAFEF\u0000\uD379\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uD75E\uD760\uD765\uD779\uB2FC"+
-            "\uB2F2\u0000\uD75D\uB2FD\uB2FE\uD768\uD76F\uD775"+
-            "\u0000\uD762\u0000\uD769\u0000\u0000\uB340\uD777"+
-            "\uD772\uB2FA\uB2F8\uD76E\uD76A\uD75C\uB2EF\uD761"+
-            "\uD759\u0000\uB2F7\uB2F9\uD766\uD763\uB2F4\uD773"+
-            "\uB2F1\uD764\uD77A\uD76C\u0000\uD76B\uB2F0\u0000"+
-            "\uB2FB\u0000\uB2F3\uD75A\uD75F\uD770\uD776\uB341"+
-            "\uD75B\uD767\uD76D\uB2F6\u0000\u0000\uD778\uD771"+
-            "\uD774\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uB2F5\u0000\uDB6C"+
-            "\uDB60\uB5D7\uDB7D\uDBA7\uDBAA\uB5D5\uDB68\uDBA3"+
-            "\uDB69\uDB77\uB5E2\uDB73\uB5DF\u0000\uDB74\uDB5D"+
-            "\u0000\uDBA4\u0000\u0000\uB5E8\uDBA1\uDB75\uDBAC"+
-            "\uDB70\uDFC8\u0000\uDBAF\uB5E6\uDB6E\uDB7A\uB5E9"+
-            "\uB5D4\uDB72\uDBAD\uDB6B\uDB64\uDB6F\u0000\uDB63"+
-            "\uDB61\uB5D0\uDBA5\uDB6A\uDBA8\u0000\uDBA9\uB5D8"+
-            "\uB5DD\uB5D9\uB5E1\uDB7E\uB5DA\uDB76\uDB66\u0000"+
-            "\uB5D2\uDB5E\uDBA2\uDBAB\uDB65\uB5E0\uDBB0\uDB71"+
-            "\u0000\uDB6D\u0000\uB5D1\uB5E5\u0000\uDB7C\uB5E7"+
-            "\u0000\uDB78\uB5DC\uB5D6\uB5DE\uB5D3\uB5E4\uDB79"+
-            "\uDB67\uDB7B\uDB62\uDBA6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uDBAE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uDB5F\u0000\u0000\u0000\u0000"+
-            "\u0000\uDFC7\u0000\uDFDD\uB855\uDFCC\u0000\uDFCA"+
-            "\uDFB5\uB8A9\uDFC5\uDFD9\uDFC1\uB8B1\uDFD8\uDFBF"+
-            "\uB5E3\uDFCF\uDFC0\uDFD6\uB8B0\uB8A8\u0000\uDFAA"+
-            "\uDFB2\u0000\uDFCB\uDFC3\uDFDC\uDFC6\uB8B6\uDFD7"+
-            "\u0000\uB8AD\u0000\uDFC9\uDFD1\uDFB6\uDFD0\u0000"+
-            "\uDFE1\uDFB1\uDFD2\u0000\uDFDF\u0000\uDFAB\uB5DB"+
-            "\u0000\uDFB9\uDFB8\uB8AF\u0000\uDFBC\uDFBE\uDFCD"+
-            "\uDFDE\uB8B2\u0000\uB8B3\u0000\uDFB0\uB8AB\uDFB4"+
-            "\uDFDA\uB8B4\u0000\uB8AC\uB8AE\uB8B5\uDFE0\uDFD3"+
-            "\uDFCE\u0000\u0000\uDFBB\uDFBA\uB8AA\uDFAC\uB8A7"+
-            "\uDFC4\uDFAD\uDFC2\u0000\u0000\uDFB7\uDFDB\u0000"+
-            "\u0000\u0000\uB8A6\u0000\u0000\u0000\uDFB3\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uDFAF\uDFD5\uDFAE"+
-            "\uBB60\uE3D3\u0000\u0000\uE3C2\u0000\u0000\uE3AC"+
-            "\uE3CA\uBB58\uE3BB\uE3C5\uBB5B\uE3BE\uBB59\uE3AF"+
-            "\uE3CD\uE3AE\uE3C1\u0000\uE3AD\u0000\u0000\uE3BF"+
-            "\uE3C8\uE3C6\uE3BA\uE3B5\uE3B3\u0000\uE3B4\uE3C7"+
-            "\uE3D2\uE3BC\uBB5A\u0000\uE3B7\u0000\uE3CB\u0000"+
-            "\uBB5D\uE3B6\uE3B0\uE3C0\uBB61\u0000\u0000\uBB55"+
-            "\uBB5E\uE3B8\uE3B2\u0000\uBB57\uDFD4\uBB56\uE3C3"+
-            "\u0000\uBB54\uBB63\uBB5C\uE3C4\uE3B9\uE3B1\uE3CC"+
-            "\uE3BD\uBB62\uE3D0\uBB5F\uE3CF\u0000\uE3C9\uE3CE"+
-            "\u0000\u0000\u0000\uE3D1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE773"+
-            "\uE774\uE767\uE766\uE762\uBDB4\u0000\uBDAC\uE776"+
-            "\uE775\uDFA9\uE75F\uE763\uE75D\u0000\uE770\uE761"+
-            "\u0000\uE777\uE75A\uE758\uE764\uE76E\uE769\uBDB6"+
-            "\uE74F\u0000\uE76D\u0000\u0000\u0000\uBDB7\uDFBD"+
-            "\uE75B\uE752\uE755\uE77B\uE75C\uE753\uE751\uE74E"+
-            "\u0000\uBDB0\uE765\uBDAF\uBDB3\uE760\uE768\uBDA9"+
-            "\uE778\uE77C\uBDAB\u0000\uE757\uE76B\uE76F\uE754"+
-            "\uE779\uBDB2\u0000\uBDB1\uE74C\uBDB5\uE772\uE756"+
-            "\uE76A\uE750\uE75E\uE759\uBDAD\uBDAE\uE76C\uE77D"+
-            "\uE77A\uE771\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uE74D\u0000\uBDAA\uEB49\u0000"+
-            "\uEB40\uEB43\u0000\uBFBB\uEB45\uEAF9\uEB41\uEB47"+
-            "\uBFB8\uBFBC\uBFB6\u0000\u0000\uEAFB\uEB4C\u0000"+
-            "\u0000\uEB46\u0000\uEAFC\uEB55\uEB4F\uEAF8\uEE46"+
-            "\uEAFE\uBFB7\u0000\uEB4A\u0000\uEB54\uBFBF\u0000"+
-            "\uEB51\uEAFD\uEB44\uEB48\uEB42\uEB56\uEB53\uEB50"+
-            "\uBFB9\uBFBA\uBFBE\uEAFA\uEB57\uBFBD\uEB4D\u0000"+
-            "\u0000\uEB4B\u0000\u0000\u0000\uEB4E\uEE53\uEE40"+
-            "\uEE45\uEE52\uEE44\uEDFB\uEE41\u0000\uC1A2\u0000"+
-            "\uEDF4\uEE4D\uEE4F\uEDF3\uC1A1\uEE51\uEE49\uC1A8"+
-            "\uEE50\uEE42\uC1AA\uEDF9\uEB52\uEE4A\uEE47\uEDF5"+
-            "\uEE55\uC1A4\u0000\u0000\uC1A5\uEDF7\uEE48\u0000"+
-            "\uEE54\uEE4B\uEDFD\uC1A7\uC1A3\uEE4C\uEDFE\uEE56"+
-            "\uEDF8\uEE43\uEE4E\uEDFA\uEDFC\u0000\uC2CB\uEDF6"+
-            "\uC1A9\uC2C4\uC17E\u0000\u0000\u0000\u0000\uC1A6"+
-            "\uC2C8\uF0B3\u0000\uF0A9\uF0A4\uF0AA\uF0B4\uF0B8"+
-            "\uF0B7\uC2CA\uC2C9\u0000\u0000\uF0AB\uF0B9\uF0AE"+
-            "\uF0A6\u0000\uF0A8\uF0A7\uF0AD\uF0B2\uF0A5\uF0AC"+
-            "\uF0B1\uC2C7\u0000\uF0AF\u0000\uC2C5\uF0B0\uC2C3"+
-            "\uC2C6\uF2D5\uF0B5\u0000\u0000\uC3C2\u0000\uF2CD"+
-            "\uF2D1\uF2C9\uF2CC\u0000\uF2D4\uC3C0\uF2D9\uF2D2"+
-            "\u0000\uF2CA\uF2DA\uF2D3\uC3C3\uC3C4\uF2D7\u0000"+
-            "\uF2CB\uC3BF\uC3C1\uF2C6\uF2CE\uF2C8\u0000\uF2D8"+
-            "\uF2D6\uF2C7\uF2CF\u0000\u0000\u0000\uF4BE\uC3C5"+
-            "\uF2D0\uC4A7\uC4A9\uC4A6\u0000\uF4C3\uF4BB\uF4B9"+
-            "\uF4BD\uF4BA\u0000\u0000\uF4BF\uF4C1\uC4AA\uC4AC"+
-            "\u0000\uF4C0\uC4AD\uC4AB\uF4C2\u0000\u0000\u0000"+
-            "\u0000\uC4A8\u0000\u0000\u0000\u0000\u0000\uC4F4"+
-            "\uF5F1\uF5F7\uC4F6\uF4BC\uF5F6\u0000\uF5FD\uF5F4"+
-            "\uF5FB\uF5FA\uF4B8\uF5F5\uF0B6\uF5FE\uF5F3\uF5F8"+
-            "\u0000\uF5FC\uF5F2\u0000\uF74A\uC4F5\uF5F9\u0000"+
-            "\u0000\uF7F4\uF74B\uF749\uF747\uF748\uF74C\u0000"+
-            "\uC5D9\uF7F2\uF7F0\uF7F5\uF7F3\u0000\uF7F6\uC5DA"+
-            "\uF7F1\u0000\u0000\uF8BC\u0000\u0000\uF945\uF946"+
-            "\uF947\u0000\u0000\uF9C7\uF9BD\uCA4F\uAAEA\u0000"+
-            "\uAD68\u0000\uD3B8\uD3B7\uB040\uB342\uD77C\u0000"+
-            "\u0000\uD77B\u0000\uB5EA\uB8B8\u0000\uB8B7\uB8B9"+
-            "\u0000\uE3D4\uE77E\uEB58\uEB5A\uEB59\u0000\uC1AB"+
-            "\uEE57\uF0BA\uF9A5\uA6E4\u0000\uCDC9\uCDCA\uCDC8"+
-            "\uCDC7\uAAEB\u0000\uD0A9\uD0A7\u0000\u0000\uD0A6"+
-            "\u0000\uAD69\uAD6B\uAD6A\uD0A8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uD3C4\uD3C1\uD3BF"+
-            "\u0000\u0000\uB041\uD3C2\uB046\uD3BC\uD3CB\u0000"+
-            "\uD3CD\uD3BD\u0000\uB043\uD3CE\uD3C9\uD3BB\uD3C0"+
-            "\uD3CA\uD3C6\uD3C3\u0000\uB048\uD3CC\uD3BE\u0000"+
-            "\u0000\uD3C7\uD3B9\uB047\uB044\uD3C5\u0000\uD3C8"+
-            "\uD3BA\uB045\uB042\u0000\u0000\u0000\u0000\uB34C"+
-            "\uD7A5\uB34B\u0000\uD7A8\uD7AB\uB348\uB346\uD77E"+
-            "\uD7A9\uD7A7\uD7A4\uD7AC\uD7AD\uD7AF\uD7B0\uD77D"+
-            "\uB345\uD7A2\uD7A1\uD7AE\uB347\uD7A3\uB349\uB344"+
-            "\uD7A6\uB34D\u0000\uB34A\uD7AA\u0000\u0000\u0000"+
-            "\uB5F1\uDBBF\u0000\uDBB4\uB5EE\u0000\uDFE7\uDBBD"+
-            "\uDBB1\uB5EC\uDBB6\uB5EF\uDBBA\uDBB8\uB5F2\uB5EB"+
-            "\u0000\u0000\uDBB2\uDBB5\uB5F0\u0000\uDBB3\u0000"+
-            "\uDBBE\uDBBC\uDBB7\uDBB9\uDBBB\uB5ED\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uDFE8\uDFEE\uDFE4"+
-            "\uDFEA\uB8BA\uDFE6\uB8C0\u0000\u0000\uB8BF\u0000"+
-            "\uB8BE\uDFED\uB8C1\uB8C2\uDFE3\uDFF0\uB8C3\uB8BD"+
-            "\uB8BC\uDFEC\uB8C4\uDFE2\uDFE5\uDFEF\uDFEB\u0000"+
-            "\u0000\uE3F4\uE3E9\uB8BB\u0000\u0000\u0000\u0000"+
-            "\uBB6A\uE3DD\uE3F2\uE3DE\uBB65\u0000\uE3DB\u0000"+
-            "\uE3E4\uE3DC\uBB67\uE3D6\uE3F1\uBB68\uE3EE\uE3EF"+
-            "\uE3D7\uBB6D\uE3E6\u0000\uE3E0\uE3E7\uE3DA\u0000"+
-            "\uE3F3\uE3EB\uE3E5\uE3D5\uBB69\uE3EC\u0000\uBB6C"+
-            "\uE3F0\u0000\uE3EA\uBB66\uE3E8\u0000\uE3E2\uBB64"+
-            "\uE3D9\uE3E1\uE3ED\uE3DF\u0000\u0000\uE3E3\u0000"+
-            "\u0000\u0000\u0000\u0000\uBDC1\uDFE9\uE7B2\uE7BB"+
-            "\uE7B1\uE7AD\uE7AA\uBDC2\uE7A8\uBB6B\uE7A1\uBDC0"+
-            "\uE7A7\uBDBF\uE7AC\uE7A9\uE7B9\uE7B4\uE7AE\uE7B3"+
-            "\uBDBB\uE7AB\uE7BE\uE7A2\uE7A3\uE7BA\uBDBC\uE7BF"+
-            "\uBDBE\uE7C0\uE7B0\uE3D8\uE7B6\uE7AF\uE7B8\uE7B5"+
-            "\u0000\u0000\u0000\uE7A6\uBDB9\uE7BD\uBDBA\uE7A4"+
-            "\uBDBD\uEB64\uE7B7\uE7BC\u0000\u0000\u0000\u0000"+
-            "\u0000\uEB61\uBDB8\uBFC0\uEB6B\uEB67\u0000\uEB65"+
-            "\uEB60\uEB6F\u0000\u0000\u0000\uBFC4\u0000\uEB5C"+
-            "\uEB68\uEB69\uEB5F\uEB5E\uEB6C\u0000\uEB62\uEB5D"+
-            "\uEB63\u0000\uEB6E\uEB5B\uEB6D\uEB6A\uBFC2\uBFC1"+
-            "\u0000\u0000\uBFC3\uEB66\uF0CB\u0000\u0000\u0000"+
-            "\u0000\u0000\uEE59\uC1B1\uEE5D\uEE5A\uEE61\uEE67"+
-            "\uEE5C\u0000\uEE70\uC1AE\uEE6A\uEE5F\uEE6B\uEE66"+
-            "\uEE6D\uEE5E\uC1B3\uC1B2\uEE60\uEE6E\uEE58\uEE6C"+
-            "\uC1AC\u0000\uEE64\uEE63\uEE68\uEE5B\uC1B0\u0000"+
-            "\uC1B4\uEE62\uEE69\uC1B5\uEE65\u0000\u0000\u0000"+
-            "\u0000\uC1AD\uC1AF\uF0C7\uF0C5\u0000\u0000\uF0CC"+
-            "\uF0C9\uF0CD\u0000\uF0BE\uF0C6\uF0D1\uEE6F\uF0C2"+
-            "\uC2CF\uE7A5\uF0BD\uF0CA\uF0C4\uF0C1\uF0BC\uF0BB"+
-            "\uF0D0\u0000\uF0C0\uF0BF\uC2CD\uF0C8\u0000\uC2CC"+
-            "\u0000\u0000\uC2CE\uF0C3\uF0CF\u0000\uF2DE\uF2DF"+
-            "\u0000\uC3C9\uF2DC\uC3C6\uF2E4\u0000\uC3CA\uF2E6"+
-            "\uF2DB\uF0CE\uF2E8\uF2DD\u0000\uC3C7\uF2E3\u0000"+
-            "\uF2E5\uF2E0\uF2E7\uF2E2\uF2E1\uC3C8\u0000\u0000"+
-            "\uF4C5\uF4C6\u0000\uF4C8\uC4AE\uC4AF\uF4C9\uF4C7"+
-            "\u0000\uF4C4\u0000\uF642\uF645\uF641\u0000\uC4FA"+
-            "\uF643\uC4F9\uC4F8\uC4F7\uF644\uF751\uF74F\u0000"+
-            "\uF74E\uF640\uF750\uF646\uF74D\u0000\uF7F9\uF7D7"+
-            "\uF7F7\uC5DB\uF7F8\uF7FA\u0000\uF8BF\uC5FA\uF8BE"+
-            "\uF8BD\uC5FB\u0000\uC65A\uF96E\uF9A7\uF9A6\uF9A8"+
-            "\uA6E5\uD0AA\u0000\uD3CF\uD3D0\u0000\u0000\u0000"+
-            "\uDBC0\u0000\uF647\uF8C0\uA6E6\uAD6C\uD0AB\u0000"+
-            "\u0000\u0000\uD7B1\uB34E\u0000\uDBC2\uDBC1\uB5F3"+
-            "\u0000\uB8C5\uE7C1\uBDC3\u0000\uBDC4\u0000\u0000"+
-            "\u0000\uBFC5\uC5FC\uA6E7\u0000\u0000\u0000\uD0AC"+
-            "\uAAED\uD0AE\uD0AD\uAD6D\u0000\uD3D1\u0000\uD3D8"+
-            "\uB049\uD3D6\uD3D4\u0000\uD3DB\uD3D2\uD3D3\uB04A"+
-            "\u0000\uB04E\u0000\u0000\uD3DC\uB04D\uD3DA\uD3D7"+
-            "\uD3D5\uB04B\uB04C\uD3D9\u0000\u0000\u0000\u0000"+
-            "\uB350\uD7B2\u0000\uB355\uD7C2\uB354\uD7C4\u0000"+
-            "\u0000\uD7B8\uB352\uD7C3\u0000\uD7B3\uB353\uD7BF"+
-            "\uD7BB\uD7BD\uD7B7\uD7BE\u0000\u0000\uB34F\uD7BA"+
-            "\u0000\uD7B9\uD7B5\u0000\uD7C0\u0000\u0000\uD7BC"+
-            "\uD7B4\u0000\uD7B6\uB351\uD7C1\u0000\u0000\u0000"+
-            "\u0000\uB5F6\uDBCD\u0000\u0000\u0000\uDBC9\uDBCB"+
-            "\uDBC6\uDBC5\uDBC3\u0000\uDBCA\uDBCC\uDBC8\u0000"+
-            "\uDBC7\uB5F4\uB5F5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uDBCF\uB8CD\uDFF2\uDFF8\uDFF3\uDFF4\u0000"+
-            "\uDFF9\u0000\uB8CF\u0000\uB8C7\uB8CE\uDFF1\uDBC4"+
-            "\uB8CA\uB8C8\uDFF7\uDFF6\uB8C9\uB8CB\uDFF5\uB8C6"+
-            "\u0000\uB8CC\u0000\u0000\u0000\u0000\u0000\uE3F6"+
-            "\uBB74\u0000\u0000\uE442\uE441\u0000\uE3FB\uBB76"+
-            "\uE440\uE3F7\uE3F8\uBB6E\uBB70\u0000\uE3FD\uE3F5"+
-            "\uBB72\uBB71\uE3F9\uE3FE\uE3FC\uBB73\uE3FA\u0000"+
-            "\u0000\uDBCE\uBB6F\u0000\u0000\uE7C2\uE7C9\uBDC6"+
-            "\u0000\uE7CD\uBDCA\uE7C5\uE7C3\u0000\uE7CC\u0000"+
-            "\uBDC5\uE7CB\uBDC7\uBDC8\uE7C4\uBDC9\uE7CA\uE7C6"+
-            "\uE7C7\uE7C8\uBB75\u0000\u0000\u0000\uEB70\uEB7C"+
-            "\u0000\uBFCA\uEB77\uEB79\u0000\uBFC8\uEB71\uEB75"+
-            "\u0000\uEB78\uBFC6\uBFC9\uEB7B\uEB73\uEB74\uEB7A"+
-            "\uEB72\uEB76\uBFC7\uEE72\u0000\uEE71\uC1B7\uEE77"+
-            "\uC1B9\u0000\u0000\uC1B6\uEE73\uC1BA\uEE74\u0000"+
-            "\u0000\uEE75\uEE78\u0000\uC1B8\u0000\uF0D6\u0000"+
-            "\u0000\uF0D9\u0000\uF0D3\uF0D5\u0000\u0000\uF0D4"+
-            "\uF0D7\uF0D8\uEE76\uF0D2\u0000\u0000\uC3CD\uF2EC"+
-            "\uF2EF\uF2F1\uF2EA\uF2EB\uF2EE\uF2F0\uC3CE\uC3CC"+
-            "\uC3CB\uF2ED\uF2E9\uF4CA\uC4B0\u0000\uF4CB\u0000"+
-            "\u0000\uF649\uC4FB\uF64B\uC4FC\uF648\uF64A\uC5A8"+
-            "\u0000\uF752\uC5A7\uF7FD\uF7FC\u0000\uF7FB\u0000"+
-            "\u0000\uF948\uF949\uF94B\uF94A\u0000\uCA50\uA6E8"+
-            "\u0000\uAD6E\uD7C5\uB5F7\u0000\uDFFA\uC2D0\u0000"+
-            "\uF2F2\u0000\u0000\uA8A3\u0000\u0000\u0000\uB357"+
-            "\u0000\u0000\u0000\uB356\u0000\uDBD0\uB5F8\uDBD2"+
-            "\uDBD1\u0000\u0000\uDFFB\uB8D0\uE443\uE446\uE445"+
-            "\u0000\uE444\uE7CE\uE7D0\uE7CF\u0000\uBFCC\u0000"+
-            "\u0000\u0000\uBFCB\u0000\uC1BB\uEE79\uEE7B\uEE7A"+
-            "\u0000\u0000\uC2D1\u0000\u0000\u0000\uF2F4\uF2F3"+
-            "\u0000\uF4CC\uC4B1\u0000\u0000\uC4FD\uF754\uF753"+
-            "\uC65B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA8A4\uD0AF\uAD6F\uD7C8\uD7C6\u0000"+
-            "\u0000\uD7C7\uDBD4\uDBD5\uE043\uDBD3\u0000\uDFFC"+
-            "\uE041\uE040\uE042\uB8D1\uDFFE\uDFFD\uE044\u0000"+
-            "\uE449\uE447\u0000\uE448\uE7D3\uE7D1\u0000\u0000"+
-            "\uE7D2\uEB7D\uEE7C\uEE7D\uC2D2\u0000\uF2F5\uF4CD"+
-            "\uC4B2\u0000\uF64C\uF755\uC5A9\u0000\uF7FE\uF94C"+
-            "\uA8A5\u0000\uAD71\uAD72\uD0B0\u0000\u0000\uD0B1"+
-            "\uAD70\u0000\uB054\u0000\uB052\u0000\uB051\uB058"+
-            "\uB050\uB059\uD3DD\uB056\u0000\uB053\uB057\uB055"+
-            "\uB04F\u0000\u0000\uB35F\u0000\uB359\uD7CC\uB35E"+
-            "\u0000\u0000\uB360\uB35A\u0000\uB35B\u0000\uD7CA"+
-            "\u0000\u0000\uB358\u0000\uD7CB\uB35D\u0000\u0000"+
-            "\uD7C9\uB35C\u0000\u0000\uB644\u0000\uB646\u0000"+
-            "\u0000\uDBD8\uB645\uB5F9\uB5FD\u0000\uB8E4\uE049"+
-            "\uDBDA\uB5FE\u0000\u0000\uDBDD\uDBDE\uB643\u0000"+
-            "\uDBE0\u0000\uDBE2\u0000\uDBE3\uDBD7\uDBD6\uDBE4"+
-            "\uB642\uDBE1\uDBDF\u0000\uB640\uB5FB\uB647\uDBDB"+
-            "\uDBDC\uDBD9\u0000\uB641\u0000\u0000\uB5FC\u0000"+
-            "\uB5FA\uE048\uB8DF\uB8DA\u0000\u0000\uB8D5\u0000"+
-            "\uB8E5\uB8D6\u0000\uB8D2\uB8E1\uB8DE\uB8E0\u0000"+
-            "\uB8D7\uB8DC\uB8D3\uB8D4\uE050\uE04D\uE045\uE04A"+
-            "\u0000\uB8E2\uE051\uB8E3\uB8D9\u0000\u0000\uE047"+
-            "\u0000\uE04F\uE04B\uE04E\uE04C\uB8DD\uE046\uB8D8"+
-            "\u0000\u0000\u0000\uE44C\uBB78\uBB7B\u0000\uE44E"+
-            "\u0000\uBBA5\uE44D\uBB7D\u0000\uBDCF\uE44F\u0000"+
-            "\uBBA4\uE44B\uBBA6\u0000\u0000\u0000\uBB79\u0000"+
-            "\uB8DB\uBB7C\u0000\uBB7A\uBB7E\uBBA2\uBB77\uBBA7"+
-            "\uBBA3\u0000\uBBA1\uE44A\u0000\u0000\u0000\u0000"+
-            "\uBDD6\u0000\uBDD2\u0000\u0000\u0000\uBDD9\u0000"+
-            "\uE7D6\uBDDA\uE7E2\uE7DB\uBDCB\uE7E3\uE7DD\uBDD5"+
-            "\uE7DE\u0000\uBDD4\uE7E1\uBDCE\uE7DF\uE7D5\uBDCD"+
-            "\uEBAA\uBDD3\u0000\uBDD0\u0000\uBDD8\u0000\uE7D4"+
-            "\u0000\uE7D8\uBDCC\uE7D7\uE7D9\uE7DA\uBDD7\uE7DC"+
-            "\uE7E0\uE7E4\u0000\uBDDB\uBFD2\uEBA5\uEBAB\uEBA8"+
-            "\uEB7E\uEBAC\uEBA1\u0000\uEBA7\u0000\uBFCD\uBFD3"+
-            "\uEBAD\u0000\u0000\uBFCF\u0000\uBFD9\uBFD4\uEBAF"+
-            "\uEBA9\uBFD0\uEBA2\uBFDA\uEBA3\uEBA4\uBFDB\uBFD8"+
-            "\uBDD1\u0000\uBFCE\uEBB0\uBFDC\u0000\uBFD5\uEBAE"+
-            "\uBFD1\uBFD6\uBFD7\u0000\uC1C3\uEEA4\uEEAD\uEEAA"+
-            "\uEEAC\u0000\uC1C0\uEEA5\u0000\uEEAB\uC1BC\uEEA7"+
-            "\uC1C4\uEEA3\uEEA8\uEEAF\uEBA6\uEEA9\uEEA2\uC1BD"+
-            "\uEEA1\uC1BE\uEEB0\uC1BF\uEEAE\uC1C2\uEE7E\u0000"+
-            "\uC1C1\u0000\uEEA6\uF0DC\uF0EA\uF0E5\uF0E7\uF0DB"+
-            "\uC2D3\u0000\uF0DA\uC2D6\uC2D5\u0000\uF0E9\uF0E1"+
-            "\uF0DE\uF0E4\u0000\uF0DD\u0000\uF0DF\uF0E8\uF0E6"+
-            "\u0000\uC2D4\uF0ED\uF0EB\uF0E2\uF0EC\uF0E3\u0000"+
-            "\uF2F9\uC3CF\uF341\u0000\u0000\uF64F\uC3D6\uF0E0"+
-            "\uF2F7\uC3D2\uF2F8\uF2FD\u0000\u0000\uC3D4\uC3D5"+
-            "\uF2F6\uF340\uF342\uF2FA\uF2FC\uF2FE\uF2FB\uF343"+
-            "\uC3D1\uC3D7\uC3D3\u0000\uC3D0\uF4D0\u0000\uC4B7"+
-            "\uF4CE\u0000\u0000\uF4D2\u0000\uF4D3\uC4B5\uF4D4"+
-            "\uF4D1\u0000\uF4CF\uC4B8\uC4B4\uF4D5\u0000\uC4B6"+
-            "\uC4B3\u0000\u0000\u0000\uC4FE\u0000\u0000\uC540"+
-            "\uF64E\uF64D\uF650\uF651\u0000\uC541\uF756\uF75B"+
-            "\uC5AA\u0000\uF758\u0000\uF757\uF75A\uF759\u0000"+
-            "\uF843\u0000\uC5DC\uF842\uF840\u0000\uF841\u0000"+
-            "\u0000\u0000\uC5FE\uC5FD\uF8C1\uF8C2\uC640\u0000"+
-            "\uF94D\uF94E\uC667\u0000\uC66D\u0000\uF9A9\uF9C8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA8A6"+
-            "\u0000\uD7CD\u0000\uD7CE\uE052\uE450\uE7E5\uC1C6"+
-            "\u0000\uC1C5\uF0EE\uF344\u0000\uF844\uA8A7\uD3DE"+
-            "\uB05A\uB361\uE054\uE053\uBDDC\uE7E6\uBDDD\uEEB1"+
-            "\uC2D7\u0000\u0000\u0000\uC676\uA8A8\uCDCB\uD3DF"+
-            "\u0000\u0000\uB362\u0000\uD7CF\uD7D0\u0000\uDBE5"+
-            "\u0000\uB648\uB8E6\u0000\uE056\uE055\uE057\u0000"+
-            "\uE451\uE452\uBBA8\uBFDD\uBDDE\uBFDE\u0000\uEEB5"+
-            "\uEEB2\uEEB4\uEEB3\uC1C7\u0000\uF0EF\uF346\uF345"+
-            "\uCBA4\uB05C\uB05B\uD3E0\u0000\uD7D1\u0000\u0000"+
-            "\uDBE7\uDBE6\uB649\u0000\uE059\uE05A\uE058\u0000"+
-            "\u0000\uB8E8\uB8E7\u0000\uBBAA\uBBA9\u0000\uE7E7"+
-            "\uEBB3\uEBB1\uEBB2\uBFDF\uEEB7\uEEB6\u0000\uF0F2"+
-            "\uF0F1\uF0F0\uF347\u0000\uF9AA\uA8A9\uAD73\u0000"+
-            "\uAD74\uB05D\uB05E\uD3E2\uD3E1\uD7D2\u0000\uB368"+
-            "\uB366\uB363\uB367\uB365\uB364\u0000\u0000\uB64A"+
-            "\uDBEA\u0000\uB8ED\uB64C\uB651\uDBEC\uB653\uB652"+
-            "\uB655\uDBEB\uDBE8\uB64F\uB64B\uB64D\uDBE9\uB654"+
-            "\uB650\uB64E\uB8EF\uB8EE\uB8EC\uB8F0\u0000\uB8EA"+
-            "\uB8EB\u0000\uB8E9\u0000\uE05B\u0000\u0000\uE454"+
-            "\u0000\uBBAC\uBBAD\uBBAB\u0000\uE453\u0000\uE455"+
-            "\u0000\uE7EA\uE7EC\u0000\uBDE7\uE7ED\uBDE0\uE7E9"+
-            "\uBDDF\uBDE9\uBDE5\uBDE6\uBDE2\uE7E8\uBDE1\uE7EE"+
-            "\uE7EB\u0000\uBDE8\u0000\uBDE3\uBDE4\uEBB5\u0000"+
-            "\uEBB7\uEBB6\u0000\uEBB8\uBFE0\uEBB4\u0000\u0000"+
-            "\uC1CB\uEEB8\uC1C8\uC1CC\uC1CA\uC1C9\uF0F3\u0000"+
-            "\uF0F6\u0000\uF0F5\u0000\uF0F4\uC2D8\uF348\uF349"+
-            "\uC3D8\uF34A\uC3D9\u0000\u0000\uC4BA\u0000\uC4B9"+
-            "\uF652\u0000\u0000\uC542\uF653\uF75C\uC5AB\uC5AC"+
-            "\u0000\uF845\u0000\uC642\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA8AA\u0000\uB36A\uB369"+
-            "\uE05C\uE05D\u0000\uBBAE\uEBB9\uBDEA\uEBBA\uEEB9"+
-            "\uA8AB\u0000\uD0B2\uAD76\uAD75\u0000\uD3E3\uB05F"+
-            "\uD3E4\uD7D5\u0000\uD7D4\u0000\uD7D3\u0000\u0000"+
-            "\uDBEE\uB658\u0000\u0000\uDBED\uB657\u0000\u0000"+
-            "\u0000\uDBEF\uB656\u0000\uE05F\uE062\uE060\uE061"+
-            "\uE065\uE05E\uE066\uE063\uE064\uBBB0\uE456\u0000"+
-            "\u0000\uBBAF\u0000\uE7F2\uE7F0\u0000\u0000\uBDEB"+
-            "\uE7EF\uE7F1\u0000\uBDEC\u0000\uEBBB\u0000\uEBBC"+
-            "\uC1CD\u0000\uF34C\uF34E\uF34B\uF34D\uF4D6\uF654"+
-            "\u0000\u0000\uF96F\uA8AC\uAD77\uD3E5\uD3E7\uD3E6"+
-            "\u0000\uD7D8\uB36C\u0000\uD7D6\u0000\uB36B\uD7D9"+
-            "\u0000\uD7DA\uD7D7\u0000\u0000\uDBFB\uB660\uDBF3"+
-            "\uDBF9\u0000\u0000\uB65B\uB65E\uDBF2\uB659\uDBF6"+
-            "\uE06C\uB65D\u0000\uDBF1\u0000\uDBF7\uDBF4\uDBFA"+
-            "\uDBF0\uDBF8\uB65C\uB65F\uDBF5\uB65A\u0000\uB8F2"+
-            "\uE068\uB8F1\uE06F\uE06E\uB8F8\u0000\uB8F9\uE070"+
-            "\uB8F3\uE06D\uB8F7\uE072\uE069\u0000\uE06B\uB8F4"+
-            "\uE067\uE06A\uE071\uB8F5\uE073\u0000\u0000\u0000"+
-            "\u0000\u0000\uB8F6\u0000\uBBB1\uE45B\uE461\uE459"+
-            "\uE462\u0000\uE458\uE45D\uE463\uE460\uE45F\uE45E"+
-            "\u0000\uE457\uE45C\u0000\u0000\uE45A\u0000\uBDF1"+
-            "\uBDEE\uE7FB\uE841\uE843\uE840\uE7F8\uE7FA\uE845"+
-            "\uE842\uE7FC\uE846\uE7F9\uE844\uBDEF\uBDF5\uBDF3"+
-            "\uE7F3\uBDF4\uBDF0\uE7F4\uE7F6\uE7F5\uE7FD\uE7FE"+
-            "\u0000\uBDF2\u0000\uBDED\u0000\u0000\uE7F7\u0000"+
-            "\uEBC6\uBFE2\u0000\uEBBD\uBFE3\uBFE6\uEBC2\u0000"+
-            "\uEBBF\uBFE5\u0000\u0000\uEBC3\uEBC4\uEBBE\uEBC7"+
-            "\uEBC0\uEBC5\uBFE4\u0000\uBFE1\uEBC1\u0000\uEEBF"+
-            "\uC1D0\uC1CE\uC1D1\uC1CF\uEEBE\uEEBB\uEEBA\u0000"+
-            "\uEEBD\u0000\u0000\uEEBC\uF145\uC2DE\uF0FB\uF0FA"+
-            "\u0000\uC2D9\uF141\uF140\uF0F7\uF143\uF0FC\uC2DD"+
-            "\uF0F9\uF142\uF0F8\uC2DA\uC2DC\uF0FD\uC2DB\uF0FE"+
-            "\u0000\uF144\uF352\u0000\uC3DE\uF34F\u0000\uF353"+
-            "\u0000\u0000\uC3DB\uF351\uC3E0\u0000\uC3DD\u0000"+
-            "\uF350\u0000\uC3DF\uF354\uC3DA\u0000\u0000\u0000"+
-            "\u0000\uC4BC\uC4BE\u0000\uF4D9\uC4BD\uF4D7\uC3DC"+
-            "\uF4D8\uC4BB\uC543\uC545\uF656\uC544\uF655\u0000"+
-            "\uF761\uC5AD\uF760\uC5AE\uF75E\uF75D\uF762\uF763"+
-            "\uF846\u0000\uF75F\u0000\u0000\uF8C6\uF8C3\uF8C4"+
-            "\uF8C5\uC65C\u0000\uF951\uF950\uF94F\uF970\u0000"+
-            "\uF9BE\uF9AB\uC66E\uA8AD\uB060\u0000\u0000\u0000"+
-            "\u0000\u0000\uB8FA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uBDF6\u0000\u0000\uEBC8\u0000\u0000"+
-            "\uC2DF\u0000\uF355\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uF9AC\uA8AE\uAAEE\uAD79\uAD78\u0000\uB063"+
-            "\u0000\uD3E8\uB061\uD3E9\uB062\u0000\u0000\uD7DF"+
-            "\uD7DB\u0000\u0000\uB36D\uD7DE\uD7DD\uD7DC\uB36E"+
-            "\uD7E0\uD7E1\u0000\u0000\u0000\uDC43\uDC41\uDC45"+
-            "\uDC46\uDC4C\u0000\uDC48\uDC4A\u0000\uDC42\uDBFC"+
-            "\u0000\uDC49\u0000\u0000\uDC4B\uDC44\uDC47\uDBFD"+
-            "\uB662\uDC40\uDBFE\uB661\uB663\u0000\uB8FD\uE075";
-
-        private final static String innerIndex5=
-            "\uE077\uE076\uE07B\uB8FB\u0000\uE078\uE074\uE079"+
-            "\uE07A\uB8FC\uB8FE\uE07C\u0000\uE467\uE466\u0000"+
-            "\uE464\uE465\uBBB3\uBBB5\uBBB2\uBBB4\uE84D\uE84E"+
-            "\uE849\u0000\uE84A\uBDF8\uBDFD\uBDF7\uBDFE\uBDF9"+
-            "\uE84B\u0000\u0000\uE84C\uE848\uBE40\uBDFB\u0000"+
-            "\u0000\uBDFA\uBDFC\u0000\uE847\u0000\uEBCA\uBFE8"+
-            "\u0000\u0000\uEBCC\uBFEA\uEBCF\uEBCB\uEBC9\uEBCE"+
-            "\uBFE9\uEBCD\u0000\uBFE7\u0000\u0000\uC1D3\uC1D6"+
-            "\uEEC1\u0000\uC1D4\uEEC0\uC1D2\uC1D5\uF146\uF147"+
-            "\uF148\uC2E0\u0000\uF149\u0000\uC2E1\uC3E2\uF358"+
-            "\uF359\uF357\uF356\uF35A\uC3E1\uF4DD\uF4DB\uF4DC"+
-            "\uF4DE\uF4DA\uF4DF\uF658\u0000\uF659\uF657\uC546"+
-            "\uF764\uC5AF\uF765\uF848\uF847\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA8AF\uB664\u0000\u0000\uB940"+
-            "\u0000\u0000\u0000\uBBB6\u0000\u0000\uBFEC\u0000"+
-            "\uBFEB\u0000\u0000\u0000\u0000\uC3E3\uC47C\uC547"+
-            "\uA8B0\uB064\uB941\u0000\uF35B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBA6"+
-            "\u0000\u0000\uA8B1\u0000\uA8B4\uA8B3\uA8B2\u0000"+
-            "\u0000\uCBA5\u0000\uCDCD\u0000\uCDCF\uAAEF\u0000"+
-            "\u0000\uAAF1\uCDCC\uCDCE\uAAF0\uCDD1\uCDD0\uCDD2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uD0B6\uD0B4\uAD7C\uD0B3\uADA3\uAD7E\uAD7B\u0000"+
-            "\uADA4\u0000\uAD7D\uADA2\u0000\uADA1\uD0B5\u0000"+
-            "\uAD7A\u0000\u0000\u0000\uB06A\uD3EB\uD3F1\uB067"+
-            "\uB06E\u0000\uB069\uD3EE\uD3F0\uB06C\uD3EA\uD3ED"+
-            "\uB068\uB065\uD3EC\uB06B\uD3EF\uB06D\uB066\u0000"+
-            "\u0000\u0000\u0000\uD7E3\uD7E6\uB370\u0000\uB37A"+
-            "\uB376\uD7E4\u0000\u0000\uB37E\uB377\uB37C\uB372"+
-            "\u0000\uB36F\uB371\uB37D\uD7E5\uB375\uB378\uB374"+
-            "\uB379\uD7E7\uB37B\uB373\uD7E2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uDC4D\uB665\uDC4F"+
-            "\u0000\uB667\uB669\u0000\uDC4E\uB666\uB66A\u0000"+
-            "\uB668\u0000\u0000\u0000\uB947\uE0A3\uB94F\uE07E"+
-            "\u0000\uB950\uB945\u0000\uE0A1\u0000\u0000\uB94A"+
-            "\u0000\uE0A2\uB943\uB942\u0000\uB94D\uB94C\uB94B"+
-            "\uB949\uB94E\uE07D\uB944\uB946\uB948\u0000\u0000"+
-            "\uBBB8\uBBBB\u0000\uBBBF\uBBB9\uBBBE\uBBBC\u0000"+
-            "\uBBB7\u0000\uBBBD\uBBBA\u0000\u0000\u0000\uE852"+
-            "\uBE43\uBE41\u0000\uE853\u0000\uBE44\uBE42\uE851"+
-            "\uE850\u0000\uBFF0\uE84F\uBFEE\uBFED\uEBD0\uBE45"+
-            "\uBFEF\uEBD1\uBFF2\uEBD2\uBFF1\uC1D8\uEEC3\uC1D7"+
-            "\uC1DC\uC1DA\uC1DB\uC2E3\uC1D9\uEEC2\uEBD3\uC2E2"+
-            "\uC2E4\u0000\uC3E4\uC3E5\u0000\uF4E0\u0000\uC5DE"+
-            "\uC5DD\uA8B6\u0000\u0000\uCA55\uB06F\u0000\uCA52"+
-            "\uCA53\uCA51\u0000\uCA54\u0000\u0000\uCBAA\uCBA7"+
-            "\uCBAC\uCBA8\uA8B7\uA8BA\u0000\uCBA9\uA8B9\uCBAB"+
-            "\u0000\u0000\uA8B8\u0000\u0000\u0000\u0000\uCDD5"+
-            "\uCDD7\uAAF4\uCDD3\uCDD6\uCDD4\uAAF2\uAAF5\u0000"+
-            "\uAAF3\u0000\u0000\u0000\u0000\uD0B8\uD0BC\uD0B9"+
-            "\u0000\uADA7\u0000\uADA8\u0000\uD0BB\u0000\uD0BD"+
-            "\uD0BF\u0000\uADA5\uD0BE\u0000\u0000\uADA6\u0000"+
-            "\u0000\u0000\u0000\u0000\uD7EE\uD0BA\uD3F2\uD3FB"+
-            "\uD3F9\uD3F4\uD3F5\uD3FA\uD3FC\uB071\u0000\uD3F7"+
-            "\uD3F3\uB070\uB072\uD3F6\uD3FD\uD3F8\u0000\u0000"+
-            "\uB3A1\uD7F1\uD7E9\uD7EF\uD7F0\uB3A2\u0000\uD7E8"+
-            "\uD7EA\uD0B7\uD7EC\uD7ED\uD7EB\uB66C\u0000\u0000"+
-            "\u0000\uDC56\uEBD4\uDC57\uDC54\uB3A3\uB66E\uDC53"+
-            "\uDC59\uDC58\uB66B\uDC5C\uDC52\uDC5B\uDC50\uDC5A"+
-            "\uDC55\uB66D\u0000\uE0AA\u0000\uE0A5\uE0AB\uE0A6"+
-            "\uE0A4\uE0A7\uB951\u0000\uE0A9\u0000\uE0A8\uB952"+
-            "\uBBC1\uBBC0\uE46E\uE471\uE469\uE46D\uBBC2\uE46C"+
-            "\uE46A\uE470\uE46B\uE468\uE46F\u0000\uE859\uBE48"+
-            "\uF14A\uE856\uE857\uE855\uDC51\uBE47\uE85A\uE854"+
-            "\uBE46\uBE49\uE858\uEBD5\uBFF3\uEBD6\uEBD7\u0000"+
-            "\uEEC4\uC1DD\uF14B\uF14C\u0000\u0000\uF14D\uF35D"+
-            "\uF35C\uF4E2\u0000\uF4E1\uF65B\uF65C\uF65A\uF766"+
-            "\uC5B0\uA8BB\uADAA\uADA9\uB075\uB074\uD440\uD441"+
-            "\uD3FE\u0000\uB073\uD7F5\u0000\uD7F6\uD7F2\uB3A4"+
-            "\uD7F3\u0000\uD7F4\u0000\u0000\u0000\u0000\uDC5F"+
-            "\uDC61\uDC5D\uDC60\uB66F\uDC5E\uB670\u0000\u0000"+
-            "\uDD73\uB955\uB954\u0000\uB953\u0000\uE0AC\uE0AD"+
-            "\u0000\u0000\uE473\uE475\uBBC6\uBBC3\u0000\uBBC5"+
-            "\uBBC4\uE474\uE472\u0000\u0000\u0000\u0000\u0000"+
-            "\uE861\uE85E\uE85F\uBE4D\uE860\uE85B\uE85C\uBE4A"+
-            "\u0000\uBE4B\uE85D\uBE4C\u0000\uEBDB\u0000\uEBDC"+
-            "\uEBD9\uEBDA\uBFF4\uEBD8\u0000\u0000\u0000\u0000"+
-            "\u0000\uEEC8\uEEC5\uEEC7\uC1E0\uEECB\uC1DF\uEEC9"+
-            "\uEECC\uEECA\uEEC6\uC1DE\u0000\uF14F\u0000\uF150"+
-            "\uF14E\u0000\uF152\uC2E5\uC2E6\uF35F\uC3E7\uF151"+
-            "\uF35E\uC3E6\uF4E5\uF4E6\uC4BF\uF4E4\u0000\uF4E3"+
-            "\u0000\uF65D\uC548\u0000\uF849\uF8C8\uF8C7\u0000"+
-            "\uC643\uC65D\uF8C9\uF971\u0000\uC66F\uA8BC\uAAF6"+
-            "\u0000\uB956\u0000\uC4C0\uA8BD\uADAB\uB3A5\uB671"+
-            "\uC2E7\uAAF7\u0000\uD0C1\uD0C0\uD442\u0000\uB078"+
-            "\uB076\uB07A\uD444\u0000\uB079\uB077\u0000\u0000"+
-            "\u0000\u0000\uD443\uB3A8\uD7FC\u0000\uB3A7\uB3A9"+
-            "\uD842\uB3AB\uD7FE\uD840\uD7F7\uB3AA\uD843\u0000"+
-            "\u0000\uD7F9\u0000\uD7FA\uD7F8\uB3A6\u0000\uD841"+
-            "\uD7FB\uD7FD\u0000\u0000\u0000\uDC6D\u0000\uDC6C"+
-            "\uDC6A\uDC62\uDC71\uDC65\uDC6F\uDC76\uDC6E\uB679"+
-            "\u0000\uB675\uDC63\u0000\uDC69\uB677\u0000\uDC68"+
-            "\uB678\uB67A\uDC6B\u0000\uB672\uB673\uDC77\uDC75"+
-            "\u0000\uDC74\uDC66\u0000\uDC72\u0000\uB676\u0000"+
-            "\u0000\u0000\u0000\uB674\uDC73\uDC64\uDC67\uDC70"+
-            "\u0000\u0000\u0000\u0000\u0000\uE4BA\uE0B7\u0000"+
-            "\uE0B0\uE0C3\uE0CC\uE0B3\uB961\u0000\uE0C0\uB957"+
-            "\uB959\uB965\uE0B1\u0000\u0000\uB95A\uB95C\uB966"+
-            "\uB95B\u0000\u0000\u0000\u0000\uB964\uE0B9\u0000"+
-            "\uE0AE\uB962\uE0B8\uB95E\uE0CA\uB963\uE0C8\uE0BC"+
-            "\uE0C6\uB960\uE0AF\uE0C9\uE0C4\u0000\uE0CB\uB958"+
-            "\u0000\u0000\uB967\uB95D\u0000\u0000\uE0B5\u0000"+
-            "\uE0BD\uE0C1\u0000\uE0C5\uB95F\uE0B4\uE0B2\uE0BE"+
-            "\u0000\u0000\u0000\u0000\uE0BB\uE0BA\u0000\uE0BF"+
-            "\uE0C2\u0000\uE0C7\u0000\u0000\u0000\uE478\u0000"+
-            "\uBBC7\uE4A4\uE47A\uBBCC\uBBD0\uE4AD\uE4B5\uE4A6"+
-            "\uBBC8\u0000\uE4AA\uE0B6\u0000\uBBC9\uE4B1\uE4B6"+
-            "\uE4AE\u0000\uE4B0\uE4B9\uE4B2\uE47E\uE4A9\u0000"+
-            "\u0000\uBBD1\u0000\uBBCD\uE47C\uE4AB\uBBCB\uE4A5"+
-            "\uBBCA\uE4B3\uE4A2\uE479\uBBCE\uE4B8\u0000\u0000"+
-            "\uE47B\uE4AF\uE4AC\uE4A7\uE477\uE476\uE4A1\uE4B4"+
-            "\uBBCF\uE4B7\uE47D\uE4A3\uBE52\u0000\u0000\u0000"+
-            "\u0000\u0000\uBE5A\uBE55\uE8A4\uE8A1\uE867\uBE50"+
-            "\u0000\u0000\u0000\uBE4F\uBE56\u0000\u0000\u0000"+
-            "\uE865\uBE54\uE871\uE863\uE864\uBE4E\uE8A3\uBE58"+
-            "\uE874\uE879\uE873\uEBEE\uE86F\uE877\uE875\uE868"+
-            "\uE862\uE87D\uBE57\uE87E\u0000\uE878\u0000\uE86D"+
-            "\uE86B\uE866\u0000\u0000\u0000\uE86E\uE87B\uE86A"+
-            "\uE87A\uE8A2\u0000\u0000\uBE53\u0000\uE876\uE87C"+
-            "\uE872\uE86C\uBE51\u0000\u0000\u0000\uE4A8\uE870"+
-            "\uBE59\uE869\u0000\u0000\u0000\u0000\u0000\uEBF4"+
-            "\uBFF7\uEBF3\uEBF0\uEC44\uBFFB\u0000\uEC41\uEBF8"+
-            "\uEC43\uEBE9\uEBF6\u0000\uBFFD\u0000\uEBE1\u0000"+
-            "\uEBDF\uEC42\u0000\uEC40\uEBFE\uEBED\uEBEC\uEBE2"+
-            "\uC040\u0000\uEBE8\uEBF2\uEBFD\uC043\uEC45\u0000"+
-            "\uC1E8\uC045\uBFFE\uEBE6\u0000\uEBEF\uEBDE\uEBE0"+
-            "\uBFF5\uC042\uBFFA\uEBE7\uEBF7\uEBF1\uC041\uEBDD"+
-            "\uC1E3\uEBF9\uEBFC\uBFFC\u0000\uEBEB\uC044\uBFF9"+
-            "\u0000\u0000\u0000\uBFF8\uEBF5\uEBFB\uBFF6\u0000"+
-            "\uEBE4\uEBFA\u0000\u0000\uEBE5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uEBEA\uEED2"+
-            "\u0000\uEED7\uC1E5\uC1E7\uEEDD\uC1E1\uEEEC\uEEE3"+
-            "\uEED8\uEED9\uEEE2\u0000\uC1EE\uEEE1\uEED1\uEEE0"+
-            "\uEED4\uEEED\uC1ED\uC1EB\uEED5\u0000\uEEE8\u0000"+
-            "\uEEDA\uEEE7\u0000\uEEE9\uEED0\uC1E6\u0000\uEEEA"+
-            "\u0000\u0000\uEEDE\u0000\uC1EA\uEEDB\u0000\u0000"+
-            "\uC1EC\uEEE4\u0000\u0000\u0000\uC1E4\uEED6\uEEE5"+
-            "\u0000\uEEDF\uEBE3\uEEE6\uEED3\u0000\uC1E9\u0000"+
-            "\uEEEB\u0000\uC1E2\uEECE\u0000\u0000\u0000\u0000"+
-            "\uF160\uF159\uC2E9\u0000\uF154\uF163\uF15B\uEEDC"+
-            "\u0000\uF165\uF155\u0000\uC2E8\uF15F\uC2EA\uC2F2"+
-            "\uC2F0\uF161\uC2F1\uF157\u0000\uF158\uF15D\uF162"+
-            "\u0000\uEECD\uC2EB\uF16A\uF167\uF16B\uF15E\uF15A"+
-            "\uF168\uF36A\uF15C\u0000\uC2EE\u0000\uC2ED\uEECF"+
-            "\uC2EF\uF164\uF166\uC2EC\uF169\uF153\u0000\uF156"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uF373\u0000\uF363\uC3EB\uF371\u0000\u0000\uF361"+
-            "\uC3EC\u0000\uF36C\u0000\uF368\uC3F1\uF372\uF362"+
-            "\uF365\uC3E9\uF374\u0000\uF36D\uF370\uC3EF\uC3F4"+
-            "\uC3F2\uF369\uF364\u0000\uC3ED\uC3EE\uF360\uC3EA"+
-            "\u0000\uC3E8\uC3F0\uF36F\uC3F3\u0000\uF36B\uF375"+
-            "\uC3F5\u0000\u0000\u0000\uF367\u0000\uF36E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uF4F3\uF542\uF4F5"+
-            "\uF4FC\uF366\uF4FA\uF4E9\uF540\uC4C3\uF4ED\uF4FE"+
-            "\uF4F4\u0000\u0000\uC4C2\u0000\u0000\uF544\uF4F6"+
-            "\u0000\uF4FB\uF4FD\uF4E7\uF541\uF4F2\uF4F7\uF4EB"+
-            "\uF4EF\uF543\uF4F9\uF4E8\uF4EC\uF4EE\uF4F8\u0000"+
-            "\uC4C1\uF4F1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uF4EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uF4F0\uF661\uF666\uC54F\uF668\u0000\uC549\u0000"+
-            "\uF664\uF66A\uC54E\uC54A\u0000\uC54B\uF660\uF667"+
-            "\uC54D\uF665\uC54C\uF65F\uF663\uF662\u0000\uF65E"+
-            "\uF669\u0000\u0000\u0000\uC5B1\uF76D\uF770\uF76C"+
-            "\uF76E\uF76F\uF769\uF76A\uF767\u0000\u0000\uF76B"+
-            "\uF768\uC5B2\uC5B3\u0000\u0000\uF84B\u0000\uF84D"+
-            "\u0000\u0000\u0000\u0000\u0000\uF84C\uF84E\u0000"+
-            "\uC5E0\u0000\uF84A\uC5DF\uC5E1\u0000\u0000\u0000"+
-            "\uF8CB\uF8CC\uC644\uF8CA\u0000\uF953\uF952\uF954"+
-            "\uC65F\uF955\uC65E\uF956\uF972\uF975\uF974\uC668"+
-            "\uF973\u0000\u0000\u0000\uC672\uC670\uC671\uC677"+
-            "\uF9C0\uF9C1\uF9BF\uF9C9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uAAF8"+
-            "\u0000\u0000\uD844\uDC78\uE8A5\uF376\u0000\u0000"+
-            "\uAAF9\u0000\uADAC\uB07B\u0000\u0000\uD845\u0000"+
-            "\uD846\uB3AC\u0000\uB67D\uDC7A\uDC79\uB6A3\uB67C"+
-            "\uDC7B\uB67E\uB6A2\uB6A1\uB67B\u0000\u0000\u0000"+
-            "\uB968\u0000\u0000\uE0D0\uE0CE\u0000\uE0CF\uE0CD"+
-            "\u0000\uBBD2\u0000\uBBD5\uBBD7\uBBD6\u0000\u0000"+
-            "\uBBD3\uBBD4\u0000\uE8A7\uE8A6\uBE5B\uE8A8\u0000"+
-            "\uE8A9\uBE5C\u0000\u0000\u0000\uEC4D\uEC4B\uEEF3"+
-            "\u0000\uEC49\uEC4A\uC046\uEC46\uEC4E\uEC48\uEC4C"+
-            "\uEEEF\u0000\u0000\uEEF1\u0000\uEEF2\uC1F3\uEEEE"+
-            "\uC1F2\uEEF0\uC1EF\uC1F0\uC1F1\uEC47\u0000\u0000"+
-            "\uC2F5\uF16E\uF16C\uF16D\uC2F3\uC2F6\uC2F4\u0000"+
-            "\u0000\u0000\uF377\uF378\uC3F6\u0000\uF545\uF547"+
-            "\uF546\uC4C4\uC550\uF66D\uF66C\uF66B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uAAFA\u0000\uC9AA\u0000"+
-            "\uCA58\uA6E9\uCA56\uCA59\uCA57\u0000\u0000\u0000"+
-            "\uCBAE\u0000\uA8C1\u0000\uA8C2\uCBB0\uA8BF\uCBAF"+
-            "\uCBAD\uA8C0\uA8BE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uCDD8\uCDDB\uAAFD\uCDDA\uCDD9\u0000\uAAFC"+
-            "\uAAFB\u0000\uAB40\uCDDC\uAAFE\u0000\u0000\u0000"+
-            "\u0000\u0000\uD0C6\uADAE\uADAF\uADB0\uD0C7\uD0C3"+
-            "\uADAD\uD0C4\u0000\uD0C5\uD0C2\u0000\u0000\u0000"+
-            "\uB0A4\u0000\u0000\uB0A1\uD445\uB0A2\uB0A5\uD446"+
-            "\u0000\uB07E\uB07C\uB07D\uB0A3\u0000\u0000\u0000"+
-            "\u0000\u0000\uB3AD\uD849\uB3B5\uD848\u0000\uD84B"+
-            "\uB3B1\uD84A\uB6AB\uB3AF\uB3B2\uB3AE\uB3B3\uB3B4"+
-            "\uB3B0\u0000\u0000\u0000\uD847\uB6A7\uDC7D\u0000"+
-            "\uDCA3\u0000\u0000\uDCA2\uB6AC\uB6A8\uB6A9\uDC7C"+
-            "\uDC7E\uDCA1\uB6A4\uB6A6\u0000\uB6AA\uB6A5\u0000"+
-            "\u0000\uE0D3\uE0D1\uE0D2\uB96A\uB96B\u0000\uE0D4"+
-            "\uB969\uBBD8\u0000\uBBDA\uBBD9\u0000\uE4BB\u0000"+
-            "\u0000\uE4BC\uE8AB\u0000\uE8AA\u0000\u0000\uC047"+
-            "\uC048\uEC4F\uC049\u0000\uEEF6\u0000\uEEF4\u0000"+
-            "\uEEF5\uC1F4\u0000\uF16F\uC3F7\u0000\u0000\u0000"+
-            "\uC1F5\uAB41\u0000\uB0A6\uD447\u0000\u0000\uD84C"+
-            "\uB3B6\uB6AD\uDCA4\uDCA6\uB6AF\uB6AE\uB6B0\uB6B1"+
-            "\uDCA5\uB96E\uB96F\uB96D\uBBDB\uB96C\uE0D5\u0000"+
-            "\u0000\u0000\uBBDC\uE8AC\uEC50\uC04A\uC1F6\uF170"+
-            "\uF174\uC2F9\uF171\uC2FA\uC2F8\uF175\uC2FB\uF173"+
-            "\u0000\uF379\uC2F7\uC3F8\u0000\uF8CD\u0000\u0000"+
-            "\uAB42\uB3B8\uB3B7\u0000\u0000\u0000\u0000\uB6B2"+
-            "\uDCA8\uDCA7\uB6B3\u0000\u0000\uE0D9\uB973\uB970"+
-            "\uE0D8\uB972\uE0D6\uB971\u0000\uE0D7\u0000\uE4BD"+
-            "\uBBDD\u0000\uE8AF\u0000\uBE5D\uE8AD\uBE5E\uBE5F"+
-            "\uE8AE\uBE60\u0000\uEC51\u0000\uC04E\uC04B\uC050"+
-            "\uEC53\uC04C\uEC52\uC04F\u0000\u0000\uC04D\u0000"+
-            "\uEEF9\uEEFB\u0000\u0000\uC1F7\uEEFA\uC1F8\uEEF8"+
-            "\uEEF7\u0000\uF177\uF176\uC2FC\uF178\uF37E\uC3FA"+
-            "\uF37D\uF37A\uC3F9\uF37B\uF37C\u0000\uF548\uF549"+
-            "\uC4C5\u0000\uC553\u0000\u0000\uF66E\u0000\u0000"+
-            "\uC551\uC552\uF66F\u0000\u0000\uC5B4\uC5B5\uF771"+
-            "\u0000\u0000\uC645\uF8CF\uC647\u0000\uF8CE\uF8D0"+
-            "\uC646\uF957\u0000\uF9AD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uAB43\u0000\u0000\u0000\uB974\u0000"+
-            "\uE4BE\u0000\uE8B0\uC051\uC052\u0000\uAB44\u0000"+
-            "\uBE61\uC3FB\uADB1\u0000\u0000\u0000\uC053\u0000"+
-            "\uC5E2\uADB2\uD84D\u0000\uDCA9\u0000\uDCAB\u0000"+
-            "\uDCAA\u0000\uE0DD\uE0DA\uB975\u0000\uB976\uE0DB"+
-            "\uE0DC\u0000\uE4C0\uE4C5\uBBDE\uE4BF\uE4C1\uE4C8"+
-            "\uE4C3\uE4C7\uE4C4\uE4C2\uE4C6\uBBDF\u0000\u0000"+
-            "\uE8B3\u0000\uE8B1\uBE63\u0000\uBE62\uE8B2\uBE64"+
-            "\u0000\u0000\u0000\u0000\uEC56\u0000\u0000\uEC55"+
-            "\uC054\uEC54\uEEFC\u0000\uEEFE\uEF41\uEF40\u0000"+
-            "\uC1F9\uEEFD\uF1A1\uC2FD\uF17D\uF1A2\uC2FE\u0000"+
-            "\uF17B\u0000\uF17E\uF17C\uF179\uC340\uF17A\u0000"+
-            "\u0000\u0000\u0000\uF3A1\u0000\u0000\uF3A3\uF3A2"+
-            "\u0000\uF54A\u0000\uF54B\u0000\u0000\u0000\uF670"+
-            "\u0000\uC5B7\u0000\uC5B6\uF84F\uF850\uC648\uF8D1"+
-            "\u0000\uC669\u0000\uADB3\uB6B4\uE4CA\uE4C9\uE8B5"+
-            "\uE8B4\u0000\u0000\uC1FA\uEF43\uEF42\uF1A5\uF1A3"+
-            "\uF1A6\uF1A4\u0000\u0000\uC3FC\uF3A4\uF3A5\uF3A6"+
-            "\u0000\uF671\u0000\uF772\u0000\uF8D2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uADB4\u0000\u0000"+
-            "\uEC57\uEF44\u0000\uADB5\u0000\u0000\uBBE0\u0000"+
-            "\uEC58\uC341\uF1A7\uC3FD\u0000\uF54C\uF54D\uC554"+
-            "\uF851\uADB6\uB3BB\uB3BC\uD84E\uB6B5\uB6B6\uDCAC"+
-            "\uB6B7\u0000\uB97A\u0000\uB97C\uE0DF\uE0E0\uE0DE"+
-            "\uB977\uB978\uB97B\uB979\u0000\u0000\uE4CB\uBBE1"+
-            "\uBBE2\u0000\u0000\uE8BC\uBE67\uE8B7\uE8B6\u0000"+
-            "\uE8BB\uBE65\u0000\u0000\uC05B\u0000\uE8B8\uE8BD"+
-            "\uE8BA\uE8B9\u0000\uBE66\u0000\uC059\u0000\uEC5A"+
-            "\uC055\u0000\uEC5B\u0000\u0000\uEC59\u0000\uC058"+
-            "\uC056\uC05A\u0000\uC057\u0000\u0000\u0000\u0000"+
-            "\u0000\uEF45\u0000\uEF4A\uEF46\uEF49\uC1FB\u0000"+
-            "\uEDD4\uEF48\uEF47\u0000\uC344\uC342\uC345\uC343"+
-            "\uF1A8\uF1A9\uF1AA\uC346\u0000\u0000\u0000\uF3AA"+
-            "\uC440\uF3A8\u0000\uC441\uF3A7\uF3A9\uC3FE\uF551"+
-            "\uF54E\u0000\uF54F\uF550\uF672\uC556\u0000\uC555"+
-            "\u0000\uF774\uF773\uC5B8\u0000\u0000\u0000\uC5E3"+
-            "\uC649\uC660\uF958\uF9AE\uF9AF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uADB7\uDCAD\u0000\u0000\uE0E1\uE4CC\uE4CD\uBBE3"+
-            "\u0000\uBBE4\uE8BE\uBE68\u0000\u0000\uC1FC\u0000"+
-            "\uF1AB\u0000\uC347\uF3AD\uC442\uF3AC\uF3AE\uF3AB"+
-            "\uF675\uF552\uF553\u0000\uC4C6\u0000\uF674\u0000"+
-            "\u0000\uF673\u0000\uF775\uF9B0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uADB8\u0000\u0000\u0000\uADB9"+
-            "\u0000\u0000\uB0A7\uD448\u0000\uD84F\u0000\uB6B8"+
-            "\u0000\uB6BB\uB6B9\uDCAE\u0000\uB6BD\u0000\uB6BA"+
-            "\u0000\u0000\uB6BC\u0000\uB97E\u0000\uE0E2\u0000"+
-            "\u0000\uE0E3\uE8C0\u0000\uB97D\uB9A1\uB9A2\u0000"+
-            "\uE4CF\u0000\uE4CE\uBBE5\u0000\uBBE6\u0000\uE4D0"+
-            "\uE8BF\uBBE8\uBE69\u0000\uBBE7\u0000\u0000\u0000"+
-            "\uC05C\uE8C1\uBE6B\uBE6A\uE8C2\uE8C5\uE8C3\uE8C4"+
-            "\uBE6C\u0000\uC061\uC05F\u0000\u0000\uC05E\uEC5D"+
-            "\u0000\uC060\u0000\u0000\uEC5C\uEF4B\u0000\uEC5E"+
-            "\uC05D\uEC5F\uEF4E\uEF4C\uEF4D\uEF52\uC34B\uEF51"+
-            "\uEF54\uEF53\uEF50\uEF4F\u0000\uC1FD\u0000\u0000"+
-            "\u0000\u0000\uF1AE\u0000\uF1AD\uC34A\uC348\uC349"+
-            "\u0000\uF1AC\u0000\uF3B1\u0000\uC443\u0000\uF3B0"+
-            "\uF3AF\uC444\u0000\uF558\uF557\u0000\uF555\u0000"+
-            "\uF554\uC4C8\uC4C7\uF559\uF776\uC5B9\uF677\uC557"+
-            "\uF676\uF556\u0000\uF777\uC5E4\u0000\uC661\uF959"+
-            "\u0000\uF9B1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uADBA\uD850"+
-            "\uEF55\uADBB\u0000\u0000\uE4D2\uE4D1\uEC60\u0000"+
-            "\u0000\uEF57\u0000\uEF56\u0000\uC34C\uF3B2\uF3B3"+
-            "\uC4C9\u0000\u0000\uF9B2\uB0A8\uB6BF\uB6BE\uE0E4"+
-            "\uE0E6\uB9A4\uE0E5\uB9A3\uB9A5\uE0E7\u0000\u0000"+
-            "\u0000\uE4D4\uE4D6\uE4D5\u0000\uE4D8\u0000\u0000"+
-            "\u0000\uBBE9\uE4D7\uE4D3\u0000\u0000\u0000\uE4D9"+
-            "\u0000\uE8CC\u0000\uE8CF\uE8D1\uE8C7\uE8CB\uE8C8"+
-            "\uBE6E\uBE71\uBE73\uE8C9\uE8CA\uBE72\uE8CD\uE8D0"+
-            "\uE8CE\uBE74\u0000\uBE70\uE8C6\uBE6D\u0000\uBE6F"+
-            "\u0000\u0000\uC063\uEC66\uEC64\uEC63\u0000\uEC69"+
-            "\u0000\uEC68\uEC67\u0000\uEC62\uC062\uEC61\u0000"+
-            "\uEC65\uC064\u0000\u0000\uEF5A\u0000\uEF5E\uEF5B"+
-            "\uEF5D\uEF5C\uEF59\uEF5F\uEF62\uEF60\uEF61\uC240"+
-            "\u0000\uC1FE\uEF58\uEF63\uF1B3\uF1B6\uF1B8\uF1B7"+
-            "\u0000\uF1B1\uF1B5\uF1B0\u0000\uF1B2\uC34D\uF1AF"+
-            "\u0000\uF1B4\u0000\u0000\uF3C0\uF3B5\uC445\u0000"+
-            "\u0000\uC446\uF3B4\uF3B9\uF3BF\uF3B7\uF3BE\u0000"+
-            "\uF3BB\u0000\uF3BA\uF3BD\uF3B8\uF3B6\u0000\uF3BC"+
-            "\u0000\uF560\uF55E\uC4CA\uF55D\uF563\uF561\u0000"+
-            "\uC4CB\uF55C\uF55A\u0000\uF55B\uC4CD\uF55F\uC4CC"+
-            "\uF562\uF678\uF67E\u0000\u0000\uF679\uC55B\uF6A1"+
-            "\uC55A\uF67D\uF67C\uC559\uF67B\uC558\uF67A\u0000"+
-            "\uF77D\uF7A1\uF77E\u0000\uF77B\uC5BB\uF778\uF77C"+
-            "\uF7A3\u0000\uF7A2\uF779\uF77A\uC5BA\uF852\uC5E7"+
-            "\u0000\uF853\uC5E5\uC5E6\u0000\u0000\uF8D3\uC64A"+
-            "\uF976\u0000\uC66A\u0000\uF9B3\uC66B\uF9B4\uF9B5"+
-            "\uF9C3\uF9C2\uC67A\uF9CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uB0A9\u0000\u0000\uE0E9\u0000\uE0E8\u0000\uBBEA"+
-            "\uBBEB\uE4DA\u0000\uE8D2\uEC6C\u0000\u0000\uBE75"+
-            "\uC065\uEC6A\u0000\uEC6D\uC066\u0000\uEF64\uEC6B"+
-            "\uF1B9\uC34E\uF3C1\u0000\u0000\u0000\uF566\uF564"+
-            "\u0000\u0000\uF565\u0000\u0000\uF6A2\u0000\uC55C"+
-            "\uF7A4\uC5EA\uC5BC\uC5E8\uC5E9\uF8D4\uC662\u0000"+
-            "\uB0AA\u0000\u0000\u0000\uF1BA\u0000\u0000\uD449"+
-            "\u0000\uB9A6\u0000\uE4DB\u0000\u0000\uBBEC\uE4DC"+
-            "\u0000\u0000\u0000\uE8D4\uE8D3\uC068\uBE76\uBE77"+
-            "\u0000\uE8D7\uE8D6\uE8D5\u0000\u0000\uEC6E\uEC71"+
-            "\u0000\uEC70\uEC6F\uC067\uEF68\uEF66\uEF65\u0000"+
-            "\u0000\uEF67\u0000\uC34F\uF1BC\uF1BD\uC350\u0000"+
-            "\uF1BB\u0000\uF3C3\uF3C2\uF3C5\uC447\uF3C4\u0000"+
-            "\uF567\uF569\uF568\u0000\u0000\uF6A3\uF6A6\uF6A4"+
-            "\uF6A5\uF7A5\uC5BD\u0000\u0000\u0000\uF854\uF855"+
-            "\uF856\u0000\uC64B\uC663\uF9B6\uB0AB\u0000\uBE78"+
-            "\uC069\uF1BE\u0000\uF7A6\u0000\u0000\uF9C4\uD44A"+
-            "\u0000\uC67B\uB0AC\uEC72\u0000\uF1BF\u0000\uF3C6"+
-            "\u0000\u0000\uF6A7\uF7A7\uB0AD\u0000\uE4DD\uE4DE"+
-            "\u0000\uBBED\uBBEE\uE8D9\uBE7A\uBE79\uE8D8\u0000"+
-            "\uEF69\u0000\uF1C0\uF1C2\uF1C1\uC353\uC352\uC351"+
-            "\u0000\uC55E\uF6A8\u0000\uC55D\uF7A9\uF7A8\u0000"+
-            "\uC64C\uF8D5\uB3BD\uE0EA\u0000\u0000\u0000\uE4E1"+
-            "\uE4DF\uE4E0\u0000\u0000\uE8E2\u0000\uE8DD\uE8DA"+
-            "\uE8E1\u0000\u0000\u0000\uE8E3\u0000\u0000\uBE7C"+
-            "\uE8E0\uE8DC\u0000\u0000\uE8DB\uE8DF\uE8DE\uBE7B"+
-            "\u0000\u0000\uEC7D\uEC78\uEC76\uECA1\uEC77\u0000"+
-            "\uEC73\u0000\uEC79\u0000\u0000\uEC74\uEF72\uEC75"+
-            "\uECA2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uEC7C\uC06A\uEC7B\uEC7A\u0000\uEC7E\u0000\u0000"+
-            "\u0000\u0000\uEF6A\uEF6D\u0000\u0000\uEF6C\u0000"+
-            "\uEF74\uEF6F\uEF73\u0000\uEF71\uEF70\uEF6E\u0000"+
-            "\uEF6B\u0000\uC243\uC242\u0000\uC244\uC241\uEF75"+
-            "\u0000\u0000\u0000\u0000\u0000\uF1C8\uF1CB\u0000"+
-            "\uF1C9\uF1CD\u0000\u0000\u0000\uF1CE\u0000\uF1C6"+
-            "\uC358\uF1C7\u0000\uF1C5\uF1CC\u0000\uF1C4\uF1C3"+
-            "\uC357\uC355\uC354\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uF1CA\uF3CF\uF3D5\uC44A\uF3D0"+
-            "\u0000\uF3D3\uF3D7\uC44B\uF3D2\u0000\uF3CA\u0000"+
-            "\uF3C9\uF3D6\uF3CD\u0000\uF3CB\uF3D4\uF3CC\uC449"+
-            "\uC448\u0000\uF3C7\uF3C8\uF3D1\u0000\u0000\u0000"+
-            "\uF3CE\u0000\u0000\u0000\u0000\u0000\u0000\uF56C"+
-            "\uF56F\u0000\u0000\u0000\u0000\uC356\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uF56D\uF573\uF571"+
-            "\uF56B\uF576\u0000\uF56A\u0000\uC4CF\uF572\u0000"+
-            "\u0000\u0000\uF56E\uC4CE\uF575\u0000\u0000\uF574"+
-            "\u0000\u0000\u0000\u0000\uF6AB\uF6AA\u0000\u0000"+
-            "\u0000\uF6B1\u0000\uF6AD\uF6B0\uC560\u0000\u0000"+
-            "\uF6AE\uF6AF\u0000\uF6A9\uF6AC\uC55F\u0000\u0000"+
-            "\u0000\uC5BF\uF7B4\uF7AF\uF7B3\u0000\uF7B6\uF7B2"+
-            "\u0000\uF7AE\u0000\uC5C1\uF7B1\uF7B5\uC5C0\uF7AC"+
-            "\uF570\uF7B0\u0000\u0000\uF7AD\u0000\uF7AA\u0000"+
-            "\uF7AB\uC5BE\uF85A\uF85C\uF85F\uF85B\uF860\u0000"+
-            "\uF859\u0000\uF857\u0000\uC5EB\uF85D\uC5ED\uC5EC"+
-            "\uF858\uF85E\u0000\u0000\u0000\u0000\uF8DA\uC64D"+
-            "\uF8DB\u0000\uF8D9\uF8D6\u0000\u0000\uF8D8\uF8D7"+
-            "\uF95A\u0000\u0000\u0000\u0000\uF95C\uF95B\u0000"+
-            "\u0000\uF979\u0000\uF978\uF977\uF97A\u0000\uC673"+
-            "\uC674\uF9CA\uF9CE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uB3BE\uDCAF\uE0ED"+
-            "\u0000\uB9A7\uE0EB\u0000\u0000\uE0EC\u0000\u0000"+
-            "\u0000\uE4E2\uE4E3\uBBF1\uBBEF\uE4E4\uBBF0\uE8E8"+
-            "\u0000\uE8EB\uE8E5\uE8EC\uE8E4\uE8E6\u0000\uE8E7"+
-            "\uE8EA\u0000\u0000\uBEA1\uE8EF\uE8EE\uBE7D\uE8E9"+
-            "\uE8ED\uBE7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uECAC\u0000\uC06F\u0000\uECA7\uC06B\u0000\uECA4"+
-            "\uECAA\uECAD\u0000\uC070\u0000\uECA9\uECA6\uECAE"+
-            "\uECA5\u0000\uECAB\uC06C\u0000\uECA3\uC06D\u0000"+
-            "\uC06E\uECA8\u0000\u0000\u0000\uEFA9\uEF7A\uEF7B"+
-            "\uEF7E\uEF7C\u0000\uEF76\u0000\u0000\uEF79\uEFA5"+
-            "\uEF7D\u0000\u0000\uC245\u0000\uEFA7\uEFA4\uC246"+
-            "\uEFA6\uEF77\uEFA2\uEFA3\u0000\uEFA1\u0000\u0000"+
-            "\u0000\u0000\uF1D2\uF1D4\uF1D7\u0000\u0000\uF1D1"+
-            "\u0000\uC359\uF1D9\uF1D0\uF1DA\u0000\uF1D6\uF1D8"+
-            "\uF1DC\uF1D5\uF1DD\uF1D3\uF1CF\uC35A\u0000\uF1DB"+
-            "\uC35B\uC44D\u0000\u0000\u0000\u0000\u0000\uEF78"+
-            "\uF3F1\uF3E8\uC44F\uF3E4\uC450\u0000\u0000\uF3ED"+
-            "\uF3E7\uF3DD\uC44E\uF3EA\uF3E5\uF3E6\u0000\uF3D8"+
-            "\uF3DF\uF3EE\u0000\uF3EB\u0000\uF3E3\u0000\uF3EF"+
-            "\uF3DE\uF3D9\uF3EC\u0000\uF3DB\uF3E9\uF3E0\uF3F0"+
-            "\uF3DC\uC44C\uF3DA\uF3E1\uF3E2\u0000\u0000\u0000"+
-            "\uF57D\u0000\uF57B\u0000\uF5A2\u0000\uF5AE\uF5A5"+
-            "\uF57C\uF578\uF5A7\uF57E\uF5A3\uF57A\uF5AA\uF577"+
-            "\uF5A1\uF5A6\uF5A8\uF5AB\uF579\u0000\uF5AF\uF5B0"+
-            "\uF5A9\uF5AD\uF5A4\u0000\uF6C1\uF6C4\u0000\uC561"+
-            "\u0000\uF6C3\uF6C8\uF6C6\uC562\uF6BD\uF6B3\uF6B2"+
-            "\uC564\uF6BF\uF6C0\uF6BC\uF6B4\u0000\uF6B9\uF5AC"+
-            "\u0000\uF6B5\uC563\uF6BB\u0000\uF6BA\u0000\uF6B6"+
-            "\uF6C2\u0000\uF6B7\uF7BB\uF6C5\uF6C7\uF6BE\uF6B8"+
-            "\uF7BC\uF7BE\uF7B8\uC5C2\u0000\uF7C5\uF7C3\uC5C3"+
-            "\uF7C2\uF7C1\uF7BA\uF7B7\uF7BD\uF7C6\uF7B9\uF7BF"+
-            "\u0000\uF869\uF86E\uF864\uF867\uC5EE\uF86B\u0000"+
-            "\uF872\uF7C0\u0000\uF865\uF86F\uF873\uF86A\uF863"+
-            "\uF86D\u0000\uF86C\uF871\uF870\uF7C4\uF868\uF862"+
-            "\uF866\uC64E\uC64F\uF861\u0000\uF8E6\uF8DD\uF8E5"+
-            "\uF8E2\uF8E3\uF8DC\uF8DF\uF8E7\uF8E1\uF8E0\uF8DE"+
-            "\u0000\uF8E4\u0000\uF95D\u0000\uF95E\u0000\uF960"+
-            "\uF95F\uF962\uF961\uF97C\uF97B\uF9B7\u0000\uF9B8"+
-            "\u0000\uF9C5\uC678\uC67C\u0000\uF9CF\uC67D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uB3BF\u0000\u0000"+
-            "\u0000\uC4D0\uF6C9\u0000\uC650\uC651\u0000\uB3C0"+
-            "\uE0EE\u0000\uB9A8\uE8F0\u0000\u0000\uECB0\uECB1"+
-            "\uECAF\uEFAB\uEFAA\uC247\uF1DF\uEFAC\uF1DE\u0000"+
-            "\u0000\uF3F3\uC451\uC453\uF3F2\u0000\u0000\uC452"+
-            "\u0000\uF5B1\uF5B3\uF5B2\uF6CA\uC565\u0000\uC5EF"+
-            "\uF8E8\uF963\u0000\u0000\uF9D2\uB3C1\u0000\uE4E5"+
-            "\u0000\uBEA2\u0000\u0000\u0000\uECB3\uECB2\u0000"+
-            "\uEFAD\u0000\u0000\u0000\uC454\uC4D1\uF7C7\uF9CB"+
-            "\u0000\u0000\u0000\uB3C2\uBBF2\u0000\uBEA3\u0000"+
-            "\uF3F4\u0000\uF874\uB6C0\u0000\u0000\u0000\u0000"+
-            "\uEFAE\u0000\u0000\u0000\uC664\uB6C1\uBEA4\uC248"+
-            "\uF875\uB6C2\u0000\uE8F1\uC072\uECB4\uECB5\u0000"+
-            "\uC071\u0000\uEFAF\uC24C\uC24A\uC24B\uC249\uF1E0"+
-            "\uC35C\u0000\u0000\u0000\uF5B5\uF5B4\uF5B7\uF5B6"+
-            "\uC4D2\u0000\u0000\uF6CB\u0000\uF6CD\uF6CC\uC566"+
-            "\uF7C8\u0000\uF876\uF877\uC5F0\uF964\uF97D\uC675"+
-            "\u0000\uDCB0\uECB6\uEFB0\uF3F5\uE0EF\u0000\uEFB1";
-
-        private final static String innerIndex6=
-            "\uF1E2\uF1E1\u0000\u0000\u0000\u0000\uF878\uC652"+
-            "\u0000\uF965\uF97E\u0000\u0000\u0000\uB9A9\uE8F2"+
-            "\uE8F3\u0000\uECB7\uB9AA\u0000\uC35D\uF1E3\u0000"+
-            "\uF6CF\uC567\uF6D0\uF6CE\uF879\u0000\uF8E9\u0000"+
-            "\uB9AB\u0000\uEFB4\uEFB3\uEFB2\uF1E4\u0000\u0000"+
-            "\uF1E8\uF1E7\uF1E6\uF1E5\uC35E\uF3F6\uF5B9\uC4D3"+
-            "\uF5B8\uF6D1\uF7CB\uF7CA\uC5C4\uF7C9\uF87C\uF87B"+
-            "\uF87A\u0000\u0000\uBBF3\u0000\uECB8\uC24D\u0000"+
-            "\uF3F7\uF3F8\uF7CC\uF87D\u0000\u0000\uF8EA\uF966"+
-            "\uF9B9\uF9D4\uBBF4\uC24E\uF1E9\uF3F9\uF6D2\uF87E"+
-            "\u0000\u0000\uBEA6\u0000\uEFB5\uF1EA\uF3FA\uF3FB"+
-            "\uF3FC\uF5BE\u0000\uF5BA\uC568\uF5BD\uF5BC\uC4D4"+
-            "\uF5BB\uC4D6\u0000\uC4D5\uF6D4\uF6D3\uC569\uC56A"+
-            "\u0000\u0000\uC5C6\uF7CD\uC5C5\u0000\uF8A3\uF8A4"+
-            "\uF8A2\uF8A1\uC654\u0000\uF8EB\uF8EC\uF8ED\uC653"+
-            "\uF967\uF96A\uF969\uF968\u0000\u0000\uF9D3\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC073\u0000\u0000"+
-            "\uC365\uF5BF\uF6D5\u0000\uC5C7\uF7CE\u0000\u0000"+
-            "\uF9D5\u0000\u0000\u0000\uC074\u0000\u0000\u0000"+
-            "\uEFB6\u0000\uF7CF\u0000\uF9A1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC94A\uDDFC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA14A\uA157\u0000\uA159\uA15B\uA15F\uA160\uA163"+
-            "\uA164\uA167\uA168\uA16B\uA16C\uA16F\uA170\uA173"+
-            "\uA174\uA177\uA178\uA17B\uA17C\u0000\u0000\u0000"+
-            "\u0000\uA1C6\uA1C7\uA1CA\uA1CB\uA1C8\uA1C9\uA15C"+
-            "\uA14D\u0000\uA14F\u0000\uA151\uA152\uA153\uA154"+
-            "\u0000\uA17D\uA17E\uA1A1\uA1A2\uA1A3\uA1A4\uA1CC"+
-            "\uA1CD\uA1CE\uA1DE\uA1DF\uA1E0\uA1E1\uA1E2\u0000"+
-            "\u0000\uA24C\uA24D\uA24E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA149\u0000\uA1AD\uA243\uA248\uA1AE\u0000"+
-            "\uA15D\uA15E\uA1AF\uA1CF\uA141\uA1D0\uA144\uA241"+
-            "\uA2AF\uA2B0\uA2B1\uA2B2\uA2B3\uA2B4\uA2B5\uA2B6"+
-            "\uA2B7\uA2B8\uA147\uA146\uA1D5\uA1D7\uA1D6\uA148"+
-            "\uA249\uA2CF\uA2D0\uA2D1\uA2D2\uA2D3\uA2D4\uA2D5"+
-            "\uA2D6\uA2D7\uA2D8\uA2D9\uA2DA\uA2DB\uA2DC\uA2DD"+
-            "\uA2DE\uA2DF\uA2E0\uA2E1\uA2E2\uA2E3\uA2E4\uA2E5"+
-            "\uA2E6\uA2E7\uA2E8\u0000\uA242\u0000\u0000\uA1C4"+
-            "\u0000\uA2E9\uA2EA\uA2EB\uA2EC\uA2ED\uA2EE\uA2EF"+
-            "\uA2F0\uA2F1\uA2F2\uA2F3\uA2F4\uA2F5\uA2F6\uA2F7"+
-            "\uA2F8\uA2F9\uA2FA\uA2FB\uA2FC\uA2FD\uA2FE\uA340"+
-            "\uA341\uA342\uA343\uA161\uA155\uA162\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA14E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            1, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            5, 6, 7, 0, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 98, 99
-        };
-
-        static String index2[] = {
-            innerIndex0,
-            innerIndex1,
-            innerIndex2,
-            innerIndex3,
-            innerIndex4,
-            innerIndex5,
-            innerIndex6
-        };
-        public Encoder(Charset cs) {
-            super(cs,
-                  index1,
-                  index2);
-        }
-    }
-}
--- a/jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2010 Sun Microsystems, Inc.  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,15 +23,13 @@
  * have any questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 import sun.nio.cs.HistoricallyNamedCharset;
+import static sun.nio.cs.CharsetMapping.*;
 
 public class Big5_HKSCS extends Charset implements HistoricallyNamedCharset
 {
@@ -57,33 +55,35 @@
         return new Encoder(this);
     }
 
-    private static class Decoder extends HKSCS_2001.Decoder {
-
-        Big5.Decoder big5Dec;
+    static class Decoder extends HKSCS.Decoder {
+        private static DoubleByte.Decoder big5 =
+            (DoubleByte.Decoder)new Big5().newDecoder();
 
-        protected char decodeDouble(int byte1, int byte2) {
-            char c = super.decodeDouble(byte1, byte2);
-            return (c != REPLACE_CHAR) ? c : big5Dec.decodeDouble(byte1, byte2);
+        private static char[][] b2cBmp = new char[0x100][];
+        private static char[][] b2cSupp = new char[0x100][];
+        static {
+            initb2c(b2cBmp, HKSCSMapping.b2cBmpStr);
+            initb2c(b2cSupp, HKSCSMapping.b2cSuppStr);
         }
 
         private Decoder(Charset cs) {
-            super(cs);
-            big5Dec = new Big5.Decoder(cs);
+            super(cs, big5, b2cBmp, b2cSupp);
         }
     }
 
-    private static class Encoder extends HKSCS_2001.Encoder {
-
-        private Big5.Encoder big5Enc;
+    static class Encoder extends HKSCS.Encoder {
+        private static DoubleByte.Encoder big5 =
+            (DoubleByte.Encoder)new Big5().newEncoder();
 
-        protected int encodeDouble(char ch) {
-            int r = super.encodeDouble(ch);
-            return (r != 0) ? r : big5Enc.encodeDouble(ch);
+        static char[][] c2bBmp = new char[0x100][];
+        static char[][] c2bSupp = new char[0x100][];
+        static {
+            initc2b(c2bBmp, HKSCSMapping.b2cBmpStr, HKSCSMapping.pua);
+            initc2b(c2bSupp, HKSCSMapping.b2cSuppStr, null);
         }
 
         private Encoder(Charset cs) {
-            super(cs);
-            big5Enc = new Big5.Encoder(cs);
+            super(cs, big5, c2bBmp, c2bSupp);
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS_2001.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs.ext;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import sun.nio.cs.HistoricallyNamedCharset;
+
+public class Big5_HKSCS_2001 extends Charset
+{
+    public Big5_HKSCS_2001() {
+        super("x-Big5-HKSCS-2001", ExtendedCharsets.aliasesFor("x-Big5-HKSCS-2001"));
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs instanceof Big5)
+                || (cs instanceof Big5_HKSCS_2001));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    private static class Decoder extends HKSCS.Decoder {
+        private static DoubleByte.Decoder big5 =
+            (DoubleByte.Decoder)new Big5().newDecoder();
+
+        private static char[][] b2cBmp = new char[0x100][];
+        private static char[][] b2cSupp = new char[0x100][];
+        static {
+            initb2c(b2cBmp, HKSCS2001Mapping.b2cBmpStr);
+            initb2c(b2cSupp, HKSCS2001Mapping.b2cSuppStr);
+        }
+
+        private Decoder(Charset cs) {
+            super(cs, big5, b2cBmp, b2cSupp);
+        }
+    }
+
+    private static class Encoder extends HKSCS.Encoder {
+        private static DoubleByte.Encoder big5 =
+            (DoubleByte.Encoder)new Big5().newEncoder();
+
+        static char[][] c2bBmp = new char[0x100][];
+        static char[][] c2bSupp = new char[0x100][];
+        static {
+            initc2b(c2bBmp, HKSCS2001Mapping.b2cBmpStr,
+                    HKSCS2001Mapping.pua);
+            initc2b(c2bSupp, HKSCS2001Mapping.b2cSuppStr, null);
+        }
+
+        private Encoder(Charset cs) {
+            super(cs, big5, c2bBmp, c2bSupp);
+        }
+    }
+}
--- a/jdk/src/share/classes/sun/nio/cs/ext/Big5_Solaris.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/Big5_Solaris.java	Tue Apr 20 01:24:48 2010 -0700
@@ -23,15 +23,14 @@
  * have any questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 import sun.nio.cs.HistoricallyNamedCharset;
+import java.util.Arrays;
+import static sun.nio.cs.CharsetMapping.*;
 
 public class Big5_Solaris extends Charset implements HistoricallyNamedCharset
 {
@@ -50,90 +49,78 @@
     }
 
     public CharsetDecoder newDecoder() {
-        return new Decoder(this);
+        initb2c();
+        return new  DoubleByte.Decoder(this, b2c, b2cSB, 0x40, 0xfe);
     }
 
     public CharsetEncoder newEncoder() {
-        return new Encoder(this);
+        initc2b();
+        return new DoubleByte.Encoder(this, c2b, c2bIndex);
     }
 
-    private static class Decoder extends Big5.Decoder {
-
-        protected char decodeDouble(int byte1, int byte2) {
-            char c = super.decodeDouble(byte1, byte2);
-
-            // Big5 Solaris implementation has 7 additional mappings
+    static char[][] b2c;
+    static char[] b2cSB;
+    private static volatile boolean b2cInitialized = false;
 
-            if (c == REPLACE_CHAR) {
-                if (byte1 == 0xf9) {
-                    switch (byte2) {
-                        case 0xD6:
-                            c = (char)0x7881;
-                            break;
-                        case 0xD7:
-                            c = (char)0x92B9;
-                            break;
-                        case 0xD8:
-                            c = (char)0x88CF;
-                            break;
-                        case 0xD9:
-                            c = (char)0x58BB;
-                            break;
-                        case 0xDA:
-                            c = (char)0x6052;
-                            break;
-                        case 0xDB:
-                            c = (char)0x7CA7;
-                            break;
-                        case 0xDC:
-                            c = (char)0x5AFA;
-                            break;
-                    }
-                }
+    static void initb2c() {
+        if (b2cInitialized)
+            return;
+        synchronized (Big5_Solaris.class) {
+            if (b2cInitialized)
+                return;
+            Big5.initb2c();
+            b2c = Big5.b2c.clone();
+            // Big5 Solaris implementation has 7 additional mappings
+            int[] sol = new int[] {
+                0xF9D6, 0x7881,
+                0xF9D7, 0x92B9,
+                0xF9D8, 0x88CF,
+                0xF9D9, 0x58BB,
+                0xF9DA, 0x6052,
+                0xF9DB, 0x7CA7,
+                0xF9DC, 0x5AFA };
+            if (b2c[0xf9] == DoubleByte.B2C_UNMAPPABLE) {
+                b2c[0xf9] = new char[0xfe - 0x40 + 1];
+                Arrays.fill(b2c[0xf9], UNMAPPABLE_DECODING);
             }
-            return c;
-        }
 
-        private Decoder(Charset cs) {
-            super(cs);
+            for (int i = 0; i < sol.length;) {
+                b2c[0xf9][sol[i++] & 0xff - 0x40] = (char)sol[i++];
+            }
+            b2cSB = Big5.b2cSB;
+            b2cInitialized = true;
         }
     }
 
-    private static class Encoder extends Big5.Encoder {
-
-        protected int encodeDouble(char ch) {
-            int r = super.encodeDouble(ch);
+    static char[] c2b;
+    static char[] c2bIndex;
+    private static volatile boolean c2bInitialized = false;
 
-            if (r == 0) {
-                switch (ch) {
-                    case 0x7881:
-                        r = 0xF9D6;
-                        break;
-                    case 0x92B9:
-                        r = 0xF9D7;
-                        break;
-                    case 0x88CF:
-                        r = 0xF9D8;
-                        break;
-                    case 0x58BB:
-                        r = 0xF9D9;
-                        break;
-                    case 0x6052:
-                        r = 0xF9DA;
-                        break;
-                    case 0x7CA7:
-                        r = 0xF9DB;
-                        break;
-                    case 0x5AFA:
-                        r = 0xF9DC;
-                        break;
-                    }
-                }
-             return r;
-        }
+    static void initc2b() {
+        if (c2bInitialized)
+            return;
+        synchronized (Big5_Solaris.class) {
+            if (c2bInitialized)
+                return;
+            Big5.initc2b();
+            c2b = Big5.c2b.clone();
+            c2bIndex = Big5.c2bIndex.clone();
+            int[] sol = new int[] {
+                0x7881, 0xF9D6,
+                0x92B9, 0xF9D7,
+                0x88CF, 0xF9D8,
+                0x58BB, 0xF9D9,
+                0x6052, 0xF9DA,
+                0x7CA7, 0xF9DB,
+                0x5AFA, 0xF9DC };
 
-        private Encoder(Charset cs) {
-            super(cs);
+            for (int i = 0; i < sol.length;) {
+                int c = sol[i++];
+                // no need to check c2bIndex[c >>8], we know it points
+                // to the appropriate place.
+                c2b[c2bIndex[c >> 8] + (c & 0xff)] = (char)sol[i++];
+            }
+            c2bInitialized = true;
         }
     }
 }
--- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Tue Apr 20 01:24:48 2010 -0700
@@ -55,10 +55,15 @@
                     "csBig5"
                 });
 
+        charset("x-MS950-HKSCS-XP", "MS950_HKSCS_XP",
+                new String[] {
+                    "MS950_HKSCS_XP"  // JDK historical;
+                });
+
         charset("x-MS950-HKSCS", "MS950_HKSCS",
                 new String[] {
                     // IANA aliases
-                    "MS950_HKSCS"  // JDK historical;
+                    "MS950_HKSCS"     // JDK historical;
                 });
 
         charset("x-windows-950", "MS950",
@@ -86,8 +91,16 @@
                     "Big5_HKSCS", // JDK historical
                     "big5hk",
                     "big5-hkscs",
+                    "big5hkscs"   // Linux alias
+                });
+
+        charset("x-Big5-HKSCS-2001", "Big5_HKSCS_2001",
+                new String[] {
+                    "Big5_HKSCS_2001",
+                    "big5hk-2001",
+                    "big5-hkscs-2001",
                     "big5-hkscs:unicode3.0",
-                    "big5hkscs" // Linux alias
+                    "big5hkscs-2001",
                 });
 
         charset("x-Big5-Solaris", "Big5_Solaris",
--- a/jdk/src/share/classes/sun/nio/cs/ext/HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,6 +1,5 @@
-
 /*
- * Copyright 2002-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2010 Sun Microsystems, Inc.  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
@@ -24,5573 +23,343 @@
  * 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 java.util.Arrays;
+import sun.nio.cs.Surrogate;
+import static sun.nio.cs.CharsetMapping.*;
 
-public abstract class HKSCS
-    extends Charset
-{
+public class HKSCS {
+
+    public static class Decoder extends DoubleByte.Decoder {
+        static int b2Min = 0x40;
+        static int b2Max = 0xfe;
+
+        private char[][] b2cBmp;
+        private char[][] b2cSupp;
+        private static DoubleByte.Decoder big5Dec;
 
-    public HKSCS() {
-        super("HKSCS", ExtendedCharsets.aliasesFor("HKSCS"));
-    }
+        protected Decoder(Charset cs,
+                          DoubleByte.Decoder big5Dec,
+                          char[][] b2cBmp, char[][] b2cSupp)
+        {
+            // super(cs, 0.5f, 1.0f);
+            // need to extends DoubleByte.Decoder so the
+            // sun.io can use it. this implementation
+            super(cs, 0.5f, 1.0f, null, null, 0, 0);
+            this.big5Dec = big5Dec;
+            this.b2cBmp = b2cBmp;
+            this.b2cSupp = b2cSupp;
+        }
 
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
+        public char decodeSingle(int b) {
+            return big5Dec.decodeSingle(b);
+        }
+
+        public char decodeBig5(int b1, int b2) {
+            return big5Dec.decodeDouble(b1, b2);
+        }
+
+        public char decodeDouble(int b1, int b2) {
+            return b2cBmp[b1][b2 - b2Min];
+        }
 
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
+        public char decodeDoubleEx(int b1, int b2) {
+            /* if the b2cSupp is null, the subclass need
+               to override the methold
+            if (b2cSupp == null)
+                return UNMAPPABLE_DECODING;
+             */
+            return b2cSupp[b1][b2 - b2Min];
+        }
 
+        protected CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
+            byte[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+
+            char[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
 
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public static short[] getDecoderIndex1() {
-        return Decoder.index1;
-    }
+            try {
+                while (sp < sl) {
+                    int b1 = sa[sp] & 0xff;
+                    char c = decodeSingle(b1);
+                    int inSize = 1, outSize = 1;
+                    char[] cc = null;
+                    if (c == UNMAPPABLE_DECODING) {
+                        if (sl - sp < 2)
+                            return CoderResult.UNDERFLOW;
+                        int b2 = sa[sp + 1] & 0xff;
+                        inSize++;
+                        if (b2 < b2Min || b2 > b2Max)
+                            return CoderResult.unmappableForLength(2);
+                        c = decodeDouble(b1, b2);           //bmp
+                        if (c == UNMAPPABLE_DECODING) {
+                            c = decodeDoubleEx(b1, b2);     //supp
+                            if (c == UNMAPPABLE_DECODING) {
+                                c = decodeBig5(b1, b2);     //big5
+                                if (c == UNMAPPABLE_DECODING)
+                                    return CoderResult.unmappableForLength(2);
+                            } else {
+                                // supplementary character in u+2xxxx area
+                                outSize = 2;
+                            }
+                        }
+                    }
+                    if (dl - dp < outSize)
+                        return CoderResult.OVERFLOW;
+                    if (outSize == 2) {
+                        // supplementary characters
+                        da[dp++] = Surrogate.high(0x20000 + c);
+                        da[dp++] = Surrogate.low(0x20000 + c);
+                    } else {
+                        da[dp++] = c;
+                    }
+                    sp += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
 
-    public static String[] getDecoderIndex2() {
-        return Decoder.index2;
-
-    }
+        protected CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    char[] cc = null;
+                    int b1 = src.get() & 0xff;
+                    int inSize = 1, outSize = 1;
+                    char c = decodeSingle(b1);
+                    if (c == UNMAPPABLE_DECODING) {
+                        if (src.remaining() < 1)
+                            return CoderResult.UNDERFLOW;
+                        int b2 = src.get() & 0xff;
+                        inSize++;
+                        if (b2 < b2Min || b2 > b2Max)
+                            return CoderResult.unmappableForLength(2);
+                        c = decodeDouble(b1, b2);           //bmp
+                        if (c == UNMAPPABLE_DECODING) {
+                            c = decodeDoubleEx(b1, b2);     //supp
+                            if (c == UNMAPPABLE_DECODING) {
+                                c = decodeBig5(b1, b2);     //big5
+                                if (c == UNMAPPABLE_DECODING)
+                                    return CoderResult.unmappableForLength(2);
+                            } else {
+                                outSize = 2;
+                            }
+                        }
+                    }
+                    if (dst.remaining() < outSize)
+                        return CoderResult.OVERFLOW;
+                    if (outSize == 2) {
+                        dst.put(Surrogate.high(0x20000 + c));
+                        dst.put(Surrogate.low(0x20000 + c));
+                    } else {
+                        dst.put(c);
+                    }
+                    mark += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
 
-    public static short[] getEncoderIndex1() {
-        return Encoder.index1;
+        public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return decodeArrayLoop(src, dst);
+            else
+                return decodeBufferLoop(src, dst);
+        }
 
-    }
-    public static String[] getEncoderIndex2() {
-        return Encoder.index2;
+        static void initb2c(char[][]b2c, String[] b2cStr)
+        {
+            for (int i = 0; i < b2cStr.length; i++) {
+                if (b2cStr[i] == null)
+                    b2c[i] = DoubleByte.B2C_UNMAPPABLE;
+                else
+                    b2c[i] = b2cStr[i].toCharArray();
+            }
+        }
 
     }
 
-    protected static class Decoder extends DoubleByteDecoder {
+    public static class Encoder extends DoubleByte.Encoder {
+        private DoubleByte.Encoder big5Enc;
+        private char[][] c2bBmp;
+        private char[][] c2bSupp;
 
-        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\uF303"+
-        "\uF304\uF305\uF306\uF307\uF308\uF309\uF30A\uF30B"+
-        "\uF30C\uF30D\uF30E\uF30F\uF310\uF311\uF312\uF313"+
-        "\uF314\uF315\uF316\uF317\uF318\u0100\u00C1\u01CD"+
-        "\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1"+
-        "\u00D2\uF325\u1EBE\uF327\u1EC0\u00CA\u0101\u00E1"+
-        "\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B"+
-        "\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B"+
-        "\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u01DC\u00FC\uF344\u1EBF\uF346\u1EC1\u00EA\u0261"+
-        "\uF34A\uF34B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF3A0\uF3A1"+
-        "\uFFFD\u650A\uFFFD\uFFFD\u4E3D\u6EDD\u9D4E\u91DF"+
-        "\uFFFD\uFFFD\uF3AC\u6491\u4F1A\u4F28\u4FA8\u5156"+
-        "\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1"+
-        "\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66"+
-        "\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804"+
-        "\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7"+
-        "\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6"+
-        "\u8BBE\u8BE2\u8F66\u8F67\u8F6E\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7411"+
-        "\u7CFC\u7DCD\u6946\u7AC9\u5227\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u918C\u78B8\u915E\u80BC\uFFFD\u8D0B\u80F6"+
-        "\uF3F0\uFFFD\uFFFD\u809F\u9EC7\u4CCD\u9DC9\u9E0C"+
-        "\u4C3E\uF3F9\uF3FA\u9E0A\uF3FC\u35C1\uFFFD\u6E9A"+
-        "\u823E\u7519\uFFFD\u4911\u9A6C\u9A8F\u9F99\u7987"+
-        "\uF408\uF409\uF40A\uF40B\u4E24\u4E81\u4E80\u4E87"+
-        "\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088"+
-        "\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205"+
-        "\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0"+
-        "\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3"+
-        "\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598"+
-        "\u553F\u35A5\u35BF\u55D7\u35C5\uF43D\u5525\uFFFD"+
-        "\uF440\uF441\uF442\u5590\uF444\u39EC\uF446\u8E46"+
-        "\uF448\uF449\u4053\uF44B\u777A\uF44D\u3A34\u47D5"+
-        "\uF450\uF451\uF452\u64DD\uF454\uF455\uF456\uF457"+
-        "\u648D\u8E7E\uF45A\uF45B\uF45C\uF45D\uF45E\uF45F"+
-        "\uFFFD\uF461\uF462\uF463\u47F4\uF465\uF466\u9AB2"+
-        "\u3A67\uF469\u3FED\u3506\uF46C\uF46D\uF46E\uF46F"+
-        "\u9D6E\u9815\uFFFD\u43D9\uF474\u64B4\u54E3\uF477"+
-        "\uF478\uF479\u39FB\uF47B\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF47C\uF47D"+
-        "\uF47E\u64EA\uF480\uF481\u8E68\uF483\uF484\uF485"+
-        "\uFFFD\u480B\uF488\u3FFA\u5873\uF48B\uFFFD\uF48D"+
-        "\uF48E\uF48F\uF490\uF491\u5579\u40BB\u43BA\uFFFD"+
-        "\u4AB4\uF497\uF498\u81AA\u98F5\uF49B\u6379\u39FE"+
-        "\uF49E\u8DC0\u56A1\u647C\u3E43\uFFFD\uF4A4\uF4A5"+
-        "\uF4A6\uF4A7\uFFFD\uF4A9\uF4AA\u3992\u3A06\uF4AD"+
-        "\u3578\uF4AF\uF4B0\u5652\uF4B2\uF4B3\uF4B4\u34BC"+
-        "\u6C3D\uF4B7\uFFFD\uFFFD\uF4BA\uF4BB\uF4BC\uF4BD"+
-        "\uF4BE\uF4BF\uF4C0\uF4C1\u7F93\uF4C3\uF4C4\uF4C5"+
-        "\u35FB\uF4C7\uF4C8\uF4C9\uF4CA\u3F93\uF4CC\uF4CD"+
-        "\uF4CE\uF4CF\uFFFD\uF4D1\uF4D2\uF4D3\uF4D4\uF4D5"+
-        "\u3FF9\uF4D7\u6432\uF4D9\uF4DA\uF4DB\uF4DC\uF4DD"+
-        "\uF4DE\uF4DF\uF4E0\u3A18\uF4E2\uF4E3\uF4E4\uF4E5"+
-        "\uF4E6\uF4E7\uF4E8\uF4E9\u95AA\u54CC\u82C4\u55B9"+
-        "\uFFFD\uF4EF\u9C26\u9AB6\uF4F2\uF4F3\u7140\u816D"+
-        "\u80EC\u5C1C\uF4F8\u8134\u3797\u535F\uF4FC\u91B6"+
-        "\uF4FE\uF4FF\uF500\uF501\u35DD\uF503\u3609\uF505"+
-        "\u56AF\uF507\uF508\uF509\uF50A\uF50B\uF50C\uF50D"+
-        "\uF50E\uF50F\uF510\uF511\u5A54\uF513\uF514\uF515"+
-        "\uF516\u579C\uF518\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF519\uF51A\uF51B"+
-        "\uF51C\uF51D\u3703\uF51F\uF520\uF521\uF522\uF523"+
-        "\uF524\uF525\uF526\u5899\u5268\u361A\uF52A\u7BB2"+
-        "\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uF533"+
-        "\uF534\u55FB\u35F2\u5689\u4E28\u5902\uF53A\uF53B"+
-        "\u9751\uF53D\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4"+
-        "\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B"+
-        "\u4E2C\u72AD\uF54E\u7F52\u793B\u7CF9\u7F53\uF553"+
-        "\u34C1\uFFFD\uF556\u8002\u8080\uF559\uF55A\u535D"+
-        "\u8864\u89C1\uF55E\u8BA0\u8D1D\u9485\u9578\u957F"+
-        "\u95E8\uF565\u97E6\u9875\u98CE\u98DE\u9963\uF56B"+
-        "\u9C7C\u9E1F\u9EC4\u6B6F\u9F9C\u4E37\uF572\u961D"+
-        "\u6237\u94A2\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u5D3E\u5D48\u5D56\u3DFC\u380F"+
-        "\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83"+
-        "\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989"+
-        "\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318"+
-        "\u39F8\u56B1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u3A03\u63E2\u63FB\u6407"+
-        "\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586"+
-        "\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42"+
-        "\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B"+
-        "\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6"+
-        "\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2"+
-        "\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75"+
-        "\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4"+
-        "\u6DB1\u6E15\u6E18\u6E29\u6E86\uF694\u6EBB\u6EE2"+
-        "\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uF69E"+
-        "\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C"+
-        "\u3D91\u7050\u7054\u706F\u707F\u7089\uF6AD\u43C1"+
-        "\u35F1\uF6B0\uE311\u57BE\uE313\u713E\uE315\u364E"+
-        "\u69A2\uE318\u5B74\u7A49\uE31B\uE31C\u7A65\u7A7D"+
-        "\uE31F\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uE325\u41CA"+
-        "\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uE32C\u7B0B\u7B55"+
-        "\u7B29\uE330\uE331\u7BA2\u7B6F\u839C\uE335\uE336"+
-        "\u7BD0\u8421\u7B92\uFFFD\uE33B\u3DAD\uE33D\u8492"+
-        "\u7BFA\uFFFD\u7C35\uE342\u7C44\u7C83\uE345\u7CA6"+
-        "\u667D\uE348\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u7E67\u451D\uE352\u7D5D\uE354"+
-        "\u748D\u7D89\u7DAB\u7135\u7DB3\uFFFD\uE35B\uE35C"+
-        "\u7DE4\u3D13\u7DF5\uE360\u7DE5\uE362\uFFFD\uE364"+
-        "\uE365\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41"+
-        "\u7F47\u7936\uE36F\u99E1\u7F97\uE372\u7FA3\uE374"+
-        "\uE375\u455C\uE377\u4503\uE379\u7FFA\uE37B\uFFFD"+
-        "\u8008\u801D\uFFFD\u802F\uE381\uE382\u803B\u803C"+
-        "\u8061\uE386\u4989\uE388\uE389\uE38A\u6725\u80A7"+
-        "\uE38D\u8107\u811A\u58B0\uE391\u6C7F\uE393\uE394"+
-        "\u64E7\uE396\u8218\uE398\u6A53\uE39A\uE39B\u447A"+
-        "\u8229\uE39E\uE39F\uE3A0\u4FF9\uE3A2\u84E2\u8362"+
-        "\uE3A5\uE3A6\uE3A7\uE3A8\uE3A9\u82AA\u691B\uE3AC"+
-        "\u41DB\u854B\u82D0\u831A\uE3B1\uE3B2\u36C1\uE3B4"+
-        "\uE3B5\u827B\u82E2\u8318\uE3B9\uE3BA\uE3BB\uE3BC"+
-        "\uE3BD\u3DBF\u831D\u55EC\u8385\u450B\uE3C3\u83AC"+
-        "\uFFFD\u83D3\u347E\uE3C8\u6A57\u855A\u3496\uE3CC"+
-        "\uE3CD\u8458\uE3CF\u8471\u3DD3\u44E4\u6AA7\u844A"+
-        "\uE3D5\u7958\uFFFD\uE3D8\uE3D9\uE3DA\u84DE\uFFFD"+
-        "\u8391\u44A0\u8493\u84E4\uE3E1\u4240\uE3E3\u4543"+
-        "\u8534\u5AF2\uE3E7\u4527\u8573\u4516\u67BF\u8616"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uE3ED\uE3EE\u85C1\uE3F0\u8602\uE3F2"+
-        "\uE3F3\uE3F4\u456A\u8628\u3648\uE3F8\u53F7\uE3FA"+
-        "\u867E\u8771\uE3FD\u87EE\uE3FF\u87B1\u87DA\u880F"+
-        "\u5661\u866C\u6856\u460F\u8845\u8846\uE409\uE40A"+
-        "\uE40B\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5"+
-        "\u7777\uE414\u8987\u898A\uFFFD\uFFFD\u89A7\u89BC"+
-        "\uE41B\u89E7\uE41D\uE41E\u8A9C\u7793\u91FE\u8A90"+
-        "\uE423\u7AE9\uE425\uE426\u4713\uE428\u717C\u8B0C"+
-        "\u8B1F\uE42C\uE42D\u8B3F\u8B4C\u8B4D\u8AA9\uE432"+
-        "\u8B90\u8B9B\u8AAF\uE436\u4615\u884F\u8C9B\uE43A"+
-        "\uE43B\uE43C\u3725\uE43E\u8CD6\uE440\uE441\u8D12"+
-        "\u8D03\uE444\u8CDB\u705C\u8D11\uE448\u3ED0\uFFFD"+
-        "\u8DA9\uE44C\uE44D\uE44E\u3B7C\uE450\uE451\u7AE7"+
-        "\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uE459\uE45A"+
-        "\u8FA5\u9303\uE45D\uE45E\u8FB3\u492A\uE461\uE462"+
-        "\uE463\u5EF8\uE465\u8FF9\uE467\uE468\uE469\uE46A"+
-        "\u3980\uE46C\u9037\uE46E\uE46F\u9061\uE471\uE472"+
-        "\u90A8\uE474\u90C4\uE476\u90AE\uFFFD\u9167\u3AF0"+
-        "\u91A9\u91C4\u7CAC\uE47E\uE47F\u920E\u6C9F\u9241"+
-        "\u9262\uE484\uFFFD\uE486\uE487\uE488\uE489\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uE48A\u932C\u936B\uE48D\uE48E\u708F\u5AC3"+
-        "\uE491\uE492\u4965\u9244\uE495\uE496\uE497\u9373"+
-        "\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9"+
-        "\uE4A1\uE4A2\uE4A3\uE4A4\u49DF\u6C1C\u967B\u9696"+
-        "\u416C\u96A3\uE4AB\u61DA\u96B6\u78F5\uE4AF\u96BD"+
-        "\u53CC\u49A1\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7\uE4B8"+
-        "\uE4B9\uE4BA\u9731\u8642\u9736\u4A0F\u453D\u4585"+
-        "\uE4C1\u7075\u5B41\u971B\uFFFD\uE4C6\u9757\u5B4A"+
-        "\uE4C9\u975F\u9425\u50D0\uE4CD\uE4CE\u9789\u979F"+
-        "\u97B1\u97BE\u97C0\u97D2\u97E0\uE4D6\u97EE\u741C"+
-        "\uE4D9\uFFFD\u97F5\uE4DC\uE4DD\u4AD1\u9834\u9833"+
-        "\u984B\u9866\u3B0E\uE4E4\u3D51\uE4E6\uE4E7\uE4E8"+
-        "\u98CA\u98B7\u98C8\u98C7\u4AFF\uE4EE\uE4EF\u55B0"+
-        "\u98E1\u98E6\u98EC\u9378\u9939\uE4F6\u4B72\uE4F8"+
-        "\uE4F9\u99F5\u9A0C\u9A3B\u9A10\u9A58\uE4FF\u36C4"+
-        "\uE501\uE502\u9AE0\u9AE2\uE505\u9AF4\u4C0E\u9B14"+
-        "\u9B2D\uE50A\u5034\u9B34\uE50D\u38C3\uE50F\u9B50"+
-        "\u9B40\uE512\u5A45\uE514\u9B8E\uE516\u9C02\u9BFF"+
-        "\u9C0C\uE51A\u9DD4\uE51C\uE51D\uE51E\uE51F\uE520"+
-        "\uE521\u9D7E\u9D83\uE524\u9E0E\u6888\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u9DC4\uE528\uE529\uE52A\uE52B\uE52C\u9D39\uE52E"+
-        "\uE52F\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF"+
-        "\uE537\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uE53E"+
-        "\u9F02\u9F08\u4B96\u9424\uE543\u9F17\uFFFD\u9F39"+
-        "\u569F\u568A\u9F45\u99B8\uE54B\u97F2\u847F\u9F62"+
-        "\u9F69\u7ADC\u9F8E\u7216\u4BBE\uE554\uE555\u7177"+
-        "\uE557\uE558\uE559\u739E\uE55B\uE55C\u799F\uE55E"+
-        "\uE55F\u9369\u93F3\uE562\u92EC\u9381\u93CB\uE566"+
-        "\uE567\u7217\u3EEB\u7772\u7A43\u70D0\uE56D\uE56E"+
-        "\u717E\uE570\u70A3\uE572\uE573\u3EC7\uE575\uE576"+
-        "\uE577\u3722\uE579\uE57A\u36E1\uE57C\uE57D\uE57E"+
-        "\u3723\uE580\u575B\uE582\uE583\uE584\uE585\uE586"+
-        "\u8503\uE588\uFFFD\u8455\uE58B\uE58C\uE58D\uE58E"+
-        "\uE58F\uE590\u44F4\uE592\uE593\uE594\u67F9\u3733"+
-        "\u3C15\u3DE7\u586C\uE59A\u6810\u4057\uE59D\uE59E"+
-        "\uE59F\uE5A0\uE5A1\u54CB\u569E\uE5A4\u5692\uE5A6"+
-        "\uE5A7\uE5A8\u93C6\uE5AA\u939C\u4EF8\u512B\u3819"+
-        "\uE5AF\u4EBC\uE5B1\uE5B2\u4F4B\u4F8A\uE5B5\u5A68"+
-        "\uE5B7\uE5B8\u3999\uE5BA\uE5BB\u3435\u4F29\uE5BE"+
-        "\uE5BF\uE5C0\u8ADA\uE5C2\u4E98\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u50CD"+
-        "\u510D\u4FA2\u4F03\uE5C8\uE5C9\u4F42\u502E\u506C"+
-        "\u5081\u4FCC\u4FE5\u5058\u50FC\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u6E76\uE5D7\uE5D8\uE5D9\u6D72\uE5DB\uE5DC"+
-        "\u51A8\u51C3\uE5DF\u44DD\uE5E1\uE5E2\uE5E3\u8D7A"+
-        "\uE5E5\uE5E6\u5259\u52A4\uE5E9\u52E1\uFFFD\u467A"+
-        "\u718C\uE5EE\uE5EF\uE5F0\uE5F1\u69D1\uE5F3\uFFFD"+
-        "\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uE5FB\uE5FC"+
-        "\u53D0\u3584\u720F\uE600\u55B4\uE602\u54CD\uE604"+
-        "\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E"+
-        "\u58CB\u5A99\uE60F\uE610\uE611\uE612\u5A2C\u59B8"+
-        "\u928F\u5A7E\u5ACF\u5A12\uE619\uE61A\uE61B\uE61C"+
-        "\u36F5\u6D05\u7443\u5A21\uE621\u5A81\uE623\uE624"+
-        "\u93E0\u748C\uE627\u7105\u4972\u9408\uE62B\u93BD"+
-        "\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uE632\uE633\uE634"+
-        "\u5ECD\u5B4F\uE637\uE638\u3701\uE63A\u36DD\uE63C"+
-        "\u36D3\u812A\uE63F\uE640\uE641\uE642\u5F0C\u5F0E"+
-        "\uE645\uE646\u5A6B\uE648\u5B44\u8614\uE64B\u8860"+
-        "\u607E\uE64E\uE64F\u5FDB\u3EB8\uE652\uE653\uE654"+
-        "\uE655\u61C0\uE657\uE658\uE659\u6199\u6198\u6075"+
-        "\uE65D\uE65E\uE65F\uE660\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6471\uE662"+
-        "\uE663\u3A29\uE665\uE666\uE667\uE668\u6337\uE66A"+
-        "\u64B6\u6331\u63D1\uE66E\uE66F\u62A4\uE671\u643B"+
-        "\u656B\u6972\u3BF4\uE676\uE677\uE678\uE679\u550D"+
-        "\uE67B\uE67C\uE67D\u66CE\uE67F\uE680\u3AE0\u4190"+
-        "\uE683\uE684\uE685\uE686\uE687\uE688\u78EE\uE68A"+
-        "\uE68B\uE68C\u3464\uE68E\uE68F\uE690\u668E\uE692"+
-        "\u666B\u4B93\u6630\uE696\uE697\u6663\uE699\uE69A"+
-        "\u661E\uE69C\u38D1\uE69E\uE69F\u3B99\uE6A1\uE6A2"+
-        "\u74D0\u3B96\u678F\uE6A6\u68B6\u681E\u3BC4\u6ABE"+
-        "\u3863\uE6AC\uE6AD\u6A33\u6A52\u6AC9\u6B05\uE6B2"+
-        "\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uE6B9\uE6BA"+
-        "\u93A0\u92F2\uE6BD\uE6BE\u9289\uE6C0\uE6C1\u9467"+
-        "\u6DA5\u6F0B\uE6C5\uFFFD\uE6C7\u3D8F\u6E04\uE6CA"+
-        "\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uE6D1\uE6D2"+
-        "\u70F1\u7250\u7287\u7294\uE6D7\uE6D8\u5179\uE6DA"+
-        "\uE6DB\u747A\uE6DD\uE6DE\uE6DF\uE6E0\uE6E1\u3F06"+
-        "\u3EB1\uE6E4\uE6E5\uE6E6\u60A7\u3EF3\u74CC\u743C"+
-        "\u9387\u7437\u449F\uE6EE\u4551\u7583\u3F63\uE6F2"+
-        "\uE6F3\u3F58\u7555\u7673\uE6F7\u3B19\u7468\uE6FA"+
-        "\uE6FB\uE6FC\u3AFB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3DCD\uE6FF\u3EFF"+
-        "\uE701\uE702\u91FA\u5732\u9342\uE706\uE707\u50DF"+
-        "\uE709\uE70A\u7778\uE70C\u770E\u770F\u777B\uE710"+
-        "\uE711\u3A5E\uE713\u7438\u749B\u3EBF\uE717\uE718"+
-        "\u40C8\uE71A\uE71B\u9307\uE71D\u781E\u788D\u7888"+
-        "\u78D2\u73D0\u7959\uE724\uE725\u410E\uFFFD\u8496"+
-        "\u79A5\u6A2D\uE72B\u7A3A\u79F4\u416E\uE72F\u4132"+
-        "\u9235\u79F1\uE733\uE734\uE735\uE736\uE737\u3597"+
-        "\u556B\u3570\u36AA\uE73C\uE73D\u7AE2\u5A59\uE740"+
-        "\uE741\uE742\u5A0D\uE744\u78F0\u5A2A\uE747\u7AFE"+
-        "\u41F9\u7C5D\u7C6D\u4211\uE74D\uE74E\uE74F\u7CCD"+
-        "\uE751\uE752\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07"+
-        "\u7DD3\u7F4E\uE75B\uE75C\uE75D\u7D97\uE75F\u426A"+
-        "\uE761\uE762\u67D6\uE764\uE765\u57C4\uE767\uE768"+
-        "\uE769\u7FDD\u7B27\uE76C\uE76D\uE76E\u7B0C\uE770"+
-        "\u99E6\u8645\u9A63\u6A1C\uE775\u39E2\uE777\uE778"+
-        "\u9A1F\uE77A\u8480\uE77C\uE77D\u44EA\u8137\u4402"+
-        "\u80C6\u8109\u8142\uE784\u98C3\uE786\u8262\u8265"+
-        "\uE789\u8453\uE78B\u8610\uE78D\u5A86\u417F\uE790"+
-        "\u5B2B\uE792\u5AE4\uE794\u86A0\uE796\uE797\u882D"+
-        "\uE799\u5A02\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u886E\u4F45\u8887\u88BF"+
-        "\u88E6\u8965\u894D\uE7A2\u8954\uE7A4\uE7A5\uE7A6"+
-        "\uE7A7\uE7A8\uE7A9\u3EAD\u84A3\u46F5\u46CF\u37F2"+
-        "\u8A3D\u8A1C\uE7B1\u5F4D\u922B\uE7B4\u65D4\u7129"+
-        "\u70C4\uE7B8\u9D6D\u8C9F\u8CE9\uE7BC\u599A\u77C3"+
-        "\u59F0\u436E\u36D4\u8E2A\u8EA7\uE7C4\u8F30\u8F4A"+
-        "\u42F4\u6C58\u6FBB\uE7CA\u489B\u6F79\u6E8B\uE7CE"+
-        "\u9BE9\u36B5\uE7D1\u90BB\uFFFD\u5571\u4906\u91BB"+
-        "\u9404\uE7D8\u4062\uE7DA\u9427\uE7DC\uE7DD\u84E5"+
-        "\u8A2B\u9599\u95A7\u9597\u9596\uE7E4\u7445\u3EC2"+
-        "\uE7E7\uE7E8\uE7E9\u3EE7\uE7EB\u968F\uE7ED\uE7EE"+
-        "\uE7EF\u3ECC\uE7F1\uE7F2\uE7F3\u7412\u746B\u3EFC"+
-        "\u9741\uE7F8\u6847\u4A1D\uE7FB\uE7FC\uFFFD\u9368"+
-        "\uE7FF\uE800\uE801\uE802\u92BA\u5B11\u8B69\u493C"+
-        "\u73F9\uE808\u979B\u9771\u9938\uE80C\u5DC1\uE80E"+
-        "\uE80F\u981F\uE811\u92F6\uE813\u91E5\u44C0\uE816"+
-        "\uE817\uE818\u98DC\uE81A\u3F00\u922A\u4925\u8414"+
-        "\u993B\u994D\uE821\u3DFD\u999B\u4B6F\u99AA\u9A5C"+
-        "\uE827\uE828\u6A8F\u9A21\u5AFE\u9A2F\uE82D\u4B90"+
-        "\uE82F\u99BC\u4BBD\u4B97\u937D\u5872\uE835\u5822"+
-        "\uE837\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uE838\u7844\uE83A\uE83B\u68C5"+
-        "\u3D7D\u9458\u3927\u6150\uE841\uE842\u6107\u9C4F"+
-        "\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uE84B\u9B9F"+
-        "\uE84D\uE84E\u9D21\u4CAE\uE851\u9E18\u4CB0\u9D0C"+
-        "\uE855\uE856\uE857\uE858\u9DA5\u84BD\uE85B\uE85C"+
-        "\uE85D\u85FC\u4533\uE860\uE861\uE862\u8420\u85EE"+
-        "\uE865\uE866\uE867\u79E2\uE869\uE86A\u492D\uE86C"+
-        "\u3D62\u93DB\u92BE\u9348\uE871\u78B9\u9277\u944D"+
-        "\u4FE4\u3440\u9064\uE878\u783D\u7854\u78B6\u784B"+
-        "\uE87D\uE87E\uE87F\u369A\u4F72\u6FDA\u6FD9\uFFFD"+
-        "\u701E\u5414\uE887\u57BB\u58F3\u578A\u9D16\u57D7"+
-        "\u7134\u34AF\uE88F\u71EB\uE891\uE892\uFFFD\uE894"+
-        "\uE895\u610C\u5ACE\u5A0B\u42BC\uE89A\u372C\u4B7B"+
-        "\uE89D\u93BB\u93B8\uE8A0\uE8A1\u8472\uE8A3\uE8A4"+
-        "\uE8A5\uE8A6\uE8A7\u5994\uE8A9\uE8AA\u7DA8\uE8AC"+
-        "\uE8AD\uE8AE\uE8AF\uE8B0\u92E5\u73E2\u3EE9\u74B4"+
-        "\uE8B5\uE8B6\u3EE1\uE8B8\u6AD8\u73F3\u73FB\u3ED6"+
-        "\uE8BD\uE8BE\uE8BF\uE8C0\uE8C1\uE8C2\uE8C3\u7448"+
-        "\uE8C5\u70A5\uE8C7\u9284\u73E6\u935F\uE8CB\u9331"+
-        "\uE8CD\uE8CE\u9386\uE8D0\uE8D1\u4935\uE8D3\u716B"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uE8D5\uE8D6\u56A4\uE8D8\uE8D9\uE8DA"+
-        "\u5502\u79C4\uE8DD\u7DFE\uE8DF\uE8E0\uE8E1\u452E"+
-        "\u9401\u370A\uE8E5\uE8E6\u59B0\uE8E8\uE8E9\uE8EA"+
-        "\u5AA1\u36E2\uE8ED\u36B0\u925F\u5A79\uE8F1\uE8F2"+
-        "\u9374\u3CCD\uE8F5\u4A96\u398A\u50F4\u3D69\u3D4C"+
-        "\uE8FB\u7175\u42FB\uE8FE\u6E0F\uE900\u44EB\u6D57"+
-        "\uE903\u7067\u6CAF\u3CD6\uE907\uE908\u6E02\u6F0C"+
-        "\u3D6F\uE90C\u7551\u36BC\u34C8\u4680\u3EDA\u4871"+
-        "\u59C4\u926E\u493E\u8F41\uE917\uE918\u5812\u57C8"+
-        "\u36D6\uE91C\u70FE\uE91E\uE91F\uE920\uE921\uE922"+
-        "\u68B9\u6967\uE925\uE926\uE927\uE928\uE929\uE92A"+
-        "\uE92B\uE92C\u6A1A\uE92E\uE92F\u843E\u44DF\u44CE";
+        protected Encoder(Charset cs,
+                          DoubleByte.Encoder big5Enc,
+                          char[][] c2bBmp,
+                          char[][] c2bSupp)
+        {
+            super(cs, null, null);
+            this.big5Enc = big5Enc;
+            this.c2bBmp = c2bBmp;
+            this.c2bSupp = c2bSupp;
+        }
 
-        private final static String innerIndex1=
-        "\uE933\uE934\uE935\uE936\u6F17\uE938\u833D\uE93A"+
-        "\u83ED\uE93C\uE93D\uE93E\u5989\u5A82\uE941\u5A61"+
-        "\u5A71\uE944\uE945\u372D\u59EF\uE948\u36C7\u718E"+
-        "\u9390\u669A\uE94D\u5A6E\u5A2B\uE950\u6A2B\uE952"+
-        "\uE953\uE954\uE955\u711D\uE957\uE958\u4FB0\uE95A"+
-        "\u5CC2\uE95C\uE95D\uE95E\u6A0C\uE960\uE961\u70A6"+
-        "\u7133\uE964\u3DA5\u6CDF\uE967\uE968\u7E65\u59EB"+
-        "\u5D2F\u3DF3\u5F5C\uE96E\uE96F\u7DA4\u8426\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u5485\uE973\uE974\uE975\u577E\uE977\uE978"+
-        "\u3FE5\uE97A\uE97B\u7003\uE97D\u5D70\u738F\u7CD3"+
-        "\uE981\uE982\u4FC8\u7FE7\u72CD\u7310\uE987\u7338"+
-        "\u7339\uE98A\u7341\u7348\u3EA9\uE98E\u906C\u71F5"+
-        "\uE991\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD"+
-        "\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3"+
-        "\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8"+
-        "\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uE9B0"+
-        "\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761"+
-        "\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB"+
-        "\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851"+
-        "\u7866\u8448\uE9CB\u7933\u6803\u7932\u4103\u4109"+
-        "\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2"+
-        "\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62"+
-        "\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C"+
-        "\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uE9EF\u7DCF"+
-        "\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020"+
-        "\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0"+
-        "\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560"+
-        "\u8114\u4401\u3B39\u8156\u8159\u815A\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5"+
-        "\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA"+
-        "\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5"+
-        "\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510"+
-        "\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672"+
-        "\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE"+
-        "\u88FF\u8924\u8947\u8991\uEA43\u8A29\u8A38\u8A94"+
-        "\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3"+
-        "\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0"+
-        "\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1"+
-        "\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E"+
-        "\u9228\u9258\u926B\u92B1\u92AE\u92BF\u92E3\u92EB"+
-        "\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951"+
-        "\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454"+
-        "\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0"+
-        "\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8"+
-        "\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C"+
-        "\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C"+
-        "\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D"+
-        "\u9C20\u376F\uEAA9\u9D49\u9C3A\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9EFE"+
-        "\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B"+
-        "\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8"+
-        "\u7AC8\u9F44\uEABF\uEAC0\uEAC1\u691A\u94C3\u59AC"+
-        "\uEAC5\u5840\u94C1\u37B9\uEAC9\uEACA\uEACB\uEACC"+
-        "\u5757\u7173\uEACF\uEAD0\uEAD1\u546A\uEAD3\uEAD4"+
-        "\u549E\uEAD6\uEAD7\uEAD8\uEAD9\uEADA\u60E7\uEADC"+
-        "\u567A\uEADE\uEADF\uEAE0\uEAE1\uEAE2\uEAE3\u6955"+
-        "\u9C2F\u87A5\uEAE7\uEAE8\uEAE9\uEAEA\uEAEB\uEAEC"+
-        "\u5C20\uEAEE\u5E0B\uEAF0\uEAF1\uEAF2\u671E\uEAF4"+
-        "\uEAF5\uEAF6\u3647\uEAF8\uEAF9\uEAFA\uEAFB\u5364"+
-        "\u84AD\uEAFE\uEAFF\uEB00\u8B81\uEB02\uEB03\uEB04"+
-        "\uEB05\u4E78\u70BB\uEB08\uEB09\uEB0A\uEB0B\uEB0C"+
-        "\uEB0D\uEB0E\uEB0F\u62C3\uEB11\uEB12\u7198\u6855"+
-        "\uEB15\u69E9\u36C8\uEB18\uEB19\uEB1A\uEB1B\uEB1C"+
-        "\uEB1D\u82FD\uEB1F\uEB20\uEB21\u89A5\uEB23\u8FA0"+
-        "\uEB25\u97B8\uEB27\u9847\u9ABD\uEB2A\uFFFD\uEB2C"+
-        "\uEB2D\uEB2E\uEB2F\uEB30\uEB31\uEB32\uEB33\uEB34"+
-        "\uEB35\uEB36\uEB37\uEB38\uEB39\u5FB1\u6648\u66BF"+
-        "\uEB3D\uEB3E\uEB3F\uFFFD\uEB41\uFFFD\uEB43\uEB44"+
-        "\uFFFD\uEB46\u58B5\u670E\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6918\uEB4A"+
-        "\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F\uEB50\u48D0\u4AB8"+
-        "\uEB53\uEB54\uEB55\uEB56\uEB57\uEB58\uEB59\uEB5A"+
-        "\uEB5B\u51D2\uEB5D\u599F\uEB5F\u3BBE\uEB61\uEB62"+
-        "\uEB63\u5788\uEB65\u399B\uEB67\uEB68\uEB69\u3762"+
-        "\uEB6B\u8B5E\uEB6D\uFFFD\uEB6F\uEB70\uEB71\u7209"+
-        "\uEB73\uEB74\u5965\uEB76\uEB77\uEB78\u8EDA\uEB7A"+
-        "\u528F\u573F\u7171\uEB7E\uEB7F\uEB80\uEB81\u55BC"+
-        "\uEB83\uEB84\uEB85\uFFFD\u3473\uEB88\uEB89\uEB8A"+
-        "\u4718\uEB8C\uEB8D\uEB8E\uEB8F\uEB90\u5066\u34FB"+
-        "\uEB93\uFFFD\uEB95\u477C\uEB97\uEB98\uEB99\uEB9A"+
-        "\uEB9B\u57A1\u7151\uFFFD\uEB9F\uEBA0\u9056\uEBA2"+
-        "\uEBA3\u8B62\uEBA5\uEBA6\u5D5B\uEBA8\uFFFD\uEBAA"+
-        "\uEBAB\u8AEA\uEBAD\uEBAE\uEBAF\uEBB0\u4BC0\uEBB2"+
-        "\uEBB3\uEBB4\u9465\uEBB6\u6195\u5A27\uEBB9\uFFFD"+
-        "\u56B9\uEBBC\uEBBD\u4E6A\uEBBF\u9656\u6D8F\uEBC2"+
-        "\u3618\u8977\uEBC5\uEBC6\uEBC7\uEBC8\uFFFD\uEBCA"+
-        "\u7B42\uEBCC\uEBCD\uEBCE\uFFFD\uEBD0\u7A45\uFFFD"+
-        "\uEBD3\u9A26\uEBD5\u365F\uEBD7\uEBD8\u7983\uEBDA"+
-        "\uEBDB\u5D2C\uEBDD\uFFFD\uEBDF\u46D0\uEBE1\u753B"+
-        "\u8865\uEBE4\u58B6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u371C\uEBE7\uEBE8"+
-        "\uEBE9\u3C54\uEBEB\uEBEC\u9281\uEBEE\uEBEF\u9330"+
-        "\uEBF1\uEBF2\u6C39\u949F\uEBF5\uEBF6\u8827\u88F5"+
-        "\uEBF9\uEBFA\uEBFB\u6EB8\uEBFD\uEBFE\u39A4\u36B9"+
-        "\uFFFD\uFFFD\u453F\u66B6\uEC05\uEC06\u8943\uEC08"+
-        "\uEC09\u56D6\u40DF\uEC0C\u39A1\uEC0E\uEC0F\uEC10"+
-        "\u71AD\u8366\uEC13\uEC14\uFFFD\u4CB7\uEC17\uEC18"+
-        "\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\u7B43\u797E\uEC20"+
-        "\u6FB5\uEC22\u6A03\uEC24\u53A2\uEC26\u93BF\u6836"+
-        "\u975D\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E\uEC2F\u5D85"+
-        "\uEC31\uEC32\u5715\u9823\uEC35\u5DAB\uEC37\u65BE"+
-        "\u69D5\u53D2\uEC3B\uEC3C\u3C11\u6736\uEC3F\uEC40"+
-        "\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46\uEC47\uEC48"+
-        "\uEC49\u35CA\uEC4B\uEC4C\u48FA\u63E6\uEC4F\u7808"+
-        "\u9255\uEC52\u43F2\uEC54\u43DF\uEC56\uEC57\uEC58"+
-        "\u59F8\uEC5A\uFFFD\uEC5C\uEC5D\uFFFD\uEC5F\uEC60"+
-        "\u3DF7\uEC62\uEC63\u8FD0\u728F\u568B\uEC67\uEC68"+
-        "\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E\uEC6F\uEC70"+
-        "\uEC71\uEC72\uEC73\u7E9F\uEC75\uEC76\u4CA4\u9547"+
-        "\uEC79\u71A2\uEC7B\u4D91\u9012\uEC7E\u4D9C\uEC80"+
-        "\u8FBE\u55C1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u8FBA\uEC84\u8FB9\uEC86"+
-        "\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uEC8D\uEC8E"+
-        "\u373A\u8E80\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96"+
-        "\u3DEB\uEC98\uEC99\uEC9A\uEC9B\u4E9A\uEC9D\uEC9E"+
-        "\u56BF\uECA0\u8E0E\u5B6D\uECA3\uECA4\u63DE\uFFFD"+
-        "\uECA7\uECA8\u6530\u562D\uECAB\u541A\uECAD\u3DC6"+
-        "\uECAF\u4C7D\u5622\u561E\u7F49\uECB4\u5975\uECB6"+
-        "\u8770\u4E1C\uECB9\uECBA\uECBB\u8117\u9D5E\u8D18"+
-        "\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7"+
-        "\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416"+
-        "\uECCF\u35CE\u5605\u55F1\u66F1\uECD4\u362D\u7534"+
-        "\u55F0\u55BA\u5497\u5572\uECDB\uECDC\u5ED0\uECDE"+
-        "\uECDF\uECE0\uECE1\u9EAB\u7D5A\u55DE\uECE5\u629D"+
-        "\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE"+
-        "\u5569\uECF0\u9C72\uECF2\u519A\u34DF\uECF5\u51A7"+
-        "\u544D\u551E\u5513\u7666\u8E2D\uECFC\u75B1\u80B6"+
-        "\u8804\u8786\u88C7\u81B6\u841C\uED04\u44EC\u7304"+
-        "\uED07\u5B90\u830B\uED0A\u567B\uED0C\uED0D\uED0E"+
-        "\uED0F\uED10\uED11\u9170\uED13\u9208\uED15\uED16"+
-        "\uED17\uED18\u7266\uED1A\u474E\uED1C\uED1D\uED1E"+
-        "\u40FA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u9C5D\u651F\uED22\u48F3\uED24"+
-        "\uED25\uED26\uED27\uFFFD\uED29\uED2A\uFFFD\uED2C"+
-        "\uED2D\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D"+
-        "\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uED3B\u589A"+
-        "\uED3D\u822D\u544B\u57AA\uED41\uED42\uFFFD\u3A52"+
-        "\uED45\u7374\uED47\u4D09\u9BED\uED4A\uED4B\u4C5B"+
-        "\uED4D\uED4E\uED4F\u845C\uED51\uED52\uED53\uED54"+
-        "\u632E\u7D25\uED57\uED58\u3A2A\u9008\u52CC\u3E74"+
-        "\u367A\u45E9\uED5F\u7640\u5AF0\uED62\u787A\u47B6"+
-        "\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uED6B\u9E85"+
-        "\u4CE1\uFFFD\u37FB\u6119\uED71\uED72\uFFFD\u565D"+
-        "\uED75\u57A7\uED77\uED78\u5234\uED7A\u35AD\uFFFD"+
-        "\u9D7C\u7C56\u9B39\u57DE\uED81\u5C53\u64D3\uED84"+
-        "\uED85\uED86\u86AD\uED88\uED89\uED8A\uED8B\uFFFD"+
-        "\u51FE\uED8E\u5D8E\u9703\uED91\u9E81\u904C\u7B1F"+
-        "\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A"+
-        "\u7C7E\uFFFD\u7C42\u7C86\u9C15\u7BFC\u9B09\uFFFD"+
-        "\u9C1B\uEDA6\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2"+
-        "\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8"+
-        "\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641"+
-        "\u6980\u50A6\u7546\uEDC6\u99DA\u5273\uFFFD\u9159"+
-        "\u9681\u915C\uFFFD\u9151\uEDCF\u637F\uEDD1\u6ACA"+
-        "\u5611\u918E\u757A\u6285\uEDD7\u734F\u7C70\uEDDA"+
-        "\uEDDB\uFFFD\uEDDD\u76D6\u9B9D\u4E2A\uEDE1\u83BE"+
-        "\u8842\uFFFD\u5C4A\u69C0\uFFFD\u577A\u521F\u5DF5"+
-        "\u4ECE\u6C31\uEDED\u4F39\u549C\u54DA\u529A\u8D82"+
-        "\u35FE\uFFFD\u35F3\uFFFD\u6B52\u917C\u9FA5\u9B97"+
-        "\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\uFFFD"+
-        "\u6BFA\u8818\u7F78\uFFFD\u5620\uEE08\u8E77\u9F53"+
-        "\uFFFD\u8DD4\u8E4F\u9E1C\u8E01\u6282\uEE11\u8E28"+
-        "\u8E75\u7AD3\uEE15\u7A3E\u78D8\u6CEA\u8A67\u7607"+
-        "\uEE1B\u9F26\u6CCE\u87D6\u75C3\uEE20\u7853\uEE22"+
-        "\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uEE2A"+
-        "\u862F\u5FBA\u88A0\u44B7\uFFFD\uEE30\uEE31\uFFFD"+
-        "\u8A7E\uEE34\uFFFD\u60FD\u7667\u9AD7\u9D44\u936E"+
-        "\u9B8F\u87F5\uFFFD\uFFFD\u8CF7\u732C\u9721\u9BB0"+
-        "\u35D6\u72B2\u4C07\u7C51\u994A\uEE48\u6159\u4C04"+
-        "\u9E96\u617D\uFFFD\u575F\u616F\u62A6\u6239\uFFFD"+
-        "\u3A5C\u61E2\u53AA\uEE56\u6364\u6802\u35D2\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u5D57\uEE5B\u8FDA\uEE5D\uFFFD\u50D9\uEE60"+
-        "\u7906\u5332\u9638\uEE64\u4065\uFFFD\u77FE\uFFFD"+
-        "\u7CC2\uEE6A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505"+
-        "\u74F2\u8994\u821A\u670C\u8062\uEE76\u805B\u74F0"+
-        "\u8103\u7724\u8989\uEE7C\u7553\uEE7E\u87A9\u87CE"+
-        "\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA"+
-        "\u3635\u69B2\u8DA6\uFFFD\u89A9\uFFFD\u6DB9\u87C1"+
-        "\uEE91\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\uFFFD"+
-        "\u6077\uFFFD\u7F71\uEE9C\uFFFD\u60E9\u4B7E\u5220"+
-        "\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7\uEEA8"+
-        "\uEEA9\uEEAA\u5CC1\uEEAC\uEEAD\uEEAE\uEEAF\uEEB0"+
-        "\uEEB1\u4562\u5B1F\uEEB4\u9F50\u9EA6\uEEB7\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467"+
-        "\u2468\u2469\u2474\u2475\u2476\u2477\u2478\u2479"+
-        "\u247A\u247B\u247C\u247D\u2170\u2171\u2172\u2173"+
-        "\u2174\u2175\u2176\u2177\u2178\u2179\u4E36\u4E3F"+
-        "\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369"+
-        "\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\uFFFD\u5F50"+
-        "\u5F61\u6534\uFFFD\u7592\uFFFD\u8FB5\uFFFD\u00A8"+
-        "\u02C6\u30FD\u30FE\u309D\u309E\uFFFD\uFFFD\u3005"+
-        "\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\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\u30A1\u30A2\u30A3\u30A4\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\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\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\u21E7\u21B8\u21B9\uF7E5\uF7E6"+
-        "\u4E5A\uF7E8\u5202\uF7EA\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF7EB\u5188"+
-        "\uF7ED\uF7EE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116"+
-        "\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88"+
-        "\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7"+
-        "\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA"+
-        "\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\uFFFD"+
-        "\uFFFD\uFFFD\u0283\u0250\u025B\u0254\u0275\u0153"+
-        "\u00F8\u014B\u028A\u026A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u7881\u92B9\u88CF\u58BB\u6052\u7CA7"+
-        "\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A"+
-        "\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561"+
-        "\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B"+
-        "\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E"+
-        "\u2570\u256F\uFFED\uE000\u92DB\uE002\uE003\u854C"+
-        "\u42B5\u73EF\u51B5\u3649\uE009\uE00A\u9344\uE00C"+
-        "\u82EE\uE00E\u783C\u6744\u62DF\uE012\uE013\uE014"+
-        "\uE015\uE016\u4FAB\uE018\u5008\uE01A\uE01B\uE01C"+
-        "\uE01D\uE01E\uFFFD\uE020\u5FA4\uE022\uE023\u6EDB"+
-        "\uE025\uFFFD\u5101\u347A\u510E\u986C\u3743\u8416"+
-        "\uE02D\uE02E\u5160\uE030\u516A\uE032\uE033\uE034"+
-        "\uE035\uE036\uE037\uE038\u5B82\u877D\uE03B\uE03C"+
-        "\u51B2\u51B8\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u9D34\u51C9\u51CF\u51D1"+
-        "\u3CDC\u51D3\uE045\u51B3\u51E2\u5342\u51ED\u83CD"+
-        "\u693E\uE04C\u5F7B\u520B\u5226\u523C\u52B5\u5257"+
-        "\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uE05A"+
-        "\uFFFD\uE05C\u5549\u6ED9\uE05F\uE060\uE061\u5333"+
-        "\uFFFD\uE064\u6CCB\uE066\u681B\u73D5\u604A\u3EAA"+
-        "\u38CC\uE06C\u71DD\u44A2\u536D\u5374\uE071\u537E"+
-        "\uFFFD\uE074\uE075\u77E6\u5393\uE078\u53A0\u53AB"+
-        "\u53AE\u73A7\uE07D\u3F59\u739C\u53C1\u53C5\u6C49"+
-        "\u4E49\u57FE\u53D9\u3AAB\uE087\u53E0\uE089\uE08A"+
-        "\u53F6\uE08C\u5413\u7079\u552B\u6657\u6D5B\u546D"+
-        "\uE093\uE094\u555D\u548F\u54A4\u47A6\uE099\uE09A"+
-        "\u3DB4\uE09C\uE09D\uE09E\u5547\u4CED\u542F\u7417"+
-        "\u5586\u55A9\uFFFD\uE0A6\uE0A7\u4552\uE0A9\u66B3"+
-        "\uE0AB\u5637\u66CD\uE0AE\u66A4\u66AD\u564D\u564F"+
-        "\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uE0BA"+
-        "\u3623\uE0BC\u5746\uE0BE\u6C6E\u708B\u5742\u36B1"+
-        "\uE0C3\u57E6\uE0C5\u5803\uE0C7\uE0C8\u5826\uE0CA"+
-        "\u585C\u58AA\u3561\u58E0\u58DC\uE0D0\u58FB\u5BFF"+
-        "\u5743\uE0D4\uE0D5\u93D3\u35A1\u591F\u68A6\u36C3"+
-        "\u6E59\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uE0DC\u5A24\u5553\uE0DF\u8505"+
-        "\u59C9\uE0E2\uE0E3\uE0E4\uE0E5\u59D9\uE0E7\uE0E8"+
-        "\uE0E9\u6D71\uE0EB\uE0EC\u59F9\uE0EE\u5AAB\u5A63"+
-        "\u36E6\uE0F2\uFFFD\u3708\u5A96\u7465\u5AD3\uE0F8"+
-        "\uE0F9\u3D85\uE0FB\u3732\uE0FD\u5E83\u52D0\u5B76"+
-        "\u6588\u5B7C\uE103\u4004\u485D\uE106\u5BD5\u6160"+
-        "\uE109\uE10A\uE10B\u5BF3\u5B9D\u4D10\u5C05\uE110"+
-        "\u5C13\u73CE\u5C14\uE114\uE115\u5C49\u48DD\u5C85"+
-        "\u5CE9\u5CEF\u5D8B\uE11C\uE11D\u5D10\u5D18\u5D46"+
-        "\uE121\u5CBA\u5DD7\u82FC\u382D\uE126\uE127\uE128"+
-        "\u8287\u3836\u3BC2\u5E2E\u6A8A\uFFFD\u5E7A\uE130"+
-        "\uE131\u53A6\u4EB7\uFFFD\u53A8\uE136\u5E09\u5EF4"+
-        "\uE139\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D"+
-        "\uE141\uE142\u3ADE\u48AE\uE145\u5F3A\uE147\uE148"+
-        "\uFFFD\uE14A\u5F63\u97BD\uE14D\u5F72\u9340\uE150"+
-        "\u5FA7\u5DB6\u3D5F\uE154\uE155\uE156\uE157\u91D6"+
-        "\uE159\uE15A\u6031\u6685\uE15D\u3963\u3DC7\u3639"+
-        "\u5790\uE162\u7971\u3E40\u609E\uFFFD\u60B3\uE168"+
-        "\uE169\uE16A\u74A4\u50E1\u5AA0\u6164\u8424\u6142"+
-        "\uE171\uE172\u6181\u51F4\uE175\u6187\u5BAA\uE178"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uE179\u61D3\uE17B\uE17C\u61D0\u3932"+
-        "\uE17F\uE180\u6023\u615C\u651E\u638B\uE185\u62C5"+
-        "\uE187\u62D5\uE189\u636C\uE18B\u3A17\u6438\u63F8"+
-        "\uE18F\uE190\uFFFD\u6F8A\uE193\u9814\uE195\uE196"+
-        "\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16"+
-        "\uE19F\uE1A0\u6585\u656D\u655F\uE1A4\u65B5\uE1A6"+
-        "\u4B37\u65D1\u40D8\uE1AA\u65E0\u65E3\u5FDF\uE1AE"+
-        "\u6618\uE1B0\uE1B1\u6644\uE1B3\uE1B4\u664B\uE1B6"+
-        "\u6667\uE1B8\u6673\uFFFD\uE1BB\uE1BC\uE1BD\uE1BE"+
-        "\uE1BF\u77C5\uE1C1\u99A4\u6702\uE1C4\uE1C5\u3B2B"+
-        "\u69FA\uE1C8\uFFFD\u6767\u6762\uE1CC\uE1CD\u67D7"+
-        "\u44E9\u6822\u6E50\u923C\u6801\uE1D4\uE1D5\u685D";
+        public int encodeBig5(char ch) {
+            return big5Enc.encodeChar(ch);
+        }
 
-        private final static String innerIndex2=
-        "\uE1D7\u69E1\u6A0B\uE1DA\u6973\u68C3\uE1DD\u6901"+
-        "\u6900\u3D32\u3A01\uE1E2\u3B80\u67AC\u6961\uE1E6"+
-        "\u42FC\u6936\u6998\u3BA1\uE1EB\u8363\u5090\u69F9"+
-        "\uE1EF\uE1F0\u6A45\uE1F2\u6A9D\u3BF3\u67B1\u6AC8"+
-        "\uE1F7\u3C0D\u6B1D\uE1FA\u60DE\u6B35\u6B74\uE1FE"+
-        "\u6EB5\uE200\uE201\uE202\u3740\u5421\uE205\u6BE1"+
-        "\uE207\u6BDC\u6C37\uE20A\uE20B\uE20C\u6C5A\u8226"+
-        "\u6C79\uE210\u44C5\uE212\uE213\uE214\uE215\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uE216\u36E5\u3CEB\uE219\u9B83\uE21B\uE21C"+
-        "\u7F8F\u6837\uE21F\uE220\uE221\u6D96\u6D5C\u6E7C"+
-        "\u6F04\uE226\uE227\uE228\u8533\uE22A\u51C7\uFFFD"+
-        "\uFFFD\u842E\uE22F\uFFFD\uE231\u7453\uE233\u79CC"+
-        "\u6E4F\u5A91\uE237\u6FF8\u370D\u6F9D\uE23B\u6EFA"+
-        "\uE23D\uE23E\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74"+
-        "\uE245\u3D3B\u6F9F\uE248\u6FD3\uE24A\uE24B\uE24C"+
-        "\uE24D\uE24E\uE24F\u51DF\uE251\uE252\uE253\uE254"+
-        "\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF"+
-        "\u4104\u3DE8\u71B4\u7196\uE261\u712B\u7145\u5A88"+
-        "\u714A\uFFFD\u5C9C\uE268\u714F\u9362\uE26B\u712C"+
-        "\uE26D\uE26E\uE26F\u71BA\uE271\u70BD\u720E\u9442"+
-        "\u7215\u5911\u9443\u7224\u9341\uE27A\u722E\u7240"+
-        "\uE27D\u68BD\u7255\u7257\u3E55\uE282\u680D\u6F3D"+
-        "\u7282\uFFFD\u732B\uE288\uE289\u48ED\uE28B\u7328"+
-        "\u732E\u73CF\u73AA\uE290\uE291\u73C9\u7449\uE294"+
-        "\uE295\uE296\u6623\u36C5\uE299\uE29A\uE29B\u73F7"+
-        "\u7415\u6903\uE29F\u7439\uE2A1\u3ED7\uFFFD\uE2A4"+
-        "\u7460\uE2A6\u7447\u73E4\u7476\u83B9\u746C\u3730"+
-        "\u7474\u93F1\u6A2C\u7482\u4953\uE2B2\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uE2B3\uE2B4\uE2B5\u5B46\uE2B7\uE2B8\u74C8\uE2BA"+
-        "\u750E\uFFFD\u751E\uE2BE\uE2BF\u5BD7\uE2C1\u9385"+
-        "\u754D\u754A\u7567\u756E\uE2C7\u3F04\uE2C9\u758E"+
-        "\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F"+
-        "\u7676\uE2D4\u7690\u81EF\u37F8\uE2D8\uE2D9\u76A1"+
-        "\u76A5\u76B7\u76CC\uE2DE\u8462\uE2E0\uE2E1\uE2E2"+
-        "\u771E\u7726\u7740\u64AF\uE2E7\u7758\uE2E9\u77AF"+
-        "\uE2EB\uE2EC\uE2ED\u77F4\uFFFD\uE2F0\uE2F1\u68CA"+
-        "\u78AF\u78C7\u78D3\u96A5\u792E\uE2F8\u78D7\u7934"+
-        "\u78B1\uE2FC\u8FB8\u8884\uE2FF\uE300\uE301\u7986"+
-        "\u8900\u6902\u7980\uE306\u799D\uE308\u793C\u79A9"+
-        "\u6E2A\uE30C\u3EA8\u79C6\uE30F\u79D4";
+        public int encodeChar(char ch) {
+            int bb = c2bBmp[ch >> 8][ch & 0xff];
+            if (bb == UNMAPPABLE_ENCODING)
+                return encodeBig5(ch);
+            return bb;
+        }
 
-        private 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, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 6, 7,
-        8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-        24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, 0
-        };
+        public int encodeSupp(int cp) {
+            if ((cp & 0xf0000) != 0x20000)
+                return UNMAPPABLE_ENCODING;
+            return c2bSupp[(cp >> 8) & 0xff][cp & 0xff];
+        }
 
-        static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2
-        };
-        public Decoder(Charset cs) {
-            super(cs,
-                  index1,
-                  index2,
-                  0x40,
-                  0xFE);
+        public boolean canEncode(char c) {
+            return encodeChar(c) != UNMAPPABLE_ENCODING;
         }
-    }
 
-    protected static class Encoder extends DoubleByteEncoder {
-        private final static String innerIndex0=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8859\u8857\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u885D\u885B\u8866\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8861\u885F\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u886A\u8868\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u886F\u886D\u88A7\u0000\u8873\u8871\u0000\u0000"+
-            "\u0000\u0000\u8877\u8875\u0000\u0000\u0000\u0000"+
-            "\uC8FB\u887B\u8879\u0000\u88A2\u0000\u0000\u0000"+
-            "\u8856\u8867\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u885A\u886C\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u885C\u886E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8870\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8FC\u885E\u8874\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8FA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8878\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8858\u8869\u0000"+
-            "\u8872\u8860\u8876\u0000\u887A\u0000\u887C\u0000"+
-            "\u887D\u0000\u887E\u0000\u88A1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC8F6\u886B\u0000\u0000\uC8F8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8F7\u0000\u0000\u0000\u0000"+
-            "\u0000\u88A8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8FE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC8F9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8F5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8FD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6D9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC7F9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC7F3\uC7F4\uC7F5\uC7F6\uC7F7\uC7F8\uC7FA\uC7FB"+
-            "\uC7FC\uC7FD\uC7FE\uC840\uC841\uC842\uC843\uC844"+
-            "\uC845\uC846\uC847\uC848\uC849\uC84A\uC84B\uC84C"+
-            "\uC84D\uC84E\uC84F\uC850\uC851\uC852\uC853\uC854"+
-            "\uC855\uC856\uC857\uC858\uC859\uC85A\uC85C\uC85D"+
-            "\uC85E\uC85F\uC860\uC861\uC862\uC863\uC864\uC865"+
-            "\uC866\uC867\uC868\uC869\uC86A\uC86B\uC86C\uC86D"+
-            "\uC86E\uC86F\uC870\uC871\uC872\uC873\uC874\uC875"+
-            "\u0000\uC85B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8863\u88A4"+
-            "\u8865\u88A6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8D2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC8D3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6B5\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB\uC6BC"+
-            "\uC6BD\uC6BE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC877\uC878\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC876"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6A1\uC6A2\uC6A3\uC6A4\uC6A5\uC6A6\uC6A7\uC6A8"+
-            "\uC6A9\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC6AB\uC6AC\uC6AD\uC6AE"+
-            "\uC6AF\uC6B0\uC6B1\uC6B2\uC6B3\uC6B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uF9F9\uF9F8\uF9E6\uF9EF\uF9DD\uF9E8\uF9F1\uF9DF"+
-            "\uF9EC\uF9F5\uF9E3\uF9EE\uF9F7\uF9E5\uF9E9\uF9F2"+
-            "\uF9E0\uF9EB\uF9F4\uF9E2\uF9E7\uF9F0\uF9DE\uF9ED"+
-            "\uF9F6\uF9E4\uF9EA\uF9F3\uF9E1\uF9FA\uF9FB\uF9FD"+
-            "\uF9FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6E6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC8D6\u0000\u0000\u0000\uC8D7\u0000\uC8D8\uC8D9"+
-            "\uC8DA\u0000\uC8DB\u0000\uC8DC\uC8DD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC8DE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC8DF\uC8E0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC8E1\u0000\uC8E2"+
-            "\u0000\u0000\uC8E3\u0000\uC8E4\u0000\uC8E5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E6\u0000"+
-            "\u0000\u0000\u0000\u0000\uC8E7\u0000\uC8E8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E9\u0000"+
-            "\u0000\u0000\uC8EA\u0000\uC8EB\uC8EC\u0000\uC8ED"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8EE\uC8EF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8F0\u0000"+
-            "\u0000\u0000\u0000\uC8F1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC6CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6E0\uC6E1\uC6E2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB\uC6EC\uC6ED"+
-            "\uC6EE\uC6EF\uC6F0\uC6F1\uC6F2\uC6F3\uC6F4\uC6F5"+
-            "\uC6F6\uC6F7\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD"+
-            "\uC6FE\uC740\uC741\uC742\uC743\uC744\uC745\uC746"+
-            "\uC747\uC748\uC749\uC74A\uC74B\uC74C\uC74D\uC74E"+
-            "\uC74F\uC750\uC751\uC752\uC753\uC754\uC755\uC756"+
-            "\uC757\uC758\uC759\uC75A\uC75B\uC75C\uC75D\uC75E"+
-            "\uC75F\uC760\uC761\uC762\uC763\uC764\uC765\uC766"+
-            "\uC767\uC768\uC769\uC76A\uC76B\uC76C\uC76D\uC76E"+
-            "\uC76F\uC770\uC771\uC772\uC773\uC774\uC775\uC776"+
-            "\uC777\uC778\uC779\uC77A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8D4\uC8D5\uC6DC\uC6DD\u0000"+
-            "\u0000\uC77B\uC77C\uC77D\uC77E\uC7A1\uC7A2\uC7A3"+
-            "\uC7A4\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9\uC7AA\uC7AB"+
-            "\uC7AC\uC7AD\uC7AE\uC7AF\uC7B0\uC7B1\uC7B2\uC7B3"+
-            "\uC7B4\uC7B5\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\uC7BB"+
-            "\uC7BC\uC7BD\uC7BE\uC7BF\uC7C0\uC7C1\uC7C2\uC7C3"+
-            "\uC7C4\uC7C5\uC7C6\uC7C7\uC7C8\uC7C9\uC7CA\uC7CB"+
-            "\uC7CC\uC7CD\uC7CE\uC7CF\uC7D0\uC7D1\uC7D2\uC7D3"+
-            "\uC7D4\uC7D5\uC7D6\uC7D7\uC7D8\uC7D9\uC7DA\uC7DB"+
-            "\uC7DC\uC7DD\uC7DE\uC7DF\uC7E0\uC7E1\uC7E2\uC7E3"+
-            "\uC7E4\uC7E5\uC7E6\uC7E7\uC7E8\uC7E9\uC7EA\uC7EB"+
-            "\uC7EC\uC7ED\uC7EE\uC7EF\uC7F0\uC7F1\uC7F2\u0000"+
-            "\u0000\u0000\u0000\u0000\uC6E3\uC6DA\uC6DB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC8D1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9277\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89D5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u93CD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9BDF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFA68\u0000\u0000\u89DA\u8F59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89DB\u0000\u0000\u8F5D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89DC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8ADA\u0000\u0000\u0000"+
-            "\u0000\u8BDC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u97DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E53"+
-            "\u0000\u0000\u0000\u0000\u9DAA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9BEA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8A6E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8BC8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89E8\u0000\u89EA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB70\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89ED\u0000\u0000"+
-            "\u94DD\u0000\u89EE\u0000\u0000\u0000\u0000\u9EB4"+
-            "\u8AD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92DB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94DB"+
-            "\u89F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB7A\u0000\u0000\u0000\u89FB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EFC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FC"+
-            "\u0000\u89BF\u0000\u0000\u0000\u89FE\u0000\u89E6"+
-            "\u0000\u0000\u9D46\u0000\u0000\u0000\u9DEE\u0000"+
-            "\u0000\u0000\uA07E\u0000\u0000\u0000\uA068\u0000"+
-            "\u0000\u0000\u0000\u98E9\u0000\u8B68\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DFD\u8BBE\u9FD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AEB\u0000\u0000\u9FD7\u0000";
+        protected CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
+            char[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+
+            byte[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
 
-        private final static String innerIndex1=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8B6A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9C5C\u0000\u8BB1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB5E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DF3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0D0\u0000\u0000"+
-            "\u0000\uFC66\u0000\u0000\u0000\u0000\u92E9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AEC"+
-            "\u8FAB\uFA48\u0000\u0000\u0000\u0000\u8E45\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C6F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EDE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89EF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u96E9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EBB\u0000\u0000"+
-            "\u0000\u0000\u94DE\u0000\u9EB8\u0000\u0000\u0000"+
-            "\u97BA\uFB65\u0000\u0000\u0000\u95D6\u0000\u0000"+
-            "\u0000\u9CBB\u0000\u0000\u97DA\u0000\u0000\u0000"+
-            "\u0000\u8F45\u0000\uFB7D\u9158\uFE64\u0000\u9856"+
-            "\u9B4D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u935B\u95C7\u0000\u97E7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9359\u0000\u0000"+
-            "\u0000\u91F5\u97B8\u0000\u0000\uFDA2\uFBB6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92FA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9357\u0000\u8BA6\u0000\u0000\u0000\u0000"+
-            "\uFBB9\u0000\u97B0\u0000\u0000\uFDC4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9CA1\u0000\u0000\u0000"+
-            "\u0000\u0000\u91F2\u91F9\u0000\u8FF1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9745\u9853\u0000\u0000"+
-            "\uFE78\u0000\uFBC1\u9251\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DAD\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD6C\u0000\u0000\uFA6B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9BC2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A7B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B60"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u934B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9ABD\u0000\u0000\u0000\u0000\u91B7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95B4\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEC5\u0000\u0000\u9EF0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D64"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9269\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBEA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF\u0000"+
-            "\u8D68\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u93EB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9166\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000"+
-            "\u0000\u93DD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BCC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8D6E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96A8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFCA6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D6F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFC64\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8D74\u97C3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8AD0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9274\u0000\u9BBE\u0000\u0000\u0000\u0000"+
-            "\u0000\u9CC8\u0000\u0000\u9CBA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EB9\u0000\u0000\u0000"+
-            "\u0000\u0000\u955A\u0000\u0000\u91B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8A48\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D7D\u0000\u0000\u8A7D\u0000\u0000\u8AC2\u0000"+
-            "\u0000\uFD4A\u0000\u8DA1\u0000\u0000\u8AD1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCB4"+
-            "\u8B47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93A4\u9EDA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8A51\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DA6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EC5\u0000\u0000\u0000\u0000\uFCC4"+
-            "\u0000\u0000\u0000\u0000\uA078\u0000\u94B5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC2\u8A6B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAE8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DAD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC49\u0000"+
-            "\u93C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u906F\u0000\u8DB0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u947E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90FA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9479\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DB2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCEE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u997B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DB4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DB7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DBB\u8DBA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DBC\u9044\u0000\u0000\u0000"+
-            "\uFD4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93E4\u0000"+
-            "\u0000\u93E0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DC3\u0000\u9BB8\u0000"+
-            "\u0000\u0000\uFBF0\u0000\u93E9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93F6"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DC5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DCA\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DCC\uFD5D\u93B5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD61\u0000\u0000"+
-            "\u0000\u9CF8\u0000\u0000\u0000\u9252\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9CA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DD6\u0000\u97C0\u0000\u0000"+
-            "\u0000\uA0DE\u0000\u0000\u0000\u0000\u97D2\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDA3\u0000\u0000\u0000\u8DDB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u91B5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFD49\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDD1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DEB\u0000"+
-            "\u0000\u0000\u0000\u0000\u97C6\u0000\uFDCE\u0000"+
-            "\u0000\u90FC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFC59"+
-            "\u0000\u0000\u96D6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97C5\u8DEF\u0000\u0000\u0000\u0000\u97D7"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DF0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96A6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBBF\u0000\u0000"+
-            "\u0000\u0000\u8DF3\u0000\u0000\u0000\u0000\u9449"+
-            "\u0000\u8DF5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9872\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E6B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAFD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F50"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DCC\uFC65"+
-            "\u0000\u0000\u0000\u0000\u996E\u94A1\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F63\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA0DA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9253"+
-            "\uFDE9\u0000\u0000\u9DB5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9879\u0000\u0000\u0000\u9D5D"+
-            "\u0000\u0000\u0000\u0000\u8D63\u9669\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC6A\u0000\u0000\u8AC7\u0000\u0000\u0000\u0000"+
-            "\u89D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE4D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EDD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEFB\u98BC\uFACC\u0000\u0000\u95B0\u0000\u0000"+
-            "\u0000\u9464\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u936F\u0000\u0000\u0000\u0000\u0000\u0000\u94B9"+
-            "\u0000\u0000\u95EC\u0000\u0000\u0000\u0000\u91EE"+
-            "\u0000\u0000\u98C3\u0000\u95F6\u0000\u0000\u0000"+
-            "\u8FFD\u98C5\u0000\u0000\u0000\u0000\u9766\uFE6E"+
-            "\u0000\u0000\u97DD\u0000\u0000\u0000\u92D2\u0000"+
-            "\u0000\u9761\u98CB\u0000\u0000\u0000\u0000\u95F0"+
-            "\u0000\u975D\u0000\u91E3\u0000\u0000\u0000\u0000"+
-            "\u98CC\u0000\u0000\u9469\u98CD\u0000\u0000\u0000"+
-            "\u0000\u0000\u98CE\u0000\u95FC\u0000\u0000\u94A3"+
-            "\u9662\u0000\u0000\u0000\uFEB6\u0000\u9463\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98D0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98D1\u0000\u0000\u0000\u0000"+
-            "\u9475\uFAE0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9472\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98D6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AF0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98DB"+
-            "\u0000\u0000\u0000\u0000\u98DD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98A8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A6D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8AFB\u8AAE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBC9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98E4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98E8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8A4D\u0000\u0000\u0000\u9257"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95DF\u0000\u0000\uA0AC\u0000\u0000"+
-            "\u0000\u0000\u98EB\u0000\u0000\u0000\u0000\u98EC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AB8\u0000\u0000\u0000\u9EE7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u94BC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCD1\u0000\u0000\u0000\u0000\u0000\u0000\u9CC6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E7E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98FE\uFDE8\u0000\u0000\u0000"+
-            "\u0000\u9940\u0000\u0000\u0000\u0000\u94C9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94D3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9946"+
-            "\u0000\u0000\u0000\u0000\u90C0\u0000\u94D1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9573"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u93C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9948\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u994B\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E55\u0000\u0000\u0000\u0000\u994E"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EFE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8E59"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u94EC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u94EF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8F74\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9955\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9544\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9956\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9959\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u995B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFA45\u0000\u0000"+
-            "\u0000\u90B7\u0000\u0000\u9743\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95CD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u97C9\uFD50\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EB9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95C6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8AB9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DFC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8A76\u0000\u0000\u0000\u0000\u0000\u9D51"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9973\u0000\u0000"+
-            "\u0000\u0000\u9D4F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u997A\u9564\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99A1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99A5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99A7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8EED\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99AD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946E"+
-            "\u8F70\u0000\uFAD0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99B3\u0000\u0000\u0000\u0000\u0000\u0000\uA053"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u965C\u0000\u0000\u0000\u0000\uFD7A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97FE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92BD\u0000\u97FD"+
-            "\u0000\u0000\u0000\u0000\u8F64\u0000\u0000\u0000"+
-            "\u0000\uFCF7\u9562\u97CD\u9E64\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u924C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EC9\u99BC\u0000\u0000\u0000"+
-            "\u0000\u9DA5\u0000\u8F54\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8F7C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8EA2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7A"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97AE\u0000"+
-            "\u0000\u0000\u0000\u96C8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99C3\u0000\u90D6\u0000\u9CBE"+
-            "\u0000\u0000\u0000\u8F76\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9470\uFB4B\u0000\u0000\uFDCA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8EC7\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0F9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8FA9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90D7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EDF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static String innerIndex2=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99CE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA"+
-            "\u0000\u0000\u0000\u0000\u0000\u8FEB\u0000\u99CF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FC2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92C9\u0000\u0000\u0000\u0000\u0000"+
-            "\u97DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95B3"+
-            "\u9C79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95B2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FDB\u0000\u0000\u0000\u0000"+
-            "\u9BE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E7A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9BEE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99DE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAFA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9EE5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A52\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99E1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8A67\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BB5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AAC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBCA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97DE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u95D1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99F5\uFC4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9BA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBDC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE56\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EA4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9D49\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95DB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9664\u0000\u0000"+
-            "\u0000\u0000\u9055\u0000\u0000\u96D4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u977C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u964D\u0000\u97E1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A48\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A49\u0000\uFE7D\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90AA\u0000\u0000"+
-            "\u0000\u0000\u9A50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9347\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90C9\u0000\u0000\u0000\u0000\u0000\u9A55"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90BC"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A58\u0000\u8BB8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90D5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9641\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A5A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A5C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8ABB\u0000\u0000\u0000"+
-            "\u9BAA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90F5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A60\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9145"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A63\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8BB6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u966B"+
-            "\u9A6E\u0000\u914F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9746\u0000\u0000\uA0E6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u92D7\u0000"+
-            "\u9675\u0000\u0000\u93D4\u0000\u0000\u91BB\u9679"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9678\u91CD\u0000"+
-            "\u9C4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA06F\u0000\u0000\uA06A"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u915F\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9FA5\u0000\u0000\u89BA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9ECD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A79\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9D73\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96B9\u0000"+
-            "\u96BC\u0000\u0000\u0000\u0000\u0000\u0000\u9CD1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EEE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB43\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EC9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFBD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9D78\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9D7B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EB3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EB2\u0000\u9DD6\u0000\u0000\u0000"+
-            "\u0000\u994F\u0000\u0000\u89CE\u0000\u0000\u0000"+
-            "\u8BC0\u0000\u9FC4\u0000\u8BD4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6BF\u8BF9"+
-            "\u0000\u0000\u0000\u0000\u0000\u8946\u0000\uC6C0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAE5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC87B\u8BC6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9C57\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9AFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89D0\u89CF\u0000\u0000\u0000\uC6C1\u0000\u89D1"+
-            "\u0000\u89E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u927E\u0000\u9DBA\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBF8"+
-            "\u0000\u0000\u0000\u8BC7\u926B\u0000\u0000\u89D2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FCF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DA9\u89D3\u0000\u0000\u99E2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9267\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92A4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u894E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u894F\u9278\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91B6\u0000\u0000\u0000\u0000\u89D4"+
-            "\u0000\u9FD2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92A7\u0000\u0000\u95A2\u0000\u0000"+
-            "\u0000\u0000\u0000\u926E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u96EA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u926F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92A3\u0000\u0000\u0000\u0000\u0000"+
-            "\u8950\u0000\u0000\uFA57\u0000\u0000\u0000\u0000"+
-            "\u9866\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89D6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98B2\u0000\u0000\u0000\u92AB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96DE\u92AC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F6E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EF2\u0000\u0000\u0000\u9F6C\u0000\u0000"+
-            "\u0000\u0000\u0000\u89D8\u0000\u0000\u0000\u0000"+
-            "\uFA59\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u92A8\u0000"+
-            "\u0000\u0000\u0000\u0000\u9163\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F73\u0000"+
-            "\u92AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9BE9\u0000"+
-            "\u0000\u0000\u0000\u0000\u92A9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD56\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FA8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92A1\u0000\u0000"+
-            "\u90E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0A6\u0000\u0000\u0000\u0000\u0000\u94AB"+
-            "\u0000\uFC72\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u97C4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92AE\u0000\u0000\u0000"+
-            "\u0000\uFA67\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92A2\uFA69\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9268\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8951\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFA6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFA71\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8952\u0000\u0000\u0000"+
-            "\u0000\u945A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC6C3\u0000\u0000\u0000\u89DD\u0000"+
-            "\uC8A2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6C4\u0000"+
-            "\u0000\u0000\u9E52\u0000\u8953\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E55"+
-            "\u92BA\u0000\u0000\uC6C5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFA7D\uFAA8\u9A68\uFA47\u0000\u0000"+
-            "\uFA7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92BB\u0000\u0000\u0000\uFDB6"+
-            "\u0000\uFAA2\u0000\u0000\u0000\u0000\u0000\uFAA3"+
-            "\u0000\uFAA4\u9BB4\uFAA6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89DF\u0000\u0000\u0000\uFDDB"+
-            "\u0000\u0000\uFAA9\u0000\u8954\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAAB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFC7A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89E0\u0000\u9F4F\u0000"+
-            "\u0000\u0000\uC87D\u0000\u0000\u89E1\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAB0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FCD"+
-            "\uA0E7\u0000\u0000\u0000\u0000\u0000\uFAB1\u89A6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EFA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAB2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAB4"+
-            "\u0000\u92C4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9FAC\u0000\u0000\u0000\u0000"+
-            "\u0000\u89E3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9BD3"+
-            "\u89E4\u0000\u0000\u0000\uFAB5\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FD5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8955\u0000\u0000\u92C5\u0000\u0000\u0000"+
-            "\u8956\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000"+
-            "\u0000\uFAB6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAB7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EDC\u0000\u0000\u0000"+
-            "\uFBC4\u9F71\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFABA\u92C7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC6C6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89E5"+
-            "\u0000\u0000\u0000\u0000\u9F7D\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0A9\uFAC4\u0000\u0000\u0000\u0000"+
-            "\uC6C7\u0000\u0000\u8957\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFAAA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8958\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BE3\u0000\u8B61"+
-            "\u0000\u0000\u0000\u0000\u9AF1\u0000\u0000\u9EB7"+
-            "\u0000\uC6C8\u0000\u0000\u0000\uFAD1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAD2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EBA\uFAD4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFADB\u0000\u9CE0\u0000\u0000\u0000\uFBF7\u0000"+
-            "\uFBFA\u89E7\uA07A\uFADC\u0000\u0000\uFADD\u0000"+
-            "\u89E9\u0000\u0000\u0000\u0000\u0000\uC6C9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAE2\u89EB\u0000\u0000\uFAE3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90C8\u0000\u0000\u0000"+
-            "\u92DA\u8959\u9CF5\u0000\u0000\u0000\u0000\u0000"+
-            "\u895A\uFAE7\u9FA2\u0000\u0000\u0000\u0000\u0000"+
-            "\uFAEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAED\u8FAD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAEF\u96EF\u0000\u9DEC\u0000"+
-            "\u0000\u0000\u9DCA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD6D\u0000\u89EC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB44"+
-            "\u0000\u0000\u9DE2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EC0\u0000\u9E56\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F79\u9AC7\u0000\u0000\uFAF4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98A1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAF8"+
-            "\u0000\u0000\u0000\u89F0\u9E47\u0000\u0000\u9DF7"+
-            "\u0000\u0000\u0000\u0000\u9FD3\u0000\u9ACA\u0000"+
-            "\u0000\u0000\u0000\u89F1\uFAF9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E5A\u0000\u89F2\u0000\u0000\u0000"+
-            "\u0000\u89F3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u925D\u8B51\u92E0\u0000\u0000"+
-            "\u89F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FD4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8A79\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97A7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u93BA\u0000\u0000"+
-            "\u0000\u0000\u0000\u9E58\u0000\u0000\u0000\u0000"+
-            "\u89F6\u0000\u0000\u0000\u0000\u0000\u9E57\u0000"+
-            "\u0000\u0000\u0000\u89F7\u0000\u8A41\u0000\u0000"+
-            "\u89F8\u0000\u0000\uFAF1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB42"+
-            "\u0000\uFABF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBA3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAF7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9E4E\u0000\u94DC\u0000\u0000\u0000\u0000"+
-            "\u0000\u95DA\u9DF8\u9F6A\u0000\u0000\u0000\u0000"+
-            "\u0000\u8AB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB46\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8A46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB47\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9148\u0000\u0000\u0000\u92DE\u0000\u0000\u0000"+
-            "\u0000\u8B53\u9DF6\u0000\u9BDA\u0000\u0000\u0000"+
-            "\u0000\u9D7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FD"+
-            "\u99E4\u0000\u0000\u0000\u0000\u0000\u9E43\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DE9\u0000\u8F52\u0000\u0000\u0000"+
-            "\u9DF5\u9DF0\u0000\u0000\u0000\u99E7\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BBD\u0000\u0000\u0000\u0000";
+            try {
+                while (sp < sl) {
+                    char c = sa[sp];
+                    int inSize = 1;
+                    int bb = encodeChar(c);
+                    if (bb == UNMAPPABLE_ENCODING) {
+                        if (Character.isSurrogate(c)) {
+                            int cp;
+                            if ((cp = sgp().parse(c, sa, sp, sl)) < 0)
+                                return sgp.error();
+                            bb = encodeSupp(cp);
+                            if (bb == UNMAPPABLE_ENCODING)
+                                return CoderResult.unmappableForLength(2);
+                            inSize = 2;
+                        } else {
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                    if (bb > MAX_SINGLEBYTE) {    // DoubleByte
+                        if (dl - dp < 2)
+                            return CoderResult.OVERFLOW;
+                        da[dp++] = (byte)(bb >> 8);
+                        da[dp++] = (byte)bb;
+                    } else {                      // SingleByte
+                        if (dl - dp < 1)
+                            return CoderResult.OVERFLOW;
+                        da[dp++] = (byte)bb;
+                    }
+                    sp += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
 
-        private final static String innerIndex3=
-            "\u0000\u0000\u0000\u0000\u0000\u9DEF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DD0\u0000"+
-            "\u9FEB\u8DA9\u9DCF\u98E1\u0000\u9DE5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DC8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB4F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DEB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB54\u0000\uFB55"+
-            "\u9AA2\u0000\u8AD6\u0000\u9A5F\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EF5\u0000\u0000"+
-            "\u0000\u8FB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9AD2\u9E6A\u9EE8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BBF\u91C2\u9D62\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9260\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u925E\u91C1"+
-            "\u0000\u8AC5\u0000\u0000\u97A3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B6C"+
-            "\u0000\u8D7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9C54\u0000\u0000\u0000\u0000\u0000\u9DBD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CC5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u895B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB5C\u0000\uFB5B"+
-            "\u0000\uFB57\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98C7\u0000\u0000"+
-            "\uFB5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CEE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92E2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94A7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9BD4"+
-            "\u0000\u0000\uFB64\uFB76\u0000\u0000\uFB60\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99E5\u0000\u0000\u9AC2"+
-            "\u0000\u0000\u0000\u91FB\u0000\u0000\u0000\uA073"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F72"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FCC\u0000\u0000\u0000\u98A5\u92E8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9BBC\u0000\u96F3\u0000\u0000\u92E7\u0000\u0000"+
-            "\uFC67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B7D\u0000\u0000\u0000"+
-            "\u0000\u9BF4\u0000\u0000\u0000\u0000\u0000\u9EF7"+
-            "\u0000\u0000\u9EC1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u996F\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96F1\u0000\u0000\u8E41\u0000"+
-            "\u0000\u0000\u0000\u0000\u954A\u0000\u0000\u0000"+
-            "\u97E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F5"+
-            "\u0000\u0000\u0000\u0000\u0000\u92E6\u9F42\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB67\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99A9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE6\u0000"+
-            "\u0000\u0000\u0000\uFB69\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97E5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u967D\u0000\u0000\u0000\uFB6C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99A2\u0000\u0000\u0000\u0000\u0000"+
-            "\u9ABB\u0000\u0000\u0000\u9A65\u0000\u0000\u944E"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFB6E\u0000\u0000\u99DF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98E3\u0000\u0000\u9254\u0000\u0000\u0000"+
-            "\u0000\u0000\u967B\u8AAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BAF\u9EBD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9EE6"+
-            "\u0000\u0000\uFB6F\u0000\u0000\u0000\u0000\u0000"+
-            "\u8EE1\u0000\u0000\u0000\u0000\u9B7D\u9C7E\u0000"+
-            "\u0000\u0000\u0000\uF9D9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92EA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFB72\u0000\u0000\u0000"+
-            "\uFB71\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u895C\u0000\u98F0\u96F2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB74\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BC1\u0000\u895D\u89DE\u0000\u895E"+
-            "\u0000\u0000\uC6CA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFE42\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB7B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u895F\u0000\u8960\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9BCD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DD3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u984C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9752\u0000\u0000\u0000"+
-            "\u0000\u0000\u95C3\u0000\u0000\u0000\u0000\u9BB6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AB9\u0000\u0000\u0000"+
-            "\u97B3\u0000\u0000\u0000\u0000\u0000\u0000\u9F74"+
-            "\u92F1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u97DF\u0000\u0000\u0000"+
-            "\u0000\uFBA6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9877\u0000\u0000\u0000\u9854"+
-            "\u95C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9D55\uFBB2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u957E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9742\u0000\u94E6\u0000\u0000"+
-            "\u0000\u0000\u92F5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92FD\u0000\u0000\uFBA2\u0000\u0000\u9C51"+
-            "\u0000\u0000\u94E9\u985C\u92F0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u944C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u916B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B78\u0000\u0000\u0000"+
-            "\u0000\u94E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u984F\u0000\uFBB5\u0000\u0000\u0000\u0000"+
-            "\u9271\u0000\u0000\u9365\u0000\u0000\u985B\u0000"+
-            "\u0000\u9850\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97BC\u0000\u0000\u0000\u0000\u92F3\u0000"+
-            "\u0000\u9340\u984D\u0000\u0000\u0000\u9572\u0000"+
-            "\uFDEF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFDC1\u0000\u0000\u0000\u0000\uFBBA\u0000"+
-            "\u0000\u92EB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC73\u97B7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBB4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90A7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9741\u92F4"+
-            "\u0000\u0000\u0000\uFBBC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9577\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9EE2\u0000\u8F78\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uF9DC\u0000\u0000\u0000\u9672\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EB5\u0000\u0000"+
-            "\u0000\u964B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0FA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9575\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90DA\u0000\u0000\u9367\u0000\uFEA4\u0000"+
-            "\u0000\u0000\u90DF\u0000\u0000\u0000\u0000\u9354"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8961\u0000"+
-            "\u8BB4\u0000\u0000\u0000\u0000\u9DC0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8E48\u0000\uFBC5\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBC7\u0000\u0000\u0000"+
-            "\uC6CB\u0000\uFA79\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBD2\u8962\u8963"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFC7D\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F6B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBCC\u0000\uFEAE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBD1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB75"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBD4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBD6\uFBD8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B5D\u0000\u934C\u0000"+
-            "\u9AE2\u0000\u0000\u8BC9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBDB\u9FC9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F44\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98ED\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBDD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DF2\u8964\u0000\uFDF2\u0000\u934D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFBE7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0F2\u9868\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F58\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D73\u0000\u0000"+
-            "\u0000\uFBDE\u0000\u0000\u0000\u0000\u0000\uFBDF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFBE3\u0000\u0000\u0000\u0000\u8DA8\u0000\u0000"+
-            "\uFBE4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9C75\u0000\u0000\u9878"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8D60\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFBE5\u0000"+
-            "\u8D61\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8D62\uA0A1"+
-            "\u0000\u0000\u0000\u9C40\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98AD\u0000\u0000\u0000\u9EEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CEB\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBE0\u0000\u0000\u9F51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8D65\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9CF1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC58\u0000"+
-            "\u0000\u8D66\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9654\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBE8"+
-            "\u0000\u0000\u0000\uC6CC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBFC\u0000\u9AE4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F75\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFBF1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8D69\u0000\u0000\u0000\u0000\u0000"+
-            "\u934F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u934E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFBF4\u0000\u0000\u0000\u0000\uC6CE"+
-            "\u0000\u0000\u0000\uFBC3\u0000\u0000\u8965\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D6A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9353\u0000\u0000"+
-            "\u9DFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBFD\u0000\u0000\u0000"+
-            "\u9059\uFC40\u0000\uFC41\uFC43\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9361\uFC46\u9362\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D6B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFC4C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95B8\u0000\u0000"+
-            "\uC6D0\u8BCA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u987A\u0000\u0000\u0000"+
-            "\u0000\uC6D1\u0000\uFC51\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFC54\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8D6C\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFA61\u0000\u0000\uFC57"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9B70\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA051\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8BCB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u936E\u0000\u0000\u0000\uFCD5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCA9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC61\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8966\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFACB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uF9DA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u937A\u0000\uA0E0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u936B\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC6B\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0DC\u0000\u0000\u9468"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFC6D\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D71"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFD64\u0000"+
-            "\u0000\u0000\u0000\u99BA\u0000\u0000\u0000\u9AD0"+
-            "\u9A61\uA0E5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA05B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AC"+
-            "\u0000\u0000\u0000\u0000\u9740\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EF1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D72\u0000\u0000"+
-            "\u0000\u0000\uFC76\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA06E\u0000\u0000\uFCAA\u0000\u0000\u0000"+
-            "\uFBCD\u0000\u0000\u0000\uFC74\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA074"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA071\u0000\u0000"+
-            "\u0000\uFC79\u0000\u0000\u0000\u0000\u0000\uFC7C"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9C50\u0000\u0000"+
-            "\u9379\u9378\u0000\u0000\uA0DD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D75"+
-            "\u0000\u8D76\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9374\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D77"+
-            "\uFCA5\u0000\u0000\uFCA2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90C3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA079\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8D79\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BFC"+
-            "\u0000\uA076\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8BCD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FF4\u0000\u0000\u9FBA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D7A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E45\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u93B0\u0000\uA075\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9B46\u0000\uFCAE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCB0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA51"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D7B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D7C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9ED6\u0000"+
-            "\u0000\u93AC\u0000\u0000\u0000\u9F5B\u0000\u93A9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA07C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCB2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8AC1\u0000\u0000\u0000\u0000\u0000\u9FB4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCAC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9E4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FC5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93AD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DC3\u0000"+
-            "\u0000\u0000\u8DA2\u0000\u0000\u0000\u9D4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCB6\u0000\u0000\u8DA3\u9E4B\u0000\u9E4D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DA4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8AFD\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCB5\u0000\uFCC3\u93B2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DA5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93A1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8AC6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A5B\u0000\u0000"+
-            "\u0000\u894D\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED4"+
-            "\u0000\u0000\u0000\u0000\u8A78\u0000\u93AB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F45\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A56\u0000\u0000"+
-            "\u0000\uFCBF\u0000\u0000\u0000\uFCC0\u0000\u8EE6"+
-            "\u0000\u0000\u8AA4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8943\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93F3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB\u9EA2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DC7\u0000\u0000\u0000\uC6D2\u8BCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCC5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u93B3\u0000\uFCCA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCC9\u8DAC\u0000"+
-            "\uFBC6\u8967\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCCD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF3\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFCD0\u0000\u0000\u95BB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCD3\u0000\u0000\uFCD4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAE";
-
-        private final static String innerIndex4=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCD7\u0000\u0000\u0000\u0000\u0000\u93DB\u0000"+
-            "\u0000\u0000\u0000\uFE63\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u93D5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCDA\u0000\u0000\u0000"+
-            "\u9B71\u0000\u0000\uFCDD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DAF\u0000\u0000\u0000\uFAF2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u93D8\u0000\u0000\u0000\uFCDF"+
-            "\u0000\u0000\u0000\u93D3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCE1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E76\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFC62\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93D1\u0000"+
-            "\u0000\u0000\u8DB1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9859\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFB52\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB53\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB4D\u0000\u0000\u9CBF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B72"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB50\u93BE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9DF1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFCEB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0BB\u0000\u9B7E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DB3\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9AE8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8EDC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFA50\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98E7\uFCF3\u0000\u0000\u0000\u0000\uFCF2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93E5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9A59\u0000\u0000\u0000\u8DB5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFD4D\u0000\u0000\u0000"+
-            "\u0000\uFD5E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9547\uFCF6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9250\u0000\u0000\u0000\u0000\u8968\u0000"+
-            "\u8DB6\uFCFB\uA07D\u98FC\u8969\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE4F\u0000\u0000"+
-            "\u9256\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAC9\u0000\u0000\u93E8\u0000"+
-            "\u0000\u0000\uFCF8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CE3\uFDA9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC44\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9640"+
-            "\u0000\u0000\u8DB8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9B4A\u8FB9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCFE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u896A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DB9\u0000\u0000\u0000"+
-            "\u917E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u93F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB7C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93E7\u0000"+
-            "\u0000\u97EF\u0000\u0000\u0000\uFE4A\u0000\u0000"+
-            "\u0000\u0000\u0000\uFD45\u0000\u96A5\u0000\u0000"+
-            "\u0000\u0000\uFEE0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD48\uFD47\uFEF2\uFE6A\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DBD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9BA1\u0000\u9AB7\u8EFC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FA1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFD51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAAD\u0000"+
-            "\u0000\u0000\u0000\u8DBE\u0000\u0000\u89A4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AD9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD4E\u0000\u0000\u8DC0\u0000\u0000\u97F0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u93B4\uFD44\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FA7\u0000\u0000\u0000\u0000\u8DC2\u0000\u0000"+
-            "\u0000\u0000\u99B6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD52\u0000\u0000\u0000\u0000\u0000\u0000\u8DC1"+
-            "\u0000\u0000\u8E46\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0D1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92CF\u0000\u0000\u0000\u9CF4\u8DC4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD41\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9B4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD57\uFCEF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9CDE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFD42\u986C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97F9\u0000\u9558\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u985E\uFE7B\u94CD\u0000\u0000"+
-            "\u0000\u0000\u0000\u93EE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD5A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u93F5\u0000\u0000\u0000"+
-            "\u0000\u0000\u93EF\u8EEA\u0000\u0000\u0000\u8F5B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DC6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DC8\u0000\u0000\u8DC7\u0000\u0000\u0000"+
-            "\u0000\u0000\u93F7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DC9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFBF2\u0000\u0000\u0000\u0000\u9670"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DCB\u0000\u0000\u0000\uFD5C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F65"+
-            "\u0000\u0000\u0000\u8DCD\u0000\u0000\u0000\u0000"+
-            "\u0000\u9DA8\u94F9\u0000\u0000\u8DCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93EA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD5F\u93F0\u9FB6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DCF\u0000\u0000\u0000"+
-            "\u9763\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DD0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u93F1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD62\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD65\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FDB\u0000\u0000\u0000\u0000\u93F8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF7"+
-            "\u0000\u0000\u0000\u0000\uFD66\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BCF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DD1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DD2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFD71\u0000\u0000\u0000"+
-            "\u0000\uFD6F\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DD3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FE7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FD0\u0000\u0000\u0000\u8BD0\u0000\uFD72"+
-            "\u0000\u9CAE\u8BD1\u0000\u0000\u8ADB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAE4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u95CE\u0000\uFD76\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB62\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DD4\u0000\u0000"+
-            "\u0000\uFD78\u0000\u0000\u0000\u0000\u0000\u8EE3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9076"+
-            "\u0000\u0000\u98C6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DD5\u0000\u0000\u0000\u0000\u97D1"+
-            "\u0000\u0000\u9EB6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAC7\u0000\u0000\uA042\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9873"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FFC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DD7\u0000\u0000\u92FB\u8DD8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u944F\u0000\u8DD9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u896B\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97CE"+
-            "\u0000\u0000\u0000\uFAF3\uFDAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBAF\u92B7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DDA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5A"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFDAD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DDC\u9444\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DDD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97D5\u0000\u944A\u0000\u0000\u0000"+
-            "\u0000\u0000\u944D\u0000\u0000\u0000\u0000\u97CB"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DDE\u0000\u0000"+
-            "\u8DDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DE0\uFEF9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC0"+
-            "\uFCF9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u92B3\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDAF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DE1\u0000"+
-            "\u0000\u0000\u0000\u95D3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u89C1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD68\u0000\u0000"+
-            "\u9CB7\u0000\u0000\u8DE3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAC0\u8DE5\uFA64\u0000\u8947\u0000\u0000"+
-            "\u0000\u0000\u8DE4\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DE7\u8DE8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFDC7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDB0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9445\u97D6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC6\u9844"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DE9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE50\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDCC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DA7\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDCD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDCF\u0000\u0000\u0000"+
-            "\u0000\u95D2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DED\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFCBA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFDC5\u0000\uFDD2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CDC\u0000\u0000"+
-            "\u0000\u0000\u0000\u95CF\u0000\u0000\u8DEE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDD4\u0000\u0000\u0000\u0000"+
-            "\u0000\u96EC\u96EB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90B6\u0000"+
-            "\uFDC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98AB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96EE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DF4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDE0\u0000\u0000\u0000\u0000"+
-            "\u8DF6\u0000\u0000\u0000\u8DF7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FFA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97D0"+
-            "\u0000\u0000\u0000\u0000\u8BD2\u0000\u0000\u8DF8"+
-            "\u0000\u0000\u0000\u0000\u0000\u90D9\u0000\u0000"+
-            "\u0000\uFAF0\u0000\u0000\u0000\u0000\uFDE1\u8DF9"+
-            "\u0000\uFDE3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DFA\u0000\uFB63\u0000\u0000\u0000\u90A6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9970\u0000\u0000\u91EB\u0000\u9770\u986F\uFDE2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98F2\u0000\u9AFC\u896C\uFDFD\u0000\u0000"+
-            "\u995E\u0000\u0000\u0000\u95BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDE4\u0000\u0000\u0000"+
-            "\u91E6\u0000\u0000\u0000\u0000\uFDE5\uFDE6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDE7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9454\u0000\u0000\u0000\u99B8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97E9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9346\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9863\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95BC\u0000\uFDED\uFDF7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9870\u96F6\u8EA9\u0000\u0000"+
-            "\u0000\u0000\u0000\u9451\u0000\u0000\u8E43\u0000"+
-            "\u8B5A\u0000\u0000\u0000\u0000\uFDEE\u0000\u0000"+
-            "\u0000\u0000\uFDF0\u0000\u0000\u0000\u0000\uFDF4"+
-            "\u0000\u9BF5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u977E\u0000\u0000\u0000\u0000"+
-            "\u0000\u9BD5\u0000\u9AC3\u0000\u97C8\uA0DB\u91D0"+
-            "\u0000\u0000\u9FE4\u0000\u8FDD\u0000\u91E9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98E0\u0000\u0000\u0000\u92CA\u0000\u9857\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFDEB\u0000"+
-            "\u9B49\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9D76\u9EAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CCC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDEA\u0000\u0000\u8DF1"+
-            "\u0000\u0000\uFDFB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8E53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFACF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96F9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98BF\u9E49\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9BCA\u0000\u0000\u0000\u0000\uFDFE\u92DC"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE41\u91CC\u91E2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFE44\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BD3\u0000\u0000\uFE47\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9455\u0000\u0000\u0000\u0000\uFE4B\u0000\uFE4C"+
-            "\u0000\u0000\u0000\u0000\u8DBF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E78\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE51\u0000\u0000\u0000\u0000\u9456"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D61"+
-            "\u0000\u0000\u0000\u0000\u9457\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9966"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BD5\u0000\u0000"+
-            "\u0000\u0000\uA069\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA049\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA04C\u0000\u9E65\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98B5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE58\u0000\u9975\uFE53\uA065\u0000\uFE59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98B7\u98B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98BA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98BB\u0000\u0000\u0000\u0000\u0000\u0000\u9FBC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA04A\u0000\u0000\u9EC7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98AE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u92D6\u0000\u0000\u0000\uFAE1\u0000\u91D4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADE"+
-            "\u0000\u0000\uFE5B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFE5E\u0000\u0000\u0000\u0000\uFBD7\uFE5A"+
-            "\u94C5\u0000\u0000\u0000\u0000\uFACA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98C1\u975C\u0000\uFE74\u0000\u9773\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA46"+
-            "\u0000\u0000\u0000\u9764\u0000\u0000\u0000\uFE68"+
-            "\u0000\u964E\u0000\u9765\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89A1\u95FA\u0000\u92D4\uFE69\u0000\uFB45"+
-            "\u0000\u98C8\u0000\u0000\u90EF\u0000\u98C9\u98CA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946D"+
-            "\u94B7\uFE6C\u0000\u0000\u946B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92FC\u0000\u95EB\u0000\uFE73"+
-            "\u976E\uFE5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDBD\u0000\u0000\u92D5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFEB9\u0000\u0000"+
-            "\uFE71\u0000\u0000\u0000\u0000\uFBBB\u0000\u0000"+
-            "\u947A\u0000\u0000\u95FB\uFE77\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFE79\u0000\uFE75\u0000"+
-            "\u0000\u0000\u945D\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE7C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9344\u8EA6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92D3\u0000\u94B8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFC71\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u975E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEA7\u0000\u0000\u0000\u946A\u0000\u0000\u0000"+
-            "\u93E3\u0000\u0000\u98CF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0D9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0BF\uA04D\uA0B8\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0B7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFEA9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C3\u0000\u0000\u0000\u0000\uFEAB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9DF4\u896D\u0000\u0000"+
-            "\u0000\u0000\u0000\u9C7B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u98D2\u0000\u0000\u0000\u9FA9\u0000"+
-            "\u0000\u0000\uFEB2\u0000\u0000\uFEB1\u0000\u0000"+
-            "\u0000\u97D9\u0000\uA0C4\u0000\u9476\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9978\u0000\u0000\u0000\u0000\u0000\u0000\uFEB3"+
-            "\u0000\u0000\u0000\u0000\u0000\u98D3\uFEB4\u0000"+
-            "\u0000\u0000\u98D4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FB9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9471\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98D5\uFEB8\u0000"+
-            "\u0000\u0000\uC6D4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFEBA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9E5C\u0000\u0000\uFEBB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA044\u0000\u0000\u0000\u0000"+
-            "\u98D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98D8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static String innerIndex5=
-            "\u0000\u0000\uFEBC\u0000\u0000\u0000\u0000\u9FFE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEBD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DDD\u0000\u0000\u0000\u0000"+
-            "\u9EE1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98DA\u9DDF\uFEBF"+
-            "\u0000\uFEBE\u0000\u0000\u9EEB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E59\uA05C"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC0"+
-            "\u0000\u0000\u0000\u9477\u98DC\u0000\uFEC1\u0000"+
-            "\u0000\u0000\u98DE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFEC8\u0000\u0000\u0000\uFEC9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFECA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFECB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FC2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98C4\u0000\u94B0\u94B1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFED1\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0C1\u0000\uFED2\u0000"+
-            "\u0000\u0000\u0000\uA0CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFED3\u0000\u0000\u98E5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFED6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91E4\u0000\u0000\u0000\u0000\u8FC7"+
-            "\u94AE\u0000\u8A4F\u94B2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FD4\u0000\u0000\u0000\u0000"+
-            "\u98EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9DE0\u0000\u0000\u0000\u0000\u98EE\u0000"+
-            "\u0000\u0000\u0000\u95C4\u0000\uFCE8\u0000\u0000"+
-            "\u0000\u0000\u0000\u98EF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAD8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEDC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0AE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9D4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98F1\u0000\u0000\u0000\u98F3\u0000\u94C1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98F5\u0000\u0000\uFA4F\u96E2\u0000\u0000"+
-            "\u0000\u0000\u9450\u0000\u96A2\u0000\u0000\u98F6"+
-            "\u0000\u0000\u0000\u96E5\u0000\u0000\u0000\u0000"+
-            "\u0000\u98F7\u0000\uA046\u96E3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EE4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uF9D6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u94C3\u0000\u0000\u0000\u0000\u94C2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE1"+
-            "\u0000\uFEE9\u0000\u0000\u0000\u0000\u96E4\u0000"+
-            "\u89AC\u96DB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94C4\uFEE3\u0000\u0000\u0000\uFEE7"+
-            "\u9FFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93C9\u0000"+
-            "\u94E8\uFB56\u0000\u0000\u0000\u90C5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0A8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFEE5\u0000"+
-            "\u0000\u0000\u98FD\u98FB\uFEE8\u0000\u8EBF\u0000"+
-            "\u0000\u0000\u0000\u8BD8\uFEF7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8F68\u94C6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DEA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC69\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CDA\u0000"+
-            "\uFEF3\u0000\u0000\u9C72\u0000\u0000\uFEF0\u89C9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9941\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9942\u0000\u0000\u0000\uFEF5\u0000\u91D7"+
-            "\u0000\u0000\u0000\u0000\u0000\u94CC\u0000\u0000"+
-            "\u0000\uFEF8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u97A8\u0000\uFEFC\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDBF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEFE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u96D1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u94D5\u0000\u0000\u94D0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9944\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0B3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94CF\u0000\u0000\u0000\u9FFA\u0000"+
-            "\u0000\u0000\u0000\u91E5\u0000\u9C6A\u0000\u0000"+
-            "\u0000\u8E49\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E4C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E4D\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A73\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9947\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8E50\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8E4F\u9949\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E51\u8E52\u0000\u0000\u0000\u0000"+
-            "\u9AB2\u89A5\u0000\u0000\u0000\u0000\u0000\u994C"+
-            "\u0000\u0000\u0000\u9FF8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E56\u994D\u91CA\u8E57\u0000\u0000"+
-            "\u0000\u0000\u94E1\u0000\u0000\u0000\u0000\u9047"+
-            "\u0000\u8FD8\u8E58\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u94EB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8E5C\u9553\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FE5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F56"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u954F"+
-            "\u0000\u8E5E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u996A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9C64\u9CD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E5D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9950\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9951\u0000\u0000\u8E62"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9952\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E68\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E61\u9F59\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BB3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5D"+
-            "\u8E66\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E6E\u0000\u9F64\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9953\u0000\u0000\uFAB8\u0000\u0000"+
-            "\u0000\u0000\u0000\u9954\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F61\u0000\u8E72\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA06B\u0000\u0000\u0000\u0000\u9F40\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u94ED\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u94EE\u0000\u0000"+
-            "\u9FBD\u0000\u0000\u0000\u8E7B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9957\u94F7\u0000\u9F5F\u0000"+
-            "\u0000\u0000\u0000\u8E73\u0000\u0000\u9F62\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u94F6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9958\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8E75\uF9DB"+
-            "\u0000\u0000\u0000\u0000\u9072\u0000\u94F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u995A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0B0\u0000\u0000\u0000\u0000\u8E79"+
-            "\u0000\u8E78\u0000\u0000\u0000\u94F3\u0000\u0000"+
-            "\u0000\u0000\u0000\u98AF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0B2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8E7A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u995C\u0000\u0000"+
-            "\u0000\u0000\u0000\u8E7C\u0000\u8E7D\u0000\u0000"+
-            "\u0000\u8BD9\u0000\u0000\u89A2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9ED7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0B6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E42\u0000\u0000\u8EA4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EA7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9542"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u987D\u0000\u0000\u0000"+
-            "\u9755\u0000\u0000\u8EA8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89A3\u0000\u9960"+
-            "\u9962\u0000\u0000\u94FC\u9961\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u94FA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8EAE\u8EB2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8EB0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9963\u97AA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94FB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EBB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9876\u0000\u8EA1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8EB7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DA6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9EB0\u0000"+
-            "\u0000\u0000\u8EB8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D70"+
-            "\u0000\u0000\u0000\u0000\u896E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u896F\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8970\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8971"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8972"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8973"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8974\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8975"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8EBC\u8EBD\u0000\u0000\u0000\u0000\u0000\u8EBE"+
-            "\u0000\u9DD1\u0000\u0000\u0000\u0000\u94FD\u0000"+
-            "\u0000\u0000\u8BD7\u8BDA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FE9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDA8"+
-            "\u0000\u0000\u0000\u8AE7\u0000\u0000\u0000\u8EC2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EC4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9964\u0000"+
-            "\u0000\u0000\u0000\u0000\u9965\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u954E\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98B3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8ECB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BDF\u0000\u0000\u0000\u0000\u0000"+
-            "\u8ECE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8ECF\u0000\u0000"+
-            "\u9968\u0000\u0000\u0000\u0000\u9969\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u996B\u8ED1"+
-            "\u0000\u996C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8ED4\u8ED5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u996D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA0BE\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED6\uA0BC\uA0B5\u0000\u0000\uA0B4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89B5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EDD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5D\u9971"+
-            "\u0000\u0000\u0000\u0000\u89AE\u9DE8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9565\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9972\u0000\u0000\u8B5C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u89B1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA0C0\u0000\u0000\u0000\u8EDF"+
-            "\u0000\u9566\u0000\u0000\u9974\u0000\u9976\u0000"+
-            "\u0000\u0000\u9977\u0000\u9979\u0000\u0000\u9DDA"+
-            "\u0000\u0000\u8EE0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u935C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DE6\u0000\u8B5F\u0000\u0000\u9563"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9567\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u997C\u0000"+
-            "\u0000\u997D\u997E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8B5B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99A3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99A4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99A6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99A8\u0000\u0000"+
-            "\u0000\u0000\u8ABE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E61\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0C8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99AB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8EE8\u0000\uA0BA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFD77\u0000"+
-            "\u0000\u8EEE\u0000\u0000\u0000\u9EBF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u89C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99AC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u956B\u0000\u0000\u956C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99AF\u0000"+
-            "\u0000\u994A\u8976\u8F48\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99AE\u0000"+
-            "\u0000\u0000\u8EFB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B52\u0000\u0000\u0000"+
-            "\u0000\u0000\u99B0\u0000\u0000\u0000\u0000\u8977"+
-            "\u8F41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8F49\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFA4D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DE4"+
-            "\u0000\u0000\u0000\u0000\uFBE9\u9B54\u0000\u99B2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9E68\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8F4A\u0000\u8F42\u0000\u0000\u8F51\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9846\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99B4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8EF5\uFD55\u0000\u0000\u9CCD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8978"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8F53\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8F6F\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8E63\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8F56\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFE76\u0000\u0000\u0000\u0000\u9FC6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAAC\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F58\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9848\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99B7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9665\u0000\uFA6C\u0000"+
-            "\u9DE7\u0000\u0000\u0000\u9E62\u0000\u0000\u0000"+
-            "\u96CC\u8E67\u0000\u0000\uFC75\u0000\u987E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFDB9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97FC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98F9\u0000\u8F66\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u956E\u0000\u9245\u0000\u0000"+
-            "\u8F60\u0000\u0000\u0000\u9ED1\u0000\u0000\u0000"+
-            "\u0000\u0000\uFECD\u0000\u99B9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8F62\u974C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91C7"+
-            "\u955F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E6D\u8F71\u0000\u0000\u94CB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u95B1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AF2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96C3\u99BD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0CF\u0000\u0000\u0000\u8F6D\u0000"+
-            "\u0000\u99BE\u8EF4\u0000\u8F72\u95E4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99BF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9242\u0000\uFBA5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDB4\u8F77\u0000\u0000\u0000"+
-            "\u99C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFAB9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F40\uFA44\u0000\u0000\u0000"+
-            "\u0000\u0000\u99C2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8F5C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C4"+
-            "\u99C5\u0000\u0000\u8F7B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FA3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96CD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96C7\u0000\u0000\u0000";
+        protected CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    int inSize = 1;
+                    char c = src.get();
+                    int bb = encodeChar(c);
+                    if (bb == UNMAPPABLE_ENCODING) {
+                        if (Character.isSurrogate(c)) {
+                            int cp;
+                            if ((cp = sgp().parse(c, src)) < 0)
+                                return sgp.error();
+                            bb = encodeSupp(cp);
+                            if (bb == UNMAPPABLE_ENCODING)
+                                return CoderResult.unmappableForLength(2);
+                            inSize = 2;
+                        } else {
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                    if (bb > MAX_SINGLEBYTE) {  // DoubleByte
+                        if (dst.remaining() < 2)
+                            return CoderResult.OVERFLOW;
+                        dst.put((byte)(bb >> 8));
+                        dst.put((byte)(bb));
+                    } else {
+                        if (dst.remaining() < 1)
+                        return CoderResult.OVERFLOW;
+                        dst.put((byte)bb);
+                    }
+                    mark += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
 
-        private final static String innerIndex6=
-            "\u0000\u0000\u8FA5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFABB\u0000\u0000"+
-            "\u9570\u0000\u0000\u0000\u9368\u0000\u8F7E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8FAA\u0000\u0000\u0000\u0000\u0000\u0000\uA050"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90D3\u0000\u0000\u9556\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FB8\u0000\u0000\u0000"+
-            "\u0000\u0000\u99C8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FAF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99C9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9579\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9F49\u0000\u0000"+
-            "\u0000\u0000\u99CA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99CB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DD5\u8FB0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFA7A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5F\u0000"+
-            "\u0000\u0000\u0000\u99CD\uA0C9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9ADB\u0000\u0000"+
-            "\u0000\uA0C6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FB4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0C7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA043\u0000"+
-            "\u0000\u0000\u8FB5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FB2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA061\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E5E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FB6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FE8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CB2"+
-            "\u0000\u0000\u0000\u0000\u0000\u957C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FC7\u0000\u0000\u8FBB\u8FBC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FEC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FC0\u0000"+
-            "\u936A\u0000\u0000\u0000\u8BE4\u9C7C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95A1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEEC\u0000\u0000\u95A3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC1\u0000\u0000\u0000"+
-            "\uA052\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99D0\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC3\u8FC4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95A4"+
-            "\u0000\u0000\u0000\u0000\u0000\u8FC6\u0000\u9E60"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9D8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95A5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CB3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99D1"+
-            "\uFEF1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99D2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9CC2\u0000\u0000\u0000\u99D3"+
-            "\u0000\u0000\u0000\u0000\u0000\u95A7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95A9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95A6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98E2\u0000\u0000\u0000\u0000\u0000\u0000\u8FC9"+
-            "\u0000\uA0C2\u8FCA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99D4\u0000\u0000\uA0B9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9B58\u0000\u8FCD"+
-            "\u0000\uA0D4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FCE\u0000\u0000\u0000"+
-            "\u0000\u8BE5\u0000\u0000\u0000\u0000\u8979\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FD0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95B6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99D6\u0000\u95E5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99D7\u0000\u0000\u0000\u0000\u95B5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0CA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FFD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA058\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8FD6\u0000\u0000\u0000\u99D8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FD3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FE5\u0000\u0000\u0000\u0000\u0000\u8FE9"+
-            "\u0000\u0000\u0000\u0000\u99D9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u927C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9C45\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FDE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FDF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA04B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FE2"+
-            "\u0000\u0000\u0000\uA0CC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FE3\u8FE4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9BC4\u0000"+
-            "\u0000\u0000\u9BFC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u964C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9AF6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8FE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FE8\u0000\u0000\u0000\u0000"+
-            "\u8BE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u897A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u897B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99DA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FED\u0000\u0000\u0000\u95C0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0CB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E48\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99DB\u0000\u8FF3\u0000"+
-            "\u0000\u0000\u0000\u8FF9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95C1\u0000\uA04E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99DC\u0000\u0000\u0000\u0000\uA064"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FF7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89B0\uA048\u0000\u0000\u0000"+
-            "\u0000\u8FFB\u8FF6\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DDC\u0000\u0000\u0000\u99DD\u8BE8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92C1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FD6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0D2\u0000"+
-            "\u0000\u9040\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8AC4\u0000\u0000\u99E0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FF0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FF3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DBF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FF6\u0000\u95C8\u0000\u0000\u9E5A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99E3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8A4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FF1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8AA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99E6\u0000\u0000\u0000\u9FF7\u0000\u9FED"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8A5C\u0000"+
-            "\u9DAE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95C9"+
-            "\u0000\u0000\u0000\u0000\u0000\u9048\u0000\u0000"+
-            "\u99E8\u0000\u0000\u0000\u0000\u0000\u9049\u0000"+
-            "\u0000\u0000\u0000\u0000\u90B1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u904A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99EA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9BD1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99EB\u0000\u99EC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99ED\u0000\u0000"+
-            "\u0000\u0000\u99EE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u904C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u904D\u0000\u0000"+
-            "\u95CB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95CC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9F78\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u897C\u897D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u897E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u995D\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9B5A\u0000\u0000\u0000\u0000\u9050\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9054\u0000\uC6D6\u9AA8\u99EF"+
-            "\uFEEB\u9DA3\u9DA1\u9943\u9945\u0000\u9D7D\u0000"+
-            "\u0000\u99F0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99F1\u0000\u99F2\u0000\u0000\u0000"+
-            "\u9D60\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0A3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u905B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9EDB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9D79\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99F3\u0000\u0000\u0000\u9062"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9F55\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9BF9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9065\u0000\u0000\u96E0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98BE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9068\u0000\u0000\u0000\u0000\u0000\u906C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u95D8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u906A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FB2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FAE\u0000\u0000\u9FB0\u0000\u89AD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u906E"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E71\u0000\u0000\u0000\u0000\u0000\u9E4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FDC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89AB\u0000\u9FB8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9070\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8B63\u0000"+
-            "\u0000\u0000\u0000\u95DC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9071\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC5E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8949"+
-            "\u0000\u0000\u0000\u0000\u0000\u965B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94A6\u0000\u0000\u0000\u8FD5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E73\u0000\u0000\u0000\u0000\u0000\u9075\u0000"+
-            "\u0000\u0000\u0000\u99F7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99F9\u0000\u9663\u95B9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u94D4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCFA\u0000\u0000\u0000"+
-            "\u0000\u9077\u0000\u0000\u90AB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9D4D\u0000\u0000"+
-            "\u99FA\u0000\u0000\u0000\u0000\u92E3\u0000\u97BB"+
-            "\u0000\u0000\u9078\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99FB\u0000\u0000\u97E0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96DC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9CA8\u0000\u0000\u9772\u0000\u0000\u0000"+
-            "\u0000\u9440\u0000\u0000\u0000\u0000\u0000\u92F2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99FD\u0000"+
-            "\u0000\u99FC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uF9D7\u964A\u0000\u0000\u0000\u96D8\u99FE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u904B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFA41\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A40\u0000\u975B\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A41\u91DD\u0000\u0000\u0000"+
-            "\u0000\u0000\u93FC\u9A42\u9A43\u0000\u9659\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A44\u0000\u0000"+
-            "\u0000\u0000\u0000\u9051\u0000\u0000\u0000\u94BF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90A2\u0000\u0000\u0000"+
-            "\u9CAB\u9776\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC55\uFE45\u94A8\u9A45\uFA4B\u9DE1\u0000\u0000"+
-            "\u96D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9774"+
-            "\u0000\u0000\uFDF5\u0000\u0000\u0000\u92E5\u0000"+
-            "\u9645\u91DA\u0000\u90A3\u0000\u0000\uA05F\u0000"+
-            "\u0000\u0000\u0000\u90AF\u97BF\u0000\u0000\u0000"+
-            "\u914C\u0000\u0000\u0000\u0000\u967A\u0000\u0000"+
-            "\u0000\u91DE\u0000\u0000\u9A46\uFEB0\u9779\u946C"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9858\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9266\u0000\u0000\u0000"+
-            "\u93FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A47\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9749\u0000\u0000\u9748\u0000\u934A\u0000\u9CE2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9264\u0000"+
-            "\u0000\u0000\u0000\u91DF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB79\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96D7\u0000\u0000\u0000\u0000"+
-            "\u9343\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFDCB\uFE7A\u0000\u91DB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97AF\u0000\u0000\u95DD\u0000\u0000\u0000"+
-            "\u9348\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A4B"+
-            "\u0000\u0000\u0000\uFC45\u0000\u9A4D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u91BC\u90E2\u90B4\u95E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A4E\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A4F\u0000"+
-            "\u0000\u0000\uFE40\uFE43\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96DD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A51\u0000\u0000\u0000"+
-            "\u96A7\u0000\u0000\u90B0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9C4E\u0000\u9443"+
-            "\u0000\u0000\u0000\u0000\u8EBA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A52\u0000\uFCC1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BE9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CAF"+
-            "\u0000\u0000\u8BFD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9ABC\u0000\u9AB8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9AA7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A53\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D74"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BEA\u0000\u0000\u0000\u0000\u0000\u0000\u8BEB"+
-            "\u0000\u0000\u0000\u0000\u0000\u90B2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95E9\u95E8"+
-            "\u0000\u95E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90B5\u0000\u9A54\u0000\u0000\u0000\u90B3\u95E7"+
-            "\u0000\u0000\u8B50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A56\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
+        protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return encodeArrayLoop(src, dst);
+            else
+                return encodeBufferLoop(src, dst);
+        }
+
+        static char[] C2B_UNMAPPABLE = new char[0x100];
+        static {
+            Arrays.fill(C2B_UNMAPPABLE, (char)UNMAPPABLE_ENCODING);
+        }
 
-        private final static String innerIndex7=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BFB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A57\u0000\u0000\u0000\u0000"+
-            "\uA0AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FA6\u0000\u0000\u0000\u99CC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9C59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99B5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90BE\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FAF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95F2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90BF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90C1\u0000\uFEE4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90C4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90C7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92E4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F52\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90DB\u0000\u0000\u0000\u0000"+
-            "\u0000\uA066\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90D2\u0000\u0000\u0000\u0000\u90D4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9A5B\u95FD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BC4\u0000\u0000\u0000\u0000\u0000\u90DE"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CE4\u0000\u90E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E46\u0000\u0000"+
-            "\u0000\u9651\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB58"+
-            "\u0000\u90E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9650\u0000\u0000\u0000\u90E7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90E8\u9A5D\u0000\u9F7A\u0000\u0000\u0000"+
-            "\u9B5C\u0000\u9F7C\u0000\u0000\uFC52\u90E9\u0000"+
-            "\u90EA\u0000\u9A5E\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90EB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90EC\u0000\u0000\u0000\u0000\u0000\u8BEE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90EE\u0000"+
-            "\u0000\u0000\u91C6\u0000\u0000\u90F2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCBC\u8A74\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9657"+
-            "\u0000\u0000\u0000\u9CEF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FDF\u0000"+
-            "\u0000\u0000\u0000\u90F7\u90F6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B5E"+
-            "\u0000\u0000\u0000\u90F8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90F9\u0000"+
-            "\u0000\u0000\u0000\u0000\uFA6A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BEF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FE0\u0000\u0000\u9142"+
-            "\u0000\u9A62\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9569\u0000\u0000\u0000\u9144"+
-            "\u9143\u0000\u9141\u0000\u0000\u0000\u8BF0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9660\u0000\u8BF1\u0000"+
-            "\u99F6\u9149\u0000\u0000\u0000\u0000\u914A\u0000"+
-            "\u0000\u0000\u0000\u0000\u914B\u0000\u0000\u0000"+
-            "\u0000\u9A64\u0000\u0000\u0000\u8ABF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A66\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A67\u0000\u0000\u9A69\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A6A"+
-            "\u9652\u914D\u0000\u9666\u0000\u0000\u0000\u0000"+
-            "\u9F7B\u0000\u9A6B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA06C\u0000\u0000\u9667\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A6C\u0000\u0000"+
-            "\u0000\u0000\u9A6D\u8BF2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u966A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u966C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91C4\u0000\u0000\u0000\u9677\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99F4\u9A6F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FAB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EC1\u0000\u0000\u0000\u0000\u9555\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9152\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9153\u0000\u0000\u0000"+
-            "\u9155\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u955D"+
-            "\u0000\u9671\u0000\u0000\u0000\u0000\u9C6D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9673"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9154\u9A71\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9156\u0000\u0000\u0000\u966D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9557\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89C6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89C7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8A6A\u0000\u0000\u0000\u8B57\u0000"+
-            "\u0000\u0000\u9FE1\u0000\u0000\u9B5F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA05D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u915B\u0000\u915C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u915E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5C"+
-            "\u0000\u0000\u9F57\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F65\u0000\u0000\u0000\u0000\u0000\u9A72"+
-            "\u0000\u0000\u0000\u0000\u9160\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F5E\u0000\u0000\u9161\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9164\u0000\u0000\u0000"+
-            "\u0000\u9F41\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9169\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9168\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A74\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B2"+
-            "\u0000\u9A75\u0000\uFDA5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EE9\u0000\u8BBA\u916D\uA060"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FDE"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FC3\u0000\u96B5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA067\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A76\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95D5\u0000\u0000\u0000\u9ECA\u0000\u0000"+
-            "\u0000\u9A77\u0000\u0000\u9A78\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9170"+
-            "\u0000\u0000\u916F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FA3\u0000\u9171\u0000\u0000\u0000"+
-            "\u96B1\u0000\u0000\u0000\u0000\u9F63\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F67\u0000\u0000\u0000\u8BB9"+
-            "\u9A7A\u0000\u0000\u0000\u0000\u0000\u8B56\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9ADA"+
-            "\u0000\u0000\u0000\u0000\u0000\u96B0\u0000\u0000"+
-            "\u0000\u0000\u9A7E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DDE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AD"+
-            "\u0000\u0000\u0000\u96AE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EA1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96AF\u8BF4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FA4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96F4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u96B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAA1\u0000\u0000\u0000"+
-            "\u0000\u91A7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA05E\u0000\u0000\u0000"+
-            "\u0000\u9A7D\u0000\u0000\u0000\u0000\u8948\u0000"+
-            "\u9EB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DDB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95BF\u8A73\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EFE\u0000\u917A\u0000"+
-            "\u0000\u0000\u0000\u917B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9AA3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96C2\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F77\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AA4\u0000\u0000"+
-            "\u9AA5\u0000\u0000\u0000\u91A1\u0000\u0000\u0000"+
-            "\u0000\u89B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9173\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AA6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u89BD\u0000\u89B9\u0000\u917D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96BB\u0000\u0000\u0000\u9FF2\u0000\u0000\u8BF5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9AA9\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F54\u0000\u0000\u9FE3\u9EED\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91AA\u0000\u0000\u0000\u0000\u91AB\uA070\u0000"+
-            "\u9F6D\u0000\u0000\u0000\u0000\u0000\u91AC\u0000"+
-            "\u0000\u0000\u91AD\u0000\u0000\u0000\uA0FD\u0000"+
-            "\u9FE2\u0000\u91AF\u9E41\u9AAA\u0000\u0000\u91B0"+
-            "\u0000\u9AAB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AAC\u0000\u9A4A"+
-            "\u0000\u91B2\u0000\u0000\u8BF6\u0000\u9AAD\u89B6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9AAF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9AB0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9AB1\u0000\u0000\u0000\u0000\u0000\u9AA1\u0000"+
-            "\u0000\u0000\u91B9\u0000\u0000\u0000\u0000\u0000"+
-            "\u91BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91BE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA041\u8BB7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u91C0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AB3\u91C3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0FC\u0000\u0000\u9FEE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F69\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91C8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u91C9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DE6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u91CB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C8\u0000\u0000\u8BF8\u0000\u0000\u8DAA"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FDD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFA40\u0000\uFA42\uFA43\u0000\uFA45\u0000\u0000"+
-            "\uFA48\uFA49\uFA4A\u0000\uFA4C\u0000\uFA4E\u0000"+
-            "\u0000\u0000\uFA52\uFA53\uFA54\uFA55\uFA56\u0000"+
-            "\uFA58\u0000\uFA5A\uFA5B\uFA5C\uFA5D\uFA5E\u0000"+
-            "\uFA60\u0000\uFA62\uFA63\u0000\uFA65\u0000\u0000"+
-            "\uFA68\u0000\u0000\uFA6B\u0000\uFA6D\uFA6E\u0000"+
-            "\uFA70\u0000\uFA72\uFA73\uFA74\uFA75\uFA76\uFA77"+
-            "\uFA78\u0000\u0000\uFA7B\uFA7C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAA5\u0000\uFAA7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFABC\u0000\uFABE\u0000\u0000\uFAC1"+
-            "\uFAC2\uFAC3\u0000\u0000\uFAC6\u0000\uFAC8\u0000"+
-            "\u0000\u0000\uFACC\uFACD\uFACE\u0000\uFAD0\u0000"+
-            "\u0000\uFAD3\u0000\u0000\uFAD6\uFAD7\u0000\u0000"+
-            "\uFADA\u0000\u0000\u0000\u0000\uFADF\uFAE0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE8\uFAE9"+
-            "\u0000\uFAEB\uFAEC\u0000\uFAEE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAF5\uFAF6\u0000\u0000\u0000"+
-            "\uFAFA\uFAFB\uFAFC\uFAFD\uFAFE\uFB40\uFB41\u0000"+
-            "\uFB43\u0000\u0000\u0000\u0000\u0000\uFB49\uFB4A"+
-            "\uFB4B\uFB4C\u0000\uFB4E\u0000\u0000\uFB51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFB5D\uFB5E\uFB5F\u0000\uFB61\u0000"+
-            "\u0000\u0000\uFB65\uFB66\u0000\uFB68\u0000\uFB6A"+
-            "\uFB6B\u0000\uFB6D\u0000\u0000\uFB70\u0000\u0000"+
-            "\uFB73\u0000\u0000\u0000\uFB77\uFB78\u0000\uFB7A"+
-            "\u0000\u0000\uFB7D\u0000\uFBA1\u0000\u0000\uFBA4"+
-            "\u0000\u0000\uFBA7\uFBA8\uFBA9\uFBAA\u0000\uFBAC"+
-            "\uFBAD\uFBAE\u0000\uFBB0\uFBB1\u0000\uFBB3\u0000"+
-            "\u0000\uFBB6\uFBB7\u0000\uFBB9\u0000\u0000\u0000"+
-            "\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBC8\uFBC9\uFBCA\uFBCB\u0000"+
-            "\u0000\uFBCE\uFBCF\uFBD0\u0000\u0000\uFBD3\u0000"+
-            "\uFBD5\u0000\u0000\u0000\uFBD9\uFBDA\u0000\uFBDC"+
-            "\u0000\u0000\u0000\u0000\uFBE1\uFBE2\u0000\u0000"+
-            "\u0000\uFBE6\u0000\u0000\u0000\uFBEA\uFBEB\uFBEC"+
-            "\uFBED\u0000\uFBEF\uFBF0\u0000\u0000\u0000\u0000"+
-            "\uFBF5\uFBF6\u0000\u0000\u0000\u0000\uFBFB\u0000"+
-            "\u0000\uFBFE\u0000\u0000\uFC42\u0000\u0000\u0000"+
-            "\u0000\uFC47\uFC48\uFC49\uFC4A\uFC4B\u0000\uFC4D"+
-            "\uFC4E\u0000\uFC50\u0000\u0000\uFC53\u0000\u0000"+
-            "\uFC56\u0000\u0000\uFC59\uFC5A\uFC5B\uFC5C\uFC5D"+
-            "\u0000\uFC5F\uFC60\u0000\u0000\uFC63\uFC64\uFC65"+
-            "\uFC66\u0000\uFC68\u0000\uFC6A\u0000\u0000\u0000"+
-            "\uFC6E\uFC6F\uFC70\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC77\uFC78\u0000\u0000\uFC7B\u0000\u0000"+
-            "\uFC7E\uFCA1\u0000\uFCA3\uFCA4\u0000\uFCA6\uFCA7"+
-            "\uFCA8\u0000\u0000\u0000\u0000\uFCAD\u0000\uFCAF"+
-            "\u0000\uFCB1\u0000\uFCB3\uFCB4\u0000\u0000\uFCB7"+
-            "\uFCB8\u0000\u0000\uFCBB\u0000\uFCBD\uFCBE\u0000"+
-            "\u0000\u0000\uFCC2\u0000\uFCC4\u0000\u0000\uFCC7"+
-            "\uFCC8\u0000\u0000\u0000\uFCCC\u0000\uFCCE\uFCCF"+
-            "\u0000\uFCD1\uFCD2\u0000\u0000\u0000\uFCD6\u0000"+
-            "\uFCD8\uFCD9\u0000\uFCDB\uFCDC\u0000\uFCDE\u0000"+
-            "\uFCE0\u0000\u0000\uFCE3\uFCE4\uFCE5\uFCE6\uFCE7"+
-            "\u0000\uFCE9\u0000\u0000\uFCEC\uFCED\uFCEE\u0000"+
-            "\uFCF0\u0000\u0000\u0000\uFCF4\uFCF5\u0000\uFCF7"+
-            "\u0000\u0000\u0000\u0000\uFCFC\uFCFD\u0000\uFD40"+
-            "\u0000\u0000\uFD43\u0000\u0000\uFD46\u0000\u0000"+
-            "\uFD49\uFD4A\uFD4B\uFD4C\u0000\u0000\uFD4F\uFD50"+
-            "\u0000\u0000\uFD53\uFD54\u0000\u0000\u0000\uFD58"+
-            "\uFD59\u0000\uFD5B\u0000\uFD5D\u0000\u0000\uFD60"+
-            "\uFD61\u0000\uFD63\u0000\u0000\u0000\uFD67\u0000"+
-            "\uFD69\uFD6A\uFD6B\uFD6C\u0000\uFD6E\u0000\uFD70"+
-            "\u0000\u0000\uFD73\uFD74\uFD75\u0000\u0000\u0000"+
-            "\uFD79\uFD7A\uFD7B\uFD7C\uFD7D\uFD7E\uFDA1\uFDA2"+
-            "\uFDA3\uFDA4\u0000\uFDA6\uFDA7\u0000\u0000\uFDAA"+
-            "\uFDAB\uFDAC\u0000\u0000\u0000\u0000\uFDB1\uFDB2"+
-            "\uFDB3\u0000\uFDB5\u0000\u0000\u0000\u0000\uFDBA"+
-            "\u0000\uFDBC\u0000\uFDBE\u0000\u0000\u0000\uFDC2"+
-            "\u0000\uFDC4\u0000\uFDC6\u0000\uFDC8\uFDC9\uFDCA"+
-            "\u0000\u0000\u0000\uFDCE\u0000\uFDD0\uFDD1\u0000"+
-            "\uFDD3\u0000\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA"+
-            "\u0000\uFDDC\uFDDD\uFDDE\uFDDF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFDE8\uFDE9\u0000"+
-            "\u0000\uFDEC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFDF3\u0000\u0000\uFDF6\u0000\uFDF8\uFDF9\uFDFA"+
-            "\u0000\uFDFC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE46\u0000\u0000\uFE49\u0000\u0000"+
-            "\u0000\uFE4D\uFE4E\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE54\uFE55\uFE56\uFE57\u0000\u0000\u0000\u0000"+
-            "\uFE5C\uFE5D\u0000\u0000\uFE60\uFE61\uFE62\u0000"+
-            "\uFE64\uFE65\uFE66\uFE67\u0000\u0000\u0000\uFE6B"+
-            "\u0000\uFE6D\uFE6E\u0000\uFE70\u0000\uFE72\u0000"+
-            "\u0000\u0000\u0000\u0000\uFE78\u0000\u0000\u0000"+
-            "\u0000\uFE7D\uFE7E\uFEA1\uFEA2\uFEA3\u0000\uFEA5"+
-            "\uFEA6\u0000\uFEA8\u0000\u0000\u0000\uFEAC\uFEAD"+
-            "\u0000\uFEAF\u0000\u0000\u0000\u0000\u0000\uFEB5"+
-            "\uFEB6\uFEB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEC2\u0000\u0000\uFEC5"+
-            "\uFEC6\uFEC7\u0000\u0000\u0000\u0000\uFECC\u0000"+
-            "\uFECE\uFECF\uFED0\u0000\u0000\u0000\u0000\uFED5"+
-            "\u0000\uFED7\u0000\uFED9\uFEDA\uFEDB\u0000\u0000"+
-            "\uFEDE\uFEDF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEE6\u0000\u0000\u0000\uFEEA\u0000\u0000\uFEED"+
-            "\uFEEE\uFEEF\u0000\u0000\u0000\u0000\uFEF4\u0000"+
-            "\uFEF6\u0000\u0000\u0000\uFEFA\uFEFB\u0000\uFEFD"+
-            "\u0000\u8E40\u0000\u8E42\u0000\u8E44\u8E45\u0000"+
-            "\u8E47\u0000\u0000\u8E4A\u8E4B\u0000\u0000\u8E4E"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E54\u8E55\u0000"+
-            "\u0000\u0000\u8E59\u0000\u8E5B\u0000\u0000\u0000"+
-            "\u8E5F\u8E60\u0000\u0000\u0000\u8E64\u8E65\u0000"+
-            "\u0000\u0000\u0000\u8E6A\u8E6B\u8E6C\u0000\u0000"+
-            "\u0000\u0000\u8E71\u0000\u0000\u8E74\u0000\u0000"+
-            "\u8E77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EA2\u8EA3\u0000\u8EA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAC\u8EAD\u0000\u8EAF\u0000"+
-            "\u8EB1\u0000\u8EB3\u0000\u8EB5\u8EB6\u0000\u0000"+
-            "\u8EB9\u0000\u0000\u0000\u0000\u0000\u0000\u8EC0"+
-            "\u0000\u0000\u8EC3\u0000\u8EC5\u8EC6\u8EC7\u8EC8"+
-            "\u8EC9\u8ECA\u0000\u8ECC\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED2\u8ED3\u0000\u0000\u0000\u8ED7\u8ED8"+
-            "\u8ED9\u8EDA\u8EDB\u0000\u0000\u8EDE\u0000\u0000"+
-            "\u0000\u8EE2\u0000\u8EE4\u8EE5\u0000\u8EE7\u0000"+
-            "\u8EE9\u0000\u8EEB\u8EEC\u8EED\u0000\u8EEF\u8EF0"+
-            "\u8EF1\u0000\u8EF3\u0000\u0000\u8EF6\u8EF7\u8EF8"+
-            "\u8EF9\u8EFA\u0000\u0000\u8EFD\u8EFE\u0000\u0000"+
-            "\u0000\u8F43\u8F44\u8F45\u8F46\u8F47\u0000\u0000"+
-            "\u0000\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50\u0000"+
-            "\u0000\u0000\u8F54\u8F55\u0000\u0000\u0000\u8F59"+
-            "\u8F5A\u0000\u0000\u8F5D\u8F5E\u8F5F\u0000\u8F61"+
-            "\u0000\u8F63\u8F64\u0000\u0000\u8F67\u0000\u0000"+
-            "\u8F6A\u8F6B\u8F6C\u0000\u0000\u0000\u8F70\u0000"+
-            "\u0000\u8F73\u8F74\u8F75\u8F76\u0000\u0000\u8F79"+
-            "\u8F7A\u0000\u8F7C\u0000\u0000\u8FA1\u8FA2\u0000"+
-            "\u8FA4\u0000\u8FA6\u8FA7\u8FA8\u8FA9\u0000\u8FAB"+
-            "\u8FAC\u0000\u8FAE\u0000\u0000\u8FB1\u0000\u8FB3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA\u0000"+
-            "\u0000\u8FBD\u8FBE\u8FBF\u0000\u0000\u8FC2\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FCF\u0000\u8FD1\u8FD2\u0000"+
-            "\u0000\u0000\u0000\u8FD7\u0000\u8FD9\u8FDA\u8FDB"+
-            "\u8FDC\u0000\u0000\u0000\u8FE0\u8FE1\u0000\u0000"+
-            "\u0000\u0000\u8FE6\u0000\u0000\u0000\u8FEA\u8FEB"+
-            "\u0000\u0000\u8FEE\u8FEF\u8FF0\u8FF1\u8FF2\u0000"+
-            "\u8FF4\u8FF5\u0000\u0000\u8FF8\u0000\u0000\u0000"+
-            "\u8FFC\u8FFD\u0000\u0000\u9041\u9042\u9043\u9044"+
-            "\u9045\u9046\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u904E\u904F\u0000\u0000\u9052\u9053\u0000"+
-            "\u9055\u9056\u9057\u9058\u0000\u905A\u0000\u905C"+
-            "\u905D\u905E\u905F\u9060\u9061\u0000\u9063\u9064"+
-            "\u0000\u9066\u9067\u0000\u9069\u0000\u906B\u0000"+
-            "\u0000\u0000\u906F\u0000\u0000\u0000\u9073\u9074"+
-            "\u0000\u0000\u0000\u0000\u9079\u0000\u907B\u907C"+
-            "\u907D\u907E\u90A1\u0000\u0000\u90A4\u90A5\u0000"+
-            "\u0000\u90A8\u90A9\u90AA\u0000\u90AC\u90AD\u90AE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90B7\u90B8\u90B9\u90BA\u90BB\u90BC\u0000\u0000"+
-            "\u0000\u90C0\u0000\u90C2\u0000\u0000\u0000\u90C6"+
-            "\u0000\u0000\u90C9\u90CA\u90CB\u90CC\u90CD\u90CE"+
-            "\u90CF\u90D0\u90D1\u0000\u0000\u0000\u90D5\u90D6"+
-            "\u90D7\u90D8\u0000\u0000\u0000\u0000\u90DD\u0000"+
-            "\u0000\u90E0\u0000\u0000\u0000\u90E4\u90E5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90ED\u0000"+
-            "\u0000\u90F0\u0000\u0000\u90F3\u90F4\u90F5\u0000"+
-            "\u0000\u0000\u0000\u90FA\u90FB\u90FC\u90FD\u90FE"+
-            "\u9140\u0000\u0000\u0000\u0000\u9145\u9146\u9147"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u914E\u914F"+
-            "\u9150\u9151\u0000\u0000\u0000\u0000\u0000\u9157"+
-            "\u9158\u9159\u915A\u0000\u0000\u915D\u0000\u915F"+
-            "\u0000\u0000\u9162\u0000\u0000\u9165\u9166\u9167"+
-            "\u0000\u0000\u916A\u0000\u916C\u0000\u916E\u0000"+
-            "\u0000\u0000\u9172\u0000\u9174\u9175\u9176\u9177"+
-            "\u9178\u9179\u0000\u0000\u917C\u0000\u0000\u0000"+
-            "\u91A2\u91A3\u91A4\u91A5\u91A6\u0000\u91A8\u91A9"+
-            "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u91B1"+
-            "\u0000\u91B3\u91B4\u91B5\u0000\u91B7\u91B8\u0000"+
-            "\u0000\u91BB\u0000\u91BD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u91C5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u91CD\u91CE\u91CF\u0000\u91D1"+
-            "\u91D2\u91D3\u0000\u91D5\u91D6\u0000\u91D8\u91D9"+
-            "\u0000\u0000\u91DC\u0000\u0000\u0000\u91E0\u91E1"+
-            "\u0000\u91E3\u0000\u0000\u0000\u91E7\u91E8\u0000"+
-            "\u91EA\u0000\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1"+
-            "\u91F2\u91F3\u91F4\u91F5\u91F6\u91F7\u91F8\u91F9"+
-            "\u91FA\u0000\u91FC\u91FD\u91FE\u9240\u9241\u0000"+
-            "\u9243\u0000\u0000\u9246\u9247\u9248\u9249\u924A"+
-            "\u924B\u924C\u924D\u924E\u924F\u0000\u9251\u9252"+
-            "\u9253\u0000\u9255\u0000\u9257\u9258\u9259\u925A"+
-            "\u925B\u925C\u0000\u0000\u925F\u0000\u9261\u9262"+
-            "\u9263\u0000\u9265\u0000\u0000\u0000\u9269\u926A"+
-            "\u0000\u926C\u926D\u0000\u0000\u9270\u0000\u9272"+
-            "\u9273\u9274\u9275\u9276\u9277\u0000\u9279\u927A"+
-            "\u927B\u0000\u927D\u0000\u0000\u0000\u0000\u0000"+
-            "\u92A5\u92A6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92B4"+
-            "\u92B5\u92B6\u0000\u92B8\u92B9\u0000\u0000\u92BC"+
-            "\u92BD\u92BE\u92BF\u92C0\u0000\u92C2\u92C3\u0000"+
-            "\u0000\u92C6\u0000\u0000\u92C9\u0000\u92CB\u92CC"+
-            "\u92CD\u92CE\u0000\u92D0\u0000\u92D2\u0000\u0000"+
-            "\u0000\u0000\u92D7\u92D8\u92D9\u0000\u92DB\u0000";
-
-        private final static String innerIndex8=
-            "\u92DD\u0000\u92DF\u0000\u92E1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92E9\u0000\u0000\u92EC"+
-            "\u92ED\u92EE\u92EF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92F6\u92F7\u92F8\u92F9\u92FA\u0000\u0000"+
-            "\u0000\u92FE\u0000\u9341\u9342\u0000\u0000\u9345"+
-            "\u0000\u9347\u0000\u9349\u0000\u934B\u0000\u0000"+
-            "\u0000\u0000\u9350\u9351\u9352\u0000\u0000\u9355"+
-            "\u9356\u9357\u9358\u9359\u935A\u935B\u0000\u935D"+
-            "\u935E\u935F\u9360\u0000\u0000\u9363\u9364\u0000"+
-            "\u9366\u0000\u0000\u9369\u0000\u0000\u936C\u936D"+
-            "\u0000\u936F\u9370\u9371\u9372\u9373\u0000\u9375"+
-            "\u9376\u9377\u0000\u0000\u0000\u937B\u937C\u937D"+
-            "\u937E\u0000\u93A2\u93A3\u93A4\u93A5\u93A6\u93A7"+
-            "\u93A8\u0000\u93AA\u0000\u0000\u0000\u93AE\u93AF"+
-            "\u0000\u93B1\u0000\u0000\u0000\u93B5\u93B6\u93B7"+
-            "\u93B8\u93B9\u0000\u93BB\u93BC\u93BD\u0000\u93BF"+
-            "\u93C0\u93C1\u93C2\u93C3\u93C4\u93C5\u93C6\u93C7"+
-            "\u93C8\u0000\u93CA\u93CB\u93CC\u93CD\u93CE\u93CF"+
-            "\u93D0\u0000\u93D2\u0000\u93D4\u0000\u93D6\u93D7"+
-            "\u0000\u93D9\u93DA\u0000\u93DC\u93DD\u93DE\u93DF"+
-            "\u93E0\u93E1\u93E2\u0000\u93E4\u0000\u93E6\u0000"+
-            "\u0000\u93E9\u0000\u93EB\u93EC\u93ED\u0000\u0000"+
-            "\u0000\u0000\u93F2\u0000\u0000\u0000\u93F6\u0000"+
-            "\u0000\u93F9\u93FA\u0000\u0000\u93FD\u93FE\u0000"+
-            "\u9441\u9442\u0000\u0000\u0000\u9446\u0000\u9448"+
-            "\u9449\u0000\u944B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9452\u9453\u0000\u0000\u0000\u0000\u9458"+
-            "\u9459\u0000\u945B\u945C\u0000\u945E\u945F\u9460"+
-            "\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u0000"+
-            "\u9469\u0000\u0000\u0000\u0000\u946E\u946F\u9470"+
-            "\u0000\u9472\u9473\u9474\u9475\u0000\u0000\u9478"+
-            "\u9479\u0000\u947B\u947C\u947D\u947E\u94A1\u94A2"+
-            "\u94A3\u94A4\u94A5\u0000\u0000\u0000\u94A9\u94AA"+
-            "\u0000\u94AC\u94AD\u0000\u94AF\u0000\u0000\u0000"+
-            "\u94B3\u94B4\u94B5\u94B6\u0000\u0000\u94B9\u94BA"+
-            "\u94BB\u94BC\u94BD\u94BE\u0000\u94C0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u94C7\u94C8\u94C9\u0000"+
-            "\u0000\u0000\u0000\u94CE\u0000\u0000\u94D1\u94D2"+
-            "\u94D3\u0000\u0000\u94D6\u94D7\u94D8\u94D9\u94DA"+
-            "\u94DB\u0000\u94DD\u94DE\u94DF\u94E0\u0000\u0000"+
-            "\u94E3\u94E4\u94E5\u0000\u94E7\u0000\u0000\u94EA"+
-            "\u0000\u94EC\u0000\u0000\u94EF\u94F0\u94F1\u94F2"+
-            "\u0000\u94F4\u94F5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u94FE\u9540\u9541\u0000\u9543"+
-            "\u9544\u9545\u9546\u0000\u9548\u9549\u0000\u954B"+
-            "\u954C\u954D\u0000\u0000\u9550\u9551\u9552\u0000"+
-            "\u9554\u0000\u0000\u0000\u0000\u9559\u955A\u955B"+
-            "\u955C\u0000\u955E\u0000\u9560\u9561\u9562\u0000"+
-            "\u9564\u0000\u0000\u0000\u9568\u0000\u956A\u0000"+
-            "\u0000\u956D\u0000\u956F\u0000\u9571\u0000\u9573"+
-            "\u9574\u0000\u9576\u0000\u9578\u0000\u957A\u957B"+
-            "\u0000\u957D\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95A8\u0000\u95AA\u95AB\u95AC\u95AD"+
-            "\u95AE\u95AF\u95B0\u0000\u95B2\u95B3\u95B4\u0000"+
-            "\u0000\u95B7\u0000\u0000\u95BA\u0000\u0000\u0000"+
-            "\u95BE\u0000\u0000\u0000\u95C2\u0000\u0000\u0000"+
-            "\u95C6\u95C7\u0000\u0000\u95CA\u0000\u0000\u95CD"+
-            "\u0000\u0000\u95D0\u95D1\u0000\u0000\u95D4\u0000"+
-            "\u95D6\u95D7\u0000\u0000\u0000\u95DB\u0000\u0000"+
-            "\u95DE\u95DF\u95E0\u0000\u95E2\u95E3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95EA\u0000\u95EC\u95ED"+
-            "\u95EE\u95EF\u95F0\u95F1\u0000\u95F3\u95F4\u95F5"+
-            "\u95F6\u95F7\u95F8\u95F9\u0000\u0000\u95FC\u0000"+
-            "\u95FE\u0000\u9641\u9642\u9643\u0000\u0000\u9646"+
-            "\u9647\u9648\u9649\u0000\u0000\u0000\u964D\u0000"+
-            "\u964F\u0000\u0000\u0000\u9653\u0000\u9655\u9656"+
-            "\u0000\u9658\u0000\u965A\u0000\u965C\u965D\u965E"+
-            "\u965F\u0000\u9661\u9662\u0000\u9664\u0000\u0000"+
-            "\u0000\u9668\u9669\u0000\u966B\u0000\u0000\u966E"+
-            "\u966F\u0000\u0000\u0000\u0000\u9674\u9675\u9676"+
-            "\u0000\u9678\u9679\u0000\u0000\u967C\u0000\u967E"+
-            "\u96A1\u0000\u96A3\u96A4\u0000\u96A6\u0000\u96A8"+
-            "\u0000\u96AA\u96AB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96B4\u0000\u96B6\u96B7\u0000"+
-            "\u96B9\u96BA\u0000\u96BC\u0000\u96BE\u96BF\u96C0"+
-            "\u96C1\u0000\u0000\u96C4\u96C5\u96C6\u0000\u96C8"+
-            "\u96C9\u96CA\u96CB\u0000\u0000\u96CE\u96CF\u96D0"+
-            "\u0000\u96D2\u96D3\u96D4\u96D5\u96D6\u0000\u0000"+
-            "\u0000\u96DA\u0000\u0000\u0000\u0000\u96DF\u0000"+
-            "\u96E1\u0000\u0000\u0000\u0000\u96E6\u96E7\u96E8"+
-            "\u96E9\u0000\u0000\u0000\u0000\u0000\u0000\u96F0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96F7\u96F8"+
-            "\u0000\u96FA\u96FB\u0000\u96FD\u96FE\u0000\u0000"+
-            "\u0000\u9743\u9744\u9745\u9746\u9747\u0000\u0000"+
-            "\u974A\u974B\u0000\u974D\u974E\u974F\u9750\u9751"+
-            "\u0000\u9753\u9754\u0000\u9756\u9757\u9758\u9759"+
-            "\u975A\u0000\u0000\u975D\u0000\u975F\u9760\u9761"+
-            "\u9762\u0000\u0000\u0000\u9766\u9767\u9768\u9769"+
-            "\u976A\u976B\u976C\u976D\u0000\u976F\u0000\u9771"+
-            "\u0000\u0000\u0000\u9775\u0000\u9777\u9778\u0000"+
-            "\u977A\u977B\u977C\u977D\u0000\u97A1\u97A2\u0000"+
-            "\u97A4\u97A5\u97A6\u0000\u0000\u97A9\u0000\u97AB"+
-            "\u97AC\u97AD\u97AE\u0000\u97B0\u97B1\u97B2\u0000"+
-            "\u97B4\u97B5\u97B6\u0000\u97B8\u97B9\u97BA\u0000"+
-            "\u0000\u97BD\u97BE\u0000\u97C0\u97C1\u97C2\u97C3"+
-            "\u0000\u97C5\u97C6\u97C7\u0000\u97C9\u97CA\u0000"+
-            "\u97CC\u97CD\u0000\u97CF\u0000\u0000\u97D2\u97D3"+
-            "\u97D4\u0000\u0000\u97D7\u97D8\u0000\u97DA\u97DB"+
-            "\u97DC\u97DD\u97DE\u0000\u0000\u97E1\u0000\u97E3"+
-            "\u97E4\u0000\u0000\u97E7\u97E8\u0000\u97EA\u97EB"+
-            "\u97EC\u97ED\u97EE\u0000\u0000\u97F1\u97F2\u97F3"+
-            "\u97F4\u97F5\u97F6\u97F7\u97F8\u0000\u97FA\u97FB"+
-            "\u0000\u97FD\u97FE\u9840\u9841\u9842\u9843\u0000"+
-            "\u9845\u0000\u9847\u0000\u9849\u984A\u984B\u0000"+
-            "\u0000\u984E\u0000\u0000\u9851\u9852\u9853\u0000"+
-            "\u9855\u9856\u0000\u0000\u0000\u985A\u0000\u0000"+
-            "\u985D\u0000\u985F\u9860\u9861\u9862\u0000\u9864"+
-            "\u9865\u0000\u9867\u0000\u9869\u986A\u986B\u0000"+
-            "\u986D\u986E\u0000\u0000\u9871\u9872\u0000\u9874"+
-            "\u9875\u0000\u0000\u0000\u9879\u0000\u987B\u987C"+
-            "\u0000\u0000\u0000\u98A2\u98A3\u98A4\u0000\u98A6"+
-            "\u98A7\u98A8\u98A9\u98AA\u0000\u98AC\u0000\u0000"+
-            "\u0000\u98B0\u98B1\u0000\u0000\u0000\u0000\u98B6"+
-            "\u0000\u0000\u98B9\u0000\u0000\u98BC\u98BD\u0000"+
-            "\u0000\u98C0\u0000\u0000\u98C3\u0000\u98C5\u0000"+
-            "\u0000\u0000\u0000\u0000\u98CB\u98CC\u98CD\u98CE"+
-            "\u0000\u98D0\u98D1\u0000\u0000\u0000\u0000\u98D6"+
-            "\u0000\u0000\u98D9\u0000\u98DB\u0000\u98DD\u0000"+
-            "\u98DF\u0000\u0000\u0000\u0000\u98E4\u0000\u98E6"+
-            "\u0000\u98E8\u98E9\u0000\u98EB\u98EC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98F4\u0000\u0000"+
-            "\u0000\u0000\u0000\u98FA\u0000\u0000\u0000\u98FE"+
-            "\u9940\u0000\u0000\u0000\u0000\u0000\u9946\u0000"+
-            "\u9948\u0000\u0000\u994B\u0000\u0000\u994E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9955\u9956\u0000"+
-            "\u0000\u9959\u0000\u995B\u0000\u0000\u0000\u995F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u996E\u0000"+
-            "\u0000\u0000\u0000\u9973\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u997A\u997B\u0000\u0000\u0000\u99A1"+
-            "\u0000\u0000\u0000\u99A5\u0000\u99A7\u0000\u0000"+
-            "\u0000\u0000\u0000\u99AD\u0000\u0000\u0000\u0000"+
-            "\u0000\u99B3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99BC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99C3\u0000\u0000\u0000\u99C7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99CE\u99CF\u0000\u0000"+
-            "\u0000\u0000\u0000\u99D5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99DE\u0000\u0000\u99E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99F5\u0000\u0000\u99F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A48\u9A49\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A50\u0000\u0000"+
-            "\u0000\u0000\u9A55\u0000\u0000\u9A58\u0000\u9A5A"+
-            "\u0000\u9A5C\u0000\u0000\u0000\u9A60\u0000\u0000"+
-            "\u9A63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A6E\u0000\u9A70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A79\u0000"+
-            "\u9A7B\u9A7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AB4"+
-            "\u9AB5\u9AB6\u0000\u0000\u0000\u9ABA\u0000\u0000"+
-            "\u9ABD\u9ABE\u9ABF\u9AC0\u9AC1\u0000\u0000\u9AC4"+
-            "\u9AC5\u9AC6\u0000\u9AC8\u9AC9\u0000\u9ACB\u9ACC"+
-            "\u9ACD\u9ACE\u9ACF\u0000\u9AD1\u0000\u9AD3\u9AD4"+
-            "\u9AD5\u9AD6\u9AD7\u9AD8\u0000\u0000\u0000\u9ADC"+
-            "\u9ADD\u9ADE\u9ADF\u9AE0\u9AE1\u0000\u9AE3\u0000"+
-            "\u9AE5\u9AE6\u9AE7\u0000\u9AE9\u9AEA\u9AEB\u9AEC"+
-            "\u9AED\u9AEE\u9AEF\u9AF0\u0000\u0000\u9AF3\u9AF4"+
-            "\u9AF5\u0000\u9AF7\u9AF8\u9AF9\u9AFA\u0000\u0000"+
-            "\u9AFD\u9AFE\u9B40\u9B41\u9B42\u9B43\u9B44\u9B45"+
-            "\u0000\u9B47\u9B48\u0000\u0000\u9B4B\u0000\u9B4D"+
-            "\u9B4E\u9B4F\u9B50\u9B51\u9B52\u9B53\u0000\u9B55"+
-            "\u9B56\u9B57\u0000\u9B59\u0000\u9B5B\u0000\u9B5D"+
-            "\u0000\u0000\u9B60\u0000\u9B62\u9B63\u9B64\u9B65"+
-            "\u9B66\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D"+
-            "\u9B6E\u9B6F\u0000\u0000\u0000\u9B73\u9B74\u9B75"+
-            "\u0000\u9B77\u0000\u9B79\u9B7A\u0000\u9B7C\u0000"+
-            "\u0000\u0000\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7"+
-            "\u9BA8\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF"+
-            "\u9BB0\u9BB1\u9BB2\u9BB3\u0000\u9BB5\u0000\u9BB7"+
-            "\u9BB8\u9BB9\u9BBA\u9BBB\u0000\u9BBD\u9BBE\u9BBF"+
-            "\u9BC0\u9BC1\u9BC2\u9BC3\u0000\u9BC5\u0000\u9BC7"+
-            "\u9BC8\u9BC9\u0000\u9BCB\u9BCC\u0000\u9BCE\u9BCF"+
-            "\u9BD0\u0000\u9BD2\u0000\u0000\u0000\u9BD6\u9BD7"+
-            "\u9BD8\u9BD9\u0000\u9BDB\u9BDC\u9BDD\u0000\u9BDF"+
-            "\u9BE0\u9BE1\u9BE2\u9BE3\u9BE4\u9BE5\u9BE6\u9BE7"+
-            "\u9BE8\u0000\u9BEA\u9BEB\u0000\u9BED\u9BEE\u9BEF"+
-            "\u9BF0\u9BF1\u9BF2\u9BF3\u0000\u0000\u0000\u9BF7"+
-            "\u9BF8\u0000\u9BFA\u9BFB\u0000\u9BFD\u9BFE\u0000"+
-            "\u9C41\u0000\u9C43\u9C44\u0000\u9C46\u9C47\u9C48"+
-            "\u9C49\u9C4A\u9C4B\u9C4C\u9C4D\u0000\u9C4F\u0000"+
-            "\u0000\u9C52\u0000\u0000\u9C55\u9C56\u0000\u9C58"+
-            "\u0000\u0000\u9C5B\u9C5C\u0000\u9C5E\u9C5F\u9C60"+
-            "\u9C61\u0000\u9C63\u0000\u9C65\u9C66\u9C67\u0000"+
-            "\u9C69\u0000\u0000\u9C6C\u0000\u9C6E\u9C6F\u9C70"+
-            "\u9C71\u0000\u9C73\u9C74\u0000\u9C76\u0000\u9C78"+
-            "\u9C79\u9C7A\u0000\u0000\u9C7D\u0000\u9CA1\u9CA2"+
-            "\u9CA3\u9CA4\u9CA5\u9CA6\u9CA7\u0000\u9CA9\u9CAA"+
-            "\u0000\u9CAC\u9CAD\u0000\u0000\u9CB0\u9CB1\u0000"+
-            "\u0000\u9CB4\u9CB5\u9CB6\u0000\u9CB8\u9CB9\u9CBA"+
-            "\u9CBB\u0000\u0000\u9CBE\u0000\u9CC0\u9CC1\u0000"+
-            "\u9CC3\u9CC4\u0000\u9CC6\u9CC7\u9CC8\u9CC9\u9CCA"+
-            "\u9CCB\u0000\u0000\u9CCE\u9CCF\u0000\u9CD1\u9CD2"+
-            "\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u0000\u0000"+
-            "\u9CDB\u0000\u9CDD\u0000\u9CDF\u0000\u9CE1\u0000"+
-            "\u0000\u0000\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+
-            "\u0000\u9CEC\u9CED\u0000\u0000\u9CF0\u0000\u9CF2"+
-            "\u0000\u0000\u0000\u9CF6\u9CF7\u9CF8\u0000\u9CFA"+
-            "\u9CFB\u9CFC\u9CFD\u9CFE\u9D40\u9D41\u9D42\u9D43"+
-            "\u9D44\u9D45\u9D46\u9D47\u9D48\u9D49\u0000\u9D4B"+
-            "\u0000\u0000\u9D4E\u9D4F\u9D50\u9D51\u9D52\u9D53"+
-            "\u9D54\u0000\u9D56\u0000\u9D58\u9D59\u0000\u9D5B"+
-            "\u9D5C\u9D5D\u9D5E\u9D5F\u0000\u0000\u0000\u9D63"+
-            "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+
-            "\u9D6C\u9D6D\u9D6E\u9D6F\u0000\u9D71\u9D72\u9D73"+
-            "\u0000\u9D75\u0000\u9D77\u9D78\u0000\u9D7A\u9D7B"+
-            "\u9D7C\u0000\u0000\u0000\u9DA2\u0000\u9DA4\u9DA5"+
-            "\u0000\u0000\u0000\u0000\u9DAA\u9DAB\u9DAC\u9DAD"+
-            "\u0000\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4\u9DB5"+
-            "\u9DB6\u9DB7\u9DB8\u9DB9\u0000\u9DBB\u9DBC\u0000"+
-            "\u9DBE\u0000\u0000\u9DC1\u9DC2\u0000\u0000\u9DC5"+
-            "\u9DC6\u0000\u0000\u9DC9\u0000\u9DCB\u9DCC\u9DCD"+
-            "\u9DCE\u0000\u0000\u0000\u9DD2\u0000\u9DD4\u0000"+
-            "\u0000\u9DD7\u9DD8\u9DD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DED"+
-            "\u9DEE\u0000\u0000\u0000\u9DF2\u9DF3\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DF9\u9DFA\u0000\u9DFC\u9DFD"+
-            "\u9DFE\u9E40\u0000\u0000\u0000\u9E44\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E4F\u0000\u9E51\u0000\u9E53\u9E54\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E5B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E63\u9E64\u0000\u9E66"+
-            "\u0000\u0000\u9E69\u0000\u9E6B\u9E6C\u9E6D\u9E6E"+
-            "\u9E6F\u9E70\u0000\u9E72\u0000\u9E74\u9E75\u9E76"+
-            "\u9E77\u0000\u9E79\u9E7A\u9E7B\u9E7C\u9E7D\u9E7E"+
-            "\u0000\u0000\u9EA3\u9EA4\u9EA5\u9EA6\u9EA7\u9EA8"+
-            "\u0000\u9EAA\u9EAB\u0000\u9EAD\u9EAE\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EB4\u0000\u0000\u0000\u9EB8"+
-            "\u9EB9\u0000\u9EBB\u9EBC\u0000\u9EBE\u0000\u0000"+
-            "\u0000\u9EC2\u9EC3\u0000\u9EC5\u9EC6\u0000\u9EC8"+
-            "\u9EC9\u0000\u9ECB\u9ECC\u9ECD\u9ECE\u9ECF\u9ED0"+
-            "\u0000\u9ED2\u9ED3\u9ED4\u9ED5\u0000\u0000\u9ED8"+
-            "\u9ED9\u9EDA\u0000\u0000\u9EDD\u9EDE\u9EDF\u9EE0"+
-            "\u0000\u0000\u9EE3\u0000\u9EE5\u0000\u9EE7\u0000"+
-            "\u0000\u0000\u0000\u9EEC\u0000\u9EEE\u0000\u9EF0"+
-            "\u0000\u9EF2\u9EF3\u0000\u0000\u9EF6\u0000\u9EF8"+
-            "\u9EF9\u0000\u9EFB\u9EFC\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F43\u0000\u0000\u9F46\u9F47\u9F48\u0000"+
-            "\u9F4A\u9F4B\u9F4C\u9F4D\u0000\u0000\u9F50\u0000"+
-            "\u0000\u9F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F68\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FA5\u0000\u0000\u0000\u0000\u9FAA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FB3"+
-            "\u0000\u9FB5\u0000\u0000\u0000\u0000\u0000\u9FBB"+
-            "\u0000\u0000\u9FBE\u9FBF\u0000\u9FC1\u0000\u0000"+
-            "\u0000\u9FC5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FD1\u0000\u0000"+
-            "\u0000\u0000\u0000\u9FD7\u0000\u9FD9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FF5\u0000\u0000\u0000\u9FF9\u0000\u0000"+
-            "\u0000\u0000\u0000\uA040\u0000\u0000\u0000\u0000"+
-            "\uA045\u0000\uA047\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA04F\u0000\u0000\u0000\uA053\u0000"+
-            "\uA055\uA056\u0000\u0000\uA059\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA068\u0000\uA06A\u0000\u0000"+
-            "\uA06D\u0000\uA06F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA078\u0000\u0000\uA07B\u0000"+
-            "\u0000\uA07E\u0000\uA0A2\u0000\uA0A4\u0000\u0000"+
-            "\uA0A7\u0000\u0000\u0000\uA0AB\uA0AC\u0000\u0000"+
-            "\u0000\u0000\uA0B1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0BD\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0C3\u0000\uA0C5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D8\u0000\uA0DA\u0000\u0000\u0000\uA0DE"+
-            "\u0000\u0000\u0000\u0000\uA0E3\u0000\u0000\uA0E6"+
-            "\u0000\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE"+
-            "\uA0EF\uA0F0\uA0F1\u0000\uA0F3\uA0F4\uA0F5\uA0F6"+
-            "\uA0F7\uA0F8\uA0F9\u0000\uA0FB\u0000\u0000\uA0FE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8840\u8841\u8842\u8843\u8844"+
-            "\u8845\u8846\u8847\u8848\u8849\u884A\u884B\u884C"+
-            "\u884D\u884E\u884F\u8850\u8851\u8852\u8853\u8854"+
-            "\u8855\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8862\u0000\u8864"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u88A3\u0000\u88A5\u0000"+
-            "\u0000\u0000\u88A9\u88AA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8940\u8941\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u894C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89B2\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+
-            "\u89BA\u89BB\u89BC\u0000\u89BE\u89BF\u0000\u0000"+
-            "\u0000\u0000\u0000\u89C5\u0000\u0000\u0000\u0000"+
-            "\u89CA\u89CB\u89CC\u89CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89D5\u0000\u89D7\u0000\u0000"+
-            "\u89DA\u89DB\u89DC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89E6\u0000\u89E8\u0000"+
-            "\u89EA\u0000\u0000\u89ED\u89EE\u89EF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F9"+
-            "\u0000\u89FB\u89FC\u0000\u89FE\u8A40\u0000\u0000"+
-            "\u8A43\u8A44\u8A45\u0000\u8A47\u8A48\u8A49\u0000"+
-            "\u8A4B\u8A4C\u8A4D\u8A4E\u0000\u8A50\u8A51\u8A52"+
-            "\u8A53\u8A54\u8A55\u0000\u8A57\u8A58\u8A59\u8A5A"+
-            "\u0000\u0000\u8A5D\u8A5E\u8A5F\u8A60\u8A61\u8A62"+
-            "\u0000\u8A64\u8A65\u8A66\u8A67\u8A68\u8A69\u0000"+
-            "\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70\u8A71\u8A72"+
-            "\u0000\u0000\u0000\u8A76\u8A77\u0000\u0000\u8A7A"+
-            "\u8A7B\u8A7C\u8A7D\u8A7E\u8AA1\u8AA2\u8AA3\u0000"+
-            "\u8AA5\u8AA6\u0000\u8AA8\u8AA9\u8AAA\u0000\u8AAC"+
-            "\u8AAD\u8AAE\u0000\u8AB0\u0000\u8AB2\u8AB3\u8AB4"+
-            "\u8AB5\u8AB6\u0000\u8AB8\u8AB9\u0000\u8ABB\u8ABC"+
-            "\u8ABD\u0000\u0000\u8AC0\u0000\u8AC2\u8AC3\u0000"+
-            "\u0000\u0000\u8AC7\u0000\u8AC9\u8ACA\u8ACB\u8ACC"+
-            "\u0000\u8ACE\u8ACF\u8AD0\u8AD1\u8AD2\u8AD3\u8AD4"+
-            "\u8AD5\u0000\u8AD7\u8AD8\u8AD9\u8ADA\u0000\u8ADC"+
-            "\u0000\u0000\u8ADF\u8AE0\u8AE1\u8AE2\u8AE3\u8AE4"+
-            "\u8AE5\u8AE6\u0000\u8AE8\u8AE9\u8AEA\u8AEB\u8AEC"+
-            "\u8AED\u8AEE\u8AEF\u8AF0\u8AF1\u8AF2\u8AF3\u8AF4"+
-            "\u0000\u8AF6\u8AF7\u8AF8\u8AF9\u8AFA\u8AFB\u8AFC"+
-            "\u0000\u8AFE\u8B40\u8B41\u8B42\u8B43\u8B44\u8B45"+
-            "\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C\u8B4D"+
-            "\u8B4E\u8B4F\u0000\u0000\u0000\u0000\u0000\u8B55"+
-            "\u0000\u0000\u8B58\u8B59\u0000\u0000\u0000\u0000"+
-            "\u8B5E\u0000\u8B60\u0000\u8B62\u0000\u8B64\u8B65"+
-            "\u8B66\u8B67\u8B68\u8B69\u8B6A\u8B6B\u0000\u8B6D"+
-            "\u8B6E\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75"+
-            "\u8B76\u8B77\u0000\u8B79\u8B7A\u8B7B\u8B7C\u0000"+
-            "\u8B7E\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u8BA6\u8BA7"+
-            "\u8BA8\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u0000"+
-            "\u0000\u8BB1\u8BB2\u0000\u0000\u8BB5\u8BB6\u0000"+
-            "\u8BB8\u0000\u0000\u8BBB\u8BBC\u0000\u8BBE\u0000"+
-            "\u0000\u0000\u8BC2\u8BC3\u0000\u8BC5\u0000\u0000"+
-            "\u8BC8\u0000\u0000\u0000\u8BCC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8BD6\u0000"+
-            "\u0000\u0000\u0000\u8BDB\u8BDC\u0000\u8BDE\u0000"+
-            "\u0000\u8BE1\u8BE2\u0000\u0000\u0000\u8BE6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BED\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BF3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BFA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D63"+
-            "\u8D64\u0000\u0000\u8D67\u8D68\u0000\u0000\u0000"+
-            "\u0000\u8D6D\u8D6E\u8D6F\u8D70\u0000\u0000\u0000"+
-            "\u8D74\u0000\u0000\u0000\u8D78\u0000\u0000\u0000"+
-            "\u0000\u8D7D\u0000\u8DA1\u0000\u0000\u0000\u0000"+
-            "\u8DA6\u0000\u0000\u0000\u0000\u8DAB\u0000\u8DAD"+
-            "\u0000\u0000\u8DB0\u0000\u8DB2\u0000\u8DB4\u0000"+
-            "\u0000\u8DB7\u0000\u0000\u8DBA\u8DBB\u8DBC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DC3\u0000\u8DC5"+
-            "\u0000\u0000\u0000\u0000\u8DCA\u0000\u8DCC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DD6\u0000\u0000\u0000\u0000\u8DDB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DE2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DEB\u8DEC\u0000"+
-            "\u0000\u8DEF\u8DF0\u0000\u0000\u8DF3\u0000\u8DF5"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DFB\u8DFC\u8DFD"+
-            "\u8DFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6CD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC879\uC87A\u0000"+
-            "\uC87C\u0000\uC87E\uC8A1\u0000\uC8A3\uC8A4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC8D6\uC8D7\uC8D8\uC8D9\uC8DA\uC8DB\uC8DC\uC8DD"+
-            "\uC8DE\uC8DF\uC8E0\uC8E1\uC8E2\uC8E3\uC8E4\uC8E5"+
-            "\uC8E6\uC8E7\uC8E8\uC8E9\uC8EA\uC8EB\uC8EC\uC8ED"+
-            "\uC8EE\uC8EF\uC8F0\uC8F1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8D0\u0000\u0000\u0000\u0000\uC8CF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC6E4\u0000\uC6E5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8CD\u0000\uC8CE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uF9FE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            1, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
-            0, 6, 0, 0, 7, 8, 0, 9, 0, 0, 0, 0, 0, 0, 10, 11,
-            12, 0, 13, 0, 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,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 0,
-            0, 0, 0, 137, 138, 139, 140, 141, 142, 0, 0, 0, 0, 0, 0, 143
-        };
-
-        static String index2[] = {
-            innerIndex0,
-            innerIndex1,
-            innerIndex2,
-            innerIndex3,
-            innerIndex4,
-            innerIndex5,
-            innerIndex6,
-            innerIndex7,
-            innerIndex8
-        };
-
-        public Encoder(Charset cs) {
-            super(cs,
-                  index1,
-                  index2);
+       static void initc2b(char[][] c2b, String[] b2cStr, String pua) {
+            // init c2b/c2bSupp from b2cStr and supp
+            int b2Min = 0x40;
+            Arrays.fill(c2b, C2B_UNMAPPABLE);
+            for (int b1 = 0; b1 < 0x100; b1++) {
+                String s = b2cStr[b1];
+                if (s == null)
+                    continue;
+                for (int i = 0; i < s.length(); i++) {
+                    char c = s.charAt(i);
+                    int hi = c >> 8;
+                    if (c2b[hi] == C2B_UNMAPPABLE) {
+                        c2b[hi] = new char[0x100];
+                        Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING);
+                    }
+                    c2b[hi][c & 0xff] = (char)((b1 << 8) | (i + b2Min));
+                }
+            }
+            if (pua != null) {        // add the compatibility pua entries
+                char c = '\ue000';    //first pua character
+                for (int i = 0; i < pua.length(); i++) {
+                    char bb = pua.charAt(i);
+                    if (bb != UNMAPPABLE_DECODING) {
+                        int hi = c >> 8;
+                        if (c2b[hi] == C2B_UNMAPPABLE) {
+                            c2b[hi] = new char[0x100];
+                            Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING);
+                        }
+                        c2b[hi][c & 0xff] = (char)bb;
+                    }
+                    c++;
+                }
+            }
         }
     }
 }
--- a/jdk/src/share/classes/sun/nio/cs/ext/HKSCS_2001.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7827 +0,0 @@
-/*
- * Copyright 2003 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-public abstract class HKSCS_2001 extends Charset
-{
-
-    public HKSCS_2001() {
-        super("HKSCS-2001", ExtendedCharsets.aliasesFor("HKSCS-2001"));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-
-    public static short[] getDecoderIndex1() {
-        return Decoder.index1;
-    }
-
-    public static String[] getDecoderIndex2() {
-        return Decoder.index2;
-
-    }
-
-    public static short[] getEncoderIndex1() {
-        return Encoder.index1;
-
-    }
-    public static String[] getEncoderIndex2() {
-        return Encoder.index2;
-
-    }
-
-    protected static class Decoder extends DoubleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, index1, index2, 0x40, 0xFE);
-        }
-
-        protected char decodeDouble(int c1, int c2) {
-            char result = super.decodeDouble(c1, c2);
-            int offset = (result - 0xD800);
-
-            if (result >= '\uD800' && result <= '\uDFFF') {
-                highSurrogate =
-                    SurrogateMappings.charAt(offset * 2);
-                lowSurrogate =
-                    SurrogateMappings.charAt((offset *2) + 1);
-                return '\uD800';
-            } else {
-                return result;
-            }
-        }
-
-        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\uF303"+
-            "\uF304\uF305\uF306\uF307\uD800\uF309\uD801\uD802"+
-            "\uF30C\uF30D\uD803\uD804\uF310\uD805\uF312\uF313"+
-            "\uF314\uF315\uD806\uF317\uF318\u0100\u00C1\u01CD"+
-            "\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1"+
-            "\u00D2\uF325\u1EBE\uF327\u1EC0\u00CA\u0101\u00E1"+
-            "\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B"+
-            "\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B"+
-            "\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u01DC\u00FC\uF344\u1EBF\uF346\u1EC1\u00EA\u0261"+
-            "\uF34A\uF34B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uD807\uD808"+
-            "\uFFFD\u650A\uFFFD\uFFFD\u4E3D\u6EDD\u9D4E\u91DF"+
-            "\uFFFD\uFFFD\uD809\u6491\u4F1A\u4F28\u4FA8\u5156"+
-            "\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1"+
-            "\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66"+
-            "\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804"+
-            "\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7"+
-            "\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6"+
-            "\u8BBE\u8BE2\u8F66\u8F67\u8F6E\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7411"+
-            "\u7CFC\u7DCD\u6946\u7AC9\u5227\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u918C\u78B8\u915E\u80BC\uFFFD\u8D0B\u80F6"+
-            "\uD80A\uFFFD\uFFFD\u809F\u9EC7\u4CCD\u9DC9\u9E0C"+
-            "\u4C3E\uD80B\uD80C\u9E0A\uD80D\u35C1\uFFFD\u6E9A"+
-            "\u823E\u7519\uFFFD\u4911\u9A6C\u9A8F\u9F99\u7987"+
-            "\uD80E\uD80F\uD810\uD811\u4E24\u4E81\u4E80\u4E87"+
-            "\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088"+
-            "\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205"+
-            "\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0"+
-            "\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3"+
-            "\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598"+
-            "\u553F\u35A5\u35BF\u55D7\u35C5\uD812\u5525\uFFFD"+
-            "\uD813\uD814\uD815\u5590\uD816\u39EC\uD817\u8E46"+
-            "\uD818\uD819\u4053\uD81A\u777A\uD81B\u3A34\u47D5"+
-            "\uD81C\uD81D\uD81E\u64DD\uD81F\uD820\uD821\uD822"+
-            "\u648D\u8E7E\uD823\uD824\uD825\uD826\uD827\uD828"+
-            "\uFFFD\uD829\uD82A\uD82B\u47F4\uD82C\uD82D\u9AB2"+
-            "\u3A67\uD82E\u3FED\u3506\uD82F\uD830\uD831\uD832"+
-            "\u9D6E\u9815\uFFFD\u43D9\uD833\u64B4\u54E3\uD834"+
-            "\uD835\uD836\u39FB\uD837\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uD838\uD839"+
-            "\uD83A\u64EA\uD83B\uD83C\u8E68\uD83D\uD83E\uD83F"+
-            "\uFFFD\u480B\uD840\u3FFA\u5873\uD841\uFFFD\uD842"+
-            "\uD843\uD844\uD845\uD846\u5579\u40BB\u43BA\uFFFD"+
-            "\u4AB4\uD847\uD848\u81AA\u98F5\uD849\u6379\u39FE"+
-            "\uD84A\u8DC0\u56A1\u647C\u3E43\uFFFD\uD84B\uD84C"+
-            "\uD84D\uD84E\uFFFD\uD84F\uD850\u3992\u3A06\uD851"+
-            "\u3578\uD852\uD853\u5652\uD854\uD855\uD856\u34BC"+
-            "\u6C3D\uD857\uFFFD\uFFFD\uD858\uD859\uD85A\uD85B"+
-            "\uD85C\uD85D\uD85E\uD85F\u7F93\uD860\uD861\uD862"+
-            "\u35FB\uD863\uD864\uD865\uD866\u3F93\uD867\uD868"+
-            "\uD869\uD86A\uFFFD\uD86B\uD86C\uD86D\uD86E\uD86F"+
-            "\u3FF9\uD870\u6432\uD871\uD872\uD873\uD874\uD875"+
-            "\uD876\uD877\uD878\u3A18\uD879\uD87A\uD87B\uD87C"+
-            "\uD87D\uD87E\uD87F\uD880\u95AA\u54CC\u82C4\u55B9"+
-            "\uFFFD\uD881\u9C26\u9AB6\uD882\uD883\u7140\u816D"+
-            "\u80EC\u5C1C\uD884\u8134\u3797\u535F\uD885\u91B6"+
-            "\uD886\uD887\uD888\uD889\u35DD\uD88A\u3609\uD88B"+
-            "\u56AF\uD88C\uD88D\uD88E\uD88F\uD890\uD891\uD892"+
-            "\uD893\uD894\uD895\uD896\u5A54\uD897\uD898\uD899"+
-            "\uD89A\u579C\uD89B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uD89C\uD89D\uD89E"+
-            "\uD89F\uD8A0\u3703\uD8A1\uD8A2\uD8A3\uD8A4\uD8A5"+
-            "\uD8A6\uD8A7\uD8A8\u5899\u5268\u361A\uD8A9\u7BB2"+
-            "\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD8AA"+
-            "\uD8AB\u55FB\u35F2\u5689\u4E28\u5902\uD8AC\uD8AD"+
-            "\u9751\uD8AE\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4"+
-            "\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B"+
-            "\u4E2C\u72AD\uD8AF\u7F52\u793B\u7CF9\u7F53\uD8B0"+
-            "\u34C1\uFFFD\uD8B1\u8002\u8080\uD8B2\uD8B3\u535D"+
-            "\u8864\u89C1\uD8B4\u8BA0\u8D1D\u9485\u9578\u957F"+
-            "\u95E8\uD8B5\u97E6\u9875\u98CE\u98DE\u9963\uD8B6"+
-            "\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD8B7\u961D"+
-            "\u6237\u94A2\uFFFD\u503B\u6DFE\uD8B8\uF57A\u3DC9"+
-            "\u888F\uD8B9\u7077\u5CF5\u4B20\uD8BA\u3559\uD8BB"+
-            "\u6122\uD8BC\u8FA7\u91F6\u7191\u6719\u73BA\uD8BD"+
-            "\uD8BE\u3C8B\uD8BF\u4B10\u78E4\u7402\u51AE\uD8C0"+
-            "\u4009\u6A63\uD8C1\u4223\u860F\uFFFD\u7A2A\uD8C2"+
-            "\uD8C3\u9755\u704D\u5324\uD8C4\u93F4\u76D9\uD8C5"+
-            "\uF5A4\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\uF5AB"+
-            "\u5434\u7D8B\u5892\u58D0\uD8C6\u5E92\u5E99\u5FC2"+
-            "\uD8C7\u658B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uD8C8\u6919\u6A43\uD8C9"+
-            "\u6CFF\uFFFD\u7200\uD8CA\u738C\u3EDB\uD8CB\u5B15"+
-            "\u74B9\u8B83\uD8CC\uD8CD\u7A93\u7BEC\u7CC3\u7E6C"+
-            "\u82F8\u8597\uF5CC\u8890\uF5CE\u8EB9\uF5D0\u8FCF"+
-            "\u855F\u99E0\u9221\uF5D5\uD8CE\uD8CF\u4071\u42A2"+
-            "\u5A1A\uFFFD\uFFFD\uFFFD\u9868\u676B\u4276\u573D"+
-            "\uFFFD\u85D6\uD8D0\u82BF\uD8D1\u4C81\uD8D2\u5D7B"+
-            "\uD8D3\uD8D4\uF5EC\uF5ED\u5B96\uF5EF\uFFFD\u7E5B"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4"+
-            "\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908"+
-            "\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7"+
-            "\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8"+
-            "\u56B1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u3A03\u63E2\u63FB\u6407\u645A"+
-            "\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD"+
-            "\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4"+
-            "\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909"+
-            "\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD"+
-            "\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB"+
-            "\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA"+
-            "\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1"+
-            "\u6E15\u6E18\u6E29\u6E86\uD8D5\u6EBB\u6EE2\u6EDA"+
-            "\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD8D6\u6F81"+
-            "\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91"+
-            "\u7050\u7054\u706F\u707F\u7089\uD8D7\u43C1\u35F1"+
-            "\uD8D8\uD8D9\u57BE\uD8DA\u713E\uD8DB\u364E\u69A2"+
-            "\uD8DC\u5B74\u7A49\uD8DD\uD8DE\u7A65\u7A7D\uD8DF"+
-            "\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD8E0\u41CA\u7ADA"+
-            "\u7ADD\u7AEA\u41EF\u54B2\uD8E1\u7B0B\u7B55\u7B29"+
-            "\uD8E2\uD8E3\u7BA2\u7B6F\u839C\uD8E4\uD8E5\u7BD0"+
-            "\u8421\u7B92\uFFFD\uD8E6\u3DAD\uD8E7\u8492\u7BFA"+
-            "\uFFFD\u7C35\uD8E8\u7C44\u7C83\uD8E9\u7CA6\u667D"+
-            "\uD8EA\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u7E67\u451D\uD8EB\u7D5D\uD8EC\u748D"+
-            "\u7D89\u7DAB\u7135\u7DB3\uFFFD\uD8ED\uD8EE\u7DE4"+
-            "\u3D13\u7DF5\uD8EF\u7DE5\uD8F0\uFFFD\uD8F1\uD8F2"+
-            "\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47"+
-            "\u7936\uD8F3\u99E1\u7F97\uD8F4\u7FA3\uD8F5\uD8F6"+
-            "\u455C\uD8F7\u4503\uD8F8\u7FFA\uD8F9\uFFFD\u8008"+
-            "\u801D\uFFFD\u802F\uD8FA\uD8FB\u803B\u803C\u8061"+
-            "\uD8FC\u4989\uD8FD\uD8FE\uD8FF\u6725\u80A7\uD900"+
-            "\u8107\u811A\u58B0\uD901\u6C7F\uD902\uD903\u64E7"+
-            "\uD904\u8218\uD905\u6A53\uD906\uD907\u447A\u8229"+
-            "\uD908\uD909\uD90A\u4FF9\uD90B\u84E2\u8362\uD90C"+
-            "\uD90D\uD90E\uD90F\uD910\u82AA\u691B\uD911\u41DB"+
-            "\u854B\u82D0\u831A\uD912\uD913\u36C1\uD914\uD915"+
-            "\u827B\u82E2\u8318\uD916\uD917\uD918\uD919\uD91A"+
-            "\u3DBF\u831D\u55EC\u8385\u450B\uD91B\u83AC\uFFFD"+
-            "\u83D3\u347E\uD91C\u6A57\u855A\u3496\uD91D\uD91E"+
-            "\u8458\uD91F\u8471\u3DD3\u44E4\u6AA7\u844A\uD920"+
-            "\u7958\uFFFD\uD921\uD922\uD923\u84DE\uFFFD\u8391"+
-            "\u44A0\u8493\u84E4\uD924\u4240\uD925\u4543\u8534"+
-            "\u5AF2\uD926\u4527\u8573\u4516\u67BF\u8616\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uD927\uD928\u85C1\uD929\u8602\uD92A\uD92B"+
-            "\uD92C\u456A\u8628\u3648\uD92D\u53F7\uD92E\u867E"+
-            "\u8771\uD92F\u87EE\uD930\u87B1\u87DA\u880F\u5661"+
-            "\u866C\u6856\u460F\u8845\u8846\uD931\uD932\uD933"+
-            "\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777"+
-            "\uD934\u8987\u898A\uFFFD\uFFFD\u89A7\u89BC\uD935"+
-            "\u89E7\uD936\uD937\u8A9C\u7793\u91FE\u8A90\uD938"+
-            "\u7AE9\uD939\uD93A\u4713\uD93B\u717C\u8B0C\u8B1F"+
-            "\uD93C\uD93D\u8B3F\u8B4C\u8B4D\u8AA9\uD93E\u8B90"+
-            "\u8B9B\u8AAF\uD93F\u4615\u884F\u8C9B\uD940\uD941"+
-            "\uD942\u3725\uD943\u8CD6\uD944\uD945\u8D12\u8D03"+
-            "\uD946\u8CDB\u705C\u8D11\uD947\u3ED0\uFFFD\u8DA9"+
-            "\uD948\uD949\uD94A\u3B7C\uD94B\uD94C\u7AE7\u8EAD"+
-            "\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD94D\uD94E\u8FA5"+
-            "\u9303\uD94F\uD950\u8FB3\u492A\uD951\uD952\uD953"+
-            "\u5EF8\uD954\u8FF9\uD955\uD956\uD957\uD958\u3980"+
-            "\uD959\u9037\uD95A\uD95B\u9061\uD95C\uD95D\u90A8"+
-            "\uD95E\u90C4\uD95F\u90AE\uFFFD\u9167\u3AF0\u91A9"+
-            "\u91C4\u7CAC\uD960\uD961\u920E\u6C9F\u9241\u9262"+
-            "\uD962\uFFFD\uD963\uD964\uD965\uD966\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uD967\u932C\u936B\uD968\uD969\u708F\u5AC3\uD96A"+
-            "\uD96B\u4965\u9244\uD96C\uD96D\uD96E\u9373\u945B"+
-            "\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD96F"+
-            "\uD970\uD971\uD972\u49DF\u6C1C\u967B\u9696\u416C"+
-            "\u96A3\uD973\u61DA\u96B6\u78F5\uD974\u96BD\u53CC"+
-            "\u49A1\uD975\uD976\uD977\uD978\uD979\uD97A\uD97B"+
-            "\uD97C\u9731\u8642\u9736\u4A0F\u453D\u4585\uD97D"+
-            "\u7075\u5B41\u971B\uFFFD\uD97E\u9757\u5B4A\uD97F"+
-            "\u975F\u9425\u50D0\uD980\uD981\u9789\u979F\u97B1"+
-            "\u97BE\u97C0\u97D2\u97E0\uD982\u97EE\u741C\uD983"+
-            "\uFFFD\u97F5\uD984\uD985\u4AD1\u9834\u9833\u984B"+
-            "\u9866\u3B0E\uD986\u3D51\uD987\uD988\uD989\u98CA"+
-            "\u98B7\u98C8\u98C7\u4AFF\uD98A\uD98B\u55B0\u98E1"+
-            "\u98E6\u98EC\u9378\u9939\uD98C\u4B72\uD98D\uD98E"+
-            "\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD98F\u36C4\uD990"+
-            "\uD991\u9AE0\u9AE2\uD992\u9AF4\u4C0E\u9B14\u9B2D"+
-            "\uD993\u5034\u9B34\uD994\u38C3\uD995\u9B50\u9B40"+
-            "\uD996\u5A45\uD997\u9B8E\uD998\u9C02\u9BFF\u9C0C"+
-            "\uD999\u9DD4\uD99A\uD99B\uD99C\uD99D\uD99E\uD99F"+
-            "\u9D7E\u9D83\uD9A0\u9E0E\u6888\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9DC4"+
-            "\uD9A1\uD9A2\uD9A3\uD9A4\uD9A5\u9D39\uD9A6\uD9A7"+
-            "\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD9A8"+
-            "\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD9A9\u9F02"+
-            "\u9F08\u4B96\u9424\uD9AA\u9F17\uFFFD\u9F39\u569F"+
-            "\u568A\u9F45\u99B8\uD9AB\u97F2\u847F\u9F62\u9F69"+
-            "\u7ADC\u9F8E\u7216\u4BBE\uD9AC\uD9AD\u7177\uD9AE"+
-            "\uD9AF\uD9B0\u739E\uD9B1\uD9B2\u799F\uD9B3\uD9B4"+
-            "\u9369\u93F3\uD9B5\u92EC\u9381\u93CB\uD9B6\uD9B7"+
-            "\u7217\u3EEB\u7772\u7A43\u70D0\uD9B8\uD9B9\u717E"+
-            "\uD9BA\u70A3\uD9BB\uD9BC\u3EC7\uD9BD\uD9BE\uD9BF"+
-            "\u3722\uD9C0\uD9C1\u36E1\uD9C2\uD9C3\uD9C4\u3723"+
-            "\uD9C5\u575B\uD9C6\uD9C7\uD9C8\uD9C9\uD9CA\u8503"+
-            "\uD9CB\uFFFD\u8455\uD9CC\uD9CD\uD9CE\uD9CF\uD9D0"+
-            "\uD9D1\u44F4\uD9D2\uD9D3\uD9D4\u67F9\u3733\u3C15"+
-            "\u3DE7\u586C\uD9D5\u6810\u4057\uD9D6\uD9D7\uD9D8"+
-            "\uD9D9\uD9DA\u54CB\u569E\uD9DB\u5692\uD9DC\uD9DD"+
-            "\uD9DE\u93C6\uD9DF\u939C\u4EF8\u512B\u3819\uD9E0"+
-            "\u4EBC\uD9E1\uD9E2\u4F4B\u4F8A\uD9E3\u5A68\uD9E4"+
-            "\uD9E5\u3999\uD9E6\uD9E7\u3435\u4F29\uD9E8\uD9E9"+
-            "\uD9EA\u8ADA\uD9EB\u4E98\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u50CD\u510D"+
-            "\u4FA2\u4F03\uD9EC\uD9ED\u4F42\u502E\u506C\u5081"+
-            "\u4FCC\u4FE5\u5058\u50FC\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u6E76\uD9EE\uD9EF\uD9F0\u6D72\uD9F1\uD9F2\u51A8"+
-            "\u51C3\uD9F3\u44DD\uD9F4\uD9F5\uD9F6\u8D7A\uD9F7"+
-            "\uD9F8\u5259\u52A4\uD9F9\u52E1\uFFFD\u467A\u718C"+
-            "\uD9FA\uD9FB\uD9FC\uD9FD\u69D1\uD9FE\uFFFD\u3EDE"+
-            "\u7499\u7414\u7456\u7398\u4B8E\uD9FF\uDA00\u53D0"+
-            "\u3584\u720F\uDA01\u55B4\uDA02\u54CD\uDA03\u571D"+
-            "\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB"+
-            "\u5A99\uDA04\uDA05\uDA06\uDA07\u5A2C\u59B8\u928F"+
-            "\u5A7E\u5ACF\u5A12\uDA08\uDA09\uDA0A\uDA0B\u36F5"+
-            "\u6D05\u7443\u5A21\uDA0C\u5A81\uDA0D\uDA0E\u93E0"+
-            "\u748C\uDA0F\u7105\u4972\u9408\uDA10\u93BD\u37A0"+
-            "\u5C1E\u5C9E\u5E5E\u5E48\uDA11\uDA12\uDA13\u5ECD"+
-            "\u5B4F\uDA14\uDA15\u3701\uDA16\u36DD\uDA17\u36D3"+
-            "\u812A\uDA18\uDA19\uDA1A\uDA1B\u5F0C\u5F0E\uDA1C"+
-            "\uDA1D\u5A6B\uDA1E\u5B44\u8614\uDA1F\u8860\u607E"+
-            "\uDA20\uDA21\u5FDB\u3EB8\uDA22\uDA23\uDA24\uDA25"+
-            "\u61C0\uDA26\uDA27\uDA28\u6199\u6198\u6075\uDA29"+
-            "\uDA2A\uDA2B\uDA2C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6471\uDA2D\uDA2E"+
-            "\u3A29\uDA2F\uDA30\uDA31\uDA32\u6337\uDA33\u64B6"+
-            "\u6331\u63D1\uDA34\uDA35\u62A4\uDA36\u643B\u656B"+
-            "\u6972\u3BF4\uDA37\uDA38\uDA39\uDA3A\u550D\uDA3B"+
-            "\uDA3C\uDA3D\u66CE\uDA3E\uDA3F\u3AE0\u4190\uDA40"+
-            "\uDA41\uDA42\uDA43\uDA44\uDA45\u78EE\uDA46\uDA47"+
-            "\uDA48\u3464\uDA49\uDA4A\uDA4B\u668E\uDA4C\u666B"+
-            "\u4B93\u6630\uDA4D\uDA4E\u6663\uDA4F\uDA50\u661E"+
-            "\uDA51\u38D1\uDA52\uDA53\u3B99\uDA54\uDA55\u74D0"+
-            "\u3B96\u678F\uDA56\u68B6\u681E\u3BC4\u6ABE\u3863"+
-            "\uDA57\uDA58\u6A33\u6A52\u6AC9\u6B05\uDA59\u6511"+
-            "\u6898\u6A4C\u3BD7\u6A7A\u6B57\uDA5A\uDA5B\u93A0"+
-            "\u92F2\uDA5C\uDA5D\u9289\uDA5E\uDA5F\u9467\u6DA5"+
-            "\u6F0B\uDA60\uFFFD\uDA61\u3D8F\u6E04\uDA62\u5A3D"+
-            "\u6E0A\u5847\u6D24\u7842\u713B\uDA63\uDA64\u70F1"+
-            "\u7250\u7287\u7294\uDA65\uDA66\u5179\uDA67\uDA68"+
-            "\u747A\uDA69\uDA6A\uDA6B\uDA6C\uDA6D\u3F06\u3EB1"+
-            "\uDA6E\uDA6F\uDA70\u60A7\u3EF3\u74CC\u743C\u9387"+
-            "\u7437\u449F\uDA71\u4551\u7583\u3F63\uDA72\uDA73"+
-            "\u3F58\u7555\u7673\uDA74\u3B19\u7468\uDA75\uDA76"+
-            "\uDA77\u3AFB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u3DCD\uDA78\u3EFF\uDA79"+
-            "\uDA7A\u91FA\u5732\u9342\uDA7B\uDA7C\u50DF\uDA7D"+
-            "\uDA7E\u7778\uDA7F\u770E\u770F\u777B\uDA80\uDA81"+
-            "\u3A5E\uDA82\u7438\u749B\u3EBF\uDA83\uDA84\u40C8"+
-            "\uDA85\uDA86\u9307\uDA87\u781E\u788D\u7888\u78D2"+
-            "\u73D0\u7959\uDA88\uDA89\u410E\uFFFD\u8496\u79A5"+
-            "\u6A2D\uDA8A\u7A3A\u79F4\u416E\uDA8B\u4132\u9235"+
-            "\u79F1\uDA8C\uDA8D\uDA8E\uDA8F\uDA90\u3597\u556B"+
-            "\u3570\u36AA\uDA91\uDA92\u7AE2\u5A59\uDA93\uDA94"+
-            "\uDA95\u5A0D\uDA96\u78F0\u5A2A\uDA97\u7AFE\u41F9"+
-            "\u7C5D\u7C6D\u4211\uDA98\uDA99\uDA9A\u7CCD\uDA9B"+
-            "\uDA9C\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3"+
-            "\u7F4E\uDA9D\uDA9E\uDA9F\u7D97\uDAA0\u426A\uDAA1"+
-            "\uDAA2\u67D6\uDAA3\uDAA4\u57C4\uDAA5\uDAA6\uDAA7"+
-            "\u7FDD\u7B27\uDAA8\uDAA9\uDAAA\u7B0C\uDAAB\u99E6"+
-            "\u8645\u9A63\u6A1C\uDAAC\u39E2\uDAAD\uDAAE\u9A1F"+
-            "\uDAAF\u8480\uDAB0\uDAB1\u44EA\u8137\u4402\u80C6"+
-            "\u8109\u8142\uDAB2\u98C3\uDAB3\u8262\u8265\uDAB4"+
-            "\u8453\uDAB5\u8610\uDAB6\u5A86\u417F\uDAB7\u5B2B"+
-            "\uDAB8\u5AE4\uDAB9\u86A0\uDABA\uDABB\u882D\uDABC"+
-            "\u5A02\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u886E\u4F45\u8887\u88BF\u88E6"+
-            "\u8965\u894D\uDABD\u8954\uDABE\uDABF\uDAC0\uDAC1"+
-            "\uDAC2\uDAC3\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D"+
-            "\u8A1C\uDAC4\u5F4D\u922B\uDAC5\u65D4\u7129\u70C4"+
-            "\uDAC6\u9D6D\u8C9F\u8CE9\uDAC7\u599A\u77C3\u59F0"+
-            "\u436E\u36D4\u8E2A\u8EA7\uDAC8\u8F30\u8F4A\u42F4"+
-            "\u6C58\u6FBB\uDAC9\u489B\u6F79\u6E8B\uDACA\u9BE9"+
-            "\u36B5\uDACB\u90BB\uFFFD\u5571\u4906\u91BB\u9404"+
-            "\uDACC\u4062\uDACD\u9427\uDACE\uDACF\u84E5\u8A2B"+
-            "\u9599\u95A7\u9597\u9596\uDAD0\u7445\u3EC2\uDAD1"+
-            "\uDAD2\uDAD3\u3EE7\uDAD4\u968F\uDAD5\uDAD6\uDAD7"+
-            "\u3ECC\uDAD8\uDAD9\uDADA\u7412\u746B\u3EFC\u9741"+
-            "\uDADB\u6847\u4A1D\uDADC\uDADD\uFFFD\u9368\uDADE"+
-            "\uDADF\uDAE0\uDAE1\u92BA\u5B11\u8B69\u493C\u73F9"+
-            "\uDAE2\u979B\u9771\u9938\uDAE3\u5DC1\uDAE4\uDAE5"+
-            "\u981F\uDAE6\u92F6\uDAE7\u91E5\u44C0\uDAE8\uDAE9"+
-            "\uDAEA\u98DC\uDAEB\u3F00\u922A\u4925\u8414\u993B"+
-            "\u994D\uDAEC\u3DFD\u999B\u4B6F\u99AA\u9A5C\uDAED"+
-            "\uDAEE\u6A8F\u9A21\u5AFE\u9A2F\uDAEF\u4B90\uDAF0"+
-            "\u99BC\u4BBD\u4B97\u937D\u5872\uDAF1\u5822\uDAF2"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uDAF3\u7844\uDAF4\uDAF5\u68C5\u3D7D"+
-            "\u9458\u3927\u6150\uDAF6\uDAF7\u6107\u9C4F\u9C53"+
-            "\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uDAF8\u9B9F\uDAF9"+
-            "\uDAFA\u9D21\u4CAE\uDAFB\u9E18\u4CB0\u9D0C\uDAFC"+
-            "\uDAFD\uDAFE\uDAFF\u9DA5\u84BD\uDB00\uDB01\uDB02"+
-            "\u85FC\u4533\uDB03\uDB04\uDB05\u8420\u85EE\uDB06"+
-            "\uDB07\uDB08\u79E2\uDB09\uDB0A\u492D\uDB0B\u3D62"+
-            "\u93DB\u92BE\u9348\uDB0C\u78B9\u9277\u944D\u4FE4"+
-            "\u3440\u9064\uDB0D\u783D\u7854\u78B6\u784B\uDB0E"+
-            "\uDB0F\uDB10\u369A\u4F72\u6FDA\u6FD9\uFFFD\u701E"+
-            "\u5414\uDB11\u57BB\u58F3\u578A\u9D16\u57D7\u7134"+
-            "\u34AF\uDB12\u71EB\uDB13\uDB14\uFFFD\uDB15\uDB16";
-
-        private final static String innerIndex1=
-            "\u610C\u5ACE\u5A0B\u42BC\uDB17\u372C\u4B7B\uDB18"+
-            "\u93BB\u93B8\uDB19\uDB1A\u8472\uDB1B\uDB1C\uDB1D"+
-            "\uDB1E\uDB1F\u5994\uDB20\uDB21\u7DA8\uDB22\uDB23"+
-            "\uDB24\uDB25\uDB26\u92E5\u73E2\u3EE9\u74B4\uDB27"+
-            "\uDB28\u3EE1\uDB29\u6AD8\u73F3\u73FB\u3ED6\uDB2A"+
-            "\uDB2B\uDB2C\uDB2D\uDB2E\uDB2F\uDB30\u7448\uDB31"+
-            "\u70A5\uDB32\u9284\u73E6\u935F\uDB33\u9331\uDB34"+
-            "\uDB35\u9386\uDB36\uDB37\u4935\uDB38\u716B\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uDB39\uDB3A\u56A4\uDB3B\uDB3C\uDB3D\u5502"+
-            "\u79C4\uDB3E\u7DFE\uDB3F\uDB40\uDB41\u452E\u9401"+
-            "\u370A\uDB42\uDB43\u59B0\uDB44\uDB45\uDB46\u5AA1"+
-            "\u36E2\uDB47\u36B0\u925F\u5A79\uDB48\uDB49\u9374"+
-            "\u3CCD\uDB4A\u4A96\u398A\u50F4\u3D69\u3D4C\uDB4B"+
-            "\u7175\u42FB\uDB4C\u6E0F\uDB4D\u44EB\u6D57\uDB4E"+
-            "\u7067\u6CAF\u3CD6\uDB4F\uDB50\u6E02\u6F0C\u3D6F"+
-            "\uDB51\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4"+
-            "\u926E\u493E\u8F41\uDB52\uDB53\u5812\u57C8\u36D6"+
-            "\uDB54\u70FE\uDB55\uDB56\uDB57\uDB58\uDB59\u68B9"+
-            "\u6967\uDB5A\uDB5B\uDB5C\uDB5D\uDB5E\uDB5F\uDB60"+
-            "\uDB61\u6A1A\uDB62\uDB63\u843E\u44DF\u44CE\uDB64"+
-            "\uDB65\uDB66\uDB67\u6F17\uDB68\u833D\uDB69\u83ED"+
-            "\uDB6A\uDB6B\uDB6C\u5989\u5A82\uDB6D\u5A61\u5A71"+
-            "\uDB6E\uDB6F\u372D\u59EF\uDB70\u36C7\u718E\u9390"+
-            "\u669A\uDB71\u5A6E\u5A2B\uDB72\u6A2B\uDB73\uDB74"+
-            "\uDB75\uDB76\u711D\uDB77\uDB78\u4FB0\uDB79\u5CC2"+
-            "\uDB7A\uDB7B\uDB7C\u6A0C\uDB7D\uDB7E\u70A6\u7133"+
-            "\uDB7F\u3DA5\u6CDF\uDB80\uDB81\u7E65\u59EB\u5D2F"+
-            "\u3DF3\u5F5C\uDB82\uDB83\u7DA4\u8426\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u5485\uDB84\uDB85\uDB86\u577E\uDB87\uDB88\u3FE5"+
-            "\uDB89\uDB8A\u7003\uDB8B\u5D70\u738F\u7CD3\uDB8C"+
-            "\uDB8D\u4FC8\u7FE7\u72CD\u7310\uDB8E\u7338\u7339"+
-            "\uDB8F\u7341\u7348\u3EA9\uDB90\u906C\u71F5\uDB91"+
-            "\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419"+
-            "\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E"+
-            "\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC"+
-            "\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uDB92\u7188"+
-            "\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045"+
-            "\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2"+
-            "\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866"+
-            "\u8448\uDB93\u7933\u6803\u7932\u4103\u4109\u7991"+
-            "\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC"+
-            "\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C"+
-            "\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C"+
-            "\u7CB8\u4294\u7CED\u8F93\u70C0\uDB94\u7DCF\u7DD4"+
-            "\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025"+
-            "\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7"+
-            "\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114"+
-            "\u4401\u3B39\u8156\u8159\u815A\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4413"+
-            "\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF"+
-            "\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8"+
-            "\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464"+
-            "\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538"+
-            "\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692"+
-            "\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF"+
-            "\u8924\u8947\u8991\uDB95\u8A29\u8A38\u8A94\u8AB4"+
-            "\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED"+
-            "\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837"+
-            "\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA"+
-            "\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228"+
-            "\u9258\u926B\u92B1\u92AE\u92BF\u92E3\u92EB\u92F3"+
-            "\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF"+
-            "\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479"+
-            "\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24"+
-            "\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9"+
-            "\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937"+
-            "\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F"+
-            "\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20"+
-            "\u376F\uDB96\u9D49\u9C3A\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9EFE\u5650"+
-            "\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC"+
-            "\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8"+
-            "\u9F44\uDB97\uDB98\uDB99\u691A\u94C3\u59AC\uDB9A"+
-            "\u5840\u94C1\u37B9\uDB9B\uDB9C\uDB9D\uDB9E\u5757"+
-            "\u7173\uDB9F\uDBA0\uDBA1\u546A\uDBA2\uDBA3\u549E"+
-            "\uDBA4\uDBA5\uDBA6\uDBA7\uDBA8\u60E7\uDBA9\u567A"+
-            "\uDBAA\uDBAB\uDBAC\uDBAD\uDBAE\uDBAF\u6955\u9C2F"+
-            "\u87A5\uDBB0\uDBB1\uDBB2\uDBB3\uDBB4\uDBB5\u5C20"+
-            "\uDBB6\u5E0B\uDBB7\uDBB8\uDBB9\u671E\uDBBA\uDBBB"+
-            "\uDBBC\u3647\uDBBD\uDBBE\uDBBF\uDBC0\u5364\u84AD"+
-            "\uDBC1\uDBC2\uDBC3\u8B81\uDBC4\uDBC5\uDBC6\uDBC7"+
-            "\u4E78\u70BB\uDBC8\uDBC9\uDBCA\uDBCB\uDBCC\uDBCD"+
-            "\uDBCE\uDBCF\u62C3\uDBD0\uDBD1\u7198\u6855\uDBD2"+
-            "\u69E9\u36C8\uDBD3\uDBD4\uDBD5\uDBD6\uDBD7\uDBD8"+
-            "\u82FD\uDBD9\uDBDA\uDBDB\u89A5\uDBDC\u8FA0\uDBDD"+
-            "\u97B8\uDBDE\u9847\u9ABD\uDBDF\uFFFD\uDBE0\uDBE1"+
-            "\uDBE2\uDBE3\uDBE4\uDBE5\uDBE6\uDBE7\uDBE8\uDBE9"+
-            "\uDBEA\uDBEB\uDBEC\uDBED\u5FB1\u6648\u66BF\uDBEE"+
-            "\uDBEF\uDBF0\uFFFD\uDBF1\uFFFD\uDBF2\uDBF3\uFFFD"+
-            "\uDBF4\u58B5\u670E\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6918\uDBF5\uDBF6"+
-            "\uDBF7\uDBF8\uDBF9\uDBFA\uDBFB\u48D0\u4AB8\uDBFC"+
-            "\uDBFD\uDBFE\uDBFF\uDC00\uDC01\uDC02\uDC03\uDC04"+
-            "\u51D2\uDC05\u599F\uDC06\u3BBE\uDC07\uDC08\uDC09"+
-            "\u5788\uDC0A\u399B\uDC0B\uDC0C\uDC0D\u3762\uDC0E"+
-            "\u8B5E\uDC0F\uFFFD\uDC10\uDC11\uDC12\u7209\uDC13"+
-            "\uDC14\u5965\uDC15\uDC16\uDC17\u8EDA\uDC18\u528F"+
-            "\u573F\u7171\uDC19\uDC1A\uDC1B\uDC1C\u55BC\uDC1D"+
-            "\uDC1E\uDC1F\uFFFD\u3473\uDC20\uDC21\uDC22\u4718"+
-            "\uDC23\uDC24\uDC25\uDC26\uDC27\u5066\u34FB\uDC28"+
-            "\uFFFD\uDC29\u477C\uDC2A\uDC2B\uDC2C\uDC2D\uDC2E"+
-            "\u57A1\u7151\uFFFD\uDC2F\uDC30\u9056\uDC31\uDC32"+
-            "\u8B62\uDC33\uDC34\u5D5B\uDC35\uFFFD\uDC36\uDC37"+
-            "\u8AEA\uDC38\uDC39\uDC3A\uDC3B\u4BC0\uDC3C\uDC3D"+
-            "\uDC3E\u9465\uDC3F\u6195\u5A27\uDC40\uFFFD\u56B9"+
-            "\uDC41\uDC42\u4E6A\uDC43\u9656\u6D8F\uDC44\u3618"+
-            "\u8977\uDC45\uDC46\uDC47\uDC48\uFFFD\uDC49\u7B42"+
-            "\uDC4A\uDC4B\uDC4C\uFFFD\uDC4D\u7A45\uFFFD\uDC4E"+
-            "\u9A26\uDC4F\u365F\uDC50\uDC51\u7983\uDC52\uDC53"+
-            "\u5D2C\uDC54\uFFFD\uDC55\u46D0\uDC56\u753B\u8865"+
-            "\uDC57\u58B6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\u371C\uDC58\uDC59\uDC5A"+
-            "\u3C54\uDC5B\uDC5C\u9281\uDC5D\uDC5E\u9330\uDC5F"+
-            "\uDC60\u6C39\u949F\uDC61\uDC62\u8827\u88F5\uDC63"+
-            "\uDC64\uDC65\u6EB8\uDC66\uDC67\u39A4\u36B9\uFFFD"+
-            "\uFFFD\u453F\u66B6\uDC68\uDC69\u8943\uDC6A\uDC6B"+
-            "\u56D6\u40DF\uDC6C\u39A1\uDC6D\uDC6E\uDC6F\u71AD"+
-            "\u8366\uDC70\uDC71\uFFFD\u4CB7\uDC72\uDC73\uDC74"+
-            "\uDC75\uDC76\uDC77\uDC78\u7B43\u797E\uDC79\u6FB5"+
-            "\uDC7A\u6A03\uDC7B\u53A2\uDC7C\u93BF\u6836\u975D"+
-            "\uDC7D\uDC7E\uDC7F\uDC80\uDC81\uDC82\u5D85\uDC83"+
-            "\uDC84\u5715\u9823\uDC85\u5DAB\uDC86\u65BE\u69D5"+
-            "\u53D2\uDC87\uDC88\u3C11\u6736\uDC89\uDC8A\uDC8B"+
-            "\uDC8C\uDC8D\uDC8E\uDC8F\uDC90\uDC91\uDC92\uDC93"+
-            "\u35CA\uDC94\uDC95\u48FA\u63E6\uDC96\u7808\u9255"+
-            "\uDC97\u43F2\uDC98\u43DF\uDC99\uDC9A\uDC9B\u59F8"+
-            "\uDC9C\uFFFD\uDC9D\uDC9E\uFFFD\uDC9F\uDCA0\u3DF7"+
-            "\uDCA1\uDCA2\u8FD0\u728F\u568B\uDCA3\uDCA4\uDCA5"+
-            "\uDCA6\uDCA7\uDCA8\uDCA9\uDCAA\uDCAB\uDCAC\uDCAD"+
-            "\uDCAE\uDCAF\u7E9F\uDCB0\uDCB1\u4CA4\u9547\uDCB2"+
-            "\u71A2\uDCB3\u4D91\u9012\uDCB4\u4D9C\uDCB5\u8FBE"+
-            "\u55C1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u8FBA\uDCB6\u8FB9\uDCB7\u4509"+
-            "\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uDCB8\uDCB9\u373A"+
-            "\u8E80\uDCBA\uDCBB\uDCBC\uDCBD\uDCBE\uDCBF\u3DEB"+
-            "\uDCC0\uDCC1\uDCC2\uDCC3\u4E9A\uDCC4\uDCC5\u56BF"+
-            "\uDCC6\u8E0E\u5B6D\uDCC7\uDCC8\u63DE\uFFFD\uDCC9"+
-            "\uDCCA\u6530\u562D\uDCCB\u541A\uDCCC\u3DC6\uDCCD"+
-            "\u4C7D\u5622\u561E\u7F49\uDCCE\u5975\uDCCF\u8770"+
-            "\u4E1C\uDCD0\uDCD1\uDCD2\u8117\u9D5E\u8D18\u763B"+
-            "\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625"+
-            "\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uDCD3"+
-            "\u35CE\u5605\u55F1\u66F1\uDCD4\u362D\u7534\u55F0"+
-            "\u55BA\u5497\u5572\uDCD5\uDCD6\u5ED0\uDCD7\uDCD8"+
-            "\uDCD9\uDCDA\u9EAB\u7D5A\u55DE\uDCDB\u629D\u976D"+
-            "\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569"+
-            "\uDCDC\u9C72\uDCDD\u519A\u34DF\uDCDE\u51A7\u544D"+
-            "\u551E\u5513\u7666\u8E2D\uDCDF\u75B1\u80B6\u8804"+
-            "\u8786\u88C7\u81B6\u841C\uDCE0\u44EC\u7304\uDCE1"+
-            "\u5B90\u830B\uDCE2\u567B\uDCE3\uDCE4\uDCE5\uDCE6"+
-            "\uDCE7\uDCE8\u9170\uDCE9\u9208\uDCEA\uDCEB\uDCEC"+
-            "\uDCED\u7266\uDCEE\u474E\uDCEF\uDCF0\uDCF1\u40FA"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\u9C5D\u651F\uDCF2\u48F3\uDCF3\uDCF4"+
-            "\uDCF5\uDCF6\uFFFD\uDCF7\uDCF8\uFFFD\uDCF9\uDCFA"+
-            "\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2"+
-            "\u5367\u36AC\u39DC\u537D\u36A5\uDCFB\u589A\uDCFC"+
-            "\u822D\u544B\u57AA\uDCFD\uDCFE\uFFFD\u3A52\uDCFF"+
-            "\u7374\uDD00\u4D09\u9BED\uDD01\uDD02\u4C5B\uDD03"+
-            "\uDD04\uDD05\u845C\uDD06\uDD07\uDD08\uDD09\u632E"+
-            "\u7D25\uDD0A\uDD0B\u3A2A\u9008\u52CC\u3E74\u367A"+
-            "\u45E9\uDD0C\u7640\u5AF0\uDD0D\u787A\u47B6\u58A7"+
-            "\u40BF\u567C\u9B8B\u5D74\u7654\uDD0E\u9E85\u4CE1"+
-            "\uFFFD\u37FB\u6119\uDD0F\uDD10\uFFFD\u565D\uDD11"+
-            "\u57A7\uDD12\uDD13\u5234\uDD14\u35AD\uFFFD\u9D7C"+
-            "\u7C56\u9B39\u57DE\uDD15\u5C53\u64D3\uDD16\uDD17"+
-            "\uDD18\u86AD\uDD19\uDD1A\uDD1B\uDD1C\uFFFD\u51FE"+
-            "\uDD1D\u5D8E\u9703\uDD1E\u9E81\u904C\u7B1F\u9B02"+
-            "\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E"+
-            "\uFFFD\u7C42\u7C86\u9C15\u7BFC\u9B09\uFFFD\u9C1B"+
-            "\uDD1F\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260"+
-            "\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB"+
-            "\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980"+
-            "\u50A6\u7546\uDD20\u99DA\u5273\uFFFD\u9159\u9681"+
-            "\u915C\uFFFD\u9151\uDD21\u637F\uDD22\u6ACA\u5611"+
-            "\u918E\u757A\u6285\uDD23\u734F\u7C70\uDD24\uDD25"+
-            "\uFFFD\uDD26\u76D6\u9B9D\u4E2A\uDD27\u83BE\u8842"+
-            "\uFFFD\u5C4A\u69C0\uFFFD\u577A\u521F\u5DF5\u4ECE"+
-            "\u6C31\uDD28\u4F39\u549C\u54DA\u529A\u8D82\u35FE"+
-            "\uFFFD\u35F3\uFFFD\u6B52\u917C\u9FA5\u9B97\u982E"+
-            "\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\uFFFD\u6BFA"+
-            "\u8818\u7F78\uFFFD\u5620\uDD29\u8E77\u9F53\uFFFD"+
-            "\u8DD4\u8E4F\u9E1C\u8E01\u6282\uDD2A\u8E28\u8E75"+
-            "\u7AD3\uDD2B\u7A3E\u78D8\u6CEA\u8A67\u7607\uDD2C"+
-            "\u9F26\u6CCE\u87D6\u75C3\uDD2D\u7853\uDD2E\u8D0C"+
-            "\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uDD2F\u862F"+
-            "\u5FBA\u88A0\u44B7\uFFFD\uDD30\uDD31\uFFFD\u8A7E"+
-            "\uDD32\uFFFD\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F"+
-            "\u87F5\uFFFD\uFFFD\u8CF7\u732C\u9721\u9BB0\u35D6"+
-            "\u72B2\u4C07\u7C51\u994A\uDD33\u6159\u4C04\u9E96"+
-            "\u617D\uFFFD\u575F\u616F\u62A6\u6239\uFFFD\u3A5C"+
-            "\u61E2\u53AA\uDD34\u6364\u6802\u35D2\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\u5D57\uDD35\u8FDA\uDD36\uFFFD\u50D9\uDD37\u7906"+
-            "\u5332\u9638\uDD38\u4065\uFFFD\u77FE\uFFFD\u7CC2"+
-            "\uDD39\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2"+
-            "\u8994\u821A\u670C\u8062\uDD3A\u805B\u74F0\u8103"+
-            "\u7724\u8989\uDD3B\u7553\uDD3C\u87A9\u87CE\u81C8"+
-            "\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635"+
-            "\u69B2\u8DA6\uFFFD\u89A9\uFFFD\u6DB9\u87C1\uDD3D"+
-            "\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\uFFFD\u6077"+
-            "\uFFFD\u7F71\uDD3E\uFFFD\u60E9\u4B7E\u5220\u3C18"+
-            "\uDD3F\uDD40\uDD41\uDD42\uDD43\uDD44\uDD45\uDD46"+
-            "\uDD47\u5CC1\uDD48\uDD49\uDD4A\uDD4B\uDD4C\uDD4D"+
-            "\u4562\u5B1F\uDD4E\u9F50\u9EA6\uDD4F\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460"+
-            "\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468"+
-            "\u2469\u2474\u2475\u2476\u2477\u2478\u2479\u247A"+
-            "\u247B\u247C\u247D\u2170\u2171\u2172\u2173\u2174"+
-            "\u2175\u2176\u2177\u2178\u2179\u4E36\u4E3F\u4E85"+
-            "\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6"+
-            "\u590A\u5B80\u5DDB\u2F33\u5E7F\uFFFD\u5F50\u5F61"+
-            "\u6534\uFFFD\u7592\uFFFD\u8FB5\uFFFD\u00A8\u02C6"+
-            "\u30FD\u30FE\u309D\u309E\uFFFD\uFFFD\u3005\u3006"+
-            "\u3007\u30FC\uFF3B\uFF3D\u273D\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"+
-            "\u30A1\u30A2\u30A3\u30A4\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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"+
-            "\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\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\u21E7\u21B8\u21B9\uF7E5\uDD50\u4E5A"+
-            "\uDD51\u5202\uF7EA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF7EB\u5188\uF7ED"+
-            "\uDD52\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121"+
-            "\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A"+
-            "\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA"+
-            "\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC"+
-            "\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\uFFFD\uFFFD"+
-            "\uFFFD\u0283\u0250\u025B\u0254\u0275\u0153\u00F8"+
-            "\u014B\u028A\u026A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA"+
-            "\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569"+
-            "\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558"+
-            "\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562"+
-            "\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570"+
-            "\u256F\uFFED\uDD53\u92DB\uDD54\uDD55\u854C\u42B5"+
-            "\u73EF\u51B5\u3649\uDD56\uDD57\u9344\uDD58\u82EE"+
-            "\uDD59\u783C\u6744\u62DF\uDD5A\uDD5B\uDD5C\uDD5D"+
-            "\uDD5E\u4FAB\uDD5F\u5008\uDD60\uDD61\uDD62\uDD63"+
-            "\uDD64\uFFFD\uDD65\u5FA4\uDD66\uDD67\u6EDB\uDD68"+
-            "\uFFFD\u5101\u347A\u510E\u986C\u3743\u8416\uDD69"+
-            "\uDD6A\u5160\uDD6B\u516A\uDD6C\uDD6D\uDD6E\uDD6F"+
-            "\uDD70\uDD71\uDD72\u5B82\u877D\uDD73\uDD74\u51B2"+
-            "\u51B8\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\u9D34\u51C9\u51CF\u51D1\u3CDC"+
-            "\u51D3\uDD75\u51B3\u51E2\u5342\u51ED\u83CD\u693E"+
-            "\uDD76\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294"+
-            "\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uDD77\uFFFD"+
-            "\uDD78\u5549\u6ED9\uDD79\uDD7A\uDD7B\u5333\uFFFD"+
-            "\uDD7C\u6CCB\uDD7D\u681B\u73D5\u604A\u3EAA\u38CC"+
-            "\uDD7E\u71DD\u44A2\u536D\u5374\uDD7F\u537E\uFFFD"+
-            "\uDD80\uDD81\u77E6\u5393\uDD82\u53A0\u53AB\u53AE"+
-            "\u73A7\uDD83\u3F59\u739C\u53C1\u53C5\u6C49\u4E49"+
-            "\u57FE\u53D9\u3AAB\uDD84\u53E0\uDD85\uDD86\u53F6"+
-            "\uDD87\u5413\u7079\u552B\u6657\u6D5B\u546D\uDD88"+
-            "\uDD89\u555D\u548F\u54A4\u47A6\uDD8A\uDD8B\u3DB4"+
-            "\uDD8C\uDD8D\uDD8E\u5547\u4CED\u542F\u7417\u5586"+
-            "\u55A9\uFFFD\uDD8F\uDD90\u4552\uDD91\u66B3\uDD92"+
-            "\u5637\u66CD\uDD93\u66A4\u66AD\u564D\u564F\u78F1"+
-            "\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uDD94\u3623"+
-            "\uDD95\u5746\uDD96\u6C6E\u708B\u5742\u36B1\uDD97"+
-            "\u57E6\uDD98\u5803\uDD99\uDD9A\u5826\uDD9B\u585C"+
-            "\u58AA\u3561\u58E0\u58DC\uDD9C\u58FB\u5BFF\u5743"+
-            "\uDD9D\uDD9E\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uDD9F\u5A24\u5553\uDDA0\u8505\u59C9"+
-            "\uDDA1\uDDA2\uDDA3\uDDA4\u59D9\uDDA5\uDDA6\uDDA7"+
-            "\u6D71\uDDA8\uDDA9\u59F9\uDDAA\u5AAB\u5A63\u36E6"+
-            "\uDDAB\uFFFD\u3708\u5A96\u7465\u5AD3\uDDAC\uDDAD"+
-            "\u3D85\uDDAE\u3732\uDDAF\u5E83\u52D0\u5B76\u6588"+
-            "\u5B7C\uDDB0\u4004\u485D\uDDB1\u5BD5\u6160\uDDB2"+
-            "\uDDB3\uDDB4\u5BF3\u5B9D\u4D10\u5C05\uDDB5\u5C13"+
-            "\u73CE\u5C14\uDDB6\uDDB7\u5C49\u48DD\u5C85\u5CE9"+
-            "\u5CEF\u5D8B\uDDB8\uDDB9\u5D10\u5D18\u5D46\uDDBA"+
-            "\u5CBA\u5DD7\u82FC\u382D\uDDBB\uDDBC\uDDBD\u8287"+
-            "\u3836\u3BC2\u5E2E\u6A8A\uFFFD\u5E7A\uDDBE\uDDBF"+
-            "\u53A6\u4EB7\uFFFD\u53A8\uDDC0\u5E09\u5EF4\uDDC1";
-
-        private final static String innerIndex2=
-            "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uDDC2"+
-            "\uDDC3\u3ADE\u48AE\uDDC4\u5F3A\uDDC5\uDDC6\uFFFD"+
-            "\uDDC7\u5F63\u97BD\uDDC8\u5F72\u9340\uDDC9\u5FA7"+
-            "\u5DB6\u3D5F\uDDCA\uDDCB\uDDCC\uDDCD\u91D6\uDDCE"+
-            "\uDDCF\u6031\u6685\uDDD0\u3963\u3DC7\u3639\u5790"+
-            "\uDDD1\u7971\u3E40\u609E\uFFFD\u60B3\uDDD2\uDDD3"+
-            "\uDDD4\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uDDD5"+
-            "\uDDD6\u6181\u51F4\uDDD7\u6187\u5BAA\uDDD8\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uDDD9\u61D3\uDDDA\uDDDB\u61D0\u3932\uDDDC"+
-            "\uDDDD\u6023\u615C\u651E\u638B\uDDDE\u62C5\uDDDF"+
-            "\u62D5\uDDE0\u636C\uDDE1\u3A17\u6438\u63F8\uDDE2"+
-            "\uDDE3\uFFFD\u6F8A\uDDE4\u9814\uDDE5\uDDE6\u64E1"+
-            "\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uDDE7"+
-            "\uDDE8\u6585\u656D\u655F\uDDE9\u65B5\uDDEA\u4B37"+
-            "\u65D1\u40D8\uDDEB\u65E0\u65E3\u5FDF\uDDEC\u6618"+
-            "\uDDED\uDDEE\u6644\uDDEF\uDDF0\u664B\uDDF1\u6667"+
-            "\uDDF2\u6673\uFFFD\uDDF3\uDDF4\uDDF5\uDDF6\uDDF7"+
-            "\u77C5\uDDF8\u99A4\u6702\uDDF9\uDDFA\u3B2B\u69FA"+
-            "\uDDFB\uFFFD\u6767\u6762\uDDFC\uDDFD\u67D7\u44E9"+
-            "\u6822\u6E50\u923C\u6801\uDDFE\uDDFF\u685D\uDE00"+
-            "\u69E1\u6A0B\uDE01\u6973\u68C3\uDE02\u6901\u6900"+
-            "\u3D32\u3A01\uDE03\u3B80\u67AC\u6961\uDE04\u42FC"+
-            "\u6936\u6998\u3BA1\uDE05\u8363\u5090\u69F9\uDE06"+
-            "\uDE07\u6A45\uDE08\u6A9D\u3BF3\u67B1\u6AC8\uDE09"+
-            "\u3C0D\u6B1D\uDE0A\u60DE\u6B35\u6B74\uDE0B\u6EB5"+
-            "\uDE0C\uDE0D\uDE0E\u3740\u5421\uDE0F\u6BE1\uDE10"+
-            "\u6BDC\u6C37\uDE11\uDE12\uDE13\u6C5A\u8226\u6C79"+
-            "\uDE14\u44C5\uDE15\uDE16\uDE17\uDE18\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uDE19\u36E5\u3CEB\uDE1A\u9B83\uDE1B\uDE1C\u7F8F"+
-            "\u6837\uDE1D\uDE1E\uDE1F\u6D96\u6D5C\u6E7C\u6F04"+
-            "\uDE20\uDE21\uDE22\u8533\uDE23\u51C7\uFFFD\uFFFD"+
-            "\u842E\uDE24\uFFFD\uDE25\u7453\uDE26\u79CC\u6E4F"+
-            "\u5A91\uDE27\u6FF8\u370D\u6F9D\uDE28\u6EFA\uDE29"+
-            "\uDE2A\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uDE2B"+
-            "\u3D3B\u6F9F\uDE2C\u6FD3\uDE2D\uDE2E\uDE2F\uDE30"+
-            "\uDE31\uDE32\u51DF\uDE33\uDE34\uDE35\uDE36\u704B"+
-            "\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104"+
-            "\u3DE8\u71B4\u7196\uDE37\u712B\u7145\u5A88\u714A"+
-            "\uFFFD\u5C9C\uDE38\u714F\u9362\uDE39\u712C\uDE3A"+
-            "\uDE3B\uDE3C\u71BA\uDE3D\u70BD\u720E\u9442\u7215"+
-            "\u5911\u9443\u7224\u9341\uDE3E\u722E\u7240\uDE3F"+
-            "\u68BD\u7255\u7257\u3E55\uDE40\u680D\u6F3D\u7282"+
-            "\uFFFD\u732B\uDE41\uDE42\u48ED\uDE43\u7328\u732E"+
-            "\u73CF\u73AA\uDE44\uDE45\u73C9\u7449\uDE46\uDE47"+
-            "\uDE48\u6623\u36C5\uDE49\uDE4A\uDE4B\u73F7\u7415"+
-            "\u6903\uDE4C\u7439\uDE4D\u3ED7\uFFFD\uDE4E\u7460"+
-            "\uDE4F\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474"+
-            "\u93F1\u6A2C\u7482\u4953\uDE50\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-            "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uDE51"+
-            "\uDE52\uDE53\u5B46\uDE54\uDE55\u74C8\uDE56\u750E"+
-            "\uFFFD\u751E\uDE57\uDE58\u5BD7\uDE59\u9385\u754D"+
-            "\u754A\u7567\u756E\uDE5A\u3F04\uDE5B\u758E\u745D"+
-            "\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676"+
-            "\uDE5C\u7690\u81EF\u37F8\uDE5D\uDE5E\u76A1\u76A5"+
-            "\u76B7\u76CC\uDE5F\u8462\uDE60\uDE61\uDE62\u771E"+
-            "\u7726\u7740\u64AF\uDE63\u7758\uDE64\u77AF\uDE65"+
-            "\uDE66\uDE67\u77F4\uFFFD\uDE68\uDE69\u68CA\u78AF"+
-            "\u78C7\u78D3\u96A5\u792E\uDE6A\u78D7\u7934\u78B1"+
-            "\uDE6B\u8FB8\u8884\uDE6C\uDE6D\uDE6E\u7986\u8900"+
-            "\u6902\u7980\uDE6F\u799D\uDE70\u793C\u79A9\u6E2A"+
-            "\uDE71\u3EA8\u79C6\uDE72\u79D4";
-
-        private 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 0
-        };
-
-        private final String SurrogateMappings =
-            "\ud840\udd0c\ud840\udcd1\ud840\udccd\ud840\udccb"+
-            "\ud847\udfe8\ud840\udcca\ud840\udd0e\ud868\udfa9"+
-            "\ud844\udd45\ud85d\udf35\ud842\udde7\ud867\uddf6"+
-            "\ud85c\udc0e\ud868\udd33\ud861\udc6c\ud847\uddca"+
-            "\ud841\uddd0\ud84a\udee6\ud85f\udd84\ud843\udc42"+
-            "\ud843\udd15\ud854\udd2b\ud84b\udcc6\ud840\udf41"+
-            "\ud853\uddb8\ud865\udce5\ud860\udcbe\ud84b\udc38"+
-            "\ud860\udd5d\ud85a\uddf2\ud853\uddea\ud843\udd7c"+
-            "\ud843\udfb4\ud843\udcd5\ud844\udcf4\ud843\ude96"+
-            "\ud843\udc0b\ud843\udf64\ud84b\udca9\ud860\ude56"+
-            "\ud851\udcd3\ud843\udd46\ud866\ude4d\ud860\udce9"+
-            "\ud853\udea7\ud84b\udcc2\ud865\uddf4\ud854\udec7"+
-            "\ud865\udfd4\ud85e\udcc8\ud84b\udd44\ud858\udca5"+
-            "\ud84b\udd4c\ud84a\udfca\ud844\udc77\ud844\udc6f"+
-            "\ud859\udeda\ud859\udf16\ud85e\udda0\ud854\udc52"+
-            "\ud843\udc43\ud848\udda1\ud862\udf4c\ud841\udf31"+
-            "\ud840\udda9\ud84b\udd8d\ud851\uddc8\ud841\udcfc"+
-            "\ud858\udc97\ud843\udf4c\ud843\udd96\ud84a\ude66"+
-            "\ud844\udc9d\ud843\udd9c\ud849\udf75\ud869\ude01"+
-            "\ud843\ude09\ud84a\udecf\ud84b\udcc9\ud844\udcc8"+
-            "\ud84e\uddc2\ud860\ude9b\ud857\ude49\ud848\udcc7"+
-            "\ud843\udf31\ud84b\udcb2\ud865\udf20\ud853\ude3b"+
-            "\ud85d\udd74\ud84b\ude8b\ud848\ude08\ud869\ude5b"+
-            "\ud863\udccd\ud843\ude7a\ud843\udc34\ud85a\udc1c"+
-            "\ud844\udccf\ud84a\udc03\ud84a\udd39\ud854\udde3"+
-            "\ud843\ude8c\ud843\udf8d\ud843\udeaa\ud843\udf30"+
-            "\ud843\udd47\ud844\udd4f\ud843\ude4c\ud843\udeab"+
-            "\ud842\udfa9\ud843\udd48\ud844\udcc0\ud844\udd3d"+
-            "\ud849\ude96\ud843\udfad\ud84c\udff4\ud85d\ude39"+
-            "\ud84a\udfce\ud843\udd7e\ud843\udd7f\ud84b\udc51"+
-            "\ud84b\udc55\ud843\ude98\ud844\udcc7\ud843\udf2e"+
-            "\ud869\ude32\ud85a\udf50\ud863\udcd2\ud863\udd99"+
-            "\ud863\udcca\ud867\udec3\ud85d\udf5e\ud84b\uddee"+
-            "\ud859\udd72\ud860\udcbd\ud843\udefa\ud843\ude0f"+
-            "\ud843\ude77\ud843\udefb\ud853\uddeb\ud843\udcd6"+
-            "\ud849\udfb5\ud844\udcc9\ud843\ude10\ud843\ude78"+
-            "\ud844\udc78\ud844\udd48\ud860\ude07\ud845\udc55"+
-            "\ud843\ude79\ud853\ude50\ud84b\udda4\ud844\udc1d"+
-            "\ud844\udc1e\ud844\udcf5\ud844\udcf6\ud843\ude11"+
-            "\ud85d\ude94\ud860\udecd\ud843\udfb5\ud843\ude7b"+
-            "\ud854\udd7e\ud843\udfb6\ud844\udd80\ud854\uded8"+
-            "\ud868\udebd\ud852\uddda\ud846\udc3a\ud850\udd77"+
-            "\ud860\ude7c\ud855\udf3d\ud856\udf74\ud84c\udd3d"+
-            "\ud846\udfc1\ud87e\udc78\ud840\udc86\ud852\udce9"+
-            "\ud858\ude6a\ud858\udf4b\ud859\ude12\ud85a\udd51"+
-            "\ud85e\udcb2\ud863\ude0f\ud866\udc10\ud840\udc87"+
-            "\ud867\udc73\ud850\udd4e\ud854\uddcd\ud857\udd30"+
-            "\ud862\ude32\ud84c\ude81\ud868\udd07\ud846\udd80"+
-            "\ud861\udf0f\ud868\udeba\ud866\udd47\ud862\udeea"+
-            "\ud848\udc7e\ud862\udde3\ud847\uddb6\ud849\udf12"+
-            "\ud84c\udff9\ud84f\udc63\ud851\udd05\ud852\ude13"+
-            "\ud857\udca4\ud855\ude95\ud863\uddb9\ud845\udc3f"+
-            "\ud852\udd7b\ud85c\udd0d\ud85b\udd74\ud85a\udf15"+
-            "\ud85b\udfbe\ud862\uddc0\ud84f\udf41\ud840\udf25"+
-            "\ud843\uded8\ud84f\uded7\ud85b\uded3\ud855\udfe0"+
-            "\ud862\udfe9\ud856\udce1\ud865\udcd9\ud856\uddac"+
-            "\ud859\udc8d\ud857\udc01\ud854\udf0e\ud857\udcfe"+
-            "\ud856\udfb4\ud85b\udc7f\ud857\udd20\ud857\udc65"+
-            "\ud857\udcc1\ud852\udc82\ud851\udd78\ud85b\ude44"+
-            "\ud85b\uded6\ud850\udc57\ud858\udc29\ud845\udff9"+
-            "\ud860\udf6d\ud858\udd21\ud858\udd5a\ud858\uded0"+
-            "\ud858\udf51\ud845\ude61\ud840\udc68\ud84d\udf66"+
-            "\ud860\udf3a\ud859\udc89\ud868\udc87\ud85b\udcc3"+
-            "\ud849\udf14\ud859\ude26\ud84f\udde3\ud859\udee8"+
-            "\ud862\ude48\ud849\udef6\ud859\udc98\ud853\udfb8"+
-            "\ud845\udc8a\ud846\udc5e\ud852\ude65\ud852\ude95"+
-            "\ud842\udf0d\ud85a\ude52\ud84f\udd7e\ud845\udcfd"+
-            "\ud85a\udf0a\ud852\udda7\ud84d\udd30\ud845\udf73"+
-            "\ud84f\uddf8\ud87e\udd94\ud843\ude16\ud845\udfb4"+
-            "\ud84c\udd7d\ud84d\udd5a\ud84f\ude8b\ud85b\udda3"+
-            "\ud85a\udf05\ud85a\udf97\ud84d\uddce\ud85b\udda5"+
-            "\ud85b\uded4\ud85b\ude42\ud84b\udeef\ud856\udfe4"+
-            "\ud84f\udcb5\ud85a\udf96\ud85b\ude77\ud85b\ude43"+
-            "\ud857\udc91\ud857\udcc0\ud85b\ude99\ud861\ude25"+
-            "\ud861\ude3b\ud85c\udc88\ud845\udd82\ud85c\udccd"+
-            "\ud87e\uddb2\ud846\udca2\ud85c\udf9a\ud868\udcf8"+
-            "\ud84b\udc27\ud85d\udde0\ud84f\uddb9\ud85d\udde4"+
-            "\ud85d\udf0f\ud862\ude25\ud85e\udd24\ud85e\udebd"+
-            "\ud85e\ude59\ud85e\udf3a\ud84f\udf8f\ud85e\udf38"+
-            "\ud855\udc30\ud855\udd65\ud852\ude7a\ud845\udedf"+
-            "\ud85f\udd54\ud85f\udd8f\ud87e\uddd4\ud85f\udd53"+
-            "\ud85f\udd98\ud85f\uddbd\ud846\udd10\ud853\udcc9"+
-            "\ud860\udc02\ud844\udc14\ud852\udd8a\ud860\uddbc"+
-            "\ud85c\udd0c\ud860\udf65\ud861\udc12\ud868\ude9f"+
-            "\ud842\ude50\ud862\uddde\ud861\udd3d\ud84f\uddbb"+
-            "\ud84c\ude62\ud868\udc14\ud861\udebc\ud861\udd01"+
-            "\ud848\udf25\ud85b\uded7\ud861\udd3c\ud85e\udebe"+
-            "\ud861\udd6c\ud861\ude0b\ud861\udf13\ud861\udee6"+
-            "\ud862\udd33\ud847\ude89\ud855\uddb9\ud862\udec6"+
-            "\ud84f\udc9b\ud862\udf0c\ud855\udddb\ud843\udd31"+
-            "\ud862\udee1\ud862\udfeb\ud862\udee2\ud862\udee5"+
-            "\ud862\udfec\ud863\udc39\ud862\udfff\ud849\ude7a"+
-            "\ud861\uded8\ud844\ude7c\ud84f\ude2e\ud85b\uded5"+
-            "\ud862\udee0\ud85b\udcb8\ud840\ude74\ud859\udc10"+
-            "\ud864\udcaf\ud864\udce5\ud852\uded1\ud846\udd15"+
-            "\ud84c\udf0a\ud852\udee9\ud864\uddd5\ud864\uddeb"+
-            "\ud84c\udcb7\ud84c\udcbc\ud855\udc6c\ud865\udc33"+
-            "\ud865\udc1d\ud85e\udd7a\ud85c\udd75\ud841\ude30"+
-            "\ud850\udd5c\ud855\udf06\ud85b\udd27\ud845\uded3"+
-            "\ud852\ude29\ud866\udc57\ud866\udd05\ud855\udf25"+
-            "\ud864\udcb1\ud866\udfd5\ud866\udf05\ud861\ude00"+
-            "\ud85a\udda8\ud84c\udc7d\ud867\udd3e\ud846\udc63"+
-            "\ud850\ude4b\ud867\ude68\ud867\udfb7\ud868\udd92"+
-            "\ud868\uddab\ud868\udce1\ud868\udd23\ud868\udddf"+
-            "\ud868\udd34\ud848\udd5b\ud868\udd93\ud868\ude20"+
-            "\ud846\udd3b\ud868\ude33\ud868\udcb9\ud868\udeb4"+
-            "\ud850\udf64\ud863\udc2b\ud85b\udda2\ud864\udc8b"+
-            "\ud852\udd75\ud852\uddbb\ud852\uddf8\ud850\udf48"+
-            "\ud852\ude51\ud862\udfda\ud846\udcfa\ud862\udd7e"+
-            "\ud863\ude36\ud862\ude44\ud862\udd6c\ud851\udcb9"+
-            "\ud851\udc73\ud850\udff8\ud845\udfef\ud846\udcbe"+
-            "\ud84d\udd99\ud846\udc85\ud855\udc2f\ud845\udff8"+
-            "\ud845\udefb\ud846\udc39\ud845\udf74\ud846\udcd1"+
-            "\ud857\udf4b\ud845\udec0\ud852\ude25\ud844\udffe"+
-            "\ud844\udea8\ud844\udfc6\ud845\udcb6\ud84d\udea6"+
-            "\ud852\udd94\ud85c\udd65\ud84f\ude31\ud855\udd5c"+
-            "\ud84f\udefb\ud85c\udc52\ud84d\udeee\ud866\udd9d"+
-            "\ud85b\udf26\ud846\udd22\ud84d\udf3f\ud850\udce1"+
-            "\ud850\udc8b\ud850\udd0f\ud85b\udc21\ud859\udeb1"+
-            "\ud843\udfdf\ud842\udfa8\ud843\ude0d\ud862\udf13"+
-            "\ud851\udc36\ud841\udc65\ud840\udf7f\ud855\ude51"+
-            "\ud840\uddab\ud840\udfcb\ud840\udf0a\ud841\udc14"+
-            "\ud840\udec0\ud863\udeb3\ud840\ude75\ud840\ude0c"+
-            "\ud852\ude0e\ud84f\ude8a\ud84d\udd95\ud84f\ude39"+
-            "\ud84f\udebf\ud846\udc84\ud84f\ude89\ud841\udde0"+
-            "\ud841\udca3\ud841\udc92\ud841\udc91\ud862\ude9c"+
-            "\ud841\udf0e\ud842\udc73\ud850\udf8c\ud843\udc20"+
-            "\ud852\uddac\ud844\udce4\ud843\ude1d\ud852\udebc"+
-            "\ud850\udc8d\ud850\udcc9\ud840\udf45\ud842\udfc6"+
-            "\ud862\ude46\ud845\udefa\ud845\udf6f\ud845\udf10"+
-            "\ud856\udd46\ud846\uddf3\ud846\udc61\ud850\ude95"+
-            "\ud857\ude83\ud862\udfd7\ud841\udc13\ud844\udf03"+
-            "\ud862\uddfb\ud846\udd96\ud846\udd7c\ud84e\udeee"+
-            "\ud846\udd03\ud846\udd04\ud846\udca0\ud845\udefe"+
-            "\ud862\ude47\ud847\uddba\ud84d\udc72\ud862\udda8"+
-            "\ud846\udd27\ud845\udfab\ud845\udf3b\ud85d\uddfd"+
-            "\ud84a\udc60\ud849\ude2b\ud849\uddaf\ud849\uddbe"+
-            "\ud864\udc88\ud85b\udf73\ud840\udc3e\ud840\udc46"+
-            "\ud849\ude1b\ud84b\udc9b\ud84b\udd07\ud851\uded4"+
-            "\ud864\udd4d\ud851\ude65\ud84a\udf6a\ud84a\udf22"+
-            "\ud84d\udc50\ud866\udcea\ud84b\ude78\ud869\udc5b"+
-            "\ud852\udde3\ud84b\udd67\ud84b\udca1\ud84c\udc8e"+
-            "\ud84c\udead\ud852\udd89\ud84c\udeab\ud84c\udee0"+
-            "\ud846\udcd9\ud865\udc3f\ud84c\ude89\ud84c\uddb3"+
-            "\ud855\udd84\ud862\udf22\ud855\udd8f\ud845\udefc"+
-            "\ud855\udd5b\ud855\udc25\ud84c\udd03\ud846\udc2a"+
-            "\ud84c\ude34\ud84c\ude0f\ud84c\udd82\ud850\udec9"+
-            "\ud85b\udd24\ud85e\udc70\ud847\uddeb\ud84c\uded2"+
-            "\ud84c\udee1\ud856\udc72\ud84e\udc3a\ud84d\udfbc"+
-            "\ud84d\udfa2\ud84c\udffe\ud851\ude2a\ud84d\udfd5"+
-            "\ud851\udc87\ud846\udd12\ud84f\udfc0\ud84f\udc9a"+
-            "\ud862\udfea\ud862\udecb\ud860\udc1e\ud862\udddc"+
-            "\ud852\uddec\ud84f\udf7f\ud850\udc3c\ud850\udf1a"+
-            "\ud850\ude76\ud851\udf8f\ud851\udf25\ud852\udea4"+
-            "\ud841\uddeb\ud84f\udef8\ud84d\ude5f\ud852\ude4a"+
-            "\ud852\udd17\ud857\udfe1\ud852\udedf\ud863\udc23"+
-            "\ud84f\udf35\ud85b\uddea\ud853\udcd9\ud853\udd06"+
-            "\ud869\uddc6\ud862\udecc\ud852\uddab\ud852\udd8e"+
-            "\ud852\ude4e\ud852\uddc5\ud852\udcf3\ud862\udee3"+
-            "\ud846\udc64\ud854\ude21\ud854\udde7\ud84c\ude32"+
-            "\ud851\ude97\ud84d\udf81\ud852\udcf0\ud852\udeba"+
-            "\ud852\udec7\ud852\ude96\ud858\uddae\ud855\udd81"+
-            "\ud85d\udf41\ud855\udee3\ud84f\udefa\ud845\udee6"+
-            "\ud843\udd4c\ud852\udd8c\ud840\ude99\ud84f\uddba"+
-            "\ud845\udf6e\ud840\uddd4\ud843\udc0d\ud849\udef5"+
-            "\ud856\udeaf\ud856\ude9c\ud840\ude5b\ud856\udfc6"+
-            "\ud856\udfb3\ud857\udebc\ud857\udea6\ud852\uddf9"+
-            "\ud845\udfb0\ud858\ude61\ud858\udd5c\ud85e\udf48"+
-            "\ud857\ude82\ud85a\udf75\ud842\udd16\ud840\udc4e"+
-            "\ud84d\uddcf\ud859\udc12\ud858\udff8\ud852\udd62"+
-            "\ud842\udc2c\ud856\udee9\ud857\udd43\ud857\ude0e"+
-            "\ud84d\udc3f\ud852\uddf7\ud859\uddad\ud859\udda0"+
-            "\ud85c\udd27\ud85b\udcd1\ud859\udfb4\ud85a\ude42"+
-            "\ud85a\ude51\ud85b\udda7\ud85c\ude1b\ud846\udc40"+
-            "\ud846\udca1\ud846\udcd8\ud87e\uddbc\ud84f\udd8f"+
-            "\ud85d\udc22\ud855\ude83\ud85d\udf85\ud85d\udf84"+
-            "\ud862\udff5\ud862\udfd9\ud862\udf9c\ud862\uddf9"+
-            "\ud865\udc48\ud850\ude84\ud846\udc45\ud85f\udddc"+
-            "\ud853\udc09\ud848\udf21\ud845\udfda\ud852\udd2f"+
-            "\ud862\ude4b\ud862\udefc\ud863\udc1d\ud863\udc3b"+
-            "\ud863\udd34\ud852\udcff\ud852\ude42\ud850\udfea"+
-            "\ud84c\ude25\ud863\udee7\ud863\ude66\ud863\ude65"+
-            "\ud852\udded\ud852\ude78\ud84f\udfee\ud864\udcb0"+
-            "\ud864\udc93\ud855\udfdf\ud862\udd89\ud863\udc26"+
-            "\ud862\udf2f\ud858\udfbe\ud850\ude1b\ud843\udf26"+
-            "\ud862\udfc5\ud852\udeb2\ud865\udcda\ud865\uddd7"+
-            "\ud862\udf50\ud852\ude67\ud862\udf64\ud862\ude45"+
-            "\ud85e\udf06\ud862\udf65\ud856\udcc8\ud866\udcf1"+
-            "\ud866\udd48\ud844\udf02\ud852\uddb8\ud845\udce8"+
-            "\ud849\udf1f\ud84f\uddb8\ud849\udf81\ud84a\udd6b"+
-            "\ud867\ude2d\ud868\uddf5\ud868\udcfe\ud850\udd04"+
-            "\ud868\uddb4\ud868\udced\ud868\udcf3\ud866\udd2f"+
-            "\ud85b\ude12\ud85b\udfdf\ud85a\udf82\ud85b\udda4"+
-            "\ud85b\ude84\ud85b\uddf0\ud85b\ude00\ud84d\udfd7"+
-            "\ud858\udc64\ud84d\udd9c\ud84d\ude40\ud852\uddde"+
-            "\ud840\udebf\ud855\udd5d\ud845\udf57\ud84c\uddc9"+
-            "\ud852\udd41\ud850\uddb5\ud850\uddac\ud85b\udc40"+
-            "\ud853\udf97\ud845\udfb5\ud862\ude49\ud851\udc88"+
-            "\ud862\uddfc\ud846\udcd6\ud843\udf1d\ud85b\udcc0"+
-            "\ud845\udc13\ud850\udefa\ud84b\udc26\ud850\udfc1"+
-            "\ud84f\uddb7\ud859\udf41\ud858\udd5b\ud858\udca4"+
-            "\ud852\uddb9\ud852\udd8b\ud862\uddfa\ud862\udf63"+
-            "\ud846\udc9f\ud852\udeb3\ud852\ude3e\ud852\ude94"+
-            "\ud845\udfd9\ud852\ude66\ud840\udfa7\ud845\udc24"+
-            "\ud852\udde5\ud852\udd16\ud852\udd76\ud841\udcfe"+
-            "\ud862\udece\ud862\ude16\ud862\udfe7\ud855\uddd5"+
-            "\ud862\ude82\ud852\udd43\ud843\udcff\ud841\ude1a"+
-            "\ud842\udfeb\ud843\udcb8\ud845\udffa\ud845\udec2"+
-            "\ud852\ude50\ud846\udc52\ud862\udec0\ud852\uddad"+
-            "\ud846\udcbf\ud846\udc83\ud85d\udc84\ud84f\udd5b"+
-            "\ud862\ude81\ud846\udc62\ud842\udeb4\ud844\udf9c"+
-            "\ud860\ude18\ud864\udce4\ud85f\ude4f\ud84f\udfed"+
-            "\ud84f\ude2d\ud840\udff5\ud863\udc1c\ud85a\udfc0"+
-            "\ud845\udc52\ud850\udf62\ud852\ude71\ud84b\udfe3"+
-            "\ud844\udeb0\ud848\udfbd\ud844\udf98\ud84d\udce5"+
-            "\ud85e\udff4\ud84d\udedf\ud862\ude83\ud84d\udfd6"+
-            "\ud84c\udffa\ud853\udc9f\ud84d\udead\ud85b\udcb7"+
-            "\ud85b\udd26\ud85b\udd51\ud85b\udc82\ud85b\udfde"+
-            "\ud85c\udd09\ud845\udf3a\ud85b\udc80\ud85c\udc53"+
-            "\ud845\udfdb\ud845\udfb3\ud846\udd05\ud850\uddfc"+
-            "\ud845\udf3c\ud850\udea5\ud850\ude93\ud84f\udef9"+
-            "\ud85d\udf36\ud851\udc5b\ud850\udeca\ud850\ude59"+
-            "\ud862\udde1\ud85b\udd28\ud851\udcce\ud85f\ude4d"+
-            "\ud850\udfbd\ud850\ude56\ud844\udf04\ud850\udfe9"+
-            "\ud87e\udc25\ud852\ude4f\ud852\ude5d\ud845\udfdf"+
-            "\ud84e\udefa\ud84c\udf00\ud840\ude14\ud842\udcd5"+
-            "\ud841\ude19\ud847\udf9e\ud868\udeb6\ud864\udd5b"+
-            "\ud862\ude59\ud865\udc20\ud85e\udef4\ud855\udef6"+
-            "\ud85e\udf18\ud852\udcf2\ud853\udf5c\ud855\udd35"+
-            "\ud843\udccf\ud85e\udd67\ud846\udfc2\ud840\udc94"+
-            "\ud840\udeb7\ud840\udfa0\ud841\udcd7\ud841\uddd5"+
-            "\ud841\ude15\ud841\ude76\ud845\udeba\ud842\udec2"+
-            "\ud842\udecd\ud842\udfbf\ud87e\udc3b\ud842\udfcb"+
-            "\ud842\udffb\ud843\udc3b\ud843\udc53\ud843\udc65"+
-            "\ud843\udc7c\ud843\udc8d\ud843\udcb5\ud843\udcdd"+
-            "\ud843\udced\ud843\udd6f\ud843\uddb2\ud843\uddc8"+
-            "\ud843\ude04\ud843\ude0e\ud843\uded7\ud843\udf90"+
-            "\ud843\udf2d\ud843\ude73\ud843\udfbc\ud844\udc5c"+
-            "\ud844\udc4f\ud844\udc76\ud844\udc7b\ud844\udc88"+
-            "\ud844\udc96\ud844\udcbf\ud844\udcd3\ud844\udd2f"+
-            "\ud844\udd3b\ud844\udee3\ud844\udf75\ud844\udf36"+
-            "\ud845\udd77\ud845\ude19\ud845\udfc3\ud845\udfc7"+
-            "\ud846\udc2d\ud846\udd6a\ud846\ude2d\ud846\ude45"+
-            "\ud847\udc2a\ud847\udc70\ud847\udcac\ud847\udec8"+
-            "\ud847\uded5\ud847\udf15\ud848\udc45\ud848\ude7c"+
-            "\ud848\udfd7\ud848\udffa\ud849\udf2a\ud84a\udc71"+
-            "\ud84a\udd4f\ud84a\udd67\ud84a\udd93\ud84a\uded5"+
-            "\ud84a\udee8\ud84a\udf0e\ud84a\udf3f\ud84b\udc4c"+
-            "\ud84b\udc88\ud84b\udcb7\ud856\udfe8\ud84b\udd08"+
-            "\ud84b\udd12\ud84b\uddb7\ud84b\udd95\ud84b\ude42"+
-            "\ud84b\udf74\ud84b\udfcc\ud84c\udc33\ud84c\udc66"+
-            "\ud84c\udf1f\ud84c\udfde\ud85e\ude79\ud84d\udd67"+
-            "\ud84d\uddf3\ud852\uddba\ud84d\ude1a\ud84d\udf16"+
-            "\ud840\udf46\ud84e\udea7\ud85d\ude57\ud857\udfe2"+
-            "\ud84f\ude11\ud84f\udeb9\ud85d\uddfe\ud848\udc9a"+
-            "\ud850\udd19\ud862\ude9a\ud850\udeee\ud850\udf0d"+
-            "\ud850\udc3b\ud850\udf34\ud850\udf96\ud852\ude45"+
-            "\ud841\uddca\ud841\ude11\ud847\udea8\ud84f\udcff"+
-            "\ud851\udc04\ud851\udcd6\ud851\ude74\ud851\udf2f"+
-            "\ud861\udde8\ud866\uddc9\ud848\uddc3\ud862\udf4e"+
-            "\ud852\udc12\ud852\udcfb\ud852\ude15\ud852\udec0"+
-            "\ud843\udc78\ud853\udea5\ud853\udf86\ud841\udf79"+
-            "\ud854\udc2c\ud854\ude99\ud855\udc19\ud84f\udf4a"+
-            "\ud852\udea7\ud855\udc46\ud855\udc6e\ud85a\udf52"+
-            "\ud855\udd3f\ud85d\ude32\ud855\udd5e\ud855\udd62"+
-            "\ud855\udd66\ud855\udfc7\ud852\udd3f\ud856\udc5d"+
-            "\ud84c\udfcc\ud856\udd03\ud862\udd48\ud856\udeae"+
-            "\ud856\udf89\ud857\udc06\ud847\udd90\ud858\udd02"+
-            "\ud85f\udc12\ud858\uddb2\ud853\udf9a\ud859\udc02"+
-            "\ud859\udc4a\ud85a\udff7\ud859\udc84\ud846\udd1c"+
-            "\ud852\uddf6\ud859\udc88\ud84f\udfef\ud859\udd12"+
-            "\ud859\uddbf\ud859\udeb5\ud849\udf1b\ud855\udfe1"+
-            "\ud87e\udccd\ud851\udd21\ud859\udefc\ud852\udd34"+
-            "\ud85b\udcbd\ud859\udf99\ud85a\udc6e\ud859\udc11"+
-            "\ud85a\udc5e\ud85a\udcc7\ud864\udcc0\ud842\ude11"+
-            "\ud85a\udd26\ud85a\udd39\ud85a\uddfa\ud85a\ude2d"+
-            "\ud859\udc69\ud840\udc21\ud85a\ude34\ud85a\udf5b"+
-            "\ud84d\udd19\ud85a\udf9d\ud85b\udca4\ud85b\uddae"+
-            "\ud849\udd8d\ud85c\udc4b\ud85c\uddcd\ud85c\ude80"+
-            "\ud85c\ude85\ud848\udd7a\ud85c\ude8b\ud85c\udee6"+
-            "\ud852\uddd0\ud85d\udc50\ud843\udef8\ud84a\udd26"+
-            "\ud861\udc73\ud845\udfb1\ud852\ude2a\ud846\udc20"+
-            "\ud867\udcad\ud866\udca4\ud85d\udfcc\ud85e\udc58"+
-            "\ud845\ude0a\ud84d\udf2f\ud860\udce8\ud844\udfc5"+
-            "\ud85e\udddd\ud864\udda8\ud85c\udcaf\ud862\uddab"+
-            "\ud85e\uddfd\ud85e\ude0a\ud85e\udf0b\ud85f\udd66"+
-            "\ud850\udd7a\ud860\udc09\ud868\udedf\ud860\udf18"+
-            "\ud85b\ude07\ud860\udd6f\ud860\udc23\ud85a\uddb5"+
-            "\ud844\udfed\ud84c\ude2f\ud860\udc48\ud863\udc30"+
-            "\ud860\udc83\ud862\udd49\ud852\udd88\ud852\udea5"+
-            "\ud84f\udf81\ud860\udc90\ud860\udcf4\ud860\udd2e"+
-            "\ud847\udfa1\ud860\udd4f\ud860\udd89\ud860\uddaf"+
-            "\ud860\ude1a\ud860\udf06\ud860\udf2f\ud860\udf8a"+
-            "\ud861\udc68\ud861\udeaa\ud862\udd56\ud862\uddb8"+
-            "\ud862\udde7\ud862\udde8\ud862\udf46\ud862\udfd4"+
-            "\ud863\udc09\ud863\udfc5\ud864\udcec\ud864\udd10"+
-            "\ud864\udd3c\ud864\udd5e\ud852\udeca\ud865\udce7"+
-            "\ud865\udde9\ud865\uddb0\ud865\uddb8\ud865\udf32"+
-            "\ud866\udcd1\ud866\udd49\ud866\udd6a\ud866\uddc3"+
-            "\ud866\ude28\ud866\udf0e\ud867\udd5a\ud867\udd9b"+
-            "\ud867\udef8\ud867\udf23\ud868\ude93\ud868\udeff"+
-            "\ud869\uddcb\ud843\udc9c\ud849\udcb0\ud852\ude93"+
-            "\ud862\udf2c\ud85e\udc9d\ud845\udff5\ud860\udc24"+
-            "\ud862\udf6c\ud862\udf99\ud85e\ude3e\ud859\udeaf"+
-            "\ud85d\ude55\ud84f\udcb7\ud855\ude35\ud856\udd56"+
-            "\ud857\ude81\ud858\ude58\ud843\ude6d\ud84f\ude88"+
-            "\ud853\udc9e\ud845\udff6\ud846\udc7b\ud857\udc4a"+
-            "\ud854\udf11\ud867\udd98\ud857\uded8\ud84f\udd40"+
-            "\ud843\udfea\ud843\udd49\ud84d\udeba\ud843\ude9d"+
-            "\ud860\udee2\ud843\udc41\ud843\udc96\ud854\udd48"+
-            "\ud843\ude76\ud84b\udc62\ud843\udea2\ud844\udc75"+
-            "\ud84a\udf43\ud84b\udeb3\ud843\udda7\ud85a\udc8a"+
-            "\ud844\udcc1\ud851\udf06\ud85a\udc93\ud849\udef4"+
-            "\ud85f\udd2f\ud850\udda3\ud85f\udd73\ud85b\uded0"+
-            "\ud85c\udeb6\ud844\uddd9\ud84f\udcfc\ud869\udea9"+
-            "\ud843\udeac\ud843\udef9\ud847\udca2\ud853\udfc2"+
-            "\ud85f\udff9\ud843\udfeb\ud84b\udda0\ud851\udfe0"+
-            "\ud867\udd7c\ud843\udfec\ud843\ude0a\ud85d\udda3"+
-            "\ud843\udfed\ud858\udc48\ud844\udd87\ud851\ude18"+
-            "\ud852\udf6e\ud856\ude95\ud842\udd79\ud849\udc65"+
-            "\ud867\udeac\ud84f\udcfe\ud867\udf30\ud853\udfa9"+
-            "\ud865\udd9e\ud867\udfde\ud84f\uddb6\ud85c\udeb2"+
-            "\ud859\udfb3\ud84d\udf20\ud84f\udef7\ud84f\ude2c"+
-            "\ud841\udc8e\ud843\udeb6\ud869\udc34\ud84c\udcda"+
-            "\ud850\udff2\ud844\udea9\ud852\udd63\ud867\ude06"+
-            "\ud85c\udcae\ud845\udf6c\ud865\udcd0\ud858\udf35"+
-            "\ud85c\udd64\ud843\udd28\ud85b\udd22\ud852\udee2"+
-            "\ud843\udd71\ud847\udf0f\ud847\uddd1\ud852\udd3e"+
-            "\ud845\udf6d\ud863\ude97\ud85b\udd23\ud840\udffc"+
-            "\ud857\udc21\ud84f\udcfd\ud852\udd19\ud843\udcd4"+
-            "\ud840\uddf2\ud869\ude4a\ud860\udf7d\ud852\ude77"+
-            "\ud862\ude5a\ud868\udeb2\ud87e\udc40\ud852\udebb"+
-            "\ud846\udc3b\ud85b\ude05\ud849\udd1b\ud858\udd59"+
-            "\ud84c\udff5\ud862\udfc2\ud863\ude39\ud847\udd46"+
-            "\ud843\udf3b\ud857\udf1a\ud85d\udc86\ud859\udfcc"+
-            "\ud85b\uded1\ud850\udc11\ud862\udf2d\ud84f\udcc7"+
-            "\ud857\uded7\ud85d\ude56\ud855\udd31\ud846\udd44"+
-            "\ud844\udefe\ud866\udd03\ud85b\udddc\ud85c\udcad"+
-            "\ud858\uddad\ud862\ude0f\ud84d\ude77\ud840\udcee"+
-            "\ud85a\udc46\ud853\udf0e\ud858\udf4c\ud858\ude6b"+
-            "\ud840\udccc\ud840\udc8a\ud85d\ude07\ud841\udd47"+
-            "\ud841\udddf\ud84f\udfc5\ud852\udd42\ud862\udde4"+
-            "\ud846\udddb\ud84f\udcc8\ud852\udd33\ud862\uddaa"+
-            "\ud840\udea0\ud85a\udfb3\ud844\udf05\ud849\udced"+
-            "\ud85b\udd29\ud85e\ude84\ud84d\ude00\ud852\udeb1"+
-            "\ud849\udd13\ud840\udf7e\ud840\udf80\ud840\udf47"+
-            "\ud841\udc1f\ud852\udda4\ud841\udc87\ud84c\udfb4"+
-            "\ud842\udfff\ud848\udcfc\ud840\udee5\ud849\udd30"+
-            "\ud841\udd8e\ud84c\ude33\ud846\udd83\ud841\uddb3"+
-            "\ud84f\udc99\ud852\udea6\ud84d\udf2d\ud85a\udf13"+
-            "\ud862\udede\ud84f\udf80\ud842\udd54\ud84f\udfec"+
-            "\ud842\udfe2\ud845\udf26\ud845\udee8\ud861\udeab"+
-            "\ud845\udd96\ud845\ude13\ud862\ude9b\ud855\udf72"+
-            "\ud842\udf8f\ud84f\udfeb\ud84b\udda3\ud843\udc77"+
-            "\ud85a\udf53\ud843\udd74\ud845\udf0d\ud843\udedd"+
-            "\ud843\udd4d\ud862\uddbc\ud849\ude98\ud846\udcd7"+
-            "\ud850\udc3a\ud851\udc35\ud844\udcb4\ud84c\ude8a"+
-            "\ud862\udf66\ud844\ude4f\ud850\udda5\ud85b\udc7e"+
-            "\ud845\udc16\ud845\udc54\ud850\udf63\ud852\udff5"+
-            "\ud844\ude3c\ud868\udd50\ud850\ude78\ud845\ude3e"+
-            "\ud845\ude92\ud843\udd4e\ud85b\udc81\ud85b\udd2a"+
-            "\ud845\udfdc\ud845\udffb\ud845\udfb2\ud85b\udda6"+
-            "\ud846\udc28\ud845\uded5\ud85b\ude45\ud852\udda9"+
-            "\ud85b\udfa1\ud849\udd54\ud846\udd11\ud845\udeb8"+
-            "\ud85e\ude0e\ud840\ude04\ud846\ude34\ud856\uddcc"+
-            "\ud841\udda5\ud846\udf44\ud847\udca5\ud85a\udf28"+
-            "\ud847\uddf9\ud847\ude37\ud847\udea4\ud852\udd01"+
-            "\ud848\udc49\ud848\udd73\ud851\udcbc\ud843\udcd3"+
-            "\ud845\udf71\ud861\udc82\ud840\uddc1\ud87e\udc94"+
-            "\ud844\udf3a\ud85a\udc88\ud848\udfd0\ud849\udc71"+
-            "\ud85b\ude6e\ud862\ude36\ud854\ude50\ud847\udf6a"+
-            "\ud85c\udcf8\ud849\ude68\ud840\ude9e\ud862\ude29"+
-            "\ud846\udc77\ud849\udfb4\ud852\udd82\ud852\udd8f"+
-            "\ud85e\ude53\ud87e\udca6\ud85b\uded2\ud841\ude56"+
-            "\ud84f\udfb7\ud84a\udc5f\ud862\udf9d\ud866\udd5d"+
-            "\ud84a\udd80\ud84a\udcc1\ud840\udd18\ud845\udf70"+
-            "\ud84b\ude0d\ud852\udddf\ud844\udf8e\ud845\udffc"+
-            "\ud84b\ude36\ud850\udc8c\ud855\udf1d\ud852\ude28"+
-            "\ud852\ude23\ud84c\udc7e\ud852\udd40\ud846\udc29"+
-            "\ud84d\udc00\ud84c\uddf7\ud84c\uddf8\ud84c\udda4"+
-            "\ud84c\udda5\ud843\ude75\ud854\udde6\ud847\ude3d"+
-            "\ud84c\ude31\ud861\uddf4\ud84c\uddc8\ud854\udf13"+
-            "\ud84a\udcf7\ud850\udf9c\ud852\ude21\ud84d\udfc2"+
-            "\ud850\uddcd\ud864\udced\ud84c\udfe6\ud85b\udda0"+
-            "\ud84d\udc6f\ud862\udedf\ud84d\uddcd\ud84d\ude3c"+
-            "\ud862\ude4a\ud840\udfc9\ud84d\ude59\ud848\udd2a"+
-            "\ud84d\udf03\ud864\udd9c\ud842\udd23\ud849\udfcd"+
-            "\ud84e\udedb\ud840\udfb5\ud846\udd58\ud84e\udf5a"+
-            "\ud84f\udefc\ud849\udc8b\ud852\udcf1\ud85a\udf51"+
-            "\ud84f\uddbc\ud84f\uddbd\ud850\udda4\ud852\udd0c"+
-            "\ud852\udd00\ud84f\udcc9\ud843\udd32\ud84c\uddf9"+
-            "\ud849\udc91\ud85b\udd25\ud85b\udda1\ud85b\uddeb"+
-            "\ud852\udd7f\ud850\udc85\ud85b\ude72\ud85b\udf74"+
-            "\ud862\udf21\ud84f\ude2f\ud84f\udf82\ud84c\udc4b"+
-            "\ud84f\ude30\ud845\udc97\ud850\udc3d\ud864\udd70"+
-            "\ud850\udd44\ud850\udc91\ud850\udd55\ud850\udc39"+
-            "\ud84f\udff0\ud84f\udfb4\ud850\udd3f\ud850\udd56"+
-            "\ud850\udd57\ud850\udd40\ud858\udddd\ud850\ude77"+
-            "\ud850\udf65\ud850\udec1\ud851\udc5a\ud852\ude27"+
-            "\ud852\ude22\ud862\udfe8\ud855\ude05\ud852\udd74"+
-            "\ud84c\udc44\ud852\udc23\ud862\udc2b\ud862\udc04"+
-            "\ud843\udc3a\ud85a\ude2e\ud850\udde2\ud845\udee7"+
-            "\ud852\ude24\ud852\uddb7\ud852\udd8d\ud852\uddfb"+
-            "\ud852\ude26\ud841\uddc3\ud84a\udcad\ud863\udeb2"+
-            "\ud852\ude8c\ud850\udd5f\ud852\ude79\ud862\udf8f"+
-            "\ud863\udc03\ud846\udc9e\ud846\udd88\ud863\uded9"+
-            "\ud846\ude4b\ud863\udeac\ud853\udf82\ud853\udd13"+
-            "\ud858\udff5\ud85a\udd11\ud85a\udd0e\ud85b\udf9f"+
-            "\ud854\udc9d\ud854\udd7d\ud847\ude1c\ud854\ude20"+
-            "\ud84c\udeac\ud862\udd64\ud862\udd68\ud845\udec1"+
-            "\ud844\udf76\ud852\ude12\ud855\udde0\ud85d\ude0c"+
-            "\ud862\udf2b\ud858\udc83\ud849\ude1c\ud856\udc57"+
-            "\ud85e\udf39\ud85c\udd26\ud864\udd0d";
-
-        static String index2[] = {
-            innerIndex0,
-            innerIndex1,
-            innerIndex2
-        };
-    }
-
-    protected static class Encoder extends DoubleByteEncoder {
-
-        private byte[] encoded = new byte[2];
-
-        public Encoder(Charset cs) {
-            super(cs,
-                  index1,
-                  index2);
-        }
-
-        protected byte[] encodeSurrogate(char high, char low) {
-                int index = searchTabSurr(high, low, unicodeSearchTab);
-
-                if (index >= 0) {
-                    int val = (int)nativeSupplementary.charAt(index / 2);
-
-                    encoded[0] = (byte)((val & 0x0000ff00)>>8);
-                    encoded[1] = (byte) (val  & 0xff);
-                    return encoded;
-                } else {
-                    // Surrogate pair cannot be mapped
-                    return null;
-                }
-        }
-
-        /**
-         * Perform a binary search within the sorted array of
-         * surrogate values to locate the position of the native
-         * two byte value equivalent encoded using Shift_JIS encoding
-         * scheme
-         */
-        protected int searchTabSurr(char code1, char code2, String table) {
-            int i = 0, l, h;
-            for (l = 0, h = table.length() - 2; l < h; ) {
-                if (table.charAt(l) == code1 && table.charAt(l+1) == code2) {
-                     i = l;
-                     break;
-                }
-                if (table.charAt(h) == code1 && table.charAt(h+1) == code2) {
-                     i = h;
-                     break;
-                }
-                i = (l + h) / 2;
-                i = (i%2 != 0)? i - 1 : i;
-
-                if (table.charAt(i) == code1 && table.charAt(i+1) == code2)
-                    break;
-
-                int sum = (int)(table.charAt(i+2) - 0xd800) * 0x400
-                            + (int)(table.charAt(i+3) - 0xdc00) + 0x10000;
-                int sum2 = (int)(code1 - 0xd800) * 0x400
-                            + (int)(code2 - 0xdc00) + 0x10000;
-                if (sum == sum2)
-                    return (i + 2);
-
-                if (sum < sum2)
-                    l = i + 2;
-                else
-                    h = i - 2;
-            }
-            if (code1 == table.charAt(i) && code2 == table.charAt(i+1)) {
-                return i;
-            } else {
-                return -1;
-            }
-        }
-        private final static String innerIndex0=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8859\u8857\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u885D\u885B\u8866\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8861\u885F\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u886A\u8868\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u886F\u886D\u88A7\u0000\u8873\u8871\u0000\u0000"+
-            "\u0000\u0000\u8877\u8875\u0000\u0000\u0000\u0000"+
-            "\uC8FB\u887B\u8879\u0000\u88A2\u0000\u0000\u0000"+
-            "\u8856\u8867\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u885A\u886C\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u885C\u886E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8870\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8FC\u885E\u8874\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8FA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8878\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8858\u8869\u0000"+
-            "\u8872\u8860\u8876\u0000\u887A\u0000\u887C\u0000"+
-            "\u887D\u0000\u887E\u0000\u88A1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC8F6\u886B\u0000\u0000\uC8F8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8F7\u0000\u0000\u0000\u0000"+
-            "\u0000\u88A8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8FE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC8F9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8F5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8FD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6D9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC7F9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC7F3\uC7F4\uC7F5\uC7F6\uC7F7\uC7F8\uC7FA\uC7FB"+
-            "\uC7FC\uC7FD\uC7FE\uC840\uC841\uC842\uC843\uC844"+
-            "\uC845\uC846\uC847\uC848\uC849\uC84A\uC84B\uC84C"+
-            "\uC84D\uC84E\uC84F\uC850\uC851\uC852\uC853\uC854"+
-            "\uC855\uC856\uC857\uC858\uC859\uC85A\uC85C\uC85D"+
-            "\uC85E\uC85F\uC860\uC861\uC862\uC863\uC864\uC865"+
-            "\uC866\uC867\uC868\uC869\uC86A\uC86B\uC86C\uC86D"+
-            "\uC86E\uC86F\uC870\uC871\uC872\uC873\uC874\uC875"+
-            "\u0000\uC85B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8863\u88A4"+
-            "\u8865\u88A6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8D2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC8D3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6B5\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB\uC6BC"+
-            "\uC6BD\uC6BE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC877\uC878\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC876"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6A1\uC6A2\uC6A3\uC6A4\uC6A5\uC6A6\uC6A7\uC6A8"+
-            "\uC6A9\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC6AB\uC6AC\uC6AD\uC6AE"+
-            "\uC6AF\uC6B0\uC6B1\uC6B2\uC6B3\uC6B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uF9F9\uF9F8\uF9E6\uF9EF\uF9DD\uF9E8\uF9F1\uF9DF"+
-            "\uF9EC\uF9F5\uF9E3\uF9EE\uF9F7\uF9E5\uF9E9\uF9F2"+
-            "\uF9E0\uF9EB\uF9F4\uF9E2\uF9E7\uF9F0\uF9DE\uF9ED"+
-            "\uF9F6\uF9E4\uF9EA\uF9F3\uF9E1\uF9FA\uF9FB\uF9FD"+
-            "\uF9FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6E6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC8D6\u0000\u0000\u0000\uC8D7\u0000\uC8D8\uC8D9"+
-            "\uC8DA\u0000\uC8DB\u0000\uC8DC\uC8DD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC8DE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uC8DF\uC8E0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC8E1\u0000\uC8E2"+
-            "\u0000\u0000\uC8E3\u0000\uC8E4\u0000\uC8E5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E6\u0000"+
-            "\u0000\u0000\u0000\u0000\uC8E7\u0000\uC8E8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E9\u0000"+
-            "\u0000\u0000\uC8EA\u0000\uC8EB\uC8EC\u0000\uC8ED"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8EE\uC8EF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC8F0\u0000"+
-            "\u0000\u0000\u0000\uC8F1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC6CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6E0\uC6E1\uC6E2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB\uC6EC\uC6ED"+
-            "\uC6EE\uC6EF\uC6F0\uC6F1\uC6F2\uC6F3\uC6F4\uC6F5"+
-            "\uC6F6\uC6F7\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD"+
-            "\uC6FE\uC740\uC741\uC742\uC743\uC744\uC745\uC746"+
-            "\uC747\uC748\uC749\uC74A\uC74B\uC74C\uC74D\uC74E"+
-            "\uC74F\uC750\uC751\uC752\uC753\uC754\uC755\uC756"+
-            "\uC757\uC758\uC759\uC75A\uC75B\uC75C\uC75D\uC75E"+
-            "\uC75F\uC760\uC761\uC762\uC763\uC764\uC765\uC766"+
-            "\uC767\uC768\uC769\uC76A\uC76B\uC76C\uC76D\uC76E"+
-            "\uC76F\uC770\uC771\uC772\uC773\uC774\uC775\uC776"+
-            "\uC777\uC778\uC779\uC77A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC8D4\uC8D5\uC6DC\uC6DD\u0000"+
-            "\u0000\uC77B\uC77C\uC77D\uC77E\uC7A1\uC7A2\uC7A3"+
-            "\uC7A4\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9\uC7AA\uC7AB"+
-            "\uC7AC\uC7AD\uC7AE\uC7AF\uC7B0\uC7B1\uC7B2\uC7B3"+
-            "\uC7B4\uC7B5\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\uC7BB"+
-            "\uC7BC\uC7BD\uC7BE\uC7BF\uC7C0\uC7C1\uC7C2\uC7C3"+
-            "\uC7C4\uC7C5\uC7C6\uC7C7\uC7C8\uC7C9\uC7CA\uC7CB"+
-            "\uC7CC\uC7CD\uC7CE\uC7CF\uC7D0\uC7D1\uC7D2\uC7D3"+
-            "\uC7D4\uC7D5\uC7D6\uC7D7\uC7D8\uC7D9\uC7DA\uC7DB"+
-            "\uC7DC\uC7DD\uC7DE\uC7DF\uC7E0\uC7E1\uC7E2\uC7E3"+
-            "\uC7E4\uC7E5\uC7E6\uC7E7\uC7E8\uC7E9\uC7EA\uC7EB"+
-            "\uC7EC\uC7ED\uC7EE\uC7EF\uC7F0\uC7F1\uC7F2\u0000"+
-            "\u0000\u0000\u0000\u0000\uC6E3\uC6DA\uC6DB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC8D1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9277\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89D5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u93CD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9BDF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFA68\u0000\u0000\u89DA\u8F59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89DB\u0000\u0000\u8F5D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89DC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8ADA\u0000\u0000\u0000"+
-            "\u0000\u8BDC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u97DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E53"+
-            "\u0000\u0000\u0000\u0000\u9DAA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9BEA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8A6E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8BC8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89E8\u0000\u89EA\u0000\u0000\u0000\u0000"+
-            "\u0000\u8C4B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB70\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89ED\u0000\u0000"+
-            "\u94DD\u0000\u89EE\u0000\u0000\u0000\u0000\u9EB4"+
-            "\u8AD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92DB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94DB"+
-            "\u89F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB7A\u0000\u0000\u0000\u89FB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EFC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FC"+
-            "\u0000\u89BF\u0000\u0000\u0000\u89FE\u0000\u89E6"+
-            "\u0000\u0000\u9D46\u0000\u0000\u0000\u9DEE\u0000"+
-            "\u0000\u0000\uA07E\u0000\u0000\u0000\uA068\u0000"+
-            "\u0000\u0000\u0000\u98E9\u0000\u8B68\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DFD\u8BBE\u9FD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AEB\u0000\u0000\u9FD7\u0000";
-
-        private final static String innerIndex1=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8B6A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9C5C\u0000\u8BB1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB5E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DF3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0D0\u0000\u0000"+
-            "\u0000\uFC66\u0000\u0000\u0000\u0000\u92E9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AEC"+
-            "\u8FAB\uFA48\u0000\u0000\u0000\u0000\u8E45\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C6F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EDE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89EF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u96E9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EBB\u0000\u0000"+
-            "\u0000\u0000\u94DE\u0000\u9EB8\u0000\u0000\u0000"+
-            "\u97BA\uFB65\u0000\u0000\u0000\u95D6\u0000\u0000"+
-            "\u0000\u9CBB\u0000\u0000\u97DA\u0000\u0000\u0000"+
-            "\u0000\u8F45\u0000\uFB7D\u9158\uFE64\u0000\u9856"+
-            "\u9B4D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u935B\u95C7\u0000\u97E7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9359\u0000\u0000"+
-            "\u0000\u91F5\u97B8\u0000\u0000\uFDA2\uFBB6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92FA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9357\u0000\u8BA6\u0000\u0000\u0000\u0000"+
-            "\uFBB9\u0000\u97B0\u0000\u0000\uFDC4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9CA1\u0000\u0000\u0000"+
-            "\u0000\u0000\u91F2\u91F9\u0000\u8FF1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9745\u9853\u0000\u0000"+
-            "\uFE78\u0000\uFBC1\u9251\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DAD\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD6C\u0000\u0000\uFA6B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9BC2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A7B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B60"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u934B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9ABD\u0000\u0000\u0000\u0000\u91B7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95B4\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEC5\u0000\u0000\u9EF0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D64"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9269\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBEA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF\u0000"+
-            "\u8D68\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u93EB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9166\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000"+
-            "\u0000\u93DD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BCC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8D6E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96A8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFCA6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D6F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFC64\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8D74\u97C3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8AD0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9274\u0000\u9BBE\u0000\u0000\u0000\u0000"+
-            "\u0000\u9CC8\u0000\u0000\u9CBA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EB9\u0000\u0000\u0000"+
-            "\u0000\u0000\u955A\u0000\u0000\u91B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8A48\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D7D\u0000\u0000\u8A7D\u0000\u0000\u8AC2\u0000"+
-            "\u0000\uFD4A\u0000\u8DA1\u0000\u0000\u8AD1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCB4"+
-            "\u8B47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93A4\u9EDA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8A51\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DA6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EC5\u0000\u0000\u0000\u0000\uFCC4"+
-            "\u0000\u0000\u0000\u0000\uA078\u0000\u94B5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC2\u8A6B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAE8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DAD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC49\u0000"+
-            "\u93C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u906F\u0000\u8DB0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u947E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90FA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9479\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DB2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCEE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u997B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DB4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DB7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DBB\u8DBA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DBC\u9044\u0000\u0000\u0000"+
-            "\uFD4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93E4\u0000"+
-            "\u0000\u93E0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DC3\u0000\u9BB8\u0000"+
-            "\u0000\u0000\uFBF0\u0000\u93E9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93F6"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DC5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DCA\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DCC\uFD5D\u93B5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD61\u0000\u0000"+
-            "\u0000\u9CF8\u0000\u0000\u0000\u9252\u0000\u0000"+
-            "\uA0E8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9CA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C56\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DD6\u0000\u97C0\u0000\u0000"+
-            "\u0000\uA0DE\u0000\u0000\u0000\u0000\u97D2\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDA3\u0000\u0000\u0000\u8DDB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u91B5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFD49\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDD1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DEB\u0000"+
-            "\u0000\u0000\u0000\u0000\u97C6\u0000\uFDCE\u0000"+
-            "\u0000\u90FC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFC59"+
-            "\u0000\u0000\u96D6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97C5\u8DEF\u0000\u0000\u0000\u0000\u97D7"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DF0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96A6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBBF\u0000\u0000"+
-            "\u0000\u0000\u8DF3\u0000\u0000\u0000\u0000\u9449"+
-            "\u0000\u8DF5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9872\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E6B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAFD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F50"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DCC\uFC65"+
-            "\u0000\u8C44\u0000\u0000\u996E\u94A1\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F63\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA0DA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9253"+
-            "\uFDE9\u0000\u0000\u9DB5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9879\u0000\u0000\u0000\u9D5D"+
-            "\u0000\u0000\u0000\u0000\u8D63\u9669\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC6A\u0000\u0000\u8AC7\u0000\u0000\u0000\u0000"+
-            "\u89D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE4D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EDD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEFB\u98BC\uFACC\u0000\u0000\u95B0\u0000\u0000"+
-            "\u0000\u9464\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u936F\u0000\u0000\u0000\u0000\u0000\u0000\u94B9"+
-            "\u0000\u0000\u95EC\u0000\u0000\u0000\u0000\u91EE"+
-            "\u0000\u0000\u98C3\u0000\u95F6\u0000\u0000\u0000"+
-            "\u8FFD\u98C5\u0000\u0000\u0000\u0000\u9766\uFE6E"+
-            "\u0000\u0000\u97DD\u8CAA\u0000\u0000\u92D2\u0000"+
-            "\u0000\u9761\u98CB\u0000\u0000\u0000\u0000\u95F0"+
-            "\u0000\u975D\u0000\u91E3\u0000\u0000\u0000\u0000"+
-            "\u98CC\u0000\u0000\u9469\u98CD\u0000\u0000\u0000"+
-            "\u0000\u0000\u98CE\u0000\u95FC\u0000\u0000\u94A3"+
-            "\u9662\u0000\u0000\u0000\uFEB6\u0000\u9463\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98D0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98D1\u0000\u0000\u0000\u0000"+
-            "\u9475\uFAE0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9472\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98D6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AF0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98DB"+
-            "\u0000\u0000\u0000\u0000\u98DD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98A8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A6D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8AFB\u8AAE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBC9\u0000\u0000\u0000"+
-            "\u0000\u8C5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98E4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98E8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8A4D\u0000\u0000\u0000\u9257"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95DF\u0000\u0000\uA0AC\u0000\u0000"+
-            "\u0000\u0000\u98EB\u0000\u0000\u0000\u0000\u98EC"+
-            "\u0000\u8CC3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AB8\u0000\u0000\u0000\u9EE7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u94BC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCD1\u0000\u0000\u0000\u0000\u0000\u0000\u9CC6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E7E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98FE\uFDE8\u0000\u0000\u0000"+
-            "\u0000\u9940\u0000\u0000\u0000\u0000\u94C9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94D3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9946"+
-            "\u0000\u0000\u0000\u0000\u90C0\u0000\u94D1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9573"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u93C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9948\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u994B\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E55\u0000\u0000\u0000\u0000\u994E"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EFE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8E59"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u94EC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u94EF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C60\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8F74\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9955\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9544\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8CCB\u0000"+
-            "\u0000\u0000\u9956\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9959\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u995B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8CC4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFA45\u0000\u0000"+
-            "\u0000\u90B7\u0000\u0000\u9743\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95CD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u97C9\uFD50\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EB9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95C6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8AB9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DFC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8A76\u0000\u0000\u0000\u0000\u0000\u9D51"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9973\u0000\u0000"+
-            "\u0000\u0000\u9D4F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u997A\u9564\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99A1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99A5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99A7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8EED\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99AD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946E"+
-            "\u8F70\u0000\uFAD0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99B3\u0000\u0000\u0000\u0000\u0000\u0000\uA053"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u965C\u0000\u0000\u0000\u0000\uFD7A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97FE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92BD\u0000\u97FD"+
-            "\u0000\u0000\u0000\u0000\u8F64\u0000\u0000\u0000"+
-            "\u0000\uFCF7\u9562\u97CD\u9E64\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u924C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EC9\u99BC\u0000\u0000\u0000"+
-            "\u0000\u9DA5\u0000\u8F54\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8F7C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8EA2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7A"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97AE\u0000"+
-            "\u0000\u0000\u0000\u96C8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99C3\u0000\u90D6\u0000\u9CBE"+
-            "\u0000\u0000\u0000\u8F76\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9470\uFB4B\u0000\u0000\uFDCA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8EC7\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0F9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8FA9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90D7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EDF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static String innerIndex2=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99CE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA"+
-            "\u0000\u0000\u0000\u0000\u0000\u8FEB\u0000\u99CF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FC2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92C9\u0000\u0000\u0000\u0000\u0000"+
-            "\u97DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95B3"+
-            "\u9C79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95B2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FDB\u0000\u0000\u0000\u0000"+
-            "\u9BE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E7A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9BEE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99DE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAFA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9EE5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A52\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99E1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8A67\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BB5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8AAC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBCA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97DE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u95D1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99F5\uFC4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9BA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBDC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE56\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EA4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9D49\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95DB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9664\u0000\u0000"+
-            "\u0000\u0000\u9055\u0000\u0000\u96D4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u977C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u964D\u0000\u97E1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A48\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A49\u0000\uFE7D\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90AA\u0000\u0000"+
-            "\u0000\u0000\u9A50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9347\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90C9\u0000\u0000\u0000\u0000\u0000\u9A55"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90BC"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A58\u0000\u8BB8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90D5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9641\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A5A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A5C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8ABB\u0000\u0000\u0000"+
-            "\u9BAA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90F5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A60\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9145"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8C58\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A63\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8C49\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8BB6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u966B"+
-            "\u9A6E\u0000\u914F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9746\u0000\u0000\uA0E6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u92D7\u0000"+
-            "\u9675\u0000\u0000\u93D4\u0000\u0000\u91BB\u9679"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9678\u91CD\u0000"+
-            "\u9C4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA06F\u0000\u0000\uA06A"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u915F\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9FA5\u0000\u0000\u89BA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9ECD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A79\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DCE\u0000\u0000"+
-            "\u0000\u8CD2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9D73\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96B9\u0000"+
-            "\u96BC\u0000\u0000\u0000\u0000\u0000\u0000\u9CD1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EEE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB43\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EC9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFBD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9D78\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9D7B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EB3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EB2\u0000\u9DD6\u0000\u0000\u0000"+
-            "\u0000\u994F\u0000\u0000\u89CE\u0000\u0000\u0000"+
-            "\u8BC0\u0000\u9FC4\u0000\u8BD4\u0000\u0000\u8C72"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6BF\u8BF9"+
-            "\u0000\u0000\u0000\u0000\u0000\u8946\u0000\uC6C0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAE5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC87B\u8BC6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9C57\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9AFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89D0\u89CF\u0000\u0000\u0000\uC6C1\u0000\u89D1"+
-            "\u0000\u89E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u927E\u0000\u9DBA\u0000\u0000\u0000\u0000\u0000"+
-            "\uC6C2\u0000\u0000\u8C6F\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBF8"+
-            "\u0000\u0000\u0000\u8BC7\u926B\u0000\u0000\u89D2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FCF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DA9\u89D3\u0000\u0000\u99E2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9267\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92A4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8C73"+
-            "\u0000\u0000\u894E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u894F\u9278\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91B6\u0000\u0000\u0000\u0000\u89D4"+
-            "\u0000\u9FD2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92A7\u0000\u0000\u95A2\u0000\u0000"+
-            "\u0000\u0000\u0000\u926E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u96EA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u926F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92A3\u0000\u0000\u0000\u0000\u0000"+
-            "\u8950\u0000\u0000\uFA57\u0000\u0000\u0000\u0000"+
-            "\u9866\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89D6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98B2\u0000\u0000\u0000\u92AB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96DE\u92AC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8C70\u0000\u9F6E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EF2\u0000\u0000\u0000\u9F6C\u0000\u0000"+
-            "\u0000\u0000\u0000\u89D8\u0000\u0000\u0000\u0000"+
-            "\uFA59\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u92A8\u0000"+
-            "\u0000\u0000\u0000\u0000\u9163\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C40\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F73\u0000"+
-            "\u92AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9BE9\u0000"+
-            "\u0000\u0000\u0000\u0000\u92A9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD56\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FA8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8C71\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92A1\u0000\u0000"+
-            "\u90E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0A6\u0000\u0000\u0000\u0000\u0000\u94AB"+
-            "\u0000\uFC72\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u97C4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92AE\u0000\u0000\u0000"+
-            "\u0000\uFA67\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92A2\uFA69\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9268\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8951\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFA6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFA71\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8952\u0000\u0000\u0000"+
-            "\u0000\u945A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC6C3\u0000\u0000\u0000\u89DD\u0000"+
-            "\uC8A2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uC6C4\u0000"+
-            "\u0000\u0000\u9E52\u0000\u8953\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E55"+
-            "\u92BA\u0000\u0000\uC6C5\u0000\u0000\u8C5B\u0000"+
-            "\u0000\u0000\uFA7D\uFAA8\u9A68\uFA47\u0000\u0000"+
-            "\uFA7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92BB\u0000\u0000\u0000\uFDB6"+
-            "\u0000\uFAA2\u0000\u0000\u0000\u0000\u0000\uFAA3"+
-            "\u0000\uFAA4\u9BB4\uFAA6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89DF\u0000\u0000\u0000\uFDDB"+
-            "\u0000\u0000\uFAA9\u0000\u8954\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAAB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFC7A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89E0\u0000\u9F4F\u0000"+
-            "\u0000\u0000\uC87D\u0000\u0000\u89E1\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAB0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FCD"+
-            "\uA0E7\u0000\u0000\u0000\u0000\u0000\uFAB1\u89A6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EFA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAB2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAB4"+
-            "\u0000\u92C4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9FAC\u0000\u0000\u0000\u0000"+
-            "\u0000\u89E3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9BD3"+
-            "\u89E4\u0000\u0000\u0000\uFAB5\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FD5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8955\u0000\u0000\u92C5\u0000\u0000\u0000"+
-            "\u8956\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000"+
-            "\u0000\uFAB6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAB7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EDC\u0000\u0000\u0000"+
-            "\uFBC4\u9F71\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFABA\u92C7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uC6C6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8C68\u0000\u0000\u89E5"+
-            "\u0000\u0000\u0000\u0000\u9F7D\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0A9\uFAC4\u0000\u0000\u0000\u0000"+
-            "\uC6C7\u0000\u0000\u8957\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFAAA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8958\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BE3\u0000\u8B61"+
-            "\u0000\u0000\u0000\u0000\u9AF1\u0000\u0000\u9EB7"+
-            "\u0000\uC6C8\u0000\u0000\u0000\uFAD1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAD2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EBA\uFAD4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFADB\u0000\u9CE0\u0000\u0000\u0000\uFBF7\u0000"+
-            "\uFBFA\u89E7\uA07A\uFADC\u0000\u0000\uFADD\u0000"+
-            "\u89E9\u0000\u0000\u0000\u0000\u0000\uC6C9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAE2\u89EB\u0000\u0000\uFAE3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90C8\u0000\u0000\u0000"+
-            "\u92DA\u8959\u9CF5\u0000\u0000\u0000\u0000\u0000"+
-            "\u895A\uFAE7\u9FA2\u0000\u0000\u0000\u0000\u0000"+
-            "\uFAEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAED\u8FAD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAEF\u96EF\u0000\u9DEC\u0000"+
-            "\u0000\u0000\u9DCA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD6D\u0000\u89EC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB44"+
-            "\u0000\u0000\u9DE2\u0000\u8C75\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EC0\u0000\u9E56\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F79\u9AC7\u0000\u0000\uFAF4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98A1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAF8"+
-            "\u0000\u0000\u0000\u89F0\u9E47\u0000\u0000\u9DF7"+
-            "\u0000\u0000\u0000\u0000\u9FD3\u0000\u9ACA\u0000"+
-            "\u0000\u0000\u0000\u89F1\uFAF9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E5A\u0000\u89F2\u0000\u0000\u0000"+
-            "\u0000\u89F3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u925D\u8B51\u92E0\u0000\u0000"+
-            "\u89F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FD4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8A79\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97A7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u93BA\u0000\u0000"+
-            "\u0000\u0000\u0000\u9E58\u0000\u0000\u0000\u0000"+
-            "\u89F6\u0000\u0000\u0000\u0000\u0000\u9E57\u0000"+
-            "\u0000\u0000\u0000\u89F7\u0000\u8A41\u0000\u0000"+
-            "\u89F8\u0000\u0000\uFAF1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB42"+
-            "\u0000\uFABF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBA3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAF7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9E4E\u0000\u94DC\u0000\u0000\u0000\u0000"+
-            "\u0000\u95DA\u9DF8\u9F6A\u0000\u0000\u0000\u0000"+
-            "\u0000\u8AB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB46\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8A46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB47\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9148\u0000\u0000\u0000\u92DE\u0000\u0000\u0000"+
-            "\u0000\u8B53\u9DF6\u0000\u9BDA\u0000\u0000\u0000"+
-            "\u0000\u9D7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FD"+
-            "\u99E4\u0000\u0000\u0000\u0000\u0000\u9E43\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DE9\u0000\u8F52\u0000\u0000\u0000"+
-            "\u9DF5\u9DF0\u0000\u0000\u0000\u99E7\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BBD\u0000\u0000\u0000\u0000";
-
-        private final static String innerIndex3=
-            "\u0000\u0000\u0000\u0000\u0000\u9DEF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DD0\u0000"+
-            "\u9FEB\u8DA9\u9DCF\u98E1\u0000\u9DE5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DC8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB4F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DEB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB54\u0000\uFB55"+
-            "\u9AA2\u0000\u8AD6\u0000\u9A5F\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EF5\u0000\u0000"+
-            "\u0000\u8FB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9AD2\u9E6A\u9EE8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BBF\u91C2\u9D62\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9260\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u925E\u91C1"+
-            "\u0000\u8AC5\u0000\u0000\u97A3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B6C"+
-            "\u0000\u8D7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9C54\u0000\u0000\u0000\u0000\u0000\u9DBD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CC5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u895B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB5C\u0000\uFB5B"+
-            "\u0000\uFB57\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98C7\u0000\u0000"+
-            "\uFB5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CEE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u92E2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94A7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8CCC\u0000\u9BD4"+
-            "\u0000\u0000\uFB64\uFB76\u0000\u0000\uFB60\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99E5\u0000\u0000\u9AC2"+
-            "\u0000\u0000\u0000\u91FB\u0000\u0000\u0000\uA073"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F72"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FCC\u0000\u0000\u0000\u98A5\u92E8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9BBC\u0000\u96F3\u0000\u0000\u92E7\u0000\u0000"+
-            "\uFC67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B7D\u0000\u0000\u0000"+
-            "\u0000\u9BF4\u0000\u0000\u0000\u0000\u0000\u9EF7"+
-            "\u0000\u0000\u9EC1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u996F\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96F1\u0000\u0000\u8E41\u0000"+
-            "\u0000\u0000\u0000\u0000\u954A\u0000\u0000\u0000"+
-            "\u97E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F5"+
-            "\u0000\u0000\u0000\u0000\u0000\u92E6\u9F42\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB67\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99A9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE6\u0000"+
-            "\u0000\u0000\u0000\uFB69\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97E5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u967D\u0000\u0000\u0000\uFB6C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99A2\u0000\u0000\u0000\u0000\u0000"+
-            "\u9ABB\u0000\u0000\u0000\u9A65\u0000\u0000\u944E"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFB6E\u0000\u0000\u99DF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98E3\u0000\u0000\u9254\u0000\u0000\u0000"+
-            "\u0000\u0000\u967B\u8AAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C77\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BAF\u9EBD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9EE6"+
-            "\u0000\u0000\uFB6F\u0000\u0000\u0000\u0000\u0000"+
-            "\u8EE1\u0000\u0000\u0000\u0000\u9B7D\u9C7E\u0000"+
-            "\u0000\u0000\u0000\uF9D9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92EA\u0000\u0000\u0000\u0000"+
-            "\u8C78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFB72\u0000\u0000\u0000"+
-            "\uFB71\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u895C\u0000\u98F0\u96F2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB74\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BC1\u0000\u895D\u89DE\u0000\u895E"+
-            "\u0000\u0000\uC6CA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFE42\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB7B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u895F\u0000\u8960\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9BCD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DD3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u984C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9752\u0000\u0000\u0000"+
-            "\u0000\u0000\u95C3\u0000\u0000\u0000\u0000\u9BB6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AB9\u0000\u0000\u0000"+
-            "\u97B3\u0000\u0000\u0000\u0000\u0000\u0000\u9F74"+
-            "\u92F1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u97DF\u0000\u0000\u0000"+
-            "\u0000\uFBA6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9877\u0000\u0000\u0000\u9854"+
-            "\u95C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9D55\uFBB2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u957E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9742\u0000\u94E6\u0000\u0000"+
-            "\u0000\u0000\u92F5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8CC5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92FD\u0000\u0000\uFBA2\u0000\u0000\u9C51"+
-            "\u0000\u0000\u94E9\u985C\u92F0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u944C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u916B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B78\u0000\u0000\u0000"+
-            "\u0000\u94E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u984F\u0000\uFBB5\u0000\u0000\u0000\u0000"+
-            "\u9271\u0000\u0000\u9365\u0000\u0000\u985B\u0000"+
-            "\u0000\u9850\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97BC\u0000\u0000\u0000\u0000\u92F3\u0000"+
-            "\u0000\u9340\u984D\u0000\u0000\u0000\u9572\u0000"+
-            "\uFDEF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFDC1\u0000\u0000\u0000\u0000\uFBBA\u0000"+
-            "\u0000\u92EB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC73\u97B7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBB4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90A7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9741\u92F4"+
-            "\u0000\u0000\u0000\uFBBC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9577\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9EE2\u0000\u8F78\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uF9DC\u0000\u0000\u0000\u9672\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EB5\u0000\u0000"+
-            "\u0000\u964B\u0000\u0000\u0000\u8CAC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0FA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9575\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90DA\u0000\u0000\u9367\u0000\uFEA4\u0000"+
-            "\u0000\u0000\u90DF\u0000\u0000\u0000\u0000\u9354"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8961\u0000"+
-            "\u8BB4\u0000\u0000\u0000\u0000\u9DC0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8E48\u0000\uFBC5\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBC7\u0000\u0000\u0000"+
-            "\uC6CB\u0000\uFA79\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E67\u0000\u0000\u0000\u0000\u0000\u8CD9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBD2\u8962\u8963"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFC7D\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F6B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBCC\u0000\uFEAE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBD1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB75"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBD4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBD6\uFBD8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8B5D\u0000\u934C\u0000"+
-            "\u9AE2\u0000\u0000\u8BC9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBDB\u9FC9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F44\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98ED\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFBDD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DF2\u8964\u0000\uFDF2\u0000\u934D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFBE7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0F2\u9868\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F58\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D73\u0000\u0000"+
-            "\u0000\uFBDE\u0000\u0000\u0000\u0000\u0000\uFBDF"+
-            "\u0000\u0000\u0000\u0000\u0000\u8C48\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFBE3\u0000\u0000\u0000\u0000\u8DA8\u0000\u0000"+
-            "\uFBE4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9C75\u0000\u0000\u9878"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8D60\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFBE5\u0000"+
-            "\u8D61\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8D62\uA0A1"+
-            "\u0000\u0000\u0000\u9C40\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98AD\u0000\u0000\u0000\u9EEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8CD4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CEB\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBE0\u0000\u0000\u9F51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8D65\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9CF1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC58\u0000"+
-            "\u0000\u8D66\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9654\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBE8"+
-            "\u0000\u0000\u0000\uC6CC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBFC\u0000\u9AE4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F75\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFBF1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8D69\u0000\u0000\u0000\u0000\u0000"+
-            "\u934F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u934E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFBF4\u0000\u0000\u0000\u0000\uC6CE"+
-            "\u0000\u0000\u0000\uFBC3\u0000\u0000\u8965\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C7A\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8C7B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D6A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9353\u0000\u0000"+
-            "\u9DFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBFD\u0000\u0000\u0000"+
-            "\u9059\uFC40\u0000\uFC41\uFC43\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9361\uFC46\u9362\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D6B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFC4C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95B8\u0000\u0000"+
-            "\uC6D0\u8BCA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u987A\u0000\u0000\u0000"+
-            "\u0000\uC6D1\u0000\uFC51\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFC54\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8D6C\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFA61\u0000\u0000\uFC57"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9B70\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA051\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C7C\u0000\u8BCB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u936E\u0000\u0000\u0000\uFCD5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCA9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC61\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8966\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFACB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uF9DA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u937A\u0000\uA0E0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u936B\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC6B\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0DC\u0000\u0000\u9468"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFC6D\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D71"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFD64\u0000"+
-            "\u0000\u0000\u0000\u99BA\u0000\u0000\u0000\u9AD0"+
-            "\u9A61\uA0E5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA05B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AC"+
-            "\u0000\u0000\u0000\u0000\u9740\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EF1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C4D\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D72\u0000\u0000"+
-            "\u0000\u0000\uFC76\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA06E\u0000\u0000\uFCAA\u0000\u0000\u0000"+
-            "\uFBCD\u0000\u0000\u0000\uFC74\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA074"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA071\u0000\u0000"+
-            "\u0000\uFC79\u0000\u0000\u0000\u0000\u0000\uFC7C"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9C50\u0000\u0000"+
-            "\u9379\u9378\u0000\u0000\uA0DD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D75"+
-            "\u0000\u8D76\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9374\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D77"+
-            "\uFCA5\u0000\u0000\uFCA2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90C3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA079\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8D79\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BFC"+
-            "\u0000\uA076\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8BCD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FF4\u0000\u0000\u9FBA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D7A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E45\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u93B0\u0000\uA075\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9B46\u0000\uFCAE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCB0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA51"+
-            "\u0000\u0000\u0000\u0000\u0000\u8D7B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8D7C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9ED6\u0000"+
-            "\u0000\u93AC\u0000\u0000\u0000\u9F5B\u0000\u93A9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA07C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCB2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8AC1\u0000\u0000\u0000\u0000\u0000\u9FB4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCAC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9E4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FC5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93AD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DC3\u0000"+
-            "\u0000\u0000\u8DA2\u0000\u0000\u0000\u9D4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCB6\u0000\u0000\u8DA3\u9E4B\u0000\u9E4D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DA4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8AFD\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCB5\u0000\uFCC3\u93B2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DA5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93A1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8AC6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A5B\u0000\u0000"+
-            "\u0000\u894D\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED4"+
-            "\u0000\u0000\u0000\u0000\u8A78\u0000\u93AB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F45\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A56\u0000\u0000"+
-            "\u0000\uFCBF\u0000\u0000\u0000\uFCC0\u0000\u8EE6"+
-            "\u0000\u0000\u8AA4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8943\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93F3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB\u9EA2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DC7\u0000\u0000\u0000\uC6D2\u8BCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCC5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u93B3\u0000\uFCCA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCC9\u8DAC\u0000"+
-            "\uFBC6\u8967\u0000\u8C7E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCCD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF3\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFCD0\u0000\u0000\u95BB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCD3\u0000\u0000\uFCD4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAE";
-
-        private final static String innerIndex4=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFCD7\u0000\u0000\u0000\u0000\u0000\u93DB\u0000"+
-            "\u0000\u0000\u0000\uFE63\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u93D5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCDA\u0000\u0000\u0000"+
-            "\u9B71\u0000\u0000\uFCDD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8DAF\u0000\u0000\u0000\uFAF2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u93D8\u0000\u0000\u0000\uFCDF"+
-            "\u0000\u0000\u0000\u93D3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFCE1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E76\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFC62\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93D1\u0000"+
-            "\u0000\u0000\u8DB1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9859\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFB52\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB53\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB4D\u0000\u0000\u9CBF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B72"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFB50\u93BE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9DF1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFCEB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0BB\u0000\u9B7E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DB3\u0000"+
-            "\u0000\u8C52\u0000\u0000\u0000\u0000\u9AE8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8EDC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFA50\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98E7\uFCF3\u0000\u0000\u0000\u0000\uFCF2"+
-            "\u0000\u0000\u0000\u8CCA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93E5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9A59\u0000\u0000\u0000\u8DB5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFD4D\u0000\u0000\u0000"+
-            "\u0000\uFD5E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9547\uFCF6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9250\u0000\u0000\u0000\u0000\u8968\u0000"+
-            "\u8DB6\uFCFB\uA07D\u98FC\u8969\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE4F\u0000\u0000"+
-            "\u9256\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAC9\u0000\u0000\u93E8\u0000"+
-            "\u0000\u0000\uFCF8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CE3\uFDA9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC44\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9640"+
-            "\u0000\u0000\u8DB8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9B4A\u8FB9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFCFE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u896A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DB9\u0000\u0000\u0000"+
-            "\u917E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u93F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB7C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93E7\u0000"+
-            "\u0000\u97EF\u0000\u0000\u0000\uFE4A\u0000\u0000"+
-            "\u0000\u0000\u0000\uFD45\u0000\u96A5\u0000\u0000"+
-            "\u0000\u0000\uFEE0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD48\uFD47\uFEF2\uFE6A\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DBD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9BA1\u8CA2\u9AB7\u8EFC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FA1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFD51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAAD\u0000"+
-            "\u0000\u0000\u0000\u8DBE\u0000\u0000\u89A4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AD9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD4E\u0000\u0000\u8DC0\u0000\u0000\u97F0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u93B4\uFD44\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FA7\u0000\u0000\u0000\u0000\u8DC2\u0000\u0000"+
-            "\u0000\u0000\u99B6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD52\u0000\u0000\u0000\u0000\u0000\u0000\u8DC1"+
-            "\u0000\u0000\u8E46\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0D1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92CF\u0000\u0000\u0000\u9CF4\u8DC4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD41\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9B4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFD57\uFCEF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9CDE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFD42\u986C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u97F9\u0000\u9558\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u985E\uFE7B\u94CD\u0000\u0000"+
-            "\u0000\u0000\u0000\u93EE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8CA3\u0000\uFD5A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u93F5\u0000\u0000\u0000"+
-            "\u0000\u0000\u93EF\u8EEA\u0000\u0000\u0000\u8F5B"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C5E\u0000\u8DC6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DC8\u0000\u0000\u8DC7\u0000\u0000\u0000"+
-            "\u0000\u0000\u93F7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DC9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFBF2\u0000\u0000\u0000\u0000\u9670"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DCB\u0000\u0000\u0000\uFD5C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F65"+
-            "\u0000\u0000\u0000\u8DCD\u0000\u0000\u0000\u0000"+
-            "\u0000\u9DA8\u94F9\u0000\u0000\u8DCE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93EA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFD5F\u93F0\u9FB6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DCF\u0000\u0000\u0000"+
-            "\u9763\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DD0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u93F1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD62\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD65\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FDB\u0000\u0000\u0000\u0000\u93F8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF7"+
-            "\u0000\u0000\u0000\u0000\uFD66\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BCF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DD1\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DD2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFD71\u0000\u0000\u0000"+
-            "\u0000\uFD6F\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DD3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FE7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FD0\u0000\u0000\u0000\u8BD0\u0000\uFD72"+
-            "\u0000\u9CAE\u8BD1\u0000\u0000\u8ADB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAE4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u95CE\u0000\uFD76\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB62\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DD4\u0000\u0000"+
-            "\u0000\uFD78\u0000\u0000\u0000\u0000\u0000\u8EE3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9076"+
-            "\u0000\u0000\u98C6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8DD5\u0000\u0000\u0000\u0000\u97D1"+
-            "\u0000\u0000\u9EB6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAC7\u0000\u0000\uA042\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9873"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FFC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8CA5"+
-            "\u0000\u0000\u8DD7\u0000\u0000\u92FB\u8DD8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u944F\u0000\u8DD9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u896B\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97CE"+
-            "\u0000\u0000\u0000\uFAF3\uFDAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFBAF\u92B7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DDA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5A"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFDAD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DDC\u9444\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DDD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8C41\u0000"+
-            "\u0000\u0000\u97D5\u0000\u944A\u0000\u0000\u0000"+
-            "\u0000\u0000\u944D\u0000\u0000\u0000\u0000\u97CB"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DDE\u0000\u0000"+
-            "\u8DDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DE0\uFEF9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC0"+
-            "\uFCF9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFB7E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u92B3\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDAF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DE1\u0000"+
-            "\u0000\u0000\u0000\u95D3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u89C1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFD68\u0000\u0000"+
-            "\u9CB7\u0000\u0000\u8DE3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFAC0\u8DE5\uFA64\u0000\u8947\u0000\u0000"+
-            "\u0000\u0000\u8DE4\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DE7\u8DE8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFDC7\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDB0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9445\u97D6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC6\u9844"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DE9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE50\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDCC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DA7\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDCD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDCF\u0000\u0000\u0000"+
-            "\u0000\u95D2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DED\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFCBA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFDC5\u0000\uFDD2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CDC\u0000\u0000"+
-            "\u0000\u0000\u0000\u95CF\u0000\u0000\u8DEE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDD4\u0000\u0000\u0000\u0000"+
-            "\u0000\u96EC\u96EB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90B6\u0000"+
-            "\uFDC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98AB\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96EE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DF4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDE0\u0000\u8C67\u0000\u0000"+
-            "\u8DF6\u0000\u0000\u0000\u8DF7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FFA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97D0"+
-            "\u0000\u0000\u0000\u0000\u8BD2\u0000\u0000\u8DF8"+
-            "\u0000\u0000\u0000\u0000\u0000\u90D9\u0000\u8C47"+
-            "\u0000\uFAF0\u0000\u0000\u0000\u0000\uFDE1\u8DF9"+
-            "\u0000\uFDE3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8DFA\u0000\uFB63\u0000\u0000\u0000\u90A6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9970\u0000\u0000\u91EB\u0000\u9770\u986F\uFDE2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98F2\u0000\u9AFC\u896C\uFDFD\u0000\u0000"+
-            "\u995E\u0000\u0000\u0000\u95BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDE4\u0000\u0000\u0000"+
-            "\u91E6\u0000\u0000\u0000\u0000\uFDE5\uFDE6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDE7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9454\u0000\u0000\u0000\u99B8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97E9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9346\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9863\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95BC\u0000\uFDED\uFDF7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9870\u96F6\u8EA9\u0000\u0000"+
-            "\u0000\u0000\u0000\u9451\u0000\u0000\u8E43\u0000"+
-            "\u8B5A\u0000\u0000\u0000\u0000\uFDEE\u0000\u0000"+
-            "\u0000\u0000\uFDF0\u0000\u0000\u0000\u0000\uFDF4"+
-            "\u0000\u9BF5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u977E\u0000\u0000\u0000\u0000"+
-            "\u0000\u9BD5\u0000\u9AC3\u0000\u97C8\uA0DB\u91D0"+
-            "\u0000\u0000\u9FE4\u0000\u8FDD\u0000\u91E9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98E0\u0000\u0000\u0000\u92CA\u0000\u9857\u0000"+
-            "\u0000\u8C51\u0000\u0000\u0000\u0000\uFDEB\u0000"+
-            "\u9B49\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9D76\u9EAF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CCC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDEA\u0000\u0000\u8DF1"+
-            "\u0000\u0000\uFDFB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8E53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFACF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96F9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98BF\u9E49\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8CA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9BCA\u0000\u0000\u0000\u0000\uFDFE\u92DC"+
-            "\u0000\u0000\u0000\u0000\u0000\uFE41\u91CC\u91E2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFE44\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BD3\u0000\u0000\uFE47\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9455\u0000\u0000\u0000\u0000\uFE4B\u0000\uFE4C"+
-            "\u0000\u0000\u0000\u0000\u8DBF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E78\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE51\u0000\u0000\u0000\u0000\u9456"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D61"+
-            "\u0000\u0000\u0000\u0000\u9457\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9966"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BD5\u0000\u0000"+
-            "\u0000\u0000\uA069\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98B4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA049\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA04C\u0000\u9E65\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98B5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE58\u0000\u9975\uFE53\uA065\u0000\uFE59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98B7\u98B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98BA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98BB\u0000\u0000\u0000\u0000\u0000\u0000\u9FBC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA04A\u0000\u0000\u9EC7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8CA9\u0000\u0000\u98AE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u92D6\u0000\u0000\u0000\uFAE1\u0000\u91D4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADE"+
-            "\u0000\u0000\uFE5B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C53\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFE5E\u0000\u0000\u0000\u0000\uFBD7\uFE5A"+
-            "\u94C5\u0000\u0000\u0000\u0000\uFACA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98C1\u975C\u0000\uFE74\u0000\u9773\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA46"+
-            "\u0000\u0000\u0000\u9764\u0000\u0000\u0000\uFE68"+
-            "\u0000\u964E\u0000\u9765\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C5A\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89A1\u95FA\u0000\u92D4\uFE69\u0000\uFB45"+
-            "\u0000\u98C8\u0000\u0000\u90EF\u0000\u98C9\u98CA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946D"+
-            "\u94B7\uFE6C\u0000\u0000\u946B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92FC\u0000\u95EB\u0000\uFE73"+
-            "\u976E\uFE5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDBD\u0000\u0000\u92D5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFEB9\u0000\u0000"+
-            "\uFE71\u0000\u0000\u0000\u0000\uFBBB\u0000\u0000"+
-            "\u947A\u0000\u0000\u95FB\uFE77\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFE79\u0000\uFE75\u0000"+
-            "\u0000\u0000\u945D\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE7C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9344\u8EA6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92D3\u0000\u94B8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFC71\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u975E\u0000\u0000\u0000"+
-            "\u0000\u8CAD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEA7\u0000\u0000\u0000\u946A\u0000\u0000\u0000"+
-            "\u93E3\u0000\u0000\u98CF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0D9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0BF\uA04D\uA0B8\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0B7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFEA9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C3\u0000\u0000\u0000\u0000\uFEAB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9DF4\u896D\u0000\u0000"+
-            "\u0000\u0000\u0000\u9C7B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u98D2\u0000\u0000\u0000\u9FA9\u0000"+
-            "\u0000\u0000\uFEB2\u0000\u0000\uFEB1\u0000\u0000"+
-            "\u0000\u97D9\u0000\uA0C4\u0000\u9476\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9978\u0000\u0000\u0000\u0000\u0000\u0000\uFEB3"+
-            "\u0000\u0000\u0000\u0000\u0000\u98D3\uFEB4\u0000"+
-            "\u0000\u0000\u98D4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FB9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9471\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98D5\uFEB8\u0000"+
-            "\u0000\u0000\uC6D4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFEBA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9E5C\u0000\u0000\uFEBB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA044\u0000\u0000\u0000\u0000"+
-            "\u98D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98D8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static String innerIndex5=
-            "\u0000\u0000\uFEBC\u0000\u0000\u0000\u0000\u9FFE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEBD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DDD\u0000\u0000\u0000\u0000"+
-            "\u9EE1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98DA\u9DDF\uFEBF"+
-            "\u0000\uFEBE\u0000\u0000\u9EEB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E59\uA05C"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC0"+
-            "\u0000\u0000\u0000\u9477\u98DC\u0000\uFEC1\u0000"+
-            "\u0000\u0000\u98DE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFEC8\u0000\u0000\u0000\uFEC9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFECA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFECB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FC2\u0000"+
-            "\u0000\u8C6B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98C4\u0000\u94B0\u94B1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFED1\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0C1\u0000\uFED2\u0000"+
-            "\u0000\u0000\u0000\uA0CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFED3\u0000\u0000\u98E5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFED6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91E4\u0000\u0000\u0000\u0000\u8FC7"+
-            "\u94AE\u0000\u8A4F\u94B2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FD4\u0000\u0000\u0000\u0000"+
-            "\u98EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9DE0\u0000\u0000\u0000\u0000\u98EE\u0000"+
-            "\u0000\u0000\u0000\u95C4\u0000\uFCE8\u0000\u0000"+
-            "\u0000\u0000\u0000\u98EF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8C6E\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAD8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEDC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0AE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9D4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98F1\u0000\u0000\u0000\u98F3\u0000\u94C1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u98F5\u0000\u0000\uFA4F\u96E2\u0000\u0000"+
-            "\u0000\u0000\u9450\u0000\u96A2\u0000\u0000\u98F6"+
-            "\u0000\u0000\u0000\u96E5\u0000\u0000\u0000\u0000"+
-            "\u0000\u98F7\u0000\uA046\u96E3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9EE4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uF9D6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u94C3\u0000\u0000\u0000\u0000\u94C2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE1"+
-            "\u0000\uFEE9\u0000\u0000\u0000\u0000\u96E4\u0000"+
-            "\u89AC\u96DB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94C4\uFEE3\u0000\u0000\u0000\uFEE7"+
-            "\u9FFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8C59\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u93C9\u0000"+
-            "\u94E8\uFB56\u0000\u0000\u0000\u90C5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0A8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFEE5\u0000"+
-            "\u0000\u0000\u98FD\u98FB\uFEE8\u0000\u8EBF\u0000"+
-            "\u0000\u0000\u0000\u8BD8\uFEF7\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8F68\u94C6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DEA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC69\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9CDA\u0000"+
-            "\uFEF3\u0000\u0000\u9C72\u0000\u0000\uFEF0\u89C9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9941\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9942\u0000\u0000\u0000\uFEF5\u0000\u91D7"+
-            "\u0000\u0000\u0000\u0000\u0000\u94CC\u0000\u0000"+
-            "\u0000\uFEF8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u97A8\u0000\uFEFC\u0000"+
-            "\u0000\u0000\u0000\u0000\uFDBF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEFE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u96D1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u94D5\u0000\u0000\u94D0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9944\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8C63\u0000\u0000\uA0B3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u94CF\u0000\u0000\u0000\u9FFA\u0000"+
-            "\u0000\u0000\u0000\u91E5\u0000\u9C6A\u0000\u0000"+
-            "\u0000\u8E49\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E4C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E4D\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A73\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9947\u0000\u8CB1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8E50\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8E4F\u9949\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E51\u8E52\u0000\u0000\u0000\u0000"+
-            "\u9AB2\u89A5\u0000\u0000\u0000\u0000\u0000\u994C"+
-            "\u0000\u0000\u0000\u9FF8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E56\u994D\u91CA\u8E57\u0000\u0000"+
-            "\u0000\u0000\u94E1\u0000\u0000\u0000\u0000\u9047"+
-            "\u0000\u8FD8\u8E58\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u94EB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8E5C\u9553\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FE5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F56"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u954F"+
-            "\u0000\u8E5E\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u996A\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9C64\u9CD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E5D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9950\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9951\u0000\u0000\u8E62"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9952\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E68\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E61\u9F59\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BB3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5D"+
-            "\u8E66\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8CB2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E6E\u0000\u9F64\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9953\u0000\u0000\uFAB8\u0000\u0000"+
-            "\u0000\u0000\u0000\u9954\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F61\u0000\u8E72\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA06B\u0000\u0000\u0000\u0000\u9F40\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u94ED\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u94EE\u0000\u0000"+
-            "\u9FBD\u0000\u0000\u0000\u8E7B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9957\u94F7\u0000\u9F5F\u0000"+
-            "\u0000\u0000\u0000\u8E73\u0000\u0000\u9F62\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u94F6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9958\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8E75\uF9DB"+
-            "\u0000\u0000\u0000\u0000\u9072\u0000\u94F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u995A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0B0\u8CB3\u0000\u0000\u0000\u8E79"+
-            "\u0000\u8E78\u0000\u0000\u0000\u94F3\u0000\u0000"+
-            "\u0000\u0000\u0000\u98AF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0B2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8E7A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u995C\u0000\u0000"+
-            "\u0000\u0000\u0000\u8E7C\u0000\u8E7D\u0000\u0000"+
-            "\u0000\u8BD9\u0000\u0000\u89A2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9ED7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0B6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E42\u0000\u0000\u8EA4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EA7\u0000\u8C76\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9542"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u987D\u0000\u0000\u0000"+
-            "\u9755\u0000\u0000\u8EA8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u89A3\u0000\u9960"+
-            "\u9962\u0000\u0000\u94FC\u9961\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u94FA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8EAE\u8EB2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8EB0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9963\u97AA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94FB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EBB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8CDC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9876\u0000\u8EA1"+
-            "\u0000\u0000\u0000\u0000\u8CB4\u0000\u8EB7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DA6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9EB0\u0000"+
-            "\u0000\u0000\u8EB8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D70"+
-            "\u0000\u0000\u0000\u0000\u896E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u896F\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8970\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8971"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8972"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8973"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8974\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8975"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8EBC\u8EBD\u0000\u0000\u0000\u0000\u0000\u8EBE"+
-            "\u0000\u9DD1\u0000\u0000\u0000\u0000\u94FD\u0000"+
-            "\u0000\u0000\u8BD7\u8BDA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FE9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDA8"+
-            "\u0000\u0000\u0000\u8AE7\u0000\u0000\u0000\u8EC2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EC4\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9964\u0000"+
-            "\u0000\u0000\u0000\u0000\u9965\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u954E\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98B3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8ECB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BDF\u0000\u0000\u0000\u0000\u0000"+
-            "\u8ECE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8ECF\u0000\u0000"+
-            "\u9968\u0000\u0000\u0000\u0000\u9969\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u996B\u8ED1"+
-            "\u0000\u996C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8ED4\u8ED5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u996D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA0BE\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED6\uA0BC\uA0B5\u0000\u0000\uA0B4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89B5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EDD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5D\u9971"+
-            "\u0000\u0000\u0000\u0000\u89AE\u9DE8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9565\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9972\u0000\u0000\u8B5C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u89B1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA0C0\u0000\u0000\u0000\u8EDF"+
-            "\u0000\u9566\u0000\u0000\u9974\u0000\u9976\u0000"+
-            "\u0000\u0000\u9977\u0000\u9979\u0000\u0000\u9DDA"+
-            "\u0000\u0000\u8EE0\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u935C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9DE6\u0000\u8B5F\u0000\u0000\u9563"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9567\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u997C\u0000"+
-            "\u0000\u997D\u997E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8B5B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99A3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99A4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99A6\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99A8\u0000\u0000"+
-            "\u0000\u0000\u8ABE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E61\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99AA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0C8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99AB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u98C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8EE8\u0000\uA0BA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFD77\u0000"+
-            "\u0000\u8EEE\u0000\u0000\u0000\u9EBF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u89C2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99AC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u956B\u0000\u0000\u956C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99AF\u0000"+
-            "\u0000\u994A\u8976\u8F48\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99AE\u0000"+
-            "\u0000\u0000\u8EFB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8CD0"+
-            "\u0000\u0000\u0000\u0000\u8B52\u0000\u0000\u0000"+
-            "\u0000\u0000\u99B0\u0000\u0000\u0000\u0000\u8977"+
-            "\u8F41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8F49\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFA4D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DE4"+
-            "\u8CB5\u0000\u0000\u0000\uFBE9\u9B54\u0000\u99B2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9E68\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8F4A\u0000\u8F42\u0000\u0000\u8F51\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9846\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99B4"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8EF5\uFD55\u0000\u0000\u9CCD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8978"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8F53\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8F6F\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8E63\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8F56\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFE76\u0000\u0000\u0000\u0000\u9FC6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAAC\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F58\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9848\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99B7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9665\u0000\uFA6C\u0000"+
-            "\u9DE7\u0000\u0000\u0000\u9E62\u0000\u0000\u0000"+
-            "\u96CC\u8E67\u0000\u0000\uFC75\u0000\u987E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFDB9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u97FC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98F9\u0000\u8F66\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u956E\u0000\u9245\u0000\u0000"+
-            "\u8F60\u0000\u0000\u0000\u9ED1\u0000\u0000\u0000"+
-            "\u0000\u0000\uFECD\u0000\u99B9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8F62\u974C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91C7"+
-            "\u955F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8E6D\u8F71\u0000\u0000\u94CB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u95B1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AF2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96C3\u99BD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0CF\u0000\u0000\u0000\u8F6D\u0000"+
-            "\u0000\u99BE\u8EF4\u0000\u8F72\u95E4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99BF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9242\u0000\uFBA5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFDB4\u8F77\u0000\u0000\u0000"+
-            "\u99C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFAB9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F40\uFA44\u0000\u0000\u0000"+
-            "\u0000\u0000\u99C2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8F5C\u0000\u0000\u0000\u0000\u8CBD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C4"+
-            "\u99C5\u0000\u0000\u8F7B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8CB6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FA3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8CCE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96CD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96C7\u0000\u0000\u0000";
-
-        private final static String innerIndex6=
-            "\u0000\u0000\u8FA5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFABB\u0000\u8C61"+
-            "\u9570\u0000\u0000\u0000\u9368\u0000\u8F7E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8FAA\u0000\u0000\u0000\u0000\u0000\u0000\uA050"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90D3\u0000\u0000\u9556\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FB8\u0000\u0000\u0000"+
-            "\u0000\u0000\u99C8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FAF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99C9\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9579\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9F49\u0000\u0000"+
-            "\u0000\u0000\u99CA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99CB"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DD5\u8FB0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFA7A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5F\u0000"+
-            "\u0000\u0000\u0000\u99CD\uA0C9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9ADB\u0000\u0000"+
-            "\u0000\uA0C6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FB4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0C7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA043\u0000"+
-            "\u0000\u0000\u8FB5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FB2\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA061\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E5E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FB6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FE8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CB2"+
-            "\u0000\u0000\u0000\u0000\u0000\u957C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FC7\u0000\u0000\u8FBB\u8FBC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FEC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FC0\u0000"+
-            "\u936A\u0000\u0000\u0000\u8BE4\u9C7C\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95A1\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEEC\u0000\u0000\u95A3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8C45"+
-            "\u8CB8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC1\u0000\u0000\u0000"+
-            "\uA052\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99D0\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC3\u8FC4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95A4"+
-            "\u0000\u0000\u0000\u0000\u0000\u8FC6\u0000\u9E60"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9D8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95A5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CB3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99D1"+
-            "\uFEF1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99D2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9CC2\u0000\u0000\u0000\u99D3"+
-            "\u0000\u0000\u0000\u0000\u0000\u95A7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95A9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95A6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98E2\u0000\u0000\u0000\u0000\u0000\u0000\u8FC9"+
-            "\u0000\uA0C2\u8FCA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99D4\u0000\u0000\uA0B9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9B58\u0000\u8FCD"+
-            "\u0000\uA0D4\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FCE\u0000\u0000\u0000"+
-            "\u0000\u8BE5\u0000\u0000\u0000\u0000\u8979\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FD0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95B6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99D6\u0000\u95E5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99D7\u0000\u0000\u0000\u0000\u95B5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0CA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FFD"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA058\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8FD6\u0000\u0000\u0000\u99D8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FD3\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FE5\u0000\u0000\u0000\u0000\u0000\u8FE9"+
-            "\u0000\u0000\u0000\u0000\u99D9\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u927C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9C45\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FDE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FDF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA04B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FE2"+
-            "\u0000\u0000\u0000\uA0CC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FE3\u8FE4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9BC4\u0000"+
-            "\u0000\u0000\u9BFC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u964C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9AF6\u0000\u8CAE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8FE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FE8\u0000\u0000\u0000\u0000"+
-            "\u8BE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u897A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u897B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99DA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FED\u0000\u0000\u0000\u95C0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uA0CB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E48\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99DB\u0000\u8FF3\u0000"+
-            "\u0000\u0000\u0000\u8FF9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95C1\u0000\uA04E\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99DC\u0000\u0000\u0000\u0000\uA064"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FF7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89B0\uA048\u0000\u0000\u0000"+
-            "\u0000\u8FFB\u8FF6\u0000\u0000\u0000\u0000\u0000"+
-            "\u9DDC\u0000\u0000\u0000\u99DD\u8BE8\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u92C1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FD6\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0D2\u0000"+
-            "\u0000\u9040\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8AC4\u0000\u0000\u99E0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FF0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FF3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DBF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FF6\u0000\u95C8\u0000\u0000\u9E5A\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99E3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8A4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FF1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8AA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99E6\u0000\u0000\u0000\u9FF7\u0000\u9FED"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8A5C\u0000"+
-            "\u9DAE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95C9"+
-            "\u0000\u0000\u0000\u0000\u0000\u9048\u0000\u0000"+
-            "\u99E8\u0000\u0000\u0000\u0000\u0000\u9049\u0000"+
-            "\u0000\u8CBA\u0000\u0000\u90B1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u904A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99EA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9BD1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99EB\u0000\u99EC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u99ED\u0000\u0000"+
-            "\u0000\u0000\u99EE\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u904C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u904D\u0000\u0000"+
-            "\u95CB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97E2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95CC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9F78\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u897C\u897D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u897E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u995D\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9B5A\u0000\u0000\u0000\u0000\u9050\u0000\u8C4F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9054\u0000\uC6D6\u9AA8\u99EF"+
-            "\uFEEB\u9DA3\u9DA1\u9943\u9945\u0000\u9D7D\u0000"+
-            "\u0000\u99F0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99F1\u0000\u99F2\u0000\u0000\u8CBC"+
-            "\u9D60\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0A3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u905B\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9EDB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9D79\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99F3\u0000\u0000\u0000\u9062"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9F55\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9BF9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9065\u0000\u0000\u96E0\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u98BE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9068\u0000\u0000\u0000\u0000\u0000\u906C\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u95D8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u906A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FB2\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FAE\u0000\u0000\u9FB0\u0000\u89AD\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u906E"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E71\u0000\u0000\u0000\u0000\u0000\u9E4A\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FDC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89AB\u0000\u9FB8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9070\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8B63\u0000"+
-            "\u0000\u0000\u0000\u95DC\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9071\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFC5E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8949"+
-            "\u0000\u0000\u0000\u0000\u0000\u965B\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8C50\u0000"+
-            "\u0000\u0000\u94A6\u0000\u0000\u0000\u8FD5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E73\u0000\u0000\u0000\u0000\u0000\u9075\u0000"+
-            "\u0000\u0000\u0000\u99F7\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8CBF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u99F9\u0000\u9663\u95B9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u94D4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCFA\u0000\u0000\u0000"+
-            "\u0000\u9077\u0000\u0000\u90AB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9D4D\u0000\u0000"+
-            "\u99FA\u0000\u0000\u0000\u0000\u92E3\u0000\u97BB"+
-            "\u0000\u0000\u9078\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99FB\u0000\u0000\u97E0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96DC"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9CA8\u0000\u0000\u9772\u0000\u0000\u0000"+
-            "\u0000\u9440\u0000\u0000\u0000\u0000\u0000\u92F2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u99FD\u0000"+
-            "\u0000\u99FC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uF9D7\u964A\u0000\u0000\u0000\u96D8\u99FE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u904B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFA41\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A40\u0000\u975B\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A41\u91DD\u0000\u0000\u0000"+
-            "\u0000\u0000\u93FC\u9A42\u9A43\u0000\u9659\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A44\u0000\u0000"+
-            "\u0000\u0000\u0000\u9051\u0000\u0000\u0000\u94BF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90A2\u0000\u0000\u0000"+
-            "\u9CAB\u9776\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC55\uFE45\u94A8\u9A45\uFA4B\u9DE1\u0000\u0000"+
-            "\u96D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9774"+
-            "\u0000\u0000\uFDF5\u0000\u0000\u0000\u92E5\u0000"+
-            "\u9645\u91DA\u0000\u90A3\u0000\u0000\uA05F\u0000"+
-            "\u0000\u0000\u0000\u90AF\u97BF\u0000\u0000\u0000"+
-            "\u914C\u0000\u0000\u0000\u0000\u967A\u0000\u0000"+
-            "\u0000\u91DE\u0000\u0000\u9A46\uFEB0\u9779\u946C"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9858\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9266\u0000\u0000\u0000"+
-            "\u93FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A47\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9749\u0000\u0000\u9748\u0000\u934A\u0000\u9CE2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9264\u0000"+
-            "\u0000\u0000\u0000\u91DF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFB79\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96D7\u0000\u0000\u0000\u0000"+
-            "\u9343\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFDCB\uFE7A\u0000\u91DB\u8C6A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u97AF\u0000\u0000\u95DD\u0000\u0000\u0000"+
-            "\u9348\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A4B"+
-            "\u0000\u0000\u0000\uFC45\u0000\u9A4D\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u91BC\u90E2\u90B4\u95E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A4E\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A4F\u0000"+
-            "\u0000\u0000\uFE40\uFE43\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96DD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A51\u0000\u0000\u0000"+
-            "\u96A7\u0000\u0000\u90B0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9C4E\u0000\u9443"+
-            "\u0000\u0000\u0000\u0000\u8EBA\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A52\u0000\uFCC1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BE9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CAF"+
-            "\u0000\u0000\u8BFD\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9ABC\u0000\u9AB8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9AA7\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A53\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D74"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BEA\u0000\u0000\u0000\u0000\u0000\u0000\u8BEB"+
-            "\u0000\u0000\u0000\u0000\u0000\u90B2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u95E9\u95E8"+
-            "\u0000\u95E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90B5\u0000\u9A54\u0000\u0000\u0000\u90B3\u95E7"+
-            "\u0000\u0000\u8B50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8BEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9A56\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-/*
-        private final static String innerIndex7=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BFB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A57\u0000\u0000\u0000\u0000"+
-            "\uA0AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FA6\u0000\u0000\u0000\u99CC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9C59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99B5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90BE\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FAF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95F2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90BF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90C1\u0000\uFEE4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90C4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90C7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92E4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F52\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90DB\u0000\u0000\u0000\u0000"+
-            "\u0000\uA066\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90D2\u0000\u0000\u0000\u0000\u90D4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9A5B\u95FD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BC4\u0000\u0000\u0000\u8C66\u0000\u90DE"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CE4\u0000\u90E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E46\u0000\u0000"+
-            "\u0000\u9651\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB58"+
-            "\u0000\u90E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9650\u0000\u0000\u0000\u90E7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90E8\u9A5D\u0000\u9F7A\u0000\u0000\u0000"+
-            "\u9B5C\u0000\u9F7C\u0000\u0000\uFC52\u90E9\u0000"+
-            "\u90EA\u0000\u9A5E\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90EB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90EC\u0000\u0000\u0000\u0000\u0000\u8BEE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90EE\u0000"+
-            "\u0000\u0000\u91C6\u0000\u0000\u90F2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCBC\u8A74\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9657"+
-            "\u0000\u0000\u0000\u9CEF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FDF\u0000"+
-            "\u0000\u0000\u0000\u90F7\u90F6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B5E"+
-            "\u0000\u0000\u0000\u90F8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90F9\u0000"+
-            "\u8CC9\u0000\u0000\u0000\uFA6A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BEF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FE0\u0000\u0000\u9142"+
-            "\u0000\u9A62\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9569\u0000\u0000\u0000\u9144"+
-            "\u9143\u0000\u9141\u0000\u0000\u0000\u8BF0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9660\u0000\u8BF1\u0000"+
-            "\u99F6\u9149\u0000\u0000\u0000\u0000\u914A\u0000"+
-            "\u0000\u0000\u0000\u0000\u914B\u0000\u0000\u0000"+
-            "\u0000\u9A64\u0000\u0000\u0000\u8ABF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A66\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A67\u0000\u0000\u9A69\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A6A"+
-            "\u9652\u914D\u0000\u9666\u0000\u0000\u0000\u0000"+
-            "\u9F7B\u0000\u9A6B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA06C\u0000\u0000\u9667\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A6C\u0000\u0000"+
-            "\u0000\u0000\u9A6D\u8BF2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u966A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u966C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91C4\u0000\u0000\u0000\u9677\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99F4\u9A6F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FAB\u0000\u0000\u0000\u0000\u0000"+
-            "\u8CBE\u8EC1\u0000\u0000\u0000\u0000\u9555\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9152\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9153\u0000\u0000\u0000"+
-            "\u9155\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u955D"+
-            "\u0000\u9671\u0000\u0000\u0000\u0000\u9C6D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9673"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9154\u9A71\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9156\u0000\u0000\u0000\u966D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9557\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89C6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89C7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8A6A\u0000\u0000\u0000\u8B57\u0000"+
-            "\u0000\u0000\u9FE1\u0000\u0000\u9B5F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA05D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u915B\u0000\u915C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u915E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5C"+
-            "\u0000\u0000\u9F57\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F65\u0000\u0000\u0000\u0000\u0000\u9A72"+
-            "\u0000\u0000\u0000\u0000\u9160\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F5E\u0000\u0000\u9161\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9164\u0000\u0000\u0000"+
-            "\u0000\u9F41\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9169\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9168\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A74\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B2"+
-            "\u0000\u9A75\u0000\uFDA5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EE9\u0000\u8BBA\u916D\uA060"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FDE"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FC3\u0000\u96B5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA067\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A76\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95D5\u0000\u0000\u0000\u9ECA\u0000\u0000"+
-            "\u0000\u9A77\u0000\u0000\u9A78\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9170"+
-            "\u0000\u0000\u916F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FA3\u0000\u9171\u0000\u0000\u0000"+
-            "\u96B1\u0000\u0000\u0000\u0000\u9F63\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F67\u0000\u0000\u0000\u8BB9"+
-            "\u9A7A\u0000\u0000\u0000\u0000\u0000\u8B56\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9ADA"+
-            "\u0000\u0000\u0000\u0000\u0000\u96B0\u0000\u0000"+
-            "\u0000\u0000\u9A7E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DDE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AD"+
-            "\u0000\u0000\u0000\u96AE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EA1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96AF\u8BF4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FA4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96F4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u96B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAA1\u0000\u0000\u0000"+
-            "\u0000\u91A7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA05E\u0000\u0000\u0000"+
-            "\u0000\u9A7D\u0000\u0000\u0000\u0000\u8948\u0000"+
-            "\u9EB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DDB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95BF\u8A73\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EFE\u0000\u917A\u0000"+
-            "\u0000\u0000\u0000\u917B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9AA3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96C2\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F77\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AA4\u0000\u0000"+
-            "\u9AA5\u0000\u0000\u0000\u91A1\u0000\u0000\u0000"+
-            "\u0000\u89B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9173\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AA6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u89BD\u0000\u89B9\u0000\u917D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96BB\u0000\u0000\u0000\u9FF2\u0000\u0000\u8BF5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9AA9\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F54\u0000\u0000\u9FE3\u9EED\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91AA\u0000\u0000\u0000\u0000\u91AB\uA070\u0000"+
-            "\u9F6D\u0000\u0000\u0000\u0000\u0000\u91AC\u0000"+
-            "\u0000\u0000\u91AD\u0000\u0000\u0000\uA0FD\u0000"+
-            "\u9FE2\u0000\u91AF\u9E41\u9AAA\u0000\u0000\u91B0"+
-            "\u0000\u9AAB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AAC\u0000\u9A4A"+
-            "\u0000\u91B2\u0000\u0000\u8BF6\u0000\u9AAD\u89B6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9AAF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9AB0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9AB1\u0000\u0000\u0000\u0000\u0000\u9AA1\u0000"+
-            "\u0000\u0000\u91B9\u0000\u0000\u0000\u0000\u0000"+
-            "\u91BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91BE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA041\u8BB7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u91C0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AB3\u91C3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0FC\u0000\u0000\u9FEE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F69\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91C8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u91C9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DE6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u91CB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C8\u0000\u0000\u0000\u0000\u0000\u8DAA"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FDD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFA40\u0000\uFA42\uFA43\u0000\u0000\u0000\u0000"+
-            "\u0000\uFA49\uFA4A\u0000\uFA4C\u0000\uFA4E\u0000"+
-            "\u0000\u0000\uFA52\uFA53\uFA54\uFA55\uFA56\u0000"+
-            "\uFA58\u0000\uFA5A\uFA5B\uFA5C\uFA5D\uFA5E\u0000"+
-            "\uFA60\u0000\uFA62\uFA63\u0000\uFA65\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFA6D\uFA6E\u0000"+
-            "\uFA70\u0000\uFA72\uFA73\uFA74\uFA75\uFA76\uFA77"+
-            "\uFA78\u0000\u0000\uFA7B\uFA7C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFAA7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFABC\u0000\uFABE\u0000\u0000\uFAC1"+
-            "\uFAC2\uFAC3\u0000\u0000\uFAC6\u0000\uFAC8\u0000"+
-            "\u0000\u0000\u0000\u0000\uFACE\u0000\u0000\u0000"+
-            "\u0000\uFAD3\u0000\u0000\uFAD6\uFAD7\u0000\u0000"+
-            "\uFADA\u0000\u0000\u0000\u0000\uFADF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAE9"+
-            "\u0000\uFAEB\uFAEC\u0000\uFAEE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAF5\uFAF6\u0000\u0000\u0000"+
-            "\u0000\uFAFB\uFAFC\u0000\uFAFE\uFB40\uFB41\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFB49\uFB4A"+
-            "\u0000\uFB4C\u0000\uFB4E\u0000\u0000\uFB51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFB5D\u0000\uFB5F\u0000\uFB61\u0000"+
-            "\u0000\u0000\u0000\uFB66\u0000\uFB68\u0000\uFB6A"+
-            "\uFB6B\u0000\uFB6D\u0000\u0000\u0000\u0000\u0000"+
-            "\uFB73\u0000\u0000\u0000\uFB77\uFB78\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBA1\u0000\u0000\uFBA4"+
-            "\u0000\u0000\uFBA7\uFBA8\uFBA9\uFBAA\u0000\uFBAC"+
-            "\uFBAD\uFBAE\u0000\uFBB0\uFBB1\u0000\uFBB3\u0000"+
-            "\u0000\u0000\uFBB7\u0000\u0000\u0000\u0000\u0000"+
-            "\uFBBD\uFBBE\u0000\uFBC0\u0000\uFBC2\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBC8\u0000\u0000\uFBCB\u0000"+
-            "\u0000\uFBCE\uFBCF\uFBD0\u0000\u0000\u0000\u0000"+
-            "\uFBD5\u0000\u0000\u0000\uFBD9\uFBDA\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFBE1\uFBE2\u0000\u0000"+
-            "\u0000\uFBE6\u0000\u0000\u0000\u0000\uFBEB\uFBEC"+
-            "\uFBED\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFBF5\uFBF6\u0000\u0000\u0000\u0000\uFBFB\u0000"+
-            "\u0000\uFBFE\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC47\uFC48\u0000\u0000\uFC4B\u0000\uFC4D"+
-            "\uFC4E\u0000\uFC50\u0000\u0000\uFC53\u0000\u0000"+
-            "\uFC56\u0000\u0000\u0000\uFC5A\uFC5B\uFC5C\uFC5D"+
-            "\u0000\uFC5F\uFC60\u0000\u0000\uFC63\u0000\u0000"+
-            "\u0000\u0000\uFC68\u0000\u0000\u0000\u0000\u0000"+
-            "\uFC6E\uFC6F\uFC70\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC77\uFC78\u0000\u0000\uFC7B\u0000\u0000"+
-            "\uFC7E\uFCA1\u0000\uFCA3\uFCA4\u0000\u0000\uFCA7"+
-            "\uFCA8\u0000\u0000\u0000\u0000\uFCAD\u0000\uFCAF"+
-            "\u0000\uFCB1\u0000\uFCB3\u0000\u0000\u0000\uFCB7"+
-            "\uFCB8\u0000\u0000\uFCBB\u0000\uFCBD\uFCBE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCC7"+
-            "\uFCC8\u0000\u0000\u0000\uFCCC\u0000\uFCCE\u0000"+
-            "\u0000\u0000\uFCD2\u0000\u0000\u0000\uFCD6\u0000"+
-            "\uFCD8\uFCD9\u0000\uFCDB\uFCDC\u0000\uFCDE\u0000"+
-            "\uFCE0\u0000\u0000\uFCE3\uFCE4\uFCE5\uFCE6\uFCE7"+
-            "\u0000\uFCE9\u0000\u0000\uFCEC\uFCED\u0000\u0000"+
-            "\uFCF0\u0000\u0000\u0000\uFCF4\uFCF5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCFC\uFCFD\u0000\uFD40"+
-            "\u0000\u0000\uFD43\u0000\u0000\uFD46\u0000\u0000"+
-            "\u0000\u0000\uFD4B\u0000\u0000\u0000\uFD4F\u0000"+
-            "\u0000\u0000\u0000\uFD54\u0000\u0000\u0000\uFD58"+
-            "\uFD59\u0000\uFD5B\u0000\u0000\u0000\u0000\uFD60"+
-            "\u0000\u0000\uFD63\u0000\u0000\u0000\uFD67\u0000"+
-            "\uFD69\uFD6A\uFD6B\u0000\u0000\uFD6E\u0000\uFD70"+
-            "\u0000\u0000\uFD73\uFD74\uFD75\u0000\u0000\u0000"+
-            "\uFD79\u0000\uFD7B\uFD7C\uFD7D\uFD7E\uFDA1\u0000"+
-            "\u0000\uFDA4\u0000\uFDA6\uFDA7\u0000\u0000\uFDAA"+
-            "\uFDAB\uFDAC\u0000\u0000\u0000\u0000\uFDB1\uFDB2"+
-            "\uFDB3\u0000\uFDB5\u0000\u0000\u0000\u0000\uFDBA"+
-            "\u0000\uFDBC\u0000\uFDBE\u0000\u0000\u0000\uFDC2"+
-            "\u0000\u0000\u0000\uFDC6\u0000\uFDC8\uFDC9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFDD0\u0000\u0000"+
-            "\uFDD3\u0000\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA"+
-            "\u0000\uFDDC\uFDDD\uFDDE\uFDDF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFDEC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFDF3\u0000\u0000\uFDF6\u0000\uFDF8\uFDF9\uFDFA"+
-            "\u0000\uFDFC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE46\u0000\u0000\uFE49\u0000\u0000"+
-            "\u0000\u0000\uFE4E\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE54\uFE55\u0000\uFE57\u0000\u0000\u0000\u0000"+
-            "\uFE5C\uFE5D\u0000\u0000\uFE60\uFE61\uFE62\u0000"+
-            "\u0000\uFE65\uFE66\uFE67\u0000\u0000\u0000\uFE6B"+
-            "\u0000\uFE6D\u0000\u0000\uFE70\u0000\uFE72\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE7E\uFEA1\uFEA2\uFEA3\u0000\uFEA5"+
-            "\uFEA6\u0000\uFEA8\u0000\u0000\u0000\uFEAC\uFEAD"+
-            "\u0000\uFEAF\u0000\u0000\u0000\u0000\u0000\uFEB5"+
-            "\u0000\uFEB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEC2\u0000\u0000\u0000"+
-            "\uFEC6\uFEC7\u0000\u0000\u0000\u0000\uFECC\u0000"+
-            "\uFECE\uFECF\uFED0\u0000\u0000\u0000\u0000\uFED5"+
-            "\u0000\uFED7\u0000\uFED9\uFEDA\uFEDB\u0000\u0000"+
-            "\uFEDE\uFEDF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEE6\u0000\u0000\u0000\uFEEA\u0000\u0000\uFEED"+
-            "\uFEEE\uFEEF\u0000\u0000\u0000\u0000\uFEF4\u0000"+
-            "\uFEF6\u0000\u0000\u0000\uFEFA\u0000\u0000\uFEFD"+
-            "\u0000\u8E40\u0000\u8E42\u0000\u8E44\u0000\u0000"+
-            "\u8E47\u0000\u0000\u8E4A\u8E4B\u0000\u0000\u8E4E"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E54\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8E5B\u0000\u0000\u0000"+
-            "\u8E5F\u8E60\u0000\u0000\u0000\u8E64\u8E65\u0000"+
-            "\u0000\u0000\u0000\u8E6A\u0000\u8E6C\u0000\u0000"+
-            "\u0000\u0000\u8E71\u0000\u0000\u8E74\u0000\u0000"+
-            "\u8E77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8EA3\u0000\u8EA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAC\u8EAD\u0000\u0000\u0000"+
-            "\u8EB1\u0000\u8EB3\u0000\u8EB5\u8EB6\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EC0"+
-            "\u0000\u0000\u8EC3\u0000\u8EC5\u8EC6\u0000\u8EC8"+
-            "\u0000\u8ECA\u0000\u8ECC\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED2\u8ED3\u0000\u0000\u0000\u8ED7\u0000"+
-            "\u8ED9\u8EDA\u8EDB\u0000\u0000\u8EDE\u0000\u0000"+
-            "\u0000\u8EE2\u0000\u8EE4\u8EE5\u0000\u8EE7\u0000"+
-            "\u8EE9\u0000\u8EEB\u8EEC\u0000\u0000\u8EEF\u8EF0"+
-            "\u8EF1\u0000\u8EF3\u0000\u0000\u8EF6\u8EF7\u8EF8"+
-            "\u8EF9\u8EFA\u0000\u0000\u8EFD\u0000\u0000\u0000"+
-            "\u0000\u8F43\u8F44\u0000\u8F46\u8F47\u0000\u0000"+
-            "\u0000\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u0000\u0000"+
-            "\u0000\u0000\u0000\u8F55\u0000\u0000\u0000\u0000"+
-            "\u8F5A\u0000\u0000\u0000\u8F5E\u8F5F\u0000\u8F61"+
-            "\u0000\u0000\u0000\u0000\u0000\u8F67\u0000\u0000"+
-            "\u8F6A\u8F6B\u8F6C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8F73\u0000\u8F75\u0000\u0000\u0000\u8F79"+
-            "\u0000\u0000\u0000\u0000\u0000\u8FA1\u8FA2\u0000"+
-            "\u8FA4\u0000\u8FA6\u8FA7\u8FA8\u0000\u0000\u0000"+
-            "\u8FAC\u0000\u8FAE\u0000\u0000\u8FB1\u0000\u8FB3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8FBD\u8FBE\u8FBF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FCF\u0000\u8FD1\u8FD2\u0000"+
-            "\u0000\u0000\u0000\u8FD7\u0000\u8FD9\u8FDA\u0000"+
-            "\u8FDC\u0000\u0000\u0000\u8FE0\u8FE1\u0000\u0000"+
-            "\u0000\u0000\u8FE6\u0000\u0000\u0000\u8FEA\u0000"+
-            "\u0000\u0000\u8FEE\u8FEF\u8FF0\u0000\u8FF2\u0000"+
-            "\u8FF4\u8FF5\u0000\u0000\u8FF8\u0000\u0000\u0000"+
-            "\u8FFC\u0000\u0000\u0000\u9041\u9042\u9043\u0000"+
-            "\u9045\u9046\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u904E\u904F\u0000\u0000\u9052\u9053\u0000"+
-            "\u0000\u9056\u9057\u9058\u0000\u905A\u0000\u905C"+
-            "\u905D\u905E\u905F\u0000\u9061\u0000\u9063\u9064"+
-            "\u0000\u9066\u9067\u0000\u9069\u0000\u906B\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9073\u9074"+
-            "\u0000\u0000\u0000\u0000\u9079\u0000\u907B\u907C"+
-            "\u907D\u907E\u90A1\u0000\u0000\u90A4\u90A5\u0000"+
-            "\u0000\u90A8\u90A9\u0000\u0000\u90AC\u90AD\u90AE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90B8\u90B9\u90BA\u90BB\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90C2\u0000\u0000\u0000\u90C6"+
-            "\u0000\u0000\u0000\u90CA\u90CB\u90CC\u90CD\u90CE"+
-            "\u90CF\u90D0\u90D1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90D8\u0000\u0000\u0000\u0000\u90DD\u0000"+
-            "\u0000\u90E0\u0000\u0000\u0000\u90E4\u90E5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90ED\u0000"+
-            "\u0000\u90F0\u0000\u0000\u90F3\u90F4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u90FB\u0000\u90FD\u90FE"+
-            "\u9140\u0000\u0000\u0000\u0000\u0000\u9146\u9147"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u914E\u0000"+
-            "\u9150\u9151\u0000\u0000\u0000\u0000\u0000\u9157"+
-            "\u0000\u9159\u915A\u0000\u0000\u915D\u0000\u0000"+
-            "\u0000\u0000\u9162\u0000\u0000\u9165\u0000\u9167"+
-            "\u0000\u0000\u916A\u0000\u916C\u0000\u916E\u0000"+
-            "\u0000\u0000\u9172\u0000\u9174\u9175\u9176\u9177"+
-            "\u9178\u9179\u0000\u0000\u917C\u0000\u0000\u0000"+
-            "\u91A2\u91A3\u91A4\u91A5\u91A6\u0000\u91A8\u91A9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91B1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u91B8\u0000"+
-            "\u0000\u0000\u0000\u91BD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u91C5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u91CE\u91CF\u0000\u91D1"+
-            "\u91D2\u91D3\u0000\u91D5\u91D6\u0000\u91D8\u91D9"+
-            "\u0000\u0000\u91DC\u0000\u0000\u0000\u91E0\u91E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u91E7\u91E8\u0000"+
-            "\u91EA\u0000\u91EC\u91ED\u0000\u91EF\u91F0\u91F1"+
-            "\u0000\u91F3\u91F4\u0000\u91F6\u91F7\u91F8\u0000"+
-            "\u91FA\u0000\u91FC\u91FD\u91FE\u9240\u9241\u0000"+
-            "\u9243\u0000\u0000\u9246\u9247\u9248\u9249\u924A"+
-            "\u924B\u0000\u924D\u924E\u924F\u0000\u0000\u0000"+
-            "\u0000\u0000\u9255\u0000\u0000\u9258\u9259\u925A"+
-            "\u925B\u925C\u0000\u0000\u925F\u0000\u9261\u9262"+
-            "\u9263\u0000\u9265\u0000\u0000\u0000\u0000\u926A"+
-            "\u0000\u926C\u926D\u0000\u0000\u9270\u0000\u9272"+
-            "\u9273\u0000\u9275\u9276\u0000\u0000\u9279\u927A"+
-            "\u927B\u0000\u927D\u0000\u0000\u0000\u0000\u0000"+
-            "\u92A5\u92A6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92B4"+
-            "\u92B5\u92B6\u0000\u92B8\u92B9\u0000\u0000\u92BC"+
-            "\u0000\u92BE\u92BF\u92C0\u0000\u92C2\u92C3\u0000"+
-            "\u0000\u92C6\u0000\u0000\u0000\u0000\u92CB\u92CC"+
-            "\u92CD\u92CE\u0000\u92D0\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u92D8\u92D9\u0000\u0000\u0000";
-        */
-        private final static String innerIndex7=
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BFB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A57\u0000\u0000\u0000\u0000"+
-            "\uA0AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FA6\u0000\u0000\u0000\u99CC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9C59\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99B5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90BE\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FAF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95F2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90BF\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90C1\u0000\uFEE4\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90C4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u90C7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92E4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F52\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u90DB\u0000\u0000\u0000\u0000"+
-            "\u0000\uA066\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90D2\u0000\u0000\u0000\u0000\u90D4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9A5B\u95FD\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8BC4\u0000\u0000\u0000\u8C66\u0000\u90DE"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CE4\u0000\u90E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9E46\u0000\u0000"+
-            "\u0000\u9651\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB58"+
-            "\u0000\u90E6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9650\u0000\u0000\u0000\u90E7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u90E8\u9A5D\u0000\u9F7A\u0000\u0000\u0000"+
-            "\u9B5C\u0000\u9F7C\u0000\u0000\uFC52\u90E9\u0000"+
-            "\u90EA\u0000\u9A5E\u0000\u0000\u0000\u0000\u0000"+
-            "\u9F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u90EB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90EC\u0000\u0000\u0000\u0000\u0000\u8BEE\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90EE\u0000"+
-            "\u0000\u0000\u91C6\u0000\u0000\u90F2\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCBC\u8A74\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9657"+
-            "\u0000\u0000\u0000\u9CEF\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FDF\u0000"+
-            "\u0000\u0000\u0000\u90F7\u90F6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B5E"+
-            "\u0000\u0000\u0000\u90F8\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90F9\u0000"+
-            "\u8CC9\u0000\u0000\u0000\uFA6A\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BEF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9FE0\u0000\u0000\u9142"+
-            "\u0000\u9A62\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9569\u0000\u0000\u0000\u9144"+
-            "\u9143\u0000\u9141\u0000\u0000\u0000\u8BF0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9660\u0000\u8BF1\u0000"+
-            "\u99F6\u9149\u0000\u0000\u0000\u0000\u914A\u0000"+
-            "\u0000\u0000\u0000\u0000\u914B\u0000\u0000\u0000"+
-            "\u0000\u9A64\u0000\u0000\u0000\u8ABF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A66\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A67\u0000\u0000\u9A69\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A6A"+
-            "\u9652\u914D\u0000\u9666\u0000\u0000\u0000\u0000"+
-            "\u9F7B\u0000\u9A6B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA06C\u0000\u0000\u9667\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A6C\u0000\u0000"+
-            "\u0000\u0000\u9A6D\u8BF2\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u966A\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFCEA\u0000\u0000\u0000"+
-            "\u0000\u0000\u966C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91C4\u0000\u0000\u0000\u9677\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99F4\u9A6F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FAB\u0000\u0000\u0000\u0000\u0000"+
-            "\u8CBE\u8EC1\u0000\u0000\u0000\u0000\u9555\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9152\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9153\u0000\u0000\u0000"+
-            "\u9155\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u955D"+
-            "\u0000\u9671\u0000\u0000\u0000\u0000\u9C6D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9673"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9154\u9A71\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9156\u0000\u0000\u0000\u966D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9557\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89C6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89C7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8A6A\u0000\u0000\u0000\u8B57\u0000"+
-            "\u0000\u0000\u9FE1\u0000\u0000\u9B5F\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA05D"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u915B\u0000\u915C\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u915E\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5C"+
-            "\u0000\u0000\u9F57\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F65\u0000\u0000\u0000\u0000\u0000\u9A72"+
-            "\u0000\u0000\u0000\u0000\u9160\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F5E\u0000\u0000\u9161\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9164\u0000\u0000\u0000"+
-            "\u0000\u9F41\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9169\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9168\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A74\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B2"+
-            "\u0000\u9A75\u0000\uFDA5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EE9\u0000\u8BBA\u916D\uA060"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FDE"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FC3\u0000\u96B5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA067\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A76\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95D5\u0000\u0000\u0000\u9ECA\u0000\u0000"+
-            "\u0000\u9A77\u0000\u0000\u9A78\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9170"+
-            "\u0000\u0000\u916F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FA3\u0000\u9171\u0000\u0000\u0000"+
-            "\u96B1\u0000\u0000\u0000\u0000\u9F63\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F67\u0000\u0000\u0000\u8BB9"+
-            "\u9A7A\u0000\u0000\u0000\u0000\u0000\u8B56\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9ADA"+
-            "\u0000\u0000\u0000\u0000\u0000\u96B0\u0000\u0000"+
-            "\u0000\u0000\u9A7E\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DDE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AD"+
-            "\u0000\u0000\u0000\u96AE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9EA1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9E50\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96AF\u8BF4\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9FA4\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u96BD\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96F4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u96B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAA1\u0000\u0000\u0000"+
-            "\u0000\u91A7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA05E\u0000\u0000\u0000"+
-            "\u0000\u9A7D\u0000\u0000\u0000\u0000\u8948\u0000"+
-            "\u9EB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9DDB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u95BF\u8A73\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9EFE\u0000\u917A\u0000"+
-            "\u0000\u0000\u0000\u917B\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9AA3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u96C2\u0000\u0000"+
-            "\u0000\u0000\u0000\u9F77\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AA4\u0000\u0000"+
-            "\u9AA5\u0000\u0000\u0000\u91A1\u0000\u0000\u0000"+
-            "\u0000\u89B8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9173\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AA6\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u89BD\u0000\u89B9\u0000\u917D\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96BB\u0000\u0000\u0000\u9FF2\u0000\u0000\u8BF5"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9AA9\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F54\u0000\u0000\u9FE3\u9EED\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u91AA\u0000\u0000\u0000\u0000\u91AB\uA070\u0000"+
-            "\u9F6D\u0000\u0000\u0000\u0000\u0000\u91AC\u0000"+
-            "\u0000\u0000\u91AD\u0000\u0000\u0000\uA0FD\u0000"+
-            "\u9FE2\u0000\u91AF\u9E41\u9AAA\u0000\u0000\u91B0"+
-            "\u0000\u9AAB\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9AAC\u0000\u9A4A"+
-            "\u0000\u91B2\u0000\u0000\u8BF6\u0000\u9AAD\u89B6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9AAF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9AB0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9AB1\u0000\u0000\u0000\u0000\u0000\u9AA1\u0000"+
-            "\u0000\u0000\u91B9\u0000\u0000\u0000\u0000\u0000"+
-            "\u91BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91BE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA041\u8BB7"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u91C0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9AB3\u91C3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA0FC\u0000\u0000\u9FEE\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9F69\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u91C8\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u91C9\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DE6"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u91CB\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89C8\u0000\u0000\uC074\u0000\u0000\u8DAA"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FDD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFA40\u0000\uFA42\uFA43\u0000\uFA45\u0000\u0000"+
-            "\uFA48\uFA49\uFA4A\u0000\uFA4C\u0000\uFA4E\u0000"+
-            "\u0000\u0000\uFA52\uFA53\uFA54\uFA55\uFA56\u0000"+
-            "\uFA58\u0000\uFA5A\uFA5B\uFA5C\uFA5D\uFA5E\u0000"+
-            "\uFA60\u0000\uFA62\uFA63\u0000\uFA65\u0000\u0000"+
-            "\uFA68\u0000\u0000\uFA6B\u0000\uFA6D\uFA6E\u0000"+
-            "\uFA70\u0000\uFA72\uFA73\uFA74\uFA75\uFA76\uFA77"+
-            "\uFA78\u0000\u0000\uFA7B\uFA7C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAA5\u0000\uFAA7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFAAE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFABC\u0000\uFABE\u0000\u0000\uFAC1"+
-            "\uFAC2\uFAC3\u0000\u0000\uFAC6\u0000\uFAC8\u0000"+
-            "\u0000\u0000\uFACC\uFACD\uFACE\u0000\uFAD0\u0000"+
-            "\u0000\uFAD3\u0000\u0000\uFAD6\uFAD7\u0000\u0000"+
-            "\uFADA\u0000\u0000\u0000\u0000\uFADF\uFAE0\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE8\uFAE9"+
-            "\u0000\uFAEB\uFAEC\u0000\uFAEE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uFAF5\uFAF6\u0000\u0000\u0000"+
-            "\uFAFA\uFAFB\uFAFC\uFAFD\uFAFE\uFB40\uFB41\u0000"+
-            "\uFB43\u0000\u0000\u0000\u0000\u0000\uFB49\uFB4A"+
-            "\uFB4B\uFB4C\u0000\uFB4E\u0000\u0000\uFB51\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFB5D\uFB5E\uFB5F\u0000\uFB61\u0000"+
-            "\u0000\u0000\uFB65\uFB66\u0000\uFB68\u0000\uFB6A"+
-            "\uFB6B\u0000\uFB6D\u0000\u0000\uFB70\u0000\u0000"+
-            "\uFB73\u0000\u0000\u0000\uFB77\uFB78\u0000\uFB7A"+
-            "\u0000\u0000\uFB7D\u0000\uFBA1\u0000\u0000\uFBA4"+
-            "\u0000\u0000\uFBA7\uFBA8\uFBA9\uFBAA\u0000\uFBAC"+
-            "\uFBAD\uFBAE\u0000\uFBB0\uFBB1\u0000\uFBB3\u0000"+
-            "\u0000\uFBB6\uFBB7\u0000\uFBB9\u0000\u0000\u0000"+
-            "\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2\u0000\u0000"+
-            "\u0000\u0000\u0000\uFBC8\uFBC9\uFBCA\uFBCB\u0000"+
-            "\u0000\uFBCE\uFBCF\uFBD0\u0000\u0000\uFBD3\u0000"+
-            "\uFBD5\u0000\u0000\u0000\uFBD9\uFBDA\u0000\uFBDC"+
-            "\u0000\u0000\u0000\u0000\uFBE1\uFBE2\u0000\u0000"+
-            "\u0000\uFBE6\u0000\u0000\u0000\uFBEA\uFBEB\uFBEC"+
-            "\uFBED\u0000\uFBEF\uFBF0\u0000\u0000\u0000\u0000"+
-            "\uFBF5\uFBF6\u0000\u0000\u0000\u0000\uFBFB\u0000"+
-            "\u0000\uFBFE\u0000\u0000\uFC42\u0000\u0000\u0000"+
-            "\u0000\uFC47\uFC48\uFC49\uFC4A\uFC4B\u0000\uFC4D"+
-            "\uFC4E\u0000\uFC50\u0000\u0000\uFC53\u0000\u0000"+
-            "\uFC56\u0000\u0000\uFC59\uFC5A\uFC5B\uFC5C\uFC5D"+
-            "\u0000\uFC5F\uFC60\u0000\u0000\uFC63\uFC64\uFC65"+
-            "\uFC66\u0000\uFC68\u0000\uFC6A\u0000\u0000\u0000"+
-            "\uFC6E\uFC6F\uFC70\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uFC77\uFC78\u0000\u0000\uFC7B\u0000\u0000"+
-            "\uFC7E\uFCA1\u0000\uFCA3\uFCA4\u0000\uFCA6\uFCA7"+
-            "\uFCA8\u0000\u0000\u0000\u0000\uFCAD\u0000\uFCAF"+
-            "\u0000\uFCB1\u0000\uFCB3\uFCB4\u0000\u0000\uFCB7"+
-            "\uFCB8\u0000\u0000\uFCBB\u0000\uFCBD\uFCBE\u0000"+
-            "\u0000\u0000\uFCC2\u0000\uFCC4\u0000\u0000\uFCC7"+
-            "\uFCC8\u0000\u0000\u0000\uFCCC\u0000\uFCCE\uFCCF"+
-            "\u0000\uFCD1\uFCD2\u0000\u0000\u0000\uFCD6\u0000"+
-            "\uFCD8\uFCD9\u0000\uFCDB\uFCDC\u0000\uFCDE\u0000"+
-            "\uFCE0\u0000\u0000\uFCE3\uFCE4\uFCE5\uFCE6\uFCE7"+
-            "\u0000\uFCE9\u0000\u0000\uFCEC\uFCED\uFCEE\u0000"+
-            "\uFCF0\u0000\u0000\u0000\uFCF4\uFCF5\u0000\uFCF7"+
-            "\u0000\u0000\u0000\u0000\uFCFC\uFCFD\u0000\uFD40"+
-            "\u0000\u0000\uFD43\u0000\u0000\uFD46\u0000\u0000"+
-            "\uFD49\uFD4A\uFD4B\uFD4C\u0000\u0000\uFD4F\uFD50"+
-            "\u0000\u0000\uFD53\uFD54\u0000\u0000\u0000\uFD58"+
-            "\uFD59\u0000\uFD5B\u0000\uFD5D\u0000\u0000\uFD60"+
-            "\uFD61\u0000\uFD63\u0000\u0000\u0000\uFD67\u0000"+
-            "\uFD69\uFD6A\uFD6B\uFD6C\u0000\uFD6E\u0000\uFD70"+
-            "\u0000\u0000\uFD73\uFD74\uFD75\u0000\u0000\u0000"+
-            "\uFD79\uFD7A\uFD7B\uFD7C\uFD7D\uFD7E\uFDA1\uFDA2"+
-            "\uFDA3\uFDA4\u0000\uFDA6\uFDA7\u0000\u0000\uFDAA"+
-            "\uFDAB\uFDAC\u0000\u0000\u0000\u0000\uFDB1\uFDB2"+
-            "\uFDB3\u0000\uFDB5\u0000\u0000\u0000\u0000\uFDBA"+
-            "\u0000\uFDBC\u0000\uFDBE\u0000\u0000\u0000\uFDC2"+
-            "\u0000\uFDC4\u0000\uFDC6\u0000\uFDC8\uFDC9\uFDCA"+
-            "\u0000\u0000\u0000\uFDCE\u0000\uFDD0\uFDD1\u0000"+
-            "\uFDD3\u0000\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA"+
-            "\u0000\uFDDC\uFDDD\uFDDE\uFDDF\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uFDE8\uFDE9\u0000"+
-            "\u0000\uFDEC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFDF3\u0000\u0000\uFDF6\u0000\uFDF8\uFDF9\uFDFA"+
-            "\u0000\uFDFC\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uFE46\u0000\u0000\uFE49\u0000\u0000"+
-            "\u0000\uFE4D\uFE4E\u0000\u0000\u0000\u0000\u0000"+
-            "\uFE54\uFE55\uFE56\uFE57\u0000\u0000\u0000\u0000"+
-            "\uFE5C\uFE5D\u0000\u0000\uFE60\uFE61\uFE62\u0000"+
-            "\uFE64\uFE65\uFE66\uFE67\u0000\u0000\u0000\uFE6B"+
-            "\u0000\uFE6D\uFE6E\u0000\uFE70\u0000\uFE72\u0000"+
-            "\u0000\u0000\u0000\u0000\uFE78\u0000\u0000\u0000"+
-            "\u0000\uFE7D\uFE7E\uFEA1\uFEA2\uFEA3\u0000\uFEA5"+
-            "\uFEA6\u0000\uFEA8\u0000\u0000\u0000\uFEAC\uFEAD"+
-            "\u0000\uFEAF\u0000\u0000\u0000\u0000\u0000\uFEB5"+
-            "\uFEB6\uFEB7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uFEC2\u0000\u0000\uFEC5"+
-            "\uFEC6\uFEC7\u0000\u0000\u0000\u0000\uFECC\u0000"+
-            "\uFECE\uFECF\uFED0\u0000\u0000\u0000\u0000\uFED5"+
-            "\u0000\uFED7\u0000\uFED9\uFEDA\uFEDB\u0000\u0000"+
-            "\uFEDE\uFEDF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uFEE6\u0000\u0000\u0000\uFEEA\u0000\u0000\uFEED"+
-            "\uFEEE\uFEEF\u0000\u0000\u0000\u0000\uFEF4\u0000"+
-            "\uFEF6\u0000\u0000\u0000\uFEFA\uFEFB\u0000\uFEFD"+
-            "\u0000\u8E40\u0000\u8E42\u0000\u8E44\u8E45\u0000"+
-            "\u8E47\u0000\u0000\u8E4A\u8E4B\u0000\u0000\u8E4E"+
-            "\u0000\u0000\u0000\u0000\u0000\u8E54\u8E55\u0000"+
-            "\u0000\u0000\u8E59\u0000\u8E5B\u0000\u0000\u0000"+
-            "\u8E5F\u8E60\u0000\u0000\u0000\u8E64\u8E65\u0000"+
-            "\u0000\u0000\u0000\u8E6A\u8E6B\u8E6C\u0000\u0000"+
-            "\u0000\u0000\u8E71\u0000\u0000\u8E74\u0000\u0000"+
-            "\u8E77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8EA2\u8EA3\u0000\u8EA5\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8EAC\u8EAD\u0000\u8EAF\u0000"+
-            "\u8EB1\u0000\u8EB3\u0000\u8EB5\u8EB6\u0000\u0000"+
-            "\u8EB9\u0000\u0000\u0000\u0000\u0000\u0000\u8EC0"+
-            "\u0000\u0000\u8EC3\u0000\u8EC5\u8EC6\u8EC7\u8EC8"+
-            "\u8EC9\u8ECA\u0000\u8ECC\u0000\u0000\u0000\u0000"+
-            "\u0000\u8ED2\u8ED3\u0000\u0000\u0000\u8ED7\u8ED8"+
-            "\u8ED9\u8EDA\u8EDB\u0000\u0000\u8EDE\u0000\u0000"+
-            "\u0000\u8EE2\u0000\u8EE4\u8EE5\u0000\u8EE7\u0000"+
-            "\u8EE9\u0000\u8EEB\u8EEC\u8EED\u0000\u8EEF\u8EF0"+
-            "\u8EF1\u0000\u8EF3\u0000\u0000\u8EF6\u8EF7\u8EF8"+
-            "\u8EF9\u8EFA\u0000\u0000\u8EFD\u8EFE\u0000\u0000"+
-            "\u0000\u8F43\u8F44\u8F45\u8F46\u8F47\u0000\u0000"+
-            "\u0000\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50\u0000"+
-            "\u0000\u0000\u8F54\u8F55\u0000\u0000\u0000\u8F59"+
-            "\u8F5A\u0000\u0000\u8F5D\u8F5E\u8F5F\u0000\u8F61"+
-            "\u0000\u8F63\u8F64\u0000\u0000\u8F67\u0000\u0000"+
-            "\u8F6A\u8F6B\u8F6C\u0000\u0000\u0000\u8F70\u0000"+
-            "\u0000\u8F73\u8F74\u8F75\u8F76\u0000\u0000\u8F79"+
-            "\u8F7A\u0000\u8F7C\u0000\u0000\u8FA1\u8FA2\u0000"+
-            "\u8FA4\u0000\u8FA6\u8FA7\u8FA8\u8FA9\u0000\u8FAB"+
-            "\u8FAC\u0000\u8FAE\u0000\u0000\u8FB1\u0000\u8FB3"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA\u0000"+
-            "\u0000\u8FBD\u8FBE\u8FBF\u0000\u0000\u8FC2\u0000"+
-            "\u0000\u0000\u0000\u0000\u8FC8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8FCF\u0000\u8FD1\u8FD2\u0000"+
-            "\u0000\u0000\u0000\u8FD7\u0000\u8FD9\u8FDA\u8FDB"+
-            "\u8FDC\u0000\u0000\u0000\u8FE0\u8FE1\u0000\u0000"+
-            "\u0000\u0000\u8FE6\u0000\u0000\u0000\u8FEA\u8FEB"+
-            "\u0000\u0000\u8FEE\u8FEF\u8FF0\u8FF1\u8FF2\u0000"+
-            "\u8FF4\u8FF5\u0000\u0000\u8FF8\u0000\u0000\u0000"+
-            "\u8FFC\u8FFD\u0000\u0000\u9041\u9042\u9043\u9044"+
-            "\u9045\u9046\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u904E\u904F\u0000\u0000\u9052\u9053\u0000"+
-            "\u9055\u9056\u9057\u9058\u0000\u905A\u0000\u905C"+
-            "\u905D\u905E\u905F\u9060\u9061\u0000\u9063\u9064"+
-            "\u0000\u9066\u9067\u0000\u9069\u0000\u906B\u0000"+
-            "\u0000\u0000\u906F\u0000\u0000\u0000\u9073\u9074"+
-            "\u0000\u0000\u0000\u0000\u9079\u0000\u907B\u907C"+
-            "\u907D\u907E\u90A1\u0000\u0000\u90A4\u90A5\u0000"+
-            "\u0000\u90A8\u90A9\u90AA\u0000\u90AC\u90AD\u90AE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u90B7\u90B8\u90B9\u90BA\u90BB\u90BC\u0000\u0000"+
-            "\u0000\u90C0\u0000\u90C2\u0000\u0000\u0000\u90C6"+
-            "\u0000\u0000\u90C9\u90CA\u90CB\u90CC\u90CD\u90CE"+
-            "\u90CF\u90D0\u90D1\u0000\u0000\u0000\u90D5\u90D6"+
-            "\u90D7\u90D8\u0000\u0000\u0000\u0000\u90DD\u0000"+
-            "\u0000\u90E0\u0000\u0000\u0000\u90E4\u90E5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u90ED\u0000"+
-            "\u0000\u90F0\u0000\u0000\u90F3\u90F4\u90F5\u0000"+
-            "\u0000\u0000\u0000\u90FA\u90FB\u90FC\u90FD\u90FE"+
-            "\u9140\u0000\u0000\u0000\u0000\u9145\u9146\u9147"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u914E\u914F"+
-            "\u9150\u9151\u0000\u0000\u0000\u0000\u0000\u9157"+
-            "\u9158\u9159\u915A\u0000\u0000\u915D\u0000\u915F"+
-            "\u0000\u0000\u9162\u0000\u0000\u9165\u9166\u9167"+
-            "\u0000\u0000\u916A\u0000\u916C\u0000\u916E\u0000"+
-            "\u0000\u0000\u9172\u0000\u9174\u9175\u9176\u9177"+
-            "\u9178\u9179\u0000\u0000\u917C\u0000\u0000\u0000"+
-            "\u91A2\u91A3\u91A4\u91A5\u91A6\u0000\u91A8\u91A9"+
-            "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u91B1"+
-            "\u0000\u91B3\u91B4\u91B5\u0000\u91B7\u91B8\u0000"+
-            "\u0000\u91BB\u0000\u91BD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u91C5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u91CD\u91CE\u91CF\u0000\u91D1"+
-            "\u91D2\u91D3\u0000\u91D5\u91D6\u0000\u91D8\u91D9"+
-            "\u0000\u0000\u91DC\u0000\u0000\u0000\u91E0\u91E1"+
-            "\u0000\u91E3\u0000\u0000\u0000\u91E7\u91E8\u0000"+
-            "\u91EA\u0000\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1"+
-            "\u91F2\u91F3\u91F4\u91F5\u91F6\u91F7\u91F8\u91F9"+
-            "\u91FA\u0000\u91FC\u91FD\u91FE\u9240\u9241\u0000"+
-            "\u9243\u0000\u0000\u9246\u9247\u9248\u9249\u924A"+
-            "\u924B\u924C\u924D\u924E\u924F\u0000\u9251\u9252"+
-            "\u9253\u0000\u9255\u0000\u9257\u9258\u9259\u925A"+
-            "\u925B\u925C\u0000\u0000\u925F\u0000\u9261\u9262"+
-            "\u9263\u0000\u9265\u0000\u0000\u0000\u9269\u926A"+
-            "\u0000\u926C\u926D\u0000\u0000\u9270\u0000\u9272"+
-            "\u9273\u9274\u9275\u9276\u9277\u0000\u9279\u927A"+
-            "\u927B\u0000\u927D\u0000\u0000\u0000\u0000\u0000"+
-            "\u92A5\u92A6\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92B4"+
-            "\u92B5\u92B6\u0000\u92B8\u92B9\u0000\u0000\u92BC"+
-            "\u92BD\u92BE\u92BF\u92C0\u0000\u92C2\u92C3\u0000"+
-            "\u0000\u92C6\u0000\u0000\u92C9\u0000\u92CB\u92CC"+
-            "\u92CD\u92CE\u0000\u92D0\u0000\u92D2\u0000\u0000"+
-            "\u0000\u0000\u92D7\u92D8\u92D9\u0000\u92DB\u0000";
-
-        /*
-        private final static String innerIndex8=
-            "\u92DD\u0000\u92DF\u0000\u92E1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92EC"+
-            "\u92ED\u92EE\u92EF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92F6\u92F7\u92F8\u92F9\u0000\u0000\u0000"+
-            "\u0000\u92FE\u0000\u9341\u9342\u0000\u0000\u9345"+
-            "\u0000\u0000\u0000\u9349\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u9350\u9351\u9352\u0000\u0000\u9355"+
-            "\u9356\u0000\u9358\u0000\u935A\u0000\u0000\u935D"+
-            "\u935E\u935F\u9360\u0000\u0000\u9363\u9364\u0000"+
-            "\u9366\u0000\u0000\u9369\u0000\u0000\u936C\u936D"+
-            "\u0000\u0000\u9370\u9371\u9372\u9373\u0000\u9375"+
-            "\u9376\u9377\u0000\u0000\u0000\u937B\u937C\u937D"+
-            "\u937E\u0000\u93A2\u93A3\u0000\u93A5\u93A6\u93A7"+
-            "\u93A8\u0000\u93AA\u0000\u0000\u0000\u93AE\u93AF"+
-            "\u0000\u93B1\u0000\u0000\u0000\u0000\u93B6\u93B7"+
-            "\u93B8\u93B9\u0000\u93BB\u93BC\u93BD\u0000\u93BF"+
-            "\u93C0\u0000\u0000\u93C3\u93C4\u93C5\u93C6\u93C7"+
-            "\u93C8\u0000\u93CA\u93CB\u93CC\u0000\u93CE\u93CF"+
-            "\u93D0\u0000\u93D2\u0000\u0000\u0000\u93D6\u93D7"+
-            "\u0000\u93D9\u93DA\u0000\u93DC\u0000\u93DE\u93DF"+
-            "\u0000\u93E1\u93E2\u0000\u0000\u0000\u93E6\u0000"+
-            "\u0000\u0000\u0000\u0000\u93EC\u93ED\u0000\u0000"+
-            "\u0000\u0000\u93F2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u93F9\u93FA\u0000\u0000\u93FD\u93FE\u0000"+
-            "\u9441\u9442\u0000\u0000\u0000\u9446\u0000\u9448"+
-            "\u0000\u0000\u944B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9452\u9453\u0000\u0000\u0000\u0000\u9458"+
-            "\u9459\u0000\u945B\u945C\u0000\u945E\u945F\u9460"+
-            "\u9461\u9462\u0000\u0000\u9465\u9466\u9467\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u946F\u0000"+
-            "\u0000\u0000\u9473\u9474\u0000\u0000\u0000\u9478"+
-            "\u0000\u0000\u947B\u947C\u947D\u0000\u0000\u94A2"+
-            "\u0000\u94A4\u94A5\u0000\u0000\u0000\u94A9\u94AA"+
-            "\u0000\u94AC\u94AD\u0000\u94AF\u0000\u0000\u0000"+
-            "\u94B3\u94B4\u0000\u94B6\u0000\u0000\u0000\u94BA"+
-            "\u94BB\u0000\u94BD\u94BE\u0000\u94C0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u94C7\u94C8\u0000\u0000"+
-            "\u0000\u0000\u0000\u94CE\u0000\u0000\u0000\u94D2"+
-            "\u0000\u0000\u0000\u94D6\u94D7\u94D8\u94D9\u94DA"+
-            "\u0000\u0000\u0000\u0000\u94DF\u94E0\u0000\u0000"+
-            "\u94E3\u94E4\u94E5\u0000\u94E7\u0000\u0000\u94EA"+
-            "\u0000\u0000\u0000\u0000\u0000\u94F0\u94F1\u94F2"+
-            "\u0000\u94F4\u94F5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u94FE\u9540\u9541\u0000\u9543"+
-            "\u0000\u9545\u9546\u0000\u9548\u9549\u0000\u954B"+
-            "\u954C\u954D\u0000\u0000\u9550\u9551\u9552\u0000"+
-            "\u9554\u0000\u0000\u0000\u0000\u9559\u0000\u955B"+
-            "\u955C\u0000\u955E\u0000\u9560\u9561\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9568\u0000\u956A\u0000"+
-            "\u0000\u956D\u0000\u956F\u0000\u9571\u0000\u0000"+
-            "\u9574\u0000\u9576\u0000\u9578\u0000\u957A\u957B"+
-            "\u0000\u957D\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95A8\u0000\u95AA\u95AB\u95AC\u95AD"+
-            "\u95AE\u95AF\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u95B7\u0000\u0000\u95BA\u0000\u0000\u0000"+
-            "\u95BE\u0000\u0000\u0000\u95C2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95CA\u0000\u0000\u0000"+
-            "\u0000\u0000\u95D0\u0000\u0000\u0000\u95D4\u0000"+
-            "\u0000\u95D7\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u95DE\u0000\u95E0\u0000\u95E2\u95E3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95EA\u0000\u0000\u95ED"+
-            "\u95EE\u95EF\u0000\u95F1\u0000\u95F3\u95F4\u95F5"+
-            "\u0000\u95F7\u95F8\u95F9\u0000\u0000\u0000\u0000"+
-            "\u95FE\u0000\u0000\u9642\u9643\u0000\u0000\u9646"+
-            "\u9647\u9648\u9649\u0000\u0000\u0000\u0000\u0000"+
-            "\u964F\u0000\u0000\u0000\u9653\u0000\u9655\u9656"+
-            "\u0000\u9658\u0000\u965A\u0000\u0000\u965D\u965E"+
-            "\u965F\u0000\u9661\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9668\u0000\u0000\u0000\u0000\u0000\u966E"+
-            "\u966F\u0000\u0000\u0000\u0000\u9674\u0000\u9676"+
-            "\u0000\u0000\u0000\u0000\u0000\u967C\u0000\u967E"+
-            "\u96A1\u0000\u96A3\u96A4\u0000\u0000\u0000\u0000"+
-            "\u0000\u96AA\u96AB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96B4\u0000\u96B6\u96B7\u0000"+
-            "\u0000\u96BA\u0000\u0000\u0000\u96BE\u96BF\u96C0"+
-            "\u96C1\u0000\u0000\u96C4\u96C5\u96C6\u0000\u0000"+
-            "\u96C9\u96CA\u96CB\u0000\u0000\u96CE\u96CF\u96D0"+
-            "\u0000\u96D2\u96D3\u0000\u96D5\u0000\u0000\u0000"+
-            "\u0000\u96DA\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u96E1\u0000\u0000\u0000\u0000\u96E6\u96E7\u96E8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F8"+
-            "\u0000\u96FA\u96FB\u0000\u96FD\u96FE\u0000\u0000"+
-            "\u0000\u0000\u9744\u0000\u0000\u9747\u0000\u0000"+
-            "\u974A\u974B\u0000\u974D\u974E\u974F\u9750\u9751"+
-            "\u0000\u9753\u9754\u0000\u9756\u9757\u9758\u9759"+
-            "\u975A\u0000\u0000\u0000\u0000\u975F\u9760\u0000"+
-            "\u9762\u0000\u0000\u0000\u0000\u9767\u9768\u9769"+
-            "\u976A\u976B\u976C\u976D\u0000\u976F\u0000\u9771"+
-            "\u0000\u0000\u0000\u9775\u0000\u9777\u9778\u0000"+
-            "\u977A\u977B\u0000\u977D\u0000\u97A1\u97A2\u0000"+
-            "\u97A4\u97A5\u97A6\u0000\u0000\u97A9\u0000\u97AB"+
-            "\u97AC\u97AD\u0000\u0000\u0000\u97B1\u97B2\u0000"+
-            "\u97B4\u97B5\u97B6\u0000\u0000\u97B9\u0000\u0000"+
-            "\u0000\u97BD\u97BE\u0000\u0000\u97C1\u0000\u0000"+
-            "\u0000\u0000\u0000\u97C7\u0000\u0000\u97CA\u0000"+
-            "\u97CC\u0000\u0000\u97CF\u0000\u0000\u0000\u97D3"+
-            "\u97D4\u0000\u0000\u0000\u97D8\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97E3"+
-            "\u97E4\u0000\u0000\u0000\u97E8\u0000\u97EA\u97EB"+
-            "\u97EC\u97ED\u97EE\u0000\u0000\u97F1\u97F2\u97F3"+
-            "\u97F4\u97F5\u97F6\u97F7\u97F8\u0000\u97FA\u97FB"+
-            "\u0000\u0000\u0000\u9840\u9841\u9842\u9843\u0000"+
-            "\u9845\u0000\u9847\u0000\u9849\u984A\u984B\u0000"+
-            "\u0000\u984E\u0000\u0000\u9851\u9852\u0000\u0000"+
-            "\u9855\u0000\u0000\u0000\u0000\u985A\u0000\u0000"+
-            "\u985D\u0000\u985F\u9860\u9861\u9862\u0000\u9864"+
-            "\u9865\u0000\u9867\u0000\u9869\u986A\u986B\u0000"+
-            "\u986D\u986E\u0000\u0000\u9871\u0000\u0000\u9874"+
-            "\u9875\u0000\u0000\u0000\u0000\u0000\u987B\u987C"+
-            "\u0000\u0000\u0000\u98A2\u98A3\u98A4\u0000\u98A6"+
-            "\u98A7\u0000\u98A9\u98AA\u0000\u98AC\u0000\u0000"+
-            "\u0000\u98B0\u98B1\u0000\u0000\u0000\u0000\u98B6"+
-            "\u0000\u0000\u98B9\u0000\u0000\u0000\u98BD\u0000"+
-            "\u0000\u98C0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u98DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u98FA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u995F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99D5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9A7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AB4"+
-            "\u9AB5\u9AB6\u0000\u0000\u0000\u9ABA\u0000\u0000"+
-            "\u0000\u9ABE\u9ABF\u9AC0\u9AC1\u0000\u0000\u9AC4"+
-            "\u9AC5\u9AC6\u0000\u9AC8\u9AC9\u0000\u9ACB\u9ACC"+
-            "\u9ACD\u9ACE\u9ACF\u0000\u9AD1\u0000\u9AD3\u9AD4"+
-            "\u9AD5\u9AD6\u9AD7\u9AD8\u0000\u0000\u0000\u9ADC"+
-            "\u9ADD\u9ADE\u9ADF\u9AE0\u9AE1\u0000\u9AE3\u0000"+
-            "\u9AE5\u9AE6\u9AE7\u0000\u9AE9\u9AEA\u9AEB\u0000"+
-            "\u9AED\u9AEE\u9AEF\u9AF0\u0000\u0000\u9AF3\u9AF4"+
-            "\u9AF5\u0000\u9AF7\u9AF8\u9AF9\u9AFA\u0000\u0000"+
-            "\u9AFD\u9AFE\u9B40\u9B41\u9B42\u9B43\u9B44\u9B45"+
-            "\u0000\u9B47\u9B48\u0000\u0000\u9B4B\u0000\u0000"+
-            "\u9B4E\u9B4F\u9B50\u9B51\u9B52\u9B53\u0000\u9B55"+
-            "\u9B56\u9B57\u0000\u9B59\u0000\u9B5B\u0000\u9B5D"+
-            "\u0000\u0000\u9B60\u0000\u9B62\u9B63\u9B64\u9B65"+
-            "\u9B66\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D"+
-            "\u9B6E\u9B6F\u0000\u0000\u0000\u9B73\u9B74\u9B75"+
-            "\u0000\u9B77\u0000\u9B79\u9B7A\u0000\u9B7C\u0000"+
-            "\u0000\u0000\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7"+
-            "\u9BA8\u0000\u0000\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF"+
-            "\u9BB0\u9BB1\u9BB2\u9BB3\u0000\u9BB5\u0000\u9BB7"+
-            "\u0000\u9BB9\u9BBA\u9BBB\u0000\u9BBD\u0000\u9BBF"+
-            "\u9BC0\u9BC1\u0000\u9BC3\u0000\u9BC5\u0000\u9BC7"+
-            "\u9BC8\u9BC9\u0000\u9BCB\u9BCC\u0000\u9BCE\u9BCF"+
-            "\u9BD0\u0000\u9BD2\u0000\u0000\u0000\u9BD6\u9BD7"+
-            "\u9BD8\u9BD9\u0000\u9BDB\u9BDC\u9BDD\u0000\u0000"+
-            "\u9BE0\u9BE1\u9BE2\u0000\u9BE4\u9BE5\u9BE6\u9BE7"+
-            "\u9BE8\u0000\u0000\u9BEB\u0000\u9BED\u0000\u9BEF"+
-            "\u9BF0\u9BF1\u9BF2\u9BF3\u0000\u0000\u0000\u9BF7"+
-            "\u9BF8\u0000\u9BFA\u9BFB\u0000\u9BFD\u9BFE\u0000"+
-            "\u9C41\u0000\u9C43\u9C44\u0000\u9C46\u9C47\u9C48"+
-            "\u9C49\u0000\u9C4B\u9C4C\u9C4D\u0000\u9C4F\u0000"+
-            "\u0000\u9C52\u0000\u0000\u9C55\u9C56\u0000\u9C58"+
-            "\u0000\u0000\u9C5B\u0000\u0000\u9C5E\u9C5F\u9C60"+
-            "\u9C61\u0000\u9C63\u0000\u9C65\u9C66\u9C67\u0000"+
-            "\u9C69\u0000\u0000\u9C6C\u0000\u9C6E\u0000\u9C70"+
-            "\u9C71\u0000\u9C73\u9C74\u0000\u9C76\u0000\u9C78"+
-            "\u0000\u9C7A\u0000\u0000\u9C7D\u0000\u0000\u9CA2"+
-            "\u9CA3\u9CA4\u0000\u9CA6\u9CA7\u0000\u9CA9\u9CAA"+
-            "\u0000\u9CAC\u9CAD\u0000\u0000\u9CB0\u9CB1\u0000"+
-            "\u0000\u9CB4\u9CB5\u9CB6\u0000\u9CB8\u9CB9\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9CC0\u9CC1\u0000"+
-            "\u9CC3\u9CC4\u0000\u0000\u9CC7\u0000\u9CC9\u9CCA"+
-            "\u9CCB\u0000\u0000\u9CCE\u9CCF\u0000\u0000\u9CD2"+
-            "\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u0000\u0000"+
-            "\u9CDB\u0000\u9CDD\u0000\u9CDF\u0000\u9CE1\u0000"+
-            "\u0000\u0000\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+
-            "\u0000\u9CEC\u9CED\u0000\u0000\u9CF0\u0000\u9CF2"+
-            "\u0000\u0000\u0000\u9CF6\u9CF7\u0000\u0000\u9CFA"+
-            "\u9CFB\u9CFC\u9CFD\u9CFE\u9D40\u9D41\u9D42\u9D43"+
-            "\u9D44\u9D45\u0000\u9D47\u9D48\u0000\u0000\u9D4B"+
-            "\u0000\u0000\u9D4E\u0000\u9D50\u0000\u9D52\u9D53"+
-            "\u9D54\u0000\u9D56\u0000\u9D58\u9D59\u0000\u9D5B"+
-            "\u9D5C\u0000\u9D5E\u9D5F\u0000\u0000\u0000\u9D63"+
-            "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+
-            "\u9D6C\u9D6D\u9D6E\u9D6F\u0000\u9D71\u9D72\u0000"+
-            "\u0000\u9D75\u0000\u9D77\u0000\u0000\u9D7A\u0000"+
-            "\u9D7C\u0000\u0000\u0000\u9DA2\u0000\u9DA4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9DAB\u9DAC\u0000"+
-            "\u0000\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4\u0000"+
-            "\u9DB6\u9DB7\u9DB8\u9DB9\u0000\u9DBB\u9DBC\u0000"+
-            "\u9DBE\u0000\u0000\u9DC1\u9DC2\u0000\u0000\u9DC5"+
-            "\u9DC6\u0000\u0000\u9DC9\u0000\u9DCB\u0000\u9DCD"+
-            "\u0000\u0000\u0000\u0000\u9DD2\u0000\u9DD4\u0000"+
-            "\u0000\u9DD7\u9DD8\u9DD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DED"+
-            "\u0000\u0000\u0000\u0000\u9DF2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DF9\u9DFA\u0000\u9DFC\u9DFD"+
-            "\u9DFE\u9E40\u0000\u0000\u0000\u9E44\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E4F\u0000\u9E51\u0000\u0000\u9E54\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E5B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E63\u0000\u0000\u9E66"+
-            "\u0000\u0000\u9E69\u0000\u9E6B\u9E6C\u9E6D\u9E6E"+
-            "\u9E6F\u9E70\u0000\u9E72\u0000\u9E74\u9E75\u9E76"+
-            "\u9E77\u0000\u9E79\u0000\u9E7B\u9E7C\u9E7D\u0000"+
-            "\u0000\u0000\u9EA3\u0000\u9EA5\u9EA6\u9EA7\u9EA8"+
-            "\u0000\u9EAA\u9EAB\u0000\u9EAD\u9EAE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EBC\u0000\u9EBE\u0000\u0000"+
-            "\u0000\u9EC2\u9EC3\u0000\u0000\u9EC6\u0000\u9EC8"+
-            "\u0000\u0000\u9ECB\u9ECC\u0000\u9ECE\u9ECF\u9ED0"+
-            "\u0000\u9ED2\u9ED3\u9ED4\u9ED5\u0000\u0000\u9ED8"+
-            "\u9ED9\u0000\u0000\u0000\u0000\u0000\u0000\u9EE0"+
-            "\u0000\u0000\u9EE3\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EEC\u0000\u0000\u0000\u0000"+
-            "\u0000\u9EF2\u9EF3\u0000\u0000\u9EF6\u0000\u9EF8"+
-            "\u9EF9\u0000\u9EFB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F43\u0000\u0000\u9F46\u9F47\u9F48\u0000"+
-            "\u9F4A\u9F4B\u9F4C\u9F4D\u0000\u0000\u9F50\u0000"+
-            "\u0000\u9F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F68\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9FAA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FB3"+
-            "\u0000\u9FB5\u0000\u0000\u0000\u0000\u0000\u9FBB"+
-            "\u0000\u0000\u9FBE\u9FBF\u0000\u9FC1\u0000\u0000"+
-            "\u0000\u9FC5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FD1\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FF5\u0000\u0000\u0000\u9FF9\u0000\u0000"+
-            "\u0000\u0000\u0000\uA040\u0000\u0000\u0000\u0000"+
-            "\uA045\u0000\uA047\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA04F\u0000\u0000\u0000\u0000\u0000"+
-            "\uA055\uA056\u0000\u0000\uA059\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uA06D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA07B\u0000"+
-            "\u0000\u0000\u0000\uA0A2\u0000\uA0A4\u0000\u0000"+
-            "\uA0A7\u0000\u0000\u0000\uA0AB\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0B1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0BD\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0C3\u0000\uA0C5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D8\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0E3\u0000\u0000\u0000"+
-            "\u0000\u0000\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE"+
-            "\uA0EF\uA0F0\uA0F1\u0000\uA0F3\uA0F4\uA0F5\uA0F6"+
-            "\uA0F7\uA0F8\u0000\u0000\uA0FB\u0000\u0000\uA0FE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8840\u8841\u8842\u8843\u8844"+
-            "\u8845\u8846\u8847\u8848\u8849\u884A\u884B\u884C"+
-            "\u884D\u884E\u884F\u8850\u8851\u8852\u8853\u8854"+
-            "\u8855\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8862\u0000\u8864"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u88A3\u0000\u88A5\u0000"+
-            "\u0000\u0000\u88A9\u88AA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8940\u8941\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u894C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u89BB\u89BC\u0000\u89BE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89CA\u89CB\u89CC\u89CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8A40\u0000\u0000"+
-            "\u8A43\u8A44\u8A45\u0000\u8A47\u0000\u8A49\u0000"+
-            "\u8A4B\u8A4C\u0000\u8A4E\u0000\u8A50\u0000\u0000"+
-            "\u8A53\u8A54\u8A55\u0000\u8A57\u8A58\u8A59\u8A5A"+
-            "\u0000\u0000\u8A5D\u8A5E\u8A5F\u8A60\u8A61\u8A62"+
-            "\u0000\u8A64\u8A65\u8A66\u0000\u8A68\u8A69\u0000"+
-            "\u0000\u8A6C\u0000\u0000\u8A6F\u8A70\u8A71\u8A72"+
-            "\u0000\u0000\u0000\u0000\u8A77\u0000\u0000\u8A7A"+
-            "\u8A7B\u8A7C\u0000\u8A7E\u8AA1\u8AA2\u8AA3\u0000"+
-            "\u8AA5\u8AA6\u0000\u8AA8\u8AA9\u8AAA\u0000\u0000"+
-            "\u8AAD\u0000\u0000\u8AB0\u0000\u8AB2\u8AB3\u8AB4"+
-            "\u8AB5\u8AB6\u0000\u0000\u0000\u0000\u0000\u8ABC"+
-            "\u8ABD\u0000\u0000\u8AC0\u0000\u0000\u8AC3\u0000"+
-            "\u0000\u0000\u0000\u0000\u8AC9\u8ACA\u8ACB\u8ACC"+
-            "\u0000\u8ACE\u8ACF\u0000\u0000\u8AD2\u0000\u8AD4"+
-            "\u8AD5\u0000\u8AD7\u8AD8\u8AD9\u0000\u0000\u8ADC"+
-            "\u0000\u0000\u8ADF\u8AE0\u8AE1\u8AE2\u8AE3\u8AE4"+
-            "\u8AE5\u8AE6\u0000\u8AE8\u8AE9\u8AEA\u0000\u8AEC"+
-            "\u8AED\u8AEE\u8AEF\u0000\u8AF1\u8AF2\u8AF3\u8AF4"+
-            "\u0000\u8AF6\u8AF7\u8AF8\u8AF9\u8AFA\u0000\u8AFC"+
-            "\u0000\u8AFE\u8B40\u8B41\u8B42\u8B43\u8B44\u8B45"+
-            "\u8B46\u0000\u8B48\u8B49\u8B4A\u8B4B\u8B4C\u8B4D"+
-            "\u8B4E\u8B4F\u0000\u0000\u0000\u0000\u0000\u8B55"+
-            "\u0000\u0000\u8B58\u8B59\u0000\u0000\u0000\u0000"+
-            "\u8B5E\u0000\u0000\u0000\u8B62\u0000\u8B64\u8B65"+
-            "\u8B66\u8B67\u0000\u8B69\u0000\u8B6B\u0000\u8B6D"+
-            "\u8B6E\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75"+
-            "\u8B76\u8B77\u0000\u8B79\u8B7A\u8B7B\u8B7C\u0000"+
-            "\u8B7E\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u0000\u8BA7"+
-            "\u8BA8\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u0000"+
-            "\u0000\u0000\u8BB2\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BBB\u8BBC\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BC2\u8BC3\u0000\u8BC5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8BD6\u0000"+
-            "\u0000\u0000\u0000\u8BDB\u0000\u0000\u8BDE\u0000"+
-            "\u0000\u8BE1\u8BE2\u0000\u0000\u0000\u8BE6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BED\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BF3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BFA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8C42\u8C43\u0000\u0000\u8C46\u0000\u0000"+
-            "\u0000\u8C4A\u0000\u8C4C\u0000\u8C4E\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C54\u8C55\u0000\u8C57\u0000"+
-            "\u0000\u0000\u0000\u8C5C\u0000\u0000\u8C5F\u0000"+
-            "\u0000\u0000\u0000\u8C64\u8C65\u0000\u0000\u0000"+
-            "\u8C69\u0000\u0000\u8C6C\u8C6D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C74\u0000\u0000\u0000\u0000"+
-            "\u8C79\u0000\u0000\u0000\u8C7D\u0000\u8CA1\u0000"+
-            "\u0000\u8CA4\u0000\u0000\u0000\u8CA8\u0000\u0000"+
-            "\u8CAB\u0000\u0000\u0000\u8CAF\u8CB0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8CB7\u0000\u8CB9\u0000"+
-            "\u8CBB\u0000\u0000\u0000\u0000\u8CC0\u8CC1\u8CC2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8CCF\u0000\u8CD1\u0000"+
-            "\u8CD3\u0000\u8CD5\u8CD6\u8CD7\u8CD8\u0000\u8CDA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DE2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8DEC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DFB\u0000\u0000"+
-            "\u8DFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC879\uC87A\u0000"+
-            "\uC87C\u0000\uC87E\uC8A1\u0000\uC8A3\uC8A4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8D0\u0000\u0000\u0000\u0000\uC8CF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC6E4\u0000\uC6E5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8CD\u0000\uC8CE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uF9FE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-        */
-        private final static String innerIndex8=
-            "\u92DD\u0000\u92DF\u0000\u92E1\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u92E9\u0000\u0000\u92EC"+
-            "\u92ED\u92EE\u92EF\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u92F6\u92F7\u92F8\u92F9\u92FA\u0000\u0000"+
-            "\u0000\u92FE\u0000\u9341\u9342\u0000\u0000\u9345"+
-            "\u0000\u9347\u0000\u9349\u0000\u934B\u0000\u0000"+
-            "\u0000\u0000\u9350\u9351\u9352\u0000\u0000\u9355"+
-            "\u9356\u9357\u9358\u9359\u935A\u935B\u0000\u935D"+
-            "\u935E\u935F\u9360\u0000\u0000\u9363\u9364\u0000"+
-            "\u9366\u0000\u0000\u9369\u0000\u0000\u936C\u936D"+
-            "\u0000\u936F\u9370\u9371\u9372\u9373\u0000\u9375"+
-            "\u9376\u9377\u0000\u0000\u0000\u937B\u937C\u937D"+
-            "\u937E\u0000\u93A2\u93A3\u93A4\u93A5\u93A6\u93A7"+
-            "\u93A8\u0000\u93AA\u0000\u0000\u0000\u93AE\u93AF"+
-            "\u0000\u93B1\u0000\u0000\u0000\u93B5\u93B6\u93B7"+
-            "\u93B8\u93B9\u0000\u93BB\u93BC\u93BD\u0000\u93BF"+
-            "\u93C0\u93C1\u93C2\u93C3\u93C4\u93C5\u93C6\u93C7"+
-            "\u93C8\u0000\u93CA\u93CB\u93CC\u93CD\u93CE\u93CF"+
-            "\u93D0\u0000\u93D2\u0000\u93D4\u0000\u93D6\u93D7"+
-            "\u0000\u93D9\u93DA\u0000\u93DC\u93DD\u93DE\u93DF"+
-            "\u93E0\u93E1\u93E2\u0000\u93E4\u0000\u93E6\u0000"+
-            "\u0000\u93E9\u0000\u93EB\u93EC\u93ED\u0000\u0000"+
-            "\u0000\u0000\u93F2\u0000\u0000\u0000\u93F6\u0000"+
-            "\u0000\u93F9\u93FA\u0000\u0000\u93FD\u93FE\u0000"+
-            "\u9441\u9442\u0000\u0000\u0000\u9446\u0000\u9448"+
-            "\u9449\u0000\u944B\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9452\u9453\u0000\u0000\u0000\u0000\u9458"+
-            "\u9459\u0000\u945B\u945C\u0000\u945E\u945F\u9460"+
-            "\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u0000"+
-            "\u9469\u0000\u0000\u0000\u0000\u946E\u946F\u9470"+
-            "\u0000\u9472\u9473\u9474\u9475\u0000\u0000\u9478"+
-            "\u9479\u0000\u947B\u947C\u947D\u947E\u94A1\u94A2"+
-            "\u94A3\u94A4\u94A5\u0000\u0000\u0000\u94A9\u94AA"+
-            "\u0000\u94AC\u94AD\u0000\u94AF\u0000\u0000\u0000"+
-            "\u94B3\u94B4\u94B5\u94B6\u0000\u0000\u94B9\u94BA"+
-            "\u94BB\u94BC\u94BD\u94BE\u0000\u94C0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u94C7\u94C8\u94C9\u0000"+
-            "\u0000\u0000\u0000\u94CE\u0000\u0000\u94D1\u94D2"+
-            "\u94D3\u0000\u0000\u94D6\u94D7\u94D8\u94D9\u94DA"+
-            "\u94DB\u0000\u94DD\u94DE\u94DF\u94E0\u0000\u0000"+
-            "\u94E3\u94E4\u94E5\u0000\u94E7\u0000\u0000\u94EA"+
-            "\u0000\u94EC\u0000\u0000\u94EF\u94F0\u94F1\u94F2"+
-            "\u0000\u94F4\u94F5\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u94FE\u9540\u9541\u0000\u9543"+
-            "\u9544\u9545\u9546\u0000\u9548\u9549\u0000\u954B"+
-            "\u954C\u954D\u0000\u0000\u9550\u9551\u9552\u0000"+
-            "\u9554\u0000\u0000\u0000\u0000\u9559\u955A\u955B"+
-            "\u955C\u0000\u955E\u0000\u9560\u9561\u9562\u0000"+
-            "\u9564\u0000\u0000\u0000\u9568\u0000\u956A\u0000"+
-            "\u0000\u956D\u0000\u956F\u0000\u9571\u0000\u9573"+
-            "\u9574\u0000\u9576\u0000\u9578\u0000\u957A\u957B"+
-            "\u0000\u957D\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u95A8\u0000\u95AA\u95AB\u95AC\u95AD"+
-            "\u95AE\u95AF\u95B0\u0000\u95B2\u95B3\u95B4\u0000"+
-            "\u0000\u95B7\u0000\u0000\u95BA\u0000\u0000\u0000"+
-            "\u95BE\u0000\u0000\u0000\u95C2\u0000\u0000\u0000"+
-            "\u95C6\u95C7\u0000\u0000\u95CA\u0000\u0000\u95CD"+
-            "\u0000\u0000\u95D0\u95D1\u0000\u0000\u95D4\u0000"+
-            "\u95D6\u95D7\u0000\u0000\u0000\u95DB\u0000\u0000"+
-            "\u95DE\u95DF\u95E0\u0000\u95E2\u95E3\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u95EA\u0000\u95EC\u95ED"+
-            "\u95EE\u95EF\u95F0\u95F1\u0000\u95F3\u95F4\u95F5"+
-            "\u95F6\u95F7\u95F8\u95F9\u0000\u0000\u95FC\u0000"+
-            "\u95FE\u0000\u9641\u9642\u9643\u0000\u0000\u9646"+
-            "\u9647\u9648\u9649\u0000\u0000\u0000\u964D\u0000"+
-            "\u964F\u0000\u0000\u0000\u9653\u0000\u9655\u9656"+
-            "\u0000\u9658\u0000\u965A\u0000\u965C\u965D\u965E"+
-            "\u965F\u0000\u9661\u9662\u0000\u9664\u0000\u0000"+
-            "\u0000\u9668\u9669\u0000\u966B\u0000\u0000\u966E"+
-            "\u966F\u0000\u0000\u0000\u0000\u9674\u9675\u9676"+
-            "\u0000\u9678\u9679\u0000\u0000\u967C\u0000\u967E"+
-            "\u96A1\u0000\u96A3\u96A4\u0000\u96A6\u0000\u96A8"+
-            "\u0000\u96AA\u96AB\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u96B4\u0000\u96B6\u96B7\u0000"+
-            "\u96B9\u96BA\u0000\u96BC\u0000\u96BE\u96BF\u96C0"+
-            "\u96C1\u0000\u0000\u96C4\u96C5\u96C6\u0000\u96C8"+
-            "\u96C9\u96CA\u96CB\u0000\u0000\u96CE\u96CF\u96D0"+
-            "\u0000\u96D2\u96D3\u96D4\u96D5\u96D6\u0000\u0000"+
-            "\u0000\u96DA\u0000\u0000\u0000\u0000\u96DF\u0000"+
-            "\u96E1\u0000\u0000\u0000\u0000\u96E6\u96E7\u96E8"+
-            "\u96E9\u0000\u0000\u0000\u0000\u0000\u0000\u96F0"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u96F7\u96F8"+
-            "\u0000\u96FA\u96FB\u0000\u96FD\u96FE\u0000\u0000"+
-            "\u0000\u9743\u9744\u9745\u9746\u9747\u0000\u0000"+
-            "\u974A\u974B\u0000\u974D\u974E\u974F\u9750\u9751"+
-            "\u0000\u9753\u9754\u0000\u9756\u9757\u9758\u9759"+
-            "\u975A\u0000\u0000\u975D\u0000\u975F\u9760\u9761"+
-            "\u9762\u0000\u0000\u0000\u9766\u9767\u9768\u9769"+
-            "\u976A\u976B\u976C\u976D\u0000\u976F\u0000\u9771"+
-            "\u0000\u0000\u0000\u9775\u0000\u9777\u9778\u0000"+
-            "\u977A\u977B\u977C\u977D\u0000\u97A1\u97A2\u0000"+
-            "\u97A4\u97A5\u97A6\u0000\u0000\u97A9\u0000\u97AB"+
-            "\u97AC\u97AD\u97AE\u0000\u97B0\u97B1\u97B2\u0000"+
-            "\u97B4\u97B5\u97B6\u0000\u97B8\u97B9\u97BA\u0000"+
-            "\u0000\u97BD\u97BE\u0000\u97C0\u97C1\u97C2\u97C3"+
-            "\u0000\u97C5\u97C6\u97C7\u0000\u97C9\u97CA\u0000"+
-            "\u97CC\u97CD\u0000\u97CF\u0000\u0000\u97D2\u97D3"+
-            "\u97D4\u0000\u0000\u97D7\u97D8\u0000\u97DA\u97DB"+
-            "\u97DC\u97DD\u97DE\u0000\u0000\u97E1\u0000\u97E3"+
-            "\u97E4\u0000\u0000\u97E7\u97E8\u0000\u97EA\u97EB"+
-            "\u97EC\u97ED\u97EE\u0000\u0000\u97F1\u97F2\u97F3"+
-            "\u97F4\u97F5\u97F6\u97F7\u97F8\u0000\u97FA\u97FB"+
-            "\u0000\u97FD\u97FE\u9840\u9841\u9842\u9843\u0000"+
-            "\u9845\u0000\u9847\u0000\u9849\u984A\u984B\u0000"+
-            "\u0000\u984E\u0000\u0000\u9851\u9852\u9853\u0000"+
-            "\u9855\u9856\u0000\u0000\u0000\u985A\u0000\u0000"+
-            "\u985D\u0000\u985F\u9860\u9861\u9862\u0000\u9864"+
-            "\u9865\u0000\u9867\u0000\u9869\u986A\u986B\u0000"+
-            "\u986D\u986E\u0000\u0000\u9871\u9872\u0000\u9874"+
-            "\u9875\u0000\u0000\u0000\u9879\u0000\u987B\u987C"+
-            "\u0000\u0000\u0000\u98A2\u98A3\u98A4\u0000\u98A6"+
-            "\u98A7\u98A8\u98A9\u98AA\u0000\u98AC\u0000\u0000"+
-            "\u0000\u98B0\u98B1\u0000\u0000\u0000\u0000\u98B6"+
-            "\u0000\u0000\u98B9\u0000\u0000\u98BC\u98BD\u0000"+
-            "\u0000\u98C0\u0000\u0000\u98C3\u0000\u98C5\u0000"+
-            "\u0000\u0000\u0000\u0000\u98CB\u98CC\u98CD\u98CE"+
-            "\u0000\u98D0\u98D1\u0000\u0000\u0000\u0000\u98D6"+
-            "\u0000\u0000\u98D9\u0000\u98DB\u0000\u98DD\u0000"+
-            "\u98DF\u0000\u0000\u0000\u0000\u98E4\u0000\u98E6"+
-            "\u0000\u98E8\u98E9\u0000\u98EB\u98EC\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u98F4\u0000\u0000"+
-            "\u0000\u0000\u0000\u98FA\u0000\u0000\u0000\u98FE"+
-            "\u9940\u0000\u0000\u0000\u0000\u0000\u9946\u0000"+
-            "\u9948\u0000\u0000\u994B\u0000\u0000\u994E\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9955\u9956\u0000"+
-            "\u0000\u9959\u0000\u995B\u0000\u0000\u0000\u995F"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u996E\u0000"+
-            "\u0000\u0000\u0000\u9973\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u997A\u997B\u0000\u0000\u0000\u99A1"+
-            "\u0000\u0000\u0000\u99A5\u0000\u99A7\u0000\u0000"+
-            "\u0000\u0000\u0000\u99AD\u0000\u0000\u0000\u0000"+
-            "\u0000\u99B3\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u99BC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u99C3\u0000\u0000\u0000\u99C7\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99CE\u99CF\u0000\u0000"+
-            "\u0000\u0000\u0000\u99D5\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u99DE\u0000\u0000\u99E1"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u99F5\u0000\u0000\u99F8\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A48\u9A49\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9A50\u0000\u0000"+
-            "\u0000\u0000\u9A55\u0000\u0000\u9A58\u0000\u9A5A"+
-            "\u0000\u9A5C\u0000\u0000\u0000\u9A60\u0000\u0000"+
-            "\u9A63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u9A6E\u0000\u9A70\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9A79\u0000"+
-            "\u9A7B\u9A7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AB4"+
-            "\u9AB5\u9AB6\u0000\u0000\u0000\u9ABA\u0000\u0000"+
-            "\u9ABD\u9ABE\u9ABF\u9AC0\u9AC1\u0000\u0000\u9AC4"+
-            "\u9AC5\u9AC6\u0000\u9AC8\u9AC9\u0000\u9ACB\u9ACC"+
-            "\u9ACD\u9ACE\u9ACF\u0000\u9AD1\u0000\u9AD3\u9AD4"+
-            "\u9AD5\u9AD6\u9AD7\u9AD8\u0000\u0000\u0000\u9ADC"+
-            "\u9ADD\u9ADE\u9ADF\u9AE0\u9AE1\u0000\u9AE3\u0000"+
-            "\u9AE5\u9AE6\u9AE7\u0000\u9AE9\u9AEA\u9AEB\u9AEC"+
-            "\u9AED\u9AEE\u9AEF\u9AF0\u0000\u0000\u9AF3\u9AF4"+
-            "\u9AF5\u0000\u9AF7\u9AF8\u9AF9\u9AFA\u0000\u0000"+
-            "\u9AFD\u9AFE\u9B40\u9B41\u9B42\u9B43\u9B44\u9B45"+
-            "\u0000\u9B47\u9B48\u0000\u0000\u9B4B\u0000\u9B4D"+
-            "\u9B4E\u9B4F\u9B50\u9B51\u9B52\u9B53\u0000\u9B55"+
-            "\u9B56\u9B57\u0000\u9B59\u0000\u9B5B\u0000\u9B5D"+
-            "\u0000\u0000\u9B60\u0000\u9B62\u9B63\u9B64\u9B65"+
-            "\u9B66\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D"+
-            "\u9B6E\u9B6F\u0000\u0000\u0000\u9B73\u9B74\u9B75"+
-            "\u0000\u9B77\u0000\u9B79\u9B7A\u0000\u9B7C\u0000"+
-            "\u0000\u0000\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7"+
-            "\u9BA8\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF"+
-            "\u9BB0\u9BB1\u9BB2\u9BB3\u0000\u9BB5\u0000\u9BB7"+
-            "\u9BB8\u9BB9\u9BBA\u9BBB\u0000\u9BBD\u9BBE\u9BBF"+
-            "\u9BC0\u9BC1\u9BC2\u9BC3\u0000\u9BC5\u0000\u9BC7"+
-            "\u9BC8\u9BC9\u0000\u9BCB\u9BCC\u0000\u9BCE\u9BCF"+
-            "\u9BD0\u0000\u9BD2\u0000\u0000\u0000\u9BD6\u9BD7"+
-            "\u9BD8\u9BD9\u0000\u9BDB\u9BDC\u9BDD\u0000\u9BDF"+
-            "\u9BE0\u9BE1\u9BE2\u9BE3\u9BE4\u9BE5\u9BE6\u9BE7"+
-            "\u9BE8\u0000\u9BEA\u9BEB\u0000\u9BED\u9BEE\u9BEF"+
-            "\u9BF0\u9BF1\u9BF2\u9BF3\u0000\u0000\u0000\u9BF7"+
-            "\u9BF8\u0000\u9BFA\u9BFB\u0000\u9BFD\u9BFE\u0000"+
-            "\u9C41\u0000\u9C43\u9C44\u0000\u9C46\u9C47\u9C48"+
-            "\u9C49\u9C4A\u9C4B\u9C4C\u9C4D\u0000\u9C4F\u0000"+
-            "\u0000\u9C52\u0000\u0000\u9C55\u9C56\u0000\u9C58"+
-            "\u0000\u0000\u9C5B\u9C5C\u0000\u9C5E\u9C5F\u9C60"+
-            "\u9C61\u0000\u9C63\u0000\u9C65\u9C66\u9C67\u0000"+
-            "\u9C69\u0000\u0000\u9C6C\u0000\u9C6E\u9C6F\u9C70"+
-            "\u9C71\u0000\u9C73\u9C74\u0000\u9C76\u0000\u9C78"+
-            "\u9C79\u9C7A\u0000\u0000\u9C7D\u0000\u9CA1\u9CA2"+
-            "\u9CA3\u9CA4\u9CA5\u9CA6\u9CA7\u0000\u9CA9\u9CAA"+
-            "\u0000\u9CAC\u9CAD\u0000\u0000\u9CB0\u9CB1\u0000"+
-            "\u0000\u9CB4\u9CB5\u9CB6\u0000\u9CB8\u9CB9\u9CBA"+
-            "\u9CBB\u0000\u0000\u9CBE\u0000\u9CC0\u9CC1\u0000"+
-            "\u9CC3\u9CC4\u0000\u9CC6\u9CC7\u9CC8\u9CC9\u9CCA"+
-            "\u9CCB\u0000\u0000\u9CCE\u9CCF\u0000\u9CD1\u9CD2"+
-            "\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u0000\u0000"+
-            "\u9CDB\u0000\u9CDD\u0000\u9CDF\u0000\u9CE1\u0000"+
-            "\u0000\u0000\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+
-            "\u0000\u9CEC\u9CED\u0000\u0000\u9CF0\u0000\u9CF2"+
-            "\u0000\u0000\u0000\u9CF6\u9CF7\u9CF8\u0000\u9CFA"+
-            "\u9CFB\u9CFC\u9CFD\u9CFE\u9D40\u9D41\u9D42\u9D43"+
-            "\u9D44\u9D45\u9D46\u9D47\u9D48\u9D49\u0000\u9D4B"+
-            "\u0000\u0000\u9D4E\u9D4F\u9D50\u9D51\u9D52\u9D53"+
-            "\u9D54\u0000\u9D56\u0000\u9D58\u9D59\u0000\u9D5B"+
-            "\u9D5C\u9D5D\u9D5E\u9D5F\u0000\u0000\u0000\u9D63"+
-            "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+
-            "\u9D6C\u9D6D\u9D6E\u9D6F\u0000\u9D71\u9D72\u9D73"+
-            "\u0000\u9D75\u0000\u9D77\u9D78\u0000\u9D7A\u9D7B"+
-            "\u9D7C\u0000\u0000\u0000\u9DA2\u0000\u9DA4\u9DA5"+
-            "\u0000\u0000\u0000\u0000\u9DAA\u9DAB\u9DAC\u9DAD"+
-            "\u0000\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4\u9DB5"+
-            "\u9DB6\u9DB7\u9DB8\u9DB9\u0000\u9DBB\u9DBC\u0000"+
-            "\u9DBE\u0000\u0000\u9DC1\u9DC2\u0000\u0000\u9DC5"+
-            "\u9DC6\u0000\u0000\u9DC9\u0000\u9DCB\u9DCC\u9DCD"+
-            "\u9DCE\u0000\u0000\u0000\u9DD2\u0000\u9DD4\u0000"+
-            "\u0000\u9DD7\u9DD8\u9DD9\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DED"+
-            "\u9DEE\u0000\u0000\u0000\u9DF2\u9DF3\u0000\u0000"+
-            "\u0000\u0000\u0000\u9DF9\u9DFA\u0000\u9DFC\u9DFD"+
-            "\u9DFE\u9E40\u0000\u0000\u0000\u9E44\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9E4F\u0000\u9E51\u0000\u9E53\u9E54\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E5B\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u9E63\u9E64\u0000\u9E66"+
-            "\u0000\u0000\u9E69\u0000\u9E6B\u9E6C\u9E6D\u9E6E"+
-            "\u9E6F\u9E70\u0000\u9E72\u0000\u9E74\u9E75\u9E76"+
-            "\u9E77\u0000\u9E79\u9E7A\u9E7B\u9E7C\u9E7D\u9E7E"+
-            "\u0000\u0000\u9EA3\u9EA4\u9EA5\u9EA6\u9EA7\u9EA8"+
-            "\u0000\u9EAA\u9EAB\u0000\u9EAD\u9EAE\u0000\u0000"+
-            "\u0000\u0000\u0000\u9EB4\u0000\u0000\u0000\u9EB8"+
-            "\u9EB9\u0000\u9EBB\u9EBC\u0000\u9EBE\u0000\u0000"+
-            "\u0000\u9EC2\u9EC3\u0000\u9EC5\u9EC6\u0000\u9EC8"+
-            "\u9EC9\u0000\u9ECB\u9ECC\u9ECD\u9ECE\u9ECF\u9ED0"+
-            "\u0000\u9ED2\u9ED3\u9ED4\u9ED5\u0000\u0000\u9ED8"+
-            "\u9ED9\u9EDA\u0000\u0000\u9EDD\u9EDE\u9EDF\u9EE0"+
-            "\u0000\u0000\u9EE3\u0000\u9EE5\u0000\u9EE7\u0000"+
-            "\u0000\u0000\u0000\u9EEC\u0000\u9EEE\u0000\u9EF0"+
-            "\u0000\u9EF2\u9EF3\u0000\u0000\u9EF6\u0000\u9EF8"+
-            "\u9EF9\u0000\u9EFB\u9EFC\u0000\u0000\u0000\u0000"+
-            "\u0000\u9F43\u0000\u0000\u9F46\u9F47\u9F48\u0000"+
-            "\u9F4A\u9F4B\u9F4C\u9F4D\u0000\u0000\u9F50\u0000"+
-            "\u0000\u9F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F68\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FA5\u0000\u0000\u0000\u0000\u9FAA\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FB3"+
-            "\u0000\u9FB5\u0000\u0000\u0000\u0000\u0000\u9FBB"+
-            "\u0000\u0000\u9FBE\u9FBF\u0000\u9FC1\u0000\u0000"+
-            "\u0000\u9FC5\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u9FD1\u0000\u0000"+
-            "\u0000\u0000\u0000\u9FD7\u0000\u9FD9\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u9FEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u9FF5\u0000\u0000\u0000\u9FF9\u0000\u0000"+
-            "\u0000\u0000\u0000\uA040\u0000\u0000\u0000\u0000"+
-            "\uA045\u0000\uA047\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uA04F\u0000\u0000\u0000\uA053\u0000"+
-            "\uA055\uA056\u0000\u0000\uA059\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA068\u0000\uA06A\u0000\u0000"+
-            "\uA06D\u0000\uA06F\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uA078\u0000\u0000\uA07B\u0000"+
-            "\u0000\uA07E\u0000\uA0A2\u0000\uA0A4\u0000\u0000"+
-            "\uA0A7\u0000\u0000\u0000\uA0AB\uA0AC\u0000\u0000"+
-            "\u0000\u0000\uA0B1\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\uA0BD\u0000"+
-            "\u0000\u0000\u0000\u0000\uA0C3\u0000\uA0C5\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D0\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\uA0D8\u0000\uA0DA\u0000\u0000\u0000\uA0DE"+
-            "\u0000\u0000\u0000\u0000\uA0E3\u0000\u0000\uA0E6"+
-            "\u0000\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE"+
-            "\uA0EF\uA0F0\uA0F1\u0000\uA0F3\uA0F4\uA0F5\uA0F6"+
-            "\uA0F7\uA0F8\uA0F9\u0000\uA0FB\u0000\u0000\uA0FE"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8840\u8841\u8842\u8843\u8844"+
-            "\u8845\u8846\u8847\u8848\u8849\u884A\u884B\u884C"+
-            "\u884D\u884E\u884F\u8850\u8851\u8852\u8853\u8854"+
-            "\u8855\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8862\u0000\u8864"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u88A3\u0000\u88A5\u0000"+
-            "\u0000\u0000\u88A9\u88AA\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8940\u8941\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u894C\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u89B2\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+
-            "\u89BA\u89BB\u89BC\u0000\u89BE\u89BF\u0000\u0000"+
-            "\u0000\u0000\u0000\u89C5\u0000\u0000\u0000\u0000"+
-            "\u89CA\u89CB\u89CC\u89CD\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u89D5\u0000\u89D7\u0000\u0000"+
-            "\u89DA\u89DB\u89DC\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u89E6\u0000\u89E8\u0000"+
-            "\u89EA\u0000\u0000\u89ED\u89EE\u89EF\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F9"+
-            "\u0000\u89FB\u89FC\u0000\u89FE\u8A40\u0000\u0000"+
-            "\u8A43\u8A44\u8A45\u0000\u8A47\u8A48\u8A49\u0000"+
-            "\u8A4B\u8A4C\u8A4D\u8A4E\u0000\u8A50\u8A51\u8A52"+
-            "\u8A53\u8A54\u8A55\u0000\u8A57\u8A58\u8A59\u8A5A"+
-            "\u0000\u0000\u8A5D\u8A5E\u8A5F\u8A60\u8A61\u8A62"+
-            "\u0000\u8A64\u8A65\u8A66\u8A67\u8A68\u8A69\u0000"+
-            "\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70\u8A71\u8A72"+
-            "\u0000\u0000\u0000\u8A76\u8A77\u0000\u0000\u8A7A"+
-            "\u8A7B\u8A7C\u8A7D\u8A7E\u8AA1\u8AA2\u8AA3\u0000"+
-            "\u8AA5\u8AA6\u0000\u8AA8\u8AA9\u8AAA\u0000\u8AAC"+
-            "\u8AAD\u8AAE\u0000\u8AB0\u0000\u8AB2\u8AB3\u8AB4"+
-            "\u8AB5\u8AB6\u0000\u8AB8\u8AB9\u0000\u8ABB\u8ABC"+
-            "\u8ABD\u0000\u0000\u8AC0\u0000\u8AC2\u8AC3\u0000"+
-            "\u0000\u0000\u8AC7\u0000\u8AC9\u8ACA\u8ACB\u8ACC"+
-            "\u0000\u8ACE\u8ACF\u8AD0\u8AD1\u8AD2\u8AD3\u8AD4"+
-            "\u8AD5\u0000\u8AD7\u8AD8\u8AD9\u8ADA\u0000\u8ADC"+
-            "\u0000\u0000\u8ADF\u8AE0\u8AE1\u8AE2\u8AE3\u8AE4"+
-            "\u8AE5\u8AE6\u0000\u8AE8\u8AE9\u8AEA\u8AEB\u8AEC"+
-            "\u8AED\u8AEE\u8AEF\u8AF0\u8AF1\u8AF2\u8AF3\u8AF4"+
-            "\u0000\u8AF6\u8AF7\u8AF8\u8AF9\u8AFA\u8AFB\u8AFC"+
-            "\u0000\u8AFE\u8B40\u8B41\u8B42\u8B43\u8B44\u8B45"+
-            "\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C\u8B4D"+
-            "\u8B4E\u8B4F\u0000\u0000\u0000\u0000\u0000\u8B55"+
-            "\u0000\u0000\u8B58\u8B59\u0000\u0000\u0000\u0000"+
-            "\u8B5E\u0000\u8B60\u0000\u8B62\u0000\u8B64\u8B65"+
-            "\u8B66\u8B67\u8B68\u8B69\u8B6A\u8B6B\u0000\u8B6D"+
-            "\u8B6E\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75"+
-            "\u8B76\u8B77\u0000\u8B79\u8B7A\u8B7B\u8B7C\u0000"+
-            "\u8B7E\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u8BA6\u8BA7"+
-            "\u8BA8\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u0000"+
-            "\u0000\u8BB1\u8BB2\u0000\u0000\u8BB5\u8BB6\u0000"+
-            "\u8BB8\u0000\u0000\u8BBB\u8BBC\u0000\u8BBE\u0000"+
-            "\u0000\u0000\u8BC2\u8BC3\u0000\u8BC5\u0000\u0000"+
-            "\u8BC8\u0000\u0000\u0000\u8BCC\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u8BD6\u0000"+
-            "\u0000\u0000\u0000\u8BDB\u8BDC\u0000\u8BDE\u0000"+
-            "\u0000\u8BE1\u8BE2\u0000\u0000\u0000\u8BE6\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8BED\u0000\u0000"+
-            "\u0000\u0000\u0000\u8BF3\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u8BFA\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u8C42\u8C43\u0000\u0000\u8C46\u0000\u0000"+
-            "\u0000\u8C4A\u0000\u8C4C\u0000\u8C4E\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C54\u8C55\u0000\u8C57\u0000"+
-            "\u0000\u0000\u0000\u8C5C\u0000\u0000\u8C5F\u0000"+
-            "\u0000\u0000\u0000\u8C64\u8C65\u0000\u0000\u0000"+
-            "\u8C69\u0000\u0000\u8C6C\u8C6D\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u8C74\u0000\u0000\u0000\u0000"+
-            "\u8C79\u0000\u0000\u0000\u8C7D\u0000\u8CA1\u0000"+
-            "\u0000\u8CA4\u0000\u0000\u0000\u8CA8\u0000\u0000"+
-            "\u8CAB\u0000\u0000\u0000\u8CAF\u8CB0\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8CB7\u0000\u8CB9\u0000"+
-            "\u8CBB\u0000\u0000\u0000\u0000\u8CC0\u8CC1\u8CC2"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8CCF\u0000\u8CD1\u0000"+
-            "\u8CD3\u0000\u8CD5\u8CD6\u8CD7\u8CD8\u0000\u8CDA"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D63"+
-            "\u8D64\u0000\u0000\u8D67\u8D68\u0000\u0000\u0000"+
-            "\u0000\u8D6D\u8D6E\u8D6F\u8D70\u0000\u0000\u0000"+
-            "\u8D74\u0000\u0000\u0000\u8D78\u0000\u0000\u0000"+
-            "\u0000\u8D7D\u0000\u8DA1\u0000\u0000\u0000\u0000"+
-            "\u8DA6\u0000\u0000\u0000\u0000\u8DAB\u0000\u8DAD"+
-            "\u0000\u0000\u8DB0\u0000\u8DB2\u0000\u8DB4\u0000"+
-            "\u0000\u8DB7\u0000\u0000\u8DBA\u8DBB\u8DBC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DC3\u0000\u8DC5"+
-            "\u0000\u0000\u0000\u0000\u8DCA\u0000\u8DCC\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u8DD6\u0000\u0000\u0000\u0000\u8DDB\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u8DE2\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DEB\u8DEC\u0000"+
-            "\u0000\u8DEF\u8DF0\u0000\u0000\u8DF3\u0000\u8DF5"+
-            "\u0000\u0000\u0000\u0000\u0000\u8DFB\u8DFC\u8DFD"+
-            "\u8DFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC6CD\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uC879\uC87A\u0000"+
-            "\uC87C\u0000\uC87E\uC8A1\u0000\uC8A3\uC8A4\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF8"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\uC8D6\uC8D7\uC8D8\uC8D9\uC8DA\uC8DB\uC8DC\uC8DD"+
-            "\uC8DE\uC8DF\uC8E0\uC8E1\uC8E2\uC8E3\uC8E4\uC8E5"+
-            "\uC8E6\uC8E7\uC8E8\uC8E9\uC8EA\uC8EB\uC8EC\uC8ED"+
-            "\uC8EE\uC8EF\uC8F0\uC8F1\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8D0\u0000\u0000\u0000\u0000\uC8CF"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\uC6E4\u0000\uC6E5\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\uC8CD\u0000\uC8CE\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\uF9FE\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            1, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
-            0, 6, 0, 0, 7, 8, 0, 9, 0, 0, 0, 0, 0, 0, 10, 11,
-            12, 0, 13, 0, 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,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 0,
-            0, 0, 0, 137, 138, 139, 140, 141, 142, 142, 0, 0, 0, 0, 0, 143
-        };
-
-        static String index2[] = {
-            innerIndex0,
-            innerIndex1,
-            innerIndex2,
-            innerIndex3,
-            innerIndex4,
-            innerIndex5,
-            innerIndex6,
-            innerIndex7,
-            innerIndex8
-        };
-
-        String unicodeSearchTab =
-            "\ud840\udc21\ud840\udc3e\ud840\udc46\ud840\udc4e" +
-            "\ud840\udc68\ud840\udc86\ud840\udc87\ud840\udc8a" +
-            "\ud840\udc94\ud840\udcca\ud840\udccb\ud840\udccc" +
-            "\ud840\udccd\ud840\udcd1\ud840\udcee\ud840\udd0c" +
-            "\ud840\udd0e\ud840\udd18\ud840\udda9\ud840\uddab" +
-            "\ud840\uddc1\ud840\uddd4\ud840\uddf2\ud840\ude04" +
-            "\ud840\ude0c\ud840\ude14\ud840\ude5b\ud840\ude74" +
-            "\ud840\ude75\ud840\ude99\ud840\ude9e\ud840\udea0" +
-            "\ud840\udeb7\ud840\udebf\ud840\udec0\ud840\udee5" +
-            "\ud840\udf0a\ud840\udf25\ud840\udf41\ud840\udf45" +
-            "\ud840\udf46\ud840\udf47\ud840\udf7e\ud840\udf7f" +
-            "\ud840\udf80\ud840\udfa0\ud840\udfa7\ud840\udfb5" +
-            "\ud840\udfc9\ud840\udfcb\ud840\udff5\ud840\udffc" +
-            "\ud841\udc13\ud841\udc14\ud841\udc1f\ud841\udc65" +
-            "\ud841\udc87\ud841\udc8e\ud841\udc91\ud841\udc92" +
-            "\ud841\udca3\ud841\udcd7\ud841\udcfc\ud841\udcfe" +
-            "\ud841\udd47\ud841\udd8e\ud841\udda5\ud841\uddb3" +
-            "\ud841\uddc3\ud841\uddca\ud841\uddd0\ud841\uddd5" +
-            "\ud841\udddf\ud841\udde0\ud841\uddeb\ud841\ude11" +
-            "\ud841\ude15\ud841\ude19\ud841\ude1a\ud841\ude30" +
-            "\ud841\ude56\ud841\ude76\ud841\udf0e\ud841\udf31" +
-            "\ud841\udf79\ud842\udc2c\ud842\udc73\ud842\udcd5" +
-            "\ud842\udd16\ud842\udd23\ud842\udd54\ud842\udd79" +
-            "\ud842\udde7\ud842\ude11\ud842\ude50\ud842\udeb4" +
-            "\ud842\udec2\ud842\udecd\ud842\udf0d\ud842\udf8f" +
-            "\ud842\udfa8\ud842\udfa9\ud842\udfbf\ud842\udfc6" +
-            "\ud842\udfcb\ud842\udfe2\ud842\udfeb\ud842\udffb" +
-            "\ud842\udfff\ud843\udc0b\ud843\udc0d\ud843\udc20" +
-            "\ud843\udc34\ud843\udc3a\ud843\udc3b\ud843\udc41" +
-            "\ud843\udc42\ud843\udc43\ud843\udc53\ud843\udc65" +
-            "\ud843\udc77\ud843\udc78\ud843\udc7c\ud843\udc8d" +
-            "\ud843\udc96\ud843\udc9c\ud843\udcb5\ud843\udcb8" +
-            "\ud843\udccf\ud843\udcd3\ud843\udcd4\ud843\udcd5" +
-            "\ud843\udcd6\ud843\udcdd\ud843\udced\ud843\udcff" +
-            "\ud843\udd15\ud843\udd28\ud843\udd31\ud843\udd32" +
-            "\ud843\udd46\ud843\udd47\ud843\udd48\ud843\udd49" +
-            "\ud843\udd4c\ud843\udd4d\ud843\udd4e\ud843\udd6f" +
-            "\ud843\udd71\ud843\udd74\ud843\udd7c\ud843\udd7e" +
-            "\ud843\udd7f\ud843\udd96\ud843\udd9c\ud843\udda7" +
-            "\ud843\uddb2\ud843\uddc8\ud843\ude04\ud843\ude09" +
-            "\ud843\ude0a\ud843\ude0d\ud843\ude0e\ud843\ude0f" +
-            "\ud843\ude10\ud843\ude11\ud843\ude16\ud843\ude1d" +
-            "\ud843\ude4c\ud843\ude6d\ud843\ude73\ud843\ude75" +
-            "\ud843\ude76\ud843\ude77\ud843\ude78\ud843\ude79" +
-            "\ud843\ude7a\ud843\ude7b\ud843\ude8c\ud843\ude96" +
-            "\ud843\ude98\ud843\ude9d\ud843\udea2\ud843\udeaa" +
-            "\ud843\udeab\ud843\udeac\ud843\udeb6\ud843\uded7" +
-            "\ud843\uded8\ud843\udedd\ud843\udef8\ud843\udef9" +
-            "\ud843\udefa\ud843\udefb\ud843\udf1d\ud843\udf26" +
-            "\ud843\udf2d\ud843\udf2e\ud843\udf30\ud843\udf31" +
-            "\ud843\udf3b\ud843\udf4c\ud843\udf64\ud843\udf8d" +
-            "\ud843\udf90\ud843\udfad\ud843\udfb4\ud843\udfb5" +
-            "\ud843\udfb6\ud843\udfbc\ud843\udfdf\ud843\udfea" +
-            "\ud843\udfeb\ud843\udfec\ud843\udfed\ud844\udc14" +
-            "\ud844\udc1d\ud844\udc1e\ud844\udc4f\ud844\udc5c" +
-            "\ud844\udc6f\ud844\udc75\ud844\udc76\ud844\udc77" +
-            "\ud844\udc78\ud844\udc7b\ud844\udc88\ud844\udc96" +
-            "\ud844\udc9d\ud844\udcb4\ud844\udcbf\ud844\udcc0" +
-            "\ud844\udcc1\ud844\udcc7\ud844\udcc8\ud844\udcc9" +
-            "\ud844\udccf\ud844\udcd3\ud844\udce4\ud844\udcf4" +
-            "\ud844\udcf5\ud844\udcf6\ud844\udd2f\ud844\udd3b" +
-            "\ud844\udd3d\ud844\udd45\ud844\udd48\ud844\udd4f" +
-            "\ud844\udd80\ud844\udd87\ud844\uddd9\ud844\ude3c" +
-            "\ud844\ude4f\ud844\ude7c\ud844\udea8\ud844\udea9" +
-            "\ud844\udeb0\ud844\udee3\ud844\udefe\ud844\udf02" +
-            "\ud844\udf03\ud844\udf04\ud844\udf05\ud844\udf36" +
-            "\ud844\udf3a\ud844\udf75\ud844\udf76\ud844\udf8e" +
-            "\ud844\udf98\ud844\udf9c\ud844\udfc5\ud844\udfc6" +
-            "\ud844\udfed\ud844\udffe\ud845\udc13\ud845\udc16" +
-            "\ud845\udc24\ud845\udc3f\ud845\udc52\ud845\udc54" +
-            "\ud845\udc55\ud845\udc8a\ud845\udc97\ud845\udcb6" +
-            "\ud845\udce8\ud845\udcfd\ud845\udd77\ud845\udd82" +
-            "\ud845\udd96\ud845\ude0a\ud845\ude13\ud845\ude19" +
-            "\ud845\ude3e\ud845\ude61\ud845\ude92\ud845\udeb8" +
-            "\ud845\udeba\ud845\udec0\ud845\udec1\ud845\udec2" +
-            "\ud845\uded3\ud845\uded5\ud845\udedf\ud845\udee6" +
-            "\ud845\udee7\ud845\udee8\ud845\udefa\ud845\udefb" +
-            "\ud845\udefc\ud845\udefe\ud845\udf0d\ud845\udf10" +
-            "\ud845\udf26\ud845\udf3a\ud845\udf3b\ud845\udf3c" +
-            "\ud845\udf57\ud845\udf6c\ud845\udf6d\ud845\udf6e" +
-            "\ud845\udf6f\ud845\udf70\ud845\udf71\ud845\udf73" +
-            "\ud845\udf74\ud845\udfab\ud845\udfb0\ud845\udfb1" +
-            "\ud845\udfb2\ud845\udfb3\ud845\udfb4\ud845\udfb5" +
-            "\ud845\udfc3\ud845\udfc7\ud845\udfd9\ud845\udfda" +
-            "\ud845\udfdb\ud845\udfdc\ud845\udfdf\ud845\udfef" +
-            "\ud845\udff5\ud845\udff6\ud845\udff8\ud845\udff9" +
-            "\ud845\udffa\ud845\udffb\ud845\udffc\ud846\udc20" +
-            "\ud846\udc28\ud846\udc29\ud846\udc2a\ud846\udc2d" +
-            "\ud846\udc39\ud846\udc3a\ud846\udc3b\ud846\udc40" +
-            "\ud846\udc45\ud846\udc52\ud846\udc5e\ud846\udc61" +
-            "\ud846\udc62\ud846\udc63\ud846\udc64\ud846\udc77" +
-            "\ud846\udc7b\ud846\udc83\ud846\udc84\ud846\udc85" +
-            "\ud846\udc9e\ud846\udc9f\ud846\udca0\ud846\udca1" +
-            "\ud846\udca2\ud846\udcbe\ud846\udcbf\ud846\udcd1" +
-            "\ud846\udcd6\ud846\udcd7\ud846\udcd8\ud846\udcd9" +
-            "\ud846\udcfa\ud846\udd03\ud846\udd04\ud846\udd05" +
-            "\ud846\udd10\ud846\udd11\ud846\udd12\ud846\udd15" +
-            "\ud846\udd1c\ud846\udd22\ud846\udd27\ud846\udd3b" +
-            "\ud846\udd44\ud846\udd58\ud846\udd6a\ud846\udd7c" +
-            "\ud846\udd80\ud846\udd83\ud846\udd88\ud846\udd96" +
-            "\ud846\udddb\ud846\uddf3\ud846\ude2d\ud846\ude34" +
-            "\ud846\ude45\ud846\ude4b\ud846\udf44\ud846\udfc1" +
-            "\ud846\udfc2\ud847\udc2a\ud847\udc70\ud847\udca2" +
-            "\ud847\udca5\ud847\udcac\ud847\udd46\ud847\udd90" +
-            "\ud847\uddb6\ud847\uddba\ud847\uddca\ud847\uddd1" +
-            "\ud847\uddeb\ud847\uddf9\ud847\ude1c\ud847\ude37" +
-            "\ud847\ude3d\ud847\ude89\ud847\udea4\ud847\udea8" +
-            "\ud847\udec8\ud847\uded5\ud847\udf0f\ud847\udf15" +
-            "\ud847\udf6a\ud847\udf9e\ud847\udfa1\ud847\udfe8" +
-            "\ud848\udc45\ud848\udc49\ud848\udc7e\ud848\udc9a" +
-            "\ud848\udcc7\ud848\udcfc\ud848\udd2a\ud848\udd5b" +
-            "\ud848\udd73\ud848\udd7a\ud848\udda1\ud848\uddc3" +
-            "\ud848\ude08\ud848\ude7c\ud848\udf21\ud848\udf25" +
-            "\ud848\udfbd\ud848\udfd0\ud848\udfd7\ud848\udffa" +
-            "\ud849\udc65\ud849\udc71\ud849\udc8b\ud849\udc91" +
-            "\ud849\udcb0\ud849\udced\ud849\udd13\ud849\udd1b" +
-            "\ud849\udd30\ud849\udd54\ud849\udd8d\ud849\uddaf" +
-            "\ud849\uddbe\ud849\ude1b\ud849\ude1c\ud849\ude2b" +
-            "\ud849\ude68\ud849\ude7a\ud849\ude96\ud849\ude98" +
-            "\ud849\udef4\ud849\udef5\ud849\udef6\ud849\udf12" +
-            "\ud849\udf14\ud849\udf1b\ud849\udf1f\ud849\udf2a" +
-            "\ud849\udf75\ud849\udf81\ud849\udfb4\ud849\udfb5" +
-            "\ud849\udfcd\ud84a\udc03\ud84a\udc5f\ud84a\udc60" +
-            "\ud84a\udc71\ud84a\udcad\ud84a\udcc1\ud84a\udcf7" +
-            "\ud84a\udd26\ud84a\udd39\ud84a\udd4f\ud84a\udd67" +
-            "\ud84a\udd6b\ud84a\udd80\ud84a\udd93\ud84a\ude66" +
-            "\ud84a\udecf\ud84a\uded5\ud84a\udee6\ud84a\udee8" +
-            "\ud84a\udf0e\ud84a\udf22\ud84a\udf3f\ud84a\udf43" +
-            "\ud84a\udf6a\ud84a\udfca\ud84a\udfce\ud84b\udc26" +
-            "\ud84b\udc27\ud84b\udc38\ud84b\udc4c\ud84b\udc51" +
-            "\ud84b\udc55\ud84b\udc62\ud84b\udc88\ud84b\udc9b" +
-            "\ud84b\udca1\ud84b\udca9\ud84b\udcb2\ud84b\udcb7" +
-            "\ud84b\udcc2\ud84b\udcc6\ud84b\udcc9\ud84b\udd07" +
-            "\ud84b\udd08\ud84b\udd12\ud84b\udd44\ud84b\udd4c" +
-            "\ud84b\udd67\ud84b\udd8d\ud84b\udd95\ud84b\udda0" +
-            "\ud84b\udda3\ud84b\udda4\ud84b\uddb7\ud84b\uddee" +
-            "\ud84b\ude0d\ud84b\ude36\ud84b\ude42\ud84b\ude78" +
-            "\ud84b\ude8b\ud84b\udeb3\ud84b\udeef\ud84b\udf74" +
-            "\ud84b\udfcc\ud84b\udfe3\ud84c\udc33\ud84c\udc44" +
-            "\ud84c\udc4b\ud84c\udc66\ud84c\udc7d\ud84c\udc7e" +
-            "\ud84c\udc8e\ud84c\udcb7\ud84c\udcbc\ud84c\udcda" +
-            "\ud84c\udd03\ud84c\udd3d\ud84c\udd7d\ud84c\udd82" +
-            "\ud84c\udda4\ud84c\udda5\ud84c\uddb3\ud84c\uddc8" +
-            "\ud84c\uddc9\ud84c\uddf7\ud84c\uddf8\ud84c\uddf9" +
-            "\ud84c\ude0f\ud84c\ude25\ud84c\ude2f\ud84c\ude31" +
-            "\ud84c\ude32\ud84c\ude33\ud84c\ude34\ud84c\ude62" +
-            "\ud84c\ude81\ud84c\ude89\ud84c\ude8a\ud84c\udeab" +
-            "\ud84c\udeac\ud84c\udead\ud84c\uded2\ud84c\udee0" +
-            "\ud84c\udee1\ud84c\udf00\ud84c\udf0a\ud84c\udf1f" +
-            "\ud84c\udfb4\ud84c\udfcc\ud84c\udfde\ud84c\udfe6" +
-            "\ud84c\udff4\ud84c\udff5\ud84c\udff9\ud84c\udffa" +
-            "\ud84c\udffe\ud84d\udc00\ud84d\udc3f\ud84d\udc50" +
-            "\ud84d\udc6f\ud84d\udc72\ud84d\udce5\ud84d\udd19" +
-            "\ud84d\udd30\ud84d\udd5a\ud84d\udd67\ud84d\udd95" +
-            "\ud84d\udd99\ud84d\udd9c\ud84d\uddcd\ud84d\uddce" +
-            "\ud84d\uddcf\ud84d\uddf3\ud84d\ude00\ud84d\ude1a" +
-            "\ud84d\ude3c\ud84d\ude40\ud84d\ude59\ud84d\ude5f" +
-            "\ud84d\ude77\ud84d\udea6\ud84d\udead\ud84d\udeba" +
-            "\ud84d\udedf\ud84d\udeee\ud84d\udf03\ud84d\udf16" +
-            "\ud84d\udf20\ud84d\udf2d\ud84d\udf2f\ud84d\udf3f" +
-            "\ud84d\udf66\ud84d\udf81\ud84d\udfa2\ud84d\udfbc" +
-            "\ud84d\udfc2\ud84d\udfd5\ud84d\udfd6\ud84d\udfd7" +
-            "\ud84e\udc3a\ud84e\uddc2\ud84e\udea7\ud84e\udedb" +
-            "\ud84e\udeee\ud84e\udefa\ud84e\udf5a\ud84f\udc63" +
-            "\ud84f\udc99\ud84f\udc9a\ud84f\udc9b\ud84f\udcb5" +
-            "\ud84f\udcb7\ud84f\udcc7\ud84f\udcc8\ud84f\udcc9" +
-            "\ud84f\udcfc\ud84f\udcfd\ud84f\udcfe\ud84f\udcff" +
-            "\ud84f\udd40\ud84f\udd5b\ud84f\udd7e\ud84f\udd8f" +
-            "\ud84f\uddb6\ud84f\uddb7\ud84f\uddb8\ud84f\uddb9" +
-            "\ud84f\uddba\ud84f\uddbb\ud84f\uddbc\ud84f\uddbd" +
-            "\ud84f\udde3\ud84f\uddf8\ud84f\ude11\ud84f\ude2c" +
-            "\ud84f\ude2d\ud84f\ude2e\ud84f\ude2f\ud84f\ude30" +
-            "\ud84f\ude31\ud84f\ude39\ud84f\ude88\ud84f\ude89" +
-            "\ud84f\ude8a\ud84f\ude8b\ud84f\udeb9\ud84f\udebf" +
-            "\ud84f\uded7\ud84f\udef7\ud84f\udef8\ud84f\udef9" +
-            "\ud84f\udefa\ud84f\udefb\ud84f\udefc\ud84f\udf35" +
-            "\ud84f\udf41\ud84f\udf4a\ud84f\udf7f\ud84f\udf80" +
-            "\ud84f\udf81\ud84f\udf82\ud84f\udf8f\ud84f\udfb4" +
-            "\ud84f\udfb7\ud84f\udfc0\ud84f\udfc5\ud84f\udfeb" +
-            "\ud84f\udfec\ud84f\udfed\ud84f\udfee\ud84f\udfef" +
-            "\ud84f\udff0\ud850\udc11\ud850\udc39\ud850\udc3a" +
-            "\ud850\udc3b\ud850\udc3c\ud850\udc3d\ud850\udc57" +
-            "\ud850\udc85\ud850\udc8b\ud850\udc8c\ud850\udc8d" +
-            "\ud850\udc91\ud850\udcc9\ud850\udce1\ud850\udd04" +
-            "\ud850\udd0f\ud850\udd19\ud850\udd3f\ud850\udd40" +
-            "\ud850\udd44\ud850\udd4e\ud850\udd55\ud850\udd56" +
-            "\ud850\udd57\ud850\udd5c\ud850\udd5f\ud850\udd77" +
-            "\ud850\udd7a\ud850\udda3\ud850\udda4\ud850\udda5" +
-            "\ud850\uddac\ud850\uddb5\ud850\uddcd\ud850\udde2" +
-            "\ud850\uddfc\ud850\ude1b\ud850\ude4b\ud850\ude56" +
-            "\ud850\ude59\ud850\ude76\ud850\ude77\ud850\ude78" +
-            "\ud850\ude84\ud850\ude93\ud850\ude95\ud850\udea5" +
-            "\ud850\udec1\ud850\udec9\ud850\udeca\ud850\udeee" +
-            "\ud850\udefa\ud850\udf0d\ud850\udf1a\ud850\udf34" +
-            "\ud850\udf48\ud850\udf62\ud850\udf63\ud850\udf64" +
-            "\ud850\udf65\ud850\udf8c\ud850\udf96\ud850\udf9c" +
-            "\ud850\udfbd\ud850\udfc1\ud850\udfe9\ud850\udfea" +
-            "\ud850\udff2\ud850\udff8\ud851\udc04\ud851\udc35" +
-            "\ud851\udc36\ud851\udc5a\ud851\udc5b\ud851\udc73" +
-            "\ud851\udc87\ud851\udc88\ud851\udcb9\ud851\udcbc" +
-            "\ud851\udcce\ud851\udcd3\ud851\udcd6\ud851\udd05" +
-            "\ud851\udd21\ud851\udd78\ud851\uddc8\ud851\ude18" +
-            "\ud851\ude2a\ud851\ude65\ud851\ude74\ud851\ude97" +
-            "\ud851\uded4\ud851\udf06\ud851\udf25\ud851\udf2f" +
-            "\ud851\udf8f\ud851\udfe0\ud852\udc12\ud852\udc23" +
-            "\ud852\udc82\ud852\udce9\ud852\udcf0\ud852\udcf1" +
-            "\ud852\udcf2\ud852\udcf3\ud852\udcfb\ud852\udcff" +
-            "\ud852\udd00\ud852\udd01\ud852\udd0c\ud852\udd16" +
-            "\ud852\udd17\ud852\udd19\ud852\udd2f\ud852\udd33" +
-            "\ud852\udd34\ud852\udd3e\ud852\udd3f\ud852\udd40" +
-            "\ud852\udd41\ud852\udd42\ud852\udd43\ud852\udd62" +
-            "\ud852\udd63\ud852\udd74\ud852\udd75\ud852\udd76" +
-            "\ud852\udd7b\ud852\udd7f\ud852\udd82\ud852\udd88" +
-            "\ud852\udd89\ud852\udd8a\ud852\udd8b\ud852\udd8c" +
-            "\ud852\udd8d\ud852\udd8e\ud852\udd8f\ud852\udd94" +
-            "\ud852\udda4\ud852\udda7\ud852\udda9\ud852\uddab" +
-            "\ud852\uddac\ud852\uddad\ud852\uddb7\ud852\uddb8" +
-            "\ud852\uddb9\ud852\uddba\ud852\uddbb\ud852\uddc5" +
-            "\ud852\uddd0\ud852\uddda\ud852\uddde\ud852\udddf" +
-            "\ud852\udde3\ud852\udde5\ud852\uddec\ud852\udded" +
-            "\ud852\uddf6\ud852\uddf7\ud852\uddf8\ud852\uddf9" +
-            "\ud852\uddfb\ud852\ude0e\ud852\ude12\ud852\ude13" +
-            "\ud852\ude15\ud852\ude21\ud852\ude22\ud852\ude23" +
-            "\ud852\ude24\ud852\ude25\ud852\ude26\ud852\ude27" +
-            "\ud852\ude28\ud852\ude29\ud852\ude2a\ud852\ude3e" +
-            "\ud852\ude42\ud852\ude45\ud852\ude4a\ud852\ude4e" +
-            "\ud852\ude4f\ud852\ude50\ud852\ude51\ud852\ude5d" +
-            "\ud852\ude65\ud852\ude66\ud852\ude67\ud852\ude71" +
-            "\ud852\ude77\ud852\ude78\ud852\ude79\ud852\ude7a" +
-            "\ud852\ude8c\ud852\ude93\ud852\ude94\ud852\ude95" +
-            "\ud852\ude96\ud852\udea4\ud852\udea5\ud852\udea6" +
-            "\ud852\udea7\ud852\udeb1\ud852\udeb2\ud852\udeb3" +
-            "\ud852\udeba\ud852\udebb\ud852\udebc\ud852\udec0" +
-            "\ud852\udec7\ud852\udeca\ud852\uded1\ud852\udedf" +
-            "\ud852\udee2\ud852\udee9\ud852\udf6e\ud852\udff5" +
-            "\ud853\udc09\ud853\udc9e\ud853\udc9f\ud853\udcc9" +
-            "\ud853\udcd9\ud853\udd06\ud853\udd13\ud853\uddb8" +
-            "\ud853\uddea\ud853\uddeb\ud853\ude3b\ud853\ude50" +
-            "\ud853\udea5\ud853\udea7\ud853\udf0e\ud853\udf5c" +
-            "\ud853\udf82\ud853\udf86\ud853\udf97\ud853\udf9a" +
-            "\ud853\udfa9\ud853\udfb8\ud853\udfc2\ud854\udc2c" +
-            "\ud854\udc52\ud854\udc9d\ud854\udd2b\ud854\udd48" +
-            "\ud854\udd7d\ud854\udd7e\ud854\uddcd\ud854\udde3" +
-            "\ud854\udde6\ud854\udde7\ud854\ude20\ud854\ude21" +
-            "\ud854\ude50\ud854\ude99\ud854\udec7\ud854\uded8" +
-            "\ud854\udf0e\ud854\udf11\ud854\udf13\ud855\udc19" +
-            "\ud855\udc25\ud855\udc2f\ud855\udc30\ud855\udc46" +
-            "\ud855\udc6c\ud855\udc6e\ud855\udd31\ud855\udd35" +
-            "\ud855\udd3f\ud855\udd5b\ud855\udd5c\ud855\udd5d" +
-            "\ud855\udd5e\ud855\udd62\ud855\udd65\ud855\udd66" +
-            "\ud855\udd81\ud855\udd84\ud855\udd8f\ud855\uddb9" +
-            "\ud855\uddd5\ud855\udddb\ud855\udde0\ud855\ude05" +
-            "\ud855\ude35\ud855\ude51\ud855\ude83\ud855\ude95" +
-            "\ud855\udee3\ud855\udef6\ud855\udf06\ud855\udf1d" +
-            "\ud855\udf25\ud855\udf3d\ud855\udf72\ud855\udfc7" +
-            "\ud855\udfdf\ud855\udfe0\ud855\udfe1\ud856\udc57" +
-            "\ud856\udc5d\ud856\udc72\ud856\udcc8\ud856\udce1" +
-            "\ud856\udd03\ud856\udd46\ud856\udd56\ud856\uddac" +
-            "\ud856\uddcc\ud856\ude95\ud856\ude9c\ud856\udeae" +
-            "\ud856\udeaf\ud856\udee9\ud856\udf74\ud856\udf89" +
-            "\ud856\udfb3\ud856\udfb4\ud856\udfc6\ud856\udfe4" +
-            "\ud856\udfe8\ud857\udc01\ud857\udc06\ud857\udc21" +
-            "\ud857\udc4a\ud857\udc65\ud857\udc91\ud857\udca4" +
-            "\ud857\udcc0\ud857\udcc1\ud857\udcfe\ud857\udd20" +
-            "\ud857\udd30\ud857\udd43\ud857\ude0e\ud857\ude49" +
-            "\ud857\ude81\ud857\ude82\ud857\ude83\ud857\udea6" +
-            "\ud857\udebc\ud857\uded7\ud857\uded8\ud857\udf1a" +
-            "\ud857\udf4b\ud857\udfe1\ud857\udfe2\ud858\udc29" +
-            "\ud858\udc48\ud858\udc64\ud858\udc83\ud858\udc97" +
-            "\ud858\udca4\ud858\udca5\ud858\udd02\ud858\udd21" +
-            "\ud858\udd59\ud858\udd5a\ud858\udd5b\ud858\udd5c" +
-            "\ud858\uddad\ud858\uddae\ud858\uddb2\ud858\udddd" +
-            "\ud858\ude58\ud858\ude61\ud858\ude6a\ud858\ude6b" +
-            "\ud858\uded0\ud858\udf35\ud858\udf4b\ud858\udf4c" +
-            "\ud858\udf51\ud858\udfbe\ud858\udff5\ud858\udff8" +
-            "\ud859\udc02\ud859\udc10\ud859\udc11\ud859\udc12" +
-            "\ud859\udc4a\ud859\udc69\ud859\udc84\ud859\udc88" +
-            "\ud859\udc89\ud859\udc8d\ud859\udc98\ud859\udd12" +
-            "\ud859\udd72\ud859\udda0\ud859\uddad\ud859\uddbf" +
-            "\ud859\ude12\ud859\ude26\ud859\udeaf\ud859\udeb1" +
-            "\ud859\udeb5\ud859\udeda\ud859\udee8\ud859\udefc" +
-            "\ud859\udf16\ud859\udf41\ud859\udf99\ud859\udfb3" +
-            "\ud859\udfb4\ud859\udfcc\ud85a\udc1c\ud85a\udc46" +
-            "\ud85a\udc5e\ud85a\udc6e\ud85a\udc88\ud85a\udc8a" +
-            "\ud85a\udc93\ud85a\udcc7\ud85a\udd0e\ud85a\udd11" +
-            "\ud85a\udd26\ud85a\udd39\ud85a\udd51\ud85a\udda8" +
-            "\ud85a\uddb5\ud85a\uddf2\ud85a\uddfa\ud85a\ude2d" +
-            "\ud85a\ude2e\ud85a\ude34\ud85a\ude42\ud85a\ude51" +
-            "\ud85a\ude52\ud85a\udf05\ud85a\udf0a\ud85a\udf13" +
-            "\ud85a\udf15\ud85a\udf28\ud85a\udf50\ud85a\udf51" +
-            "\ud85a\udf52\ud85a\udf53\ud85a\udf5b\ud85a\udf75" +
-            "\ud85a\udf82\ud85a\udf96\ud85a\udf97\ud85a\udf9d" +
-            "\ud85a\udfb3\ud85a\udfc0\ud85a\udff7\ud85b\udc21" +
-            "\ud85b\udc40\ud85b\udc7e\ud85b\udc7f\ud85b\udc80" +
-            "\ud85b\udc81\ud85b\udc82\ud85b\udca4\ud85b\udcb7" +
-            "\ud85b\udcb8\ud85b\udcbd\ud85b\udcc0\ud85b\udcc3" +
-            "\ud85b\udcd1\ud85b\udd22\ud85b\udd23\ud85b\udd24" +
-            "\ud85b\udd25\ud85b\udd26\ud85b\udd27\ud85b\udd28" +
-            "\ud85b\udd29\ud85b\udd2a\ud85b\udd51\ud85b\udd74" +
-            "\ud85b\udda0\ud85b\udda1\ud85b\udda2\ud85b\udda3" +
-            "\ud85b\udda4\ud85b\udda5\ud85b\udda6\ud85b\udda7" +
-            "\ud85b\uddae\ud85b\udddc\ud85b\uddea\ud85b\uddeb" +
-            "\ud85b\uddf0\ud85b\ude00\ud85b\ude05\ud85b\ude07" +
-            "\ud85b\ude12\ud85b\ude42\ud85b\ude43\ud85b\ude44" +
-            "\ud85b\ude45\ud85b\ude6e\ud85b\ude72\ud85b\ude77" +
-            "\ud85b\ude84\ud85b\ude99\ud85b\uded0\ud85b\uded1" +
-            "\ud85b\uded2\ud85b\uded3\ud85b\uded4\ud85b\uded5" +
-            "\ud85b\uded6\ud85b\uded7\ud85b\udf26\ud85b\udf73" +
-            "\ud85b\udf74\ud85b\udf9f\ud85b\udfa1\ud85b\udfbe" +
-            "\ud85b\udfde\ud85b\udfdf\ud85c\udc0e\ud85c\udc4b" +
-            "\ud85c\udc52\ud85c\udc53\ud85c\udc88\ud85c\udcad" +
-            "\ud85c\udcae\ud85c\udcaf\ud85c\udccd\ud85c\udcf8" +
-            "\ud85c\udd09\ud85c\udd0c\ud85c\udd0d\ud85c\udd26" +
-            "\ud85c\udd27\ud85c\udd64\ud85c\udd65\ud85c\udd75" +
-            "\ud85c\uddcd\ud85c\ude1b\ud85c\ude80\ud85c\ude85" +
-            "\ud85c\ude8b\ud85c\udeb2\ud85c\udeb6\ud85c\udee6" +
-            "\ud85c\udf9a\ud85d\udc22\ud85d\udc50\ud85d\udc84" +
-            "\ud85d\udc86\ud85d\udd74\ud85d\udda3\ud85d\udde0" +
-            "\ud85d\udde4\ud85d\uddfd\ud85d\uddfe\ud85d\ude07" +
-            "\ud85d\ude0c\ud85d\ude32\ud85d\ude39\ud85d\ude55" +
-            "\ud85d\ude56\ud85d\ude57\ud85d\ude94\ud85d\udf0f" +
-            "\ud85d\udf35\ud85d\udf36\ud85d\udf41\ud85d\udf5e" +
-            "\ud85d\udf84\ud85d\udf85\ud85d\udfcc\ud85e\udc58" +
-            "\ud85e\udc70\ud85e\udc9d\ud85e\udcb2\ud85e\udcc8" +
-            "\ud85e\udd24\ud85e\udd67\ud85e\udd7a\ud85e\udda0" +
-            "\ud85e\udddd\ud85e\uddfd\ud85e\ude0a\ud85e\ude0e" +
-            "\ud85e\ude3e\ud85e\ude53\ud85e\ude59\ud85e\ude79" +
-            "\ud85e\ude84\ud85e\udebd\ud85e\udebe\ud85e\udef4" +
-            "\ud85e\udf06\ud85e\udf0b\ud85e\udf18\ud85e\udf38" +
-            "\ud85e\udf39\ud85e\udf3a\ud85e\udf48\ud85e\udff4" +
-            "\ud85f\udc12\ud85f\udd2f\ud85f\udd53\ud85f\udd54" +
-            "\ud85f\udd66\ud85f\udd73\ud85f\udd84\ud85f\udd8f" +
-            "\ud85f\udd98\ud85f\uddbd\ud85f\udddc\ud85f\ude4d" +
-            "\ud85f\ude4f\ud85f\udff9\ud860\udc02\ud860\udc09" +
-            "\ud860\udc1e\ud860\udc23\ud860\udc24\ud860\udc48" +
-            "\ud860\udc83\ud860\udc90\ud860\udcbd\ud860\udcbe" +
-            "\ud860\udce8\ud860\udce9\ud860\udcf4\ud860\udd2e" +
-            "\ud860\udd4f\ud860\udd5d\ud860\udd6f\ud860\udd89" +
-            "\ud860\uddaf\ud860\uddbc\ud860\ude07\ud860\ude18" +
-            "\ud860\ude1a\ud860\ude56\ud860\ude7c\ud860\ude9b" +
-            "\ud860\udecd\ud860\udee2\ud860\udf06\ud860\udf18" +
-            "\ud860\udf2f\ud860\udf3a\ud860\udf65\ud860\udf6d" +
-            "\ud860\udf7d\ud860\udf8a\ud861\udc12\ud861\udc68" +
-            "\ud861\udc6c\ud861\udc73\ud861\udc82\ud861\udd01" +
-            "\ud861\udd3c\ud861\udd3d\ud861\udd6c\ud861\udde8" +
-            "\ud861\uddf4\ud861\ude00\ud861\ude0b\ud861\ude25" +
-            "\ud861\ude3b\ud861\udeaa\ud861\udeab\ud861\udebc" +
-            "\ud861\uded8\ud861\udee6\ud861\udf0f\ud861\udf13" +
-            "\ud862\udc04\ud862\udc2b\ud862\udd33\ud862\udd48" +
-            "\ud862\udd49\ud862\udd56\ud862\udd64\ud862\udd68" +
-            "\ud862\udd6c\ud862\udd7e\ud862\udd89\ud862\udda8" +
-            "\ud862\uddaa\ud862\uddab\ud862\uddb8\ud862\uddbc" +
-            "\ud862\uddc0\ud862\udddc\ud862\uddde\ud862\udde1" +
-            "\ud862\udde3\ud862\udde4\ud862\udde7\ud862\udde8" +
-            "\ud862\uddf9\ud862\uddfa\ud862\uddfb\ud862\uddfc" +
-            "\ud862\ude0f\ud862\ude16\ud862\ude25\ud862\ude29" +
-            "\ud862\ude32\ud862\ude36\ud862\ude44\ud862\ude45" +
-            "\ud862\ude46\ud862\ude47\ud862\ude48\ud862\ude49" +
-            "\ud862\ude4a\ud862\ude4b\ud862\ude59\ud862\ude5a" +
-            "\ud862\ude81\ud862\ude82\ud862\ude83\ud862\ude9a" +
-            "\ud862\ude9b\ud862\ude9c\ud862\udec0\ud862\udec6" +
-            "\ud862\udecb\ud862\udecc\ud862\udece\ud862\udede" +
-            "\ud862\udedf\ud862\udee0\ud862\udee1\ud862\udee2" +
-            "\ud862\udee3\ud862\udee5\ud862\udeea\ud862\udefc" +
-            "\ud862\udf0c\ud862\udf13\ud862\udf21\ud862\udf22" +
-            "\ud862\udf2b\ud862\udf2c\ud862\udf2d\ud862\udf2f" +
-            "\ud862\udf46\ud862\udf4c\ud862\udf4e\ud862\udf50" +
-            "\ud862\udf63\ud862\udf64\ud862\udf65\ud862\udf66" +
-            "\ud862\udf6c\ud862\udf8f\ud862\udf99\ud862\udf9c" +
-            "\ud862\udf9d\ud862\udfc2\ud862\udfc5\ud862\udfd4" +
-            "\ud862\udfd7\ud862\udfd9\ud862\udfda\ud862\udfe7" +
-            "\ud862\udfe8\ud862\udfe9\ud862\udfea\ud862\udfeb" +
-            "\ud862\udfec\ud862\udff5\ud862\udfff\ud863\udc03" +
-            "\ud863\udc09\ud863\udc1c\ud863\udc1d\ud863\udc23" +
-            "\ud863\udc26\ud863\udc2b\ud863\udc30\ud863\udc39" +
-            "\ud863\udc3b\ud863\udcca\ud863\udccd\ud863\udcd2" +
-            "\ud863\udd34\ud863\udd99\ud863\uddb9\ud863\ude0f" +
-            "\ud863\ude36\ud863\ude39\ud863\ude65\ud863\ude66" +
-            "\ud863\ude97\ud863\udeac\ud863\udeb2\ud863\udeb3" +
-            "\ud863\uded9\ud863\udee7\ud863\udfc5\ud864\udc88" +
-            "\ud864\udc8b\ud864\udc93\ud864\udcaf\ud864\udcb0" +
-            "\ud864\udcb1\ud864\udcc0\ud864\udce4\ud864\udce5" +
-            "\ud864\udcec\ud864\udced\ud864\udd0d\ud864\udd10" +
-            "\ud864\udd3c\ud864\udd4d\ud864\udd5b\ud864\udd5e" +
-            "\ud864\udd70\ud864\udd9c\ud864\udda8\ud864\uddd5" +
-            "\ud864\uddeb\ud865\udc1d\ud865\udc20\ud865\udc33" +
-            "\ud865\udc3f\ud865\udc48\ud865\udcd0\ud865\udcd9" +
-            "\ud865\udcda\ud865\udce5\ud865\udce7\ud865\udd9e" +
-            "\ud865\uddb0\ud865\uddb8\ud865\uddd7\ud865\udde9" +
-            "\ud865\uddf4\ud865\udf20\ud865\udf32\ud865\udfd4" +
-            "\ud866\udc10\ud866\udc57\ud866\udca4\ud866\udcd1" +
-            "\ud866\udcea\ud866\udcf1\ud866\udd03\ud866\udd05" +
-            "\ud866\udd2f\ud866\udd47\ud866\udd48\ud866\udd49" +
-            "\ud866\udd5d\ud866\udd6a\ud866\udd9d\ud866\uddc3" +
-            "\ud866\uddc9\ud866\ude28\ud866\ude4d\ud866\udf05" +
-            "\ud866\udf0e\ud866\udfd5\ud867\udc73\ud867\udcad" +
-            "\ud867\udd3e\ud867\udd5a\ud867\udd7c\ud867\udd98" +
-            "\ud867\udd9b\ud867\uddf6\ud867\ude06\ud867\ude2d" +
-            "\ud867\ude68\ud867\udeac\ud867\udec3\ud867\udef8" +
-            "\ud867\udf23\ud867\udf30\ud867\udfb7\ud867\udfde" +
-            "\ud868\udc14\ud868\udc87\ud868\udcb9\ud868\udce1" +
-            "\ud868\udced\ud868\udcf3\ud868\udcf8\ud868\udcfe" +
-            "\ud868\udd07\ud868\udd23\ud868\udd33\ud868\udd34" +
-            "\ud868\udd50\ud868\udd92\ud868\udd93\ud868\uddab" +
-            "\ud868\uddb4\ud868\udddf\ud868\uddf5\ud868\ude20" +
-            "\ud868\ude33\ud868\ude93\ud868\ude9f\ud868\udeb2" +
-            "\ud868\udeb4\ud868\udeb6\ud868\udeba\ud868\udebd" +
-            "\ud868\udedf\ud868\udeff\ud868\udfa9\ud869\udc34" +
-            "\ud869\udc5b\ud869\uddc6\ud869\uddcb\ud869\ude01" +
-            "\ud869\ude32\ud869\ude4a\ud869\ude5b\ud869\udea9" +
-            "\ud87e\udc25\ud87e\udc3b\ud87e\udc40\ud87e\udc78" +
-            "\ud87e\udc94\ud87e\udca6\ud87e\udccd\ud87e\udd94" +
-            "\ud87e\uddb2\ud87e\uddbc\ud87e\uddd4";
-
-        String nativeSupplementary =
-            "\u9C71\u9375\u9376\u9548\u8EC6\u8BC5"+
-            "\u8BFA\uC87C\u9AB4\u884E\u884B\uC87A"+
-            "\u8848\u8847\uA0F6\u8845\u8853\uFCAD"+
-            "\u8AAD\u9272\uFC47\u94DF\u9FD1\uFBCB"+
-            "\u927D\u98A4\u94E7\u90CB\u927B\u94D8"+
-            "\uFC5F\uFA54\u9AB5\u96DA\u9279\uFA74"+
-            "\u9275\u8DFB\u8A49\u92DF\u9B7C\uFA63"+
-            "\uFA60\u926D\uFA62\u9AB6\u976B\uFD6A"+
-            "\uFD54\u9273\u97D8\u9FBB\u9342\u9276"+
-            "\uFA65\u926C\uFA6E\u9EE0\u92C0\u92BF"+
-            "\u92BE\u9ABA\u8AB3\u9775\uFA40\uFA76"+
-            "\uFBD0\uFA7B\uFE6D\u9BB3\u89CC\u9ABE"+
-            "\uFA42\u92BC\u945C\u9BB5\u9ABF\u98A7"+
-            "\u97A4\u90FD\uFC7B\u9AC0\u92C3\u8AAA"+
-            "\u9BD0\u9550\u92C6\u98A6\u9546\uFD63"+
-            "\uFAC2\u9EC3\u89B2\u9C66\u9053\u97C1"+
-            "\u9AC4\u9AC5\u8EEF\uFAE9\u9262\u8AF7"+
-            "\u9AC6\u92E1\u9AC9\uFAC6\u97A5\u9ACB"+
-            "\uFA72\u8A5E\u94E0\u92CC\u8AE5\uFE5C"+
-            "\u9ACC\u9DF9\u8A43\u8AA6\u9ACD\u9ACE"+
-            "\uFAEE\u9BCC\u9ACF\u9AD1\u9DFA\u9D7C"+
-            "\u9AD3\u97A6\u995F\uFBF6\u9FC5\u8A59"+
-            "\u8B6B\u9AD4\u9AD5\u97A2\u8A44\u9F4A"+
-            "\u90A1\uFDA4\u8A64\u8AF2\u8AF8\u9DD8"+
-            "\u94D6\uFAFE\uFBA7\u9AD6\u9F4D\uFAF6"+
-            "\u8A57\u8B43\u8B44\u8AB6\u8AC0\u9E54"+
-            "\u9AD7\u9AD8\u9ADC\u8ACA\u9EA8\u9263"+
-            "\u9ADD\u8B65\u8B6F\u8B7E\u8F43\u92D0"+
-            "\u8AF4\u9DBE\u9AE1\uFCDE\u9DFD\u8B66"+
-            "\u8B70\u8B75\u8AE4\u8BA4\u8AED\u8A5D"+
-            "\u8B48\u9DED\u9E40\u8AEF\u8AF6\u9E76"+
-            "\u9EE3\u9ADE\u8DFE\uFAFC\u9CB1\u9E77"+
-            "\u8B64\u8B67\u974B\u9653\u9AE0\u8B4A"+
-            "\u8AF1\u8AD7\uA0AB\u8AB5\u8A5F\u8AEE"+
-            "\u9ADF\u8AFE\u8A58\u8BA3\u8BA7\u9AE3"+
-            "\u9261\u9DD7\u9E7D\u9EA7\u9EAB\u9042"+
-            "\u8B79\u8B7A\u9AE6\u9AE5\u8A7E\u9E44"+
-            "\u9AE7\u8A7C\u8B71\u9AE9\u9AEA\u9AEB"+
-            "\u8ABD\uFB4E\u9AED\u8AF9\u9E63\u8B49"+
-            "\u8ACE\u8B6E\u8AE8\u9AEE\u92CE\u8A5A"+
-            "\u8B7B\u8B7C\u9AEF\u9AF0\u8AFA\u8941"+
-            "\u8B72\u8AF3\u8BA8\u9EAE\u9E72\uFB73"+
-            "\uFB5F\u90BA\u91FE\u9EF6\u97ED\u9AF3"+
-            "\uA0EE\u967C\u9345\u986E\uFA56\u9AF5"+
-            "\uFC4B\u9AF4\uFEDE\uFCB7\u97F1\u97C7"+
-            "\u9CCB\u9240\u9CE8\u91FD\u974E\uFB68"+
-            "\u976C\u8CC2\u97E8\uFB6A\u8B74\u8EE7"+
-            "\uFDC8\u9241\u96A1\u8EF3\u9AF7\u8FA6"+
-            "\uFAD6\u9CC7\uFAD7\u9AF8\uFBA1\u8EC5"+
-            "\uFBA4\uFBC2\u9AC1\u91FA\uFEDB\u97AB"+
-            "\u9147\uFBB1\u8FEA\u94D2\uFE61\uFACE"+
-            "\u92ED\u91F3\u93C6\u935A\uFAFB\u92EF"+
-            "\uFAC8\u9847\u9366\u9855\u96E6\u9F43"+
-            "\u9FAA\u94DA\u92EE\uFCAF\uFBFB\u8EF9"+
-            "\u91F6\u9364\u94F5\u9CB6\uFBAD\u984E"+
-            "\u8F44\u96FD\u9AF9\u9AFA\u9769\u95D4"+
-            "\u984B\uFBAA\u987C\u91EA\u9DAF\u9DC5"+
-            "\u91F1\u8EB1\u97A9\uFBAC\uFCB8\u9CB9"+
-            "\uFBB0\uFCD2\u93CB\u9AFD\u91F4\u8BAC"+
-            "\uA055\u9574\u95BE\u97AD\u8EE9\u92F8"+
-            "\u97BE\u916C\u94AA\uFC63\u9DC6\u97B5"+
-            "\u92B8\u91EF\uFEA6\u9760\u9358\u9576"+
-            "\u8FAC\u91EC\u97B4\u91F7\u974A\uFB49"+
-            "\u9578\u93BC\u91D6\u9355\u9356\u9851"+
-            "\u8FF8\uFBC0\u93F2\u90D0\u9C44\u9255"+
-            "\u9363\u91A5\uA0ED\uFD6B\u9AFE\u9351"+
-            "\u8C57\uFA78\uFEA8\u9350\uFA4C\u92F7"+
-            "\u9B40\uFBCE\u9B41\uFEAD\uFBD5\u8BC2"+
-            "\u9A7C\u9B42\u9B43\u9E79\uFBD9\u9B44"+
-            "\uA0A7\u9BF3\u8C79\u935E\u89CB\u9F53"+
-            "\u93D7\uFBE1\uFED0\uFBE2\uFCE3\u9074"+
-            "\uFBE6\u9BB7\u9B45\u9B47\u9F50\u9B48"+
-            "\uFC5B\u98A9\u9CFD\u884C\u9B4B\uFBEC"+
-            "\u8C69\u9BA8\u8AD5\uFA73\uFD59\u91A2"+
-            "\uFBED\u9CA9\u8AA8\u9BC3\u8AE1\u9B4E"+
-            "\u95D0\u905F\u97EE\uFC4E\u9B4F\u9B50"+
-            "\u9EC6\uFC50\uFD73\uFDA7\u9DA2\uFA58"+
-            "\uFA5E\uA059\uFA75\uFBBE\u9CA2\u9370"+
-            "\u9371\u9377\uFEEF\u936D\uFC5D\u90B8"+
-            "\u8AFC\uFB41\u9E6B\u94E3\u8EE2\u8C7D"+
-            "\u8ED7\u9C4D\u96A3\u9B51\u8AC3\u96AA"+
-            "\uFC68\u8B6D\uFD67\u8AE9\uFCA1\u936C"+
-            "\u9B52\uFE70\uFCA8\uFCE9\u9CB4\u8AEA"+
-            "\u9B53\u9B55\u96AB\uFCA7\u9B56\u8ABC"+
-            "\u8ACB\u9B57\u89CD\u9B59\u9B5B\u93A5"+
-            "\u9B5D\u9E4F\u93A3\u8A7B\u8B42\u9750"+
-            "\u8FB3\u8A50\u9B60\u8B45\u8B46\u9DFE"+
-            "\u9B62\u937B\u93B1\u8A60\u8AD8\u9B63"+
-            "\u8A69\u8A47\u8ACC\u937C\u9B65\u9B66"+
-            "\u8A72\u8A7A\u93AF\u8AB0\u9B68\u9EA3"+
-            "\uFAEC\u8B77\u9B67\u8B59\uFCB1\uFCBB"+
-            "\u9B69\u93A8\u8AE0\u9E51\u8F5F\u9B6A"+
-            "\u9B6B\u97EC\u9B6C\uFE4E\uFDC2\u9B6D"+
-            "\u9167\uFCCC\u93B6\u90E4\u90E5\u9EF2"+
-            "\u93CA\u8BBC\u8F46\u93CF\uFCDB\uFCDC"+
-            "\u93C0\uFCE6\u96E7\uFCD8\uFCD9\uFDA6"+
-            "\u93CE\u95F1\u9CE9\uFCE4\u94AF\uFA77"+
-            "\u93CC\u905A\u8C54\u93BF\uFB51\u93B9"+
-            "\uFED7\u93B7\u93D9\u93BB\u93DA\u98A3"+
-            "\u90D1\u9B6E\uFA70\u9BEB\u9B6F\uFCFC"+
-            "\u8B40\uA07B\u8CA1\u97F7\u93E2\uFCD6"+
-            "\u9559\u93A6\uFD40\u935F\u97F2\u9C76"+
-            "\u8EF8\u8F47\u9B74\u92B4\u91ED\u96D2"+
-            "\uFD46\u8F4F\u9549\u9B75\uFA5C\u9B79"+
-            "\uFD4B\u96D3\uFD58\u945F\uA0F5\u9243"+
-            "\u97FA\u9DD9\u97F4\u924D\uFD5B\u9B7A"+
-            "\u9ED5\uFAAE\u9CC9\u9258\u8EC8\u94B4"+
-            "\u93E1\u93DF\uFCF0\u93EC\u97F6\u96CF"+
-            "\u93DE\u8ACF\u9BA2\uFD69\u9352\u98A2"+
-            "\uFD6E\u8CA4\uFA7C\u93FA\u907C\u8F67"+
-            "\u9DB7\uA0E9\uFA4E\uFDA1\u9E74\u9FBF"+
-            "\u9ECB\u9BB9\u9DD4\u97B9\u8EF1\u957B"+
-            "\u9ED2\u9753\u96A4\u8FBE\u94D9\u9058"+
-            "\uFD79\uFD7B\u8EDA\u8EFA\u9BA5\u9ED9"+
-            "\u97D4\u90BB\uFDBC\uFDC6\u9248\u92B5"+
-            "\u9DC1\u92B9\u92A6\u8F4B\u9BA6\u92B6"+
-            "\u8E40\u9ED8\u945E\u985F\u94CE\u924A"+
-            "\uFD70\u9467\u8DEC\u9BD8\u9448\uFAC1"+
-            "\u9CF7\uFDBE\u8FDA\uFDD9\uFC7E\u93F9"+
-            "\uFA43\uFAEB\uFAC3\u97D3\u95F9\u9C48"+
-            "\uFDD8\uA0D8\uFDD7\uFB4A\u9BAF\u944B"+
-            "\uFDC9\u8EAC\uFDB2\u925A\uFCBD\u92D9"+
-            "\uFDD5\u92DD\u9259\u96BA\u925B\u9BAB"+
-            "\uFDDA\uFDDE\uFDD3\u8C46\uFDD6\uFDDC"+
-            "\uFDDD\u90FE\uFEA1\u8BAD\u9CD8\u9E6D"+
-            "\uFD7C\uFB61\u96F8\u96F0\uFCF4\uFE60"+
-            "\u9852\u964F\u916E\u986D\u9864\u9453"+
-            "\uFDEC\uFB78\u95BA\u985D\u92F9\u985A"+
-            "\uFDF6\u93D0\u9862\u9BAD\u974F\u9BAE"+
-            "\u9452\u9BB0\u91D2\u97EA\uFB6B\u91B1"+
-            "\uFDF3\u92CB\u9BB1\uFCEC\u986B\u9751"+
-            "\u9871\u95EF\u9EF3\u91E8\u9BBA\uFB4C"+
-            "\u926A\uFDF8\u9861\u91E7\u93ED\u9744"+
-            "\u91E1\uFBF5\u9869\u8A62\u9BBB\u8CA8"+
-            "\u9C55\u8E77\u8AB2\u9EBC\u93E6\u93A2"+
-            "\u9BBD\u94B3\u937D\u9E66\u9459\u9BBF"+
-            "\u9458\u9EA5\u9BC7\uFE54\u8E74\u8BD6"+
-            "\u94B6\uFD74\u98C0\u94A5\u9BC8\u95ED"+
-            "\uFD7E\uFBEB\uFD7D\u976F\u9461\u9FC1"+
-            "\u95D7\uFA52\u9C58\u9F68\u9BE7\uFCCE"+
-            "\u96E8\uFA49\u97A1\u954D\u9EF8\uFE49"+
-            "\u91CE\u9771\u8CCF\uFDB1\uFC6E\u9CF2"+
-            "\u93B8\u9043\u9759\u94D7\uFE66\u947D"+
-            "\uFC6F\u9246\uFA6D\u8EF7\uFBB7\u947C"+
-            "\u92CD\u97B2\uFE65\u967E\u9758\u9B77"+
-            "\u91CF\u94A4\u9CAD\u8BAB\u96D5\uFCB3"+
-            "\u93AE\u976D\u9446\u95F7\u9C46\u955B"+
-            "\u91D1\u94F4\uFE67\u92A5\uFEDF\u8CAB"+
-            "\u9BC9\uFCED\uFDFA\uFCC8\uFE62\u91FC"+
-            "\uFE6B\uFDF9\uFCC7\u914E\u9CB8\u9767"+
-            "\u95EE\u9BB2\u9460\u94A2\u9875\u97AC"+
-            "\u91D3\u987B\u8EEB\u976A\u965E\u97EB"+
-            "\u9FF9\u95F8\uFEA2\u8FE6\uFE7E\u9DA4"+
-            "\u9768\u8EEC\u94BD\u945B\u9CF6\uFAA7"+
-            "\u9BD9\uFA5D\u9656\u9762\u94BA\uA04F"+
-            "\u92D8\u9BCB\u94BB\u9D5F\u90CF\u9465"+
-            "\u9F4C\u90D8\u9EBE\uFB6D\u95CA\u9DC2"+
-            "\u97F8\u8FFC\u9473\u9474\uFEB7\u8A4B"+
-            "\u8A55\u8B69\u8ADC\u8B76\u9BCE\u8A68"+
-            "\uA0F8\u98DF\uFEB5\u9BCF\u96FB\u9BFB"+
-            "\u9ECE\u8EE5\u9E7B\u9BD2\u8AA5\uFECE"+
-            "\u8A45\u9DFC\uFECF\u8BA5\u8C4A\u8AEC"+
-            "\uFCE0\u94AD\uFED5\u94AC\uFC5A\u9BD6"+
-            "\u8A6F\u8BA9\u8E5F\u9DCB\uFCE7\u9BD7"+
-            "\u93C8\u91F0\u8FE0\u9BDB\u90ED\u9BDC"+
-            "\uA0EC\u98FA\u9BE0\u93C7\u9249\u96E1"+
-            "\u9BE2\u9BE4\u8FE1\u9BE5\u94C0\u93C3"+
-            "\u93C5\u9079\u977B\u907E\uFEE6\uFE46"+
-            "\u9DB8\u9270\u95A8\u8CB0\u94C8\u98B9"+
-            "\u9140\uFCBE\u9157\u8BB2\uFADF\u9BE6"+
-            "\u9643\u8E44\u9C4F\uFEF4\u9BE8\u93DC"+
-            "\u966F\u8E4A\u9BED\u92F6\u9DB9\u8E4E"+
-            "\uFBCF\u9EC2\u94E5\u9BF0\u94E4\u9551"+
-            "\u8BBB\u9BF1\u94F0\u8E64\u94EA\u8F61"+
-            "\u9B64\u8E5B\u9BF2\u9FBE\u9DC9\u8E6C"+
-            "\u8F73\u8CAF\u8F75\u8E71\u8E60\u8E6A"+
-            "\u8C4C\u9552\u9554\u8AD4\u9DBB\u9543"+
-            "\u92FE\u94F2\u94F1\uA0EA\u9DD2\uA0B1"+
-            "\u91F8\u9462\u9BA4\u8EAD\u9EAD\u96D0"+
-            "\uFEEE\u8AB4\u9757\u8A77\u9BF7\u8EB5"+
-            "\uA06D\u8EB6\u9756\u9540\uA0F3\u94BE"+
-            "\u9BFA\uFDDF\u9DBC\u94FE\u8BDB\uA0FE"+
-            "\u8EC0\u9F47\u8BDE\uA0FB\u8EC3\u9649"+
-            "\uFEC2\u954C\u9BFD\u90CC\u9C60\u954B"+
-            "\u9BFE\u9C70\u9C43\u9C47\u8ECC\u8E54"+
-            "\u8EE4\u9C49\u8B5E\u955E\u955C\u9C4B"+
-            "\u8BE1\u8ED9\u9DB4\u925F\u9C4C\u8AA1"+
-            "\u8EDB\u9C56\u8AA2\u9754\u9C5E\u9ED4"+
-            "\u9568\uA0C3\u8AE6\uA0F7\u9C61\u9C5F"+
-            "\uFC4D\u9E5B\u9E69\u9C63\uFEC7\uFEC6"+
-            "\u9C67\u9C69\u8BE2\u9165\u9CE7\u8A54"+
-            "\u9C6C\u9C6E\uFE5D\u9C73\u956A\u956D"+
-            "\u8EF0\u8F4D\u8EF6\uFABC\u8CD5\uFBDA"+
-            "\u8B4C\uFD75\u9BDD\uFAF5\u9C74\u9545"+
-            "\u96C6\u8F6A\u8F4E\u9C78\uFA55\u97E4"+
-            "\u9C41\u925C\u96FA\uFB66\u8E65\u9849"+
-            "\uFBA8\u9842\u9C7A\u97FB\u90CA\u9C5B"+
-            "\u974D\u8ED3\u9561\u9F4B\u9FB5\u93D2"+
-            "\uFDAA\u9840\u9146\u9867\uFA5A\uFBA9"+
-            "\u9841\u8CD3\uFCFD\uFDAB\u91BD\u8F4C"+
-            "\u96C9\u8F55\uFBAE\u956F\u9C7D\uA0F0"+
-            "\u946F\uFDAC\u96CB\u96CE\uA056\u9CE1"+
-            "\u96C4\u8F5E\u8F6C\u8EA3\uFBB3\uFC53"+
-            "\uFDB3\u8F6B\u96CA\u8F79\u9E6F\uA0C5"+
-            "\uFC78\u8E42\u8F5A\u90C2\u8EA5\u9061"+
-            "\u924F\u9373\uFDB5\uFECC\uFBBD\u8CD6"+
-            "\u9843\u96C5\u89BC\u9CA3\u924B\u984A"+
-            "\u8FA4\uA0F1\u9EFB\u9CD2\u8FA7\uFC5C"+
-            "\u9845\u9046\u8CD1\uFEFA\u9560\u9F48"+
-            "\u9247\u90FB\u9CA4\u9571\u9CA6\u9CA7"+
-            "\u9CAA\u9ED3\u9E70\u9CAC\u8FAE\u957D"+
-            "\u9CB0\u97B6\uA0BD\u8ADF\u9EAA\u8FBD"+
-            "\u8FBF\u9369\u9BA7\uC8A4\uFEEA\u9BE1"+
-            "\u8B41\u9DB6\uA0EB\u9BA3\u8BA1\u8FC8"+
-            "\u894C\u9860\u94C7\u8B58\u95AB\u95AA"+
-            "\u9CC3\u9CC4\u93D6\u9DAC\u8BE6\u8A71"+
-            "\u8FD1\u99D5\u90F4\u8AA3\u9CCE\u9CD4"+
-            "\u9CD5\uFBC8\u9DB3\uFC70\u8FD7\u9B73"+
-            "\uFA5B\u8FD2\u9064\u98B6\u9668\u9CD6"+
-            "\u98BD\u8FDC\uFEF6\u8FD9\u9541\u97F3"+
-            "\u9BF8\u9E6C\u8FF2\u8FEE\u9CD7\u9E6E"+
-            "\u8A40\u8FEF\u8FF4\u8FF5\u95C2\u986A"+
-            "\u97CF\u9E7C\u9041\u9CDB\u9441\u9CE6"+
-            "\u9DB0\u9CEA\u9CED\u9CFA\u8B62\u8A4E"+
-            "\u9CCA\u8A66\u9CFB\u9CFC\u9CFE\u8A53"+
-            "\u9CE5\u9D40\u9D41\u9045\u8B73\u97CA"+
-            "\u9D42\u8A61\u8BAE\u8AD2\u8BA2\u9DF2"+
-            "\u9D43\u9CDF\u9D44\u8ECA\u904E\u8EB3"+
-            "\u9FF5\u9D45\u904F\u9D47\u89CA\u9CB5"+
-            "\uFBFE\u905E\u9063\u9057\u9066\u9BC0"+
-            "\uFCE5\u9162\u9067\u8FA1\u8FA2\u9D48"+
-            "\uFAD3\u905D\u90B9\u906B\u8C5C\u9069"+
-            "\uFE57\uFE55\u9073\u9BEF\u9CF0\u9D4B"+
-            "\uFED9\uFEDA\u91E0\u91D8\u9646\u9360"+
-            "\uFA53\u9CD3\u9D4E\uFB40\u8DE2\u9442"+
-            "\u9056\u9865\u8C6C\uFA4A\u9D50\u9D52"+
-            "\u95AF\u975A\u9349\u9747\uA0F4\u9778"+
-            "\u8FCF\uFC60\u8C4E\uFC56\u91DC\u9661"+
-            "\u92EC\u935D\u8EDE\u96FE\uFD4F\u95DE"+
-            "\u98B0\uA040\u97BD\u977D\u97F5\u9BAC"+
-            "\uFADA\u92C2\u97B1\u907B\u93FE\u947B"+
-            "\u9777\uFABE\uFD43\u90C6\u90A4\u90A8"+
-            "\u94A9\u90A9\u8C65\u95E0\u907D\u9265"+
-            "\uFDBA\u93C4\uFEED\u9DAB\uA0E3\u9648"+
-            "\u9D53\u8AA9\u9BC5\u965D\u975F\u965F"+
-            "\u966E\uFB5D\u9DB1\uFEA3\u9DB2\u95AE"+
-            "\uFCA3\uA0A2\u9655\u9D54\u9341\u95AD"+
-            "\u91D5\u977A\uFDFC\u8E47\u93FD\u90A5"+
-            "\u90AC\u95AC\u90AE\uFEA5\u9D56\u97E3"+
-            "\u95E2\u9466\u9647\u91B8\u9CEC\u90AD"+
-            "\u95E3\u8B4F\u8AE3\u8B4D\u95EA\u8B4E"+
-            "\u8CC1\u8BED\u91D9\uA0A4\u95F5\u95F4"+
-            "\u9FB3\uFEAF\uFE72\u927A\uFEAC\u95F3"+
-            "\u9D58\u9372\u91C5\u9642\u90CD\u95FE"+
-            "\u9159\u9C65\u97CC\u90CE\u9D59\uFCF5"+
-            "\uFEFD\u9D5B\u9D5C\u937E\u98AC\u9D5E"+
-            "\uFDD0\uFD60\u9CCF\u90DD\u90E0\u90F3"+
-            "\u98B1\u90F0\u93BD\u95B7\u9F46\u8E4B"+
-            "\u9658\u8A4C\u9D63\u9ECF\u9D65\u9D66"+
-            "\u965A\u9D64\u8A6C\u8AD9\u9D67\u8A70"+
-            "\u8BF3\u9150\u9CC1\u9D68\u93A7\u9674"+
-            "\uA0EF\u9151\u96C1\u8C64\u9676\u9D69"+
-            "\uFCA4\u9D6A\u924E\u9D6B\u9BC1\u9D6C"+
-            "\u8A65\u915D\u9D6D\u915A\u8C42\u9CC0"+
-            "\u916A\u9D6E\u9EA6\u9DCD\u9D6F\u89BB"+
-            "\u9EF9\u96B4\u9172\u9EC8\u8B55\u9D71"+
-            "\u9D72\u9ECC\u9174\u9ED0\u905C\u8ED2"+
-            "\u91A8\u9177\u96BF\u96C0\u8FB1\u96B7"+
-            "\u8C55\u9178\u89BE\u917C\uFB77\u9175"+
-            "\u91A3\u9176\u96BE\u9179\u96B6\u91A4"+
-            "\u91A6\u9D75\u9052\uA045\u91A9\u98AA"+
-            "\u8C5F\u8BAA\u9CDD\u9D77\u8940\u9EEC"+
-            "\u93AA\u9478\u9D7A\u8AC9\u8B4B\u9FEC"+
-            "\u8AE2\u9E75\u9874\u9AC8\uA047\u8BC3"+
-            "\uFC48\uFC77\u9C52\u8EFD\u8FA8\u957A"+
-            "\u8FF0";
-    }
-}
--- a/jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2010 Sun Microsystems, Inc.  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
@@ -55,47 +55,35 @@
         return new Encoder(this);
     }
 
-    private static class Decoder extends HKSCS.Decoder {
-
-        private static DoubleByte.Decoder ms950Dec =
+    static class Decoder extends HKSCS.Decoder {
+        private static DoubleByte.Decoder ms950 =
             (DoubleByte.Decoder)new MS950().newDecoder();
 
-        /*
-         * Note current decoder decodes 0x8BC2 --> U+F53A
-         * ie. maps to Unicode PUA.
-         * Unaccounted discrepancy between this mapping
-         * inferred from MS950/windows-950 and the published
-         * MS HKSCS mappings which maps 0x8BC2 --> U+5C22
-         * a character defined with the Unified CJK block
-         */
-
-        protected char decodeDouble(int byte1, int byte2) {
-            char c = super.decodeDouble(byte1, byte2);
-            return (c != UNMAPPABLE_DECODING) ? c : ms950Dec.decodeDouble(byte1, byte2);
+        private static char[][] b2cBmp = new char[0x100][];
+        private static char[][] b2cSupp = new char[0x100][];
+        static {
+            initb2c(b2cBmp, HKSCSMapping.b2cBmpStr);
+            initb2c(b2cSupp, HKSCSMapping.b2cSuppStr);
         }
 
         private Decoder(Charset cs) {
-            super(cs);
+            super(cs, ms950, b2cBmp, b2cSupp);
         }
     }
 
     private static class Encoder extends HKSCS.Encoder {
-
-        private static DoubleByte.Encoder ms950Enc =
+        private static DoubleByte.Encoder ms950 =
             (DoubleByte.Encoder)new MS950().newEncoder();
 
-        /*
-         * Note current encoder encodes U+F53A --> 0x8BC2
-         * Published MS HKSCS mappings show
-         * U+5C22 <--> 0x8BC2
-         */
-        protected int encodeDouble(char ch) {
-            int r = super.encodeDouble(ch);
-            return (r != UNMAPPABLE_ENCODING) ? r : ms950Enc.encodeChar(ch);
+        static char[][] c2bBmp = new char[0x100][];
+        static char[][] c2bSupp = new char[0x100][];
+        static {
+            initc2b(c2bBmp, HKSCSMapping.b2cBmpStr, HKSCSMapping.pua);
+            initc2b(c2bSupp, HKSCSMapping.b2cSuppStr, null);
         }
 
         private Encoder(Charset cs) {
-            super(cs);
+            super(cs, ms950, c2bBmp, c2bSupp);
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS_XP.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs.ext;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import sun.nio.cs.HistoricallyNamedCharset;
+import static sun.nio.cs.CharsetMapping.*;
+
+public class MS950_HKSCS_XP extends Charset
+{
+    public MS950_HKSCS_XP() {
+        super("x-MS950-HKSCS-XP", ExtendedCharsets.aliasesFor("x-MS950-HKSCS-XP"));
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs instanceof MS950)
+                || (cs instanceof MS950_HKSCS_XP));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    static class Decoder extends HKSCS.Decoder {
+        private static DoubleByte.Decoder ms950 =
+            (DoubleByte.Decoder)new MS950().newDecoder();
+
+        /*
+         * Note current decoder decodes 0x8BC2 --> U+F53A
+         * ie. maps to Unicode PUA.
+         * Unaccounted discrepancy between this mapping
+         * inferred from MS950/windows-950 and the published
+         * MS HKSCS mappings which maps 0x8BC2 --> U+5C22
+         * a character defined with the Unified CJK block
+         */
+        private static char[][] b2cBmp = new char[0x100][];
+        static {
+            initb2c(b2cBmp, HKSCS_XPMapping.b2cBmpStr);
+        }
+
+        public char decodeDoubleEx(int b1, int b2) {
+            return UNMAPPABLE_DECODING;
+        }
+
+        private Decoder(Charset cs) {
+            super(cs, ms950, b2cBmp, null);
+        }
+    }
+
+    private static class Encoder extends HKSCS.Encoder {
+        private static DoubleByte.Encoder ms950 =
+            (DoubleByte.Encoder)new MS950().newEncoder();
+
+        /*
+         * Note current encoder encodes U+F53A --> 0x8BC2
+         * Published MS HKSCS mappings show
+         * U+5C22 <--> 0x8BC2
+         */
+        static char[][] c2bBmp = new char[0x100][];
+        static {
+            initc2b(c2bBmp, HKSCS_XPMapping.b2cBmpStr, null);
+        }
+
+        public int encodeSupp(int cp) {
+            return UNMAPPABLE_ENCODING;
+        }
+
+        private Encoder(Charset cs) {
+            super(cs, ms950, c2bBmp, null);
+        }
+    }
+}
--- a/jdk/src/share/classes/sun/security/pkcs11/P11SecureRandom.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11SecureRandom.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2010 Sun Microsystems, Inc.  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
@@ -26,7 +26,7 @@
 package sun.security.pkcs11;
 
 import java.util.*;
-
+import java.io.*;
 import java.security.*;
 
 import sun.security.pkcs11.wrapper.*;
@@ -61,9 +61,28 @@
     // buffer, if mixing is used
     private byte[] mixBuffer;
 
-    // bytes remaining in buffer, if mixing is used
+    // bytes remaining in mixBuffer, if mixing is used
     private int buffered;
 
+    /*
+     * we buffer data internally for efficiency but limit the lifetime
+     * to avoid using stale bits.
+     */
+    // lifetime in ms, currently 100 ms (0.1 s)
+    private static final long MAX_IBUFFER_TIME = 100;
+
+    // size of the internal buffer
+    private static final int IBUFFER_SIZE = 32;
+
+    // internal buffer for the random bits
+    private transient byte[] iBuffer = new byte[IBUFFER_SIZE];
+
+    // number of bytes remain in iBuffer
+    private transient int ibuffered = 0;
+
+    // time that data was read into iBuffer
+    private transient long lastRead = 0L;
+
     P11SecureRandom(Token token) {
         this.token = token;
     }
@@ -104,16 +123,29 @@
         if ((bytes == null) || (bytes.length == 0)) {
             return;
         }
-        Session session = null;
-        try {
-            session = token.getOpSession();
-            token.p11.C_GenerateRandom(session.id(), bytes);
-            mix(bytes);
-        } catch (PKCS11Exception e) {
-            throw new ProviderException("nextBytes() failed", e);
-        } finally {
-            token.releaseSession(session);
+        if (bytes.length <= IBUFFER_SIZE)  {
+            int ofs = 0;
+            synchronized (iBuffer) {
+                while (ofs < bytes.length) {
+                    long time = System.currentTimeMillis();
+                    // refill the internal buffer if empty or stale
+                    if ((ibuffered == 0) ||
+                            !(time - lastRead < MAX_IBUFFER_TIME)) {
+                        lastRead = time;
+                        implNextBytes(iBuffer);
+                        ibuffered = IBUFFER_SIZE;
+                    }
+                    // copy the buffered bytes into 'bytes'
+                    while ((ofs < bytes.length) && (ibuffered > 0)) {
+                        bytes[ofs++] = iBuffer[IBUFFER_SIZE - ibuffered--];
+                    }
+                }
+            }
+        } else {
+            // avoid using the buffer - just fill bytes directly
+            implNextBytes(bytes);
         }
+
     }
 
     // see JCA spec
@@ -143,4 +175,26 @@
         }
     }
 
+    // fill up the specified buffer with random bytes, and mix them
+    private void implNextBytes(byte[] bytes) {
+        Session session = null;
+        try {
+            session = token.getOpSession();
+            token.p11.C_GenerateRandom(session.id(), bytes);
+            mix(bytes);
+        } catch (PKCS11Exception e) {
+            throw new ProviderException("nextBytes() failed", e);
+        } finally {
+            token.releaseSession(session);
+        }
+    }
+
+    private void readObject(ObjectInputStream in)
+            throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        // assign default values to non-null transient fields
+        iBuffer = new byte[IBUFFER_SIZE];
+        ibuffered = 0;
+        lastRead = 0L;
+    }
 }
--- a/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2010 Sun Microsystems, Inc.  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,8 +30,7 @@
 import java.nio.ByteBuffer;
 
 import java.security.*;
-import java.security.interfaces.ECPublicKey;
-
+import java.security.interfaces.*;
 import sun.nio.ch.DirectBuffer;
 
 import sun.security.util.*;
@@ -88,7 +87,7 @@
     // mechanism id
     private final long mechanism;
 
-    // digest algorithm OID, if we do RSA padding ourselves
+    // digest algorithm OID, if we encode RSA signature ourselves
     private final ObjectIdentifier digestOID;
 
     // type, one of T_* below
@@ -103,7 +102,7 @@
     // associated session, if any
     private Session session;
 
-    // mode, on of M_* below
+    // mode, one of M_* below
     private int mode;
 
     // flag indicating whether an operation is initialized
@@ -137,6 +136,9 @@
         this.token = token;
         this.algorithm = algorithm;
         this.mechanism = mechanism;
+        byte[] buffer = null;
+        ObjectIdentifier digestOID = null;
+        MessageDigest md = null;
         switch ((int)mechanism) {
         case (int)CKM_MD2_RSA_PKCS:
         case (int)CKM_MD5_RSA_PKCS:
@@ -146,34 +148,25 @@
         case (int)CKM_SHA512_RSA_PKCS:
             keyAlgorithm = "RSA";
             type = T_UPDATE;
-            digestOID = null;
             buffer = new byte[1];
-            md = null;
             break;
         case (int)CKM_DSA_SHA1:
             keyAlgorithm = "DSA";
             type = T_UPDATE;
-            digestOID = null;
             buffer = new byte[1];
-            md = null;
             break;
         case (int)CKM_ECDSA_SHA1:
             keyAlgorithm = "EC";
             type = T_UPDATE;
-            digestOID = null;
             buffer = new byte[1];
-            md = null;
             break;
         case (int)CKM_DSA:
             keyAlgorithm = "DSA";
-            digestOID = null;
             if (algorithm.equals("DSA")) {
                 type = T_DIGEST;
                 md = MessageDigest.getInstance("SHA-1");
-                buffer = null;
             } else if (algorithm.equals("RawDSA")) {
                 type = T_RAW;
-                md = null;
                 buffer = new byte[20];
             } else {
                 throw new ProviderException(algorithm);
@@ -181,10 +174,8 @@
             break;
         case (int)CKM_ECDSA:
             keyAlgorithm = "EC";
-            digestOID = null;
             if (algorithm.equals("NONEwithECDSA")) {
                 type = T_RAW;
-                md = null;
                 buffer = new byte[RAW_ECDSA_MAX];
             } else {
                 String digestAlg;
@@ -201,14 +192,12 @@
                 }
                 type = T_DIGEST;
                 md = MessageDigest.getInstance(digestAlg);
-                buffer = null;
             }
             break;
         case (int)CKM_RSA_PKCS:
         case (int)CKM_RSA_X_509:
             keyAlgorithm = "RSA";
             type = T_DIGEST;
-            buffer = null;
             if (algorithm.equals("MD5withRSA")) {
                 md = MessageDigest.getInstance("MD5");
                 digestOID = AlgorithmId.MD5_oid;
@@ -234,6 +223,9 @@
         default:
             throw new ProviderException("Unknown mechanism: " + mechanism);
         }
+        this.buffer = buffer;
+        this.digestOID = digestOID;
+        this.md = md;
         session = token.getOpSession();
     }
 
@@ -326,9 +318,52 @@
         }
     }
 
+    private void checkRSAKeyLength(int len) throws InvalidKeyException {
+        RSAPadding padding;
+        try {
+            padding = RSAPadding.getInstance
+                (RSAPadding.PAD_BLOCKTYPE_1, (len + 7) >> 3);
+        } catch (InvalidAlgorithmParameterException iape) {
+            throw new InvalidKeyException(iape.getMessage());
+        }
+        int maxDataSize = padding.getMaxDataSize();
+        int encodedLength;
+        if (algorithm.equals("MD5withRSA") ||
+            algorithm.equals("MD2withRSA")) {
+            encodedLength = 34;
+        } else if (algorithm.equals("SHA1withRSA")) {
+            encodedLength = 35;
+        } else if (algorithm.equals("SHA256withRSA")) {
+            encodedLength = 51;
+        } else if (algorithm.equals("SHA384withRSA")) {
+            encodedLength = 67;
+        } else if (algorithm.equals("SHA512withRSA")) {
+            encodedLength = 83;
+        } else {
+            throw new ProviderException("Unknown signature algo: " + algorithm);
+        }
+        if (encodedLength > maxDataSize) {
+            throw new InvalidKeyException
+                ("Key is too short for this signature algorithm");
+        }
+    }
+
     // see JCA spec
     protected void engineInitVerify(PublicKey publicKey)
             throws InvalidKeyException {
+        if (publicKey == null) {
+            throw new InvalidKeyException("Key must not be null");
+        }
+        // Need to check RSA key length whenever a new key is set
+        if (keyAlgorithm.equals("RSA") && publicKey != p11Key) {
+            int keyLen;
+            if (publicKey instanceof P11Key) {
+                keyLen = ((P11Key) publicKey).keyLength();
+            } else {
+                keyLen = ((RSAKey) publicKey).getModulus().bitLength();
+            }
+            checkRSAKeyLength(keyLen);
+        }
         cancelOperation();
         mode = M_VERIFY;
         p11Key = P11KeyFactory.convertKey(token, publicKey, keyAlgorithm);
@@ -338,6 +373,19 @@
     // see JCA spec
     protected void engineInitSign(PrivateKey privateKey)
             throws InvalidKeyException {
+        if (privateKey == null) {
+            throw new InvalidKeyException("Key must not be null");
+        }
+        // Need to check RSA key length whenever a new key is set
+        if (keyAlgorithm.equals("RSA") && privateKey != p11Key) {
+            int keyLen;
+            if (privateKey instanceof P11Key) {
+                keyLen = ((P11Key) privateKey).keyLength;
+            } else {
+                keyLen = ((RSAKey) privateKey).getModulus().bitLength();
+            }
+            checkRSAKeyLength(keyLen);
+        }
         cancelOperation();
         mode = M_SIGN;
         p11Key = P11KeyFactory.convertKey(token, privateKey, keyAlgorithm);
--- a/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  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
@@ -65,6 +65,9 @@
 import javax.sound.sampled.AudioPermission;
 import javax.net.ssl.SSLPermission;
 */
+import sun.misc.JavaSecurityProtectionDomainAccess;
+import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache;
+import sun.misc.SharedSecrets;
 import sun.security.util.Password;
 import sun.security.util.PolicyUtil;
 import sun.security.util.PropertyExpander;
@@ -1102,7 +1105,7 @@
     /**
      * Refreshes the policy object by re-reading all the policy files.
      */
-    public void refresh() {
+    @Override public void refresh() {
         init(url);
     }
 
@@ -1119,9 +1122,10 @@
      *
      * @see java.security.ProtectionDomain
      */
+    @Override
     public boolean implies(ProtectionDomain pd, Permission p) {
         PolicyInfo pi = policyInfo.get();
-        Map<ProtectionDomain, PermissionCollection> pdMap = pi.getPdMapping();
+        ProtectionDomainCache pdMap = pi.getPdMapping();
 
         PermissionCollection pc = pdMap.get(pd);
 
@@ -1167,6 +1171,7 @@
      * @return the Permissions granted to the provided
      *          <code>ProtectionDomain</code>.
      */
+    @Override
     public PermissionCollection getPermissions(ProtectionDomain domain) {
         Permissions perms = new Permissions();
 
@@ -1202,6 +1207,7 @@
      *
      * @return the set of permissions according to the policy.
      */
+    @Override
     public PermissionCollection getPermissions(CodeSource codesource) {
         return getPermissions(new Permissions(), codesource);
     }
@@ -2119,7 +2125,7 @@
             return codesource;
         }
 
-        public String toString(){
+        @Override public String toString(){
             StringBuilder sb = new StringBuilder();
             sb.append(ResourcesMgr.getString("("));
             sb.append(getCodeSource());
@@ -2255,7 +2261,7 @@
          *
          * @return false.
          */
-        public boolean implies(Permission p) {
+        @Override public boolean implies(Permission p) {
             return false;
         }
 
@@ -2272,7 +2278,7 @@
          * type (class) name, permission name, actions, and
          * certificates as this object.
          */
-        public boolean equals(Object obj) {
+        @Override public boolean equals(Object obj) {
             if (obj == this)
                 return true;
 
@@ -2320,7 +2326,7 @@
          *
          * @return a hash code value for this object.
          */
-        public int hashCode() {
+        @Override public int hashCode() {
             int hash = type.hashCode();
             if (name != null)
                 hash ^= name.hashCode();
@@ -2339,7 +2345,7 @@
          *
          * @return the empty string "".
          */
-        public String getActions() {
+        @Override public String getActions() {
             return "";
         }
 
@@ -2366,7 +2372,7 @@
          *
          * @return information about this SelfPermission.
          */
-        public String toString() {
+        @Override public String toString() {
             return "(SelfPermission " + type + " " + name + " " + actions + ")";
         }
     }
@@ -2388,7 +2394,7 @@
         final Map aliasMapping;
 
         // Maps ProtectionDomain to PermissionCollection
-        private final Map<ProtectionDomain, PermissionCollection>[] pdMapping;
+        private final ProtectionDomainCache[] pdMapping;
         private java.util.Random random;
 
         PolicyInfo(int numCaches) {
@@ -2397,16 +2403,17 @@
                 Collections.synchronizedList(new ArrayList<PolicyEntry>(2));
             aliasMapping = Collections.synchronizedMap(new HashMap(11));
 
-            pdMapping = new Map[numCaches];
+            pdMapping = new ProtectionDomainCache[numCaches];
+            JavaSecurityProtectionDomainAccess jspda
+                = SharedSecrets.getJavaSecurityProtectionDomainAccess();
             for (int i = 0; i < numCaches; i++) {
-                pdMapping[i] = Collections.synchronizedMap
-                    (new WeakHashMap<ProtectionDomain, PermissionCollection>());
+                pdMapping[i] = jspda.getProtectionDomainCache();
             }
             if (numCaches > 1) {
                 random = new java.util.Random();
             }
         }
-        Map<ProtectionDomain, PermissionCollection> getPdMapping() {
+        ProtectionDomainCache getPdMapping() {
             if (pdMapping.length == 1) {
                 return pdMapping[0];
             } else {
--- a/jdk/src/share/classes/sun/security/provider/X509Factory.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/provider/X509Factory.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2010 Sun Microsystems, Inc.  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
@@ -26,7 +26,6 @@
 package sun.security.provider;
 
 import java.io.*;
-import java.util.Collection;
 import java.util.*;
 import java.security.cert.*;
 import sun.security.x509.X509CertImpl;
@@ -37,6 +36,7 @@
 import sun.security.util.DerValue;
 import sun.security.util.Cache;
 import sun.misc.BASE64Decoder;
+import sun.security.pkcs.ParsingException;
 
 /**
  * This class defines a certificate factory for X.509 v3 certificates &
@@ -62,10 +62,6 @@
     public static final String BEGIN_CERT = "-----BEGIN CERTIFICATE-----";
     public static final String END_CERT = "-----END CERTIFICATE-----";
 
-    private static final int defaultExpectedLineLength = 80;
-
-    private static final char[] endBoundary = "-----END".toCharArray();
-
     private static final int ENC_MAX_LENGTH = 4096 * 1024; // 4 MB MAX
 
     private static final Cache certCache = Cache.newSoftMemoryCache(750);
@@ -92,13 +88,7 @@
             throw new CertificateException("Missing input stream");
         }
         try {
-            if (is.markSupported() == false) {
-                // consume the entire input stream
-                byte[] totalBytes;
-                totalBytes = getTotalBytes(new BufferedInputStream(is));
-                is = new ByteArrayInputStream(totalBytes);
-            }
-            byte[] encoding = readSequence(is);
+            byte[] encoding = readOneBlock(is);
             if (encoding != null) {
                 X509CertImpl cert = (X509CertImpl)getFromCache(certCache, encoding);
                 if (cert != null) {
@@ -108,19 +98,7 @@
                 addToCache(certCache, cert.getEncodedInternal(), cert);
                 return cert;
             } else {
-                X509CertImpl cert;
-                // determine if binary or Base64 encoding. If Base64 encoding,
-                // the certificate must be bounded at the beginning by
-                // "-----BEGIN".
-                if (isBase64(is)) {
-                    // Base64
-                    byte[] data = base64_to_binary(is);
-                    cert = new X509CertImpl(data);
-                } else {
-                    // binary
-                    cert = new X509CertImpl(new DerValue(is));
-                }
-                return intern(cert);
+                throw new IOException("Empty input");
             }
         } catch (IOException ioe) {
             throw (CertificateException)new CertificateException
@@ -129,73 +107,21 @@
     }
 
     /**
-     * Read a DER SEQUENCE from an InputStream and return the encoding.
-     * If data does not represent a SEQUENCE, it uses indefinite length
-     * encoding, or is longer than ENC_MAX_LENGTH, the stream is reset
-     * and this method returns null.
-     */
-    private static byte[] readSequence(InputStream in) throws IOException {
-        in.mark(ENC_MAX_LENGTH);
-        byte[] b = new byte[4];
-        int i = readFully(in, b, 0, b.length);
-        if ((i != b.length) || (b[0] != 0x30)) { // first byte must be SEQUENCE
-            in.reset();
-            return null;
-        }
-        i = b[1] & 0xff;
-        int totalLength;
-        if (i < 0x80) {
-            int valueLength = i;
-            totalLength = valueLength + 2;
-        } else if (i == 0x81) {
-            int valueLength = b[2] & 0xff;
-            totalLength = valueLength + 3;
-        } else if (i == 0x82) {
-            int valueLength = ((b[2] & 0xff) << 8) | (b[3] & 0xff);
-            totalLength = valueLength + 4;
-        } else { // ignore longer length forms
-            in.reset();
-            return null;
-        }
-        if (totalLength > ENC_MAX_LENGTH) {
-            in.reset();
-            return null;
-        }
-        byte[] encoding = new byte[totalLength];
-        if( totalLength < b.length ) {
-            in.reset();
-            i = readFully(in, encoding, 0, totalLength);
-            if( i != totalLength ) {
-                in.reset();
-                return null;
-            }
-        } else {
-            System.arraycopy(b, 0, encoding, 0, b.length);
-            int n = totalLength - b.length;
-            i = readFully(in, encoding, b.length, n);
-            if (i != n) {
-                in.reset();
-                return null;
-            }
-        }
-        return encoding;
-    }
-
-    /**
      * Read from the stream until length bytes have been read or EOF has
      * been reached. Return the number of bytes actually read.
      */
-    private static int readFully(InputStream in, byte[] buffer, int offset,
+    private static int readFully(InputStream in, ByteArrayOutputStream bout,
             int length) throws IOException {
         int read = 0;
+        byte[] buffer = new byte[2048];
         while (length > 0) {
-            int n = in.read(buffer, offset, length);
+            int n = in.read(buffer, 0, length<2048?length:2048);
             if (n <= 0) {
                 break;
             }
+            bout.write(buffer, 0, n);
             read += n;
             length -= n;
-            offset += n;
         }
         return read;
     }
@@ -309,21 +235,11 @@
             throw new CertificateException("Missing input stream");
         }
         try {
-            if (inStream.markSupported() == false) {
-                // consume the entire input stream
-                byte[] totalBytes;
-                totalBytes = getTotalBytes(new BufferedInputStream(inStream));
-                inStream = new ByteArrayInputStream(totalBytes);
-            }
-            // determine if binary or Base64 encoding. If Base64 encoding,
-            // each certificate must be bounded at the beginning by
-            // "-----BEGIN".
-            if (isBase64(inStream)) {
-                // Base64
-                byte[] data = base64_to_binary(inStream);
-                return new X509CertPath(new ByteArrayInputStream(data));
+            byte[] encoding = readOneBlock(inStream);
+            if (encoding != null) {
+                return new X509CertPath(new ByteArrayInputStream(encoding));
             } else {
-                return new X509CertPath(inStream);
+                throw new IOException("Empty input");
             }
         } catch (IOException ioe) {
             throw new CertificateException(ioe.getMessage());
@@ -350,21 +266,11 @@
             throw new CertificateException("Missing input stream");
         }
         try {
-            if (inStream.markSupported() == false) {
-                // consume the entire input stream
-                byte[] totalBytes;
-                totalBytes = getTotalBytes(new BufferedInputStream(inStream));
-                inStream = new ByteArrayInputStream(totalBytes);
-            }
-            // determine if binary or Base64 encoding. If Base64 encoding,
-            // each certificate must be bounded at the beginning by
-            // "-----BEGIN".
-            if (isBase64(inStream)) {
-                // Base64
-                byte[] data = base64_to_binary(inStream);
+            byte[] data = readOneBlock(inStream);
+            if (data != null) {
                 return new X509CertPath(new ByteArrayInputStream(data), encoding);
             } else {
-                return(new X509CertPath(inStream, encoding));
+                throw new IOException("Empty input");
             }
         } catch (IOException ioe) {
             throw new CertificateException(ioe.getMessage());
@@ -426,11 +332,6 @@
             throw new CertificateException("Missing input stream");
         }
         try {
-            if (is.markSupported() == false) {
-                // consume the entire input stream
-                is = new ByteArrayInputStream
-                     (getTotalBytes(new BufferedInputStream(is)));
-            }
             return parseX509orPKCS7Cert(is);
         } catch (IOException ioe) {
             throw new CertificateException(ioe);
@@ -458,13 +359,7 @@
             throw new CRLException("Missing input stream");
         }
         try {
-            if (is.markSupported() == false) {
-                // consume the entire input stream
-                byte[] totalBytes;
-                totalBytes = getTotalBytes(new BufferedInputStream(is));
-                is = new ByteArrayInputStream(totalBytes);
-            }
-            byte[] encoding = readSequence(is);
+            byte[] encoding = readOneBlock(is);
             if (encoding != null) {
                 X509CRLImpl crl = (X509CRLImpl)getFromCache(crlCache, encoding);
                 if (crl != null) {
@@ -474,19 +369,7 @@
                 addToCache(crlCache, crl.getEncodedInternal(), crl);
                 return crl;
             } else {
-                X509CRLImpl crl;
-                // determine if binary or Base64 encoding. If Base64 encoding,
-                // the CRL must be bounded at the beginning by
-                // "-----BEGIN".
-                if (isBase64(is)) {
-                    // Base64
-                    byte[] data = base64_to_binary(is);
-                    crl = new X509CRLImpl(data);
-                } else {
-                    // binary
-                    crl = new X509CRLImpl(new DerValue(is));
-                }
-                return intern(crl);
+                throw new IOException("Empty input");
             }
         } catch (IOException ioe) {
             throw new CRLException(ioe.getMessage());
@@ -504,19 +387,13 @@
      *
      * @exception CRLException on parsing errors.
      */
-    public Collection<? extends java.security.cert.CRL> engineGenerateCRLs(InputStream
-is)
-        throws CRLException
+    public Collection<? extends java.security.cert.CRL> engineGenerateCRLs(
+            InputStream is) throws CRLException
     {
         if (is == null) {
             throw new CRLException("Missing input stream");
         }
         try {
-            if (is.markSupported() == false) {
-                // consume the entire input stream
-                is = new ByteArrayInputStream
-                    (getTotalBytes(new BufferedInputStream(is)));
-            }
             return parseX509orPKCS7CRL(is);
         } catch (IOException ioe) {
             throw new CRLException(ioe.getMessage());
@@ -533,42 +410,25 @@
         throws CertificateException, IOException
     {
         Collection<X509CertImpl> coll = new ArrayList<X509CertImpl>();
-        boolean first = true;
-        while (is.available() != 0) {
-            // determine if binary or Base64 encoding. If Base64 encoding,
-            // each certificate must be bounded at the beginning by
-            // "-----BEGIN".
-            InputStream is2 = is;
-            if (isBase64(is2)) {
-                // Base64
-                is2 = new ByteArrayInputStream(base64_to_binary(is2));
+        byte[] data = readOneBlock(is);
+        if (data == null) {
+            return new ArrayList<X509CertImpl>(0);
+        }
+        try {
+            PKCS7 pkcs7 = new PKCS7(data);
+            X509Certificate[] certs = pkcs7.getCertificates();
+            // certs are optional in PKCS #7
+            if (certs != null) {
+                return Arrays.asList(certs);
+            } else {
+                // no crls provided
+                return new ArrayList<X509Certificate>(0);
             }
-            if (first)
-                is2.mark(is2.available());
-            try {
-                // treat as X.509 cert
-                coll.add(intern(new X509CertImpl(new DerValue(is2))));
-            } catch (CertificateException e) {
-                Throwable cause = e.getCause();
-                // only treat as PKCS#7 if this is the first cert parsed
-                // and the root cause of the decoding failure is an IOException
-                if (first && cause != null && (cause instanceof IOException)) {
-                    // treat as PKCS#7
-                    is2.reset();
-                    PKCS7 pkcs7 = new PKCS7(is2);
-                    X509Certificate[] certs = pkcs7.getCertificates();
-                    // certs are optional in PKCS #7
-                    if (certs != null) {
-                        return Arrays.asList(certs);
-                    } else {
-                        // no certs provided
-                        return new ArrayList<X509Certificate>(0);
-                    }
-                } else {
-                    throw e;
-                }
+        } catch (ParsingException e) {
+            while (data != null) {
+                coll.add(new X509CertImpl(data));
+                data = readOneBlock(is);
             }
-            first = false;
         }
         return coll;
     }
@@ -583,162 +443,215 @@
         throws CRLException, IOException
     {
         Collection<X509CRLImpl> coll = new ArrayList<X509CRLImpl>();
-        boolean first = true;
-        while (is.available() != 0) {
-            // determine if binary or Base64 encoding. If Base64 encoding,
-            // the CRL must be bounded at the beginning by
-            // "-----BEGIN".
-            InputStream is2 = is;
-            if (isBase64(is)) {
-                // Base64
-                is2 = new ByteArrayInputStream(base64_to_binary(is2));
+        byte[] data = readOneBlock(is);
+        if (data == null) {
+            return new ArrayList<X509CRL>(0);
+        }
+        try {
+            PKCS7 pkcs7 = new PKCS7(data);
+            X509CRL[] crls = pkcs7.getCRLs();
+            // CRLs are optional in PKCS #7
+            if (crls != null) {
+                return Arrays.asList(crls);
+            } else {
+                // no crls provided
+                return new ArrayList<X509CRL>(0);
             }
-            if (first)
-                is2.mark(is2.available());
-            try {
-                // treat as X.509 CRL
-                coll.add(new X509CRLImpl(is2));
-            } catch (CRLException e) {
-                // only treat as PKCS#7 if this is the first CRL parsed
-                if (first) {
-                    is2.reset();
-                    PKCS7 pkcs7 = new PKCS7(is2);
-                    X509CRL[] crls = pkcs7.getCRLs();
-                    // CRLs are optional in PKCS #7
-                    if (crls != null) {
-                        return Arrays.asList(crls);
-                    } else {
-                        // no crls provided
-                        return new ArrayList<X509CRL>(0);
-                    }
-                }
+        } catch (ParsingException e) {
+            while (data != null) {
+                coll.add(new X509CRLImpl(data));
+                data = readOneBlock(is);
             }
-            first = false;
         }
         return coll;
     }
 
-    /*
-     * Converts a Base64-encoded X.509 certificate or X.509 CRL or PKCS#7 data
-     * to binary encoding.
-     * In all cases, the data must be bounded at the beginning by
-     * "-----BEGIN", and must be bounded at the end by "-----END".
+    /**
+     * Returns an ASN.1 SEQUENCE from a stream, which might be a BER-encoded
+     * binary block or a PEM-style BASE64-encoded ASCII data. In the latter
+     * case, it's de-BASE64'ed before return.
+     *
+     * After the reading, the input stream pointer is after the BER block, or
+     * after the newline character after the -----END SOMETHING----- line.
+     *
+     * @param is the InputStream
+     * @returns byte block or null if end of stream
+     * @throws IOException If any parsing error
      */
-    private byte[] base64_to_binary(InputStream is)
-        throws IOException
-    {
-        long len = 0; // total length of base64 encoding, including boundaries
-
-        is.mark(is.available());
-
-        BufferedInputStream bufin = new BufferedInputStream(is);
-        BufferedReader br =
-            new BufferedReader(new InputStreamReader(bufin, "ASCII"));
+    private static byte[] readOneBlock(InputStream is) throws IOException {
 
-        // First read all of the data that is found between
-        // the "-----BEGIN" and "-----END" boundaries into a buffer.
-        String temp;
-        while (true) {
-            temp=readLine(br);
-            if (temp == null) {
-                throw new IOException("Unsupported encoding");
+        // The first character of a BLOCK.
+        int c = is.read();
+        if (c == -1) {
+            return null;
+        }
+        if (c == DerValue.tag_Sequence) {
+            ByteArrayOutputStream bout = new ByteArrayOutputStream(2048);
+            bout.write(c);
+            readBERInternal(is, bout, c);
+            return bout.toByteArray();
+        } else {
+            // Read BASE64 encoded data, might skip info at the beginning
+            char[] data = new char[2048];
+            int pos = 0;
+
+            // Step 1: Read until header is found
+            int hyphen = (c=='-') ? 1: 0;   // count of consequent hyphens
+            int last = (c=='-') ? -1: c;    // the char before hyphen
+            while (true) {
+                int next = is.read();
+                if (next == -1) {
+                    // We accept useless data after the last block,
+                    // say, empty lines.
+                    return null;
+                }
+                if (next == '-') {
+                    hyphen++;
+                } else {
+                    hyphen = 0;
+                    last = next;
+                }
+                if (hyphen == 5 && (last==-1 || last=='\r' || last=='\n')) {
+                    break;
+                }
             }
-            len += temp.length();
-            if (temp.startsWith("-----BEGIN")) {
-                break;
-            }
-        }
-        StringBuffer strBuf = new StringBuffer();
-        while ((temp=readLine(br))!=null && !temp.startsWith("-----END")) {
-            strBuf.append(temp);
-        }
-        if (temp == null) {
-            throw new IOException("Unsupported encoding");
-        } else {
-            len += temp.length();
-        }
 
-        // consume only as much as was needed
-        len += strBuf.length();
-        is.reset();
-        is.skip(len);
-
-        // Now, that data is supposed to be a single X.509 certificate or
-        // X.509 CRL or PKCS#7 formatted data... Base64 encoded.
-        // Decode into binary and return the result.
-        BASE64Decoder decoder = new BASE64Decoder();
-        return decoder.decodeBuffer(strBuf.toString());
-    }
+            // Step 2: Read the rest of header, determine the line end
+            int end;
+            while (true) {
+                int next = is.read();
+                if (next == -1) {
+                    throw new IOException("Incomplete data");
+                }
+                if (next == '\n') {
+                    end = '\n';
+                    break;
+                }
+                if (next == '\r') {
+                    next = is.read();
+                    if (next == -1) {
+                        throw new IOException("Incomplete data");
+                    }
+                    if (next == '\n') {
+                        end = '\n';
+                    } else {
+                        end = '\r';
+                        data[pos++] = (char)next;
+                    }
+                    break;
+                }
+            }
 
-    /*
-     * Reads the entire input stream into a byte array.
-     */
-    private byte[] getTotalBytes(InputStream is) throws IOException {
-        byte[] buffer = new byte[8192];
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);
-        int n;
-        baos.reset();
-        while ((n = is.read(buffer, 0, buffer.length)) != -1) {
-            baos.write(buffer, 0, n);
-        }
-        return baos.toByteArray();
-    }
+            // Step 3: Read the data
+            while (true) {
+                int next = is.read();
+                if (next == -1) {
+                    throw new IOException("Incomplete data");
+                }
+                if (next != '-') {
+                    data[pos++] = (char)next;
+                    if (pos >= data.length) {
+                        data = Arrays.copyOf(data, data.length+1024);
+                    }
+                } else {
+                    break;
+                }
+            }
 
-    /*
-     * Determines if input is binary or Base64 encoded.
-     */
-    private boolean isBase64(InputStream is) throws IOException {
-        if (is.available() >= 1) {
-            is.mark(1);
-            int c1 = is.read();
-            is.reset();
-            if (c1 != DerValue.tag_Sequence) {
-                return true;
-            } else {
-                return false;
+            // Step 4: Consume the footer
+            while (true) {
+                int next = is.read();
+                // Add next == '\n' for maximum safety, in case endline
+                // is not consistent.
+                if (next == -1 || next == end || next == '\n') {
+                    break;
+                }
             }
-        } else {
-            return false;
+
+            BASE64Decoder decoder = new BASE64Decoder();
+            return decoder.decodeBuffer(new String(data, 0, pos));
         }
     }
 
-    /*
-     * Read a line of text.  A line is considered to be terminated by any one
-     * of a line feed ('\n'), a carriage return ('\r'), a carriage return
-     * followed immediately by a linefeed, or an end-of-certificate marker.
+    /**
+     * Read one BER data block. This method is aware of indefinite-length BER
+     * encoding and will read all of the sub-sections in a recursive way
      *
-     * @return     A String containing the contents of the line, including
-     *             any line-termination characters, or null if the end of the
-     *             stream has been reached.
+     * @param is    Read from this InputStream
+     * @param bout  Write into this OutputStream
+     * @param tag   Tag already read (-1 mean not read)
+     * @returns     The current tag, used to check EOC in indefinite-length BER
+     * @throws IOException Any parsing error
      */
-    private String readLine(BufferedReader br) throws IOException {
-        int c;
-        int i = 0;
-        boolean isMatch = true;
-        boolean matched = false;
-        StringBuffer sb = new StringBuffer(defaultExpectedLineLength);
-        do {
-            c = br.read();
-            if (isMatch && (i < endBoundary.length)) {
-                isMatch = ((char)c != endBoundary[i++]) ? false : true;
+    private static int readBERInternal(InputStream is,
+            ByteArrayOutputStream bout, int tag) throws IOException {
+
+        if (tag == -1) {        // Not read before the call, read now
+            tag = is.read();
+            if (tag == -1) {
+                throw new IOException("BER/DER tag info absent");
+            }
+            if ((tag & 0x1f) == 0x1f) {
+                throw new IOException("Multi octets tag not supported");
+            }
+            bout.write(tag);
+        }
+
+        int n = is.read();
+        if (n == -1) {
+            throw new IOException("BER/DER length info ansent");
+        }
+        bout.write(n);
+
+        int length;
+
+        if (n == 0x80) {        // Indefinite-length encoding
+            if ((tag & 0x20) != 0x20) {
+                throw new IOException(
+                        "Non constructed encoding must have definite length");
+            }
+            while (true) {
+                int subTag = readBERInternal(is, bout, -1);
+                if (subTag == 0) {   // EOC, end of indefinite-length section
+                    break;
+                }
             }
-            if (!matched)
-                matched = (isMatch && (i == endBoundary.length));
-            sb.append((char)c);
-        } while ((c != -1) && (c != '\n') && (c != '\r'));
-
-        if (!matched && c == -1) {
-            return null;
-        }
-        if (c == '\r') {
-            br.mark(1);
-            int c2 = br.read();
-            if (c2 == '\n') {
-                sb.append((char)c);
-            } else {
-                br.reset();
+        } else {
+            if (n < 0x80) {
+                length = n;
+            } else if (n == 0x81) {
+                length = is.read();
+                if (length == -1) {
+                    throw new IOException("Incomplete BER/DER length info");
+                }
+                bout.write(length);
+            } else if (n == 0x82) {
+                int highByte = is.read();
+                int lowByte = is.read();
+                if (lowByte == -1) {
+                    throw new IOException("Incomplete BER/DER length info");
+                }
+                bout.write(highByte);
+                bout.write(lowByte);
+                length = (highByte << 8) | lowByte;
+            } else if (n == 0x83) {
+                int highByte = is.read();
+                int midByte = is.read();
+                int lowByte = is.read();
+                if (lowByte == -1) {
+                    throw new IOException("Incomplete BER/DER length info");
+                }
+                bout.write(highByte);
+                bout.write(midByte);
+                bout.write(lowByte);
+                length = (highByte << 16) | (midByte << 8) | lowByte;
+            } else { // ignore longer length forms
+                throw new IOException("Invalid BER/DER data (too huge?)");
+            }
+            if (readFully(is, bout, length) != length) {
+                throw new IOException("Incomplete BER/DER data");
             }
         }
-        return sb.toString();
+        return tag;
     }
 }
--- a/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	Tue Apr 20 01:24:48 2010 -0700
@@ -93,13 +93,17 @@
      * Constructors
      */
     ClientHandshaker(SSLSocketImpl socket, SSLContextImpl context,
-            ProtocolList enabledProtocols) {
+            ProtocolList enabledProtocols,
+            ProtocolVersion activeProtocolVersion) {
         super(socket, context, enabledProtocols, true, true);
+        this.activeProtocolVersion = activeProtocolVersion;
     }
 
     ClientHandshaker(SSLEngineImpl engine, SSLContextImpl context,
-            ProtocolList enabledProtocols) {
+            ProtocolList enabledProtocols,
+            ProtocolVersion activeProtocolVersion) {
         super(engine, context, enabledProtocols, true, true);
+        this.activeProtocolVersion = activeProtocolVersion;
     }
 
     /*
@@ -275,7 +279,42 @@
         // sent the "client hello" but the server's not seen it.
         //
         if (state < HandshakeMessage.ht_client_hello) {
-            kickstart();
+            if (!renegotiable) {    // renegotiation is not allowed.
+                if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) {
+                    // response with a no_negotiation warning,
+                    warningSE(Alerts.alert_no_negotiation);
+
+                    // invalidate the handshake so that the caller can
+                    // dispose this object.
+                    invalidated = true;
+
+                    // If there is still unread block in the handshake
+                    // input stream, it would be truncated with the disposal
+                    // and the next handshake message will become incomplete.
+                    //
+                    // However, according to SSL/TLS specifications, no more
+                    // handshake message could immediately follow ClientHello
+                    // or HelloRequest. But in case of any improper messages,
+                    // we'd better check to ensure there is no remaining bytes
+                    // in the handshake input stream.
+                    if (input.available() > 0) {
+                        fatalSE(Alerts.alert_unexpected_message,
+                            "HelloRequest followed by an unexpected  " +
+                            "handshake message");
+                    }
+
+                } else {
+                    // For SSLv3, send the handshake_failure fatal error.
+                    // Note that SSLv3 does not define a no_negotiation alert
+                    // like TLSv1. However we cannot ignore the message
+                    // simply, otherwise the other side was waiting for a
+                    // response that would never come.
+                    fatalSE(Alerts.alert_handshake_failure,
+                        "renegotiation is not allowed");
+                }
+            } else {
+                kickstart();
+            }
         }
     }
 
--- a/jdk/src/share/classes/sun/security/ssl/Handshaker.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/Handshaker.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2009 Sun Microsystems, Inc.  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
@@ -60,9 +60,12 @@
  */
 abstract class Handshaker {
 
-    // current protocol version
+    // protocol version being established using this Handshaker
     ProtocolVersion protocolVersion;
 
+    // the currently active protocol version during a renegotiation
+    ProtocolVersion     activeProtocolVersion;
+
     // list of enabled protocols
     ProtocolList enabledProtocols;
 
@@ -124,6 +127,13 @@
     /* Class and subclass dynamic debugging support */
     static final Debug debug = Debug.getInstance("ssl");
 
+    // By default, disable the unsafe legacy session renegotiation
+    static final boolean renegotiable = Debug.getBooleanProperty(
+                    "sun.security.ssl.allowUnsafeRenegotiation", false);
+
+    // need to dispose the object when it is invalidated
+    boolean invalidated;
+
     Handshaker(SSLSocketImpl c, SSLContextImpl context,
             ProtocolList enabledProtocols, boolean needCertVerify,
             boolean isClient) {
@@ -144,6 +154,7 @@
         this.sslContext = context;
         this.isClient = isClient;
         enableNewSession = true;
+        invalidated = false;
 
         setCipherSuite(CipherSuite.C_NULL);
 
@@ -489,7 +500,9 @@
      */
     void processLoop() throws IOException {
 
-        while (input.available() > 0) {
+        // need to read off 4 bytes at least to get the handshake
+        // message type and length.
+        while (input.available() >= 4) {
             byte messageType;
             int messageLen;
 
--- a/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  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
@@ -433,11 +433,12 @@
             connectionState = cs_RENEGOTIATE;
         }
         if (roleIsServer) {
-            handshaker = new ServerHandshaker
-                        (this, sslContext, enabledProtocols, doClientAuth);
+            handshaker = new ServerHandshaker(this, sslContext,
+                        enabledProtocols, doClientAuth,
+                        connectionState == cs_RENEGOTIATE, protocolVersion);
         } else {
-            handshaker = new ClientHandshaker
-                        (this, sslContext, enabledProtocols);
+            handshaker = new ClientHandshaker(this, sslContext,
+                        enabledProtocols, protocolVersion);
         }
         handshaker.enabledCipherSuites = enabledCipherSuites;
         handshaker.setEnableSessionCreation(enableSessionCreation);
@@ -639,6 +640,10 @@
             break;
 
         case cs_DATA:
+            if (!Handshaker.renegotiable) {
+                throw new SSLHandshakeException("renegotiation is not allowed");
+            }
+
             // initialize the handshaker, move to cs_RENEGOTIATE
             initHandshaker();
             break;
@@ -966,7 +971,13 @@
                     handshaker.process_record(inputRecord, expectingFinished);
                     expectingFinished = false;
 
-                    if (handshaker.isDone()) {
+                    if (handshaker.invalidated) {
+                        handshaker = null;
+                        // if state is cs_RENEGOTIATE, revert it to cs_DATA
+                        if (connectionState == cs_RENEGOTIATE) {
+                            connectionState = cs_DATA;
+                        }
+                    } else if (handshaker.isDone()) {
                         sess = handshaker.getSession();
                         if (!writer.hasOutboundData()) {
                             hsStatus = HandshakeStatus.FINISHED;
--- a/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Tue Apr 20 01:24:48 2010 -0700
@@ -907,7 +907,13 @@
                     handshaker.process_record(r, expectingFinished);
                     expectingFinished = false;
 
-                    if (handshaker.isDone()) {
+                    if (handshaker.invalidated) {
+                        handshaker = null;
+                        // if state is cs_RENEGOTIATE, revert it to cs_DATA
+                        if (connectionState == cs_RENEGOTIATE) {
+                            connectionState = cs_DATA;
+                        }
+                    } else if (handshaker.isDone()) {
                         sess = handshaker.getSession();
                         handshaker = null;
                         connectionState = cs_DATA;
@@ -925,6 +931,7 @@
                             t.start();
                         }
                     }
+
                     if (needAppData || connectionState != cs_DATA) {
                         continue;
                     } else {
@@ -1083,11 +1090,12 @@
             connectionState = cs_RENEGOTIATE;
         }
         if (roleIsServer) {
-            handshaker = new ServerHandshaker
-                        (this, sslContext, enabledProtocols, doClientAuth);
+            handshaker = new ServerHandshaker(this, sslContext,
+                        enabledProtocols, doClientAuth,
+                        connectionState == cs_RENEGOTIATE, protocolVersion);
         } else {
-            handshaker = new ClientHandshaker
-                        (this, sslContext, enabledProtocols);
+            handshaker = new ClientHandshaker(this, sslContext,
+                        enabledProtocols, protocolVersion);
         }
         handshaker.enabledCipherSuites = enabledCipherSuites;
         handshaker.setEnableSessionCreation(enableSessionCreation);
@@ -1192,6 +1200,10 @@
             break;
 
         case cs_DATA:
+            if (!Handshaker.renegotiable) {
+                throw new SSLHandshakeException("renegotiation is not allowed");
+            }
+
             // initialize the handshaker, move to cs_RENEGOTIATE
             initHandshaker();
             break;
@@ -1840,6 +1852,11 @@
         return host;
     }
 
+    // ONLY used by HttpsClient to setup the URI specified hostname
+    synchronized public void setHost(String host) {
+        this.host = host;
+    }
+
     /**
      * Gets an input stream to read from the peer on the other side.
      * Data read from this stream was always integrity protected in
--- a/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	Tue Apr 20 01:24:48 2010 -0700
@@ -69,6 +69,9 @@
     // flag to check for clientCertificateVerify message
     private boolean             needClientVerify = false;
 
+    // indicate a renegotiation handshaking
+    private boolean             isRenegotiation = false;
+
     /*
      * For exportable ciphersuites using non-exportable key sizes, we use
      * ephemeral RSA keys. We could also do anonymous RSA in the same way
@@ -96,20 +99,28 @@
      * Constructor ... use the keys found in the auth context.
      */
     ServerHandshaker(SSLSocketImpl socket, SSLContextImpl context,
-            ProtocolList enabledProtocols, byte clientAuth) {
+            ProtocolList enabledProtocols, byte clientAuth,
+            boolean isRenegotiation, ProtocolVersion activeProtocolVersion) {
+
         super(socket, context, enabledProtocols,
                         (clientAuth != SSLEngineImpl.clauth_none), false);
         doClientAuth = clientAuth;
+        this.isRenegotiation = isRenegotiation;
+        this.activeProtocolVersion = activeProtocolVersion;
     }
 
     /*
      * Constructor ... use the keys found in the auth context.
      */
     ServerHandshaker(SSLEngineImpl engine, SSLContextImpl context,
-            ProtocolList enabledProtocols, byte clientAuth) {
+            ProtocolList enabledProtocols, byte clientAuth,
+            boolean isRenegotiation, ProtocolVersion activeProtocolVersion) {
+
         super(engine, context, enabledProtocols,
                         (clientAuth != SSLEngineImpl.clauth_none), false);
         doClientAuth = clientAuth;
+        this.isRenegotiation = isRenegotiation;
+        this.activeProtocolVersion = activeProtocolVersion;
     }
 
     /*
@@ -257,6 +268,45 @@
         if (debug != null && Debug.isOn("handshake")) {
             mesg.print(System.out);
         }
+
+        // if it is a renegotiation request and renegotiation is not allowed
+        if (isRenegotiation && !renegotiable) {
+            if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) {
+                // response with a no_negotiation warning,
+                warningSE(Alerts.alert_no_negotiation);
+
+                // invalidate the handshake so that the caller can
+                // dispose this object.
+                invalidated = true;
+
+                // If there is still unread block in the handshake
+                // input stream, it would be truncated with the disposal
+                // and the next handshake message will become incomplete.
+                //
+                // However, according to SSL/TLS specifications, no more
+                // handshake message could immediately follow ClientHello
+                // or HelloRequest. But in case of any improper messages,
+                // we'd better check to ensure there is no remaining bytes
+                // in the handshake input stream.
+                if (input.available() > 0) {
+                    fatalSE(Alerts.alert_unexpected_message,
+                        "ClientHello followed by an unexpected  " +
+                        "handshake message");
+
+                }
+
+                return;
+            } else {
+                // For SSLv3, send the handshake_failure fatal error.
+                // Note that SSLv3 does not define a no_negotiation alert
+                // like TLSv1. However we cannot ignore the message
+                // simply, otherwise the other side was waiting for a
+                // response that would never come.
+                fatalSE(Alerts.alert_handshake_failure,
+                    "renegotiation is not allowed");
+            }
+        }
+
         /*
          * Always make sure this entire record has been digested before we
          * start emitting output, to ensure correct digesting order.
--- a/jdk/src/share/classes/sun/security/tools/KeyTool.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/security/tools/KeyTool.java	Tue Apr 20 01:24:48 2010 -0700
@@ -977,46 +977,35 @@
             if (filename != null) {
                 inStream = new FileInputStream(filename);
             }
-            // Read the full stream before feeding to X509Factory,
-            // otherwise, keytool -gencert | keytool -importcert
-            // might not work properly, since -gencert is slow
-            // and there's no data in the pipe at the beginning.
-            ByteArrayOutputStream bout = new ByteArrayOutputStream();
+            String importAlias = (alias!=null)?alias:keyAlias;
             try {
-                byte[] b = new byte[4096];
-                while (true) {
-                    int len = inStream.read(b);
-                    if (len < 0) break;
-                    bout.write(b, 0, len);
+                if (keyStore.entryInstanceOf(
+                        importAlias, KeyStore.PrivateKeyEntry.class)) {
+                    kssave = installReply(importAlias, inStream);
+                    if (kssave) {
+                        System.err.println(rb.getString
+                            ("Certificate reply was installed in keystore"));
+                    } else {
+                        System.err.println(rb.getString
+                            ("Certificate reply was not installed in keystore"));
+                    }
+                } else if (!keyStore.containsAlias(importAlias) ||
+                        keyStore.entryInstanceOf(importAlias,
+                            KeyStore.TrustedCertificateEntry.class)) {
+                    kssave = addTrustedCert(importAlias, inStream);
+                    if (kssave) {
+                        System.err.println(rb.getString
+                            ("Certificate was added to keystore"));
+                    } else {
+                        System.err.println(rb.getString
+                            ("Certificate was not added to keystore"));
+                    }
                 }
             } finally {
                 if (inStream != System.in) {
                     inStream.close();
                 }
             }
-            inStream = new ByteArrayInputStream(bout.toByteArray());
-            String importAlias = (alias!=null)?alias:keyAlias;
-            if (keyStore.entryInstanceOf(importAlias, KeyStore.PrivateKeyEntry.class)) {
-                kssave = installReply(importAlias, inStream);
-                if (kssave) {
-                    System.err.println(rb.getString
-                        ("Certificate reply was installed in keystore"));
-                } else {
-                    System.err.println(rb.getString
-                        ("Certificate reply was not installed in keystore"));
-                }
-            } else if (!keyStore.containsAlias(importAlias) ||
-                    keyStore.entryInstanceOf(importAlias,
-                        KeyStore.TrustedCertificateEntry.class)) {
-                kssave = addTrustedCert(importAlias, inStream);
-                if (kssave) {
-                    System.err.println(rb.getString
-                        ("Certificate was added to keystore"));
-                } else {
-                    System.err.println(rb.getString
-                        ("Certificate was not added to keystore"));
-                }
-            }
         } else if (command == IMPORTKEYSTORE) {
             doImportKeyStore();
             kssave = true;
@@ -2149,18 +2138,7 @@
                 inStream = new FileInputStream(filename);
             }
             try {
-                // Read the full stream before feeding to X509Factory,
-                // otherwise, keytool -gencert | keytool -printcert
-                // might not work properly, since -gencert is slow
-                // and there's no data in the pipe at the beginning.
-                ByteArrayOutputStream bout = new ByteArrayOutputStream();
-                byte[] b = new byte[4096];
-                while (true) {
-                    int len = inStream.read(b);
-                    if (len < 0) break;
-                    bout.write(b, 0, len);
-                }
-                printCertFromStream(new ByteArrayInputStream(bout.toByteArray()), out);
+                printCertFromStream(inStream, out);
             } finally {
                 if (inStream != System.in) {
                     inStream.close();
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java	Tue Apr 20 01:24:48 2010 -0700
@@ -446,12 +446,13 @@
             {"America/Winnipeg", CST},
             {"America/Yakutat", AKST},
             {"America/Yellowknife", MST},
-            {"Antarctica/Casey", new String[] {"Casey Time", "CAST",
-                                               "Casey Summer Time", "CAST"}},
+            {"Antarctica/Casey", WST_AUS},
             {"Antarctica/Davis", new String[] {"Davis Time", "DAVT",
                                                "Davis Summer Time", "DAVST"}},
             {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville Time", "DDUT",
                                                         "Dumont-d'Urville Summer Time", "DDUST"}},
+            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
+                                                   "Macquarie Island Summer Time", "MIST"}},
             {"Antarctica/Mawson", new String[] {"Mawson Time", "MAWT",
                                                 "Mawson Summer Time", "MAWST"}},
             {"Antarctica/McMurdo", NZST},
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -40,7 +40,7 @@
 
 void bytes::malloc(size_t len_) {
   len = len_;
-  ptr = NEW(byte, len_+1);  // add trailing zero byte always
+  ptr = NEW(byte, add_size(len_, 1));  // add trailing zero byte always
   if (ptr == null) {
     // set ptr to some victim memory, to ease escape
     set(dummy, sizeof(dummy)-1);
@@ -56,7 +56,7 @@
     return;
   }
   byte* oldptr = ptr;
-  ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, len_+1);
+  ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, add_size(len_, 1));
   if (ptr != null)  {
     mtrace('r', oldptr, 0);
     mtrace('m', ptr, len_+1);
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -507,7 +507,7 @@
 
 maybe_inline
 void unpacker::saveTo(bytes& b, byte* ptr, size_t len) {
-  b.ptr = U_NEW(byte, len+1);
+  b.ptr = U_NEW(byte, add_size(len,1));
   if (aborting()) {
     b.len = 0;
     return;
@@ -1154,7 +1154,7 @@
     *fillp = 0;  // bigbuf must contain a well-formed Utf8 string
     int length = (int)(fillp - bigbuf.ptr);
     bytes& value = cpMap[i].value.b;
-    value.set(U_NEW(byte, length+1), length);
+    value.set(U_NEW(byte, add_size(length,1)), length);
     value.copyFrom(bigbuf.ptr, length);
     CHECK;
     // Index all Utf8 strings
@@ -1626,7 +1626,7 @@
     return no_bands;
   } else {
     int nb = bs_limit - bs_base;
-    band** res = U_NEW(band*, nb+1);
+    band** res = U_NEW(band*, add_size(nb, 1));
     CHECK_(no_bands);
     for (int i = 0; i < nb; i++) {
       band* b = (band*) band_stack.get(bs_base + i);
@@ -1735,7 +1735,7 @@
             }
             // save away the case labels
             int ntags = band_stack.length() - case_base;
-            int* tags = U_NEW(int, 1+ntags);
+            int* tags = U_NEW(int, add_size(ntags, 1));
             CHECK_(lp);
             k_case.le_casetags = tags;
             *tags++ = ntags;
@@ -3139,8 +3139,8 @@
   int*     field_counts  = T_NEW(int, nclasses);
   int*     method_counts = T_NEW(int, nclasses);
   cpindex* all_indexes   = U_NEW(cpindex, nclasses*2);
-  entry**  field_ix      = U_NEW(entry*, nfields+nclasses);
-  entry**  method_ix     = U_NEW(entry*, nmethods+nclasses);
+  entry**  field_ix      = U_NEW(entry*, add_size(nfields, nclasses));
+  entry**  method_ix     = U_NEW(entry*, add_size(nmethods, nclasses));
 
   for (j = 0; j < nfields; j++) {
     entry& f = fields[j];
@@ -4132,7 +4132,7 @@
           }
           const char* suffix = ".java";
           int len = (int)(prefix.len + strlen(suffix));
-          bytes name; name.set(T_NEW(byte, len + 1), len);
+          bytes name; name.set(T_NEW(byte, add_size(len, 1)), len);
           name.strcat(prefix).strcat(suffix);
           ref = cp.ensureUtf8(name);
         }
@@ -4647,7 +4647,7 @@
       bytes& prefix = cur_class->ref(0)->value.b;
       const char* suffix = ".class";
       int len = (int)(prefix.len + strlen(suffix));
-      bytes name; name.set(T_NEW(byte, len + 1), len);
+      bytes name; name.set(T_NEW(byte, add_size(len, 1)), len);
       cur_file.name = name.strcat(prefix).strcat(suffix).strval();
     }
   } else {
@@ -4714,6 +4714,7 @@
         input.ensureSize(fleft);
       }
       rplimit = rp = input.base();
+      CHECK;
       input.setLimit(rp + fleft);
       if (!ensure_input(fleft))
         abort("EOF reading resource file");
--- a/jdk/src/share/native/java/lang/System.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/lang/System.c	Tue Apr 20 01:24:48 2010 -0700
@@ -67,10 +67,13 @@
         (*env)->DeleteLocalRef(env, r); \
     } else ((void) 0)
 
-#define PUTPROP_ForPlatformCString(props, key, val) \
+/*  "key" is a char type string with only ASCII character in it.
+    "val" is a nchar (typedefed in java_props.h) type string  */
+
+#define PUTPROP_ForPlatformNString(props, key, val) \
     if (1) { \
-        jstring jkey = JNU_NewStringPlatform(env, key); \
-        jstring jval = JNU_NewStringPlatform(env, val); \
+        jstring jkey = (*env)->NewStringUTF(env, key);  \
+        jstring jval = GetStringPlatform(env, val); \
         jobject r = (*env)->CallObjectMethod(env, props, putID, jkey, jval); \
         if ((*env)->ExceptionOccurred(env)) return NULL; \
         (*env)->DeleteLocalRef(env, jkey); \
@@ -150,7 +153,7 @@
             (sprops->cpu_isalist ? sprops->cpu_isalist : ""));
     PUTPROP(props, "sun.cpu.endian",  sprops->cpu_endian);
 
-    /* !!! DO NOT call PUTPROP_ForPlatformCString before this line !!!
+    /* !!! DO NOT call PUTPROP_ForPlatformNString before this line !!!
      * !!! I18n properties have not been set up yet !!!
      */
 
@@ -195,18 +198,18 @@
      */
     PUTPROP(props, "java.awt.graphicsenv", sprops->graphics_env);
     if (sprops->font_dir != NULL) {
-        PUTPROP_ForPlatformCString(props,
+        PUTPROP_ForPlatformNString(props,
                                    "sun.java2d.fontpath", sprops->font_dir);
     }
 
-    PUTPROP_ForPlatformCString(props, "java.io.tmpdir", sprops->tmp_dir);
+    PUTPROP_ForPlatformNString(props, "java.io.tmpdir", sprops->tmp_dir);
 
-    PUTPROP_ForPlatformCString(props, "user.name", sprops->user_name);
-    PUTPROP_ForPlatformCString(props, "user.home", sprops->user_home);
+    PUTPROP_ForPlatformNString(props, "user.name", sprops->user_name);
+    PUTPROP_ForPlatformNString(props, "user.home", sprops->user_home);
 
     PUTPROP(props, "user.timezone", sprops->timezone);
 
-    PUTPROP_ForPlatformCString(props, "user.dir", sprops->user_dir);
+    PUTPROP_ForPlatformNString(props, "user.dir", sprops->user_dir);
 
     /* This is a sun. property as it is currently only set for Gnome and
      * Windows desktops.
--- a/jdk/src/share/native/java/lang/java_props.h	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/lang/java_props.h	Tue Apr 20 01:24:48 2010 -0700
@@ -28,21 +28,29 @@
 
 #include <jni_util.h>
 
+/* The preferred native type for storing text on the current OS */
+#ifdef WIN32
+#include <tchar.h>
+typedef WCHAR nchar;
+#else
+typedef char nchar;
+#endif
+
 typedef struct {
     char *os_name;
     char *os_version;
     char *os_arch;
 
-    char *tmp_dir;
-    char *font_dir;
-    char *user_dir;
+    nchar *tmp_dir;
+    nchar *font_dir;
+    nchar *user_dir;
 
     char *file_separator;
     char *path_separator;
     char *line_separator;
 
-    char *user_name;
-    char *user_home;
+    nchar *user_name;
+    nchar *user_home;
 
     char *language;
     char *country;
@@ -71,5 +79,6 @@
 } java_props_t;
 
 java_props_t *GetJavaProperties(JNIEnv *env);
+jstring GetStringPlatform(JNIEnv *env, nchar* str);
 
 #endif /* _JAVA_PROPS_H */
--- a/jdk/src/share/native/java/util/zip/Deflater.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/util/zip/Deflater.c	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  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
@@ -38,7 +38,6 @@
 
 #define DEF_MEM_LEVEL 8
 
-static jfieldID strmID;
 static jfieldID levelID;
 static jfieldID strategyID;
 static jfieldID setParamsID;
@@ -49,7 +48,6 @@
 JNIEXPORT void JNICALL
 Java_java_util_zip_Deflater_initIDs(JNIEnv *env, jclass cls)
 {
-    strmID = (*env)->GetFieldID(env, cls, "strm", "J");
     levelID = (*env)->GetFieldID(env, cls, "level", "I");
     strategyID = (*env)->GetFieldID(env, cls, "strategy", "I");
     setParamsID = (*env)->GetFieldID(env, cls, "setParams", "Z");
@@ -94,7 +92,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong strm,
+Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong addr,
                                           jarray b, jint off, jint len)
 {
     Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0);
@@ -102,7 +100,7 @@
     if (buf == 0) {/* out of memory */
         return;
     }
-    res = deflateSetDictionary((z_stream *)jlong_to_ptr(strm), buf + off, len);
+    res = deflateSetDictionary((z_stream *)jlong_to_ptr(addr), buf + off, len);
     (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0);
     switch (res) {
     case Z_OK:
@@ -111,151 +109,144 @@
         JNU_ThrowIllegalArgumentException(env, 0);
         break;
     default:
-        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(strm))->msg);
+        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg);
         break;
     }
 }
 
 JNIEXPORT jint JNICALL
-Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this,
+Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
                                          jarray b, jint off, jint len, jint flush)
 {
-    z_stream *strm = jlong_to_ptr((*env)->GetLongField(env, this, strmID));
+    z_stream *strm = jlong_to_ptr(addr);
 
-    if (strm == 0) {
-        JNU_ThrowNullPointerException(env, 0);
-        return 0;
-    } else {
-        jarray this_buf = (*env)->GetObjectField(env, this, bufID);
-        jint this_off = (*env)->GetIntField(env, this, offID);
-        jint this_len = (*env)->GetIntField(env, this, lenID);
-        jbyte *in_buf;
-        jbyte *out_buf;
-        int res;
-        if ((*env)->GetBooleanField(env, this, setParamsID)) {
-            int level = (*env)->GetIntField(env, this, levelID);
-            int strategy = (*env)->GetIntField(env, this, strategyID);
+    jarray this_buf = (*env)->GetObjectField(env, this, bufID);
+    jint this_off = (*env)->GetIntField(env, this, offID);
+    jint this_len = (*env)->GetIntField(env, this, lenID);
+    jbyte *in_buf;
+    jbyte *out_buf;
+    int res;
+    if ((*env)->GetBooleanField(env, this, setParamsID)) {
+        int level = (*env)->GetIntField(env, this, levelID);
+        int strategy = (*env)->GetIntField(env, this, strategyID);
 
-            in_buf = (jbyte *) malloc(this_len);
-            if (in_buf == 0) {
-                JNU_ThrowOutOfMemoryError(env, 0);
-                return 0;
-            }
-            (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
+        in_buf = (jbyte *) malloc(this_len);
+        if (in_buf == 0) {
+            JNU_ThrowOutOfMemoryError(env, 0);
+            return 0;
+        }
+        (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
+        out_buf = (jbyte *) malloc(len);
+        if (out_buf == 0) {
+            free(in_buf);
+            JNU_ThrowOutOfMemoryError(env, 0);
+            return 0;
+        }
 
-            out_buf = (jbyte *) malloc(len);
-            if (out_buf == 0) {
-                free(in_buf);
-                JNU_ThrowOutOfMemoryError(env, 0);
-                return 0;
-            }
+        strm->next_in = (Bytef *) in_buf;
+        strm->next_out = (Bytef *) out_buf;
+        strm->avail_in = this_len;
+        strm->avail_out = len;
+        res = deflateParams(strm, level, strategy);
 
-            strm->next_in = (Bytef *) in_buf;
-            strm->next_out = (Bytef *) out_buf;
-            strm->avail_in = this_len;
-            strm->avail_out = len;
-            res = deflateParams(strm, level, strategy);
-
-            if (res == Z_OK) {
-                (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
-            }
-            free(out_buf);
-            free(in_buf);
+        if (res == Z_OK) {
+            (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
+        }
+        free(out_buf);
+        free(in_buf);
 
-            switch (res) {
-            case Z_OK:
-                (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
-                this_off += this_len - strm->avail_in;
-                (*env)->SetIntField(env, this, offID, this_off);
-                (*env)->SetIntField(env, this, lenID, strm->avail_in);
-                return len - strm->avail_out;
-            case Z_BUF_ERROR:
-                (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
-                return 0;
-            default:
-                JNU_ThrowInternalError(env, strm->msg);
-                return 0;
-            }
-        } else {
-            jboolean finish = (*env)->GetBooleanField(env, this, finishID);
-
-            in_buf = (jbyte *) malloc(this_len);
-            if (in_buf == 0) {
-                JNU_ThrowOutOfMemoryError(env, 0);
-                return 0;
-            }
-            (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
+        switch (res) {
+        case Z_OK:
+            (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
+            this_off += this_len - strm->avail_in;
+            (*env)->SetIntField(env, this, offID, this_off);
+            (*env)->SetIntField(env, this, lenID, strm->avail_in);
+            return len - strm->avail_out;
+        case Z_BUF_ERROR:
+            (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
+            return 0;
+        default:
+            JNU_ThrowInternalError(env, strm->msg);
+            return 0;
+        }
+    } else {
+        jboolean finish = (*env)->GetBooleanField(env, this, finishID);
+        in_buf = (jbyte *) malloc(this_len);
+        if (in_buf == 0) {
+            JNU_ThrowOutOfMemoryError(env, 0);
+            return 0;
+        }
+        (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
 
-            out_buf = (jbyte *) malloc(len);
-            if (out_buf == 0) {
-                free(in_buf);
-                JNU_ThrowOutOfMemoryError(env, 0);
-                return 0;
-            }
+        out_buf = (jbyte *) malloc(len);
+        if (out_buf == 0) {
+            free(in_buf);
+            JNU_ThrowOutOfMemoryError(env, 0);
+            return 0;
+        }
 
-            strm->next_in = (Bytef *) in_buf;
-            strm->next_out = (Bytef *) out_buf;
-            strm->avail_in = this_len;
-            strm->avail_out = len;
-            res = deflate(strm, finish ? Z_FINISH : flush);
+        strm->next_in = (Bytef *) in_buf;
+        strm->next_out = (Bytef *) out_buf;
+        strm->avail_in = this_len;
+        strm->avail_out = len;
+        res = deflate(strm, finish ? Z_FINISH : flush);
 
-            if (res == Z_STREAM_END || res == Z_OK) {
-                (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
-            }
-            free(out_buf);
-            free(in_buf);
+        if (res == Z_STREAM_END || res == Z_OK) {
+            (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
+        }
+        free(out_buf);
+        free(in_buf);
 
-            switch (res) {
-            case Z_STREAM_END:
-                (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
-                /* fall through */
-            case Z_OK:
-                this_off += this_len - strm->avail_in;
-                (*env)->SetIntField(env, this, offID, this_off);
-                (*env)->SetIntField(env, this, lenID, strm->avail_in);
-                return len - strm->avail_out;
-            case Z_BUF_ERROR:
-                return 0;
+        switch (res) {
+        case Z_STREAM_END:
+            (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
+            /* fall through */
+        case Z_OK:
+            this_off += this_len - strm->avail_in;
+            (*env)->SetIntField(env, this, offID, this_off);
+            (*env)->SetIntField(env, this, lenID, strm->avail_in);
+            return len - strm->avail_out;
+        case Z_BUF_ERROR:
+            return 0;
             default:
-                JNU_ThrowInternalError(env, strm->msg);
-                return 0;
-            }
+            JNU_ThrowInternalError(env, strm->msg);
+            return 0;
         }
     }
 }
 
 JNIEXPORT jint JNICALL
-Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
 {
-    return ((z_stream *)jlong_to_ptr(strm))->adler;
+    return ((z_stream *)jlong_to_ptr(addr))->adler;
 }
 
 JNIEXPORT jlong JNICALL
-Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
 {
-    return ((z_stream *)jlong_to_ptr(strm))->total_in;
+    return ((z_stream *)jlong_to_ptr(addr))->total_in;
 }
 
 JNIEXPORT jlong JNICALL
-Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
 {
-    return ((z_stream *)jlong_to_ptr(strm))->total_out;
+    return ((z_stream *)jlong_to_ptr(addr))->total_out;
 }
 
 JNIEXPORT void JNICALL
-Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong addr)
 {
-    if (deflateReset((z_stream *)jlong_to_ptr(strm)) != Z_OK) {
+    if (deflateReset((z_stream *)jlong_to_ptr(addr)) != Z_OK) {
         JNU_ThrowInternalError(env, 0);
     }
 }
 
 JNIEXPORT void JNICALL
-Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong addr)
 {
-    if (deflateEnd((z_stream *)jlong_to_ptr(strm)) == Z_STREAM_ERROR) {
+    if (deflateEnd((z_stream *)jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
         JNU_ThrowInternalError(env, 0);
     } else {
-        free((z_stream *)jlong_to_ptr(strm));
+        free((z_stream *)jlong_to_ptr(addr));
     }
 }
--- a/jdk/src/share/native/java/util/zip/Inflater.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/util/zip/Inflater.c	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  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
@@ -41,7 +41,6 @@
 #define ThrowDataFormatException(env, msg) \
         JNU_ThrowByName(env, "java/util/zip/DataFormatException", msg)
 
-static jfieldID strmID;
 static jfieldID needDictID;
 static jfieldID finishedID;
 static jfieldID bufID, offID, lenID;
@@ -49,7 +48,6 @@
 JNIEXPORT void JNICALL
 Java_java_util_zip_Inflater_initIDs(JNIEnv *env, jclass cls)
 {
-    strmID = (*env)->GetFieldID(env, cls, "strm", "J");
     needDictID = (*env)->GetFieldID(env, cls, "needDict", "Z");
     finishedID = (*env)->GetFieldID(env, cls, "finished", "Z");
     bufID = (*env)->GetFieldID(env, cls, "buf", "[B");
@@ -84,134 +82,129 @@
 }
 
 JNIEXPORT void JNICALL
-Java_java_util_zip_Inflater_setDictionary(JNIEnv *env, jclass cls, jlong strm,
+Java_java_util_zip_Inflater_setDictionary(JNIEnv *env, jclass cls, jlong addr,
                                           jarray b, jint off, jint len)
 {
     Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0);
     int res;
     if (buf == 0) /* out of memory */
         return;
-    res = inflateSetDictionary(jlong_to_ptr(strm), buf + off, len);
+    res = inflateSetDictionary(jlong_to_ptr(addr), buf + off, len);
     (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0);
     switch (res) {
     case Z_OK:
         break;
     case Z_STREAM_ERROR:
     case Z_DATA_ERROR:
-        JNU_ThrowIllegalArgumentException(env, ((z_stream *)jlong_to_ptr(strm))->msg);
+        JNU_ThrowIllegalArgumentException(env, ((z_stream *)jlong_to_ptr(addr))->msg);
         break;
     default:
-        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(strm))->msg);
+        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg);
         break;
     }
 }
 
 JNIEXPORT jint JNICALL
-Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this,
+Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
                                          jarray b, jint off, jint len)
 {
-    z_stream *strm = jlong_to_ptr((*env)->GetLongField(env, this, strmID));
+    z_stream *strm = jlong_to_ptr(addr);
 
-    if (strm == 0) {
-        JNU_ThrowNullPointerException(env, 0);
-        return 0;
-    } else {
-        jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
-        jint this_off = (*env)->GetIntField(env, this, offID);
-        jint this_len = (*env)->GetIntField(env, this, lenID);
-        jbyte *in_buf;
-        jbyte *out_buf;
-        int ret;
+    jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
+    jint this_off = (*env)->GetIntField(env, this, offID);
+    jint this_len = (*env)->GetIntField(env, this, lenID);
+    jbyte *in_buf;
+    jbyte *out_buf;
+    int ret;
 
-        in_buf = (jbyte *) malloc(this_len);
-        if (in_buf == 0) {
-            JNU_ThrowOutOfMemoryError(env, 0);
-            return 0;
-        }
-        (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
+    in_buf = (jbyte *) malloc(this_len);
+    if (in_buf == 0) {
+        JNU_ThrowOutOfMemoryError(env, 0);
+        return 0;
+    }
+    (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
 
-        out_buf = (jbyte *) malloc(len);
-        if (out_buf == 0) {
-            free(in_buf);
-            JNU_ThrowOutOfMemoryError(env, 0);
-            return 0;
-        }
+    out_buf = (jbyte *) malloc(len);
+    if (out_buf == 0) {
+        free(in_buf);
+        JNU_ThrowOutOfMemoryError(env, 0);
+        return 0;
+    }
 
-        strm->next_in  = (Bytef *) in_buf;
-        strm->next_out = (Bytef *) out_buf;
-        strm->avail_in  = this_len;
-        strm->avail_out = len;
-        ret = inflate(strm, Z_PARTIAL_FLUSH);
+    strm->next_in  = (Bytef *) in_buf;
+    strm->next_out = (Bytef *) out_buf;
+    strm->avail_in  = this_len;
+    strm->avail_out = len;
+    ret = inflate(strm, Z_PARTIAL_FLUSH);
 
-        if (ret == Z_STREAM_END || ret == Z_OK) {
-            (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
-        }
-        free(out_buf);
-        free(in_buf);
+    if (ret == Z_STREAM_END || ret == Z_OK) {
+        (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
+    }
+    free(out_buf);
+    free(in_buf);
 
-        switch (ret) {
-        case Z_STREAM_END:
-            (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
-            /* fall through */
-        case Z_OK:
-            this_off += this_len - strm->avail_in;
-            (*env)->SetIntField(env, this, offID, this_off);
-            (*env)->SetIntField(env, this, lenID, strm->avail_in);
-            return len - strm->avail_out;
-        case Z_NEED_DICT:
-            (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
-            /* Might have consumed some input here! */
-            this_off += this_len - strm->avail_in;
-            (*env)->SetIntField(env, this, offID, this_off);
-            (*env)->SetIntField(env, this, lenID, strm->avail_in);
-            return 0;
-        case Z_BUF_ERROR:
-            return 0;
-        case Z_DATA_ERROR:
-            ThrowDataFormatException(env, strm->msg);
-            return 0;
-        case Z_MEM_ERROR:
-            JNU_ThrowOutOfMemoryError(env, 0);
-            return 0;
-        default:
-            JNU_ThrowInternalError(env, strm->msg);
-            return 0;
-        }
+    switch (ret) {
+    case Z_STREAM_END:
+        (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
+        /* fall through */
+    case Z_OK:
+        this_off += this_len - strm->avail_in;
+        (*env)->SetIntField(env, this, offID, this_off);
+        (*env)->SetIntField(env, this, lenID, strm->avail_in);
+        return len - strm->avail_out;
+    case Z_NEED_DICT:
+        (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
+        /* Might have consumed some input here! */
+        this_off += this_len - strm->avail_in;
+        (*env)->SetIntField(env, this, offID, this_off);
+        (*env)->SetIntField(env, this, lenID, strm->avail_in);
+        return 0;
+    case Z_BUF_ERROR:
+        return 0;
+    case Z_DATA_ERROR:
+        ThrowDataFormatException(env, strm->msg);
+        return 0;
+    case Z_MEM_ERROR:
+        JNU_ThrowOutOfMemoryError(env, 0);
+        return 0;
+    default:
+        JNU_ThrowInternalError(env, strm->msg);
+        return 0;
     }
 }
 
 JNIEXPORT jint JNICALL
-Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
 {
-    return ((z_stream *)jlong_to_ptr(strm))->adler;
+    return ((z_stream *)jlong_to_ptr(addr))->adler;
 }
 
 JNIEXPORT jlong JNICALL
-Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
 {
-    return ((z_stream *)jlong_to_ptr(strm))->total_in;
+    return ((z_stream *)jlong_to_ptr(addr))->total_in;
 }
 
 JNIEXPORT jlong JNICALL
-Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
 {
-    return ((z_stream *)jlong_to_ptr(strm))->total_out;
+    return ((z_stream *)jlong_to_ptr(addr))->total_out;
 }
 
 JNIEXPORT void JNICALL
-Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr)
 {
-    if (inflateReset(jlong_to_ptr(strm)) != Z_OK) {
+    if (inflateReset(jlong_to_ptr(addr)) != Z_OK) {
         JNU_ThrowInternalError(env, 0);
     }
 }
 
 JNIEXPORT void JNICALL
-Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong strm)
+Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr)
 {
-    if (inflateEnd(jlong_to_ptr(strm)) == Z_STREAM_ERROR) {
+    if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
         JNU_ThrowInternalError(env, 0);
     } else {
-        free(jlong_to_ptr(strm));
+        free(jlong_to_ptr(addr));
     }
 }
--- a/jdk/src/share/native/java/util/zip/ZipFile.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/util/zip/ZipFile.c	Tue Apr 20 01:24:48 2010 -0700
@@ -81,7 +81,8 @@
 
 JNIEXPORT jlong JNICALL
 Java_java_util_zip_ZipFile_open(JNIEnv *env, jclass cls, jstring name,
-                                        jint mode, jlong lastModified)
+                                        jint mode, jlong lastModified,
+                                        jboolean usemmap)
 {
     const char *path = JNU_GetStringPlatformChars(env, name, 0);
     char *msg = 0;
@@ -109,7 +110,7 @@
                 goto finally;
             }
 #endif
-            zip = ZIP_Put_In_Cache(path, zfd, &msg, lastModified);
+            zip = ZIP_Put_In_Cache0(path, zfd, &msg, lastModified, usemmap);
         }
 
         if (zip != 0) {
--- a/jdk/src/share/native/java/util/zip/zip_util.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/util/zip/zip_util.c	Tue Apr 20 01:24:48 2010 -0700
@@ -251,11 +251,16 @@
     if (zip->lock != NULL) MDESTROY(zip->lock);
     free(zip->name);
     freeCEN(zip);
+
 #ifdef USE_MMAP
-    if (zip->maddr != NULL) munmap((char *)zip->maddr, zip->mlen);
-#else
-    free(zip->cencache.data);
+    if (zip->usemmap) {
+        if (zip->maddr != NULL)
+            munmap((char *)zip->maddr, zip->mlen);
+    } else
 #endif
+    {
+        free(zip->cencache.data);
+    }
     if (zip->comment != NULL)
         free(zip->comment);
     if (zip->zfd != -1) ZFILE_Close(zip->zfd);
@@ -585,49 +590,53 @@
         ZIP_FORMAT_ERROR("invalid END header (bad central directory offset)");
 
 #ifdef USE_MMAP
-     /* On Solaris & Linux prior to JDK 6, we used to mmap the whole jar file to
-      * read the jar file contents. However, this greatly increased the perceived
-      * footprint numbers because the mmap'ed pages were adding into the totals shown
-      * by 'ps' and 'top'. We switched to mmaping only the central directory of jar
-      * file while calling 'read' to read the rest of jar file. Here are a list of
-      * reasons apart from above of why we are doing so:
-      * 1. Greatly reduces mmap overhead after startup complete;
-      * 2. Avoids dual path code maintainance;
-      * 3. Greatly reduces risk of address space (not virtual memory) exhaustion.
-      */
-    if (pagesize == 0) {
-        pagesize = (jlong)sysconf(_SC_PAGESIZE);
-        if (pagesize == 0) goto Catch;
-    }
-    if (cenpos > pagesize) {
-        offset = cenpos & ~(pagesize - 1);
-    } else {
-        offset = 0;
+    if (zip->usemmap) {
+      /* On Solaris & Linux prior to JDK 6, we used to mmap the whole jar file to
+       * read the jar file contents. However, this greatly increased the perceived
+       * footprint numbers because the mmap'ed pages were adding into the totals shown
+       * by 'ps' and 'top'. We switched to mmaping only the central directory of jar
+       * file while calling 'read' to read the rest of jar file. Here are a list of
+       * reasons apart from above of why we are doing so:
+       * 1. Greatly reduces mmap overhead after startup complete;
+       * 2. Avoids dual path code maintainance;
+       * 3. Greatly reduces risk of address space (not virtual memory) exhaustion.
+       */
+        if (pagesize == 0) {
+            pagesize = (jlong)sysconf(_SC_PAGESIZE);
+            if (pagesize == 0) goto Catch;
+        }
+        if (cenpos > pagesize) {
+            offset = cenpos & ~(pagesize - 1);
+        } else {
+            offset = 0;
+        }
+        /* When we are not calling recursively, knownTotal is -1. */
+        if (knownTotal == -1) {
+            void* mappedAddr;
+            /* Mmap the CEN and END part only. We have to figure
+               out the page size in order to make offset to be multiples of
+               page size.
+            */
+            zip->mlen = cenpos - offset + cenlen + endhdrlen;
+            zip->offset = offset;
+            mappedAddr = mmap64(0, zip->mlen, PROT_READ, MAP_SHARED, zip->zfd, (off64_t) offset);
+            zip->maddr = (mappedAddr == (void*) MAP_FAILED) ? NULL :
+                (unsigned char*)mappedAddr;
+
+            if (zip->maddr == NULL) {
+                jio_fprintf(stderr, "mmap failed for CEN and END part of zip file\n");
+                goto Catch;
+            }
+        }
+        cenbuf = zip->maddr + cenpos - offset;
+    } else
+#endif
+    {
+        if ((cenbuf = malloc((size_t) cenlen)) == NULL ||
+            (readFullyAt(zip->zfd, cenbuf, cenlen, cenpos) == -1))
+        goto Catch;
     }
-    /* When we are not calling recursively, knownTotal is -1. */
-    if (knownTotal == -1) {
-        void* mappedAddr;
-        /* Mmap the CEN and END part only. We have to figure
-           out the page size in order to make offset to be multiples of
-           page size.
-        */
-        zip->mlen = cenpos - offset + cenlen + endhdrlen;
-        zip->offset = offset;
-        mappedAddr = mmap64(0, zip->mlen, PROT_READ, MAP_SHARED, zip->zfd, (off64_t) offset);
-        zip->maddr = (mappedAddr == (void*) MAP_FAILED) ? NULL :
-            (unsigned char*)mappedAddr;
 
-        if (zip->maddr == NULL) {
-            jio_fprintf(stderr, "mmap failed for CEN and END part of zip file\n");
-            goto Catch;
-        }
-    }
-    cenbuf = zip->maddr + cenpos - offset;
-#else
-    if ((cenbuf = malloc((size_t) cenlen)) == NULL ||
-        (readFullyAt(zip->zfd, cenbuf, cenlen, cenpos) == -1))
-        goto Catch;
-#endif
     cenend = cenbuf + cenlen;
 
     /* Initialize zip file data structures based on the total number
@@ -700,9 +709,11 @@
     cenpos = -1;
 
  Finally:
-#ifndef USE_MMAP
-    free(cenbuf);
+#ifdef USE_MMAP
+    if (!zip->usemmap)
 #endif
+        free(cenbuf);
+
     return cenpos;
 }
 
@@ -782,9 +793,17 @@
  * If a zip error occurs, then *pmsg will be set to the error message text if
  * pmsg != 0. Otherwise, *pmsg will be set to NULL.
  */
+
 jzfile *
 ZIP_Put_In_Cache(const char *name, ZFILE zfd, char **pmsg, jlong lastModified)
 {
+    return ZIP_Put_In_Cache0(name, zfd, pmsg, lastModified, JNI_TRUE);
+}
+
+jzfile *
+ZIP_Put_In_Cache0(const char *name, ZFILE zfd, char **pmsg, jlong lastModified,
+                 jboolean usemmap)
+{
     static char errbuf[256];
     jlong len;
     jzfile *zip;
@@ -793,6 +812,9 @@
         return NULL;
     }
 
+#ifdef USE_MMAP
+    zip->usemmap = usemmap;
+#endif
     zip->refs = 1;
     zip->lastModified = lastModified;
 
@@ -877,8 +899,6 @@
     return;
 }
 
-#ifndef USE_MMAP
-
 /* Empirically, most CEN headers are smaller than this. */
 #define AMPLE_CEN_HEADER_SIZE 160
 
@@ -928,7 +948,6 @@
     cache->pos  = cenpos;
     return cen;
 }
-#endif /* not USE_MMAP */
 
 typedef enum { ACCESS_RANDOM, ACCESS_SEQUENTIAL } AccessHint;
 
@@ -953,14 +972,17 @@
     ze->comment = NULL;
 
 #ifdef USE_MMAP
-    cen = (char*) zip->maddr + zc->cenpos - zip->offset;
-#else
-    if (accessHint == ACCESS_RANDOM)
-        cen = readCENHeader(zip, zc->cenpos, AMPLE_CEN_HEADER_SIZE);
-    else
-        cen = sequentialAccessReadCENHeader(zip, zc->cenpos);
-    if (cen == NULL) goto Catch;
+    if (zip->usemmap) {
+        cen = (char*) zip->maddr + zc->cenpos - zip->offset;
+    } else
 #endif
+    {
+        if (accessHint == ACCESS_RANDOM)
+            cen = readCENHeader(zip, zc->cenpos, AMPLE_CEN_HEADER_SIZE);
+        else
+            cen = sequentialAccessReadCENHeader(zip, zc->cenpos);
+        if (cen == NULL) goto Catch;
+    }
 
     nlen      = CENNAM(cen);
     elen      = CENEXT(cen);
@@ -976,7 +998,6 @@
     if ((ze->name = malloc(nlen + 1)) == NULL) goto Catch;
     memcpy(ze->name, cen + CENHDR, nlen);
     ze->name[nlen] = '\0';
-
     if (elen > 0) {
         char *extra = cen + CENHDR + nlen;
 
@@ -1037,9 +1058,10 @@
     ze = NULL;
 
  Finally:
-#ifndef USE_MMAP
-    if (cen != NULL && accessHint == ACCESS_RANDOM) free(cen);
+#ifdef USE_MMAP
+    if (!zip->usemmap)
 #endif
+        if (cen != NULL && accessHint == ACCESS_RANDOM) free(cen);
     return ze;
 }
 
--- a/jdk/src/share/native/java/util/zip/zip_util.h	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/java/util/zip/zip_util.h	Tue Apr 20 01:24:48 2010 -0700
@@ -45,9 +45,6 @@
  * Header sizes including signatures
  */
 
-#ifdef USE_MMAP
-#define SIGSIZ  4
-#endif
 #define LOCHDR 30
 #define EXTHDR 16
 #define CENHDR 46
@@ -211,9 +208,9 @@
     jlong mlen;           /* length (in bytes) mmaped */
     jlong offset;         /* offset of the mmapped region from the
                              start of the file. */
-#else
+    jboolean usemmap;     /* if mmap is used. */
+#endif
     cencache cencache;    /* CEN header cache */
-#endif
     ZFILE zfd;            /* open file descriptor */
     void *lock;           /* read lock */
     char *comment;        /* zip file comment */
@@ -259,6 +256,9 @@
 jzfile *
 ZIP_Put_In_Cache(const char *name, ZFILE zfd, char **pmsg, jlong lastModified);
 
+jzfile *
+ZIP_Put_In_Cache0(const char *name, ZFILE zfd, char **pmsg, jlong lastModified, jboolean usemmap);
+
 void JNICALL
 ZIP_Close(jzfile *zip);
 
--- a/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	Tue Apr 20 01:24:48 2010 -0700
@@ -258,6 +258,7 @@
 
 typedef struct pixelBufferStruct {
     jobject hpixelObject;   // Usually a DataBuffer bank as a byte array
+    unsigned int byteBufferLength;
     union pixptr {
         INT32         *ip;  // Pinned buffer pointer, as 32-bit ints
         unsigned char *bp;  // Pinned buffer pointer, as bytes
@@ -270,6 +271,7 @@
  */
 static void initPixelBuffer(pixelBufferPtr pb) {
     pb->hpixelObject = NULL;
+    pb->byteBufferLength = 0;
     pb->buf.ip = NULL;
 }
 
@@ -279,13 +281,13 @@
  */
 static int setPixelBuffer(JNIEnv *env, pixelBufferPtr pb, jobject obj) {
     pb->hpixelObject = (*env)->NewGlobalRef(env, obj);
-
     if (pb->hpixelObject == NULL) {
         JNU_ThrowByName( env,
                          "java/lang/OutOfMemoryError",
                          "Setting Pixel Buffer");
         return NOT_OK;
     }
+    pb->byteBufferLength = (*env)->GetArrayLength(env, pb->hpixelObject);
     return OK;
 }
 
@@ -302,6 +304,7 @@
         unpinPixelBuffer(env, pb);
         (*env)->DeleteGlobalRef(env, pb->hpixelObject);
         pb->hpixelObject = NULL;
+        pb->byteBufferLength = 0;
     }
 }
 
@@ -1828,6 +1831,7 @@
     boolean orderedBands = TRUE;
     imageIODataPtr data = (imageIODataPtr) ptr;
     j_decompress_ptr cinfo;
+    unsigned int numBytes;
 
     /* verify the inputs */
 
@@ -2027,15 +2031,22 @@
                 // scanline buffer into the raster.
                 in = scanLinePtr + (sourceXStart * cinfo->output_components);
                 if (pixelLimit > in) {
-                    memcpy(out, in, pixelLimit - in);
+                    numBytes = pixelLimit - in;
+                    if (numBytes > data->pixelBuf.byteBufferLength) {
+                        numBytes = data->pixelBuf.byteBufferLength;
+                    }
+                    memcpy(out, in, numBytes);
                 }
             } else {
+                numBytes = numBands;
                 for (in = scanLinePtr+sourceXStart*cinfo->output_components;
-                     in < pixelLimit;
+                     in < pixelLimit &&
+                       numBytes <= data->pixelBuf.byteBufferLength;
                      in += pixelStride) {
                     for (i = 0; i < numBands; i++) {
                         *out++ = *(in+bands[i]);
                     }
+                    numBytes += numBands;
                 }
             }
 
--- a/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Tue Apr 20 01:24:48 2010 -0700
@@ -2239,7 +2239,8 @@
     int dataType = BYTE_DATA_TYPE;
     int width;
     int height;
-    int size = rasterP->width * rasterP->height * rasterP->numBands;
+    int dataSize;
+    int offset;
 
     *dataPP = NULL;
 
@@ -2292,6 +2293,22 @@
 #endif
     switch (rasterP->type) {
     case sun_awt_image_IntegerComponentRaster_TYPE_INT_8BIT_SAMPLES:
+        if (!((rasterP->chanOffsets[0] == 0 || SAFE_TO_ALLOC_2(rasterP->chanOffsets[0], 4)) &&
+              SAFE_TO_ALLOC_2(width, 4) &&
+              SAFE_TO_ALLOC_3(height, rasterP->scanlineStride, 4)))
+        {
+            return -1;
+        }
+        offset = 4 * rasterP->chanOffsets[0];
+        dataSize = 4 * (*env)->GetArrayLength(env, rasterP->jdata);
+
+        if (offset < 0 || offset >= dataSize ||
+            width > rasterP->scanlineStride ||
+            height * rasterP->scanlineStride * 4 > dataSize - offset)
+        {
+            // raster data buffer is too short
+            return -1;
+        }
         dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata,
                                                            NULL);
         if (dataP == NULL) {
@@ -2300,11 +2317,25 @@
         *mlibImagePP = (*sMlibSysFns.createStructFP)(MLIB_BYTE, 4,
                                               width, height,
                                               rasterP->scanlineStride*4,
-                                              (unsigned char *)dataP
-                                              + rasterP->chanOffsets[0]*4);
+                                              (unsigned char *)dataP + offset);
         *dataPP = dataP;
         return 0;
     case sun_awt_image_IntegerComponentRaster_TYPE_BYTE_SAMPLES:
+        if (!(SAFE_TO_ALLOC_2(width, rasterP->numBands) &&
+              SAFE_TO_ALLOC_2(height, rasterP->scanlineStride)))
+        {
+            return -1;
+        }
+        offset = rasterP->chanOffsets[0];
+        dataSize = (*env)->GetArrayLength(env, rasterP->jdata);
+
+        if (offset < 0 || offset >= dataSize ||
+            width * rasterP->numBands > rasterP->scanlineStride ||
+            height * rasterP->scanlineStride > dataSize - offset)
+        {
+            // raster data buffer is too short
+            return -1;
+        }
         dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata,
                                                            NULL);
         if (dataP == NULL) {
@@ -2313,11 +2344,26 @@
         *mlibImagePP = (*sMlibSysFns.createStructFP)(MLIB_BYTE, rasterP->numBands,
                                               width, height,
                                               rasterP->scanlineStride,
-                                              (unsigned char *)dataP
-                                              + rasterP->chanOffsets[0]);
+                                              (unsigned char *)dataP + offset);
         *dataPP = dataP;
         return 0;
     case sun_awt_image_IntegerComponentRaster_TYPE_USHORT_SAMPLES:
+        if (!((rasterP->chanOffsets[0] == 0 || SAFE_TO_ALLOC_2(rasterP->chanOffsets[0], 2)) &&
+              SAFE_TO_ALLOC_3(width, rasterP->numBands, 2) &&
+              SAFE_TO_ALLOC_3(height, rasterP->scanlineStride, 2)))
+        {
+              return -1;
+        }
+        offset = rasterP->chanOffsets[0] * 2;
+        dataSize = 2 * (*env)->GetArrayLength(env, rasterP->jdata);
+
+        if (offset < 0 || offset >= dataSize ||
+            width * rasterP->numBands > rasterP->scanlineStride ||
+            height * rasterP->scanlineStride * 2 > dataSize - offset)
+        {
+            // raster data buffer is too short
+             return -1;
+        }
         dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata,
                                                            NULL);
         if (dataP == NULL) {
@@ -2327,8 +2373,7 @@
                                                      rasterP->numBands,
                                                      width, height,
                                                      rasterP->scanlineStride*2,
-                                                     (unsigned char *)dataP
-                                                     + rasterP->chanOffsets[0]*2);
+                                                     (unsigned char *)dataP + offset);
         *dataPP = dataP;
         return 0;
 
--- a/jdk/src/share/native/sun/awt/medialib/safe_alloc.h	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/safe_alloc.h	Tue Apr 20 01:24:48 2010 -0700
@@ -35,11 +35,11 @@
  */
 #define SAFE_TO_ALLOC_2(c, sz)                                             \
     (((c) > 0) && ((sz) > 0) &&                                            \
-     ((0xffffffffu / ((juint)(c))) > (sz)))
+     ((0xffffffffu / ((juint)(c))) > ((juint)(sz))))
 
 #define SAFE_TO_ALLOC_3(w, h, sz)                                          \
     (((w) > 0) && ((h) > 0) && ((sz) > 0) &&                               \
-    (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > (sz)))
+     (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > ((juint)(sz))))
 
 
 #endif // __SAFE_ALLOC_H__
--- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	Tue Apr 20 01:24:48 2010 -0700
@@ -1433,6 +1433,9 @@
 
     // If is in memory, the LUT is already there, so throw a copy
     if (Icc -> TagPtrs[n]) {
+        if (!_cmsValidateLUT((LPLUT) Icc ->TagPtrs[n])) {
+            return NULL;
+        }
 
         return cmsDupLUT((LPLUT) Icc ->TagPtrs[n]);
     }
--- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	Tue Apr 20 01:24:48 2010 -0700
@@ -1969,6 +1969,10 @@
                 goto ErrorCleanup;
         }
 
+        if (Transforms[i] == NULL) {
+            cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateMultiprofileTransform: unable to create transform");
+            goto ErrorCleanup;
+        }
         CurrentColorSpace = ColorSpaceOut;
 
     }
--- a/jdk/src/share/native/sun/management/Flag.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/share/native/sun/management/Flag.c	Tue Apr 20 01:24:48 2010 -0700
@@ -133,11 +133,8 @@
                                            globals[i].value.j);
             break;
         default:
-            // unsupported type
-            sprintf(errmsg, "Unsupported VMGlobal Type %d", globals[i].type);
-            JNU_ThrowInternalError(env, errmsg);
-            free(globals);
-            return 0;
+            // ignore unsupported type
+            continue;
         }
         switch (globals[i].origin) {
         case JMM_VMGLOBAL_ORIGIN_DEFAULT:
--- a/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties	Tue Apr 20 01:24:48 2010 -0700
@@ -26,134 +26,310 @@
 
 # Version
 
-# Uses Fedora Core 6 fonts and file paths.
+# Uses Fedora 9 fonts and file paths.
 version=1
 
 # Component Font Mappings
 
-dialog.plain.latin-1=DejaVu LGC Sans
+dialog.plain.latin-1=DejaVu Sans
 dialog.plain.japanese-x0208=Sazanami Gothic
 dialog.plain.korean=Baekmuk Gulim
 dialog.plain.chinese-big5=AR PL ShanHeiSun Uni
 dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.plain.bengali=Lohit Bengali
+dialog.plain.gujarati=Lohit Gujarati
+dialog.plain.hindi=Lohit Hindi
+dialog.plain.malayalam=Lohit Malayalam
+dialog.plain.oriya=Lohit Oriya
+dialog.plain.punjabi=Lohit Punjabi
+dialog.plain.tamil=Lohit Tamil
+dialog.plain.telugu=Lohit Telugu
+dialog.plain.sinhala=LKLUG
 
-dialog.bold.latin-1=DejaVu LGC Sans Bold
+dialog.bold.latin-1=DejaVu Sans Bold
 dialog.bold.japanese-x0208=Sazanami Gothic
 dialog.bold.korean=Baekmuk Gulim
 dialog.bold.chinese-big5=AR PL ShanHeiSun Uni
 dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.bold.bengali=Lohit Bengali
+dialog.bold.gujarati=Lohit Gujarati
+dialog.bold.hindi=Lohit Hindi
+dialog.bold.malayalam=Lohit Malayalam
+dialog.bold.oriya=Lohit Oriya
+dialog.bold.punjabi=Lohit Punjabi
+dialog.bold.tamil=Lohit Tamil
+dialog.bold.telugu=Lohit Telugu
+dialog.bold.sinhala=LKLUG
 
-dialog.italic.latin-1=DejaVu LGC Sans Oblique
+dialog.italic.latin-1=DejaVu Sans Oblique
 dialog.italic.japanese-x0208=Sazanami Gothic
 dialog.italic.korean=Baekmuk Gulim
 dialog.italic.chinese-big5=AR PL ShanHeiSun Uni
 dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.italic.bengali=Lohit Bengali
+dialog.italic.gujarati=Lohit Gujarati
+dialog.italic.hindi=Lohit Hindi
+dialog.italic.malayalam=Lohit Malayalam
+dialog.italic.oriya=Lohit Oriya
+dialog.italic.punjabi=Lohit Punjabi
+dialog.italic.tamil=Lohit Tamil
+dialog.italic.telugu=Lohit Telugu
+dialog.italic.sinhala=LKLUG
 
-dialog.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
+dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
 dialog.bolditalic.japanese-x0208=Sazanami Gothic
 dialog.bolditalic.korean=Baekmuk Gulim
 dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
 dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-
+dialog.bolditalic.bengali=Lohit Bengali
+dialog.bolditalic.gujarati=Lohit Gujarati
+dialog.bolditalic.hindi=Lohit Hindi
+dialog.bolditalic.malayalam=Lohit Malayalam
+dialog.bolditalic.oriya=Lohit Oriya
+dialog.bolditalic.punjabi=Lohit Punjabi
+dialog.bolditalic.tamil=Lohit Tamil
+dialog.bolditalic.telugu=Lohit Telugu
+dialog.bolditalic.sinhala=LKLUG
 
-sansserif.plain.latin-1=DejaVu LGC Sans
+sansserif.plain.latin-1=DejaVu Sans
 sansserif.plain.japanese-x0208=Sazanami Gothic
 sansserif.plain.korean=Baekmuk Gulim
 sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni
 sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.plain.bengali=Lohit Bengali
+sansserif.plain.gujarati=Lohit Gujarati
+sansserif.plain.hindi=Lohit Hindi
+sansserif.plain.malayalam=Lohit Malayalam
+sansserif.plain.oriya=Lohit Oriya
+sansserif.plain.punjabi=Lohit Punjabi
+sansserif.plain.tamil=Lohit Tamil
+sansserif.plain.telugu=Lohit Telugu
+sansserif.plain.sinhala=LKLUG
 
-sansserif.bold.latin-1=DejaVu LGC Sans Bold
+sansserif.bold.latin-1=DejaVu Sans Bold
 sansserif.bold.japanese-x0208=Sazanami Gothic
 sansserif.bold.korean=Baekmuk Gulim
 sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni
 sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.bold.bengali=Lohit Bengali
+sansserif.bold.gujarati=Lohit Gujarati
+sansserif.bold.hindi=Lohit Hindi
+sansserif.bold.malayalam=Lohit Malayalam
+sansserif.bold.oriya=Lohit Oriya
+sansserif.bold.punjabi=Lohit Punjabi
+sansserif.bold.tamil=Lohit Tamil
+sansserif.bold.telugu=Lohit Telugu
+sansserif.bold.sinhala=LKLUG
 
-sansserif.italic.latin-1=DejaVu LGC Sans Oblique
+sansserif.italic.latin-1=DejaVu Sans Oblique
 sansserif.italic.japanese-x0208=Sazanami Gothic
 sansserif.italic.korean=Baekmuk Gulim
 sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni
 sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.italic.bengali=Lohit Bengali
+sansserif.italic.gujarati=Lohit Gujarati
+sansserif.italic.hindi=Lohit Hindi
+sansserif.italic.malayalam=Lohit Malayalam
+sansserif.italic.oriya=Lohit Oriya
+sansserif.italic.punjabi=Lohit Punjabi
+sansserif.italic.tamil=Lohit Tamil
+sansserif.italic.telugu=Lohit Telugu
+sansserif.italic.sinhala=LKLUG
 
-sansserif.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
+sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
 sansserif.bolditalic.japanese-x0208=Sazanami Gothic
 sansserif.bolditalic.korean=Baekmuk Gulim
 sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
 sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-
+sansserif.bolditalic.bengali=Lohit Bengali
+sansserif.bolditalic.gujarati=Lohit Gujarati
+sansserif.bolditalic.hindi=Lohit Hindi
+sansserif.bolditalic.malayalam=Lohit Malayalam
+sansserif.bolditalic.oriya=Lohit Oriya
+sansserif.bolditalic.punjabi=Lohit Punjabi
+sansserif.bolditalic.tamil=Lohit Tamil
+sansserif.bolditalic.telugu=Lohit Telugu
+sansserif.bolditalic.sinhala=LKLUG
 
-serif.plain.latin-1=DejaVu LGC Serif
+serif.plain.latin-1=DejaVu Serif
 serif.plain.japanese-x0208=Sazanami Mincho
 serif.plain.korean=Baekmuk Batang
 serif.plain.chinese-big5=AR PL ZenKai Uni
 serif.plain.chinese-gb18030=AR PL ZenKai Uni
+serif.plain.bengali=Lohit Bengali
+serif.plain.gujarati=Lohit Gujarati
+serif.plain.hindi=Lohit Hindi
+serif.plain.malayalam=Lohit Malayalam
+serif.plain.oriya=Lohit Oriya
+serif.plain.punjabi=Lohit Punjabi
+serif.plain.tamil=Lohit Tamil
+serif.plain.telugu=Lohit Telugu
+serif.plain.sinhala=LKLUG
 
-serif.bold.latin-1=DejaVu LGC Serif Bold
+serif.bold.latin-1=DejaVu Serif Bold
 serif.bold.japanese-x0208=Sazanami Mincho
 serif.bold.korean=Baekmuk Batang
 serif.bold.chinese-big5=AR PL ZenKai Uni
 serif.bold.chinese-gb18030=AR PL ZenKai Uni
+serif.bold.bengali=Lohit Bengali
+serif.bold.gujarati=Lohit Gujarati
+serif.bold.hindi=Lohit Hindi
+serif.bold.malayalam=Lohit Malayalam
+serif.bold.oriya=Lohit Oriya
+serif.bold.punjabi=Lohit Punjabi
+serif.bold.tamil=Lohit Tamil
+serif.bold.telugu=Lohit Telugu
+serif.bold.sinhala=LKLUG
 
-serif.italic.latin-1=DejaVu LGC Serif Oblique
+serif.italic.latin-1=DejaVu Serif Oblique
 serif.italic.japanese-x0208=Sazanami Mincho
 serif.italic.korean=Baekmuk Batang
 serif.italic.chinese-big5=AR PL ZenKai Uni
 serif.italic.chinese-gb18030=AR PL ZenKai Uni
+serif.italic.bengali=Lohit Bengali
+serif.italic.gujarati=Lohit Gujarati
+serif.italic.hindi=Lohit Hindi
+serif.italic.malayalam=Lohit Malayalam
+serif.italic.oriya=Lohit Oriya
+serif.italic.punjabi=Lohit Punjabi
+serif.italic.tamil=Lohit Tamil
+serif.italic.telugu=Lohit Telugu
+serif.italic.sinhala=LKLUG
 
-serif.bolditalic.latin-1=DejaVu LGC Serif Bold Oblique
+serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
 serif.bolditalic.japanese-x0208=Sazanami Mincho
 serif.bolditalic.korean=Baekmuk Batang
 serif.bolditalic.chinese-big5=AR PL ZenKai Uni
 serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni
-
+serif.bolditalic.bengali=Lohit Bengali
+serif.bolditalic.gujarati=Lohit Gujarati
+serif.bolditalic.hindi=Lohit Hindi
+serif.bolditalic.malayalam=Lohit Malayalam
+serif.bolditalic.oriya=Lohit Oriya
+serif.bolditalic.punjabi=Lohit Punjabi
+serif.bolditalic.tamil=Lohit Tamil
+serif.bolditalic.telugu=Lohit Telugu
+serif.bolditalic.sinhala=LKLUG
 
-monospaced.plain.latin-1=DejaVu LGC Sans Mono
+monospaced.plain.latin-1=DejaVu Sans Mono
 monospaced.plain.japanese-x0208=Sazanami Gothic
 monospaced.plain.korean=Baekmuk Gulim
 monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni
 monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.plain.bengali=Lohit Bengali
+monospaced.plain.gujarati=Lohit Gujarati
+monospaced.plain.hindi=Lohit Hindi
+monospaced.plain.malayalam=Lohit Malayalam
+monospaced.plain.oriya=Lohit Oriya
+monospaced.plain.punjabi=Lohit Punjabi
+monospaced.plain.tamil=Lohit Tamil
+monospaced.plain.telugu=Lohit Telugu
+monospaced.plain.sinhala=LKLUG
 
-monospaced.bold.latin-1=DejaVu LGC Sans Mono Bold
+monospaced.bold.latin-1=DejaVu Sans Mono Bold
 monospaced.bold.japanese-x0208=Sazanami Gothic
 monospaced.bold.korean=Baekmuk Gulim
 monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni
 monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.bold.bengali=Lohit Bengali
+monospaced.bold.gujarati=Lohit Gujarati
+monospaced.bold.hindi=Lohit Hindi
+monospaced.bold.malayalam=Lohit Malayalam
+monospaced.bold.oriya=Lohit Oriya
+monospaced.bold.punjabi=Lohit Punjabi
+monospaced.bold.tamil=Lohit Tamil
+monospaced.bold.telugu=Lohit Telugu
+monospaced.bold.sinhala=LKLUG
 
-monospaced.italic.latin-1=DejaVu LGC Sans Mono Oblique
+monospaced.italic.latin-1=DejaVu Sans Mono Oblique
 monospaced.italic.japanese-x0208=Sazanami Gothic
 monospaced.italic.korean=Baekmuk Gulim
 monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni
 monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.italic.bengali=Lohit Bengali
+monospaced.italic.gujarati=Lohit Gujarati
+monospaced.italic.hindi=Lohit Hindi
+monospaced.italic.malayalam=Lohit Malayalam
+monospaced.italic.oriya=Lohit Oriya
+monospaced.italic.punjabi=Lohit Punjabi
+monospaced.italic.tamil=Lohit Tamil
+monospaced.italic.telugu=Lohit Telugu
+monospaced.italic.sinhala=LKLUG
 
-monospaced.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
+monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
 monospaced.bolditalic.japanese-x0208=Sazanami Gothic
 monospaced.bolditalic.korean=Baekmuk Gulim
 monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
 monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-
+monospaced.bolditalic.bengali=Lohit Bengali
+monospaced.bolditalic.gujarati=Lohit Gujarati
+monospaced.bolditalic.hindi=Lohit Hindi
+monospaced.bolditalic.malayalam=Lohit Malayalam
+monospaced.bolditalic.oriya=Lohit Oriya
+monospaced.bolditalic.punjabi=Lohit Punjabi
+monospaced.bolditalic.tamil=Lohit Tamil
+monospaced.bolditalic.telugu=Lohit Telugu
+monospaced.bolditalic.sinhala=LKLUG
 
-dialoginput.plain.latin-1=DejaVu LGC Sans Mono
+dialoginput.plain.latin-1=DejaVu Sans Mono
 dialoginput.plain.japanese-x0208=Sazanami Gothic
 dialoginput.plain.korean=Baekmuk Gulim
 dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni
 dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.plain.bengali=Lohit Bengali
+dialoginput.plain.gujarati=Lohit Gujarati
+dialoginput.plain.hindi=Lohit Hindi
+dialoginput.plain.malayalam=Lohit Malayalam
+dialoginput.plain.oriya=Lohit Oriya
+dialoginput.plain.punjabi=Lohit Punjabi
+dialoginput.plain.tamil=Lohit Tamil
+dialoginput.plain.telugu=Lohit Telugu
+dialoginput.plain.sinhala=LKLUG
 
-dialoginput.bold.latin-1=DejaVu LGC Sans Mono Bold
+dialoginput.bold.latin-1=DejaVu Sans Mono Bold
 dialoginput.bold.japanese-x0208=Sazanami Gothic
 dialoginput.bold.korean=Baekmuk Gulim
 dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni
 dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.bold.bengali=Lohit Bengali
+dialoginput.bold.gujarati=Lohit Gujarati
+dialoginput.bold.hindi=Lohit Hindi
+dialoginput.bold.malayalam=Lohit Malayalam
+dialoginput.bold.oriya=Lohit Oriya
+dialoginput.bold.punjabi=Lohit Punjabi
+dialoginput.bold.tamil=Lohit Tamil
+dialoginput.bold.telugu=Lohit Telugu
+dialoginput.bold.sinhala=LKLUG
 
-dialoginput.italic.latin-1=DejaVu LGC Sans Mono Oblique
+dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
 dialoginput.italic.japanese-x0208=Sazanami Gothic
 dialoginput.italic.korean=Baekmuk Gulim
 dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni
 dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.italic.bengali=Lohit Bengali
+dialoginput.italic.gujarati=Lohit Gujarati
+dialoginput.italic.hindi=Lohit Hindi
+dialoginput.italic.malayalam=Lohit Malayalam
+dialoginput.italic.oriya=Lohit Oriya
+dialoginput.italic.punjabi=Lohit Punjabi
+dialoginput.italic.tamil=Lohit Tamil
+dialoginput.italic.telugu=Lohit Telugu
+dialoginput.italic.sinhala=LKLUG
 
-dialoginput.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
+dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
 dialoginput.bolditalic.japanese-x0208=Sazanami Gothic
 dialoginput.bolditalic.korean=Baekmuk Gulim
 dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
 dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.bolditalic.bengali=Lohit Bengali
+dialoginput.bolditalic.gujarati=Lohit Gujarati
+dialoginput.bolditalic.hindi=Lohit Hindi
+dialoginput.bolditalic.malayalam=Lohit Malayalam
+dialoginput.bolditalic.oriya=Lohit Oriya
+dialoginput.bolditalic.punjabi=Lohit Punjabi
+dialoginput.bolditalic.tamil=Lohit Tamil
+dialoginput.bolditalic.telugu=Lohit Telugu
+dialoginput.bolditalic.sinhala=LKLUG
 
 # Search Sequences
 
@@ -162,28 +338,40 @@
 sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1
 sequence.allfonts.EUC-KR=korean,latin-1
 sequence.allfonts.GB18030=chinese-gb18030,latin-1
-sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean
+sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
 
 # Font File Names
 
-filename.DejaVu_LGC_Sans=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf
-filename.DejaVu_LGC_Sans_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf
-filename.DejaVu_LGC_Sans_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Oblique.ttf
-filename.DejaVu_LGC_Sans_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf
+filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf
+filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
+filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf
+filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf
 
-filename.DejaVu_LGC_Sans_Mono=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf
-filename.DejaVu_LGC_Sans_Mono_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf
-filename.DejaVu_LGC_Sans_Mono_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf
-filename.DejaVu_LGC_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf
+filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf
+filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf
+filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf
+filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
+
+filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf
+filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf
+filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf
+filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf
 
-filename.DejaVu_LGC_Serif=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf
-filename.DejaVu_LGC_Serif_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Bold.ttf
-filename.DejaVu_LGC_Serif_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf
-filename.DejaVu_LGC_Serif_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-BoldOblique.ttf
+filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf
+filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf
+filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc
+filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc
+filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf
+filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf
 
-filename.Sazanami_Gothic=/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
-filename.Sazanami_Mincho=/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf
-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf
-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf
-filename.Baekmuk_Gulim=/usr/share/fonts/korean/TrueType/gulim.ttf
-filename.Baekmuk_Batang=/usr/share/fonts/korean/TrueType/batang.ttf
+filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf
+filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf
+filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf
+filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf
+filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf
+filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf
+filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf
+filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf
+filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf
+filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf
+
--- a/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties	Tue Apr 20 01:24:48 2010 -0700
@@ -26,106 +26,253 @@
 
 # Version
 
-# Uses Ubuntu 6.10 (Edgy) fonts and file paths.
+# Uses Ubuntu 8.04 (hardy), Debian 6.0 (Squeeze) (and more recent releases) fonts and file paths.
 version=1
 
 # Component Font Mappings
 
-dialog.plain.latin-1=DejaVu Sans
-dialog.plain.japanese-x0208=Kochi Gothic
-dialog.plain.korean=Baekmuk Dotum
-
-dialog.bold.latin-1=DejaVu Sans Bold
-dialog.bold.japanese-x0208=Kochi Gothic
-dialog.bold.korean=Baekmuk Dotum
-
-dialog.italic.latin-1=DejaVu Sans Oblique
-dialog.italic.japanese-x0208=Kochi Gothic
-dialog.italic.korean=Baekmuk Dotum
-
-dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
-dialog.bolditalic.japanese-x0208=Kochi Gothic
-dialog.bolditalic.korean=Baekmuk Dotum
+# Chinese fonts
+allfonts.umingcn=AR PL UMing CN
+#allfonts.umingcn.motif=AR PL UMing CN
+allfonts.uminghk=AR PL UMing HK
+#allfonts.uminghk.motif=AR PL UMing HK
+allfonts.umingtw=AR PL UMing TW
+#allfonts.umingtw.motif=AR PL UMing TW
+allfonts.wqy-zenhei=WenQuanYi Zen Hei
+#allfonts.wqy-zenhei.motif=WenQuanYi Zen Hei
+allfonts.shanheisun=AR PL ShanHeiSun Uni
+#allfonts.shanheisun.motif=AR PL ShanHeiSun Uni
 
-
-sansserif.plain.latin-1=DejaVu Sans
-sansserif.plain.japanese-x0208=Kochi Gothic
-sansserif.plain.korean=Baekmuk Dotum
-
-sansserif.bold.latin-1=DejaVu Sans Bold
-sansserif.bold.japanese-x0208=Kochi Gothic
-sansserif.bold.korean=Baekmuk Dotum
-
-sansserif.italic.latin-1=DejaVu Sans Oblique
-sansserif.italic.japanese-x0208=Kochi Gothic
-sansserif.italic.korean=Baekmuk Dotum
-
-sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
-sansserif.bolditalic.japanese-x0208=Kochi Gothic
-sansserif.bolditalic.korean=Baekmuk Dotum
+# Indic scripts
+allfonts.bengali=Lohit Bengali
+allfonts.gujarati=Lohit Gujarati
+allfonts.hindi=Lohit Hindi
+#allfonts.malayalam=Lohit Malayalam
+allfonts.oriya=Lohit Oriya
+allfonts.punjabi=Lohit Punjabi
+allfonts.tamil=Lohit Tamil
+allfonts.telugu=Lohit Telugu
+allfonts.sinhala=LKLUG
 
 
 serif.plain.latin-1=DejaVu Serif
-serif.plain.japanese-x0208=Kochi Mincho
-serif.plain.korean=Baekmuk Batang
+#serif.plain.latin-1.motif=LuxiSerif-Regular
+serif.plain.japanese-kochi=Kochi Mincho
+serif.plain.japanese-sazanami=Sazanami Mincho
+serif.plain.japanese-vlgothic=Sazanami Mincho
+serif.plain.korean-baekmuk=Baekmuk Batang
+#serif.plain.korean-baekmuk.motif=Baekmuk Batang
+serif.plain.korean-un=UnBatang
+#serif.plain.korean-un.motif=UnBatang
 
 serif.bold.latin-1=DejaVu Serif Bold
-serif.bold.japanese-x0208=Kochi Mincho
-serif.bold.korean=Baekmuk Batang
+#serif.bold.latin-1.motif=LuxiSerif-Bold
+serif.bold.japanese-kochi=Kochi Mincho
+serif.bold.japanese-sazanami=Sazanami Mincho
+serif.bold.japanese-vlgothic=Sazanami Mincho
+serif.bold.korean-baekmuk=Baekmuk Batang
+#serif.bold.korean-baekmuk.motif=Baekmuk Batang
+serif.bold.korean-un=UnBatang Bold
+#serif.bold.korean-un.motif=UnBatang Bold
 
 serif.italic.latin-1=DejaVu Serif Oblique
-serif.italic.japanese-x0208=Kochi Mincho
-serif.italic.korean=Baekmuk Batang
+#serif.italic.latin-1.motif=LuxiSerif-Oblique
+serif.italic.japanese-kochi=Kochi Mincho
+serif.italic.japanese-sazanami=Sazanami Mincho
+serif.italic.japanese-vlgothic=Sazanami Mincho
+serif.italic.korean-baekmuk=Baekmuk Batang
+#serif.italic.korean-baekmuk.motif=Baekmuk Batang
+serif.italic.korean-un=UnBatang
+#serif.italic.korean-un.motif=UnBatang
 
 serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
-serif.bolditalic.japanese-x0208=Kochi Mincho
-serif.bolditalic.korean=Baekmuk Batang
+#serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique
+serif.bolditalic.japanese-kochi=Kochi Mincho
+serif.bolditalic.japanese-sazanami=Sazanami Mincho
+serif.bolditalic.japanese-vlgothic=Sazanami Mincho
+serif.bolditalic.korean-baekmuk=Baekmuk Batang
+#serif.bolditalic.korean-baekmuk.motif=Baekmuk Batang
+serif.bolditalic.korean-un=UnBatang Bold
+#serif.bolditalic.korean-un.motif=UnBatang Bold
+
+sansserif.plain.latin-1=DejaVu Sans
+#sansserif.plain.latin-1.motif=LuxiSans-Regular
+sansserif.plain.japanese-kochi=Kochi Gothic
+sansserif.plain.japanese-sazanami=Sazanami Gothic
+sansserif.plain.japanese-vlgothic=VL PGothic
+sansserif.plain.korean-baekmuk=Baekmuk Gulim
+#sansserif.plain.korean-baekmuk.motif=Baekmuk Gulim
+sansserif.plain.korean-un=UnDotum
+#sansserif.plain.korean-un.motif=UnDotum
 
+sansserif.bold.latin-1=DejaVu Sans Bold
+#sansserif.bold.latin-1.motif=LuxiSans-Bold
+sansserif.bold.japanese-kochi=Kochi Gothic
+sansserif.bold.japanese-sazanami=Sazanami Gothic
+sansserif.bold.japanese-vlgothic=VL PGothic
+sansserif.bold.korean-baekmuk=Baekmuk Gulim
+#sansserif.bold.korean-baekmuk.motif=Baekmuk Gulim
+sansserif.bold.korean-un=UnDotum Bold
+#sansserif.bold.korean-un.motif=UnDotum Bold
+
+sansserif.italic.latin-1=DejaVu Sans Oblique
+#sansserif.italic.latin-1.motif=LuxiSans-Oblique
+sansserif.italic.japanese-kochi=Kochi Gothic
+sansserif.italic.japanese-sazanami=Sazanami Gothic
+sansserif.italic.japanese-vlgothic=VL PGothic
+sansserif.italic.korean-baekmuk=Baekmuk Gulim
+#sansserif.italic.korean-baekmuk.motif=Baekmuk Gulim
+sansserif.italic.korean-un=UnDotum
+#sansserif.italic.korean-un.motif=UnDotum
+
+sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
+#sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique
+sansserif.bolditalic.japanese-kochi=Kochi Gothic
+sansserif.bolditalic.japanese-sazanami=Sazanami Gothic
+sansserif.bolditalic.japanese-vlgothic=VL PGothic
+sansserif.bolditalic.korean-baekmuk=Baekmuk Gulim
+#sansserif.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+sansserif.bolditalic.korean-un=UnDotum Bold
+#sansserif.bolditalic.korean-un.motif=UnDotum Bold
 
 monospaced.plain.latin-1=DejaVu Sans Mono
-monospaced.plain.japanese-x0208=Kochi Gothic
-monospaced.plain.korean=Baekmuk Dotum
+#monospaced.plain.latin-1.motif=LuxiMono-Regular
+monospaced.plain.japanese-kochi=Kochi Gothic
+monospaced.plain.japanese-sazanami=Sazanami Gothic
+monospaced.plain.japanese-vlgothic=VL Gothic
+monospaced.plain.korean-baekmuk=Baekmuk Gulim
+#monospaced.plain.korean-baekmuk.motif=Baekmuk Gulim
+monospaced.plain.korean-un=UnDotum
+#monospaced.plain.korean-un.motif=UnDotum
 
 monospaced.bold.latin-1=DejaVu Sans Mono Bold
-monospaced.bold.japanese-x0208=Kochi Gothic
-monospaced.bold.korean=Baekmuk Dotum
+#monospaced.bold.latin-1.motif=LuxiMono-Bold
+monospaced.bold.japanese-kochi=Kochi Gothic
+monospaced.bold.japanese-sazanami=Sazanami Gothic
+monospaced.bold.japanese-vlgothic=VL Gothic
+monospaced.bold.korean-baekmuk=Baekmuk Gulim
+#monospaced.bold.korean-baekmuk.motif=Baekmuk Gulim
+monospaced.bold.korean-un=UnDotum Bold
+#monospaced.bold.korean-un.motif=UnDotum Bold
 
 monospaced.italic.latin-1=DejaVu Sans Mono Oblique
-monospaced.italic.japanese-x0208=Kochi Gothic
-monospaced.italic.korean=Baekmuk Dotum
+#monospaced.italic.latin-1.motif=LuxiMono-Oblique
+monospaced.italic.japanese-kochi=Kochi Gothic
+monospaced.italic.japanese-sazanami=Sazanami Gothic
+monospaced.italic.japanese-vlgothic=VL Gothic
+monospaced.italic.korean-baekmuk=Baekmuk Gulim
+#monospaced.italic.korean-baekmuk.motif=Baekmuk Gulim
+monospaced.italic.korean-un=UnDotum
+#monospaced.italic.korean-un.motif=UnDotum
 
 monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
-monospaced.bolditalic.japanese-x0208=Kochi Gothic
-monospaced.bolditalic.korean=Baekmuk Dotum
+#monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique
+monospaced.bolditalic.japanese-kochi=Kochi Gothic
+monospaced.bolditalic.japanese-sazanami=Sazanami Gothic
+monospaced.bolditalic.japanese-vlgothic=VL Gothic
+monospaced.bolditalic.korean-baekmuk=Baekmuk Gulim
+#monospaced.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+monospaced.bolditalic.korean-un=UnDotum Bold
+#monospaced.bolditalic.korean-un.motif=UnDotum Bold
+
+dialog.plain.latin-1=DejaVu Sans
+#dialog.plain.latin-1.motif=LuxiSans-Regular
+dialog.plain.japanese-kochi=Kochi Gothic
+dialog.plain.japanese-sazanami=Sazanami Gothic
+dialog.plain.japanese-vlgothic=VL PGothic
+dialog.plain.korean-baekmuk=Baekmuk Gulim
+#dialog.plain.korean-baekmuk.motif=Baekmuk Gulim
+dialog.plain.korean-un=UnDotum
+#dialog.plain.korean-un.motif=UnDotum
 
+dialog.bold.latin-1=DejaVu Sans Bold
+#dialog.bold.latin-1.motif=LuxiSans-Bold
+dialog.bold.japanese-kochi=Kochi Gothic
+dialog.bold.japanese-sazanami=Sazanami Gothic
+dialog.bold.japanese-vlgothic=VL PGothic
+dialog.bold.korean-baekmuk=Baekmuk Gulim
+#dialog.bold.korean-baekmuk.motif=Baekmuk Gulim
+dialog.bold.korean-un=UnDotum Bold
+#dialog.bold.korean-un.motif=UnDotum Bold
+
+dialog.italic.latin-1=DejaVu Sans Oblique
+#dialog.italic.latin-1.motif=LuxiSans-Oblique
+dialog.italic.japanese-kochi=Kochi Gothic
+dialog.italic.japanese-sazanami=Sazanami Gothic
+dialog.italic.japanese-vlgothic=VL PGothic
+dialog.italic.korean-baekmuk=Baekmuk Gulim
+#dialog.italic.korean-baekmuk.motif=Baekmuk Gulim
+dialog.italic.korean-un=UnDotum
+#dialog.italic.korean-un.motif=UnDotum
+
+dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
+#dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique
+dialog.bolditalic.japanese-kochi=Kochi Gothic
+dialog.bolditalic.japanese-sazanami=Sazanami Gothic
+dialog.bolditalic.japanese-vlgothic=VL PGothic
+dialog.bolditalic.korean-baekmuk=Baekmuk Gulim
+#dialog.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+dialog.bolditalic.korean-un=UnDotum Bold
+#dialog.bolditalic.korean-un.motif=UnDotum Bold
 
 dialoginput.plain.latin-1=DejaVu Sans Mono
-dialoginput.plain.japanese-x0208=Kochi Gothic
-dialoginput.plain.korean=Baekmuk Dotum
+#dialoginput.plain.latin-1.motif=LuxiMono-Regular
+dialoginput.plain.japanese-kochi=Kochi Gothic
+dialoginput.plain.japanese-sazanami=Sazanami Gothic
+dialoginput.plain.japanese-vlgothic=VL Gothic
+dialoginput.plain.korean-baekmuk=Baekmuk Gulim
+#dialoginput.plain.korean-baekmuk.motif=Baekmuk Gulim
+dialoginput.plain.korean-un=UnDotum
+#dialoginput.plain.korean-un.motif=UnDotum
 
 dialoginput.bold.latin-1=DejaVu Sans Mono Bold
-dialoginput.bold.japanese-x0208=Kochi Gothic
-dialoginput.bold.korean=Baekmuk Dotum
+#dialoginput.bold.latin-1.motif=LuxiMono-Bold
+dialoginput.bold.japanese-kochi=Kochi Gothic
+dialoginput.bold.japanese-sazanami=Sazanami Gothic
+dialoginput.bold.japanese-vlgothic=VL Gothic
+dialoginput.bold.korean-baekmuk=Baekmuk Gulim
+#dialoginput.bold.korean-baekmuk.motif=Baekmuk Gulim
+dialoginput.bold.korean-un=UnDotum Bold
+#dialoginput.bold.korean-un.motif=UnDotum Bold
 
 dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
-dialoginput.italic.japanese-x0208=Kochi Gothic
-dialoginput.italic.korean=Baekmuk Dotum
+#dialoginput.italic.latin-1.motif=LuxiMono-Oblique
+dialoginput.italic.japanese-kochi=Kochi Gothic
+dialoginput.italic.japanese-sazanami=Sazanami Gothic
+dialoginput.italic.japanese-vlgothic=VL Gothic
+dialoginput.italic.korean-baekmuk=Baekmuk Gulim
+#dialoginput.italic.korean-baekmuk.motif=Baekmuk Gulim
+dialoginput.italic.korean-un=UnDotum
+#dialoginput.italic.korean-un.motif=UnDotum
 
 dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
-dialoginput.bolditalic.japanese-x0208=Kochi Gothic
-dialoginput.bolditalic.korean=Baekmuk Dotum
-
-allfonts.chinese-big5=AR PL ZenKai Uni
-allfonts.chinese-gb18030=AR PL ZenKai Uni
+#dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique
+dialoginput.bolditalic.japanese-kochi=Kochi Gothic
+dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic
+dialoginput.bolditalic.japanese-vlgothic=VL Gothic
+dialoginput.bolditalic.korean-baekmuk=Baekmuk Gulim
+#dialoginput.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+dialoginput.bolditalic.korean-un=UnDotum Bold
+#dialoginput.bolditalic.korean-un.motif=UnDotum Bold
 
 # Search Sequences
 
 sequence.allfonts=latin-1
-sequence.allfonts.Big5=chinese-big5,latin-1
-sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1
-sequence.allfonts.EUC-KR=korean,latin-1
-sequence.allfonts.GB18030=chinese-gb18030,latin-1
-sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean
+sequence.allfonts.GB18030=latin-1,umingcn,shanheisun,wqy-zenhei
+sequence.allfonts.GB2312=latin-1,umingcn,shanheisun,wqy-zenhei
+sequence.allfonts.GBK=latin-1,umingcn,shanheisun,wqy-zenhei
+sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi
+sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk
+sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-zenhei
+sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-zenhei
+#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
+sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
+
+# Exclusion Ranges
+
+exclusion.japanese-kochi=0390-03d6,2200-22ef,2701-27be
+exclusion.japanese-sazanami=0390-03d6,2200-22ef,2701-27be
+exclusion.japanese-vlgothic=0390-03d6,2200-22ef,2701-27be
 
 # Font File Names
 
@@ -144,8 +291,58 @@
 filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf
 filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf
 
-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf
-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho-subst.ttf
-filename.AR_PL_ZenKai_Uni=/usr/share/fonts//truetype/arphic/ukai.ttf
-filename.Baekmuk_Dotum=/usr/share/fonts/truetype/baekmuk/dotum.ttf
+filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc
+filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc
+filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc
+filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf
+
+filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
 filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf
+filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf
+filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf
+filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf
+filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf
+filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf
+filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
+filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
+filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf
+filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf
+filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
+filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf
+
+filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf
+filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf
+filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf
+filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf
+#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf
+filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf
+filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf
+filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf
+filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf
+filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf
+
+filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf
+filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf
+filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf
+filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf
+filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf
+filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf
+filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf
+filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf
+filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf
+filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf
+filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf
+filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf
+
+# AWT X11 font paths
+awtfontpath.latin-1=/usr/share/fonts/X11/Type1
+awtfontpath.umingcn=/usr/share/fonts/truetype/arphic
+awtfontpath.uminghk=/usr/share/fonts/truetype/arphic
+awtfontpath.umingtw=/usr/share/fonts/truetype/arphic
+awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic
+awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy
+awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
+awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
+awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic
+awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk
+awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts
--- a/jdk/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties	Tue Apr 20 01:24:48 2010 -0700
@@ -352,7 +352,7 @@
 
 sequence.allfonts.Big5=latin-1,chinese-big5,dingbats,symbol
 
-sequence.allfonts.Big5-HKSCS=latin-1,chinese-big5,chinese-hkscs,dingbats,symbol
+sequence.allfonts.Big5-HKSCS-2001=latin-1,chinese-big5,chinese-hkscs,dingbats,symbol
 
 sequence.allfonts.windows-1251=cyrillic-cp1251,latin-1,dingbats,symbol
 
--- a/jdk/src/solaris/native/java/lang/java_props_md.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/solaris/native/java/lang/java_props_md.c	Tue Apr 20 01:24:48 2010 -0700
@@ -337,22 +337,24 @@
                 std_encoding = "EUC-JP-LINUX";
             }
 #else
-            /* For Solaris use customized vendor defined character
-             * customized EUC-JP converter
-             */
             if (strcmp(p,"eucJP") == 0) {
+                /* For Solaris use customized vendor defined character
+                 * customized EUC-JP converter
+                 */
                 std_encoding = "eucJP-open";
-            }
-#endif
-#ifndef __linux__
-            /*
-             * Remap the encoding string to Big5_Solaris which augments
-             * the default converter for Solaris Big5 locales to include
-             * seven additional ideographic characters beyond those included
-             * in the Java "Big5" converter.
-             */
-            if (strcmp(p, "Big5") == 0) {
-                    std_encoding = "Big5_Solaris";
+            } else if (strcmp(p, "Big5") == 0 || strcmp(p, "BIG5") == 0) {
+                /*
+                 * Remap the encoding string to Big5_Solaris which augments
+                 * the default converter for Solaris Big5 locales to include
+                 * seven additional ideographic characters beyond those included
+                 * in the Java "Big5" converter.
+                 */
+                std_encoding = "Big5_Solaris";
+            } else if (strcmp(p, "Big5-HKSCS") == 0) {
+                /*
+                 * Solaris uses HKSCS2001
+                 */
+                std_encoding = "Big5-HKSCS-2001";
             }
 #endif
             sprops.encoding = std_encoding;
@@ -414,3 +416,9 @@
 
     return &sprops;
 }
+
+jstring
+GetStringPlatform(JNIEnv *env, nchar* cstr)
+{
+    return JNU_NewStringPlatform(env, cstr);
+}
--- a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Tue Apr 20 01:24:48 2010 -0700
@@ -1143,7 +1143,7 @@
     jobject addr;
     int i;
 
-    if (ni_addrsID == NULL) {
+    if (ni_addrsID == NULL || ia_addressID == NULL) {
         jclass c = (*env)->FindClass(env, "java/net/NetworkInterface");
         CHECK_NULL(c);
         ni_addrsID = (*env)->GetFieldID(env, c, "addrs",
--- a/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties	Tue Apr 20 01:24:48 2010 -0700
@@ -210,6 +210,12 @@
 sequence.dialog.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
 sequence.dialoginput.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
 
+sequence.serif.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
+sequence.sansserif.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
+sequence.monospaced.x-MS950-HKSCS-XP=chinese-ms950,alphabetic,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
+sequence.dialog.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
+sequence.dialoginput.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
+
 sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol
 sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol
 
--- a/jdk/src/windows/native/java/lang/ProcessImpl_md.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/windows/native/java/lang/ProcessImpl_md.c	Tue Apr 20 01:24:48 2010 -0700
@@ -145,11 +145,11 @@
     HANDLE errWrite = INVALID_HANDLE_VALUE;
     SECURITY_ATTRIBUTES sa;
     PROCESS_INFORMATION pi;
-    STARTUPINFO si;
-    LPTSTR  pcmd      = NULL;
-    LPCTSTR pdir      = NULL;
-    LPVOID  penvBlock = NULL;
-    jlong  *handles   = NULL;
+    STARTUPINFOW si;
+    const jchar*  pcmd = NULL;
+    const jchar*  pdir = NULL;
+    const jchar*  penvBlock = NULL;
+    jlong  *handles = NULL;
     jlong ret = 0;
     OSVERSIONINFO ver;
     jboolean onNT = JNI_FALSE;
@@ -161,22 +161,17 @@
         onNT = JNI_TRUE;
 
     assert(cmd != NULL);
-    pcmd = (LPTSTR) JNU_GetStringPlatformChars(env, cmd, NULL);
+    pcmd = (*env)->GetStringChars(env, cmd, NULL);
     if (pcmd == NULL) goto Catch;
 
     if (dir != 0) {
-        pdir = (LPCTSTR) JNU_GetStringPlatformChars(env, dir, NULL);
+        pdir = (*env)->GetStringChars(env, dir, NULL);
         if (pdir == NULL) goto Catch;
-        pdir = (LPCTSTR) JVM_NativePath((char *)pdir);
     }
-
     if (envBlock != NULL) {
-        penvBlock = onNT
-            ? (LPVOID) ((*env)->GetStringChars(env, envBlock, NULL))
-            : (LPVOID) JNU_GetStringPlatformChars(env, envBlock, NULL);
+        penvBlock = ((*env)->GetStringChars(env, envBlock, NULL));
         if (penvBlock == NULL) goto Catch;
     }
-
     assert(stdHandles != NULL);
     handles = (*env)->GetLongArrayElements(env, stdHandles, NULL);
     if (handles == NULL) goto Catch;
@@ -237,30 +232,17 @@
     if (onNT)
         processFlag = CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT;
     else
-        processFlag = selectProcessFlag(env, cmd);
-
-    /* Java and Windows are both pure Unicode systems at heart.
-     * Windows has both a legacy byte-based API and a 16-bit Unicode
-     * "W" API.  The Right Thing here is to call CreateProcessW, since
-     * that will allow all process-related information like command
-     * line arguments to be passed properly to the child.  We don't do
-     * that currently, since we would first have to have "W" versions
-     * of JVM_NativePath and perhaps other functions.  In the
-     * meantime, we can call CreateProcess with the magic flag
-     * CREATE_UNICODE_ENVIRONMENT, which passes only the environment
-     * in "W" mode.  We will fix this later. */
-
-    ret = CreateProcess(0,           /* executable name */
-                        pcmd,        /* command line */
-                        0,           /* process security attribute */
-                        0,           /* thread security attribute */
-                        TRUE,        /* inherits system handles */
-                        processFlag, /* selected based on exe type */
-                        penvBlock,   /* environment block */
-                        pdir,        /* change to the new current directory */
-                        &si,         /* (in)  startup information */
-                        &pi);        /* (out) process information */
-
+        processFlag = selectProcessFlag(env, cmd) | CREATE_UNICODE_ENVIRONMENT;
+    ret = CreateProcessW(0,                /* executable name */
+                         (LPWSTR)pcmd,     /* command line */
+                         0,                /* process security attribute */
+                         0,                /* thread security attribute */
+                         TRUE,             /* inherits system handles */
+                         processFlag,      /* selected based on exe type */
+                         (LPVOID)penvBlock,/* environment block */
+                         (LPCWSTR)pdir,    /* change to the new current directory */
+                         &si,              /* (in)  startup information */
+                         &pi);             /* (out) process information */
     if (!ret) {
         win32Error(env, "CreateProcess");
         goto Catch;
@@ -276,18 +258,13 @@
     closeSafely(errWrite);
 
     if (pcmd != NULL)
-        JNU_ReleaseStringPlatformChars(env, cmd, (char *) pcmd);
+        (*env)->ReleaseStringChars(env, cmd, pcmd);
     if (pdir != NULL)
-        JNU_ReleaseStringPlatformChars(env, dir, (char *) pdir);
-    if (penvBlock != NULL) {
-        if (onNT)
-            (*env)->ReleaseStringChars(env, envBlock, (jchar *) penvBlock);
-        else
-            JNU_ReleaseStringPlatformChars(env, dir, (char *) penvBlock);
-    }
+        (*env)->ReleaseStringChars(env, dir, pdir);
+    if (penvBlock != NULL)
+        (*env)->ReleaseStringChars(env, envBlock, penvBlock);
     if (handles != NULL)
         (*env)->ReleaseLongArrayElements(env, stdHandles, handles, 0);
-
     return ret;
 
  Catch:
--- a/jdk/src/windows/native/java/lang/java_props_md.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/windows/native/java/lang/java_props_md.c	Tue Apr 20 01:24:48 2010 -0700
@@ -451,7 +451,7 @@
 {
     char * ret = encoding_names[langIDMap[index].encoding];
 
-    //Traditional Chinese Windows should use MS950_HKSCS as the
+    //Traditional Chinese Windows should use MS950_HKSCS_XP as the
     //default encoding, if HKSCS patch has been installed.
     // "old" MS950 0xfa41 -> u+e001
     // "new" MS950 0xfa41 -> u+92db
@@ -460,7 +460,7 @@
         WCHAR  unicodeChar;
         MultiByteToWideChar(CP_ACP, 0, mbChar, 2, &unicodeChar, 1);
         if (unicodeChar == 0x92db) {
-            ret = "MS950_HKSCS";
+            ret = "MS950_HKSCS_XP";
         }
     } else {
         //SimpChinese Windows should use GB18030 as the default
@@ -513,14 +513,14 @@
 /*
  * Code to figure out the user's home directory using the registry
 */
-static char *
+static WCHAR*
 getHomeFromRegistry()
 {
     HKEY key;
     int rc;
     DWORD type;
-    char *p;
-    char path[MAX_PATH+1];
+    WCHAR *p;
+    WCHAR path[MAX_PATH+1];
     int size = MAX_PATH+1;
 
     rc = RegOpenKeyEx(HKEY_CURRENT_USER, SHELL_KEY, 0, KEY_READ, &key);
@@ -530,18 +530,18 @@
     }
 
     path[0] = 0;
-    rc = RegQueryValueEx(key, "Desktop", 0, &type, path, &size);
+    rc = RegQueryValueExW(key, L"Desktop", 0, &type, (LPBYTE)path, &size);
     if (rc != ERROR_SUCCESS || type != REG_SZ) {
         return NULL;
     }
     RegCloseKey(key);
     /* Get the parent of Desktop directory */
-    p = strrchr(path, '\\');
+    p = wcsrchr(path, L'\\');
     if (p == NULL) {
         return NULL;
     }
-    *p = '\0';
-    return strdup(path);
+    *p = L'\0';
+    return _wcsdup(path);
 }
 
 /*
@@ -550,16 +550,16 @@
 typedef HRESULT (WINAPI *GetSpecialFolderType)(HWND, int, LPITEMIDLIST *);
 typedef BOOL (WINAPI *GetPathFromIDListType)(LPCITEMIDLIST, LPSTR);
 
-char *
+WCHAR*
 getHomeFromShell32()
 {
-    HMODULE lib = LoadLibrary("SHELL32.DLL");
+    HMODULE lib = LoadLibraryW(L"SHELL32.DLL");
     GetSpecialFolderType do_get_folder;
     GetPathFromIDListType do_get_path;
     HRESULT rc;
     LPITEMIDLIST item_list = 0;
-    char *p;
-    char path[MAX_PATH+1];
+    WCHAR *p;
+    WCHAR path[MAX_PATH+1];
     int size = MAX_PATH+1;
 
     if (lib == 0) {
@@ -568,7 +568,7 @@
     }
 
     do_get_folder = (GetSpecialFolderType)GetProcAddress(lib, "SHGetSpecialFolderLocation");
-    do_get_path = (GetPathFromIDListType)GetProcAddress(lib, "SHGetPathFromIDListA");
+    do_get_path = (GetPathFromIDListType)GetProcAddress(lib, "SHGetPathFromIDListW");
 
     if (do_get_folder == 0 || do_get_path == 0) {
         // the library doesn't hold the right functions !!??
@@ -582,10 +582,10 @@
     }
 
     path[0] = 0;
-    (*do_get_path)(item_list, path);
+    (*do_get_path)(item_list, (LPSTR)path);
 
     /* Get the parent of Desktop directory */
-    p = strrchr(path, '\\');
+    p = wcsrchr(path, L'\\');
     if (p) {
         *p = 0;
     }
@@ -598,8 +598,7 @@
      * We also don't unload the SHELL32 DLL.  We've paid the hit for loading
      * it and we may need it again later.
      */
-
-    return strdup(path);
+    return _wcsdup(path);
 }
 
 static boolean
@@ -650,6 +649,8 @@
 {
     static java_props_t sprops = {0};
 
+    OSVERSIONINFOEX ver;
+
     if (sprops.user_dir) {
         return &sprops;
     }
@@ -659,10 +660,10 @@
 
     /* tmp dir */
     {
-        char tmpdir[MAX_PATH + 1];
+        WCHAR tmpdir[MAX_PATH + 1];
         /* we might want to check that this succeed */
-        GetTempPath(MAX_PATH + 1, tmpdir);
-        sprops.tmp_dir = strdup(tmpdir);
+        GetTempPathW(MAX_PATH + 1, tmpdir);
+        sprops.tmp_dir = _wcsdup(tmpdir);
     }
 
     /* Printing properties */
@@ -672,14 +673,13 @@
     sprops.graphics_env = "sun.awt.Win32GraphicsEnvironment";
 
     {    /* This is used only for debugging of font problems. */
-        char *path = getenv("JAVA2D_FONTPATH");
-        sprops.font_dir = (path != 0) ? strdup(path) : NULL;
+        WCHAR *path = _wgetenv(L"JAVA2D_FONTPATH");
+        sprops.font_dir = (path != NULL) ? _wcsdup(path) : NULL;
     }
 
     /* OS properties */
     {
         char buf[100];
-        OSVERSIONINFOEX ver;
         SYSTEM_INFO si;
         PGNSI pGNSI;
 
@@ -828,14 +828,14 @@
      * 100 K of footprint.
      */
     {
-        char *uname = getenv("USERNAME");
-        if (uname != NULL && strlen(uname) > 0) {
-            sprops.user_name = strdup(uname);
+        WCHAR *uname = _wgetenv(L"USERNAME");
+        if (uname != NULL && wcslen(uname) > 0) {
+            sprops.user_name = _wcsdup(uname);
         } else {
-            char buf[100];
+            WCHAR buf[100];
             int buflen = sizeof(buf);
             sprops.user_name =
-                GetUserName(buf, &buflen) ? strdup(buf) : "unknown";
+                GetUserNameW(buf, &buflen) ? _wcsdup(buf) : L"unknown";
         }
     }
 
@@ -856,14 +856,13 @@
      *     On single-user Win95, user.home gets set to c:\windows.
      */
     {
-        char *homep = getHomeFromRegistry();
+        WCHAR *homep = getHomeFromRegistry();
         if (homep == NULL) {
             homep = getHomeFromShell32();
-            if (homep == NULL) {
-                homep = "C:\\";
-            }
+            if (homep == NULL)
+                homep = L"C:\\";
         }
-        sprops.user_home = homep;
+        sprops.user_home = _wcsdup(homep);
     }
 
     /*
@@ -932,6 +931,17 @@
             } else {
                 sprops.sun_jnu_encoding = getEncodingInternal(index);
             }
+            if (langID == 0x0c04 && ver.dwMajorVersion == 6) {
+                // MS claims "Vista has built-in support for HKSCS-2004.
+                // All of the HKSCS-2004 characters have Unicode 4.1.
+                // PUA code point assignments". But what it really means
+                // is that the HKSCS-2004 is ONLY supported in Unicode.
+                // Test indicates the MS950 in its zh_HK locale is a
+                // "regular" MS950 which does not handle HKSCS-2004 at
+                // all. Set encoding to MS950_HKSCS.
+                sprops.encoding = "MS950_HKSCS";
+                sprops.sun_jnu_encoding = "MS950_HKSCS";
+            }
         }
     }
 
@@ -950,9 +960,9 @@
 
     /* Current directory */
     {
-        char buf[MAX_PATH];
-        GetCurrentDirectory(sizeof(buf), buf);
-        sprops.user_dir = strdup(buf);
+        WCHAR buf[MAX_PATH];
+        GetCurrentDirectoryW(sizeof(buf), buf);
+        sprops.user_dir = _wcsdup(buf);
     }
 
     sprops.file_separator = "\\";
@@ -961,3 +971,9 @@
 
     return &sprops;
 }
+
+jstring
+GetStringPlatform(JNIEnv *env, nchar* wcstr)
+{
+    return (*env)->NewString(env, wcstr, wcslen(wcstr));
+}
--- a/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c	Tue Apr 20 01:24:48 2010 -0700
@@ -1579,7 +1579,7 @@
     jobject addr;
     int i;
 
-    if (ni_addrsID == NULL) {
+    if (ni_addrsID == NULL || ia_familyID == NULL) {
         jclass c = (*env)->FindClass(env, "java/net/NetworkInterface");
         CHECK_NULL_RETURN (c, -1);
         ni_addrsID = (*env)->GetFieldID(env, c, "addrs",
--- a/jdk/src/windows/native/sun/windows/awt_Component.cpp	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2010 Sun Microsystems, Inc.  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
@@ -3707,8 +3707,7 @@
     if (hIMC == NULL) {
         return;
     }
-    COMPOSITIONFORM cf = {CFS_POINT, {0, r.bottom}, NULL};
-    // Place the composition window right below the client Window
+    COMPOSITIONFORM cf = {CFS_DEFAULT, {0, 0}, {0, 0, 0, 0}};
     ImmSetCompositionWindow(hIMC, &cf);
 }
 
--- a/jdk/test/Makefile	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/Makefile	Tue Apr 20 01:24:48 2010 -0700
@@ -70,6 +70,10 @@
 ifeq ($(UNAME_S), Linux)
   OS_NAME     = linux
   OS_ARCH    := $(shell $(UNAME) -m)
+  # Check for unknown arch, try uname -p if uname -m says unknown
+  ifeq ($(OS_ARCH),unknown)
+    OS_ARCH    := $(shell $(UNAME) -p)
+  endif
   OS_VERSION := $(shell $(UNAME) -r)
 endif
 ifndef OS_NAME
@@ -93,16 +97,26 @@
 # Only want major and minor numbers from os version
 OS_VERSION := $(shell $(ECHO) "$(OS_VERSION)" | $(CUT) -d'.' -f1,2)
 
-# Try and use names i586, x64, and ia64 consistently  
-OS_ARCH:=$(subst X64,x64,$(OS_ARCH))
-OS_ARCH:=$(subst AMD64,x64,$(OS_ARCH))
-OS_ARCH:=$(subst amd64,x64,$(OS_ARCH))
-OS_ARCH:=$(subst x86_64,x64,$(OS_ARCH))
-OS_ARCH:=$(subst EM64T,x64,$(OS_ARCH))
-OS_ARCH:=$(subst em64t,x64,$(OS_ARCH))
-OS_ARCH:=$(subst intel64,x64,$(OS_ARCH))
-OS_ARCH:=$(subst Intel64,x64,$(OS_ARCH))
-OS_ARCH:=$(subst INTEL64,x64,$(OS_ARCH))
+# Name to use for x86_64 arch (historically amd64, but should change someday)
+OS_ARCH_X64_NAME:=amd64
+#OS_ARCH_X64_NAME:=x64
+
+# Alternate arch names (in case this arch is known by a second name)
+#   PROBLEM_LISTS may use either name.
+OS_ARCH2-amd64:=x64
+#OS_ARCH2-x64:=amd64
+
+# Try and use the arch names consistently
+OS_ARCH:=$(subst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
+OS_ARCH:=$(subst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
 OS_ARCH:=$(subst IA64,ia64,$(OS_ARCH))
 OS_ARCH:=$(subst X86,i586,$(OS_ARCH))
 OS_ARCH:=$(subst x86,i586,$(OS_ARCH))
@@ -110,17 +124,32 @@
 OS_ARCH:=$(subst i486,i586,$(OS_ARCH))
 OS_ARCH:=$(subst i686,i586,$(OS_ARCH))
 
-# Check for ARCH_DATA_MODEL, adjust OS_ARCH accordingly
+# Default  ARCH_DATA_MODEL settings
+ARCH_DATA_MODEL-i586 = 32
+ARCH_DATA_MODEL-$(OS_ARCH_X64_NAME) = 64
+ARCH_DATA_MODEL-ia64 = 64
+ARCH_DATA_MODEL-sparc = 32
+ARCH_DATA_MODEL-sparcv9 = 64
+
+# If ARCH_DATA_MODEL is not defined, try and pick a reasonable default
+ifndef ARCH_DATA_MODEL
+  ARCH_DATA_MODEL:=$(ARCH_DATA_MODEL-$(OS_ARCH))
+endif
 ifndef ARCH_DATA_MODEL
   ARCH_DATA_MODEL=32
 endif
+
+# Platform directory name
+PLATFORM_OS = $(OS_NAME)-$(OS_ARCH)
+
+# Check ARCH_DATA_MODEL, adjust OS_ARCH accordingly on solaris
 ARCH_DATA_MODEL_ERROR= \
-  ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(OS_NAME)-$(ARCH)
+  ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(PLATFORM_OS)
 ifeq ($(ARCH_DATA_MODEL),64)
-  ifeq ($(OS_NAME)-$(OS_ARCH),solaris-i586)
-    OS_ARCH=x64
+  ifeq ($(PLATFORM_OS),solaris-i586)
+    OS_ARCH=$(OS_ARCH_X64_NAME)
   endif
-  ifeq ($(OS_NAME)-$(OS_ARCH),solaris-sparc)
+  ifeq ($(PLATFORM_OS),solaris-sparc)
     OS_ARCH=sparcv9
   endif
   ifeq ($(OS_ARCH),i586)
@@ -131,7 +160,7 @@
   endif
 else
   ifeq ($(ARCH_DATA_MODEL),32)
-    ifeq ($(OS_ARCH),x64)
+    ifeq ($(OS_ARCH),$(OS_ARCH_X64_NAME))
       x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
     endif
     ifeq ($(OS_ARCH),ia64)
@@ -145,6 +174,12 @@
   endif
 endif
 
+# Alternate OS_ARCH name (defaults to OS_ARCH)
+OS_ARCH2:=$(OS_ARCH2-$(OS_ARCH))
+ifeq ($(OS_ARCH2),)
+  OS_ARCH2:=$(OS_ARCH)
+endif
+
 # Root of this test area (important to use full paths in some places)
 TEST_ROOT := $(shell $(PWD))
 
@@ -152,21 +187,21 @@
 ifdef ALT_OUTPUTDIR
   ABS_OUTPUTDIR = $(ALT_OUTPUTDIR)
 else
-  ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(OS_NAME)-$(OS_ARCH)
+  ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM_OS)
 endif
-ABS_BUILD_ROOT = $(ABS_OUTPUTDIR)
-ABS_TEST_OUTPUT_DIR := $(ABS_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
+ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
+ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
 
 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
 ifndef PRODUCT_HOME
   # Try to use j2sdk-image if it exists
-  ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image
-  PRODUCT_HOME :=                       \
-    $(shell                             \
-      if [ -d $(ABS_JDK_IMAGE) ] ; then \
-         $(ECHO) "$(ABS_JDK_IMAGE)";    \
-       else                             \
-         $(ECHO) "$(ABS_BUILD_ROOT)";   \
+  ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/j2sdk-image
+  PRODUCT_HOME :=                       		\
+    $(shell                             		\
+      if [ -d $(ABS_JDK_IMAGE) ] ; then 		\
+         $(ECHO) "$(ABS_JDK_IMAGE)";    		\
+       else                             		\
+         $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)";		\
        fi)
   PRODUCT_HOME := $(PRODUCT_HOME)
 endif
@@ -325,8 +360,10 @@
 	@$(RM) $@ $@.temp1 $@.temp2
 	@(($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-all'          ) ;\
 	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH)'   ) ;\
+	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH2)'  ) ;\
 	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_VERSION)') ;\
 	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH)'      ) ;\
+	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH2)'     ) ;\
           ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-all'             ) ;\
           ($(ECHO) "#") ;\
         ) | $(SED) -e 's@^[\ ]*@@' \
--- a/jdk/test/ProblemList.txt	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/ProblemList.txt	Tue Apr 20 01:24:48 2010 -0700
@@ -596,10 +596,6 @@
 #   Interrupted or IO exception, maybe writing to non-unique named file?
 com/sun/net/httpserver/bugs/B6373555.java			generic-all
 
-# Dies on pretty much all platforms when run with -ea -esa, Assertion error
-java/net/CookieHandler/TestHttpCookie.java			generic-all
-java/net/URLClassLoader/closetest/CloseTest.java		generic-all
-
 # Fails on OpenSolaris, BindException unexpected 
 java/net/BindException/Test.java				generic-all
 
@@ -647,9 +643,6 @@
 # Linux i586, fails with unexpected output
 java/net/MulticastSocket/NoLoopbackPackets.java 	 	linux-i586
 
-# Times out on windows x64, fails with samevm on solaris 11 i586
-java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java 	generic-all
-
 # Address already in use
 java/net/DatagramSocket/DatagramTimeout.java			generic-all
 
@@ -661,7 +654,6 @@
 java/net/Socket/AccurateTimeout.java			 	generic-all
 java/net/Socket/asyncClose/BrokenPipe.java		 	generic-all
 java/net/Socket/CloseAvailable.java			 	generic-all
-java/net/Socket/FDClose.java				 	generic-all
 
 # Linux X64 address already in use, samevm issues
 java/net/Socket/LingerTest.java 			 	generic-all
@@ -692,8 +684,6 @@
 java/net/SocketInputStream/SocketTimeout.java		 	generic-all
 
 # Linux i586, address already in use or timeout, samevm issues
-java/net/URLConnection/B5052093.java			 	generic-all
-java/net/URLConnection/contentHandler/UserContentHandler.java 	generic-all
 java/net/URLConnection/DisconnectAfterEOF.java		 	generic-all
 java/net/URLConnection/HandleContentTypeWithAttrs.java	 	generic-all
 java/net/URLConnection/Responses.java			 	generic-all
@@ -701,12 +691,9 @@
 java/net/URLConnection/ZeroContentLength.java		 	generic-all
 
 # Solaris 11 i586 fails with samevm, not sure why
-java/net/HttpURLConnection/HttpResponseCode.java		generic-all
 java/net/ResponseCache/B6181108.java				generic-all
 java/net/ResponseCache/ResponseCacheTest.java			generic-all
 java/net/URL/GetContent.java					generic-all
-java/net/URL/TestIPv6Addresses.java				generic-all
-java/net/URLClassLoader/HttpTest.java				generic-all
 java/net/URLConnection/HttpContinueStackOverflow.java		generic-all
 java/net/URLConnection/Redirect307Test.java			generic-all
 java/net/URLConnection/RedirectLimit.java			generic-all
@@ -735,9 +722,6 @@
 # Connection refused, windows samevm
 sun/net/www/protocol/http/DigestTest.java			generic-all
 
-# Fails on Fedora 9 32bit & 64bit & Solaris 10, wrong proxy for http://localhost/index.html
-java/net/ProxySelector/B6737819.java				generic-all
-
 ############################################################################
 
 # jdk_nio
@@ -745,6 +729,9 @@
 # Suspect many of these tests auffer from using fixed ports, no concrete 
 #   evidence.
 
+# Failing on Solaris x86 and Linux x86, filed 6934585
+java/nio/channels/AsynchronousSocketChannel/Basic.java		generic-all
+
 # Occasionally Failing with java.lang.AssertionError on Windows X64
 #  at sun.nio.ch.PendingIoCache.clearPendingIoMap(PendingIoCache.java:144)
 #java/nio/channels/FileChannel/ReleaseOnCloseDeadlock.java	windows-all
@@ -948,6 +935,15 @@
 
 # jdk_security
 
+# Failing on Solaris i586, 3/9/2010, not a -samevm issue (jdk_security3)
+sun/security/pkcs11/Secmod/AddPrivateKey.java			solaris-i586
+sun/security/pkcs11/ec/ReadCertificates.java			solaris-i586
+sun/security/pkcs11/ec/ReadPKCS12.java				solaris-i586
+sun/security/pkcs11/ec/TestCurves.java				solaris-i586
+sun/security/pkcs11/ec/TestECDSA.java				solaris-i586
+sun/security/pkcs11/ec/TestECGenSpec.java			solaris-i586
+sun/security/pkcs11/ec/TestKeyFactory.java			solaris-i586
+
 # Unknown problem, could be a jtreg -samevm issue?
 #  Error while cleaning up threads after test
 java/security/Security/SynchronizedAccess.java			generic-all
--- a/jdk/test/java/beans/EventHandler/Test6277246.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/beans/EventHandler/Test6277246.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  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
@@ -49,10 +49,10 @@
         catch (NoSuchMethodException exception) {
             throw new Error("unexpected exception", exception);
         }
+        catch (SecurityException exception) {
+            // expected security exception
+        }
         catch (RuntimeException exception) {
-            if (exception.getCause() instanceof SecurityException) {
-                return; // expected security exception
-            }
             throw new Error("unexpected exception", exception);
         }
     }
--- a/jdk/test/java/beans/EventHandler/Test6277266.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/beans/EventHandler/Test6277266.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  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
@@ -51,7 +51,7 @@
             );
             throw new Error("SecurityException expected");
         } catch (InvocationTargetException exception) {
-            if (exception.getCause().getCause() instanceof SecurityException){
+            if (exception.getCause() instanceof SecurityException){
                 return; // expected security exception
             }
             throw new Error("unexpected exception", exception);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Statement/Test6707226.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6707226
+ * @summary Tests the value updating in Expression
+ * @author Sergey Malenkov
+ */
+
+import java.beans.Expression;
+
+public class Test6707226 {
+    public static void main(String[] args) throws Exception {
+        Object value = new Object();
+
+        Expression expression = new Expression(value, Object.class, "new", null);
+        if (!value.equals(expression.getValue()))
+            throw new Error("the value is updated unexpectedly");
+
+        expression.execute();
+        if (value.equals(expression.getValue()))
+            throw new Error("the value is not updated as expected");
+    }
+}
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java	Tue Apr 20 01:24:48 2010 -0700
@@ -26,6 +26,7 @@
  * @bug 4199068 4738465 4937983 4930681 4926230 4931433 4932663 4986689
  *      5026830 5023243 5070673 4052517 4811767 6192449 6397034 6413313
  *      6464154 6523983 6206031 4960438 6631352 6631966 6850957 6850958
+ *      4947220
  * @summary Basic tests for Process and Environment Variable code
  * @run main/othervm Basic
  * @author Martin Buchholz
@@ -1456,13 +1457,14 @@
                 new File(System.getProperty("user.dir")).getCanonicalPath();
             String[] sdirs = new String[]
                 {".", "..", "/", "/bin",
-                 "C:", "c:", "C:/", "c:\\", "\\", "\\bin" };
+                 "C:", "c:", "C:/", "c:\\", "\\", "\\bin",
+                 "c:\\windows  ", "c:\\Program Files", "c:\\Program Files\\" };
             for (String sdir : sdirs) {
                 File dir = new File(sdir);
                 if (! (dir.isDirectory() && dir.exists()))
                     continue;
                 out.println("Testing directory " + dir);
-                dir = new File(dir.getCanonicalPath());
+                //dir = new File(dir.getCanonicalPath());
 
                 ProcessBuilder pb = new ProcessBuilder();
                 equal(pb.directory(), null);
@@ -1470,7 +1472,7 @@
 
                 pb.directory(dir);
                 equal(pb.directory(), dir);
-                equal(pwdInChild(pb), dir.toString());
+                equal(pwdInChild(pb), dir.getCanonicalPath());
 
                 pb.directory(null);
                 equal(pb.directory(), null);
@@ -1481,6 +1483,27 @@
         } catch (Throwable t) { unexpected(t); }
 
         //----------------------------------------------------------------
+        // Working directory with Unicode in child
+        //----------------------------------------------------------------
+        try {
+            if (UnicodeOS.is()) {
+                File dir = new File(System.getProperty("test.dir", "."),
+                                    "ProcessBuilderDir\u4e00\u4e02");
+                try {
+                    if (!dir.exists())
+                        dir.mkdir();
+                    out.println("Testing Unicode directory:" + dir);
+                    ProcessBuilder pb = new ProcessBuilder();
+                    pb.directory(dir);
+                    equal(pwdInChild(pb), dir.getCanonicalPath());
+                } finally {
+                    if (dir.exists())
+                        dir.delete();
+                }
+            }
+        } catch (Throwable t) { unexpected(t); }
+
+        //----------------------------------------------------------------
         // OOME in child allocating maximally sized array
         // Test for hotspot/jvmti bug 6850957
         //----------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/Authenticator/Deadlock.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6648001
+ * @run main/othervm/timeout=20 -ea:sun.net.www.protocol.http.AuthenticationInfo -Dhttp.auth.serializeRequests=true Deadlock
+ * @summary  cancelling HTTP authentication causes deadlock
+ */
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ExecutorService;
+import java.io.InputStream;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.net.PasswordAuthentication;
+import java.net.URL;
+import com.sun.net.httpserver.BasicAuthenticator;
+import com.sun.net.httpserver.Headers;
+import com.sun.net.httpserver.HttpContext;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpPrincipal;
+import com.sun.net.httpserver.HttpServer;
+
+public class Deadlock {
+
+    public static void main (String[] args) throws Exception {
+        Handler handler = new Handler();
+        InetSocketAddress addr = new InetSocketAddress (0);
+        HttpServer server = HttpServer.create(addr, 0);
+        HttpContext ctx = server.createContext("/test", handler);
+        BasicAuthenticator a = new BasicAuthenticator("foobar@test.realm") {
+            @Override
+            public boolean checkCredentials (String username, String pw) {
+                return "fred".equals(username) && pw.charAt(0) == 'x';
+            }
+        };
+
+        ctx.setAuthenticator(a);
+        ExecutorService executor = Executors.newCachedThreadPool();
+        server.setExecutor(executor);
+        server.start ();
+        java.net.Authenticator.setDefault(new MyAuthenticator());
+
+        System.out.print("Deadlock: " );
+        for (int i=0; i<2; i++) {
+            Runner t = new Runner(server, i);
+            t.start();
+            t.join();
+        }
+        server.stop(2);
+        executor.shutdown();
+        if (error) {
+            throw new RuntimeException("test failed error");
+        }
+
+        if (count != 2) {
+            throw new RuntimeException("test failed count = " + count);
+        }
+        System.out.println("OK");
+
+    }
+
+    static class Runner extends Thread {
+        HttpServer server;
+        int i;
+        Runner(HttpServer s, int i) {
+            server = s;
+            this.i = i;
+        }
+
+        @Override
+        public void run() {
+            URL url;
+            HttpURLConnection urlc;
+            try {
+                url = new URL("http://localhost:"+server.getAddress().getPort()+"/test/foo.html");
+                urlc = (HttpURLConnection)url.openConnection ();
+            } catch (IOException e) {
+                error = true;
+                return;
+            }
+            InputStream is = null;
+            try {
+                is = urlc.getInputStream();
+                while (is.read()!= -1) {}
+            } catch (IOException e) {
+                if (i == 1) error = true;
+            } finally {
+                if (is != null) try { is.close(); } catch (IOException e) {}
+            }
+        }
+    }
+
+    public static boolean error = false;
+    public static int count = 0;
+
+    static class MyAuthenticator extends java.net.Authenticator {
+        @Override
+        public PasswordAuthentication getPasswordAuthentication() {
+            PasswordAuthentication pw;
+            if (!getRequestingPrompt().equals("foobar@test.realm")) {
+                Deadlock.error = true;
+            }
+            if (count == 0) {
+                pw = null;
+            } else {
+                pw = new PasswordAuthentication("fred", "xyz".toCharArray());
+            }
+            count++;
+            return pw;
+        }
+    }
+
+    static class Handler implements HttpHandler {
+        int invocation = 1;
+
+        @Override
+        public void handle (HttpExchange t)
+            throws IOException
+        {
+            InputStream is = t.getRequestBody();
+            Headers map = t.getRequestHeaders();
+            Headers rmap = t.getResponseHeaders();
+            while (is.read() != -1);
+            is.close();
+            t.sendResponseHeaders(200, -1);
+            HttpPrincipal p = t.getPrincipal();
+            if (!p.getUsername().equals("fred")) {
+                error = true;
+            }
+            if (!p.getRealm().equals("foobar@test.realm")) {
+                error = true;
+            }
+            t.close();
+        }
+    }
+}
--- a/jdk/test/java/net/CookieHandler/CookieHandlerTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/CookieHandler/CookieHandlerTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -24,9 +24,13 @@
 /* @test
  * @summary Unit test for java.net.CookieHandler
  * @bug 4696506
+ * @run main/othervm CookieHandlerTest
  * @author Yingxian Wang
  */
 
+// Run in othervm since a default cookier handler is set and this
+// can effect other HTTP related tests.
+
 import java.net.*;
 import java.util.*;
 import java.io.*;
--- a/jdk/test/java/net/CookieHandler/TestHttpCookie.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/CookieHandler/TestHttpCookie.java	Tue Apr 20 01:24:48 2010 -0700
@@ -48,7 +48,6 @@
     }
 
     TestHttpCookie(String cHeader) {
-        assert cHeader != null;
         this.cHeader = cHeader;
 
         try {
--- a/jdk/test/java/net/MulticastSocket/NoLoopbackPackets.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/MulticastSocket/NoLoopbackPackets.java	Tue Apr 20 01:24:48 2010 -0700
@@ -29,9 +29,7 @@
 import java.util.*;
 import java.net.*;
 
-
 public class NoLoopbackPackets {
-    private static int PORT = 9001;
     private static String osname;
 
     static boolean isWindows() {
@@ -68,40 +66,47 @@
             return;
         }
 
-        // we will send packets to three multicast groups :-
-        // 224.1.1.1, ::ffff:224.1.1.2, and ff02::1:1
-        //
-        List<SocketAddress> groups = new ArrayList<SocketAddress>();
-        groups.add(new InetSocketAddress(InetAddress.getByName("224.1.1.1"), PORT));
-        groups.add(new InetSocketAddress(InetAddress.getByName("::ffff:224.1.1.2"), PORT));
-        groups.add(new InetSocketAddress(InetAddress.getByName("ff02::1:1"), PORT));
+        MulticastSocket msock = null;
+        List<SocketAddress> failedGroups = new ArrayList<SocketAddress>();
+        try {
+            msock = new MulticastSocket();
+            int port = msock.getLocalPort();
 
-        Thread sender = new Thread(new Sender(groups));
-        sender.setDaemon(true); // we want sender to stop when main thread exits
-        sender.start();
+            // we will send packets to three multicast groups :-
+            // 224.1.1.1, ::ffff:224.1.1.2, and ff02::1:1
+            //
+            List<SocketAddress> groups = new ArrayList<SocketAddress>();
+            groups.add(new InetSocketAddress(InetAddress.getByName("224.1.1.1"), port));
+            groups.add(new InetSocketAddress(InetAddress.getByName("::ffff:224.1.1.2"), port));
+            groups.add(new InetSocketAddress(InetAddress.getByName("ff02::1:1"), port));
+
+            Thread sender = new Thread(new Sender(groups));
+            sender.setDaemon(true); // we want sender to stop when main thread exits
+            sender.start();
 
-        // Now try to receive multicast packets. we should not see any of them
-        // since we disable loopback mode.
-        //
-        MulticastSocket msock = new MulticastSocket(PORT);
-        msock.setSoTimeout(5000);       // 5 seconds
+            // Now try to receive multicast packets. we should not see any of them
+            // since we disable loopback mode.
+            //
+            msock.setSoTimeout(5000);       // 5 seconds
+
+            byte[] buf = new byte[1024];
+            DatagramPacket packet = new DatagramPacket(buf, 0, buf.length);
+            for (SocketAddress group : groups) {
+                msock.joinGroup(group, null);
 
-        byte[] buf = new byte[1024];
-        DatagramPacket packet = new DatagramPacket(buf, 0, buf.length);
-        List<SocketAddress> failedGroups = new ArrayList<SocketAddress>();
-        for (SocketAddress group : groups) {
-            msock.joinGroup(group, null);
+                try {
+                    msock.receive(packet);
 
-            try {
-                msock.receive(packet);
+                    // it is an error if we receive something
+                    failedGroups.add(group);
+                } catch (SocketTimeoutException e) {
+                    // we expect this
+                }
 
-                // it is an error if we receive something
-                failedGroups.add(group);
-            } catch (SocketTimeoutException e) {
-                // we expect this
+                msock.leaveGroup(group, null);
             }
-
-            msock.leaveGroup(group, null);
+        } finally {
+            if (msock != null) try { msock.close(); } catch (Exception e) {}
         }
 
         if (failedGroups.size() > 0) {
@@ -111,36 +116,36 @@
             throw new RuntimeException("test failed.");
         }
     }
-}
+
+    static class Sender implements Runnable {
+        private List<SocketAddress> sendToGroups;
 
-class Sender implements Runnable {
-    private List<SocketAddress> sendToGroups;
-
-    public Sender(List<SocketAddress> groups) {
-        sendToGroups = groups;
-    }
+        public Sender(List<SocketAddress> groups) {
+            sendToGroups = groups;
+        }
 
-    public void run() {
-        byte[] buf = "hello world".getBytes();
-        List<DatagramPacket> packets = new ArrayList<DatagramPacket>();
+        public void run() {
+            byte[] buf = "hello world".getBytes();
+            List<DatagramPacket> packets = new ArrayList<DatagramPacket>();
 
-        try {
-            for (SocketAddress group : sendToGroups) {
-                DatagramPacket packet = new DatagramPacket(buf, buf.length, group);
-                packets.add(packet);
-            }
-
-            MulticastSocket msock = new MulticastSocket();
-            msock.setLoopbackMode(true);    // disable loopback mode
-            for (;;) {
-                for (DatagramPacket packet : packets) {
-                    msock.send(packet);
+            try {
+                for (SocketAddress group : sendToGroups) {
+                    DatagramPacket packet = new DatagramPacket(buf, buf.length, group);
+                    packets.add(packet);
                 }
 
-                Thread.currentThread().sleep(1000);     // 1 second
+                MulticastSocket msock = new MulticastSocket();
+                msock.setLoopbackMode(true);    // disable loopback mode
+                for (;;) {
+                    for (DatagramPacket packet : packets) {
+                        msock.send(packet);
+                    }
+
+                    Thread.sleep(1000);     // 1 second
+                }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
             }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
         }
     }
 }
--- a/jdk/test/java/net/ProxySelector/B6737819.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/ProxySelector/B6737819.java	Tue Apr 20 01:24:48 2010 -0700
@@ -23,9 +23,15 @@
 /*
  * @test
  * @bug 6737819
+ * @run main/othervm B6737819
  * @summary sun.misc.net.DefaultProxySelector doesn't use proxy setting to localhost
  */
 
+/* Run in othervm mode since the test sets HTTP proxy system properties that
+ * are read once and cached by the protocol handler. A previous test using the
+ * HTTP handler may run and these system properties may be ignored for this test.
+ */
+
 import java.net.ProxySelector;
 import java.net.Proxy;
 import java.net.URI;
--- a/jdk/test/java/net/ResponseCache/ResponseCacheTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/ResponseCache/ResponseCacheTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -150,10 +150,14 @@
         }
     }
     public static void main(String args[]) throws Exception {
-        ResponseCache.setDefault(new MyResponseCache());
-        FNPrefix = System.getProperty("test.src", ".")+"/";
-        OutFNPrefix = System.getProperty("test.scratch", ".")+"/";
-        new ResponseCacheTest();
+        try {
+            ResponseCache.setDefault(new MyResponseCache());
+            FNPrefix = System.getProperty("test.src", ".")+"/";
+            OutFNPrefix = System.getProperty("test.scratch", ".")+"/";
+            new ResponseCacheTest();
+        } finally{
+            ResponseCache.setDefault(null);
+        }
     }
 
     static class MyResponseCache extends ResponseCache {
--- a/jdk/test/java/net/ResponseCache/getResponseCode.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/ResponseCache/getResponseCode.java	Tue Apr 20 01:24:48 2010 -0700
@@ -30,8 +30,7 @@
 import java.net.*;
 import java.util.*;
 import java.io.*;
-import java.nio.*;
-import sun.net.www.ParseUtil;
+
 
 /**
  * Request should get serviced by the cache handler. Response get
@@ -52,9 +51,13 @@
         }
     }
     public static void main(String args[]) throws Exception {
-        ResponseCache.setDefault(new MyResponseCache());
-        FNPrefix = System.getProperty("test.src", ".")+"/";
-        new getResponseCode();
+        try {
+            ResponseCache.setDefault(new MyResponseCache());
+            FNPrefix = System.getProperty("test.src", ".")+"/";
+            new getResponseCode();
+        } finally{
+            ResponseCache.setDefault(null);
+        }
     }
 
     static class MyResponseCache extends ResponseCache {
--- a/jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java	Tue Apr 20 01:24:48 2010 -0700
@@ -22,17 +22,16 @@
  */
 
 /*
- * @test
- * @summary configuring unconnected Socket before passing to implAccept can cause fd leak
- * @bug 6368984
- * @author Edward Wang
+ * Test run from script, AcceptCauseFileDescriptorLeak.sh
+ * author Edward Wang
  */
 
-import java.io.*;
-import java.net.*;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
 
 public class AcceptCauseFileDescriptorLeak {
-    private static final int REPS = 1000;
+    private static final int REPS = 2048;
 
     public static void main(String[] args) throws Exception {
         final ServerSocket ss = new ServerSocket(0) {
@@ -60,31 +59,5 @@
         }
         ss.close();
         t.join();
-
-        //
-        // The threshold 20 below is a little arbitrary. The point here is that
-        // the remaining open file descriptors should be constant independent
-        // of REPS.
-        //
-        if (countOpenFD() > 20) {
-            throw new RuntimeException("File descriptor leak detected.");
-        }
-    }
-
-
-    /*
-     * Actually, this approach to count open file descriptors only
-     * works for Solaris/Linux. On Windows platform, this method
-     * will simply return zero. So the test will always be passed
-     * on Windows, too.
-     */
-    private static int countOpenFD() {
-        File dirOfFD = new File("/proc/self/fd");
-        File[] fds = dirOfFD.listFiles();
-
-        if (fds != null)
-            return fds.length;
-        else
-            return 0;
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.sh	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,48 @@
+#
+# Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# @test
+# @bug 6368984
+# @summary configuring unconnected Socket before passing to implAccept can cause fd leak
+# @build AcceptCauseFileDescriptorLeak
+# @run shell AcceptCauseFileDescriptorLeak.sh
+
+OS=`uname -s`
+case "$OS" in
+    Windows_* | CYGWIN* )
+        echo "ulimit not on Windows"
+        exit 0
+        ;;
+    * )
+        CLASSPATH=${TESTCLASSES}:${TESTSRC}
+        ;;
+esac
+export CLASSPATH
+
+# hard limit needs to be less than 1024 for this bug
+NOFILES=`ulimit -n -H`
+if [ "$NOFILES" = "unlimited" ] || [ $NOFILES -ge 1024 ]; then
+    ulimit -n 1024
+fi
+
+${TESTJAVA}/bin/java AcceptCauseFileDescriptorLeak
--- a/jdk/test/java/net/Socket/FDClose.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright 1998-2002 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/**
- * @test
- * @bug 4152799
- * @summary  test to see if interrupting a socket accept closes fd0
- */
-import java.net.*;
-import java.io.*;
-import java.util.*;
-
-public class FDClose {
-
-    static boolean isServerReady = false;
-
-    public static void main(String[] args) throws Exception {
-
-        Thread me = Thread.currentThread();
-
-        // Put a thread waiting on SocketServer.Accept
-        AReader test = new AReader();
-        Thread readerThread = new Thread(test);
-        readerThread.start();
-
-        // wait for the server socket to be ready
-        while (!isServerReady) {
-            me.sleep(100);
-        }
-
-        // Interrupt the waiting thread
-        readerThread.interrupt();
-
-        // Wait another moment
-        me.sleep(100);
-
-        // Check to see if fd0 is closed
-        System.in.available();
-    }
-
-    public static class AReader implements Runnable {
-        public void run() {
-            try {
-                ServerSocket sock = new ServerSocket(0);
-                isServerReady = true;
-                sock.accept();
-            } catch (Exception e) {
-            }
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/Socket/SocksConnectTimeout.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6223635
+ * @summary Code hangs at connect call even when Timeout is specified
+ */
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.net.SocketTimeoutException;
+import java.io.IOException;
+import java.io.Closeable;
+import java.util.concurrent.Phaser;
+import java.util.concurrent.TimeUnit;
+
+public class SocksConnectTimeout {
+    static ServerSocket serverSocket;
+    static final boolean debug = true;
+    static final Phaser startPhaser = new Phaser(2);
+    static final Phaser finishPhaser = new Phaser(2);
+    static int failed, passed;
+
+    public static void main(String[] args) {
+        try {
+            serverSocket = new ServerSocket(0);
+
+            (new Thread() {
+                @Override
+                public void run() { serve(); }
+            }).start();
+
+            Proxy socksProxy = new Proxy(Proxy.Type.SOCKS,
+                new InetSocketAddress(InetAddress.getLocalHost(), serverSocket.getLocalPort()));
+
+            test(socksProxy);
+        } catch (IOException e) {
+            unexpected(e);
+        } finally {
+            close(serverSocket);
+
+            if (failed > 0)
+                throw new RuntimeException("Test Failed: passed:" + passed + ", failed:" + failed);
+        }
+    }
+
+    static void test(Proxy proxy) {
+        startPhaser.arriveAndAwaitAdvance();
+        Socket socket = null;
+        try {
+            socket = new Socket(proxy);
+            connectWithTimeout(socket);
+            failed("connected successfully!");
+        } catch (SocketTimeoutException socketTimeout) {
+            debug("Passed: Received: " + socketTimeout);
+            passed();
+        } catch (Exception exception) {
+            failed("Connect timeout test failed", exception);
+        } finally {
+            finishPhaser.arriveAndAwaitAdvance();
+            close(socket);
+        }
+    }
+
+    static void connectWithTimeout(Socket socket) throws IOException {
+        socket.connect(new InetSocketAddress(InetAddress.getLocalHost(), 1234), 500);
+    }
+
+    static void serve() {
+        Socket client = null;
+        try {
+            startPhaser.arriveAndAwaitAdvance();
+            client = serverSocket.accept();
+            finishPhaser.awaitAdvanceInterruptibly(finishPhaser.arrive(), 5, TimeUnit.SECONDS);
+        } catch (Exception e) {
+            unexpected(e);
+        } finally {
+            close(client);
+        }
+    }
+
+    static void debug(String message) {
+        if (debug)
+            System.out.println(message);
+    }
+
+    static void unexpected(Exception e ) {
+        System.out.println("Unexcepted Exception: " + e);
+    }
+
+    static void close(Closeable closeable) {
+        if (closeable != null) try { closeable.close(); } catch (IOException e) {unexpected(e);}
+    }
+
+    static void failed(String message) {
+        System.out.println(message);
+        failed++;
+    }
+
+    static void failed(String message, Exception e) {
+        System.out.println(message);
+        System.out.println(e);
+        failed++;
+    }
+
+    static void passed() { passed++; };
+
+}
--- a/jdk/test/java/net/URL/TestIPv6Addresses.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/URL/TestIPv6Addresses.java	Tue Apr 20 01:24:48 2010 -0700
@@ -23,8 +23,12 @@
 
 /* @test
  * @bug 4451522 4460484
+ * @run main/othervm TestIPv6Addresses
  * @summary URI and URL getHost() methods don't comform to RFC 2732
  */
+
+// Run in othervm because the tests sets a SecurityManager
+
 import java.net.*;
 
 public class TestIPv6Addresses {
--- a/jdk/test/java/net/URLClassLoader/HttpTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/URLClassLoader/HttpTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -56,9 +56,9 @@
             }
 
             public void run() {
+                InputStream in = null;
                 try {
-
-                    InputStream in = s.getInputStream();
+                    in = s.getInputStream();
                     for (;;) {
 
                         // read entire request from client
@@ -111,6 +111,9 @@
                     } // for
 
                 } catch (Exception e) {
+                    unexpected(e);
+                } finally {
+                    if (in != null) { try {in.close(); } catch(IOException e) {unexpected(e);} }
                 }
             }
         }
@@ -131,6 +134,11 @@
             }
         }
 
+        void unexpected(Exception e) {
+            System.out.println(e);
+            e.printStackTrace();
+        }
+
         public static HttpServer create() throws Exception {
             if (svr != null)
                 return svr;
@@ -211,6 +219,7 @@
         //          one GET request
         svr.counters().reset();
         InputStream in = cl.getResourceAsStream("foo2.gif");
+        in.close();
         System.out.println(svr.counters());
         if (svr.counters().getCount() > 1) {
             failed = true;
--- a/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -34,7 +34,6 @@
 import java.io.*;
 import java.net.*;
 import java.lang.reflect.*;
-import java.util.concurrent.*;
 import com.sun.net.httpserver.*;
 
 public class CloseTest {
@@ -107,7 +106,6 @@
             } else {
                 copyFile (new File (src, f), new File (dst, f));
             }
-            assert false;
         }
     }
 
--- a/jdk/test/java/net/URLConnection/B5052093.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/URLConnection/B5052093.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  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.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * 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
@@ -66,17 +64,29 @@
 
     public static void main(String[] args) throws Exception {
         server = new HttpServer(new B5052093(), 1, 10, 0);
-        URL url = new URL("http://localhost:"+server.getLocalPort()+"/foo");
-        URLConnection conn = url.openConnection();
-        int i = conn.getContentLength();
-        long l = conn.getContentLengthLong();
-        if (i != -1 || l != testSize)
-            throw new RuntimeException("Wrong content-length from http");
+        try {
+            URL url = new URL("http://localhost:"+server.getLocalPort()+"/foo");
+            URLConnection conn = url.openConnection();
+            int i = conn.getContentLength();
+            long l = conn.getContentLengthLong();
+            if (i != -1 || l != testSize) {
+                System.out.println("conn.getContentLength = " + i);
+                System.out.println("conn.getContentLengthLong = " + l);
+                System.out.println("testSize = " + testSize);
+                throw new RuntimeException("Wrong content-length from http");
+            }
 
-        URLConnection fu = new LargeFileURLConnection(new LargeFile());
-        i = fu.getContentLength();
-        l = fu.getContentLengthLong();
-        if (i != -1 || l != testSize)
-            throw new RuntimeException("Wrong content-length from file");
+            URLConnection fu = new LargeFileURLConnection(new LargeFile());
+            i = fu.getContentLength();
+            l = fu.getContentLengthLong();
+            if (i != -1 || l != testSize) {
+                System.out.println("fu.getContentLength = " + i);
+                System.out.println("fu.getContentLengthLong = " + l);
+                System.out.println("testSize = " + testSize);
+                throw new RuntimeException("Wrong content-length from file");
+            }
+        } finally {
+            server.terminate();
+        }
     }
 }
--- a/jdk/test/java/net/URLConnection/contentHandler/UserContentHandler.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/URLConnection/contentHandler/UserContentHandler.java	Tue Apr 20 01:24:48 2010 -0700
@@ -25,8 +25,16 @@
  * @bug 4191147
  * @summary 1.2beta4 does not load user defined content handlers
  * @build UserContentHandler
- * @run main UserContentHandler
+ * @run main/othervm UserContentHandler
  */
+
+/* Run in othervm mode since the test sets a system property, java.content.handler.pkgs,
+ * that prepends a specific package prefix defining a text/plain content
+ * handler. If other URLConnection tests run before this one they might trigger
+ * the Sun implementation text/plain content handler in sun.net.www.content
+ * to be loaded and cached, this will break this test.
+ */
+
 import java.net.*;
 import java.io.*;
 import java.util.*;
@@ -55,7 +63,7 @@
             // don't close the connection immediately as otherwise
             // the http headers may not have been received and the
             // http client will re-connect.
-            Thread.currentThread().sleep(2000);
+            Thread.sleep(2000);
 
             s.close();
 
--- a/jdk/test/java/net/ipv6tests/TcpTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/ipv6tests/TcpTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -47,9 +47,11 @@
         try {
             ia4any = InetAddress.getByName ("0.0.0.0");
             ia6any = InetAddress.getByName ("::0");
-            int scope = ia6addr.getScopeId();
-            if (scope != 0) {
-                ia6bad = InetAddress.getByName ("fe80::1:2:3:4:5:6%"+scope);
+            if (ia6addr != null) {
+                int scope = ia6addr.getScopeId();
+                if (scope != 0) {
+                    ia6bad = InetAddress.getByName ("fe80::1:2:3:4:5:6%"+scope);
+                }
             } else {
                 ia6bad = InetAddress.getByName ("fe80::1:2:3:4:5:6");
             }
--- a/jdk/test/java/net/ipv6tests/Tests.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/net/ipv6tests/Tests.java	Tue Apr 20 01:24:48 2010 -0700
@@ -38,12 +38,25 @@
         OutputStream o1 = s1.getOutputStream();
         OutputStream o2 = s2.getOutputStream();
 
-        simpleWrite (o1, 100);
-        simpleWrite (o2, 200);
+        startSimpleWriter("SimpleWriter-1", o1, 100);
+        startSimpleWriter("SimpleWriter-2", o2, 200);
         simpleRead (i2, 100);
         simpleRead (i1, 200);
     }
 
+    static void startSimpleWriter(String threadName, final OutputStream os, final int start) {
+        (new Thread(new Runnable() {
+            public void run() {
+                try { simpleWrite(os, start); }
+                catch (Exception e) {unexpected(e); }
+            }}, threadName)).start();
+    }
+
+    static void unexpected(Exception e ) {
+        System.out.println("Unexcepted Exception: " + e);
+        e.printStackTrace();
+    }
+
     /**
      * Send a packet from s1 to s2 (ia2/s2.localPort) and check it
      * Send a packet from s2 to s1 (ia1/s1.localPort) and check it
@@ -247,13 +260,15 @@
         }
 
         private NetworkInterface getNextIf () {
-            while (ifs.hasMoreElements()) {
-                NetworkInterface nic = (NetworkInterface)ifs.nextElement();
-                try {
-                    if (nic.isUp() && !nic.isLoopback())
-                        return nic;
-                } catch (SocketException e) {
-                    // ignore
+            if (ifs != null) {
+                while (ifs.hasMoreElements()) {
+                    NetworkInterface nic = (NetworkInterface)ifs.nextElement();
+                    try {
+                        if (nic.isUp() && !nic.isLoopback())
+                            return nic;
+                    } catch (SocketException e) {
+                        // ignore
+                    }
                 }
             }
 
--- a/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4777124 6920545
+ * @bug 4777124 6920545 6911753
  * @summary Verify that all Charset subclasses are available through the API
  */
 
@@ -65,8 +65,6 @@
         // remove the known pseudo-charsets that serve only to implement
         // other charsets, but shouldn't be known to the public
         charsets.remove(Class.forName("sun.nio.cs.Unicode"));
-        charsets.remove(Class.forName("sun.nio.cs.ext.HKSCS"));
-        charsets.remove(Class.forName("sun.nio.cs.ext.HKSCS_2001"));
         charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022"));
         charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022_CN_GB"));
         charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022_CN_CNS"));
--- a/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java	Tue Apr 20 01:24:48 2010 -0700
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4473201 4696726 4652234 4482298 4784385 4966197 4267354 5015668
+ * @bug 4473201 4696726 4652234 4482298 4784385 4966197 4267354 5015668 6911753
  * @summary Check that registered charsets are actually registered
  */
 
@@ -240,7 +240,6 @@
                     "Big5_HKSCS",
                     "big5hk",
                     "big5-hkscs",
-                    "big5-hkscs:unicode3.0",
                     "big5hkscs"
                 });
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/security/cert/CertificateFactory/ReturnStream.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6813340
+ * @summary X509Factory should not depend on is.available()==0
+ */
+import java.io.*;
+import java.security.cert.*;
+
+/**
+ * Tests ol'Mac style file, end witha  single '\r'
+ */
+public class ReturnStream {
+
+    public static void main(String[] args) throws Exception {
+        FileInputStream fin = new FileInputStream(new File(new File(
+                System.getProperty("test.src", "."), "openssl"), "pem"));
+        byte[] buffer = new byte[4096];
+        int size = 0;
+        while (true) {
+            int len = fin.read(buffer, size, 4096-size);
+            if (len < 0) break;
+            size += len;
+        }
+        fin.close();
+
+        // Make a copy
+        System.arraycopy(buffer, 0, buffer, size, size);
+        size += size;
+
+        // Create a ol'Mac style file.
+        for (int i=0; i<size; i++) {
+            if (buffer[i] == '\n') buffer[i] = '\r';
+        }
+
+        CertificateFactory factory = CertificateFactory.getInstance("X.509");
+        if (factory.generateCertificates(
+                new ByteArrayInputStream(buffer, 0, size)).size() != 2) {
+            throw new Exception("Cert not OK");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/security/cert/CertificateFactory/SlowStream.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.io.*;
+import java.security.cert.*;
+
+class SlowStreamReader {
+
+    public static void main(String[] args) throws Exception {
+        CertificateFactory factory = CertificateFactory.getInstance("X.509");
+        if (factory.generateCertificates(System.in).size() != 5) {
+            throw new Exception("Not all certs read");
+        }
+    }
+}
+
+class SlowStreamWriter {
+    public static void main(String[] args) throws Exception {
+        for (int i=0; i<5; i++) {
+            FileInputStream fin = new FileInputStream(new File(new File(
+                    System.getProperty("test.src", "."), "openssl"), "pem"));
+            byte[] buffer = new byte[4096];
+            while (true) {
+                int len = fin.read(buffer);
+                if (len < 0) break;
+                System.out.write(buffer, 0, len);
+            }
+            Thread.sleep(2000);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/security/cert/CertificateFactory/slowstream.sh	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,50 @@
+#
+# Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# @test
+# @bug 6813340
+# @summary X509Factory should not depend on is.available()==0
+
+if [ "${TESTSRC}" = "" ] ; then
+  TESTSRC="."
+fi
+if [ "${TESTJAVA}" = "" ] ; then
+  echo "TESTJAVA not set.  Test cannot execute."
+  echo "FAILED!!!"
+  exit 1
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+  Windows_* )
+    FS="\\"
+    ;;
+  * )
+    FS="/"
+    ;;
+esac
+
+${TESTJAVA}${FS}bin${FS}javac -d . ${TESTSRC}${FS}SlowStream.java
+${TESTJAVA}${FS}bin${FS}java -Dtest.src=${TESTSRC} SlowStreamWriter | \
+        ${TESTJAVA}${FS}bin${FS}java SlowStreamReader
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/concurrent/Semaphore/PermitOverflow.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,102 @@
+/*
+ * 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * This file is available under and governed by the GNU General Public
+ * License version 2 only, as published by the Free Software Foundation.
+ * However, the following notice accompanied the original version of this
+ * file:
+ *
+ * Written by Doug Lea with assistance from members of JCP JSR-166
+ * Expert Group and released to the public domain, as explained at
+ * http://creativecommons.org/licenses/publicdomain
+ */
+
+/*
+ * @test
+ * @bug 6941130
+ * @summary Numeric overflow/underflow of permits causes Error throw
+ */
+
+import java.util.concurrent.Semaphore;
+
+public class PermitOverflow {
+
+    public static void main(String[] args) throws Throwable {
+        for (boolean fair : new boolean[] { true, false }) {
+            Semaphore sem = new Semaphore(Integer.MAX_VALUE - 1, fair);
+            if (sem.availablePermits() != Integer.MAX_VALUE - 1)
+                throw new RuntimeException();
+            try {
+                sem.release(2);
+                throw new RuntimeException();
+            } catch (Error expected) {
+            }
+            sem.release(1);
+            if (sem.availablePermits() != Integer.MAX_VALUE)
+                throw new RuntimeException();
+            try {
+                sem.release(1);
+                throw new RuntimeException();
+            } catch (Error expected) {
+            }
+            try {
+                sem.release(Integer.MAX_VALUE);
+                throw new RuntimeException();
+            } catch (Error expected) {
+            }
+        }
+
+        class Sem extends Semaphore {
+            public Sem(int permits, boolean fair) {
+                super(permits, fair);
+            }
+            public void reducePermits(int reduction) {
+                super.reducePermits(reduction);
+            }
+        }
+
+        for (boolean fair : new boolean[] { true, false }) {
+            Sem sem = new Sem(Integer.MIN_VALUE + 1, fair);
+            if (sem.availablePermits() != Integer.MIN_VALUE + 1)
+                throw new RuntimeException();
+            try {
+                sem.reducePermits(2);
+                throw new RuntimeException();
+            } catch (Error expected) {
+            }
+            sem.reducePermits(1);
+            if (sem.availablePermits() != Integer.MIN_VALUE)
+                throw new RuntimeException();
+            try {
+                sem.reducePermits(1);
+                throw new RuntimeException();
+            } catch (Error expected) {
+            }
+            try {
+                sem.reducePermits(Integer.MAX_VALUE);
+                throw new RuntimeException();
+            } catch (Error expected) {
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/synth/Test6933784.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+   @bug 6933784
+   @summary NIMBUS: ImageView getNoImageIcon and getLoadingImageIcon returns nulls instead of an icon
+   @author Pavel Porvatov
+   @run main Test6933784
+*/
+
+import javax.swing.*;
+import javax.swing.plaf.nimbus.NimbusLookAndFeel;
+import javax.swing.plaf.synth.SynthLookAndFeel;
+import javax.swing.text.Element;
+import javax.swing.text.html.HTMLDocument;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.ImageView;
+import java.io.StringReader;
+
+public class Test6933784 {
+    public static void main(String[] args) throws Exception {
+        UIManager.setLookAndFeel(new SynthLookAndFeel());
+
+        checkImages();
+
+        UIManager.setLookAndFeel(new NimbusLookAndFeel());
+
+        checkImages();
+    }
+
+    private static void checkImages() throws Exception {
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                HTMLEditorKit c = new HTMLEditorKit();
+                HTMLDocument doc = new HTMLDocument();
+
+                try {
+                    c.read(new StringReader("<HTML><TITLE>Test</TITLE><BODY><IMG id=test></BODY></HTML>"), doc, 0);
+                } catch (Exception e) {
+                    throw new RuntimeException("The test failed", e);
+                }
+
+                Element elem = doc.getElement("test");
+                ImageView iv = new ImageView(elem);
+
+                if (iv.getLoadingImageIcon() == null) {
+                    throw new RuntimeException("getLoadingImageIcon returns null");
+                }
+
+                if (iv.getNoImageIcon() == null) {
+                    throw new RuntimeException("getNoImageIcon returns null");
+                }
+            }
+        });
+    }
+}
--- a/jdk/test/lib/security/cacerts/VerifyCACerts.java	Sun Apr 11 23:21:23 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * Copyright 2002-2008 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/**
- * @test
- * @bug 4400624 6321453 6728890 6732157 6754779 6768559
- * @summary Make sure all self-signed root cert signatures are valid
- */
-import java.io.FileInputStream;
-import java.security.KeyStore;
-import java.security.MessageDigest;
-import java.security.cert.*;
-import java.util.*;
-
-public class VerifyCACerts {
-
-    private final static String cacertsFileName =
-        System.getProperty("java.home") +
-        System.getProperty("file.separator") + "lib" +
-        System.getProperty("file.separator") + "security" +
-        System.getProperty("file.separator") + "cacerts";
-
-    private static boolean atLeastOneFailed = false;
-
-    private static MessageDigest md;
-
-    // map of cert alias to SHA1 fingerprint
-    private static Map<String, String> fpMap = new HashMap<String, String>();
-
-    private static String[][] entries = {
-        { "swisssignsilverg2ca", "9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB"},
-        { "swisssigngoldg2ca", "D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61"},
-        { "swisssignplatinumg2ca", "56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66"},
-        { "verisigntsaca", "BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56"},
-        { "camerfirmachambersignca", "4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C"},
-        { "camerfirmachambersca", "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C"},
-        { "camerfirmachamberscommerceca", "6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1"},
-        { "deutschetelekomrootca2", "85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF"},
-    };
-
-    static {
-        for (String[] entry : entries) {
-            fpMap.put(entry[0], entry[1]);
-        }
-    };
-
-    public static void main(String[] args) throws Exception {
-        md = MessageDigest.getInstance("SHA1");
-        KeyStore ks = KeyStore.getInstance("JKS");
-        ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray());
-
-        // check that all entries in the map are in the keystore
-        for (String alias : fpMap.keySet()) {
-            if (!ks.isCertificateEntry(alias)) {
-                atLeastOneFailed = true;
-                System.err.println(alias + " is not in cacerts");
-            }
-        }
-        // pull all the trusted self-signed CA certs out of the cacerts file
-        // and verify their signatures
-        Enumeration<String> aliases = ks.aliases();
-        while (aliases.hasMoreElements()) {
-            String alias = aliases.nextElement();
-            System.out.println("Verifying " + alias);
-            if (!ks.isCertificateEntry(alias)) {
-                atLeastOneFailed = true;
-                System.err.println(alias + " is not a trusted cert entry");
-            }
-            Certificate cert = ks.getCertificate(alias);
-            // remember the GTE CyberTrust CA cert for further tests
-            if (alias.equals("gtecybertrustca")) {
-                atLeastOneFailed = true;
-                System.err.println
-                    ("gtecybertrustca is expired and should be deleted");
-            }
-            cert.verify(cert.getPublicKey());
-            if (!checkFingerprint(alias, cert)) {
-                atLeastOneFailed = true;
-                System.err.println
-                    (alias + " SHA1 fingerprint is incorrect");
-            }
-        }
-
-        if (atLeastOneFailed) {
-            throw new Exception("At least one cacert test failed");
-        }
-    }
-
-    private static boolean checkFingerprint(String alias, Certificate cert)
-        throws Exception {
-        String fingerprint = fpMap.get(alias);
-        if (fingerprint == null) {
-            // no entry for alias
-            return true;
-        }
-        System.out.println("Checking fingerprint of " + alias);
-        byte[] digest = md.digest(cert.getEncoded());
-        return fingerprint.equals(toHexString(digest));
-    }
-
-    private static String toHexString(byte[] block) {
-        StringBuffer buf = new StringBuffer();
-        int len = block.length;
-        for (int i = 0; i < len; i++) {
-             byte2hex(block[i], buf);
-             if (i < len-1) {
-                 buf.append(":");
-             }
-        }
-        return buf.toString();
-    }
-
-    private static void byte2hex(byte b, StringBuffer buf) {
-        char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
-                            '9', 'A', 'B', 'C', 'D', 'E', 'F' };
-        int high = ((b & 0xf0) >> 4);
-        int low = (b & 0x0f);
-        buf.append(hexChars[high]);
-        buf.append(hexChars[low]);
-    }
-}
--- a/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2009-2010 Sun Microsystems, Inc.  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,8 +23,9 @@
 
 /*
  * @test
- * @bug 6578647
+ * @bug 6578647 6829283
  * @summary Undefined requesting URL in java.net.Authenticator.getPasswordAuthentication()
+ * @summary HTTP/Negotiate: Authenticator triggered again when user cancels the first one
  */
 
 import com.sun.net.httpserver.Headers;
@@ -35,6 +36,8 @@
 import com.sun.net.httpserver.HttpPrincipal;
 import com.sun.security.auth.module.Krb5LoginModule;
 import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
@@ -79,6 +82,9 @@
     // web page content
     final static String CONTENT = "Hello, World!";
 
+    // For 6829283, count how many times the Authenticator is called.
+    static int count = 0;
+
     // URLs for web test, proxy test. The proxy server is not a real proxy
     // since it fakes the same content for any URL. :)
     final static URL webUrl, proxyUrl;
@@ -134,6 +140,17 @@
         }
     }
 
+    /**
+     * This Authenticator knows nothing
+     */
+    static class KnowNothingAuthenticator extends java.net.Authenticator {
+        @Override
+        public PasswordAuthentication getPasswordAuthentication () {
+            HttpNegotiateServer.count++;
+            return null;
+        }
+    }
+
     public static void main(String[] args)
             throws Exception {
 
@@ -147,7 +164,6 @@
         kdcp.addPrincipalRandKey("krbtgt/" + REALM_PROXY);
         kdcp.addPrincipalRandKey("HTTP/" + PROXY_HOST);
 
-        KDC.writeMultiKtab(KRB5_TAB, kdcw, kdcp);
         KDC.saveConfig(KRB5_CONF, kdcw, kdcp,
                 "default_keytab_name = " + KRB5_TAB,
                 "[domain_realm]",
@@ -157,6 +173,19 @@
 
         System.setProperty("java.security.krb5.conf", KRB5_CONF);
         Config.refresh();
+        KDC.writeMultiKtab(KRB5_TAB, kdcw, kdcp);
+
+        // Write a customized JAAS conf file, so that any kinit cache
+        // will be ignored.
+        System.setProperty("java.security.auth.login.config", OneKDC.JAAS_CONF);
+        File f = new File(OneKDC.JAAS_CONF);
+        FileOutputStream fos = new FileOutputStream(f);
+        fos.write((
+                "com.sun.security.jgss.krb5.initiate {\n" +
+                "    com.sun.security.auth.module.Krb5LoginModule required;\n};\n"
+                ).getBytes());
+        fos.close();
+        f.deleteOnExit();
 
         HttpServer h1 = httpd(WEB_PORT, "Negotiate", false,
                 "HTTP/" + WEB_HOST + "@" + REALM_WEB, KRB5_TAB);
@@ -164,23 +193,21 @@
                 "HTTP/" + PROXY_HOST + "@" + REALM_PROXY, KRB5_TAB);
 
         try {
-
-            BufferedReader reader;
-            java.net.Authenticator.setDefault(new KnowAllAuthenticator());
-
-            reader = new BufferedReader(new InputStreamReader(
-                    webUrl.openConnection().getInputStream()));
-            if (!reader.readLine().equals(CONTENT)) {
-                throw new RuntimeException("Bad content");
+            Exception e1 = null, e2 = null;
+            try {
+                test6578647();
+            } catch (Exception e) {
+                e1 = e;
+                e.printStackTrace();
             }
-
-            reader = new BufferedReader(new InputStreamReader(
-                    proxyUrl.openConnection(
-                    new Proxy(Proxy.Type.HTTP,
-                        new InetSocketAddress(PROXY_HOST, PROXY_PORT)))
-                    .getInputStream()));
-            if (!reader.readLine().equals(CONTENT)) {
-                throw new RuntimeException("Bad content");
+            try {
+                test6829283();
+            } catch (Exception e) {
+                e2 = e;
+                e.printStackTrace();
+            }
+            if (e1 != null || e2 != null) {
+                throw new RuntimeException("Test error");
             }
         } finally {
             // Must stop. Seems there's no HttpServer.startAsDaemon()
@@ -189,6 +216,40 @@
         }
     }
 
+    static void test6578647() throws Exception {
+        BufferedReader reader;
+        java.net.Authenticator.setDefault(new KnowAllAuthenticator());
+
+        reader = new BufferedReader(new InputStreamReader(
+                webUrl.openConnection().getInputStream()));
+        if (!reader.readLine().equals(CONTENT)) {
+            throw new RuntimeException("Bad content");
+        }
+
+        reader = new BufferedReader(new InputStreamReader(
+                proxyUrl.openConnection(
+                new Proxy(Proxy.Type.HTTP,
+                    new InetSocketAddress(PROXY_HOST, PROXY_PORT)))
+                .getInputStream()));
+        if (!reader.readLine().equals(CONTENT)) {
+            throw new RuntimeException("Bad content");
+        }
+    }
+
+    static void test6829283() throws Exception {
+        BufferedReader reader;
+        java.net.Authenticator.setDefault(new KnowNothingAuthenticator());
+        try {
+            new BufferedReader(new InputStreamReader(
+                    webUrl.openConnection().getInputStream()));
+        } catch (IOException ioe) {
+            // Will fail since no username and password is provided.
+        }
+        if (count > 1) {
+            throw new RuntimeException("Authenticator called twice");
+        }
+    }
+
     /**
      * Creates and starts an HTTP or proxy server that requires
      * Negotiate authentication.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/pkcs11/SecureRandom/TestDeserialization.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6837847
+ * @summary Ensure a deserialized PKCS#11 SecureRandom is functional.
+ * @library ..
+ */
+
+import java.security.*;
+import java.io.*;
+
+public class TestDeserialization extends PKCS11Test {
+
+    public void main(Provider p) throws Exception {
+        // Skip this test for providers not found by java.security.Security
+        if (Security.getProvider(p.getName()) != p) {
+            System.out.println("Skip test for provider " + p.getName());
+            return;
+        }
+        SecureRandom r;
+        try {
+            r = SecureRandom.getInstance("PKCS11", p);
+            System.out.println("SecureRandom instance " + r);
+        } catch (NoSuchAlgorithmException e) {
+            System.out.println("Provider " + p +
+                               " does not support SecureRandom, skipping");
+            e.printStackTrace();
+            return;
+        }
+        r.setSeed(System.currentTimeMillis());
+        byte[] buf = new byte[16];
+        byte[] ser = toByteArray(r);
+        System.out.println("Serialized Len = " + ser.length);
+        SecureRandom r2 = fromByteArray(ser);
+        System.out.println("Deserialized into " + r2);
+        r2.nextBytes(buf);
+        System.out.println("Done");
+    }
+
+    public static void main(String[] args) throws Exception {
+        main(new TestDeserialization());
+    }
+
+    private byte[] toByteArray(SecureRandom r) throws Exception {
+        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+        ObjectOutputStream outStream = null;
+        try {
+            outStream = new ObjectOutputStream(out);
+            outStream.writeObject(r);
+            return out.toByteArray();
+        } finally {
+            if (outStream != null) {
+                outStream.close();
+            }
+        }
+    }
+
+    private SecureRandom fromByteArray(byte[] buf) throws Exception {
+        SecureRandom r = null;
+        ByteArrayInputStream is = new ByteArrayInputStream(buf);
+        ObjectInputStream ois = null;
+        try {
+            ois = new ObjectInputStream(is);
+            r = (SecureRandom) ois.readObject();
+        } finally {
+            if (ois != null) {
+                ois.close();
+            }
+        }
+        return r;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/pkcs11/Signature/TestRSAKeyLength.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test %W% %E%
+ * @bug 6695485
+ * @summary Make sure initSign/initVerify() check RSA key lengths
+ * @author Yu-Ching Valerie Peng
+ * @library ..
+ */
+
+import java.security.*;
+
+public class TestRSAKeyLength extends PKCS11Test {
+    public static void main(String[] args) throws Exception {
+        main(new TestRSAKeyLength());
+    }
+    public void main(Provider p) throws Exception {
+        boolean isValidKeyLength[] = { true, true, false, false };
+        String algos[] = { "SHA1withRSA", "SHA256withRSA",
+                           "SHA384withRSA", "SHA512withRSA" };
+        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", p);
+        kpg.initialize(512);
+        KeyPair kp = kpg.generateKeyPair();
+        PrivateKey privKey = kp.getPrivate();
+        PublicKey pubKey = kp.getPublic();
+
+        for (int i = 0; i < algos.length; i++) {
+            Signature sig = Signature.getInstance(algos[i], p);
+            System.out.println("Testing RSA signature " + algos[i]);
+            try {
+                sig.initSign(privKey);
+                if (!isValidKeyLength[i]) {
+                    throw new Exception("initSign: Expected IKE not thrown!");
+                }
+            } catch (InvalidKeyException ike) {
+                if (isValidKeyLength[i]) {
+                    throw new Exception("initSign: Unexpected " + ike);
+                }
+            }
+            try {
+                sig.initVerify(pubKey);
+                if (!isValidKeyLength[i]) {
+                    throw new RuntimeException("initVerify: Expected IKE not thrown!");
+                }
+                new SignedObject("Test string for getSignature test.", privKey, sig);
+            } catch (InvalidKeyException ike) {
+                if (isValidKeyLength[i]) {
+                    throw new Exception("initSign: Unexpected " + ike);
+                }
+            }
+        }
+    }
+}
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  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,6 +25,8 @@
  * @test
  * @bug 4403428
  * @summary Invalidating JSSE session on server causes SSLProtocolException
+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
+ *         reenable when safe renegotiation is implemented.
  * @author Brad Wetmore
  */
 
Binary file jdk/test/sun/security/ssl/etc/keystore has changed
Binary file jdk/test/sun/security/ssl/etc/truststore has changed
--- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  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
@@ -26,6 +26,8 @@
  * @bug 4280338
  * @summary "Unsupported SSL message version" SSLProtocolException
  *      w/SSL_RSA_WITH_NULL_MD5
+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
+ *         reenable when safe renegotiation is implemented.
  *
  * @author Ram Marti
  * @author Brad Wetmore
--- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  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,6 +25,8 @@
  * @test
  * @bug 4948079
  * @summary SSLEngineResult needs updating [none yet]
+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
+ *         reenable when safe renegotiation is implemented.
  *
  * This is a simple hack to test a bunch of conditions and check
  * their return codes.
--- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  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
@@ -26,6 +26,8 @@
  * @bug 4495742
  * @summary Add non-blocking SSL/TLS functionality, usable with any
  *      I/O abstraction
+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
+ *         reenable when safe renegotiation is implemented.
  *
  * This is a bit hacky, meant to test various conditions.  The main
  * thing I wanted to do with this was to do buffer reads/writes
--- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  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,6 +25,8 @@
  * @test
  * @bug 4495742
  * @summary Demonstrate SSLEngine switch from no client auth to client auth.
+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
+ *         reenable when safe renegotiation is implemented.
  *
  * @author Brad R. Wetmore
  */
--- a/jdk/test/sun/security/ssl/sanity/ciphersuites/CheckCipherSuites.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/ssl/sanity/ciphersuites/CheckCipherSuites.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2010 Sun Microsystems, Inc.  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,9 +40,21 @@
         "SSL_RSA_WITH_RC4_128_MD5",
         "SSL_RSA_WITH_RC4_128_SHA",
         "TLS_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
         "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
         "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
         "SSL_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
         "SSL_RSA_WITH_DES_CBC_SHA",
@@ -59,11 +71,27 @@
         "SSL_RSA_WITH_RC4_128_SHA",
         "TLS_RSA_WITH_AES_128_CBC_SHA",
         "TLS_RSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
         "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
         "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
         "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
         "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
         "SSL_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
         "SSL_RSA_WITH_DES_CBC_SHA",
@@ -81,9 +109,21 @@
         "SSL_RSA_WITH_RC4_128_MD5",
         "SSL_RSA_WITH_RC4_128_SHA",
         "TLS_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
         "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
         "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
         "SSL_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
         "SSL_RSA_WITH_DES_CBC_SHA",
@@ -93,14 +133,23 @@
         "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
         "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
         "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA",
+
         "SSL_RSA_WITH_NULL_MD5",
         "SSL_RSA_WITH_NULL_SHA",
+        "TLS_ECDH_ECDSA_WITH_NULL_SHA",
+        "TLS_ECDH_RSA_WITH_NULL_SHA",
+        "TLS_ECDHE_ECDSA_WITH_NULL_SHA",
+        "TLS_ECDHE_RSA_WITH_NULL_SHA",
         "SSL_DH_anon_WITH_RC4_128_MD5",
         "TLS_DH_anon_WITH_AES_128_CBC_SHA",
         "SSL_DH_anon_WITH_3DES_EDE_CBC_SHA",
         "SSL_DH_anon_WITH_DES_CBC_SHA",
+        "TLS_ECDH_anon_WITH_RC4_128_SHA",
+        "TLS_ECDH_anon_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA",
         "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5",
         "SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA",
+        "TLS_ECDH_anon_WITH_NULL_SHA",
         "TLS_KRB5_WITH_RC4_128_SHA",
         "TLS_KRB5_WITH_RC4_128_MD5",
         "TLS_KRB5_WITH_3DES_EDE_CBC_SHA",
@@ -110,7 +159,7 @@
         "TLS_KRB5_EXPORT_WITH_RC4_40_SHA",
         "TLS_KRB5_EXPORT_WITH_RC4_40_MD5",
         "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA",
-        "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"
+        "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5",
     };
 
     // supported ciphersuites using unlimited JCE policy jurisdiction files
@@ -120,11 +169,27 @@
         "SSL_RSA_WITH_RC4_128_SHA",
         "TLS_RSA_WITH_AES_128_CBC_SHA",
         "TLS_RSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+        "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
         "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
         "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
         "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
         "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
         "SSL_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
+        "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
         "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
         "SSL_RSA_WITH_DES_CBC_SHA",
@@ -134,15 +199,25 @@
         "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
         "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
         "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA",
+
         "SSL_RSA_WITH_NULL_MD5",
         "SSL_RSA_WITH_NULL_SHA",
+        "TLS_ECDH_ECDSA_WITH_NULL_SHA",
+        "TLS_ECDH_RSA_WITH_NULL_SHA",
+        "TLS_ECDHE_ECDSA_WITH_NULL_SHA",
+        "TLS_ECDHE_RSA_WITH_NULL_SHA",
         "SSL_DH_anon_WITH_RC4_128_MD5",
         "TLS_DH_anon_WITH_AES_128_CBC_SHA",
         "TLS_DH_anon_WITH_AES_256_CBC_SHA",
         "SSL_DH_anon_WITH_3DES_EDE_CBC_SHA",
         "SSL_DH_anon_WITH_DES_CBC_SHA",
+        "TLS_ECDH_anon_WITH_RC4_128_SHA",
+        "TLS_ECDH_anon_WITH_AES_128_CBC_SHA",
+        "TLS_ECDH_anon_WITH_AES_256_CBC_SHA",
+        "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA",
         "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5",
         "SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA",
+        "TLS_ECDH_anon_WITH_NULL_SHA",
         "TLS_KRB5_WITH_RC4_128_SHA",
         "TLS_KRB5_WITH_RC4_128_MD5",
         "TLS_KRB5_WITH_3DES_EDE_CBC_SHA",
@@ -152,7 +227,7 @@
         "TLS_KRB5_EXPORT_WITH_RC4_40_SHA",
         "TLS_KRB5_EXPORT_WITH_RC4_40_MD5",
         "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA",
-        "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"
+        "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5",
     };
 
     private static void showSuites(String[] suites) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,879 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10
+ * @bug 6766775
+ * @author Xuelei Fan
+ */
+
+import java.net.*;
+import java.util.*;
+import java.io.*;
+import javax.net.ssl.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import java.math.BigInteger;
+
+import sun.security.ssl.SSLSocketImpl;
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A
+ *
+ * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e
+ * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI
+ * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n
+ * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb
+ * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP
+ * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz
+ * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF
+ * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J
+ * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa
+ * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH
+ * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT
+ * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q
+ * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie
+ * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU
+ * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB
+ * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi
+ * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y
+ * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo
+ * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4
+ * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51
+ * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16
+ * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2
+ * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC
+ * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF
+ * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *     d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *     1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *     ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *     7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *     9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *     d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *     7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *     30:05:40:2c:4f:ab:d9:74:89
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90:
+ *     60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82:
+ *     e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62:
+ *     0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9:
+ *     4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77:
+ *     76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09:
+ *     6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b:
+ *     fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3:
+ *     37:6b:37:59:ed:db:6d:b1
+ * prime1:
+ *     00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a:
+ *     ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46:
+ *     89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33:
+ *     c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7:
+ *     d6:11:4c:99:c7
+ * prime2:
+ *     00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e:
+ *     97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7:
+ *     31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0:
+ *     3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc:
+ *     e0:e1:84:ff:2f
+ * exponent1:
+ *     7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8:
+ *     8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1:
+ *     32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c:
+ *     6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d:
+ *     12:b7:6e:91
+ * exponent2:
+ *     00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50:
+ *     d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b:
+ *     0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72:
+ *     98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4:
+ *     19:7b:b0:de:53
+ * coefficient:
+ *     71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35:
+ *     cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a:
+ *     90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df:
+ *     06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21:
+ *     12:d7:eb:4f
+ *
+ *
+ * server certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 8 (0x8)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:43:04 2008 GMT
+ *         Not After : Aug 25 03:43:04 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *                 d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *                 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *                 ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *                 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *                 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *                 d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *                 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *                 30:05:40:2c:4f:ab:d9:74:89
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             DNS:localhost
+ * Signature Algorithm: md5WithRSAEncryption0
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3
+ * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6
+ * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS
+ * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh
+ * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac
+ * PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi
+ * nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn
+ * JqCpf5uZGOo=
+ * -----END CERTIFICATE-----
+ *
+ *
+ * TLS client certificate:
+ * client private key:
+ * ----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390
+ *
+ * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4
+ * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf
+ * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak
+ * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH
+ * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat
+ * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46
+ * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++
+ * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+
+ * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN
+ * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U
+ * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO
+ * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig
+ * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4
+ * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z
+ * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB
+ * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW
+ * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf
+ * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6
+ * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3
+ * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX
+ * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM
+ * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1
+ * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j
+ * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY
+ * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *     21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *     12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *     01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *     7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *     35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *     ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *     28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *     75:8d:f5:82:ac:43:92:44:1b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b:
+ *     25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05:
+ *     fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96:
+ *     b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0:
+ *     26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51:
+ *     2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef:
+ *     47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94:
+ *     4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1:
+ *     e5:28:9b:f9:4c:94:c6:b1
+ * prime1:
+ *     00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38:
+ *     2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f:
+ *     a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f:
+ *     1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14:
+ *     e2:a0:4d:ab:b5
+ * prime2:
+ *     00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d:
+ *     96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3:
+ *     3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4:
+ *     bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4:
+ *     76:7d:ce:32:8f
+ * exponent1:
+ *     2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f:
+ *     33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b:
+ *     9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa:
+ *     28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2:
+ *     4c:de:38:95
+ * exponent2:
+ *     0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3:
+ *     ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce:
+ *     69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3:
+ *     eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b:
+ *     0d:78:df:fd
+ * coefficient:
+ *     01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31:
+ *     de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18:
+ *     aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56:
+ *     93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da:
+ *     35:92:f2:e3
+ *
+ * client certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 9 (0x9)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:43:24 2008 GMT
+ *         Not After : Aug 25 03:43:24 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *                 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *                 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *                 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *                 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *                 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *                 ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *                 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *                 75:8d:f5:82:ac:43:92:44:1b
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             DNS:localhost
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas
+ * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV
+ * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq
+ * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh
+ * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F
+ * HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj
+ * XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN
+ * cl/epUcHL7E=
+ * -----END CERTIFICATE-----
+ *
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ *   Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 0 (0x0)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 02:43:36 2008 GMT
+ *         Not After : Aug 25 02:43:36 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d:
+ *                 d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53:
+ *                 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9:
+ *                 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f:
+ *                 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7:
+ *                 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee:
+ *                 f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee:
+ *                 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97:
+ *                 89:2a:95:12:4c:d8:09:2a:e9
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Subject Key Identifier:
+ *             FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *             DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org
+ *             serial:00
+ *
+ *         X509v3 Basic Constraints:
+ *             CA:TRUE
+ *  Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+ * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX
+ * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj
+ * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G
+ * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ
+ * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt
+ * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw
+ * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA
+ * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ
+ * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P
+ * 6Mvf0r1PNTY2hwTJLJmKtg==
+ * -----END CERTIFICATE---
+ */
+
+
+public class DNSIdentities {
+    static Map cookies;
+    ServerSocket ss;
+
+    /*
+     * =============================================================
+     * Set the various variables needed for the tests, then
+     * specify what tests to run on each side.
+     */
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    static boolean separateServerThread = true;
+
+    /*
+     * Where do we find the keystores?
+     */
+    static String trusedCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" +
+        "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" +
+        "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" +
+        "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" +
+        "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" +
+        "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" +
+        "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" +
+        "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" +
+        "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" +
+        "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" +
+        "6Mvf0r1PNTY2hwTJLJmKtg==\n" +
+        "-----END CERTIFICATE-----";
+
+    static String serverCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" +
+        "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" +
+        "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" +
+        "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" +
+        "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac\n" +
+        "PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi\n" +
+        "nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn\n" +
+        "JqCpf5uZGOo=\n" +
+        "-----END CERTIFICATE-----";
+
+    static String clientCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" +
+        "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" +
+        "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" +
+        "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" +
+        "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F\n" +
+        "HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj\n" +
+        "XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN\n" +
+        "cl/epUcHL7E=\n" +
+        "-----END CERTIFICATE-----";
+
+    static byte serverPrivateExponent[] = {
+        (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83,
+        (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44,
+        (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89,
+        (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60,
+        (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21,
+        (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc,
+        (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e,
+        (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3,
+        (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54,
+        (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf,
+        (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0,
+        (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9,
+        (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29,
+        (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c,
+        (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9,
+        (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6,
+        (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72,
+        (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4,
+        (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76,
+        (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f,
+        (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5,
+        (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71,
+        (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e,
+        (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4,
+        (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a,
+        (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4,
+        (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a,
+        (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18,
+        (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba,
+        (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3,
+        (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59,
+        (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1
+    };
+
+    static byte serverModulus[] = {
+        (byte)0x00,
+        (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c,
+        (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99,
+        (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79,
+        (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48,
+        (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84,
+        (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c,
+        (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9,
+        (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39,
+        (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72,
+        (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44,
+        (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc,
+        (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6,
+        (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54,
+        (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc,
+        (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f,
+        (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f,
+        (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2,
+        (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88,
+        (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f,
+        (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53,
+        (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33,
+        (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47,
+        (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea,
+        (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75,
+        (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc,
+        (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9,
+        (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2,
+        (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24,
+        (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03,
+        (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30,
+        (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f,
+        (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89
+    };
+
+    static byte clientPrivateExponent[] = {
+        (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36,
+        (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce,
+        (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84,
+        (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25,
+        (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4,
+        (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a,
+        (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19,
+        (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2,
+        (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77,
+        (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84,
+        (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41,
+        (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8,
+        (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71,
+        (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a,
+        (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0,
+        (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6,
+        (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39,
+        (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e,
+        (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a,
+        (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88,
+        (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89,
+        (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d,
+        (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a,
+        (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69,
+        (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37,
+        (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7,
+        (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27,
+        (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8,
+        (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8,
+        (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1,
+        (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9,
+        (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1
+    };
+
+    static byte clientModulus[] = {
+        (byte)0x00,
+        (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36,
+        (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e,
+        (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00,
+        (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f,
+        (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93,
+        (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1,
+        (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8,
+        (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99,
+        (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f,
+        (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24,
+        (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7,
+        (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44,
+        (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2,
+        (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c,
+        (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d,
+        (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a,
+        (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6,
+        (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f,
+        (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97,
+        (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05,
+        (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf,
+        (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3,
+        (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c,
+        (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf,
+        (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56,
+        (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9,
+        (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf,
+        (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab,
+        (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1,
+        (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75,
+        (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac,
+        (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b
+    };
+
+    static char passphrase[] = "passphrase".toCharArray();
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Turn on SSL debugging?
+     */
+    static boolean debug = false;
+
+    private SSLServerSocket sslServerSocket = null;
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doServerSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, serverCertStr,
+            serverModulus, serverPrivateExponent, passphrase);
+        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
+
+        sslServerSocket =
+            (SSLServerSocket) sslssf.createServerSocket(serverPort);
+        serverPort = sslServerSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for his connect.
+         */
+        serverReady = true;
+
+        SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+        sslSocket.setNeedClientAuth(true);
+        if (sslSocket instanceof SSLSocketImpl) {
+            ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS");
+        }
+
+        PrintStream out =
+                new PrintStream(sslSocket.getOutputStream());
+
+        try {
+            // ignore request data
+
+            // send the response
+            out.print("HTTP/1.1 200 OK\r\n");
+            out.print("Content-Type: text/html; charset=iso-8859-1\r\n");
+            out.print("Content-Length: "+ 9 +"\r\n");
+            out.print("\r\n");
+            out.print("Testing\r\n");
+            out.flush();
+        } finally {
+             // close the socket
+             Thread.sleep(2000);
+             System.out.println("Server closing socket");
+             sslSocket.close();
+             serverReady = false;
+        }
+
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doClientSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, clientCertStr,
+            clientModulus, clientPrivateExponent, passphrase);
+
+        SSLContext.setDefault(context);
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(50);
+        }
+
+        HttpsURLConnection http = null;
+
+        /* establish http connection to server */
+        URL url = new URL("https://localhost:" + serverPort+"/");
+        System.out.println("url is "+url.toString());
+
+        http = (HttpsURLConnection)url.openConnection();
+
+        int respCode = http.getResponseCode();
+        System.out.println("respCode = "+respCode);
+
+        http.disconnect();
+    }
+
+    /*
+     * =============================================================
+     * The remainder is just support stuff
+     */
+
+    // use any free port by default
+    volatile int serverPort = 0;
+
+    volatile Exception serverException = null;
+    volatile Exception clientException = null;
+
+    public static void main(String args[]) throws Exception {
+        if (debug)
+            System.setProperty("javax.net.debug", "all");
+
+        /*
+         * Start the tests.
+         */
+        new DNSIdentities();
+    }
+
+    Thread clientThread = null;
+    Thread serverThread = null;
+    /*
+     * Primary constructor, used to drive remainder of the test.
+     *
+     * Fork off the other side, then do your work.
+     */
+    DNSIdentities() throws Exception {
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            serverThread.join();
+        } else {
+            clientThread.join();
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         *
+         * If the main thread excepted, that propagates back
+         * immediately.  If the other thread threw an exception, we
+         * should report back.
+         */
+        if (serverException != null)
+            throw serverException;
+        if (clientException != null)
+            throw clientException;
+    }
+
+    void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        System.err.println("Server died...");
+                        serverReady = true;
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            doServerSide();
+        }
+    }
+
+    void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        System.err.println("Client died...");
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            doClientSide();
+        }
+    }
+
+    // get the ssl context
+    private static SSLContext getSSLContext(String trusedCertStr,
+            String keyCertStr, byte[] modulus,
+            byte[] privateExponent, char[] passphrase) throws Exception {
+
+        // generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        ByteArrayInputStream is =
+                    new ByteArrayInputStream(trusedCertStr.getBytes());
+        Certificate trusedCert = cf.generateCertificate(is);
+        is.close();
+
+        // create a key store
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(null, null);
+
+        // import the trused cert
+        ks.setCertificateEntry("RSA Export Signer", trusedCert);
+
+        if (keyCertStr != null) {
+            // generate the private key.
+            RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+                                            new BigInteger(modulus),
+                                            new BigInteger(privateExponent));
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            RSAPrivateKey priKey =
+                    (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+            // generate certificate chain
+            is = new ByteArrayInputStream(keyCertStr.getBytes());
+            Certificate keyCert = cf.generateCertificate(is);
+            is.close();
+
+            Certificate[] chain = new Certificate[2];
+            chain[0] = keyCert;
+            chain[1] = trusedCert;
+
+            // import the key entry.
+            ks.setKeyEntry("Whatever", priKey, passphrase, chain);
+        }
+
+        // create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ks);
+
+        SSLContext ctx = SSLContext.getInstance("TLS");
+
+        if (keyCertStr != null) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, passphrase);
+
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            ctx.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return ctx;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsCreateSockTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6771432
+ * @summary createSocket() - smpatch fails using 1.6.0_10 because of "Unconnected sockets not implemented"
+ */
+
+import javax.net.SocketFactory;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import java.security.NoSuchAlgorithmException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.URL;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpsConfigurator;
+
+/*
+ * This class tests that the HTTPS protocol handler is using its socket factory for
+ * creating new Sockets. It does this by wrapping the default SSLSocketFactory with
+ * its own socket factory, SimpleSSLSocketFactory, and verifying that when a https
+ * connection is made one of the socket factories createSocket methods, that
+ * actually creates a Socket, is being invoked by the protocol handler.
+ */
+
+public class HttpsCreateSockTest
+{
+    /*
+     * Where do we find the keystores?
+     */
+    static String pathToStores = "../../../../../../etc";
+    static String keyStoreFile = "keystore";
+    static String trustStoreFile = "truststore";
+    static String passwd = "passphrase";
+
+    com.sun.net.httpserver.HttpsServer httpsServer;
+    MyHandler httpHandler;
+
+    public static void main(String[] args) {
+        String keyFilename =
+            System.getProperty("test.src", "./") + "/" + pathToStores +
+                "/" + keyStoreFile;
+        String trustFilename =
+            System.getProperty("test.src", "./") + "/" + pathToStores +
+                "/" + trustStoreFile;
+
+        System.setProperty("javax.net.ssl.keyStore", keyFilename);
+        System.setProperty("javax.net.ssl.keyStorePassword", passwd);
+        System.setProperty("javax.net.ssl.trustStore", trustFilename);
+        System.setProperty("javax.net.ssl.trustStorePassword", passwd);
+
+        new HttpsCreateSockTest();
+    }
+
+    public HttpsCreateSockTest() {
+        try {
+            startHttpsServer();
+            doClient();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } finally {
+           httpsServer.stop(1);
+        }
+    }
+
+    void doClient() throws IOException {
+        InetSocketAddress address = httpsServer.getAddress();
+
+        URL url = new URL("https://localhost:" + address.getPort() + "/");
+        System.out.println("trying to connect to " + url + "...");
+
+        HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();
+        uc.setHostnameVerifier(new AllHostnameVerifier());
+        if (uc instanceof javax.net.ssl.HttpsURLConnection) {
+            ((javax.net.ssl.HttpsURLConnection) uc).setSSLSocketFactory(new SimpleSSLSocketFactory());
+            System.out.println("Using TestSocketFactory");
+        }
+        uc.connect();
+        System.out.println("CONNECTED " + uc);
+        System.out.println(uc.getResponseMessage());
+        uc.disconnect();
+    }
+
+    /**
+     * Https Server
+     */
+    public void startHttpsServer() throws IOException, NoSuchAlgorithmException  {
+        httpsServer = com.sun.net.httpserver.HttpsServer.create(new InetSocketAddress(0), 0);
+        httpsServer.createContext("/", new MyHandler());
+        httpsServer.setHttpsConfigurator(new HttpsConfigurator(SSLContext.getDefault()));
+        httpsServer.start();
+    }
+
+    class MyHandler implements HttpHandler {
+        private String message = "This is a message!";
+
+        @Override
+        public void handle(HttpExchange t) throws IOException {
+            t.sendResponseHeaders(200, message.length());
+            BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(t.getResponseBody(), "ISO8859-1"));
+            writer.write(message, 0, message.length());
+            writer.close();
+            t.close();
+        }
+    }
+
+    /**
+     * Simple wrapper on default SSLSocketFactory
+     */
+    class SimpleSSLSocketFactory extends SSLSocketFactory
+    {
+        /*
+         * true if this factory has been used to create a new Socket, i.e.
+         * one of the SocketFactory methods has been called.
+         */
+        boolean socketCreated = false;
+
+        /*
+         * true if this factory has been used to wrap a Socket, i.e.
+         * the SSLSocketFactory method,
+         * createSocket(Socket, String, int, boolean), has been called.
+         */
+        boolean socketWrapped = false;
+
+        @Override
+        public Socket createSocket(InetAddress host, int port) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(host, port);
+        }
+
+        @Override
+        public Socket createSocket(InetAddress address, int port, InetAddress localAddress,
+                                   int localPort) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(address, port, localAddress, localPort);
+        }
+
+        @Override
+        public Socket createSocket(String host, int port) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(host, port);
+        }
+
+        @Override
+        public Socket createSocket(String host, int port, InetAddress localHost,
+                                   int localPort) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(host, port, localHost, localPort);
+        }
+
+        // methods from SSLSocketFactory
+        @Override
+        public Socket createSocket(Socket s, String host, int port,
+                                   boolean autoClose) throws IOException {
+            socketWrapped = true;
+            return ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket
+                                                               (s, host, port, autoClose);
+        }
+
+        @Override
+        public String[] getDefaultCipherSuites() {
+            return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getDefaultCipherSuites();
+        }
+
+        @Override
+        public String[] getSupportedCipherSuites()  {
+             return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getSupportedCipherSuites();
+        }
+    }
+
+    class AllHostnameVerifier implements HostnameVerifier
+    {
+        @Override
+        public boolean verify(String hostname, SSLSession session) {
+            return true;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsSocketFacTest.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6614957
+ * @summary HttpsURLConnection not using the set SSLSocketFactory for creating all its Sockets
+ * @run main/othervm HttpsSocketFacTest
+ */
+
+import javax.net.SocketFactory;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import java.security.NoSuchAlgorithmException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.URL;
+import java.io.BufferedWriter;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpsConfigurator;
+
+/*
+ * This class tests that the HTTPS protocol handler is using its socket factory for
+ * creating new Sockets. It does this by wrapping the default SSLSocketFactory with
+ * its own socket factory, SimpleSSLSocketFactory, and verifying that when a https
+ * connection is made one of the socket factories createSocket methods, that
+ * actually creates a Socket, is being invoked by the protocol handler.
+ */
+
+public class HttpsSocketFacTest
+{
+    /*
+     * Where do we find the keystores?
+     */
+    static String pathToStores = "../../../../../../etc";
+    static String keyStoreFile = "keystore";
+    static String trustStoreFile = "truststore";
+    static String passwd = "passphrase";
+
+    com.sun.net.httpserver.HttpsServer httpsServer;
+    MyHandler httpHandler;
+
+    public static void main(String[] args) {
+        String keyFilename =
+            System.getProperty("test.src", "./") + "/" + pathToStores +
+                "/" + keyStoreFile;
+        String trustFilename =
+            System.getProperty("test.src", "./") + "/" + pathToStores +
+                "/" + trustStoreFile;
+
+        System.setProperty("javax.net.ssl.keyStore", keyFilename);
+        System.setProperty("javax.net.ssl.keyStorePassword", passwd);
+        System.setProperty("javax.net.ssl.trustStore", trustFilename);
+        System.setProperty("javax.net.ssl.trustStorePassword", passwd);
+
+        new HttpsSocketFacTest();
+    }
+
+    public HttpsSocketFacTest() {
+        try {
+            startHttpsServer();
+            doClient();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } finally {
+           httpsServer.stop(1);
+        }
+    }
+
+    void doClient() throws IOException {
+        InetSocketAddress address = httpsServer.getAddress();
+        URL url = new URL("https://localhost:" + address.getPort() + "/test6614957/");
+        System.out.println("trying to connect to " + url + "...");
+
+        HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();
+        SimpleSSLSocketFactory sssf = new SimpleSSLSocketFactory();
+        uc.setSSLSocketFactory(sssf);
+        uc.setHostnameVerifier(new AllHostnameVerifier());
+        InputStream is = uc.getInputStream();
+
+        byte[] ba = new byte[1024];
+        int read = 0;
+        while ((read = is.read(ba)) != -1) {
+            System.out.println(new String(ba, 0, read));
+        }
+
+        System.out.println("SimpleSSLSocketFactory.socketCreated = " + sssf.socketCreated);
+        System.out.println("SimpleSSLSocketFactory.socketWrapped = " + sssf.socketWrapped);
+
+        if (!sssf.socketCreated)
+            throw new RuntimeException("Failed: Socket Factory not being called to create Socket");
+    }
+
+    /**
+     * Https Server
+     */
+    public void startHttpsServer() throws IOException, NoSuchAlgorithmException  {
+        httpsServer = com.sun.net.httpserver.HttpsServer.create(new InetSocketAddress(0), 0);
+        httpsServer.createContext("/test6614957/", new MyHandler());
+        httpsServer.setHttpsConfigurator(new HttpsConfigurator(SSLContext.getDefault()));
+        httpsServer.start();
+    }
+
+    class MyHandler implements HttpHandler {
+        private String message = "This is a message!";
+
+        @Override
+        public void handle(HttpExchange t) throws IOException {
+            t.sendResponseHeaders(200, message.length());
+            BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(t.getResponseBody(), "ISO8859-1"));
+            writer.write(message, 0, message.length());
+            writer.close();
+            t.close();
+        }
+    }
+
+    /**
+     * Simple wrapper on default SSLSocketFactory
+     */
+    class SimpleSSLSocketFactory extends SSLSocketFactory
+    {
+        /*
+         * true if this factory has been used to create a new Socket, i.e.
+         * one of the SocketFactory methods has been called.
+         */
+        boolean socketCreated = false;
+
+        /*
+         * true if this factory has been used to wrap a Socket, i.e.
+         * the SSLSocketFactory method,
+         * createSocket(Socket, String, int, boolean), has been called.
+         */
+        boolean socketWrapped = false;
+
+        // methods for SocketFactory
+        @Override
+        public Socket createSocket() throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket();
+        }
+
+        @Override
+        public Socket createSocket(InetAddress host, int port) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(host, port);
+        }
+
+        @Override
+        public Socket createSocket(InetAddress address, int port, InetAddress localAddress,
+                                   int localPort) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(address, port, localAddress, localPort);
+        }
+
+        @Override
+        public Socket createSocket(String host, int port) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(host, port);
+        }
+
+        @Override
+        public Socket createSocket(String host, int port, InetAddress localHost,
+                                   int localPort) throws IOException {
+            socketCreated = true;
+            return SocketFactory.getDefault().createSocket(host, port, localHost, localPort);
+        }
+
+        // methods from SSLSocketFactory
+        @Override
+        public Socket createSocket(Socket s, String host, int port,
+                                   boolean autoClose) throws IOException {
+            socketWrapped = true;
+            return ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket
+                                                               (s, host, port, autoClose);
+        }
+
+        @Override
+        public String[] getDefaultCipherSuites() {
+            return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getDefaultCipherSuites();
+        }
+
+        @Override
+        public String[] getSupportedCipherSuites()  {
+             return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getSupportedCipherSuites();
+        }
+    }
+
+    class AllHostnameVerifier implements HostnameVerifier
+    {
+        @Override
+        public boolean verify(String hostname, SSLSession session) {
+            return true;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,887 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10
+ * @bug 6766775
+ * @author Xuelei Fan
+ */
+
+import java.net.*;
+import java.util.*;
+import java.io.*;
+import javax.net.ssl.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import java.math.BigInteger;
+
+import sun.security.ssl.SSLSocketImpl;
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A
+ *
+ * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e
+ * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI
+ * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n
+ * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb
+ * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP
+ * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz
+ * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF
+ * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J
+ * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa
+ * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH
+ * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT
+ * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q
+ * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie
+ * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU
+ * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB
+ * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi
+ * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y
+ * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo
+ * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4
+ * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51
+ * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16
+ * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2
+ * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC
+ * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF
+ * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *     d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *     1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *     ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *     7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *     9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *     d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *     7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *     30:05:40:2c:4f:ab:d9:74:89
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90:
+ *     60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82:
+ *     e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62:
+ *     0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9:
+ *     4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77:
+ *     76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09:
+ *     6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b:
+ *     fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3:
+ *     37:6b:37:59:ed:db:6d:b1
+ * prime1:
+ *     00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a:
+ *     ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46:
+ *     89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33:
+ *     c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7:
+ *     d6:11:4c:99:c7
+ * prime2:
+ *     00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e:
+ *     97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7:
+ *     31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0:
+ *     3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc:
+ *     e0:e1:84:ff:2f
+ * exponent1:
+ *     7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8:
+ *     8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1:
+ *     32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c:
+ *     6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d:
+ *     12:b7:6e:91
+ * exponent2:
+ *     00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50:
+ *     d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b:
+ *     0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72:
+ *     98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4:
+ *     19:7b:b0:de:53
+ * coefficient:
+ *     71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35:
+ *     cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a:
+ *     90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df:
+ *     06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21:
+ *     12:d7:eb:4f
+ *
+ *
+ * server certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 8 (0x8)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:43:04 2008 GMT
+ *         Not After : Aug 25 03:43:04 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *                 d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *                 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *                 ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *                 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *                 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *                 d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *                 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *                 30:05:40:2c:4f:ab:d9:74:89
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             DNS:localhost
+ * Signature Algorithm: md5WithRSAEncryption0
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3
+ * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6
+ * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS
+ * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh
+ * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac
+ * PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi
+ * nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn
+ * JqCpf5uZGOo=
+ * -----END CERTIFICATE-----
+ *
+ *
+ * TLS client certificate:
+ * client private key:
+ * ----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390
+ *
+ * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4
+ * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf
+ * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak
+ * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH
+ * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat
+ * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46
+ * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++
+ * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+
+ * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN
+ * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U
+ * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO
+ * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig
+ * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4
+ * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z
+ * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB
+ * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW
+ * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf
+ * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6
+ * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3
+ * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX
+ * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM
+ * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1
+ * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j
+ * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY
+ * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *     21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *     12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *     01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *     7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *     35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *     ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *     28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *     75:8d:f5:82:ac:43:92:44:1b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b:
+ *     25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05:
+ *     fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96:
+ *     b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0:
+ *     26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51:
+ *     2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef:
+ *     47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94:
+ *     4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1:
+ *     e5:28:9b:f9:4c:94:c6:b1
+ * prime1:
+ *     00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38:
+ *     2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f:
+ *     a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f:
+ *     1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14:
+ *     e2:a0:4d:ab:b5
+ * prime2:
+ *     00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d:
+ *     96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3:
+ *     3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4:
+ *     bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4:
+ *     76:7d:ce:32:8f
+ * exponent1:
+ *     2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f:
+ *     33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b:
+ *     9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa:
+ *     28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2:
+ *     4c:de:38:95
+ * exponent2:
+ *     0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3:
+ *     ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce:
+ *     69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3:
+ *     eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b:
+ *     0d:78:df:fd
+ * coefficient:
+ *     01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31:
+ *     de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18:
+ *     aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56:
+ *     93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da:
+ *     35:92:f2:e3
+ *
+ * client certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 9 (0x9)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:43:24 2008 GMT
+ *         Not After : Aug 25 03:43:24 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *                 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *                 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *                 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *                 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *                 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *                 ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *                 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *                 75:8d:f5:82:ac:43:92:44:1b
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             DNS:localhost
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas
+ * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV
+ * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq
+ * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh
+ * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F
+ * HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj
+ * XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN
+ * cl/epUcHL7E=
+ * -----END CERTIFICATE-----
+ *
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ *   Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 0 (0x0)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 02:43:36 2008 GMT
+ *         Not After : Aug 25 02:43:36 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d:
+ *                 d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53:
+ *                 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9:
+ *                 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f:
+ *                 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7:
+ *                 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee:
+ *                 f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee:
+ *                 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97:
+ *                 89:2a:95:12:4c:d8:09:2a:e9
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Subject Key Identifier:
+ *             FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *             DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org
+ *             serial:00
+ *
+ *         X509v3 Basic Constraints:
+ *             CA:TRUE
+ *  Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+ * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX
+ * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj
+ * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G
+ * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ
+ * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt
+ * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw
+ * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA
+ * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ
+ * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P
+ * 6Mvf0r1PNTY2hwTJLJmKtg==
+ * -----END CERTIFICATE---
+ */
+
+
+public class IPAddressDNSIdentities {
+    static Map cookies;
+    ServerSocket ss;
+
+    /*
+     * =============================================================
+     * Set the various variables needed for the tests, then
+     * specify what tests to run on each side.
+     */
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    static boolean separateServerThread = true;
+
+    /*
+     * Where do we find the keystores?
+     */
+    static String trusedCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" +
+        "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" +
+        "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" +
+        "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" +
+        "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" +
+        "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" +
+        "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" +
+        "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" +
+        "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" +
+        "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" +
+        "6Mvf0r1PNTY2hwTJLJmKtg==\n" +
+        "-----END CERTIFICATE-----";
+
+    static String serverCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" +
+        "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" +
+        "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" +
+        "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" +
+        "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac\n" +
+        "PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi\n" +
+        "nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn\n" +
+        "JqCpf5uZGOo=\n" +
+        "-----END CERTIFICATE-----";
+
+    static String clientCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" +
+        "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" +
+        "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" +
+        "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" +
+        "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F\n" +
+        "HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj\n" +
+        "XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN\n" +
+        "cl/epUcHL7E=\n" +
+        "-----END CERTIFICATE-----";
+
+    static byte serverPrivateExponent[] = {
+        (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83,
+        (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44,
+        (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89,
+        (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60,
+        (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21,
+        (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc,
+        (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e,
+        (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3,
+        (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54,
+        (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf,
+        (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0,
+        (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9,
+        (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29,
+        (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c,
+        (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9,
+        (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6,
+        (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72,
+        (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4,
+        (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76,
+        (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f,
+        (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5,
+        (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71,
+        (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e,
+        (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4,
+        (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a,
+        (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4,
+        (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a,
+        (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18,
+        (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba,
+        (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3,
+        (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59,
+        (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1
+    };
+
+    static byte serverModulus[] = {
+        (byte)0x00,
+        (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c,
+        (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99,
+        (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79,
+        (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48,
+        (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84,
+        (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c,
+        (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9,
+        (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39,
+        (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72,
+        (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44,
+        (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc,
+        (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6,
+        (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54,
+        (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc,
+        (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f,
+        (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f,
+        (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2,
+        (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88,
+        (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f,
+        (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53,
+        (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33,
+        (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47,
+        (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea,
+        (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75,
+        (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc,
+        (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9,
+        (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2,
+        (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24,
+        (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03,
+        (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30,
+        (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f,
+        (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89
+    };
+
+    static byte clientPrivateExponent[] = {
+        (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36,
+        (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce,
+        (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84,
+        (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25,
+        (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4,
+        (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a,
+        (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19,
+        (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2,
+        (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77,
+        (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84,
+        (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41,
+        (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8,
+        (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71,
+        (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a,
+        (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0,
+        (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6,
+        (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39,
+        (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e,
+        (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a,
+        (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88,
+        (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89,
+        (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d,
+        (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a,
+        (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69,
+        (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37,
+        (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7,
+        (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27,
+        (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8,
+        (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8,
+        (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1,
+        (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9,
+        (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1
+    };
+
+    static byte clientModulus[] = {
+        (byte)0x00,
+        (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36,
+        (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e,
+        (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00,
+        (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f,
+        (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93,
+        (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1,
+        (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8,
+        (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99,
+        (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f,
+        (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24,
+        (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7,
+        (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44,
+        (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2,
+        (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c,
+        (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d,
+        (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a,
+        (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6,
+        (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f,
+        (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97,
+        (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05,
+        (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf,
+        (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3,
+        (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c,
+        (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf,
+        (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56,
+        (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9,
+        (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf,
+        (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab,
+        (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1,
+        (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75,
+        (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac,
+        (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b
+    };
+
+    static char passphrase[] = "passphrase".toCharArray();
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Turn on SSL debugging?
+     */
+    static boolean debug = false;
+
+    private SSLServerSocket sslServerSocket = null;
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doServerSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, serverCertStr,
+            serverModulus, serverPrivateExponent, passphrase);
+        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
+
+        sslServerSocket =
+            (SSLServerSocket) sslssf.createServerSocket(serverPort);
+        serverPort = sslServerSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for his connect.
+         */
+        serverReady = true;
+
+        SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+        sslSocket.setNeedClientAuth(true);
+        if (sslSocket instanceof SSLSocketImpl) {
+            ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS");
+        }
+
+        PrintStream out =
+                new PrintStream(sslSocket.getOutputStream());
+
+        try {
+            // ignore request data
+
+            // send the response
+            out.print("HTTP/1.1 200 OK\r\n");
+            out.print("Content-Type: text/html; charset=iso-8859-1\r\n");
+            out.print("Content-Length: "+ 9 +"\r\n");
+            out.print("\r\n");
+            out.print("Testing\r\n");
+            out.flush();
+        } finally {
+             // close the socket
+             Thread.sleep(2000);
+             System.out.println("Server closing socket");
+             sslSocket.close();
+             serverReady = false;
+        }
+
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doClientSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, clientCertStr,
+            clientModulus, clientPrivateExponent, passphrase);
+
+        SSLContext.setDefault(context);
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(50);
+        }
+
+        HttpsURLConnection http = null;
+
+        /* establish http connection to server */
+        URL url = new URL("https://127.0.0.1:" + serverPort+"/");
+        System.out.println("url is "+url.toString());
+
+        try {
+            http = (HttpsURLConnection)url.openConnection();
+
+            int respCode = http.getResponseCode();
+            System.out.println("respCode = "+respCode);
+
+            throw new Exception("Unexpectly found subject alternative name " +
+                                "matching IP address");
+        } catch (SSLHandshakeException sslhe) {
+            // no subject alternative names matching IP address 127.0.0.1 found
+            // that's the expected exception, ignore it.
+        } finally {
+            http.disconnect();
+        }
+    }
+
+    /*
+     * =============================================================
+     * The remainder is just support stuff
+     */
+
+    // use any free port by default
+    volatile int serverPort = 0;
+
+    volatile Exception serverException = null;
+    volatile Exception clientException = null;
+
+    public static void main(String args[]) throws Exception {
+        if (debug)
+            System.setProperty("javax.net.debug", "all");
+
+        /*
+         * Start the tests.
+         */
+        new IPAddressDNSIdentities();
+    }
+
+    Thread clientThread = null;
+    Thread serverThread = null;
+    /*
+     * Primary constructor, used to drive remainder of the test.
+     *
+     * Fork off the other side, then do your work.
+     */
+    IPAddressDNSIdentities() throws Exception {
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            serverThread.join();
+        } else {
+            clientThread.join();
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         *
+         * If the main thread excepted, that propagates back
+         * immediately.  If the other thread threw an exception, we
+         * should report back.
+         */
+        if (serverException != null)
+            throw serverException;
+        if (clientException != null)
+            throw clientException;
+    }
+
+    void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        System.err.println("Server died...");
+                        serverReady = true;
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            doServerSide();
+        }
+    }
+
+    void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        System.err.println("Client died...");
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            doClientSide();
+        }
+    }
+
+    // get the ssl context
+    private static SSLContext getSSLContext(String trusedCertStr,
+            String keyCertStr, byte[] modulus,
+            byte[] privateExponent, char[] passphrase) throws Exception {
+
+        // generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        ByteArrayInputStream is =
+                    new ByteArrayInputStream(trusedCertStr.getBytes());
+        Certificate trusedCert = cf.generateCertificate(is);
+        is.close();
+
+        // create a key store
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(null, null);
+
+        // import the trused cert
+        ks.setCertificateEntry("RSA Export Signer", trusedCert);
+
+        if (keyCertStr != null) {
+            // generate the private key.
+            RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+                                            new BigInteger(modulus),
+                                            new BigInteger(privateExponent));
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            RSAPrivateKey priKey =
+                    (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+            // generate certificate chain
+            is = new ByteArrayInputStream(keyCertStr.getBytes());
+            Certificate keyCert = cf.generateCertificate(is);
+            is.close();
+
+            Certificate[] chain = new Certificate[2];
+            chain[0] = keyCert;
+            chain[1] = trusedCert;
+
+            // import the key entry.
+            ks.setKeyEntry("Whatever", priKey, passphrase, chain);
+        }
+
+        // create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ks);
+
+        SSLContext ctx = SSLContext.getInstance("TLS");
+
+        if (keyCertStr != null) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, passphrase);
+
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            ctx.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return ctx;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,880 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10
+ * @bug 6766775
+ * @author Xuelei Fan
+ */
+
+import java.net.*;
+import java.util.*;
+import java.io.*;
+import javax.net.ssl.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import java.math.BigInteger;
+
+import sun.security.ssl.SSLSocketImpl;
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A
+ *
+ * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e
+ * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI
+ * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n
+ * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb
+ * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP
+ * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz
+ * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF
+ * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J
+ * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa
+ * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH
+ * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT
+ * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q
+ * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie
+ * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU
+ * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB
+ * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi
+ * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y
+ * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo
+ * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4
+ * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51
+ * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16
+ * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2
+ * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC
+ * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF
+ * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *     d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *     1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *     ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *     7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *     9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *     d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *     7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *     30:05:40:2c:4f:ab:d9:74:89
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90:
+ *     60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82:
+ *     e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62:
+ *     0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9:
+ *     4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77:
+ *     76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09:
+ *     6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b:
+ *     fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3:
+ *     37:6b:37:59:ed:db:6d:b1
+ * prime1:
+ *     00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a:
+ *     ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46:
+ *     89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33:
+ *     c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7:
+ *     d6:11:4c:99:c7
+ * prime2:
+ *     00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e:
+ *     97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7:
+ *     31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0:
+ *     3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc:
+ *     e0:e1:84:ff:2f
+ * exponent1:
+ *     7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8:
+ *     8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1:
+ *     32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c:
+ *     6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d:
+ *     12:b7:6e:91
+ * exponent2:
+ *     00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50:
+ *     d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b:
+ *     0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72:
+ *     98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4:
+ *     19:7b:b0:de:53
+ * coefficient:
+ *     71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35:
+ *     cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a:
+ *     90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df:
+ *     06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21:
+ *     12:d7:eb:4f
+ *
+ *
+ * server certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 7 (0x7)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:27:57 2008 GMT
+ *         Not After : Aug 25 03:27:57 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *                 d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *                 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *                 ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *                 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *                 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *                 d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *                 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *                 30:05:40:2c:4f:ab:d9:74:89
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             IP Address:127.0.0.1
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3
+ * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6
+ * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS
+ * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB
+ * MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva
+ * cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h
+ * pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun
+ * nZif
+ * -----END CERTIFICATE-----
+ *
+ *
+ * TLS client certificate:
+ * client private key:
+ * ----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390
+ *
+ * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4
+ * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf
+ * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak
+ * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH
+ * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat
+ * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46
+ * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++
+ * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+
+ * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN
+ * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U
+ * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO
+ * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig
+ * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4
+ * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z
+ * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB
+ * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW
+ * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf
+ * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6
+ * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3
+ * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX
+ * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM
+ * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1
+ * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j
+ * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY
+ * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *     21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *     12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *     01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *     7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *     35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *     ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *     28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *     75:8d:f5:82:ac:43:92:44:1b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b:
+ *     25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05:
+ *     fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96:
+ *     b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0:
+ *     26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51:
+ *     2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef:
+ *     47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94:
+ *     4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1:
+ *     e5:28:9b:f9:4c:94:c6:b1
+ * prime1:
+ *     00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38:
+ *     2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f:
+ *     a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f:
+ *     1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14:
+ *     e2:a0:4d:ab:b5
+ * prime2:
+ *     00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d:
+ *     96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3:
+ *     3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4:
+ *     bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4:
+ *     76:7d:ce:32:8f
+ * exponent1:
+ *     2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f:
+ *     33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b:
+ *     9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa:
+ *     28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2:
+ *     4c:de:38:95
+ * exponent2:
+ *     0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3:
+ *     ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce:
+ *     69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3:
+ *     eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b:
+ *     0d:78:df:fd
+ * coefficient:
+ *     01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31:
+ *     de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18:
+ *     aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56:
+ *     93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da:
+ *     35:92:f2:e3
+ *
+ * client certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 6 (0x6)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:27:34 2008 GMT
+ *         Not After : Aug 25 03:27:34 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *                 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *                 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *                 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *                 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *                 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *                 ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *                 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *                 75:8d:f5:82:ac:43:92:44:1b
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             IP Address:127.0.0.1
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas
+ * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV
+ * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq
+ * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB
+ * MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx
+ * HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP
+ * i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC
+ * I9aw
+ * -----END CERTIFICATE-----
+ *
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ *   Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 0 (0x0)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 02:43:36 2008 GMT
+ *         Not After : Aug 25 02:43:36 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d:
+ *                 d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53:
+ *                 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9:
+ *                 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f:
+ *                 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7:
+ *                 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee:
+ *                 f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee:
+ *                 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97:
+ *                 89:2a:95:12:4c:d8:09:2a:e9
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Subject Key Identifier:
+ *             FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *             DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org
+ *             serial:00
+ *
+ *         X509v3 Basic Constraints:
+ *             CA:TRUE
+ *  Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+ * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX
+ * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj
+ * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G
+ * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ
+ * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt
+ * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw
+ * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA
+ * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ
+ * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P
+ * 6Mvf0r1PNTY2hwTJLJmKtg==
+ * -----END CERTIFICATE---
+ */
+
+
+public class IPAddressIPIdentities {
+    static Map cookies;
+    ServerSocket ss;
+
+    /*
+     * =============================================================
+     * Set the various variables needed for the tests, then
+     * specify what tests to run on each side.
+     */
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    static boolean separateServerThread = true;
+
+    /*
+     * Where do we find the keystores?
+     */
+    static String trusedCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" +
+        "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" +
+        "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" +
+        "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" +
+        "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" +
+        "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" +
+        "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" +
+        "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" +
+        "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" +
+        "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" +
+        "6Mvf0r1PNTY2hwTJLJmKtg==\n" +
+        "-----END CERTIFICATE-----";
+
+    static String serverCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" +
+        "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" +
+        "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" +
+        "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" +
+        "MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva\n" +
+        "cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h\n" +
+        "pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun\n" +
+        "nZif\n" +
+        "-----END CERTIFICATE-----";
+
+    static String clientCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" +
+        "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" +
+        "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" +
+        "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" +
+        "MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx\n" +
+        "HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP\n" +
+        "i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC\n" +
+        "I9aw\n" +
+        "-----END CERTIFICATE-----";
+
+
+    static byte serverPrivateExponent[] = {
+        (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83,
+        (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44,
+        (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89,
+        (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60,
+        (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21,
+        (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc,
+        (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e,
+        (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3,
+        (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54,
+        (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf,
+        (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0,
+        (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9,
+        (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29,
+        (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c,
+        (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9,
+        (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6,
+        (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72,
+        (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4,
+        (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76,
+        (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f,
+        (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5,
+        (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71,
+        (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e,
+        (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4,
+        (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a,
+        (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4,
+        (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a,
+        (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18,
+        (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba,
+        (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3,
+        (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59,
+        (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1
+    };
+
+    static byte serverModulus[] = {
+        (byte)0x00,
+        (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c,
+        (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99,
+        (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79,
+        (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48,
+        (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84,
+        (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c,
+        (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9,
+        (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39,
+        (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72,
+        (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44,
+        (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc,
+        (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6,
+        (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54,
+        (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc,
+        (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f,
+        (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f,
+        (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2,
+        (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88,
+        (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f,
+        (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53,
+        (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33,
+        (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47,
+        (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea,
+        (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75,
+        (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc,
+        (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9,
+        (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2,
+        (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24,
+        (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03,
+        (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30,
+        (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f,
+        (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89
+    };
+
+    static byte clientPrivateExponent[] = {
+        (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36,
+        (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce,
+        (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84,
+        (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25,
+        (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4,
+        (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a,
+        (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19,
+        (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2,
+        (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77,
+        (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84,
+        (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41,
+        (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8,
+        (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71,
+        (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a,
+        (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0,
+        (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6,
+        (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39,
+        (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e,
+        (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a,
+        (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88,
+        (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89,
+        (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d,
+        (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a,
+        (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69,
+        (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37,
+        (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7,
+        (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27,
+        (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8,
+        (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8,
+        (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1,
+        (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9,
+        (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1
+    };
+
+    static byte clientModulus[] = {
+        (byte)0x00,
+        (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36,
+        (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e,
+        (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00,
+        (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f,
+        (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93,
+        (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1,
+        (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8,
+        (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99,
+        (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f,
+        (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24,
+        (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7,
+        (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44,
+        (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2,
+        (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c,
+        (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d,
+        (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a,
+        (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6,
+        (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f,
+        (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97,
+        (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05,
+        (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf,
+        (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3,
+        (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c,
+        (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf,
+        (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56,
+        (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9,
+        (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf,
+        (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab,
+        (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1,
+        (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75,
+        (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac,
+        (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b
+    };
+
+    static char passphrase[] = "passphrase".toCharArray();
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Turn on SSL debugging?
+     */
+    static boolean debug = false;
+
+    private SSLServerSocket sslServerSocket = null;
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doServerSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, serverCertStr,
+            serverModulus, serverPrivateExponent, passphrase);
+        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
+
+        sslServerSocket =
+            (SSLServerSocket) sslssf.createServerSocket(serverPort);
+        serverPort = sslServerSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for his connect.
+         */
+        serverReady = true;
+
+        SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+        sslSocket.setNeedClientAuth(true);
+        if (sslSocket instanceof SSLSocketImpl) {
+            ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS");
+        }
+
+        PrintStream out =
+                new PrintStream(sslSocket.getOutputStream());
+
+        try {
+            // ignore request data
+
+            // send the response
+            out.print("HTTP/1.1 200 OK\r\n");
+            out.print("Content-Type: text/html; charset=iso-8859-1\r\n");
+            out.print("Content-Length: "+ 9 +"\r\n");
+            out.print("\r\n");
+            out.print("Testing\r\n");
+            out.flush();
+        } finally {
+             // close the socket
+             Thread.sleep(2000);
+             System.out.println("Server closing socket");
+             sslSocket.close();
+             serverReady = false;
+        }
+
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doClientSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, clientCertStr,
+            clientModulus, clientPrivateExponent, passphrase);
+
+        SSLContext.setDefault(context);
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(50);
+        }
+
+        HttpsURLConnection http = null;
+
+        /* establish http connection to server */
+        URL url = new URL("https://127.0.0.1:" + serverPort+"/");
+        System.out.println("url is "+url.toString());
+
+        http = (HttpsURLConnection)url.openConnection();
+
+        int respCode = http.getResponseCode();
+        System.out.println("respCode = "+respCode);
+
+        http.disconnect();
+    }
+
+    /*
+     * =============================================================
+     * The remainder is just support stuff
+     */
+
+    // use any free port by default
+    volatile int serverPort = 0;
+
+    volatile Exception serverException = null;
+    volatile Exception clientException = null;
+
+    public static void main(String args[]) throws Exception {
+        if (debug)
+            System.setProperty("javax.net.debug", "all");
+
+        /*
+         * Start the tests.
+         */
+        new IPAddressIPIdentities();
+    }
+
+    Thread clientThread = null;
+    Thread serverThread = null;
+    /*
+     * Primary constructor, used to drive remainder of the test.
+     *
+     * Fork off the other side, then do your work.
+     */
+    IPAddressIPIdentities() throws Exception {
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            serverThread.join();
+        } else {
+            clientThread.join();
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         *
+         * If the main thread excepted, that propagates back
+         * immediately.  If the other thread threw an exception, we
+         * should report back.
+         */
+        if (serverException != null)
+            throw serverException;
+        if (clientException != null)
+            throw clientException;
+    }
+
+    void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        System.err.println("Server died...");
+                        serverReady = true;
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            doServerSide();
+        }
+    }
+
+    void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        System.err.println("Client died...");
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            doClientSide();
+        }
+    }
+
+    // get the ssl context
+    private static SSLContext getSSLContext(String trusedCertStr,
+            String keyCertStr, byte[] modulus,
+            byte[] privateExponent, char[] passphrase) throws Exception {
+
+        // generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        ByteArrayInputStream is =
+                    new ByteArrayInputStream(trusedCertStr.getBytes());
+        Certificate trusedCert = cf.generateCertificate(is);
+        is.close();
+
+        // create a key store
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(null, null);
+
+        // import the trused cert
+        ks.setCertificateEntry("RSA Export Signer", trusedCert);
+
+        if (keyCertStr != null) {
+            // generate the private key.
+            RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+                                            new BigInteger(modulus),
+                                            new BigInteger(privateExponent));
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            RSAPrivateKey priKey =
+                    (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+            // generate certificate chain
+            is = new ByteArrayInputStream(keyCertStr.getBytes());
+            Certificate keyCert = cf.generateCertificate(is);
+            is.close();
+
+            Certificate[] chain = new Certificate[2];
+            chain[0] = keyCert;
+            chain[1] = trusedCert;
+
+            // import the key entry.
+            ks.setKeyEntry("Whatever", priKey, passphrase, chain);
+        }
+
+        // create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ks);
+
+        SSLContext ctx = SSLContext.getInstance("TLS");
+
+        if (keyCertStr != null) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, passphrase);
+
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            ctx.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return ctx;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,880 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10
+ * @bug 6766775
+ * @author Xuelei Fan
+ */
+
+import java.net.*;
+import java.util.*;
+import java.io.*;
+import javax.net.ssl.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import java.math.BigInteger;
+
+import sun.security.ssl.SSLSocketImpl;
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A
+ *
+ * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e
+ * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI
+ * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n
+ * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb
+ * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP
+ * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz
+ * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF
+ * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J
+ * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa
+ * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH
+ * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT
+ * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q
+ * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie
+ * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU
+ * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB
+ * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi
+ * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y
+ * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo
+ * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4
+ * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51
+ * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16
+ * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2
+ * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC
+ * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF
+ * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *     d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *     1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *     ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *     7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *     9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *     d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *     7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *     30:05:40:2c:4f:ab:d9:74:89
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90:
+ *     60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82:
+ *     e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62:
+ *     0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9:
+ *     4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77:
+ *     76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09:
+ *     6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b:
+ *     fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3:
+ *     37:6b:37:59:ed:db:6d:b1
+ * prime1:
+ *     00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a:
+ *     ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46:
+ *     89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33:
+ *     c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7:
+ *     d6:11:4c:99:c7
+ * prime2:
+ *     00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e:
+ *     97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7:
+ *     31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0:
+ *     3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc:
+ *     e0:e1:84:ff:2f
+ * exponent1:
+ *     7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8:
+ *     8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1:
+ *     32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c:
+ *     6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d:
+ *     12:b7:6e:91
+ * exponent2:
+ *     00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50:
+ *     d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b:
+ *     0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72:
+ *     98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4:
+ *     19:7b:b0:de:53
+ * coefficient:
+ *     71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35:
+ *     cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a:
+ *     90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df:
+ *     06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21:
+ *     12:d7:eb:4f
+ *
+ *
+ * server certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 7 (0x7)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:27:57 2008 GMT
+ *         Not After : Aug 25 03:27:57 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *                 d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *                 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *                 ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *                 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *                 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *                 d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *                 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *                 30:05:40:2c:4f:ab:d9:74:89
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             IP Address:127.0.0.1
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3
+ * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6
+ * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS
+ * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB
+ * MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva
+ * cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h
+ * pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun
+ * nZif
+ * -----END CERTIFICATE-----
+ *
+ *
+ * TLS client certificate:
+ * client private key:
+ * ----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390
+ *
+ * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4
+ * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf
+ * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak
+ * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH
+ * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat
+ * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46
+ * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++
+ * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+
+ * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN
+ * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U
+ * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO
+ * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig
+ * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4
+ * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z
+ * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB
+ * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW
+ * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf
+ * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6
+ * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3
+ * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX
+ * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM
+ * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1
+ * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j
+ * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY
+ * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *     21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *     12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *     01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *     7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *     35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *     ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *     28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *     75:8d:f5:82:ac:43:92:44:1b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b:
+ *     25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05:
+ *     fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96:
+ *     b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0:
+ *     26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51:
+ *     2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef:
+ *     47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94:
+ *     4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1:
+ *     e5:28:9b:f9:4c:94:c6:b1
+ * prime1:
+ *     00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38:
+ *     2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f:
+ *     a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f:
+ *     1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14:
+ *     e2:a0:4d:ab:b5
+ * prime2:
+ *     00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d:
+ *     96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3:
+ *     3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4:
+ *     bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4:
+ *     76:7d:ce:32:8f
+ * exponent1:
+ *     2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f:
+ *     33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b:
+ *     9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa:
+ *     28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2:
+ *     4c:de:38:95
+ * exponent2:
+ *     0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3:
+ *     ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce:
+ *     69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3:
+ *     eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b:
+ *     0d:78:df:fd
+ * coefficient:
+ *     01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31:
+ *     de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18:
+ *     aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56:
+ *     93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da:
+ *     35:92:f2:e3
+ *
+ * client certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 6 (0x6)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:27:34 2008 GMT
+ *         Not After : Aug 25 03:27:34 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *                 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *                 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *                 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *                 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *                 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *                 ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *                 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *                 75:8d:f5:82:ac:43:92:44:1b
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             IP Address:127.0.0.1
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas
+ * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV
+ * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq
+ * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB
+ * MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx
+ * HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP
+ * i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC
+ * I9aw
+ * -----END CERTIFICATE-----
+ *
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ *   Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 0 (0x0)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 02:43:36 2008 GMT
+ *         Not After : Aug 25 02:43:36 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d:
+ *                 d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53:
+ *                 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9:
+ *                 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f:
+ *                 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7:
+ *                 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee:
+ *                 f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee:
+ *                 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97:
+ *                 89:2a:95:12:4c:d8:09:2a:e9
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Subject Key Identifier:
+ *             FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *             DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org
+ *             serial:00
+ *
+ *         X509v3 Basic Constraints:
+ *             CA:TRUE
+ *  Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+ * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX
+ * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj
+ * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G
+ * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ
+ * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt
+ * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw
+ * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA
+ * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ
+ * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P
+ * 6Mvf0r1PNTY2hwTJLJmKtg==
+ * -----END CERTIFICATE---
+ */
+
+
+public class IPIdentities {
+    static Map cookies;
+    ServerSocket ss;
+
+    /*
+     * =============================================================
+     * Set the various variables needed for the tests, then
+     * specify what tests to run on each side.
+     */
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    static boolean separateServerThread = true;
+
+    /*
+     * Where do we find the keystores?
+     */
+    static String trusedCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" +
+        "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" +
+        "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" +
+        "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" +
+        "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" +
+        "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" +
+        "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" +
+        "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" +
+        "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" +
+        "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" +
+        "6Mvf0r1PNTY2hwTJLJmKtg==\n" +
+        "-----END CERTIFICATE-----";
+
+    static String serverCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" +
+        "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" +
+        "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" +
+        "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" +
+        "MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva\n" +
+        "cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h\n" +
+        "pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun\n" +
+        "nZif\n" +
+        "-----END CERTIFICATE-----";
+
+    static String clientCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" +
+        "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" +
+        "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" +
+        "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" +
+        "MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx\n" +
+        "HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP\n" +
+        "i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC\n" +
+        "I9aw\n" +
+        "-----END CERTIFICATE-----";
+
+
+    static byte serverPrivateExponent[] = {
+        (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83,
+        (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44,
+        (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89,
+        (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60,
+        (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21,
+        (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc,
+        (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e,
+        (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3,
+        (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54,
+        (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf,
+        (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0,
+        (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9,
+        (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29,
+        (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c,
+        (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9,
+        (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6,
+        (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72,
+        (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4,
+        (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76,
+        (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f,
+        (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5,
+        (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71,
+        (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e,
+        (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4,
+        (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a,
+        (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4,
+        (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a,
+        (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18,
+        (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba,
+        (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3,
+        (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59,
+        (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1
+    };
+
+    static byte serverModulus[] = {
+        (byte)0x00,
+        (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c,
+        (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99,
+        (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79,
+        (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48,
+        (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84,
+        (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c,
+        (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9,
+        (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39,
+        (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72,
+        (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44,
+        (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc,
+        (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6,
+        (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54,
+        (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc,
+        (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f,
+        (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f,
+        (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2,
+        (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88,
+        (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f,
+        (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53,
+        (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33,
+        (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47,
+        (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea,
+        (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75,
+        (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc,
+        (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9,
+        (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2,
+        (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24,
+        (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03,
+        (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30,
+        (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f,
+        (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89
+    };
+
+    static byte clientPrivateExponent[] = {
+        (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36,
+        (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce,
+        (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84,
+        (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25,
+        (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4,
+        (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a,
+        (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19,
+        (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2,
+        (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77,
+        (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84,
+        (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41,
+        (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8,
+        (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71,
+        (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a,
+        (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0,
+        (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6,
+        (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39,
+        (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e,
+        (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a,
+        (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88,
+        (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89,
+        (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d,
+        (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a,
+        (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69,
+        (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37,
+        (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7,
+        (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27,
+        (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8,
+        (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8,
+        (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1,
+        (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9,
+        (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1
+    };
+
+    static byte clientModulus[] = {
+        (byte)0x00,
+        (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36,
+        (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e,
+        (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00,
+        (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f,
+        (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93,
+        (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1,
+        (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8,
+        (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99,
+        (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f,
+        (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24,
+        (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7,
+        (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44,
+        (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2,
+        (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c,
+        (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d,
+        (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a,
+        (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6,
+        (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f,
+        (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97,
+        (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05,
+        (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf,
+        (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3,
+        (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c,
+        (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf,
+        (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56,
+        (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9,
+        (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf,
+        (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab,
+        (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1,
+        (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75,
+        (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac,
+        (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b
+    };
+
+    static char passphrase[] = "passphrase".toCharArray();
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Turn on SSL debugging?
+     */
+    static boolean debug = false;
+
+    private SSLServerSocket sslServerSocket = null;
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doServerSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, serverCertStr,
+            serverModulus, serverPrivateExponent, passphrase);
+        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
+
+        sslServerSocket =
+            (SSLServerSocket) sslssf.createServerSocket(serverPort);
+        serverPort = sslServerSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for his connect.
+         */
+        serverReady = true;
+
+        SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+        sslSocket.setNeedClientAuth(true);
+        if (sslSocket instanceof SSLSocketImpl) {
+            ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS");
+        }
+
+        PrintStream out =
+                new PrintStream(sslSocket.getOutputStream());
+
+        try {
+            // ignore request data
+
+            // send the response
+            out.print("HTTP/1.1 200 OK\r\n");
+            out.print("Content-Type: text/html; charset=iso-8859-1\r\n");
+            out.print("Content-Length: "+ 9 +"\r\n");
+            out.print("\r\n");
+            out.print("Testing\r\n");
+            out.flush();
+        } finally {
+             // close the socket
+             Thread.sleep(2000);
+             System.out.println("Server closing socket");
+             sslSocket.close();
+             serverReady = false;
+        }
+
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doClientSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, clientCertStr,
+            clientModulus, clientPrivateExponent, passphrase);
+
+        SSLContext.setDefault(context);
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(50);
+        }
+
+        HttpsURLConnection http = null;
+
+        /* establish http connection to server */
+        URL url = new URL("https://localhost:" + serverPort+"/");
+        System.out.println("url is "+url.toString());
+
+        http = (HttpsURLConnection)url.openConnection();
+
+        int respCode = http.getResponseCode();
+        System.out.println("respCode = "+respCode);
+
+        http.disconnect();
+    }
+
+    /*
+     * =============================================================
+     * The remainder is just support stuff
+     */
+
+    // use any free port by default
+    volatile int serverPort = 0;
+
+    volatile Exception serverException = null;
+    volatile Exception clientException = null;
+
+    public static void main(String args[]) throws Exception {
+        if (debug)
+            System.setProperty("javax.net.debug", "all");
+
+        /*
+         * Start the tests.
+         */
+        new IPIdentities();
+    }
+
+    Thread clientThread = null;
+    Thread serverThread = null;
+    /*
+     * Primary constructor, used to drive remainder of the test.
+     *
+     * Fork off the other side, then do your work.
+     */
+    IPIdentities() throws Exception {
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            serverThread.join();
+        } else {
+            clientThread.join();
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         *
+         * If the main thread excepted, that propagates back
+         * immediately.  If the other thread threw an exception, we
+         * should report back.
+         */
+        if (serverException != null)
+            throw serverException;
+        if (clientException != null)
+            throw clientException;
+    }
+
+    void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        System.err.println("Server died...");
+                        serverReady = true;
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            doServerSide();
+        }
+    }
+
+    void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        System.err.println("Client died...");
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            doClientSide();
+        }
+    }
+
+    // get the ssl context
+    private static SSLContext getSSLContext(String trusedCertStr,
+            String keyCertStr, byte[] modulus,
+            byte[] privateExponent, char[] passphrase) throws Exception {
+
+        // generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        ByteArrayInputStream is =
+                    new ByteArrayInputStream(trusedCertStr.getBytes());
+        Certificate trusedCert = cf.generateCertificate(is);
+        is.close();
+
+        // create a key store
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(null, null);
+
+        // import the trused cert
+        ks.setCertificateEntry("RSA Export Signer", trusedCert);
+
+        if (keyCertStr != null) {
+            // generate the private key.
+            RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+                                            new BigInteger(modulus),
+                                            new BigInteger(privateExponent));
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            RSAPrivateKey priKey =
+                    (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+            // generate certificate chain
+            is = new ByteArrayInputStream(keyCertStr.getBytes());
+            Certificate keyCert = cf.generateCertificate(is);
+            is.close();
+
+            Certificate[] chain = new Certificate[2];
+            chain[0] = keyCert;
+            chain[1] = trusedCert;
+
+            // import the key entry.
+            ks.setKeyEntry("Whatever", priKey, passphrase, chain);
+        }
+
+        // create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ks);
+
+        SSLContext ctx = SSLContext.getInstance("TLS");
+
+        if (keyCertStr != null) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, passphrase);
+
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            ctx.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return ctx;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,879 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @summary X509 certificate hostname checking is broken in JDK1.6.0_10
+ * @bug 6766775
+ * @author Xuelei Fan
+ */
+
+import java.net.*;
+import java.util.*;
+import java.io.*;
+import javax.net.ssl.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import java.math.BigInteger;
+
+import sun.security.ssl.SSLSocketImpl;
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A
+ *
+ * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e
+ * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI
+ * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n
+ * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb
+ * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP
+ * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz
+ * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF
+ * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J
+ * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa
+ * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH
+ * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT
+ * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q
+ * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie
+ * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU
+ * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB
+ * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi
+ * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y
+ * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo
+ * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4
+ * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51
+ * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16
+ * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2
+ * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC
+ * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF
+ * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *     d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *     1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *     ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *     7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *     9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *     d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *     7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *     30:05:40:2c:4f:ab:d9:74:89
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90:
+ *     60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82:
+ *     e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62:
+ *     0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9:
+ *     4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77:
+ *     76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09:
+ *     6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b:
+ *     fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3:
+ *     37:6b:37:59:ed:db:6d:b1
+ * prime1:
+ *     00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a:
+ *     ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46:
+ *     89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33:
+ *     c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7:
+ *     d6:11:4c:99:c7
+ * prime2:
+ *     00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e:
+ *     97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7:
+ *     31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0:
+ *     3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc:
+ *     e0:e1:84:ff:2f
+ * exponent1:
+ *     7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8:
+ *     8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1:
+ *     32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c:
+ *     6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d:
+ *     12:b7:6e:91
+ * exponent2:
+ *     00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50:
+ *     d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b:
+ *     0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72:
+ *     98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4:
+ *     19:7b:b0:de:53
+ * coefficient:
+ *     71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35:
+ *     cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a:
+ *     90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df:
+ *     06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21:
+ *     12:d7:eb:4f
+ *
+ *
+ * server certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 4 (0x4)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:21:16 2008 GMT
+ *         Not After : Aug 25 03:21:16 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f:
+ *                 d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2:
+ *                 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc:
+ *                 ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a:
+ *                 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe:
+ *                 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14:
+ *                 d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9:
+ *                 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0:
+ *                 30:05:40:2c:4f:ab:d9:74:89
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             IP Address:127.0.0.1, DNS:localhost
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICqjCCAhOgAwIBAgIBBDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzIxMTZaFw0yODA4MjUwMzIxMTZaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3
+ * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6
+ * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS
+ * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjeTB3MAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB
+ * gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAWTrftGaL73lKLgRTrChGR+F6
+ * //qvs0OM94IOKVeHz36NO49cMJmhJSbKdiGIkppBgpLIBoWxZlN9NOO9oSXFYZsZ
+ * rHaAe9/lWMtQM7XpjqjhWVhB5VPvWFbkorQFMtRYLf7pkonGPFq8GOO1s0TKhogC
+ * jtYCdzlrU4v+om/J3H8=
+ * -----END CERTIFICATE-----
+ *
+ *
+ * TLS client certificate:
+ * client private key:
+ * ----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390
+ *
+ * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4
+ * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf
+ * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak
+ * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH
+ * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat
+ * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46
+ * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++
+ * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+
+ * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN
+ * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U
+ * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO
+ * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig
+ * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4
+ * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z
+ * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB
+ * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW
+ * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf
+ * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6
+ * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3
+ * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX
+ * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM
+ * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1
+ * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j
+ * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY
+ * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w==
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (1024 bit)
+ * modulus:
+ *     00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *     21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *     12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *     01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *     7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *     35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *     ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *     28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *     75:8d:f5:82:ac:43:92:44:1b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b:
+ *     25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05:
+ *     fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96:
+ *     b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0:
+ *     26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51:
+ *     2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef:
+ *     47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94:
+ *     4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1:
+ *     e5:28:9b:f9:4c:94:c6:b1
+ * prime1:
+ *     00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38:
+ *     2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f:
+ *     a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f:
+ *     1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14:
+ *     e2:a0:4d:ab:b5
+ * prime2:
+ *     00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d:
+ *     96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3:
+ *     3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4:
+ *     bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4:
+ *     76:7d:ce:32:8f
+ * exponent1:
+ *     2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f:
+ *     33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b:
+ *     9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa:
+ *     28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2:
+ *     4c:de:38:95
+ * exponent2:
+ *     0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3:
+ *     ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce:
+ *     69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3:
+ *     eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b:
+ *     0d:78:df:fd
+ * coefficient:
+ *     01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31:
+ *     de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18:
+ *     aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56:
+ *     93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da:
+ *     35:92:f2:e3
+ *
+ * client certificate:
+ * Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 5 (0x5)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 03:22:10 2008 GMT
+ *         Not After : Aug 25 03:22:10 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69:
+ *                 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f:
+ *                 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7:
+ *                 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21:
+ *                 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41:
+ *                 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10:
+ *                 ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9:
+ *                 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba:
+ *                 75:8d:f5:82:ac:43:92:44:1b
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Basic Constraints:
+ *             CA:FALSE
+ *         X509v3 Key Usage:
+ *             Digital Signature, Non Repudiation, Key Encipherment
+ *         X509v3 Subject Key Identifier:
+ *             CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *
+ *         X509v3 Subject Alternative Name: critical
+ *             IP Address:127.0.0.1, DNS:localhost
+ * Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICqjCCAhOgAwIBAgIBBTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMzIyMTBaFw0yODA4MjUwMzIyMTBaMHIxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD
+ * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas
+ * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV
+ * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq
+ * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjeTB3MAkGA1UdEwQCMAAw
+ * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV
+ * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB
+ * gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAwDc4f13abs9ZeEkrl5WV2Z74
+ * BlmBhXu8ExtAvoF9q6Ug6xV1MDpxbD124KfUHHL0kNMhMB1WIpC0kOnQBxziNpfS
+ * 7u6GOc3tWLSxw/sHoJGCefnRBllLZOoQuSBrWB8qgilL6HRmZ4UqDcXu4UCaLBZ0
+ * KGDT5ASEN6Lq2GtiP4Y=
+ * -----END CERTIFICATE-----
+ *
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ *   Data:
+ *     Version: 3 (0x2)
+ *     Serial Number: 0 (0x0)
+ *     Signature Algorithm: md5WithRSAEncryption
+ *     Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Validity
+ *         Not Before: Dec  8 02:43:36 2008 GMT
+ *         Not After : Aug 25 02:43:36 2028 GMT
+ *     Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org
+ *     Subject Public Key Info:
+ *         Public Key Algorithm: rsaEncryption
+ *         RSA Public Key: (1024 bit)
+ *             Modulus (1024 bit):
+ *                 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d:
+ *                 d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53:
+ *                 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9:
+ *                 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f:
+ *                 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7:
+ *                 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee:
+ *                 f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee:
+ *                 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97:
+ *                 89:2a:95:12:4c:d8:09:2a:e9
+ *             Exponent: 65537 (0x10001)
+ *     X509v3 extensions:
+ *         X509v3 Subject Key Identifier:
+ *             FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *         X509v3 Authority Key Identifier:
+ *             keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14
+ *             DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org
+ *             serial:00
+ *
+ *         X509v3 Basic Constraints:
+ *             CA:TRUE
+ *  Signature Algorithm: md5WithRSAEncryption
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK
+ * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ
+ * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp
+ * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+ * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX
+ * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj
+ * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G
+ * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ
+ * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt
+ * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw
+ * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA
+ * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ
+ * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P
+ * 6Mvf0r1PNTY2hwTJLJmKtg==
+ * -----END CERTIFICATE---
+ */
+
+
+public class Identities {
+    static Map cookies;
+    ServerSocket ss;
+
+    /*
+     * =============================================================
+     * Set the various variables needed for the tests, then
+     * specify what tests to run on each side.
+     */
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    static boolean separateServerThread = true;
+
+    /*
+     * Where do we find the keystores?
+     */
+    static String trusedCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" +
+        "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" +
+        "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" +
+        "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" +
+        "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" +
+        "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" +
+        "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" +
+        "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" +
+        "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" +
+        "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" +
+        "6Mvf0r1PNTY2hwTJLJmKtg==\n" +
+        "-----END CERTIFICATE-----";
+
+    static String serverCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICqjCCAhOgAwIBAgIBBDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzIxMTZaFw0yODA4MjUwMzIxMTZaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" +
+        "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" +
+        "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" +
+        "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjeTB3MAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB\n" +
+        "gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAWTrftGaL73lKLgRTrChGR+F6\n" +
+        "//qvs0OM94IOKVeHz36NO49cMJmhJSbKdiGIkppBgpLIBoWxZlN9NOO9oSXFYZsZ\n" +
+        "rHaAe9/lWMtQM7XpjqjhWVhB5VPvWFbkorQFMtRYLf7pkonGPFq8GOO1s0TKhogC\n" +
+        "jtYCdzlrU4v+om/J3H8=\n" +
+        "-----END CERTIFICATE-----";
+
+    static String clientCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICqjCCAhOgAwIBAgIBBTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" +
+        "EwhTb21lLU9yZzAeFw0wODEyMDgwMzIyMTBaFw0yODA4MjUwMzIyMTBaMHIxCzAJ\n" +
+        "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" +
+        "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" +
+        "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" +
+        "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" +
+        "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" +
+        "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjeTB3MAkGA1UdEwQCMAAw\n" +
+        "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" +
+        "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB\n" +
+        "gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAwDc4f13abs9ZeEkrl5WV2Z74\n" +
+        "BlmBhXu8ExtAvoF9q6Ug6xV1MDpxbD124KfUHHL0kNMhMB1WIpC0kOnQBxziNpfS\n" +
+        "7u6GOc3tWLSxw/sHoJGCefnRBllLZOoQuSBrWB8qgilL6HRmZ4UqDcXu4UCaLBZ0\n" +
+        "KGDT5ASEN6Lq2GtiP4Y=\n" +
+        "-----END CERTIFICATE-----";
+
+    static byte serverPrivateExponent[] = {
+        (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83,
+        (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44,
+        (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89,
+        (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60,
+        (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21,
+        (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc,
+        (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e,
+        (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3,
+        (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54,
+        (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf,
+        (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0,
+        (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9,
+        (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29,
+        (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c,
+        (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9,
+        (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6,
+        (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72,
+        (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4,
+        (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76,
+        (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f,
+        (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5,
+        (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71,
+        (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e,
+        (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4,
+        (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a,
+        (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4,
+        (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a,
+        (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18,
+        (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba,
+        (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3,
+        (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59,
+        (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1
+    };
+
+    static byte serverModulus[] = {
+        (byte)0x00,
+        (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c,
+        (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99,
+        (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79,
+        (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48,
+        (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84,
+        (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c,
+        (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9,
+        (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39,
+        (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72,
+        (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44,
+        (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc,
+        (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6,
+        (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54,
+        (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc,
+        (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f,
+        (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f,
+        (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2,
+        (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88,
+        (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f,
+        (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53,
+        (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33,
+        (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47,
+        (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea,
+        (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75,
+        (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc,
+        (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9,
+        (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2,
+        (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24,
+        (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03,
+        (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30,
+        (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f,
+        (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89
+    };
+
+    static byte clientPrivateExponent[] = {
+        (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36,
+        (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce,
+        (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84,
+        (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25,
+        (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4,
+        (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a,
+        (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19,
+        (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2,
+        (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77,
+        (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84,
+        (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41,
+        (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8,
+        (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71,
+        (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a,
+        (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0,
+        (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6,
+        (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39,
+        (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e,
+        (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a,
+        (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88,
+        (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89,
+        (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d,
+        (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a,
+        (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69,
+        (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37,
+        (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7,
+        (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27,
+        (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8,
+        (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8,
+        (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1,
+        (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9,
+        (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1
+    };
+
+    static byte clientModulus[] = {
+        (byte)0x00,
+        (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36,
+        (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e,
+        (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00,
+        (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f,
+        (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93,
+        (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1,
+        (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8,
+        (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99,
+        (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f,
+        (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24,
+        (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7,
+        (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44,
+        (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2,
+        (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c,
+        (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d,
+        (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a,
+        (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6,
+        (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f,
+        (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97,
+        (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05,
+        (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf,
+        (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3,
+        (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c,
+        (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf,
+        (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56,
+        (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9,
+        (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf,
+        (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab,
+        (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1,
+        (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75,
+        (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac,
+        (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b
+    };
+
+    static char passphrase[] = "passphrase".toCharArray();
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Turn on SSL debugging?
+     */
+    static boolean debug = false;
+
+    private SSLServerSocket sslServerSocket = null;
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doServerSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, serverCertStr,
+            serverModulus, serverPrivateExponent, passphrase);
+        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
+
+        sslServerSocket =
+            (SSLServerSocket) sslssf.createServerSocket(serverPort);
+        serverPort = sslServerSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for his connect.
+         */
+        serverReady = true;
+
+        SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+        sslSocket.setNeedClientAuth(true);
+        if (sslSocket instanceof SSLSocketImpl) {
+            ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS");
+        }
+
+        PrintStream out =
+                new PrintStream(sslSocket.getOutputStream());
+
+        try {
+            // ignore request data
+
+            // send the response
+            out.print("HTTP/1.1 200 OK\r\n");
+            out.print("Content-Type: text/html; charset=iso-8859-1\r\n");
+            out.print("Content-Length: "+ 9 +"\r\n");
+            out.print("\r\n");
+            out.print("Testing\r\n");
+            out.flush();
+        } finally {
+             // close the socket
+             Thread.sleep(2000);
+             System.out.println("Server closing socket");
+             sslSocket.close();
+             serverReady = false;
+        }
+
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doClientSide() throws Exception {
+        SSLContext context = getSSLContext(trusedCertStr, clientCertStr,
+            clientModulus, clientPrivateExponent, passphrase);
+
+        SSLContext.setDefault(context);
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(50);
+        }
+
+        HttpsURLConnection http = null;
+
+        /* establish http connection to server */
+        URL url = new URL("https://localhost:" + serverPort+"/");
+        System.out.println("url is "+url.toString());
+
+        http = (HttpsURLConnection)url.openConnection();
+
+        int respCode = http.getResponseCode();
+        System.out.println("respCode = "+respCode);
+
+        http.disconnect();
+    }
+
+    /*
+     * =============================================================
+     * The remainder is just support stuff
+     */
+
+    // use any free port by default
+    volatile int serverPort = 0;
+
+    volatile Exception serverException = null;
+    volatile Exception clientException = null;
+
+    public static void main(String args[]) throws Exception {
+        if (debug)
+            System.setProperty("javax.net.debug", "all");
+
+        /*
+         * Start the tests.
+         */
+        new Identities();
+    }
+
+    Thread clientThread = null;
+    Thread serverThread = null;
+    /*
+     * Primary constructor, used to drive remainder of the test.
+     *
+     * Fork off the other side, then do your work.
+     */
+    Identities() throws Exception {
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            serverThread.join();
+        } else {
+            clientThread.join();
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         *
+         * If the main thread excepted, that propagates back
+         * immediately.  If the other thread threw an exception, we
+         * should report back.
+         */
+        if (serverException != null)
+            throw serverException;
+        if (clientException != null)
+            throw clientException;
+    }
+
+    void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        System.err.println("Server died...");
+                        serverReady = true;
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            doServerSide();
+        }
+    }
+
+    void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        System.err.println("Client died...");
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            doClientSide();
+        }
+    }
+
+    // get the ssl context
+    private static SSLContext getSSLContext(String trusedCertStr,
+            String keyCertStr, byte[] modulus,
+            byte[] privateExponent, char[] passphrase) throws Exception {
+
+        // generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        ByteArrayInputStream is =
+                    new ByteArrayInputStream(trusedCertStr.getBytes());
+        Certificate trusedCert = cf.generateCertificate(is);
+        is.close();
+
+        // create a key store
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(null, null);
+
+        // import the trused cert
+        ks.setCertificateEntry("RSA Export Signer", trusedCert);
+
+        if (keyCertStr != null) {
+            // generate the private key.
+            RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+                                            new BigInteger(modulus),
+                                            new BigInteger(privateExponent));
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            RSAPrivateKey priKey =
+                    (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+            // generate certificate chain
+            is = new ByteArrayInputStream(keyCertStr.getBytes());
+            Certificate keyCert = cf.generateCertificate(is);
+            is.close();
+
+            Certificate[] chain = new Certificate[2];
+            chain[0] = keyCert;
+            chain[1] = trusedCert;
+
+            // import the key entry.
+            ks.setKeyEntry("Whatever", priKey, passphrase, chain);
+        }
+
+        // create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ks);
+
+        SSLContext ctx = SSLContext.getInstance("TLS");
+
+        if (keyCertStr != null) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, passphrase);
+
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            ctx.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return ctx;
+    }
+
+}
--- a/jdk/test/sun/security/tools/jarsigner/oldsig.sh	Sun Apr 11 23:21:23 2010 -0700
+++ b/jdk/test/sun/security/tools/jarsigner/oldsig.sh	Tue Apr 20 01:24:48 2010 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2007-2010 Sun Microsystems, Inc.  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
@@ -22,7 +22,7 @@
 #
 
 # @test
-# @bug 6543940
+# @bug 6543940 6868865
 # @summary Exception thrown when signing a jarfile in java 1.5
 #
 # @run shell oldsig.sh
@@ -77,5 +77,6 @@
 ${TESTJAVA}${FS}bin${FS}jarsigner \
     -keystore ${TESTSRC}${FS}JarSigning.keystore \
     -storepass bbbbbb \
+    -digestalg SHA1 \
     B.jar c
 ${TESTJAVA}${FS}bin${FS}jarsigner -verify B.jar
--- a/langtools/.hgtags	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/.hgtags	Tue Apr 20 01:24:48 2010 -0700
@@ -62,3 +62,5 @@
 136bfc67946219fb02ee223984540a4a9c5b209f jdk7-b85
 ef07347428f2198ae6b8144ac0b9086bbe39fd16 jdk7-b86
 409db93d19c002333980df5b797c6b965150c7a0 jdk7-b87
+f9b5d4867a26f8c4b90ad37fe2c345b721e93d6b jdk7-b88
+6cea9a143208bc1185ced046942c0f4e45dbeba5 jdk7-b89
--- a/langtools/make/Makefile	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/make/Makefile	Tue Apr 20 01:24:48 2010 -0700
@@ -188,10 +188,16 @@
 # All ant targets of interest
 ANT_TARGETS = build clean sanity post-sanity diagnostics # for now
 
+# Create diagnostics log (careful, ant 1.8.0 -diagnostics always does an exit 1)
+$(OUTPUTDIR)/build/ant-diagnostics.log:
+	@mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
+	@$(RM) $@
+	$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $@ ; \
+	  $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -version >> $@
+
 # Create a make target for each
-$(ANT_TARGETS):
+$(ANT_TARGETS): $(OUTPUTDIR)/build/ant-diagnostics.log
 	@ mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
-	$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $(OUTPUTDIR)/build/ant-diagnostics.log
 	$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) $(ANT_OPTIONS) $@
 
 #-------------------------------------------------------------------
--- a/langtools/make/jprt.properties	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/make/jprt.properties	Tue Apr 20 01:24:48 2010 -0700
@@ -50,6 +50,5 @@
 jprt.test.targets=
 
 # Directories needed to build
-jprt.bundle.src.dirs=make src
 jprt.bundle.exclude.src.dirs=build dist
 
--- a/langtools/src/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java	Tue Apr 20 01:24:48 2010 -0700
@@ -229,23 +229,24 @@
             if (kind == ENUM) {
                 List<Element> enclosedElements =
                     new ArrayList<Element>(e.getEnclosedElements());
+                // Handle any enum constants specially before other entities.
                 List<Element> enumConstants = new ArrayList<Element>();
                 for(Element element : enclosedElements) {
                     if (element.getKind() == ENUM_CONSTANT)
                         enumConstants.add(element);
                 }
-
-                int i;
-                for(i = 0; i < enumConstants.size()-1; i++) {
+                if (!enumConstants.isEmpty()) {
+                    int i;
+                    for(i = 0; i < enumConstants.size()-1; i++) {
+                        this.visit(enumConstants.get(i), true);
+                        writer.print(",");
+                    }
                     this.visit(enumConstants.get(i), true);
-                    writer.print(",");
-                }
-                if (i >= 0 ) {
-                    this.visit(enumConstants.get(i), true);
-                    writer.print(";");
+                    writer.println(";\n");
+
+                    enclosedElements.removeAll(enumConstants);
                 }
 
-                enclosedElements.removeAll(enumConstants);
                 for(Element element : enclosedElements)
                     this.visit(element);
             } else {
--- a/langtools/src/share/classes/com/sun/tools/javah/JavahTask.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javah/JavahTask.java	Tue Apr 20 01:24:48 2010 -0700
@@ -318,12 +318,6 @@
     int run(String[] args) {
         try {
             handleOptions(args);
-            if (classes == null || classes.size() == 0) {
-                if (help || version || fullVersion)
-                    return 0;
-                else
-                    return 1;
-            }
             boolean ok = run();
             return ok ? 0 : 1;
         } catch (BadArgs e) {
@@ -355,7 +349,7 @@
             fileManager = getDefaultFileManager(diagnosticListener, log);
 
         Iterator<String> iter = args.iterator();
-        boolean noArgs = !iter.hasNext();
+        noArgs = !iter.hasNext();
 
         while (iter.hasNext()) {
             String arg = iter.next();
@@ -416,9 +410,9 @@
 
         Util util = new Util(log, diagnosticListener);
 
-        if (help) {
+        if (noArgs || help) {
             showHelp();
-            return true;
+            return help; // treat noArgs as an error for purposes of exit code
         }
 
         if (version || fullVersion) {
@@ -636,6 +630,7 @@
     String usercp;
     List<String> classes;
     boolean verbose;
+    boolean noArgs;
     boolean help;
     boolean trace;
     boolean version;
--- a/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java	Tue Apr 20 01:24:48 2010 -0700
@@ -225,15 +225,15 @@
         writeModifiers(flags.getFieldModifiers());
         Signature_attribute sigAttr = getSignature(f.attributes);
         if (sigAttr == null)
-            print(getFieldType(f.descriptor));
+            print(getJavaFieldType(f.descriptor));
         else {
             try {
                 Type t = sigAttr.getParsedSignature().getType(constant_pool);
-                print(t);
+                print(getJavaName(t.toString()));
             } catch (ConstantPoolException e) {
                 // report error?
                 // fall back on non-generic descriptor
-                print(getFieldType(f.descriptor));
+                print(getJavaFieldType(f.descriptor));
             }
         }
         print(" ");
@@ -314,14 +314,14 @@
         }
         if (getName(m).equals("<init>")) {
             print(getJavaName(classFile));
-            print(getParameterTypes(d, flags));
+            print(getJavaParameterTypes(d, flags));
         } else if (getName(m).equals("<clinit>")) {
             print("{}");
         } else {
-            print(getReturnType(d));
+            print(getJavaReturnType(d));
             print(" ");
             print(getName(m));
-            print(getParameterTypes(d, flags));
+            print(getJavaParameterTypes(d, flags));
         }
 
         Attribute e_attr = m.attributes.get(Attribute.Exceptions);
@@ -460,9 +460,9 @@
         }
     }
 
-    String getFieldType(Descriptor d) {
+    String getJavaFieldType(Descriptor d) {
         try {
-            return d.getFieldType(constant_pool);
+            return getJavaName(d.getFieldType(constant_pool));
         } catch (ConstantPoolException e) {
             return report(e);
         } catch (DescriptorException e) {
@@ -470,9 +470,9 @@
         }
     }
 
-    String getReturnType(Descriptor d) {
+    String getJavaReturnType(Descriptor d) {
         try {
-            return d.getReturnType(constant_pool);
+            return getJavaName(d.getReturnType(constant_pool));
         } catch (ConstantPoolException e) {
             return report(e);
         } catch (DescriptorException e) {
@@ -480,9 +480,9 @@
         }
     }
 
-    String getParameterTypes(Descriptor d, AccessFlags flags) {
+    String getJavaParameterTypes(Descriptor d, AccessFlags flags) {
         try {
-            return adjustVarargs(flags, d.getParameterTypes(constant_pool));
+            return getJavaName(adjustVarargs(flags, d.getParameterTypes(constant_pool)));
         } catch (ConstantPoolException e) {
             return report(e);
         } catch (DescriptorException e) {
--- a/langtools/test/Makefile	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/Makefile	Tue Apr 20 01:24:48 2010 -0700
@@ -1,6 +1,20 @@
 #
-# Makefile to run jtreg and any other tests
+# Makefile to run jtreg and other tests
+#
+
+# Product builds and langtools builds
+#
+# A full product build (or "control" build) creates a complete JDK image.
+# To test a product build, set TESTJAVA to the path for the image.
 #
+# A langtools build just builds the langtools components of a JDK. 
+# To test a langtools build, set TESTJAVA to the path for a recent JDK
+# build, and set TESTBOOTCLASSPATH to the compiled langtools classes --
+# for example build/classes or dist/lib/classes.jar.
+
+# JPRT
+# JPRT may invoke this Makefile directly, as part of a langtools build,
+# or indirectly, via FOREST/test/Makefile, as part of a control build.
 
 # Get OS/ARCH specifics
 OSNAME = $(shell uname -s)
@@ -41,8 +55,11 @@
 # Root of this test area (important to use full paths in some places)
 TEST_ROOT := $(shell pwd)
 
-# Default bundle of all test results (passed or not)
-JPRT_ARCHIVE_BUNDLE=$(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip
+# Default bundle of all test results (passed or not) (JPRT only)
+ifdef JPRT_JOB_ID
+  JPRT_CLEAN = clean
+  JPRT_ARCHIVE_BUNDLE = $(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip
+endif
 
 ifeq ($(PLATFORM), windows)
   SLASH_JAVA = J:
@@ -57,8 +74,21 @@
   JTREG_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg
 endif
 JTREG = $(JTREG_HOME)/$(JT_PLATFORM)/bin/jtreg
+JTDIFF = $(JTREG_HOME)/$(JT_PLATFORM)/bin/jtdiff
 
-# Default JDK for JTREG
+# Default JCK to run
+ifdef JPRT_JCK_HOME
+  JCK_HOME = $(JPRT_JCK_HOME)
+else
+  JCK_HOME = $(SLASH_JAVA)/re/jck/7/promoted/latest/binaries
+endif
+
+# Default JDK for JTREG and JCK
+#
+# JT_JAVA is the version of java used to run jtreg/JCK. Since it is now
+# standard to execute tests in sameVM mode, it should normally be set the
+# same as TESTJAVA (although not necessarily so.)
+#
 ifdef JPRT_JAVA_HOME
   JT_JAVA = $(JPRT_JAVA_HOME)
 else
@@ -72,49 +102,275 @@
   TESTJAVA = $(SLASH_JAVA)/re/jdk/1.7.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH)
 endif
 
-TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar
+# PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from 
+# make/Makefile
+# For langtools, this is a directory containing build and dist
+# For a control build, this is build/$(PRODUCT)-$(ARCH)/j2sdk-image
+ifdef PRODUCT_HOME
+  ifeq ($(shell [ -r $(PRODUCT_HOME)/dist/lib/classes.jar ]; echo $$?),0)
+    TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar
+  endif
+  ifeq ($(shell [ -r $(PRODUCT_HOME)/lib/tools.jar ]; echo $$?),0)
+    TESTJAVA = $(PRODUCT_HOME)
+  endif
+endif
+
+ifdef TESTBOOTCLASSPATH
+  JTREG_OPTIONS += -Xbootclasspath/p:$(TESTBOOTCLASSPATH)
+### In the following, -refvmoptions is an undocumented option
+### The following does not work JCK 7 b30 2/6/2010. Awaiting b31. 
+  JCK_OPTIONS += \
+	-vmoptions:-Xbootclasspath/p:$(TESTBOOTCLASSPATH) \
+	-refvmoptions:-Xbootclasspath/p:$(TESTBOOTCLASSPATH)
+endif
+
+# Concurrency is the number of tests that can execute at once. 
+# Supported for JCK, not supported for jtreg.
+# On an otherwise empty machine, suggest setting to (#cpus + 2)
+# If unset, the default is (#cpus)
+### RFE: determine and use #cpus
+ifdef JCK_CONCURRENCY
+  JCK_OPTIONS += -concurrency:$(JCK_CONCURRENCY)
+endif
+
+# JCK is executed using "Multi-JVM Group Mode", which is a hybrid
+# of otherVM and sameVM modes. New JVMs are created and reused for
+# a number of tests, then eventually discarded and a new one started.
+# This amortizes the JVM startup time.  The "group size" defines
+# how many tests are run in a JVM before it is replaced.
+# If unset, the default is 100.
+JCK_GROUP_SIZE = 1000
+ifdef JCK_GROUP_SIZE
+  JCK_COMPILER_OPTIONS += \
+    -jtoptions:-Ejck.env.compiler.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE) \
+    -jtoptions:-Ejck.env.compiler.compRefExecute.groupMode.groupSize=$(JCK_GROUP_SIZE)
+### The following is not supported. Awaiting RFE 6924287
+### 6924287: Jck4Jdk: Allow to configure test group size for group mode via simple command line option
+###  JCK_RUNTIME_OPTIONS += \
+###    -jtoptions:-Ejck.env.runtime.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE)
+endif
+
+# Assertions: some tests show failures when assertions are enabled.
+# Since javac is typically loaded via the bootclassloader (either via TESTJAVA
+# or TESTBOOTCLASSPATH), you may need -esa to enable assertions in javac.
+JTREG_OPTIONS += $(ASSERTION_OPTIONS)
+JCK_OPTIONS += $(ASSERTION_OPTIONS:%=-vmoptions:%)
+
+# Include shared options
+JCK_COMPILER_OPTIONS += $(JCK_OPTIONS)
+JCK_RUNTIME_OPTIONS += $(JCK_OPTIONS)
+
+# Exit codes:
+# jtreg, jck:   0: OK, 1: tests failed, 2: tests error; 3+: SERIOUS
+FATAL_JTREG_EXIT = 3
+FATAL_JCK_EXIT = 3
+# jtdiff: 0: OK, 1: differences found; 2+: SERIOUS
+FATAL_JTDIFF_EXIT = 2
+#
+# Exit -- used for final "normal" exit from "make". Redefine to "true" to avoid
+# having make exit with non-zero return code.
+EXIT = exit
+# Function to exit shell if exit code of preceding command is greater than or equal 
+# to a given level. Redefine function or preceding FATAL_*_EXIT codes as needed.
+EXIT_IF_FATAL = status=$$?; if [ $$status -ge $(1) ]; then exit $$status ; fi
 
 # The test directories to run
 DEFAULT_TESTDIRS = .
 TESTDIRS = $(DEFAULT_TESTDIRS)
 
 # Root of all test results
-TEST_OUTPUT_DIR = $(TEST_ROOT)/o_$(PLATFORM)-$(ARCH)
+TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools
+ABS_TEST_OUTPUT_DIR := \
+	$(shell mkdir -p $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools; \
+		cd  $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools; \
+		pwd )
+# Subdirectories for different test runs
+JTREG_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jtreg
+JCK_COMPILER_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-compiler
+JCK_RUNTIME_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-runtime-Xcompile
 
-# Default make rule
-all apt javac javadoc javah javap: clean check jtreg-tests $(JPRT_ARCHIVE_BUNDLE)
+# Default make rule -- warning, may take a while
+all: $(JPRT_CLEAN) jtreg-tests jck-compiler-tests jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) all-summary
+	@echo "Testing completed successfully"
+
+jtreg apt javac javadoc javah javap: $(JPRT_CLEAN) jtreg-tests $(JPRT_ARCHIVE_BUNDLE) jtreg-summary
+	@echo "Testing completed successfully"
+
+jck-compiler: $(JPRT_CLEAN) jck-compiler-tests $(JPRT_ARCHIVE_BUNDLE) jck-compiler-summary
+	@echo "Testing completed successfully"
+
+jck-runtime: $(JPRT_CLEAN) jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) jck-runtime-summary
 	@echo "Testing completed successfully"
 
 # for use with JPRT -testrule
-all:		TESTDIRS = .
-apt:		TESTDIRS = tools/apt
-javac: 		TESTDIRS = tools/javac
-javadoc:	TESTDIRS = tools/javadoc com/sun/javadoc
-javah:		TESTDIRS = tools/javah
-javap:		TESTDIRS = tools/javap
+all:		JTREG_TESTDIRS = .
+jtreg:		JTREG_TESTDIRS = .
+apt:		JTREG_TESTDIRS = tools/apt
+javac: 		JTREG_TESTDIRS = tools/javac
+javadoc:	JTREG_TESTDIRS = tools/javadoc com/sun/javadoc
+javah:		JTREG_TESTDIRS = tools/javah
+javap:		JTREG_TESTDIRS = tools/javap
+
+# Run jtreg tests
+#
+# JTREG_HOME
+#	Installed location of jtreg
+# JT_JAVA
+#	Version of java used to run jtreg.  Should normally be the same as TESTJAVA
+# TESTJAVA
+# 	Version of java to be tested.  
+# JTREG_OPTIONS
+#	Additional options for jtreg
+# JTREG_TESTDIRS
+#	Directories of tests to be run
+# JTREG_OUTPUT_DIR
+#	Where to write the results
+# JTREG_REFERENCE
+#	(Optional) reference results (e.g. work, report or summary.txt)
+#
+jtreg-tests: check-jtreg FRC
+	@rm -f -r $(JTREG_OUTPUT_DIR)/JTwork $(JTREG_OUTPUT_DIR)/JTreport \
+	    $(JTREG_OUTPUT_DIR)/diff.html $(JTREG_OUTPUT_DIR)/status.txt
+	@mkdir -p $(JTREG_OUTPUT_DIR)
+	JT_JAVA=$(JT_JAVA) $(JTREG) \
+	  -J-Xmx512m \
+	  -a -samevm -ignore:quiet -v:fail,error,nopass \
+          -r:$(JTREG_OUTPUT_DIR)/JTreport \
+          -w:$(JTREG_OUTPUT_DIR)/JTwork \
+          -jdk:$(TESTJAVA) \
+          $(JAVA_ARGS:%=-vmoption:%) \
+	  $(JTREG_OPTIONS) \
+          $(JTREG_TESTDIRS) \
+	|| ( $(call EXIT_IF_FATAL,$(FATAL_JTREG_EXIT)) ; \
+	    echo $$status > $(JTREG_OUTPUT_DIR)/status.txt \
+	)
+ifdef JTREG_REFERENCE
+	JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JTREG_OUTPUT_DIR)/diff.html \
+	    $(JTREG_REFERENCE) $(JTREG_OUTPUT_DIR)/JTreport \
+	|| ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) )
+endif
+
+jtreg-summary: FRC
+	if [ -r $(JTREG_OUTPUT_DIR)/status.txt ]; then \
+	    echo ; echo "Summary of jtreg test failures" ; \
+	    cat $(JTREG_OUTPUT_DIR)/JTreport/text/summary.txt | \
+		grep -v 'Not run' | grep -v 'Passed' ; \
+	    echo ; \
+	    $(EXIT) `cat $(JTREG_OUTPUT_DIR)/status.txt` ; \
+	fi
 
 # Check to make sure these directories exist
-check: $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
+check-jtreg: $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
+
+
+# Run JCK-compiler tests
+#
+# JCK_HOME
+#	Installed location of JCK: should include JCK-compiler, and JCK-extras
+# JT_JAVA
+#	Version of java used to run JCK.  Should normally be the same as TESTJAVA
+# TESTJAVA
+# 	Version of java to be tested.  
+# JCK_COMPILER_OPTIONS
+#	Additional options for JCK-compiler
+# JCK_COMPILER_TESTDIRS
+#	Directories of tests to be run
+# JCK_COMPILER_OUTPUT_DIR
+#	Where to write the results
+# JCK_COMPILER_REFERENCE
+#	(Optional) reference results (e.g. work, report or summary.txt)
+#
+jck-compiler-tests: check-jck FRC
+	@rm -f -r $(JCK_COMPILER_OUTPUT_DIR)/work $(JCK_COMPILER_OUTPUT_DIR)/report \
+	    $(JCK_COMPILER_OUTPUT_DIR)/diff.html $(JCK_COMPILER_OUTPUT_DIR)/status.txt
+	@mkdir -p $(JCK_COMPILER_OUTPUT_DIR)
+	$(JT_JAVA)/bin/java -XX:MaxPermSize=256m -Xmx512m \
+	    -jar $(JCK_HOME)/JCK-compiler-7/lib/jtjck.jar \
+	    -v:non-pass \
+            -r:$(JCK_COMPILER_OUTPUT_DIR)/report \
+            -w:$(JCK_COMPILER_OUTPUT_DIR)/work \
+            -jdk:$(TESTJAVA) \
+	    $(JCK_COMPILER_OPTIONS) \
+            $(JCK_COMPILER_TESTDIRS) \
+	|| ( $(call EXIT_IF_FATAL,$(FATAL_JCK_EXIT)) ; \
+	    echo $$status > $(JCK_COMPILER_OUTPUT_DIR)/status.txt \
+	)
+ifdef JCK_COMPILER_REFERENCE
+	JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JCK_COMPILER_OUTPUT_DIR)/diff.html \
+	    $(JCK_COMPILER_REFERENCE) $(JCK_COMPILER_OUTPUT_DIR)/report \
+	|| ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) )
+endif
+
+jck-compiler-summary: FRC
+	if [ -r $(JCK_COMPILER_OUTPUT_DIR)/status.txt ]; then \
+	    echo ; echo "Summary of JCK-compiler test failures" ; \
+	    cat $(JCK_COMPILER_OUTPUT_DIR)/report/text/summary.txt | \
+		grep -v 'Not run' | grep -v 'Passed' ; \
+	    echo ; \
+	    $(EXIT) `cat $(JCK_COMPILER_OUTPUT_DIR)/status.txt` ; \
+	fi
 
-# Run the tests
-jtreg-tests: FRC
-	@echo "Using export JAVA_TOOL_OPTIONS=$(JAVA_TOOL_OPTIONS)"
-	@rm -f -r $(TEST_OUTPUT_DIR)/JTwork $(TEST_OUTPUT_DIR)/JTreport
-	@mkdir -p $(TEST_OUTPUT_DIR)
-	JT_JAVA=$(JT_JAVA) $(JTREG) \
-	  -a -samevm -k:\!ignore -v:fail,error,nopass \
-          -r:$(TEST_OUTPUT_DIR)/JTreport \
-          -w:$(TEST_OUTPUT_DIR)/JTwork \
-          -jdk:$(TESTJAVA) \
-	  -Xbootclasspath/p:$(TESTBOOTCLASSPATH) \
-          $(JAVA_ARGS:%=-vmoption:%) \
-          $(TESTDIRS) \
-	|| ( status=$$? ; \
-		echo ; echo "Summary of test failures" ; \
-		cat $(TEST_OUTPUT_DIR)/JTreport/text/summary.txt | \
-			grep -v 'Not run' | grep -v 'Passed' ; \
-		echo ; \
-		exit $$status )
+# Run JCK-runtime tests in -Xcompile mode
+# This is a special mode to test javac by compiling the tests in the JCK-runtime test suite
+# Normal JCK-runtime invocation belongs in the jdk/ repository.
+#
+# JCK_HOME
+#	Installed location of JCK: should include JCK-compiler, JCK-runtime and JCK-extras
+# JT_JAVA
+#	Version of java used to run JCK.  Should normally be the same as TESTJAVA
+# TESTJAVA
+# 	Version of java to be tested.  
+# JCK_RUNTIME_OPTIONS
+#	Additional options for JCK-runtime
+# JCK_RUNTIME_TESTDIRS
+#	Directories of tests to be run
+# JCK_RUNTIME_OUTPUT_DIR
+#	Where to write the results
+# JCK_RUNTIME_REFERENCE
+#	(Optional) reference results (e.g. work, report or summary.txt)
+#
+jck-runtime-tests: check-jck FRC
+	@rm -f -r $(JCK_RUNTIME_OUTPUT_DIR)/work $(JCK_RUNTIME_OUTPUT_DIR)/report \
+	    $(JCK_RUNTIME_OUTPUT_DIR)/diff.html $(JCK_RUNTIME_OUTPUT_DIR)/status.txt
+	@mkdir -p $(JCK_RUNTIME_OUTPUT_DIR)
+	$(JT_JAVA)/bin/java -XX:MaxPermSize=256m -Xmx512m \
+	    -jar $(JCK_HOME)/JCK-runtime-7/lib/jtjck.jar \
+	    -v:non-pass \
+            -r:$(JCK_RUNTIME_OUTPUT_DIR)/report \
+            -w:$(JCK_RUNTIME_OUTPUT_DIR)/work \
+            -jdk:$(TESTJAVA) \
+	    -Xcompile \
+	    $(JCK_RUNTIME_OPTIONS) \
+            $(JCK_RUNTIME_TESTDIRS) \
+	|| ( $(call EXIT_IF_FATAL,$(FATAL_JCK_EXIT)) ; \
+	    echo $$status > $(JCK_RUNTIME_OUTPUT_DIR)/status.txt \
+	)
+ifdef JCK_RUNTIME_REFERENCE
+	JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JCK_RUNTIME_OUTPUT_DIR)/diff.html \
+	    $(JCK_RUNTIME_REFERENCE) $(JCK_RUNTIME_OUTPUT_DIR)/report \
+	|| ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) )
+endif
+
+jck-runtime-summary: FRC
+	if [ -r $(JCK_RUNTIME_OUTPUT_DIR)/status.txt ]; then \
+	    echo ; echo "Summary of JCK-runtime test failures" ; \
+	    cat $(JCK_RUNTIME_OUTPUT_DIR)/report/text/summary.txt | \
+		grep -v 'Not run' | grep -v 'Passed' ; \
+	    echo ; \
+	    $(EXIT) `cat $(JCK_RUNTIME_OUTPUT_DIR)/status.txt` ; \
+	fi
+
+# Check to make sure these directories exist
+check-jck: $(JT_HOME) $(JCK_HOME) $(PRODUCT_HOME)
+
+all-summary: FRC
+	if [ -n "`find $(TEST_OUTPUT_DIR) -name status.txt`" ]; then
+	    echo ; echo "Summary of test failures" ; \
+	    cat `find $(TEST_OUTPUT_DIR) -name summary.txt` | \
+		grep -v 'Not run' | grep -v 'Passed' ; \
+	    echo ; \
+	    $(EXIT) 1
+	fi
 
 # Bundle up the results
 $(JPRT_ARCHIVE_BUNDLE): FRC
@@ -124,12 +380,17 @@
 
 # Cleanup
 clean:
-	rm -f -r $(TEST_OUTPUT_DIR)
 	rm -f $(JPRT_ARCHIVE_BUNDLE)
 
 # Used to force a target rules to run
 FRC:
 
 # Phony targets (e.g. these are not filenames)
-.PHONY: all tests clean check
+.PHONY: all clean \
+	jtreg javac javadoc javah javap jtreg-tests jtreg-summary check-jtreg \
+	jck-compiler jck-compiler-tests jck-compiler-summary \
+	jck-runtime jck-runtime-tests jck-runtime-summary check-jck
 
+# No use of suffix rules
+.SUFFIXES:
+
--- a/langtools/test/tools/javac/OverrideChecks/6738538/T6738538a.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/OverrideChecks/6738538/T6738538a.java	Tue Apr 20 01:24:48 2010 -0700
@@ -41,4 +41,4 @@
         public T m();
     }
     class Crash<T extends C<?> & I> {}
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/OverrideChecks/6738538/T6738538b.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/OverrideChecks/6738538/T6738538b.java	Tue Apr 20 01:24:48 2010 -0700
@@ -44,4 +44,4 @@
     }
 
     class C2<T extends C1<?> & I2> {}
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/api/6731573/Erroneous.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/api/6731573/Erroneous.java	Tue Apr 20 01:24:48 2010 -0700
@@ -1,4 +1,4 @@
 class A {
     boolean b;
     boolean b;
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/api/6731573/T6731573.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/api/6731573/T6731573.java	Tue Apr 20 01:24:48 2010 -0700
@@ -106,4 +106,4 @@
     public static void main(String... args) throws Exception {
         new T6731573().test();
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/cast/6548436/T6548436d.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/cast/6548436/T6548436d.java	Tue Apr 20 01:24:48 2010 -0700
@@ -37,4 +37,4 @@
     static void test(Base<? extends Double> je) {
         Object o = (Base<Integer>)je;
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/cast/6558559/T6558559a.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/cast/6558559/T6558559a.java	Tue Apr 20 01:24:48 2010 -0700
@@ -37,4 +37,4 @@
 
     A<?> x = null;
     B<?> y = (B<?>)x;
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/cast/6558559/T6558559b.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/cast/6558559/T6558559b.java	Tue Apr 20 01:24:48 2010 -0700
@@ -40,4 +40,4 @@
         Object o = unboundList;
         Throwable t3 = (Throwable) o;
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/cast/6586091/T6586091.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/cast/6586091/T6586091.java	Tue Apr 20 01:24:48 2010 -0700
@@ -35,4 +35,4 @@
 
     A<A<?>> t = null;
     B c = (B)t;
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/enum/T6724345.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/enum/T6724345.java	Tue Apr 20 01:24:48 2010 -0700
@@ -48,4 +48,4 @@
     enum E implements I {
         V {public void i() {}};
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/generics/T6557954.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/generics/T6557954.java	Tue Apr 20 01:24:48 2010 -0700
@@ -33,4 +33,4 @@
 class T6557954<T> {
     class Foo<U extends T> {}
     T6557954<Number>.Foo<Integer> f;
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/generics/T6751514.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/generics/T6751514.java	Tue Apr 20 01:24:48 2010 -0700
@@ -79,4 +79,4 @@
                                      " - found: " + found + ")");
         }
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/generics/T6869075.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/generics/T6869075.java	Tue Apr 20 01:24:48 2010 -0700
@@ -64,4 +64,4 @@
                                      " - found: " + found + ")");
         }
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/generics/inference/6569789/T6569789.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/generics/inference/6569789/T6569789.java	Tue Apr 20 01:24:48 2010 -0700
@@ -41,4 +41,4 @@
     }
 
     static <W extends C & I & I1 & I2, T extends W> void testMethod(T t) {}
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java	Tue Apr 20 01:24:48 2010 -0700
@@ -42,4 +42,4 @@
         Integer test = getGenericValue(new IntegerInterface());
         testSet(getGenericValue(new IntegerInterface()));
     }
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/generics/wildcards/T6732484.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/generics/wildcards/T6732484.java	Tue Apr 20 01:24:48 2010 -0700
@@ -34,4 +34,4 @@
     class B extends A<B> {}
 
     A<? super B> f;
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javac/processing/model/util/elements/Foo.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/processing/model/util/elements/Foo.java	Tue Apr 20 01:24:48 2010 -0700
@@ -26,4 +26,4 @@
  * Dummy type to compile.
  */
 public class Foo {
-}
\ No newline at end of file
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/model/util/elements/VacuousEnum.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6937417
+ * @summary Test -Xprint on enum type with no constants
+ * @author  Joseph D. Darcy
+ * @compile -Xprint VacuousEnum.java
+ */
+public enum VacuousEnum {
+    // But alas, no enum constants!
+}
--- a/langtools/test/tools/javac/varargs/T6746184.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javac/varargs/T6746184.java	Tue Apr 20 01:24:48 2010 -0700
@@ -36,4 +36,4 @@
 class A {
     public static void m(final Object... varargs) {}
     private static void m(final Object singleArg) {}
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javah/T6893943.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javah/T6893943.java	Tue Apr 20 01:24:48 2010 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 6893943
+ * @bug 6893943 6937318
  * @summary exit code from javah with no args is 0
  */
 
@@ -31,22 +31,32 @@
 import java.util.*;
 
 public class T6893943 {
+    static final String[] NO_ARGS = { };
+    static final String[] HELP = { "-help" };
+    static final String NEWLINE = System.getProperty("line.separator");
+
     public static void main(String... args) throws Exception {
         new T6893943().run();
     }
 
     void run() throws Exception {
-        testSimpleAPI();
-        testCommand();
+        testSimpleAPI(NO_ARGS, 1);
+        testSimpleAPI(HELP, 0);
+        testCommand(NO_ARGS, 1);
+        testCommand(HELP, 0);
     }
 
-    void testSimpleAPI() throws Exception {
-        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.err));
-        int rc = com.sun.tools.javah.Main.run(new String[] { }, pw);
-        expect("testSimpleAPI", rc, 1);
+    void testSimpleAPI(String[] args, int expect_rc) throws Exception {
+        System.err.println("Test simple api: " + Arrays.asList(args));
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        int rc = com.sun.tools.javah.Main.run(args, pw);
+        pw.close();
+        expect("testSimpleAPI", sw.toString(), rc, expect_rc);
     }
 
-    void testCommand() throws Exception {
+    void testCommand(String[] args, int expect_rc) throws Exception {
+        System.err.println("Test command: " + Arrays.asList(args));
         File javaHome = new File(System.getProperty("java.home"));
         if (javaHome.getName().equals("jre"))
             javaHome = javaHome.getParentFile();
@@ -54,22 +64,32 @@
         List<String> command = new ArrayList<String>();
         command.add(new File(new File(javaHome, "bin"), "javah").getPath());
         command.add("-J-Xbootclasspath:" + System.getProperty("sun.boot.class.path"));
+        command.addAll(Arrays.asList(args));
         //System.err.println("command: " + command);
 
         ProcessBuilder pb = new ProcessBuilder(command);
         pb.redirectErrorStream(true);
         Process p = pb.start();
         p.getOutputStream().close();
+        StringWriter sw = new StringWriter();
         String line;
         BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
         while ((line = in.readLine()) != null)
-            System.err.println("javah: " + line);
+            sw.write(line + NEWLINE);
         int rc = p.waitFor();
-        expect("testCommand", rc, 1);
+        expect("testCommand", sw.toString(), rc, expect_rc);
     }
 
-    void expect(String name, int actual, int expect) throws Exception {
-        if (actual != expect)
-            throw new Exception(name + ": unexpected exit: " + actual + ", expected: " + expect);
+    void expect(String name, String out, int actual_rc, int expect_rc) throws Exception {
+        if (out.isEmpty())
+            throw new Exception("No output from javah");
+
+        if (!out.startsWith("Usage:")) {
+            System.err.println(out);
+            throw new Exception("Unexpected output from javah");
+        }
+
+        if (actual_rc != expect_rc)
+            throw new Exception(name + ": unexpected exit: " + actual_rc + ", expected: " + expect_rc);
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/6937244/T6937244.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6937244
+ * @summary fields display with JVMS names, not Java names
+ */
+
+import java.io.*;
+
+public class T6937244 {
+    public static void main(String[] args) throws Exception {
+        new T6937244().run();
+    }
+
+    void run() throws Exception {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        String[] args = { "java.lang.String" };
+        int rc = com.sun.tools.javap.Main.run(args, pw);
+        pw.close();
+        String out = sw.toString();
+        System.err.println(out);
+        if (rc != 0)
+            throw new Exception("unexpected exit from javap: " + rc);
+        for (String line: out.split("[\r\n]+")) {
+            if (line.contains("CASE_INSENSITIVE_ORDER")) {
+                if (line.matches("\\s*\\Qpublic static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;\\E\\s*"))
+                    return;
+                throw new Exception("declaration not shown as expected");
+            }
+        }
+        throw new Exception("declaration of CASE_INSENSITIVE_ORDER not found");
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/6937244/T6937244A.java	Tue Apr 20 01:24:48 2010 -0700
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6937244
+ * @summary fields display with JVMS names, not Java names
+ */
+
+import java.io.*;
+import java.util.*;
+
+public class T6937244A {
+    public static void main(String[] args) throws Exception {
+        new T6937244A().run();
+    }
+
+    void run() throws Exception {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        String[] args = { "Test" };
+        int rc = com.sun.tools.javap.Main.run(args, pw);
+        pw.close();
+        String out = sw.toString();
+        System.err.println(out);
+        if (rc != 0)
+            throw new Exception("unexpected exit from javap: " + rc);
+
+        int count = 0;
+
+        for (String line: out.split("[\r\n]+")) {
+            if (line.contains("extends")) {
+                verify(line, "extends java.lang.Object implements java.util.List<java.lang.String>");
+                count++;
+            }
+
+            if (line.contains("field")) {
+                verify(line, "java.util.List<java.lang.String> field");
+                count++;
+            }
+
+            if (line.contains("method")) {
+                verify(line, "java.util.List<java.lang.String> method(java.util.List<java.lang.String>) throws java.lang.Exception");
+                count++;
+            }
+        }
+
+        // final backstop check
+        if (out.contains("/"))
+            throw new Exception("unexpected \"/\" in output");
+
+        if (count != 3)
+            throw new Exception("wrong number of matches found: " + count);
+    }
+
+    void verify(String line, String expect) throws Exception {
+        if (!line.contains(expect)) {
+            System.err.println("line:   " + line);
+            System.err.println("expect: " + expect);
+            throw new Exception("expected string not found in line");
+        }
+    }
+}
+
+
+abstract class Test implements List<String> {
+    public List<String> field;
+    public List<String> method(List<String> arg) throws Exception { return null; }
+}
+
--- a/langtools/test/tools/javap/T6715251.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javap/T6715251.java	Tue Apr 20 01:24:48 2010 -0700
@@ -71,4 +71,4 @@
 
     String log;
     int errors;
-}
\ No newline at end of file
+}
--- a/langtools/test/tools/javap/T6715753.java	Sun Apr 11 23:21:23 2010 -0700
+++ b/langtools/test/tools/javap/T6715753.java	Tue Apr 20 01:24:48 2010 -0700
@@ -47,4 +47,4 @@
             throw new Exception("test failed");
         }
     }
-}
\ No newline at end of file
+}
--- a/make/jprt.properties	Sun Apr 11 23:21:23 2010 -0700
+++ b/make/jprt.properties	Tue Apr 20 01:24:48 2010 -0700
@@ -62,6 +62,7 @@
 
 # Test targets in test/Makefile
 jprt.make.rule.test.targets=   \
+  *-product-*-langtools_jtreg, \
   *-product-*-jdk_beans1,      \
   *-product-*-jdk_beans2,      \
   *-product-*-jdk_beans3,      \
@@ -84,7 +85,6 @@
   *-product-*-jdk_util
 
 # Not Ready Yet:
-#   *-product-*-langtools_all
 #   *-product-*-jdk_awt
 #   *-product-*-jdk_rmi
 #   *-product-*-jdk_swing
--- a/test/Makefile	Sun Apr 11 23:21:23 2010 -0700
+++ b/test/Makefile	Tue Apr 20 01:24:48 2010 -0700
@@ -42,6 +42,7 @@
     $(MAKE) -C $1/test $2 ; \
   else \
     echo "ERROR: File does not exist: $1/test/Makefile"; \
+    exit 1; \
   fi; \
 else \
   echo "WARNING: No testing done, directory does not exist: $1"; \
@@ -49,7 +50,7 @@
 endef
 
 # Test target list for langtools repository
-LANGTOOLS_TEST_LIST = langtools_all
+LANGTOOLS_TEST_LIST = langtools_jtreg
 
 # Test target list for jdk repository
 JDK_TEST_LIST = \
@@ -74,7 +75,7 @@
 
 # Test targets
 $(LANGTOOLS_TEST_LIST):
-	@$(call SUBDIR_TEST, $(LANGTOOLS_DIR), all)
+	@$(call SUBDIR_TEST, $(LANGTOOLS_DIR), $(subst langtools_,,$@))
 $(JDK_TEST_LIST):
 	@$(call SUBDIR_TEST, $(JDK_DIR), $@)